Api-Roll 56: 2017-10-23 (#22)

diff --git a/config.yaml b/config.yaml
index 17d50b3..9d01b12 100644
--- a/config.yaml
+++ b/config.yaml
@@ -1,6 +1,6 @@
 packages:
 - googleapis:
-    version: 0.45.0
+    version: 0.46.0
     author: Dart Team <misc@dartlang.org>
     homepage: http://www.dartlang.org/googleapis/
     readme: resources/README.md
@@ -128,7 +128,7 @@
     - youtube:v3  # https://developers.google.com/youtube/
 
 - googleapis_beta:
-    version: 0.40.0
+    version: 0.40.1
     author: Dart Team <misc@dartlang.org>
     homepage: http://www.dartlang.org/googleapis/
     readme: resources/README.md
diff --git a/discovery/googleapis/acceleratedmobilepageurl__v1.json b/discovery/googleapis/acceleratedmobilepageurl__v1.json
index f122d17..1b4c378 100644
--- a/discovery/googleapis/acceleratedmobilepageurl__v1.json
+++ b/discovery/googleapis/acceleratedmobilepageurl__v1.json
@@ -15,22 +15,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "alt": {
-            "default": "json",
-            "description": "Data format for response.",
-            "enum": [
-                "json",
-                "media",
-                "proto"
-            ],
-            "enumDescriptions": [
-                "Responses with Content-Type of application/json",
-                "Media download with context-dependent Content-Type",
-                "Responses with Content-Type of application/x-protobuf"
-            ],
-            "location": "query",
-            "type": "string"
-        },
         "key": {
             "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
@@ -73,13 +57,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
@@ -100,6 +84,22 @@
             ],
             "location": "query",
             "type": "string"
+        },
+        "alt": {
+            "default": "json",
+            "description": "Data format for response.",
+            "enum": [
+                "json",
+                "media",
+                "proto"
+            ],
+            "enumDescriptions": [
+                "Responses with Content-Type of application/json",
+                "Media download with context-dependent Content-Type",
+                "Responses with Content-Type of application/x-protobuf"
+            ],
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
@@ -170,6 +170,10 @@
             "description": "AMP URL Error resource for a requested URL that couldn't be found.",
             "id": "AmpUrlError",
             "properties": {
+                "errorMessage": {
+                    "description": "An optional descriptive error message.",
+                    "type": "string"
+                },
                 "errorCode": {
                     "description": "The error code of an API call.",
                     "enum": [
@@ -193,10 +197,6 @@
                 "originalUrl": {
                     "description": "The original non-AMP URL.",
                     "type": "string"
-                },
-                "errorMessage": {
-                    "description": "An optional descriptive error message.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -205,13 +205,6 @@
             "description": "AMP URL request for a batch of URLs.",
             "id": "BatchGetAmpUrlsRequest",
             "properties": {
-                "urls": {
-                    "description": "List of URLs to look up for the paired AMP URLs.\nThe URLs are case-sensitive. Up to 50 URLs per lookup\n(see [Usage Limits](/amp/cache/reference/limits)).",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
                 "lookupStrategy": {
                     "description": "The lookup_strategy being requested.",
                     "enum": [
@@ -223,6 +216,13 @@
                         "IN_INDEX_DOC strategy skips fetching live documents of URL(s) not found\nin index. For applications which need low latency use of IN_INDEX_DOC\nstrategy is recommended."
                     ],
                     "type": "string"
+                },
+                "urls": {
+                    "description": "List of URLs to look up for the paired AMP URLs.\nThe URLs are case-sensitive. Up to 50 URLs per lookup\n(see [Usage Limits](/amp/cache/reference/limits)).",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/adexperiencereport__v1.json b/discovery/googleapis/adexperiencereport__v1.json
index ff97051..4758e04 100644
--- a/discovery/googleapis/adexperiencereport__v1.json
+++ b/discovery/googleapis/adexperiencereport__v1.json
@@ -46,6 +46,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -59,11 +64,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -101,13 +101,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
+        "bearer_token": {
+            "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         }
@@ -168,28 +168,6 @@
             "description": "Summary of the ad experience rating of a site for a specific platform.",
             "id": "PlatformSummary",
             "properties": {
-                "region": {
-                    "description": "The assigned regions for the site and platform.",
-                    "enumDescriptions": [
-                        "Ad standard not yet defined for your region.",
-                        "Region A.",
-                        "Region B."
-                    ],
-                    "items": {
-                        "enum": [
-                            "REGION_UNKNOWN",
-                            "REGION_A",
-                            "REGION_B"
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "enforcementTime": {
-                    "description": "The date on which ad filtering begins.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
                 "filterStatus": {
                     "description": "The ad filtering status of the site.",
                     "enum": [
@@ -236,6 +214,28 @@
                         "Failing."
                     ],
                     "type": "string"
+                },
+                "enforcementTime": {
+                    "description": "The date on which ad filtering begins.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "region": {
+                    "description": "The assigned regions for the site and platform.",
+                    "enumDescriptions": [
+                        "Ad standard not yet defined for your region.",
+                        "Region A.",
+                        "Region B."
+                    ],
+                    "items": {
+                        "enum": [
+                            "REGION_UNKNOWN",
+                            "REGION_A",
+                            "REGION_B"
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/admin__directory_v1.json b/discovery/googleapis/admin__directory_v1.json
index 36ed9d6..5beaec6 100644
--- a/discovery/googleapis/admin__directory_v1.json
+++ b/discovery/googleapis/admin__directory_v1.json
@@ -93,7 +93,7 @@
     "description": "The Admin SDK Directory API lets you view and manage enterprise resources such as users and groups, administrative notifications, security features, and more.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/admin-sdk/directory/",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/JB19efQGH5f-JRT49yZz7BTyNQU\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/QstgUNJM9z5P2QKTjvsIeuLGaOE\"",
     "icons": {
         "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
         "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -1900,6 +1900,28 @@
                 }
             }
         },
+        "resolvedAppAccessSettings": {
+            "methods": {
+                "GetSettings": {
+                    "description": "Retrieves resolved app access settings of the logged in user.",
+                    "httpMethod": "GET",
+                    "id": "directory.resolvedAppAccessSettings.GetSettings",
+                    "path": "resolvedappaccesssettings",
+                    "response": {
+                        "$ref": "AppAccessCollections"
+                    }
+                },
+                "ListTrustedApps": {
+                    "description": "Retrieves the list of apps trusted by the admin of the logged in user.",
+                    "httpMethod": "GET",
+                    "id": "directory.resolvedAppAccessSettings.ListTrustedApps",
+                    "path": "trustedapps",
+                    "response": {
+                        "$ref": "TrustedApps"
+                    }
+                }
+            }
+        },
         "resources": {
             "resources": {
                 "calendars": {
@@ -2026,7 +2048,7 @@
                             ]
                         },
                         "patch": {
-                            "description": "Updates a calendar resource. This method supports patch semantics.",
+                            "description": "Updates a calendar resource.\n\nThis method supports patch semantics, meaning you only need to include the fields you wish to update. Fields that are not present in the request will be preserved. This method supports patch semantics.",
                             "httpMethod": "PATCH",
                             "id": "directory.resources.calendars.patch",
                             "parameterOrder": [
@@ -2059,7 +2081,7 @@
                             ]
                         },
                         "update": {
-                            "description": "Updates a calendar resource.",
+                            "description": "Updates a calendar resource.\n\nThis method supports patch semantics, meaning you only need to include the fields you wish to update. Fields that are not present in the request will be preserved.",
                             "httpMethod": "PUT",
                             "id": "directory.resources.calendars.update",
                             "parameterOrder": [
@@ -3458,7 +3480,7 @@
             }
         }
     },
-    "revision": "20170830",
+    "revision": "20171006",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Alias": {
@@ -3512,6 +3534,50 @@
             },
             "type": "object"
         },
+        "AppAccessCollections": {
+            "description": "JSON template for App Access Collections Resource object in Directory API.",
+            "id": "AppAccessCollections",
+            "properties": {
+                "blockedApiAccessBuckets": {
+                    "description": "List of blocked api access buckets.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "enforceSettingsForAndroidDrive": {
+                    "description": "Boolean to indicate whether to enforce app access settings on Android Drive or not.",
+                    "type": "boolean"
+                },
+                "errorMessage": {
+                    "description": "Error message provided by the Admin that will be shown to the user when an app is blocked.",
+                    "type": "string"
+                },
+                "etag": {
+                    "description": "ETag of the resource.",
+                    "type": "string"
+                },
+                "kind": {
+                    "default": "admin#directory#appaccesscollection",
+                    "description": "Identifies the resource as an app access collection. Value: admin#directory#appaccesscollection",
+                    "type": "string"
+                },
+                "resourceId": {
+                    "description": "Unique ID of app access collection. (Readonly)",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "resourceName": {
+                    "description": "Resource name given by the customer while creating/updating. Should be unique under given customer.",
+                    "type": "string"
+                },
+                "trustDomainOwnedApps": {
+                    "description": "Boolean that indicates whether to trust domain owned apps.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "Asp": {
             "description": "The template that returns individual ASP (Access Code) data.",
             "id": "Asp",
@@ -5083,6 +5149,59 @@
             },
             "type": "object"
         },
+        "TrustedAppId": {
+            "description": "JSON template for Trusted App Ids Resource object in Directory API.",
+            "id": "TrustedAppId",
+            "properties": {
+                "androidPackageName": {
+                    "description": "Android package name.",
+                    "type": "string"
+                },
+                "certificateHashSHA1": {
+                    "description": "SHA1 signature of the app certificate.",
+                    "type": "string"
+                },
+                "certificateHashSHA256": {
+                    "description": "SHA256 signature of the app certificate.",
+                    "type": "string"
+                },
+                "etag": {
+                    "type": "string"
+                },
+                "kind": {
+                    "default": "admin#directory#trustedappid",
+                    "description": "Identifies the resource as a trusted AppId.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TrustedApps": {
+            "description": "JSON template for Trusted Apps response object of a user in Directory API.",
+            "id": "TrustedApps",
+            "properties": {
+                "etag": {
+                    "description": "ETag of the resource.",
+                    "type": "string"
+                },
+                "kind": {
+                    "default": "admin#directory#trustedapplist",
+                    "description": "Identifies the resource as trusted apps response.",
+                    "type": "string"
+                },
+                "nextPageToken": {
+                    "type": "string"
+                },
+                "trustedApps": {
+                    "description": "Trusted Apps list.",
+                    "items": {
+                        "$ref": "TrustedAppId"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "User": {
             "description": "JSON template for User object in Directory API.",
             "id": "User",
diff --git a/discovery/googleapis/adsense__v1.4.json b/discovery/googleapis/adsense__v1.4.json
index a3a7f07..50b2169 100644
--- a/discovery/googleapis/adsense__v1.4.json
+++ b/discovery/googleapis/adsense__v1.4.json
@@ -18,7 +18,7 @@
     "description": "Accesses AdSense publishers' inventory and generates performance reports.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/adsense/management/",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/sjHUki90r5L0rR18sbjha7Pmp_c\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/jT1P5O-dYzg0R28dIw4UyYwuGls\"",
     "icons": {
         "x16": "https://www.google.com/images/icons/product/adsense-16.png",
         "x32": "https://www.google.com/images/icons/product/adsense-32.png"
@@ -1624,7 +1624,7 @@
             }
         }
     },
-    "revision": "20171003",
+    "revision": "20171018",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Account": {
diff --git a/discovery/googleapis/adsensehost__v4.1.json b/discovery/googleapis/adsensehost__v4.1.json
index cba88d2..ffca678 100644
--- a/discovery/googleapis/adsensehost__v4.1.json
+++ b/discovery/googleapis/adsensehost__v4.1.json
@@ -15,7 +15,7 @@
     "description": "Generates performance reports, generates ad codes, and provides publisher management capabilities for AdSense Hosts.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/adsense/host/",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/b7r6lgZcAmTUV36qLJLunnVszs8\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/GTgwnXJa41iH_dVc-HVr3p5OlTU\"",
     "icons": {
         "x16": "https://www.google.com/images/icons/product/adsense-16.png",
         "x32": "https://www.google.com/images/icons/product/adsense-32.png"
@@ -1072,7 +1072,7 @@
             }
         }
     },
-    "revision": "20171003",
+    "revision": "20171018",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Account": {
diff --git a/discovery/googleapis/analyticsreporting__v4.json b/discovery/googleapis/analyticsreporting__v4.json
index e0781d7..34f1650 100644
--- a/discovery/googleapis/analyticsreporting__v4.json
+++ b/discovery/googleapis/analyticsreporting__v4.json
@@ -2,11 +2,11 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/analytics": {
-                    "description": "View and manage your Google Analytics data"
-                },
                 "https://www.googleapis.com/auth/analytics.readonly": {
                     "description": "View your Google Analytics data"
+                },
+                "https://www.googleapis.com/auth/analytics": {
+                    "description": "View and manage your Google Analytics data"
                 }
             }
         }
@@ -28,27 +28,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -70,11 +49,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -88,6 +62,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -104,13 +83,34 @@
             "location": "query",
             "type": "string"
         },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
         "key": {
             "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         }
@@ -143,582 +143,6 @@
     "revision": "20170925",
     "rootUrl": "https://analyticsreporting.googleapis.com/",
     "schemas": {
-        "SegmentDimensionFilter": {
-            "description": "Dimension filter specifies the filtering options on a dimension.",
-            "id": "SegmentDimensionFilter",
-            "properties": {
-                "minComparisonValue": {
-                    "description": "Minimum comparison values for `BETWEEN` match type.",
-                    "type": "string"
-                },
-                "maxComparisonValue": {
-                    "description": "Maximum comparison values for `BETWEEN` match type.",
-                    "type": "string"
-                },
-                "operator": {
-                    "description": "The operator to use to match the dimension with the expressions.",
-                    "enum": [
-                        "OPERATOR_UNSPECIFIED",
-                        "REGEXP",
-                        "BEGINS_WITH",
-                        "ENDS_WITH",
-                        "PARTIAL",
-                        "EXACT",
-                        "IN_LIST",
-                        "NUMERIC_LESS_THAN",
-                        "NUMERIC_GREATER_THAN",
-                        "NUMERIC_BETWEEN"
-                    ],
-                    "enumDescriptions": [
-                        "If the match type is unspecified, it is treated as a REGEXP.",
-                        "The match expression is treated as a regular expression. All other match\ntypes are not treated as regular expressions.",
-                        "Matches the values which begin with the match expression provided.",
-                        "Matches the values which end with the match expression provided.",
-                        "Substring match.",
-                        "The value should match the match expression entirely.",
-                        "This option is used to specify a dimension filter whose expression can\ntake any value from a selected list of values. This helps avoiding\nevaluating multiple exact match dimension filters which are OR'ed for\nevery single response row. For example:\n\n    expressions: [\"A\", \"B\", \"C\"]\n\nAny response row whose dimension has it is value as A, B or C, matches\nthis DimensionFilter.",
-                        "Integer comparison filters.\ncase sensitivity is ignored for these and the expression\nis assumed to be a string representing an integer.\nFailure conditions:\n\n- if expression is not a valid int64, the client should expect\n  an error.\n- input dimensions that are not valid int64 values will never match the\n  filter.\n\nChecks if the dimension is numerically less than the match expression.",
-                        "Checks if the dimension is numerically greater than the match\nexpression.",
-                        "Checks if the dimension is numerically between the minimum and maximum\nof the match expression, boundaries excluded."
-                    ],
-                    "type": "string"
-                },
-                "dimensionName": {
-                    "description": "Name of the dimension for which the filter is being applied.",
-                    "type": "string"
-                },
-                "expressions": {
-                    "description": "The list of expressions, only the first element is used for all operators",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "caseSensitive": {
-                    "description": "Should the match be case sensitive, ignored for `IN_LIST` operator.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "OrderBy": {
-            "description": "Specifies the sorting options.",
-            "id": "OrderBy",
-            "properties": {
-                "sortOrder": {
-                    "description": "The sorting order for the field.",
-                    "enum": [
-                        "SORT_ORDER_UNSPECIFIED",
-                        "ASCENDING",
-                        "DESCENDING"
-                    ],
-                    "enumDescriptions": [
-                        "If the sort order is unspecified, the default is ascending.",
-                        "Ascending sort. The field will be sorted in an ascending manner.",
-                        "Descending sort. The field will be sorted in a descending manner."
-                    ],
-                    "type": "string"
-                },
-                "orderType": {
-                    "description": "The order type. The default orderType is `VALUE`.",
-                    "enum": [
-                        "ORDER_TYPE_UNSPECIFIED",
-                        "VALUE",
-                        "DELTA",
-                        "SMART",
-                        "HISTOGRAM_BUCKET",
-                        "DIMENSION_AS_INTEGER"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified order type will be treated as sort based on value.",
-                        "The sort order is based on the value of the chosen column; looks only at\nthe first date range.",
-                        "The sort order is based on the difference of the values of the chosen\ncolumn between the first two date ranges.  Usable only if there are\nexactly two date ranges.",
-                        "The sort order is based on weighted value of the chosen column.  If\ncolumn has n/d format, then weighted value of this ratio will\nbe `(n + totals.n)/(d + totals.d)` Usable only for metrics that\nrepresent ratios.",
-                        "Histogram order type is applicable only to dimension columns with\nnon-empty histogram-buckets.",
-                        "If the dimensions are fixed length numbers, ordinary sort would just\nwork fine. `DIMENSION_AS_INTEGER` can be used if the dimensions are\nvariable length numbers."
-                    ],
-                    "type": "string"
-                },
-                "fieldName": {
-                    "description": "The field which to sort by. The default sort order is ascending. Example:\n`ga:browser`.\nNote, that you can only specify one field for sort here. For example,\n`ga:browser, ga:city` is not valid.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Segment": {
-            "description": "The segment definition, if the report needs to be segmented.\nA Segment is a subset of the Analytics data. For example, of the entire\nset of users, one Segment might be users from a particular country or city.",
-            "id": "Segment",
-            "properties": {
-                "dynamicSegment": {
-                    "$ref": "DynamicSegment",
-                    "description": "A dynamic segment definition in the request."
-                },
-                "segmentId": {
-                    "description": "The segment ID of a built-in or custom segment, for example `gaid::-3`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SegmentSequenceStep": {
-            "description": "A segment sequence definition.",
-            "id": "SegmentSequenceStep",
-            "properties": {
-                "matchType": {
-                    "description": "Specifies if the step immediately precedes or can be any time before the\nnext step.",
-                    "enum": [
-                        "UNSPECIFIED_MATCH_TYPE",
-                        "PRECEDES",
-                        "IMMEDIATELY_PRECEDES"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified match type is treated as precedes.",
-                        "Operator indicates that the previous step precedes the next step.",
-                        "Operator indicates that the previous step immediately precedes the next\nstep."
-                    ],
-                    "type": "string"
-                },
-                "orFiltersForSegment": {
-                    "description": "A sequence is specified with a list of Or grouped filters which are\ncombined with `AND` operator.",
-                    "items": {
-                        "$ref": "OrFiltersForSegment"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Metric": {
-            "description": "[Metrics](https://support.google.com/analytics/answer/1033861)\nare the quantitative measurements. For example, the metric `ga:users`\nindicates the total number of users for the requested time period.",
-            "id": "Metric",
-            "properties": {
-                "formattingType": {
-                    "description": "Specifies how the metric expression should be formatted, for example\n`INTEGER`.",
-                    "enum": [
-                        "METRIC_TYPE_UNSPECIFIED",
-                        "INTEGER",
-                        "FLOAT",
-                        "CURRENCY",
-                        "PERCENT",
-                        "TIME"
-                    ],
-                    "enumDescriptions": [
-                        "Metric type is unspecified.",
-                        "Integer metric.",
-                        "Float metric.",
-                        "Currency metric.",
-                        "Percentage metric.",
-                        "Time metric in `HH:MM:SS` format."
-                    ],
-                    "type": "string"
-                },
-                "alias": {
-                    "description": "An alias for the metric expression is an alternate name for the\nexpression. The alias can be used for filtering and sorting. This field\nis optional and is useful if the expression is not a single metric but\na complex expression which cannot be used in filtering and sorting.\nThe alias is also used in the response column header.",
-                    "type": "string"
-                },
-                "expression": {
-                    "description": "A metric expression in the request. An expression is constructed from one\nor more metrics and numbers. Accepted operators include: Plus (+), Minus\n(-), Negation (Unary -), Divided by (/), Multiplied by (*), Parenthesis,\nPositive cardinal numbers (0-9), can include decimals and is limited to\n1024 characters. Example `ga:totalRefunds/ga:users`, in most cases the\nmetric expression is just a single metric name like `ga:users`.\nAdding mixed `MetricType` (E.g., `CURRENCY` + `PERCENTAGE`) metrics\nwill result in unexpected results.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "PivotValueRegion": {
-            "description": "The metric values in the pivot region.",
-            "id": "PivotValueRegion",
-            "properties": {
-                "values": {
-                    "description": "The values of the metrics in each of the pivot regions.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Report": {
-            "description": "The data response corresponding to the request.",
-            "id": "Report",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Page token to retrieve the next page of results in the list.",
-                    "type": "string"
-                },
-                "data": {
-                    "$ref": "ReportData",
-                    "description": "Response data."
-                },
-                "columnHeader": {
-                    "$ref": "ColumnHeader",
-                    "description": "The column headers."
-                }
-            },
-            "type": "object"
-        },
-        "PivotHeader": {
-            "description": "The headers for each of the pivot sections defined in the request.",
-            "id": "PivotHeader",
-            "properties": {
-                "pivotHeaderEntries": {
-                    "description": "A single pivot section header.",
-                    "items": {
-                        "$ref": "PivotHeaderEntry"
-                    },
-                    "type": "array"
-                },
-                "totalPivotGroupsCount": {
-                    "description": "The total number of groups for this pivot.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "DateRange": {
-            "description": "A contiguous set of days: startDate, startDate + 1 day, ..., endDate.\nThe start and end dates are specified in\n[ISO8601](https://en.wikipedia.org/wiki/ISO_8601) date format `YYYY-MM-DD`.",
-            "id": "DateRange",
-            "properties": {
-                "endDate": {
-                    "description": "The end date for the query in the format `YYYY-MM-DD`.",
-                    "type": "string"
-                },
-                "startDate": {
-                    "description": "The start date for the query in the format `YYYY-MM-DD`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "MetricFilter": {
-            "description": "MetricFilter specifies the filter on a metric.",
-            "id": "MetricFilter",
-            "properties": {
-                "comparisonValue": {
-                    "description": "The value to compare against.",
-                    "type": "string"
-                },
-                "operator": {
-                    "description": "Is the metric `EQUAL`, `LESS_THAN` or `GREATER_THAN` the\ncomparisonValue, the default is `EQUAL`. If the operator is\n`IS_MISSING`, checks if the metric is missing and would ignore the\ncomparisonValue.",
-                    "enum": [
-                        "OPERATOR_UNSPECIFIED",
-                        "EQUAL",
-                        "LESS_THAN",
-                        "GREATER_THAN",
-                        "IS_MISSING"
-                    ],
-                    "enumDescriptions": [
-                        "If the operator is not specified, it is treated as `EQUAL`.",
-                        "Should the value of the metric be exactly equal to the comparison value.",
-                        "Should the value of the metric be less than to the comparison value.",
-                        "Should the value of the metric be greater than to the comparison value.",
-                        "Validates if the metric is missing.\nDoesn't take comparisonValue into account."
-                    ],
-                    "type": "string"
-                },
-                "not": {
-                    "description": "Logical `NOT` operator. If this boolean is set to true, then the matching\nmetric values will be excluded in the report. The default is false.",
-                    "type": "boolean"
-                },
-                "metricName": {
-                    "description": "The metric that will be filtered on. A metricFilter must contain a metric\nname. A metric name can be an alias earlier defined as a metric or it can\nalso be a metric expression.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ReportRequest": {
-            "description": "The main request class which specifies the Reporting API request.",
-            "id": "ReportRequest",
-            "properties": {
-                "metricFilterClauses": {
-                    "description": "The metric filter clauses. They are logically combined with the `AND`\noperator.  Metric filters look at only the first date range and not the\ncomparing date range. Note that filtering on metrics occurs after the\nmetrics are aggregated.",
-                    "items": {
-                        "$ref": "MetricFilterClause"
-                    },
-                    "type": "array"
-                },
-                "pageSize": {
-                    "description": "Page size is for paging and specifies the maximum number of returned rows.\nPage size should be >= 0. A query returns the default of 1,000 rows.\nThe Analytics Core Reporting API returns a maximum of 10,000 rows per\nrequest, no matter how many you ask for. It can also return fewer rows\nthan requested, if there aren't as many dimension segments as you expect.\nFor instance, there are fewer than 300 possible values for `ga:country`,\nso when segmenting only by country, you can't get more than 300 rows,\neven if you set `pageSize` to a higher value.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "hideValueRanges": {
-                    "description": "If set to true, hides the minimum and maximum across all matching rows.\nThe default is false and the value ranges are returned.",
-                    "type": "boolean"
-                },
-                "hideTotals": {
-                    "description": "If set to true, hides the total of all metrics for all the matching rows,\nfor every date range. The default false and will return the totals.",
-                    "type": "boolean"
-                },
-                "cohortGroup": {
-                    "$ref": "CohortGroup",
-                    "description": "Cohort group associated with this request. If there is a cohort group\nin the request the `ga:cohort` dimension must be present.\nEvery [ReportRequest](#ReportRequest) within a `batchGet` method must\ncontain the same `cohortGroup` definition."
-                },
-                "filtersExpression": {
-                    "description": "Dimension or metric filters that restrict the data returned for your\nrequest. To use the `filtersExpression`, supply a dimension or metric on\nwhich to filter, followed by the filter expression. For example, the\nfollowing expression selects `ga:browser` dimension which starts with\nFirefox; `ga:browser=~^Firefox`. For more information on dimensions\nand metric filters, see\n[Filters reference](https://developers.google.com/analytics/devguides/reporting/core/v3/reference#filters).",
-                    "type": "string"
-                },
-                "viewId": {
-                    "description": "The Analytics\n[view ID](https://support.google.com/analytics/answer/1009618)\nfrom which to retrieve data. Every [ReportRequest](#ReportRequest)\nwithin a `batchGet` method must contain the same `viewId`.",
-                    "type": "string"
-                },
-                "metrics": {
-                    "description": "The metrics requested.\nRequests must specify at least one metric. Requests can have a\ntotal of 10 metrics.",
-                    "items": {
-                        "$ref": "Metric"
-                    },
-                    "type": "array"
-                },
-                "dimensionFilterClauses": {
-                    "description": "The dimension filter clauses for filtering Dimension Values. They are\nlogically combined with the `AND` operator. Note that filtering occurs\nbefore any dimensions are aggregated, so that the returned metrics\nrepresent the total for only the relevant dimensions.",
-                    "items": {
-                        "$ref": "DimensionFilterClause"
-                    },
-                    "type": "array"
-                },
-                "orderBys": {
-                    "description": "Sort order on output rows. To compare two rows, the elements of the\nfollowing are applied in order until a difference is found.  All date\nranges in the output get the same row order.",
-                    "items": {
-                        "$ref": "OrderBy"
-                    },
-                    "type": "array"
-                },
-                "segments": {
-                    "description": "Segment the data returned for the request. A segment definition helps look\nat a subset of the segment request. A request can contain up to four\nsegments. Every [ReportRequest](#ReportRequest) within a\n`batchGet` method must contain the same `segments` definition. Requests\nwith segments must have the `ga:segment` dimension.",
-                    "items": {
-                        "$ref": "Segment"
-                    },
-                    "type": "array"
-                },
-                "samplingLevel": {
-                    "description": "The desired report\n[sample](https://support.google.com/analytics/answer/2637192) size.\nIf the the `samplingLevel` field is unspecified the `DEFAULT` sampling\nlevel is used. Every [ReportRequest](#ReportRequest) within a\n`batchGet` method must contain the same `samplingLevel` definition. See\n[developer guide](/analytics/devguides/reporting/core/v4/basics#sampling)\n for details.",
-                    "enum": [
-                        "SAMPLING_UNSPECIFIED",
-                        "DEFAULT",
-                        "SMALL",
-                        "LARGE"
-                    ],
-                    "enumDescriptions": [
-                        "If the `samplingLevel` field is unspecified the `DEFAULT` sampling level\nis used.",
-                        "Returns response with a sample size that balances speed and\naccuracy.",
-                        "It returns a fast response with a smaller sampling size.",
-                        "Returns a more accurate response using a large sampling size. But this\nmay result in response being slower."
-                    ],
-                    "type": "string"
-                },
-                "dimensions": {
-                    "description": "The dimensions requested.\nRequests can have a total of 7 dimensions.",
-                    "items": {
-                        "$ref": "Dimension"
-                    },
-                    "type": "array"
-                },
-                "pageToken": {
-                    "description": "A continuation token to get the next page of the results. Adding this to\nthe request will return the rows after the pageToken. The pageToken should\nbe the value returned in the nextPageToken parameter in the response to\nthe GetReports request.",
-                    "type": "string"
-                },
-                "dateRanges": {
-                    "description": "Date ranges in the request. The request can have a maximum of 2 date\nranges. The response will contain a set of metric values for each\ncombination of the dimensions for each date range in the request. So, if\nthere are two date ranges, there will be two set of metric values, one for\nthe original date range and one for the second date range.\nThe `reportRequest.dateRanges` field should not be specified for cohorts\nor Lifetime value requests.\nIf a date range is not provided, the default date range is (startDate:\ncurrent date - 7 days, endDate: current date - 1 day). Every\n[ReportRequest](#ReportRequest) within a `batchGet` method must\ncontain the same `dateRanges` definition.",
-                    "items": {
-                        "$ref": "DateRange"
-                    },
-                    "type": "array"
-                },
-                "pivots": {
-                    "description": "The pivot definitions. Requests can have a maximum of 2 pivots.",
-                    "items": {
-                        "$ref": "Pivot"
-                    },
-                    "type": "array"
-                },
-                "includeEmptyRows": {
-                    "description": "If set to false, the response does not include rows if all the retrieved\nmetrics are equal to zero. The default is false which will exclude these\nrows.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "Dimension": {
-            "description": "[Dimensions](https://support.google.com/analytics/answer/1033861)\nare attributes of your data. For example, the dimension `ga:city`\nindicates the city, for example, \"Paris\" or \"New York\", from which\na session originates.",
-            "id": "Dimension",
-            "properties": {
-                "histogramBuckets": {
-                    "description": "If non-empty, we place dimension values into buckets after string to\nint64. Dimension values that are not the string representation of an\nintegral value will be converted to zero.  The bucket values have to be in\nincreasing order.  Each bucket is closed on the lower end, and open on the\nupper end. The \"first\" bucket includes all values less than the first\nboundary, the \"last\" bucket includes all values up to infinity. Dimension\nvalues that fall in a bucket get transformed to a new dimension value. For\nexample, if one gives a list of \"0, 1, 3, 4, 7\", then we return the\nfollowing buckets:\n\n- bucket #1: values < 0, dimension value \"<0\"\n- bucket #2: values in [0,1), dimension value \"0\"\n- bucket #3: values in [1,3), dimension value \"1-2\"\n- bucket #4: values in [3,4), dimension value \"3\"\n- bucket #5: values in [4,7), dimension value \"4-6\"\n- bucket #6: values >= 7, dimension value \"7+\"\n\nNOTE: If you are applying histogram mutation on any dimension, and using\nthat dimension in sort, you will want to use the sort type\n`HISTOGRAM_BUCKET` for that purpose. Without that the dimension values\nwill be sorted according to dictionary\n(lexicographic) order. For example the ascending dictionary order is:\n\n   \"<50\", \"1001+\", \"121-1000\", \"50-120\"\n\nAnd the ascending `HISTOGRAM_BUCKET` order is:\n\n   \"<50\", \"50-120\", \"121-1000\", \"1001+\"\n\nThe client has to explicitly request `\"orderType\": \"HISTOGRAM_BUCKET\"`\nfor a histogram-mutated dimension.",
-                    "items": {
-                        "format": "int64",
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "Name of the dimension to fetch, for example `ga:browser`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SimpleSegment": {
-            "description": "A Simple segment conditions consist of one or more dimension/metric\nconditions that can be combined.",
-            "id": "SimpleSegment",
-            "properties": {
-                "orFiltersForSegment": {
-                    "description": "A list of segment filters groups which are combined with logical `AND`\noperator.",
-                    "items": {
-                        "$ref": "OrFiltersForSegment"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "DynamicSegment": {
-            "description": "Dynamic segment definition for defining the segment within the request.\nA segment can select users, sessions or both.",
-            "id": "DynamicSegment",
-            "properties": {
-                "sessionSegment": {
-                    "$ref": "SegmentDefinition",
-                    "description": "Session Segment to select sessions to include in the segment."
-                },
-                "name": {
-                    "description": "The name of the dynamic segment.",
-                    "type": "string"
-                },
-                "userSegment": {
-                    "$ref": "SegmentDefinition",
-                    "description": "User Segment to select users to include in the segment."
-                }
-            },
-            "type": "object"
-        },
-        "ColumnHeader": {
-            "description": "Column headers.",
-            "id": "ColumnHeader",
-            "properties": {
-                "dimensions": {
-                    "description": "The dimension names in the response.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "metricHeader": {
-                    "$ref": "MetricHeader",
-                    "description": "Metric headers for the metrics in the response."
-                }
-            },
-            "type": "object"
-        },
-        "SegmentFilterClause": {
-            "description": "Filter Clause to be used in a segment definition, can be wither a metric or\na dimension filter.",
-            "id": "SegmentFilterClause",
-            "properties": {
-                "dimensionFilter": {
-                    "$ref": "SegmentDimensionFilter",
-                    "description": "Dimension Filter for the segment definition."
-                },
-                "metricFilter": {
-                    "$ref": "SegmentMetricFilter",
-                    "description": "Metric Filter for the segment definition."
-                },
-                "not": {
-                    "description": "Matches the complement (`!`) of the filter.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "ReportRow": {
-            "description": "A row in the report.",
-            "id": "ReportRow",
-            "properties": {
-                "metrics": {
-                    "description": "List of metrics for each requested DateRange.",
-                    "items": {
-                        "$ref": "DateRangeValues"
-                    },
-                    "type": "array"
-                },
-                "dimensions": {
-                    "description": "List of requested dimensions.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Cohort": {
-            "description": "Defines a cohort. A cohort is a group of users who share a common\ncharacteristic. For example, all users with the same acquisition date\nbelong to the same cohort.",
-            "id": "Cohort",
-            "properties": {
-                "dateRange": {
-                    "$ref": "DateRange",
-                    "description": "This is used for `FIRST_VISIT_DATE` cohort, the cohort selects users\nwhose first visit date is between start date and end date defined in the\nDateRange. The date ranges should be aligned for cohort requests. If the\nrequest contains `ga:cohortNthDay` it should be exactly one day long,\nif `ga:cohortNthWeek` it should be aligned to the week boundary (starting\nat Sunday and ending Saturday), and for `ga:cohortNthMonth` the date range\nshould be aligned to the month (starting at the first and ending on the\nlast day of the month).\nFor LTV requests there are no such restrictions.\nYou do not need to supply a date range for the\n`reportsRequest.dateRanges` field."
-                },
-                "name": {
-                    "description": "A unique name for the cohort. If not defined name will be auto-generated\nwith values cohort_[1234...].",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "Type of the cohort. The only supported type as of now is\n`FIRST_VISIT_DATE`. If this field is unspecified the cohort is treated\nas `FIRST_VISIT_DATE` type cohort.",
-                    "enum": [
-                        "UNSPECIFIED_COHORT_TYPE",
-                        "FIRST_VISIT_DATE"
-                    ],
-                    "enumDescriptions": [
-                        "If unspecified it's treated as `FIRST_VISIT_DATE`.",
-                        "Cohorts that are selected based on first visit date."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "MetricFilterClause": {
-            "description": "Represents a group of metric filters.\nSet the operator value to specify how the filters are logically combined.",
-            "id": "MetricFilterClause",
-            "properties": {
-                "filters": {
-                    "description": "The repeated set of filters. They are logically combined based on the\noperator specified.",
-                    "items": {
-                        "$ref": "MetricFilter"
-                    },
-                    "type": "array"
-                },
-                "operator": {
-                    "description": "The operator for combining multiple metric filters. If unspecified, it is\ntreated as an `OR`.",
-                    "enum": [
-                        "OPERATOR_UNSPECIFIED",
-                        "OR",
-                        "AND"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified operator. It is treated as an `OR`.",
-                        "The logical `OR` operator.",
-                        "The logical `AND` operator."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "OrFiltersForSegment": {
-            "description": "A list of segment filters in the `OR` group are combined with the logical OR\noperator.",
-            "id": "OrFiltersForSegment",
-            "properties": {
-                "segmentFilterClauses": {
-                    "description": "List of segment filters to be combined with a `OR` operator.",
-                    "items": {
-                        "$ref": "SegmentFilterClause"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "MetricHeader": {
             "description": "The headers for the metrics.",
             "id": "MetricHeader",
@@ -912,6 +336,18 @@
             "description": "The Pivot describes the pivot section in the request.\nThe Pivot helps rearrange the information in the table for certain reports\nby pivoting your data on a second dimension.",
             "id": "Pivot",
             "properties": {
+                "startGroup": {
+                    "description": "If k metrics were requested, then the response will contain some\ndata-dependent multiple of k columns in the report.  E.g., if you pivoted\non the dimension `ga:browser` then you'd get k columns for \"Firefox\", k\ncolumns for \"IE\", k columns for \"Chrome\", etc. The ordering of the groups\nof columns is determined by descending order of \"total\" for the first of\nthe k values.  Ties are broken by lexicographic ordering of the first\npivot dimension, then lexicographic ordering of the second pivot\ndimension, and so on.  E.g., if the totals for the first value for\nFirefox, IE, and Chrome were 8, 2, 8, respectively, the order of columns\nwould be Chrome, Firefox, IE.\n\nThe following let you choose which of the groups of k columns are\nincluded in the response.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "metrics": {
+                    "description": "The pivot metrics. Pivot metrics are part of the\nrestriction on total number of metrics allowed in the request.",
+                    "items": {
+                        "$ref": "Metric"
+                    },
+                    "type": "array"
+                },
                 "dimensionFilterClauses": {
                     "description": "DimensionFilterClauses are logically combined with an `AND` operator: only\ndata that is included by all these DimensionFilterClauses contributes to\nthe values in this pivot region. Dimension filters can be used to restrict\nthe columns shown in the pivot region. For example if you have\n`ga:browser` as the requested dimension in the pivot region, and you\nspecify key filters to restrict `ga:browser` to only \"IE\" or \"Firefox\",\nthen only those two browsers would show up as columns.",
                     "items": {
@@ -930,18 +366,6 @@
                     "description": "Specifies the maximum number of groups to return.\nThe default value is 10, also the maximum value is 1,000.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "startGroup": {
-                    "description": "If k metrics were requested, then the response will contain some\ndata-dependent multiple of k columns in the report.  E.g., if you pivoted\non the dimension `ga:browser` then you'd get k columns for \"Firefox\", k\ncolumns for \"IE\", k columns for \"Chrome\", etc. The ordering of the groups\nof columns is determined by descending order of \"total\" for the first of\nthe k values.  Ties are broken by lexicographic ordering of the first\npivot dimension, then lexicographic ordering of the second pivot\ndimension, and so on.  E.g., if the totals for the first value for\nFirefox, IE, and Chrome were 8, 2, 8, respectively, the order of columns\nwould be Chrome, Firefox, IE.\n\nThe following let you choose which of the groups of k columns are\nincluded in the response.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "metrics": {
-                    "description": "The pivot metrics. Pivot metrics are part of the\nrestriction on total number of metrics allowed in the request.",
-                    "items": {
-                        "$ref": "Metric"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -975,6 +399,10 @@
             "description": "SegmentFilter defines the segment to be either a simple or a sequence\nsegment. A simple segment condition contains dimension and metric conditions\nto select the sessions or users. A sequence segment condition can be used to\nselect users or sessions based on sequential conditions.",
             "id": "SegmentFilter",
             "properties": {
+                "sequenceSegment": {
+                    "$ref": "SequenceSegment",
+                    "description": "Sequence conditions consist of one or more steps, where each step is\ndefined by one or more dimension/metric conditions. Multiple steps can\nbe combined with special sequence operators."
+                },
                 "not": {
                     "description": "If true, match the complement of simple or sequence segment.\nFor example, to match all visits not from \"New York\", we can define the\nsegment as follows:\n\n      \"sessionSegment\": {\n        \"segmentFilters\": [{\n          \"simpleSegment\" :{\n            \"orFiltersForSegment\": [{\n              \"segmentFilterClauses\":[{\n                \"dimensionFilter\": {\n                  \"dimensionName\": \"ga:city\",\n                  \"expressions\": [\"New York\"]\n                }\n              }]\n            }]\n          },\n          \"not\": \"True\"\n        }]\n      },",
                     "type": "boolean"
@@ -982,10 +410,6 @@
                 "simpleSegment": {
                     "$ref": "SimpleSegment",
                     "description": "A Simple segment conditions consist of one or more dimension/metric\nconditions that can be combined"
-                },
-                "sequenceSegment": {
-                    "$ref": "SequenceSegment",
-                    "description": "Sequence conditions consist of one or more steps, where each step is\ndefined by one or more dimension/metric conditions. Multiple steps can\nbe combined with special sequence operators."
                 }
             },
             "type": "object"
@@ -1039,21 +463,6 @@
             "description": "The data part of the report.",
             "id": "ReportData",
             "properties": {
-                "minimums": {
-                    "description": "Minimum and maximum values seen over all matching rows. These are both\nempty when `hideValueRanges` in the request is false, or when\nrowCount is zero.",
-                    "items": {
-                        "$ref": "DateRangeValues"
-                    },
-                    "type": "array"
-                },
-                "samplingSpaceSizes": {
-                    "description": "If the results are\n[sampled](https://support.google.com/analytics/answer/2637192),\nthis returns the total number of\nsamples present, one entry per date range. If the results are not sampled\nthis field will not be defined. See\n[developer guide](/analytics/devguides/reporting/core/v4/basics#sampling)\nfor details.",
-                    "items": {
-                        "format": "int64",
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
                 "totals": {
                     "description": "For each requested date range, for the set of all rows that match\nthe query, every requested value format gets a total. The total\nfor a value format is computed by first totaling the metrics\nmentioned in the value format and then evaluating the value\nformat as a scalar expression.  E.g., The \"totals\" for\n`3 / (ga:sessions + 2)` we compute\n`3 / ((sum of all relevant ga:sessions) + 2)`.\nTotals are computed before pagination.",
                     "items": {
@@ -1096,6 +505,21 @@
                         "$ref": "DateRangeValues"
                     },
                     "type": "array"
+                },
+                "minimums": {
+                    "description": "Minimum and maximum values seen over all matching rows. These are both\nempty when `hideValueRanges` in the request is false, or when\nrowCount is zero.",
+                    "items": {
+                        "$ref": "DateRangeValues"
+                    },
+                    "type": "array"
+                },
+                "samplingSpaceSizes": {
+                    "description": "If the results are\n[sampled](https://support.google.com/analytics/answer/2637192),\nthis returns the total number of\nsamples present, one entry per date range. If the results are not sampled\nthis field will not be defined. See\n[developer guide](/analytics/devguides/reporting/core/v4/basics#sampling)\nfor details.",
+                    "items": {
+                        "format": "int64",
+                        "type": "string"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -1104,6 +528,21 @@
             "description": "Dimension filter specifies the filtering options on a dimension.",
             "id": "DimensionFilter",
             "properties": {
+                "expressions": {
+                    "description": "Strings or regular expression to match against. Only the first value of\nthe list is used for comparison unless the operator is `IN_LIST`.\nIf `IN_LIST` operator, then the entire list is used to filter the\ndimensions as explained in the description of the `IN_LIST` operator.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "not": {
+                    "description": "Logical `NOT` operator. If this boolean is set to true, then the matching\ndimension values will be excluded in the report. The default is false.",
+                    "type": "boolean"
+                },
+                "caseSensitive": {
+                    "description": "Should the match be case sensitive? Default is false.",
+                    "type": "boolean"
+                },
                 "operator": {
                     "description": "How to match the dimension to the expression. The default is REGEXP.",
                     "enum": [
@@ -1135,21 +574,582 @@
                 "dimensionName": {
                     "description": "The dimension to filter on. A DimensionFilter must contain a dimension.",
                     "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Segment": {
+            "description": "The segment definition, if the report needs to be segmented.\nA Segment is a subset of the Analytics data. For example, of the entire\nset of users, one Segment might be users from a particular country or city.",
+            "id": "Segment",
+            "properties": {
+                "dynamicSegment": {
+                    "$ref": "DynamicSegment",
+                    "description": "A dynamic segment definition in the request."
+                },
+                "segmentId": {
+                    "description": "The segment ID of a built-in or custom segment, for example `gaid::-3`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "OrderBy": {
+            "description": "Specifies the sorting options.",
+            "id": "OrderBy",
+            "properties": {
+                "sortOrder": {
+                    "description": "The sorting order for the field.",
+                    "enum": [
+                        "SORT_ORDER_UNSPECIFIED",
+                        "ASCENDING",
+                        "DESCENDING"
+                    ],
+                    "enumDescriptions": [
+                        "If the sort order is unspecified, the default is ascending.",
+                        "Ascending sort. The field will be sorted in an ascending manner.",
+                        "Descending sort. The field will be sorted in a descending manner."
+                    ],
+                    "type": "string"
+                },
+                "orderType": {
+                    "description": "The order type. The default orderType is `VALUE`.",
+                    "enum": [
+                        "ORDER_TYPE_UNSPECIFIED",
+                        "VALUE",
+                        "DELTA",
+                        "SMART",
+                        "HISTOGRAM_BUCKET",
+                        "DIMENSION_AS_INTEGER"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified order type will be treated as sort based on value.",
+                        "The sort order is based on the value of the chosen column; looks only at\nthe first date range.",
+                        "The sort order is based on the difference of the values of the chosen\ncolumn between the first two date ranges.  Usable only if there are\nexactly two date ranges.",
+                        "The sort order is based on weighted value of the chosen column.  If\ncolumn has n/d format, then weighted value of this ratio will\nbe `(n + totals.n)/(d + totals.d)` Usable only for metrics that\nrepresent ratios.",
+                        "Histogram order type is applicable only to dimension columns with\nnon-empty histogram-buckets.",
+                        "If the dimensions are fixed length numbers, ordinary sort would just\nwork fine. `DIMENSION_AS_INTEGER` can be used if the dimensions are\nvariable length numbers."
+                    ],
+                    "type": "string"
+                },
+                "fieldName": {
+                    "description": "The field which to sort by. The default sort order is ascending. Example:\n`ga:browser`.\nNote, that you can only specify one field for sort here. For example,\n`ga:browser, ga:city` is not valid.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SegmentDimensionFilter": {
+            "description": "Dimension filter specifies the filtering options on a dimension.",
+            "id": "SegmentDimensionFilter",
+            "properties": {
+                "minComparisonValue": {
+                    "description": "Minimum comparison values for `BETWEEN` match type.",
+                    "type": "string"
+                },
+                "maxComparisonValue": {
+                    "description": "Maximum comparison values for `BETWEEN` match type.",
+                    "type": "string"
+                },
+                "dimensionName": {
+                    "description": "Name of the dimension for which the filter is being applied.",
+                    "type": "string"
+                },
+                "operator": {
+                    "description": "The operator to use to match the dimension with the expressions.",
+                    "enum": [
+                        "OPERATOR_UNSPECIFIED",
+                        "REGEXP",
+                        "BEGINS_WITH",
+                        "ENDS_WITH",
+                        "PARTIAL",
+                        "EXACT",
+                        "IN_LIST",
+                        "NUMERIC_LESS_THAN",
+                        "NUMERIC_GREATER_THAN",
+                        "NUMERIC_BETWEEN"
+                    ],
+                    "enumDescriptions": [
+                        "If the match type is unspecified, it is treated as a REGEXP.",
+                        "The match expression is treated as a regular expression. All other match\ntypes are not treated as regular expressions.",
+                        "Matches the values which begin with the match expression provided.",
+                        "Matches the values which end with the match expression provided.",
+                        "Substring match.",
+                        "The value should match the match expression entirely.",
+                        "This option is used to specify a dimension filter whose expression can\ntake any value from a selected list of values. This helps avoiding\nevaluating multiple exact match dimension filters which are OR'ed for\nevery single response row. For example:\n\n    expressions: [\"A\", \"B\", \"C\"]\n\nAny response row whose dimension has it is value as A, B or C, matches\nthis DimensionFilter.",
+                        "Integer comparison filters.\ncase sensitivity is ignored for these and the expression\nis assumed to be a string representing an integer.\nFailure conditions:\n\n- if expression is not a valid int64, the client should expect\n  an error.\n- input dimensions that are not valid int64 values will never match the\n  filter.\n\nChecks if the dimension is numerically less than the match expression.",
+                        "Checks if the dimension is numerically greater than the match\nexpression.",
+                        "Checks if the dimension is numerically between the minimum and maximum\nof the match expression, boundaries excluded."
+                    ],
+                    "type": "string"
                 },
                 "expressions": {
-                    "description": "Strings or regular expression to match against. Only the first value of\nthe list is used for comparison unless the operator is `IN_LIST`.\nIf `IN_LIST` operator, then the entire list is used to filter the\ndimensions as explained in the description of the `IN_LIST` operator.",
+                    "description": "The list of expressions, only the first element is used for all operators",
                     "items": {
                         "type": "string"
                     },
                     "type": "array"
                 },
-                "not": {
-                    "description": "Logical `NOT` operator. If this boolean is set to true, then the matching\ndimension values will be excluded in the report. The default is false.",
+                "caseSensitive": {
+                    "description": "Should the match be case sensitive, ignored for `IN_LIST` operator.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "SegmentSequenceStep": {
+            "description": "A segment sequence definition.",
+            "id": "SegmentSequenceStep",
+            "properties": {
+                "orFiltersForSegment": {
+                    "description": "A sequence is specified with a list of Or grouped filters which are\ncombined with `AND` operator.",
+                    "items": {
+                        "$ref": "OrFiltersForSegment"
+                    },
+                    "type": "array"
+                },
+                "matchType": {
+                    "description": "Specifies if the step immediately precedes or can be any time before the\nnext step.",
+                    "enum": [
+                        "UNSPECIFIED_MATCH_TYPE",
+                        "PRECEDES",
+                        "IMMEDIATELY_PRECEDES"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified match type is treated as precedes.",
+                        "Operator indicates that the previous step precedes the next step.",
+                        "Operator indicates that the previous step immediately precedes the next\nstep."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Metric": {
+            "description": "[Metrics](https://support.google.com/analytics/answer/1033861)\nare the quantitative measurements. For example, the metric `ga:users`\nindicates the total number of users for the requested time period.",
+            "id": "Metric",
+            "properties": {
+                "expression": {
+                    "description": "A metric expression in the request. An expression is constructed from one\nor more metrics and numbers. Accepted operators include: Plus (+), Minus\n(-), Negation (Unary -), Divided by (/), Multiplied by (*), Parenthesis,\nPositive cardinal numbers (0-9), can include decimals and is limited to\n1024 characters. Example `ga:totalRefunds/ga:users`, in most cases the\nmetric expression is just a single metric name like `ga:users`.\nAdding mixed `MetricType` (E.g., `CURRENCY` + `PERCENTAGE`) metrics\nwill result in unexpected results.",
+                    "type": "string"
+                },
+                "formattingType": {
+                    "description": "Specifies how the metric expression should be formatted, for example\n`INTEGER`.",
+                    "enum": [
+                        "METRIC_TYPE_UNSPECIFIED",
+                        "INTEGER",
+                        "FLOAT",
+                        "CURRENCY",
+                        "PERCENT",
+                        "TIME"
+                    ],
+                    "enumDescriptions": [
+                        "Metric type is unspecified.",
+                        "Integer metric.",
+                        "Float metric.",
+                        "Currency metric.",
+                        "Percentage metric.",
+                        "Time metric in `HH:MM:SS` format."
+                    ],
+                    "type": "string"
+                },
+                "alias": {
+                    "description": "An alias for the metric expression is an alternate name for the\nexpression. The alias can be used for filtering and sorting. This field\nis optional and is useful if the expression is not a single metric but\na complex expression which cannot be used in filtering and sorting.\nThe alias is also used in the response column header.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "PivotValueRegion": {
+            "description": "The metric values in the pivot region.",
+            "id": "PivotValueRegion",
+            "properties": {
+                "values": {
+                    "description": "The values of the metrics in each of the pivot regions.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Report": {
+            "description": "The data response corresponding to the request.",
+            "id": "Report",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Page token to retrieve the next page of results in the list.",
+                    "type": "string"
+                },
+                "data": {
+                    "$ref": "ReportData",
+                    "description": "Response data."
+                },
+                "columnHeader": {
+                    "$ref": "ColumnHeader",
+                    "description": "The column headers."
+                }
+            },
+            "type": "object"
+        },
+        "PivotHeader": {
+            "description": "The headers for each of the pivot sections defined in the request.",
+            "id": "PivotHeader",
+            "properties": {
+                "pivotHeaderEntries": {
+                    "description": "A single pivot section header.",
+                    "items": {
+                        "$ref": "PivotHeaderEntry"
+                    },
+                    "type": "array"
+                },
+                "totalPivotGroupsCount": {
+                    "description": "The total number of groups for this pivot.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "DateRange": {
+            "description": "A contiguous set of days: startDate, startDate + 1 day, ..., endDate.\nThe start and end dates are specified in\n[ISO8601](https://en.wikipedia.org/wiki/ISO_8601) date format `YYYY-MM-DD`.",
+            "id": "DateRange",
+            "properties": {
+                "startDate": {
+                    "description": "The start date for the query in the format `YYYY-MM-DD`.",
+                    "type": "string"
+                },
+                "endDate": {
+                    "description": "The end date for the query in the format `YYYY-MM-DD`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ReportRequest": {
+            "description": "The main request class which specifies the Reporting API request.",
+            "id": "ReportRequest",
+            "properties": {
+                "metricFilterClauses": {
+                    "description": "The metric filter clauses. They are logically combined with the `AND`\noperator.  Metric filters look at only the first date range and not the\ncomparing date range. Note that filtering on metrics occurs after the\nmetrics are aggregated.",
+                    "items": {
+                        "$ref": "MetricFilterClause"
+                    },
+                    "type": "array"
+                },
+                "pageSize": {
+                    "description": "Page size is for paging and specifies the maximum number of returned rows.\nPage size should be >= 0. A query returns the default of 1,000 rows.\nThe Analytics Core Reporting API returns a maximum of 10,000 rows per\nrequest, no matter how many you ask for. It can also return fewer rows\nthan requested, if there aren't as many dimension segments as you expect.\nFor instance, there are fewer than 300 possible values for `ga:country`,\nso when segmenting only by country, you can't get more than 300 rows,\neven if you set `pageSize` to a higher value.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "hideValueRanges": {
+                    "description": "If set to true, hides the minimum and maximum across all matching rows.\nThe default is false and the value ranges are returned.",
                     "type": "boolean"
                 },
-                "caseSensitive": {
-                    "description": "Should the match be case sensitive? Default is false.",
+                "hideTotals": {
+                    "description": "If set to true, hides the total of all metrics for all the matching rows,\nfor every date range. The default false and will return the totals.",
                     "type": "boolean"
+                },
+                "cohortGroup": {
+                    "$ref": "CohortGroup",
+                    "description": "Cohort group associated with this request. If there is a cohort group\nin the request the `ga:cohort` dimension must be present.\nEvery [ReportRequest](#ReportRequest) within a `batchGet` method must\ncontain the same `cohortGroup` definition."
+                },
+                "filtersExpression": {
+                    "description": "Dimension or metric filters that restrict the data returned for your\nrequest. To use the `filtersExpression`, supply a dimension or metric on\nwhich to filter, followed by the filter expression. For example, the\nfollowing expression selects `ga:browser` dimension which starts with\nFirefox; `ga:browser=~^Firefox`. For more information on dimensions\nand metric filters, see\n[Filters reference](https://developers.google.com/analytics/devguides/reporting/core/v3/reference#filters).",
+                    "type": "string"
+                },
+                "viewId": {
+                    "description": "The Analytics\n[view ID](https://support.google.com/analytics/answer/1009618)\nfrom which to retrieve data. Every [ReportRequest](#ReportRequest)\nwithin a `batchGet` method must contain the same `viewId`.",
+                    "type": "string"
+                },
+                "metrics": {
+                    "description": "The metrics requested.\nRequests must specify at least one metric. Requests can have a\ntotal of 10 metrics.",
+                    "items": {
+                        "$ref": "Metric"
+                    },
+                    "type": "array"
+                },
+                "dimensionFilterClauses": {
+                    "description": "The dimension filter clauses for filtering Dimension Values. They are\nlogically combined with the `AND` operator. Note that filtering occurs\nbefore any dimensions are aggregated, so that the returned metrics\nrepresent the total for only the relevant dimensions.",
+                    "items": {
+                        "$ref": "DimensionFilterClause"
+                    },
+                    "type": "array"
+                },
+                "orderBys": {
+                    "description": "Sort order on output rows. To compare two rows, the elements of the\nfollowing are applied in order until a difference is found.  All date\nranges in the output get the same row order.",
+                    "items": {
+                        "$ref": "OrderBy"
+                    },
+                    "type": "array"
+                },
+                "segments": {
+                    "description": "Segment the data returned for the request. A segment definition helps look\nat a subset of the segment request. A request can contain up to four\nsegments. Every [ReportRequest](#ReportRequest) within a\n`batchGet` method must contain the same `segments` definition. Requests\nwith segments must have the `ga:segment` dimension.",
+                    "items": {
+                        "$ref": "Segment"
+                    },
+                    "type": "array"
+                },
+                "samplingLevel": {
+                    "description": "The desired report\n[sample](https://support.google.com/analytics/answer/2637192) size.\nIf the the `samplingLevel` field is unspecified the `DEFAULT` sampling\nlevel is used. Every [ReportRequest](#ReportRequest) within a\n`batchGet` method must contain the same `samplingLevel` definition. See\n[developer guide](/analytics/devguides/reporting/core/v4/basics#sampling)\n for details.",
+                    "enum": [
+                        "SAMPLING_UNSPECIFIED",
+                        "DEFAULT",
+                        "SMALL",
+                        "LARGE"
+                    ],
+                    "enumDescriptions": [
+                        "If the `samplingLevel` field is unspecified the `DEFAULT` sampling level\nis used.",
+                        "Returns response with a sample size that balances speed and\naccuracy.",
+                        "It returns a fast response with a smaller sampling size.",
+                        "Returns a more accurate response using a large sampling size. But this\nmay result in response being slower."
+                    ],
+                    "type": "string"
+                },
+                "dimensions": {
+                    "description": "The dimensions requested.\nRequests can have a total of 7 dimensions.",
+                    "items": {
+                        "$ref": "Dimension"
+                    },
+                    "type": "array"
+                },
+                "pageToken": {
+                    "description": "A continuation token to get the next page of the results. Adding this to\nthe request will return the rows after the pageToken. The pageToken should\nbe the value returned in the nextPageToken parameter in the response to\nthe GetReports request.",
+                    "type": "string"
+                },
+                "dateRanges": {
+                    "description": "Date ranges in the request. The request can have a maximum of 2 date\nranges. The response will contain a set of metric values for each\ncombination of the dimensions for each date range in the request. So, if\nthere are two date ranges, there will be two set of metric values, one for\nthe original date range and one for the second date range.\nThe `reportRequest.dateRanges` field should not be specified for cohorts\nor Lifetime value requests.\nIf a date range is not provided, the default date range is (startDate:\ncurrent date - 7 days, endDate: current date - 1 day). Every\n[ReportRequest](#ReportRequest) within a `batchGet` method must\ncontain the same `dateRanges` definition.",
+                    "items": {
+                        "$ref": "DateRange"
+                    },
+                    "type": "array"
+                },
+                "pivots": {
+                    "description": "The pivot definitions. Requests can have a maximum of 2 pivots.",
+                    "items": {
+                        "$ref": "Pivot"
+                    },
+                    "type": "array"
+                },
+                "includeEmptyRows": {
+                    "description": "If set to false, the response does not include rows if all the retrieved\nmetrics are equal to zero. The default is false which will exclude these\nrows.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "MetricFilter": {
+            "description": "MetricFilter specifies the filter on a metric.",
+            "id": "MetricFilter",
+            "properties": {
+                "comparisonValue": {
+                    "description": "The value to compare against.",
+                    "type": "string"
+                },
+                "operator": {
+                    "description": "Is the metric `EQUAL`, `LESS_THAN` or `GREATER_THAN` the\ncomparisonValue, the default is `EQUAL`. If the operator is\n`IS_MISSING`, checks if the metric is missing and would ignore the\ncomparisonValue.",
+                    "enum": [
+                        "OPERATOR_UNSPECIFIED",
+                        "EQUAL",
+                        "LESS_THAN",
+                        "GREATER_THAN",
+                        "IS_MISSING"
+                    ],
+                    "enumDescriptions": [
+                        "If the operator is not specified, it is treated as `EQUAL`.",
+                        "Should the value of the metric be exactly equal to the comparison value.",
+                        "Should the value of the metric be less than to the comparison value.",
+                        "Should the value of the metric be greater than to the comparison value.",
+                        "Validates if the metric is missing.\nDoesn't take comparisonValue into account."
+                    ],
+                    "type": "string"
+                },
+                "not": {
+                    "description": "Logical `NOT` operator. If this boolean is set to true, then the matching\nmetric values will be excluded in the report. The default is false.",
+                    "type": "boolean"
+                },
+                "metricName": {
+                    "description": "The metric that will be filtered on. A metricFilter must contain a metric\nname. A metric name can be an alias earlier defined as a metric or it can\nalso be a metric expression.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Dimension": {
+            "description": "[Dimensions](https://support.google.com/analytics/answer/1033861)\nare attributes of your data. For example, the dimension `ga:city`\nindicates the city, for example, \"Paris\" or \"New York\", from which\na session originates.",
+            "id": "Dimension",
+            "properties": {
+                "histogramBuckets": {
+                    "description": "If non-empty, we place dimension values into buckets after string to\nint64. Dimension values that are not the string representation of an\nintegral value will be converted to zero.  The bucket values have to be in\nincreasing order.  Each bucket is closed on the lower end, and open on the\nupper end. The \"first\" bucket includes all values less than the first\nboundary, the \"last\" bucket includes all values up to infinity. Dimension\nvalues that fall in a bucket get transformed to a new dimension value. For\nexample, if one gives a list of \"0, 1, 3, 4, 7\", then we return the\nfollowing buckets:\n\n- bucket #1: values < 0, dimension value \"<0\"\n- bucket #2: values in [0,1), dimension value \"0\"\n- bucket #3: values in [1,3), dimension value \"1-2\"\n- bucket #4: values in [3,4), dimension value \"3\"\n- bucket #5: values in [4,7), dimension value \"4-6\"\n- bucket #6: values >= 7, dimension value \"7+\"\n\nNOTE: If you are applying histogram mutation on any dimension, and using\nthat dimension in sort, you will want to use the sort type\n`HISTOGRAM_BUCKET` for that purpose. Without that the dimension values\nwill be sorted according to dictionary\n(lexicographic) order. For example the ascending dictionary order is:\n\n   \"<50\", \"1001+\", \"121-1000\", \"50-120\"\n\nAnd the ascending `HISTOGRAM_BUCKET` order is:\n\n   \"<50\", \"50-120\", \"121-1000\", \"1001+\"\n\nThe client has to explicitly request `\"orderType\": \"HISTOGRAM_BUCKET\"`\nfor a histogram-mutated dimension.",
+                    "items": {
+                        "format": "int64",
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "Name of the dimension to fetch, for example `ga:browser`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SimpleSegment": {
+            "description": "A Simple segment conditions consist of one or more dimension/metric\nconditions that can be combined.",
+            "id": "SimpleSegment",
+            "properties": {
+                "orFiltersForSegment": {
+                    "description": "A list of segment filters groups which are combined with logical `AND`\noperator.",
+                    "items": {
+                        "$ref": "OrFiltersForSegment"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "DynamicSegment": {
+            "description": "Dynamic segment definition for defining the segment within the request.\nA segment can select users, sessions or both.",
+            "id": "DynamicSegment",
+            "properties": {
+                "name": {
+                    "description": "The name of the dynamic segment.",
+                    "type": "string"
+                },
+                "userSegment": {
+                    "$ref": "SegmentDefinition",
+                    "description": "User Segment to select users to include in the segment."
+                },
+                "sessionSegment": {
+                    "$ref": "SegmentDefinition",
+                    "description": "Session Segment to select sessions to include in the segment."
+                }
+            },
+            "type": "object"
+        },
+        "ColumnHeader": {
+            "description": "Column headers.",
+            "id": "ColumnHeader",
+            "properties": {
+                "metricHeader": {
+                    "$ref": "MetricHeader",
+                    "description": "Metric headers for the metrics in the response."
+                },
+                "dimensions": {
+                    "description": "The dimension names in the response.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SegmentFilterClause": {
+            "description": "Filter Clause to be used in a segment definition, can be wither a metric or\na dimension filter.",
+            "id": "SegmentFilterClause",
+            "properties": {
+                "metricFilter": {
+                    "$ref": "SegmentMetricFilter",
+                    "description": "Metric Filter for the segment definition."
+                },
+                "not": {
+                    "description": "Matches the complement (`!`) of the filter.",
+                    "type": "boolean"
+                },
+                "dimensionFilter": {
+                    "$ref": "SegmentDimensionFilter",
+                    "description": "Dimension Filter for the segment definition."
+                }
+            },
+            "type": "object"
+        },
+        "ReportRow": {
+            "description": "A row in the report.",
+            "id": "ReportRow",
+            "properties": {
+                "dimensions": {
+                    "description": "List of requested dimensions.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "metrics": {
+                    "description": "List of metrics for each requested DateRange.",
+                    "items": {
+                        "$ref": "DateRangeValues"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Cohort": {
+            "description": "Defines a cohort. A cohort is a group of users who share a common\ncharacteristic. For example, all users with the same acquisition date\nbelong to the same cohort.",
+            "id": "Cohort",
+            "properties": {
+                "dateRange": {
+                    "$ref": "DateRange",
+                    "description": "This is used for `FIRST_VISIT_DATE` cohort, the cohort selects users\nwhose first visit date is between start date and end date defined in the\nDateRange. The date ranges should be aligned for cohort requests. If the\nrequest contains `ga:cohortNthDay` it should be exactly one day long,\nif `ga:cohortNthWeek` it should be aligned to the week boundary (starting\nat Sunday and ending Saturday), and for `ga:cohortNthMonth` the date range\nshould be aligned to the month (starting at the first and ending on the\nlast day of the month).\nFor LTV requests there are no such restrictions.\nYou do not need to supply a date range for the\n`reportsRequest.dateRanges` field."
+                },
+                "name": {
+                    "description": "A unique name for the cohort. If not defined name will be auto-generated\nwith values cohort_[1234...].",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Type of the cohort. The only supported type as of now is\n`FIRST_VISIT_DATE`. If this field is unspecified the cohort is treated\nas `FIRST_VISIT_DATE` type cohort.",
+                    "enum": [
+                        "UNSPECIFIED_COHORT_TYPE",
+                        "FIRST_VISIT_DATE"
+                    ],
+                    "enumDescriptions": [
+                        "If unspecified it's treated as `FIRST_VISIT_DATE`.",
+                        "Cohorts that are selected based on first visit date."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MetricFilterClause": {
+            "description": "Represents a group of metric filters.\nSet the operator value to specify how the filters are logically combined.",
+            "id": "MetricFilterClause",
+            "properties": {
+                "filters": {
+                    "description": "The repeated set of filters. They are logically combined based on the\noperator specified.",
+                    "items": {
+                        "$ref": "MetricFilter"
+                    },
+                    "type": "array"
+                },
+                "operator": {
+                    "description": "The operator for combining multiple metric filters. If unspecified, it is\ntreated as an `OR`.",
+                    "enum": [
+                        "OPERATOR_UNSPECIFIED",
+                        "OR",
+                        "AND"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified operator. It is treated as an `OR`.",
+                        "The logical `OR` operator.",
+                        "The logical `AND` operator."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "OrFiltersForSegment": {
+            "description": "A list of segment filters in the `OR` group are combined with the logical OR\noperator.",
+            "id": "OrFiltersForSegment",
+            "properties": {
+                "segmentFilterClauses": {
+                    "description": "List of segment filters to be combined with a `OR` operator.",
+                    "items": {
+                        "$ref": "SegmentFilterClause"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/androiddeviceprovisioning__v1.json b/discovery/googleapis/androiddeviceprovisioning__v1.json
index bf53552..315dae0 100644
--- a/discovery/googleapis/androiddeviceprovisioning__v1.json
+++ b/discovery/googleapis/androiddeviceprovisioning__v1.json
@@ -16,6 +16,22 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -37,11 +53,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -55,6 +66,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -85,22 +101,6 @@
             "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.",
             "location": "query",
             "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
         }
     },
     "protocol": "rest",
@@ -419,9 +419,288 @@
             }
         }
     },
-    "revision": "20170930",
+    "revision": "20171014",
     "rootUrl": "https://androiddeviceprovisioning.googleapis.com/",
     "schemas": {
+        "DeviceClaim": {
+            "description": "Information about a device claimed for a partner.",
+            "id": "DeviceClaim",
+            "properties": {
+                "ownerCompanyId": {
+                    "description": "Owner ID.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "sectionType": {
+                    "description": "Section type of the device claim.",
+                    "enum": [
+                        "SECTION_TYPE_UNSPECIFIED",
+                        "SECTION_TYPE_ZERO_TOUCH"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified section type.",
+                        "Zero touch section type."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DevicesLongRunningOperationResponse": {
+            "description": "Long running operation response.",
+            "id": "DevicesLongRunningOperationResponse",
+            "properties": {
+                "successCount": {
+                    "description": "Number of succeesfully processed ones.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "perDeviceStatus": {
+                    "description": "Processing status for each device.\nOne `PerDeviceStatus` per device. The order is the same as in your requests.",
+                    "items": {
+                        "$ref": "OperationPerDevice"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "PerDeviceStatusInBatch": {
+            "description": "Stores the processing result for each device.",
+            "id": "PerDeviceStatusInBatch",
+            "properties": {
+                "errorMessage": {
+                    "description": "Error message.",
+                    "type": "string"
+                },
+                "deviceId": {
+                    "description": "Device ID of the device if process succeeds.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "status": {
+                    "description": "Process result.",
+                    "enum": [
+                        "SINGLE_DEVICE_STATUS_UNSPECIFIED",
+                        "SINGLE_DEVICE_STATUS_UNKNOWN_ERROR",
+                        "SINGLE_DEVICE_STATUS_OTHER_ERROR",
+                        "SINGLE_DEVICE_STATUS_SUCCESS",
+                        "SINGLE_DEVICE_STATUS_PERMISSION_DENIED",
+                        "SINGLE_DEVICE_STATUS_INVALID_DEVICE_IDENTIFIER",
+                        "SINGLE_DEVICE_STATUS_INVALID_SECTION_TYPE",
+                        "SINGLE_DEVICE_STATUS_SECTION_NOT_YOURS"
+                    ],
+                    "enumDescriptions": [
+                        "Invalid code. Shouldn't be used.",
+                        "Unknown error.\nWe don't expect this error to occur here.",
+                        "Other error.\nWe know/expect this error, but there's no defined error code for the\nerror.",
+                        "Success.",
+                        "Permission denied.",
+                        "Invalid device identifier.",
+                        "Invalid section type.",
+                        "This section is claimed by another company."
+                    ],
+                    "type": "string"
+                },
+                "errorIdentifier": {
+                    "description": "Error identifier.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "FindDevicesByOwnerRequest": {
+            "description": "Request to find devices by customers.",
+            "id": "FindDevicesByOwnerRequest",
+            "properties": {
+                "limit": {
+                    "description": "The number of devices to show in the result.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "pageToken": {
+                    "description": "Page token.",
+                    "type": "string"
+                },
+                "sectionType": {
+                    "description": "The section type.",
+                    "enum": [
+                        "SECTION_TYPE_UNSPECIFIED",
+                        "SECTION_TYPE_ZERO_TOUCH"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified section type.",
+                        "Zero touch section type."
+                    ],
+                    "type": "string"
+                },
+                "customerId": {
+                    "description": "List of customer IDs to search for.",
+                    "items": {
+                        "format": "int64",
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ClaimDevicesRequest": {
+            "description": "Request to claim devices asynchronously in batch.",
+            "id": "ClaimDevicesRequest",
+            "properties": {
+                "claims": {
+                    "description": "List of claims.",
+                    "items": {
+                        "$ref": "PartnerClaim"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "DeviceIdentifier": {
+            "description": "Identifies a unique device.",
+            "id": "DeviceIdentifier",
+            "properties": {
+                "serialNumber": {
+                    "description": "Serial number (optional).",
+                    "type": "string"
+                },
+                "imei": {
+                    "description": "IMEI number.",
+                    "type": "string"
+                },
+                "meid": {
+                    "description": "MEID number.",
+                    "type": "string"
+                },
+                "manufacturer": {
+                    "description": "Manufacturer name to match `android.os.Build.MANUFACTURER` (required).\nAllowed values listed in\n[manufacturer names](/zero-touch/resources/manufacturer-names).",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+            "id": "Operation",
+            "properties": {
+                "done": {
+                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+                    "type": "boolean"
+                },
+                "response": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "This field will contain a `DevicesLongRunningOperationResponse` object if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+                    "type": "string"
+                },
+                "error": {
+                    "$ref": "Status",
+                    "description": "This field will always be not set if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`. In this case, error information for each device is set in `response.perDeviceStatus.result.status`."
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "This field will contain a `DevicesLongRunningOperationMetadata` object if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "UnclaimDevicesRequest": {
+            "description": "Request to unclaim devices asynchronously in batch.",
+            "id": "UnclaimDevicesRequest",
+            "properties": {
+                "unclaims": {
+                    "description": "List of devices to unclaim.",
+                    "items": {
+                        "$ref": "PartnerUnclaim"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "FindDevicesByDeviceIdentifierRequest": {
+            "description": "Request to find devices.",
+            "id": "FindDevicesByDeviceIdentifierRequest",
+            "properties": {
+                "limit": {
+                    "description": "Number of devices to show.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "deviceIdentifier": {
+                    "$ref": "DeviceIdentifier",
+                    "description": "The device identifier to search."
+                },
+                "pageToken": {
+                    "description": "Page token.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+            "id": "Status",
+            "properties": {
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "OperationPerDevice": {
+            "description": "Operation the server received for every device.",
+            "id": "OperationPerDevice",
+            "properties": {
+                "updateMetadata": {
+                    "$ref": "UpdateMetadataArguments",
+                    "description": "Request to set metadata for a device."
+                },
+                "unclaim": {
+                    "$ref": "PartnerUnclaim",
+                    "description": "Request to unclaim a device."
+                },
+                "result": {
+                    "$ref": "PerDeviceStatusInBatch",
+                    "description": "Processing result for every device."
+                },
+                "claim": {
+                    "$ref": "PartnerClaim",
+                    "description": "Request to claim a device."
+                }
+            },
+            "type": "object"
+        },
         "FindDevicesByOwnerResponse": {
             "description": "Response containing found devices.",
             "id": "FindDevicesByOwnerResponse",
@@ -444,6 +723,11 @@
             "description": "Long running operation metadata.",
             "id": "DevicesLongRunningOperationMetadata",
             "properties": {
+                "devicesCount": {
+                    "description": "Number of devices parsed in your requests.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "processingStatus": {
                     "description": "The overall processing status.",
                     "enum": [
@@ -464,11 +748,6 @@
                     "description": "Processing progress from 0 to 100.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "devicesCount": {
-                    "description": "Number of devices parsed in your requests.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -477,6 +756,10 @@
             "description": "Request message to claim a device on behalf of a customer.",
             "id": "ClaimDeviceRequest",
             "properties": {
+                "deviceIdentifier": {
+                    "$ref": "DeviceIdentifier",
+                    "description": "The device identifier of the device to claim."
+                },
                 "sectionType": {
                     "description": "The section to claim.",
                     "enum": [
@@ -493,10 +776,6 @@
                     "description": "The customer to claim for.",
                     "format": "int64",
                     "type": "string"
-                },
-                "deviceIdentifier": {
-                    "$ref": "DeviceIdentifier",
-                    "description": "The device identifier of the device to claim."
                 }
             },
             "type": "object"
@@ -515,6 +794,36 @@
             },
             "type": "object"
         },
+        "ListCustomersResponse": {
+            "description": "Response message of all customers related to this partner.",
+            "id": "ListCustomersResponse",
+            "properties": {
+                "customers": {
+                    "description": "List of customers related to this partner.",
+                    "items": {
+                        "$ref": "Company"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ClaimDeviceResponse": {
+            "description": "Response message containing device id of the claim.",
+            "id": "ClaimDeviceResponse",
+            "properties": {
+                "deviceName": {
+                    "description": "The resource name of the device in the format\n`partners/[PARTNER_ID]/devices/[DEVICE_ID]`.",
+                    "type": "string"
+                },
+                "deviceId": {
+                    "description": "The device ID of the claimed device.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "UpdateMetadataArguments": {
             "description": "Identifies metdata updates to one device.",
             "id": "UpdateMetadataArguments",
@@ -535,44 +844,10 @@
             },
             "type": "object"
         },
-        "ClaimDeviceResponse": {
-            "description": "Response message containing device id of the claim.",
-            "id": "ClaimDeviceResponse",
-            "properties": {
-                "deviceId": {
-                    "description": "The device ID of the claimed device.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "deviceName": {
-                    "description": "The resource name of the device in the format\n`partners/[PARTNER_ID]/devices/[DEVICE_ID]`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListCustomersResponse": {
-            "description": "Response message of all customers related to this partner.",
-            "id": "ListCustomersResponse",
-            "properties": {
-                "customers": {
-                    "description": "List of customers related to this partner.",
-                    "items": {
-                        "$ref": "Company"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "Device": {
             "description": "An Android device.",
             "id": "Device",
             "properties": {
-                "configuration": {
-                    "description": "The resource name of the configuration.\nOnly set for customers.",
-                    "type": "string"
-                },
                 "claims": {
                     "description": "Claims.",
                     "items": {
@@ -596,6 +871,10 @@
                     "description": "Device ID.",
                     "format": "int64",
                     "type": "string"
+                },
+                "configuration": {
+                    "description": "The resource name of the configuration.\nOnly set for customers.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -615,6 +894,13 @@
             "description": "A customer resource in the zero-touch enrollment API.",
             "id": "Company",
             "properties": {
+                "ownerEmails": {
+                    "description": "Input only. Email address of customer's users in the owner role. At least\none `owner_email` is required. Each email address must be associated with a\nGoogle Account. Owners share the same access as admins but can also add,\ndelete, and edit your organization's portal users.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
                 "companyId": {
                     "description": "Output only. The ID of the company. Assigned by the server.",
                     "format": "int64",
@@ -634,13 +920,6 @@
                         "type": "string"
                     },
                     "type": "array"
-                },
-                "ownerEmails": {
-                    "description": "Input only. Email address of customer's users in the owner role. At least\none `owner_email` is required. Each email address must be associated with a\nGoogle Account. Owners share the same access as admins but can also add,\ndelete, and edit your organization's portal users.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -781,285 +1060,6 @@
                 }
             },
             "type": "object"
-        },
-        "DeviceClaim": {
-            "description": "Information about a device claimed for a partner.",
-            "id": "DeviceClaim",
-            "properties": {
-                "sectionType": {
-                    "description": "Section type of the device claim.",
-                    "enum": [
-                        "SECTION_TYPE_UNSPECIFIED",
-                        "SECTION_TYPE_ZERO_TOUCH"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified section type.",
-                        "Zero touch section type."
-                    ],
-                    "type": "string"
-                },
-                "ownerCompanyId": {
-                    "description": "Owner ID.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "DevicesLongRunningOperationResponse": {
-            "description": "Long running operation response.",
-            "id": "DevicesLongRunningOperationResponse",
-            "properties": {
-                "successCount": {
-                    "description": "Number of succeesfully processed ones.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "perDeviceStatus": {
-                    "description": "Processing status for each device.\nOne `PerDeviceStatus` per device. The order is the same as in your requests.",
-                    "items": {
-                        "$ref": "OperationPerDevice"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "PerDeviceStatusInBatch": {
-            "description": "Stores the processing result for each device.",
-            "id": "PerDeviceStatusInBatch",
-            "properties": {
-                "errorIdentifier": {
-                    "description": "Error identifier.",
-                    "type": "string"
-                },
-                "errorMessage": {
-                    "description": "Error message.",
-                    "type": "string"
-                },
-                "deviceId": {
-                    "description": "Device ID of the device if process succeeds.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "status": {
-                    "description": "Process result.",
-                    "enum": [
-                        "SINGLE_DEVICE_STATUS_UNSPECIFIED",
-                        "SINGLE_DEVICE_STATUS_UNKNOWN_ERROR",
-                        "SINGLE_DEVICE_STATUS_OTHER_ERROR",
-                        "SINGLE_DEVICE_STATUS_SUCCESS",
-                        "SINGLE_DEVICE_STATUS_PERMISSION_DENIED",
-                        "SINGLE_DEVICE_STATUS_INVALID_DEVICE_IDENTIFIER",
-                        "SINGLE_DEVICE_STATUS_INVALID_SECTION_TYPE",
-                        "SINGLE_DEVICE_STATUS_SECTION_NOT_YOURS"
-                    ],
-                    "enumDescriptions": [
-                        "Invalid code. Shouldn't be used.",
-                        "Unknown error.\nWe don't expect this error to occur here.",
-                        "Other error.\nWe know/expect this error, but there's no defined error code for the\nerror.",
-                        "Success.",
-                        "Permission denied.",
-                        "Invalid device identifier.",
-                        "Invalid section type.",
-                        "This section is claimed by another company."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ClaimDevicesRequest": {
-            "description": "Request to claim devices asynchronously in batch.",
-            "id": "ClaimDevicesRequest",
-            "properties": {
-                "claims": {
-                    "description": "List of claims.",
-                    "items": {
-                        "$ref": "PartnerClaim"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "FindDevicesByOwnerRequest": {
-            "description": "Request to find devices by customers.",
-            "id": "FindDevicesByOwnerRequest",
-            "properties": {
-                "limit": {
-                    "description": "The number of devices to show in the result.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "pageToken": {
-                    "description": "Page token.",
-                    "type": "string"
-                },
-                "sectionType": {
-                    "description": "The section type.",
-                    "enum": [
-                        "SECTION_TYPE_UNSPECIFIED",
-                        "SECTION_TYPE_ZERO_TOUCH"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified section type.",
-                        "Zero touch section type."
-                    ],
-                    "type": "string"
-                },
-                "customerId": {
-                    "description": "List of customer IDs to search for.",
-                    "items": {
-                        "format": "int64",
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Operation": {
-            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
-            "id": "Operation",
-            "properties": {
-                "done": {
-                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
-                    "type": "boolean"
-                },
-                "response": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "This field will contain a `DevicesLongRunningOperationResponse` object if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
-                    "type": "string"
-                },
-                "error": {
-                    "$ref": "Status",
-                    "description": "This field will always be not set if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`. In this case, error information for each device is set in `response.perDeviceStatus.result.status`."
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "This field will contain a `DevicesLongRunningOperationMetadata` object if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "DeviceIdentifier": {
-            "description": "Identifies a unique device.",
-            "id": "DeviceIdentifier",
-            "properties": {
-                "imei": {
-                    "description": "IMEI number.",
-                    "type": "string"
-                },
-                "meid": {
-                    "description": "MEID number.",
-                    "type": "string"
-                },
-                "manufacturer": {
-                    "description": "Manufacturer name to match `android.os.Build.MANUFACTURER` (required).\nAllowed values listed in\n[manufacturer names](/zero-touch/resources/manufacturer-names).",
-                    "type": "string"
-                },
-                "serialNumber": {
-                    "description": "Serial number (optional).",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UnclaimDevicesRequest": {
-            "description": "Request to unclaim devices asynchronously in batch.",
-            "id": "UnclaimDevicesRequest",
-            "properties": {
-                "unclaims": {
-                    "description": "List of devices to unclaim.",
-                    "items": {
-                        "$ref": "PartnerUnclaim"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "FindDevicesByDeviceIdentifierRequest": {
-            "description": "Request to find devices.",
-            "id": "FindDevicesByDeviceIdentifierRequest",
-            "properties": {
-                "pageToken": {
-                    "description": "Page token.",
-                    "type": "string"
-                },
-                "limit": {
-                    "description": "Number of devices to show.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "deviceIdentifier": {
-                    "$ref": "DeviceIdentifier",
-                    "description": "The device identifier to search."
-                }
-            },
-            "type": "object"
-        },
-        "Status": {
-            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
-            "id": "Status",
-            "properties": {
-                "details": {
-                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                },
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "OperationPerDevice": {
-            "description": "Operation the server received for every device.",
-            "id": "OperationPerDevice",
-            "properties": {
-                "updateMetadata": {
-                    "$ref": "UpdateMetadataArguments",
-                    "description": "Request to set metadata for a device."
-                },
-                "unclaim": {
-                    "$ref": "PartnerUnclaim",
-                    "description": "Request to unclaim a device."
-                },
-                "result": {
-                    "$ref": "PerDeviceStatusInBatch",
-                    "description": "Processing result for every device."
-                },
-                "claim": {
-                    "$ref": "PartnerClaim",
-                    "description": "Request to claim a device."
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/androidenterprise__v1.json b/discovery/googleapis/androidenterprise__v1.json
index 6747599..2529498 100644
--- a/discovery/googleapis/androidenterprise__v1.json
+++ b/discovery/googleapis/androidenterprise__v1.json
@@ -15,7 +15,7 @@
     "description": "Manages the deployment of apps to Android for Work users.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/android/work/play/emm-api",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/7UslSb60TeW6KI2iSku03nsKFWw\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/TsxbKgj7gojF26M-3IrSBWAaJbQ\"",
     "icons": {
         "x16": "https://www.google.com/images/icons/product/android-16.png",
         "x32": "https://www.google.com/images/icons/product/android-32.png"
@@ -2653,7 +2653,7 @@
             }
         }
     },
-    "revision": "20170929",
+    "revision": "20171011",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Administrator": {
@@ -3074,7 +3074,7 @@
             "type": "object"
         },
         "GroupLicense": {
-            "description": "Group license objects allow you to keep track of licenses (called entitlements) for both free and paid apps. For a free app, a group license is created when an enterprise admin first approves the product in Google Play or when the first entitlement for the product is created for a user via the API. For a paid app, a group license object is only created when an enterprise admin purchases the product in Google Play for the first time.\n\nUse the API to query group licenses. A Grouplicenses resource includes the total number of licenses purchased (paid apps only) and the total number of licenses currently in use. Iyn other words, the total number of Entitlements that exist for the product.\n\nOnly one group license object is created per product and group license objects are never deleted. If a product is unapproved, its group license remains. This allows enterprise admins to keep track of any remaining entitlements for the product.",
+            "description": "Group license objects allow you to keep track of licenses (called entitlements) for both free and paid apps. For a free app, a group license is created when an enterprise admin first approves the product in Google Play or when the first entitlement for the product is created for a user via the API. For a paid app, a group license object is only created when an enterprise admin purchases the product in Google Play for the first time.\n\nUse the API to query group licenses. A Grouplicenses resource includes the total number of licenses purchased (paid apps only) and the total number of licenses currently in use. In other words, the total number of Entitlements that exist for the product.\n\nOnly one group license object is created per product and group license objects are never deleted. If a product is unapproved, its group license remains. This allows enterprise admins to keep track of any remaining entitlements for the product.",
             "id": "GroupLicense",
             "properties": {
                 "acquisitionKind": {
@@ -3668,7 +3668,7 @@
                     "type": "string"
                 },
                 "productVisibility": {
-                    "description": "Other products that are part of the set, in addition to those specified in the productId array. The only difference between this field and the productId array is that it's possible to specify additional information about this product visibility, see ProductVisibility and its fields for more information. Specifying the same product ID both here and in the productId array is not allowed and it will result in an error.",
+                    "description": "Additional list of product IDs making up the product set. Unlike the productID array, in this list It's possible to specify which tracks (alpha, beta, production) of a product are visible to the user. See ProductVisibility and its fields for more information. Specifying the same product ID both here and in the productId array is not allowed and it will result in an error.",
                     "items": {
                         "$ref": "ProductVisibility"
                     },
@@ -3696,11 +3696,11 @@
             "id": "ProductVisibility",
             "properties": {
                 "productId": {
-                    "description": "The product ID that should be made visible to the user. This is required.",
+                    "description": "The product ID to make visible to the user. Required for each item in the productVisibility list.",
                     "type": "string"
                 },
                 "tracks": {
-                    "description": "This allows to only grant visibility to the specified tracks of the app. For example, if an app has a prod version, a beta version and an alpha version and the enterprise has been granted visibility to both the alpha and beta tracks, if tracks is {\"beta\", \"production\"} the user will be able to install the app and they will get the beta version of the app. If there are no app versions in the specified track or if the enterprise wasn't granted visibility for the track, adding the \"alpha\" and \"beta\" values to the list of tracks will have no effect for now; however they will take effect once both conditions are met. Note that the enterprise itself needs to be granted access to the alpha and/or beta tracks, regardless of whether individual users or admins have access to those tracks.\n\nThe allowed sets are: {} (considered equivalent to {\"production\"}) {\"production\"} {\"beta\", \"production\"} {\"alpha\", \"beta\", \"production\"} The order of elements is not relevant. Any other set of tracks will be rejected with an error.",
+                    "description": "Grants visibility to the specified track(s) of the product to the user. The track available to the user is based on the following order of preference: alpha, beta, production. For example, if an app has a prod version, a beta version and an alpha version and the enterprise has been granted visibility to both the alpha and beta tracks, if tracks is {\"beta\", \"production\"} the user will be able to install the app and they will get the beta version of the app. If there are no app versions in the specified track adding the \"alpha\" and \"beta\" values to the list of tracks will have no effect. Note that the enterprise requires access to alpha and/or beta tracks before users can be granted visibility to apps in those tracks.\n\nThe allowed sets are: {} (considered equivalent to {\"production\"}) {\"production\"} {\"beta\", \"production\"} {\"alpha\", \"beta\", \"production\"} The order of elements is not relevant. Any other set of tracks will be rejected with an error.",
                     "items": {
                         "type": "string"
                     },
diff --git a/discovery/googleapis/androidmanagement__v1.json b/discovery/googleapis/androidmanagement__v1.json
index 8fc2f44..f5ed714 100644
--- a/discovery/googleapis/androidmanagement__v1.json
+++ b/discovery/googleapis/androidmanagement__v1.json
@@ -744,7 +744,7 @@
             }
         }
     },
-    "revision": "20170925",
+    "revision": "20171009",
     "rootUrl": "https://androidmanagement.googleapis.com/",
     "schemas": {
         "Device": {
@@ -752,7 +752,7 @@
             "id": "Device",
             "properties": {
                 "userName": {
-                    "description": "The resource name of the user of the device in the form enterprises/{enterpriseId}/users/{userId}. This is the name of the device account automatically created for this device.",
+                    "description": "The resource name of the user that owns this device in the form enterprises/{enterpriseId}/users/{userId}.",
                     "type": "string"
                 },
                 "disabledReason": {
@@ -760,7 +760,7 @@
                     "description": "If the device state is DISABLED, an optional message that is displayed on the device indicating the reason the device is disabled. This field may be modified by an update request."
                 },
                 "policyName": {
-                    "description": "The name of the policy that is intended to be applied to the device. If empty, the policy with id default is applied. This field may be modified by an update request. The name of the policy is in the form enterprises/{enterpriseId}/policies/{policyId}. It is also permissible to only specify the policyId when updating this field as long as the policyId contains no slashes since the rest of the policy name can be inferred from context.",
+                    "description": "The name of the policy that is intended to be applied to the device. If empty, the policy_name for the user that owns this device is applied. This field may be modified by an update request. The name of the policy is in the form enterprises/{enterpriseId}/policies/{policyId}. It is also permissible to only specify the policyId when updating this field as long as the policyId contains no slashes since the rest of the policy name can be inferred from context.",
                     "type": "string"
                 },
                 "lastPolicyComplianceReportTime": {
@@ -1490,7 +1490,7 @@
                 },
                 "systemUpdate": {
                     "$ref": "SystemUpdate",
-                    "description": "The system update policy, which controls how OS updates are applied. If the update type is WINDOWED and the device has a device account, the update window will automatically apply to Play app updates as well."
+                    "description": "The system update policy, which controls how OS updates are applied. If the update type is WINDOWED, the update window will automatically apply to Play app updates as well."
                 },
                 "frpAdminEmails": {
                     "description": "Email addresses of device administrators for factory reset protection. When the device is factory reset, it will require one of these admins to log in with the Google account email and password to unlock the device. If no admins are specified, the device will not provide factory reset protection.",
@@ -1722,7 +1722,7 @@
                     "type": "string"
                 },
                 "policyName": {
-                    "description": "The name of the policy that will be initially applied to the enrolled device in the form enterprises/{enterpriseId}/policies/{policyId}. If not specified, the policy with id default is applied. It is permissible to only specify the policyId when updating this field as long as the policyId contains no slashes since the rest of the policy name can be inferred from context.",
+                    "description": "The name of the policy that will be initially applied to the enrolled device in the form enterprises/{enterpriseId}/policies/{policyId}. If not specified, the policy_name for the user that owns the device is applied. If user_name also isn't specified, the policy defaults to enterprises/{enterpriseId}/policies/default. It is permissible to only specify the policyId when updating this field as long as the policyId contains no slashes since the rest of the policy name can be inferred from context.",
                     "type": "string"
                 },
                 "name": {
@@ -2260,7 +2260,7 @@
                     "enumDescriptions": [
                         "Follow the default update behavior for the device, which typically requires the user to accept system updates.",
                         "Install automatically as soon as an update is available.",
-                        "Install automatically within a daily maintenance window. If the device has a device account, this also configures Play apps to be updated within the window. This is strongly recommended for kiosk devices because this is the only way apps persistently pinned to the foreground can be updated by Play.",
+                        "Install automatically within a daily maintenance window. This also configures Play apps to be updated within the window. This is strongly recommended for kiosk devices because this is the only way apps persistently pinned to the foreground can be updated by Play.",
                         "Postpone automatic install up to a maximum of 30 days."
                     ],
                     "type": "string"
diff --git a/discovery/googleapis/appengine__v1.json b/discovery/googleapis/appengine__v1.json
index 28668fe..530fd78 100644
--- a/discovery/googleapis/appengine__v1.json
+++ b/discovery/googleapis/appengine__v1.json
@@ -2,14 +2,14 @@
     "auth": {
         "oauth2": {
             "scopes": {
+                "https://www.googleapis.com/auth/appengine.admin": {
+                    "description": "View and manage your applications deployed on Google App Engine"
+                },
                 "https://www.googleapis.com/auth/cloud-platform.read-only": {
                     "description": "View your data across Google Cloud Platform services"
                 },
                 "https://www.googleapis.com/auth/cloud-platform": {
                     "description": "View and manage your data across Google Cloud Platform services"
-                },
-                "https://www.googleapis.com/auth/appengine.admin": {
-                    "description": "View and manage your applications deployed on Google App Engine"
                 }
             }
         }
@@ -30,17 +30,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
         "fields": {
             "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
@@ -85,13 +74,13 @@
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
@@ -115,6 +104,17 @@
             "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
         }
     },
     "protocol": "rest",
@@ -223,978 +223,8 @@
                 }
             },
             "resources": {
-                "locations": {
-                    "methods": {
-                        "get": {
-                            "description": "Get information about a location.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.locations.get",
-                            "parameterOrder": [
-                                "appsId",
-                                "locationsId"
-                            ],
-                            "parameters": {
-                                "appsId": {
-                                    "description": "Part of `name`. Resource name for the location.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "locationsId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/apps/{appsId}/locations/{locationsId}",
-                            "response": {
-                                "$ref": "Location"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists information about the supported locations for this service.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.locations.list",
-                            "parameterOrder": [
-                                "appsId"
-                            ],
-                            "parameters": {
-                                "filter": {
-                                    "description": "The standard list filter.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "The standard list page token.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `name`. The resource that owns the locations collection, if applicable.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "The standard list page size.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v1/apps/{appsId}/locations",
-                            "response": {
-                                "$ref": "ListLocationsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        }
-                    }
-                },
-                "authorizedCertificates": {
-                    "methods": {
-                        "create": {
-                            "description": "Uploads the specified SSL certificate.",
-                            "httpMethod": "POST",
-                            "id": "appengine.apps.authorizedCertificates.create",
-                            "parameterOrder": [
-                                "appsId"
-                            ],
-                            "parameters": {
-                                "appsId": {
-                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/apps/{appsId}/authorizedCertificates",
-                            "request": {
-                                "$ref": "AuthorizedCertificate"
-                            },
-                            "response": {
-                                "$ref": "AuthorizedCertificate"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "delete": {
-                            "description": "Deletes the specified SSL certificate.",
-                            "httpMethod": "DELETE",
-                            "id": "appengine.apps.authorizedCertificates.delete",
-                            "parameterOrder": [
-                                "appsId",
-                                "authorizedCertificatesId"
-                            ],
-                            "parameters": {
-                                "authorizedCertificatesId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/authorizedCertificates/12345.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "patch": {
-                            "description": "Updates the specified SSL certificate. To renew a certificate and maintain its existing domain mappings, update certificate_data with a new certificate. The new certificate must be applicable to the same domains as the original certificate. The certificate display_name may also be updated.",
-                            "httpMethod": "PATCH",
-                            "id": "appengine.apps.authorizedCertificates.patch",
-                            "parameterOrder": [
-                                "appsId",
-                                "authorizedCertificatesId"
-                            ],
-                            "parameters": {
-                                "authorizedCertificatesId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "updateMask": {
-                                    "description": "Standard field mask for the set of fields to be updated. Updates are only supported on the certificate_raw_data and display_name fields.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/authorizedCertificates/12345.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}",
-                            "request": {
-                                "$ref": "AuthorizedCertificate"
-                            },
-                            "response": {
-                                "$ref": "AuthorizedCertificate"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets the specified SSL certificate.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.authorizedCertificates.get",
-                            "parameterOrder": [
-                                "appsId",
-                                "authorizedCertificatesId"
-                            ],
-                            "parameters": {
-                                "authorizedCertificatesId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/authorizedCertificates/12345.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "view": {
-                                    "description": "Controls the set of fields returned in the GET response.",
-                                    "enum": [
-                                        "BASIC_CERTIFICATE",
-                                        "FULL_CERTIFICATE"
-                                    ],
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}",
-                            "response": {
-                                "$ref": "AuthorizedCertificate"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists all SSL certificates the user is authorized to administer.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.authorizedCertificates.list",
-                            "parameterOrder": [
-                                "appsId"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "Continuation token for fetching the next page of results.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Maximum results to return per page.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "view": {
-                                    "description": "Controls the set of fields returned in the LIST response.",
-                                    "enum": [
-                                        "BASIC_CERTIFICATE",
-                                        "FULL_CERTIFICATE"
-                                    ],
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/apps/{appsId}/authorizedCertificates",
-                            "response": {
-                                "$ref": "ListAuthorizedCertificatesResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        }
-                    }
-                },
-                "services": {
-                    "methods": {
-                        "delete": {
-                            "description": "Deletes the specified service and all enclosed versions.",
-                            "httpMethod": "DELETE",
-                            "id": "appengine.apps.services.delete",
-                            "parameterOrder": [
-                                "appsId",
-                                "servicesId"
-                            ],
-                            "parameters": {
-                                "servicesId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/apps/{appsId}/services/{servicesId}",
-                            "response": {
-                                "$ref": "Operation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "patch": {
-                            "description": "Updates the configuration of the specified service.",
-                            "httpMethod": "PATCH",
-                            "id": "appengine.apps.services.patch",
-                            "parameterOrder": [
-                                "appsId",
-                                "servicesId"
-                            ],
-                            "parameters": {
-                                "updateMask": {
-                                    "description": "Standard field mask for the set of fields to be updated.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "servicesId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "migrateTraffic": {
-                                    "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services#shardby) field in the Service resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see Migrating and Splitting Traffic (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).",
-                                    "location": "query",
-                                    "type": "boolean"
-                                }
-                            },
-                            "path": "v1/apps/{appsId}/services/{servicesId}",
-                            "request": {
-                                "$ref": "Service"
-                            },
-                            "response": {
-                                "$ref": "Operation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets the current configuration of the specified service.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.services.get",
-                            "parameterOrder": [
-                                "appsId",
-                                "servicesId"
-                            ],
-                            "parameters": {
-                                "servicesId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/apps/{appsId}/services/{servicesId}",
-                            "response": {
-                                "$ref": "Service"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists all the services in the application.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.services.list",
-                            "parameterOrder": [
-                                "appsId"
-                            ],
-                            "parameters": {
-                                "pageSize": {
-                                    "description": "Maximum results to return per page.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "pageToken": {
-                                    "description": "Continuation token for fetching the next page of results.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/apps/{appsId}/services",
-                            "response": {
-                                "$ref": "ListServicesResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        }
-                    },
-                    "resources": {
-                        "versions": {
-                            "methods": {
-                                "delete": {
-                                    "description": "Deletes an existing Version resource.",
-                                    "httpMethod": "DELETE",
-                                    "id": "appengine.apps.services.versions.delete",
-                                    "parameterOrder": [
-                                        "appsId",
-                                        "servicesId",
-                                        "versionsId"
-                                    ],
-                                    "parameters": {
-                                        "servicesId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "appsId": {
-                                            "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "versionsId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
-                                    "response": {
-                                        "$ref": "Operation"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "patch": {
-                                    "description": "Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses:\nserving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.serving_status):  For Version resources that use basic scaling, manual scaling, or run in  the App Engine flexible environment.\ninstance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.instance_class):  For Version resources that run in the App Engine standard environment.\nautomatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine standard environment.\nautomatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine standard environment.\nautomatic_scaling.min_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.\nautomatic_scaling.max_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.\nautomatic_scaling.cool_down_period_sec (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.\nautomatic_scaling.cpu_utilization.target_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.",
-                                    "httpMethod": "PATCH",
-                                    "id": "appengine.apps.services.versions.patch",
-                                    "parameterOrder": [
-                                        "appsId",
-                                        "servicesId",
-                                        "versionsId"
-                                    ],
-                                    "parameters": {
-                                        "versionsId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "updateMask": {
-                                            "description": "Standard field mask for the set of fields to be updated.",
-                                            "format": "google-fieldmask",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "servicesId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "appsId": {
-                                            "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default/versions/1.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
-                                    "request": {
-                                        "$ref": "Version"
-                                    },
-                                    "response": {
-                                        "$ref": "Operation"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "get": {
-                                    "description": "Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.",
-                                    "httpMethod": "GET",
-                                    "id": "appengine.apps.services.versions.get",
-                                    "parameterOrder": [
-                                        "appsId",
-                                        "servicesId",
-                                        "versionsId"
-                                    ],
-                                    "parameters": {
-                                        "servicesId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "appsId": {
-                                            "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "view": {
-                                            "description": "Controls the set of fields returned in the Get response.",
-                                            "enum": [
-                                                "BASIC",
-                                                "FULL"
-                                            ],
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "versionsId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
-                                    "response": {
-                                        "$ref": "Version"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/appengine.admin",
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                    ]
-                                },
-                                "list": {
-                                    "description": "Lists the versions of a service.",
-                                    "httpMethod": "GET",
-                                    "id": "appengine.apps.services.versions.list",
-                                    "parameterOrder": [
-                                        "appsId",
-                                        "servicesId"
-                                    ],
-                                    "parameters": {
-                                        "servicesId": {
-                                            "description": "Part of `parent`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "pageToken": {
-                                            "description": "Continuation token for fetching the next page of results.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "appsId": {
-                                            "description": "Part of `parent`. Name of the parent Service resource. Example: apps/myapp/services/default.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Maximum results to return per page.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "view": {
-                                            "description": "Controls the set of fields returned in the List response.",
-                                            "enum": [
-                                                "BASIC",
-                                                "FULL"
-                                            ],
-                                            "location": "query",
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/apps/{appsId}/services/{servicesId}/versions",
-                                    "response": {
-                                        "$ref": "ListVersionsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/appengine.admin",
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                    ]
-                                },
-                                "create": {
-                                    "description": "Deploys code and resource files to a new version.",
-                                    "httpMethod": "POST",
-                                    "id": "appengine.apps.services.versions.create",
-                                    "parameterOrder": [
-                                        "appsId",
-                                        "servicesId"
-                                    ],
-                                    "parameters": {
-                                        "servicesId": {
-                                            "description": "Part of `parent`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "appsId": {
-                                            "description": "Part of `parent`. Name of the parent resource to create this version under. Example: apps/myapp/services/default.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/apps/{appsId}/services/{servicesId}/versions",
-                                    "request": {
-                                        "$ref": "Version"
-                                    },
-                                    "response": {
-                                        "$ref": "Operation"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                }
-                            },
-                            "resources": {
-                                "instances": {
-                                    "methods": {
-                                        "debug": {
-                                            "description": "Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in \"debug mode\", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.",
-                                            "httpMethod": "POST",
-                                            "id": "appengine.apps.services.versions.instances.debug",
-                                            "parameterOrder": [
-                                                "appsId",
-                                                "servicesId",
-                                                "versionsId",
-                                                "instancesId"
-                                            ],
-                                            "parameters": {
-                                                "instancesId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "appsId": {
-                                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "versionsId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "servicesId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}:debug",
-                                            "request": {
-                                                "$ref": "DebugInstanceRequest"
-                                            },
-                                            "response": {
-                                                "$ref": "Operation"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform"
-                                            ]
-                                        },
-                                        "delete": {
-                                            "description": "Stops a running instance.",
-                                            "httpMethod": "DELETE",
-                                            "id": "appengine.apps.services.versions.instances.delete",
-                                            "parameterOrder": [
-                                                "appsId",
-                                                "servicesId",
-                                                "versionsId",
-                                                "instancesId"
-                                            ],
-                                            "parameters": {
-                                                "versionsId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "servicesId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "instancesId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "appsId": {
-                                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}",
-                                            "response": {
-                                                "$ref": "Operation"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform"
-                                            ]
-                                        },
-                                        "get": {
-                                            "description": "Gets instance information.",
-                                            "httpMethod": "GET",
-                                            "id": "appengine.apps.services.versions.instances.get",
-                                            "parameterOrder": [
-                                                "appsId",
-                                                "servicesId",
-                                                "versionsId",
-                                                "instancesId"
-                                            ],
-                                            "parameters": {
-                                                "servicesId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "instancesId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "appsId": {
-                                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "versionsId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}",
-                                            "response": {
-                                                "$ref": "Instance"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/appengine.admin",
-                                                "https://www.googleapis.com/auth/cloud-platform",
-                                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                            ]
-                                        },
-                                        "list": {
-                                            "description": "Lists the instances of a version.Tip: To aggregate details about instances over time, see the Stackdriver Monitoring API (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).",
-                                            "httpMethod": "GET",
-                                            "id": "appengine.apps.services.versions.instances.list",
-                                            "parameterOrder": [
-                                                "appsId",
-                                                "servicesId",
-                                                "versionsId"
-                                            ],
-                                            "parameters": {
-                                                "servicesId": {
-                                                    "description": "Part of `parent`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "pageToken": {
-                                                    "description": "Continuation token for fetching the next page of results.",
-                                                    "location": "query",
-                                                    "type": "string"
-                                                },
-                                                "appsId": {
-                                                    "description": "Part of `parent`. Name of the parent Version resource. Example: apps/myapp/services/default/versions/v1.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "pageSize": {
-                                                    "description": "Maximum results to return per page.",
-                                                    "format": "int32",
-                                                    "location": "query",
-                                                    "type": "integer"
-                                                },
-                                                "versionsId": {
-                                                    "description": "Part of `parent`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances",
-                                            "response": {
-                                                "$ref": "ListInstancesResponse"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/appengine.admin",
-                                                "https://www.googleapis.com/auth/cloud-platform",
-                                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                            ]
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                },
-                "authorizedDomains": {
-                    "methods": {
-                        "list": {
-                            "description": "Lists all domains the user is authorized to administer.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.authorizedDomains.list",
-                            "parameterOrder": [
-                                "appsId"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "Continuation token for fetching the next page of results.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Maximum results to return per page.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v1/apps/{appsId}/authorizedDomains",
-                            "response": {
-                                "$ref": "ListAuthorizedDomainsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        }
-                    }
-                },
-                "operations": {
-                    "methods": {
-                        "get": {
-                            "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.operations.get",
-                            "parameterOrder": [
-                                "appsId",
-                                "operationsId"
-                            ],
-                            "parameters": {
-                                "appsId": {
-                                    "description": "Part of `name`. The name of the operation resource.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "operationsId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/apps/{appsId}/operations/{operationsId}",
-                            "response": {
-                                "$ref": "Operation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.operations.list",
-                            "parameterOrder": [
-                                "appsId"
-                            ],
-                            "parameters": {
-                                "pageSize": {
-                                    "description": "The standard list page size.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "filter": {
-                                    "description": "The standard list filter.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "The standard list page token.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `name`. The name of the operation's parent resource.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/apps/{appsId}/operations",
-                            "response": {
-                                "$ref": "ListOperationsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        }
-                    }
-                },
                 "domainMappings": {
                     "methods": {
-                        "delete": {
-                            "description": "Deletes the specified domain mapping. A user must be authorized to administer the associated domain in order to delete a DomainMapping resource.",
-                            "httpMethod": "DELETE",
-                            "id": "appengine.apps.domainMappings.delete",
-                            "parameterOrder": [
-                                "appsId",
-                                "domainMappingsId"
-                            ],
-                            "parameters": {
-                                "domainMappingsId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/domainMappings/example.com.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/apps/{appsId}/domainMappings/{domainMappingsId}",
-                            "response": {
-                                "$ref": "Operation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
                         "patch": {
                             "description": "Updates the specified domain mapping. To map an SSL certificate to a domain mapping, update certificate_id to point to an AuthorizedCertificate resource. A user must be authorized to administer the associated domain in order to update a DomainMapping resource.",
                             "httpMethod": "PATCH",
@@ -1327,6 +357,36 @@
                             "scopes": [
                                 "https://www.googleapis.com/auth/cloud-platform"
                             ]
+                        },
+                        "delete": {
+                            "description": "Deletes the specified domain mapping. A user must be authorized to administer the associated domain in order to delete a DomainMapping resource.",
+                            "httpMethod": "DELETE",
+                            "id": "appengine.apps.domainMappings.delete",
+                            "parameterOrder": [
+                                "appsId",
+                                "domainMappingsId"
+                            ],
+                            "parameters": {
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/domainMappings/example.com.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "domainMappingsId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/apps/{appsId}/domainMappings/{domainMappingsId}",
+                            "response": {
+                                "$ref": "Operation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
                         }
                     }
                 },
@@ -1334,6 +394,47 @@
                     "resources": {
                         "ingressRules": {
                             "methods": {
+                                "list": {
+                                    "description": "Lists the firewall rules of an application.",
+                                    "httpMethod": "GET",
+                                    "id": "appengine.apps.firewall.ingressRules.list",
+                                    "parameterOrder": [
+                                        "appsId"
+                                    ],
+                                    "parameters": {
+                                        "pageToken": {
+                                            "description": "Continuation token for fetching the next page of results.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "appsId": {
+                                            "description": "Part of `parent`. Name of the Firewall collection to retrieve. Example: apps/myapp/firewall/ingressRules.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Maximum results to return per page.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "matchingAddress": {
+                                            "description": "A valid IP Address. If set, only rules matching this address will be returned. The first returned rule will be the rule that fires on requests from this IP.",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/apps/{appsId}/firewall/ingressRules",
+                                    "response": {
+                                        "$ref": "ListIngressRulesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/appengine.admin",
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                    ]
+                                },
                                 "create": {
                                     "description": "Creates a firewall rule for the application.",
                                     "httpMethod": "POST",
@@ -1401,6 +502,12 @@
                                         "ingressRulesId"
                                     ],
                                     "parameters": {
+                                        "appsId": {
+                                            "description": "Part of `name`. Name of the Firewall resource to update. Example: apps/myapp/firewall/ingressRules/100.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
                                         "ingressRulesId": {
                                             "description": "Part of `name`. See documentation of `appsId`.",
                                             "location": "path",
@@ -1412,12 +519,6 @@
                                             "format": "google-fieldmask",
                                             "location": "query",
                                             "type": "string"
-                                        },
-                                        "appsId": {
-                                            "description": "Part of `name`. Name of the Firewall resource to update. Example: apps/myapp/firewall/ingressRules/100.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
                                         }
                                     },
                                     "path": "v1/apps/{appsId}/firewall/ingressRules/{ingressRulesId}",
@@ -1486,22 +587,574 @@
                                     "scopes": [
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
+                                }
+                            }
+                        }
+                    }
+                },
+                "locations": {
+                    "methods": {
+                        "get": {
+                            "description": "Get information about a location.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.locations.get",
+                            "parameterOrder": [
+                                "appsId",
+                                "locationsId"
+                            ],
+                            "parameters": {
+                                "locationsId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
                                 },
-                                "list": {
-                                    "description": "Lists the firewall rules of an application.",
-                                    "httpMethod": "GET",
-                                    "id": "appengine.apps.firewall.ingressRules.list",
+                                "appsId": {
+                                    "description": "Part of `name`. Resource name for the location.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/apps/{appsId}/locations/{locationsId}",
+                            "response": {
+                                "$ref": "Location"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists information about the supported locations for this service.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.locations.list",
+                            "parameterOrder": [
+                                "appsId"
+                            ],
+                            "parameters": {
+                                "pageToken": {
+                                    "description": "The standard list page token.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "appsId": {
+                                    "description": "Part of `name`. The resource that owns the locations collection, if applicable.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The standard list page size.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filter": {
+                                    "description": "The standard list filter.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/apps/{appsId}/locations",
+                            "response": {
+                                "$ref": "ListLocationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        }
+                    }
+                },
+                "authorizedCertificates": {
+                    "methods": {
+                        "delete": {
+                            "description": "Deletes the specified SSL certificate.",
+                            "httpMethod": "DELETE",
+                            "id": "appengine.apps.authorizedCertificates.delete",
+                            "parameterOrder": [
+                                "appsId",
+                                "authorizedCertificatesId"
+                            ],
+                            "parameters": {
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/authorizedCertificates/12345.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "authorizedCertificatesId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "patch": {
+                            "description": "Updates the specified SSL certificate. To renew a certificate and maintain its existing domain mappings, update certificate_data with a new certificate. The new certificate must be applicable to the same domains as the original certificate. The certificate display_name may also be updated.",
+                            "httpMethod": "PATCH",
+                            "id": "appengine.apps.authorizedCertificates.patch",
+                            "parameterOrder": [
+                                "appsId",
+                                "authorizedCertificatesId"
+                            ],
+                            "parameters": {
+                                "authorizedCertificatesId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "updateMask": {
+                                    "description": "Standard field mask for the set of fields to be updated. Updates are only supported on the certificate_raw_data and display_name fields.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/authorizedCertificates/12345.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}",
+                            "request": {
+                                "$ref": "AuthorizedCertificate"
+                            },
+                            "response": {
+                                "$ref": "AuthorizedCertificate"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets the specified SSL certificate.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.authorizedCertificates.get",
+                            "parameterOrder": [
+                                "appsId",
+                                "authorizedCertificatesId"
+                            ],
+                            "parameters": {
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/authorizedCertificates/12345.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "view": {
+                                    "description": "Controls the set of fields returned in the GET response.",
+                                    "enum": [
+                                        "BASIC_CERTIFICATE",
+                                        "FULL_CERTIFICATE"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "authorizedCertificatesId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}",
+                            "response": {
+                                "$ref": "AuthorizedCertificate"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists all SSL certificates the user is authorized to administer.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.authorizedCertificates.list",
+                            "parameterOrder": [
+                                "appsId"
+                            ],
+                            "parameters": {
+                                "view": {
+                                    "description": "Controls the set of fields returned in the LIST response.",
+                                    "enum": [
+                                        "BASIC_CERTIFICATE",
+                                        "FULL_CERTIFICATE"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Continuation token for fetching the next page of results.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "appsId": {
+                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Maximum results to return per page.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v1/apps/{appsId}/authorizedCertificates",
+                            "response": {
+                                "$ref": "ListAuthorizedCertificatesResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        },
+                        "create": {
+                            "description": "Uploads the specified SSL certificate.",
+                            "httpMethod": "POST",
+                            "id": "appengine.apps.authorizedCertificates.create",
+                            "parameterOrder": [
+                                "appsId"
+                            ],
+                            "parameters": {
+                                "appsId": {
+                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/apps/{appsId}/authorizedCertificates",
+                            "request": {
+                                "$ref": "AuthorizedCertificate"
+                            },
+                            "response": {
+                                "$ref": "AuthorizedCertificate"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    }
+                },
+                "services": {
+                    "methods": {
+                        "delete": {
+                            "description": "Deletes the specified service and all enclosed versions.",
+                            "httpMethod": "DELETE",
+                            "id": "appengine.apps.services.delete",
+                            "parameterOrder": [
+                                "appsId",
+                                "servicesId"
+                            ],
+                            "parameters": {
+                                "servicesId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/apps/{appsId}/services/{servicesId}",
+                            "response": {
+                                "$ref": "Operation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "patch": {
+                            "description": "Updates the configuration of the specified service.",
+                            "httpMethod": "PATCH",
+                            "id": "appengine.apps.services.patch",
+                            "parameterOrder": [
+                                "appsId",
+                                "servicesId"
+                            ],
+                            "parameters": {
+                                "updateMask": {
+                                    "description": "Standard field mask for the set of fields to be updated.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "servicesId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "migrateTraffic": {
+                                    "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services#shardby) field in the Service resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see Migrating and Splitting Traffic (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).",
+                                    "location": "query",
+                                    "type": "boolean"
+                                }
+                            },
+                            "path": "v1/apps/{appsId}/services/{servicesId}",
+                            "request": {
+                                "$ref": "Service"
+                            },
+                            "response": {
+                                "$ref": "Operation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets the current configuration of the specified service.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.services.get",
+                            "parameterOrder": [
+                                "appsId",
+                                "servicesId"
+                            ],
+                            "parameters": {
+                                "servicesId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/apps/{appsId}/services/{servicesId}",
+                            "response": {
+                                "$ref": "Service"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists all the services in the application.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.services.list",
+                            "parameterOrder": [
+                                "appsId"
+                            ],
+                            "parameters": {
+                                "pageToken": {
+                                    "description": "Continuation token for fetching the next page of results.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "appsId": {
+                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Maximum results to return per page.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v1/apps/{appsId}/services",
+                            "response": {
+                                "$ref": "ListServicesResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        }
+                    },
+                    "resources": {
+                        "versions": {
+                            "methods": {
+                                "delete": {
+                                    "description": "Deletes an existing Version resource.",
+                                    "httpMethod": "DELETE",
+                                    "id": "appengine.apps.services.versions.delete",
                                     "parameterOrder": [
-                                        "appsId"
+                                        "appsId",
+                                        "servicesId",
+                                        "versionsId"
                                     ],
                                     "parameters": {
+                                        "servicesId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "appsId": {
+                                            "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "versionsId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses:\nserving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.serving_status):  For Version resources that use basic scaling, manual scaling, or run in  the App Engine flexible environment.\ninstance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.instance_class):  For Version resources that run in the App Engine standard environment.\nautomatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine standard environment.\nautomatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine standard environment.\nautomatic_scaling.min_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.\nautomatic_scaling.max_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.\nautomatic_scaling.cool_down_period_sec (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.\nautomatic_scaling.cpu_utilization.target_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.",
+                                    "httpMethod": "PATCH",
+                                    "id": "appengine.apps.services.versions.patch",
+                                    "parameterOrder": [
+                                        "appsId",
+                                        "servicesId",
+                                        "versionsId"
+                                    ],
+                                    "parameters": {
+                                        "servicesId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "appsId": {
+                                            "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default/versions/1.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "versionsId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "Standard field mask for the set of fields to be updated.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
+                                    "request": {
+                                        "$ref": "Version"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.",
+                                    "httpMethod": "GET",
+                                    "id": "appengine.apps.services.versions.get",
+                                    "parameterOrder": [
+                                        "appsId",
+                                        "servicesId",
+                                        "versionsId"
+                                    ],
+                                    "parameters": {
+                                        "view": {
+                                            "description": "Controls the set of fields returned in the Get response.",
+                                            "enum": [
+                                                "BASIC",
+                                                "FULL"
+                                            ],
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "versionsId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "servicesId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "appsId": {
+                                            "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
+                                    "response": {
+                                        "$ref": "Version"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/appengine.admin",
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists the versions of a service.",
+                                    "httpMethod": "GET",
+                                    "id": "appengine.apps.services.versions.list",
+                                    "parameterOrder": [
+                                        "appsId",
+                                        "servicesId"
+                                    ],
+                                    "parameters": {
+                                        "servicesId": {
+                                            "description": "Part of `parent`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
                                         "pageToken": {
                                             "description": "Continuation token for fetching the next page of results.",
                                             "location": "query",
                                             "type": "string"
                                         },
                                         "appsId": {
-                                            "description": "Part of `parent`. Name of the Firewall collection to retrieve. Example: apps/myapp/firewall/ingressRules.",
+                                            "description": "Part of `parent`. Name of the parent Service resource. Example: apps/myapp/services/default.",
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
@@ -1512,51 +1165,898 @@
                                             "location": "query",
                                             "type": "integer"
                                         },
-                                        "matchingAddress": {
-                                            "description": "A valid IP Address. If set, only rules matching this address will be returned. The first returned rule will be the rule that fires on requests from this IP.",
+                                        "view": {
+                                            "description": "Controls the set of fields returned in the List response.",
+                                            "enum": [
+                                                "BASIC",
+                                                "FULL"
+                                            ],
                                             "location": "query",
                                             "type": "string"
                                         }
                                     },
-                                    "path": "v1/apps/{appsId}/firewall/ingressRules",
+                                    "path": "v1/apps/{appsId}/services/{servicesId}/versions",
                                     "response": {
-                                        "$ref": "ListIngressRulesResponse"
+                                        "$ref": "ListVersionsResponse"
                                     },
                                     "scopes": [
                                         "https://www.googleapis.com/auth/appengine.admin",
                                         "https://www.googleapis.com/auth/cloud-platform",
                                         "https://www.googleapis.com/auth/cloud-platform.read-only"
                                     ]
+                                },
+                                "create": {
+                                    "description": "Deploys code and resource files to a new version.",
+                                    "httpMethod": "POST",
+                                    "id": "appengine.apps.services.versions.create",
+                                    "parameterOrder": [
+                                        "appsId",
+                                        "servicesId"
+                                    ],
+                                    "parameters": {
+                                        "servicesId": {
+                                            "description": "Part of `parent`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "appsId": {
+                                            "description": "Part of `parent`. Name of the parent resource to create this version under. Example: apps/myapp/services/default.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/apps/{appsId}/services/{servicesId}/versions",
+                                    "request": {
+                                        "$ref": "Version"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            },
+                            "resources": {
+                                "instances": {
+                                    "methods": {
+                                        "delete": {
+                                            "description": "Stops a running instance.",
+                                            "httpMethod": "DELETE",
+                                            "id": "appengine.apps.services.versions.instances.delete",
+                                            "parameterOrder": [
+                                                "appsId",
+                                                "servicesId",
+                                                "versionsId",
+                                                "instancesId"
+                                            ],
+                                            "parameters": {
+                                                "instancesId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "appsId": {
+                                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "versionsId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "servicesId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}",
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "get": {
+                                            "description": "Gets instance information.",
+                                            "httpMethod": "GET",
+                                            "id": "appengine.apps.services.versions.instances.get",
+                                            "parameterOrder": [
+                                                "appsId",
+                                                "servicesId",
+                                                "versionsId",
+                                                "instancesId"
+                                            ],
+                                            "parameters": {
+                                                "instancesId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "appsId": {
+                                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "versionsId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "servicesId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}",
+                                            "response": {
+                                                "$ref": "Instance"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/appengine.admin",
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                            ]
+                                        },
+                                        "list": {
+                                            "description": "Lists the instances of a version.Tip: To aggregate details about instances over time, see the Stackdriver Monitoring API (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).",
+                                            "httpMethod": "GET",
+                                            "id": "appengine.apps.services.versions.instances.list",
+                                            "parameterOrder": [
+                                                "appsId",
+                                                "servicesId",
+                                                "versionsId"
+                                            ],
+                                            "parameters": {
+                                                "servicesId": {
+                                                    "description": "Part of `parent`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "pageToken": {
+                                                    "description": "Continuation token for fetching the next page of results.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "appsId": {
+                                                    "description": "Part of `parent`. Name of the parent Version resource. Example: apps/myapp/services/default/versions/v1.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Maximum results to return per page.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "versionsId": {
+                                                    "description": "Part of `parent`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances",
+                                            "response": {
+                                                "$ref": "ListInstancesResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/appengine.admin",
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                            ]
+                                        },
+                                        "debug": {
+                                            "description": "Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in \"debug mode\", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.",
+                                            "httpMethod": "POST",
+                                            "id": "appengine.apps.services.versions.instances.debug",
+                                            "parameterOrder": [
+                                                "appsId",
+                                                "servicesId",
+                                                "versionsId",
+                                                "instancesId"
+                                            ],
+                                            "parameters": {
+                                                "instancesId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "appsId": {
+                                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "versionsId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "servicesId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}:debug",
+                                            "request": {
+                                                "$ref": "DebugInstanceRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    }
                                 }
                             }
                         }
                     }
+                },
+                "authorizedDomains": {
+                    "methods": {
+                        "list": {
+                            "description": "Lists all domains the user is authorized to administer.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.authorizedDomains.list",
+                            "parameterOrder": [
+                                "appsId"
+                            ],
+                            "parameters": {
+                                "pageToken": {
+                                    "description": "Continuation token for fetching the next page of results.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "appsId": {
+                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Maximum results to return per page.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v1/apps/{appsId}/authorizedDomains",
+                            "response": {
+                                "$ref": "ListAuthorizedDomainsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        }
+                    }
+                },
+                "operations": {
+                    "methods": {
+                        "get": {
+                            "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.operations.get",
+                            "parameterOrder": [
+                                "appsId",
+                                "operationsId"
+                            ],
+                            "parameters": {
+                                "appsId": {
+                                    "description": "Part of `name`. The name of the operation resource.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "operationsId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/apps/{appsId}/operations/{operationsId}",
+                            "response": {
+                                "$ref": "Operation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.operations.list",
+                            "parameterOrder": [
+                                "appsId"
+                            ],
+                            "parameters": {
+                                "pageToken": {
+                                    "description": "The standard list page token.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "appsId": {
+                                    "description": "Part of `name`. The name of the operation's parent resource.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The standard list page size.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filter": {
+                                    "description": "The standard list filter.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/apps/{appsId}/operations",
+                            "response": {
+                                "$ref": "ListOperationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        }
+                    }
                 }
             }
         }
     },
-    "revision": "20170926",
+    "revision": "20171009",
     "rootUrl": "https://appengine.googleapis.com/",
     "schemas": {
-        "HealthCheck": {
-            "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.",
-            "id": "HealthCheck",
+        "Service": {
+            "description": "A Service resource is a logical component of an application that can share state and communicate in a secure fashion with other services. For example, an application that handles customer requests might include separate services to handle tasks such as backend data analysis or API requests from mobile devices. Each service has a collection of versions that define a specific set of code used to implement the functionality of that service.",
+            "id": "Service",
             "properties": {
-                "healthyThreshold": {
-                    "description": "Number of consecutive successful health checks required before receiving traffic.",
+                "split": {
+                    "$ref": "TrafficSplit",
+                    "description": "Mapping that defines fractional HTTP traffic diversion to different versions within the service."
+                },
+                "id": {
+                    "description": "Relative name of the service within the application. Example: default.@OutputOnly",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListOperationsResponse": {
+            "description": "The response message for Operations.ListOperations.",
+            "id": "ListOperationsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
+                "operations": {
+                    "description": "A list of operations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Operation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "FirewallRule": {
+            "description": "A single firewall rule that is evaluated against incoming traffic and provides an action to take on matched requests.",
+            "id": "FirewallRule",
+            "properties": {
+                "description": {
+                    "description": "An optional string description of this rule. This field has a maximum length of 100 characters.",
+                    "type": "string"
+                },
+                "sourceRange": {
+                    "description": "IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character \"*\" to match all IPs equivalent to \"0/0\" and \"::/0\" together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32  or 2001:0db8:0000:0042:0000:8a2e:0370:7334.<p>Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32.",
+                    "type": "string"
+                },
+                "priority": {
+                    "description": "A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "action": {
+                    "description": "The action to take on matched requests.",
+                    "enum": [
+                        "UNSPECIFIED_ACTION",
+                        "ALLOW",
+                        "DENY"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "Matching requests are allowed.",
+                        "Matching requests are denied."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "OperationMetadata": {
+            "description": "Metadata for the given google.longrunning.Operation.",
+            "id": "OperationMetadata",
+            "properties": {
+                "insertTime": {
+                    "description": "Timestamp that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/modules/default.@OutputOnly",
+                    "type": "string"
+                },
+                "user": {
+                    "description": "User who requested this operation.@OutputOnly",
+                    "type": "string"
+                },
+                "method": {
+                    "description": "API method that initiated this operation. Example: google.appengine.v1beta4.Version.CreateVersion.@OutputOnly",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "Timestamp that this operation completed.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "operationType": {
+                    "description": "Type of this operation. Deprecated, use method field instead. Example: \"create_version\".@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListAuthorizedCertificatesResponse": {
+            "description": "Response message for AuthorizedCertificates.ListAuthorizedCertificates.",
+            "id": "ListAuthorizedCertificatesResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Continuation token for fetching the next page of results.",
+                    "type": "string"
+                },
+                "certificates": {
+                    "description": "The SSL certificates the user is authorized to administer.",
+                    "items": {
+                        "$ref": "AuthorizedCertificate"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "FeatureSettings": {
+            "description": "The feature specific settings to be used in the application. These define behaviors that are user configurable.",
+            "id": "FeatureSettings",
+            "properties": {
+                "splitHealthChecks": {
+                    "description": "Boolean value indicating if split health checks should be used instead of the legacy health checks. At an app.yaml level, this means defaulting to 'readiness_check' and 'liveness_check' values instead of 'health_check' ones. Once the legacy 'health_check' behavior is deprecated, and this value is always true, this setting can be removed.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "OperationMetadataV1": {
+            "description": "Metadata for the given google.longrunning.Operation.",
+            "id": "OperationMetadataV1",
+            "properties": {
+                "method": {
+                    "description": "API method that initiated this operation. Example: google.appengine.v1.Versions.CreateVersion.@OutputOnly",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "Time that this operation completed.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "warning": {
+                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "insertTime": {
+                    "description": "Time that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
+                    "type": "string"
+                },
+                "user": {
+                    "description": "User who requested this operation.@OutputOnly",
+                    "type": "string"
+                },
+                "ephemeralMessage": {
+                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SslSettings": {
+            "description": "SSL configuration for a DomainMapping resource.",
+            "id": "SslSettings",
+            "properties": {
+                "certificateId": {
+                    "description": "ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will remove SSL support. Example: 12345.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ErrorHandler": {
+            "description": "Custom static error page to be served when an error occurs.",
+            "id": "ErrorHandler",
+            "properties": {
+                "mimeType": {
+                    "description": "MIME type of file. Defaults to text/html.",
+                    "type": "string"
+                },
+                "errorCode": {
+                    "description": "Error condition this handler applies to.",
+                    "enum": [
+                        "ERROR_CODE_UNSPECIFIED",
+                        "ERROR_CODE_DEFAULT",
+                        "ERROR_CODE_OVER_QUOTA",
+                        "ERROR_CODE_DOS_API_DENIAL",
+                        "ERROR_CODE_TIMEOUT"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. ERROR_CODE_DEFAULT is assumed.",
+                        "All other error types.",
+                        "Application has exceeded a resource quota.",
+                        "Client blocked by the application's Denial of Service protection configuration.",
+                        "Deadline reached before the application responds."
+                    ],
+                    "type": "string"
+                },
+                "staticFile": {
+                    "description": "Static file content to be served for this error.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Application": {
+            "description": "An Application resource contains the top-level configuration of an App Engine application. Next tag: 20",
+            "id": "Application",
+            "properties": {
+                "codeBucket": {
+                    "description": "Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly",
+                    "type": "string"
+                },
+                "defaultBucket": {
+                    "description": "Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly",
+                    "type": "string"
+                },
+                "dispatchRules": {
+                    "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. Up to 20 dispatch rules can be supported.@OutputOnly",
+                    "items": {
+                        "$ref": "UrlDispatchRule"
+                    },
+                    "type": "array"
+                },
+                "gcrDomain": {
+                    "description": "The Google Container Registry domain used for storing managed build docker images for this application.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly",
+                    "type": "string"
+                },
+                "defaultCookieExpiration": {
+                    "description": "Cookie expiration policy for this application.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.",
+                    "type": "string"
+                },
+                "locationId": {
+                    "description": "Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US",
+                    "type": "string"
+                },
+                "servingStatus": {
+                    "description": "Serving status of this application.",
+                    "enum": [
+                        "UNSPECIFIED",
+                        "SERVING",
+                        "USER_DISABLED",
+                        "SYSTEM_DISABLED"
+                    ],
+                    "enumDescriptions": [
+                        "Serving status is unspecified.",
+                        "Application is serving.",
+                        "Application has been disabled by the user.",
+                        "Application has been disabled by the system."
+                    ],
+                    "type": "string"
+                },
+                "defaultHostname": {
+                    "description": "Hostname used to reach this application, as resolved by App Engine.@OutputOnly",
+                    "type": "string"
+                },
+                "featureSettings": {
+                    "$ref": "FeatureSettings",
+                    "description": "The feature specific settings to be used in the application."
+                },
+                "iap": {
+                    "$ref": "IdentityAwareProxy"
+                },
+                "authDomain": {
+                    "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Network": {
+            "description": "Extra network settings. Only applicable for App Engine flexible environment versions",
+            "id": "Network",
+            "properties": {
+                "subnetworkName": {
+                    "description": "Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network.\nIf the network the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range.\nIf the network the VM instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network.\nIf the network the VM instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the App Engine flexible environment application.",
+                    "type": "string"
+                },
+                "instanceTag": {
+                    "description": "Tag to apply to the VM instance during creation. Only applicable for for App Engine flexible environment versions.",
+                    "type": "string"
+                },
+                "forwardedPorts": {
+                    "description": "List of ports, or port pairs, to forward from the virtual machine to the application container. Only applicable for App Engine flexible environment versions.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Instance": {
+            "description": "An Instance resource is the computing unit that App Engine uses to automatically scale an application.",
+            "id": "Instance",
+            "properties": {
+                "qps": {
+                    "description": "Average queries per second (QPS) over the last minute.@OutputOnly",
+                    "format": "float",
+                    "type": "number"
+                },
+                "vmId": {
+                    "description": "Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly",
+                    "type": "string"
+                },
+                "vmZoneName": {
+                    "description": "Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly",
+                    "type": "string"
+                },
+                "averageLatency": {
+                    "description": "Average latency (ms) over the last minute.@OutputOnly",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "id": {
+                    "description": "Relative name of the instance within the version. Example: instance-1.@OutputOnly",
+                    "type": "string"
+                },
+                "vmIp": {
+                    "description": "The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly",
+                    "type": "string"
+                },
+                "memoryUsage": {
+                    "description": "Total memory in use (bytes).@OutputOnly",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "vmStatus": {
+                    "description": "Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly",
+                    "type": "string"
+                },
+                "errors": {
+                    "description": "Number of errors since this instance was started.@OutputOnly",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "availability": {
+                    "description": "Availability of the instance.@OutputOnly",
+                    "enum": [
+                        "UNSPECIFIED",
+                        "RESIDENT",
+                        "DYNAMIC"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Time that this instance was started.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "vmDebugEnabled": {
+                    "description": "Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly",
+                    "type": "boolean"
+                },
+                "requests": {
+                    "description": "Number of requests since this instance was started.@OutputOnly",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "appEngineRelease": {
+                    "description": "App Engine release this instance is running on.@OutputOnly",
+                    "type": "string"
+                },
+                "vmName": {
+                    "description": "Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LivenessCheck": {
+            "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances.",
+            "id": "LivenessCheck",
+            "properties": {
+                "timeout": {
+                    "description": "Time before the check is considered failed.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "failureThreshold": {
+                    "description": "Number of consecutive failed checks required before considering the VM unhealthy.",
                     "format": "uint32",
                     "type": "integer"
                 },
-                "restartThreshold": {
-                    "description": "Number of consecutive failed health checks required before an instance is restarted.",
+                "initialDelay": {
+                    "description": "The initial delay before starting to execute the checks.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "path": {
+                    "description": "The request path.",
+                    "type": "string"
+                },
+                "successThreshold": {
+                    "description": "Number of consecutive successful checks required before considering the VM healthy.",
                     "format": "uint32",
                     "type": "integer"
                 },
+                "host": {
+                    "description": "Host header to send when performing a HTTP Liveness check. Example: \"myapp.appspot.com\"",
+                    "type": "string"
+                },
                 "checkInterval": {
                     "description": "Interval between health checks.",
                     "format": "google-duration",
                     "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "BatchUpdateIngressRulesRequest": {
+            "description": "Request message for Firewall.BatchUpdateIngressRules.",
+            "id": "BatchUpdateIngressRulesRequest",
+            "properties": {
+                "ingressRules": {
+                    "description": "A list of FirewallRules to replace the existing set.",
+                    "items": {
+                        "$ref": "FirewallRule"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Location": {
+            "description": "A resource that represents Google Cloud Platform location.",
+            "id": "Location",
+            "properties": {
+                "name": {
+                    "description": "Resource name for the location, which may vary between implementations. For example: \"projects/example-project/locations/us-east1\"",
+                    "type": "string"
                 },
+                "locationId": {
+                    "description": "The canonical id for this location. For example: \"us-east1\".",
+                    "type": "string"
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata. For example the available capacity at the given location.",
+                    "type": "object"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Cross-service attributes for the location. For example\n{\"cloud.googleapis.com/region\": \"us-east1\"}\n",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "NetworkUtilization": {
+            "description": "Target scaling by network usage. Only applicable for VM runtimes.",
+            "id": "NetworkUtilization",
+            "properties": {
+                "targetSentBytesPerSecond": {
+                    "description": "Target bytes sent per second.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "targetReceivedBytesPerSecond": {
+                    "description": "Target bytes received per second.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "targetSentPacketsPerSecond": {
+                    "description": "Target packets sent per second.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "targetReceivedPacketsPerSecond": {
+                    "description": "Target packets received per second.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "HealthCheck": {
+            "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.",
+            "id": "HealthCheck",
+            "properties": {
                 "timeout": {
                     "description": "Time before the health check is considered failed.",
                     "format": "google-duration",
@@ -1574,6 +2074,21 @@
                 "host": {
                     "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\"",
                     "type": "string"
+                },
+                "healthyThreshold": {
+                    "description": "Number of consecutive successful health checks required before receiving traffic.",
+                    "format": "uint32",
+                    "type": "integer"
+                },
+                "restartThreshold": {
+                    "description": "Number of consecutive failed health checks required before an instance is restarted.",
+                    "format": "uint32",
+                    "type": "integer"
+                },
+                "checkInterval": {
+                    "description": "Interval between health checks.",
+                    "format": "google-duration",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1633,15 +2148,6 @@
             "description": "Metadata for the given google.longrunning.Operation.",
             "id": "OperationMetadataV1Beta5",
             "properties": {
-                "method": {
-                    "description": "API method name that initiated this operation. Example: google.appengine.v1beta5.Version.CreateVersion.@OutputOnly",
-                    "type": "string"
-                },
-                "insertTime": {
-                    "description": "Timestamp that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
                 "endTime": {
                     "description": "Timestamp that this operation completed.@OutputOnly",
                     "format": "google-datetime",
@@ -1654,6 +2160,15 @@
                 "user": {
                     "description": "User who requested this operation.@OutputOnly",
                     "type": "string"
+                },
+                "method": {
+                    "description": "API method name that initiated this operation. Example: google.appengine.v1beta5.Version.CreateVersion.@OutputOnly",
+                    "type": "string"
+                },
+                "insertTime": {
+                    "description": "Timestamp that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1662,29 +2177,6 @@
             "description": "A Version resource is a specific set of source code and configuration files that are deployed into a service.",
             "id": "Version",
             "properties": {
-                "createdBy": {
-                    "description": "Email address of the user who created this version.@OutputOnly",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: \"default\", \"latest\", and any name with the prefix \"ah-\".",
-                    "type": "string"
-                },
-                "envVariables": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Environment variables available to the application.Only returned in GET requests if view=FULL is set.",
-                    "type": "object"
-                },
-                "livenessCheck": {
-                    "$ref": "LivenessCheck",
-                    "description": "Configures liveness health checking for VM instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set."
-                },
-                "network": {
-                    "$ref": "Network",
-                    "description": "Extra network settings. Only applicable for App Engine flexible environment versions."
-                },
                 "betaSettings": {
                     "additionalProperties": {
                         "type": "string"
@@ -1766,19 +2258,23 @@
                     ],
                     "type": "string"
                 },
-                "runtimeApiVersion": {
-                    "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard/<language>/config/appref",
-                    "type": "string"
-                },
                 "deployment": {
                     "$ref": "Deployment",
                     "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set."
                 },
+                "runtimeApiVersion": {
+                    "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard/<language>/config/appref",
+                    "type": "string"
+                },
                 "createTime": {
                     "description": "Time that this version was created.@OutputOnly",
                     "format": "google-datetime",
                     "type": "string"
                 },
+                "resources": {
+                    "$ref": "Resources",
+                    "description": "Machine resources for this version. Only applicable for VM runtimes."
+                },
                 "inboundServices": {
                     "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service.",
                     "enumDescriptions": [
@@ -1808,10 +2304,6 @@
                     },
                     "type": "array"
                 },
-                "resources": {
-                    "$ref": "Resources",
-                    "description": "Machine resources for this version. Only applicable for VM runtimes."
-                },
                 "errorHandlers": {
                     "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.",
                     "items": {
@@ -1842,6 +2334,29 @@
                 "runtime": {
                     "description": "Desired runtime. Example: python27.",
                     "type": "string"
+                },
+                "createdBy": {
+                    "description": "Email address of the user who created this version.@OutputOnly",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: \"default\", \"latest\", and any name with the prefix \"ah-\".",
+                    "type": "string"
+                },
+                "envVariables": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Environment variables available to the application.Only returned in GET requests if view=FULL is set.",
+                    "type": "object"
+                },
+                "livenessCheck": {
+                    "$ref": "LivenessCheck",
+                    "description": "Configures liveness health checking for VM instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set."
+                },
+                "network": {
+                    "$ref": "Network",
+                    "description": "Extra network settings. Only applicable for App Engine flexible environment versions."
                 }
             },
             "type": "object"
@@ -1867,6 +2382,25 @@
             },
             "type": "object"
         },
+        "FileInfo": {
+            "description": "Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.",
+            "id": "FileInfo",
+            "properties": {
+                "sha1Sum": {
+                    "description": "The SHA1 hash of the file, in hex.",
+                    "type": "string"
+                },
+                "mimeType": {
+                    "description": "The MIME type of the file.Defaults to the value from Google Cloud Storage.",
+                    "type": "string"
+                },
+                "sourceUrl": {
+                    "description": "URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ScriptHandler": {
             "description": "Executes a script to handle the request that matches the URL pattern.",
             "id": "ScriptHandler",
@@ -1878,38 +2412,10 @@
             },
             "type": "object"
         },
-        "FileInfo": {
-            "description": "Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.",
-            "id": "FileInfo",
-            "properties": {
-                "sourceUrl": {
-                    "description": "URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.",
-                    "type": "string"
-                },
-                "sha1Sum": {
-                    "description": "The SHA1 hash of the file, in hex.",
-                    "type": "string"
-                },
-                "mimeType": {
-                    "description": "The MIME type of the file.Defaults to the value from Google Cloud Storage.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "OperationMetadataExperimental": {
             "description": "Metadata for the given google.longrunning.Operation.",
             "id": "OperationMetadataExperimental",
             "properties": {
-                "method": {
-                    "description": "API method that initiated this operation. Example: google.appengine.experimental.CustomDomains.CreateCustomDomain.@OutputOnly",
-                    "type": "string"
-                },
-                "insertTime": {
-                    "description": "Time that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
                 "endTime": {
                     "description": "Time that this operation completed.@OutputOnly",
                     "format": "google-datetime",
@@ -1922,6 +2428,15 @@
                 "user": {
                     "description": "User who requested this operation.@OutputOnly",
                     "type": "string"
+                },
+                "method": {
+                    "description": "API method that initiated this operation. Example: google.appengine.experimental.CustomDomains.CreateCustomDomain.@OutputOnly",
+                    "type": "string"
+                },
+                "insertTime": {
+                    "description": "Time that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1976,6 +2491,14 @@
             "description": "Metadata for the given google.longrunning.Operation.",
             "id": "OperationMetadataV1Beta",
             "properties": {
+                "user": {
+                    "description": "User who requested this operation.@OutputOnly",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
+                    "type": "string"
+                },
                 "ephemeralMessage": {
                     "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
                     "type": "string"
@@ -2000,14 +2523,6 @@
                     "description": "Time that this operation was created.@OutputOnly",
                     "format": "google-datetime",
                     "type": "string"
-                },
-                "target": {
-                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
-                    "type": "string"
-                },
-                "user": {
-                    "description": "User who requested this operation.@OutputOnly",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2081,6 +2596,13 @@
             "description": "Code and application artifacts used to deploy a version to App Engine.",
             "id": "Deployment",
             "properties": {
+                "files": {
+                    "additionalProperties": {
+                        "$ref": "FileInfo"
+                    },
+                    "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.",
+                    "type": "object"
+                },
                 "zip": {
                     "$ref": "ZipInfo",
                     "description": "The zip file for this deployment, if this is a zip deployment."
@@ -2088,13 +2610,6 @@
                 "container": {
                     "$ref": "ContainerInfo",
                     "description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment."
-                },
-                "files": {
-                    "additionalProperties": {
-                        "$ref": "FileInfo"
-                    },
-                    "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.",
-                    "type": "object"
                 }
             },
             "type": "object"
@@ -2137,16 +2652,16 @@
             "description": "Response message for Instances.ListInstances.",
             "id": "ListInstancesResponse",
             "properties": {
+                "nextPageToken": {
+                    "description": "Continuation token for fetching the next page of results.",
+                    "type": "string"
+                },
                 "instances": {
                     "description": "The instances belonging to the requested version.",
                     "items": {
                         "$ref": "Instance"
                     },
                     "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "Continuation token for fetching the next page of results.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2173,30 +2688,6 @@
             "description": "Metadata for the given google.longrunning.Operation.",
             "id": "OperationMetadataV1Alpha",
             "properties": {
-                "warning": {
-                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "insertTime": {
-                    "description": "Time that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "target": {
-                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
-                    "type": "string"
-                },
-                "user": {
-                    "description": "User who requested this operation.@OutputOnly",
-                    "type": "string"
-                },
-                "ephemeralMessage": {
-                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
-                    "type": "string"
-                },
                 "method": {
                     "description": "API method that initiated this operation. Example: google.appengine.v1alpha.Versions.CreateVersion.@OutputOnly",
                     "type": "string"
@@ -2205,6 +2696,30 @@
                     "description": "Time that this operation completed.@OutputOnly",
                     "format": "google-datetime",
                     "type": "string"
+                },
+                "insertTime": {
+                    "description": "Time that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "warning": {
+                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "user": {
+                    "description": "User who requested this operation.@OutputOnly",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
+                    "type": "string"
+                },
+                "ephemeralMessage": {
+                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2232,16 +2747,16 @@
             "description": "Response message for Versions.ListVersions.",
             "id": "ListVersionsResponse",
             "properties": {
+                "nextPageToken": {
+                    "description": "Continuation token for fetching the next page of results.",
+                    "type": "string"
+                },
                 "versions": {
                     "description": "The versions belonging to the requested service.",
                     "items": {
                         "$ref": "Version"
                     },
                     "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "Continuation token for fetching the next page of results.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2264,6 +2779,23 @@
             },
             "type": "object"
         },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n  rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "ApiEndpointHandler": {
+            "description": "Uses Google Cloud Endpoints to handle requests.",
+            "id": "ApiEndpointHandler",
+            "properties": {
+                "scriptPath": {
+                    "description": "Path to the script from the application root directory.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "DomainMapping": {
             "description": "A domain serving an App Engine application.",
             "id": "DomainMapping",
@@ -2290,50 +2822,26 @@
             },
             "type": "object"
         },
-        "ApiEndpointHandler": {
-            "description": "Uses Google Cloud Endpoints to handle requests.",
-            "id": "ApiEndpointHandler",
+        "ZipInfo": {
+            "description": "The zip file information for a zip deployment.",
+            "id": "ZipInfo",
             "properties": {
-                "scriptPath": {
-                    "description": "Path to the script from the application root directory.",
+                "sourceUrl": {
+                    "description": "URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.",
                     "type": "string"
+                },
+                "filesCount": {
+                    "description": "An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
         },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n  rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
         "AutomaticScaling": {
             "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.",
             "id": "AutomaticScaling",
             "properties": {
-                "diskUtilization": {
-                    "$ref": "DiskUtilization",
-                    "description": "Target scaling by disk usage."
-                },
-                "minPendingLatency": {
-                    "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "requestUtilization": {
-                    "$ref": "RequestUtilization",
-                    "description": "Target scaling by request utilization."
-                },
-                "maxIdleInstances": {
-                    "description": "Maximum number of idle instances that should be maintained for this version.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "minIdleInstances": {
-                    "description": "Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.",
-                    "format": "int32",
-                    "type": "integer"
-                },
                 "maxTotalInstances": {
                     "description": "Maximum number of instances that should be started to handle requests.",
                     "format": "int32",
@@ -2348,16 +2856,16 @@
                     "$ref": "NetworkUtilization",
                     "description": "Target scaling by network usage."
                 },
-                "coolDownPeriod": {
-                    "description": "Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
                 "maxConcurrentRequests": {
                     "description": "Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.",
                     "format": "int32",
                     "type": "integer"
                 },
+                "coolDownPeriod": {
+                    "description": "Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
                 "maxPendingLatency": {
                     "description": "Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.",
                     "format": "google-duration",
@@ -2366,22 +2874,29 @@
                 "cpuUtilization": {
                     "$ref": "CpuUtilization",
                     "description": "Target scaling by CPU usage."
-                }
-            },
-            "type": "object"
-        },
-        "ZipInfo": {
-            "description": "The zip file information for a zip deployment.",
-            "id": "ZipInfo",
-            "properties": {
-                "filesCount": {
-                    "description": "An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.",
+                },
+                "diskUtilization": {
+                    "$ref": "DiskUtilization",
+                    "description": "Target scaling by disk usage."
+                },
+                "minPendingLatency": {
+                    "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "maxIdleInstances": {
+                    "description": "Maximum number of idle instances that should be maintained for this version.",
                     "format": "int32",
                     "type": "integer"
                 },
-                "sourceUrl": {
-                    "description": "URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.",
-                    "type": "string"
+                "requestUtilization": {
+                    "$ref": "RequestUtilization",
+                    "description": "Target scaling by request utilization."
+                },
+                "minIdleInstances": {
+                    "description": "Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -2390,6 +2905,13 @@
             "description": "An SSL certificate that a user has been authorized to administer. A user is authorized to administer any certificate that applies to one of their authorized domains.",
             "id": "AuthorizedCertificate",
             "properties": {
+                "visibleDomainMappings": {
+                    "description": "The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
                 "expireTime": {
                     "description": "The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate.@OutputOnly",
                     "format": "google-datetime",
@@ -2422,13 +2944,6 @@
                 "certificateRawData": {
                     "$ref": "CertificateRawData",
                     "description": "The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority."
-                },
-                "visibleDomainMappings": {
-                    "description": "The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -2437,6 +2952,10 @@
             "description": "A DNS resource record.",
             "id": "ResourceRecord",
             "properties": {
+                "name": {
+                    "description": "Relative name of the object affected by this record. Only applicable for CNAME records. Example: 'www'.",
+                    "type": "string"
+                },
                 "type": {
                     "description": "Resource record type. Example: AAAA.",
                     "enum": [
@@ -2456,10 +2975,6 @@
                 "rrdata": {
                     "description": "Data for this record. Values vary by record type, as defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1).",
                     "type": "string"
-                },
-                "name": {
-                    "description": "Relative name of the object affected by this record. Only applicable for CNAME records. Example: 'www'.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2468,13 +2983,13 @@
             "description": "Third-party Python runtime library that is required by the application.",
             "id": "Library",
             "properties": {
-                "version": {
-                    "description": "Version of the library to select, or \"latest\".",
-                    "type": "string"
-                },
                 "name": {
                     "description": "Name of the library. Example: \"django\".",
                     "type": "string"
+                },
+                "version": {
+                    "description": "Version of the library to select, or \"latest\".",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2483,16 +2998,16 @@
             "description": "The response message for Locations.ListLocations.",
             "id": "ListLocationsResponse",
             "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
                 "locations": {
                     "description": "A list of locations that matches the specified filter in the request.",
                     "items": {
                         "$ref": "Location"
                     },
                     "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2529,38 +3044,6 @@
             "description": "URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.",
             "id": "UrlMap",
             "properties": {
-                "securityLevel": {
-                    "description": "Security (HTTPS) enforcement for this URL.",
-                    "enum": [
-                        "SECURE_UNSPECIFIED",
-                        "SECURE_DEFAULT",
-                        "SECURE_NEVER",
-                        "SECURE_OPTIONAL",
-                        "SECURE_ALWAYS"
-                    ],
-                    "enumDescriptions": [
-                        "Not specified.",
-                        "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.",
-                        "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.",
-                        "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.",
-                        "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect."
-                    ],
-                    "type": "string"
-                },
-                "authFailAction": {
-                    "description": "Action to take when users access resources that require authentication. Defaults to redirect.",
-                    "enum": [
-                        "AUTH_FAIL_ACTION_UNSPECIFIED",
-                        "AUTH_FAIL_ACTION_REDIRECT",
-                        "AUTH_FAIL_ACTION_UNAUTHORIZED"
-                    ],
-                    "enumDescriptions": [
-                        "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.",
-                        "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.",
-                        "Rejects request with a 401 HTTP status code and an error message."
-                    ],
-                    "type": "string"
-                },
                 "script": {
                     "$ref": "ScriptHandler",
                     "description": "Executes a script to handle the request that matches this URL pattern."
@@ -2610,6 +3093,38 @@
                         "307 Temporary Redirect code."
                     ],
                     "type": "string"
+                },
+                "securityLevel": {
+                    "description": "Security (HTTPS) enforcement for this URL.",
+                    "enum": [
+                        "SECURE_UNSPECIFIED",
+                        "SECURE_DEFAULT",
+                        "SECURE_NEVER",
+                        "SECURE_OPTIONAL",
+                        "SECURE_ALWAYS"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified.",
+                        "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.",
+                        "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.",
+                        "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.",
+                        "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect."
+                    ],
+                    "type": "string"
+                },
+                "authFailAction": {
+                    "description": "Action to take when users access resources that require authentication. Defaults to redirect.",
+                    "enum": [
+                        "AUTH_FAIL_ACTION_UNSPECIFIED",
+                        "AUTH_FAIL_ACTION_REDIRECT",
+                        "AUTH_FAIL_ACTION_UNAUTHORIZED"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.",
+                        "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.",
+                        "Rejects request with a 401 HTTP status code and an error message."
+                    ],
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2668,28 +3183,6 @@
             "description": "Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers.",
             "id": "ApiConfigHandler",
             "properties": {
-                "url": {
-                    "description": "URL to serve the endpoint at.",
-                    "type": "string"
-                },
-                "securityLevel": {
-                    "description": "Security (HTTPS) enforcement for this URL.",
-                    "enum": [
-                        "SECURE_UNSPECIFIED",
-                        "SECURE_DEFAULT",
-                        "SECURE_NEVER",
-                        "SECURE_OPTIONAL",
-                        "SECURE_ALWAYS"
-                    ],
-                    "enumDescriptions": [
-                        "Not specified.",
-                        "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.",
-                        "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.",
-                        "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.",
-                        "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect."
-                    ],
-                    "type": "string"
-                },
                 "authFailAction": {
                     "description": "Action to take when users access resources that require authentication. Defaults to redirect.",
                     "enum": [
@@ -2723,6 +3216,28 @@
                         "If the user has signed in, the handler proceeds normally. Otherwise, the auth_fail_action is taken."
                     ],
                     "type": "string"
+                },
+                "url": {
+                    "description": "URL to serve the endpoint at.",
+                    "type": "string"
+                },
+                "securityLevel": {
+                    "description": "Security (HTTPS) enforcement for this URL.",
+                    "enum": [
+                        "SECURE_UNSPECIFIED",
+                        "SECURE_DEFAULT",
+                        "SECURE_NEVER",
+                        "SECURE_OPTIONAL",
+                        "SECURE_ALWAYS"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified.",
+                        "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.",
+                        "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.",
+                        "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.",
+                        "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect."
+                    ],
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2731,6 +3246,10 @@
             "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them.",
             "id": "StaticFilesHandler",
             "properties": {
+                "requireMatchingFile": {
+                    "description": "Whether this handler should match the request if the file referenced by the handler does not exist.",
+                    "type": "boolean"
+                },
                 "expiration": {
                     "description": "Time a static file served by this handler should be cached by web proxies and browsers.",
                     "format": "google-duration",
@@ -2758,10 +3277,6 @@
                 "mimeType": {
                     "description": "MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension.",
                     "type": "string"
-                },
-                "requireMatchingFile": {
-                    "description": "Whether this handler should match the request if the file referenced by the handler does not exist.",
-                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -2770,15 +3285,15 @@
             "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.",
             "id": "BasicScaling",
             "properties": {
-                "idleTimeout": {
-                    "description": "Duration of time after the last request that an instance must wait before the instance is shut down.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
                 "maxInstances": {
                     "description": "Maximum number of instances to create for this version.",
                     "format": "int32",
                     "type": "integer"
+                },
+                "idleTimeout": {
+                    "description": "Duration of time after the last request that an instance must wait before the instance is shut down.",
+                    "format": "google-duration",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2787,6 +3302,11 @@
             "description": "Target scaling by disk usage. Only applicable for VM runtimes.",
             "id": "DiskUtilization",
             "properties": {
+                "targetWriteBytesPerSecond": {
+                    "description": "Target bytes written per second.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "targetReadOpsPerSecond": {
                     "description": "Target ops read per seconds.",
                     "format": "int32",
@@ -2801,11 +3321,6 @@
                     "description": "Target ops written per second.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "targetWriteBytesPerSecond": {
-                    "description": "Target bytes written per second.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -2831,6 +3346,11 @@
             "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.",
             "id": "Status",
             "properties": {
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "message": {
                     "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
                     "type": "string"
@@ -2845,11 +3365,6 @@
                         "type": "object"
                     },
                     "type": "array"
-                },
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -2858,6 +3373,10 @@
             "description": "Identity-Aware Proxy",
             "id": "IdentityAwareProxy",
             "properties": {
+                "oauth2ClientSecretSha256": {
+                    "description": "Hex-encoded SHA-256 hash of the client secret.@OutputOnly",
+                    "type": "string"
+                },
                 "enabled": {
                     "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.If true, the oauth2_client_id and oauth2_client_secret fields must be non-empty.",
                     "type": "boolean"
@@ -2869,10 +3388,6 @@
                 "oauth2ClientId": {
                     "description": "OAuth2 client ID to use for the authentication flow.",
                     "type": "string"
-                },
-                "oauth2ClientSecretSha256": {
-                    "description": "Hex-encoded SHA-256 hash of the client secret.@OutputOnly",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2903,521 +3418,6 @@
                 }
             },
             "type": "object"
-        },
-        "Service": {
-            "description": "A Service resource is a logical component of an application that can share state and communicate in a secure fashion with other services. For example, an application that handles customer requests might include separate services to handle tasks such as backend data analysis or API requests from mobile devices. Each service has a collection of versions that define a specific set of code used to implement the functionality of that service.",
-            "id": "Service",
-            "properties": {
-                "name": {
-                    "description": "Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly",
-                    "type": "string"
-                },
-                "split": {
-                    "$ref": "TrafficSplit",
-                    "description": "Mapping that defines fractional HTTP traffic diversion to different versions within the service."
-                },
-                "id": {
-                    "description": "Relative name of the service within the application. Example: default.@OutputOnly",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListOperationsResponse": {
-            "description": "The response message for Operations.ListOperations.",
-            "id": "ListOperationsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
-                },
-                "operations": {
-                    "description": "A list of operations that matches the specified filter in the request.",
-                    "items": {
-                        "$ref": "Operation"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "OperationMetadata": {
-            "description": "Metadata for the given google.longrunning.Operation.",
-            "id": "OperationMetadata",
-            "properties": {
-                "insertTime": {
-                    "description": "Timestamp that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "user": {
-                    "description": "User who requested this operation.@OutputOnly",
-                    "type": "string"
-                },
-                "target": {
-                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/modules/default.@OutputOnly",
-                    "type": "string"
-                },
-                "method": {
-                    "description": "API method that initiated this operation. Example: google.appengine.v1beta4.Version.CreateVersion.@OutputOnly",
-                    "type": "string"
-                },
-                "endTime": {
-                    "description": "Timestamp that this operation completed.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "operationType": {
-                    "description": "Type of this operation. Deprecated, use method field instead. Example: \"create_version\".@OutputOnly",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "FirewallRule": {
-            "description": "A single firewall rule that is evaluated against incoming traffic and provides an action to take on matched requests.",
-            "id": "FirewallRule",
-            "properties": {
-                "sourceRange": {
-                    "description": "IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character \"*\" to match all IPs equivalent to \"0/0\" and \"::/0\" together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32  or 2001:0db8:0000:0042:0000:8a2e:0370:7334.<p>Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32.",
-                    "type": "string"
-                },
-                "priority": {
-                    "description": "A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "action": {
-                    "description": "The action to take on matched requests.",
-                    "enum": [
-                        "UNSPECIFIED_ACTION",
-                        "ALLOW",
-                        "DENY"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "Matching requests are allowed.",
-                        "Matching requests are denied."
-                    ],
-                    "type": "string"
-                },
-                "description": {
-                    "description": "An optional string description of this rule. This field has a maximum length of 100 characters.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListAuthorizedCertificatesResponse": {
-            "description": "Response message for AuthorizedCertificates.ListAuthorizedCertificates.",
-            "id": "ListAuthorizedCertificatesResponse",
-            "properties": {
-                "certificates": {
-                    "description": "The SSL certificates the user is authorized to administer.",
-                    "items": {
-                        "$ref": "AuthorizedCertificate"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "Continuation token for fetching the next page of results.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "FeatureSettings": {
-            "description": "The feature specific settings to be used in the application. These define behaviors that are user configurable.",
-            "id": "FeatureSettings",
-            "properties": {
-                "splitHealthChecks": {
-                    "description": "Boolean value indicating if split health checks should be used instead of the legacy health checks. At an app.yaml level, this means defaulting to 'readiness_check' and 'liveness_check' values instead of 'health_check' ones. Once the legacy 'health_check' behavior is deprecated, and this value is always true, this setting can be removed.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "ErrorHandler": {
-            "description": "Custom static error page to be served when an error occurs.",
-            "id": "ErrorHandler",
-            "properties": {
-                "mimeType": {
-                    "description": "MIME type of file. Defaults to text/html.",
-                    "type": "string"
-                },
-                "errorCode": {
-                    "description": "Error condition this handler applies to.",
-                    "enum": [
-                        "ERROR_CODE_UNSPECIFIED",
-                        "ERROR_CODE_DEFAULT",
-                        "ERROR_CODE_OVER_QUOTA",
-                        "ERROR_CODE_DOS_API_DENIAL",
-                        "ERROR_CODE_TIMEOUT"
-                    ],
-                    "enumDescriptions": [
-                        "Not specified. ERROR_CODE_DEFAULT is assumed.",
-                        "All other error types.",
-                        "Application has exceeded a resource quota.",
-                        "Client blocked by the application's Denial of Service protection configuration.",
-                        "Deadline reached before the application responds."
-                    ],
-                    "type": "string"
-                },
-                "staticFile": {
-                    "description": "Static file content to be served for this error.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SslSettings": {
-            "description": "SSL configuration for a DomainMapping resource.",
-            "id": "SslSettings",
-            "properties": {
-                "certificateId": {
-                    "description": "ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will remove SSL support. Example: 12345.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "OperationMetadataV1": {
-            "description": "Metadata for the given google.longrunning.Operation.",
-            "id": "OperationMetadataV1",
-            "properties": {
-                "insertTime": {
-                    "description": "Time that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "warning": {
-                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "user": {
-                    "description": "User who requested this operation.@OutputOnly",
-                    "type": "string"
-                },
-                "target": {
-                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
-                    "type": "string"
-                },
-                "ephemeralMessage": {
-                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
-                    "type": "string"
-                },
-                "method": {
-                    "description": "API method that initiated this operation. Example: google.appengine.v1.Versions.CreateVersion.@OutputOnly",
-                    "type": "string"
-                },
-                "endTime": {
-                    "description": "Time that this operation completed.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Application": {
-            "description": "An Application resource contains the top-level configuration of an App Engine application. Next tag: 20",
-            "id": "Application",
-            "properties": {
-                "locationId": {
-                    "description": "Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US",
-                    "type": "string"
-                },
-                "servingStatus": {
-                    "description": "Serving status of this application.",
-                    "enum": [
-                        "UNSPECIFIED",
-                        "SERVING",
-                        "USER_DISABLED",
-                        "SYSTEM_DISABLED"
-                    ],
-                    "enumDescriptions": [
-                        "Serving status is unspecified.",
-                        "Application is serving.",
-                        "Application has been disabled by the user.",
-                        "Application has been disabled by the system."
-                    ],
-                    "type": "string"
-                },
-                "defaultHostname": {
-                    "description": "Hostname used to reach this application, as resolved by App Engine.@OutputOnly",
-                    "type": "string"
-                },
-                "featureSettings": {
-                    "$ref": "FeatureSettings",
-                    "description": "The feature specific settings to be used in the application."
-                },
-                "iap": {
-                    "$ref": "IdentityAwareProxy"
-                },
-                "authDomain": {
-                    "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.",
-                    "type": "string"
-                },
-                "codeBucket": {
-                    "description": "Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly",
-                    "type": "string"
-                },
-                "defaultBucket": {
-                    "description": "Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly",
-                    "type": "string"
-                },
-                "dispatchRules": {
-                    "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. Up to 20 dispatch rules can be supported.@OutputOnly",
-                    "items": {
-                        "$ref": "UrlDispatchRule"
-                    },
-                    "type": "array"
-                },
-                "gcrDomain": {
-                    "description": "The Google Container Registry domain used for storing managed build docker images for this application.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly",
-                    "type": "string"
-                },
-                "defaultCookieExpiration": {
-                    "description": "Cookie expiration policy for this application.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Network": {
-            "description": "Extra network settings. Only applicable for App Engine flexible environment versions",
-            "id": "Network",
-            "properties": {
-                "subnetworkName": {
-                    "description": "Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network.\nIf the network the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range.\nIf the network the VM instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network.\nIf the network the VM instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the App Engine flexible environment application.",
-                    "type": "string"
-                },
-                "instanceTag": {
-                    "description": "Tag to apply to the VM instance during creation. Only applicable for for App Engine flexible environment versions.",
-                    "type": "string"
-                },
-                "forwardedPorts": {
-                    "description": "List of ports, or port pairs, to forward from the virtual machine to the application container. Only applicable for App Engine flexible environment versions.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Instance": {
-            "description": "An Instance resource is the computing unit that App Engine uses to automatically scale an application.",
-            "id": "Instance",
-            "properties": {
-                "averageLatency": {
-                    "description": "Average latency (ms) over the last minute.@OutputOnly",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "id": {
-                    "description": "Relative name of the instance within the version. Example: instance-1.@OutputOnly",
-                    "type": "string"
-                },
-                "memoryUsage": {
-                    "description": "Total memory in use (bytes).@OutputOnly",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "vmIp": {
-                    "description": "The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly",
-                    "type": "string"
-                },
-                "errors": {
-                    "description": "Number of errors since this instance was started.@OutputOnly",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "availability": {
-                    "description": "Availability of the instance.@OutputOnly",
-                    "enum": [
-                        "UNSPECIFIED",
-                        "RESIDENT",
-                        "DYNAMIC"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "vmStatus": {
-                    "description": "Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly",
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "Time that this instance was started.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "vmDebugEnabled": {
-                    "description": "Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly",
-                    "type": "boolean"
-                },
-                "requests": {
-                    "description": "Number of requests since this instance was started.@OutputOnly",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "appEngineRelease": {
-                    "description": "App Engine release this instance is running on.@OutputOnly",
-                    "type": "string"
-                },
-                "vmName": {
-                    "description": "Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly",
-                    "type": "string"
-                },
-                "vmId": {
-                    "description": "Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly",
-                    "type": "string"
-                },
-                "qps": {
-                    "description": "Average queries per second (QPS) over the last minute.@OutputOnly",
-                    "format": "float",
-                    "type": "number"
-                },
-                "vmZoneName": {
-                    "description": "Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LivenessCheck": {
-            "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances.",
-            "id": "LivenessCheck",
-            "properties": {
-                "path": {
-                    "description": "The request path.",
-                    "type": "string"
-                },
-                "successThreshold": {
-                    "description": "Number of consecutive successful checks required before considering the VM healthy.",
-                    "format": "uint32",
-                    "type": "integer"
-                },
-                "host": {
-                    "description": "Host header to send when performing a HTTP Liveness check. Example: \"myapp.appspot.com\"",
-                    "type": "string"
-                },
-                "checkInterval": {
-                    "description": "Interval between health checks.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "failureThreshold": {
-                    "description": "Number of consecutive failed checks required before considering the VM unhealthy.",
-                    "format": "uint32",
-                    "type": "integer"
-                },
-                "timeout": {
-                    "description": "Time before the check is considered failed.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "initialDelay": {
-                    "description": "The initial delay before starting to execute the checks.",
-                    "format": "google-duration",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "BatchUpdateIngressRulesRequest": {
-            "description": "Request message for Firewall.BatchUpdateIngressRules.",
-            "id": "BatchUpdateIngressRulesRequest",
-            "properties": {
-                "ingressRules": {
-                    "description": "A list of FirewallRules to replace the existing set.",
-                    "items": {
-                        "$ref": "FirewallRule"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "NetworkUtilization": {
-            "description": "Target scaling by network usage. Only applicable for VM runtimes.",
-            "id": "NetworkUtilization",
-            "properties": {
-                "targetReceivedPacketsPerSecond": {
-                    "description": "Target packets received per second.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "targetSentBytesPerSecond": {
-                    "description": "Target bytes sent per second.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "targetReceivedBytesPerSecond": {
-                    "description": "Target bytes received per second.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "targetSentPacketsPerSecond": {
-                    "description": "Target packets sent per second.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "Location": {
-            "description": "A resource that represents Google Cloud Platform location.",
-            "id": "Location",
-            "properties": {
-                "labels": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Cross-service attributes for the location. For example\n{\"cloud.googleapis.com/region\": \"us-east1\"}\n",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "Resource name for the location, which may vary between implementations. For example: \"projects/example-project/locations/us-east1\"",
-                    "type": "string"
-                },
-                "locationId": {
-                    "description": "The canonical id for this location. For example: \"us-east1\".",
-                    "type": "string"
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Service-specific metadata. For example the available capacity at the given location.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/appsactivity__v1.json b/discovery/googleapis/appsactivity__v1.json
index 6fea663..c84b4fb 100644
--- a/discovery/googleapis/appsactivity__v1.json
+++ b/discovery/googleapis/appsactivity__v1.json
@@ -26,7 +26,7 @@
     "description": "Provides a historical view of activity.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/google-apps/activity/",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/kFAnMJNmaN64ynO6wl0fvbppm7Y\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/lRyDXBcX1_xHDfzPFmOFE2-xAeY\"",
     "icons": {
         "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
         "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -153,7 +153,7 @@
             }
         }
     },
-    "revision": "20170926",
+    "revision": "20171017",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Activity": {
diff --git a/discovery/googleapis/appstate__v1.json b/discovery/googleapis/appstate__v1.json
index 53089be..c60000f 100644
--- a/discovery/googleapis/appstate__v1.json
+++ b/discovery/googleapis/appstate__v1.json
@@ -15,7 +15,7 @@
     "description": "The Google App State API.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/games/services/web/api/states",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/ESJxarNGXm2AQO5txHYO7juODIM\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/jWUbtMkUM8rJzNH05ZnIzkSWpbU\"",
     "icons": {
         "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
         "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -211,7 +211,7 @@
             }
         }
     },
-    "revision": "20170928",
+    "revision": "20171017",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "GetResponse": {
diff --git a/discovery/googleapis/bigquery__v2.json b/discovery/googleapis/bigquery__v2.json
index 1383399..ccc0ad9 100644
--- a/discovery/googleapis/bigquery__v2.json
+++ b/discovery/googleapis/bigquery__v2.json
@@ -32,7 +32,7 @@
     "description": "A data platform for customers to create, manage, share and query data.",
     "discoveryVersion": "v1",
     "documentationLink": "https://cloud.google.com/bigquery/",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/eKfo1IihjCeexX2Be6ySOGd7TdQ\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/Yjz730WZUqb4y3BERqr_d1RRnuI\"",
     "icons": {
         "x16": "https://www.google.com/images/icons/product/search-16.gif",
         "x32": "https://www.google.com/images/icons/product/search-32.gif"
@@ -971,7 +971,7 @@
             }
         }
     },
-    "revision": "20170923",
+    "revision": "20171015",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "BigtableColumn": {
@@ -1775,7 +1775,7 @@
                     "type": "string"
                 },
                 "schemaUpdateOptions": {
-                    "description": "[Experimental] Allows the schema of the desitination table to be updated as a side effect of the load job if a schema is autodetected or supplied in the job configuration. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.",
+                    "description": "Allows the schema of the desitination table to be updated as a side effect of the load job if a schema is autodetected or supplied in the job configuration. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.",
                     "items": {
                         "type": "string"
                     },
@@ -1799,7 +1799,7 @@
                 },
                 "timePartitioning": {
                     "$ref": "TimePartitioning",
-                    "description": "[Experimental] If specified, configures time-based partitioning for the destination table."
+                    "description": "If specified, configures time-based partitioning for the destination table."
                 },
                 "writeDisposition": {
                     "description": "[Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result. The default value is WRITE_APPEND. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.",
@@ -1872,7 +1872,7 @@
                     "type": "array"
                 },
                 "schemaUpdateOptions": {
-                    "description": "[Experimental] Allows the schema of the destination table to be updated as a side effect of the query job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.",
+                    "description": "Allows the schema of the destination table to be updated as a side effect of the query job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.",
                     "items": {
                         "type": "string"
                     },
@@ -1887,7 +1887,7 @@
                 },
                 "timePartitioning": {
                     "$ref": "TimePartitioning",
-                    "description": "[Experimental] If specified, configures time-based partitioning for the destination table."
+                    "description": "If specified, configures time-based partitioning for the destination table."
                 },
                 "useLegacySql": {
                     "description": "Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the value of flattenResults is ignored; query will be run as if flattenResults is false.",
@@ -2591,7 +2591,7 @@
                 },
                 "timePartitioning": {
                     "$ref": "TimePartitioning",
-                    "description": "[Experimental] If specified, configures time-based partitioning for this table."
+                    "description": "If specified, configures time-based partitioning for this table."
                 },
                 "type": {
                     "description": "[Output-only] Describes the table type. The following values are supported: TABLE: A normal BigQuery table. VIEW: A virtual table defined by a SQL query. EXTERNAL: A table that references data stored in an external storage system, such as Google Cloud Storage. The default value is TABLE.",
@@ -2765,6 +2765,16 @@
                     "description": "Tables in the requested dataset.",
                     "items": {
                         "properties": {
+                            "creationTime": {
+                                "description": "The time when this table was created, in milliseconds since the epoch.",
+                                "format": "int64",
+                                "type": "string"
+                            },
+                            "expirationTime": {
+                                "description": "[Optional] The time when this table expires, in milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables will be deleted and their storage reclaimed.",
+                                "format": "int64",
+                                "type": "string"
+                            },
                             "friendlyName": {
                                 "description": "The user-friendly name for this table.",
                                 "type": "string"
@@ -2791,7 +2801,7 @@
                             },
                             "timePartitioning": {
                                 "$ref": "TimePartitioning",
-                                "description": "[Experimental] The time-based partitioning for this table."
+                                "description": "The time-based partitioning for this table."
                             },
                             "type": {
                                 "description": "The type of table. Possible values are: TABLE, VIEW.",
diff --git a/discovery/googleapis/bigquerydatatransfer__v1.json b/discovery/googleapis/bigquerydatatransfer__v1.json
index 3e2030d..3f0c6ee 100644
--- a/discovery/googleapis/bigquerydatatransfer__v1.json
+++ b/discovery/googleapis/bigquerydatatransfer__v1.json
@@ -2,14 +2,14 @@
     "auth": {
         "oauth2": {
             "scopes": {
+                "https://www.googleapis.com/auth/cloud-platform.read-only": {
+                    "description": "View your data across Google Cloud Platform services"
+                },
                 "https://www.googleapis.com/auth/cloud-platform": {
                     "description": "View and manage your data across Google Cloud Platform services"
                 },
                 "https://www.googleapis.com/auth/bigquery": {
                     "description": "View and manage your data in Google BigQuery"
-                },
-                "https://www.googleapis.com/auth/cloud-platform.read-only": {
-                    "description": "View your data across Google Cloud Platform services"
                 }
             }
         }
@@ -31,6 +31,22 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -42,13 +58,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
@@ -100,49 +116,72 @@
             "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.",
             "location": "query",
             "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
-                "locations": {
+                "transferConfigs": {
                     "methods": {
+                        "patch": {
+                            "description": "Updates a data transfer configuration.\nAll fields must be set, even if they are not updated.",
+                            "httpMethod": "PATCH",
+                            "id": "bigquerydatatransfer.projects.transferConfigs.patch",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "updateMask": {
+                                    "description": "Required list of fields to be updated in this request.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "The resource name of the transfer config.\nTransfer config names have the form\n`projects/{project_id}/transferConfigs/{config_id}`.\nWhere `config_id` is usually a uuid, even though it is not\nguaranteed or required. The name is ignored when creating a transfer\nconfig.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/transferConfigs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "authorizationCode": {
+                                    "description": "Optional OAuth2 authorization code to use with this transfer configuration.\nIf it is provided, the transfer configuration will be associated with the\ngaia id of the authorizing user.\nIn order to obtain authorization_code, please make a\nrequest to\nhttps://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=<datatransferapiclientid>&scope=<data_source_scopes>&redirect_uri=<redirect_uri>\n\n* client_id should be OAuth client_id of BigQuery DTS API for the given\n  data source returned by ListDataSources method.\n* data_source_scopes are the scopes returned by ListDataSources method.\n* redirect_uri is an optional parameter. If not specified, then\n  authorization code is posted to the opener of authorization flow window.\n  Otherwise it will be sent to the redirect uri. A special value of\n  urn:ietf:wg:oauth:2.0:oob means that authorization code should be\n  returned in the title bar of the browser, with the page text prompting\n  the user to copy the code and paste it in the application.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "request": {
+                                "$ref": "TransferConfig"
+                            },
+                            "response": {
+                                "$ref": "TransferConfig"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/bigquery",
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
                         "get": {
-                            "description": "Get information about a location.",
+                            "description": "Returns information about a data transfer config.",
                             "httpMethod": "GET",
-                            "id": "bigquerydatatransfer.projects.locations.get",
+                            "id": "bigquerydatatransfer.projects.transferConfigs.get",
                             "parameterOrder": [
                                 "name"
                             ],
                             "parameters": {
                                 "name": {
-                                    "description": "Resource name for the location.",
+                                    "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}`",
                                     "location": "path",
-                                    "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                    "pattern": "^projects/[^/]+/transferConfigs/[^/]+$",
                                     "required": true,
                                     "type": "string"
                                 }
                             },
                             "path": "v1/{+name}",
                             "response": {
-                                "$ref": "Location"
+                                "$ref": "TransferConfig"
                             },
                             "scopes": [
                                 "https://www.googleapis.com/auth/bigquery",
@@ -150,521 +189,6 @@
                                 "https://www.googleapis.com/auth/cloud-platform.read-only"
                             ]
                         },
-                        "list": {
-                            "description": "Lists information about the supported locations for this service.",
-                            "httpMethod": "GET",
-                            "id": "bigquerydatatransfer.projects.locations.list",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "filter": {
-                                    "description": "The standard list filter.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "The standard list page token.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "description": "The resource that owns the locations collection, if applicable.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "The standard list page size.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v1/{+name}/locations",
-                            "response": {
-                                "$ref": "ListLocationsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/bigquery",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        }
-                    },
-                    "resources": {
-                        "transferConfigs": {
-                            "methods": {
-                                "create": {
-                                    "description": "Creates a new data transfer configuration.",
-                                    "httpMethod": "POST",
-                                    "id": "bigquerydatatransfer.projects.locations.transferConfigs.create",
-                                    "parameterOrder": [
-                                        "parent"
-                                    ],
-                                    "parameters": {
-                                        "authorizationCode": {
-                                            "description": "Optional OAuth2 authorization code to use with this transfer configuration.\nThis is required if new credentials are needed, as indicated by\n`CheckValidCreds`.\nIn order to obtain authorization_code, please make a\nrequest to\nhttps://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=<datatransferapiclientid>&scope=<data_source_scopes>&redirect_uri=<redirect_uri>\n\n* client_id should be OAuth client_id of BigQuery DTS API for the given\n  data source returned by ListDataSources method.\n* data_source_scopes are the scopes returned by ListDataSources method.\n* redirect_uri is an optional parameter. If not specified, then\n  authorization code is posted to the opener of authorization flow window.\n  Otherwise it will be sent to the redirect uri. A special value of\n  urn:ietf:wg:oauth:2.0:oob means that authorization code should be\n  returned in the title bar of the browser, with the page text prompting\n  the user to copy the code and paste it in the application.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "parent": {
-                                            "description": "The BigQuery project id where the transfer configuration should be created.\nMust be in the format /projects/{project_id}/locations/{location_id}\nor\n/projects/{project_id}/locations/-\nIn case when '-' is specified as location_id, location is infered from\nthe destination dataset region.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+parent}/transferConfigs",
-                                    "request": {
-                                        "$ref": "TransferConfig"
-                                    },
-                                    "response": {
-                                        "$ref": "TransferConfig"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/bigquery",
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "scheduleRuns": {
-                                    "description": "Creates transfer runs for a time range [range_start_time, range_end_time].\nFor each date - or whatever granularity the data source supports - in the\nrange, one transfer run is created.\nNote that runs are created per UTC time in the time range.",
-                                    "httpMethod": "POST",
-                                    "id": "bigquerydatatransfer.projects.locations.transferConfigs.scheduleRuns",
-                                    "parameterOrder": [
-                                        "parent"
-                                    ],
-                                    "parameters": {
-                                        "parent": {
-                                            "description": "Transfer configuration name in the form:\n`projects/{project_id}/transferConfigs/{config_id}`.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+parent}:scheduleRuns",
-                                    "request": {
-                                        "$ref": "ScheduleTransferRunsRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "ScheduleTransferRunsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/bigquery",
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "patch": {
-                                    "description": "Updates a data transfer configuration.\nAll fields must be set, even if they are not updated.",
-                                    "httpMethod": "PATCH",
-                                    "id": "bigquerydatatransfer.projects.locations.transferConfigs.patch",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "The resource name of the transfer config.\nTransfer config names have the form\n`projects/{project_id}/transferConfigs/{config_id}`.\nWhere `config_id` is usually a uuid, even though it is not\nguaranteed or required. The name is ignored when creating a transfer\nconfig.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "authorizationCode": {
-                                            "description": "Optional OAuth2 authorization code to use with this transfer configuration.\nIf it is provided, the transfer configuration will be associated with the\ngaia id of the authorizing user.\nIn order to obtain authorization_code, please make a\nrequest to\nhttps://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=<datatransferapiclientid>&scope=<data_source_scopes>&redirect_uri=<redirect_uri>\n\n* client_id should be OAuth client_id of BigQuery DTS API for the given\n  data source returned by ListDataSources method.\n* data_source_scopes are the scopes returned by ListDataSources method.\n* redirect_uri is an optional parameter. If not specified, then\n  authorization code is posted to the opener of authorization flow window.\n  Otherwise it will be sent to the redirect uri. A special value of\n  urn:ietf:wg:oauth:2.0:oob means that authorization code should be\n  returned in the title bar of the browser, with the page text prompting\n  the user to copy the code and paste it in the application.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "updateMask": {
-                                            "description": "Required list of fields to be updated in this request.",
-                                            "format": "google-fieldmask",
-                                            "location": "query",
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+name}",
-                                    "request": {
-                                        "$ref": "TransferConfig"
-                                    },
-                                    "response": {
-                                        "$ref": "TransferConfig"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/bigquery",
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "get": {
-                                    "description": "Returns information about a data transfer config.",
-                                    "httpMethod": "GET",
-                                    "id": "bigquerydatatransfer.projects.locations.transferConfigs.get",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+name}",
-                                    "response": {
-                                        "$ref": "TransferConfig"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/bigquery",
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                    ]
-                                },
-                                "delete": {
-                                    "description": "Deletes a data transfer configuration,\nincluding any associated transfer runs and logs.",
-                                    "httpMethod": "DELETE",
-                                    "id": "bigquerydatatransfer.projects.locations.transferConfigs.delete",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+name}",
-                                    "response": {
-                                        "$ref": "Empty"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/bigquery",
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "list": {
-                                    "description": "Returns information about all data transfers in the project.",
-                                    "httpMethod": "GET",
-                                    "id": "bigquerydatatransfer.projects.locations.transferConfigs.list",
-                                    "parameterOrder": [
-                                        "parent"
-                                    ],
-                                    "parameters": {
-                                        "dataSourceIds": {
-                                            "description": "When specified, only configurations of requested data sources are returned.",
-                                            "location": "query",
-                                            "repeated": true,
-                                            "type": "string"
-                                        },
-                                        "parent": {
-                                            "description": "The BigQuery project id for which data sources\nshould be returned: `projects/{project_id}`.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "pageToken": {
-                                            "description": "Pagination token, which can be used to request a specific page\nof `ListTransfersRequest` list results. For multiple-page\nresults, `ListTransfersResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Page size. The default page size is the maximum value of 1000 results.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        }
-                                    },
-                                    "path": "v1/{+parent}/transferConfigs",
-                                    "response": {
-                                        "$ref": "ListTransferConfigsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/bigquery",
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                    ]
-                                }
-                            },
-                            "resources": {
-                                "runs": {
-                                    "methods": {
-                                        "delete": {
-                                            "description": "Deletes the specified transfer run.",
-                                            "httpMethod": "DELETE",
-                                            "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.delete",
-                                            "parameterOrder": [
-                                                "name"
-                                            ],
-                                            "parameters": {
-                                                "name": {
-                                                    "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}`",
-                                                    "location": "path",
-                                                    "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+/runs/[^/]+$",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/{+name}",
-                                            "response": {
-                                                "$ref": "Empty"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/bigquery",
-                                                "https://www.googleapis.com/auth/cloud-platform"
-                                            ]
-                                        },
-                                        "list": {
-                                            "description": "Returns information about running and completed jobs.",
-                                            "httpMethod": "GET",
-                                            "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.list",
-                                            "parameterOrder": [
-                                                "parent"
-                                            ],
-                                            "parameters": {
-                                                "runAttempt": {
-                                                    "description": "Indicates how run attempts are to be pulled.",
-                                                    "enum": [
-                                                        "RUN_ATTEMPT_UNSPECIFIED",
-                                                        "LATEST"
-                                                    ],
-                                                    "location": "query",
-                                                    "type": "string"
-                                                },
-                                                "parent": {
-                                                    "description": "Name of transfer configuration for which transfer runs should be retrieved.\nFormat of transfer configuration resource name is:\n`projects/{project_id}/transferConfigs/{config_id}`.",
-                                                    "location": "path",
-                                                    "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "pageToken": {
-                                                    "description": "Pagination token, which can be used to request a specific page\nof `ListTransferRunsRequest` list results. For multiple-page\nresults, `ListTransferRunsResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.",
-                                                    "location": "query",
-                                                    "type": "string"
-                                                },
-                                                "pageSize": {
-                                                    "description": "Page size. The default page size is the maximum value of 1000 results.",
-                                                    "format": "int32",
-                                                    "location": "query",
-                                                    "type": "integer"
-                                                },
-                                                "states": {
-                                                    "description": "When specified, only transfer runs with requested states are returned.",
-                                                    "enum": [
-                                                        "TRANSFER_STATE_UNSPECIFIED",
-                                                        "INACTIVE",
-                                                        "PENDING",
-                                                        "RUNNING",
-                                                        "SUCCEEDED",
-                                                        "FAILED",
-                                                        "CANCELLED"
-                                                    ],
-                                                    "location": "query",
-                                                    "repeated": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/{+parent}/runs",
-                                            "response": {
-                                                "$ref": "ListTransferRunsResponse"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/bigquery",
-                                                "https://www.googleapis.com/auth/cloud-platform",
-                                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                            ]
-                                        },
-                                        "get": {
-                                            "description": "Returns information about the particular transfer run.",
-                                            "httpMethod": "GET",
-                                            "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.get",
-                                            "parameterOrder": [
-                                                "name"
-                                            ],
-                                            "parameters": {
-                                                "name": {
-                                                    "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}`",
-                                                    "location": "path",
-                                                    "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+/runs/[^/]+$",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/{+name}",
-                                            "response": {
-                                                "$ref": "TransferRun"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/bigquery",
-                                                "https://www.googleapis.com/auth/cloud-platform",
-                                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                            ]
-                                        }
-                                    },
-                                    "resources": {
-                                        "transferLogs": {
-                                            "methods": {
-                                                "list": {
-                                                    "description": "Returns user facing log messages for the data transfer run.",
-                                                    "httpMethod": "GET",
-                                                    "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.transferLogs.list",
-                                                    "parameterOrder": [
-                                                        "parent"
-                                                    ],
-                                                    "parameters": {
-                                                        "parent": {
-                                                            "description": "Transfer run name in the form:\n`projects/{project_id}/transferConfigs/{config_Id}/runs/{run_id}`.",
-                                                            "location": "path",
-                                                            "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+/runs/[^/]+$",
-                                                            "required": true,
-                                                            "type": "string"
-                                                        },
-                                                        "pageToken": {
-                                                            "description": "Pagination token, which can be used to request a specific page\nof `ListTransferLogsRequest` list results. For multiple-page\nresults, `ListTransferLogsResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.",
-                                                            "location": "query",
-                                                            "type": "string"
-                                                        },
-                                                        "pageSize": {
-                                                            "description": "Page size. The default page size is the maximum value of 1000 results.",
-                                                            "format": "int32",
-                                                            "location": "query",
-                                                            "type": "integer"
-                                                        },
-                                                        "messageTypes": {
-                                                            "description": "Message types to return. If not populated - INFO, WARNING and ERROR\nmessages are returned.",
-                                                            "enum": [
-                                                                "MESSAGE_SEVERITY_UNSPECIFIED",
-                                                                "INFO",
-                                                                "WARNING",
-                                                                "ERROR"
-                                                            ],
-                                                            "location": "query",
-                                                            "repeated": true,
-                                                            "type": "string"
-                                                        }
-                                                    },
-                                                    "path": "v1/{+parent}/transferLogs",
-                                                    "response": {
-                                                        "$ref": "ListTransferLogsResponse"
-                                                    },
-                                                    "scopes": [
-                                                        "https://www.googleapis.com/auth/bigquery",
-                                                        "https://www.googleapis.com/auth/cloud-platform",
-                                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                                    ]
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        },
-                        "dataSources": {
-                            "methods": {
-                                "checkValidCreds": {
-                                    "description": "Returns true if valid credentials exist for the given data source and\nrequesting user.\nSome data sources doesn't support service account, so we need to talk to\nthem on behalf of the end user. This API just checks whether we have OAuth\ntoken for the particular user, which is a pre-requisite before user can\ncreate a transfer config.",
-                                    "httpMethod": "POST",
-                                    "id": "bigquerydatatransfer.projects.locations.dataSources.checkValidCreds",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "The data source in the form:\n`projects/{project_id}/dataSources/{data_source_id}`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+/dataSources/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+name}:checkValidCreds",
-                                    "request": {
-                                        "$ref": "CheckValidCredsRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "CheckValidCredsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/bigquery",
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                    ]
-                                },
-                                "list": {
-                                    "description": "Lists supported data sources and returns their settings,\nwhich can be used for UI rendering.",
-                                    "httpMethod": "GET",
-                                    "id": "bigquerydatatransfer.projects.locations.dataSources.list",
-                                    "parameterOrder": [
-                                        "parent"
-                                    ],
-                                    "parameters": {
-                                        "parent": {
-                                            "description": "The BigQuery project id for which data sources should be returned.\nMust be in the form: `projects/{project_id}`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "pageToken": {
-                                            "description": "Pagination token, which can be used to request a specific page\nof `ListDataSourcesRequest` list results. For multiple-page\nresults, `ListDataSourcesResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Page size. The default page size is the maximum value of 1000 results.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        }
-                                    },
-                                    "path": "v1/{+parent}/dataSources",
-                                    "response": {
-                                        "$ref": "ListDataSourcesResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/bigquery",
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                    ]
-                                },
-                                "get": {
-                                    "description": "Retrieves a supported data source and returns its settings,\nwhich can be used for UI rendering.",
-                                    "httpMethod": "GET",
-                                    "id": "bigquerydatatransfer.projects.locations.dataSources.get",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/dataSources/{data_source_id}`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+/dataSources/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+name}",
-                                    "response": {
-                                        "$ref": "DataSource"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/bigquery",
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                    ]
-                                }
-                            }
-                        }
-                    }
-                },
-                "transferConfigs": {
-                    "methods": {
                         "delete": {
                             "description": "Deletes a data transfer configuration,\nincluding any associated transfer runs and logs.",
                             "httpMethod": "DELETE",
@@ -698,11 +222,6 @@
                                 "parent"
                             ],
                             "parameters": {
-                                "pageToken": {
-                                    "description": "Pagination token, which can be used to request a specific page\nof `ListTransfersRequest` list results. For multiple-page\nresults, `ListTransfersResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
                                 "pageSize": {
                                     "description": "Page size. The default page size is the maximum value of 1000 results.",
                                     "format": "int32",
@@ -721,6 +240,11 @@
                                     "pattern": "^projects/[^/]+$",
                                     "required": true,
                                     "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Pagination token, which can be used to request a specific page\nof `ListTransfersRequest` list results. For multiple-page\nresults, `ListTransfersResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.",
+                                    "location": "query",
+                                    "type": "string"
                                 }
                             },
                             "path": "v1/{+parent}/transferConfigs",
@@ -793,101 +317,11 @@
                                 "https://www.googleapis.com/auth/bigquery",
                                 "https://www.googleapis.com/auth/cloud-platform"
                             ]
-                        },
-                        "get": {
-                            "description": "Returns information about a data transfer config.",
-                            "httpMethod": "GET",
-                            "id": "bigquerydatatransfer.projects.transferConfigs.get",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}`",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/transferConfigs/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "response": {
-                                "$ref": "TransferConfig"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/bigquery",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        },
-                        "patch": {
-                            "description": "Updates a data transfer configuration.\nAll fields must be set, even if they are not updated.",
-                            "httpMethod": "PATCH",
-                            "id": "bigquerydatatransfer.projects.transferConfigs.patch",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "updateMask": {
-                                    "description": "Required list of fields to be updated in this request.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "description": "The resource name of the transfer config.\nTransfer config names have the form\n`projects/{project_id}/transferConfigs/{config_id}`.\nWhere `config_id` is usually a uuid, even though it is not\nguaranteed or required. The name is ignored when creating a transfer\nconfig.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/transferConfigs/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "authorizationCode": {
-                                    "description": "Optional OAuth2 authorization code to use with this transfer configuration.\nIf it is provided, the transfer configuration will be associated with the\ngaia id of the authorizing user.\nIn order to obtain authorization_code, please make a\nrequest to\nhttps://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=<datatransferapiclientid>&scope=<data_source_scopes>&redirect_uri=<redirect_uri>\n\n* client_id should be OAuth client_id of BigQuery DTS API for the given\n  data source returned by ListDataSources method.\n* data_source_scopes are the scopes returned by ListDataSources method.\n* redirect_uri is an optional parameter. If not specified, then\n  authorization code is posted to the opener of authorization flow window.\n  Otherwise it will be sent to the redirect uri. A special value of\n  urn:ietf:wg:oauth:2.0:oob means that authorization code should be\n  returned in the title bar of the browser, with the page text prompting\n  the user to copy the code and paste it in the application.",
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "request": {
-                                "$ref": "TransferConfig"
-                            },
-                            "response": {
-                                "$ref": "TransferConfig"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/bigquery",
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
                         }
                     },
                     "resources": {
                         "runs": {
                             "methods": {
-                                "delete": {
-                                    "description": "Deletes the specified transfer run.",
-                                    "httpMethod": "DELETE",
-                                    "id": "bigquerydatatransfer.projects.transferConfigs.runs.delete",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/transferConfigs/[^/]+/runs/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+name}",
-                                    "response": {
-                                        "$ref": "Empty"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/bigquery",
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
                                 "list": {
                                     "description": "Returns information about running and completed jobs.",
                                     "httpMethod": "GET",
@@ -974,6 +408,31 @@
                                         "https://www.googleapis.com/auth/cloud-platform",
                                         "https://www.googleapis.com/auth/cloud-platform.read-only"
                                     ]
+                                },
+                                "delete": {
+                                    "description": "Deletes the specified transfer run.",
+                                    "httpMethod": "DELETE",
+                                    "id": "bigquerydatatransfer.projects.transferConfigs.runs.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/transferConfigs/[^/]+/runs/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/bigquery",
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
                                 }
                             },
                             "resources": {
@@ -987,13 +446,6 @@
                                                 "parent"
                                             ],
                                             "parameters": {
-                                                "parent": {
-                                                    "description": "Transfer run name in the form:\n`projects/{project_id}/transferConfigs/{config_Id}/runs/{run_id}`.",
-                                                    "location": "path",
-                                                    "pattern": "^projects/[^/]+/transferConfigs/[^/]+/runs/[^/]+$",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
                                                 "pageToken": {
                                                     "description": "Pagination token, which can be used to request a specific page\nof `ListTransferLogsRequest` list results. For multiple-page\nresults, `ListTransferLogsResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.",
                                                     "location": "query",
@@ -1016,6 +468,13 @@
                                                     "location": "query",
                                                     "repeated": true,
                                                     "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Transfer run name in the form:\n`projects/{project_id}/transferConfigs/{config_Id}/runs/{run_id}`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/transferConfigs/[^/]+/runs/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
                                                 }
                                             },
                                             "path": "v1/{+parent}/transferLogs",
@@ -1044,11 +503,6 @@
                                 "parent"
                             ],
                             "parameters": {
-                                "pageToken": {
-                                    "description": "Pagination token, which can be used to request a specific page\nof `ListDataSourcesRequest` list results. For multiple-page\nresults, `ListDataSourcesResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
                                 "pageSize": {
                                     "description": "Page size. The default page size is the maximum value of 1000 results.",
                                     "format": "int32",
@@ -1061,6 +515,11 @@
                                     "pattern": "^projects/[^/]+$",
                                     "required": true,
                                     "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Pagination token, which can be used to request a specific page\nof `ListDataSourcesRequest` list results. For multiple-page\nresults, `ListDataSourcesResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.",
+                                    "location": "query",
+                                    "type": "string"
                                 }
                             },
                             "path": "v1/{+parent}/dataSources",
@@ -1129,13 +588,577 @@
                             ]
                         }
                     }
+                },
+                "locations": {
+                    "methods": {
+                        "get": {
+                            "description": "Get information about a location.",
+                            "httpMethod": "GET",
+                            "id": "bigquerydatatransfer.projects.locations.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Resource name for the location.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "Location"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/bigquery",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists information about the supported locations for this service.",
+                            "httpMethod": "GET",
+                            "id": "bigquerydatatransfer.projects.locations.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "filter": {
+                                    "description": "The standard list filter.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "The standard list page token.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "The resource that owns the locations collection, if applicable.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The standard list page size.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v1/{+name}/locations",
+                            "response": {
+                                "$ref": "ListLocationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/bigquery",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        }
+                    },
+                    "resources": {
+                        "transferConfigs": {
+                            "methods": {
+                                "scheduleRuns": {
+                                    "description": "Creates transfer runs for a time range [range_start_time, range_end_time].\nFor each date - or whatever granularity the data source supports - in the\nrange, one transfer run is created.\nNote that runs are created per UTC time in the time range.",
+                                    "httpMethod": "POST",
+                                    "id": "bigquerydatatransfer.projects.locations.transferConfigs.scheduleRuns",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "Transfer configuration name in the form:\n`projects/{project_id}/transferConfigs/{config_id}`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}:scheduleRuns",
+                                    "request": {
+                                        "$ref": "ScheduleTransferRunsRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "ScheduleTransferRunsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/bigquery",
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Returns information about a data transfer config.",
+                                    "httpMethod": "GET",
+                                    "id": "bigquerydatatransfer.projects.locations.transferConfigs.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "TransferConfig"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/bigquery",
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates a data transfer configuration.\nAll fields must be set, even if they are not updated.",
+                                    "httpMethod": "PATCH",
+                                    "id": "bigquerydatatransfer.projects.locations.transferConfigs.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "authorizationCode": {
+                                            "description": "Optional OAuth2 authorization code to use with this transfer configuration.\nIf it is provided, the transfer configuration will be associated with the\ngaia id of the authorizing user.\nIn order to obtain authorization_code, please make a\nrequest to\nhttps://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=<datatransferapiclientid>&scope=<data_source_scopes>&redirect_uri=<redirect_uri>\n\n* client_id should be OAuth client_id of BigQuery DTS API for the given\n  data source returned by ListDataSources method.\n* data_source_scopes are the scopes returned by ListDataSources method.\n* redirect_uri is an optional parameter. If not specified, then\n  authorization code is posted to the opener of authorization flow window.\n  Otherwise it will be sent to the redirect uri. A special value of\n  urn:ietf:wg:oauth:2.0:oob means that authorization code should be\n  returned in the title bar of the browser, with the page text prompting\n  the user to copy the code and paste it in the application.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "Required list of fields to be updated in this request.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "name": {
+                                            "description": "The resource name of the transfer config.\nTransfer config names have the form\n`projects/{project_id}/transferConfigs/{config_id}`.\nWhere `config_id` is usually a uuid, even though it is not\nguaranteed or required. The name is ignored when creating a transfer\nconfig.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "request": {
+                                        "$ref": "TransferConfig"
+                                    },
+                                    "response": {
+                                        "$ref": "TransferConfig"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/bigquery",
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a data transfer configuration,\nincluding any associated transfer runs and logs.",
+                                    "httpMethod": "DELETE",
+                                    "id": "bigquerydatatransfer.projects.locations.transferConfigs.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/bigquery",
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Returns information about all data transfers in the project.",
+                                    "httpMethod": "GET",
+                                    "id": "bigquerydatatransfer.projects.locations.transferConfigs.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "pageToken": {
+                                            "description": "Pagination token, which can be used to request a specific page\nof `ListTransfersRequest` list results. For multiple-page\nresults, `ListTransfersResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Page size. The default page size is the maximum value of 1000 results.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "dataSourceIds": {
+                                            "description": "When specified, only configurations of requested data sources are returned.",
+                                            "location": "query",
+                                            "repeated": true,
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "The BigQuery project id for which data sources\nshould be returned: `projects/{project_id}`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/transferConfigs",
+                                    "response": {
+                                        "$ref": "ListTransferConfigsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/bigquery",
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                    ]
+                                },
+                                "create": {
+                                    "description": "Creates a new data transfer configuration.",
+                                    "httpMethod": "POST",
+                                    "id": "bigquerydatatransfer.projects.locations.transferConfigs.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "authorizationCode": {
+                                            "description": "Optional OAuth2 authorization code to use with this transfer configuration.\nThis is required if new credentials are needed, as indicated by\n`CheckValidCreds`.\nIn order to obtain authorization_code, please make a\nrequest to\nhttps://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=<datatransferapiclientid>&scope=<data_source_scopes>&redirect_uri=<redirect_uri>\n\n* client_id should be OAuth client_id of BigQuery DTS API for the given\n  data source returned by ListDataSources method.\n* data_source_scopes are the scopes returned by ListDataSources method.\n* redirect_uri is an optional parameter. If not specified, then\n  authorization code is posted to the opener of authorization flow window.\n  Otherwise it will be sent to the redirect uri. A special value of\n  urn:ietf:wg:oauth:2.0:oob means that authorization code should be\n  returned in the title bar of the browser, with the page text prompting\n  the user to copy the code and paste it in the application.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "The BigQuery project id where the transfer configuration should be created.\nMust be in the format /projects/{project_id}/locations/{location_id}\nor\n/projects/{project_id}/locations/-\nIn case when '-' is specified as location_id, location is infered from\nthe destination dataset region.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/transferConfigs",
+                                    "request": {
+                                        "$ref": "TransferConfig"
+                                    },
+                                    "response": {
+                                        "$ref": "TransferConfig"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/bigquery",
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            },
+                            "resources": {
+                                "runs": {
+                                    "methods": {
+                                        "list": {
+                                            "description": "Returns information about running and completed jobs.",
+                                            "httpMethod": "GET",
+                                            "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.list",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "pageSize": {
+                                                    "description": "Page size. The default page size is the maximum value of 1000 results.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "states": {
+                                                    "description": "When specified, only transfer runs with requested states are returned.",
+                                                    "enum": [
+                                                        "TRANSFER_STATE_UNSPECIFIED",
+                                                        "INACTIVE",
+                                                        "PENDING",
+                                                        "RUNNING",
+                                                        "SUCCEEDED",
+                                                        "FAILED",
+                                                        "CANCELLED"
+                                                    ],
+                                                    "location": "query",
+                                                    "repeated": true,
+                                                    "type": "string"
+                                                },
+                                                "runAttempt": {
+                                                    "description": "Indicates how run attempts are to be pulled.",
+                                                    "enum": [
+                                                        "RUN_ATTEMPT_UNSPECIFIED",
+                                                        "LATEST"
+                                                    ],
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Name of transfer configuration for which transfer runs should be retrieved.\nFormat of transfer configuration resource name is:\n`projects/{project_id}/transferConfigs/{config_id}`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "pageToken": {
+                                                    "description": "Pagination token, which can be used to request a specific page\nof `ListTransferRunsRequest` list results. For multiple-page\nresults, `ListTransferRunsResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/runs",
+                                            "response": {
+                                                "$ref": "ListTransferRunsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/bigquery",
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                            ]
+                                        },
+                                        "get": {
+                                            "description": "Returns information about the particular transfer run.",
+                                            "httpMethod": "GET",
+                                            "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.get",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+/runs/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "TransferRun"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/bigquery",
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                            ]
+                                        },
+                                        "delete": {
+                                            "description": "Deletes the specified transfer run.",
+                                            "httpMethod": "DELETE",
+                                            "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.delete",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+/runs/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "Empty"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/bigquery",
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    },
+                                    "resources": {
+                                        "transferLogs": {
+                                            "methods": {
+                                                "list": {
+                                                    "description": "Returns user facing log messages for the data transfer run.",
+                                                    "httpMethod": "GET",
+                                                    "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.transferLogs.list",
+                                                    "parameterOrder": [
+                                                        "parent"
+                                                    ],
+                                                    "parameters": {
+                                                        "pageToken": {
+                                                            "description": "Pagination token, which can be used to request a specific page\nof `ListTransferLogsRequest` list results. For multiple-page\nresults, `ListTransferLogsResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "pageSize": {
+                                                            "description": "Page size. The default page size is the maximum value of 1000 results.",
+                                                            "format": "int32",
+                                                            "location": "query",
+                                                            "type": "integer"
+                                                        },
+                                                        "messageTypes": {
+                                                            "description": "Message types to return. If not populated - INFO, WARNING and ERROR\nmessages are returned.",
+                                                            "enum": [
+                                                                "MESSAGE_SEVERITY_UNSPECIFIED",
+                                                                "INFO",
+                                                                "WARNING",
+                                                                "ERROR"
+                                                            ],
+                                                            "location": "query",
+                                                            "repeated": true,
+                                                            "type": "string"
+                                                        },
+                                                        "parent": {
+                                                            "description": "Transfer run name in the form:\n`projects/{project_id}/transferConfigs/{config_Id}/runs/{run_id}`.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+/runs/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+parent}/transferLogs",
+                                                    "response": {
+                                                        "$ref": "ListTransferLogsResponse"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/bigquery",
+                                                        "https://www.googleapis.com/auth/cloud-platform",
+                                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                                    ]
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        },
+                        "dataSources": {
+                            "methods": {
+                                "list": {
+                                    "description": "Lists supported data sources and returns their settings,\nwhich can be used for UI rendering.",
+                                    "httpMethod": "GET",
+                                    "id": "bigquerydatatransfer.projects.locations.dataSources.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "pageToken": {
+                                            "description": "Pagination token, which can be used to request a specific page\nof `ListDataSourcesRequest` list results. For multiple-page\nresults, `ListDataSourcesResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Page size. The default page size is the maximum value of 1000 results.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "parent": {
+                                            "description": "The BigQuery project id for which data sources should be returned.\nMust be in the form: `projects/{project_id}`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/dataSources",
+                                    "response": {
+                                        "$ref": "ListDataSourcesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/bigquery",
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Retrieves a supported data source and returns its settings,\nwhich can be used for UI rendering.",
+                                    "httpMethod": "GET",
+                                    "id": "bigquerydatatransfer.projects.locations.dataSources.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/dataSources/{data_source_id}`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/dataSources/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "DataSource"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/bigquery",
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                    ]
+                                },
+                                "checkValidCreds": {
+                                    "description": "Returns true if valid credentials exist for the given data source and\nrequesting user.\nSome data sources doesn't support service account, so we need to talk to\nthem on behalf of the end user. This API just checks whether we have OAuth\ntoken for the particular user, which is a pre-requisite before user can\ncreate a transfer config.",
+                                    "httpMethod": "POST",
+                                    "id": "bigquerydatatransfer.projects.locations.dataSources.checkValidCreds",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The data source in the form:\n`projects/{project_id}/dataSources/{data_source_id}`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/dataSources/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}:checkValidCreds",
+                                    "request": {
+                                        "$ref": "CheckValidCredsRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "CheckValidCredsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/bigquery",
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                    ]
+                                }
+                            }
+                        }
+                    }
                 }
             }
         }
     },
-    "revision": "20171005",
+    "revision": "20171016",
     "rootUrl": "https://bigquerydatatransfer.googleapis.com/",
     "schemas": {
+        "ScheduleTransferRunsRequest": {
+            "description": "A request to schedule transfer runs for a time range.",
+            "id": "ScheduleTransferRunsRequest",
+            "properties": {
+                "endTime": {
+                    "description": "End time of the range of transfer runs. For example,\n`\"2017-05-30T00:00:00+00:00\"`.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Start time of the range of transfer runs. For example,\n`\"2017-05-25T00:00:00+00:00\"`.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
         "Location": {
             "description": "A resource that represents Google Cloud Platform location.",
             "id": "Location",
@@ -1170,6 +1193,33 @@
             "description": "Represents a data transfer configuration. A transfer configuration\ncontains all metadata needed to perform a data transfer. For example,\n`destination_dataset_id` specifies where data should be stored.\nWhen a new transfer configuration is created, the specified\n`destination_dataset_id` is created when needed and shared with the\nappropriate data source service account.",
             "id": "TransferConfig",
             "properties": {
+                "disabled": {
+                    "description": "Is this config disabled. When set to true, no runs are scheduled\nfor a given transfer.",
+                    "type": "boolean"
+                },
+                "nextRunTime": {
+                    "description": "Output only. Next time when data transfer will run.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "schedule": {
+                    "description": "Data transfer schedule.\nIf the data source does not support a custom schedule, this should be\nempty. If it is empty, the default value for the data source will be\nused.\nThe specified times are in UTC.\nExamples of valid format:\n`1st,3rd monday of month 15:30`,\n`every wed,fri of jan,jun 13:15`, and\n`first sunday of quarter 00:00`.\nSee more explanation about the format here:\nhttps://cloud.google.com/appengine/docs/flexible/python/scheduling-jobs-with-cron-yaml#the_schedule_format\nNOTE: the granularity should be at least 8 hours, or less frequent.",
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. Data transfer modification time. Ignored by server on input.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "dataRefreshWindowDays": {
+                    "description": "The number of days to look back to automatically refresh the data.\nFor example, if `data_refresh_window_days = 10`, then every day\nBigQuery reingests data for [today-10, today-1], rather than ingesting data\nfor just [today-1].\nOnly valid if the data source supports the feature. Set the value to  0\nto use the default value.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "dataSourceId": {
+                    "description": "Data source id. Cannot be changed once data transfer is created.",
+                    "type": "string"
+                },
                 "state": {
                     "description": "Output only. State of the most recently updated transfer run.",
                     "enum": [
@@ -1220,33 +1270,6 @@
                 "displayName": {
                     "description": "User specified display name for the data transfer.",
                     "type": "string"
-                },
-                "disabled": {
-                    "description": "Is this config disabled. When set to true, no runs are scheduled\nfor a given transfer.",
-                    "type": "boolean"
-                },
-                "nextRunTime": {
-                    "description": "Output only. Next time when data transfer will run.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "schedule": {
-                    "description": "Data transfer schedule.\nIf the data source does not support a custom schedule, this should be\nempty. If it is empty, the default value for the data source will be\nused.\nThe specified times are in UTC.\nExamples of valid format:\n`1st,3rd monday of month 15:30`,\n`every wed,fri of jan,jun 13:15`, and\n`first sunday of quarter 00:00`.\nSee more explanation about the format here:\nhttps://cloud.google.com/appengine/docs/flexible/python/scheduling-jobs-with-cron-yaml#the_schedule_format\nNOTE: the granularity should be at least 8 hours, or less frequent.",
-                    "type": "string"
-                },
-                "updateTime": {
-                    "description": "Output only. Data transfer modification time. Ignored by server on input.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "dataRefreshWindowDays": {
-                    "description": "The number of days to look back to automatically refresh the data.\nFor example, if `data_refresh_window_days = 10`, then every day\nBigQuery reingests data for [today-10, today-1], rather than ingesting data\nfor just [today-1].\nOnly valid if the data source supports the feature. Set the value to  0\nto use the default value.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "dataSourceId": {
-                    "description": "Data source id. Cannot be changed once data transfer is created.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1255,29 +1278,20 @@
             "description": "Represents a data transfer run.",
             "id": "TransferRun",
             "properties": {
-                "datasetRegion": {
-                    "description": "Output only. Region in which BigQuery dataset is located.",
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "Output only. Time when transfer run was started.\nParameter ignored by server for input requests.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
                 "scheduleTime": {
                     "description": "Minimum time after which a transfer run can be started.",
                     "format": "google-datetime",
                     "type": "string"
                 },
-                "schedule": {
-                    "description": "Output only. Describes the schedule of this transfer run if it was\ncreated as part of a regular schedule. For batch transfer runs that are\nscheduled manually, this is empty.\nNOTE: the system might choose to delay the schedule depending on the\ncurrent load, so `schedule_time` doesn't always matches this.",
-                    "type": "string"
-                },
                 "updateTime": {
                     "description": "Output only. Last time the data transfer run state was updated.",
                     "format": "google-datetime",
                     "type": "string"
                 },
+                "schedule": {
+                    "description": "Output only. Describes the schedule of this transfer run if it was\ncreated as part of a regular schedule. For batch transfer runs that are\nscheduled manually, this is empty.\nNOTE: the system might choose to delay the schedule depending on the\ncurrent load, so `schedule_time` doesn't always matches this.",
+                    "type": "string"
+                },
                 "runTime": {
                     "description": "For batch transfer runs, specifies the date and time that\ndata should be ingested.",
                     "format": "google-datetime",
@@ -1309,6 +1323,11 @@
                     ],
                     "type": "string"
                 },
+                "userId": {
+                    "description": "Output only. Unique ID of the user on whose behalf transfer is done.\nApplicable only to data sources that do not support service accounts.\nWhen set to 0, the data source service account credentials are used.",
+                    "format": "int64",
+                    "type": "string"
+                },
                 "destinationDatasetId": {
                     "description": "The BigQuery target dataset id.",
                     "type": "string"
@@ -1317,11 +1336,6 @@
                     "description": "The resource name of the transfer run.\nTransfer run names have the form\n`projects/{project_id}/locations/{location}/transferConfigs/{config_id}/runs/{run_id}`.\nThe name is ignored when creating a transfer run.",
                     "type": "string"
                 },
-                "userId": {
-                    "description": "Output only. Unique ID of the user on whose behalf transfer is done.\nApplicable only to data sources that do not support service accounts.\nWhen set to 0, the data source service account credentials are used.",
-                    "format": "int64",
-                    "type": "string"
-                },
                 "params": {
                     "additionalProperties": {
                         "description": "Properties of the object.",
@@ -1334,6 +1348,15 @@
                     "description": "Output only. Time when transfer run ended.\nParameter ignored by server for input requests.",
                     "format": "google-datetime",
                     "type": "string"
+                },
+                "datasetRegion": {
+                    "description": "Output only. Region in which BigQuery dataset is located.",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Output only. Time when transfer run was started.\nParameter ignored by server for input requests.",
+                    "format": "google-datetime",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1423,16 +1446,16 @@
             "description": "Returns list of supported data sources and their metadata.",
             "id": "ListDataSourcesResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "Output only. The next-pagination token. For multiple-page list results,\nthis token can be used as the\n`ListDataSourcesRequest.page_token`\nto request the next page of list results.",
-                    "type": "string"
-                },
                 "dataSources": {
                     "description": "List of supported data sources and their transfer settings.",
                     "items": {
                         "$ref": "DataSource"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Output only. The next-pagination token. For multiple-page list results,\nthis token can be used as the\n`ListDataSourcesRequest.page_token`\nto request the next page of list results.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1441,25 +1464,6 @@
             "description": "Represents a data source parameter with validation rules, so that\nparameters can be rendered in the UI. These parameters are given to us by\nsupported data sources, and include all needed information for rendering\nand validation.\nThus, whoever uses this api can decide to generate either generic ui,\nor custom data source specific forms.",
             "id": "DataSourceParameter",
             "properties": {
-                "displayName": {
-                    "description": "Parameter display name in the user interface.",
-                    "type": "string"
-                },
-                "validationDescription": {
-                    "description": "Description of the requirements for this field, in case the user input does\nnot fulfill the regex pattern or min/max values.",
-                    "type": "string"
-                },
-                "immutable": {
-                    "description": "Cannot be changed after initial creation.",
-                    "type": "boolean"
-                },
-                "fields": {
-                    "description": "When parameter is a record, describes child fields.",
-                    "items": {
-                        "$ref": "DataSourceParameter"
-                    },
-                    "type": "array"
-                },
                 "maxValue": {
                     "description": "For integer and double values specifies maxminum allowed value.",
                     "format": "double",
@@ -1502,15 +1506,15 @@
                     },
                     "type": "array"
                 },
+                "validationHelpUrl": {
+                    "description": "URL to a help document to further explain the naming requirements.",
+                    "type": "string"
+                },
                 "minValue": {
                     "description": "For integer and double values specifies minimum allowed value.",
                     "format": "double",
                     "type": "number"
                 },
-                "validationHelpUrl": {
-                    "description": "URL to a help document to further explain the naming requirements.",
-                    "type": "string"
-                },
                 "validationRegex": {
                     "description": "Regular expression which can be used for parameter validation.",
                     "type": "string"
@@ -1526,6 +1530,25 @@
                 "repeated": {
                     "description": "Can parameter have multiple values.",
                     "type": "boolean"
+                },
+                "displayName": {
+                    "description": "Parameter display name in the user interface.",
+                    "type": "string"
+                },
+                "immutable": {
+                    "description": "Cannot be changed after initial creation.",
+                    "type": "boolean"
+                },
+                "validationDescription": {
+                    "description": "Description of the requirements for this field, in case the user input does\nnot fulfill the regex pattern or min/max values.",
+                    "type": "string"
+                },
+                "fields": {
+                    "description": "When parameter is a record, describes child fields.",
+                    "items": {
+                        "$ref": "DataSourceParameter"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -1570,16 +1593,16 @@
             "description": "The returned list of pipelines in the project.",
             "id": "ListTransferConfigsResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "Output only. The next-pagination token. For multiple-page list results,\nthis token can be used as the\n`ListTransferConfigsRequest.page_token`\nto request the next page of list results.",
-                    "type": "string"
-                },
                 "transferConfigs": {
                     "description": "Output only. The stored pipeline transfer configurations.",
                     "items": {
                         "$ref": "TransferConfig"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Output only. The next-pagination token. For multiple-page list results,\nthis token can be used as the\n`ListTransferConfigsRequest.page_token`\nto request the next page of list results.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1588,6 +1611,20 @@
             "description": "Represents data source metadata. Metadata is sufficient to\nrender UI and request proper OAuth tokens.",
             "id": "DataSource",
             "properties": {
+                "dataRefreshType": {
+                    "description": "Specifies whether the data source supports automatic data refresh for the\npast few days, and how it's supported.\nFor some data sources, data might not be complete until a few days later,\nso it's useful to refresh data automatically.",
+                    "enum": [
+                        "DATA_REFRESH_TYPE_UNSPECIFIED",
+                        "SLIDING_WINDOW",
+                        "CUSTOM_SLIDING_WINDOW"
+                    ],
+                    "enumDescriptions": [
+                        "The data source won't support data auto refresh, which is default value.",
+                        "The data source supports data auto refresh, and runs will be scheduled\nfor the past few days. Does not allow custom values to be set for each\ntransfer config.",
+                        "The data source supports data auto refresh, and runs will be scheduled\nfor the past few days. Allows custom values to be set for each transfer\nconfig."
+                    ],
+                    "type": "string"
+                },
                 "parameters": {
                     "description": "Data source parameters.",
                     "items": {
@@ -1638,6 +1675,10 @@
                     "description": "Data source id.",
                     "type": "string"
                 },
+                "name": {
+                    "description": "Data source resource name.",
+                    "type": "string"
+                },
                 "scopes": {
                     "description": "Api auth scopes for which refresh token needs to be obtained. Only valid\nwhen `client_id` is specified. Ignored otherwise. These are scopes needed\nby a data source to prepare data and ingest them into BigQuery,\ne.g., https://www.googleapis.com/auth/bigquery",
                     "items": {
@@ -1645,10 +1686,6 @@
                     },
                     "type": "array"
                 },
-                "name": {
-                    "description": "Data source resource name.",
-                    "type": "string"
-                },
                 "minimumScheduleInterval": {
                     "description": "The minimum interval between two consecutive scheduled runs.",
                     "format": "google-duration",
@@ -1684,46 +1721,9 @@
                     "description": "The number of seconds to wait for an update from the data source\nbefore BigQuery marks the transfer as failed.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "dataRefreshType": {
-                    "description": "Specifies whether the data source supports automatic data refresh for the\npast few days, and how it's supported.\nFor some data sources, data might not be complete until a few days later,\nso it's useful to refresh data automatically.",
-                    "enum": [
-                        "DATA_REFRESH_TYPE_UNSPECIFIED",
-                        "SLIDING_WINDOW",
-                        "CUSTOM_SLIDING_WINDOW"
-                    ],
-                    "enumDescriptions": [
-                        "The data source won't support data auto refresh, which is default value.",
-                        "The data source supports data auto refresh, and runs will be scheduled\nfor the past few days. Does not allow custom values to be set for each\ntransfer config.",
-                        "The data source supports data auto refresh, and runs will be scheduled\nfor the past few days. Allows custom values to be set for each transfer\nconfig."
-                    ],
-                    "type": "string"
                 }
             },
             "type": "object"
-        },
-        "ScheduleTransferRunsRequest": {
-            "description": "A request to schedule transfer runs for a time range.",
-            "id": "ScheduleTransferRunsRequest",
-            "properties": {
-                "startTime": {
-                    "description": "Start time of the range of transfer runs. For example,\n`\"2017-05-25T00:00:00+00:00\"`.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "endTime": {
-                    "description": "End time of the range of transfer runs. For example,\n`\"2017-05-30T00:00:00+00:00\"`.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/calendar__v3.json b/discovery/googleapis/calendar__v3.json
index ac52bf3..079d22e 100644
--- a/discovery/googleapis/calendar__v3.json
+++ b/discovery/googleapis/calendar__v3.json
@@ -17,7 +17,7 @@
     "description": "Manipulates events and other calendar data.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/google-apps/calendar/firstapp",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/2j8D2nFUEmPd5-ldLWN3HdwZdb0\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/RreKY-0_CLqkT_my5f8b1oQsH4w\"",
     "icons": {
         "x16": "http://www.google.com/images/icons/product/calendar-16.png",
         "x32": "http://www.google.com/images/icons/product/calendar-32.png"
@@ -147,6 +147,11 @@
                             "location": "path",
                             "required": true,
                             "type": "string"
+                        },
+                        "sendNotifications": {
+                            "description": "Whether to send notifications about the calendar sharing change. Optional. The default is True.",
+                            "location": "query",
+                            "type": "boolean"
                         }
                     },
                     "path": "calendars/{calendarId}/acl",
@@ -226,6 +231,11 @@
                             "location": "path",
                             "required": true,
                             "type": "string"
+                        },
+                        "sendNotifications": {
+                            "description": "Whether to send notifications about the calendar sharing change. Note that there are no notifications on access removal. Optional. The default is True.",
+                            "location": "query",
+                            "type": "boolean"
                         }
                     },
                     "path": "calendars/{calendarId}/acl/{ruleId}",
@@ -259,6 +269,11 @@
                             "location": "path",
                             "required": true,
                             "type": "string"
+                        },
+                        "sendNotifications": {
+                            "description": "Whether to send notifications about the calendar sharing change. Note that there are no notifications on access removal. Optional. The default is True.",
+                            "location": "query",
+                            "type": "boolean"
                         }
                     },
                     "path": "calendars/{calendarId}/acl/{ruleId}",
@@ -1557,7 +1572,7 @@
             }
         }
     },
-    "revision": "20170924",
+    "revision": "20171017",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Acl": {
diff --git a/discovery/googleapis/classroom__v1.json b/discovery/googleapis/classroom__v1.json
index f0b5801..4319ba7 100644
--- a/discovery/googleapis/classroom__v1.json
+++ b/discovery/googleapis/classroom__v1.json
@@ -2,6 +2,15 @@
     "auth": {
         "oauth2": {
             "scopes": {
+                "https://www.googleapis.com/auth/classroom.coursework.me.readonly": {
+                    "description": "View your course work and grades in Google Classroom"
+                },
+                "https://www.googleapis.com/auth/classroom.profile.emails": {
+                    "description": "View the email addresses of people in your classes"
+                },
+                "https://www.googleapis.com/auth/classroom.coursework.me": {
+                    "description": "Manage your course work and view your grades in Google Classroom"
+                },
                 "https://www.googleapis.com/auth/classroom.rosters": {
                     "description": "Manage your Google Classroom class rosters"
                 },
@@ -26,32 +35,23 @@
                 "https://www.googleapis.com/auth/classroom.rosters.readonly": {
                     "description": "View your Google Classroom class rosters"
                 },
-                "https://www.googleapis.com/auth/classroom.announcements.readonly": {
-                    "description": "View announcements in Google Classroom"
-                },
                 "https://www.googleapis.com/auth/classroom.guardianlinks.students": {
                     "description": "View and manage guardians for students in your Google Classroom classes"
                 },
+                "https://www.googleapis.com/auth/classroom.announcements.readonly": {
+                    "description": "View announcements in Google Classroom"
+                },
                 "https://www.googleapis.com/auth/classroom.student-submissions.me.readonly": {
                     "description": "View your course work and grades in Google Classroom"
                 },
                 "https://www.googleapis.com/auth/classroom.guardianlinks.me.readonly": {
                     "description": "View your Google Classroom guardians"
                 },
-                "https://www.googleapis.com/auth/classroom.coursework.students": {
-                    "description": "Manage course work and grades for students in the Google Classroom classes you teach and view the course work and grades for classes you administer"
-                },
                 "https://www.googleapis.com/auth/classroom.coursework.students.readonly": {
                     "description": "View course work and grades for students in the Google Classroom classes you teach or administer"
                 },
-                "https://www.googleapis.com/auth/classroom.coursework.me.readonly": {
-                    "description": "View your course work and grades in Google Classroom"
-                },
-                "https://www.googleapis.com/auth/classroom.profile.emails": {
-                    "description": "View the email addresses of people in your classes"
-                },
-                "https://www.googleapis.com/auth/classroom.coursework.me": {
-                    "description": "Manage your course work and view your grades in Google Classroom"
+                "https://www.googleapis.com/auth/classroom.coursework.students": {
+                    "description": "Manage course work and grades for students in the Google Classroom classes you teach and view the course work and grades for classes you administer"
                 }
             }
         }
@@ -72,37 +72,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-            "location": "query",
-            "type": "string"
-        },
-        "access_token": {
-            "description": "OAuth access token.",
-            "location": "query",
-            "type": "string"
-        },
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -114,13 +83,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
@@ -157,6 +126,37 @@
             ],
             "location": "query",
             "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
@@ -292,7 +292,7 @@
         "registrations": {
             "methods": {
                 "create": {
-                    "description": "Creates a `Registration`, causing Classroom to start sending notifications\nfrom the provided `feed` to the provided `destination`.\n\nReturns the created `Registration`. Currently, this will be the same as\nthe argument, but with server-assigned fields such as `expiry_time` and\n`id` filled in.\n\nNote that any value specified for the `expiry_time` or `id` fields will be\nignored.\n\nWhile Classroom may validate the `destination` and return errors on a best\neffort basis, it is the caller's responsibility to ensure that it exists\nand that Classroom has permission to publish to it.\n\nThis method may return the following error codes:\n\n* `PERMISSION_DENIED` if:\n  * the authenticated user does not have permission to receive\n    notifications from the requested field; or\n  * the credential provided does not include the appropriate scope for the\n    requested feed.\n  * another access error is encountered.\n* `INVALID_ARGUMENT` if:\n  * no `destination` is specified, or the specified `destination` is not\n    valid; or\n  * no `feed` is specified, or the specified `feed` is not valid.\n* `NOT_FOUND` if:\n  * the specified `feed` cannot be located, or the requesting user does not\n    have permission to determine whether or not it exists; or\n  * the specified `destination` cannot be located, or Classroom has not\n    been granted permission to publish to it.",
+                    "description": "Creates a `Registration`, causing Classroom to start sending notifications\nfrom the provided `feed` to the provided `destination`.\n\nReturns the created `Registration`. Currently, this will be the same as\nthe argument, but with server-assigned fields such as `expiry_time` and\n`id` filled in.\n\nNote that any value specified for the `expiry_time` or `id` fields will be\nignored.\n\nWhile Classroom may validate the `destination` and return errors on a best\neffort basis, it is the caller's responsibility to ensure that it exists\nand that Classroom has permission to publish to it.\n\nThis method may return the following error codes:\n\n* `PERMISSION_DENIED` if:\n    * the authenticated user does not have permission to receive\n      notifications from the requested field; or\n    * the credential provided does not include the appropriate scope for the\n      requested feed.\n    * another access error is encountered.\n* `INVALID_ARGUMENT` if:\n    * no `destination` is specified, or the specified `destination` is not\n      valid; or\n    * no `feed` is specified, or the specified `feed` is not valid.\n* `NOT_FOUND` if:\n    * the specified `feed` cannot be located, or the requesting user does not\n      have permission to determine whether or not it exists; or\n    * the specified `destination` cannot be located, or Classroom has not\n      been granted permission to publish to it.",
                     "httpMethod": "POST",
                     "id": "classroom.registrations.create",
                     "parameterOrder": [],
@@ -367,6 +367,32 @@
             "resources": {
                 "guardianInvitations": {
                     "methods": {
+                        "create": {
+                            "description": "Creates a guardian invitation, and sends an email to the guardian asking\nthem to confirm that they are the student's guardian.\n\nOnce the guardian accepts the invitation, their `state` will change to\n`COMPLETED` and they will start receiving guardian notifications. A\n`Guardian` resource will also be created to represent the active guardian.\n\nThe request object must have the `student_id` and\n`invited_email_address` fields set. Failing to set these fields, or\nsetting any other fields in the request, will result in an error.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the current user does not have permission to\n  manage guardians, if the guardian in question has already rejected\n  too many requests for that student, if guardians are not enabled for the\n  domain in question, or for other access errors.\n* `RESOURCE_EXHAUSTED` if the student or guardian has exceeded the guardian\n  link limit.\n* `INVALID_ARGUMENT` if the guardian email address is not valid (for\n  example, if it is too long), or if the format of the student ID provided\n  cannot be recognized (it is not an email address, nor a `user_id` from\n  this API). This error will also be returned if read-only fields are set,\n  or if the `state` field is set to to a value other than `PENDING`.\n* `NOT_FOUND` if the student ID provided is a valid student ID, but\n  Classroom has no record of that student.\n* `ALREADY_EXISTS` if there is already a pending guardian invitation for\n  the student and `invited_email_address` provided, or if the provided\n  `invited_email_address` matches the Google account of an existing\n  `Guardian` for this user.",
+                            "httpMethod": "POST",
+                            "id": "classroom.userProfiles.guardianInvitations.create",
+                            "parameterOrder": [
+                                "studentId"
+                            ],
+                            "parameters": {
+                                "studentId": {
+                                    "description": "ID of the student (in standard format)",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/userProfiles/{studentId}/guardianInvitations",
+                            "request": {
+                                "$ref": "GuardianInvitation"
+                            },
+                            "response": {
+                                "$ref": "GuardianInvitation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/classroom.guardianlinks.students"
+                            ]
+                        },
                         "patch": {
                             "description": "Modifies a guardian invitation.\n\nCurrently, the only valid modification is to change the `state` from\n`PENDING` to `COMPLETE`. This has the effect of withdrawing the invitation.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the current user does not have permission to\n  manage guardians, if guardians are not enabled for the domain in question\n  or for other access errors.\n* `FAILED_PRECONDITION` if the guardian link is not in the `PENDING` state.\n* `INVALID_ARGUMENT` if the format of the student ID provided\n  cannot be recognized (it is not an email address, nor a `user_id` from\n  this API), or if the passed `GuardianInvitation` has a `state` other than\n  `COMPLETE`, or if it modifies fields other than `state`.\n* `NOT_FOUND` if the student ID provided is a valid student ID, but\n  Classroom has no record of that student, or if the `id` field does not\n  refer to a guardian invitation known to Classroom.",
                             "httpMethod": "PATCH",
@@ -376,12 +402,6 @@
                                 "invitationId"
                             ],
                             "parameters": {
-                                "studentId": {
-                                    "description": "The ID of the student whose guardian invitation is to be modified.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
                                 "updateMask": {
                                     "description": "Mask that identifies which fields on the course to update.\nThis field is required to do an update. The update will fail if invalid\nfields are specified. The following fields are valid:\n\n* `state`\n\nWhen set in a query parameter, this field should be specified as\n\n`updateMask=<field1>,<field2>,...`",
                                     "format": "google-fieldmask",
@@ -393,6 +413,12 @@
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
+                                },
+                                "studentId": {
+                                    "description": "The ID of the student whose guardian invitation is to be modified.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
                                 }
                             },
                             "path": "v1/userProfiles/{studentId}/guardianInvitations/{invitationId}",
@@ -487,32 +513,6 @@
                                 "https://www.googleapis.com/auth/classroom.guardianlinks.students",
                                 "https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly"
                             ]
-                        },
-                        "create": {
-                            "description": "Creates a guardian invitation, and sends an email to the guardian asking\nthem to confirm that they are the student's guardian.\n\nOnce the guardian accepts the invitation, their `state` will change to\n`COMPLETED` and they will start receiving guardian notifications. A\n`Guardian` resource will also be created to represent the active guardian.\n\nThe request object must have the `student_id` and\n`invited_email_address` fields set. Failing to set these fields, or\nsetting any other fields in the request, will result in an error.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the current user does not have permission to\n  manage guardians, if the guardian in question has already rejected\n  too many requests for that student, if guardians are not enabled for the\n  domain in question, or for other access errors.\n* `RESOURCE_EXHAUSTED` if the student or guardian has exceeded the guardian\n  link limit.\n* `INVALID_ARGUMENT` if the guardian email address is not valid (for\n  example, if it is too long), or if the format of the student ID provided\n  cannot be recognized (it is not an email address, nor a `user_id` from\n  this API). This error will also be returned if read-only fields are set,\n  or if the `state` field is set to to a value other than `PENDING`.\n* `NOT_FOUND` if the student ID provided is a valid student ID, but\n  Classroom has no record of that student.\n* `ALREADY_EXISTS` if there is already a pending guardian invitation for\n  the student and `invited_email_address` provided, or if the provided\n  `invited_email_address` matches the Google account of an existing\n  `Guardian` for this user.",
-                            "httpMethod": "POST",
-                            "id": "classroom.userProfiles.guardianInvitations.create",
-                            "parameterOrder": [
-                                "studentId"
-                            ],
-                            "parameters": {
-                                "studentId": {
-                                    "description": "ID of the student (in standard format)",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/userProfiles/{studentId}/guardianInvitations",
-                            "request": {
-                                "$ref": "GuardianInvitation"
-                            },
-                            "response": {
-                                "$ref": "GuardianInvitation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/classroom.guardianlinks.students"
-                            ]
                         }
                     }
                 },
@@ -557,14 +557,14 @@
                                 "guardianId"
                             ],
                             "parameters": {
-                                "studentId": {
-                                    "description": "The student whose guardian is being requested. One of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user",
+                                "guardianId": {
+                                    "description": "The `id` field from a `Guardian`.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
                                 },
-                                "guardianId": {
-                                    "description": "The `id` field from a `Guardian`.",
+                                "studentId": {
+                                    "description": "The student whose guardian is being requested. One of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
@@ -588,12 +588,6 @@
                                 "studentId"
                             ],
                             "parameters": {
-                                "studentId": {
-                                    "description": "Filter results by the student who the guardian is linked to.\nThe identifier can be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user\n* the string literal `\"-\"`, indicating that results should be returned for\n  all students that the requesting user has access to view.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
                                 "pageToken": {
                                     "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token.",
                                     "location": "query",
@@ -609,6 +603,12 @@
                                     "description": "Filter results by the email address that the original invitation was sent\nto, resulting in this guardian link.\nThis filter can only be used by domain administrators.",
                                     "location": "query",
                                     "type": "string"
+                                },
+                                "studentId": {
+                                    "description": "Filter results by the student who the guardian is linked to.\nThe identifier can be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user\n* the string literal `\"-\"`, indicating that results should be returned for\n  all students that the requesting user has access to view.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
                                 }
                             },
                             "path": "v1/userProfiles/{studentId}/guardians",
@@ -627,6 +627,88 @@
         },
         "courses": {
             "methods": {
+                "get": {
+                    "description": "Returns a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or for access errors.\n* `NOT_FOUND` if no course exists with the requested ID.",
+                    "httpMethod": "GET",
+                    "id": "classroom.courses.get",
+                    "parameterOrder": [
+                        "id"
+                    ],
+                    "parameters": {
+                        "id": {
+                            "description": "Identifier of the course to return.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/courses/{id}",
+                    "response": {
+                        "$ref": "Course"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/classroom.courses",
+                        "https://www.googleapis.com/auth/classroom.courses.readonly"
+                    ]
+                },
+                "patch": {
+                    "description": "Updates one or more fields in a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to modify the\nrequested course or for access errors.\n* `NOT_FOUND` if no course exists with the requested ID.\n* `INVALID_ARGUMENT` if invalid fields are specified in the update mask or\nif no update mask is supplied.\n* `FAILED_PRECONDITION` for the following request errors:\n    * CourseNotModifiable",
+                    "httpMethod": "PATCH",
+                    "id": "classroom.courses.patch",
+                    "parameterOrder": [
+                        "id"
+                    ],
+                    "parameters": {
+                        "id": {
+                            "description": "Identifier of the course to update.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "updateMask": {
+                            "description": "Mask that identifies which fields on the course to update.\nThis field is required to do an update. The update will fail if invalid\nfields are specified. The following fields are valid:\n\n* `name`\n* `section`\n* `descriptionHeading`\n* `description`\n* `room`\n* `courseState`\n* `ownerId`\n\nNote: patches to ownerId are treated as being effective immediately, but in\npractice it may take some time for the ownership transfer of all affected\nresources to complete.\n\nWhen set in a query parameter, this field should be specified as\n\n`updateMask=<field1>,<field2>,...`",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/courses/{id}",
+                    "request": {
+                        "$ref": "Course"
+                    },
+                    "response": {
+                        "$ref": "Course"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/classroom.courses"
+                    ]
+                },
+                "update": {
+                    "description": "Updates a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to modify the\nrequested course or for access errors.\n* `NOT_FOUND` if no course exists with the requested ID.\n* `FAILED_PRECONDITION` for the following request errors:\n    * CourseNotModifiable",
+                    "httpMethod": "PUT",
+                    "id": "classroom.courses.update",
+                    "parameterOrder": [
+                        "id"
+                    ],
+                    "parameters": {
+                        "id": {
+                            "description": "Identifier of the course to update.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/courses/{id}",
+                    "request": {
+                        "$ref": "Course"
+                    },
+                    "response": {
+                        "$ref": "Course"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/classroom.courses"
+                    ]
+                },
                 "delete": {
                     "description": "Deletes a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to delete the\nrequested course or for access errors.\n* `NOT_FOUND` if no course exists with the requested ID.",
                     "httpMethod": "DELETE",
@@ -717,88 +799,6 @@
                     "scopes": [
                         "https://www.googleapis.com/auth/classroom.courses"
                     ]
-                },
-                "get": {
-                    "description": "Returns a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or for access errors.\n* `NOT_FOUND` if no course exists with the requested ID.",
-                    "httpMethod": "GET",
-                    "id": "classroom.courses.get",
-                    "parameterOrder": [
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Identifier of the course to return.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/courses/{id}",
-                    "response": {
-                        "$ref": "Course"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/classroom.courses",
-                        "https://www.googleapis.com/auth/classroom.courses.readonly"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates one or more fields in a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to modify the\nrequested course or for access errors.\n* `NOT_FOUND` if no course exists with the requested ID.\n* `INVALID_ARGUMENT` if invalid fields are specified in the update mask or\nif no update mask is supplied.\n* `FAILED_PRECONDITION` for the following request errors:\n    * CourseNotModifiable",
-                    "httpMethod": "PATCH",
-                    "id": "classroom.courses.patch",
-                    "parameterOrder": [
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Identifier of the course to update.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "updateMask": {
-                            "description": "Mask that identifies which fields on the course to update.\nThis field is required to do an update. The update will fail if invalid\nfields are specified. The following fields are valid:\n\n* `name`\n* `section`\n* `descriptionHeading`\n* `description`\n* `room`\n* `courseState`\n* `ownerId`\n\nNote: patches to ownerId are treated as being effective immediately, but in\npractice it may take some time for the ownership transfer of all affected\nresources to complete.\n\nWhen set in a query parameter, this field should be specified as\n\n`updateMask=<field1>,<field2>,...`",
-                            "format": "google-fieldmask",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/courses/{id}",
-                    "request": {
-                        "$ref": "Course"
-                    },
-                    "response": {
-                        "$ref": "Course"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/classroom.courses"
-                    ]
-                },
-                "update": {
-                    "description": "Updates a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to modify the\nrequested course or for access errors.\n* `NOT_FOUND` if no course exists with the requested ID.\n* `FAILED_PRECONDITION` for the following request errors:\n    * CourseNotModifiable",
-                    "httpMethod": "PUT",
-                    "id": "classroom.courses.update",
-                    "parameterOrder": [
-                        "id"
-                    ],
-                    "parameters": {
-                        "id": {
-                            "description": "Identifier of the course to update.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/courses/{id}",
-                    "request": {
-                        "$ref": "Course"
-                    },
-                    "response": {
-                        "$ref": "Course"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/classroom.courses"
-                    ]
                 }
             },
             "resources": {
@@ -813,14 +813,14 @@
                                 "id"
                             ],
                             "parameters": {
-                                "id": {
-                                    "description": "Identifier of the announcement.",
+                                "courseId": {
+                                    "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
                                 },
-                                "courseId": {
-                                    "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
+                                "id": {
+                                    "description": "Identifier of the announcement.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
@@ -945,18 +945,6 @@
                                 "courseId"
                             ],
                             "parameters": {
-                                "announcementStates": {
-                                    "description": "Restriction on the `state` of announcements returned.\nIf this argument is left unspecified, the default value is `PUBLISHED`.",
-                                    "enum": [
-                                        "ANNOUNCEMENT_STATE_UNSPECIFIED",
-                                        "PUBLISHED",
-                                        "DRAFT",
-                                        "DELETED"
-                                    ],
-                                    "location": "query",
-                                    "repeated": true,
-                                    "type": "string"
-                                },
                                 "pageToken": {
                                     "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token.",
                                     "location": "query",
@@ -978,6 +966,18 @@
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
+                                },
+                                "announcementStates": {
+                                    "description": "Restriction on the `state` of announcements returned.\nIf this argument is left unspecified, the default value is `PUBLISHED`.",
+                                    "enum": [
+                                        "ANNOUNCEMENT_STATE_UNSPECIFIED",
+                                        "PUBLISHED",
+                                        "DRAFT",
+                                        "DELETED"
+                                    ],
+                                    "location": "query",
+                                    "repeated": true,
+                                    "type": "string"
                                 }
                             },
                             "path": "v1/courses/{courseId}/announcements",
@@ -1019,6 +1019,71 @@
                 },
                 "aliases": {
                     "methods": {
+                        "delete": {
+                            "description": "Deletes an alias of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to remove the\nalias or for access errors.\n* `NOT_FOUND` if the alias does not exist.\n* `FAILED_PRECONDITION` if the alias requested does not make sense for the\n  requesting user or course (for example, if a user not in a domain\n  attempts to delete a domain-scoped alias).",
+                            "httpMethod": "DELETE",
+                            "id": "classroom.courses.aliases.delete",
+                            "parameterOrder": [
+                                "courseId",
+                                "alias"
+                            ],
+                            "parameters": {
+                                "courseId": {
+                                    "description": "Identifier of the course whose alias should be deleted.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "alias": {
+                                    "description": "Alias to delete.\nThis may not be the Classroom-assigned identifier.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/courses/{courseId}/aliases/{alias}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/classroom.courses"
+                            ]
+                        },
+                        "list": {
+                            "description": "Returns a list of aliases for a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\ncourse or for access errors.\n* `NOT_FOUND` if the course does not exist.",
+                            "httpMethod": "GET",
+                            "id": "classroom.courses.aliases.list",
+                            "parameterOrder": [
+                                "courseId"
+                            ],
+                            "parameters": {
+                                "courseId": {
+                                    "description": "The identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v1/courses/{courseId}/aliases",
+                            "response": {
+                                "$ref": "ListCourseAliasesResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/classroom.courses",
+                                "https://www.googleapis.com/auth/classroom.courses.readonly"
+                            ]
+                        },
                         "create": {
                             "description": "Creates an alias for a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to create the\nalias or for access errors.\n* `NOT_FOUND` if the course does not exist.\n* `ALREADY_EXISTS` if the alias already exists.\n* `FAILED_PRECONDITION` if the alias requested does not make sense for the\n  requesting user or course (for example, if a user not in a domain\n  attempts to access a domain-scoped alias).",
                             "httpMethod": "POST",
@@ -1044,76 +1109,74 @@
                             "scopes": [
                                 "https://www.googleapis.com/auth/classroom.courses"
                             ]
-                        },
-                        "delete": {
-                            "description": "Deletes an alias of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to remove the\nalias or for access errors.\n* `NOT_FOUND` if the alias does not exist.\n* `FAILED_PRECONDITION` if the alias requested does not make sense for the\n  requesting user or course (for example, if a user not in a domain\n  attempts to delete a domain-scoped alias).",
-                            "httpMethod": "DELETE",
-                            "id": "classroom.courses.aliases.delete",
-                            "parameterOrder": [
-                                "courseId",
-                                "alias"
-                            ],
-                            "parameters": {
-                                "alias": {
-                                    "description": "Alias to delete.\nThis may not be the Classroom-assigned identifier.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "courseId": {
-                                    "description": "Identifier of the course whose alias should be deleted.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/courses/{courseId}/aliases/{alias}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/classroom.courses"
-                            ]
-                        },
-                        "list": {
-                            "description": "Returns a list of aliases for a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\ncourse or for access errors.\n* `NOT_FOUND` if the course does not exist.",
-                            "httpMethod": "GET",
-                            "id": "classroom.courses.aliases.list",
-                            "parameterOrder": [
-                                "courseId"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "courseId": {
-                                    "description": "The identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/courses/{courseId}/aliases",
-                            "response": {
-                                "$ref": "ListCourseAliasesResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/classroom.courses",
-                                "https://www.googleapis.com/auth/classroom.courses.readonly"
-                            ]
                         }
                     }
                 },
                 "students": {
                     "methods": {
+                        "create": {
+                            "description": "Adds a user as a student of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to create\nstudents in this course or for access errors.\n* `NOT_FOUND` if the requested course ID does not exist.\n* `FAILED_PRECONDITION` if the requested user's account is disabled,\nfor the following request errors:\n    * CourseMemberLimitReached\n    * CourseNotModifiable\n    * UserGroupsMembershipLimitReached\n* `ALREADY_EXISTS` if the user is already a student or teacher in the\ncourse.",
+                            "httpMethod": "POST",
+                            "id": "classroom.courses.students.create",
+                            "parameterOrder": [
+                                "courseId"
+                            ],
+                            "parameters": {
+                                "courseId": {
+                                    "description": "Identifier of the course to create the student in.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "enrollmentCode": {
+                                    "description": "Enrollment code of the course to create the student in.\nThis code is required if userId\ncorresponds to the requesting user; it may be omitted if the requesting\nuser has administrative permissions to create students for any user.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/courses/{courseId}/students",
+                            "request": {
+                                "$ref": "Student"
+                            },
+                            "response": {
+                                "$ref": "Student"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/classroom.profile.emails",
+                                "https://www.googleapis.com/auth/classroom.profile.photos",
+                                "https://www.googleapis.com/auth/classroom.rosters"
+                            ]
+                        },
+                        "delete": {
+                            "description": "Deletes a student of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to delete\nstudents of this course or for access errors.\n* `NOT_FOUND` if no student of this course has the requested ID or if the\ncourse does not exist.",
+                            "httpMethod": "DELETE",
+                            "id": "classroom.courses.students.delete",
+                            "parameterOrder": [
+                                "courseId",
+                                "userId"
+                            ],
+                            "parameters": {
+                                "courseId": {
+                                    "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "userId": {
+                                    "description": "Identifier of the student to delete. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/courses/{courseId}/students/{userId}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/classroom.rosters"
+                            ]
+                        },
                         "list": {
                             "description": "Returns a list of students of this course that the requester\nis permitted to view.\n\nThis method returns the following error codes:\n\n* `NOT_FOUND` if the course does not exist.\n* `PERMISSION_DENIED` for access errors.",
                             "httpMethod": "GET",
@@ -1122,6 +1185,12 @@
                                 "courseId"
                             ],
                             "parameters": {
+                                "courseId": {
+                                    "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
                                 "pageToken": {
                                     "description": "nextPageToken\nvalue returned from a previous\nlist call, indicating that\nthe subsequent page of results should be returned.\n\nThe list request must be\notherwise identical to the one that resulted in this token.",
                                     "location": "query",
@@ -1132,12 +1201,6 @@
                                     "format": "int32",
                                     "location": "query",
                                     "type": "integer"
-                                },
-                                "courseId": {
-                                    "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
                                 }
                             },
                             "path": "v1/courses/{courseId}/students",
@@ -1183,69 +1246,6 @@
                                 "https://www.googleapis.com/auth/classroom.rosters",
                                 "https://www.googleapis.com/auth/classroom.rosters.readonly"
                             ]
-                        },
-                        "create": {
-                            "description": "Adds a user as a student of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to create\nstudents in this course or for access errors.\n* `NOT_FOUND` if the requested course ID does not exist.\n* `FAILED_PRECONDITION` if the requested user's account is disabled,\nfor the following request errors:\n    * CourseMemberLimitReached\n    * CourseNotModifiable\n    * UserGroupsMembershipLimitReached\n* `ALREADY_EXISTS` if the user is already a student or teacher in the\ncourse.",
-                            "httpMethod": "POST",
-                            "id": "classroom.courses.students.create",
-                            "parameterOrder": [
-                                "courseId"
-                            ],
-                            "parameters": {
-                                "courseId": {
-                                    "description": "Identifier of the course to create the student in.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "enrollmentCode": {
-                                    "description": "Enrollment code of the course to create the student in.\nThis code is required if userId\ncorresponds to the requesting user; it may be omitted if the requesting\nuser has administrative permissions to create students for any user.",
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/courses/{courseId}/students",
-                            "request": {
-                                "$ref": "Student"
-                            },
-                            "response": {
-                                "$ref": "Student"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/classroom.profile.emails",
-                                "https://www.googleapis.com/auth/classroom.profile.photos",
-                                "https://www.googleapis.com/auth/classroom.rosters"
-                            ]
-                        },
-                        "delete": {
-                            "description": "Deletes a student of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to delete\nstudents of this course or for access errors.\n* `NOT_FOUND` if no student of this course has the requested ID or if the\ncourse does not exist.",
-                            "httpMethod": "DELETE",
-                            "id": "classroom.courses.students.delete",
-                            "parameterOrder": [
-                                "courseId",
-                                "userId"
-                            ],
-                            "parameters": {
-                                "userId": {
-                                    "description": "Identifier of the student to delete. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "courseId": {
-                                    "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/courses/{courseId}/students/{userId}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/classroom.rosters"
-                            ]
                         }
                     }
                 },
@@ -1470,162 +1470,6 @@
                     "resources": {
                         "studentSubmissions": {
                             "methods": {
-                                "turnIn": {
-                                    "description": "Turns in a student submission.\n\nTurning in a student submission transfers ownership of attached Drive\nfiles to the teacher and may also update the submission state.\n\nThis may only be called by the student that owns the specified student\nsubmission.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, turn in the requested student submission,\nor for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.",
-                                    "httpMethod": "POST",
-                                    "id": "classroom.courses.courseWork.studentSubmissions.turnIn",
-                                    "parameterOrder": [
-                                        "courseId",
-                                        "courseWorkId",
-                                        "id"
-                                    ],
-                                    "parameters": {
-                                        "courseWorkId": {
-                                            "description": "Identifier of the course work.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "courseId": {
-                                            "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "id": {
-                                            "description": "Identifier of the student submission.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:turnIn",
-                                    "request": {
-                                        "$ref": "TurnInStudentSubmissionRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "Empty"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/classroom.coursework.me"
-                                    ]
-                                },
-                                "modifyAttachments": {
-                                    "description": "Modifies attachments of student submission.\n\nAttachments may only be added to student submissions belonging to course\nwork objects with a `workType` of `ASSIGNMENT`.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, if the user is not permitted to modify\nattachments on the requested student submission, or for\naccess errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.",
-                                    "httpMethod": "POST",
-                                    "id": "classroom.courses.courseWork.studentSubmissions.modifyAttachments",
-                                    "parameterOrder": [
-                                        "courseId",
-                                        "courseWorkId",
-                                        "id"
-                                    ],
-                                    "parameters": {
-                                        "courseId": {
-                                            "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "id": {
-                                            "description": "Identifier of the student submission.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "courseWorkId": {
-                                            "description": "Identifier of the course work.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:modifyAttachments",
-                                    "request": {
-                                        "$ref": "ModifyAttachmentsRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "StudentSubmission"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/classroom.coursework.me",
-                                        "https://www.googleapis.com/auth/classroom.coursework.students"
-                                    ]
-                                },
-                                "list": {
-                                    "description": "Returns a list of student submissions that the requester is permitted to\nview, factoring in the OAuth scopes of the request.\n`-` may be specified as the `course_work_id` to include student\nsubmissions for multiple course work items.\n\nCourse students may only view their own work. Course teachers\nand domain administrators may view all student submissions.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, or for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course does not exist.",
-                                    "httpMethod": "GET",
-                                    "id": "classroom.courses.courseWork.studentSubmissions.list",
-                                    "parameterOrder": [
-                                        "courseId",
-                                        "courseWorkId"
-                                    ],
-                                    "parameters": {
-                                        "courseId": {
-                                            "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "late": {
-                                            "description": "Requested lateness value. If specified, returned student submissions are\nrestricted by the requested value.\nIf unspecified, submissions are returned regardless of `late` value.",
-                                            "enum": [
-                                                "LATE_VALUES_UNSPECIFIED",
-                                                "LATE_ONLY",
-                                                "NOT_LATE_ONLY"
-                                            ],
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageToken": {
-                                            "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "states": {
-                                            "description": "Requested submission states. If specified, returned student submissions\nmatch one of the specified submission states.",
-                                            "enum": [
-                                                "SUBMISSION_STATE_UNSPECIFIED",
-                                                "NEW",
-                                                "CREATED",
-                                                "TURNED_IN",
-                                                "RETURNED",
-                                                "RECLAIMED_BY_STUDENT"
-                                            ],
-                                            "location": "query",
-                                            "repeated": true,
-                                            "type": "string"
-                                        },
-                                        "userId": {
-                                            "description": "Optional argument to restrict returned student work to those owned by the\nstudent with the specified identifier. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "courseWorkId": {
-                                            "description": "Identifier of the student work to request.\nThis may be set to the string literal `\"-\"` to request student work for\nall course work in the specified course.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions",
-                                    "response": {
-                                        "$ref": "ListStudentSubmissionsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/classroom.coursework.me",
-                                        "https://www.googleapis.com/auth/classroom.coursework.me.readonly",
-                                        "https://www.googleapis.com/auth/classroom.coursework.students",
-                                        "https://www.googleapis.com/auth/classroom.coursework.students.readonly",
-                                        "https://www.googleapis.com/auth/classroom.student-submissions.me.readonly",
-                                        "https://www.googleapis.com/auth/classroom.student-submissions.students.readonly"
-                                    ]
-                                },
                                 "patch": {
                                     "description": "Updates one or more fields of a student submission.\n\nSee google.classroom.v1.StudentSubmission for details\nof which fields may be updated and who may change them.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting developer project did not create\nthe corresponding course work, if the user is not permitted to make the\nrequested modification to the student submission, or for\naccess errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.",
                                     "httpMethod": "PATCH",
@@ -1725,6 +1569,12 @@
                                         "id"
                                     ],
                                     "parameters": {
+                                        "id": {
+                                            "description": "Identifier of the student submission.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
                                         "courseWorkId": {
                                             "description": "Identifier of the course work.",
                                             "location": "path",
@@ -1736,12 +1586,6 @@
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
-                                        },
-                                        "id": {
-                                            "description": "Identifier of the student submission.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
                                         }
                                     },
                                     "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:return",
@@ -1794,6 +1638,162 @@
                                     "scopes": [
                                         "https://www.googleapis.com/auth/classroom.coursework.me"
                                     ]
+                                },
+                                "turnIn": {
+                                    "description": "Turns in a student submission.\n\nTurning in a student submission transfers ownership of attached Drive\nfiles to the teacher and may also update the submission state.\n\nThis may only be called by the student that owns the specified student\nsubmission.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, turn in the requested student submission,\nor for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.",
+                                    "httpMethod": "POST",
+                                    "id": "classroom.courses.courseWork.studentSubmissions.turnIn",
+                                    "parameterOrder": [
+                                        "courseId",
+                                        "courseWorkId",
+                                        "id"
+                                    ],
+                                    "parameters": {
+                                        "courseWorkId": {
+                                            "description": "Identifier of the course work.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "courseId": {
+                                            "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "id": {
+                                            "description": "Identifier of the student submission.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:turnIn",
+                                    "request": {
+                                        "$ref": "TurnInStudentSubmissionRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/classroom.coursework.me"
+                                    ]
+                                },
+                                "modifyAttachments": {
+                                    "description": "Modifies attachments of student submission.\n\nAttachments may only be added to student submissions belonging to course\nwork objects with a `workType` of `ASSIGNMENT`.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, if the user is not permitted to modify\nattachments on the requested student submission, or for\naccess errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.",
+                                    "httpMethod": "POST",
+                                    "id": "classroom.courses.courseWork.studentSubmissions.modifyAttachments",
+                                    "parameterOrder": [
+                                        "courseId",
+                                        "courseWorkId",
+                                        "id"
+                                    ],
+                                    "parameters": {
+                                        "courseWorkId": {
+                                            "description": "Identifier of the course work.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "courseId": {
+                                            "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "id": {
+                                            "description": "Identifier of the student submission.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:modifyAttachments",
+                                    "request": {
+                                        "$ref": "ModifyAttachmentsRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "StudentSubmission"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/classroom.coursework.me",
+                                        "https://www.googleapis.com/auth/classroom.coursework.students"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Returns a list of student submissions that the requester is permitted to\nview, factoring in the OAuth scopes of the request.\n`-` may be specified as the `course_work_id` to include student\nsubmissions for multiple course work items.\n\nCourse students may only view their own work. Course teachers\nand domain administrators may view all student submissions.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, or for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course does not exist.",
+                                    "httpMethod": "GET",
+                                    "id": "classroom.courses.courseWork.studentSubmissions.list",
+                                    "parameterOrder": [
+                                        "courseId",
+                                        "courseWorkId"
+                                    ],
+                                    "parameters": {
+                                        "userId": {
+                                            "description": "Optional argument to restrict returned student work to those owned by the\nstudent with the specified identifier. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "courseWorkId": {
+                                            "description": "Identifier of the student work to request.\nThis may be set to the string literal `\"-\"` to request student work for\nall course work in the specified course.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "courseId": {
+                                            "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "late": {
+                                            "description": "Requested lateness value. If specified, returned student submissions are\nrestricted by the requested value.\nIf unspecified, submissions are returned regardless of `late` value.",
+                                            "enum": [
+                                                "LATE_VALUES_UNSPECIFIED",
+                                                "LATE_ONLY",
+                                                "NOT_LATE_ONLY"
+                                            ],
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "states": {
+                                            "description": "Requested submission states. If specified, returned student submissions\nmatch one of the specified submission states.",
+                                            "enum": [
+                                                "SUBMISSION_STATE_UNSPECIFIED",
+                                                "NEW",
+                                                "CREATED",
+                                                "TURNED_IN",
+                                                "RETURNED",
+                                                "RECLAIMED_BY_STUDENT"
+                                            ],
+                                            "location": "query",
+                                            "repeated": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions",
+                                    "response": {
+                                        "$ref": "ListStudentSubmissionsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/classroom.coursework.me",
+                                        "https://www.googleapis.com/auth/classroom.coursework.me.readonly",
+                                        "https://www.googleapis.com/auth/classroom.coursework.students",
+                                        "https://www.googleapis.com/auth/classroom.coursework.students.readonly",
+                                        "https://www.googleapis.com/auth/classroom.student-submissions.me.readonly",
+                                        "https://www.googleapis.com/auth/classroom.student-submissions.students.readonly"
+                                    ]
                                 }
                             }
                         }
@@ -1810,14 +1810,14 @@
                                 "userId"
                             ],
                             "parameters": {
-                                "userId": {
-                                    "description": "Identifier of the teacher to delete. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user",
+                                "courseId": {
+                                    "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
                                 },
-                                "courseId": {
-                                    "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
+                                "userId": {
+                                    "description": "Identifier of the teacher to delete. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
@@ -1839,6 +1839,12 @@
                                 "courseId"
                             ],
                             "parameters": {
+                                "courseId": {
+                                    "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
                                 "pageToken": {
                                     "description": "nextPageToken\nvalue returned from a previous\nlist call, indicating that\nthe subsequent page of results should be returned.\n\nThe list request must be\notherwise identical to the one that resulted in this token.",
                                     "location": "query",
@@ -1849,12 +1855,6 @@
                                     "format": "int32",
                                     "location": "query",
                                     "type": "integer"
-                                },
-                                "courseId": {
-                                    "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
                                 }
                             },
                             "path": "v1/courses/{courseId}/teachers",
@@ -1934,475 +1934,9 @@
             }
         }
     },
-    "revision": "20171002",
+    "revision": "20171018",
     "rootUrl": "https://classroom.googleapis.com/",
     "schemas": {
-        "StateHistory": {
-            "description": "The history of each state this submission has been in.",
-            "id": "StateHistory",
-            "properties": {
-                "state": {
-                    "description": "The workflow pipeline stage.",
-                    "enum": [
-                        "STATE_UNSPECIFIED",
-                        "CREATED",
-                        "TURNED_IN",
-                        "RETURNED",
-                        "RECLAIMED_BY_STUDENT",
-                        "STUDENT_EDITED_AFTER_TURN_IN"
-                    ],
-                    "enumDescriptions": [
-                        "No state specified. This should never be returned.",
-                        "The Submission has been created.",
-                        "The student has turned in an assigned document, which may or may not be\na template.",
-                        "The teacher has returned the assigned document to the student.",
-                        "The student turned in the assigned document, and then chose to\n\"unsubmit\" the assignment, giving the student control again as the\nowner.",
-                        "The student edited their submission after turning it in. Currently,\nonly used by Questions, when the student edits their answer."
-                    ],
-                    "type": "string"
-                },
-                "stateTimestamp": {
-                    "description": "When the submission entered this state.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "actorUserId": {
-                    "description": "The teacher or student who made the change",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CourseMaterialSet": {
-            "description": "A set of materials that appears on the \"About\" page of the course.\nThese materials might include a syllabus, schedule, or other background\ninformation relating to the course as a whole.",
-            "id": "CourseMaterialSet",
-            "properties": {
-                "materials": {
-                    "description": "Materials attached to this set.",
-                    "items": {
-                        "$ref": "CourseMaterial"
-                    },
-                    "type": "array"
-                },
-                "title": {
-                    "description": "Title for this set.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListTeachersResponse": {
-            "description": "Response when listing teachers.",
-            "id": "ListTeachersResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.",
-                    "type": "string"
-                },
-                "teachers": {
-                    "description": "Teachers who match the list request.",
-                    "items": {
-                        "$ref": "Teacher"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Link": {
-            "description": "URL item.",
-            "id": "Link",
-            "properties": {
-                "url": {
-                    "description": "URL to link to.\nThis must be a valid UTF-8 string containing between 1 and 2024 characters.",
-                    "type": "string"
-                },
-                "title": {
-                    "description": "Title of the target of the URL.\n\nRead-only.",
-                    "type": "string"
-                },
-                "thumbnailUrl": {
-                    "description": "URL of a thumbnail image of the target URL.\n\nRead-only.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Date": {
-            "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.",
-            "id": "Date",
-            "properties": {
-                "month": {
-                    "description": "Month of year. Must be from 1 to 12.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "day": {
-                    "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "year": {
-                    "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "Name": {
-            "description": "Details of the user's name.",
-            "id": "Name",
-            "properties": {
-                "familyName": {
-                    "description": "The user's last name.\n\nRead-only.",
-                    "type": "string"
-                },
-                "givenName": {
-                    "description": "The user's first name.\n\nRead-only.",
-                    "type": "string"
-                },
-                "fullName": {
-                    "description": "The user's full name formed by concatenating the first and last name\nvalues.\n\nRead-only.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Assignment": {
-            "description": "Additional details for assignments.",
-            "id": "Assignment",
-            "properties": {
-                "studentWorkFolder": {
-                    "$ref": "DriveFolder",
-                    "description": "Drive folder where attachments from student submissions are placed.\nThis is only populated for course teachers and administrators."
-                }
-            },
-            "type": "object"
-        },
-        "SharedDriveFile": {
-            "description": "Drive file that is used as material for course work.",
-            "id": "SharedDriveFile",
-            "properties": {
-                "shareMode": {
-                    "description": "Mechanism by which students access the Drive item.",
-                    "enum": [
-                        "UNKNOWN_SHARE_MODE",
-                        "VIEW",
-                        "EDIT",
-                        "STUDENT_COPY"
-                    ],
-                    "enumDescriptions": [
-                        "No sharing mode specified. This should never be returned.",
-                        "Students can view the shared file.",
-                        "Students can edit the shared file.",
-                        "Students have a personal copy of the shared file."
-                    ],
-                    "type": "string"
-                },
-                "driveFile": {
-                    "$ref": "DriveFile",
-                    "description": "Drive file details."
-                }
-            },
-            "type": "object"
-        },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
-        "GlobalPermission": {
-            "description": "Global user permission description.",
-            "id": "GlobalPermission",
-            "properties": {
-                "permission": {
-                    "description": "Permission value.",
-                    "enum": [
-                        "PERMISSION_UNSPECIFIED",
-                        "CREATE_COURSE"
-                    ],
-                    "enumDescriptions": [
-                        "No permission is specified. This is not returned and is not a\nvalid value.",
-                        "User is permitted to create a course."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ModifyAnnouncementAssigneesRequest": {
-            "description": "Request to modify assignee mode and options of an announcement.",
-            "id": "ModifyAnnouncementAssigneesRequest",
-            "properties": {
-                "assigneeMode": {
-                    "description": "Mode of the announcement describing whether it will be accessible by all\nstudents or specified individual students.",
-                    "enum": [
-                        "ASSIGNEE_MODE_UNSPECIFIED",
-                        "ALL_STUDENTS",
-                        "INDIVIDUAL_STUDENTS"
-                    ],
-                    "enumDescriptions": [
-                        "No mode specified. This is never returned.",
-                        "All students can see the item.\nThis is the default state.",
-                        "A subset of the students can see the item."
-                    ],
-                    "type": "string"
-                },
-                "modifyIndividualStudentsOptions": {
-                    "$ref": "ModifyIndividualStudentsOptions",
-                    "description": "Set which students can view or cannot view the announcement.\nMust be specified only when `assigneeMode` is `INDIVIDUAL_STUDENTS`."
-                }
-            },
-            "type": "object"
-        },
-        "Teacher": {
-            "description": "Teacher of a course.",
-            "id": "Teacher",
-            "properties": {
-                "courseId": {
-                    "description": "Identifier of the course.\n\nRead-only.",
-                    "type": "string"
-                },
-                "profile": {
-                    "$ref": "UserProfile",
-                    "description": "Global user information for the teacher.\n\nRead-only."
-                },
-                "userId": {
-                    "description": "Identifier of the user.\n\nWhen specified as a parameter of a request, this identifier can be one of\nthe following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GradeHistory": {
-            "description": "The history of each grade on this submission.",
-            "id": "GradeHistory",
-            "properties": {
-                "actorUserId": {
-                    "description": "The teacher who made the grade change.",
-                    "type": "string"
-                },
-                "gradeChangeType": {
-                    "description": "The type of grade change at this time in the submission grade history.",
-                    "enum": [
-                        "UNKNOWN_GRADE_CHANGE_TYPE",
-                        "DRAFT_GRADE_POINTS_EARNED_CHANGE",
-                        "ASSIGNED_GRADE_POINTS_EARNED_CHANGE",
-                        "MAX_POINTS_CHANGE"
-                    ],
-                    "enumDescriptions": [
-                        "No grade change type specified. This should never be returned.",
-                        "A change in the numerator of the draft grade.",
-                        "A change in the numerator of the assigned grade.",
-                        "A change in the denominator of the grade."
-                    ],
-                    "type": "string"
-                },
-                "gradeTimestamp": {
-                    "description": "When the grade of the submission was changed.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "maxPoints": {
-                    "description": "The denominator of the grade at this time in the submission grade\nhistory.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "pointsEarned": {
-                    "description": "The numerator of the grade at this time in the submission grade history.",
-                    "format": "double",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "AssignmentSubmission": {
-            "description": "Student work for an assignment.",
-            "id": "AssignmentSubmission",
-            "properties": {
-                "attachments": {
-                    "description": "Attachments added by the student.\nDrive files that correspond to materials with a share mode of\nSTUDENT_COPY may not exist yet if the student has not accessed the\nassignment in Classroom.\n\nSome attachment metadata is only populated if the requesting user has\npermission to access it. Identifier and alternate_link fields are always\navailable, but others (e.g. title) may not be.",
-                    "items": {
-                        "$ref": "Attachment"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Material": {
-            "description": "Material attached to course work.\n\nWhen creating attachments, setting the `form` field is not supported.",
-            "id": "Material",
-            "properties": {
-                "driveFile": {
-                    "$ref": "SharedDriveFile",
-                    "description": "Google Drive file material."
-                },
-                "form": {
-                    "$ref": "Form",
-                    "description": "Google Forms material."
-                },
-                "link": {
-                    "$ref": "Link",
-                    "description": "Link material. On creation, will be upgraded to a more appropriate type\nif possible, and this will be reflected in the response."
-                },
-                "youtubeVideo": {
-                    "$ref": "YouTubeVideo",
-                    "description": "YouTube video material."
-                }
-            },
-            "type": "object"
-        },
-        "Feed": {
-            "description": "A class of notifications that an application can register to receive.\nFor example: \"all roster changes for a domain\".",
-            "id": "Feed",
-            "properties": {
-                "courseRosterChangesInfo": {
-                    "$ref": "CourseRosterChangesInfo",
-                    "description": "Information about a `Feed` with a `feed_type` of `COURSE_ROSTER_CHANGES`.\nThis field must be specified if `feed_type` is `COURSE_ROSTER_CHANGES`."
-                },
-                "feedType": {
-                    "description": "The type of feed.",
-                    "enum": [
-                        "FEED_TYPE_UNSPECIFIED",
-                        "DOMAIN_ROSTER_CHANGES",
-                        "COURSE_ROSTER_CHANGES"
-                    ],
-                    "enumDescriptions": [
-                        "Should never be returned or provided.",
-                        "All roster changes for a particular domain.\n\nNotifications will be generated whenever a user joins or leaves a course.\n\nNo notifications will be generated when an invitation is created or\ndeleted, but notifications will be generated when a user joins a course\nby accepting an invitation.",
-                        "All roster changes for a particular course.\n\nNotifications will be generated whenever a user joins or leaves a course.\n\nNo notifications will be generated when an invitation is created or\ndeleted, but notifications will be generated when a user joins a course\nby accepting an invitation."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Student": {
-            "description": "Student in a course.",
-            "id": "Student",
-            "properties": {
-                "studentWorkFolder": {
-                    "$ref": "DriveFolder",
-                    "description": "Information about a Drive Folder for this student's work in this course.\nOnly visible to the student and domain administrators.\n\nRead-only."
-                },
-                "profile": {
-                    "$ref": "UserProfile",
-                    "description": "Global user information for the student.\n\nRead-only."
-                },
-                "userId": {
-                    "description": "Identifier of the user.\n\nWhen specified as a parameter of a request, this identifier can be one of\nthe following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user",
-                    "type": "string"
-                },
-                "courseId": {
-                    "description": "Identifier of the course.\n\nRead-only.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Invitation": {
-            "description": "An invitation to join a course.",
-            "id": "Invitation",
-            "properties": {
-                "id": {
-                    "description": "Identifier assigned by Classroom.\n\nRead-only.",
-                    "type": "string"
-                },
-                "role": {
-                    "description": "Role to invite the user to have.\nMust not be `COURSE_ROLE_UNSPECIFIED`.",
-                    "enum": [
-                        "COURSE_ROLE_UNSPECIFIED",
-                        "STUDENT",
-                        "TEACHER",
-                        "OWNER"
-                    ],
-                    "enumDescriptions": [
-                        "No course role.",
-                        "Student in the course.",
-                        "Teacher of the course.",
-                        "Owner of the course."
-                    ],
-                    "type": "string"
-                },
-                "userId": {
-                    "description": "Identifier of the invited user.\n\nWhen specified as a parameter of a request, this identifier can be set to\none of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user",
-                    "type": "string"
-                },
-                "courseId": {
-                    "description": "Identifier of the course to invite the user to.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TurnInStudentSubmissionRequest": {
-            "description": "Request to turn in a student submission.",
-            "id": "TurnInStudentSubmissionRequest",
-            "properties": {},
-            "type": "object"
-        },
-        "ListCourseWorkResponse": {
-            "description": "Response when listing course work.",
-            "id": "ListCourseWorkResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.",
-                    "type": "string"
-                },
-                "courseWork": {
-                    "description": "Course work items that match the request.",
-                    "items": {
-                        "$ref": "CourseWork"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Attachment": {
-            "description": "Attachment added to student assignment work.\n\nWhen creating attachments, setting the `form` field is not supported.",
-            "id": "Attachment",
-            "properties": {
-                "youTubeVideo": {
-                    "$ref": "YouTubeVideo",
-                    "description": "Youtube video attachment."
-                },
-                "driveFile": {
-                    "$ref": "DriveFile",
-                    "description": "Google Drive file attachment."
-                },
-                "form": {
-                    "$ref": "Form",
-                    "description": "Google Forms attachment."
-                },
-                "link": {
-                    "$ref": "Link",
-                    "description": "Link attachment."
-                }
-            },
-            "type": "object"
-        },
-        "ListAnnouncementsResponse": {
-            "description": "Response when listing course work.",
-            "id": "ListAnnouncementsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.",
-                    "type": "string"
-                },
-                "announcements": {
-                    "description": "Announcement items that match the request.",
-                    "items": {
-                        "$ref": "Announcement"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "TimeOfDay": {
             "description": "Represents a time of day. The date and time zone are either not significant\nor are specified elsewhere. An API may choose to allow leap seconds. Related\ntypes are google.type.Date and `google.protobuf.Timestamp`.",
             "id": "TimeOfDay",
@@ -2434,16 +1968,16 @@
             "description": "Response when listing courses.",
             "id": "ListCoursesResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.",
-                    "type": "string"
-                },
                 "courses": {
                     "description": "Courses that match the list request.",
                     "items": {
                         "$ref": "Course"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2475,6 +2009,10 @@
             "description": "Request to modify assignee mode and options of a coursework.",
             "id": "ModifyCourseWorkAssigneesRequest",
             "properties": {
+                "modifyIndividualStudentsOptions": {
+                    "$ref": "ModifyIndividualStudentsOptions",
+                    "description": "Set which students are assigned or not assigned to the coursework.\nMust be specified only when `assigneeMode` is `INDIVIDUAL_STUDENTS`."
+                },
                 "assigneeMode": {
                     "description": "Mode of the coursework describing whether it will be assigned to all\nstudents or specified individual students.",
                     "enum": [
@@ -2488,10 +2026,6 @@
                         "A subset of the students can see the item."
                     ],
                     "type": "string"
-                },
-                "modifyIndividualStudentsOptions": {
-                    "$ref": "ModifyIndividualStudentsOptions",
-                    "description": "Set which students are assigned or not assigned to the coursework.\nMust be specified only when `assigneeMode` is `INDIVIDUAL_STUDENTS`."
                 }
             },
             "type": "object"
@@ -2547,16 +2081,16 @@
             "description": "Response when listing guardian invitations.",
             "id": "ListGuardianInvitationsResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.",
-                    "type": "string"
-                },
                 "guardianInvitations": {
                     "description": "Guardian invitations that matched the list request.",
                     "items": {
                         "$ref": "GuardianInvitation"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2575,17 +2109,6 @@
             },
             "type": "object"
         },
-        "MultipleChoiceSubmission": {
-            "description": "Student work for a multiple-choice question.",
-            "id": "MultipleChoiceSubmission",
-            "properties": {
-                "answer": {
-                    "description": "Student's select choice.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "Registration": {
             "description": "An instruction to Classroom to send notifications from the `feed` to the\nprovided `destination`.",
             "id": "Registration",
@@ -2610,6 +2133,17 @@
             },
             "type": "object"
         },
+        "MultipleChoiceSubmission": {
+            "description": "Student work for a multiple-choice question.",
+            "id": "MultipleChoiceSubmission",
+            "properties": {
+                "answer": {
+                    "description": "Student's select choice.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "CourseMaterial": {
             "description": "A material attached to a course as part of a material set.",
             "id": "CourseMaterial",
@@ -2651,14 +2185,19 @@
             "description": "A Course in Classroom.",
             "id": "Course",
             "properties": {
-                "teacherFolder": {
-                    "$ref": "DriveFolder",
-                    "description": "Information about a Drive Folder that is shared with all teachers of the\ncourse.\n\nThis field will only be set for teachers of the course and domain administrators.\n\nRead-only."
+                "creationTime": {
+                    "description": "Creation time of the course.\nSpecifying this field in a course update mask results in an error.\n\nRead-only.",
+                    "format": "google-datetime",
+                    "type": "string"
                 },
                 "name": {
                     "description": "Name of the course.\nFor example, \"10th Grade Biology\".\nThe name is required. It must be between 1 and 750 characters and a valid\nUTF-8 string.",
                     "type": "string"
                 },
+                "teacherFolder": {
+                    "$ref": "DriveFolder",
+                    "description": "Information about a Drive Folder that is shared with all teachers of the\ncourse.\n\nThis field will only be set for teachers of the course and domain administrators.\n\nRead-only."
+                },
                 "section": {
                     "description": "Section of the course.\nFor example, \"Period 2\".\nIf set, this field must be a valid UTF-8 string and no longer than 2800\ncharacters.",
                     "type": "string"
@@ -2707,10 +2246,6 @@
                     "description": "Whether or not guardian notifications are enabled for this course.\n\nRead-only.",
                     "type": "boolean"
                 },
-                "ownerId": {
-                    "description": "The identifier of the owner of a course.\n\nWhen specified as a parameter of a\ncreate course request, this\nfield is required.\nThe identifier can be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user\n\nThis must be set in a create request. Admins can also specify this field\nin a patch course request to\ntransfer ownership. In other contexts, it is read-only.",
-                    "type": "string"
-                },
                 "courseState": {
                     "description": "State of the course.\nIf unspecified, the default state is `PROVISIONED`.",
                     "enum": [
@@ -2731,6 +2266,10 @@
                     ],
                     "type": "string"
                 },
+                "ownerId": {
+                    "description": "The identifier of the owner of a course.\n\nWhen specified as a parameter of a\ncreate course request, this\nfield is required.\nThe identifier can be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user\n\nThis must be set in a create request. Admins can also specify this field\nin a patch course request to\ntransfer ownership. In other contexts, it is read-only.",
+                    "type": "string"
+                },
                 "description": {
                     "description": "Optional description.\nFor example, \"We'll be learning about the structure of living\ncreatures from a combination of textbooks, guest lectures, and lab work.\nExpect to be excited!\"\nIf set, this field must be a valid UTF-8 string and no longer than 30,000\ncharacters.",
                     "type": "string"
@@ -2738,11 +2277,6 @@
                 "teacherGroupEmail": {
                     "description": "The email address of a Google group containing all teachers of the course.\nThis group does not accept email and can only be used for permissions.\n\nRead-only.",
                     "type": "string"
-                },
-                "creationTime": {
-                    "description": "Creation time of the course.\nSpecifying this field in a course update mask results in an error.\n\nRead-only.",
-                    "format": "google-datetime",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2751,6 +2285,10 @@
             "description": "Representation of a Google Drive file.",
             "id": "DriveFile",
             "properties": {
+                "id": {
+                    "description": "Drive API resource ID.",
+                    "type": "string"
+                },
                 "title": {
                     "description": "Title of the Drive item.\n\nRead-only.",
                     "type": "string"
@@ -2762,10 +2300,6 @@
                 "thumbnailUrl": {
                     "description": "URL of a thumbnail image of the Drive item.\n\nRead-only.",
                     "type": "string"
-                },
-                "id": {
-                    "description": "Drive API resource ID.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2797,48 +2331,6 @@
             "description": "Course work created by a teacher for students of the course.",
             "id": "CourseWork",
             "properties": {
-                "dueTime": {
-                    "$ref": "TimeOfDay",
-                    "description": "Optional time of day, in UTC, that submissions for this this course work\nare due.\nThis must be specified if `due_date` is specified."
-                },
-                "title": {
-                    "description": "Title of this course work.\nThe title must be a valid UTF-8 string containing between 1 and 3000\ncharacters.",
-                    "type": "string"
-                },
-                "materials": {
-                    "description": "Additional materials.\n\nCourseWork must have no more than 20 material items.",
-                    "items": {
-                        "$ref": "Material"
-                    },
-                    "type": "array"
-                },
-                "associatedWithDeveloper": {
-                    "description": "Whether this course work item is associated with the Developer Console\nproject making the request.\n\nSee google.classroom.Work.CreateCourseWork for more\ndetails.\n\nRead-only.",
-                    "type": "boolean"
-                },
-                "updateTime": {
-                    "description": "Timestamp of the most recent change to this course work.\n\nRead-only.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "assigneeMode": {
-                    "description": "Assignee mode of the coursework.\nIf unspecified, the default value is `ALL_STUDENTS`.",
-                    "enum": [
-                        "ASSIGNEE_MODE_UNSPECIFIED",
-                        "ALL_STUDENTS",
-                        "INDIVIDUAL_STUDENTS"
-                    ],
-                    "enumDescriptions": [
-                        "No mode specified. This is never returned.",
-                        "All students can see the item.\nThis is the default state.",
-                        "A subset of the students can see the item."
-                    ],
-                    "type": "string"
-                },
-                "alternateLink": {
-                    "description": "Absolute link to this course work in the Classroom web UI.\nThis is only populated if `state` is `PUBLISHED`.\n\nRead-only.",
-                    "type": "string"
-                },
                 "maxPoints": {
                     "description": "Maximum grade for this course work.\nIf zero or unspecified, this assignment is considered ungraded.\nThis must be a non-negative integer value.",
                     "format": "double",
@@ -2882,30 +2374,16 @@
                     "format": "google-datetime",
                     "type": "string"
                 },
-                "creatorUserId": {
-                    "description": "Identifier for the user that created the coursework.\n\nRead-only.",
-                    "type": "string"
+                "dueDate": {
+                    "$ref": "Date",
+                    "description": "Optional date, in UTC, that submissions for this this course work are due.\nThis must be specified if `due_time` is specified."
                 },
                 "individualStudentsOptions": {
                     "$ref": "IndividualStudentsOptions",
                     "description": "Identifiers of students with access to the coursework.\nThis field is set only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.\nIf the `assigneeMode` is `INDIVIDUAL_STUDENTS`, then only students\nspecified in this field will be assigned the coursework."
                 },
-                "dueDate": {
-                    "$ref": "Date",
-                    "description": "Optional date, in UTC, that submissions for this this course work are due.\nThis must be specified if `due_time` is specified."
-                },
-                "submissionModificationMode": {
-                    "description": "Setting to determine when students are allowed to modify submissions.\nIf unspecified, the default value is `MODIFIABLE_UNTIL_TURNED_IN`.",
-                    "enum": [
-                        "SUBMISSION_MODIFICATION_MODE_UNSPECIFIED",
-                        "MODIFIABLE_UNTIL_TURNED_IN",
-                        "MODIFIABLE"
-                    ],
-                    "enumDescriptions": [
-                        "No modification mode specified. This is never returned.",
-                        "Submisisons can be modified before being turned in.",
-                        "Submisisons can be modified at any time."
-                    ],
+                "creatorUserId": {
+                    "description": "Identifier for the user that created the coursework.\n\nRead-only.",
                     "type": "string"
                 },
                 "state": {
@@ -2924,6 +2402,20 @@
                     ],
                     "type": "string"
                 },
+                "submissionModificationMode": {
+                    "description": "Setting to determine when students are allowed to modify submissions.\nIf unspecified, the default value is `MODIFIABLE_UNTIL_TURNED_IN`.",
+                    "enum": [
+                        "SUBMISSION_MODIFICATION_MODE_UNSPECIFIED",
+                        "MODIFIABLE_UNTIL_TURNED_IN",
+                        "MODIFIABLE"
+                    ],
+                    "enumDescriptions": [
+                        "No modification mode specified. This is never returned.",
+                        "Submisisons can be modified before being turned in.",
+                        "Submisisons can be modified at any time."
+                    ],
+                    "type": "string"
+                },
                 "courseId": {
                     "description": "Identifier of the course.\n\nRead-only.",
                     "type": "string"
@@ -2931,6 +2423,48 @@
                 "id": {
                     "description": "Classroom-assigned identifier of this course work, unique per course.\n\nRead-only.",
                     "type": "string"
+                },
+                "dueTime": {
+                    "$ref": "TimeOfDay",
+                    "description": "Optional time of day, in UTC, that submissions for this this course work\nare due.\nThis must be specified if `due_date` is specified."
+                },
+                "title": {
+                    "description": "Title of this course work.\nThe title must be a valid UTF-8 string containing between 1 and 3000\ncharacters.",
+                    "type": "string"
+                },
+                "associatedWithDeveloper": {
+                    "description": "Whether this course work item is associated with the Developer Console\nproject making the request.\n\nSee google.classroom.Work.CreateCourseWork for more\ndetails.\n\nRead-only.",
+                    "type": "boolean"
+                },
+                "materials": {
+                    "description": "Additional materials.\n\nCourseWork must have no more than 20 material items.",
+                    "items": {
+                        "$ref": "Material"
+                    },
+                    "type": "array"
+                },
+                "updateTime": {
+                    "description": "Timestamp of the most recent change to this course work.\n\nRead-only.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "assigneeMode": {
+                    "description": "Assignee mode of the coursework.\nIf unspecified, the default value is `ALL_STUDENTS`.",
+                    "enum": [
+                        "ASSIGNEE_MODE_UNSPECIFIED",
+                        "ALL_STUDENTS",
+                        "INDIVIDUAL_STUDENTS"
+                    ],
+                    "enumDescriptions": [
+                        "No mode specified. This is never returned.",
+                        "All students can see the item.\nThis is the default state.",
+                        "A subset of the students can see the item."
+                    ],
+                    "type": "string"
+                },
+                "alternateLink": {
+                    "description": "Absolute link to this course work in the Classroom web UI.\nThis is only populated if `state` is `PUBLISHED`.\n\nRead-only.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2980,6 +2514,18 @@
             "description": "Global information for a user.",
             "id": "UserProfile",
             "properties": {
+                "name": {
+                    "$ref": "Name",
+                    "description": "Name of the user.\n\nRead-only."
+                },
+                "id": {
+                    "description": "Identifier of the user.\n\nRead-only.",
+                    "type": "string"
+                },
+                "verifiedTeacher": {
+                    "description": "Represents whether a G Suite for Education user's domain administrator has\nexplicitly verified them as being a teacher. If the user is not a member of\na G Suite for Education domain, than this field will always be false.\n\nRead-only",
+                    "type": "boolean"
+                },
                 "emailAddress": {
                     "description": "Email address of the user.\n\nRead-only.",
                     "type": "string"
@@ -2994,18 +2540,6 @@
                         "$ref": "GlobalPermission"
                     },
                     "type": "array"
-                },
-                "name": {
-                    "$ref": "Name",
-                    "description": "Name of the user.\n\nRead-only."
-                },
-                "id": {
-                    "description": "Identifier of the user.\n\nRead-only.",
-                    "type": "string"
-                },
-                "verifiedTeacher": {
-                    "description": "Represents whether a G Suite for Education user's domain administrator has\nexplicitly verified them as being a teacher. If the user is not a member of\na G Suite for Education domain, than this field will always be false.\n\nRead-only",
-                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -3026,6 +2560,10 @@
                     "format": "google-datetime",
                     "type": "string"
                 },
+                "alternateLink": {
+                    "description": "Absolute link to this announcement in the Classroom web UI.\nThis is only populated if `state` is `PUBLISHED`.\n\nRead-only.",
+                    "type": "string"
+                },
                 "assigneeMode": {
                     "description": "Assignee mode of the announcement.\nIf unspecified, the default value is `ALL_STUDENTS`.",
                     "enum": [
@@ -3040,10 +2578,6 @@
                     ],
                     "type": "string"
                 },
-                "alternateLink": {
-                    "description": "Absolute link to this announcement in the Classroom web UI.\nThis is only populated if `state` is `PUBLISHED`.\n\nRead-only.",
-                    "type": "string"
-                },
                 "scheduledTime": {
                     "description": "Optional timestamp when this announcement is scheduled to be published.",
                     "format": "google-datetime",
@@ -3159,10 +2693,33 @@
             },
             "type": "object"
         },
+        "ListStudentSubmissionsResponse": {
+            "description": "Response when listing student submissions.",
+            "id": "ListStudentSubmissionsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.",
+                    "type": "string"
+                },
+                "studentSubmissions": {
+                    "description": "Student work that matches the request.",
+                    "items": {
+                        "$ref": "StudentSubmission"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "StudentSubmission": {
             "description": "Student submission for course work.\n\nStudentSubmission items are generated when a CourseWork item is created.\n\nStudentSubmissions that have never been accessed (i.e. with `state` = NEW)\nmay not have a creation time or update time.",
             "id": "StudentSubmission",
             "properties": {
+                "creationTime": {
+                    "description": "Creation time of this submission.\nThis may be unset if the student has not accessed this item.\n\nRead-only.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
                 "state": {
                     "description": "State of this submission.\n\nRead-only.",
                     "enum": [
@@ -3219,14 +2776,14 @@
                     "$ref": "AssignmentSubmission",
                     "description": "Submission content when course_work_type is ASSIGNMENT.\n\nStudents can modify this content using\ngoogle.classroom.Work.ModifyAttachments."
                 },
-                "associatedWithDeveloper": {
-                    "description": "Whether this student submission is associated with the Developer Console\nproject making the request.\n\nSee google.classroom.Work.CreateCourseWork for more\ndetails.\n\nRead-only.",
-                    "type": "boolean"
-                },
                 "shortAnswerSubmission": {
                     "$ref": "ShortAnswerSubmission",
                     "description": "Submission content when course_work_type is SHORT_ANSWER_QUESTION."
                 },
+                "associatedWithDeveloper": {
+                    "description": "Whether this student submission is associated with the Developer Console\nproject making the request.\n\nSee google.classroom.Work.CreateCourseWork for more\ndetails.\n\nRead-only.",
+                    "type": "boolean"
+                },
                 "updateTime": {
                     "description": "Last update time of this submission.\nThis may be unset if the student has not accessed this item.\n\nRead-only.",
                     "format": "google-datetime",
@@ -3260,29 +2817,6 @@
                         "A multiple-choice question."
                     ],
                     "type": "string"
-                },
-                "creationTime": {
-                    "description": "Creation time of this submission.\nThis may be unset if the student has not accessed this item.\n\nRead-only.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListStudentSubmissionsResponse": {
-            "description": "Response when listing student submissions.",
-            "id": "ListStudentSubmissionsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.",
-                    "type": "string"
-                },
-                "studentSubmissions": {
-                    "description": "Student work that matches the request.",
-                    "items": {
-                        "$ref": "StudentSubmission"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -3305,6 +2839,10 @@
             "description": "YouTube video item.",
             "id": "YouTubeVideo",
             "properties": {
+                "thumbnailUrl": {
+                    "description": "URL of a thumbnail image of the YouTube video.\n\nRead-only.",
+                    "type": "string"
+                },
                 "id": {
                     "description": "YouTube API resource ID.",
                     "type": "string"
@@ -3316,10 +2854,6 @@
                 "alternateLink": {
                     "description": "URL that can be used to view the YouTube video.\n\nRead-only.",
                     "type": "string"
-                },
-                "thumbnailUrl": {
-                    "description": "URL of a thumbnail image of the YouTube video.\n\nRead-only.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -3357,10 +2891,6 @@
             "description": "An invitation to become the guardian of a specified user, sent to a specified\nemail address.",
             "id": "GuardianInvitation",
             "properties": {
-                "invitedEmailAddress": {
-                    "description": "Email address that the invitation was sent to.\nThis field is only visible to domain administrators.",
-                    "type": "string"
-                },
                 "creationTime": {
                     "description": "The time that this invitation was created.\n\nRead-only.",
                     "format": "google-datetime",
@@ -3387,6 +2917,476 @@
                 "studentId": {
                     "description": "ID of the student (in standard format)",
                     "type": "string"
+                },
+                "invitedEmailAddress": {
+                    "description": "Email address that the invitation was sent to.\nThis field is only visible to domain administrators.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "StateHistory": {
+            "description": "The history of each state this submission has been in.",
+            "id": "StateHistory",
+            "properties": {
+                "state": {
+                    "description": "The workflow pipeline stage.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "CREATED",
+                        "TURNED_IN",
+                        "RETURNED",
+                        "RECLAIMED_BY_STUDENT",
+                        "STUDENT_EDITED_AFTER_TURN_IN"
+                    ],
+                    "enumDescriptions": [
+                        "No state specified. This should never be returned.",
+                        "The Submission has been created.",
+                        "The student has turned in an assigned document, which may or may not be\na template.",
+                        "The teacher has returned the assigned document to the student.",
+                        "The student turned in the assigned document, and then chose to\n\"unsubmit\" the assignment, giving the student control again as the\nowner.",
+                        "The student edited their submission after turning it in. Currently,\nonly used by Questions, when the student edits their answer."
+                    ],
+                    "type": "string"
+                },
+                "stateTimestamp": {
+                    "description": "When the submission entered this state.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "actorUserId": {
+                    "description": "The teacher or student who made the change",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CourseMaterialSet": {
+            "description": "A set of materials that appears on the \"About\" page of the course.\nThese materials might include a syllabus, schedule, or other background\ninformation relating to the course as a whole.",
+            "id": "CourseMaterialSet",
+            "properties": {
+                "materials": {
+                    "description": "Materials attached to this set.",
+                    "items": {
+                        "$ref": "CourseMaterial"
+                    },
+                    "type": "array"
+                },
+                "title": {
+                    "description": "Title for this set.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListTeachersResponse": {
+            "description": "Response when listing teachers.",
+            "id": "ListTeachersResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.",
+                    "type": "string"
+                },
+                "teachers": {
+                    "description": "Teachers who match the list request.",
+                    "items": {
+                        "$ref": "Teacher"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Link": {
+            "description": "URL item.",
+            "id": "Link",
+            "properties": {
+                "thumbnailUrl": {
+                    "description": "URL of a thumbnail image of the target URL.\n\nRead-only.",
+                    "type": "string"
+                },
+                "url": {
+                    "description": "URL to link to.\nThis must be a valid UTF-8 string containing between 1 and 2024 characters.",
+                    "type": "string"
+                },
+                "title": {
+                    "description": "Title of the target of the URL.\n\nRead-only.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Date": {
+            "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.",
+            "id": "Date",
+            "properties": {
+                "day": {
+                    "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "year": {
+                    "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "month": {
+                    "description": "Month of year. Must be from 1 to 12.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "Name": {
+            "description": "Details of the user's name.",
+            "id": "Name",
+            "properties": {
+                "familyName": {
+                    "description": "The user's last name.\n\nRead-only.",
+                    "type": "string"
+                },
+                "givenName": {
+                    "description": "The user's first name.\n\nRead-only.",
+                    "type": "string"
+                },
+                "fullName": {
+                    "description": "The user's full name formed by concatenating the first and last name\nvalues.\n\nRead-only.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Assignment": {
+            "description": "Additional details for assignments.",
+            "id": "Assignment",
+            "properties": {
+                "studentWorkFolder": {
+                    "$ref": "DriveFolder",
+                    "description": "Drive folder where attachments from student submissions are placed.\nThis is only populated for course teachers and administrators."
+                }
+            },
+            "type": "object"
+        },
+        "SharedDriveFile": {
+            "description": "Drive file that is used as material for course work.",
+            "id": "SharedDriveFile",
+            "properties": {
+                "shareMode": {
+                    "description": "Mechanism by which students access the Drive item.",
+                    "enum": [
+                        "UNKNOWN_SHARE_MODE",
+                        "VIEW",
+                        "EDIT",
+                        "STUDENT_COPY"
+                    ],
+                    "enumDescriptions": [
+                        "No sharing mode specified. This should never be returned.",
+                        "Students can view the shared file.",
+                        "Students can edit the shared file.",
+                        "Students have a personal copy of the shared file."
+                    ],
+                    "type": "string"
+                },
+                "driveFile": {
+                    "$ref": "DriveFile",
+                    "description": "Drive file details."
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "ModifyAnnouncementAssigneesRequest": {
+            "description": "Request to modify assignee mode and options of an announcement.",
+            "id": "ModifyAnnouncementAssigneesRequest",
+            "properties": {
+                "assigneeMode": {
+                    "description": "Mode of the announcement describing whether it will be accessible by all\nstudents or specified individual students.",
+                    "enum": [
+                        "ASSIGNEE_MODE_UNSPECIFIED",
+                        "ALL_STUDENTS",
+                        "INDIVIDUAL_STUDENTS"
+                    ],
+                    "enumDescriptions": [
+                        "No mode specified. This is never returned.",
+                        "All students can see the item.\nThis is the default state.",
+                        "A subset of the students can see the item."
+                    ],
+                    "type": "string"
+                },
+                "modifyIndividualStudentsOptions": {
+                    "$ref": "ModifyIndividualStudentsOptions",
+                    "description": "Set which students can view or cannot view the announcement.\nMust be specified only when `assigneeMode` is `INDIVIDUAL_STUDENTS`."
+                }
+            },
+            "type": "object"
+        },
+        "GlobalPermission": {
+            "description": "Global user permission description.",
+            "id": "GlobalPermission",
+            "properties": {
+                "permission": {
+                    "description": "Permission value.",
+                    "enum": [
+                        "PERMISSION_UNSPECIFIED",
+                        "CREATE_COURSE"
+                    ],
+                    "enumDescriptions": [
+                        "No permission is specified. This is not returned and is not a\nvalid value.",
+                        "User is permitted to create a course."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Teacher": {
+            "description": "Teacher of a course.",
+            "id": "Teacher",
+            "properties": {
+                "profile": {
+                    "$ref": "UserProfile",
+                    "description": "Global user information for the teacher.\n\nRead-only."
+                },
+                "userId": {
+                    "description": "Identifier of the user.\n\nWhen specified as a parameter of a request, this identifier can be one of\nthe following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user",
+                    "type": "string"
+                },
+                "courseId": {
+                    "description": "Identifier of the course.\n\nRead-only.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GradeHistory": {
+            "description": "The history of each grade on this submission.",
+            "id": "GradeHistory",
+            "properties": {
+                "actorUserId": {
+                    "description": "The teacher who made the grade change.",
+                    "type": "string"
+                },
+                "gradeChangeType": {
+                    "description": "The type of grade change at this time in the submission grade history.",
+                    "enum": [
+                        "UNKNOWN_GRADE_CHANGE_TYPE",
+                        "DRAFT_GRADE_POINTS_EARNED_CHANGE",
+                        "ASSIGNED_GRADE_POINTS_EARNED_CHANGE",
+                        "MAX_POINTS_CHANGE"
+                    ],
+                    "enumDescriptions": [
+                        "No grade change type specified. This should never be returned.",
+                        "A change in the numerator of the draft grade.",
+                        "A change in the numerator of the assigned grade.",
+                        "A change in the denominator of the grade."
+                    ],
+                    "type": "string"
+                },
+                "gradeTimestamp": {
+                    "description": "When the grade of the submission was changed.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "maxPoints": {
+                    "description": "The denominator of the grade at this time in the submission grade\nhistory.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "pointsEarned": {
+                    "description": "The numerator of the grade at this time in the submission grade history.",
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "AssignmentSubmission": {
+            "description": "Student work for an assignment.",
+            "id": "AssignmentSubmission",
+            "properties": {
+                "attachments": {
+                    "description": "Attachments added by the student.\nDrive files that correspond to materials with a share mode of\nSTUDENT_COPY may not exist yet if the student has not accessed the\nassignment in Classroom.\n\nSome attachment metadata is only populated if the requesting user has\npermission to access it. Identifier and alternate_link fields are always\navailable, but others (e.g. title) may not be.",
+                    "items": {
+                        "$ref": "Attachment"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Material": {
+            "description": "Material attached to course work.\n\nWhen creating attachments, setting the `form` field is not supported.",
+            "id": "Material",
+            "properties": {
+                "form": {
+                    "$ref": "Form",
+                    "description": "Google Forms material."
+                },
+                "link": {
+                    "$ref": "Link",
+                    "description": "Link material. On creation, will be upgraded to a more appropriate type\nif possible, and this will be reflected in the response."
+                },
+                "youtubeVideo": {
+                    "$ref": "YouTubeVideo",
+                    "description": "YouTube video material."
+                },
+                "driveFile": {
+                    "$ref": "SharedDriveFile",
+                    "description": "Google Drive file material."
+                }
+            },
+            "type": "object"
+        },
+        "Feed": {
+            "description": "A class of notifications that an application can register to receive.\nFor example: \"all roster changes for a domain\".",
+            "id": "Feed",
+            "properties": {
+                "feedType": {
+                    "description": "The type of feed.",
+                    "enum": [
+                        "FEED_TYPE_UNSPECIFIED",
+                        "DOMAIN_ROSTER_CHANGES",
+                        "COURSE_ROSTER_CHANGES"
+                    ],
+                    "enumDescriptions": [
+                        "Should never be returned or provided.",
+                        "All roster changes for a particular domain.\n\nNotifications will be generated whenever a user joins or leaves a course.\n\nNo notifications will be generated when an invitation is created or\ndeleted, but notifications will be generated when a user joins a course\nby accepting an invitation.",
+                        "All roster changes for a particular course.\n\nNotifications will be generated whenever a user joins or leaves a course.\n\nNo notifications will be generated when an invitation is created or\ndeleted, but notifications will be generated when a user joins a course\nby accepting an invitation."
+                    ],
+                    "type": "string"
+                },
+                "courseRosterChangesInfo": {
+                    "$ref": "CourseRosterChangesInfo",
+                    "description": "Information about a `Feed` with a `feed_type` of `COURSE_ROSTER_CHANGES`.\nThis field must be specified if `feed_type` is `COURSE_ROSTER_CHANGES`."
+                }
+            },
+            "type": "object"
+        },
+        "Student": {
+            "description": "Student in a course.",
+            "id": "Student",
+            "properties": {
+                "studentWorkFolder": {
+                    "$ref": "DriveFolder",
+                    "description": "Information about a Drive Folder for this student's work in this course.\nOnly visible to the student and domain administrators.\n\nRead-only."
+                },
+                "profile": {
+                    "$ref": "UserProfile",
+                    "description": "Global user information for the student.\n\nRead-only."
+                },
+                "userId": {
+                    "description": "Identifier of the user.\n\nWhen specified as a parameter of a request, this identifier can be one of\nthe following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user",
+                    "type": "string"
+                },
+                "courseId": {
+                    "description": "Identifier of the course.\n\nRead-only.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Invitation": {
+            "description": "An invitation to join a course.",
+            "id": "Invitation",
+            "properties": {
+                "role": {
+                    "description": "Role to invite the user to have.\nMust not be `COURSE_ROLE_UNSPECIFIED`.",
+                    "enum": [
+                        "COURSE_ROLE_UNSPECIFIED",
+                        "STUDENT",
+                        "TEACHER",
+                        "OWNER"
+                    ],
+                    "enumDescriptions": [
+                        "No course role.",
+                        "Student in the course.",
+                        "Teacher of the course.",
+                        "Owner of the course."
+                    ],
+                    "type": "string"
+                },
+                "userId": {
+                    "description": "Identifier of the invited user.\n\nWhen specified as a parameter of a request, this identifier can be set to\none of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user",
+                    "type": "string"
+                },
+                "courseId": {
+                    "description": "Identifier of the course to invite the user to.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "Identifier assigned by Classroom.\n\nRead-only.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TurnInStudentSubmissionRequest": {
+            "description": "Request to turn in a student submission.",
+            "id": "TurnInStudentSubmissionRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "ListCourseWorkResponse": {
+            "description": "Response when listing course work.",
+            "id": "ListCourseWorkResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.",
+                    "type": "string"
+                },
+                "courseWork": {
+                    "description": "Course work items that match the request.",
+                    "items": {
+                        "$ref": "CourseWork"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Attachment": {
+            "description": "Attachment added to student assignment work.\n\nWhen creating attachments, setting the `form` field is not supported.",
+            "id": "Attachment",
+            "properties": {
+                "youTubeVideo": {
+                    "$ref": "YouTubeVideo",
+                    "description": "Youtube video attachment."
+                },
+                "driveFile": {
+                    "$ref": "DriveFile",
+                    "description": "Google Drive file attachment."
+                },
+                "form": {
+                    "$ref": "Form",
+                    "description": "Google Forms attachment."
+                },
+                "link": {
+                    "$ref": "Link",
+                    "description": "Link attachment."
+                }
+            },
+            "type": "object"
+        },
+        "ListAnnouncementsResponse": {
+            "description": "Response when listing course work.",
+            "id": "ListAnnouncementsResponse",
+            "properties": {
+                "announcements": {
+                    "description": "Announcement items that match the request.",
+                    "items": {
+                        "$ref": "Announcement"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.",
+                    "type": "string"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/cloudbuild__v1.json b/discovery/googleapis/cloudbuild__v1.json
index f8bac78..2cf75ec 100644
--- a/discovery/googleapis/cloudbuild__v1.json
+++ b/discovery/googleapis/cloudbuild__v1.json
@@ -114,10 +114,131 @@
     },
     "protocol": "rest",
     "resources": {
+        "operations": {
+            "methods": {
+                "cancel": {
+                    "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
+                    "httpMethod": "POST",
+                    "id": "cloudbuild.operations.cancel",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The name of the operation resource to be cancelled.",
+                            "location": "path",
+                            "pattern": "^operations/.+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+name}:cancel",
+                    "request": {
+                        "$ref": "CancelOperationRequest"
+                    },
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "get": {
+                    "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+                    "httpMethod": "GET",
+                    "id": "cloudbuild.operations.get",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The name of the operation resource.",
+                            "location": "path",
+                            "pattern": "^operations/.+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+name}",
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "list": {
+                    "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+                    "httpMethod": "GET",
+                    "id": "cloudbuild.operations.list",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "pageToken": {
+                            "description": "The standard list page token.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "name": {
+                            "description": "The name of the operation's parent resource.",
+                            "location": "path",
+                            "pattern": "^operations$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "pageSize": {
+                            "description": "The standard list page size.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        },
+                        "filter": {
+                            "description": "The standard list filter.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+name}",
+                    "response": {
+                        "$ref": "ListOperationsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                }
+            }
+        },
         "projects": {
             "resources": {
                 "builds": {
                     "methods": {
+                        "create": {
+                            "description": "Starts a build with the specified configuration.\n\nThe long-running Operation returned by this method will include the ID of\nthe build, which can be passed to GetBuild to determine its status (e.g.,\nsuccess or failure).",
+                            "httpMethod": "POST",
+                            "id": "cloudbuild.projects.builds.create",
+                            "parameterOrder": [
+                                "projectId"
+                            ],
+                            "parameters": {
+                                "projectId": {
+                                    "description": "ID of the project.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/projects/{projectId}/builds",
+                            "request": {
+                                "$ref": "Build"
+                            },
+                            "response": {
+                                "$ref": "Operation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
                         "cancel": {
                             "description": "Cancels a requested build in progress.",
                             "httpMethod": "POST",
@@ -159,6 +280,11 @@
                                 "projectId"
                             ],
                             "parameters": {
+                                "filter": {
+                                    "description": "The raw filter text to constrain the results.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "pageToken": {
                                     "description": "Token to provide to skip to a particular spot in the list.",
                                     "location": "query",
@@ -175,11 +301,6 @@
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
-                                },
-                                "filter": {
-                                    "description": "The raw filter text to constrain the results.",
-                                    "location": "query",
-                                    "type": "string"
                                 }
                             },
                             "path": "v1/projects/{projectId}/builds",
@@ -199,14 +320,14 @@
                                 "id"
                             ],
                             "parameters": {
-                                "projectId": {
-                                    "description": "ID of the project.",
+                                "id": {
+                                    "description": "ID of the build.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
                                 },
-                                "id": {
-                                    "description": "ID of the build.",
+                                "projectId": {
+                                    "description": "ID of the project.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
@@ -219,37 +340,37 @@
                             "scopes": [
                                 "https://www.googleapis.com/auth/cloud-platform"
                             ]
-                        },
-                        "create": {
-                            "description": "Starts a build with the specified configuration.\n\nThe long-running Operation returned by this method will include the ID of\nthe build, which can be passed to GetBuild to determine its status (e.g.,\nsuccess or failure).",
-                            "httpMethod": "POST",
-                            "id": "cloudbuild.projects.builds.create",
-                            "parameterOrder": [
-                                "projectId"
-                            ],
-                            "parameters": {
-                                "projectId": {
-                                    "description": "ID of the project.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/projects/{projectId}/builds",
-                            "request": {
-                                "$ref": "Build"
-                            },
-                            "response": {
-                                "$ref": "Operation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
                         }
                     }
                 },
                 "triggers": {
                     "methods": {
+                        "create": {
+                            "description": "Creates a new BuildTrigger.\n\nThis API is experimental.",
+                            "httpMethod": "POST",
+                            "id": "cloudbuild.projects.triggers.create",
+                            "parameterOrder": [
+                                "projectId"
+                            ],
+                            "parameters": {
+                                "projectId": {
+                                    "description": "ID of the project for which to configure automatic builds.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/projects/{projectId}/triggers",
+                            "request": {
+                                "$ref": "BuildTrigger"
+                            },
+                            "response": {
+                                "$ref": "BuildTrigger"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
                         "delete": {
                             "description": "Deletes an BuildTrigger by its project ID and trigger ID.\n\nThis API is experimental.",
                             "httpMethod": "DELETE",
@@ -365,136 +486,127 @@
                             "scopes": [
                                 "https://www.googleapis.com/auth/cloud-platform"
                             ]
-                        },
-                        "create": {
-                            "description": "Creates a new BuildTrigger.\n\nThis API is experimental.",
-                            "httpMethod": "POST",
-                            "id": "cloudbuild.projects.triggers.create",
-                            "parameterOrder": [
-                                "projectId"
-                            ],
-                            "parameters": {
-                                "projectId": {
-                                    "description": "ID of the project for which to configure automatic builds.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/projects/{projectId}/triggers",
-                            "request": {
-                                "$ref": "BuildTrigger"
-                            },
-                            "response": {
-                                "$ref": "BuildTrigger"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
                         }
                     }
                 }
             }
-        },
-        "operations": {
-            "methods": {
-                "cancel": {
-                    "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
-                    "httpMethod": "POST",
-                    "id": "cloudbuild.operations.cancel",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The name of the operation resource to be cancelled.",
-                            "location": "path",
-                            "pattern": "^operations/.+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+name}:cancel",
-                    "request": {
-                        "$ref": "CancelOperationRequest"
-                    },
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
-                "get": {
-                    "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
-                    "httpMethod": "GET",
-                    "id": "cloudbuild.operations.get",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The name of the operation resource.",
-                            "location": "path",
-                            "pattern": "^operations/.+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+name}",
-                    "response": {
-                        "$ref": "Operation"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
-                "list": {
-                    "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
-                    "httpMethod": "GET",
-                    "id": "cloudbuild.operations.list",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "filter": {
-                            "description": "The standard list filter.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageToken": {
-                            "description": "The standard list page token.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "name": {
-                            "description": "The name of the operation's parent resource.",
-                            "location": "path",
-                            "pattern": "^operations$",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "pageSize": {
-                            "description": "The standard list page size.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        }
-                    },
-                    "path": "v1/{+name}",
-                    "response": {
-                        "$ref": "ListOperationsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                }
-            }
         }
     },
-    "revision": "20171004",
+    "revision": "20171019",
     "rootUrl": "https://cloudbuild.googleapis.com/",
     "schemas": {
+        "Volume": {
+            "description": "Volume describes a Docker container volume which is mounted into build steps\nin order to persist files across build step execution.",
+            "id": "Volume",
+            "properties": {
+                "path": {
+                    "description": "Path at which to mount the volume.\n\nPaths must be absolute and cannot conflict with other volume paths on the\nsame build step or with certain reserved volume paths.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Name of the volume to mount.\n\nVolume names must be unique per build step and must be valid names for\nDocker volumes. Each named volume must be used by at least two build steps.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListBuildsResponse": {
+            "description": "Response including listed builds.",
+            "id": "ListBuildsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Token to receive the next page of results.",
+                    "type": "string"
+                },
+                "builds": {
+                    "description": "Builds will be sorted by create_time, descending.",
+                    "items": {
+                        "$ref": "Build"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListOperationsResponse": {
+            "description": "The response message for Operations.ListOperations.",
+            "id": "ListOperationsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
+                "operations": {
+                    "description": "A list of operations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Operation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Source": {
+            "description": "Source describes the location of the source in a supported storage\nservice.",
+            "id": "Source",
+            "properties": {
+                "storageSource": {
+                    "$ref": "StorageSource",
+                    "description": "If provided, get the source from this location in Google Cloud Storage."
+                },
+                "repoSource": {
+                    "$ref": "RepoSource",
+                    "description": "If provided, get source from this location in a Cloud Repo."
+                }
+            },
+            "type": "object"
+        },
+        "BuildOptions": {
+            "description": "Optional arguments to enable specific features of builds.",
+            "id": "BuildOptions",
+            "properties": {
+                "sourceProvenanceHash": {
+                    "description": "Requested hash for SourceProvenance.",
+                    "enumDescriptions": [
+                        "No hash requested.",
+                        "Use a sha256 hash."
+                    ],
+                    "items": {
+                        "enum": [
+                            "NONE",
+                            "SHA256"
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "substitutionOption": {
+                    "description": "SubstitutionOption to allow unmatch substitutions.",
+                    "enum": [
+                        "MUST_MATCH",
+                        "ALLOW_LOOSE"
+                    ],
+                    "enumDescriptions": [
+                        "Fails the build if error in substitutions checks, like missing\na substitution in the template or in the map.",
+                        "Do not fail the build if error in substitutions checks."
+                    ],
+                    "type": "string"
+                },
+                "requestedVerifyOption": {
+                    "description": "Requested verifiability options.",
+                    "enum": [
+                        "NOT_VERIFIED",
+                        "VERIFIED"
+                    ],
+                    "enumDescriptions": [
+                        "Not a verifiable build. (default)",
+                        "Verified build."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "StorageSource": {
             "description": "StorageSource describes the location of the source in an archive file in\nGoogle Cloud Storage.",
             "id": "StorageSource",
@@ -551,10 +663,6 @@
             "description": "Provenance of the source. Ways to find the original source, or verify that\nsome source was used for this build.",
             "id": "SourceProvenance",
             "properties": {
-                "resolvedStorageSource": {
-                    "$ref": "StorageSource",
-                    "description": "A copy of the build's source.storage_source, if exists, with any\ngenerations resolved."
-                },
                 "fileHashes": {
                     "additionalProperties": {
                         "$ref": "FileHashes"
@@ -565,6 +673,10 @@
                 "resolvedRepoSource": {
                     "$ref": "RepoSource",
                     "description": "A copy of the build's source.repo_source, if exists, with any\nrevisions resolved."
+                },
+                "resolvedStorageSource": {
+                    "$ref": "StorageSource",
+                    "description": "A copy of the build's source.storage_source, if exists, with any\ngenerations resolved."
                 }
             },
             "type": "object"
@@ -643,11 +755,6 @@
             "description": "Container message for hash values.",
             "id": "Hash",
             "properties": {
-                "value": {
-                    "description": "The hash value.",
-                    "format": "byte",
-                    "type": "string"
-                },
                 "type": {
                     "description": "The type of hash that was performed.",
                     "enum": [
@@ -659,6 +766,11 @@
                         "Use a sha256 hash."
                     ],
                     "type": "string"
+                },
+                "value": {
+                    "description": "The hash value.",
+                    "format": "byte",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -705,15 +817,15 @@
                     "description": "Working directory (relative to project source root) to use when running\nthis operation's container.",
                     "type": "string"
                 },
-                "waitFor": {
-                    "description": "The ID(s) of the step(s) that this build step depends on.\nThis build step will not start until all the build steps in wait_for\nhave completed successfully. If wait_for is empty, this build step will\nstart when all previous build steps in the Build.Steps list have completed\nsuccessfully.",
+                "env": {
+                    "description": "A list of environment variable definitions to be used when running a step.\n\nThe elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\"\nbeing given the value \"VALUE\".",
                     "items": {
                         "type": "string"
                     },
                     "type": "array"
                 },
-                "env": {
-                    "description": "A list of environment variable definitions to be used when running a step.\n\nThe elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\"\nbeing given the value \"VALUE\".",
+                "waitFor": {
+                    "description": "The ID(s) of the step(s) that this build step depends on.\nThis build step will not start until all the build steps in wait_for\nhave completed successfully. If wait_for is empty, this build step will\nstart when all previous build steps in the Build.Steps list have completed\nsuccessfully.",
                     "items": {
                         "type": "string"
                     },
@@ -734,16 +846,16 @@
                     "description": "Optional entrypoint to be used instead of the build step image's default\nIf unset, the image's default will be used.",
                     "type": "string"
                 },
+                "id": {
+                    "description": "Optional unique identifier for this build step, used in wait_for to\nreference this build step as a dependency.",
+                    "type": "string"
+                },
                 "secretEnv": {
                     "description": "A list of environment variables which are encrypted using a Cloud KMS\ncrypto key. These values must be specified in the build's secrets.",
                     "items": {
                         "type": "string"
                     },
                     "type": "array"
-                },
-                "id": {
-                    "description": "Optional unique identifier for this build step, used in wait_for to\nreference this build step as a dependency.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -785,6 +897,10 @@
             "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
             "id": "Status",
             "properties": {
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
                 "details": {
                     "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
                     "items": {
@@ -800,10 +916,6 @@
                     "description": "The status code, which should be an enum value of google.rpc.Code.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -846,13 +958,13 @@
                     "description": "If true, the trigger will never result in a build.",
                     "type": "boolean"
                 },
-                "filename": {
-                    "description": "Path, from the source root, to a file whose contents is used for the\ntemplate.",
-                    "type": "string"
-                },
                 "triggerTemplate": {
                     "$ref": "RepoSource",
                     "description": "Template describing the types of source changes to trigger a build.\n\nBranch and tag names in trigger templates are interpreted as regular\nexpressions. Any branch or tag change that matches that regular expression\nwill trigger a build."
+                },
+                "filename": {
+                    "description": "Path, from the source root, to a file whose contents is used for the\ntemplate.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -861,6 +973,70 @@
             "description": "A build resource in the Container Builder API.\n\nAt a high level, a Build describes where to find source code, how to build\nit (for example, the builder image to run on the source), and what tag to\napply to the built image when it is pushed to Google Container Registry.\n\nFields can include the following variables which will be expanded when the\nbuild is created:\n\n- $PROJECT_ID: the project ID of the build.\n- $BUILD_ID: the autogenerated ID of the build.\n- $REPO_NAME: the source repository name specified by RepoSource.\n- $BRANCH_NAME: the branch name specified by RepoSource.\n- $TAG_NAME: the tag name specified by RepoSource.\n- $REVISION_ID or $COMMIT_SHA: the commit SHA specified by RepoSource or\n  resolved from the specified branch or tag.\n- $SHORT_SHA: first 7 characters of $REVISION_ID or $COMMIT_SHA.",
             "id": "Build",
             "properties": {
+                "buildTriggerId": {
+                    "description": "The ID of the BuildTrigger that triggered this build, if it was\ntriggered automatically.\n@OutputOnly",
+                    "type": "string"
+                },
+                "tags": {
+                    "description": "Tags for annotation of a Build. These are not docker tags.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "id": {
+                    "description": "Unique identifier of the build.\n@OutputOnly",
+                    "type": "string"
+                },
+                "substitutions": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Substitutions data for Build resource.",
+                    "type": "object"
+                },
+                "startTime": {
+                    "description": "Time at which execution of the build was started.\n@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "sourceProvenance": {
+                    "$ref": "SourceProvenance",
+                    "description": "A permanent fixed identifier for source.\n@OutputOnly"
+                },
+                "createTime": {
+                    "description": "Time at which the request to create the build was received.\n@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "images": {
+                    "description": "A list of images to be pushed upon the successful completion of all build\nsteps.\n\nThe images will be pushed using the builder service account's credentials.\n\nThe digests of the pushed images will be stored in the Build resource's\nresults field.\n\nIf any of the images fail to be pushed, the build is marked FAILURE.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "projectId": {
+                    "description": "ID of the project.\n@OutputOnly.",
+                    "type": "string"
+                },
+                "finishTime": {
+                    "description": "Time at which execution of the build was finished.\n\nThe difference between finish_time and start_time is the duration of the\nbuild's execution.\n@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "logUrl": {
+                    "description": "URL to logs for this build in Google Cloud Logging.\n@OutputOnly",
+                    "type": "string"
+                },
+                "source": {
+                    "$ref": "Source",
+                    "description": "Describes where to find the source files to build."
+                },
+                "options": {
+                    "$ref": "BuildOptions",
+                    "description": "Special options for this build."
+                },
                 "statusDetail": {
                     "description": "Customer-readable message about the current status.\n@OutputOnly",
                     "type": "string"
@@ -915,70 +1091,6 @@
                         "$ref": "BuildStep"
                     },
                     "type": "array"
-                },
-                "buildTriggerId": {
-                    "description": "The ID of the BuildTrigger that triggered this build, if it was\ntriggered automatically.\n@OutputOnly",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "Unique identifier of the build.\n@OutputOnly",
-                    "type": "string"
-                },
-                "tags": {
-                    "description": "Tags for annotation of a Build. These are not docker tags.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "substitutions": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Substitutions data for Build resource.",
-                    "type": "object"
-                },
-                "startTime": {
-                    "description": "Time at which execution of the build was started.\n@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "sourceProvenance": {
-                    "$ref": "SourceProvenance",
-                    "description": "A permanent fixed identifier for source.\n@OutputOnly"
-                },
-                "createTime": {
-                    "description": "Time at which the request to create the build was received.\n@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "images": {
-                    "description": "A list of images to be pushed upon the successful completion of all build\nsteps.\n\nThe images will be pushed using the builder service account's credentials.\n\nThe digests of the pushed images will be stored in the Build resource's\nresults field.\n\nIf any of the images fail to be pushed, the build is marked FAILURE.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "projectId": {
-                    "description": "ID of the project.\n@OutputOnly.",
-                    "type": "string"
-                },
-                "finishTime": {
-                    "description": "Time at which execution of the build was finished.\n\nThe difference between finish_time and start_time is the duration of the\nbuild's execution.\n@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "logUrl": {
-                    "description": "URL to logs for this build in Google Cloud Logging.\n@OutputOnly",
-                    "type": "string"
-                },
-                "source": {
-                    "$ref": "Source",
-                    "description": "Describes where to find the source files to build."
-                },
-                "options": {
-                    "$ref": "BuildOptions",
-                    "description": "Special options for this build."
                 }
             },
             "type": "object"
@@ -988,118 +1100,6 @@
             "id": "CancelBuildRequest",
             "properties": {},
             "type": "object"
-        },
-        "ListBuildsResponse": {
-            "description": "Response including listed builds.",
-            "id": "ListBuildsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Token to receive the next page of results.",
-                    "type": "string"
-                },
-                "builds": {
-                    "description": "Builds will be sorted by create_time, descending.",
-                    "items": {
-                        "$ref": "Build"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Volume": {
-            "description": "Volume describes a Docker container volume which is mounted into build steps\nin order to persist files across build step execution.",
-            "id": "Volume",
-            "properties": {
-                "path": {
-                    "description": "Path at which to mount the volume.\n\nPaths must be absolute and cannot conflict with other volume paths on the\nsame build step or with certain reserved volume paths.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Name of the volume to mount.\n\nVolume names must be unique per build step and must be valid names for\nDocker volumes. Each named volume must be used by at least two build steps.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListOperationsResponse": {
-            "description": "The response message for Operations.ListOperations.",
-            "id": "ListOperationsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
-                },
-                "operations": {
-                    "description": "A list of operations that matches the specified filter in the request.",
-                    "items": {
-                        "$ref": "Operation"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Source": {
-            "description": "Source describes the location of the source in a supported storage\nservice.",
-            "id": "Source",
-            "properties": {
-                "storageSource": {
-                    "$ref": "StorageSource",
-                    "description": "If provided, get the source from this location in Google Cloud Storage."
-                },
-                "repoSource": {
-                    "$ref": "RepoSource",
-                    "description": "If provided, get source from this location in a Cloud Repo."
-                }
-            },
-            "type": "object"
-        },
-        "BuildOptions": {
-            "description": "Optional arguments to enable specific features of builds.",
-            "id": "BuildOptions",
-            "properties": {
-                "substitutionOption": {
-                    "description": "SubstitutionOption to allow unmatch substitutions.",
-                    "enum": [
-                        "MUST_MATCH",
-                        "ALLOW_LOOSE"
-                    ],
-                    "enumDescriptions": [
-                        "Fails the build if error in substitutions checks, like missing\na substitution in the template or in the map.",
-                        "Do not fail the build if error in substitutions checks."
-                    ],
-                    "type": "string"
-                },
-                "requestedVerifyOption": {
-                    "description": "Requested verifiability options.",
-                    "enum": [
-                        "NOT_VERIFIED",
-                        "VERIFIED"
-                    ],
-                    "enumDescriptions": [
-                        "Not a verifiable build. (default)",
-                        "Verified build."
-                    ],
-                    "type": "string"
-                },
-                "sourceProvenanceHash": {
-                    "description": "Requested hash for SourceProvenance.",
-                    "enumDescriptions": [
-                        "No hash requested.",
-                        "Use a sha256 hash."
-                    ],
-                    "items": {
-                        "enum": [
-                            "NONE",
-                            "SHA256"
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/clouddebugger__v2.json b/discovery/googleapis/clouddebugger__v2.json
index 3c786c1..b0fdb84 100644
--- a/discovery/googleapis/clouddebugger__v2.json
+++ b/discovery/googleapis/clouddebugger__v2.json
@@ -28,37 +28,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "access_token": {
-            "description": "OAuth access token.",
-            "location": "query",
-            "type": "string"
-        },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-            "location": "query",
-            "type": "string"
-        },
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -70,13 +39,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
@@ -113,6 +82,37 @@
             ],
             "location": "query",
             "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
@@ -127,11 +127,6 @@
                             "id": "clouddebugger.debugger.debuggees.list",
                             "parameterOrder": [],
                             "parameters": {
-                                "includeInactive": {
-                                    "description": "When set to `true`, the result includes all debuggees. Otherwise, the\nresult includes only debuggees that are active.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
                                 "project": {
                                     "description": "Project number of a Google Cloud project whose debuggees to list.",
                                     "location": "query",
@@ -141,6 +136,11 @@
                                     "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).",
                                     "location": "query",
                                     "type": "string"
+                                },
+                                "includeInactive": {
+                                    "description": "When set to `true`, the result includes all debuggees. Otherwise, the\nresult includes only debuggees that are active.",
+                                    "location": "query",
+                                    "type": "boolean"
                                 }
                             },
                             "path": "v2/debugger/debuggees",
@@ -156,74 +156,6 @@
                     "resources": {
                         "breakpoints": {
                             "methods": {
-                                "delete": {
-                                    "description": "Deletes the breakpoint from the debuggee.",
-                                    "httpMethod": "DELETE",
-                                    "id": "clouddebugger.debugger.debuggees.breakpoints.delete",
-                                    "parameterOrder": [
-                                        "debuggeeId",
-                                        "breakpointId"
-                                    ],
-                                    "parameters": {
-                                        "breakpointId": {
-                                            "description": "ID of the breakpoint to delete.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "debuggeeId": {
-                                            "description": "ID of the debuggee whose breakpoint to delete.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "clientVersion": {
-                                            "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).",
-                                            "location": "query",
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v2/debugger/debuggees/{debuggeeId}/breakpoints/{breakpointId}",
-                                    "response": {
-                                        "$ref": "Empty"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloud_debugger"
-                                    ]
-                                },
-                                "set": {
-                                    "description": "Sets the breakpoint to the debuggee.",
-                                    "httpMethod": "POST",
-                                    "id": "clouddebugger.debugger.debuggees.breakpoints.set",
-                                    "parameterOrder": [
-                                        "debuggeeId"
-                                    ],
-                                    "parameters": {
-                                        "debuggeeId": {
-                                            "description": "ID of the debuggee where the breakpoint is to be set.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "clientVersion": {
-                                            "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).",
-                                            "location": "query",
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v2/debugger/debuggees/{debuggeeId}/breakpoints/set",
-                                    "request": {
-                                        "$ref": "Breakpoint"
-                                    },
-                                    "response": {
-                                        "$ref": "SetBreakpointResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloud_debugger"
-                                    ]
-                                },
                                 "list": {
                                     "description": "Lists all breakpoints for the debuggee.",
                                     "httpMethod": "GET",
@@ -262,13 +194,13 @@
                                             "location": "query",
                                             "type": "string"
                                         },
-                                        "includeInactive": {
-                                            "description": "When set to `true`, the response includes active and inactive\nbreakpoints. Otherwise, it includes only active breakpoints.",
+                                        "includeAllUsers": {
+                                            "description": "When set to `true`, the response includes the list of breakpoints set by\nany user. Otherwise, it includes only breakpoints set by the caller.",
                                             "location": "query",
                                             "type": "boolean"
                                         },
-                                        "includeAllUsers": {
-                                            "description": "When set to `true`, the response includes the list of breakpoints set by\nany user. Otherwise, it includes only breakpoints set by the caller.",
+                                        "includeInactive": {
+                                            "description": "When set to `true`, the response includes active and inactive\nbreakpoints. Otherwise, it includes only active breakpoints.",
                                             "location": "query",
                                             "type": "boolean"
                                         }
@@ -291,6 +223,11 @@
                                         "breakpointId"
                                     ],
                                     "parameters": {
+                                        "clientVersion": {
+                                            "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
                                         "breakpointId": {
                                             "description": "ID of the breakpoint to get.",
                                             "location": "path",
@@ -302,6 +239,66 @@
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/debugger/debuggees/{debuggeeId}/breakpoints/{breakpointId}",
+                                    "response": {
+                                        "$ref": "GetBreakpointResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloud_debugger"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes the breakpoint from the debuggee.",
+                                    "httpMethod": "DELETE",
+                                    "id": "clouddebugger.debugger.debuggees.breakpoints.delete",
+                                    "parameterOrder": [
+                                        "debuggeeId",
+                                        "breakpointId"
+                                    ],
+                                    "parameters": {
+                                        "debuggeeId": {
+                                            "description": "ID of the debuggee whose breakpoint to delete.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "clientVersion": {
+                                            "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "breakpointId": {
+                                            "description": "ID of the breakpoint to delete.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/debugger/debuggees/{debuggeeId}/breakpoints/{breakpointId}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloud_debugger"
+                                    ]
+                                },
+                                "set": {
+                                    "description": "Sets the breakpoint to the debuggee.",
+                                    "httpMethod": "POST",
+                                    "id": "clouddebugger.debugger.debuggees.breakpoints.set",
+                                    "parameterOrder": [
+                                        "debuggeeId"
+                                    ],
+                                    "parameters": {
+                                        "debuggeeId": {
+                                            "description": "ID of the debuggee where the breakpoint is to be set.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
                                         },
                                         "clientVersion": {
                                             "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).",
@@ -309,9 +306,12 @@
                                             "type": "string"
                                         }
                                     },
-                                    "path": "v2/debugger/debuggees/{debuggeeId}/breakpoints/{breakpointId}",
+                                    "path": "v2/debugger/debuggees/{debuggeeId}/breakpoints/set",
+                                    "request": {
+                                        "$ref": "Breakpoint"
+                                    },
                                     "response": {
-                                        "$ref": "GetBreakpointResponse"
+                                        "$ref": "SetBreakpointResponse"
                                     },
                                     "scopes": [
                                         "https://www.googleapis.com/auth/cloud-platform",
@@ -425,130 +425,9 @@
             }
         }
     },
-    "revision": "20170928",
+    "revision": "20171016",
     "rootUrl": "https://clouddebugger.googleapis.com/",
     "schemas": {
-        "StackFrame": {
-            "description": "Represents a stack frame context.",
-            "id": "StackFrame",
-            "properties": {
-                "arguments": {
-                    "description": "Set of arguments passed to this function.\nNote that this might not be populated for all stack frames.",
-                    "items": {
-                        "$ref": "Variable"
-                    },
-                    "type": "array"
-                },
-                "locals": {
-                    "description": "Set of local variables at the stack frame location.\nNote that this might not be populated for all stack frames.",
-                    "items": {
-                        "$ref": "Variable"
-                    },
-                    "type": "array"
-                },
-                "location": {
-                    "$ref": "SourceLocation",
-                    "description": "Source location of the call site."
-                },
-                "function": {
-                    "description": "Demangled function name at the call site.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RepoId": {
-            "description": "A unique identifier for a cloud repo.",
-            "id": "RepoId",
-            "properties": {
-                "uid": {
-                    "description": "A server-assigned, globally unique identifier.",
-                    "type": "string"
-                },
-                "projectRepoId": {
-                    "$ref": "ProjectRepoId",
-                    "description": "A combination of a project ID and a repo name."
-                }
-            },
-            "type": "object"
-        },
-        "FormatMessage": {
-            "description": "Represents a message with parameters.",
-            "id": "FormatMessage",
-            "properties": {
-                "parameters": {
-                    "description": "Optional parameters to be embedded into the message.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "format": {
-                    "description": "Format template for the message. The `format` uses placeholders `$0`,\n`$1`, etc. to reference parameters. `$$` can be used to denote the `$`\ncharacter.\n\nExamples:\n\n*   `Failed to load '$0' which helps debug $1 the first time it\n    is loaded.  Again, $0 is very important.`\n*   `Please pay $$10 to use $0 instead of $1.`",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ExtendedSourceContext": {
-            "description": "An ExtendedSourceContext is a SourceContext combined with additional\ndetails describing the context.",
-            "id": "ExtendedSourceContext",
-            "properties": {
-                "context": {
-                    "$ref": "SourceContext",
-                    "description": "Any source context."
-                },
-                "labels": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Labels with user defined metadata.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "AliasContext": {
-            "description": "An alias to a repo revision.",
-            "id": "AliasContext",
-            "properties": {
-                "name": {
-                    "description": "The alias name.",
-                    "type": "string"
-                },
-                "kind": {
-                    "description": "The alias kind.",
-                    "enum": [
-                        "ANY",
-                        "FIXED",
-                        "MOVABLE",
-                        "OTHER"
-                    ],
-                    "enumDescriptions": [
-                        "Do not use.",
-                        "Git tag",
-                        "Git branch",
-                        "OTHER is used to specify non-standard aliases, those not of the kinds\nabove. For example, if a Git repo has a ref named \"refs/foo/bar\", it\nis considered to be of kind OTHER."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListDebuggeesResponse": {
-            "description": "Response for listing debuggees.",
-            "id": "ListDebuggeesResponse",
-            "properties": {
-                "debuggees": {
-                    "description": "List of debuggees accessible to the calling user.\nThe fields `debuggee.id` and `description` are guaranteed to be set.\nThe `description` field is a human readable field provided by agents and\ncan be displayed to users.",
-                    "items": {
-                        "$ref": "Debuggee"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "Empty": {
             "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
             "id": "Empty",
@@ -559,14 +438,14 @@
             "description": "Represents a location in the source code.",
             "id": "SourceLocation",
             "properties": {
-                "path": {
-                    "description": "Path to the source file within the source context of the target binary.",
-                    "type": "string"
-                },
                 "line": {
                     "description": "Line inside the file. The first line in the file has the value `1`.",
                     "format": "int32",
                     "type": "integer"
+                },
+                "path": {
+                    "description": "Path to the source file within the source context of the target binary.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -575,30 +454,14 @@
             "description": "Represents the debugged application. The application may include one or more\nreplicated processes executing the same code. Each of these processes is\nattached with a debugger agent, carrying out the debugging commands.\nAgents attached to the same debuggee identify themselves as such by using\nexactly the same Debuggee message value when registering.",
             "id": "Debuggee",
             "properties": {
-                "project": {
-                    "description": "Project the debuggee is associated with.\nUse project number or id when registering a Google Cloud Platform project.",
-                    "type": "string"
-                },
-                "isDisabled": {
-                    "description": "If set to `true`, indicates that the agent should disable itself and\ndetach from the debuggee.",
-                    "type": "boolean"
-                },
-                "agentVersion": {
-                    "description": "Version ID of the agent.\nSchema: `domain/language-platform/vmajor.minor` (for example\n`google.com/java-gcp/v1.1`).",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "Unique identifier for the debuggee generated by the controller service.",
+                "uniquifier": {
+                    "description": "Uniquifier to further distiguish the application.\nIt is possible that different applications might have identical values in\nthe debuggee message, thus, incorrectly identified as a single application\nby the Controller service. This field adds salt to further distiguish the\napplication. Agents should consider seeding this field with value that\nidentifies the code, binary, configuration and environment.",
                     "type": "string"
                 },
                 "description": {
                     "description": "Human readable description of the debuggee.\nIncluding a human-readable project name, environment name and version\ninformation is recommended.",
                     "type": "string"
                 },
-                "uniquifier": {
-                    "description": "Uniquifier to further distiguish the application.\nIt is possible that different applications might have identical values in\nthe debuggee message, thus, incorrectly identified as a single application\nby the Controller service. This field adds salt to further distiguish the\napplication. Agents should consider seeding this field with value that\nidentifies the code, binary, configuration and environment.",
-                    "type": "string"
-                },
                 "sourceContexts": {
                     "description": "References to the locations and revisions of the source code used in the\ndeployed application.",
                     "items": {
@@ -620,34 +483,28 @@
                     "description": "A set of custom debuggee properties, populated by the agent, to be\ndisplayed to the user.",
                     "type": "object"
                 },
+                "status": {
+                    "$ref": "StatusMessage",
+                    "description": "Human readable message to be displayed to the user about this debuggee.\nAbsence of this field indicates no status. The message can be either\ninformational or an error status."
+                },
                 "isInactive": {
                     "description": "If set to `true`, indicates that Controller service does not detect any\nactivity from the debuggee agents and the application is possibly stopped.",
                     "type": "boolean"
                 },
-                "status": {
-                    "$ref": "StatusMessage",
-                    "description": "Human readable message to be displayed to the user about this debuggee.\nAbsence of this field indicates no status. The message can be either\ninformational or an error status."
-                }
-            },
-            "type": "object"
-        },
-        "ListActiveBreakpointsResponse": {
-            "description": "Response for listing active breakpoints.",
-            "id": "ListActiveBreakpointsResponse",
-            "properties": {
-                "breakpoints": {
-                    "description": "List of all active breakpoints.\nThe fields `id` and `location` are guaranteed to be set on each breakpoint.",
-                    "items": {
-                        "$ref": "Breakpoint"
-                    },
-                    "type": "array"
+                "project": {
+                    "description": "Project the debuggee is associated with.\nUse project number or id when registering a Google Cloud Platform project.",
+                    "type": "string"
                 },
-                "waitExpired": {
-                    "description": "If set to `true`, indicates that there is no change to the\nlist of active breakpoints and the server-selected timeout has expired.\nThe `breakpoints` field would be empty and should be ignored.",
+                "isDisabled": {
+                    "description": "If set to `true`, indicates that the agent should disable itself and\ndetach from the debuggee.",
                     "type": "boolean"
                 },
-                "nextWaitToken": {
-                    "description": "A token that can be used in the next method call to block until\nthe list of breakpoints changes.",
+                "agentVersion": {
+                    "description": "Version ID of the agent.\nSchema: `domain/language-platform/vmajor.minor` (for example\n`google.com/java-gcp/v1.1`).",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "Unique identifier for the debuggee generated by the controller service.",
                     "type": "string"
                 }
             },
@@ -668,31 +525,55 @@
             },
             "type": "object"
         },
-        "CloudWorkspaceSourceContext": {
-            "description": "A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot.",
-            "id": "CloudWorkspaceSourceContext",
+        "ListActiveBreakpointsResponse": {
+            "description": "Response for listing active breakpoints.",
+            "id": "ListActiveBreakpointsResponse",
             "properties": {
-                "snapshotId": {
-                    "description": "The ID of the snapshot.\nAn empty snapshot_id refers to the most recent snapshot.",
+                "nextWaitToken": {
+                    "description": "A token that can be used in the next method call to block until\nthe list of breakpoints changes.",
                     "type": "string"
                 },
-                "workspaceId": {
-                    "$ref": "CloudWorkspaceId",
-                    "description": "The ID of the workspace."
+                "breakpoints": {
+                    "description": "List of all active breakpoints.\nThe fields `id` and `location` are guaranteed to be set on each breakpoint.",
+                    "items": {
+                        "$ref": "Breakpoint"
+                    },
+                    "type": "array"
+                },
+                "waitExpired": {
+                    "description": "If set to `true`, indicates that there is no change to the\nlist of active breakpoints and the server-selected timeout has expired.\nThe `breakpoints` field would be empty and should be ignored.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
         },
-        "UpdateActiveBreakpointResponse": {
-            "description": "Response for updating an active breakpoint.\nThe message is defined to allow future extensions.",
-            "id": "UpdateActiveBreakpointResponse",
-            "properties": {},
+        "CloudWorkspaceSourceContext": {
+            "description": "A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot.",
+            "id": "CloudWorkspaceSourceContext",
+            "properties": {
+                "workspaceId": {
+                    "$ref": "CloudWorkspaceId",
+                    "description": "The ID of the workspace."
+                },
+                "snapshotId": {
+                    "description": "The ID of the snapshot.\nAn empty snapshot_id refers to the most recent snapshot.",
+                    "type": "string"
+                }
+            },
             "type": "object"
         },
         "GerritSourceContext": {
             "description": "A SourceContext referring to a Gerrit project.",
             "id": "GerritSourceContext",
             "properties": {
+                "aliasContext": {
+                    "$ref": "AliasContext",
+                    "description": "An alias, which may be a branch or tag."
+                },
+                "gerritProject": {
+                    "description": "The full project name within the host. Projects may be nested, so\n\"project/subproject\" is a valid project name.\nThe \"repo name\" is hostURI/project.",
+                    "type": "string"
+                },
                 "revisionId": {
                     "description": "A revision (commit) ID.",
                     "type": "string"
@@ -704,18 +585,16 @@
                 "aliasName": {
                     "description": "The name of an alias (branch, tag, etc.).",
                     "type": "string"
-                },
-                "aliasContext": {
-                    "$ref": "AliasContext",
-                    "description": "An alias, which may be a branch or tag."
-                },
-                "gerritProject": {
-                    "description": "The full project name within the host. Projects may be nested, so\n\"project/subproject\" is a valid project name.\nThe \"repo name\" is hostURI/project.",
-                    "type": "string"
                 }
             },
             "type": "object"
         },
+        "UpdateActiveBreakpointResponse": {
+            "description": "Response for updating an active breakpoint.\nThe message is defined to allow future extensions.",
+            "id": "UpdateActiveBreakpointResponse",
+            "properties": {},
+            "type": "object"
+        },
         "CloudWorkspaceId": {
             "description": "A CloudWorkspaceId is a unique identifier for a cloud workspace.\nA cloud workspace is a place associated with a repo where modified files\ncan be stored before they are committed.",
             "id": "CloudWorkspaceId",
@@ -753,24 +632,6 @@
             "description": "Represents the breakpoint specification, status and results.",
             "id": "Breakpoint",
             "properties": {
-                "expressions": {
-                    "description": "List of read-only expressions to evaluate at the breakpoint location.\nThe expressions are composed using expressions in the programming language\nat the source location. If the breakpoint action is `LOG`, the evaluated\nexpressions are included in log statements.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "evaluatedExpressions": {
-                    "description": "Values of evaluated expressions at breakpoint time.\nThe evaluated expressions appear in exactly the same order they\nare listed in the `expressions` field.\nThe `name` field holds the original expression text, the `value` or\n`members` field holds the result of the evaluated expression.\nIf the expression cannot be evaluated, the `status` inside the `Variable`\nwill indicate an error and contain the error text.",
-                    "items": {
-                        "$ref": "Variable"
-                    },
-                    "type": "array"
-                },
-                "isFinalState": {
-                    "description": "When true, indicates that this is a final result and the\nbreakpoint state will not change from here on.",
-                    "type": "boolean"
-                },
                 "stackFrames": {
                     "description": "The stack at breakpoint time.",
                     "items": {
@@ -836,6 +697,15 @@
                     },
                     "type": "array"
                 },
+                "createTime": {
+                    "description": "Time this breakpoint was created by the server in seconds resolution.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "logMessageFormat": {
+                    "description": "Only relevant when action is `LOG`. Defines the message to log when\nthe breakpoint hits. The message may include parameter placeholders `$0`,\n`$1`, etc. These placeholders are replaced with the evaluated value\nof the appropriate expression. Expressions not referenced in\n`log_message_format` are not logged.\n\nExample: `Message received, id = $0, count = $1` with\n`expressions` = `[ message.id, message.count ]`.",
+                    "type": "string"
+                },
                 "labels": {
                     "additionalProperties": {
                         "type": "string"
@@ -843,14 +713,23 @@
                     "description": "A set of custom breakpoint properties, populated by the agent, to be\ndisplayed to the user.",
                     "type": "object"
                 },
-                "logMessageFormat": {
-                    "description": "Only relevant when action is `LOG`. Defines the message to log when\nthe breakpoint hits. The message may include parameter placeholders `$0`,\n`$1`, etc. These placeholders are replaced with the evaluated value\nof the appropriate expression. Expressions not referenced in\n`log_message_format` are not logged.\n\nExample: `Message received, id = $0, count = $1` with\n`expressions` = `[ message.id, message.count ]`.",
-                    "type": "string"
+                "expressions": {
+                    "description": "List of read-only expressions to evaluate at the breakpoint location.\nThe expressions are composed using expressions in the programming language\nat the source location. If the breakpoint action is `LOG`, the evaluated\nexpressions are included in log statements.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
                 },
-                "createTime": {
-                    "description": "Time this breakpoint was created by the server in seconds resolution.",
-                    "format": "google-datetime",
-                    "type": "string"
+                "evaluatedExpressions": {
+                    "description": "Values of evaluated expressions at breakpoint time.\nThe evaluated expressions appear in exactly the same order they\nare listed in the `expressions` field.\nThe `name` field holds the original expression text, the `value` or\n`members` field holds the result of the evaluated expression.\nIf the expression cannot be evaluated, the `status` inside the `Variable`\nwill indicate an error and contain the error text.",
+                    "items": {
+                        "$ref": "Variable"
+                    },
+                    "type": "array"
+                },
+                "isFinalState": {
+                    "description": "When true, indicates that this is a final result and the\nbreakpoint state will not change from here on.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -881,6 +760,10 @@
             "description": "A SourceContext is a reference to a tree of files. A SourceContext together\nwith a path point to a unique revision of a single file or directory.",
             "id": "SourceContext",
             "properties": {
+                "git": {
+                    "$ref": "GitSourceContext",
+                    "description": "A SourceContext referring to any third party Git repo (e.g. GitHub)."
+                },
                 "gerrit": {
                     "$ref": "GerritSourceContext",
                     "description": "A SourceContext referring to a Gerrit project."
@@ -892,10 +775,6 @@
                 "cloudRepo": {
                     "$ref": "CloudRepoSourceContext",
                     "description": "A SourceContext referring to a revision in a cloud repo."
-                },
-                "git": {
-                    "$ref": "GitSourceContext",
-                    "description": "A SourceContext referring to any third party Git repo (e.g. GitHub)."
                 }
             },
             "type": "object"
@@ -923,17 +802,6 @@
             },
             "type": "object"
         },
-        "RegisterDebuggeeResponse": {
-            "description": "Response for registering a debuggee.",
-            "id": "RegisterDebuggeeResponse",
-            "properties": {
-                "debuggee": {
-                    "$ref": "Debuggee",
-                    "description": "Debuggee resource.\nThe field `id` is guranteed to be set (in addition to the echoed fields).\nIf the field `is_disabled` is set to `true`, the agent should disable\nitself by removing all breakpoints and detaching from the application.\nIt should however continue to poll `RegisterDebuggee` until reenabled."
-                }
-            },
-            "type": "object"
-        },
         "RegisterDebuggeeRequest": {
             "description": "Request to register a debuggee.",
             "id": "RegisterDebuggeeRequest",
@@ -945,6 +813,17 @@
             },
             "type": "object"
         },
+        "RegisterDebuggeeResponse": {
+            "description": "Response for registering a debuggee.",
+            "id": "RegisterDebuggeeResponse",
+            "properties": {
+                "debuggee": {
+                    "$ref": "Debuggee",
+                    "description": "Debuggee resource.\nThe field `id` is guranteed to be set (in addition to the echoed fields).\nIf the field `is_disabled` is set to `true`, the agent should disable\nitself by removing all breakpoints and detaching from the application.\nIt should however continue to poll `RegisterDebuggee` until reenabled."
+                }
+            },
+            "type": "object"
+        },
         "GetBreakpointResponse": {
             "description": "Response for getting breakpoint information.",
             "id": "GetBreakpointResponse",
@@ -1012,15 +891,19 @@
             "description": "Represents a variable or an argument possibly of a compound object type.\nNote how the following variables are represented:\n\n1) A simple variable:\n\n    int x = 5\n\n    { name: \"x\", value: \"5\", type: \"int\" }  // Captured variable\n\n2) A compound object:\n\n    struct T {\n        int m1;\n        int m2;\n    };\n    T x = { 3, 7 };\n\n    {  // Captured variable\n        name: \"x\",\n        type: \"T\",\n        members { name: \"m1\", value: \"3\", type: \"int\" },\n        members { name: \"m2\", value: \"7\", type: \"int\" }\n    }\n\n3) A pointer where the pointee was captured:\n\n    T x = { 3, 7 };\n    T* p = &x;\n\n    {   // Captured variable\n        name: \"p\",\n        type: \"T*\",\n        value: \"0x00500500\",\n        members { name: \"m1\", value: \"3\", type: \"int\" },\n        members { name: \"m2\", value: \"7\", type: \"int\" }\n    }\n\n4) A pointer where the pointee was not captured:\n\n    T* p = new T;\n\n    {   // Captured variable\n        name: \"p\",\n        type: \"T*\",\n        value: \"0x00400400\"\n        status { is_error: true, description { format: \"unavailable\" } }\n    }\n\nThe status should describe the reason for the missing value,\nsuch as `<optimized out>`, `<inaccessible>`, `<pointers limit reached>`.\n\nNote that a null pointer should not have members.\n\n5) An unnamed value:\n\n    int* p = new int(7);\n\n    {   // Captured variable\n        name: \"p\",\n        value: \"0x00500500\",\n        type: \"int*\",\n        members { value: \"7\", type: \"int\" } }\n\n6) An unnamed pointer where the pointee was not captured:\n\n    int* p = new int(7);\n    int** pp = &p;\n\n    {  // Captured variable\n        name: \"pp\",\n        value: \"0x00500500\",\n        type: \"int**\",\n        members {\n            value: \"0x00400400\",\n            type: \"int*\"\n            status {\n                is_error: true,\n                description: { format: \"unavailable\" } }\n            }\n        }\n    }\n\nTo optimize computation, memory and network traffic, variables that\nrepeat in the output multiple times can be stored once in a shared\nvariable table and be referenced using the `var_table_index` field.  The\nvariables stored in the shared table are nameless and are essentially\na partition of the complete variable. To reconstruct the complete\nvariable, merge the referencing variable with the referenced variable.\n\nWhen using the shared variable table, the following variables:\n\n    T x = { 3, 7 };\n    T* p = &x;\n    T& r = x;\n\n    { name: \"x\", var_table_index: 3, type: \"T\" }  // Captured variables\n    { name: \"p\", value \"0x00500500\", type=\"T*\", var_table_index: 3 }\n    { name: \"r\", type=\"T&\", var_table_index: 3 }\n\n    {  // Shared variable table entry #3:\n        members { name: \"m1\", value: \"3\", type: \"int\" },\n        members { name: \"m2\", value: \"7\", type: \"int\" }\n    }\n\nNote that the pointer address is stored with the referencing variable\nand not with the referenced variable. This allows the referenced variable\nto be shared between pointers and references.\n\nThe type field is optional. The debugger agent may or may not support it.",
             "id": "Variable",
             "properties": {
-                "varTableIndex": {
-                    "description": "Reference to a variable in the shared variable table. More than\none variable can reference the same variable in the table. The\n`var_table_index` field is an index into `variable_table` in Breakpoint.",
-                    "format": "int32",
-                    "type": "integer"
+                "type": {
+                    "description": "Variable type (e.g. `MyClass`). If the variable is split with\n`var_table_index`, `type` goes next to `value`. The interpretation of\na type is agent specific. It is recommended to include the dynamic type\nrather than a static type of an object.",
+                    "type": "string"
                 },
                 "value": {
                     "description": "Simple value of the variable.",
                     "type": "string"
                 },
+                "varTableIndex": {
+                    "description": "Reference to a variable in the shared variable table. More than\none variable can reference the same variable in the table. The\n`var_table_index` field is an index into `variable_table` in Breakpoint.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "members": {
                     "description": "Members contained or pointed to by the variable.",
                     "items": {
@@ -1035,9 +918,126 @@
                 "name": {
                     "description": "Name of the variable, if any.",
                     "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "StackFrame": {
+            "description": "Represents a stack frame context.",
+            "id": "StackFrame",
+            "properties": {
+                "locals": {
+                    "description": "Set of local variables at the stack frame location.\nNote that this might not be populated for all stack frames.",
+                    "items": {
+                        "$ref": "Variable"
+                    },
+                    "type": "array"
                 },
-                "type": {
-                    "description": "Variable type (e.g. `MyClass`). If the variable is split with\n`var_table_index`, `type` goes next to `value`. The interpretation of\na type is agent specific. It is recommended to include the dynamic type\nrather than a static type of an object.",
+                "location": {
+                    "$ref": "SourceLocation",
+                    "description": "Source location of the call site."
+                },
+                "function": {
+                    "description": "Demangled function name at the call site.",
+                    "type": "string"
+                },
+                "arguments": {
+                    "description": "Set of arguments passed to this function.\nNote that this might not be populated for all stack frames.",
+                    "items": {
+                        "$ref": "Variable"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "RepoId": {
+            "description": "A unique identifier for a cloud repo.",
+            "id": "RepoId",
+            "properties": {
+                "uid": {
+                    "description": "A server-assigned, globally unique identifier.",
+                    "type": "string"
+                },
+                "projectRepoId": {
+                    "$ref": "ProjectRepoId",
+                    "description": "A combination of a project ID and a repo name."
+                }
+            },
+            "type": "object"
+        },
+        "FormatMessage": {
+            "description": "Represents a message with parameters.",
+            "id": "FormatMessage",
+            "properties": {
+                "parameters": {
+                    "description": "Optional parameters to be embedded into the message.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "format": {
+                    "description": "Format template for the message. The `format` uses placeholders `$0`,\n`$1`, etc. to reference parameters. `$$` can be used to denote the `$`\ncharacter.\n\nExamples:\n\n*   `Failed to load '$0' which helps debug $1 the first time it\n    is loaded.  Again, $0 is very important.`\n*   `Please pay $$10 to use $0 instead of $1.`",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ExtendedSourceContext": {
+            "description": "An ExtendedSourceContext is a SourceContext combined with additional\ndetails describing the context.",
+            "id": "ExtendedSourceContext",
+            "properties": {
+                "context": {
+                    "$ref": "SourceContext",
+                    "description": "Any source context."
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Labels with user defined metadata.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "ListDebuggeesResponse": {
+            "description": "Response for listing debuggees.",
+            "id": "ListDebuggeesResponse",
+            "properties": {
+                "debuggees": {
+                    "description": "List of debuggees accessible to the calling user.\nThe fields `debuggee.id` and `description` are guaranteed to be set.\nThe `description` field is a human readable field provided by agents and\ncan be displayed to users.",
+                    "items": {
+                        "$ref": "Debuggee"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AliasContext": {
+            "description": "An alias to a repo revision.",
+            "id": "AliasContext",
+            "properties": {
+                "name": {
+                    "description": "The alias name.",
+                    "type": "string"
+                },
+                "kind": {
+                    "description": "The alias kind.",
+                    "enum": [
+                        "ANY",
+                        "FIXED",
+                        "MOVABLE",
+                        "OTHER"
+                    ],
+                    "enumDescriptions": [
+                        "Do not use.",
+                        "Git tag",
+                        "Git branch",
+                        "OTHER is used to specify non-standard aliases, those not of the kinds\nabove. For example, if a Git repo has a ref named \"refs/foo/bar\", it\nis considered to be of kind OTHER."
+                    ],
                     "type": "string"
                 }
             },
diff --git a/discovery/googleapis/cloudfunctions__v1.json b/discovery/googleapis/cloudfunctions__v1.json
index 1e16845..6a9baaf 100644
--- a/discovery/googleapis/cloudfunctions__v1.json
+++ b/discovery/googleapis/cloudfunctions__v1.json
@@ -25,27 +25,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -57,13 +36,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
@@ -101,67 +80,40 @@
             "location": "query",
             "type": "string"
         },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
         "key": {
             "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
-        "projects": {
-            "resources": {
-                "locations": {
-                    "methods": {
-                        "list": {
-                            "description": "Lists information about the supported locations for this service.",
-                            "httpMethod": "GET",
-                            "id": "cloudfunctions.projects.locations.list",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "filter": {
-                                    "description": "The standard list filter.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "The standard list page token.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "description": "The resource that owns the locations collection, if applicable.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "The standard list page size.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v1/{+name}/locations",
-                            "response": {
-                                "$ref": "ListLocationsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        }
-                    }
-                }
-            }
-        },
         "operations": {
             "methods": {
                 "get": {
@@ -194,6 +146,11 @@
                     "id": "cloudfunctions.operations.list",
                     "parameterOrder": [],
                     "parameters": {
+                        "filter": {
+                            "description": "The standard list filter.",
+                            "location": "query",
+                            "type": "string"
+                        },
                         "pageToken": {
                             "description": "The standard list page token.",
                             "location": "query",
@@ -209,11 +166,6 @@
                             "format": "int32",
                             "location": "query",
                             "type": "integer"
-                        },
-                        "filter": {
-                            "description": "The standard list filter.",
-                            "location": "query",
-                            "type": "string"
                         }
                     },
                     "path": "v1/operations",
@@ -225,11 +177,648 @@
                     ]
                 }
             }
+        },
+        "projects": {
+            "resources": {
+                "locations": {
+                    "methods": {
+                        "list": {
+                            "description": "Lists information about the supported locations for this service.",
+                            "httpMethod": "GET",
+                            "id": "cloudfunctions.projects.locations.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "pageToken": {
+                                    "description": "The standard list page token.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "The resource that owns the locations collection, if applicable.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The standard list page size.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filter": {
+                                    "description": "The standard list filter.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}/locations",
+                            "response": {
+                                "$ref": "ListLocationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    },
+                    "resources": {
+                        "functions": {
+                            "methods": {
+                                "generateUploadUrl": {
+                                    "description": "Returns a signed URL for uploading a function source code.\nFor more information about the signed URL usage see:\nhttps://cloud.google.com/storage/docs/access-control/signed-urls\nOnce the function source code upload is complete, the used signed\nURL should be provided in CreateFunction or UpdateFunction request\nas a reference to the function source code.",
+                                    "httpMethod": "POST",
+                                    "id": "cloudfunctions.projects.locations.functions.generateUploadUrl",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "The project and location in which the Google Cloud Storage signed URL\nshould be generated, specified in the format `projects/*/locations/*",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/functions:generateUploadUrl",
+                                    "request": {
+                                        "$ref": "GenerateUploadUrlRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "GenerateUploadUrlResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "generateDownloadUrl": {
+                                    "description": "Returns a signed URL for downloading deployed function source code.\nThe URL is only valid for a limited period and should be used within\nminutes after generation.\nFor more information about the signed URL usage see:\nhttps://cloud.google.com/storage/docs/access-control/signed-urls",
+                                    "httpMethod": "POST",
+                                    "id": "cloudfunctions.projects.locations.functions.generateDownloadUrl",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of function for which source code Google Cloud Storage signed\nURL should be generated.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}:generateDownloadUrl",
+                                    "request": {
+                                        "$ref": "GenerateDownloadUrlRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "GenerateDownloadUrlResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates existing function.",
+                                    "httpMethod": "PATCH",
+                                    "id": "cloudfunctions.projects.locations.functions.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "A user-defined name of the function. Function names must be unique\nglobally and match pattern `projects/*/locations/*/functions/*`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "Required list of fields to be updated in this request.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "request": {
+                                        "$ref": "CloudFunction"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Returns a function with the given name from the requested project.",
+                                    "httpMethod": "GET",
+                                    "id": "cloudfunctions.projects.locations.functions.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the function which details should be obtained.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "CloudFunction"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a function with the given name from the specified project. If the\ngiven function is used by some trigger, the trigger will be updated to\nremove this function.",
+                                    "httpMethod": "DELETE",
+                                    "id": "cloudfunctions.projects.locations.functions.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the function which should be deleted.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Returns a list of functions that belong to the requested project.",
+                                    "httpMethod": "GET",
+                                    "id": "cloudfunctions.projects.locations.functions.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "The project and location from which the function should be listed,\nspecified in the format `projects/*/locations/*`\nIf you want to list functions in all locations, use \"-\" in place of a\nlocation.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "The value returned by the last\n`ListFunctionsResponse`; indicates that\nthis is a continuation of a prior `ListFunctions` call, and that the\nsystem should return the next page of data.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Maximum number of functions to return per call.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/functions",
+                                    "response": {
+                                        "$ref": "ListFunctionsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "create": {
+                                    "description": "Creates a new function. If a function with the given name already exists in\nthe specified project, the long running operation will return\n`ALREADY_EXISTS` error.",
+                                    "httpMethod": "POST",
+                                    "id": "cloudfunctions.projects.locations.functions.create",
+                                    "parameterOrder": [
+                                        "location"
+                                    ],
+                                    "parameters": {
+                                        "location": {
+                                            "description": "The project and location in which the function should be created, specified\nin the format `projects/*/locations/*`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+location}/functions",
+                                    "request": {
+                                        "$ref": "CloudFunction"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "call": {
+                                    "description": "Invokes synchronously deployed function. To be used for testing, very\nlimited traffic allowed.",
+                                    "httpMethod": "POST",
+                                    "id": "cloudfunctions.projects.locations.functions.call",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the function to be called.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}:call",
+                                    "request": {
+                                        "$ref": "CallFunctionRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "CallFunctionResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        }
+                    }
+                }
+            }
         }
     },
-    "revision": "20170926",
+    "revision": "20171017",
     "rootUrl": "https://cloudfunctions.googleapis.com/",
     "schemas": {
+        "CloudFunction": {
+            "description": "Describes a Cloud Function that contains user computation executed in\nresponse to an event. It encapsulate function and triggers configurations.",
+            "id": "CloudFunction",
+            "properties": {
+                "updateTime": {
+                    "description": "Output only. The last update timestamp of a Cloud Function.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "httpsTrigger": {
+                    "$ref": "HttpsTrigger",
+                    "description": "An HTTPS endpoint type of source that can be triggered via URL."
+                },
+                "serviceAccountEmail": {
+                    "description": "Output only. The email of the function's service account.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "User-provided description of a function.",
+                    "type": "string"
+                },
+                "timeout": {
+                    "description": "The function execution timeout. Execution is considered failed and\ncan be terminated if the function is not completed at the end of the\ntimeout period. Defaults to 60 seconds.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "status": {
+                    "description": "Output only. Status of the function deployment.",
+                    "enum": [
+                        "CLOUD_FUNCTION_STATUS_UNSPECIFIED",
+                        "ACTIVE",
+                        "OFFLINE",
+                        "DEPLOY_IN_PROGRESS",
+                        "DELETE_IN_PROGRESS",
+                        "UNKNOWN"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. Invalid state.",
+                        "Function has been succesfully deployed and is serving.",
+                        "Function deployment failed and the function isn’t serving.",
+                        "Function is being created or updated.",
+                        "Function is being deleted.",
+                        "Function deployment failed and the function serving state is undefined.\nThe function should be updated or deleted to move it out of this state."
+                    ],
+                    "type": "string"
+                },
+                "eventTrigger": {
+                    "$ref": "EventTrigger",
+                    "description": "A source that fires events in response to a condition in another service."
+                },
+                "sourceUploadUrl": {
+                    "description": "The Google Cloud Storage signed URL used for source uploading, generated\nby google.cloud.functions.v1.GenerateUploadUrl",
+                    "type": "string"
+                },
+                "availableMemoryMb": {
+                    "description": "The amount of memory in MB available for a function.\nDefaults to 256MB.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "name": {
+                    "description": "A user-defined name of the function. Function names must be unique\nglobally and match pattern `projects/*/locations/*/functions/*`",
+                    "type": "string"
+                },
+                "versionId": {
+                    "description": "Output only.\nThe version identifier of the Cloud Function. Each deployment attempt\nresults in a new version of a function being created.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "sourceArchiveUrl": {
+                    "description": "The Google Cloud Storage URL, starting with gs://, pointing to the zip\narchive which contains the function.",
+                    "type": "string"
+                },
+                "sourceRepository": {
+                    "$ref": "SourceRepository",
+                    "description": "**Beta Feature**\n\nThe source repository where a function is hosted."
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Labels associated with this Cloud Function.",
+                    "type": "object"
+                },
+                "entryPoint": {
+                    "description": "The name of the function (as defined in source code) that will be\nexecuted. Defaults to the resource name suffix, if not specified. For\nbackward compatibility, if function with given name is not found, then the\nsystem will try to use function named \"function\".\nFor Node.js this is name of a function exported by the module specified\nin `source_location`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "HttpsTrigger": {
+            "description": "Describes HttpsTrigger, could be used to connect web hooks to function.",
+            "id": "HttpsTrigger",
+            "properties": {
+                "url": {
+                    "description": "Output only. The deployed url for the function.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Location": {
+            "description": "A resource that represents Google Cloud Platform location.",
+            "id": "Location",
+            "properties": {
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata. For example the available capacity at the given\nlocation.",
+                    "type": "object"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Cross-service attributes for the location. For example\n\n    {\"cloud.googleapis.com/region\": \"us-east1\"}",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Resource name for the location, which may vary between implementations.\nFor example: `\"projects/example-project/locations/us-east1\"`",
+                    "type": "string"
+                },
+                "locationId": {
+                    "description": "The canonical id for this location. For example: `\"us-east1\"`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GenerateDownloadUrlResponse": {
+            "description": "Response of `GenerateDownloadUrl` method.",
+            "id": "GenerateDownloadUrlResponse",
+            "properties": {
+                "downloadUrl": {
+                    "description": "The generated Google Cloud Storage signed URL that should be used for\nfunction source code download.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Retry": {
+            "description": "Describes the retry policy in case of function's execution failure.\nA function execution will be retried on any failure.\nA failed execution will be retried up to 7 days with an exponential backoff\n(capped at 10 seconds).\nRetried execution is charged as any other execution.",
+            "id": "Retry",
+            "properties": {},
+            "type": "object"
+        },
+        "GenerateUploadUrlRequest": {
+            "description": "Request of `GenerateSourceUploadUrl` method.",
+            "id": "GenerateUploadUrlRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "ListOperationsResponse": {
+            "description": "The response message for Operations.ListOperations.",
+            "id": "ListOperationsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
+                "operations": {
+                    "description": "A list of operations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Operation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GenerateUploadUrlResponse": {
+            "description": "Response of `GenerateSourceUploadUrl` method.",
+            "id": "GenerateUploadUrlResponse",
+            "properties": {
+                "uploadUrl": {
+                    "description": "The generated Google Cloud Storage signed URL that should be used for a\nfunction source code upload. The uploaded file should be a zip archive\nwhich contains a function.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListFunctionsResponse": {
+            "description": "Response for the `ListFunctions` method.",
+            "id": "ListFunctionsResponse",
+            "properties": {
+                "functions": {
+                    "description": "The functions that match the request.",
+                    "items": {
+                        "$ref": "CloudFunction"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "If not empty, indicates that there may be more functions that match\nthe request; this value should be passed in a new\ngoogle.cloud.functions.v1.ListFunctionsRequest\nto get more functions.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListLocationsResponse": {
+            "description": "The response message for Locations.ListLocations.",
+            "id": "ListLocationsResponse",
+            "properties": {
+                "locations": {
+                    "description": "A list of locations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Location"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CallFunctionResponse": {
+            "description": "Response of `CallFunction` method.",
+            "id": "CallFunctionResponse",
+            "properties": {
+                "executionId": {
+                    "description": "Execution id of function invocation.",
+                    "type": "string"
+                },
+                "error": {
+                    "description": "Either system or user-function generated error. Set if execution\nwas not successful.",
+                    "type": "string"
+                },
+                "result": {
+                    "description": "Result populated for successful execution of synchronous function. Will\nnot be populated if function does not return a result through context.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EventTrigger": {
+            "description": "Describes EventTrigger, used to request events be sent from another\nservice.",
+            "id": "EventTrigger",
+            "properties": {
+                "resource": {
+                    "description": "Required. The resource(s) from which to observe events, for example,\n`projects/_/buckets/myBucket`.\n\nNot all syntactically correct values are accepted by all services. For\nexample:\n\n1. The authorization model must support it. Google Cloud Functions\n   only allows EventTriggers to be deployed that observe resources in the\n   same project as the `CloudFunction`.\n2. The resource type must match the pattern expected for an\n   `event_type`. For example, an `EventTrigger` that has an\n   `event_type` of \"google.pubsub.topic.publish\" should have a resource\n   that matches Google Cloud Pub/Sub topics.\n\nAdditionally, some services may support short names when creating an\n`EventTrigger`. These will always be returned in the normalized \"long\"\nformat.\n\nSee each *service's* documentation for supported formats.",
+                    "type": "string"
+                },
+                "service": {
+                    "description": "The hostname of the service that should be observed.\n\nIf no string is provided, the default service implementing the API will\nbe used. For example, `storage.googleapis.com` is the default for all\nevent types in the 'google.storage` namespace.",
+                    "type": "string"
+                },
+                "failurePolicy": {
+                    "$ref": "FailurePolicy",
+                    "description": "Specifies policy for failed executions."
+                },
+                "eventType": {
+                    "description": "Required. The type of event to observe. For example:\n`google.storage.object.finalized` and\n`google.firebase.analytics.event.log`.\n\nEvent type consists of three parts:\n 1. namespace: The domain name of the organization in reverse-domain\n    notation (e.g. `acme.net` appears as `net.acme`) and any orginization\n    specific subdivisions. If the organization's top-level domain is `com`,\n    the top-level domain is ommited (e.g. `google.com` appears as\n    `google`). For example, `google.storage` and\n    `google.firebase.analytics`.\n 2. resource type: The type of resource on which event ocurs. For\n    example, the Google Cloud Storage API includes the type `object`.\n 3. action: The action that generates the event. For example, actions for\n    a Google Cloud Storage Object include 'finalize' and 'delete'.\nThese parts are lower case and joined by '.'.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "FailurePolicy": {
+            "description": "Describes the policy in case of function's execution failure.\nIf empty, then defaults to ignoring failures (i.e. not retrying them).",
+            "id": "FailurePolicy",
+            "properties": {
+                "retry": {
+                    "$ref": "Retry",
+                    "description": "If specified, then the function will be retried in case of a failure."
+                }
+            },
+            "type": "object"
+        },
+        "GenerateDownloadUrlRequest": {
+            "description": "Request of `GenerateDownloadUrl` method.",
+            "id": "GenerateDownloadUrlRequest",
+            "properties": {
+                "versionId": {
+                    "description": "The optional version of function. If not set, default, current version\nis used.",
+                    "format": "uint64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "OperationMetadataV1": {
+            "description": "Metadata describing an Operation",
+            "id": "OperationMetadataV1",
+            "properties": {
+                "type": {
+                    "description": "Type of operation.",
+                    "enum": [
+                        "OPERATION_UNSPECIFIED",
+                        "CREATE_FUNCTION",
+                        "UPDATE_FUNCTION",
+                        "DELETE_FUNCTION"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown operation type.",
+                        "Triggered by CreateFunction call",
+                        "Triggered by UpdateFunction call",
+                        "Triggered by DeleteFunction call."
+                    ],
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Target of the operation - for example\nprojects/project-1/locations/region-1/functions/function-1",
+                    "type": "string"
+                },
+                "versionId": {
+                    "description": "Version id of the function created or updated by an API call.\nThis field is only pupulated for Create and Update operations.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "request": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The original request that started the operation.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+            "id": "Operation",
+            "properties": {
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+                    "type": "object"
+                },
+                "done": {
+                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+                    "type": "boolean"
+                },
+                "response": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+                    "type": "string"
+                },
+                "error": {
+                    "$ref": "Status",
+                    "description": "The error result of the operation in case of failure or cancellation."
+                }
+            },
+            "type": "object"
+        },
         "OperationMetadataV1Beta2": {
             "description": "Metadata describing an Operation",
             "id": "OperationMetadataV1Beta2",
@@ -274,10 +863,6 @@
             "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
             "id": "Status",
             "properties": {
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                },
                 "details": {
                     "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
                     "items": {
@@ -293,107 +878,36 @@
                     "description": "The status code, which should be an enum value of google.rpc.Code.",
                     "format": "int32",
                     "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
                 }
             },
             "type": "object"
         },
-        "ListLocationsResponse": {
-            "description": "The response message for Locations.ListLocations.",
-            "id": "ListLocationsResponse",
+        "SourceRepository": {
+            "description": "Describes SourceRepository, used to represent parameters related to\nsource repository where a function is hosted.",
+            "id": "SourceRepository",
             "properties": {
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
+                "deployedUrl": {
+                    "description": "Output only. The URL pointing to the hosted repository where the function\nwere defined at the time of deployment. It always points to a specific\ncommit in the format described above.",
                     "type": "string"
                 },
-                "locations": {
-                    "description": "A list of locations that matches the specified filter in the request.",
-                    "items": {
-                        "$ref": "Location"
-                    },
-                    "type": "array"
+                "url": {
+                    "description": "The URL pointing to the hosted repository where the function is defined.\nThere are supported Cloud Source Repository URLs in the following\nformats:\n\nTo refer to a specific commit:\n`https://source.developers.google.com/projects/*/repos/*/revisions/*/paths/*`\nTo refer to a moveable alias (branch):\n`https://source.developers.google.com/projects/*/repos/*/moveable-aliases/*/paths/*`\nIn particular, to refer to HEAD use `master` moveable alias.\nTo refer to a specific fixed alias (tag):\n`https://source.developers.google.com/projects/*/repos/*/fixed-aliases/*/paths/*`\n\nYou may omit `paths/*` if you want to use the main directory.",
+                    "type": "string"
                 }
             },
             "type": "object"
         },
-        "Location": {
-            "description": "A resource that represents Google Cloud Platform location.",
-            "id": "Location",
+        "CallFunctionRequest": {
+            "description": "Request for the `CallFunction` method.",
+            "id": "CallFunctionRequest",
             "properties": {
-                "labels": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Cross-service attributes for the location. For example\n\n    {\"cloud.googleapis.com/region\": \"us-east1\"}",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "Resource name for the location, which may vary between implementations.\nFor example: `\"projects/example-project/locations/us-east1\"`",
+                "data": {
+                    "description": "Input to be passed to the function.",
                     "type": "string"
-                },
-                "locationId": {
-                    "description": "The canonical id for this location. For example: `\"us-east1\"`.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Service-specific metadata. For example the available capacity at the given\nlocation.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "ListOperationsResponse": {
-            "description": "The response message for Operations.ListOperations.",
-            "id": "ListOperationsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
-                },
-                "operations": {
-                    "description": "A list of operations that matches the specified filter in the request.",
-                    "items": {
-                        "$ref": "Operation"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Operation": {
-            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
-            "id": "Operation",
-            "properties": {
-                "done": {
-                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
-                    "type": "boolean"
-                },
-                "response": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
-                    "type": "string"
-                },
-                "error": {
-                    "$ref": "Status",
-                    "description": "The error result of the operation in case of failure or cancellation."
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
-                    "type": "object"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/cloudiot__v1.json b/discovery/googleapis/cloudiot__v1.json
new file mode 100644
index 0000000..ccf3612
--- /dev/null
+++ b/discovery/googleapis/cloudiot__v1.json
@@ -0,0 +1,1287 @@
+{
+    "auth": {
+        "oauth2": {
+            "scopes": {
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "View and manage your data across Google Cloud Platform services"
+                },
+                "https://www.googleapis.com/auth/cloudiot": {
+                    "description": "Register and manage devices in the Google Cloud IoT service"
+                }
+            }
+        }
+    },
+    "basePath": "",
+    "baseUrl": "https://cloudiot.googleapis.com/",
+    "batchPath": "batch",
+    "canonicalName": "Cloud Iot",
+    "description": "Registers and manages IoT (Internet of Things) devices that connect to the Google Cloud Platform.\n",
+    "discoveryVersion": "v1",
+    "documentationLink": "https://cloud.google.com/iot",
+    "icons": {
+        "x16": "http://www.google.com/images/icons/product/search-16.gif",
+        "x32": "http://www.google.com/images/icons/product/search-32.gif"
+    },
+    "id": "cloudiot:v1",
+    "kind": "discovery#restDescription",
+    "name": "cloudiot",
+    "ownerDomain": "google.com",
+    "ownerName": "Google",
+    "parameters": {
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "$.xgafv": {
+            "description": "V1 error format.",
+            "enum": [
+                "1",
+                "2"
+            ],
+            "enumDescriptions": [
+                "v1 error format",
+                "v2 error format"
+            ],
+            "location": "query",
+            "type": "string"
+        },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
+        "alt": {
+            "default": "json",
+            "description": "Data format for response.",
+            "enum": [
+                "json",
+                "media",
+                "proto"
+            ],
+            "enumDescriptions": [
+                "Responses with Content-Type of application/json",
+                "Media download with context-dependent Content-Type",
+                "Responses with Content-Type of application/x-protobuf"
+            ],
+            "location": "query",
+            "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        }
+    },
+    "protocol": "rest",
+    "resources": {
+        "projects": {
+            "resources": {
+                "locations": {
+                    "resources": {
+                        "registries": {
+                            "methods": {
+                                "testIamPermissions": {
+                                    "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.",
+                                    "httpMethod": "POST",
+                                    "id": "cloudiot.projects.locations.registries.testIamPermissions",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/registries/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+resource}:testIamPermissions",
+                                    "request": {
+                                        "$ref": "TestIamPermissionsRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "TestIamPermissionsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudiot"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a device registry configuration.",
+                                    "httpMethod": "DELETE",
+                                    "id": "cloudiot.projects.locations.registries.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the device registry. For example,\n`projects/example-project/locations/us-central1/registries/my-registry`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/registries/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudiot"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists device registries.",
+                                    "httpMethod": "GET",
+                                    "id": "cloudiot.projects.locations.registries.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "pageSize": {
+                                            "description": "The maximum number of registries to return in the response. If this value\nis zero, the service will select a default size. A call may return fewer\nobjects than requested, but if there is a non-empty `page_token`, it\nindicates that more entries are available.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "parent": {
+                                            "description": "The project and cloud region path. For example,\n`projects/example-project/locations/us-central1`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "The value returned by the last `ListDeviceRegistriesResponse`; indicates\nthat this is a continuation of a prior `ListDeviceRegistries` call, and\nthat the system should return the next page of data.",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/registries",
+                                    "response": {
+                                        "$ref": "ListDeviceRegistriesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudiot"
+                                    ]
+                                },
+                                "create": {
+                                    "description": "Creates a device registry that contains devices.",
+                                    "httpMethod": "POST",
+                                    "id": "cloudiot.projects.locations.registries.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "The project and cloud region where this device registry must be created.\nFor example, `projects/example-project/locations/us-central1`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/registries",
+                                    "request": {
+                                        "$ref": "DeviceRegistry"
+                                    },
+                                    "response": {
+                                        "$ref": "DeviceRegistry"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudiot"
+                                    ]
+                                },
+                                "setIamPolicy": {
+                                    "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.",
+                                    "httpMethod": "POST",
+                                    "id": "cloudiot.projects.locations.registries.setIamPolicy",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/registries/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+resource}:setIamPolicy",
+                                    "request": {
+                                        "$ref": "SetIamPolicyRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Policy"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudiot"
+                                    ]
+                                },
+                                "getIamPolicy": {
+                                    "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
+                                    "httpMethod": "POST",
+                                    "id": "cloudiot.projects.locations.registries.getIamPolicy",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/registries/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+resource}:getIamPolicy",
+                                    "request": {
+                                        "$ref": "GetIamPolicyRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Policy"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudiot"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Gets a device registry configuration.",
+                                    "httpMethod": "GET",
+                                    "id": "cloudiot.projects.locations.registries.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the device registry. For example,\n`projects/example-project/locations/us-central1/registries/my-registry`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/registries/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "DeviceRegistry"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudiot"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates a device registry configuration.",
+                                    "httpMethod": "PATCH",
+                                    "id": "cloudiot.projects.locations.registries.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "updateMask": {
+                                            "description": "Only updates the `device_registry` fields indicated by this mask.\nThe field mask must not be empty, and it must not contain fields that\nare immutable or only set by the server.\nMutable top-level fields: `event_notification_config`, `mqtt_config`, and\n`state_notification_config`.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "name": {
+                                            "description": "The resource path name. For example,\n`projects/example-project/locations/us-central1/registries/my-registry`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/registries/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "request": {
+                                        "$ref": "DeviceRegistry"
+                                    },
+                                    "response": {
+                                        "$ref": "DeviceRegistry"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudiot"
+                                    ]
+                                }
+                            },
+                            "resources": {
+                                "devices": {
+                                    "methods": {
+                                        "get": {
+                                            "description": "Gets details about a device.",
+                                            "httpMethod": "GET",
+                                            "id": "cloudiot.projects.locations.registries.devices.get",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "The name of the device. For example,\n`projects/p0/locations/us-central1/registries/registry0/devices/device0` or\n`projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/registries/[^/]+/devices/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "Device"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/cloudiot"
+                                            ]
+                                        },
+                                        "patch": {
+                                            "description": "Updates a device.",
+                                            "httpMethod": "PATCH",
+                                            "id": "cloudiot.projects.locations.registries.devices.patch",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "updateMask": {
+                                                    "description": "Only updates the `device` fields indicated by this mask.\nThe field mask must not be empty, and it must not contain fields that\nare immutable or only set by the server.\nMutable top-level fields: `credentials`, `enabled_state`, and `metadata`",
+                                                    "format": "google-fieldmask",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "name": {
+                                                    "description": "The resource path name. For example,\n`projects/p1/locations/us-central1/registries/registry0/devices/dev0` or\n`projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.\nWhen `name` is populated as a response from the service, it always ends\nin the device numeric ID.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/registries/[^/]+/devices/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "request": {
+                                                "$ref": "Device"
+                                            },
+                                            "response": {
+                                                "$ref": "Device"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/cloudiot"
+                                            ]
+                                        },
+                                        "delete": {
+                                            "description": "Deletes a device.",
+                                            "httpMethod": "DELETE",
+                                            "id": "cloudiot.projects.locations.registries.devices.delete",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "The name of the device. For example,\n`projects/p0/locations/us-central1/registries/registry0/devices/device0` or\n`projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/registries/[^/]+/devices/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "Empty"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/cloudiot"
+                                            ]
+                                        },
+                                        "list": {
+                                            "description": "List devices in a device registry.",
+                                            "httpMethod": "GET",
+                                            "id": "cloudiot.projects.locations.registries.devices.list",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "deviceNumIds": {
+                                                    "description": "A list of device numerical ids. If empty, it will ignore this field. This\nfield cannot hold more than 10,000 entries.",
+                                                    "format": "uint64",
+                                                    "location": "query",
+                                                    "repeated": true,
+                                                    "type": "string"
+                                                },
+                                                "pageToken": {
+                                                    "description": "The value returned by the last `ListDevicesResponse`; indicates\nthat this is a continuation of a prior `ListDevices` call, and\nthat the system should return the next page of data.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "fieldMask": {
+                                                    "description": "The fields of the `Device` resource to be returned in the response. The\nfields `id`, and `num_id` are always returned by default, along with any\nother fields specified.",
+                                                    "format": "google-fieldmask",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "The maximum number of devices to return in the response. If this value\nis zero, the service will select a default size. A call may return fewer\nobjects than requested, but if there is a non-empty `page_token`, it\nindicates that more entries are available.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "parent": {
+                                                    "description": "The device registry path. Required. For example,\n`projects/my-project/locations/us-central1/registries/my-registry`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/registries/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "deviceIds": {
+                                                    "description": "A list of device string identifiers. If empty, it will ignore this field.\nFor example, `['device0', 'device12']`. This field cannot hold more than\n10,000 entries.",
+                                                    "location": "query",
+                                                    "repeated": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/devices",
+                                            "response": {
+                                                "$ref": "ListDevicesResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/cloudiot"
+                                            ]
+                                        },
+                                        "create": {
+                                            "description": "Creates a device in a device registry.",
+                                            "httpMethod": "POST",
+                                            "id": "cloudiot.projects.locations.registries.devices.create",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "parent": {
+                                                    "description": "The name of the device registry where this device should be created.\nFor example,\n`projects/example-project/locations/us-central1/registries/my-registry`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/registries/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/devices",
+                                            "request": {
+                                                "$ref": "Device"
+                                            },
+                                            "response": {
+                                                "$ref": "Device"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/cloudiot"
+                                            ]
+                                        },
+                                        "modifyCloudToDeviceConfig": {
+                                            "description": "Modifies the configuration for the device, which is eventually sent from\nthe Cloud IoT Core servers. Returns the modified configuration version and\nits metadata.",
+                                            "httpMethod": "POST",
+                                            "id": "cloudiot.projects.locations.registries.devices.modifyCloudToDeviceConfig",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "The name of the device. For example,\n`projects/p0/locations/us-central1/registries/registry0/devices/device0` or\n`projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/registries/[^/]+/devices/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}:modifyCloudToDeviceConfig",
+                                            "request": {
+                                                "$ref": "ModifyCloudToDeviceConfigRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "DeviceConfig"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/cloudiot"
+                                            ]
+                                        }
+                                    },
+                                    "resources": {
+                                        "states": {
+                                            "methods": {
+                                                "list": {
+                                                    "description": "Lists the last few versions of the device state in descending order (i.e.:\nnewest first).",
+                                                    "httpMethod": "GET",
+                                                    "id": "cloudiot.projects.locations.registries.devices.states.list",
+                                                    "parameterOrder": [
+                                                        "name"
+                                                    ],
+                                                    "parameters": {
+                                                        "numStates": {
+                                                            "description": "The number of states to list. States are listed in descending order of\nupdate time. The maximum number of states retained is 10. If this\nvalue is zero, it will return all the states available.",
+                                                            "format": "int32",
+                                                            "location": "query",
+                                                            "type": "integer"
+                                                        },
+                                                        "name": {
+                                                            "description": "The name of the device. For example,\n`projects/p0/locations/us-central1/registries/registry0/devices/device0` or\n`projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/registries/[^/]+/devices/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+name}/states",
+                                                    "response": {
+                                                        "$ref": "ListDeviceStatesResponse"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform",
+                                                        "https://www.googleapis.com/auth/cloudiot"
+                                                    ]
+                                                }
+                                            }
+                                        },
+                                        "configVersions": {
+                                            "methods": {
+                                                "list": {
+                                                    "description": "Lists the last few versions of the device configuration in descending\norder (i.e.: newest first).",
+                                                    "httpMethod": "GET",
+                                                    "id": "cloudiot.projects.locations.registries.devices.configVersions.list",
+                                                    "parameterOrder": [
+                                                        "name"
+                                                    ],
+                                                    "parameters": {
+                                                        "numVersions": {
+                                                            "description": "The number of versions to list. Versions are listed in decreasing order of\nthe version number. The maximum number of versions retained is 10. If this\nvalue is zero, it will return all the versions available.",
+                                                            "format": "int32",
+                                                            "location": "query",
+                                                            "type": "integer"
+                                                        },
+                                                        "name": {
+                                                            "description": "The name of the device. For example,\n`projects/p0/locations/us-central1/registries/registry0/devices/device0` or\n`projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/registries/[^/]+/devices/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+name}/configVersions",
+                                                    "response": {
+                                                        "$ref": "ListDeviceConfigVersionsResponse"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform",
+                                                        "https://www.googleapis.com/auth/cloudiot"
+                                                    ]
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "revision": "20171011",
+    "rootUrl": "https://cloudiot.googleapis.com/",
+    "schemas": {
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+            "id": "Status",
+            "properties": {
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                },
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Binding": {
+            "description": "Associates `members` with a `role`.",
+            "id": "Binding",
+            "properties": {
+                "condition": {
+                    "$ref": "Expr",
+                    "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently.\nThis field is GOOGLE_INTERNAL."
+                },
+                "members": {
+                    "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "role": {
+                    "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Expr": {
+            "description": "Represents an expression text. Example:\n\n    title: \"User account presence\"\n    description: \"Determines whether the request has a user account\"\n    expression: \"size(request.user) > 0\"",
+            "id": "Expr",
+            "properties": {
+                "location": {
+                    "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.",
+                    "type": "string"
+                },
+                "title": {
+                    "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.",
+                    "type": "string"
+                },
+                "expression": {
+                    "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ModifyCloudToDeviceConfigRequest": {
+            "description": "Request for `ModifyCloudToDeviceConfig`.",
+            "id": "ModifyCloudToDeviceConfigRequest",
+            "properties": {
+                "versionToUpdate": {
+                    "description": "The version number to update. If this value is zero, it will not check the\nversion number of the server and will always update the current version;\notherwise, this update will fail if the version number found on the server\ndoes not match this version number. This is used to support multiple\nsimultaneous updates without losing data.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "binaryData": {
+                    "description": "The configuration data for the device.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListDeviceStatesResponse": {
+            "description": "Response for `ListDeviceStates`.",
+            "id": "ListDeviceStatesResponse",
+            "properties": {
+                "deviceStates": {
+                    "description": "The last few device states. States are listed in descending order of server\nupdate time, starting from the most recent one.",
+                    "items": {
+                        "$ref": "DeviceState"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GetIamPolicyRequest": {
+            "description": "Request message for `GetIamPolicy` method.",
+            "id": "GetIamPolicyRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "TestIamPermissionsResponse": {
+            "description": "Response message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsResponse",
+            "properties": {
+                "permissions": {
+                    "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Device": {
+            "description": "The device resource.",
+            "id": "Device",
+            "properties": {
+                "lastConfigSendTime": {
+                    "description": "[Output only] The last time a cloud-to-device config version was sent to\nthe device.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "lastErrorStatus": {
+                    "$ref": "Status",
+                    "description": "[Output only] The error message of the most recent error, such as a failure\nto publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this\nfield. If no errors have occurred, this field has an empty message\nand the status code 0 == OK. Otherwise, this field is expected to have a\nstatus code other than OK."
+                },
+                "lastStateTime": {
+                    "description": "[Output only] The last time a state event was received. Timestamps are\nperiodically collected and written to storage; they may be stale by a few\nminutes.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "config": {
+                    "$ref": "DeviceConfig",
+                    "description": "The most recent device configuration, which is eventually sent from\nCloud IoT Core to the device. If not present on creation, the\nconfiguration will be initialized with an empty payload and version value\nof `1`. To update this field after creation, use the\n`DeviceManager.ModifyCloudToDeviceConfig` method."
+                },
+                "state": {
+                    "$ref": "DeviceState",
+                    "description": "[Output only] The state most recently received from the device. If no state\nhas been reported, this field is not present."
+                },
+                "credentials": {
+                    "description": "The credentials used to authenticate this device. To allow credential\nrotation without interruption, multiple device credentials can be bound to\nthis device. No more than 3 credentials can be bound to a single device at\na time. When new credentials are added to a device, they are verified\nagainst the registry credentials. For details, see the description of the\n`DeviceRegistry.credentials` field.",
+                    "items": {
+                        "$ref": "DeviceCredential"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The resource path name. For example,\n`projects/p1/locations/us-central1/registries/registry0/devices/dev0` or\n`projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.\nWhen `name` is populated as a response from the service, it always ends\nin the device numeric ID.",
+                    "type": "string"
+                },
+                "lastErrorTime": {
+                    "description": "[Output only] The time the most recent error occurred, such as a failure to\npublish to Cloud Pub/Sub. This field is the timestamp of\n'last_error_status'.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "The metadata key-value pairs assigned to the device. This metadata is not\ninterpreted or indexed by Cloud IoT Core. It can be used to add contextual\ninformation for the device.\n\nKeys must conform to the regular expression [a-zA-Z0-9-_]+ and be less than\n128 bytes in length.\n\nValues are free-form strings. Each value must be less than or equal to 32\nKB in size.\n\nThe total size of all keys and values must be less than 256 KB, and the\nmaximum number of key-value pairs is 500.",
+                    "type": "object"
+                },
+                "id": {
+                    "description": "The user-defined device identifier. The device ID must be unique\nwithin a device registry.",
+                    "type": "string"
+                },
+                "lastConfigAckTime": {
+                    "description": "[Output only] The last time a cloud-to-device config version acknowledgment\nwas received from the device. This field is only for configurations\nsent through MQTT.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "numId": {
+                    "description": "[Output only] A server-defined unique numeric ID for the device. This is a\nmore compact way to identify devices, and it is globally unique.",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "blocked": {
+                    "description": "If a device is blocked, connections or requests from this device will fail.\nCan be used to temporarily prevent the device from connecting if, for\nexample, the sensor is generating bad data and needs maintenance.",
+                    "type": "boolean"
+                },
+                "lastHeartbeatTime": {
+                    "description": "[Output only] The last time a heartbeat was received. Timestamps are\nperiodically collected and written to storage; they may be stale by a few\nminutes. This field is only for devices connecting through MQTT.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "lastEventTime": {
+                    "description": "[Output only] The last time a telemetry event was received. Timestamps are\nperiodically collected and written to storage; they may be stale by a few\nminutes.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListDeviceConfigVersionsResponse": {
+            "description": "Response for `ListDeviceConfigVersions`.",
+            "id": "ListDeviceConfigVersionsResponse",
+            "properties": {
+                "deviceConfigs": {
+                    "description": "The device configuration for the last few versions. Versions are listed\nin decreasing order, starting from the most recent one.",
+                    "items": {
+                        "$ref": "DeviceConfig"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "X509CertificateDetails": {
+            "description": "Details of an X.509 certificate. For informational purposes only.",
+            "id": "X509CertificateDetails",
+            "properties": {
+                "subject": {
+                    "description": "The entity the certificate and public key belong to.",
+                    "type": "string"
+                },
+                "issuer": {
+                    "description": "The entity that signed the certificate.",
+                    "type": "string"
+                },
+                "publicKeyType": {
+                    "description": "The type of public key in the certificate.",
+                    "type": "string"
+                },
+                "signatureAlgorithm": {
+                    "description": "The algorithm used to sign the certificate.",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "The time the certificate becomes valid.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "expiryTime": {
+                    "description": "The time the certificate becomes invalid.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EventNotificationConfig": {
+            "description": "The configuration to forward telemetry events.",
+            "id": "EventNotificationConfig",
+            "properties": {
+                "pubsubTopicName": {
+                    "description": "A Cloud Pub/Sub topic name. For example,\n`projects/myProject/topics/deviceEvents`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SetIamPolicyRequest": {
+            "description": "Request message for `SetIamPolicy` method.",
+            "id": "SetIamPolicyRequest",
+            "properties": {
+                "policy": {
+                    "$ref": "Policy",
+                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
+                },
+                "updateMask": {
+                    "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "PublicKeyCredential": {
+            "description": "A public key format and data.",
+            "id": "PublicKeyCredential",
+            "properties": {
+                "key": {
+                    "description": "The key data.",
+                    "type": "string"
+                },
+                "format": {
+                    "description": "The format of the key.",
+                    "enum": [
+                        "UNSPECIFIED_PUBLIC_KEY_FORMAT",
+                        "RSA_PEM",
+                        "RSA_X509_PEM",
+                        "ES256_PEM",
+                        "ES256_X509_PEM"
+                    ],
+                    "enumDescriptions": [
+                        "The format has not been specified. This is an invalid default value and\nmust not be used.",
+                        "An RSA public key encoded in base64, and wrapped by\n`-----BEGIN PUBLIC KEY-----` and `-----END PUBLIC KEY-----`. This can be\nused to verify `RS256` signatures in JWT tokens ([RFC7518](\nhttps://www.ietf.org/rfc/rfc7518.txt)).",
+                        "As RSA_PEM, but wrapped in an X.509v3 certificate ([RFC5280](\nhttps://www.ietf.org/rfc/rfc5280.txt)), encoded in base64, and wrapped by\n`-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`.",
+                        "Public key for the ECDSA algorithm using P-256 and SHA-256, encoded in\nbase64, and wrapped by `-----BEGIN PUBLIC KEY-----` and `-----END\nPUBLIC KEY-----`. This can be used to verify JWT tokens with the `ES256`\nalgorithm ([RFC7518](https://www.ietf.org/rfc/rfc7518.txt)). This curve is\ndefined in [OpenSSL](https://www.openssl.org/) as the `prime256v1` curve.",
+                        "As ES256_PEM, but wrapped in an X.509v3 certificate ([RFC5280](\nhttps://www.ietf.org/rfc/rfc5280.txt)), encoded in base64, and wrapped by\n`-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "PublicKeyCertificate": {
+            "description": "A public key certificate format and data.",
+            "id": "PublicKeyCertificate",
+            "properties": {
+                "format": {
+                    "description": "The certificate format.",
+                    "enum": [
+                        "UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT",
+                        "X509_CERTIFICATE_PEM"
+                    ],
+                    "enumDescriptions": [
+                        "The format has not been specified. This is an invalid default value and\nmust not be used.",
+                        "An X.509v3 certificate ([RFC5280](https://www.ietf.org/rfc/rfc5280.txt)),\nencoded in base64, and wrapped by `-----BEGIN CERTIFICATE-----` and\n`-----END CERTIFICATE-----`."
+                    ],
+                    "type": "string"
+                },
+                "certificate": {
+                    "description": "The certificate data.",
+                    "type": "string"
+                },
+                "x509Details": {
+                    "$ref": "X509CertificateDetails",
+                    "description": "[Output only] The certificate details. Used only for X.509 certificates."
+                }
+            },
+            "type": "object"
+        },
+        "DeviceState": {
+            "description": "The device state, as reported by the device.",
+            "id": "DeviceState",
+            "properties": {
+                "updateTime": {
+                    "description": "[Output only] The time at which this state version was updated in Cloud\nIoT Core.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "binaryData": {
+                    "description": "The device state data.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AuditLogConfig": {
+            "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n    {\n      \"audit_log_configs\": [\n        {\n          \"log_type\": \"DATA_READ\",\n          \"exempted_members\": [\n            \"user:foo@gmail.com\"\n          ]\n        },\n        {\n          \"log_type\": \"DATA_WRITE\",\n        }\n      ]\n    }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.",
+            "id": "AuditLogConfig",
+            "properties": {
+                "logType": {
+                    "description": "The log type that this config enables.",
+                    "enum": [
+                        "LOG_TYPE_UNSPECIFIED",
+                        "ADMIN_READ",
+                        "DATA_WRITE",
+                        "DATA_READ"
+                    ],
+                    "enumDescriptions": [
+                        "Default case. Should never be this.",
+                        "Admin reads. Example: CloudIAM getIamPolicy",
+                        "Data writes. Example: CloudSQL Users create",
+                        "Data reads. Example: CloudSQL Users list"
+                    ],
+                    "type": "string"
+                },
+                "exemptedMembers": {
+                    "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "StateNotificationConfig": {
+            "description": "The configuration for notification of new states received from the device.",
+            "id": "StateNotificationConfig",
+            "properties": {
+                "pubsubTopicName": {
+                    "description": "A Cloud Pub/Sub topic name. For example,\n`projects/myProject/topics/deviceEvents`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TestIamPermissionsRequest": {
+            "description": "Request message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsRequest",
+            "properties": {
+                "permissions": {
+                    "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Policy": {
+            "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
+            "id": "Policy",
+            "properties": {
+                "auditConfigs": {
+                    "description": "Specifies cloud audit logging configuration for this policy.",
+                    "items": {
+                        "$ref": "AuditConfig"
+                    },
+                    "type": "array"
+                },
+                "bindings": {
+                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
+                    "items": {
+                        "$ref": "Binding"
+                    },
+                    "type": "array"
+                },
+                "iamOwned": {
+                    "type": "boolean"
+                },
+                "etag": {
+                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "version": {
+                    "description": "Version of the `Policy`. The default version is 0.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "RegistryCredential": {
+            "description": "A server-stored registry credential used to validate device credentials.",
+            "id": "RegistryCredential",
+            "properties": {
+                "publicKeyCertificate": {
+                    "$ref": "PublicKeyCertificate",
+                    "description": "A public key certificate used to verify the device credentials."
+                }
+            },
+            "type": "object"
+        },
+        "ListDeviceRegistriesResponse": {
+            "description": "Response for `ListDeviceRegistries`.",
+            "id": "ListDeviceRegistriesResponse",
+            "properties": {
+                "deviceRegistries": {
+                    "description": "The registries that matched the query.",
+                    "items": {
+                        "$ref": "DeviceRegistry"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "If not empty, indicates that there may be more registries that match the\nrequest; this value should be passed in a new\n`ListDeviceRegistriesRequest`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DeviceRegistry": {
+            "description": "A container for a group of devices.",
+            "id": "DeviceRegistry",
+            "properties": {
+                "eventNotificationConfigs": {
+                    "description": "The configuration for notification of telemetry events received from the\ndevice. All telemetry events that were successfully published by the\ndevice and acknowledged by Cloud IoT Core are guaranteed to be\ndelivered to Cloud Pub/Sub. Only the first configuration is used.",
+                    "items": {
+                        "$ref": "EventNotificationConfig"
+                    },
+                    "type": "array"
+                },
+                "httpConfig": {
+                    "$ref": "HttpConfig",
+                    "description": "The DeviceService (HTTP) configuration for this device registry."
+                },
+                "id": {
+                    "description": "The identifier of this device registry. For example, `myRegistry`.",
+                    "type": "string"
+                },
+                "mqttConfig": {
+                    "$ref": "MqttConfig",
+                    "description": "The MQTT configuration for this device registry."
+                },
+                "stateNotificationConfig": {
+                    "$ref": "StateNotificationConfig",
+                    "description": "The configuration for notification of new states received from the device.\nState updates are guaranteed to be stored in the state history, but\nnotifications to Cloud Pub/Sub are not guaranteed. For example, if\npermissions are misconfigured or the specified topic doesn't exist, no\nnotification will be published but the state will still be stored in Cloud\nIoT Core."
+                },
+                "credentials": {
+                    "description": "The credentials used to verify the device credentials. No more than 10\ncredentials can be bound to a single registry at a time. The verification\nprocess occurs at the time of device creation or update. If this field is\nempty, no verification is performed. Otherwise, the credentials of a newly\ncreated device or added credentials of an updated device should be signed\nwith one of these registry credentials.\n\nNote, however, that existing devices will never be affected by\nmodifications to this list of credentials: after a device has been\nsuccessfully created in a registry, it should be able to connect even if\nits registry credentials are revoked, deleted, or modified.",
+                    "items": {
+                        "$ref": "RegistryCredential"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The resource path name. For example,\n`projects/example-project/locations/us-central1/registries/my-registry`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListDevicesResponse": {
+            "description": "Response for `ListDevices`.",
+            "id": "ListDevicesResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "If not empty, indicates that there may be more devices that match the\nrequest; this value should be passed in a new `ListDevicesRequest`.",
+                    "type": "string"
+                },
+                "devices": {
+                    "description": "The devices that match the request.",
+                    "items": {
+                        "$ref": "Device"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AuditConfig": {
+            "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
+            "id": "AuditConfig",
+            "properties": {
+                "service": {
+                    "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
+                    "type": "string"
+                },
+                "auditLogConfigs": {
+                    "description": "The configuration for logging of each type of permission.\nNext ID: 4",
+                    "items": {
+                        "$ref": "AuditLogConfig"
+                    },
+                    "type": "array"
+                },
+                "exemptedMembers": {
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "HttpConfig": {
+            "description": "The configuration of the HTTP bridge for a device registry.",
+            "id": "HttpConfig",
+            "properties": {
+                "httpEnabledState": {
+                    "description": "If enabled, allows devices to use DeviceService via the HTTP protocol.\nOtherwise, any requests to DeviceService will fail for this registry.",
+                    "enum": [
+                        "HTTP_STATE_UNSPECIFIED",
+                        "HTTP_ENABLED",
+                        "HTTP_DISABLED"
+                    ],
+                    "enumDescriptions": [
+                        "No HTTP state specified. If not specified, DeviceService will be\nenabled by default.",
+                        "Enables DeviceService (HTTP) service for the registry.",
+                        "Disables DeviceService (HTTP) service for the registry."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DeviceCredential": {
+            "description": "A server-stored device credential used for authentication.",
+            "id": "DeviceCredential",
+            "properties": {
+                "expirationTime": {
+                    "description": "[Optional] The time at which this credential becomes invalid. This\ncredential will be ignored for new client authentication requests after\nthis timestamp; however, it will not be automatically deleted.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "publicKey": {
+                    "$ref": "PublicKeyCredential",
+                    "description": "A public key used to verify the signature of JSON Web Tokens (JWTs).\nWhen adding a new device credential, either via device creation or via\nmodifications, this public key credential may be required to be signed by\none of the registry level certificates. More specifically, if the\nregistry contains at least one certificate, any new device credential\nmust be signed by one of the registry certificates. As a result,\nwhen the registry contains certificates, only X.509 certificates are\naccepted as device credentials. However, if the registry does\nnot contain a certificate, self-signed certificates and public keys will\nbe accepted. New device credentials must be different from every\nregistry-level certificate."
+                }
+            },
+            "type": "object"
+        },
+        "DeviceConfig": {
+            "description": "The device configuration. Eventually delivered to devices.",
+            "id": "DeviceConfig",
+            "properties": {
+                "binaryData": {
+                    "description": "The device configuration data.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "deviceAckTime": {
+                    "description": "[Output only] The time at which Cloud IoT Core received the\nacknowledgment from the device, indicating that the device has received\nthis configuration version. If this field is not present, the device has\nnot yet acknowledged that it received this version. Note that when\nthe config was sent to the device, many config versions may have been\navailable in Cloud IoT Core while the device was disconnected, and on\nconnection, only the latest version is sent to the device. Some\nversions may never be sent to the device, and therefore are never\nacknowledged. This timestamp is set by Cloud IoT Core.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "cloudUpdateTime": {
+                    "description": "[Output only] The time at which this configuration version was updated in\nCloud IoT Core. This timestamp is set by the server.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "version": {
+                    "description": "[Output only] The version of this update. The version number is assigned by\nthe server, and is always greater than 0 after device creation. The\nversion must be 0 on the `CreateDevice` request if a `config` is\nspecified; the response of `CreateDevice` will always have a value of 1.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MqttConfig": {
+            "description": "The configuration of MQTT for a device registry.",
+            "id": "MqttConfig",
+            "properties": {
+                "mqttEnabledState": {
+                    "description": "If enabled, allows connections using the MQTT protocol. Otherwise, MQTT\nconnections to this registry will fail.",
+                    "enum": [
+                        "MQTT_STATE_UNSPECIFIED",
+                        "MQTT_ENABLED",
+                        "MQTT_DISABLED"
+                    ],
+                    "enumDescriptions": [
+                        "No MQTT state specified. If not specified, MQTT will be enabled by default.",
+                        "Enables a MQTT connection.",
+                        "Disables a MQTT connection."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        }
+    },
+    "servicePath": "",
+    "title": "Google Cloud IoT API",
+    "version": "v1"
+}
\ No newline at end of file
diff --git a/discovery/googleapis/cloudkms__v1.json b/discovery/googleapis/cloudkms__v1.json
index 94c84c8..24b2789 100644
--- a/discovery/googleapis/cloudkms__v1.json
+++ b/discovery/googleapis/cloudkms__v1.json
@@ -25,32 +25,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
-            "location": "query",
-            "type": "string"
-        },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -64,6 +38,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -80,13 +59,13 @@
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
@@ -110,6 +89,27 @@
             "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
@@ -118,6 +118,46 @@
             "resources": {
                 "locations": {
                     "methods": {
+                        "list": {
+                            "description": "Lists information about the supported locations for this service.",
+                            "httpMethod": "GET",
+                            "id": "cloudkms.projects.locations.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "filter": {
+                                    "description": "The standard list filter.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "The resource that owns the locations collection, if applicable.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "The standard list page token.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The standard list page size.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v1/{+name}/locations",
+                            "response": {
+                                "$ref": "ListLocationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
                         "get": {
                             "description": "Get information about a location.",
                             "httpMethod": "GET",
@@ -141,51 +181,46 @@
                             "scopes": [
                                 "https://www.googleapis.com/auth/cloud-platform"
                             ]
-                        },
-                        "list": {
-                            "description": "Lists information about the supported locations for this service.",
-                            "httpMethod": "GET",
-                            "id": "cloudkms.projects.locations.list",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "The standard list page token.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "description": "The resource that owns the locations collection, if applicable.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "The standard list page size.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "filter": {
-                                    "description": "The standard list filter.",
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}/locations",
-                            "response": {
-                                "$ref": "ListLocationsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
                         }
                     },
                     "resources": {
                         "keyRings": {
                             "methods": {
+                                "list": {
+                                    "description": "Lists KeyRings.",
+                                    "httpMethod": "GET",
+                                    "id": "cloudkms.projects.locations.keyRings.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "pageToken": {
+                                            "description": "Optional pagination token, returned earlier via\nListKeyRingsResponse.next_page_token.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Optional limit on the number of KeyRings to include in the\nresponse.  Further KeyRings can subsequently be obtained by\nincluding the ListKeyRingsResponse.next_page_token in a subsequent\nrequest.  If unspecified, the server will pick an appropriate default.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The resource name of the location associated with the\nKeyRings, in the format `projects/*/locations/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/keyRings",
+                                    "response": {
+                                        "$ref": "ListKeyRingsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
                                 "create": {
                                     "description": "Create a new KeyRing in a given Project and Location.",
                                     "httpMethod": "POST",
@@ -319,81 +354,11 @@
                                     "scopes": [
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
-                                },
-                                "list": {
-                                    "description": "Lists KeyRings.",
-                                    "httpMethod": "GET",
-                                    "id": "cloudkms.projects.locations.keyRings.list",
-                                    "parameterOrder": [
-                                        "parent"
-                                    ],
-                                    "parameters": {
-                                        "pageToken": {
-                                            "description": "Optional pagination token, returned earlier via\nListKeyRingsResponse.next_page_token.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Optional limit on the number of KeyRings to include in the\nresponse.  Further KeyRings can subsequently be obtained by\nincluding the ListKeyRingsResponse.next_page_token in a subsequent\nrequest.  If unspecified, the server will pick an appropriate default.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "parent": {
-                                            "description": "Required. The resource name of the location associated with the\nKeyRings, in the format `projects/*/locations/*`.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+parent}/keyRings",
-                                    "response": {
-                                        "$ref": "ListKeyRingsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
                                 }
                             },
                             "resources": {
                                 "cryptoKeys": {
                                     "methods": {
-                                        "list": {
-                                            "description": "Lists CryptoKeys.",
-                                            "httpMethod": "GET",
-                                            "id": "cloudkms.projects.locations.keyRings.cryptoKeys.list",
-                                            "parameterOrder": [
-                                                "parent"
-                                            ],
-                                            "parameters": {
-                                                "parent": {
-                                                    "description": "Required. The resource name of the KeyRing to list, in the format\n`projects/*/locations/*/keyRings/*`.",
-                                                    "location": "path",
-                                                    "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "pageToken": {
-                                                    "description": "Optional pagination token, returned earlier via\nListCryptoKeysResponse.next_page_token.",
-                                                    "location": "query",
-                                                    "type": "string"
-                                                },
-                                                "pageSize": {
-                                                    "description": "Optional limit on the number of CryptoKeys to include in the\nresponse.  Further CryptoKeys can subsequently be obtained by\nincluding the ListCryptoKeysResponse.next_page_token in a subsequent\nrequest.  If unspecified, the server will pick an appropriate default.",
-                                                    "format": "int32",
-                                                    "location": "query",
-                                                    "type": "integer"
-                                                }
-                                            },
-                                            "path": "v1/{+parent}/cryptoKeys",
-                                            "response": {
-                                                "$ref": "ListCryptoKeysResponse"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform"
-                                            ]
-                                        },
                                         "encrypt": {
                                             "description": "Encrypts data, so that it can only be recovered by a call to Decrypt.",
                                             "httpMethod": "POST",
@@ -421,6 +386,33 @@
                                                 "https://www.googleapis.com/auth/cloud-platform"
                                             ]
                                         },
+                                        "setIamPolicy": {
+                                            "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.",
+                                            "httpMethod": "POST",
+                                            "id": "cloudkms.projects.locations.keyRings.cryptoKeys.setIamPolicy",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+resource}:setIamPolicy",
+                                            "request": {
+                                                "$ref": "SetIamPolicyRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Policy"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
                                         "create": {
                                             "description": "Create a new CryptoKey within a KeyRing.\n\nCryptoKey.purpose is required.",
                                             "httpMethod": "POST",
@@ -453,33 +445,6 @@
                                                 "https://www.googleapis.com/auth/cloud-platform"
                                             ]
                                         },
-                                        "setIamPolicy": {
-                                            "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.",
-                                            "httpMethod": "POST",
-                                            "id": "cloudkms.projects.locations.keyRings.cryptoKeys.setIamPolicy",
-                                            "parameterOrder": [
-                                                "resource"
-                                            ],
-                                            "parameters": {
-                                                "resource": {
-                                                    "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
-                                                    "location": "path",
-                                                    "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/{+resource}:setIamPolicy",
-                                            "request": {
-                                                "$ref": "SetIamPolicyRequest"
-                                            },
-                                            "response": {
-                                                "$ref": "Policy"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform"
-                                            ]
-                                        },
                                         "updatePrimaryVersion": {
                                             "description": "Update the version of a CryptoKey that will be used in Encrypt",
                                             "httpMethod": "POST",
@@ -539,18 +504,18 @@
                                                 "name"
                                             ],
                                             "parameters": {
+                                                "updateMask": {
+                                                    "description": "Required list of fields to be updated in this request.",
+                                                    "format": "google-fieldmask",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
                                                 "name": {
                                                     "description": "Output only. The resource name for this CryptoKey in the format\n`projects/*/locations/*/keyRings/*/cryptoKeys/*`.",
                                                     "location": "path",
                                                     "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$",
                                                     "required": true,
                                                     "type": "string"
-                                                },
-                                                "updateMask": {
-                                                    "description": "Required list of fields to be updated in this request.",
-                                                    "format": "google-fieldmask",
-                                                    "location": "query",
-                                                    "type": "string"
                                                 }
                                             },
                                             "path": "v1/{+name}",
@@ -641,65 +606,46 @@
                                             "scopes": [
                                                 "https://www.googleapis.com/auth/cloud-platform"
                                             ]
+                                        },
+                                        "list": {
+                                            "description": "Lists CryptoKeys.",
+                                            "httpMethod": "GET",
+                                            "id": "cloudkms.projects.locations.keyRings.cryptoKeys.list",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "parent": {
+                                                    "description": "Required. The resource name of the KeyRing to list, in the format\n`projects/*/locations/*/keyRings/*`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "pageToken": {
+                                                    "description": "Optional pagination token, returned earlier via\nListCryptoKeysResponse.next_page_token.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Optional limit on the number of CryptoKeys to include in the\nresponse.  Further CryptoKeys can subsequently be obtained by\nincluding the ListCryptoKeysResponse.next_page_token in a subsequent\nrequest.  If unspecified, the server will pick an appropriate default.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/cryptoKeys",
+                                            "response": {
+                                                "$ref": "ListCryptoKeysResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
                                         }
                                     },
                                     "resources": {
                                         "cryptoKeyVersions": {
                                             "methods": {
-                                                "create": {
-                                                    "description": "Create a new CryptoKeyVersion in a CryptoKey.\n\nThe server will assign the next sequential id. If unset,\nstate will be set to\nENABLED.",
-                                                    "httpMethod": "POST",
-                                                    "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.create",
-                                                    "parameterOrder": [
-                                                        "parent"
-                                                    ],
-                                                    "parameters": {
-                                                        "parent": {
-                                                            "description": "Required. The name of the CryptoKey associated with\nthe CryptoKeyVersions.",
-                                                            "location": "path",
-                                                            "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$",
-                                                            "required": true,
-                                                            "type": "string"
-                                                        }
-                                                    },
-                                                    "path": "v1/{+parent}/cryptoKeyVersions",
-                                                    "request": {
-                                                        "$ref": "CryptoKeyVersion"
-                                                    },
-                                                    "response": {
-                                                        "$ref": "CryptoKeyVersion"
-                                                    },
-                                                    "scopes": [
-                                                        "https://www.googleapis.com/auth/cloud-platform"
-                                                    ]
-                                                },
-                                                "destroy": {
-                                                    "description": "Schedule a CryptoKeyVersion for destruction.\n\nUpon calling this method, CryptoKeyVersion.state will be set to\nDESTROY_SCHEDULED\nand destroy_time will be set to a time 24\nhours in the future, at which point the state\nwill be changed to\nDESTROYED, and the key\nmaterial will be irrevocably destroyed.\n\nBefore the destroy_time is reached,\nRestoreCryptoKeyVersion may be called to reverse the process.",
-                                                    "httpMethod": "POST",
-                                                    "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.destroy",
-                                                    "parameterOrder": [
-                                                        "name"
-                                                    ],
-                                                    "parameters": {
-                                                        "name": {
-                                                            "description": "The resource name of the CryptoKeyVersion to destroy.",
-                                                            "location": "path",
-                                                            "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+/cryptoKeyVersions/[^/]+$",
-                                                            "required": true,
-                                                            "type": "string"
-                                                        }
-                                                    },
-                                                    "path": "v1/{+name}:destroy",
-                                                    "request": {
-                                                        "$ref": "DestroyCryptoKeyVersionRequest"
-                                                    },
-                                                    "response": {
-                                                        "$ref": "CryptoKeyVersion"
-                                                    },
-                                                    "scopes": [
-                                                        "https://www.googleapis.com/auth/cloud-platform"
-                                                    ]
-                                                },
                                                 "restore": {
                                                     "description": "Restore a CryptoKeyVersion in the\nDESTROY_SCHEDULED,\nstate.\n\nUpon restoration of the CryptoKeyVersion, state\nwill be set to DISABLED,\nand destroy_time will be cleared.",
                                                     "httpMethod": "POST",
@@ -735,18 +681,18 @@
                                                         "name"
                                                     ],
                                                     "parameters": {
+                                                        "updateMask": {
+                                                            "description": "Required list of fields to be updated in this request.",
+                                                            "format": "google-fieldmask",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
                                                         "name": {
                                                             "description": "Output only. The resource name for this CryptoKeyVersion in the format\n`projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`.",
                                                             "location": "path",
                                                             "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+/cryptoKeyVersions/[^/]+$",
                                                             "required": true,
                                                             "type": "string"
-                                                        },
-                                                        "updateMask": {
-                                                            "description": "Required list of fields to be updated in this request.",
-                                                            "format": "google-fieldmask",
-                                                            "location": "query",
-                                                            "type": "string"
                                                         }
                                                     },
                                                     "path": "v1/{+name}",
@@ -818,6 +764,60 @@
                                                     "scopes": [
                                                         "https://www.googleapis.com/auth/cloud-platform"
                                                     ]
+                                                },
+                                                "create": {
+                                                    "description": "Create a new CryptoKeyVersion in a CryptoKey.\n\nThe server will assign the next sequential id. If unset,\nstate will be set to\nENABLED.",
+                                                    "httpMethod": "POST",
+                                                    "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.create",
+                                                    "parameterOrder": [
+                                                        "parent"
+                                                    ],
+                                                    "parameters": {
+                                                        "parent": {
+                                                            "description": "Required. The name of the CryptoKey associated with\nthe CryptoKeyVersions.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+parent}/cryptoKeyVersions",
+                                                    "request": {
+                                                        "$ref": "CryptoKeyVersion"
+                                                    },
+                                                    "response": {
+                                                        "$ref": "CryptoKeyVersion"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "destroy": {
+                                                    "description": "Schedule a CryptoKeyVersion for destruction.\n\nUpon calling this method, CryptoKeyVersion.state will be set to\nDESTROY_SCHEDULED\nand destroy_time will be set to a time 24\nhours in the future, at which point the state\nwill be changed to\nDESTROYED, and the key\nmaterial will be irrevocably destroyed.\n\nBefore the destroy_time is reached,\nRestoreCryptoKeyVersion may be called to reverse the process.",
+                                                    "httpMethod": "POST",
+                                                    "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.destroy",
+                                                    "parameterOrder": [
+                                                        "name"
+                                                    ],
+                                                    "parameters": {
+                                                        "name": {
+                                                            "description": "The resource name of the CryptoKeyVersion to destroy.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+/cryptoKeyVersions/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+name}:destroy",
+                                                    "request": {
+                                                        "$ref": "DestroyCryptoKeyVersionRequest"
+                                                    },
+                                                    "response": {
+                                                        "$ref": "CryptoKeyVersion"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
                                                 }
                                             }
                                         }
@@ -830,13 +830,291 @@
             }
         }
     },
-    "revision": "20171003",
+    "revision": "20171017",
     "rootUrl": "https://cloudkms.googleapis.com/",
     "schemas": {
+        "ListCryptoKeysResponse": {
+            "description": "Response message for KeyManagementService.ListCryptoKeys.",
+            "id": "ListCryptoKeysResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token to retrieve next page of results. Pass this value in\nListCryptoKeysRequest.page_token to retrieve the next page of results.",
+                    "type": "string"
+                },
+                "cryptoKeys": {
+                    "description": "The list of CryptoKeys.",
+                    "items": {
+                        "$ref": "CryptoKey"
+                    },
+                    "type": "array"
+                },
+                "totalSize": {
+                    "description": "The total number of CryptoKeys that matched the query.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "TestIamPermissionsResponse": {
+            "description": "Response message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsResponse",
+            "properties": {
+                "permissions": {
+                    "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "DestroyCryptoKeyVersionRequest": {
+            "description": "Request message for KeyManagementService.DestroyCryptoKeyVersion.",
+            "id": "DestroyCryptoKeyVersionRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "AuditLogConfig": {
+            "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n    {\n      \"audit_log_configs\": [\n        {\n          \"log_type\": \"DATA_READ\",\n          \"exempted_members\": [\n            \"user:foo@gmail.com\"\n          ]\n        },\n        {\n          \"log_type\": \"DATA_WRITE\",\n        }\n      ]\n    }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.",
+            "id": "AuditLogConfig",
+            "properties": {
+                "logType": {
+                    "description": "The log type that this config enables.",
+                    "enum": [
+                        "LOG_TYPE_UNSPECIFIED",
+                        "ADMIN_READ",
+                        "DATA_WRITE",
+                        "DATA_READ"
+                    ],
+                    "enumDescriptions": [
+                        "Default case. Should never be this.",
+                        "Admin reads. Example: CloudIAM getIamPolicy",
+                        "Data writes. Example: CloudSQL Users create",
+                        "Data reads. Example: CloudSQL Users list"
+                    ],
+                    "type": "string"
+                },
+                "exemptedMembers": {
+                    "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "CryptoKey": {
+            "description": "A CryptoKey represents a logical key that can be used for cryptographic\noperations.\n\nA CryptoKey is made up of one or more versions, which\nrepresent the actual key material used in cryptographic operations.",
+            "id": "CryptoKey",
+            "properties": {
+                "name": {
+                    "description": "Output only. The resource name for this CryptoKey in the format\n`projects/*/locations/*/keyRings/*/cryptoKeys/*`.",
+                    "type": "string"
+                },
+                "purpose": {
+                    "description": "The immutable purpose of this CryptoKey. Currently, the only acceptable\npurpose is ENCRYPT_DECRYPT.",
+                    "enum": [
+                        "CRYPTO_KEY_PURPOSE_UNSPECIFIED",
+                        "ENCRYPT_DECRYPT"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified.",
+                        "CryptoKeys with this purpose may be used with\nEncrypt and\nDecrypt."
+                    ],
+                    "type": "string"
+                },
+                "nextRotationTime": {
+                    "description": "At next_rotation_time, the Key Management Service will automatically:\n\n1. Create a new version of this CryptoKey.\n2. Mark the new version as primary.\n\nKey rotations performed manually via\nCreateCryptoKeyVersion and\nUpdateCryptoKeyPrimaryVersion\ndo not affect next_rotation_time.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Labels with user defined metadata.",
+                    "type": "object"
+                },
+                "createTime": {
+                    "description": "Output only. The time at which this CryptoKey was created.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "rotationPeriod": {
+                    "description": "next_rotation_time will be advanced by this period when the service\nautomatically rotates a key. Must be at least one day.\n\nIf rotation_period is set, next_rotation_time must also be set.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "primary": {
+                    "$ref": "CryptoKeyVersion",
+                    "description": "Output only. A copy of the \"primary\" CryptoKeyVersion that will be used\nby Encrypt when this CryptoKey is given\nin EncryptRequest.name.\n\nThe CryptoKey's primary version can be updated via\nUpdateCryptoKeyPrimaryVersion."
+                }
+            },
+            "type": "object"
+        },
+        "DecryptResponse": {
+            "description": "Response message for KeyManagementService.Decrypt.",
+            "id": "DecryptResponse",
+            "properties": {
+                "plaintext": {
+                    "description": "The decrypted data originally supplied in EncryptRequest.plaintext.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TestIamPermissionsRequest": {
+            "description": "Request message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsRequest",
+            "properties": {
+                "permissions": {
+                    "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "EncryptResponse": {
+            "description": "Response message for KeyManagementService.Encrypt.",
+            "id": "EncryptResponse",
+            "properties": {
+                "ciphertext": {
+                    "description": "The encrypted data.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The resource name of the CryptoKeyVersion used in encryption.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "KeyRing": {
+            "description": "A KeyRing is a toplevel logical grouping of CryptoKeys.",
+            "id": "KeyRing",
+            "properties": {
+                "name": {
+                    "description": "Output only. The resource name for the KeyRing in the format\n`projects/*/locations/*/keyRings/*`.",
+                    "type": "string"
+                },
+                "createTime": {
+                    "description": "Output only. The time at which this KeyRing was created.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListLocationsResponse": {
+            "description": "The response message for Locations.ListLocations.",
+            "id": "ListLocationsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
+                "locations": {
+                    "description": "A list of locations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Location"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Policy": {
+            "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
+            "id": "Policy",
+            "properties": {
+                "etag": {
+                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "version": {
+                    "description": "Version of the `Policy`. The default version is 0.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "auditConfigs": {
+                    "description": "Specifies cloud audit logging configuration for this policy.",
+                    "items": {
+                        "$ref": "AuditConfig"
+                    },
+                    "type": "array"
+                },
+                "bindings": {
+                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
+                    "items": {
+                        "$ref": "Binding"
+                    },
+                    "type": "array"
+                },
+                "iamOwned": {
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "UpdateCryptoKeyPrimaryVersionRequest": {
+            "description": "Request message for KeyManagementService.UpdateCryptoKeyPrimaryVersion.",
+            "id": "UpdateCryptoKeyPrimaryVersionRequest",
+            "properties": {
+                "cryptoKeyVersionId": {
+                    "description": "The id of the child CryptoKeyVersion to use as primary.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "RestoreCryptoKeyVersionRequest": {
+            "description": "Request message for KeyManagementService.RestoreCryptoKeyVersion.",
+            "id": "RestoreCryptoKeyVersionRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "ListKeyRingsResponse": {
+            "description": "Response message for KeyManagementService.ListKeyRings.",
+            "id": "ListKeyRingsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token to retrieve next page of results. Pass this value in\nListKeyRingsRequest.page_token to retrieve the next page of results.",
+                    "type": "string"
+                },
+                "totalSize": {
+                    "description": "The total number of KeyRings that matched the query.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "keyRings": {
+                    "description": "The list of KeyRings.",
+                    "items": {
+                        "$ref": "KeyRing"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "AuditConfig": {
             "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
             "id": "AuditConfig",
             "properties": {
+                "exemptedMembers": {
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
                 "service": {
                     "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
                     "type": "string"
@@ -847,12 +1125,6 @@
                         "$ref": "AuditLogConfig"
                     },
                     "type": "array"
-                },
-                "exemptedMembers": {
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -861,6 +1133,11 @@
             "description": "A CryptoKeyVersion represents an individual cryptographic key, and the\nassociated key material.\n\nIt can be used for cryptographic operations either directly, or via its\nparent CryptoKey, in which case the server will choose the appropriate\nversion for the operation.\n\nFor security reasons, the raw cryptographic key material represented by a\nCryptoKeyVersion can never be viewed or exported. It can only be used to\nencrypt or decrypt data when an authorized user or application invokes Cloud\nKMS.",
             "id": "CryptoKeyVersion",
             "properties": {
+                "destroyEventTime": {
+                    "description": "Output only. The time this CryptoKeyVersion's key material was\ndestroyed. Only present if state is\nDESTROYED.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
                 "destroyTime": {
                     "description": "Output only. The time this CryptoKeyVersion's key material is scheduled\nfor destruction. Only present if state is\nDESTROY_SCHEDULED.",
                     "format": "google-datetime",
@@ -892,11 +1169,6 @@
                 "name": {
                     "description": "Output only. The resource name for this CryptoKeyVersion in the format\n`projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`.",
                     "type": "string"
-                },
-                "destroyEventTime": {
-                    "description": "Output only. The time this CryptoKeyVersion's key material was\ndestroyed. Only present if state is\nDESTROYED.",
-                    "format": "google-datetime",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -905,14 +1177,14 @@
             "description": "Request message for `SetIamPolicy` method.",
             "id": "SetIamPolicyRequest",
             "properties": {
-                "policy": {
-                    "$ref": "Policy",
-                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
-                },
                 "updateMask": {
                     "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.",
                     "format": "google-fieldmask",
                     "type": "string"
+                },
+                "policy": {
+                    "$ref": "Policy",
+                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
                 }
             },
             "type": "object"
@@ -921,13 +1193,13 @@
             "description": "Request message for KeyManagementService.Decrypt.",
             "id": "DecryptRequest",
             "properties": {
-                "additionalAuthenticatedData": {
-                    "description": "Optional data that must match the data originally supplied in\nEncryptRequest.additional_authenticated_data.",
+                "ciphertext": {
+                    "description": "Required. The encrypted data originally returned in\nEncryptResponse.ciphertext.",
                     "format": "byte",
                     "type": "string"
                 },
-                "ciphertext": {
-                    "description": "Required. The encrypted data originally returned in\nEncryptResponse.ciphertext.",
+                "additionalAuthenticatedData": {
+                    "description": "Optional data that must match the data originally supplied in\nEncryptRequest.additional_authenticated_data.",
                     "format": "byte",
                     "type": "string"
                 }
@@ -938,10 +1210,6 @@
             "description": "Associates `members` with a `role`.",
             "id": "Binding",
             "properties": {
-                "condition": {
-                    "$ref": "Expr",
-                    "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently.\nThis field is GOOGLE_INTERNAL."
-                },
                 "members": {
                     "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
                     "items": {
@@ -952,6 +1220,10 @@
                 "role": {
                     "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired",
                     "type": "string"
+                },
+                "condition": {
+                    "$ref": "Expr",
+                    "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently.\nThis field is GOOGLE_INTERNAL."
                 }
             },
             "type": "object"
@@ -960,14 +1232,6 @@
             "description": "Represents an expression text. Example:\n\n    title: \"User account presence\"\n    description: \"Determines whether the request has a user account\"\n    expression: \"size(request.user) > 0\"",
             "id": "Expr",
             "properties": {
-                "location": {
-                    "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.",
-                    "type": "string"
-                },
-                "title": {
-                    "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.",
-                    "type": "string"
-                },
                 "description": {
                     "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.",
                     "type": "string"
@@ -975,6 +1239,14 @@
                 "expression": {
                     "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.",
                     "type": "string"
+                },
+                "title": {
+                    "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.",
+                    "type": "string"
+                },
+                "location": {
+                    "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1000,10 +1272,6 @@
             "description": "Response message for KeyManagementService.ListCryptoKeyVersions.",
             "id": "ListCryptoKeyVersionsResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "A token to retrieve next page of results. Pass this value in\nListCryptoKeyVersionsRequest.page_token to retrieve the next page of\nresults.",
-                    "type": "string"
-                },
                 "totalSize": {
                     "description": "The total number of CryptoKeyVersions that matched the\nquery.",
                     "format": "int32",
@@ -1015,6 +1283,10 @@
                         "$ref": "CryptoKeyVersion"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token to retrieve next page of results. Pass this value in\nListCryptoKeyVersionsRequest.page_token to retrieve the next page of\nresults.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1023,14 +1295,6 @@
             "description": "A resource that represents Google Cloud Platform location.",
             "id": "Location",
             "properties": {
-                "name": {
-                    "description": "Resource name for the location, which may vary between implementations.\nFor example: `\"projects/example-project/locations/us-east1\"`",
-                    "type": "string"
-                },
-                "locationId": {
-                    "description": "The canonical id for this location. For example: `\"us-east1\"`.",
-                    "type": "string"
-                },
                 "metadata": {
                     "additionalProperties": {
                         "description": "Properties of the object. Contains field @type with type URL.",
@@ -1045,278 +1309,14 @@
                     },
                     "description": "Cross-service attributes for the location. For example\n\n    {\"cloud.googleapis.com/region\": \"us-east1\"}",
                     "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "ListCryptoKeysResponse": {
-            "description": "Response message for KeyManagementService.ListCryptoKeys.",
-            "id": "ListCryptoKeysResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "A token to retrieve next page of results. Pass this value in\nListCryptoKeysRequest.page_token to retrieve the next page of results.",
-                    "type": "string"
-                },
-                "totalSize": {
-                    "description": "The total number of CryptoKeys that matched the query.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "cryptoKeys": {
-                    "description": "The list of CryptoKeys.",
-                    "items": {
-                        "$ref": "CryptoKey"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "TestIamPermissionsResponse": {
-            "description": "Response message for `TestIamPermissions` method.",
-            "id": "TestIamPermissionsResponse",
-            "properties": {
-                "permissions": {
-                    "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "DestroyCryptoKeyVersionRequest": {
-            "description": "Request message for KeyManagementService.DestroyCryptoKeyVersion.",
-            "id": "DestroyCryptoKeyVersionRequest",
-            "properties": {},
-            "type": "object"
-        },
-        "AuditLogConfig": {
-            "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n    {\n      \"audit_log_configs\": [\n        {\n          \"log_type\": \"DATA_READ\",\n          \"exempted_members\": [\n            \"user:foo@gmail.com\"\n          ]\n        },\n        {\n          \"log_type\": \"DATA_WRITE\",\n        }\n      ]\n    }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.",
-            "id": "AuditLogConfig",
-            "properties": {
-                "exemptedMembers": {
-                    "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "logType": {
-                    "description": "The log type that this config enables.",
-                    "enum": [
-                        "LOG_TYPE_UNSPECIFIED",
-                        "ADMIN_READ",
-                        "DATA_WRITE",
-                        "DATA_READ"
-                    ],
-                    "enumDescriptions": [
-                        "Default case. Should never be this.",
-                        "Admin reads. Example: CloudIAM getIamPolicy",
-                        "Data writes. Example: CloudSQL Users create",
-                        "Data reads. Example: CloudSQL Users list"
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CryptoKey": {
-            "description": "A CryptoKey represents a logical key that can be used for cryptographic\noperations.\n\nA CryptoKey is made up of one or more versions, which\nrepresent the actual key material used in cryptographic operations.",
-            "id": "CryptoKey",
-            "properties": {
-                "primary": {
-                    "$ref": "CryptoKeyVersion",
-                    "description": "Output only. A copy of the \"primary\" CryptoKeyVersion that will be used\nby Encrypt when this CryptoKey is given\nin EncryptRequest.name.\n\nThe CryptoKey's primary version can be updated via\nUpdateCryptoKeyPrimaryVersion."
                 },
                 "name": {
-                    "description": "Output only. The resource name for this CryptoKey in the format\n`projects/*/locations/*/keyRings/*/cryptoKeys/*`.",
+                    "description": "Resource name for the location, which may vary between implementations.\nFor example: `\"projects/example-project/locations/us-east1\"`",
                     "type": "string"
                 },
-                "purpose": {
-                    "description": "The immutable purpose of this CryptoKey. Currently, the only acceptable\npurpose is ENCRYPT_DECRYPT.",
-                    "enum": [
-                        "CRYPTO_KEY_PURPOSE_UNSPECIFIED",
-                        "ENCRYPT_DECRYPT"
-                    ],
-                    "enumDescriptions": [
-                        "Not specified.",
-                        "CryptoKeys with this purpose may be used with\nEncrypt and\nDecrypt."
-                    ],
+                "locationId": {
+                    "description": "The canonical id for this location. For example: `\"us-east1\"`.",
                     "type": "string"
-                },
-                "nextRotationTime": {
-                    "description": "At next_rotation_time, the Key Management Service will automatically:\n\n1. Create a new version of this CryptoKey.\n2. Mark the new version as primary.\n\nKey rotations performed manually via\nCreateCryptoKeyVersion and\nUpdateCryptoKeyPrimaryVersion\ndo not affect next_rotation_time.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "createTime": {
-                    "description": "Output only. The time at which this CryptoKey was created.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "labels": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Labels with user defined metadata.",
-                    "type": "object"
-                },
-                "rotationPeriod": {
-                    "description": "next_rotation_time will be advanced by this period when the service\nautomatically rotates a key. Must be at least one day.\n\nIf rotation_period is set, next_rotation_time must also be set.",
-                    "format": "google-duration",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "DecryptResponse": {
-            "description": "Response message for KeyManagementService.Decrypt.",
-            "id": "DecryptResponse",
-            "properties": {
-                "plaintext": {
-                    "description": "The decrypted data originally supplied in EncryptRequest.plaintext.",
-                    "format": "byte",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TestIamPermissionsRequest": {
-            "description": "Request message for `TestIamPermissions` method.",
-            "id": "TestIamPermissionsRequest",
-            "properties": {
-                "permissions": {
-                    "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ListLocationsResponse": {
-            "description": "The response message for Locations.ListLocations.",
-            "id": "ListLocationsResponse",
-            "properties": {
-                "locations": {
-                    "description": "A list of locations that matches the specified filter in the request.",
-                    "items": {
-                        "$ref": "Location"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Policy": {
-            "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
-            "id": "Policy",
-            "properties": {
-                "iamOwned": {
-                    "type": "boolean"
-                },
-                "etag": {
-                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "version": {
-                    "description": "Version of the `Policy`. The default version is 0.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "auditConfigs": {
-                    "description": "Specifies cloud audit logging configuration for this policy.",
-                    "items": {
-                        "$ref": "AuditConfig"
-                    },
-                    "type": "array"
-                },
-                "bindings": {
-                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
-                    "items": {
-                        "$ref": "Binding"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "KeyRing": {
-            "description": "A KeyRing is a toplevel logical grouping of CryptoKeys.",
-            "id": "KeyRing",
-            "properties": {
-                "name": {
-                    "description": "Output only. The resource name for the KeyRing in the format\n`projects/*/locations/*/keyRings/*`.",
-                    "type": "string"
-                },
-                "createTime": {
-                    "description": "Output only. The time at which this KeyRing was created.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "EncryptResponse": {
-            "description": "Response message for KeyManagementService.Encrypt.",
-            "id": "EncryptResponse",
-            "properties": {
-                "ciphertext": {
-                    "description": "The encrypted data.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The resource name of the CryptoKeyVersion used in encryption.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RestoreCryptoKeyVersionRequest": {
-            "description": "Request message for KeyManagementService.RestoreCryptoKeyVersion.",
-            "id": "RestoreCryptoKeyVersionRequest",
-            "properties": {},
-            "type": "object"
-        },
-        "UpdateCryptoKeyPrimaryVersionRequest": {
-            "description": "Request message for KeyManagementService.UpdateCryptoKeyPrimaryVersion.",
-            "id": "UpdateCryptoKeyPrimaryVersionRequest",
-            "properties": {
-                "cryptoKeyVersionId": {
-                    "description": "The id of the child CryptoKeyVersion to use as primary.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListKeyRingsResponse": {
-            "description": "Response message for KeyManagementService.ListKeyRings.",
-            "id": "ListKeyRingsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "A token to retrieve next page of results. Pass this value in\nListKeyRingsRequest.page_token to retrieve the next page of results.",
-                    "type": "string"
-                },
-                "totalSize": {
-                    "description": "The total number of KeyRings that matched the query.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "keyRings": {
-                    "description": "The list of KeyRings.",
-                    "items": {
-                        "$ref": "KeyRing"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/cloudresourcemanager__v1.json b/discovery/googleapis/cloudresourcemanager__v1.json
index c3a5d0a..ab99ef9 100644
--- a/discovery/googleapis/cloudresourcemanager__v1.json
+++ b/discovery/googleapis/cloudresourcemanager__v1.json
@@ -2,11 +2,11 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/cloud-platform.read-only": {
-                    "description": "View your data across Google Cloud Platform services"
-                },
                 "https://www.googleapis.com/auth/cloud-platform": {
                     "description": "View and manage your data across Google Cloud Platform services"
+                },
+                "https://www.googleapis.com/auth/cloud-platform.read-only": {
+                    "description": "View your data across Google Cloud Platform services"
                 }
             }
         }
@@ -28,6 +28,37 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -62,13 +93,13 @@
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
@@ -82,70 +113,12 @@
             "description": "Pretty-print response.",
             "location": "query",
             "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
-            "location": "query",
-            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
         "organizations": {
             "methods": {
-                "clearOrgPolicy": {
-                    "description": "Clears a `Policy` from a resource.",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.organizations.clearOrgPolicy",
-                    "parameterOrder": [
-                        "resource"
-                    ],
-                    "parameters": {
-                        "resource": {
-                            "description": "Name of the resource for the `Policy` to clear.",
-                            "location": "path",
-                            "pattern": "^organizations/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+resource}:clearOrgPolicy",
-                    "request": {
-                        "$ref": "ClearOrgPolicyRequest"
-                    },
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
                 "setOrgPolicy": {
                     "description": "Updates the specified `Policy` on the resource. Creates a new `Policy` for\nthat `Constraint` on the resource if one does not exist.\n\nNot supplying an `etag` on the request `Policy` results in an unconditional\nwrite of the `Policy`.",
                     "httpMethod": "POST",
@@ -200,34 +173,6 @@
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
                 },
-                "listAvailableOrgPolicyConstraints": {
-                    "description": "Lists `Constraints` that could be applied on the specified resource.",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.organizations.listAvailableOrgPolicyConstraints",
-                    "parameterOrder": [
-                        "resource"
-                    ],
-                    "parameters": {
-                        "resource": {
-                            "description": "Name of the resource to list `Constraints` for.",
-                            "location": "path",
-                            "pattern": "^organizations/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+resource}:listAvailableOrgPolicyConstraints",
-                    "request": {
-                        "$ref": "ListAvailableOrgPolicyConstraintsRequest"
-                    },
-                    "response": {
-                        "$ref": "ListAvailableOrgPolicyConstraintsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
                 "listOrgPolicies": {
                     "description": "Lists all the `Policies` set for a particular resource.",
                     "httpMethod": "POST",
@@ -256,6 +201,34 @@
                         "https://www.googleapis.com/auth/cloud-platform.read-only"
                     ]
                 },
+                "listAvailableOrgPolicyConstraints": {
+                    "description": "Lists `Constraints` that could be applied on the specified resource.",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.organizations.listAvailableOrgPolicyConstraints",
+                    "parameterOrder": [
+                        "resource"
+                    ],
+                    "parameters": {
+                        "resource": {
+                            "description": "Name of the resource to list `Constraints` for.",
+                            "location": "path",
+                            "pattern": "^organizations/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+resource}:listAvailableOrgPolicyConstraints",
+                    "request": {
+                        "$ref": "ListAvailableOrgPolicyConstraintsRequest"
+                    },
+                    "response": {
+                        "$ref": "ListAvailableOrgPolicyConstraintsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
+                },
                 "getIamPolicy": {
                     "description": "Gets the access control policy for an Organization resource. May be empty\nif no such policy or resource exists. The `resource` field should be the\norganization's resource name, e.g. \"organizations/123\".\n\nAuthorization requires the Google IAM permission\n`resourcemanager.organizations.getIamPolicy` on the specified organization",
                     "httpMethod": "POST",
@@ -284,24 +257,6 @@
                         "https://www.googleapis.com/auth/cloud-platform.read-only"
                     ]
                 },
-                "search": {
-                    "description": "Searches Organization resources that are visible to the user and satisfy\nthe specified filter. This method returns Organizations in an unspecified\norder. New Organizations do not necessarily appear at the end of the\nresults.\n\nSearch will only return organizations on which the user has the permission\n`resourcemanager.organizations.get`",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.organizations.search",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/organizations:search",
-                    "request": {
-                        "$ref": "SearchOrganizationsRequest"
-                    },
-                    "response": {
-                        "$ref": "SearchOrganizationsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
                 "getOrgPolicy": {
                     "description": "Gets a `Policy` on a resource.\n\nIf no `Policy` is set on the resource, a `Policy` is returned with default\nvalues including `POLICY_TYPE_NOT_SET` for the `policy_type oneof`. The\n`etag` value can be used with `SetOrgPolicy()` to create or update a\n`Policy` during read-modify-write.",
                     "httpMethod": "POST",
@@ -330,25 +285,18 @@
                         "https://www.googleapis.com/auth/cloud-platform.read-only"
                     ]
                 },
-                "get": {
-                    "description": "Fetches an Organization resource identified by the specified resource name.",
-                    "httpMethod": "GET",
-                    "id": "cloudresourcemanager.organizations.get",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The resource name of the Organization to fetch, e.g. \"organizations/1234\".",
-                            "location": "path",
-                            "pattern": "^organizations/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
+                "search": {
+                    "description": "Searches Organization resources that are visible to the user and satisfy\nthe specified filter. This method returns Organizations in an unspecified\norder. New Organizations do not necessarily appear at the end of the\nresults.\n\nSearch will only return organizations on which the user has the permission\n`resourcemanager.organizations.get`",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.organizations.search",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/organizations:search",
+                    "request": {
+                        "$ref": "SearchOrganizationsRequest"
                     },
-                    "path": "v1/{+name}",
                     "response": {
-                        "$ref": "Organization"
+                        "$ref": "SearchOrganizationsResponse"
                     },
                     "scopes": [
                         "https://www.googleapis.com/auth/cloud-platform",
@@ -383,6 +331,31 @@
                         "https://www.googleapis.com/auth/cloud-platform.read-only"
                     ]
                 },
+                "get": {
+                    "description": "Fetches an Organization resource identified by the specified resource name.",
+                    "httpMethod": "GET",
+                    "id": "cloudresourcemanager.organizations.get",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The resource name of the Organization to fetch, e.g. \"organizations/1234\".",
+                            "location": "path",
+                            "pattern": "^organizations/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+name}",
+                    "response": {
+                        "$ref": "Organization"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
+                },
                 "testIamPermissions": {
                     "description": "Returns permissions that a caller has on the specified Organization.\nThe `resource` field should be the organization's resource name,\ne.g. \"organizations/123\".\n\nThere are no permissions required for making this API call.",
                     "httpMethod": "POST",
@@ -410,6 +383,33 @@
                         "https://www.googleapis.com/auth/cloud-platform",
                         "https://www.googleapis.com/auth/cloud-platform.read-only"
                     ]
+                },
+                "clearOrgPolicy": {
+                    "description": "Clears a `Policy` from a resource.",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.organizations.clearOrgPolicy",
+                    "parameterOrder": [
+                        "resource"
+                    ],
+                    "parameters": {
+                        "resource": {
+                            "description": "Name of the resource for the `Policy` to clear.",
+                            "location": "path",
+                            "pattern": "^organizations/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+resource}:clearOrgPolicy",
+                    "request": {
+                        "$ref": "ClearOrgPolicyRequest"
+                    },
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
                 }
             }
         },
@@ -444,24 +444,6 @@
         },
         "liens": {
             "methods": {
-                "create": {
-                    "description": "Create a Lien which applies to the resource denoted by the `parent` field.\n\nCallers of this method will require permission on the `parent` resource.\nFor example, applying to `projects/1234` requires permission\n`resourcemanager.projects.updateLiens`.\n\nNOTE: Some resources may limit the number of Liens which may be applied.",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.liens.create",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/liens",
-                    "request": {
-                        "$ref": "Lien"
-                    },
-                    "response": {
-                        "$ref": "Lien"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
                 "delete": {
                     "description": "Delete a Lien by `name`.\n\nCallers of this method will require permission on the `parent` resource.\nFor example, a Lien with a `parent` of `projects/1234` requires permission\n`resourcemanager.projects.updateLiens`.",
                     "httpMethod": "DELETE",
@@ -518,67 +500,29 @@
                         "https://www.googleapis.com/auth/cloud-platform",
                         "https://www.googleapis.com/auth/cloud-platform.read-only"
                     ]
+                },
+                "create": {
+                    "description": "Create a Lien which applies to the resource denoted by the `parent` field.\n\nCallers of this method will require permission on the `parent` resource.\nFor example, applying to `projects/1234` requires permission\n`resourcemanager.projects.updateLiens`.\n\nNOTE: Some resources may limit the number of Liens which may be applied.",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.liens.create",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/liens",
+                    "request": {
+                        "$ref": "Lien"
+                    },
+                    "response": {
+                        "$ref": "Lien"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
                 }
             }
         },
         "folders": {
             "methods": {
-                "getOrgPolicy": {
-                    "description": "Gets a `Policy` on a resource.\n\nIf no `Policy` is set on the resource, a `Policy` is returned with default\nvalues including `POLICY_TYPE_NOT_SET` for the `policy_type oneof`. The\n`etag` value can be used with `SetOrgPolicy()` to create or update a\n`Policy` during read-modify-write.",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.folders.getOrgPolicy",
-                    "parameterOrder": [
-                        "resource"
-                    ],
-                    "parameters": {
-                        "resource": {
-                            "description": "Name of the resource the `Policy` is set on.",
-                            "location": "path",
-                            "pattern": "^folders/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+resource}:getOrgPolicy",
-                    "request": {
-                        "$ref": "GetOrgPolicyRequest"
-                    },
-                    "response": {
-                        "$ref": "OrgPolicy"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
-                "getEffectiveOrgPolicy": {
-                    "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.folders.getEffectiveOrgPolicy",
-                    "parameterOrder": [
-                        "resource"
-                    ],
-                    "parameters": {
-                        "resource": {
-                            "description": "The name of the resource to start computing the effective `Policy`.",
-                            "location": "path",
-                            "pattern": "^folders/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+resource}:getEffectiveOrgPolicy",
-                    "request": {
-                        "$ref": "GetEffectiveOrgPolicyRequest"
-                    },
-                    "response": {
-                        "$ref": "OrgPolicy"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
                 "clearOrgPolicy": {
                     "description": "Clears a `Policy` from a resource.",
                     "httpMethod": "POST",
@@ -688,6 +632,62 @@
                         "https://www.googleapis.com/auth/cloud-platform",
                         "https://www.googleapis.com/auth/cloud-platform.read-only"
                     ]
+                },
+                "getOrgPolicy": {
+                    "description": "Gets a `Policy` on a resource.\n\nIf no `Policy` is set on the resource, a `Policy` is returned with default\nvalues including `POLICY_TYPE_NOT_SET` for the `policy_type oneof`. The\n`etag` value can be used with `SetOrgPolicy()` to create or update a\n`Policy` during read-modify-write.",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.folders.getOrgPolicy",
+                    "parameterOrder": [
+                        "resource"
+                    ],
+                    "parameters": {
+                        "resource": {
+                            "description": "Name of the resource the `Policy` is set on.",
+                            "location": "path",
+                            "pattern": "^folders/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+resource}:getOrgPolicy",
+                    "request": {
+                        "$ref": "GetOrgPolicyRequest"
+                    },
+                    "response": {
+                        "$ref": "OrgPolicy"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
+                },
+                "getEffectiveOrgPolicy": {
+                    "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.folders.getEffectiveOrgPolicy",
+                    "parameterOrder": [
+                        "resource"
+                    ],
+                    "parameters": {
+                        "resource": {
+                            "description": "The name of the resource to start computing the effective `Policy`.",
+                            "location": "path",
+                            "pattern": "^folders/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+resource}:getEffectiveOrgPolicy",
+                    "request": {
+                        "$ref": "GetEffectiveOrgPolicyRequest"
+                    },
+                    "response": {
+                        "$ref": "OrgPolicy"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
                 }
             }
         },
@@ -1044,12 +1044,6 @@
                     "id": "cloudresourcemanager.projects.list",
                     "parameterOrder": [],
                     "parameters": {
-                        "pageSize": {
-                            "description": "The maximum number of Projects to return in the response.\nThe server can return fewer Projects than requested.\nIf unspecified, server picks an appropriate default.\n\nOptional.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        },
                         "filter": {
                             "description": "An expression for filtering the results of the request.  Filter rules are\ncase insensitive. The fields eligible for filtering are:\n\n+ `name`\n+ `id`\n+ <code>labels.<em>key</em></code> where *key* is the name of a label\n\nSome examples of using labels as filters:\n\n|Filter|Description|\n|------|-----------|\n|name:how*|The project's name starts with \"how\".|\n|name:Howl|The project's name is `Howl` or `howl`.|\n|name:HOWL|Equivalent to above.|\n|NAME:howl|Equivalent to above.|\n|labels.color:*|The project has the label `color`.|\n|labels.color:red|The project's label `color` has the value `red`.|\n|labels.color:red&nbsp;labels.size:big|The project's label `color` has the value `red` and its label `size` has the value `big`.\n\nIf you specify a filter that has both `parent.type` and `parent.id`, then\nthe `resourcemanager.projects.list` permission is checked on the parent.\nIf the user has this permission, all projects under the parent will be\nreturned after remaining filters have been applied. If the user lacks this\npermission, then all projects for which the user has the\n`resourcemanager.projects.get` permission will be returned after remaining\nfilters have been applied. If no filter is specified, the call will return\nprojects for which the user has `resourcemanager.projects.get` permissions.\n\nOptional.",
                             "location": "query",
@@ -1059,6 +1053,12 @@
                             "description": "A pagination token returned from a previous call to ListProjects\nthat indicates from where listing should continue.\n\nOptional.",
                             "location": "query",
                             "type": "string"
+                        },
+                        "pageSize": {
+                            "description": "The maximum number of Projects to return in the response.\nThe server can return fewer Projects than requested.\nIf unspecified, server picks an appropriate default.\n\nOptional.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
                         }
                     },
                     "path": "v1/projects",
@@ -1120,702 +1120,10 @@
     "revision": "20170927",
     "rootUrl": "https://cloudresourcemanager.googleapis.com/",
     "schemas": {
-        "Lien": {
-            "description": "A Lien represents an encumbrance on the actions that can be performed on a\nresource.",
-            "id": "Lien",
-            "properties": {
-                "parent": {
-                    "description": "A reference to the resource this Lien is attached to. The server will\nvalidate the parent against those for which Liens are supported.\n\nExample: `projects/1234`",
-                    "type": "string"
-                },
-                "createTime": {
-                    "description": "The creation time of this Lien.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "origin": {
-                    "description": "A stable, user-visible/meaningful string identifying the origin of the\nLien, intended to be inspected programmatically. Maximum length of 200\ncharacters.\n\nExample: 'compute.googleapis.com'",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "A system-generated unique identifier for this Lien.\n\nExample: `liens/1234abcd`",
-                    "type": "string"
-                },
-                "reason": {
-                    "description": "Concise user-visible strings indicating why an action cannot be performed\non a resource. Maximum lenth of 200 characters.\n\nExample: 'Holds production API key'",
-                    "type": "string"
-                },
-                "restrictions": {
-                    "description": "The types of operations which should be blocked as a result of this Lien.\nEach value should correspond to an IAM permission. The server will\nvalidate the permissions against those for which Liens are supported.\n\nAn empty list is meaningless and will be rejected.\n\nExample: ['resourcemanager.projects.delete']",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Ancestor": {
-            "description": "Identifying information for a single ancestor of a project.",
-            "id": "Ancestor",
-            "properties": {
-                "resourceId": {
-                    "$ref": "ResourceId",
-                    "description": "Resource id of the ancestor."
-                }
-            },
-            "type": "object"
-        },
-        "ListConstraint": {
-            "description": "A `Constraint` that allows or disallows a list of string values, which are\nconfigured by an Organization's policy administrator with a `Policy`.",
-            "id": "ListConstraint",
-            "properties": {
-                "suggestedValue": {
-                    "description": "Optional. The Google Cloud Console will try to default to a configuration\nthat matches the value specified in this `Constraint`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SetOrgPolicyRequest": {
-            "description": "The request sent to the SetOrgPolicyRequest method.",
-            "id": "SetOrgPolicyRequest",
-            "properties": {
-                "policy": {
-                    "$ref": "OrgPolicy",
-                    "description": "`Policy` to set on the resource."
-                }
-            },
-            "type": "object"
-        },
-        "SetIamPolicyRequest": {
-            "description": "Request message for `SetIamPolicy` method.",
-            "id": "SetIamPolicyRequest",
-            "properties": {
-                "updateMask": {
-                    "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.",
-                    "format": "google-fieldmask",
-                    "type": "string"
-                },
-                "policy": {
-                    "$ref": "Policy",
-                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
-                }
-            },
-            "type": "object"
-        },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
-        "Organization": {
-            "description": "The root node in the resource hierarchy to which a particular entity's\n(e.g., company) resources belong.",
-            "id": "Organization",
-            "properties": {
-                "lifecycleState": {
-                    "description": "The organization's current lifecycle state. Assigned by the server.\n@OutputOnly",
-                    "enum": [
-                        "LIFECYCLE_STATE_UNSPECIFIED",
-                        "ACTIVE",
-                        "DELETE_REQUESTED"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified state.  This is only useful for distinguishing unset values.",
-                        "The normal and active state.",
-                        "The organization has been marked for deletion by the user."
-                    ],
-                    "type": "string"
-                },
-                "owner": {
-                    "$ref": "OrganizationOwner",
-                    "description": "The owner of this Organization. The owner should be specified on\ncreation. Once set, it cannot be changed.\nThis field is required."
-                },
-                "name": {
-                    "description": "Output Only. The resource name of the organization. This is the\norganization's relative path in the API. Its format is\n\"organizations/[organization_id]\". For example, \"organizations/1234\".",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "A friendly string to be used to refer to the Organization in the UI.\nAssigned by the server, set to the primary domain of the G Suite\ncustomer that owns the organization.\n@OutputOnly",
-                    "type": "string"
-                },
-                "creationTime": {
-                    "description": "Timestamp when the Organization was created. Assigned by the server.\n@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListAvailableOrgPolicyConstraintsResponse": {
-            "description": "The response returned from the ListAvailableOrgPolicyConstraints method.\nReturns all `Constraints` that could be set at this level of the hierarchy\n(contrast with the response from `ListPolicies`, which returns all policies\nwhich are set).",
-            "id": "ListAvailableOrgPolicyConstraintsResponse",
-            "properties": {
-                "constraints": {
-                    "description": "The collection of constraints that are settable on the request resource.",
-                    "items": {
-                        "$ref": "Constraint"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "Page token used to retrieve the next page. This is currently not used.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListPolicy": {
-            "description": "Used in `policy_type` to specify how `list_policy` behaves at this\nresource.\n\nA `ListPolicy` can define specific values that are allowed or denied by\nsetting either the `allowed_values` or `denied_values` fields. It can also\nbe used to allow or deny all values, by setting the `all_values` field. If\n`all_values` is `ALL_VALUES_UNSPECIFIED`, exactly one of `allowed_values`\nor `denied_values` must be set (attempting to set both or neither will\nresult in a failed request). If `all_values` is set to either `ALLOW` or\n`DENY`, `allowed_values` and `denied_values` must be unset.",
-            "id": "ListPolicy",
-            "properties": {
-                "allowedValues": {
-                    "description": "List of values allowed  at this resource. Can only be set if no values\nare set for `denied_values` and `all_values` is set to\n`ALL_VALUES_UNSPECIFIED`.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "inheritFromParent": {
-                    "description": "Determines the inheritance behavior for this `Policy`.\n\nBy default, a `ListPolicy` set at a resource supercedes any `Policy` set\nanywhere up the resource hierarchy. However, if `inherit_from_parent` is\nset to `true`, then the values from the effective `Policy` of the parent\nresource are inherited, meaning the values set in this `Policy` are\nadded to the values inherited up the hierarchy.\n\nSetting `Policy` hierarchies that inherit both allowed values and denied\nvalues isn't recommended in most circumstances to keep the configuration\nsimple and understandable. However, it is possible to set a `Policy` with\n`allowed_values` set that inherits a `Policy` with `denied_values` set.\nIn this case, the values that are allowed must be in `allowed_values` and\nnot present in `denied_values`.\n\nFor example, suppose you have a `Constraint`\n`constraints/serviceuser.services`, which has a `constraint_type` of\n`list_constraint`, and with `constraint_default` set to `ALLOW`.\nSuppose that at the Organization level, a `Policy` is applied that\nrestricts the allowed API activations to {`E1`, `E2`}. Then, if a\n`Policy` is applied to a project below the Organization that has\n`inherit_from_parent` set to `false` and field all_values set to DENY,\nthen an attempt to activate any API will be denied.\n\nThe following examples demonstrate different possible layerings:\n\nExample 1 (no inherited values):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values:”E2”}\n  ``projects/bar`` has `inherit_from_parent` `false` and values:\n    {allowed_values: \"E3\" allowed_values: \"E4\"}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe accepted values at `projects/bar` are `E3`, and `E4`.\n\nExample 2 (inherited values):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values:”E2”}\n  `projects/bar` has a `Policy` with values:\n    {value: “E3” value: ”E4” inherit_from_parent: true}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe accepted values at `projects/bar` are `E1`, `E2`, `E3`, and `E4`.\n\nExample 3 (inheriting both allowed and denied values):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: \"E1\" allowed_values: \"E2\"}\n  `projects/bar` has a `Policy` with:\n    {denied_values: \"E1\"}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe value accepted at `projects/bar` is `E2`.\n\nExample 4 (RestoreDefault):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values:”E2”}\n  `projects/bar` has a `Policy` with values:\n    {RestoreDefault: {}}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe accepted values at `projects/bar` are either all or none depending on\nthe value of `constraint_default` (if `ALLOW`, all; if\n`DENY`, none).\n\nExample 5 (no policy inherits parent policy):\n  `organizations/foo` has no `Policy` set.\n  `projects/bar` has no `Policy` set.\nThe accepted values at both levels are either all or none depending on\nthe value of `constraint_default` (if `ALLOW`, all; if\n`DENY`, none).\n\nExample 6 (ListConstraint allowing all):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values: ”E2”}\n  `projects/bar` has a `Policy` with:\n    {all: ALLOW}\nThe accepted values at `organizations/foo` are `E1`, E2`.\nAny value is accepted at `projects/bar`.\n\nExample 7 (ListConstraint allowing none):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values: ”E2”}\n  `projects/bar` has a `Policy` with:\n    {all: DENY}\nThe accepted values at `organizations/foo` are `E1`, E2`.\nNo value is accepted at `projects/bar`.",
-                    "type": "boolean"
-                },
-                "suggestedValue": {
-                    "description": "Optional. The Google Cloud Console will try to default to a configuration\nthat matches the value specified in this `Policy`. If `suggested_value`\nis not set, it will inherit the value specified higher in the hierarchy,\nunless `inherit_from_parent` is `false`.",
-                    "type": "string"
-                },
-                "deniedValues": {
-                    "description": "List of values denied at this resource. Can only be set if no values are\nset for `allowed_values` and `all_values` is set to\n`ALL_VALUES_UNSPECIFIED`.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "allValues": {
-                    "description": "The policy all_values state.",
-                    "enum": [
-                        "ALL_VALUES_UNSPECIFIED",
-                        "ALLOW",
-                        "DENY"
-                    ],
-                    "enumDescriptions": [
-                        "Indicates that either allowed_values or denied_values must be set.",
-                        "A policy with this set allows all values.",
-                        "A policy with this set denies all values."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GetAncestryResponse": {
-            "description": "Response from the GetAncestry method.",
-            "id": "GetAncestryResponse",
-            "properties": {
-                "ancestor": {
-                    "description": "Ancestors are ordered from bottom to top of the resource hierarchy. The\nfirst ancestor is the project itself, followed by the project's parent,\netc.",
-                    "items": {
-                        "$ref": "Ancestor"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AuditLogConfig": {
-            "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n    {\n      \"audit_log_configs\": [\n        {\n          \"log_type\": \"DATA_READ\",\n          \"exempted_members\": [\n            \"user:foo@gmail.com\"\n          ]\n        },\n        {\n          \"log_type\": \"DATA_WRITE\",\n        }\n      ]\n    }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.",
-            "id": "AuditLogConfig",
-            "properties": {
-                "exemptedMembers": {
-                    "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "logType": {
-                    "description": "The log type that this config enables.",
-                    "enum": [
-                        "LOG_TYPE_UNSPECIFIED",
-                        "ADMIN_READ",
-                        "DATA_WRITE",
-                        "DATA_READ"
-                    ],
-                    "enumDescriptions": [
-                        "Default case. Should never be this.",
-                        "Admin reads. Example: CloudIAM getIamPolicy",
-                        "Data writes. Example: CloudSQL Users create",
-                        "Data reads. Example: CloudSQL Users list"
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SearchOrganizationsRequest": {
-            "description": "The request sent to the `SearchOrganizations` method.",
-            "id": "SearchOrganizationsRequest",
-            "properties": {
-                "pageSize": {
-                    "description": "The maximum number of Organizations to return in the response.\nThis field is optional.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "filter": {
-                    "description": "An optional query string used to filter the Organizations to return in\nthe response. Filter rules are case-insensitive.\n\n\nOrganizations may be filtered by `owner.directoryCustomerId` or by\n`domain`, where the domain is a Google for Work domain, for example:\n\n|Filter|Description|\n|------|-----------|\n|owner.directorycustomerid:123456789|Organizations with\n`owner.directory_customer_id` equal to `123456789`.|\n|domain:google.com|Organizations corresponding to the domain `google.com`.|\n\nThis field is optional.",
-                    "type": "string"
-                },
-                "pageToken": {
-                    "description": "A pagination token returned from a previous call to `SearchOrganizations`\nthat indicates from where listing should continue.\nThis field is optional.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GetAncestryRequest": {
-            "description": "The request sent to the\nGetAncestry\nmethod.",
-            "id": "GetAncestryRequest",
-            "properties": {},
-            "type": "object"
-        },
-        "TestIamPermissionsRequest": {
-            "description": "Request message for `TestIamPermissions` method.",
-            "id": "TestIamPermissionsRequest",
-            "properties": {
-                "permissions": {
-                    "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ListAvailableOrgPolicyConstraintsRequest": {
-            "description": "The request sent to the [ListAvailableOrgPolicyConstraints]\ngoogle.cloud.OrgPolicy.v1.ListAvailableOrgPolicyConstraints] method.",
-            "id": "ListAvailableOrgPolicyConstraintsRequest",
-            "properties": {
-                "pageToken": {
-                    "description": "Page token used to retrieve the next page. This is currently unsupported\nand will be ignored. The server may at any point start using this field.",
-                    "type": "string"
-                },
-                "pageSize": {
-                    "description": "Size of the pages to be returned. This is currently unsupported and will\nbe ignored. The server may at any point start using this field to limit\npage size.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "FolderOperation": {
-            "description": "Metadata describing a long running folder operation",
-            "id": "FolderOperation",
-            "properties": {
-                "operationType": {
-                    "description": "The type of this operation.",
-                    "enum": [
-                        "OPERATION_TYPE_UNSPECIFIED",
-                        "CREATE",
-                        "MOVE"
-                    ],
-                    "enumDescriptions": [
-                        "Operation type not specified.",
-                        "A create folder operation.",
-                        "A move folder operation."
-                    ],
-                    "type": "string"
-                },
-                "sourceParent": {
-                    "description": "The resource name of the folder's parent.\nOnly applicable when the operation_type is MOVE.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "The display name of the folder.",
-                    "type": "string"
-                },
-                "destinationParent": {
-                    "description": "The resource name of the folder or organization we are either creating\nthe folder under or moving the folder to.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Policy": {
-            "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
-            "id": "Policy",
-            "properties": {
-                "etag": {
-                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "version": {
-                    "description": "Version of the `Policy`. The default version is 0.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "auditConfigs": {
-                    "description": "Specifies cloud audit logging configuration for this policy.",
-                    "items": {
-                        "$ref": "AuditConfig"
-                    },
-                    "type": "array"
-                },
-                "bindings": {
-                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
-                    "items": {
-                        "$ref": "Binding"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ResourceId": {
-            "description": "A container to reference an id for any resource type. A `resource` in Google\nCloud Platform is a generic term for something you (a developer) may want to\ninteract with through one of our API's. Some examples are an App Engine app,\na Compute Engine instance, a Cloud SQL database, and so on.",
-            "id": "ResourceId",
-            "properties": {
-                "type": {
-                    "description": "Required field representing the resource type this id is for.\nAt present, the valid types are: \"organization\"",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "Required field for the type-specific id. This should correspond to the id\nused in the type-specific API's.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GetEffectiveOrgPolicyRequest": {
-            "description": "The request sent to the GetEffectiveOrgPolicy method.",
-            "id": "GetEffectiveOrgPolicyRequest",
-            "properties": {
-                "constraint": {
-                    "description": "The name of the `Constraint` to compute the effective `Policy`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListOrgPoliciesRequest": {
-            "description": "The request sent to the ListOrgPolicies method.",
-            "id": "ListOrgPoliciesRequest",
-            "properties": {
-                "pageToken": {
-                    "description": "Page token used to retrieve the next page. This is currently unsupported\nand will be ignored. The server may at any point start using this field.",
-                    "type": "string"
-                },
-                "pageSize": {
-                    "description": "Size of the pages to be returned. This is currently unsupported and will\nbe ignored. The server may at any point start using this field to limit\npage size.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "AuditConfig": {
-            "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
-            "id": "AuditConfig",
-            "properties": {
-                "service": {
-                    "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
-                    "type": "string"
-                },
-                "auditLogConfigs": {
-                    "description": "The configuration for logging of each type of permission.\nNext ID: 4",
-                    "items": {
-                        "$ref": "AuditLogConfig"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Operation": {
-            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
-            "id": "Operation",
-            "properties": {
-                "done": {
-                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
-                    "type": "boolean"
-                },
-                "response": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
-                    "type": "string"
-                },
-                "error": {
-                    "$ref": "Status",
-                    "description": "The error result of the operation in case of failure or cancellation."
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "Constraint": {
-            "description": "A `Constraint` describes a way in which a resource's configuration can be\nrestricted. For example, it controls which cloud services can be activated\nacross an organization, or whether a Compute Engine instance can have\nserial port connections established. `Constraints` can be configured by the\norganization's policy adminstrator to fit the needs of the organzation by\nsetting Policies for `Constraints` at different locations in the\norganization's resource hierarchy. Policies are inherited down the resource\nhierarchy from higher levels, but can also be overridden. For details about\nthe inheritance rules please read about\nPolicies.\n\n`Constraints` have a default behavior determined by the `constraint_default`\nfield, which is the enforcement behavior that is used in the absence of a\n`Policy` being defined or inherited for the resource in question.",
-            "id": "Constraint",
-            "properties": {
-                "constraintDefault": {
-                    "description": "The evaluation behavior of this constraint in the absense of 'Policy'.",
-                    "enum": [
-                        "CONSTRAINT_DEFAULT_UNSPECIFIED",
-                        "ALLOW",
-                        "DENY"
-                    ],
-                    "enumDescriptions": [
-                        "This is only used for distinguishing unset values and should never be\nused.",
-                        "Indicate that all values are allowed for list constraints.\nIndicate that enforcement is off for boolean constraints.",
-                        "Indicate that all values are denied for list constraints.\nIndicate that enforcement is on for boolean constraints."
-                    ],
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Immutable value, required to globally be unique. For example,\n`constraints/serviceuser.services`",
-                    "type": "string"
-                },
-                "version": {
-                    "description": "Version of the `Constraint`. Default version is 0;",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "listConstraint": {
-                    "$ref": "ListConstraint",
-                    "description": "Defines this constraint as being a ListConstraint."
-                },
-                "description": {
-                    "description": "Detailed description of what this `Constraint` controls as well as how and\nwhere it is enforced.\n\nMutable.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "The human readable name.\n\nMutable.",
-                    "type": "string"
-                },
-                "booleanConstraint": {
-                    "$ref": "BooleanConstraint",
-                    "description": "Defines this constraint as being a BooleanConstraint."
-                }
-            },
-            "type": "object"
-        },
-        "ListLiensResponse": {
-            "description": "The response message for Liens.ListLiens.",
-            "id": "ListLiensResponse",
-            "properties": {
-                "liens": {
-                    "description": "A list of Liens.",
-                    "items": {
-                        "$ref": "Lien"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "Token to retrieve the next page of results, or empty if there are no more\nresults in the list.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Status": {
-            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
-            "id": "Status",
-            "properties": {
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                },
-                "details": {
-                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                },
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "Binding": {
-            "description": "Associates `members` with a `role`.",
-            "id": "Binding",
-            "properties": {
-                "members": {
-                    "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "role": {
-                    "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RestoreDefault": {
-            "description": "Ignores policies set above this resource and restores the\n`constraint_default` enforcement behavior of the specific `Constraint` at\nthis resource.\n\nSuppose that `constraint_default` is set to `ALLOW` for the\n`Constraint` `constraints/serviceuser.services`. Suppose that organization\nfoo.com sets a `Policy` at their Organization resource node that restricts\nthe allowed service activations to deny all service activations. They\ncould then set a `Policy` with the `policy_type` `restore_default` on\nseveral experimental projects, restoring the `constraint_default`\nenforcement of the `Constraint` for only those projects, allowing those\nprojects to have all services activated.",
-            "id": "RestoreDefault",
-            "properties": {},
-            "type": "object"
-        },
-        "GetOrgPolicyRequest": {
-            "description": "The request sent to the GetOrgPolicy method.",
-            "id": "GetOrgPolicyRequest",
-            "properties": {
-                "constraint": {
-                    "description": "Name of the `Constraint` to get the `Policy`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ClearOrgPolicyRequest": {
-            "description": "The request sent to the ClearOrgPolicy method.",
-            "id": "ClearOrgPolicyRequest",
-            "properties": {
-                "etag": {
-                    "description": "The current version, for concurrency control. Not sending an `etag`\nwill cause the `Policy` to be cleared blindly.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "constraint": {
-                    "description": "Name of the `Constraint` of the `Policy` to clear.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UndeleteProjectRequest": {
-            "description": "The request sent to the UndeleteProject\nmethod.",
-            "id": "UndeleteProjectRequest",
-            "properties": {},
-            "type": "object"
-        },
-        "ProjectCreationStatus": {
-            "description": "A status object which is used as the `metadata` field for the Operation\nreturned by CreateProject. It provides insight for when significant phases of\nProject creation have completed.",
-            "id": "ProjectCreationStatus",
-            "properties": {
-                "ready": {
-                    "description": "True if the project creation process is complete.",
-                    "type": "boolean"
-                },
-                "gettable": {
-                    "description": "True if the project can be retrieved using GetProject. No other operations\non the project are guaranteed to work until the project creation is\ncomplete.",
-                    "type": "boolean"
-                },
-                "createTime": {
-                    "description": "Creation time of the project creation workflow.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "BooleanConstraint": {
-            "description": "A `Constraint` that is either enforced or not.\n\nFor example a constraint `constraints/compute.disableSerialPortAccess`.\nIf it is enforced on a VM instance, serial port connections will not be\nopened to that instance.",
-            "id": "BooleanConstraint",
-            "properties": {},
-            "type": "object"
-        },
-        "TestIamPermissionsResponse": {
-            "description": "Response message for `TestIamPermissions` method.",
-            "id": "TestIamPermissionsResponse",
-            "properties": {
-                "permissions": {
-                    "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GetIamPolicyRequest": {
-            "description": "Request message for `GetIamPolicy` method.",
-            "id": "GetIamPolicyRequest",
-            "properties": {},
-            "type": "object"
-        },
-        "OrganizationOwner": {
-            "description": "The entity that owns an Organization. The lifetime of the Organization and\nall of its descendants are bound to the `OrganizationOwner`. If the\n`OrganizationOwner` is deleted, the Organization and all its descendants will\nbe deleted.",
-            "id": "OrganizationOwner",
-            "properties": {
-                "directoryCustomerId": {
-                    "description": "The Google for Work customer id used in the Directory API.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListProjectsResponse": {
-            "description": "A page of the response received from the\nListProjects\nmethod.\n\nA paginated response where more pages are available has\n`next_page_token` set. This token can be used in a subsequent request to\nretrieve the next request page.",
-            "id": "ListProjectsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Pagination token.\n\nIf the result set is too large to fit in a single response, this token\nis returned. It encodes the position of the current result cursor.\nFeeding this value into a new list request with the `page_token` parameter\ngives the next page of the results.\n\nWhen `next_page_token` is not filled in, there is no next page and\nthe list returned is the last page in the result set.\n\nPagination tokens have a limited lifetime.",
-                    "type": "string"
-                },
-                "projects": {
-                    "description": "The list of Projects that matched the list filter. This list can\nbe paginated.",
-                    "items": {
-                        "$ref": "Project"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "Project": {
             "description": "A Project is a high-level Google Cloud Platform entity.  It is a\ncontainer for ACLs, APIs, App Engine Apps, VMs, and other\nGoogle Cloud Platform resources.",
             "id": "Project",
             "properties": {
-                "projectNumber": {
-                    "description": "The number uniquely identifying the project.\n\nExample: <code>415104041262</code>\nRead-only.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "parent": {
-                    "$ref": "ResourceId",
-                    "description": "An optional reference to a parent Resource.\n\nThe only supported parent type is \"organization\". Once set, the parent\ncannot be modified. The `parent` can be set on creation or using the\n`UpdateProject` method; the end user must have the\n`resourcemanager.projects.create` permission on the parent.\n\nRead-write."
-                },
-                "labels": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "The labels associated with this Project.\n\nLabel keys must be between 1 and 63 characters long and must conform\nto the following regular expression: \\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?.\n\nLabel values must be between 0 and 63 characters long and must conform\nto the regular expression (\\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?)?.\n\nNo more than 256 labels can be associated with a given resource.\n\nClients should store labels in a representation such as JSON that does not\ndepend on specific characters being disallowed.\n\nExample: <code>\"environment\" : \"dev\"</code>\nRead-write.",
-                    "type": "object"
-                },
-                "createTime": {
-                    "description": "Creation time.\n\nRead-only.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
                 "name": {
                     "description": "The user-assigned display name of the Project.\nIt must be 4 to 30 characters.\nAllowed characters are: lowercase and uppercase letters, numbers,\nhyphen, single-quote, double-quote, space, and exclamation point.\n\nExample: <code>My Project</code>\nRead-write.",
                     "type": "string"
@@ -1839,6 +1147,27 @@
                         "This lifecycle state is no longer used and not returned by the API."
                     ],
                     "type": "string"
+                },
+                "projectNumber": {
+                    "description": "The number uniquely identifying the project.\n\nExample: <code>415104041262</code>\nRead-only.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "parent": {
+                    "$ref": "ResourceId",
+                    "description": "An optional reference to a parent Resource.\n\nThe only supported parent type is \"organization\". Once set, the parent\ncannot be modified. The `parent` can be set on creation or using the\n`UpdateProject` method; the end user must have the\n`resourcemanager.projects.create` permission on the parent.\n\nRead-write."
+                },
+                "createTime": {
+                    "description": "Creation time.\n\nRead-only.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "The labels associated with this Project.\n\nLabel keys must be between 1 and 63 characters long and must conform\nto the following regular expression: \\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?.\n\nLabel values must be between 0 and 63 characters long and must conform\nto the regular expression (\\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?)?.\n\nNo more than 256 labels can be associated with a given resource.\n\nClients should store labels in a representation such as JSON that does not\ndepend on specific characters being disallowed.\n\nExample: <code>\"environment\" : \"dev\"</code>\nRead-write.",
+                    "type": "object"
                 }
             },
             "type": "object"
@@ -1918,15 +1247,6 @@
             "description": "Defines a Cloud Organization `Policy` which is used to specify `Constraints`\nfor configurations of Cloud Platform resources.",
             "id": "OrgPolicy",
             "properties": {
-                "version": {
-                    "description": "Version of the `Policy`. Default version is 0;",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "restoreDefault": {
-                    "$ref": "RestoreDefault",
-                    "description": "Restores the default behavior of the constraint; independent of\n`Constraint` type."
-                },
                 "listPolicy": {
                     "$ref": "ListPolicy",
                     "description": "List of values either allowed or disallowed."
@@ -1948,6 +1268,15 @@
                     "description": "The time stamp the `Policy` was previously updated. This is set by the\nserver, not specified by the caller, and represents the last time a call to\n`SetOrgPolicy` was made for that `Policy`. Any value set by the client will\nbe ignored.",
                     "format": "google-datetime",
                     "type": "string"
+                },
+                "version": {
+                    "description": "Version of the `Policy`. Default version is 0;",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "restoreDefault": {
+                    "$ref": "RestoreDefault",
+                    "description": "Restores the default behavior of the constraint; independent of\n`Constraint` type."
                 }
             },
             "type": "object"
@@ -1962,6 +1291,677 @@
                 }
             },
             "type": "object"
+        },
+        "Lien": {
+            "description": "A Lien represents an encumbrance on the actions that can be performed on a\nresource.",
+            "id": "Lien",
+            "properties": {
+                "parent": {
+                    "description": "A reference to the resource this Lien is attached to. The server will\nvalidate the parent against those for which Liens are supported.\n\nExample: `projects/1234`",
+                    "type": "string"
+                },
+                "createTime": {
+                    "description": "The creation time of this Lien.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "A system-generated unique identifier for this Lien.\n\nExample: `liens/1234abcd`",
+                    "type": "string"
+                },
+                "reason": {
+                    "description": "Concise user-visible strings indicating why an action cannot be performed\non a resource. Maximum lenth of 200 characters.\n\nExample: 'Holds production API key'",
+                    "type": "string"
+                },
+                "origin": {
+                    "description": "A stable, user-visible/meaningful string identifying the origin of the\nLien, intended to be inspected programmatically. Maximum length of 200\ncharacters.\n\nExample: 'compute.googleapis.com'",
+                    "type": "string"
+                },
+                "restrictions": {
+                    "description": "The types of operations which should be blocked as a result of this Lien.\nEach value should correspond to an IAM permission. The server will\nvalidate the permissions against those for which Liens are supported.\n\nAn empty list is meaningless and will be rejected.\n\nExample: ['resourcemanager.projects.delete']",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Ancestor": {
+            "description": "Identifying information for a single ancestor of a project.",
+            "id": "Ancestor",
+            "properties": {
+                "resourceId": {
+                    "$ref": "ResourceId",
+                    "description": "Resource id of the ancestor."
+                }
+            },
+            "type": "object"
+        },
+        "ListConstraint": {
+            "description": "A `Constraint` that allows or disallows a list of string values, which are\nconfigured by an Organization's policy administrator with a `Policy`.",
+            "id": "ListConstraint",
+            "properties": {
+                "suggestedValue": {
+                    "description": "Optional. The Google Cloud Console will try to default to a configuration\nthat matches the value specified in this `Constraint`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SetOrgPolicyRequest": {
+            "description": "The request sent to the SetOrgPolicyRequest method.",
+            "id": "SetOrgPolicyRequest",
+            "properties": {
+                "policy": {
+                    "$ref": "OrgPolicy",
+                    "description": "`Policy` to set on the resource."
+                }
+            },
+            "type": "object"
+        },
+        "SetIamPolicyRequest": {
+            "description": "Request message for `SetIamPolicy` method.",
+            "id": "SetIamPolicyRequest",
+            "properties": {
+                "policy": {
+                    "$ref": "Policy",
+                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
+                },
+                "updateMask": {
+                    "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "Organization": {
+            "description": "The root node in the resource hierarchy to which a particular entity's\n(e.g., company) resources belong.",
+            "id": "Organization",
+            "properties": {
+                "lifecycleState": {
+                    "description": "The organization's current lifecycle state. Assigned by the server.\n@OutputOnly",
+                    "enum": [
+                        "LIFECYCLE_STATE_UNSPECIFIED",
+                        "ACTIVE",
+                        "DELETE_REQUESTED"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified state.  This is only useful for distinguishing unset values.",
+                        "The normal and active state.",
+                        "The organization has been marked for deletion by the user."
+                    ],
+                    "type": "string"
+                },
+                "owner": {
+                    "$ref": "OrganizationOwner",
+                    "description": "The owner of this Organization. The owner should be specified on\ncreation. Once set, it cannot be changed.\nThis field is required."
+                },
+                "name": {
+                    "description": "Output Only. The resource name of the organization. This is the\norganization's relative path in the API. Its format is\n\"organizations/[organization_id]\". For example, \"organizations/1234\".",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "A friendly string to be used to refer to the Organization in the UI.\nAssigned by the server, set to the primary domain of the G Suite\ncustomer that owns the organization.\n@OutputOnly",
+                    "type": "string"
+                },
+                "creationTime": {
+                    "description": "Timestamp when the Organization was created. Assigned by the server.\n@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListAvailableOrgPolicyConstraintsResponse": {
+            "description": "The response returned from the ListAvailableOrgPolicyConstraints method.\nReturns all `Constraints` that could be set at this level of the hierarchy\n(contrast with the response from `ListPolicies`, which returns all policies\nwhich are set).",
+            "id": "ListAvailableOrgPolicyConstraintsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Page token used to retrieve the next page. This is currently not used.",
+                    "type": "string"
+                },
+                "constraints": {
+                    "description": "The collection of constraints that are settable on the request resource.",
+                    "items": {
+                        "$ref": "Constraint"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListPolicy": {
+            "description": "Used in `policy_type` to specify how `list_policy` behaves at this\nresource.\n\nA `ListPolicy` can define specific values that are allowed or denied by\nsetting either the `allowed_values` or `denied_values` fields. It can also\nbe used to allow or deny all values, by setting the `all_values` field. If\n`all_values` is `ALL_VALUES_UNSPECIFIED`, exactly one of `allowed_values`\nor `denied_values` must be set (attempting to set both or neither will\nresult in a failed request). If `all_values` is set to either `ALLOW` or\n`DENY`, `allowed_values` and `denied_values` must be unset.",
+            "id": "ListPolicy",
+            "properties": {
+                "inheritFromParent": {
+                    "description": "Determines the inheritance behavior for this `Policy`.\n\nBy default, a `ListPolicy` set at a resource supercedes any `Policy` set\nanywhere up the resource hierarchy. However, if `inherit_from_parent` is\nset to `true`, then the values from the effective `Policy` of the parent\nresource are inherited, meaning the values set in this `Policy` are\nadded to the values inherited up the hierarchy.\n\nSetting `Policy` hierarchies that inherit both allowed values and denied\nvalues isn't recommended in most circumstances to keep the configuration\nsimple and understandable. However, it is possible to set a `Policy` with\n`allowed_values` set that inherits a `Policy` with `denied_values` set.\nIn this case, the values that are allowed must be in `allowed_values` and\nnot present in `denied_values`.\n\nFor example, suppose you have a `Constraint`\n`constraints/serviceuser.services`, which has a `constraint_type` of\n`list_constraint`, and with `constraint_default` set to `ALLOW`.\nSuppose that at the Organization level, a `Policy` is applied that\nrestricts the allowed API activations to {`E1`, `E2`}. Then, if a\n`Policy` is applied to a project below the Organization that has\n`inherit_from_parent` set to `false` and field all_values set to DENY,\nthen an attempt to activate any API will be denied.\n\nThe following examples demonstrate different possible layerings:\n\nExample 1 (no inherited values):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values:”E2”}\n  ``projects/bar`` has `inherit_from_parent` `false` and values:\n    {allowed_values: \"E3\" allowed_values: \"E4\"}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe accepted values at `projects/bar` are `E3`, and `E4`.\n\nExample 2 (inherited values):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values:”E2”}\n  `projects/bar` has a `Policy` with values:\n    {value: “E3” value: ”E4” inherit_from_parent: true}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe accepted values at `projects/bar` are `E1`, `E2`, `E3`, and `E4`.\n\nExample 3 (inheriting both allowed and denied values):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: \"E1\" allowed_values: \"E2\"}\n  `projects/bar` has a `Policy` with:\n    {denied_values: \"E1\"}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe value accepted at `projects/bar` is `E2`.\n\nExample 4 (RestoreDefault):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values:”E2”}\n  `projects/bar` has a `Policy` with values:\n    {RestoreDefault: {}}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe accepted values at `projects/bar` are either all or none depending on\nthe value of `constraint_default` (if `ALLOW`, all; if\n`DENY`, none).\n\nExample 5 (no policy inherits parent policy):\n  `organizations/foo` has no `Policy` set.\n  `projects/bar` has no `Policy` set.\nThe accepted values at both levels are either all or none depending on\nthe value of `constraint_default` (if `ALLOW`, all; if\n`DENY`, none).\n\nExample 6 (ListConstraint allowing all):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values: ”E2”}\n  `projects/bar` has a `Policy` with:\n    {all: ALLOW}\nThe accepted values at `organizations/foo` are `E1`, E2`.\nAny value is accepted at `projects/bar`.\n\nExample 7 (ListConstraint allowing none):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values: ”E2”}\n  `projects/bar` has a `Policy` with:\n    {all: DENY}\nThe accepted values at `organizations/foo` are `E1`, E2`.\nNo value is accepted at `projects/bar`.",
+                    "type": "boolean"
+                },
+                "suggestedValue": {
+                    "description": "Optional. The Google Cloud Console will try to default to a configuration\nthat matches the value specified in this `Policy`. If `suggested_value`\nis not set, it will inherit the value specified higher in the hierarchy,\nunless `inherit_from_parent` is `false`.",
+                    "type": "string"
+                },
+                "deniedValues": {
+                    "description": "List of values denied at this resource. Can only be set if no values are\nset for `allowed_values` and `all_values` is set to\n`ALL_VALUES_UNSPECIFIED`.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "allValues": {
+                    "description": "The policy all_values state.",
+                    "enum": [
+                        "ALL_VALUES_UNSPECIFIED",
+                        "ALLOW",
+                        "DENY"
+                    ],
+                    "enumDescriptions": [
+                        "Indicates that either allowed_values or denied_values must be set.",
+                        "A policy with this set allows all values.",
+                        "A policy with this set denies all values."
+                    ],
+                    "type": "string"
+                },
+                "allowedValues": {
+                    "description": "List of values allowed  at this resource. Can only be set if no values\nare set for `denied_values` and `all_values` is set to\n`ALL_VALUES_UNSPECIFIED`.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GetAncestryResponse": {
+            "description": "Response from the GetAncestry method.",
+            "id": "GetAncestryResponse",
+            "properties": {
+                "ancestor": {
+                    "description": "Ancestors are ordered from bottom to top of the resource hierarchy. The\nfirst ancestor is the project itself, followed by the project's parent,\netc.",
+                    "items": {
+                        "$ref": "Ancestor"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AuditLogConfig": {
+            "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n    {\n      \"audit_log_configs\": [\n        {\n          \"log_type\": \"DATA_READ\",\n          \"exempted_members\": [\n            \"user:foo@gmail.com\"\n          ]\n        },\n        {\n          \"log_type\": \"DATA_WRITE\",\n        }\n      ]\n    }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.",
+            "id": "AuditLogConfig",
+            "properties": {
+                "logType": {
+                    "description": "The log type that this config enables.",
+                    "enum": [
+                        "LOG_TYPE_UNSPECIFIED",
+                        "ADMIN_READ",
+                        "DATA_WRITE",
+                        "DATA_READ"
+                    ],
+                    "enumDescriptions": [
+                        "Default case. Should never be this.",
+                        "Admin reads. Example: CloudIAM getIamPolicy",
+                        "Data writes. Example: CloudSQL Users create",
+                        "Data reads. Example: CloudSQL Users list"
+                    ],
+                    "type": "string"
+                },
+                "exemptedMembers": {
+                    "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SearchOrganizationsRequest": {
+            "description": "The request sent to the `SearchOrganizations` method.",
+            "id": "SearchOrganizationsRequest",
+            "properties": {
+                "pageToken": {
+                    "description": "A pagination token returned from a previous call to `SearchOrganizations`\nthat indicates from where listing should continue.\nThis field is optional.",
+                    "type": "string"
+                },
+                "pageSize": {
+                    "description": "The maximum number of Organizations to return in the response.\nThis field is optional.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "filter": {
+                    "description": "An optional query string used to filter the Organizations to return in\nthe response. Filter rules are case-insensitive.\n\n\nOrganizations may be filtered by `owner.directoryCustomerId` or by\n`domain`, where the domain is a Google for Work domain, for example:\n\n|Filter|Description|\n|------|-----------|\n|owner.directorycustomerid:123456789|Organizations with\n`owner.directory_customer_id` equal to `123456789`.|\n|domain:google.com|Organizations corresponding to the domain `google.com`.|\n\nThis field is optional.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GetAncestryRequest": {
+            "description": "The request sent to the\nGetAncestry\nmethod.",
+            "id": "GetAncestryRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "TestIamPermissionsRequest": {
+            "description": "Request message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsRequest",
+            "properties": {
+                "permissions": {
+                    "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Policy": {
+            "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
+            "id": "Policy",
+            "properties": {
+                "bindings": {
+                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
+                    "items": {
+                        "$ref": "Binding"
+                    },
+                    "type": "array"
+                },
+                "etag": {
+                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "version": {
+                    "description": "Version of the `Policy`. The default version is 0.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "auditConfigs": {
+                    "description": "Specifies cloud audit logging configuration for this policy.",
+                    "items": {
+                        "$ref": "AuditConfig"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "FolderOperation": {
+            "description": "Metadata describing a long running folder operation",
+            "id": "FolderOperation",
+            "properties": {
+                "sourceParent": {
+                    "description": "The resource name of the folder's parent.\nOnly applicable when the operation_type is MOVE.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "The display name of the folder.",
+                    "type": "string"
+                },
+                "destinationParent": {
+                    "description": "The resource name of the folder or organization we are either creating\nthe folder under or moving the folder to.",
+                    "type": "string"
+                },
+                "operationType": {
+                    "description": "The type of this operation.",
+                    "enum": [
+                        "OPERATION_TYPE_UNSPECIFIED",
+                        "CREATE",
+                        "MOVE"
+                    ],
+                    "enumDescriptions": [
+                        "Operation type not specified.",
+                        "A create folder operation.",
+                        "A move folder operation."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListAvailableOrgPolicyConstraintsRequest": {
+            "description": "The request sent to the [ListAvailableOrgPolicyConstraints]\ngoogle.cloud.OrgPolicy.v1.ListAvailableOrgPolicyConstraints] method.",
+            "id": "ListAvailableOrgPolicyConstraintsRequest",
+            "properties": {
+                "pageSize": {
+                    "description": "Size of the pages to be returned. This is currently unsupported and will\nbe ignored. The server may at any point start using this field to limit\npage size.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "pageToken": {
+                    "description": "Page token used to retrieve the next page. This is currently unsupported\nand will be ignored. The server may at any point start using this field.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ResourceId": {
+            "description": "A container to reference an id for any resource type. A `resource` in Google\nCloud Platform is a generic term for something you (a developer) may want to\ninteract with through one of our API's. Some examples are an App Engine app,\na Compute Engine instance, a Cloud SQL database, and so on.",
+            "id": "ResourceId",
+            "properties": {
+                "id": {
+                    "description": "Required field for the type-specific id. This should correspond to the id\nused in the type-specific API's.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Required field representing the resource type this id is for.\nAt present, the valid types are: \"organization\"",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GetEffectiveOrgPolicyRequest": {
+            "description": "The request sent to the GetEffectiveOrgPolicy method.",
+            "id": "GetEffectiveOrgPolicyRequest",
+            "properties": {
+                "constraint": {
+                    "description": "The name of the `Constraint` to compute the effective `Policy`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListOrgPoliciesRequest": {
+            "description": "The request sent to the ListOrgPolicies method.",
+            "id": "ListOrgPoliciesRequest",
+            "properties": {
+                "pageToken": {
+                    "description": "Page token used to retrieve the next page. This is currently unsupported\nand will be ignored. The server may at any point start using this field.",
+                    "type": "string"
+                },
+                "pageSize": {
+                    "description": "Size of the pages to be returned. This is currently unsupported and will\nbe ignored. The server may at any point start using this field to limit\npage size.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "AuditConfig": {
+            "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
+            "id": "AuditConfig",
+            "properties": {
+                "service": {
+                    "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
+                    "type": "string"
+                },
+                "auditLogConfigs": {
+                    "description": "The configuration for logging of each type of permission.\nNext ID: 4",
+                    "items": {
+                        "$ref": "AuditLogConfig"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+            "id": "Operation",
+            "properties": {
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+                    "type": "object"
+                },
+                "done": {
+                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+                    "type": "boolean"
+                },
+                "response": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+                    "type": "string"
+                },
+                "error": {
+                    "$ref": "Status",
+                    "description": "The error result of the operation in case of failure or cancellation."
+                }
+            },
+            "type": "object"
+        },
+        "Constraint": {
+            "description": "A `Constraint` describes a way in which a resource's configuration can be\nrestricted. For example, it controls which cloud services can be activated\nacross an organization, or whether a Compute Engine instance can have\nserial port connections established. `Constraints` can be configured by the\norganization's policy adminstrator to fit the needs of the organzation by\nsetting Policies for `Constraints` at different locations in the\norganization's resource hierarchy. Policies are inherited down the resource\nhierarchy from higher levels, but can also be overridden. For details about\nthe inheritance rules please read about\nPolicies.\n\n`Constraints` have a default behavior determined by the `constraint_default`\nfield, which is the enforcement behavior that is used in the absence of a\n`Policy` being defined or inherited for the resource in question.",
+            "id": "Constraint",
+            "properties": {
+                "booleanConstraint": {
+                    "$ref": "BooleanConstraint",
+                    "description": "Defines this constraint as being a BooleanConstraint."
+                },
+                "constraintDefault": {
+                    "description": "The evaluation behavior of this constraint in the absense of 'Policy'.",
+                    "enum": [
+                        "CONSTRAINT_DEFAULT_UNSPECIFIED",
+                        "ALLOW",
+                        "DENY"
+                    ],
+                    "enumDescriptions": [
+                        "This is only used for distinguishing unset values and should never be\nused.",
+                        "Indicate that all values are allowed for list constraints.\nIndicate that enforcement is off for boolean constraints.",
+                        "Indicate that all values are denied for list constraints.\nIndicate that enforcement is on for boolean constraints."
+                    ],
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Immutable value, required to globally be unique. For example,\n`constraints/serviceuser.services`",
+                    "type": "string"
+                },
+                "listConstraint": {
+                    "$ref": "ListConstraint",
+                    "description": "Defines this constraint as being a ListConstraint."
+                },
+                "version": {
+                    "description": "Version of the `Constraint`. Default version is 0;",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "description": {
+                    "description": "Detailed description of what this `Constraint` controls as well as how and\nwhere it is enforced.\n\nMutable.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "The human readable name.\n\nMutable.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListLiensResponse": {
+            "description": "The response message for Liens.ListLiens.",
+            "id": "ListLiensResponse",
+            "properties": {
+                "liens": {
+                    "description": "A list of Liens.",
+                    "items": {
+                        "$ref": "Lien"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Token to retrieve the next page of results, or empty if there are no more\nresults in the list.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+            "id": "Status",
+            "properties": {
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                },
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Binding": {
+            "description": "Associates `members` with a `role`.",
+            "id": "Binding",
+            "properties": {
+                "members": {
+                    "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "role": {
+                    "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GetOrgPolicyRequest": {
+            "description": "The request sent to the GetOrgPolicy method.",
+            "id": "GetOrgPolicyRequest",
+            "properties": {
+                "constraint": {
+                    "description": "Name of the `Constraint` to get the `Policy`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "RestoreDefault": {
+            "description": "Ignores policies set above this resource and restores the\n`constraint_default` enforcement behavior of the specific `Constraint` at\nthis resource.\n\nSuppose that `constraint_default` is set to `ALLOW` for the\n`Constraint` `constraints/serviceuser.services`. Suppose that organization\nfoo.com sets a `Policy` at their Organization resource node that restricts\nthe allowed service activations to deny all service activations. They\ncould then set a `Policy` with the `policy_type` `restore_default` on\nseveral experimental projects, restoring the `constraint_default`\nenforcement of the `Constraint` for only those projects, allowing those\nprojects to have all services activated.",
+            "id": "RestoreDefault",
+            "properties": {},
+            "type": "object"
+        },
+        "UndeleteProjectRequest": {
+            "description": "The request sent to the UndeleteProject\nmethod.",
+            "id": "UndeleteProjectRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "ClearOrgPolicyRequest": {
+            "description": "The request sent to the ClearOrgPolicy method.",
+            "id": "ClearOrgPolicyRequest",
+            "properties": {
+                "etag": {
+                    "description": "The current version, for concurrency control. Not sending an `etag`\nwill cause the `Policy` to be cleared blindly.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "constraint": {
+                    "description": "Name of the `Constraint` of the `Policy` to clear.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ProjectCreationStatus": {
+            "description": "A status object which is used as the `metadata` field for the Operation\nreturned by CreateProject. It provides insight for when significant phases of\nProject creation have completed.",
+            "id": "ProjectCreationStatus",
+            "properties": {
+                "ready": {
+                    "description": "True if the project creation process is complete.",
+                    "type": "boolean"
+                },
+                "gettable": {
+                    "description": "True if the project can be retrieved using GetProject. No other operations\non the project are guaranteed to work until the project creation is\ncomplete.",
+                    "type": "boolean"
+                },
+                "createTime": {
+                    "description": "Creation time of the project creation workflow.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "BooleanConstraint": {
+            "description": "A `Constraint` that is either enforced or not.\n\nFor example a constraint `constraints/compute.disableSerialPortAccess`.\nIf it is enforced on a VM instance, serial port connections will not be\nopened to that instance.",
+            "id": "BooleanConstraint",
+            "properties": {},
+            "type": "object"
+        },
+        "TestIamPermissionsResponse": {
+            "description": "Response message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsResponse",
+            "properties": {
+                "permissions": {
+                    "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GetIamPolicyRequest": {
+            "description": "Request message for `GetIamPolicy` method.",
+            "id": "GetIamPolicyRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "OrganizationOwner": {
+            "description": "The entity that owns an Organization. The lifetime of the Organization and\nall of its descendants are bound to the `OrganizationOwner`. If the\n`OrganizationOwner` is deleted, the Organization and all its descendants will\nbe deleted.",
+            "id": "OrganizationOwner",
+            "properties": {
+                "directoryCustomerId": {
+                    "description": "The Google for Work customer id used in the Directory API.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListProjectsResponse": {
+            "description": "A page of the response received from the\nListProjects\nmethod.\n\nA paginated response where more pages are available has\n`next_page_token` set. This token can be used in a subsequent request to\nretrieve the next request page.",
+            "id": "ListProjectsResponse",
+            "properties": {
+                "projects": {
+                    "description": "The list of Projects that matched the list filter. This list can\nbe paginated.",
+                    "items": {
+                        "$ref": "Project"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Pagination token.\n\nIf the result set is too large to fit in a single response, this token\nis returned. It encodes the position of the current result cursor.\nFeeding this value into a new list request with the `page_token` parameter\ngives the next page of the results.\n\nWhen `next_page_token` is not filled in, there is no next page and\nthe list returned is the last page in the result set.\n\nPagination tokens have a limited lifetime.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/cloudresourcemanager__v2beta1.json b/discovery/googleapis/cloudresourcemanager__v2beta1.json
index ec050f2..a9aa1b9 100644
--- a/discovery/googleapis/cloudresourcemanager__v2beta1.json
+++ b/discovery/googleapis/cloudresourcemanager__v2beta1.json
@@ -49,11 +49,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -67,6 +62,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -83,13 +83,13 @@
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
@@ -104,13 +104,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
+        "bearer_token": {
+            "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         }
@@ -119,191 +119,6 @@
     "resources": {
         "folders": {
             "methods": {
-                "getIamPolicy": {
-                    "description": "Gets the access control policy for a Folder. The returned policy may be\nempty if no such policy or resource exists. The `resource` field should\nbe the Folder's resource name, e.g. \"folders/1234\".\nThe caller must have `resourcemanager.folders.getIamPolicy` permission\non the identified folder.",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.folders.getIamPolicy",
-                    "parameterOrder": [
-                        "resource"
-                    ],
-                    "parameters": {
-                        "resource": {
-                            "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
-                            "location": "path",
-                            "pattern": "^folders/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2beta1/{+resource}:getIamPolicy",
-                    "request": {
-                        "$ref": "GetIamPolicyRequest"
-                    },
-                    "response": {
-                        "$ref": "Policy"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
-                "search": {
-                    "description": "Search for folders that match specific filter criteria.\nSearch provides an eventually consistent view of the folders a user has\naccess to which meet the specified filter criteria.\n\nThis will only return folders on which the caller has the\npermission `resourcemanager.folders.get`.",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.folders.search",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v2beta1/folders:search",
-                    "request": {
-                        "$ref": "SearchFoldersRequest"
-                    },
-                    "response": {
-                        "$ref": "SearchFoldersResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
-                "undelete": {
-                    "description": "Cancels the deletion request for a Folder. This method may only be\ncalled on a Folder in the [DELETE_REQUESTED] state.\nIn order to succeed, the Folder's parent must be in the [ACTIVE] state.\nIn addition, reintroducing the folder into the tree must not violate\nfolder naming, height and fanout constraints described in the\n[CreateFolder] documentation.\nThe caller must have `resourcemanager.folders.undelete` permission on the\nidentified folder.",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.folders.undelete",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The resource name of the Folder to undelete.\nMust be of the form `folders/{folder_id}`.",
-                            "location": "path",
-                            "pattern": "^folders/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2beta1/{+name}:undelete",
-                    "request": {
-                        "$ref": "UndeleteFolderRequest"
-                    },
-                    "response": {
-                        "$ref": "Folder"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
-                "get": {
-                    "description": "Retrieves a Folder identified by the supplied resource name.\nValid Folder resource names have the format `folders/{folder_id}`\n(for example, `folders/1234`).\nThe caller must have `resourcemanager.folders.get` permission on the\nidentified folder.",
-                    "httpMethod": "GET",
-                    "id": "cloudresourcemanager.folders.get",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The resource name of the Folder to retrieve.\nMust be of the form `folders/{folder_id}`.",
-                            "location": "path",
-                            "pattern": "^folders/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2beta1/{+name}",
-                    "response": {
-                        "$ref": "Folder"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates a Folder, changing its display_name.\nChanges to the folder display_name will be rejected if they violate either\nthe display_name formatting rules or naming constraints described in\nthe [CreateFolder] documentation.\n+ The Folder's display name must start and end with a letter or digit,\nmay contain letters, digits, spaces, hyphens and underscores and can be\nno longer than 30 characters. This is captured by the regular expression:\n[\\p{L}\\p{N}]({\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?.\nThe caller must have `resourcemanager.folders.update` permission on the\nidentified folder.\n\nIf the update fails due to the unique name constraint then a\nPreconditionFailure explaining this violation will be returned\nin the Status.details field.",
-                    "httpMethod": "PATCH",
-                    "id": "cloudresourcemanager.folders.patch",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "updateMask": {
-                            "description": "Fields to be updated.\nOnly the `display_name` can be updated.",
-                            "format": "google-fieldmask",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "name": {
-                            "description": "Output only. The resource name of the Folder.\nIts format is `folders/{folder_id}`, for example: \"folders/1234\".",
-                            "location": "path",
-                            "pattern": "^folders/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2beta1/{+name}",
-                    "request": {
-                        "$ref": "Folder"
-                    },
-                    "response": {
-                        "$ref": "Folder"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
-                "move": {
-                    "description": "Moves a Folder under a new resource parent.\nReturns an Operation which can be used to track the progress of the\nfolder move workflow.\nUpon success the Operation.response field will be populated with the\nmoved Folder.\nUpon failure, a FolderOperationError categorizing the failure cause will\nbe returned - if the failure occurs synchronously then the\nFolderOperationError will be returned via the Status.details field\nand if it occurs asynchronously then the FolderOperation will be returned\nvia the the Operation.error field.\nIn addition, the Operation.metadata field will be populated with a\nFolderOperation message as an aid to stateless clients.\nFolder moves will be rejected if they violate either the naming, height\nor fanout constraints described in the [CreateFolder] documentation.\nThe caller must have `resourcemanager.folders.move` permission on the\nfolder's current and proposed new parent.",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.folders.move",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The resource name of the Folder to move.\nMust be of the form folders/{folder_id}",
-                            "location": "path",
-                            "pattern": "^folders/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2beta1/{+name}:move",
-                    "request": {
-                        "$ref": "MoveFolderRequest"
-                    },
-                    "response": {
-                        "$ref": "Operation"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
-                "testIamPermissions": {
-                    "description": "Returns permissions that a caller has on the specified Folder.\nThe `resource` field should be the Folder's resource name,\ne.g. \"folders/1234\".\n\nThere are no permissions required for making this API call.",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.folders.testIamPermissions",
-                    "parameterOrder": [
-                        "resource"
-                    ],
-                    "parameters": {
-                        "resource": {
-                            "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
-                            "location": "path",
-                            "pattern": "^folders/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2beta1/{+resource}:testIamPermissions",
-                    "request": {
-                        "$ref": "TestIamPermissionsRequest"
-                    },
-                    "response": {
-                        "$ref": "TestIamPermissionsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
                 "delete": {
                     "description": "Requests deletion of a Folder. The Folder is moved into the\n[DELETE_REQUESTED] state immediately, and is deleted approximately 30 days\nlater. This method may only be called on an empty Folder in the [ACTIVE]\nstate, where a Folder is empty if it doesn't contain any Folders or\nProjects in the [ACTIVE] state.\nThe caller must have `resourcemanager.folders.delete` permission on the\nidentified folder.",
                     "httpMethod": "DELETE",
@@ -365,6 +180,29 @@
                         "https://www.googleapis.com/auth/cloud-platform.read-only"
                     ]
                 },
+                "create": {
+                    "description": "Creates a Folder in the resource hierarchy.\nReturns an Operation which can be used to track the progress of the\nfolder creation workflow.\nUpon success the Operation.response field will be populated with the\ncreated Folder.\n\nIn order to succeed, the addition of this new Folder must not violate\nthe Folder naming, height or fanout constraints.\n+ The Folder's display_name must be distinct from all other Folder's that\nshare its parent.\n+ The addition of the Folder must not cause the active Folder hierarchy\nto exceed a height of 4. Note, the full active + deleted Folder hierarchy\nis allowed to reach a height of 8; this provides additional headroom when\nmoving folders that contain deleted folders.\n+ The addition of the Folder must not cause the total number of Folders\nunder its parent to exceed 100.\n\nIf the operation fails due to a folder constraint violation,\na PreconditionFailure explaining the violation will be returned.\nIf the failure occurs synchronously then the PreconditionFailure\nwill be returned via the Status.details field and if it occurs\nasynchronously then the PreconditionFailure will be returned\nvia the the Operation.error field.\n\nThe caller must have `resourcemanager.folders.create` permission on the\nidentified parent.",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.folders.create",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "parent": {
+                            "description": "The resource name of the new Folder's parent.\nMust be of the form `folders/{folder_id}` or `organizations/{org_id}`.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2beta1/folders",
+                    "request": {
+                        "$ref": "Folder"
+                    },
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
                 "setIamPolicy": {
                     "description": "Sets the access control policy on a Folder, replacing any existing policy.\nThe `resource` field should be the Folder's resource name, e.g.\n\"folders/1234\".\nThe caller must have `resourcemanager.folders.setIamPolicy` permission\non the identified folder.",
                     "httpMethod": "POST",
@@ -392,28 +230,190 @@
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
                 },
-                "create": {
-                    "description": "Creates a Folder in the resource hierarchy.\nReturns an Operation which can be used to track the progress of the\nfolder creation workflow.\nUpon success the Operation.response field will be populated with the\ncreated Folder.\n\nIn order to succeed, the addition of this new Folder must not violate\nthe Folder naming, height or fanout constraints.\n+ The Folder's display_name must be distinct from all other Folder's that\nshare its parent.\n+ The addition of the Folder must not cause the active Folder hierarchy\nto exceed a height of 4. Note, the full active + deleted Folder hierarchy\nis allowed to reach a height of 8; this provides additional headroom when\nmoving folders that contain deleted folders.\n+ The addition of the Folder must not cause the total number of Folders\nunder its parent to exceed 100.\n\nIf the operation fails due to a folder constraint violation,\na PreconditionFailure explaining the violation will be returned.\nIf the failure occurs synchronously then the PreconditionFailure\nwill be returned via the Status.details field and if it occurs\nasynchronously then the PreconditionFailure will be returned\nvia the the Operation.error field.\n\nThe caller must have `resourcemanager.folders.create` permission on the\nidentified parent.",
+                "getIamPolicy": {
+                    "description": "Gets the access control policy for a Folder. The returned policy may be\nempty if no such policy or resource exists. The `resource` field should\nbe the Folder's resource name, e.g. \"folders/1234\".\nThe caller must have `resourcemanager.folders.getIamPolicy` permission\non the identified folder.",
                     "httpMethod": "POST",
-                    "id": "cloudresourcemanager.folders.create",
-                    "parameterOrder": [],
+                    "id": "cloudresourcemanager.folders.getIamPolicy",
+                    "parameterOrder": [
+                        "resource"
+                    ],
                     "parameters": {
-                        "parent": {
-                            "description": "The resource name of the new Folder's parent.\nMust be of the form `folders/{folder_id}` or `organizations/{org_id}`.",
+                        "resource": {
+                            "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                            "location": "path",
+                            "pattern": "^folders/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2beta1/{+resource}:getIamPolicy",
+                    "request": {
+                        "$ref": "GetIamPolicyRequest"
+                    },
+                    "response": {
+                        "$ref": "Policy"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
+                },
+                "search": {
+                    "description": "Search for folders that match specific filter criteria.\nSearch provides an eventually consistent view of the folders a user has\naccess to which meet the specified filter criteria.\n\nThis will only return folders on which the caller has the\npermission `resourcemanager.folders.get`.",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.folders.search",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v2beta1/folders:search",
+                    "request": {
+                        "$ref": "SearchFoldersRequest"
+                    },
+                    "response": {
+                        "$ref": "SearchFoldersResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
+                },
+                "patch": {
+                    "description": "Updates a Folder, changing its display_name.\nChanges to the folder display_name will be rejected if they violate either\nthe display_name formatting rules or naming constraints described in\nthe [CreateFolder] documentation.\n+ The Folder's display name must start and end with a letter or digit,\nmay contain letters, digits, spaces, hyphens and underscores and can be\nno longer than 30 characters. This is captured by the regular expression:\n[\\p{L}\\p{N}]({\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?.\nThe caller must have `resourcemanager.folders.update` permission on the\nidentified folder.\n\nIf the update fails due to the unique name constraint then a\nPreconditionFailure explaining this violation will be returned\nin the Status.details field.",
+                    "httpMethod": "PATCH",
+                    "id": "cloudresourcemanager.folders.patch",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Output only. The resource name of the Folder.\nIts format is `folders/{folder_id}`, for example: \"folders/1234\".",
+                            "location": "path",
+                            "pattern": "^folders/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "updateMask": {
+                            "description": "Fields to be updated.\nOnly the `display_name` can be updated.",
+                            "format": "google-fieldmask",
                             "location": "query",
                             "type": "string"
                         }
                     },
-                    "path": "v2beta1/folders",
+                    "path": "v2beta1/{+name}",
                     "request": {
                         "$ref": "Folder"
                     },
                     "response": {
+                        "$ref": "Folder"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "get": {
+                    "description": "Retrieves a Folder identified by the supplied resource name.\nValid Folder resource names have the format `folders/{folder_id}`\n(for example, `folders/1234`).\nThe caller must have `resourcemanager.folders.get` permission on the\nidentified folder.",
+                    "httpMethod": "GET",
+                    "id": "cloudresourcemanager.folders.get",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The resource name of the Folder to retrieve.\nMust be of the form `folders/{folder_id}`.",
+                            "location": "path",
+                            "pattern": "^folders/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2beta1/{+name}",
+                    "response": {
+                        "$ref": "Folder"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
+                },
+                "undelete": {
+                    "description": "Cancels the deletion request for a Folder. This method may only be\ncalled on a Folder in the [DELETE_REQUESTED] state.\nIn order to succeed, the Folder's parent must be in the [ACTIVE] state.\nIn addition, reintroducing the folder into the tree must not violate\nfolder naming, height and fanout constraints described in the\n[CreateFolder] documentation.\nThe caller must have `resourcemanager.folders.undelete` permission on the\nidentified folder.",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.folders.undelete",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The resource name of the Folder to undelete.\nMust be of the form `folders/{folder_id}`.",
+                            "location": "path",
+                            "pattern": "^folders/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2beta1/{+name}:undelete",
+                    "request": {
+                        "$ref": "UndeleteFolderRequest"
+                    },
+                    "response": {
+                        "$ref": "Folder"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "move": {
+                    "description": "Moves a Folder under a new resource parent.\nReturns an Operation which can be used to track the progress of the\nfolder move workflow.\nUpon success the Operation.response field will be populated with the\nmoved Folder.\nUpon failure, a FolderOperationError categorizing the failure cause will\nbe returned - if the failure occurs synchronously then the\nFolderOperationError will be returned via the Status.details field\nand if it occurs asynchronously then the FolderOperation will be returned\nvia the the Operation.error field.\nIn addition, the Operation.metadata field will be populated with a\nFolderOperation message as an aid to stateless clients.\nFolder moves will be rejected if they violate either the naming, height\nor fanout constraints described in the [CreateFolder] documentation.\nThe caller must have `resourcemanager.folders.move` permission on the\nfolder's current and proposed new parent.",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.folders.move",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The resource name of the Folder to move.\nMust be of the form folders/{folder_id}",
+                            "location": "path",
+                            "pattern": "^folders/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2beta1/{+name}:move",
+                    "request": {
+                        "$ref": "MoveFolderRequest"
+                    },
+                    "response": {
                         "$ref": "Operation"
                     },
                     "scopes": [
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
+                },
+                "testIamPermissions": {
+                    "description": "Returns permissions that a caller has on the specified Folder.\nThe `resource` field should be the Folder's resource name,\ne.g. \"folders/1234\".\n\nThere are no permissions required for making this API call.",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.folders.testIamPermissions",
+                    "parameterOrder": [
+                        "resource"
+                    ],
+                    "parameters": {
+                        "resource": {
+                            "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                            "location": "path",
+                            "pattern": "^folders/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2beta1/{+resource}:testIamPermissions",
+                    "request": {
+                        "$ref": "TestIamPermissionsRequest"
+                    },
+                    "response": {
+                        "$ref": "TestIamPermissionsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
                 }
             }
         }
@@ -421,6 +421,187 @@
     "revision": "20170927",
     "rootUrl": "https://cloudresourcemanager.googleapis.com/",
     "schemas": {
+        "AuditConfig": {
+            "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
+            "id": "AuditConfig",
+            "properties": {
+                "service": {
+                    "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
+                    "type": "string"
+                },
+                "auditLogConfigs": {
+                    "description": "The configuration for logging of each type of permission.\nNext ID: 4",
+                    "items": {
+                        "$ref": "AuditLogConfig"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+            "id": "Operation",
+            "properties": {
+                "done": {
+                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+                    "type": "boolean"
+                },
+                "response": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+                    "type": "string"
+                },
+                "error": {
+                    "$ref": "Status",
+                    "description": "The error result of the operation in case of failure or cancellation."
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "ListFoldersResponse": {
+            "description": "The ListFolders response message.",
+            "id": "ListFoldersResponse",
+            "properties": {
+                "folders": {
+                    "description": "A possibly paginated list of Folders that are direct descendants of\nthe specified parent resource.",
+                    "items": {
+                        "$ref": "Folder"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A pagination token returned from a previous call to `ListFolders`\nthat indicates from where listing should continue.\nThis field is optional.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MoveFolderRequest": {
+            "description": "The MoveFolder request message.",
+            "id": "MoveFolderRequest",
+            "properties": {
+                "destinationParent": {
+                    "description": "The resource name of the Folder or Organization to reparent\nthe folder under.\nMust be of the form `folders/{folder_id}` or `organizations/{org_id}`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SetIamPolicyRequest": {
+            "description": "Request message for `SetIamPolicy` method.",
+            "id": "SetIamPolicyRequest",
+            "properties": {
+                "updateMask": {
+                    "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                },
+                "policy": {
+                    "$ref": "Policy",
+                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
+                }
+            },
+            "type": "object"
+        },
+        "SearchFoldersResponse": {
+            "description": "The response message for searching folders.",
+            "id": "SearchFoldersResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A pagination token returned from a previous call to `SearchFolders`\nthat indicates from where searching should continue.\nThis field is optional.",
+                    "type": "string"
+                },
+                "folders": {
+                    "description": "A possibly paginated folder search results.\nthe specified parent resource.",
+                    "items": {
+                        "$ref": "Folder"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+            "id": "Status",
+            "properties": {
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                },
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "Binding": {
+            "description": "Associates `members` with a `role`.",
+            "id": "Binding",
+            "properties": {
+                "members": {
+                    "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "role": {
+                    "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SearchFoldersRequest": {
+            "description": "The request message for searching folders.",
+            "id": "SearchFoldersRequest",
+            "properties": {
+                "pageToken": {
+                    "description": "A pagination token returned from a previous call to `SearchFolders`\nthat indicates from where search should continue.\nThis field is optional.",
+                    "type": "string"
+                },
+                "pageSize": {
+                    "description": "The maximum number of folders to return in the response.\nThis field is optional.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "query": {
+                    "description": "Search criteria used to select the Folders to return.\nIf no search criteria is specified then all accessible folders will be\nreturned.\n\nQuery expressions can be used to restrict results based upon displayName,\nlifecycleState and parent, where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nSome example queries are:\n|Query|Description|\n|------|-----------|\n|displayName=Test*|Folders whose display name starts with \"Test\".|\n|lifecycleState=ACTIVE|Folders whose lifecycleState is ACTIVE.|\n|parent=folders/123|Folders whose parent is \"folders/123\".|\n|parent=folders/123 AND lifecycleState=ACTIVE|Active folders whose\nparent is \"folders/123\".|",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ProjectCreationStatus": {
             "description": "A status object which is used as the `metadata` field for the Operation\nreturned by CreateProject. It provides insight for when significant phases of\nProject creation have completed.",
             "id": "ProjectCreationStatus",
@@ -549,33 +730,37 @@
             },
             "type": "object"
         },
-        "Policy": {
-            "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
-            "id": "Policy",
+        "FolderOperationError": {
+            "description": "A classification of the Folder Operation error.",
+            "id": "FolderOperationError",
             "properties": {
-                "etag": {
-                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
-                    "format": "byte",
+                "errorMessageId": {
+                    "description": "The type of operation error experienced.",
+                    "enum": [
+                        "ERROR_TYPE_UNSPECIFIED",
+                        "ACTIVE_FOLDER_HEIGHT_VIOLATION",
+                        "MAX_CHILD_FOLDERS_VIOLATION",
+                        "FOLDER_NAME_UNIQUENESS_VIOLATION",
+                        "RESOURCE_DELETED_VIOLATION",
+                        "PARENT_DELETED_VIOLATION",
+                        "CYCLE_INTRODUCED_VIOLATION",
+                        "FOLDER_BEING_MOVED_VIOLATION",
+                        "FOLDER_TO_DELETE_NON_EMPTY_VIOLATION",
+                        "DELETED_FOLDER_HEIGHT_VIOLATION"
+                    ],
+                    "enumDescriptions": [
+                        "The error type was unrecognized or unspecified.",
+                        "The attempted action would violate the max folder depth constraint.",
+                        "The attempted action would violate the max child folders constraint.",
+                        "The attempted action would violate the locally-unique folder\ndisplay_name constraint.",
+                        "The resource being moved has been deleted.",
+                        "The resource a folder was being added to has been deleted.",
+                        "The attempted action would introduce cycle in resource path.",
+                        "The attempted action would move a folder that is already being moved.",
+                        "The folder the caller is trying to delete contains active resources.",
+                        "The attempted action would violate the max deleted folder depth\nconstraint."
+                    ],
                     "type": "string"
-                },
-                "version": {
-                    "description": "Version of the `Policy`. The default version is 0.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "auditConfigs": {
-                    "description": "Specifies cloud audit logging configuration for this policy.",
-                    "items": {
-                        "$ref": "AuditConfig"
-                    },
-                    "type": "array"
-                },
-                "bindings": {
-                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
-                    "items": {
-                        "$ref": "Binding"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -613,218 +798,33 @@
             },
             "type": "object"
         },
-        "FolderOperationError": {
-            "description": "A classification of the Folder Operation error.",
-            "id": "FolderOperationError",
+        "Policy": {
+            "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
+            "id": "Policy",
             "properties": {
-                "errorMessageId": {
-                    "description": "The type of operation error experienced.",
-                    "enum": [
-                        "ERROR_TYPE_UNSPECIFIED",
-                        "ACTIVE_FOLDER_HEIGHT_VIOLATION",
-                        "MAX_CHILD_FOLDERS_VIOLATION",
-                        "FOLDER_NAME_UNIQUENESS_VIOLATION",
-                        "RESOURCE_DELETED_VIOLATION",
-                        "PARENT_DELETED_VIOLATION",
-                        "CYCLE_INTRODUCED_VIOLATION",
-                        "FOLDER_BEING_MOVED_VIOLATION",
-                        "FOLDER_TO_DELETE_NON_EMPTY_VIOLATION",
-                        "DELETED_FOLDER_HEIGHT_VIOLATION"
-                    ],
-                    "enumDescriptions": [
-                        "The error type was unrecognized or unspecified.",
-                        "The attempted action would violate the max folder depth constraint.",
-                        "The attempted action would violate the max child folders constraint.",
-                        "The attempted action would violate the locally-unique folder\ndisplay_name constraint.",
-                        "The resource being moved has been deleted.",
-                        "The resource a folder was being added to has been deleted.",
-                        "The attempted action would introduce cycle in resource path.",
-                        "The attempted action would move a folder that is already being moved.",
-                        "The folder the caller is trying to delete contains active resources.",
-                        "The attempted action would violate the max deleted folder depth\nconstraint."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Operation": {
-            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
-            "id": "Operation",
-            "properties": {
-                "done": {
-                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
-                    "type": "boolean"
-                },
-                "response": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+                "etag": {
+                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
+                    "format": "byte",
                     "type": "string"
                 },
-                "error": {
-                    "$ref": "Status",
-                    "description": "The error result of the operation in case of failure or cancellation."
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "AuditConfig": {
-            "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
-            "id": "AuditConfig",
-            "properties": {
-                "service": {
-                    "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
-                    "type": "string"
-                },
-                "auditLogConfigs": {
-                    "description": "The configuration for logging of each type of permission.\nNext ID: 4",
-                    "items": {
-                        "$ref": "AuditLogConfig"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ListFoldersResponse": {
-            "description": "The ListFolders response message.",
-            "id": "ListFoldersResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "A pagination token returned from a previous call to `ListFolders`\nthat indicates from where listing should continue.\nThis field is optional.",
-                    "type": "string"
-                },
-                "folders": {
-                    "description": "A possibly paginated list of Folders that are direct descendants of\nthe specified parent resource.",
-                    "items": {
-                        "$ref": "Folder"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "MoveFolderRequest": {
-            "description": "The MoveFolder request message.",
-            "id": "MoveFolderRequest",
-            "properties": {
-                "destinationParent": {
-                    "description": "The resource name of the Folder or Organization to reparent\nthe folder under.\nMust be of the form `folders/{folder_id}` or `organizations/{org_id}`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SearchFoldersResponse": {
-            "description": "The response message for searching folders.",
-            "id": "SearchFoldersResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "A pagination token returned from a previous call to `SearchFolders`\nthat indicates from where searching should continue.\nThis field is optional.",
-                    "type": "string"
-                },
-                "folders": {
-                    "description": "A possibly paginated folder search results.\nthe specified parent resource.",
-                    "items": {
-                        "$ref": "Folder"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "SetIamPolicyRequest": {
-            "description": "Request message for `SetIamPolicy` method.",
-            "id": "SetIamPolicyRequest",
-            "properties": {
-                "policy": {
-                    "$ref": "Policy",
-                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
-                },
-                "updateMask": {
-                    "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.",
-                    "format": "google-fieldmask",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Status": {
-            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
-            "id": "Status",
-            "properties": {
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                },
-                "details": {
-                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                },
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "Binding": {
-            "description": "Associates `members` with a `role`.",
-            "id": "Binding",
-            "properties": {
-                "members": {
-                    "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "role": {
-                    "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SearchFoldersRequest": {
-            "description": "The request message for searching folders.",
-            "id": "SearchFoldersRequest",
-            "properties": {
-                "pageToken": {
-                    "description": "A pagination token returned from a previous call to `SearchFolders`\nthat indicates from where search should continue.\nThis field is optional.",
-                    "type": "string"
-                },
-                "pageSize": {
-                    "description": "The maximum number of folders to return in the response.\nThis field is optional.",
+                "version": {
+                    "description": "Version of the `Policy`. The default version is 0.",
                     "format": "int32",
                     "type": "integer"
                 },
-                "query": {
-                    "description": "Search criteria used to select the Folders to return.\nIf no search criteria is specified then all accessible folders will be\nreturned.\n\nQuery expressions can be used to restrict results based upon displayName,\nlifecycleState and parent, where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nSome example queries are:\n|Query|Description|\n|------|-----------|\n|displayName=Test*|Folders whose display name starts with \"Test\".|\n|lifecycleState=ACTIVE|Folders whose lifecycleState is ACTIVE.|\n|parent=folders/123|Folders whose parent is \"folders/123\".|\n|parent=folders/123 AND lifecycleState=ACTIVE|Active folders whose\nparent is \"folders/123\".|",
-                    "type": "string"
+                "auditConfigs": {
+                    "description": "Specifies cloud audit logging configuration for this policy.",
+                    "items": {
+                        "$ref": "AuditConfig"
+                    },
+                    "type": "array"
+                },
+                "bindings": {
+                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
+                    "items": {
+                        "$ref": "Binding"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/cloudtrace__v1.json b/discovery/googleapis/cloudtrace__v1.json
index 51f9955..3dca4b4 100644
--- a/discovery/googleapis/cloudtrace__v1.json
+++ b/discovery/googleapis/cloudtrace__v1.json
@@ -2,14 +2,14 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/cloud-platform": {
-                    "description": "View and manage your data across Google Cloud Platform services"
-                },
                 "https://www.googleapis.com/auth/trace.readonly": {
                     "description": "Read Trace data for a project or application"
                 },
                 "https://www.googleapis.com/auth/trace.append": {
                     "description": "Write Trace data for a project or application"
+                },
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "View and manage your data across Google Cloud Platform services"
                 }
             }
         }
@@ -31,18 +31,34 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "bearer_token": {
+            "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
         "uploadType": {
             "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
@@ -59,6 +75,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -95,27 +116,6 @@
             "description": "Pretty-print response.",
             "location": "query",
             "type": "boolean"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
         }
     },
     "protocol": "rest",
@@ -192,17 +192,6 @@
                                 "projectId"
                             ],
                             "parameters": {
-                                "pageToken": {
-                                    "description": "Token identifying the page of results to return. If provided, use the\nvalue of the `next_page_token` field from a previous request. Optional.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "startTime": {
-                                    "description": "Start of the time interval (inclusive) during which the trace data was\ncollected from the application.",
-                                    "format": "google-datetime",
-                                    "location": "query",
-                                    "type": "string"
-                                },
                                 "pageSize": {
                                     "description": "Maximum number of traces to return. If not specified or <= 0, the\nimplementation selects a reasonable value.  The implementation may\nreturn fewer traces than the requested page size. Optional.",
                                     "format": "int32",
@@ -241,6 +230,17 @@
                                     "format": "google-datetime",
                                     "location": "query",
                                     "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Token identifying the page of results to return. If provided, use the\nvalue of the `next_page_token` field from a previous request. Optional.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "startTime": {
+                                    "description": "Start of the time interval (inclusive) during which the trace data was\ncollected from the application.",
+                                    "format": "google-datetime",
+                                    "location": "query",
+                                    "type": "string"
                                 }
                             },
                             "path": "v1/projects/{projectId}/traces",
@@ -257,32 +257,13 @@
             }
         }
     },
-    "revision": "20170927",
+    "revision": "20171016",
     "rootUrl": "https://cloudtrace.googleapis.com/",
     "schemas": {
-        "Traces": {
-            "description": "List of new or updated traces.",
-            "id": "Traces",
-            "properties": {
-                "traces": {
-                    "description": "List of traces.",
-                    "items": {
-                        "$ref": "Trace"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "TraceSpan": {
             "description": "A span represents a single timed event within a trace. Spans can be nested\nand form a trace tree. Often, a trace contains a root span that describes the\nend-to-end latency of an operation and, optionally, one or more subspans for\nits suboperations. Spans do not need to be contiguous. There may be gaps\nbetween spans in a trace.",
             "id": "TraceSpan",
             "properties": {
-                "spanId": {
-                    "description": "Identifier for the span. Must be a 64-bit integer other than 0 and\nunique within a trace.",
-                    "format": "uint64",
-                    "type": "string"
-                },
                 "parentSpanId": {
                     "description": "ID of the parent span, if any. Optional.",
                     "format": "uint64",
@@ -322,6 +303,11 @@
                 "name": {
                     "description": "Name of the span. Must be less than 128 bytes. The span name is sanitized\nand displayed in the Stackdriver Trace tool in the\n{% dynamic print site_values.console_name %}.\nThe name may be a method name or some other per-call site name.\nFor the same executable and the same call point, a best practice is\nto use a consistent name, which makes it easier to correlate\ncross-trace spans.",
                     "type": "string"
+                },
+                "spanId": {
+                    "description": "Identifier for the span. Must be a 64-bit integer other than 0 and\nunique within a trace.",
+                    "format": "uint64",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -354,10 +340,6 @@
             "description": "A trace describes how long it takes for an application to perform an\noperation. It consists of a set of spans, each of which represent a single\ntimed event within the operation.",
             "id": "Trace",
             "properties": {
-                "traceId": {
-                    "description": "Globally unique identifier for the trace. This identifier is a 128-bit\nnumeric value formatted as a 32-byte hex string.",
-                    "type": "string"
-                },
                 "spans": {
                     "description": "Collection of spans in the trace.",
                     "items": {
@@ -368,6 +350,24 @@
                 "projectId": {
                     "description": "Project ID of the Cloud project where the trace data is stored.",
                     "type": "string"
+                },
+                "traceId": {
+                    "description": "Globally unique identifier for the trace. This identifier is a 128-bit\nnumeric value formatted as a 32-byte hex string.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Traces": {
+            "description": "List of new or updated traces.",
+            "id": "Traces",
+            "properties": {
+                "traces": {
+                    "description": "List of traces.",
+                    "items": {
+                        "$ref": "Trace"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/cloudtrace__v2.json b/discovery/googleapis/cloudtrace__v2.json
index 9e45d8c..f2b2749 100644
--- a/discovery/googleapis/cloudtrace__v2.json
+++ b/discovery/googleapis/cloudtrace__v2.json
@@ -28,6 +28,40 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "$.xgafv": {
+            "description": "V1 error format.",
+            "enum": [
+                "1",
+                "2"
+            ],
+            "enumDescriptions": [
+                "v1 error format",
+                "v2 error format"
+            ],
+            "location": "query",
+            "type": "string"
+        },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -79,40 +113,6 @@
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
             "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
-            "location": "query",
-            "type": "string"
-        },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "$.xgafv": {
-            "description": "V1 error format.",
-            "enum": [
-                "1",
-                "2"
-            ],
-            "enumDescriptions": [
-                "v1 error format",
-                "v2 error format"
-            ],
-            "location": "query",
-            "type": "string"
-        },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
         }
     },
     "protocol": "rest",
@@ -188,29 +188,29 @@
             }
         }
     },
-    "revision": "20170927",
+    "revision": "20171016",
     "rootUrl": "https://cloudtrace.googleapis.com/",
     "schemas": {
         "TimeEvents": {
-            "description": "A collection of `TimeEvent`s. A `TimeEvent` is a time-stamped annotation\non the span, consisting of either user-supplied key:value pairs, or\ndetails of an RPC message sent/received on the network.",
+            "description": "A collection of `TimeEvent`s. A `TimeEvent` is a time-stamped annotation\non the span, consisting of either user-supplied key:value pairs, or\ndetails of a message sent/received between Spans.",
             "id": "TimeEvents",
             "properties": {
+                "droppedAnnotationsCount": {
+                    "description": "The number of dropped annotations in all the included time events.\nIf the value is 0, then no annotations were dropped.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "droppedMessageEventsCount": {
+                    "description": "The number of dropped message events in all the included time events.\nIf the value is 0, then no message events were dropped.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "timeEvent": {
                     "description": "A collection of `TimeEvent`s.",
                     "items": {
                         "$ref": "TimeEvent"
                     },
                     "type": "array"
-                },
-                "droppedNetworkEventsCount": {
-                    "description": "The number of dropped network events in all the included time events.\nIf the value is 0, then no network events were dropped.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "droppedAnnotationsCount": {
-                    "description": "The number of dropped annotations in all the included time events.\nIf the value is 0, then no annotations were dropped.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -219,13 +219,13 @@
             "description": "Binary module.",
             "id": "Module",
             "properties": {
-                "module": {
-                    "$ref": "TruncatableString",
-                    "description": "For example: main binary, kernel modules, and dynamic libraries\nsuch as libc.so, sharedlib.so (up to 256 bytes)."
-                },
                 "buildId": {
                     "$ref": "TruncatableString",
                     "description": "A unique identifier for the module, usually a hash of its\ncontents (up to 128 bytes)."
+                },
+                "module": {
+                    "$ref": "TruncatableString",
+                    "description": "For example: main binary, kernel modules, and dynamic libraries\nsuch as libc.so, sharedlib.so (up to 256 bytes)."
                 }
             },
             "type": "object"
@@ -281,6 +281,10 @@
             "description": "A span represents a single operation within a trace. Spans can be\nnested to form a trace tree. Often, a trace contains a root span\nthat describes the end-to-end latency, and one or more subspans for\nits sub-operations. A trace can also contain multiple root spans,\nor none at all. Spans do not need to be contiguous&mdash;there may be\ngaps or overlaps between spans in a trace.",
             "id": "Span",
             "properties": {
+                "links": {
+                    "$ref": "Links",
+                    "description": "A maximum of 128 links are allowed per Span."
+                },
                 "attributes": {
                     "$ref": "Attributes",
                     "description": "A set of attributes on the span. There is a limit of 32 attributes per\nspan."
@@ -291,7 +295,7 @@
                 },
                 "childSpanCount": {
                     "description": "An optional number of child spans that were generated while this span\nwas active. If set, allows implementation to detect missing child spans.",
-                    "format": "uint32",
+                    "format": "int32",
                     "type": "integer"
                 },
                 "sameProcessAsParentSpan": {
@@ -330,11 +334,7 @@
                 },
                 "timeEvents": {
                     "$ref": "TimeEvents",
-                    "description": "The included time events. There can be up to 32 annotations and 128 network\nevents per span."
-                },
-                "links": {
-                    "$ref": "Links",
-                    "description": "A maximum of 128 links are allowed per Span."
+                    "description": "The included time events. There can be up to 32 annotations and 128 message\nevents per span."
                 }
             },
             "type": "object"
@@ -363,17 +363,17 @@
             "description": "A set of attributes, each in the format `[KEY]:[VALUE]`.",
             "id": "Attributes",
             "properties": {
+                "droppedAttributesCount": {
+                    "description": "The number of attributes that were discarded. Attributes can be discarded\nbecause their keys are too long or because there are too many attributes.\nIf this value is 0 then all attributes are valid.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "attributeMap": {
                     "additionalProperties": {
                         "$ref": "AttributeValue"
                     },
                     "description": "The set of attributes. Each attribute's key can be up to 128 bytes\nlong. The value can be a string up to 256 bytes, an integer, or the\nBoolean values `true` and `false`. For example:\n\n    \"/instance_id\": \"my-instance\"\n    \"/http/user_agent\": \"\"\n    \"/http/request_bytes\": 300\n    \"abc.com/myattribute\": true",
                     "type": "object"
-                },
-                "droppedAttributesCount": {
-                    "description": "The number of attributes that were discarded. Attributes can be discarded\nbecause their keys are too long or because there are too many attributes.\nIf this value is 0 then all attributes are valid.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -401,14 +401,14 @@
             "description": "Represents a string that might be shortened to a specified length.",
             "id": "TruncatableString",
             "properties": {
-                "value": {
-                    "description": "The shortened string. For example, if the original string was 500\nbytes long and the limit of the string was 128 bytes, then this\nvalue contains the first 128 bytes of the 500-byte string. Note that\ntruncation always happens on the character boundary, to ensure that\ntruncated string is still valid UTF8. In case of multi-byte characters,\nsize of truncated string can be less than truncation limit.",
-                    "type": "string"
-                },
                 "truncatedByteCount": {
                     "description": "The number of bytes removed from the original string. If this\nvalue is 0, then the string was not shortened.",
                     "format": "int32",
                     "type": "integer"
+                },
+                "value": {
+                    "description": "The shortened string. For example, if the original string was 500\nbytes long and the limit of the string was 128 bytes, then this\nvalue contains the first 128 bytes of the 500-byte string. Note that\ntruncation always happens on the character boundary, to ensure that\ntruncated string is still valid UTF8. In case of multi-byte characters,\nsize of truncated string can be less than truncation limit.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -423,25 +423,25 @@
                 },
                 "stackTraceHashId": {
                     "description": "The hash ID is used to conserve network bandwidth for duplicate\nstack traces within a single trace.\n\nOften multiple spans will have identical stack traces.\nThe first occurrence of a stack trace should contain both the\n`stackFrame` content and a value in `stackTraceHashId`.\n\nSubsequent spans within the same request can refer\nto that stack trace by only setting `stackTraceHashId`.",
-                    "format": "uint64",
+                    "format": "int64",
                     "type": "string"
                 }
             },
             "type": "object"
         },
         "TimeEvent": {
-            "description": "A time-stamped annotation or network event in the Span.",
+            "description": "A time-stamped annotation or message event in the Span.",
             "id": "TimeEvent",
             "properties": {
+                "messageEvent": {
+                    "$ref": "MessageEvent",
+                    "description": "An event describing a message sent/received between Spans."
+                },
                 "time": {
                     "description": "The timestamp indicating the time the event occurred.",
                     "format": "google-datetime",
                     "type": "string"
                 },
-                "networkEvent": {
-                    "$ref": "NetworkEvent",
-                    "description": "An event describing an RPC message sent/received on the network."
-                },
                 "annotation": {
                     "$ref": "Annotation",
                     "description": "Text annotation with a set of attributes."
@@ -449,43 +449,38 @@
             },
             "type": "object"
         },
-        "NetworkEvent": {
-            "description": "An event describing an RPC message sent or received on the network.",
-            "id": "NetworkEvent",
+        "MessageEvent": {
+            "description": "An event describing a message sent/received between Spans.",
+            "id": "MessageEvent",
             "properties": {
-                "messageId": {
-                    "description": "An identifier for the message, which must be unique in this span.",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "compressedMessageSize": {
-                    "description": "The number of compressed bytes sent or received.",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "time": {
-                    "description": "For sent messages, this is the time at which the first bit was sent.\nFor received messages, this is the time at which the last bit was\nreceived.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "uncompressedMessageSize": {
-                    "description": "The number of uncompressed bytes sent or received.",
-                    "format": "uint64",
-                    "type": "string"
-                },
                 "type": {
-                    "description": "Type of NetworkEvent. Indicates whether the RPC message was sent or\nreceived.",
+                    "description": "Type of MessageEvent. Indicates whether the message was sent or\nreceived.",
                     "enum": [
                         "TYPE_UNSPECIFIED",
                         "SENT",
-                        "RECV"
+                        "RECEIVED"
                     ],
                     "enumDescriptions": [
                         "Unknown event type.",
-                        "Indicates a sent RPC message.",
-                        "Indicates a received RPC message."
+                        "Indicates a sent message.",
+                        "Indicates a received message."
                     ],
                     "type": "string"
+                },
+                "id": {
+                    "description": "An identifier for the MessageEvent's message that can be used to match\nSENT and RECEIVED MessageEvents. It is recommended to be unique within\na Span.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "compressedSizeBytes": {
+                    "description": "The number of compressed bytes sent or received. If missing assumed to\nbe the same size as uncompressed.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "uncompressedSizeBytes": {
+                    "description": "The number of uncompressed bytes sent or received.",
+                    "format": "int64",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -494,14 +489,6 @@
             "description": "Represents a single stack frame in a stack trace.",
             "id": "StackFrame",
             "properties": {
-                "originalFunctionName": {
-                    "$ref": "TruncatableString",
-                    "description": "An un-mangled function name, if `function_name` is\n[mangled](http://www.avabodh.com/cxxin/namemangling.html). The name can\nbe fully-qualified (up to 1024 bytes)."
-                },
-                "functionName": {
-                    "$ref": "TruncatableString",
-                    "description": "The fully-qualified name that uniquely identifies the function or\nmethod that is active in this frame (up to 1024 bytes)."
-                },
                 "lineNumber": {
                     "description": "The line number in `file_name` where the function call appears.",
                     "format": "int64",
@@ -523,6 +510,14 @@
                 "sourceVersion": {
                     "$ref": "TruncatableString",
                     "description": "The version of the deployed source code (up to 128 bytes)."
+                },
+                "originalFunctionName": {
+                    "$ref": "TruncatableString",
+                    "description": "An un-mangled function name, if `function_name` is\n[mangled](http://www.avabodh.com/cxxin/namemangling.html). The name can\nbe fully-qualified (up to 1024 bytes)."
+                },
+                "functionName": {
+                    "$ref": "TruncatableString",
+                    "description": "The fully-qualified name that uniquely identifies the function or\nmethod that is active in this frame (up to 1024 bytes)."
                 }
             },
             "type": "object"
@@ -579,17 +574,17 @@
             "description": "A collection of stack frames, which can be truncated.",
             "id": "StackFrames",
             "properties": {
+                "droppedFramesCount": {
+                    "description": "The number of stack frames that were dropped because there\nwere too many stack frames.\nIf this value is 0, then no stack frames were dropped.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "frame": {
                     "description": "Stack frames in this call stack.",
                     "items": {
                         "$ref": "StackFrame"
                     },
                     "type": "array"
-                },
-                "droppedFramesCount": {
-                    "description": "The number of stack frames that were dropped because there\nwere too many stack frames.\nIf this value is 0, then no stack frames were dropped.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/compute__v1.json b/discovery/googleapis/compute__v1.json
index 2114ca9..dd782f4 100644
--- a/discovery/googleapis/compute__v1.json
+++ b/discovery/googleapis/compute__v1.json
@@ -29,7 +29,7 @@
     "description": "Creates and runs virtual machines on Google Cloud Platform.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/compute/docs/reference/latest/",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/egtdDFA52SBS7s-xZ60qt5N7eg8\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/ccMQJOTqWSBs7vqsZTir487_SNI\"",
     "icons": {
         "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
         "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
@@ -5704,6 +5704,58 @@
                         "https://www.googleapis.com/auth/compute"
                     ]
                 },
+                "setDeletionProtection": {
+                    "description": "Sets deletion protection on the instance.",
+                    "httpMethod": "POST",
+                    "id": "compute.instances.setDeletionProtection",
+                    "parameterOrder": [
+                        "project",
+                        "zone",
+                        "resource"
+                    ],
+                    "parameters": {
+                        "deletionProtection": {
+                            "default": "true",
+                            "description": "Whether the resource should be protected against deletion.",
+                            "location": "query",
+                            "type": "boolean"
+                        },
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "requestId": {
+                            "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "resource": {
+                            "description": "Name of the resource for this request.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "zone": {
+                            "description": "The name of the zone for this request.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "{project}/zones/{zone}/instances/{resource}/setDeletionProtection",
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute"
+                    ]
+                },
                 "setDiskAutoDelete": {
                     "description": "Sets the auto-delete flag for a disk attached to an instance.",
                     "httpMethod": "POST",
@@ -6253,7 +6305,7 @@
                     ]
                 },
                 "stop": {
-                    "description": "Stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur per-minute, virtual machine usage charges while they are stopped, but any resources that the virtual machine is using, such as persistent disks and static IP addresses, will continue to be charged until they are deleted. For more information, see Stopping an instance.",
+                    "description": "Stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur VM usage charges while they are stopped. However, resources that the VM is using, such as persistent disks and static IP addresses, will continue to be charged until they are deleted. For more information, see Stopping an instance.",
                     "httpMethod": "POST",
                     "id": "compute.instances.stop",
                     "parameterOrder": [
@@ -6300,6 +6352,531 @@
                 }
             }
         },
+        "interconnectAttachments": {
+            "methods": {
+                "aggregatedList": {
+                    "description": "Retrieves an aggregated list of interconnect attachments.",
+                    "httpMethod": "GET",
+                    "id": "compute.interconnectAttachments.aggregatedList",
+                    "parameterOrder": [
+                        "project"
+                    ],
+                    "parameters": {
+                        "filter": {
+                            "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "maxResults": {
+                            "default": "500",
+                            "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+                            "format": "uint32",
+                            "location": "query",
+                            "minimum": "0",
+                            "type": "integer"
+                        },
+                        "orderBy": {
+                            "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageToken": {
+                            "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "{project}/aggregated/interconnectAttachments",
+                    "response": {
+                        "$ref": "InterconnectAttachmentAggregatedList"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute",
+                        "https://www.googleapis.com/auth/compute.readonly"
+                    ]
+                },
+                "delete": {
+                    "description": "Deletes the specified interconnect attachment.",
+                    "httpMethod": "DELETE",
+                    "id": "compute.interconnectAttachments.delete",
+                    "parameterOrder": [
+                        "project",
+                        "region",
+                        "interconnectAttachment"
+                    ],
+                    "parameters": {
+                        "interconnectAttachment": {
+                            "description": "Name of the interconnect attachment to delete.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "region": {
+                            "description": "Name of the region for this request.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "requestId": {
+                            "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute"
+                    ]
+                },
+                "get": {
+                    "description": "Returns the specified interconnect attachment.",
+                    "httpMethod": "GET",
+                    "id": "compute.interconnectAttachments.get",
+                    "parameterOrder": [
+                        "project",
+                        "region",
+                        "interconnectAttachment"
+                    ],
+                    "parameters": {
+                        "interconnectAttachment": {
+                            "description": "Name of the interconnect attachment to return.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "region": {
+                            "description": "Name of the region for this request.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
+                    "response": {
+                        "$ref": "InterconnectAttachment"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute",
+                        "https://www.googleapis.com/auth/compute.readonly"
+                    ]
+                },
+                "insert": {
+                    "description": "Creates an InterconnectAttachment in the specified project using the data included in the request.",
+                    "httpMethod": "POST",
+                    "id": "compute.interconnectAttachments.insert",
+                    "parameterOrder": [
+                        "project",
+                        "region"
+                    ],
+                    "parameters": {
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "region": {
+                            "description": "Name of the region for this request.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "requestId": {
+                            "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "{project}/regions/{region}/interconnectAttachments",
+                    "request": {
+                        "$ref": "InterconnectAttachment"
+                    },
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute"
+                    ]
+                },
+                "list": {
+                    "description": "Retrieves the list of interconnect attachments contained within the specified region.",
+                    "httpMethod": "GET",
+                    "id": "compute.interconnectAttachments.list",
+                    "parameterOrder": [
+                        "project",
+                        "region"
+                    ],
+                    "parameters": {
+                        "filter": {
+                            "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "maxResults": {
+                            "default": "500",
+                            "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+                            "format": "uint32",
+                            "location": "query",
+                            "minimum": "0",
+                            "type": "integer"
+                        },
+                        "orderBy": {
+                            "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageToken": {
+                            "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "region": {
+                            "description": "Name of the region for this request.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "{project}/regions/{region}/interconnectAttachments",
+                    "response": {
+                        "$ref": "InterconnectAttachmentList"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute",
+                        "https://www.googleapis.com/auth/compute.readonly"
+                    ]
+                }
+            }
+        },
+        "interconnectLocations": {
+            "methods": {
+                "get": {
+                    "description": "Returns the details for the specified interconnect location. Get a list of available interconnect locations by making a list() request.",
+                    "httpMethod": "GET",
+                    "id": "compute.interconnectLocations.get",
+                    "parameterOrder": [
+                        "project",
+                        "interconnectLocation"
+                    ],
+                    "parameters": {
+                        "interconnectLocation": {
+                            "description": "Name of the interconnect location to return.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "{project}/global/interconnectLocations/{interconnectLocation}",
+                    "response": {
+                        "$ref": "InterconnectLocation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute",
+                        "https://www.googleapis.com/auth/compute.readonly"
+                    ]
+                },
+                "list": {
+                    "description": "Retrieves the list of interconnect locations available to the specified project.",
+                    "httpMethod": "GET",
+                    "id": "compute.interconnectLocations.list",
+                    "parameterOrder": [
+                        "project"
+                    ],
+                    "parameters": {
+                        "filter": {
+                            "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "maxResults": {
+                            "default": "500",
+                            "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+                            "format": "uint32",
+                            "location": "query",
+                            "minimum": "0",
+                            "type": "integer"
+                        },
+                        "orderBy": {
+                            "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageToken": {
+                            "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "{project}/global/interconnectLocations",
+                    "response": {
+                        "$ref": "InterconnectLocationList"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute",
+                        "https://www.googleapis.com/auth/compute.readonly"
+                    ]
+                }
+            }
+        },
+        "interconnects": {
+            "methods": {
+                "delete": {
+                    "description": "Deletes the specified interconnect.",
+                    "httpMethod": "DELETE",
+                    "id": "compute.interconnects.delete",
+                    "parameterOrder": [
+                        "project",
+                        "interconnect"
+                    ],
+                    "parameters": {
+                        "interconnect": {
+                            "description": "Name of the interconnect to delete.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "requestId": {
+                            "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "{project}/global/interconnects/{interconnect}",
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute"
+                    ]
+                },
+                "get": {
+                    "description": "Returns the specified interconnect. Get a list of available interconnects by making a list() request.",
+                    "httpMethod": "GET",
+                    "id": "compute.interconnects.get",
+                    "parameterOrder": [
+                        "project",
+                        "interconnect"
+                    ],
+                    "parameters": {
+                        "interconnect": {
+                            "description": "Name of the interconnect to return.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "{project}/global/interconnects/{interconnect}",
+                    "response": {
+                        "$ref": "Interconnect"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute",
+                        "https://www.googleapis.com/auth/compute.readonly"
+                    ]
+                },
+                "insert": {
+                    "description": "Creates a Interconnect in the specified project using the data included in the request.",
+                    "httpMethod": "POST",
+                    "id": "compute.interconnects.insert",
+                    "parameterOrder": [
+                        "project"
+                    ],
+                    "parameters": {
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "requestId": {
+                            "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "{project}/global/interconnects",
+                    "request": {
+                        "$ref": "Interconnect"
+                    },
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute"
+                    ]
+                },
+                "list": {
+                    "description": "Retrieves the list of interconnect available to the specified project.",
+                    "httpMethod": "GET",
+                    "id": "compute.interconnects.list",
+                    "parameterOrder": [
+                        "project"
+                    ],
+                    "parameters": {
+                        "filter": {
+                            "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "maxResults": {
+                            "default": "500",
+                            "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+                            "format": "uint32",
+                            "location": "query",
+                            "minimum": "0",
+                            "type": "integer"
+                        },
+                        "orderBy": {
+                            "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageToken": {
+                            "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "{project}/global/interconnects",
+                    "response": {
+                        "$ref": "InterconnectList"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute",
+                        "https://www.googleapis.com/auth/compute.readonly"
+                    ]
+                },
+                "patch": {
+                    "description": "Updates the specified interconnect with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+                    "httpMethod": "PATCH",
+                    "id": "compute.interconnects.patch",
+                    "parameterOrder": [
+                        "project",
+                        "interconnect"
+                    ],
+                    "parameters": {
+                        "interconnect": {
+                            "description": "Name of the interconnect to update.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "requestId": {
+                            "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "{project}/global/interconnects/{interconnect}",
+                    "request": {
+                        "$ref": "Interconnect"
+                    },
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute"
+                    ]
+                }
+            }
+        },
         "licenses": {
             "methods": {
                 "get": {
@@ -12993,7 +13570,7 @@
             }
         }
     },
-    "revision": "20170919",
+    "revision": "20171010",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "AcceleratorConfig": {
@@ -13095,7 +13672,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -13136,6 +13715,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -13203,7 +13784,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -13244,6 +13827,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -13293,7 +13878,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -13334,6 +13921,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -13530,7 +14119,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -13571,6 +14162,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -13638,7 +14231,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -13679,6 +14274,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -13728,7 +14325,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -13769,6 +14368,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -13881,7 +14482,7 @@
                     "type": "string"
                 },
                 "source": {
-                    "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.\n\nIf desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.\n\nNote that for InstanceTemplate, specify the disk name, not the URL for the disk.",
+                    "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required except for local SSD.\n\nIf desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.\n\nNote that for InstanceTemplate, specify the disk name, not the URL for the disk.",
                     "type": "string"
                 },
                 "type": {
@@ -13917,7 +14518,7 @@
                     "type": "string"
                 },
                 "sourceImage": {
-                    "description": "The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.\n\nTo create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:\n\nprojects/debian-cloud/global/images/family/debian-8 \n\nAlternatively, use a specific version of a public operating system image:\n\nprojects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD \n\nTo create a disk with a private image that you created, specify the image name in the following format:\n\nglobal/images/my-private-image \n\nYou can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:\n\nglobal/images/family/my-private-family \n\nIf the source image is deleted later, this field will not be set.",
+                    "description": "The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required except for local SSD.\n\nTo create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:\n\nprojects/debian-cloud/global/images/family/debian-8 \n\nAlternatively, use a specific version of a public operating system image:\n\nprojects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD \n\nTo create a disk with a private image that you created, specify the image name in the following format:\n\nglobal/images/my-private-image \n\nYou can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:\n\nglobal/images/family/my-private-family \n\nIf the source image is deleted later, this field will not be set.",
                     "type": "string"
                 },
                 "sourceImageEncryptionKey": {
@@ -14041,7 +14642,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -14082,6 +14685,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -14149,7 +14754,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -14190,6 +14797,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -14287,7 +14896,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -14328,6 +14939,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -14413,11 +15026,11 @@
             "id": "AutoscalingPolicyCustomMetricUtilization",
             "properties": {
                 "metric": {
-                    "description": "The identifier (type) of the Stackdriver Monitoring metric. The metric cannot have negative values and should be a utilization metric, which means that the number of virtual machines handling requests should increase or decrease proportionally to the metric.\n\nThe metric must have a value type of INT64 or DOUBLE.",
+                    "description": "The identifier (type) of the Stackdriver Monitoring metric. The metric cannot have negative values.\n\nThe metric must have a value type of INT64 or DOUBLE.",
                     "type": "string"
                 },
                 "utilizationTarget": {
-                    "description": "The target value of the metric that autoscaler should maintain. This must be a positive value.\n\nFor example, a good metric to use as a utilization_target is compute.googleapis.com/instance/network/received_bytes_count. The autoscaler will work to keep this value constant for each of the instances.",
+                    "description": "The target value of the metric that autoscaler should maintain. This must be a positive value. A utilization metric scales number of virtual machines handling requests to increase or decrease proportionally to the metric.\n\nFor example, a good metric to use as a utilization_target is compute.googleapis.com/instance/network/received_bytes_count. The autoscaler will work to keep this value constant for each of the instances.",
                     "format": "double",
                     "type": "number"
                 },
@@ -14587,7 +15200,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -14628,6 +15243,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -14836,7 +15453,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -14877,6 +15496,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -14992,7 +15613,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -15033,6 +15656,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -15082,7 +15707,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -15123,6 +15750,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -15323,7 +15952,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -15364,6 +15995,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -15431,7 +16064,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -15472,6 +16107,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -15521,7 +16158,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -15562,6 +16201,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -15841,7 +16482,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -15882,6 +16525,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -15949,7 +16594,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -15990,6 +16637,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -16122,7 +16771,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -16163,6 +16814,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -16230,7 +16883,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -16271,6 +16926,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -16320,7 +16977,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -16361,6 +17020,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -16421,7 +17082,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -16462,6 +17125,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -16605,6 +17270,13 @@
                     },
                     "type": "array"
                 },
+                "sourceServiceAccounts": {
+                    "description": "If source service accounts are specified, the firewall will apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both properties for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
                 "sourceTags": {
                     "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.",
                     "items": {
@@ -16612,8 +17284,15 @@
                     },
                     "type": "array"
                 },
+                "targetServiceAccounts": {
+                    "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
                 "targetTags": {
-                    "description": "A list of instance tags indicating sets of instances located in the network that may make network connections as specified in allowed[]. If no targetTags are specified, the firewall rule applies to all instances on the specified network.",
+                    "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network.",
                     "items": {
                         "type": "string"
                     },
@@ -16658,7 +17337,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -16699,6 +17380,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -16735,7 +17418,7 @@
             "id": "ForwardingRule",
             "properties": {
                 "IPAddress": {
-                    "description": "The IP address that this forwarding rule is serving on behalf of.\n\nFor global forwarding rules, the address must be a global IP. For regional forwarding rules, the address must live in the same region as the forwarding rule. By default, this field is empty and an ephemeral IPv4 address from the same scope (global or regional) will be assigned. A regional forwarding rule supports IPv4 only. A global forwarding rule supports either IPv4 or IPv6.\n\nWhen the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the network/subnetwork configured for the forwarding rule. A reserved address cannot be used. If the field is empty, the IP address will be automatically allocated from the internal IP range of the subnetwork or network configured for this forwarding rule.",
+                    "description": "The IP address that this forwarding rule is serving on behalf of.\n\nAddresses are restricted based on the forwarding rule's load balancing scheme (EXTERNAL or INTERNAL) and scope (global or regional).\n\nWhen the load balancing scheme is EXTERNAL, for global forwarding rules, the address must be a global IP, and for regional forwarding rules, the address must live in the same region as the forwarding rule. If this field is empty, an ephemeral IPv4 address from the same scope (global or regional) will be assigned. A regional forwarding rule supports IPv4 only. A global forwarding rule supports either IPv4 or IPv6.\n\nWhen the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the network/subnet configured for the forwarding rule. By default, if this field is empty, an ephemeral internal IP address will be automatically allocated from the IP range of the subnet or network configured for this forwarding rule.\n\nAn address can be specified either by a literal IP address or a URL reference to an existing Address resource. The following examples are all valid:  \n- 100.1.2.3 \n- https://www.googleapis.com/compute/v1/projects/project/regions/region/addresses/address \n- projects/project/regions/region/addresses/address \n- regions/region/addresses/address \n- global/addresses/address \n- address",
                     "type": "string"
                 },
                 "IPProtocol": {
@@ -16883,7 +17566,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -16924,6 +17609,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -16991,7 +17678,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -17032,6 +17721,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -17081,7 +17772,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -17122,6 +17815,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -17382,7 +18077,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -17423,6 +18120,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -17620,7 +18319,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -17661,6 +18362,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -17795,7 +18498,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -17836,6 +18541,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -18069,7 +18776,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -18110,6 +18819,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -18157,6 +18868,10 @@
                     "description": "[Output Only] Creation timestamp in RFC3339 text format.",
                     "type": "string"
                 },
+                "deletionProtection": {
+                    "description": "Whether the resource should be protected against deletion.",
+                    "type": "boolean"
+                },
                 "description": {
                     "description": "An optional description of this resource. Provide this property when you create the resource.",
                     "type": "string"
@@ -18325,7 +19040,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -18366,6 +19083,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -18504,7 +19223,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -18545,6 +19266,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -18612,7 +19335,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -18653,6 +19378,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -18866,7 +19593,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -18907,6 +19636,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -18974,7 +19705,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -19015,6 +19748,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -19116,7 +19851,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -19157,6 +19894,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -19264,7 +20003,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -19305,6 +20046,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -19385,7 +20128,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -19426,6 +20171,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -19511,7 +20258,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -19552,6 +20301,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -19761,7 +20512,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -19802,6 +20555,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -19892,7 +20647,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -19933,6 +20690,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -20044,6 +20803,987 @@
             },
             "type": "object"
         },
+        "Interconnect": {
+            "description": "Protocol definitions for Mixer API to support Interconnect. Next available tag: 25",
+            "id": "Interconnect",
+            "properties": {
+                "adminEnabled": {
+                    "description": "Administrative status of the interconnect. When this is set to ?true?, the Interconnect is functional and may carry traffic (assuming there are functional InterconnectAttachments and other requirements are satisfied). When set to ?false?, no packets will be carried over this Interconnect and no BGP routes will be exchanged over it. By default, it is set to ?true?.",
+                    "type": "boolean"
+                },
+                "circuitInfos": {
+                    "description": "[Output Only] List of CircuitInfo objects, that describe the individual circuits in this LAG.",
+                    "items": {
+                        "$ref": "InterconnectCircuitInfo"
+                    },
+                    "type": "array"
+                },
+                "creationTimestamp": {
+                    "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+                    "type": "string"
+                },
+                "customerName": {
+                    "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "An optional description of this resource. Provide this property when you create the resource.",
+                    "type": "string"
+                },
+                "expectedOutages": {
+                    "description": "[Output Only] List of outages expected for this Interconnect.",
+                    "items": {
+                        "$ref": "InterconnectOutageNotification"
+                    },
+                    "type": "array"
+                },
+                "googleIpAddress": {
+                    "description": "[Output Only] IP address configured on the Google side of the Interconnect link. This can be used only for ping tests.",
+                    "type": "string"
+                },
+                "googleReferenceId": {
+                    "description": "[Output Only] Google reference ID; to be used when raising support tickets with Google or otherwise to debug backend connectivity issues.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "interconnectAttachments": {
+                    "description": "[Output Only] A list of the URLs of all InterconnectAttachments configured to use this Interconnect.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "interconnectType": {
+                    "enum": [
+                        "DEDICATED",
+                        "IT_PRIVATE"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "kind": {
+                    "default": "compute#interconnect",
+                    "description": "[Output Only] Type of the resource. Always compute#interconnect for interconnects.",
+                    "type": "string"
+                },
+                "linkType": {
+                    "enum": [
+                        "LINK_TYPE_ETHERNET_10G_LR"
+                    ],
+                    "enumDescriptions": [
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "location": {
+                    "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned.",
+                    "type": "string"
+                },
+                "name": {
+                    "annotations": {
+                        "required": [
+                            "compute.interconnects.insert"
+                        ]
+                    },
+                    "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+                    "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                    "type": "string"
+                },
+                "nocContactEmail": {
+                    "description": "Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Stackdriver logs alerting and Cloud Notifications.",
+                    "type": "string"
+                },
+                "operationalStatus": {
+                    "description": "[Output Only] The current status of whether or not this Interconnect is functional.",
+                    "enum": [
+                        "ACTIVE",
+                        "OS_ACTIVE",
+                        "OS_UNPROVISIONED",
+                        "UNPROVISIONED"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "peerIpAddress": {
+                    "description": "[Output Only] IP address configured on the customer side of the Interconnect link. The customer should configure this IP address during turnup when prompted by Google NOC. This can be used only for ping tests.",
+                    "type": "string"
+                },
+                "provisionedLinkCount": {
+                    "description": "[Output Only] Number of links actually provisioned in this interconnect.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "requestedLinkCount": {
+                    "description": "Target number of physical links in the link bundle, as requested by the customer.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "selfLink": {
+                    "description": "[Output Only] Server-defined URL for the resource.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "InterconnectAttachment": {
+            "description": "Protocol definitions for Mixer API to support InterconnectAttachment. Next available tag: 23",
+            "id": "InterconnectAttachment",
+            "properties": {
+                "cloudRouterIpAddress": {
+                    "description": "[Output Only] IPv4 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment.",
+                    "type": "string"
+                },
+                "creationTimestamp": {
+                    "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+                    "type": "string"
+                },
+                "customerRouterIpAddress": {
+                    "description": "[Output Only] IPv4 address + prefix length to be configured on the customer router subinterface for this interconnect attachment.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "An optional description of this resource. Provide this property when you create the resource.",
+                    "type": "string"
+                },
+                "googleReferenceId": {
+                    "description": "[Output Only] Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "interconnect": {
+                    "description": "URL of the underlying Interconnect object that this attachment's traffic will traverse through.",
+                    "type": "string"
+                },
+                "kind": {
+                    "default": "compute#interconnectAttachment",
+                    "description": "[Output Only] Type of the resource. Always compute#interconnectAttachment for interconnect attachments.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+                    "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                    "type": "string"
+                },
+                "operationalStatus": {
+                    "description": "[Output Only] The current status of whether or not this interconnect attachment is functional.",
+                    "enum": [
+                        "ACTIVE",
+                        "OS_ACTIVE",
+                        "OS_UNPROVISIONED",
+                        "UNPROVISIONED"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "privateInterconnectInfo": {
+                    "$ref": "InterconnectAttachmentPrivateInfo",
+                    "description": "[Output Only] Information specific to a Private InterconnectAttachment. Only populated if the interconnect that this is attached is of type IT_PRIVATE."
+                },
+                "region": {
+                    "description": "[Output Only] URL of the region where the regional interconnect attachment resides.",
+                    "type": "string"
+                },
+                "router": {
+                    "description": "URL of the cloud router to be used for dynamic routing. This router must be in the same region as this InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the network & region within which the Cloud Router is configured.",
+                    "type": "string"
+                },
+                "selfLink": {
+                    "description": "[Output Only] Server-defined URL for the resource.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "InterconnectAttachmentAggregatedList": {
+            "id": "InterconnectAttachmentAggregatedList",
+            "properties": {
+                "id": {
+                    "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+                    "type": "string"
+                },
+                "items": {
+                    "additionalProperties": {
+                        "$ref": "InterconnectAttachmentsScopedList",
+                        "description": "Name of the scope containing this set of interconnect attachments."
+                    },
+                    "description": "A list of InterconnectAttachmentsScopedList resources.",
+                    "type": "object"
+                },
+                "kind": {
+                    "default": "compute#interconnectAttachmentAggregatedList",
+                    "description": "[Output Only] Type of resource. Always compute#interconnectAttachmentAggregatedList for aggregated lists of interconnect attachments.",
+                    "type": "string"
+                },
+                "nextPageToken": {
+                    "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+                    "type": "string"
+                },
+                "selfLink": {
+                    "description": "[Output Only] Server-defined URL for this resource.",
+                    "type": "string"
+                },
+                "warning": {
+                    "description": "[Output Only] Informational warning message.",
+                    "properties": {
+                        "code": {
+                            "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+                            "enum": [
+                                "CLEANUP_FAILED",
+                                "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
+                                "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
+                                "EXTERNAL_API_WARNING",
+                                "FIELD_VALUE_OVERRIDEN",
+                                "INJECTED_KERNELS_DEPRECATED",
+                                "MISSING_TYPE_DEPENDENCY",
+                                "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+                                "NEXT_HOP_CANNOT_IP_FORWARD",
+                                "NEXT_HOP_INSTANCE_NOT_FOUND",
+                                "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+                                "NEXT_HOP_NOT_RUNNING",
+                                "NOT_CRITICAL_ERROR",
+                                "NO_RESULTS_ON_PAGE",
+                                "REQUIRED_TOS_AGREEMENT",
+                                "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+                                "RESOURCE_NOT_DELETED",
+                                "SCHEMA_VALIDATION_IGNORED",
+                                "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+                                "UNDECLARED_PROPERTIES",
+                                "UNREACHABLE"
+                            ],
+                            "enumDescriptions": [
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                ""
+                            ],
+                            "type": "string"
+                        },
+                        "data": {
+                            "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+                            "items": {
+                                "properties": {
+                                    "key": {
+                                        "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+                                        "type": "string"
+                                    },
+                                    "value": {
+                                        "description": "[Output Only] A warning data value corresponding to the key.",
+                                        "type": "string"
+                                    }
+                                },
+                                "type": "object"
+                            },
+                            "type": "array"
+                        },
+                        "message": {
+                            "description": "[Output Only] A human-readable description of the warning code.",
+                            "type": "string"
+                        }
+                    },
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "InterconnectAttachmentList": {
+            "description": "Response to the list request, and contains a list of interconnect attachments.",
+            "id": "InterconnectAttachmentList",
+            "properties": {
+                "id": {
+                    "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+                    "type": "string"
+                },
+                "items": {
+                    "description": "A list of InterconnectAttachment resources.",
+                    "items": {
+                        "$ref": "InterconnectAttachment"
+                    },
+                    "type": "array"
+                },
+                "kind": {
+                    "default": "compute#interconnectAttachmentList",
+                    "description": "[Output Only] Type of resource. Always compute#interconnectAttachmentList for lists of interconnect attachments.",
+                    "type": "string"
+                },
+                "nextPageToken": {
+                    "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+                    "type": "string"
+                },
+                "selfLink": {
+                    "description": "[Output Only] Server-defined URL for this resource.",
+                    "type": "string"
+                },
+                "warning": {
+                    "description": "[Output Only] Informational warning message.",
+                    "properties": {
+                        "code": {
+                            "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+                            "enum": [
+                                "CLEANUP_FAILED",
+                                "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
+                                "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
+                                "EXTERNAL_API_WARNING",
+                                "FIELD_VALUE_OVERRIDEN",
+                                "INJECTED_KERNELS_DEPRECATED",
+                                "MISSING_TYPE_DEPENDENCY",
+                                "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+                                "NEXT_HOP_CANNOT_IP_FORWARD",
+                                "NEXT_HOP_INSTANCE_NOT_FOUND",
+                                "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+                                "NEXT_HOP_NOT_RUNNING",
+                                "NOT_CRITICAL_ERROR",
+                                "NO_RESULTS_ON_PAGE",
+                                "REQUIRED_TOS_AGREEMENT",
+                                "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+                                "RESOURCE_NOT_DELETED",
+                                "SCHEMA_VALIDATION_IGNORED",
+                                "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+                                "UNDECLARED_PROPERTIES",
+                                "UNREACHABLE"
+                            ],
+                            "enumDescriptions": [
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                ""
+                            ],
+                            "type": "string"
+                        },
+                        "data": {
+                            "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+                            "items": {
+                                "properties": {
+                                    "key": {
+                                        "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+                                        "type": "string"
+                                    },
+                                    "value": {
+                                        "description": "[Output Only] A warning data value corresponding to the key.",
+                                        "type": "string"
+                                    }
+                                },
+                                "type": "object"
+                            },
+                            "type": "array"
+                        },
+                        "message": {
+                            "description": "[Output Only] A human-readable description of the warning code.",
+                            "type": "string"
+                        }
+                    },
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "InterconnectAttachmentPrivateInfo": {
+            "description": "Private information for an interconnect attachment when this belongs to an interconnect of type IT_PRIVATE.",
+            "id": "InterconnectAttachmentPrivateInfo",
+            "properties": {
+                "tag8021q": {
+                    "description": "[Output Only] 802.1q encapsulation tag to be used for traffic between Google and the customer, going to and from this network and region.",
+                    "format": "uint32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "InterconnectAttachmentsScopedList": {
+            "id": "InterconnectAttachmentsScopedList",
+            "properties": {
+                "interconnectAttachments": {
+                    "description": "List of interconnect attachments contained in this scope.",
+                    "items": {
+                        "$ref": "InterconnectAttachment"
+                    },
+                    "type": "array"
+                },
+                "warning": {
+                    "description": "Informational warning which replaces the list of addresses when the list is empty.",
+                    "properties": {
+                        "code": {
+                            "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+                            "enum": [
+                                "CLEANUP_FAILED",
+                                "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
+                                "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
+                                "EXTERNAL_API_WARNING",
+                                "FIELD_VALUE_OVERRIDEN",
+                                "INJECTED_KERNELS_DEPRECATED",
+                                "MISSING_TYPE_DEPENDENCY",
+                                "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+                                "NEXT_HOP_CANNOT_IP_FORWARD",
+                                "NEXT_HOP_INSTANCE_NOT_FOUND",
+                                "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+                                "NEXT_HOP_NOT_RUNNING",
+                                "NOT_CRITICAL_ERROR",
+                                "NO_RESULTS_ON_PAGE",
+                                "REQUIRED_TOS_AGREEMENT",
+                                "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+                                "RESOURCE_NOT_DELETED",
+                                "SCHEMA_VALIDATION_IGNORED",
+                                "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+                                "UNDECLARED_PROPERTIES",
+                                "UNREACHABLE"
+                            ],
+                            "enumDescriptions": [
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                ""
+                            ],
+                            "type": "string"
+                        },
+                        "data": {
+                            "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+                            "items": {
+                                "properties": {
+                                    "key": {
+                                        "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+                                        "type": "string"
+                                    },
+                                    "value": {
+                                        "description": "[Output Only] A warning data value corresponding to the key.",
+                                        "type": "string"
+                                    }
+                                },
+                                "type": "object"
+                            },
+                            "type": "array"
+                        },
+                        "message": {
+                            "description": "[Output Only] A human-readable description of the warning code.",
+                            "type": "string"
+                        }
+                    },
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "InterconnectCircuitInfo": {
+            "description": "Describes a single physical circuit between the Customer and Google. CircuitInfo objects are created by Google, so all fields are output only. Next id: 4",
+            "id": "InterconnectCircuitInfo",
+            "properties": {
+                "customerDemarcId": {
+                    "description": "Customer-side demarc ID for this circuit. This will only be set if it was provided by the Customer to Google during circuit turn-up.",
+                    "type": "string"
+                },
+                "googleCircuitId": {
+                    "description": "Google-assigned unique ID for this circuit. Assigned at circuit turn-up.",
+                    "type": "string"
+                },
+                "googleDemarcId": {
+                    "description": "Google-side demarc ID for this circuit. Assigned at circuit turn-up and provided by Google to the customer in the LOA.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "InterconnectList": {
+            "description": "Response to the list request, and contains a list of interconnects.",
+            "id": "InterconnectList",
+            "properties": {
+                "id": {
+                    "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+                    "type": "string"
+                },
+                "items": {
+                    "description": "A list of Interconnect resources.",
+                    "items": {
+                        "$ref": "Interconnect"
+                    },
+                    "type": "array"
+                },
+                "kind": {
+                    "default": "compute#interconnectList",
+                    "description": "[Output Only] Type of resource. Always compute#interconnectList for lists of interconnects.",
+                    "type": "string"
+                },
+                "nextPageToken": {
+                    "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+                    "type": "string"
+                },
+                "selfLink": {
+                    "description": "[Output Only] Server-defined URL for this resource.",
+                    "type": "string"
+                },
+                "warning": {
+                    "description": "[Output Only] Informational warning message.",
+                    "properties": {
+                        "code": {
+                            "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+                            "enum": [
+                                "CLEANUP_FAILED",
+                                "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
+                                "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
+                                "EXTERNAL_API_WARNING",
+                                "FIELD_VALUE_OVERRIDEN",
+                                "INJECTED_KERNELS_DEPRECATED",
+                                "MISSING_TYPE_DEPENDENCY",
+                                "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+                                "NEXT_HOP_CANNOT_IP_FORWARD",
+                                "NEXT_HOP_INSTANCE_NOT_FOUND",
+                                "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+                                "NEXT_HOP_NOT_RUNNING",
+                                "NOT_CRITICAL_ERROR",
+                                "NO_RESULTS_ON_PAGE",
+                                "REQUIRED_TOS_AGREEMENT",
+                                "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+                                "RESOURCE_NOT_DELETED",
+                                "SCHEMA_VALIDATION_IGNORED",
+                                "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+                                "UNDECLARED_PROPERTIES",
+                                "UNREACHABLE"
+                            ],
+                            "enumDescriptions": [
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                ""
+                            ],
+                            "type": "string"
+                        },
+                        "data": {
+                            "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+                            "items": {
+                                "properties": {
+                                    "key": {
+                                        "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+                                        "type": "string"
+                                    },
+                                    "value": {
+                                        "description": "[Output Only] A warning data value corresponding to the key.",
+                                        "type": "string"
+                                    }
+                                },
+                                "type": "object"
+                            },
+                            "type": "array"
+                        },
+                        "message": {
+                            "description": "[Output Only] A human-readable description of the warning code.",
+                            "type": "string"
+                        }
+                    },
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "InterconnectLocation": {
+            "description": "Protocol definitions for Mixer API to support InterconnectLocation.",
+            "id": "InterconnectLocation",
+            "properties": {
+                "address": {
+                    "description": "[Output Only] The postal address of the Point of Presence, each line in the address is separated by a newline character.",
+                    "type": "string"
+                },
+                "availabilityZone": {
+                    "description": "Availability zone for this location. Within a city, maintenance will not be simultaneously scheduled in more than one availability zone. Example: \"zone1\" or \"zone2\".",
+                    "type": "string"
+                },
+                "city": {
+                    "description": "City designator used by the Interconnect UI to locate this InterconnectLocation within the Continent. For example: \"Chicago, IL\", \"Amsterdam, Netherlands\".",
+                    "type": "string"
+                },
+                "continent": {
+                    "description": "Continent for this location. Used by the location picker in the Interconnect UI.",
+                    "enum": [
+                        "AFRICA",
+                        "ASIA_PAC",
+                        "C_AFRICA",
+                        "C_ASIA_PAC",
+                        "C_EUROPE",
+                        "C_NORTH_AMERICA",
+                        "C_SOUTH_AMERICA",
+                        "EUROPE",
+                        "NORTH_AMERICA",
+                        "SOUTH_AMERICA"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "creationTimestamp": {
+                    "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "[Output Only] An optional description of the resource.",
+                    "type": "string"
+                },
+                "facilityProvider": {
+                    "description": "[Output Only] The name of the provider for this facility (e.g., EQUINIX).",
+                    "type": "string"
+                },
+                "facilityProviderFacilityId": {
+                    "description": "[Output Only] A provider-assigned Identifier for this facility (e.g., Ashburn-DC1).",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "kind": {
+                    "default": "compute#interconnectLocation",
+                    "description": "[Output Only] Type of the resource. Always compute#interconnectLocation for interconnect locations.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "[Output Only] Name of the resource.",
+                    "type": "string"
+                },
+                "peeringdbFacilityId": {
+                    "description": "[Output Only] The peeringdb identifier for this facility (corresponding with a netfac type in peeringdb).",
+                    "type": "string"
+                },
+                "regionInfos": {
+                    "description": "[Output Only] A list of InterconnectLocation.RegionInfo objects, that describe parameters pertaining to the relation between this InterconnectLocation and various Google Cloud regions.",
+                    "items": {
+                        "$ref": "InterconnectLocationRegionInfo"
+                    },
+                    "type": "array"
+                },
+                "selfLink": {
+                    "description": "[Output Only] Server-defined URL for the resource.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "InterconnectLocationList": {
+            "description": "Response to the list request, and contains a list of interconnect locations.",
+            "id": "InterconnectLocationList",
+            "properties": {
+                "id": {
+                    "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+                    "type": "string"
+                },
+                "items": {
+                    "description": "A list of InterconnectLocation resources.",
+                    "items": {
+                        "$ref": "InterconnectLocation"
+                    },
+                    "type": "array"
+                },
+                "kind": {
+                    "default": "compute#interconnectLocationList",
+                    "description": "[Output Only] Type of resource. Always compute#interconnectLocationList for lists of interconnect locations.",
+                    "type": "string"
+                },
+                "nextPageToken": {
+                    "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+                    "type": "string"
+                },
+                "selfLink": {
+                    "description": "[Output Only] Server-defined URL for this resource.",
+                    "type": "string"
+                },
+                "warning": {
+                    "description": "[Output Only] Informational warning message.",
+                    "properties": {
+                        "code": {
+                            "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+                            "enum": [
+                                "CLEANUP_FAILED",
+                                "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
+                                "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
+                                "EXTERNAL_API_WARNING",
+                                "FIELD_VALUE_OVERRIDEN",
+                                "INJECTED_KERNELS_DEPRECATED",
+                                "MISSING_TYPE_DEPENDENCY",
+                                "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+                                "NEXT_HOP_CANNOT_IP_FORWARD",
+                                "NEXT_HOP_INSTANCE_NOT_FOUND",
+                                "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+                                "NEXT_HOP_NOT_RUNNING",
+                                "NOT_CRITICAL_ERROR",
+                                "NO_RESULTS_ON_PAGE",
+                                "REQUIRED_TOS_AGREEMENT",
+                                "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+                                "RESOURCE_NOT_DELETED",
+                                "SCHEMA_VALIDATION_IGNORED",
+                                "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+                                "UNDECLARED_PROPERTIES",
+                                "UNREACHABLE"
+                            ],
+                            "enumDescriptions": [
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                "",
+                                ""
+                            ],
+                            "type": "string"
+                        },
+                        "data": {
+                            "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+                            "items": {
+                                "properties": {
+                                    "key": {
+                                        "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+                                        "type": "string"
+                                    },
+                                    "value": {
+                                        "description": "[Output Only] A warning data value corresponding to the key.",
+                                        "type": "string"
+                                    }
+                                },
+                                "type": "object"
+                            },
+                            "type": "array"
+                        },
+                        "message": {
+                            "description": "[Output Only] A human-readable description of the warning code.",
+                            "type": "string"
+                        }
+                    },
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "InterconnectLocationRegionInfo": {
+            "description": "Information about any potential InterconnectAttachments between an Interconnect at a specific InterconnectLocation, and a specific Cloud Region.",
+            "id": "InterconnectLocationRegionInfo",
+            "properties": {
+                "expectedRttMs": {
+                    "description": "Expected round-trip time in milliseconds, from this InterconnectLocation to a VM in this region.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "locationPresence": {
+                    "description": "Identifies the network presence of this location.",
+                    "enum": [
+                        "GLOBAL",
+                        "LOCAL_REGION",
+                        "LP_GLOBAL",
+                        "LP_LOCAL_REGION"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "region": {
+                    "description": "URL for the region of this location.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "InterconnectOutageNotification": {
+            "description": "Description of a planned outage on this Interconnect. Next id: 9",
+            "id": "InterconnectOutageNotification",
+            "properties": {
+                "affectedCircuits": {
+                    "description": "Iff issue_type is IT_PARTIAL_OUTAGE, a list of the Google-side circuit IDs that will be affected.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "description": {
+                    "description": "Short user-visible description of the purpose of the outage.",
+                    "type": "string"
+                },
+                "endTime": {
+                    "format": "int64",
+                    "type": "string"
+                },
+                "issueType": {
+                    "enum": [
+                        "IT_OUTAGE",
+                        "IT_PARTIAL_OUTAGE",
+                        "OUTAGE",
+                        "PARTIAL_OUTAGE"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Unique identifier for this outage notification.",
+                    "type": "string"
+                },
+                "source": {
+                    "enum": [
+                        "GOOGLE",
+                        "NSRC_GOOGLE"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Scheduled start and end times for the outage (milliseconds since Unix epoch).",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "state": {
+                    "enum": [
+                        "ACTIVE",
+                        "CANCELLED",
+                        "NS_ACTIVE",
+                        "NS_CANCELED"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "License": {
             "description": "A license resource.",
             "id": "License",
@@ -20195,7 +21935,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -20236,6 +21978,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -20303,7 +22047,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -20344,6 +22090,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -20393,7 +22141,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -20434,6 +22184,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -20777,7 +22529,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -20818,6 +22572,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -21066,7 +22822,9 @@
                                 "enum": [
                                     "CLEANUP_FAILED",
                                     "DEPRECATED_RESOURCE_USED",
+                                    "DEPRECATED_TYPE_USED",
                                     "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                    "EXPERIMENTAL_TYPE_USED",
                                     "EXTERNAL_API_WARNING",
                                     "FIELD_VALUE_OVERRIDEN",
                                     "INJECTED_KERNELS_DEPRECATED",
@@ -21107,6 +22865,8 @@
                                     "",
                                     "",
                                     "",
+                                    "",
+                                    "",
                                     ""
                                 ],
                                 "type": "string"
@@ -21180,7 +22940,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -21221,6 +22983,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -21288,7 +23052,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -21329,6 +23095,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -21378,7 +23146,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -21419,6 +23189,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -21825,7 +23597,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -21866,6 +23640,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -21933,7 +23709,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -21974,6 +23752,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -22041,7 +23821,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -22082,6 +23864,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -22228,7 +24012,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -22269,6 +24055,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -22377,7 +24165,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -22418,6 +24208,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -22594,7 +24386,9 @@
                                 "enum": [
                                     "CLEANUP_FAILED",
                                     "DEPRECATED_RESOURCE_USED",
+                                    "DEPRECATED_TYPE_USED",
                                     "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                    "EXPERIMENTAL_TYPE_USED",
                                     "EXTERNAL_API_WARNING",
                                     "FIELD_VALUE_OVERRIDEN",
                                     "INJECTED_KERNELS_DEPRECATED",
@@ -22635,6 +24429,8 @@
                                     "",
                                     "",
                                     "",
+                                    "",
+                                    "",
                                     ""
                                 ],
                                 "type": "string"
@@ -22704,7 +24500,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -22745,6 +24543,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -22883,7 +24683,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -22924,6 +24726,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -23006,6 +24810,10 @@
                     "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface.",
                     "type": "string"
                 },
+                "linkedInterconnectAttachment": {
+                    "description": "URI of the linked interconnect attachment. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment.",
+                    "type": "string"
+                },
                 "linkedVpnTunnel": {
                     "description": "URI of the linked VPN tunnel. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment.",
                     "type": "string"
@@ -23054,7 +24862,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -23095,6 +24905,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -23258,7 +25070,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -23299,6 +25113,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -23585,7 +25401,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -23626,6 +25444,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -23735,7 +25555,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -23776,6 +25598,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -23904,7 +25728,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -23945,6 +25771,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -24012,7 +25840,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -24053,6 +25883,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -24127,7 +25959,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -24168,6 +26002,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -24336,7 +26172,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -24377,6 +26215,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -24502,7 +26342,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -24543,6 +26385,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -24662,7 +26506,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -24703,6 +26549,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -24770,7 +26618,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -24811,6 +26661,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -24860,7 +26712,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -24901,6 +26755,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -25047,7 +26903,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -25088,6 +26946,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -25172,7 +27032,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -25213,6 +27075,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -25314,7 +27178,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -25355,6 +27221,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -25529,7 +27397,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -25570,6 +27440,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -25715,7 +27587,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -25756,6 +27630,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -25905,7 +27781,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -25946,6 +27824,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -26013,7 +27893,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -26054,6 +27936,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -26103,7 +27987,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -26144,6 +28030,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -26293,7 +28181,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -26334,6 +28224,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -26616,7 +28508,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -26657,6 +28551,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -26724,7 +28620,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -26765,6 +28663,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -26814,7 +28714,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -26855,6 +28757,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -26921,7 +28825,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -26962,6 +28868,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
@@ -27112,7 +29020,9 @@
                             "enum": [
                                 "CLEANUP_FAILED",
                                 "DEPRECATED_RESOURCE_USED",
+                                "DEPRECATED_TYPE_USED",
                                 "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                                "EXPERIMENTAL_TYPE_USED",
                                 "EXTERNAL_API_WARNING",
                                 "FIELD_VALUE_OVERRIDEN",
                                 "INJECTED_KERNELS_DEPRECATED",
@@ -27153,6 +29063,8 @@
                                 "",
                                 "",
                                 "",
+                                "",
+                                "",
                                 ""
                             ],
                             "type": "string"
diff --git a/discovery/googleapis/container__v1.json b/discovery/googleapis/container__v1.json
index 993905d..8eb3ba7 100644
--- a/discovery/googleapis/container__v1.json
+++ b/discovery/googleapis/container__v1.json
@@ -25,66 +25,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
-            "location": "query",
-            "type": "string"
-        },
-        "$.xgafv": {
-            "description": "V1 error format.",
-            "enum": [
-                "1",
-                "2"
-            ],
-            "enumDescriptions": [
-                "v1 error format",
-                "v2 error format"
-            ],
-            "location": "query",
-            "type": "string"
-        },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -101,13 +41,73 @@
             "location": "query",
             "type": "string"
         },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
         "access_token": {
             "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
+        "$.xgafv": {
+            "description": "V1 error format.",
+            "enum": [
+                "1",
+                "2"
+            ],
+            "enumDescriptions": [
+                "v1 error format",
+                "v2 error format"
+            ],
             "location": "query",
             "type": "string"
         }
@@ -152,6 +152,126 @@
                     "resources": {
                         "clusters": {
                             "methods": {
+                                "master": {
+                                    "description": "Updates the master of a specific cluster.",
+                                    "httpMethod": "POST",
+                                    "id": "container.projects.zones.clusters.master",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "zone",
+                                        "clusterId"
+                                    ],
+                                    "parameters": {
+                                        "zone": {
+                                            "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "clusterId": {
+                                            "description": "The name of the cluster to upgrade.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "projectId": {
+                                            "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/master",
+                                    "request": {
+                                        "$ref": "UpdateMasterRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "setMasterAuth": {
+                                    "description": "Used to set master auth materials. Currently supports :-\nChanging the admin password of a specific cluster.\nThis can be either via password generation or explicitly set the password.",
+                                    "httpMethod": "POST",
+                                    "id": "container.projects.zones.clusters.setMasterAuth",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "zone",
+                                        "clusterId"
+                                    ],
+                                    "parameters": {
+                                        "zone": {
+                                            "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "clusterId": {
+                                            "description": "The name of the cluster to upgrade.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "projectId": {
+                                            "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setMasterAuth",
+                                    "request": {
+                                        "$ref": "SetMasterAuthRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "logging": {
+                                    "description": "Sets the logging service of a specific cluster.",
+                                    "httpMethod": "POST",
+                                    "id": "container.projects.zones.clusters.logging",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "zone",
+                                        "clusterId"
+                                    ],
+                                    "parameters": {
+                                        "projectId": {
+                                            "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "zone": {
+                                            "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "clusterId": {
+                                            "description": "The name of the cluster to upgrade.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/logging",
+                                    "request": {
+                                        "$ref": "SetLoggingServiceRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
                                 "list": {
                                     "description": "Lists all clusters owned by a project in either the specified zone or all\nzones.",
                                     "httpMethod": "GET",
@@ -182,6 +302,39 @@
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
                                 },
+                                "create": {
+                                    "description": "Creates a cluster, consisting of the specified number and type of Google\nCompute Engine instances.\n\nBy default, the cluster is created in the project's\n[default network](/compute/docs/networks-and-firewalls#networks).\n\nOne firewall is added for the cluster. After cluster creation,\nthe cluster creates routes for each node to allow the containers\non that node to communicate with all other instances in the\ncluster.\n\nFinally, an entry is added to the project's global metadata indicating\nwhich CIDR range is being used by the cluster.",
+                                    "httpMethod": "POST",
+                                    "id": "container.projects.zones.clusters.create",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "zone"
+                                    ],
+                                    "parameters": {
+                                        "projectId": {
+                                            "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "zone": {
+                                            "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/projects/{projectId}/zones/{zone}/clusters",
+                                    "request": {
+                                        "$ref": "CreateClusterRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
                                 "resourceLabels": {
                                     "description": "Sets labels on a cluster.",
                                     "httpMethod": "POST",
@@ -222,39 +375,6 @@
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
                                 },
-                                "create": {
-                                    "description": "Creates a cluster, consisting of the specified number and type of Google\nCompute Engine instances.\n\nBy default, the cluster is created in the project's\n[default network](/compute/docs/networks-and-firewalls#networks).\n\nOne firewall is added for the cluster. After cluster creation,\nthe cluster creates routes for each node to allow the containers\non that node to communicate with all other instances in the\ncluster.\n\nFinally, an entry is added to the project's global metadata indicating\nwhich CIDR range is being used by the cluster.",
-                                    "httpMethod": "POST",
-                                    "id": "container.projects.zones.clusters.create",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "zone"
-                                    ],
-                                    "parameters": {
-                                        "projectId": {
-                                            "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "zone": {
-                                            "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/projects/{projectId}/zones/{zone}/clusters",
-                                    "request": {
-                                        "$ref": "CreateClusterRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "Operation"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
                                 "completeIpRotation": {
                                     "description": "Completes master IP rotation.",
                                     "httpMethod": "POST",
@@ -579,6 +699,12 @@
                                         "clusterId"
                                     ],
                                     "parameters": {
+                                        "clusterId": {
+                                            "description": "The name of the cluster to upgrade.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
                                         "projectId": {
                                             "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
                                             "location": "path",
@@ -590,12 +716,6 @@
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
-                                        },
-                                        "clusterId": {
-                                            "description": "The name of the cluster to upgrade.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
                                         }
                                     },
                                     "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/locations",
@@ -688,139 +808,20 @@
                                     "scopes": [
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
-                                },
-                                "master": {
-                                    "description": "Updates the master of a specific cluster.",
-                                    "httpMethod": "POST",
-                                    "id": "container.projects.zones.clusters.master",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "zone",
-                                        "clusterId"
-                                    ],
-                                    "parameters": {
-                                        "projectId": {
-                                            "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "zone": {
-                                            "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "clusterId": {
-                                            "description": "The name of the cluster to upgrade.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/master",
-                                    "request": {
-                                        "$ref": "UpdateMasterRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "Operation"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "setMasterAuth": {
-                                    "description": "Used to set master auth materials. Currently supports :-\nChanging the admin password of a specific cluster.\nThis can be either via password generation or explicitly set the password.",
-                                    "httpMethod": "POST",
-                                    "id": "container.projects.zones.clusters.setMasterAuth",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "zone",
-                                        "clusterId"
-                                    ],
-                                    "parameters": {
-                                        "projectId": {
-                                            "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "zone": {
-                                            "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "clusterId": {
-                                            "description": "The name of the cluster to upgrade.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setMasterAuth",
-                                    "request": {
-                                        "$ref": "SetMasterAuthRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "Operation"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "logging": {
-                                    "description": "Sets the logging service of a specific cluster.",
-                                    "httpMethod": "POST",
-                                    "id": "container.projects.zones.clusters.logging",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "zone",
-                                        "clusterId"
-                                    ],
-                                    "parameters": {
-                                        "projectId": {
-                                            "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "zone": {
-                                            "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "clusterId": {
-                                            "description": "The name of the cluster to upgrade.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/logging",
-                                    "request": {
-                                        "$ref": "SetLoggingServiceRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "Operation"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
                                 }
                             },
                             "resources": {
                                 "nodePools": {
                                     "methods": {
-                                        "list": {
-                                            "description": "Lists the node pools for a cluster.",
+                                        "get": {
+                                            "description": "Retrieves the node pool requested.",
                                             "httpMethod": "GET",
-                                            "id": "container.projects.zones.clusters.nodePools.list",
+                                            "id": "container.projects.zones.clusters.nodePools.get",
                                             "parameterOrder": [
                                                 "projectId",
                                                 "zone",
-                                                "clusterId"
+                                                "clusterId",
+                                                "nodePoolId"
                                             ],
                                             "parameters": {
                                                 "projectId": {
@@ -840,6 +841,234 @@
                                                     "location": "path",
                                                     "required": true,
                                                     "type": "string"
+                                                },
+                                                "nodePoolId": {
+                                                    "description": "The name of the node pool.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}",
+                                            "response": {
+                                                "$ref": "NodePool"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "update": {
+                                            "description": "Updates the version and/or image type of a specific node pool.",
+                                            "httpMethod": "POST",
+                                            "id": "container.projects.zones.clusters.nodePools.update",
+                                            "parameterOrder": [
+                                                "projectId",
+                                                "zone",
+                                                "clusterId",
+                                                "nodePoolId"
+                                            ],
+                                            "parameters": {
+                                                "projectId": {
+                                                    "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "zone": {
+                                                    "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "clusterId": {
+                                                    "description": "The name of the cluster to upgrade.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "nodePoolId": {
+                                                    "description": "The name of the node pool to upgrade.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/update",
+                                            "request": {
+                                                "$ref": "UpdateNodePoolRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "setSize": {
+                                            "description": "Sets the size of a specific node pool.",
+                                            "httpMethod": "POST",
+                                            "id": "container.projects.zones.clusters.nodePools.setSize",
+                                            "parameterOrder": [
+                                                "projectId",
+                                                "zone",
+                                                "clusterId",
+                                                "nodePoolId"
+                                            ],
+                                            "parameters": {
+                                                "zone": {
+                                                    "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "clusterId": {
+                                                    "description": "The name of the cluster to update.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "nodePoolId": {
+                                                    "description": "The name of the node pool to update.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "projectId": {
+                                                    "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setSize",
+                                            "request": {
+                                                "$ref": "SetNodePoolSizeRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "setManagement": {
+                                            "description": "Sets the NodeManagement options for a node pool.",
+                                            "httpMethod": "POST",
+                                            "id": "container.projects.zones.clusters.nodePools.setManagement",
+                                            "parameterOrder": [
+                                                "projectId",
+                                                "zone",
+                                                "clusterId",
+                                                "nodePoolId"
+                                            ],
+                                            "parameters": {
+                                                "clusterId": {
+                                                    "description": "The name of the cluster to update.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "nodePoolId": {
+                                                    "description": "The name of the node pool to update.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "projectId": {
+                                                    "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "zone": {
+                                                    "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setManagement",
+                                            "request": {
+                                                "$ref": "SetNodePoolManagementRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "delete": {
+                                            "description": "Deletes a node pool from a cluster.",
+                                            "httpMethod": "DELETE",
+                                            "id": "container.projects.zones.clusters.nodePools.delete",
+                                            "parameterOrder": [
+                                                "projectId",
+                                                "zone",
+                                                "clusterId",
+                                                "nodePoolId"
+                                            ],
+                                            "parameters": {
+                                                "nodePoolId": {
+                                                    "description": "The name of the node pool to delete.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "projectId": {
+                                                    "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "zone": {
+                                                    "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "clusterId": {
+                                                    "description": "The name of the cluster.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}",
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "list": {
+                                            "description": "Lists the node pools for a cluster.",
+                                            "httpMethod": "GET",
+                                            "id": "container.projects.zones.clusters.nodePools.list",
+                                            "parameterOrder": [
+                                                "projectId",
+                                                "zone",
+                                                "clusterId"
+                                            ],
+                                            "parameters": {
+                                                "zone": {
+                                                    "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "clusterId": {
+                                                    "description": "The name of the cluster.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "projectId": {
+                                                    "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
                                                 }
                                             },
                                             "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools",
@@ -983,235 +1212,6 @@
                                             "scopes": [
                                                 "https://www.googleapis.com/auth/cloud-platform"
                                             ]
-                                        },
-                                        "get": {
-                                            "description": "Retrieves the node pool requested.",
-                                            "httpMethod": "GET",
-                                            "id": "container.projects.zones.clusters.nodePools.get",
-                                            "parameterOrder": [
-                                                "projectId",
-                                                "zone",
-                                                "clusterId",
-                                                "nodePoolId"
-                                            ],
-                                            "parameters": {
-                                                "projectId": {
-                                                    "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "zone": {
-                                                    "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "clusterId": {
-                                                    "description": "The name of the cluster.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "nodePoolId": {
-                                                    "description": "The name of the node pool.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}",
-                                            "response": {
-                                                "$ref": "NodePool"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform"
-                                            ]
-                                        },
-                                        "update": {
-                                            "description": "Updates the version and/or image type of a specific node pool.",
-                                            "httpMethod": "POST",
-                                            "id": "container.projects.zones.clusters.nodePools.update",
-                                            "parameterOrder": [
-                                                "projectId",
-                                                "zone",
-                                                "clusterId",
-                                                "nodePoolId"
-                                            ],
-                                            "parameters": {
-                                                "projectId": {
-                                                    "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "zone": {
-                                                    "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "clusterId": {
-                                                    "description": "The name of the cluster to upgrade.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "nodePoolId": {
-                                                    "description": "The name of the node pool to upgrade.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/update",
-                                            "request": {
-                                                "$ref": "UpdateNodePoolRequest"
-                                            },
-                                            "response": {
-                                                "$ref": "Operation"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform"
-                                            ]
-                                        },
-                                        "setManagement": {
-                                            "description": "Sets the NodeManagement options for a node pool.",
-                                            "httpMethod": "POST",
-                                            "id": "container.projects.zones.clusters.nodePools.setManagement",
-                                            "parameterOrder": [
-                                                "projectId",
-                                                "zone",
-                                                "clusterId",
-                                                "nodePoolId"
-                                            ],
-                                            "parameters": {
-                                                "projectId": {
-                                                    "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "zone": {
-                                                    "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "clusterId": {
-                                                    "description": "The name of the cluster to update.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "nodePoolId": {
-                                                    "description": "The name of the node pool to update.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setManagement",
-                                            "request": {
-                                                "$ref": "SetNodePoolManagementRequest"
-                                            },
-                                            "response": {
-                                                "$ref": "Operation"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform"
-                                            ]
-                                        },
-                                        "setSize": {
-                                            "description": "Sets the size of a specific node pool.",
-                                            "httpMethod": "POST",
-                                            "id": "container.projects.zones.clusters.nodePools.setSize",
-                                            "parameterOrder": [
-                                                "projectId",
-                                                "zone",
-                                                "clusterId",
-                                                "nodePoolId"
-                                            ],
-                                            "parameters": {
-                                                "projectId": {
-                                                    "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "zone": {
-                                                    "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "clusterId": {
-                                                    "description": "The name of the cluster to update.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "nodePoolId": {
-                                                    "description": "The name of the node pool to update.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setSize",
-                                            "request": {
-                                                "$ref": "SetNodePoolSizeRequest"
-                                            },
-                                            "response": {
-                                                "$ref": "Operation"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform"
-                                            ]
-                                        },
-                                        "delete": {
-                                            "description": "Deletes a node pool from a cluster.",
-                                            "httpMethod": "DELETE",
-                                            "id": "container.projects.zones.clusters.nodePools.delete",
-                                            "parameterOrder": [
-                                                "projectId",
-                                                "zone",
-                                                "clusterId",
-                                                "nodePoolId"
-                                            ],
-                                            "parameters": {
-                                                "projectId": {
-                                                    "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "zone": {
-                                                    "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "clusterId": {
-                                                    "description": "The name of the cluster.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "nodePoolId": {
-                                                    "description": "The name of the node pool to delete.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}",
-                                            "response": {
-                                                "$ref": "Operation"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform"
-                                            ]
                                         }
                                     }
                                 }
@@ -1219,46 +1219,6 @@
                         },
                         "operations": {
                             "methods": {
-                                "cancel": {
-                                    "description": "Cancels the specified operation.",
-                                    "httpMethod": "POST",
-                                    "id": "container.projects.zones.operations.cancel",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "zone",
-                                        "operationId"
-                                    ],
-                                    "parameters": {
-                                        "operationId": {
-                                            "description": "The server-assigned `name` of the operation.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "projectId": {
-                                            "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "zone": {
-                                            "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the operation resides.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/projects/{projectId}/zones/{zone}/operations/{operationId}:cancel",
-                                    "request": {
-                                        "$ref": "CancelOperationRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "Empty"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
                                 "get": {
                                     "description": "Gets the specified operation.",
                                     "httpMethod": "GET",
@@ -1305,14 +1265,14 @@
                                         "zone"
                                     ],
                                     "parameters": {
-                                        "projectId": {
-                                            "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
+                                        "zone": {
+                                            "description": "The name of the Google Compute Engine [zone](/compute/docs/zones#available)\nto return operations for, or `-` for all zones.",
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
                                         },
-                                        "zone": {
-                                            "description": "The name of the Google Compute Engine [zone](/compute/docs/zones#available)\nto return operations for, or `-` for all zones.",
+                                        "projectId": {
+                                            "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
@@ -1325,6 +1285,46 @@
                                     "scopes": [
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
+                                },
+                                "cancel": {
+                                    "description": "Cancels the specified operation.",
+                                    "httpMethod": "POST",
+                                    "id": "container.projects.zones.operations.cancel",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "zone",
+                                        "operationId"
+                                    ],
+                                    "parameters": {
+                                        "operationId": {
+                                            "description": "The server-assigned `name` of the operation.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "projectId": {
+                                            "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "zone": {
+                                            "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the operation resides.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/projects/{projectId}/zones/{zone}/operations/{operationId}:cancel",
+                                    "request": {
+                                        "$ref": "CancelOperationRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
                                 }
                             }
                         }
@@ -1333,368 +1333,9 @@
             }
         }
     },
-    "revision": "20170915",
+    "revision": "20170929",
     "rootUrl": "https://container.googleapis.com/",
     "schemas": {
-        "SetLocationsRequest": {
-            "description": "SetLocationsRequest sets the locations of the cluster.",
-            "id": "SetLocationsRequest",
-            "properties": {
-                "locations": {
-                    "description": "The desired list of Google Compute Engine\n[locations](/compute/docs/zones#available) in which the cluster's nodes\nshould be located. Changing the locations a cluster is in will result\nin nodes being either created or removed from the cluster, depending on\nwhether locations are being added or removed.\n\nThis list must always include the cluster's primary zone.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "SetNodePoolSizeRequest": {
-            "description": "SetNodePoolSizeRequest sets the size a node\npool.",
-            "id": "SetNodePoolSizeRequest",
-            "properties": {
-                "nodeCount": {
-                    "description": "The desired node count for the pool.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "NetworkPolicyConfig": {
-            "description": "Configuration for NetworkPolicy. This only tracks whether the addon\nis enabled or not on the Master, it does not track whether network policy\nis enabled for the nodes.",
-            "id": "NetworkPolicyConfig",
-            "properties": {
-                "disabled": {
-                    "description": "Whether NetworkPolicy is enabled for this cluster.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "UpdateClusterRequest": {
-            "description": "UpdateClusterRequest updates the settings of a cluster.",
-            "id": "UpdateClusterRequest",
-            "properties": {
-                "update": {
-                    "$ref": "ClusterUpdate",
-                    "description": "A description of the update."
-                }
-            },
-            "type": "object"
-        },
-        "Cluster": {
-            "description": "A Google Container Engine cluster.",
-            "id": "Cluster",
-            "properties": {
-                "servicesIpv4Cidr": {
-                    "description": "[Output only] The IP address range of the Kubernetes services in\nthis cluster, in\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `1.2.3.4/29`). Service addresses are\ntypically put in the last `/16` from the container CIDR.",
-                    "type": "string"
-                },
-                "networkPolicy": {
-                    "$ref": "NetworkPolicy",
-                    "description": "Configuration options for the NetworkPolicy feature."
-                },
-                "enableKubernetesAlpha": {
-                    "description": "Kubernetes alpha features are enabled on this cluster. This includes alpha\nAPI groups (e.g. v1alpha1) and features that may not be production ready in\nthe kubernetes version of the master and nodes.\nThe cluster has no SLA for uptime and master/node upgrades are disabled.\nAlpha enabled clusters are automatically deleted thirty days after\ncreation.",
-                    "type": "boolean"
-                },
-                "description": {
-                    "description": "An optional description of this cluster.",
-                    "type": "string"
-                },
-                "currentNodeCount": {
-                    "description": "[Output only] The number of nodes currently in the cluster.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "monitoringService": {
-                    "description": "The monitoring service the cluster should use to write metrics.\nCurrently available options:\n\n* `monitoring.googleapis.com` - the Google Cloud Monitoring service.\n* `none` - no metrics will be exported from the cluster.\n* if left as an empty string, `monitoring.googleapis.com` will be used.",
-                    "type": "string"
-                },
-                "network": {
-                    "description": "The name of the Google Compute Engine\n[network](/compute/docs/networks-and-firewalls#networks) to which the\ncluster is connected. If left unspecified, the `default` network\nwill be used.",
-                    "type": "string"
-                },
-                "labelFingerprint": {
-                    "description": "The fingerprint of the set of labels for this cluster.",
-                    "type": "string"
-                },
-                "zone": {
-                    "description": "[Output only] The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
-                    "type": "string"
-                },
-                "loggingService": {
-                    "description": "The logging service the cluster should use to write logs.\nCurrently available options:\n\n* `logging.googleapis.com` - the Google Cloud Logging service.\n* `none` - no logs will be exported from the cluster.\n* if left as an empty string,`logging.googleapis.com` will be used.",
-                    "type": "string"
-                },
-                "nodeIpv4CidrSize": {
-                    "description": "[Output only] The size of the address space on each node for hosting\ncontainers. This is provisioned from within the `container_ipv4_cidr`\nrange.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "expireTime": {
-                    "description": "[Output only] The time the cluster will be automatically\ndeleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
-                    "type": "string"
-                },
-                "masterAuthorizedNetworksConfig": {
-                    "$ref": "MasterAuthorizedNetworksConfig",
-                    "description": "Master authorized networks is a Beta feature.\nThe configuration options for master authorized networks feature."
-                },
-                "statusMessage": {
-                    "description": "[Output only] Additional information about the current status of this\ncluster, if available.",
-                    "type": "string"
-                },
-                "masterAuth": {
-                    "$ref": "MasterAuth",
-                    "description": "The authentication information for accessing the master endpoint."
-                },
-                "currentMasterVersion": {
-                    "description": "[Output only] The current software version of the master endpoint.",
-                    "type": "string"
-                },
-                "nodeConfig": {
-                    "$ref": "NodeConfig",
-                    "description": "Parameters used in creating the cluster's nodes.\nSee `nodeConfig` for the description of its properties.\nFor requests, this field should only be used in lieu of a\n\"node_pool\" object, since this configuration (along with the\n\"initial_node_count\") will be used to create a \"NodePool\" object with an\nauto-generated name. Do not use this and a node_pool at the same time.\nFor responses, this field will be populated with the node configuration of\nthe first node pool.\n\nIf unspecified, the defaults are used."
-                },
-                "addonsConfig": {
-                    "$ref": "AddonsConfig",
-                    "description": "Configurations for the various addons available to run in the cluster."
-                },
-                "status": {
-                    "description": "[Output only] The current status of this cluster.",
-                    "enum": [
-                        "STATUS_UNSPECIFIED",
-                        "PROVISIONING",
-                        "RUNNING",
-                        "RECONCILING",
-                        "STOPPING",
-                        "ERROR"
-                    ],
-                    "enumDescriptions": [
-                        "Not set.",
-                        "The PROVISIONING state indicates the cluster is being created.",
-                        "The RUNNING state indicates the cluster has been created and is fully\nusable.",
-                        "The RECONCILING state indicates that some work is actively being done on\nthe cluster, such as upgrading the master or node software. Details can\nbe found in the `statusMessage` field.",
-                        "The STOPPING state indicates the cluster is being deleted.",
-                        "The ERROR state indicates the cluster may be unusable. Details\ncan be found in the `statusMessage` field."
-                    ],
-                    "type": "string"
-                },
-                "subnetwork": {
-                    "description": "The name of the Google Compute Engine\n[subnetwork](/compute/docs/subnetworks) to which the\ncluster is connected.",
-                    "type": "string"
-                },
-                "currentNodeVersion": {
-                    "description": "[Output only] The current version of the node software components.\nIf they are currently at multiple versions because they're in the process\nof being upgraded, this reflects the minimum version of all nodes.",
-                    "type": "string"
-                },
-                "maintenancePolicy": {
-                    "$ref": "MaintenancePolicy",
-                    "description": "Configure the maintenance policy for this cluster."
-                },
-                "resourceLabels": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "The resource labels for the cluster to use to annotate any related\nGoogle Compute Engine resources.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The name of this cluster. The name must be unique within this project\nand zone, and can be up to 40 characters with the following restrictions:\n\n* Lowercase letters, numbers, and hyphens only.\n* Must start with a letter.\n* Must end with a number or a letter.",
-                    "type": "string"
-                },
-                "initialClusterVersion": {
-                    "description": "The initial Kubernetes version for this cluster.  Valid versions are those\nfound in validMasterVersions returned by getServerConfig.  The version can\nbe upgraded over time; such upgrades are reflected in\ncurrentMasterVersion and currentNodeVersion.",
-                    "type": "string"
-                },
-                "ipAllocationPolicy": {
-                    "$ref": "IPAllocationPolicy",
-                    "description": "Configuration for cluster IP allocation."
-                },
-                "legacyAbac": {
-                    "$ref": "LegacyAbac",
-                    "description": "Configuration for the legacy ABAC authorization mode."
-                },
-                "endpoint": {
-                    "description": "[Output only] The IP address of this cluster's master endpoint.\nThe endpoint can be accessed from the internet at\n`https://username:password@endpoint/`.\n\nSee the `masterAuth` property of this resource for username and\npassword information.",
-                    "type": "string"
-                },
-                "createTime": {
-                    "description": "[Output only] The time the cluster was created, in\n[RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
-                    "type": "string"
-                },
-                "clusterIpv4Cidr": {
-                    "description": "The IP address range of the container pods in this cluster, in\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`). Leave blank to have\none automatically chosen or specify a `/14` block in `10.0.0.0/8`.",
-                    "type": "string"
-                },
-                "initialNodeCount": {
-                    "description": "The number of nodes to create in this cluster. You must ensure that your\nCompute Engine <a href=\"/compute/docs/resource-quotas\">resource quota</a>\nis sufficient for this number of instances. You must also have available\nfirewall and routes quota.\nFor requests, this field should only be used in lieu of a\n\"node_pool\" object, since this configuration (along with the\n\"node_config\") will be used to create a \"NodePool\" object with an\nauto-generated name. Do not use this and a node_pool at the same time.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "locations": {
-                    "description": "The list of Google Compute Engine\n[locations](/compute/docs/zones#available) in which the cluster's nodes\nshould be located.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "nodePools": {
-                    "description": "The node pools associated with this cluster.\nThis field should not be set if \"node_config\" or \"initial_node_count\" are\nspecified.",
-                    "items": {
-                        "$ref": "NodePool"
-                    },
-                    "type": "array"
-                },
-                "selfLink": {
-                    "description": "[Output only] Server-defined URL for the resource.",
-                    "type": "string"
-                },
-                "instanceGroupUrls": {
-                    "description": "[Output only] The resource URLs of [instance\ngroups](/compute/docs/instance-groups/) associated with this\ncluster.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "CreateNodePoolRequest": {
-            "description": "CreateNodePoolRequest creates a node pool for a cluster.",
-            "id": "CreateNodePoolRequest",
-            "properties": {
-                "nodePool": {
-                    "$ref": "NodePool",
-                    "description": "The node pool to create."
-                }
-            },
-            "type": "object"
-        },
-        "MasterAuth": {
-            "description": "The authentication information for accessing the master endpoint.\nAuthentication can be done using HTTP basic auth or using client\ncertificates.",
-            "id": "MasterAuth",
-            "properties": {
-                "clientCertificate": {
-                    "description": "[Output only] Base64-encoded public certificate used by clients to\nauthenticate to the cluster endpoint.",
-                    "type": "string"
-                },
-                "username": {
-                    "description": "The username to use for HTTP basic authentication to the master endpoint.\nFor clusters v1.6.0 and later, you can disable basic authentication by\nproviding an empty username.",
-                    "type": "string"
-                },
-                "password": {
-                    "description": "The password to use for HTTP basic authentication to the master endpoint.\nBecause the master endpoint is open to the Internet, you should create a\nstrong password.  If a password is provided for cluster creation, username\nmust be non-empty.",
-                    "type": "string"
-                },
-                "clientCertificateConfig": {
-                    "$ref": "ClientCertificateConfig",
-                    "description": "Configuration for client certificate authentication on the cluster.  If no\nconfiguration is specified, a client certificate is issued."
-                },
-                "clientKey": {
-                    "description": "[Output only] Base64-encoded private key used by clients to authenticate\nto the cluster endpoint.",
-                    "type": "string"
-                },
-                "clusterCaCertificate": {
-                    "description": "[Output only] Base64-encoded public certificate that is the root of\ntrust for the cluster.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "DailyMaintenanceWindow": {
-            "description": "Time window specified for daily maintenance operations.",
-            "id": "DailyMaintenanceWindow",
-            "properties": {
-                "duration": {
-                    "description": "[Output only] Duration of the time window, automatically chosen to be\nsmallest possible in the given scenario.\nDuration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)\nformat \"PTnHnMnS\".",
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "Time within the maintenance window to start the maintenance operations.\nTime format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)\nformat \"HH:MM”, where HH : [00-23] and MM : [00-59] GMT.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "MaintenancePolicy": {
-            "description": "MaintenancePolicy defines the maintenance policy to be used for the cluster.",
-            "id": "MaintenancePolicy",
-            "properties": {
-                "window": {
-                    "$ref": "MaintenanceWindow",
-                    "description": "Specifies the maintenance window in which maintenance may be performed."
-                }
-            },
-            "type": "object"
-        },
-        "ClientCertificateConfig": {
-            "description": "Configuration for client certificates on the cluster.",
-            "id": "ClientCertificateConfig",
-            "properties": {
-                "issueClientCertificate": {
-                    "description": "Issue a client certificate.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "SetLoggingServiceRequest": {
-            "description": "SetLoggingServiceRequest sets the logging service of a cluster.",
-            "id": "SetLoggingServiceRequest",
-            "properties": {
-                "loggingService": {
-                    "description": "The logging service the cluster should use to write metrics.\nCurrently available options:\n\n* \"logging.googleapis.com\" - the Google Cloud Logging service\n* \"none\" - no metrics will be exported from the cluster",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SetMaintenancePolicyRequest": {
-            "description": "SetMaintenancePolicyRequest sets the maintenance policy for a cluster.",
-            "id": "SetMaintenancePolicyRequest",
-            "properties": {
-                "maintenancePolicy": {
-                    "$ref": "MaintenancePolicy",
-                    "description": "The maintenance policy to be set for the cluster. An empty field\nclears the existing maintenance policy."
-                }
-            },
-            "type": "object"
-        },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
-        "ListNodePoolsResponse": {
-            "description": "ListNodePoolsResponse is the result of ListNodePoolsRequest.",
-            "id": "ListNodePoolsResponse",
-            "properties": {
-                "nodePools": {
-                    "description": "A list of node pools for a cluster.",
-                    "items": {
-                        "$ref": "NodePool"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "CompleteIPRotationRequest": {
-            "description": "CompleteIPRotationRequest moves the cluster master back into single-IP mode.",
-            "id": "CompleteIPRotationRequest",
-            "properties": {},
-            "type": "object"
-        },
-        "StartIPRotationRequest": {
-            "description": "StartIPRotationRequest creates a new IP for the cluster and then performs\na node upgrade on each node pool to point to the new IP.",
-            "id": "StartIPRotationRequest",
-            "properties": {},
-            "type": "object"
-        },
         "NodePool": {
             "description": "NodePool contains the name and configuration for a cluster's node pool.\nNode pools are a set of nodes (i.e. VM's), with a common configuration and\nspecification, under the control of the cluster master. They may have a set\nof Kubernetes labels applied to them, which may be used to reference them\nduring pod scheduling. They may also be resized up or down, to accommodate\nthe workload.",
             "id": "NodePool",
@@ -1768,16 +1409,16 @@
             "description": "SetLabelsRequest sets the Google Cloud Platform labels on a Google Container\nEngine cluster, which will in turn set them for Google Compute Engine\nresources used by that cluster",
             "id": "SetLabelsRequest",
             "properties": {
-                "labelFingerprint": {
-                    "description": "The fingerprint of the previous set of labels for this resource,\nused to detect conflicts. The fingerprint is initially generated by\nContainer Engine and changes after every request to modify or update\nlabels. You must always provide an up-to-date fingerprint hash when\nupdating or changing labels. Make a <code>get()</code> request to the\nresource to get the latest fingerprint.",
-                    "type": "string"
-                },
                 "resourceLabels": {
                     "additionalProperties": {
                         "type": "string"
                     },
                     "description": "The labels to set for that cluster.",
                     "type": "object"
+                },
+                "labelFingerprint": {
+                    "description": "The fingerprint of the previous set of labels for this resource,\nused to detect conflicts. The fingerprint is initially generated by\nContainer Engine and changes after every request to modify or update\nlabels. You must always provide an up-to-date fingerprint hash when\nupdating or changing labels. Make a <code>get()</code> request to the\nresource to get the latest fingerprint.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1822,36 +1463,6 @@
             "description": "This operation resource represents operations that may have happened or are\nhappening on the cluster. All fields are output only.",
             "id": "Operation",
             "properties": {
-                "zone": {
-                    "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the operation\nis taking place.",
-                    "type": "string"
-                },
-                "status": {
-                    "description": "The current status of the operation.",
-                    "enum": [
-                        "STATUS_UNSPECIFIED",
-                        "PENDING",
-                        "RUNNING",
-                        "DONE",
-                        "ABORTING"
-                    ],
-                    "enumDescriptions": [
-                        "Not set.",
-                        "The operation has been created.",
-                        "The operation is currently running.",
-                        "The operation is done, either cancelled or completed.",
-                        "The operation is aborting."
-                    ],
-                    "type": "string"
-                },
-                "statusMessage": {
-                    "description": "If an error has occurred, a textual description of the error.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The server-assigned ID for the operation.",
-                    "type": "string"
-                },
                 "selfLink": {
                     "description": "Server-defined URL for the resource.",
                     "type": "string"
@@ -1913,6 +1524,36 @@
                 "startTime": {
                     "description": "[Output only] The time the operation started, in\n[RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
                     "type": "string"
+                },
+                "zone": {
+                    "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the operation\nis taking place.",
+                    "type": "string"
+                },
+                "status": {
+                    "description": "The current status of the operation.",
+                    "enum": [
+                        "STATUS_UNSPECIFIED",
+                        "PENDING",
+                        "RUNNING",
+                        "DONE",
+                        "ABORTING"
+                    ],
+                    "enumDescriptions": [
+                        "Not set.",
+                        "The operation has been created.",
+                        "The operation is currently running.",
+                        "The operation is done, either cancelled or completed.",
+                        "The operation is aborting."
+                    ],
+                    "type": "string"
+                },
+                "statusMessage": {
+                    "description": "If an error has occurred, a textual description of the error.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The server-assigned ID for the operation.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1938,6 +1579,10 @@
             "description": "Configuration options for the NetworkPolicy feature.\nhttps://kubernetes.io/docs/concepts/services-networking/networkpolicies/",
             "id": "NetworkPolicy",
             "properties": {
+                "enabled": {
+                    "description": "Whether network policy is enabled on the cluster.",
+                    "type": "boolean"
+                },
                 "provider": {
                     "description": "The selected network policy provider.",
                     "enum": [
@@ -1949,10 +1594,6 @@
                         "Tigera (Calico Felix)."
                     ],
                     "type": "string"
-                },
-                "enabled": {
-                    "description": "Whether network policy is enabled on the cluster.",
-                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -1989,6 +1630,17 @@
             },
             "type": "object"
         },
+        "SetMonitoringServiceRequest": {
+            "description": "SetMonitoringServiceRequest sets the monitoring service of a cluster.",
+            "id": "SetMonitoringServiceRequest",
+            "properties": {
+                "monitoringService": {
+                    "description": "The monitoring service the cluster should use to write metrics.\nCurrently available options:\n\n* \"monitoring.googleapis.com\" - the Google Cloud Monitoring service\n* \"none\" - no metrics will be exported from the cluster",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "CidrBlock": {
             "description": "CidrBlock contains an optional name and one CIDR block.",
             "id": "CidrBlock",
@@ -2004,17 +1656,6 @@
             },
             "type": "object"
         },
-        "SetMonitoringServiceRequest": {
-            "description": "SetMonitoringServiceRequest sets the monitoring service of a cluster.",
-            "id": "SetMonitoringServiceRequest",
-            "properties": {
-                "monitoringService": {
-                    "description": "The monitoring service the cluster should use to write metrics.\nCurrently available options:\n\n* \"monitoring.googleapis.com\" - the Google Cloud Monitoring service\n* \"none\" - no metrics will be exported from the cluster",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "ServerConfig": {
             "description": "Container Engine service configuration.",
             "id": "ServerConfig",
@@ -2127,13 +1768,13 @@
             "description": "AutoUpgradeOptions defines the set of options for the user to control how\nthe Auto Upgrades will proceed.",
             "id": "AutoUpgradeOptions",
             "properties": {
-                "description": {
-                    "description": "[Output only] This field is set when upgrades are about to commence\nwith the description of the upgrade.",
-                    "type": "string"
-                },
                 "autoUpgradeStartTime": {
                     "description": "[Output only] This field is set when upgrades are about to commence\nwith the approximate start time for the upgrades, in\n[RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
                     "type": "string"
+                },
+                "description": {
+                    "description": "[Output only] This field is set when upgrades are about to commence\nwith the description of the upgrade.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2185,11 +1826,6 @@
             "description": "NodePoolAutoscaling contains information required by cluster autoscaler to\nadjust the size of the node pool to the current cluster usage.",
             "id": "NodePoolAutoscaling",
             "properties": {
-                "minNodeCount": {
-                    "description": "Minimum number of nodes in the NodePool. Must be >= 1 and <=\nmax_node_count.",
-                    "format": "int32",
-                    "type": "integer"
-                },
                 "enabled": {
                     "description": "Is autoscaling enabled for this node pool.",
                     "type": "boolean"
@@ -2198,6 +1834,11 @@
                     "description": "Maximum number of nodes in the NodePool. Must be >= min_node_count. There\nhas to enough quota to scale up the cluster.",
                     "format": "int32",
                     "type": "integer"
+                },
+                "minNodeCount": {
+                    "description": "Minimum number of nodes in the NodePool. Must be >= 1 and <=\nmax_node_count.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -2211,26 +1852,87 @@
                     "description": "A description of the update."
                 },
                 "action": {
-                    "description": "The exact form of action to be taken on the master auth",
+                    "description": "The exact form of action to be taken on the master auth.",
                     "enum": [
                         "UNKNOWN",
                         "SET_PASSWORD",
-                        "GENERATE_PASSWORD"
+                        "GENERATE_PASSWORD",
+                        "SET_USERNAME"
                     ],
                     "enumDescriptions": [
-                        "Operation is unknown and will error out",
+                        "Operation is unknown and will error out.",
                         "Set the password to a user generated value.",
-                        "Generate a new password and set it to that."
+                        "Generate a new password and set it to that.",
+                        "Set the username.  If an empty username is provided, basic authentication\nis disabled for the cluster.  If a non-empty username is provided, basic\nauthentication is enabled, with either a provided password or a generated\none."
                     ],
                     "type": "string"
                 }
             },
             "type": "object"
         },
+        "IPAllocationPolicy": {
+            "description": "Configuration for controlling how IPs are allocated in the cluster.",
+            "id": "IPAllocationPolicy",
+            "properties": {
+                "subnetworkName": {
+                    "description": "A custom subnetwork name to be used if `create_subnetwork` is true.  If\nthis field is empty, then an automatic name will be chosen for the new\nsubnetwork.",
+                    "type": "string"
+                },
+                "servicesIpv4CidrBlock": {
+                    "description": "The IP address range of the services IPs in this cluster. If blank, a range\nwill be automatically chosen with the default size.\n\nThis field is only applicable when `use_ip_aliases` is true.\n\nSet to blank to have a range chosen with the default size.\n\nSet to /netmask (e.g. `/14`) to have a range chosen with a specific\nnetmask.\n\nSet to a\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.\n`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range\nto use.",
+                    "type": "string"
+                },
+                "clusterIpv4Cidr": {
+                    "description": "This field is deprecated, use cluster_ipv4_cidr_block.",
+                    "type": "string"
+                },
+                "nodeIpv4Cidr": {
+                    "description": "This field is deprecated, use node_ipv4_cidr_block.",
+                    "type": "string"
+                },
+                "clusterSecondaryRangeName": {
+                    "description": "The name of the secondary range to be used for the cluster CIDR\nblock.  The secondary range will be used for pod IP\naddresses. This must be an existing secondary range associated\nwith the cluster subnetwork.\n\nThis field is only applicable with use_ip_aliases is true and\ncreate_subnetwork is false.",
+                    "type": "string"
+                },
+                "clusterIpv4CidrBlock": {
+                    "description": "The IP address range for the cluster pod IPs. If this field is set, then\n`cluster.cluster_ipv4_cidr` must be left blank.\n\nThis field is only applicable when `use_ip_aliases` is true.\n\nSet to blank to have a range chosen with the default size.\n\nSet to /netmask (e.g. `/14`) to have a range chosen with a specific\nnetmask.\n\nSet to a\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.\n`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range\nto use.",
+                    "type": "string"
+                },
+                "nodeIpv4CidrBlock": {
+                    "description": "The IP address range of the instance IPs in this cluster.\n\nThis is applicable only if `create_subnetwork` is true.\n\nSet to blank to have a range chosen with the default size.\n\nSet to /netmask (e.g. `/14`) to have a range chosen with a specific\nnetmask.\n\nSet to a\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.\n`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range\nto use.",
+                    "type": "string"
+                },
+                "servicesIpv4Cidr": {
+                    "description": "This field is deprecated, use services_ipv4_cidr_block.",
+                    "type": "string"
+                },
+                "createSubnetwork": {
+                    "description": "Whether a new subnetwork will be created automatically for the cluster.\n\nThis field is only applicable when `use_ip_aliases` is true.",
+                    "type": "boolean"
+                },
+                "useIpAliases": {
+                    "description": "Whether alias IPs will be used for pod IPs in the cluster.",
+                    "type": "boolean"
+                },
+                "servicesSecondaryRangeName": {
+                    "description": "The name of the secondary range to be used as for the services\nCIDR block.  The secondary range will be used for service\nClusterIPs. This must be an existing secondary range associated\nwith the cluster subnetwork.\n\nThis field is only applicable with use_ip_aliases is true and\ncreate_subnetwork is false.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ClusterUpdate": {
             "description": "ClusterUpdate describes an update to the cluster. Exactly one update can\nbe applied to a cluster with each request, so at most one field can be\nprovided.",
             "id": "ClusterUpdate",
             "properties": {
+                "desiredMasterAuthorizedNetworksConfig": {
+                    "$ref": "MasterAuthorizedNetworksConfig",
+                    "description": "Master authorized networks is a Beta feature.\nThe desired configuration options for master authorized networks feature."
+                },
+                "desiredNodePoolAutoscaling": {
+                    "$ref": "NodePoolAutoscaling",
+                    "description": "Autoscaler configuration for the node pool specified in\ndesired_node_pool_id. If there is only one pool in the\ncluster and desired_node_pool_id is not provided then\nthe change applies to that single node pool."
+                },
                 "desiredLocations": {
                     "description": "The desired list of Google Compute Engine\n[locations](/compute/docs/zones#available) in which the cluster's nodes\nshould be located. Changing the locations a cluster is in will result\nin nodes being either created or removed from the cluster, depending on\nwhether locations are being added or removed.\n\nThis list must always include the cluster's primary zone.",
                     "items": {
@@ -2238,10 +1940,6 @@
                     },
                     "type": "array"
                 },
-                "desiredNodePoolAutoscaling": {
-                    "$ref": "NodePoolAutoscaling",
-                    "description": "Autoscaler configuration for the node pool specified in\ndesired_node_pool_id. If there is only one pool in the\ncluster and desired_node_pool_id is not provided then\nthe change applies to that single node pool."
-                },
                 "desiredMonitoringService": {
                     "description": "The monitoring service the cluster should use to write metrics.\nCurrently available options:\n\n* \"monitoring.googleapis.com\" - the Google Cloud Monitoring service\n* \"none\" - no metrics will be exported from the cluster",
                     "type": "string"
@@ -2265,61 +1963,6 @@
                 "desiredMasterVersion": {
                     "description": "The Kubernetes version to change the master to. The only valid value is the\nlatest supported version. Use \"-\" to have the server automatically select\nthe latest version.",
                     "type": "string"
-                },
-                "desiredMasterAuthorizedNetworksConfig": {
-                    "$ref": "MasterAuthorizedNetworksConfig",
-                    "description": "Master authorized networks is a Beta feature.\nThe desired configuration options for master authorized networks feature."
-                }
-            },
-            "type": "object"
-        },
-        "IPAllocationPolicy": {
-            "description": "Configuration for controlling how IPs are allocated in the cluster.",
-            "id": "IPAllocationPolicy",
-            "properties": {
-                "nodeIpv4CidrBlock": {
-                    "description": "The IP address range of the instance IPs in this cluster.\n\nThis is applicable only if `create_subnetwork` is true.\n\nSet to blank to have a range chosen with the default size.\n\nSet to /netmask (e.g. `/14`) to have a range chosen with a specific\nnetmask.\n\nSet to a\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.\n`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range\nto use.",
-                    "type": "string"
-                },
-                "servicesIpv4Cidr": {
-                    "description": "This field is deprecated, use services_ipv4_cidr_block.",
-                    "type": "string"
-                },
-                "createSubnetwork": {
-                    "description": "Whether a new subnetwork will be created automatically for the cluster.\n\nThis field is only applicable when `use_ip_aliases` is true.",
-                    "type": "boolean"
-                },
-                "useIpAliases": {
-                    "description": "Whether alias IPs will be used for pod IPs in the cluster.",
-                    "type": "boolean"
-                },
-                "servicesSecondaryRangeName": {
-                    "description": "The name of the secondary range to be used as for the services\nCIDR block.  The secondary range will be used for service\nClusterIPs. This must be an existing secondary range associated\nwith the cluster subnetwork.\n\nThis field is only applicable with use_ip_aliases is true and\ncreate_subnetwork is false.",
-                    "type": "string"
-                },
-                "subnetworkName": {
-                    "description": "A custom subnetwork name to be used if `create_subnetwork` is true.  If\nthis field is empty, then an automatic name will be chosen for the new\nsubnetwork.",
-                    "type": "string"
-                },
-                "servicesIpv4CidrBlock": {
-                    "description": "The IP address range of the services IPs in this cluster. If blank, a range\nwill be automatically chosen with the default size.\n\nThis field is only applicable when `use_ip_aliases` is true.\n\nSet to blank to have a range chosen with the default size.\n\nSet to /netmask (e.g. `/14`) to have a range chosen with a specific\nnetmask.\n\nSet to a\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.\n`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range\nto use.",
-                    "type": "string"
-                },
-                "clusterIpv4Cidr": {
-                    "description": "This field is deprecated, use cluster_ipv4_cidr_block.",
-                    "type": "string"
-                },
-                "nodeIpv4Cidr": {
-                    "description": "This field is deprecated, use node_ipv4_cidr_block.",
-                    "type": "string"
-                },
-                "clusterSecondaryRangeName": {
-                    "description": "The name of the secondary range to be used for the cluster CIDR\nblock.  The secondary range will be used for pod IP\naddresses. This must be an existing secondary range associated\nwith the cluster subnetwork.\n\nThis field is only applicable with use_ip_aliases is true and\ncreate_subnetwork is false.",
-                    "type": "string"
-                },
-                "clusterIpv4CidrBlock": {
-                    "description": "The IP address range for the cluster pod IPs. If this field is set, then\n`cluster.cluster_ipv4_cidr` must be left blank.\n\nThis field is only applicable when `use_ip_aliases` is true.\n\nSet to blank to have a range chosen with the default size.\n\nSet to /netmask (e.g. `/14`) to have a range chosen with a specific\nnetmask.\n\nSet to a\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.\n`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range\nto use.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2335,6 +1978,17 @@
             },
             "type": "object"
         },
+        "SetNodePoolManagementRequest": {
+            "description": "SetNodePoolManagementRequest sets the node management properties of a node\npool.",
+            "id": "SetNodePoolManagementRequest",
+            "properties": {
+                "management": {
+                    "$ref": "NodeManagement",
+                    "description": "NodeManagement configuration for the node pool."
+                }
+            },
+            "type": "object"
+        },
         "MasterAuthorizedNetworksConfig": {
             "description": "Master authorized networks is a Beta feature.\nConfiguration options for the master authorized networks feature. Enabled\nmaster authorized networks will disallow all external traffic to access\nKubernetes master through HTTPS except traffic from the given CIDR blocks,\nGoogle Compute Engine Public IPs and Google Prod IPs.",
             "id": "MasterAuthorizedNetworksConfig",
@@ -2353,17 +2007,6 @@
             },
             "type": "object"
         },
-        "SetNodePoolManagementRequest": {
-            "description": "SetNodePoolManagementRequest sets the node management properties of a node\npool.",
-            "id": "SetNodePoolManagementRequest",
-            "properties": {
-                "management": {
-                    "$ref": "NodeManagement",
-                    "description": "NodeManagement configuration for the node pool."
-                }
-            },
-            "type": "object"
-        },
         "SetNodePoolAutoscalingRequest": {
             "description": "SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool.",
             "id": "SetNodePoolAutoscalingRequest",
@@ -2386,13 +2029,17 @@
             },
             "type": "object"
         },
-        "LegacyAbac": {
-            "description": "Configuration for the legacy Attribute Based Access Control authorization\nmode.",
-            "id": "LegacyAbac",
+        "UpdateNodePoolRequest": {
+            "description": "UpdateNodePoolRequests update a node pool's image and/or version.",
+            "id": "UpdateNodePoolRequest",
             "properties": {
-                "enabled": {
-                    "description": "Whether the ABAC authorizer is enabled for this cluster. When enabled,\nidentities in the system, including service accounts, nodes, and\ncontrollers, will have statically granted permissions beyond those\nprovided by the RBAC configuration or IAM.",
-                    "type": "boolean"
+                "nodeVersion": {
+                    "description": "The Kubernetes version to change the nodes to (typically an\nupgrade). Use `-` to upgrade to the latest version supported by\nthe server.",
+                    "type": "string"
+                },
+                "imageType": {
+                    "description": "The desired image type for the node pool.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2413,17 +2060,13 @@
             },
             "type": "object"
         },
-        "UpdateNodePoolRequest": {
-            "description": "UpdateNodePoolRequests update a node pool's image and/or version.",
-            "id": "UpdateNodePoolRequest",
+        "LegacyAbac": {
+            "description": "Configuration for the legacy Attribute Based Access Control authorization\nmode.",
+            "id": "LegacyAbac",
             "properties": {
-                "nodeVersion": {
-                    "description": "The Kubernetes version to change the nodes to (typically an\nupgrade). Use `-` to upgrade to the latest version supported by\nthe server.",
-                    "type": "string"
-                },
-                "imageType": {
-                    "description": "The desired image type for the node pool.",
-                    "type": "string"
+                "enabled": {
+                    "description": "Whether the ABAC authorizer is enabled for this cluster. When enabled,\nidentities in the system, including service accounts, nodes, and\ncontrollers, will have statically granted permissions beyond those\nprovided by the RBAC configuration or IAM.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -2472,6 +2115,365 @@
                 }
             },
             "type": "object"
+        },
+        "SetLocationsRequest": {
+            "description": "SetLocationsRequest sets the locations of the cluster.",
+            "id": "SetLocationsRequest",
+            "properties": {
+                "locations": {
+                    "description": "The desired list of Google Compute Engine\n[locations](/compute/docs/zones#available) in which the cluster's nodes\nshould be located. Changing the locations a cluster is in will result\nin nodes being either created or removed from the cluster, depending on\nwhether locations are being added or removed.\n\nThis list must always include the cluster's primary zone.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SetNodePoolSizeRequest": {
+            "description": "SetNodePoolSizeRequest sets the size a node\npool.",
+            "id": "SetNodePoolSizeRequest",
+            "properties": {
+                "nodeCount": {
+                    "description": "The desired node count for the pool.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "NetworkPolicyConfig": {
+            "description": "Configuration for NetworkPolicy. This only tracks whether the addon\nis enabled or not on the Master, it does not track whether network policy\nis enabled for the nodes.",
+            "id": "NetworkPolicyConfig",
+            "properties": {
+                "disabled": {
+                    "description": "Whether NetworkPolicy is enabled for this cluster.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "UpdateClusterRequest": {
+            "description": "UpdateClusterRequest updates the settings of a cluster.",
+            "id": "UpdateClusterRequest",
+            "properties": {
+                "update": {
+                    "$ref": "ClusterUpdate",
+                    "description": "A description of the update."
+                }
+            },
+            "type": "object"
+        },
+        "Cluster": {
+            "description": "A Google Container Engine cluster.",
+            "id": "Cluster",
+            "properties": {
+                "currentNodeCount": {
+                    "description": "[Output only] The number of nodes currently in the cluster.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "monitoringService": {
+                    "description": "The monitoring service the cluster should use to write metrics.\nCurrently available options:\n\n* `monitoring.googleapis.com` - the Google Cloud Monitoring service.\n* `none` - no metrics will be exported from the cluster.\n* if left as an empty string, `monitoring.googleapis.com` will be used.",
+                    "type": "string"
+                },
+                "network": {
+                    "description": "The name of the Google Compute Engine\n[network](/compute/docs/networks-and-firewalls#networks) to which the\ncluster is connected. If left unspecified, the `default` network\nwill be used.",
+                    "type": "string"
+                },
+                "labelFingerprint": {
+                    "description": "The fingerprint of the set of labels for this cluster.",
+                    "type": "string"
+                },
+                "zone": {
+                    "description": "[Output only] The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.",
+                    "type": "string"
+                },
+                "loggingService": {
+                    "description": "The logging service the cluster should use to write logs.\nCurrently available options:\n\n* `logging.googleapis.com` - the Google Cloud Logging service.\n* `none` - no logs will be exported from the cluster.\n* if left as an empty string,`logging.googleapis.com` will be used.",
+                    "type": "string"
+                },
+                "nodeIpv4CidrSize": {
+                    "description": "[Output only] The size of the address space on each node for hosting\ncontainers. This is provisioned from within the `container_ipv4_cidr`\nrange.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "expireTime": {
+                    "description": "[Output only] The time the cluster will be automatically\ndeleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
+                    "type": "string"
+                },
+                "masterAuthorizedNetworksConfig": {
+                    "$ref": "MasterAuthorizedNetworksConfig",
+                    "description": "Master authorized networks is a Beta feature.\nThe configuration options for master authorized networks feature."
+                },
+                "statusMessage": {
+                    "description": "[Output only] Additional information about the current status of this\ncluster, if available.",
+                    "type": "string"
+                },
+                "masterAuth": {
+                    "$ref": "MasterAuth",
+                    "description": "The authentication information for accessing the master endpoint."
+                },
+                "currentMasterVersion": {
+                    "description": "[Output only] The current software version of the master endpoint.",
+                    "type": "string"
+                },
+                "nodeConfig": {
+                    "$ref": "NodeConfig",
+                    "description": "Parameters used in creating the cluster's nodes.\nSee `nodeConfig` for the description of its properties.\nFor requests, this field should only be used in lieu of a\n\"node_pool\" object, since this configuration (along with the\n\"initial_node_count\") will be used to create a \"NodePool\" object with an\nauto-generated name. Do not use this and a node_pool at the same time.\nFor responses, this field will be populated with the node configuration of\nthe first node pool.\n\nIf unspecified, the defaults are used."
+                },
+                "addonsConfig": {
+                    "$ref": "AddonsConfig",
+                    "description": "Configurations for the various addons available to run in the cluster."
+                },
+                "status": {
+                    "description": "[Output only] The current status of this cluster.",
+                    "enum": [
+                        "STATUS_UNSPECIFIED",
+                        "PROVISIONING",
+                        "RUNNING",
+                        "RECONCILING",
+                        "STOPPING",
+                        "ERROR"
+                    ],
+                    "enumDescriptions": [
+                        "Not set.",
+                        "The PROVISIONING state indicates the cluster is being created.",
+                        "The RUNNING state indicates the cluster has been created and is fully\nusable.",
+                        "The RECONCILING state indicates that some work is actively being done on\nthe cluster, such as upgrading the master or node software. Details can\nbe found in the `statusMessage` field.",
+                        "The STOPPING state indicates the cluster is being deleted.",
+                        "The ERROR state indicates the cluster may be unusable. Details\ncan be found in the `statusMessage` field."
+                    ],
+                    "type": "string"
+                },
+                "currentNodeVersion": {
+                    "description": "[Output only] The current version of the node software components.\nIf they are currently at multiple versions because they're in the process\nof being upgraded, this reflects the minimum version of all nodes.",
+                    "type": "string"
+                },
+                "subnetwork": {
+                    "description": "The name of the Google Compute Engine\n[subnetwork](/compute/docs/subnetworks) to which the\ncluster is connected.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The name of this cluster. The name must be unique within this project\nand zone, and can be up to 40 characters with the following restrictions:\n\n* Lowercase letters, numbers, and hyphens only.\n* Must start with a letter.\n* Must end with a number or a letter.",
+                    "type": "string"
+                },
+                "resourceLabels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "The resource labels for the cluster to use to annotate any related\nGoogle Compute Engine resources.",
+                    "type": "object"
+                },
+                "maintenancePolicy": {
+                    "$ref": "MaintenancePolicy",
+                    "description": "Configure the maintenance policy for this cluster."
+                },
+                "initialClusterVersion": {
+                    "description": "The initial Kubernetes version for this cluster.  Valid versions are those\nfound in validMasterVersions returned by getServerConfig.  The version can\nbe upgraded over time; such upgrades are reflected in\ncurrentMasterVersion and currentNodeVersion.",
+                    "type": "string"
+                },
+                "ipAllocationPolicy": {
+                    "$ref": "IPAllocationPolicy",
+                    "description": "Configuration for cluster IP allocation."
+                },
+                "endpoint": {
+                    "description": "[Output only] The IP address of this cluster's master endpoint.\nThe endpoint can be accessed from the internet at\n`https://username:password@endpoint/`.\n\nSee the `masterAuth` property of this resource for username and\npassword information.",
+                    "type": "string"
+                },
+                "legacyAbac": {
+                    "$ref": "LegacyAbac",
+                    "description": "Configuration for the legacy ABAC authorization mode."
+                },
+                "createTime": {
+                    "description": "[Output only] The time the cluster was created, in\n[RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
+                    "type": "string"
+                },
+                "clusterIpv4Cidr": {
+                    "description": "The IP address range of the container pods in this cluster, in\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`). Leave blank to have\none automatically chosen or specify a `/14` block in `10.0.0.0/8`.",
+                    "type": "string"
+                },
+                "initialNodeCount": {
+                    "description": "The number of nodes to create in this cluster. You must ensure that your\nCompute Engine <a href=\"/compute/docs/resource-quotas\">resource quota</a>\nis sufficient for this number of instances. You must also have available\nfirewall and routes quota.\nFor requests, this field should only be used in lieu of a\n\"node_pool\" object, since this configuration (along with the\n\"node_config\") will be used to create a \"NodePool\" object with an\nauto-generated name. Do not use this and a node_pool at the same time.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "selfLink": {
+                    "description": "[Output only] Server-defined URL for the resource.",
+                    "type": "string"
+                },
+                "locations": {
+                    "description": "The list of Google Compute Engine\n[locations](/compute/docs/zones#available) in which the cluster's nodes\nshould be located.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "nodePools": {
+                    "description": "The node pools associated with this cluster.\nThis field should not be set if \"node_config\" or \"initial_node_count\" are\nspecified.",
+                    "items": {
+                        "$ref": "NodePool"
+                    },
+                    "type": "array"
+                },
+                "instanceGroupUrls": {
+                    "description": "[Output only] The resource URLs of [instance\ngroups](/compute/docs/instance-groups/) associated with this\ncluster.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "servicesIpv4Cidr": {
+                    "description": "[Output only] The IP address range of the Kubernetes services in\nthis cluster, in\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `1.2.3.4/29`). Service addresses are\ntypically put in the last `/16` from the container CIDR.",
+                    "type": "string"
+                },
+                "networkPolicy": {
+                    "$ref": "NetworkPolicy",
+                    "description": "Configuration options for the NetworkPolicy feature."
+                },
+                "enableKubernetesAlpha": {
+                    "description": "Kubernetes alpha features are enabled on this cluster. This includes alpha\nAPI groups (e.g. v1alpha1) and features that may not be production ready in\nthe kubernetes version of the master and nodes.\nThe cluster has no SLA for uptime and master/node upgrades are disabled.\nAlpha enabled clusters are automatically deleted thirty days after\ncreation.",
+                    "type": "boolean"
+                },
+                "description": {
+                    "description": "An optional description of this cluster.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CreateNodePoolRequest": {
+            "description": "CreateNodePoolRequest creates a node pool for a cluster.",
+            "id": "CreateNodePoolRequest",
+            "properties": {
+                "nodePool": {
+                    "$ref": "NodePool",
+                    "description": "The node pool to create."
+                }
+            },
+            "type": "object"
+        },
+        "MasterAuth": {
+            "description": "The authentication information for accessing the master endpoint.\nAuthentication can be done using HTTP basic auth or using client\ncertificates.",
+            "id": "MasterAuth",
+            "properties": {
+                "clientCertificateConfig": {
+                    "$ref": "ClientCertificateConfig",
+                    "description": "Configuration for client certificate authentication on the cluster.  If no\nconfiguration is specified, a client certificate is issued."
+                },
+                "password": {
+                    "description": "The password to use for HTTP basic authentication to the master endpoint.\nBecause the master endpoint is open to the Internet, you should create a\nstrong password.  If a password is provided for cluster creation, username\nmust be non-empty.",
+                    "type": "string"
+                },
+                "clientKey": {
+                    "description": "[Output only] Base64-encoded private key used by clients to authenticate\nto the cluster endpoint.",
+                    "type": "string"
+                },
+                "clusterCaCertificate": {
+                    "description": "[Output only] Base64-encoded public certificate that is the root of\ntrust for the cluster.",
+                    "type": "string"
+                },
+                "clientCertificate": {
+                    "description": "[Output only] Base64-encoded public certificate used by clients to\nauthenticate to the cluster endpoint.",
+                    "type": "string"
+                },
+                "username": {
+                    "description": "The username to use for HTTP basic authentication to the master endpoint.\nFor clusters v1.6.0 and later, you can disable basic authentication by\nproviding an empty username.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DailyMaintenanceWindow": {
+            "description": "Time window specified for daily maintenance operations.",
+            "id": "DailyMaintenanceWindow",
+            "properties": {
+                "duration": {
+                    "description": "[Output only] Duration of the time window, automatically chosen to be\nsmallest possible in the given scenario.\nDuration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)\nformat \"PTnHnMnS\".",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Time within the maintenance window to start the maintenance operations.\nTime format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)\nformat \"HH:MM”, where HH : [00-23] and MM : [00-59] GMT.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MaintenancePolicy": {
+            "description": "MaintenancePolicy defines the maintenance policy to be used for the cluster.",
+            "id": "MaintenancePolicy",
+            "properties": {
+                "window": {
+                    "$ref": "MaintenanceWindow",
+                    "description": "Specifies the maintenance window in which maintenance may be performed."
+                }
+            },
+            "type": "object"
+        },
+        "ClientCertificateConfig": {
+            "description": "Configuration for client certificates on the cluster.",
+            "id": "ClientCertificateConfig",
+            "properties": {
+                "issueClientCertificate": {
+                    "description": "Issue a client certificate.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "SetLoggingServiceRequest": {
+            "description": "SetLoggingServiceRequest sets the logging service of a cluster.",
+            "id": "SetLoggingServiceRequest",
+            "properties": {
+                "loggingService": {
+                    "description": "The logging service the cluster should use to write metrics.\nCurrently available options:\n\n* \"logging.googleapis.com\" - the Google Cloud Logging service\n* \"none\" - no metrics will be exported from the cluster",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SetMaintenancePolicyRequest": {
+            "description": "SetMaintenancePolicyRequest sets the maintenance policy for a cluster.",
+            "id": "SetMaintenancePolicyRequest",
+            "properties": {
+                "maintenancePolicy": {
+                    "$ref": "MaintenancePolicy",
+                    "description": "The maintenance policy to be set for the cluster. An empty field\nclears the existing maintenance policy."
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "ListNodePoolsResponse": {
+            "description": "ListNodePoolsResponse is the result of ListNodePoolsRequest.",
+            "id": "ListNodePoolsResponse",
+            "properties": {
+                "nodePools": {
+                    "description": "A list of node pools for a cluster.",
+                    "items": {
+                        "$ref": "NodePool"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "CompleteIPRotationRequest": {
+            "description": "CompleteIPRotationRequest moves the cluster master back into single-IP mode.",
+            "id": "CompleteIPRotationRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "StartIPRotationRequest": {
+            "description": "StartIPRotationRequest creates a new IP for the cluster and then performs\na node upgrade on each node pool to point to the new IP.",
+            "id": "StartIPRotationRequest",
+            "properties": {},
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/content__v2.json b/discovery/googleapis/content__v2.json
index b71d6c6..adc74da 100644
--- a/discovery/googleapis/content__v2.json
+++ b/discovery/googleapis/content__v2.json
@@ -15,7 +15,7 @@
     "description": "Manages product items, inventory, and Merchant Center accounts for Google Shopping.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/shopping-content",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/dPMCZ2Ey4YVlnyiRa2uPlyOUPp4\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/IlJxNnkCmmplQi5qD5N1p2J9Gf0\"",
     "icons": {
         "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
         "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -2034,7 +2034,7 @@
             }
         }
     },
-    "revision": "20170928",
+    "revision": "20171016",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Account": {
@@ -2783,7 +2783,7 @@
                     "type": "string"
                 },
                 "contentLanguage": {
-                    "description": "[DEPRECATED] Please use target.language instead. The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for targetCountry.",
+                    "description": "[DEPRECATED] Please use targets[].language instead. The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for targetCountry.",
                     "type": "string"
                 },
                 "contentType": {
@@ -2825,7 +2825,7 @@
                     "type": "string"
                 },
                 "intendedDestinations": {
-                    "description": "[DEPRECATED] Please use target.includedDestination instead. The list of intended destinations (corresponds to checked check boxes in Merchant Center).",
+                    "description": "[DEPRECATED] Please use targets[].includedDestinations instead. The list of intended destinations (corresponds to checked check boxes in Merchant Center).",
                     "items": {
                         "type": "string"
                     },
@@ -2846,7 +2846,7 @@
                     "type": "string"
                 },
                 "targetCountry": {
-                    "description": "[DEPRECATED] Please use target.country instead. The country where the items in the feed will be included in the search index, represented as a CLDR territory code.",
+                    "description": "[DEPRECATED] Please use targets[].country instead. The country where the items in the feed will be included in the search index, represented as a CLDR territory code.",
                     "type": "string"
                 },
                 "targets": {
@@ -3345,14 +3345,14 @@
                     "type": "array"
                 },
                 "prices": {
-                    "description": "be \"infinity\". For example [{\"value\": \"10\", \"currency\": \"USD\"}, {\"value\": \"500\", \"currency\": \"USD\"}, {\"value\": \"infinity\", \"currency\": \"USD\"}] represents the headers \"<= $10\", \" $500\". All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.",
+                    "description": "A list of inclusive order price upper bounds. The last price's value can be \"infinity\". For example [{\"value\": \"10\", \"currency\": \"USD\"}, {\"value\": \"500\", \"currency\": \"USD\"}, {\"value\": \"infinity\", \"currency\": \"USD\"}] represents the headers \"<= $10\", \" $500\". All prices within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not set.",
                     "items": {
                         "$ref": "Price"
                     },
                     "type": "array"
                 },
                 "weights": {
-                    "description": "be \"infinity\". For example [{\"value\": \"10\", \"unit\": \"kg\"}, {\"value\": \"50\", \"unit\": \"kg\"}, {\"value\": \"infinity\", \"unit\": \"kg\"}] represents the headers \"<= 10kg\", \" 50kg\". All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.",
+                    "description": "A list of inclusive order weight upper bounds. The last weight's value can be \"infinity\". For example [{\"value\": \"10\", \"unit\": \"kg\"}, {\"value\": \"50\", \"unit\": \"kg\"}, {\"value\": \"infinity\", \"unit\": \"kg\"}] represents the headers \"<= 10kg\", \" 50kg\". All weights within a service must have the same unit. Must be non-empty. Can only be set if all other fields are not set.",
                     "items": {
                         "$ref": "Weight"
                     },
diff --git a/discovery/googleapis/content__v2sandbox.json b/discovery/googleapis/content__v2sandbox.json
index 3ad03bb..d31acf7 100644
--- a/discovery/googleapis/content__v2sandbox.json
+++ b/discovery/googleapis/content__v2sandbox.json
@@ -15,7 +15,7 @@
     "description": "Manages product items, inventory, and Merchant Center accounts for Google Shopping.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/shopping-content",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/QmLvLWNsI9BfMK5wWeN2hMPf260\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/MuNSc5Pp3BR3t60y-RzwNBUq4fU\"",
     "icons": {
         "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
         "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -622,7 +622,7 @@
             }
         }
     },
-    "revision": "20170928",
+    "revision": "20171016",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Error": {
diff --git a/discovery/googleapis/dataproc__v1.json b/discovery/googleapis/dataproc__v1.json
index 39c23fe..c04bfe6 100644
--- a/discovery/googleapis/dataproc__v1.json
+++ b/discovery/googleapis/dataproc__v1.json
@@ -24,6 +24,17 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
         "fields": {
             "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
@@ -68,13 +79,13 @@
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
@@ -89,26 +100,15 @@
             "location": "query",
             "type": "boolean"
         },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
         "bearer_token": {
             "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
         }
     },
     "protocol": "rest",
@@ -117,264 +117,6 @@
             "resources": {
                 "regions": {
                     "resources": {
-                        "jobs": {
-                            "methods": {
-                                "submit": {
-                                    "description": "Submits a job to a cluster.",
-                                    "httpMethod": "POST",
-                                    "id": "dataproc.projects.regions.jobs.submit",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "region"
-                                    ],
-                                    "parameters": {
-                                        "region": {
-                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "projectId": {
-                                            "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/projects/{projectId}/regions/{region}/jobs:submit",
-                                    "request": {
-                                        "$ref": "SubmitJobRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "Job"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "delete": {
-                                    "description": "Deletes the job from the project. If the job is active, the delete fails, and the response returns FAILED_PRECONDITION.",
-                                    "httpMethod": "DELETE",
-                                    "id": "dataproc.projects.regions.jobs.delete",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "region",
-                                        "jobId"
-                                    ],
-                                    "parameters": {
-                                        "region": {
-                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "jobId": {
-                                            "description": "Required. The job ID.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "projectId": {
-                                            "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}",
-                                    "response": {
-                                        "$ref": "Empty"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "list": {
-                                    "description": "Lists regions/{region}/jobs in a project.",
-                                    "httpMethod": "GET",
-                                    "id": "dataproc.projects.regions.jobs.list",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "region"
-                                    ],
-                                    "parameters": {
-                                        "pageToken": {
-                                            "description": "Optional. The page token, returned by a previous call, to request the next page of results.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Optional. The number of results to return in each response.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "region": {
-                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "clusterName": {
-                                            "description": "Optional. If set, the returned jobs list includes only jobs that were submitted to the named cluster.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "projectId": {
-                                            "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "filter": {
-                                            "description": "Optional. A filter constraining the jobs to list. Filters are case-sensitive and have the following syntax:field = value AND field = value ...where field is status.state or labels.[KEY], and [KEY] is a label key. value can be * to match all values. status.state can be either ACTIVE or INACTIVE. Only the logical AND operator is supported; space-separated items are treated as having an implicit AND operator.Example filter:status.state = ACTIVE AND labels.env = staging AND labels.starred = *",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "jobStateMatcher": {
-                                            "description": "Optional. Specifies enumerated categories of jobs to list (default = match ALL jobs).",
-                                            "enum": [
-                                                "ALL",
-                                                "ACTIVE",
-                                                "NON_ACTIVE"
-                                            ],
-                                            "location": "query",
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/projects/{projectId}/regions/{region}/jobs",
-                                    "response": {
-                                        "$ref": "ListJobsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "cancel": {
-                                    "description": "Starts a job cancellation request. To access the job resource after cancellation, call regions/{region}/jobs.list or regions/{region}/jobs.get.",
-                                    "httpMethod": "POST",
-                                    "id": "dataproc.projects.regions.jobs.cancel",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "region",
-                                        "jobId"
-                                    ],
-                                    "parameters": {
-                                        "region": {
-                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "jobId": {
-                                            "description": "Required. The job ID.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "projectId": {
-                                            "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}:cancel",
-                                    "request": {
-                                        "$ref": "CancelJobRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "Job"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "patch": {
-                                    "description": "Updates a job in a project.",
-                                    "httpMethod": "PATCH",
-                                    "id": "dataproc.projects.regions.jobs.patch",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "region",
-                                        "jobId"
-                                    ],
-                                    "parameters": {
-                                        "updateMask": {
-                                            "description": "Required. Specifies the path, relative to <code>Job</code>, of the field to update. For example, to update the labels of a Job the <code>update_mask</code> parameter would be specified as <code>labels</code>, and the PATCH request body would specify the new value. <strong>Note:</strong> Currently, <code>labels</code> is the only field that can be updated.",
-                                            "format": "google-fieldmask",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "region": {
-                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "jobId": {
-                                            "description": "Required. The job ID.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "projectId": {
-                                            "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}",
-                                    "request": {
-                                        "$ref": "Job"
-                                    },
-                                    "response": {
-                                        "$ref": "Job"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "get": {
-                                    "description": "Gets the resource representation for a job in a project.",
-                                    "httpMethod": "GET",
-                                    "id": "dataproc.projects.regions.jobs.get",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "region",
-                                        "jobId"
-                                    ],
-                                    "parameters": {
-                                        "region": {
-                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "jobId": {
-                                            "description": "Required. The job ID.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "projectId": {
-                                            "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}",
-                                    "response": {
-                                        "$ref": "Job"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                }
-                            }
-                        },
                         "clusters": {
                             "methods": {
                                 "diagnose": {
@@ -427,6 +169,12 @@
                                         "clusterName"
                                     ],
                                     "parameters": {
+                                        "region": {
+                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
                                         "clusterName": {
                                             "description": "Required. The cluster name.",
                                             "location": "path",
@@ -438,12 +186,6 @@
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
-                                        },
-                                        "region": {
-                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
                                         }
                                     },
                                     "path": "v1/projects/{projectId}/regions/{region}/clusters/{clusterName}",
@@ -463,6 +205,17 @@
                                         "region"
                                     ],
                                     "parameters": {
+                                        "region": {
+                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "filter": {
+                                            "description": "Optional. A filter constraining the clusters to list. Filters are case-sensitive and have the following syntax:field = value AND field = value ...where field is one of status.state, clusterName, or labels.[KEY], and [KEY] is a label key. value can be * to match all values. status.state can be one of the following: ACTIVE, INACTIVE, CREATING, RUNNING, ERROR, DELETING, or UPDATING. ACTIVE contains the CREATING, UPDATING, and RUNNING states. INACTIVE contains the DELETING and ERROR states. clusterName is the name of the cluster provided at creation time. Only the logical AND operator is supported; space-separated items are treated as having an implicit AND operator.Example filter:status.state = ACTIVE AND clusterName = mycluster AND labels.env = staging AND labels.starred = *",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
                                         "pageToken": {
                                             "description": "Optional. The standard List page token.",
                                             "location": "query",
@@ -479,17 +232,6 @@
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
-                                        },
-                                        "filter": {
-                                            "description": "Optional. A filter constraining the clusters to list. Filters are case-sensitive and have the following syntax:field = value AND field = value ...where field is one of status.state, clusterName, or labels.[KEY], and [KEY] is a label key. value can be * to match all values. status.state can be one of the following: ACTIVE, INACTIVE, CREATING, RUNNING, ERROR, DELETING, or UPDATING. ACTIVE contains the CREATING, UPDATING, and RUNNING states. INACTIVE contains the DELETING and ERROR states. clusterName is the name of the cluster provided at creation time. Only the logical AND operator is supported; space-separated items are treated as having an implicit AND operator.Example filter:status.state = ACTIVE AND clusterName = mycluster AND labels.env = staging AND labels.starred = *",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "region": {
-                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
                                         }
                                     },
                                     "path": "v1/projects/{projectId}/regions/{region}/clusters",
@@ -543,10 +285,10 @@
                                         "clusterName"
                                     ],
                                     "parameters": {
-                                        "updateMask": {
-                                            "description": "Required. Specifies the path, relative to Cluster, of the field to update. For example, to change the number of workers in a cluster to 5, the update_mask parameter would be specified as config.worker_config.num_instances, and the PATCH request body would specify the new value, as follows:\n{\n  \"config\":{\n    \"workerConfig\":{\n      \"numInstances\":\"5\"\n    }\n  }\n}\nSimilarly, to change the number of preemptible workers in a cluster to 5, the update_mask parameter would be config.secondary_worker_config.num_instances, and the PATCH request body would be set as follows:\n{\n  \"config\":{\n    \"secondaryWorkerConfig\":{\n      \"numInstances\":\"5\"\n    }\n  }\n}\n<strong>Note:</strong> Currently, only the following fields can be updated:<table>  <tbody>  <tr>  <td><strong>Mask</strong></td>  <td><strong>Purpose</strong></td>  </tr>  <tr>  <td><strong><em>labels</em></strong></td>  <td>Update labels</td>  </tr>  <tr>  <td><strong><em>config.worker_config.num_instances</em></strong></td>  <td>Resize primary worker group</td>  </tr>  <tr>  <td><strong><em>config.secondary_worker_config.num_instances</em></strong></td>  <td>Resize secondary worker group</td>  </tr>  </tbody>  </table>",
-                                            "format": "google-fieldmask",
-                                            "location": "query",
+                                        "projectId": {
+                                            "description": "Required. The ID of the Google Cloud Platform project the cluster belongs to.",
+                                            "location": "path",
+                                            "required": true,
                                             "type": "string"
                                         },
                                         "region": {
@@ -555,14 +297,14 @@
                                             "required": true,
                                             "type": "string"
                                         },
-                                        "clusterName": {
-                                            "description": "Required. The cluster name.",
-                                            "location": "path",
-                                            "required": true,
+                                        "updateMask": {
+                                            "description": "Required. Specifies the path, relative to Cluster, of the field to update. For example, to change the number of workers in a cluster to 5, the update_mask parameter would be specified as config.worker_config.num_instances, and the PATCH request body would specify the new value, as follows:\n{\n  \"config\":{\n    \"workerConfig\":{\n      \"numInstances\":\"5\"\n    }\n  }\n}\nSimilarly, to change the number of preemptible workers in a cluster to 5, the update_mask parameter would be config.secondary_worker_config.num_instances, and the PATCH request body would be set as follows:\n{\n  \"config\":{\n    \"secondaryWorkerConfig\":{\n      \"numInstances\":\"5\"\n    }\n  }\n}\n<strong>Note:</strong> Currently, only the following fields can be updated:<table>  <tbody>  <tr>  <td><strong>Mask</strong></td>  <td><strong>Purpose</strong></td>  </tr>  <tr>  <td><strong><em>labels</em></strong></td>  <td>Update labels</td>  </tr>  <tr>  <td><strong><em>config.worker_config.num_instances</em></strong></td>  <td>Resize primary worker group</td>  </tr>  <tr>  <td><strong><em>config.secondary_worker_config.num_instances</em></strong></td>  <td>Resize secondary worker group</td>  </tr>  </tbody>  </table>",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
                                             "type": "string"
                                         },
-                                        "projectId": {
-                                            "description": "Required. The ID of the Google Cloud Platform project the cluster belongs to.",
+                                        "clusterName": {
+                                            "description": "Required. The cluster name.",
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
@@ -668,6 +410,46 @@
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
                                 },
+                                "list": {
+                                    "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.",
+                                    "httpMethod": "GET",
+                                    "id": "dataproc.projects.regions.operations.list",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "The standard list filter.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "name": {
+                                            "description": "The name of the operation's parent resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/regions/[^/]+/operations$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "The standard list page token.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "The standard list page size.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "ListOperationsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
                                 "get": {
                                     "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
                                     "httpMethod": "GET",
@@ -691,42 +473,260 @@
                                     "scopes": [
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
+                                }
+                            }
+                        },
+                        "jobs": {
+                            "methods": {
+                                "submit": {
+                                    "description": "Submits a job to a cluster.",
+                                    "httpMethod": "POST",
+                                    "id": "dataproc.projects.regions.jobs.submit",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "region"
+                                    ],
+                                    "parameters": {
+                                        "projectId": {
+                                            "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "region": {
+                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/projects/{projectId}/regions/{region}/jobs:submit",
+                                    "request": {
+                                        "$ref": "SubmitJobRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Job"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes the job from the project. If the job is active, the delete fails, and the response returns FAILED_PRECONDITION.",
+                                    "httpMethod": "DELETE",
+                                    "id": "dataproc.projects.regions.jobs.delete",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "region",
+                                        "jobId"
+                                    ],
+                                    "parameters": {
+                                        "projectId": {
+                                            "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "jobId": {
+                                            "description": "Required. The job ID.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "region": {
+                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
                                 },
                                 "list": {
-                                    "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.",
+                                    "description": "Lists regions/{region}/jobs in a project.",
                                     "httpMethod": "GET",
-                                    "id": "dataproc.projects.regions.operations.list",
+                                    "id": "dataproc.projects.regions.jobs.list",
                                     "parameterOrder": [
-                                        "name"
+                                        "projectId",
+                                        "region"
                                     ],
                                     "parameters": {
                                         "filter": {
-                                            "description": "The standard list filter.",
+                                            "description": "Optional. A filter constraining the jobs to list. Filters are case-sensitive and have the following syntax:field = value AND field = value ...where field is status.state or labels.[KEY], and [KEY] is a label key. value can be * to match all values. status.state can be either ACTIVE or INACTIVE. Only the logical AND operator is supported; space-separated items are treated as having an implicit AND operator.Example filter:status.state = ACTIVE AND labels.env = staging AND labels.starred = *",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "jobStateMatcher": {
+                                            "description": "Optional. Specifies enumerated categories of jobs to list (default = match ALL jobs).",
+                                            "enum": [
+                                                "ALL",
+                                                "ACTIVE",
+                                                "NON_ACTIVE"
+                                            ],
                                             "location": "query",
                                             "type": "string"
                                         },
                                         "pageToken": {
-                                            "description": "The standard list page token.",
+                                            "description": "Optional. The page token, returned by a previous call, to request the next page of results.",
                                             "location": "query",
                                             "type": "string"
                                         },
-                                        "name": {
-                                            "description": "The name of the operation's parent resource.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/regions/[^/]+/operations$",
-                                            "required": true,
-                                            "type": "string"
-                                        },
                                         "pageSize": {
-                                            "description": "The standard list page size.",
+                                            "description": "Optional. The number of results to return in each response.",
                                             "format": "int32",
                                             "location": "query",
                                             "type": "integer"
+                                        },
+                                        "region": {
+                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "clusterName": {
+                                            "description": "Optional. If set, the returned jobs list includes only jobs that were submitted to the named cluster.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "projectId": {
+                                            "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
                                         }
                                     },
-                                    "path": "v1/{+name}",
+                                    "path": "v1/projects/{projectId}/regions/{region}/jobs",
                                     "response": {
-                                        "$ref": "ListOperationsResponse"
+                                        "$ref": "ListJobsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "cancel": {
+                                    "description": "Starts a job cancellation request. To access the job resource after cancellation, call regions/{region}/jobs.list or regions/{region}/jobs.get.",
+                                    "httpMethod": "POST",
+                                    "id": "dataproc.projects.regions.jobs.cancel",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "region",
+                                        "jobId"
+                                    ],
+                                    "parameters": {
+                                        "projectId": {
+                                            "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "jobId": {
+                                            "description": "Required. The job ID.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "region": {
+                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}:cancel",
+                                    "request": {
+                                        "$ref": "CancelJobRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Job"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Gets the resource representation for a job in a project.",
+                                    "httpMethod": "GET",
+                                    "id": "dataproc.projects.regions.jobs.get",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "region",
+                                        "jobId"
+                                    ],
+                                    "parameters": {
+                                        "projectId": {
+                                            "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "jobId": {
+                                            "description": "Required. The job ID.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "region": {
+                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}",
+                                    "response": {
+                                        "$ref": "Job"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates a job in a project.",
+                                    "httpMethod": "PATCH",
+                                    "id": "dataproc.projects.regions.jobs.patch",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "region",
+                                        "jobId"
+                                    ],
+                                    "parameters": {
+                                        "region": {
+                                            "description": "Required. The Cloud Dataproc region in which to handle the request.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "Required. Specifies the path, relative to <code>Job</code>, of the field to update. For example, to update the labels of a Job the <code>update_mask</code> parameter would be specified as <code>labels</code>, and the PATCH request body would specify the new value. <strong>Note:</strong> Currently, <code>labels</code> is the only field that can be updated.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "projectId": {
+                                            "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "jobId": {
+                                            "description": "Required. The job ID.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}",
+                                    "request": {
+                                        "$ref": "Job"
+                                    },
+                                    "response": {
+                                        "$ref": "Job"
                                     },
                                     "scopes": [
                                         "https://www.googleapis.com/auth/cloud-platform"
@@ -739,213 +739,23 @@
             }
         }
     },
-    "revision": "20170926",
+    "revision": "20171016",
     "rootUrl": "https://dataproc.googleapis.com/",
     "schemas": {
-        "Cluster": {
-            "description": "Describes the identifying information, config, and status of a cluster of Google Compute Engine instances.",
-            "id": "Cluster",
-            "properties": {
-                "labels": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.",
-                    "type": "object"
-                },
-                "status": {
-                    "$ref": "ClusterStatus",
-                    "description": "Output-only. Cluster status."
-                },
-                "metrics": {
-                    "$ref": "ClusterMetrics",
-                    "description": "Contains cluster daemon metrics such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release."
-                },
-                "statusHistory": {
-                    "description": "Output-only. The previous cluster status.",
-                    "items": {
-                        "$ref": "ClusterStatus"
-                    },
-                    "type": "array"
-                },
-                "config": {
-                    "$ref": "ClusterConfig",
-                    "description": "Required. The cluster config. Note that Cloud Dataproc may set default values, and values may change when clusters are updated."
-                },
-                "clusterName": {
-                    "description": "Required. The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.",
-                    "type": "string"
-                },
-                "clusterUuid": {
-                    "description": "Output-only. A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.",
-                    "type": "string"
-                },
-                "projectId": {
-                    "description": "Required. The Google Cloud Platform project ID that the cluster belongs to.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListOperationsResponse": {
-            "description": "The response message for Operations.ListOperations.",
-            "id": "ListOperationsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
-                },
-                "operations": {
-                    "description": "A list of operations that matches the specified filter in the request.",
-                    "items": {
-                        "$ref": "Operation"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "SoftwareConfig": {
-            "description": "Specifies the selection and config of software inside the cluster.",
-            "id": "SoftwareConfig",
-            "properties": {
-                "properties": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, such as core:fs.defaultFS. The following are supported prefixes and their mappings:\ncapacity-scheduler: capacity-scheduler.xml\ncore: core-site.xml\ndistcp: distcp-default.xml\nhdfs: hdfs-site.xml\nhive: hive-site.xml\nmapred: mapred-site.xml\npig: pig.properties\nspark: spark-defaults.conf\nyarn: yarn-site.xmlFor more information, see Cluster properties.",
-                    "type": "object"
-                },
-                "imageVersion": {
-                    "description": "Optional. The version of software inside the cluster. It must match the regular expression [0-9]+\\.[0-9]+. If unspecified, it defaults to the latest version (see Cloud Dataproc Versioning).",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "JobPlacement": {
-            "description": "Cloud Dataproc job config.",
-            "id": "JobPlacement",
-            "properties": {
-                "clusterUuid": {
-                    "description": "Output-only. A cluster UUID generated by the Cloud Dataproc service when the job is submitted.",
-                    "type": "string"
-                },
-                "clusterName": {
-                    "description": "Required. The name of the cluster where the job will be submitted.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "PigJob": {
-            "description": "A Cloud Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN.",
-            "id": "PigJob",
-            "properties": {
-                "continueOnFailure": {
-                    "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.",
-                    "type": "boolean"
-                },
-                "queryFileUri": {
-                    "description": "The HCFS URI of the script that contains the Pig queries.",
-                    "type": "string"
-                },
-                "queryList": {
-                    "$ref": "QueryList",
-                    "description": "A list of queries."
-                },
-                "jarFileUris": {
-                    "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "scriptVariables": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).",
-                    "type": "object"
-                },
-                "loggingConfig": {
-                    "$ref": "LoggingConfig",
-                    "description": "Optional. The runtime log config for job execution."
-                },
-                "properties": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "ClusterStatus": {
-            "description": "The status of a cluster and its instances.",
-            "id": "ClusterStatus",
-            "properties": {
-                "substate": {
-                    "description": "Output-only. Additional state information that includes status reported by the agent.",
-                    "enum": [
-                        "UNSPECIFIED",
-                        "UNHEALTHY",
-                        "STALE_STATUS"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "The cluster is known to be in an unhealthy state (for example, critical daemons are not running or HDFS capacity is exhausted).Applies to RUNNING state.",
-                        "The agent-reported status is out of date (may occur if Cloud Dataproc loses communication with Agent).Applies to RUNNING state."
-                    ],
-                    "type": "string"
-                },
-                "stateStartTime": {
-                    "description": "Output-only. Time when this state was entered.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "detail": {
-                    "description": "Output-only. Optional details of cluster's state.",
-                    "type": "string"
-                },
-                "state": {
-                    "description": "Output-only. The cluster's state.",
-                    "enum": [
-                        "UNKNOWN",
-                        "CREATING",
-                        "RUNNING",
-                        "ERROR",
-                        "DELETING",
-                        "UPDATING"
-                    ],
-                    "enumDescriptions": [
-                        "The cluster state is unknown.",
-                        "The cluster is being created and set up. It is not ready for use.",
-                        "The cluster is currently running and healthy. It is ready for use.",
-                        "The cluster encountered an error. It is not ready for use.",
-                        "The cluster is being deleted. It cannot be used.",
-                        "The cluster is being updated. It continues to accept and process jobs."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "ListClustersResponse": {
             "description": "The list of all clusters in a project.",
             "id": "ListClustersResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "Output-only. This token is included in the response if there are more results to fetch. To fetch additional results, provide this value as the page_token in a subsequent ListClustersRequest.",
-                    "type": "string"
-                },
                 "clusters": {
                     "description": "Output-only. The clusters in the project.",
                     "items": {
                         "$ref": "Cluster"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Output-only. This token is included in the response if there are more results to fetch. To fetch additional results, provide this value as the page_token in a subsequent ListClustersRequest.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1008,18 +818,6 @@
             "description": "A Cloud Dataproc job resource.",
             "id": "Job",
             "properties": {
-                "hadoopJob": {
-                    "$ref": "HadoopJob",
-                    "description": "Job is a Hadoop job."
-                },
-                "placement": {
-                    "$ref": "JobPlacement",
-                    "description": "Required. Job information, including how, when, and where to run the job."
-                },
-                "status": {
-                    "$ref": "JobStatus",
-                    "description": "Output-only. The job status. Additional application-specific status information may be contained in the <code>type_job</code> and <code>yarn_applications</code> fields."
-                },
                 "driverControlFilesUri": {
                     "description": "Output-only. If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.",
                     "type": "string"
@@ -1054,14 +852,14 @@
                     },
                     "type": "array"
                 },
-                "sparkJob": {
-                    "$ref": "SparkJob",
-                    "description": "Job is a Spark job."
-                },
                 "sparkSqlJob": {
                     "$ref": "SparkSqlJob",
                     "description": "Job is a SparkSql job."
                 },
+                "sparkJob": {
+                    "$ref": "SparkJob",
+                    "description": "Job is a Spark job."
+                },
                 "yarnApplications": {
                     "description": "Output-only. The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It may be changed before final release.",
                     "items": {
@@ -1076,6 +874,18 @@
                 "reference": {
                     "$ref": "JobReference",
                     "description": "Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a <code>job_id</code>."
+                },
+                "hadoopJob": {
+                    "$ref": "HadoopJob",
+                    "description": "Job is a Hadoop job."
+                },
+                "status": {
+                    "$ref": "JobStatus",
+                    "description": "Output-only. The job status. Additional application-specific status information may be contained in the <code>type_job</code> and <code>yarn_applications</code> fields."
+                },
+                "placement": {
+                    "$ref": "JobPlacement",
+                    "description": "Required. Job information, including how, when, and where to run the job."
                 }
             },
             "type": "object"
@@ -1084,8 +894,25 @@
             "description": "Cloud Dataproc job status.",
             "id": "JobStatus",
             "properties": {
-                "details": {
-                    "description": "Output-only. Optional job state details, such as an error description if the state is <code>ERROR</code>.",
+                "stateStartTime": {
+                    "description": "Output-only. The time when this state was entered.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "substate": {
+                    "description": "Output-only. Additional state information, which includes status reported by the agent.",
+                    "enum": [
+                        "UNSPECIFIED",
+                        "SUBMITTED",
+                        "QUEUED",
+                        "STALE_STATUS"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "The Job is submitted to the agent.Applies to RUNNING state.",
+                        "The Job has been received and is awaiting execution (it may be waiting for a condition to be met). See the \"details\" field for the reason for the delay.Applies to RUNNING state.",
+                        "The agent-reported status is out of date, which may be caused by a loss of communication between the agent and Cloud Dataproc. If the agent does not send a timely update, the job will fail.Applies to RUNNING state."
+                    ],
                     "type": "string"
                 },
                 "state": {
@@ -1116,25 +943,8 @@
                     ],
                     "type": "string"
                 },
-                "substate": {
-                    "description": "Output-only. Additional state information, which includes status reported by the agent.",
-                    "enum": [
-                        "UNSPECIFIED",
-                        "SUBMITTED",
-                        "QUEUED",
-                        "STALE_STATUS"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "The Job is submitted to the agent.Applies to RUNNING state.",
-                        "The Job has been received and is awaiting execution (it may be waiting for a condition to be met). See the \"details\" field for the reason for the delay.Applies to RUNNING state.",
-                        "The agent-reported status is out of date, which may be caused by a loss of communication between the agent and Cloud Dataproc. If the agent does not send a timely update, the job will fail.Applies to RUNNING state."
-                    ],
-                    "type": "string"
-                },
-                "stateStartTime": {
-                    "description": "Output-only. The time when this state was entered.",
-                    "format": "google-datetime",
+                "details": {
+                    "description": "Output-only. Optional job state details, such as an error description if the state is <code>ERROR</code>.",
                     "type": "string"
                 }
             },
@@ -1159,10 +969,6 @@
             "description": "The status of the operation.",
             "id": "ClusterOperationStatus",
             "properties": {
-                "details": {
-                    "description": "Output-only.A message containing any operation metadata details.",
-                    "type": "string"
-                },
                 "state": {
                     "description": "Output-only. A message containing the operation state.",
                     "enum": [
@@ -1179,6 +985,10 @@
                     ],
                     "type": "string"
                 },
+                "details": {
+                    "description": "Output-only.A message containing any operation metadata details.",
+                    "type": "string"
+                },
                 "innerState": {
                     "description": "Output-only. A message containing the detailed operation state.",
                     "type": "string"
@@ -1191,6 +1001,74 @@
             },
             "type": "object"
         },
+        "HadoopJob": {
+            "description": "A Cloud Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html).",
+            "id": "HadoopJob",
+            "properties": {
+                "loggingConfig": {
+                    "$ref": "LoggingConfig",
+                    "description": "Optional. The runtime log config for job execution."
+                },
+                "properties": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.",
+                    "type": "object"
+                },
+                "args": {
+                    "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision may occur that causes an incorrect job submission.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "fileUris": {
+                    "description": "Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "mainClass": {
+                    "description": "The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.",
+                    "type": "string"
+                },
+                "archiveUris": {
+                    "description": "Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "mainJarFileUri": {
+                    "description": "The HCFS URI of the jar file containing the main class. Examples:  'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar'  'hdfs:/tmp/test-samples/custom-wordcount.jar'  'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'",
+                    "type": "string"
+                },
+                "jarFileUris": {
+                    "description": "Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "QueryList": {
+            "description": "A list of queries to run on a cluster.",
+            "id": "QueryList",
+            "properties": {
+                "queries": {
+                    "description": "Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:\n\"hiveJob\": {\n  \"queryList\": {\n    \"queries\": [\n      \"query1\",\n      \"query2\",\n      \"query3;query4\",\n    ]\n  }\n}\n",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "YarnApplication": {
             "description": "A YARN application created by a job. Application information is a subset of <code>org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto</code>.Beta Feature: This report is available for testing purposes only. It may be changed before final release.",
             "id": "YarnApplication",
@@ -1237,74 +1115,6 @@
             },
             "type": "object"
         },
-        "QueryList": {
-            "description": "A list of queries to run on a cluster.",
-            "id": "QueryList",
-            "properties": {
-                "queries": {
-                    "description": "Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:\n\"hiveJob\": {\n  \"queryList\": {\n    \"queries\": [\n      \"query1\",\n      \"query2\",\n      \"query3;query4\",\n    ]\n  }\n}\n",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "HadoopJob": {
-            "description": "A Cloud Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html).",
-            "id": "HadoopJob",
-            "properties": {
-                "mainClass": {
-                    "description": "The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.",
-                    "type": "string"
-                },
-                "archiveUris": {
-                    "description": "Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "mainJarFileUri": {
-                    "description": "The HCFS URI of the jar file containing the main class. Examples:  'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar'  'hdfs:/tmp/test-samples/custom-wordcount.jar'  'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'",
-                    "type": "string"
-                },
-                "jarFileUris": {
-                    "description": "Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "loggingConfig": {
-                    "$ref": "LoggingConfig",
-                    "description": "Optional. The runtime log config for job execution."
-                },
-                "properties": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.",
-                    "type": "object"
-                },
-                "args": {
-                    "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision may occur that causes an incorrect job submission.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "fileUris": {
-                    "description": "Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "DiagnoseClusterRequest": {
             "description": "A request to collect cluster diagnostic information.",
             "id": "DiagnoseClusterRequest",
@@ -1365,17 +1175,23 @@
                     },
                     "type": "array"
                 },
-                "clusterName": {
-                    "description": "Output-only. Name of the cluster for the operation.",
-                    "type": "string"
-                },
                 "clusterUuid": {
                     "description": "Output-only. Cluster UUID for the operation.",
                     "type": "string"
+                },
+                "clusterName": {
+                    "description": "Output-only. Name of the cluster for the operation.",
+                    "type": "string"
                 }
             },
             "type": "object"
         },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n  rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
         "HiveJob": {
             "description": "A Cloud Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN.",
             "id": "HiveJob",
@@ -1384,14 +1200,14 @@
                     "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.",
                     "type": "boolean"
                 },
-                "queryFileUri": {
-                    "description": "The HCFS URI of the script that contains Hive queries.",
-                    "type": "string"
-                },
                 "queryList": {
                     "$ref": "QueryList",
                     "description": "A list of queries."
                 },
+                "queryFileUri": {
+                    "description": "The HCFS URI of the script that contains Hive queries.",
+                    "type": "string"
+                },
                 "jarFileUris": {
                     "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs.",
                     "items": {
@@ -1416,12 +1232,6 @@
             },
             "type": "object"
         },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n  rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
         "DiagnoseClusterResults": {
             "description": "The location of diagnostic output.",
             "id": "DiagnoseClusterResults",
@@ -1475,24 +1285,6 @@
             "description": "A Cloud Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN.",
             "id": "PySparkJob",
             "properties": {
-                "jarFileUris": {
-                    "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "loggingConfig": {
-                    "$ref": "LoggingConfig",
-                    "description": "Optional. The runtime log config for job execution."
-                },
-                "properties": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.",
-                    "type": "object"
-                },
                 "args": {
                     "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.",
                     "items": {
@@ -1524,6 +1316,24 @@
                         "type": "string"
                     },
                     "type": "array"
+                },
+                "jarFileUris": {
+                    "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "loggingConfig": {
+                    "$ref": "LoggingConfig",
+                    "description": "Optional. The runtime log config for job execution."
+                },
+                "properties": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.",
+                    "type": "object"
                 }
             },
             "type": "object"
@@ -1576,29 +1386,6 @@
             },
             "type": "object"
         },
-        "ClusterMetrics": {
-            "description": "Contains cluster daemon metrics, such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release.",
-            "id": "ClusterMetrics",
-            "properties": {
-                "yarnMetrics": {
-                    "additionalProperties": {
-                        "format": "int64",
-                        "type": "string"
-                    },
-                    "description": "The YARN metrics.",
-                    "type": "object"
-                },
-                "hdfsMetrics": {
-                    "additionalProperties": {
-                        "format": "int64",
-                        "type": "string"
-                    },
-                    "description": "The HDFS metrics.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
         "AcceleratorConfig": {
             "description": "Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).",
             "id": "AcceleratorConfig",
@@ -1615,6 +1402,29 @@
             },
             "type": "object"
         },
+        "ClusterMetrics": {
+            "description": "Contains cluster daemon metrics, such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release.",
+            "id": "ClusterMetrics",
+            "properties": {
+                "hdfsMetrics": {
+                    "additionalProperties": {
+                        "format": "int64",
+                        "type": "string"
+                    },
+                    "description": "The HDFS metrics.",
+                    "type": "object"
+                },
+                "yarnMetrics": {
+                    "additionalProperties": {
+                        "format": "int64",
+                        "type": "string"
+                    },
+                    "description": "The YARN metrics.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
         "LoggingConfig": {
             "description": "The runtime logging config of the job.",
             "id": "LoggingConfig",
@@ -1679,13 +1489,13 @@
             "description": "Encapsulates the full scoping used to reference a job.",
             "id": "JobReference",
             "properties": {
-                "jobId": {
-                    "description": "Optional. The job ID, which must be unique within the project. The job ID is generated by the server upon job submission or provided by the user as a means to perform retries without creating duplicate jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.",
-                    "type": "string"
-                },
                 "projectId": {
                     "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.",
                     "type": "string"
+                },
+                "jobId": {
+                    "description": "Optional. The job ID, which must be unique within the project. The job ID is generated by the server upon job submission or provided by the user as a means to perform retries without creating duplicate jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1705,6 +1515,11 @@
             "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.",
             "id": "Status",
             "properties": {
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "message": {
                     "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
                     "type": "string"
@@ -1719,23 +1534,6 @@
                         "type": "object"
                     },
                     "type": "array"
-                },
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "JobScheduling": {
-            "description": "Job scheduling options.Beta Feature: These options are available for testing purposes only. They may be changed before final release.",
-            "id": "JobScheduling",
-            "properties": {
-                "maxFailuresPerHour": {
-                    "description": "Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -1744,13 +1542,6 @@
             "description": "Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group.",
             "id": "InstanceGroupConfig",
             "properties": {
-                "instanceNames": {
-                    "description": "Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
                 "accelerators": {
                     "description": "Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release.",
                     "items": {
@@ -1767,6 +1558,14 @@
                     "$ref": "DiskConfig",
                     "description": "Optional. Disk option config settings."
                 },
+                "managedGroupConfig": {
+                    "$ref": "ManagedGroupConfig",
+                    "description": "Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups."
+                },
+                "isPreemptible": {
+                    "description": "Optional. Specifies that this instance group contains preemptible instances.",
+                    "type": "boolean"
+                },
                 "imageUri": {
                     "description": "Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.",
                     "type": "string"
@@ -1775,31 +1574,24 @@
                     "description": "Optional. The Google Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples:\nhttps://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2\nprojects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2\nn1-standard-2",
                     "type": "string"
                 },
-                "managedGroupConfig": {
-                    "$ref": "ManagedGroupConfig",
-                    "description": "Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups."
-                },
-                "isPreemptible": {
-                    "description": "Optional. Specifies that this instance group contains preemptible instances.",
-                    "type": "boolean"
+                "instanceNames": {
+                    "description": "Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
         },
-        "ListJobsResponse": {
-            "description": "A list of jobs in a project.",
-            "id": "ListJobsResponse",
+        "JobScheduling": {
+            "description": "Job scheduling options.Beta Feature: These options are available for testing purposes only. They may be changed before final release.",
+            "id": "JobScheduling",
             "properties": {
-                "nextPageToken": {
-                    "description": "Optional. This token is included in the response if there are more results to fetch. To fetch additional results, provide this value as the page_token in a subsequent <code>ListJobsRequest</code>.",
-                    "type": "string"
-                },
-                "jobs": {
-                    "description": "Output-only. Jobs list.",
-                    "items": {
-                        "$ref": "Job"
-                    },
-                    "type": "array"
+                "maxFailuresPerHour": {
+                    "description": "Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -1820,6 +1612,24 @@
             },
             "type": "object"
         },
+        "ListJobsResponse": {
+            "description": "A list of jobs in a project.",
+            "id": "ListJobsResponse",
+            "properties": {
+                "jobs": {
+                    "description": "Output-only. Jobs list.",
+                    "items": {
+                        "$ref": "Job"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Optional. This token is included in the response if there are more results to fetch. To fetch additional results, provide this value as the page_token in a subsequent <code>ListJobsRequest</code>.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "CancelJobRequest": {
             "description": "A request to cancel a job.",
             "id": "CancelJobRequest",
@@ -1830,12 +1640,13 @@
             "description": "A Cloud Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries.",
             "id": "SparkSqlJob",
             "properties": {
-                "scriptVariables": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=\"value\";).",
-                    "type": "object"
+                "queryFileUri": {
+                    "description": "The HCFS URI of the script that contains SQL queries.",
+                    "type": "string"
+                },
+                "queryList": {
+                    "$ref": "QueryList",
+                    "description": "A list of queries."
                 },
                 "jarFileUris": {
                     "description": "Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.",
@@ -1844,6 +1655,13 @@
                     },
                     "type": "array"
                 },
+                "scriptVariables": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=\"value\";).",
+                    "type": "object"
+                },
                 "loggingConfig": {
                     "$ref": "LoggingConfig",
                     "description": "Optional. The runtime log config for job execution."
@@ -1854,13 +1672,195 @@
                     },
                     "description": "Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Cloud Dataproc API may be overwritten.",
                     "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "Cluster": {
+            "description": "Describes the identifying information, config, and status of a cluster of Google Compute Engine instances.",
+            "id": "Cluster",
+            "properties": {
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.",
+                    "type": "object"
+                },
+                "metrics": {
+                    "$ref": "ClusterMetrics",
+                    "description": "Contains cluster daemon metrics such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release."
+                },
+                "status": {
+                    "$ref": "ClusterStatus",
+                    "description": "Output-only. Cluster status."
+                },
+                "statusHistory": {
+                    "description": "Output-only. The previous cluster status.",
+                    "items": {
+                        "$ref": "ClusterStatus"
+                    },
+                    "type": "array"
+                },
+                "config": {
+                    "$ref": "ClusterConfig",
+                    "description": "Required. The cluster config. Note that Cloud Dataproc may set default values, and values may change when clusters are updated."
+                },
+                "clusterName": {
+                    "description": "Required. The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.",
+                    "type": "string"
+                },
+                "clusterUuid": {
+                    "description": "Output-only. A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.",
+                    "type": "string"
+                },
+                "projectId": {
+                    "description": "Required. The Google Cloud Platform project ID that the cluster belongs to.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListOperationsResponse": {
+            "description": "The response message for Operations.ListOperations.",
+            "id": "ListOperationsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
+                "operations": {
+                    "description": "A list of operations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Operation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SoftwareConfig": {
+            "description": "Specifies the selection and config of software inside the cluster.",
+            "id": "SoftwareConfig",
+            "properties": {
+                "imageVersion": {
+                    "description": "Optional. The version of software inside the cluster. It must match the regular expression [0-9]+\\.[0-9]+. If unspecified, it defaults to the latest version (see Cloud Dataproc Versioning).",
+                    "type": "string"
+                },
+                "properties": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, such as core:fs.defaultFS. The following are supported prefixes and their mappings:\ncapacity-scheduler: capacity-scheduler.xml\ncore: core-site.xml\ndistcp: distcp-default.xml\nhdfs: hdfs-site.xml\nhive: hive-site.xml\nmapred: mapred-site.xml\npig: pig.properties\nspark: spark-defaults.conf\nyarn: yarn-site.xmlFor more information, see Cluster properties.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "JobPlacement": {
+            "description": "Cloud Dataproc job config.",
+            "id": "JobPlacement",
+            "properties": {
+                "clusterName": {
+                    "description": "Required. The name of the cluster where the job will be submitted.",
+                    "type": "string"
+                },
+                "clusterUuid": {
+                    "description": "Output-only. A cluster UUID generated by the Cloud Dataproc service when the job is submitted.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "PigJob": {
+            "description": "A Cloud Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN.",
+            "id": "PigJob",
+            "properties": {
+                "continueOnFailure": {
+                    "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.",
+                    "type": "boolean"
+                },
+                "queryFileUri": {
+                    "description": "The HCFS URI of the script that contains the Pig queries.",
+                    "type": "string"
                 },
                 "queryList": {
                     "$ref": "QueryList",
                     "description": "A list of queries."
                 },
-                "queryFileUri": {
-                    "description": "The HCFS URI of the script that contains SQL queries.",
+                "jarFileUris": {
+                    "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "scriptVariables": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).",
+                    "type": "object"
+                },
+                "loggingConfig": {
+                    "$ref": "LoggingConfig",
+                    "description": "Optional. The runtime log config for job execution."
+                },
+                "properties": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "ClusterStatus": {
+            "description": "The status of a cluster and its instances.",
+            "id": "ClusterStatus",
+            "properties": {
+                "detail": {
+                    "description": "Output-only. Optional details of cluster's state.",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Output-only. The cluster's state.",
+                    "enum": [
+                        "UNKNOWN",
+                        "CREATING",
+                        "RUNNING",
+                        "ERROR",
+                        "DELETING",
+                        "UPDATING"
+                    ],
+                    "enumDescriptions": [
+                        "The cluster state is unknown.",
+                        "The cluster is being created and set up. It is not ready for use.",
+                        "The cluster is currently running and healthy. It is ready for use.",
+                        "The cluster encountered an error. It is not ready for use.",
+                        "The cluster is being deleted. It cannot be used.",
+                        "The cluster is being updated. It continues to accept and process jobs."
+                    ],
+                    "type": "string"
+                },
+                "stateStartTime": {
+                    "description": "Output-only. Time when this state was entered.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "substate": {
+                    "description": "Output-only. Additional state information that includes status reported by the agent.",
+                    "enum": [
+                        "UNSPECIFIED",
+                        "UNHEALTHY",
+                        "STALE_STATUS"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "The cluster is known to be in an unhealthy state (for example, critical daemons are not running or HDFS capacity is exhausted).Applies to RUNNING state.",
+                        "The agent-reported status is out of date (may occur if Cloud Dataproc loses communication with Agent).Applies to RUNNING state."
+                    ],
                     "type": "string"
                 }
             },
diff --git a/discovery/googleapis/datastore__v1.json b/discovery/googleapis/datastore__v1.json
index 78e1681..07f7a11 100644
--- a/discovery/googleapis/datastore__v1.json
+++ b/discovery/googleapis/datastore__v1.json
@@ -38,18 +38,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
         "fields": {
             "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
@@ -66,6 +61,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -82,13 +82,13 @@
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
@@ -103,13 +103,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
+        "bearer_token": {
+            "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         }
@@ -118,60 +118,6 @@
     "resources": {
         "projects": {
             "methods": {
-                "beginTransaction": {
-                    "description": "Begins a new transaction.",
-                    "httpMethod": "POST",
-                    "id": "datastore.projects.beginTransaction",
-                    "parameterOrder": [
-                        "projectId"
-                    ],
-                    "parameters": {
-                        "projectId": {
-                            "description": "The ID of the project against which to make the request.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/projects/{projectId}:beginTransaction",
-                    "request": {
-                        "$ref": "BeginTransactionRequest"
-                    },
-                    "response": {
-                        "$ref": "BeginTransactionResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/datastore"
-                    ]
-                },
-                "commit": {
-                    "description": "Commits a transaction, optionally creating, deleting or modifying some\nentities.",
-                    "httpMethod": "POST",
-                    "id": "datastore.projects.commit",
-                    "parameterOrder": [
-                        "projectId"
-                    ],
-                    "parameters": {
-                        "projectId": {
-                            "description": "The ID of the project against which to make the request.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/projects/{projectId}:commit",
-                    "request": {
-                        "$ref": "CommitRequest"
-                    },
-                    "response": {
-                        "$ref": "CommitResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/datastore"
-                    ]
-                },
                 "runQuery": {
                     "description": "Queries for entities.",
                     "httpMethod": "POST",
@@ -279,11 +225,158 @@
                         "https://www.googleapis.com/auth/cloud-platform",
                         "https://www.googleapis.com/auth/datastore"
                     ]
+                },
+                "commit": {
+                    "description": "Commits a transaction, optionally creating, deleting or modifying some\nentities.",
+                    "httpMethod": "POST",
+                    "id": "datastore.projects.commit",
+                    "parameterOrder": [
+                        "projectId"
+                    ],
+                    "parameters": {
+                        "projectId": {
+                            "description": "The ID of the project against which to make the request.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/projects/{projectId}:commit",
+                    "request": {
+                        "$ref": "CommitRequest"
+                    },
+                    "response": {
+                        "$ref": "CommitResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/datastore"
+                    ]
+                },
+                "beginTransaction": {
+                    "description": "Begins a new transaction.",
+                    "httpMethod": "POST",
+                    "id": "datastore.projects.beginTransaction",
+                    "parameterOrder": [
+                        "projectId"
+                    ],
+                    "parameters": {
+                        "projectId": {
+                            "description": "The ID of the project against which to make the request.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/projects/{projectId}:beginTransaction",
+                    "request": {
+                        "$ref": "BeginTransactionRequest"
+                    },
+                    "response": {
+                        "$ref": "BeginTransactionResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/datastore"
+                    ]
+                },
+                "reserveIds": {
+                    "description": "Prevents the supplied keys' IDs from being auto-allocated by Cloud\nDatastore.",
+                    "httpMethod": "POST",
+                    "id": "datastore.projects.reserveIds",
+                    "parameterOrder": [
+                        "projectId"
+                    ],
+                    "parameters": {
+                        "projectId": {
+                            "description": "The ID of the project against which to make the request.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/projects/{projectId}:reserveIds",
+                    "request": {
+                        "$ref": "ReserveIdsRequest"
+                    },
+                    "response": {
+                        "$ref": "ReserveIdsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/datastore"
+                    ]
                 }
             },
             "resources": {
                 "operations": {
                     "methods": {
+                        "get": {
+                            "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+                            "httpMethod": "GET",
+                            "id": "datastore.projects.operations.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The name of the operation resource.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/operations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "GoogleLongrunningOperation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/datastore"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+                            "httpMethod": "GET",
+                            "id": "datastore.projects.operations.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "pageSize": {
+                                    "description": "The standard list page size.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filter": {
+                                    "description": "The standard list filter.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "The standard list page token.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "The name of the operation's parent resource.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}/operations",
+                            "response": {
+                                "$ref": "GoogleLongrunningListOperationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/datastore"
+                            ]
+                        },
                         "cancel": {
                             "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
                             "httpMethod": "POST",
@@ -333,93 +426,257 @@
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/datastore"
                             ]
-                        },
-                        "get": {
-                            "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
-                            "httpMethod": "GET",
-                            "id": "datastore.projects.operations.get",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "The name of the operation resource.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/operations/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "response": {
-                                "$ref": "GoogleLongrunningOperation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/datastore"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
-                            "httpMethod": "GET",
-                            "id": "datastore.projects.operations.list",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "filter": {
-                                    "description": "The standard list filter.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "The standard list page token.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "description": "The name of the operation's parent resource.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "The standard list page size.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v1/{+name}/operations",
-                            "response": {
-                                "$ref": "GoogleLongrunningListOperationsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/datastore"
-                            ]
                         }
                     }
                 }
             }
         }
     },
-    "revision": "20170912",
+    "revision": "20171010",
     "rootUrl": "https://datastore.googleapis.com/",
     "schemas": {
-        "GqlQueryParameter": {
-            "description": "A binding parameter for a GQL query.",
-            "id": "GqlQueryParameter",
+        "TransactionOptions": {
+            "description": "Options for beginning a new transaction.\n\nTransactions can be created explicitly with calls to\nDatastore.BeginTransaction or implicitly by setting\nReadOptions.new_transaction in read requests.",
+            "id": "TransactionOptions",
             "properties": {
-                "cursor": {
-                    "description": "A query cursor. Query cursors are returned in query\nresult batches.",
+                "readOnly": {
+                    "$ref": "ReadOnly",
+                    "description": "The transaction should only allow reads."
+                },
+                "readWrite": {
+                    "$ref": "ReadWrite",
+                    "description": "The transaction should allow both reads and writes."
+                }
+            },
+            "type": "object"
+        },
+        "GoogleDatastoreAdminV1beta1ImportEntitiesMetadata": {
+            "description": "Metadata for ImportEntities operations.",
+            "id": "GoogleDatastoreAdminV1beta1ImportEntitiesMetadata",
+            "properties": {
+                "inputUrl": {
+                    "description": "The location of the import metadata file. This will be the same value as\nthe google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url\nfield.",
+                    "type": "string"
+                },
+                "progressBytes": {
+                    "$ref": "GoogleDatastoreAdminV1beta1Progress",
+                    "description": "An estimate of the number of bytes processed."
+                },
+                "entityFilter": {
+                    "$ref": "GoogleDatastoreAdminV1beta1EntityFilter",
+                    "description": "Description of which entities are being imported."
+                },
+                "progressEntities": {
+                    "$ref": "GoogleDatastoreAdminV1beta1Progress",
+                    "description": "An estimate of the number of entities processed."
+                },
+                "common": {
+                    "$ref": "GoogleDatastoreAdminV1beta1CommonMetadata",
+                    "description": "Metadata common to all Datastore Admin operations."
+                }
+            },
+            "type": "object"
+        },
+        "Query": {
+            "description": "A query for entities.",
+            "id": "Query",
+            "properties": {
+                "limit": {
+                    "description": "The maximum number of results to return. Applies after all other\nconstraints. Optional.\nUnspecified is interpreted as no limit.\nMust be >= 0 if specified.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "filter": {
+                    "$ref": "Filter",
+                    "description": "The filter to apply."
+                },
+                "startCursor": {
+                    "description": "A starting point for the query results. Query cursors are\nreturned in query result batches and\n[can only be used to continue the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).",
                     "format": "byte",
                     "type": "string"
                 },
-                "value": {
-                    "$ref": "Value",
-                    "description": "A value parameter."
+                "offset": {
+                    "description": "The number of results to skip. Applies before limit, but after all other\nconstraints. Optional. Must be >= 0 if specified.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "kind": {
+                    "description": "The kinds to query (if empty, returns entities of all kinds).\nCurrently at most 1 kind may be specified.",
+                    "items": {
+                        "$ref": "KindExpression"
+                    },
+                    "type": "array"
+                },
+                "distinctOn": {
+                    "description": "The properties to make distinct. The query results will contain the first\nresult for each distinct combination of values for the given properties\n(if empty, all results are returned).",
+                    "items": {
+                        "$ref": "PropertyReference"
+                    },
+                    "type": "array"
+                },
+                "order": {
+                    "description": "The order to apply to the query results (if empty, order is unspecified).",
+                    "items": {
+                        "$ref": "PropertyOrder"
+                    },
+                    "type": "array"
+                },
+                "projection": {
+                    "description": "The projection to return. Defaults to returning all properties.",
+                    "items": {
+                        "$ref": "Projection"
+                    },
+                    "type": "array"
+                },
+                "endCursor": {
+                    "description": "An ending point for the query results. Query cursors are\nreturned in query result batches and\n[can only be used to limit the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ReadOnly": {
+            "description": "Options specific to read-only transactions.",
+            "id": "ReadOnly",
+            "properties": {},
+            "type": "object"
+        },
+        "EntityResult": {
+            "description": "The result of fetching an entity from Datastore.",
+            "id": "EntityResult",
+            "properties": {
+                "entity": {
+                    "$ref": "Entity",
+                    "description": "The resulting entity."
+                },
+                "cursor": {
+                    "description": "A cursor that points to the position after the result entity.\nSet only when the `EntityResult` is part of a `QueryResultBatch` message.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "version": {
+                    "description": "The version of the entity, a strictly positive number that monotonically\nincreases with changes to the entity.\n\nThis field is set for `FULL` entity\nresults.\n\nFor missing entities in `LookupResponse`, this\nis the version of the snapshot that was used to look up the entity, and it\nis always set except for eventually consistent reads.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Value": {
+            "description": "A message that can hold any of the supported value types and associated\nmetadata.",
+            "id": "Value",
+            "properties": {
+                "blobValue": {
+                    "description": "A blob value.\nMay have at most 1,000,000 bytes.\nWhen `exclude_from_indexes` is false, may have at most 1500 bytes.\nIn JSON requests, must be base64-encoded.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "meaning": {
+                    "description": "The `meaning` field should only be populated for backwards compatibility.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "arrayValue": {
+                    "$ref": "ArrayValue",
+                    "description": "An array value.\nCannot contain another array value.\nA `Value` instance that sets field `array_value` must not set fields\n`meaning` or `exclude_from_indexes`."
+                },
+                "entityValue": {
+                    "$ref": "Entity",
+                    "description": "An entity value.\n\n- May have no key.\n- May have a key with an incomplete key path.\n- May have a reserved/read-only key."
+                },
+                "geoPointValue": {
+                    "$ref": "LatLng",
+                    "description": "A geo point value representing a point on the surface of Earth."
+                },
+                "keyValue": {
+                    "$ref": "Key",
+                    "description": "A key value."
+                },
+                "integerValue": {
+                    "description": "An integer value.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "stringValue": {
+                    "description": "A UTF-8 encoded string value.\nWhen `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.\nOtherwise, may be set to at least 1,000,000 bytes.",
+                    "type": "string"
+                },
+                "excludeFromIndexes": {
+                    "description": "If the value should be excluded from all indexes including those defined\nexplicitly.",
+                    "type": "boolean"
+                },
+                "doubleValue": {
+                    "description": "A double value.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "timestampValue": {
+                    "description": "A timestamp value.\nWhen stored in the Datastore, precise only to microseconds;\nany additional precision is rounded down.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "nullValue": {
+                    "description": "A null value.",
+                    "enum": [
+                        "NULL_VALUE"
+                    ],
+                    "enumDescriptions": [
+                        "Null value."
+                    ],
+                    "type": "string"
+                },
+                "booleanValue": {
+                    "description": "A boolean value.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "ReadWrite": {
+            "description": "Options specific to read / write transactions.",
+            "id": "ReadWrite",
+            "properties": {
+                "previousTransaction": {
+                    "description": "The transaction identifier of the transaction being retried.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LookupRequest": {
+            "description": "The request for Datastore.Lookup.",
+            "id": "LookupRequest",
+            "properties": {
+                "readOptions": {
+                    "$ref": "ReadOptions",
+                    "description": "The options for this lookup request."
+                },
+                "keys": {
+                    "description": "Keys of entities to look up.",
+                    "items": {
+                        "$ref": "Key"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ReserveIdsRequest": {
+            "description": "The request for Datastore.ReserveIds.",
+            "id": "ReserveIdsRequest",
+            "properties": {
+                "keys": {
+                    "description": "A list of keys with complete key paths whose numeric IDs should not be\nauto-allocated.",
+                    "items": {
+                        "$ref": "Key"
+                    },
+                    "type": "array"
+                },
+                "databaseId": {
+                    "description": "If not empty, the ID of the database against which to make the request.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -428,17 +685,6 @@
             "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
             "id": "Status",
             "properties": {
-                "details": {
-                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                },
                 "code": {
                     "description": "The status code, which should be an enum value of google.rpc.Code.",
                     "format": "int32",
@@ -447,135 +693,15 @@
                 "message": {
                     "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
                     "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleLongrunningListOperationsResponse": {
-            "description": "The response message for Operations.ListOperations.",
-            "id": "GoogleLongrunningListOperationsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
                 },
-                "operations": {
-                    "description": "A list of operations that matches the specified filter in the request.",
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
                     "items": {
-                        "$ref": "GoogleLongrunningOperation"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "BeginTransactionResponse": {
-            "description": "The response for Datastore.BeginTransaction.",
-            "id": "BeginTransactionResponse",
-            "properties": {
-                "transaction": {
-                    "description": "The transaction identifier (always present).",
-                    "format": "byte",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LookupResponse": {
-            "description": "The response for Datastore.Lookup.",
-            "id": "LookupResponse",
-            "properties": {
-                "missing": {
-                    "description": "Entities not found as `ResultType.KEY_ONLY` entities. The order of results\nin this field is undefined and has no relation to the order of the keys\nin the input.",
-                    "items": {
-                        "$ref": "EntityResult"
-                    },
-                    "type": "array"
-                },
-                "found": {
-                    "description": "Entities found as `ResultType.FULL` entities. The order of results in this\nfield is undefined and has no relation to the order of the keys in the\ninput.",
-                    "items": {
-                        "$ref": "EntityResult"
-                    },
-                    "type": "array"
-                },
-                "deferred": {
-                    "description": "A list of keys that were not looked up due to resource constraints. The\norder of results in this field is undefined and has no relation to the\norder of the keys in the input.",
-                    "items": {
-                        "$ref": "Key"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "RunQueryResponse": {
-            "description": "The response for Datastore.RunQuery.",
-            "id": "RunQueryResponse",
-            "properties": {
-                "query": {
-                    "$ref": "Query",
-                    "description": "The parsed form of the `GqlQuery` from the request, if it was set."
-                },
-                "batch": {
-                    "$ref": "QueryResultBatch",
-                    "description": "A batch of query results (always present)."
-                }
-            },
-            "type": "object"
-        },
-        "AllocateIdsRequest": {
-            "description": "The request for Datastore.AllocateIds.",
-            "id": "AllocateIdsRequest",
-            "properties": {
-                "keys": {
-                    "description": "A list of keys with incomplete key paths for which to allocate IDs.\nNo key may be reserved/read-only.",
-                    "items": {
-                        "$ref": "Key"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "BeginTransactionRequest": {
-            "description": "The request for Datastore.BeginTransaction.",
-            "id": "BeginTransactionRequest",
-            "properties": {
-                "transactionOptions": {
-                    "$ref": "TransactionOptions",
-                    "description": "Options for a new transaction."
-                }
-            },
-            "type": "object"
-        },
-        "CommitRequest": {
-            "description": "The request for Datastore.Commit.",
-            "id": "CommitRequest",
-            "properties": {
-                "transaction": {
-                    "description": "The identifier of the transaction associated with the commit. A\ntransaction identifier is returned by a call to\nDatastore.BeginTransaction.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "mode": {
-                    "description": "The type of commit to perform. Defaults to `TRANSACTIONAL`.",
-                    "enum": [
-                        "MODE_UNSPECIFIED",
-                        "TRANSACTIONAL",
-                        "NON_TRANSACTIONAL"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified. This value must not be used.",
-                        "Transactional: The mutations are either all applied, or none are applied.\nLearn about transactions [here](https://cloud.google.com/datastore/docs/concepts/transactions).",
-                        "Non-transactional: The mutations may not apply as all or none."
-                    ],
-                    "type": "string"
-                },
-                "mutations": {
-                    "description": "The mutations to perform.\n\nWhen mode is `TRANSACTIONAL`, mutations affecting a single entity are\napplied in order. The following sequences of mutations affecting a single\nentity are not permitted in a single `Commit` request:\n\n- `insert` followed by `insert`\n- `update` followed by `insert`\n- `upsert` followed by `insert`\n- `delete` followed by `update`\n\nWhen mode is `NON_TRANSACTIONAL`, no two mutations may affect a single\nentity.",
-                    "items": {
-                        "$ref": "Mutation"
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
                     },
                     "type": "array"
                 }
@@ -607,52 +733,23 @@
             },
             "type": "object"
         },
-        "KindExpression": {
-            "description": "A representation of a kind.",
-            "id": "KindExpression",
+        "ReserveIdsResponse": {
+            "description": "The response for Datastore.ReserveIds.",
+            "id": "ReserveIdsResponse",
+            "properties": {},
+            "type": "object"
+        },
+        "PropertyReference": {
+            "description": "A reference to a property relative to the kind expressions.",
+            "id": "PropertyReference",
             "properties": {
                 "name": {
-                    "description": "The name of the kind.",
+                    "description": "The name of the property.\nIf name includes \".\"s, it may be interpreted as a property name path.",
                     "type": "string"
                 }
             },
             "type": "object"
         },
-        "Key": {
-            "description": "A unique identifier for an entity.\nIf a key's partition ID or any of its path kinds or names are\nreserved/read-only, the key is reserved/read-only.\nA reserved/read-only key is forbidden in certain documented contexts.",
-            "id": "Key",
-            "properties": {
-                "partitionId": {
-                    "$ref": "PartitionId",
-                    "description": "Entities are partitioned into subsets, currently identified by a project\nID and namespace ID.\nQueries are scoped to a single partition."
-                },
-                "path": {
-                    "description": "The entity path.\nAn entity path consists of one or more elements composed of a kind and a\nstring or numerical identifier, which identify entities. The first\nelement identifies a _root entity_, the second element identifies\na _child_ of the root entity, the third element identifies a child of the\nsecond entity, and so forth. The entities identified by all prefixes of\nthe path are called the element's _ancestors_.\n\nAn entity path is always fully complete: *all* of the entity's ancestors\nare required to be in the path along with the entity identifier itself.\nThe only exception is that in some documented cases, the identifier in the\nlast path element (for the entity) itself may be omitted. For example,\nthe last path element of the key of `Mutation.insert` may have no\nidentifier.\n\nA path can never be empty, and a path can have at most 100 elements.",
-                    "items": {
-                        "$ref": "PathElement"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "LatLng": {
-            "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n<a href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\">WGS84\nstandard</a>. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n    def NormalizeLongitude(longitude):\n      \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n      q, r = divmod(longitude, 360.0)\n      if r > 180.0 or (r == 180.0 and q <= -1.0):\n        return r - 360.0\n      return r\n\n    def NormalizeLatLng(latitude, longitude):\n      \"\"\"Wraps decimal degrees latitude and longitude to\n      [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n      r = latitude % 360.0\n      if r <= 90.0:\n        return r, NormalizeLongitude(longitude)\n      elif r >= 270.0:\n        return r - 360, NormalizeLongitude(longitude)\n      else:\n        return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n    assert 180.0 == NormalizeLongitude(180.0)\n    assert -180.0 == NormalizeLongitude(-180.0)\n    assert -179.0 == NormalizeLongitude(181.0)\n    assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n    assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n    assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n    assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n    assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n    assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)",
-            "id": "LatLng",
-            "properties": {
-                "latitude": {
-                    "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
-                    "format": "double",
-                    "type": "number"
-                },
-                "longitude": {
-                    "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
-                    "format": "double",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
         "GoogleDatastoreAdminV1beta1EntityFilter": {
             "description": "Identifies a subset of entities in a project. This is specified as\ncombinations of kinds and namespaces (either or both of which may be all, as\ndescribed in the following examples).\nExample usage:\n\nEntire project:\n  kinds=[], namespace_ids=[]\n\nKinds Foo and Bar in all namespaces:\n  kinds=['Foo', 'Bar'], namespace_ids=[]\n\nKinds Foo and Bar only in the default namespace:\n  kinds=['Foo', 'Bar'], namespace_ids=['']\n\nKinds Foo and Bar in both the default and Baz namespaces:\n  kinds=['Foo', 'Bar'], namespace_ids=['', 'Baz']\n\nThe entire Baz namespace:\n  kinds=[], namespace_ids=['Baz']",
             "id": "GoogleDatastoreAdminV1beta1EntityFilter",
@@ -674,79 +771,6 @@
             },
             "type": "object"
         },
-        "PropertyReference": {
-            "description": "A reference to a property relative to the kind expressions.",
-            "id": "PropertyReference",
-            "properties": {
-                "name": {
-                    "description": "The name of the property.\nIf name includes \".\"s, it may be interpreted as a property name path.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleDatastoreAdminV1beta1CommonMetadata": {
-            "description": "Metadata common to all Datastore Admin operations.",
-            "id": "GoogleDatastoreAdminV1beta1CommonMetadata",
-            "properties": {
-                "labels": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "The client-assigned labels which were provided when the operation was\ncreated. May also include additional labels.",
-                    "type": "object"
-                },
-                "endTime": {
-                    "description": "The time the operation ended, either successfully or otherwise.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "state": {
-                    "description": "The current state of the Operation.",
-                    "enum": [
-                        "STATE_UNSPECIFIED",
-                        "INITIALIZING",
-                        "PROCESSING",
-                        "CANCELLING",
-                        "FINALIZING",
-                        "SUCCESSFUL",
-                        "FAILED",
-                        "CANCELLED"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified.",
-                        "Request is being prepared for processing.",
-                        "Request is actively being processed.",
-                        "Request is in the process of being cancelled after user called\ngoogle.longrunning.Operations.CancelOperation on the operation.",
-                        "Request has been processed and is in its finalization stage.",
-                        "Request has completed successfully.",
-                        "Request has finished being processed, but encountered an error.",
-                        "Request has finished being cancelled after user called\ngoogle.longrunning.Operations.CancelOperation."
-                    ],
-                    "type": "string"
-                },
-                "operationType": {
-                    "description": "The type of the operation. Can be used as a filter in\nListOperationsRequest.",
-                    "enum": [
-                        "OPERATION_TYPE_UNSPECIFIED",
-                        "EXPORT_ENTITIES",
-                        "IMPORT_ENTITIES"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified.",
-                        "ExportEntities.",
-                        "ImportEntities."
-                    ],
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "The time that work began on the operation.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "Projection": {
             "description": "A representation of a property in a projection.",
             "id": "Projection",
@@ -758,20 +782,6 @@
             },
             "type": "object"
         },
-        "ArrayValue": {
-            "description": "An array value.",
-            "id": "ArrayValue",
-            "properties": {
-                "values": {
-                    "description": "Values in the array.\nThe order of this array may not be preserved if it contains a mix of\nindexed and unindexed values.",
-                    "items": {
-                        "$ref": "Value"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "Mutation": {
             "description": "A mutation to apply to an entity.",
             "id": "Mutation",
@@ -832,17 +842,6 @@
             "properties": {},
             "type": "object"
         },
-        "GoogleDatastoreAdminV1beta1ExportEntitiesResponse": {
-            "description": "The response for\ngoogle.datastore.admin.v1beta1.DatastoreAdmin.ExportEntities.",
-            "id": "GoogleDatastoreAdminV1beta1ExportEntitiesResponse",
-            "properties": {
-                "outputUrl": {
-                    "description": "Location of the output metadata file. This can be used to begin an import\ninto Cloud Datastore (this project or another project). See\ngoogle.datastore.admin.v1beta1.ImportEntitiesRequest.input_url.\nOnly present if the operation completed successfully.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "MutationResult": {
             "description": "The result of applying a mutation.",
             "id": "MutationResult",
@@ -863,73 +862,6 @@
             },
             "type": "object"
         },
-        "GqlQuery": {
-            "description": "A [GQL query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference).",
-            "id": "GqlQuery",
-            "properties": {
-                "queryString": {
-                    "description": "A string of the format described\n[here](https://cloud.google.com/datastore/docs/apis/gql/gql_reference).",
-                    "type": "string"
-                },
-                "positionalBindings": {
-                    "description": "Numbered binding site @1 references the first numbered parameter,\neffectively using 1-based indexing, rather than the usual 0.\n\nFor each binding site numbered i in `query_string`, there must be an i-th\nnumbered parameter. The inverse must also be true.",
-                    "items": {
-                        "$ref": "GqlQueryParameter"
-                    },
-                    "type": "array"
-                },
-                "namedBindings": {
-                    "additionalProperties": {
-                        "$ref": "GqlQueryParameter"
-                    },
-                    "description": "For each non-reserved named binding site in the query string, there must be\na named parameter with that name, but not necessarily the inverse.\n\nKey must match regex `A-Za-z_$*`, must not match regex\n`__.*__`, and must not be `\"\"`.",
-                    "type": "object"
-                },
-                "allowLiterals": {
-                    "description": "When false, the query string must not contain any literals and instead must\nbind all values. For example,\n`SELECT * FROM Kind WHERE a = 'string literal'` is not allowed, while\n`SELECT * FROM Kind WHERE a = @value` is.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "Filter": {
-            "description": "A holder for any type of filter.",
-            "id": "Filter",
-            "properties": {
-                "propertyFilter": {
-                    "$ref": "PropertyFilter",
-                    "description": "A filter on a property."
-                },
-                "compositeFilter": {
-                    "$ref": "CompositeFilter",
-                    "description": "A composite filter."
-                }
-            },
-            "type": "object"
-        },
-        "RunQueryRequest": {
-            "description": "The request for Datastore.RunQuery.",
-            "id": "RunQueryRequest",
-            "properties": {
-                "readOptions": {
-                    "$ref": "ReadOptions",
-                    "description": "The options for this query."
-                },
-                "query": {
-                    "$ref": "Query",
-                    "description": "The query to run."
-                },
-                "gqlQuery": {
-                    "$ref": "GqlQuery",
-                    "description": "The GQL query to run."
-                },
-                "partitionId": {
-                    "$ref": "PartitionId",
-                    "description": "Entities are partitioned into subsets, identified by a partition ID.\nQueries are scoped to a single partition.\nThis partition ID is normalized with the standard default context\npartition ID."
-                }
-            },
-            "type": "object"
-        },
         "RollbackRequest": {
             "description": "The request for Datastore.Rollback.",
             "id": "RollbackRequest",
@@ -942,12 +874,6 @@
             },
             "type": "object"
         },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
         "GoogleDatastoreAdminV1beta1ExportEntitiesMetadata": {
             "description": "Metadata for ExportEntities operations.",
             "id": "GoogleDatastoreAdminV1beta1ExportEntitiesMetadata",
@@ -975,21 +901,6 @@
             },
             "type": "object"
         },
-        "TransactionOptions": {
-            "description": "Options for beginning a new transaction.\n\nTransactions can be created explicitly with calls to\nDatastore.BeginTransaction or implicitly by setting\nReadOptions.new_transaction in read requests.",
-            "id": "TransactionOptions",
-            "properties": {
-                "readOnly": {
-                    "$ref": "ReadOnly",
-                    "description": "The transaction should only allow reads."
-                },
-                "readWrite": {
-                    "$ref": "ReadWrite",
-                    "description": "The transaction should allow both reads and writes."
-                }
-            },
-            "type": "object"
-        },
         "CompositeFilter": {
             "description": "A filter that merges multiple other filters using the given operator.",
             "id": "CompositeFilter",
@@ -1016,33 +927,6 @@
             },
             "type": "object"
         },
-        "GoogleDatastoreAdminV1beta1ImportEntitiesMetadata": {
-            "description": "Metadata for ImportEntities operations.",
-            "id": "GoogleDatastoreAdminV1beta1ImportEntitiesMetadata",
-            "properties": {
-                "inputUrl": {
-                    "description": "The location of the import metadata file. This will be the same value as\nthe google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url\nfield.",
-                    "type": "string"
-                },
-                "progressBytes": {
-                    "$ref": "GoogleDatastoreAdminV1beta1Progress",
-                    "description": "An estimate of the number of bytes processed."
-                },
-                "entityFilter": {
-                    "$ref": "GoogleDatastoreAdminV1beta1EntityFilter",
-                    "description": "Description of which entities are being imported."
-                },
-                "progressEntities": {
-                    "$ref": "GoogleDatastoreAdminV1beta1Progress",
-                    "description": "An estimate of the number of entities processed."
-                },
-                "common": {
-                    "$ref": "GoogleDatastoreAdminV1beta1CommonMetadata",
-                    "description": "Metadata common to all Datastore Admin operations."
-                }
-            },
-            "type": "object"
-        },
         "AllocateIdsResponse": {
             "description": "The response for Datastore.AllocateIds.",
             "id": "AllocateIdsResponse",
@@ -1057,65 +941,6 @@
             },
             "type": "object"
         },
-        "Query": {
-            "description": "A query for entities.",
-            "id": "Query",
-            "properties": {
-                "projection": {
-                    "description": "The projection to return. Defaults to returning all properties.",
-                    "items": {
-                        "$ref": "Projection"
-                    },
-                    "type": "array"
-                },
-                "endCursor": {
-                    "description": "An ending point for the query results. Query cursors are\nreturned in query result batches and\n[can only be used to limit the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "limit": {
-                    "description": "The maximum number of results to return. Applies after all other\nconstraints. Optional.\nUnspecified is interpreted as no limit.\nMust be >= 0 if specified.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "filter": {
-                    "$ref": "Filter",
-                    "description": "The filter to apply."
-                },
-                "startCursor": {
-                    "description": "A starting point for the query results. Query cursors are\nreturned in query result batches and\n[can only be used to continue the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "offset": {
-                    "description": "The number of results to skip. Applies before limit, but after all other\nconstraints. Optional. Must be >= 0 if specified.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "kind": {
-                    "description": "The kinds to query (if empty, returns entities of all kinds).\nCurrently at most 1 kind may be specified.",
-                    "items": {
-                        "$ref": "KindExpression"
-                    },
-                    "type": "array"
-                },
-                "distinctOn": {
-                    "description": "The properties to make distinct. The query results will contain the first\nresult for each distinct combination of values for the given properties\n(if empty, all results are returned).",
-                    "items": {
-                        "$ref": "PropertyReference"
-                    },
-                    "type": "array"
-                },
-                "order": {
-                    "description": "The order to apply to the query results (if empty, order is unspecified).",
-                    "items": {
-                        "$ref": "PropertyOrder"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "GoogleLongrunningOperation": {
             "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
             "id": "GoogleLongrunningOperation",
@@ -1151,16 +976,14 @@
             },
             "type": "object"
         },
-        "ReadOnly": {
-            "description": "Options specific to read-only transactions.",
-            "id": "ReadOnly",
-            "properties": {},
-            "type": "object"
-        },
         "PropertyFilter": {
             "description": "A filter on a specific property.",
             "id": "PropertyFilter",
             "properties": {
+                "value": {
+                    "$ref": "Value",
+                    "description": "The value to compare the property to."
+                },
                 "property": {
                     "$ref": "PropertyReference",
                     "description": "The property to filter by."
@@ -1186,101 +1009,6 @@
                         "Has ancestor."
                     ],
                     "type": "string"
-                },
-                "value": {
-                    "$ref": "Value",
-                    "description": "The value to compare the property to."
-                }
-            },
-            "type": "object"
-        },
-        "EntityResult": {
-            "description": "The result of fetching an entity from Datastore.",
-            "id": "EntityResult",
-            "properties": {
-                "entity": {
-                    "$ref": "Entity",
-                    "description": "The resulting entity."
-                },
-                "cursor": {
-                    "description": "A cursor that points to the position after the result entity.\nSet only when the `EntityResult` is part of a `QueryResultBatch` message.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "version": {
-                    "description": "The version of the entity, a strictly positive number that monotonically\nincreases with changes to the entity.\n\nThis field is set for `FULL` entity\nresults.\n\nFor missing entities in `LookupResponse`, this\nis the version of the snapshot that was used to look up the entity, and it\nis always set except for eventually consistent reads.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Value": {
-            "description": "A message that can hold any of the supported value types and associated\nmetadata.",
-            "id": "Value",
-            "properties": {
-                "blobValue": {
-                    "description": "A blob value.\nMay have at most 1,000,000 bytes.\nWhen `exclude_from_indexes` is false, may have at most 1500 bytes.\nIn JSON requests, must be base64-encoded.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "meaning": {
-                    "description": "The `meaning` field should only be populated for backwards compatibility.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "arrayValue": {
-                    "$ref": "ArrayValue",
-                    "description": "An array value.\nCannot contain another array value.\nA `Value` instance that sets field `array_value` must not set fields\n`meaning` or `exclude_from_indexes`."
-                },
-                "entityValue": {
-                    "$ref": "Entity",
-                    "description": "An entity value.\n\n- May have no key.\n- May have a key with an incomplete key path.\n- May have a reserved/read-only key."
-                },
-                "geoPointValue": {
-                    "$ref": "LatLng",
-                    "description": "A geo point value representing a point on the surface of Earth."
-                },
-                "integerValue": {
-                    "description": "An integer value.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "keyValue": {
-                    "$ref": "Key",
-                    "description": "A key value."
-                },
-                "stringValue": {
-                    "description": "A UTF-8 encoded string value.\nWhen `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.\nOtherwise, may be set to at least 1,000,000 bytes.",
-                    "type": "string"
-                },
-                "excludeFromIndexes": {
-                    "description": "If the value should be excluded from all indexes including those defined\nexplicitly.",
-                    "type": "boolean"
-                },
-                "doubleValue": {
-                    "description": "A double value.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "timestampValue": {
-                    "description": "A timestamp value.\nWhen stored in the Datastore, precise only to microseconds;\nany additional precision is rounded down.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "nullValue": {
-                    "description": "A null value.",
-                    "enum": [
-                        "NULL_VALUE"
-                    ],
-                    "enumDescriptions": [
-                        "Null value."
-                    ],
-                    "type": "string"
-                },
-                "booleanValue": {
-                    "description": "A boolean value.",
-                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -1337,55 +1065,10 @@
             },
             "type": "object"
         },
-        "ReadWrite": {
-            "description": "Options specific to read / write transactions.",
-            "id": "ReadWrite",
-            "properties": {
-                "previousTransaction": {
-                    "description": "The transaction identifier of the transaction being retried.",
-                    "format": "byte",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LookupRequest": {
-            "description": "The request for Datastore.Lookup.",
-            "id": "LookupRequest",
-            "properties": {
-                "readOptions": {
-                    "$ref": "ReadOptions",
-                    "description": "The options for this lookup request."
-                },
-                "keys": {
-                    "description": "Keys of entities to look up.",
-                    "items": {
-                        "$ref": "Key"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "QueryResultBatch": {
             "description": "A batch of results produced by a query.",
             "id": "QueryResultBatch",
             "properties": {
-                "snapshotVersion": {
-                    "description": "The version number of the snapshot this batch was returned from.\nThis applies to the range of results from the query's `start_cursor` (or\nthe beginning of the query if no cursor was given) to this batch's\n`end_cursor` (not the query's `end_cursor`).\n\nIn a single transaction, subsequent query result batches for the same query\ncan have a greater snapshot version number. Each batch's snapshot version\nis valid for all preceding batches.\nThe value will be zero for eventually consistent queries.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "skippedCursor": {
-                    "description": "A cursor that points to the position after the last skipped result.\nWill be set when `skipped_results` != 0.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "skippedResults": {
-                    "description": "The number of results skipped, typically because of an offset.",
-                    "format": "int32",
-                    "type": "integer"
-                },
                 "entityResultType": {
                     "description": "The result type for every entity in `entity_results`.",
                     "enum": [
@@ -1409,11 +1092,6 @@
                     },
                     "type": "array"
                 },
-                "endCursor": {
-                    "description": "A cursor that points to the position after the last result in the batch.",
-                    "format": "byte",
-                    "type": "string"
-                },
                 "moreResults": {
                     "description": "The state of the query after the current batch.",
                     "enum": [
@@ -1431,6 +1109,26 @@
                         "The query is finished, and there are no more results."
                     ],
                     "type": "string"
+                },
+                "endCursor": {
+                    "description": "A cursor that points to the position after the last result in the batch.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "snapshotVersion": {
+                    "description": "The version number of the snapshot this batch was returned from.\nThis applies to the range of results from the query's `start_cursor` (or\nthe beginning of the query if no cursor was given) to this batch's\n`end_cursor` (not the query's `end_cursor`).\n\nIn a single transaction, subsequent query result batches for the same query\ncan have a greater snapshot version number. Each batch's snapshot version\nis valid for all preceding batches.\nThe value will be zero for eventually consistent queries.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "skippedCursor": {
+                    "description": "A cursor that points to the position after the last skipped result.\nWill be set when `skipped_results` != 0.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "skippedResults": {
+                    "description": "The number of results skipped, typically because of an offset.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -1456,10 +1154,6 @@
             "description": "A (kind, ID/name) pair used to construct a key path.\n\nIf either name or ID is set, the element is complete.\nIf neither is set, the element is incomplete.",
             "id": "PathElement",
             "properties": {
-                "name": {
-                    "description": "The name of the entity.\nA name matching regex `__.*__` is reserved/read-only.\nA name must not be more than 1500 bytes when UTF-8 encoded.\nCannot be `\"\"`.",
-                    "type": "string"
-                },
                 "kind": {
                     "description": "The kind of the entity.\nA kind matching regex `__.*__` is reserved/read-only.\nA kind must not contain more than 1500 bytes when UTF-8 encoded.\nCannot be `\"\"`.",
                     "type": "string"
@@ -1468,9 +1162,366 @@
                     "description": "The auto-allocated ID of the entity.\nNever equal to zero. Values less than zero are discouraged and may not\nbe supported in the future.",
                     "format": "int64",
                     "type": "string"
+                },
+                "name": {
+                    "description": "The name of the entity.\nA name matching regex `__.*__` is reserved/read-only.\nA name must not be more than 1500 bytes when UTF-8 encoded.\nCannot be `\"\"`.",
+                    "type": "string"
                 }
             },
             "type": "object"
+        },
+        "GqlQueryParameter": {
+            "description": "A binding parameter for a GQL query.",
+            "id": "GqlQueryParameter",
+            "properties": {
+                "cursor": {
+                    "description": "A query cursor. Query cursors are returned in query\nresult batches.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "value": {
+                    "$ref": "Value",
+                    "description": "A value parameter."
+                }
+            },
+            "type": "object"
+        },
+        "GoogleLongrunningListOperationsResponse": {
+            "description": "The response message for Operations.ListOperations.",
+            "id": "GoogleLongrunningListOperationsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
+                "operations": {
+                    "description": "A list of operations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "GoogleLongrunningOperation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "BeginTransactionResponse": {
+            "description": "The response for Datastore.BeginTransaction.",
+            "id": "BeginTransactionResponse",
+            "properties": {
+                "transaction": {
+                    "description": "The transaction identifier (always present).",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LookupResponse": {
+            "description": "The response for Datastore.Lookup.",
+            "id": "LookupResponse",
+            "properties": {
+                "deferred": {
+                    "description": "A list of keys that were not looked up due to resource constraints. The\norder of results in this field is undefined and has no relation to the\norder of the keys in the input.",
+                    "items": {
+                        "$ref": "Key"
+                    },
+                    "type": "array"
+                },
+                "missing": {
+                    "description": "Entities not found as `ResultType.KEY_ONLY` entities. The order of results\nin this field is undefined and has no relation to the order of the keys\nin the input.",
+                    "items": {
+                        "$ref": "EntityResult"
+                    },
+                    "type": "array"
+                },
+                "found": {
+                    "description": "Entities found as `ResultType.FULL` entities. The order of results in this\nfield is undefined and has no relation to the order of the keys in the\ninput.",
+                    "items": {
+                        "$ref": "EntityResult"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "RunQueryResponse": {
+            "description": "The response for Datastore.RunQuery.",
+            "id": "RunQueryResponse",
+            "properties": {
+                "batch": {
+                    "$ref": "QueryResultBatch",
+                    "description": "A batch of query results (always present)."
+                },
+                "query": {
+                    "$ref": "Query",
+                    "description": "The parsed form of the `GqlQuery` from the request, if it was set."
+                }
+            },
+            "type": "object"
+        },
+        "AllocateIdsRequest": {
+            "description": "The request for Datastore.AllocateIds.",
+            "id": "AllocateIdsRequest",
+            "properties": {
+                "keys": {
+                    "description": "A list of keys with incomplete key paths for which to allocate IDs.\nNo key may be reserved/read-only.",
+                    "items": {
+                        "$ref": "Key"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "CommitRequest": {
+            "description": "The request for Datastore.Commit.",
+            "id": "CommitRequest",
+            "properties": {
+                "mode": {
+                    "description": "The type of commit to perform. Defaults to `TRANSACTIONAL`.",
+                    "enum": [
+                        "MODE_UNSPECIFIED",
+                        "TRANSACTIONAL",
+                        "NON_TRANSACTIONAL"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified. This value must not be used.",
+                        "Transactional: The mutations are either all applied, or none are applied.\nLearn about transactions [here](https://cloud.google.com/datastore/docs/concepts/transactions).",
+                        "Non-transactional: The mutations may not apply as all or none."
+                    ],
+                    "type": "string"
+                },
+                "mutations": {
+                    "description": "The mutations to perform.\n\nWhen mode is `TRANSACTIONAL`, mutations affecting a single entity are\napplied in order. The following sequences of mutations affecting a single\nentity are not permitted in a single `Commit` request:\n\n- `insert` followed by `insert`\n- `update` followed by `insert`\n- `upsert` followed by `insert`\n- `delete` followed by `update`\n\nWhen mode is `NON_TRANSACTIONAL`, no two mutations may affect a single\nentity.",
+                    "items": {
+                        "$ref": "Mutation"
+                    },
+                    "type": "array"
+                },
+                "transaction": {
+                    "description": "The identifier of the transaction associated with the commit. A\ntransaction identifier is returned by a call to\nDatastore.BeginTransaction.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "BeginTransactionRequest": {
+            "description": "The request for Datastore.BeginTransaction.",
+            "id": "BeginTransactionRequest",
+            "properties": {
+                "transactionOptions": {
+                    "$ref": "TransactionOptions",
+                    "description": "Options for a new transaction."
+                }
+            },
+            "type": "object"
+        },
+        "KindExpression": {
+            "description": "A representation of a kind.",
+            "id": "KindExpression",
+            "properties": {
+                "name": {
+                    "description": "The name of the kind.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LatLng": {
+            "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n<a href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\">WGS84\nstandard</a>. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n    def NormalizeLongitude(longitude):\n      \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n      q, r = divmod(longitude, 360.0)\n      if r > 180.0 or (r == 180.0 and q <= -1.0):\n        return r - 360.0\n      return r\n\n    def NormalizeLatLng(latitude, longitude):\n      \"\"\"Wraps decimal degrees latitude and longitude to\n      [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n      r = latitude % 360.0\n      if r <= 90.0:\n        return r, NormalizeLongitude(longitude)\n      elif r >= 270.0:\n        return r - 360, NormalizeLongitude(longitude)\n      else:\n        return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n    assert 180.0 == NormalizeLongitude(180.0)\n    assert -180.0 == NormalizeLongitude(-180.0)\n    assert -179.0 == NormalizeLongitude(181.0)\n    assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n    assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n    assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n    assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n    assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n    assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)",
+            "id": "LatLng",
+            "properties": {
+                "longitude": {
+                    "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
+                    "format": "double",
+                    "type": "number"
+                },
+                "latitude": {
+                    "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "Key": {
+            "description": "A unique identifier for an entity.\nIf a key's partition ID or any of its path kinds or names are\nreserved/read-only, the key is reserved/read-only.\nA reserved/read-only key is forbidden in certain documented contexts.",
+            "id": "Key",
+            "properties": {
+                "path": {
+                    "description": "The entity path.\nAn entity path consists of one or more elements composed of a kind and a\nstring or numerical identifier, which identify entities. The first\nelement identifies a _root entity_, the second element identifies\na _child_ of the root entity, the third element identifies a child of the\nsecond entity, and so forth. The entities identified by all prefixes of\nthe path are called the element's _ancestors_.\n\nAn entity path is always fully complete: *all* of the entity's ancestors\nare required to be in the path along with the entity identifier itself.\nThe only exception is that in some documented cases, the identifier in the\nlast path element (for the entity) itself may be omitted. For example,\nthe last path element of the key of `Mutation.insert` may have no\nidentifier.\n\nA path can never be empty, and a path can have at most 100 elements.",
+                    "items": {
+                        "$ref": "PathElement"
+                    },
+                    "type": "array"
+                },
+                "partitionId": {
+                    "$ref": "PartitionId",
+                    "description": "Entities are partitioned into subsets, currently identified by a project\nID and namespace ID.\nQueries are scoped to a single partition."
+                }
+            },
+            "type": "object"
+        },
+        "GoogleDatastoreAdminV1beta1CommonMetadata": {
+            "description": "Metadata common to all Datastore Admin operations.",
+            "id": "GoogleDatastoreAdminV1beta1CommonMetadata",
+            "properties": {
+                "state": {
+                    "description": "The current state of the Operation.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "INITIALIZING",
+                        "PROCESSING",
+                        "CANCELLING",
+                        "FINALIZING",
+                        "SUCCESSFUL",
+                        "FAILED",
+                        "CANCELLED"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "Request is being prepared for processing.",
+                        "Request is actively being processed.",
+                        "Request is in the process of being cancelled after user called\ngoogle.longrunning.Operations.CancelOperation on the operation.",
+                        "Request has been processed and is in its finalization stage.",
+                        "Request has completed successfully.",
+                        "Request has finished being processed, but encountered an error.",
+                        "Request has finished being cancelled after user called\ngoogle.longrunning.Operations.CancelOperation."
+                    ],
+                    "type": "string"
+                },
+                "operationType": {
+                    "description": "The type of the operation. Can be used as a filter in\nListOperationsRequest.",
+                    "enum": [
+                        "OPERATION_TYPE_UNSPECIFIED",
+                        "EXPORT_ENTITIES",
+                        "IMPORT_ENTITIES"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "ExportEntities.",
+                        "ImportEntities."
+                    ],
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "The time that work began on the operation.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "The client-assigned labels which were provided when the operation was\ncreated. May also include additional labels.",
+                    "type": "object"
+                },
+                "endTime": {
+                    "description": "The time the operation ended, either successfully or otherwise.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ArrayValue": {
+            "description": "An array value.",
+            "id": "ArrayValue",
+            "properties": {
+                "values": {
+                    "description": "Values in the array.\nThe order of this array may not be preserved if it contains a mix of\nindexed and unindexed values.",
+                    "items": {
+                        "$ref": "Value"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleDatastoreAdminV1beta1ExportEntitiesResponse": {
+            "description": "The response for\ngoogle.datastore.admin.v1beta1.DatastoreAdmin.ExportEntities.",
+            "id": "GoogleDatastoreAdminV1beta1ExportEntitiesResponse",
+            "properties": {
+                "outputUrl": {
+                    "description": "Location of the output metadata file. This can be used to begin an import\ninto Cloud Datastore (this project or another project). See\ngoogle.datastore.admin.v1beta1.ImportEntitiesRequest.input_url.\nOnly present if the operation completed successfully.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GqlQuery": {
+            "description": "A [GQL query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference).",
+            "id": "GqlQuery",
+            "properties": {
+                "queryString": {
+                    "description": "A string of the format described\n[here](https://cloud.google.com/datastore/docs/apis/gql/gql_reference).",
+                    "type": "string"
+                },
+                "positionalBindings": {
+                    "description": "Numbered binding site @1 references the first numbered parameter,\neffectively using 1-based indexing, rather than the usual 0.\n\nFor each binding site numbered i in `query_string`, there must be an i-th\nnumbered parameter. The inverse must also be true.",
+                    "items": {
+                        "$ref": "GqlQueryParameter"
+                    },
+                    "type": "array"
+                },
+                "namedBindings": {
+                    "additionalProperties": {
+                        "$ref": "GqlQueryParameter"
+                    },
+                    "description": "For each non-reserved named binding site in the query string, there must be\na named parameter with that name, but not necessarily the inverse.\n\nKey must match regex `A-Za-z_$*`, must not match regex\n`__.*__`, and must not be `\"\"`.",
+                    "type": "object"
+                },
+                "allowLiterals": {
+                    "description": "When false, the query string must not contain any literals and instead must\nbind all values. For example,\n`SELECT * FROM Kind WHERE a = 'string literal'` is not allowed, while\n`SELECT * FROM Kind WHERE a = @value` is.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "Filter": {
+            "description": "A holder for any type of filter.",
+            "id": "Filter",
+            "properties": {
+                "propertyFilter": {
+                    "$ref": "PropertyFilter",
+                    "description": "A filter on a property."
+                },
+                "compositeFilter": {
+                    "$ref": "CompositeFilter",
+                    "description": "A composite filter."
+                }
+            },
+            "type": "object"
+        },
+        "RunQueryRequest": {
+            "description": "The request for Datastore.RunQuery.",
+            "id": "RunQueryRequest",
+            "properties": {
+                "gqlQuery": {
+                    "$ref": "GqlQuery",
+                    "description": "The GQL query to run."
+                },
+                "partitionId": {
+                    "$ref": "PartitionId",
+                    "description": "Entities are partitioned into subsets, identified by a partition ID.\nQueries are scoped to a single partition.\nThis partition ID is normalized with the standard default context\npartition ID."
+                },
+                "readOptions": {
+                    "$ref": "ReadOptions",
+                    "description": "The options for this query."
+                },
+                "query": {
+                    "$ref": "Query",
+                    "description": "The query to run."
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/dns__v1.json b/discovery/googleapis/dns__v1.json
index 6560281..43d971b 100644
--- a/discovery/googleapis/dns__v1.json
+++ b/discovery/googleapis/dns__v1.json
@@ -23,7 +23,7 @@
     "description": "Configures and serves authoritative DNS records.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/cloud-dns",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/yX-8jCztVBOlCSBzeKUCt02f39I\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/G3TPfD5Aa-m4oZ-qP-YiwOeq62Y\"",
     "icons": {
         "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
         "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -442,7 +442,7 @@
             }
         }
     },
-    "revision": "20170928",
+    "revision": "20171011",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Change": {
diff --git a/discovery/googleapis/doubleclicksearch__v2.json b/discovery/googleapis/doubleclicksearch__v2.json
index 7826824..4968dbe 100644
--- a/discovery/googleapis/doubleclicksearch__v2.json
+++ b/discovery/googleapis/doubleclicksearch__v2.json
@@ -14,7 +14,7 @@
     "description": "Reports and modifies your advertising data in DoubleClick Search (for example, campaigns, ad groups, keywords, and conversions).",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/doubleclick-search/",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/jt2Jeduxj8j_dexiJf_y-tPFSuE\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/w75_dPBciIYhf6ij2uM4EJ3bKrA\"",
     "icons": {
         "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
         "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -430,7 +430,7 @@
             }
         }
     },
-    "revision": "20170926",
+    "revision": "20171017",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Availability": {
diff --git a/discovery/googleapis/drive__v2.json b/discovery/googleapis/drive__v2.json
index 5d13aa2..7f388b6 100644
--- a/discovery/googleapis/drive__v2.json
+++ b/discovery/googleapis/drive__v2.json
@@ -38,7 +38,7 @@
     "description": "Manages files in Drive including uploading, downloading, searching, detecting changes, and updating sharing permissions.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/drive/",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/1RCkqkDVxjzKcg79tVyn2P5sSLo\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/ckAfwZJKFW_oyZryoWrrcHFmz5I\"",
     "icons": {
         "x16": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_16.png",
         "x32": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_32.png"
@@ -3019,7 +3019,7 @@
             }
         }
     },
-    "revision": "20170929",
+    "revision": "20171013",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "About": {
diff --git a/discovery/googleapis/drive__v3.json b/discovery/googleapis/drive__v3.json
index 8ff650c..baca2db 100644
--- a/discovery/googleapis/drive__v3.json
+++ b/discovery/googleapis/drive__v3.json
@@ -35,7 +35,7 @@
     "description": "Manages files in Drive including uploading, downloading, searching, detecting changes, and updating sharing permissions.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/drive/",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/HW5w-cFf0U4krsmZXvIvp9JfcBg\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/hZMEYFHornfaEP0yjVaWLl21gSc\"",
     "icons": {
         "x16": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_16.png",
         "x32": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_32.png"
@@ -1714,7 +1714,7 @@
             }
         }
     },
-    "revision": "20170929",
+    "revision": "20171013",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "About": {
diff --git a/discovery/googleapis/firebasedynamiclinks__v1.json b/discovery/googleapis/firebasedynamiclinks__v1.json
index feceecc..26b9885 100644
--- a/discovery/googleapis/firebasedynamiclinks__v1.json
+++ b/discovery/googleapis/firebasedynamiclinks__v1.json
@@ -25,16 +25,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -56,11 +46,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -74,6 +59,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -110,33 +100,39 @@
             "description": "Pretty-print response.",
             "location": "query",
             "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
-        "shortLinks": {
+        "v1": {
             "methods": {
-                "create": {
-                    "description": "Creates a short Dynamic Link given either a valid long Dynamic Link or\ndetails such as Dynamic Link domain, Android and iOS app information.\nThe created short Dynamic Link will not expire.\n\nRepeated calls with the same long Dynamic Link or Dynamic Link information\nwill produce the same short Dynamic Link.\n\nThe Dynamic Link domain in the request must be owned by requester's\nFirebase project.",
+                "installAttribution": {
+                    "description": "Get iOS strong/weak-match info for post-install attribution.",
                     "httpMethod": "POST",
-                    "id": "firebasedynamiclinks.shortLinks.create",
+                    "id": "firebasedynamiclinks.installAttribution",
                     "parameterOrder": [],
                     "parameters": {},
-                    "path": "v1/shortLinks",
+                    "path": "v1/installAttribution",
                     "request": {
-                        "$ref": "CreateShortDynamicLinkRequest"
+                        "$ref": "GetIosPostInstallAttributionRequest"
                     },
                     "response": {
-                        "$ref": "CreateShortDynamicLinkResponse"
+                        "$ref": "GetIosPostInstallAttributionResponse"
                     },
                     "scopes": [
                         "https://www.googleapis.com/auth/firebase"
                     ]
-                }
-            }
-        },
-        "v1": {
-            "methods": {
+                },
                 "getLinkStats": {
                     "description": "Fetches analytics stats of a short Dynamic Link for a given\nduration. Metrics include number of clicks, redirects, installs,\napp first opens, and app reopens.",
                     "httpMethod": "GET",
@@ -165,19 +161,23 @@
                     "scopes": [
                         "https://www.googleapis.com/auth/firebase"
                     ]
-                },
-                "installAttribution": {
-                    "description": "Get iOS strong/weak-match info for post-install attribution.",
+                }
+            }
+        },
+        "shortLinks": {
+            "methods": {
+                "create": {
+                    "description": "Creates a short Dynamic Link given either a valid long Dynamic Link or\ndetails such as Dynamic Link domain, Android and iOS app information.\nThe created short Dynamic Link will not expire.\n\nRepeated calls with the same long Dynamic Link or Dynamic Link information\nwill produce the same short Dynamic Link.\n\nThe Dynamic Link domain in the request must be owned by requester's\nFirebase project.",
                     "httpMethod": "POST",
-                    "id": "firebasedynamiclinks.installAttribution",
+                    "id": "firebasedynamiclinks.shortLinks.create",
                     "parameterOrder": [],
                     "parameters": {},
-                    "path": "v1/installAttribution",
+                    "path": "v1/shortLinks",
                     "request": {
-                        "$ref": "GetIosPostInstallAttributionRequest"
+                        "$ref": "CreateShortDynamicLinkRequest"
                     },
                     "response": {
-                        "$ref": "GetIosPostInstallAttributionResponse"
+                        "$ref": "CreateShortDynamicLinkResponse"
                     },
                     "scopes": [
                         "https://www.googleapis.com/auth/firebase"
@@ -186,13 +186,17 @@
             }
         }
     },
-    "revision": "20171003",
+    "revision": "20171016",
     "rootUrl": "https://firebasedynamiclinks-ipv6.googleapis.com/",
     "schemas": {
         "CreateShortDynamicLinkResponse": {
             "description": "Response to create a short Dynamic Link.",
             "id": "CreateShortDynamicLinkResponse",
             "properties": {
+                "shortLink": {
+                    "description": "Short Dynamic Link value. e.g. https://abcd.app.goo.gl/wxyz",
+                    "type": "string"
+                },
                 "previewLink": {
                     "description": "Preivew link to show the link flow chart.",
                     "type": "string"
@@ -203,10 +207,6 @@
                         "$ref": "DynamicLinkWarning"
                     },
                     "type": "array"
-                },
-                "shortLink": {
-                    "description": "Short Dynamic Link value. e.g. https://abcd.app.goo.gl/wxyz",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -248,14 +248,14 @@
                     "description": "Campaign source; used to identify a search engine, newsletter, or other\nsource.",
                     "type": "string"
                 },
-                "utmCampaign": {
-                    "description": "Campaign name; used for keyword analysis to identify a specific product\npromotion or strategic campaign.",
-                    "type": "string"
-                },
                 "gclid": {
                     "description": "[AdWords autotagging parameter](https://support.google.com/analytics/answer/1033981?hl=en);\nused to measure Google AdWords ads. This value is generated dynamically\nand should never be modified.",
                     "type": "string"
                 },
+                "utmCampaign": {
+                    "description": "Campaign name; used for keyword analysis to identify a specific product\npromotion or strategic campaign.",
+                    "type": "string"
+                },
                 "utmContent": {
                     "description": "Campaign content; used for A/B testing and content-targeted ads to\ndifferentiate ads or links that point to the same URL.",
                     "type": "string"
@@ -267,10 +267,22 @@
             "description": "Information about a Dynamic Link.",
             "id": "DynamicLinkInfo",
             "properties": {
+                "navigationInfo": {
+                    "$ref": "NavigationInfo",
+                    "description": "Information of navigation behavior of a Firebase Dynamic Links."
+                },
+                "analyticsInfo": {
+                    "$ref": "AnalyticsInfo",
+                    "description": "Parameters used for tracking. See all tracking parameters in the\n[documentation](https://firebase.google.com/docs/dynamic-links/create-manually)."
+                },
                 "dynamicLinkDomain": {
                     "description": "Dynamic Links domain that the project owns, e.g. abcd.app.goo.gl\n[Learn more](https://firebase.google.com/docs/dynamic-links/android/receive)\non how to set up Dynamic Link domain associated with your Firebase project.\n\nRequired.",
                     "type": "string"
                 },
+                "desktopInfo": {
+                    "$ref": "DesktopInfo",
+                    "description": "Desktop related information. See desktop related parameters in the\n[documentation](https://firebase.google.com/docs/dynamic-links/create-manually)."
+                },
                 "link": {
                     "description": "The link your app will open, You can specify any URL your app can handle.\nThis link must be a well-formatted URL, be properly URL-encoded, and use\nthe HTTP or HTTPS scheme. See 'link' parameters in the\n[documentation](https://firebase.google.com/docs/dynamic-links/create-manually).\n\nRequired.",
                     "type": "string"
@@ -286,14 +298,6 @@
                 "androidInfo": {
                     "$ref": "AndroidInfo",
                     "description": "Android related information. See Android related parameters in the\n[documentation](https://firebase.google.com/docs/dynamic-links/create-manually)."
-                },
-                "navigationInfo": {
-                    "$ref": "NavigationInfo",
-                    "description": "Information of navigation behavior of a Firebase Dynamic Links."
-                },
-                "analyticsInfo": {
-                    "$ref": "AnalyticsInfo",
-                    "description": "Parameters used for tracking. See all tracking parameters in the\n[documentation](https://firebase.google.com/docs/dynamic-links/create-manually)."
                 }
             },
             "type": "object"
@@ -302,6 +306,10 @@
             "description": "Parameters for iTunes Connect App Analytics.",
             "id": "ITunesConnectAnalytics",
             "properties": {
+                "at": {
+                    "description": "Affiliate token used to create affiliate-coded links.",
+                    "type": "string"
+                },
                 "ct": {
                     "description": "Campaign text that developers can optionally add to any link in order to\ntrack sales from a specific marketing campaign.",
                     "type": "string"
@@ -313,10 +321,6 @@
                 "pt": {
                     "description": "Provider token that enables analytics for Dynamic Links from within iTunes\nConnect.",
                     "type": "string"
-                },
-                "at": {
-                    "description": "Affiliate token used to create affiliate-coded links.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -354,6 +358,34 @@
             "description": "Response for iSDK to execute strong match flow for post-install attribution.",
             "id": "GetIosPostInstallAttributionResponse",
             "properties": {
+                "utmCampaign": {
+                    "description": "Scion campaign value to be propagated by iSDK to Scion at post-install.",
+                    "type": "string"
+                },
+                "fallbackLink": {
+                    "description": "The link to navigate to update the app if min version is not met.\nThis is either (in order): 1) fallback link (from ?ifl= parameter, if\nspecified by developer) or 2) AppStore URL (from ?isi= parameter, if\nspecified), or 3) the payload link (from required link= parameter).",
+                    "type": "string"
+                },
+                "requestedLink": {
+                    "description": "Entire FDL (short or long) attributed post-install via one of several\ntechniques (fingerprint, copy unique).",
+                    "type": "string"
+                },
+                "utmMedium": {
+                    "description": "Scion medium value to be propagated by iSDK to Scion at post-install.",
+                    "type": "string"
+                },
+                "utmSource": {
+                    "description": "Scion source value to be propagated by iSDK to Scion at post-install.",
+                    "type": "string"
+                },
+                "isStrongMatchExecutable": {
+                    "description": "Instruction for iSDK to attemmpt to perform strong match. For instance,\nif browser does not support/allow cookie or outside of support browsers,\nthis will be false.",
+                    "type": "boolean"
+                },
+                "appMinimumVersion": {
+                    "description": "The minimum version for app, specified by dev through ?imv= parameter.\nReturn to iSDK to allow app to evaluate if current version meets this.",
+                    "type": "string"
+                },
                 "invitationId": {
                     "description": "Invitation ID attributed post-install via one of several techniques\n(fingerprint, copy unique).",
                     "type": "string"
@@ -389,34 +421,6 @@
                 "resolvedLink": {
                     "description": "The entire FDL, expanded from a short link. It is the same as the\nrequested_link, if it is long. Parameters from this should not be\nused directly (ie: server can default utm_[campaign|medium|source]\nto a value when requested_link lack them, server determine the best\nfallback_link when requested_link specifies >1 fallback links).",
                     "type": "string"
-                },
-                "utmCampaign": {
-                    "description": "Scion campaign value to be propagated by iSDK to Scion at post-install.",
-                    "type": "string"
-                },
-                "fallbackLink": {
-                    "description": "The link to navigate to update the app if min version is not met.\nThis is either (in order): 1) fallback link (from ?ifl= parameter, if\nspecified by developer) or 2) AppStore URL (from ?isi= parameter, if\nspecified), or 3) the payload link (from required link= parameter).",
-                    "type": "string"
-                },
-                "requestedLink": {
-                    "description": "Entire FDL (short or long) attributed post-install via one of several\ntechniques (fingerprint, copy unique).",
-                    "type": "string"
-                },
-                "utmMedium": {
-                    "description": "Scion medium value to be propagated by iSDK to Scion at post-install.",
-                    "type": "string"
-                },
-                "utmSource": {
-                    "description": "Scion source value to be propagated by iSDK to Scion at post-install.",
-                    "type": "string"
-                },
-                "isStrongMatchExecutable": {
-                    "description": "Instruction for iSDK to attemmpt to perform strong match. For instance,\nif browser does not support/allow cookie or outside of support browsers,\nthis will be false.",
-                    "type": "boolean"
-                },
-                "appMinimumVersion": {
-                    "description": "The minimum version for app, specified by dev through ?imv= parameter.\nReturn to iSDK to allow app to evaluate if current version meets this.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -440,16 +444,25 @@
             },
             "type": "object"
         },
-        "DynamicLinkStats": {
-            "description": "Analytics stats of a Dynamic Link for a given timeframe.",
-            "id": "DynamicLinkStats",
+        "AndroidInfo": {
+            "description": "Android related attributes to the Dynamic Link.",
+            "id": "AndroidInfo",
             "properties": {
-                "linkEventStats": {
-                    "description": "Dynamic Link event stats.",
-                    "items": {
-                        "$ref": "DynamicLinkEventStat"
-                    },
-                    "type": "array"
+                "androidFallbackLink": {
+                    "description": "Link to open on Android if the app is not installed.",
+                    "type": "string"
+                },
+                "androidPackageName": {
+                    "description": "Android package name of the app.",
+                    "type": "string"
+                },
+                "androidMinPackageVersionCode": {
+                    "description": "Minimum version code for the Android app. If the installed app’s version\ncode is lower, then the user is taken to the Play Store.",
+                    "type": "string"
+                },
+                "androidLink": {
+                    "description": "If specified, this overrides the ‘link’ parameter on Android.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -458,14 +471,6 @@
             "description": "Dynamic Links warning messages.",
             "id": "DynamicLinkWarning",
             "properties": {
-                "warningMessage": {
-                    "description": "The warning message to help developers improve their requests.",
-                    "type": "string"
-                },
-                "warningDocumentLink": {
-                    "description": "The document describing the warning, and helps resolve.",
-                    "type": "string"
-                },
                 "warningCode": {
                     "description": "The warning code.",
                     "enum": [
@@ -531,29 +536,28 @@
                         "The iOS bundle ID does not match with the given iOS store ID."
                     ],
                     "type": "string"
+                },
+                "warningMessage": {
+                    "description": "The warning message to help developers improve their requests.",
+                    "type": "string"
+                },
+                "warningDocumentLink": {
+                    "description": "The document describing the warning, and helps resolve.",
+                    "type": "string"
                 }
             },
             "type": "object"
         },
-        "AndroidInfo": {
-            "description": "Android related attributes to the Dynamic Link.",
-            "id": "AndroidInfo",
+        "DynamicLinkStats": {
+            "description": "Analytics stats of a Dynamic Link for a given timeframe.",
+            "id": "DynamicLinkStats",
             "properties": {
-                "androidMinPackageVersionCode": {
-                    "description": "Minimum version code for the Android app. If the installed app’s version\ncode is lower, then the user is taken to the Play Store.",
-                    "type": "string"
-                },
-                "androidLink": {
-                    "description": "If specified, this overrides the ‘link’ parameter on Android.",
-                    "type": "string"
-                },
-                "androidFallbackLink": {
-                    "description": "Link to open on Android if the app is not installed.",
-                    "type": "string"
-                },
-                "androidPackageName": {
-                    "description": "Android package name of the app.",
-                    "type": "string"
+                "linkEventStats": {
+                    "description": "Dynamic Link event stats.",
+                    "items": {
+                        "$ref": "DynamicLinkEventStat"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -634,6 +638,17 @@
             },
             "type": "object"
         },
+        "DesktopInfo": {
+            "description": "Desktop related attributes to the Dynamic Link.",
+            "id": "DesktopInfo",
+            "properties": {
+                "desktopFallbackLink": {
+                    "description": "Link to open on desktop.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "DynamicLinkEventStat": {
             "description": "Dynamic Link event stat.",
             "id": "DynamicLinkEventStat",
@@ -686,6 +701,10 @@
             "description": "Request for iSDK to execute strong match flow for post-install attribution.\nThis is meant for iOS requests only. Requests from other platforms will\nnot be honored.",
             "id": "GetIosPostInstallAttributionRequest",
             "properties": {
+                "device": {
+                    "$ref": "DeviceInfo",
+                    "description": "Device information."
+                },
                 "uniqueMatchLinkToCheck": {
                     "description": "Possible unique matched link that server need to check before performing\nfingerprint match. If passed link is short server need to expand the link.\nIf link is long server need to vslidate the link.",
                     "type": "string"
@@ -699,20 +718,6 @@
                     "description": "iOS version, ie: 9.3.5.\nConsider adding \"build\".",
                     "type": "string"
                 },
-                "visualStyle": {
-                    "description": "Strong match page information. Disambiguates between default UI and\ncustom page to present when strong match succeeds/fails to find cookie.",
-                    "enum": [
-                        "UNKNOWN_VISUAL_STYLE",
-                        "DEFAULT_STYLE",
-                        "CUSTOM_STYLE"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown style.",
-                        "Default style.",
-                        "Custom style."
-                    ],
-                    "type": "string"
-                },
                 "retrievalMethod": {
                     "description": "App post install attribution retrieval information. Disambiguates\nmechanism (iSDK or developer invoked) to retrieve payload from\nclicked link.",
                     "enum": [
@@ -729,6 +734,20 @@
                     ],
                     "type": "string"
                 },
+                "visualStyle": {
+                    "description": "Strong match page information. Disambiguates between default UI and\ncustom page to present when strong match succeeds/fails to find cookie.",
+                    "enum": [
+                        "UNKNOWN_VISUAL_STYLE",
+                        "DEFAULT_STYLE",
+                        "CUSTOM_STYLE"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown style.",
+                        "Default style.",
+                        "Custom style."
+                    ],
+                    "type": "string"
+                },
                 "sdkVersion": {
                     "description": "Google SDK version.",
                     "type": "string"
@@ -736,10 +755,6 @@
                 "bundleId": {
                     "description": "APP bundle ID.",
                     "type": "string"
-                },
-                "device": {
-                    "$ref": "DeviceInfo",
-                    "description": "Device information."
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/firebaseremoteconfig__v1.json b/discovery/googleapis/firebaseremoteconfig__v1.json
index ed638f7..f570a63 100644
--- a/discovery/googleapis/firebaseremoteconfig__v1.json
+++ b/discovery/googleapis/firebaseremoteconfig__v1.json
@@ -16,38 +16,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
         "fields": {
             "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
@@ -101,6 +69,38 @@
             "description": "OAuth access token.",
             "location": "query",
             "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
         }
     },
     "protocol": "rest",
@@ -160,45 +160,9 @@
             }
         }
     },
-    "revision": "20171002",
+    "revision": "20171009",
     "rootUrl": "https://firebaseremoteconfig.googleapis.com/",
     "schemas": {
-        "RemoteConfigParameterValue": {
-            "description": "A RemoteConfigParameter's \"value\" (either the default value, or the value\nassociated with a condition name) is either a string, or the\n\"use_in_app_default\" indicator (which means to leave out the parameter from\nthe returned <key, value> map that is the output of the parameter fetch).\nWe represent the \"use_in_app_default\" as a bool, but (when using the boolean\ninstead of the string) it should always be <code>true</code>.",
-            "id": "RemoteConfigParameterValue",
-            "properties": {
-                "useInAppDefault": {
-                    "description": "if true, omit the parameter from the map of fetched parameter values",
-                    "type": "boolean"
-                },
-                "value": {
-                    "description": "the string to set the parameter to",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RemoteConfig": {
-            "description": "*\nThe RemoteConfig consists of a list of conditions (which can be\nthought of as named \"if\" statements) and a map of parameters (parameter key\nto a stucture containing an optional default value, as well as a optional\nsubmap of (condition name to value when that condition is true).",
-            "id": "RemoteConfig",
-            "properties": {
-                "parameters": {
-                    "additionalProperties": {
-                        "$ref": "RemoteConfigParameter"
-                    },
-                    "description": "Map of parameter keys to their optional default values and optional submap\nof (condition name : value). Order doesn't affect semantics, and so is\nsorted by the server. The 'key' values of the params must be unique.",
-                    "type": "object"
-                },
-                "conditions": {
-                    "description": "The list of named conditions. The order *does* affect the semantics.\nThe condition_name values of these entries must be unique.\n\nThe resolved value of a config parameter P is determined as follow:\n* Let Y be the set of values from the submap of P that refer to conditions\n  that evaluate to <code>true</code>.\n* If Y is non empty, the value is taken from the specific submap in Y whose\n  condition_name is the earliest in this condition list.\n* Else, if P has a default value option (condition_name is empty) then\n  the value is taken from that option.\n* Else, parameter P has no value and is omitted from the config result.\n\nExample: parameter key \"p1\", default value \"v1\", submap specified as\n{\"c1\": v2, \"c2\": v3} where \"c1\" and \"c2\" are names of conditions in the\ncondition list (where \"c1\" in this example appears before \"c2\").  The\nvalue of p1 would be v2 as long as c1 is true.  Otherwise, if c2 is true,\np1 would evaluate to v3, and if c1 and c2 are both false, p1 would evaluate\nto v1.  If no default value was specified, and c1 and c2 were both false,\nno value for p1 would be generated.",
-                    "items": {
-                        "$ref": "RemoteConfigCondition"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "RemoteConfigParameter": {
             "description": "While default_value and conditional_values are each optional, at least one of\nthe two is required - otherwise, the parameter is meaningless (and an\nexception will be thrown by the validation logic).",
             "id": "RemoteConfigParameter",
@@ -221,6 +185,10 @@
             "description": "A single RemoteConfig Condition.  A list of these (because order matters) are\npart of a single RemoteConfig template.",
             "id": "RemoteConfigCondition",
             "properties": {
+                "name": {
+                    "description": "Required.\nA non empty and unique name of this condition.",
+                    "type": "string"
+                },
                 "expression": {
                     "description": "Required.",
                     "type": "string"
@@ -256,13 +224,45 @@
                         "Teal"
                     ],
                     "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "RemoteConfigParameterValue": {
+            "description": "A RemoteConfigParameter's \"value\" (either the default value, or the value\nassociated with a condition name) is either a string, or the\n\"use_in_app_default\" indicator (which means to leave out the parameter from\nthe returned <key, value> map that is the output of the parameter fetch).\nWe represent the \"use_in_app_default\" as a bool, but (when using the boolean\ninstead of the string) it should always be <code>true</code>.",
+            "id": "RemoteConfigParameterValue",
+            "properties": {
+                "useInAppDefault": {
+                    "description": "if true, omit the parameter from the map of fetched parameter values",
+                    "type": "boolean"
                 },
-                "name": {
-                    "description": "Required.\nA non empty and unique name of this condition.",
+                "value": {
+                    "description": "the string to set the parameter to",
                     "type": "string"
                 }
             },
             "type": "object"
+        },
+        "RemoteConfig": {
+            "description": "*\nThe RemoteConfig consists of a list of conditions (which can be\nthought of as named \"if\" statements) and a map of parameters (parameter key\nto a stucture containing an optional default value, as well as a optional\nsubmap of (condition name to value when that condition is true).",
+            "id": "RemoteConfig",
+            "properties": {
+                "parameters": {
+                    "additionalProperties": {
+                        "$ref": "RemoteConfigParameter"
+                    },
+                    "description": "Map of parameter keys to their optional default values and optional submap\nof (condition name : value). Order doesn't affect semantics, and so is\nsorted by the server. The 'key' values of the params must be unique.",
+                    "type": "object"
+                },
+                "conditions": {
+                    "description": "The list of named conditions. The order *does* affect the semantics.\nThe condition_name values of these entries must be unique.\n\nThe resolved value of a config parameter P is determined as follow:\n* Let Y be the set of values from the submap of P that refer to conditions\n  that evaluate to <code>true</code>.\n* If Y is non empty, the value is taken from the specific submap in Y whose\n  condition_name is the earliest in this condition list.\n* Else, if P has a default value option (condition_name is empty) then\n  the value is taken from that option.\n* Else, parameter P has no value and is omitted from the config result.\n\nExample: parameter key \"p1\", default value \"v1\", submap specified as\n{\"c1\": v2, \"c2\": v3} where \"c1\" and \"c2\" are names of conditions in the\ncondition list (where \"c1\" in this example appears before \"c2\").  The\nvalue of p1 would be v2 as long as c1 is true.  Otherwise, if c2 is true,\np1 would evaluate to v3, and if c1 and c2 are both false, p1 would evaluate\nto v1.  If no default value was specified, and c1 and c2 were both false,\nno value for p1 would be generated.",
+                    "items": {
+                        "$ref": "RemoteConfigCondition"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/firebaserules__v1.json b/discovery/googleapis/firebaserules__v1.json
index 05e675e..cbbfa43 100644
--- a/discovery/googleapis/firebaserules__v1.json
+++ b/discovery/googleapis/firebaserules__v1.json
@@ -31,45 +31,8 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "callback": {
+            "description": "JSONP",
             "location": "query",
             "type": "string"
         },
@@ -86,11 +49,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -116,6 +74,48 @@
             "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
@@ -188,6 +188,11 @@
                                 "name"
                             ],
                             "parameters": {
+                                "filter": {
+                                    "description": "`Ruleset` filter. The list method supports filters with restrictions on\n`Ruleset.name`.\n\nFilters on `Ruleset.create_time` should use the `date` function which\nparses strings that conform to the RFC 3339 date/time specifications.\n\nExample: `create_time > date(\"2017-01-01\") AND name=UUID-*`",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "pageToken": {
                                     "description": "Next page token for loading the next batch of `Ruleset` instances.",
                                     "location": "query",
@@ -205,11 +210,6 @@
                                     "format": "int32",
                                     "location": "query",
                                     "type": "integer"
-                                },
-                                "filter": {
-                                    "description": "`Ruleset` filter. The list method supports filters with restrictions on\n`Ruleset.name`.\n\nFilters on `Ruleset.create_time` should use the `date` function which\nparses strings that conform to the RFC 3339 date/time specifications.\n\nExample: `create_time > date(\"2017-01-01\") AND name=UUID-*`",
-                                    "location": "query",
-                                    "type": "string"
                                 }
                             },
                             "path": "v1/{+name}/rulesets",
@@ -306,6 +306,34 @@
                                 "https://www.googleapis.com/auth/firebase.readonly"
                             ]
                         },
+                        "patch": {
+                            "description": "Update a `Release` via PATCH.\n\nOnly updates to the `ruleset_name` and `test_suite_name` fields will be\nhonored. `Release` rename is not supported. To create a `Release` use the\nCreateRelease method.",
+                            "httpMethod": "PATCH",
+                            "id": "firebaserules.projects.releases.patch",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Resource name for the project which owns this `Release`.\n\nFormat: `projects/{project_id}`",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/releases/.+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "request": {
+                                "$ref": "UpdateReleaseRequest"
+                            },
+                            "response": {
+                                "$ref": "Release"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/firebase"
+                            ]
+                        },
                         "update": {
                             "description": "Update a `Release`.\n\nOnly updates to the `ruleset_name` and `test_suite_name` fields will be\nhonored. `Release` rename is not supported. To create a `Release` use the\nCreateRelease method.",
                             "httpMethod": "PUT",
@@ -342,13 +370,6 @@
                                 "name"
                             ],
                             "parameters": {
-                                "name": {
-                                    "description": "Resource name of the `Release`.\n\nFormat: `projects/{project_id}/releases/{release_id}`",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/releases/.+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
                                 "executableVersion": {
                                     "description": "The requested runtime executable version.\nDefaults to FIREBASE_RULES_EXECUTABLE_V1",
                                     "enum": [
@@ -358,6 +379,13 @@
                                     ],
                                     "location": "query",
                                     "type": "string"
+                                },
+                                "name": {
+                                    "description": "Resource name of the `Release`.\n\nFormat: `projects/{project_id}/releases/{release_id}`",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/releases/.+$",
+                                    "required": true,
+                                    "type": "string"
                                 }
                             },
                             "path": "v1/{+name}:getExecutable",
@@ -470,13 +498,227 @@
             }
         }
     },
-    "revision": "20170925",
+    "revision": "20171021",
     "rootUrl": "https://firebaserules.googleapis.com/",
     "schemas": {
+        "ListReleasesResponse": {
+            "description": "The response for FirebaseRulesService.ListReleases.",
+            "id": "ListReleasesResponse",
+            "properties": {
+                "releases": {
+                    "description": "List of `Release` instances.",
+                    "items": {
+                        "$ref": "Release"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The pagination token to retrieve the next page of results. If the value is\nempty, no further results remain.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "FunctionCall": {
+            "description": "Represents a service-defined function call that was invoked during test\nexecution.",
+            "id": "FunctionCall",
+            "properties": {
+                "args": {
+                    "description": "The arguments that were provided to the function.",
+                    "items": {
+                        "type": "any"
+                    },
+                    "type": "array"
+                },
+                "function": {
+                    "description": "Name of the function invoked.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "File": {
+            "description": "`File` containing source content.",
+            "id": "File",
+            "properties": {
+                "content": {
+                    "description": "Textual Content.",
+                    "type": "string"
+                },
+                "fingerprint": {
+                    "description": "Fingerprint (e.g. github sha) associated with the `File`.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "File name.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Release": {
+            "description": "`Release` is a named reference to a `Ruleset`. Once a `Release` refers to a\n`Ruleset`, rules-enabled services will be able to enforce the `Ruleset`.",
+            "id": "Release",
+            "properties": {
+                "createTime": {
+                    "description": "Time the release was created.\nOutput only.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Time the release was updated.\nOutput only.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "rulesetName": {
+                    "description": "Name of the `Ruleset` referred to by this `Release`. The `Ruleset` must\nexist the `Release` to be created.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Resource name for the `Release`.\n\n`Release` names may be structured `app1/prod/v2` or flat `app1_prod_v2`\nwhich affords developers a great deal of flexibility in mapping the name\nto the style that best fits their existing development practices. For\nexample, a name could refer to an environment, an app, a version, or some\ncombination of three.\n\nIn the table below, for the project name `projects/foo`, the following\nrelative release paths show how flat and structured names might be chosen\nto match a desired development / deployment strategy.\n\nUse Case     | Flat Name           | Structured Name\n-------------|---------------------|----------------\nEnvironments | releases/qa         | releases/qa\nApps         | releases/app1_qa    | releases/app1/qa\nVersions     | releases/app1_v2_qa | releases/app1/v2/qa\n\nThe delimiter between the release name path elements can be almost anything\nand it should work equally well with the release name list filter, but in\nmany ways the structured paths provide a clearer picture of the\nrelationship between `Release` instances.\n\nFormat: `projects/{project_id}/releases/{release_id}`",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TestRulesetResponse": {
+            "description": "The response for FirebaseRulesService.TestRuleset.",
+            "id": "TestRulesetResponse",
+            "properties": {
+                "issues": {
+                    "description": "Syntactic and semantic `Source` issues of varying severity. Issues of\n`ERROR` severity will prevent tests from executing.",
+                    "items": {
+                        "$ref": "Issue"
+                    },
+                    "type": "array"
+                },
+                "testResults": {
+                    "description": "The set of test results given the test cases in the `TestSuite`.\nThe results will appear in the same order as the test cases appear in the\n`TestSuite`.",
+                    "items": {
+                        "$ref": "TestResult"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListRulesetsResponse": {
+            "description": "The response for FirebaseRulesService.ListRulesets.",
+            "id": "ListRulesetsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The pagination token to retrieve the next page of results. If the value is\nempty, no further results remain.",
+                    "type": "string"
+                },
+                "rulesets": {
+                    "description": "List of `Ruleset` instances.",
+                    "items": {
+                        "$ref": "Ruleset"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "TestResult": {
+            "description": "Test result message containing the state of the test as well as a\ndescription and source position for test failures.",
+            "id": "TestResult",
+            "properties": {
+                "debugMessages": {
+                    "description": "Debug messages related to test execution issues encountered during\nevaluation.\n\nDebug messages may be related to too many or too few invocations of\nfunction mocks or to runtime errors that occur during evaluation.\n\nFor example: ```Unable to read variable [name: \"resource\"]```",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "state": {
+                    "description": "State of the test.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "SUCCESS",
+                        "FAILURE"
+                    ],
+                    "enumDescriptions": [
+                        "Test state is not set.",
+                        "Test is a success.",
+                        "Test is a failure."
+                    ],
+                    "type": "string"
+                },
+                "errorPosition": {
+                    "$ref": "SourcePosition",
+                    "description": "Position in the `Source` or `Ruleset` where the principle runtime error\noccurs.\n\nEvaluation of an expression may result in an error. Rules are deny by\ndefault, so a `DENY` expectation when an error is generated is valid.\nWhen there is a `DENY` with an error, the `SourcePosition` is returned.\n\nE.g. `error_position { line: 19 column: 37 }`"
+                },
+                "functionCalls": {
+                    "description": "The set of function calls made to service-defined methods.\n\nFunction calls are included in the order in which they are encountered\nduring evaluation, are provided for both mocked and unmocked functions,\nand included on the response regardless of the test `state`.",
+                    "items": {
+                        "$ref": "FunctionCall"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Arg": {
+            "description": "Arg matchers for the mock function.",
+            "id": "Arg",
+            "properties": {
+                "anyValue": {
+                    "$ref": "Empty",
+                    "description": "Argument matches any value provided."
+                },
+                "exactValue": {
+                    "description": "Argument exactly matches value provided.",
+                    "type": "any"
+                }
+            },
+            "type": "object"
+        },
+        "TestSuite": {
+            "description": "`TestSuite` is a collection of `TestCase` instances that validate the logical\ncorrectness of a `Ruleset`. The `TestSuite` may be referenced in-line within\na `TestRuleset` invocation or as part of a `Release` object as a pre-release\ncheck.",
+            "id": "TestSuite",
+            "properties": {
+                "testCases": {
+                    "description": "Collection of test cases associated with the `TestSuite`.",
+                    "items": {
+                        "$ref": "TestCase"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "UpdateReleaseRequest": {
+            "description": "The request for FirebaseRulesService.UpdateReleasePatch.",
+            "id": "UpdateReleaseRequest",
+            "properties": {
+                "updateMask": {
+                    "description": "Specifies which fields to update.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                },
+                "release": {
+                    "$ref": "Release",
+                    "description": "`Release` to update."
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
         "FunctionMock": {
             "description": "Mock function definition.\n\nMocks must refer to a function declared by the target service. The type of\nthe function args and result will be inferred at test time. If either the\narg or result values are not compatible with function type declaration, the\nrequest will be considered invalid.\n\nMore than one `FunctionMock` may be provided for a given function name so\nlong as the `Arg` matchers are distinct. There may be only one function\nfor a given overload where all `Arg` values are `Arg.any_value`.",
             "id": "FunctionMock",
             "properties": {
+                "result": {
+                    "$ref": "Result",
+                    "description": "The mock result of the function call."
+                },
                 "args": {
                     "description": "The list of `Arg` values to match. The order in which the arguments are\nprovided is the order in which they must appear in the function\ninvocation.",
                     "items": {
@@ -487,10 +729,6 @@
                 "function": {
                     "description": "The name of the function.\n\nThe function name must match one provided by a service declaration.",
                     "type": "string"
-                },
-                "result": {
-                    "$ref": "Result",
-                    "description": "The mock result of the function call."
                 }
             },
             "type": "object"
@@ -577,6 +815,11 @@
             "description": "Position in the `Source` content including its line, column number, and an\nindex of the `File` in the `Source` message. Used for debug purposes.",
             "id": "SourcePosition",
             "properties": {
+                "column": {
+                    "description": "First column on the source line associated with the source fragment.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "fileName": {
                     "description": "Name of the `File`.",
                     "type": "string"
@@ -585,11 +828,6 @@
                     "description": "Line number of the source fragment. 1-based.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "column": {
-                    "description": "First column on the source line associated with the source fragment.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -634,10 +872,6 @@
             "description": "`Ruleset` is an immutable copy of `Source` with a globally unique identifier\nand a creation time.",
             "id": "Ruleset",
             "properties": {
-                "source": {
-                    "$ref": "Source",
-                    "description": "`Source` for the `Ruleset`."
-                },
                 "createTime": {
                     "description": "Time the `Ruleset` was created.\nOutput only.",
                     "format": "google-datetime",
@@ -646,6 +880,10 @@
                 "name": {
                     "description": "Name of the `Ruleset`. The ruleset_id is auto generated by the service.\nFormat: `projects/{project_id}/rulesets/{ruleset_id}`\nOutput only.",
                     "type": "string"
+                },
+                "source": {
+                    "$ref": "Source",
+                    "description": "`Source` for the `Ruleset`."
                 }
             },
             "type": "object"
@@ -669,6 +907,10 @@
             "description": "Issues include warnings, errors, and deprecation notices.",
             "id": "Issue",
             "properties": {
+                "sourcePosition": {
+                    "$ref": "SourcePosition",
+                    "description": "Position of the issue in the `Source`."
+                },
                 "severity": {
                     "description": "The severity of the issue.",
                     "enum": [
@@ -688,207 +930,9 @@
                 "description": {
                     "description": "Short error description.",
                     "type": "string"
-                },
-                "sourcePosition": {
-                    "$ref": "SourcePosition",
-                    "description": "Position of the issue in the `Source`."
                 }
             },
             "type": "object"
-        },
-        "File": {
-            "description": "`File` containing source content.",
-            "id": "File",
-            "properties": {
-                "content": {
-                    "description": "Textual Content.",
-                    "type": "string"
-                },
-                "fingerprint": {
-                    "description": "Fingerprint (e.g. github sha) associated with the `File`.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "File name.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "FunctionCall": {
-            "description": "Represents a service-defined function call that was invoked during test\nexecution.",
-            "id": "FunctionCall",
-            "properties": {
-                "function": {
-                    "description": "Name of the function invoked.",
-                    "type": "string"
-                },
-                "args": {
-                    "description": "The arguments that were provided to the function.",
-                    "items": {
-                        "type": "any"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ListReleasesResponse": {
-            "description": "The response for FirebaseRulesService.ListReleases.",
-            "id": "ListReleasesResponse",
-            "properties": {
-                "releases": {
-                    "description": "List of `Release` instances.",
-                    "items": {
-                        "$ref": "Release"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "The pagination token to retrieve the next page of results. If the value is\nempty, no further results remain.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Release": {
-            "description": "`Release` is a named reference to a `Ruleset`. Once a `Release` refers to a\n`Ruleset`, rules-enabled services will be able to enforce the `Ruleset`.",
-            "id": "Release",
-            "properties": {
-                "updateTime": {
-                    "description": "Time the release was updated.\nOutput only.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "rulesetName": {
-                    "description": "Name of the `Ruleset` referred to by this `Release`. The `Ruleset` must\nexist the `Release` to be created.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Resource name for the `Release`.\n\n`Release` names may be structured `app1/prod/v2` or flat `app1_prod_v2`\nwhich affords developers a great deal of flexibility in mapping the name\nto the style that best fits their existing development practices. For\nexample, a name could refer to an environment, an app, a version, or some\ncombination of three.\n\nIn the table below, for the project name `projects/foo`, the following\nrelative release paths show how flat and structured names might be chosen\nto match a desired development / deployment strategy.\n\nUse Case     | Flat Name           | Structured Name\n-------------|---------------------|----------------\nEnvironments | releases/qa         | releases/qa\nApps         | releases/app1_qa    | releases/app1/qa\nVersions     | releases/app1_v2_qa | releases/app1/v2/qa\n\nThe delimiter between the release name path elements can be almost anything\nand it should work equally well with the release name list filter, but in\nmany ways the structured paths provide a clearer picture of the\nrelationship between `Release` instances.\n\nFormat: `projects/{project_id}/releases/{release_id}`",
-                    "type": "string"
-                },
-                "createTime": {
-                    "description": "Time the release was created.\nOutput only.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TestRulesetResponse": {
-            "description": "The response for FirebaseRulesService.TestRuleset.",
-            "id": "TestRulesetResponse",
-            "properties": {
-                "testResults": {
-                    "description": "The set of test results given the test cases in the `TestSuite`.\nThe results will appear in the same order as the test cases appear in the\n`TestSuite`.",
-                    "items": {
-                        "$ref": "TestResult"
-                    },
-                    "type": "array"
-                },
-                "issues": {
-                    "description": "Syntactic and semantic `Source` issues of varying severity. Issues of\n`ERROR` severity will prevent tests from executing.",
-                    "items": {
-                        "$ref": "Issue"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ListRulesetsResponse": {
-            "description": "The response for FirebaseRulesService.ListRulesets.",
-            "id": "ListRulesetsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "The pagination token to retrieve the next page of results. If the value is\nempty, no further results remain.",
-                    "type": "string"
-                },
-                "rulesets": {
-                    "description": "List of `Ruleset` instances.",
-                    "items": {
-                        "$ref": "Ruleset"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "TestResult": {
-            "description": "Test result message containing the state of the test as well as a\ndescription and source position for test failures.",
-            "id": "TestResult",
-            "properties": {
-                "errorPosition": {
-                    "$ref": "SourcePosition",
-                    "description": "Position in the `Source` or `Ruleset` where the principle runtime error\noccurs.\n\nEvaluation of an expression may result in an error. Rules are deny by\ndefault, so a `DENY` expectation when an error is generated is valid.\nWhen there is a `DENY` with an error, the `SourcePosition` is returned.\n\nE.g. `error_position { line: 19 column: 37 }`"
-                },
-                "functionCalls": {
-                    "description": "The set of function calls made to service-defined methods.\n\nFunction calls are included in the order in which they are encountered\nduring evaluation, are provided for both mocked and unmocked functions,\nand included on the response regardless of the test `state`.",
-                    "items": {
-                        "$ref": "FunctionCall"
-                    },
-                    "type": "array"
-                },
-                "debugMessages": {
-                    "description": "Debug messages related to test execution issues encountered during\nevaluation.\n\nDebug messages may be related to too many or too few invocations of\nfunction mocks or to runtime errors that occur during evaluation.\n\nFor example: ```Unable to read variable [name: \"resource\"]```",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "state": {
-                    "description": "State of the test.",
-                    "enum": [
-                        "STATE_UNSPECIFIED",
-                        "SUCCESS",
-                        "FAILURE"
-                    ],
-                    "enumDescriptions": [
-                        "Test state is not set.",
-                        "Test is a success.",
-                        "Test is a failure."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Arg": {
-            "description": "Arg matchers for the mock function.",
-            "id": "Arg",
-            "properties": {
-                "anyValue": {
-                    "$ref": "Empty",
-                    "description": "Argument matches any value provided."
-                },
-                "exactValue": {
-                    "description": "Argument exactly matches value provided.",
-                    "type": "any"
-                }
-            },
-            "type": "object"
-        },
-        "TestSuite": {
-            "description": "`TestSuite` is a collection of `TestCase` instances that validate the logical\ncorrectness of a `Ruleset`. The `TestSuite` may be referenced in-line within\na `TestRuleset` invocation or as part of a `Release` object as a pre-release\ncheck.",
-            "id": "TestSuite",
-            "properties": {
-                "testCases": {
-                    "description": "Collection of test cases associated with the `TestSuite`.",
-                    "items": {
-                        "$ref": "TestCase"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/gamesConfiguration__v1configuration.json b/discovery/googleapis/gamesConfiguration__v1configuration.json
index 868cf66..722fd3c 100644
--- a/discovery/googleapis/gamesConfiguration__v1configuration.json
+++ b/discovery/googleapis/gamesConfiguration__v1configuration.json
@@ -15,7 +15,7 @@
     "description": "The Publishing API for Google Play Game Services.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/games/services",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/149WpcAPBIY2MEwRCtq8uuM0DJg\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/7u58ttZSsrQg4LO43D3cSCz6PLs\"",
     "icons": {
         "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
         "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -454,7 +454,7 @@
             }
         }
     },
-    "revision": "20170928",
+    "revision": "20171017",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "AchievementConfiguration": {
diff --git a/discovery/googleapis/gamesManagement__v1management.json b/discovery/googleapis/gamesManagement__v1management.json
index 2386c6c..ff04c0a 100644
--- a/discovery/googleapis/gamesManagement__v1management.json
+++ b/discovery/googleapis/gamesManagement__v1management.json
@@ -18,7 +18,7 @@
     "description": "The Management API for Google Play Game Services.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/games/services",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/1T2q7dicpAFUV_y67PbfuWoImjo\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/PFyFoQxQQCT_oR314q9sEem9_7E\"",
     "icons": {
         "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
         "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -553,7 +553,7 @@
             }
         }
     },
-    "revision": "20170928",
+    "revision": "20171017",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "AchievementResetAllResponse": {
diff --git a/discovery/googleapis/games__v1.json b/discovery/googleapis/games__v1.json
index c17f9e1..f766b68 100644
--- a/discovery/googleapis/games__v1.json
+++ b/discovery/googleapis/games__v1.json
@@ -21,7 +21,7 @@
     "description": "The API for Google Play Game Services.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/games/services/",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/HqTpap1nFJVzFsWm0bte26wBTIs\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/y8HcCXAx2ujnhedcpqvrVS43vtg\"",
     "icons": {
         "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
         "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -2267,7 +2267,7 @@
             }
         }
     },
-    "revision": "20170928",
+    "revision": "20171017",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "AchievementDefinition": {
diff --git a/discovery/googleapis/genomics__v1.json b/discovery/googleapis/genomics__v1.json
index fa90005..1d0e8d4 100644
--- a/discovery/googleapis/genomics__v1.json
+++ b/discovery/googleapis/genomics__v1.json
@@ -2,9 +2,6 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/genomics": {
-                    "description": "View and manage Genomics data"
-                },
                 "https://www.googleapis.com/auth/devstorage.read_write": {
                     "description": "Manage your data in Google Cloud Storage"
                 },
@@ -16,6 +13,9 @@
                 },
                 "https://www.googleapis.com/auth/cloud-platform": {
                     "description": "View and manage your data across Google Cloud Platform services"
+                },
+                "https://www.googleapis.com/auth/genomics": {
+                    "description": "View and manage Genomics data"
                 }
             }
         }
@@ -36,40 +36,6 @@
     "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"
-        },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
-        "alt": {
-            "default": "json",
-            "description": "Data format for response.",
-            "enum": [
-                "json",
-                "media",
-                "proto"
-            ],
-            "enumDescriptions": [
-                "Responses with Content-Type of application/json",
-                "Media download with context-dependent Content-Type",
-                "Responses with Content-Type of application/x-protobuf"
-            ],
-            "location": "query",
-            "type": "string"
-        },
         "access_token": {
             "description": "OAuth access token.",
             "location": "query",
@@ -91,13 +57,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
+        "bearer_token": {
+            "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         },
@@ -121,1081 +87,44 @@
             "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
+        },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
+        "$.xgafv": {
+            "description": "V1 error format.",
+            "enum": [
+                "1",
+                "2"
+            ],
+            "enumDescriptions": [
+                "v1 error format",
+                "v2 error format"
+            ],
+            "location": "query",
+            "type": "string"
+        },
+        "alt": {
+            "default": "json",
+            "description": "Data format for response.",
+            "enum": [
+                "json",
+                "media",
+                "proto"
+            ],
+            "enumDescriptions": [
+                "Responses with Content-Type of application/json",
+                "Media download with context-dependent Content-Type",
+                "Responses with Content-Type of application/x-protobuf"
+            ],
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
-        "annotationsets": {
-            "methods": {
-                "delete": {
-                    "description": "Deletes an annotation set. Caller must have WRITE permission\nfor the associated annotation set.",
-                    "httpMethod": "DELETE",
-                    "id": "genomics.annotationsets.delete",
-                    "parameterOrder": [
-                        "annotationSetId"
-                    ],
-                    "parameters": {
-                        "annotationSetId": {
-                            "description": "The ID of the annotation set to be deleted.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/annotationsets/{annotationSetId}",
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "search": {
-                    "description": "Searches for annotation sets that match the given criteria. Annotation sets\nare returned in an unspecified order. This order is consistent, such that\ntwo queries for the same content (regardless of page size) yield annotation\nsets in the same order across their respective streams of paginated\nresponses. Caller must have READ permission for the queried datasets.",
-                    "httpMethod": "POST",
-                    "id": "genomics.annotationsets.search",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/annotationsets/search",
-                    "request": {
-                        "$ref": "SearchAnnotationSetsRequest"
-                    },
-                    "response": {
-                        "$ref": "SearchAnnotationSetsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics",
-                        "https://www.googleapis.com/auth/genomics.readonly"
-                    ]
-                },
-                "get": {
-                    "description": "Gets an annotation set. Caller must have READ permission for\nthe associated dataset.",
-                    "httpMethod": "GET",
-                    "id": "genomics.annotationsets.get",
-                    "parameterOrder": [
-                        "annotationSetId"
-                    ],
-                    "parameters": {
-                        "annotationSetId": {
-                            "description": "The ID of the annotation set to be retrieved.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/annotationsets/{annotationSetId}",
-                    "response": {
-                        "$ref": "AnnotationSet"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics",
-                        "https://www.googleapis.com/auth/genomics.readonly"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an annotation set. The update must respect all mutability\nrestrictions and other invariants described on the annotation set resource.\nCaller must have WRITE permission for the associated dataset.",
-                    "httpMethod": "PUT",
-                    "id": "genomics.annotationsets.update",
-                    "parameterOrder": [
-                        "annotationSetId"
-                    ],
-                    "parameters": {
-                        "updateMask": {
-                            "description": "An optional mask specifying which fields to update. Mutable fields are\nname,\nsource_uri, and\ninfo. If unspecified, all\nmutable fields will be updated.",
-                            "format": "google-fieldmask",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "annotationSetId": {
-                            "description": "The ID of the annotation set to be updated.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/annotationsets/{annotationSetId}",
-                    "request": {
-                        "$ref": "AnnotationSet"
-                    },
-                    "response": {
-                        "$ref": "AnnotationSet"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "create": {
-                    "description": "Creates a new annotation set. Caller must have WRITE permission for the\nassociated dataset.\n\nThe following fields are required:\n\n  * datasetId\n  * referenceSetId\n\nAll other fields may be optionally specified, unless documented as being\nserver-generated (for example, the `id` field).",
-                    "httpMethod": "POST",
-                    "id": "genomics.annotationsets.create",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/annotationsets",
-                    "request": {
-                        "$ref": "AnnotationSet"
-                    },
-                    "response": {
-                        "$ref": "AnnotationSet"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                }
-            }
-        },
-        "variants": {
-            "methods": {
-                "import": {
-                    "description": "Creates variant data by asynchronously importing the provided information.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThe variants for import will be merged with any existing variant that\nmatches its reference sequence, start, end, reference bases, and\nalternative bases. If no such variant exists, a new one will be created.\n\nWhen variants are merged, the call information from the new variant\nis added to the existing variant, and Variant info fields are merged\nas specified in\ninfoMergeConfig.\nAs a special case, for single-sample VCF files, QUAL and FILTER fields will\nbe moved to the call level; these are sometimes interpreted in a\ncall-specific context.\nImported VCF headers are appended to the metadata already in a variant set.",
-                    "httpMethod": "POST",
-                    "id": "genomics.variants.import",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/variants:import",
-                    "request": {
-                        "$ref": "ImportVariantsRequest"
-                    },
-                    "response": {
-                        "$ref": "Operation"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/devstorage.read_write",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "delete": {
-                    "description": "Deletes a variant.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-                    "httpMethod": "DELETE",
-                    "id": "genomics.variants.delete",
-                    "parameterOrder": [
-                        "variantId"
-                    ],
-                    "parameters": {
-                        "variantId": {
-                            "description": "The ID of the variant to be deleted.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/variants/{variantId}",
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "merge": {
-                    "description": "Merges the given variants with existing variants.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nEach variant will be\nmerged with an existing variant that matches its reference sequence,\nstart, end, reference bases, and alternative bases. If no such variant\nexists, a new one will be created.\n\nWhen variants are merged, the call information from the new variant\nis added to the existing variant. Variant info fields are merged as\nspecified in the\ninfoMergeConfig\nfield of the MergeVariantsRequest.\n\nPlease exercise caution when using this method!  It is easy to introduce\nmistakes in existing variants and difficult to back out of them.  For\nexample,\nsuppose you were trying to merge a new variant with an existing one and\nboth\nvariants contain calls that belong to callsets with the same callset ID.\n\n    // Existing variant - irrelevant fields trimmed for clarity\n    {\n        \"variantSetId\": \"10473108253681171589\",\n        \"referenceName\": \"1\",\n        \"start\": \"10582\",\n        \"referenceBases\": \"G\",\n        \"alternateBases\": [\n            \"A\"\n        ],\n        \"calls\": [\n            {\n                \"callSetId\": \"10473108253681171589-0\",\n                \"callSetName\": \"CALLSET0\",\n                \"genotype\": [\n                    0,\n                    1\n                ],\n            }\n        ]\n    }\n\n    // New variant with conflicting call information\n    {\n        \"variantSetId\": \"10473108253681171589\",\n        \"referenceName\": \"1\",\n        \"start\": \"10582\",\n        \"referenceBases\": \"G\",\n        \"alternateBases\": [\n            \"A\"\n        ],\n        \"calls\": [\n            {\n                \"callSetId\": \"10473108253681171589-0\",\n                \"callSetName\": \"CALLSET0\",\n                \"genotype\": [\n                    1,\n                    1\n                ],\n            }\n        ]\n    }\n\nThe resulting merged variant would overwrite the existing calls with those\nfrom the new variant:\n\n    {\n        \"variantSetId\": \"10473108253681171589\",\n        \"referenceName\": \"1\",\n        \"start\": \"10582\",\n        \"referenceBases\": \"G\",\n        \"alternateBases\": [\n            \"A\"\n        ],\n        \"calls\": [\n            {\n                \"callSetId\": \"10473108253681171589-0\",\n                \"callSetName\": \"CALLSET0\",\n                \"genotype\": [\n                    1,\n                    1\n                ],\n            }\n        ]\n    }\n\nThis may be the desired outcome, but it is up to the user to determine if\nif that is indeed the case.",
-                    "httpMethod": "POST",
-                    "id": "genomics.variants.merge",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/variants:merge",
-                    "request": {
-                        "$ref": "MergeVariantsRequest"
-                    },
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "create": {
-                    "description": "Creates a new variant.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-                    "httpMethod": "POST",
-                    "id": "genomics.variants.create",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/variants",
-                    "request": {
-                        "$ref": "Variant"
-                    },
-                    "response": {
-                        "$ref": "Variant"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "search": {
-                    "description": "Gets a list of variants matching the criteria.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchVariants](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L126).",
-                    "httpMethod": "POST",
-                    "id": "genomics.variants.search",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/variants/search",
-                    "request": {
-                        "$ref": "SearchVariantsRequest"
-                    },
-                    "response": {
-                        "$ref": "SearchVariantsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics",
-                        "https://www.googleapis.com/auth/genomics.readonly"
-                    ]
-                },
-                "get": {
-                    "description": "Gets a variant by ID.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-                    "httpMethod": "GET",
-                    "id": "genomics.variants.get",
-                    "parameterOrder": [
-                        "variantId"
-                    ],
-                    "parameters": {
-                        "variantId": {
-                            "description": "The ID of the variant.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/variants/{variantId}",
-                    "response": {
-                        "$ref": "Variant"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics",
-                        "https://www.googleapis.com/auth/genomics.readonly"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates a variant.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis method supports patch semantics. Returns the modified variant without\nits calls.",
-                    "httpMethod": "PATCH",
-                    "id": "genomics.variants.patch",
-                    "parameterOrder": [
-                        "variantId"
-                    ],
-                    "parameters": {
-                        "updateMask": {
-                            "description": "An optional mask specifying which fields to update. At this time, mutable\nfields are names and\ninfo. Acceptable values are \"names\" and\n\"info\". If unspecified, all mutable fields will be updated.",
-                            "format": "google-fieldmask",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "variantId": {
-                            "description": "The ID of the variant to be updated.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/variants/{variantId}",
-                    "request": {
-                        "$ref": "Variant"
-                    },
-                    "response": {
-                        "$ref": "Variant"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                }
-            }
-        },
-        "references": {
-            "methods": {
-                "search": {
-                    "description": "Searches for references which match the given criteria.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchReferences](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L146).",
-                    "httpMethod": "POST",
-                    "id": "genomics.references.search",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/references/search",
-                    "request": {
-                        "$ref": "SearchReferencesRequest"
-                    },
-                    "response": {
-                        "$ref": "SearchReferencesResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics",
-                        "https://www.googleapis.com/auth/genomics.readonly"
-                    ]
-                },
-                "get": {
-                    "description": "Gets a reference.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.getReference](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L158).",
-                    "httpMethod": "GET",
-                    "id": "genomics.references.get",
-                    "parameterOrder": [
-                        "referenceId"
-                    ],
-                    "parameters": {
-                        "referenceId": {
-                            "description": "The ID of the reference.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/references/{referenceId}",
-                    "response": {
-                        "$ref": "Reference"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics",
-                        "https://www.googleapis.com/auth/genomics.readonly"
-                    ]
-                }
-            },
-            "resources": {
-                "bases": {
-                    "methods": {
-                        "list": {
-                            "description": "Lists the bases in a reference, optionally restricted to a range.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.getReferenceBases](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L221).",
-                            "httpMethod": "GET",
-                            "id": "genomics.references.bases.list",
-                            "parameterOrder": [
-                                "referenceId"
-                            ],
-                            "parameters": {
-                                "pageSize": {
-                                    "description": "The maximum number of bases to return in a single page. If unspecified,\ndefaults to 200Kbp (kilo base pairs). The maximum value is 10Mbp (mega base\npairs).",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "start": {
-                                    "description": "The start position (0-based) of this query. Defaults to 0.",
-                                    "format": "int64",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "referenceId": {
-                                    "description": "The ID of the reference.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "end": {
-                                    "description": "The end position (0-based, exclusive) of this query. Defaults to the length\nof this reference.",
-                                    "format": "int64",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/references/{referenceId}/bases",
-                            "response": {
-                                "$ref": "ListBasesResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/genomics",
-                                "https://www.googleapis.com/auth/genomics.readonly"
-                            ]
-                        }
-                    }
-                }
-            }
-        },
-        "datasets": {
-            "methods": {
-                "testIamPermissions": {
-                    "description": "Returns permissions that a caller has on the specified resource.\nSee <a href=\"/iam/docs/managing-policies#testing_permissions\">Testing\nPermissions</a> for more information.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-                    "httpMethod": "POST",
-                    "id": "genomics.datasets.testIamPermissions",
-                    "parameterOrder": [
-                        "resource"
-                    ],
-                    "parameters": {
-                        "resource": {
-                            "description": "REQUIRED: The resource for which policy is being specified. Format is\n`datasets/<dataset ID>`.",
-                            "location": "path",
-                            "pattern": "^datasets/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+resource}:testIamPermissions",
-                    "request": {
-                        "$ref": "TestIamPermissionsRequest"
-                    },
-                    "response": {
-                        "$ref": "TestIamPermissionsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "delete": {
-                    "description": "Deletes a dataset and all of its contents (all read group sets,\nreference sets, variant sets, call sets, annotation sets, etc.)\nThis is reversible (up to one week after the deletion) via\nthe\ndatasets.undelete\noperation.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-                    "httpMethod": "DELETE",
-                    "id": "genomics.datasets.delete",
-                    "parameterOrder": [
-                        "datasetId"
-                    ],
-                    "parameters": {
-                        "datasetId": {
-                            "description": "The ID of the dataset to be deleted.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/datasets/{datasetId}",
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "list": {
-                    "description": "Lists datasets within a project.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-                    "httpMethod": "GET",
-                    "id": "genomics.datasets.list",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "pageSize": {
-                            "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 50. The maximum value is 1024.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        },
-                        "projectId": {
-                            "description": "Required. The Google Cloud project ID to list datasets for.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageToken": {
-                            "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/datasets",
-                    "response": {
-                        "$ref": "ListDatasetsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics",
-                        "https://www.googleapis.com/auth/genomics.readonly"
-                    ]
-                },
-                "create": {
-                    "description": "Creates a new dataset.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-                    "httpMethod": "POST",
-                    "id": "genomics.datasets.create",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/datasets",
-                    "request": {
-                        "$ref": "Dataset"
-                    },
-                    "response": {
-                        "$ref": "Dataset"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "setIamPolicy": {
-                    "description": "Sets the access control policy on the specified dataset. Replaces any\nexisting policy.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nSee <a href=\"/iam/docs/managing-policies#setting_a_policy\">Setting a\nPolicy</a> for more information.",
-                    "httpMethod": "POST",
-                    "id": "genomics.datasets.setIamPolicy",
-                    "parameterOrder": [
-                        "resource"
-                    ],
-                    "parameters": {
-                        "resource": {
-                            "description": "REQUIRED: The resource for which policy is being specified. Format is\n`datasets/<dataset ID>`.",
-                            "location": "path",
-                            "pattern": "^datasets/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+resource}:setIamPolicy",
-                    "request": {
-                        "$ref": "SetIamPolicyRequest"
-                    },
-                    "response": {
-                        "$ref": "Policy"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "getIamPolicy": {
-                    "description": "Gets the access control policy for the dataset. This is empty if the\npolicy or resource does not exist.\n\nSee <a href=\"/iam/docs/managing-policies#getting_a_policy\">Getting a\nPolicy</a> for more information.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-                    "httpMethod": "POST",
-                    "id": "genomics.datasets.getIamPolicy",
-                    "parameterOrder": [
-                        "resource"
-                    ],
-                    "parameters": {
-                        "resource": {
-                            "description": "REQUIRED: The resource for which policy is being specified. Format is\n`datasets/<dataset ID>`.",
-                            "location": "path",
-                            "pattern": "^datasets/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+resource}:getIamPolicy",
-                    "request": {
-                        "$ref": "GetIamPolicyRequest"
-                    },
-                    "response": {
-                        "$ref": "Policy"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates a dataset.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis method supports patch semantics.",
-                    "httpMethod": "PATCH",
-                    "id": "genomics.datasets.patch",
-                    "parameterOrder": [
-                        "datasetId"
-                    ],
-                    "parameters": {
-                        "updateMask": {
-                            "description": "An optional mask specifying which fields to update. At this time, the only\nmutable field is name. The only\nacceptable value is \"name\". If unspecified, all mutable fields will be\nupdated.",
-                            "format": "google-fieldmask",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "datasetId": {
-                            "description": "The ID of the dataset to be updated.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/datasets/{datasetId}",
-                    "request": {
-                        "$ref": "Dataset"
-                    },
-                    "response": {
-                        "$ref": "Dataset"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "get": {
-                    "description": "Gets a dataset by ID.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-                    "httpMethod": "GET",
-                    "id": "genomics.datasets.get",
-                    "parameterOrder": [
-                        "datasetId"
-                    ],
-                    "parameters": {
-                        "datasetId": {
-                            "description": "The ID of the dataset.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/datasets/{datasetId}",
-                    "response": {
-                        "$ref": "Dataset"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics",
-                        "https://www.googleapis.com/auth/genomics.readonly"
-                    ]
-                },
-                "undelete": {
-                    "description": "Undeletes a dataset by restoring a dataset which was deleted via this API.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis operation is only possible for a week after the deletion occurred.",
-                    "httpMethod": "POST",
-                    "id": "genomics.datasets.undelete",
-                    "parameterOrder": [
-                        "datasetId"
-                    ],
-                    "parameters": {
-                        "datasetId": {
-                            "description": "The ID of the dataset to be undeleted.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/datasets/{datasetId}:undelete",
-                    "request": {
-                        "$ref": "UndeleteDatasetRequest"
-                    },
-                    "response": {
-                        "$ref": "Dataset"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                }
-            }
-        },
-        "annotations": {
-            "methods": {
-                "create": {
-                    "description": "Creates a new annotation. Caller must have WRITE permission\nfor the associated annotation set.\n\nThe following fields are required:\n\n* annotationSetId\n* referenceName or\n  referenceId\n\n### Transcripts\n\nFor annotations of type TRANSCRIPT, the following fields of\ntranscript must be provided:\n\n* exons.start\n* exons.end\n\nAll other fields may be optionally specified, unless documented as being\nserver-generated (for example, the `id` field). The annotated\nrange must be no longer than 100Mbp (mega base pairs). See the\nAnnotation resource\nfor additional restrictions on each field.",
-                    "httpMethod": "POST",
-                    "id": "genomics.annotations.create",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/annotations",
-                    "request": {
-                        "$ref": "Annotation"
-                    },
-                    "response": {
-                        "$ref": "Annotation"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "batchCreate": {
-                    "description": "Creates one or more new annotations atomically. All annotations must\nbelong to the same annotation set. Caller must have WRITE\npermission for this annotation set. For optimal performance, batch\npositionally adjacent annotations together.\n\nIf the request has a systemic issue, such as an attempt to write to\nan inaccessible annotation set, the entire RPC will fail accordingly. For\nlesser data issues, when possible an error will be isolated to the\ncorresponding batch entry in the response; the remaining well formed\nannotations will be created normally.\n\nFor details on the requirements for each individual annotation resource,\nsee\nCreateAnnotation.",
-                    "httpMethod": "POST",
-                    "id": "genomics.annotations.batchCreate",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/annotations:batchCreate",
-                    "request": {
-                        "$ref": "BatchCreateAnnotationsRequest"
-                    },
-                    "response": {
-                        "$ref": "BatchCreateAnnotationsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "search": {
-                    "description": "Searches for annotations that match the given criteria. Results are\nordered by genomic coordinate (by reference sequence, then position).\nAnnotations with equivalent genomic coordinates are returned in an\nunspecified order. This order is consistent, such that two queries for the\nsame content (regardless of page size) yield annotations in the same order\nacross their respective streams of paginated responses. Caller must have\nREAD permission for the queried annotation sets.",
-                    "httpMethod": "POST",
-                    "id": "genomics.annotations.search",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/annotations/search",
-                    "request": {
-                        "$ref": "SearchAnnotationsRequest"
-                    },
-                    "response": {
-                        "$ref": "SearchAnnotationsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics",
-                        "https://www.googleapis.com/auth/genomics.readonly"
-                    ]
-                },
-                "get": {
-                    "description": "Gets an annotation. Caller must have READ permission\nfor the associated annotation set.",
-                    "httpMethod": "GET",
-                    "id": "genomics.annotations.get",
-                    "parameterOrder": [
-                        "annotationId"
-                    ],
-                    "parameters": {
-                        "annotationId": {
-                            "description": "The ID of the annotation to be retrieved.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/annotations/{annotationId}",
-                    "response": {
-                        "$ref": "Annotation"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics",
-                        "https://www.googleapis.com/auth/genomics.readonly"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an annotation. Caller must have\nWRITE permission for the associated dataset.",
-                    "httpMethod": "PUT",
-                    "id": "genomics.annotations.update",
-                    "parameterOrder": [
-                        "annotationId"
-                    ],
-                    "parameters": {
-                        "updateMask": {
-                            "description": "An optional mask specifying which fields to update. Mutable fields are\nname,\nvariant,\ntranscript, and\ninfo. If unspecified, all mutable\nfields will be updated.",
-                            "format": "google-fieldmask",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "annotationId": {
-                            "description": "The ID of the annotation to be updated.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/annotations/{annotationId}",
-                    "request": {
-                        "$ref": "Annotation"
-                    },
-                    "response": {
-                        "$ref": "Annotation"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "delete": {
-                    "description": "Deletes an annotation. Caller must have WRITE permission for\nthe associated annotation set.",
-                    "httpMethod": "DELETE",
-                    "id": "genomics.annotations.delete",
-                    "parameterOrder": [
-                        "annotationId"
-                    ],
-                    "parameters": {
-                        "annotationId": {
-                            "description": "The ID of the annotation to be deleted.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/annotations/{annotationId}",
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                }
-            }
-        },
-        "variantsets": {
-            "methods": {
-                "search": {
-                    "description": "Returns a list of all variant sets matching search criteria.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchVariantSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L49).",
-                    "httpMethod": "POST",
-                    "id": "genomics.variantsets.search",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/variantsets/search",
-                    "request": {
-                        "$ref": "SearchVariantSetsRequest"
-                    },
-                    "response": {
-                        "$ref": "SearchVariantSetsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics",
-                        "https://www.googleapis.com/auth/genomics.readonly"
-                    ]
-                },
-                "get": {
-                    "description": "Gets a variant set by ID.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-                    "httpMethod": "GET",
-                    "id": "genomics.variantsets.get",
-                    "parameterOrder": [
-                        "variantSetId"
-                    ],
-                    "parameters": {
-                        "variantSetId": {
-                            "description": "Required. The ID of the variant set.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/variantsets/{variantSetId}",
-                    "response": {
-                        "$ref": "VariantSet"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics",
-                        "https://www.googleapis.com/auth/genomics.readonly"
-                    ]
-                },
-                "patch": {
-                    "description": "Updates a variant set using patch semantics.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-                    "httpMethod": "PATCH",
-                    "id": "genomics.variantsets.patch",
-                    "parameterOrder": [
-                        "variantSetId"
-                    ],
-                    "parameters": {
-                        "updateMask": {
-                            "description": "An optional mask specifying which fields to update. Supported fields:\n\n* metadata.\n* name.\n* description.\n\nLeaving `updateMask` unset is equivalent to specifying all mutable\nfields.",
-                            "format": "google-fieldmask",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "variantSetId": {
-                            "description": "The ID of the variant to be updated (must already exist).",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/variantsets/{variantSetId}",
-                    "request": {
-                        "$ref": "VariantSet"
-                    },
-                    "response": {
-                        "$ref": "VariantSet"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "delete": {
-                    "description": "Deletes a variant set including all variants, call sets, and calls within.\nThis is not reversible.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-                    "httpMethod": "DELETE",
-                    "id": "genomics.variantsets.delete",
-                    "parameterOrder": [
-                        "variantSetId"
-                    ],
-                    "parameters": {
-                        "variantSetId": {
-                            "description": "The ID of the variant set to be deleted.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/variantsets/{variantSetId}",
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "create": {
-                    "description": "Creates a new variant set.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThe provided variant set must have a valid `datasetId` set - all other\nfields are optional. Note that the `id` field will be ignored, as this is\nassigned by the server.",
-                    "httpMethod": "POST",
-                    "id": "genomics.variantsets.create",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/variantsets",
-                    "request": {
-                        "$ref": "VariantSet"
-                    },
-                    "response": {
-                        "$ref": "VariantSet"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "export": {
-                    "description": "Exports variant set data to an external destination.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-                    "httpMethod": "POST",
-                    "id": "genomics.variantsets.export",
-                    "parameterOrder": [
-                        "variantSetId"
-                    ],
-                    "parameters": {
-                        "variantSetId": {
-                            "description": "Required. The ID of the variant set that contains variant data which\nshould be exported. The caller must have READ access to this variant set.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/variantsets/{variantSetId}:export",
-                    "request": {
-                        "$ref": "ExportVariantSetRequest"
-                    },
-                    "response": {
-                        "$ref": "Operation"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/bigquery",
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                }
-            }
-        },
-        "operations": {
-            "methods": {
-                "cancel": {
-                    "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. Clients may use Operations.GetOperation or Operations.ListOperations to check whether the cancellation succeeded or the operation completed despite cancellation.",
-                    "httpMethod": "POST",
-                    "id": "genomics.operations.cancel",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The name of the operation resource to be cancelled.",
-                            "location": "path",
-                            "pattern": "^operations/.+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+name}:cancel",
-                    "request": {
-                        "$ref": "CancelOperationRequest"
-                    },
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "get": {
-                    "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
-                    "httpMethod": "GET",
-                    "id": "genomics.operations.get",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The name of the operation resource.",
-                            "location": "path",
-                            "pattern": "^operations/.+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+name}",
-                    "response": {
-                        "$ref": "Operation"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                },
-                "list": {
-                    "description": "Lists operations that match the specified filter in the request.",
-                    "httpMethod": "GET",
-                    "id": "genomics.operations.list",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "filter": {
-                            "description": "A string for filtering Operations.\nThe following filter fields are supported&#58;\n\n* projectId&#58; Required. Corresponds to\n  OperationMetadata.projectId.\n* createTime&#58; The time this job was created, in seconds from the\n  [epoch](http://en.wikipedia.org/wiki/Unix_time). Can use `>=` and/or `<=`\n  operators.\n* status&#58; Can be `RUNNING`, `SUCCESS`, `FAILURE`, or `CANCELED`. Only\n  one status may be specified.\n* labels.key where key is a label key.\n\nExamples&#58;\n\n* `projectId = my-project AND createTime >= 1432140000`\n* `projectId = my-project AND createTime >= 1432140000 AND createTime <= 1432150000 AND status = RUNNING`\n* `projectId = my-project AND labels.color = *`\n* `projectId = my-project AND labels.color = red`",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageToken": {
-                            "description": "The standard list page token.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "name": {
-                            "description": "The name of the operation's parent resource.",
-                            "location": "path",
-                            "pattern": "^operations$",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "pageSize": {
-                            "description": "The maximum number of results to return. If unspecified, defaults to\n256. The maximum value is 2048.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        }
-                    },
-                    "path": "v1/{+name}",
-                    "response": {
-                        "$ref": "ListOperationsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics"
-                    ]
-                }
-            }
-        },
-        "referencesets": {
-            "methods": {
-                "search": {
-                    "description": "Searches for reference sets which match the given criteria.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchReferenceSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L71)",
-                    "httpMethod": "POST",
-                    "id": "genomics.referencesets.search",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/referencesets/search",
-                    "request": {
-                        "$ref": "SearchReferenceSetsRequest"
-                    },
-                    "response": {
-                        "$ref": "SearchReferenceSetsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics",
-                        "https://www.googleapis.com/auth/genomics.readonly"
-                    ]
-                },
-                "get": {
-                    "description": "Gets a reference set.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.getReferenceSet](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L83).",
-                    "httpMethod": "GET",
-                    "id": "genomics.referencesets.get",
-                    "parameterOrder": [
-                        "referenceSetId"
-                    ],
-                    "parameters": {
-                        "referenceSetId": {
-                            "description": "The ID of the reference set.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/referencesets/{referenceSetId}",
-                    "response": {
-                        "$ref": "ReferenceSet"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/genomics",
-                        "https://www.googleapis.com/auth/genomics.readonly"
-                    ]
-                }
-            }
-        },
         "readgroupsets": {
             "methods": {
                 "import": {
@@ -1438,6 +367,48 @@
         },
         "callsets": {
             "methods": {
+                "create": {
+                    "description": "Creates a new call set.\n\nFor the definitions of call sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "httpMethod": "POST",
+                    "id": "genomics.callsets.create",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/callsets",
+                    "request": {
+                        "$ref": "CallSet"
+                    },
+                    "response": {
+                        "$ref": "CallSet"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
+                "delete": {
+                    "description": "Deletes a call set.\n\nFor the definitions of call sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "httpMethod": "DELETE",
+                    "id": "genomics.callsets.delete",
+                    "parameterOrder": [
+                        "callSetId"
+                    ],
+                    "parameters": {
+                        "callSetId": {
+                            "description": "The ID of the call set to be deleted.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/callsets/{callSetId}",
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
                 "search": {
                     "description": "Gets a list of call sets matching the criteria.\n\nFor the definitions of call sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchCallSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L178).",
                     "httpMethod": "POST",
@@ -1514,19 +485,183 @@
                         "https://www.googleapis.com/auth/cloud-platform",
                         "https://www.googleapis.com/auth/genomics"
                     ]
+                }
+            }
+        },
+        "variants": {
+            "methods": {
+                "delete": {
+                    "description": "Deletes a variant.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "httpMethod": "DELETE",
+                    "id": "genomics.variants.delete",
+                    "parameterOrder": [
+                        "variantId"
+                    ],
+                    "parameters": {
+                        "variantId": {
+                            "description": "The ID of the variant to be deleted.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/variants/{variantId}",
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
                 },
-                "create": {
-                    "description": "Creates a new call set.\n\nFor the definitions of call sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                "merge": {
+                    "description": "Merges the given variants with existing variants.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nEach variant will be\nmerged with an existing variant that matches its reference sequence,\nstart, end, reference bases, and alternative bases. If no such variant\nexists, a new one will be created.\n\nWhen variants are merged, the call information from the new variant\nis added to the existing variant. Variant info fields are merged as\nspecified in the\ninfoMergeConfig\nfield of the MergeVariantsRequest.\n\nPlease exercise caution when using this method!  It is easy to introduce\nmistakes in existing variants and difficult to back out of them.  For\nexample,\nsuppose you were trying to merge a new variant with an existing one and\nboth\nvariants contain calls that belong to callsets with the same callset ID.\n\n    // Existing variant - irrelevant fields trimmed for clarity\n    {\n        \"variantSetId\": \"10473108253681171589\",\n        \"referenceName\": \"1\",\n        \"start\": \"10582\",\n        \"referenceBases\": \"G\",\n        \"alternateBases\": [\n            \"A\"\n        ],\n        \"calls\": [\n            {\n                \"callSetId\": \"10473108253681171589-0\",\n                \"callSetName\": \"CALLSET0\",\n                \"genotype\": [\n                    0,\n                    1\n                ],\n            }\n        ]\n    }\n\n    // New variant with conflicting call information\n    {\n        \"variantSetId\": \"10473108253681171589\",\n        \"referenceName\": \"1\",\n        \"start\": \"10582\",\n        \"referenceBases\": \"G\",\n        \"alternateBases\": [\n            \"A\"\n        ],\n        \"calls\": [\n            {\n                \"callSetId\": \"10473108253681171589-0\",\n                \"callSetName\": \"CALLSET0\",\n                \"genotype\": [\n                    1,\n                    1\n                ],\n            }\n        ]\n    }\n\nThe resulting merged variant would overwrite the existing calls with those\nfrom the new variant:\n\n    {\n        \"variantSetId\": \"10473108253681171589\",\n        \"referenceName\": \"1\",\n        \"start\": \"10582\",\n        \"referenceBases\": \"G\",\n        \"alternateBases\": [\n            \"A\"\n        ],\n        \"calls\": [\n            {\n                \"callSetId\": \"10473108253681171589-0\",\n                \"callSetName\": \"CALLSET0\",\n                \"genotype\": [\n                    1,\n                    1\n                ],\n            }\n        ]\n    }\n\nThis may be the desired outcome, but it is up to the user to determine if\nif that is indeed the case.",
                     "httpMethod": "POST",
-                    "id": "genomics.callsets.create",
+                    "id": "genomics.variants.merge",
                     "parameterOrder": [],
                     "parameters": {},
-                    "path": "v1/callsets",
+                    "path": "v1/variants:merge",
                     "request": {
-                        "$ref": "CallSet"
+                        "$ref": "MergeVariantsRequest"
                     },
                     "response": {
-                        "$ref": "CallSet"
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
+                "import": {
+                    "description": "Creates variant data by asynchronously importing the provided information.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThe variants for import will be merged with any existing variant that\nmatches its reference sequence, start, end, reference bases, and\nalternative bases. If no such variant exists, a new one will be created.\n\nWhen variants are merged, the call information from the new variant\nis added to the existing variant, and Variant info fields are merged\nas specified in\ninfoMergeConfig.\nAs a special case, for single-sample VCF files, QUAL and FILTER fields will\nbe moved to the call level; these are sometimes interpreted in a\ncall-specific context.\nImported VCF headers are appended to the metadata already in a variant set.",
+                    "httpMethod": "POST",
+                    "id": "genomics.variants.import",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/variants:import",
+                    "request": {
+                        "$ref": "ImportVariantsRequest"
+                    },
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/devstorage.read_write",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
+                "create": {
+                    "description": "Creates a new variant.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "httpMethod": "POST",
+                    "id": "genomics.variants.create",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/variants",
+                    "request": {
+                        "$ref": "Variant"
+                    },
+                    "response": {
+                        "$ref": "Variant"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
+                "search": {
+                    "description": "Gets a list of variants matching the criteria.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchVariants](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L126).",
+                    "httpMethod": "POST",
+                    "id": "genomics.variants.search",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/variants/search",
+                    "request": {
+                        "$ref": "SearchVariantsRequest"
+                    },
+                    "response": {
+                        "$ref": "SearchVariantsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics",
+                        "https://www.googleapis.com/auth/genomics.readonly"
+                    ]
+                },
+                "patch": {
+                    "description": "Updates a variant.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis method supports patch semantics. Returns the modified variant without\nits calls.",
+                    "httpMethod": "PATCH",
+                    "id": "genomics.variants.patch",
+                    "parameterOrder": [
+                        "variantId"
+                    ],
+                    "parameters": {
+                        "updateMask": {
+                            "description": "An optional mask specifying which fields to update. At this time, mutable\nfields are names and\ninfo. Acceptable values are \"names\" and\n\"info\". If unspecified, all mutable fields will be updated.",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "variantId": {
+                            "description": "The ID of the variant to be updated.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/variants/{variantId}",
+                    "request": {
+                        "$ref": "Variant"
+                    },
+                    "response": {
+                        "$ref": "Variant"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
+                "get": {
+                    "description": "Gets a variant by ID.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "httpMethod": "GET",
+                    "id": "genomics.variants.get",
+                    "parameterOrder": [
+                        "variantId"
+                    ],
+                    "parameters": {
+                        "variantId": {
+                            "description": "The ID of the variant.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/variants/{variantId}",
+                    "response": {
+                        "$ref": "Variant"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics",
+                        "https://www.googleapis.com/auth/genomics.readonly"
+                    ]
+                }
+            }
+        },
+        "annotationsets": {
+            "methods": {
+                "create": {
+                    "description": "Creates a new annotation set. Caller must have WRITE permission for the\nassociated dataset.\n\nThe following fields are required:\n\n  * datasetId\n  * referenceSetId\n\nAll other fields may be optionally specified, unless documented as being\nserver-generated (for example, the `id` field).",
+                    "httpMethod": "POST",
+                    "id": "genomics.annotationsets.create",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/annotationsets",
+                    "request": {
+                        "$ref": "AnnotationSet"
+                    },
+                    "response": {
+                        "$ref": "AnnotationSet"
                     },
                     "scopes": [
                         "https://www.googleapis.com/auth/cloud-platform",
@@ -1534,21 +669,589 @@
                     ]
                 },
                 "delete": {
-                    "description": "Deletes a call set.\n\nFor the definitions of call sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "description": "Deletes an annotation set. Caller must have WRITE permission\nfor the associated annotation set.",
                     "httpMethod": "DELETE",
-                    "id": "genomics.callsets.delete",
+                    "id": "genomics.annotationsets.delete",
                     "parameterOrder": [
-                        "callSetId"
+                        "annotationSetId"
                     ],
                     "parameters": {
-                        "callSetId": {
-                            "description": "The ID of the call set to be deleted.",
+                        "annotationSetId": {
+                            "description": "The ID of the annotation set to be deleted.",
                             "location": "path",
                             "required": true,
                             "type": "string"
                         }
                     },
-                    "path": "v1/callsets/{callSetId}",
+                    "path": "v1/annotationsets/{annotationSetId}",
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
+                "search": {
+                    "description": "Searches for annotation sets that match the given criteria. Annotation sets\nare returned in an unspecified order. This order is consistent, such that\ntwo queries for the same content (regardless of page size) yield annotation\nsets in the same order across their respective streams of paginated\nresponses. Caller must have READ permission for the queried datasets.",
+                    "httpMethod": "POST",
+                    "id": "genomics.annotationsets.search",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/annotationsets/search",
+                    "request": {
+                        "$ref": "SearchAnnotationSetsRequest"
+                    },
+                    "response": {
+                        "$ref": "SearchAnnotationSetsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics",
+                        "https://www.googleapis.com/auth/genomics.readonly"
+                    ]
+                },
+                "get": {
+                    "description": "Gets an annotation set. Caller must have READ permission for\nthe associated dataset.",
+                    "httpMethod": "GET",
+                    "id": "genomics.annotationsets.get",
+                    "parameterOrder": [
+                        "annotationSetId"
+                    ],
+                    "parameters": {
+                        "annotationSetId": {
+                            "description": "The ID of the annotation set to be retrieved.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/annotationsets/{annotationSetId}",
+                    "response": {
+                        "$ref": "AnnotationSet"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics",
+                        "https://www.googleapis.com/auth/genomics.readonly"
+                    ]
+                },
+                "update": {
+                    "description": "Updates an annotation set. The update must respect all mutability\nrestrictions and other invariants described on the annotation set resource.\nCaller must have WRITE permission for the associated dataset.",
+                    "httpMethod": "PUT",
+                    "id": "genomics.annotationsets.update",
+                    "parameterOrder": [
+                        "annotationSetId"
+                    ],
+                    "parameters": {
+                        "updateMask": {
+                            "description": "An optional mask specifying which fields to update. Mutable fields are\nname,\nsource_uri, and\ninfo. If unspecified, all\nmutable fields will be updated.",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "annotationSetId": {
+                            "description": "The ID of the annotation set to be updated.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/annotationsets/{annotationSetId}",
+                    "request": {
+                        "$ref": "AnnotationSet"
+                    },
+                    "response": {
+                        "$ref": "AnnotationSet"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                }
+            }
+        },
+        "references": {
+            "methods": {
+                "search": {
+                    "description": "Searches for references which match the given criteria.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchReferences](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L146).",
+                    "httpMethod": "POST",
+                    "id": "genomics.references.search",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/references/search",
+                    "request": {
+                        "$ref": "SearchReferencesRequest"
+                    },
+                    "response": {
+                        "$ref": "SearchReferencesResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics",
+                        "https://www.googleapis.com/auth/genomics.readonly"
+                    ]
+                },
+                "get": {
+                    "description": "Gets a reference.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.getReference](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L158).",
+                    "httpMethod": "GET",
+                    "id": "genomics.references.get",
+                    "parameterOrder": [
+                        "referenceId"
+                    ],
+                    "parameters": {
+                        "referenceId": {
+                            "description": "The ID of the reference.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/references/{referenceId}",
+                    "response": {
+                        "$ref": "Reference"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics",
+                        "https://www.googleapis.com/auth/genomics.readonly"
+                    ]
+                }
+            },
+            "resources": {
+                "bases": {
+                    "methods": {
+                        "list": {
+                            "description": "Lists the bases in a reference, optionally restricted to a range.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.getReferenceBases](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L221).",
+                            "httpMethod": "GET",
+                            "id": "genomics.references.bases.list",
+                            "parameterOrder": [
+                                "referenceId"
+                            ],
+                            "parameters": {
+                                "pageToken": {
+                                    "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The maximum number of bases to return in a single page. If unspecified,\ndefaults to 200Kbp (kilo base pairs). The maximum value is 10Mbp (mega base\npairs).",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "start": {
+                                    "description": "The start position (0-based) of this query. Defaults to 0.",
+                                    "format": "int64",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "referenceId": {
+                                    "description": "The ID of the reference.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "end": {
+                                    "description": "The end position (0-based, exclusive) of this query. Defaults to the length\nof this reference.",
+                                    "format": "int64",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/references/{referenceId}/bases",
+                            "response": {
+                                "$ref": "ListBasesResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/genomics",
+                                "https://www.googleapis.com/auth/genomics.readonly"
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        "datasets": {
+            "methods": {
+                "getIamPolicy": {
+                    "description": "Gets the access control policy for the dataset. This is empty if the\npolicy or resource does not exist.\n\nSee <a href=\"/iam/docs/managing-policies#getting_a_policy\">Getting a\nPolicy</a> for more information.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "httpMethod": "POST",
+                    "id": "genomics.datasets.getIamPolicy",
+                    "parameterOrder": [
+                        "resource"
+                    ],
+                    "parameters": {
+                        "resource": {
+                            "description": "REQUIRED: The resource for which policy is being specified. Format is\n`datasets/<dataset ID>`.",
+                            "location": "path",
+                            "pattern": "^datasets/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+resource}:getIamPolicy",
+                    "request": {
+                        "$ref": "GetIamPolicyRequest"
+                    },
+                    "response": {
+                        "$ref": "Policy"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
+                "patch": {
+                    "description": "Updates a dataset.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis method supports patch semantics.",
+                    "httpMethod": "PATCH",
+                    "id": "genomics.datasets.patch",
+                    "parameterOrder": [
+                        "datasetId"
+                    ],
+                    "parameters": {
+                        "datasetId": {
+                            "description": "The ID of the dataset to be updated.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "updateMask": {
+                            "description": "An optional mask specifying which fields to update. At this time, the only\nmutable field is name. The only\nacceptable value is \"name\". If unspecified, all mutable fields will be\nupdated.",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/datasets/{datasetId}",
+                    "request": {
+                        "$ref": "Dataset"
+                    },
+                    "response": {
+                        "$ref": "Dataset"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
+                "get": {
+                    "description": "Gets a dataset by ID.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "httpMethod": "GET",
+                    "id": "genomics.datasets.get",
+                    "parameterOrder": [
+                        "datasetId"
+                    ],
+                    "parameters": {
+                        "datasetId": {
+                            "description": "The ID of the dataset.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/datasets/{datasetId}",
+                    "response": {
+                        "$ref": "Dataset"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics",
+                        "https://www.googleapis.com/auth/genomics.readonly"
+                    ]
+                },
+                "undelete": {
+                    "description": "Undeletes a dataset by restoring a dataset which was deleted via this API.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis operation is only possible for a week after the deletion occurred.",
+                    "httpMethod": "POST",
+                    "id": "genomics.datasets.undelete",
+                    "parameterOrder": [
+                        "datasetId"
+                    ],
+                    "parameters": {
+                        "datasetId": {
+                            "description": "The ID of the dataset to be undeleted.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/datasets/{datasetId}:undelete",
+                    "request": {
+                        "$ref": "UndeleteDatasetRequest"
+                    },
+                    "response": {
+                        "$ref": "Dataset"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
+                "testIamPermissions": {
+                    "description": "Returns permissions that a caller has on the specified resource.\nSee <a href=\"/iam/docs/managing-policies#testing_permissions\">Testing\nPermissions</a> for more information.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "httpMethod": "POST",
+                    "id": "genomics.datasets.testIamPermissions",
+                    "parameterOrder": [
+                        "resource"
+                    ],
+                    "parameters": {
+                        "resource": {
+                            "description": "REQUIRED: The resource for which policy is being specified. Format is\n`datasets/<dataset ID>`.",
+                            "location": "path",
+                            "pattern": "^datasets/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+resource}:testIamPermissions",
+                    "request": {
+                        "$ref": "TestIamPermissionsRequest"
+                    },
+                    "response": {
+                        "$ref": "TestIamPermissionsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
+                "delete": {
+                    "description": "Deletes a dataset and all of its contents (all read group sets,\nreference sets, variant sets, call sets, annotation sets, etc.)\nThis is reversible (up to one week after the deletion) via\nthe\ndatasets.undelete\noperation.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "httpMethod": "DELETE",
+                    "id": "genomics.datasets.delete",
+                    "parameterOrder": [
+                        "datasetId"
+                    ],
+                    "parameters": {
+                        "datasetId": {
+                            "description": "The ID of the dataset to be deleted.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/datasets/{datasetId}",
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
+                "list": {
+                    "description": "Lists datasets within a project.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "httpMethod": "GET",
+                    "id": "genomics.datasets.list",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "pageToken": {
+                            "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageSize": {
+                            "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 50. The maximum value is 1024.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        },
+                        "projectId": {
+                            "description": "Required. The Google Cloud project ID to list datasets for.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/datasets",
+                    "response": {
+                        "$ref": "ListDatasetsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics",
+                        "https://www.googleapis.com/auth/genomics.readonly"
+                    ]
+                },
+                "create": {
+                    "description": "Creates a new dataset.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "httpMethod": "POST",
+                    "id": "genomics.datasets.create",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/datasets",
+                    "request": {
+                        "$ref": "Dataset"
+                    },
+                    "response": {
+                        "$ref": "Dataset"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
+                "setIamPolicy": {
+                    "description": "Sets the access control policy on the specified dataset. Replaces any\nexisting policy.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nSee <a href=\"/iam/docs/managing-policies#setting_a_policy\">Setting a\nPolicy</a> for more information.",
+                    "httpMethod": "POST",
+                    "id": "genomics.datasets.setIamPolicy",
+                    "parameterOrder": [
+                        "resource"
+                    ],
+                    "parameters": {
+                        "resource": {
+                            "description": "REQUIRED: The resource for which policy is being specified. Format is\n`datasets/<dataset ID>`.",
+                            "location": "path",
+                            "pattern": "^datasets/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+resource}:setIamPolicy",
+                    "request": {
+                        "$ref": "SetIamPolicyRequest"
+                    },
+                    "response": {
+                        "$ref": "Policy"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                }
+            }
+        },
+        "annotations": {
+            "methods": {
+                "create": {
+                    "description": "Creates a new annotation. Caller must have WRITE permission\nfor the associated annotation set.\n\nThe following fields are required:\n\n* annotationSetId\n* referenceName or\n  referenceId\n\n### Transcripts\n\nFor annotations of type TRANSCRIPT, the following fields of\ntranscript must be provided:\n\n* exons.start\n* exons.end\n\nAll other fields may be optionally specified, unless documented as being\nserver-generated (for example, the `id` field). The annotated\nrange must be no longer than 100Mbp (mega base pairs). See the\nAnnotation resource\nfor additional restrictions on each field.",
+                    "httpMethod": "POST",
+                    "id": "genomics.annotations.create",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/annotations",
+                    "request": {
+                        "$ref": "Annotation"
+                    },
+                    "response": {
+                        "$ref": "Annotation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
+                "batchCreate": {
+                    "description": "Creates one or more new annotations atomically. All annotations must\nbelong to the same annotation set. Caller must have WRITE\npermission for this annotation set. For optimal performance, batch\npositionally adjacent annotations together.\n\nIf the request has a systemic issue, such as an attempt to write to\nan inaccessible annotation set, the entire RPC will fail accordingly. For\nlesser data issues, when possible an error will be isolated to the\ncorresponding batch entry in the response; the remaining well formed\nannotations will be created normally.\n\nFor details on the requirements for each individual annotation resource,\nsee\nCreateAnnotation.",
+                    "httpMethod": "POST",
+                    "id": "genomics.annotations.batchCreate",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/annotations:batchCreate",
+                    "request": {
+                        "$ref": "BatchCreateAnnotationsRequest"
+                    },
+                    "response": {
+                        "$ref": "BatchCreateAnnotationsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
+                "search": {
+                    "description": "Searches for annotations that match the given criteria. Results are\nordered by genomic coordinate (by reference sequence, then position).\nAnnotations with equivalent genomic coordinates are returned in an\nunspecified order. This order is consistent, such that two queries for the\nsame content (regardless of page size) yield annotations in the same order\nacross their respective streams of paginated responses. Caller must have\nREAD permission for the queried annotation sets.",
+                    "httpMethod": "POST",
+                    "id": "genomics.annotations.search",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/annotations/search",
+                    "request": {
+                        "$ref": "SearchAnnotationsRequest"
+                    },
+                    "response": {
+                        "$ref": "SearchAnnotationsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics",
+                        "https://www.googleapis.com/auth/genomics.readonly"
+                    ]
+                },
+                "get": {
+                    "description": "Gets an annotation. Caller must have READ permission\nfor the associated annotation set.",
+                    "httpMethod": "GET",
+                    "id": "genomics.annotations.get",
+                    "parameterOrder": [
+                        "annotationId"
+                    ],
+                    "parameters": {
+                        "annotationId": {
+                            "description": "The ID of the annotation to be retrieved.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/annotations/{annotationId}",
+                    "response": {
+                        "$ref": "Annotation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics",
+                        "https://www.googleapis.com/auth/genomics.readonly"
+                    ]
+                },
+                "update": {
+                    "description": "Updates an annotation. Caller must have\nWRITE permission for the associated dataset.",
+                    "httpMethod": "PUT",
+                    "id": "genomics.annotations.update",
+                    "parameterOrder": [
+                        "annotationId"
+                    ],
+                    "parameters": {
+                        "updateMask": {
+                            "description": "An optional mask specifying which fields to update. Mutable fields are\nname,\nvariant,\ntranscript, and\ninfo. If unspecified, all mutable\nfields will be updated.",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "annotationId": {
+                            "description": "The ID of the annotation to be updated.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/annotations/{annotationId}",
+                    "request": {
+                        "$ref": "Annotation"
+                    },
+                    "response": {
+                        "$ref": "Annotation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
+                },
+                "delete": {
+                    "description": "Deletes an annotation. Caller must have WRITE permission for\nthe associated annotation set.",
+                    "httpMethod": "DELETE",
+                    "id": "genomics.annotations.delete",
+                    "parameterOrder": [
+                        "annotationId"
+                    ],
+                    "parameters": {
+                        "annotationId": {
+                            "description": "The ID of the annotation to be deleted.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/annotations/{annotationId}",
                     "response": {
                         "$ref": "Empty"
                     },
@@ -1558,1502 +1261,308 @@
                     ]
                 }
             }
-        }
-    },
-    "revision": "20170928",
-    "rootUrl": "https://genomics.googleapis.com/",
-    "schemas": {
-        "ImportReadGroupSetsRequest": {
-            "description": "The read group set import request.",
-            "id": "ImportReadGroupSetsRequest",
-            "properties": {
-                "sourceUris": {
-                    "description": "A list of URIs pointing at [BAM\nfiles](https://samtools.github.io/hts-specs/SAMv1.pdf)\nin Google Cloud Storage.\nThose URIs can include wildcards (*), but do not add or remove\nmatching files before import has completed.\n\nNote that Google Cloud Storage object listing is only eventually\nconsistent: files added may be not be immediately visible to\neveryone. Thus, if using a wildcard it is preferable not to start\nthe import immediately after the files are created.",
-                    "items": {
-                        "type": "string"
+        },
+        "variantsets": {
+            "methods": {
+                "create": {
+                    "description": "Creates a new variant set.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThe provided variant set must have a valid `datasetId` set - all other\nfields are optional. Note that the `id` field will be ignored, as this is\nassigned by the server.",
+                    "httpMethod": "POST",
+                    "id": "genomics.variantsets.create",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/variantsets",
+                    "request": {
+                        "$ref": "VariantSet"
                     },
-                    "type": "array"
+                    "response": {
+                        "$ref": "VariantSet"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
                 },
-                "referenceSetId": {
-                    "description": "The reference set to which the imported read group sets are aligned to, if\nany. The reference names of this reference set must be a superset of those\nfound in the imported file headers. If no reference set id is provided, a\nbest effort is made to associate with a matching reference set.",
-                    "type": "string"
-                },
-                "partitionStrategy": {
-                    "description": "The partition strategy describes how read groups are partitioned into read\ngroup sets.",
-                    "enum": [
-                        "PARTITION_STRATEGY_UNSPECIFIED",
-                        "PER_FILE_PER_SAMPLE",
-                        "MERGE_ALL"
+                "export": {
+                    "description": "Exports variant set data to an external destination.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "httpMethod": "POST",
+                    "id": "genomics.variantsets.export",
+                    "parameterOrder": [
+                        "variantSetId"
                     ],
-                    "enumDescriptions": [
-                        "",
-                        "In most cases, this strategy yields one read group set per file. This is\nthe default behavior.\n\nAllocate one read group set per file per sample. For BAM files, read\ngroups are considered to share a sample if they have identical sample\nnames. Furthermore, all reads for each file which do not belong to a read\ngroup, if any, will be grouped into a single read group set per-file.",
-                        "Includes all read groups in all imported files into a single read group\nset. Requires that the headers for all imported files are equivalent. All\nreads which do not belong to a read group, if any, will be grouped into a\nseparate read group set."
-                    ],
-                    "type": "string"
-                },
-                "datasetId": {
-                    "description": "Required. The ID of the dataset these read group sets will belong to. The\ncaller must have WRITE permissions to this dataset.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Policy": {
-            "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
-            "id": "Policy",
-            "properties": {
-                "etag": {
-                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "version": {
-                    "description": "Version of the `Policy`. The default version is 0.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "bindings": {
-                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
-                    "items": {
-                        "$ref": "Binding"
+                    "parameters": {
+                        "variantSetId": {
+                            "description": "Required. The ID of the variant set that contains variant data which\nshould be exported. The caller must have READ access to this variant set.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
                     },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Annotation": {
-            "description": "An annotation describes a region of reference genome. The value of an\nannotation may be one of several canonical types, supplemented by arbitrary\ninfo tags. An annotation is not inherently associated with a specific\nsample or individual (though a client could choose to use annotations in\nthis way). Example canonical annotation types are `GENE` and\n`VARIANT`.",
-            "id": "Annotation",
-            "properties": {
-                "reverseStrand": {
-                    "description": "Whether this range refers to the reverse strand, as opposed to the forward\nstrand. Note that regardless of this field, the start/end position of the\nrange always refer to the forward strand.",
-                    "type": "boolean"
-                },
-                "referenceName": {
-                    "description": "The display name corresponding to the reference specified by\n`referenceId`, for example `chr1`, `1`, or `chrX`.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The data type for this annotation. Must match the containing annotation\nset's type.",
-                    "enum": [
-                        "ANNOTATION_TYPE_UNSPECIFIED",
-                        "GENERIC",
-                        "VARIANT",
-                        "GENE",
-                        "TRANSCRIPT"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "A `GENERIC` annotation type should be used when no other annotation\ntype will suffice. This represents an untyped annotation of the reference\ngenome.",
-                        "A `VARIANT` annotation type.",
-                        "A `GENE` annotation type represents the existence of a gene at the\nassociated reference coordinates. The start coordinate is typically the\ngene's transcription start site and the end is typically the end of the\ngene's last exon.",
-                        "A `TRANSCRIPT` annotation type represents the assertion that a\nparticular region of the reference genome may be transcribed as RNA."
-                    ],
-                    "type": "string"
-                },
-                "info": {
-                    "additionalProperties": {
-                        "items": {
-                            "type": "any"
-                        },
-                        "type": "array"
+                    "path": "v1/variantsets/{variantSetId}:export",
+                    "request": {
+                        "$ref": "ExportVariantSetRequest"
                     },
-                    "description": "A map of additional read alignment information. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
-                    "type": "object"
-                },
-                "end": {
-                    "description": "The end position of the range on the reference, 0-based exclusive.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "transcript": {
-                    "$ref": "Transcript",
-                    "description": "A transcript value represents the assertion that a particular region of\nthe reference genome may be transcribed as RNA. An alternative splicing\npattern would be represented as a separate transcript object. This field\nis only set for annotations of type `TRANSCRIPT`."
-                },
-                "start": {
-                    "description": "The start position of the range on the reference, 0-based inclusive.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "annotationSetId": {
-                    "description": "The annotation set to which this annotation belongs.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The display name of this annotation.",
-                    "type": "string"
-                },
-                "variant": {
-                    "$ref": "VariantAnnotation",
-                    "description": "A variant annotation, which describes the effect of a variant on the\ngenome, the coding sequence, and/or higher level consequences at the\norganism level e.g. pathogenicity. This field is only set for annotations\nof type `VARIANT`."
-                },
-                "referenceId": {
-                    "description": "The ID of the Google Genomics reference associated with this range.",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "The server-generated annotation ID, unique across all annotations.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CancelOperationRequest": {
-            "description": "The request message for Operations.CancelOperation.",
-            "id": "CancelOperationRequest",
-            "properties": {},
-            "type": "object"
-        },
-        "SearchReadsRequest": {
-            "description": "The read search request.",
-            "id": "SearchReadsRequest",
-            "properties": {
-                "readGroupIds": {
-                    "description": "The IDs of the read groups within which to search for reads. All specified\nread groups must belong to the same read group sets. Must specify one of\n`readGroupSetIds` or `readGroupIds`.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "end": {
-                    "description": "The end position of the range on the reference, 0-based exclusive. If\nspecified, `referenceName` must also be specified.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "pageToken": {
-                    "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
-                    "type": "string"
-                },
-                "pageSize": {
-                    "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 256. The maximum value is 2048.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "start": {
-                    "description": "The start position of the range on the reference, 0-based inclusive. If\nspecified, `referenceName` must also be specified.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "referenceName": {
-                    "description": "The reference sequence name, for example `chr1`, `1`, or `chrX`. If set to\n`*`, only unmapped reads are returned. If unspecified, all reads (mapped\nand unmapped) are returned.",
-                    "type": "string"
-                },
-                "readGroupSetIds": {
-                    "description": "The IDs of the read groups sets within which to search for reads. All\nspecified read group sets must be aligned against a common set of reference\nsequences; this defines the genomic coordinates for the query. Must specify\none of `readGroupSetIds` or `readGroupIds`.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "RuntimeMetadata": {
-            "description": "Runtime metadata that will be populated in the\nruntimeMetadata\nfield of the Operation associated with a RunPipeline execution.",
-            "id": "RuntimeMetadata",
-            "properties": {
-                "computeEngine": {
-                    "$ref": "ComputeEngine",
-                    "description": "Execution information specific to Google Compute Engine."
-                }
-            },
-            "type": "object"
-        },
-        "Operation": {
-            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
-            "id": "Operation",
-            "properties": {
-                "done": {
-                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
-                    "type": "boolean"
-                },
-                "response": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "If importing ReadGroupSets, an ImportReadGroupSetsResponse is returned. If importing Variants, an ImportVariantsResponse is returned. For pipelines and exports, an Empty response is returned.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The server-assigned name, which is only unique within the same service that originally returns it. For example&#58; `operations/CJHU7Oi_ChDrveSpBRjfuL-qzoWAgEw`",
-                    "type": "string"
-                },
-                "error": {
-                    "$ref": "Status",
-                    "description": "The error result of the operation in case of failure or cancellation."
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "An OperationMetadata object. This will always be returned with the Operation.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "ImportReadGroupSetsResponse": {
-            "description": "The read group set import response.",
-            "id": "ImportReadGroupSetsResponse",
-            "properties": {
-                "readGroupSetIds": {
-                    "description": "IDs of the read group sets that were created.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "VariantCall": {
-            "description": "A call represents the determination of genotype with respect to a particular\nvariant. It may include associated information such as quality and phasing.\nFor example, a call might assign a probability of 0.32 to the occurrence of\na SNP named rs1234 in a call set with the name NA12345.",
-            "id": "VariantCall",
-            "properties": {
-                "info": {
-                    "additionalProperties": {
-                        "items": {
-                            "type": "any"
-                        },
-                        "type": "array"
-                    },
-                    "description": "A map of additional variant call information. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
-                    "type": "object"
-                },
-                "callSetName": {
-                    "description": "The name of the call set this variant call belongs to.",
-                    "type": "string"
-                },
-                "genotypeLikelihood": {
-                    "description": "The genotype likelihoods for this variant call. Each array entry\nrepresents how likely a specific genotype is for this call. The value\nordering is defined by the GL tag in the VCF spec.\nIf Phred-scaled genotype likelihood scores (PL) are available and\nlog10(P) genotype likelihood scores (GL) are not, PL scores are converted\nto GL scores.  If both are available, PL scores are stored in `info`.",
-                    "items": {
-                        "format": "double",
-                        "type": "number"
-                    },
-                    "type": "array"
-                },
-                "callSetId": {
-                    "description": "The ID of the call set this variant call belongs to.",
-                    "type": "string"
-                },
-                "genotype": {
-                    "description": "The genotype of this variant call. Each value represents either the value\nof the `referenceBases` field or a 1-based index into\n`alternateBases`. If a variant had a `referenceBases`\nvalue of `T` and an `alternateBases`\nvalue of `[\"A\", \"C\"]`, and the `genotype` was\n`[2, 1]`, that would mean the call\nrepresented the heterozygous value `CA` for this variant.\nIf the `genotype` was instead `[0, 1]`, the\nrepresented value would be `TA`. Ordering of the\ngenotype values is important if the `phaseset` is present.\nIf a genotype is not called (that is, a `.` is present in the\nGT string) -1 is returned.",
-                    "items": {
-                        "format": "int32",
-                        "type": "integer"
-                    },
-                    "type": "array"
-                },
-                "phaseset": {
-                    "description": "If this field is present, this variant call's genotype ordering implies\nthe phase of the bases and is consistent with any other variant calls in\nthe same reference sequence which have the same phaseset value.\nWhen importing data from VCF, if the genotype data was phased but no\nphase set was specified this field will be set to `*`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SearchVariantsResponse": {
-            "description": "The variant search response.",
-            "id": "SearchVariantsResponse",
-            "properties": {
-                "variants": {
-                    "description": "The list of matching Variants.",
-                    "items": {
-                        "$ref": "Variant"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListBasesResponse": {
-            "id": "ListBasesResponse",
-            "properties": {
-                "sequence": {
-                    "description": "A substring of the bases that make up this reference.",
-                    "type": "string"
-                },
-                "offset": {
-                    "description": "The offset position (0-based) of the given `sequence` from the\nstart of this `Reference`. This value will differ for each page\nin a paginated request.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "nextPageToken": {
-                    "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Status": {
-            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
-            "id": "Status",
-            "properties": {
-                "details": {
-                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                },
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Binding": {
-            "description": "Associates `members` with a `role`.",
-            "id": "Binding",
-            "properties": {
-                "members": {
-                    "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "role": {
-                    "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UndeleteDatasetRequest": {
-            "id": "UndeleteDatasetRequest",
-            "properties": {},
-            "type": "object"
-        },
-        "Range": {
-            "description": "A 0-based half-open genomic coordinate range for search requests.",
-            "id": "Range",
-            "properties": {
-                "end": {
-                    "description": "The end position of the range on the reference, 0-based exclusive.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "referenceName": {
-                    "description": "The reference sequence name, for example `chr1`,\n`1`, or `chrX`.",
-                    "type": "string"
-                },
-                "start": {
-                    "description": "The start position of the range on the reference, 0-based inclusive.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "VariantSet": {
-            "description": "A variant set is a collection of call sets and variants. It contains summary\nstatistics of those contents. A variant set belongs to a dataset.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-            "id": "VariantSet",
-            "properties": {
-                "referenceSetId": {
-                    "description": "The reference set to which the variant set is mapped. The reference set\ndescribes the alignment provenance of the variant set, while the\n`referenceBounds` describe the shape of the actual variant data. The\nreference set's reference names are a superset of those found in the\n`referenceBounds`.\n\nFor example, given a variant set that is mapped to the GRCh38 reference set\nand contains a single variant on reference 'X', `referenceBounds` would\ncontain only an entry for 'X', while the associated reference set\nenumerates all possible references: '1', '2', 'X', 'Y', 'MT', etc.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "description": "The metadata associated with this variant set.",
-                    "items": {
-                        "$ref": "VariantSetMetadata"
-                    },
-                    "type": "array"
-                },
-                "referenceBounds": {
-                    "description": "A list of all references used by the variants in a variant set\nwith associated coordinate upper bounds for each one.",
-                    "items": {
-                        "$ref": "ReferenceBound"
-                    },
-                    "type": "array"
-                },
-                "id": {
-                    "description": "The server-generated variant set ID, unique across all variant sets.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "A textual description of this variant set.",
-                    "type": "string"
-                },
-                "datasetId": {
-                    "description": "The dataset to which this variant set belongs.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "User-specified, mutable name.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ReferenceBound": {
-            "description": "ReferenceBound records an upper bound for the starting coordinate of\nvariants in a particular reference.",
-            "id": "ReferenceBound",
-            "properties": {
-                "referenceName": {
-                    "description": "The name of the reference associated with this reference bound.",
-                    "type": "string"
-                },
-                "upperBound": {
-                    "description": "An upper bound (inclusive) on the starting coordinate of any\nvariant in the reference sequence.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "BatchCreateAnnotationsResponse": {
-            "id": "BatchCreateAnnotationsResponse",
-            "properties": {
-                "entries": {
-                    "description": "The resulting per-annotation entries, ordered consistently with the\noriginal request.",
-                    "items": {
-                        "$ref": "Entry"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ListOperationsResponse": {
-            "description": "The response message for Operations.ListOperations.",
-            "id": "ListOperationsResponse",
-            "properties": {
-                "operations": {
-                    "description": "A list of operations that matches the specified filter in the request.",
-                    "items": {
+                    "response": {
                         "$ref": "Operation"
                     },
-                    "type": "array"
+                    "scopes": [
+                        "https://www.googleapis.com/auth/bigquery",
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
                 },
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SearchCallSetsResponse": {
-            "description": "The call set search response.",
-            "id": "SearchCallSetsResponse",
-            "properties": {
-                "callSets": {
-                    "description": "The list of matching call sets.",
-                    "items": {
-                        "$ref": "CallSet"
+                "search": {
+                    "description": "Returns a list of all variant sets matching search criteria.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchVariantSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L49).",
+                    "httpMethod": "POST",
+                    "id": "genomics.variantsets.search",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/variantsets/search",
+                    "request": {
+                        "$ref": "SearchVariantSetsRequest"
                     },
-                    "type": "array"
+                    "response": {
+                        "$ref": "SearchVariantSetsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics",
+                        "https://www.googleapis.com/auth/genomics.readonly"
+                    ]
                 },
-                "nextPageToken": {
-                    "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Variant": {
-            "description": "A variant represents a change in DNA sequence relative to a reference\nsequence. For example, a variant could represent a SNP or an insertion.\nVariants belong to a variant set.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nEach of the calls on a variant represent a determination of genotype with\nrespect to that variant. For example, a call might assign probability of 0.32\nto the occurrence of a SNP named rs1234 in a sample named NA12345. A call\nbelongs to a call set, which contains related calls typically from one\nsample.",
-            "id": "Variant",
-            "properties": {
-                "id": {
-                    "description": "The server-generated variant ID, unique across all variants.",
-                    "type": "string"
-                },
-                "variantSetId": {
-                    "description": "The ID of the variant set this variant belongs to.",
-                    "type": "string"
-                },
-                "referenceName": {
-                    "description": "The reference on which this variant occurs.\n(such as `chr20` or `X`)",
-                    "type": "string"
-                },
-                "info": {
-                    "additionalProperties": {
-                        "items": {
-                            "type": "any"
+                "patch": {
+                    "description": "Updates a variant set using patch semantics.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "httpMethod": "PATCH",
+                    "id": "genomics.variantsets.patch",
+                    "parameterOrder": [
+                        "variantSetId"
+                    ],
+                    "parameters": {
+                        "updateMask": {
+                            "description": "An optional mask specifying which fields to update. Supported fields:\n\n* metadata.\n* name.\n* description.\n\nLeaving `updateMask` unset is equivalent to specifying all mutable\nfields.",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
                         },
-                        "type": "array"
+                        "variantSetId": {
+                            "description": "The ID of the variant to be updated (must already exist).",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
                     },
-                    "description": "A map of additional variant information. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
-                    "type": "object"
-                },
-                "referenceBases": {
-                    "description": "The reference bases for this variant. They start at the given\nposition.",
-                    "type": "string"
-                },
-                "names": {
-                    "description": "Names for the variant, for example a RefSNP ID.",
-                    "items": {
-                        "type": "string"
+                    "path": "v1/variantsets/{variantSetId}",
+                    "request": {
+                        "$ref": "VariantSet"
                     },
-                    "type": "array"
-                },
-                "alternateBases": {
-                    "description": "The bases that appear instead of the reference bases.",
-                    "items": {
-                        "type": "string"
+                    "response": {
+                        "$ref": "VariantSet"
                     },
-                    "type": "array"
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
                 },
-                "filter": {
-                    "description": "A list of filters (normally quality filters) this variant has failed.\n`PASS` indicates this variant has passed all filters.",
-                    "items": {
-                        "type": "string"
+                "get": {
+                    "description": "Gets a variant set by ID.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "httpMethod": "GET",
+                    "id": "genomics.variantsets.get",
+                    "parameterOrder": [
+                        "variantSetId"
+                    ],
+                    "parameters": {
+                        "variantSetId": {
+                            "description": "Required. The ID of the variant set.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
                     },
-                    "type": "array"
-                },
-                "end": {
-                    "description": "The end position (0-based) of this variant. This corresponds to the first\nbase after the last base in the reference allele. So, the length of\nthe reference allele is (end - start). This is useful for variants\nthat don't explicitly give alternate bases, for example large deletions.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "calls": {
-                    "description": "The variant calls for this particular variant. Each one represents the\ndetermination of genotype with respect to this variant.",
-                    "items": {
-                        "$ref": "VariantCall"
+                    "path": "v1/variantsets/{variantSetId}",
+                    "response": {
+                        "$ref": "VariantSet"
                     },
-                    "type": "array"
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics",
+                        "https://www.googleapis.com/auth/genomics.readonly"
+                    ]
                 },
-                "created": {
-                    "description": "The date this variant was created, in milliseconds from the epoch.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "start": {
-                    "description": "The position at which this variant occurs (0-based).\nThis corresponds to the first base of the string of reference bases.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "quality": {
-                    "description": "A measure of how likely this variant is to be real.\nA higher value is better.",
-                    "format": "double",
-                    "type": "number"
+                "delete": {
+                    "description": "Deletes a variant set including all variants, call sets, and calls within.\nThis is not reversible.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+                    "httpMethod": "DELETE",
+                    "id": "genomics.variantsets.delete",
+                    "parameterOrder": [
+                        "variantSetId"
+                    ],
+                    "parameters": {
+                        "variantSetId": {
+                            "description": "The ID of the variant set to be deleted.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/variantsets/{variantSetId}",
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
                 }
-            },
-            "type": "object"
+            }
         },
-        "SearchVariantsRequest": {
-            "description": "The variant search request.",
-            "id": "SearchVariantsRequest",
-            "properties": {
-                "variantSetIds": {
-                    "description": "At most one variant set ID must be provided. Only variants from this\nvariant set will be returned. If omitted, a call set id must be included in\nthe request.",
-                    "items": {
-                        "type": "string"
+        "operations": {
+            "methods": {
+                "cancel": {
+                    "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. Clients may use Operations.GetOperation or Operations.ListOperations to check whether the cancellation succeeded or the operation completed despite cancellation.",
+                    "httpMethod": "POST",
+                    "id": "genomics.operations.cancel",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The name of the operation resource to be cancelled.",
+                            "location": "path",
+                            "pattern": "^operations/.+$",
+                            "required": true,
+                            "type": "string"
+                        }
                     },
-                    "type": "array"
-                },
-                "end": {
-                    "description": "The end of the window, 0-based exclusive. If unspecified or 0, defaults to\nthe length of the reference.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "maxCalls": {
-                    "description": "The maximum number of calls to return in a single page. Note that this\nlimit may be exceeded in the event that a matching variant contains more\ncalls than the requested maximum. If unspecified, defaults to 5000. The\nmaximum value is 10000.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "pageToken": {
-                    "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
-                    "type": "string"
-                },
-                "pageSize": {
-                    "description": "The maximum number of variants to return in a single page. If unspecified,\ndefaults to 5000. The maximum value is 10000.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "callSetIds": {
-                    "description": "Only return variant calls which belong to call sets with these ids.\nLeaving this blank returns all variant calls. If a variant has no\ncalls belonging to any of these call sets, it won't be returned at all.",
-                    "items": {
-                        "type": "string"
+                    "path": "v1/{+name}:cancel",
+                    "request": {
+                        "$ref": "CancelOperationRequest"
                     },
-                    "type": "array"
-                },
-                "variantName": {
-                    "description": "Only return variants which have exactly this name.",
-                    "type": "string"
-                },
-                "start": {
-                    "description": "The beginning of the window (0-based, inclusive) for which\noverlapping variants should be returned. If unspecified, defaults to 0.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "referenceName": {
-                    "description": "Required. Only return variants in this reference sequence.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "OperationMetadata": {
-            "description": "Metadata describing an Operation.",
-            "id": "OperationMetadata",
-            "properties": {
-                "createTime": {
-                    "description": "The time at which the job was submitted to the Genomics service.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "labels": {
-                    "additionalProperties": {
-                        "type": "string"
+                    "response": {
+                        "$ref": "Empty"
                     },
-                    "description": "Optionally provided by the caller when submitting the request that creates\nthe operation.",
-                    "type": "object"
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
                 },
-                "projectId": {
-                    "description": "The Google Cloud Project in which the job is scoped.",
-                    "type": "string"
-                },
-                "clientId": {
-                    "description": "This field is deprecated. Use `labels` instead. Optionally provided by the\ncaller when submitting the request that creates the operation.",
-                    "type": "string"
-                },
-                "endTime": {
-                    "description": "The time at which the job stopped running.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "events": {
-                    "description": "Optional event messages that were generated during the job's execution.\nThis also contains any warnings that were generated during import\nor export.",
-                    "items": {
-                        "$ref": "OperationEvent"
+                "get": {
+                    "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+                    "httpMethod": "GET",
+                    "id": "genomics.operations.get",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The name of the operation resource.",
+                            "location": "path",
+                            "pattern": "^operations/.+$",
+                            "required": true,
+                            "type": "string"
+                        }
                     },
-                    "type": "array"
-                },
-                "startTime": {
-                    "description": "The time at which the job began to run.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "request": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
+                    "path": "v1/{+name}",
+                    "response": {
+                        "$ref": "Operation"
                     },
-                    "description": "The original request that started the operation. Note that this will be in\ncurrent version of the API. If the operation was started with v1beta2 API\nand a GetOperation is performed on v1 API, a v1 request will be returned.",
-                    "type": "object"
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
                 },
-                "runtimeMetadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Runtime metadata on this Operation.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "SearchReadGroupSetsRequest": {
-            "description": "The read group set search request.",
-            "id": "SearchReadGroupSetsRequest",
-            "properties": {
-                "pageSize": {
-                    "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 256. The maximum value is 1024.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "datasetIds": {
-                    "description": "Restricts this query to read group sets within the given datasets. At least\none ID must be provided.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "pageToken": {
-                    "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Only return read group sets for which a substring of the name matches this\nstring.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SearchAnnotationsResponse": {
-            "id": "SearchAnnotationsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.",
-                    "type": "string"
-                },
-                "annotations": {
-                    "description": "The matching annotations.",
-                    "items": {
-                        "$ref": "Annotation"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ClinicalCondition": {
-            "id": "ClinicalCondition",
-            "properties": {
-                "omimId": {
-                    "description": "The OMIM id for this condition.\nSearch for these IDs at http://omim.org/",
-                    "type": "string"
-                },
-                "externalIds": {
-                    "description": "The set of external IDs for this condition.",
-                    "items": {
-                        "$ref": "ExternalId"
-                    },
-                    "type": "array"
-                },
-                "conceptId": {
-                    "description": "The MedGen concept id associated with this gene.\nSearch for these IDs at http://www.ncbi.nlm.nih.gov/medgen/",
-                    "type": "string"
-                },
-                "names": {
-                    "description": "A set of names for the condition.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "SearchReadsResponse": {
-            "description": "The read search response.",
-            "id": "SearchReadsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.",
-                    "type": "string"
-                },
-                "alignments": {
-                    "description": "The list of matching alignments sorted by mapped genomic coordinate,\nif any, ascending in position within the same reference. Unmapped reads,\nwhich have no position, are returned contiguously and are sorted in\nascending lexicographic order by fragment name.",
-                    "items": {
-                        "$ref": "Read"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Program": {
-            "id": "Program",
-            "properties": {
-                "name": {
-                    "description": "The display name of the program. This is typically the colloquial name of\nthe tool used, for example 'bwa' or 'picard'.",
-                    "type": "string"
-                },
-                "prevProgramId": {
-                    "description": "The ID of the program run before this one.",
-                    "type": "string"
-                },
-                "commandLine": {
-                    "description": "The command line used to run this program.",
-                    "type": "string"
-                },
-                "version": {
-                    "description": "The version of the program run.",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "The user specified locally unique ID of the program. Used along with\n`prevProgramId` to define an ordering between programs.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ComputeEngine": {
-            "description": "Describes a Compute Engine resource that is being managed by a running\npipeline.",
-            "id": "ComputeEngine",
-            "properties": {
-                "diskNames": {
-                    "description": "The names of the disks that were created for this pipeline.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "machineType": {
-                    "description": "The machine type of the instance.",
-                    "type": "string"
-                },
-                "instanceName": {
-                    "description": "The instance on which the operation is running.",
-                    "type": "string"
-                },
-                "zone": {
-                    "description": "The availability zone in which the instance resides.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CoverageBucket": {
-            "description": "A bucket over which read coverage has been precomputed. A bucket corresponds\nto a specific range of the reference sequence.",
-            "id": "CoverageBucket",
-            "properties": {
-                "meanCoverage": {
-                    "description": "The average number of reads which are aligned to each individual\nreference base in this bucket.",
-                    "format": "float",
-                    "type": "number"
-                },
-                "range": {
-                    "$ref": "Range",
-                    "description": "The genomic coordinate range spanned by this bucket."
-                }
-            },
-            "type": "object"
-        },
-        "ExternalId": {
-            "id": "ExternalId",
-            "properties": {
-                "id": {
-                    "description": "The id used by the source of this data.",
-                    "type": "string"
-                },
-                "sourceName": {
-                    "description": "The name of the source of this data.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "VariantSetMetadata": {
-            "description": "Metadata describes a single piece of variant call metadata.\nThese data include a top level key and either a single value string (value)\nor a list of key-value pairs (info.)\nValue and info are mutually exclusive.",
-            "id": "VariantSetMetadata",
-            "properties": {
-                "info": {
-                    "additionalProperties": {
-                        "items": {
-                            "type": "any"
+                "list": {
+                    "description": "Lists operations that match the specified filter in the request.",
+                    "httpMethod": "GET",
+                    "id": "genomics.operations.list",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "filter": {
+                            "description": "A string for filtering Operations.\nThe following filter fields are supported&#58;\n\n* projectId&#58; Required. Corresponds to\n  OperationMetadata.projectId.\n* createTime&#58; The time this job was created, in seconds from the\n  [epoch](http://en.wikipedia.org/wiki/Unix_time). Can use `>=` and/or `<=`\n  operators.\n* status&#58; Can be `RUNNING`, `SUCCESS`, `FAILURE`, or `CANCELED`. Only\n  one status may be specified.\n* labels.key where key is a label key.\n\nExamples&#58;\n\n* `projectId = my-project AND createTime >= 1432140000`\n* `projectId = my-project AND createTime >= 1432140000 AND createTime <= 1432150000 AND status = RUNNING`\n* `projectId = my-project AND labels.color = *`\n* `projectId = my-project AND labels.color = red`",
+                            "location": "query",
+                            "type": "string"
                         },
-                        "type": "array"
-                    },
-                    "description": "Remaining structured metadata key-value pairs. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
-                    "type": "object"
-                },
-                "type": {
-                    "description": "The type of data. Possible types include: Integer, Float,\nFlag, Character, and String.",
-                    "enum": [
-                        "TYPE_UNSPECIFIED",
-                        "INTEGER",
-                        "FLOAT",
-                        "FLAG",
-                        "CHARACTER",
-                        "STRING"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "number": {
-                    "description": "The number of values that can be included in a field described by this\nmetadata.",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "User-provided ID field, not enforced by this API.\nTwo or more pieces of structured metadata with identical\nid and key fields are considered equivalent.",
-                    "type": "string"
-                },
-                "value": {
-                    "description": "The value field for simple metadata",
-                    "type": "string"
-                },
-                "key": {
-                    "description": "The top-level key.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "A textual description of this metadata.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Reference": {
-            "description": "A reference is a canonical assembled DNA sequence, intended to act as a\nreference coordinate space for other genomic annotations. A single reference\nmight represent the human chromosome 1 or mitochandrial DNA, for instance. A\nreference belongs to one or more reference sets.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-            "id": "Reference",
-            "properties": {
-                "md5checksum": {
-                    "description": "MD5 of the upper-case sequence excluding all whitespace characters (this\nis equivalent to SQ:M5 in SAM). This value is represented in lower case\nhexadecimal format.",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "The server-generated reference ID, unique across all references.",
-                    "type": "string"
-                },
-                "length": {
-                    "description": "The length of this reference's sequence.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "sourceAccessions": {
-                    "description": "All known corresponding accession IDs in INSDC (GenBank/ENA/DDBJ) ideally\nwith a version number, for example `GCF_000001405.26`.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "ncbiTaxonId": {
-                    "description": "ID from http://www.ncbi.nlm.nih.gov/taxonomy. For example, 9606 for human.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "sourceUri": {
-                    "description": "The URI from which the sequence was obtained. Typically specifies a FASTA\nformat file.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of this reference, for example `22`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SearchVariantSetsRequest": {
-            "description": "The search variant sets request.",
-            "id": "SearchVariantSetsRequest",
-            "properties": {
-                "pageToken": {
-                    "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
-                    "type": "string"
-                },
-                "pageSize": {
-                    "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 1024.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "datasetIds": {
-                    "description": "Exactly one dataset ID must be provided here. Only variant sets which\nbelong to this dataset will be returned.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "SearchReferenceSetsRequest": {
-            "id": "SearchReferenceSetsRequest",
-            "properties": {
-                "pageSize": {
-                    "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 1024. The maximum value is 4096.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "assemblyId": {
-                    "description": "If present, return reference sets for which a substring of their\n`assemblyId` matches this string (case insensitive).",
-                    "type": "string"
-                },
-                "md5checksums": {
-                    "description": "If present, return reference sets for which the\nmd5checksum matches exactly.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "pageToken": {
-                    "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
-                    "type": "string"
-                },
-                "accessions": {
-                    "description": "If present, return reference sets for which a prefix of any of\nsourceAccessions\nmatch any of these strings. Accession numbers typically have a main number\nand a version, for example `NC_000001.11`.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "SetIamPolicyRequest": {
-            "description": "Request message for `SetIamPolicy` method.",
-            "id": "SetIamPolicyRequest",
-            "properties": {
-                "policy": {
-                    "$ref": "Policy",
-                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
-                }
-            },
-            "type": "object"
-        },
-        "MergeVariantsRequest": {
-            "id": "MergeVariantsRequest",
-            "properties": {
-                "infoMergeConfig": {
-                    "additionalProperties": {
-                        "enum": [
-                            "INFO_MERGE_OPERATION_UNSPECIFIED",
-                            "IGNORE_NEW",
-                            "MOVE_TO_CALLS"
-                        ],
-                        "type": "string"
-                    },
-                    "description": "A mapping between info field keys and the InfoMergeOperations to\nbe performed on them.",
-                    "type": "object"
-                },
-                "variantSetId": {
-                    "description": "The destination variant set.",
-                    "type": "string"
-                },
-                "variants": {
-                    "description": "The variants to be merged with existing variants.",
-                    "items": {
-                        "$ref": "Variant"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "BatchCreateAnnotationsRequest": {
-            "id": "BatchCreateAnnotationsRequest",
-            "properties": {
-                "annotations": {
-                    "description": "The annotations to be created. At most 4096 can be specified in a single\nrequest.",
-                    "items": {
-                        "$ref": "Annotation"
-                    },
-                    "type": "array"
-                },
-                "requestId": {
-                    "description": "A unique request ID which enables the server to detect duplicated requests.\nIf provided, duplicated requests will result in the same response; if not\nprovided, duplicated requests may result in duplicated data. For a given\nannotation set, callers should not reuse `request_id`s when writing\ndifferent batches of annotations - behavior in this case is undefined.\nA common approach is to use a UUID. For batch jobs where worker crashes are\na possibility, consider using some unique variant of a worker or run ID.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Read": {
-            "description": "A read alignment describes a linear alignment of a string of DNA to a\nreference sequence, in addition to metadata\nabout the fragment (the molecule of DNA sequenced) and the read (the bases\nwhich were read by the sequencer). A read is equivalent to a line in a SAM\nfile. A read belongs to exactly one read group and exactly one\nread group set.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\n### Reverse-stranded reads\n\nMapped reads (reads having a non-null `alignment`) can be aligned to either\nthe forward or the reverse strand of their associated reference. Strandedness\nof a mapped read is encoded by `alignment.position.reverseStrand`.\n\nIf we consider the reference to be a forward-stranded coordinate space of\n`[0, reference.length)` with `0` as the left-most position and\n`reference.length` as the right-most position, reads are always aligned left\nto right. That is, `alignment.position.position` always refers to the\nleft-most reference coordinate and `alignment.cigar` describes the alignment\nof this read to the reference from left to right. All per-base fields such as\n`alignedSequence` and `alignedQuality` share this same left-to-right\norientation; this is true of reads which are aligned to either strand. For\nreverse-stranded reads, this means that `alignedSequence` is the reverse\ncomplement of the bases that were originally reported by the sequencing\nmachine.\n\n### Generating a reference-aligned sequence string\n\nWhen interacting with mapped reads, it's often useful to produce a string\nrepresenting the local alignment of the read to reference. The following\npseudocode demonstrates one way of doing this:\n\n    out = \"\"\n    offset = 0\n    for c in read.alignment.cigar {\n      switch c.operation {\n      case \"ALIGNMENT_MATCH\", \"SEQUENCE_MATCH\", \"SEQUENCE_MISMATCH\":\n        out += read.alignedSequence[offset:offset+c.operationLength]\n        offset += c.operationLength\n        break\n      case \"CLIP_SOFT\", \"INSERT\":\n        offset += c.operationLength\n        break\n      case \"PAD\":\n        out += repeat(\"*\", c.operationLength)\n        break\n      case \"DELETE\":\n        out += repeat(\"-\", c.operationLength)\n        break\n      case \"SKIP\":\n        out += repeat(\" \", c.operationLength)\n        break\n      case \"CLIP_HARD\":\n        break\n      }\n    }\n    return out\n\n### Converting to SAM's CIGAR string\n\nThe following pseudocode generates a SAM CIGAR string from the\n`cigar` field. Note that this is a lossy conversion\n(`cigar.referenceSequence` is lost).\n\n    cigarMap = {\n      \"ALIGNMENT_MATCH\": \"M\",\n      \"INSERT\": \"I\",\n      \"DELETE\": \"D\",\n      \"SKIP\": \"N\",\n      \"CLIP_SOFT\": \"S\",\n      \"CLIP_HARD\": \"H\",\n      \"PAD\": \"P\",\n      \"SEQUENCE_MATCH\": \"=\",\n      \"SEQUENCE_MISMATCH\": \"X\",\n    }\n    cigarStr = \"\"\n    for c in read.alignment.cigar {\n      cigarStr += c.operationLength + cigarMap[c.operation]\n    }\n    return cigarStr",
-            "id": "Read",
-            "properties": {
-                "readGroupSetId": {
-                    "description": "The ID of the read group set this read belongs to. A read belongs to\nexactly one read group set.",
-                    "type": "string"
-                },
-                "duplicateFragment": {
-                    "description": "The fragment is a PCR or optical duplicate (SAM flag 0x400).",
-                    "type": "boolean"
-                },
-                "readNumber": {
-                    "description": "The read number in sequencing. 0-based and less than numberReads. This\nfield replaces SAM flag 0x40 and 0x80.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "readGroupId": {
-                    "description": "The ID of the read group this read belongs to. A read belongs to exactly\none read group. This is a server-generated ID which is distinct from SAM's\nRG tag (for that value, see\nReadGroup.name).",
-                    "type": "string"
-                },
-                "alignedSequence": {
-                    "description": "The bases of the read sequence contained in this alignment record,\n**without CIGAR operations applied** (equivalent to SEQ in SAM).\n`alignedSequence` and `alignedQuality` may be\nshorter than the full read sequence and quality. This will occur if the\nalignment is part of a chimeric alignment, or if the read was trimmed. When\nthis occurs, the CIGAR for this read will begin/end with a hard clip\noperator that will indicate the length of the excised sequence.",
-                    "type": "string"
-                },
-                "info": {
-                    "additionalProperties": {
-                        "items": {
-                            "type": "any"
+                        "pageToken": {
+                            "description": "The standard list page token.",
+                            "location": "query",
+                            "type": "string"
                         },
-                        "type": "array"
-                    },
-                    "description": "A map of additional read alignment information. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
-                    "type": "object"
-                },
-                "nextMatePosition": {
-                    "$ref": "Position",
-                    "description": "The mapping of the primary alignment of the\n`(readNumber+1)%numberReads` read in the fragment. It replaces\nmate position and mate strand in SAM."
-                },
-                "supplementaryAlignment": {
-                    "description": "Whether this alignment is supplementary. Equivalent to SAM flag 0x800.\nSupplementary alignments are used in the representation of a chimeric\nalignment. In a chimeric alignment, a read is split into multiple\nlinear alignments that map to different reference contigs. The first\nlinear alignment in the read will be designated as the representative\nalignment; the remaining linear alignments will be designated as\nsupplementary alignments. These alignments may have different mapping\nquality scores. In each linear alignment in a chimeric alignment, the read\nwill be hard clipped. The `alignedSequence` and\n`alignedQuality` fields in the alignment record will only\nrepresent the bases for its respective linear alignment.",
-                    "type": "boolean"
-                },
-                "properPlacement": {
-                    "description": "The orientation and the distance between reads from the fragment are\nconsistent with the sequencing protocol (SAM flag 0x2).",
-                    "type": "boolean"
-                },
-                "fragmentLength": {
-                    "description": "The observed length of the fragment, equivalent to TLEN in SAM.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "failedVendorQualityChecks": {
-                    "description": "Whether this read did not pass filters, such as platform or vendor quality\ncontrols (SAM flag 0x200).",
-                    "type": "boolean"
-                },
-                "alignedQuality": {
-                    "description": "The quality of the read sequence contained in this alignment record\n(equivalent to QUAL in SAM).\n`alignedSequence` and `alignedQuality` may be shorter than the full read\nsequence and quality. This will occur if the alignment is part of a\nchimeric alignment, or if the read was trimmed. When this occurs, the CIGAR\nfor this read will begin/end with a hard clip operator that will indicate\nthe length of the excised sequence.",
-                    "items": {
-                        "format": "int32",
-                        "type": "integer"
-                    },
-                    "type": "array"
-                },
-                "alignment": {
-                    "$ref": "LinearAlignment",
-                    "description": "The linear alignment for this alignment record. This field is null for\nunmapped reads."
-                },
-                "numberReads": {
-                    "description": "The number of reads in the fragment (extension to SAM flag 0x1).",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "id": {
-                    "description": "The server-generated read ID, unique across all reads. This is different\nfrom the `fragmentName`.",
-                    "type": "string"
-                },
-                "secondaryAlignment": {
-                    "description": "Whether this alignment is secondary. Equivalent to SAM flag 0x100.\nA secondary alignment represents an alternative to the primary alignment\nfor this read. Aligners may return secondary alignments if a read can map\nambiguously to multiple coordinates in the genome. By convention, each read\nhas one and only one alignment where both `secondaryAlignment`\nand `supplementaryAlignment` are false.",
-                    "type": "boolean"
-                },
-                "fragmentName": {
-                    "description": "The fragment name. Equivalent to QNAME (query template name) in SAM.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CigarUnit": {
-            "description": "A single CIGAR operation.",
-            "id": "CigarUnit",
-            "properties": {
-                "referenceSequence": {
-                    "description": "`referenceSequence` is only used at mismatches\n(`SEQUENCE_MISMATCH`) and deletions (`DELETE`).\nFilling this field replaces SAM's MD tag. If the relevant information is\nnot available, this field is unset.",
-                    "type": "string"
-                },
-                "operationLength": {
-                    "description": "The number of genomic bases that the operation runs for. Required.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "operation": {
-                    "enum": [
-                        "OPERATION_UNSPECIFIED",
-                        "ALIGNMENT_MATCH",
-                        "INSERT",
-                        "DELETE",
-                        "SKIP",
-                        "CLIP_SOFT",
-                        "CLIP_HARD",
-                        "PAD",
-                        "SEQUENCE_MATCH",
-                        "SEQUENCE_MISMATCH"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "An alignment match indicates that a sequence can be aligned to the\nreference without evidence of an INDEL. Unlike the\n`SEQUENCE_MATCH` and `SEQUENCE_MISMATCH` operators,\nthe `ALIGNMENT_MATCH` operator does not indicate whether the\nreference and read sequences are an exact match. This operator is\nequivalent to SAM's `M`.",
-                        "The insert operator indicates that the read contains evidence of bases\nbeing inserted into the reference. This operator is equivalent to SAM's\n`I`.",
-                        "The delete operator indicates that the read contains evidence of bases\nbeing deleted from the reference. This operator is equivalent to SAM's\n`D`.",
-                        "The skip operator indicates that this read skips a long segment of the\nreference, but the bases have not been deleted. This operator is commonly\nused when working with RNA-seq data, where reads may skip long segments\nof the reference between exons. This operator is equivalent to SAM's\n`N`.",
-                        "The soft clip operator indicates that bases at the start/end of a read\nhave not been considered during alignment. This may occur if the majority\nof a read maps, except for low quality bases at the start/end of a read.\nThis operator is equivalent to SAM's `S`. Bases that are soft\nclipped will still be stored in the read.",
-                        "The hard clip operator indicates that bases at the start/end of a read\nhave been omitted from this alignment. This may occur if this linear\nalignment is part of a chimeric alignment, or if the read has been\ntrimmed (for example, during error correction or to trim poly-A tails for\nRNA-seq). This operator is equivalent to SAM's `H`.",
-                        "The pad operator indicates that there is padding in an alignment. This\noperator is equivalent to SAM's `P`.",
-                        "This operator indicates that this portion of the aligned sequence exactly\nmatches the reference. This operator is equivalent to SAM's `=`.",
-                        "This operator indicates that this portion of the aligned sequence is an\nalignment match to the reference, but a sequence mismatch. This can\nindicate a SNP or a read error. This operator is equivalent to SAM's\n`X`."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ReferenceSet": {
-            "description": "A reference set is a set of references which typically comprise a reference\nassembly for a species, such as `GRCh38` which is representative\nof the human genome. A reference set defines a common coordinate space for\ncomparing reference-aligned experimental data. A reference set contains 1 or\nmore references.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-            "id": "ReferenceSet",
-            "properties": {
-                "description": {
-                    "description": "Free text description of this reference set.",
-                    "type": "string"
-                },
-                "sourceAccessions": {
-                    "description": "All known corresponding accession IDs in INSDC (GenBank/ENA/DDBJ) ideally\nwith a version number, for example `NC_000001.11`.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "sourceUri": {
-                    "description": "The URI from which the references were obtained.",
-                    "type": "string"
-                },
-                "ncbiTaxonId": {
-                    "description": "ID from http://www.ncbi.nlm.nih.gov/taxonomy (for example, 9606 for human)\nindicating the species which this reference set is intended to model. Note\nthat contained references may specify a different `ncbiTaxonId`, as\nassemblies may contain reference sequences which do not belong to the\nmodeled species, for example EBV in a human reference genome.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "referenceIds": {
-                    "description": "The IDs of the reference objects that are part of this set.\n`Reference.md5checksum` must be unique within this set.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "md5checksum": {
-                    "description": "Order-independent MD5 checksum which identifies this reference set. The\nchecksum is computed by sorting all lower case hexidecimal string\n`reference.md5checksum` (for all reference in this set) in\nascending lexicographic order, concatenating, and taking the MD5 of that\nvalue. The resulting value is represented in lower case hexadecimal format.",
-                    "type": "string"
-                },
-                "assemblyId": {
-                    "description": "Public id of this reference set, such as `GRCh37`.",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "The server-generated reference set ID, unique across all reference sets.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Transcript": {
-            "description": "A transcript represents the assertion that a particular region of the\nreference genome may be transcribed as RNA.",
-            "id": "Transcript",
-            "properties": {
-                "exons": {
-                    "description": "The <a href=\"http://en.wikipedia.org/wiki/Exon\">exons</a> that compose\nthis transcript. This field should be unset for genomes where transcript\nsplicing does not occur, for example prokaryotes.\n\nIntrons are regions of the transcript that are not included in the\nspliced RNA product. Though not explicitly modeled here, intron ranges can\nbe deduced; all regions of this transcript that are not exons are introns.\n\nExonic sequences do not necessarily code for a translational product\n(amino acids). Only the regions of exons bounded by the\ncodingSequence correspond\nto coding DNA sequence.\n\nExons are ordered by start position and may not overlap.",
-                    "items": {
-                        "$ref": "Exon"
-                    },
-                    "type": "array"
-                },
-                "codingSequence": {
-                    "$ref": "CodingSequence",
-                    "description": "The range of the coding sequence for this transcript, if any. To determine\nthe exact ranges of coding sequence, intersect this range with those of the\nexons, if any. If there are any\nexons, the\ncodingSequence must start\nand end within them.\n\nNote that in some cases, the reference genome will not exactly match the\nobserved mRNA transcript e.g. due to variance in the source genome from\nreference. In these cases,\nexon.frame will not necessarily\nmatch the expected reference reading frame and coding exon reference bases\ncannot necessarily be concatenated to produce the original transcript mRNA."
-                },
-                "geneId": {
-                    "description": "The annotation ID of the gene from which this transcript is transcribed.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AnnotationSet": {
-            "description": "An annotation set is a logical grouping of annotations that share consistent\ntype information and provenance. Examples of annotation sets include 'all\ngenes from refseq', and 'all variant annotations from ClinVar'.",
-            "id": "AnnotationSet",
-            "properties": {
-                "name": {
-                    "description": "The display name for this annotation set.",
-                    "type": "string"
-                },
-                "referenceSetId": {
-                    "description": "The ID of the reference set that defines the coordinate space for this\nset's annotations.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The type of annotations contained within this set.",
-                    "enum": [
-                        "ANNOTATION_TYPE_UNSPECIFIED",
-                        "GENERIC",
-                        "VARIANT",
-                        "GENE",
-                        "TRANSCRIPT"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "A `GENERIC` annotation type should be used when no other annotation\ntype will suffice. This represents an untyped annotation of the reference\ngenome.",
-                        "A `VARIANT` annotation type.",
-                        "A `GENE` annotation type represents the existence of a gene at the\nassociated reference coordinates. The start coordinate is typically the\ngene's transcription start site and the end is typically the end of the\ngene's last exon.",
-                        "A `TRANSCRIPT` annotation type represents the assertion that a\nparticular region of the reference genome may be transcribed as RNA."
-                    ],
-                    "type": "string"
-                },
-                "info": {
-                    "additionalProperties": {
-                        "items": {
-                            "type": "any"
+                        "name": {
+                            "description": "The name of the operation's parent resource.",
+                            "location": "path",
+                            "pattern": "^operations$",
+                            "required": true,
+                            "type": "string"
                         },
-                        "type": "array"
+                        "pageSize": {
+                            "description": "The maximum number of results to return. If unspecified, defaults to\n256. The maximum value is 2048.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        }
                     },
-                    "description": "A map of additional read alignment information. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
-                    "type": "object"
-                },
-                "id": {
-                    "description": "The server-generated annotation set ID, unique across all annotation sets.",
-                    "type": "string"
-                },
-                "sourceUri": {
-                    "description": "The source URI describing the file from which this annotation set was\ngenerated, if any.",
-                    "type": "string"
-                },
-                "datasetId": {
-                    "description": "The dataset to which this annotation set belongs.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Experiment": {
-            "id": "Experiment",
-            "properties": {
-                "sequencingCenter": {
-                    "description": "The sequencing center used as part of this experiment.",
-                    "type": "string"
-                },
-                "platformUnit": {
-                    "description": "The platform unit used as part of this experiment, for example\nflowcell-barcode.lane for Illumina or slide for SOLiD. Corresponds to the\n@RG PU field in the SAM spec.",
-                    "type": "string"
-                },
-                "instrumentModel": {
-                    "description": "The instrument model used as part of this experiment. This maps to\nsequencing technology in the SAM spec.",
-                    "type": "string"
-                },
-                "libraryId": {
-                    "description": "A client-supplied library identifier; a library is a collection of DNA\nfragments which have been prepared for sequencing from a sample. This\nfield is important for quality control as error or bias can be introduced\nduring sample preparation.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListDatasetsResponse": {
-            "description": "The dataset list response.",
-            "id": "ListDatasetsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.",
-                    "type": "string"
-                },
-                "datasets": {
-                    "description": "The list of matching Datasets.",
-                    "items": {
-                        "$ref": "Dataset"
+                    "path": "v1/{+name}",
+                    "response": {
+                        "$ref": "ListOperationsResponse"
                     },
-                    "type": "array"
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics"
+                    ]
                 }
-            },
-            "type": "object"
+            }
         },
-        "TestIamPermissionsRequest": {
-            "description": "Request message for `TestIamPermissions` method.",
-            "id": "TestIamPermissionsRequest",
-            "properties": {
-                "permissions": {
-                    "description": "REQUIRED: The set of permissions to check for the 'resource'.\nPermissions with wildcards (such as '*' or 'storage.*') are not allowed.\nAllowed permissions are&#58;\n\n* `genomics.datasets.create`\n* `genomics.datasets.delete`\n* `genomics.datasets.get`\n* `genomics.datasets.list`\n* `genomics.datasets.update`\n* `genomics.datasets.getIamPolicy`\n* `genomics.datasets.setIamPolicy`",
-                    "items": {
-                        "type": "string"
+        "referencesets": {
+            "methods": {
+                "search": {
+                    "description": "Searches for reference sets which match the given criteria.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchReferenceSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L71)",
+                    "httpMethod": "POST",
+                    "id": "genomics.referencesets.search",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/referencesets/search",
+                    "request": {
+                        "$ref": "SearchReferenceSetsRequest"
                     },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ExportReadGroupSetRequest": {
-            "description": "The read group set export request.",
-            "id": "ExportReadGroupSetRequest",
-            "properties": {
-                "referenceNames": {
-                    "description": "The reference names to export. If this is not specified, all reference\nsequences, including unmapped reads, are exported.\nUse `*` to export only unmapped reads.",
-                    "items": {
-                        "type": "string"
+                    "response": {
+                        "$ref": "SearchReferenceSetsResponse"
                     },
-                    "type": "array"
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics",
+                        "https://www.googleapis.com/auth/genomics.readonly"
+                    ]
                 },
-                "exportUri": {
-                    "description": "Required. A Google Cloud Storage URI for the exported BAM file.\nThe currently authenticated user must have write access to the new file.\nAn error will be returned if the URI already contains data.",
-                    "type": "string"
-                },
-                "projectId": {
-                    "description": "Required. The Google Cloud project ID that owns this\nexport. The caller must have WRITE access to this project.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Exon": {
-            "id": "Exon",
-            "properties": {
-                "frame": {
-                    "description": "The frame of this exon. Contains a value of 0, 1, or 2, which indicates\nthe offset of the first coding base of the exon within the reading frame\nof the coding DNA sequence, if any. This field is dependent on the\nstrandedness of this annotation (see\nAnnotation.reverse_strand).\nFor forward stranded annotations, this offset is relative to the\nexon.start. For reverse\nstrand annotations, this offset is relative to the\nexon.end `- 1`.\n\nUnset if this exon does not intersect the coding sequence. Upon creation\nof a transcript, the frame must be populated for all or none of the\ncoding exons.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "end": {
-                    "description": "The end position of the exon on this annotation's reference sequence,\n0-based exclusive. Note that this is relative to the reference start, and\n*not* the containing annotation start.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "start": {
-                    "description": "The start position of the exon on this annotation's reference sequence,\n0-based inclusive. Note that this is relative to the reference start, and\n**not** the containing annotation start.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CallSet": {
-            "description": "A call set is a collection of variant calls, typically for one sample. It\nbelongs to a variant set.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
-            "id": "CallSet",
-            "properties": {
-                "created": {
-                    "description": "The date this call set was created in milliseconds from the epoch.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "sampleId": {
-                    "description": "The sample ID this call set corresponds to.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The call set name.",
-                    "type": "string"
-                },
-                "info": {
-                    "additionalProperties": {
-                        "items": {
-                            "type": "any"
-                        },
-                        "type": "array"
+                "get": {
+                    "description": "Gets a reference set.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.getReferenceSet](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L83).",
+                    "httpMethod": "GET",
+                    "id": "genomics.referencesets.get",
+                    "parameterOrder": [
+                        "referenceSetId"
+                    ],
+                    "parameters": {
+                        "referenceSetId": {
+                            "description": "The ID of the reference set.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
                     },
-                    "description": "A map of additional call set information. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
-                    "type": "object"
-                },
-                "variantSetIds": {
-                    "description": "The IDs of the variant sets this call set belongs to. This field must\nhave exactly length one, as a call set belongs to a single variant set.\nThis field is repeated for compatibility with the\n[GA4GH 0.5.1\nAPI](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variants.avdl#L76).",
-                    "items": {
-                        "type": "string"
+                    "path": "v1/referencesets/{referenceSetId}",
+                    "response": {
+                        "$ref": "ReferenceSet"
                     },
-                    "type": "array"
-                },
-                "id": {
-                    "description": "The server-generated call set ID, unique across all call sets.",
-                    "type": "string"
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/genomics",
+                        "https://www.googleapis.com/auth/genomics.readonly"
+                    ]
                 }
-            },
-            "type": "object"
-        },
-        "SearchAnnotationSetsResponse": {
-            "id": "SearchAnnotationSetsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.",
-                    "type": "string"
-                },
-                "annotationSets": {
-                    "description": "The matching annotation sets.",
-                    "items": {
-                        "$ref": "AnnotationSet"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
+            }
+        }
+    },
+    "revision": "20171018",
+    "rootUrl": "https://genomics.googleapis.com/",
+    "schemas": {
         "ImportVariantsRequest": {
             "description": "The variant data import request.",
             "id": "ImportVariantsRequest",
@@ -3105,46 +1614,6 @@
         "VariantAnnotation": {
             "id": "VariantAnnotation",
             "properties": {
-                "conditions": {
-                    "description": "The set of conditions associated with this variant.\nA condition describes the way a variant influences human health.",
-                    "items": {
-                        "$ref": "ClinicalCondition"
-                    },
-                    "type": "array"
-                },
-                "effect": {
-                    "description": "Effect of the variant on the coding sequence.",
-                    "enum": [
-                        "EFFECT_UNSPECIFIED",
-                        "EFFECT_OTHER",
-                        "FRAMESHIFT",
-                        "FRAME_PRESERVING_INDEL",
-                        "SYNONYMOUS_SNP",
-                        "NONSYNONYMOUS_SNP",
-                        "STOP_GAIN",
-                        "STOP_LOSS",
-                        "SPLICE_SITE_DISRUPTION"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "`EFFECT_OTHER` should be used when no other Effect\nwill suffice.",
-                        "`FRAMESHIFT` indicates a mutation in which the insertion or\ndeletion of nucleotides resulted in a frameshift change.",
-                        "`FRAME_PRESERVING_INDEL` indicates a mutation in which a\nmultiple of three nucleotides has been inserted or deleted, resulting\nin no change to the reading frame of the coding sequence.",
-                        "`SYNONYMOUS_SNP` indicates a single nucleotide polymorphism\nmutation that results in no amino acid change.",
-                        "`NONSYNONYMOUS_SNP` indicates a single nucleotide\npolymorphism mutation that results in an amino acid change.",
-                        "`STOP_GAIN` indicates a mutation that leads to the creation\nof a stop codon at the variant site. Frameshift mutations creating\ndownstream stop codons do not count as `STOP_GAIN`.",
-                        "`STOP_LOSS` indicates a mutation that eliminates a\nstop codon at the variant site.",
-                        "`SPLICE_SITE_DISRUPTION` indicates that this variant is\nfound in a splice site for the associated transcript, and alters the\nnormal splicing pattern."
-                    ],
-                    "type": "string"
-                },
-                "transcriptIds": {
-                    "description": "Google annotation IDs of the transcripts affected by this variant. These\nshould be provided when the variant is created.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
                 "type": {
                     "description": "Type has been adapted from ClinVar's list of variant types.",
                     "enum": [
@@ -3212,6 +1681,46 @@
                         "`MULTIPLE_REPORTED` should be used when multiple clinical\nsignficances are reported for a variant. The original clinical\nsignificance values may be provided in the `info` field."
                     ],
                     "type": "string"
+                },
+                "conditions": {
+                    "description": "The set of conditions associated with this variant.\nA condition describes the way a variant influences human health.",
+                    "items": {
+                        "$ref": "ClinicalCondition"
+                    },
+                    "type": "array"
+                },
+                "effect": {
+                    "description": "Effect of the variant on the coding sequence.",
+                    "enum": [
+                        "EFFECT_UNSPECIFIED",
+                        "EFFECT_OTHER",
+                        "FRAMESHIFT",
+                        "FRAME_PRESERVING_INDEL",
+                        "SYNONYMOUS_SNP",
+                        "NONSYNONYMOUS_SNP",
+                        "STOP_GAIN",
+                        "STOP_LOSS",
+                        "SPLICE_SITE_DISRUPTION"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "`EFFECT_OTHER` should be used when no other Effect\nwill suffice.",
+                        "`FRAMESHIFT` indicates a mutation in which the insertion or\ndeletion of nucleotides resulted in a frameshift change.",
+                        "`FRAME_PRESERVING_INDEL` indicates a mutation in which a\nmultiple of three nucleotides has been inserted or deleted, resulting\nin no change to the reading frame of the coding sequence.",
+                        "`SYNONYMOUS_SNP` indicates a single nucleotide polymorphism\nmutation that results in no amino acid change.",
+                        "`NONSYNONYMOUS_SNP` indicates a single nucleotide\npolymorphism mutation that results in an amino acid change.",
+                        "`STOP_GAIN` indicates a mutation that leads to the creation\nof a stop codon at the variant site. Frameshift mutations creating\ndownstream stop codons do not count as `STOP_GAIN`.",
+                        "`STOP_LOSS` indicates a mutation that eliminates a\nstop codon at the variant site.",
+                        "`SPLICE_SITE_DISRUPTION` indicates that this variant is\nfound in a splice site for the associated transcript, and alters the\nnormal splicing pattern."
+                    ],
+                    "type": "string"
+                },
+                "transcriptIds": {
+                    "description": "Google annotation IDs of the transcripts affected by this variant. These\nshould be provided when the variant is created.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -3219,13 +1728,6 @@
         "ListCoverageBucketsResponse": {
             "id": "ListCoverageBucketsResponse",
             "properties": {
-                "coverageBuckets": {
-                    "description": "The coverage buckets. The list of buckets is sparse; a bucket with 0\noverlapping reads is not returned. A bucket never crosses more than one\nreference sequence. Each bucket has width `bucketWidth`, unless\nits end is the end of the reference sequence.",
-                    "items": {
-                        "$ref": "CoverageBucket"
-                    },
-                    "type": "array"
-                },
                 "nextPageToken": {
                     "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.",
                     "type": "string"
@@ -3234,6 +1736,13 @@
                     "description": "The length of each coverage bucket in base pairs. Note that buckets at the\nend of a reference sequence may be shorter. This value is omitted if the\nbucket width is infinity (the default behaviour, with no range or\n`targetBucketWidth`).",
                     "format": "int64",
                     "type": "string"
+                },
+                "coverageBuckets": {
+                    "description": "The coverage buckets. The list of buckets is sparse; a bucket with 0\noverlapping reads is not returned. A bucket never crosses more than one\nreference sequence. Each bucket has width `bucketWidth`, unless\nits end is the end of the reference sequence.",
+                    "items": {
+                        "$ref": "CoverageBucket"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -3279,6 +1788,10 @@
         "SearchAnnotationsRequest": {
             "id": "SearchAnnotationsRequest",
             "properties": {
+                "referenceId": {
+                    "description": "The ID of the reference to query.",
+                    "type": "string"
+                },
                 "end": {
                     "description": "The end position of the range on the reference, 0-based exclusive. If\nreferenceId or\nreferenceName\nmust be specified, Defaults to the length of the reference.",
                     "format": "int64",
@@ -3308,10 +1821,6 @@
                 "referenceName": {
                     "description": "The name of the reference to query, within the reference set associated\nwith this query.",
                     "type": "string"
-                },
-                "referenceId": {
-                    "description": "The ID of the reference to query.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -3320,11 +1829,6 @@
             "description": "An event that occurred during an Operation.",
             "id": "OperationEvent",
             "properties": {
-                "endTime": {
-                    "description": "Optional time of when event finished. An event can have a start time and no\nfinish time. If an event has a finish time, there must be a start time.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
                 "startTime": {
                     "description": "Optional time of when event started.",
                     "format": "google-datetime",
@@ -3333,6 +1837,11 @@
                 "description": {
                     "description": "Required description of event.",
                     "type": "string"
+                },
+                "endTime": {
+                    "description": "Optional time of when event finished. An event can have a start time and no\nfinish time. If an event has a finish time, there must be a start time.",
+                    "format": "google-datetime",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -3353,6 +1862,20 @@
             },
             "type": "object"
         },
+        "TestIamPermissionsResponse": {
+            "description": "Response message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsResponse",
+            "properties": {
+                "permissions": {
+                    "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "SearchReferencesResponse": {
             "id": "SearchReferencesResponse",
             "properties": {
@@ -3376,23 +1899,13 @@
             "properties": {},
             "type": "object"
         },
-        "TestIamPermissionsResponse": {
-            "description": "Response message for `TestIamPermissions` method.",
-            "id": "TestIamPermissionsResponse",
-            "properties": {
-                "permissions": {
-                    "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "SearchAnnotationSetsRequest": {
             "id": "SearchAnnotationSetsRequest",
             "properties": {
+                "pageToken": {
+                    "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
+                    "type": "string"
+                },
                 "pageSize": {
                     "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 128. The maximum value is 1024.",
                     "format": "int32",
@@ -3433,10 +1946,6 @@
                 "referenceSetId": {
                     "description": "If specified, only annotation sets associated with the given reference set\nare returned.",
                     "type": "string"
-                },
-                "pageToken": {
-                    "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -3485,15 +1994,6 @@
         "SearchReferencesRequest": {
             "id": "SearchReferencesRequest",
             "properties": {
-                "pageSize": {
-                    "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 1024. The maximum value is 4096.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "referenceSetId": {
-                    "description": "If present, return only references which belong to this reference set.",
-                    "type": "string"
-                },
                 "md5checksums": {
                     "description": "If present, return references for which the\nmd5checksum matches exactly.",
                     "items": {
@@ -3511,6 +2011,15 @@
                         "type": "string"
                     },
                     "type": "array"
+                },
+                "pageSize": {
+                    "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 1024. The maximum value is 4096.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "referenceSetId": {
+                    "description": "If present, return only references which belong to this reference set.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -3519,6 +2028,10 @@
             "description": "A Dataset is a collection of genomic data.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
             "id": "Dataset",
             "properties": {
+                "id": {
+                    "description": "The server-generated dataset ID, unique across all datasets.",
+                    "type": "string"
+                },
                 "createTime": {
                     "description": "The time this dataset was created, in seconds from the epoch.",
                     "format": "google-datetime",
@@ -3531,10 +2044,6 @@
                 "projectId": {
                     "description": "The Google Cloud project ID that this dataset belongs to.",
                     "type": "string"
-                },
-                "id": {
-                    "description": "The server-generated dataset ID, unique across all datasets.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -3557,28 +2066,6 @@
             "description": "A read group is all the data that's processed the same way by the sequencer.",
             "id": "ReadGroup",
             "properties": {
-                "experiment": {
-                    "$ref": "Experiment",
-                    "description": "The experiment used to generate this read group."
-                },
-                "name": {
-                    "description": "The read group name. This corresponds to the @RG ID field in the SAM spec.",
-                    "type": "string"
-                },
-                "referenceSetId": {
-                    "description": "The reference set the reads in this read group are aligned to.",
-                    "type": "string"
-                },
-                "info": {
-                    "additionalProperties": {
-                        "items": {
-                            "type": "any"
-                        },
-                        "type": "array"
-                    },
-                    "description": "A map of additional read group information. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
-                    "type": "object"
-                },
                 "id": {
                     "description": "The server-generated read group ID, unique for all read groups.\nNote: This is different than the @RG ID field in the SAM spec. For that\nvalue, see name.",
                     "type": "string"
@@ -3606,6 +2093,28 @@
                 "datasetId": {
                     "description": "The dataset to which this read group belongs.",
                     "type": "string"
+                },
+                "experiment": {
+                    "$ref": "Experiment",
+                    "description": "The experiment used to generate this read group."
+                },
+                "name": {
+                    "description": "The read group name. This corresponds to the @RG ID field in the SAM spec.",
+                    "type": "string"
+                },
+                "referenceSetId": {
+                    "description": "The reference set the reads in this read group are aligned to.",
+                    "type": "string"
+                },
+                "info": {
+                    "additionalProperties": {
+                        "items": {
+                            "type": "any"
+                        },
+                        "type": "array"
+                    },
+                    "description": "A map of additional read group information. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
+                    "type": "object"
                 }
             },
             "type": "object"
@@ -3614,6 +2123,10 @@
             "description": "A read group set is a logical collection of read groups, which are\ncollections of reads produced by a sequencer. A read group set typically\nmodels reads corresponding to one sample, sequenced one way, and aligned one\nway.\n\n* A read group set belongs to one dataset.\n* A read group belongs to one read group set.\n* A read belongs to one read group.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
             "id": "ReadGroupSet",
             "properties": {
+                "datasetId": {
+                    "description": "The dataset to which this read group set belongs.",
+                    "type": "string"
+                },
                 "filename": {
                     "description": "The filename of the original source file for this read group set, if any.",
                     "type": "string"
@@ -3646,10 +2159,6 @@
                 "id": {
                     "description": "The server-generated read group set ID, unique for all read group sets.",
                     "type": "string"
-                },
-                "datasetId": {
-                    "description": "The dataset to which this read group set belongs.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -3696,6 +2205,10 @@
             "description": "An abstraction for referring to a genomic position, in relation to some\nalready known reference. For now, represents a genomic position as a\nreference name, a base number on that reference (0-based), and a\ndetermination of forward or reverse strand.",
             "id": "Position",
             "properties": {
+                "reverseStrand": {
+                    "description": "Whether this position is on the reverse strand, as opposed to the forward\nstrand.",
+                    "type": "boolean"
+                },
                 "position": {
                     "description": "The 0-based offset from the start of the forward strand for that reference.",
                     "format": "int64",
@@ -3704,10 +2217,6 @@
                 "referenceName": {
                     "description": "The name of the reference in whatever reference set is being used.",
                     "type": "string"
-                },
-                "reverseStrand": {
-                    "description": "Whether this position is on the reverse strand, as opposed to the forward\nstrand.",
-                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -3733,6 +2242,14 @@
             "description": "The call set search request.",
             "id": "SearchCallSetsRequest",
             "properties": {
+                "pageToken": {
+                    "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Only return call sets for which a substring of the name matches this\nstring.",
+                    "type": "string"
+                },
                 "pageSize": {
                     "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 1024.",
                     "format": "int32",
@@ -3744,14 +2261,1497 @@
                         "type": "string"
                     },
                     "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ImportReadGroupSetsRequest": {
+            "description": "The read group set import request.",
+            "id": "ImportReadGroupSetsRequest",
+            "properties": {
+                "referenceSetId": {
+                    "description": "The reference set to which the imported read group sets are aligned to, if\nany. The reference names of this reference set must be a superset of those\nfound in the imported file headers. If no reference set id is provided, a\nbest effort is made to associate with a matching reference set.",
+                    "type": "string"
+                },
+                "partitionStrategy": {
+                    "description": "The partition strategy describes how read groups are partitioned into read\ngroup sets.",
+                    "enum": [
+                        "PARTITION_STRATEGY_UNSPECIFIED",
+                        "PER_FILE_PER_SAMPLE",
+                        "MERGE_ALL"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "In most cases, this strategy yields one read group set per file. This is\nthe default behavior.\n\nAllocate one read group set per file per sample. For BAM files, read\ngroups are considered to share a sample if they have identical sample\nnames. Furthermore, all reads for each file which do not belong to a read\ngroup, if any, will be grouped into a single read group set per-file.",
+                        "Includes all read groups in all imported files into a single read group\nset. Requires that the headers for all imported files are equivalent. All\nreads which do not belong to a read group, if any, will be grouped into a\nseparate read group set."
+                    ],
+                    "type": "string"
+                },
+                "datasetId": {
+                    "description": "Required. The ID of the dataset these read group sets will belong to. The\ncaller must have WRITE permissions to this dataset.",
+                    "type": "string"
+                },
+                "sourceUris": {
+                    "description": "A list of URIs pointing at [BAM\nfiles](https://samtools.github.io/hts-specs/SAMv1.pdf)\nin Google Cloud Storage.\nThose URIs can include wildcards (*), but do not add or remove\nmatching files before import has completed.\n\nNote that Google Cloud Storage object listing is only eventually\nconsistent: files added may be not be immediately visible to\neveryone. Thus, if using a wildcard it is preferable not to start\nthe import immediately after the files are created.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Policy": {
+            "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
+            "id": "Policy",
+            "properties": {
+                "etag": {
+                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "version": {
+                    "description": "Version of the `Policy`. The default version is 0.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "bindings": {
+                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
+                    "items": {
+                        "$ref": "Binding"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SearchReadsRequest": {
+            "description": "The read search request.",
+            "id": "SearchReadsRequest",
+            "properties": {
+                "readGroupIds": {
+                    "description": "The IDs of the read groups within which to search for reads. All specified\nread groups must belong to the same read group sets. Must specify one of\n`readGroupSetIds` or `readGroupIds`.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "end": {
+                    "description": "The end position of the range on the reference, 0-based exclusive. If\nspecified, `referenceName` must also be specified.",
+                    "format": "int64",
+                    "type": "string"
                 },
                 "pageToken": {
                     "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
                     "type": "string"
                 },
-                "name": {
-                    "description": "Only return call sets for which a substring of the name matches this\nstring.",
+                "pageSize": {
+                    "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 256. The maximum value is 2048.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "start": {
+                    "description": "The start position of the range on the reference, 0-based inclusive. If\nspecified, `referenceName` must also be specified.",
+                    "format": "int64",
                     "type": "string"
+                },
+                "referenceName": {
+                    "description": "The reference sequence name, for example `chr1`, `1`, or `chrX`. If set to\n`*`, only unmapped reads are returned. If unspecified, all reads (mapped\nand unmapped) are returned.",
+                    "type": "string"
+                },
+                "readGroupSetIds": {
+                    "description": "The IDs of the read groups sets within which to search for reads. All\nspecified read group sets must be aligned against a common set of reference\nsequences; this defines the genomic coordinates for the query. Must specify\none of `readGroupSetIds` or `readGroupIds`.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Annotation": {
+            "description": "An annotation describes a region of reference genome. The value of an\nannotation may be one of several canonical types, supplemented by arbitrary\ninfo tags. An annotation is not inherently associated with a specific\nsample or individual (though a client could choose to use annotations in\nthis way). Example canonical annotation types are `GENE` and\n`VARIANT`.",
+            "id": "Annotation",
+            "properties": {
+                "transcript": {
+                    "$ref": "Transcript",
+                    "description": "A transcript value represents the assertion that a particular region of\nthe reference genome may be transcribed as RNA. An alternative splicing\npattern would be represented as a separate transcript object. This field\nis only set for annotations of type `TRANSCRIPT`."
+                },
+                "start": {
+                    "description": "The start position of the range on the reference, 0-based inclusive.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "annotationSetId": {
+                    "description": "The annotation set to which this annotation belongs.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The display name of this annotation.",
+                    "type": "string"
+                },
+                "variant": {
+                    "$ref": "VariantAnnotation",
+                    "description": "A variant annotation, which describes the effect of a variant on the\ngenome, the coding sequence, and/or higher level consequences at the\norganism level e.g. pathogenicity. This field is only set for annotations\nof type `VARIANT`."
+                },
+                "referenceId": {
+                    "description": "The ID of the Google Genomics reference associated with this range.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "The server-generated annotation ID, unique across all annotations.",
+                    "type": "string"
+                },
+                "reverseStrand": {
+                    "description": "Whether this range refers to the reverse strand, as opposed to the forward\nstrand. Note that regardless of this field, the start/end position of the\nrange always refer to the forward strand.",
+                    "type": "boolean"
+                },
+                "referenceName": {
+                    "description": "The display name corresponding to the reference specified by\n`referenceId`, for example `chr1`, `1`, or `chrX`.",
+                    "type": "string"
+                },
+                "info": {
+                    "additionalProperties": {
+                        "items": {
+                            "type": "any"
+                        },
+                        "type": "array"
+                    },
+                    "description": "A map of additional read alignment information. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
+                    "type": "object"
+                },
+                "type": {
+                    "description": "The data type for this annotation. Must match the containing annotation\nset's type.",
+                    "enum": [
+                        "ANNOTATION_TYPE_UNSPECIFIED",
+                        "GENERIC",
+                        "VARIANT",
+                        "GENE",
+                        "TRANSCRIPT"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "A `GENERIC` annotation type should be used when no other annotation\ntype will suffice. This represents an untyped annotation of the reference\ngenome.",
+                        "A `VARIANT` annotation type.",
+                        "A `GENE` annotation type represents the existence of a gene at the\nassociated reference coordinates. The start coordinate is typically the\ngene's transcription start site and the end is typically the end of the\ngene's last exon.",
+                        "A `TRANSCRIPT` annotation type represents the assertion that a\nparticular region of the reference genome may be transcribed as RNA."
+                    ],
+                    "type": "string"
+                },
+                "end": {
+                    "description": "The end position of the range on the reference, 0-based exclusive.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CancelOperationRequest": {
+            "description": "The request message for Operations.CancelOperation.",
+            "id": "CancelOperationRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+            "id": "Operation",
+            "properties": {
+                "done": {
+                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+                    "type": "boolean"
+                },
+                "response": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "If importing ReadGroupSets, an ImportReadGroupSetsResponse is returned. If importing Variants, an ImportVariantsResponse is returned. For pipelines and exports, an Empty response is returned.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "The server-assigned name, which is only unique within the same service that originally returns it. For example&#58; `operations/CJHU7Oi_ChDrveSpBRjfuL-qzoWAgEw`",
+                    "type": "string"
+                },
+                "error": {
+                    "$ref": "Status",
+                    "description": "The error result of the operation in case of failure or cancellation."
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "An OperationMetadata object. This will always be returned with the Operation.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "RuntimeMetadata": {
+            "description": "Runtime metadata that will be populated in the\nruntimeMetadata\nfield of the Operation associated with a RunPipeline execution.",
+            "id": "RuntimeMetadata",
+            "properties": {
+                "computeEngine": {
+                    "$ref": "ComputeEngine",
+                    "description": "Execution information specific to Google Compute Engine."
+                }
+            },
+            "type": "object"
+        },
+        "ImportReadGroupSetsResponse": {
+            "description": "The read group set import response.",
+            "id": "ImportReadGroupSetsResponse",
+            "properties": {
+                "readGroupSetIds": {
+                    "description": "IDs of the read group sets that were created.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "VariantCall": {
+            "description": "A call represents the determination of genotype with respect to a particular\nvariant. It may include associated information such as quality and phasing.\nFor example, a call might assign a probability of 0.32 to the occurrence of\na SNP named rs1234 in a call set with the name NA12345.",
+            "id": "VariantCall",
+            "properties": {
+                "phaseset": {
+                    "description": "If this field is present, this variant call's genotype ordering implies\nthe phase of the bases and is consistent with any other variant calls in\nthe same reference sequence which have the same phaseset value.\nWhen importing data from VCF, if the genotype data was phased but no\nphase set was specified this field will be set to `*`.",
+                    "type": "string"
+                },
+                "info": {
+                    "additionalProperties": {
+                        "items": {
+                            "type": "any"
+                        },
+                        "type": "array"
+                    },
+                    "description": "A map of additional variant call information. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
+                    "type": "object"
+                },
+                "callSetName": {
+                    "description": "The name of the call set this variant call belongs to.",
+                    "type": "string"
+                },
+                "genotypeLikelihood": {
+                    "description": "The genotype likelihoods for this variant call. Each array entry\nrepresents how likely a specific genotype is for this call. The value\nordering is defined by the GL tag in the VCF spec.\nIf Phred-scaled genotype likelihood scores (PL) are available and\nlog10(P) genotype likelihood scores (GL) are not, PL scores are converted\nto GL scores.  If both are available, PL scores are stored in `info`.",
+                    "items": {
+                        "format": "double",
+                        "type": "number"
+                    },
+                    "type": "array"
+                },
+                "callSetId": {
+                    "description": "The ID of the call set this variant call belongs to.",
+                    "type": "string"
+                },
+                "genotype": {
+                    "description": "The genotype of this variant call. Each value represents either the value\nof the `referenceBases` field or a 1-based index into\n`alternateBases`. If a variant had a `referenceBases`\nvalue of `T` and an `alternateBases`\nvalue of `[\"A\", \"C\"]`, and the `genotype` was\n`[2, 1]`, that would mean the call\nrepresented the heterozygous value `CA` for this variant.\nIf the `genotype` was instead `[0, 1]`, the\nrepresented value would be `TA`. Ordering of the\ngenotype values is important if the `phaseset` is present.\nIf a genotype is not called (that is, a `.` is present in the\nGT string) -1 is returned.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SearchVariantsResponse": {
+            "description": "The variant search response.",
+            "id": "SearchVariantsResponse",
+            "properties": {
+                "variants": {
+                    "description": "The list of matching Variants.",
+                    "items": {
+                        "$ref": "Variant"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListBasesResponse": {
+            "id": "ListBasesResponse",
+            "properties": {
+                "offset": {
+                    "description": "The offset position (0-based) of the given `sequence` from the\nstart of this `Reference`. This value will differ for each page\nin a paginated request.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "nextPageToken": {
+                    "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.",
+                    "type": "string"
+                },
+                "sequence": {
+                    "description": "A substring of the bases that make up this reference.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+            "id": "Status",
+            "properties": {
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Binding": {
+            "description": "Associates `members` with a `role`.",
+            "id": "Binding",
+            "properties": {
+                "members": {
+                    "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "role": {
+                    "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "UndeleteDatasetRequest": {
+            "id": "UndeleteDatasetRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "Range": {
+            "description": "A 0-based half-open genomic coordinate range for search requests.",
+            "id": "Range",
+            "properties": {
+                "end": {
+                    "description": "The end position of the range on the reference, 0-based exclusive.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "referenceName": {
+                    "description": "The reference sequence name, for example `chr1`,\n`1`, or `chrX`.",
+                    "type": "string"
+                },
+                "start": {
+                    "description": "The start position of the range on the reference, 0-based inclusive.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "VariantSet": {
+            "description": "A variant set is a collection of call sets and variants. It contains summary\nstatistics of those contents. A variant set belongs to a dataset.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+            "id": "VariantSet",
+            "properties": {
+                "description": {
+                    "description": "A textual description of this variant set.",
+                    "type": "string"
+                },
+                "datasetId": {
+                    "description": "The dataset to which this variant set belongs.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "User-specified, mutable name.",
+                    "type": "string"
+                },
+                "referenceSetId": {
+                    "description": "The reference set to which the variant set is mapped. The reference set\ndescribes the alignment provenance of the variant set, while the\n`referenceBounds` describe the shape of the actual variant data. The\nreference set's reference names are a superset of those found in the\n`referenceBounds`.\n\nFor example, given a variant set that is mapped to the GRCh38 reference set\nand contains a single variant on reference 'X', `referenceBounds` would\ncontain only an entry for 'X', while the associated reference set\nenumerates all possible references: '1', '2', 'X', 'Y', 'MT', etc.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "description": "The metadata associated with this variant set.",
+                    "items": {
+                        "$ref": "VariantSetMetadata"
+                    },
+                    "type": "array"
+                },
+                "referenceBounds": {
+                    "description": "A list of all references used by the variants in a variant set\nwith associated coordinate upper bounds for each one.",
+                    "items": {
+                        "$ref": "ReferenceBound"
+                    },
+                    "type": "array"
+                },
+                "id": {
+                    "description": "The server-generated variant set ID, unique across all variant sets.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "BatchCreateAnnotationsResponse": {
+            "id": "BatchCreateAnnotationsResponse",
+            "properties": {
+                "entries": {
+                    "description": "The resulting per-annotation entries, ordered consistently with the\noriginal request.",
+                    "items": {
+                        "$ref": "Entry"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ReferenceBound": {
+            "description": "ReferenceBound records an upper bound for the starting coordinate of\nvariants in a particular reference.",
+            "id": "ReferenceBound",
+            "properties": {
+                "upperBound": {
+                    "description": "An upper bound (inclusive) on the starting coordinate of any\nvariant in the reference sequence.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "referenceName": {
+                    "description": "The name of the reference associated with this reference bound.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListOperationsResponse": {
+            "description": "The response message for Operations.ListOperations.",
+            "id": "ListOperationsResponse",
+            "properties": {
+                "operations": {
+                    "description": "A list of operations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Operation"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Variant": {
+            "description": "A variant represents a change in DNA sequence relative to a reference\nsequence. For example, a variant could represent a SNP or an insertion.\nVariants belong to a variant set.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nEach of the calls on a variant represent a determination of genotype with\nrespect to that variant. For example, a call might assign probability of 0.32\nto the occurrence of a SNP named rs1234 in a sample named NA12345. A call\nbelongs to a call set, which contains related calls typically from one\nsample.",
+            "id": "Variant",
+            "properties": {
+                "created": {
+                    "description": "The date this variant was created, in milliseconds from the epoch.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "start": {
+                    "description": "The position at which this variant occurs (0-based).\nThis corresponds to the first base of the string of reference bases.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "quality": {
+                    "description": "A measure of how likely this variant is to be real.\nA higher value is better.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "id": {
+                    "description": "The server-generated variant ID, unique across all variants.",
+                    "type": "string"
+                },
+                "variantSetId": {
+                    "description": "The ID of the variant set this variant belongs to.",
+                    "type": "string"
+                },
+                "referenceName": {
+                    "description": "The reference on which this variant occurs.\n(such as `chr20` or `X`)",
+                    "type": "string"
+                },
+                "info": {
+                    "additionalProperties": {
+                        "items": {
+                            "type": "any"
+                        },
+                        "type": "array"
+                    },
+                    "description": "A map of additional variant information. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
+                    "type": "object"
+                },
+                "referenceBases": {
+                    "description": "The reference bases for this variant. They start at the given\nposition.",
+                    "type": "string"
+                },
+                "alternateBases": {
+                    "description": "The bases that appear instead of the reference bases.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "names": {
+                    "description": "Names for the variant, for example a RefSNP ID.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "end": {
+                    "description": "The end position (0-based) of this variant. This corresponds to the first\nbase after the last base in the reference allele. So, the length of\nthe reference allele is (end - start). This is useful for variants\nthat don't explicitly give alternate bases, for example large deletions.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "filter": {
+                    "description": "A list of filters (normally quality filters) this variant has failed.\n`PASS` indicates this variant has passed all filters.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "calls": {
+                    "description": "The variant calls for this particular variant. Each one represents the\ndetermination of genotype with respect to this variant.",
+                    "items": {
+                        "$ref": "VariantCall"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SearchCallSetsResponse": {
+            "description": "The call set search response.",
+            "id": "SearchCallSetsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.",
+                    "type": "string"
+                },
+                "callSets": {
+                    "description": "The list of matching call sets.",
+                    "items": {
+                        "$ref": "CallSet"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SearchVariantsRequest": {
+            "description": "The variant search request.",
+            "id": "SearchVariantsRequest",
+            "properties": {
+                "referenceName": {
+                    "description": "Required. Only return variants in this reference sequence.",
+                    "type": "string"
+                },
+                "variantSetIds": {
+                    "description": "At most one variant set ID must be provided. Only variants from this\nvariant set will be returned. If omitted, a call set id must be included in\nthe request.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "end": {
+                    "description": "The end of the window, 0-based exclusive. If unspecified or 0, defaults to\nthe length of the reference.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "maxCalls": {
+                    "description": "The maximum number of calls to return in a single page. Note that this\nlimit may be exceeded in the event that a matching variant contains more\ncalls than the requested maximum. If unspecified, defaults to 5000. The\nmaximum value is 10000.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "pageToken": {
+                    "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
+                    "type": "string"
+                },
+                "pageSize": {
+                    "description": "The maximum number of variants to return in a single page. If unspecified,\ndefaults to 5000. The maximum value is 10000.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "callSetIds": {
+                    "description": "Only return variant calls which belong to call sets with these ids.\nLeaving this blank returns all variant calls. If a variant has no\ncalls belonging to any of these call sets, it won't be returned at all.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "variantName": {
+                    "description": "Only return variants which have exactly this name.",
+                    "type": "string"
+                },
+                "start": {
+                    "description": "The beginning of the window (0-based, inclusive) for which\noverlapping variants should be returned. If unspecified, defaults to 0.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "OperationMetadata": {
+            "description": "Metadata describing an Operation.",
+            "id": "OperationMetadata",
+            "properties": {
+                "projectId": {
+                    "description": "The Google Cloud Project in which the job is scoped.",
+                    "type": "string"
+                },
+                "clientId": {
+                    "description": "This field is deprecated. Use `labels` instead. Optionally provided by the\ncaller when submitting the request that creates the operation.",
+                    "type": "string"
+                },
+                "events": {
+                    "description": "Optional event messages that were generated during the job's execution.\nThis also contains any warnings that were generated during import\nor export.",
+                    "items": {
+                        "$ref": "OperationEvent"
+                    },
+                    "type": "array"
+                },
+                "endTime": {
+                    "description": "The time at which the job stopped running.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "The time at which the job began to run.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "request": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The original request that started the operation. Note that this will be in\ncurrent version of the API. If the operation was started with v1beta2 API\nand a GetOperation is performed on v1 API, a v1 request will be returned.",
+                    "type": "object"
+                },
+                "runtimeMetadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Runtime metadata on this Operation.",
+                    "type": "object"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optionally provided by the caller when submitting the request that creates\nthe operation.",
+                    "type": "object"
+                },
+                "createTime": {
+                    "description": "The time at which the job was submitted to the Genomics service.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SearchReadGroupSetsRequest": {
+            "description": "The read group set search request.",
+            "id": "SearchReadGroupSetsRequest",
+            "properties": {
+                "pageToken": {
+                    "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Only return read group sets for which a substring of the name matches this\nstring.",
+                    "type": "string"
+                },
+                "pageSize": {
+                    "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 256. The maximum value is 1024.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "datasetIds": {
+                    "description": "Restricts this query to read group sets within the given datasets. At least\none ID must be provided.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SearchAnnotationsResponse": {
+            "id": "SearchAnnotationsResponse",
+            "properties": {
+                "annotations": {
+                    "description": "The matching annotations.",
+                    "items": {
+                        "$ref": "Annotation"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SearchReadsResponse": {
+            "description": "The read search response.",
+            "id": "SearchReadsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.",
+                    "type": "string"
+                },
+                "alignments": {
+                    "description": "The list of matching alignments sorted by mapped genomic coordinate,\nif any, ascending in position within the same reference. Unmapped reads,\nwhich have no position, are returned contiguously and are sorted in\nascending lexicographic order by fragment name.",
+                    "items": {
+                        "$ref": "Read"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ClinicalCondition": {
+            "id": "ClinicalCondition",
+            "properties": {
+                "names": {
+                    "description": "A set of names for the condition.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "omimId": {
+                    "description": "The OMIM id for this condition.\nSearch for these IDs at http://omim.org/",
+                    "type": "string"
+                },
+                "externalIds": {
+                    "description": "The set of external IDs for this condition.",
+                    "items": {
+                        "$ref": "ExternalId"
+                    },
+                    "type": "array"
+                },
+                "conceptId": {
+                    "description": "The MedGen concept id associated with this gene.\nSearch for these IDs at http://www.ncbi.nlm.nih.gov/medgen/",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Program": {
+            "id": "Program",
+            "properties": {
+                "name": {
+                    "description": "The display name of the program. This is typically the colloquial name of\nthe tool used, for example 'bwa' or 'picard'.",
+                    "type": "string"
+                },
+                "prevProgramId": {
+                    "description": "The ID of the program run before this one.",
+                    "type": "string"
+                },
+                "commandLine": {
+                    "description": "The command line used to run this program.",
+                    "type": "string"
+                },
+                "version": {
+                    "description": "The version of the program run.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "The user specified locally unique ID of the program. Used along with\n`prevProgramId` to define an ordering between programs.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CoverageBucket": {
+            "description": "A bucket over which read coverage has been precomputed. A bucket corresponds\nto a specific range of the reference sequence.",
+            "id": "CoverageBucket",
+            "properties": {
+                "meanCoverage": {
+                    "description": "The average number of reads which are aligned to each individual\nreference base in this bucket.",
+                    "format": "float",
+                    "type": "number"
+                },
+                "range": {
+                    "$ref": "Range",
+                    "description": "The genomic coordinate range spanned by this bucket."
+                }
+            },
+            "type": "object"
+        },
+        "ComputeEngine": {
+            "description": "Describes a Compute Engine resource that is being managed by a running\npipeline.",
+            "id": "ComputeEngine",
+            "properties": {
+                "diskNames": {
+                    "description": "The names of the disks that were created for this pipeline.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "machineType": {
+                    "description": "The machine type of the instance.",
+                    "type": "string"
+                },
+                "instanceName": {
+                    "description": "The instance on which the operation is running.",
+                    "type": "string"
+                },
+                "zone": {
+                    "description": "The availability zone in which the instance resides.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ExternalId": {
+            "id": "ExternalId",
+            "properties": {
+                "id": {
+                    "description": "The id used by the source of this data.",
+                    "type": "string"
+                },
+                "sourceName": {
+                    "description": "The name of the source of this data.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Reference": {
+            "description": "A reference is a canonical assembled DNA sequence, intended to act as a\nreference coordinate space for other genomic annotations. A single reference\nmight represent the human chromosome 1 or mitochandrial DNA, for instance. A\nreference belongs to one or more reference sets.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+            "id": "Reference",
+            "properties": {
+                "ncbiTaxonId": {
+                    "description": "ID from http://www.ncbi.nlm.nih.gov/taxonomy. For example, 9606 for human.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "sourceUri": {
+                    "description": "The URI from which the sequence was obtained. Typically specifies a FASTA\nformat file.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The name of this reference, for example `22`.",
+                    "type": "string"
+                },
+                "md5checksum": {
+                    "description": "MD5 of the upper-case sequence excluding all whitespace characters (this\nis equivalent to SQ:M5 in SAM). This value is represented in lower case\nhexadecimal format.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "The server-generated reference ID, unique across all references.",
+                    "type": "string"
+                },
+                "length": {
+                    "description": "The length of this reference's sequence.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "sourceAccessions": {
+                    "description": "All known corresponding accession IDs in INSDC (GenBank/ENA/DDBJ) ideally\nwith a version number, for example `GCF_000001405.26`.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "VariantSetMetadata": {
+            "description": "Metadata describes a single piece of variant call metadata.\nThese data include a top level key and either a single value string (value)\nor a list of key-value pairs (info.)\nValue and info are mutually exclusive.",
+            "id": "VariantSetMetadata",
+            "properties": {
+                "value": {
+                    "description": "The value field for simple metadata",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "User-provided ID field, not enforced by this API.\nTwo or more pieces of structured metadata with identical\nid and key fields are considered equivalent.",
+                    "type": "string"
+                },
+                "number": {
+                    "description": "The number of values that can be included in a field described by this\nmetadata.",
+                    "type": "string"
+                },
+                "key": {
+                    "description": "The top-level key.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "A textual description of this metadata.",
+                    "type": "string"
+                },
+                "info": {
+                    "additionalProperties": {
+                        "items": {
+                            "type": "any"
+                        },
+                        "type": "array"
+                    },
+                    "description": "Remaining structured metadata key-value pairs. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
+                    "type": "object"
+                },
+                "type": {
+                    "description": "The type of data. Possible types include: Integer, Float,\nFlag, Character, and String.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "INTEGER",
+                        "FLOAT",
+                        "FLAG",
+                        "CHARACTER",
+                        "STRING"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SearchVariantSetsRequest": {
+            "description": "The search variant sets request.",
+            "id": "SearchVariantSetsRequest",
+            "properties": {
+                "pageToken": {
+                    "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
+                    "type": "string"
+                },
+                "pageSize": {
+                    "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 1024.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "datasetIds": {
+                    "description": "Exactly one dataset ID must be provided here. Only variant sets which\nbelong to this dataset will be returned.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SearchReferenceSetsRequest": {
+            "id": "SearchReferenceSetsRequest",
+            "properties": {
+                "md5checksums": {
+                    "description": "If present, return reference sets for which the\nmd5checksum matches exactly.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "pageToken": {
+                    "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.",
+                    "type": "string"
+                },
+                "accessions": {
+                    "description": "If present, return reference sets for which a prefix of any of\nsourceAccessions\nmatch any of these strings. Accession numbers typically have a main number\nand a version, for example `NC_000001.11`.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "pageSize": {
+                    "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 1024. The maximum value is 4096.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "assemblyId": {
+                    "description": "If present, return reference sets for which a substring of their\n`assemblyId` matches this string (case insensitive).",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SetIamPolicyRequest": {
+            "description": "Request message for `SetIamPolicy` method.",
+            "id": "SetIamPolicyRequest",
+            "properties": {
+                "policy": {
+                    "$ref": "Policy",
+                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
+                }
+            },
+            "type": "object"
+        },
+        "MergeVariantsRequest": {
+            "id": "MergeVariantsRequest",
+            "properties": {
+                "variants": {
+                    "description": "The variants to be merged with existing variants.",
+                    "items": {
+                        "$ref": "Variant"
+                    },
+                    "type": "array"
+                },
+                "infoMergeConfig": {
+                    "additionalProperties": {
+                        "enum": [
+                            "INFO_MERGE_OPERATION_UNSPECIFIED",
+                            "IGNORE_NEW",
+                            "MOVE_TO_CALLS"
+                        ],
+                        "type": "string"
+                    },
+                    "description": "A mapping between info field keys and the InfoMergeOperations to\nbe performed on them.",
+                    "type": "object"
+                },
+                "variantSetId": {
+                    "description": "The destination variant set.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Read": {
+            "description": "A read alignment describes a linear alignment of a string of DNA to a\nreference sequence, in addition to metadata\nabout the fragment (the molecule of DNA sequenced) and the read (the bases\nwhich were read by the sequencer). A read is equivalent to a line in a SAM\nfile. A read belongs to exactly one read group and exactly one\nread group set.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\n### Reverse-stranded reads\n\nMapped reads (reads having a non-null `alignment`) can be aligned to either\nthe forward or the reverse strand of their associated reference. Strandedness\nof a mapped read is encoded by `alignment.position.reverseStrand`.\n\nIf we consider the reference to be a forward-stranded coordinate space of\n`[0, reference.length)` with `0` as the left-most position and\n`reference.length` as the right-most position, reads are always aligned left\nto right. That is, `alignment.position.position` always refers to the\nleft-most reference coordinate and `alignment.cigar` describes the alignment\nof this read to the reference from left to right. All per-base fields such as\n`alignedSequence` and `alignedQuality` share this same left-to-right\norientation; this is true of reads which are aligned to either strand. For\nreverse-stranded reads, this means that `alignedSequence` is the reverse\ncomplement of the bases that were originally reported by the sequencing\nmachine.\n\n### Generating a reference-aligned sequence string\n\nWhen interacting with mapped reads, it's often useful to produce a string\nrepresenting the local alignment of the read to reference. The following\npseudocode demonstrates one way of doing this:\n\n    out = \"\"\n    offset = 0\n    for c in read.alignment.cigar {\n      switch c.operation {\n      case \"ALIGNMENT_MATCH\", \"SEQUENCE_MATCH\", \"SEQUENCE_MISMATCH\":\n        out += read.alignedSequence[offset:offset+c.operationLength]\n        offset += c.operationLength\n        break\n      case \"CLIP_SOFT\", \"INSERT\":\n        offset += c.operationLength\n        break\n      case \"PAD\":\n        out += repeat(\"*\", c.operationLength)\n        break\n      case \"DELETE\":\n        out += repeat(\"-\", c.operationLength)\n        break\n      case \"SKIP\":\n        out += repeat(\" \", c.operationLength)\n        break\n      case \"CLIP_HARD\":\n        break\n      }\n    }\n    return out\n\n### Converting to SAM's CIGAR string\n\nThe following pseudocode generates a SAM CIGAR string from the\n`cigar` field. Note that this is a lossy conversion\n(`cigar.referenceSequence` is lost).\n\n    cigarMap = {\n      \"ALIGNMENT_MATCH\": \"M\",\n      \"INSERT\": \"I\",\n      \"DELETE\": \"D\",\n      \"SKIP\": \"N\",\n      \"CLIP_SOFT\": \"S\",\n      \"CLIP_HARD\": \"H\",\n      \"PAD\": \"P\",\n      \"SEQUENCE_MATCH\": \"=\",\n      \"SEQUENCE_MISMATCH\": \"X\",\n    }\n    cigarStr = \"\"\n    for c in read.alignment.cigar {\n      cigarStr += c.operationLength + cigarMap[c.operation]\n    }\n    return cigarStr",
+            "id": "Read",
+            "properties": {
+                "readGroupSetId": {
+                    "description": "The ID of the read group set this read belongs to. A read belongs to\nexactly one read group set.",
+                    "type": "string"
+                },
+                "duplicateFragment": {
+                    "description": "The fragment is a PCR or optical duplicate (SAM flag 0x400).",
+                    "type": "boolean"
+                },
+                "readNumber": {
+                    "description": "The read number in sequencing. 0-based and less than numberReads. This\nfield replaces SAM flag 0x40 and 0x80.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "alignedSequence": {
+                    "description": "The bases of the read sequence contained in this alignment record,\n**without CIGAR operations applied** (equivalent to SEQ in SAM).\n`alignedSequence` and `alignedQuality` may be\nshorter than the full read sequence and quality. This will occur if the\nalignment is part of a chimeric alignment, or if the read was trimmed. When\nthis occurs, the CIGAR for this read will begin/end with a hard clip\noperator that will indicate the length of the excised sequence.",
+                    "type": "string"
+                },
+                "readGroupId": {
+                    "description": "The ID of the read group this read belongs to. A read belongs to exactly\none read group. This is a server-generated ID which is distinct from SAM's\nRG tag (for that value, see\nReadGroup.name).",
+                    "type": "string"
+                },
+                "info": {
+                    "additionalProperties": {
+                        "items": {
+                            "type": "any"
+                        },
+                        "type": "array"
+                    },
+                    "description": "A map of additional read alignment information. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
+                    "type": "object"
+                },
+                "nextMatePosition": {
+                    "$ref": "Position",
+                    "description": "The mapping of the primary alignment of the\n`(readNumber+1)%numberReads` read in the fragment. It replaces\nmate position and mate strand in SAM."
+                },
+                "supplementaryAlignment": {
+                    "description": "Whether this alignment is supplementary. Equivalent to SAM flag 0x800.\nSupplementary alignments are used in the representation of a chimeric\nalignment. In a chimeric alignment, a read is split into multiple\nlinear alignments that map to different reference contigs. The first\nlinear alignment in the read will be designated as the representative\nalignment; the remaining linear alignments will be designated as\nsupplementary alignments. These alignments may have different mapping\nquality scores. In each linear alignment in a chimeric alignment, the read\nwill be hard clipped. The `alignedSequence` and\n`alignedQuality` fields in the alignment record will only\nrepresent the bases for its respective linear alignment.",
+                    "type": "boolean"
+                },
+                "properPlacement": {
+                    "description": "The orientation and the distance between reads from the fragment are\nconsistent with the sequencing protocol (SAM flag 0x2).",
+                    "type": "boolean"
+                },
+                "fragmentLength": {
+                    "description": "The observed length of the fragment, equivalent to TLEN in SAM.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "failedVendorQualityChecks": {
+                    "description": "Whether this read did not pass filters, such as platform or vendor quality\ncontrols (SAM flag 0x200).",
+                    "type": "boolean"
+                },
+                "alignedQuality": {
+                    "description": "The quality of the read sequence contained in this alignment record\n(equivalent to QUAL in SAM).\n`alignedSequence` and `alignedQuality` may be shorter than the full read\nsequence and quality. This will occur if the alignment is part of a\nchimeric alignment, or if the read was trimmed. When this occurs, the CIGAR\nfor this read will begin/end with a hard clip operator that will indicate\nthe length of the excised sequence.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                },
+                "alignment": {
+                    "$ref": "LinearAlignment",
+                    "description": "The linear alignment for this alignment record. This field is null for\nunmapped reads."
+                },
+                "id": {
+                    "description": "The server-generated read ID, unique across all reads. This is different\nfrom the `fragmentName`.",
+                    "type": "string"
+                },
+                "numberReads": {
+                    "description": "The number of reads in the fragment (extension to SAM flag 0x1).",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "secondaryAlignment": {
+                    "description": "Whether this alignment is secondary. Equivalent to SAM flag 0x100.\nA secondary alignment represents an alternative to the primary alignment\nfor this read. Aligners may return secondary alignments if a read can map\nambiguously to multiple coordinates in the genome. By convention, each read\nhas one and only one alignment where both `secondaryAlignment`\nand `supplementaryAlignment` are false.",
+                    "type": "boolean"
+                },
+                "fragmentName": {
+                    "description": "The fragment name. Equivalent to QNAME (query template name) in SAM.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "BatchCreateAnnotationsRequest": {
+            "id": "BatchCreateAnnotationsRequest",
+            "properties": {
+                "annotations": {
+                    "description": "The annotations to be created. At most 4096 can be specified in a single\nrequest.",
+                    "items": {
+                        "$ref": "Annotation"
+                    },
+                    "type": "array"
+                },
+                "requestId": {
+                    "description": "A unique request ID which enables the server to detect duplicated requests.\nIf provided, duplicated requests will result in the same response; if not\nprovided, duplicated requests may result in duplicated data. For a given\nannotation set, callers should not reuse `request_id`s when writing\ndifferent batches of annotations - behavior in this case is undefined.\nA common approach is to use a UUID. For batch jobs where worker crashes are\na possibility, consider using some unique variant of a worker or run ID.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ReferenceSet": {
+            "description": "A reference set is a set of references which typically comprise a reference\nassembly for a species, such as `GRCh38` which is representative\nof the human genome. A reference set defines a common coordinate space for\ncomparing reference-aligned experimental data. A reference set contains 1 or\nmore references.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+            "id": "ReferenceSet",
+            "properties": {
+                "referenceIds": {
+                    "description": "The IDs of the reference objects that are part of this set.\n`Reference.md5checksum` must be unique within this set.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "assemblyId": {
+                    "description": "Public id of this reference set, such as `GRCh37`.",
+                    "type": "string"
+                },
+                "md5checksum": {
+                    "description": "Order-independent MD5 checksum which identifies this reference set. The\nchecksum is computed by sorting all lower case hexidecimal string\n`reference.md5checksum` (for all reference in this set) in\nascending lexicographic order, concatenating, and taking the MD5 of that\nvalue. The resulting value is represented in lower case hexadecimal format.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "The server-generated reference set ID, unique across all reference sets.",
+                    "type": "string"
+                },
+                "sourceAccessions": {
+                    "description": "All known corresponding accession IDs in INSDC (GenBank/ENA/DDBJ) ideally\nwith a version number, for example `NC_000001.11`.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "description": {
+                    "description": "Free text description of this reference set.",
+                    "type": "string"
+                },
+                "sourceUri": {
+                    "description": "The URI from which the references were obtained.",
+                    "type": "string"
+                },
+                "ncbiTaxonId": {
+                    "description": "ID from http://www.ncbi.nlm.nih.gov/taxonomy (for example, 9606 for human)\nindicating the species which this reference set is intended to model. Note\nthat contained references may specify a different `ncbiTaxonId`, as\nassemblies may contain reference sequences which do not belong to the\nmodeled species, for example EBV in a human reference genome.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "CigarUnit": {
+            "description": "A single CIGAR operation.",
+            "id": "CigarUnit",
+            "properties": {
+                "operation": {
+                    "enum": [
+                        "OPERATION_UNSPECIFIED",
+                        "ALIGNMENT_MATCH",
+                        "INSERT",
+                        "DELETE",
+                        "SKIP",
+                        "CLIP_SOFT",
+                        "CLIP_HARD",
+                        "PAD",
+                        "SEQUENCE_MATCH",
+                        "SEQUENCE_MISMATCH"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "An alignment match indicates that a sequence can be aligned to the\nreference without evidence of an INDEL. Unlike the\n`SEQUENCE_MATCH` and `SEQUENCE_MISMATCH` operators,\nthe `ALIGNMENT_MATCH` operator does not indicate whether the\nreference and read sequences are an exact match. This operator is\nequivalent to SAM's `M`.",
+                        "The insert operator indicates that the read contains evidence of bases\nbeing inserted into the reference. This operator is equivalent to SAM's\n`I`.",
+                        "The delete operator indicates that the read contains evidence of bases\nbeing deleted from the reference. This operator is equivalent to SAM's\n`D`.",
+                        "The skip operator indicates that this read skips a long segment of the\nreference, but the bases have not been deleted. This operator is commonly\nused when working with RNA-seq data, where reads may skip long segments\nof the reference between exons. This operator is equivalent to SAM's\n`N`.",
+                        "The soft clip operator indicates that bases at the start/end of a read\nhave not been considered during alignment. This may occur if the majority\nof a read maps, except for low quality bases at the start/end of a read.\nThis operator is equivalent to SAM's `S`. Bases that are soft\nclipped will still be stored in the read.",
+                        "The hard clip operator indicates that bases at the start/end of a read\nhave been omitted from this alignment. This may occur if this linear\nalignment is part of a chimeric alignment, or if the read has been\ntrimmed (for example, during error correction or to trim poly-A tails for\nRNA-seq). This operator is equivalent to SAM's `H`.",
+                        "The pad operator indicates that there is padding in an alignment. This\noperator is equivalent to SAM's `P`.",
+                        "This operator indicates that this portion of the aligned sequence exactly\nmatches the reference. This operator is equivalent to SAM's `=`.",
+                        "This operator indicates that this portion of the aligned sequence is an\nalignment match to the reference, but a sequence mismatch. This can\nindicate a SNP or a read error. This operator is equivalent to SAM's\n`X`."
+                    ],
+                    "type": "string"
+                },
+                "referenceSequence": {
+                    "description": "`referenceSequence` is only used at mismatches\n(`SEQUENCE_MISMATCH`) and deletions (`DELETE`).\nFilling this field replaces SAM's MD tag. If the relevant information is\nnot available, this field is unset.",
+                    "type": "string"
+                },
+                "operationLength": {
+                    "description": "The number of genomic bases that the operation runs for. Required.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Transcript": {
+            "description": "A transcript represents the assertion that a particular region of the\nreference genome may be transcribed as RNA.",
+            "id": "Transcript",
+            "properties": {
+                "exons": {
+                    "description": "The <a href=\"http://en.wikipedia.org/wiki/Exon\">exons</a> that compose\nthis transcript. This field should be unset for genomes where transcript\nsplicing does not occur, for example prokaryotes.\n\nIntrons are regions of the transcript that are not included in the\nspliced RNA product. Though not explicitly modeled here, intron ranges can\nbe deduced; all regions of this transcript that are not exons are introns.\n\nExonic sequences do not necessarily code for a translational product\n(amino acids). Only the regions of exons bounded by the\ncodingSequence correspond\nto coding DNA sequence.\n\nExons are ordered by start position and may not overlap.",
+                    "items": {
+                        "$ref": "Exon"
+                    },
+                    "type": "array"
+                },
+                "codingSequence": {
+                    "$ref": "CodingSequence",
+                    "description": "The range of the coding sequence for this transcript, if any. To determine\nthe exact ranges of coding sequence, intersect this range with those of the\nexons, if any. If there are any\nexons, the\ncodingSequence must start\nand end within them.\n\nNote that in some cases, the reference genome will not exactly match the\nobserved mRNA transcript e.g. due to variance in the source genome from\nreference. In these cases,\nexon.frame will not necessarily\nmatch the expected reference reading frame and coding exon reference bases\ncannot necessarily be concatenated to produce the original transcript mRNA."
+                },
+                "geneId": {
+                    "description": "The annotation ID of the gene from which this transcript is transcribed.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AnnotationSet": {
+            "description": "An annotation set is a logical grouping of annotations that share consistent\ntype information and provenance. Examples of annotation sets include 'all\ngenes from refseq', and 'all variant annotations from ClinVar'.",
+            "id": "AnnotationSet",
+            "properties": {
+                "sourceUri": {
+                    "description": "The source URI describing the file from which this annotation set was\ngenerated, if any.",
+                    "type": "string"
+                },
+                "datasetId": {
+                    "description": "The dataset to which this annotation set belongs.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The display name for this annotation set.",
+                    "type": "string"
+                },
+                "referenceSetId": {
+                    "description": "The ID of the reference set that defines the coordinate space for this\nset's annotations.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The type of annotations contained within this set.",
+                    "enum": [
+                        "ANNOTATION_TYPE_UNSPECIFIED",
+                        "GENERIC",
+                        "VARIANT",
+                        "GENE",
+                        "TRANSCRIPT"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "A `GENERIC` annotation type should be used when no other annotation\ntype will suffice. This represents an untyped annotation of the reference\ngenome.",
+                        "A `VARIANT` annotation type.",
+                        "A `GENE` annotation type represents the existence of a gene at the\nassociated reference coordinates. The start coordinate is typically the\ngene's transcription start site and the end is typically the end of the\ngene's last exon.",
+                        "A `TRANSCRIPT` annotation type represents the assertion that a\nparticular region of the reference genome may be transcribed as RNA."
+                    ],
+                    "type": "string"
+                },
+                "info": {
+                    "additionalProperties": {
+                        "items": {
+                            "type": "any"
+                        },
+                        "type": "array"
+                    },
+                    "description": "A map of additional read alignment information. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
+                    "type": "object"
+                },
+                "id": {
+                    "description": "The server-generated annotation set ID, unique across all annotation sets.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Experiment": {
+            "id": "Experiment",
+            "properties": {
+                "sequencingCenter": {
+                    "description": "The sequencing center used as part of this experiment.",
+                    "type": "string"
+                },
+                "platformUnit": {
+                    "description": "The platform unit used as part of this experiment, for example\nflowcell-barcode.lane for Illumina or slide for SOLiD. Corresponds to the\n@RG PU field in the SAM spec.",
+                    "type": "string"
+                },
+                "instrumentModel": {
+                    "description": "The instrument model used as part of this experiment. This maps to\nsequencing technology in the SAM spec.",
+                    "type": "string"
+                },
+                "libraryId": {
+                    "description": "A client-supplied library identifier; a library is a collection of DNA\nfragments which have been prepared for sequencing from a sample. This\nfield is important for quality control as error or bias can be introduced\nduring sample preparation.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListDatasetsResponse": {
+            "description": "The dataset list response.",
+            "id": "ListDatasetsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.",
+                    "type": "string"
+                },
+                "datasets": {
+                    "description": "The list of matching Datasets.",
+                    "items": {
+                        "$ref": "Dataset"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "TestIamPermissionsRequest": {
+            "description": "Request message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsRequest",
+            "properties": {
+                "permissions": {
+                    "description": "REQUIRED: The set of permissions to check for the 'resource'.\nPermissions with wildcards (such as '*' or 'storage.*') are not allowed.\nAllowed permissions are&#58;\n\n* `genomics.datasets.create`\n* `genomics.datasets.delete`\n* `genomics.datasets.get`\n* `genomics.datasets.list`\n* `genomics.datasets.update`\n* `genomics.datasets.getIamPolicy`\n* `genomics.datasets.setIamPolicy`",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Exon": {
+            "id": "Exon",
+            "properties": {
+                "frame": {
+                    "description": "The frame of this exon. Contains a value of 0, 1, or 2, which indicates\nthe offset of the first coding base of the exon within the reading frame\nof the coding DNA sequence, if any. This field is dependent on the\nstrandedness of this annotation (see\nAnnotation.reverse_strand).\nFor forward stranded annotations, this offset is relative to the\nexon.start. For reverse\nstrand annotations, this offset is relative to the\nexon.end `- 1`.\n\nUnset if this exon does not intersect the coding sequence. Upon creation\nof a transcript, the frame must be populated for all or none of the\ncoding exons.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "end": {
+                    "description": "The end position of the exon on this annotation's reference sequence,\n0-based exclusive. Note that this is relative to the reference start, and\n*not* the containing annotation start.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "start": {
+                    "description": "The start position of the exon on this annotation's reference sequence,\n0-based inclusive. Note that this is relative to the reference start, and\n**not** the containing annotation start.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ExportReadGroupSetRequest": {
+            "description": "The read group set export request.",
+            "id": "ExportReadGroupSetRequest",
+            "properties": {
+                "referenceNames": {
+                    "description": "The reference names to export. If this is not specified, all reference\nsequences, including unmapped reads, are exported.\nUse `*` to export only unmapped reads.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "exportUri": {
+                    "description": "Required. A Google Cloud Storage URI for the exported BAM file.\nThe currently authenticated user must have write access to the new file.\nAn error will be returned if the URI already contains data.",
+                    "type": "string"
+                },
+                "projectId": {
+                    "description": "Required. The Google Cloud project ID that owns this\nexport. The caller must have WRITE access to this project.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CallSet": {
+            "description": "A call set is a collection of variant calls, typically for one sample. It\nbelongs to a variant set.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)",
+            "id": "CallSet",
+            "properties": {
+                "created": {
+                    "description": "The date this call set was created in milliseconds from the epoch.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "sampleId": {
+                    "description": "The sample ID this call set corresponds to.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The call set name.",
+                    "type": "string"
+                },
+                "info": {
+                    "additionalProperties": {
+                        "items": {
+                            "type": "any"
+                        },
+                        "type": "array"
+                    },
+                    "description": "A map of additional call set information. This must be of the form\nmap<string, string[]> (string key mapping to a list of string values).",
+                    "type": "object"
+                },
+                "variantSetIds": {
+                    "description": "The IDs of the variant sets this call set belongs to. This field must\nhave exactly length one, as a call set belongs to a single variant set.\nThis field is repeated for compatibility with the\n[GA4GH 0.5.1\nAPI](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variants.avdl#L76).",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "id": {
+                    "description": "The server-generated call set ID, unique across all call sets.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SearchAnnotationSetsResponse": {
+            "id": "SearchAnnotationSetsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.",
+                    "type": "string"
+                },
+                "annotationSets": {
+                    "description": "The matching annotation sets.",
+                    "items": {
+                        "$ref": "AnnotationSet"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/iam__v1.json b/discovery/googleapis/iam__v1.json
index 65ad421..b1e9f6b 100644
--- a/discovery/googleapis/iam__v1.json
+++ b/discovery/googleapis/iam__v1.json
@@ -25,6 +25,37 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -36,13 +67,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
@@ -79,62 +110,10 @@
             ],
             "location": "query",
             "type": "string"
-        },
-        "access_token": {
-            "description": "OAuth access token.",
-            "location": "query",
-            "type": "string"
-        },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-            "location": "query",
-            "type": "string"
-        },
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
-        "permissions": {
-            "methods": {
-                "queryTestablePermissions": {
-                    "description": "Lists the permissions testable on a resource.\nA permission is testable if it can be tested for an identity on a resource.",
-                    "httpMethod": "POST",
-                    "id": "iam.permissions.queryTestablePermissions",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/permissions:queryTestablePermissions",
-                    "request": {
-                        "$ref": "QueryTestablePermissionsRequest"
-                    },
-                    "response": {
-                        "$ref": "QueryTestablePermissionsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                }
-            }
-        },
         "roles": {
             "methods": {
                 "queryGrantableRoles": {
@@ -154,6 +133,51 @@
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
                 },
+                "list": {
+                    "description": "Lists the Roles defined on a resource.",
+                    "httpMethod": "GET",
+                    "id": "iam.roles.list",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "view": {
+                            "description": "Optional view for the returned Role objects.",
+                            "enum": [
+                                "BASIC",
+                                "FULL"
+                            ],
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "parent": {
+                            "description": "The resource name of the parent resource in one of the following formats:\n`` (empty string) -- this refers to curated roles.\n`organizations/{ORGANIZATION_ID}`\n`projects/{PROJECT_ID}`",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "showDeleted": {
+                            "description": "Include Roles that have been deleted.",
+                            "location": "query",
+                            "type": "boolean"
+                        },
+                        "pageToken": {
+                            "description": "Optional pagination token returned in an earlier ListRolesResponse.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageSize": {
+                            "description": "Optional limit on the number of roles to include in the response.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        }
+                    },
+                    "path": "v1/roles",
+                    "response": {
+                        "$ref": "ListRolesResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
                 "get": {
                     "description": "Gets a Role definition.",
                     "httpMethod": "GET",
@@ -177,47 +201,23 @@
                     "scopes": [
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
-                },
-                "list": {
-                    "description": "Lists the Roles defined on a resource.",
-                    "httpMethod": "GET",
-                    "id": "iam.roles.list",
+                }
+            }
+        },
+        "permissions": {
+            "methods": {
+                "queryTestablePermissions": {
+                    "description": "Lists the permissions testable on a resource.\nA permission is testable if it can be tested for an identity on a resource.",
+                    "httpMethod": "POST",
+                    "id": "iam.permissions.queryTestablePermissions",
                     "parameterOrder": [],
-                    "parameters": {
-                        "pageToken": {
-                            "description": "Optional pagination token returned in an earlier ListRolesResponse.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageSize": {
-                            "description": "Optional limit on the number of roles to include in the response.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        },
-                        "view": {
-                            "description": "Optional view for the returned Role objects.",
-                            "enum": [
-                                "BASIC",
-                                "FULL"
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "parent": {
-                            "description": "The resource name of the parent resource in one of the following formats:\n`` (empty string) -- this refers to curated roles.\n`organizations/{ORGANIZATION_ID}`\n`projects/{PROJECT_ID}`",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "showDeleted": {
-                            "description": "Include Roles that have been deleted.",
-                            "location": "query",
-                            "type": "boolean"
-                        }
+                    "parameters": {},
+                    "path": "v1/permissions:queryTestablePermissions",
+                    "request": {
+                        "$ref": "QueryTestablePermissionsRequest"
                     },
-                    "path": "v1/roles",
                     "response": {
-                        "$ref": "ListRolesResponse"
+                        "$ref": "QueryTestablePermissionsResponse"
                     },
                     "scopes": [
                         "https://www.googleapis.com/auth/cloud-platform"
@@ -237,6 +237,16 @@
                                 "parent"
                             ],
                             "parameters": {
+                                "showDeleted": {
+                                    "description": "Include Roles that have been deleted.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
+                                "pageToken": {
+                                    "description": "Optional pagination token returned in an earlier ListRolesResponse.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "pageSize": {
                                     "description": "Optional limit on the number of roles to include in the response.",
                                     "format": "int32",
@@ -258,16 +268,6 @@
                                     "pattern": "^organizations/[^/]+$",
                                     "required": true,
                                     "type": "string"
-                                },
-                                "showDeleted": {
-                                    "description": "Include Roles that have been deleted.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
-                                "pageToken": {
-                                    "description": "Optional pagination token returned in an earlier ListRolesResponse.",
-                                    "location": "query",
-                                    "type": "string"
                                 }
                             },
                             "path": "v1/{+parent}/roles",
@@ -313,18 +313,18 @@
                                 "name"
                             ],
                             "parameters": {
-                                "updateMask": {
-                                    "description": "A mask describing which fields in the Role have changed.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                },
                                 "name": {
                                     "description": "The resource name of the role in one of the following formats:\n`roles/{ROLE_NAME}`\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`",
                                     "location": "path",
                                     "pattern": "^organizations/[^/]+/roles/[^/]+$",
                                     "required": true,
                                     "type": "string"
+                                },
+                                "updateMask": {
+                                    "description": "A mask describing which fields in the Role have changed.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
                                 }
                             },
                             "path": "v1/{+name}",
@@ -425,202 +425,32 @@
         },
         "projects": {
             "resources": {
-                "roles": {
-                    "methods": {
-                        "delete": {
-                            "description": "Soft deletes a role. The role is suspended and cannot be used to create new\nIAM Policy Bindings.\nThe Role will not be included in `ListRoles()` unless `show_deleted` is set\nin the `ListRolesRequest`. The Role contains the deleted boolean set.\nExisting Bindings remains, but are inactive. The Role can be undeleted\nwithin 7 days. After 7 days the Role is deleted and all Bindings associated\nwith the role are removed.",
-                            "httpMethod": "DELETE",
-                            "id": "iam.projects.roles.delete",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "etag": {
-                                    "description": "Used to perform a consistent read-modify-write.",
-                                    "format": "byte",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "description": "The resource name of the role in one of the following formats:\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/roles/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "response": {
-                                "$ref": "Role"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists the Roles defined on a resource.",
-                            "httpMethod": "GET",
-                            "id": "iam.projects.roles.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "showDeleted": {
-                                    "description": "Include Roles that have been deleted.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
-                                "pageToken": {
-                                    "description": "Optional pagination token returned in an earlier ListRolesResponse.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional limit on the number of roles to include in the response.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "view": {
-                                    "description": "Optional view for the returned Role objects.",
-                                    "enum": [
-                                        "BASIC",
-                                        "FULL"
-                                    ],
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "parent": {
-                                    "description": "The resource name of the parent resource in one of the following formats:\n`` (empty string) -- this refers to curated roles.\n`organizations/{ORGANIZATION_ID}`\n`projects/{PROJECT_ID}`",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+parent}/roles",
-                            "response": {
-                                "$ref": "ListRolesResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "create": {
-                            "description": "Creates a new Role.",
-                            "httpMethod": "POST",
-                            "id": "iam.projects.roles.create",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "parent": {
-                                    "description": "The resource name of the parent resource in one of the following formats:\n`organizations/{ORGANIZATION_ID}`\n`projects/{PROJECT_ID}`",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+parent}/roles",
-                            "request": {
-                                "$ref": "CreateRoleRequest"
-                            },
-                            "response": {
-                                "$ref": "Role"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets a Role definition.",
-                            "httpMethod": "GET",
-                            "id": "iam.projects.roles.get",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "The resource name of the role in one of the following formats:\n`roles/{ROLE_NAME}`\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/roles/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "response": {
-                                "$ref": "Role"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "patch": {
-                            "description": "Updates a Role definition.",
-                            "httpMethod": "PATCH",
-                            "id": "iam.projects.roles.patch",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "The resource name of the role in one of the following formats:\n`roles/{ROLE_NAME}`\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/roles/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "updateMask": {
-                                    "description": "A mask describing which fields in the Role have changed.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "request": {
-                                "$ref": "Role"
-                            },
-                            "response": {
-                                "$ref": "Role"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "undelete": {
-                            "description": "Undelete a Role, bringing it back in its previous state.",
-                            "httpMethod": "POST",
-                            "id": "iam.projects.roles.undelete",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "The resource name of the role in one of the following formats:\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/roles/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}:undelete",
-                            "request": {
-                                "$ref": "UndeleteRoleRequest"
-                            },
-                            "response": {
-                                "$ref": "Role"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        }
-                    }
-                },
                 "serviceAccounts": {
                     "methods": {
+                        "getIamPolicy": {
+                            "description": "Returns the IAM access control policy for a\nServiceAccount.",
+                            "httpMethod": "POST",
+                            "id": "iam.projects.serviceAccounts.getIamPolicy",
+                            "parameterOrder": [
+                                "resource"
+                            ],
+                            "parameters": {
+                                "resource": {
+                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+resource}:getIamPolicy",
+                            "response": {
+                                "$ref": "Policy"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
                         "get": {
                             "description": "Gets a ServiceAccount.",
                             "httpMethod": "GET",
@@ -723,6 +553,41 @@
                                 "https://www.googleapis.com/auth/cloud-platform"
                             ]
                         },
+                        "list": {
+                            "description": "Lists ServiceAccounts for a project.",
+                            "httpMethod": "GET",
+                            "id": "iam.projects.serviceAccounts.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The resource name of the project associated with the service\naccounts, such as `projects/my-project-123`.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Optional pagination token returned in an earlier\nListServiceAccountsResponse.next_page_token.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional limit on the number of service accounts to include in the\nresponse. Further accounts can subsequently be obtained by including the\nListServiceAccountsResponse.next_page_token\nin a subsequent request.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v1/{+name}/serviceAccounts",
+                            "response": {
+                                "$ref": "ListServiceAccountsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
                         "signBlob": {
                             "description": "Signs a blob using a service account's system-managed private key.",
                             "httpMethod": "POST",
@@ -750,41 +615,6 @@
                                 "https://www.googleapis.com/auth/cloud-platform"
                             ]
                         },
-                        "list": {
-                            "description": "Lists ServiceAccounts for a project.",
-                            "httpMethod": "GET",
-                            "id": "iam.projects.serviceAccounts.list",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "Optional pagination token returned in an earlier\nListServiceAccountsResponse.next_page_token.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "description": "Required. The resource name of the project associated with the service\naccounts, such as `projects/my-project-123`.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional limit on the number of service accounts to include in the\nresponse. Further accounts can subsequently be obtained by including the\nListServiceAccountsResponse.next_page_token\nin a subsequent request.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v1/{+name}/serviceAccounts",
-                            "response": {
-                                "$ref": "ListServiceAccountsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
                         "create": {
                             "description": "Creates a ServiceAccount\nand returns it.",
                             "httpMethod": "POST",
@@ -812,33 +642,6 @@
                                 "https://www.googleapis.com/auth/cloud-platform"
                             ]
                         },
-                        "setIamPolicy": {
-                            "description": "Sets the IAM access control policy for a\nServiceAccount.",
-                            "httpMethod": "POST",
-                            "id": "iam.projects.serviceAccounts.setIamPolicy",
-                            "parameterOrder": [
-                                "resource"
-                            ],
-                            "parameters": {
-                                "resource": {
-                                    "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+resource}:setIamPolicy",
-                            "request": {
-                                "$ref": "SetIamPolicyRequest"
-                            },
-                            "response": {
-                                "$ref": "Policy"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
                         "signJwt": {
                             "description": "Signs a JWT using a service account's system-managed private key.\n\nIf no expiry time (`exp`) is provided in the `SignJwtRequest`, IAM sets an\nan expiry time of one hour by default. If you request an expiry time of\nmore than one hour, the request will fail.",
                             "httpMethod": "POST",
@@ -866,23 +669,26 @@
                                 "https://www.googleapis.com/auth/cloud-platform"
                             ]
                         },
-                        "getIamPolicy": {
-                            "description": "Returns the IAM access control policy for a\nServiceAccount.",
+                        "setIamPolicy": {
+                            "description": "Sets the IAM access control policy for a\nServiceAccount.",
                             "httpMethod": "POST",
-                            "id": "iam.projects.serviceAccounts.getIamPolicy",
+                            "id": "iam.projects.serviceAccounts.setIamPolicy",
                             "parameterOrder": [
                                 "resource"
                             ],
                             "parameters": {
                                 "resource": {
-                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                    "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
                                     "location": "path",
                                     "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$",
                                     "required": true,
                                     "type": "string"
                                 }
                             },
-                            "path": "v1/{+resource}:getIamPolicy",
+                            "path": "v1/{+resource}:setIamPolicy",
+                            "request": {
+                                "$ref": "SetIamPolicyRequest"
+                            },
                             "response": {
                                 "$ref": "Policy"
                             },
@@ -894,25 +700,36 @@
                     "resources": {
                         "keys": {
                             "methods": {
-                                "delete": {
-                                    "description": "Deletes a ServiceAccountKey.",
-                                    "httpMethod": "DELETE",
-                                    "id": "iam.projects.serviceAccounts.keys.delete",
+                                "list": {
+                                    "description": "Lists ServiceAccountKeys.",
+                                    "httpMethod": "GET",
+                                    "id": "iam.projects.serviceAccounts.keys.list",
                                     "parameterOrder": [
                                         "name"
                                     ],
                                     "parameters": {
+                                        "keyTypes": {
+                                            "description": "Filters the types of keys the user wants to include in the list\nresponse. Duplicate key types are not allowed. If no key type\nis provided, all keys are returned.",
+                                            "enum": [
+                                                "KEY_TYPE_UNSPECIFIED",
+                                                "USER_MANAGED",
+                                                "SYSTEM_MANAGED"
+                                            ],
+                                            "location": "query",
+                                            "repeated": true,
+                                            "type": "string"
+                                        },
                                         "name": {
-                                            "description": "The resource name of the service account key in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}/keys/{key}`.\nUsing `-` as a wildcard for the `PROJECT_ID` will infer the project from\nthe account. The `ACCOUNT` value can be the `email` address or the\n`unique_id` of the service account.",
+                                            "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`.\n\nUsing `-` as a wildcard for the `PROJECT_ID`, will infer the project from\nthe account. The `ACCOUNT` value can be the `email` address or the\n`unique_id` of the service account.",
                                             "location": "path",
-                                            "pattern": "^projects/[^/]+/serviceAccounts/[^/]+/keys/[^/]+$",
+                                            "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$",
                                             "required": true,
                                             "type": "string"
                                         }
                                     },
-                                    "path": "v1/{+name}",
+                                    "path": "v1/{+name}/keys",
                                     "response": {
-                                        "$ref": "Empty"
+                                        "$ref": "ListServiceAccountKeysResponse"
                                     },
                                     "scopes": [
                                         "https://www.googleapis.com/auth/cloud-platform"
@@ -952,41 +769,6 @@
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
                                 },
-                                "list": {
-                                    "description": "Lists ServiceAccountKeys.",
-                                    "httpMethod": "GET",
-                                    "id": "iam.projects.serviceAccounts.keys.list",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`.\n\nUsing `-` as a wildcard for the `PROJECT_ID`, will infer the project from\nthe account. The `ACCOUNT` value can be the `email` address or the\n`unique_id` of the service account.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "keyTypes": {
-                                            "description": "Filters the types of keys the user wants to include in the list\nresponse. Duplicate key types are not allowed. If no key type\nis provided, all keys are returned.",
-                                            "enum": [
-                                                "KEY_TYPE_UNSPECIFIED",
-                                                "USER_MANAGED",
-                                                "SYSTEM_MANAGED"
-                                            ],
-                                            "location": "query",
-                                            "repeated": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+name}/keys",
-                                    "response": {
-                                        "$ref": "ListServiceAccountKeysResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
                                 "create": {
                                     "description": "Creates a ServiceAccountKey\nand returns it.",
                                     "httpMethod": "POST",
@@ -1013,17 +795,249 @@
                                     "scopes": [
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a ServiceAccountKey.",
+                                    "httpMethod": "DELETE",
+                                    "id": "iam.projects.serviceAccounts.keys.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The resource name of the service account key in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}/keys/{key}`.\nUsing `-` as a wildcard for the `PROJECT_ID` will infer the project from\nthe account. The `ACCOUNT` value can be the `email` address or the\n`unique_id` of the service account.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/serviceAccounts/[^/]+/keys/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
                                 }
                             }
                         }
                     }
+                },
+                "roles": {
+                    "methods": {
+                        "undelete": {
+                            "description": "Undelete a Role, bringing it back in its previous state.",
+                            "httpMethod": "POST",
+                            "id": "iam.projects.roles.undelete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The resource name of the role in one of the following formats:\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/roles/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}:undelete",
+                            "request": {
+                                "$ref": "UndeleteRoleRequest"
+                            },
+                            "response": {
+                                "$ref": "Role"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets a Role definition.",
+                            "httpMethod": "GET",
+                            "id": "iam.projects.roles.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The resource name of the role in one of the following formats:\n`roles/{ROLE_NAME}`\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/roles/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "Role"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "patch": {
+                            "description": "Updates a Role definition.",
+                            "httpMethod": "PATCH",
+                            "id": "iam.projects.roles.patch",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The resource name of the role in one of the following formats:\n`roles/{ROLE_NAME}`\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/roles/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "updateMask": {
+                                    "description": "A mask describing which fields in the Role have changed.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "request": {
+                                "$ref": "Role"
+                            },
+                            "response": {
+                                "$ref": "Role"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "delete": {
+                            "description": "Soft deletes a role. The role is suspended and cannot be used to create new\nIAM Policy Bindings.\nThe Role will not be included in `ListRoles()` unless `show_deleted` is set\nin the `ListRolesRequest`. The Role contains the deleted boolean set.\nExisting Bindings remains, but are inactive. The Role can be undeleted\nwithin 7 days. After 7 days the Role is deleted and all Bindings associated\nwith the role are removed.",
+                            "httpMethod": "DELETE",
+                            "id": "iam.projects.roles.delete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The resource name of the role in one of the following formats:\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/roles/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "etag": {
+                                    "description": "Used to perform a consistent read-modify-write.",
+                                    "format": "byte",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "Role"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists the Roles defined on a resource.",
+                            "httpMethod": "GET",
+                            "id": "iam.projects.roles.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "showDeleted": {
+                                    "description": "Include Roles that have been deleted.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
+                                "pageToken": {
+                                    "description": "Optional pagination token returned in an earlier ListRolesResponse.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional limit on the number of roles to include in the response.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "view": {
+                                    "description": "Optional view for the returned Role objects.",
+                                    "enum": [
+                                        "BASIC",
+                                        "FULL"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "parent": {
+                                    "description": "The resource name of the parent resource in one of the following formats:\n`` (empty string) -- this refers to curated roles.\n`organizations/{ORGANIZATION_ID}`\n`projects/{PROJECT_ID}`",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+parent}/roles",
+                            "response": {
+                                "$ref": "ListRolesResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "create": {
+                            "description": "Creates a new Role.",
+                            "httpMethod": "POST",
+                            "id": "iam.projects.roles.create",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "The resource name of the parent resource in one of the following formats:\n`organizations/{ORGANIZATION_ID}`\n`projects/{PROJECT_ID}`",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+parent}/roles",
+                            "request": {
+                                "$ref": "CreateRoleRequest"
+                            },
+                            "response": {
+                                "$ref": "Role"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    }
                 }
             }
         }
     },
-    "revision": "20170922",
+    "revision": "20171012",
     "rootUrl": "https://iam.googleapis.com/",
     "schemas": {
+        "PolicyDelta": {
+            "description": "The difference delta between two policies.",
+            "id": "PolicyDelta",
+            "properties": {
+                "bindingDeltas": {
+                    "description": "The delta for Bindings between two policies.",
+                    "items": {
+                        "$ref": "BindingDelta"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "ListServiceAccountsResponse": {
             "description": "The service account list response.",
             "id": "ListServiceAccountsResponse",
@@ -1046,16 +1060,16 @@
             "description": "The grantable role query response.",
             "id": "QueryGrantableRolesResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "To retrieve the next page of results, set\n`QueryGrantableRolesRequest.page_token` to this value.",
-                    "type": "string"
-                },
                 "roles": {
                     "description": "The list of matching roles.",
                     "items": {
                         "$ref": "Role"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "To retrieve the next page of results, set\n`QueryGrantableRolesRequest.page_token` to this value.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1087,16 +1101,16 @@
             "description": "The response containing permissions which can be tested on a resource.",
             "id": "QueryTestablePermissionsResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "To retrieve the next page of results, set\n`QueryTestableRolesRequest.page_token` to this value.",
-                    "type": "string"
-                },
                 "permissions": {
                     "description": "The Permissions testable on the requested resource.",
                     "items": {
                         "$ref": "Permission"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "To retrieve the next page of results, set\n`QueryTestableRolesRequest.page_token` to this value.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1146,13 +1160,13 @@
             "description": "The service account sign JWT response.",
             "id": "SignJwtResponse",
             "properties": {
-                "signedJwt": {
-                    "description": "The signed JWT.",
-                    "type": "string"
-                },
                 "keyId": {
                     "description": "The id of the key used to sign the JWT.",
                     "type": "string"
+                },
+                "signedJwt": {
+                    "description": "The signed JWT.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1175,6 +1189,13 @@
             "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
             "id": "Policy",
             "properties": {
+                "bindings": {
+                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
+                    "items": {
+                        "$ref": "Binding"
+                    },
+                    "type": "array"
+                },
                 "etag": {
                     "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
                     "format": "byte",
@@ -1184,13 +1205,6 @@
                     "description": "Version of the `Policy`. The default version is 0.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "bindings": {
-                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
-                    "items": {
-                        "$ref": "Binding"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -1199,16 +1213,16 @@
             "description": "The response containing the roles defined under a resource.",
             "id": "ListRolesResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "To retrieve the next page of results, set\n`ListRolesRequest.page_token` to this value.",
-                    "type": "string"
-                },
                 "roles": {
                     "description": "The Roles defined on this resource.",
                     "items": {
                         "$ref": "Role"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "To retrieve the next page of results, set\n`ListRolesRequest.page_token` to this value.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1228,6 +1242,10 @@
             "description": "One delta entry for Binding. Each individual change (only one member in each\nentry) to a binding will be a separate entry.",
             "id": "BindingDelta",
             "properties": {
+                "role": {
+                    "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired",
+                    "type": "string"
+                },
                 "action": {
                     "description": "The action that was performed on a Binding.\nRequired",
                     "enum": [
@@ -1242,17 +1260,13 @@
                     ],
                     "type": "string"
                 },
-                "condition": {
-                    "$ref": "Expr",
-                    "description": "The condition that is associated with this binding.\nThis field is GOOGLE_INTERNAL.\nThis field is not logged in IAM side because it's only for audit logging.\nOptional"
-                },
                 "member": {
                     "description": "A single identity requesting access for a Cloud Platform resource.\nFollows the same format of Binding.members.\nRequired",
                     "type": "string"
                 },
-                "role": {
-                    "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired",
-                    "type": "string"
+                "condition": {
+                    "$ref": "Expr",
+                    "description": "The condition that is associated with this binding.\nThis field is GOOGLE_INTERNAL.\nThis field is not logged in IAM side because it's only for audit logging.\nOptional"
                 }
             },
             "type": "object"
@@ -1273,13 +1287,13 @@
             "description": "The service account create request.",
             "id": "CreateServiceAccountRequest",
             "properties": {
-                "serviceAccount": {
-                    "$ref": "ServiceAccount",
-                    "description": "The ServiceAccount resource to create.\nCurrently, only the following values are user assignable:\n`display_name` ."
-                },
                 "accountId": {
                     "description": "Required. The account id that is used to generate the service account\nemail address and a stable unique id. It is unique within a project,\nmust be 6-30 characters long, and match the regular expression\n`[a-z]([-a-z0-9]*[a-z0-9])` to comply with RFC1035.",
                     "type": "string"
+                },
+                "serviceAccount": {
+                    "$ref": "ServiceAccount",
+                    "description": "The ServiceAccount resource to create.\nCurrently, only the following values are user assignable:\n`display_name` ."
                 }
             },
             "type": "object"
@@ -1288,6 +1302,10 @@
             "description": "A role in the Identity and Access Management API.",
             "id": "Role",
             "properties": {
+                "title": {
+                    "description": "Optional.  A human-readable title for the role.  Typically this\nis limited to 100 UTF-8 bytes.",
+                    "type": "string"
+                },
                 "includedPermissions": {
                     "description": "The names of the permissions this role grants when bound in an IAM policy.",
                     "items": {
@@ -1331,10 +1349,6 @@
                 "deleted": {
                     "description": "The current deleted state of the role. This field is read only.\nIt will be ignored in calls to CreateRole and UpdateRole.",
                     "type": "boolean"
-                },
-                "title": {
-                    "description": "Optional.  A human-readable title for the role.  Typically this\nis limited to 100 UTF-8 bytes.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1357,25 +1371,33 @@
             },
             "type": "object"
         },
-        "Expr": {
-            "description": "Represents an expression text. Example:\n\n    title: \"User account presence\"\n    description: \"Determines whether the request has a user account\"\n    expression: \"size(request.user) > 0\"",
-            "id": "Expr",
+        "QueryGrantableRolesRequest": {
+            "description": "The grantable role query request.",
+            "id": "QueryGrantableRolesRequest",
             "properties": {
-                "description": {
-                    "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.",
+                "view": {
+                    "enum": [
+                        "BASIC",
+                        "FULL"
+                    ],
+                    "enumDescriptions": [
+                        "Omits the `included_permissions` field.\nThis is the default value.",
+                        "Returns all fields."
+                    ],
                     "type": "string"
                 },
-                "expression": {
-                    "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.",
+                "fullResourceName": {
+                    "description": "Required. The full resource name to query from the list of grantable roles.\n\nThe name follows the Google Cloud Platform resource format.\nFor example, a Cloud Platform project with id `my-project` will be named\n`//cloudresourcemanager.googleapis.com/projects/my-project`.",
                     "type": "string"
                 },
-                "location": {
-                    "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.",
+                "pageToken": {
+                    "description": "Optional pagination token returned in an earlier\nQueryGrantableRolesResponse.",
                     "type": "string"
                 },
-                "title": {
-                    "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.",
-                    "type": "string"
+                "pageSize": {
+                    "description": "Optional limit on the number of roles to include in the response.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -1384,14 +1406,19 @@
             "description": "A service account in the Identity and Access Management API.\n\nTo create a service account, specify the `project_id` and the `account_id`\nfor the account.  The `account_id` is unique within the project, and is used\nto generate the service account email address and a stable\n`unique_id`.\n\nIf the account already exists, the account's resource name is returned\nin util::Status's ResourceInfo.resource_name in the format of\nprojects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}. The caller can\nuse the name in other methods to access the account.\n\nAll other methods can identify the service account using the format\n`projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`.\nUsing `-` as a wildcard for the `PROJECT_ID` will infer the project from\nthe account. The `ACCOUNT` value can be the `email` address or the\n`unique_id` of the service account.",
             "id": "ServiceAccount",
             "properties": {
-                "name": {
-                    "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`.\n\nRequests using `-` as a wildcard for the `PROJECT_ID` will infer the\nproject from the `account` and the `ACCOUNT` value can be the `email`\naddress or the `unique_id` of the service account.\n\nIn responses the resource name will always be in the format\n`projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`.",
+                "etag": {
+                    "description": "Used to perform a consistent read-modify-write.",
+                    "format": "byte",
                     "type": "string"
                 },
                 "email": {
                     "description": "@OutputOnly The email address of the service account.",
                     "type": "string"
                 },
+                "name": {
+                    "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`.\n\nRequests using `-` as a wildcard for the `PROJECT_ID` will infer the\nproject from the `account` and the `ACCOUNT` value can be the `email`\naddress or the `unique_id` of the service account.\n\nIn responses the resource name will always be in the format\n`projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`.",
+                    "type": "string"
+                },
                 "projectId": {
                     "description": "@OutputOnly The id of the project that owns the service account.",
                     "type": "string"
@@ -1407,41 +1434,28 @@
                 "displayName": {
                     "description": "Optional. A user-specified description of the service account.  Must be\nfewer than 100 UTF-8 bytes.",
                     "type": "string"
-                },
-                "etag": {
-                    "description": "Used to perform a consistent read-modify-write.",
-                    "format": "byte",
-                    "type": "string"
                 }
             },
             "type": "object"
         },
-        "QueryGrantableRolesRequest": {
-            "description": "The grantable role query request.",
-            "id": "QueryGrantableRolesRequest",
+        "Expr": {
+            "description": "Represents an expression text. Example:\n\n    title: \"User account presence\"\n    description: \"Determines whether the request has a user account\"\n    expression: \"size(request.user) > 0\"",
+            "id": "Expr",
             "properties": {
-                "fullResourceName": {
-                    "description": "Required. The full resource name to query from the list of grantable roles.\n\nThe name follows the Google Cloud Platform resource format.\nFor example, a Cloud Platform project with id `my-project` will be named\n`//cloudresourcemanager.googleapis.com/projects/my-project`.",
+                "title": {
+                    "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.",
                     "type": "string"
                 },
-                "pageToken": {
-                    "description": "Optional pagination token returned in an earlier\nQueryGrantableRolesResponse.",
+                "location": {
+                    "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.",
                     "type": "string"
                 },
-                "pageSize": {
-                    "description": "Optional limit on the number of roles to include in the response.",
-                    "format": "int32",
-                    "type": "integer"
+                "description": {
+                    "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.",
+                    "type": "string"
                 },
-                "view": {
-                    "enum": [
-                        "BASIC",
-                        "FULL"
-                    ],
-                    "enumDescriptions": [
-                        "Omits the `included_permissions` field.\nThis is the default value.",
-                        "Returns all fields."
-                    ],
+                "expression": {
+                    "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.",
                     "type": "string"
                 }
             },
@@ -1451,13 +1465,27 @@
             "description": "The request to create a new role.",
             "id": "CreateRoleRequest",
             "properties": {
-                "roleId": {
-                    "description": "The role id to use for this role.",
-                    "type": "string"
-                },
                 "role": {
                     "$ref": "Role",
                     "description": "The Role resource to create."
+                },
+                "roleId": {
+                    "description": "The role id to use for this role.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListServiceAccountKeysResponse": {
+            "description": "The service account keys list response.",
+            "id": "ListServiceAccountKeysResponse",
+            "properties": {
+                "keys": {
+                    "description": "The public keys for the service account.",
+                    "items": {
+                        "$ref": "ServiceAccountKey"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -1496,33 +1524,10 @@
             },
             "type": "object"
         },
-        "ListServiceAccountKeysResponse": {
-            "description": "The service account keys list response.",
-            "id": "ListServiceAccountKeysResponse",
-            "properties": {
-                "keys": {
-                    "description": "The public keys for the service account.",
-                    "items": {
-                        "$ref": "ServiceAccountKey"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "ServiceAccountKey": {
             "description": "Represents a service account key.\n\nA service account has two sets of key-pairs: user-managed, and\nsystem-managed.\n\nUser-managed key-pairs can be created and deleted by users.  Users are\nresponsible for rotating these keys periodically to ensure security of\ntheir service accounts.  Users retain the private key of these key-pairs,\nand Google retains ONLY the public key.\n\nSystem-managed key-pairs are managed automatically by Google, and rotated\ndaily without user intervention.  The private key never leaves Google's\nservers to maximize security.\n\nPublic keys for all service accounts are also published at the OAuth2\nService Account API.",
             "id": "ServiceAccountKey",
             "properties": {
-                "name": {
-                    "description": "The resource name of the service account key in the following format\n`projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}/keys/{key}`.",
-                    "type": "string"
-                },
-                "validBeforeTime": {
-                    "description": "The key can be used before this timestamp.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
                 "keyAlgorithm": {
                     "description": "Specifies the algorithm (and possibly key size) for the key.",
                     "enum": [
@@ -1565,6 +1570,15 @@
                     "description": "The public key data. Only provided in `GetServiceAccountKey` responses.",
                     "format": "byte",
                     "type": "string"
+                },
+                "name": {
+                    "description": "The resource name of the service account key in the following format\n`projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}/keys/{key}`.",
+                    "type": "string"
+                },
+                "validBeforeTime": {
+                    "description": "The key can be used before this timestamp.",
+                    "format": "google-datetime",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1573,14 +1587,25 @@
             "description": "The service account sign blob response.",
             "id": "SignBlobResponse",
             "properties": {
-                "keyId": {
-                    "description": "The id of the key used to sign the blob.",
-                    "type": "string"
-                },
                 "signature": {
                     "description": "The signed blob.",
                     "format": "byte",
                     "type": "string"
+                },
+                "keyId": {
+                    "description": "The id of the key used to sign the blob.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SignJwtRequest": {
+            "description": "The service account sign JWT request.",
+            "id": "SignJwtRequest",
+            "properties": {
+                "payload": {
+                    "description": "The JWT payload to sign, a JSON JWT Claim set.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1637,31 +1662,6 @@
                 }
             },
             "type": "object"
-        },
-        "SignJwtRequest": {
-            "description": "The service account sign JWT request.",
-            "id": "SignJwtRequest",
-            "properties": {
-                "payload": {
-                    "description": "The JWT payload to sign, a JSON JWT Claim set.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "PolicyDelta": {
-            "description": "The difference delta between two policies.",
-            "id": "PolicyDelta",
-            "properties": {
-                "bindingDeltas": {
-                    "description": "The delta for Bindings between two policies.",
-                    "items": {
-                        "$ref": "BindingDelta"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/kgsearch__v1.json b/discovery/googleapis/kgsearch__v1.json
index e885740..139da5e 100644
--- a/discovery/googleapis/kgsearch__v1.json
+++ b/discovery/googleapis/kgsearch__v1.json
@@ -15,37 +15,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-            "location": "query",
-            "type": "string"
-        },
-        "access_token": {
-            "description": "OAuth access token.",
-            "location": "query",
-            "type": "string"
-        },
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -57,18 +26,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
-            "location": "query",
-            "type": "string"
-        },
         "uploadType": {
             "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
@@ -85,6 +49,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -100,6 +69,37 @@
             ],
             "location": "query",
             "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
@@ -112,11 +112,6 @@
                     "id": "kgsearch.entities.search",
                     "parameterOrder": [],
                     "parameters": {
-                        "indent": {
-                            "description": "Enables indenting of json results.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
                         "languages": {
                             "description": "The list of language codes (defined in ISO 693) to run the query with,\ne.g. 'en'.",
                             "location": "query",
@@ -150,6 +145,11 @@
                             "location": "query",
                             "repeated": true,
                             "type": "string"
+                        },
+                        "indent": {
+                            "description": "Enables indenting of json results.",
+                            "location": "query",
+                            "type": "boolean"
                         }
                     },
                     "path": "v1/entities:search",
diff --git a/discovery/googleapis/language__v1.json b/discovery/googleapis/language__v1.json
index b7454c4..c0f6eca 100644
--- a/discovery/googleapis/language__v1.json
+++ b/discovery/googleapis/language__v1.json
@@ -2,11 +2,11 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/cloud-language": {
-                    "description": "Apply machine learning models to reveal the structure and meaning of text"
-                },
                 "https://www.googleapis.com/auth/cloud-platform": {
                     "description": "View and manage your data across Google Cloud Platform services"
+                },
+                "https://www.googleapis.com/auth/cloud-language": {
+                    "description": "Apply machine learning models to reveal the structure and meaning of text"
                 }
             }
         }
@@ -28,27 +28,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -60,13 +39,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
@@ -113,30 +92,33 @@
             "description": "OAuth access token.",
             "location": "query",
             "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
         "documents": {
             "methods": {
-                "analyzeEntities": {
-                    "description": "Finds named entities (currently proper names and common nouns) in the text\nalong with entity types, salience, mentions for each entity, and\nother properties.",
-                    "httpMethod": "POST",
-                    "id": "language.documents.analyzeEntities",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/documents:analyzeEntities",
-                    "request": {
-                        "$ref": "AnalyzeEntitiesRequest"
-                    },
-                    "response": {
-                        "$ref": "AnalyzeEntitiesResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-language",
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
                 "analyzeSyntax": {
                     "description": "Analyzes the syntax of the text and provides sentence boundaries and\ntokenization along with part of speech tags, dependency trees, and other\nproperties.",
                     "httpMethod": "POST",
@@ -208,376 +190,31 @@
                         "https://www.googleapis.com/auth/cloud-language",
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
+                },
+                "analyzeEntities": {
+                    "description": "Finds named entities (currently proper names and common nouns) in the text\nalong with entity types, salience, mentions for each entity, and\nother properties.",
+                    "httpMethod": "POST",
+                    "id": "language.documents.analyzeEntities",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/documents:analyzeEntities",
+                    "request": {
+                        "$ref": "AnalyzeEntitiesRequest"
+                    },
+                    "response": {
+                        "$ref": "AnalyzeEntitiesResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-language",
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
                 }
             }
         }
     },
-    "revision": "20171003",
+    "revision": "20171016",
     "rootUrl": "https://language.googleapis.com/",
     "schemas": {
-        "Entity": {
-            "description": "Represents a phrase in the text that is a known entity, such as\na person, an organization, or location. The API associates information, such\nas salience and mentions, with entities.",
-            "id": "Entity",
-            "properties": {
-                "name": {
-                    "description": "The representative name for the entity.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The entity type.",
-                    "enum": [
-                        "UNKNOWN",
-                        "PERSON",
-                        "LOCATION",
-                        "ORGANIZATION",
-                        "EVENT",
-                        "WORK_OF_ART",
-                        "CONSUMER_GOOD",
-                        "OTHER"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown",
-                        "Person",
-                        "Location",
-                        "Organization",
-                        "Event",
-                        "Work of art",
-                        "Consumer goods",
-                        "Other types"
-                    ],
-                    "type": "string"
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Metadata associated with the entity.\n\nCurrently, Wikipedia URLs and Knowledge Graph MIDs are provided, if\navailable. The associated keys are \"wikipedia_url\" and \"mid\", respectively.",
-                    "type": "object"
-                },
-                "salience": {
-                    "description": "The salience score associated with the entity in the [0, 1.0] range.\n\nThe salience score for an entity provides information about the\nimportance or centrality of that entity to the entire document text.\nScores closer to 0 are less salient, while scores closer to 1.0 are highly\nsalient.",
-                    "format": "float",
-                    "type": "number"
-                },
-                "sentiment": {
-                    "$ref": "Sentiment",
-                    "description": "For calls to AnalyzeEntitySentiment or if\nAnnotateTextRequest.Features.extract_entity_sentiment is set to\ntrue, this field will contain the aggregate sentiment expressed for this\nentity in the provided document."
-                },
-                "mentions": {
-                    "description": "The mentions of this entity in the input document. The API currently\nsupports proper noun mentions.",
-                    "items": {
-                        "$ref": "EntityMention"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AnalyzeSyntaxResponse": {
-            "description": "The syntax analysis response message.",
-            "id": "AnalyzeSyntaxResponse",
-            "properties": {
-                "language": {
-                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
-                    "type": "string"
-                },
-                "sentences": {
-                    "description": "Sentences in the input document.",
-                    "items": {
-                        "$ref": "Sentence"
-                    },
-                    "type": "array"
-                },
-                "tokens": {
-                    "description": "Tokens, along with their syntactic information, in the input document.",
-                    "items": {
-                        "$ref": "Token"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AnnotateTextRequest": {
-            "description": "The request message for the text annotation API, which can perform multiple\nanalysis types (sentiment, entities, and syntax) in one call.",
-            "id": "AnnotateTextRequest",
-            "properties": {
-                "features": {
-                    "$ref": "Features",
-                    "description": "The enabled features."
-                },
-                "encodingType": {
-                    "description": "The encoding type used by the API to calculate offsets.",
-                    "enum": [
-                        "NONE",
-                        "UTF8",
-                        "UTF16",
-                        "UTF32"
-                    ],
-                    "enumDescriptions": [
-                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
-                    ],
-                    "type": "string"
-                },
-                "document": {
-                    "$ref": "Document",
-                    "description": "Input document."
-                }
-            },
-            "type": "object"
-        },
-        "AnalyzeSentimentRequest": {
-            "description": "The sentiment analysis request message.",
-            "id": "AnalyzeSentimentRequest",
-            "properties": {
-                "encodingType": {
-                    "description": "The encoding type used by the API to calculate sentence offsets.",
-                    "enum": [
-                        "NONE",
-                        "UTF8",
-                        "UTF16",
-                        "UTF32"
-                    ],
-                    "enumDescriptions": [
-                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
-                    ],
-                    "type": "string"
-                },
-                "document": {
-                    "$ref": "Document",
-                    "description": "Input document."
-                }
-            },
-            "type": "object"
-        },
-        "AnnotateTextResponse": {
-            "description": "The text annotations response message.",
-            "id": "AnnotateTextResponse",
-            "properties": {
-                "documentSentiment": {
-                    "$ref": "Sentiment",
-                    "description": "The overall sentiment for the document. Populated if the user enables\nAnnotateTextRequest.Features.extract_document_sentiment."
-                },
-                "language": {
-                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
-                    "type": "string"
-                },
-                "sentences": {
-                    "description": "Sentences in the input document. Populated if the user enables\nAnnotateTextRequest.Features.extract_syntax.",
-                    "items": {
-                        "$ref": "Sentence"
-                    },
-                    "type": "array"
-                },
-                "tokens": {
-                    "description": "Tokens, along with their syntactic information, in the input document.\nPopulated if the user enables\nAnnotateTextRequest.Features.extract_syntax.",
-                    "items": {
-                        "$ref": "Token"
-                    },
-                    "type": "array"
-                },
-                "entities": {
-                    "description": "Entities, along with their semantic information, in the input document.\nPopulated if the user enables\nAnnotateTextRequest.Features.extract_entities.",
-                    "items": {
-                        "$ref": "Entity"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "DependencyEdge": {
-            "description": "Represents dependency parse tree information for a token. (For more\ninformation on dependency labels, see\nhttp://www.aclweb.org/anthology/P13-2017",
-            "id": "DependencyEdge",
-            "properties": {
-                "headTokenIndex": {
-                    "description": "Represents the head of this token in the dependency tree.\nThis is the index of the token which has an arc going to this token.\nThe index is the position of the token in the array of tokens returned\nby the API method. If this token is a root token, then the\n`head_token_index` is its own index.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "label": {
-                    "description": "The parse label for the token.",
-                    "enum": [
-                        "UNKNOWN",
-                        "ABBREV",
-                        "ACOMP",
-                        "ADVCL",
-                        "ADVMOD",
-                        "AMOD",
-                        "APPOS",
-                        "ATTR",
-                        "AUX",
-                        "AUXPASS",
-                        "CC",
-                        "CCOMP",
-                        "CONJ",
-                        "CSUBJ",
-                        "CSUBJPASS",
-                        "DEP",
-                        "DET",
-                        "DISCOURSE",
-                        "DOBJ",
-                        "EXPL",
-                        "GOESWITH",
-                        "IOBJ",
-                        "MARK",
-                        "MWE",
-                        "MWV",
-                        "NEG",
-                        "NN",
-                        "NPADVMOD",
-                        "NSUBJ",
-                        "NSUBJPASS",
-                        "NUM",
-                        "NUMBER",
-                        "P",
-                        "PARATAXIS",
-                        "PARTMOD",
-                        "PCOMP",
-                        "POBJ",
-                        "POSS",
-                        "POSTNEG",
-                        "PRECOMP",
-                        "PRECONJ",
-                        "PREDET",
-                        "PREF",
-                        "PREP",
-                        "PRONL",
-                        "PRT",
-                        "PS",
-                        "QUANTMOD",
-                        "RCMOD",
-                        "RCMODREL",
-                        "RDROP",
-                        "REF",
-                        "REMNANT",
-                        "REPARANDUM",
-                        "ROOT",
-                        "SNUM",
-                        "SUFF",
-                        "TMOD",
-                        "TOPIC",
-                        "VMOD",
-                        "VOCATIVE",
-                        "XCOMP",
-                        "SUFFIX",
-                        "TITLE",
-                        "ADVPHMOD",
-                        "AUXCAUS",
-                        "AUXVV",
-                        "DTMOD",
-                        "FOREIGN",
-                        "KW",
-                        "LIST",
-                        "NOMC",
-                        "NOMCSUBJ",
-                        "NOMCSUBJPASS",
-                        "NUMC",
-                        "COP",
-                        "DISLOCATED",
-                        "ASP",
-                        "GMOD",
-                        "GOBJ",
-                        "INFMOD",
-                        "MES",
-                        "NCOMP"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown",
-                        "Abbreviation modifier",
-                        "Adjectival complement",
-                        "Adverbial clause modifier",
-                        "Adverbial modifier",
-                        "Adjectival modifier of an NP",
-                        "Appositional modifier of an NP",
-                        "Attribute dependent of a copular verb",
-                        "Auxiliary (non-main) verb",
-                        "Passive auxiliary",
-                        "Coordinating conjunction",
-                        "Clausal complement of a verb or adjective",
-                        "Conjunct",
-                        "Clausal subject",
-                        "Clausal passive subject",
-                        "Dependency (unable to determine)",
-                        "Determiner",
-                        "Discourse",
-                        "Direct object",
-                        "Expletive",
-                        "Goes with (part of a word in a text not well edited)",
-                        "Indirect object",
-                        "Marker (word introducing a subordinate clause)",
-                        "Multi-word expression",
-                        "Multi-word verbal expression",
-                        "Negation modifier",
-                        "Noun compound modifier",
-                        "Noun phrase used as an adverbial modifier",
-                        "Nominal subject",
-                        "Passive nominal subject",
-                        "Numeric modifier of a noun",
-                        "Element of compound number",
-                        "Punctuation mark",
-                        "Parataxis relation",
-                        "Participial modifier",
-                        "The complement of a preposition is a clause",
-                        "Object of a preposition",
-                        "Possession modifier",
-                        "Postverbal negative particle",
-                        "Predicate complement",
-                        "Preconjunt",
-                        "Predeterminer",
-                        "Prefix",
-                        "Prepositional modifier",
-                        "The relationship between a verb and verbal morpheme",
-                        "Particle",
-                        "Associative or possessive marker",
-                        "Quantifier phrase modifier",
-                        "Relative clause modifier",
-                        "Complementizer in relative clause",
-                        "Ellipsis without a preceding predicate",
-                        "Referent",
-                        "Remnant",
-                        "Reparandum",
-                        "Root",
-                        "Suffix specifying a unit of number",
-                        "Suffix",
-                        "Temporal modifier",
-                        "Topic marker",
-                        "Clause headed by an infinite form of the verb that modifies a noun",
-                        "Vocative",
-                        "Open clausal complement",
-                        "Name suffix",
-                        "Name title",
-                        "Adverbial phrase modifier",
-                        "Causative auxiliary",
-                        "Helper auxiliary",
-                        "Rentaishi (Prenominal modifier)",
-                        "Foreign words",
-                        "Keyword",
-                        "List for chains of comparable items",
-                        "Nominalized clause",
-                        "Nominalized clausal subject",
-                        "Nominalized clausal passive",
-                        "Compound of numeric modifier",
-                        "Copula",
-                        "Dislocated relation (for fronted/topicalized elements)",
-                        "Aspect marker",
-                        "Genitive modifier",
-                        "Genitive object",
-                        "Infinitival modifier",
-                        "Measure",
-                        "Nominal complement of a noun"
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "TextSpan": {
             "description": "Represents an output piece of text.",
             "id": "TextSpan",
@@ -598,6 +235,10 @@
             "description": "Represents the smallest syntactic building block of the text.",
             "id": "Token",
             "properties": {
+                "partOfSpeech": {
+                    "$ref": "PartOfSpeech",
+                    "description": "Parts of speech tag for this token."
+                },
                 "dependencyEdge": {
                     "$ref": "DependencyEdge",
                     "description": "Dependency tree parse for this token."
@@ -609,10 +250,6 @@
                 "lemma": {
                     "description": "[Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.",
                     "type": "string"
-                },
-                "partOfSpeech": {
-                    "$ref": "PartOfSpeech",
-                    "description": "Parts of speech tag for this token."
                 }
             },
             "type": "object"
@@ -621,6 +258,15 @@
             "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
             "id": "Status",
             "properties": {
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
                 "details": {
                     "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
                     "items": {
@@ -631,15 +277,6 @@
                         "type": "object"
                     },
                     "type": "array"
-                },
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -648,10 +285,6 @@
             "description": "Represents a mention for an entity in the text. Currently, proper noun\nmentions are supported.",
             "id": "EntityMention",
             "properties": {
-                "sentiment": {
-                    "$ref": "Sentiment",
-                    "description": "For calls to AnalyzeEntitySentiment or if\nAnnotateTextRequest.Features.extract_entity_sentiment is set to\ntrue, this field will contain the sentiment expressed for this mention of\nthe entity in the provided document."
-                },
                 "type": {
                     "description": "The type of the entity mention.",
                     "enum": [
@@ -669,6 +302,10 @@
                 "text": {
                     "$ref": "TextSpan",
                     "description": "The mention text."
+                },
+                "sentiment": {
+                    "$ref": "Sentiment",
+                    "description": "For calls to AnalyzeEntitySentiment or if\nAnnotateTextRequest.Features.extract_entity_sentiment is set to\ntrue, this field will contain the sentiment expressed for this mention of\nthe entity in the provided document."
                 }
             },
             "type": "object"
@@ -733,13 +370,13 @@
             "description": "Represents a sentence in the input document.",
             "id": "Sentence",
             "properties": {
-                "sentiment": {
-                    "$ref": "Sentiment",
-                    "description": "For calls to AnalyzeSentiment or if\nAnnotateTextRequest.Features.extract_document_sentiment is set to\ntrue, this field will contain the sentiment for the sentence."
-                },
                 "text": {
                     "$ref": "TextSpan",
                     "description": "The sentence text."
+                },
+                "sentiment": {
+                    "$ref": "Sentiment",
+                    "description": "For calls to AnalyzeSentiment or if\nAnnotateTextRequest.Features.extract_document_sentiment is set to\ntrue, this field will contain the sentiment for the sentence."
                 }
             },
             "type": "object"
@@ -1131,10 +768,6 @@
             "description": "The sentiment analysis response message.",
             "id": "AnalyzeSentimentResponse",
             "properties": {
-                "documentSentiment": {
-                    "$ref": "Sentiment",
-                    "description": "The overall sentiment of the input document."
-                },
                 "language": {
                     "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
                     "type": "string"
@@ -1145,6 +778,10 @@
                         "$ref": "Sentence"
                     },
                     "type": "array"
+                },
+                "documentSentiment": {
+                    "$ref": "Sentiment",
+                    "description": "The overall sentiment of the input document."
                 }
             },
             "type": "object"
@@ -1153,16 +790,379 @@
             "description": "The entity analysis response message.",
             "id": "AnalyzeEntitiesResponse",
             "properties": {
+                "language": {
+                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
+                    "type": "string"
+                },
                 "entities": {
                     "description": "The recognized entities in the input document.",
                     "items": {
                         "$ref": "Entity"
                     },
                     "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Entity": {
+            "description": "Represents a phrase in the text that is a known entity, such as\na person, an organization, or location. The API associates information, such\nas salience and mentions, with entities.",
+            "id": "Entity",
+            "properties": {
+                "name": {
+                    "description": "The representative name for the entity.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The entity type.",
+                    "enum": [
+                        "UNKNOWN",
+                        "PERSON",
+                        "LOCATION",
+                        "ORGANIZATION",
+                        "EVENT",
+                        "WORK_OF_ART",
+                        "CONSUMER_GOOD",
+                        "OTHER"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown",
+                        "Person",
+                        "Location",
+                        "Organization",
+                        "Event",
+                        "Work of art",
+                        "Consumer goods",
+                        "Other types"
+                    ],
+                    "type": "string"
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Metadata associated with the entity.\n\nCurrently, Wikipedia URLs and Knowledge Graph MIDs are provided, if\navailable. The associated keys are \"wikipedia_url\" and \"mid\", respectively.",
+                    "type": "object"
+                },
+                "salience": {
+                    "description": "The salience score associated with the entity in the [0, 1.0] range.\n\nThe salience score for an entity provides information about the\nimportance or centrality of that entity to the entire document text.\nScores closer to 0 are less salient, while scores closer to 1.0 are highly\nsalient.",
+                    "format": "float",
+                    "type": "number"
+                },
+                "sentiment": {
+                    "$ref": "Sentiment",
+                    "description": "For calls to AnalyzeEntitySentiment or if\nAnnotateTextRequest.Features.extract_entity_sentiment is set to\ntrue, this field will contain the aggregate sentiment expressed for this\nentity in the provided document."
+                },
+                "mentions": {
+                    "description": "The mentions of this entity in the input document. The API currently\nsupports proper noun mentions.",
+                    "items": {
+                        "$ref": "EntityMention"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AnalyzeSyntaxResponse": {
+            "description": "The syntax analysis response message.",
+            "id": "AnalyzeSyntaxResponse",
+            "properties": {
+                "tokens": {
+                    "description": "Tokens, along with their syntactic information, in the input document.",
+                    "items": {
+                        "$ref": "Token"
+                    },
+                    "type": "array"
                 },
                 "language": {
                     "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
                     "type": "string"
+                },
+                "sentences": {
+                    "description": "Sentences in the input document.",
+                    "items": {
+                        "$ref": "Sentence"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AnnotateTextRequest": {
+            "description": "The request message for the text annotation API, which can perform multiple\nanalysis types (sentiment, entities, and syntax) in one call.",
+            "id": "AnnotateTextRequest",
+            "properties": {
+                "features": {
+                    "$ref": "Features",
+                    "description": "The enabled features."
+                },
+                "encodingType": {
+                    "description": "The encoding type used by the API to calculate offsets.",
+                    "enum": [
+                        "NONE",
+                        "UTF8",
+                        "UTF16",
+                        "UTF32"
+                    ],
+                    "enumDescriptions": [
+                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
+                    ],
+                    "type": "string"
+                },
+                "document": {
+                    "$ref": "Document",
+                    "description": "Input document."
+                }
+            },
+            "type": "object"
+        },
+        "AnalyzeSentimentRequest": {
+            "description": "The sentiment analysis request message.",
+            "id": "AnalyzeSentimentRequest",
+            "properties": {
+                "encodingType": {
+                    "description": "The encoding type used by the API to calculate sentence offsets.",
+                    "enum": [
+                        "NONE",
+                        "UTF8",
+                        "UTF16",
+                        "UTF32"
+                    ],
+                    "enumDescriptions": [
+                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
+                    ],
+                    "type": "string"
+                },
+                "document": {
+                    "$ref": "Document",
+                    "description": "Input document."
+                }
+            },
+            "type": "object"
+        },
+        "AnnotateTextResponse": {
+            "description": "The text annotations response message.",
+            "id": "AnnotateTextResponse",
+            "properties": {
+                "language": {
+                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
+                    "type": "string"
+                },
+                "sentences": {
+                    "description": "Sentences in the input document. Populated if the user enables\nAnnotateTextRequest.Features.extract_syntax.",
+                    "items": {
+                        "$ref": "Sentence"
+                    },
+                    "type": "array"
+                },
+                "tokens": {
+                    "description": "Tokens, along with their syntactic information, in the input document.\nPopulated if the user enables\nAnnotateTextRequest.Features.extract_syntax.",
+                    "items": {
+                        "$ref": "Token"
+                    },
+                    "type": "array"
+                },
+                "entities": {
+                    "description": "Entities, along with their semantic information, in the input document.\nPopulated if the user enables\nAnnotateTextRequest.Features.extract_entities.",
+                    "items": {
+                        "$ref": "Entity"
+                    },
+                    "type": "array"
+                },
+                "documentSentiment": {
+                    "$ref": "Sentiment",
+                    "description": "The overall sentiment for the document. Populated if the user enables\nAnnotateTextRequest.Features.extract_document_sentiment."
+                }
+            },
+            "type": "object"
+        },
+        "DependencyEdge": {
+            "description": "Represents dependency parse tree information for a token. (For more\ninformation on dependency labels, see\nhttp://www.aclweb.org/anthology/P13-2017",
+            "id": "DependencyEdge",
+            "properties": {
+                "label": {
+                    "description": "The parse label for the token.",
+                    "enum": [
+                        "UNKNOWN",
+                        "ABBREV",
+                        "ACOMP",
+                        "ADVCL",
+                        "ADVMOD",
+                        "AMOD",
+                        "APPOS",
+                        "ATTR",
+                        "AUX",
+                        "AUXPASS",
+                        "CC",
+                        "CCOMP",
+                        "CONJ",
+                        "CSUBJ",
+                        "CSUBJPASS",
+                        "DEP",
+                        "DET",
+                        "DISCOURSE",
+                        "DOBJ",
+                        "EXPL",
+                        "GOESWITH",
+                        "IOBJ",
+                        "MARK",
+                        "MWE",
+                        "MWV",
+                        "NEG",
+                        "NN",
+                        "NPADVMOD",
+                        "NSUBJ",
+                        "NSUBJPASS",
+                        "NUM",
+                        "NUMBER",
+                        "P",
+                        "PARATAXIS",
+                        "PARTMOD",
+                        "PCOMP",
+                        "POBJ",
+                        "POSS",
+                        "POSTNEG",
+                        "PRECOMP",
+                        "PRECONJ",
+                        "PREDET",
+                        "PREF",
+                        "PREP",
+                        "PRONL",
+                        "PRT",
+                        "PS",
+                        "QUANTMOD",
+                        "RCMOD",
+                        "RCMODREL",
+                        "RDROP",
+                        "REF",
+                        "REMNANT",
+                        "REPARANDUM",
+                        "ROOT",
+                        "SNUM",
+                        "SUFF",
+                        "TMOD",
+                        "TOPIC",
+                        "VMOD",
+                        "VOCATIVE",
+                        "XCOMP",
+                        "SUFFIX",
+                        "TITLE",
+                        "ADVPHMOD",
+                        "AUXCAUS",
+                        "AUXVV",
+                        "DTMOD",
+                        "FOREIGN",
+                        "KW",
+                        "LIST",
+                        "NOMC",
+                        "NOMCSUBJ",
+                        "NOMCSUBJPASS",
+                        "NUMC",
+                        "COP",
+                        "DISLOCATED",
+                        "ASP",
+                        "GMOD",
+                        "GOBJ",
+                        "INFMOD",
+                        "MES",
+                        "NCOMP"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown",
+                        "Abbreviation modifier",
+                        "Adjectival complement",
+                        "Adverbial clause modifier",
+                        "Adverbial modifier",
+                        "Adjectival modifier of an NP",
+                        "Appositional modifier of an NP",
+                        "Attribute dependent of a copular verb",
+                        "Auxiliary (non-main) verb",
+                        "Passive auxiliary",
+                        "Coordinating conjunction",
+                        "Clausal complement of a verb or adjective",
+                        "Conjunct",
+                        "Clausal subject",
+                        "Clausal passive subject",
+                        "Dependency (unable to determine)",
+                        "Determiner",
+                        "Discourse",
+                        "Direct object",
+                        "Expletive",
+                        "Goes with (part of a word in a text not well edited)",
+                        "Indirect object",
+                        "Marker (word introducing a subordinate clause)",
+                        "Multi-word expression",
+                        "Multi-word verbal expression",
+                        "Negation modifier",
+                        "Noun compound modifier",
+                        "Noun phrase used as an adverbial modifier",
+                        "Nominal subject",
+                        "Passive nominal subject",
+                        "Numeric modifier of a noun",
+                        "Element of compound number",
+                        "Punctuation mark",
+                        "Parataxis relation",
+                        "Participial modifier",
+                        "The complement of a preposition is a clause",
+                        "Object of a preposition",
+                        "Possession modifier",
+                        "Postverbal negative particle",
+                        "Predicate complement",
+                        "Preconjunt",
+                        "Predeterminer",
+                        "Prefix",
+                        "Prepositional modifier",
+                        "The relationship between a verb and verbal morpheme",
+                        "Particle",
+                        "Associative or possessive marker",
+                        "Quantifier phrase modifier",
+                        "Relative clause modifier",
+                        "Complementizer in relative clause",
+                        "Ellipsis without a preceding predicate",
+                        "Referent",
+                        "Remnant",
+                        "Reparandum",
+                        "Root",
+                        "Suffix specifying a unit of number",
+                        "Suffix",
+                        "Temporal modifier",
+                        "Topic marker",
+                        "Clause headed by an infinite form of the verb that modifies a noun",
+                        "Vocative",
+                        "Open clausal complement",
+                        "Name suffix",
+                        "Name title",
+                        "Adverbial phrase modifier",
+                        "Causative auxiliary",
+                        "Helper auxiliary",
+                        "Rentaishi (Prenominal modifier)",
+                        "Foreign words",
+                        "Keyword",
+                        "List for chains of comparable items",
+                        "Nominalized clause",
+                        "Nominalized clausal subject",
+                        "Nominalized clausal passive",
+                        "Compound of numeric modifier",
+                        "Copula",
+                        "Dislocated relation (for fronted/topicalized elements)",
+                        "Aspect marker",
+                        "Genitive modifier",
+                        "Genitive object",
+                        "Infinitival modifier",
+                        "Measure",
+                        "Nominal complement of a noun"
+                    ],
+                    "type": "string"
+                },
+                "headTokenIndex": {
+                    "description": "Represents the head of this token in the dependency tree.\nThis is the index of the token which has an arc going to this token.\nThe index is the position of the token in the array of tokens returned\nby the API method. If this token is a root token, then the\n`head_token_index` is its own index.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/logging__v2.json b/discovery/googleapis/logging__v2.json
index 37447c1..9bdc604 100644
--- a/discovery/googleapis/logging__v2.json
+++ b/discovery/googleapis/logging__v2.json
@@ -2,20 +2,20 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/logging.write": {
-                    "description": "Submit log data for your projects"
-                },
-                "https://www.googleapis.com/auth/logging.read": {
-                    "description": "View log data for your projects"
-                },
-                "https://www.googleapis.com/auth/logging.admin": {
-                    "description": "Administrate log data for your projects"
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "View and manage your data across Google Cloud Platform services"
                 },
                 "https://www.googleapis.com/auth/cloud-platform.read-only": {
                     "description": "View your data across Google Cloud Platform services"
                 },
-                "https://www.googleapis.com/auth/cloud-platform": {
-                    "description": "View and manage your data across Google Cloud Platform services"
+                "https://www.googleapis.com/auth/logging.admin": {
+                    "description": "Administrate log data for your projects"
+                },
+                "https://www.googleapis.com/auth/logging.read": {
+                    "description": "View log data for your projects"
+                },
+                "https://www.googleapis.com/auth/logging.write": {
+                    "description": "Submit log data for your projects"
                 }
             }
         }
@@ -48,13 +48,18 @@
             "location": "query",
             "type": "boolean"
         },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
         "fields": {
             "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "callback": {
+            "description": "JSONP",
             "location": "query",
             "type": "string"
         },
@@ -71,11 +76,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -126,8 +126,1092 @@
     },
     "protocol": "rest",
     "resources": {
+        "projects": {
+            "resources": {
+                "logs": {
+                    "methods": {
+                        "delete": {
+                            "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.",
+                            "httpMethod": "DELETE",
+                            "id": "logging.projects.logs.delete",
+                            "parameterOrder": [
+                                "logName"
+                            ],
+                            "parameters": {
+                                "logName": {
+                                    "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/logs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+logName}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.",
+                            "httpMethod": "GET",
+                            "id": "logging.projects.logs.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v2/{+parent}/logs",
+                            "response": {
+                                "$ref": "ListLogsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        }
+                    }
+                },
+                "sinks": {
+                    "methods": {
+                        "create": {
+                            "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.",
+                            "httpMethod": "POST",
+                            "id": "logging.projects.sinks.create",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The resource in which to create the sink:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "uniqueWriterIdentity": {
+                                    "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Stackdriver Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                }
+                            },
+                            "path": "v2/{+parent}/sinks",
+                            "request": {
+                                "$ref": "LogSink"
+                            },
+                            "response": {
+                                "$ref": "LogSink"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets a sink.",
+                            "httpMethod": "GET",
+                            "id": "logging.projects.sinks.get",
+                            "parameterOrder": [
+                                "sinkName"
+                            ],
+                            "parameters": {
+                                "sinkName": {
+                                    "description": "Required. The resource name of the sink:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/sinks/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+sinkName}",
+                            "response": {
+                                "$ref": "LogSink"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
+                        "patch": {
+                            "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter. The updated sink might also have a new writer_identity; see the unique_writer_identity field.",
+                            "httpMethod": "PATCH",
+                            "id": "logging.projects.sinks.patch",
+                            "parameterOrder": [
+                                "sinkName"
+                            ],
+                            "parameters": {
+                                "sinkName": {
+                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/sinks/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "uniqueWriterIdentity": {
+                                    "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
+                                "updateMask": {
+                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+sinkName}",
+                            "request": {
+                                "$ref": "LogSink"
+                            },
+                            "response": {
+                                "$ref": "LogSink"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "update": {
+                            "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter. The updated sink might also have a new writer_identity; see the unique_writer_identity field.",
+                            "httpMethod": "PUT",
+                            "id": "logging.projects.sinks.update",
+                            "parameterOrder": [
+                                "sinkName"
+                            ],
+                            "parameters": {
+                                "sinkName": {
+                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/sinks/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "uniqueWriterIdentity": {
+                                    "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
+                                "updateMask": {
+                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+sinkName}",
+                            "request": {
+                                "$ref": "LogSink"
+                            },
+                            "response": {
+                                "$ref": "LogSink"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "delete": {
+                            "description": "Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.",
+                            "httpMethod": "DELETE",
+                            "id": "logging.projects.sinks.delete",
+                            "parameterOrder": [
+                                "sinkName"
+                            ],
+                            "parameters": {
+                                "sinkName": {
+                                    "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/sinks/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+sinkName}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists sinks.",
+                            "httpMethod": "GET",
+                            "id": "logging.projects.sinks.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "pageToken": {
+                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "parent": {
+                                    "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+parent}/sinks",
+                            "response": {
+                                "$ref": "ListSinksResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        }
+                    }
+                },
+                "exclusions": {
+                    "methods": {
+                        "delete": {
+                            "description": "Deletes an exclusion.",
+                            "httpMethod": "DELETE",
+                            "id": "logging.projects.exclusions.delete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The resource name of an existing exclusion to delete:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/exclusions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+name}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists all the exclusions in a parent resource.",
+                            "httpMethod": "GET",
+                            "id": "logging.projects.exclusions.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "pageToken": {
+                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "parent": {
+                                    "description": "Required. The parent resource whose exclusions are to be listed.\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+parent}/exclusions",
+                            "response": {
+                                "$ref": "ListExclusionsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets the description of an exclusion.",
+                            "httpMethod": "GET",
+                            "id": "logging.projects.exclusions.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/exclusions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+name}",
+                            "response": {
+                                "$ref": "LogExclusion"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
+                        "patch": {
+                            "description": "Changes one or more properties of an existing exclusion.",
+                            "httpMethod": "PATCH",
+                            "id": "logging.projects.exclusions.patch",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The resource name of the exclusion to update:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/exclusions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "updateMask": {
+                                    "description": "Required. A nonempty list of fields to change in the existing exclusion. New values for the fields are taken from the corresponding fields in the LogExclusion included in this request. Fields not mentioned in update_mask are not changed and are ignored in the request.For example, to change the filter and description of an exclusion, specify an update_mask of \"filter,description\".",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+name}",
+                            "request": {
+                                "$ref": "LogExclusion"
+                            },
+                            "response": {
+                                "$ref": "LogExclusion"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "create": {
+                            "description": "Creates a new exclusion in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.",
+                            "httpMethod": "POST",
+                            "id": "logging.projects.exclusions.create",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The parent resource in which to create the exclusion:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+parent}/exclusions",
+                            "request": {
+                                "$ref": "LogExclusion"
+                            },
+                            "response": {
+                                "$ref": "LogExclusion"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        }
+                    }
+                },
+                "metrics": {
+                    "methods": {
+                        "delete": {
+                            "description": "Deletes a logs-based metric.",
+                            "httpMethod": "DELETE",
+                            "id": "logging.projects.metrics.delete",
+                            "parameterOrder": [
+                                "metricName"
+                            ],
+                            "parameters": {
+                                "metricName": {
+                                    "description": "The resource name of the metric to delete:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/metrics/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+metricName}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.write"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists logs-based metrics.",
+                            "httpMethod": "GET",
+                            "id": "logging.projects.metrics.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The name of the project containing the metrics:\n\"projects/[PROJECT_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v2/{+parent}/metrics",
+                            "response": {
+                                "$ref": "ListLogMetricsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets a logs-based metric.",
+                            "httpMethod": "GET",
+                            "id": "logging.projects.metrics.get",
+                            "parameterOrder": [
+                                "metricName"
+                            ],
+                            "parameters": {
+                                "metricName": {
+                                    "description": "The resource name of the desired metric:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/metrics/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+metricName}",
+                            "response": {
+                                "$ref": "LogMetric"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
+                        "update": {
+                            "description": "Creates or updates a logs-based metric.",
+                            "httpMethod": "PUT",
+                            "id": "logging.projects.metrics.update",
+                            "parameterOrder": [
+                                "metricName"
+                            ],
+                            "parameters": {
+                                "metricName": {
+                                    "description": "The resource name of the metric to update:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\nThe updated metric must be provided in the request and it's name field must be the same as [METRIC_ID] If the metric does not exist in [PROJECT_ID], then a new metric is created.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/metrics/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+metricName}",
+                            "request": {
+                                "$ref": "LogMetric"
+                            },
+                            "response": {
+                                "$ref": "LogMetric"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.write"
+                            ]
+                        },
+                        "create": {
+                            "description": "Creates a logs-based metric.",
+                            "httpMethod": "POST",
+                            "id": "logging.projects.metrics.create",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "The resource name of the project in which to create the metric:\n\"projects/[PROJECT_ID]\"\nThe new metric must be provided in the request.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+parent}/metrics",
+                            "request": {
+                                "$ref": "LogMetric"
+                            },
+                            "response": {
+                                "$ref": "LogMetric"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.write"
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        "billingAccounts": {
+            "resources": {
+                "logs": {
+                    "methods": {
+                        "delete": {
+                            "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.",
+                            "httpMethod": "DELETE",
+                            "id": "logging.billingAccounts.logs.delete",
+                            "parameterOrder": [
+                                "logName"
+                            ],
+                            "parameters": {
+                                "logName": {
+                                    "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.",
+                                    "location": "path",
+                                    "pattern": "^billingAccounts/[^/]+/logs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+logName}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.",
+                            "httpMethod": "GET",
+                            "id": "logging.billingAccounts.logs.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "pageToken": {
+                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "parent": {
+                                    "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^billingAccounts/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+parent}/logs",
+                            "response": {
+                                "$ref": "ListLogsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        }
+                    }
+                },
+                "sinks": {
+                    "methods": {
+                        "delete": {
+                            "description": "Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.",
+                            "httpMethod": "DELETE",
+                            "id": "logging.billingAccounts.sinks.delete",
+                            "parameterOrder": [
+                                "sinkName"
+                            ],
+                            "parameters": {
+                                "sinkName": {
+                                    "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
+                                    "location": "path",
+                                    "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+sinkName}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists sinks.",
+                            "httpMethod": "GET",
+                            "id": "logging.billingAccounts.sinks.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "pageToken": {
+                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "parent": {
+                                    "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^billingAccounts/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+parent}/sinks",
+                            "response": {
+                                "$ref": "ListSinksResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
+                        "create": {
+                            "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.",
+                            "httpMethod": "POST",
+                            "id": "logging.billingAccounts.sinks.create",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The resource in which to create the sink:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".",
+                                    "location": "path",
+                                    "pattern": "^billingAccounts/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "uniqueWriterIdentity": {
+                                    "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Stackdriver Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                }
+                            },
+                            "path": "v2/{+parent}/sinks",
+                            "request": {
+                                "$ref": "LogSink"
+                            },
+                            "response": {
+                                "$ref": "LogSink"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets a sink.",
+                            "httpMethod": "GET",
+                            "id": "logging.billingAccounts.sinks.get",
+                            "parameterOrder": [
+                                "sinkName"
+                            ],
+                            "parameters": {
+                                "sinkName": {
+                                    "description": "Required. The resource name of the sink:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
+                                    "location": "path",
+                                    "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+sinkName}",
+                            "response": {
+                                "$ref": "LogSink"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
+                        "patch": {
+                            "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter. The updated sink might also have a new writer_identity; see the unique_writer_identity field.",
+                            "httpMethod": "PATCH",
+                            "id": "logging.billingAccounts.sinks.patch",
+                            "parameterOrder": [
+                                "sinkName"
+                            ],
+                            "parameters": {
+                                "sinkName": {
+                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
+                                    "location": "path",
+                                    "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "uniqueWriterIdentity": {
+                                    "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
+                                "updateMask": {
+                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+sinkName}",
+                            "request": {
+                                "$ref": "LogSink"
+                            },
+                            "response": {
+                                "$ref": "LogSink"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "update": {
+                            "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter. The updated sink might also have a new writer_identity; see the unique_writer_identity field.",
+                            "httpMethod": "PUT",
+                            "id": "logging.billingAccounts.sinks.update",
+                            "parameterOrder": [
+                                "sinkName"
+                            ],
+                            "parameters": {
+                                "sinkName": {
+                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
+                                    "location": "path",
+                                    "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "uniqueWriterIdentity": {
+                                    "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
+                                "updateMask": {
+                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+sinkName}",
+                            "request": {
+                                "$ref": "LogSink"
+                            },
+                            "response": {
+                                "$ref": "LogSink"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        }
+                    }
+                },
+                "exclusions": {
+                    "methods": {
+                        "create": {
+                            "description": "Creates a new exclusion in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.",
+                            "httpMethod": "POST",
+                            "id": "logging.billingAccounts.exclusions.create",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The parent resource in which to create the exclusion:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".",
+                                    "location": "path",
+                                    "pattern": "^billingAccounts/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+parent}/exclusions",
+                            "request": {
+                                "$ref": "LogExclusion"
+                            },
+                            "response": {
+                                "$ref": "LogExclusion"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "delete": {
+                            "description": "Deletes an exclusion.",
+                            "httpMethod": "DELETE",
+                            "id": "logging.billingAccounts.exclusions.delete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The resource name of an existing exclusion to delete:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
+                                    "location": "path",
+                                    "pattern": "^billingAccounts/[^/]+/exclusions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+name}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists all the exclusions in a parent resource.",
+                            "httpMethod": "GET",
+                            "id": "logging.billingAccounts.exclusions.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The parent resource whose exclusions are to be listed.\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^billingAccounts/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v2/{+parent}/exclusions",
+                            "response": {
+                                "$ref": "ListExclusionsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets the description of an exclusion.",
+                            "httpMethod": "GET",
+                            "id": "logging.billingAccounts.exclusions.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
+                                    "location": "path",
+                                    "pattern": "^billingAccounts/[^/]+/exclusions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+name}",
+                            "response": {
+                                "$ref": "LogExclusion"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
+                        "patch": {
+                            "description": "Changes one or more properties of an existing exclusion.",
+                            "httpMethod": "PATCH",
+                            "id": "logging.billingAccounts.exclusions.patch",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The resource name of the exclusion to update:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
+                                    "location": "path",
+                                    "pattern": "^billingAccounts/[^/]+/exclusions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "updateMask": {
+                                    "description": "Required. A nonempty list of fields to change in the existing exclusion. New values for the fields are taken from the corresponding fields in the LogExclusion included in this request. Fields not mentioned in update_mask are not changed and are ignored in the request.For example, to change the filter and description of an exclusion, specify an update_mask of \"filter,description\".",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+name}",
+                            "request": {
+                                "$ref": "LogExclusion"
+                            },
+                            "response": {
+                                "$ref": "LogExclusion"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        }
+                    }
+                }
+            }
+        },
         "folders": {
             "resources": {
+                "logs": {
+                    "methods": {
+                        "delete": {
+                            "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.",
+                            "httpMethod": "DELETE",
+                            "id": "logging.folders.logs.delete",
+                            "parameterOrder": [
+                                "logName"
+                            ],
+                            "parameters": {
+                                "logName": {
+                                    "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.",
+                                    "location": "path",
+                                    "pattern": "^folders/[^/]+/logs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+logName}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.",
+                            "httpMethod": "GET",
+                            "id": "logging.folders.logs.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "pageToken": {
+                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "parent": {
+                                    "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^folders/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+parent}/logs",
+                            "response": {
+                                "$ref": "ListLogsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        }
+                    }
+                },
                 "sinks": {
                     "methods": {
                         "delete": {
@@ -226,45 +1310,6 @@
                                 "https://www.googleapis.com/auth/logging.admin"
                             ]
                         },
-                        "patch": {
-                            "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter. The updated sink might also have a new writer_identity; see the unique_writer_identity field.",
-                            "httpMethod": "PATCH",
-                            "id": "logging.folders.sinks.patch",
-                            "parameterOrder": [
-                                "sinkName"
-                            ],
-                            "parameters": {
-                                "updateMask": {
-                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "uniqueWriterIdentity": {
-                                    "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
-                                "sinkName": {
-                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
-                                    "location": "path",
-                                    "pattern": "^folders/[^/]+/sinks/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+sinkName}",
-                            "request": {
-                                "$ref": "LogSink"
-                            },
-                            "response": {
-                                "$ref": "LogSink"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
                         "get": {
                             "description": "Gets a sink.",
                             "httpMethod": "GET",
@@ -292,18 +1337,19 @@
                                 "https://www.googleapis.com/auth/logging.read"
                             ]
                         },
-                        "update": {
+                        "patch": {
                             "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter. The updated sink might also have a new writer_identity; see the unique_writer_identity field.",
-                            "httpMethod": "PUT",
-                            "id": "logging.folders.sinks.update",
+                            "httpMethod": "PATCH",
+                            "id": "logging.folders.sinks.patch",
                             "parameterOrder": [
                                 "sinkName"
                             ],
                             "parameters": {
-                                "updateMask": {
-                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
+                                "sinkName": {
+                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
+                                    "location": "path",
+                                    "pattern": "^folders/[^/]+/sinks/[^/]+$",
+                                    "required": true,
                                     "type": "string"
                                 },
                                 "uniqueWriterIdentity": {
@@ -311,11 +1357,10 @@
                                     "location": "query",
                                     "type": "boolean"
                                 },
-                                "sinkName": {
-                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
-                                    "location": "path",
-                                    "pattern": "^folders/[^/]+/sinks/[^/]+$",
-                                    "required": true,
+                                "updateMask": {
+                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
                                     "type": "string"
                                 }
                             },
@@ -330,73 +1375,45 @@
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/logging.admin"
                             ]
-                        }
-                    }
-                },
-                "logs": {
-                    "methods": {
-                        "delete": {
-                            "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.",
-                            "httpMethod": "DELETE",
-                            "id": "logging.folders.logs.delete",
+                        },
+                        "update": {
+                            "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter. The updated sink might also have a new writer_identity; see the unique_writer_identity field.",
+                            "httpMethod": "PUT",
+                            "id": "logging.folders.sinks.update",
                             "parameterOrder": [
-                                "logName"
+                                "sinkName"
                             ],
                             "parameters": {
-                                "logName": {
-                                    "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.",
+                                "sinkName": {
+                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
                                     "location": "path",
-                                    "pattern": "^folders/[^/]+/logs/[^/]+$",
+                                    "pattern": "^folders/[^/]+/sinks/[^/]+$",
                                     "required": true,
                                     "type": "string"
+                                },
+                                "uniqueWriterIdentity": {
+                                    "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
+                                "updateMask": {
+                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
                                 }
                             },
-                            "path": "v2/{+logName}",
+                            "path": "v2/{+sinkName}",
+                            "request": {
+                                "$ref": "LogSink"
+                            },
                             "response": {
-                                "$ref": "Empty"
+                                "$ref": "LogSink"
                             },
                             "scopes": [
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/logging.admin"
                             ]
-                        },
-                        "list": {
-                            "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.",
-                            "httpMethod": "GET",
-                            "id": "logging.folders.logs.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "parent": {
-                                    "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^folders/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+parent}/logs",
-                            "response": {
-                                "$ref": "ListLogsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
                         }
                     }
                 },
@@ -455,6 +1472,71 @@
                                 "https://www.googleapis.com/auth/logging.admin"
                             ]
                         },
+                        "list": {
+                            "description": "Lists all the exclusions in a parent resource.",
+                            "httpMethod": "GET",
+                            "id": "logging.folders.exclusions.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The parent resource whose exclusions are to be listed.\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^folders/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v2/{+parent}/exclusions",
+                            "response": {
+                                "$ref": "ListExclusionsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets the description of an exclusion.",
+                            "httpMethod": "GET",
+                            "id": "logging.folders.exclusions.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
+                                    "location": "path",
+                                    "pattern": "^folders/[^/]+/exclusions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+name}",
+                            "response": {
+                                "$ref": "LogExclusion"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
                         "patch": {
                             "description": "Changes one or more properties of an existing exclusion.",
                             "httpMethod": "PATCH",
@@ -488,71 +1570,6 @@
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/logging.admin"
                             ]
-                        },
-                        "get": {
-                            "description": "Gets the description of an exclusion.",
-                            "httpMethod": "GET",
-                            "id": "logging.folders.exclusions.get",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
-                                    "location": "path",
-                                    "pattern": "^folders/[^/]+/exclusions/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+name}",
-                            "response": {
-                                "$ref": "LogExclusion"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists all the exclusions in a parent resource.",
-                            "httpMethod": "GET",
-                            "id": "logging.folders.exclusions.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "parent": {
-                                    "description": "Required. The parent resource whose exclusions are to be listed.\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^folders/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+parent}/exclusions",
-                            "response": {
-                                "$ref": "ListExclusionsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
                         }
                     }
                 }
@@ -593,211 +1610,6 @@
         },
         "organizations": {
             "resources": {
-                "sinks": {
-                    "methods": {
-                        "update": {
-                            "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter. The updated sink might also have a new writer_identity; see the unique_writer_identity field.",
-                            "httpMethod": "PUT",
-                            "id": "logging.organizations.sinks.update",
-                            "parameterOrder": [
-                                "sinkName"
-                            ],
-                            "parameters": {
-                                "updateMask": {
-                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "uniqueWriterIdentity": {
-                                    "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
-                                "sinkName": {
-                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
-                                    "location": "path",
-                                    "pattern": "^organizations/[^/]+/sinks/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+sinkName}",
-                            "request": {
-                                "$ref": "LogSink"
-                            },
-                            "response": {
-                                "$ref": "LogSink"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "delete": {
-                            "description": "Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.",
-                            "httpMethod": "DELETE",
-                            "id": "logging.organizations.sinks.delete",
-                            "parameterOrder": [
-                                "sinkName"
-                            ],
-                            "parameters": {
-                                "sinkName": {
-                                    "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
-                                    "location": "path",
-                                    "pattern": "^organizations/[^/]+/sinks/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+sinkName}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists sinks.",
-                            "httpMethod": "GET",
-                            "id": "logging.organizations.sinks.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "parent": {
-                                    "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^organizations/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+parent}/sinks",
-                            "response": {
-                                "$ref": "ListSinksResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        },
-                        "create": {
-                            "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.",
-                            "httpMethod": "POST",
-                            "id": "logging.organizations.sinks.create",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "parent": {
-                                    "description": "Required. The resource in which to create the sink:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".",
-                                    "location": "path",
-                                    "pattern": "^organizations/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "uniqueWriterIdentity": {
-                                    "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Stackdriver Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                }
-                            },
-                            "path": "v2/{+parent}/sinks",
-                            "request": {
-                                "$ref": "LogSink"
-                            },
-                            "response": {
-                                "$ref": "LogSink"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "patch": {
-                            "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter. The updated sink might also have a new writer_identity; see the unique_writer_identity field.",
-                            "httpMethod": "PATCH",
-                            "id": "logging.organizations.sinks.patch",
-                            "parameterOrder": [
-                                "sinkName"
-                            ],
-                            "parameters": {
-                                "updateMask": {
-                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "uniqueWriterIdentity": {
-                                    "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
-                                "sinkName": {
-                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
-                                    "location": "path",
-                                    "pattern": "^organizations/[^/]+/sinks/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+sinkName}",
-                            "request": {
-                                "$ref": "LogSink"
-                            },
-                            "response": {
-                                "$ref": "LogSink"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets a sink.",
-                            "httpMethod": "GET",
-                            "id": "logging.organizations.sinks.get",
-                            "parameterOrder": [
-                                "sinkName"
-                            ],
-                            "parameters": {
-                                "sinkName": {
-                                    "description": "Required. The resource name of the sink:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
-                                    "location": "path",
-                                    "pattern": "^organizations/[^/]+/sinks/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+sinkName}",
-                            "response": {
-                                "$ref": "LogSink"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        }
-                    }
-                },
                 "logs": {
                     "methods": {
                         "delete": {
@@ -865,6 +1677,211 @@
                         }
                     }
                 },
+                "sinks": {
+                    "methods": {
+                        "delete": {
+                            "description": "Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.",
+                            "httpMethod": "DELETE",
+                            "id": "logging.organizations.sinks.delete",
+                            "parameterOrder": [
+                                "sinkName"
+                            ],
+                            "parameters": {
+                                "sinkName": {
+                                    "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+/sinks/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+sinkName}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists sinks.",
+                            "httpMethod": "GET",
+                            "id": "logging.organizations.sinks.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v2/{+parent}/sinks",
+                            "response": {
+                                "$ref": "ListSinksResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
+                        "create": {
+                            "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.",
+                            "httpMethod": "POST",
+                            "id": "logging.organizations.sinks.create",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The resource in which to create the sink:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "uniqueWriterIdentity": {
+                                    "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Stackdriver Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                }
+                            },
+                            "path": "v2/{+parent}/sinks",
+                            "request": {
+                                "$ref": "LogSink"
+                            },
+                            "response": {
+                                "$ref": "LogSink"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets a sink.",
+                            "httpMethod": "GET",
+                            "id": "logging.organizations.sinks.get",
+                            "parameterOrder": [
+                                "sinkName"
+                            ],
+                            "parameters": {
+                                "sinkName": {
+                                    "description": "Required. The resource name of the sink:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+/sinks/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+sinkName}",
+                            "response": {
+                                "$ref": "LogSink"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
+                        "patch": {
+                            "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter. The updated sink might also have a new writer_identity; see the unique_writer_identity field.",
+                            "httpMethod": "PATCH",
+                            "id": "logging.organizations.sinks.patch",
+                            "parameterOrder": [
+                                "sinkName"
+                            ],
+                            "parameters": {
+                                "sinkName": {
+                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+/sinks/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "uniqueWriterIdentity": {
+                                    "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
+                                "updateMask": {
+                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+sinkName}",
+                            "request": {
+                                "$ref": "LogSink"
+                            },
+                            "response": {
+                                "$ref": "LogSink"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "update": {
+                            "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter. The updated sink might also have a new writer_identity; see the unique_writer_identity field.",
+                            "httpMethod": "PUT",
+                            "id": "logging.organizations.sinks.update",
+                            "parameterOrder": [
+                                "sinkName"
+                            ],
+                            "parameters": {
+                                "sinkName": {
+                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+/sinks/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "uniqueWriterIdentity": {
+                                    "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
+                                "updateMask": {
+                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+sinkName}",
+                            "request": {
+                                "$ref": "LogSink"
+                            },
+                            "response": {
+                                "$ref": "LogSink"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        }
+                    }
+                },
                 "exclusions": {
                     "methods": {
                         "delete": {
@@ -892,6 +1909,71 @@
                                 "https://www.googleapis.com/auth/logging.admin"
                             ]
                         },
+                        "list": {
+                            "description": "Lists all the exclusions in a parent resource.",
+                            "httpMethod": "GET",
+                            "id": "logging.organizations.exclusions.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The parent resource whose exclusions are to be listed.\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v2/{+parent}/exclusions",
+                            "response": {
+                                "$ref": "ListExclusionsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets the description of an exclusion.",
+                            "httpMethod": "GET",
+                            "id": "logging.organizations.exclusions.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+/exclusions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+name}",
+                            "response": {
+                                "$ref": "LogExclusion"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
                         "patch": {
                             "description": "Changes one or more properties of an existing exclusion.",
                             "httpMethod": "PATCH",
@@ -926,71 +2008,6 @@
                                 "https://www.googleapis.com/auth/logging.admin"
                             ]
                         },
-                        "get": {
-                            "description": "Gets the description of an exclusion.",
-                            "httpMethod": "GET",
-                            "id": "logging.organizations.exclusions.get",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
-                                    "location": "path",
-                                    "pattern": "^organizations/[^/]+/exclusions/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+name}",
-                            "response": {
-                                "$ref": "LogExclusion"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists all the exclusions in a parent resource.",
-                            "httpMethod": "GET",
-                            "id": "logging.organizations.exclusions.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "parent": {
-                                    "description": "Required. The parent resource whose exclusions are to be listed.\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^organizations/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+parent}/exclusions",
-                            "response": {
-                                "$ref": "ListExclusionsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        },
                         "create": {
                             "description": "Creates a new exclusion in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.",
                             "httpMethod": "POST",
@@ -1025,6 +2042,25 @@
         },
         "entries": {
             "methods": {
+                "write": {
+                    "description": "Log entry resourcesWrites log entries to Stackdriver Logging. This API method is the only way to send log entries to Stackdriver Logging. This method is used, directly or indirectly, by the Stackdriver Logging agent (fluentd) and all logging libraries configured to use Stackdriver Logging.",
+                    "httpMethod": "POST",
+                    "id": "logging.entries.write",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v2/entries:write",
+                    "request": {
+                        "$ref": "WriteLogEntriesRequest"
+                    },
+                    "response": {
+                        "$ref": "WriteLogEntriesResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/logging.admin",
+                        "https://www.googleapis.com/auth/logging.write"
+                    ]
+                },
                 "list": {
                     "description": "Lists log entries. Use this method to retrieve log entries from Stackdriver Logging. For ways to export log entries, see Exporting Logs.",
                     "httpMethod": "POST",
@@ -1044,1053 +2080,79 @@
                         "https://www.googleapis.com/auth/logging.admin",
                         "https://www.googleapis.com/auth/logging.read"
                     ]
-                },
-                "write": {
-                    "description": "Log entry resourcesWrites log entries to Stackdriver Logging. This API method is the only way to send log entries to Stackdriver Logging. This method is used, directly or indirectly, by the Stackdriver Logging agent (fluentd) and all logging libraries configured to use Stackdriver Logging.",
-                    "httpMethod": "POST",
-                    "id": "logging.entries.write",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v2/entries:write",
-                    "request": {
-                        "$ref": "WriteLogEntriesRequest"
-                    },
-                    "response": {
-                        "$ref": "WriteLogEntriesResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/logging.admin",
-                        "https://www.googleapis.com/auth/logging.write"
-                    ]
-                }
-            }
-        },
-        "projects": {
-            "resources": {
-                "sinks": {
-                    "methods": {
-                        "update": {
-                            "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter. The updated sink might also have a new writer_identity; see the unique_writer_identity field.",
-                            "httpMethod": "PUT",
-                            "id": "logging.projects.sinks.update",
-                            "parameterOrder": [
-                                "sinkName"
-                            ],
-                            "parameters": {
-                                "updateMask": {
-                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "uniqueWriterIdentity": {
-                                    "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
-                                "sinkName": {
-                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/sinks/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+sinkName}",
-                            "request": {
-                                "$ref": "LogSink"
-                            },
-                            "response": {
-                                "$ref": "LogSink"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "delete": {
-                            "description": "Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.",
-                            "httpMethod": "DELETE",
-                            "id": "logging.projects.sinks.delete",
-                            "parameterOrder": [
-                                "sinkName"
-                            ],
-                            "parameters": {
-                                "sinkName": {
-                                    "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/sinks/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+sinkName}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists sinks.",
-                            "httpMethod": "GET",
-                            "id": "logging.projects.sinks.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "parent": {
-                                    "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+parent}/sinks",
-                            "response": {
-                                "$ref": "ListSinksResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        },
-                        "create": {
-                            "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.",
-                            "httpMethod": "POST",
-                            "id": "logging.projects.sinks.create",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "parent": {
-                                    "description": "Required. The resource in which to create the sink:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "uniqueWriterIdentity": {
-                                    "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Stackdriver Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                }
-                            },
-                            "path": "v2/{+parent}/sinks",
-                            "request": {
-                                "$ref": "LogSink"
-                            },
-                            "response": {
-                                "$ref": "LogSink"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets a sink.",
-                            "httpMethod": "GET",
-                            "id": "logging.projects.sinks.get",
-                            "parameterOrder": [
-                                "sinkName"
-                            ],
-                            "parameters": {
-                                "sinkName": {
-                                    "description": "Required. The resource name of the sink:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/sinks/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+sinkName}",
-                            "response": {
-                                "$ref": "LogSink"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        },
-                        "patch": {
-                            "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter. The updated sink might also have a new writer_identity; see the unique_writer_identity field.",
-                            "httpMethod": "PATCH",
-                            "id": "logging.projects.sinks.patch",
-                            "parameterOrder": [
-                                "sinkName"
-                            ],
-                            "parameters": {
-                                "updateMask": {
-                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "uniqueWriterIdentity": {
-                                    "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
-                                "sinkName": {
-                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/sinks/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+sinkName}",
-                            "request": {
-                                "$ref": "LogSink"
-                            },
-                            "response": {
-                                "$ref": "LogSink"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        }
-                    }
-                },
-                "logs": {
-                    "methods": {
-                        "delete": {
-                            "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.",
-                            "httpMethod": "DELETE",
-                            "id": "logging.projects.logs.delete",
-                            "parameterOrder": [
-                                "logName"
-                            ],
-                            "parameters": {
-                                "logName": {
-                                    "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/logs/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+logName}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.",
-                            "httpMethod": "GET",
-                            "id": "logging.projects.logs.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "parent": {
-                                    "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v2/{+parent}/logs",
-                            "response": {
-                                "$ref": "ListLogsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        }
-                    }
-                },
-                "exclusions": {
-                    "methods": {
-                        "delete": {
-                            "description": "Deletes an exclusion.",
-                            "httpMethod": "DELETE",
-                            "id": "logging.projects.exclusions.delete",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Required. The resource name of an existing exclusion to delete:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/exclusions/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+name}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "patch": {
-                            "description": "Changes one or more properties of an existing exclusion.",
-                            "httpMethod": "PATCH",
-                            "id": "logging.projects.exclusions.patch",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "updateMask": {
-                                    "description": "Required. A nonempty list of fields to change in the existing exclusion. New values for the fields are taken from the corresponding fields in the LogExclusion included in this request. Fields not mentioned in update_mask are not changed and are ignored in the request.For example, to change the filter and description of an exclusion, specify an update_mask of \"filter,description\".",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "description": "Required. The resource name of the exclusion to update:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/exclusions/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+name}",
-                            "request": {
-                                "$ref": "LogExclusion"
-                            },
-                            "response": {
-                                "$ref": "LogExclusion"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets the description of an exclusion.",
-                            "httpMethod": "GET",
-                            "id": "logging.projects.exclusions.get",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/exclusions/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+name}",
-                            "response": {
-                                "$ref": "LogExclusion"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists all the exclusions in a parent resource.",
-                            "httpMethod": "GET",
-                            "id": "logging.projects.exclusions.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "parent": {
-                                    "description": "Required. The parent resource whose exclusions are to be listed.\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+parent}/exclusions",
-                            "response": {
-                                "$ref": "ListExclusionsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        },
-                        "create": {
-                            "description": "Creates a new exclusion in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.",
-                            "httpMethod": "POST",
-                            "id": "logging.projects.exclusions.create",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "parent": {
-                                    "description": "Required. The parent resource in which to create the exclusion:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+parent}/exclusions",
-                            "request": {
-                                "$ref": "LogExclusion"
-                            },
-                            "response": {
-                                "$ref": "LogExclusion"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        }
-                    }
-                },
-                "metrics": {
-                    "methods": {
-                        "update": {
-                            "description": "Creates or updates a logs-based metric.",
-                            "httpMethod": "PUT",
-                            "id": "logging.projects.metrics.update",
-                            "parameterOrder": [
-                                "metricName"
-                            ],
-                            "parameters": {
-                                "metricName": {
-                                    "description": "The resource name of the metric to update:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\nThe updated metric must be provided in the request and it's name field must be the same as [METRIC_ID] If the metric does not exist in [PROJECT_ID], then a new metric is created.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/metrics/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+metricName}",
-                            "request": {
-                                "$ref": "LogMetric"
-                            },
-                            "response": {
-                                "$ref": "LogMetric"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.write"
-                            ]
-                        },
-                        "create": {
-                            "description": "Creates a logs-based metric.",
-                            "httpMethod": "POST",
-                            "id": "logging.projects.metrics.create",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "parent": {
-                                    "description": "The resource name of the project in which to create the metric:\n\"projects/[PROJECT_ID]\"\nThe new metric must be provided in the request.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+parent}/metrics",
-                            "request": {
-                                "$ref": "LogMetric"
-                            },
-                            "response": {
-                                "$ref": "LogMetric"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.write"
-                            ]
-                        },
-                        "delete": {
-                            "description": "Deletes a logs-based metric.",
-                            "httpMethod": "DELETE",
-                            "id": "logging.projects.metrics.delete",
-                            "parameterOrder": [
-                                "metricName"
-                            ],
-                            "parameters": {
-                                "metricName": {
-                                    "description": "The resource name of the metric to delete:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/metrics/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+metricName}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.write"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets a logs-based metric.",
-                            "httpMethod": "GET",
-                            "id": "logging.projects.metrics.get",
-                            "parameterOrder": [
-                                "metricName"
-                            ],
-                            "parameters": {
-                                "metricName": {
-                                    "description": "The resource name of the desired metric:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/metrics/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+metricName}",
-                            "response": {
-                                "$ref": "LogMetric"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists logs-based metrics.",
-                            "httpMethod": "GET",
-                            "id": "logging.projects.metrics.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "parent": {
-                                    "description": "Required. The name of the project containing the metrics:\n\"projects/[PROJECT_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+parent}/metrics",
-                            "response": {
-                                "$ref": "ListLogMetricsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        }
-                    }
-                }
-            }
-        },
-        "billingAccounts": {
-            "resources": {
-                "sinks": {
-                    "methods": {
-                        "create": {
-                            "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.",
-                            "httpMethod": "POST",
-                            "id": "logging.billingAccounts.sinks.create",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "parent": {
-                                    "description": "Required. The resource in which to create the sink:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".",
-                                    "location": "path",
-                                    "pattern": "^billingAccounts/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "uniqueWriterIdentity": {
-                                    "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Stackdriver Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                }
-                            },
-                            "path": "v2/{+parent}/sinks",
-                            "request": {
-                                "$ref": "LogSink"
-                            },
-                            "response": {
-                                "$ref": "LogSink"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets a sink.",
-                            "httpMethod": "GET",
-                            "id": "logging.billingAccounts.sinks.get",
-                            "parameterOrder": [
-                                "sinkName"
-                            ],
-                            "parameters": {
-                                "sinkName": {
-                                    "description": "Required. The resource name of the sink:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
-                                    "location": "path",
-                                    "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+sinkName}",
-                            "response": {
-                                "$ref": "LogSink"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        },
-                        "patch": {
-                            "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter. The updated sink might also have a new writer_identity; see the unique_writer_identity field.",
-                            "httpMethod": "PATCH",
-                            "id": "logging.billingAccounts.sinks.patch",
-                            "parameterOrder": [
-                                "sinkName"
-                            ],
-                            "parameters": {
-                                "updateMask": {
-                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "uniqueWriterIdentity": {
-                                    "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
-                                "sinkName": {
-                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
-                                    "location": "path",
-                                    "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+sinkName}",
-                            "request": {
-                                "$ref": "LogSink"
-                            },
-                            "response": {
-                                "$ref": "LogSink"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "update": {
-                            "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter. The updated sink might also have a new writer_identity; see the unique_writer_identity field.",
-                            "httpMethod": "PUT",
-                            "id": "logging.billingAccounts.sinks.update",
-                            "parameterOrder": [
-                                "sinkName"
-                            ],
-                            "parameters": {
-                                "updateMask": {
-                                    "description": "Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes:  destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample: updateMask=filter.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "uniqueWriterIdentity": {
-                                    "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
-                                "sinkName": {
-                                    "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
-                                    "location": "path",
-                                    "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+sinkName}",
-                            "request": {
-                                "$ref": "LogSink"
-                            },
-                            "response": {
-                                "$ref": "LogSink"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "delete": {
-                            "description": "Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.",
-                            "httpMethod": "DELETE",
-                            "id": "logging.billingAccounts.sinks.delete",
-                            "parameterOrder": [
-                                "sinkName"
-                            ],
-                            "parameters": {
-                                "sinkName": {
-                                    "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
-                                    "location": "path",
-                                    "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+sinkName}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists sinks.",
-                            "httpMethod": "GET",
-                            "id": "logging.billingAccounts.sinks.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "parent": {
-                                    "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^billingAccounts/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v2/{+parent}/sinks",
-                            "response": {
-                                "$ref": "ListSinksResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        }
-                    }
-                },
-                "logs": {
-                    "methods": {
-                        "delete": {
-                            "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.",
-                            "httpMethod": "DELETE",
-                            "id": "logging.billingAccounts.logs.delete",
-                            "parameterOrder": [
-                                "logName"
-                            ],
-                            "parameters": {
-                                "logName": {
-                                    "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.",
-                                    "location": "path",
-                                    "pattern": "^billingAccounts/[^/]+/logs/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+logName}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.",
-                            "httpMethod": "GET",
-                            "id": "logging.billingAccounts.logs.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "parent": {
-                                    "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^billingAccounts/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v2/{+parent}/logs",
-                            "response": {
-                                "$ref": "ListLogsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        }
-                    }
-                },
-                "exclusions": {
-                    "methods": {
-                        "delete": {
-                            "description": "Deletes an exclusion.",
-                            "httpMethod": "DELETE",
-                            "id": "logging.billingAccounts.exclusions.delete",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Required. The resource name of an existing exclusion to delete:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
-                                    "location": "path",
-                                    "pattern": "^billingAccounts/[^/]+/exclusions/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+name}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "patch": {
-                            "description": "Changes one or more properties of an existing exclusion.",
-                            "httpMethod": "PATCH",
-                            "id": "logging.billingAccounts.exclusions.patch",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Required. The resource name of the exclusion to update:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
-                                    "location": "path",
-                                    "pattern": "^billingAccounts/[^/]+/exclusions/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "updateMask": {
-                                    "description": "Required. A nonempty list of fields to change in the existing exclusion. New values for the fields are taken from the corresponding fields in the LogExclusion included in this request. Fields not mentioned in update_mask are not changed and are ignored in the request.For example, to change the filter and description of an exclusion, specify an update_mask of \"filter,description\".",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+name}",
-                            "request": {
-                                "$ref": "LogExclusion"
-                            },
-                            "response": {
-                                "$ref": "LogExclusion"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets the description of an exclusion.",
-                            "httpMethod": "GET",
-                            "id": "logging.billingAccounts.exclusions.get",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".",
-                                    "location": "path",
-                                    "pattern": "^billingAccounts/[^/]+/exclusions/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+name}",
-                            "response": {
-                                "$ref": "LogExclusion"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists all the exclusions in a parent resource.",
-                            "httpMethod": "GET",
-                            "id": "logging.billingAccounts.exclusions.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "parent": {
-                                    "description": "Required. The parent resource whose exclusions are to be listed.\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^billingAccounts/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+parent}/exclusions",
-                            "response": {
-                                "$ref": "ListExclusionsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        },
-                        "create": {
-                            "description": "Creates a new exclusion in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.",
-                            "httpMethod": "POST",
-                            "id": "logging.billingAccounts.exclusions.create",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "parent": {
-                                    "description": "Required. The parent resource in which to create the exclusion:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".",
-                                    "location": "path",
-                                    "pattern": "^billingAccounts/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+parent}/exclusions",
-                            "request": {
-                                "$ref": "LogExclusion"
-                            },
-                            "response": {
-                                "$ref": "LogExclusion"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        }
-                    }
                 }
             }
         }
     },
-    "revision": "20170926",
+    "revision": "20171016",
     "rootUrl": "https://logging.googleapis.com/",
     "schemas": {
+        "Explicit": {
+            "description": "Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): boundsi  Lower bound (1 <= i < N); boundsi - 1The bounds field must contain at least one element. If bounds has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets.",
+            "id": "Explicit",
+            "properties": {
+                "bounds": {
+                    "description": "The values must be monotonically increasing.",
+                    "items": {
+                        "format": "double",
+                        "type": "number"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SourceReference": {
+            "description": "A reference to a particular snapshot of the source tree used to build and deploy an application.",
+            "id": "SourceReference",
+            "properties": {
+                "revisionId": {
+                    "description": "The canonical and persistent identifier of the deployed revision. Example (git): \"0035781c50ec7aa23385dc841529ce8a4b70db1b\"",
+                    "type": "string"
+                },
+                "repository": {
+                    "description": "Optional. A URI string identifying the repository. Example: \"https://github.com/GoogleCloudPlatform/kubernetes.git\"",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "WriteLogEntriesResponse": {
+            "description": "Result returned from WriteLogEntries. empty",
+            "id": "WriteLogEntriesResponse",
+            "properties": {},
+            "type": "object"
+        },
+        "Exponential": {
+            "description": "Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): scale * (growth_factor ^ i).  Lower bound (1 <= i < N): scale * (growth_factor ^ (i - 1)).",
+            "id": "Exponential",
+            "properties": {
+                "growthFactor": {
+                    "description": "Must be greater than 1.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "scale": {
+                    "description": "Must be greater than 0.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "numFiniteBuckets": {
+                    "description": "Must be greater than 0.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
         "WriteLogEntriesRequest": {
             "description": "The parameters to WriteLogEntries.",
             "id": "WriteLogEntriesRequest",
             "properties": {
+                "logName": {
+                    "description": "Optional. A default log resource name that is assigned to all log entries in entries that do not specify a value for log_name:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\" or \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.",
+                    "type": "string"
+                },
                 "entries": {
                     "description": "Required. The log entries to send to Stackdriver Logging. The order of log entries in this list does not matter. Values supplied in this method's log_name, resource, and labels fields are copied into those log entries in this list that do not include values for their corresponding fields. For more information, see the LogEntry type.If the timestamp or insert_id fields are missing in log entries, then this method supplies the current time or a unique identifier, respectively. The supplied values are chosen so that, among the log entries that did not supply their own values, the entries earlier in the list will sort before the entries later in the list. See the entries.list method.Log entries with timestamps that are more than the logs retention period in the past or more than 24 hours in the future might be discarded. Discarding does not return an error.To improve throughput and to avoid exceeding the quota limit for calls to entries.write, you should try to include several log entries in this list, rather than calling this method for each individual log entry.",
                     "items": {
@@ -2098,10 +2160,6 @@
                     },
                     "type": "array"
                 },
-                "logName": {
-                    "description": "Optional. A default log resource name that is assigned to all log entries in entries that do not specify a value for log_name:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\" or \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.",
-                    "type": "string"
-                },
                 "partialSuccess": {
                     "description": "Optional. Whether valid entries should be written even if some other entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors. If any entry is not written, then the response status is the error associated with one of the failed entries and the response includes error details keyed by the entries' zero-based index in the entries.write method.",
                     "type": "boolean"
@@ -2124,14 +2182,6 @@
             "description": "A description of a label.",
             "id": "LabelDescriptor",
             "properties": {
-                "key": {
-                    "description": "The label key.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "A human-readable description for the label.",
-                    "type": "string"
-                },
                 "valueType": {
                     "description": "The type of data that can be assigned to the label.",
                     "enum": [
@@ -2145,6 +2195,14 @@
                         "A 64-bit signed integer."
                     ],
                     "type": "string"
+                },
+                "key": {
+                    "description": "The label key.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "A human-readable description for the label.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2157,13 +2215,13 @@
                     "$ref": "Exponential",
                     "description": "The exponential buckets."
                 },
-                "explicitBuckets": {
-                    "$ref": "Explicit",
-                    "description": "The explicit buckets."
-                },
                 "linearBuckets": {
                     "$ref": "Linear",
                     "description": "The linear bucket."
+                },
+                "explicitBuckets": {
+                    "$ref": "Explicit",
+                    "description": "The explicit buckets."
                 }
             },
             "type": "object"
@@ -2190,49 +2248,6 @@
             "description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.",
             "id": "MetricDescriptor",
             "properties": {
-                "metricKind": {
-                    "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported.",
-                    "enum": [
-                        "METRIC_KIND_UNSPECIFIED",
-                        "GAUGE",
-                        "DELTA",
-                        "CUMULATIVE"
-                    ],
-                    "enumDescriptions": [
-                        "Do not use this default value.",
-                        "An instantaneous measurement of a value.",
-                        "The change in a value during a time interval.",
-                        "A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points."
-                    ],
-                    "type": "string"
-                },
-                "description": {
-                    "description": "A detailed description of the metric, which can be used in documentation.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\".",
-                    "type": "string"
-                },
-                "unit": {
-                    "description": "The unit in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The supported units are a subset of The Unified Code for Units of Measure (http://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT)\nbit bit\nBy byte\ns second\nmin minute\nh hour\nd dayPrefixes (PREFIX)\nk kilo (10**3)\nM mega (10**6)\nG giga (10**9)\nT tera (10**12)\nP peta (10**15)\nE exa (10**18)\nZ zetta (10**21)\nY yotta (10**24)\nm milli (10**-3)\nu micro (10**-6)\nn nano (10**-9)\np pico (10**-12)\nf femto (10**-15)\na atto (10**-18)\nz zepto (10**-21)\ny yocto (10**-24)\nKi kibi (2**10)\nMi mebi (2**20)\nGi gibi (2**30)\nTi tebi (2**40)GrammarThe grammar includes the dimensionless unit 1, such as 1/s.The grammar also includes these connectors:\n/ division (as an infix operator, e.g. 1/s).\n. multiplication (as an infix operator, e.g. GBy.d)The grammar for a unit is as follows:\nExpression = Component { \".\" Component } { \"/\" Component } ;\n\nComponent = [ PREFIX ] UNIT [ Annotation ]\n          | Annotation\n          | \"1\"\n          ;\n\nAnnotation = \"{\" NAME \"}\" ;\nNotes:\nAnnotation is just a comment if it follows a UNIT and is  equivalent to 1 if it is used alone. For examples,  {requests}/s == 1/s, By{transmitted}/s == By/s.\nNAME is a sequence of non-blank printable ASCII characters not  containing '{' or '}'.",
-                    "type": "string"
-                },
-                "labels": {
-                    "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed.",
-                    "items": {
-                        "$ref": "LabelDescriptor"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "The resource name of the metric descriptor. Depending on the implementation, the name typically includes: (1) the parent resource name that defines the scope of the metric type or of its data; and (2) the metric's URL-encoded type, which also appears in the type field of this descriptor. For example, following is the resource name of a custom metric within the GCP project my-project-id:\n\"projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount\"\n",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined custom metric types have the DNS name custom.googleapis.com. Metric types should use a natural hierarchical grouping. For example:\n\"custom.googleapis.com/invoice/paid/amount\"\n\"appengine.googleapis.com/http/server/response_latencies\"\n",
-                    "type": "string"
-                },
                 "valueType": {
                     "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported.",
                     "enum": [
@@ -2254,6 +2269,49 @@
                         "The value is money."
                     ],
                     "type": "string"
+                },
+                "metricKind": {
+                    "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported.",
+                    "enum": [
+                        "METRIC_KIND_UNSPECIFIED",
+                        "GAUGE",
+                        "DELTA",
+                        "CUMULATIVE"
+                    ],
+                    "enumDescriptions": [
+                        "Do not use this default value.",
+                        "An instantaneous measurement of a value.",
+                        "The change in a value during a time interval.",
+                        "A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points."
+                    ],
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\". This field is optional but it is recommended to be set for any metrics associated with user-visible concepts, such as Quota.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "A detailed description of the metric, which can be used in documentation.",
+                    "type": "string"
+                },
+                "unit": {
+                    "description": "The unit in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The supported units are a subset of The Unified Code for Units of Measure (http://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT)\nbit bit\nBy byte\ns second\nmin minute\nh hour\nd dayPrefixes (PREFIX)\nk kilo (10**3)\nM mega (10**6)\nG giga (10**9)\nT tera (10**12)\nP peta (10**15)\nE exa (10**18)\nZ zetta (10**21)\nY yotta (10**24)\nm milli (10**-3)\nu micro (10**-6)\nn nano (10**-9)\np pico (10**-12)\nf femto (10**-15)\na atto (10**-18)\nz zepto (10**-21)\ny yocto (10**-24)\nKi kibi (2**10)\nMi mebi (2**20)\nGi gibi (2**30)\nTi tebi (2**40)GrammarThe grammar includes the dimensionless unit 1, such as 1/s.The grammar also includes these connectors:\n/ division (as an infix operator, e.g. 1/s).\n. multiplication (as an infix operator, e.g. GBy.d)The grammar for a unit is as follows:\nExpression = Component { \".\" Component } { \"/\" Component } ;\n\nComponent = [ PREFIX ] UNIT [ Annotation ]\n          | Annotation\n          | \"1\"\n          ;\n\nAnnotation = \"{\" NAME \"}\" ;\nNotes:\nAnnotation is just a comment if it follows a UNIT and is  equivalent to 1 if it is used alone. For examples,  {requests}/s == 1/s, By{transmitted}/s == By/s.\nNAME is a sequence of non-blank printable ASCII characters not  containing '{' or '}'.",
+                    "type": "string"
+                },
+                "labels": {
+                    "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed.",
+                    "items": {
+                        "$ref": "LabelDescriptor"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The resource name of the metric descriptor.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined custom metric types have the DNS name custom.googleapis.com. Metric types should use a natural hierarchical grouping. For example:\n\"custom.googleapis.com/invoice/paid/amount\"\n\"appengine.googleapis.com/http/server/response_latencies\"\n",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2262,38 +2320,6 @@
             "description": "An individual entry in a log.",
             "id": "LogEntry",
             "properties": {
-                "logName": {
-                    "description": "Required. The resource name of the log to which this log entry belongs:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\nA project number may optionally be used in place of PROJECT_ID. The  project number is translated to its corresponding PROJECT_ID internally  and the log_name field will contain PROJECT_ID in queries and exports.[LOG_ID] must be URL-encoded within log_name. Example: \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". [LOG_ID] must be less than 512 characters long and can only include the following characters: upper and lower case alphanumeric characters, forward-slash, underscore, hyphen, and period.For backward compatibility, if log_name begins with a forward-slash, such as /projects/..., then the log entry is ingested as usual but the forward-slash is removed. Listing the log entry will not show the leading slash and filtering for a log name with a leading slash will never return any results.",
-                    "type": "string"
-                },
-                "resource": {
-                    "$ref": "MonitoredResource",
-                    "description": "Required. The monitored resource associated with this log entry. Example: a log entry that reports a database error would be associated with the monitored resource designating the particular database that reported the error."
-                },
-                "httpRequest": {
-                    "$ref": "HttpRequest",
-                    "description": "Optional. Information about the HTTP request associated with this log entry, if applicable."
-                },
-                "jsonPayload": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "The log entry payload, represented as a structure that is expressed as a JSON object.",
-                    "type": "object"
-                },
-                "insertId": {
-                    "description": "Optional. A unique identifier for the log entry. If you provide a value, then Stackdriver Logging considers other log entries in the same project, with the same timestamp, and with the same insert_id to be duplicates which can be removed. If omitted in new log entries, then Stackdriver Logging assigns its own unique identifier. The insert_id is also used to order log entries that have the same timestamp value.",
-                    "type": "string"
-                },
-                "operation": {
-                    "$ref": "LogEntryOperation",
-                    "description": "Optional. Information about an operation associated with the log entry, if applicable."
-                },
-                "textPayload": {
-                    "description": "The log entry payload, represented as a Unicode string (UTF-8).",
-                    "type": "string"
-                },
                 "protoPayload": {
                     "additionalProperties": {
                         "description": "Properties of the object. Contains field @type with type URL.",
@@ -2302,10 +2328,6 @@
                     "description": "The log entry payload, represented as a protocol buffer. Some Google Cloud Platform services use this field for their log entry payloads.",
                     "type": "object"
                 },
-                "trace": {
-                    "description": "Optional. Resource name of the trace associated with the log entry, if any. If it contains a relative resource name, the name is assumed to be relative to //tracing.googleapis.com. Example: projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824",
-                    "type": "string"
-                },
                 "labels": {
                     "additionalProperties": {
                         "type": "string"
@@ -2313,6 +2335,10 @@
                     "description": "Optional. A set of user-defined (key, value) data that provides additional information about the log entry.",
                     "type": "object"
                 },
+                "trace": {
+                    "description": "Optional. Resource name of the trace associated with the log entry, if any. If it contains a relative resource name, the name is assumed to be relative to //tracing.googleapis.com. Example: projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824",
+                    "type": "string"
+                },
                 "severity": {
                     "description": "Optional. The severity of the log entry. The default value is LogSeverity.DEFAULT.",
                     "enum": [
@@ -2343,14 +2369,46 @@
                     "$ref": "LogEntrySourceLocation",
                     "description": "Optional. Source code location information associated with the log entry, if any."
                 },
+                "timestamp": {
+                    "description": "Optional. The time the event described by the log entry occurred. This time is used to compute the log entry's age and to enforce the logs retention period. If this field is omitted in a new log entry, then Stackdriver Logging assigns it the current time.Incoming log entries should have timestamps that are no more than the logs retention period in the past, and no more than 24 hours in the future. See the entries.write API method for more information.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
                 "receiveTimestamp": {
                     "description": "Output only. The time the log entry was received by Stackdriver Logging.",
                     "format": "google-datetime",
                     "type": "string"
                 },
-                "timestamp": {
-                    "description": "Optional. The time the event described by the log entry occurred. This time is used to compute the log entry's age and to enforce the logs retention period. If this field is omitted in a new log entry, then Stackdriver Logging assigns it the current time.Incoming log entries should have timestamps that are no more than the logs retention period in the past, and no more than 24 hours in the future. See the entries.write API method for more information.",
-                    "format": "google-datetime",
+                "logName": {
+                    "description": "Required. The resource name of the log to which this log entry belongs:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\nA project number may optionally be used in place of PROJECT_ID. The  project number is translated to its corresponding PROJECT_ID internally  and the log_name field will contain PROJECT_ID in queries and exports.[LOG_ID] must be URL-encoded within log_name. Example: \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". [LOG_ID] must be less than 512 characters long and can only include the following characters: upper and lower case alphanumeric characters, forward-slash, underscore, hyphen, and period.For backward compatibility, if log_name begins with a forward-slash, such as /projects/..., then the log entry is ingested as usual but the forward-slash is removed. Listing the log entry will not show the leading slash and filtering for a log name with a leading slash will never return any results.",
+                    "type": "string"
+                },
+                "resource": {
+                    "$ref": "MonitoredResource",
+                    "description": "Required. The monitored resource associated with this log entry. Example: a log entry that reports a database error would be associated with the monitored resource designating the particular database that reported the error."
+                },
+                "httpRequest": {
+                    "$ref": "HttpRequest",
+                    "description": "Optional. Information about the HTTP request associated with this log entry, if applicable."
+                },
+                "jsonPayload": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "The log entry payload, represented as a structure that is expressed as a JSON object.",
+                    "type": "object"
+                },
+                "insertId": {
+                    "description": "Optional. A unique identifier for the log entry. If you provide a value, then Stackdriver Logging considers other log entries in the same project, with the same timestamp, and with the same insert_id to be duplicates which can be removed. If omitted in new log entries, then Stackdriver Logging assigns its own unique identifier. The insert_id is also used to order log entries that have the same timestamp value.",
+                    "type": "string"
+                },
+                "operation": {
+                    "$ref": "LogEntryOperation",
+                    "description": "Optional. Information about an operation associated with the log entry, if applicable."
+                },
+                "textPayload": {
+                    "description": "The log entry payload, represented as a Unicode string (UTF-8).",
                     "type": "string"
                 }
             },
@@ -2360,6 +2418,103 @@
             "description": "Complete log information about a single HTTP request to an App Engine application.",
             "id": "RequestLog",
             "properties": {
+                "line": {
+                    "description": "A list of log lines emitted by the application while serving this request.",
+                    "items": {
+                        "$ref": "LogLine"
+                    },
+                    "type": "array"
+                },
+                "referrer": {
+                    "description": "Referrer URL of request.",
+                    "type": "string"
+                },
+                "taskQueueName": {
+                    "description": "Queue name of the request, in the case of an offline request.",
+                    "type": "string"
+                },
+                "requestId": {
+                    "description": "Globally unique identifier for a request, which is based on the request start time. Request IDs for requests which started later will compare greater as strings than those for requests which started earlier.",
+                    "type": "string"
+                },
+                "nickname": {
+                    "description": "The logged-in user who made the request.Most likely, this is the part of the user's email before the @ sign. The field value is the same for different requests from the same user, but different users can have similar names. This information is also available to the application via the App Engine Users API.This field will be populated starting with App Engine 1.9.21.",
+                    "type": "string"
+                },
+                "pendingTime": {
+                    "description": "Time this request spent in the pending request queue.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "resource": {
+                    "description": "Contains the path and query portion of the URL that was requested. For example, if the URL was \"http://example.com/app?name=val\", the resource would be \"/app?name=val\". The fragment identifier, which is identified by the # character, is not included.",
+                    "type": "string"
+                },
+                "status": {
+                    "description": "HTTP response status code. Example: 200, 404.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "taskName": {
+                    "description": "Task name of the request, in the case of an offline request.",
+                    "type": "string"
+                },
+                "urlMapEntry": {
+                    "description": "File or class that handled the request.",
+                    "type": "string"
+                },
+                "instanceIndex": {
+                    "description": "If the instance processing this request belongs to a manually scaled module, then this is the 0-based index of the instance. Otherwise, this value is -1.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "host": {
+                    "description": "Internet host and port number of the resource being requested.",
+                    "type": "string"
+                },
+                "finished": {
+                    "description": "Whether this request is finished or active.",
+                    "type": "boolean"
+                },
+                "httpVersion": {
+                    "description": "HTTP version of request. Example: \"HTTP/1.1\".",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Time when the request started.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "latency": {
+                    "description": "Latency of the request.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "ip": {
+                    "description": "Origin IP address.",
+                    "type": "string"
+                },
+                "appId": {
+                    "description": "Application that handled this request.",
+                    "type": "string"
+                },
+                "appEngineRelease": {
+                    "description": "App Engine release version.",
+                    "type": "string"
+                },
+                "method": {
+                    "description": "Request method. Example: \"GET\", \"HEAD\", \"PUT\", \"POST\", \"DELETE\".",
+                    "type": "string"
+                },
+                "cost": {
+                    "description": "An indication of the relative cost of serving this request.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "instanceId": {
+                    "description": "An identifier for the instance that handled the request.",
+                    "type": "string"
+                },
                 "megaCycles": {
                     "description": "Number of CPU megacycles used to process request.",
                     "format": "int64",
@@ -2405,103 +2560,6 @@
                 "traceId": {
                     "description": "Stackdriver Trace identifier for this request.",
                     "type": "string"
-                },
-                "line": {
-                    "description": "A list of log lines emitted by the application while serving this request.",
-                    "items": {
-                        "$ref": "LogLine"
-                    },
-                    "type": "array"
-                },
-                "referrer": {
-                    "description": "Referrer URL of request.",
-                    "type": "string"
-                },
-                "taskQueueName": {
-                    "description": "Queue name of the request, in the case of an offline request.",
-                    "type": "string"
-                },
-                "requestId": {
-                    "description": "Globally unique identifier for a request, which is based on the request start time. Request IDs for requests which started later will compare greater as strings than those for requests which started earlier.",
-                    "type": "string"
-                },
-                "nickname": {
-                    "description": "The logged-in user who made the request.Most likely, this is the part of the user's email before the @ sign. The field value is the same for different requests from the same user, but different users can have similar names. This information is also available to the application via the App Engine Users API.This field will be populated starting with App Engine 1.9.21.",
-                    "type": "string"
-                },
-                "status": {
-                    "description": "HTTP response status code. Example: 200, 404.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "resource": {
-                    "description": "Contains the path and query portion of the URL that was requested. For example, if the URL was \"http://example.com/app?name=val\", the resource would be \"/app?name=val\". The fragment identifier, which is identified by the # character, is not included.",
-                    "type": "string"
-                },
-                "pendingTime": {
-                    "description": "Time this request spent in the pending request queue.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "taskName": {
-                    "description": "Task name of the request, in the case of an offline request.",
-                    "type": "string"
-                },
-                "urlMapEntry": {
-                    "description": "File or class that handled the request.",
-                    "type": "string"
-                },
-                "instanceIndex": {
-                    "description": "If the instance processing this request belongs to a manually scaled module, then this is the 0-based index of the instance. Otherwise, this value is -1.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "finished": {
-                    "description": "Whether this request is finished or active.",
-                    "type": "boolean"
-                },
-                "host": {
-                    "description": "Internet host and port number of the resource being requested.",
-                    "type": "string"
-                },
-                "httpVersion": {
-                    "description": "HTTP version of request. Example: \"HTTP/1.1\".",
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "Time when the request started.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "latency": {
-                    "description": "Latency of the request.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "ip": {
-                    "description": "Origin IP address.",
-                    "type": "string"
-                },
-                "appId": {
-                    "description": "Application that handled this request.",
-                    "type": "string"
-                },
-                "appEngineRelease": {
-                    "description": "App Engine release version.",
-                    "type": "string"
-                },
-                "method": {
-                    "description": "Request method. Example: \"GET\", \"HEAD\", \"PUT\", \"POST\", \"DELETE\".",
-                    "type": "string"
-                },
-                "cost": {
-                    "description": "An indication of the relative cost of serving this request.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "instanceId": {
-                    "description": "An identifier for the instance that handled the request.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2510,14 +2568,6 @@
             "description": "Specifies a set of log entries that are not to be stored in Stackdriver Logging. If your project receives a large volume of logs, you might be able to use exclusions to reduce your chargeable logs. Exclusions are processed after log sinks, so you can export log entries before they are excluded. Audit log entries and log entries from Amazon Web Services are never excluded.",
             "id": "LogExclusion",
             "properties": {
-                "disabled": {
-                    "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can use exclusions.patch to change the value of this field.",
-                    "type": "boolean"
-                },
-                "filter": {
-                    "description": "Required. An advanced logs filter that matches the log entries to be excluded. By using the sample function, you can exclude less than 100% of the matching log entries. For example, the following filter matches 99% of low-severity log entries from load balancers:\n\"resource.type=http_load_balancer severity<ERROR sample(insertId, 0.99)\"\n",
-                    "type": "string"
-                },
                 "name": {
                     "description": "Required. A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
                     "type": "string"
@@ -2525,6 +2575,14 @@
                 "description": {
                     "description": "Optional. A description of this exclusion.",
                     "type": "string"
+                },
+                "filter": {
+                    "description": "Required. An advanced logs filter that matches the log entries to be excluded. By using the sample function, you can exclude less than 100% of the matching log entries. For example, the following filter matches 99% of low-severity log entries from load balancers:\n\"resource.type=http_load_balancer severity<ERROR sample(insertId, 0.99)\"\n",
+                    "type": "string"
+                },
+                "disabled": {
+                    "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can use exclusions.patch to change the value of this field.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -2551,16 +2609,16 @@
             "description": "Result returned from ListExclusions.",
             "id": "ListExclusionsResponse",
             "properties": {
+                "nextPageToken": {
+                    "description": "If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken.",
+                    "type": "string"
+                },
                 "exclusions": {
                     "description": "A list of exclusions.",
                     "items": {
                         "$ref": "LogExclusion"
                     },
                     "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2569,6 +2627,25 @@
             "description": "Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.Logs-based metric can also be used to extract values from logs and create a a distribution of the values. The distribution records the statistics of the extracted values along with an optional histogram of the values as specified by the bucket options.",
             "id": "LogMetric",
             "properties": {
+                "bucketOptions": {
+                    "$ref": "BucketOptions",
+                    "description": "Optional. The bucket_options are required when the logs-based metric is using a DISTRIBUTION value type and it describes the bucket boundaries used to create a histogram of the extracted values."
+                },
+                "valueExtractor": {
+                    "description": "Optional. A value_extractor is required when using a distribution logs-based metric to extract the values to record from a log entry. Two functions are supported for value extraction: EXTRACT(field) or REGEXP_EXTRACT(field, regex). The argument are:  1. field: The name of the log entry field from which the value is to be  extracted.  2. regex: A regular expression using the Google RE2 syntax  (https://github.com/google/re2/wiki/Syntax) with a single capture  group to extract data from the specified log entry field. The value  of the field is converted to a string before applying the regex.  It is an error to specify a regex that does not include exactly one  capture group.The result of the extraction must be convertible to a double type, as the distribution always records double values. If either the extraction or the conversion to double fails, then those values are not recorded in the distribution.Example: REGEXP_EXTRACT(jsonPayload.request, \".*quantity=(\\d+).*\")",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Required. The client-assigned metric identifier. Examples: \"error_count\", \"nginx/requests\".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: \"projects/my-project/metrics/nginx%2Frequests\".",
+                    "type": "string"
+                },
+                "labelExtractors": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. A map from a label key string to an extractor expression which is used to extract data from a log entry field and assign as the label value. Each label key specified in the LabelDescriptor must have an associated extractor expression in this map. The syntax of the extractor expression is the same as for the value_extractor field.The extracted value is converted to the type defined in the label descriptor. If the either the extraction or the type conversion fails, the label will have a default value. The default value for a string label is an empty string, for an integer label its 0, and for a boolean label its false.Note that there are upper bounds on the maximum number of labels and the number of active time series that are allowed in a project.",
+                    "type": "object"
+                },
                 "metricDescriptor": {
                     "$ref": "MetricDescriptor",
                     "description": "Optional. The metric descriptor associated with the logs-based metric. If unspecified, it uses a default metric descriptor with a DELTA metric kind, INT64 value type, with no labels and a unit of \"1\". Such a metric counts the number of log entries matching the filter expression.The name, type, and description fields in the metric_descriptor are output only, and is constructed using the name and description field in the LogMetric.To create a logs-based metric that records a distribution of log values, a DELTA metric kind with a DISTRIBUTION value type must be used along with a value_extractor expression in the LogMetric.Each label in the metric descriptor must have a matching label name as the key and an extractor expression as the value in the label_extractors map.The metric_kind and value_type fields in the metric_descriptor cannot be updated once initially configured. New labels can be added in the metric_descriptor, but existing labels cannot be modified except for their description."
@@ -2592,25 +2669,6 @@
                 "description": {
                     "description": "Optional. A description of this metric, which is used in documentation.",
                     "type": "string"
-                },
-                "valueExtractor": {
-                    "description": "Optional. A value_extractor is required when using a distribution logs-based metric to extract the values to record from a log entry. Two functions are supported for value extraction: EXTRACT(field) or REGEXP_EXTRACT(field, regex). The argument are:  1. field: The name of the log entry field from which the value is to be  extracted.  2. regex: A regular expression using the Google RE2 syntax  (https://github.com/google/re2/wiki/Syntax) with a single capture  group to extract data from the specified log entry field. The value  of the field is converted to a string before applying the regex.  It is an error to specify a regex that does not include exactly one  capture group.The result of the extraction must be convertible to a double type, as the distribution always records double values. If either the extraction or the conversion to double fails, then those values are not recorded in the distribution.Example: REGEXP_EXTRACT(jsonPayload.request, \".*quantity=(\\d+).*\")",
-                    "type": "string"
-                },
-                "bucketOptions": {
-                    "$ref": "BucketOptions",
-                    "description": "Optional. The bucket_options are required when the logs-based metric is using a DISTRIBUTION value type and it describes the bucket boundaries used to create a histogram of the extracted values."
-                },
-                "name": {
-                    "description": "Required. The client-assigned metric identifier. Examples: \"error_count\", \"nginx/requests\".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: \"projects/my-project/metrics/nginx%2Frequests\".",
-                    "type": "string"
-                },
-                "labelExtractors": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Optional. A map from a label key string to an extractor expression which is used to extract data from a log entry field and assign as the label value. Each label key specified in the LabelDescriptor must have an associated extractor expression in this map. The syntax of the extractor expression is the same as for the value_extractor field.The extracted value is converted to the type defined in the label descriptor. If the either the extraction or the type conversion fails, the label will have a default value. The default value for a string label is an empty string, for an integer label its 0, and for a boolean label its false.Note that there are upper bounds on the maximum number of labels and the number of active time series that are allowed in a project.",
-                    "type": "object"
                 }
             },
             "type": "object"
@@ -2627,13 +2685,13 @@
                     "description": "Optional. An arbitrary operation identifier. Log entries with the same identifier are assumed to be part of the same operation.",
                     "type": "string"
                 },
-                "first": {
-                    "description": "Optional. Set this to True if this is the first log entry in the operation.",
-                    "type": "boolean"
-                },
                 "producer": {
                     "description": "Optional. An arbitrary producer identifier. The combination of id and producer must be globally unique. Examples for producer: \"MyDivision.MyBigCompany.com\", \"github.com/MyProject/MyApplication\".",
                     "type": "string"
+                },
+                "first": {
+                    "description": "Optional. Set this to True if this is the first log entry in the operation.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -2660,29 +2718,6 @@
             "description": "Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project, organization, billing account, or folder.",
             "id": "LogSink",
             "properties": {
-                "startTime": {
-                    "description": "Deprecated. This field is ignored when creating or updating sinks.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "writerIdentity": {
-                    "description": "Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.",
-                    "type": "string"
-                },
-                "outputVersionFormat": {
-                    "description": "Deprecated. The log entry format to use for this sink's exported log entries. The v2 format is used by default and cannot be changed.",
-                    "enum": [
-                        "VERSION_FORMAT_UNSPECIFIED",
-                        "V2",
-                        "V1"
-                    ],
-                    "enumDescriptions": [
-                        "An unspecified format version that will default to V2.",
-                        "LogEntry version 2 format.",
-                        "LogEntry version 1 format."
-                    ],
-                    "type": "string"
-                },
                 "name": {
                     "description": "Required. The client-assigned sink identifier, unique within the project. Example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.",
                     "type": "string"
@@ -2703,6 +2738,29 @@
                     "description": "Deprecated. This field is ignored when creating or updating sinks.",
                     "format": "google-datetime",
                     "type": "string"
+                },
+                "writerIdentity": {
+                    "description": "Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Deprecated. This field is ignored when creating or updating sinks.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "outputVersionFormat": {
+                    "description": "Deprecated. The log entry format to use for this sink's exported log entries. The v2 format is used by default and cannot be changed.",
+                    "enum": [
+                        "VERSION_FORMAT_UNSPECIFIED",
+                        "V2",
+                        "V1"
+                    ],
+                    "enumDescriptions": [
+                        "An unspecified format version that will default to V2.",
+                        "LogEntry version 2 format.",
+                        "LogEntry version 1 format."
+                    ],
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2729,50 +2787,14 @@
             "description": "A common proto for logging HTTP requests. Only contains semantics defined by the HTTP specification. Product-specific logging information MUST be defined in a separate message.",
             "id": "HttpRequest",
             "properties": {
-                "userAgent": {
-                    "description": "The user agent sent by the client. Example: \"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)\".",
-                    "type": "string"
-                },
-                "latency": {
-                    "description": "The request processing latency on the server, from the time the request was received until the response was sent.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "cacheFillBytes": {
-                    "description": "The number of HTTP response bytes inserted into cache. Set only when a cache fill was attempted.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "requestMethod": {
-                    "description": "The request method. Examples: \"GET\", \"HEAD\", \"PUT\", \"POST\".",
-                    "type": "string"
-                },
-                "protocol": {
-                    "description": "Protocol used for the request. Examples: \"HTTP/1.1\", \"HTTP/2\", \"websocket\"",
-                    "type": "string"
-                },
-                "responseSize": {
-                    "description": "The size of the HTTP response message sent back to the client, in bytes, including the response headers and the response body.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "requestSize": {
-                    "description": "The size of the HTTP request message in bytes, including the request headers and the request body.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "requestUrl": {
-                    "description": "The scheme (http, https), the host name, the path and the query portion of the URL that was requested. Example: \"http://example.com/some/info?color=red\".",
+                "serverIp": {
+                    "description": "The IP address (IPv4 or IPv6) of the origin server that the request was sent to.",
                     "type": "string"
                 },
                 "remoteIp": {
                     "description": "The IP address (IPv4 or IPv6) of the client that issued the HTTP request. Examples: \"192.168.1.1\", \"FE80::0202:B3FF:FE1E:8329\".",
                     "type": "string"
                 },
-                "serverIp": {
-                    "description": "The IP address (IPv4 or IPv6) of the origin server that the request was sent to.",
-                    "type": "string"
-                },
                 "cacheLookup": {
                     "description": "Whether or not a cache lookup was attempted.",
                     "type": "boolean"
@@ -2793,6 +2815,42 @@
                 "referer": {
                     "description": "The referer URL of the request, as defined in HTTP/1.1 Header Field Definitions (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).",
                     "type": "string"
+                },
+                "userAgent": {
+                    "description": "The user agent sent by the client. Example: \"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)\".",
+                    "type": "string"
+                },
+                "latency": {
+                    "description": "The request processing latency on the server, from the time the request was received until the response was sent.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "cacheFillBytes": {
+                    "description": "The number of HTTP response bytes inserted into cache. Set only when a cache fill was attempted.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "requestMethod": {
+                    "description": "The request method. Examples: \"GET\", \"HEAD\", \"PUT\", \"POST\".",
+                    "type": "string"
+                },
+                "requestSize": {
+                    "description": "The size of the HTTP request message in bytes, including the request headers and the request body.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "protocol": {
+                    "description": "Protocol used for the request. Examples: \"HTTP/1.1\", \"HTTP/2\", \"websocket\"",
+                    "type": "string"
+                },
+                "responseSize": {
+                    "description": "The size of the HTTP response message sent back to the client, in bytes, including the response headers and the response body.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "requestUrl": {
+                    "description": "The scheme (http, https), the host name, the path and the query portion of the URL that was requested. Example: \"http://example.com/some/info?color=red\".",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2823,14 +2881,14 @@
                     "description": "Optional. The resource name of the monitored resource descriptor: \"projects/{project_id}/monitoredResourceDescriptors/{type}\" where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format \"monitoredResourceDescriptors/{type}\".",
                     "type": "string"
                 },
-                "description": {
-                    "description": "Optional. A detailed description of the monitored resource type that might be used in documentation.",
-                    "type": "string"
-                },
                 "displayName": {
                     "description": "Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, \"Google Cloud SQL Database\".",
                     "type": "string"
                 },
+                "description": {
+                    "description": "Optional. A detailed description of the monitored resource type that might be used in documentation.",
+                    "type": "string"
+                },
                 "type": {
                     "description": "Required. The monitored resource type. For example, the type \"cloudsql_database\" represents databases in Google Cloud SQL. The maximum length of this value is 256 characters.",
                     "type": "string"
@@ -2887,10 +2945,6 @@
             "description": "Application log line emitted while processing a request.",
             "id": "LogLine",
             "properties": {
-                "logMessage": {
-                    "description": "App-provided log message.",
-                    "type": "string"
-                },
                 "severity": {
                     "description": "Severity of this log entry.",
                     "enum": [
@@ -2917,6 +2971,10 @@
                     ],
                     "type": "string"
                 },
+                "logMessage": {
+                    "description": "App-provided log message.",
+                    "type": "string"
+                },
                 "sourceLocation": {
                     "$ref": "SourceLocation",
                     "description": "Where in the source code this log message was written."
@@ -2933,6 +2991,11 @@
             "description": "Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): offset + (width * i).  Lower bound (1 <= i < N): offset + (width * (i - 1)).",
             "id": "Linear",
             "properties": {
+                "numFiniteBuckets": {
+                    "description": "Must be greater than 0.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "width": {
                     "description": "Must be greater than 0.",
                     "format": "double",
@@ -2942,11 +3005,6 @@
                     "description": "Lower bound of the first bucket.",
                     "format": "double",
                     "type": "number"
-                },
-                "numFiniteBuckets": {
-                    "description": "Must be greater than 0.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -2981,6 +3039,17 @@
             "description": "The parameters to ListLogEntries.",
             "id": "ListLogEntriesRequest",
             "properties": {
+                "projectIds": {
+                    "description": "Deprecated. Use resource_names instead. One or more project identifiers or project numbers from which to retrieve log entries. Example: \"my-project-1A\". If present, these project identifiers are converted to resource name format and added to the list of resources in resource_names.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "filter": {
+                    "description": "Optional. A filter that chooses which log entries to return. See Advanced Logs Filters. Only log entries that match the filter are returned. An empty filter matches all log entries in the resources listed in resource_names. Referencing a parent resource that is not listed in resource_names will cause the filter to return no results. The maximum length of the filter is 20000 characters.",
+                    "type": "string"
+                },
                 "pageToken": {
                     "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. page_token must be the value of next_page_token from the previous response. The values of other method parameters should be identical to those in the previous call.",
                     "type": "string"
@@ -3000,75 +3069,6 @@
                         "type": "string"
                     },
                     "type": "array"
-                },
-                "projectIds": {
-                    "description": "Deprecated. Use resource_names instead. One or more project identifiers or project numbers from which to retrieve log entries. Example: \"my-project-1A\". If present, these project identifiers are converted to resource name format and added to the list of resources in resource_names.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "filter": {
-                    "description": "Optional. A filter that chooses which log entries to return. See Advanced Logs Filters. Only log entries that match the filter are returned. An empty filter matches all log entries in the resources listed in resource_names. Referencing a parent resource that is not listed in resource_names will cause the filter to return no results. The maximum length of the filter is 20000 characters.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Explicit": {
-            "description": "Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): boundsi  Lower bound (1 <= i < N); boundsi - 1The bounds field must contain at least one element. If bounds has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets.",
-            "id": "Explicit",
-            "properties": {
-                "bounds": {
-                    "description": "The values must be monotonically increasing.",
-                    "items": {
-                        "format": "double",
-                        "type": "number"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "SourceReference": {
-            "description": "A reference to a particular snapshot of the source tree used to build and deploy an application.",
-            "id": "SourceReference",
-            "properties": {
-                "revisionId": {
-                    "description": "The canonical and persistent identifier of the deployed revision. Example (git): \"0035781c50ec7aa23385dc841529ce8a4b70db1b\"",
-                    "type": "string"
-                },
-                "repository": {
-                    "description": "Optional. A URI string identifying the repository. Example: \"https://github.com/GoogleCloudPlatform/kubernetes.git\"",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "WriteLogEntriesResponse": {
-            "description": "Result returned from WriteLogEntries. empty",
-            "id": "WriteLogEntriesResponse",
-            "properties": {},
-            "type": "object"
-        },
-        "Exponential": {
-            "description": "Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): scale * (growth_factor ^ i).  Lower bound (1 <= i < N): scale * (growth_factor ^ (i - 1)).",
-            "id": "Exponential",
-            "properties": {
-                "scale": {
-                    "description": "Must be greater than 0.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "numFiniteBuckets": {
-                    "description": "Must be greater than 0.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "growthFactor": {
-                    "description": "Must be greater than 1.",
-                    "format": "double",
-                    "type": "number"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/manufacturers__v1.json b/discovery/googleapis/manufacturers__v1.json
index 86e2f3a..b02a851 100644
--- a/discovery/googleapis/manufacturers__v1.json
+++ b/discovery/googleapis/manufacturers__v1.json
@@ -25,48 +25,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
-            "location": "query",
-            "type": "string"
-        },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
         "callback": {
             "description": "JSONP",
             "location": "query",
@@ -110,6 +68,48 @@
             "description": "OAuth access token.",
             "location": "query",
             "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
@@ -118,6 +118,105 @@
             "resources": {
                 "products": {
                     "methods": {
+                        "delete": {
+                            "description": "Deletes the product from a Manufacturer Center account.",
+                            "httpMethod": "DELETE",
+                            "id": "manufacturers.accounts.products.delete",
+                            "parameterOrder": [
+                                "parent",
+                                "name"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Parent ID in the format `accounts/{account_id}`.\n\n`account_id` - The ID of the Manufacturer Center account.",
+                                    "location": "path",
+                                    "pattern": "^accounts/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "Name in the format `{target_country}:{content_language}:{product_id}`.\n\n`target_country`   - The target country of the product as a CLDR territory\n                     code (for example, US).\n\n`content_language` - The content language of the product as a two-letter\n                     ISO 639-1 language code (for example, en).\n\n`product_id`     -   The ID of the product. For more information, see\n                     https://support.google.com/manufacturers/answer/6124116#id.",
+                                    "location": "path",
+                                    "pattern": "^[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+parent}/products/{+name}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/manufacturercenter"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets the product from a Manufacturer Center account, including product\nissues.\n\nA recently updated product takes around 15 minutes to process. Changes are\nonly visible after it has been processed. While some issues may be\navailable once the product has been processed, other issues may take days\nto appear.",
+                            "httpMethod": "GET",
+                            "id": "manufacturers.accounts.products.get",
+                            "parameterOrder": [
+                                "parent",
+                                "name"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Parent ID in the format `accounts/{account_id}`.\n\n`account_id` - The ID of the Manufacturer Center account.",
+                                    "location": "path",
+                                    "pattern": "^accounts/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "Name in the format `{target_country}:{content_language}:{product_id}`.\n\n`target_country`   - The target country of the product as a CLDR territory\n                     code (for example, US).\n\n`content_language` - The content language of the product as a two-letter\n                     ISO 639-1 language code (for example, en).\n\n`product_id`     -   The ID of the product. For more information, see\n                     https://support.google.com/manufacturers/answer/6124116#id.",
+                                    "location": "path",
+                                    "pattern": "^[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+parent}/products/{+name}",
+                            "response": {
+                                "$ref": "Product"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/manufacturercenter"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists all the products in a Manufacturer Center account.",
+                            "httpMethod": "GET",
+                            "id": "manufacturers.accounts.products.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "pageSize": {
+                                    "description": "Maximum number of product statuses to return in the response, used for\npaging.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "parent": {
+                                    "description": "Parent ID in the format `accounts/{account_id}`.\n\n`account_id` - The ID of the Manufacturer Center account.",
+                                    "location": "path",
+                                    "pattern": "^accounts/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "The token returned by the previous request.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+parent}/products",
+                            "response": {
+                                "$ref": "ListProductsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/manufacturercenter"
+                            ]
+                        },
                         "update": {
                             "description": "Inserts or updates the product in a Manufacturer Center account.\n\nThe checks at upload time are minimal. All required attributes need to be\npresent for a product to be valid. Issues may show up later\nafter the API has accepted an update for a product and it is possible to\noverwrite an existing valid product with an invalid product. To detect\nthis, you should retrieve the product and check it for issues once the\nupdated version is available.\n\nInserted or updated products first need to be processed before they can be\nretrieved. Until then, new products will be unavailable, and retrieval\nof updated products will return the original state of the product.",
                             "httpMethod": "PUT",
@@ -152,348 +251,15 @@
                             "scopes": [
                                 "https://www.googleapis.com/auth/manufacturercenter"
                             ]
-                        },
-                        "delete": {
-                            "description": "Deletes the product from a Manufacturer Center account.",
-                            "httpMethod": "DELETE",
-                            "id": "manufacturers.accounts.products.delete",
-                            "parameterOrder": [
-                                "parent",
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Name in the format `{target_country}:{content_language}:{product_id}`.\n\n`target_country`   - The target country of the product as a CLDR territory\n                     code (for example, US).\n\n`content_language` - The content language of the product as a two-letter\n                     ISO 639-1 language code (for example, en).\n\n`product_id`     -   The ID of the product. For more information, see\n                     https://support.google.com/manufacturers/answer/6124116#id.",
-                                    "location": "path",
-                                    "pattern": "^[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "parent": {
-                                    "description": "Parent ID in the format `accounts/{account_id}`.\n\n`account_id` - The ID of the Manufacturer Center account.",
-                                    "location": "path",
-                                    "pattern": "^accounts/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+parent}/products/{+name}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/manufacturercenter"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets the product from a Manufacturer Center account, including product\nissues.\n\nA recently updated product takes around 15 minutes to process. Changes are\nonly visible after it has been processed. While some issues may be\navailable once the product has been processed, other issues may take days\nto appear.",
-                            "httpMethod": "GET",
-                            "id": "manufacturers.accounts.products.get",
-                            "parameterOrder": [
-                                "parent",
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Name in the format `{target_country}:{content_language}:{product_id}`.\n\n`target_country`   - The target country of the product as a CLDR territory\n                     code (for example, US).\n\n`content_language` - The content language of the product as a two-letter\n                     ISO 639-1 language code (for example, en).\n\n`product_id`     -   The ID of the product. For more information, see\n                     https://support.google.com/manufacturers/answer/6124116#id.",
-                                    "location": "path",
-                                    "pattern": "^[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "parent": {
-                                    "description": "Parent ID in the format `accounts/{account_id}`.\n\n`account_id` - The ID of the Manufacturer Center account.",
-                                    "location": "path",
-                                    "pattern": "^accounts/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+parent}/products/{+name}",
-                            "response": {
-                                "$ref": "Product"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/manufacturercenter"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists all the products in a Manufacturer Center account.",
-                            "httpMethod": "GET",
-                            "id": "manufacturers.accounts.products.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "parent": {
-                                    "description": "Parent ID in the format `accounts/{account_id}`.\n\n`account_id` - The ID of the Manufacturer Center account.",
-                                    "location": "path",
-                                    "pattern": "^accounts/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "The token returned by the previous request.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Maximum number of product statuses to return in the response, used for\npaging.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v1/{+parent}/products",
-                            "response": {
-                                "$ref": "ListProductsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/manufacturercenter"
-                            ]
                         }
                     }
                 }
             }
         }
     },
-    "revision": "20170808",
+    "revision": "20171011",
     "rootUrl": "https://manufacturers.googleapis.com/",
     "schemas": {
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
-        "Price": {
-            "description": "A price.",
-            "id": "Price",
-            "properties": {
-                "currency": {
-                    "description": "The currency in which the price is denoted.",
-                    "type": "string"
-                },
-                "amount": {
-                    "description": "The numeric value of the price.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Image": {
-            "description": "An image.",
-            "id": "Image",
-            "properties": {
-                "type": {
-                    "description": "The type of the image, i.e., crawled or uploaded.\n@OutputOnly",
-                    "enum": [
-                        "TYPE_UNSPECIFIED",
-                        "CRAWLED",
-                        "UPLOADED"
-                    ],
-                    "enumDescriptions": [
-                        "Type is unspecified. Should not be used.",
-                        "The image was crawled from a provided URL.",
-                        "The image was uploaded."
-                    ],
-                    "type": "string"
-                },
-                "imageUrl": {
-                    "description": "The URL of the image. For crawled images, this is the provided URL. For\nuploaded images, this is a serving URL from Google if the image has been\nprocessed successfully.",
-                    "type": "string"
-                },
-                "status": {
-                    "description": "The status of the image.\n@OutputOnly",
-                    "enum": [
-                        "STATUS_UNSPECIFIED",
-                        "PENDING_PROCESSING",
-                        "PENDING_CRAWL",
-                        "OK",
-                        "ROBOTED",
-                        "XROBOTED",
-                        "CRAWL_ERROR",
-                        "PROCESSING_ERROR",
-                        "DECODING_ERROR",
-                        "TOO_BIG",
-                        "CRAWL_SKIPPED"
-                    ],
-                    "enumDescriptions": [
-                        "Status is unspecified. Should not be used.",
-                        "Image was uploaded and is being processed.",
-                        "The image crawl is still pending.",
-                        "The image was processed and it meets the requirements.",
-                        "The image URL is protected by robots.txt file and cannot be crawled.",
-                        "The image URL is protected by X-Robots-Tag and cannot be crawled.",
-                        "There was an error while crawling the image.",
-                        "The image cannot be processed.",
-                        "The image cannot be decoded.",
-                        "The image is too big.",
-                        "The image was manually overridden and will not be crawled."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Attributes": {
-            "description": "Attributes of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116.",
-            "id": "Attributes",
-            "properties": {
-                "count": {
-                    "$ref": "Count",
-                    "description": "The count of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#count."
-                },
-                "brand": {
-                    "description": "The brand name of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#brand.",
-                    "type": "string"
-                },
-                "material": {
-                    "description": "The material of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#material.",
-                    "type": "string"
-                },
-                "disclosureDate": {
-                    "description": "The disclosure date of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#disclosure.",
-                    "type": "string"
-                },
-                "scent": {
-                    "description": "The scent of the product. For more information, see\n https://support.google.com/manufacturers/answer/6124116#scent.",
-                    "type": "string"
-                },
-                "flavor": {
-                    "description": "The flavor of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#flavor.",
-                    "type": "string"
-                },
-                "ageGroup": {
-                    "description": "The target age group of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#agegroup.",
-                    "type": "string"
-                },
-                "productDetail": {
-                    "description": "The details of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#productdetail.",
-                    "items": {
-                        "$ref": "ProductDetail"
-                    },
-                    "type": "array"
-                },
-                "productPageUrl": {
-                    "description": "The URL of the detail page of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#productpage.",
-                    "type": "string"
-                },
-                "mpn": {
-                    "description": "The Manufacturer Part Number (MPN) of the product. For more information,\nsee https://support.google.com/manufacturers/answer/6124116#mpn.",
-                    "type": "string"
-                },
-                "releaseDate": {
-                    "description": "The release date of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#release.",
-                    "type": "string"
-                },
-                "itemGroupId": {
-                    "description": "The item group id of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#itemgroupid.",
-                    "type": "string"
-                },
-                "gtin": {
-                    "description": "The Global Trade Item Number (GTIN) of the product. For more information,\nsee https://support.google.com/manufacturers/answer/6124116#gtin.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "productLine": {
-                    "description": "The name of the group of products related to the product. For more\ninformation, see\nhttps://support.google.com/manufacturers/answer/6124116#productline.",
-                    "type": "string"
-                },
-                "capacity": {
-                    "$ref": "Capacity",
-                    "description": "The capacity of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#capacity."
-                },
-                "description": {
-                    "description": "The description of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#description.",
-                    "type": "string"
-                },
-                "gender": {
-                    "description": "The target gender of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#gender.",
-                    "type": "string"
-                },
-                "sizeSystem": {
-                    "description": "The size system of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#sizesystem.",
-                    "type": "string"
-                },
-                "theme": {
-                    "description": "The theme of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#theme.",
-                    "type": "string"
-                },
-                "pattern": {
-                    "description": "The pattern of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#pattern.",
-                    "type": "string"
-                },
-                "imageLink": {
-                    "$ref": "Image",
-                    "description": "The image of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#image."
-                },
-                "productType": {
-                    "description": "The category of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#producttype.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "format": {
-                    "description": "The format of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#format.",
-                    "type": "string"
-                },
-                "additionalImageLink": {
-                    "description": "The additional images of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#addlimage.",
-                    "items": {
-                        "$ref": "Image"
-                    },
-                    "type": "array"
-                },
-                "videoLink": {
-                    "description": "The videos of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#video.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "color": {
-                    "description": "The color of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#color.",
-                    "type": "string"
-                },
-                "productName": {
-                    "description": "The canonical name of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#productname.",
-                    "type": "string"
-                },
-                "sizeType": {
-                    "description": "The size type of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#sizetype.",
-                    "type": "string"
-                },
-                "suggestedRetailPrice": {
-                    "$ref": "Price",
-                    "description": "The suggested retail price (MSRP) of the product. For more information,\nsee https://support.google.com/manufacturers/answer/6124116#price."
-                },
-                "featureDescription": {
-                    "description": "The rich format description of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#featuredesc.",
-                    "items": {
-                        "$ref": "FeatureDescription"
-                    },
-                    "type": "array"
-                },
-                "targetAccountId": {
-                    "description": "The target account id. Should only be used in the accounts of the data\npartners.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "size": {
-                    "description": "The size of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#size.",
-                    "type": "string"
-                },
-                "title": {
-                    "description": "The title of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#title.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "Count": {
             "description": "The number of products in a single package. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#count.",
             "id": "Count",
@@ -514,6 +280,18 @@
             "description": "Product data.",
             "id": "Product",
             "properties": {
+                "productId": {
+                    "description": "The ID of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#id.\n@OutputOnly",
+                    "type": "string"
+                },
+                "uploadedAttributes": {
+                    "$ref": "Attributes",
+                    "description": "Attributes of the product uploaded via the Manufacturer Center API or via\nfeeds."
+                },
+                "parent": {
+                    "description": "Parent ID in the format `accounts/{account_id}`.\n\n`account_id` - The ID of the Manufacturer Center account.\n@OutputOnly",
+                    "type": "string"
+                },
                 "manuallyProvidedAttributes": {
                     "$ref": "Attributes",
                     "description": "Attributes of the product provided manually via the Manufacturer Center UI.\n@OutputOnly"
@@ -530,13 +308,6 @@
                     "description": "Name in the format `{target_country}:{content_language}:{product_id}`.\n\n`target_country`   - The target country of the product as a CLDR territory\n                     code (for example, US).\n\n`content_language` - The content language of the product as a two-letter\n                     ISO 639-1 language code (for example, en).\n\n`product_id`     -   The ID of the product. For more information, see\n                     https://support.google.com/manufacturers/answer/6124116#id.\n@OutputOnly",
                     "type": "string"
                 },
-                "manuallyDeletedAttributes": {
-                    "description": "Names of the attributes of the product deleted manually via the\nManufacturer Center UI.\n@OutputOnly",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
                 "issues": {
                     "description": "A server-generated list of issues associated with the product.\n@OutputOnly",
                     "items": {
@@ -544,21 +315,16 @@
                     },
                     "type": "array"
                 },
+                "manuallyDeletedAttributes": {
+                    "description": "Names of the attributes of the product deleted manually via the\nManufacturer Center UI.\n@OutputOnly",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
                 "finalAttributes": {
                     "$ref": "Attributes",
                     "description": "Final attributes of the product. The final attributes are obtained by\noverriding the uploaded attributes with the manually provided and deleted\nattributes. Google systems only process, evaluate, review, and/or use final\nattributes.\n@OutputOnly"
-                },
-                "productId": {
-                    "description": "The ID of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#id.\n@OutputOnly",
-                    "type": "string"
-                },
-                "uploadedAttributes": {
-                    "$ref": "Attributes",
-                    "description": "Attributes of the product uploaded via the Manufacturer Center API or via\nfeeds."
-                },
-                "parent": {
-                    "description": "Parent ID in the format `accounts/{account_id}`.\n\n`account_id` - The ID of the Manufacturer Center account.\n@OutputOnly",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -619,14 +385,6 @@
             "description": "Product issue.",
             "id": "Issue",
             "properties": {
-                "type": {
-                    "description": "The server-generated type of the issue, for example,\n“INCORRECT_TEXT_FORMATTING”, “IMAGE_NOT_SERVEABLE”, etc.",
-                    "type": "string"
-                },
-                "attribute": {
-                    "description": "If present, the attribute that triggered the issue. For more information\nabout attributes, see\nhttps://support.google.com/manufacturers/answer/6124116.",
-                    "type": "string"
-                },
                 "timestamp": {
                     "description": "The timestamp when this issue appeared.",
                     "format": "google-datetime",
@@ -651,6 +409,14 @@
                 "description": {
                     "description": "Description of the issue.",
                     "type": "string"
+                },
+                "type": {
+                    "description": "The server-generated type of the issue, for example,\n“INCORRECT_TEXT_FORMATTING”, “IMAGE_NOT_SERVEABLE”, etc.",
+                    "type": "string"
+                },
+                "attribute": {
+                    "description": "If present, the attribute that triggered the issue. For more information\nabout attributes, see\nhttps://support.google.com/manufacturers/answer/6124116.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -673,6 +439,243 @@
                 }
             },
             "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "Price": {
+            "description": "A price.",
+            "id": "Price",
+            "properties": {
+                "amount": {
+                    "description": "The numeric value of the price.",
+                    "type": "string"
+                },
+                "currency": {
+                    "description": "The currency in which the price is denoted.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Image": {
+            "description": "An image.",
+            "id": "Image",
+            "properties": {
+                "type": {
+                    "description": "The type of the image, i.e., crawled or uploaded.\n@OutputOnly",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "CRAWLED",
+                        "UPLOADED"
+                    ],
+                    "enumDescriptions": [
+                        "Type is unspecified. Should not be used.",
+                        "The image was crawled from a provided URL.",
+                        "The image was uploaded."
+                    ],
+                    "type": "string"
+                },
+                "imageUrl": {
+                    "description": "The URL of the image. For crawled images, this is the provided URL. For\nuploaded images, this is a serving URL from Google if the image has been\nprocessed successfully.",
+                    "type": "string"
+                },
+                "status": {
+                    "description": "The status of the image.\n@OutputOnly",
+                    "enum": [
+                        "STATUS_UNSPECIFIED",
+                        "PENDING_PROCESSING",
+                        "PENDING_CRAWL",
+                        "OK",
+                        "ROBOTED",
+                        "XROBOTED",
+                        "CRAWL_ERROR",
+                        "PROCESSING_ERROR",
+                        "DECODING_ERROR",
+                        "TOO_BIG",
+                        "CRAWL_SKIPPED",
+                        "HOSTLOADED",
+                        "HTTP_404"
+                    ],
+                    "enumDescriptions": [
+                        "The image status is unspecified. Should not be used.",
+                        "The image was uploaded and is being processed.",
+                        "The image crawl is still pending.",
+                        "The image was processed and it meets the requirements.",
+                        "The image URL is protected by robots.txt file and cannot be crawled.",
+                        "The image URL is protected by X-Robots-Tag and cannot be crawled.",
+                        "There was an error while crawling the image.",
+                        "The image cannot be processed.",
+                        "The image cannot be decoded.",
+                        "The image is too big.",
+                        "The image was manually overridden and will not be crawled.",
+                        "The image crawl was postponed to avoid overloading the host.",
+                        "The image URL returned a \"404 Not Found\" error."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Attributes": {
+            "description": "Attributes of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116.",
+            "id": "Attributes",
+            "properties": {
+                "sizeSystem": {
+                    "description": "The size system of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#sizesystem.",
+                    "type": "string"
+                },
+                "theme": {
+                    "description": "The theme of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#theme.",
+                    "type": "string"
+                },
+                "targetClientId": {
+                    "description": "The target client id. Should only be used in the accounts of the data\npartners.",
+                    "type": "string"
+                },
+                "pattern": {
+                    "description": "The pattern of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#pattern.",
+                    "type": "string"
+                },
+                "imageLink": {
+                    "$ref": "Image",
+                    "description": "The image of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#image."
+                },
+                "productType": {
+                    "description": "The type or category of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#producttype.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "format": {
+                    "description": "The format of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#format.",
+                    "type": "string"
+                },
+                "additionalImageLink": {
+                    "description": "The additional images of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#addlimage.",
+                    "items": {
+                        "$ref": "Image"
+                    },
+                    "type": "array"
+                },
+                "videoLink": {
+                    "description": "The videos of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#video.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "color": {
+                    "description": "The color of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#color.",
+                    "type": "string"
+                },
+                "productName": {
+                    "description": "The canonical name of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#productname.",
+                    "type": "string"
+                },
+                "sizeType": {
+                    "description": "The size type of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#sizetype.",
+                    "type": "string"
+                },
+                "suggestedRetailPrice": {
+                    "$ref": "Price",
+                    "description": "The suggested retail price (MSRP) of the product. For more information,\nsee https://support.google.com/manufacturers/answer/6124116#price."
+                },
+                "featureDescription": {
+                    "description": "The rich format description of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#featuredesc.",
+                    "items": {
+                        "$ref": "FeatureDescription"
+                    },
+                    "type": "array"
+                },
+                "size": {
+                    "description": "The size of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#size.",
+                    "type": "string"
+                },
+                "title": {
+                    "description": "The title of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#title.",
+                    "type": "string"
+                },
+                "count": {
+                    "$ref": "Count",
+                    "description": "The count of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#count."
+                },
+                "brand": {
+                    "description": "The brand name of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#brand.",
+                    "type": "string"
+                },
+                "material": {
+                    "description": "The material of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#material.",
+                    "type": "string"
+                },
+                "disclosureDate": {
+                    "description": "The disclosure date of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#disclosure.",
+                    "type": "string"
+                },
+                "scent": {
+                    "description": "The scent of the product. For more information, see\n https://support.google.com/manufacturers/answer/6124116#scent.",
+                    "type": "string"
+                },
+                "flavor": {
+                    "description": "The flavor of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#flavor.",
+                    "type": "string"
+                },
+                "productDetail": {
+                    "description": "The details of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#productdetail.",
+                    "items": {
+                        "$ref": "ProductDetail"
+                    },
+                    "type": "array"
+                },
+                "ageGroup": {
+                    "description": "The target age group of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#agegroup.",
+                    "type": "string"
+                },
+                "mpn": {
+                    "description": "The Manufacturer Part Number (MPN) of the product. For more information,\nsee https://support.google.com/manufacturers/answer/6124116#mpn.",
+                    "type": "string"
+                },
+                "productPageUrl": {
+                    "description": "The URL of the detail page of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#productpage.",
+                    "type": "string"
+                },
+                "releaseDate": {
+                    "description": "The release date of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#release.",
+                    "type": "string"
+                },
+                "itemGroupId": {
+                    "description": "The item group id of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#itemgroupid.",
+                    "type": "string"
+                },
+                "gtin": {
+                    "description": "The Global Trade Item Number (GTIN) of the product. For more information,\nsee https://support.google.com/manufacturers/answer/6124116#gtin.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "productLine": {
+                    "description": "The name of the group of products related to the product. For more\ninformation, see\nhttps://support.google.com/manufacturers/answer/6124116#productline.",
+                    "type": "string"
+                },
+                "capacity": {
+                    "$ref": "Capacity",
+                    "description": "The capacity of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#capacity."
+                },
+                "description": {
+                    "description": "The description of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#description.",
+                    "type": "string"
+                },
+                "gender": {
+                    "description": "The target gender of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#gender.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/ml__v1.json b/discovery/googleapis/ml__v1.json
index f1b0967..bfbd30f 100644
--- a/discovery/googleapis/ml__v1.json
+++ b/discovery/googleapis/ml__v1.json
@@ -25,27 +25,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -67,6 +46,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -80,11 +64,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -110,36 +89,33 @@
             "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
         "projects": {
             "methods": {
-                "getConfig": {
-                    "description": "Get the service account information associated with your project. You need\nthis information in order to grant the service account persmissions for\nthe Google Cloud Storage location where you put your model training code\nfor training the model with Google Cloud Machine Learning.",
-                    "httpMethod": "GET",
-                    "id": "ml.projects.getConfig",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "Required. The project name.",
-                            "location": "path",
-                            "pattern": "^projects/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+name}:getConfig",
-                    "response": {
-                        "$ref": "GoogleCloudMlV1__GetConfigResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
                 "predict": {
                     "description": "Performs prediction on the data in the request.\n\n**** REMOVE FROM GENERATED DOCUMENTATION",
                     "httpMethod": "POST",
@@ -166,429 +142,55 @@
                     "scopes": [
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
+                },
+                "getConfig": {
+                    "description": "Get the service account information associated with your project. You need\nthis information in order to grant the service account persmissions for\nthe Google Cloud Storage location where you put your model training code\nfor training the model with Google Cloud Machine Learning.",
+                    "httpMethod": "GET",
+                    "id": "ml.projects.getConfig",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. The project name.",
+                            "location": "path",
+                            "pattern": "^projects/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+name}:getConfig",
+                    "response": {
+                        "$ref": "GoogleCloudMlV1__GetConfigResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
                 }
             },
             "resources": {
-                "models": {
-                    "methods": {
-                        "delete": {
-                            "description": "Deletes a model.\n\nYou can only delete a model if there are no versions in it. You can delete\nversions by calling\n[projects.models.versions.delete](/ml-engine/reference/rest/v1/projects.models.versions/delete).",
-                            "httpMethod": "DELETE",
-                            "id": "ml.projects.models.delete",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Required. The name of the model.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/models/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "response": {
-                                "$ref": "GoogleLongrunning__Operation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists the models in a project.\n\nEach project can contain multiple models, and each model can have multiple\nversions.",
-                            "httpMethod": "GET",
-                            "id": "ml.projects.models.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "parent": {
-                                    "description": "Required. The name of the project whose models are to be listed.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "Optional. A page token to request the next page of results.\n\nYou get the token from the `next_page_token` field of the response from\nthe previous call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional. The number of models to retrieve per \"page\" of results. If there\nare more remaining results than this number, the response message will\ncontain a valid value in the `next_page_token` field.\n\nThe default value is 20, and the maximum page size is 100.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v1/{+parent}/models",
-                            "response": {
-                                "$ref": "GoogleCloudMlV1__ListModelsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "create": {
-                            "description": "Creates a model which will later contain one or more versions.\n\nYou must add at least one version before you can request predictions from\nthe model. Add versions by calling\n[projects.models.versions.create](/ml-engine/reference/rest/v1/projects.models.versions/create).",
-                            "httpMethod": "POST",
-                            "id": "ml.projects.models.create",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "parent": {
-                                    "description": "Required. The project name.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+parent}/models",
-                            "request": {
-                                "$ref": "GoogleCloudMlV1__Model"
-                            },
-                            "response": {
-                                "$ref": "GoogleCloudMlV1__Model"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "setIamPolicy": {
-                            "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.",
-                            "httpMethod": "POST",
-                            "id": "ml.projects.models.setIamPolicy",
-                            "parameterOrder": [
-                                "resource"
-                            ],
-                            "parameters": {
-                                "resource": {
-                                    "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/models/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+resource}:setIamPolicy",
-                            "request": {
-                                "$ref": "GoogleIamV1__SetIamPolicyRequest"
-                            },
-                            "response": {
-                                "$ref": "GoogleIamV1__Policy"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "getIamPolicy": {
-                            "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
-                            "httpMethod": "GET",
-                            "id": "ml.projects.models.getIamPolicy",
-                            "parameterOrder": [
-                                "resource"
-                            ],
-                            "parameters": {
-                                "resource": {
-                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/models/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+resource}:getIamPolicy",
-                            "response": {
-                                "$ref": "GoogleIamV1__Policy"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets information about a model, including its name, the description (if\nset), and the default version (if at least one version of the model has\nbeen deployed).",
-                            "httpMethod": "GET",
-                            "id": "ml.projects.models.get",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Required. The name of the model.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/models/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "response": {
-                                "$ref": "GoogleCloudMlV1__Model"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "patch": {
-                            "description": "Updates a specific model resource.\n\nCurrently the only supported fields to update are `description` and\n`default_version.name`.",
-                            "httpMethod": "PATCH",
-                            "id": "ml.projects.models.patch",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Required. The project name.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/models/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "updateMask": {
-                                    "description": "Required. Specifies the path, relative to `Model`, of the field to update.\n\nFor example, to change the description of a model to \"foo\" and set its\ndefault version to \"version_1\", the `update_mask` parameter would be\nspecified as `description`, `default_version.name`, and the `PATCH`\nrequest body would specify the new value, as follows:\n    {\n      \"description\": \"foo\",\n      \"defaultVersion\": {\n        \"name\":\"version_1\"\n      }\n    }\nIn this example, the model is blindly overwritten since no etag is given.\n\nTo adopt etag mechanism, include `etag` field in the mask, and include the\n`etag` value in your model resource.\n\nCurrently the supported update masks are `description`,\n`default_version.name`, `labels`, and `etag`.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "request": {
-                                "$ref": "GoogleCloudMlV1__Model"
-                            },
-                            "response": {
-                                "$ref": "GoogleLongrunning__Operation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "testIamPermissions": {
-                            "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.",
-                            "httpMethod": "POST",
-                            "id": "ml.projects.models.testIamPermissions",
-                            "parameterOrder": [
-                                "resource"
-                            ],
-                            "parameters": {
-                                "resource": {
-                                    "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/models/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+resource}:testIamPermissions",
-                            "request": {
-                                "$ref": "GoogleIamV1__TestIamPermissionsRequest"
-                            },
-                            "response": {
-                                "$ref": "GoogleIamV1__TestIamPermissionsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        }
-                    },
-                    "resources": {
-                        "versions": {
-                            "methods": {
-                                "list": {
-                                    "description": "Gets basic information about all the versions of a model.\n\nIf you expect that a model has a lot of versions, or if you need to handle\nonly a limited number of results at a time, you can request that the list\nbe retrieved in batches (called pages):",
-                                    "httpMethod": "GET",
-                                    "id": "ml.projects.models.versions.list",
-                                    "parameterOrder": [
-                                        "parent"
-                                    ],
-                                    "parameters": {
-                                        "parent": {
-                                            "description": "Required. The name of the model for which to list the version.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/models/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "pageToken": {
-                                            "description": "Optional. A page token to request the next page of results.\n\nYou get the token from the `next_page_token` field of the response from\nthe previous call.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Optional. The number of versions to retrieve per \"page\" of results. If\nthere are more remaining results than this number, the response message\nwill contain a valid value in the `next_page_token` field.\n\nThe default value is 20, and the maximum page size is 100.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        }
-                                    },
-                                    "path": "v1/{+parent}/versions",
-                                    "response": {
-                                        "$ref": "GoogleCloudMlV1__ListVersionsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "create": {
-                                    "description": "Creates a new version of a model from a trained TensorFlow model.\n\nIf the version created in the cloud by this call is the first deployed\nversion of the specified model, it will be made the default version of the\nmodel. When you add a version to a model that already has one or more\nversions, the default version does not automatically change. If you want a\nnew version to be the default, you must call\n[projects.models.versions.setDefault](/ml-engine/reference/rest/v1/projects.models.versions/setDefault).",
-                                    "httpMethod": "POST",
-                                    "id": "ml.projects.models.versions.create",
-                                    "parameterOrder": [
-                                        "parent"
-                                    ],
-                                    "parameters": {
-                                        "parent": {
-                                            "description": "Required. The name of the model.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/models/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+parent}/versions",
-                                    "request": {
-                                        "$ref": "GoogleCloudMlV1__Version"
-                                    },
-                                    "response": {
-                                        "$ref": "GoogleLongrunning__Operation"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "get": {
-                                    "description": "Gets information about a model version.\n\nModels can have multiple versions. You can call\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list)\nto get the same information that this method returns for all of the\nversions of a model.",
-                                    "httpMethod": "GET",
-                                    "id": "ml.projects.models.versions.get",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "Required. The name of the version.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+name}",
-                                    "response": {
-                                        "$ref": "GoogleCloudMlV1__Version"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "patch": {
-                                    "description": "Updates the specified Version resource.\n\nCurrently the only supported field to update is `description`.",
-                                    "httpMethod": "PATCH",
-                                    "id": "ml.projects.models.versions.patch",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "updateMask": {
-                                            "description": "Required. Specifies the path, relative to `Version`, of the field to\nupdate. Must be present and non-empty.\n\nFor example, to change the description of a version to \"foo\", the\n`update_mask` parameter would be specified as `description`, and the\n`PATCH` request body would specify the new value, as follows:\n    {\n      \"description\": \"foo\"\n    }\nIn this example, the version is blindly overwritten since no etag is given.\n\nTo adopt etag mechanism, include `etag` field in the mask, and include the\n`etag` value in your version resource.\n\nCurrently the only supported update masks are `description`, `labels`, and\n`etag`.",
-                                            "format": "google-fieldmask",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "name": {
-                                            "description": "Required. The name of the model.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+name}",
-                                    "request": {
-                                        "$ref": "GoogleCloudMlV1__Version"
-                                    },
-                                    "response": {
-                                        "$ref": "GoogleLongrunning__Operation"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "setDefault": {
-                                    "description": "Designates a version to be the default for the model.\n\nThe default version is used for prediction requests made against the model\nthat don't specify a version.\n\nThe first version to be created for a model is automatically set as the\ndefault. You must make any subsequent changes to the default version\nsetting manually using this method.",
-                                    "httpMethod": "POST",
-                                    "id": "ml.projects.models.versions.setDefault",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "Required. The name of the version to make the default for the model. You\ncan get the names of all the versions of a model by calling\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list).",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+name}:setDefault",
-                                    "request": {
-                                        "$ref": "GoogleCloudMlV1__SetDefaultVersionRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "GoogleCloudMlV1__Version"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "delete": {
-                                    "description": "Deletes a model version.\n\nEach model can have multiple versions deployed and in use at any given\ntime. Use this method to remove a single version.\n\nNote: You cannot delete the version that is set as the default version\nof the model unless it is the only remaining version.",
-                                    "httpMethod": "DELETE",
-                                    "id": "ml.projects.models.versions.delete",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "Required. The name of the version. You can get the names of all the\nversions of a model by calling\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list).",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+name}",
-                                    "response": {
-                                        "$ref": "GoogleLongrunning__Operation"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                }
-                            }
-                        }
-                    }
-                },
-                "operations": {
+                "jobs": {
                     "methods": {
                         "cancel": {
-                            "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
+                            "description": "Cancels a running job.",
                             "httpMethod": "POST",
-                            "id": "ml.projects.operations.cancel",
+                            "id": "ml.projects.jobs.cancel",
                             "parameterOrder": [
                                 "name"
                             ],
                             "parameters": {
                                 "name": {
-                                    "description": "The name of the operation resource to be cancelled.",
+                                    "description": "Required. The name of the job to cancel.",
                                     "location": "path",
-                                    "pattern": "^projects/[^/]+/operations/[^/]+$",
+                                    "pattern": "^projects/[^/]+/jobs/[^/]+$",
                                     "required": true,
                                     "type": "string"
                                 }
                             },
                             "path": "v1/{+name}:cancel",
+                            "request": {
+                                "$ref": "GoogleCloudMlV1__CancelJobRequest"
+                            },
                             "response": {
                                 "$ref": "GoogleProtobuf__Empty"
                             },
@@ -596,98 +198,6 @@
                                 "https://www.googleapis.com/auth/cloud-platform"
                             ]
                         },
-                        "delete": {
-                            "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.",
-                            "httpMethod": "DELETE",
-                            "id": "ml.projects.operations.delete",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "The name of the operation resource to be deleted.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/operations/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "response": {
-                                "$ref": "GoogleProtobuf__Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
-                            "httpMethod": "GET",
-                            "id": "ml.projects.operations.get",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "The name of the operation resource.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/operations/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "response": {
-                                "$ref": "GoogleLongrunning__Operation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
-                            "httpMethod": "GET",
-                            "id": "ml.projects.operations.list",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "filter": {
-                                    "description": "The standard list filter.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "The standard list page token.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "description": "The name of the operation's parent resource.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "The standard list page size.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v1/{+name}/operations",
-                            "response": {
-                                "$ref": "GoogleLongrunning__ListOperationsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        }
-                    }
-                },
-                "jobs": {
-                    "methods": {
                         "getIamPolicy": {
                             "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
                             "httpMethod": "GET",
@@ -771,6 +281,11 @@
                                 "parent"
                             ],
                             "parameters": {
+                                "filter": {
+                                    "description": "Optional. Specifies the subset of jobs to retrieve.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "pageToken": {
                                     "description": "Optional. A page token to request the next page of results.\n\nYou get the token from the `next_page_token` field of the response from\nthe previous call.",
                                     "location": "query",
@@ -788,11 +303,6 @@
                                     "pattern": "^projects/[^/]+$",
                                     "required": true,
                                     "type": "string"
-                                },
-                                "filter": {
-                                    "description": "Optional. Specifies the subset of jobs to retrieve.",
-                                    "location": "query",
-                                    "type": "string"
                                 }
                             },
                             "path": "v1/{+parent}/jobs",
@@ -856,27 +366,517 @@
                             "scopes": [
                                 "https://www.googleapis.com/auth/cloud-platform"
                             ]
+                        }
+                    }
+                },
+                "models": {
+                    "methods": {
+                        "getIamPolicy": {
+                            "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
+                            "httpMethod": "GET",
+                            "id": "ml.projects.models.getIamPolicy",
+                            "parameterOrder": [
+                                "resource"
+                            ],
+                            "parameters": {
+                                "resource": {
+                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/models/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+resource}:getIamPolicy",
+                            "response": {
+                                "$ref": "GoogleIamV1__Policy"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
                         },
-                        "cancel": {
-                            "description": "Cancels a running job.",
-                            "httpMethod": "POST",
-                            "id": "ml.projects.jobs.cancel",
+                        "get": {
+                            "description": "Gets information about a model, including its name, the description (if\nset), and the default version (if at least one version of the model has\nbeen deployed).",
+                            "httpMethod": "GET",
+                            "id": "ml.projects.models.get",
                             "parameterOrder": [
                                 "name"
                             ],
                             "parameters": {
                                 "name": {
-                                    "description": "Required. The name of the job to cancel.",
+                                    "description": "Required. The name of the model.",
                                     "location": "path",
-                                    "pattern": "^projects/[^/]+/jobs/[^/]+$",
+                                    "pattern": "^projects/[^/]+/models/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "GoogleCloudMlV1__Model"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "patch": {
+                            "description": "Updates a specific model resource.\n\nCurrently the only supported fields to update are `description` and\n`default_version.name`.",
+                            "httpMethod": "PATCH",
+                            "id": "ml.projects.models.patch",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "updateMask": {
+                                    "description": "Required. Specifies the path, relative to `Model`, of the field to update.\n\nFor example, to change the description of a model to \"foo\" and set its\ndefault version to \"version_1\", the `update_mask` parameter would be\nspecified as `description`, `default_version.name`, and the `PATCH`\nrequest body would specify the new value, as follows:\n    {\n      \"description\": \"foo\",\n      \"defaultVersion\": {\n        \"name\":\"version_1\"\n      }\n    }\nIn this example, the model is blindly overwritten since no etag is given.\n\nTo adopt etag mechanism, include `etag` field in the mask, and include the\n`etag` value in your model resource.\n\nCurrently the supported update masks are `description`,\n`default_version.name`, `labels`, and `etag`.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "Required. The project name.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/models/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "request": {
+                                "$ref": "GoogleCloudMlV1__Model"
+                            },
+                            "response": {
+                                "$ref": "GoogleLongrunning__Operation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "testIamPermissions": {
+                            "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.",
+                            "httpMethod": "POST",
+                            "id": "ml.projects.models.testIamPermissions",
+                            "parameterOrder": [
+                                "resource"
+                            ],
+                            "parameters": {
+                                "resource": {
+                                    "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/models/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+resource}:testIamPermissions",
+                            "request": {
+                                "$ref": "GoogleIamV1__TestIamPermissionsRequest"
+                            },
+                            "response": {
+                                "$ref": "GoogleIamV1__TestIamPermissionsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "delete": {
+                            "description": "Deletes a model.\n\nYou can only delete a model if there are no versions in it. You can delete\nversions by calling\n[projects.models.versions.delete](/ml-engine/reference/rest/v1/projects.models.versions/delete).",
+                            "httpMethod": "DELETE",
+                            "id": "ml.projects.models.delete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The name of the model.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/models/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "GoogleLongrunning__Operation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists the models in a project.\n\nEach project can contain multiple models, and each model can have multiple\nversions.",
+                            "httpMethod": "GET",
+                            "id": "ml.projects.models.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "pageSize": {
+                                    "description": "Optional. The number of models to retrieve per \"page\" of results. If there\nare more remaining results than this number, the response message will\ncontain a valid value in the `next_page_token` field.\n\nThe default value is 20, and the maximum page size is 100.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "parent": {
+                                    "description": "Required. The name of the project whose models are to be listed.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Optional. A page token to request the next page of results.\n\nYou get the token from the `next_page_token` field of the response from\nthe previous call.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+parent}/models",
+                            "response": {
+                                "$ref": "GoogleCloudMlV1__ListModelsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "setIamPolicy": {
+                            "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.",
+                            "httpMethod": "POST",
+                            "id": "ml.projects.models.setIamPolicy",
+                            "parameterOrder": [
+                                "resource"
+                            ],
+                            "parameters": {
+                                "resource": {
+                                    "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/models/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+resource}:setIamPolicy",
+                            "request": {
+                                "$ref": "GoogleIamV1__SetIamPolicyRequest"
+                            },
+                            "response": {
+                                "$ref": "GoogleIamV1__Policy"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "create": {
+                            "description": "Creates a model which will later contain one or more versions.\n\nYou must add at least one version before you can request predictions from\nthe model. Add versions by calling\n[projects.models.versions.create](/ml-engine/reference/rest/v1/projects.models.versions/create).",
+                            "httpMethod": "POST",
+                            "id": "ml.projects.models.create",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The project name.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+parent}/models",
+                            "request": {
+                                "$ref": "GoogleCloudMlV1__Model"
+                            },
+                            "response": {
+                                "$ref": "GoogleCloudMlV1__Model"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    },
+                    "resources": {
+                        "versions": {
+                            "methods": {
+                                "setDefault": {
+                                    "description": "Designates a version to be the default for the model.\n\nThe default version is used for prediction requests made against the model\nthat don't specify a version.\n\nThe first version to be created for a model is automatically set as the\ndefault. You must make any subsequent changes to the default version\nsetting manually using this method.",
+                                    "httpMethod": "POST",
+                                    "id": "ml.projects.models.versions.setDefault",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The name of the version to make the default for the model. You\ncan get the names of all the versions of a model by calling\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list).",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}:setDefault",
+                                    "request": {
+                                        "$ref": "GoogleCloudMlV1__SetDefaultVersionRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "GoogleCloudMlV1__Version"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a model version.\n\nEach model can have multiple versions deployed and in use at any given\ntime. Use this method to remove a single version.\n\nNote: You cannot delete the version that is set as the default version\nof the model unless it is the only remaining version.",
+                                    "httpMethod": "DELETE",
+                                    "id": "ml.projects.models.versions.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The name of the version. You can get the names of all the\nversions of a model by calling\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list).",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "GoogleLongrunning__Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Gets basic information about all the versions of a model.\n\nIf you expect that a model has a lot of versions, or if you need to handle\nonly a limited number of results at a time, you can request that the list\nbe retrieved in batches (called pages):",
+                                    "httpMethod": "GET",
+                                    "id": "ml.projects.models.versions.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "Required. The name of the model for which to list the version.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/models/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "Optional. A page token to request the next page of results.\n\nYou get the token from the `next_page_token` field of the response from\nthe previous call.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Optional. The number of versions to retrieve per \"page\" of results. If\nthere are more remaining results than this number, the response message\nwill contain a valid value in the `next_page_token` field.\n\nThe default value is 20, and the maximum page size is 100.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/versions",
+                                    "response": {
+                                        "$ref": "GoogleCloudMlV1__ListVersionsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "create": {
+                                    "description": "Creates a new version of a model from a trained TensorFlow model.\n\nIf the version created in the cloud by this call is the first deployed\nversion of the specified model, it will be made the default version of the\nmodel. When you add a version to a model that already has one or more\nversions, the default version does not automatically change. If you want a\nnew version to be the default, you must call\n[projects.models.versions.setDefault](/ml-engine/reference/rest/v1/projects.models.versions/setDefault).",
+                                    "httpMethod": "POST",
+                                    "id": "ml.projects.models.versions.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "Required. The name of the model.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/models/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/versions",
+                                    "request": {
+                                        "$ref": "GoogleCloudMlV1__Version"
+                                    },
+                                    "response": {
+                                        "$ref": "GoogleLongrunning__Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates the specified Version resource.\n\nCurrently the only supported field to update is `description`.",
+                                    "httpMethod": "PATCH",
+                                    "id": "ml.projects.models.versions.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The name of the model.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "Required. Specifies the path, relative to `Version`, of the field to\nupdate. Must be present and non-empty.\n\nFor example, to change the description of a version to \"foo\", the\n`update_mask` parameter would be specified as `description`, and the\n`PATCH` request body would specify the new value, as follows:\n    {\n      \"description\": \"foo\"\n    }\nIn this example, the version is blindly overwritten since no etag is given.\n\nTo adopt etag mechanism, include `etag` field in the mask, and include the\n`etag` value in your version resource.\n\nCurrently the only supported update masks are `description`, `labels`, and\n`etag`.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "request": {
+                                        "$ref": "GoogleCloudMlV1__Version"
+                                    },
+                                    "response": {
+                                        "$ref": "GoogleLongrunning__Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Gets information about a model version.\n\nModels can have multiple versions. You can call\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list)\nto get the same information that this method returns for all of the\nversions of a model.",
+                                    "httpMethod": "GET",
+                                    "id": "ml.projects.models.versions.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The name of the version.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "GoogleCloudMlV1__Version"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        }
+                    }
+                },
+                "operations": {
+                    "methods": {
+                        "delete": {
+                            "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.",
+                            "httpMethod": "DELETE",
+                            "id": "ml.projects.operations.delete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The name of the operation resource to be deleted.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/operations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "GoogleProtobuf__Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+                            "httpMethod": "GET",
+                            "id": "ml.projects.operations.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The name of the operation resource.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/operations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "GoogleLongrunning__Operation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+                            "httpMethod": "GET",
+                            "id": "ml.projects.operations.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "pageSize": {
+                                    "description": "The standard list page size.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filter": {
+                                    "description": "The standard list filter.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "The standard list page token.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "The name of the operation's parent resource.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}/operations",
+                            "response": {
+                                "$ref": "GoogleLongrunning__ListOperationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "cancel": {
+                            "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
+                            "httpMethod": "POST",
+                            "id": "ml.projects.operations.cancel",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The name of the operation resource to be cancelled.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/operations/[^/]+$",
                                     "required": true,
                                     "type": "string"
                                 }
                             },
                             "path": "v1/{+name}:cancel",
-                            "request": {
-                                "$ref": "GoogleCloudMlV1__CancelJobRequest"
-                            },
                             "response": {
                                 "$ref": "GoogleProtobuf__Empty"
                             },
@@ -896,6 +896,19 @@
             "description": "Represents a training or prediction job.\n\nNext ID: 16",
             "id": "GoogleCloudMlV1__Job",
             "properties": {
+                "errorMessage": {
+                    "description": "Output only. The details of a failure or a cancellation.",
+                    "type": "string"
+                },
+                "jobId": {
+                    "description": "Required. The user-specified id of the job.",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "Output only. When the job processing was completed.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
                 "startTime": {
                     "description": "Output only. When the job processing was started.",
                     "format": "google-datetime",
@@ -909,18 +922,14 @@
                     "$ref": "GoogleCloudMlV1__TrainingOutput",
                     "description": "The current training job result."
                 },
-                "createTime": {
-                    "description": "Output only. When the job was created.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
                 "trainingInput": {
                     "$ref": "GoogleCloudMlV1__TrainingInput",
                     "description": "Input parameters to create a training job."
                 },
-                "predictionInput": {
-                    "$ref": "GoogleCloudMlV1__PredictionInput",
-                    "description": "Input parameters to create a prediction job."
+                "createTime": {
+                    "description": "Output only. When the job was created.",
+                    "format": "google-datetime",
+                    "type": "string"
                 },
                 "state": {
                     "description": "Output only. The detailed state of a job.",
@@ -946,18 +955,9 @@
                     ],
                     "type": "string"
                 },
-                "jobId": {
-                    "description": "Required. The user-specified id of the job.",
-                    "type": "string"
-                },
-                "errorMessage": {
-                    "description": "Output only. The details of a failure or a cancellation.",
-                    "type": "string"
-                },
-                "endTime": {
-                    "description": "Output only. When the job processing was completed.",
-                    "format": "google-datetime",
-                    "type": "string"
+                "predictionInput": {
+                    "$ref": "GoogleCloudMlV1__PredictionInput",
+                    "description": "Input parameters to create a prediction job."
                 }
             },
             "type": "object"
@@ -966,6 +966,15 @@
             "description": "Message that represents an arbitrary HTTP body. It should only be used for\npayload formats that can't be represented as JSON, such as raw binary or\nan HTML page.\n\n\nThis message can be used both in streaming and non-streaming API methods in\nthe request as well as the response.\n\nIt can be used as a top-level request field, which is convenient if one\nwants to extract parameters from either the URL or HTTP template into the\nrequest fields and also want access to the raw HTTP body.\n\nExample:\n\n    message GetResourceRequest {\n      // A unique request id.\n      string request_id = 1;\n\n      // The raw HTTP body is bound to this field.\n      google.api.HttpBody http_body = 2;\n    }\n\n    service ResourceService {\n      rpc GetResource(GetResourceRequest) returns (google.api.HttpBody);\n      rpc UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty);\n    }\n\nExample with streaming methods:\n\n    service CaldavService {\n      rpc GetCalendar(stream google.api.HttpBody)\n        returns (stream google.api.HttpBody);\n      rpc UpdateCalendar(stream google.api.HttpBody)\n        returns (stream google.api.HttpBody);\n    }\n\nUse of this type only changes how the request and response bodies are\nhandled, all other features will continue to work unchanged.",
             "id": "GoogleApi__HttpBody",
             "properties": {
+                "data": {
+                    "description": "HTTP body binary data.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "contentType": {
+                    "description": "The HTTP Content-Type string representing the content type of the body.",
+                    "type": "string"
+                },
                 "extensions": {
                     "description": "Application specific response metadata. Must be set in the first response\nfor streaming APIs.",
                     "items": {
@@ -976,15 +985,6 @@
                         "type": "object"
                     },
                     "type": "array"
-                },
-                "data": {
-                    "description": "HTTP body binary data.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "contentType": {
-                    "description": "The HTTP Content-Type string representing the content type of the body.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1019,10 +1019,30 @@
             },
             "type": "object"
         },
+        "GoogleIamV1__SetIamPolicyRequest": {
+            "description": "Request message for `SetIamPolicy` method.",
+            "id": "GoogleIamV1__SetIamPolicyRequest",
+            "properties": {
+                "policy": {
+                    "$ref": "GoogleIamV1__Policy",
+                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
+                },
+                "updateMask": {
+                    "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudMlV1__HyperparameterOutput": {
             "description": "Represents the result of a single hyperparameter tuning trial from a\ntraining job. The TrainingOutput object that is returned on successful\ncompletion of a training job with hyperparameter tuning includes a list\nof HyperparameterOutput objects, one for each successful trial.",
             "id": "GoogleCloudMlV1__HyperparameterOutput",
             "properties": {
+                "trialId": {
+                    "description": "The trial id for these results.",
+                    "type": "string"
+                },
                 "allMetrics": {
                     "description": "All recorded object metrics for this trial. This field is not currently\npopulated.",
                     "items": {
@@ -1040,26 +1060,6 @@
                     },
                     "description": "The hyperparameters given to this trial.",
                     "type": "object"
-                },
-                "trialId": {
-                    "description": "The trial id for these results.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleIamV1__SetIamPolicyRequest": {
-            "description": "Request message for `SetIamPolicy` method.",
-            "id": "GoogleIamV1__SetIamPolicyRequest",
-            "properties": {
-                "policy": {
-                    "$ref": "GoogleIamV1__Policy",
-                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
-                },
-                "updateMask": {
-                    "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.",
-                    "format": "google-fieldmask",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1068,11 +1068,6 @@
             "description": "Represents results of a prediction job.",
             "id": "GoogleCloudMlV1__PredictionOutput",
             "properties": {
-                "errorCount": {
-                    "description": "The number of data instances which resulted in errors.",
-                    "format": "int64",
-                    "type": "string"
-                },
                 "nodeHours": {
                     "description": "Node hours used by the batch prediction job.",
                     "format": "double",
@@ -1086,6 +1081,11 @@
                     "description": "The number of generated predictions.",
                     "format": "int64",
                     "type": "string"
+                },
+                "errorCount": {
+                    "description": "The number of data instances which resulted in errors.",
+                    "format": "int64",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1094,11 +1094,6 @@
             "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
             "id": "GoogleIamV1__Policy",
             "properties": {
-                "etag": {
-                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
-                    "format": "byte",
-                    "type": "string"
-                },
                 "version": {
                     "description": "Version of the `Policy`. The default version is 0.",
                     "format": "int32",
@@ -1120,6 +1115,11 @@
                 },
                 "iamOwned": {
                     "type": "boolean"
+                },
+                "etag": {
+                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
+                    "format": "byte",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1128,16 +1128,16 @@
             "description": "The response message for Operations.ListOperations.",
             "id": "GoogleLongrunning__ListOperationsResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
-                },
                 "operations": {
                     "description": "A list of operations that matches the specified filter in the request.",
                     "items": {
                         "$ref": "GoogleLongrunning__Operation"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1154,6 +1154,34 @@
             },
             "type": "object"
         },
+        "GoogleCloudMlV1__TrainingOutput": {
+            "description": "Represents results of a training job. Output only.",
+            "id": "GoogleCloudMlV1__TrainingOutput",
+            "properties": {
+                "trials": {
+                    "description": "Results for individual Hyperparameter trials.\nOnly set for hyperparameter tuning jobs.",
+                    "items": {
+                        "$ref": "GoogleCloudMlV1__HyperparameterOutput"
+                    },
+                    "type": "array"
+                },
+                "completedTrialCount": {
+                    "description": "The number of hyperparameter tuning trials that completed successfully.\nOnly set for hyperparameter tuning jobs.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "isHyperparameterTuningJob": {
+                    "description": "Whether this job is a hyperparameter tuning job.",
+                    "type": "boolean"
+                },
+                "consumedMLUnits": {
+                    "description": "The amount of ML units consumed by the job.",
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
         "GoogleIamV1__Binding": {
             "description": "Associates `members` with a `role`.",
             "id": "GoogleIamV1__Binding",
@@ -1176,34 +1204,6 @@
             },
             "type": "object"
         },
-        "GoogleCloudMlV1__TrainingOutput": {
-            "description": "Represents results of a training job. Output only.",
-            "id": "GoogleCloudMlV1__TrainingOutput",
-            "properties": {
-                "completedTrialCount": {
-                    "description": "The number of hyperparameter tuning trials that completed successfully.\nOnly set for hyperparameter tuning jobs.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "isHyperparameterTuningJob": {
-                    "description": "Whether this job is a hyperparameter tuning job.",
-                    "type": "boolean"
-                },
-                "consumedMLUnits": {
-                    "description": "The amount of ML units consumed by the job.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "trials": {
-                    "description": "Results for individual Hyperparameter trials.\nOnly set for hyperparameter tuning jobs.",
-                    "items": {
-                        "$ref": "GoogleCloudMlV1__HyperparameterOutput"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "GoogleCloudMlV1__PredictRequest": {
             "description": "Request for predictions to be issued against a trained model.\n\nThe body of the request is a single JSON object with a single top-level\nfield:\n\n<dl>\n  <dt>instances</dt>\n  <dd>A JSON array containing values representing the instances to use for\n      prediction.</dd>\n</dl>\n\nThe structure of each element of the instances list is determined by your\nmodel's input definition. Instances can include named inputs or can contain\nonly unlabeled values.\n\nNot all data includes named inputs. Some instances will be simple\nJSON values (boolean, number, or string). However, instances are often lists\nof simple values, or complex nested lists. Here are some examples of request\nbodies:\n\nCSV data with each row encoded as a string value:\n<pre>\n{\"instances\": [\"1.0,true,\\\\\"x\\\\\"\", \"-2.0,false,\\\\\"y\\\\\"\"]}\n</pre>\nPlain text:\n<pre>\n{\"instances\": [\"the quick brown fox\", \"la bruja le dio\"]}\n</pre>\nSentences encoded as lists of words (vectors of strings):\n<pre>\n{\n  \"instances\": [\n    [\"the\",\"quick\",\"brown\"],\n    [\"la\",\"bruja\",\"le\"],\n    ...\n  ]\n}\n</pre>\nFloating point scalar values:\n<pre>\n{\"instances\": [0.0, 1.1, 2.2]}\n</pre>\nVectors of integers:\n<pre>\n{\n  \"instances\": [\n    [0, 1, 2],\n    [3, 4, 5],\n    ...\n  ]\n}\n</pre>\nTensors (in this case, two-dimensional tensors):\n<pre>\n{\n  \"instances\": [\n    [\n      [0, 1, 2],\n      [3, 4, 5]\n    ],\n    ...\n  ]\n}\n</pre>\nImages can be represented different ways. In this encoding scheme the first\ntwo dimensions represent the rows and columns of the image, and the third\ncontains lists (vectors) of the R, G, and B values for each pixel.\n<pre>\n{\n  \"instances\": [\n    [\n      [\n        [138, 30, 66],\n        [130, 20, 56],\n        ...\n      ],\n      [\n        [126, 38, 61],\n        [122, 24, 57],\n        ...\n      ],\n      ...\n    ],\n    ...\n  ]\n}\n</pre>\nJSON strings must be encoded as UTF-8. To send binary data, you must\nbase64-encode the data and mark it as binary. To mark a JSON string\nas binary, replace it with a JSON object with a single attribute named `b64`:\n<pre>{\"b64\": \"...\"} </pre>\nFor example:\n\nTwo Serialized tf.Examples (fake data, for illustrative purposes only):\n<pre>\n{\"instances\": [{\"b64\": \"X5ad6u\"}, {\"b64\": \"IA9j4nx\"}]}\n</pre>\nTwo JPEG image byte strings (fake data, for illustrative purposes only):\n<pre>\n{\"instances\": [{\"b64\": \"ASa8asdf\"}, {\"b64\": \"JLK7ljk3\"}]}\n</pre>\nIf your data includes named references, format each instance as a JSON object\nwith the named references as the keys:\n\nJSON input data to be preprocessed:\n<pre>\n{\n  \"instances\": [\n    {\n      \"a\": 1.0,\n      \"b\": true,\n      \"c\": \"x\"\n    },\n    {\n      \"a\": -2.0,\n      \"b\": false,\n      \"c\": \"y\"\n    }\n  ]\n}\n</pre>\nSome models have an underlying TensorFlow graph that accepts multiple input\ntensors. In this case, you should use the names of JSON name/value pairs to\nidentify the input tensors, as shown in the following exmaples:\n\nFor a graph with input tensor aliases \"tag\" (string) and \"image\"\n(base64-encoded string):\n<pre>\n{\n  \"instances\": [\n    {\n      \"tag\": \"beach\",\n      \"image\": {\"b64\": \"ASa8asdf\"}\n    },\n    {\n      \"tag\": \"car\",\n      \"image\": {\"b64\": \"JLK7ljk3\"}\n    }\n  ]\n}\n</pre>\nFor a graph with input tensor aliases \"tag\" (string) and \"image\"\n(3-dimensional array of 8-bit ints):\n<pre>\n{\n  \"instances\": [\n    {\n      \"tag\": \"beach\",\n      \"image\": [\n        [\n          [138, 30, 66],\n          [130, 20, 56],\n          ...\n        ],\n        [\n          [126, 38, 61],\n          [122, 24, 57],\n          ...\n        ],\n        ...\n      ]\n    },\n    {\n      \"tag\": \"car\",\n      \"image\": [\n        [\n          [255, 0, 102],\n          [255, 0, 97],\n          ...\n        ],\n        [\n          [254, 1, 101],\n          [254, 2, 93],\n          ...\n        ],\n        ...\n      ]\n    },\n    ...\n  ]\n}\n</pre>\nIf the call is successful, the response body will contain one prediction\nentry per instance in the request body. If prediction fails for any\ninstance, the response body will contain no predictions and will contian\na single error entry instead.",
             "id": "GoogleCloudMlV1__PredictRequest",
@@ -1219,15 +1219,15 @@
             "description": "An observed value of a metric.",
             "id": "GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric",
             "properties": {
-                "objectiveValue": {
-                    "description": "The objective value at this training step.",
-                    "format": "double",
-                    "type": "number"
-                },
                 "trainingStep": {
                     "description": "The global training step for this metric.",
                     "format": "int64",
                     "type": "string"
+                },
+                "objectiveValue": {
+                    "description": "The objective value at this training step.",
+                    "format": "double",
+                    "type": "number"
                 }
             },
             "type": "object"
@@ -1266,6 +1266,10 @@
                     "format": "google-datetime",
                     "type": "string"
                 },
+                "manualScaling": {
+                    "$ref": "GoogleCloudMlV1__ManualScaling",
+                    "description": "Manually select the number of nodes to use for serving the\nmodel. You should generally use `auto_scaling` with an appropriate\n`min_nodes` instead, but this option is available if you want more\npredictable billing. Beware that latency and error rates will increase\nif the traffic exceeds that capability of the system to serve it based\non the selected number of nodes."
+                },
                 "state": {
                     "description": "Output only. The state of a version.",
                     "enum": [
@@ -1284,10 +1288,6 @@
                     ],
                     "type": "string"
                 },
-                "manualScaling": {
-                    "$ref": "GoogleCloudMlV1__ManualScaling",
-                    "description": "Manually select the number of nodes to use for serving the\nmodel. You should generally use `auto_scaling` with an appropriate\n`min_nodes` instead, but this option is available if you want more\npredictable billing. Beware that latency and error rates will increase\nif the traffic exceeds that capability of the system to serve it based\non the selected number of nodes."
-                },
                 "name": {
                     "description": "Required.The name specified for the version when it was created.\n\nThe version name must be unique within the model it is created in.",
                     "type": "string"
@@ -1303,6 +1303,35 @@
             "description": "Represents a single hyperparameter to optimize.",
             "id": "GoogleCloudMlV1__ParameterSpec",
             "properties": {
+                "type": {
+                    "description": "Required. The type of the parameter.",
+                    "enum": [
+                        "PARAMETER_TYPE_UNSPECIFIED",
+                        "DOUBLE",
+                        "INTEGER",
+                        "CATEGORICAL",
+                        "DISCRETE"
+                    ],
+                    "enumDescriptions": [
+                        "You must specify a valid type. Using this unspecified type will result in\nan error.",
+                        "Type for real-valued parameters.",
+                        "Type for integral parameters.",
+                        "The parameter is categorical, with a value chosen from the categories\nfield.",
+                        "The parameter is real valued, with a fixed set of feasible points. If\n`type==DISCRETE`, feasible_points must be provided, and\n{`min_value`, `max_value`} will be ignored."
+                    ],
+                    "type": "string"
+                },
+                "categoricalValues": {
+                    "description": "Required if type is `CATEGORICAL`. The list of possible categories.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "parameterName": {
+                    "description": "Required. The parameter name must be unique amongst all ParameterConfigs in\na HyperparameterSpec message. E.g., \"learning_rate\".",
+                    "type": "string"
+                },
                 "minValue": {
                     "description": "Required if type is `DOUBLE` or `INTEGER`. This field\nshould be unset if type is `CATEGORICAL`. This value should be integers if\ntype is INTEGER.",
                     "format": "double",
@@ -1336,35 +1365,6 @@
                         "Scales the feasible space \"reverse\" logarithmically to (0, 1). The result\nis that values close to the top of the feasible space are spread out more\nthan points near the bottom. The entire feasible space must be strictly\npositive."
                     ],
                     "type": "string"
-                },
-                "type": {
-                    "description": "Required. The type of the parameter.",
-                    "enum": [
-                        "PARAMETER_TYPE_UNSPECIFIED",
-                        "DOUBLE",
-                        "INTEGER",
-                        "CATEGORICAL",
-                        "DISCRETE"
-                    ],
-                    "enumDescriptions": [
-                        "You must specify a valid type. Using this unspecified type will result in\nan error.",
-                        "Type for real-valued parameters.",
-                        "Type for integral parameters.",
-                        "The parameter is categorical, with a value chosen from the categories\nfield.",
-                        "The parameter is real valued, with a fixed set of feasible points. If\n`type==DISCRETE`, feasible_points must be provided, and\n{`min_value`, `max_value`} will be ignored."
-                    ],
-                    "type": "string"
-                },
-                "categoricalValues": {
-                    "description": "Required if type is `CATEGORICAL`. The list of possible categories.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "parameterName": {
-                    "description": "Required. The parameter name must be unique amongst all ParameterConfigs in\na HyperparameterSpec message. E.g., \"learning_rate\".",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1373,6 +1373,22 @@
             "description": "Represents input parameters for a prediction job.",
             "id": "GoogleCloudMlV1__PredictionInput",
             "properties": {
+                "dataFormat": {
+                    "description": "Required. The format of the input data files.",
+                    "enum": [
+                        "DATA_FORMAT_UNSPECIFIED",
+                        "TEXT",
+                        "TF_RECORD",
+                        "TF_RECORD_GZIP"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified format.",
+                        "The source file is a text file with instances separated by the\nnew-line character.",
+                        "The source file is a TFRecord file.",
+                        "The source file is a GZIP-compressed TFRecord file."
+                    ],
+                    "type": "string"
+                },
                 "runtimeVersion": {
                     "description": "Optional. The Google Cloud ML runtime version to use for this batch\nprediction. If not set, Google Cloud ML will pick the runtime version used\nduring the CreateVersion request for this model version, or choose the\nlatest stable version when model version information is not available\nsuch as when the model is specified by uri.",
                     "type": "string"
@@ -1405,82 +1421,13 @@
                     "description": "Required. The output Google Cloud Storage location.",
                     "type": "string"
                 },
-                "uri": {
-                    "description": "Use this field if you want to specify a Google Cloud Storage path for\nthe model to use.",
-                    "type": "string"
-                },
                 "maxWorkerCount": {
                     "description": "Optional. The maximum number of workers to be used for parallel processing.\nDefaults to 10 if not specified.",
                     "format": "int64",
                     "type": "string"
                 },
-                "dataFormat": {
-                    "description": "Required. The format of the input data files.",
-                    "enum": [
-                        "DATA_FORMAT_UNSPECIFIED",
-                        "TEXT",
-                        "TF_RECORD",
-                        "TF_RECORD_GZIP"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified format.",
-                        "The source file is a text file with instances separated by the\nnew-line character.",
-                        "The source file is a TFRecord file.",
-                        "The source file is a GZIP-compressed TFRecord file."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleType__Expr": {
-            "description": "Represents an expression text. Example:\n\n    title: \"User account presence\"\n    description: \"Determines whether the request has a user account\"\n    expression: \"size(request.user) > 0\"",
-            "id": "GoogleType__Expr",
-            "properties": {
-                "expression": {
-                    "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.",
-                    "type": "string"
-                },
-                "location": {
-                    "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.",
-                    "type": "string"
-                },
-                "title": {
-                    "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleIamV1__AuditLogConfig": {
-            "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n    {\n      \"audit_log_configs\": [\n        {\n          \"log_type\": \"DATA_READ\",\n          \"exempted_members\": [\n            \"user:foo@gmail.com\"\n          ]\n        },\n        {\n          \"log_type\": \"DATA_WRITE\",\n        }\n      ]\n    }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.",
-            "id": "GoogleIamV1__AuditLogConfig",
-            "properties": {
-                "exemptedMembers": {
-                    "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "logType": {
-                    "description": "The log type that this config enables.",
-                    "enum": [
-                        "LOG_TYPE_UNSPECIFIED",
-                        "ADMIN_READ",
-                        "DATA_WRITE",
-                        "DATA_READ"
-                    ],
-                    "enumDescriptions": [
-                        "Default case. Should never be this.",
-                        "Admin reads. Example: CloudIAM getIamPolicy",
-                        "Data writes. Example: CloudSQL Users create",
-                        "Data reads. Example: CloudSQL Users list"
-                    ],
+                "uri": {
+                    "description": "Use this field if you want to specify a Google Cloud Storage path for\nthe model to use.",
                     "type": "string"
                 }
             },
@@ -1490,15 +1437,6 @@
             "description": "Represents the metadata of the long-running operation.\n\nNext ID: 9",
             "id": "GoogleCloudMlV1__OperationMetadata",
             "properties": {
-                "isCancellationRequested": {
-                    "description": "Indicates whether a request to cancel this operation has been made.",
-                    "type": "boolean"
-                },
-                "createTime": {
-                    "description": "The time the operation was submitted.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
                 "modelName": {
                     "description": "Contains the name of the model associated with the operation.",
                     "type": "string"
@@ -1536,6 +1474,68 @@
                     "description": "The time operation processing started.",
                     "format": "google-datetime",
                     "type": "string"
+                },
+                "isCancellationRequested": {
+                    "description": "Indicates whether a request to cancel this operation has been made.",
+                    "type": "boolean"
+                },
+                "createTime": {
+                    "description": "The time the operation was submitted.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleType__Expr": {
+            "description": "Represents an expression text. Example:\n\n    title: \"User account presence\"\n    description: \"Determines whether the request has a user account\"\n    expression: \"size(request.user) > 0\"",
+            "id": "GoogleType__Expr",
+            "properties": {
+                "description": {
+                    "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.",
+                    "type": "string"
+                },
+                "expression": {
+                    "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.",
+                    "type": "string"
+                },
+                "location": {
+                    "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.",
+                    "type": "string"
+                },
+                "title": {
+                    "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleIamV1__AuditLogConfig": {
+            "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n    {\n      \"audit_log_configs\": [\n        {\n          \"log_type\": \"DATA_READ\",\n          \"exempted_members\": [\n            \"user:foo@gmail.com\"\n          ]\n        },\n        {\n          \"log_type\": \"DATA_WRITE\",\n        }\n      ]\n    }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.",
+            "id": "GoogleIamV1__AuditLogConfig",
+            "properties": {
+                "exemptedMembers": {
+                    "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "logType": {
+                    "description": "The log type that this config enables.",
+                    "enum": [
+                        "LOG_TYPE_UNSPECIFIED",
+                        "ADMIN_READ",
+                        "DATA_WRITE",
+                        "DATA_READ"
+                    ],
+                    "enumDescriptions": [
+                        "Default case. Should never be this.",
+                        "Admin reads. Example: CloudIAM getIamPolicy",
+                        "Data writes. Example: CloudSQL Users create",
+                        "Data reads. Example: CloudSQL Users list"
+                    ],
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1544,11 +1544,6 @@
             "description": "Represents a set of hyperparameters to optimize.",
             "id": "GoogleCloudMlV1__HyperparameterSpec",
             "properties": {
-                "maxParallelTrials": {
-                    "description": "Optional. The number of training trials to run concurrently.\nYou can reduce the time it takes to perform hyperparameter tuning by adding\ntrials in parallel. However, each trail only benefits from the information\ngained in completed trials. That means that a trial does not get access to\nthe results of trials running at the same time, which could reduce the\nquality of the overall optimization.\n\nEach trial will use the same scale tier and machine types.\n\nDefaults to one.",
-                    "format": "int32",
-                    "type": "integer"
-                },
                 "hyperparameterMetricTag": {
                     "description": "Optional. The Tensorflow summary tag name to use for optimizing trials. For\ncurrent versions of Tensorflow, this tag name should exactly match what is\nshown in Tensorboard, including all scopes.  For versions of Tensorflow\nprior to 0.12, this should be only the tag passed to tf.Summary.\nBy default, \"training/hptuning/metric\" will be used.",
                     "type": "string"
@@ -1578,6 +1573,11 @@
                         "$ref": "GoogleCloudMlV1__ParameterSpec"
                     },
                     "type": "array"
+                },
+                "maxParallelTrials": {
+                    "description": "Optional. The number of training trials to run concurrently.\nYou can reduce the time it takes to perform hyperparameter tuning by adding\ntrials in parallel. However, each trail only benefits from the information\ngained in completed trials. That means that a trial does not get access to\nthe results of trials running at the same time, which could reduce the\nquality of the overall optimization.\n\nEach trial will use the same scale tier and machine types.\n\nDefaults to one.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -1586,16 +1586,16 @@
             "description": "Response message for the ListJobs method.",
             "id": "GoogleCloudMlV1__ListJobsResponse",
             "properties": {
+                "nextPageToken": {
+                    "description": "Optional. Pass this token as the `page_token` field of the request for a\nsubsequent call.",
+                    "type": "string"
+                },
                 "jobs": {
                     "description": "The list of jobs.",
                     "items": {
                         "$ref": "GoogleCloudMlV1__Job"
                     },
                     "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "Optional. Pass this token as the `page_token` field of the request for a\nsubsequent call.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1641,30 +1641,6 @@
             },
             "type": "object"
         },
-        "GoogleIamV1__AuditConfig": {
-            "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
-            "id": "GoogleIamV1__AuditConfig",
-            "properties": {
-                "exemptedMembers": {
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "service": {
-                    "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
-                    "type": "string"
-                },
-                "auditLogConfigs": {
-                    "description": "The configuration for logging of each type of permission.\nNext ID: 4",
-                    "items": {
-                        "$ref": "GoogleIamV1__AuditLogConfig"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "GoogleCloudMlV1__Model": {
             "description": "Represents a machine learning solution.\n\nA model can have multiple versions, each of which is a deployed, trained\nmodel ready to receive prediction requests. The model itself is just a\ncontainer.\n\nNext ID: 8",
             "id": "GoogleCloudMlV1__Model",
@@ -1695,6 +1671,30 @@
             },
             "type": "object"
         },
+        "GoogleIamV1__AuditConfig": {
+            "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
+            "id": "GoogleIamV1__AuditConfig",
+            "properties": {
+                "exemptedMembers": {
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "service": {
+                    "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
+                    "type": "string"
+                },
+                "auditLogConfigs": {
+                    "description": "The configuration for logging of each type of permission.\nNext ID: 4",
+                    "items": {
+                        "$ref": "GoogleIamV1__AuditLogConfig"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "GoogleProtobuf__Empty": {
             "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
             "id": "GoogleProtobuf__Empty",
@@ -1705,16 +1705,16 @@
             "description": "Response message for the ListVersions method.",
             "id": "GoogleCloudMlV1__ListVersionsResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "Optional. Pass this token as the `page_token` field of the request for a\nsubsequent call.",
-                    "type": "string"
-                },
                 "versions": {
                     "description": "The list of versions.",
                     "items": {
                         "$ref": "GoogleCloudMlV1__Version"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Optional. Pass this token as the `page_token` field of the request for a\nsubsequent call.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1743,6 +1743,10 @@
             "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
             "id": "GoogleRpc__Status",
             "properties": {
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
                 "details": {
                     "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
                     "items": {
@@ -1758,10 +1762,6 @@
                     "description": "The status code, which should be an enum value of google.rpc.Code.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1778,28 +1778,31 @@
             },
             "type": "object"
         },
-        "GoogleCloudMlV1__ListModelsResponse": {
-            "description": "Response message for the ListModels method.",
-            "id": "GoogleCloudMlV1__ListModelsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Optional. Pass this token as the `page_token` field of the request for a\nsubsequent call.",
-                    "type": "string"
-                },
-                "models": {
-                    "description": "The list of models.",
-                    "items": {
-                        "$ref": "GoogleCloudMlV1__Model"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "GoogleCloudMlV1__TrainingInput": {
             "description": "Represents input parameters for a training job.",
             "id": "GoogleCloudMlV1__TrainingInput",
             "properties": {
+                "parameterServerCount": {
+                    "description": "Optional. The number of parameter server replicas to use for the training\njob. Each replica in the cluster will be of the type specified in\n`parameter_server_type`.\n\nThis value can only be used when `scale_tier` is set to `CUSTOM`.If you\nset this value, you must also set `parameter_server_type`.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "packageUris": {
+                    "description": "Required. The Google Cloud Storage location of the packages with\nthe training program and any additional dependencies.\nThe maximum number of package URIs is 100.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "workerCount": {
+                    "description": "Optional. The number of worker replicas to use for the training job. Each\nreplica in the cluster will be of the type specified in `worker_type`.\n\nThis value can only be used when `scale_tier` is set to `CUSTOM`. If you\nset this value, you must also set `worker_type`.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "masterType": {
+                    "description": "Optional. Specifies the type of virtual machine to use for your training\njob's master worker.\n\nThe following types are supported:\n\n<dl>\n  <dt>standard</dt>\n  <dd>\n  A basic machine configuration suitable for training simple models with\n  small to moderate datasets.\n  </dd>\n  <dt>large_model</dt>\n  <dd>\n  A machine with a lot of memory, specially suited for parameter servers\n  when your model is large (having many hidden layers or layers with very\n  large numbers of nodes).\n  </dd>\n  <dt>complex_model_s</dt>\n  <dd>\n  A machine suitable for the master and workers of the cluster when your\n  model requires more computation than the standard machine can handle\n  satisfactorily.\n  </dd>\n  <dt>complex_model_m</dt>\n  <dd>\n  A machine with roughly twice the number of cores and roughly double the\n  memory of <code suppresswarning=\"true\">complex_model_s</code>.\n  </dd>\n  <dt>complex_model_l</dt>\n  <dd>\n  A machine with roughly twice the number of cores and roughly double the\n  memory of <code suppresswarning=\"true\">complex_model_m</code>.\n  </dd>\n  <dt>standard_gpu</dt>\n  <dd>\n  A machine equivalent to <code suppresswarning=\"true\">standard</code> that\n  also includes a\n  <a href=\"/ml-engine/docs/how-tos/using-gpus\">\n  GPU that you can use in your trainer</a>.\n  </dd>\n  <dt>complex_model_m_gpu</dt>\n  <dd>\n  A machine equivalent to\n  <code suppresswarning=\"true\">complex_model_m</code> that also includes\n  four GPUs.\n  </dd>\n</dl>\n\nYou must set this value when `scaleTier` is set to `CUSTOM`.",
+                    "type": "string"
+                },
                 "runtimeVersion": {
                     "description": "Optional. The Google Cloud ML runtime version to use for training.  If not\nset, Google Cloud ML will choose the latest stable version.",
                     "type": "string"
@@ -1808,8 +1811,8 @@
                     "description": "Required. The Python module name to run after installing the packages.",
                     "type": "string"
                 },
-                "workerType": {
-                    "description": "Optional. Specifies the type of virtual machine to use for your training\njob's worker nodes.\n\nThe supported values are the same as those described in the entry for\n`masterType`.\n\nThis value must be present when `scaleTier` is set to `CUSTOM` and\n`workerCount` is greater than zero.",
+                "region": {
+                    "description": "Required. The Google Compute Engine region to run the training job in.",
                     "type": "string"
                 },
                 "args": {
@@ -1819,8 +1822,8 @@
                     },
                     "type": "array"
                 },
-                "region": {
-                    "description": "Required. The Google Compute Engine region to run the training job in.",
+                "workerType": {
+                    "description": "Optional. Specifies the type of virtual machine to use for your training\njob's worker nodes.\n\nThe supported values are the same as those described in the entry for\n`masterType`.\n\nThis value must be present when `scaleTier` is set to `CUSTOM` and\n`workerCount` is greater than zero.",
                     "type": "string"
                 },
                 "parameterServerType": {
@@ -1854,27 +1857,24 @@
                 "hyperparameters": {
                     "$ref": "GoogleCloudMlV1__HyperparameterSpec",
                     "description": "Optional. The set of Hyperparameters to tune."
-                },
-                "parameterServerCount": {
-                    "description": "Optional. The number of parameter server replicas to use for the training\njob. Each replica in the cluster will be of the type specified in\n`parameter_server_type`.\n\nThis value can only be used when `scale_tier` is set to `CUSTOM`.If you\nset this value, you must also set `parameter_server_type`.",
-                    "format": "int64",
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudMlV1__ListModelsResponse": {
+            "description": "Response message for the ListModels method.",
+            "id": "GoogleCloudMlV1__ListModelsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Optional. Pass this token as the `page_token` field of the request for a\nsubsequent call.",
                     "type": "string"
                 },
-                "packageUris": {
-                    "description": "Required. The Google Cloud Storage location of the packages with\nthe training program and any additional dependencies.\nThe maximum number of package URIs is 100.",
+                "models": {
+                    "description": "The list of models.",
                     "items": {
-                        "type": "string"
+                        "$ref": "GoogleCloudMlV1__Model"
                     },
                     "type": "array"
-                },
-                "workerCount": {
-                    "description": "Optional. The number of worker replicas to use for the training job. Each\nreplica in the cluster will be of the type specified in `worker_type`.\n\nThis value can only be used when `scale_tier` is set to `CUSTOM`. If you\nset this value, you must also set `worker_type`.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "masterType": {
-                    "description": "Optional. Specifies the type of virtual machine to use for your training\njob's master worker.\n\nThe following types are supported:\n\n<dl>\n  <dt>standard</dt>\n  <dd>\n  A basic machine configuration suitable for training simple models with\n  small to moderate datasets.\n  </dd>\n  <dt>large_model</dt>\n  <dd>\n  A machine with a lot of memory, specially suited for parameter servers\n  when your model is large (having many hidden layers or layers with very\n  large numbers of nodes).\n  </dd>\n  <dt>complex_model_s</dt>\n  <dd>\n  A machine suitable for the master and workers of the cluster when your\n  model requires more computation than the standard machine can handle\n  satisfactorily.\n  </dd>\n  <dt>complex_model_m</dt>\n  <dd>\n  A machine with roughly twice the number of cores and roughly double the\n  memory of <code suppresswarning=\"true\">complex_model_s</code>.\n  </dd>\n  <dt>complex_model_l</dt>\n  <dd>\n  A machine with roughly twice the number of cores and roughly double the\n  memory of <code suppresswarning=\"true\">complex_model_m</code>.\n  </dd>\n  <dt>standard_gpu</dt>\n  <dd>\n  A machine equivalent to <code suppresswarning=\"true\">standard</code> that\n  also includes a\n  <a href=\"/ml-engine/docs/how-tos/using-gpus\">\n  GPU that you can use in your trainer</a>.\n  </dd>\n  <dt>complex_model_m_gpu</dt>\n  <dd>\n  A machine equivalent to\n  <code suppresswarning=\"true\">complex_model_m</code> that also includes\n  four GPUs.\n  </dd>\n</dl>\n\nYou must set this value when `scaleTier` is set to `CUSTOM`.",
-                    "type": "string"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/monitoring__v3.json b/discovery/googleapis/monitoring__v3.json
index 8709b33..20d9a83 100644
--- a/discovery/googleapis/monitoring__v3.json
+++ b/discovery/googleapis/monitoring__v3.json
@@ -8,11 +8,11 @@
                 "https://www.googleapis.com/auth/monitoring.write": {
                     "description": "Publish metric data to your Google Cloud projects"
                 },
-                "https://www.googleapis.com/auth/monitoring.read": {
-                    "description": "View monitoring data for all of your Google Cloud and third-party projects"
-                },
                 "https://www.googleapis.com/auth/cloud-platform": {
                     "description": "View and manage your data across Google Cloud Platform services"
+                },
+                "https://www.googleapis.com/auth/monitoring.read": {
+                    "description": "View monitoring data for all of your Google Cloud and third-party projects"
                 }
             }
         }
@@ -45,13 +45,18 @@
             "location": "query",
             "type": "boolean"
         },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
         "uploadType": {
             "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "callback": {
+            "description": "JSONP",
             "location": "query",
             "type": "string"
         },
@@ -68,11 +73,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -152,6 +152,49 @@
                                 "https://www.googleapis.com/auth/monitoring"
                             ]
                         },
+                        "list": {
+                            "description": "Lists metric descriptors that match a filter. This method does not require a Stackdriver account.",
+                            "httpMethod": "GET",
+                            "id": "monitoring.projects.metricDescriptors.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "filter": {
+                                    "description": "If this field is empty, all custom and system-defined metric descriptors are returned. Otherwise, the filter specifies which metric descriptors are to be returned. For example, the following filter matches all custom metrics:\nmetric.type = starts_with(\"custom.googleapis.com/\")\n",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "A positive number that is the maximum number of results to return.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v3/{+name}/metricDescriptors",
+                            "response": {
+                                "$ref": "ListMetricDescriptorsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/monitoring",
+                                "https://www.googleapis.com/auth/monitoring.read",
+                                "https://www.googleapis.com/auth/monitoring.write"
+                            ]
+                        },
                         "get": {
                             "description": "Gets a single metric descriptor. This method does not require a Stackdriver account.",
                             "httpMethod": "GET",
@@ -179,49 +222,6 @@
                                 "https://www.googleapis.com/auth/monitoring.write"
                             ]
                         },
-                        "list": {
-                            "description": "Lists metric descriptors that match a filter. This method does not require a Stackdriver account.",
-                            "httpMethod": "GET",
-                            "id": "monitoring.projects.metricDescriptors.list",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "A positive number that is the maximum number of results to return.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "filter": {
-                                    "description": "If this field is empty, all custom and system-defined metric descriptors are returned. Otherwise, the filter specifies which metric descriptors are to be returned. For example, the following filter matches all custom metrics:\nmetric.type = starts_with(\"custom.googleapis.com/\")\n",
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v3/{+name}/metricDescriptors",
-                            "response": {
-                                "$ref": "ListMetricDescriptorsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/monitoring",
-                                "https://www.googleapis.com/auth/monitoring.read",
-                                "https://www.googleapis.com/auth/monitoring.write"
-                            ]
-                        },
                         "create": {
                             "description": "Creates a new metric descriptor. User-created metric descriptors define custom metrics.",
                             "httpMethod": "POST",
@@ -253,8 +253,367 @@
                         }
                     }
                 },
+                "timeSeries": {
+                    "methods": {
+                        "list": {
+                            "description": "Lists time series that match a filter. This method does not require a Stackdriver account.",
+                            "httpMethod": "GET",
+                            "id": "monitoring.projects.timeSeries.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "orderBy": {
+                                    "description": "Specifies the order in which the points of the time series should be returned. By default, results are not ordered. Currently, this field must be left blank.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "aggregation.crossSeriesReducer": {
+                                    "description": "The approach to be used to combine time series. Not all reducer functions may be applied to all time series, depending on the metric type and the value type of the original time series. Reduction may change the metric type of value type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned.",
+                                    "enum": [
+                                        "REDUCE_NONE",
+                                        "REDUCE_MEAN",
+                                        "REDUCE_MIN",
+                                        "REDUCE_MAX",
+                                        "REDUCE_SUM",
+                                        "REDUCE_STDDEV",
+                                        "REDUCE_COUNT",
+                                        "REDUCE_COUNT_TRUE",
+                                        "REDUCE_FRACTION_TRUE",
+                                        "REDUCE_PERCENTILE_99",
+                                        "REDUCE_PERCENTILE_95",
+                                        "REDUCE_PERCENTILE_50",
+                                        "REDUCE_PERCENTILE_05"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "filter": {
+                                    "description": "A monitoring filter that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example:\nmetric.type = \"compute.googleapis.com/instance/cpu/usage_time\" AND\n    metric.label.instance_name = \"my-instance-name\"\n",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "aggregation.perSeriesAligner": {
+                                    "description": "The approach to be used to align individual time series. Not all alignment functions may be applied to all time series, depending on the metric type and value type of the original time series. Alignment may change the metric type or the value type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned.",
+                                    "enum": [
+                                        "ALIGN_NONE",
+                                        "ALIGN_DELTA",
+                                        "ALIGN_RATE",
+                                        "ALIGN_INTERPOLATE",
+                                        "ALIGN_NEXT_OLDER",
+                                        "ALIGN_MIN",
+                                        "ALIGN_MAX",
+                                        "ALIGN_MEAN",
+                                        "ALIGN_COUNT",
+                                        "ALIGN_SUM",
+                                        "ALIGN_STDDEV",
+                                        "ALIGN_COUNT_TRUE",
+                                        "ALIGN_FRACTION_TRUE",
+                                        "ALIGN_PERCENTILE_99",
+                                        "ALIGN_PERCENTILE_95",
+                                        "ALIGN_PERCENTILE_50",
+                                        "ALIGN_PERCENTILE_05"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "interval.startTime": {
+                                    "description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.",
+                                    "format": "google-datetime",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "view": {
+                                    "description": "Specifies which information is returned about the time series.",
+                                    "enum": [
+                                        "FULL",
+                                        "HEADERS"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "aggregation.groupByFields": {
+                                    "description": "The set of fields to preserve when crossSeriesReducer is specified. The groupByFields determine how the time series are partitioned into subsets prior to applying the aggregation function. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The crossSeriesReducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in groupByFields are aggregated away. If groupByFields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If crossSeriesReducer is not defined, this field is ignored.",
+                                    "location": "query",
+                                    "repeated": true,
+                                    "type": "string"
+                                },
+                                "interval.endTime": {
+                                    "description": "Required. The end of the time interval.",
+                                    "format": "google-datetime",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "aggregation.alignmentPeriod": {
+                                    "description": "The alignment period for per-time series alignment. If present, alignmentPeriod must be at least 60 seconds. After per-time series alignment, each time series will contain data points only on the period boundaries. If perSeriesAligner is not specified or equals ALIGN_NONE, then this field is ignored. If perSeriesAligner is specified and does not equal ALIGN_NONE, then this field must be defined; otherwise an error is returned.",
+                                    "format": "google-duration",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "A positive number that is the maximum number of results to return. When view field sets to FULL, it limits the number of Points server will return; if view field is HEADERS, it limits the number of TimeSeries server will return.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v3/{+name}/timeSeries",
+                            "response": {
+                                "$ref": "ListTimeSeriesResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/monitoring",
+                                "https://www.googleapis.com/auth/monitoring.read"
+                            ]
+                        },
+                        "create": {
+                            "description": "Creates or adds data to one or more time series. The response is empty if all time series in the request were written. If any time series could not be written, a corresponding failure message is included in the error response.",
+                            "httpMethod": "POST",
+                            "id": "monitoring.projects.timeSeries.create",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v3/{+name}/timeSeries",
+                            "request": {
+                                "$ref": "CreateTimeSeriesRequest"
+                            },
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/monitoring",
+                                "https://www.googleapis.com/auth/monitoring.write"
+                            ]
+                        }
+                    }
+                },
+                "uptimeCheckConfigs": {
+                    "methods": {
+                        "delete": {
+                            "description": "Deletes an uptime check configuration. Note that this method will fail if the uptime check configuration is referenced by an alert policy or other dependent configs that would be rendered invalid by the deletion.",
+                            "httpMethod": "DELETE",
+                            "id": "monitoring.projects.uptimeCheckConfigs.delete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The uptime check configuration to delete. The format isprojects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID].",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/uptimeCheckConfigs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v3/{+name}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/monitoring"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists the existing valid uptime check configurations for the project, leaving out any invalid configurations.",
+                            "httpMethod": "GET",
+                            "id": "monitoring.projects.uptimeCheckConfigs.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "The project whose uptime check configurations are listed. The format isprojects/[PROJECT_ID].",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return more results from the previous method call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The maximum number of results to return in a single response. The server may further constrain the maximum number of results returned in a single page. If the page_size is <=0, the server will decide the number of results to be returned.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v3/{+parent}/uptimeCheckConfigs",
+                            "response": {
+                                "$ref": "ListUptimeCheckConfigsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/monitoring",
+                                "https://www.googleapis.com/auth/monitoring.read"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets a single uptime check configuration.",
+                            "httpMethod": "GET",
+                            "id": "monitoring.projects.uptimeCheckConfigs.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The uptime check configuration to retrieve. The format isprojects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID].",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/uptimeCheckConfigs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v3/{+name}",
+                            "response": {
+                                "$ref": "UptimeCheckConfig"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/monitoring",
+                                "https://www.googleapis.com/auth/monitoring.read"
+                            ]
+                        },
+                        "patch": {
+                            "description": "Updates an uptime check configuration. You can either replace the entire configuration with a new one or replace only certain fields in the current configuration by specifying the fields to be updated via \"updateMask\". Returns the updated configuration.",
+                            "httpMethod": "PATCH",
+                            "id": "monitoring.projects.uptimeCheckConfigs.patch",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "updateMask": {
+                                    "description": "Optional. If present, only the listed fields in the current uptime check configuration are updated with values from the new configuration. If this field is empty, then the current configuration is completely replaced with the new configuration.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name1": {
+                                    "description": "The uptime check configuration to update. The format isprojects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID].",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "A unique resource name for this UptimeCheckConfig. The format is:projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID].This field should be omitted when creating the uptime check configuration; on create, the resource name is assigned by the server and included in the response.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/uptimeCheckConfigs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v3/{+name}",
+                            "request": {
+                                "$ref": "UptimeCheckConfig"
+                            },
+                            "response": {
+                                "$ref": "UptimeCheckConfig"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/monitoring"
+                            ]
+                        },
+                        "create": {
+                            "description": "Creates a new uptime check configuration.",
+                            "httpMethod": "POST",
+                            "id": "monitoring.projects.uptimeCheckConfigs.create",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "The project in which to create the uptime check. The format is:projects/[PROJECT_ID].",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v3/{+parent}/uptimeCheckConfigs",
+                            "request": {
+                                "$ref": "UptimeCheckConfig"
+                            },
+                            "response": {
+                                "$ref": "UptimeCheckConfig"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/monitoring"
+                            ]
+                        }
+                    }
+                },
                 "monitoredResourceDescriptors": {
                     "methods": {
+                        "list": {
+                            "description": "Lists monitored resource descriptors that match a filter. This method does not require a Stackdriver account.",
+                            "httpMethod": "GET",
+                            "id": "monitoring.projects.monitoredResourceDescriptors.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "A positive number that is the maximum number of results to return.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filter": {
+                                    "description": "An optional filter describing the descriptors to be returned. The filter can reference the descriptor's type and labels. For example, the following filter returns only Google Compute Engine descriptors that have an id label:\nresource.type = starts_with(\"gce_\") AND resource.label:id\n",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v3/{+name}/monitoredResourceDescriptors",
+                            "response": {
+                                "$ref": "ListMonitoredResourceDescriptorsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/monitoring",
+                                "https://www.googleapis.com/auth/monitoring.read",
+                                "https://www.googleapis.com/auth/monitoring.write"
+                            ]
+                        },
                         "get": {
                             "description": "Gets a single monitored resource descriptor. This method does not require a Stackdriver account.",
                             "httpMethod": "GET",
@@ -281,120 +640,11 @@
                                 "https://www.googleapis.com/auth/monitoring.read",
                                 "https://www.googleapis.com/auth/monitoring.write"
                             ]
-                        },
-                        "list": {
-                            "description": "Lists monitored resource descriptors that match a filter. This method does not require a Stackdriver account.",
-                            "httpMethod": "GET",
-                            "id": "monitoring.projects.monitoredResourceDescriptors.list",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "filter": {
-                                    "description": "An optional filter describing the descriptors to be returned. The filter can reference the descriptor's type and labels. For example, the following filter returns only Google Compute Engine descriptors that have an id label:\nresource.type = starts_with(\"gce_\") AND resource.label:id\n",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "A positive number that is the maximum number of results to return.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v3/{+name}/monitoredResourceDescriptors",
-                            "response": {
-                                "$ref": "ListMonitoredResourceDescriptorsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/monitoring",
-                                "https://www.googleapis.com/auth/monitoring.read",
-                                "https://www.googleapis.com/auth/monitoring.write"
-                            ]
                         }
                     }
                 },
                 "groups": {
                     "methods": {
-                        "update": {
-                            "description": "Updates an existing group. You can change any group attributes except name.",
-                            "httpMethod": "PUT",
-                            "id": "monitoring.projects.groups.update",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "validateOnly": {
-                                    "description": "If true, validate this request but do not update the existing group.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
-                                "name": {
-                                    "description": "Output only. The name of this group. The format is \"projects/{project_id_or_number}/groups/{group_id}\". When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/groups/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v3/{+name}",
-                            "request": {
-                                "$ref": "Group"
-                            },
-                            "response": {
-                                "$ref": "Group"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/monitoring"
-                            ]
-                        },
-                        "create": {
-                            "description": "Creates a new group.",
-                            "httpMethod": "POST",
-                            "id": "monitoring.projects.groups.create",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "validateOnly": {
-                                    "description": "If true, validate this request but do not create the group.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
-                                "name": {
-                                    "description": "The project in which to create the group. The format is \"projects/{project_id_or_number}\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v3/{+name}/groups",
-                            "request": {
-                                "$ref": "Group"
-                            },
-                            "response": {
-                                "$ref": "Group"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/monitoring"
-                            ]
-                        },
                         "delete": {
                             "description": "Deletes an existing group.",
                             "httpMethod": "DELETE",
@@ -420,32 +670,6 @@
                                 "https://www.googleapis.com/auth/monitoring"
                             ]
                         },
-                        "get": {
-                            "description": "Gets a single group.",
-                            "httpMethod": "GET",
-                            "id": "monitoring.projects.groups.get",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "The group to retrieve. The format is \"projects/{project_id_or_number}/groups/{group_id}\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/groups/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v3/{+name}",
-                            "response": {
-                                "$ref": "Group"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/monitoring",
-                                "https://www.googleapis.com/auth/monitoring.read"
-                            ]
-                        },
                         "list": {
                             "description": "Lists the existing groups.",
                             "httpMethod": "GET",
@@ -497,6 +721,98 @@
                                 "https://www.googleapis.com/auth/monitoring",
                                 "https://www.googleapis.com/auth/monitoring.read"
                             ]
+                        },
+                        "get": {
+                            "description": "Gets a single group.",
+                            "httpMethod": "GET",
+                            "id": "monitoring.projects.groups.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The group to retrieve. The format is \"projects/{project_id_or_number}/groups/{group_id}\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/groups/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v3/{+name}",
+                            "response": {
+                                "$ref": "Group"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/monitoring",
+                                "https://www.googleapis.com/auth/monitoring.read"
+                            ]
+                        },
+                        "update": {
+                            "description": "Updates an existing group. You can change any group attributes except name.",
+                            "httpMethod": "PUT",
+                            "id": "monitoring.projects.groups.update",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Output only. The name of this group. The format is \"projects/{project_id_or_number}/groups/{group_id}\". When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/groups/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "validateOnly": {
+                                    "description": "If true, validate this request but do not update the existing group.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                }
+                            },
+                            "path": "v3/{+name}",
+                            "request": {
+                                "$ref": "Group"
+                            },
+                            "response": {
+                                "$ref": "Group"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/monitoring"
+                            ]
+                        },
+                        "create": {
+                            "description": "Creates a new group.",
+                            "httpMethod": "POST",
+                            "id": "monitoring.projects.groups.create",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The project in which to create the group. The format is \"projects/{project_id_or_number}\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "validateOnly": {
+                                    "description": "If true, validate this request but do not create the group.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                }
+                            },
+                            "path": "v3/{+name}/groups",
+                            "request": {
+                                "$ref": "Group"
+                            },
+                            "response": {
+                                "$ref": "Group"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/monitoring"
+                            ]
                         }
                     },
                     "resources": {
@@ -510,13 +826,6 @@
                                         "name"
                                     ],
                                     "parameters": {
-                                        "name": {
-                                            "description": "The group whose members are listed. The format is \"projects/{project_id_or_number}/groups/{group_id}\".",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/groups/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        },
                                         "interval.endTime": {
                                             "description": "Required. The end of the time interval.",
                                             "format": "google-datetime",
@@ -533,17 +842,24 @@
                                             "location": "query",
                                             "type": "string"
                                         },
+                                        "pageSize": {
+                                            "description": "A positive number that is the maximum number of results to return.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
                                         "interval.startTime": {
                                             "description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.",
                                             "format": "google-datetime",
                                             "location": "query",
                                             "type": "string"
                                         },
-                                        "pageSize": {
-                                            "description": "A positive number that is the maximum number of results to return.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
+                                        "name": {
+                                            "description": "The group whose members are listed. The format is \"projects/{project_id_or_number}/groups/{group_id}\".",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/groups/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
                                         }
                                     },
                                     "path": "v3/{+name}/members",
@@ -592,485 +908,45 @@
                             ]
                         }
                     }
-                },
-                "timeSeries": {
-                    "methods": {
-                        "create": {
-                            "description": "Creates or adds data to one or more time series. The response is empty if all time series in the request were written. If any time series could not be written, a corresponding failure message is included in the error response.",
-                            "httpMethod": "POST",
-                            "id": "monitoring.projects.timeSeries.create",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v3/{+name}/timeSeries",
-                            "request": {
-                                "$ref": "CreateTimeSeriesRequest"
-                            },
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/monitoring",
-                                "https://www.googleapis.com/auth/monitoring.write"
-                            ]
+                }
+            }
+        },
+        "uptimeCheckIps": {
+            "methods": {
+                "list": {
+                    "description": "Returns the list of IPs that checkers run from",
+                    "httpMethod": "GET",
+                    "id": "monitoring.uptimeCheckIps.list",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "pageToken": {
+                            "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return more results from the previous method call. NOTE: this field is not yet implemented",
+                            "location": "query",
+                            "type": "string"
                         },
-                        "list": {
-                            "description": "Lists time series that match a filter. This method does not require a Stackdriver account.",
-                            "httpMethod": "GET",
-                            "id": "monitoring.projects.timeSeries.list",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "aggregation.groupByFields": {
-                                    "description": "The set of fields to preserve when crossSeriesReducer is specified. The groupByFields determine how the time series are partitioned into subsets prior to applying the aggregation function. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The crossSeriesReducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in groupByFields are aggregated away. If groupByFields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If crossSeriesReducer is not defined, this field is ignored.",
-                                    "location": "query",
-                                    "repeated": true,
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "interval.endTime": {
-                                    "description": "Required. The end of the time interval.",
-                                    "format": "google-datetime",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "aggregation.alignmentPeriod": {
-                                    "description": "The alignment period for per-time series alignment. If present, alignmentPeriod must be at least 60 seconds. After per-time series alignment, each time series will contain data points only on the period boundaries. If perSeriesAligner is not specified or equals ALIGN_NONE, then this field is ignored. If perSeriesAligner is specified and does not equal ALIGN_NONE, then this field must be defined; otherwise an error is returned.",
-                                    "format": "google-duration",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "A positive number that is the maximum number of results to return. When view field sets to FULL, it limits the number of Points server will return; if view field is HEADERS, it limits the number of TimeSeries server will return.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "orderBy": {
-                                    "description": "Specifies the order in which the points of the time series should be returned. By default, results are not ordered. Currently, this field must be left blank.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "aggregation.crossSeriesReducer": {
-                                    "description": "The approach to be used to combine time series. Not all reducer functions may be applied to all time series, depending on the metric type and the value type of the original time series. Reduction may change the metric type of value type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned.",
-                                    "enum": [
-                                        "REDUCE_NONE",
-                                        "REDUCE_MEAN",
-                                        "REDUCE_MIN",
-                                        "REDUCE_MAX",
-                                        "REDUCE_SUM",
-                                        "REDUCE_STDDEV",
-                                        "REDUCE_COUNT",
-                                        "REDUCE_COUNT_TRUE",
-                                        "REDUCE_FRACTION_TRUE",
-                                        "REDUCE_PERCENTILE_99",
-                                        "REDUCE_PERCENTILE_95",
-                                        "REDUCE_PERCENTILE_50",
-                                        "REDUCE_PERCENTILE_05"
-                                    ],
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "filter": {
-                                    "description": "A monitoring filter that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example:\nmetric.type = \"compute.googleapis.com/instance/cpu/usage_time\" AND\n    metric.label.instance_name = \"my-instance-name\"\n",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "aggregation.perSeriesAligner": {
-                                    "description": "The approach to be used to align individual time series. Not all alignment functions may be applied to all time series, depending on the metric type and value type of the original time series. Alignment may change the metric type or the value type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned.",
-                                    "enum": [
-                                        "ALIGN_NONE",
-                                        "ALIGN_DELTA",
-                                        "ALIGN_RATE",
-                                        "ALIGN_INTERPOLATE",
-                                        "ALIGN_NEXT_OLDER",
-                                        "ALIGN_MIN",
-                                        "ALIGN_MAX",
-                                        "ALIGN_MEAN",
-                                        "ALIGN_COUNT",
-                                        "ALIGN_SUM",
-                                        "ALIGN_STDDEV",
-                                        "ALIGN_COUNT_TRUE",
-                                        "ALIGN_FRACTION_TRUE",
-                                        "ALIGN_PERCENTILE_99",
-                                        "ALIGN_PERCENTILE_95",
-                                        "ALIGN_PERCENTILE_50",
-                                        "ALIGN_PERCENTILE_05"
-                                    ],
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "interval.startTime": {
-                                    "description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.",
-                                    "format": "google-datetime",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "view": {
-                                    "description": "Specifies which information is returned about the time series.",
-                                    "enum": [
-                                        "FULL",
-                                        "HEADERS"
-                                    ],
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v3/{+name}/timeSeries",
-                            "response": {
-                                "$ref": "ListTimeSeriesResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/monitoring",
-                                "https://www.googleapis.com/auth/monitoring.read"
-                            ]
+                        "pageSize": {
+                            "description": "The maximum number of results to return in a single response. The server may further constrain the maximum number of results returned in a single page. If the page_size is <=0, the server will decide the number of results to be returned. NOTE: this field is not yet implemented",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
                         }
-                    }
+                    },
+                    "path": "v3/uptimeCheckIps",
+                    "response": {
+                        "$ref": "ListUptimeCheckIpsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/monitoring",
+                        "https://www.googleapis.com/auth/monitoring.read"
+                    ]
                 }
             }
         }
     },
-    "revision": "20170925",
+    "revision": "20171016",
     "rootUrl": "https://monitoring.googleapis.com/",
     "schemas": {
-        "Explicit": {
-            "description": "Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): boundsi  Lower bound (1 <= i < N); boundsi - 1The bounds field must contain at least one element. If bounds has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets.",
-            "id": "Explicit",
-            "properties": {
-                "bounds": {
-                    "description": "The values must be monotonically increasing.",
-                    "items": {
-                        "format": "double",
-                        "type": "number"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "TimeInterval": {
-            "description": "A time interval extending just after a start time through an end time. If the start time is the same as the end time, then the interval represents a single point in time.",
-            "id": "TimeInterval",
-            "properties": {
-                "endTime": {
-                    "description": "Required. The end of the time interval.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Exponential": {
-            "description": "Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): scale * (growth_factor ^ i).  Lower bound (1 <= i < N): scale * (growth_factor ^ (i - 1)).",
-            "id": "Exponential",
-            "properties": {
-                "growthFactor": {
-                    "description": "Must be greater than 1.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "scale": {
-                    "description": "Must be greater than 0.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "numFiniteBuckets": {
-                    "description": "Must be greater than 0.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "Point": {
-            "description": "A single data point in a time series.",
-            "id": "Point",
-            "properties": {
-                "interval": {
-                    "$ref": "TimeInterval",
-                    "description": "The time interval to which the data point applies. For GAUGE metrics, only the end time of the interval is used. For DELTA metrics, the start and end time should specify a non-zero interval, with subsequent points specifying contiguous and non-overlapping intervals. For CUMULATIVE metrics, the start and end time should specify a non-zero interval, with subsequent points specifying the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points."
-                },
-                "value": {
-                    "$ref": "TypedValue",
-                    "description": "The value of the data point."
-                }
-            },
-            "type": "object"
-        },
-        "Metric": {
-            "description": "A specific metric, identified by specifying values for all of the labels of a MetricDescriptor.",
-            "id": "Metric",
-            "properties": {
-                "type": {
-                    "description": "An existing metric type, see google.api.MetricDescriptor. For example, custom.googleapis.com/invoice/paid/amount.",
-                    "type": "string"
-                },
-                "labels": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "The set of label values that uniquely identify this metric. All labels listed in the MetricDescriptor must be assigned values.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "Field": {
-            "description": "A single field of a message type.",
-            "id": "Field",
-            "properties": {
-                "typeUrl": {
-                    "description": "The field type URL, without the scheme, for message or enumeration types. Example: \"type.googleapis.com/google.protobuf.Timestamp\".",
-                    "type": "string"
-                },
-                "number": {
-                    "description": "The field number.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "jsonName": {
-                    "description": "The field JSON name.",
-                    "type": "string"
-                },
-                "kind": {
-                    "description": "The field type.",
-                    "enum": [
-                        "TYPE_UNKNOWN",
-                        "TYPE_DOUBLE",
-                        "TYPE_FLOAT",
-                        "TYPE_INT64",
-                        "TYPE_UINT64",
-                        "TYPE_INT32",
-                        "TYPE_FIXED64",
-                        "TYPE_FIXED32",
-                        "TYPE_BOOL",
-                        "TYPE_STRING",
-                        "TYPE_GROUP",
-                        "TYPE_MESSAGE",
-                        "TYPE_BYTES",
-                        "TYPE_UINT32",
-                        "TYPE_ENUM",
-                        "TYPE_SFIXED32",
-                        "TYPE_SFIXED64",
-                        "TYPE_SINT32",
-                        "TYPE_SINT64"
-                    ],
-                    "enumDescriptions": [
-                        "Field type unknown.",
-                        "Field type double.",
-                        "Field type float.",
-                        "Field type int64.",
-                        "Field type uint64.",
-                        "Field type int32.",
-                        "Field type fixed64.",
-                        "Field type fixed32.",
-                        "Field type bool.",
-                        "Field type string.",
-                        "Field type group. Proto2 syntax only, and deprecated.",
-                        "Field type message.",
-                        "Field type bytes.",
-                        "Field type uint32.",
-                        "Field type enum.",
-                        "Field type sfixed32.",
-                        "Field type sfixed64.",
-                        "Field type sint32.",
-                        "Field type sint64."
-                    ],
-                    "type": "string"
-                },
-                "options": {
-                    "description": "The protocol buffer options.",
-                    "items": {
-                        "$ref": "Option"
-                    },
-                    "type": "array"
-                },
-                "oneofIndex": {
-                    "description": "The index of the field type in Type.oneofs, for message or enumeration types. The first type has index 1; zero means the type is not in the list.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "packed": {
-                    "description": "Whether to use alternative packed wire representation.",
-                    "type": "boolean"
-                },
-                "cardinality": {
-                    "description": "The field cardinality.",
-                    "enum": [
-                        "CARDINALITY_UNKNOWN",
-                        "CARDINALITY_OPTIONAL",
-                        "CARDINALITY_REQUIRED",
-                        "CARDINALITY_REPEATED"
-                    ],
-                    "enumDescriptions": [
-                        "For fields with unknown cardinality.",
-                        "For optional fields.",
-                        "For required fields. Proto2 syntax only.",
-                        "For repeated fields."
-                    ],
-                    "type": "string"
-                },
-                "defaultValue": {
-                    "description": "The string value of the default value of this field. Proto2 syntax only.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The field name.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListTimeSeriesResponse": {
-            "description": "The ListTimeSeries response.",
-            "id": "ListTimeSeriesResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method.",
-                    "type": "string"
-                },
-                "timeSeries": {
-                    "description": "One or more time series that match the filter included in the request.",
-                    "items": {
-                        "$ref": "TimeSeries"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "LabelDescriptor": {
-            "description": "A description of a label.",
-            "id": "LabelDescriptor",
-            "properties": {
-                "key": {
-                    "description": "The label key.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "A human-readable description for the label.",
-                    "type": "string"
-                },
-                "valueType": {
-                    "description": "The type of data that can be assigned to the label.",
-                    "enum": [
-                        "STRING",
-                        "BOOL",
-                        "INT64"
-                    ],
-                    "enumDescriptions": [
-                        "A variable-length string. This is the default.",
-                        "Boolean; true or false.",
-                        "A 64-bit signed integer."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Type": {
-            "description": "A protocol buffer message type.",
-            "id": "Type",
-            "properties": {
-                "syntax": {
-                    "description": "The source syntax.",
-                    "enum": [
-                        "SYNTAX_PROTO2",
-                        "SYNTAX_PROTO3"
-                    ],
-                    "enumDescriptions": [
-                        "Syntax proto2.",
-                        "Syntax proto3."
-                    ],
-                    "type": "string"
-                },
-                "sourceContext": {
-                    "$ref": "SourceContext",
-                    "description": "The source context."
-                },
-                "options": {
-                    "description": "The protocol buffer options.",
-                    "items": {
-                        "$ref": "Option"
-                    },
-                    "type": "array"
-                },
-                "fields": {
-                    "description": "The list of fields.",
-                    "items": {
-                        "$ref": "Field"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "The fully qualified message name.",
-                    "type": "string"
-                },
-                "oneofs": {
-                    "description": "The list of types appearing in oneof definitions in this type.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Group": {
-            "description": "The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: \"environment\" and \"role\". A parent group has a filter, environment=\"production\". A child of that parent group has a filter, role=\"transcoder\". The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.",
-            "id": "Group",
-            "properties": {
-                "parentName": {
-                    "description": "The name of the group's parent, if it has one. The format is \"projects/{project_id_or_number}/groups/{group_id}\". For groups with no parent, parentName is the empty string, \"\".",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Output only. The name of this group. The format is \"projects/{project_id_or_number}/groups/{group_id}\". When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "A user-assigned name for this group, used only for display purposes.",
-                    "type": "string"
-                },
-                "isCluster": {
-                    "description": "If true, the members of this group are considered to be a cluster. The system can perform additional analysis on groups that are clusters.",
-                    "type": "boolean"
-                },
-                "filter": {
-                    "description": "The filter used to determine which monitored resources belong to this group.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "BucketOptions": {
             "description": "BucketOptions describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. BucketOptions does not include the number of values in each bucket.A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i > 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.",
             "id": "BucketOptions",
@@ -1079,13 +955,75 @@
                     "$ref": "Exponential",
                     "description": "The exponential buckets."
                 },
-                "explicitBuckets": {
-                    "$ref": "Explicit",
-                    "description": "The explicit buckets."
-                },
                 "linearBuckets": {
                     "$ref": "Linear",
                     "description": "The linear bucket."
+                },
+                "explicitBuckets": {
+                    "$ref": "Explicit",
+                    "description": "The explicit buckets."
+                }
+            },
+            "type": "object"
+        },
+        "HttpCheck": {
+            "description": "Information involved in an HTTP/HTTPS uptime check request.",
+            "id": "HttpCheck",
+            "properties": {
+                "headers": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "The list of headers to send as part of the uptime check request. If two headers have the same key and different values, they should be entered as a single header, with the value being a comma-separated list of all the desired values as described at https://www.w3.org/Protocols/rfc2616/rfc2616.txt (page 31). Entering two separate headers with the same key in a Create call will cause the first to be overwritten by the second.",
+                    "type": "object"
+                },
+                "path": {
+                    "description": "The path to the page to run the check against. Will be combined with the host (specified within the MonitoredResource) and port to construct the full URL. Optional (defaults to \"/\").",
+                    "type": "string"
+                },
+                "port": {
+                    "description": "The port to the page to run the check against. Will be combined with host (specified within the MonitoredResource) and path to construct the full URL. Optional (defaults to 80 without SSL, or 443 with SSL).",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "useSsl": {
+                    "description": "If true, use HTTPS instead of HTTP to run the check.",
+                    "type": "boolean"
+                },
+                "maskHeaders": {
+                    "description": "Boolean specifiying whether to encrypt the header information. Encryption should be specified for any headers related to authentication that you do not wish to be seen when retrieving the configuration. The server will be responsible for encrypting the headers. On Get/List calls, if mask_headers is set to True then the headers will be obscured with ******.",
+                    "type": "boolean"
+                },
+                "authInfo": {
+                    "$ref": "BasicAuthentication",
+                    "description": "The authentication information. Optional when creating an HTTP check; defaults to empty."
+                }
+            },
+            "type": "object"
+        },
+        "Status": {
+            "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.",
+            "id": "Status",
+            "properties": {
+                "details": {
+                    "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                },
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1094,6 +1032,10 @@
             "description": "A single data point from a collectd-based plugin.",
             "id": "CollectdValue",
             "properties": {
+                "dataSourceName": {
+                    "description": "The data source for the collectd value. For example there are two data sources for network measurements: \"rx\" and \"tx\".",
+                    "type": "string"
+                },
                 "value": {
                     "$ref": "TypedValue",
                     "description": "The measurement value."
@@ -1115,37 +1057,6 @@
                         "An amount of change since the last measurement interval. This corresponds to google.api.MetricDescriptor.MetricKind.DELTA."
                     ],
                     "type": "string"
-                },
-                "dataSourceName": {
-                    "description": "The data source for the collectd value. For example there are two data sources for network measurements: \"rx\" and \"tx\".",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Status": {
-            "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.",
-            "id": "Status",
-            "properties": {
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                },
-                "details": {
-                    "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                },
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -1154,6 +1065,25 @@
             "description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.",
             "id": "MetricDescriptor",
             "properties": {
+                "unit": {
+                    "description": "The unit in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The supported units are a subset of The Unified Code for Units of Measure (http://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT)\nbit bit\nBy byte\ns second\nmin minute\nh hour\nd dayPrefixes (PREFIX)\nk kilo (10**3)\nM mega (10**6)\nG giga (10**9)\nT tera (10**12)\nP peta (10**15)\nE exa (10**18)\nZ zetta (10**21)\nY yotta (10**24)\nm milli (10**-3)\nu micro (10**-6)\nn nano (10**-9)\np pico (10**-12)\nf femto (10**-15)\na atto (10**-18)\nz zepto (10**-21)\ny yocto (10**-24)\nKi kibi (2**10)\nMi mebi (2**20)\nGi gibi (2**30)\nTi tebi (2**40)GrammarThe grammar includes the dimensionless unit 1, such as 1/s.The grammar also includes these connectors:\n/ division (as an infix operator, e.g. 1/s).\n. multiplication (as an infix operator, e.g. GBy.d)The grammar for a unit is as follows:\nExpression = Component { \".\" Component } { \"/\" Component } ;\n\nComponent = [ PREFIX ] UNIT [ Annotation ]\n          | Annotation\n          | \"1\"\n          ;\n\nAnnotation = \"{\" NAME \"}\" ;\nNotes:\nAnnotation is just a comment if it follows a UNIT and is  equivalent to 1 if it is used alone. For examples,  {requests}/s == 1/s, By{transmitted}/s == By/s.\nNAME is a sequence of non-blank printable ASCII characters not  containing '{' or '}'.",
+                    "type": "string"
+                },
+                "labels": {
+                    "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed.",
+                    "items": {
+                        "$ref": "LabelDescriptor"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The resource name of the metric descriptor.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined custom metric types have the DNS name custom.googleapis.com. Metric types should use a natural hierarchical grouping. For example:\n\"custom.googleapis.com/invoice/paid/amount\"\n\"appengine.googleapis.com/http/server/response_latencies\"\n",
+                    "type": "string"
+                },
                 "valueType": {
                     "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported.",
                     "enum": [
@@ -1192,31 +1122,12 @@
                     ],
                     "type": "string"
                 },
-                "displayName": {
-                    "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\".",
-                    "type": "string"
-                },
                 "description": {
                     "description": "A detailed description of the metric, which can be used in documentation.",
                     "type": "string"
                 },
-                "unit": {
-                    "description": "The unit in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The supported units are a subset of The Unified Code for Units of Measure (http://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT)\nbit bit\nBy byte\ns second\nmin minute\nh hour\nd dayPrefixes (PREFIX)\nk kilo (10**3)\nM mega (10**6)\nG giga (10**9)\nT tera (10**12)\nP peta (10**15)\nE exa (10**18)\nZ zetta (10**21)\nY yotta (10**24)\nm milli (10**-3)\nu micro (10**-6)\nn nano (10**-9)\np pico (10**-12)\nf femto (10**-15)\na atto (10**-18)\nz zepto (10**-21)\ny yocto (10**-24)\nKi kibi (2**10)\nMi mebi (2**20)\nGi gibi (2**30)\nTi tebi (2**40)GrammarThe grammar includes the dimensionless unit 1, such as 1/s.The grammar also includes these connectors:\n/ division (as an infix operator, e.g. 1/s).\n. multiplication (as an infix operator, e.g. GBy.d)The grammar for a unit is as follows:\nExpression = Component { \".\" Component } { \"/\" Component } ;\n\nComponent = [ PREFIX ] UNIT [ Annotation ]\n          | Annotation\n          | \"1\"\n          ;\n\nAnnotation = \"{\" NAME \"}\" ;\nNotes:\nAnnotation is just a comment if it follows a UNIT and is  equivalent to 1 if it is used alone. For examples,  {requests}/s == 1/s, By{transmitted}/s == By/s.\nNAME is a sequence of non-blank printable ASCII characters not  containing '{' or '}'.",
-                    "type": "string"
-                },
-                "labels": {
-                    "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed.",
-                    "items": {
-                        "$ref": "LabelDescriptor"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "The resource name of the metric descriptor. Depending on the implementation, the name typically includes: (1) the parent resource name that defines the scope of the metric type or of its data; and (2) the metric's URL-encoded type, which also appears in the type field of this descriptor. For example, following is the resource name of a custom metric within the GCP project my-project-id:\n\"projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount\"\n",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined custom metric types have the DNS name custom.googleapis.com. Metric types should use a natural hierarchical grouping. For example:\n\"custom.googleapis.com/invoice/paid/amount\"\n\"appengine.googleapis.com/http/server/response_latencies\"\n",
+                "displayName": {
+                    "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\". This field is optional but it is recommended to be set for any metrics associated with user-visible concepts, such as Quota.",
                     "type": "string"
                 }
             },
@@ -1237,13 +1148,13 @@
             "description": "The range of the population values.",
             "id": "Range",
             "properties": {
-                "min": {
-                    "description": "The minimum of the population values.",
+                "max": {
+                    "description": "The maximum of the population values.",
                     "format": "double",
                     "type": "number"
                 },
-                "max": {
-                    "description": "The maximum of the population values.",
+                "min": {
+                    "description": "The minimum of the population values.",
                     "format": "double",
                     "type": "number"
                 }
@@ -1254,16 +1165,108 @@
             "description": "The ListGroups response.",
             "id": "ListGroupsResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method.",
-                    "type": "string"
-                },
                 "group": {
                     "description": "The groups that match the specified filters.",
                     "items": {
                         "$ref": "Group"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "UptimeCheckConfig": {
+            "description": "This message configures which resources and services to monitor for availability.",
+            "id": "UptimeCheckConfig",
+            "properties": {
+                "period": {
+                    "description": "How often the uptime check is performed. Currently, only 1, 5, 10, and 15 minutes are supported. Required.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "httpCheck": {
+                    "$ref": "HttpCheck",
+                    "description": "Contains information needed to make an HTTP or HTTPS check."
+                },
+                "name": {
+                    "description": "A unique resource name for this UptimeCheckConfig. The format is:projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID].This field should be omitted when creating the uptime check configuration; on create, the resource name is assigned by the server and included in the response.",
+                    "type": "string"
+                },
+                "resourceGroup": {
+                    "$ref": "ResourceGroup",
+                    "description": "The group resource associated with the configuration."
+                },
+                "tcpCheck": {
+                    "$ref": "TcpCheck",
+                    "description": "Contains information needed to make a TCP check."
+                },
+                "selectedRegions": {
+                    "description": "The list of regions from which the check will be run. If this field is specified, enough regions to include a minimum of 3 locations must be provided, or an error message is returned. Not specifying this field will result in uptime checks running from all regions.",
+                    "enumDescriptions": [
+                        "Default value if no region is specified. Will result in uptime checks running from all regions.",
+                        "Allows checks to run from locations within the United States of America.",
+                        "Allows checks to run from locations within the continent of Europe.",
+                        "Allows checks to run from locations within the continent of South America.",
+                        "Allows checks to run from locations within the Asia Pacific area (ex: Singapore)."
+                    ],
+                    "items": {
+                        "enum": [
+                            "REGION_UNSPECIFIED",
+                            "USA",
+                            "EUROPE",
+                            "SOUTH_AMERICA",
+                            "ASIA_PACIFIC"
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "displayName": {
+                    "description": "A human-friendly name for the uptime check configuration. The display name should be unique within a Stackdriver Account in order to make it easier to identify; however, uniqueness is not enforced. Required.",
+                    "type": "string"
+                },
+                "contentMatchers": {
+                    "description": "The expected content on the page the check is run against. Currently, only the first entry in the list is supported, and other entries will be ignored. The server will look for an exact match of the string in the page response's content. This field is optional and should only be specified if a content match is required.",
+                    "items": {
+                        "$ref": "ContentMatcher"
+                    },
+                    "type": "array"
+                },
+                "monitoredResource": {
+                    "$ref": "MonitoredResource",
+                    "description": "The monitored resource associated with the configuration."
+                },
+                "timeout": {
+                    "description": "The maximum amount of time to wait for the request to complete (must be between 1 and 60 seconds). Required.",
+                    "format": "google-duration",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListGroupMembersResponse": {
+            "description": "The ListGroupMembers response.",
+            "id": "ListGroupMembersResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method.",
+                    "type": "string"
+                },
+                "totalSize": {
+                    "description": "The total number of elements matching this request.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "members": {
+                    "description": "A set of monitored resources in the group.",
+                    "items": {
+                        "$ref": "MonitoredResource"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -1276,39 +1279,16 @@
                     "description": "The version of collectd that collected the data. Example: \"5.3.0-192.el6\".",
                     "type": "string"
                 },
+                "resource": {
+                    "$ref": "MonitoredResource",
+                    "description": "The monitored resource associated with the time series."
+                },
                 "collectdPayloads": {
                     "description": "The collectd payloads representing the time series data. You must not include more than a single point for each time series, so no two payloads can have the same values for all of the fields plugin, plugin_instance, type, and type_instance.",
                     "items": {
                         "$ref": "CollectdPayload"
                     },
                     "type": "array"
-                },
-                "resource": {
-                    "$ref": "MonitoredResource",
-                    "description": "The monitored resource associated with the time series."
-                }
-            },
-            "type": "object"
-        },
-        "ListGroupMembersResponse": {
-            "description": "The ListGroupMembers response.",
-            "id": "ListGroupMembersResponse",
-            "properties": {
-                "members": {
-                    "description": "A set of monitored resources in the group.",
-                    "items": {
-                        "$ref": "MonitoredResource"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method.",
-                    "type": "string"
-                },
-                "totalSize": {
-                    "description": "The total number of elements matching this request.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -1351,6 +1331,10 @@
                     ],
                     "type": "string"
                 },
+                "metric": {
+                    "$ref": "Metric",
+                    "description": "The associated metric. A fully-specified metric used to identify the time series."
+                },
                 "points": {
                     "description": "The data points of this time series. When listing time series, the order of the points is specified by the list method.When creating a time series, this field must contain exactly one point and the point's type must be the same as the value type of the associated metric. If the associated metric's descriptor must be auto-created, then the value type of the descriptor is determined by the point's type, which must be BOOL, INT64, DOUBLE, or DISTRIBUTION.",
                     "items": {
@@ -1358,10 +1342,6 @@
                     },
                     "type": "array"
                 },
-                "metric": {
-                    "$ref": "Metric",
-                    "description": "The associated metric. A fully-specified metric used to identify the time series."
-                },
                 "valueType": {
                     "description": "The value type of the time series. When listing time series, this value type might be different from the value type of the associated metric if this time series is an alignment or reduction of other time series.When creating a time series, this field is optional. If present, it must be the same as the type of the data in the points field.",
                     "enum": [
@@ -1409,6 +1389,10 @@
             "description": "Distribution contains summary statistics for a population of values. It optionally contains a histogram representing the distribution of those values across a set of buckets.The summary statistics are the count, mean, sum of the squared deviation from the mean, the minimum, and the maximum of the set of population of values. The histogram is based on a sequence of buckets and gives a count of values that fall into each bucket. The boundaries of the buckets are given either explicitly or by formulas for buckets of fixed or exponentially increasing widths.Although it is not forbidden, it is generally a bad idea to include non-finite values (infinities or NaNs) in the population of values, as this will render the mean and sum_of_squared_deviation fields meaningless.",
             "id": "Distribution",
             "properties": {
+                "range": {
+                    "$ref": "Range",
+                    "description": "If specified, contains the range of the population values. The field must not be present if the count is zero. This field is presently ignored by the Stackdriver Monitoring API v3."
+                },
                 "count": {
                     "description": "The number of values in the population. Must be non-negative. This value must equal the sum of the values in bucket_counts if a histogram is provided.",
                     "format": "int64",
@@ -1435,10 +1419,6 @@
                     "description": "The sum of squared deviations from the mean of the values in the population. For values x_i this is:\nSum[i=1..n]((x_i - mean)^2)\nKnuth, \"The Art of Computer Programming\", Vol. 2, page 323, 3rd edition describes Welford's method for accumulating this sum in one pass.If count is zero then this field must be zero.",
                     "format": "double",
                     "type": "number"
-                },
-                "range": {
-                    "$ref": "Range",
-                    "description": "If specified, contains the range of the population values. The field must not be present if the count is zero. This field is presently ignored by the Stackdriver Monitoring API v3."
                 }
             },
             "type": "object"
@@ -1465,16 +1445,16 @@
             "description": "The ListMetricDescriptors response.",
             "id": "ListMetricDescriptorsResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method.",
-                    "type": "string"
-                },
                 "metricDescriptors": {
                     "description": "The metric descriptors that are available to the project and that match the value of filter, if present.",
                     "items": {
                         "$ref": "MetricDescriptor"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1488,16 +1468,16 @@
                     "format": "int32",
                     "type": "integer"
                 },
+                "error": {
+                    "$ref": "Status",
+                    "description": "Records the error status for the payload. If this field is present, the partial errors for nested values won't be populated."
+                },
                 "valueErrors": {
                     "description": "Records the error status for values that were not written due to an error.Failed payloads for which nothing is written will not include partial value errors.",
                     "items": {
                         "$ref": "CollectdValueError"
                     },
                     "type": "array"
-                },
-                "error": {
-                    "$ref": "Status",
-                    "description": "Records the error status for the payload. If this field is present, the partial errors for nested values won't be populated."
                 }
             },
             "type": "object"
@@ -1506,28 +1486,53 @@
             "description": "An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of \"gce_instance\" and specifies the use of the labels \"instance_id\" and \"zone\" to identify particular VM instances.Different APIs can support different monitored resource types. APIs generally provide a list method that returns the monitored resource descriptors used by the API.",
             "id": "MonitoredResourceDescriptor",
             "properties": {
-                "name": {
-                    "description": "Optional. The resource name of the monitored resource descriptor: \"projects/{project_id}/monitoredResourceDescriptors/{type}\" where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format \"monitoredResourceDescriptors/{type}\".",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "Optional. A detailed description of the monitored resource type that might be used in documentation.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, \"Google Cloud SQL Database\".",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "Required. The monitored resource type. For example, the type \"cloudsql_database\" represents databases in Google Cloud SQL. The maximum length of this value is 256 characters.",
-                    "type": "string"
-                },
                 "labels": {
                     "description": "Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels \"database_id\" and \"zone\".",
                     "items": {
                         "$ref": "LabelDescriptor"
                     },
                     "type": "array"
+                },
+                "name": {
+                    "description": "Optional. The resource name of the monitored resource descriptor: \"projects/{project_id}/monitoredResourceDescriptors/{type}\" where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format \"monitoredResourceDescriptors/{type}\".",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, \"Google Cloud SQL Database\".",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Optional. A detailed description of the monitored resource type that might be used in documentation.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Required. The monitored resource type. For example, the type \"cloudsql_database\" represents databases in Google Cloud SQL. The maximum length of this value is 256 characters.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ResourceGroup": {
+            "description": "The resource submessage for group checks. It can be used instead of a monitored resource, when multiple resources are being monitored.",
+            "id": "ResourceGroup",
+            "properties": {
+                "resourceType": {
+                    "description": "The resource type of the group members.",
+                    "enum": [
+                        "RESOURCE_TYPE_UNSPECIFIED",
+                        "INSTANCE",
+                        "AWS_ELB_LOAD_BALANCER"
+                    ],
+                    "enumDescriptions": [
+                        "Default value (not valid).",
+                        "A group of instances (could be either GCE or AWS_EC2).",
+                        "A group of AWS load balancers."
+                    ],
+                    "type": "string"
+                },
+                "groupId": {
+                    "description": "The group of resources being monitored. Should be only the group_id, not projects/<project_id>/groups/<group_id>.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1550,13 +1555,13 @@
                     "$ref": "Distribution",
                     "description": "A distribution value."
                 },
-                "stringValue": {
-                    "description": "A variable-length string value.",
-                    "type": "string"
-                },
                 "boolValue": {
                     "description": "A Boolean value: true or false.",
                     "type": "boolean"
+                },
+                "stringValue": {
+                    "description": "A variable-length string value.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1577,6 +1582,39 @@
             },
             "type": "object"
         },
+        "UptimeCheckIp": {
+            "description": "Contains the region, location, and list of IP addresses where checkers in the location run from.",
+            "id": "UptimeCheckIp",
+            "properties": {
+                "ipAddress": {
+                    "description": "The IP address from which the uptime check originates. This is a full IP address (not an IP address range). Most IP addresses, as of this publication, are in IPv4 format; however, one should not rely on the IP addresses being in IPv4 format indefinitely and should support interpreting this field in either IPv4 or IPv6 format.",
+                    "type": "string"
+                },
+                "region": {
+                    "description": "A broad region category in which the IP address is located.",
+                    "enum": [
+                        "REGION_UNSPECIFIED",
+                        "USA",
+                        "EUROPE",
+                        "SOUTH_AMERICA",
+                        "ASIA_PACIFIC"
+                    ],
+                    "enumDescriptions": [
+                        "Default value if no region is specified. Will result in uptime checks running from all regions.",
+                        "Allows checks to run from locations within the United States of America.",
+                        "Allows checks to run from locations within the continent of Europe.",
+                        "Allows checks to run from locations within the continent of South America.",
+                        "Allows checks to run from locations within the Asia Pacific area (ex: Singapore)."
+                    ],
+                    "type": "string"
+                },
+                "location": {
+                    "description": "A more specific location within the region that typically encodes a particular city/town/metro (and its containing state/province or country) within the broader umbrella region category.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "CollectdPayload": {
             "description": "A collection of data points sent from a collectd-based plugin. See the collectd documentation for more information.",
             "id": "CollectdPayload",
@@ -1660,10 +1698,15 @@
             },
             "type": "object"
         },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n  rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.",
-            "id": "Empty",
-            "properties": {},
+        "ContentMatcher": {
+            "description": "Used to perform string matching. Currently, this matches on the exact content. In the future, it can be expanded to allow for regular expressions and more complex matching.",
+            "id": "ContentMatcher",
+            "properties": {
+                "content": {
+                    "description": "String content to match",
+                    "type": "string"
+                }
+            },
             "type": "object"
         },
         "Option": {
@@ -1684,6 +1727,390 @@
                 }
             },
             "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n  rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "TcpCheck": {
+            "description": "Information required for a TCP uptime check request.",
+            "id": "TcpCheck",
+            "properties": {
+                "port": {
+                    "description": "The port to the page to run the check against. Will be combined with host (specified within the MonitoredResource) to construct the full URL. Required.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "TimeInterval": {
+            "description": "A time interval extending just after a start time through an end time. If the start time is the same as the end time, then the interval represents a single point in time.",
+            "id": "TimeInterval",
+            "properties": {
+                "endTime": {
+                    "description": "Required. The end of the time interval.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Explicit": {
+            "description": "Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): boundsi  Lower bound (1 <= i < N); boundsi - 1The bounds field must contain at least one element. If bounds has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets.",
+            "id": "Explicit",
+            "properties": {
+                "bounds": {
+                    "description": "The values must be monotonically increasing.",
+                    "items": {
+                        "format": "double",
+                        "type": "number"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListUptimeCheckIpsResponse": {
+            "description": "The protocol for the ListUptimeCheckIps response.",
+            "id": "ListUptimeCheckIpsResponse",
+            "properties": {
+                "uptimeCheckIps": {
+                    "description": "The returned list of IP addresses (including region and location) that the checkers run from.",
+                    "items": {
+                        "$ref": "UptimeCheckIp"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "This field represents the pagination token to retrieve the next page of results. If the value is empty, it means no further results for the request. To retrieve the next page of results, the value of the next_page_token is passed to the subsequent List method call (in the request message's page_token field). NOTE: this field is not yet implemented",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Exponential": {
+            "description": "Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): scale * (growth_factor ^ i).  Lower bound (1 <= i < N): scale * (growth_factor ^ (i - 1)).",
+            "id": "Exponential",
+            "properties": {
+                "growthFactor": {
+                    "description": "Must be greater than 1.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "scale": {
+                    "description": "Must be greater than 0.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "numFiniteBuckets": {
+                    "description": "Must be greater than 0.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "Point": {
+            "description": "A single data point in a time series.",
+            "id": "Point",
+            "properties": {
+                "value": {
+                    "$ref": "TypedValue",
+                    "description": "The value of the data point."
+                },
+                "interval": {
+                    "$ref": "TimeInterval",
+                    "description": "The time interval to which the data point applies. For GAUGE metrics, only the end time of the interval is used. For DELTA metrics, the start and end time should specify a non-zero interval, with subsequent points specifying contiguous and non-overlapping intervals. For CUMULATIVE metrics, the start and end time should specify a non-zero interval, with subsequent points specifying the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points."
+                }
+            },
+            "type": "object"
+        },
+        "Field": {
+            "description": "A single field of a message type.",
+            "id": "Field",
+            "properties": {
+                "oneofIndex": {
+                    "description": "The index of the field type in Type.oneofs, for message or enumeration types. The first type has index 1; zero means the type is not in the list.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "cardinality": {
+                    "description": "The field cardinality.",
+                    "enum": [
+                        "CARDINALITY_UNKNOWN",
+                        "CARDINALITY_OPTIONAL",
+                        "CARDINALITY_REQUIRED",
+                        "CARDINALITY_REPEATED"
+                    ],
+                    "enumDescriptions": [
+                        "For fields with unknown cardinality.",
+                        "For optional fields.",
+                        "For required fields. Proto2 syntax only.",
+                        "For repeated fields."
+                    ],
+                    "type": "string"
+                },
+                "packed": {
+                    "description": "Whether to use alternative packed wire representation.",
+                    "type": "boolean"
+                },
+                "defaultValue": {
+                    "description": "The string value of the default value of this field. Proto2 syntax only.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The field name.",
+                    "type": "string"
+                },
+                "typeUrl": {
+                    "description": "The field type URL, without the scheme, for message or enumeration types. Example: \"type.googleapis.com/google.protobuf.Timestamp\".",
+                    "type": "string"
+                },
+                "number": {
+                    "description": "The field number.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "jsonName": {
+                    "description": "The field JSON name.",
+                    "type": "string"
+                },
+                "kind": {
+                    "description": "The field type.",
+                    "enum": [
+                        "TYPE_UNKNOWN",
+                        "TYPE_DOUBLE",
+                        "TYPE_FLOAT",
+                        "TYPE_INT64",
+                        "TYPE_UINT64",
+                        "TYPE_INT32",
+                        "TYPE_FIXED64",
+                        "TYPE_FIXED32",
+                        "TYPE_BOOL",
+                        "TYPE_STRING",
+                        "TYPE_GROUP",
+                        "TYPE_MESSAGE",
+                        "TYPE_BYTES",
+                        "TYPE_UINT32",
+                        "TYPE_ENUM",
+                        "TYPE_SFIXED32",
+                        "TYPE_SFIXED64",
+                        "TYPE_SINT32",
+                        "TYPE_SINT64"
+                    ],
+                    "enumDescriptions": [
+                        "Field type unknown.",
+                        "Field type double.",
+                        "Field type float.",
+                        "Field type int64.",
+                        "Field type uint64.",
+                        "Field type int32.",
+                        "Field type fixed64.",
+                        "Field type fixed32.",
+                        "Field type bool.",
+                        "Field type string.",
+                        "Field type group. Proto2 syntax only, and deprecated.",
+                        "Field type message.",
+                        "Field type bytes.",
+                        "Field type uint32.",
+                        "Field type enum.",
+                        "Field type sfixed32.",
+                        "Field type sfixed64.",
+                        "Field type sint32.",
+                        "Field type sint64."
+                    ],
+                    "type": "string"
+                },
+                "options": {
+                    "description": "The protocol buffer options.",
+                    "items": {
+                        "$ref": "Option"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListUptimeCheckConfigsResponse": {
+            "description": "The protocol for the ListUptimeCheckConfigs response.",
+            "id": "ListUptimeCheckConfigsResponse",
+            "properties": {
+                "uptimeCheckConfigs": {
+                    "description": "The returned uptime check configurations.",
+                    "items": {
+                        "$ref": "UptimeCheckConfig"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "This field represents the pagination token to retrieve the next page of results. If the value is empty, it means no further results for the request. To retrieve the next page of results, the value of the next_page_token is passed to the subsequent List method call (in the request message's page_token field).",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Metric": {
+            "description": "A specific metric, identified by specifying values for all of the labels of a MetricDescriptor.",
+            "id": "Metric",
+            "properties": {
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "The set of label values that uniquely identify this metric. All labels listed in the MetricDescriptor must be assigned values.",
+                    "type": "object"
+                },
+                "type": {
+                    "description": "An existing metric type, see google.api.MetricDescriptor. For example, custom.googleapis.com/invoice/paid/amount.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListTimeSeriesResponse": {
+            "description": "The ListTimeSeries response.",
+            "id": "ListTimeSeriesResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method.",
+                    "type": "string"
+                },
+                "timeSeries": {
+                    "description": "One or more time series that match the filter included in the request.",
+                    "items": {
+                        "$ref": "TimeSeries"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "LabelDescriptor": {
+            "description": "A description of a label.",
+            "id": "LabelDescriptor",
+            "properties": {
+                "key": {
+                    "description": "The label key.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "A human-readable description for the label.",
+                    "type": "string"
+                },
+                "valueType": {
+                    "description": "The type of data that can be assigned to the label.",
+                    "enum": [
+                        "STRING",
+                        "BOOL",
+                        "INT64"
+                    ],
+                    "enumDescriptions": [
+                        "A variable-length string. This is the default.",
+                        "Boolean; true or false.",
+                        "A 64-bit signed integer."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Group": {
+            "description": "The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: \"environment\" and \"role\". A parent group has a filter, environment=\"production\". A child of that parent group has a filter, role=\"transcoder\". The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.",
+            "id": "Group",
+            "properties": {
+                "name": {
+                    "description": "Output only. The name of this group. The format is \"projects/{project_id_or_number}/groups/{group_id}\". When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.",
+                    "type": "string"
+                },
+                "parentName": {
+                    "description": "The name of the group's parent, if it has one. The format is \"projects/{project_id_or_number}/groups/{group_id}\". For groups with no parent, parentName is the empty string, \"\".",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "A user-assigned name for this group, used only for display purposes.",
+                    "type": "string"
+                },
+                "isCluster": {
+                    "description": "If true, the members of this group are considered to be a cluster. The system can perform additional analysis on groups that are clusters.",
+                    "type": "boolean"
+                },
+                "filter": {
+                    "description": "The filter used to determine which monitored resources belong to this group.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Type": {
+            "description": "A protocol buffer message type.",
+            "id": "Type",
+            "properties": {
+                "fields": {
+                    "description": "The list of fields.",
+                    "items": {
+                        "$ref": "Field"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The fully qualified message name.",
+                    "type": "string"
+                },
+                "oneofs": {
+                    "description": "The list of types appearing in oneof definitions in this type.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "sourceContext": {
+                    "$ref": "SourceContext",
+                    "description": "The source context."
+                },
+                "syntax": {
+                    "description": "The source syntax.",
+                    "enum": [
+                        "SYNTAX_PROTO2",
+                        "SYNTAX_PROTO3"
+                    ],
+                    "enumDescriptions": [
+                        "Syntax proto2.",
+                        "Syntax proto3."
+                    ],
+                    "type": "string"
+                },
+                "options": {
+                    "description": "The protocol buffer options.",
+                    "items": {
+                        "$ref": "Option"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "BasicAuthentication": {
+            "description": "A type of authentication to perform against the specified resource or URL that uses username and password. Currently, only Basic authentication is supported in Uptime Monitoring.",
+            "id": "BasicAuthentication",
+            "properties": {
+                "password": {
+                    "description": "The password to authenticate.",
+                    "type": "string"
+                },
+                "username": {
+                    "description": "The username to authenticate.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/partners__v2.json b/discovery/googleapis/partners__v2.json
index f1a9070..5ec853e 100644
--- a/discovery/googleapis/partners__v2.json
+++ b/discovery/googleapis/partners__v2.json
@@ -16,6 +16,37 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -27,13 +58,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
@@ -70,753 +101,10 @@
             ],
             "location": "query",
             "type": "string"
-        },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-            "location": "query",
-            "type": "string"
-        },
-        "access_token": {
-            "description": "OAuth access token.",
-            "location": "query",
-            "type": "string"
-        },
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
-        "leads": {
-            "methods": {
-                "list": {
-                    "description": "Lists advertiser leads for a user's associated company.\nShould only be called within the context of an authorized logged in user.",
-                    "httpMethod": "GET",
-                    "id": "partners.leads.list",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "requestMetadata.partnersSessionId": {
-                            "description": "Google Partners session ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.userId": {
-                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageToken": {
-                            "description": "A token identifying a page of results that the server returns.\nTypically, this is the value of `ListLeadsResponse.next_page_token`\nreturned from the previous call to\nListLeads.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageSize": {
-                            "description": "Requested page size. Server may return fewer leads than requested.\nIf unspecified, server picks an appropriate default.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        },
-                        "requestMetadata.trafficSource.trafficSourceId": {
-                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.locale": {
-                            "description": "Locale to use for the current request.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.ipAddress": {
-                            "description": "IP address to use instead of the user's geo-located IP address.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.experimentIds": {
-                            "description": "Experiment IDs the current request belongs to.",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "orderBy": {
-                            "description": "How to order Leads. Currently, only `create_time`\nand `create_time desc` are supported",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSubId": {
-                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2/leads",
-                    "response": {
-                        "$ref": "ListLeadsResponse"
-                    }
-                }
-            }
-        },
-        "offers": {
-            "methods": {
-                "list": {
-                    "description": "Lists the Offers available for the current user",
-                    "httpMethod": "GET",
-                    "id": "partners.offers.list",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "requestMetadata.userOverrides.userId": {
-                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.partnersSessionId": {
-                            "description": "Google Partners session ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSourceId": {
-                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.locale": {
-                            "description": "Locale to use for the current request.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.ipAddress": {
-                            "description": "IP address to use instead of the user's geo-located IP address.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.experimentIds": {
-                            "description": "Experiment IDs the current request belongs to.",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSubId": {
-                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2/offers",
-                    "response": {
-                        "$ref": "ListOffersResponse"
-                    }
-                }
-            },
-            "resources": {
-                "history": {
-                    "methods": {
-                        "list": {
-                            "description": "Lists the Historical Offers for the current user (or user's entire company)",
-                            "httpMethod": "GET",
-                            "id": "partners.offers.history.list",
-                            "parameterOrder": [],
-                            "parameters": {
-                                "requestMetadata.experimentIds": {
-                                    "description": "Experiment IDs the current request belongs to.",
-                                    "location": "query",
-                                    "repeated": true,
-                                    "type": "string"
-                                },
-                                "entireCompany": {
-                                    "description": "if true, show history for the entire company.  Requires user to be admin.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
-                                "requestMetadata.trafficSource.trafficSubId": {
-                                    "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "orderBy": {
-                                    "description": "Comma-separated list of fields to order by, e.g.: \"foo,bar,baz\".\nUse \"foo desc\" to sort descending.\nList of valid field names is: name, offer_code, expiration_time, status,\n    last_modified_time, sender_name, creation_time, country_code,\n    offer_type.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "requestMetadata.partnersSessionId": {
-                                    "description": "Google Partners session ID.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "requestMetadata.userOverrides.userId": {
-                                    "description": "Logged-in user ID to impersonate instead of the user's ID.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "Token to retrieve a specific page.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Maximum number of rows to return per page.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "requestMetadata.trafficSource.trafficSourceId": {
-                                    "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "requestMetadata.locale": {
-                                    "description": "Locale to use for the current request.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "requestMetadata.userOverrides.ipAddress": {
-                                    "description": "IP address to use instead of the user's geo-located IP address.",
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/offers/history",
-                            "response": {
-                                "$ref": "ListOffersHistoryResponse"
-                            }
-                        }
-                    }
-                }
-            }
-        },
-        "analytics": {
-            "methods": {
-                "list": {
-                    "description": "Lists analytics data for a user's associated company.\nShould only be called within the context of an authorized logged in user.",
-                    "httpMethod": "GET",
-                    "id": "partners.analytics.list",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "requestMetadata.partnersSessionId": {
-                            "description": "Google Partners session ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.userId": {
-                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageToken": {
-                            "description": "A token identifying a page of results that the server returns.\nTypically, this is the value of `ListAnalyticsResponse.next_page_token`\nreturned from the previous call to\nListAnalytics.\nWill be a date string in `YYYY-MM-DD` format representing the end date\nof the date range of results to return.\nIf unspecified or set to \"\", default value is the current date.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageSize": {
-                            "description": "Requested page size. Server may return fewer analytics than requested.\nIf unspecified or set to 0, default value is 30.\nSpecifies the number of days in the date range when querying analytics.\nThe `page_token` represents the end date of the date range\nand the start date is calculated using the `page_size` as the number\nof days BEFORE the end date.\nMust be a non-negative integer.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        },
-                        "requestMetadata.trafficSource.trafficSourceId": {
-                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.locale": {
-                            "description": "Locale to use for the current request.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.ipAddress": {
-                            "description": "IP address to use instead of the user's geo-located IP address.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.experimentIds": {
-                            "description": "Experiment IDs the current request belongs to.",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSubId": {
-                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2/analytics",
-                    "response": {
-                        "$ref": "ListAnalyticsResponse"
-                    }
-                }
-            }
-        },
-        "userStates": {
-            "methods": {
-                "list": {
-                    "description": "Lists states for current user.",
-                    "httpMethod": "GET",
-                    "id": "partners.userStates.list",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "requestMetadata.userOverrides.userId": {
-                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.partnersSessionId": {
-                            "description": "Google Partners session ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSourceId": {
-                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.locale": {
-                            "description": "Locale to use for the current request.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.ipAddress": {
-                            "description": "IP address to use instead of the user's geo-located IP address.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.experimentIds": {
-                            "description": "Experiment IDs the current request belongs to.",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSubId": {
-                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2/userStates",
-                    "response": {
-                        "$ref": "ListUserStatesResponse"
-                    }
-                }
-            }
-        },
-        "v2": {
-            "methods": {
-                "getPartnersstatus": {
-                    "description": "Gets Partners Status of the logged in user's agency.\nShould only be called if the logged in user is the admin of the agency.",
-                    "httpMethod": "GET",
-                    "id": "partners.getPartnersstatus",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "requestMetadata.userOverrides.userId": {
-                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.partnersSessionId": {
-                            "description": "Google Partners session ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSourceId": {
-                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.locale": {
-                            "description": "Locale to use for the current request.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.ipAddress": {
-                            "description": "IP address to use instead of the user's geo-located IP address.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.experimentIds": {
-                            "description": "Experiment IDs the current request belongs to.",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSubId": {
-                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2/partnersstatus",
-                    "response": {
-                        "$ref": "GetPartnersStatusResponse"
-                    }
-                },
-                "updateLeads": {
-                    "description": "Updates the specified lead.",
-                    "httpMethod": "PATCH",
-                    "id": "partners.updateLeads",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "requestMetadata.trafficSource.trafficSourceId": {
-                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.locale": {
-                            "description": "Locale to use for the current request.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.ipAddress": {
-                            "description": "IP address to use instead of the user's geo-located IP address.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "updateMask": {
-                            "description": "Standard field mask for the set of fields to be updated.\nRequired with at least 1 value in FieldMask's paths.\nOnly `state` and `adwords_customer_id` are currently supported.",
-                            "format": "google-fieldmask",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.experimentIds": {
-                            "description": "Experiment IDs the current request belongs to.",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSubId": {
-                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.userId": {
-                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.partnersSessionId": {
-                            "description": "Google Partners session ID.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2/leads",
-                    "request": {
-                        "$ref": "Lead"
-                    },
-                    "response": {
-                        "$ref": "Lead"
-                    }
-                },
-                "updateCompanies": {
-                    "description": "Update company.\nShould only be called within the context of an authorized logged in user.",
-                    "httpMethod": "PATCH",
-                    "id": "partners.updateCompanies",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "requestMetadata.experimentIds": {
-                            "description": "Experiment IDs the current request belongs to.",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSubId": {
-                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.userId": {
-                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.partnersSessionId": {
-                            "description": "Google Partners session ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSourceId": {
-                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.locale": {
-                            "description": "Locale to use for the current request.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.ipAddress": {
-                            "description": "IP address to use instead of the user's geo-located IP address.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "updateMask": {
-                            "description": "Standard field mask for the set of fields to be updated.\nRequired with at least 1 value in FieldMask's paths.",
-                            "format": "google-fieldmask",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2/companies",
-                    "request": {
-                        "$ref": "Company"
-                    },
-                    "response": {
-                        "$ref": "Company"
-                    }
-                }
-            }
-        },
-        "users": {
-            "methods": {
-                "deleteCompanyRelation": {
-                    "description": "Deletes a user's company relation. Unaffiliaites the user from a company.",
-                    "httpMethod": "DELETE",
-                    "id": "partners.users.deleteCompanyRelation",
-                    "parameterOrder": [
-                        "userId"
-                    ],
-                    "parameters": {
-                        "requestMetadata.experimentIds": {
-                            "description": "Experiment IDs the current request belongs to.",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "userId": {
-                            "description": "The ID of the user. Can be set to <code>me</code> to mean\nthe currently authenticated user.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSubId": {
-                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.partnersSessionId": {
-                            "description": "Google Partners session ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.userId": {
-                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSourceId": {
-                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.locale": {
-                            "description": "Locale to use for the current request.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.ipAddress": {
-                            "description": "IP address to use instead of the user's geo-located IP address.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2/users/{userId}/companyRelation",
-                    "response": {
-                        "$ref": "Empty"
-                    }
-                },
-                "createCompanyRelation": {
-                    "description": "Creates a user's company relation. Affiliates the user to a company.",
-                    "httpMethod": "PUT",
-                    "id": "partners.users.createCompanyRelation",
-                    "parameterOrder": [
-                        "userId"
-                    ],
-                    "parameters": {
-                        "requestMetadata.userOverrides.userId": {
-                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.partnersSessionId": {
-                            "description": "Google Partners session ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSourceId": {
-                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.locale": {
-                            "description": "Locale to use for the current request.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.ipAddress": {
-                            "description": "IP address to use instead of the user's geo-located IP address.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.experimentIds": {
-                            "description": "Experiment IDs the current request belongs to.",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "userId": {
-                            "description": "The ID of the user. Can be set to <code>me</code> to mean\nthe currently authenticated user.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSubId": {
-                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2/users/{userId}/companyRelation",
-                    "request": {
-                        "$ref": "CompanyRelation"
-                    },
-                    "response": {
-                        "$ref": "CompanyRelation"
-                    }
-                },
-                "get": {
-                    "description": "Gets a user.",
-                    "httpMethod": "GET",
-                    "id": "partners.users.get",
-                    "parameterOrder": [
-                        "userId"
-                    ],
-                    "parameters": {
-                        "requestMetadata.userOverrides.userId": {
-                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.partnersSessionId": {
-                            "description": "Google Partners session ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "userView": {
-                            "description": "Specifies what parts of the user information to return.",
-                            "enum": [
-                                "BASIC",
-                                "PROFILE",
-                                "PUBLIC_PROFILE"
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSourceId": {
-                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.locale": {
-                            "description": "Locale to use for the current request.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.ipAddress": {
-                            "description": "IP address to use instead of the user's geo-located IP address.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.experimentIds": {
-                            "description": "Experiment IDs the current request belongs to.",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "userId": {
-                            "description": "Identifier of the user. Can be set to <code>me</code> to mean the currently\nauthenticated user.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSubId": {
-                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2/users/{userId}",
-                    "response": {
-                        "$ref": "User"
-                    }
-                },
-                "updateProfile": {
-                    "description": "Updates a user's profile. A user can only update their own profile and\nshould only be called within the context of a logged in user.",
-                    "httpMethod": "PATCH",
-                    "id": "partners.users.updateProfile",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "requestMetadata.experimentIds": {
-                            "description": "Experiment IDs the current request belongs to.",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSubId": {
-                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.userId": {
-                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.partnersSessionId": {
-                            "description": "Google Partners session ID.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSourceId": {
-                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.locale": {
-                            "description": "Locale to use for the current request.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.ipAddress": {
-                            "description": "IP address to use instead of the user's geo-located IP address.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2/users/profile",
-                    "request": {
-                        "$ref": "UserProfile"
-                    },
-                    "response": {
-                        "$ref": "UserProfile"
-                    }
-                }
-            }
-        },
         "companies": {
             "methods": {
                 "list": {
@@ -825,49 +113,6 @@
                     "id": "partners.companies.list",
                     "parameterOrder": [],
                     "parameters": {
-                        "maxMonthlyBudget.nanos": {
-                            "description": "Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999 inclusive.\nIf `units` is positive, `nanos` must be positive or zero.\nIf `units` is zero, `nanos` can be positive, zero, or negative.\nIf `units` is negative, `nanos` must be negative or zero.\nFor example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        },
-                        "services": {
-                            "description": "List of services that the returned agencies should provide. If this is\nnot empty, any returned agency must have at least one of these services,\nor one of the specializations in the \"specializations\" field.",
-                            "enum": [
-                                "SERVICE_UNSPECIFIED",
-                                "S_ADVANCED_ADWORDS_SUPPORT",
-                                "S_ADVERTISING_ON_GOOGLE",
-                                "S_AN_ENHANCED_WEBSITE",
-                                "S_AN_ONLINE_MARKETING_PLAN",
-                                "S_MOBILE_AND_VIDEO_ADS",
-                                "S_MOBILE_WEBSITE_SERVICES"
-                            ],
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSourceId": {
-                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "maxMonthlyBudget.units": {
-                            "description": "The whole units of the amount.\nFor example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.",
-                            "format": "int64",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSubId": {
-                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "minMonthlyBudget.nanos": {
-                            "description": "Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999 inclusive.\nIf `units` is positive, `nanos` must be positive or zero.\nIf `units` is zero, `nanos` can be positive, zero, or negative.\nIf `units` is negative, `nanos` must be negative or zero.\nFor example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        },
                         "requestMetadata.partnersSessionId": {
                             "description": "Google Partners session ID.",
                             "location": "query",
@@ -966,13 +211,13 @@
                             "location": "query",
                             "type": "string"
                         },
-                        "requestMetadata.userOverrides.userId": {
-                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
+                        "minMonthlyBudget.currencyCode": {
+                            "description": "The 3-letter currency code defined in ISO 4217.",
                             "location": "query",
                             "type": "string"
                         },
-                        "minMonthlyBudget.currencyCode": {
-                            "description": "The 3-letter currency code defined in ISO 4217.",
+                        "requestMetadata.userOverrides.userId": {
+                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
                             "location": "query",
                             "type": "string"
                         },
@@ -985,13 +230,13 @@
                             "location": "query",
                             "type": "string"
                         },
-                        "requestMetadata.locale": {
-                            "description": "Locale to use for the current request.",
+                        "address": {
+                            "description": "The address to use when searching for companies.\nIf not given, the geo-located address of the request is used.",
                             "location": "query",
                             "type": "string"
                         },
-                        "address": {
-                            "description": "The address to use when searching for companies.\nIf not given, the geo-located address of the request is used.",
+                        "requestMetadata.locale": {
+                            "description": "Locale to use for the current request.",
                             "location": "query",
                             "type": "string"
                         },
@@ -1000,6 +245,49 @@
                             "format": "int64",
                             "location": "query",
                             "type": "string"
+                        },
+                        "maxMonthlyBudget.nanos": {
+                            "description": "Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999 inclusive.\nIf `units` is positive, `nanos` must be positive or zero.\nIf `units` is zero, `nanos` can be positive, zero, or negative.\nIf `units` is negative, `nanos` must be negative or zero.\nFor example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        },
+                        "services": {
+                            "description": "List of services that the returned agencies should provide. If this is\nnot empty, any returned agency must have at least one of these services,\nor one of the specializations in the \"specializations\" field.",
+                            "enum": [
+                                "SERVICE_UNSPECIFIED",
+                                "S_ADVANCED_ADWORDS_SUPPORT",
+                                "S_ADVERTISING_ON_GOOGLE",
+                                "S_AN_ENHANCED_WEBSITE",
+                                "S_AN_ONLINE_MARKETING_PLAN",
+                                "S_MOBILE_AND_VIDEO_ADS",
+                                "S_MOBILE_WEBSITE_SERVICES"
+                            ],
+                            "location": "query",
+                            "repeated": true,
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSourceId": {
+                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "maxMonthlyBudget.units": {
+                            "description": "The whole units of the amount.\nFor example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.",
+                            "format": "int64",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSubId": {
+                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "minMonthlyBudget.nanos": {
+                            "description": "Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999 inclusive.\nIf `units` is positive, `nanos` must be positive or zero.\nIf `units` is zero, `nanos` can be positive, zero, or negative.\nIf `units` is negative, `nanos` must be negative or zero.\nFor example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
                         }
                     },
                     "path": "v2/companies",
@@ -1015,25 +303,30 @@
                         "companyId"
                     ],
                     "parameters": {
+                        "requestMetadata.trafficSource.trafficSourceId": {
+                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.ipAddress": {
+                            "description": "IP address to use instead of the user's geo-located IP address.",
+                            "location": "query",
+                            "type": "string"
+                        },
                         "companyId": {
                             "description": "The ID of the company to retrieve.",
                             "location": "path",
                             "required": true,
                             "type": "string"
                         },
-                        "currencyCode": {
-                            "description": "If the company's budget is in a different currency code than this one, then\nthe converted budget is converted to this currency code.",
-                            "location": "query",
-                            "type": "string"
-                        },
                         "requestMetadata.experimentIds": {
                             "description": "Experiment IDs the current request belongs to.",
                             "location": "query",
                             "repeated": true,
                             "type": "string"
                         },
-                        "orderBy": {
-                            "description": "How to order addresses within the returned company. Currently, only\n`address` and `address desc` is supported which will sorted by closest to\nfarthest in distance from given address and farthest to closest distance\nfrom given address respectively.",
+                        "currencyCode": {
+                            "description": "If the company's budget is in a different currency code than this one, then\nthe converted budget is converted to this currency code.",
                             "location": "query",
                             "type": "string"
                         },
@@ -1042,8 +335,8 @@
                             "location": "query",
                             "type": "string"
                         },
-                        "requestMetadata.userOverrides.userId": {
-                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
+                        "orderBy": {
+                            "description": "How to order addresses within the returned company. Currently, only\n`address` and `address desc` is supported which will sorted by closest to\nfarthest in distance from given address and farthest to closest distance\nfrom given address respectively.",
                             "location": "query",
                             "type": "string"
                         },
@@ -1052,6 +345,11 @@
                             "location": "query",
                             "type": "string"
                         },
+                        "requestMetadata.userOverrides.userId": {
+                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
                         "view": {
                             "description": "The view of `Company` resource to be returned. This must not be\n`COMPANY_VIEW_UNSPECIFIED`.",
                             "enum": [
@@ -1070,16 +368,6 @@
                             "description": "Locale to use for the current request.",
                             "location": "query",
                             "type": "string"
-                        },
-                        "requestMetadata.trafficSource.trafficSourceId": {
-                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMetadata.userOverrides.ipAddress": {
-                            "description": "IP address to use instead of the user's geo-located IP address.",
-                            "location": "query",
-                            "type": "string"
                         }
                     },
                     "path": "v2/companies/{companyId}",
@@ -1118,6 +406,242 @@
                 }
             }
         },
+        "users": {
+            "methods": {
+                "deleteCompanyRelation": {
+                    "description": "Deletes a user's company relation. Unaffiliaites the user from a company.",
+                    "httpMethod": "DELETE",
+                    "id": "partners.users.deleteCompanyRelation",
+                    "parameterOrder": [
+                        "userId"
+                    ],
+                    "parameters": {
+                        "requestMetadata.experimentIds": {
+                            "description": "Experiment IDs the current request belongs to.",
+                            "location": "query",
+                            "repeated": true,
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSubId": {
+                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "userId": {
+                            "description": "The ID of the user. Can be set to <code>me</code> to mean\nthe currently authenticated user.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.userId": {
+                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.partnersSessionId": {
+                            "description": "Google Partners session ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSourceId": {
+                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.locale": {
+                            "description": "Locale to use for the current request.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.ipAddress": {
+                            "description": "IP address to use instead of the user's geo-located IP address.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/users/{userId}/companyRelation",
+                    "response": {
+                        "$ref": "Empty"
+                    }
+                },
+                "createCompanyRelation": {
+                    "description": "Creates a user's company relation. Affiliates the user to a company.",
+                    "httpMethod": "PUT",
+                    "id": "partners.users.createCompanyRelation",
+                    "parameterOrder": [
+                        "userId"
+                    ],
+                    "parameters": {
+                        "requestMetadata.experimentIds": {
+                            "description": "Experiment IDs the current request belongs to.",
+                            "location": "query",
+                            "repeated": true,
+                            "type": "string"
+                        },
+                        "userId": {
+                            "description": "The ID of the user. Can be set to <code>me</code> to mean\nthe currently authenticated user.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSubId": {
+                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.partnersSessionId": {
+                            "description": "Google Partners session ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.userId": {
+                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSourceId": {
+                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.locale": {
+                            "description": "Locale to use for the current request.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.ipAddress": {
+                            "description": "IP address to use instead of the user's geo-located IP address.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/users/{userId}/companyRelation",
+                    "request": {
+                        "$ref": "CompanyRelation"
+                    },
+                    "response": {
+                        "$ref": "CompanyRelation"
+                    }
+                },
+                "get": {
+                    "description": "Gets a user.",
+                    "httpMethod": "GET",
+                    "id": "partners.users.get",
+                    "parameterOrder": [
+                        "userId"
+                    ],
+                    "parameters": {
+                        "requestMetadata.userOverrides.userId": {
+                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.partnersSessionId": {
+                            "description": "Google Partners session ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "userView": {
+                            "description": "Specifies what parts of the user information to return.",
+                            "enum": [
+                                "BASIC",
+                                "PROFILE",
+                                "PUBLIC_PROFILE"
+                            ],
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSourceId": {
+                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.locale": {
+                            "description": "Locale to use for the current request.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.ipAddress": {
+                            "description": "IP address to use instead of the user's geo-located IP address.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.experimentIds": {
+                            "description": "Experiment IDs the current request belongs to.",
+                            "location": "query",
+                            "repeated": true,
+                            "type": "string"
+                        },
+                        "userId": {
+                            "description": "Identifier of the user. Can be set to <code>me</code> to mean the currently\nauthenticated user.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSubId": {
+                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/users/{userId}",
+                    "response": {
+                        "$ref": "User"
+                    }
+                },
+                "updateProfile": {
+                    "description": "Updates a user's profile. A user can only update their own profile and\nshould only be called within the context of a logged in user.",
+                    "httpMethod": "PATCH",
+                    "id": "partners.users.updateProfile",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "requestMetadata.userOverrides.userId": {
+                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.partnersSessionId": {
+                            "description": "Google Partners session ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSourceId": {
+                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.locale": {
+                            "description": "Locale to use for the current request.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.ipAddress": {
+                            "description": "IP address to use instead of the user's geo-located IP address.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.experimentIds": {
+                            "description": "Experiment IDs the current request belongs to.",
+                            "location": "query",
+                            "repeated": true,
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSubId": {
+                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/users/profile",
+                    "request": {
+                        "$ref": "UserProfile"
+                    },
+                    "response": {
+                        "$ref": "UserProfile"
+                    }
+                }
+            }
+        },
         "userEvents": {
             "methods": {
                 "log": {
@@ -1164,6 +688,37 @@
                         "examType"
                     ],
                     "parameters": {
+                        "requestMetadata.partnersSessionId": {
+                            "description": "Google Partners session ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.userId": {
+                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSourceId": {
+                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.locale": {
+                            "description": "Locale to use for the current request.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.ipAddress": {
+                            "description": "IP address to use instead of the user's geo-located IP address.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.experimentIds": {
+                            "description": "Experiment IDs the current request belongs to.",
+                            "location": "query",
+                            "repeated": true,
+                            "type": "string"
+                        },
                         "requestMetadata.trafficSource.trafficSubId": {
                             "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
                             "location": "query",
@@ -1187,7 +742,218 @@
                             "location": "path",
                             "required": true,
                             "type": "string"
+                        }
+                    },
+                    "path": "v2/exams/{examType}/token",
+                    "response": {
+                        "$ref": "ExamToken"
+                    }
+                }
+            }
+        },
+        "leads": {
+            "methods": {
+                "list": {
+                    "description": "Lists advertiser leads for a user's associated company.\nShould only be called within the context of an authorized logged in user.",
+                    "httpMethod": "GET",
+                    "id": "partners.leads.list",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "requestMetadata.locale": {
+                            "description": "Locale to use for the current request.",
+                            "location": "query",
+                            "type": "string"
                         },
+                        "requestMetadata.userOverrides.ipAddress": {
+                            "description": "IP address to use instead of the user's geo-located IP address.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.experimentIds": {
+                            "description": "Experiment IDs the current request belongs to.",
+                            "location": "query",
+                            "repeated": true,
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSubId": {
+                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "orderBy": {
+                            "description": "How to order Leads. Currently, only `create_time`\nand `create_time desc` are supported",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.userId": {
+                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.partnersSessionId": {
+                            "description": "Google Partners session ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageToken": {
+                            "description": "A token identifying a page of results that the server returns.\nTypically, this is the value of `ListLeadsResponse.next_page_token`\nreturned from the previous call to\nListLeads.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageSize": {
+                            "description": "Requested page size. Server may return fewer leads than requested.\nIf unspecified, server picks an appropriate default.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        },
+                        "requestMetadata.trafficSource.trafficSourceId": {
+                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/leads",
+                    "response": {
+                        "$ref": "ListLeadsResponse"
+                    }
+                }
+            }
+        },
+        "offers": {
+            "methods": {
+                "list": {
+                    "description": "Lists the Offers available for the current user",
+                    "httpMethod": "GET",
+                    "id": "partners.offers.list",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "requestMetadata.trafficSource.trafficSourceId": {
+                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.locale": {
+                            "description": "Locale to use for the current request.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.ipAddress": {
+                            "description": "IP address to use instead of the user's geo-located IP address.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.experimentIds": {
+                            "description": "Experiment IDs the current request belongs to.",
+                            "location": "query",
+                            "repeated": true,
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSubId": {
+                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.userId": {
+                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.partnersSessionId": {
+                            "description": "Google Partners session ID.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/offers",
+                    "response": {
+                        "$ref": "ListOffersResponse"
+                    }
+                }
+            },
+            "resources": {
+                "history": {
+                    "methods": {
+                        "list": {
+                            "description": "Lists the Historical Offers for the current user (or user's entire company)",
+                            "httpMethod": "GET",
+                            "id": "partners.offers.history.list",
+                            "parameterOrder": [],
+                            "parameters": {
+                                "pageSize": {
+                                    "description": "Maximum number of rows to return per page.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "requestMetadata.trafficSource.trafficSourceId": {
+                                    "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "requestMetadata.locale": {
+                                    "description": "Locale to use for the current request.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "requestMetadata.userOverrides.ipAddress": {
+                                    "description": "IP address to use instead of the user's geo-located IP address.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "requestMetadata.experimentIds": {
+                                    "description": "Experiment IDs the current request belongs to.",
+                                    "location": "query",
+                                    "repeated": true,
+                                    "type": "string"
+                                },
+                                "entireCompany": {
+                                    "description": "if true, show history for the entire company.  Requires user to be admin.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
+                                "orderBy": {
+                                    "description": "Comma-separated list of fields to order by, e.g.: \"foo,bar,baz\".\nUse \"foo desc\" to sort descending.\nList of valid field names is: name, offer_code, expiration_time, status,\n    last_modified_time, sender_name, creation_time, country_code,\n    offer_type.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "requestMetadata.trafficSource.trafficSubId": {
+                                    "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "requestMetadata.partnersSessionId": {
+                                    "description": "Google Partners session ID.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "requestMetadata.userOverrides.userId": {
+                                    "description": "Logged-in user ID to impersonate instead of the user's ID.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Token to retrieve a specific page.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/offers/history",
+                            "response": {
+                                "$ref": "ListOffersHistoryResponse"
+                            }
+                        }
+                    }
+                }
+            }
+        },
+        "userStates": {
+            "methods": {
+                "list": {
+                    "description": "Lists states for current user.",
+                    "httpMethod": "GET",
+                    "id": "partners.userStates.list",
+                    "parameterOrder": [],
+                    "parameters": {
                         "requestMetadata.userOverrides.userId": {
                             "description": "Logged-in user ID to impersonate instead of the user's ID.",
                             "location": "query",
@@ -1218,1266 +984,264 @@
                             "location": "query",
                             "repeated": true,
                             "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSubId": {
+                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
                         }
                     },
-                    "path": "v2/exams/{examType}/token",
+                    "path": "v2/userStates",
                     "response": {
-                        "$ref": "ExamToken"
+                        "$ref": "ListUserStatesResponse"
+                    }
+                }
+            }
+        },
+        "analytics": {
+            "methods": {
+                "list": {
+                    "description": "Lists analytics data for a user's associated company.\nShould only be called within the context of an authorized logged in user.",
+                    "httpMethod": "GET",
+                    "id": "partners.analytics.list",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "requestMetadata.userOverrides.ipAddress": {
+                            "description": "IP address to use instead of the user's geo-located IP address.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.experimentIds": {
+                            "description": "Experiment IDs the current request belongs to.",
+                            "location": "query",
+                            "repeated": true,
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSubId": {
+                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.partnersSessionId": {
+                            "description": "Google Partners session ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.userId": {
+                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageToken": {
+                            "description": "A token identifying a page of results that the server returns.\nTypically, this is the value of `ListAnalyticsResponse.next_page_token`\nreturned from the previous call to\nListAnalytics.\nWill be a date string in `YYYY-MM-DD` format representing the end date\nof the date range of results to return.\nIf unspecified or set to \"\", default value is the current date.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageSize": {
+                            "description": "Requested page size. Server may return fewer analytics than requested.\nIf unspecified or set to 0, default value is 30.\nSpecifies the number of days in the date range when querying analytics.\nThe `page_token` represents the end date of the date range\nand the start date is calculated using the `page_size` as the number\nof days BEFORE the end date.\nMust be a non-negative integer.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        },
+                        "requestMetadata.trafficSource.trafficSourceId": {
+                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.locale": {
+                            "description": "Locale to use for the current request.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/analytics",
+                    "response": {
+                        "$ref": "ListAnalyticsResponse"
+                    }
+                }
+            }
+        },
+        "v2": {
+            "methods": {
+                "updateLeads": {
+                    "description": "Updates the specified lead.",
+                    "httpMethod": "PATCH",
+                    "id": "partners.updateLeads",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "requestMetadata.userOverrides.userId": {
+                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.partnersSessionId": {
+                            "description": "Google Partners session ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSourceId": {
+                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.locale": {
+                            "description": "Locale to use for the current request.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.ipAddress": {
+                            "description": "IP address to use instead of the user's geo-located IP address.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "updateMask": {
+                            "description": "Standard field mask for the set of fields to be updated.\nRequired with at least 1 value in FieldMask's paths.\nOnly `state` and `adwords_customer_id` are currently supported.",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.experimentIds": {
+                            "description": "Experiment IDs the current request belongs to.",
+                            "location": "query",
+                            "repeated": true,
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSubId": {
+                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/leads",
+                    "request": {
+                        "$ref": "Lead"
+                    },
+                    "response": {
+                        "$ref": "Lead"
+                    }
+                },
+                "updateCompanies": {
+                    "description": "Update company.\nShould only be called within the context of an authorized logged in user.",
+                    "httpMethod": "PATCH",
+                    "id": "partners.updateCompanies",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "updateMask": {
+                            "description": "Standard field mask for the set of fields to be updated.\nRequired with at least 1 value in FieldMask's paths.",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.experimentIds": {
+                            "description": "Experiment IDs the current request belongs to.",
+                            "location": "query",
+                            "repeated": true,
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSubId": {
+                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.partnersSessionId": {
+                            "description": "Google Partners session ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.userId": {
+                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSourceId": {
+                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.locale": {
+                            "description": "Locale to use for the current request.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.ipAddress": {
+                            "description": "IP address to use instead of the user's geo-located IP address.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/companies",
+                    "request": {
+                        "$ref": "Company"
+                    },
+                    "response": {
+                        "$ref": "Company"
+                    }
+                },
+                "getPartnersstatus": {
+                    "description": "Gets Partners Status of the logged in user's agency.\nShould only be called if the logged in user is the admin of the agency.",
+                    "httpMethod": "GET",
+                    "id": "partners.getPartnersstatus",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "requestMetadata.trafficSource.trafficSourceId": {
+                            "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.locale": {
+                            "description": "Locale to use for the current request.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.ipAddress": {
+                            "description": "IP address to use instead of the user's geo-located IP address.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.experimentIds": {
+                            "description": "Experiment IDs the current request belongs to.",
+                            "location": "query",
+                            "repeated": true,
+                            "type": "string"
+                        },
+                        "requestMetadata.trafficSource.trafficSubId": {
+                            "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.userOverrides.userId": {
+                            "description": "Logged-in user ID to impersonate instead of the user's ID.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMetadata.partnersSessionId": {
+                            "description": "Google Partners session ID.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/partnersstatus",
+                    "response": {
+                        "$ref": "GetPartnersStatusResponse"
                     }
                 }
             }
         }
     },
-    "revision": "20170928",
+    "revision": "20171011",
     "rootUrl": "https://partners.googleapis.com/",
     "schemas": {
-        "AdWordsManagerAccountInfo": {
-            "description": "Information about a particular AdWords Manager Account.\nRead more at https://support.google.com/adwords/answer/6139186",
-            "id": "AdWordsManagerAccountInfo",
-            "properties": {
-                "id": {
-                    "description": "The AdWords Manager Account id.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "customerName": {
-                    "description": "Name of the customer this account represents.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "PublicProfile": {
-            "description": "Basic information from a public profile.",
-            "id": "PublicProfile",
-            "properties": {
-                "profileImage": {
-                    "description": "The URL to the main profile image of the public profile.",
-                    "type": "string"
-                },
-                "displayImageUrl": {
-                    "description": "The URL to the main display image of the public profile. Being deprecated.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "The display name of the public profile.",
-                    "type": "string"
-                },
-                "url": {
-                    "description": "The URL of the public profile.",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "The ID which can be used to retrieve more details about the public profile.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ResponseMetadata": {
-            "description": "Common data that is in each API response.",
-            "id": "ResponseMetadata",
-            "properties": {
-                "debugInfo": {
-                    "$ref": "DebugInfo",
-                    "description": "Debug information about this request."
-                }
-            },
-            "type": "object"
-        },
-        "RecaptchaChallenge": {
-            "description": "<a href=\"https://www.google.com/recaptcha/\">reCaptcha</a> challenge info.",
-            "id": "RecaptchaChallenge",
-            "properties": {
-                "id": {
-                    "description": "The ID of the reCaptcha challenge.",
-                    "type": "string"
-                },
-                "response": {
-                    "description": "The response to the reCaptcha challenge.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AvailableOffer": {
-            "description": "Available Offers to be distributed.",
-            "id": "AvailableOffer",
-            "properties": {
-                "name": {
-                    "description": "Name of the offer.",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "ID of this offer.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "qualifiedCustomersComplete": {
-                    "description": "Whether or not the list of qualified customers is definitely complete.",
-                    "type": "boolean"
-                },
-                "countryOfferInfos": {
-                    "description": "Offer info by country.",
-                    "items": {
-                        "$ref": "CountryOfferInfo"
-                    },
-                    "type": "array"
-                },
-                "offerType": {
-                    "description": "Type of offer.",
-                    "enum": [
-                        "OFFER_TYPE_UNSPECIFIED",
-                        "OFFER_TYPE_SPEND_X_GET_Y",
-                        "OFFER_TYPE_VIDEO",
-                        "OFFER_TYPE_SPEND_MATCH"
-                    ],
-                    "enumDescriptions": [
-                        "Unset.",
-                        "AdWords spend X get Y.",
-                        "Youtube video.",
-                        "Spend Match up to Y."
-                    ],
-                    "type": "string"
-                },
-                "maxAccountAge": {
-                    "description": "The maximum age of an account [in days] to be eligible.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "qualifiedCustomer": {
-                    "description": "Customers who qualify for this offer.",
-                    "items": {
-                        "$ref": "OfferCustomer"
-                    },
-                    "type": "array"
-                },
-                "terms": {
-                    "description": "Terms of the offer.",
-                    "type": "string"
-                },
-                "showSpecialOfferCopy": {
-                    "description": "Should special text be shown on the offers page.",
-                    "type": "boolean"
-                },
-                "available": {
-                    "description": "The number of codes for this offer that are available for distribution.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "description": {
-                    "description": "Description of the offer.",
-                    "type": "string"
-                },
-                "offerLevel": {
-                    "description": "Level of this offer.",
-                    "enum": [
-                        "OFFER_LEVEL_UNSPECIFIED",
-                        "OFFER_LEVEL_DENY_PROBLEM",
-                        "OFFER_LEVEL_DENY_CONTRACT",
-                        "OFFER_LEVEL_MANUAL",
-                        "OFFER_LEVEL_LIMIT_0",
-                        "OFFER_LEVEL_LIMIT_5",
-                        "OFFER_LEVEL_LIMIT_15",
-                        "OFFER_LEVEL_LIMIT_50"
-                    ],
-                    "enumDescriptions": [
-                        "Unset.",
-                        "Users/Agencies that have no offers because of a problem.",
-                        "Users/Agencies that have no offers due to contractural agreements.",
-                        "Users/Agencies that have a manually-configured limit.",
-                        "Some Agencies don't get any offers.",
-                        "Basic level gets 5 per month.",
-                        "Agencies with adequate AHI and spend get 15/month.",
-                        "Badged partners (even in grace) get 50 per month."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LatLng": {
-            "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n<a href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\">WGS84\nstandard</a>. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n    def NormalizeLongitude(longitude):\n      \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n      q, r = divmod(longitude, 360.0)\n      if r > 180.0 or (r == 180.0 and q <= -1.0):\n        return r - 360.0\n      return r\n\n    def NormalizeLatLng(latitude, longitude):\n      \"\"\"Wraps decimal degrees latitude and longitude to\n      [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n      r = latitude % 360.0\n      if r <= 90.0:\n        return r, NormalizeLongitude(longitude)\n      elif r >= 270.0:\n        return r - 360, NormalizeLongitude(longitude)\n      else:\n        return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n    assert 180.0 == NormalizeLongitude(180.0)\n    assert -180.0 == NormalizeLongitude(-180.0)\n    assert -179.0 == NormalizeLongitude(181.0)\n    assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n    assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n    assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n    assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n    assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n    assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)",
-            "id": "LatLng",
-            "properties": {
-                "longitude": {
-                    "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
-                    "format": "double",
-                    "type": "number"
-                },
-                "latitude": {
-                    "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
-                    "format": "double",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "Money": {
-            "description": "Represents an amount of money with its currency type.",
-            "id": "Money",
-            "properties": {
-                "nanos": {
-                    "description": "Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999 inclusive.\nIf `units` is positive, `nanos` must be positive or zero.\nIf `units` is zero, `nanos` can be positive, zero, or negative.\nIf `units` is negative, `nanos` must be negative or zero.\nFor example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "units": {
-                    "description": "The whole units of the amount.\nFor example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "currencyCode": {
-                    "description": "The 3-letter currency code defined in ISO 4217.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AnalyticsSummary": {
-            "description": "Analytics aggregated data for a `Company` for a given date range.",
-            "id": "AnalyticsSummary",
-            "properties": {
-                "searchViewsCount": {
-                    "description": "Aggregated number of times users saw the `Company`\nin Google Partners Search results for given date range.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "contactsCount": {
-                    "description": "Aggregated number of times users contacted the `Company`\nfor given date range.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "profileViewsCount": {
-                    "description": "Aggregated number of profile views for the `Company` for given date range.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "LogMessageRequest": {
-            "description": "Request message for\nLogClientMessage.",
-            "id": "LogMessageRequest",
-            "properties": {
-                "level": {
-                    "description": "Message level of client message.",
-                    "enum": [
-                        "MESSAGE_LEVEL_UNSPECIFIED",
-                        "ML_FINE",
-                        "ML_INFO",
-                        "ML_WARNING",
-                        "ML_SEVERE"
-                    ],
-                    "enumDescriptions": [
-                        "Unchosen.",
-                        "Message level for tracing information.",
-                        "Message level for informational messages.",
-                        "Message level for potential problems.",
-                        "Message level for serious failures."
-                    ],
-                    "type": "string"
-                },
-                "details": {
-                    "description": "Details about the client message.",
-                    "type": "string"
-                },
-                "clientInfo": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Map of client info, such as URL, browser navigator, browser platform, etc.",
-                    "type": "object"
-                },
-                "requestMetadata": {
-                    "$ref": "RequestMetadata",
-                    "description": "Current request metadata."
-                }
-            },
-            "type": "object"
-        },
-        "DebugInfo": {
-            "description": "Debug information about this request.",
-            "id": "DebugInfo",
-            "properties": {
-                "serverTraceInfo": {
-                    "description": "Server-side debug stack trace.",
-                    "type": "string"
-                },
-                "serverInfo": {
-                    "description": "Info about the server that serviced this request.",
-                    "type": "string"
-                },
-                "serviceUrl": {
-                    "description": "URL of the service that handled this request.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Lead": {
-            "description": "A lead resource that represents an advertiser contact for a `Company`. These\nare usually generated via Google Partner Search (the advertiser portal).",
-            "id": "Lead",
-            "properties": {
-                "type": {
-                    "description": "Type of lead.",
-                    "enum": [
-                        "LEAD_TYPE_UNSPECIFIED",
-                        "LT_GPS"
-                    ],
-                    "enumDescriptions": [
-                        "Unchosen.",
-                        "Google Partner Search."
-                    ],
-                    "type": "string"
-                },
-                "givenName": {
-                    "description": "First name of lead source.",
-                    "type": "string"
-                },
-                "minMonthlyBudget": {
-                    "$ref": "Money",
-                    "description": "The minimum monthly budget lead source is willing to spend."
-                },
-                "websiteUrl": {
-                    "description": "Website URL of lead source.",
-                    "type": "string"
-                },
-                "languageCode": {
-                    "description": "Language code of the lead's language preference, as defined by\n<a href=\"https://tools.ietf.org/html/bcp47\">BCP 47</a>\n(IETF BCP 47, \"Tags for Identifying Languages\").",
-                    "type": "string"
-                },
-                "gpsMotivations": {
-                    "description": "List of reasons for using Google Partner Search and creating a lead.",
-                    "enumDescriptions": [
-                        "Unchosen.",
-                        "Advertiser needs help with their advertising.",
-                        "Advertiser needs help with their website.",
-                        "Advertiser does not have a website."
-                    ],
-                    "items": {
-                        "enum": [
-                            "GPS_MOTIVATION_UNSPECIFIED",
-                            "GPSM_HELP_WITH_ADVERTISING",
-                            "GPSM_HELP_WITH_WEBSITE",
-                            "GPSM_NO_WEBSITE"
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "state": {
-                    "description": "The lead's state in relation to the company.",
-                    "enum": [
-                        "LEAD_STATE_UNSPECIFIED",
-                        "LEAD",
-                        "CONTACTED",
-                        "CLIENT",
-                        "OTHER"
-                    ],
-                    "enumDescriptions": [
-                        "Unchosen.",
-                        "Lead not yet contacted.",
-                        "Lead has been contacted.",
-                        "Lead has become a client.",
-                        "Lead in a state not covered by other options."
-                    ],
-                    "type": "string"
-                },
-                "email": {
-                    "description": "Email address of lead source.",
-                    "type": "string"
-                },
-                "familyName": {
-                    "description": "Last name of lead source.",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "ID of the lead.",
-                    "type": "string"
-                },
-                "comments": {
-                    "description": "Comments lead source gave.",
-                    "type": "string"
-                },
-                "phoneNumber": {
-                    "description": "Phone number of lead source.",
-                    "type": "string"
-                },
-                "adwordsCustomerId": {
-                    "description": "The AdWords Customer ID of the lead.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "createTime": {
-                    "description": "Timestamp of when this lead was created.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "marketingOptIn": {
-                    "description": "Whether or not the lead signed up for marketing emails",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "ListUserStatesResponse": {
-            "description": "Response message for\nListUserStates.",
-            "id": "ListUserStatesResponse",
-            "properties": {
-                "responseMetadata": {
-                    "$ref": "ResponseMetadata",
-                    "description": "Current response metadata."
-                },
-                "userStates": {
-                    "description": "User's states.",
-                    "enumDescriptions": [
-                        "Unchosen.",
-                        "User must pass <a href=\"https://www.google.com/recaptcha/\">reCaptcha</a> to\ncontact a Partner via Google Partner Search."
-                    ],
-                    "items": {
-                        "enum": [
-                            "USER_STATE_UNSPECIFIED",
-                            "US_REQUIRES_RECAPTCHA_FOR_GPS_CONTACT"
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "CompanyRelation": {
-            "description": "A CompanyRelation resource representing information about a user's\naffiliation and standing with a company in Partners.",
-            "id": "CompanyRelation",
-            "properties": {
-                "state": {
-                    "description": "The state of relationship, in terms of approvals.",
-                    "enum": [
-                        "USER_COMPANY_REATION_STATE_NONE_SPECIFIED",
-                        "USER_COMPANY_RELATION_STATE_AWAIT_EMAIL",
-                        "USER_COMPANY_RELATION_STATE_AWAIT_ADMIN",
-                        "USER_COMPANY_RELATION_STATE_APPROVED"
-                    ],
-                    "enumDescriptions": [
-                        "Default unspecified value.",
-                        "User has filled in a request to be associated with an company.\nNow waiting email confirmation.",
-                        "Pending approval from company.\nEmail confirmation will not approve this one.",
-                        "Approved by company."
-                    ],
-                    "type": "string"
-                },
-                "primaryAddress": {
-                    "$ref": "Location",
-                    "description": "The primary location of the company."
-                },
-                "managerAccount": {
-                    "description": "The AdWords manager account # associated this company.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name (in the company's primary language) for the company.",
-                    "type": "string"
-                },
-                "segment": {
-                    "description": "The segment the company is classified as.",
-                    "enumDescriptions": [
-                        "Default segment indicates an unknown.",
-                        "Segment representing a selected group of Partners",
-                        "Segment representing Premier SMB Partners, an AdWords partnership program.",
-                        "A segment of Premier SMB Partners that have relationship with Google."
-                    ],
-                    "items": {
-                        "enum": [
-                            "COMPANY_SEGMENT_UNKNOWN",
-                            "COMPANY_SEGMENT_NAL",
-                            "COMPANY_SEGMENT_PSP",
-                            "COMPANY_SEGMENT_PPSP"
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "internalCompanyId": {
-                    "description": "The internal company ID.\nOnly available for a whitelisted set of api clients.",
-                    "type": "string"
-                },
-                "specializationStatus": {
-                    "description": "The list of Google Partners specialization statuses for the company.",
-                    "items": {
-                        "$ref": "SpecializationStatus"
-                    },
-                    "type": "array"
-                },
-                "badgeTier": {
-                    "description": "Whether the company is a Partner.",
-                    "enum": [
-                        "BADGE_TIER_NONE",
-                        "BADGE_TIER_REGULAR",
-                        "BADGE_TIER_PREMIER"
-                    ],
-                    "enumDescriptions": [
-                        "Tier badge is not set.",
-                        "Agency has regular partner badge.",
-                        "Agency has premier badge."
-                    ],
-                    "type": "string"
-                },
-                "website": {
-                    "description": "The website URL for this company.",
-                    "type": "string"
-                },
-                "phoneNumber": {
-                    "description": "The phone number for the company's primary address.",
-                    "type": "string"
-                },
-                "primaryCountryCode": {
-                    "description": "The primary country code of the company.",
-                    "type": "string"
-                },
-                "companyId": {
-                    "description": "The ID of the company. There may be no id if this is a\npending company.5",
-                    "type": "string"
-                },
-                "primaryLanguageCode": {
-                    "description": "The primary language code of the company.",
-                    "type": "string"
-                },
-                "logoUrl": {
-                    "description": "A URL to a profile photo, e.g. a G+ profile photo.",
-                    "type": "string"
-                },
-                "resolvedTimestamp": {
-                    "description": "The timestamp when the user was approved.\n@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "companyAdmin": {
-                    "description": "Indicates if the user is an admin for this company.",
-                    "type": "boolean"
-                },
-                "isPending": {
-                    "description": "The flag that indicates if the company is pending verification.",
-                    "type": "boolean"
-                },
-                "address": {
-                    "description": "The primary address for this company.",
-                    "type": "string"
-                },
-                "creationTime": {
-                    "description": "The timestamp of when affiliation was requested.\n@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Date": {
-            "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.",
-            "id": "Date",
-            "properties": {
-                "day": {
-                    "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "year": {
-                    "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "month": {
-                    "description": "Month of year. Must be from 1 to 12.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
-        "TrafficSource": {
-            "description": "Source of traffic for the current request.",
-            "id": "TrafficSource",
-            "properties": {
-                "trafficSourceId": {
-                    "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                    "type": "string"
-                },
-                "trafficSubId": {
-                    "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RequestMetadata": {
-            "description": "Common data that is in each API request.",
-            "id": "RequestMetadata",
-            "properties": {
-                "locale": {
-                    "description": "Locale to use for the current request.",
-                    "type": "string"
-                },
-                "partnersSessionId": {
-                    "description": "Google Partners session ID.",
-                    "type": "string"
-                },
-                "userOverrides": {
-                    "$ref": "UserOverrides",
-                    "description": "Values to use instead of the user's respective defaults for the current\nrequest. These are only honored by whitelisted products."
-                },
-                "trafficSource": {
-                    "$ref": "TrafficSource",
-                    "description": "Source of traffic for the current request."
-                },
-                "experimentIds": {
-                    "description": "Experiment IDs the current request belongs to.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "CreateLeadRequest": {
-            "description": "Request message for CreateLead.",
-            "id": "CreateLeadRequest",
-            "properties": {
-                "requestMetadata": {
-                    "$ref": "RequestMetadata",
-                    "description": "Current request metadata."
-                },
-                "recaptchaChallenge": {
-                    "$ref": "RecaptchaChallenge",
-                    "description": "<a href=\"https://www.google.com/recaptcha/\">reCaptcha</a> challenge info."
-                },
-                "lead": {
-                    "$ref": "Lead",
-                    "description": "The lead resource. The `LeadType` must not be `LEAD_TYPE_UNSPECIFIED`\nand either `email` or `phone_number` must be provided."
-                }
-            },
-            "type": "object"
-        },
-        "EventData": {
-            "description": "Key value data pair for an event.",
-            "id": "EventData",
-            "properties": {
-                "key": {
-                    "description": "Data type.",
-                    "enum": [
-                        "EVENT_DATA_TYPE_UNSPECIFIED",
-                        "ACTION",
-                        "AGENCY_ID",
-                        "AGENCY_NAME",
-                        "AGENCY_PHONE_NUMBER",
-                        "AGENCY_WEBSITE",
-                        "BUDGET",
-                        "CENTER_POINT",
-                        "CERTIFICATION",
-                        "COMMENT",
-                        "COUNTRY",
-                        "CURRENCY",
-                        "CURRENTLY_VIEWED_AGENCY_ID",
-                        "DISTANCE",
-                        "DISTANCE_TYPE",
-                        "EXAM",
-                        "HISTORY_TOKEN",
-                        "ID",
-                        "INDUSTRY",
-                        "INSIGHT_TAG",
-                        "LANGUAGE",
-                        "LOCATION",
-                        "MARKETING_OPT_IN",
-                        "QUERY",
-                        "SEARCH_START_INDEX",
-                        "SERVICE",
-                        "SHOW_VOW",
-                        "SOLUTION",
-                        "TRAFFIC_SOURCE_ID",
-                        "TRAFFIC_SUB_ID",
-                        "VIEW_PORT",
-                        "WEBSITE",
-                        "DETAILS",
-                        "EXPERIMENT_ID",
-                        "GPS_MOTIVATION",
-                        "URL",
-                        "ELEMENT_FOCUS",
-                        "PROGRESS"
-                    ],
-                    "enumDescriptions": [
-                        "Unchosen.",
-                        "Action data.",
-                        "Agency ID data.",
-                        "Agency name data.",
-                        "Agency phone number data.",
-                        "Agency website data.",
-                        "Budget data.",
-                        "Center-point data.",
-                        "Certification data.",
-                        "Comment data.",
-                        "Country data.",
-                        "Currency data.",
-                        "Currently viewed agency ID data.",
-                        "Distance data.",
-                        "Distance type data.",
-                        "Exam data.",
-                        "History token data.",
-                        "Identifier data.",
-                        "Industry data.",
-                        "Insight tag data.",
-                        "Language data.",
-                        "Location  data.",
-                        "Marketing opt-in data.",
-                        "Query data.",
-                        "Search start index data.",
-                        "Service data.",
-                        "Show vow data.",
-                        "Solution data.",
-                        "Traffic source ID data.",
-                        "Traffic sub ID data.",
-                        "Viewport data.",
-                        "Website data.",
-                        "Details data.",
-                        "Experiment ID data.",
-                        "Google Partner Search motivation data.",
-                        "URL data.",
-                        "Element we wanted user to focus on.",
-                        "Progress when viewing an item \\[0-100\\]."
-                    ],
-                    "type": "string"
-                },
-                "values": {
-                    "description": "Data values.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ExamStatus": {
-            "description": "A user's information on a specific exam.",
-            "id": "ExamStatus",
-            "properties": {
-                "warning": {
-                    "description": "Whether this exam is in the state of warning.",
-                    "type": "boolean"
-                },
-                "expiration": {
-                    "description": "Date this exam is due to expire.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "lastPassed": {
-                    "description": "The date the user last passed this exam.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "examType": {
-                    "description": "The type of the exam.",
-                    "enum": [
-                        "CERTIFICATION_EXAM_TYPE_UNSPECIFIED",
-                        "CET_ADWORDS_FUNDAMENTALS",
-                        "CET_ADWORDS_ADVANCED_SEARCH",
-                        "CET_ADWORDS_ADVANCED_DISPLAY",
-                        "CET_VIDEO_ADS",
-                        "CET_DOUBLECLICK",
-                        "CET_ANALYTICS",
-                        "CET_SHOPPING",
-                        "CET_MOBILE",
-                        "CET_DIGITAL_SALES",
-                        "CET_MOBILE_SITES"
-                    ],
-                    "enumDescriptions": [
-                        "Unchosen.",
-                        "Adwords Fundamentals exam.",
-                        "AdWords advanced search exam.",
-                        "AdWords advanced display exam.",
-                        "VideoAds exam.",
-                        "DoubleClick exam.",
-                        "Analytics exam.",
-                        "Shopping exam.",
-                        "Mobile exam.",
-                        "Digital Sales exam.",
-                        "Mobile Sites exam."
-                    ],
-                    "type": "string"
-                },
-                "taken": {
-                    "description": "The date the user last taken this exam.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "passed": {
-                    "description": "Whether this exam has been passed and not expired.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "ListOffersResponse": {
-            "description": "Response for ListOffer.",
-            "id": "ListOffersResponse",
-            "properties": {
-                "responseMetadata": {
-                    "$ref": "ResponseMetadata",
-                    "description": "Current response metadata."
-                },
-                "noOfferReason": {
-                    "description": "Reason why no Offers are available.",
-                    "enum": [
-                        "NO_OFFER_REASON_UNSPECIFIED",
-                        "NO_OFFER_REASON_NO_MCC",
-                        "NO_OFFER_REASON_LIMIT_REACHED",
-                        "NO_OFFER_REASON_INELIGIBLE"
-                    ],
-                    "enumDescriptions": [
-                        "Unset.",
-                        "Not an MCC.",
-                        "Offer limit has been reached.",
-                        "Ineligible for offers."
-                    ],
-                    "type": "string"
-                },
-                "availableOffers": {
-                    "description": "Available Offers to be distributed.",
-                    "items": {
-                        "$ref": "AvailableOffer"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "CountryOfferInfo": {
-            "description": "Offer info by country.",
-            "id": "CountryOfferInfo",
-            "properties": {
-                "getYAmount": {
-                    "description": "(localized) Get Y amount for that country's offer.",
-                    "type": "string"
-                },
-                "spendXAmount": {
-                    "description": "(localized) Spend X amount for that country's offer.",
-                    "type": "string"
-                },
-                "offerCountryCode": {
-                    "description": "Country code for which offer codes may be requested.",
-                    "type": "string"
-                },
-                "offerType": {
-                    "description": "Type of offer country is eligible for.",
-                    "enum": [
-                        "OFFER_TYPE_UNSPECIFIED",
-                        "OFFER_TYPE_SPEND_X_GET_Y",
-                        "OFFER_TYPE_VIDEO",
-                        "OFFER_TYPE_SPEND_MATCH"
-                    ],
-                    "enumDescriptions": [
-                        "Unset.",
-                        "AdWords spend X get Y.",
-                        "Youtube video.",
-                        "Spend Match up to Y."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListCompaniesResponse": {
-            "description": "Response message for\nListCompanies.",
-            "id": "ListCompaniesResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "A token to retrieve next page of results.\nPass this value in the `ListCompaniesRequest.page_token` field in the\nsubsequent call to\nListCompanies to retrieve the\nnext page of results.",
-                    "type": "string"
-                },
-                "responseMetadata": {
-                    "$ref": "ResponseMetadata",
-                    "description": "Current response metadata."
-                },
-                "companies": {
-                    "description": "The list of companies.",
-                    "items": {
-                        "$ref": "Company"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "OfferCustomer": {
-            "description": "Customers qualified for an offer.",
-            "id": "OfferCustomer",
-            "properties": {
-                "adwordsUrl": {
-                    "description": "URL to the customer's AdWords page.",
-                    "type": "string"
-                },
-                "eligibilityDaysLeft": {
-                    "description": "Days the customer is still eligible.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "offerType": {
-                    "description": "Type of the offer",
-                    "enum": [
-                        "OFFER_TYPE_UNSPECIFIED",
-                        "OFFER_TYPE_SPEND_X_GET_Y",
-                        "OFFER_TYPE_VIDEO",
-                        "OFFER_TYPE_SPEND_MATCH"
-                    ],
-                    "enumDescriptions": [
-                        "Unset.",
-                        "AdWords spend X get Y.",
-                        "Youtube video.",
-                        "Spend Match up to Y."
-                    ],
-                    "type": "string"
-                },
-                "externalCid": {
-                    "description": "External CID for the customer.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "countryCode": {
-                    "description": "Country code of the customer.",
-                    "type": "string"
-                },
-                "creationTime": {
-                    "description": "Time the customer was created.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "getYAmount": {
-                    "description": "Formatted Get Y amount with currency code.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Name of the customer.",
-                    "type": "string"
-                },
-                "spendXAmount": {
-                    "description": "Formatted Spend X amount with currency code.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CertificationStatus": {
-            "description": "Google Partners certification status.",
-            "id": "CertificationStatus",
-            "properties": {
-                "type": {
-                    "description": "The type of the certification.",
-                    "enum": [
-                        "CERTIFICATION_TYPE_UNSPECIFIED",
-                        "CT_ADWORDS",
-                        "CT_YOUTUBE",
-                        "CT_VIDEOADS",
-                        "CT_ANALYTICS",
-                        "CT_DOUBLECLICK",
-                        "CT_SHOPPING",
-                        "CT_MOBILE",
-                        "CT_DIGITAL_SALES",
-                        "CT_ADWORDS_SEARCH",
-                        "CT_ADWORDS_DISPLAY",
-                        "CT_MOBILE_SITES"
-                    ],
-                    "enumDescriptions": [
-                        "Unchosen.",
-                        "AdWords certified.",
-                        "YouTube certified.",
-                        "VideoAds certified.",
-                        "Analytics certified.",
-                        "DoubleClick certified.",
-                        "Shopping certified.",
-                        "Mobile certified.",
-                        "Digital sales certified.",
-                        "AdWords Search certified.",
-                        "AdWords Display certified.",
-                        "Mobile Sites certified."
-                    ],
-                    "type": "string"
-                },
-                "userCount": {
-                    "description": "Number of people who are certified,",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "isCertified": {
-                    "description": "Whether certification is passing.",
-                    "type": "boolean"
-                },
-                "examStatuses": {
-                    "description": "List of certification exam statuses.",
-                    "items": {
-                        "$ref": "CertificationExamStatus"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "LocalizedCompanyInfo": {
-            "description": "The localized company information.",
-            "id": "LocalizedCompanyInfo",
-            "properties": {
-                "languageCode": {
-                    "description": "Language code of the localized company info, as defined by\n<a href=\"https://tools.ietf.org/html/bcp47\">BCP 47</a>\n(IETF BCP 47, \"Tags for Identifying Languages\").",
-                    "type": "string"
-                },
-                "countryCodes": {
-                    "description": "List of country codes for the localized company info.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "overview": {
-                    "description": "Localized brief description that the company uses to advertise themselves.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "Localized display name.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LogUserEventResponse": {
-            "description": "Response message for\nLogUserEvent.",
-            "id": "LogUserEventResponse",
-            "properties": {
-                "responseMetadata": {
-                    "$ref": "ResponseMetadata",
-                    "description": "Current response metadata."
-                }
-            },
-            "type": "object"
-        },
-        "ListOffersHistoryResponse": {
-            "description": "Response for ListOfferHistory.",
-            "id": "ListOffersHistoryResponse",
-            "properties": {
-                "canShowEntireCompany": {
-                    "description": "True if the user has the option to show entire company history.",
-                    "type": "boolean"
-                },
-                "totalResults": {
-                    "description": "Number of results across all pages.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "showingEntireCompany": {
-                    "description": "True if this response is showing entire company history.",
-                    "type": "boolean"
-                },
-                "offers": {
-                    "description": "Historical offers meeting request.",
-                    "items": {
-                        "$ref": "HistoricalOffer"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "Supply this token in a ListOffersHistoryRequest to retrieve the next page.",
-                    "type": "string"
-                },
-                "responseMetadata": {
-                    "$ref": "ResponseMetadata",
-                    "description": "Current response metadata."
-                }
-            },
-            "type": "object"
-        },
-        "LogMessageResponse": {
-            "description": "Response message for\nLogClientMessage.",
-            "id": "LogMessageResponse",
-            "properties": {
-                "responseMetadata": {
-                    "$ref": "ResponseMetadata",
-                    "description": "Current response metadata."
-                }
-            },
-            "type": "object"
-        },
-        "SpecializationStatus": {
-            "description": "Agency specialization status",
-            "id": "SpecializationStatus",
-            "properties": {
-                "badgeSpecialization": {
-                    "description": "The specialization this status is for.",
-                    "enum": [
-                        "BADGE_SPECIALIZATION_UNKNOWN",
-                        "BADGE_SPECIALIZATION_ADWORDS_SEARCH",
-                        "BADGE_SPECIALIZATION_ADWORDS_DISPLAY",
-                        "BADGE_SPECIALIZATION_ADWORDS_MOBILE",
-                        "BADGE_SPECIALIZATION_ADWORDS_VIDEO",
-                        "BADGE_SPECIALIZATION_ADWORDS_SHOPPING"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown specialization",
-                        "AdWords Search specialization",
-                        "AdWords Display specialization",
-                        "AdWords Mobile specialization",
-                        "AdWords Video specialization",
-                        "AdWords Shopping specialization"
-                    ],
-                    "type": "string"
-                },
-                "badgeSpecializationState": {
-                    "description": "State of agency specialization.",
-                    "enum": [
-                        "BADGE_SPECIALIZATION_STATE_UNKNOWN",
-                        "BADGE_SPECIALIZATION_STATE_PASSED",
-                        "BADGE_SPECIALIZATION_STATE_NOT_PASSED",
-                        "BADGE_SPECIALIZATION_STATE_IN_GRACE"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown state",
-                        "Specialization passed",
-                        "Specialization not passed",
-                        "Specialization in grace"
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Certification": {
-            "description": "A user's information on a specific certification.",
-            "id": "Certification",
-            "properties": {
-                "lastAchieved": {
-                    "description": "The date the user last achieved certification.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "warning": {
-                    "description": "Whether this certification is in the state of warning.",
-                    "type": "boolean"
-                },
-                "expiration": {
-                    "description": "Date this certification is due to expire.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "achieved": {
-                    "description": "Whether this certification has been achieved.",
-                    "type": "boolean"
-                },
-                "certificationType": {
-                    "description": "The type of certification, the area of expertise.",
-                    "enum": [
-                        "CERTIFICATION_TYPE_UNSPECIFIED",
-                        "CT_ADWORDS",
-                        "CT_YOUTUBE",
-                        "CT_VIDEOADS",
-                        "CT_ANALYTICS",
-                        "CT_DOUBLECLICK",
-                        "CT_SHOPPING",
-                        "CT_MOBILE",
-                        "CT_DIGITAL_SALES",
-                        "CT_ADWORDS_SEARCH",
-                        "CT_ADWORDS_DISPLAY",
-                        "CT_MOBILE_SITES"
-                    ],
-                    "enumDescriptions": [
-                        "Unchosen.",
-                        "AdWords certified.",
-                        "YouTube certified.",
-                        "VideoAds certified.",
-                        "Analytics certified.",
-                        "DoubleClick certified.",
-                        "Shopping certified.",
-                        "Mobile certified.",
-                        "Digital sales certified.",
-                        "AdWords Search certified.",
-                        "AdWords Display certified.",
-                        "Mobile Sites certified."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "User": {
-            "description": "A resource representing a user of the Partners platform.",
-            "id": "User",
-            "properties": {
-                "company": {
-                    "$ref": "CompanyRelation",
-                    "description": "The company that the user is associated with.\nIf not present, the user is not associated with any company."
-                },
-                "profile": {
-                    "$ref": "UserProfile",
-                    "description": "The profile information of a Partners user, contains all the directly\neditable user information."
-                },
-                "lastAccessTime": {
-                    "description": "The most recent time the user interacted with the Partners site.\n@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "primaryEmails": {
-                    "description": "The list of emails the user has access to/can select as primary.\n@OutputOnly",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "availableAdwordsManagerAccounts": {
-                    "description": "This is the list of AdWords Manager Accounts the user has edit access to.\nIf the user has edit access to multiple accounts, the user can choose the\npreferred account and we use this when a personal account is needed. Can\nbe empty meaning the user has access to no accounts.\n@OutputOnly",
-                    "items": {
-                        "$ref": "AdWordsManagerAccountInfo"
-                    },
-                    "type": "array"
-                },
-                "internalId": {
-                    "description": "The internal user ID.\nOnly available for a whitelisted set of api clients.",
-                    "type": "string"
-                },
-                "examStatus": {
-                    "description": "The list of exams the user ever taken. For each type of exam, only one\nentry is listed.",
-                    "items": {
-                        "$ref": "ExamStatus"
-                    },
-                    "type": "array"
-                },
-                "id": {
-                    "description": "The ID of the user.",
-                    "type": "string"
-                },
-                "publicProfile": {
-                    "$ref": "PublicProfile",
-                    "description": "Information about a user's external public profile outside Google Partners."
-                },
-                "certificationStatus": {
-                    "description": "The list of achieved certifications. These are calculated based on exam\nresults and other requirements.\n@OutputOnly",
-                    "items": {
-                        "$ref": "Certification"
-                    },
-                    "type": "array"
-                },
-                "companyVerificationEmail": {
-                    "description": "The email address used by the user used for company verification.\n@OutputOnly",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "ListAnalyticsResponse": {
             "description": "Response message for\nListAnalytics.",
             "id": "ListAnalyticsResponse",
             "properties": {
+                "analytics": {
+                    "description": "The list of analytics.\nSorted in ascending order of\nAnalytics.event_date.",
+                    "items": {
+                        "$ref": "Analytics"
+                    },
+                    "type": "array"
+                },
                 "nextPageToken": {
                     "description": "A token to retrieve next page of results.\nPass this value in the `ListAnalyticsRequest.page_token` field in the\nsubsequent call to\nListAnalytics to retrieve the\nnext page of results.",
                     "type": "string"
@@ -2489,13 +1253,6 @@
                 "responseMetadata": {
                     "$ref": "ResponseMetadata",
                     "description": "Current response metadata."
-                },
-                "analytics": {
-                    "description": "The list of analytics.\nSorted in ascending order of\nAnalytics.event_date.",
-                    "items": {
-                        "$ref": "Analytics"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -2531,133 +1288,6 @@
             "description": "A company resource in the Google Partners API. Once certified, it qualifies\nfor being searched by advertisers.",
             "id": "Company",
             "properties": {
-                "name": {
-                    "description": "The name of the company.",
-                    "type": "string"
-                },
-                "localizedInfos": {
-                    "description": "The list of localized info for the company.",
-                    "items": {
-                        "$ref": "LocalizedCompanyInfo"
-                    },
-                    "type": "array"
-                },
-                "certificationStatuses": {
-                    "description": "The list of Google Partners certification statuses for the company.",
-                    "items": {
-                        "$ref": "CertificationStatus"
-                    },
-                    "type": "array"
-                },
-                "id": {
-                    "description": "The ID of the company.",
-                    "type": "string"
-                },
-                "services": {
-                    "description": "Services the company can help with.",
-                    "enumDescriptions": [
-                        "Unchosen.",
-                        "Help with advanced AdWords support.",
-                        "Help with advertising on Google.",
-                        "Help with an enhanced website.",
-                        "Help with an online marketing plan.",
-                        "Help with mobile and video ads.",
-                        "Help with mobile websites."
-                    ],
-                    "items": {
-                        "enum": [
-                            "SERVICE_UNSPECIFIED",
-                            "S_ADVANCED_ADWORDS_SUPPORT",
-                            "S_ADVERTISING_ON_GOOGLE",
-                            "S_AN_ENHANCED_WEBSITE",
-                            "S_AN_ONLINE_MARKETING_PLAN",
-                            "S_MOBILE_AND_VIDEO_ADS",
-                            "S_MOBILE_WEBSITE_SERVICES"
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "originalMinMonthlyBudget": {
-                    "$ref": "Money",
-                    "description": "The unconverted minimum monthly budget that the company accepts for partner\nbusiness."
-                },
-                "publicProfile": {
-                    "$ref": "PublicProfile",
-                    "description": "Basic information from the company's public profile."
-                },
-                "primaryLocation": {
-                    "$ref": "Location",
-                    "description": "The primary location of the company."
-                },
-                "ranks": {
-                    "description": "Information related to the ranking of the company within the list of\ncompanies.",
-                    "items": {
-                        "$ref": "Rank"
-                    },
-                    "type": "array"
-                },
-                "badgeTier": {
-                    "description": "Partner badge tier",
-                    "enum": [
-                        "BADGE_TIER_NONE",
-                        "BADGE_TIER_REGULAR",
-                        "BADGE_TIER_PREMIER"
-                    ],
-                    "enumDescriptions": [
-                        "Tier badge is not set.",
-                        "Agency has regular partner badge.",
-                        "Agency has premier badge."
-                    ],
-                    "type": "string"
-                },
-                "specializationStatus": {
-                    "description": "The list of Google Partners specialization statuses for the company.",
-                    "items": {
-                        "$ref": "SpecializationStatus"
-                    },
-                    "type": "array"
-                },
-                "companyTypes": {
-                    "description": "Company type labels listed on the company's profile.",
-                    "enumDescriptions": [
-                        "Unchosen.",
-                        "Handles all aspects of the advertising process.",
-                        "Focuses solely on an advertiser's media placement.",
-                        "Plans/executes advertising campaigns.",
-                        "Like a\nFULL_SERVICE_AGENCY,\nbut specializing in digital.",
-                        "Increases visibility in search engine result pages.",
-                        "Drives promotional efforts for immediate impact.",
-                        "Focuses on bid management, conversion, reporting.",
-                        "Establishes favorable relationship with public through low/no-cost\ncommunications.",
-                        "Does not manage other company's accounts, manages own marketing programs.",
-                        "Full-service AdWords account management for local businesses."
-                    ],
-                    "items": {
-                        "enum": [
-                            "COMPANY_TYPE_UNSPECIFIED",
-                            "FULL_SERVICE_AGENCY",
-                            "MEDIA_AGENCY",
-                            "CREATIVE_AGENCY",
-                            "CDIGITAL_AGENCY",
-                            "SEM_SEO",
-                            "PERFORMANCE_MARKETING",
-                            "ADVERTISING_TOOL_DEVELOPMENT",
-                            "PR",
-                            "SELF_MANAGED",
-                            "RESELLER"
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "autoApprovalEmailDomains": {
-                    "description": "Email domains that allow users with a matching email address to get\nauto-approved for associating with this company.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
                 "profileStatus": {
                     "description": "The public viewability status of the company's profile.",
                     "enum": [
@@ -2737,6 +1367,133 @@
                     "description": "The Primary AdWords Manager Account id.",
                     "format": "int64",
                     "type": "string"
+                },
+                "name": {
+                    "description": "The name of the company.",
+                    "type": "string"
+                },
+                "localizedInfos": {
+                    "description": "The list of localized info for the company.",
+                    "items": {
+                        "$ref": "LocalizedCompanyInfo"
+                    },
+                    "type": "array"
+                },
+                "id": {
+                    "description": "The ID of the company.",
+                    "type": "string"
+                },
+                "certificationStatuses": {
+                    "description": "The list of Google Partners certification statuses for the company.",
+                    "items": {
+                        "$ref": "CertificationStatus"
+                    },
+                    "type": "array"
+                },
+                "primaryLocation": {
+                    "$ref": "Location",
+                    "description": "The primary location of the company."
+                },
+                "services": {
+                    "description": "Services the company can help with.",
+                    "enumDescriptions": [
+                        "Unchosen.",
+                        "Help with advanced AdWords support.",
+                        "Help with advertising on Google.",
+                        "Help with an enhanced website.",
+                        "Help with an online marketing plan.",
+                        "Help with mobile and video ads.",
+                        "Help with mobile websites."
+                    ],
+                    "items": {
+                        "enum": [
+                            "SERVICE_UNSPECIFIED",
+                            "S_ADVANCED_ADWORDS_SUPPORT",
+                            "S_ADVERTISING_ON_GOOGLE",
+                            "S_AN_ENHANCED_WEBSITE",
+                            "S_AN_ONLINE_MARKETING_PLAN",
+                            "S_MOBILE_AND_VIDEO_ADS",
+                            "S_MOBILE_WEBSITE_SERVICES"
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "originalMinMonthlyBudget": {
+                    "$ref": "Money",
+                    "description": "The unconverted minimum monthly budget that the company accepts for partner\nbusiness."
+                },
+                "publicProfile": {
+                    "$ref": "PublicProfile",
+                    "description": "Basic information from the company's public profile."
+                },
+                "ranks": {
+                    "description": "Information related to the ranking of the company within the list of\ncompanies.",
+                    "items": {
+                        "$ref": "Rank"
+                    },
+                    "type": "array"
+                },
+                "specializationStatus": {
+                    "description": "The list of Google Partners specialization statuses for the company.",
+                    "items": {
+                        "$ref": "SpecializationStatus"
+                    },
+                    "type": "array"
+                },
+                "badgeTier": {
+                    "description": "Partner badge tier",
+                    "enum": [
+                        "BADGE_TIER_NONE",
+                        "BADGE_TIER_REGULAR",
+                        "BADGE_TIER_PREMIER"
+                    ],
+                    "enumDescriptions": [
+                        "Tier badge is not set.",
+                        "Agency has regular partner badge.",
+                        "Agency has premier badge."
+                    ],
+                    "type": "string"
+                },
+                "autoApprovalEmailDomains": {
+                    "description": "Email domains that allow users with a matching email address to get\nauto-approved for associating with this company.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "companyTypes": {
+                    "description": "Company type labels listed on the company's profile.",
+                    "enumDescriptions": [
+                        "Unchosen.",
+                        "Handles all aspects of the advertising process.",
+                        "Focuses solely on an advertiser's media placement.",
+                        "Plans/executes advertising campaigns.",
+                        "Like a\nFULL_SERVICE_AGENCY,\nbut specializing in digital.",
+                        "Increases visibility in search engine result pages.",
+                        "Drives promotional efforts for immediate impact.",
+                        "Focuses on bid management, conversion, reporting.",
+                        "Establishes favorable relationship with public through low/no-cost\ncommunications.",
+                        "Does not manage other company's accounts, manages own marketing programs.",
+                        "Full-service AdWords account management for local businesses."
+                    ],
+                    "items": {
+                        "enum": [
+                            "COMPANY_TYPE_UNSPECIFIED",
+                            "FULL_SERVICE_AGENCY",
+                            "MEDIA_AGENCY",
+                            "CREATIVE_AGENCY",
+                            "CDIGITAL_AGENCY",
+                            "SEM_SEO",
+                            "PERFORMANCE_MARKETING",
+                            "ADVERTISING_TOOL_DEVELOPMENT",
+                            "PR",
+                            "SELF_MANAGED",
+                            "RESELLER"
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -2745,6 +1502,10 @@
             "description": "Response message for CreateLead.",
             "id": "CreateLeadResponse",
             "properties": {
+                "responseMetadata": {
+                    "$ref": "ResponseMetadata",
+                    "description": "Current response metadata."
+                },
                 "recaptchaStatus": {
                     "description": "The outcome of <a href=\"https://www.google.com/recaptcha/\">reCaptcha</a>\nvalidation.",
                     "enum": [
@@ -2764,10 +1525,6 @@
                 "lead": {
                     "$ref": "Lead",
                     "description": "Lead that was created depending on the outcome of\n<a href=\"https://www.google.com/recaptcha/\">reCaptcha</a> validation."
-                },
-                "responseMetadata": {
-                    "$ref": "ResponseMetadata",
-                    "description": "Current response metadata."
                 }
             },
             "type": "object"
@@ -2776,13 +1533,13 @@
             "description": "Response message for GetCompany.",
             "id": "GetCompanyResponse",
             "properties": {
-                "responseMetadata": {
-                    "$ref": "ResponseMetadata",
-                    "description": "Current response metadata."
-                },
                 "company": {
                     "$ref": "Company",
                     "description": "The company."
+                },
+                "responseMetadata": {
+                    "$ref": "ResponseMetadata",
+                    "description": "Current response metadata."
                 }
             },
             "type": "object"
@@ -2791,18 +1548,22 @@
             "description": "A location with address and geographic coordinates. May optionally contain a\ndetailed (multi-field) version of the address.",
             "id": "Location",
             "properties": {
+                "latLng": {
+                    "$ref": "LatLng",
+                    "description": "The latitude and longitude of the location, in degrees."
+                },
                 "regionCode": {
                     "description": "CLDR (Common Locale Data Repository) region code .",
                     "type": "string"
                 },
-                "dependentLocality": {
-                    "description": "Dependent locality or sublocality. Used for UK dependent localities, or\nneighborhoods or boroughs in other locations.",
-                    "type": "string"
-                },
                 "address": {
                     "description": "The single string version of the address.",
                     "type": "string"
                 },
+                "dependentLocality": {
+                    "description": "Dependent locality or sublocality. Used for UK dependent localities, or\nneighborhoods or boroughs in other locations.",
+                    "type": "string"
+                },
                 "postalCode": {
                     "description": "Values are frequently alphanumeric.",
                     "type": "string"
@@ -2829,10 +1590,48 @@
                 "administrativeArea": {
                     "description": "Top-level administrative subdivision of this country.",
                     "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CertificationExamStatus": {
+            "description": "Status for a Google Partners certification exam.",
+            "id": "CertificationExamStatus",
+            "properties": {
+                "numberUsersPass": {
+                    "description": "The number of people who have passed the certification exam.",
+                    "format": "int32",
+                    "type": "integer"
                 },
-                "latLng": {
-                    "$ref": "LatLng",
-                    "description": "The latitude and longitude of the location, in degrees."
+                "type": {
+                    "description": "The type of certification exam.",
+                    "enum": [
+                        "CERTIFICATION_EXAM_TYPE_UNSPECIFIED",
+                        "CET_ADWORDS_FUNDAMENTALS",
+                        "CET_ADWORDS_ADVANCED_SEARCH",
+                        "CET_ADWORDS_ADVANCED_DISPLAY",
+                        "CET_VIDEO_ADS",
+                        "CET_DOUBLECLICK",
+                        "CET_ANALYTICS",
+                        "CET_SHOPPING",
+                        "CET_MOBILE",
+                        "CET_DIGITAL_SALES",
+                        "CET_MOBILE_SITES"
+                    ],
+                    "enumDescriptions": [
+                        "Unchosen.",
+                        "Adwords Fundamentals exam.",
+                        "AdWords advanced search exam.",
+                        "AdWords advanced display exam.",
+                        "VideoAds exam.",
+                        "DoubleClick exam.",
+                        "Analytics exam.",
+                        "Shopping exam.",
+                        "Mobile exam.",
+                        "Digital Sales exam.",
+                        "Mobile Sites exam."
+                    ],
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2883,52 +1682,18 @@
             },
             "type": "object"
         },
-        "CertificationExamStatus": {
-            "description": "Status for a Google Partners certification exam.",
-            "id": "CertificationExamStatus",
-            "properties": {
-                "numberUsersPass": {
-                    "description": "The number of people who have passed the certification exam.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "type": {
-                    "description": "The type of certification exam.",
-                    "enum": [
-                        "CERTIFICATION_EXAM_TYPE_UNSPECIFIED",
-                        "CET_ADWORDS_FUNDAMENTALS",
-                        "CET_ADWORDS_ADVANCED_SEARCH",
-                        "CET_ADWORDS_ADVANCED_DISPLAY",
-                        "CET_VIDEO_ADS",
-                        "CET_DOUBLECLICK",
-                        "CET_ANALYTICS",
-                        "CET_SHOPPING",
-                        "CET_MOBILE",
-                        "CET_DIGITAL_SALES",
-                        "CET_MOBILE_SITES"
-                    ],
-                    "enumDescriptions": [
-                        "Unchosen.",
-                        "Adwords Fundamentals exam.",
-                        "AdWords advanced search exam.",
-                        "AdWords advanced display exam.",
-                        "VideoAds exam.",
-                        "DoubleClick exam.",
-                        "Analytics exam.",
-                        "Shopping exam.",
-                        "Mobile exam.",
-                        "Digital Sales exam.",
-                        "Mobile Sites exam."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "OptIns": {
             "description": "A set of opt-ins for a user.",
             "id": "OptIns",
             "properties": {
+                "phoneContact": {
+                    "description": "An opt-in to allow recieivng phone calls about their Partners account.",
+                    "type": "boolean"
+                },
+                "physicalMail": {
+                    "description": "An opt-in to receive special promotional gifts and material in the mail.",
+                    "type": "boolean"
+                },
                 "marketComm": {
                     "description": "An opt-in about receiving email from Partners marketing teams. Includes\nmember-only events and special promotional offers for Google products.",
                     "type": "boolean"
@@ -2940,14 +1705,6 @@
                 "performanceSuggestions": {
                     "description": "An opt-in about receiving email with customized AdWords campaign management\ntips.",
                     "type": "boolean"
-                },
-                "phoneContact": {
-                    "description": "An opt-in to allow recieivng phone calls about their Partners account.",
-                    "type": "boolean"
-                },
-                "physicalMail": {
-                    "description": "An opt-in to receive special promotional gifts and material in the mail.",
-                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -2956,6 +1713,11 @@
             "description": "Information related to ranking of results.",
             "id": "Rank",
             "properties": {
+                "value": {
+                    "description": "The numerical value of the rank.",
+                    "format": "double",
+                    "type": "number"
+                },
                 "type": {
                     "description": "The type of rank.",
                     "enum": [
@@ -2967,11 +1729,6 @@
                         "Total final score."
                     ],
                     "type": "string"
-                },
-                "value": {
-                    "description": "The numerical value of the rank.",
-                    "format": "double",
-                    "type": "number"
                 }
             },
             "type": "object"
@@ -2980,44 +1737,15 @@
             "description": "The profile information of a Partners user.",
             "id": "UserProfile",
             "properties": {
-                "industries": {
-                    "description": "A list of ids representing which industries the user selected.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "languages": {
-                    "description": "The list of languages this user understands.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "familyName": {
-                    "description": "The user's family name.",
-                    "type": "string"
-                },
-                "emailOptIns": {
-                    "$ref": "OptIns",
-                    "description": "The list of opt-ins for the user, related to communication preferences."
-                },
-                "markets": {
-                    "description": "A list of ids representing which markets the user was interested in.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "phoneNumber": {
-                    "description": "The user's phone number.",
-                    "type": "string"
-                },
                 "adwordsManagerAccount": {
                     "description": "If the user has edit access to multiple accounts, the user can choose the\npreferred account and it is used when a personal account is needed. Can\nbe empty.",
                     "format": "int64",
                     "type": "string"
                 },
+                "phoneNumber": {
+                    "description": "The user's phone number.",
+                    "type": "string"
+                },
                 "primaryCountryCode": {
                     "description": "The user's primary country, an ISO 2-character code.",
                     "type": "string"
@@ -3026,6 +1754,10 @@
                     "description": "The email address the user has selected on the Partners site as primary.",
                     "type": "string"
                 },
+                "profilePublic": {
+                    "description": "Whether the user's public profile is visible to anyone with the URL.",
+                    "type": "boolean"
+                },
                 "channels": {
                     "description": "A list of ids representing which channels the user selected they were in.",
                     "items": {
@@ -3033,10 +1765,6 @@
                     },
                     "type": "array"
                 },
-                "profilePublic": {
-                    "description": "Whether the user's public profile is visible to anyone with the URL.",
-                    "type": "boolean"
-                },
                 "jobFunctions": {
                     "description": "A list of ids represnting which job categories the user selected.",
                     "items": {
@@ -3051,6 +1779,39 @@
                 "address": {
                     "$ref": "Location",
                     "description": "The user's mailing address, contains multiple fields."
+                },
+                "industries": {
+                    "description": "A list of ids representing which industries the user selected.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "emailOptIns": {
+                    "$ref": "OptIns",
+                    "description": "The list of opt-ins for the user, related to communication preferences."
+                },
+                "familyName": {
+                    "description": "The user's family name.",
+                    "type": "string"
+                },
+                "languages": {
+                    "description": "The list of languages this user understands.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "markets": {
+                    "description": "A list of ids representing which markets the user was interested in.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "migrateToAfa": {
+                    "description": "Whether or not to migrate the user's exam data to Academy for Ads.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -3070,6 +1831,20 @@
             "description": "Historical information about a Google Partners Offer.",
             "id": "HistoricalOffer",
             "properties": {
+                "clientId": {
+                    "description": "ID of client.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "clientName": {
+                    "description": "Name of the client.",
+                    "type": "string"
+                },
+                "lastModifiedTime": {
+                    "description": "Time last action was taken.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
                 "adwordsUrl": {
                     "description": "Client's AdWords page URL.",
                     "type": "string"
@@ -3133,19 +1908,20 @@
                         "Offer expired."
                     ],
                     "type": "string"
-                },
-                "clientId": {
-                    "description": "ID of client.",
-                    "format": "int64",
+                }
+            },
+            "type": "object"
+        },
+        "UserOverrides": {
+            "description": "Values to use instead of the user's respective defaults. These are only\nhonored by whitelisted products.",
+            "id": "UserOverrides",
+            "properties": {
+                "ipAddress": {
+                    "description": "IP address to use instead of the user's geo-located IP address.",
                     "type": "string"
                 },
-                "clientName": {
-                    "description": "Name of the client.",
-                    "type": "string"
-                },
-                "lastModifiedTime": {
-                    "description": "Time last action was taken.",
-                    "format": "google-datetime",
+                "userId": {
+                    "description": "Logged-in user ID to impersonate instead of the user's ID.",
                     "type": "string"
                 }
             },
@@ -3155,29 +1931,6 @@
             "description": "Request message for\nLogUserEvent.",
             "id": "LogUserEventRequest",
             "properties": {
-                "eventDatas": {
-                    "description": "List of event data for the event.",
-                    "items": {
-                        "$ref": "EventData"
-                    },
-                    "type": "array"
-                },
-                "eventScope": {
-                    "description": "The scope of the event.",
-                    "enum": [
-                        "EVENT_SCOPE_UNSPECIFIED",
-                        "VISITOR",
-                        "SESSION",
-                        "PAGE"
-                    ],
-                    "enumDescriptions": [
-                        "Unchosen.",
-                        "Based on visitor.",
-                        "Based on session.",
-                        "Based on page visit."
-                    ],
-                    "type": "string"
-                },
                 "eventCategory": {
                     "description": "The category the action belongs to.",
                     "enum": [
@@ -3381,7 +2134,9 @@
                         "AGENCY_CLICKED_INSIGHTS_DOWNLOAD_CONTENT",
                         "AGENCY_PROGRESS_INSIGHTS_VIEW_CONTENT",
                         "AGENCY_CLICKED_CANCEL_ACCEPT_TOS_BUTTON",
-                        "SMB_ENTERED_WEBSITE_IN_CONTACT_PARTNER_FORM"
+                        "SMB_ENTERED_WEBSITE_IN_CONTACT_PARTNER_FORM",
+                        "AGENCY_SELECTED_OPT_IN_AFA_MIGRATION",
+                        "AGENCY_SELECTED_OPT_OUT_AFA_MIGRATION"
                     ],
                     "enumDescriptions": [
                         "Unchosen.",
@@ -3540,31 +2295,41 @@
                         "Agency clicked on the download link for downloading content.",
                         "Agency user is maklingg progress viewing a content item.",
                         "Agency clicked `cancel Terms Of Service` button.",
-                        "Advertiser entered website in contact form."
+                        "Advertiser entered website in contact form.",
+                        "Agency opted in for migrating their exams to Academy for Ads.",
+                        "Agency opted out for migrating their exams to Academy for Ads."
                     ],
                     "type": "string"
                 },
+                "url": {
+                    "description": "The URL where the event occurred.",
+                    "type": "string"
+                },
                 "requestMetadata": {
                     "$ref": "RequestMetadata",
                     "description": "Current request metadata."
                 },
-                "url": {
-                    "description": "The URL where the event occurred.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UserOverrides": {
-            "description": "Values to use instead of the user's respective defaults. These are only\nhonored by whitelisted products.",
-            "id": "UserOverrides",
-            "properties": {
-                "userId": {
-                    "description": "Logged-in user ID to impersonate instead of the user's ID.",
-                    "type": "string"
+                "eventDatas": {
+                    "description": "List of event data for the event.",
+                    "items": {
+                        "$ref": "EventData"
+                    },
+                    "type": "array"
                 },
-                "ipAddress": {
-                    "description": "IP address to use instead of the user's geo-located IP address.",
+                "eventScope": {
+                    "description": "The scope of the event.",
+                    "enum": [
+                        "EVENT_SCOPE_UNSPECIFIED",
+                        "VISITOR",
+                        "SESSION",
+                        "PAGE"
+                    ],
+                    "enumDescriptions": [
+                        "Unchosen.",
+                        "Based on visitor.",
+                        "Based on session.",
+                        "Based on page visit."
+                    ],
                     "type": "string"
                 }
             },
@@ -3574,17 +2339,17 @@
             "description": "Details of the analytics events for a `Company` within a single day.",
             "id": "AnalyticsDataPoint",
             "properties": {
-                "eventCount": {
-                    "description": "Number of times the type of event occurred.\nMeaning depends on context (e.g. profile views, contacts, etc.).",
-                    "format": "int32",
-                    "type": "integer"
-                },
                 "eventLocations": {
                     "description": "Location information of where these events occurred.",
                     "items": {
                         "$ref": "LatLng"
                     },
                     "type": "array"
+                },
+                "eventCount": {
+                    "description": "Number of times the type of event occurred.\nMeaning depends on context (e.g. profile views, contacts, etc.).",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -3611,6 +2376,1249 @@
                 }
             },
             "type": "object"
+        },
+        "PublicProfile": {
+            "description": "Basic information from a public profile.",
+            "id": "PublicProfile",
+            "properties": {
+                "profileImage": {
+                    "description": "The URL to the main profile image of the public profile.",
+                    "type": "string"
+                },
+                "displayImageUrl": {
+                    "description": "The URL to the main display image of the public profile. Being deprecated.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "The display name of the public profile.",
+                    "type": "string"
+                },
+                "url": {
+                    "description": "The URL of the public profile.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "The ID which can be used to retrieve more details about the public profile.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AdWordsManagerAccountInfo": {
+            "description": "Information about a particular AdWords Manager Account.\nRead more at https://support.google.com/adwords/answer/6139186",
+            "id": "AdWordsManagerAccountInfo",
+            "properties": {
+                "id": {
+                    "description": "The AdWords Manager Account id.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "customerName": {
+                    "description": "Name of the customer this account represents.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ResponseMetadata": {
+            "description": "Common data that is in each API response.",
+            "id": "ResponseMetadata",
+            "properties": {
+                "debugInfo": {
+                    "$ref": "DebugInfo",
+                    "description": "Debug information about this request."
+                }
+            },
+            "type": "object"
+        },
+        "RecaptchaChallenge": {
+            "description": "<a href=\"https://www.google.com/recaptcha/\">reCaptcha</a> challenge info.",
+            "id": "RecaptchaChallenge",
+            "properties": {
+                "id": {
+                    "description": "The ID of the reCaptcha challenge.",
+                    "type": "string"
+                },
+                "response": {
+                    "description": "The response to the reCaptcha challenge.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AvailableOffer": {
+            "description": "Available Offers to be distributed.",
+            "id": "AvailableOffer",
+            "properties": {
+                "offerLevel": {
+                    "description": "Level of this offer.",
+                    "enum": [
+                        "OFFER_LEVEL_UNSPECIFIED",
+                        "OFFER_LEVEL_DENY_PROBLEM",
+                        "OFFER_LEVEL_DENY_CONTRACT",
+                        "OFFER_LEVEL_MANUAL",
+                        "OFFER_LEVEL_LIMIT_0",
+                        "OFFER_LEVEL_LIMIT_5",
+                        "OFFER_LEVEL_LIMIT_15",
+                        "OFFER_LEVEL_LIMIT_50"
+                    ],
+                    "enumDescriptions": [
+                        "Unset.",
+                        "Users/Agencies that have no offers because of a problem.",
+                        "Users/Agencies that have no offers due to contractural agreements.",
+                        "Users/Agencies that have a manually-configured limit.",
+                        "Some Agencies don't get any offers.",
+                        "Basic level gets 5 per month.",
+                        "Agencies with adequate AHI and spend get 15/month.",
+                        "Badged partners (even in grace) get 50 per month."
+                    ],
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Name of the offer.",
+                    "type": "string"
+                },
+                "qualifiedCustomersComplete": {
+                    "description": "Whether or not the list of qualified customers is definitely complete.",
+                    "type": "boolean"
+                },
+                "id": {
+                    "description": "ID of this offer.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "countryOfferInfos": {
+                    "description": "Offer info by country.",
+                    "items": {
+                        "$ref": "CountryOfferInfo"
+                    },
+                    "type": "array"
+                },
+                "offerType": {
+                    "description": "Type of offer.",
+                    "enum": [
+                        "OFFER_TYPE_UNSPECIFIED",
+                        "OFFER_TYPE_SPEND_X_GET_Y",
+                        "OFFER_TYPE_VIDEO",
+                        "OFFER_TYPE_SPEND_MATCH"
+                    ],
+                    "enumDescriptions": [
+                        "Unset.",
+                        "AdWords spend X get Y.",
+                        "Youtube video.",
+                        "Spend Match up to Y."
+                    ],
+                    "type": "string"
+                },
+                "maxAccountAge": {
+                    "description": "The maximum age of an account [in days] to be eligible.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "qualifiedCustomer": {
+                    "description": "Customers who qualify for this offer.",
+                    "items": {
+                        "$ref": "OfferCustomer"
+                    },
+                    "type": "array"
+                },
+                "terms": {
+                    "description": "Terms of the offer.",
+                    "type": "string"
+                },
+                "showSpecialOfferCopy": {
+                    "description": "Should special text be shown on the offers page.",
+                    "type": "boolean"
+                },
+                "available": {
+                    "description": "The number of codes for this offer that are available for distribution.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "description": {
+                    "description": "Description of the offer.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LatLng": {
+            "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n<a href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\">WGS84\nstandard</a>. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n    def NormalizeLongitude(longitude):\n      \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n      q, r = divmod(longitude, 360.0)\n      if r > 180.0 or (r == 180.0 and q <= -1.0):\n        return r - 360.0\n      return r\n\n    def NormalizeLatLng(latitude, longitude):\n      \"\"\"Wraps decimal degrees latitude and longitude to\n      [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n      r = latitude % 360.0\n      if r <= 90.0:\n        return r, NormalizeLongitude(longitude)\n      elif r >= 270.0:\n        return r - 360, NormalizeLongitude(longitude)\n      else:\n        return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n    assert 180.0 == NormalizeLongitude(180.0)\n    assert -180.0 == NormalizeLongitude(-180.0)\n    assert -179.0 == NormalizeLongitude(181.0)\n    assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n    assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n    assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n    assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n    assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n    assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)",
+            "id": "LatLng",
+            "properties": {
+                "latitude": {
+                    "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
+                    "format": "double",
+                    "type": "number"
+                },
+                "longitude": {
+                    "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "Money": {
+            "description": "Represents an amount of money with its currency type.",
+            "id": "Money",
+            "properties": {
+                "nanos": {
+                    "description": "Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999 inclusive.\nIf `units` is positive, `nanos` must be positive or zero.\nIf `units` is zero, `nanos` can be positive, zero, or negative.\nIf `units` is negative, `nanos` must be negative or zero.\nFor example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "units": {
+                    "description": "The whole units of the amount.\nFor example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "currencyCode": {
+                    "description": "The 3-letter currency code defined in ISO 4217.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AnalyticsSummary": {
+            "description": "Analytics aggregated data for a `Company` for a given date range.",
+            "id": "AnalyticsSummary",
+            "properties": {
+                "profileViewsCount": {
+                    "description": "Aggregated number of profile views for the `Company` for given date range.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "searchViewsCount": {
+                    "description": "Aggregated number of times users saw the `Company`\nin Google Partners Search results for given date range.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "contactsCount": {
+                    "description": "Aggregated number of times users contacted the `Company`\nfor given date range.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "LogMessageRequest": {
+            "description": "Request message for\nLogClientMessage.",
+            "id": "LogMessageRequest",
+            "properties": {
+                "level": {
+                    "description": "Message level of client message.",
+                    "enum": [
+                        "MESSAGE_LEVEL_UNSPECIFIED",
+                        "ML_FINE",
+                        "ML_INFO",
+                        "ML_WARNING",
+                        "ML_SEVERE"
+                    ],
+                    "enumDescriptions": [
+                        "Unchosen.",
+                        "Message level for tracing information.",
+                        "Message level for informational messages.",
+                        "Message level for potential problems.",
+                        "Message level for serious failures."
+                    ],
+                    "type": "string"
+                },
+                "details": {
+                    "description": "Details about the client message.",
+                    "type": "string"
+                },
+                "clientInfo": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Map of client info, such as URL, browser navigator, browser platform, etc.",
+                    "type": "object"
+                },
+                "requestMetadata": {
+                    "$ref": "RequestMetadata",
+                    "description": "Current request metadata."
+                }
+            },
+            "type": "object"
+        },
+        "DebugInfo": {
+            "description": "Debug information about this request.",
+            "id": "DebugInfo",
+            "properties": {
+                "serverTraceInfo": {
+                    "description": "Server-side debug stack trace.",
+                    "type": "string"
+                },
+                "serverInfo": {
+                    "description": "Info about the server that serviced this request.",
+                    "type": "string"
+                },
+                "serviceUrl": {
+                    "description": "URL of the service that handled this request.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Lead": {
+            "description": "A lead resource that represents an advertiser contact for a `Company`. These\nare usually generated via Google Partner Search (the advertiser portal).",
+            "id": "Lead",
+            "properties": {
+                "state": {
+                    "description": "The lead's state in relation to the company.",
+                    "enum": [
+                        "LEAD_STATE_UNSPECIFIED",
+                        "LEAD",
+                        "CONTACTED",
+                        "CLIENT",
+                        "OTHER"
+                    ],
+                    "enumDescriptions": [
+                        "Unchosen.",
+                        "Lead not yet contacted.",
+                        "Lead has been contacted.",
+                        "Lead has become a client.",
+                        "Lead in a state not covered by other options."
+                    ],
+                    "type": "string"
+                },
+                "gpsMotivations": {
+                    "description": "List of reasons for using Google Partner Search and creating a lead.",
+                    "enumDescriptions": [
+                        "Unchosen.",
+                        "Advertiser needs help with their advertising.",
+                        "Advertiser needs help with their website.",
+                        "Advertiser does not have a website."
+                    ],
+                    "items": {
+                        "enum": [
+                            "GPS_MOTIVATION_UNSPECIFIED",
+                            "GPSM_HELP_WITH_ADVERTISING",
+                            "GPSM_HELP_WITH_WEBSITE",
+                            "GPSM_NO_WEBSITE"
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "email": {
+                    "description": "Email address of lead source.",
+                    "type": "string"
+                },
+                "familyName": {
+                    "description": "Last name of lead source.",
+                    "type": "string"
+                },
+                "comments": {
+                    "description": "Comments lead source gave.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "ID of the lead.",
+                    "type": "string"
+                },
+                "adwordsCustomerId": {
+                    "description": "The AdWords Customer ID of the lead.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "phoneNumber": {
+                    "description": "Phone number of lead source.",
+                    "type": "string"
+                },
+                "createTime": {
+                    "description": "Timestamp of when this lead was created.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "marketingOptIn": {
+                    "description": "Whether or not the lead signed up for marketing emails",
+                    "type": "boolean"
+                },
+                "type": {
+                    "description": "Type of lead.",
+                    "enum": [
+                        "LEAD_TYPE_UNSPECIFIED",
+                        "LT_GPS"
+                    ],
+                    "enumDescriptions": [
+                        "Unchosen.",
+                        "Google Partner Search."
+                    ],
+                    "type": "string"
+                },
+                "givenName": {
+                    "description": "First name of lead source.",
+                    "type": "string"
+                },
+                "minMonthlyBudget": {
+                    "$ref": "Money",
+                    "description": "The minimum monthly budget lead source is willing to spend."
+                },
+                "languageCode": {
+                    "description": "Language code of the lead's language preference, as defined by\n<a href=\"https://tools.ietf.org/html/bcp47\">BCP 47</a>\n(IETF BCP 47, \"Tags for Identifying Languages\").",
+                    "type": "string"
+                },
+                "websiteUrl": {
+                    "description": "Website URL of lead source.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListUserStatesResponse": {
+            "description": "Response message for\nListUserStates.",
+            "id": "ListUserStatesResponse",
+            "properties": {
+                "responseMetadata": {
+                    "$ref": "ResponseMetadata",
+                    "description": "Current response metadata."
+                },
+                "userStates": {
+                    "description": "User's states.",
+                    "enumDescriptions": [
+                        "Unchosen.",
+                        "User must pass <a href=\"https://www.google.com/recaptcha/\">reCaptcha</a> to\ncontact a Partner via Google Partner Search."
+                    ],
+                    "items": {
+                        "enum": [
+                            "USER_STATE_UNSPECIFIED",
+                            "US_REQUIRES_RECAPTCHA_FOR_GPS_CONTACT"
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "CompanyRelation": {
+            "description": "A CompanyRelation resource representing information about a user's\naffiliation and standing with a company in Partners.",
+            "id": "CompanyRelation",
+            "properties": {
+                "resolvedTimestamp": {
+                    "description": "The timestamp when the user was approved.\n@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "companyAdmin": {
+                    "description": "Indicates if the user is an admin for this company.",
+                    "type": "boolean"
+                },
+                "isPending": {
+                    "description": "The flag that indicates if the company is pending verification.",
+                    "type": "boolean"
+                },
+                "address": {
+                    "description": "The primary address for this company.",
+                    "type": "string"
+                },
+                "creationTime": {
+                    "description": "The timestamp of when affiliation was requested.\n@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "primaryAddress": {
+                    "$ref": "Location",
+                    "description": "The primary location of the company."
+                },
+                "state": {
+                    "description": "The state of relationship, in terms of approvals.",
+                    "enum": [
+                        "USER_COMPANY_REATION_STATE_NONE_SPECIFIED",
+                        "USER_COMPANY_RELATION_STATE_AWAIT_EMAIL",
+                        "USER_COMPANY_RELATION_STATE_AWAIT_ADMIN",
+                        "USER_COMPANY_RELATION_STATE_APPROVED"
+                    ],
+                    "enumDescriptions": [
+                        "Default unspecified value.",
+                        "User has filled in a request to be associated with an company.\nNow waiting email confirmation.",
+                        "Pending approval from company.\nEmail confirmation will not approve this one.",
+                        "Approved by company."
+                    ],
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The name (in the company's primary language) for the company.",
+                    "type": "string"
+                },
+                "managerAccount": {
+                    "description": "The AdWords manager account # associated this company.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "segment": {
+                    "description": "The segment the company is classified as.",
+                    "enumDescriptions": [
+                        "Default segment indicates an unknown.",
+                        "Segment representing a selected group of Partners",
+                        "Segment representing Premier SMB Partners, an AdWords partnership program.",
+                        "A segment of Premier SMB Partners that have relationship with Google."
+                    ],
+                    "items": {
+                        "enum": [
+                            "COMPANY_SEGMENT_UNKNOWN",
+                            "COMPANY_SEGMENT_NAL",
+                            "COMPANY_SEGMENT_PSP",
+                            "COMPANY_SEGMENT_PPSP"
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "internalCompanyId": {
+                    "description": "The internal company ID.\nOnly available for a whitelisted set of api clients.",
+                    "type": "string"
+                },
+                "badgeTier": {
+                    "description": "Whether the company is a Partner.",
+                    "enum": [
+                        "BADGE_TIER_NONE",
+                        "BADGE_TIER_REGULAR",
+                        "BADGE_TIER_PREMIER"
+                    ],
+                    "enumDescriptions": [
+                        "Tier badge is not set.",
+                        "Agency has regular partner badge.",
+                        "Agency has premier badge."
+                    ],
+                    "type": "string"
+                },
+                "specializationStatus": {
+                    "description": "The list of Google Partners specialization statuses for the company.",
+                    "items": {
+                        "$ref": "SpecializationStatus"
+                    },
+                    "type": "array"
+                },
+                "phoneNumber": {
+                    "description": "The phone number for the company's primary address.",
+                    "type": "string"
+                },
+                "website": {
+                    "description": "The website URL for this company.",
+                    "type": "string"
+                },
+                "primaryCountryCode": {
+                    "description": "The primary country code of the company.",
+                    "type": "string"
+                },
+                "companyId": {
+                    "description": "The ID of the company. There may be no id if this is a\npending company.5",
+                    "type": "string"
+                },
+                "primaryLanguageCode": {
+                    "description": "The primary language code of the company.",
+                    "type": "string"
+                },
+                "logoUrl": {
+                    "description": "A URL to a profile photo, e.g. a G+ profile photo.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Date": {
+            "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.",
+            "id": "Date",
+            "properties": {
+                "month": {
+                    "description": "Month of year. Must be from 1 to 12.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "day": {
+                    "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "year": {
+                    "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "TrafficSource": {
+            "description": "Source of traffic for the current request.",
+            "id": "TrafficSource",
+            "properties": {
+                "trafficSourceId": {
+                    "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                    "type": "string"
+                },
+                "trafficSubId": {
+                    "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CreateLeadRequest": {
+            "description": "Request message for CreateLead.",
+            "id": "CreateLeadRequest",
+            "properties": {
+                "requestMetadata": {
+                    "$ref": "RequestMetadata",
+                    "description": "Current request metadata."
+                },
+                "recaptchaChallenge": {
+                    "$ref": "RecaptchaChallenge",
+                    "description": "<a href=\"https://www.google.com/recaptcha/\">reCaptcha</a> challenge info."
+                },
+                "lead": {
+                    "$ref": "Lead",
+                    "description": "The lead resource. The `LeadType` must not be `LEAD_TYPE_UNSPECIFIED`\nand either `email` or `phone_number` must be provided."
+                }
+            },
+            "type": "object"
+        },
+        "RequestMetadata": {
+            "description": "Common data that is in each API request.",
+            "id": "RequestMetadata",
+            "properties": {
+                "locale": {
+                    "description": "Locale to use for the current request.",
+                    "type": "string"
+                },
+                "partnersSessionId": {
+                    "description": "Google Partners session ID.",
+                    "type": "string"
+                },
+                "userOverrides": {
+                    "$ref": "UserOverrides",
+                    "description": "Values to use instead of the user's respective defaults for the current\nrequest. These are only honored by whitelisted products."
+                },
+                "trafficSource": {
+                    "$ref": "TrafficSource",
+                    "description": "Source of traffic for the current request."
+                },
+                "experimentIds": {
+                    "description": "Experiment IDs the current request belongs to.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "EventData": {
+            "description": "Key value data pair for an event.",
+            "id": "EventData",
+            "properties": {
+                "key": {
+                    "description": "Data type.",
+                    "enum": [
+                        "EVENT_DATA_TYPE_UNSPECIFIED",
+                        "ACTION",
+                        "AGENCY_ID",
+                        "AGENCY_NAME",
+                        "AGENCY_PHONE_NUMBER",
+                        "AGENCY_WEBSITE",
+                        "BUDGET",
+                        "CENTER_POINT",
+                        "CERTIFICATION",
+                        "COMMENT",
+                        "COUNTRY",
+                        "CURRENCY",
+                        "CURRENTLY_VIEWED_AGENCY_ID",
+                        "DISTANCE",
+                        "DISTANCE_TYPE",
+                        "EXAM",
+                        "HISTORY_TOKEN",
+                        "ID",
+                        "INDUSTRY",
+                        "INSIGHT_TAG",
+                        "LANGUAGE",
+                        "LOCATION",
+                        "MARKETING_OPT_IN",
+                        "QUERY",
+                        "SEARCH_START_INDEX",
+                        "SERVICE",
+                        "SHOW_VOW",
+                        "SOLUTION",
+                        "TRAFFIC_SOURCE_ID",
+                        "TRAFFIC_SUB_ID",
+                        "VIEW_PORT",
+                        "WEBSITE",
+                        "DETAILS",
+                        "EXPERIMENT_ID",
+                        "GPS_MOTIVATION",
+                        "URL",
+                        "ELEMENT_FOCUS",
+                        "PROGRESS"
+                    ],
+                    "enumDescriptions": [
+                        "Unchosen.",
+                        "Action data.",
+                        "Agency ID data.",
+                        "Agency name data.",
+                        "Agency phone number data.",
+                        "Agency website data.",
+                        "Budget data.",
+                        "Center-point data.",
+                        "Certification data.",
+                        "Comment data.",
+                        "Country data.",
+                        "Currency data.",
+                        "Currently viewed agency ID data.",
+                        "Distance data.",
+                        "Distance type data.",
+                        "Exam data.",
+                        "History token data.",
+                        "Identifier data.",
+                        "Industry data.",
+                        "Insight tag data.",
+                        "Language data.",
+                        "Location  data.",
+                        "Marketing opt-in data.",
+                        "Query data.",
+                        "Search start index data.",
+                        "Service data.",
+                        "Show vow data.",
+                        "Solution data.",
+                        "Traffic source ID data.",
+                        "Traffic sub ID data.",
+                        "Viewport data.",
+                        "Website data.",
+                        "Details data.",
+                        "Experiment ID data.",
+                        "Google Partner Search motivation data.",
+                        "URL data.",
+                        "Element we wanted user to focus on.",
+                        "Progress when viewing an item \\[0-100\\]."
+                    ],
+                    "type": "string"
+                },
+                "values": {
+                    "description": "Data values.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ExamStatus": {
+            "description": "A user's information on a specific exam.",
+            "id": "ExamStatus",
+            "properties": {
+                "warning": {
+                    "description": "Whether this exam is in the state of warning.",
+                    "type": "boolean"
+                },
+                "expiration": {
+                    "description": "Date this exam is due to expire.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "lastPassed": {
+                    "description": "The date the user last passed this exam.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "examType": {
+                    "description": "The type of the exam.",
+                    "enum": [
+                        "CERTIFICATION_EXAM_TYPE_UNSPECIFIED",
+                        "CET_ADWORDS_FUNDAMENTALS",
+                        "CET_ADWORDS_ADVANCED_SEARCH",
+                        "CET_ADWORDS_ADVANCED_DISPLAY",
+                        "CET_VIDEO_ADS",
+                        "CET_DOUBLECLICK",
+                        "CET_ANALYTICS",
+                        "CET_SHOPPING",
+                        "CET_MOBILE",
+                        "CET_DIGITAL_SALES",
+                        "CET_MOBILE_SITES"
+                    ],
+                    "enumDescriptions": [
+                        "Unchosen.",
+                        "Adwords Fundamentals exam.",
+                        "AdWords advanced search exam.",
+                        "AdWords advanced display exam.",
+                        "VideoAds exam.",
+                        "DoubleClick exam.",
+                        "Analytics exam.",
+                        "Shopping exam.",
+                        "Mobile exam.",
+                        "Digital Sales exam.",
+                        "Mobile Sites exam."
+                    ],
+                    "type": "string"
+                },
+                "passed": {
+                    "description": "Whether this exam has been passed and not expired.",
+                    "type": "boolean"
+                },
+                "taken": {
+                    "description": "The date the user last taken this exam.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListOffersResponse": {
+            "description": "Response for ListOffer.",
+            "id": "ListOffersResponse",
+            "properties": {
+                "responseMetadata": {
+                    "$ref": "ResponseMetadata",
+                    "description": "Current response metadata."
+                },
+                "noOfferReason": {
+                    "description": "Reason why no Offers are available.",
+                    "enum": [
+                        "NO_OFFER_REASON_UNSPECIFIED",
+                        "NO_OFFER_REASON_NO_MCC",
+                        "NO_OFFER_REASON_LIMIT_REACHED",
+                        "NO_OFFER_REASON_INELIGIBLE"
+                    ],
+                    "enumDescriptions": [
+                        "Unset.",
+                        "Not an MCC.",
+                        "Offer limit has been reached.",
+                        "Ineligible for offers."
+                    ],
+                    "type": "string"
+                },
+                "availableOffers": {
+                    "description": "Available Offers to be distributed.",
+                    "items": {
+                        "$ref": "AvailableOffer"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "CountryOfferInfo": {
+            "description": "Offer info by country.",
+            "id": "CountryOfferInfo",
+            "properties": {
+                "spendXAmount": {
+                    "description": "(localized) Spend X amount for that country's offer.",
+                    "type": "string"
+                },
+                "offerCountryCode": {
+                    "description": "Country code for which offer codes may be requested.",
+                    "type": "string"
+                },
+                "offerType": {
+                    "description": "Type of offer country is eligible for.",
+                    "enum": [
+                        "OFFER_TYPE_UNSPECIFIED",
+                        "OFFER_TYPE_SPEND_X_GET_Y",
+                        "OFFER_TYPE_VIDEO",
+                        "OFFER_TYPE_SPEND_MATCH"
+                    ],
+                    "enumDescriptions": [
+                        "Unset.",
+                        "AdWords spend X get Y.",
+                        "Youtube video.",
+                        "Spend Match up to Y."
+                    ],
+                    "type": "string"
+                },
+                "getYAmount": {
+                    "description": "(localized) Get Y amount for that country's offer.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListCompaniesResponse": {
+            "description": "Response message for\nListCompanies.",
+            "id": "ListCompaniesResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token to retrieve next page of results.\nPass this value in the `ListCompaniesRequest.page_token` field in the\nsubsequent call to\nListCompanies to retrieve the\nnext page of results.",
+                    "type": "string"
+                },
+                "responseMetadata": {
+                    "$ref": "ResponseMetadata",
+                    "description": "Current response metadata."
+                },
+                "companies": {
+                    "description": "The list of companies.",
+                    "items": {
+                        "$ref": "Company"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "OfferCustomer": {
+            "description": "Customers qualified for an offer.",
+            "id": "OfferCustomer",
+            "properties": {
+                "spendXAmount": {
+                    "description": "Formatted Spend X amount with currency code.",
+                    "type": "string"
+                },
+                "adwordsUrl": {
+                    "description": "URL to the customer's AdWords page.",
+                    "type": "string"
+                },
+                "countryCode": {
+                    "description": "Country code of the customer.",
+                    "type": "string"
+                },
+                "externalCid": {
+                    "description": "External CID for the customer.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "offerType": {
+                    "description": "Type of the offer",
+                    "enum": [
+                        "OFFER_TYPE_UNSPECIFIED",
+                        "OFFER_TYPE_SPEND_X_GET_Y",
+                        "OFFER_TYPE_VIDEO",
+                        "OFFER_TYPE_SPEND_MATCH"
+                    ],
+                    "enumDescriptions": [
+                        "Unset.",
+                        "AdWords spend X get Y.",
+                        "Youtube video.",
+                        "Spend Match up to Y."
+                    ],
+                    "type": "string"
+                },
+                "creationTime": {
+                    "description": "Time the customer was created.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "eligibilityDaysLeft": {
+                    "description": "Days the customer is still eligible.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "getYAmount": {
+                    "description": "Formatted Get Y amount with currency code.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Name of the customer.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CertificationStatus": {
+            "description": "Google Partners certification status.",
+            "id": "CertificationStatus",
+            "properties": {
+                "userCount": {
+                    "description": "Number of people who are certified,",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "isCertified": {
+                    "description": "Whether certification is passing.",
+                    "type": "boolean"
+                },
+                "examStatuses": {
+                    "description": "List of certification exam statuses.",
+                    "items": {
+                        "$ref": "CertificationExamStatus"
+                    },
+                    "type": "array"
+                },
+                "type": {
+                    "description": "The type of the certification.",
+                    "enum": [
+                        "CERTIFICATION_TYPE_UNSPECIFIED",
+                        "CT_ADWORDS",
+                        "CT_YOUTUBE",
+                        "CT_VIDEOADS",
+                        "CT_ANALYTICS",
+                        "CT_DOUBLECLICK",
+                        "CT_SHOPPING",
+                        "CT_MOBILE",
+                        "CT_DIGITAL_SALES",
+                        "CT_ADWORDS_SEARCH",
+                        "CT_ADWORDS_DISPLAY",
+                        "CT_MOBILE_SITES"
+                    ],
+                    "enumDescriptions": [
+                        "Unchosen.",
+                        "AdWords certified.",
+                        "YouTube certified.",
+                        "VideoAds certified.",
+                        "Analytics certified.",
+                        "DoubleClick certified.",
+                        "Shopping certified.",
+                        "Mobile certified.",
+                        "Digital sales certified.",
+                        "AdWords Search certified.",
+                        "AdWords Display certified.",
+                        "Mobile Sites certified."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LocalizedCompanyInfo": {
+            "description": "The localized company information.",
+            "id": "LocalizedCompanyInfo",
+            "properties": {
+                "languageCode": {
+                    "description": "Language code of the localized company info, as defined by\n<a href=\"https://tools.ietf.org/html/bcp47\">BCP 47</a>\n(IETF BCP 47, \"Tags for Identifying Languages\").",
+                    "type": "string"
+                },
+                "countryCodes": {
+                    "description": "List of country codes for the localized company info.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "overview": {
+                    "description": "Localized brief description that the company uses to advertise themselves.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "Localized display name.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LogUserEventResponse": {
+            "description": "Response message for\nLogUserEvent.",
+            "id": "LogUserEventResponse",
+            "properties": {
+                "responseMetadata": {
+                    "$ref": "ResponseMetadata",
+                    "description": "Current response metadata."
+                }
+            },
+            "type": "object"
+        },
+        "ListOffersHistoryResponse": {
+            "description": "Response for ListOfferHistory.",
+            "id": "ListOffersHistoryResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Supply this token in a ListOffersHistoryRequest to retrieve the next page.",
+                    "type": "string"
+                },
+                "responseMetadata": {
+                    "$ref": "ResponseMetadata",
+                    "description": "Current response metadata."
+                },
+                "canShowEntireCompany": {
+                    "description": "True if the user has the option to show entire company history.",
+                    "type": "boolean"
+                },
+                "totalResults": {
+                    "description": "Number of results across all pages.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "showingEntireCompany": {
+                    "description": "True if this response is showing entire company history.",
+                    "type": "boolean"
+                },
+                "offers": {
+                    "description": "Historical offers meeting request.",
+                    "items": {
+                        "$ref": "HistoricalOffer"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "LogMessageResponse": {
+            "description": "Response message for\nLogClientMessage.",
+            "id": "LogMessageResponse",
+            "properties": {
+                "responseMetadata": {
+                    "$ref": "ResponseMetadata",
+                    "description": "Current response metadata."
+                }
+            },
+            "type": "object"
+        },
+        "SpecializationStatus": {
+            "description": "Agency specialization status",
+            "id": "SpecializationStatus",
+            "properties": {
+                "badgeSpecialization": {
+                    "description": "The specialization this status is for.",
+                    "enum": [
+                        "BADGE_SPECIALIZATION_UNKNOWN",
+                        "BADGE_SPECIALIZATION_ADWORDS_SEARCH",
+                        "BADGE_SPECIALIZATION_ADWORDS_DISPLAY",
+                        "BADGE_SPECIALIZATION_ADWORDS_MOBILE",
+                        "BADGE_SPECIALIZATION_ADWORDS_VIDEO",
+                        "BADGE_SPECIALIZATION_ADWORDS_SHOPPING"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown specialization",
+                        "AdWords Search specialization",
+                        "AdWords Display specialization",
+                        "AdWords Mobile specialization",
+                        "AdWords Video specialization",
+                        "AdWords Shopping specialization"
+                    ],
+                    "type": "string"
+                },
+                "badgeSpecializationState": {
+                    "description": "State of agency specialization.",
+                    "enum": [
+                        "BADGE_SPECIALIZATION_STATE_UNKNOWN",
+                        "BADGE_SPECIALIZATION_STATE_PASSED",
+                        "BADGE_SPECIALIZATION_STATE_NOT_PASSED",
+                        "BADGE_SPECIALIZATION_STATE_IN_GRACE"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown state",
+                        "Specialization passed",
+                        "Specialization not passed",
+                        "Specialization in grace"
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Certification": {
+            "description": "A user's information on a specific certification.",
+            "id": "Certification",
+            "properties": {
+                "lastAchieved": {
+                    "description": "The date the user last achieved certification.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "warning": {
+                    "description": "Whether this certification is in the state of warning.",
+                    "type": "boolean"
+                },
+                "expiration": {
+                    "description": "Date this certification is due to expire.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "achieved": {
+                    "description": "Whether this certification has been achieved.",
+                    "type": "boolean"
+                },
+                "certificationType": {
+                    "description": "The type of certification, the area of expertise.",
+                    "enum": [
+                        "CERTIFICATION_TYPE_UNSPECIFIED",
+                        "CT_ADWORDS",
+                        "CT_YOUTUBE",
+                        "CT_VIDEOADS",
+                        "CT_ANALYTICS",
+                        "CT_DOUBLECLICK",
+                        "CT_SHOPPING",
+                        "CT_MOBILE",
+                        "CT_DIGITAL_SALES",
+                        "CT_ADWORDS_SEARCH",
+                        "CT_ADWORDS_DISPLAY",
+                        "CT_MOBILE_SITES"
+                    ],
+                    "enumDescriptions": [
+                        "Unchosen.",
+                        "AdWords certified.",
+                        "YouTube certified.",
+                        "VideoAds certified.",
+                        "Analytics certified.",
+                        "DoubleClick certified.",
+                        "Shopping certified.",
+                        "Mobile certified.",
+                        "Digital sales certified.",
+                        "AdWords Search certified.",
+                        "AdWords Display certified.",
+                        "Mobile Sites certified."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "User": {
+            "description": "A resource representing a user of the Partners platform.",
+            "id": "User",
+            "properties": {
+                "company": {
+                    "$ref": "CompanyRelation",
+                    "description": "The company that the user is associated with.\nIf not present, the user is not associated with any company."
+                },
+                "profile": {
+                    "$ref": "UserProfile",
+                    "description": "The profile information of a Partners user, contains all the directly\neditable user information."
+                },
+                "lastAccessTime": {
+                    "description": "The most recent time the user interacted with the Partners site.\n@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "availableAdwordsManagerAccounts": {
+                    "description": "This is the list of AdWords Manager Accounts the user has edit access to.\nIf the user has edit access to multiple accounts, the user can choose the\npreferred account and we use this when a personal account is needed. Can\nbe empty meaning the user has access to no accounts.\n@OutputOnly",
+                    "items": {
+                        "$ref": "AdWordsManagerAccountInfo"
+                    },
+                    "type": "array"
+                },
+                "primaryEmails": {
+                    "description": "The list of emails the user has access to/can select as primary.\n@OutputOnly",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "internalId": {
+                    "description": "The internal user ID.\nOnly available for a whitelisted set of api clients.",
+                    "type": "string"
+                },
+                "examStatus": {
+                    "description": "The list of exams the user ever taken. For each type of exam, only one\nentry is listed.",
+                    "items": {
+                        "$ref": "ExamStatus"
+                    },
+                    "type": "array"
+                },
+                "id": {
+                    "description": "The ID of the user.",
+                    "type": "string"
+                },
+                "publicProfile": {
+                    "$ref": "PublicProfile",
+                    "description": "Information about a user's external public profile outside Google Partners."
+                },
+                "certificationStatus": {
+                    "description": "The list of achieved certifications. These are calculated based on exam\nresults and other requirements.\n@OutputOnly",
+                    "items": {
+                        "$ref": "Certification"
+                    },
+                    "type": "array"
+                },
+                "companyVerificationEmail": {
+                    "description": "The email address used by the user used for company verification.\n@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/people__v1.json b/discovery/googleapis/people__v1.json
index a457862..7037fca 100644
--- a/discovery/googleapis/people__v1.json
+++ b/discovery/googleapis/people__v1.json
@@ -8,26 +8,26 @@
                 "https://www.googleapis.com/auth/userinfo.profile": {
                     "description": "View your basic profile info"
                 },
-                "https://www.googleapis.com/auth/user.emails.read": {
-                    "description": "View your email addresses"
+                "https://www.googleapis.com/auth/user.addresses.read": {
+                    "description": "View your street addresses"
                 },
                 "https://www.googleapis.com/auth/contacts": {
                     "description": "Manage your contacts"
                 },
-                "https://www.googleapis.com/auth/user.addresses.read": {
-                    "description": "View your street addresses"
-                },
-                "https://www.googleapis.com/auth/user.phonenumbers.read": {
-                    "description": "View your phone numbers"
+                "https://www.googleapis.com/auth/user.emails.read": {
+                    "description": "View your email addresses"
                 },
                 "https://www.googleapis.com/auth/userinfo.email": {
                     "description": "View your email address"
                 },
-                "https://www.googleapis.com/auth/user.birthday.read": {
-                    "description": "View your complete date of birth"
+                "https://www.googleapis.com/auth/user.phonenumbers.read": {
+                    "description": "View your phone numbers"
                 },
                 "https://www.googleapis.com/auth/contacts.readonly": {
                     "description": "View your contacts"
+                },
+                "https://www.googleapis.com/auth/user.birthday.read": {
+                    "description": "View your complete date of birth"
                 }
             }
         }
@@ -83,13 +83,13 @@
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
@@ -125,13 +125,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         }
@@ -140,6 +140,91 @@
     "resources": {
         "people": {
             "methods": {
+                "getBatchGet": {
+                    "description": "Provides information about a list of specific people by specifying a list\nof requested resource names. Use `people/me` to indicate the authenticated\nuser.\n<br>\nThe request throws a 400 error if 'personFields' is not specified.",
+                    "httpMethod": "GET",
+                    "id": "people.people.getBatchGet",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "personFields": {
+                            "description": "**Required.** A field mask to restrict which fields on each person are\nreturned. Valid values are:\n\n* addresses\n* ageRanges\n* biographies\n* birthdays\n* braggingRights\n* coverPhotos\n* emailAddresses\n* events\n* genders\n* imClients\n* interests\n* locales\n* memberships\n* metadata\n* names\n* nicknames\n* occupations\n* organizations\n* phoneNumbers\n* photos\n* relations\n* relationshipInterests\n* relationshipStatuses\n* residences\n* skills\n* taglines\n* urls",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMask.includeField": {
+                            "description": "**Required.** Comma-separated list of person fields to be included in the\nresponse. Each path should start with `person.`: for example,\n`person.names` or `person.photos`.",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "resourceNames": {
+                            "description": "The resource names of the people to provide information about.\n\n- To get information about the authenticated user, specify `people/me`.\n- To get information about a google account, specify\n  `people/`<var>account_id</var>.\n- To get information about a contact, specify the resource name that\n  identifies the contact as returned by\n[`people.connections.list`](/people/api/rest/v1/people.connections/list).\n\nYou can include up to 50 resource names in one request.",
+                            "location": "query",
+                            "repeated": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/people:batchGet",
+                    "response": {
+                        "$ref": "GetPeopleResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/contacts",
+                        "https://www.googleapis.com/auth/contacts.readonly",
+                        "https://www.googleapis.com/auth/plus.login",
+                        "https://www.googleapis.com/auth/user.addresses.read",
+                        "https://www.googleapis.com/auth/user.birthday.read",
+                        "https://www.googleapis.com/auth/user.emails.read",
+                        "https://www.googleapis.com/auth/user.phonenumbers.read",
+                        "https://www.googleapis.com/auth/userinfo.email",
+                        "https://www.googleapis.com/auth/userinfo.profile"
+                    ]
+                },
+                "get": {
+                    "description": "Provides information about a person by specifying a resource name. Use\n`people/me` to indicate the authenticated user.\n<br>\nThe request throws a 400 error if 'personFields' is not specified.",
+                    "httpMethod": "GET",
+                    "id": "people.people.get",
+                    "parameterOrder": [
+                        "resourceName"
+                    ],
+                    "parameters": {
+                        "resourceName": {
+                            "description": "The resource name of the person to provide information about.\n\n- To get information about the authenticated user, specify `people/me`.\n- To get information about a google account, specify\n `people/`<var>account_id</var>.\n- To get information about a contact, specify the resource name that\n  identifies the contact as returned by\n[`people.connections.list`](/people/api/rest/v1/people.connections/list).",
+                            "location": "path",
+                            "pattern": "^people/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "personFields": {
+                            "description": "**Required.** A field mask to restrict which fields on the person are\nreturned. Valid values are:\n\n* addresses\n* ageRanges\n* biographies\n* birthdays\n* braggingRights\n* coverPhotos\n* emailAddresses\n* events\n* genders\n* imClients\n* interests\n* locales\n* memberships\n* metadata\n* names\n* nicknames\n* occupations\n* organizations\n* phoneNumbers\n* photos\n* relations\n* relationshipInterests\n* relationshipStatuses\n* residences\n* skills\n* taglines\n* urls",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "requestMask.includeField": {
+                            "description": "**Required.** Comma-separated list of person fields to be included in the\nresponse. Each path should start with `person.`: for example,\n`person.names` or `person.photos`.",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+resourceName}",
+                    "response": {
+                        "$ref": "Person"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/contacts",
+                        "https://www.googleapis.com/auth/contacts.readonly",
+                        "https://www.googleapis.com/auth/plus.login",
+                        "https://www.googleapis.com/auth/user.addresses.read",
+                        "https://www.googleapis.com/auth/user.birthday.read",
+                        "https://www.googleapis.com/auth/user.emails.read",
+                        "https://www.googleapis.com/auth/user.phonenumbers.read",
+                        "https://www.googleapis.com/auth/userinfo.email",
+                        "https://www.googleapis.com/auth/userinfo.profile"
+                    ]
+                },
                 "updateContact": {
                     "description": "Update contact data for an existing contact person. Any non-contact data\nwill not be modified.\n\nThe request throws a 400 error if `updatePersonFields` is not specified.\n<br>\nThe request throws a 400 error if `person.metadata.sources` is not\nspecified for the contact to be updated.\n<br>\nThe request throws a 412 error if `person.metadata.sources.etag` is\ndifferent than the contact's etag, which indicates the contact has changed\nsince its data was read. Clients should get the latest person and re-apply\ntheir updates to the latest person.",
                     "httpMethod": "PATCH",
@@ -219,91 +304,6 @@
                     "scopes": [
                         "https://www.googleapis.com/auth/contacts"
                     ]
-                },
-                "getBatchGet": {
-                    "description": "Provides information about a list of specific people by specifying a list\nof requested resource names. Use `people/me` to indicate the authenticated\nuser.\n<br>\nThe request throws a 400 error if 'personFields' is not specified.",
-                    "httpMethod": "GET",
-                    "id": "people.people.getBatchGet",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "resourceNames": {
-                            "description": "The resource names of the people to provide information about.\n\n- To get information about the authenticated user, specify `people/me`.\n- To get information about a google account, specify\n  `people/`<var>account_id</var>.\n- To get information about a contact, specify the resource name that\n  identifies the contact as returned by\n[`people.connections.list`](/people/api/rest/v1/people.connections/list).\n\nYou can include up to 50 resource names in one request.",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "personFields": {
-                            "description": "**Required.** A field mask to restrict which fields on each person are\nreturned. Valid values are:\n\n* addresses\n* ageRanges\n* biographies\n* birthdays\n* braggingRights\n* coverPhotos\n* emailAddresses\n* events\n* genders\n* imClients\n* interests\n* locales\n* memberships\n* metadata\n* names\n* nicknames\n* occupations\n* organizations\n* phoneNumbers\n* photos\n* relations\n* relationshipInterests\n* relationshipStatuses\n* residences\n* skills\n* taglines\n* urls",
-                            "format": "google-fieldmask",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMask.includeField": {
-                            "description": "**Required.** Comma-separated list of person fields to be included in the\nresponse. Each path should start with `person.`: for example,\n`person.names` or `person.photos`.",
-                            "format": "google-fieldmask",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/people:batchGet",
-                    "response": {
-                        "$ref": "GetPeopleResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/contacts",
-                        "https://www.googleapis.com/auth/contacts.readonly",
-                        "https://www.googleapis.com/auth/plus.login",
-                        "https://www.googleapis.com/auth/user.addresses.read",
-                        "https://www.googleapis.com/auth/user.birthday.read",
-                        "https://www.googleapis.com/auth/user.emails.read",
-                        "https://www.googleapis.com/auth/user.phonenumbers.read",
-                        "https://www.googleapis.com/auth/userinfo.email",
-                        "https://www.googleapis.com/auth/userinfo.profile"
-                    ]
-                },
-                "get": {
-                    "description": "Provides information about a person by specifying a resource name. Use\n`people/me` to indicate the authenticated user.\n<br>\nThe request throws a 400 error if 'personFields' is not specified.",
-                    "httpMethod": "GET",
-                    "id": "people.people.get",
-                    "parameterOrder": [
-                        "resourceName"
-                    ],
-                    "parameters": {
-                        "resourceName": {
-                            "description": "The resource name of the person to provide information about.\n\n- To get information about the authenticated user, specify `people/me`.\n- To get information about a google account, specify\n `people/`<var>account_id</var>.\n- To get information about a contact, specify the resource name that\n  identifies the contact as returned by\n[`people.connections.list`](/people/api/rest/v1/people.connections/list).",
-                            "location": "path",
-                            "pattern": "^people/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "personFields": {
-                            "description": "**Required.** A field mask to restrict which fields on the person are\nreturned. Valid values are:\n\n* addresses\n* ageRanges\n* biographies\n* birthdays\n* braggingRights\n* coverPhotos\n* emailAddresses\n* events\n* genders\n* imClients\n* interests\n* locales\n* memberships\n* metadata\n* names\n* nicknames\n* occupations\n* organizations\n* phoneNumbers\n* photos\n* relations\n* relationshipInterests\n* relationshipStatuses\n* residences\n* skills\n* taglines\n* urls",
-                            "format": "google-fieldmask",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "requestMask.includeField": {
-                            "description": "**Required.** Comma-separated list of person fields to be included in the\nresponse. Each path should start with `person.`: for example,\n`person.names` or `person.photos`.",
-                            "format": "google-fieldmask",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+resourceName}",
-                    "response": {
-                        "$ref": "Person"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/contacts",
-                        "https://www.googleapis.com/auth/contacts.readonly",
-                        "https://www.googleapis.com/auth/plus.login",
-                        "https://www.googleapis.com/auth/user.addresses.read",
-                        "https://www.googleapis.com/auth/user.birthday.read",
-                        "https://www.googleapis.com/auth/user.emails.read",
-                        "https://www.googleapis.com/auth/user.phonenumbers.read",
-                        "https://www.googleapis.com/auth/userinfo.email",
-                        "https://www.googleapis.com/auth/userinfo.profile"
-                    ]
                 }
             },
             "resources": {
@@ -317,17 +317,6 @@
                                 "resourceName"
                             ],
                             "parameters": {
-                                "syncToken": {
-                                    "description": "A sync token, returned by a previous call to `people.connections.list`.\nOnly resources changed since the sync token was created will be returned.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "personFields": {
-                                    "description": "**Required.** A field mask to restrict which fields on each person are\nreturned. Valid values are:\n\n* addresses\n* ageRanges\n* biographies\n* birthdays\n* braggingRights\n* coverPhotos\n* emailAddresses\n* events\n* genders\n* imClients\n* interests\n* locales\n* memberships\n* metadata\n* names\n* nicknames\n* occupations\n* organizations\n* phoneNumbers\n* photos\n* relations\n* relationshipInterests\n* relationshipStatuses\n* residences\n* skills\n* taglines\n* urls",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                },
                                 "sortOrder": {
                                     "description": "The order in which the connections should be sorted. Defaults to\n`LAST_MODIFIED_ASCENDING`.",
                                     "enum": [
@@ -355,14 +344,25 @@
                                     "location": "query",
                                     "type": "string"
                                 },
+                                "requestMask.includeField": {
+                                    "description": "**Required.** Comma-separated list of person fields to be included in the\nresponse. Each path should start with `person.`: for example,\n`person.names` or `person.photos`.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "pageSize": {
                                     "description": "The number of connections to include in the response. Valid values are\nbetween 1 and 2000, inclusive. Defaults to 100.",
                                     "format": "int32",
                                     "location": "query",
                                     "type": "integer"
                                 },
-                                "requestMask.includeField": {
-                                    "description": "**Required.** Comma-separated list of person fields to be included in the\nresponse. Each path should start with `person.`: for example,\n`person.names` or `person.photos`.",
+                                "syncToken": {
+                                    "description": "A sync token, returned by a previous call to `people.connections.list`.\nOnly resources changed since the sync token was created will be returned.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "personFields": {
+                                    "description": "**Required.** A field mask to restrict which fields on each person are\nreturned. Valid values are:\n\n* addresses\n* ageRanges\n* biographies\n* birthdays\n* braggingRights\n* coverPhotos\n* emailAddresses\n* events\n* genders\n* imClients\n* interests\n* locales\n* memberships\n* metadata\n* names\n* nicknames\n* occupations\n* organizations\n* phoneNumbers\n* photos\n* relations\n* relationshipInterests\n* relationshipStatuses\n* residences\n* skills\n* taglines\n* urls",
                                     "format": "google-fieldmask",
                                     "location": "query",
                                     "type": "string"
@@ -464,17 +464,17 @@
                     "id": "people.contactGroups.batchGet",
                     "parameterOrder": [],
                     "parameters": {
-                        "maxMembers": {
-                            "description": "Specifies the maximum number of members to return for each group.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        },
                         "resourceNames": {
                             "description": "The resource names of the contact groups to get.",
                             "location": "query",
                             "repeated": true,
                             "type": "string"
+                        },
+                        "maxMembers": {
+                            "description": "Specifies the maximum number of members to return for each group.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
                         }
                     },
                     "path": "v1/contactGroups:batchGet",
@@ -521,6 +521,11 @@
                     "id": "people.contactGroups.list",
                     "parameterOrder": [],
                     "parameters": {
+                        "syncToken": {
+                            "description": "A sync token, returned by a previous call to `contactgroups.list`.\nOnly resources changed since the sync token was created will be returned.",
+                            "location": "query",
+                            "type": "string"
+                        },
                         "pageToken": {
                             "description": "The next_page_token value returned from a previous call to\n[ListContactGroups](/people/api/rest/v1/contactgroups/list).\nRequests the next page of resources.",
                             "location": "query",
@@ -531,11 +536,6 @@
                             "format": "int32",
                             "location": "query",
                             "type": "integer"
-                        },
-                        "syncToken": {
-                            "description": "A sync token, returned by a previous call to `contactgroups.list`.\nOnly resources changed since the sync token was created will be returned.",
-                            "location": "query",
-                            "type": "string"
                         }
                     },
                     "path": "v1/contactGroups",
@@ -583,21 +583,1074 @@
             }
         }
     },
-    "revision": "20171003",
+    "revision": "20171019",
     "rootUrl": "https://people.googleapis.com/",
     "schemas": {
+        "ContactGroupMetadata": {
+            "description": "The read-only metadata about a contact group.",
+            "id": "ContactGroupMetadata",
+            "properties": {
+                "deleted": {
+                    "description": "True if the contact group resource has been deleted. Populated only for\n[`ListContactGroups`](/people/api/rest/v1/contactgroups/list) requests\nthat include a sync token.",
+                    "type": "boolean"
+                },
+                "updateTime": {
+                    "description": "The time the group was last updated.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Residence": {
+            "description": "A person's past or current residence.",
+            "id": "Residence",
+            "properties": {
+                "value": {
+                    "description": "The address of the residence.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the residence."
+                },
+                "current": {
+                    "description": "True if the residence is the person's current residence;\nfalse if the residence is a past residence.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "Event": {
+            "description": "An event related to the person.",
+            "id": "Event",
+            "properties": {
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the event."
+                },
+                "type": {
+                    "description": "The type of the event. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `anniversary`\n* `other`",
+                    "type": "string"
+                },
+                "date": {
+                    "$ref": "Date",
+                    "description": "The date of the event."
+                },
+                "formattedType": {
+                    "description": "The read-only type of the event translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ModifyContactGroupMembersResponse": {
+            "description": "The response to a modify contact group members request.",
+            "id": "ModifyContactGroupMembersResponse",
+            "properties": {
+                "notFoundResourceNames": {
+                    "description": "The contact people resource names that were not found.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ProfileMetadata": {
+            "description": "The read-only metadata about a profile.",
+            "id": "ProfileMetadata",
+            "properties": {
+                "objectType": {
+                    "description": "The profile object type.",
+                    "enum": [
+                        "OBJECT_TYPE_UNSPECIFIED",
+                        "PERSON",
+                        "PAGE"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "Person.",
+                        "[Google+ Page.](http://www.google.com/+/brands/)"
+                    ],
+                    "type": "string"
+                },
+                "userTypes": {
+                    "description": "The user types.",
+                    "enumDescriptions": [
+                        "The user type is not known.",
+                        "The user is a Google user.",
+                        "The user is a Google+ user.",
+                        "The user is a Google Apps for Work user."
+                    ],
+                    "items": {
+                        "enum": [
+                            "USER_TYPE_UNKNOWN",
+                            "GOOGLE_USER",
+                            "GPLUS_USER",
+                            "GOOGLE_APPS_USER"
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Gender": {
+            "description": "A person's gender.",
+            "id": "Gender",
+            "properties": {
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the gender."
+                },
+                "value": {
+                    "description": "The gender for the person. The gender can be custom or predefined.\nPossible values include, but are not limited to, the\nfollowing:\n\n* `male`\n* `female`\n* `other`\n* `unknown`",
+                    "type": "string"
+                },
+                "formattedValue": {
+                    "description": "The read-only value of the gender translated and formatted in the viewer's\naccount locale or the `Accept-Language` HTTP header locale.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CoverPhoto": {
+            "description": "A person's read-only cover photo. A large image shown on the person's\nprofile page that represents who they are or what they care about.",
+            "id": "CoverPhoto",
+            "properties": {
+                "url": {
+                    "description": "The URL of the cover photo.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the cover photo."
+                },
+                "default": {
+                    "description": "True if the cover photo is the default cover photo;\nfalse if the cover photo is a user-provided cover photo.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "Interest": {
+            "description": "One of the person's interests.",
+            "id": "Interest",
+            "properties": {
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the interest."
+                },
+                "value": {
+                    "description": "The interest; for example, `stargazing`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EmailAddress": {
+            "description": "A person's email address.",
+            "id": "EmailAddress",
+            "properties": {
+                "displayName": {
+                    "description": "The display name of the email.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the email address."
+                },
+                "type": {
+                    "description": "The type of the email address. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `other`",
+                    "type": "string"
+                },
+                "value": {
+                    "description": "The email address.",
+                    "type": "string"
+                },
+                "formattedType": {
+                    "description": "The read-only type of the email address translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Nickname": {
+            "description": "A person's nickname.",
+            "id": "Nickname",
+            "properties": {
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the nickname."
+                },
+                "type": {
+                    "description": "The type of the nickname.",
+                    "enum": [
+                        "DEFAULT",
+                        "MAIDEN_NAME",
+                        "INITIALS",
+                        "GPLUS",
+                        "OTHER_NAME"
+                    ],
+                    "enumDescriptions": [
+                        "Generic nickname.",
+                        "Maiden name or birth family name. Used when the person's family name has\nchanged as a result of marriage.",
+                        "Initials.",
+                        "Google+ profile nickname.",
+                        "A professional affiliation or other name; for example, `Dr. Smith.`"
+                    ],
+                    "type": "string"
+                },
+                "value": {
+                    "description": "The nickname.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Skill": {
+            "description": "A skill that the person has.",
+            "id": "Skill",
+            "properties": {
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the skill."
+                },
+                "value": {
+                    "description": "The skill; for example, `underwater basket weaving`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Tagline": {
+            "description": "A read-only brief one-line description of the person.",
+            "id": "Tagline",
+            "properties": {
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the tagline."
+                },
+                "value": {
+                    "description": "The tagline.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Date": {
+            "description": "Represents a whole calendar date, for example a date of birth. The time\nof day and time zone are either specified elsewhere or are not\nsignificant. The date is relative to the\n[Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar).\nThe day may be 0 to represent a year and month where the day is not\nsignificant. The year may be 0 to represent a month and day independent\nof year; for example, anniversary date.",
+            "id": "Date",
+            "properties": {
+                "year": {
+                    "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "day": {
+                    "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "month": {
+                    "description": "Month of year. Must be from 1 to 12.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "Name": {
+            "description": "A person's name. If the name is a mononym, the family name is empty.",
+            "id": "Name",
+            "properties": {
+                "honorificPrefix": {
+                    "description": "The honorific prefixes, such as `Mrs.` or `Dr.`",
+                    "type": "string"
+                },
+                "phoneticHonorificSuffix": {
+                    "description": "The honorific suffixes spelled as they sound.",
+                    "type": "string"
+                },
+                "middleName": {
+                    "description": "The middle name(s).",
+                    "type": "string"
+                },
+                "givenName": {
+                    "description": "The given name.",
+                    "type": "string"
+                },
+                "phoneticHonorificPrefix": {
+                    "description": "The honorific prefixes spelled as they sound.",
+                    "type": "string"
+                },
+                "phoneticGivenName": {
+                    "description": "The given name spelled as it sounds.",
+                    "type": "string"
+                },
+                "phoneticFamilyName": {
+                    "description": "The family name spelled as it sounds.",
+                    "type": "string"
+                },
+                "familyName": {
+                    "description": "The family name.",
+                    "type": "string"
+                },
+                "phoneticMiddleName": {
+                    "description": "The middle name(s) spelled as they sound.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the name."
+                },
+                "phoneticFullName": {
+                    "description": "The full name spelled as it sounds.",
+                    "type": "string"
+                },
+                "displayNameLastFirst": {
+                    "description": "The read-only display name with the last name first formatted according to\nthe locale specified by the viewer's account or the\n`Accept-Language` HTTP header.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "The read-only display name formatted according to the locale specified by\nthe viewer's account or the `Accept-Language` HTTP header.",
+                    "type": "string"
+                },
+                "honorificSuffix": {
+                    "description": "The honorific suffixes, such as `Jr.`",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Locale": {
+            "description": "A person's locale preference.",
+            "id": "Locale",
+            "properties": {
+                "value": {
+                    "description": "The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47)\nlanguage tag representing the locale.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the locale."
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "UserDefined": {
+            "description": "Arbitrary user data that is populated by the end users.",
+            "id": "UserDefined",
+            "properties": {
+                "key": {
+                    "description": "The end user specified key of the user defined data.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the user defined data."
+                },
+                "value": {
+                    "description": "The end user specified value of the user defined data.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Biography": {
+            "description": "A person's short biography.",
+            "id": "Biography",
+            "properties": {
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the biography."
+                },
+                "value": {
+                    "description": "The short biography.",
+                    "type": "string"
+                },
+                "contentType": {
+                    "description": "The content type of the biography.",
+                    "enum": [
+                        "CONTENT_TYPE_UNSPECIFIED",
+                        "TEXT_PLAIN",
+                        "TEXT_HTML"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "Plain text.",
+                        "HTML text."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "FieldMetadata": {
+            "description": "Metadata about a field.",
+            "id": "FieldMetadata",
+            "properties": {
+                "source": {
+                    "$ref": "Source",
+                    "description": "The source of the field."
+                },
+                "verified": {
+                    "description": "True if the field is verified; false if the field is unverified. A\nverified field is typically a name, email address, phone number, or\nwebsite that has been confirmed to be owned by the person.",
+                    "type": "boolean"
+                },
+                "primary": {
+                    "description": "True if the field is the primary field; false if the field is a secondary\nfield.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "RelationshipInterest": {
+            "description": "A person's read-only relationship interest .",
+            "id": "RelationshipInterest",
+            "properties": {
+                "value": {
+                    "description": "The kind of relationship the person is looking for. The value can be custom\nor predefined. Possible values include, but are not limited to, the\nfollowing values:\n\n* `friend`\n* `date`\n* `relationship`\n* `networking`",
+                    "type": "string"
+                },
+                "formattedValue": {
+                    "description": "The value of the relationship interest translated and formatted in the\nviewer's account locale or the locale specified in the Accept-Language\nHTTP header.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the relationship interest."
+                }
+            },
+            "type": "object"
+        },
+        "Source": {
+            "description": "The source of a field.",
+            "id": "Source",
+            "properties": {
+                "type": {
+                    "description": "The source type.",
+                    "enum": [
+                        "SOURCE_TYPE_UNSPECIFIED",
+                        "ACCOUNT",
+                        "PROFILE",
+                        "DOMAIN_PROFILE",
+                        "CONTACT"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "[Google Account](https://accounts.google.com).",
+                        "[Google profile](https://profiles.google.com). You can view the\nprofile at https://profiles.google.com/<var>id</var> where\n<var>id</var> is the source id.",
+                        "[Google Apps domain profile](https://admin.google.com).",
+                        "[Google contact](https://contacts.google.com). You can view the\ncontact at https://contact.google.com/<var>id</var> where <var>id</var>\nis the source id."
+                    ],
+                    "type": "string"
+                },
+                "etag": {
+                    "description": "**Only populated in `person.metadata.sources`.**\n\nThe [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the\nsource. Used for web cache validation.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "The unique identifier within the source type generated by the server.",
+                    "type": "string"
+                },
+                "profileMetadata": {
+                    "$ref": "ProfileMetadata",
+                    "description": "**Only populated in `person.metadata.sources`.**\n\nMetadata about a source of type PROFILE."
+                },
+                "updateTime": {
+                    "description": "**Only populated in `person.metadata.sources`.**\n\nLast update timestamp of this source.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GetPeopleResponse": {
+            "id": "GetPeopleResponse",
+            "properties": {
+                "responses": {
+                    "description": "The response for each requested resource name.",
+                    "items": {
+                        "$ref": "PersonResponse"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Photo": {
+            "description": "A person's read-only photo. A picture shown next to the person's name to\nhelp others recognize the person.",
+            "id": "Photo",
+            "properties": {
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the photo."
+                },
+                "default": {
+                    "description": "True if the photo is a default photo;\nfalse if the photo is a user-provided photo.",
+                    "type": "boolean"
+                },
+                "url": {
+                    "description": "The URL of the photo. You can change the desired size by appending a query\nparameter `sz=`<var>size</var> at the end of the url. Example:\n`https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50`",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "PhoneNumber": {
+            "description": "A person's phone number.",
+            "id": "PhoneNumber",
+            "properties": {
+                "formattedType": {
+                    "description": "The read-only type of the phone number translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.",
+                    "type": "string"
+                },
+                "canonicalForm": {
+                    "description": "The read-only canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf)\nform of the phone number.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the phone number."
+                },
+                "type": {
+                    "description": "The type of the phone number. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `mobile`\n* `homeFax`\n* `workFax`\n* `otherFax`\n* `pager`\n* `workMobile`\n* `workPager`\n* `main`\n* `googleVoice`\n* `other`",
+                    "type": "string"
+                },
+                "value": {
+                    "description": "The phone number.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListConnectionsResponse": {
+            "id": "ListConnectionsResponse",
+            "properties": {
+                "totalPeople": {
+                    "description": "**DEPRECATED** (Please use totalItems)\nThe total number of people in the list without pagination.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "nextPageToken": {
+                    "description": "The token that can be used to retrieve the next page of results.",
+                    "type": "string"
+                },
+                "connections": {
+                    "description": "The list of people that the requestor is connected to.",
+                    "items": {
+                        "$ref": "Person"
+                    },
+                    "type": "array"
+                },
+                "nextSyncToken": {
+                    "description": "The token that can be used to retrieve changes since the last request.",
+                    "type": "string"
+                },
+                "totalItems": {
+                    "description": "The total number of items in the list without pagination.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "Birthday": {
+            "description": "A person's birthday. At least one of the `date` and `text` fields are\nspecified. The `date` and `text` fields typically represent the same\ndate, but are not guaranteed to.",
+            "id": "Birthday",
+            "properties": {
+                "date": {
+                    "$ref": "Date",
+                    "description": "The date of the birthday."
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the birthday."
+                },
+                "text": {
+                    "description": "A free-form string representing the user's birthday.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CreateContactGroupRequest": {
+            "description": "A request to create a new contact group.",
+            "id": "CreateContactGroupRequest",
+            "properties": {
+                "contactGroup": {
+                    "$ref": "ContactGroup",
+                    "description": "The contact group to create."
+                }
+            },
+            "type": "object"
+        },
+        "Address": {
+            "description": "A person's physical address. May be a P.O. box or street address. All fields\nare optional.",
+            "id": "Address",
+            "properties": {
+                "countryCode": {
+                    "description": "The [ISO 3166-1 alpha-2](http://www.iso.org/iso/country_codes.htm) country\ncode of the address.",
+                    "type": "string"
+                },
+                "formattedType": {
+                    "description": "The read-only type of the address translated and formatted in the viewer's\naccount locale or the `Accept-Language` HTTP header locale.",
+                    "type": "string"
+                },
+                "city": {
+                    "description": "The city of the address.",
+                    "type": "string"
+                },
+                "formattedValue": {
+                    "description": "The unstructured value of the address. If this is not set by the user it\nwill be automatically constructed from structured values.",
+                    "type": "string"
+                },
+                "country": {
+                    "description": "The country of the address.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The type of the address. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `other`",
+                    "type": "string"
+                },
+                "extendedAddress": {
+                    "description": "The extended address of the address; for example, the apartment number.",
+                    "type": "string"
+                },
+                "poBox": {
+                    "description": "The P.O. box of the address.",
+                    "type": "string"
+                },
+                "postalCode": {
+                    "description": "The postal code of the address.",
+                    "type": "string"
+                },
+                "region": {
+                    "description": "The region of the address; for example, the state or province.",
+                    "type": "string"
+                },
+                "streetAddress": {
+                    "description": "The street address.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the address."
+                }
+            },
+            "type": "object"
+        },
+        "ContactGroupMembership": {
+            "description": "A Google contact group membership.",
+            "id": "ContactGroupMembership",
+            "properties": {
+                "contactGroupId": {
+                    "description": "The contact group ID for the contact group membership. The contact group\nID can be custom or predefined. Possible values include, but are not\nlimited to, the following:\n\n*  `myContacts`\n*  `starred`\n*  A numerical ID for user-created groups.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+            "id": "Status",
+            "properties": {
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                },
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "PersonMetadata": {
+            "description": "The read-only metadata about a person.",
+            "id": "PersonMetadata",
+            "properties": {
+                "objectType": {
+                    "description": "**DEPRECATED** (Please use\n`person.metadata.sources.profileMetadata.objectType` instead)\n\nThe type of the person object.",
+                    "enum": [
+                        "OBJECT_TYPE_UNSPECIFIED",
+                        "PERSON",
+                        "PAGE"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "Person.",
+                        "[Google+ Page.](http://www.google.com/+/brands/)"
+                    ],
+                    "type": "string"
+                },
+                "linkedPeopleResourceNames": {
+                    "description": "Resource names of people linked to this resource.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "sources": {
+                    "description": "The sources of data for the person.",
+                    "items": {
+                        "$ref": "Source"
+                    },
+                    "type": "array"
+                },
+                "previousResourceNames": {
+                    "description": "Any former resource names this person has had. Populated only for\n[`connections.list`](/people/api/rest/v1/people.connections/list) requests\nthat include a sync token.\n\nThe resource name may change when adding or removing fields that link a\ncontact and profile such as a verified email, verified phone number, or\nprofile URL.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "deleted": {
+                    "description": "True if the person resource has been deleted. Populated only for\n[`connections.list`](/people/api/rest/v1/people.connections/list) requests\nthat include a sync token.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "ModifyContactGroupMembersRequest": {
+            "description": "A request to modify an existing contact group's members.",
+            "id": "ModifyContactGroupMembersRequest",
+            "properties": {
+                "resourceNamesToAdd": {
+                    "description": "The resource names of the contact people to add in the form of in the form\n`people/`<var>person_id</var>.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "resourceNamesToRemove": {
+                    "description": "The resource names of the contact people to remove in the form of in the\nform of `people/`<var>person_id</var>.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ContactGroupResponse": {
+            "description": "The response for a specific contact group.",
+            "id": "ContactGroupResponse",
+            "properties": {
+                "status": {
+                    "$ref": "Status",
+                    "description": "The status of the response."
+                },
+                "requestedResourceName": {
+                    "description": "The original requested resource name.",
+                    "type": "string"
+                },
+                "contactGroup": {
+                    "$ref": "ContactGroup",
+                    "description": "The contact group."
+                }
+            },
+            "type": "object"
+        },
+        "Url": {
+            "description": "A person's associated URLs.",
+            "id": "Url",
+            "properties": {
+                "value": {
+                    "description": "The URL.",
+                    "type": "string"
+                },
+                "formattedType": {
+                    "description": "The read-only type of the URL translated and formatted in the viewer's\naccount locale or the `Accept-Language` HTTP header locale.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the URL."
+                },
+                "type": {
+                    "description": "The type of the URL. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `blog`\n* `profile`\n* `homePage`\n* `ftp`\n* `reservations`\n* `appInstallPage`: website for a Google+ application.\n* `other`",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ImClient": {
+            "description": "A person's instant messaging client.",
+            "id": "ImClient",
+            "properties": {
+                "formattedProtocol": {
+                    "description": "The read-only protocol of the IM client formatted in the viewer's account\nlocale or the `Accept-Language` HTTP header locale.",
+                    "type": "string"
+                },
+                "formattedType": {
+                    "description": "The read-only type of the IM client translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the IM client."
+                },
+                "type": {
+                    "description": "The type of the IM client. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `other`",
+                    "type": "string"
+                },
+                "protocol": {
+                    "description": "The protocol of the IM client. The protocol can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `aim`\n* `msn`\n* `yahoo`\n* `skype`\n* `qq`\n* `googleTalk`\n* `icq`\n* `jabber`\n* `netMeeting`",
+                    "type": "string"
+                },
+                "username": {
+                    "description": "The user name used in the IM client.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DomainMembership": {
+            "description": "A Google Apps Domain membership.",
+            "id": "DomainMembership",
+            "properties": {
+                "inViewerDomain": {
+                    "description": "True if the person is in the viewer's Google Apps domain.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "BatchGetContactGroupsResponse": {
+            "description": "The response to a batch get contact groups request.",
+            "id": "BatchGetContactGroupsResponse",
+            "properties": {
+                "responses": {
+                    "description": "The list of responses for each requested contact group resource.",
+                    "items": {
+                        "$ref": "ContactGroupResponse"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Membership": {
+            "description": "A person's read-only membership in a group.",
+            "id": "Membership",
+            "properties": {
+                "contactGroupMembership": {
+                    "$ref": "ContactGroupMembership",
+                    "description": "The contact group membership."
+                },
+                "domainMembership": {
+                    "$ref": "DomainMembership",
+                    "description": "The domain membership."
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the membership."
+                }
+            },
+            "type": "object"
+        },
+        "RelationshipStatus": {
+            "description": "A person's read-only relationship status.",
+            "id": "RelationshipStatus",
+            "properties": {
+                "formattedValue": {
+                    "description": "The read-only value of the relationship status translated and formatted in\nthe viewer's account locale or the `Accept-Language` HTTP header locale.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the relationship status."
+                },
+                "value": {
+                    "description": "The relationship status. The value can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `single`\n* `inARelationship`\n* `engaged`\n* `married`\n* `itsComplicated`\n* `openRelationship`\n* `widowed`\n* `inDomesticPartnership`\n* `inCivilUnion`",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "BraggingRights": {
+            "description": "A person's bragging rights.",
+            "id": "BraggingRights",
+            "properties": {
+                "value": {
+                    "description": "The bragging rights; for example, `climbed mount everest`.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the bragging rights."
+                }
+            },
+            "type": "object"
+        },
+        "Organization": {
+            "description": "A person's past or current organization. Overlapping date ranges are\npermitted.",
+            "id": "Organization",
+            "properties": {
+                "endDate": {
+                    "$ref": "Date",
+                    "description": "The end date when the person left the organization."
+                },
+                "symbol": {
+                    "description": "The symbol associated with the organization; for example, a stock ticker\nsymbol, abbreviation, or acronym.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The name of the organization.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the organization."
+                },
+                "title": {
+                    "description": "The person's job title at the organization.",
+                    "type": "string"
+                },
+                "location": {
+                    "description": "The location of the organization office the person works at.",
+                    "type": "string"
+                },
+                "current": {
+                    "description": "True if the organization is the person's current organization;\nfalse if the organization is a past organization.",
+                    "type": "boolean"
+                },
+                "startDate": {
+                    "$ref": "Date",
+                    "description": "The start date when the person joined the organization."
+                },
+                "formattedType": {
+                    "description": "The read-only type of the organization translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.",
+                    "type": "string"
+                },
+                "domain": {
+                    "description": "The domain name associated with the organization; for example, `google.com`.",
+                    "type": "string"
+                },
+                "department": {
+                    "description": "The person's department at the organization.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The type of the organization. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `work`\n* `school`",
+                    "type": "string"
+                },
+                "phoneticName": {
+                    "description": "The phonetic name of the organization.",
+                    "type": "string"
+                },
+                "jobDescription": {
+                    "description": "The person's job description at the organization.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AgeRangeType": {
+            "description": "A person's age range.",
+            "id": "AgeRangeType",
+            "properties": {
+                "ageRange": {
+                    "description": "The age range.",
+                    "enum": [
+                        "AGE_RANGE_UNSPECIFIED",
+                        "LESS_THAN_EIGHTEEN",
+                        "EIGHTEEN_TO_TWENTY",
+                        "TWENTY_ONE_OR_OLDER"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "Younger than eighteen.",
+                        "Between eighteen and twenty.",
+                        "Twenty-one and older."
+                    ],
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the age range."
+                }
+            },
+            "type": "object"
+        },
+        "ListContactGroupsResponse": {
+            "description": "The response to a list contact groups request.",
+            "id": "ListContactGroupsResponse",
+            "properties": {
+                "contactGroups": {
+                    "description": "The list of contact groups. Members of the contact groups are not\npopulated.",
+                    "items": {
+                        "$ref": "ContactGroup"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The token that can be used to retrieve the next page of results.",
+                    "type": "string"
+                },
+                "totalItems": {
+                    "description": "The total number of items in the list without pagination.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "nextSyncToken": {
+                    "description": "The token that can be used to retrieve changes since the last request.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "PersonResponse": {
+            "description": "The response for a single person",
+            "id": "PersonResponse",
+            "properties": {
+                "person": {
+                    "$ref": "Person",
+                    "description": "The person."
+                },
+                "status": {
+                    "$ref": "Status",
+                    "description": "The status of the response."
+                },
+                "httpStatusCode": {
+                    "description": "**DEPRECATED** (Please use status instead)\n\n[HTTP 1.1 status code]\n(http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html).",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "requestedResourceName": {
+                    "description": "The original requested resource name. May be different than the resource\nname on the returned person.\n\nThe resource name can change when adding or removing fields that link a\ncontact and profile such as a verified email, verified phone number, or a\nprofile URL.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "Relation": {
             "description": "A person's relation to another person.",
             "id": "Relation",
             "properties": {
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the relation."
-                },
-                "type": {
-                    "description": "The person's relation to the other person. The type can be custom or predefined.\nPossible values include, but are not limited to, the following values:\n\n* `spouse`\n* `child`\n* `mother`\n* `father`\n* `parent`\n* `brother`\n* `sister`\n* `friend`\n* `relative`\n* `domesticPartner`\n* `manager`\n* `assistant`\n* `referredBy`\n* `partner`",
-                    "type": "string"
-                },
                 "person": {
                     "description": "The name of the other person this relation refers to.",
                     "type": "string"
@@ -605,6 +1658,14 @@
                 "formattedType": {
                     "description": "The type of the relation translated and formatted in the viewer's account\nlocale or the locale specified in the Accept-Language HTTP header.",
                     "type": "string"
+                },
+                "metadata": {
+                    "$ref": "FieldMetadata",
+                    "description": "Metadata about the relation."
+                },
+                "type": {
+                    "description": "The person's relation to the other person. The type can be custom or predefined.\nPossible values include, but are not limited to, the following values:\n\n* `spouse`\n* `child`\n* `mother`\n* `father`\n* `parent`\n* `brother`\n* `sister`\n* `friend`\n* `relative`\n* `domesticPartner`\n* `manager`\n* `assistant`\n* `referredBy`\n* `partner`",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -628,19 +1689,6 @@
             "description": "A contact group.",
             "id": "ContactGroup",
             "properties": {
-                "metadata": {
-                    "$ref": "ContactGroupMetadata",
-                    "description": "Metadata about the contact group."
-                },
-                "memberCount": {
-                    "description": "The total number of contacts in the group irrespective of max members in\nspecified in the request.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "resourceName": {
-                    "description": "The resource name for the contact group, assigned by the server. An ASCII\nstring, in the form of `contactGroups/`<var>contact_group_id</var>.",
-                    "type": "string"
-                },
                 "etag": {
                     "description": "The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the\nresource. Used for web cache validation.",
                     "type": "string"
@@ -663,16 +1711,29 @@
                     ],
                     "type": "string"
                 },
-                "name": {
-                    "description": "The contact group name set by the group owner or a system provided name\nfor system groups.",
-                    "type": "string"
-                },
                 "memberResourceNames": {
                     "description": "The list of contact person resource names that are members of the contact\ngroup. The field is not populated for LIST requests and can only be updated\nthrough the\n[ModifyContactGroupMembers](/people/api/rest/v1/contactgroups/members/modify).",
                     "items": {
                         "type": "string"
                     },
                     "type": "array"
+                },
+                "name": {
+                    "description": "The contact group name set by the group owner or a system provided name\nfor system groups.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "ContactGroupMetadata",
+                    "description": "Metadata about the contact group."
+                },
+                "memberCount": {
+                    "description": "The total number of contacts in the group irrespective of max members in\nspecified in the request.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "resourceName": {
+                    "description": "The resource name for the contact group, assigned by the server. An ASCII\nstring, in the form of `contactGroups/`<var>contact_group_id</var>.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -681,27 +1742,6 @@
             "description": "Information about a person merged from various data sources such as the\nauthenticated user's contacts and profile data.\n\nMost fields can have multiple items. The items in a field have no guaranteed\norder, but each non-empty field is guaranteed to have exactly one field with\n`metadata.primary` set to true.",
             "id": "Person",
             "properties": {
-                "occupations": {
-                    "description": "The person's occupations.",
-                    "items": {
-                        "$ref": "Occupation"
-                    },
-                    "type": "array"
-                },
-                "emailAddresses": {
-                    "description": "The person's email addresses.",
-                    "items": {
-                        "$ref": "EmailAddress"
-                    },
-                    "type": "array"
-                },
-                "organizations": {
-                    "description": "The person's past or current organizations.",
-                    "items": {
-                        "$ref": "Organization"
-                    },
-                    "type": "array"
-                },
                 "etag": {
                     "description": "The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the\nresource. Used for web cache validation.",
                     "type": "string"
@@ -884,6 +1924,13 @@
                     },
                     "type": "array"
                 },
+                "relations": {
+                    "description": "The person's relations.",
+                    "items": {
+                        "$ref": "Relation"
+                    },
+                    "type": "array"
+                },
                 "names": {
                     "description": "The person's names.",
                     "items": {
@@ -891,10 +1938,24 @@
                     },
                     "type": "array"
                 },
-                "relations": {
-                    "description": "The person's relations.",
+                "occupations": {
+                    "description": "The person's occupations.",
                     "items": {
-                        "$ref": "Relation"
+                        "$ref": "Occupation"
+                    },
+                    "type": "array"
+                },
+                "emailAddresses": {
+                    "description": "The person's email addresses.",
+                    "items": {
+                        "$ref": "EmailAddress"
+                    },
+                    "type": "array"
+                },
+                "organizations": {
+                    "description": "The person's past or current organizations.",
+                    "items": {
+                        "$ref": "Organization"
                     },
                     "type": "array"
                 }
@@ -911,1067 +1972,6 @@
                 }
             },
             "type": "object"
-        },
-        "ContactGroupMetadata": {
-            "description": "The read-only metadata about a contact group.",
-            "id": "ContactGroupMetadata",
-            "properties": {
-                "updateTime": {
-                    "description": "The time the group was last updated.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "deleted": {
-                    "description": "True if the contact group resource has been deleted. Populated only for\n[`ListContactGroups`](/people/api/rest/v1/contactgroups/list) requests\nthat include a sync token.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "Residence": {
-            "description": "A person's past or current residence.",
-            "id": "Residence",
-            "properties": {
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the residence."
-                },
-                "current": {
-                    "description": "True if the residence is the person's current residence;\nfalse if the residence is a past residence.",
-                    "type": "boolean"
-                },
-                "value": {
-                    "description": "The address of the residence.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Event": {
-            "description": "An event related to the person.",
-            "id": "Event",
-            "properties": {
-                "formattedType": {
-                    "description": "The read-only type of the event translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the event."
-                },
-                "type": {
-                    "description": "The type of the event. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `anniversary`\n* `other`",
-                    "type": "string"
-                },
-                "date": {
-                    "$ref": "Date",
-                    "description": "The date of the event."
-                }
-            },
-            "type": "object"
-        },
-        "ModifyContactGroupMembersResponse": {
-            "description": "The response to a modify contact group members request.",
-            "id": "ModifyContactGroupMembersResponse",
-            "properties": {
-                "notFoundResourceNames": {
-                    "description": "The contact people resource names that were not found.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ProfileMetadata": {
-            "description": "The read-only metadata about a profile.",
-            "id": "ProfileMetadata",
-            "properties": {
-                "objectType": {
-                    "description": "The profile object type.",
-                    "enum": [
-                        "OBJECT_TYPE_UNSPECIFIED",
-                        "PERSON",
-                        "PAGE"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified.",
-                        "Person.",
-                        "[Google+ Page.](http://www.google.com/+/brands/)"
-                    ],
-                    "type": "string"
-                },
-                "userTypes": {
-                    "description": "The user types.",
-                    "enumDescriptions": [
-                        "The user type is not known.",
-                        "The user is a Google user.",
-                        "The user is a Google+ user.",
-                        "The user is a Google Apps for Work user."
-                    ],
-                    "items": {
-                        "enum": [
-                            "USER_TYPE_UNKNOWN",
-                            "GOOGLE_USER",
-                            "GPLUS_USER",
-                            "GOOGLE_APPS_USER"
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Gender": {
-            "description": "A person's gender.",
-            "id": "Gender",
-            "properties": {
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the gender."
-                },
-                "value": {
-                    "description": "The gender for the person. The gender can be custom or predefined.\nPossible values include, but are not limited to, the\nfollowing:\n\n* `male`\n* `female`\n* `other`\n* `unknown`",
-                    "type": "string"
-                },
-                "formattedValue": {
-                    "description": "The read-only value of the gender translated and formatted in the viewer's\naccount locale or the `Accept-Language` HTTP header locale.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CoverPhoto": {
-            "description": "A person's read-only cover photo. A large image shown on the person's\nprofile page that represents who they are or what they care about.",
-            "id": "CoverPhoto",
-            "properties": {
-                "url": {
-                    "description": "The URL of the cover photo.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the cover photo."
-                },
-                "default": {
-                    "description": "True if the cover photo is the default cover photo;\nfalse if the cover photo is a user-provided cover photo.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "Interest": {
-            "description": "One of the person's interests.",
-            "id": "Interest",
-            "properties": {
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the interest."
-                },
-                "value": {
-                    "description": "The interest; for example, `stargazing`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "EmailAddress": {
-            "description": "A person's email address.",
-            "id": "EmailAddress",
-            "properties": {
-                "value": {
-                    "description": "The email address.",
-                    "type": "string"
-                },
-                "formattedType": {
-                    "description": "The read-only type of the email address translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "The display name of the email.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the email address."
-                },
-                "type": {
-                    "description": "The type of the email address. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `other`",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Nickname": {
-            "description": "A person's nickname.",
-            "id": "Nickname",
-            "properties": {
-                "value": {
-                    "description": "The nickname.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the nickname."
-                },
-                "type": {
-                    "description": "The type of the nickname.",
-                    "enum": [
-                        "DEFAULT",
-                        "MAIDEN_NAME",
-                        "INITIALS",
-                        "GPLUS",
-                        "OTHER_NAME"
-                    ],
-                    "enumDescriptions": [
-                        "Generic nickname.",
-                        "Maiden name or birth family name. Used when the person's family name has\nchanged as a result of marriage.",
-                        "Initials.",
-                        "Google+ profile nickname.",
-                        "A professional affiliation or other name; for example, `Dr. Smith.`"
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Skill": {
-            "description": "A skill that the person has.",
-            "id": "Skill",
-            "properties": {
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the skill."
-                },
-                "value": {
-                    "description": "The skill; for example, `underwater basket weaving`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Tagline": {
-            "description": "A read-only brief one-line description of the person.",
-            "id": "Tagline",
-            "properties": {
-                "value": {
-                    "description": "The tagline.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the tagline."
-                }
-            },
-            "type": "object"
-        },
-        "Date": {
-            "description": "Represents a whole calendar date, for example a date of birth. The time\nof day and time zone are either specified elsewhere or are not\nsignificant. The date is relative to the\n[Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar).\nThe day may be 0 to represent a year and month where the day is not\nsignificant. The year may be 0 to represent a month and day independent\nof year; for example, anniversary date.",
-            "id": "Date",
-            "properties": {
-                "year": {
-                    "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "day": {
-                    "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "month": {
-                    "description": "Month of year. Must be from 1 to 12.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "Name": {
-            "description": "A person's name. If the name is a mononym, the family name is empty.",
-            "id": "Name",
-            "properties": {
-                "phoneticFamilyName": {
-                    "description": "The family name spelled as it sounds.",
-                    "type": "string"
-                },
-                "familyName": {
-                    "description": "The family name.",
-                    "type": "string"
-                },
-                "phoneticMiddleName": {
-                    "description": "The middle name(s) spelled as they sound.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the name."
-                },
-                "phoneticFullName": {
-                    "description": "The full name spelled as it sounds.",
-                    "type": "string"
-                },
-                "displayNameLastFirst": {
-                    "description": "The read-only display name with the last name first formatted according to\nthe locale specified by the viewer's account or the\n`Accept-Language` HTTP header.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "The read-only display name formatted according to the locale specified by\nthe viewer's account or the `Accept-Language` HTTP header.",
-                    "type": "string"
-                },
-                "honorificSuffix": {
-                    "description": "The honorific suffixes, such as `Jr.`",
-                    "type": "string"
-                },
-                "honorificPrefix": {
-                    "description": "The honorific prefixes, such as `Mrs.` or `Dr.`",
-                    "type": "string"
-                },
-                "phoneticHonorificSuffix": {
-                    "description": "The honorific suffixes spelled as they sound.",
-                    "type": "string"
-                },
-                "middleName": {
-                    "description": "The middle name(s).",
-                    "type": "string"
-                },
-                "givenName": {
-                    "description": "The given name.",
-                    "type": "string"
-                },
-                "phoneticHonorificPrefix": {
-                    "description": "The honorific prefixes spelled as they sound.",
-                    "type": "string"
-                },
-                "phoneticGivenName": {
-                    "description": "The given name spelled as it sounds.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Locale": {
-            "description": "A person's locale preference.",
-            "id": "Locale",
-            "properties": {
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the locale."
-                },
-                "value": {
-                    "description": "The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47)\nlanguage tag representing the locale.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
-        "UserDefined": {
-            "description": "Arbitrary user data that is populated by the end users.",
-            "id": "UserDefined",
-            "properties": {
-                "key": {
-                    "description": "The end user specified key of the user defined data.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the user defined data."
-                },
-                "value": {
-                    "description": "The end user specified value of the user defined data.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Biography": {
-            "description": "A person's short biography.",
-            "id": "Biography",
-            "properties": {
-                "contentType": {
-                    "description": "The content type of the biography.",
-                    "enum": [
-                        "CONTENT_TYPE_UNSPECIFIED",
-                        "TEXT_PLAIN",
-                        "TEXT_HTML"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified.",
-                        "Plain text.",
-                        "HTML text."
-                    ],
-                    "type": "string"
-                },
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the biography."
-                },
-                "value": {
-                    "description": "The short biography.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "FieldMetadata": {
-            "description": "Metadata about a field.",
-            "id": "FieldMetadata",
-            "properties": {
-                "source": {
-                    "$ref": "Source",
-                    "description": "The source of the field."
-                },
-                "verified": {
-                    "description": "True if the field is verified; false if the field is unverified. A\nverified field is typically a name, email address, phone number, or\nwebsite that has been confirmed to be owned by the person.",
-                    "type": "boolean"
-                },
-                "primary": {
-                    "description": "True if the field is the primary field; false if the field is a secondary\nfield.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "Source": {
-            "description": "The source of a field.",
-            "id": "Source",
-            "properties": {
-                "updateTime": {
-                    "description": "**Only populated in `person.metadata.sources`.**\n\nLast update timestamp of this source.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The source type.",
-                    "enum": [
-                        "SOURCE_TYPE_UNSPECIFIED",
-                        "ACCOUNT",
-                        "PROFILE",
-                        "DOMAIN_PROFILE",
-                        "CONTACT"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified.",
-                        "[Google Account](https://accounts.google.com).",
-                        "[Google profile](https://profiles.google.com). You can view the\nprofile at https://profiles.google.com/<var>id</var> where\n<var>id</var> is the source id.",
-                        "[Google Apps domain profile](https://admin.google.com).",
-                        "[Google contact](https://contacts.google.com). You can view the\ncontact at https://contact.google.com/<var>id</var> where <var>id</var>\nis the source id."
-                    ],
-                    "type": "string"
-                },
-                "etag": {
-                    "description": "**Only populated in `person.metadata.sources`.**\n\nThe [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the\nsource. Used for web cache validation.",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "The unique identifier within the source type generated by the server.",
-                    "type": "string"
-                },
-                "profileMetadata": {
-                    "$ref": "ProfileMetadata",
-                    "description": "**Only populated in `person.metadata.sources`.**\n\nMetadata about a source of type PROFILE."
-                }
-            },
-            "type": "object"
-        },
-        "RelationshipInterest": {
-            "description": "A person's read-only relationship interest .",
-            "id": "RelationshipInterest",
-            "properties": {
-                "value": {
-                    "description": "The kind of relationship the person is looking for. The value can be custom\nor predefined. Possible values include, but are not limited to, the\nfollowing values:\n\n* `friend`\n* `date`\n* `relationship`\n* `networking`",
-                    "type": "string"
-                },
-                "formattedValue": {
-                    "description": "The value of the relationship interest translated and formatted in the\nviewer's account locale or the locale specified in the Accept-Language\nHTTP header.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the relationship interest."
-                }
-            },
-            "type": "object"
-        },
-        "GetPeopleResponse": {
-            "id": "GetPeopleResponse",
-            "properties": {
-                "responses": {
-                    "description": "The response for each requested resource name.",
-                    "items": {
-                        "$ref": "PersonResponse"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "PhoneNumber": {
-            "description": "A person's phone number.",
-            "id": "PhoneNumber",
-            "properties": {
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the phone number."
-                },
-                "type": {
-                    "description": "The type of the phone number. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `mobile`\n* `homeFax`\n* `workFax`\n* `otherFax`\n* `pager`\n* `workMobile`\n* `workPager`\n* `main`\n* `googleVoice`\n* `other`",
-                    "type": "string"
-                },
-                "value": {
-                    "description": "The phone number.",
-                    "type": "string"
-                },
-                "formattedType": {
-                    "description": "The read-only type of the phone number translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.",
-                    "type": "string"
-                },
-                "canonicalForm": {
-                    "description": "The read-only canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf)\nform of the phone number.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Photo": {
-            "description": "A person's read-only photo. A picture shown next to the person's name to\nhelp others recognize the person.",
-            "id": "Photo",
-            "properties": {
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the photo."
-                },
-                "default": {
-                    "description": "True if the photo is a default photo;\nfalse if the photo is a user-provided photo.",
-                    "type": "boolean"
-                },
-                "url": {
-                    "description": "The URL of the photo. You can change the desired size by appending a query\nparameter `sz=`<var>size</var> at the end of the url. Example:\n`https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50`",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListConnectionsResponse": {
-            "id": "ListConnectionsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "The token that can be used to retrieve the next page of results.",
-                    "type": "string"
-                },
-                "connections": {
-                    "description": "The list of people that the requestor is connected to.",
-                    "items": {
-                        "$ref": "Person"
-                    },
-                    "type": "array"
-                },
-                "nextSyncToken": {
-                    "description": "The token that can be used to retrieve changes since the last request.",
-                    "type": "string"
-                },
-                "totalItems": {
-                    "description": "The total number of items in the list without pagination.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "totalPeople": {
-                    "description": "**DEPRECATED** (Please use totalItems)\nThe total number of people in the list without pagination.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "Birthday": {
-            "description": "A person's birthday. At least one of the `date` and `text` fields are\nspecified. The `date` and `text` fields typically represent the same\ndate, but are not guaranteed to.",
-            "id": "Birthday",
-            "properties": {
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the birthday."
-                },
-                "text": {
-                    "description": "A free-form string representing the user's birthday.",
-                    "type": "string"
-                },
-                "date": {
-                    "$ref": "Date",
-                    "description": "The date of the birthday."
-                }
-            },
-            "type": "object"
-        },
-        "CreateContactGroupRequest": {
-            "description": "A request to create a new contact group.",
-            "id": "CreateContactGroupRequest",
-            "properties": {
-                "contactGroup": {
-                    "$ref": "ContactGroup",
-                    "description": "The contact group to create."
-                }
-            },
-            "type": "object"
-        },
-        "Address": {
-            "description": "A person's physical address. May be a P.O. box or street address. All fields\nare optional.",
-            "id": "Address",
-            "properties": {
-                "extendedAddress": {
-                    "description": "The extended address of the address; for example, the apartment number.",
-                    "type": "string"
-                },
-                "poBox": {
-                    "description": "The P.O. box of the address.",
-                    "type": "string"
-                },
-                "postalCode": {
-                    "description": "The postal code of the address.",
-                    "type": "string"
-                },
-                "region": {
-                    "description": "The region of the address; for example, the state or province.",
-                    "type": "string"
-                },
-                "streetAddress": {
-                    "description": "The street address.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the address."
-                },
-                "countryCode": {
-                    "description": "The [ISO 3166-1 alpha-2](http://www.iso.org/iso/country_codes.htm) country\ncode of the address.",
-                    "type": "string"
-                },
-                "formattedType": {
-                    "description": "The read-only type of the address translated and formatted in the viewer's\naccount locale or the `Accept-Language` HTTP header locale.",
-                    "type": "string"
-                },
-                "city": {
-                    "description": "The city of the address.",
-                    "type": "string"
-                },
-                "formattedValue": {
-                    "description": "The unstructured value of the address. If this is not set by the user it\nwill be automatically constructed from structured values.",
-                    "type": "string"
-                },
-                "country": {
-                    "description": "The country of the address.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The type of the address. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `other`",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ContactGroupMembership": {
-            "description": "A Google contact group membership.",
-            "id": "ContactGroupMembership",
-            "properties": {
-                "contactGroupId": {
-                    "description": "The contact group ID for the contact group membership. The contact group\nID can be custom or predefined. Possible values include, but are not\nlimited to, the following:\n\n*  `myContacts`\n*  `starred`\n*  A numerical ID for user-created groups.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Status": {
-            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
-            "id": "Status",
-            "properties": {
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                },
-                "details": {
-                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "PersonMetadata": {
-            "description": "The read-only metadata about a person.",
-            "id": "PersonMetadata",
-            "properties": {
-                "objectType": {
-                    "description": "**DEPRECATED** (Please use\n`person.metadata.sources.profileMetadata.objectType` instead)\n\nThe type of the person object.",
-                    "enum": [
-                        "OBJECT_TYPE_UNSPECIFIED",
-                        "PERSON",
-                        "PAGE"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified.",
-                        "Person.",
-                        "[Google+ Page.](http://www.google.com/+/brands/)"
-                    ],
-                    "type": "string"
-                },
-                "linkedPeopleResourceNames": {
-                    "description": "Resource names of people linked to this resource.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "sources": {
-                    "description": "The sources of data for the person.",
-                    "items": {
-                        "$ref": "Source"
-                    },
-                    "type": "array"
-                },
-                "previousResourceNames": {
-                    "description": "Any former resource names this person has had. Populated only for\n[`connections.list`](/people/api/rest/v1/people.connections/list) requests\nthat include a sync token.\n\nThe resource name may change when adding or removing fields that link a\ncontact and profile such as a verified email, verified phone number, or\nprofile URL.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "deleted": {
-                    "description": "True if the person resource has been deleted. Populated only for\n[`connections.list`](/people/api/rest/v1/people.connections/list) requests\nthat include a sync token.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "ModifyContactGroupMembersRequest": {
-            "description": "A request to modify an existing contact group's members.",
-            "id": "ModifyContactGroupMembersRequest",
-            "properties": {
-                "resourceNamesToAdd": {
-                    "description": "The resource names of the contact people to add in the form of in the form\n`people/`<var>person_id</var>.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "resourceNamesToRemove": {
-                    "description": "The resource names of the contact people to remove in the form of in the\nform of `people/`<var>person_id</var>.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ContactGroupResponse": {
-            "description": "The response for a specific contact group.",
-            "id": "ContactGroupResponse",
-            "properties": {
-                "status": {
-                    "$ref": "Status",
-                    "description": "The status of the response."
-                },
-                "requestedResourceName": {
-                    "description": "The original requested resource name.",
-                    "type": "string"
-                },
-                "contactGroup": {
-                    "$ref": "ContactGroup",
-                    "description": "The contact group."
-                }
-            },
-            "type": "object"
-        },
-        "Url": {
-            "description": "A person's associated URLs.",
-            "id": "Url",
-            "properties": {
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the URL."
-                },
-                "type": {
-                    "description": "The type of the URL. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `blog`\n* `profile`\n* `homePage`\n* `ftp`\n* `reservations`\n* `appInstallPage`: website for a Google+ application.\n* `other`",
-                    "type": "string"
-                },
-                "value": {
-                    "description": "The URL.",
-                    "type": "string"
-                },
-                "formattedType": {
-                    "description": "The read-only type of the URL translated and formatted in the viewer's\naccount locale or the `Accept-Language` HTTP header locale.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ImClient": {
-            "description": "A person's instant messaging client.",
-            "id": "ImClient",
-            "properties": {
-                "formattedProtocol": {
-                    "description": "The read-only protocol of the IM client formatted in the viewer's account\nlocale or the `Accept-Language` HTTP header locale.",
-                    "type": "string"
-                },
-                "formattedType": {
-                    "description": "The read-only type of the IM client translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the IM client."
-                },
-                "type": {
-                    "description": "The type of the IM client. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `other`",
-                    "type": "string"
-                },
-                "protocol": {
-                    "description": "The protocol of the IM client. The protocol can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `aim`\n* `msn`\n* `yahoo`\n* `skype`\n* `qq`\n* `googleTalk`\n* `icq`\n* `jabber`\n* `netMeeting`",
-                    "type": "string"
-                },
-                "username": {
-                    "description": "The user name used in the IM client.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "DomainMembership": {
-            "description": "A Google Apps Domain membership.",
-            "id": "DomainMembership",
-            "properties": {
-                "inViewerDomain": {
-                    "description": "True if the person is in the viewer's Google Apps domain.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "BatchGetContactGroupsResponse": {
-            "description": "The response to a batch get contact groups request.",
-            "id": "BatchGetContactGroupsResponse",
-            "properties": {
-                "responses": {
-                    "description": "The list of responses for each requested contact group resource.",
-                    "items": {
-                        "$ref": "ContactGroupResponse"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Membership": {
-            "description": "A person's read-only membership in a group.",
-            "id": "Membership",
-            "properties": {
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the membership."
-                },
-                "contactGroupMembership": {
-                    "$ref": "ContactGroupMembership",
-                    "description": "The contact group membership."
-                },
-                "domainMembership": {
-                    "$ref": "DomainMembership",
-                    "description": "The domain membership."
-                }
-            },
-            "type": "object"
-        },
-        "RelationshipStatus": {
-            "description": "A person's read-only relationship status.",
-            "id": "RelationshipStatus",
-            "properties": {
-                "formattedValue": {
-                    "description": "The read-only value of the relationship status translated and formatted in\nthe viewer's account locale or the `Accept-Language` HTTP header locale.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the relationship status."
-                },
-                "value": {
-                    "description": "The relationship status. The value can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `single`\n* `inARelationship`\n* `engaged`\n* `married`\n* `itsComplicated`\n* `openRelationship`\n* `widowed`\n* `inDomesticPartnership`\n* `inCivilUnion`",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "BraggingRights": {
-            "description": "A person's bragging rights.",
-            "id": "BraggingRights",
-            "properties": {
-                "value": {
-                    "description": "The bragging rights; for example, `climbed mount everest`.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the bragging rights."
-                }
-            },
-            "type": "object"
-        },
-        "Organization": {
-            "description": "A person's past or current organization. Overlapping date ranges are\npermitted.",
-            "id": "Organization",
-            "properties": {
-                "endDate": {
-                    "$ref": "Date",
-                    "description": "The end date when the person left the organization."
-                },
-                "symbol": {
-                    "description": "The symbol associated with the organization; for example, a stock ticker\nsymbol, abbreviation, or acronym.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of the organization.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the organization."
-                },
-                "location": {
-                    "description": "The location of the organization office the person works at.",
-                    "type": "string"
-                },
-                "title": {
-                    "description": "The person's job title at the organization.",
-                    "type": "string"
-                },
-                "current": {
-                    "description": "True if the organization is the person's current organization;\nfalse if the organization is a past organization.",
-                    "type": "boolean"
-                },
-                "formattedType": {
-                    "description": "The read-only type of the organization translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.",
-                    "type": "string"
-                },
-                "startDate": {
-                    "$ref": "Date",
-                    "description": "The start date when the person joined the organization."
-                },
-                "domain": {
-                    "description": "The domain name associated with the organization; for example, `google.com`.",
-                    "type": "string"
-                },
-                "department": {
-                    "description": "The person's department at the organization.",
-                    "type": "string"
-                },
-                "phoneticName": {
-                    "description": "The phonetic name of the organization.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The type of the organization. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `work`\n* `school`",
-                    "type": "string"
-                },
-                "jobDescription": {
-                    "description": "The person's job description at the organization.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AgeRangeType": {
-            "description": "A person's age range.",
-            "id": "AgeRangeType",
-            "properties": {
-                "metadata": {
-                    "$ref": "FieldMetadata",
-                    "description": "Metadata about the age range."
-                },
-                "ageRange": {
-                    "description": "The age range.",
-                    "enum": [
-                        "AGE_RANGE_UNSPECIFIED",
-                        "LESS_THAN_EIGHTEEN",
-                        "EIGHTEEN_TO_TWENTY",
-                        "TWENTY_ONE_OR_OLDER"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified.",
-                        "Younger than eighteen.",
-                        "Between eighteen and twenty.",
-                        "Twenty-one and older."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListContactGroupsResponse": {
-            "description": "The response to a list contact groups request.",
-            "id": "ListContactGroupsResponse",
-            "properties": {
-                "totalItems": {
-                    "description": "The total number of items in the list without pagination.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "nextSyncToken": {
-                    "description": "The token that can be used to retrieve changes since the last request.",
-                    "type": "string"
-                },
-                "contactGroups": {
-                    "description": "The list of contact groups. Members of the contact groups are not\npopulated.",
-                    "items": {
-                        "$ref": "ContactGroup"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "The token that can be used to retrieve the next page of results.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "PersonResponse": {
-            "description": "The response for a single person",
-            "id": "PersonResponse",
-            "properties": {
-                "person": {
-                    "$ref": "Person",
-                    "description": "The person."
-                },
-                "status": {
-                    "$ref": "Status",
-                    "description": "The status of the response."
-                },
-                "httpStatusCode": {
-                    "description": "**DEPRECATED** (Please use status instead)\n\n[HTTP 1.1 status code]\n(http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html).",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "requestedResourceName": {
-                    "description": "The original requested resource name. May be different than the resource\nname on the returned person.\n\nThe resource name can change when adding or removing fields that link a\ncontact and profile such as a verified email, verified phone number, or a\nprofile URL.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/playmoviespartner__v1.json b/discovery/googleapis/playmoviespartner__v1.json
index d807186..b95b1f1 100644
--- a/discovery/googleapis/playmoviespartner__v1.json
+++ b/discovery/googleapis/playmoviespartner__v1.json
@@ -25,16 +25,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -56,11 +46,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -74,6 +59,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -110,12 +100,240 @@
             "description": "Pretty-print response.",
             "location": "query",
             "type": "boolean"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
         "accounts": {
             "resources": {
+                "orders": {
+                    "methods": {
+                        "list": {
+                            "description": "List Orders owned or managed by the partner.\n\nSee _Authentication and Authorization rules_ and\n_List methods rules_ for more information about this method.",
+                            "httpMethod": "GET",
+                            "id": "playmoviespartner.accounts.orders.list",
+                            "parameterOrder": [
+                                "accountId"
+                            ],
+                            "parameters": {
+                                "accountId": {
+                                    "description": "REQUIRED. See _General rules_ for more information about this field.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "videoIds": {
+                                    "description": "Filter Orders that match any of the given `video_id`s.",
+                                    "location": "query",
+                                    "repeated": true,
+                                    "type": "string"
+                                },
+                                "customId": {
+                                    "description": "Filter Orders that match a case-insensitive, partner-specific custom id.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "See _List methods rules_ for info about this field.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "See _List methods rules_ for info about this field.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "pphNames": {
+                                    "description": "See _List methods rules_ for info about this field.",
+                                    "location": "query",
+                                    "repeated": true,
+                                    "type": "string"
+                                },
+                                "status": {
+                                    "description": "Filter Orders that match one of the given status.",
+                                    "enum": [
+                                        "STATUS_UNSPECIFIED",
+                                        "STATUS_APPROVED",
+                                        "STATUS_FAILED",
+                                        "STATUS_PROCESSING",
+                                        "STATUS_UNFULFILLED",
+                                        "STATUS_NOT_AVAILABLE"
+                                    ],
+                                    "location": "query",
+                                    "repeated": true,
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "Filter that matches Orders with a `name`, `show`, `season` or `episode`\nthat contains the given case-insensitive name.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "studioNames": {
+                                    "description": "See _List methods rules_ for info about this field.",
+                                    "location": "query",
+                                    "repeated": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/accounts/{accountId}/orders",
+                            "response": {
+                                "$ref": "ListOrdersResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/playmovies_partner.readonly"
+                            ]
+                        },
+                        "get": {
+                            "description": "Get an Order given its id.\n\nSee _Authentication and Authorization rules_ and\n_Get methods rules_ for more information about this method.",
+                            "httpMethod": "GET",
+                            "id": "playmoviespartner.accounts.orders.get",
+                            "parameterOrder": [
+                                "accountId",
+                                "orderId"
+                            ],
+                            "parameters": {
+                                "orderId": {
+                                    "description": "REQUIRED. Order ID.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "accountId": {
+                                    "description": "REQUIRED. See _General rules_ for more information about this field.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/accounts/{accountId}/orders/{orderId}",
+                            "response": {
+                                "$ref": "Order"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/playmovies_partner.readonly"
+                            ]
+                        }
+                    }
+                },
+                "avails": {
+                    "methods": {
+                        "list": {
+                            "description": "List Avails owned or managed by the partner.\n\nSee _Authentication and Authorization rules_ and\n_List methods rules_ for more information about this method.",
+                            "httpMethod": "GET",
+                            "id": "playmoviespartner.accounts.avails.list",
+                            "parameterOrder": [
+                                "accountId"
+                            ],
+                            "parameters": {
+                                "title": {
+                                    "description": "Filter that matches Avails with a `title_internal_alias`,\n`series_title_internal_alias`, `season_title_internal_alias`,\nor `episode_title_internal_alias` that contains the given\ncase-insensitive title.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "See _List methods rules_ for info about this field.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "videoIds": {
+                                    "description": "Filter Avails that match any of the given `video_id`s.",
+                                    "location": "query",
+                                    "repeated": true,
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "See _List methods rules_ for info about this field.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "altIds": {
+                                    "description": "Filter Avails that match (case-insensitive) any of the given partner-specific custom ids.",
+                                    "location": "query",
+                                    "repeated": true,
+                                    "type": "string"
+                                },
+                                "pphNames": {
+                                    "description": "See _List methods rules_ for info about this field.",
+                                    "location": "query",
+                                    "repeated": true,
+                                    "type": "string"
+                                },
+                                "altId": {
+                                    "description": "Filter Avails that match a case-insensitive, partner-specific custom id.\nNOTE: this field is deprecated and will be removed on V2; `alt_ids`\nshould be used instead.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "studioNames": {
+                                    "description": "See _List methods rules_ for info about this field.",
+                                    "location": "query",
+                                    "repeated": true,
+                                    "type": "string"
+                                },
+                                "accountId": {
+                                    "description": "REQUIRED. See _General rules_ for more information about this field.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "territories": {
+                                    "description": "Filter Avails that match (case-insensitive) any of the given country codes,\nusing the \"ISO 3166-1 alpha-2\" format (examples: \"US\", \"us\", \"Us\").",
+                                    "location": "query",
+                                    "repeated": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/accounts/{accountId}/avails",
+                            "response": {
+                                "$ref": "ListAvailsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/playmovies_partner.readonly"
+                            ]
+                        },
+                        "get": {
+                            "description": "Get an Avail given its avail group id and avail id.",
+                            "httpMethod": "GET",
+                            "id": "playmoviespartner.accounts.avails.get",
+                            "parameterOrder": [
+                                "accountId",
+                                "availId"
+                            ],
+                            "parameters": {
+                                "availId": {
+                                    "description": "REQUIRED. Avail ID.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "accountId": {
+                                    "description": "REQUIRED. See _General rules_ for more information about this field.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/accounts/{accountId}/avails/{availId}",
+                            "response": {
+                                "$ref": "Avail"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/playmovies_partner.readonly"
+                            ]
+                        }
+                    }
+                },
                 "storeInfos": {
                     "methods": {
                         "list": {
@@ -126,6 +344,12 @@
                                 "accountId"
                             ],
                             "parameters": {
+                                "accountId": {
+                                    "description": "REQUIRED. See _General rules_ for more information about this field.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
                                 "seasonIds": {
                                     "description": "Filter StoreInfos that match any of the given `season_id`s.",
                                     "location": "query",
@@ -182,12 +406,6 @@
                                     "location": "query",
                                     "repeated": true,
                                     "type": "string"
-                                },
-                                "accountId": {
-                                    "description": "REQUIRED. See _General rules_ for more information about this field.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
                                 }
                             },
                             "path": "v1/accounts/{accountId}/storeInfos",
@@ -242,269 +460,17 @@
                             }
                         }
                     }
-                },
-                "orders": {
-                    "methods": {
-                        "list": {
-                            "description": "List Orders owned or managed by the partner.\n\nSee _Authentication and Authorization rules_ and\n_List methods rules_ for more information about this method.",
-                            "httpMethod": "GET",
-                            "id": "playmoviespartner.accounts.orders.list",
-                            "parameterOrder": [
-                                "accountId"
-                            ],
-                            "parameters": {
-                                "studioNames": {
-                                    "description": "See _List methods rules_ for info about this field.",
-                                    "location": "query",
-                                    "repeated": true,
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "description": "Filter that matches Orders with a `name`, `show`, `season` or `episode`\nthat contains the given case-insensitive name.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "accountId": {
-                                    "description": "REQUIRED. See _General rules_ for more information about this field.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "See _List methods rules_ for info about this field.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "videoIds": {
-                                    "description": "Filter Orders that match any of the given `video_id`s.",
-                                    "location": "query",
-                                    "repeated": true,
-                                    "type": "string"
-                                },
-                                "customId": {
-                                    "description": "Filter Orders that match a case-insensitive, partner-specific custom id.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "See _List methods rules_ for info about this field.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "pphNames": {
-                                    "description": "See _List methods rules_ for info about this field.",
-                                    "location": "query",
-                                    "repeated": true,
-                                    "type": "string"
-                                },
-                                "status": {
-                                    "description": "Filter Orders that match one of the given status.",
-                                    "enum": [
-                                        "STATUS_UNSPECIFIED",
-                                        "STATUS_APPROVED",
-                                        "STATUS_FAILED",
-                                        "STATUS_PROCESSING",
-                                        "STATUS_UNFULFILLED",
-                                        "STATUS_NOT_AVAILABLE"
-                                    ],
-                                    "location": "query",
-                                    "repeated": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/accounts/{accountId}/orders",
-                            "response": {
-                                "$ref": "ListOrdersResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/playmovies_partner.readonly"
-                            ]
-                        },
-                        "get": {
-                            "description": "Get an Order given its id.\n\nSee _Authentication and Authorization rules_ and\n_Get methods rules_ for more information about this method.",
-                            "httpMethod": "GET",
-                            "id": "playmoviespartner.accounts.orders.get",
-                            "parameterOrder": [
-                                "accountId",
-                                "orderId"
-                            ],
-                            "parameters": {
-                                "orderId": {
-                                    "description": "REQUIRED. Order ID.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "accountId": {
-                                    "description": "REQUIRED. See _General rules_ for more information about this field.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/accounts/{accountId}/orders/{orderId}",
-                            "response": {
-                                "$ref": "Order"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/playmovies_partner.readonly"
-                            ]
-                        }
-                    }
-                },
-                "avails": {
-                    "methods": {
-                        "list": {
-                            "description": "List Avails owned or managed by the partner.\n\nSee _Authentication and Authorization rules_ and\n_List methods rules_ for more information about this method.",
-                            "httpMethod": "GET",
-                            "id": "playmoviespartner.accounts.avails.list",
-                            "parameterOrder": [
-                                "accountId"
-                            ],
-                            "parameters": {
-                                "pphNames": {
-                                    "description": "See _List methods rules_ for info about this field.",
-                                    "location": "query",
-                                    "repeated": true,
-                                    "type": "string"
-                                },
-                                "altId": {
-                                    "description": "Filter Avails that match a case-insensitive, partner-specific custom id.\nNOTE: this field is deprecated and will be removed on V2; `alt_ids`\nshould be used instead.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "studioNames": {
-                                    "description": "See _List methods rules_ for info about this field.",
-                                    "location": "query",
-                                    "repeated": true,
-                                    "type": "string"
-                                },
-                                "accountId": {
-                                    "description": "REQUIRED. See _General rules_ for more information about this field.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "territories": {
-                                    "description": "Filter Avails that match (case-insensitive) any of the given country codes,\nusing the \"ISO 3166-1 alpha-2\" format (examples: \"US\", \"us\", \"Us\").",
-                                    "location": "query",
-                                    "repeated": true,
-                                    "type": "string"
-                                },
-                                "title": {
-                                    "description": "Filter that matches Avails with a `title_internal_alias`,\n`series_title_internal_alias`, `season_title_internal_alias`,\nor `episode_title_internal_alias` that contains the given\ncase-insensitive title.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "See _List methods rules_ for info about this field.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "videoIds": {
-                                    "description": "Filter Avails that match any of the given `video_id`s.",
-                                    "location": "query",
-                                    "repeated": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "See _List methods rules_ for info about this field.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "altIds": {
-                                    "description": "Filter Avails that match (case-insensitive) any of the given partner-specific custom ids.",
-                                    "location": "query",
-                                    "repeated": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/accounts/{accountId}/avails",
-                            "response": {
-                                "$ref": "ListAvailsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/playmovies_partner.readonly"
-                            ]
-                        },
-                        "get": {
-                            "description": "Get an Avail given its avail group id and avail id.",
-                            "httpMethod": "GET",
-                            "id": "playmoviespartner.accounts.avails.get",
-                            "parameterOrder": [
-                                "accountId",
-                                "availId"
-                            ],
-                            "parameters": {
-                                "availId": {
-                                    "description": "REQUIRED. Avail ID.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "accountId": {
-                                    "description": "REQUIRED. See _General rules_ for more information about this field.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/accounts/{accountId}/avails/{availId}",
-                            "response": {
-                                "$ref": "Avail"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/playmovies_partner.readonly"
-                            ]
-                        }
-                    }
                 }
             }
         }
     },
-    "revision": "20170926",
+    "revision": "20171017",
     "rootUrl": "https://playmoviespartner.googleapis.com/",
     "schemas": {
         "Order": {
             "description": "An Order tracks the fulfillment of an Edit when delivered using the\nlegacy, non-component-based delivery.\n\nEach Order is uniquely identified by an `order_id`, which is generated\nby Google.\n\nExternally, Orders can also be identified by partners using its `custom_id`\n(when provided).",
             "id": "Order",
             "properties": {
-                "name": {
-                    "description": "Default Edit name,\nusually in the language of the country of origin.\nExample: \"Googlers, The\".",
-                    "type": "string"
-                },
-                "studioName": {
-                    "description": "Name of the studio that owns the Edit ordered.",
-                    "type": "string"
-                },
-                "receivedTime": {
-                    "description": "Timestamp when the Order was fulfilled.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "seasonName": {
-                    "description": "Default Season name,\nusually in the language of the country of origin.\nOnly available for TV Edits\nExample: \"Googlers, The - A Brave New World\".",
-                    "type": "string"
-                },
-                "customId": {
-                    "description": "ID that can be used to externally identify an Order.\nThis ID is provided by partners when submitting the Avails.\nExample: 'GOOGLER_2006'",
-                    "type": "string"
-                },
-                "channelName": {
-                    "description": "YouTube Channel Name that should be used to fulfill the Order.\nExample: \"Google_channel\".",
-                    "type": "string"
-                },
-                "approvedTime": {
-                    "description": "Timestamp when the Order was approved.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "showName": {
-                    "description": "Default Show name,\nusually in the language of the country of origin.\nOnly available for TV Edits\nExample: \"Googlers, The\".",
-                    "type": "string"
-                },
                 "orderId": {
                     "description": "ID internally generated by Google to uniquely identify an Order.\nExample: 'abcde12_x'",
                     "type": "string"
@@ -557,16 +523,16 @@
                     "description": "Legacy Order priority, as defined by Google.\nExample: 'P0'",
                     "type": "string"
                 },
-                "orderedTime": {
-                    "description": "Timestamp when the Order was created.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
                 "priority": {
                     "description": "Order priority, as defined by Google.\nThe higher the value, the higher the priority.\nExample: 90",
                     "format": "double",
                     "type": "number"
                 },
+                "orderedTime": {
+                    "description": "Timestamp when the Order was created.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
                 "videoId": {
                     "description": "Google-generated ID identifying the video linked to this Order, once\ndelivered.\nExample: 'gtry456_xc'.",
                     "type": "string"
@@ -582,31 +548,6 @@
                     },
                     "type": "array"
                 },
-                "earliestAvailStartTime": {
-                    "description": "Timestamp of the earliest start date of the Avails\nlinked to this Order.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "status": {
-                    "description": "High-level status of the order.",
-                    "enum": [
-                        "STATUS_UNSPECIFIED",
-                        "STATUS_APPROVED",
-                        "STATUS_FAILED",
-                        "STATUS_PROCESSING",
-                        "STATUS_UNFULFILLED",
-                        "STATUS_NOT_AVAILABLE"
-                    ],
-                    "enumDescriptions": [
-                        "Value could not be determined, please contact technical support if\nit should.",
-                        "Approved by Google.",
-                        "Waiting for partner to re-deliver the asset after a rejection by Google.",
-                        "Waiting for Google to process the asset.",
-                        "Waiting for partner to deliver the asset.",
-                        "Used when Status is not available (i.e: Orders for TV Seasons)."
-                    ],
-                    "type": "string"
-                },
                 "statusDetail": {
                     "description": "Detailed status of the order",
                     "enum": [
@@ -632,6 +573,65 @@
                         "Waiting for Google to process the asset."
                     ],
                     "type": "string"
+                },
+                "status": {
+                    "description": "High-level status of the order.",
+                    "enum": [
+                        "STATUS_UNSPECIFIED",
+                        "STATUS_APPROVED",
+                        "STATUS_FAILED",
+                        "STATUS_PROCESSING",
+                        "STATUS_UNFULFILLED",
+                        "STATUS_NOT_AVAILABLE"
+                    ],
+                    "enumDescriptions": [
+                        "Value could not be determined, please contact technical support if\nit should.",
+                        "Approved by Google.",
+                        "Waiting for partner to re-deliver the asset after a rejection by Google.",
+                        "Waiting for Google to process the asset.",
+                        "Waiting for partner to deliver the asset.",
+                        "Used when Status is not available (i.e: Orders for TV Seasons)."
+                    ],
+                    "type": "string"
+                },
+                "earliestAvailStartTime": {
+                    "description": "Timestamp of the earliest start date of the Avails\nlinked to this Order.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Default Edit name,\nusually in the language of the country of origin.\nExample: \"Googlers, The\".",
+                    "type": "string"
+                },
+                "studioName": {
+                    "description": "Name of the studio that owns the Edit ordered.",
+                    "type": "string"
+                },
+                "receivedTime": {
+                    "description": "Timestamp when the Order was fulfilled.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "seasonName": {
+                    "description": "Default Season name,\nusually in the language of the country of origin.\nOnly available for TV Edits\nExample: \"Googlers, The - A Brave New World\".",
+                    "type": "string"
+                },
+                "customId": {
+                    "description": "ID that can be used to externally identify an Order.\nThis ID is provided by partners when submitting the Avails.\nExample: 'GOOGLER_2006'",
+                    "type": "string"
+                },
+                "channelName": {
+                    "description": "YouTube Channel Name that should be used to fulfill the Order.\nExample: \"Google_channel\".",
+                    "type": "string"
+                },
+                "approvedTime": {
+                    "description": "Timestamp when the Order was approved.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "showName": {
+                    "description": "Default Show name,\nusually in the language of the country of origin.\nOnly available for TV Edits\nExample: \"Googlers, The\".",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -663,29 +663,13 @@
             "description": "Response to the 'ListAvails' method.",
             "id": "ListAvailsResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "See _List methods rules_ for info about this field.",
-                    "type": "string"
-                },
-                "totalSize": {
-                    "description": "See _List methods rules_ for more information about this field.",
-                    "format": "int32",
-                    "type": "integer"
-                },
                 "avails": {
                     "description": "List of Avails that match the request criteria.",
                     "items": {
                         "$ref": "Avail"
                     },
                     "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ListOrdersResponse": {
-            "description": "Response to the 'ListOrders' method.",
-            "id": "ListOrdersResponse",
-            "properties": {
+                },
                 "nextPageToken": {
                     "description": "See _List methods rules_ for info about this field.",
                     "type": "string"
@@ -694,13 +678,6 @@
                     "description": "See _List methods rules_ for more information about this field.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "orders": {
-                    "description": "List of Orders that match the request criteria.",
-                    "items": {
-                        "$ref": "Order"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -709,47 +686,15 @@
             "description": "Information about a playable sequence (video) associated with an Edit\nand available at the Google Play Store.\n\nInternally, each StoreInfo is uniquely identified by a `video_id`\nand `country`.\n\nExternally, Title-level EIDR or Edit-level EIDR, if provided,\ncan also be used to identify a specific title or edit in a country.",
             "id": "StoreInfo",
             "properties": {
-                "name": {
-                    "description": "Default Edit name, usually in the language of the country of\norigin.\nExample: \"Googlers, The\".",
-                    "type": "string"
-                },
-                "seasonId": {
-                    "description": "Google-generated ID identifying the season linked to the Edit.\nOnly available for TV Edits.\nExample: 'ster23ex'",
-                    "type": "string"
-                },
-                "titleLevelEidr": {
-                    "description": "Title-level EIDR ID.\nExample: \"10.5240/1489-49A2-3956-4B2D-FE16-5\".",
-                    "type": "string"
-                },
-                "seasonName": {
-                    "description": "Default Season name, usually in the language of the country of\norigin.\nOnly available for TV Edits\nExample: \"Googlers, The - A Brave New World\".",
-                    "type": "string"
-                },
-                "seasonNumber": {
-                    "description": "The number assigned to the season within a show.\nOnly available on TV Edits.\nExample: \"1\".",
-                    "type": "string"
-                },
-                "hasEstOffer": {
-                    "description": "Whether the Edit has a EST offer.",
-                    "type": "boolean"
-                },
-                "editLevelEidr": {
-                    "description": "Edit-level EIDR ID.\nExample: \"10.5240/1489-49A2-3956-4B2D-FE16-6\".",
-                    "type": "string"
-                },
-                "hasSdOffer": {
-                    "description": "Whether the Edit has a SD offer.",
-                    "type": "boolean"
-                },
-                "videoId": {
-                    "description": "Google-generated ID identifying the video linked to the Edit.\nExample: 'gtry456_xc'",
-                    "type": "string"
-                },
                 "liveTime": {
                     "description": "Timestamp when the Edit went live on the Store.",
                     "format": "google-datetime",
                     "type": "string"
                 },
+                "videoId": {
+                    "description": "Google-generated ID identifying the video linked to the Edit.\nExample: 'gtry456_xc'",
+                    "type": "string"
+                },
                 "hasInfoCards": {
                     "description": "Whether the Edit has info cards.",
                     "type": "boolean"
@@ -832,6 +777,38 @@
                 "hasAudio51": {
                     "description": "Whether the Edit has a 5.1 channel audio track.",
                     "type": "boolean"
+                },
+                "name": {
+                    "description": "Default Edit name, usually in the language of the country of\norigin.\nExample: \"Googlers, The\".",
+                    "type": "string"
+                },
+                "seasonId": {
+                    "description": "Google-generated ID identifying the season linked to the Edit.\nOnly available for TV Edits.\nExample: 'ster23ex'",
+                    "type": "string"
+                },
+                "titleLevelEidr": {
+                    "description": "Title-level EIDR ID.\nExample: \"10.5240/1489-49A2-3956-4B2D-FE16-5\".",
+                    "type": "string"
+                },
+                "seasonName": {
+                    "description": "Default Season name, usually in the language of the country of\norigin.\nOnly available for TV Edits\nExample: \"Googlers, The - A Brave New World\".",
+                    "type": "string"
+                },
+                "seasonNumber": {
+                    "description": "The number assigned to the season within a show.\nOnly available on TV Edits.\nExample: \"1\".",
+                    "type": "string"
+                },
+                "hasEstOffer": {
+                    "description": "Whether the Edit has a EST offer.",
+                    "type": "boolean"
+                },
+                "editLevelEidr": {
+                    "description": "Edit-level EIDR ID.\nExample: \"10.5240/1489-49A2-3956-4B2D-FE16-6\".",
+                    "type": "string"
+                },
+                "hasSdOffer": {
+                    "description": "Whether the Edit has a SD offer.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -840,120 +817,14 @@
             "description": "An Avail describes the Availability Window of a specific Edit in a given\ncountry, which means the period Google is allowed to sell or rent the Edit.\n\nAvails are exposed in EMA format Version 1.6b (available at\nhttp://www.movielabs.com/md/avails/)\n\nStudios can see the Avails for the Titles they own.\nPost-production houses cannot see any Avails.",
             "id": "Avail",
             "properties": {
-                "seriesTitleInternalAlias": {
-                    "description": "Title used by involved parties to refer to this series.\nOnly available on TV Avails.\nExample: \"Googlers, The\".",
-                    "type": "string"
-                },
-                "formatProfile": {
-                    "description": "Indicates the format profile covered by the transaction.",
-                    "enum": [
-                        "FORMAT_PROFILE_UNSPECIFIED",
-                        "SD",
-                        "HD",
-                        "UHD"
-                    ],
-                    "enumDescriptions": [
-                        "Value could not be determined, please contact technical support if\nit should.",
-                        "Standard-definition format.",
-                        "High-definition format.",
-                        "4K UHD."
-                    ],
-                    "type": "string"
-                },
-                "contentId": {
-                    "description": "Title Identifier. This should be the Title Level EIDR.\nExample: \"10.5240/1489-49A2-3956-4B2D-FE16-5\".",
-                    "type": "string"
-                },
-                "titleInternalAlias": {
-                    "description": "Title used by involved parties to refer to this content.\nExample: \"Googlers, The\".\nOnly available on Movie Avails.",
-                    "type": "string"
-                },
-                "ratingValue": {
-                    "description": "Value representing the rating.\nRatings should be formatted as per http://www.movielabs.com/md/ratings/\nExample: \"PG\"",
-                    "type": "string"
-                },
-                "storeLanguage": {
-                    "description": "Spoken language of the intended audience.\nLanguage shall be encoded in accordance with RFC 5646.\nExample: \"fr\".",
-                    "type": "string"
-                },
-                "captionExemption": {
-                    "description": "Communicating an exempt category as defined by FCC regulations.\nIt is not required for non-US Avails.\nExample: \"1\"",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "The name of the studio that owns the Edit referred in the Avail.\nThis is the equivalent of `studio_name` in other resources, but it follows\nthe EMA nomenclature.\nExample: \"Google Films\".",
-                    "type": "string"
-                },
-                "productId": {
-                    "description": "Edit Identifier. This should be the Edit Level EIDR.\nExample: \"10.2340/1489-49A2-3956-4B2D-FE16-6\"",
-                    "type": "string"
-                },
-                "seasonTitleInternalAlias": {
-                    "description": "Title used by involved parties to refer to this season.\nOnly available on TV Avails.\nExample: \"Googlers, The\".",
-                    "type": "string"
-                },
-                "episodeAltId": {
-                    "description": "Other identifier referring to the episode, as defined by partner.\nOnly available on TV avails.\nExample: \"rs_googlers_s1_3\".",
-                    "type": "string"
-                },
-                "priceValue": {
-                    "description": "Value to be applied to the pricing type.\nExample: \"4\" or \"2.99\"",
-                    "type": "string"
-                },
-                "territory": {
-                    "description": "ISO 3166-1 alpha-2 country code for the country or territory\nof this Avail.\nFor Avails, we use Territory in lieu of Country to comply with\nEMA specifications.\nBut please note that Territory and Country identify the same thing.\nExample: \"US\".",
-                    "type": "string"
-                },
-                "ratingReason": {
-                    "description": "Value representing the rating reason.\nRating reasons should be formatted as per\n[EMA ratings spec](http://www.movielabs.com/md/ratings/)\nand comma-separated for inclusion of multiple reasons.\nExample: \"L, S, V\"",
-                    "type": "string"
-                },
-                "workType": {
-                    "description": "Work type as enumerated in EMA.",
-                    "enum": [
-                        "TITLE_TYPE_UNSPECIFIED",
-                        "MOVIE",
-                        "SEASON",
-                        "EPISODE",
-                        "BUNDLE"
-                    ],
-                    "enumDescriptions": [
-                        "Value could not be determined, please contact technical support if\nit should.",
-                        "A movie picture.",
-                        "A season of a TV show.",
-                        "An episode of a TV show.",
-                        "A collection of movies, i.e. \"Googlers 1 and Googlers, the return\""
-                    ],
-                    "type": "string"
-                },
-                "availId": {
-                    "description": "ID internally generated by Google to uniquely identify an Avail.\nNot part of EMA Specs.",
-                    "type": "string"
-                },
-                "episodeTitleInternalAlias": {
-                    "description": "OPTIONAL.TV Only. Title used by involved parties to refer to this episode.\nOnly available on TV Avails.\nExample: \"Coding at Google\".",
-                    "type": "string"
-                },
-                "suppressionLiftDate": {
-                    "description": "First date an Edit could be publically announced as becoming\navailable at a specific future date in territory of Avail.\n*Not* the Avail start date or pre-order start date.\nFormat is YYYY-MM-DD.\nOnly available for pre-orders.\nExample: \"2012-12-10\"",
-                    "type": "string"
-                },
-                "seasonAltId": {
-                    "description": "Other identifier referring to the season, as defined by partner.\nOnly available on TV avails.\nExample: \"rs_googlers_s1\".",
-                    "type": "string"
-                },
-                "encodeId": {
-                    "description": "Manifestation Identifier. This should be the Manifestation\nLevel EIDR.\nExample: \"10.2340/1489-49A2-3956-4B2D-FE16-7\"",
-                    "type": "string"
-                },
-                "priceType": {
-                    "description": "Type of pricing that should be applied to this Avail\nbased on how the partner classify them.\nExample: \"Tier\", \"WSP\", \"SRP\", or \"Category\".",
-                    "type": "string"
-                },
                 "captionIncluded": {
                     "description": "Communicating if caption file will be delivered.",
                     "type": "boolean"
                 },
+                "seasonNumber": {
+                    "description": "The number assigned to the season within a series.\nOnly available on TV Avails.\nExample: \"1\".",
+                    "type": "string"
+                },
                 "licenseType": {
                     "description": "Type of transaction.",
                     "enum": [
@@ -972,10 +843,6 @@
                     ],
                     "type": "string"
                 },
-                "seasonNumber": {
-                    "description": "The number assigned to the season within a series.\nOnly available on TV Avails.\nExample: \"1\".",
-                    "type": "string"
-                },
                 "releaseDate": {
                     "description": "Release date of the Title in earliest released territory.\nTypically it is just the year, but it is free-form as per EMA spec.\nExamples: \"1979\", \"Oct 2014\"",
                     "type": "string"
@@ -1014,6 +881,139 @@
                 "episodeNumber": {
                     "description": "The number assigned to the episode within a season.\nOnly available on TV Avails.\nExample: \"3\".",
                     "type": "string"
+                },
+                "seriesTitleInternalAlias": {
+                    "description": "Title used by involved parties to refer to this series.\nOnly available on TV Avails.\nExample: \"Googlers, The\".",
+                    "type": "string"
+                },
+                "formatProfile": {
+                    "description": "Indicates the format profile covered by the transaction.",
+                    "enum": [
+                        "FORMAT_PROFILE_UNSPECIFIED",
+                        "SD",
+                        "HD",
+                        "UHD"
+                    ],
+                    "enumDescriptions": [
+                        "Value could not be determined, please contact technical support if\nit should.",
+                        "Standard-definition format.",
+                        "High-definition format.",
+                        "4K UHD."
+                    ],
+                    "type": "string"
+                },
+                "ratingValue": {
+                    "description": "Value representing the rating.\nRatings should be formatted as per http://www.movielabs.com/md/ratings/\nExample: \"PG\"",
+                    "type": "string"
+                },
+                "titleInternalAlias": {
+                    "description": "Title used by involved parties to refer to this content.\nExample: \"Googlers, The\".\nOnly available on Movie Avails.",
+                    "type": "string"
+                },
+                "contentId": {
+                    "description": "Title Identifier. This should be the Title Level EIDR.\nExample: \"10.5240/1489-49A2-3956-4B2D-FE16-5\".",
+                    "type": "string"
+                },
+                "storeLanguage": {
+                    "description": "Spoken language of the intended audience.\nLanguage shall be encoded in accordance with RFC 5646.\nExample: \"fr\".",
+                    "type": "string"
+                },
+                "captionExemption": {
+                    "description": "Communicating an exempt category as defined by FCC regulations.\nIt is not required for non-US Avails.\nExample: \"1\"",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "The name of the studio that owns the Edit referred in the Avail.\nThis is the equivalent of `studio_name` in other resources, but it follows\nthe EMA nomenclature.\nExample: \"Google Films\".",
+                    "type": "string"
+                },
+                "productId": {
+                    "description": "Edit Identifier. This should be the Edit Level EIDR.\nExample: \"10.2340/1489-49A2-3956-4B2D-FE16-6\"",
+                    "type": "string"
+                },
+                "seasonTitleInternalAlias": {
+                    "description": "Title used by involved parties to refer to this season.\nOnly available on TV Avails.\nExample: \"Googlers, The\".",
+                    "type": "string"
+                },
+                "priceValue": {
+                    "description": "Value to be applied to the pricing type.\nExample: \"4\" or \"2.99\"",
+                    "type": "string"
+                },
+                "episodeAltId": {
+                    "description": "Other identifier referring to the episode, as defined by partner.\nOnly available on TV avails.\nExample: \"rs_googlers_s1_3\".",
+                    "type": "string"
+                },
+                "territory": {
+                    "description": "ISO 3166-1 alpha-2 country code for the country or territory\nof this Avail.\nFor Avails, we use Territory in lieu of Country to comply with\nEMA specifications.\nBut please note that Territory and Country identify the same thing.\nExample: \"US\".",
+                    "type": "string"
+                },
+                "ratingReason": {
+                    "description": "Value representing the rating reason.\nRating reasons should be formatted as per\n[EMA ratings spec](http://www.movielabs.com/md/ratings/)\nand comma-separated for inclusion of multiple reasons.\nExample: \"L, S, V\"",
+                    "type": "string"
+                },
+                "availId": {
+                    "description": "ID internally generated by Google to uniquely identify an Avail.\nNot part of EMA Specs.",
+                    "type": "string"
+                },
+                "workType": {
+                    "description": "Work type as enumerated in EMA.",
+                    "enum": [
+                        "TITLE_TYPE_UNSPECIFIED",
+                        "MOVIE",
+                        "SEASON",
+                        "EPISODE",
+                        "BUNDLE"
+                    ],
+                    "enumDescriptions": [
+                        "Value could not be determined, please contact technical support if\nit should.",
+                        "A movie picture.",
+                        "A season of a TV show.",
+                        "An episode of a TV show.",
+                        "A collection of movies, i.e. \"Googlers 1 and Googlers, the return\""
+                    ],
+                    "type": "string"
+                },
+                "episodeTitleInternalAlias": {
+                    "description": "OPTIONAL.TV Only. Title used by involved parties to refer to this episode.\nOnly available on TV Avails.\nExample: \"Coding at Google\".",
+                    "type": "string"
+                },
+                "suppressionLiftDate": {
+                    "description": "First date an Edit could be publically announced as becoming\navailable at a specific future date in territory of Avail.\n*Not* the Avail start date or pre-order start date.\nFormat is YYYY-MM-DD.\nOnly available for pre-orders.\nExample: \"2012-12-10\"",
+                    "type": "string"
+                },
+                "seasonAltId": {
+                    "description": "Other identifier referring to the season, as defined by partner.\nOnly available on TV avails.\nExample: \"rs_googlers_s1\".",
+                    "type": "string"
+                },
+                "encodeId": {
+                    "description": "Manifestation Identifier. This should be the Manifestation\nLevel EIDR.\nExample: \"10.2340/1489-49A2-3956-4B2D-FE16-7\"",
+                    "type": "string"
+                },
+                "priceType": {
+                    "description": "Type of pricing that should be applied to this Avail\nbased on how the partner classify them.\nExample: \"Tier\", \"WSP\", \"SRP\", or \"Category\".",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListOrdersResponse": {
+            "description": "Response to the 'ListOrders' method.",
+            "id": "ListOrdersResponse",
+            "properties": {
+                "orders": {
+                    "description": "List of Orders that match the request criteria.",
+                    "items": {
+                        "$ref": "Order"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "See _List methods rules_ for info about this field.",
+                    "type": "string"
+                },
+                "totalSize": {
+                    "description": "See _List methods rules_ for more information about this field.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/pubsub__v1.json b/discovery/googleapis/pubsub__v1.json
index 4ce87b2..87a1bf7 100644
--- a/discovery/googleapis/pubsub__v1.json
+++ b/discovery/googleapis/pubsub__v1.json
@@ -28,34 +28,19 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "access_token": {
-            "description": "OAuth access token.",
-            "location": "query",
-            "type": "string"
-        },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-            "location": "query",
-            "type": "string"
-        },
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
         "pp": {
             "default": "true",
             "description": "Pretty-print response.",
             "location": "query",
             "type": "boolean"
         },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
+        "bearer_token": {
+            "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         },
@@ -80,6 +65,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -93,11 +83,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -113,6 +98,21 @@
             ],
             "location": "query",
             "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
@@ -206,168 +206,6 @@
                 },
                 "subscriptions": {
                     "methods": {
-                        "setIamPolicy": {
-                            "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.",
-                            "httpMethod": "POST",
-                            "id": "pubsub.projects.subscriptions.setIamPolicy",
-                            "parameterOrder": [
-                                "resource"
-                            ],
-                            "parameters": {
-                                "resource": {
-                                    "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+resource}:setIamPolicy",
-                            "request": {
-                                "$ref": "SetIamPolicyRequest"
-                            },
-                            "response": {
-                                "$ref": "Policy"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/pubsub"
-                            ]
-                        },
-                        "create": {
-                            "description": "Creates a subscription to a given topic.\nIf the subscription already exists, returns `ALREADY_EXISTS`.\nIf the corresponding topic doesn't exist, returns `NOT_FOUND`.\n\nIf the name is not provided in the request, the server will assign a random\nname for this subscription on the same project as the topic, conforming\nto the\n[resource name format](https://cloud.google.com/pubsub/docs/overview#names).\nThe generated name is populated in the returned Subscription object.\nNote that for REST API requests, you must specify a name in the request.",
-                            "httpMethod": "PUT",
-                            "id": "pubsub.projects.subscriptions.create",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "The name of the subscription. It must have the format\n`\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must\nstart with a letter, and contain only letters (`[A-Za-z]`), numbers\n(`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),\nplus (`+`) or percent signs (`%`). It must be between 3 and 255 characters\nin length, and it must not start with `\"goog\"`.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "request": {
-                                "$ref": "Subscription"
-                            },
-                            "response": {
-                                "$ref": "Subscription"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/pubsub"
-                            ]
-                        },
-                        "acknowledge": {
-                            "description": "Acknowledges the messages associated with the `ack_ids` in the\n`AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages\nfrom the subscription.\n\nAcknowledging a message whose ack deadline has expired may succeed,\nbut such a message may be redelivered later. Acknowledging a message more\nthan once will not result in an error.",
-                            "httpMethod": "POST",
-                            "id": "pubsub.projects.subscriptions.acknowledge",
-                            "parameterOrder": [
-                                "subscription"
-                            ],
-                            "parameters": {
-                                "subscription": {
-                                    "description": "The subscription whose message is being acknowledged.\nFormat is `projects/{project}/subscriptions/{sub}`.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+subscription}:acknowledge",
-                            "request": {
-                                "$ref": "AcknowledgeRequest"
-                            },
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/pubsub"
-                            ]
-                        },
-                        "modifyAckDeadline": {
-                            "description": "Modifies the ack deadline for a specific message. This method is useful\nto indicate that more time is needed to process a message by the\nsubscriber, or to make the message available for redelivery if the\nprocessing was interrupted. Note that this does not modify the\nsubscription-level `ackDeadlineSeconds` used for subsequent messages.",
-                            "httpMethod": "POST",
-                            "id": "pubsub.projects.subscriptions.modifyAckDeadline",
-                            "parameterOrder": [
-                                "subscription"
-                            ],
-                            "parameters": {
-                                "subscription": {
-                                    "description": "The name of the subscription.\nFormat is `projects/{project}/subscriptions/{sub}`.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+subscription}:modifyAckDeadline",
-                            "request": {
-                                "$ref": "ModifyAckDeadlineRequest"
-                            },
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/pubsub"
-                            ]
-                        },
-                        "getIamPolicy": {
-                            "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
-                            "httpMethod": "GET",
-                            "id": "pubsub.projects.subscriptions.getIamPolicy",
-                            "parameterOrder": [
-                                "resource"
-                            ],
-                            "parameters": {
-                                "resource": {
-                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+resource}:getIamPolicy",
-                            "response": {
-                                "$ref": "Policy"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/pubsub"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets the configuration details of a subscription.",
-                            "httpMethod": "GET",
-                            "id": "pubsub.projects.subscriptions.get",
-                            "parameterOrder": [
-                                "subscription"
-                            ],
-                            "parameters": {
-                                "subscription": {
-                                    "description": "The name of the subscription to get.\nFormat is `projects/{project}/subscriptions/{sub}`.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+subscription}",
-                            "response": {
-                                "$ref": "Subscription"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/pubsub"
-                            ]
-                        },
                         "testIamPermissions": {
                             "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.",
                             "httpMethod": "POST",
@@ -424,6 +262,31 @@
                                 "https://www.googleapis.com/auth/pubsub"
                             ]
                         },
+                        "delete": {
+                            "description": "Deletes an existing subscription. All messages retained in the subscription\nare immediately dropped. Calls to `Pull` after deletion will return\n`NOT_FOUND`. After a subscription is deleted, a new one may be created with\nthe same name, but the new one has no association with the old\nsubscription or its topic unless the same topic is specified.",
+                            "httpMethod": "DELETE",
+                            "id": "pubsub.projects.subscriptions.delete",
+                            "parameterOrder": [
+                                "subscription"
+                            ],
+                            "parameters": {
+                                "subscription": {
+                                    "description": "The subscription to delete.\nFormat is `projects/{project}/subscriptions/{sub}`.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+subscription}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/pubsub"
+                            ]
+                        },
                         "pull": {
                             "description": "Pulls messages from the server. Returns an empty list if there are no\nmessages available in the backlog. The server may return `UNAVAILABLE` if\nthere are too many concurrent pull requests pending for the given\nsubscription.",
                             "httpMethod": "POST",
@@ -452,31 +315,6 @@
                                 "https://www.googleapis.com/auth/pubsub"
                             ]
                         },
-                        "delete": {
-                            "description": "Deletes an existing subscription. All messages retained in the subscription\nare immediately dropped. Calls to `Pull` after deletion will return\n`NOT_FOUND`. After a subscription is deleted, a new one may be created with\nthe same name, but the new one has no association with the old\nsubscription or its topic unless the same topic is specified.",
-                            "httpMethod": "DELETE",
-                            "id": "pubsub.projects.subscriptions.delete",
-                            "parameterOrder": [
-                                "subscription"
-                            ],
-                            "parameters": {
-                                "subscription": {
-                                    "description": "The subscription to delete.\nFormat is `projects/{project}/subscriptions/{sub}`.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+subscription}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/pubsub"
-                            ]
-                        },
                         "list": {
                             "description": "Lists matching subscriptions.",
                             "httpMethod": "GET",
@@ -485,13 +323,6 @@
                                 "project"
                             ],
                             "parameters": {
-                                "project": {
-                                    "description": "The name of the cloud project that subscriptions belong to.\nFormat is `projects/{project}`.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
                                 "pageToken": {
                                     "description": "The value returned by the last `ListSubscriptionsResponse`; indicates that\nthis is a continuation of a prior `ListSubscriptions` call, and that the\nsystem should return the next page of data.",
                                     "location": "query",
@@ -502,6 +333,13 @@
                                     "format": "int32",
                                     "location": "query",
                                     "type": "integer"
+                                },
+                                "project": {
+                                    "description": "The name of the cloud project that subscriptions belong to.\nFormat is `projects/{project}`.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
                                 }
                             },
                             "path": "v1/{+project}/subscriptions",
@@ -512,51 +350,11 @@
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/pubsub"
                             ]
-                        }
-                    }
-                },
-                "topics": {
-                    "methods": {
-                        "list": {
-                            "description": "Lists matching topics.",
-                            "httpMethod": "GET",
-                            "id": "pubsub.projects.topics.list",
-                            "parameterOrder": [
-                                "project"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "The value returned by the last `ListTopicsResponse`; indicates that this is\na continuation of a prior `ListTopics` call, and that the system should\nreturn the next page of data.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Maximum number of topics to return.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "project": {
-                                    "description": "The name of the cloud project that topics belong to.\nFormat is `projects/{project}`.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+project}/topics",
-                            "response": {
-                                "$ref": "ListTopicsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/pubsub"
-                            ]
                         },
                         "setIamPolicy": {
                             "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.",
                             "httpMethod": "POST",
-                            "id": "pubsub.projects.topics.setIamPolicy",
+                            "id": "pubsub.projects.subscriptions.setIamPolicy",
                             "parameterOrder": [
                                 "resource"
                             ],
@@ -564,7 +362,7 @@
                                 "resource": {
                                     "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
                                     "location": "path",
-                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
+                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
                                     "required": true,
                                     "type": "string"
                                 }
@@ -582,27 +380,27 @@
                             ]
                         },
                         "create": {
-                            "description": "Creates the given topic with the given name.",
+                            "description": "Creates a subscription to a given topic.\nIf the subscription already exists, returns `ALREADY_EXISTS`.\nIf the corresponding topic doesn't exist, returns `NOT_FOUND`.\n\nIf the name is not provided in the request, the server will assign a random\nname for this subscription on the same project as the topic, conforming\nto the\n[resource name format](https://cloud.google.com/pubsub/docs/overview#names).\nThe generated name is populated in the returned Subscription object.\nNote that for REST API requests, you must specify a name in the request.",
                             "httpMethod": "PUT",
-                            "id": "pubsub.projects.topics.create",
+                            "id": "pubsub.projects.subscriptions.create",
                             "parameterOrder": [
                                 "name"
                             ],
                             "parameters": {
                                 "name": {
-                                    "description": "The name of the topic. It must have the format\n`\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter,\nand contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),\nunderscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent\nsigns (`%`). It must be between 3 and 255 characters in length, and it\nmust not start with `\"goog\"`.",
+                                    "description": "The name of the subscription. It must have the format\n`\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must\nstart with a letter, and contain only letters (`[A-Za-z]`), numbers\n(`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),\nplus (`+`) or percent signs (`%`). It must be between 3 and 255 characters\nin length, and it must not start with `\"goog\"`.",
                                     "location": "path",
-                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
+                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
                                     "required": true,
                                     "type": "string"
                                 }
                             },
                             "path": "v1/{+name}",
                             "request": {
-                                "$ref": "Topic"
+                                "$ref": "Subscription"
                             },
                             "response": {
-                                "$ref": "Topic"
+                                "$ref": "Subscription"
                             },
                             "scopes": [
                                 "https://www.googleapis.com/auth/cloud-platform",
@@ -612,6 +410,116 @@
                         "getIamPolicy": {
                             "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
                             "httpMethod": "GET",
+                            "id": "pubsub.projects.subscriptions.getIamPolicy",
+                            "parameterOrder": [
+                                "resource"
+                            ],
+                            "parameters": {
+                                "resource": {
+                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+resource}:getIamPolicy",
+                            "response": {
+                                "$ref": "Policy"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/pubsub"
+                            ]
+                        },
+                        "modifyAckDeadline": {
+                            "description": "Modifies the ack deadline for a specific message. This method is useful\nto indicate that more time is needed to process a message by the\nsubscriber, or to make the message available for redelivery if the\nprocessing was interrupted. Note that this does not modify the\nsubscription-level `ackDeadlineSeconds` used for subsequent messages.",
+                            "httpMethod": "POST",
+                            "id": "pubsub.projects.subscriptions.modifyAckDeadline",
+                            "parameterOrder": [
+                                "subscription"
+                            ],
+                            "parameters": {
+                                "subscription": {
+                                    "description": "The name of the subscription.\nFormat is `projects/{project}/subscriptions/{sub}`.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+subscription}:modifyAckDeadline",
+                            "request": {
+                                "$ref": "ModifyAckDeadlineRequest"
+                            },
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/pubsub"
+                            ]
+                        },
+                        "acknowledge": {
+                            "description": "Acknowledges the messages associated with the `ack_ids` in the\n`AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages\nfrom the subscription.\n\nAcknowledging a message whose ack deadline has expired may succeed,\nbut such a message may be redelivered later. Acknowledging a message more\nthan once will not result in an error.",
+                            "httpMethod": "POST",
+                            "id": "pubsub.projects.subscriptions.acknowledge",
+                            "parameterOrder": [
+                                "subscription"
+                            ],
+                            "parameters": {
+                                "subscription": {
+                                    "description": "The subscription whose message is being acknowledged.\nFormat is `projects/{project}/subscriptions/{sub}`.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+subscription}:acknowledge",
+                            "request": {
+                                "$ref": "AcknowledgeRequest"
+                            },
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/pubsub"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets the configuration details of a subscription.",
+                            "httpMethod": "GET",
+                            "id": "pubsub.projects.subscriptions.get",
+                            "parameterOrder": [
+                                "subscription"
+                            ],
+                            "parameters": {
+                                "subscription": {
+                                    "description": "The name of the subscription to get.\nFormat is `projects/{project}/subscriptions/{sub}`.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+subscription}",
+                            "response": {
+                                "$ref": "Subscription"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/pubsub"
+                            ]
+                        }
+                    }
+                },
+                "topics": {
+                    "methods": {
+                        "getIamPolicy": {
+                            "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
+                            "httpMethod": "GET",
                             "id": "pubsub.projects.topics.getIamPolicy",
                             "parameterOrder": [
                                 "resource"
@@ -739,6 +647,98 @@
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/pubsub"
                             ]
+                        },
+                        "list": {
+                            "description": "Lists matching topics.",
+                            "httpMethod": "GET",
+                            "id": "pubsub.projects.topics.list",
+                            "parameterOrder": [
+                                "project"
+                            ],
+                            "parameters": {
+                                "pageSize": {
+                                    "description": "Maximum number of topics to return.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "project": {
+                                    "description": "The name of the cloud project that topics belong to.\nFormat is `projects/{project}`.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "The value returned by the last `ListTopicsResponse`; indicates that this is\na continuation of a prior `ListTopics` call, and that the system should\nreturn the next page of data.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+project}/topics",
+                            "response": {
+                                "$ref": "ListTopicsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/pubsub"
+                            ]
+                        },
+                        "create": {
+                            "description": "Creates the given topic with the given name.",
+                            "httpMethod": "PUT",
+                            "id": "pubsub.projects.topics.create",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The name of the topic. It must have the format\n`\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter,\nand contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),\nunderscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent\nsigns (`%`). It must be between 3 and 255 characters in length, and it\nmust not start with `\"goog\"`.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "request": {
+                                "$ref": "Topic"
+                            },
+                            "response": {
+                                "$ref": "Topic"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/pubsub"
+                            ]
+                        },
+                        "setIamPolicy": {
+                            "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.",
+                            "httpMethod": "POST",
+                            "id": "pubsub.projects.topics.setIamPolicy",
+                            "parameterOrder": [
+                                "resource"
+                            ],
+                            "parameters": {
+                                "resource": {
+                                    "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+resource}:setIamPolicy",
+                            "request": {
+                                "$ref": "SetIamPolicyRequest"
+                            },
+                            "response": {
+                                "$ref": "Policy"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/pubsub"
+                            ]
                         }
                     },
                     "resources": {
@@ -752,11 +752,6 @@
                                         "topic"
                                     ],
                                     "parameters": {
-                                        "pageToken": {
-                                            "description": "The value returned by the last `ListTopicSubscriptionsResponse`; indicates\nthat this is a continuation of a prior `ListTopicSubscriptions` call, and\nthat the system should return the next page of data.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
                                         "pageSize": {
                                             "description": "Maximum number of subscription names to return.",
                                             "format": "int32",
@@ -769,6 +764,11 @@
                                             "pattern": "^projects/[^/]+/topics/[^/]+$",
                                             "required": true,
                                             "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "The value returned by the last `ListTopicSubscriptionsResponse`; indicates\nthat this is a continuation of a prior `ListTopicSubscriptions` call, and\nthat the system should return the next page of data.",
+                                            "location": "query",
+                                            "type": "string"
                                         }
                                     },
                                     "path": "v1/{+topic}/subscriptions",
@@ -787,24 +787,24 @@
             }
         }
     },
-    "revision": "20170918",
+    "revision": "20171003",
     "rootUrl": "https://pubsub.googleapis.com/",
     "schemas": {
         "ModifyAckDeadlineRequest": {
             "description": "Request for the ModifyAckDeadline method.",
             "id": "ModifyAckDeadlineRequest",
             "properties": {
-                "ackDeadlineSeconds": {
-                    "description": "The new ack deadline with respect to the time this request was sent to\nthe Pub/Sub system. For example, if the value is 10, the new\nack deadline will expire 10 seconds after the `ModifyAckDeadline` call\nwas made. Specifying zero may immediately make the message available for\nanother pull request.\nThe minimum deadline you can specify is 0 seconds.\nThe maximum deadline you can specify is 600 seconds (10 minutes).",
-                    "format": "int32",
-                    "type": "integer"
-                },
                 "ackIds": {
                     "description": "List of acknowledgment IDs.",
                     "items": {
                         "type": "string"
                     },
                     "type": "array"
+                },
+                "ackDeadlineSeconds": {
+                    "description": "The new ack deadline with respect to the time this request was sent to\nthe Pub/Sub system. For example, if the value is 10, the new\nack deadline will expire 10 seconds after the `ModifyAckDeadline` call\nwas made. Specifying zero may immediately make the message available for\nanother pull request.\nThe minimum deadline you can specify is 0 seconds.\nThe maximum deadline you can specify is 600 seconds (10 minutes).",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -835,11 +835,6 @@
             "description": "A message data and its attributes. The message payload must not be empty;\nit must contain either a non-empty data field, or at least one attribute.",
             "id": "PubsubMessage",
             "properties": {
-                "data": {
-                    "description": "The message payload.",
-                    "format": "byte",
-                    "type": "string"
-                },
                 "messageId": {
                     "description": "ID of this message, assigned by the server when the message is published.\nGuaranteed to be unique within the topic. This value may be read by a\nsubscriber that receives a `PubsubMessage` via a `Pull` call or a push\ndelivery. It must not be populated by the publisher in a `Publish` call.",
                     "type": "string"
@@ -855,6 +850,11 @@
                     "description": "The time at which the message was published, populated by the server when\nit receives the `Publish` call. It must not be populated by the\npublisher in a `Publish` call.",
                     "format": "google-datetime",
                     "type": "string"
+                },
+                "data": {
+                    "description": "The message payload.",
+                    "format": "byte",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -877,14 +877,18 @@
             },
             "type": "object"
         },
-        "AcknowledgeRequest": {
-            "description": "Request for the Acknowledge method.",
-            "id": "AcknowledgeRequest",
+        "ListTopicsResponse": {
+            "description": "Response for the `ListTopics` method.",
+            "id": "ListTopicsResponse",
             "properties": {
-                "ackIds": {
-                    "description": "The acknowledgment ID for the messages being acknowledged that was returned\nby the Pub/Sub system in the `Pull` response. Must not be empty.",
+                "nextPageToken": {
+                    "description": "If not empty, indicates that there may be more topics that match the\nrequest; this value should be passed in a new `ListTopicsRequest`.",
+                    "type": "string"
+                },
+                "topics": {
+                    "description": "The resulting topics.",
                     "items": {
-                        "type": "string"
+                        "$ref": "Topic"
                     },
                     "type": "array"
                 }
@@ -897,20 +901,16 @@
             "properties": {},
             "type": "object"
         },
-        "ListTopicsResponse": {
-            "description": "Response for the `ListTopics` method.",
-            "id": "ListTopicsResponse",
+        "AcknowledgeRequest": {
+            "description": "Request for the Acknowledge method.",
+            "id": "AcknowledgeRequest",
             "properties": {
-                "topics": {
-                    "description": "The resulting topics.",
+                "ackIds": {
+                    "description": "The acknowledgment ID for the messages being acknowledged that was returned\nby the Pub/Sub system in the `Pull` response. Must not be empty.",
                     "items": {
-                        "$ref": "Topic"
+                        "type": "string"
                     },
                     "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "If not empty, indicates that there may be more topics that match the\nrequest; this value should be passed in a new `ListTopicsRequest`.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -951,13 +951,13 @@
             "description": "A message and its corresponding acknowledgment ID.",
             "id": "ReceivedMessage",
             "properties": {
-                "message": {
-                    "$ref": "PubsubMessage",
-                    "description": "The message."
-                },
                 "ackId": {
                     "description": "This ID can be used to acknowledge the received message.",
                     "type": "string"
+                },
+                "message": {
+                    "$ref": "PubsubMessage",
+                    "description": "The message."
                 }
             },
             "type": "object"
@@ -1060,10 +1060,6 @@
             "description": "A subscription resource.",
             "id": "Subscription",
             "properties": {
-                "pushConfig": {
-                    "$ref": "PushConfig",
-                    "description": "If push delivery is used with this subscription, this field is\nused to configure it. An empty `pushConfig` signifies that the subscriber\nwill pull and ack messages using API methods."
-                },
                 "ackDeadlineSeconds": {
                     "description": "This value is the maximum time after a subscriber receives a message\nbefore the subscriber should acknowledge the message. After message\ndelivery but before the ack deadline expires and before the message is\nacknowledged, it is an outstanding message and will not be delivered\nagain during that time (on a best-effort basis).\n\nFor pull subscriptions, this value is used as the initial value for the ack\ndeadline. To override this value for a given message, call\n`ModifyAckDeadline` with the corresponding `ack_id` if using\nnon-streaming pull or send the `ack_id` in a\n`StreamingModifyAckDeadlineRequest` if using streaming pull.\nThe minimum custom deadline you can specify is 10 seconds.\nThe maximum custom deadline you can specify is 600 seconds (10 minutes).\nIf this parameter is 0, a default value of 10 seconds is used.\n\nFor push delivery, this value is also used to set the request timeout for\nthe call to the push endpoint.\n\nIf the subscriber never acknowledges the message, the Pub/Sub\nsystem will eventually redeliver the message.",
                     "format": "int32",
@@ -1076,6 +1072,10 @@
                 "topic": {
                     "description": "The name of the topic from which this subscription is receiving messages.\nFormat is `projects/{project}/topics/{topic}`.\nThe value of this field will be `_deleted-topic_` if the topic has been\ndeleted.",
                     "type": "string"
+                },
+                "pushConfig": {
+                    "$ref": "PushConfig",
+                    "description": "If push delivery is used with this subscription, this field is\nused to configure it. An empty `pushConfig` signifies that the subscriber\nwill pull and ack messages using API methods."
                 }
             },
             "type": "object"
@@ -1094,6 +1094,17 @@
             },
             "type": "object"
         },
+        "Topic": {
+            "description": "A topic resource.",
+            "id": "Topic",
+            "properties": {
+                "name": {
+                    "description": "The name of the topic. It must have the format\n`\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter,\nand contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),\nunderscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent\nsigns (`%`). It must be between 3 and 255 characters in length, and it\nmust not start with `\"goog\"`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "Policy": {
             "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
             "id": "Policy",
@@ -1117,17 +1128,6 @@
                 }
             },
             "type": "object"
-        },
-        "Topic": {
-            "description": "A topic resource.",
-            "id": "Topic",
-            "properties": {
-                "name": {
-                    "description": "The name of the topic. It must have the format\n`\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter,\nand contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),\nunderscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent\nsigns (`%`). It must be between 3 and 255 characters in length, and it\nmust not start with `\"goog\"`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/qpxExpress__v1.json b/discovery/googleapis/qpxExpress__v1.json
deleted file mode 100644
index 9f43aa2..0000000
--- a/discovery/googleapis/qpxExpress__v1.json
+++ /dev/null
@@ -1,899 +0,0 @@
-{
-    "basePath": "/qpxExpress/v1/trips/",
-    "baseUrl": "https://www.googleapis.com/qpxExpress/v1/trips/",
-    "batchPath": "batch/qpxExpress/v1",
-    "canonicalName": "QPX Express",
-    "description": "Finds the least expensive flights between an origin and a destination.",
-    "discoveryVersion": "v1",
-    "documentationLink": "http://developers.google.com/qpx-express",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/2IuExnuYIfWTklADntnFv6u9T0g\"",
-    "icons": {
-        "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": "qpxExpress:v1",
-    "kind": "discovery#restDescription",
-    "name": "qpxExpress",
-    "ownerDomain": "google.com",
-    "ownerName": "Google",
-    "parameters": {
-        "alt": {
-            "default": "json",
-            "description": "Data format for the response.",
-            "enum": [
-                "json"
-            ],
-            "enumDescriptions": [
-                "Responses with Content-Type of application/json"
-            ],
-            "location": "query",
-            "type": "string"
-        },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
-            "location": "query",
-            "type": "string"
-        },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "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. Overrides userIp if both are provided.",
-            "location": "query",
-            "type": "string"
-        },
-        "userIp": {
-            "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.",
-            "location": "query",
-            "type": "string"
-        }
-    },
-    "protocol": "rest",
-    "resources": {
-        "trips": {
-            "methods": {
-                "search": {
-                    "description": "Returns a list of flights.",
-                    "httpMethod": "POST",
-                    "id": "qpxExpress.trips.search",
-                    "path": "search",
-                    "request": {
-                        "$ref": "TripsSearchRequest"
-                    },
-                    "response": {
-                        "$ref": "TripsSearchResponse"
-                    }
-                }
-            }
-        }
-    },
-    "revision": "20160708",
-    "rootUrl": "https://www.googleapis.com/",
-    "schemas": {
-        "AircraftData": {
-            "description": "The make, model, and type of an aircraft.",
-            "id": "AircraftData",
-            "properties": {
-                "code": {
-                    "description": "The aircraft code. For example, for a Boeing 777 the code would be 777.",
-                    "type": "string"
-                },
-                "kind": {
-                    "default": "qpxexpress#aircraftData",
-                    "description": "Identifies this as an aircraftData object. Value: the fixed string qpxexpress#aircraftData",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of an aircraft, for example Boeing 777.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AirportData": {
-            "description": "An airport.",
-            "id": "AirportData",
-            "properties": {
-                "city": {
-                    "description": "The city code an airport is located in. For example, for JFK airport, this is NYC.",
-                    "type": "string"
-                },
-                "code": {
-                    "description": "An airport's code. For example, for Boston Logan airport, this is BOS.",
-                    "type": "string"
-                },
-                "kind": {
-                    "default": "qpxexpress#airportData",
-                    "description": "Identifies this as an airport object. Value: the fixed string qpxexpress#airportData.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of an airport. For example, for airport BOS the name is \"Boston Logan International\".",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "BagDescriptor": {
-            "description": "Information about an item of baggage.",
-            "id": "BagDescriptor",
-            "properties": {
-                "commercialName": {
-                    "description": "Provides the commercial name for an optional service.",
-                    "type": "string"
-                },
-                "count": {
-                    "description": "How many of this type of bag will be checked on this flight.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "description": {
-                    "description": "A description of the baggage.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "kind": {
-                    "default": "qpxexpress#bagDescriptor",
-                    "description": "Identifies this as a baggage object. Value: the fixed string qpxexpress#bagDescriptor.",
-                    "type": "string"
-                },
-                "subcode": {
-                    "description": "The standard IATA subcode used to identify this optional service.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CarrierData": {
-            "description": "Information about a carrier (ie. an airline, bus line, railroad, etc) that might be useful to display to an end-user.",
-            "id": "CarrierData",
-            "properties": {
-                "code": {
-                    "description": "The IATA designator of a carrier (airline, etc). For example, for American Airlines, the code is AA.",
-                    "type": "string"
-                },
-                "kind": {
-                    "default": "qpxexpress#carrierData",
-                    "description": "Identifies this as a kind of carrier (ie. an airline, bus line, railroad, etc). Value: the fixed string qpxexpress#carrierData.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The long, full name of a carrier. For example: American Airlines.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CityData": {
-            "description": "Information about a city that might be useful to an end-user; typically the city of an airport.",
-            "id": "CityData",
-            "properties": {
-                "code": {
-                    "description": "The IATA character ID of a city. For example, for Boston this is BOS.",
-                    "type": "string"
-                },
-                "country": {
-                    "description": "The two-character country code of the country the city is located in. For example, US for the United States of America.",
-                    "type": "string"
-                },
-                "kind": {
-                    "default": "qpxexpress#cityData",
-                    "description": "Identifies this as a city, typically with one or more airports. Value: the fixed string qpxexpress#cityData.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The full name of a city. An example would be: New York.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Data": {
-            "description": "Detailed information about components found in the solutions of this response, including a trip's airport, city, taxes, airline, and aircraft.",
-            "id": "Data",
-            "properties": {
-                "aircraft": {
-                    "description": "The aircraft that is flying between an origin and destination.",
-                    "items": {
-                        "$ref": "AircraftData"
-                    },
-                    "type": "array"
-                },
-                "airport": {
-                    "description": "The airport of an origin or destination.",
-                    "items": {
-                        "$ref": "AirportData"
-                    },
-                    "type": "array"
-                },
-                "carrier": {
-                    "description": "The airline carrier of the aircraft flying between an origin and destination. Allowed values are IATA carrier codes.",
-                    "items": {
-                        "$ref": "CarrierData"
-                    },
-                    "type": "array"
-                },
-                "city": {
-                    "description": "The city that is either the origin or destination of part of a trip.",
-                    "items": {
-                        "$ref": "CityData"
-                    },
-                    "type": "array"
-                },
-                "kind": {
-                    "default": "qpxexpress#data",
-                    "description": "Identifies this as QPX Express response resource, including a trip's airport, city, taxes, airline, and aircraft. Value: the fixed string qpxexpress#data.",
-                    "type": "string"
-                },
-                "tax": {
-                    "description": "The taxes due for flying between an origin and a destination.",
-                    "items": {
-                        "$ref": "TaxData"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "FareInfo": {
-            "description": "Complete information about a fare used in the solution to a low-fare search query. In the airline industry a fare is a price an airline charges for one-way travel between two points. A fare typically contains a carrier code, two city codes, a price, and a fare basis. (A fare basis is a one-to-eight character alphanumeric code used to identify a fare.)",
-            "id": "FareInfo",
-            "properties": {
-                "basisCode": {
-                    "type": "string"
-                },
-                "carrier": {
-                    "description": "The carrier of the aircraft or other vehicle commuting between two points.",
-                    "type": "string"
-                },
-                "destination": {
-                    "description": "The city code of the city the trip ends at.",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "A unique identifier of the fare.",
-                    "type": "string"
-                },
-                "kind": {
-                    "default": "qpxexpress#fareInfo",
-                    "description": "Identifies this as a fare object. Value: the fixed string qpxexpress#fareInfo.",
-                    "type": "string"
-                },
-                "origin": {
-                    "description": "The city code of the city the trip begins at.",
-                    "type": "string"
-                },
-                "private": {
-                    "description": "Whether this is a private fare, for example one offered only to select customers rather than the general public.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "FlightInfo": {
-            "description": "A flight is a sequence of legs with the same airline carrier and flight number. (A leg is the smallest unit of travel, in the case of a flight a takeoff immediately followed by a landing at two set points on a particular carrier with a particular flight number.) The naive view is that a flight is scheduled travel of an aircraft between two points, with possibly intermediate stops, but carriers will frequently list flights that require a change of aircraft between legs.",
-            "id": "FlightInfo",
-            "properties": {
-                "carrier": {
-                    "type": "string"
-                },
-                "number": {
-                    "description": "The flight number.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "FreeBaggageAllowance": {
-            "description": "Information about free baggage allowed on one segment of a trip.",
-            "id": "FreeBaggageAllowance",
-            "properties": {
-                "bagDescriptor": {
-                    "description": "A representation of a type of bag, such as an ATPCo subcode, Commercial Name, or other description.",
-                    "items": {
-                        "$ref": "BagDescriptor"
-                    },
-                    "type": "array"
-                },
-                "kilos": {
-                    "description": "The maximum number of kilos all the free baggage together may weigh.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "kilosPerPiece": {
-                    "description": "The maximum number of kilos any one piece of baggage may weigh.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "kind": {
-                    "default": "qpxexpress#freeBaggageAllowance",
-                    "description": "Identifies this as free baggage object, allowed on one segment of a trip. Value: the fixed string qpxexpress#freeBaggageAllowance.",
-                    "type": "string"
-                },
-                "pieces": {
-                    "description": "The number of free pieces of baggage allowed.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "pounds": {
-                    "description": "The number of pounds of free baggage allowed.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "LegInfo": {
-            "description": "Information about a leg. (A leg is the smallest unit of travel, in the case of a flight a takeoff immediately followed by a landing at two set points on a particular carrier with a particular flight number.)",
-            "id": "LegInfo",
-            "properties": {
-                "aircraft": {
-                    "description": "The aircraft (or bus, ferry, railcar, etc) travelling between the two points of this leg.",
-                    "type": "string"
-                },
-                "arrivalTime": {
-                    "description": "The scheduled time of arrival at the destination of the leg, local to the point of arrival.",
-                    "type": "string"
-                },
-                "changePlane": {
-                    "description": "Whether you have to change planes following this leg. Only applies to the next leg.",
-                    "type": "boolean"
-                },
-                "connectionDuration": {
-                    "description": "Duration of a connection following this leg, in minutes.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "departureTime": {
-                    "description": "The scheduled departure time of the leg, local to the point of departure.",
-                    "type": "string"
-                },
-                "destination": {
-                    "description": "The leg destination as a city and airport.",
-                    "type": "string"
-                },
-                "destinationTerminal": {
-                    "description": "The terminal the flight is scheduled to arrive at.",
-                    "type": "string"
-                },
-                "duration": {
-                    "description": "The scheduled travelling time from the origin to the destination.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "id": {
-                    "description": "An identifier that uniquely identifies this leg in the solution.",
-                    "type": "string"
-                },
-                "kind": {
-                    "default": "qpxexpress#legInfo",
-                    "description": "Identifies this as a leg object. A leg is the smallest unit of travel, in the case of a flight a takeoff immediately followed by a landing at two set points on a particular carrier with a particular flight number. Value: the fixed string qpxexpress#legInfo.",
-                    "type": "string"
-                },
-                "meal": {
-                    "description": "A simple, general description of the meal(s) served on the flight, for example: \"Hot meal\".",
-                    "type": "string"
-                },
-                "mileage": {
-                    "description": "The number of miles in this leg.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "onTimePerformance": {
-                    "description": "In percent, the published on time performance on this leg.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "operatingDisclosure": {
-                    "description": "Department of Transportation disclosure information on the actual operator of a flight in a code share. (A code share refers to a marketing agreement between two carriers, where one carrier will list in its schedules (and take bookings for) flights that are actually operated by another carrier.)",
-                    "type": "string"
-                },
-                "origin": {
-                    "description": "The leg origin as a city and airport.",
-                    "type": "string"
-                },
-                "originTerminal": {
-                    "description": "The terminal the flight is scheduled to depart from.",
-                    "type": "string"
-                },
-                "secure": {
-                    "description": "Whether passenger information must be furnished to the United States Transportation Security Administration (TSA) prior to departure.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "PassengerCounts": {
-            "description": "The number and type of passengers. Unfortunately the definition of an infant, child, adult, and senior citizen varies across carriers and reservation systems.",
-            "id": "PassengerCounts",
-            "properties": {
-                "adultCount": {
-                    "description": "The number of passengers that are adults.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "childCount": {
-                    "description": "The number of passengers that are children.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "infantInLapCount": {
-                    "description": "The number of passengers that are infants travelling in the lap of an adult.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "infantInSeatCount": {
-                    "description": "The number of passengers that are infants each assigned a seat.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "kind": {
-                    "default": "qpxexpress#passengerCounts",
-                    "description": "Identifies this as a passenger count object, representing the number of passengers. Value: the fixed string qpxexpress#passengerCounts.",
-                    "type": "string"
-                },
-                "seniorCount": {
-                    "description": "The number of passengers that are senior citizens.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "PricingInfo": {
-            "description": "The price of one or more travel segments. The currency used to purchase tickets is usually determined by the sale/ticketing city or the sale/ticketing country, unless none are specified, in which case it defaults to that of the journey origin country.",
-            "id": "PricingInfo",
-            "properties": {
-                "baseFareTotal": {
-                    "description": "The total fare in the base fare currency (the currency of the country of origin). This element is only present when the sales currency and the currency of the country of commencement are different.",
-                    "type": "string"
-                },
-                "fare": {
-                    "description": "The fare used to price one or more segments.",
-                    "items": {
-                        "$ref": "FareInfo"
-                    },
-                    "type": "array"
-                },
-                "fareCalculation": {
-                    "description": "The horizontal fare calculation. This is a field on a ticket that displays all of the relevant items that go into the calculation of the fare.",
-                    "type": "string"
-                },
-                "kind": {
-                    "default": "qpxexpress#pricingInfo",
-                    "description": "Identifies this as a pricing object, representing the price of one or more travel segments. Value: the fixed string qpxexpress#pricingInfo.",
-                    "type": "string"
-                },
-                "latestTicketingTime": {
-                    "description": "The latest ticketing time for this pricing assuming the reservation occurs at ticketing time and there is no change in fares/rules. The time is local to the point of sale (POS).",
-                    "type": "string"
-                },
-                "passengers": {
-                    "$ref": "PassengerCounts",
-                    "description": "The number of passengers to which this price applies."
-                },
-                "ptc": {
-                    "description": "The passenger type code for this pricing. An alphanumeric code used by a carrier to restrict fares to certain categories of passenger. For instance, a fare might be valid only for senior citizens.",
-                    "type": "string"
-                },
-                "refundable": {
-                    "description": "Whether the fares on this pricing are refundable.",
-                    "type": "boolean"
-                },
-                "saleFareTotal": {
-                    "description": "The total fare in the sale or equivalent currency.",
-                    "type": "string"
-                },
-                "saleTaxTotal": {
-                    "description": "The taxes in the sale or equivalent currency.",
-                    "type": "string"
-                },
-                "saleTotal": {
-                    "description": "Total per-passenger price (fare and tax) in the sale or equivalent currency.",
-                    "type": "string"
-                },
-                "segmentPricing": {
-                    "description": "The per-segment price and baggage information.",
-                    "items": {
-                        "$ref": "SegmentPricing"
-                    },
-                    "type": "array"
-                },
-                "tax": {
-                    "description": "The taxes used to calculate the tax total per ticket.",
-                    "items": {
-                        "$ref": "TaxInfo"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "SegmentInfo": {
-            "description": "Details of a segment of a flight; a segment is one or more consecutive legs on the same flight. For example a hypothetical flight ZZ001, from DFW to OGG, would have one segment with two legs: DFW to HNL (leg 1), HNL to OGG (leg 2), and DFW to OGG (legs 1 and 2).",
-            "id": "SegmentInfo",
-            "properties": {
-                "bookingCode": {
-                    "description": "The booking code or class for this segment.",
-                    "type": "string"
-                },
-                "bookingCodeCount": {
-                    "description": "The number of seats available in this booking code on this segment.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "cabin": {
-                    "description": "The cabin booked for this segment.",
-                    "type": "string"
-                },
-                "connectionDuration": {
-                    "description": "In minutes, the duration of the connection following this segment.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "duration": {
-                    "description": "The duration of the flight segment in minutes.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "flight": {
-                    "$ref": "FlightInfo",
-                    "description": "The flight this is a segment of."
-                },
-                "id": {
-                    "description": "An id uniquely identifying the segment in the solution.",
-                    "type": "string"
-                },
-                "kind": {
-                    "default": "qpxexpress#segmentInfo",
-                    "description": "Identifies this as a segment object. A segment is one or more consecutive legs on the same flight. For example a hypothetical flight ZZ001, from DFW to OGG, could have one segment with two legs: DFW to HNL (leg 1), HNL to OGG (leg 2). Value: the fixed string qpxexpress#segmentInfo.",
-                    "type": "string"
-                },
-                "leg": {
-                    "description": "The legs composing this segment.",
-                    "items": {
-                        "$ref": "LegInfo"
-                    },
-                    "type": "array"
-                },
-                "marriedSegmentGroup": {
-                    "description": "The solution-based index of a segment in a married segment group. Married segments can only be booked together. For example, an airline might report a certain booking code as sold out from Boston to Pittsburgh, but as available as part of two married segments Boston to Chicago connecting through Pittsburgh. For example content of this field, consider the round-trip flight ZZ1 PHX-PHL ZZ2 PHL-CLT ZZ3 CLT-PHX. This has three segments, with the two outbound ones (ZZ1 ZZ2) married. In this case, the two outbound segments belong to married segment group 0, and the return segment belongs to married segment group 1.",
-                    "type": "string"
-                },
-                "subjectToGovernmentApproval": {
-                    "description": "Whether the operation of this segment remains subject to government approval.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "SegmentPricing": {
-            "description": "The price of this segment.",
-            "id": "SegmentPricing",
-            "properties": {
-                "fareId": {
-                    "description": "A segment identifier unique within a single solution. It is used to refer to different parts of the same solution.",
-                    "type": "string"
-                },
-                "freeBaggageOption": {
-                    "description": "Details of the free baggage allowance on this segment.",
-                    "items": {
-                        "$ref": "FreeBaggageAllowance"
-                    },
-                    "type": "array"
-                },
-                "kind": {
-                    "default": "qpxexpress#segmentPricing",
-                    "description": "Identifies this as a segment pricing object, representing the price of this segment. Value: the fixed string qpxexpress#segmentPricing.",
-                    "type": "string"
-                },
-                "segmentId": {
-                    "description": "Unique identifier in the response of this segment.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SliceInfo": {
-            "description": "Information about a slice. A slice represents a traveller's intent, the portion of a low-fare search corresponding to a traveler's request to get between two points. One-way journeys are generally expressed using 1 slice, round-trips using 2. For example, if a traveler specifies the following trip in a user interface:\n| Origin | Destination | Departure Date | | BOS | LAX | March 10, 2007 | | LAX | SYD | March 17, 2007 | | SYD | BOS | March 22, 2007 |\nthen this is a three slice trip.",
-            "id": "SliceInfo",
-            "properties": {
-                "duration": {
-                    "description": "The duration of the slice in minutes.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "kind": {
-                    "default": "qpxexpress#sliceInfo",
-                    "description": "Identifies this as a slice object. A slice represents a traveller's intent, the portion of a low-fare search corresponding to a traveler's request to get between two points. One-way journeys are generally expressed using 1 slice, round-trips using 2. Value: the fixed string qpxexpress#sliceInfo.",
-                    "type": "string"
-                },
-                "segment": {
-                    "description": "The segment(s) constituting the slice.",
-                    "items": {
-                        "$ref": "SegmentInfo"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "SliceInput": {
-            "description": "Criteria a desired slice must satisfy.",
-            "id": "SliceInput",
-            "properties": {
-                "alliance": {
-                    "description": "Slices with only the carriers in this alliance should be returned; do not use this field with permittedCarrier. Allowed values are ONEWORLD, SKYTEAM, and STAR.",
-                    "type": "string"
-                },
-                "date": {
-                    "description": "Departure date in YYYY-MM-DD format.",
-                    "type": "string"
-                },
-                "destination": {
-                    "description": "Airport or city IATA designator of the destination.",
-                    "type": "string"
-                },
-                "kind": {
-                    "default": "qpxexpress#sliceInput",
-                    "description": "Identifies this as a slice input object, representing the criteria a desired slice must satisfy. Value: the fixed string qpxexpress#sliceInput.",
-                    "type": "string"
-                },
-                "maxConnectionDuration": {
-                    "description": "The longest connection between two legs, in minutes, you are willing to accept.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "maxStops": {
-                    "description": "The maximum number of stops you are willing to accept in this slice.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "origin": {
-                    "description": "Airport or city IATA designator of the origin.",
-                    "type": "string"
-                },
-                "permittedCarrier": {
-                    "description": "A list of 2-letter IATA airline designators. Slices with only these carriers should be returned.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "permittedDepartureTime": {
-                    "$ref": "TimeOfDayRange",
-                    "description": "Slices must depart in this time of day range, local to the point of departure."
-                },
-                "preferredCabin": {
-                    "description": "Prefer solutions that book in this cabin for this slice. Allowed values are COACH, PREMIUM_COACH, BUSINESS, and FIRST.",
-                    "type": "string"
-                },
-                "prohibitedCarrier": {
-                    "description": "A list of 2-letter IATA airline designators. Exclude slices that use these carriers.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "TaxData": {
-            "description": "Tax data.",
-            "id": "TaxData",
-            "properties": {
-                "id": {
-                    "description": "An identifier uniquely identifying a tax in a response.",
-                    "type": "string"
-                },
-                "kind": {
-                    "default": "qpxexpress#taxData",
-                    "description": "Identifies this as a tax data object, representing some tax. Value: the fixed string qpxexpress#taxData.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of a tax.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TaxInfo": {
-            "description": "Tax information.",
-            "id": "TaxInfo",
-            "properties": {
-                "chargeType": {
-                    "description": "Whether this is a government charge or a carrier surcharge.",
-                    "type": "string"
-                },
-                "code": {
-                    "description": "The code to enter in the ticket's tax box.",
-                    "type": "string"
-                },
-                "country": {
-                    "description": "For government charges, the country levying the charge.",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "Identifier uniquely identifying this tax in a response. Not present for unnamed carrier surcharges.",
-                    "type": "string"
-                },
-                "kind": {
-                    "default": "qpxexpress#taxInfo",
-                    "description": "Identifies this as a tax information object. Value: the fixed string qpxexpress#taxInfo.",
-                    "type": "string"
-                },
-                "salePrice": {
-                    "description": "The price of the tax in the sales or equivalent currency.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TimeOfDayRange": {
-            "description": "Two times in a single day defining a time range.",
-            "id": "TimeOfDayRange",
-            "properties": {
-                "earliestTime": {
-                    "description": "The earliest time of day in HH:MM format.",
-                    "type": "string"
-                },
-                "kind": {
-                    "default": "qpxexpress#timeOfDayRange",
-                    "description": "Identifies this as a time of day range object, representing two times in a single day defining a time range. Value: the fixed string qpxexpress#timeOfDayRange.",
-                    "type": "string"
-                },
-                "latestTime": {
-                    "description": "The latest time of day in HH:MM format.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TripOption": {
-            "description": "Trip information.",
-            "id": "TripOption",
-            "properties": {
-                "id": {
-                    "description": "Identifier uniquely identifying this trip in a response.",
-                    "type": "string"
-                },
-                "kind": {
-                    "default": "qpxexpress#tripOption",
-                    "description": "Identifies this as a trip information object. Value: the fixed string qpxexpress#tripOption.",
-                    "type": "string"
-                },
-                "pricing": {
-                    "description": "Per passenger pricing information.",
-                    "items": {
-                        "$ref": "PricingInfo"
-                    },
-                    "type": "array"
-                },
-                "saleTotal": {
-                    "description": "The total price for all passengers on the trip, in the form of a currency followed by an amount, e.g. USD253.35.",
-                    "type": "string"
-                },
-                "slice": {
-                    "description": "The slices that make up this trip's itinerary.",
-                    "items": {
-                        "$ref": "SliceInfo"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "TripOptionsRequest": {
-            "description": "A QPX Express search request, which will yield one or more solutions.",
-            "id": "TripOptionsRequest",
-            "properties": {
-                "maxPrice": {
-                    "description": "Do not return solutions that cost more than this price. The alphabetical part of the price is in ISO 4217. The format, in regex, is [A-Z]{3}\\d+(\\.\\d+)? Example: $102.07",
-                    "type": "string"
-                },
-                "passengers": {
-                    "$ref": "PassengerCounts",
-                    "description": "Counts for each passenger type in the request."
-                },
-                "refundable": {
-                    "description": "Return only solutions with refundable fares.",
-                    "type": "boolean"
-                },
-                "saleCountry": {
-                    "description": "IATA country code representing the point of sale. This determines the \"equivalent amount paid\" currency for the ticket.",
-                    "type": "string"
-                },
-                "slice": {
-                    "description": "The slices that make up the itinerary of this trip. A slice represents a traveler's intent, the portion of a low-fare search corresponding to a traveler's request to get between two points. One-way journeys are generally expressed using one slice, round-trips using two. An example of a one slice trip with three segments might be BOS-SYD, SYD-LAX, LAX-BOS if the traveler only stopped in SYD and LAX just long enough to change planes.",
-                    "items": {
-                        "$ref": "SliceInput"
-                    },
-                    "type": "array"
-                },
-                "solutions": {
-                    "description": "The number of solutions to return, maximum 500.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "ticketingCountry": {
-                    "description": "IATA country code representing the point of ticketing.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TripOptionsResponse": {
-            "description": "A QPX Express search response.",
-            "id": "TripOptionsResponse",
-            "properties": {
-                "data": {
-                    "$ref": "Data",
-                    "description": "Informational data global to list of solutions."
-                },
-                "kind": {
-                    "default": "qpxexpress#tripOptions",
-                    "description": "Identifies this as a QPX Express trip response object, which consists of zero or more solutions. Value: the fixed string qpxexpress#tripOptions.",
-                    "type": "string"
-                },
-                "requestId": {
-                    "description": "An identifier uniquely identifying this response.",
-                    "type": "string"
-                },
-                "tripOption": {
-                    "description": "A list of priced itinerary solutions to the QPX Express query.",
-                    "items": {
-                        "$ref": "TripOption"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "TripsSearchRequest": {
-            "description": "A QPX Express search request.",
-            "id": "TripsSearchRequest",
-            "properties": {
-                "request": {
-                    "$ref": "TripOptionsRequest",
-                    "description": "A QPX Express search request. Required values are at least one adult or senior passenger, an origin, a destination, and a date."
-                }
-            },
-            "type": "object"
-        },
-        "TripsSearchResponse": {
-            "description": "A QPX Express search response.",
-            "id": "TripsSearchResponse",
-            "properties": {
-                "kind": {
-                    "default": "qpxExpress#tripsSearch",
-                    "description": "Identifies this as a QPX Express API search response resource. Value: the fixed string qpxExpress#tripsSearch.",
-                    "type": "string"
-                },
-                "trips": {
-                    "$ref": "TripOptionsResponse",
-                    "description": "All possible solutions to the QPX Express search request."
-                }
-            },
-            "type": "object"
-        }
-    },
-    "servicePath": "qpxExpress/v1/trips/",
-    "title": "QPX Express API",
-    "version": "v1"
-}
\ No newline at end of file
diff --git a/discovery/googleapis/runtimeconfig__v1.json b/discovery/googleapis/runtimeconfig__v1.json
index 156351a..05b3670 100644
--- a/discovery/googleapis/runtimeconfig__v1.json
+++ b/discovery/googleapis/runtimeconfig__v1.json
@@ -28,29 +28,13 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
         "fields": {
             "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
@@ -67,6 +51,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -104,21 +93,60 @@
             "location": "query",
             "type": "boolean"
         },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
         "oauth_token": {
             "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
             "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
         }
     },
     "protocol": "rest",
     "resources": {
         "operations": {
             "methods": {
+                "cancel": {
+                    "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
+                    "httpMethod": "POST",
+                    "id": "runtimeconfig.operations.cancel",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The name of the operation resource to be cancelled.",
+                            "location": "path",
+                            "pattern": "^operations/.+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+name}:cancel",
+                    "request": {
+                        "$ref": "CancelOperationRequest"
+                    },
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloudruntimeconfig"
+                    ]
+                },
                 "delete": {
                     "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.",
                     "httpMethod": "DELETE",
@@ -184,66 +212,17 @@
                         "https://www.googleapis.com/auth/cloud-platform",
                         "https://www.googleapis.com/auth/cloudruntimeconfig"
                     ]
-                },
-                "cancel": {
-                    "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
-                    "httpMethod": "POST",
-                    "id": "runtimeconfig.operations.cancel",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The name of the operation resource to be cancelled.",
-                            "location": "path",
-                            "pattern": "^operations/.+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+name}:cancel",
-                    "request": {
-                        "$ref": "CancelOperationRequest"
-                    },
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloudruntimeconfig"
-                    ]
                 }
             }
         }
     },
-    "revision": "20171002",
+    "revision": "20171019",
     "rootUrl": "https://runtimeconfig.googleapis.com/",
     "schemas": {
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
-        "CancelOperationRequest": {
-            "description": "The request message for Operations.CancelOperation.",
-            "id": "CancelOperationRequest",
-            "properties": {},
-            "type": "object"
-        },
         "Status": {
             "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
             "id": "Status",
             "properties": {
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                },
                 "details": {
                     "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
                     "items": {
@@ -254,6 +233,15 @@
                         "type": "object"
                     },
                     "type": "array"
+                },
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -262,10 +250,6 @@
             "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
             "id": "Operation",
             "properties": {
-                "done": {
-                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
-                    "type": "boolean"
-                },
                 "response": {
                     "additionalProperties": {
                         "description": "Properties of the object. Contains field @type with type URL.",
@@ -289,6 +273,10 @@
                     },
                     "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
                     "type": "object"
+                },
+                "done": {
+                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -310,6 +298,18 @@
                 }
             },
             "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "CancelOperationRequest": {
+            "description": "The request message for Operations.CancelOperation.",
+            "id": "CancelOperationRequest",
+            "properties": {},
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/safebrowsing__v4.json b/discovery/googleapis/safebrowsing__v4.json
index 1f7996e..e93f1ce 100644
--- a/discovery/googleapis/safebrowsing__v4.json
+++ b/discovery/googleapis/safebrowsing__v4.json
@@ -15,45 +15,18 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "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.",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
         "uploadType": {
             "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "callback": {
+            "description": "JSONP",
             "location": "query",
             "type": "string"
         },
@@ -70,11 +43,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -91,72 +59,51 @@
             "location": "query",
             "type": "string"
         },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
         "access_token": {
             "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "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.",
             "location": "query",
             "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
         }
     },
     "protocol": "rest",
     "resources": {
-        "threatListUpdates": {
-            "methods": {
-                "fetch": {
-                    "description": "Fetches the most recent threat list updates. A client can request updates\nfor multiple lists at once.",
-                    "httpMethod": "POST",
-                    "id": "safebrowsing.threatListUpdates.fetch",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v4/threatListUpdates:fetch",
-                    "request": {
-                        "$ref": "FetchThreatListUpdatesRequest"
-                    },
-                    "response": {
-                        "$ref": "FetchThreatListUpdatesResponse"
-                    }
-                }
-            }
-        },
-        "encodedFullHashes": {
-            "methods": {
-                "get": {
-                    "description": "",
-                    "httpMethod": "GET",
-                    "id": "safebrowsing.encodedFullHashes.get",
-                    "parameterOrder": [
-                        "encodedRequest"
-                    ],
-                    "parameters": {
-                        "clientId": {
-                            "description": "A client ID that (hopefully) uniquely identifies the client implementation\nof the Safe Browsing API.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "clientVersion": {
-                            "description": "The version of the client implementation.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "encodedRequest": {
-                            "description": "A serialized FindFullHashesRequest proto.",
-                            "format": "byte",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v4/encodedFullHashes/{encodedRequest}",
-                    "response": {
-                        "$ref": "FindFullHashesResponse"
-                    }
-                }
-            }
-        },
         "threatLists": {
             "methods": {
                 "list": {
@@ -242,25 +189,83 @@
                     }
                 }
             }
+        },
+        "threatListUpdates": {
+            "methods": {
+                "fetch": {
+                    "description": "Fetches the most recent threat list updates. A client can request updates\nfor multiple lists at once.",
+                    "httpMethod": "POST",
+                    "id": "safebrowsing.threatListUpdates.fetch",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v4/threatListUpdates:fetch",
+                    "request": {
+                        "$ref": "FetchThreatListUpdatesRequest"
+                    },
+                    "response": {
+                        "$ref": "FetchThreatListUpdatesResponse"
+                    }
+                }
+            }
+        },
+        "encodedFullHashes": {
+            "methods": {
+                "get": {
+                    "description": "",
+                    "httpMethod": "GET",
+                    "id": "safebrowsing.encodedFullHashes.get",
+                    "parameterOrder": [
+                        "encodedRequest"
+                    ],
+                    "parameters": {
+                        "clientVersion": {
+                            "description": "The version of the client implementation.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "encodedRequest": {
+                            "description": "A serialized FindFullHashesRequest proto.",
+                            "format": "byte",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "clientId": {
+                            "description": "A client ID that (hopefully) uniquely identifies the client implementation\nof the Safe Browsing API.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v4/encodedFullHashes/{encodedRequest}",
+                    "response": {
+                        "$ref": "FindFullHashesResponse"
+                    }
+                }
+            }
         }
     },
-    "revision": "20170927",
+    "revision": "20171016",
     "rootUrl": "https://safebrowsing.googleapis.com/",
     "schemas": {
-        "FetchThreatListUpdatesResponse": {
-            "id": "FetchThreatListUpdatesResponse",
+        "FindFullHashesResponse": {
+            "id": "FindFullHashesResponse",
             "properties": {
-                "minimumWaitDuration": {
-                    "description": "The minimum duration the client must wait before issuing any update\nrequest. If this field is not set clients may update as soon as they want.",
+                "matches": {
+                    "description": "The full hashes that matched the requested prefixes.",
+                    "items": {
+                        "$ref": "ThreatMatch"
+                    },
+                    "type": "array"
+                },
+                "negativeCacheDuration": {
+                    "description": "For requested entities that did not match the threat list, how long to\ncache the response.",
                     "format": "google-duration",
                     "type": "string"
                 },
-                "listUpdateResponses": {
-                    "description": "The list updates requested by the clients.",
-                    "items": {
-                        "$ref": "ListUpdateResponse"
-                    },
-                    "type": "array"
+                "minimumWaitDuration": {
+                    "description": "The minimum duration the client must wait before issuing any find hashes\nrequest. If this field is not set, clients can issue a request as soon as\nthey want.",
+                    "format": "google-duration",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -277,33 +282,22 @@
             },
             "type": "object"
         },
-        "FindFullHashesResponse": {
-            "id": "FindFullHashesResponse",
-            "properties": {
-                "minimumWaitDuration": {
-                    "description": "The minimum duration the client must wait before issuing any find hashes\nrequest. If this field is not set, clients can issue a request as soon as\nthey want.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "matches": {
-                    "description": "The full hashes that matched the requested prefixes.",
-                    "items": {
-                        "$ref": "ThreatMatch"
-                    },
-                    "type": "array"
-                },
-                "negativeCacheDuration": {
-                    "description": "For requested entities that did not match the threat list, how long to\ncache the response.",
-                    "format": "google-duration",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "ThreatEntrySet": {
             "description": "A set of threats that should be added or removed from a client's local\ndatabase.",
             "id": "ThreatEntrySet",
             "properties": {
+                "rawIndices": {
+                    "$ref": "RawIndices",
+                    "description": "The raw removal indices for a local list."
+                },
+                "rawHashes": {
+                    "$ref": "RawHashes",
+                    "description": "The raw SHA256-formatted entries."
+                },
+                "riceHashes": {
+                    "$ref": "RiceDeltaEncoding",
+                    "description": "The encoded 4-byte prefixes of SHA256-formatted entries, using a\nGolomb-Rice encoding. The hashes are converted to uint32, sorted in\nascending order, then delta encoded and stored as encoded_data."
+                },
                 "riceIndices": {
                     "$ref": "RiceDeltaEncoding",
                     "description": "The encoded local, lexicographically-sorted list indices, using a\nGolomb-Rice encoding. Used for sending compressed removal indices. The\nremoval indices (uint32) are sorted in ascending order, then delta encoded\nand stored as encoded_data."
@@ -321,18 +315,6 @@
                         "Rice-Golomb encoded data."
                     ],
                     "type": "string"
-                },
-                "rawIndices": {
-                    "$ref": "RawIndices",
-                    "description": "The raw removal indices for a local list."
-                },
-                "rawHashes": {
-                    "$ref": "RawHashes",
-                    "description": "The raw SHA256-formatted entries."
-                },
-                "riceHashes": {
-                    "$ref": "RiceDeltaEncoding",
-                    "description": "The encoded 4-byte prefixes of SHA256-formatted entries, using a\nGolomb-Rice encoding. The hashes are converted to uint32, sorted in\nascending order, then delta encoded and stored as encoded_data."
                 }
             },
             "type": "object"
@@ -368,33 +350,6 @@
             "description": "A single list update request.",
             "id": "ListUpdateRequest",
             "properties": {
-                "threatEntryType": {
-                    "description": "The types of entries present in the list.",
-                    "enum": [
-                        "THREAT_ENTRY_TYPE_UNSPECIFIED",
-                        "URL",
-                        "EXECUTABLE",
-                        "IP_RANGE",
-                        "CHROME_EXTENSION",
-                        "FILENAME",
-                        "CERT"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified.",
-                        "A URL.",
-                        "An executable program.",
-                        "An IP range.",
-                        "Chrome extension.",
-                        "Filename.",
-                        "CERT"
-                    ],
-                    "type": "string"
-                },
-                "state": {
-                    "description": "The current state of the client for the requested list (the encrypted\nclient state that was received from the last successful list update).",
-                    "format": "byte",
-                    "type": "string"
-                },
                 "platformType": {
                     "description": "The type of platform at risk by entries present in the list.",
                     "enum": [
@@ -460,6 +415,33 @@
                         "Patterns to be used for activating the subresource filter. Interstitial\nwill not be shown for patterns from this list."
                     ],
                     "type": "string"
+                },
+                "threatEntryType": {
+                    "description": "The types of entries present in the list.",
+                    "enum": [
+                        "THREAT_ENTRY_TYPE_UNSPECIFIED",
+                        "URL",
+                        "EXECUTABLE",
+                        "IP_RANGE",
+                        "CHROME_EXTENSION",
+                        "FILENAME",
+                        "CERT"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "A URL.",
+                        "An executable program.",
+                        "An IP range.",
+                        "Chrome extension.",
+                        "Filename.",
+                        "CERT"
+                    ],
+                    "type": "string"
+                },
+                "state": {
+                    "description": "The current state of the client for the requested list (the encrypted\nclient state that was received from the last successful list update).",
+                    "format": "byte",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -486,10 +468,6 @@
             "description": "An update to an individual list.",
             "id": "ListUpdateResponse",
             "properties": {
-                "checksum": {
-                    "$ref": "Checksum",
-                    "description": "The expected SHA256 hash of the client state; that is, of the sorted list\nof all hashes present in the database after applying the provided update.\nIf the client state doesn't match the expected state, the client must\ndisregard this update and retry later."
-                },
                 "responseType": {
                     "description": "The type of response. This may indicate that an action is required by the\nclient when the response is received.",
                     "enum": [
@@ -504,6 +482,10 @@
                     ],
                     "type": "string"
                 },
+                "checksum": {
+                    "$ref": "Checksum",
+                    "description": "The expected SHA256 hash of the client state; that is, of the sorted list\nof all hashes present in the database after applying the provided update.\nIf the client state doesn't match the expected state, the client must\ndisregard this update and retry later."
+                },
                 "threatType": {
                     "description": "The threat type for which data is returned.",
                     "enum": [
@@ -540,11 +522,6 @@
                     ],
                     "type": "string"
                 },
-                "newClientState": {
-                    "description": "The new client state, in encrypted format. Opaque to clients.",
-                    "format": "byte",
-                    "type": "string"
-                },
                 "removals": {
                     "description": "A set of entries to remove from a local threat type's list. In practice,\nthis field is empty or contains exactly one ThreatEntrySet.",
                     "items": {
@@ -552,6 +529,11 @@
                     },
                     "type": "array"
                 },
+                "newClientState": {
+                    "description": "The new client state, in encrypted format. Opaque to clients.",
+                    "format": "byte",
+                    "type": "string"
+                },
                 "platformType": {
                     "description": "The platform type for which data is returned.",
                     "enum": [
@@ -614,6 +596,11 @@
             "description": "The constraints for this update.",
             "id": "Constraints",
             "properties": {
+                "maxUpdateEntries": {
+                    "description": "The maximum size in number of entries. The update will not contain more\nentries than this value.  This should be a power of 2 between 2**10 and\n2**20.  If zero, no update size limit is set.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "region": {
                     "description": "Requests the list for a specific geographic location. If not set the\nserver may pick that value based on the user's IP address. Expects ISO\n3166-1 alpha-2 format.",
                     "type": "string"
@@ -639,11 +626,6 @@
                         "type": "string"
                     },
                     "type": "array"
-                },
-                "maxUpdateEntries": {
-                    "description": "The maximum size in number of entries. The update will not contain more\nentries than this value.  This should be a power of 2 between 2**10 and\n2**20.  If zero, no update size limit is set.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -652,10 +634,6 @@
             "description": "A match when checking a threat entry in the Safe Browsing threat lists.",
             "id": "ThreatMatch",
             "properties": {
-                "threat": {
-                    "$ref": "ThreatEntry",
-                    "description": "The threat matching this threat."
-                },
                 "platformType": {
                     "description": "The platform type matching this threat.",
                     "enum": [
@@ -748,6 +726,10 @@
                         "Patterns to be used for activating the subresource filter. Interstitial\nwill not be shown for patterns from this list."
                     ],
                     "type": "string"
+                },
+                "threat": {
+                    "$ref": "ThreatEntry",
+                    "description": "The threat matching this threat."
                 }
             },
             "type": "object"
@@ -756,11 +738,6 @@
             "description": "The Rice-Golomb encoded data. Used for sending compressed 4-byte hashes or\ncompressed removal indices.",
             "id": "RiceDeltaEncoding",
             "properties": {
-                "riceParameter": {
-                    "description": "The Golomb-Rice parameter, which is a number between 2 and 28. This field\nis missing (that is, zero) if `num_entries` is zero.",
-                    "format": "int32",
-                    "type": "integer"
-                },
                 "encodedData": {
                     "description": "The encoded deltas that are encoded using the Golomb-Rice coder.",
                     "format": "byte",
@@ -775,6 +752,11 @@
                     "description": "The number of entries that are delta encoded in the encoded data. If only a\nsingle integer was encoded, this will be zero and the single value will be\nstored in `first_value`.",
                     "format": "int32",
                     "type": "integer"
+                },
+                "riceParameter": {
+                    "description": "The Golomb-Rice parameter, which is a number between 2 and 28. This field\nis missing (that is, zero) if `num_entries` is zero.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -796,10 +778,6 @@
             "description": "An individual threat; for example, a malicious URL or its hash\nrepresentation. Only one of these fields should be set.",
             "id": "ThreatEntry",
             "properties": {
-                "url": {
-                    "description": "A URL.",
-                    "type": "string"
-                },
                 "digest": {
                     "description": "The digest of an executable in SHA256 format. The API supports both\nbinary and hex digests. For JSON requests, digests are base64-encoded.",
                     "format": "byte",
@@ -809,6 +787,10 @@
                     "description": "A hash prefix, consisting of the most significant 4-32 bytes of a SHA256\nhash. This field is in binary format. For JSON requests, hashes are\nbase64-encoded.",
                     "format": "byte",
                     "type": "string"
+                },
+                "url": {
+                    "description": "A URL.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -830,32 +812,6 @@
             "description": "Describes an individual threat list. A list is defined by three parameters:\nthe type of threat posed, the type of platform targeted by the threat, and\nthe type of entries in the list.",
             "id": "ThreatListDescriptor",
             "properties": {
-                "platformType": {
-                    "description": "The platform type targeted by the list's entries.",
-                    "enum": [
-                        "PLATFORM_TYPE_UNSPECIFIED",
-                        "WINDOWS",
-                        "LINUX",
-                        "ANDROID",
-                        "OSX",
-                        "IOS",
-                        "ANY_PLATFORM",
-                        "ALL_PLATFORMS",
-                        "CHROME"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown platform.",
-                        "Threat posed to Windows.",
-                        "Threat posed to Linux.",
-                        "Threat posed to Android.",
-                        "Threat posed to OS X.",
-                        "Threat posed to iOS.",
-                        "Threat posed to at least one of the defined platforms.",
-                        "Threat posed to all defined platforms.",
-                        "Threat posed to Chrome."
-                    ],
-                    "type": "string"
-                },
                 "threatType": {
                     "description": "The threat type posed by the list's entries.",
                     "enum": [
@@ -913,6 +869,32 @@
                         "CERT"
                     ],
                     "type": "string"
+                },
+                "platformType": {
+                    "description": "The platform type targeted by the list's entries.",
+                    "enum": [
+                        "PLATFORM_TYPE_UNSPECIFIED",
+                        "WINDOWS",
+                        "LINUX",
+                        "ANDROID",
+                        "OSX",
+                        "IOS",
+                        "ANY_PLATFORM",
+                        "ALL_PLATFORMS",
+                        "CHROME"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown platform.",
+                        "Threat posed to Windows.",
+                        "Threat posed to Linux.",
+                        "Threat posed to Android.",
+                        "Threat posed to OS X.",
+                        "Threat posed to iOS.",
+                        "Threat posed to at least one of the defined platforms.",
+                        "Threat posed to all defined platforms.",
+                        "Threat posed to Chrome."
+                    ],
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1060,13 +1042,13 @@
             "description": "Request to check entries against lists.",
             "id": "FindThreatMatchesRequest",
             "properties": {
-                "client": {
-                    "$ref": "ClientInfo",
-                    "description": "The client metadata."
-                },
                 "threatInfo": {
                     "$ref": "ThreatInfo",
                     "description": "The lists and entries to be checked for matches."
+                },
+                "client": {
+                    "$ref": "ClientInfo",
+                    "description": "The client metadata."
                 }
             },
             "type": "object"
@@ -1104,15 +1086,33 @@
             "description": "The uncompressed threat entries in hash format of a particular prefix length.\nHashes can be anywhere from 4 to 32 bytes in size. A large majority are 4\nbytes, but some hashes are lengthened if they collide with the hash of a\npopular URL.\n\nUsed for sending ThreatEntrySet to clients that do not support compression,\nor when sending non-4-byte hashes to clients that do support compression.",
             "id": "RawHashes",
             "properties": {
-                "prefixSize": {
-                    "description": "The number of bytes for each prefix encoded below.  This field can be\nanywhere from 4 (shortest prefix) to 32 (full SHA256 hash).",
-                    "format": "int32",
-                    "type": "integer"
-                },
                 "rawHashes": {
                     "description": "The hashes, in binary format, concatenated into one long string. Hashes are\nsorted in lexicographic order. For JSON API users, hashes are\nbase64-encoded.",
                     "format": "byte",
                     "type": "string"
+                },
+                "prefixSize": {
+                    "description": "The number of bytes for each prefix encoded below.  This field can be\nanywhere from 4 (shortest prefix) to 32 (full SHA256 hash).",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "FetchThreatListUpdatesResponse": {
+            "id": "FetchThreatListUpdatesResponse",
+            "properties": {
+                "minimumWaitDuration": {
+                    "description": "The minimum duration the client must wait before issuing any update\nrequest. If this field is not set clients may update as soon as they want.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "listUpdateResponses": {
+                    "description": "The list updates requested by the clients.",
+                    "items": {
+                        "$ref": "ListUpdateResponse"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/script__v1.json b/discovery/googleapis/script__v1.json
index 90015a1..e438ae2 100644
--- a/discovery/googleapis/script__v1.json
+++ b/discovery/googleapis/script__v1.json
@@ -2,6 +2,21 @@
     "auth": {
         "oauth2": {
             "scopes": {
+                "https://www.googleapis.com/auth/drive": {
+                    "description": "View and manage the files in your Google Drive"
+                },
+                "https://www.googleapis.com/auth/spreadsheets": {
+                    "description": "View and manage your spreadsheets in Google Drive"
+                },
+                "https://mail.google.com/": {
+                    "description": "Read, send, delete, and manage your email"
+                },
+                "https://www.googleapis.com/auth/admin.directory.group": {
+                    "description": "View and manage the provisioning of groups on your domain"
+                },
+                "https://www.googleapis.com/auth/admin.directory.user": {
+                    "description": "View and manage the provisioning of users on your domain"
+                },
                 "https://www.googleapis.com/auth/forms": {
                     "description": "View and manage your forms in Google Drive"
                 },
@@ -19,21 +34,6 @@
                 },
                 "https://www.googleapis.com/auth/forms.currentonly": {
                     "description": "View and manage forms that this application has been installed in"
-                },
-                "https://www.googleapis.com/auth/drive": {
-                    "description": "View and manage the files in your Google Drive"
-                },
-                "https://www.googleapis.com/auth/admin.directory.user": {
-                    "description": "View and manage the provisioning of users on your domain"
-                },
-                "https://www.googleapis.com/auth/admin.directory.group": {
-                    "description": "View and manage the provisioning of groups on your domain"
-                },
-                "https://www.googleapis.com/auth/spreadsheets": {
-                    "description": "View and manage your spreadsheets in Google Drive"
-                },
-                "https://mail.google.com/": {
-                    "description": "Read, send, delete, and manage your email"
                 }
             }
         }
@@ -54,8 +54,19 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "access_token": {
-            "description": "OAuth access token.",
+        "alt": {
+            "default": "json",
+            "description": "Data format for response.",
+            "enum": [
+                "json",
+                "media",
+                "proto"
+            ],
+            "enumDescriptions": [
+                "Responses with Content-Type of application/json",
+                "Media download with context-dependent Content-Type",
+                "Responses with Content-Type of application/x-protobuf"
+            ],
             "location": "query",
             "type": "string"
         },
@@ -64,6 +75,11 @@
             "location": "query",
             "type": "string"
         },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
         "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.",
             "location": "query",
@@ -96,13 +112,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
@@ -123,22 +139,6 @@
             ],
             "location": "query",
             "type": "string"
-        },
-        "alt": {
-            "default": "json",
-            "description": "Data format for response.",
-            "enum": [
-                "json",
-                "media",
-                "proto"
-            ],
-            "enumDescriptions": [
-                "Responses with Content-Type of application/json",
-                "Media download with context-dependent Content-Type",
-                "Responses with Content-Type of application/x-protobuf"
-            ],
-            "location": "query",
-            "type": "string"
         }
     },
     "protocol": "rest",
@@ -184,9 +184,36 @@
             }
         }
     },
-    "revision": "20170927",
+    "revision": "20171010",
     "rootUrl": "https://script.googleapis.com/",
     "schemas": {
+        "Status": {
+            "description": "If a `run` call succeeds but the script function (or Apps Script itself) throws an exception, the response body's `error` field will contain this `Status` object.",
+            "id": "Status",
+            "properties": {
+                "code": {
+                    "description": "The status code. For this API, this value will always be 3, corresponding to an <code>INVALID_ARGUMENT</code> error.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which is in English. Any user-facing error message is localized and sent in the [`google.rpc.Status.details`](google.rpc.Status.details) field, or localized by the client.",
+                    "type": "string"
+                },
+                "details": {
+                    "description": "An array that contains a single `ExecutionError` object that provides information about the nature of the error.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "ExecutionRequest": {
             "description": "A request to run the function in a script. The script is identified by the\nspecified `script_id`. Executing a function on a script returns results\nbased on the implementation of the script.",
             "id": "ExecutionRequest",
@@ -228,10 +255,6 @@
             "description": "The response will not arrive until the function finishes executing. The maximum runtime is listed in the guide to [limitations in Apps Script](https://developers.google.com/apps-script/guides/services/quotas#current_limitations).\n<p>If the script function returns successfully, the `response` field will contain an `ExecutionResponse` object with the function's return value in the object's `result` field.</p>\n<p>If the script function (or Apps Script itself) throws an exception, the `error` field will contain a `Status` object. The `Status` object's `details` field will contain an array with a single `ExecutionError` object that provides information about the nature of the error.</p>\n<p>If the `run` call itself fails (for example, because of a malformed request or an authorization error), the method will return an HTTP response code in the 4XX range with a different format for the response body. Client libraries will automatically convert a 4XX response into an exception class.</p>",
             "id": "Operation",
             "properties": {
-                "done": {
-                    "description": "This field is only used with asynchronous executions and indicates whether or not the script execution has completed. A completed execution has a populated response field containing the `ExecutionResponse` from function that was executed.",
-                    "type": "boolean"
-                },
                 "response": {
                     "additionalProperties": {
                         "description": "Properties of the object. Contains field @type with type URL.",
@@ -251,6 +274,10 @@
                     },
                     "description": "This field is not used.",
                     "type": "object"
+                },
+                "done": {
+                    "description": "This field is only used with asynchronous executions and indicates whether or not the script execution has completed. A completed execution has a populated response field containing the `ExecutionResponse` from function that was executed.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -292,33 +319,6 @@
                 }
             },
             "type": "object"
-        },
-        "Status": {
-            "description": "If a `run` call succeeds but the script function (or Apps Script itself) throws an exception, the response body's `error` field will contain this `Status` object.",
-            "id": "Status",
-            "properties": {
-                "code": {
-                    "description": "The status code. For this API, this value will always be 3, corresponding to an <code>INVALID_ARGUMENT</code> error.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which is in English. Any user-facing error message is localized and sent in the [`google.rpc.Status.details`](google.rpc.Status.details) field, or localized by the client.",
-                    "type": "string"
-                },
-                "details": {
-                    "description": "An array that contains a single `ExecutionError` object that provides information about the nature of the error.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/searchconsole__v1.json b/discovery/googleapis/searchconsole__v1.json
index 2f9f0ee..6e5478c 100644
--- a/discovery/googleapis/searchconsole__v1.json
+++ b/discovery/googleapis/searchconsole__v1.json
@@ -16,32 +16,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "alt": {
-            "default": "json",
-            "description": "Data format for response.",
-            "enum": [
-                "json",
-                "media",
-                "proto"
-            ],
-            "enumDescriptions": [
-                "Responses with Content-Type of application/json",
-                "Media download with context-dependent Content-Type",
-                "Responses with Content-Type of application/x-protobuf"
-            ],
-            "location": "query",
-            "type": "string"
-        },
-        "access_token": {
-            "description": "OAuth access token.",
-            "location": "query",
-            "type": "string"
-        },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-            "location": "query",
-            "type": "string"
-        },
         "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.",
             "location": "query",
@@ -53,13 +27,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
+        "bearer_token": {
+            "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         },
@@ -74,13 +48,18 @@
             "location": "query",
             "type": "boolean"
         },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
         "fields": {
             "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "callback": {
+            "description": "JSONP",
             "location": "query",
             "type": "string"
         },
@@ -97,8 +76,29 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
+        "alt": {
+            "default": "json",
+            "description": "Data format for response.",
+            "enum": [
+                "json",
+                "media",
+                "proto"
+            ],
+            "enumDescriptions": [
+                "Responses with Content-Type of application/json",
+                "Media download with context-dependent Content-Type",
+                "Responses with Content-Type of application/x-protobuf"
+            ],
+            "location": "query",
+            "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         }
@@ -128,7 +128,7 @@
             }
         }
     },
-    "revision": "20170927",
+    "revision": "20171016",
     "rootUrl": "https://searchconsole.googleapis.com/",
     "schemas": {
         "MobileFriendlyIssue": {
@@ -164,10 +164,6 @@
             "description": "Mobile-friendly test response, including mobile-friendly issues and resource\nissues.",
             "id": "RunMobileFriendlyTestResponse",
             "properties": {
-                "screenshot": {
-                    "$ref": "Image",
-                    "description": "Screenshot of the requested URL."
-                },
                 "testStatus": {
                     "$ref": "TestStatus",
                     "description": "Final state of the test, can be either complete or an error."
@@ -199,6 +195,10 @@
                         "$ref": "MobileFriendlyIssue"
                     },
                     "type": "array"
+                },
+                "screenshot": {
+                    "$ref": "Image",
+                    "description": "Screenshot of the requested URL."
                 }
             },
             "type": "object"
@@ -229,6 +229,10 @@
             "description": "Final state of the test, including error details if necessary.",
             "id": "TestStatus",
             "properties": {
+                "details": {
+                    "description": "Error details if applicable.",
+                    "type": "string"
+                },
                 "status": {
                     "description": "Status of the test.",
                     "enum": [
@@ -244,26 +248,6 @@
                         "Google can not access the URL because of a user error such as a robots.txt\nblockage, a 403 or 500 code etc. Please make sure that the URL provided is\naccessible by Googlebot and is not password protected."
                     ],
                     "type": "string"
-                },
-                "details": {
-                    "description": "Error details if applicable.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Image": {
-            "description": "Describe image data.",
-            "id": "Image",
-            "properties": {
-                "mimeType": {
-                    "description": "The mime-type of the image data.",
-                    "type": "string"
-                },
-                "data": {
-                    "description": "Image data in format determined by the mime type. Currently, the format\nwill always be \"image/png\", but this might change in the future.",
-                    "format": "byte",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -282,6 +266,22 @@
                 }
             },
             "type": "object"
+        },
+        "Image": {
+            "description": "Describe image data.",
+            "id": "Image",
+            "properties": {
+                "data": {
+                    "description": "Image data in format determined by the mime type. Currently, the format\nwill always be \"image/png\", but this might change in the future.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "mimeType": {
+                    "description": "The mime-type of the image data.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/servicecontrol__v1.json b/discovery/googleapis/servicecontrol__v1.json
index ca188db..8e3c5ca 100644
--- a/discovery/googleapis/servicecontrol__v1.json
+++ b/discovery/googleapis/servicecontrol__v1.json
@@ -2,11 +2,11 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/cloud-platform": {
-                    "description": "View and manage your data across Google Cloud Platform services"
-                },
                 "https://www.googleapis.com/auth/servicecontrol": {
                     "description": "Manage your Google Service Control data"
+                },
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "View and manage your data across Google Cloud Platform services"
                 }
             }
         }
@@ -39,13 +39,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
@@ -83,13 +83,13 @@
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
@@ -104,13 +104,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
+        "bearer_token": {
+            "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         }
@@ -119,6 +119,60 @@
     "resources": {
         "services": {
             "methods": {
+                "startReconciliation": {
+                    "description": "Unlike rate quota, allocation quota does not get refilled periodically.\nSo, it is possible that the quota usage as seen by the service differs from\nwhat the One Platform considers the usage is. This is expected to happen\nonly rarely, but over time this can accumulate. Services can invoke\nStartReconciliation and EndReconciliation to correct this usage drift, as\ndescribed below:\n1. Service sends StartReconciliation with a timestamp in future for each\n   metric that needs to be reconciled. The timestamp being in future allows\n   to account for in-flight AllocateQuota and ReleaseQuota requests for the\n   same metric.\n2. One Platform records this timestamp and starts tracking subsequent\n   AllocateQuota and ReleaseQuota requests until EndReconciliation is\n   called.\n3. At or after the time specified in the StartReconciliation, service\n   sends EndReconciliation with the usage that needs to be reconciled to.\n4. One Platform adjusts its own record of usage for that metric to the\n   value specified in EndReconciliation by taking in to account any\n   allocation or release between StartReconciliation and EndReconciliation.\n\nSignals the quota controller that the service wants to perform a usage\nreconciliation as specified in the request.\n\nThis method requires the `servicemanagement.services.quota`\npermission on the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam).",
+                    "httpMethod": "POST",
+                    "id": "servicecontrol.services.startReconciliation",
+                    "parameterOrder": [
+                        "serviceName"
+                    ],
+                    "parameters": {
+                        "serviceName": {
+                            "description": "Name of the service as specified in the service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee google.api.Service for the definition of a service name.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/services/{serviceName}:startReconciliation",
+                    "request": {
+                        "$ref": "StartReconciliationRequest"
+                    },
+                    "response": {
+                        "$ref": "StartReconciliationResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/servicecontrol"
+                    ]
+                },
+                "check": {
+                    "description": "Checks an operation with Google Service Control to decide whether\nthe given operation should proceed. It should be called before the\noperation is executed.\n\nIf feasible, the client should cache the check results and reuse them for\n60 seconds. In case of server errors, the client can rely on the cached\nresults for longer time.\n\nNOTE: the CheckRequest has the size limit of 64KB.\n\nThis method requires the `servicemanagement.services.check` permission\non the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam).",
+                    "httpMethod": "POST",
+                    "id": "servicecontrol.services.check",
+                    "parameterOrder": [
+                        "serviceName"
+                    ],
+                    "parameters": {
+                        "serviceName": {
+                            "description": "The service name as specified in its service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee\n[google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service)\nfor the definition of a service name.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/services/{serviceName}:check",
+                    "request": {
+                        "$ref": "CheckRequest"
+                    },
+                    "response": {
+                        "$ref": "CheckResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/servicecontrol"
+                    ]
+                },
                 "releaseQuota": {
                     "description": "Releases previously allocated quota done through AllocateQuota method.\n\nThis method requires the `servicemanagement.services.quota`\npermission on the specified service. For more information, see\n[Cloud IAM](https://cloud.google.com/iam).\n\n\n**NOTE:** The client **must** fail-open on server errors `INTERNAL`,\n`UNKNOWN`, `DEADLINE_EXCEEDED`, and `UNAVAILABLE`. To ensure system\nreliability, the server may inject these errors to prohibit any hard\ndependency on the quota functionality.",
                     "httpMethod": "POST",
@@ -226,67 +280,687 @@
                         "https://www.googleapis.com/auth/cloud-platform",
                         "https://www.googleapis.com/auth/servicecontrol"
                     ]
-                },
-                "startReconciliation": {
-                    "description": "Unlike rate quota, allocation quota does not get refilled periodically.\nSo, it is possible that the quota usage as seen by the service differs from\nwhat the One Platform considers the usage is. This is expected to happen\nonly rarely, but over time this can accumulate. Services can invoke\nStartReconciliation and EndReconciliation to correct this usage drift, as\ndescribed below:\n1. Service sends StartReconciliation with a timestamp in future for each\n   metric that needs to be reconciled. The timestamp being in future allows\n   to account for in-flight AllocateQuota and ReleaseQuota requests for the\n   same metric.\n2. One Platform records this timestamp and starts tracking subsequent\n   AllocateQuota and ReleaseQuota requests until EndReconciliation is\n   called.\n3. At or after the time specified in the StartReconciliation, service\n   sends EndReconciliation with the usage that needs to be reconciled to.\n4. One Platform adjusts its own record of usage for that metric to the\n   value specified in EndReconciliation by taking in to account any\n   allocation or release between StartReconciliation and EndReconciliation.\n\nSignals the quota controller that the service wants to perform a usage\nreconciliation as specified in the request.\n\nThis method requires the `servicemanagement.services.quota`\npermission on the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam).",
-                    "httpMethod": "POST",
-                    "id": "servicecontrol.services.startReconciliation",
-                    "parameterOrder": [
-                        "serviceName"
-                    ],
-                    "parameters": {
-                        "serviceName": {
-                            "description": "Name of the service as specified in the service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee google.api.Service for the definition of a service name.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/services/{serviceName}:startReconciliation",
-                    "request": {
-                        "$ref": "StartReconciliationRequest"
-                    },
-                    "response": {
-                        "$ref": "StartReconciliationResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/servicecontrol"
-                    ]
-                },
-                "check": {
-                    "description": "Checks an operation with Google Service Control to decide whether\nthe given operation should proceed. It should be called before the\noperation is executed.\n\nIf feasible, the client should cache the check results and reuse them for\n60 seconds. In case of server errors, the client can rely on the cached\nresults for longer time.\n\nNOTE: the CheckRequest has the size limit of 64KB.\n\nThis method requires the `servicemanagement.services.check` permission\non the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam).",
-                    "httpMethod": "POST",
-                    "id": "servicecontrol.services.check",
-                    "parameterOrder": [
-                        "serviceName"
-                    ],
-                    "parameters": {
-                        "serviceName": {
-                            "description": "The service name as specified in its service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee\n[google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service)\nfor the definition of a service name.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/services/{serviceName}:check",
-                    "request": {
-                        "$ref": "CheckRequest"
-                    },
-                    "response": {
-                        "$ref": "CheckResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/servicecontrol"
-                    ]
                 }
             }
         }
     },
-    "revision": "20170925",
+    "revision": "20171016",
     "rootUrl": "https://servicecontrol.googleapis.com/",
     "schemas": {
+        "CheckResponse": {
+            "description": "Response message for the Check method.",
+            "id": "CheckResponse",
+            "properties": {
+                "operationId": {
+                    "description": "The same operation_id value used in the CheckRequest.\nUsed for logging and diagnostics purposes.",
+                    "type": "string"
+                },
+                "checkErrors": {
+                    "description": "Indicate the decision of the check.\n\nIf no check errors are present, the service should process the operation.\nOtherwise the service should use the list of errors to determine the\nappropriate action.",
+                    "items": {
+                        "$ref": "CheckError"
+                    },
+                    "type": "array"
+                },
+                "checkInfo": {
+                    "$ref": "CheckInfo",
+                    "description": "Feedback data returned from the server during processing a Check request."
+                },
+                "quotaInfo": {
+                    "$ref": "QuotaInfo",
+                    "description": "Quota information for the check request associated with this response.\n"
+                },
+                "serviceConfigId": {
+                    "description": "The actual config id used to process the request.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+            "id": "Status",
+            "properties": {
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ReportRequest": {
+            "description": "Request message for the Report method.",
+            "id": "ReportRequest",
+            "properties": {
+                "operations": {
+                    "description": "Operations to be reported.\n\nTypically the service should report one operation per request.\nPutting multiple operations into a single request is allowed, but should\nbe used only when multiple operations are natually available at the time\nof the report.\n\nIf multiple operations are in a single request, the total request size\nshould be no larger than 1MB. See ReportResponse.report_errors for\npartial failure behavior.",
+                    "items": {
+                        "$ref": "Operation"
+                    },
+                    "type": "array"
+                },
+                "serviceConfigId": {
+                    "description": "Specifies which version of service config should be used to process the\nrequest.\n\nIf unspecified or no matching version can be found, the\nlatest one will be used.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AllocateInfo": {
+            "id": "AllocateInfo",
+            "properties": {
+                "unusedArguments": {
+                    "description": "A list of label keys that were unused by the server in processing the\nrequest. Thus, for similar requests repeated in a certain future time\nwindow, the caller can choose to ignore these labels in the requests\nto achieve better client-side cache hits and quota aggregation.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AuditLog": {
+            "description": "Common audit log format for Google Cloud Platform API operations.\n\n",
+            "id": "AuditLog",
+            "properties": {
+                "authorizationInfo": {
+                    "description": "Authorization information. If there are multiple\nresources or permissions involved, then there is\none AuthorizationInfo element for each {resource, permission} tuple.",
+                    "items": {
+                        "$ref": "AuthorizationInfo"
+                    },
+                    "type": "array"
+                },
+                "request": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "The operation request. This may not include all request parameters,\nsuch as those that are too large, privacy-sensitive, or duplicated\nelsewhere in the log record.\nIt should never include user-generated data, such as file contents.\nWhen the JSON object represented here has a proto equivalent, the proto\nname will be indicated in the `@type` property.",
+                    "type": "object"
+                },
+                "requestMetadata": {
+                    "$ref": "RequestMetadata",
+                    "description": "Metadata about the operation."
+                },
+                "authenticationInfo": {
+                    "$ref": "AuthenticationInfo",
+                    "description": "Authentication information."
+                },
+                "status": {
+                    "$ref": "Status",
+                    "description": "The status of the overall operation."
+                },
+                "serviceName": {
+                    "description": "The name of the API service performing the operation. For example,\n`\"datastore.googleapis.com\"`.",
+                    "type": "string"
+                },
+                "response": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "The operation response. This may not include all response elements,\nsuch as those that are too large, privacy-sensitive, or duplicated\nelsewhere in the log record.\nIt should never include user-generated data, such as file contents.\nWhen the JSON object represented here has a proto equivalent, the proto\nname will be indicated in the `@type` property.",
+                    "type": "object"
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "Other service-specific data about the request, response, and other\ninformation associated with the current audited event.",
+                    "type": "object"
+                },
+                "methodName": {
+                    "description": "The name of the service method or operation.\nFor API calls, this should be the name of the API method.\nFor example,\n\n    \"google.datastore.v1.Datastore.RunQuery\"\n    \"google.logging.v1.LoggingService.DeleteLog\"",
+                    "type": "string"
+                },
+                "resourceName": {
+                    "description": "The resource or collection that is the target of the operation.\nThe name is a scheme-less URI, not including the API service name.\nFor example:\n\n    \"shelves/SHELF_ID/books\"\n    \"shelves/SHELF_ID/books/BOOK_ID\"",
+                    "type": "string"
+                },
+                "serviceData": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Deprecated, use `metadata` field instead.\nOther service-specific data about the request, response, and other\nactivities.",
+                    "type": "object"
+                },
+                "numResponseItems": {
+                    "description": "The number of items returned from a List or Query API method,\nif applicable.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LogEntry": {
+            "description": "An individual log entry.",
+            "id": "LogEntry",
+            "properties": {
+                "structPayload": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "The log entry payload, represented as a structure that\nis expressed as a JSON object.",
+                    "type": "object"
+                },
+                "textPayload": {
+                    "description": "The log entry payload, represented as a Unicode string (UTF-8).",
+                    "type": "string"
+                },
+                "protoPayload": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The log entry payload, represented as a protocol buffer that is\nexpressed as a JSON object. The only accepted type currently is\nAuditLog.",
+                    "type": "object"
+                },
+                "timestamp": {
+                    "description": "The time the event described by the log entry occurred. If\nomitted, defaults to operation start time.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "A set of user-defined (key, value) data that provides additional\ninformation about the log entry.",
+                    "type": "object"
+                },
+                "severity": {
+                    "description": "The severity of the log entry. The default value is\n`LogSeverity.DEFAULT`.",
+                    "enum": [
+                        "DEFAULT",
+                        "DEBUG",
+                        "INFO",
+                        "NOTICE",
+                        "WARNING",
+                        "ERROR",
+                        "CRITICAL",
+                        "ALERT",
+                        "EMERGENCY"
+                    ],
+                    "enumDescriptions": [
+                        "(0) The log entry has no assigned severity level.",
+                        "(100) Debug or trace information.",
+                        "(200) Routine information, such as ongoing status or performance.",
+                        "(300) Normal but significant events, such as start up, shut down, or\na configuration change.",
+                        "(400) Warning events might cause problems.",
+                        "(500) Error events are likely to cause problems.",
+                        "(600) Critical events cause more severe problems or outages.",
+                        "(700) A person must take an action immediately.",
+                        "(800) One or more systems are unusable."
+                    ],
+                    "type": "string"
+                },
+                "insertId": {
+                    "description": "A unique ID for the log entry used for deduplication. If omitted,\nthe implementation will generate one based on operation_id.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Required. The log to which this log entry belongs. Examples: `\"syslog\"`,\n`\"book_log\"`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MetricValue": {
+            "description": "Represents a single metric value.",
+            "id": "MetricValue",
+            "properties": {
+                "doubleValue": {
+                    "description": "A double precision floating point value.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "int64Value": {
+                    "description": "A signed 64-bit integer value.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "distributionValue": {
+                    "$ref": "Distribution",
+                    "description": "A distribution value."
+                },
+                "boolValue": {
+                    "description": "A boolean value.",
+                    "type": "boolean"
+                },
+                "endTime": {
+                    "description": "The end of the time period over which this metric value's measurement\napplies.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "The start of the time period over which this metric value's measurement\napplies. The time period has different semantics for different metric\ntypes (cumulative, delta, and gauge). See the metric definition\ndocumentation in the service configuration for details.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "moneyValue": {
+                    "$ref": "Money",
+                    "description": "A money value."
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "The labels describing the metric value.\nSee comments on google.api.servicecontrol.v1.Operation.labels for\nthe overriding relationship.",
+                    "type": "object"
+                },
+                "stringValue": {
+                    "description": "A text string value.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EndReconciliationResponse": {
+            "description": "Response message for QuotaController.EndReconciliation.",
+            "id": "EndReconciliationResponse",
+            "properties": {
+                "operationId": {
+                    "description": "The same operation_id value used in the EndReconciliationRequest. Used for\nlogging and diagnostics purposes.",
+                    "type": "string"
+                },
+                "reconciliationErrors": {
+                    "description": "Indicates the decision of the reconciliation end.",
+                    "items": {
+                        "$ref": "QuotaError"
+                    },
+                    "type": "array"
+                },
+                "serviceConfigId": {
+                    "description": "ID of the actual config used to process the request.",
+                    "type": "string"
+                },
+                "quotaMetrics": {
+                    "description": "Metric values as tracked by One Platform before the adjustment was made.\nThe following metrics will be included:\n\n1. Per quota metric total usage will be specified using the following gauge\nmetric:\n  \"serviceruntime.googleapis.com/allocation/consumer/quota_used_count\"\n\n2. Value for each quota limit associated with the metrics will be specified\nusing the following gauge metric:\n  \"serviceruntime.googleapis.com/quota/limit\"\n\n3. Delta value of the usage after the reconciliation for limits associated\nwith the metrics will be specified using the following metric:\n  \"serviceruntime.googleapis.com/allocation/reconciliation_delta\"\nThe delta value is defined as:\n  new_usage_from_client - existing_value_in_spanner.\nThis metric is not defined in serviceruntime.yaml or in Cloud Monarch.\nThis metric is meant for callers' use only. Since this metric is not\ndefined in the monitoring backend, reporting on this metric will result in\nan error.",
+                    "items": {
+                        "$ref": "MetricValueSet"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Money": {
+            "description": "Represents an amount of money with its currency type.",
+            "id": "Money",
+            "properties": {
+                "nanos": {
+                    "description": "Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999 inclusive.\nIf `units` is positive, `nanos` must be positive or zero.\nIf `units` is zero, `nanos` can be positive, zero, or negative.\nIf `units` is negative, `nanos` must be negative or zero.\nFor example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "units": {
+                    "description": "The whole units of the amount.\nFor example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "currencyCode": {
+                    "description": "The 3-letter currency code defined in ISO 4217.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Distribution": {
+            "description": "Distribution represents a frequency distribution of double-valued sample\npoints. It contains the size of the population of sample points plus\nadditional optional information:\n\n  - the arithmetic mean of the samples\n  - the minimum and maximum of the samples\n  - the sum-squared-deviation of the samples, used to compute variance\n  - a histogram of the values of the sample points",
+            "id": "Distribution",
+            "properties": {
+                "explicitBuckets": {
+                    "$ref": "ExplicitBuckets",
+                    "description": "Buckets with arbitrary user-provided width."
+                },
+                "maximum": {
+                    "description": "The maximum of the population of values. Ignored if `count` is zero.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "sumOfSquaredDeviation": {
+                    "description": "The sum of squared deviations from the mean:\n  Sum[i=1..count]((x_i - mean)^2)\nwhere each x_i is a sample values. If `count` is zero then this field\nmust be zero, otherwise validation of the request fails.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "exponentialBuckets": {
+                    "$ref": "ExponentialBuckets",
+                    "description": "Buckets with exponentially growing width."
+                },
+                "minimum": {
+                    "description": "The minimum of the population of values. Ignored if `count` is zero.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "linearBuckets": {
+                    "$ref": "LinearBuckets",
+                    "description": "Buckets with constant width."
+                },
+                "count": {
+                    "description": "The total number of samples in the distribution. Must be >= 0.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "mean": {
+                    "description": "The arithmetic mean of the samples in the distribution. If `count` is\nzero then this field must be zero.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "bucketCounts": {
+                    "description": "The number of samples in each histogram bucket. `bucket_counts` are\noptional. If present, they must sum to the `count` value.\n\nThe buckets are defined below in `bucket_option`. There are N buckets.\n`bucket_counts[0]` is the number of samples in the underflow bucket.\n`bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples\nin each of the finite buckets. And `bucket_counts[N] is the number\nof samples in the overflow bucket. See the comments of `bucket_option`\nbelow for more details.\n\nAny suffix of trailing zeros may be omitted.",
+                    "items": {
+                        "format": "int64",
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ExplicitBuckets": {
+            "description": "Describing buckets with arbitrary user-provided width.",
+            "id": "ExplicitBuckets",
+            "properties": {
+                "bounds": {
+                    "description": "'bound' is a list of strictly increasing boundaries between\nbuckets. Note that a list of length N-1 defines N buckets because\nof fenceposting. See comments on `bucket_options` for details.\n\nThe i'th finite bucket covers the interval\n  [bound[i-1], bound[i])\nwhere i ranges from 1 to bound_size() - 1. Note that there are no\nfinite buckets at all if 'bound' only contains a single element; in\nthat special case the single bound defines the boundary between the\nunderflow and overflow buckets.\n\nbucket number                   lower bound    upper bound\n i == 0 (underflow)              -inf           bound[i]\n 0 < i < bound_size()            bound[i-1]     bound[i]\n i == bound_size() (overflow)    bound[i-1]     +inf",
+                    "items": {
+                        "format": "double",
+                        "type": "number"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ExponentialBuckets": {
+            "description": "Describing buckets with exponentially growing width.",
+            "id": "ExponentialBuckets",
+            "properties": {
+                "growthFactor": {
+                    "description": "The i'th exponential bucket covers the interval\n  [scale * growth_factor^(i-1), scale * growth_factor^i)\nwhere i ranges from 1 to num_finite_buckets inclusive.\nMust be larger than 1.0.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "scale": {
+                    "description": "The i'th exponential bucket covers the interval\n  [scale * growth_factor^(i-1), scale * growth_factor^i)\nwhere i ranges from 1 to num_finite_buckets inclusive.\nMust be > 0.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "numFiniteBuckets": {
+                    "description": "The number of finite buckets. With the underflow and overflow buckets,\nthe total number of buckets is `num_finite_buckets` + 2.\nSee comments on `bucket_options` for details.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "AuthorizationInfo": {
+            "description": "Authorization information for the operation.",
+            "id": "AuthorizationInfo",
+            "properties": {
+                "resource": {
+                    "description": "The resource being accessed, as a REST-style string. For example:\n\n    bigquery.googleapis.com/projects/PROJECTID/datasets/DATASETID",
+                    "type": "string"
+                },
+                "granted": {
+                    "description": "Whether or not authorization for `resource` and `permission`\nwas granted.",
+                    "type": "boolean"
+                },
+                "permission": {
+                    "description": "The required IAM permission.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ResourceInfo": {
+            "description": "Describes a resource associated with this operation.",
+            "id": "ResourceInfo",
+            "properties": {
+                "resourceName": {
+                    "description": "Name of the resource. This is used for auditing purposes.",
+                    "type": "string"
+                },
+                "resourceContainer": {
+                    "description": "The identifier of the parent of this resource instance.\nMust be in one of the following formats:\n    - “projects/<project-id or project-number>”\n    - “folders/<folder-id>”\n    - “organizations/<organization-id>”",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "StartReconciliationResponse": {
+            "description": "Response message for QuotaController.StartReconciliation.",
+            "id": "StartReconciliationResponse",
+            "properties": {
+                "quotaMetrics": {
+                    "description": "Metric values as tracked by One Platform before the start of\nreconciliation. The following metrics will be included:\n\n1. Per quota metric total usage will be specified using the following gauge\nmetric:\n  \"serviceruntime.googleapis.com/allocation/consumer/quota_used_count\"\n\n2. Value for each quota limit associated with the metrics will be specified\nusing the following gauge metric:\n  \"serviceruntime.googleapis.com/quota/limit\"",
+                    "items": {
+                        "$ref": "MetricValueSet"
+                    },
+                    "type": "array"
+                },
+                "operationId": {
+                    "description": "The same operation_id value used in the StartReconciliationRequest. Used\nfor logging and diagnostics purposes.",
+                    "type": "string"
+                },
+                "reconciliationErrors": {
+                    "description": "Indicates the decision of the reconciliation start.",
+                    "items": {
+                        "$ref": "QuotaError"
+                    },
+                    "type": "array"
+                },
+                "serviceConfigId": {
+                    "description": "ID of the actual config used to process the request.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "QuotaProperties": {
+            "description": "Represents the properties needed for quota operations.",
+            "id": "QuotaProperties",
+            "properties": {
+                "quotaMode": {
+                    "description": "Quota mode for this operation.",
+                    "enum": [
+                        "ACQUIRE",
+                        "ACQUIRE_BEST_EFFORT",
+                        "CHECK",
+                        "RELEASE"
+                    ],
+                    "enumDescriptions": [
+                        "Decreases available quota by the cost specified for the operation.\nIf cost is higher than available quota, operation fails and returns\nerror.",
+                        "Decreases available quota by the cost specified for the operation.\nIf cost is higher than available quota, operation does not fail and\navailable quota goes down to zero but it returns error.",
+                        "Does not change any available quota. Only checks if there is enough\nquota.\nNo lock is placed on the checked tokens neither.",
+                        "Increases available quota by the operation cost specified for the\noperation."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LinearBuckets": {
+            "description": "Describing buckets with constant width.",
+            "id": "LinearBuckets",
+            "properties": {
+                "numFiniteBuckets": {
+                    "description": "The number of finite buckets. With the underflow and overflow buckets,\nthe total number of buckets is `num_finite_buckets` + 2.\nSee comments on `bucket_options` for details.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "width": {
+                    "description": "The i'th linear bucket covers the interval\n  [offset + (i-1) * width, offset + i * width)\nwhere i ranges from 1 to num_finite_buckets, inclusive.\nMust be strictly positive.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "offset": {
+                    "description": "The i'th linear bucket covers the interval\n  [offset + (i-1) * width, offset + i * width)\nwhere i ranges from 1 to num_finite_buckets, inclusive.",
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "AuthenticationInfo": {
+            "description": "Authentication information for the operation.",
+            "id": "AuthenticationInfo",
+            "properties": {
+                "authoritySelector": {
+                    "description": "The authority selector specified by the requestor, if any.\nIt is not guaranteed that the principal was allowed to use this authority.",
+                    "type": "string"
+                },
+                "thirdPartyPrincipal": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "The third party identification (if any) of the authenticated user making\nthe request.\nWhen the JSON object represented here has a proto equivalent, the proto\nname will be indicated in the `@type` property.",
+                    "type": "object"
+                },
+                "principalEmail": {
+                    "description": "The email address of the authenticated user (or service account on behalf\nof third party principal) making the request. For privacy reasons, the\nprincipal email address is redacted for all read-only operations that fail\nwith a \"permission denied\" error.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AllocateQuotaResponse": {
+            "description": "Response message for the AllocateQuota method.",
+            "id": "AllocateQuotaResponse",
+            "properties": {
+                "operationId": {
+                    "description": "The same operation_id value used in the AllocateQuotaRequest. Used for\nlogging and diagnostics purposes.",
+                    "type": "string"
+                },
+                "serviceConfigId": {
+                    "description": "ID of the actual config used to process the request.",
+                    "type": "string"
+                },
+                "allocateInfo": {
+                    "$ref": "AllocateInfo",
+                    "description": "WARNING: DO NOT use this field until this warning message is removed."
+                },
+                "allocateErrors": {
+                    "description": "Indicates the decision of the allocate.",
+                    "items": {
+                        "$ref": "QuotaError"
+                    },
+                    "type": "array"
+                },
+                "quotaMetrics": {
+                    "description": "Quota metrics to indicate the result of allocation. Depending on the\nrequest, one or more of the following metrics will be included:\n\n1. Per quota group or per quota metric incremental usage will be specified\nusing the following delta metric :\n  \"serviceruntime.googleapis.com/api/consumer/quota_used_count\"\n\n2. The quota limit reached condition will be specified using the following\nboolean metric :\n  \"serviceruntime.googleapis.com/quota/exceeded\"",
+                    "items": {
+                        "$ref": "MetricValueSet"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ReleaseQuotaRequest": {
+            "description": "Request message for the ReleaseQuota method.",
+            "id": "ReleaseQuotaRequest",
+            "properties": {
+                "releaseOperation": {
+                    "$ref": "QuotaOperation",
+                    "description": "Operation that describes the quota release."
+                },
+                "serviceConfigId": {
+                    "description": "Specifies which version of service configuration should be used to process\nthe request. If unspecified or no matching version can be found, the latest\none will be used.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "RequestMetadata": {
+            "description": "Metadata about the request.",
+            "id": "RequestMetadata",
+            "properties": {
+                "callerSuppliedUserAgent": {
+                    "description": "The user agent of the caller.\nThis information is not authenticated and should be treated accordingly.\nFor example:\n\n+   `google-api-python-client/1.4.0`:\n    The request was made by the Google API client for Python.\n+   `Cloud SDK Command Line Tool apitools-client/1.0 gcloud/0.9.62`:\n    The request was made by the Google Cloud SDK CLI (gcloud).\n+   `AppEngine-Google; (+http://code.google.com/appengine; appid: s~my-project`:\n    The request was made from the `my-project` App Engine app.\nNOLINT",
+                    "type": "string"
+                },
+                "callerNetwork": {
+                    "description": "The network of the caller.\nSet only if the network host project is part of the same GCP organization\n(or project) as the accessed resource.\nSee https://cloud.google.com/compute/docs/vpc/ for more information.\nThis is a scheme-less URI full resource name. For example:\n\n    \"//compute.googleapis.com/projects/PROJECT_ID/global/networks/NETWORK_ID\"",
+                    "type": "string"
+                },
+                "callerIp": {
+                    "description": "The IP address of the caller.\nFor caller from internet, this will be public IPv4 or IPv6 address.\nFor caller from a Compute Engine VM with external IP address, this\nwill be the VM's external IP address. For caller from a Compute\nEngine VM without external IP address, if the VM is in the same\norganization (or project) as the accessed resource, `caller_ip` will\nbe the VM's internal IPv4 address, otherwise the `caller_ip` will be\nredacted to \"gce-internal-ip\".\nSee https://cloud.google.com/compute/docs/vpc/ for more information.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "QuotaError": {
+            "description": "Represents error information for QuotaOperation.",
+            "id": "QuotaError",
+            "properties": {
+                "subject": {
+                    "description": "Subject to whom this error applies. See the specific enum for more details\non this field. For example, \"clientip:<ip address of client>\" or\n\"project:<Google developer project id>\".",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Free-form text that provides details on the cause of the error.",
+                    "type": "string"
+                },
+                "code": {
+                    "description": "Error code.",
+                    "enum": [
+                        "UNSPECIFIED",
+                        "RESOURCE_EXHAUSTED",
+                        "OUT_OF_RANGE",
+                        "BILLING_NOT_ACTIVE",
+                        "PROJECT_DELETED",
+                        "API_KEY_INVALID",
+                        "API_KEY_EXPIRED",
+                        "SPATULA_HEADER_INVALID",
+                        "LOAS_ROLE_INVALID",
+                        "NO_LOAS_PROJECT",
+                        "PROJECT_STATUS_UNAVAILABLE",
+                        "SERVICE_STATUS_UNAVAILABLE",
+                        "BILLING_STATUS_UNAVAILABLE",
+                        "QUOTA_SYSTEM_UNAVAILABLE"
+                    ],
+                    "enumDescriptions": [
+                        "This is never used.",
+                        "Quota allocation failed.\nSame as google.rpc.Code.RESOURCE_EXHAUSTED.",
+                        "Quota release failed.  This error is ONLY returned on a NORMAL release.\nMore formally:  if a user requests a release of 10 tokens, but only\n5 tokens were previously allocated, in a BEST_EFFORT release, this will\nbe considered a success, 5 tokens will be released, and the result will\nbe \"Ok\".  If this is done in NORMAL mode, no tokens will be released,\nand an OUT_OF_RANGE error will be returned.\nSame as google.rpc.Code.OUT_OF_RANGE.",
+                        "Consumer cannot access the service because the service requires active\nbilling.",
+                        "Consumer's project has been marked as deleted (soft deletion).",
+                        "Specified API key is invalid.",
+                        "Specified API Key has expired.",
+                        "Consumer's spatula header is invalid.",
+                        "The consumer's LOAS role is invalid.",
+                        "The consumer's LOAS role has no associated project.",
+                        "The backend server for looking up project id/number is unavailable.",
+                        "The backend server for checking service status is unavailable.",
+                        "The backend server for checking billing status is unavailable.",
+                        "The backend server for checking quota limits is unavailable."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "CheckInfo": {
             "description": "Contains additional information about the check operation.",
             "id": "CheckInfo",
@@ -305,6 +979,21 @@
             },
             "type": "object"
         },
+        "AllocateQuotaRequest": {
+            "description": "Request message for the AllocateQuota method.",
+            "id": "AllocateQuotaRequest",
+            "properties": {
+                "allocateOperation": {
+                    "$ref": "QuotaOperation",
+                    "description": "Operation that describes the quota allocation."
+                },
+                "serviceConfigId": {
+                    "description": "Specifies which version of service configuration should be used to process\nthe request. If unspecified or no matching version can be found, the latest\none will be used.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ReleaseQuotaResponse": {
             "description": "Response message for the ReleaseQuota method.",
             "id": "ReleaseQuotaResponse",
@@ -334,21 +1023,6 @@
             },
             "type": "object"
         },
-        "AllocateQuotaRequest": {
-            "description": "Request message for the AllocateQuota method.",
-            "id": "AllocateQuotaRequest",
-            "properties": {
-                "serviceConfigId": {
-                    "description": "Specifies which version of service configuration should be used to process\nthe request. If unspecified or no matching version can be found, the latest\none will be used.",
-                    "type": "string"
-                },
-                "allocateOperation": {
-                    "$ref": "QuotaOperation",
-                    "description": "Operation that describes the quota allocation."
-                }
-            },
-            "type": "object"
-        },
         "MetricValueSet": {
             "description": "Represents a set of metric values in the same metric.\nEach metric value in the set should have a unique combination of start time,\nend time, and label values.",
             "id": "MetricValueSet",
@@ -371,13 +1045,13 @@
             "description": "Represents the processing error of one Operation in the request.",
             "id": "ReportError",
             "properties": {
-                "status": {
-                    "$ref": "Status",
-                    "description": "Details of the error when processing the Operation."
-                },
                 "operationId": {
                     "description": "The Operation.operation_id value from the request.",
                     "type": "string"
+                },
+                "status": {
+                    "$ref": "Status",
+                    "description": "Details of the error when processing the Operation."
                 }
             },
             "type": "object"
@@ -386,13 +1060,13 @@
             "description": "Request message for QuotaController.StartReconciliation.",
             "id": "StartReconciliationRequest",
             "properties": {
-                "serviceConfigId": {
-                    "description": "Specifies which version of service configuration should be used to process\nthe request. If unspecified or no matching version can be found, the latest\none will be used.",
-                    "type": "string"
-                },
                 "reconciliationOperation": {
                     "$ref": "QuotaOperation",
                     "description": "Operation that describes the quota reconciliation."
+                },
+                "serviceConfigId": {
+                    "description": "Specifies which version of service configuration should be used to process\nthe request. If unspecified or no matching version can be found, the latest\none will be used.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -484,13 +1158,6 @@
             "description": "Contains the quota information for a quota check response.",
             "id": "QuotaInfo",
             "properties": {
-                "limitExceeded": {
-                    "description": "Quota Metrics that have exceeded quota limits.\nFor QuotaGroup-based quota, this is QuotaGroup.name\nFor QuotaLimit-based quota, this is QuotaLimit.name\nSee: google.api.Quota\nDeprecated: Use quota_metrics to get per quota group limit exceeded status.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
                 "quotaConsumed": {
                     "additionalProperties": {
                         "format": "int32",
@@ -505,6 +1172,13 @@
                         "$ref": "MetricValueSet"
                     },
                     "type": "array"
+                },
+                "limitExceeded": {
+                    "description": "Quota Metrics that have exceeded quota limits.\nFor QuotaGroup-based quota, this is QuotaGroup.name\nFor QuotaLimit-based quota, this is QuotaLimit.name\nSee: google.api.Quota\nDeprecated: Use quota_metrics to get per quota group limit exceeded status.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -529,14 +1203,14 @@
                     "description": "Indicates if service activation check should be skipped for this request.\nDefault behavior is to perform the check and apply relevant quota.",
                     "type": "boolean"
                 },
-                "requestProjectSettings": {
-                    "description": "Requests the project settings to be returned as part of the check response.",
-                    "type": "boolean"
-                },
                 "operation": {
                     "$ref": "Operation",
                     "description": "The operation to be checked."
                 },
+                "requestProjectSettings": {
+                    "description": "Requests the project settings to be returned as part of the check response.",
+                    "type": "boolean"
+                },
                 "serviceConfigId": {
                     "description": "Specifies which version of service configuration should be used to process\nthe request.\n\nIf unspecified or no matching version can be found, the\nlatest one will be used.",
                     "type": "string"
@@ -548,14 +1222,6 @@
             "description": "Represents information regarding a quota operation.",
             "id": "QuotaOperation",
             "properties": {
-                "consumerId": {
-                    "description": "Identity of the consumer for whom this quota operation is being performed.\n\nThis can be in one of the following formats:\n  project:<project_id>,\n  project_number:<project_number>,\n  api_key:<api_key>.",
-                    "type": "string"
-                },
-                "operationId": {
-                    "description": "Identity of the operation. This is expected to be unique within the scope\nof the service that generated the operation, and guarantees idempotency in\ncase of retries.\n\nUUID version 4 is recommended, though not required. In scenarios where an\noperation is computed from existing information and an idempotent id is\ndesirable for deduplication purpose, UUID version 5 is recommended. See\nRFC 4122 for details.",
-                    "type": "string"
-                },
                 "quotaMode": {
                     "description": "Quota mode for this operation.",
                     "enum": [
@@ -566,18 +1232,18 @@
                     ],
                     "enumDescriptions": [
                         "Guard against implicit default. Must not be used.",
-                        "For AllocateQuota request, allocates quota for the amount specified in\nthe service configuration or specified using the quota metrics. If the\namount is higher than the available quota, allocation error will be\nreturned and no quota will be allocated.\nFor ReleaseQuota request, this mode is supported only for precise quota\nlimits. In this case, this operation releases quota for the amount\nspecified in the service configuration or specified using the quota\nmetrics. If the release can make used quota negative, release error\nwill be returned and no quota will be released.",
-                        "For AllocateQuota request, this mode is supported only for imprecise\nquota limits. In this case, the operation allocates quota for the amount\nspecified in the service configuration or specified using the quota\nmetrics. If the amount is higher than the available quota, request does\nnot fail but all available quota will be allocated.\nFor ReleaseQuota request, this mode is supported for both precise quota\nlimits and imprecise quota limits. In this case, this operation releases\nquota for the amount specified in the service configuration or specified\nusing the quota metrics. If the release can make used quota\nnegative, request does not fail but only the used quota will be\nreleased. After the ReleaseQuota request completes, the used quota\nwill be 0, and never goes to negative.",
-                        "For AllocateQuota request, only checks if there is enough quota\navailable and does not change the available quota. No lock is placed on\nthe available quota either. Not supported for ReleaseQuota request."
+                        "For AllocateQuota request, allocates quota for the amount specified in\nthe service configuration or specified using the quota metrics. If the\namount is higher than the available quota, allocation error will be\nreturned and no quota will be allocated.",
+                        "The operation allocates quota for the amount specified in the service\nconfiguration or specified using the quota metrics. If the amount is\nhigher than the available quota, request does not fail but all available\nquota will be allocated.",
+                        "For AllocateQuota request, only checks if there is enough quota\navailable and does not change the available quota. No lock is placed on\nthe available quota either."
                     ],
                     "type": "string"
                 },
                 "methodName": {
-                    "description": "Fully qualified name of the API method for which this quota operation is\nrequested. This name is used for matching quota rules or metric rules and\nbilling status rules defined in service configuration. This field is not\nrequired if the quota operation is performed on non-API resources.\n\nExample of an RPC method name:\n    google.example.library.v1.LibraryService.CreateShelf",
+                    "description": "Fully qualified name of the API method for which this quota operation is\nrequested. This name is used for matching quota rules or metric rules and\nbilling status rules defined in service configuration.\n\nThis field should not be set if any of the following is true:\n(1) the quota operation is performed on non-API resources.\n(2) quota_metrics is set because the caller is doing quota override.\n\nExample of an RPC method name:\n    google.example.library.v1.LibraryService.CreateShelf",
                     "type": "string"
                 },
                 "quotaMetrics": {
-                    "description": "Represents information about this operation. Each MetricValueSet\ncorresponds to a metric defined in the service configuration.\nThe data type used in the MetricValueSet must agree with\nthe data type specified in the metric definition.\n\nWithin a single operation, it is not allowed to have more than one\nMetricValue instances that have the same metric names and identical\nlabel value combinations. If a request has such duplicated MetricValue\ninstances, the entire request is rejected with\nan invalid argument error.",
+                    "description": "Represents information about this operation. Each MetricValueSet\ncorresponds to a metric defined in the service configuration.\nThe data type used in the MetricValueSet must agree with\nthe data type specified in the metric definition.\n\nWithin a single operation, it is not allowed to have more than one\nMetricValue instances that have the same metric names and identical\nlabel value combinations. If a request has such duplicated MetricValue\ninstances, the entire request is rejected with\nan invalid argument error.\n\nThis field is mutually exclusive with method_name.",
                     "items": {
                         "$ref": "MetricValueSet"
                     },
@@ -589,6 +1255,14 @@
                     },
                     "description": "Labels describing the operation.",
                     "type": "object"
+                },
+                "consumerId": {
+                    "description": "Identity of the consumer for whom this quota operation is being performed.\n\nThis can be in one of the following formats:\n  project:<project_id>,\n  project_number:<project_number>,\n  api_key:<api_key>.",
+                    "type": "string"
+                },
+                "operationId": {
+                    "description": "Identity of the operation. This is expected to be unique within the scope\nof the service that generated the operation, and guarantees idempotency in\ncase of retries.\n\nUUID version 4 is recommended, though not required. In scenarios where an\noperation is computed from existing information and an idempotent id is\ndesirable for deduplication purpose, UUID version 5 is recommended. See\nRFC 4122 for details.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -597,13 +1271,13 @@
             "description": "Request message for QuotaController.EndReconciliation.",
             "id": "EndReconciliationRequest",
             "properties": {
-                "reconciliationOperation": {
-                    "$ref": "QuotaOperation",
-                    "description": "Operation that describes the quota reconciliation."
-                },
                 "serviceConfigId": {
                     "description": "Specifies which version of service configuration should be used to process\nthe request. If unspecified or no matching version can be found, the latest\none will be used.",
                     "type": "string"
+                },
+                "reconciliationOperation": {
+                    "$ref": "QuotaOperation",
+                    "description": "Operation that describes the quota reconciliation."
                 }
             },
             "type": "object"
@@ -627,10 +1301,6 @@
             "description": "Response message for the Report method.",
             "id": "ReportResponse",
             "properties": {
-                "serviceConfigId": {
-                    "description": "The actual config id used to process the request.",
-                    "type": "string"
-                },
                 "reportErrors": {
                     "description": "Partial failures, one for each `Operation` in the request that failed\nprocessing. There are three possible combinations of the RPC status:\n\n1. The combination of a successful RPC status and an empty `report_errors`\n   list indicates a complete success where all `Operations` in the\n   request are processed successfully.\n2. The combination of a successful RPC status and a non-empty\n   `report_errors` list indicates a partial success where some\n   `Operations` in the request succeeded. Each\n   `Operation` that failed processing has a corresponding item\n   in this list.\n3. A failed RPC status indicates a general non-deterministic failure.\n   When this happens, it's impossible to know which of the\n   'Operations' in the request succeeded or failed.",
                     "items": {
@@ -644,6 +1314,10 @@
                         "$ref": "ReportInfo"
                     },
                     "type": "array"
+                },
+                "serviceConfigId": {
+                    "description": "The actual config id used to process the request.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -652,6 +1326,32 @@
             "description": "Represents information regarding an operation.",
             "id": "Operation",
             "properties": {
+                "quotaProperties": {
+                    "$ref": "QuotaProperties",
+                    "description": "Represents the properties needed for quota check. Applicable only if this\noperation is for a quota check request. If this is not specified, no quota\ncheck will be performed."
+                },
+                "consumerId": {
+                    "description": "Identity of the consumer who is using the service.\nThis field should be filled in for the operations initiated by a\nconsumer, but not for service-initiated operations that are\nnot related to a specific consumer.\n\nThis can be in one of the following formats:\n  project:<project_id>,\n  project_number:<project_number>,\n  api_key:<api_key>.",
+                    "type": "string"
+                },
+                "operationId": {
+                    "description": "Identity of the operation. This must be unique within the scope of the\nservice that generated the operation. If the service calls\nCheck() and Report() on the same operation, the two calls should carry\nthe same id.\n\nUUID version 4 is recommended, though not required.\nIn scenarios where an operation is computed from existing information\nand an idempotent id is desirable for deduplication purpose, UUID version 5\nis recommended. See RFC 4122 for details.",
+                    "type": "string"
+                },
+                "operationName": {
+                    "description": "Fully qualified name of the operation. Reserved for future use.",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "End time of the operation.\nRequired when the operation is used in ServiceController.Report,\nbut optional when the operation is used in ServiceController.Check.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Required. Start time of the operation.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
                 "importance": {
                     "description": "DO NOT USE. This is an experimental field.",
                     "enum": [
@@ -704,709 +1404,6 @@
                         "$ref": "MetricValueSet"
                     },
                     "type": "array"
-                },
-                "quotaProperties": {
-                    "$ref": "QuotaProperties",
-                    "description": "Represents the properties needed for quota check. Applicable only if this\noperation is for a quota check request. If this is not specified, no quota\ncheck will be performed."
-                },
-                "consumerId": {
-                    "description": "Identity of the consumer who is using the service.\nThis field should be filled in for the operations initiated by a\nconsumer, but not for service-initiated operations that are\nnot related to a specific consumer.\n\nThis can be in one of the following formats:\n  project:<project_id>,\n  project_number:<project_number>,\n  api_key:<api_key>.",
-                    "type": "string"
-                },
-                "operationId": {
-                    "description": "Identity of the operation. This must be unique within the scope of the\nservice that generated the operation. If the service calls\nCheck() and Report() on the same operation, the two calls should carry\nthe same id.\n\nUUID version 4 is recommended, though not required.\nIn scenarios where an operation is computed from existing information\nand an idempotent id is desirable for deduplication purpose, UUID version 5\nis recommended. See RFC 4122 for details.",
-                    "type": "string"
-                },
-                "endTime": {
-                    "description": "End time of the operation.\nRequired when the operation is used in ServiceController.Report,\nbut optional when the operation is used in ServiceController.Check.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "operationName": {
-                    "description": "Fully qualified name of the operation. Reserved for future use.",
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "Required. Start time of the operation.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CheckResponse": {
-            "description": "Response message for the Check method.",
-            "id": "CheckResponse",
-            "properties": {
-                "checkInfo": {
-                    "$ref": "CheckInfo",
-                    "description": "Feedback data returned from the server during processing a Check request."
-                },
-                "checkErrors": {
-                    "description": "Indicate the decision of the check.\n\nIf no check errors are present, the service should process the operation.\nOtherwise the service should use the list of errors to determine the\nappropriate action.",
-                    "items": {
-                        "$ref": "CheckError"
-                    },
-                    "type": "array"
-                },
-                "operationId": {
-                    "description": "The same operation_id value used in the CheckRequest.\nUsed for logging and diagnostics purposes.",
-                    "type": "string"
-                },
-                "serviceConfigId": {
-                    "description": "The actual config id used to process the request.",
-                    "type": "string"
-                },
-                "quotaInfo": {
-                    "$ref": "QuotaInfo",
-                    "description": "Quota information for the check request associated with this response.\n"
-                }
-            },
-            "type": "object"
-        },
-        "Status": {
-            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
-            "id": "Status",
-            "properties": {
-                "details": {
-                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                },
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ReportRequest": {
-            "description": "Request message for the Report method.",
-            "id": "ReportRequest",
-            "properties": {
-                "serviceConfigId": {
-                    "description": "Specifies which version of service config should be used to process the\nrequest.\n\nIf unspecified or no matching version can be found, the\nlatest one will be used.",
-                    "type": "string"
-                },
-                "operations": {
-                    "description": "Operations to be reported.\n\nTypically the service should report one operation per request.\nPutting multiple operations into a single request is allowed, but should\nbe used only when multiple operations are natually available at the time\nof the report.\n\nIf multiple operations are in a single request, the total request size\nshould be no larger than 1MB. See ReportResponse.report_errors for\npartial failure behavior.",
-                    "items": {
-                        "$ref": "Operation"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AllocateInfo": {
-            "id": "AllocateInfo",
-            "properties": {
-                "unusedArguments": {
-                    "description": "A list of label keys that were unused by the server in processing the\nrequest. Thus, for similar requests repeated in a certain future time\nwindow, the caller can choose to ignore these labels in the requests\nto achieve better client-side cache hits and quota aggregation.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "LogEntry": {
-            "description": "An individual log entry.",
-            "id": "LogEntry",
-            "properties": {
-                "labels": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "A set of user-defined (key, value) data that provides additional\ninformation about the log entry.",
-                    "type": "object"
-                },
-                "severity": {
-                    "description": "The severity of the log entry. The default value is\n`LogSeverity.DEFAULT`.",
-                    "enum": [
-                        "DEFAULT",
-                        "DEBUG",
-                        "INFO",
-                        "NOTICE",
-                        "WARNING",
-                        "ERROR",
-                        "CRITICAL",
-                        "ALERT",
-                        "EMERGENCY"
-                    ],
-                    "enumDescriptions": [
-                        "(0) The log entry has no assigned severity level.",
-                        "(100) Debug or trace information.",
-                        "(200) Routine information, such as ongoing status or performance.",
-                        "(300) Normal but significant events, such as start up, shut down, or\na configuration change.",
-                        "(400) Warning events might cause problems.",
-                        "(500) Error events are likely to cause problems.",
-                        "(600) Critical events cause more severe problems or outages.",
-                        "(700) A person must take an action immediately.",
-                        "(800) One or more systems are unusable."
-                    ],
-                    "type": "string"
-                },
-                "insertId": {
-                    "description": "A unique ID for the log entry used for deduplication. If omitted,\nthe implementation will generate one based on operation_id.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Required. The log to which this log entry belongs. Examples: `\"syslog\"`,\n`\"book_log\"`.",
-                    "type": "string"
-                },
-                "structPayload": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "The log entry payload, represented as a structure that\nis expressed as a JSON object.",
-                    "type": "object"
-                },
-                "textPayload": {
-                    "description": "The log entry payload, represented as a Unicode string (UTF-8).",
-                    "type": "string"
-                },
-                "protoPayload": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "The log entry payload, represented as a protocol buffer that is\nexpressed as a JSON object. The only accepted type currently is\nAuditLog.",
-                    "type": "object"
-                },
-                "timestamp": {
-                    "description": "The time the event described by the log entry occurred. If\nomitted, defaults to operation start time.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AuditLog": {
-            "description": "Common audit log format for Google Cloud Platform API operations.\n\n",
-            "id": "AuditLog",
-            "properties": {
-                "authenticationInfo": {
-                    "$ref": "AuthenticationInfo",
-                    "description": "Authentication information."
-                },
-                "status": {
-                    "$ref": "Status",
-                    "description": "The status of the overall operation."
-                },
-                "response": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "The operation response. This may not include all response elements,\nsuch as those that are too large, privacy-sensitive, or duplicated\nelsewhere in the log record.\nIt should never include user-generated data, such as file contents.\nWhen the JSON object represented here has a proto equivalent, the proto\nname will be indicated in the `@type` property.",
-                    "type": "object"
-                },
-                "serviceName": {
-                    "description": "The name of the API service performing the operation. For example,\n`\"datastore.googleapis.com\"`.",
-                    "type": "string"
-                },
-                "metadata": {
-                    "description": "Other service-specific data about the request, response, and other\ninformation associated with the current audited event.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                },
-                "methodName": {
-                    "description": "The name of the service method or operation.\nFor API calls, this should be the name of the API method.\nFor example,\n\n    \"google.datastore.v1.Datastore.RunQuery\"\n    \"google.logging.v1.LoggingService.DeleteLog\"",
-                    "type": "string"
-                },
-                "resourceName": {
-                    "description": "The resource or collection that is the target of the operation.\nThe name is a scheme-less URI, not including the API service name.\nFor example:\n\n    \"shelves/SHELF_ID/books\"\n    \"shelves/SHELF_ID/books/BOOK_ID\"",
-                    "type": "string"
-                },
-                "serviceData": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Deprecated, use `metadata` field instead.\nOther service-specific data about the request, response, and other\nactivities.",
-                    "type": "object"
-                },
-                "numResponseItems": {
-                    "description": "The number of items returned from a List or Query API method,\nif applicable.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "authorizationInfo": {
-                    "description": "Authorization information. If there are multiple\nresources or permissions involved, then there is\none AuthorizationInfo element for each {resource, permission} tuple.",
-                    "items": {
-                        "$ref": "AuthorizationInfo"
-                    },
-                    "type": "array"
-                },
-                "request": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "The operation request. This may not include all request parameters,\nsuch as those that are too large, privacy-sensitive, or duplicated\nelsewhere in the log record.\nIt should never include user-generated data, such as file contents.\nWhen the JSON object represented here has a proto equivalent, the proto\nname will be indicated in the `@type` property.",
-                    "type": "object"
-                },
-                "requestMetadata": {
-                    "$ref": "RequestMetadata",
-                    "description": "Metadata about the operation."
-                }
-            },
-            "type": "object"
-        },
-        "MetricValue": {
-            "description": "Represents a single metric value.",
-            "id": "MetricValue",
-            "properties": {
-                "distributionValue": {
-                    "$ref": "Distribution",
-                    "description": "A distribution value."
-                },
-                "boolValue": {
-                    "description": "A boolean value.",
-                    "type": "boolean"
-                },
-                "endTime": {
-                    "description": "The end of the time period over which this metric value's measurement\napplies.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "The start of the time period over which this metric value's measurement\napplies. The time period has different semantics for different metric\ntypes (cumulative, delta, and gauge). See the metric definition\ndocumentation in the service configuration for details.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "moneyValue": {
-                    "$ref": "Money",
-                    "description": "A money value."
-                },
-                "stringValue": {
-                    "description": "A text string value.",
-                    "type": "string"
-                },
-                "labels": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "The labels describing the metric value.\nSee comments on google.api.servicecontrol.v1.Operation.labels for\nthe overriding relationship.",
-                    "type": "object"
-                },
-                "doubleValue": {
-                    "description": "A double precision floating point value.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "int64Value": {
-                    "description": "A signed 64-bit integer value.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Money": {
-            "description": "Represents an amount of money with its currency type.",
-            "id": "Money",
-            "properties": {
-                "currencyCode": {
-                    "description": "The 3-letter currency code defined in ISO 4217.",
-                    "type": "string"
-                },
-                "nanos": {
-                    "description": "Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999 inclusive.\nIf `units` is positive, `nanos` must be positive or zero.\nIf `units` is zero, `nanos` can be positive, zero, or negative.\nIf `units` is negative, `nanos` must be negative or zero.\nFor example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "units": {
-                    "description": "The whole units of the amount.\nFor example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "EndReconciliationResponse": {
-            "description": "Response message for QuotaController.EndReconciliation.",
-            "id": "EndReconciliationResponse",
-            "properties": {
-                "quotaMetrics": {
-                    "description": "Metric values as tracked by One Platform before the adjustment was made.\nThe following metrics will be included:\n\n1. Per quota metric total usage will be specified using the following gauge\nmetric:\n  \"serviceruntime.googleapis.com/allocation/consumer/quota_used_count\"\n\n2. Value for each quota limit associated with the metrics will be specified\nusing the following gauge metric:\n  \"serviceruntime.googleapis.com/quota/limit\"\n\n3. Delta value of the usage after the reconciliation for limits associated\nwith the metrics will be specified using the following metric:\n  \"serviceruntime.googleapis.com/allocation/reconciliation_delta\"\nThe delta value is defined as:\n  new_usage_from_client - existing_value_in_spanner.\nThis metric is not defined in serviceruntime.yaml or in Cloud Monarch.\nThis metric is meant for callers' use only. Since this metric is not\ndefined in the monitoring backend, reporting on this metric will result in\nan error.",
-                    "items": {
-                        "$ref": "MetricValueSet"
-                    },
-                    "type": "array"
-                },
-                "reconciliationErrors": {
-                    "description": "Indicates the decision of the reconciliation end.",
-                    "items": {
-                        "$ref": "QuotaError"
-                    },
-                    "type": "array"
-                },
-                "operationId": {
-                    "description": "The same operation_id value used in the EndReconciliationRequest. Used for\nlogging and diagnostics purposes.",
-                    "type": "string"
-                },
-                "serviceConfigId": {
-                    "description": "ID of the actual config used to process the request.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ExplicitBuckets": {
-            "description": "Describing buckets with arbitrary user-provided width.",
-            "id": "ExplicitBuckets",
-            "properties": {
-                "bounds": {
-                    "description": "'bound' is a list of strictly increasing boundaries between\nbuckets. Note that a list of length N-1 defines N buckets because\nof fenceposting. See comments on `bucket_options` for details.\n\nThe i'th finite bucket covers the interval\n  [bound[i-1], bound[i])\nwhere i ranges from 1 to bound_size() - 1. Note that there are no\nfinite buckets at all if 'bound' only contains a single element; in\nthat special case the single bound defines the boundary between the\nunderflow and overflow buckets.\n\nbucket number                   lower bound    upper bound\n i == 0 (underflow)              -inf           bound[i]\n 0 < i < bound_size()            bound[i-1]     bound[i]\n i == bound_size() (overflow)    bound[i-1]     +inf",
-                    "items": {
-                        "format": "double",
-                        "type": "number"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Distribution": {
-            "description": "Distribution represents a frequency distribution of double-valued sample\npoints. It contains the size of the population of sample points plus\nadditional optional information:\n\n  - the arithmetic mean of the samples\n  - the minimum and maximum of the samples\n  - the sum-squared-deviation of the samples, used to compute variance\n  - a histogram of the values of the sample points",
-            "id": "Distribution",
-            "properties": {
-                "count": {
-                    "description": "The total number of samples in the distribution. Must be >= 0.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "mean": {
-                    "description": "The arithmetic mean of the samples in the distribution. If `count` is\nzero then this field must be zero.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "bucketCounts": {
-                    "description": "The number of samples in each histogram bucket. `bucket_counts` are\noptional. If present, they must sum to the `count` value.\n\nThe buckets are defined below in `bucket_option`. There are N buckets.\n`bucket_counts[0]` is the number of samples in the underflow bucket.\n`bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples\nin each of the finite buckets. And `bucket_counts[N] is the number\nof samples in the overflow bucket. See the comments of `bucket_option`\nbelow for more details.\n\nAny suffix of trailing zeros may be omitted.",
-                    "items": {
-                        "format": "int64",
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "explicitBuckets": {
-                    "$ref": "ExplicitBuckets",
-                    "description": "Buckets with arbitrary user-provided width."
-                },
-                "maximum": {
-                    "description": "The maximum of the population of values. Ignored if `count` is zero.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "sumOfSquaredDeviation": {
-                    "description": "The sum of squared deviations from the mean:\n  Sum[i=1..count]((x_i - mean)^2)\nwhere each x_i is a sample values. If `count` is zero then this field\nmust be zero, otherwise validation of the request fails.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "exponentialBuckets": {
-                    "$ref": "ExponentialBuckets",
-                    "description": "Buckets with exponentially growing width."
-                },
-                "minimum": {
-                    "description": "The minimum of the population of values. Ignored if `count` is zero.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "linearBuckets": {
-                    "$ref": "LinearBuckets",
-                    "description": "Buckets with constant width."
-                }
-            },
-            "type": "object"
-        },
-        "ExponentialBuckets": {
-            "description": "Describing buckets with exponentially growing width.",
-            "id": "ExponentialBuckets",
-            "properties": {
-                "growthFactor": {
-                    "description": "The i'th exponential bucket covers the interval\n  [scale * growth_factor^(i-1), scale * growth_factor^i)\nwhere i ranges from 1 to num_finite_buckets inclusive.\nMust be larger than 1.0.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "scale": {
-                    "description": "The i'th exponential bucket covers the interval\n  [scale * growth_factor^(i-1), scale * growth_factor^i)\nwhere i ranges from 1 to num_finite_buckets inclusive.\nMust be > 0.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "numFiniteBuckets": {
-                    "description": "The number of finite buckets. With the underflow and overflow buckets,\nthe total number of buckets is `num_finite_buckets` + 2.\nSee comments on `bucket_options` for details.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "AuthorizationInfo": {
-            "description": "Authorization information for the operation.",
-            "id": "AuthorizationInfo",
-            "properties": {
-                "resource": {
-                    "description": "The resource being accessed, as a REST-style string. For example:\n\n    bigquery.googleapis.com/projects/PROJECTID/datasets/DATASETID",
-                    "type": "string"
-                },
-                "granted": {
-                    "description": "Whether or not authorization for `resource` and `permission`\nwas granted.",
-                    "type": "boolean"
-                },
-                "permission": {
-                    "description": "The required IAM permission.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ResourceInfo": {
-            "description": "Describes a resource associated with this operation.",
-            "id": "ResourceInfo",
-            "properties": {
-                "resourceContainer": {
-                    "description": "The identifier of the parent of this resource instance.\nMust be in one of the following formats:\n    - “projects/<project-id or project-number>”\n    - “folders/<folder-id>”\n    - “organizations/<organization-id>”",
-                    "type": "string"
-                },
-                "resourceName": {
-                    "description": "Name of the resource. This is used for auditing purposes.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "StartReconciliationResponse": {
-            "description": "Response message for QuotaController.StartReconciliation.",
-            "id": "StartReconciliationResponse",
-            "properties": {
-                "reconciliationErrors": {
-                    "description": "Indicates the decision of the reconciliation start.",
-                    "items": {
-                        "$ref": "QuotaError"
-                    },
-                    "type": "array"
-                },
-                "operationId": {
-                    "description": "The same operation_id value used in the StartReconciliationRequest. Used\nfor logging and diagnostics purposes.",
-                    "type": "string"
-                },
-                "serviceConfigId": {
-                    "description": "ID of the actual config used to process the request.",
-                    "type": "string"
-                },
-                "quotaMetrics": {
-                    "description": "Metric values as tracked by One Platform before the start of\nreconciliation. The following metrics will be included:\n\n1. Per quota metric total usage will be specified using the following gauge\nmetric:\n  \"serviceruntime.googleapis.com/allocation/consumer/quota_used_count\"\n\n2. Value for each quota limit associated with the metrics will be specified\nusing the following gauge metric:\n  \"serviceruntime.googleapis.com/quota/limit\"",
-                    "items": {
-                        "$ref": "MetricValueSet"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "QuotaProperties": {
-            "description": "Represents the properties needed for quota operations.",
-            "id": "QuotaProperties",
-            "properties": {
-                "quotaMode": {
-                    "description": "Quota mode for this operation.",
-                    "enum": [
-                        "ACQUIRE",
-                        "ACQUIRE_BEST_EFFORT",
-                        "CHECK",
-                        "RELEASE"
-                    ],
-                    "enumDescriptions": [
-                        "Decreases available quota by the cost specified for the operation.\nIf cost is higher than available quota, operation fails and returns\nerror.",
-                        "Decreases available quota by the cost specified for the operation.\nIf cost is higher than available quota, operation does not fail and\navailable quota goes down to zero but it returns error.",
-                        "Does not change any available quota. Only checks if there is enough\nquota.\nNo lock is placed on the checked tokens neither.",
-                        "Increases available quota by the operation cost specified for the\noperation."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LinearBuckets": {
-            "description": "Describing buckets with constant width.",
-            "id": "LinearBuckets",
-            "properties": {
-                "numFiniteBuckets": {
-                    "description": "The number of finite buckets. With the underflow and overflow buckets,\nthe total number of buckets is `num_finite_buckets` + 2.\nSee comments on `bucket_options` for details.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "width": {
-                    "description": "The i'th linear bucket covers the interval\n  [offset + (i-1) * width, offset + i * width)\nwhere i ranges from 1 to num_finite_buckets, inclusive.\nMust be strictly positive.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "offset": {
-                    "description": "The i'th linear bucket covers the interval\n  [offset + (i-1) * width, offset + i * width)\nwhere i ranges from 1 to num_finite_buckets, inclusive.",
-                    "format": "double",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "AuthenticationInfo": {
-            "description": "Authentication information for the operation.",
-            "id": "AuthenticationInfo",
-            "properties": {
-                "authoritySelector": {
-                    "description": "The authority selector specified by the requestor, if any.\nIt is not guaranteed that the principal was allowed to use this authority.",
-                    "type": "string"
-                },
-                "thirdPartyPrincipal": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "The third party identification (if any) of the authenticated user making\nthe request.\nWhen the JSON object represented here has a proto equivalent, the proto\nname will be indicated in the `@type` property.",
-                    "type": "object"
-                },
-                "principalEmail": {
-                    "description": "The email address of the authenticated user (or service account on behalf\nof third party principal) making the request. For privacy reasons, the\nprincipal email address is redacted for all read-only operations that fail\nwith a \"permission denied\" error.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AllocateQuotaResponse": {
-            "description": "Response message for the AllocateQuota method.",
-            "id": "AllocateQuotaResponse",
-            "properties": {
-                "quotaMetrics": {
-                    "description": "Quota metrics to indicate the result of allocation. Depending on the\nrequest, one or more of the following metrics will be included:\n\n1. For rate quota, per quota group or per quota metric incremental usage\nwill be specified using the following delta metric:\n  \"serviceruntime.googleapis.com/api/consumer/quota_used_count\"\n\n2. For allocation quota, per quota metric total usage will be specified\nusing the following gauge metric:\n  \"serviceruntime.googleapis.com/allocation/consumer/quota_used_count\"\n\n3. For both rate quota and allocation quota, the quota limit reached\ncondition will be specified using the following boolean metric:\n  \"serviceruntime.googleapis.com/quota/exceeded\"\n\n4. For allocation quota, value for each quota limit associated with\nthe metrics will be specified using the following gauge metric:\n  \"serviceruntime.googleapis.com/quota/limit\"",
-                    "items": {
-                        "$ref": "MetricValueSet"
-                    },
-                    "type": "array"
-                },
-                "operationId": {
-                    "description": "The same operation_id value used in the AllocateQuotaRequest. Used for\nlogging and diagnostics purposes.",
-                    "type": "string"
-                },
-                "allocateInfo": {
-                    "$ref": "AllocateInfo",
-                    "description": "WARNING: DO NOT use this field until this warning message is removed."
-                },
-                "serviceConfigId": {
-                    "description": "ID of the actual config used to process the request.",
-                    "type": "string"
-                },
-                "allocateErrors": {
-                    "description": "Indicates the decision of the allocate.",
-                    "items": {
-                        "$ref": "QuotaError"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ReleaseQuotaRequest": {
-            "description": "Request message for the ReleaseQuota method.",
-            "id": "ReleaseQuotaRequest",
-            "properties": {
-                "serviceConfigId": {
-                    "description": "Specifies which version of service configuration should be used to process\nthe request. If unspecified or no matching version can be found, the latest\none will be used.",
-                    "type": "string"
-                },
-                "releaseOperation": {
-                    "$ref": "QuotaOperation",
-                    "description": "Operation that describes the quota release."
-                }
-            },
-            "type": "object"
-        },
-        "QuotaError": {
-            "description": "Represents error information for QuotaOperation.",
-            "id": "QuotaError",
-            "properties": {
-                "description": {
-                    "description": "Free-form text that provides details on the cause of the error.",
-                    "type": "string"
-                },
-                "subject": {
-                    "description": "Subject to whom this error applies. See the specific enum for more details\non this field. For example, \"clientip:<ip address of client>\" or\n\"project:<Google developer project id>\".",
-                    "type": "string"
-                },
-                "code": {
-                    "description": "Error code.",
-                    "enum": [
-                        "UNSPECIFIED",
-                        "RESOURCE_EXHAUSTED",
-                        "OUT_OF_RANGE",
-                        "BILLING_NOT_ACTIVE",
-                        "PROJECT_DELETED",
-                        "API_KEY_INVALID",
-                        "API_KEY_EXPIRED",
-                        "SPATULA_HEADER_INVALID",
-                        "LOAS_ROLE_INVALID",
-                        "NO_LOAS_PROJECT",
-                        "PROJECT_STATUS_UNAVAILABLE",
-                        "SERVICE_STATUS_UNAVAILABLE",
-                        "BILLING_STATUS_UNAVAILABLE",
-                        "QUOTA_SYSTEM_UNAVAILABLE"
-                    ],
-                    "enumDescriptions": [
-                        "This is never used.",
-                        "Quota allocation failed.\nSame as google.rpc.Code.RESOURCE_EXHAUSTED.",
-                        "Quota release failed.  This error is ONLY returned on a NORMAL release.\nMore formally:  if a user requests a release of 10 tokens, but only\n5 tokens were previously allocated, in a BEST_EFFORT release, this will\nbe considered a success, 5 tokens will be released, and the result will\nbe \"Ok\".  If this is done in NORMAL mode, no tokens will be released,\nand an OUT_OF_RANGE error will be returned.\nSame as google.rpc.Code.OUT_OF_RANGE.",
-                        "Consumer cannot access the service because the service requires active\nbilling.",
-                        "Consumer's project has been marked as deleted (soft deletion).",
-                        "Specified API key is invalid.",
-                        "Specified API Key has expired.",
-                        "Consumer's spatula header is invalid.",
-                        "The consumer's LOAS role is invalid.",
-                        "The consumer's LOAS role has no associated project.",
-                        "The backend server for looking up project id/number is unavailable.",
-                        "The backend server for checking service status is unavailable.",
-                        "The backend server for checking billing status is unavailable.",
-                        "The backend server for checking quota limits is unavailable."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RequestMetadata": {
-            "description": "Metadata about the request.",
-            "id": "RequestMetadata",
-            "properties": {
-                "callerSuppliedUserAgent": {
-                    "description": "The user agent of the caller.\nThis information is not authenticated and should be treated accordingly.\nFor example:\n\n+   `google-api-python-client/1.4.0`:\n    The request was made by the Google API client for Python.\n+   `Cloud SDK Command Line Tool apitools-client/1.0 gcloud/0.9.62`:\n    The request was made by the Google Cloud SDK CLI (gcloud).\n+   `AppEngine-Google; (+http://code.google.com/appengine; appid: s~my-project`:\n    The request was made from the `my-project` App Engine app.\nNOLINT",
-                    "type": "string"
-                },
-                "callerNetwork": {
-                    "description": "The network of the caller.\nSet only if the network host project is part of the same GCP organization\n(or project) as the accessed resource.\nSee https://cloud.google.com/compute/docs/vpc/ for more information.\nThis is a scheme-less URI full resource name. For example:\n\n    \"//compute.googleapis.com/projects/PROJECT_ID/global/networks/NETWORK_ID\"",
-                    "type": "string"
-                },
-                "callerIp": {
-                    "description": "The IP address of the caller.\nFor caller from internet, this will be public IPv4 or IPv6 address.\nFor caller from a Compute Engine VM with external IP address, this\nwill be the VM's external IP address. For caller from a Compute\nEngine VM without external IP address, if the VM is in the same\norganization (or project) as the accessed resource, `caller_ip` will\nbe the VM's internal IPv4 address, otherwise the `caller_ip` will be\nredacted to \"gce-internal-ip\".\nSee https://cloud.google.com/compute/docs/vpc/ for more information.",
-                    "type": "string"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/servicemanagement__v1.json b/discovery/googleapis/servicemanagement__v1.json
index 92afa35..36eea46 100644
--- a/discovery/googleapis/servicemanagement__v1.json
+++ b/discovery/googleapis/servicemanagement__v1.json
@@ -2,6 +2,9 @@
     "auth": {
         "oauth2": {
             "scopes": {
+                "https://www.googleapis.com/auth/service.management": {
+                    "description": "Manage your Google API service configuration"
+                },
                 "https://www.googleapis.com/auth/service.management.readonly": {
                     "description": "View your Google API service configuration"
                 },
@@ -10,9 +13,6 @@
                 },
                 "https://www.googleapis.com/auth/cloud-platform": {
                     "description": "View and manage your data across Google Cloud Platform services"
-                },
-                "https://www.googleapis.com/auth/service.management": {
-                    "description": "Manage your Google API service configuration"
                 }
             }
         }
@@ -34,16 +34,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "access_token": {
-            "description": "OAuth access token.",
-            "location": "query",
-            "type": "string"
-        },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-            "location": "query",
-            "type": "string"
-        },
         "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.",
             "location": "query",
@@ -55,13 +45,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
+        "bearer_token": {
+            "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         },
@@ -86,11 +76,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -104,6 +89,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -119,117 +109,22 @@
             ],
             "location": "query",
             "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
-        "operations": {
-            "methods": {
-                "get": {
-                    "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
-                    "httpMethod": "GET",
-                    "id": "servicemanagement.operations.get",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The name of the operation resource.",
-                            "location": "path",
-                            "pattern": "^operations/.+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+name}",
-                    "response": {
-                        "$ref": "Operation"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/service.management"
-                    ]
-                },
-                "list": {
-                    "description": "Lists service operations that match the specified filter in the request.",
-                    "httpMethod": "GET",
-                    "id": "servicemanagement.operations.list",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "filter": {
-                            "description": "A string for filtering Operations.\n  The following filter fields are supported&#58;\n\n  * serviceName&#58; Required. Only `=` operator is allowed.\n  * startTime&#58; The time this job was started, in ISO 8601 format.\n    Allowed operators are `>=`,  `>`, `<=`, and `<`.\n  * status&#58; Can be `done`, `in_progress`, or `failed`. Allowed\n    operators are `=`, and `!=`.\n\n  Filter expression supports conjunction (AND) and disjunction (OR)\n  logical operators. However, the serviceName restriction must be at the\n  top-level and can only be combined with other restrictions via the AND\n  logical operator.\n\n  Examples&#58;\n\n  * `serviceName={some-service}.googleapis.com`\n  * `serviceName={some-service}.googleapis.com AND startTime>=\"2017-02-01\"`\n  * `serviceName={some-service}.googleapis.com AND status=done`\n  * `serviceName={some-service}.googleapis.com AND (status=done OR startTime>=\"2017-02-01\")`",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageToken": {
-                            "description": "The standard list page token.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "name": {
-                            "description": "Not used.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageSize": {
-                            "description": "The maximum number of operations to return. If unspecified, defaults to\n50. The maximum value is 100.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        }
-                    },
-                    "path": "v1/operations",
-                    "response": {
-                        "$ref": "ListOperationsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/service.management"
-                    ]
-                }
-            }
-        },
         "services": {
             "methods": {
-                "list": {
-                    "description": "Lists managed services.\n\nReturns all public services. For authenticated users, also returns all\nservices the calling user has \"servicemanagement.services.get\" permission\nfor.\n\n**BETA:** If the caller specifies the `consumer_id`, it returns only the\nservices enabled on the consumer. The `consumer_id` must have the format\nof \"project:{PROJECT-ID}\".",
-                    "httpMethod": "GET",
-                    "id": "servicemanagement.services.list",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "producerProjectId": {
-                            "description": "Include services produced by the specified project.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "consumerId": {
-                            "description": "Include services consumed by the specified consumer.\n\nThe Google Service Management implementation accepts the following\nforms:\n- project:<project_id>",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageToken": {
-                            "description": "Token identifying which result to start with; returned by a previous list\ncall.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageSize": {
-                            "description": "Requested size of the next page of data.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        }
-                    },
-                    "path": "v1/services",
-                    "response": {
-                        "$ref": "ListServicesResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only",
-                        "https://www.googleapis.com/auth/service.management",
-                        "https://www.googleapis.com/auth/service.management.readonly"
-                    ]
-                },
                 "create": {
                     "description": "Creates a new managed service.\nPlease note one producer project can own no more than 20 services.\n\nOperation<response: ManagedService>",
                     "httpMethod": "POST",
@@ -330,15 +225,6 @@
                         "serviceName"
                     ],
                     "parameters": {
-                        "view": {
-                            "description": "Specifies which parts of the Service Config should be returned in the\nresponse.",
-                            "enum": [
-                                "BASIC",
-                                "FULL"
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
                         "serviceName": {
                             "description": "The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
                             "location": "path",
@@ -349,6 +235,15 @@
                             "description": "The id of the service configuration resource.",
                             "location": "query",
                             "type": "string"
+                        },
+                        "view": {
+                            "description": "Specifies which parts of the Service Config should be returned in the\nresponse.",
+                            "enum": [
+                                "BASIC",
+                                "FULL"
+                            ],
+                            "location": "query",
+                            "type": "string"
                         }
                     },
                     "path": "v1/services/{serviceName}/config",
@@ -362,6 +257,30 @@
                         "https://www.googleapis.com/auth/service.management.readonly"
                     ]
                 },
+                "delete": {
+                    "description": "Deletes a managed service. This method will change the service to the\n`Soft-Delete` state for 30 days. Within this period, service producers may\ncall UndeleteService to restore the service.\nAfter 30 days, the service will be permanently deleted.\n\nOperation<response: google.protobuf.Empty>",
+                    "httpMethod": "DELETE",
+                    "id": "servicemanagement.services.delete",
+                    "parameterOrder": [
+                        "serviceName"
+                    ],
+                    "parameters": {
+                        "serviceName": {
+                            "description": "The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/services/{serviceName}",
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/service.management"
+                    ]
+                },
                 "enable": {
                     "description": "Enables a service for a project, so it can be used\nfor the project. See\n[Cloud Auth Guide](https://cloud.google.com/docs/authentication) for\nmore information.\n\nOperation<response: EnableServiceResponse>",
                     "httpMethod": "POST",
@@ -389,30 +308,6 @@
                         "https://www.googleapis.com/auth/service.management"
                     ]
                 },
-                "delete": {
-                    "description": "Deletes a managed service. This method will change the service to the\n`Soft-Delete` state for 30 days. Within this period, service producers may\ncall UndeleteService to restore the service.\nAfter 30 days, the service will be permanently deleted.\n\nOperation<response: google.protobuf.Empty>",
-                    "httpMethod": "DELETE",
-                    "id": "servicemanagement.services.delete",
-                    "parameterOrder": [
-                        "serviceName"
-                    ],
-                    "parameters": {
-                        "serviceName": {
-                            "description": "The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/services/{serviceName}",
-                    "response": {
-                        "$ref": "Operation"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/service.management"
-                    ]
-                },
                 "setIamPolicy": {
                     "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.",
                     "httpMethod": "POST",
@@ -521,6 +416,45 @@
                         "https://www.googleapis.com/auth/cloud-platform",
                         "https://www.googleapis.com/auth/service.management"
                     ]
+                },
+                "list": {
+                    "description": "Lists managed services.\n\nReturns all public services. For authenticated users, also returns all\nservices the calling user has \"servicemanagement.services.get\" permission\nfor.\n\n**BETA:** If the caller specifies the `consumer_id`, it returns only the\nservices enabled on the consumer. The `consumer_id` must have the format\nof \"project:{PROJECT-ID}\".",
+                    "httpMethod": "GET",
+                    "id": "servicemanagement.services.list",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "pageSize": {
+                            "description": "Requested size of the next page of data.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        },
+                        "producerProjectId": {
+                            "description": "Include services produced by the specified project.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "consumerId": {
+                            "description": "Include services consumed by the specified consumer.\n\nThe Google Service Management implementation accepts the following\nforms:\n- project:<project_id>",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageToken": {
+                            "description": "Token identifying which result to start with; returned by a previous list\ncall.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/services",
+                    "response": {
+                        "$ref": "ListServicesResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only",
+                        "https://www.googleapis.com/auth/service.management",
+                        "https://www.googleapis.com/auth/service.management.readonly"
+                    ]
                 }
             },
             "resources": {
@@ -603,6 +537,12 @@
                                 "serviceName"
                             ],
                             "parameters": {
+                                "pageSize": {
+                                    "description": "The max number of items to include in the response list.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
                                 "serviceName": {
                                     "description": "The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
                                     "location": "path",
@@ -613,12 +553,6 @@
                                     "description": "The token of the page to retrieve.",
                                     "location": "query",
                                     "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "The max number of items to include in the response list.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
                                 }
                             },
                             "path": "v1/services/{serviceName}/configs",
@@ -663,6 +597,36 @@
                 },
                 "consumers": {
                     "methods": {
+                        "getIamPolicy": {
+                            "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
+                            "httpMethod": "POST",
+                            "id": "servicemanagement.services.consumers.getIamPolicy",
+                            "parameterOrder": [
+                                "resource"
+                            ],
+                            "parameters": {
+                                "resource": {
+                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                    "location": "path",
+                                    "pattern": "^services/[^/]+/consumers/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+resource}:getIamPolicy",
+                            "request": {
+                                "$ref": "GetIamPolicyRequest"
+                            },
+                            "response": {
+                                "$ref": "Policy"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/service.management",
+                                "https://www.googleapis.com/auth/service.management.readonly"
+                            ]
+                        },
                         "setIamPolicy": {
                             "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.",
                             "httpMethod": "POST",
@@ -720,116 +684,11 @@
                                 "https://www.googleapis.com/auth/service.management",
                                 "https://www.googleapis.com/auth/service.management.readonly"
                             ]
-                        },
-                        "getIamPolicy": {
-                            "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
-                            "httpMethod": "POST",
-                            "id": "servicemanagement.services.consumers.getIamPolicy",
-                            "parameterOrder": [
-                                "resource"
-                            ],
-                            "parameters": {
-                                "resource": {
-                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
-                                    "location": "path",
-                                    "pattern": "^services/[^/]+/consumers/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+resource}:getIamPolicy",
-                            "request": {
-                                "$ref": "GetIamPolicyRequest"
-                            },
-                            "response": {
-                                "$ref": "Policy"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/service.management",
-                                "https://www.googleapis.com/auth/service.management.readonly"
-                            ]
                         }
                     }
                 },
                 "rollouts": {
                     "methods": {
-                        "get": {
-                            "description": "Gets a service configuration rollout.",
-                            "httpMethod": "GET",
-                            "id": "servicemanagement.services.rollouts.get",
-                            "parameterOrder": [
-                                "serviceName",
-                                "rolloutId"
-                            ],
-                            "parameters": {
-                                "rolloutId": {
-                                    "description": "The id of the rollout resource.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "serviceName": {
-                                    "description": "The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/services/{serviceName}/rollouts/{rolloutId}",
-                            "response": {
-                                "$ref": "Rollout"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/service.management",
-                                "https://www.googleapis.com/auth/service.management.readonly"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists the history of the service configuration rollouts for a managed\nservice, from the newest to the oldest.",
-                            "httpMethod": "GET",
-                            "id": "servicemanagement.services.rollouts.list",
-                            "parameterOrder": [
-                                "serviceName"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "The token of the page to retrieve.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "The max number of items to include in the response list.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "filter": {
-                                    "description": "Use `filter` to return subset of rollouts.\nThe following filters are supported:\n  -- To limit the results to only those in\n     [status](google.api.servicemanagement.v1.RolloutStatus) 'SUCCESS',\n     use filter='status=SUCCESS'\n  -- To limit the results to those in\n     [status](google.api.servicemanagement.v1.RolloutStatus) 'CANCELLED'\n     or 'FAILED', use filter='status=CANCELLED OR status=FAILED'",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "serviceName": {
-                                    "description": "The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/services/{serviceName}/rollouts",
-                            "response": {
-                                "$ref": "ListServiceRolloutsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/service.management",
-                                "https://www.googleapis.com/auth/service.management.readonly"
-                            ]
-                        },
                         "create": {
                             "description": "Creates a new service configuration rollout. Based on rollout, the\nGoogle Service Management will roll out the service configurations to\ndifferent backend services. For example, the logging configuration will be\npushed to Google Cloud Logging.\n\nPlease note that any previous pending and running Rollouts and associated\nOperations will be automatically cancelled so that the latest Rollout will\nnot be blocked by previous Rollouts.\n\nOperation<response: Rollout>",
                             "httpMethod": "POST",
@@ -856,1620 +715,156 @@
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/service.management"
                             ]
+                        },
+                        "get": {
+                            "description": "Gets a service configuration rollout.",
+                            "httpMethod": "GET",
+                            "id": "servicemanagement.services.rollouts.get",
+                            "parameterOrder": [
+                                "serviceName",
+                                "rolloutId"
+                            ],
+                            "parameters": {
+                                "serviceName": {
+                                    "description": "The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "rolloutId": {
+                                    "description": "The id of the rollout resource.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/services/{serviceName}/rollouts/{rolloutId}",
+                            "response": {
+                                "$ref": "Rollout"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/service.management",
+                                "https://www.googleapis.com/auth/service.management.readonly"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists the history of the service configuration rollouts for a managed\nservice, from the newest to the oldest.",
+                            "httpMethod": "GET",
+                            "id": "servicemanagement.services.rollouts.list",
+                            "parameterOrder": [
+                                "serviceName"
+                            ],
+                            "parameters": {
+                                "filter": {
+                                    "description": "Use `filter` to return subset of rollouts.\nThe following filters are supported:\n  -- To limit the results to only those in\n     [status](google.api.servicemanagement.v1.RolloutStatus) 'SUCCESS',\n     use filter='status=SUCCESS'\n  -- To limit the results to those in\n     [status](google.api.servicemanagement.v1.RolloutStatus) 'CANCELLED'\n     or 'FAILED', use filter='status=CANCELLED OR status=FAILED'",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "serviceName": {
+                                    "description": "The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "The token of the page to retrieve.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The max number of items to include in the response list.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v1/services/{serviceName}/rollouts",
+                            "response": {
+                                "$ref": "ListServiceRolloutsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/service.management",
+                                "https://www.googleapis.com/auth/service.management.readonly"
+                            ]
                         }
                     }
                 }
             }
+        },
+        "operations": {
+            "methods": {
+                "get": {
+                    "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+                    "httpMethod": "GET",
+                    "id": "servicemanagement.operations.get",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The name of the operation resource.",
+                            "location": "path",
+                            "pattern": "^operations/.+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+name}",
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/service.management"
+                    ]
+                },
+                "list": {
+                    "description": "Lists service operations that match the specified filter in the request.",
+                    "httpMethod": "GET",
+                    "id": "servicemanagement.operations.list",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "filter": {
+                            "description": "A string for filtering Operations.\n  The following filter fields are supported&#58;\n\n  * serviceName&#58; Required. Only `=` operator is allowed.\n  * startTime&#58; The time this job was started, in ISO 8601 format.\n    Allowed operators are `>=`,  `>`, `<=`, and `<`.\n  * status&#58; Can be `done`, `in_progress`, or `failed`. Allowed\n    operators are `=`, and `!=`.\n\n  Filter expression supports conjunction (AND) and disjunction (OR)\n  logical operators. However, the serviceName restriction must be at the\n  top-level and can only be combined with other restrictions via the AND\n  logical operator.\n\n  Examples&#58;\n\n  * `serviceName={some-service}.googleapis.com`\n  * `serviceName={some-service}.googleapis.com AND startTime>=\"2017-02-01\"`\n  * `serviceName={some-service}.googleapis.com AND status=done`\n  * `serviceName={some-service}.googleapis.com AND (status=done OR startTime>=\"2017-02-01\")`",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageToken": {
+                            "description": "The standard list page token.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "name": {
+                            "description": "Not used.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageSize": {
+                            "description": "The maximum number of operations to return. If unspecified, defaults to\n50. The maximum value is 100.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        }
+                    },
+                    "path": "v1/operations",
+                    "response": {
+                        "$ref": "ListOperationsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/service.management"
+                    ]
+                }
+            }
         }
     },
-    "revision": "20170926",
+    "revision": "20171013",
     "rootUrl": "https://servicemanagement.googleapis.com/",
     "schemas": {
-        "Visibility": {
-            "description": "`Visibility` defines restrictions for the visibility of service\nelements.  Restrictions are specified using visibility labels\n(e.g., TRUSTED_TESTER) that are elsewhere linked to users and projects.\n\nUsers and projects can have access to more than one visibility label. The\neffective visibility for multiple labels is the union of each label's\nelements, plus any unrestricted elements.\n\nIf an element and its parents have no restrictions, visibility is\nunconditionally granted.\n\nExample:\n\n    visibility:\n      rules:\n      - selector: google.calendar.Calendar.EnhancedSearch\n        restriction: TRUSTED_TESTER\n      - selector: google.calendar.Calendar.Delegate\n        restriction: GOOGLE_INTERNAL\n\nHere, all methods are publicly visible except for the restricted methods\nEnhancedSearch and Delegate.",
-            "id": "Visibility",
-            "properties": {
-                "rules": {
-                    "description": "A list of visibility rules that apply to individual API elements.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
-                    "items": {
-                        "$ref": "VisibilityRule"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ConfigChange": {
-            "description": "Output generated from semantically comparing two versions of a service\nconfiguration.\n\nIncludes detailed information about a field that have changed with\napplicable advice about potential consequences for the change, such as\nbackwards-incompatibility.",
-            "id": "ConfigChange",
-            "properties": {
-                "newValue": {
-                    "description": "Value of the changed object in the new Service configuration,\nin JSON format. This field will not be populated if ChangeType == REMOVED.",
-                    "type": "string"
-                },
-                "changeType": {
-                    "description": "The type for this change, either ADDED, REMOVED, or MODIFIED.",
-                    "enum": [
-                        "CHANGE_TYPE_UNSPECIFIED",
-                        "ADDED",
-                        "REMOVED",
-                        "MODIFIED"
-                    ],
-                    "enumDescriptions": [
-                        "No value was provided.",
-                        "The changed object exists in the 'new' service configuration, but not\nin the 'old' service configuration.",
-                        "The changed object exists in the 'old' service configuration, but not\nin the 'new' service configuration.",
-                        "The changed object exists in both service configurations, but its value\nis different."
-                    ],
-                    "type": "string"
-                },
-                "element": {
-                    "description": "Object hierarchy path to the change, with levels separated by a '.'\ncharacter. For repeated fields, an applicable unique identifier field is\nused for the index (usually selector, name, or id). For maps, the term\n'key' is used. If the field has no unique identifier, the numeric index\nis used.\nExamples:\n- visibility.rules[selector==\"google.LibraryService.CreateBook\"].restriction\n- quota.metric_rules[selector==\"google\"].metric_costs[key==\"reads\"].value\n- logging.producer_destinations[0]",
-                    "type": "string"
-                },
-                "advices": {
-                    "description": "Collection of advice provided for this change, useful for determining the\npossible impact of this change.",
-                    "items": {
-                        "$ref": "Advice"
-                    },
-                    "type": "array"
-                },
-                "oldValue": {
-                    "description": "Value of the changed object in the old Service configuration,\nin JSON format. This field will not be populated if ChangeType == ADDED.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SystemParameters": {
-            "description": "### System parameter configuration\n\nA system parameter is a special kind of parameter defined by the API\nsystem, not by an individual API. It is typically mapped to an HTTP header\nand/or a URL query parameter. This configuration specifies which methods\nchange the names of the system parameters.",
-            "id": "SystemParameters",
-            "properties": {
-                "rules": {
-                    "description": "Define system parameters.\n\nThe parameters defined here will override the default parameters\nimplemented by the system. If this field is missing from the service\nconfig, default system parameters will be used. Default system parameters\nand names is implementation-dependent.\n\nExample: define api key for all methods\n\n    system_parameters\n      rules:\n        - selector: \"*\"\n          parameters:\n            - name: api_key\n              url_query_parameter: api_key\n\n\nExample: define 2 api key names for a specific method.\n\n    system_parameters\n      rules:\n        - selector: \"/ListShelves\"\n          parameters:\n            - name: api_key\n              http_header: Api-Key1\n            - name: api_key\n              http_header: Api-Key2\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
-                    "items": {
-                        "$ref": "SystemParameterRule"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Rollout": {
-            "description": "A rollout resource that defines how service configuration versions are pushed\nto control plane systems. Typically, you create a new version of the\nservice config, and then create a Rollout to push the service config.",
-            "id": "Rollout",
-            "properties": {
-                "trafficPercentStrategy": {
-                    "$ref": "TrafficPercentStrategy",
-                    "description": "Google Service Control selects service configurations based on\ntraffic percentage."
-                },
-                "createdBy": {
-                    "description": "The user who created the Rollout. Readonly.",
-                    "type": "string"
-                },
-                "rolloutId": {
-                    "description": "Optional unique identifier of this Rollout. Only lower case letters, digits\n and '-' are allowed.\n\nIf not specified by client, the server will generate one. The generated id\nwill have the form of <date><revision number>, where \"date\" is the create\ndate in ISO 8601 format.  \"revision number\" is a monotonically increasing\npositive number that is reset every day for each service.\nAn example of the generated rollout_id is '2016-02-16r1'",
-                    "type": "string"
-                },
-                "deleteServiceStrategy": {
-                    "$ref": "DeleteServiceStrategy",
-                    "description": "The strategy associated with a rollout to delete a `ManagedService`.\nReadonly."
-                },
-                "createTime": {
-                    "description": "Creation time of the rollout. Readonly.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "status": {
-                    "description": "The status of this rollout. Readonly. In case of a failed rollout,\nthe system will automatically rollback to the current Rollout\nversion. Readonly.",
-                    "enum": [
-                        "ROLLOUT_STATUS_UNSPECIFIED",
-                        "IN_PROGRESS",
-                        "SUCCESS",
-                        "CANCELLED",
-                        "FAILED",
-                        "PENDING",
-                        "FAILED_ROLLED_BACK"
-                    ],
-                    "enumDescriptions": [
-                        "No status specified.",
-                        "The Rollout is in progress.",
-                        "The Rollout has completed successfully.",
-                        "The Rollout has been cancelled. This can happen if you have overlapping\nRollout pushes, and the previous ones will be cancelled.",
-                        "The Rollout has failed and the rollback attempt has failed too.",
-                        "The Rollout has not started yet and is pending for execution.",
-                        "The Rollout has failed and rolled back to the previous successful\nRollout."
-                    ],
-                    "type": "string"
-                },
-                "serviceName": {
-                    "description": "The name of the service associated with this Rollout.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Quota": {
-            "description": "Quota configuration helps to achieve fairness and budgeting in service\nusage.\n\nThe quota configuration works this way:\n- The service configuration defines a set of metrics.\n- For API calls, the quota.metric_rules maps methods to metrics with\n  corresponding costs.\n- The quota.limits defines limits on the metrics, which will be used for\n  quota checks at runtime.\n\nAn example quota configuration in yaml format:\n\n   quota:\n\n     - name: apiWriteQpsPerProject\n       metric: library.googleapis.com/write_calls\n       unit: \"1/min/{project}\"  # rate limit for consumer projects\n       values:\n         STANDARD: 10000\n\n\n     # The metric rules bind all methods to the read_calls metric,\n     # except for the UpdateBook and DeleteBook methods. These two methods\n     # are mapped to the write_calls metric, with the UpdateBook method\n     # consuming at twice rate as the DeleteBook method.\n     metric_rules:\n     - selector: \"*\"\n       metric_costs:\n         library.googleapis.com/read_calls: 1\n     - selector: google.example.library.v1.LibraryService.UpdateBook\n       metric_costs:\n         library.googleapis.com/write_calls: 2\n     - selector: google.example.library.v1.LibraryService.DeleteBook\n       metric_costs:\n         library.googleapis.com/write_calls: 1\n\n Corresponding Metric definition:\n\n     metrics:\n     - name: library.googleapis.com/read_calls\n       display_name: Read requests\n       metric_kind: DELTA\n       value_type: INT64\n\n     - name: library.googleapis.com/write_calls\n       display_name: Write requests\n       metric_kind: DELTA\n       value_type: INT64",
-            "id": "Quota",
-            "properties": {
-                "metricRules": {
-                    "description": "List of `MetricRule` definitions, each one mapping a selected method to one\nor more metrics.",
-                    "items": {
-                        "$ref": "MetricRule"
-                    },
-                    "type": "array"
-                },
-                "limits": {
-                    "description": "List of `QuotaLimit` definitions for the service.",
-                    "items": {
-                        "$ref": "QuotaLimit"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GenerateConfigReportRequest": {
-            "description": "Request message for GenerateConfigReport method.",
-            "id": "GenerateConfigReportRequest",
-            "properties": {
-                "oldConfig": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Service configuration against which the comparison will be done.\nFor this version of API, the supported types are\ngoogle.api.servicemanagement.v1.ConfigRef,\ngoogle.api.servicemanagement.v1.ConfigSource,\nand google.api.Service",
-                    "type": "object"
-                },
-                "newConfig": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Service configuration for which we want to generate the report.\nFor this version of API, the supported types are\ngoogle.api.servicemanagement.v1.ConfigRef,\ngoogle.api.servicemanagement.v1.ConfigSource,\nand google.api.Service",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "SetIamPolicyRequest": {
-            "description": "Request message for `SetIamPolicy` method.",
-            "id": "SetIamPolicyRequest",
-            "properties": {
-                "updateMask": {
-                    "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.",
-                    "format": "google-fieldmask",
-                    "type": "string"
-                },
-                "policy": {
-                    "$ref": "Policy",
-                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
-                }
-            },
-            "type": "object"
-        },
-        "DeleteServiceStrategy": {
-            "description": "Strategy used to delete a service. This strategy is a placeholder only\nused by the system generated rollout to delete a service.",
-            "id": "DeleteServiceStrategy",
-            "properties": {},
-            "type": "object"
-        },
-        "Step": {
-            "description": "Represents the status of one operation step.",
-            "id": "Step",
-            "properties": {
-                "status": {
-                    "description": "The status code.",
-                    "enum": [
-                        "STATUS_UNSPECIFIED",
-                        "DONE",
-                        "NOT_STARTED",
-                        "IN_PROGRESS",
-                        "FAILED",
-                        "CANCELLED"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecifed code.",
-                        "The operation or step has completed without errors.",
-                        "The operation or step has not started yet.",
-                        "The operation or step is in progress.",
-                        "The operation or step has completed with errors. If the operation is\nrollbackable, the rollback completed with errors too.",
-                        "The operation or step has completed with cancellation."
-                    ],
-                    "type": "string"
-                },
-                "description": {
-                    "description": "The short description of the step.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LoggingDestination": {
-            "description": "Configuration of a specific logging destination (the producer project\nor the consumer project).",
-            "id": "LoggingDestination",
-            "properties": {
-                "logs": {
-                    "description": "Names of the logs to be sent to this destination. Each name must\nbe defined in the Service.logs section. If the log name is\nnot a domain scoped name, it will be automatically prefixed with\nthe service name followed by \"/\".",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "monitoredResource": {
-                    "description": "The monitored resource type. The type must be defined in the\nService.monitored_resources section.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Option": {
-            "description": "A protocol buffer option, which can be attached to a message, field,\nenumeration, etc.",
-            "id": "Option",
-            "properties": {
-                "value": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "The option's value packed in an Any message. If the value is a primitive,\nthe corresponding wrapper type defined in google/protobuf/wrappers.proto\nshould be used. If the value is an enum, it should be stored as an int32\nvalue using the google.protobuf.Int32Value type.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The option's name. For protobuf built-in options (options defined in\ndescriptor.proto), this is the short name. For example, `\"map_entry\"`.\nFor custom options, it should be the fully-qualified name. For example,\n`\"google.api.http\"`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Logging": {
-            "description": "Logging configuration of the service.\n\nThe following example shows how to configure logs to be sent to the\nproducer and consumer projects. In the example, the `activity_history`\nlog is sent to both the producer and consumer projects, whereas the\n`purchase_history` log is only sent to the producer project.\n\n    monitored_resources:\n    - type: library.googleapis.com/branch\n      labels:\n      - key: /city\n        description: The city where the library branch is located in.\n      - key: /name\n        description: The name of the branch.\n    logs:\n    - name: activity_history\n      labels:\n      - key: /customer_id\n    - name: purchase_history\n    logging:\n      producer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        logs:\n        - activity_history\n        - purchase_history\n      consumer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        logs:\n        - activity_history",
-            "id": "Logging",
-            "properties": {
-                "consumerDestinations": {
-                    "description": "Logging configurations for sending logs to the consumer project.\nThere can be multiple consumer destinations, each one must have a\ndifferent monitored resource type. A log can be used in at most\none consumer destination.",
-                    "items": {
-                        "$ref": "LoggingDestination"
-                    },
-                    "type": "array"
-                },
-                "producerDestinations": {
-                    "description": "Logging configurations for sending logs to the producer project.\nThere can be multiple producer destinations, each one must have a\ndifferent monitored resource type. A log can be used in at most\none producer destination.",
-                    "items": {
-                        "$ref": "LoggingDestination"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Method": {
-            "description": "Method represents a method of an API interface.",
-            "id": "Method",
-            "properties": {
-                "syntax": {
-                    "description": "The source syntax of this method.",
-                    "enum": [
-                        "SYNTAX_PROTO2",
-                        "SYNTAX_PROTO3"
-                    ],
-                    "enumDescriptions": [
-                        "Syntax `proto2`.",
-                        "Syntax `proto3`."
-                    ],
-                    "type": "string"
-                },
-                "responseTypeUrl": {
-                    "description": "The URL of the output message type.",
-                    "type": "string"
-                },
-                "options": {
-                    "description": "Any metadata attached to the method.",
-                    "items": {
-                        "$ref": "Option"
-                    },
-                    "type": "array"
-                },
-                "responseStreaming": {
-                    "description": "If true, the response is streamed.",
-                    "type": "boolean"
-                },
-                "name": {
-                    "description": "The simple name of this method.",
-                    "type": "string"
-                },
-                "requestTypeUrl": {
-                    "description": "A URL of the input message type.",
-                    "type": "string"
-                },
-                "requestStreaming": {
-                    "description": "If true, the request is streamed.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "QuotaLimit": {
-            "description": "`QuotaLimit` defines a specific limit that applies over a specified duration\nfor a limit type. There can be at most one limit for a duration and limit\ntype combination defined within a `QuotaGroup`.",
-            "id": "QuotaLimit",
-            "properties": {
-                "name": {
-                    "description": "Name of the quota limit. The name is used to refer to the limit when\noverriding the default limit on per-consumer basis.\n\nFor metric-based quota limits, the name must be provided, and it must be\nunique within the service. The name can only include alphanumeric\ncharacters as well as '-'.\n\nThe maximum length of the limit name is 64 characters.\n\nThe name of a limit is used as a unique identifier for this limit.\nTherefore, once a limit has been put into use, its name should be\nimmutable. You can use the display_name field to provide a user-friendly\nname for the limit. The display name can be evolved over time without\naffecting the identity of the limit.",
-                    "type": "string"
-                },
-                "duration": {
-                    "description": "Duration of this limit in textual notation. Example: \"100s\", \"24h\", \"1d\".\nFor duration longer than a day, only multiple of days is supported. We\nsupport only \"100s\" and \"1d\" for now. Additional support will be added in\nthe future. \"0\" indicates indefinite duration.\n\nUsed by group-based quotas only.",
-                    "type": "string"
-                },
-                "freeTier": {
-                    "description": "Free tier value displayed in the Developers Console for this limit.\nThe free tier is the number of tokens that will be subtracted from the\nbilled amount when billing is enabled.\nThis field can only be set on a limit with duration \"1d\", in a billable\ngroup; it is invalid on any other limit. If this field is not set, it\ndefaults to 0, indicating that there is no free tier for this service.\n\nUsed by group-based quotas only.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "defaultLimit": {
-                    "description": "Default number of tokens that can be consumed during the specified\nduration. This is the number of tokens assigned when a client\napplication developer activates the service for his/her project.\n\nSpecifying a value of 0 will block all requests. This can be used if you\nare provisioning quota to selected consumers and blocking others.\nSimilarly, a value of -1 will indicate an unlimited quota. No other\nnegative values are allowed.\n\nUsed by group-based quotas only.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "User-visible display name for this limit.\nOptional. If not set, the UI will provide a default display name based on\nthe quota configuration. This field can be used to override the default\ndisplay name generated from the configuration.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "Optional. User-visible, extended description for this quota limit.\nShould be used only when more context is needed to understand this limit\nthan provided by the limit's display name (see: `display_name`).",
-                    "type": "string"
-                },
-                "metric": {
-                    "description": "The name of the metric this quota limit applies to. The quota limits with\nthe same metric will be checked together during runtime. The metric must be\ndefined within the service config.\n\nUsed by metric-based quotas only.",
-                    "type": "string"
-                },
-                "values": {
-                    "additionalProperties": {
-                        "format": "int64",
-                        "type": "string"
-                    },
-                    "description": "Tiered limit values, currently only STANDARD is supported.",
-                    "type": "object"
-                },
-                "unit": {
-                    "description": "Specify the unit of the quota limit. It uses the same syntax as\nMetric.unit. The supported unit kinds are determined by the quota\nbackend system.\n\nThe [Google Service Control](https://cloud.google.com/service-control)\nsupports the following unit components:\n* One of the time intevals:\n  * \"/min\"  for quota every minute.\n  * \"/d\"  for quota every 24 hours, starting 00:00 US Pacific Time.\n  * Otherwise the quota won't be reset by time, such as storage limit.\n* One and only one of the granted containers:\n  * \"/{project}\" quota for a project\n\nHere are some examples:\n* \"1/min/{project}\" for quota per minute per project.\n\nNote: the order of unit components is insignificant.\nThe \"1\" at the beginning is required to follow the metric unit syntax.\n\nUsed by metric-based quotas only.",
-                    "type": "string"
-                },
-                "maxLimit": {
-                    "description": "Maximum number of tokens that can be consumed during the specified\nduration. Client application developers can override the default limit up\nto this maximum. If specified, this value cannot be set to a value less\nthan the default limit. If not specified, it is set to the default limit.\n\nTo allow clients to apply overrides with no upper bound, set this to -1,\nindicating unlimited maximum quota.\n\nUsed by group-based quotas only.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ConfigRef": {
-            "description": "Represents a service configuration with its name and id.",
-            "id": "ConfigRef",
-            "properties": {
-                "name": {
-                    "description": "Resource name of a service config. It must have the following\nformat: \"services/{service name}/configs/{config id}\".",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListServiceRolloutsResponse": {
-            "description": "Response message for ListServiceRollouts method.",
-            "id": "ListServiceRolloutsResponse",
-            "properties": {
-                "rollouts": {
-                    "description": "The list of rollout resources.",
-                    "items": {
-                        "$ref": "Rollout"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "The token of the next page of results.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Mixin": {
-            "description": "Declares an API Interface to be included in this interface. The including\ninterface must redeclare all the methods from the included interface, but\ndocumentation and options are inherited as follows:\n\n- If after comment and whitespace stripping, the documentation\n  string of the redeclared method is empty, it will be inherited\n  from the original method.\n\n- Each annotation belonging to the service config (http,\n  visibility) which is not set in the redeclared method will be\n  inherited.\n\n- If an http annotation is inherited, the path pattern will be\n  modified as follows. Any version prefix will be replaced by the\n  version of the including interface plus the root path if\n  specified.\n\nExample of a simple mixin:\n\n    package google.acl.v1;\n    service AccessControl {\n      // Get the underlying ACL object.\n      rpc GetAcl(GetAclRequest) returns (Acl) {\n        option (google.api.http).get = \"/v1/{resource=**}:getAcl\";\n      }\n    }\n\n    package google.storage.v2;\n    service Storage {\n      //       rpc GetAcl(GetAclRequest) returns (Acl);\n\n      // Get a data record.\n      rpc GetData(GetDataRequest) returns (Data) {\n        option (google.api.http).get = \"/v2/{resource=**}\";\n      }\n    }\n\nExample of a mixin configuration:\n\n    apis:\n    - name: google.storage.v2.Storage\n      mixins:\n      - name: google.acl.v1.AccessControl\n\nThe mixin construct implies that all methods in `AccessControl` are\nalso declared with same name and request/response types in\n`Storage`. A documentation generator or annotation processor will\nsee the effective `Storage.GetAcl` method after inherting\ndocumentation and annotations as follows:\n\n    service Storage {\n      // Get the underlying ACL object.\n      rpc GetAcl(GetAclRequest) returns (Acl) {\n        option (google.api.http).get = \"/v2/{resource=**}:getAcl\";\n      }\n      ...\n    }\n\nNote how the version in the path pattern changed from `v1` to `v2`.\n\nIf the `root` field in the mixin is specified, it should be a\nrelative path under which inherited HTTP paths are placed. Example:\n\n    apis:\n    - name: google.storage.v2.Storage\n      mixins:\n      - name: google.acl.v1.AccessControl\n        root: acls\n\nThis implies the following inherited HTTP annotation:\n\n    service Storage {\n      // Get the underlying ACL object.\n      rpc GetAcl(GetAclRequest) returns (Acl) {\n        option (google.api.http).get = \"/v2/acls/{resource=**}:getAcl\";\n      }\n      ...\n    }",
-            "id": "Mixin",
-            "properties": {
-                "name": {
-                    "description": "The fully qualified name of the interface which is included.",
-                    "type": "string"
-                },
-                "root": {
-                    "description": "If non-empty specifies a path under which inherited HTTP paths\nare rooted.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "FlowOperationMetadata": {
-            "description": "The metadata associated with a long running operation resource.",
-            "id": "FlowOperationMetadata",
-            "properties": {
-                "cancelState": {
-                    "description": "The state of the operation with respect to cancellation.",
-                    "enum": [
-                        "RUNNING",
-                        "UNCANCELLABLE",
-                        "CANCELLED"
-                    ],
-                    "enumDescriptions": [
-                        "Default state, cancellable but not cancelled.",
-                        "The operation has proceeded past the point of no return and cannot\nbe cancelled.",
-                        "The operation has been cancelled, work should cease\nand any needed rollback steps executed."
-                    ],
-                    "type": "string"
-                },
-                "deadline": {
-                    "description": "Deadline for the flow to complete, to prevent orphaned Operations.\n\nIf the flow has not completed by this time, it may be terminated by\nthe engine, or force-failed by Operation lookup.\n\nNote that this is not a hard deadline after which the Flow will\ndefinitely be failed, rather it is a deadline after which it is reasonable\nto suspect a problem and other parts of the system may kill operation\nto ensure we don't have orphans.\nsee also: go/prevent-orphaned-operations",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "operationType": {
-                    "description": "Operation type which is a flow type and subtype info as that is missing in\nour datastore otherwise. This maps to the ordinal value of the enum:\njcg/api/tenant/operations/OperationNamespace.java",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "startTime": {
-                    "description": "The start time of the operation.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "surface": {
-                    "enum": [
-                        "UNSPECIFIED_OP_SERVICE",
-                        "SERVICE_MANAGEMENT",
-                        "SERVICE_USAGE",
-                        "SERVICE_CONSUMER_MANAGEMENT"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        "",
-                        "TenancyUnit, ServiceNetworking fall under this"
-                    ],
-                    "type": "string"
-                },
-                "flowName": {
-                    "description": "The name of the top-level flow corresponding to this operation.\nMust be equal to the \"name\" field for a FlowName enum.",
-                    "type": "string"
-                },
-                "resourceNames": {
-                    "description": "The full name of the resources that this flow is directly associated with.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "CustomError": {
-            "description": "Customize service error responses.  For example, list any service\nspecific protobuf types that can appear in error detail lists of\nerror responses.\n\nExample:\n\n    custom_error:\n      types:\n      - google.foo.v1.CustomError\n      - google.foo.v1.AnotherError",
-            "id": "CustomError",
-            "properties": {
-                "types": {
-                    "description": "The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "rules": {
-                    "description": "The list of custom error rules that apply to individual API messages.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
-                    "items": {
-                        "$ref": "CustomErrorRule"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Http": {
-            "description": "Defines the HTTP configuration for an API service. It contains a list of\nHttpRule, each specifying the mapping of an RPC method\nto one or more HTTP REST API methods.",
-            "id": "Http",
-            "properties": {
-                "rules": {
-                    "description": "A list of HTTP configuration rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
-                    "items": {
-                        "$ref": "HttpRule"
-                    },
-                    "type": "array"
-                },
-                "fullyDecodeReservedExpansion": {
-                    "description": "When set to true, URL path parmeters will be fully URI-decoded except in\ncases of single segment matches in reserved expansion, where \"%2F\" will be\nleft encoded.\n\nThe default behavior is to not decode RFC 6570 reserved characters in multi\nsegment matches.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "SourceInfo": {
-            "description": "Source information used to create a Service Config",
-            "id": "SourceInfo",
-            "properties": {
-                "sourceFiles": {
-                    "description": "All files used during config generation.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Control": {
-            "description": "Selects and configures the service controller used by the service.  The\nservice controller handles features like abuse, quota, billing, logging,\nmonitoring, etc.",
-            "id": "Control",
-            "properties": {
-                "environment": {
-                    "description": "The service control environment to use. If empty, no control plane\nfeature (like quota and billing) will be enabled.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SystemParameter": {
-            "description": "Define a parameter's name and location. The parameter may be passed as either\nan HTTP header or a URL query parameter, and if both are passed the behavior\nis implementation-dependent.",
-            "id": "SystemParameter",
-            "properties": {
-                "urlQueryParameter": {
-                    "description": "Define the URL query parameter name to use for the parameter. It is case\nsensitive.",
-                    "type": "string"
-                },
-                "httpHeader": {
-                    "description": "Define the HTTP header name to use for the parameter. It is case\ninsensitive.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Define the name of the parameter, such as \"api_key\" . It is case sensitive.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Monitoring": {
-            "description": "Monitoring configuration of the service.\n\nThe example below shows how to configure monitored resources and metrics\nfor monitoring. In the example, a monitored resource and two metrics are\ndefined. The `library.googleapis.com/book/returned_count` metric is sent\nto both producer and consumer projects, whereas the\n`library.googleapis.com/book/overdue_count` metric is only sent to the\nconsumer project.\n\n    monitored_resources:\n    - type: library.googleapis.com/branch\n      labels:\n      - key: /city\n        description: The city where the library branch is located in.\n      - key: /name\n        description: The name of the branch.\n    metrics:\n    - name: library.googleapis.com/book/returned_count\n      metric_kind: DELTA\n      value_type: INT64\n      labels:\n      - key: /customer_id\n    - name: library.googleapis.com/book/overdue_count\n      metric_kind: GAUGE\n      value_type: INT64\n      labels:\n      - key: /customer_id\n    monitoring:\n      producer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        metrics:\n        - library.googleapis.com/book/returned_count\n      consumer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        metrics:\n        - library.googleapis.com/book/returned_count\n        - library.googleapis.com/book/overdue_count",
-            "id": "Monitoring",
-            "properties": {
-                "consumerDestinations": {
-                    "description": "Monitoring configurations for sending metrics to the consumer project.\nThere can be multiple consumer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none consumer destination.",
-                    "items": {
-                        "$ref": "MonitoringDestination"
-                    },
-                    "type": "array"
-                },
-                "producerDestinations": {
-                    "description": "Monitoring configurations for sending metrics to the producer project.\nThere can be multiple producer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none producer destination.",
-                    "items": {
-                        "$ref": "MonitoringDestination"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Field": {
-            "description": "A single field of a message type.",
-            "id": "Field",
-            "properties": {
-                "defaultValue": {
-                    "description": "The string value of the default value of this field. Proto2 syntax only.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The field name.",
-                    "type": "string"
-                },
-                "typeUrl": {
-                    "description": "The field type URL, without the scheme, for message or enumeration\ntypes. Example: `\"type.googleapis.com/google.protobuf.Timestamp\"`.",
-                    "type": "string"
-                },
-                "number": {
-                    "description": "The field number.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "kind": {
-                    "description": "The field type.",
-                    "enum": [
-                        "TYPE_UNKNOWN",
-                        "TYPE_DOUBLE",
-                        "TYPE_FLOAT",
-                        "TYPE_INT64",
-                        "TYPE_UINT64",
-                        "TYPE_INT32",
-                        "TYPE_FIXED64",
-                        "TYPE_FIXED32",
-                        "TYPE_BOOL",
-                        "TYPE_STRING",
-                        "TYPE_GROUP",
-                        "TYPE_MESSAGE",
-                        "TYPE_BYTES",
-                        "TYPE_UINT32",
-                        "TYPE_ENUM",
-                        "TYPE_SFIXED32",
-                        "TYPE_SFIXED64",
-                        "TYPE_SINT32",
-                        "TYPE_SINT64"
-                    ],
-                    "enumDescriptions": [
-                        "Field type unknown.",
-                        "Field type double.",
-                        "Field type float.",
-                        "Field type int64.",
-                        "Field type uint64.",
-                        "Field type int32.",
-                        "Field type fixed64.",
-                        "Field type fixed32.",
-                        "Field type bool.",
-                        "Field type string.",
-                        "Field type group. Proto2 syntax only, and deprecated.",
-                        "Field type message.",
-                        "Field type bytes.",
-                        "Field type uint32.",
-                        "Field type enum.",
-                        "Field type sfixed32.",
-                        "Field type sfixed64.",
-                        "Field type sint32.",
-                        "Field type sint64."
-                    ],
-                    "type": "string"
-                },
-                "jsonName": {
-                    "description": "The field JSON name.",
-                    "type": "string"
-                },
-                "options": {
-                    "description": "The protocol buffer options.",
-                    "items": {
-                        "$ref": "Option"
-                    },
-                    "type": "array"
-                },
-                "oneofIndex": {
-                    "description": "The index of the field type in `Type.oneofs`, for message or enumeration\ntypes. The first type has index 1; zero means the type is not in the list.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "packed": {
-                    "description": "Whether to use alternative packed wire representation.",
-                    "type": "boolean"
-                },
-                "cardinality": {
-                    "description": "The field cardinality.",
-                    "enum": [
-                        "CARDINALITY_UNKNOWN",
-                        "CARDINALITY_OPTIONAL",
-                        "CARDINALITY_REQUIRED",
-                        "CARDINALITY_REPEATED"
-                    ],
-                    "enumDescriptions": [
-                        "For fields with unknown cardinality.",
-                        "For optional fields.",
-                        "For required fields. Proto2 syntax only.",
-                        "For repeated fields."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TestIamPermissionsRequest": {
-            "description": "Request message for `TestIamPermissions` method.",
-            "id": "TestIamPermissionsRequest",
-            "properties": {
-                "permissions": {
-                    "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Enum": {
-            "description": "Enum type definition.",
-            "id": "Enum",
-            "properties": {
-                "enumvalue": {
-                    "description": "Enum value definitions.",
-                    "items": {
-                        "$ref": "EnumValue"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "Enum type name.",
-                    "type": "string"
-                },
-                "options": {
-                    "description": "Protocol buffer options.",
-                    "items": {
-                        "$ref": "Option"
-                    },
-                    "type": "array"
-                },
-                "syntax": {
-                    "description": "The source syntax.",
-                    "enum": [
-                        "SYNTAX_PROTO2",
-                        "SYNTAX_PROTO3"
-                    ],
-                    "enumDescriptions": [
-                        "Syntax `proto2`.",
-                        "Syntax `proto3`."
-                    ],
-                    "type": "string"
-                },
-                "sourceContext": {
-                    "$ref": "SourceContext",
-                    "description": "The source context."
-                }
-            },
-            "type": "object"
-        },
-        "EnableServiceRequest": {
-            "description": "Request message for EnableService method.",
-            "id": "EnableServiceRequest",
-            "properties": {
-                "consumerId": {
-                    "description": "The identity of consumer resource which service enablement will be\napplied to.\n\nThe Google Service Management implementation accepts the following\nforms:\n- \"project:<project_id>\"\n\nNote: this is made compatible with\ngoogle.api.servicecontrol.v1.Operation.consumer_id.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Diagnostic": {
-            "description": "Represents a diagnostic message (error or warning)",
-            "id": "Diagnostic",
-            "properties": {
-                "location": {
-                    "description": "File name and line number of the error or warning.",
-                    "type": "string"
-                },
-                "kind": {
-                    "description": "The kind of diagnostic information provided.",
-                    "enum": [
-                        "WARNING",
-                        "ERROR"
-                    ],
-                    "enumDescriptions": [
-                        "Warnings and errors",
-                        "Only errors"
-                    ],
-                    "type": "string"
-                },
-                "message": {
-                    "description": "Message describing the error or warning.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LabelDescriptor": {
-            "description": "A description of a label.",
-            "id": "LabelDescriptor",
-            "properties": {
-                "key": {
-                    "description": "The label key.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "A human-readable description for the label.",
-                    "type": "string"
-                },
-                "valueType": {
-                    "description": "The type of data that can be assigned to the label.",
-                    "enum": [
-                        "STRING",
-                        "BOOL",
-                        "INT64"
-                    ],
-                    "enumDescriptions": [
-                        "A variable-length string. This is the default.",
-                        "Boolean; true or false.",
-                        "A 64-bit signed integer."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GenerateConfigReportResponse": {
-            "description": "Response message for GenerateConfigReport method.",
-            "id": "GenerateConfigReportResponse",
-            "properties": {
-                "changeReports": {
-                    "description": "list of ChangeReport, each corresponding to comparison between two\nservice configurations.",
-                    "items": {
-                        "$ref": "ChangeReport"
-                    },
-                    "type": "array"
-                },
-                "id": {
-                    "description": "ID of the service configuration this report belongs to.",
-                    "type": "string"
-                },
-                "diagnostics": {
-                    "description": "Errors / Linter warnings associated with the service definition this\nreport\nbelongs to.",
-                    "items": {
-                        "$ref": "Diagnostic"
-                    },
-                    "type": "array"
-                },
-                "serviceName": {
-                    "description": "Name of the service this report belongs to.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Type": {
-            "description": "A protocol buffer message type.",
-            "id": "Type",
-            "properties": {
-                "sourceContext": {
-                    "$ref": "SourceContext",
-                    "description": "The source context."
-                },
-                "syntax": {
-                    "description": "The source syntax.",
-                    "enum": [
-                        "SYNTAX_PROTO2",
-                        "SYNTAX_PROTO3"
-                    ],
-                    "enumDescriptions": [
-                        "Syntax `proto2`.",
-                        "Syntax `proto3`."
-                    ],
-                    "type": "string"
-                },
-                "options": {
-                    "description": "The protocol buffer options.",
-                    "items": {
-                        "$ref": "Option"
-                    },
-                    "type": "array"
-                },
-                "fields": {
-                    "description": "The list of fields.",
-                    "items": {
-                        "$ref": "Field"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "The fully qualified message name.",
-                    "type": "string"
-                },
-                "oneofs": {
-                    "description": "The list of types appearing in `oneof` definitions in this type.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Experimental": {
-            "description": "Experimental service configuration. These configuration options can\nonly be used by whitelisted users.",
-            "id": "Experimental",
-            "properties": {
-                "authorization": {
-                    "$ref": "AuthorizationConfig",
-                    "description": "Authorization configuration."
-                }
-            },
-            "type": "object"
-        },
-        "ListServiceConfigsResponse": {
-            "description": "Response message for ListServiceConfigs method.",
-            "id": "ListServiceConfigsResponse",
-            "properties": {
-                "serviceConfigs": {
-                    "description": "The list of service configuration resources.",
-                    "items": {
-                        "$ref": "Service"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "The token of the next page of results.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AuditConfig": {
-            "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
-            "id": "AuditConfig",
-            "properties": {
-                "auditLogConfigs": {
-                    "description": "The configuration for logging of each type of permission.\nNext ID: 4",
-                    "items": {
-                        "$ref": "AuditLogConfig"
-                    },
-                    "type": "array"
-                },
-                "exemptedMembers": {
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "service": {
-                    "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Backend": {
-            "description": "`Backend` defines the backend configuration for a service.",
-            "id": "Backend",
-            "properties": {
-                "rules": {
-                    "description": "A list of API backend rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
-                    "items": {
-                        "$ref": "BackendRule"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "SubmitConfigSourceRequest": {
-            "description": "Request message for SubmitConfigSource method.",
-            "id": "SubmitConfigSourceRequest",
-            "properties": {
-                "validateOnly": {
-                    "description": "Optional. If set, this will result in the generation of a\n`google.api.Service` configuration based on the `ConfigSource` provided,\nbut the generated config and the sources will NOT be persisted.",
-                    "type": "boolean"
-                },
-                "configSource": {
-                    "$ref": "ConfigSource",
-                    "description": "The source configuration for the service."
-                }
-            },
-            "type": "object"
-        },
-        "AuthorizationConfig": {
-            "description": "Configuration of authorization.\n\nThis section determines the authorization provider, if unspecified, then no\nauthorization check will be done.\n\nExample:\n\n    experimental:\n      authorization:\n        provider: firebaserules.googleapis.com",
-            "id": "AuthorizationConfig",
-            "properties": {
-                "provider": {
-                    "description": "The name of the authorization provider, such as\nfirebaserules.googleapis.com.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "DocumentationRule": {
-            "description": "A documentation rule provides information about individual API elements.",
-            "id": "DocumentationRule",
-            "properties": {
-                "description": {
-                    "description": "Description of the selected API(s).",
-                    "type": "string"
-                },
-                "deprecationDescription": {
-                    "description": "Deprecation description of the selected element(s). It can be provided if an\nelement is marked as `deprecated`.",
-                    "type": "string"
-                },
-                "selector": {
-                    "description": "The selector is a comma-separated list of patterns. Each pattern is a\nqualified name of the element which may end in \"*\", indicating a wildcard.\nWildcards are only allowed at the end and for a whole component of the\nqualified name, i.e. \"foo.*\" is ok, but not \"foo.b*\" or \"foo.*.bar\". To\nspecify a default for all applicable elements, the whole pattern \"*\"\nis used.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ContextRule": {
-            "description": "A context rule provides information about the context for an individual API\nelement.",
-            "id": "ContextRule",
-            "properties": {
-                "selector": {
-                    "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.",
-                    "type": "string"
-                },
-                "provided": {
-                    "description": "A list of full type names of provided contexts.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "requested": {
-                    "description": "A list of full type names of requested contexts.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Billing": {
-            "description": "Billing related configuration of the service.\n\nThe following example shows how to configure monitored resources and metrics\nfor billing:\n    monitored_resources:\n    - type: library.googleapis.com/branch\n      labels:\n      - key: /city\n        description: The city where the library branch is located in.\n      - key: /name\n        description: The name of the branch.\n    metrics:\n    - name: library.googleapis.com/book/borrowed_count\n      metric_kind: DELTA\n      value_type: INT64\n    billing:\n      consumer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        metrics:\n        - library.googleapis.com/book/borrowed_count",
-            "id": "Billing",
-            "properties": {
-                "consumerDestinations": {
-                    "description": "Billing configurations for sending metrics to the consumer project.\nThere can be multiple consumer destinations per service, each one must have\na different monitored resource type. A metric can be used in at most\none consumer destination.",
-                    "items": {
-                        "$ref": "BillingDestination"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "MetricDescriptor": {
-            "description": "Defines a metric type and its schema. Once a metric descriptor is created,\ndeleting or altering it stops data collection and makes the metric type's\nexisting data unusable.",
-            "id": "MetricDescriptor",
-            "properties": {
-                "unit": {
-                    "description": "The unit in which the metric value is reported. It is only applicable\nif the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The\nsupported units are a subset of [The Unified Code for Units of\nMeasure](http://unitsofmeasure.org/ucum.html) standard:\n\n**Basic units (UNIT)**\n\n* `bit`   bit\n* `By`    byte\n* `s`     second\n* `min`   minute\n* `h`     hour\n* `d`     day\n\n**Prefixes (PREFIX)**\n\n* `k`     kilo    (10**3)\n* `M`     mega    (10**6)\n* `G`     giga    (10**9)\n* `T`     tera    (10**12)\n* `P`     peta    (10**15)\n* `E`     exa     (10**18)\n* `Z`     zetta   (10**21)\n* `Y`     yotta   (10**24)\n* `m`     milli   (10**-3)\n* `u`     micro   (10**-6)\n* `n`     nano    (10**-9)\n* `p`     pico    (10**-12)\n* `f`     femto   (10**-15)\n* `a`     atto    (10**-18)\n* `z`     zepto   (10**-21)\n* `y`     yocto   (10**-24)\n* `Ki`    kibi    (2**10)\n* `Mi`    mebi    (2**20)\n* `Gi`    gibi    (2**30)\n* `Ti`    tebi    (2**40)\n\n**Grammar**\n\nThe grammar includes the dimensionless unit `1`, such as `1/s`.\n\nThe grammar also includes these connectors:\n\n* `/`    division (as an infix operator, e.g. `1/s`).\n* `.`    multiplication (as an infix operator, e.g. `GBy.d`)\n\nThe grammar for a unit is as follows:\n\n    Expression = Component { \".\" Component } { \"/\" Component } ;\n\n    Component = [ PREFIX ] UNIT [ Annotation ]\n              | Annotation\n              | \"1\"\n              ;\n\n    Annotation = \"{\" NAME \"}\" ;\n\nNotes:\n\n* `Annotation` is just a comment if it follows a `UNIT` and is\n   equivalent to `1` if it is used alone. For examples,\n   `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.\n* `NAME` is a sequence of non-blank printable ASCII characters not\n   containing '{' or '}'.",
-                    "type": "string"
-                },
-                "labels": {
-                    "description": "The set of labels that can be used to describe a specific\ninstance of this metric type. For example, the\n`appengine.googleapis.com/http/server/response_latencies` metric\ntype has a label for the HTTP response code, `response_code`, so\nyou can look at latencies for successful responses or just\nfor responses that failed.",
-                    "items": {
-                        "$ref": "LabelDescriptor"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "The resource name of the metric descriptor. Depending on the\nimplementation, the name typically includes: (1) the parent resource name\nthat defines the scope of the metric type or of its data; and (2) the\nmetric's URL-encoded type, which also appears in the `type` field of this\ndescriptor. For example, following is the resource name of a custom\nmetric within the GCP project `my-project-id`:\n\n    \"projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount\"",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The metric type, including its DNS name prefix. The type is not\nURL-encoded.  All user-defined custom metric types have the DNS name\n`custom.googleapis.com`.  Metric types should use a natural hierarchical\ngrouping. For example:\n\n    \"custom.googleapis.com/invoice/paid/amount\"\n    \"appengine.googleapis.com/http/server/response_latencies\"",
-                    "type": "string"
-                },
-                "valueType": {
-                    "description": "Whether the measurement is an integer, a floating-point number, etc.\nSome combinations of `metric_kind` and `value_type` might not be supported.",
-                    "enum": [
-                        "VALUE_TYPE_UNSPECIFIED",
-                        "BOOL",
-                        "INT64",
-                        "DOUBLE",
-                        "STRING",
-                        "DISTRIBUTION",
-                        "MONEY"
-                    ],
-                    "enumDescriptions": [
-                        "Do not use this default value.",
-                        "The value is a boolean.\nThis value type can be used only if the metric kind is `GAUGE`.",
-                        "The value is a signed 64-bit integer.",
-                        "The value is a double precision floating point number.",
-                        "The value is a text string.\nThis value type can be used only if the metric kind is `GAUGE`.",
-                        "The value is a `Distribution`.",
-                        "The value is money."
-                    ],
-                    "type": "string"
-                },
-                "metricKind": {
-                    "description": "Whether the metric records instantaneous values, changes to a value, etc.\nSome combinations of `metric_kind` and `value_type` might not be supported.",
-                    "enum": [
-                        "METRIC_KIND_UNSPECIFIED",
-                        "GAUGE",
-                        "DELTA",
-                        "CUMULATIVE"
-                    ],
-                    "enumDescriptions": [
-                        "Do not use this default value.",
-                        "An instantaneous measurement of a value.",
-                        "The change in a value during a time interval.",
-                        "A value accumulated over a time interval.  Cumulative\nmeasurements in a time series should have the same start time\nand increasing end times, until an event resets the cumulative\nvalue to zero and sets a new start time for the following\npoints."
-                    ],
-                    "type": "string"
-                },
-                "description": {
-                    "description": "A detailed description of the metric, which can be used in documentation.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "A concise name for the metric, which can be displayed in user interfaces.\nUse sentence case without an ending period, for example \"Request count\".",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SourceContext": {
-            "description": "`SourceContext` represents information about the source of a\nprotobuf element, like the file in which it is defined.",
-            "id": "SourceContext",
-            "properties": {
-                "fileName": {
-                    "description": "The path-qualified name of the .proto file that contained the associated\nprotobuf element.  For example: `\"google/protobuf/source_context.proto\"`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Expr": {
-            "description": "Represents an expression text. Example:\n\n    title: \"User account presence\"\n    description: \"Determines whether the request has a user account\"\n    expression: \"size(request.user) > 0\"",
-            "id": "Expr",
-            "properties": {
-                "expression": {
-                    "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.",
-                    "type": "string"
-                },
-                "location": {
-                    "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.",
-                    "type": "string"
-                },
-                "title": {
-                    "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListServicesResponse": {
-            "description": "Response message for `ListServices` method.",
-            "id": "ListServicesResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Token that can be passed to `ListServices` to resume a paginated query.",
-                    "type": "string"
-                },
-                "services": {
-                    "description": "The returned services will only have the name field set.",
-                    "items": {
-                        "$ref": "ManagedService"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Endpoint": {
-            "description": "`Endpoint` describes a network endpoint that serves a set of APIs.\nA service may expose any number of endpoints, and all endpoints share the\nsame service configuration, such as quota configuration and monitoring\nconfiguration.\n\nExample service configuration:\n\n    name: library-example.googleapis.com\n    endpoints:\n      # Below entry makes 'google.example.library.v1.Library'\n      # API be served from endpoint address library-example.googleapis.com.\n      # It also allows HTTP OPTIONS calls to be passed to the backend, for\n      # it to decide whether the subsequent cross-origin request is\n      # allowed to proceed.\n    - name: library-example.googleapis.com\n      allow_cors: true",
-            "id": "Endpoint",
-            "properties": {
-                "apis": {
-                    "description": "The list of APIs served by this endpoint.\n\nIf no APIs are specified this translates to \"all APIs\" exported by the\nservice, as defined in the top-level service configuration.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "allowCors": {
-                    "description": "Allowing\n[CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka\ncross-domain traffic, would allow the backends served from this endpoint to\nreceive and respond to HTTP OPTIONS requests. The response will be used by\nthe browser to determine whether the subsequent cross-origin request is\nallowed to proceed.",
-                    "type": "boolean"
-                },
-                "aliases": {
-                    "description": "DEPRECATED: This field is no longer supported. Instead of using aliases,\nplease specify multiple google.api.Endpoint for each of the intented\nalias.\n\nAdditional names that this endpoint will be hosted on.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "The canonical name of this endpoint.",
-                    "type": "string"
-                },
-                "target": {
-                    "description": "The specification of an Internet routable address of API frontend that will\nhandle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary).\nIt should be either a valid IPv4 address or a fully-qualified domain name.\nFor example, \"8.8.8.8\" or \"myservice.appspot.com\".",
-                    "type": "string"
-                },
-                "features": {
-                    "description": "The list of features enabled on this endpoint.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "OAuthRequirements": {
-            "description": "OAuth scopes are a way to define data and permissions on data. For example,\nthere are scopes defined for \"Read-only access to Google Calendar\" and\n\"Access to Cloud Platform\". Users can consent to a scope for an application,\ngiving it permission to access that data on their behalf.\n\nOAuth scope specifications should be fairly coarse grained; a user will need\nto see and understand the text description of what your scope means.\n\nIn most cases: use one or at most two OAuth scopes for an entire family of\nproducts. If your product has multiple APIs, you should probably be sharing\nthe OAuth scope across all of those APIs.\n\nWhen you need finer grained OAuth consent screens: talk with your product\nmanagement about how developers will use them in practice.\n\nPlease note that even though each of the canonical scopes is enough for a\nrequest to be accepted and passed to the backend, a request can still fail\ndue to the backend requiring additional scopes or permissions.",
-            "id": "OAuthRequirements",
-            "properties": {
-                "canonicalScopes": {
-                    "description": "The list of publicly documented OAuth scopes that are allowed access. An\nOAuth token containing any of these scopes will be accepted.\n\nExample:\n\n     canonical_scopes: https://www.googleapis.com/auth/calendar,\n                       https://www.googleapis.com/auth/calendar.read",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TestIamPermissionsResponse": {
-            "description": "Response message for `TestIamPermissions` method.",
-            "id": "TestIamPermissionsResponse",
-            "properties": {
-                "permissions": {
-                    "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GetIamPolicyRequest": {
-            "description": "Request message for `GetIamPolicy` method.",
-            "id": "GetIamPolicyRequest",
-            "properties": {},
-            "type": "object"
-        },
-        "Usage": {
-            "description": "Configuration controlling usage of a service.",
-            "id": "Usage",
-            "properties": {
-                "requirements": {
-                    "description": "Requirements that must be satisfied before a consumer project can use the\nservice. Each requirement is of the form <service.name>/<requirement-id>;\nfor example 'serviceusage.googleapis.com/billing-enabled'.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "producerNotificationChannel": {
-                    "description": "The full resource name of a channel used for sending notifications to the\nservice producer.\n\nGoogle Service Management currently only supports\n[Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification\nchannel. To use Google Cloud Pub/Sub as the channel, this must be the name\nof a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format\ndocumented in https://cloud.google.com/pubsub/docs/overview.",
-                    "type": "string"
-                },
-                "rules": {
-                    "description": "A list of usage rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
-                    "items": {
-                        "$ref": "UsageRule"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Context": {
-            "description": "`Context` defines which contexts an API requests.\n\nExample:\n\n    context:\n      rules:\n      - selector: \"*\"\n        requested:\n        - google.rpc.context.ProjectContext\n        - google.rpc.context.OriginContext\n\nThe above specifies that all methods in the API request\n`google.rpc.context.ProjectContext` and\n`google.rpc.context.OriginContext`.\n\nAvailable context types are defined in package\n`google.rpc.context`.",
-            "id": "Context",
-            "properties": {
-                "rules": {
-                    "description": "A list of RPC context rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
-                    "items": {
-                        "$ref": "ContextRule"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "LogDescriptor": {
-            "description": "A description of a log type. Example in YAML format:\n\n    - name: library.googleapis.com/activity_history\n      description: The history of borrowing and returning library items.\n      display_name: Activity\n      labels:\n      - key: /customer_id\n        description: Identifier of a library customer",
-            "id": "LogDescriptor",
-            "properties": {
-                "labels": {
-                    "description": "The set of labels that are available to describe a specific log entry.\nRuntime requests that contain labels not specified here are\nconsidered invalid.",
-                    "items": {
-                        "$ref": "LabelDescriptor"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "The name of the log. It must be less than 512 characters long and can\ninclude the following characters: upper- and lower-case alphanumeric\ncharacters [A-Za-z0-9], and punctuation characters including\nslash, underscore, hyphen, period [/_-.].",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "The human-readable name for this log. This information appears on\nthe user interface and should be concise.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "A human-readable description of this log. This information appears in\nthe documentation and can contain details.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ConfigFile": {
-            "description": "Generic specification of a source configuration file",
-            "id": "ConfigFile",
-            "properties": {
-                "filePath": {
-                    "description": "The file name of the configuration file (full or relative path).",
-                    "type": "string"
-                },
-                "fileType": {
-                    "description": "The type of configuration file this represents.",
-                    "enum": [
-                        "FILE_TYPE_UNSPECIFIED",
-                        "SERVICE_CONFIG_YAML",
-                        "OPEN_API_JSON",
-                        "OPEN_API_YAML",
-                        "FILE_DESCRIPTOR_SET_PROTO",
-                        "PROTO_FILE"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown file type.",
-                        "YAML-specification of service.",
-                        "OpenAPI specification, serialized in JSON.",
-                        "OpenAPI specification, serialized in YAML.",
-                        "FileDescriptorSet, generated by protoc.\n\nTo generate, use protoc with imports and source info included.\nFor an example test.proto file, the following command would put the value\nin a new file named out.pb.\n\n$protoc --include_imports --include_source_info test.proto -o out.pb",
-                        "Uncompiled Proto file. Used for storage and display purposes only,\ncurrently server-side compilation is not supported. Should match the\ninputs to 'protoc' command used to generated FILE_DESCRIPTOR_SET_PROTO. A\nfile of this type can only be included if at least one file of type\nFILE_DESCRIPTOR_SET_PROTO is included."
-                    ],
-                    "type": "string"
-                },
-                "fileContents": {
-                    "description": "The bytes that constitute the file.",
-                    "format": "byte",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "MonitoredResourceDescriptor": {
-            "description": "An object that describes the schema of a MonitoredResource object using a\ntype name and a set of labels.  For example, the monitored resource\ndescriptor for Google Compute Engine VM instances has a type of\n`\"gce_instance\"` and specifies the use of the labels `\"instance_id\"` and\n`\"zone\"` to identify particular VM instances.\n\nDifferent APIs can support different monitored resource types. APIs generally\nprovide a `list` method that returns the monitored resource descriptors used\nby the API.",
-            "id": "MonitoredResourceDescriptor",
-            "properties": {
-                "labels": {
-                    "description": "Required. A set of labels used to describe instances of this monitored\nresource type. For example, an individual Google Cloud SQL database is\nidentified by values for the labels `\"database_id\"` and `\"zone\"`.",
-                    "items": {
-                        "$ref": "LabelDescriptor"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "Optional. The resource name of the monitored resource descriptor:\n`\"projects/{project_id}/monitoredResourceDescriptors/{type}\"` where\n{type} is the value of the `type` field in this object and\n{project_id} is a project ID that provides API-specific context for\naccessing the type.  APIs that do not use project information can use the\nresource name format `\"monitoredResourceDescriptors/{type}\"`.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "Optional. A detailed description of the monitored resource type that might\nbe used in documentation.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "Optional. A concise name for the monitored resource type that might be\ndisplayed in user interfaces. It should be a Title Cased Noun Phrase,\nwithout any article or other determiners. For example,\n`\"Google Cloud SQL Database\"`.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "Required. The monitored resource type. For example, the type\n`\"cloudsql_database\"` represents databases in Google Cloud SQL.\nThe maximum length of this value is 256 characters.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CustomErrorRule": {
-            "description": "A custom error rule.",
-            "id": "CustomErrorRule",
-            "properties": {
-                "selector": {
-                    "description": "Selects messages to which this rule applies.\n\nRefer to selector for syntax details.",
-                    "type": "string"
-                },
-                "isErrorType": {
-                    "description": "Mark this message as possible payload in error response.  Otherwise,\nobjects of this type will be filtered when they appear in error payload.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "CustomAuthRequirements": {
-            "description": "Configuration for a custom authentication provider.",
-            "id": "CustomAuthRequirements",
-            "properties": {
-                "provider": {
-                    "description": "A configuration string containing connection information for the\nauthentication provider, typically formatted as a SmartService string\n(go/smartservice).",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "MediaDownload": {
-            "description": "Defines the Media configuration for a service in case of a download.\nUse this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead [][google.bytestream.RestByteStream] as an API to\nyour configuration for Bytestream methods.",
-            "id": "MediaDownload",
-            "properties": {
-                "enabled": {
-                    "description": "Whether download is enabled.",
-                    "type": "boolean"
-                },
-                "downloadService": {
-                    "description": "DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.\n\nSpecify name of the download service if one is used for download.",
-                    "type": "string"
-                },
-                "completeNotification": {
-                    "description": "A boolean that determines whether a notification for the completion of a\ndownload should be sent to the backend.",
-                    "type": "boolean"
-                },
-                "dropzone": {
-                    "description": "Name of the Scotty dropzone to use for the current API.",
-                    "type": "string"
-                },
-                "maxDirectDownloadSize": {
-                    "description": "Optional maximum acceptable size for direct download.\nThe size is specified in bytes.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "useDirectDownload": {
-                    "description": "A boolean that determines if direct download from ESF should be used for\ndownload of this media.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "ChangeReport": {
-            "description": "Change report associated with a particular service configuration.\n\nIt contains a list of ConfigChanges based on the comparison between\ntwo service configurations.",
-            "id": "ChangeReport",
-            "properties": {
-                "configChanges": {
-                    "description": "List of changes between two service configurations.\nThe changes will be alphabetically sorted based on the identifier\nof each change.\nA ConfigChange identifier is a dot separated path to the configuration.\nExample: visibility.rules[selector='LibraryService.CreateBook'].restriction",
-                    "items": {
-                        "$ref": "ConfigChange"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "DisableServiceRequest": {
-            "description": "Request message for DisableService method.",
-            "id": "DisableServiceRequest",
-            "properties": {
-                "consumerId": {
-                    "description": "The identity of consumer resource which service disablement will be\napplied to.\n\nThe Google Service Management implementation accepts the following\nforms:\n- \"project:<project_id>\"\n\nNote: this is made compatible with\ngoogle.api.servicecontrol.v1.Operation.consumer_id.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SubmitConfigSourceResponse": {
-            "description": "Response message for SubmitConfigSource method.",
-            "id": "SubmitConfigSourceResponse",
-            "properties": {
-                "serviceConfig": {
-                    "$ref": "Service",
-                    "description": "The generated service configuration."
-                }
-            },
-            "type": "object"
-        },
-        "MediaUpload": {
-            "description": "Defines the Media configuration for a service in case of an upload.\nUse this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead [][google.bytestream.RestByteStream] as an API to\nyour configuration for Bytestream methods.",
-            "id": "MediaUpload",
-            "properties": {
-                "completeNotification": {
-                    "description": "A boolean that determines whether a notification for the completion of an\nupload should be sent to the backend. These notifications will not be seen\nby the client and will not consume quota.",
-                    "type": "boolean"
-                },
-                "progressNotification": {
-                    "description": "Whether to receive a notification for progress changes of media upload.",
-                    "type": "boolean"
-                },
-                "enabled": {
-                    "description": "Whether upload is enabled.",
-                    "type": "boolean"
-                },
-                "dropzone": {
-                    "description": "Name of the Scotty dropzone to use for the current API.",
-                    "type": "string"
-                },
-                "startNotification": {
-                    "description": "Whether to receive a notification on the start of media upload.",
-                    "type": "boolean"
-                },
-                "uploadService": {
-                    "description": "DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.\n\nSpecify name of the upload service if one is used for upload.",
-                    "type": "string"
-                },
-                "mimeTypes": {
-                    "description": "An array of mimetype patterns. Esf will only accept uploads that match one\nof the given patterns.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "maxSize": {
-                    "description": "Optional maximum acceptable size for an upload.\nThe size is specified in bytes.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "BillingDestination": {
-            "description": "Configuration of a specific billing destination (Currently only support\nbill against consumer project).",
-            "id": "BillingDestination",
-            "properties": {
-                "monitoredResource": {
-                    "description": "The monitored resource type. The type must be defined in\nService.monitored_resources section.",
-                    "type": "string"
-                },
-                "metrics": {
-                    "description": "Names of the metrics to report to this billing destination.\nEach name must be defined in Service.metrics section.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Advice": {
-            "description": "Generated advice about this change, used for providing more\ninformation about how a change will affect the existing service.",
-            "id": "Advice",
-            "properties": {
-                "description": {
-                    "description": "Useful description for why this advice was applied and what actions should\nbe taken to mitigate any implied risks.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ManagedService": {
-            "description": "The full representation of a Service that is managed by\nGoogle Service Management.",
-            "id": "ManagedService",
-            "properties": {
-                "producerProjectId": {
-                    "description": "ID of the project that produces and owns this service.",
-                    "type": "string"
-                },
-                "serviceName": {
-                    "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UsageRule": {
-            "description": "Usage configuration rules for the service.\n\nNOTE: Under development.\n\n\nUse this rule to configure unregistered calls for the service. Unregistered\ncalls are calls that do not contain consumer project identity.\n(Example: calls that do not contain an API key).\nBy default, API methods do not allow unregistered calls, and each method call\nmust be identified by a consumer project identity. Use this rule to\nallow/disallow unregistered calls.\n\nExample of an API that wants to allow unregistered calls for entire service.\n\n    usage:\n      rules:\n      - selector: \"*\"\n        allow_unregistered_calls: true\n\nExample of a method that wants to allow unregistered calls.\n\n    usage:\n      rules:\n      - selector: \"google.example.library.v1.LibraryService.CreateBook\"\n        allow_unregistered_calls: true",
-            "id": "UsageRule",
-            "properties": {
-                "allowUnregisteredCalls": {
-                    "description": "True, if the method allows unregistered calls; false otherwise.",
-                    "type": "boolean"
-                },
-                "selector": {
-                    "description": "Selects the methods to which this rule applies. Use '*' to indicate all\nmethods in all APIs.\n\nRefer to selector for syntax details.",
-                    "type": "string"
-                },
-                "skipServiceControl": {
-                    "description": "True, if the method should skip service control. If so, no control plane\nfeature (like quota and billing) will be enabled.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "TrafficPercentStrategy": {
-            "description": "Strategy that specifies how clients of Google Service Controller want to\nsend traffic to use different config versions. This is generally\nused by API proxy to split traffic based on your configured precentage for\neach config version.\n\nOne example of how to gradually rollout a new service configuration using\nthis\nstrategy:\nDay 1\n\n    Rollout {\n      id: \"example.googleapis.com/rollout_20160206\"\n      traffic_percent_strategy {\n        percentages: {\n          \"example.googleapis.com/20160201\": 70.00\n          \"example.googleapis.com/20160206\": 30.00\n        }\n      }\n    }\n\nDay 2\n\n    Rollout {\n      id: \"example.googleapis.com/rollout_20160207\"\n      traffic_percent_strategy: {\n        percentages: {\n          \"example.googleapis.com/20160206\": 100.00\n        }\n      }\n    }",
-            "id": "TrafficPercentStrategy",
-            "properties": {
-                "percentages": {
-                    "additionalProperties": {
-                        "format": "double",
-                        "type": "number"
-                    },
-                    "description": "Maps service configuration IDs to their corresponding traffic percentage.\nKey is the service configuration ID, Value is the traffic percentage\nwhich must be greater than 0.0 and the sum must equal to 100.0.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "AuthRequirement": {
-            "description": "User-defined authentication requirements, including support for\n[JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).",
-            "id": "AuthRequirement",
-            "properties": {
-                "providerId": {
-                    "description": "id from authentication provider.\n\nExample:\n\n    provider_id: bookstore_auth",
-                    "type": "string"
-                },
-                "audiences": {
-                    "description": "NOTE: This will be deprecated soon, once AuthProvider.audiences is\nimplemented and accepted in all the runtime components.\n\nThe list of JWT\n[audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).\nthat are allowed to access. A JWT containing any of these audiences will\nbe accepted. When this setting is absent, only JWTs with audience\n\"https://Service_name/API_name\"\nwill be accepted. For example, if no audiences are in the setting,\nLibraryService API will only accept JWTs with the following audience\n\"https://library-example.googleapis.com/google.example.library.v1.LibraryService\".\n\nExample:\n\n    audiences: bookstore_android.apps.googleusercontent.com,\n               bookstore_web.apps.googleusercontent.com",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "Documentation": {
             "description": "`Documentation` provides the information for describing a service.\n\nExample:\n<pre><code>documentation:\n  summary: >\n    The Google Calendar API gives access\n    to most calendar features.\n  pages:\n  - name: Overview\n    content: &#40;== include google/foo/overview.md ==&#41;\n  - name: Tutorial\n    content: &#40;== include google/foo/tutorial.md ==&#41;\n    subpages;\n    - name: Java\n      content: &#40;== include google/foo/tutorial_java.md ==&#41;\n  rules:\n  - selector: google.calendar.Calendar.Get\n    description: >\n      ...\n  - selector: google.calendar.Calendar.Put\n    description: >\n      ...\n</code></pre>\nDocumentation is provided in markdown syntax. In addition to\nstandard markdown features, definition lists, tables and fenced\ncode blocks are supported. Section headers can be provided and are\ninterpreted relative to the section nesting of the context where\na documentation fragment is embedded.\n\nDocumentation from the IDL is merged with documentation defined\nvia the config at normalization time, where documentation provided\nby config rules overrides IDL provided.\n\nA number of constructs specific to the API platform are supported\nin documentation text.\n\nIn order to reference a proto element, the following\nnotation can be used:\n<pre><code>&#91;fully.qualified.proto.name]&#91;]</code></pre>\nTo override the display text used for the link, this can be used:\n<pre><code>&#91;display text]&#91;fully.qualified.proto.name]</code></pre>\nText can be excluded from doc using the following notation:\n<pre><code>&#40;-- internal comment --&#41;</code></pre>\nComments can be made conditional using a visibility label. The below\ntext will be only rendered if the `BETA` label is available:\n<pre><code>&#40;--BETA: comment for BETA users --&#41;</code></pre>\nA few directives are available in documentation. Note that\ndirectives must appear on a single line to be properly\nidentified. The `include` directive includes a markdown file from\nan external source:\n<pre><code>&#40;== include path/to/file ==&#41;</code></pre>\nThe `resource_for` directive marks a message to be the resource of\na collection in REST view. If it is not specified, tools attempt\nto infer the resource from the operations in a collection:\n<pre><code>&#40;== resource_for v1.shelves.books ==&#41;</code></pre>\nThe directive `suppress_warning` does not directly affect documentation\nand is documented together with service config validation.",
             "id": "Documentation",
@@ -2537,41 +932,16 @@
             "description": "Represents a source file which is used to generate the service configuration\ndefined by `google.api.Service`.",
             "id": "ConfigSource",
             "properties": {
-                "id": {
-                    "description": "A unique ID for a specific instance of this message, typically assigned\nby the client for tracking purpose. If empty, the server may choose to\ngenerate one instead.",
-                    "type": "string"
-                },
                 "files": {
                     "description": "Set of source configuration files that are used to generate a service\nconfiguration (`google.api.Service`).",
                     "items": {
                         "$ref": "ConfigFile"
                     },
                     "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "BackendRule": {
-            "description": "A backend rule provides configuration for an individual API element.",
-            "id": "BackendRule",
-            "properties": {
-                "address": {
-                    "description": "The address of the API backend.",
+                },
+                "id": {
+                    "description": "A unique ID for a specific instance of this message, typically assigned\nby the client for tracking purpose. If empty, the server may choose to\ngenerate one instead.",
                     "type": "string"
-                },
-                "selector": {
-                    "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.",
-                    "type": "string"
-                },
-                "deadline": {
-                    "description": "The number of seconds to wait for a response from a request.  The default\ndeadline for gRPC is infinite (no deadline) and HTTP requests is 5 seconds.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "minDeadline": {
-                    "description": "Minimum deadline in seconds needed for this method. Calls having deadline\nvalue lower than this will be rejected.",
-                    "format": "double",
-                    "type": "number"
                 }
             },
             "type": "object"
@@ -2606,13 +976,27 @@
             },
             "type": "object"
         },
-        "UndeleteServiceResponse": {
-            "description": "Response message for UndeleteService method.",
-            "id": "UndeleteServiceResponse",
+        "BackendRule": {
+            "description": "A backend rule provides configuration for an individual API element.",
+            "id": "BackendRule",
             "properties": {
-                "service": {
-                    "$ref": "ManagedService",
-                    "description": "Revived service resource."
+                "minDeadline": {
+                    "description": "Minimum deadline in seconds needed for this method. Calls having deadline\nvalue lower than this will be rejected.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "address": {
+                    "description": "The address of the API backend.",
+                    "type": "string"
+                },
+                "selector": {
+                    "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.",
+                    "type": "string"
+                },
+                "deadline": {
+                    "description": "The number of seconds to wait for a response from a request.  The default\ndeadline for gRPC is infinite (no deadline) and HTTP requests is 5 seconds.",
+                    "format": "double",
+                    "type": "number"
                 }
             },
             "type": "object"
@@ -2621,9 +1005,6 @@
             "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
             "id": "Policy",
             "properties": {
-                "iamOwned": {
-                    "type": "boolean"
-                },
                 "etag": {
                     "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
                     "format": "byte",
@@ -2647,6 +1028,20 @@
                         "$ref": "Binding"
                     },
                     "type": "array"
+                },
+                "iamOwned": {
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "UndeleteServiceResponse": {
+            "description": "Response message for UndeleteService method.",
+            "id": "UndeleteServiceResponse",
+            "properties": {
+                "service": {
+                    "$ref": "ManagedService",
+                    "description": "Revived service resource."
                 }
             },
             "type": "object"
@@ -2655,13 +1050,6 @@
             "description": "Api is a light-weight descriptor for an API Interface.\n\nInterfaces are also described as \"protocol buffer services\" in some contexts,\nsuch as by the \"service\" keyword in a .proto file, but they are different\nfrom API Services, which represent a concrete implementation of an interface\nas opposed to simply a description of methods and bindings. They are also\nsometimes simply referred to as \"APIs\" in other contexts, such as the name of\nthis message itself. See https://cloud.google.com/apis/design/glossary for\ndetailed terminology.",
             "id": "Api",
             "properties": {
-                "options": {
-                    "description": "Any metadata attached to the interface.",
-                    "items": {
-                        "$ref": "Option"
-                    },
-                    "type": "array"
-                },
                 "methods": {
                     "description": "The methods of this interface, in unspecified order.",
                     "items": {
@@ -2699,6 +1087,13 @@
                         "$ref": "Mixin"
                     },
                     "type": "array"
+                },
+                "options": {
+                    "description": "Any metadata attached to the interface.",
+                    "items": {
+                        "$ref": "Option"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -2747,10 +1142,6 @@
             "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
             "id": "Operation",
             "properties": {
-                "name": {
-                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
-                    "type": "string"
-                },
                 "error": {
                     "$ref": "Status",
                     "description": "The error result of the operation in case of failure or cancellation."
@@ -2774,6 +1165,10 @@
                     },
                     "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
                     "type": "object"
+                },
+                "name": {
+                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2804,15 +1199,6 @@
             "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
             "id": "Status",
             "properties": {
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                },
                 "details": {
                     "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
                     "items": {
@@ -2823,6 +1209,15 @@
                         "type": "object"
                     },
                     "type": "array"
+                },
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2831,6 +1226,10 @@
             "description": "Associates `members` with a `role`.",
             "id": "Binding",
             "properties": {
+                "role": {
+                    "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired",
+                    "type": "string"
+                },
                 "condition": {
                     "$ref": "Expr",
                     "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently.\nThis field is GOOGLE_INTERNAL."
@@ -2841,10 +1240,6 @@
                         "type": "string"
                     },
                     "type": "array"
-                },
-                "role": {
-                    "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2903,6 +1298,25 @@
             "description": "`Service` is the root object of Google service configuration schema. It\ndescribes basic information about a service, such as the name and the\ntitle, and delegates other aspects to sub-sections. Each sub-section is\neither a proto message or a repeated proto message that configures a\nspecific aspect, such as auth. See each proto message definition for details.\n\nExample:\n\n    type: google.api.Service\n    config_version: 3\n    name: calendar.googleapis.com\n    title: Google Calendar API\n    apis:\n    - name: google.calendar.v3.Calendar\n    authentication:\n      providers:\n      - id: google_calendar_auth\n        jwks_uri: https://www.googleapis.com/oauth2/v1/certs\n        issuer: https://securetoken.google.com\n      rules:\n      - selector: \"*\"\n        requirements:\n          provider_id: google_calendar_auth",
             "id": "Service",
             "properties": {
+                "usage": {
+                    "$ref": "Usage",
+                    "description": "Configuration controlling usage of this service."
+                },
+                "metrics": {
+                    "description": "Defines the metrics used by this service.",
+                    "items": {
+                        "$ref": "MetricDescriptor"
+                    },
+                    "type": "array"
+                },
+                "authentication": {
+                    "$ref": "Authentication",
+                    "description": "Auth configuration."
+                },
+                "experimental": {
+                    "$ref": "Experimental",
+                    "description": "Experimental configuration."
+                },
                 "control": {
                     "$ref": "Control",
                     "description": "Configuration for the service control plane."
@@ -3010,10 +1424,6 @@
                     },
                     "type": "array"
                 },
-                "context": {
-                    "$ref": "Context",
-                    "description": "Context configuration."
-                },
                 "enums": {
                     "description": "A list of all enum types included in this API service.  Enums\nreferenced directly or indirectly by the `apis` are automatically\nincluded.  Enums which are not referenced but shall be included\nshould be listed here by name. Example:\n\n    enums:\n    - name: google.someapi.v1.SomeEnum",
                     "items": {
@@ -3021,28 +1431,13 @@
                     },
                     "type": "array"
                 },
+                "context": {
+                    "$ref": "Context",
+                    "description": "Context configuration."
+                },
                 "id": {
                     "description": "A unique ID for a specific instance of this message, typically assigned\nby the client for tracking purpose. If empty, the server may choose to\ngenerate one instead.",
                     "type": "string"
-                },
-                "usage": {
-                    "$ref": "Usage",
-                    "description": "Configuration controlling usage of this service."
-                },
-                "metrics": {
-                    "description": "Defines the metrics used by this service.",
-                    "items": {
-                        "$ref": "MetricDescriptor"
-                    },
-                    "type": "array"
-                },
-                "authentication": {
-                    "$ref": "Authentication",
-                    "description": "Auth configuration."
-                },
-                "experimental": {
-                    "$ref": "Experimental",
-                    "description": "Experimental configuration."
                 }
             },
             "type": "object"
@@ -3051,16 +1446,16 @@
             "description": "The response message for Operations.ListOperations.",
             "id": "ListOperationsResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
-                },
                 "operations": {
                     "description": "A list of operations that matches the specified filter in the request.",
                     "items": {
                         "$ref": "Operation"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -3069,6 +1464,11 @@
             "description": "The metadata associated with a long running operation resource.",
             "id": "OperationMetadata",
             "properties": {
+                "progressPercentage": {
+                    "description": "Percentage of completion of this operation, ranging from 0 to 100.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "startTime": {
                     "description": "The start time of the operation.",
                     "format": "google-datetime",
@@ -3087,11 +1487,6 @@
                         "type": "string"
                     },
                     "type": "array"
-                },
-                "progressPercentage": {
-                    "description": "Percentage of completion of this operation, ranging from 0 to 100.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -3148,13 +1543,6 @@
             "description": "`HttpRule` defines the mapping of an RPC method to one or more HTTP\nREST API methods. The mapping specifies how different portions of the RPC\nrequest message are mapped to URL path, URL query parameters, and\nHTTP request body. The mapping is typically specified as an\n`google.api.http` annotation on the RPC method,\nsee \"google/api/annotations.proto\" for details.\n\nThe mapping consists of a field specifying the path template and\nmethod kind.  The path template can refer to fields in the request\nmessage, as in the example below which describes a REST GET\noperation on a resource collection of messages:\n\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http).get = \"/v1/messages/{message_id}/{sub.subfield}\";\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // mapped to the URL\n      SubMessage sub = 2;    // `sub.subfield` is url-mapped\n    }\n    message Message {\n      string text = 1; // content of the resource\n    }\n\nThe same http annotation can alternatively be expressed inside the\n`GRPC API Configuration` YAML file.\n\n    http:\n      rules:\n        - selector: <proto_package_name>.Messaging.GetMessage\n          get: /v1/messages/{message_id}/{sub.subfield}\n\nThis definition enables an automatic, bidrectional mapping of HTTP\nJSON to RPC. Example:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456/foo`  | `GetMessage(message_id: \"123456\" sub: SubMessage(subfield: \"foo\"))`\n\nIn general, not only fields but also field paths can be referenced\nfrom a path pattern. Fields mapped to the path pattern cannot be\nrepeated and must have a primitive (non-message) type.\n\nAny fields in the request message which are not bound by the path\npattern automatically become (optional) HTTP query\nparameters. Assume the following definition of the request message:\n\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http).get = \"/v1/messages/{message_id}\";\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // mapped to the URL\n      int64 revision = 2;    // becomes a parameter\n      SubMessage sub = 3;    // `sub.subfield` becomes a parameter\n    }\n\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to HTTP parameters must have a\nprimitive type or a repeated primitive type. Message types are not\nallowed. In the case of a repeated type, the parameter can be\nrepeated in the URL, as in `...?param=A&param=B`.\n\nFor HTTP method kinds which allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n\n    service Messaging {\n      rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          put: \"/v1/messages/{message_id}\"\n          body: \"message\"\n        };\n      }\n    }\n    message UpdateMessageRequest {\n      string message_id = 1; // mapped to the URL\n      Message message = 2;   // mapped to the body\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body.  This enables the following alternative definition of\nthe update method:\n\n    service Messaging {\n      rpc UpdateMessage(Message) returns (Message) {\n        option (google.api.http) = {\n          put: \"/v1/messages/{message_id}\"\n          body: \"*\"\n        };\n      }\n    }\n    message Message {\n      string message_id = 1;\n      string text = 2;\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice of\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          get: \"/v1/messages/{message_id}\"\n          additional_bindings {\n            get: \"/v1/users/{user_id}/messages/{message_id}\"\n          }\n        };\n      }\n    }\n    message GetMessageRequest {\n      string message_id = 1;\n      string user_id = 2;\n    }\n\n\nThis enables the following two alternative HTTP JSON to RPC\nmappings:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n# Rules for HTTP mapping\n\nThe rules for mapping HTTP path, query parameters, and body fields\nto the request message are as follows:\n\n1. The `body` field specifies either `*` or a field path, or is\n   omitted. If omitted, it indicates there is no HTTP request body.\n2. Leaf fields (recursive expansion of nested messages in the\n   request) can be classified into three types:\n    (a) Matched in the URL template.\n    (b) Covered by body (if body is `*`, everything except (a) fields;\n        else everything under the body field)\n    (c) All other fields.\n3. URL query parameters found in the HTTP request are mapped to (c) fields.\n4. Any body sent with an HTTP request can contain only (b) fields.\n\nThe syntax of the path template is as follows:\n\n    Template = \"/\" Segments [ Verb ] ;\n    Segments = Segment { \"/\" Segment } ;\n    Segment  = \"*\" | \"**\" | LITERAL | Variable ;\n    Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n    FieldPath = IDENT { \".\" IDENT } ;\n    Verb     = \":\" LITERAL ;\n\nThe syntax `*` matches a single path segment. The syntax `**` matches zero\nor more path segments, which must be the last part of the path except the\n`Verb`. The syntax `LITERAL` matches literal text in the path.\n\nThe syntax `Variable` matches part of the URL path as specified by its\ntemplate. A variable template must not contain other variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nIf a variable contains exactly one path segment, such as `\"{var}\"` or\n`\"{var=*}\"`, when such a variable is expanded into a URL path, all characters\nexcept `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the\nDiscovery Document as `{var}`.\n\nIf a variable contains one or more path segments, such as `\"{var=foo/*}\"`\nor `\"{var=**}\"`, when such a variable is expanded into a URL path, all\ncharacters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables\nshow up in the Discovery Document as `{+var}`.\n\nNOTE: While the single segment variable matches the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2\nSimple String Expansion, the multi segment variable **does not** match\nRFC 6570 Reserved Expansion. The reason is that the Reserved Expansion\ndoes not expand special characters like `?` and `#`, which would lead\nto invalid URLs.\n\nNOTE: the field paths in variables and in the `body` must not refer to\nrepeated fields or map fields.",
             "id": "HttpRule",
             "properties": {
-                "additionalBindings": {
-                    "description": "Additional HTTP bindings for the selector. Nested bindings must\nnot contain an `additional_bindings` field themselves (that is,\nthe nesting may only be one level deep).",
-                    "items": {
-                        "$ref": "HttpRule"
-                    },
-                    "type": "array"
-                },
                 "responseBody": {
                     "description": "The name of the response field whose value is mapped to the HTTP body of\nresponse. Other response fields are ignored. This field is optional. When\nnot set, the response message will be used as HTTP body of response.\nNOTE: the referred field must be not a repeated field and must be present\nat the top-level of response message type.",
                     "type": "string"
@@ -3191,13 +1579,20 @@
                     "description": "The name of the request field whose value is mapped to the HTTP body, or\n`*` for mapping all fields not captured by the path pattern to the HTTP\nbody. NOTE: the referred field must not be a repeated field and must be\npresent at the top-level of request message type.",
                     "type": "string"
                 },
+                "mediaDownload": {
+                    "$ref": "MediaDownload",
+                    "description": "Use this only for Scotty Requests. Do not use this for bytestream methods.\nFor media support, add instead [][google.bytestream.RestByteStream] as an\nAPI to your configuration."
+                },
                 "post": {
                     "description": "Used for creating a resource.",
                     "type": "string"
                 },
-                "mediaDownload": {
-                    "$ref": "MediaDownload",
-                    "description": "Use this only for Scotty Requests. Do not use this for bytestream methods.\nFor media support, add instead [][google.bytestream.RestByteStream] as an\nAPI to your configuration."
+                "additionalBindings": {
+                    "description": "Additional HTTP bindings for the selector. Nested bindings must\nnot contain an `additional_bindings` field themselves (that is,\nthe nesting may only be one level deep).",
+                    "items": {
+                        "$ref": "HttpRule"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -3206,16 +1601,1621 @@
             "description": "Configuration of a specific monitoring destination (the producer project\nor the consumer project).",
             "id": "MonitoringDestination",
             "properties": {
-                "monitoredResource": {
-                    "description": "The monitored resource type. The type must be defined in\nService.monitored_resources section.",
-                    "type": "string"
-                },
                 "metrics": {
                     "description": "Names of the metrics to report to this monitoring destination.\nEach name must be defined in Service.metrics section.",
                     "items": {
                         "type": "string"
                     },
                     "type": "array"
+                },
+                "monitoredResource": {
+                    "description": "The monitored resource type. The type must be defined in\nService.monitored_resources section.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Visibility": {
+            "description": "`Visibility` defines restrictions for the visibility of service\nelements.  Restrictions are specified using visibility labels\n(e.g., TRUSTED_TESTER) that are elsewhere linked to users and projects.\n\nUsers and projects can have access to more than one visibility label. The\neffective visibility for multiple labels is the union of each label's\nelements, plus any unrestricted elements.\n\nIf an element and its parents have no restrictions, visibility is\nunconditionally granted.\n\nExample:\n\n    visibility:\n      rules:\n      - selector: google.calendar.Calendar.EnhancedSearch\n        restriction: TRUSTED_TESTER\n      - selector: google.calendar.Calendar.Delegate\n        restriction: GOOGLE_INTERNAL\n\nHere, all methods are publicly visible except for the restricted methods\nEnhancedSearch and Delegate.",
+            "id": "Visibility",
+            "properties": {
+                "rules": {
+                    "description": "A list of visibility rules that apply to individual API elements.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
+                    "items": {
+                        "$ref": "VisibilityRule"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SystemParameters": {
+            "description": "### System parameter configuration\n\nA system parameter is a special kind of parameter defined by the API\nsystem, not by an individual API. It is typically mapped to an HTTP header\nand/or a URL query parameter. This configuration specifies which methods\nchange the names of the system parameters.",
+            "id": "SystemParameters",
+            "properties": {
+                "rules": {
+                    "description": "Define system parameters.\n\nThe parameters defined here will override the default parameters\nimplemented by the system. If this field is missing from the service\nconfig, default system parameters will be used. Default system parameters\nand names is implementation-dependent.\n\nExample: define api key for all methods\n\n    system_parameters\n      rules:\n        - selector: \"*\"\n          parameters:\n            - name: api_key\n              url_query_parameter: api_key\n\n\nExample: define 2 api key names for a specific method.\n\n    system_parameters\n      rules:\n        - selector: \"/ListShelves\"\n          parameters:\n            - name: api_key\n              http_header: Api-Key1\n            - name: api_key\n              http_header: Api-Key2\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
+                    "items": {
+                        "$ref": "SystemParameterRule"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ConfigChange": {
+            "description": "Output generated from semantically comparing two versions of a service\nconfiguration.\n\nIncludes detailed information about a field that have changed with\napplicable advice about potential consequences for the change, such as\nbackwards-incompatibility.",
+            "id": "ConfigChange",
+            "properties": {
+                "newValue": {
+                    "description": "Value of the changed object in the new Service configuration,\nin JSON format. This field will not be populated if ChangeType == REMOVED.",
+                    "type": "string"
+                },
+                "changeType": {
+                    "description": "The type for this change, either ADDED, REMOVED, or MODIFIED.",
+                    "enum": [
+                        "CHANGE_TYPE_UNSPECIFIED",
+                        "ADDED",
+                        "REMOVED",
+                        "MODIFIED"
+                    ],
+                    "enumDescriptions": [
+                        "No value was provided.",
+                        "The changed object exists in the 'new' service configuration, but not\nin the 'old' service configuration.",
+                        "The changed object exists in the 'old' service configuration, but not\nin the 'new' service configuration.",
+                        "The changed object exists in both service configurations, but its value\nis different."
+                    ],
+                    "type": "string"
+                },
+                "element": {
+                    "description": "Object hierarchy path to the change, with levels separated by a '.'\ncharacter. For repeated fields, an applicable unique identifier field is\nused for the index (usually selector, name, or id). For maps, the term\n'key' is used. If the field has no unique identifier, the numeric index\nis used.\nExamples:\n- visibility.rules[selector==\"google.LibraryService.CreateBook\"].restriction\n- quota.metric_rules[selector==\"google\"].metric_costs[key==\"reads\"].value\n- logging.producer_destinations[0]",
+                    "type": "string"
+                },
+                "advices": {
+                    "description": "Collection of advice provided for this change, useful for determining the\npossible impact of this change.",
+                    "items": {
+                        "$ref": "Advice"
+                    },
+                    "type": "array"
+                },
+                "oldValue": {
+                    "description": "Value of the changed object in the old Service configuration,\nin JSON format. This field will not be populated if ChangeType == ADDED.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Quota": {
+            "description": "Quota configuration helps to achieve fairness and budgeting in service\nusage.\n\nThe quota configuration works this way:\n- The service configuration defines a set of metrics.\n- For API calls, the quota.metric_rules maps methods to metrics with\n  corresponding costs.\n- The quota.limits defines limits on the metrics, which will be used for\n  quota checks at runtime.\n\nAn example quota configuration in yaml format:\n\n   quota:\n\n     - name: apiWriteQpsPerProject\n       metric: library.googleapis.com/write_calls\n       unit: \"1/min/{project}\"  # rate limit for consumer projects\n       values:\n         STANDARD: 10000\n\n\n     # The metric rules bind all methods to the read_calls metric,\n     # except for the UpdateBook and DeleteBook methods. These two methods\n     # are mapped to the write_calls metric, with the UpdateBook method\n     # consuming at twice rate as the DeleteBook method.\n     metric_rules:\n     - selector: \"*\"\n       metric_costs:\n         library.googleapis.com/read_calls: 1\n     - selector: google.example.library.v1.LibraryService.UpdateBook\n       metric_costs:\n         library.googleapis.com/write_calls: 2\n     - selector: google.example.library.v1.LibraryService.DeleteBook\n       metric_costs:\n         library.googleapis.com/write_calls: 1\n\n Corresponding Metric definition:\n\n     metrics:\n     - name: library.googleapis.com/read_calls\n       display_name: Read requests\n       metric_kind: DELTA\n       value_type: INT64\n\n     - name: library.googleapis.com/write_calls\n       display_name: Write requests\n       metric_kind: DELTA\n       value_type: INT64",
+            "id": "Quota",
+            "properties": {
+                "limits": {
+                    "description": "List of `QuotaLimit` definitions for the service.",
+                    "items": {
+                        "$ref": "QuotaLimit"
+                    },
+                    "type": "array"
+                },
+                "metricRules": {
+                    "description": "List of `MetricRule` definitions, each one mapping a selected method to one\nor more metrics.",
+                    "items": {
+                        "$ref": "MetricRule"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Rollout": {
+            "description": "A rollout resource that defines how service configuration versions are pushed\nto control plane systems. Typically, you create a new version of the\nservice config, and then create a Rollout to push the service config.",
+            "id": "Rollout",
+            "properties": {
+                "trafficPercentStrategy": {
+                    "$ref": "TrafficPercentStrategy",
+                    "description": "Google Service Control selects service configurations based on\ntraffic percentage."
+                },
+                "createdBy": {
+                    "description": "The user who created the Rollout. Readonly.",
+                    "type": "string"
+                },
+                "rolloutId": {
+                    "description": "Optional unique identifier of this Rollout. Only lower case letters, digits\n and '-' are allowed.\n\nIf not specified by client, the server will generate one. The generated id\nwill have the form of <date><revision number>, where \"date\" is the create\ndate in ISO 8601 format.  \"revision number\" is a monotonically increasing\npositive number that is reset every day for each service.\nAn example of the generated rollout_id is '2016-02-16r1'",
+                    "type": "string"
+                },
+                "deleteServiceStrategy": {
+                    "$ref": "DeleteServiceStrategy",
+                    "description": "The strategy associated with a rollout to delete a `ManagedService`.\nReadonly."
+                },
+                "createTime": {
+                    "description": "Creation time of the rollout. Readonly.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "status": {
+                    "description": "The status of this rollout. Readonly. In case of a failed rollout,\nthe system will automatically rollback to the current Rollout\nversion. Readonly.",
+                    "enum": [
+                        "ROLLOUT_STATUS_UNSPECIFIED",
+                        "IN_PROGRESS",
+                        "SUCCESS",
+                        "CANCELLED",
+                        "FAILED",
+                        "PENDING",
+                        "FAILED_ROLLED_BACK"
+                    ],
+                    "enumDescriptions": [
+                        "No status specified.",
+                        "The Rollout is in progress.",
+                        "The Rollout has completed successfully.",
+                        "The Rollout has been cancelled. This can happen if you have overlapping\nRollout pushes, and the previous ones will be cancelled.",
+                        "The Rollout has failed and the rollback attempt has failed too.",
+                        "The Rollout has not started yet and is pending for execution.",
+                        "The Rollout has failed and rolled back to the previous successful\nRollout."
+                    ],
+                    "type": "string"
+                },
+                "serviceName": {
+                    "description": "The name of the service associated with this Rollout.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GenerateConfigReportRequest": {
+            "description": "Request message for GenerateConfigReport method.",
+            "id": "GenerateConfigReportRequest",
+            "properties": {
+                "oldConfig": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service configuration against which the comparison will be done.\nFor this version of API, the supported types are\ngoogle.api.servicemanagement.v1.ConfigRef,\ngoogle.api.servicemanagement.v1.ConfigSource,\nand google.api.Service",
+                    "type": "object"
+                },
+                "newConfig": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service configuration for which we want to generate the report.\nFor this version of API, the supported types are\ngoogle.api.servicemanagement.v1.ConfigRef,\ngoogle.api.servicemanagement.v1.ConfigSource,\nand google.api.Service",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "SetIamPolicyRequest": {
+            "description": "Request message for `SetIamPolicy` method.",
+            "id": "SetIamPolicyRequest",
+            "properties": {
+                "updateMask": {
+                    "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                },
+                "policy": {
+                    "$ref": "Policy",
+                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
+                }
+            },
+            "type": "object"
+        },
+        "DeleteServiceStrategy": {
+            "description": "Strategy used to delete a service. This strategy is a placeholder only\nused by the system generated rollout to delete a service.",
+            "id": "DeleteServiceStrategy",
+            "properties": {},
+            "type": "object"
+        },
+        "Step": {
+            "description": "Represents the status of one operation step.",
+            "id": "Step",
+            "properties": {
+                "description": {
+                    "description": "The short description of the step.",
+                    "type": "string"
+                },
+                "status": {
+                    "description": "The status code.",
+                    "enum": [
+                        "STATUS_UNSPECIFIED",
+                        "DONE",
+                        "NOT_STARTED",
+                        "IN_PROGRESS",
+                        "FAILED",
+                        "CANCELLED"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecifed code.",
+                        "The operation or step has completed without errors.",
+                        "The operation or step has not started yet.",
+                        "The operation or step is in progress.",
+                        "The operation or step has completed with errors. If the operation is\nrollbackable, the rollback completed with errors too.",
+                        "The operation or step has completed with cancellation."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LoggingDestination": {
+            "description": "Configuration of a specific logging destination (the producer project\nor the consumer project).",
+            "id": "LoggingDestination",
+            "properties": {
+                "logs": {
+                    "description": "Names of the logs to be sent to this destination. Each name must\nbe defined in the Service.logs section. If the log name is\nnot a domain scoped name, it will be automatically prefixed with\nthe service name followed by \"/\".",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "monitoredResource": {
+                    "description": "The monitored resource type. The type must be defined in the\nService.monitored_resources section.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Option": {
+            "description": "A protocol buffer option, which can be attached to a message, field,\nenumeration, etc.",
+            "id": "Option",
+            "properties": {
+                "name": {
+                    "description": "The option's name. For protobuf built-in options (options defined in\ndescriptor.proto), this is the short name. For example, `\"map_entry\"`.\nFor custom options, it should be the fully-qualified name. For example,\n`\"google.api.http\"`.",
+                    "type": "string"
+                },
+                "value": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The option's value packed in an Any message. If the value is a primitive,\nthe corresponding wrapper type defined in google/protobuf/wrappers.proto\nshould be used. If the value is an enum, it should be stored as an int32\nvalue using the google.protobuf.Int32Value type.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "Logging": {
+            "description": "Logging configuration of the service.\n\nThe following example shows how to configure logs to be sent to the\nproducer and consumer projects. In the example, the `activity_history`\nlog is sent to both the producer and consumer projects, whereas the\n`purchase_history` log is only sent to the producer project.\n\n    monitored_resources:\n    - type: library.googleapis.com/branch\n      labels:\n      - key: /city\n        description: The city where the library branch is located in.\n      - key: /name\n        description: The name of the branch.\n    logs:\n    - name: activity_history\n      labels:\n      - key: /customer_id\n    - name: purchase_history\n    logging:\n      producer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        logs:\n        - activity_history\n        - purchase_history\n      consumer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        logs:\n        - activity_history",
+            "id": "Logging",
+            "properties": {
+                "consumerDestinations": {
+                    "description": "Logging configurations for sending logs to the consumer project.\nThere can be multiple consumer destinations, each one must have a\ndifferent monitored resource type. A log can be used in at most\none consumer destination.",
+                    "items": {
+                        "$ref": "LoggingDestination"
+                    },
+                    "type": "array"
+                },
+                "producerDestinations": {
+                    "description": "Logging configurations for sending logs to the producer project.\nThere can be multiple producer destinations, each one must have a\ndifferent monitored resource type. A log can be used in at most\none producer destination.",
+                    "items": {
+                        "$ref": "LoggingDestination"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Method": {
+            "description": "Method represents a method of an API interface.",
+            "id": "Method",
+            "properties": {
+                "name": {
+                    "description": "The simple name of this method.",
+                    "type": "string"
+                },
+                "requestTypeUrl": {
+                    "description": "A URL of the input message type.",
+                    "type": "string"
+                },
+                "requestStreaming": {
+                    "description": "If true, the request is streamed.",
+                    "type": "boolean"
+                },
+                "syntax": {
+                    "description": "The source syntax of this method.",
+                    "enum": [
+                        "SYNTAX_PROTO2",
+                        "SYNTAX_PROTO3"
+                    ],
+                    "enumDescriptions": [
+                        "Syntax `proto2`.",
+                        "Syntax `proto3`."
+                    ],
+                    "type": "string"
+                },
+                "responseTypeUrl": {
+                    "description": "The URL of the output message type.",
+                    "type": "string"
+                },
+                "options": {
+                    "description": "Any metadata attached to the method.",
+                    "items": {
+                        "$ref": "Option"
+                    },
+                    "type": "array"
+                },
+                "responseStreaming": {
+                    "description": "If true, the response is streamed.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "QuotaLimit": {
+            "description": "`QuotaLimit` defines a specific limit that applies over a specified duration\nfor a limit type. There can be at most one limit for a duration and limit\ntype combination defined within a `QuotaGroup`.",
+            "id": "QuotaLimit",
+            "properties": {
+                "defaultLimit": {
+                    "description": "Default number of tokens that can be consumed during the specified\nduration. This is the number of tokens assigned when a client\napplication developer activates the service for his/her project.\n\nSpecifying a value of 0 will block all requests. This can be used if you\nare provisioning quota to selected consumers and blocking others.\nSimilarly, a value of -1 will indicate an unlimited quota. No other\nnegative values are allowed.\n\nUsed by group-based quotas only.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "User-visible display name for this limit.\nOptional. If not set, the UI will provide a default display name based on\nthe quota configuration. This field can be used to override the default\ndisplay name generated from the configuration.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Optional. User-visible, extended description for this quota limit.\nShould be used only when more context is needed to understand this limit\nthan provided by the limit's display name (see: `display_name`).",
+                    "type": "string"
+                },
+                "metric": {
+                    "description": "The name of the metric this quota limit applies to. The quota limits with\nthe same metric will be checked together during runtime. The metric must be\ndefined within the service config.",
+                    "type": "string"
+                },
+                "values": {
+                    "additionalProperties": {
+                        "format": "int64",
+                        "type": "string"
+                    },
+                    "description": "Tiered limit values. You must specify this as a key:value pair, with an\ninteger value that is the maximum number of requests allowed for the\nspecified unit. Currently only STANDARD is supported.",
+                    "type": "object"
+                },
+                "unit": {
+                    "description": "Specify the unit of the quota limit. It uses the same syntax as\nMetric.unit. The supported unit kinds are determined by the quota\nbackend system.\n\nHere are some examples:\n* \"1/min/{project}\" for quota per minute per project.\n\nNote: the order of unit components is insignificant.\nThe \"1\" at the beginning is required to follow the metric unit syntax.",
+                    "type": "string"
+                },
+                "maxLimit": {
+                    "description": "Maximum number of tokens that can be consumed during the specified\nduration. Client application developers can override the default limit up\nto this maximum. If specified, this value cannot be set to a value less\nthan the default limit. If not specified, it is set to the default limit.\n\nTo allow clients to apply overrides with no upper bound, set this to -1,\nindicating unlimited maximum quota.\n\nUsed by group-based quotas only.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Name of the quota limit.\n\nThe name must be provided, and it must be unique within the service. The\nname can only include alphanumeric characters as well as '-'.\n\nThe maximum length of the limit name is 64 characters.",
+                    "type": "string"
+                },
+                "duration": {
+                    "description": "Duration of this limit in textual notation. Example: \"100s\", \"24h\", \"1d\".\nFor duration longer than a day, only multiple of days is supported. We\nsupport only \"100s\" and \"1d\" for now. Additional support will be added in\nthe future. \"0\" indicates indefinite duration.\n\nUsed by group-based quotas only.",
+                    "type": "string"
+                },
+                "freeTier": {
+                    "description": "Free tier value displayed in the Developers Console for this limit.\nThe free tier is the number of tokens that will be subtracted from the\nbilled amount when billing is enabled.\nThis field can only be set on a limit with duration \"1d\", in a billable\ngroup; it is invalid on any other limit. If this field is not set, it\ndefaults to 0, indicating that there is no free tier for this service.\n\nUsed by group-based quotas only.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ConfigRef": {
+            "description": "Represents a service configuration with its name and id.",
+            "id": "ConfigRef",
+            "properties": {
+                "name": {
+                    "description": "Resource name of a service config. It must have the following\nformat: \"services/{service name}/configs/{config id}\".",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListServiceRolloutsResponse": {
+            "description": "Response message for ListServiceRollouts method.",
+            "id": "ListServiceRolloutsResponse",
+            "properties": {
+                "rollouts": {
+                    "description": "The list of rollout resources.",
+                    "items": {
+                        "$ref": "Rollout"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The token of the next page of results.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Mixin": {
+            "description": "Declares an API Interface to be included in this interface. The including\ninterface must redeclare all the methods from the included interface, but\ndocumentation and options are inherited as follows:\n\n- If after comment and whitespace stripping, the documentation\n  string of the redeclared method is empty, it will be inherited\n  from the original method.\n\n- Each annotation belonging to the service config (http,\n  visibility) which is not set in the redeclared method will be\n  inherited.\n\n- If an http annotation is inherited, the path pattern will be\n  modified as follows. Any version prefix will be replaced by the\n  version of the including interface plus the root path if\n  specified.\n\nExample of a simple mixin:\n\n    package google.acl.v1;\n    service AccessControl {\n      // Get the underlying ACL object.\n      rpc GetAcl(GetAclRequest) returns (Acl) {\n        option (google.api.http).get = \"/v1/{resource=**}:getAcl\";\n      }\n    }\n\n    package google.storage.v2;\n    service Storage {\n      //       rpc GetAcl(GetAclRequest) returns (Acl);\n\n      // Get a data record.\n      rpc GetData(GetDataRequest) returns (Data) {\n        option (google.api.http).get = \"/v2/{resource=**}\";\n      }\n    }\n\nExample of a mixin configuration:\n\n    apis:\n    - name: google.storage.v2.Storage\n      mixins:\n      - name: google.acl.v1.AccessControl\n\nThe mixin construct implies that all methods in `AccessControl` are\nalso declared with same name and request/response types in\n`Storage`. A documentation generator or annotation processor will\nsee the effective `Storage.GetAcl` method after inherting\ndocumentation and annotations as follows:\n\n    service Storage {\n      // Get the underlying ACL object.\n      rpc GetAcl(GetAclRequest) returns (Acl) {\n        option (google.api.http).get = \"/v2/{resource=**}:getAcl\";\n      }\n      ...\n    }\n\nNote how the version in the path pattern changed from `v1` to `v2`.\n\nIf the `root` field in the mixin is specified, it should be a\nrelative path under which inherited HTTP paths are placed. Example:\n\n    apis:\n    - name: google.storage.v2.Storage\n      mixins:\n      - name: google.acl.v1.AccessControl\n        root: acls\n\nThis implies the following inherited HTTP annotation:\n\n    service Storage {\n      // Get the underlying ACL object.\n      rpc GetAcl(GetAclRequest) returns (Acl) {\n        option (google.api.http).get = \"/v2/acls/{resource=**}:getAcl\";\n      }\n      ...\n    }",
+            "id": "Mixin",
+            "properties": {
+                "name": {
+                    "description": "The fully qualified name of the interface which is included.",
+                    "type": "string"
+                },
+                "root": {
+                    "description": "If non-empty specifies a path under which inherited HTTP paths\nare rooted.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "FlowOperationMetadata": {
+            "description": "The metadata associated with a long running operation resource.",
+            "id": "FlowOperationMetadata",
+            "properties": {
+                "startTime": {
+                    "description": "The start time of the operation.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "surface": {
+                    "enum": [
+                        "UNSPECIFIED_OP_SERVICE",
+                        "SERVICE_MANAGEMENT",
+                        "SERVICE_USAGE",
+                        "SERVICE_CONSUMER_MANAGEMENT"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        "TenancyUnit, ServiceNetworking fall under this"
+                    ],
+                    "type": "string"
+                },
+                "flowName": {
+                    "description": "The name of the top-level flow corresponding to this operation.\nMust be equal to the \"name\" field for a FlowName enum.",
+                    "type": "string"
+                },
+                "resourceNames": {
+                    "description": "The full name of the resources that this flow is directly associated with.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "deadline": {
+                    "description": "Deadline for the flow to complete, to prevent orphaned Operations.\n\nIf the flow has not completed by this time, it may be terminated by\nthe engine, or force-failed by Operation lookup.\n\nNote that this is not a hard deadline after which the Flow will\ndefinitely be failed, rather it is a deadline after which it is reasonable\nto suspect a problem and other parts of the system may kill operation\nto ensure we don't have orphans.\nsee also: go/prevent-orphaned-operations",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "cancelState": {
+                    "description": "The state of the operation with respect to cancellation.",
+                    "enum": [
+                        "RUNNING",
+                        "UNCANCELLABLE",
+                        "CANCELLED"
+                    ],
+                    "enumDescriptions": [
+                        "Default state, cancellable but not cancelled.",
+                        "The operation has proceeded past the point of no return and cannot\nbe cancelled.",
+                        "The operation has been cancelled, work should cease\nand any needed rollback steps executed."
+                    ],
+                    "type": "string"
+                },
+                "operationType": {
+                    "description": "Operation type which is a flow type and subtype info as that is missing in\nour datastore otherwise. This maps to the ordinal value of the enum:\njcg/api/tenant/operations/OperationNamespace.java",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "CustomError": {
+            "description": "Customize service error responses.  For example, list any service\nspecific protobuf types that can appear in error detail lists of\nerror responses.\n\nExample:\n\n    custom_error:\n      types:\n      - google.foo.v1.CustomError\n      - google.foo.v1.AnotherError",
+            "id": "CustomError",
+            "properties": {
+                "rules": {
+                    "description": "The list of custom error rules that apply to individual API messages.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
+                    "items": {
+                        "$ref": "CustomErrorRule"
+                    },
+                    "type": "array"
+                },
+                "types": {
+                    "description": "The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Http": {
+            "description": "Defines the HTTP configuration for an API service. It contains a list of\nHttpRule, each specifying the mapping of an RPC method\nto one or more HTTP REST API methods.",
+            "id": "Http",
+            "properties": {
+                "rules": {
+                    "description": "A list of HTTP configuration rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
+                    "items": {
+                        "$ref": "HttpRule"
+                    },
+                    "type": "array"
+                },
+                "fullyDecodeReservedExpansion": {
+                    "description": "When set to true, URL path parmeters will be fully URI-decoded except in\ncases of single segment matches in reserved expansion, where \"%2F\" will be\nleft encoded.\n\nThe default behavior is to not decode RFC 6570 reserved characters in multi\nsegment matches.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "SourceInfo": {
+            "description": "Source information used to create a Service Config",
+            "id": "SourceInfo",
+            "properties": {
+                "sourceFiles": {
+                    "description": "All files used during config generation.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Control": {
+            "description": "Selects and configures the service controller used by the service.  The\nservice controller handles features like abuse, quota, billing, logging,\nmonitoring, etc.",
+            "id": "Control",
+            "properties": {
+                "environment": {
+                    "description": "The service control environment to use. If empty, no control plane\nfeature (like quota and billing) will be enabled.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SystemParameter": {
+            "description": "Define a parameter's name and location. The parameter may be passed as either\nan HTTP header or a URL query parameter, and if both are passed the behavior\nis implementation-dependent.",
+            "id": "SystemParameter",
+            "properties": {
+                "name": {
+                    "description": "Define the name of the parameter, such as \"api_key\" . It is case sensitive.",
+                    "type": "string"
+                },
+                "urlQueryParameter": {
+                    "description": "Define the URL query parameter name to use for the parameter. It is case\nsensitive.",
+                    "type": "string"
+                },
+                "httpHeader": {
+                    "description": "Define the HTTP header name to use for the parameter. It is case\ninsensitive.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Monitoring": {
+            "description": "Monitoring configuration of the service.\n\nThe example below shows how to configure monitored resources and metrics\nfor monitoring. In the example, a monitored resource and two metrics are\ndefined. The `library.googleapis.com/book/returned_count` metric is sent\nto both producer and consumer projects, whereas the\n`library.googleapis.com/book/overdue_count` metric is only sent to the\nconsumer project.\n\n    monitored_resources:\n    - type: library.googleapis.com/branch\n      labels:\n      - key: /city\n        description: The city where the library branch is located in.\n      - key: /name\n        description: The name of the branch.\n    metrics:\n    - name: library.googleapis.com/book/returned_count\n      metric_kind: DELTA\n      value_type: INT64\n      labels:\n      - key: /customer_id\n    - name: library.googleapis.com/book/overdue_count\n      metric_kind: GAUGE\n      value_type: INT64\n      labels:\n      - key: /customer_id\n    monitoring:\n      producer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        metrics:\n        - library.googleapis.com/book/returned_count\n      consumer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        metrics:\n        - library.googleapis.com/book/returned_count\n        - library.googleapis.com/book/overdue_count",
+            "id": "Monitoring",
+            "properties": {
+                "consumerDestinations": {
+                    "description": "Monitoring configurations for sending metrics to the consumer project.\nThere can be multiple consumer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none consumer destination.",
+                    "items": {
+                        "$ref": "MonitoringDestination"
+                    },
+                    "type": "array"
+                },
+                "producerDestinations": {
+                    "description": "Monitoring configurations for sending metrics to the producer project.\nThere can be multiple producer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none producer destination.",
+                    "items": {
+                        "$ref": "MonitoringDestination"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Field": {
+            "description": "A single field of a message type.",
+            "id": "Field",
+            "properties": {
+                "name": {
+                    "description": "The field name.",
+                    "type": "string"
+                },
+                "typeUrl": {
+                    "description": "The field type URL, without the scheme, for message or enumeration\ntypes. Example: `\"type.googleapis.com/google.protobuf.Timestamp\"`.",
+                    "type": "string"
+                },
+                "number": {
+                    "description": "The field number.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "kind": {
+                    "description": "The field type.",
+                    "enum": [
+                        "TYPE_UNKNOWN",
+                        "TYPE_DOUBLE",
+                        "TYPE_FLOAT",
+                        "TYPE_INT64",
+                        "TYPE_UINT64",
+                        "TYPE_INT32",
+                        "TYPE_FIXED64",
+                        "TYPE_FIXED32",
+                        "TYPE_BOOL",
+                        "TYPE_STRING",
+                        "TYPE_GROUP",
+                        "TYPE_MESSAGE",
+                        "TYPE_BYTES",
+                        "TYPE_UINT32",
+                        "TYPE_ENUM",
+                        "TYPE_SFIXED32",
+                        "TYPE_SFIXED64",
+                        "TYPE_SINT32",
+                        "TYPE_SINT64"
+                    ],
+                    "enumDescriptions": [
+                        "Field type unknown.",
+                        "Field type double.",
+                        "Field type float.",
+                        "Field type int64.",
+                        "Field type uint64.",
+                        "Field type int32.",
+                        "Field type fixed64.",
+                        "Field type fixed32.",
+                        "Field type bool.",
+                        "Field type string.",
+                        "Field type group. Proto2 syntax only, and deprecated.",
+                        "Field type message.",
+                        "Field type bytes.",
+                        "Field type uint32.",
+                        "Field type enum.",
+                        "Field type sfixed32.",
+                        "Field type sfixed64.",
+                        "Field type sint32.",
+                        "Field type sint64."
+                    ],
+                    "type": "string"
+                },
+                "jsonName": {
+                    "description": "The field JSON name.",
+                    "type": "string"
+                },
+                "options": {
+                    "description": "The protocol buffer options.",
+                    "items": {
+                        "$ref": "Option"
+                    },
+                    "type": "array"
+                },
+                "oneofIndex": {
+                    "description": "The index of the field type in `Type.oneofs`, for message or enumeration\ntypes. The first type has index 1; zero means the type is not in the list.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "packed": {
+                    "description": "Whether to use alternative packed wire representation.",
+                    "type": "boolean"
+                },
+                "cardinality": {
+                    "description": "The field cardinality.",
+                    "enum": [
+                        "CARDINALITY_UNKNOWN",
+                        "CARDINALITY_OPTIONAL",
+                        "CARDINALITY_REQUIRED",
+                        "CARDINALITY_REPEATED"
+                    ],
+                    "enumDescriptions": [
+                        "For fields with unknown cardinality.",
+                        "For optional fields.",
+                        "For required fields. Proto2 syntax only.",
+                        "For repeated fields."
+                    ],
+                    "type": "string"
+                },
+                "defaultValue": {
+                    "description": "The string value of the default value of this field. Proto2 syntax only.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TestIamPermissionsRequest": {
+            "description": "Request message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsRequest",
+            "properties": {
+                "permissions": {
+                    "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Enum": {
+            "description": "Enum type definition.",
+            "id": "Enum",
+            "properties": {
+                "syntax": {
+                    "description": "The source syntax.",
+                    "enum": [
+                        "SYNTAX_PROTO2",
+                        "SYNTAX_PROTO3"
+                    ],
+                    "enumDescriptions": [
+                        "Syntax `proto2`.",
+                        "Syntax `proto3`."
+                    ],
+                    "type": "string"
+                },
+                "sourceContext": {
+                    "$ref": "SourceContext",
+                    "description": "The source context."
+                },
+                "enumvalue": {
+                    "description": "Enum value definitions.",
+                    "items": {
+                        "$ref": "EnumValue"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "Enum type name.",
+                    "type": "string"
+                },
+                "options": {
+                    "description": "Protocol buffer options.",
+                    "items": {
+                        "$ref": "Option"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "EnableServiceRequest": {
+            "description": "Request message for EnableService method.",
+            "id": "EnableServiceRequest",
+            "properties": {
+                "consumerId": {
+                    "description": "The identity of consumer resource which service enablement will be\napplied to.\n\nThe Google Service Management implementation accepts the following\nforms:\n- \"project:<project_id>\"\n\nNote: this is made compatible with\ngoogle.api.servicecontrol.v1.Operation.consumer_id.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Diagnostic": {
+            "description": "Represents a diagnostic message (error or warning)",
+            "id": "Diagnostic",
+            "properties": {
+                "message": {
+                    "description": "Message describing the error or warning.",
+                    "type": "string"
+                },
+                "location": {
+                    "description": "File name and line number of the error or warning.",
+                    "type": "string"
+                },
+                "kind": {
+                    "description": "The kind of diagnostic information provided.",
+                    "enum": [
+                        "WARNING",
+                        "ERROR"
+                    ],
+                    "enumDescriptions": [
+                        "Warnings and errors",
+                        "Only errors"
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LabelDescriptor": {
+            "description": "A description of a label.",
+            "id": "LabelDescriptor",
+            "properties": {
+                "description": {
+                    "description": "A human-readable description for the label.",
+                    "type": "string"
+                },
+                "valueType": {
+                    "description": "The type of data that can be assigned to the label.",
+                    "enum": [
+                        "STRING",
+                        "BOOL",
+                        "INT64"
+                    ],
+                    "enumDescriptions": [
+                        "A variable-length string. This is the default.",
+                        "Boolean; true or false.",
+                        "A 64-bit signed integer."
+                    ],
+                    "type": "string"
+                },
+                "key": {
+                    "description": "The label key.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GenerateConfigReportResponse": {
+            "description": "Response message for GenerateConfigReport method.",
+            "id": "GenerateConfigReportResponse",
+            "properties": {
+                "id": {
+                    "description": "ID of the service configuration this report belongs to.",
+                    "type": "string"
+                },
+                "diagnostics": {
+                    "description": "Errors / Linter warnings associated with the service definition this\nreport\nbelongs to.",
+                    "items": {
+                        "$ref": "Diagnostic"
+                    },
+                    "type": "array"
+                },
+                "serviceName": {
+                    "description": "Name of the service this report belongs to.",
+                    "type": "string"
+                },
+                "changeReports": {
+                    "description": "list of ChangeReport, each corresponding to comparison between two\nservice configurations.",
+                    "items": {
+                        "$ref": "ChangeReport"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Type": {
+            "description": "A protocol buffer message type.",
+            "id": "Type",
+            "properties": {
+                "options": {
+                    "description": "The protocol buffer options.",
+                    "items": {
+                        "$ref": "Option"
+                    },
+                    "type": "array"
+                },
+                "fields": {
+                    "description": "The list of fields.",
+                    "items": {
+                        "$ref": "Field"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The fully qualified message name.",
+                    "type": "string"
+                },
+                "oneofs": {
+                    "description": "The list of types appearing in `oneof` definitions in this type.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "syntax": {
+                    "description": "The source syntax.",
+                    "enum": [
+                        "SYNTAX_PROTO2",
+                        "SYNTAX_PROTO3"
+                    ],
+                    "enumDescriptions": [
+                        "Syntax `proto2`.",
+                        "Syntax `proto3`."
+                    ],
+                    "type": "string"
+                },
+                "sourceContext": {
+                    "$ref": "SourceContext",
+                    "description": "The source context."
+                }
+            },
+            "type": "object"
+        },
+        "Experimental": {
+            "description": "Experimental service configuration. These configuration options can\nonly be used by whitelisted users.",
+            "id": "Experimental",
+            "properties": {
+                "authorization": {
+                    "$ref": "AuthorizationConfig",
+                    "description": "Authorization configuration."
+                }
+            },
+            "type": "object"
+        },
+        "ListServiceConfigsResponse": {
+            "description": "Response message for ListServiceConfigs method.",
+            "id": "ListServiceConfigsResponse",
+            "properties": {
+                "serviceConfigs": {
+                    "description": "The list of service configuration resources.",
+                    "items": {
+                        "$ref": "Service"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The token of the next page of results.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AuditConfig": {
+            "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
+            "id": "AuditConfig",
+            "properties": {
+                "auditLogConfigs": {
+                    "description": "The configuration for logging of each type of permission.\nNext ID: 4",
+                    "items": {
+                        "$ref": "AuditLogConfig"
+                    },
+                    "type": "array"
+                },
+                "exemptedMembers": {
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "service": {
+                    "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Backend": {
+            "description": "`Backend` defines the backend configuration for a service.",
+            "id": "Backend",
+            "properties": {
+                "rules": {
+                    "description": "A list of API backend rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
+                    "items": {
+                        "$ref": "BackendRule"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SubmitConfigSourceRequest": {
+            "description": "Request message for SubmitConfigSource method.",
+            "id": "SubmitConfigSourceRequest",
+            "properties": {
+                "configSource": {
+                    "$ref": "ConfigSource",
+                    "description": "The source configuration for the service."
+                },
+                "validateOnly": {
+                    "description": "Optional. If set, this will result in the generation of a\n`google.api.Service` configuration based on the `ConfigSource` provided,\nbut the generated config and the sources will NOT be persisted.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "AuthorizationConfig": {
+            "description": "Configuration of authorization.\n\nThis section determines the authorization provider, if unspecified, then no\nauthorization check will be done.\n\nExample:\n\n    experimental:\n      authorization:\n        provider: firebaserules.googleapis.com",
+            "id": "AuthorizationConfig",
+            "properties": {
+                "provider": {
+                    "description": "The name of the authorization provider, such as\nfirebaserules.googleapis.com.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DocumentationRule": {
+            "description": "A documentation rule provides information about individual API elements.",
+            "id": "DocumentationRule",
+            "properties": {
+                "deprecationDescription": {
+                    "description": "Deprecation description of the selected element(s). It can be provided if an\nelement is marked as `deprecated`.",
+                    "type": "string"
+                },
+                "selector": {
+                    "description": "The selector is a comma-separated list of patterns. Each pattern is a\nqualified name of the element which may end in \"*\", indicating a wildcard.\nWildcards are only allowed at the end and for a whole component of the\nqualified name, i.e. \"foo.*\" is ok, but not \"foo.b*\" or \"foo.*.bar\". To\nspecify a default for all applicable elements, the whole pattern \"*\"\nis used.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Description of the selected API(s).",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ContextRule": {
+            "description": "A context rule provides information about the context for an individual API\nelement.",
+            "id": "ContextRule",
+            "properties": {
+                "selector": {
+                    "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.",
+                    "type": "string"
+                },
+                "provided": {
+                    "description": "A list of full type names of provided contexts.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "requested": {
+                    "description": "A list of full type names of requested contexts.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Billing": {
+            "description": "Billing related configuration of the service.\n\nThe following example shows how to configure monitored resources and metrics\nfor billing:\n\n    monitored_resources:\n    - type: library.googleapis.com/branch\n      labels:\n      - key: /city\n        description: The city where the library branch is located in.\n      - key: /name\n        description: The name of the branch.\n    metrics:\n    - name: library.googleapis.com/book/borrowed_count\n      metric_kind: DELTA\n      value_type: INT64\n    billing:\n      consumer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        metrics:\n        - library.googleapis.com/book/borrowed_count",
+            "id": "Billing",
+            "properties": {
+                "consumerDestinations": {
+                    "description": "Billing configurations for sending metrics to the consumer project.\nThere can be multiple consumer destinations per service, each one must have\na different monitored resource type. A metric can be used in at most\none consumer destination.",
+                    "items": {
+                        "$ref": "BillingDestination"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "MetricDescriptor": {
+            "description": "Defines a metric type and its schema. Once a metric descriptor is created,\ndeleting or altering it stops data collection and makes the metric type's\nexisting data unusable.",
+            "id": "MetricDescriptor",
+            "properties": {
+                "metricKind": {
+                    "description": "Whether the metric records instantaneous values, changes to a value, etc.\nSome combinations of `metric_kind` and `value_type` might not be supported.",
+                    "enum": [
+                        "METRIC_KIND_UNSPECIFIED",
+                        "GAUGE",
+                        "DELTA",
+                        "CUMULATIVE"
+                    ],
+                    "enumDescriptions": [
+                        "Do not use this default value.",
+                        "An instantaneous measurement of a value.",
+                        "The change in a value during a time interval.",
+                        "A value accumulated over a time interval.  Cumulative\nmeasurements in a time series should have the same start time\nand increasing end times, until an event resets the cumulative\nvalue to zero and sets a new start time for the following\npoints."
+                    ],
+                    "type": "string"
+                },
+                "description": {
+                    "description": "A detailed description of the metric, which can be used in documentation.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "A concise name for the metric, which can be displayed in user interfaces.\nUse sentence case without an ending period, for example \"Request count\".\nThis field is optional but it is recommended to be set for any metrics\nassociated with user-visible concepts, such as Quota.",
+                    "type": "string"
+                },
+                "unit": {
+                    "description": "The unit in which the metric value is reported. It is only applicable\nif the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The\nsupported units are a subset of [The Unified Code for Units of\nMeasure](http://unitsofmeasure.org/ucum.html) standard:\n\n**Basic units (UNIT)**\n\n* `bit`   bit\n* `By`    byte\n* `s`     second\n* `min`   minute\n* `h`     hour\n* `d`     day\n\n**Prefixes (PREFIX)**\n\n* `k`     kilo    (10**3)\n* `M`     mega    (10**6)\n* `G`     giga    (10**9)\n* `T`     tera    (10**12)\n* `P`     peta    (10**15)\n* `E`     exa     (10**18)\n* `Z`     zetta   (10**21)\n* `Y`     yotta   (10**24)\n* `m`     milli   (10**-3)\n* `u`     micro   (10**-6)\n* `n`     nano    (10**-9)\n* `p`     pico    (10**-12)\n* `f`     femto   (10**-15)\n* `a`     atto    (10**-18)\n* `z`     zepto   (10**-21)\n* `y`     yocto   (10**-24)\n* `Ki`    kibi    (2**10)\n* `Mi`    mebi    (2**20)\n* `Gi`    gibi    (2**30)\n* `Ti`    tebi    (2**40)\n\n**Grammar**\n\nThe grammar includes the dimensionless unit `1`, such as `1/s`.\n\nThe grammar also includes these connectors:\n\n* `/`    division (as an infix operator, e.g. `1/s`).\n* `.`    multiplication (as an infix operator, e.g. `GBy.d`)\n\nThe grammar for a unit is as follows:\n\n    Expression = Component { \".\" Component } { \"/\" Component } ;\n\n    Component = [ PREFIX ] UNIT [ Annotation ]\n              | Annotation\n              | \"1\"\n              ;\n\n    Annotation = \"{\" NAME \"}\" ;\n\nNotes:\n\n* `Annotation` is just a comment if it follows a `UNIT` and is\n   equivalent to `1` if it is used alone. For examples,\n   `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.\n* `NAME` is a sequence of non-blank printable ASCII characters not\n   containing '{' or '}'.",
+                    "type": "string"
+                },
+                "labels": {
+                    "description": "The set of labels that can be used to describe a specific\ninstance of this metric type. For example, the\n`appengine.googleapis.com/http/server/response_latencies` metric\ntype has a label for the HTTP response code, `response_code`, so\nyou can look at latencies for successful responses or just\nfor responses that failed.",
+                    "items": {
+                        "$ref": "LabelDescriptor"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The resource name of the metric descriptor.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The metric type, including its DNS name prefix. The type is not\nURL-encoded.  All user-defined custom metric types have the DNS name\n`custom.googleapis.com`.  Metric types should use a natural hierarchical\ngrouping. For example:\n\n    \"custom.googleapis.com/invoice/paid/amount\"\n    \"appengine.googleapis.com/http/server/response_latencies\"",
+                    "type": "string"
+                },
+                "valueType": {
+                    "description": "Whether the measurement is an integer, a floating-point number, etc.\nSome combinations of `metric_kind` and `value_type` might not be supported.",
+                    "enum": [
+                        "VALUE_TYPE_UNSPECIFIED",
+                        "BOOL",
+                        "INT64",
+                        "DOUBLE",
+                        "STRING",
+                        "DISTRIBUTION",
+                        "MONEY"
+                    ],
+                    "enumDescriptions": [
+                        "Do not use this default value.",
+                        "The value is a boolean.\nThis value type can be used only if the metric kind is `GAUGE`.",
+                        "The value is a signed 64-bit integer.",
+                        "The value is a double precision floating point number.",
+                        "The value is a text string.\nThis value type can be used only if the metric kind is `GAUGE`.",
+                        "The value is a `Distribution`.",
+                        "The value is money."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SourceContext": {
+            "description": "`SourceContext` represents information about the source of a\nprotobuf element, like the file in which it is defined.",
+            "id": "SourceContext",
+            "properties": {
+                "fileName": {
+                    "description": "The path-qualified name of the .proto file that contained the associated\nprotobuf element.  For example: `\"google/protobuf/source_context.proto\"`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Expr": {
+            "description": "Represents an expression text. Example:\n\n    title: \"User account presence\"\n    description: \"Determines whether the request has a user account\"\n    expression: \"size(request.user) > 0\"",
+            "id": "Expr",
+            "properties": {
+                "description": {
+                    "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.",
+                    "type": "string"
+                },
+                "expression": {
+                    "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.",
+                    "type": "string"
+                },
+                "location": {
+                    "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.",
+                    "type": "string"
+                },
+                "title": {
+                    "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListServicesResponse": {
+            "description": "Response message for `ListServices` method.",
+            "id": "ListServicesResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Token that can be passed to `ListServices` to resume a paginated query.",
+                    "type": "string"
+                },
+                "services": {
+                    "description": "The returned services will only have the name field set.",
+                    "items": {
+                        "$ref": "ManagedService"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Endpoint": {
+            "description": "`Endpoint` describes a network endpoint that serves a set of APIs.\nA service may expose any number of endpoints, and all endpoints share the\nsame service configuration, such as quota configuration and monitoring\nconfiguration.\n\nExample service configuration:\n\n    name: library-example.googleapis.com\n    endpoints:\n      # Below entry makes 'google.example.library.v1.Library'\n      # API be served from endpoint address library-example.googleapis.com.\n      # It also allows HTTP OPTIONS calls to be passed to the backend, for\n      # it to decide whether the subsequent cross-origin request is\n      # allowed to proceed.\n    - name: library-example.googleapis.com\n      allow_cors: true",
+            "id": "Endpoint",
+            "properties": {
+                "target": {
+                    "description": "The specification of an Internet routable address of API frontend that will\nhandle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary).\nIt should be either a valid IPv4 address or a fully-qualified domain name.\nFor example, \"8.8.8.8\" or \"myservice.appspot.com\".",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The canonical name of this endpoint.",
+                    "type": "string"
+                },
+                "features": {
+                    "description": "The list of features enabled on this endpoint.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "apis": {
+                    "description": "The list of APIs served by this endpoint.\n\nIf no APIs are specified this translates to \"all APIs\" exported by the\nservice, as defined in the top-level service configuration.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "allowCors": {
+                    "description": "Allowing\n[CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka\ncross-domain traffic, would allow the backends served from this endpoint to\nreceive and respond to HTTP OPTIONS requests. The response will be used by\nthe browser to determine whether the subsequent cross-origin request is\nallowed to proceed.",
+                    "type": "boolean"
+                },
+                "aliases": {
+                    "description": "DEPRECATED: This field is no longer supported. Instead of using aliases,\nplease specify multiple google.api.Endpoint for each of the intended\naliases.\n\nAdditional names that this endpoint will be hosted on.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "OAuthRequirements": {
+            "description": "OAuth scopes are a way to define data and permissions on data. For example,\nthere are scopes defined for \"Read-only access to Google Calendar\" and\n\"Access to Cloud Platform\". Users can consent to a scope for an application,\ngiving it permission to access that data on their behalf.\n\nOAuth scope specifications should be fairly coarse grained; a user will need\nto see and understand the text description of what your scope means.\n\nIn most cases: use one or at most two OAuth scopes for an entire family of\nproducts. If your product has multiple APIs, you should probably be sharing\nthe OAuth scope across all of those APIs.\n\nWhen you need finer grained OAuth consent screens: talk with your product\nmanagement about how developers will use them in practice.\n\nPlease note that even though each of the canonical scopes is enough for a\nrequest to be accepted and passed to the backend, a request can still fail\ndue to the backend requiring additional scopes or permissions.",
+            "id": "OAuthRequirements",
+            "properties": {
+                "canonicalScopes": {
+                    "description": "The list of publicly documented OAuth scopes that are allowed access. An\nOAuth token containing any of these scopes will be accepted.\n\nExample:\n\n     canonical_scopes: https://www.googleapis.com/auth/calendar,\n                       https://www.googleapis.com/auth/calendar.read",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TestIamPermissionsResponse": {
+            "description": "Response message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsResponse",
+            "properties": {
+                "permissions": {
+                    "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GetIamPolicyRequest": {
+            "description": "Request message for `GetIamPolicy` method.",
+            "id": "GetIamPolicyRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "Usage": {
+            "description": "Configuration controlling usage of a service.",
+            "id": "Usage",
+            "properties": {
+                "producerNotificationChannel": {
+                    "description": "The full resource name of a channel used for sending notifications to the\nservice producer.\n\nGoogle Service Management currently only supports\n[Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification\nchannel. To use Google Cloud Pub/Sub as the channel, this must be the name\nof a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format\ndocumented in https://cloud.google.com/pubsub/docs/overview.",
+                    "type": "string"
+                },
+                "rules": {
+                    "description": "A list of usage rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
+                    "items": {
+                        "$ref": "UsageRule"
+                    },
+                    "type": "array"
+                },
+                "requirements": {
+                    "description": "Requirements that must be satisfied before a consumer project can use the\nservice. Each requirement is of the form <service.name>/<requirement-id>;\nfor example 'serviceusage.googleapis.com/billing-enabled'.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Context": {
+            "description": "`Context` defines which contexts an API requests.\n\nExample:\n\n    context:\n      rules:\n      - selector: \"*\"\n        requested:\n        - google.rpc.context.ProjectContext\n        - google.rpc.context.OriginContext\n\nThe above specifies that all methods in the API request\n`google.rpc.context.ProjectContext` and\n`google.rpc.context.OriginContext`.\n\nAvailable context types are defined in package\n`google.rpc.context`.",
+            "id": "Context",
+            "properties": {
+                "rules": {
+                    "description": "A list of RPC context rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
+                    "items": {
+                        "$ref": "ContextRule"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "LogDescriptor": {
+            "description": "A description of a log type. Example in YAML format:\n\n    - name: library.googleapis.com/activity_history\n      description: The history of borrowing and returning library items.\n      display_name: Activity\n      labels:\n      - key: /customer_id\n        description: Identifier of a library customer",
+            "id": "LogDescriptor",
+            "properties": {
+                "labels": {
+                    "description": "The set of labels that are available to describe a specific log entry.\nRuntime requests that contain labels not specified here are\nconsidered invalid.",
+                    "items": {
+                        "$ref": "LabelDescriptor"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The name of the log. It must be less than 512 characters long and can\ninclude the following characters: upper- and lower-case alphanumeric\ncharacters [A-Za-z0-9], and punctuation characters including\nslash, underscore, hyphen, period [/_-.].",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "The human-readable name for this log. This information appears on\nthe user interface and should be concise.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "A human-readable description of this log. This information appears in\nthe documentation and can contain details.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ConfigFile": {
+            "description": "Generic specification of a source configuration file",
+            "id": "ConfigFile",
+            "properties": {
+                "filePath": {
+                    "description": "The file name of the configuration file (full or relative path).",
+                    "type": "string"
+                },
+                "fileType": {
+                    "description": "The type of configuration file this represents.",
+                    "enum": [
+                        "FILE_TYPE_UNSPECIFIED",
+                        "SERVICE_CONFIG_YAML",
+                        "OPEN_API_JSON",
+                        "OPEN_API_YAML",
+                        "FILE_DESCRIPTOR_SET_PROTO",
+                        "PROTO_FILE"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown file type.",
+                        "YAML-specification of service.",
+                        "OpenAPI specification, serialized in JSON.",
+                        "OpenAPI specification, serialized in YAML.",
+                        "FileDescriptorSet, generated by protoc.\n\nTo generate, use protoc with imports and source info included.\nFor an example test.proto file, the following command would put the value\nin a new file named out.pb.\n\n$protoc --include_imports --include_source_info test.proto -o out.pb",
+                        "Uncompiled Proto file. Used for storage and display purposes only,\ncurrently server-side compilation is not supported. Should match the\ninputs to 'protoc' command used to generated FILE_DESCRIPTOR_SET_PROTO. A\nfile of this type can only be included if at least one file of type\nFILE_DESCRIPTOR_SET_PROTO is included."
+                    ],
+                    "type": "string"
+                },
+                "fileContents": {
+                    "description": "The bytes that constitute the file.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CustomErrorRule": {
+            "description": "A custom error rule.",
+            "id": "CustomErrorRule",
+            "properties": {
+                "selector": {
+                    "description": "Selects messages to which this rule applies.\n\nRefer to selector for syntax details.",
+                    "type": "string"
+                },
+                "isErrorType": {
+                    "description": "Mark this message as possible payload in error response.  Otherwise,\nobjects of this type will be filtered when they appear in error payload.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "MonitoredResourceDescriptor": {
+            "description": "An object that describes the schema of a MonitoredResource object using a\ntype name and a set of labels.  For example, the monitored resource\ndescriptor for Google Compute Engine VM instances has a type of\n`\"gce_instance\"` and specifies the use of the labels `\"instance_id\"` and\n`\"zone\"` to identify particular VM instances.\n\nDifferent APIs can support different monitored resource types. APIs generally\nprovide a `list` method that returns the monitored resource descriptors used\nby the API.",
+            "id": "MonitoredResourceDescriptor",
+            "properties": {
+                "labels": {
+                    "description": "Required. A set of labels used to describe instances of this monitored\nresource type. For example, an individual Google Cloud SQL database is\nidentified by values for the labels `\"database_id\"` and `\"zone\"`.",
+                    "items": {
+                        "$ref": "LabelDescriptor"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "Optional. The resource name of the monitored resource descriptor:\n`\"projects/{project_id}/monitoredResourceDescriptors/{type}\"` where\n{type} is the value of the `type` field in this object and\n{project_id} is a project ID that provides API-specific context for\naccessing the type.  APIs that do not use project information can use the\nresource name format `\"monitoredResourceDescriptors/{type}\"`.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Optional. A detailed description of the monitored resource type that might\nbe used in documentation.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "Optional. A concise name for the monitored resource type that might be\ndisplayed in user interfaces. It should be a Title Cased Noun Phrase,\nwithout any article or other determiners. For example,\n`\"Google Cloud SQL Database\"`.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Required. The monitored resource type. For example, the type\n`\"cloudsql_database\"` represents databases in Google Cloud SQL.\nThe maximum length of this value is 256 characters.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MediaDownload": {
+            "description": "Defines the Media configuration for a service in case of a download.\nUse this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead [][google.bytestream.RestByteStream] as an API to\nyour configuration for Bytestream methods.",
+            "id": "MediaDownload",
+            "properties": {
+                "useDirectDownload": {
+                    "description": "A boolean that determines if direct download from ESF should be used for\ndownload of this media.",
+                    "type": "boolean"
+                },
+                "enabled": {
+                    "description": "Whether download is enabled.",
+                    "type": "boolean"
+                },
+                "downloadService": {
+                    "description": "DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.\n\nSpecify name of the download service if one is used for download.",
+                    "type": "string"
+                },
+                "completeNotification": {
+                    "description": "A boolean that determines whether a notification for the completion of a\ndownload should be sent to the backend.",
+                    "type": "boolean"
+                },
+                "maxDirectDownloadSize": {
+                    "description": "Optional maximum acceptable size for direct download.\nThe size is specified in bytes.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "dropzone": {
+                    "description": "Name of the Scotty dropzone to use for the current API.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CustomAuthRequirements": {
+            "description": "Configuration for a custom authentication provider.",
+            "id": "CustomAuthRequirements",
+            "properties": {
+                "provider": {
+                    "description": "A configuration string containing connection information for the\nauthentication provider, typically formatted as a SmartService string\n(go/smartservice).",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ChangeReport": {
+            "description": "Change report associated with a particular service configuration.\n\nIt contains a list of ConfigChanges based on the comparison between\ntwo service configurations.",
+            "id": "ChangeReport",
+            "properties": {
+                "configChanges": {
+                    "description": "List of changes between two service configurations.\nThe changes will be alphabetically sorted based on the identifier\nof each change.\nA ConfigChange identifier is a dot separated path to the configuration.\nExample: visibility.rules[selector='LibraryService.CreateBook'].restriction",
+                    "items": {
+                        "$ref": "ConfigChange"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "DisableServiceRequest": {
+            "description": "Request message for DisableService method.",
+            "id": "DisableServiceRequest",
+            "properties": {
+                "consumerId": {
+                    "description": "The identity of consumer resource which service disablement will be\napplied to.\n\nThe Google Service Management implementation accepts the following\nforms:\n- \"project:<project_id>\"\n\nNote: this is made compatible with\ngoogle.api.servicecontrol.v1.Operation.consumer_id.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SubmitConfigSourceResponse": {
+            "description": "Response message for SubmitConfigSource method.",
+            "id": "SubmitConfigSourceResponse",
+            "properties": {
+                "serviceConfig": {
+                    "$ref": "Service",
+                    "description": "The generated service configuration."
+                }
+            },
+            "type": "object"
+        },
+        "MediaUpload": {
+            "description": "Defines the Media configuration for a service in case of an upload.\nUse this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead [][google.bytestream.RestByteStream] as an API to\nyour configuration for Bytestream methods.",
+            "id": "MediaUpload",
+            "properties": {
+                "completeNotification": {
+                    "description": "A boolean that determines whether a notification for the completion of an\nupload should be sent to the backend. These notifications will not be seen\nby the client and will not consume quota.",
+                    "type": "boolean"
+                },
+                "progressNotification": {
+                    "description": "Whether to receive a notification for progress changes of media upload.",
+                    "type": "boolean"
+                },
+                "enabled": {
+                    "description": "Whether upload is enabled.",
+                    "type": "boolean"
+                },
+                "dropzone": {
+                    "description": "Name of the Scotty dropzone to use for the current API.",
+                    "type": "string"
+                },
+                "startNotification": {
+                    "description": "Whether to receive a notification on the start of media upload.",
+                    "type": "boolean"
+                },
+                "uploadService": {
+                    "description": "DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.\n\nSpecify name of the upload service if one is used for upload.",
+                    "type": "string"
+                },
+                "maxSize": {
+                    "description": "Optional maximum acceptable size for an upload.\nThe size is specified in bytes.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "mimeTypes": {
+                    "description": "An array of mimetype patterns. Esf will only accept uploads that match one\nof the given patterns.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "BillingDestination": {
+            "description": "Configuration of a specific billing destination (Currently only support\nbill against consumer project).",
+            "id": "BillingDestination",
+            "properties": {
+                "monitoredResource": {
+                    "description": "The monitored resource type. The type must be defined in\nService.monitored_resources section.",
+                    "type": "string"
+                },
+                "metrics": {
+                    "description": "Names of the metrics to report to this billing destination.\nEach name must be defined in Service.metrics section.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Advice": {
+            "description": "Generated advice about this change, used for providing more\ninformation about how a change will affect the existing service.",
+            "id": "Advice",
+            "properties": {
+                "description": {
+                    "description": "Useful description for why this advice was applied and what actions should\nbe taken to mitigate any implied risks.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ManagedService": {
+            "description": "The full representation of a Service that is managed by\nGoogle Service Management.",
+            "id": "ManagedService",
+            "properties": {
+                "serviceName": {
+                    "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements.",
+                    "type": "string"
+                },
+                "producerProjectId": {
+                    "description": "ID of the project that produces and owns this service.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "UsageRule": {
+            "description": "Usage configuration rules for the service.\n\nNOTE: Under development.\n\n\nUse this rule to configure unregistered calls for the service. Unregistered\ncalls are calls that do not contain consumer project identity.\n(Example: calls that do not contain an API key).\nBy default, API methods do not allow unregistered calls, and each method call\nmust be identified by a consumer project identity. Use this rule to\nallow/disallow unregistered calls.\n\nExample of an API that wants to allow unregistered calls for entire service.\n\n    usage:\n      rules:\n      - selector: \"*\"\n        allow_unregistered_calls: true\n\nExample of a method that wants to allow unregistered calls.\n\n    usage:\n      rules:\n      - selector: \"google.example.library.v1.LibraryService.CreateBook\"\n        allow_unregistered_calls: true",
+            "id": "UsageRule",
+            "properties": {
+                "allowUnregisteredCalls": {
+                    "description": "True, if the method allows unregistered calls; false otherwise.",
+                    "type": "boolean"
+                },
+                "selector": {
+                    "description": "Selects the methods to which this rule applies. Use '*' to indicate all\nmethods in all APIs.\n\nRefer to selector for syntax details.",
+                    "type": "string"
+                },
+                "skipServiceControl": {
+                    "description": "True, if the method should skip service control. If so, no control plane\nfeature (like quota and billing) will be enabled.\nThis flag is used by ESP to allow some Endpoints customers to bypass\nGoogle internal checks.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "TrafficPercentStrategy": {
+            "description": "Strategy that specifies how clients of Google Service Controller want to\nsend traffic to use different config versions. This is generally\nused by API proxy to split traffic based on your configured precentage for\neach config version.\n\nOne example of how to gradually rollout a new service configuration using\nthis\nstrategy:\nDay 1\n\n    Rollout {\n      id: \"example.googleapis.com/rollout_20160206\"\n      traffic_percent_strategy {\n        percentages: {\n          \"example.googleapis.com/20160201\": 70.00\n          \"example.googleapis.com/20160206\": 30.00\n        }\n      }\n    }\n\nDay 2\n\n    Rollout {\n      id: \"example.googleapis.com/rollout_20160207\"\n      traffic_percent_strategy: {\n        percentages: {\n          \"example.googleapis.com/20160206\": 100.00\n        }\n      }\n    }",
+            "id": "TrafficPercentStrategy",
+            "properties": {
+                "percentages": {
+                    "additionalProperties": {
+                        "format": "double",
+                        "type": "number"
+                    },
+                    "description": "Maps service configuration IDs to their corresponding traffic percentage.\nKey is the service configuration ID, Value is the traffic percentage\nwhich must be greater than 0.0 and the sum must equal to 100.0.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "AuthRequirement": {
+            "description": "User-defined authentication requirements, including support for\n[JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).",
+            "id": "AuthRequirement",
+            "properties": {
+                "audiences": {
+                    "description": "NOTE: This will be deprecated soon, once AuthProvider.audiences is\nimplemented and accepted in all the runtime components.\n\nThe list of JWT\n[audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).\nthat are allowed to access. A JWT containing any of these audiences will\nbe accepted. When this setting is absent, only JWTs with audience\n\"https://Service_name/API_name\"\nwill be accepted. For example, if no audiences are in the setting,\nLibraryService API will only accept JWTs with the following audience\n\"https://library-example.googleapis.com/google.example.library.v1.LibraryService\".\n\nExample:\n\n    audiences: bookstore_android.apps.googleusercontent.com,\n               bookstore_web.apps.googleusercontent.com",
+                    "type": "string"
+                },
+                "providerId": {
+                    "description": "id from authentication provider.\n\nExample:\n\n    provider_id: bookstore_auth",
+                    "type": "string"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/serviceuser__v1.json b/discovery/googleapis/serviceuser__v1.json
index bfeafa9..d1d49d1 100644
--- a/discovery/googleapis/serviceuser__v1.json
+++ b/discovery/googleapis/serviceuser__v1.json
@@ -2,14 +2,14 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/service.management": {
-                    "description": "Manage your Google API service configuration"
-                },
                 "https://www.googleapis.com/auth/cloud-platform.read-only": {
                     "description": "View your data across Google Cloud Platform services"
                 },
                 "https://www.googleapis.com/auth/cloud-platform": {
                     "description": "View and manage your data across Google Cloud Platform services"
+                },
+                "https://www.googleapis.com/auth/service.management": {
+                    "description": "Manage your Google API service configuration"
                 }
             }
         }
@@ -31,6 +31,33 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
         "uploadType": {
             "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
@@ -89,33 +116,6 @@
             "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.",
             "location": "query",
             "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
         }
     },
     "protocol": "rest",
@@ -219,6 +219,13 @@
                                 "parent"
                             ],
                             "parameters": {
+                                "parent": {
+                                    "description": "List enabled services for the specified parent.\n\nAn example valid parent would be:\n- projects/my-project",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
                                 "pageToken": {
                                     "description": "Token identifying which result to start with; returned by a previous list\ncall.",
                                     "location": "query",
@@ -229,13 +236,6 @@
                                     "format": "int32",
                                     "location": "query",
                                     "type": "integer"
-                                },
-                                "parent": {
-                                    "description": "List enabled services for the specified parent.\n\nAn example valid parent would be:\n- projects/my-project",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
                                 }
                             },
                             "path": "v1/{+parent}/services",
@@ -252,642 +252,9 @@
             }
         }
     },
-    "revision": "20170929",
+    "revision": "20171013",
     "rootUrl": "https://serviceuser.googleapis.com/",
     "schemas": {
-        "DocumentationRule": {
-            "description": "A documentation rule provides information about individual API elements.",
-            "id": "DocumentationRule",
-            "properties": {
-                "deprecationDescription": {
-                    "description": "Deprecation description of the selected element(s). It can be provided if an\nelement is marked as `deprecated`.",
-                    "type": "string"
-                },
-                "selector": {
-                    "description": "The selector is a comma-separated list of patterns. Each pattern is a\nqualified name of the element which may end in \"*\", indicating a wildcard.\nWildcards are only allowed at the end and for a whole component of the\nqualified name, i.e. \"foo.*\" is ok, but not \"foo.b*\" or \"foo.*.bar\". To\nspecify a default for all applicable elements, the whole pattern \"*\"\nis used.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "Description of the selected API(s).",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AuthorizationConfig": {
-            "description": "Configuration of authorization.\n\nThis section determines the authorization provider, if unspecified, then no\nauthorization check will be done.\n\nExample:\n\n    experimental:\n      authorization:\n        provider: firebaserules.googleapis.com",
-            "id": "AuthorizationConfig",
-            "properties": {
-                "provider": {
-                    "description": "The name of the authorization provider, such as\nfirebaserules.googleapis.com.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ContextRule": {
-            "description": "A context rule provides information about the context for an individual API\nelement.",
-            "id": "ContextRule",
-            "properties": {
-                "provided": {
-                    "description": "A list of full type names of provided contexts.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "requested": {
-                    "description": "A list of full type names of requested contexts.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "selector": {
-                    "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Billing": {
-            "description": "Billing related configuration of the service.\n\nThe following example shows how to configure monitored resources and metrics\nfor billing:\n\n    monitored_resources:\n    - type: library.googleapis.com/branch\n      labels:\n      - key: /city\n        description: The city where the library branch is located in.\n      - key: /name\n        description: The name of the branch.\n    metrics:\n    - name: library.googleapis.com/book/borrowed_count\n      metric_kind: DELTA\n      value_type: INT64\n    billing:\n      consumer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        metrics:\n        - library.googleapis.com/book/borrowed_count",
-            "id": "Billing",
-            "properties": {
-                "consumerDestinations": {
-                    "description": "Billing configurations for sending metrics to the consumer project.\nThere can be multiple consumer destinations per service, each one must have\na different monitored resource type. A metric can be used in at most\none consumer destination.",
-                    "items": {
-                        "$ref": "BillingDestination"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "MetricDescriptor": {
-            "description": "Defines a metric type and its schema. Once a metric descriptor is created,\ndeleting or altering it stops data collection and makes the metric type's\nexisting data unusable.",
-            "id": "MetricDescriptor",
-            "properties": {
-                "unit": {
-                    "description": "The unit in which the metric value is reported. It is only applicable\nif the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The\nsupported units are a subset of [The Unified Code for Units of\nMeasure](http://unitsofmeasure.org/ucum.html) standard:\n\n**Basic units (UNIT)**\n\n* `bit`   bit\n* `By`    byte\n* `s`     second\n* `min`   minute\n* `h`     hour\n* `d`     day\n\n**Prefixes (PREFIX)**\n\n* `k`     kilo    (10**3)\n* `M`     mega    (10**6)\n* `G`     giga    (10**9)\n* `T`     tera    (10**12)\n* `P`     peta    (10**15)\n* `E`     exa     (10**18)\n* `Z`     zetta   (10**21)\n* `Y`     yotta   (10**24)\n* `m`     milli   (10**-3)\n* `u`     micro   (10**-6)\n* `n`     nano    (10**-9)\n* `p`     pico    (10**-12)\n* `f`     femto   (10**-15)\n* `a`     atto    (10**-18)\n* `z`     zepto   (10**-21)\n* `y`     yocto   (10**-24)\n* `Ki`    kibi    (2**10)\n* `Mi`    mebi    (2**20)\n* `Gi`    gibi    (2**30)\n* `Ti`    tebi    (2**40)\n\n**Grammar**\n\nThe grammar includes the dimensionless unit `1`, such as `1/s`.\n\nThe grammar also includes these connectors:\n\n* `/`    division (as an infix operator, e.g. `1/s`).\n* `.`    multiplication (as an infix operator, e.g. `GBy.d`)\n\nThe grammar for a unit is as follows:\n\n    Expression = Component { \".\" Component } { \"/\" Component } ;\n\n    Component = [ PREFIX ] UNIT [ Annotation ]\n              | Annotation\n              | \"1\"\n              ;\n\n    Annotation = \"{\" NAME \"}\" ;\n\nNotes:\n\n* `Annotation` is just a comment if it follows a `UNIT` and is\n   equivalent to `1` if it is used alone. For examples,\n   `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.\n* `NAME` is a sequence of non-blank printable ASCII characters not\n   containing '{' or '}'.",
-                    "type": "string"
-                },
-                "labels": {
-                    "description": "The set of labels that can be used to describe a specific\ninstance of this metric type. For example, the\n`appengine.googleapis.com/http/server/response_latencies` metric\ntype has a label for the HTTP response code, `response_code`, so\nyou can look at latencies for successful responses or just\nfor responses that failed.",
-                    "items": {
-                        "$ref": "LabelDescriptor"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "The resource name of the metric descriptor. Depending on the\nimplementation, the name typically includes: (1) the parent resource name\nthat defines the scope of the metric type or of its data; and (2) the\nmetric's URL-encoded type, which also appears in the `type` field of this\ndescriptor. For example, following is the resource name of a custom\nmetric within the GCP project `my-project-id`:\n\n    \"projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount\"",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The metric type, including its DNS name prefix. The type is not\nURL-encoded.  All user-defined custom metric types have the DNS name\n`custom.googleapis.com`.  Metric types should use a natural hierarchical\ngrouping. For example:\n\n    \"custom.googleapis.com/invoice/paid/amount\"\n    \"appengine.googleapis.com/http/server/response_latencies\"",
-                    "type": "string"
-                },
-                "valueType": {
-                    "description": "Whether the measurement is an integer, a floating-point number, etc.\nSome combinations of `metric_kind` and `value_type` might not be supported.",
-                    "enum": [
-                        "VALUE_TYPE_UNSPECIFIED",
-                        "BOOL",
-                        "INT64",
-                        "DOUBLE",
-                        "STRING",
-                        "DISTRIBUTION",
-                        "MONEY"
-                    ],
-                    "enumDescriptions": [
-                        "Do not use this default value.",
-                        "The value is a boolean.\nThis value type can be used only if the metric kind is `GAUGE`.",
-                        "The value is a signed 64-bit integer.",
-                        "The value is a double precision floating point number.",
-                        "The value is a text string.\nThis value type can be used only if the metric kind is `GAUGE`.",
-                        "The value is a `Distribution`.",
-                        "The value is money."
-                    ],
-                    "type": "string"
-                },
-                "metricKind": {
-                    "description": "Whether the metric records instantaneous values, changes to a value, etc.\nSome combinations of `metric_kind` and `value_type` might not be supported.",
-                    "enum": [
-                        "METRIC_KIND_UNSPECIFIED",
-                        "GAUGE",
-                        "DELTA",
-                        "CUMULATIVE"
-                    ],
-                    "enumDescriptions": [
-                        "Do not use this default value.",
-                        "An instantaneous measurement of a value.",
-                        "The change in a value during a time interval.",
-                        "A value accumulated over a time interval.  Cumulative\nmeasurements in a time series should have the same start time\nand increasing end times, until an event resets the cumulative\nvalue to zero and sets a new start time for the following\npoints."
-                    ],
-                    "type": "string"
-                },
-                "description": {
-                    "description": "A detailed description of the metric, which can be used in documentation.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "A concise name for the metric, which can be displayed in user interfaces.\nUse sentence case without an ending period, for example \"Request count\".",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SourceContext": {
-            "description": "`SourceContext` represents information about the source of a\nprotobuf element, like the file in which it is defined.",
-            "id": "SourceContext",
-            "properties": {
-                "fileName": {
-                    "description": "The path-qualified name of the .proto file that contained the associated\nprotobuf element.  For example: `\"google/protobuf/source_context.proto\"`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListEnabledServicesResponse": {
-            "description": "Response message for `ListEnabledServices` method.",
-            "id": "ListEnabledServicesResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Token that can be passed to `ListEnabledServices` to resume a paginated\nquery.",
-                    "type": "string"
-                },
-                "services": {
-                    "description": "Services enabled for the specified parent.",
-                    "items": {
-                        "$ref": "PublishedService"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Endpoint": {
-            "description": "`Endpoint` describes a network endpoint that serves a set of APIs.\nA service may expose any number of endpoints, and all endpoints share the\nsame service configuration, such as quota configuration and monitoring\nconfiguration.\n\nExample service configuration:\n\n    name: library-example.googleapis.com\n    endpoints:\n      # Below entry makes 'google.example.library.v1.Library'\n      # API be served from endpoint address library-example.googleapis.com.\n      # It also allows HTTP OPTIONS calls to be passed to the backend, for\n      # it to decide whether the subsequent cross-origin request is\n      # allowed to proceed.\n    - name: library-example.googleapis.com\n      allow_cors: true",
-            "id": "Endpoint",
-            "properties": {
-                "allowCors": {
-                    "description": "Allowing\n[CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka\ncross-domain traffic, would allow the backends served from this endpoint to\nreceive and respond to HTTP OPTIONS requests. The response will be used by\nthe browser to determine whether the subsequent cross-origin request is\nallowed to proceed.",
-                    "type": "boolean"
-                },
-                "aliases": {
-                    "description": "DEPRECATED: This field is no longer supported. Instead of using aliases,\nplease specify multiple google.api.Endpoint for each of the intented\nalias.\n\nAdditional names that this endpoint will be hosted on.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "The canonical name of this endpoint.",
-                    "type": "string"
-                },
-                "target": {
-                    "description": "The specification of an Internet routable address of API frontend that will\nhandle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary).\nIt should be either a valid IPv4 address or a fully-qualified domain name.\nFor example, \"8.8.8.8\" or \"myservice.appspot.com\".",
-                    "type": "string"
-                },
-                "features": {
-                    "description": "The list of features enabled on this endpoint.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "apis": {
-                    "description": "The list of APIs served by this endpoint.\n\nIf no APIs are specified this translates to \"all APIs\" exported by the\nservice, as defined in the top-level service configuration.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "OAuthRequirements": {
-            "description": "OAuth scopes are a way to define data and permissions on data. For example,\nthere are scopes defined for \"Read-only access to Google Calendar\" and\n\"Access to Cloud Platform\". Users can consent to a scope for an application,\ngiving it permission to access that data on their behalf.\n\nOAuth scope specifications should be fairly coarse grained; a user will need\nto see and understand the text description of what your scope means.\n\nIn most cases: use one or at most two OAuth scopes for an entire family of\nproducts. If your product has multiple APIs, you should probably be sharing\nthe OAuth scope across all of those APIs.\n\nWhen you need finer grained OAuth consent screens: talk with your product\nmanagement about how developers will use them in practice.\n\nPlease note that even though each of the canonical scopes is enough for a\nrequest to be accepted and passed to the backend, a request can still fail\ndue to the backend requiring additional scopes or permissions.",
-            "id": "OAuthRequirements",
-            "properties": {
-                "canonicalScopes": {
-                    "description": "The list of publicly documented OAuth scopes that are allowed access. An\nOAuth token containing any of these scopes will be accepted.\n\nExample:\n\n     canonical_scopes: https://www.googleapis.com/auth/calendar,\n                       https://www.googleapis.com/auth/calendar.read",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Usage": {
-            "description": "Configuration controlling usage of a service.",
-            "id": "Usage",
-            "properties": {
-                "requirements": {
-                    "description": "Requirements that must be satisfied before a consumer project can use the\nservice. Each requirement is of the form <service.name>/<requirement-id>;\nfor example 'serviceusage.googleapis.com/billing-enabled'.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "producerNotificationChannel": {
-                    "description": "The full resource name of a channel used for sending notifications to the\nservice producer.\n\nGoogle Service Management currently only supports\n[Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification\nchannel. To use Google Cloud Pub/Sub as the channel, this must be the name\nof a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format\ndocumented in https://cloud.google.com/pubsub/docs/overview.",
-                    "type": "string"
-                },
-                "rules": {
-                    "description": "A list of usage rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
-                    "items": {
-                        "$ref": "UsageRule"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Context": {
-            "description": "`Context` defines which contexts an API requests.\n\nExample:\n\n    context:\n      rules:\n      - selector: \"*\"\n        requested:\n        - google.rpc.context.ProjectContext\n        - google.rpc.context.OriginContext\n\nThe above specifies that all methods in the API request\n`google.rpc.context.ProjectContext` and\n`google.rpc.context.OriginContext`.\n\nAvailable context types are defined in package\n`google.rpc.context`.",
-            "id": "Context",
-            "properties": {
-                "rules": {
-                    "description": "A list of RPC context rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
-                    "items": {
-                        "$ref": "ContextRule"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "LogDescriptor": {
-            "description": "A description of a log type. Example in YAML format:\n\n    - name: library.googleapis.com/activity_history\n      description: The history of borrowing and returning library items.\n      display_name: Activity\n      labels:\n      - key: /customer_id\n        description: Identifier of a library customer",
-            "id": "LogDescriptor",
-            "properties": {
-                "name": {
-                    "description": "The name of the log. It must be less than 512 characters long and can\ninclude the following characters: upper- and lower-case alphanumeric\ncharacters [A-Za-z0-9], and punctuation characters including\nslash, underscore, hyphen, period [/_-.].",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "The human-readable name for this log. This information appears on\nthe user interface and should be concise.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "A human-readable description of this log. This information appears in\nthe documentation and can contain details.",
-                    "type": "string"
-                },
-                "labels": {
-                    "description": "The set of labels that are available to describe a specific log entry.\nRuntime requests that contain labels not specified here are\nconsidered invalid.",
-                    "items": {
-                        "$ref": "LabelDescriptor"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "CustomErrorRule": {
-            "description": "A custom error rule.",
-            "id": "CustomErrorRule",
-            "properties": {
-                "isErrorType": {
-                    "description": "Mark this message as possible payload in error response.  Otherwise,\nobjects of this type will be filtered when they appear in error payload.",
-                    "type": "boolean"
-                },
-                "selector": {
-                    "description": "Selects messages to which this rule applies.\n\nRefer to selector for syntax details.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "MonitoredResourceDescriptor": {
-            "description": "An object that describes the schema of a MonitoredResource object using a\ntype name and a set of labels.  For example, the monitored resource\ndescriptor for Google Compute Engine VM instances has a type of\n`\"gce_instance\"` and specifies the use of the labels `\"instance_id\"` and\n`\"zone\"` to identify particular VM instances.\n\nDifferent APIs can support different monitored resource types. APIs generally\nprovide a `list` method that returns the monitored resource descriptors used\nby the API.",
-            "id": "MonitoredResourceDescriptor",
-            "properties": {
-                "name": {
-                    "description": "Optional. The resource name of the monitored resource descriptor:\n`\"projects/{project_id}/monitoredResourceDescriptors/{type}\"` where\n{type} is the value of the `type` field in this object and\n{project_id} is a project ID that provides API-specific context for\naccessing the type.  APIs that do not use project information can use the\nresource name format `\"monitoredResourceDescriptors/{type}\"`.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "Optional. A detailed description of the monitored resource type that might\nbe used in documentation.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "Optional. A concise name for the monitored resource type that might be\ndisplayed in user interfaces. It should be a Title Cased Noun Phrase,\nwithout any article or other determiners. For example,\n`\"Google Cloud SQL Database\"`.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "Required. The monitored resource type. For example, the type\n`\"cloudsql_database\"` represents databases in Google Cloud SQL.\nThe maximum length of this value is 256 characters.",
-                    "type": "string"
-                },
-                "labels": {
-                    "description": "Required. A set of labels used to describe instances of this monitored\nresource type. For example, an individual Google Cloud SQL database is\nidentified by values for the labels `\"database_id\"` and `\"zone\"`.",
-                    "items": {
-                        "$ref": "LabelDescriptor"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "MediaDownload": {
-            "description": "Defines the Media configuration for a service in case of a download.\nUse this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead [][google.bytestream.RestByteStream] as an API to\nyour configuration for Bytestream methods.",
-            "id": "MediaDownload",
-            "properties": {
-                "useDirectDownload": {
-                    "description": "A boolean that determines if direct download from ESF should be used for\ndownload of this media.",
-                    "type": "boolean"
-                },
-                "completeNotification": {
-                    "description": "A boolean that determines whether a notification for the completion of a\ndownload should be sent to the backend.",
-                    "type": "boolean"
-                },
-                "enabled": {
-                    "description": "Whether download is enabled.",
-                    "type": "boolean"
-                },
-                "downloadService": {
-                    "description": "DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.\n\nSpecify name of the download service if one is used for download.",
-                    "type": "string"
-                },
-                "maxDirectDownloadSize": {
-                    "description": "Optional maximum acceptable size for direct download.\nThe size is specified in bytes.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "dropzone": {
-                    "description": "Name of the Scotty dropzone to use for the current API.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CustomAuthRequirements": {
-            "description": "Configuration for a custom authentication provider.",
-            "id": "CustomAuthRequirements",
-            "properties": {
-                "provider": {
-                    "description": "A configuration string containing connection information for the\nauthentication provider, typically formatted as a SmartService string\n(go/smartservice).",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "DisableServiceRequest": {
-            "description": "Request message for DisableService method.",
-            "id": "DisableServiceRequest",
-            "properties": {},
-            "type": "object"
-        },
-        "SearchServicesResponse": {
-            "description": "Response message for SearchServices method.",
-            "id": "SearchServicesResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Token that can be passed to `ListAvailableServices` to resume a paginated\nquery.",
-                    "type": "string"
-                },
-                "services": {
-                    "description": "Services available publicly or available to the authenticated caller.",
-                    "items": {
-                        "$ref": "PublishedService"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "MediaUpload": {
-            "description": "Defines the Media configuration for a service in case of an upload.\nUse this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead [][google.bytestream.RestByteStream] as an API to\nyour configuration for Bytestream methods.",
-            "id": "MediaUpload",
-            "properties": {
-                "uploadService": {
-                    "description": "DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.\n\nSpecify name of the upload service if one is used for upload.",
-                    "type": "string"
-                },
-                "mimeTypes": {
-                    "description": "An array of mimetype patterns. Esf will only accept uploads that match one\nof the given patterns.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "maxSize": {
-                    "description": "Optional maximum acceptable size for an upload.\nThe size is specified in bytes.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "enabled": {
-                    "description": "Whether upload is enabled.",
-                    "type": "boolean"
-                },
-                "progressNotification": {
-                    "description": "Whether to receive a notification for progress changes of media upload.",
-                    "type": "boolean"
-                },
-                "completeNotification": {
-                    "description": "A boolean that determines whether a notification for the completion of an\nupload should be sent to the backend. These notifications will not be seen\nby the client and will not consume quota.",
-                    "type": "boolean"
-                },
-                "dropzone": {
-                    "description": "Name of the Scotty dropzone to use for the current API.",
-                    "type": "string"
-                },
-                "startNotification": {
-                    "description": "Whether to receive a notification on the start of media upload.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "BillingDestination": {
-            "description": "Configuration of a specific billing destination (Currently only support\nbill against consumer project).",
-            "id": "BillingDestination",
-            "properties": {
-                "metrics": {
-                    "description": "Names of the metrics to report to this billing destination.\nEach name must be defined in Service.metrics section.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "monitoredResource": {
-                    "description": "The monitored resource type. The type must be defined in\nService.monitored_resources section.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UsageRule": {
-            "description": "Usage configuration rules for the service.\n\nNOTE: Under development.\n\n\nUse this rule to configure unregistered calls for the service. Unregistered\ncalls are calls that do not contain consumer project identity.\n(Example: calls that do not contain an API key).\nBy default, API methods do not allow unregistered calls, and each method call\nmust be identified by a consumer project identity. Use this rule to\nallow/disallow unregistered calls.\n\nExample of an API that wants to allow unregistered calls for entire service.\n\n    usage:\n      rules:\n      - selector: \"*\"\n        allow_unregistered_calls: true\n\nExample of a method that wants to allow unregistered calls.\n\n    usage:\n      rules:\n      - selector: \"google.example.library.v1.LibraryService.CreateBook\"\n        allow_unregistered_calls: true",
-            "id": "UsageRule",
-            "properties": {
-                "allowUnregisteredCalls": {
-                    "description": "True, if the method allows unregistered calls; false otherwise.",
-                    "type": "boolean"
-                },
-                "selector": {
-                    "description": "Selects the methods to which this rule applies. Use '*' to indicate all\nmethods in all APIs.\n\nRefer to selector for syntax details.",
-                    "type": "string"
-                },
-                "skipServiceControl": {
-                    "description": "True, if the method should skip service control. If so, no control plane\nfeature (like quota and billing) will be enabled.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "AuthRequirement": {
-            "description": "User-defined authentication requirements, including support for\n[JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).",
-            "id": "AuthRequirement",
-            "properties": {
-                "audiences": {
-                    "description": "NOTE: This will be deprecated soon, once AuthProvider.audiences is\nimplemented and accepted in all the runtime components.\n\nThe list of JWT\n[audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).\nthat are allowed to access. A JWT containing any of these audiences will\nbe accepted. When this setting is absent, only JWTs with audience\n\"https://Service_name/API_name\"\nwill be accepted. For example, if no audiences are in the setting,\nLibraryService API will only accept JWTs with the following audience\n\"https://library-example.googleapis.com/google.example.library.v1.LibraryService\".\n\nExample:\n\n    audiences: bookstore_android.apps.googleusercontent.com,\n               bookstore_web.apps.googleusercontent.com",
-                    "type": "string"
-                },
-                "providerId": {
-                    "description": "id from authentication provider.\n\nExample:\n\n    provider_id: bookstore_auth",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Documentation": {
-            "description": "`Documentation` provides the information for describing a service.\n\nExample:\n<pre><code>documentation:\n  summary: >\n    The Google Calendar API gives access\n    to most calendar features.\n  pages:\n  - name: Overview\n    content: &#40;== include google/foo/overview.md ==&#41;\n  - name: Tutorial\n    content: &#40;== include google/foo/tutorial.md ==&#41;\n    subpages;\n    - name: Java\n      content: &#40;== include google/foo/tutorial_java.md ==&#41;\n  rules:\n  - selector: google.calendar.Calendar.Get\n    description: >\n      ...\n  - selector: google.calendar.Calendar.Put\n    description: >\n      ...\n</code></pre>\nDocumentation is provided in markdown syntax. In addition to\nstandard markdown features, definition lists, tables and fenced\ncode blocks are supported. Section headers can be provided and are\ninterpreted relative to the section nesting of the context where\na documentation fragment is embedded.\n\nDocumentation from the IDL is merged with documentation defined\nvia the config at normalization time, where documentation provided\nby config rules overrides IDL provided.\n\nA number of constructs specific to the API platform are supported\nin documentation text.\n\nIn order to reference a proto element, the following\nnotation can be used:\n<pre><code>&#91;fully.qualified.proto.name]&#91;]</code></pre>\nTo override the display text used for the link, this can be used:\n<pre><code>&#91;display text]&#91;fully.qualified.proto.name]</code></pre>\nText can be excluded from doc using the following notation:\n<pre><code>&#40;-- internal comment --&#41;</code></pre>\nComments can be made conditional using a visibility label. The below\ntext will be only rendered if the `BETA` label is available:\n<pre><code>&#40;--BETA: comment for BETA users --&#41;</code></pre>\nA few directives are available in documentation. Note that\ndirectives must appear on a single line to be properly\nidentified. The `include` directive includes a markdown file from\nan external source:\n<pre><code>&#40;== include path/to/file ==&#41;</code></pre>\nThe `resource_for` directive marks a message to be the resource of\na collection in REST view. If it is not specified, tools attempt\nto infer the resource from the operations in a collection:\n<pre><code>&#40;== resource_for v1.shelves.books ==&#41;</code></pre>\nThe directive `suppress_warning` does not directly affect documentation\nand is documented together with service config validation.",
-            "id": "Documentation",
-            "properties": {
-                "summary": {
-                    "description": "A short summary of what the service does. Can only be provided by\nplain text.",
-                    "type": "string"
-                },
-                "documentationRootUrl": {
-                    "description": "The URL to the root of documentation.",
-                    "type": "string"
-                },
-                "overview": {
-                    "description": "Declares a single overview page. For example:\n<pre><code>documentation:\n  summary: ...\n  overview: &#40;== include overview.md ==&#41;\n</code></pre>\nThis is a shortcut for the following declaration (using pages style):\n<pre><code>documentation:\n  summary: ...\n  pages:\n  - name: Overview\n    content: &#40;== include overview.md ==&#41;\n</code></pre>\nNote: you cannot specify both `overview` field and `pages` field.",
-                    "type": "string"
-                },
-                "rules": {
-                    "description": "A list of documentation rules that apply to individual API elements.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
-                    "items": {
-                        "$ref": "DocumentationRule"
-                    },
-                    "type": "array"
-                },
-                "pages": {
-                    "description": "The top level pages for the documentation set.",
-                    "items": {
-                        "$ref": "Page"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "BackendRule": {
-            "description": "A backend rule provides configuration for an individual API element.",
-            "id": "BackendRule",
-            "properties": {
-                "deadline": {
-                    "description": "The number of seconds to wait for a response from a request.  The default\ndeadline for gRPC is infinite (no deadline) and HTTP requests is 5 seconds.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "minDeadline": {
-                    "description": "Minimum deadline in seconds needed for this method. Calls having deadline\nvalue lower than this will be rejected.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "address": {
-                    "description": "The address of the API backend.",
-                    "type": "string"
-                },
-                "selector": {
-                    "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AuthenticationRule": {
-            "description": "Authentication rules for the service.\n\nBy default, if a method has any authentication requirements, every request\nmust include a valid credential matching one of the requirements.\nIt's an error to include more than one kind of credential in a single\nrequest.\n\nIf a method doesn't have any auth requirements, request credentials will be\nignored.",
-            "id": "AuthenticationRule",
-            "properties": {
-                "customAuth": {
-                    "$ref": "CustomAuthRequirements",
-                    "description": "Configuration for custom authentication."
-                },
-                "oauth": {
-                    "$ref": "OAuthRequirements",
-                    "description": "The requirements for OAuth credentials."
-                },
-                "requirements": {
-                    "description": "Requirements for additional authentication providers.",
-                    "items": {
-                        "$ref": "AuthRequirement"
-                    },
-                    "type": "array"
-                },
-                "allowWithoutCredential": {
-                    "description": "Whether to allow requests without a credential. The credential can be\nan OAuth token, Google cookies (first-party auth) or EndUserCreds.\n\nFor requests without credentials, if the service control environment is\nspecified, each incoming request **must** be associated with a service\nconsumer. This can be done by passing an API key that belongs to a consumer\nproject.",
-                    "type": "boolean"
-                },
-                "selector": {
-                    "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Api": {
-            "description": "Api is a light-weight descriptor for an API Interface.\n\nInterfaces are also described as \"protocol buffer services\" in some contexts,\nsuch as by the \"service\" keyword in a .proto file, but they are different\nfrom API Services, which represent a concrete implementation of an interface\nas opposed to simply a description of methods and bindings. They are also\nsometimes simply referred to as \"APIs\" in other contexts, such as the name of\nthis message itself. See https://cloud.google.com/apis/design/glossary for\ndetailed terminology.",
-            "id": "Api",
-            "properties": {
-                "options": {
-                    "description": "Any metadata attached to the interface.",
-                    "items": {
-                        "$ref": "Option"
-                    },
-                    "type": "array"
-                },
-                "methods": {
-                    "description": "The methods of this interface, in unspecified order.",
-                    "items": {
-                        "$ref": "Method"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "The fully qualified name of this interface, including package name\nfollowed by the interface's simple name.",
-                    "type": "string"
-                },
-                "syntax": {
-                    "description": "The source syntax of the service.",
-                    "enum": [
-                        "SYNTAX_PROTO2",
-                        "SYNTAX_PROTO3"
-                    ],
-                    "enumDescriptions": [
-                        "Syntax `proto2`.",
-                        "Syntax `proto3`."
-                    ],
-                    "type": "string"
-                },
-                "sourceContext": {
-                    "$ref": "SourceContext",
-                    "description": "Source context for the protocol buffer service represented by this\nmessage."
-                },
-                "version": {
-                    "description": "A version string for this interface. If specified, must have the form\n`major-version.minor-version`, as in `1.10`. If the minor version is\nomitted, it defaults to zero. If the entire version field is empty, the\nmajor version is derived from the package name, as outlined below. If the\nfield is not empty, the version in the package name will be verified to be\nconsistent with what is provided here.\n\nThe versioning schema uses [semantic\nversioning](http://semver.org) where the major version number\nindicates a breaking change and the minor version an additive,\nnon-breaking change. Both version numbers are signals to users\nwhat to expect from different versions, and should be carefully\nchosen based on the product plan.\n\nThe major version is also reflected in the package name of the\ninterface, which must end in `v<major-version>`, as in\n`google.feature.v1`. For major versions 0 and 1, the suffix can\nbe omitted. Zero major versions must only be used for\nexperimental, non-GA interfaces.\n",
-                    "type": "string"
-                },
-                "mixins": {
-                    "description": "Included interfaces. See Mixin.",
-                    "items": {
-                        "$ref": "Mixin"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "MetricRule": {
             "description": "Bind API methods to metrics. Binding a method to a metric causes that\nmetric's configured quota behaviors to apply to the method call.",
             "id": "MetricRule",
@@ -911,19 +278,19 @@
             "description": "`Authentication` defines the authentication configuration for an API.\n\nExample for an API targeted for external use:\n\n    name: calendar.googleapis.com\n    authentication:\n      providers:\n      - id: google_calendar_auth\n        jwks_uri: https://www.googleapis.com/oauth2/v1/certs\n        issuer: https://securetoken.google.com\n      rules:\n      - selector: \"*\"\n        requirements:\n          provider_id: google_calendar_auth",
             "id": "Authentication",
             "properties": {
-                "rules": {
-                    "description": "A list of authentication rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
-                    "items": {
-                        "$ref": "AuthenticationRule"
-                    },
-                    "type": "array"
-                },
                 "providers": {
                     "description": "Defines a set of authentication providers that a service supports.",
                     "items": {
                         "$ref": "AuthProvider"
                     },
                     "type": "array"
+                },
+                "rules": {
+                    "description": "A list of authentication rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
+                    "items": {
+                        "$ref": "AuthenticationRule"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -932,6 +299,18 @@
             "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
             "id": "Operation",
             "properties": {
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+                    "type": "object"
+                },
+                "done": {
+                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+                    "type": "boolean"
+                },
                 "response": {
                     "additionalProperties": {
                         "description": "Properties of the object. Contains field @type with type URL.",
@@ -947,18 +326,6 @@
                 "error": {
                     "$ref": "Status",
                     "description": "The error result of the operation in case of failure or cancellation."
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
-                    "type": "object"
-                },
-                "done": {
-                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
-                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -1016,10 +383,6 @@
             "description": "Configuration for an anthentication provider, including support for\n[JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).",
             "id": "AuthProvider",
             "properties": {
-                "jwksUri": {
-                    "description": "URL of the provider's public key set to validate signature of the JWT. See\n[OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).\nOptional if the key set document:\n - can be retrieved from\n   [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html\n   of the issuer.\n - can be inferred from the email domain of the issuer (e.g. a Google service account).\n\nExample: https://www.googleapis.com/oauth2/v1/certs",
-                    "type": "string"
-                },
                 "audiences": {
                     "description": "The list of JWT\n[audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).\nthat are allowed to access. A JWT containing any of these audiences will\nbe accepted. When this setting is absent, only JWTs with audience\n\"https://Service_name/API_name\"\nwill be accepted. For example, if no audiences are in the setting,\nLibraryService API will only accept JWTs with the following audience\n\"https://library-example.googleapis.com/google.example.library.v1.LibraryService\".\n\nExample:\n\n    audiences: bookstore_android.apps.googleusercontent.com,\n               bookstore_web.apps.googleusercontent.com",
                     "type": "string"
@@ -1035,6 +398,33 @@
                 "id": {
                     "description": "The unique identifier of the auth provider. It will be referred to by\n`AuthRequirement.provider_id`.\n\nExample: \"bookstore_auth\".",
                     "type": "string"
+                },
+                "jwksUri": {
+                    "description": "URL of the provider's public key set to validate signature of the JWT. See\n[OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).\nOptional if the key set document:\n - can be retrieved from\n   [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html\n   of the issuer.\n - can be inferred from the email domain of the issuer (e.g. a Google service account).\n\nExample: https://www.googleapis.com/oauth2/v1/certs",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnumValue": {
+            "description": "Enum value definition.",
+            "id": "EnumValue",
+            "properties": {
+                "options": {
+                    "description": "Protocol buffer options.",
+                    "items": {
+                        "$ref": "Option"
+                    },
+                    "type": "array"
+                },
+                "number": {
+                    "description": "Enum value number.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "name": {
+                    "description": "Enum value name.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1043,100 +433,6 @@
             "description": "`Service` is the root object of Google service configuration schema. It\ndescribes basic information about a service, such as the name and the\ntitle, and delegates other aspects to sub-sections. Each sub-section is\neither a proto message or a repeated proto message that configures a\nspecific aspect, such as auth. See each proto message definition for details.\n\nExample:\n\n    type: google.api.Service\n    config_version: 3\n    name: calendar.googleapis.com\n    title: Google Calendar API\n    apis:\n    - name: google.calendar.v3.Calendar\n    authentication:\n      providers:\n      - id: google_calendar_auth\n        jwks_uri: https://www.googleapis.com/oauth2/v1/certs\n        issuer: https://securetoken.google.com\n      rules:\n      - selector: \"*\"\n        requirements:\n          provider_id: google_calendar_auth",
             "id": "Service",
             "properties": {
-                "systemTypes": {
-                    "description": "A list of all proto message types included in this API service.\nIt serves similar purpose as [google.api.Service.types], except that\nthese types are not needed by user-defined APIs. Therefore, they will not\nshow up in the generated discovery doc. This field should only be used\nto define system APIs in ESF.",
-                    "items": {
-                        "$ref": "Type"
-                    },
-                    "type": "array"
-                },
-                "producerProjectId": {
-                    "description": "The Google project that owns this service.",
-                    "type": "string"
-                },
-                "visibility": {
-                    "$ref": "Visibility",
-                    "description": "API visibility configuration."
-                },
-                "quota": {
-                    "$ref": "Quota",
-                    "description": "Quota configuration."
-                },
-                "name": {
-                    "description": "The DNS address at which this service is available,\ne.g. `calendar.googleapis.com`.",
-                    "type": "string"
-                },
-                "billing": {
-                    "$ref": "Billing",
-                    "description": "Billing configuration."
-                },
-                "customError": {
-                    "$ref": "CustomError",
-                    "description": "Custom error configuration."
-                },
-                "title": {
-                    "description": "The product title for this service.",
-                    "type": "string"
-                },
-                "endpoints": {
-                    "description": "Configuration for network endpoints.  If this is empty, then an endpoint\nwith the same name as the service is automatically generated to service all\ndefined APIs.",
-                    "items": {
-                        "$ref": "Endpoint"
-                    },
-                    "type": "array"
-                },
-                "apis": {
-                    "description": "A list of API interfaces exported by this service. Only the `name` field\nof the google.protobuf.Api needs to be provided by the configuration\nauthor, as the remaining fields will be derived from the IDL during the\nnormalization process. It is an error to specify an API interface here\nwhich cannot be resolved against the associated IDL files.",
-                    "items": {
-                        "$ref": "Api"
-                    },
-                    "type": "array"
-                },
-                "logs": {
-                    "description": "Defines the logs used by this service.",
-                    "items": {
-                        "$ref": "LogDescriptor"
-                    },
-                    "type": "array"
-                },
-                "types": {
-                    "description": "A list of all proto message types included in this API service.\nTypes referenced directly or indirectly by the `apis` are\nautomatically included.  Messages which are not referenced but\nshall be included, such as types used by the `google.protobuf.Any` type,\nshould be listed here by name. Example:\n\n    types:\n    - name: google.protobuf.Int32",
-                    "items": {
-                        "$ref": "Type"
-                    },
-                    "type": "array"
-                },
-                "sourceInfo": {
-                    "$ref": "SourceInfo",
-                    "description": "Output only. The source information for this configuration if available."
-                },
-                "http": {
-                    "$ref": "Http",
-                    "description": "HTTP configuration."
-                },
-                "backend": {
-                    "$ref": "Backend",
-                    "description": "API backend configuration."
-                },
-                "systemParameters": {
-                    "$ref": "SystemParameters",
-                    "description": "System parameter configuration."
-                },
-                "documentation": {
-                    "$ref": "Documentation",
-                    "description": "Additional API documentation."
-                },
-                "monitoredResources": {
-                    "description": "Defines the monitored resources used by this service. This is required\nby the Service.monitoring and Service.logging configurations.",
-                    "items": {
-                        "$ref": "MonitoredResourceDescriptor"
-                    },
-                    "type": "array"
-                },
-                "logging": {
-                    "$ref": "Logging",
-                    "description": "Logging configuration."
-                },
                 "context": {
                     "$ref": "Context",
                     "description": "Context configuration."
@@ -1183,44 +479,100 @@
                 "monitoring": {
                     "$ref": "Monitoring",
                     "description": "Monitoring configuration."
-                }
-            },
-            "type": "object"
-        },
-        "EnumValue": {
-            "description": "Enum value definition.",
-            "id": "EnumValue",
-            "properties": {
-                "options": {
-                    "description": "Protocol buffer options.",
+                },
+                "producerProjectId": {
+                    "description": "The Google project that owns this service.",
+                    "type": "string"
+                },
+                "systemTypes": {
+                    "description": "A list of all proto message types included in this API service.\nIt serves similar purpose as [google.api.Service.types], except that\nthese types are not needed by user-defined APIs. Therefore, they will not\nshow up in the generated discovery doc. This field should only be used\nto define system APIs in ESF.",
                     "items": {
-                        "$ref": "Option"
+                        "$ref": "Type"
                     },
                     "type": "array"
                 },
-                "number": {
-                    "description": "Enum value number.",
-                    "format": "int32",
-                    "type": "integer"
+                "visibility": {
+                    "$ref": "Visibility",
+                    "description": "API visibility configuration."
+                },
+                "quota": {
+                    "$ref": "Quota",
+                    "description": "Quota configuration."
+                },
+                "billing": {
+                    "$ref": "Billing",
+                    "description": "Billing configuration."
                 },
                 "name": {
-                    "description": "Enum value name.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CustomHttpPattern": {
-            "description": "A custom pattern is used for defining custom HTTP verb.",
-            "id": "CustomHttpPattern",
-            "properties": {
-                "path": {
-                    "description": "The path matched by this custom verb.",
+                    "description": "The DNS address at which this service is available,\ne.g. `calendar.googleapis.com`.",
                     "type": "string"
                 },
-                "kind": {
-                    "description": "The name of this custom HTTP verb.",
+                "customError": {
+                    "$ref": "CustomError",
+                    "description": "Custom error configuration."
+                },
+                "title": {
+                    "description": "The product title for this service.",
                     "type": "string"
+                },
+                "endpoints": {
+                    "description": "Configuration for network endpoints.  If this is empty, then an endpoint\nwith the same name as the service is automatically generated to service all\ndefined APIs.",
+                    "items": {
+                        "$ref": "Endpoint"
+                    },
+                    "type": "array"
+                },
+                "logs": {
+                    "description": "Defines the logs used by this service.",
+                    "items": {
+                        "$ref": "LogDescriptor"
+                    },
+                    "type": "array"
+                },
+                "apis": {
+                    "description": "A list of API interfaces exported by this service. Only the `name` field\nof the google.protobuf.Api needs to be provided by the configuration\nauthor, as the remaining fields will be derived from the IDL during the\nnormalization process. It is an error to specify an API interface here\nwhich cannot be resolved against the associated IDL files.",
+                    "items": {
+                        "$ref": "Api"
+                    },
+                    "type": "array"
+                },
+                "types": {
+                    "description": "A list of all proto message types included in this API service.\nTypes referenced directly or indirectly by the `apis` are\nautomatically included.  Messages which are not referenced but\nshall be included, such as types used by the `google.protobuf.Any` type,\nshould be listed here by name. Example:\n\n    types:\n    - name: google.protobuf.Int32",
+                    "items": {
+                        "$ref": "Type"
+                    },
+                    "type": "array"
+                },
+                "sourceInfo": {
+                    "$ref": "SourceInfo",
+                    "description": "Output only. The source information for this configuration if available."
+                },
+                "http": {
+                    "$ref": "Http",
+                    "description": "HTTP configuration."
+                },
+                "systemParameters": {
+                    "$ref": "SystemParameters",
+                    "description": "System parameter configuration."
+                },
+                "backend": {
+                    "$ref": "Backend",
+                    "description": "API backend configuration."
+                },
+                "documentation": {
+                    "$ref": "Documentation",
+                    "description": "Additional API documentation."
+                },
+                "monitoredResources": {
+                    "description": "Defines the monitored resources used by this service. This is required\nby the Service.monitoring and Service.logging configurations.",
+                    "items": {
+                        "$ref": "MonitoredResourceDescriptor"
+                    },
+                    "type": "array"
+                },
+                "logging": {
+                    "$ref": "Logging",
+                    "description": "Logging configuration."
                 }
             },
             "type": "object"
@@ -1229,6 +581,11 @@
             "description": "The metadata associated with a long running operation resource.",
             "id": "OperationMetadata",
             "properties": {
+                "startTime": {
+                    "description": "The start time of the operation.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
                 "steps": {
                     "description": "Detailed status information for each step. The order is undetermined.",
                     "items": {
@@ -1247,10 +604,20 @@
                     "description": "Percentage of completion of this operation, ranging from 0 to 100.",
                     "format": "int32",
                     "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "CustomHttpPattern": {
+            "description": "A custom pattern is used for defining custom HTTP verb.",
+            "id": "CustomHttpPattern",
+            "properties": {
+                "path": {
+                    "description": "The path matched by this custom verb.",
+                    "type": "string"
                 },
-                "startTime": {
-                    "description": "The start time of the operation.",
-                    "format": "google-datetime",
+                "kind": {
+                    "description": "The name of this custom HTTP verb.",
                     "type": "string"
                 }
             },
@@ -1275,16 +642,16 @@
             "description": "Define a system parameter rule mapping system parameter definitions to\nmethods.",
             "id": "SystemParameterRule",
             "properties": {
+                "selector": {
+                    "description": "Selects the methods to which this rule applies. Use '*' to indicate all\nmethods in all APIs.\n\nRefer to selector for syntax details.",
+                    "type": "string"
+                },
                 "parameters": {
                     "description": "Define parameters. Multiple names may be defined for a parameter.\nFor a given method call, only one of them should be used. If multiple\nnames are used the behavior is implementation-dependent.\nIf none of the specified names are present the behavior is\nparameter-dependent.",
                     "items": {
                         "$ref": "SystemParameter"
                     },
                     "type": "array"
-                },
-                "selector": {
-                    "description": "Selects the methods to which this rule applies. Use '*' to indicate all\nmethods in all APIs.\n\nRefer to selector for syntax details.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1308,6 +675,25 @@
             "description": "`HttpRule` defines the mapping of an RPC method to one or more HTTP\nREST API methods. The mapping specifies how different portions of the RPC\nrequest message are mapped to URL path, URL query parameters, and\nHTTP request body. The mapping is typically specified as an\n`google.api.http` annotation on the RPC method,\nsee \"google/api/annotations.proto\" for details.\n\nThe mapping consists of a field specifying the path template and\nmethod kind.  The path template can refer to fields in the request\nmessage, as in the example below which describes a REST GET\noperation on a resource collection of messages:\n\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http).get = \"/v1/messages/{message_id}/{sub.subfield}\";\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // mapped to the URL\n      SubMessage sub = 2;    // `sub.subfield` is url-mapped\n    }\n    message Message {\n      string text = 1; // content of the resource\n    }\n\nThe same http annotation can alternatively be expressed inside the\n`GRPC API Configuration` YAML file.\n\n    http:\n      rules:\n        - selector: <proto_package_name>.Messaging.GetMessage\n          get: /v1/messages/{message_id}/{sub.subfield}\n\nThis definition enables an automatic, bidrectional mapping of HTTP\nJSON to RPC. Example:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456/foo`  | `GetMessage(message_id: \"123456\" sub: SubMessage(subfield: \"foo\"))`\n\nIn general, not only fields but also field paths can be referenced\nfrom a path pattern. Fields mapped to the path pattern cannot be\nrepeated and must have a primitive (non-message) type.\n\nAny fields in the request message which are not bound by the path\npattern automatically become (optional) HTTP query\nparameters. Assume the following definition of the request message:\n\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http).get = \"/v1/messages/{message_id}\";\n      }\n    }\n    message GetMessageRequest {\n      message SubMessage {\n        string subfield = 1;\n      }\n      string message_id = 1; // mapped to the URL\n      int64 revision = 2;    // becomes a parameter\n      SubMessage sub = 3;    // `sub.subfield` becomes a parameter\n    }\n\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to HTTP parameters must have a\nprimitive type or a repeated primitive type. Message types are not\nallowed. In the case of a repeated type, the parameter can be\nrepeated in the URL, as in `...?param=A&param=B`.\n\nFor HTTP method kinds which allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n\n    service Messaging {\n      rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          put: \"/v1/messages/{message_id}\"\n          body: \"message\"\n        };\n      }\n    }\n    message UpdateMessageRequest {\n      string message_id = 1; // mapped to the URL\n      Message message = 2;   // mapped to the body\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body.  This enables the following alternative definition of\nthe update method:\n\n    service Messaging {\n      rpc UpdateMessage(Message) returns (Message) {\n        option (google.api.http) = {\n          put: \"/v1/messages/{message_id}\"\n          body: \"*\"\n        };\n      }\n    }\n    message Message {\n      string message_id = 1;\n      string text = 2;\n    }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice of\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n    service Messaging {\n      rpc GetMessage(GetMessageRequest) returns (Message) {\n        option (google.api.http) = {\n          get: \"/v1/messages/{message_id}\"\n          additional_bindings {\n            get: \"/v1/users/{user_id}/messages/{message_id}\"\n          }\n        };\n      }\n    }\n    message GetMessageRequest {\n      string message_id = 1;\n      string user_id = 2;\n    }\n\n\nThis enables the following two alternative HTTP JSON to RPC\nmappings:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n# Rules for HTTP mapping\n\nThe rules for mapping HTTP path, query parameters, and body fields\nto the request message are as follows:\n\n1. The `body` field specifies either `*` or a field path, or is\n   omitted. If omitted, it indicates there is no HTTP request body.\n2. Leaf fields (recursive expansion of nested messages in the\n   request) can be classified into three types:\n    (a) Matched in the URL template.\n    (b) Covered by body (if body is `*`, everything except (a) fields;\n        else everything under the body field)\n    (c) All other fields.\n3. URL query parameters found in the HTTP request are mapped to (c) fields.\n4. Any body sent with an HTTP request can contain only (b) fields.\n\nThe syntax of the path template is as follows:\n\n    Template = \"/\" Segments [ Verb ] ;\n    Segments = Segment { \"/\" Segment } ;\n    Segment  = \"*\" | \"**\" | LITERAL | Variable ;\n    Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n    FieldPath = IDENT { \".\" IDENT } ;\n    Verb     = \":\" LITERAL ;\n\nThe syntax `*` matches a single path segment. The syntax `**` matches zero\nor more path segments, which must be the last part of the path except the\n`Verb`. The syntax `LITERAL` matches literal text in the path.\n\nThe syntax `Variable` matches part of the URL path as specified by its\ntemplate. A variable template must not contain other variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nIf a variable contains exactly one path segment, such as `\"{var}\"` or\n`\"{var=*}\"`, when such a variable is expanded into a URL path, all characters\nexcept `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the\nDiscovery Document as `{var}`.\n\nIf a variable contains one or more path segments, such as `\"{var=foo/*}\"`\nor `\"{var=**}\"`, when such a variable is expanded into a URL path, all\ncharacters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables\nshow up in the Discovery Document as `{+var}`.\n\nNOTE: While the single segment variable matches the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2\nSimple String Expansion, the multi segment variable **does not** match\nRFC 6570 Reserved Expansion. The reason is that the Reserved Expansion\ndoes not expand special characters like `?` and `#`, which would lead\nto invalid URLs.\n\nNOTE: the field paths in variables and in the `body` must not refer to\nrepeated fields or map fields.",
             "id": "HttpRule",
             "properties": {
+                "mediaDownload": {
+                    "$ref": "MediaDownload",
+                    "description": "Use this only for Scotty Requests. Do not use this for bytestream methods.\nFor media support, add instead [][google.bytestream.RestByteStream] as an\nAPI to your configuration."
+                },
+                "post": {
+                    "description": "Used for creating a resource.",
+                    "type": "string"
+                },
+                "additionalBindings": {
+                    "description": "Additional HTTP bindings for the selector. Nested bindings must\nnot contain an `additional_bindings` field themselves (that is,\nthe nesting may only be one level deep).",
+                    "items": {
+                        "$ref": "HttpRule"
+                    },
+                    "type": "array"
+                },
+                "responseBody": {
+                    "description": "The name of the response field whose value is mapped to the HTTP body of\nresponse. Other response fields are ignored. This field is optional. When\nnot set, the response message will be used as HTTP body of response.\nNOTE: the referred field must be not a repeated field and must be present\nat the top-level of response message type.",
+                    "type": "string"
+                },
                 "mediaUpload": {
                     "$ref": "MediaUpload",
                     "description": "Use this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead\n[][google.bytestream.RestByteStream] as an API to your\nconfiguration for Bytestream methods."
@@ -1320,14 +706,14 @@
                     "$ref": "CustomHttpPattern",
                     "description": "The custom pattern is used for specifying an HTTP method that is not\nincluded in the `pattern` field, such as HEAD, or \"*\" to leave the\nHTTP method unspecified for this rule. The wild-card rule is useful\nfor services that provide content to Web (HTML) clients."
                 },
-                "get": {
-                    "description": "Used for listing and getting information about resources.",
-                    "type": "string"
-                },
                 "patch": {
                     "description": "Used for updating a resource.",
                     "type": "string"
                 },
+                "get": {
+                    "description": "Used for listing and getting information about resources.",
+                    "type": "string"
+                },
                 "put": {
                     "description": "Used for updating a resource.",
                     "type": "string"
@@ -1339,25 +725,6 @@
                 "body": {
                     "description": "The name of the request field whose value is mapped to the HTTP body, or\n`*` for mapping all fields not captured by the path pattern to the HTTP\nbody. NOTE: the referred field must not be a repeated field and must be\npresent at the top-level of request message type.",
                     "type": "string"
-                },
-                "post": {
-                    "description": "Used for creating a resource.",
-                    "type": "string"
-                },
-                "mediaDownload": {
-                    "$ref": "MediaDownload",
-                    "description": "Use this only for Scotty Requests. Do not use this for bytestream methods.\nFor media support, add instead [][google.bytestream.RestByteStream] as an\nAPI to your configuration."
-                },
-                "additionalBindings": {
-                    "description": "Additional HTTP bindings for the selector. Nested bindings must\nnot contain an `additional_bindings` field themselves (that is,\nthe nesting may only be one level deep).",
-                    "items": {
-                        "$ref": "HttpRule"
-                    },
-                    "type": "array"
-                },
-                "responseBody": {
-                    "description": "The name of the response field whose value is mapped to the HTTP body of\nresponse. Other response fields are ignored. This field is optional. When\nnot set, the response message will be used as HTTP body of response.\nNOTE: the referred field must be not a repeated field and must be present\nat the top-level of response message type.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1482,6 +849,10 @@
             "description": "A protocol buffer option, which can be attached to a message, field,\nenumeration, etc.",
             "id": "Option",
             "properties": {
+                "name": {
+                    "description": "The option's name. For protobuf built-in options (options defined in\ndescriptor.proto), this is the short name. For example, `\"map_entry\"`.\nFor custom options, it should be the fully-qualified name. For example,\n`\"google.api.http\"`.",
+                    "type": "string"
+                },
                 "value": {
                     "additionalProperties": {
                         "description": "Properties of the object. Contains field @type with type URL.",
@@ -1489,10 +860,6 @@
                     },
                     "description": "The option's value packed in an Any message. If the value is a primitive,\nthe corresponding wrapper type defined in google/protobuf/wrappers.proto\nshould be used. If the value is an enum, it should be stored as an int32\nvalue using the google.protobuf.Int32Value type.",
                     "type": "object"
-                },
-                "name": {
-                    "description": "The option's name. For protobuf built-in options (options defined in\ndescriptor.proto), this is the short name. For example, `\"map_entry\"`.\nFor custom options, it should be the fully-qualified name. For example,\n`\"google.api.http\"`.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1522,21 +889,6 @@
             "description": "Method represents a method of an API interface.",
             "id": "Method",
             "properties": {
-                "responseTypeUrl": {
-                    "description": "The URL of the output message type.",
-                    "type": "string"
-                },
-                "options": {
-                    "description": "Any metadata attached to the method.",
-                    "items": {
-                        "$ref": "Option"
-                    },
-                    "type": "array"
-                },
-                "responseStreaming": {
-                    "description": "If true, the response is streamed.",
-                    "type": "boolean"
-                },
                 "name": {
                     "description": "The simple name of this method.",
                     "type": "string"
@@ -1560,6 +912,21 @@
                         "Syntax `proto3`."
                     ],
                     "type": "string"
+                },
+                "responseTypeUrl": {
+                    "description": "The URL of the output message type.",
+                    "type": "string"
+                },
+                "options": {
+                    "description": "Any metadata attached to the method.",
+                    "items": {
+                        "$ref": "Option"
+                    },
+                    "type": "array"
+                },
+                "responseStreaming": {
+                    "description": "If true, the response is streamed.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -1568,25 +935,8 @@
             "description": "`QuotaLimit` defines a specific limit that applies over a specified duration\nfor a limit type. There can be at most one limit for a duration and limit\ntype combination defined within a `QuotaGroup`.",
             "id": "QuotaLimit",
             "properties": {
-                "values": {
-                    "additionalProperties": {
-                        "format": "int64",
-                        "type": "string"
-                    },
-                    "description": "Tiered limit values, currently only STANDARD is supported.",
-                    "type": "object"
-                },
-                "unit": {
-                    "description": "Specify the unit of the quota limit. It uses the same syntax as\nMetric.unit. The supported unit kinds are determined by the quota\nbackend system.\n\nThe [Google Service Control](https://cloud.google.com/service-control)\nsupports the following unit components:\n* One of the time intevals:\n  * \"/min\"  for quota every minute.\n  * \"/d\"  for quota every 24 hours, starting 00:00 US Pacific Time.\n  * Otherwise the quota won't be reset by time, such as storage limit.\n* One and only one of the granted containers:\n  * \"/{project}\" quota for a project\n\nHere are some examples:\n* \"1/min/{project}\" for quota per minute per project.\n\nNote: the order of unit components is insignificant.\nThe \"1\" at the beginning is required to follow the metric unit syntax.\n\nUsed by metric-based quotas only.",
-                    "type": "string"
-                },
-                "maxLimit": {
-                    "description": "Maximum number of tokens that can be consumed during the specified\nduration. Client application developers can override the default limit up\nto this maximum. If specified, this value cannot be set to a value less\nthan the default limit. If not specified, it is set to the default limit.\n\nTo allow clients to apply overrides with no upper bound, set this to -1,\nindicating unlimited maximum quota.\n\nUsed by group-based quotas only.",
-                    "format": "int64",
-                    "type": "string"
-                },
                 "name": {
-                    "description": "Name of the quota limit. The name is used to refer to the limit when\noverriding the default limit on per-consumer basis.\n\nFor metric-based quota limits, the name must be provided, and it must be\nunique within the service. The name can only include alphanumeric\ncharacters as well as '-'.\n\nThe maximum length of the limit name is 64 characters.\n\nThe name of a limit is used as a unique identifier for this limit.\nTherefore, once a limit has been put into use, its name should be\nimmutable. You can use the display_name field to provide a user-friendly\nname for the limit. The display name can be evolved over time without\naffecting the identity of the limit.",
+                    "description": "Name of the quota limit.\n\nThe name must be provided, and it must be unique within the service. The\nname can only include alphanumeric characters as well as '-'.\n\nThe maximum length of the limit name is 64 characters.",
                     "type": "string"
                 },
                 "freeTier": {
@@ -1603,17 +953,34 @@
                     "format": "int64",
                     "type": "string"
                 },
+                "metric": {
+                    "description": "The name of the metric this quota limit applies to. The quota limits with\nthe same metric will be checked together during runtime. The metric must be\ndefined within the service config.",
+                    "type": "string"
+                },
                 "displayName": {
                     "description": "User-visible display name for this limit.\nOptional. If not set, the UI will provide a default display name based on\nthe quota configuration. This field can be used to override the default\ndisplay name generated from the configuration.",
                     "type": "string"
                 },
-                "metric": {
-                    "description": "The name of the metric this quota limit applies to. The quota limits with\nthe same metric will be checked together during runtime. The metric must be\ndefined within the service config.\n\nUsed by metric-based quotas only.",
-                    "type": "string"
-                },
                 "description": {
                     "description": "Optional. User-visible, extended description for this quota limit.\nShould be used only when more context is needed to understand this limit\nthan provided by the limit's display name (see: `display_name`).",
                     "type": "string"
+                },
+                "values": {
+                    "additionalProperties": {
+                        "format": "int64",
+                        "type": "string"
+                    },
+                    "description": "Tiered limit values. You must specify this as a key:value pair, with an\ninteger value that is the maximum number of requests allowed for the\nspecified unit. Currently only STANDARD is supported.",
+                    "type": "object"
+                },
+                "unit": {
+                    "description": "Specify the unit of the quota limit. It uses the same syntax as\nMetric.unit. The supported unit kinds are determined by the quota\nbackend system.\n\nHere are some examples:\n* \"1/min/{project}\" for quota per minute per project.\n\nNote: the order of unit components is insignificant.\nThe \"1\" at the beginning is required to follow the metric unit syntax.",
+                    "type": "string"
+                },
+                "maxLimit": {
+                    "description": "Maximum number of tokens that can be consumed during the specified\nduration. Client application developers can override the default limit up\nto this maximum. If specified, this value cannot be set to a value less\nthan the default limit. If not specified, it is set to the default limit.\n\nTo allow clients to apply overrides with no upper bound, set this to -1,\nindicating unlimited maximum quota.\n\nUsed by group-based quotas only.",
+                    "format": "int64",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1637,19 +1004,19 @@
             "description": "Customize service error responses.  For example, list any service\nspecific protobuf types that can appear in error detail lists of\nerror responses.\n\nExample:\n\n    custom_error:\n      types:\n      - google.foo.v1.CustomError\n      - google.foo.v1.AnotherError",
             "id": "CustomError",
             "properties": {
-                "types": {
-                    "description": "The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
                 "rules": {
                     "description": "The list of custom error rules that apply to individual API messages.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
                     "items": {
                         "$ref": "CustomErrorRule"
                     },
                     "type": "array"
+                },
+                "types": {
+                    "description": "The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -1658,16 +1025,16 @@
             "description": "Defines the HTTP configuration for an API service. It contains a list of\nHttpRule, each specifying the mapping of an RPC method\nto one or more HTTP REST API methods.",
             "id": "Http",
             "properties": {
+                "fullyDecodeReservedExpansion": {
+                    "description": "When set to true, URL path parmeters will be fully URI-decoded except in\ncases of single segment matches in reserved expansion, where \"%2F\" will be\nleft encoded.\n\nThe default behavior is to not decode RFC 6570 reserved characters in multi\nsegment matches.",
+                    "type": "boolean"
+                },
                 "rules": {
                     "description": "A list of HTTP configuration rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
                     "items": {
                         "$ref": "HttpRule"
                     },
                     "type": "array"
-                },
-                "fullyDecodeReservedExpansion": {
-                    "description": "When set to true, URL path parmeters will be fully URI-decoded except in\ncases of single segment matches in reserved expansion, where \"%2F\" will be\nleft encoded.\n\nThe default behavior is to not decode RFC 6570 reserved characters in multi\nsegment matches.",
-                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -1720,27 +1087,6 @@
             },
             "type": "object"
         },
-        "Monitoring": {
-            "description": "Monitoring configuration of the service.\n\nThe example below shows how to configure monitored resources and metrics\nfor monitoring. In the example, a monitored resource and two metrics are\ndefined. The `library.googleapis.com/book/returned_count` metric is sent\nto both producer and consumer projects, whereas the\n`library.googleapis.com/book/overdue_count` metric is only sent to the\nconsumer project.\n\n    monitored_resources:\n    - type: library.googleapis.com/branch\n      labels:\n      - key: /city\n        description: The city where the library branch is located in.\n      - key: /name\n        description: The name of the branch.\n    metrics:\n    - name: library.googleapis.com/book/returned_count\n      metric_kind: DELTA\n      value_type: INT64\n      labels:\n      - key: /customer_id\n    - name: library.googleapis.com/book/overdue_count\n      metric_kind: GAUGE\n      value_type: INT64\n      labels:\n      - key: /customer_id\n    monitoring:\n      producer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        metrics:\n        - library.googleapis.com/book/returned_count\n      consumer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        metrics:\n        - library.googleapis.com/book/returned_count\n        - library.googleapis.com/book/overdue_count",
-            "id": "Monitoring",
-            "properties": {
-                "consumerDestinations": {
-                    "description": "Monitoring configurations for sending metrics to the consumer project.\nThere can be multiple consumer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none consumer destination.",
-                    "items": {
-                        "$ref": "MonitoringDestination"
-                    },
-                    "type": "array"
-                },
-                "producerDestinations": {
-                    "description": "Monitoring configurations for sending metrics to the producer project.\nThere can be multiple producer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none producer destination.",
-                    "items": {
-                        "$ref": "MonitoringDestination"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "Field": {
             "description": "A single field of a message type.",
             "id": "Field",
@@ -1824,10 +1170,6 @@
                     "format": "int32",
                     "type": "integer"
                 },
-                "packed": {
-                    "description": "Whether to use alternative packed wire representation.",
-                    "type": "boolean"
-                },
                 "cardinality": {
                     "description": "The field cardinality.",
                     "enum": [
@@ -1843,6 +1185,31 @@
                         "For repeated fields."
                     ],
                     "type": "string"
+                },
+                "packed": {
+                    "description": "Whether to use alternative packed wire representation.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "Monitoring": {
+            "description": "Monitoring configuration of the service.\n\nThe example below shows how to configure monitored resources and metrics\nfor monitoring. In the example, a monitored resource and two metrics are\ndefined. The `library.googleapis.com/book/returned_count` metric is sent\nto both producer and consumer projects, whereas the\n`library.googleapis.com/book/overdue_count` metric is only sent to the\nconsumer project.\n\n    monitored_resources:\n    - type: library.googleapis.com/branch\n      labels:\n      - key: /city\n        description: The city where the library branch is located in.\n      - key: /name\n        description: The name of the branch.\n    metrics:\n    - name: library.googleapis.com/book/returned_count\n      metric_kind: DELTA\n      value_type: INT64\n      labels:\n      - key: /customer_id\n    - name: library.googleapis.com/book/overdue_count\n      metric_kind: GAUGE\n      value_type: INT64\n      labels:\n      - key: /customer_id\n    monitoring:\n      producer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        metrics:\n        - library.googleapis.com/book/returned_count\n      consumer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        metrics:\n        - library.googleapis.com/book/returned_count\n        - library.googleapis.com/book/overdue_count",
+            "id": "Monitoring",
+            "properties": {
+                "producerDestinations": {
+                    "description": "Monitoring configurations for sending metrics to the producer project.\nThere can be multiple producer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none producer destination.",
+                    "items": {
+                        "$ref": "MonitoringDestination"
+                    },
+                    "type": "array"
+                },
+                "consumerDestinations": {
+                    "description": "Monitoring configurations for sending metrics to the consumer project.\nThere can be multiple consumer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none consumer destination.",
+                    "items": {
+                        "$ref": "MonitoringDestination"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -1851,17 +1218,6 @@
             "description": "Enum type definition.",
             "id": "Enum",
             "properties": {
-                "enumvalue": {
-                    "description": "Enum value definitions.",
-                    "items": {
-                        "$ref": "EnumValue"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "Enum type name.",
-                    "type": "string"
-                },
                 "options": {
                     "description": "Protocol buffer options.",
                     "items": {
@@ -1884,6 +1240,17 @@
                 "sourceContext": {
                     "$ref": "SourceContext",
                     "description": "The source context."
+                },
+                "enumvalue": {
+                    "description": "Enum value definitions.",
+                    "items": {
+                        "$ref": "EnumValue"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "Enum type name.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1927,13 +1294,6 @@
             "description": "A protocol buffer message type.",
             "id": "Type",
             "properties": {
-                "options": {
-                    "description": "The protocol buffer options.",
-                    "items": {
-                        "$ref": "Option"
-                    },
-                    "type": "array"
-                },
                 "fields": {
                     "description": "The list of fields.",
                     "items": {
@@ -1952,10 +1312,6 @@
                     },
                     "type": "array"
                 },
-                "sourceContext": {
-                    "$ref": "SourceContext",
-                    "description": "The source context."
-                },
                 "syntax": {
                     "description": "The source syntax.",
                     "enum": [
@@ -1967,6 +1323,17 @@
                         "Syntax `proto3`."
                     ],
                     "type": "string"
+                },
+                "sourceContext": {
+                    "$ref": "SourceContext",
+                    "description": "The source context."
+                },
+                "options": {
+                    "description": "The protocol buffer options.",
+                    "items": {
+                        "$ref": "Option"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -1995,6 +1362,639 @@
                 }
             },
             "type": "object"
+        },
+        "AuthorizationConfig": {
+            "description": "Configuration of authorization.\n\nThis section determines the authorization provider, if unspecified, then no\nauthorization check will be done.\n\nExample:\n\n    experimental:\n      authorization:\n        provider: firebaserules.googleapis.com",
+            "id": "AuthorizationConfig",
+            "properties": {
+                "provider": {
+                    "description": "The name of the authorization provider, such as\nfirebaserules.googleapis.com.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DocumentationRule": {
+            "description": "A documentation rule provides information about individual API elements.",
+            "id": "DocumentationRule",
+            "properties": {
+                "deprecationDescription": {
+                    "description": "Deprecation description of the selected element(s). It can be provided if an\nelement is marked as `deprecated`.",
+                    "type": "string"
+                },
+                "selector": {
+                    "description": "The selector is a comma-separated list of patterns. Each pattern is a\nqualified name of the element which may end in \"*\", indicating a wildcard.\nWildcards are only allowed at the end and for a whole component of the\nqualified name, i.e. \"foo.*\" is ok, but not \"foo.b*\" or \"foo.*.bar\". To\nspecify a default for all applicable elements, the whole pattern \"*\"\nis used.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Description of the selected API(s).",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ContextRule": {
+            "description": "A context rule provides information about the context for an individual API\nelement.",
+            "id": "ContextRule",
+            "properties": {
+                "provided": {
+                    "description": "A list of full type names of provided contexts.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "requested": {
+                    "description": "A list of full type names of requested contexts.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "selector": {
+                    "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SourceContext": {
+            "description": "`SourceContext` represents information about the source of a\nprotobuf element, like the file in which it is defined.",
+            "id": "SourceContext",
+            "properties": {
+                "fileName": {
+                    "description": "The path-qualified name of the .proto file that contained the associated\nprotobuf element.  For example: `\"google/protobuf/source_context.proto\"`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MetricDescriptor": {
+            "description": "Defines a metric type and its schema. Once a metric descriptor is created,\ndeleting or altering it stops data collection and makes the metric type's\nexisting data unusable.",
+            "id": "MetricDescriptor",
+            "properties": {
+                "type": {
+                    "description": "The metric type, including its DNS name prefix. The type is not\nURL-encoded.  All user-defined custom metric types have the DNS name\n`custom.googleapis.com`.  Metric types should use a natural hierarchical\ngrouping. For example:\n\n    \"custom.googleapis.com/invoice/paid/amount\"\n    \"appengine.googleapis.com/http/server/response_latencies\"",
+                    "type": "string"
+                },
+                "valueType": {
+                    "description": "Whether the measurement is an integer, a floating-point number, etc.\nSome combinations of `metric_kind` and `value_type` might not be supported.",
+                    "enum": [
+                        "VALUE_TYPE_UNSPECIFIED",
+                        "BOOL",
+                        "INT64",
+                        "DOUBLE",
+                        "STRING",
+                        "DISTRIBUTION",
+                        "MONEY"
+                    ],
+                    "enumDescriptions": [
+                        "Do not use this default value.",
+                        "The value is a boolean.\nThis value type can be used only if the metric kind is `GAUGE`.",
+                        "The value is a signed 64-bit integer.",
+                        "The value is a double precision floating point number.",
+                        "The value is a text string.\nThis value type can be used only if the metric kind is `GAUGE`.",
+                        "The value is a `Distribution`.",
+                        "The value is money."
+                    ],
+                    "type": "string"
+                },
+                "metricKind": {
+                    "description": "Whether the metric records instantaneous values, changes to a value, etc.\nSome combinations of `metric_kind` and `value_type` might not be supported.",
+                    "enum": [
+                        "METRIC_KIND_UNSPECIFIED",
+                        "GAUGE",
+                        "DELTA",
+                        "CUMULATIVE"
+                    ],
+                    "enumDescriptions": [
+                        "Do not use this default value.",
+                        "An instantaneous measurement of a value.",
+                        "The change in a value during a time interval.",
+                        "A value accumulated over a time interval.  Cumulative\nmeasurements in a time series should have the same start time\nand increasing end times, until an event resets the cumulative\nvalue to zero and sets a new start time for the following\npoints."
+                    ],
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "A concise name for the metric, which can be displayed in user interfaces.\nUse sentence case without an ending period, for example \"Request count\".\nThis field is optional but it is recommended to be set for any metrics\nassociated with user-visible concepts, such as Quota.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "A detailed description of the metric, which can be used in documentation.",
+                    "type": "string"
+                },
+                "unit": {
+                    "description": "The unit in which the metric value is reported. It is only applicable\nif the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The\nsupported units are a subset of [The Unified Code for Units of\nMeasure](http://unitsofmeasure.org/ucum.html) standard:\n\n**Basic units (UNIT)**\n\n* `bit`   bit\n* `By`    byte\n* `s`     second\n* `min`   minute\n* `h`     hour\n* `d`     day\n\n**Prefixes (PREFIX)**\n\n* `k`     kilo    (10**3)\n* `M`     mega    (10**6)\n* `G`     giga    (10**9)\n* `T`     tera    (10**12)\n* `P`     peta    (10**15)\n* `E`     exa     (10**18)\n* `Z`     zetta   (10**21)\n* `Y`     yotta   (10**24)\n* `m`     milli   (10**-3)\n* `u`     micro   (10**-6)\n* `n`     nano    (10**-9)\n* `p`     pico    (10**-12)\n* `f`     femto   (10**-15)\n* `a`     atto    (10**-18)\n* `z`     zepto   (10**-21)\n* `y`     yocto   (10**-24)\n* `Ki`    kibi    (2**10)\n* `Mi`    mebi    (2**20)\n* `Gi`    gibi    (2**30)\n* `Ti`    tebi    (2**40)\n\n**Grammar**\n\nThe grammar includes the dimensionless unit `1`, such as `1/s`.\n\nThe grammar also includes these connectors:\n\n* `/`    division (as an infix operator, e.g. `1/s`).\n* `.`    multiplication (as an infix operator, e.g. `GBy.d`)\n\nThe grammar for a unit is as follows:\n\n    Expression = Component { \".\" Component } { \"/\" Component } ;\n\n    Component = [ PREFIX ] UNIT [ Annotation ]\n              | Annotation\n              | \"1\"\n              ;\n\n    Annotation = \"{\" NAME \"}\" ;\n\nNotes:\n\n* `Annotation` is just a comment if it follows a `UNIT` and is\n   equivalent to `1` if it is used alone. For examples,\n   `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.\n* `NAME` is a sequence of non-blank printable ASCII characters not\n   containing '{' or '}'.",
+                    "type": "string"
+                },
+                "labels": {
+                    "description": "The set of labels that can be used to describe a specific\ninstance of this metric type. For example, the\n`appengine.googleapis.com/http/server/response_latencies` metric\ntype has a label for the HTTP response code, `response_code`, so\nyou can look at latencies for successful responses or just\nfor responses that failed.",
+                    "items": {
+                        "$ref": "LabelDescriptor"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The resource name of the metric descriptor.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Billing": {
+            "description": "Billing related configuration of the service.\n\nThe following example shows how to configure monitored resources and metrics\nfor billing:\n\n    monitored_resources:\n    - type: library.googleapis.com/branch\n      labels:\n      - key: /city\n        description: The city where the library branch is located in.\n      - key: /name\n        description: The name of the branch.\n    metrics:\n    - name: library.googleapis.com/book/borrowed_count\n      metric_kind: DELTA\n      value_type: INT64\n    billing:\n      consumer_destinations:\n      - monitored_resource: library.googleapis.com/branch\n        metrics:\n        - library.googleapis.com/book/borrowed_count",
+            "id": "Billing",
+            "properties": {
+                "consumerDestinations": {
+                    "description": "Billing configurations for sending metrics to the consumer project.\nThere can be multiple consumer destinations per service, each one must have\na different monitored resource type. A metric can be used in at most\none consumer destination.",
+                    "items": {
+                        "$ref": "BillingDestination"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListEnabledServicesResponse": {
+            "description": "Response message for `ListEnabledServices` method.",
+            "id": "ListEnabledServicesResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Token that can be passed to `ListEnabledServices` to resume a paginated\nquery.",
+                    "type": "string"
+                },
+                "services": {
+                    "description": "Services enabled for the specified parent.",
+                    "items": {
+                        "$ref": "PublishedService"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Endpoint": {
+            "description": "`Endpoint` describes a network endpoint that serves a set of APIs.\nA service may expose any number of endpoints, and all endpoints share the\nsame service configuration, such as quota configuration and monitoring\nconfiguration.\n\nExample service configuration:\n\n    name: library-example.googleapis.com\n    endpoints:\n      # Below entry makes 'google.example.library.v1.Library'\n      # API be served from endpoint address library-example.googleapis.com.\n      # It also allows HTTP OPTIONS calls to be passed to the backend, for\n      # it to decide whether the subsequent cross-origin request is\n      # allowed to proceed.\n    - name: library-example.googleapis.com\n      allow_cors: true",
+            "id": "Endpoint",
+            "properties": {
+                "features": {
+                    "description": "The list of features enabled on this endpoint.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "apis": {
+                    "description": "The list of APIs served by this endpoint.\n\nIf no APIs are specified this translates to \"all APIs\" exported by the\nservice, as defined in the top-level service configuration.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "allowCors": {
+                    "description": "Allowing\n[CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka\ncross-domain traffic, would allow the backends served from this endpoint to\nreceive and respond to HTTP OPTIONS requests. The response will be used by\nthe browser to determine whether the subsequent cross-origin request is\nallowed to proceed.",
+                    "type": "boolean"
+                },
+                "aliases": {
+                    "description": "DEPRECATED: This field is no longer supported. Instead of using aliases,\nplease specify multiple google.api.Endpoint for each of the intended\naliases.\n\nAdditional names that this endpoint will be hosted on.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "target": {
+                    "description": "The specification of an Internet routable address of API frontend that will\nhandle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary).\nIt should be either a valid IPv4 address or a fully-qualified domain name.\nFor example, \"8.8.8.8\" or \"myservice.appspot.com\".",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The canonical name of this endpoint.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "OAuthRequirements": {
+            "description": "OAuth scopes are a way to define data and permissions on data. For example,\nthere are scopes defined for \"Read-only access to Google Calendar\" and\n\"Access to Cloud Platform\". Users can consent to a scope for an application,\ngiving it permission to access that data on their behalf.\n\nOAuth scope specifications should be fairly coarse grained; a user will need\nto see and understand the text description of what your scope means.\n\nIn most cases: use one or at most two OAuth scopes for an entire family of\nproducts. If your product has multiple APIs, you should probably be sharing\nthe OAuth scope across all of those APIs.\n\nWhen you need finer grained OAuth consent screens: talk with your product\nmanagement about how developers will use them in practice.\n\nPlease note that even though each of the canonical scopes is enough for a\nrequest to be accepted and passed to the backend, a request can still fail\ndue to the backend requiring additional scopes or permissions.",
+            "id": "OAuthRequirements",
+            "properties": {
+                "canonicalScopes": {
+                    "description": "The list of publicly documented OAuth scopes that are allowed access. An\nOAuth token containing any of these scopes will be accepted.\n\nExample:\n\n     canonical_scopes: https://www.googleapis.com/auth/calendar,\n                       https://www.googleapis.com/auth/calendar.read",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Usage": {
+            "description": "Configuration controlling usage of a service.",
+            "id": "Usage",
+            "properties": {
+                "producerNotificationChannel": {
+                    "description": "The full resource name of a channel used for sending notifications to the\nservice producer.\n\nGoogle Service Management currently only supports\n[Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification\nchannel. To use Google Cloud Pub/Sub as the channel, this must be the name\nof a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format\ndocumented in https://cloud.google.com/pubsub/docs/overview.",
+                    "type": "string"
+                },
+                "rules": {
+                    "description": "A list of usage rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
+                    "items": {
+                        "$ref": "UsageRule"
+                    },
+                    "type": "array"
+                },
+                "requirements": {
+                    "description": "Requirements that must be satisfied before a consumer project can use the\nservice. Each requirement is of the form <service.name>/<requirement-id>;\nfor example 'serviceusage.googleapis.com/billing-enabled'.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Context": {
+            "description": "`Context` defines which contexts an API requests.\n\nExample:\n\n    context:\n      rules:\n      - selector: \"*\"\n        requested:\n        - google.rpc.context.ProjectContext\n        - google.rpc.context.OriginContext\n\nThe above specifies that all methods in the API request\n`google.rpc.context.ProjectContext` and\n`google.rpc.context.OriginContext`.\n\nAvailable context types are defined in package\n`google.rpc.context`.",
+            "id": "Context",
+            "properties": {
+                "rules": {
+                    "description": "A list of RPC context rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
+                    "items": {
+                        "$ref": "ContextRule"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "LogDescriptor": {
+            "description": "A description of a log type. Example in YAML format:\n\n    - name: library.googleapis.com/activity_history\n      description: The history of borrowing and returning library items.\n      display_name: Activity\n      labels:\n      - key: /customer_id\n        description: Identifier of a library customer",
+            "id": "LogDescriptor",
+            "properties": {
+                "labels": {
+                    "description": "The set of labels that are available to describe a specific log entry.\nRuntime requests that contain labels not specified here are\nconsidered invalid.",
+                    "items": {
+                        "$ref": "LabelDescriptor"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The name of the log. It must be less than 512 characters long and can\ninclude the following characters: upper- and lower-case alphanumeric\ncharacters [A-Za-z0-9], and punctuation characters including\nslash, underscore, hyphen, period [/_-.].",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "The human-readable name for this log. This information appears on\nthe user interface and should be concise.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "A human-readable description of this log. This information appears in\nthe documentation and can contain details.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CustomErrorRule": {
+            "description": "A custom error rule.",
+            "id": "CustomErrorRule",
+            "properties": {
+                "isErrorType": {
+                    "description": "Mark this message as possible payload in error response.  Otherwise,\nobjects of this type will be filtered when they appear in error payload.",
+                    "type": "boolean"
+                },
+                "selector": {
+                    "description": "Selects messages to which this rule applies.\n\nRefer to selector for syntax details.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MonitoredResourceDescriptor": {
+            "description": "An object that describes the schema of a MonitoredResource object using a\ntype name and a set of labels.  For example, the monitored resource\ndescriptor for Google Compute Engine VM instances has a type of\n`\"gce_instance\"` and specifies the use of the labels `\"instance_id\"` and\n`\"zone\"` to identify particular VM instances.\n\nDifferent APIs can support different monitored resource types. APIs generally\nprovide a `list` method that returns the monitored resource descriptors used\nby the API.",
+            "id": "MonitoredResourceDescriptor",
+            "properties": {
+                "type": {
+                    "description": "Required. The monitored resource type. For example, the type\n`\"cloudsql_database\"` represents databases in Google Cloud SQL.\nThe maximum length of this value is 256 characters.",
+                    "type": "string"
+                },
+                "labels": {
+                    "description": "Required. A set of labels used to describe instances of this monitored\nresource type. For example, an individual Google Cloud SQL database is\nidentified by values for the labels `\"database_id\"` and `\"zone\"`.",
+                    "items": {
+                        "$ref": "LabelDescriptor"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "Optional. The resource name of the monitored resource descriptor:\n`\"projects/{project_id}/monitoredResourceDescriptors/{type}\"` where\n{type} is the value of the `type` field in this object and\n{project_id} is a project ID that provides API-specific context for\naccessing the type.  APIs that do not use project information can use the\nresource name format `\"monitoredResourceDescriptors/{type}\"`.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Optional. A detailed description of the monitored resource type that might\nbe used in documentation.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "Optional. A concise name for the monitored resource type that might be\ndisplayed in user interfaces. It should be a Title Cased Noun Phrase,\nwithout any article or other determiners. For example,\n`\"Google Cloud SQL Database\"`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CustomAuthRequirements": {
+            "description": "Configuration for a custom authentication provider.",
+            "id": "CustomAuthRequirements",
+            "properties": {
+                "provider": {
+                    "description": "A configuration string containing connection information for the\nauthentication provider, typically formatted as a SmartService string\n(go/smartservice).",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MediaDownload": {
+            "description": "Defines the Media configuration for a service in case of a download.\nUse this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead [][google.bytestream.RestByteStream] as an API to\nyour configuration for Bytestream methods.",
+            "id": "MediaDownload",
+            "properties": {
+                "maxDirectDownloadSize": {
+                    "description": "Optional maximum acceptable size for direct download.\nThe size is specified in bytes.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "dropzone": {
+                    "description": "Name of the Scotty dropzone to use for the current API.",
+                    "type": "string"
+                },
+                "useDirectDownload": {
+                    "description": "A boolean that determines if direct download from ESF should be used for\ndownload of this media.",
+                    "type": "boolean"
+                },
+                "completeNotification": {
+                    "description": "A boolean that determines whether a notification for the completion of a\ndownload should be sent to the backend.",
+                    "type": "boolean"
+                },
+                "enabled": {
+                    "description": "Whether download is enabled.",
+                    "type": "boolean"
+                },
+                "downloadService": {
+                    "description": "DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.\n\nSpecify name of the download service if one is used for download.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DisableServiceRequest": {
+            "description": "Request message for DisableService method.",
+            "id": "DisableServiceRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "SearchServicesResponse": {
+            "description": "Response message for SearchServices method.",
+            "id": "SearchServicesResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Token that can be passed to `ListAvailableServices` to resume a paginated\nquery.",
+                    "type": "string"
+                },
+                "services": {
+                    "description": "Services available publicly or available to the authenticated caller.",
+                    "items": {
+                        "$ref": "PublishedService"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "MediaUpload": {
+            "description": "Defines the Media configuration for a service in case of an upload.\nUse this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead [][google.bytestream.RestByteStream] as an API to\nyour configuration for Bytestream methods.",
+            "id": "MediaUpload",
+            "properties": {
+                "dropzone": {
+                    "description": "Name of the Scotty dropzone to use for the current API.",
+                    "type": "string"
+                },
+                "startNotification": {
+                    "description": "Whether to receive a notification on the start of media upload.",
+                    "type": "boolean"
+                },
+                "uploadService": {
+                    "description": "DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.\n\nSpecify name of the upload service if one is used for upload.",
+                    "type": "string"
+                },
+                "maxSize": {
+                    "description": "Optional maximum acceptable size for an upload.\nThe size is specified in bytes.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "mimeTypes": {
+                    "description": "An array of mimetype patterns. Esf will only accept uploads that match one\nof the given patterns.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "enabled": {
+                    "description": "Whether upload is enabled.",
+                    "type": "boolean"
+                },
+                "progressNotification": {
+                    "description": "Whether to receive a notification for progress changes of media upload.",
+                    "type": "boolean"
+                },
+                "completeNotification": {
+                    "description": "A boolean that determines whether a notification for the completion of an\nupload should be sent to the backend. These notifications will not be seen\nby the client and will not consume quota.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "BillingDestination": {
+            "description": "Configuration of a specific billing destination (Currently only support\nbill against consumer project).",
+            "id": "BillingDestination",
+            "properties": {
+                "monitoredResource": {
+                    "description": "The monitored resource type. The type must be defined in\nService.monitored_resources section.",
+                    "type": "string"
+                },
+                "metrics": {
+                    "description": "Names of the metrics to report to this billing destination.\nEach name must be defined in Service.metrics section.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "UsageRule": {
+            "description": "Usage configuration rules for the service.\n\nNOTE: Under development.\n\n\nUse this rule to configure unregistered calls for the service. Unregistered\ncalls are calls that do not contain consumer project identity.\n(Example: calls that do not contain an API key).\nBy default, API methods do not allow unregistered calls, and each method call\nmust be identified by a consumer project identity. Use this rule to\nallow/disallow unregistered calls.\n\nExample of an API that wants to allow unregistered calls for entire service.\n\n    usage:\n      rules:\n      - selector: \"*\"\n        allow_unregistered_calls: true\n\nExample of a method that wants to allow unregistered calls.\n\n    usage:\n      rules:\n      - selector: \"google.example.library.v1.LibraryService.CreateBook\"\n        allow_unregistered_calls: true",
+            "id": "UsageRule",
+            "properties": {
+                "allowUnregisteredCalls": {
+                    "description": "True, if the method allows unregistered calls; false otherwise.",
+                    "type": "boolean"
+                },
+                "selector": {
+                    "description": "Selects the methods to which this rule applies. Use '*' to indicate all\nmethods in all APIs.\n\nRefer to selector for syntax details.",
+                    "type": "string"
+                },
+                "skipServiceControl": {
+                    "description": "True, if the method should skip service control. If so, no control plane\nfeature (like quota and billing) will be enabled.\nThis flag is used by ESP to allow some Endpoints customers to bypass\nGoogle internal checks.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "AuthRequirement": {
+            "description": "User-defined authentication requirements, including support for\n[JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).",
+            "id": "AuthRequirement",
+            "properties": {
+                "audiences": {
+                    "description": "NOTE: This will be deprecated soon, once AuthProvider.audiences is\nimplemented and accepted in all the runtime components.\n\nThe list of JWT\n[audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).\nthat are allowed to access. A JWT containing any of these audiences will\nbe accepted. When this setting is absent, only JWTs with audience\n\"https://Service_name/API_name\"\nwill be accepted. For example, if no audiences are in the setting,\nLibraryService API will only accept JWTs with the following audience\n\"https://library-example.googleapis.com/google.example.library.v1.LibraryService\".\n\nExample:\n\n    audiences: bookstore_android.apps.googleusercontent.com,\n               bookstore_web.apps.googleusercontent.com",
+                    "type": "string"
+                },
+                "providerId": {
+                    "description": "id from authentication provider.\n\nExample:\n\n    provider_id: bookstore_auth",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Documentation": {
+            "description": "`Documentation` provides the information for describing a service.\n\nExample:\n<pre><code>documentation:\n  summary: >\n    The Google Calendar API gives access\n    to most calendar features.\n  pages:\n  - name: Overview\n    content: &#40;== include google/foo/overview.md ==&#41;\n  - name: Tutorial\n    content: &#40;== include google/foo/tutorial.md ==&#41;\n    subpages;\n    - name: Java\n      content: &#40;== include google/foo/tutorial_java.md ==&#41;\n  rules:\n  - selector: google.calendar.Calendar.Get\n    description: >\n      ...\n  - selector: google.calendar.Calendar.Put\n    description: >\n      ...\n</code></pre>\nDocumentation is provided in markdown syntax. In addition to\nstandard markdown features, definition lists, tables and fenced\ncode blocks are supported. Section headers can be provided and are\ninterpreted relative to the section nesting of the context where\na documentation fragment is embedded.\n\nDocumentation from the IDL is merged with documentation defined\nvia the config at normalization time, where documentation provided\nby config rules overrides IDL provided.\n\nA number of constructs specific to the API platform are supported\nin documentation text.\n\nIn order to reference a proto element, the following\nnotation can be used:\n<pre><code>&#91;fully.qualified.proto.name]&#91;]</code></pre>\nTo override the display text used for the link, this can be used:\n<pre><code>&#91;display text]&#91;fully.qualified.proto.name]</code></pre>\nText can be excluded from doc using the following notation:\n<pre><code>&#40;-- internal comment --&#41;</code></pre>\nComments can be made conditional using a visibility label. The below\ntext will be only rendered if the `BETA` label is available:\n<pre><code>&#40;--BETA: comment for BETA users --&#41;</code></pre>\nA few directives are available in documentation. Note that\ndirectives must appear on a single line to be properly\nidentified. The `include` directive includes a markdown file from\nan external source:\n<pre><code>&#40;== include path/to/file ==&#41;</code></pre>\nThe `resource_for` directive marks a message to be the resource of\na collection in REST view. If it is not specified, tools attempt\nto infer the resource from the operations in a collection:\n<pre><code>&#40;== resource_for v1.shelves.books ==&#41;</code></pre>\nThe directive `suppress_warning` does not directly affect documentation\nand is documented together with service config validation.",
+            "id": "Documentation",
+            "properties": {
+                "summary": {
+                    "description": "A short summary of what the service does. Can only be provided by\nplain text.",
+                    "type": "string"
+                },
+                "documentationRootUrl": {
+                    "description": "The URL to the root of documentation.",
+                    "type": "string"
+                },
+                "overview": {
+                    "description": "Declares a single overview page. For example:\n<pre><code>documentation:\n  summary: ...\n  overview: &#40;== include overview.md ==&#41;\n</code></pre>\nThis is a shortcut for the following declaration (using pages style):\n<pre><code>documentation:\n  summary: ...\n  pages:\n  - name: Overview\n    content: &#40;== include overview.md ==&#41;\n</code></pre>\nNote: you cannot specify both `overview` field and `pages` field.",
+                    "type": "string"
+                },
+                "rules": {
+                    "description": "A list of documentation rules that apply to individual API elements.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
+                    "items": {
+                        "$ref": "DocumentationRule"
+                    },
+                    "type": "array"
+                },
+                "pages": {
+                    "description": "The top level pages for the documentation set.",
+                    "items": {
+                        "$ref": "Page"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "BackendRule": {
+            "description": "A backend rule provides configuration for an individual API element.",
+            "id": "BackendRule",
+            "properties": {
+                "deadline": {
+                    "description": "The number of seconds to wait for a response from a request.  The default\ndeadline for gRPC is infinite (no deadline) and HTTP requests is 5 seconds.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "minDeadline": {
+                    "description": "Minimum deadline in seconds needed for this method. Calls having deadline\nvalue lower than this will be rejected.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "address": {
+                    "description": "The address of the API backend.",
+                    "type": "string"
+                },
+                "selector": {
+                    "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AuthenticationRule": {
+            "description": "Authentication rules for the service.\n\nBy default, if a method has any authentication requirements, every request\nmust include a valid credential matching one of the requirements.\nIt's an error to include more than one kind of credential in a single\nrequest.\n\nIf a method doesn't have any auth requirements, request credentials will be\nignored.",
+            "id": "AuthenticationRule",
+            "properties": {
+                "customAuth": {
+                    "$ref": "CustomAuthRequirements",
+                    "description": "Configuration for custom authentication."
+                },
+                "oauth": {
+                    "$ref": "OAuthRequirements",
+                    "description": "The requirements for OAuth credentials."
+                },
+                "requirements": {
+                    "description": "Requirements for additional authentication providers.",
+                    "items": {
+                        "$ref": "AuthRequirement"
+                    },
+                    "type": "array"
+                },
+                "allowWithoutCredential": {
+                    "description": "Whether to allow requests without a credential. The credential can be\nan OAuth token, Google cookies (first-party auth) or EndUserCreds.\n\nFor requests without credentials, if the service control environment is\nspecified, each incoming request **must** be associated with a service\nconsumer. This can be done by passing an API key that belongs to a consumer\nproject.",
+                    "type": "boolean"
+                },
+                "selector": {
+                    "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Api": {
+            "description": "Api is a light-weight descriptor for an API Interface.\n\nInterfaces are also described as \"protocol buffer services\" in some contexts,\nsuch as by the \"service\" keyword in a .proto file, but they are different\nfrom API Services, which represent a concrete implementation of an interface\nas opposed to simply a description of methods and bindings. They are also\nsometimes simply referred to as \"APIs\" in other contexts, such as the name of\nthis message itself. See https://cloud.google.com/apis/design/glossary for\ndetailed terminology.",
+            "id": "Api",
+            "properties": {
+                "syntax": {
+                    "description": "The source syntax of the service.",
+                    "enum": [
+                        "SYNTAX_PROTO2",
+                        "SYNTAX_PROTO3"
+                    ],
+                    "enumDescriptions": [
+                        "Syntax `proto2`.",
+                        "Syntax `proto3`."
+                    ],
+                    "type": "string"
+                },
+                "sourceContext": {
+                    "$ref": "SourceContext",
+                    "description": "Source context for the protocol buffer service represented by this\nmessage."
+                },
+                "version": {
+                    "description": "A version string for this interface. If specified, must have the form\n`major-version.minor-version`, as in `1.10`. If the minor version is\nomitted, it defaults to zero. If the entire version field is empty, the\nmajor version is derived from the package name, as outlined below. If the\nfield is not empty, the version in the package name will be verified to be\nconsistent with what is provided here.\n\nThe versioning schema uses [semantic\nversioning](http://semver.org) where the major version number\nindicates a breaking change and the minor version an additive,\nnon-breaking change. Both version numbers are signals to users\nwhat to expect from different versions, and should be carefully\nchosen based on the product plan.\n\nThe major version is also reflected in the package name of the\ninterface, which must end in `v<major-version>`, as in\n`google.feature.v1`. For major versions 0 and 1, the suffix can\nbe omitted. Zero major versions must only be used for\nexperimental, non-GA interfaces.\n",
+                    "type": "string"
+                },
+                "mixins": {
+                    "description": "Included interfaces. See Mixin.",
+                    "items": {
+                        "$ref": "Mixin"
+                    },
+                    "type": "array"
+                },
+                "options": {
+                    "description": "Any metadata attached to the interface.",
+                    "items": {
+                        "$ref": "Option"
+                    },
+                    "type": "array"
+                },
+                "methods": {
+                    "description": "The methods of this interface, in unspecified order.",
+                    "items": {
+                        "$ref": "Method"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The fully qualified name of this interface, including package name\nfollowed by the interface's simple name.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/sheets__v4.json b/discovery/googleapis/sheets__v4.json
index 380f771..a7b3298 100644
--- a/discovery/googleapis/sheets__v4.json
+++ b/discovery/googleapis/sheets__v4.json
@@ -2,9 +2,6 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/spreadsheets": {
-                    "description": "View and manage your spreadsheets in Google Drive"
-                },
                 "https://www.googleapis.com/auth/drive.file": {
                     "description": "View and manage Google Drive files and folders that you have opened or created with this app"
                 },
@@ -16,6 +13,9 @@
                 },
                 "https://www.googleapis.com/auth/drive": {
                     "description": "View and manage the files in your Google Drive"
+                },
+                "https://www.googleapis.com/auth/spreadsheets": {
+                    "description": "View and manage your spreadsheets in Google Drive"
                 }
             }
         }
@@ -37,6 +37,61 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
+        "$.xgafv": {
+            "description": "V1 error format.",
+            "enum": [
+                "1",
+                "2"
+            ],
+            "enumDescriptions": [
+                "v1 error format",
+                "v2 error format"
+            ],
+            "location": "query",
+            "type": "string"
+        },
+        "alt": {
+            "default": "json",
+            "description": "Data format for response.",
+            "enum": [
+                "json",
+                "media",
+                "proto"
+            ],
+            "enumDescriptions": [
+                "Responses with Content-Type of application/json",
+                "Media download with context-dependent Content-Type",
+                "Responses with Content-Type of application/x-protobuf"
+            ],
+            "location": "query",
+            "type": "string"
+        },
         "access_token": {
             "description": "OAuth access token.",
             "location": "query",
@@ -58,68 +113,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
         "oauth_token": {
             "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
-            "location": "query",
-            "type": "string"
-        },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "$.xgafv": {
-            "description": "V1 error format.",
-            "enum": [
-                "1",
-                "2"
-            ],
-            "enumDescriptions": [
-                "v1 error format",
-                "v2 error format"
-            ],
-            "location": "query",
-            "type": "string"
-        },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
-        "alt": {
-            "default": "json",
-            "description": "Data format for response.",
-            "enum": [
-                "json",
-                "media",
-                "proto"
-            ],
-            "enumDescriptions": [
-                "Responses with Content-Type of application/json",
-                "Media download with context-dependent Content-Type",
-                "Responses with Content-Type of application/x-protobuf"
-            ],
+        "bearer_token": {
+            "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         }
@@ -128,6 +128,72 @@
     "resources": {
         "spreadsheets": {
             "methods": {
+                "getByDataFilter": {
+                    "description": "Returns the spreadsheet at the given ID.\nThe caller must specify the spreadsheet ID.\n\nThis method differs from GetSpreadsheet in that it allows selecting\nwhich subsets of spreadsheet data to return by specifying a\ndataFilters parameter.\nMultiple DataFilters can be specified.  Specifying one or\nmore data filters will return the portions of the spreadsheet that\nintersect ranges matched by any of the filters.\n\nBy default, data within grids will not be returned.\nYou can include grid data one of two ways:\n\n* Specify a field mask listing your desired fields using the `fields` URL\nparameter in HTTP\n\n* Set the includeGridData\nparameter to true.  If a field mask is set, the `includeGridData`\nparameter is ignored\n\nFor large spreadsheets, it is recommended to retrieve only the specific\nfields of the spreadsheet that you want.",
+                    "httpMethod": "POST",
+                    "id": "sheets.spreadsheets.getByDataFilter",
+                    "parameterOrder": [
+                        "spreadsheetId"
+                    ],
+                    "parameters": {
+                        "spreadsheetId": {
+                            "description": "The spreadsheet to request.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v4/spreadsheets/{spreadsheetId}:getByDataFilter",
+                    "request": {
+                        "$ref": "GetSpreadsheetByDataFilterRequest"
+                    },
+                    "response": {
+                        "$ref": "Spreadsheet"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/drive",
+                        "https://www.googleapis.com/auth/drive.file",
+                        "https://www.googleapis.com/auth/spreadsheets"
+                    ]
+                },
+                "get": {
+                    "description": "Returns the spreadsheet at the given ID.\nThe caller must specify the spreadsheet ID.\n\nBy default, data within grids will not be returned.\nYou can include grid data one of two ways:\n\n* Specify a field mask listing your desired fields using the `fields` URL\nparameter in HTTP\n\n* Set the includeGridData\nURL parameter to true.  If a field mask is set, the `includeGridData`\nparameter is ignored\n\nFor large spreadsheets, it is recommended to retrieve only the specific\nfields of the spreadsheet that you want.\n\nTo retrieve only subsets of the spreadsheet, use the\nranges URL parameter.\nMultiple ranges can be specified.  Limiting the range will\nreturn only the portions of the spreadsheet that intersect the requested\nranges. Ranges are specified using A1 notation.",
+                    "httpMethod": "GET",
+                    "id": "sheets.spreadsheets.get",
+                    "parameterOrder": [
+                        "spreadsheetId"
+                    ],
+                    "parameters": {
+                        "spreadsheetId": {
+                            "description": "The spreadsheet to request.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "includeGridData": {
+                            "description": "True if grid data should be returned.\nThis parameter is ignored if a field mask was set in the request.",
+                            "location": "query",
+                            "type": "boolean"
+                        },
+                        "ranges": {
+                            "description": "The ranges to retrieve from the spreadsheet.",
+                            "location": "query",
+                            "repeated": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v4/spreadsheets/{spreadsheetId}",
+                    "response": {
+                        "$ref": "Spreadsheet"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/drive",
+                        "https://www.googleapis.com/auth/drive.file",
+                        "https://www.googleapis.com/auth/drive.readonly",
+                        "https://www.googleapis.com/auth/spreadsheets",
+                        "https://www.googleapis.com/auth/spreadsheets.readonly"
+                    ]
+                },
                 "batchUpdate": {
                     "description": "Applies one or more updates to the spreadsheet.\n\nEach request is validated before\nbeing applied. If any request is not valid then the entire request will\nfail and nothing will be applied.\n\nSome requests have replies to\ngive you some information about how\nthey are applied. The replies will mirror the requests.  For example,\nif you applied 4 updates and the 3rd one had a reply, then the\nresponse will have 2 empty replies, the actual reply, and another empty\nreply, in that order.\n\nDue to the collaborative nature of spreadsheets, it is not guaranteed that\nthe spreadsheet will reflect exactly your changes after this completes,\nhowever it is guaranteed that the updates in the request will be\napplied together atomically. Your changes may be altered with respect to\ncollaborator changes. If there are no collaborators, the spreadsheet\nshould reflect your changes.",
                     "httpMethod": "POST",
@@ -174,140 +240,9 @@
                         "https://www.googleapis.com/auth/drive.file",
                         "https://www.googleapis.com/auth/spreadsheets"
                     ]
-                },
-                "getByDataFilter": {
-                    "description": "Returns the spreadsheet at the given ID.\nThe caller must specify the spreadsheet ID.\n\nThis method differs from GetSpreadsheet in that it allows selecting\nwhich subsets of spreadsheet data to return by specifying a\ndataFilters parameter.\nMultiple DataFilters can be specified.  Specifying one or\nmore data filters will return the portions of the spreadsheet that\nintersect ranges matched by any of the filters.\n\nBy default, data within grids will not be returned.\nYou can include grid data one of two ways:\n\n* Specify a field mask listing your desired fields using the `fields` URL\nparameter in HTTP\n\n* Set the includeGridData\nparameter to true.  If a field mask is set, the `includeGridData`\nparameter is ignored\n\nFor large spreadsheets, it is recommended to retrieve only the specific\nfields of the spreadsheet that you want.",
-                    "httpMethod": "POST",
-                    "id": "sheets.spreadsheets.getByDataFilter",
-                    "parameterOrder": [
-                        "spreadsheetId"
-                    ],
-                    "parameters": {
-                        "spreadsheetId": {
-                            "description": "The spreadsheet to request.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v4/spreadsheets/{spreadsheetId}:getByDataFilter",
-                    "request": {
-                        "$ref": "GetSpreadsheetByDataFilterRequest"
-                    },
-                    "response": {
-                        "$ref": "Spreadsheet"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/drive",
-                        "https://www.googleapis.com/auth/drive.file",
-                        "https://www.googleapis.com/auth/spreadsheets"
-                    ]
-                },
-                "get": {
-                    "description": "Returns the spreadsheet at the given ID.\nThe caller must specify the spreadsheet ID.\n\nBy default, data within grids will not be returned.\nYou can include grid data one of two ways:\n\n* Specify a field mask listing your desired fields using the `fields` URL\nparameter in HTTP\n\n* Set the includeGridData\nURL parameter to true.  If a field mask is set, the `includeGridData`\nparameter is ignored\n\nFor large spreadsheets, it is recommended to retrieve only the specific\nfields of the spreadsheet that you want.\n\nTo retrieve only subsets of the spreadsheet, use the\nranges URL parameter.\nMultiple ranges can be specified.  Limiting the range will\nreturn only the portions of the spreadsheet that intersect the requested\nranges. Ranges are specified using A1 notation.",
-                    "httpMethod": "GET",
-                    "id": "sheets.spreadsheets.get",
-                    "parameterOrder": [
-                        "spreadsheetId"
-                    ],
-                    "parameters": {
-                        "includeGridData": {
-                            "description": "True if grid data should be returned.\nThis parameter is ignored if a field mask was set in the request.",
-                            "location": "query",
-                            "type": "boolean"
-                        },
-                        "ranges": {
-                            "description": "The ranges to retrieve from the spreadsheet.",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
-                        },
-                        "spreadsheetId": {
-                            "description": "The spreadsheet to request.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v4/spreadsheets/{spreadsheetId}",
-                    "response": {
-                        "$ref": "Spreadsheet"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/drive",
-                        "https://www.googleapis.com/auth/drive.file",
-                        "https://www.googleapis.com/auth/drive.readonly",
-                        "https://www.googleapis.com/auth/spreadsheets",
-                        "https://www.googleapis.com/auth/spreadsheets.readonly"
-                    ]
                 }
             },
             "resources": {
-                "developerMetadata": {
-                    "methods": {
-                        "search": {
-                            "description": "Returns all developer metadata matching the specified DataFilter.\nIf the provided DataFilter represents a DeveloperMetadataLookup object,\nthis will return all DeveloperMetadata entries selected by it. If the\nDataFilter represents a location in a spreadsheet, this will return all\ndeveloper metadata associated with locations intersecting that region.",
-                            "httpMethod": "POST",
-                            "id": "sheets.spreadsheets.developerMetadata.search",
-                            "parameterOrder": [
-                                "spreadsheetId"
-                            ],
-                            "parameters": {
-                                "spreadsheetId": {
-                                    "description": "The ID of the spreadsheet to retrieve metadata from.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v4/spreadsheets/{spreadsheetId}/developerMetadata:search",
-                            "request": {
-                                "$ref": "SearchDeveloperMetadataRequest"
-                            },
-                            "response": {
-                                "$ref": "SearchDeveloperMetadataResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/drive",
-                                "https://www.googleapis.com/auth/drive.file",
-                                "https://www.googleapis.com/auth/spreadsheets"
-                            ]
-                        },
-                        "get": {
-                            "description": "Returns the developer metadata with the specified ID.\nThe caller must specify the spreadsheet ID and the developer metadata's\nunique metadataId.",
-                            "httpMethod": "GET",
-                            "id": "sheets.spreadsheets.developerMetadata.get",
-                            "parameterOrder": [
-                                "spreadsheetId",
-                                "metadataId"
-                            ],
-                            "parameters": {
-                                "spreadsheetId": {
-                                    "description": "The ID of the spreadsheet to retrieve metadata from.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "metadataId": {
-                                    "description": "The ID of the developer metadata to retrieve.",
-                                    "format": "int32",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v4/spreadsheets/{spreadsheetId}/developerMetadata/{metadataId}",
-                            "response": {
-                                "$ref": "DeveloperMetadata"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/drive",
-                                "https://www.googleapis.com/auth/drive.file",
-                                "https://www.googleapis.com/auth/spreadsheets"
-                            ]
-                        }
-                    }
-                },
                 "values": {
                     "methods": {
                         "get": {
@@ -319,25 +254,6 @@
                                 "range"
                             ],
                             "parameters": {
-                                "dateTimeRenderOption": {
-                                    "description": "How dates, times, and durations should be represented in the output.\nThis is ignored if value_render_option is\nFORMATTED_VALUE.\nThe default dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].",
-                                    "enum": [
-                                        "SERIAL_NUMBER",
-                                        "FORMATTED_STRING"
-                                    ],
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "valueRenderOption": {
-                                    "description": "How values should be represented in the output.\nThe default render option is ValueRenderOption.FORMATTED_VALUE.",
-                                    "enum": [
-                                        "FORMATTED_VALUE",
-                                        "UNFORMATTED_VALUE",
-                                        "FORMULA"
-                                    ],
-                                    "location": "query",
-                                    "type": "string"
-                                },
                                 "majorDimension": {
                                     "description": "The major dimension that results should use.\n\nFor example, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,\nthen requesting `range=A1:B2,majorDimension=ROWS` will return\n`[[1,2],[3,4]]`,\nwhereas requesting `range=A1:B2,majorDimension=COLUMNS` will return\n`[[1,3],[2,4]]`.",
                                     "enum": [
@@ -359,6 +275,25 @@
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
+                                },
+                                "dateTimeRenderOption": {
+                                    "description": "How dates, times, and durations should be represented in the output.\nThis is ignored if value_render_option is\nFORMATTED_VALUE.\nThe default dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].",
+                                    "enum": [
+                                        "SERIAL_NUMBER",
+                                        "FORMATTED_STRING"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "valueRenderOption": {
+                                    "description": "How values should be represented in the output.\nThe default render option is ValueRenderOption.FORMATTED_VALUE.",
+                                    "enum": [
+                                        "FORMATTED_VALUE",
+                                        "UNFORMATTED_VALUE",
+                                        "FORMULA"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
                                 }
                             },
                             "path": "v4/spreadsheets/{spreadsheetId}/values/{range}",
@@ -373,6 +308,34 @@
                                 "https://www.googleapis.com/auth/spreadsheets.readonly"
                             ]
                         },
+                        "batchUpdateByDataFilter": {
+                            "description": "Sets values in one or more ranges of a spreadsheet.\nThe caller must specify the spreadsheet ID,\na valueInputOption, and one or more\nDataFilterValueRanges.",
+                            "httpMethod": "POST",
+                            "id": "sheets.spreadsheets.values.batchUpdateByDataFilter",
+                            "parameterOrder": [
+                                "spreadsheetId"
+                            ],
+                            "parameters": {
+                                "spreadsheetId": {
+                                    "description": "The ID of the spreadsheet to update.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v4/spreadsheets/{spreadsheetId}/values:batchUpdateByDataFilter",
+                            "request": {
+                                "$ref": "BatchUpdateValuesByDataFilterRequest"
+                            },
+                            "response": {
+                                "$ref": "BatchUpdateValuesByDataFilterResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/drive",
+                                "https://www.googleapis.com/auth/drive.file",
+                                "https://www.googleapis.com/auth/spreadsheets"
+                            ]
+                        },
                         "update": {
                             "description": "Sets values in a range of a spreadsheet.\nThe caller must specify the spreadsheet ID, range, and\na valueInputOption.",
                             "httpMethod": "PUT",
@@ -401,17 +364,17 @@
                                     "location": "query",
                                     "type": "string"
                                 },
-                                "includeValuesInResponse": {
-                                    "description": "Determines if the update response should include the values\nof the cells that were updated. By default, responses\ndo not include the updated values.\nIf the range to write was larger than than the range actually written,\nthe response will include all values in the requested range (excluding\ntrailing empty rows and columns).",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
                                 "range": {
                                     "description": "The A1 notation of the values to update.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
                                 },
+                                "includeValuesInResponse": {
+                                    "description": "Determines if the update response should include the values\nof the cells that were updated. By default, responses\ndo not include the updated values.\nIf the range to write was larger than than the range actually written,\nthe response will include all values in the requested range (excluding\ntrailing empty rows and columns).",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
                                 "spreadsheetId": {
                                     "description": "The ID of the spreadsheet to update.",
                                     "location": "path",
@@ -442,34 +405,6 @@
                                 "https://www.googleapis.com/auth/spreadsheets"
                             ]
                         },
-                        "batchUpdateByDataFilter": {
-                            "description": "Sets values in one or more ranges of a spreadsheet.\nThe caller must specify the spreadsheet ID,\na valueInputOption, and one or more\nDataFilterValueRanges.",
-                            "httpMethod": "POST",
-                            "id": "sheets.spreadsheets.values.batchUpdateByDataFilter",
-                            "parameterOrder": [
-                                "spreadsheetId"
-                            ],
-                            "parameters": {
-                                "spreadsheetId": {
-                                    "description": "The ID of the spreadsheet to update.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v4/spreadsheets/{spreadsheetId}/values:batchUpdateByDataFilter",
-                            "request": {
-                                "$ref": "BatchUpdateValuesByDataFilterRequest"
-                            },
-                            "response": {
-                                "$ref": "BatchUpdateValuesByDataFilterResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/drive",
-                                "https://www.googleapis.com/auth/drive.file",
-                                "https://www.googleapis.com/auth/spreadsheets"
-                            ]
-                        },
                         "batchUpdate": {
                             "description": "Sets values in one or more ranges of a spreadsheet.\nThe caller must specify the spreadsheet ID,\na valueInputOption, and one or more\nValueRanges.",
                             "httpMethod": "POST",
@@ -498,6 +433,41 @@
                                 "https://www.googleapis.com/auth/spreadsheets"
                             ]
                         },
+                        "clear": {
+                            "description": "Clears values from a spreadsheet.\nThe caller must specify the spreadsheet ID and range.\nOnly values are cleared -- all other properties of the cell (such as\nformatting, data validation, etc..) are kept.",
+                            "httpMethod": "POST",
+                            "id": "sheets.spreadsheets.values.clear",
+                            "parameterOrder": [
+                                "spreadsheetId",
+                                "range"
+                            ],
+                            "parameters": {
+                                "spreadsheetId": {
+                                    "description": "The ID of the spreadsheet to update.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "range": {
+                                    "description": "The A1 notation of the values to clear.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v4/spreadsheets/{spreadsheetId}/values/{range}:clear",
+                            "request": {
+                                "$ref": "ClearValuesRequest"
+                            },
+                            "response": {
+                                "$ref": "ClearValuesResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/drive",
+                                "https://www.googleapis.com/auth/drive.file",
+                                "https://www.googleapis.com/auth/spreadsheets"
+                            ]
+                        },
                         "batchGet": {
                             "description": "Returns one or more ranges of values from a spreadsheet.\nThe caller must specify the spreadsheet ID and one or more ranges.",
                             "httpMethod": "GET",
@@ -506,22 +476,6 @@
                                 "spreadsheetId"
                             ],
                             "parameters": {
-                                "majorDimension": {
-                                    "description": "The major dimension that results should use.\n\nFor example, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,\nthen requesting `range=A1:B2,majorDimension=ROWS` will return\n`[[1,2],[3,4]]`,\nwhereas requesting `range=A1:B2,majorDimension=COLUMNS` will return\n`[[1,3],[2,4]]`.",
-                                    "enum": [
-                                        "DIMENSION_UNSPECIFIED",
-                                        "ROWS",
-                                        "COLUMNS"
-                                    ],
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "ranges": {
-                                    "description": "The A1 notation of the values to retrieve.",
-                                    "location": "query",
-                                    "repeated": true,
-                                    "type": "string"
-                                },
                                 "spreadsheetId": {
                                     "description": "The ID of the spreadsheet to retrieve data from.",
                                     "location": "path",
@@ -546,6 +500,22 @@
                                     ],
                                     "location": "query",
                                     "type": "string"
+                                },
+                                "majorDimension": {
+                                    "description": "The major dimension that results should use.\n\nFor example, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,\nthen requesting `range=A1:B2,majorDimension=ROWS` will return\n`[[1,2],[3,4]]`,\nwhereas requesting `range=A1:B2,majorDimension=COLUMNS` will return\n`[[1,3],[2,4]]`.",
+                                    "enum": [
+                                        "DIMENSION_UNSPECIFIED",
+                                        "ROWS",
+                                        "COLUMNS"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "ranges": {
+                                    "description": "The A1 notation of the values to retrieve.",
+                                    "location": "query",
+                                    "repeated": true,
+                                    "type": "string"
                                 }
                             },
                             "path": "v4/spreadsheets/{spreadsheetId}/values:batchGet",
@@ -560,41 +530,6 @@
                                 "https://www.googleapis.com/auth/spreadsheets.readonly"
                             ]
                         },
-                        "clear": {
-                            "description": "Clears values from a spreadsheet.\nThe caller must specify the spreadsheet ID and range.\nOnly values are cleared -- all other properties of the cell (such as\nformatting, data validation, etc..) are kept.",
-                            "httpMethod": "POST",
-                            "id": "sheets.spreadsheets.values.clear",
-                            "parameterOrder": [
-                                "spreadsheetId",
-                                "range"
-                            ],
-                            "parameters": {
-                                "range": {
-                                    "description": "The A1 notation of the values to clear.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "spreadsheetId": {
-                                    "description": "The ID of the spreadsheet to update.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v4/spreadsheets/{spreadsheetId}/values/{range}:clear",
-                            "request": {
-                                "$ref": "ClearValuesRequest"
-                            },
-                            "response": {
-                                "$ref": "ClearValuesResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/drive",
-                                "https://www.googleapis.com/auth/drive.file",
-                                "https://www.googleapis.com/auth/spreadsheets"
-                            ]
-                        },
                         "batchClearByDataFilter": {
                             "description": "Clears one or more ranges of values from a spreadsheet.\nThe caller must specify the spreadsheet ID and one or more\nDataFilters. Ranges matching any of the specified data\nfilters will be cleared.  Only values are cleared -- all other properties\nof the cell (such as formatting, data validation, etc..) are kept.",
                             "httpMethod": "POST",
@@ -632,17 +567,17 @@
                                 "range"
                             ],
                             "parameters": {
+                                "includeValuesInResponse": {
+                                    "description": "Determines if the update response should include the values\nof the cells that were appended. By default, responses\ndo not include the updated values.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
                                 "range": {
                                     "description": "The A1 notation of a range to search for a logical table of data.\nValues will be appended after the last row of the table.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
                                 },
-                                "includeValuesInResponse": {
-                                    "description": "Determines if the update response should include the values\nof the cells that were appended. By default, responses\ndo not include the updated values.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
                                 "spreadsheetId": {
                                     "description": "The ID of the spreadsheet to update.",
                                     "location": "path",
@@ -770,18 +705,18 @@
                                 "sheetId"
                             ],
                             "parameters": {
+                                "spreadsheetId": {
+                                    "description": "The ID of the spreadsheet containing the sheet to copy.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
                                 "sheetId": {
                                     "description": "The ID of the sheet to copy.",
                                     "format": "int32",
                                     "location": "path",
                                     "required": true,
                                     "type": "integer"
-                                },
-                                "spreadsheetId": {
-                                    "description": "The ID of the spreadsheet containing the sheet to copy.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
                                 }
                             },
                             "path": "v4/spreadsheets/{spreadsheetId}/sheets/{sheetId}:copyTo",
@@ -798,1006 +733,85 @@
                             ]
                         }
                     }
+                },
+                "developerMetadata": {
+                    "methods": {
+                        "search": {
+                            "description": "Returns all developer metadata matching the specified DataFilter.\nIf the provided DataFilter represents a DeveloperMetadataLookup object,\nthis will return all DeveloperMetadata entries selected by it. If the\nDataFilter represents a location in a spreadsheet, this will return all\ndeveloper metadata associated with locations intersecting that region.",
+                            "httpMethod": "POST",
+                            "id": "sheets.spreadsheets.developerMetadata.search",
+                            "parameterOrder": [
+                                "spreadsheetId"
+                            ],
+                            "parameters": {
+                                "spreadsheetId": {
+                                    "description": "The ID of the spreadsheet to retrieve metadata from.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v4/spreadsheets/{spreadsheetId}/developerMetadata:search",
+                            "request": {
+                                "$ref": "SearchDeveloperMetadataRequest"
+                            },
+                            "response": {
+                                "$ref": "SearchDeveloperMetadataResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/drive",
+                                "https://www.googleapis.com/auth/drive.file",
+                                "https://www.googleapis.com/auth/spreadsheets"
+                            ]
+                        },
+                        "get": {
+                            "description": "Returns the developer metadata with the specified ID.\nThe caller must specify the spreadsheet ID and the developer metadata's\nunique metadataId.",
+                            "httpMethod": "GET",
+                            "id": "sheets.spreadsheets.developerMetadata.get",
+                            "parameterOrder": [
+                                "spreadsheetId",
+                                "metadataId"
+                            ],
+                            "parameters": {
+                                "metadataId": {
+                                    "description": "The ID of the developer metadata to retrieve.",
+                                    "format": "int32",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "integer"
+                                },
+                                "spreadsheetId": {
+                                    "description": "The ID of the spreadsheet to retrieve metadata from.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v4/spreadsheets/{spreadsheetId}/developerMetadata/{metadataId}",
+                            "response": {
+                                "$ref": "DeveloperMetadata"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/drive",
+                                "https://www.googleapis.com/auth/drive.file",
+                                "https://www.googleapis.com/auth/spreadsheets"
+                            ]
+                        }
+                    }
                 }
             }
         }
     },
-    "revision": "20170929",
+    "revision": "20171012",
     "rootUrl": "https://sheets.googleapis.com/",
     "schemas": {
-        "BasicChartSeries": {
-            "description": "A single series of data in a chart.\nFor example, if charting stock prices over time, multiple series may exist,\none for the \"Open Price\", \"High Price\", \"Low Price\" and \"Close Price\".",
-            "id": "BasicChartSeries",
-            "properties": {
-                "type": {
-                    "description": "The type of this series. Valid only if the\nchartType is\nCOMBO.\nDifferent types will change the way the series is visualized.\nOnly LINE, AREA,\nand COLUMN are supported.",
-                    "enum": [
-                        "BASIC_CHART_TYPE_UNSPECIFIED",
-                        "BAR",
-                        "LINE",
-                        "AREA",
-                        "COLUMN",
-                        "SCATTER",
-                        "COMBO",
-                        "STEPPED_AREA"
-                    ],
-                    "enumDescriptions": [
-                        "Default value, do not use.",
-                        "A <a href=\"/chart/interactive/docs/gallery/barchart\">bar chart</a>.",
-                        "A <a href=\"/chart/interactive/docs/gallery/linechart\">line chart</a>.",
-                        "An <a href=\"/chart/interactive/docs/gallery/areachart\">area chart</a>.",
-                        "A <a href=\"/chart/interactive/docs/gallery/columnchart\">column chart</a>.",
-                        "A <a href=\"/chart/interactive/docs/gallery/scatterchart\">scatter chart</a>.",
-                        "A <a href=\"/chart/interactive/docs/gallery/combochart\">combo chart</a>.",
-                        "A <a href=\"/chart/interactive/docs/gallery/steppedareachart\">stepped area chart</a>."
-                    ],
-                    "type": "string"
-                },
-                "series": {
-                    "$ref": "ChartData",
-                    "description": "The data being visualized in this chart series."
-                },
-                "targetAxis": {
-                    "description": "The minor axis that will specify the range of values for this series.\nFor example, if charting stocks over time, the \"Volume\" series\nmay want to be pinned to the right with the prices pinned to the left,\nbecause the scale of trading volume is different than the scale of\nprices.\nIt is an error to specify an axis that isn't a valid minor axis\nfor the chart's type.",
-                    "enum": [
-                        "BASIC_CHART_AXIS_POSITION_UNSPECIFIED",
-                        "BOTTOM_AXIS",
-                        "LEFT_AXIS",
-                        "RIGHT_AXIS"
-                    ],
-                    "enumDescriptions": [
-                        "Default value, do not use.",
-                        "The axis rendered at the bottom of a chart.\nFor most charts, this is the standard major axis.\nFor bar charts, this is a minor axis.",
-                        "The axis rendered at the left of a chart.\nFor most charts, this is a minor axis.\nFor bar charts, this is the standard major axis.",
-                        "The axis rendered at the right of a chart.\nFor most charts, this is a minor axis.\nFor bar charts, this is an unusual major axis."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Borders": {
-            "description": "The borders of the cell.",
-            "id": "Borders",
-            "properties": {
-                "left": {
-                    "$ref": "Border",
-                    "description": "The left border of the cell."
-                },
-                "right": {
-                    "$ref": "Border",
-                    "description": "The right border of the cell."
-                },
-                "bottom": {
-                    "$ref": "Border",
-                    "description": "The bottom border of the cell."
-                },
-                "top": {
-                    "$ref": "Border",
-                    "description": "The top border of the cell."
-                }
-            },
-            "type": "object"
-        },
-        "AutoResizeDimensionsRequest": {
-            "description": "Automatically resizes one or more dimensions based on the contents\nof the cells in that dimension.",
-            "id": "AutoResizeDimensionsRequest",
-            "properties": {
-                "dimensions": {
-                    "$ref": "DimensionRange",
-                    "description": "The dimensions to automatically resize."
-                }
-            },
-            "type": "object"
-        },
-        "UpdateBordersRequest": {
-            "description": "Updates the borders of a range.\nIf a field is not set in the request, that means the border remains as-is.\nFor example, with two subsequent UpdateBordersRequest:\n\n 1. range: A1:A5 `{ top: RED, bottom: WHITE }`\n 2. range: A1:A5 `{ left: BLUE }`\n\nThat would result in A1:A5 having a borders of\n`{ top: RED, bottom: WHITE, left: BLUE }`.\nIf you want to clear a border, explicitly set the style to\nNONE.",
-            "id": "UpdateBordersRequest",
-            "properties": {
-                "right": {
-                    "$ref": "Border",
-                    "description": "The border to put at the right of the range."
-                },
-                "range": {
-                    "$ref": "GridRange",
-                    "description": "The range whose borders should be updated."
-                },
-                "innerHorizontal": {
-                    "$ref": "Border",
-                    "description": "The horizontal border to put within the range."
-                },
-                "top": {
-                    "$ref": "Border",
-                    "description": "The border to put at the top of the range."
-                },
-                "left": {
-                    "$ref": "Border",
-                    "description": "The border to put at the left of the range."
-                },
-                "bottom": {
-                    "$ref": "Border",
-                    "description": "The border to put at the bottom of the range."
-                },
-                "innerVertical": {
-                    "$ref": "Border",
-                    "description": "The vertical border to put within the range."
-                }
-            },
-            "type": "object"
-        },
-        "CellFormat": {
-            "description": "The format of a cell.",
-            "id": "CellFormat",
-            "properties": {
-                "backgroundColor": {
-                    "$ref": "Color",
-                    "description": "The background color of the cell."
-                },
-                "padding": {
-                    "$ref": "Padding",
-                    "description": "The padding of the cell."
-                },
-                "verticalAlignment": {
-                    "description": "The vertical alignment of the value in the cell.",
-                    "enum": [
-                        "VERTICAL_ALIGN_UNSPECIFIED",
-                        "TOP",
-                        "MIDDLE",
-                        "BOTTOM"
-                    ],
-                    "enumDescriptions": [
-                        "The vertical alignment is not specified.  Do not use this.",
-                        "The text is explicitly aligned to the top of the cell.",
-                        "The text is explicitly aligned to the middle of the cell.",
-                        "The text is explicitly aligned to the bottom of the cell."
-                    ],
-                    "type": "string"
-                },
-                "borders": {
-                    "$ref": "Borders",
-                    "description": "The borders of the cell."
-                },
-                "textDirection": {
-                    "description": "The direction of the text in the cell.",
-                    "enum": [
-                        "TEXT_DIRECTION_UNSPECIFIED",
-                        "LEFT_TO_RIGHT",
-                        "RIGHT_TO_LEFT"
-                    ],
-                    "enumDescriptions": [
-                        "The text direction is not specified. Do not use this.",
-                        "The text direction of left-to-right was set by the user.",
-                        "The text direction of right-to-left was set by the user."
-                    ],
-                    "type": "string"
-                },
-                "wrapStrategy": {
-                    "description": "The wrap strategy for the value in the cell.",
-                    "enum": [
-                        "WRAP_STRATEGY_UNSPECIFIED",
-                        "OVERFLOW_CELL",
-                        "LEGACY_WRAP",
-                        "CLIP",
-                        "WRAP"
-                    ],
-                    "enumDescriptions": [
-                        "The default value, do not use.",
-                        "Lines that are longer than the cell width will be written in the next\ncell over, so long as that cell is empty. If the next cell over is\nnon-empty, this behaves the same as CLIP. The text will never wrap\nto the next line unless the user manually inserts a new line.\nExample:\n\n    | First sentence. |\n    | Manual newline that is very long. <- Text continues into next cell\n    | Next newline.   |",
-                        "This wrap strategy represents the old Google Sheets wrap strategy where\nwords that are longer than a line are clipped rather than broken. This\nstrategy is not supported on all platforms and is being phased out.\nExample:\n\n    | Cell has a |\n    | loooooooooo| <- Word is clipped.\n    | word.      |",
-                        "Lines that are longer than the cell width will be clipped.\nThe text will never wrap to the next line unless the user manually\ninserts a new line.\nExample:\n\n    | First sentence. |\n    | Manual newline t| <- Text is clipped\n    | Next newline.   |",
-                        "Words that are longer than a line are wrapped at the character level\nrather than clipped.\nExample:\n\n    | Cell has a |\n    | loooooooooo| <- Word is broken.\n    | ong word.  |"
-                    ],
-                    "type": "string"
-                },
-                "textRotation": {
-                    "$ref": "TextRotation",
-                    "description": "The rotation applied to text in a cell"
-                },
-                "numberFormat": {
-                    "$ref": "NumberFormat",
-                    "description": "A format describing how number values should be represented to the user."
-                },
-                "horizontalAlignment": {
-                    "description": "The horizontal alignment of the value in the cell.",
-                    "enum": [
-                        "HORIZONTAL_ALIGN_UNSPECIFIED",
-                        "LEFT",
-                        "CENTER",
-                        "RIGHT"
-                    ],
-                    "enumDescriptions": [
-                        "The horizontal alignment is not specified. Do not use this.",
-                        "The text is explicitly aligned to the left of the cell.",
-                        "The text is explicitly aligned to the center of the cell.",
-                        "The text is explicitly aligned to the right of the cell."
-                    ],
-                    "type": "string"
-                },
-                "hyperlinkDisplayType": {
-                    "description": "How a hyperlink, if it exists, should be displayed in the cell.",
-                    "enum": [
-                        "HYPERLINK_DISPLAY_TYPE_UNSPECIFIED",
-                        "LINKED",
-                        "PLAIN_TEXT"
-                    ],
-                    "enumDescriptions": [
-                        "The default value: the hyperlink is rendered. Do not use this.",
-                        "A hyperlink should be explicitly rendered.",
-                        "A hyperlink should not be rendered."
-                    ],
-                    "type": "string"
-                },
-                "textFormat": {
-                    "$ref": "TextFormat",
-                    "description": "The format of the text in the cell (unless overridden by a format run)."
-                }
-            },
-            "type": "object"
-        },
-        "ClearValuesResponse": {
-            "description": "The response when clearing a range of values in a spreadsheet.",
-            "id": "ClearValuesResponse",
-            "properties": {
-                "spreadsheetId": {
-                    "description": "The spreadsheet the updates were applied to.",
-                    "type": "string"
-                },
-                "clearedRange": {
-                    "description": "The range (in A1 notation) that was cleared.\n(If the request was for an unbounded range or a ranger larger\n than the bounds of the sheet, this will be the actual range\n that was cleared, bounded to the sheet's limits.)",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "DeleteConditionalFormatRuleRequest": {
-            "description": "Deletes a conditional format rule at the given index.\nAll subsequent rules' indexes are decremented.",
-            "id": "DeleteConditionalFormatRuleRequest",
-            "properties": {
-                "index": {
-                    "description": "The zero-based index of the rule to be deleted.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "sheetId": {
-                    "description": "The sheet the rule is being deleted from.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "AddBandingResponse": {
-            "description": "The result of adding a banded range.",
-            "id": "AddBandingResponse",
-            "properties": {
-                "bandedRange": {
-                    "$ref": "BandedRange",
-                    "description": "The banded range that was added."
-                }
-            },
-            "type": "object"
-        },
-        "DeleteNamedRangeRequest": {
-            "description": "Removes the named range with the given ID from the spreadsheet.",
-            "id": "DeleteNamedRangeRequest",
-            "properties": {
-                "namedRangeId": {
-                    "description": "The ID of the named range to delete.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ChartData": {
-            "description": "The data included in a domain or series.",
-            "id": "ChartData",
-            "properties": {
-                "sourceRange": {
-                    "$ref": "ChartSourceRange",
-                    "description": "The source ranges of the data."
-                }
-            },
-            "type": "object"
-        },
-        "BatchGetValuesResponse": {
-            "description": "The response when retrieving more than one range of values in a spreadsheet.",
-            "id": "BatchGetValuesResponse",
-            "properties": {
-                "spreadsheetId": {
-                    "description": "The ID of the spreadsheet the data was retrieved from.",
-                    "type": "string"
-                },
-                "valueRanges": {
-                    "description": "The requested values. The order of the ValueRanges is the same as the\norder of the requested ranges.",
-                    "items": {
-                        "$ref": "ValueRange"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "UpdateBandingRequest": {
-            "description": "Updates properties of the supplied banded range.",
-            "id": "UpdateBandingRequest",
-            "properties": {
-                "fields": {
-                    "description": "The fields that should be updated.  At least one field must be specified.\nThe root `bandedRange` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.",
-                    "format": "google-fieldmask",
-                    "type": "string"
-                },
-                "bandedRange": {
-                    "$ref": "BandedRange",
-                    "description": "The banded range to update with the new properties."
-                }
-            },
-            "type": "object"
-        },
-        "Color": {
-            "description": "Represents a color in the RGBA color space. This representation is designed\nfor simplicity of conversion to/from color representations in various\nlanguages over compactness; for example, the fields of this representation\ncan be trivially provided to the constructor of \"java.awt.Color\" in Java; it\ncan also be trivially provided to UIColor's \"+colorWithRed:green:blue:alpha\"\nmethod in iOS; and, with just a little work, it can be easily formatted into\na CSS \"rgba()\" string in JavaScript, as well. Here are some examples:\n\nExample (Java):\n\n     import com.google.type.Color;\n\n     // ...\n     public static java.awt.Color fromProto(Color protocolor) {\n       float alpha = protocolor.hasAlpha()\n           ? protocolor.getAlpha().getValue()\n           : 1.0;\n\n       return new java.awt.Color(\n           protocolor.getRed(),\n           protocolor.getGreen(),\n           protocolor.getBlue(),\n           alpha);\n     }\n\n     public static Color toProto(java.awt.Color color) {\n       float red = (float) color.getRed();\n       float green = (float) color.getGreen();\n       float blue = (float) color.getBlue();\n       float denominator = 255.0;\n       Color.Builder resultBuilder =\n           Color\n               .newBuilder()\n               .setRed(red / denominator)\n               .setGreen(green / denominator)\n               .setBlue(blue / denominator);\n       int alpha = color.getAlpha();\n       if (alpha != 255) {\n         result.setAlpha(\n             FloatValue\n                 .newBuilder()\n                 .setValue(((float) alpha) / denominator)\n                 .build());\n       }\n       return resultBuilder.build();\n     }\n     // ...\n\nExample (iOS / Obj-C):\n\n     // ...\n     static UIColor* fromProto(Color* protocolor) {\n        float red = [protocolor red];\n        float green = [protocolor green];\n        float blue = [protocolor blue];\n        FloatValue* alpha_wrapper = [protocolor alpha];\n        float alpha = 1.0;\n        if (alpha_wrapper != nil) {\n          alpha = [alpha_wrapper value];\n        }\n        return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];\n     }\n\n     static Color* toProto(UIColor* color) {\n         CGFloat red, green, blue, alpha;\n         if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {\n           return nil;\n         }\n         Color* result = [Color alloc] init];\n         [result setRed:red];\n         [result setGreen:green];\n         [result setBlue:blue];\n         if (alpha <= 0.9999) {\n           [result setAlpha:floatWrapperWithValue(alpha)];\n         }\n         [result autorelease];\n         return result;\n    }\n    // ...\n\n Example (JavaScript):\n\n    // ...\n\n    var protoToCssColor = function(rgb_color) {\n       var redFrac = rgb_color.red || 0.0;\n       var greenFrac = rgb_color.green || 0.0;\n       var blueFrac = rgb_color.blue || 0.0;\n       var red = Math.floor(redFrac * 255);\n       var green = Math.floor(greenFrac * 255);\n       var blue = Math.floor(blueFrac * 255);\n\n       if (!('alpha' in rgb_color)) {\n          return rgbToCssColor_(red, green, blue);\n       }\n\n       var alphaFrac = rgb_color.alpha.value || 0.0;\n       var rgbParams = [red, green, blue].join(',');\n       return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');\n    };\n\n    var rgbToCssColor_ = function(red, green, blue) {\n      var rgbNumber = new Number((red << 16) | (green << 8) | blue);\n      var hexString = rgbNumber.toString(16);\n      var missingZeros = 6 - hexString.length;\n      var resultBuilder = ['#'];\n      for (var i = 0; i < missingZeros; i++) {\n         resultBuilder.push('0');\n      }\n      resultBuilder.push(hexString);\n      return resultBuilder.join('');\n    };\n\n    // ...",
-            "id": "Color",
-            "properties": {
-                "red": {
-                    "description": "The amount of red in the color as a value in the interval [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "alpha": {
-                    "description": "The fraction of this color that should be applied to the pixel. That is,\nthe final pixel color is defined by the equation:\n\n  pixel color = alpha * (this color) + (1.0 - alpha) * (background color)\n\nThis means that a value of 1.0 corresponds to a solid color, whereas\na value of 0.0 corresponds to a completely transparent color. This\nuses a wrapper message rather than a simple float scalar so that it is\npossible to distinguish between a default value and the value being unset.\nIf omitted, this color object is to be rendered as a solid color\n(as if the alpha value had been explicitly given with a value of 1.0).",
-                    "format": "float",
-                    "type": "number"
-                },
-                "blue": {
-                    "description": "The amount of blue in the color as a value in the interval [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "green": {
-                    "description": "The amount of green in the color as a value in the interval [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "PivotGroup": {
-            "description": "A single grouping (either row or column) in a pivot table.",
-            "id": "PivotGroup",
-            "properties": {
-                "sortOrder": {
-                    "description": "The order the values in this group should be sorted.",
-                    "enum": [
-                        "SORT_ORDER_UNSPECIFIED",
-                        "ASCENDING",
-                        "DESCENDING"
-                    ],
-                    "enumDescriptions": [
-                        "Default value, do not use this.",
-                        "Sort ascending.",
-                        "Sort descending."
-                    ],
-                    "type": "string"
-                },
-                "valueBucket": {
-                    "$ref": "PivotGroupSortValueBucket",
-                    "description": "The bucket of the opposite pivot group to sort by.\nIf not specified, sorting is alphabetical by this group's values."
-                },
-                "valueMetadata": {
-                    "description": "Metadata about values in the grouping.",
-                    "items": {
-                        "$ref": "PivotGroupValueMetadata"
-                    },
-                    "type": "array"
-                },
-                "showTotals": {
-                    "description": "True if the pivot table should include the totals for this grouping.",
-                    "type": "boolean"
-                },
-                "sourceColumnOffset": {
-                    "description": "The column offset of the source range that this grouping is based on.\n\nFor example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`\nmeans this group refers to column `C`, whereas the offset `1` would refer\nto column `D`.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "PivotTable": {
-            "description": "A pivot table.",
-            "id": "PivotTable",
-            "properties": {
-                "criteria": {
-                    "additionalProperties": {
-                        "$ref": "PivotFilterCriteria"
-                    },
-                    "description": "An optional mapping of filters per source column offset.\n\nThe filters will be applied before aggregating data into the pivot table.\nThe map's key is the column offset of the source range that you want to\nfilter, and the value is the criteria for that column.\n\nFor example, if the source was `C10:E15`, a key of `0` will have the filter\nfor column `C`, whereas the key `1` is for column `D`.",
-                    "type": "object"
-                },
-                "rows": {
-                    "description": "Each row grouping in the pivot table.",
-                    "items": {
-                        "$ref": "PivotGroup"
-                    },
-                    "type": "array"
-                },
-                "valueLayout": {
-                    "description": "Whether values should be listed horizontally (as columns)\nor vertically (as rows).",
-                    "enum": [
-                        "HORIZONTAL",
-                        "VERTICAL"
-                    ],
-                    "enumDescriptions": [
-                        "Values are laid out horizontally (as columns).",
-                        "Values are laid out vertically (as rows)."
-                    ],
-                    "type": "string"
-                },
-                "columns": {
-                    "description": "Each column grouping in the pivot table.",
-                    "items": {
-                        "$ref": "PivotGroup"
-                    },
-                    "type": "array"
-                },
-                "values": {
-                    "description": "A list of values to include in the pivot table.",
-                    "items": {
-                        "$ref": "PivotValue"
-                    },
-                    "type": "array"
-                },
-                "source": {
-                    "$ref": "GridRange",
-                    "description": "The range the pivot table is reading data from."
-                }
-            },
-            "type": "object"
-        },
-        "ChartSourceRange": {
-            "description": "Source ranges for a chart.",
-            "id": "ChartSourceRange",
-            "properties": {
-                "sources": {
-                    "description": "The ranges of data for a series or domain.\nExactly one dimension must have a length of 1,\nand all sources in the list must have the same dimension\nwith length 1.\nThe domain (if it exists) & all series must have the same number\nof source ranges. If using more than one source range, then the source\nrange at a given offset must be contiguous across the domain and series.\n\nFor example, these are valid configurations:\n\n    domain sources: A1:A5\n    series1 sources: B1:B5\n    series2 sources: D6:D10\n\n    domain sources: A1:A5, C10:C12\n    series1 sources: B1:B5, D10:D12\n    series2 sources: C1:C5, E10:E12",
-                    "items": {
-                        "$ref": "GridRange"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "SearchDeveloperMetadataResponse": {
-            "description": "A reply to a developer metadata search request.",
-            "id": "SearchDeveloperMetadataResponse",
-            "properties": {
-                "matchedDeveloperMetadata": {
-                    "description": "The metadata matching the criteria of the search request.",
-                    "items": {
-                        "$ref": "MatchedDeveloperMetadata"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AppendCellsRequest": {
-            "description": "Adds new cells after the last row with data in a sheet,\ninserting new rows into the sheet if necessary.",
-            "id": "AppendCellsRequest",
-            "properties": {
-                "fields": {
-                    "description": "The fields of CellData that should be updated.\nAt least one field must be specified.\nThe root is the CellData; 'row.values.' should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.",
-                    "format": "google-fieldmask",
-                    "type": "string"
-                },
-                "rows": {
-                    "description": "The data to append.",
-                    "items": {
-                        "$ref": "RowData"
-                    },
-                    "type": "array"
-                },
-                "sheetId": {
-                    "description": "The sheet ID to append the data to.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "ValueRange": {
-            "description": "Data within a range of the spreadsheet.",
-            "id": "ValueRange",
-            "properties": {
-                "range": {
-                    "description": "The range the values cover, in A1 notation.\nFor output, this range indicates the entire requested range,\neven though the values will exclude trailing rows and columns.\nWhen appending values, this field represents the range to search for a\ntable, after which values will be appended.",
-                    "type": "string"
-                },
-                "values": {
-                    "description": "The data that was read or to be written.  This is an array of arrays,\nthe outer array representing all the data and each inner array\nrepresenting a major dimension. Each item in the inner array\ncorresponds with one cell.\n\nFor output, empty trailing rows and columns will not be included.\n\nFor input, supported value types are: bool, string, and double.\nNull values will be skipped.\nTo set a cell to an empty value, set the string value to an empty string.",
-                    "items": {
-                        "items": {
-                            "type": "any"
-                        },
-                        "type": "array"
-                    },
-                    "type": "array"
-                },
-                "majorDimension": {
-                    "description": "The major dimension of the values.\n\nFor output, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,\nthen requesting `range=A1:B2,majorDimension=ROWS` will return\n`[[1,2],[3,4]]`,\nwhereas requesting `range=A1:B2,majorDimension=COLUMNS` will return\n`[[1,3],[2,4]]`.\n\nFor input, with `range=A1:B2,majorDimension=ROWS` then `[[1,2],[3,4]]`\nwill set `A1=1,B1=2,A2=3,B2=4`. With `range=A1:B2,majorDimension=COLUMNS`\nthen `[[1,2],[3,4]]` will set `A1=1,B1=3,A2=2,B2=4`.\n\nWhen writing, if this field is not set, it defaults to ROWS.",
-                    "enum": [
-                        "DIMENSION_UNSPECIFIED",
-                        "ROWS",
-                        "COLUMNS"
-                    ],
-                    "enumDescriptions": [
-                        "The default value, do not use.",
-                        "Operates on the rows of a sheet.",
-                        "Operates on the columns of a sheet."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AddBandingRequest": {
-            "description": "Adds a new banded range to the spreadsheet.",
-            "id": "AddBandingRequest",
-            "properties": {
-                "bandedRange": {
-                    "$ref": "BandedRange",
-                    "description": "The banded range to add. The bandedRangeId\nfield is optional; if one is not set, an id will be randomly generated. (It\nis an error to specify the ID of a range that already exists.)"
-                }
-            },
-            "type": "object"
-        },
-        "Response": {
-            "description": "A single response from an update.",
-            "id": "Response",
-            "properties": {
-                "updateDeveloperMetadata": {
-                    "$ref": "UpdateDeveloperMetadataResponse",
-                    "description": "A reply from updating a developer metadata entry."
-                },
-                "findReplace": {
-                    "$ref": "FindReplaceResponse",
-                    "description": "A reply from doing a find/replace."
-                },
-                "addSheet": {
-                    "$ref": "AddSheetResponse",
-                    "description": "A reply from adding a sheet."
-                },
-                "createDeveloperMetadata": {
-                    "$ref": "CreateDeveloperMetadataResponse",
-                    "description": "A reply from creating a developer metadata entry."
-                },
-                "updateConditionalFormatRule": {
-                    "$ref": "UpdateConditionalFormatRuleResponse",
-                    "description": "A reply from updating a conditional format rule."
-                },
-                "addNamedRange": {
-                    "$ref": "AddNamedRangeResponse",
-                    "description": "A reply from adding a named range."
-                },
-                "deleteDeveloperMetadata": {
-                    "$ref": "DeleteDeveloperMetadataResponse",
-                    "description": "A reply from deleting a developer metadata entry."
-                },
-                "addFilterView": {
-                    "$ref": "AddFilterViewResponse",
-                    "description": "A reply from adding a filter view."
-                },
-                "addBanding": {
-                    "$ref": "AddBandingResponse",
-                    "description": "A reply from adding a banded range."
-                },
-                "addProtectedRange": {
-                    "$ref": "AddProtectedRangeResponse",
-                    "description": "A reply from adding a protected range."
-                },
-                "duplicateSheet": {
-                    "$ref": "DuplicateSheetResponse",
-                    "description": "A reply from duplicating a sheet."
-                },
-                "updateEmbeddedObjectPosition": {
-                    "$ref": "UpdateEmbeddedObjectPositionResponse",
-                    "description": "A reply from updating an embedded object's position."
-                },
-                "deleteConditionalFormatRule": {
-                    "$ref": "DeleteConditionalFormatRuleResponse",
-                    "description": "A reply from deleting a conditional format rule."
-                },
-                "duplicateFilterView": {
-                    "$ref": "DuplicateFilterViewResponse",
-                    "description": "A reply from duplicating a filter view."
-                },
-                "addChart": {
-                    "$ref": "AddChartResponse",
-                    "description": "A reply from adding a chart."
-                }
-            },
-            "type": "object"
-        },
-        "InsertRangeRequest": {
-            "description": "Inserts cells into a range, shifting the existing cells over or down.",
-            "id": "InsertRangeRequest",
-            "properties": {
-                "shiftDimension": {
-                    "description": "The dimension which will be shifted when inserting cells.\nIf ROWS, existing cells will be shifted down.\nIf COLUMNS, existing cells will be shifted right.",
-                    "enum": [
-                        "DIMENSION_UNSPECIFIED",
-                        "ROWS",
-                        "COLUMNS"
-                    ],
-                    "enumDescriptions": [
-                        "The default value, do not use.",
-                        "Operates on the rows of a sheet.",
-                        "Operates on the columns of a sheet."
-                    ],
-                    "type": "string"
-                },
-                "range": {
-                    "$ref": "GridRange",
-                    "description": "The range to insert new cells into."
-                }
-            },
-            "type": "object"
-        },
-        "TextFormatRun": {
-            "description": "A run of a text format. The format of this run continues until the start\nindex of the next run.\nWhen updating, all fields must be set.",
-            "id": "TextFormatRun",
-            "properties": {
-                "startIndex": {
-                    "description": "The character index where this run starts.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "format": {
-                    "$ref": "TextFormat",
-                    "description": "The format of this run.  Absent values inherit the cell's format."
-                }
-            },
-            "type": "object"
-        },
-        "EmbeddedChart": {
-            "description": "A chart embedded in a sheet.",
-            "id": "EmbeddedChart",
-            "properties": {
-                "chartId": {
-                    "description": "The ID of the chart.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "position": {
-                    "$ref": "EmbeddedObjectPosition",
-                    "description": "The position of the chart."
-                },
-                "spec": {
-                    "$ref": "ChartSpec",
-                    "description": "The specification of the chart."
-                }
-            },
-            "type": "object"
-        },
-        "AddNamedRangeResponse": {
-            "description": "The result of adding a named range.",
-            "id": "AddNamedRangeResponse",
-            "properties": {
-                "namedRange": {
-                    "$ref": "NamedRange",
-                    "description": "The named range to add."
-                }
-            },
-            "type": "object"
-        },
-        "BatchUpdateValuesByDataFilterResponse": {
-            "description": "The response when updating a range of values in a spreadsheet.",
-            "id": "BatchUpdateValuesByDataFilterResponse",
-            "properties": {
-                "totalUpdatedRows": {
-                    "description": "The total number of rows where at least one cell in the row was updated.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "responses": {
-                    "description": "The response for each range updated.",
-                    "items": {
-                        "$ref": "UpdateValuesByDataFilterResponse"
-                    },
-                    "type": "array"
-                },
-                "totalUpdatedSheets": {
-                    "description": "The total number of sheets where at least one cell in the sheet was\nupdated.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "totalUpdatedCells": {
-                    "description": "The total number of cells updated.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "totalUpdatedColumns": {
-                    "description": "The total number of columns where at least one cell in the column was\nupdated.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "spreadsheetId": {
-                    "description": "The spreadsheet the updates were applied to.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RowData": {
-            "description": "Data about each cell in a row.",
-            "id": "RowData",
-            "properties": {
-                "values": {
-                    "description": "The values in the row, one per column.",
-                    "items": {
-                        "$ref": "CellData"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GridData": {
-            "description": "Data in the grid, as well as metadata about the dimensions.",
-            "id": "GridData",
-            "properties": {
-                "columnMetadata": {
-                    "description": "Metadata about the requested columns in the grid, starting with the column\nin start_column.",
-                    "items": {
-                        "$ref": "DimensionProperties"
-                    },
-                    "type": "array"
-                },
-                "startColumn": {
-                    "description": "The first column this GridData refers to, zero-based.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "rowMetadata": {
-                    "description": "Metadata about the requested rows in the grid, starting with the row\nin start_row.",
-                    "items": {
-                        "$ref": "DimensionProperties"
-                    },
-                    "type": "array"
-                },
-                "rowData": {
-                    "description": "The data in the grid, one entry per row,\nstarting with the row in startRow.\nThe values in RowData will correspond to columns starting\nat start_column.",
-                    "items": {
-                        "$ref": "RowData"
-                    },
-                    "type": "array"
-                },
-                "startRow": {
-                    "description": "The first row this GridData refers to, zero-based.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "Border": {
-            "description": "A border along a cell.",
-            "id": "Border",
-            "properties": {
-                "color": {
-                    "$ref": "Color",
-                    "description": "The color of the border."
-                },
-                "width": {
-                    "description": "The width of the border, in pixels.\nDeprecated; the width is determined by the \"style\" field.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "style": {
-                    "description": "The style of the border.",
-                    "enum": [
-                        "STYLE_UNSPECIFIED",
-                        "DOTTED",
-                        "DASHED",
-                        "SOLID",
-                        "SOLID_MEDIUM",
-                        "SOLID_THICK",
-                        "NONE",
-                        "DOUBLE"
-                    ],
-                    "enumDescriptions": [
-                        "The style is not specified. Do not use this.",
-                        "The border is dotted.",
-                        "The border is dashed.",
-                        "The border is a thin solid line.",
-                        "The border is a medium solid line.",
-                        "The border is a thick solid line.",
-                        "No border.\nUsed only when updating a border in order to erase it.",
-                        "The border is two solid lines."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "FindReplaceRequest": {
-            "description": "Finds and replaces data in cells over a range, sheet, or all sheets.",
-            "id": "FindReplaceRequest",
-            "properties": {
-                "replacement": {
-                    "description": "The value to use as the replacement.",
-                    "type": "string"
-                },
-                "range": {
-                    "$ref": "GridRange",
-                    "description": "The range to find/replace over."
-                },
-                "sheetId": {
-                    "description": "The sheet to find/replace over.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "matchCase": {
-                    "description": "True if the search is case sensitive.",
-                    "type": "boolean"
-                },
-                "allSheets": {
-                    "description": "True to find/replace over all sheets.",
-                    "type": "boolean"
-                },
-                "includeFormulas": {
-                    "description": "True if the search should include cells with formulas.\nFalse to skip cells with formulas.",
-                    "type": "boolean"
-                },
-                "matchEntireCell": {
-                    "description": "True if the find value should match the entire cell.",
-                    "type": "boolean"
-                },
-                "searchByRegex": {
-                    "description": "True if the find value is a regex.\nThe regular expression and replacement should follow Java regex rules\nat https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html.\nThe replacement string is allowed to refer to capturing groups.\nFor example, if one cell has the contents `\"Google Sheets\"` and another\nhas `\"Google Docs\"`, then searching for `\"o.* (.*)\"` with a replacement of\n`\"$1 Rocks\"` would change the contents of the cells to\n`\"GSheets Rocks\"` and `\"GDocs Rocks\"` respectively.",
-                    "type": "boolean"
-                },
-                "find": {
-                    "description": "The value to search.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UpdateNamedRangeRequest": {
-            "description": "Updates properties of the named range with the specified\nnamedRangeId.",
-            "id": "UpdateNamedRangeRequest",
-            "properties": {
-                "namedRange": {
-                    "$ref": "NamedRange",
-                    "description": "The named range to update with the new properties."
-                },
-                "fields": {
-                    "description": "The fields that should be updated.  At least one field must be specified.\nThe root `namedRange` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.",
-                    "format": "google-fieldmask",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AddSheetRequest": {
-            "description": "Adds a new sheet.\nWhen a sheet is added at a given index,\nall subsequent sheets' indexes are incremented.\nTo add an object sheet, use AddChartRequest instead and specify\nEmbeddedObjectPosition.sheetId or\nEmbeddedObjectPosition.newSheet.",
-            "id": "AddSheetRequest",
-            "properties": {
-                "properties": {
-                    "$ref": "SheetProperties",
-                    "description": "The properties the new sheet should have.\nAll properties are optional.\nThe sheetId field is optional; if one is not\nset, an id will be randomly generated. (It is an error to specify the ID\nof a sheet that already exists.)"
-                }
-            },
-            "type": "object"
-        },
-        "UpdateCellsRequest": {
-            "description": "Updates all cells in a range with new data.",
-            "id": "UpdateCellsRequest",
+        "UnmergeCellsRequest": {
+            "description": "Unmerges cells in the given range.",
+            "id": "UnmergeCellsRequest",
             "properties": {
                 "range": {
                     "$ref": "GridRange",
-                    "description": "The range to write data to.\n\nIf the data in rows does not cover the entire requested range,\nthe fields matching those set in fields will be cleared."
-                },
-                "fields": {
-                    "description": "The fields of CellData that should be updated.\nAt least one field must be specified.\nThe root is the CellData; 'row.values.' should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.",
-                    "format": "google-fieldmask",
-                    "type": "string"
-                },
-                "rows": {
-                    "description": "The data to write.",
-                    "items": {
-                        "$ref": "RowData"
-                    },
-                    "type": "array"
-                },
-                "start": {
-                    "$ref": "GridCoordinate",
-                    "description": "The coordinate to start writing data at.\nAny number of rows and columns (including a different number of\ncolumns per row) may be written."
-                }
-            },
-            "type": "object"
-        },
-        "RandomizeRangeRequest": {
-            "description": "Randomizes the order of the rows in a range.",
-            "id": "RandomizeRangeRequest",
-            "properties": {
-                "range": {
-                    "$ref": "GridRange",
-                    "description": "The range to randomize."
-                }
-            },
-            "type": "object"
-        },
-        "DeleteConditionalFormatRuleResponse": {
-            "description": "The result of deleting a conditional format rule.",
-            "id": "DeleteConditionalFormatRuleResponse",
-            "properties": {
-                "rule": {
-                    "$ref": "ConditionalFormatRule",
-                    "description": "The rule that was deleted."
-                }
-            },
-            "type": "object"
-        },
-        "DeleteRangeRequest": {
-            "description": "Deletes a range of cells, shifting other cells into the deleted area.",
-            "id": "DeleteRangeRequest",
-            "properties": {
-                "shiftDimension": {
-                    "description": "The dimension from which deleted cells will be replaced with.\nIf ROWS, existing cells will be shifted upward to\nreplace the deleted cells. If COLUMNS, existing cells\nwill be shifted left to replace the deleted cells.",
-                    "enum": [
-                        "DIMENSION_UNSPECIFIED",
-                        "ROWS",
-                        "COLUMNS"
-                    ],
-                    "enumDescriptions": [
-                        "The default value, do not use.",
-                        "Operates on the rows of a sheet.",
-                        "Operates on the columns of a sheet."
-                    ],
-                    "type": "string"
-                },
-                "range": {
-                    "$ref": "GridRange",
-                    "description": "The range of cells to delete."
-                }
-            },
-            "type": "object"
-        },
-        "GridCoordinate": {
-            "description": "A coordinate in a sheet.\nAll indexes are zero-based.",
-            "id": "GridCoordinate",
-            "properties": {
-                "columnIndex": {
-                    "description": "The column index of the coordinate.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "rowIndex": {
-                    "description": "The row index of the coordinate.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "sheetId": {
-                    "description": "The sheet this coordinate is on.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "UpdateSheetPropertiesRequest": {
-            "description": "Updates properties of the sheet with the specified\nsheetId.",
-            "id": "UpdateSheetPropertiesRequest",
-            "properties": {
-                "fields": {
-                    "description": "The fields that should be updated.  At least one field must be specified.\nThe root `properties` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.",
-                    "format": "google-fieldmask",
-                    "type": "string"
-                },
-                "properties": {
-                    "$ref": "SheetProperties",
-                    "description": "The properties to update."
+                    "description": "The range within which all cells should be unmerged.\nIf the range spans multiple merges, all will be unmerged.\nThe range must not partially span any merge."
                 }
             },
             "type": "object"
@@ -1833,13 +847,84 @@
             },
             "type": "object"
         },
-        "UnmergeCellsRequest": {
-            "description": "Unmerges cells in the given range.",
-            "id": "UnmergeCellsRequest",
+        "UpdateEmbeddedObjectPositionResponse": {
+            "description": "The result of updating an embedded object's position.",
+            "id": "UpdateEmbeddedObjectPositionResponse",
             "properties": {
-                "range": {
-                    "$ref": "GridRange",
-                    "description": "The range within which all cells should be unmerged.\nIf the range spans multiple merges, all will be unmerged.\nThe range must not partially span any merge."
+                "position": {
+                    "$ref": "EmbeddedObjectPosition",
+                    "description": "The new position of the embedded object."
+                }
+            },
+            "type": "object"
+        },
+        "Sheet": {
+            "description": "A sheet in a spreadsheet.",
+            "id": "Sheet",
+            "properties": {
+                "filterViews": {
+                    "description": "The filter views in this sheet.",
+                    "items": {
+                        "$ref": "FilterView"
+                    },
+                    "type": "array"
+                },
+                "protectedRanges": {
+                    "description": "The protected ranges in this sheet.",
+                    "items": {
+                        "$ref": "ProtectedRange"
+                    },
+                    "type": "array"
+                },
+                "conditionalFormats": {
+                    "description": "The conditional format rules in this sheet.",
+                    "items": {
+                        "$ref": "ConditionalFormatRule"
+                    },
+                    "type": "array"
+                },
+                "developerMetadata": {
+                    "description": "The developer metadata associated with a sheet.",
+                    "items": {
+                        "$ref": "DeveloperMetadata"
+                    },
+                    "type": "array"
+                },
+                "basicFilter": {
+                    "$ref": "BasicFilter",
+                    "description": "The filter on this sheet, if any."
+                },
+                "merges": {
+                    "description": "The ranges that are merged together.",
+                    "items": {
+                        "$ref": "GridRange"
+                    },
+                    "type": "array"
+                },
+                "data": {
+                    "description": "Data in the grid, if this is a grid sheet.\nThe number of GridData objects returned is dependent on the number of\nranges requested on this sheet. For example, if this is representing\n`Sheet1`, and the spreadsheet was requested with ranges\n`Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a\nstartRow/startColumn of `0`,\nwhile the second one will have `startRow 14` (zero-based row 15),\nand `startColumn 3` (zero-based column D).",
+                    "items": {
+                        "$ref": "GridData"
+                    },
+                    "type": "array"
+                },
+                "bandedRanges": {
+                    "description": "The banded (i.e. alternating colors) ranges on this sheet.",
+                    "items": {
+                        "$ref": "BandedRange"
+                    },
+                    "type": "array"
+                },
+                "charts": {
+                    "description": "The specifications of every chart on this sheet.",
+                    "items": {
+                        "$ref": "EmbeddedChart"
+                    },
+                    "type": "array"
+                },
+                "properties": {
+                    "$ref": "SheetProperties",
+                    "description": "The properties of the sheet."
                 }
             },
             "type": "object"
@@ -1870,88 +955,6 @@
             },
             "type": "object"
         },
-        "Sheet": {
-            "description": "A sheet in a spreadsheet.",
-            "id": "Sheet",
-            "properties": {
-                "conditionalFormats": {
-                    "description": "The conditional format rules in this sheet.",
-                    "items": {
-                        "$ref": "ConditionalFormatRule"
-                    },
-                    "type": "array"
-                },
-                "developerMetadata": {
-                    "description": "The developer metadata associated with a sheet.",
-                    "items": {
-                        "$ref": "DeveloperMetadata"
-                    },
-                    "type": "array"
-                },
-                "protectedRanges": {
-                    "description": "The protected ranges in this sheet.",
-                    "items": {
-                        "$ref": "ProtectedRange"
-                    },
-                    "type": "array"
-                },
-                "basicFilter": {
-                    "$ref": "BasicFilter",
-                    "description": "The filter on this sheet, if any."
-                },
-                "merges": {
-                    "description": "The ranges that are merged together.",
-                    "items": {
-                        "$ref": "GridRange"
-                    },
-                    "type": "array"
-                },
-                "data": {
-                    "description": "Data in the grid, if this is a grid sheet.\nThe number of GridData objects returned is dependent on the number of\nranges requested on this sheet. For example, if this is representing\n`Sheet1`, and the spreadsheet was requested with ranges\n`Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a\nstartRow/startColumn of `0`,\nwhile the second one will have `startRow 14` (zero-based row 15),\nand `startColumn 3` (zero-based column D).",
-                    "items": {
-                        "$ref": "GridData"
-                    },
-                    "type": "array"
-                },
-                "bandedRanges": {
-                    "description": "The banded (i.e. alternating colors) ranges on this sheet.",
-                    "items": {
-                        "$ref": "BandedRange"
-                    },
-                    "type": "array"
-                },
-                "properties": {
-                    "$ref": "SheetProperties",
-                    "description": "The properties of the sheet."
-                },
-                "charts": {
-                    "description": "The specifications of every chart on this sheet.",
-                    "items": {
-                        "$ref": "EmbeddedChart"
-                    },
-                    "type": "array"
-                },
-                "filterViews": {
-                    "description": "The filter views in this sheet.",
-                    "items": {
-                        "$ref": "FilterView"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "UpdateEmbeddedObjectPositionResponse": {
-            "description": "The result of updating an embedded object's position.",
-            "id": "UpdateEmbeddedObjectPositionResponse",
-            "properties": {
-                "position": {
-                    "$ref": "EmbeddedObjectPosition",
-                    "description": "The new position of the embedded object."
-                }
-            },
-            "type": "object"
-        },
         "BooleanRule": {
             "description": "A rule that may or may not match, depending on the condition.",
             "id": "BooleanRule",
@@ -1967,6 +970,21 @@
             },
             "type": "object"
         },
+        "PivotGroupValueMetadata": {
+            "description": "Metadata about a value in a pivot grouping.",
+            "id": "PivotGroupValueMetadata",
+            "properties": {
+                "value": {
+                    "$ref": "ExtendedValue",
+                    "description": "The calculated value the metadata corresponds to.\n(Note that formulaValue is not valid,\n because the values will be calculated.)"
+                },
+                "collapsed": {
+                    "description": "True if the data corresponding to the value is collapsed.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "FilterCriteria": {
             "description": "Criteria for showing/hiding rows in a filter or filter view.",
             "id": "FilterCriteria",
@@ -1985,21 +1003,6 @@
             },
             "type": "object"
         },
-        "PivotGroupValueMetadata": {
-            "description": "Metadata about a value in a pivot grouping.",
-            "id": "PivotGroupValueMetadata",
-            "properties": {
-                "value": {
-                    "$ref": "ExtendedValue",
-                    "description": "The calculated value the metadata corresponds to.\n(Note that formulaValue is not valid,\n because the values will be calculated.)"
-                },
-                "collapsed": {
-                    "description": "True if the data corresponding to the value is collapsed.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
         "Editors": {
             "description": "The editors of a protected range.",
             "id": "Editors",
@@ -2051,21 +1054,6 @@
             },
             "type": "object"
         },
-        "BasicChartDomain": {
-            "description": "The domain of a chart.\nFor example, if charting stock prices over time, this would be the date.",
-            "id": "BasicChartDomain",
-            "properties": {
-                "reversed": {
-                    "description": "True to reverse the order of the domain values (horizontal axis).",
-                    "type": "boolean"
-                },
-                "domain": {
-                    "$ref": "ChartData",
-                    "description": "The data of the domain. For example, if charting stock prices over time,\nthis is the data representing the dates."
-                }
-            },
-            "type": "object"
-        },
         "DataValidationRule": {
             "description": "A data validation rule.",
             "id": "DataValidationRule",
@@ -2089,6 +1077,21 @@
             },
             "type": "object"
         },
+        "BasicChartDomain": {
+            "description": "The domain of a chart.\nFor example, if charting stock prices over time, this would be the date.",
+            "id": "BasicChartDomain",
+            "properties": {
+                "domain": {
+                    "$ref": "ChartData",
+                    "description": "The data of the domain. For example, if charting stock prices over time,\nthis is the data representing the dates."
+                },
+                "reversed": {
+                    "description": "True to reverse the order of the domain values (horizontal axis).",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "PasteDataRequest": {
             "description": "Inserts data into the spreadsheet starting at the specified coordinate.",
             "id": "PasteDataRequest",
@@ -2152,6 +1155,11 @@
             "description": "Appends rows or columns to the end of a sheet.",
             "id": "AppendDimensionRequest",
             "properties": {
+                "sheetId": {
+                    "description": "The sheet to append rows or columns to.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "dimension": {
                     "description": "Whether rows or columns should be appended.",
                     "enum": [
@@ -2170,11 +1178,6 @@
                     "description": "The number of rows or columns to append.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "sheetId": {
-                    "description": "The sheet to append rows or columns to.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -2238,10 +1241,41 @@
             },
             "type": "object"
         },
+        "UpdateDeveloperMetadataRequest": {
+            "description": "A request to update properties of developer metadata.\nUpdates the properties of the developer metadata selected by the filters to\nthe values provided in the DeveloperMetadata resource.  Callers must\nspecify the properties they wish to update in the fields parameter, as well\nas specify at least one DataFilter matching the metadata they wish to\nupdate.",
+            "id": "UpdateDeveloperMetadataRequest",
+            "properties": {
+                "dataFilters": {
+                    "description": "The filters matching the developer metadata entries to update.",
+                    "items": {
+                        "$ref": "DataFilter"
+                    },
+                    "type": "array"
+                },
+                "fields": {
+                    "description": "The fields that should be updated.  At least one field must be specified.\nThe root `developerMetadata` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                },
+                "developerMetadata": {
+                    "$ref": "DeveloperMetadata",
+                    "description": "The value that all metadata matched by the data filters will be updated to."
+                }
+            },
+            "type": "object"
+        },
         "PieChartSpec": {
             "description": "A <a href=\"/chart/interactive/docs/gallery/piechart\">pie chart</a>.",
             "id": "PieChartSpec",
             "properties": {
+                "threeDimensional": {
+                    "description": "True if the pie is three dimensional.",
+                    "type": "boolean"
+                },
+                "domain": {
+                    "$ref": "ChartData",
+                    "description": "The data that covers the domain of the pie chart."
+                },
                 "series": {
                     "$ref": "ChartData",
                     "description": "The data that covers the one and only series of the pie chart."
@@ -2272,37 +1306,6 @@
                         "Each pie slice has a label attached to it."
                     ],
                     "type": "string"
-                },
-                "threeDimensional": {
-                    "description": "True if the pie is three dimensional.",
-                    "type": "boolean"
-                },
-                "domain": {
-                    "$ref": "ChartData",
-                    "description": "The data that covers the domain of the pie chart."
-                }
-            },
-            "type": "object"
-        },
-        "UpdateDeveloperMetadataRequest": {
-            "description": "A request to update properties of developer metadata.\nUpdates the properties of the developer metadata selected by the filters to\nthe values provided in the DeveloperMetadata resource.  Callers must\nspecify the properties they wish to update in the fields parameter, as well\nas specify at least one DataFilter matching the metadata they wish to\nupdate.",
-            "id": "UpdateDeveloperMetadataRequest",
-            "properties": {
-                "dataFilters": {
-                    "description": "The filters matching the developer metadata entries to update.",
-                    "items": {
-                        "$ref": "DataFilter"
-                    },
-                    "type": "array"
-                },
-                "fields": {
-                    "description": "The fields that should be updated.  At least one field must be specified.\nThe root `developerMetadata` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.",
-                    "format": "google-fieldmask",
-                    "type": "string"
-                },
-                "developerMetadata": {
-                    "$ref": "DeveloperMetadata",
-                    "description": "The value that all metadata matched by the data filters will be updated to."
                 }
             },
             "type": "object"
@@ -2311,14 +1314,14 @@
             "description": "Updates properties of the filter view.",
             "id": "UpdateFilterViewRequest",
             "properties": {
-                "filter": {
-                    "$ref": "FilterView",
-                    "description": "The new properties of the filter view."
-                },
                 "fields": {
                     "description": "The fields that should be updated.  At least one field must be specified.\nThe root `filter` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.",
                     "format": "google-fieldmask",
                     "type": "string"
+                },
+                "filter": {
+                    "$ref": "FilterView",
+                    "description": "The new properties of the filter view."
                 }
             },
             "type": "object"
@@ -2394,6 +1397,225 @@
             },
             "type": "object"
         },
+        "Request": {
+            "description": "A single kind of update to apply to a spreadsheet.",
+            "id": "Request",
+            "properties": {
+                "updateDeveloperMetadata": {
+                    "$ref": "UpdateDeveloperMetadataRequest",
+                    "description": "Updates an existing developer metadata entry"
+                },
+                "updateDimensionProperties": {
+                    "$ref": "UpdateDimensionPropertiesRequest",
+                    "description": "Updates dimensions' properties."
+                },
+                "pasteData": {
+                    "$ref": "PasteDataRequest",
+                    "description": "Pastes data (HTML or delimited) into a sheet."
+                },
+                "setBasicFilter": {
+                    "$ref": "SetBasicFilterRequest",
+                    "description": "Sets the basic filter on a sheet."
+                },
+                "addConditionalFormatRule": {
+                    "$ref": "AddConditionalFormatRuleRequest",
+                    "description": "Adds a new conditional format rule."
+                },
+                "addNamedRange": {
+                    "$ref": "AddNamedRangeRequest",
+                    "description": "Adds a named range."
+                },
+                "updateCells": {
+                    "$ref": "UpdateCellsRequest",
+                    "description": "Updates many cells at once."
+                },
+                "updateSpreadsheetProperties": {
+                    "$ref": "UpdateSpreadsheetPropertiesRequest",
+                    "description": "Updates the spreadsheet's properties."
+                },
+                "deleteEmbeddedObject": {
+                    "$ref": "DeleteEmbeddedObjectRequest",
+                    "description": "Deletes an embedded object (e.g, chart, image) in a sheet."
+                },
+                "updateFilterView": {
+                    "$ref": "UpdateFilterViewRequest",
+                    "description": "Updates the properties of a filter view."
+                },
+                "addBanding": {
+                    "$ref": "AddBandingRequest",
+                    "description": "Adds a new banded range"
+                },
+                "autoResizeDimensions": {
+                    "$ref": "AutoResizeDimensionsRequest",
+                    "description": "Automatically resizes one or more dimensions based on the contents\nof the cells in that dimension."
+                },
+                "appendCells": {
+                    "$ref": "AppendCellsRequest",
+                    "description": "Appends cells after the last row with data in a sheet."
+                },
+                "cutPaste": {
+                    "$ref": "CutPasteRequest",
+                    "description": "Cuts data from one area and pastes it to another."
+                },
+                "mergeCells": {
+                    "$ref": "MergeCellsRequest",
+                    "description": "Merges cells together."
+                },
+                "updateNamedRange": {
+                    "$ref": "UpdateNamedRangeRequest",
+                    "description": "Updates a named range."
+                },
+                "updateSheetProperties": {
+                    "$ref": "UpdateSheetPropertiesRequest",
+                    "description": "Updates a sheet's properties."
+                },
+                "autoFill": {
+                    "$ref": "AutoFillRequest",
+                    "description": "Automatically fills in more data based on existing data."
+                },
+                "deleteDimension": {
+                    "$ref": "DeleteDimensionRequest",
+                    "description": "Deletes rows or columns in a sheet."
+                },
+                "sortRange": {
+                    "$ref": "SortRangeRequest",
+                    "description": "Sorts data in a range."
+                },
+                "deleteProtectedRange": {
+                    "$ref": "DeleteProtectedRangeRequest",
+                    "description": "Deletes a protected range."
+                },
+                "duplicateFilterView": {
+                    "$ref": "DuplicateFilterViewRequest",
+                    "description": "Duplicates a filter view."
+                },
+                "addChart": {
+                    "$ref": "AddChartRequest",
+                    "description": "Adds a chart."
+                },
+                "findReplace": {
+                    "$ref": "FindReplaceRequest",
+                    "description": "Finds and replaces occurrences of some text with other text."
+                },
+                "updateChartSpec": {
+                    "$ref": "UpdateChartSpecRequest",
+                    "description": "Updates a chart's specifications."
+                },
+                "textToColumns": {
+                    "$ref": "TextToColumnsRequest",
+                    "description": "Converts a column of text into many columns of text."
+                },
+                "updateProtectedRange": {
+                    "$ref": "UpdateProtectedRangeRequest",
+                    "description": "Updates a protected range."
+                },
+                "addSheet": {
+                    "$ref": "AddSheetRequest",
+                    "description": "Adds a sheet."
+                },
+                "copyPaste": {
+                    "$ref": "CopyPasteRequest",
+                    "description": "Copies data from one area and pastes it to another."
+                },
+                "deleteFilterView": {
+                    "$ref": "DeleteFilterViewRequest",
+                    "description": "Deletes a filter view from a sheet."
+                },
+                "insertDimension": {
+                    "$ref": "InsertDimensionRequest",
+                    "description": "Inserts new rows or columns in a sheet."
+                },
+                "deleteRange": {
+                    "$ref": "DeleteRangeRequest",
+                    "description": "Deletes a range of cells from a sheet, shifting the remaining cells."
+                },
+                "deleteBanding": {
+                    "$ref": "DeleteBandingRequest",
+                    "description": "Removes a banded range"
+                },
+                "addFilterView": {
+                    "$ref": "AddFilterViewRequest",
+                    "description": "Adds a filter view."
+                },
+                "setDataValidation": {
+                    "$ref": "SetDataValidationRequest",
+                    "description": "Sets data validation for one or more cells."
+                },
+                "updateBorders": {
+                    "$ref": "UpdateBordersRequest",
+                    "description": "Updates the borders in a range of cells."
+                },
+                "deleteConditionalFormatRule": {
+                    "$ref": "DeleteConditionalFormatRuleRequest",
+                    "description": "Deletes an existing conditional format rule."
+                },
+                "repeatCell": {
+                    "$ref": "RepeatCellRequest",
+                    "description": "Repeats a single cell across a range."
+                },
+                "clearBasicFilter": {
+                    "$ref": "ClearBasicFilterRequest",
+                    "description": "Clears the basic filter on a sheet."
+                },
+                "appendDimension": {
+                    "$ref": "AppendDimensionRequest",
+                    "description": "Appends dimensions to the end of a sheet."
+                },
+                "updateConditionalFormatRule": {
+                    "$ref": "UpdateConditionalFormatRuleRequest",
+                    "description": "Updates an existing conditional format rule."
+                },
+                "createDeveloperMetadata": {
+                    "$ref": "CreateDeveloperMetadataRequest",
+                    "description": "Creates new developer metadata"
+                },
+                "insertRange": {
+                    "$ref": "InsertRangeRequest",
+                    "description": "Inserts new cells in a sheet, shifting the existing cells."
+                },
+                "deleteDeveloperMetadata": {
+                    "$ref": "DeleteDeveloperMetadataRequest",
+                    "description": "Deletes developer metadata"
+                },
+                "moveDimension": {
+                    "$ref": "MoveDimensionRequest",
+                    "description": "Moves rows or columns to another location in a sheet."
+                },
+                "randomizeRange": {
+                    "$ref": "RandomizeRangeRequest",
+                    "description": "Randomizes the order of the rows in a range."
+                },
+                "updateBanding": {
+                    "$ref": "UpdateBandingRequest",
+                    "description": "Updates a banded range"
+                },
+                "deleteNamedRange": {
+                    "$ref": "DeleteNamedRangeRequest",
+                    "description": "Deletes a named range."
+                },
+                "addProtectedRange": {
+                    "$ref": "AddProtectedRangeRequest",
+                    "description": "Adds a protected range."
+                },
+                "duplicateSheet": {
+                    "$ref": "DuplicateSheetRequest",
+                    "description": "Duplicates a sheet."
+                },
+                "unmergeCells": {
+                    "$ref": "UnmergeCellsRequest",
+                    "description": "Unmerges merged cells."
+                },
+                "deleteSheet": {
+                    "$ref": "DeleteSheetRequest",
+                    "description": "Deletes a sheet."
+                },
+                "updateEmbeddedObjectPosition": {
+                    "$ref": "UpdateEmbeddedObjectPositionRequest",
+                    "description": "Updates an embedded object's (e.g. chart, image) position."
+                }
+            },
+            "type": "object"
+        },
         "BooleanCondition": {
             "description": "A condition that can evaluate to true or false.\nBooleanConditions are used by conditional formatting,\ndata validation, and the criteria in filters.",
             "id": "BooleanCondition",
@@ -2474,229 +1696,15 @@
             },
             "type": "object"
         },
-        "Request": {
-            "description": "A single kind of update to apply to a spreadsheet.",
-            "id": "Request",
-            "properties": {
-                "autoResizeDimensions": {
-                    "$ref": "AutoResizeDimensionsRequest",
-                    "description": "Automatically resizes one or more dimensions based on the contents\nof the cells in that dimension."
-                },
-                "appendCells": {
-                    "$ref": "AppendCellsRequest",
-                    "description": "Appends cells after the last row with data in a sheet."
-                },
-                "cutPaste": {
-                    "$ref": "CutPasteRequest",
-                    "description": "Cuts data from one area and pastes it to another."
-                },
-                "mergeCells": {
-                    "$ref": "MergeCellsRequest",
-                    "description": "Merges cells together."
-                },
-                "updateNamedRange": {
-                    "$ref": "UpdateNamedRangeRequest",
-                    "description": "Updates a named range."
-                },
-                "updateSheetProperties": {
-                    "$ref": "UpdateSheetPropertiesRequest",
-                    "description": "Updates a sheet's properties."
-                },
-                "deleteDimension": {
-                    "$ref": "DeleteDimensionRequest",
-                    "description": "Deletes rows or columns in a sheet."
-                },
-                "autoFill": {
-                    "$ref": "AutoFillRequest",
-                    "description": "Automatically fills in more data based on existing data."
-                },
-                "sortRange": {
-                    "$ref": "SortRangeRequest",
-                    "description": "Sorts data in a range."
-                },
-                "deleteProtectedRange": {
-                    "$ref": "DeleteProtectedRangeRequest",
-                    "description": "Deletes a protected range."
-                },
-                "duplicateFilterView": {
-                    "$ref": "DuplicateFilterViewRequest",
-                    "description": "Duplicates a filter view."
-                },
-                "addChart": {
-                    "$ref": "AddChartRequest",
-                    "description": "Adds a chart."
-                },
-                "findReplace": {
-                    "$ref": "FindReplaceRequest",
-                    "description": "Finds and replaces occurrences of some text with other text."
-                },
-                "textToColumns": {
-                    "$ref": "TextToColumnsRequest",
-                    "description": "Converts a column of text into many columns of text."
-                },
-                "updateChartSpec": {
-                    "$ref": "UpdateChartSpecRequest",
-                    "description": "Updates a chart's specifications."
-                },
-                "addSheet": {
-                    "$ref": "AddSheetRequest",
-                    "description": "Adds a sheet."
-                },
-                "updateProtectedRange": {
-                    "$ref": "UpdateProtectedRangeRequest",
-                    "description": "Updates a protected range."
-                },
-                "deleteFilterView": {
-                    "$ref": "DeleteFilterViewRequest",
-                    "description": "Deletes a filter view from a sheet."
-                },
-                "copyPaste": {
-                    "$ref": "CopyPasteRequest",
-                    "description": "Copies data from one area and pastes it to another."
-                },
-                "insertDimension": {
-                    "$ref": "InsertDimensionRequest",
-                    "description": "Inserts new rows or columns in a sheet."
-                },
-                "deleteRange": {
-                    "$ref": "DeleteRangeRequest",
-                    "description": "Deletes a range of cells from a sheet, shifting the remaining cells."
-                },
-                "deleteBanding": {
-                    "$ref": "DeleteBandingRequest",
-                    "description": "Removes a banded range"
-                },
-                "addFilterView": {
-                    "$ref": "AddFilterViewRequest",
-                    "description": "Adds a filter view."
-                },
-                "setDataValidation": {
-                    "$ref": "SetDataValidationRequest",
-                    "description": "Sets data validation for one or more cells."
-                },
-                "updateBorders": {
-                    "$ref": "UpdateBordersRequest",
-                    "description": "Updates the borders in a range of cells."
-                },
-                "deleteConditionalFormatRule": {
-                    "$ref": "DeleteConditionalFormatRuleRequest",
-                    "description": "Deletes an existing conditional format rule."
-                },
-                "repeatCell": {
-                    "$ref": "RepeatCellRequest",
-                    "description": "Repeats a single cell across a range."
-                },
-                "clearBasicFilter": {
-                    "$ref": "ClearBasicFilterRequest",
-                    "description": "Clears the basic filter on a sheet."
-                },
-                "appendDimension": {
-                    "$ref": "AppendDimensionRequest",
-                    "description": "Appends dimensions to the end of a sheet."
-                },
-                "createDeveloperMetadata": {
-                    "$ref": "CreateDeveloperMetadataRequest",
-                    "description": "Creates new developer metadata"
-                },
-                "updateConditionalFormatRule": {
-                    "$ref": "UpdateConditionalFormatRuleRequest",
-                    "description": "Updates an existing conditional format rule."
-                },
-                "insertRange": {
-                    "$ref": "InsertRangeRequest",
-                    "description": "Inserts new cells in a sheet, shifting the existing cells."
-                },
-                "moveDimension": {
-                    "$ref": "MoveDimensionRequest",
-                    "description": "Moves rows or columns to another location in a sheet."
-                },
-                "deleteDeveloperMetadata": {
-                    "$ref": "DeleteDeveloperMetadataRequest",
-                    "description": "Deletes developer metadata"
-                },
-                "randomizeRange": {
-                    "$ref": "RandomizeRangeRequest",
-                    "description": "Randomizes the order of the rows in a range."
-                },
-                "updateBanding": {
-                    "$ref": "UpdateBandingRequest",
-                    "description": "Updates a banded range"
-                },
-                "addProtectedRange": {
-                    "$ref": "AddProtectedRangeRequest",
-                    "description": "Adds a protected range."
-                },
-                "deleteNamedRange": {
-                    "$ref": "DeleteNamedRangeRequest",
-                    "description": "Deletes a named range."
-                },
-                "duplicateSheet": {
-                    "$ref": "DuplicateSheetRequest",
-                    "description": "Duplicates a sheet."
-                },
-                "deleteSheet": {
-                    "$ref": "DeleteSheetRequest",
-                    "description": "Deletes a sheet."
-                },
-                "unmergeCells": {
-                    "$ref": "UnmergeCellsRequest",
-                    "description": "Unmerges merged cells."
-                },
-                "updateEmbeddedObjectPosition": {
-                    "$ref": "UpdateEmbeddedObjectPositionRequest",
-                    "description": "Updates an embedded object's (e.g. chart, image) position."
-                },
-                "updateDimensionProperties": {
-                    "$ref": "UpdateDimensionPropertiesRequest",
-                    "description": "Updates dimensions' properties."
-                },
-                "updateDeveloperMetadata": {
-                    "$ref": "UpdateDeveloperMetadataRequest",
-                    "description": "Updates an existing developer metadata entry"
-                },
-                "pasteData": {
-                    "$ref": "PasteDataRequest",
-                    "description": "Pastes data (HTML or delimited) into a sheet."
-                },
-                "setBasicFilter": {
-                    "$ref": "SetBasicFilterRequest",
-                    "description": "Sets the basic filter on a sheet."
-                },
-                "addConditionalFormatRule": {
-                    "$ref": "AddConditionalFormatRuleRequest",
-                    "description": "Adds a new conditional format rule."
-                },
-                "updateCells": {
-                    "$ref": "UpdateCellsRequest",
-                    "description": "Updates many cells at once."
-                },
-                "addNamedRange": {
-                    "$ref": "AddNamedRangeRequest",
-                    "description": "Adds a named range."
-                },
-                "updateSpreadsheetProperties": {
-                    "$ref": "UpdateSpreadsheetPropertiesRequest",
-                    "description": "Updates the spreadsheet's properties."
-                },
-                "deleteEmbeddedObject": {
-                    "$ref": "DeleteEmbeddedObjectRequest",
-                    "description": "Deletes an embedded object (e.g, chart, image) in a sheet."
-                },
-                "updateFilterView": {
-                    "$ref": "UpdateFilterViewRequest",
-                    "description": "Updates the properties of a filter view."
-                },
-                "addBanding": {
-                    "$ref": "AddBandingRequest",
-                    "description": "Adds a new banded range"
-                }
-            },
-            "type": "object"
-        },
         "GridRange": {
             "description": "A range on a sheet.\nAll indexes are zero-based.\nIndexes are half open, e.g the start index is inclusive\nand the end index is exclusive -- [start_index, end_index).\nMissing indexes indicate the range is unbounded on that side.\n\nFor example, if `\"Sheet1\"` is sheet ID 0, then:\n\n  `Sheet1!A1:A1 == sheet_id: 0,\n                  start_row_index: 0, end_row_index: 1,\n                  start_column_index: 0, end_column_index: 1`\n\n  `Sheet1!A3:B4 == sheet_id: 0,\n                  start_row_index: 2, end_row_index: 4,\n                  start_column_index: 0, end_column_index: 2`\n\n  `Sheet1!A:B == sheet_id: 0,\n                start_column_index: 0, end_column_index: 2`\n\n  `Sheet1!A5:B == sheet_id: 0,\n                 start_row_index: 4,\n                 start_column_index: 0, end_column_index: 2`\n\n  `Sheet1 == sheet_id:0`\n\nThe start index must always be less than or equal to the end index.\nIf the start index equals the end index, then the range is empty.\nEmpty ranges are typically not meaningful and are usually rendered in the\nUI as `#REF!`.",
             "id": "GridRange",
             "properties": {
+                "sheetId": {
+                    "description": "The sheet this range is on.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "endColumnIndex": {
                     "description": "The end column (exclusive) of the range, or not set if unbounded.",
                     "format": "int32",
@@ -2716,11 +1724,6 @@
                     "description": "The start column (inclusive) of the range, or not set if unbounded.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "sheetId": {
-                    "description": "The sheet this range is on.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -2729,27 +1732,6 @@
             "description": "The specification for a basic chart.  See BasicChartType for the list\nof charts this supports.",
             "id": "BasicChartSpec",
             "properties": {
-                "compareMode": {
-                    "description": "The behavior of tooltips and data highlighting when hovering on data and\nchart area.",
-                    "enum": [
-                        "BASIC_CHART_COMPARE_MODE_UNSPECIFIED",
-                        "DATUM",
-                        "CATEGORY"
-                    ],
-                    "enumDescriptions": [
-                        "Default value, do not use.",
-                        "Only the focused data element is highlighted and shown in the tooltip.",
-                        "All data elements with the same category (e.g., domain value) are\nhighlighted and shown in the tooltip."
-                    ],
-                    "type": "string"
-                },
-                "domains": {
-                    "description": "The domain of data this is charting.\nOnly a single domain is supported.",
-                    "items": {
-                        "$ref": "BasicChartDomain"
-                    },
-                    "type": "array"
-                },
                 "lineSmoothing": {
                     "description": "Gets whether all lines should be rendered smooth or straight by default.\nApplies to Line charts.",
                     "type": "boolean"
@@ -2775,10 +1757,6 @@
                     ],
                     "type": "string"
                 },
-                "threeDimensional": {
-                    "description": "True to make the chart 3D.\nApplies to Bar and Column charts.",
-                    "type": "boolean"
-                },
                 "axis": {
                     "description": "The axis on the chart.",
                     "items": {
@@ -2786,6 +1764,10 @@
                     },
                     "type": "array"
                 },
+                "threeDimensional": {
+                    "description": "True to make the chart 3D.\nApplies to Bar and Column charts.",
+                    "type": "boolean"
+                },
                 "interpolateNulls": {
                     "description": "If some values in a series are missing, gaps may appear in the chart (e.g,\nsegments of lines in a line chart will be missing).  To eliminate these\ngaps set this to true.\nApplies to Line, Area, and Combo charts.",
                     "type": "boolean"
@@ -2840,6 +1822,42 @@
                         "No legend is rendered."
                     ],
                     "type": "string"
+                },
+                "compareMode": {
+                    "description": "The behavior of tooltips and data highlighting when hovering on data and\nchart area.",
+                    "enum": [
+                        "BASIC_CHART_COMPARE_MODE_UNSPECIFIED",
+                        "DATUM",
+                        "CATEGORY"
+                    ],
+                    "enumDescriptions": [
+                        "Default value, do not use.",
+                        "Only the focused data element is highlighted and shown in the tooltip.",
+                        "All data elements with the same category (e.g., domain value) are\nhighlighted and shown in the tooltip."
+                    ],
+                    "type": "string"
+                },
+                "domains": {
+                    "description": "The domain of data this is charting.\nOnly a single domain is supported.",
+                    "items": {
+                        "$ref": "BasicChartDomain"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SetDataValidationRequest": {
+            "description": "Sets a data validation rule to every cell in the range.\nTo clear validation in a range, call this with no rule specified.",
+            "id": "SetDataValidationRequest",
+            "properties": {
+                "range": {
+                    "$ref": "GridRange",
+                    "description": "The range the data validation rule should apply to."
+                },
+                "rule": {
+                    "$ref": "DataValidationRule",
+                    "description": "The data validation rule to set on each cell in the range,\nor empty to clear the data validation in the range."
                 }
             },
             "type": "object"
@@ -2848,6 +1866,28 @@
             "description": "A <a href=\"/chart/interactive/docs/gallery/bubblechart\">bubble chart</a>.",
             "id": "BubbleChartSpec",
             "properties": {
+                "groupIds": {
+                    "$ref": "ChartData",
+                    "description": "The data containing the bubble group IDs. All bubbles with the same group\nID will be drawn in the same color. If bubble_sizes is specified then\nthis field must also be specified but may contain blank values.\nThis field is optional."
+                },
+                "bubbleLabels": {
+                    "$ref": "ChartData",
+                    "description": "The data containing the bubble labels.  These do not need to be unique."
+                },
+                "bubbleMinRadiusSize": {
+                    "description": "The minimum radius size of the bubbles, in pixels.\nIf specific, the field must be a positive value.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "bubbleMaxRadiusSize": {
+                    "description": "The max radius size of the bubbles, in pixels.\nIf specified, the field must be a positive value.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "series": {
+                    "$ref": "ChartData",
+                    "description": "The data contianing the bubble y-values.  These values locate the bubbles\nin the chart vertically."
+                },
                 "legendPosition": {
                     "description": "Where the legend of the chart should be drawn.",
                     "enum": [
@@ -2874,59 +1914,22 @@
                     "$ref": "ChartData",
                     "description": "The data containing the bubble x-values.  These values locate the bubbles\nin the chart horizontally."
                 },
+                "bubbleSizes": {
+                    "$ref": "ChartData",
+                    "description": "The data contianing the bubble sizes.  Bubble sizes are used to draw\nthe bubbles at different sizes relative to each other.\nIf specified, group_ids must also be specified.  This field is\noptional."
+                },
                 "bubbleOpacity": {
                     "description": "The opacity of the bubbles between 0 and 1.0.\n0 is fully transparent and 1 is fully opaque.",
                     "format": "float",
                     "type": "number"
                 },
-                "bubbleSizes": {
-                    "$ref": "ChartData",
-                    "description": "The data contianing the bubble sizes.  Bubble sizes are used to draw\nthe bubbles at different sizes relative to each other.\nIf specified, group_ids must also be specified.  This field is\noptional."
-                },
-                "bubbleTextStyle": {
-                    "$ref": "TextFormat",
-                    "description": "The format of the text inside the bubbles.\nUnderline and Strikethrough are not supported."
-                },
                 "bubbleBorderColor": {
                     "$ref": "Color",
                     "description": "The bubble border color."
                 },
-                "groupIds": {
-                    "$ref": "ChartData",
-                    "description": "The data containing the bubble group IDs. All bubbles with the same group\nID will be drawn in the same color. If bubble_sizes is specified then\nthis field must also be specified but may contain blank values.\nThis field is optional."
-                },
-                "bubbleLabels": {
-                    "$ref": "ChartData",
-                    "description": "The data containing the bubble labels.  These do not need to be unique."
-                },
-                "bubbleMinRadiusSize": {
-                    "description": "The minimum radius size of the bubbles, in pixels.\nIf specific, the field must be a positive value.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "bubbleMaxRadiusSize": {
-                    "description": "The max radius size of the bubbles, in pixels.\nIf specified, the field must be a positive value.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "series": {
-                    "$ref": "ChartData",
-                    "description": "The data contianing the bubble y-values.  These values locate the bubbles\nin the chart vertically."
-                }
-            },
-            "type": "object"
-        },
-        "SetDataValidationRequest": {
-            "description": "Sets a data validation rule to every cell in the range.\nTo clear validation in a range, call this with no rule specified.",
-            "id": "SetDataValidationRequest",
-            "properties": {
-                "rule": {
-                    "$ref": "DataValidationRule",
-                    "description": "The data validation rule to set on each cell in the range,\nor empty to clear the data validation in the range."
-                },
-                "range": {
-                    "$ref": "GridRange",
-                    "description": "The range the data validation rule should apply to."
+                "bubbleTextStyle": {
+                    "$ref": "TextFormat",
+                    "description": "The format of the text inside the bubbles.\nUnderline and Strikethrough are not supported."
                 }
             },
             "type": "object"
@@ -2935,6 +1938,14 @@
             "description": "Data about a specific cell.",
             "id": "CellData",
             "properties": {
+                "pivotTable": {
+                    "$ref": "PivotTable",
+                    "description": "A pivot table anchored at this cell. The size of pivot table itself\nis computed dynamically based on its data, grouping, filters, values,\netc. Only the top-left cell of the pivot table contains the pivot table\ndefinition. The other cells will contain the calculated values of the\nresults of the pivot in their effective_value fields."
+                },
+                "userEnteredFormat": {
+                    "$ref": "CellFormat",
+                    "description": "The format the user entered for the cell.\n\nWhen writing, the new format will be merged with the existing format."
+                },
                 "note": {
                     "description": "Any note on the cell.",
                     "type": "string"
@@ -2969,37 +1980,6 @@
                 "hyperlink": {
                     "description": "A hyperlink this cell points to, if any.\nThis field is read-only.  (To set it, use a `=HYPERLINK` formula\nin the userEnteredValue.formulaValue\nfield.)",
                     "type": "string"
-                },
-                "pivotTable": {
-                    "$ref": "PivotTable",
-                    "description": "A pivot table anchored at this cell. The size of pivot table itself\nis computed dynamically based on its data, grouping, filters, values,\netc. Only the top-left cell of the pivot table contains the pivot table\ndefinition. The other cells will contain the calculated values of the\nresults of the pivot in their effective_value fields."
-                },
-                "userEnteredFormat": {
-                    "$ref": "CellFormat",
-                    "description": "The format the user entered for the cell.\n\nWhen writing, the new format will be merged with the existing format."
-                }
-            },
-            "type": "object"
-        },
-        "TextPosition": {
-            "description": "Position settings for text.",
-            "id": "TextPosition",
-            "properties": {
-                "horizontalAlignment": {
-                    "description": "Horizontal alignment setting for the piece of text.",
-                    "enum": [
-                        "HORIZONTAL_ALIGN_UNSPECIFIED",
-                        "LEFT",
-                        "CENTER",
-                        "RIGHT"
-                    ],
-                    "enumDescriptions": [
-                        "The horizontal alignment is not specified. Do not use this.",
-                        "The text is explicitly aligned to the left of the cell.",
-                        "The text is explicitly aligned to the center of the cell.",
-                        "The text is explicitly aligned to the right of the cell."
-                    ],
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -3062,17 +2042,33 @@
             },
             "type": "object"
         },
+        "TextPosition": {
+            "description": "Position settings for text.",
+            "id": "TextPosition",
+            "properties": {
+                "horizontalAlignment": {
+                    "description": "Horizontal alignment setting for the piece of text.",
+                    "enum": [
+                        "HORIZONTAL_ALIGN_UNSPECIFIED",
+                        "LEFT",
+                        "CENTER",
+                        "RIGHT"
+                    ],
+                    "enumDescriptions": [
+                        "The horizontal alignment is not specified. Do not use this.",
+                        "The text is explicitly aligned to the left of the cell.",
+                        "The text is explicitly aligned to the center of the cell.",
+                        "The text is explicitly aligned to the right of the cell."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "BatchUpdateSpreadsheetRequest": {
             "description": "The request for updating any aspect of a spreadsheet.",
             "id": "BatchUpdateSpreadsheetRequest",
             "properties": {
-                "requests": {
-                    "description": "A list of updates to apply to the spreadsheet.\nRequests will be applied in the order they are specified.\nIf any request is not valid, no requests will be applied.",
-                    "items": {
-                        "$ref": "Request"
-                    },
-                    "type": "array"
-                },
                 "responseIncludeGridData": {
                     "description": "True if grid data should be returned. Meaningful only if\nif include_spreadsheet_response is 'true'.\nThis parameter is ignored if a field mask was set in the request.",
                     "type": "boolean"
@@ -3087,6 +2083,13 @@
                 "includeSpreadsheetInResponse": {
                     "description": "Determines if the update response should include the spreadsheet\nresource.",
                     "type": "boolean"
+                },
+                "requests": {
+                    "description": "A list of updates to apply to the spreadsheet.\nRequests will be applied in the order they are specified.\nIf any request is not valid, no requests will be applied.",
+                    "items": {
+                        "$ref": "Request"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -3095,6 +2098,11 @@
             "description": "The amount of padding around the cell, in pixels.\nWhen updating padding, every field must be specified.",
             "id": "Padding",
             "properties": {
+                "right": {
+                    "description": "The right padding of the cell.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "bottom": {
                     "description": "The bottom padding of the cell.",
                     "format": "int32",
@@ -3109,11 +2117,6 @@
                     "description": "The left padding of the cell.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "right": {
-                    "description": "The right padding of the cell.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -3122,10 +2125,6 @@
             "description": "An axis of the chart.\nA chart may not have more than one axis per\naxis position.",
             "id": "BasicChartAxis",
             "properties": {
-                "format": {
-                    "$ref": "TextFormat",
-                    "description": "The format of the title.\nOnly valid if the axis is not associated with the domain."
-                },
                 "title": {
                     "description": "The title of this axis. If set, this overrides any title inferred\nfrom headers of the data.",
                     "type": "string"
@@ -3149,6 +2148,10 @@
                 "titleTextPosition": {
                     "$ref": "TextPosition",
                     "description": "The axis title text position."
+                },
+                "format": {
+                    "$ref": "TextFormat",
+                    "description": "The format of the title.\nOnly valid if the axis is not associated with the domain."
                 }
             },
             "type": "object"
@@ -3192,38 +2195,10 @@
             },
             "type": "object"
         },
-        "DeleteDeveloperMetadataResponse": {
-            "description": "The response from deleting developer metadata.",
-            "id": "DeleteDeveloperMetadataResponse",
-            "properties": {
-                "deletedDeveloperMetadata": {
-                    "description": "The metadata that was deleted.",
-                    "items": {
-                        "$ref": "DeveloperMetadata"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "BatchGetValuesByDataFilterRequest": {
             "description": "The request for retrieving a range of values in a spreadsheet selected by a\nset of DataFilters.",
             "id": "BatchGetValuesByDataFilterRequest",
             "properties": {
-                "majorDimension": {
-                    "description": "The major dimension that results should use.\n\nFor example, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,\nthen a request that selects that range and sets `majorDimension=ROWS` will\nreturn `[[1,2],[3,4]]`,\nwhereas a request that sets `majorDimension=COLUMNS` will return\n`[[1,3],[2,4]]`.",
-                    "enum": [
-                        "DIMENSION_UNSPECIFIED",
-                        "ROWS",
-                        "COLUMNS"
-                    ],
-                    "enumDescriptions": [
-                        "The default value, do not use.",
-                        "Operates on the rows of a sheet.",
-                        "Operates on the columns of a sheet."
-                    ],
-                    "type": "string"
-                },
                 "dataFilters": {
                     "description": "The data filters used to match the ranges of values to retrieve.  Ranges\nthat match any of the specified data filters will be included in the\nresponse.",
                     "items": {
@@ -3256,6 +2231,34 @@
                         "Values will not be calculated.  The reply will include the formulas.\nFor example, if `A1` is `1.23` and `A2` is `=A1` and formatted as currency,\nthen A2 would return `\"=A1\"`."
                     ],
                     "type": "string"
+                },
+                "majorDimension": {
+                    "description": "The major dimension that results should use.\n\nFor example, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,\nthen a request that selects that range and sets `majorDimension=ROWS` will\nreturn `[[1,2],[3,4]]`,\nwhereas a request that sets `majorDimension=COLUMNS` will return\n`[[1,3],[2,4]]`.",
+                    "enum": [
+                        "DIMENSION_UNSPECIFIED",
+                        "ROWS",
+                        "COLUMNS"
+                    ],
+                    "enumDescriptions": [
+                        "The default value, do not use.",
+                        "Operates on the rows of a sheet.",
+                        "Operates on the columns of a sheet."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DeleteDeveloperMetadataResponse": {
+            "description": "The response from deleting developer metadata.",
+            "id": "DeleteDeveloperMetadataResponse",
+            "properties": {
+                "deletedDeveloperMetadata": {
+                    "description": "The metadata that was deleted.",
+                    "items": {
+                        "$ref": "DeveloperMetadata"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -3264,6 +2267,11 @@
             "description": "The response when updating a range of values in a spreadsheet.",
             "id": "BatchUpdateValuesResponse",
             "properties": {
+                "totalUpdatedRows": {
+                    "description": "The total number of rows where at least one cell in the row was updated.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "responses": {
                     "description": "One UpdateValuesResponse per requested range, in the same order as\nthe requests appeared.",
                     "items": {
@@ -3289,11 +2297,6 @@
                 "spreadsheetId": {
                     "description": "The spreadsheet the updates were applied to.",
                     "type": "string"
-                },
-                "totalUpdatedRows": {
-                    "description": "The total number of rows where at least one cell in the row was updated.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -3384,17 +2387,6 @@
             },
             "type": "object"
         },
-        "DuplicateFilterViewResponse": {
-            "description": "The result of a filter view being duplicated.",
-            "id": "DuplicateFilterViewResponse",
-            "properties": {
-                "filter": {
-                    "$ref": "FilterView",
-                    "description": "The newly created filter."
-                }
-            },
-            "type": "object"
-        },
         "DeveloperMetadata": {
             "description": "Developer metadata associated with a location or object in a spreadsheet.\nDeveloper metadata may be used to associate arbitrary data with various\nparts of a spreadsheet and will remain associated at those locations as they\nmove around and the spreadsheet is edited.  For example, if developer\nmetadata is associated with row 5 and another row is then subsequently\ninserted above row 5, that original metadata will still be associated with\nthe row it was first associated with (what is now row 6). If the associated\nobject is deleted its metadata will be deleted too.",
             "id": "DeveloperMetadata",
@@ -3433,6 +2425,17 @@
             },
             "type": "object"
         },
+        "DuplicateFilterViewResponse": {
+            "description": "The result of a filter view being duplicated.",
+            "id": "DuplicateFilterViewResponse",
+            "properties": {
+                "filter": {
+                    "$ref": "FilterView",
+                    "description": "The newly created filter."
+                }
+            },
+            "type": "object"
+        },
         "DuplicateSheetResponse": {
             "description": "The result of duplicating a sheet.",
             "id": "DuplicateSheetResponse",
@@ -3444,6 +2447,18 @@
             },
             "type": "object"
         },
+        "ClearBasicFilterRequest": {
+            "description": "Clears the basic filter, if any exists on the sheet.",
+            "id": "ClearBasicFilterRequest",
+            "properties": {
+                "sheetId": {
+                    "description": "The sheet ID on which the basic filter should be cleared.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
         "TextToColumnsRequest": {
             "description": "Splits a column of text into multiple columns,\nbased on a delimiter in each cell.",
             "id": "TextToColumnsRequest",
@@ -3479,40 +2494,6 @@
             },
             "type": "object"
         },
-        "ClearBasicFilterRequest": {
-            "description": "Clears the basic filter, if any exists on the sheet.",
-            "id": "ClearBasicFilterRequest",
-            "properties": {
-                "sheetId": {
-                    "description": "The sheet ID on which the basic filter should be cleared.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "BatchUpdateSpreadsheetResponse": {
-            "description": "The reply for batch updating a spreadsheet.",
-            "id": "BatchUpdateSpreadsheetResponse",
-            "properties": {
-                "updatedSpreadsheet": {
-                    "$ref": "Spreadsheet",
-                    "description": "The spreadsheet after updates were applied. This is only set if\n[BatchUpdateSpreadsheetRequest.include_spreadsheet_in_response] is `true`."
-                },
-                "replies": {
-                    "description": "The reply of the updates.  This maps 1:1 with the updates, although\nreplies to some requests may be empty.",
-                    "items": {
-                        "$ref": "Response"
-                    },
-                    "type": "array"
-                },
-                "spreadsheetId": {
-                    "description": "The spreadsheet the updates were applied to.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "DeleteBandingRequest": {
             "description": "Removes the banded range with the given ID from the spreadsheet.",
             "id": "DeleteBandingRequest",
@@ -3525,10 +2506,36 @@
             },
             "type": "object"
         },
+        "BatchUpdateSpreadsheetResponse": {
+            "description": "The reply for batch updating a spreadsheet.",
+            "id": "BatchUpdateSpreadsheetResponse",
+            "properties": {
+                "spreadsheetId": {
+                    "description": "The spreadsheet the updates were applied to.",
+                    "type": "string"
+                },
+                "updatedSpreadsheet": {
+                    "$ref": "Spreadsheet",
+                    "description": "The spreadsheet after updates were applied. This is only set if\n[BatchUpdateSpreadsheetRequest.include_spreadsheet_in_response] is `true`."
+                },
+                "replies": {
+                    "description": "The reply of the updates.  This maps 1:1 with the updates, although\nreplies to some requests may be empty.",
+                    "items": {
+                        "$ref": "Response"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "AppendValuesResponse": {
             "description": "The response when updating a range of values in a spreadsheet.",
             "id": "AppendValuesResponse",
             "properties": {
+                "tableRange": {
+                    "description": "The range (in A1 notation) of the table that values are being appended to\n(before the values were appended).\nEmpty if no table was found.",
+                    "type": "string"
+                },
                 "spreadsheetId": {
                     "description": "The spreadsheet the updates were applied to.",
                     "type": "string"
@@ -3536,10 +2543,31 @@
                 "updates": {
                     "$ref": "UpdateValuesResponse",
                     "description": "Information about the updates that were applied."
-                },
-                "tableRange": {
-                    "description": "The range (in A1 notation) of the table that values are being appended to\n(before the values were appended).\nEmpty if no table was found.",
-                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "PivotFilterCriteria": {
+            "description": "Criteria for showing/hiding rows in a pivot table.",
+            "id": "PivotFilterCriteria",
+            "properties": {
+                "visibleValues": {
+                    "description": "Values that should be included.  Values not listed here are excluded.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AddFilterViewRequest": {
+            "description": "Adds a filter view.",
+            "id": "AddFilterViewRequest",
+            "properties": {
+                "filter": {
+                    "$ref": "FilterView",
+                    "description": "The filter to add. The filterViewId\nfield is optional; if one is not set, an id will be randomly generated. (It\nis an error to specify the ID of a filter that already exists.)"
                 }
             },
             "type": "object"
@@ -3560,31 +2588,6 @@
             },
             "type": "object"
         },
-        "AddFilterViewRequest": {
-            "description": "Adds a filter view.",
-            "id": "AddFilterViewRequest",
-            "properties": {
-                "filter": {
-                    "$ref": "FilterView",
-                    "description": "The filter to add. The filterViewId\nfield is optional; if one is not set, an id will be randomly generated. (It\nis an error to specify the ID of a filter that already exists.)"
-                }
-            },
-            "type": "object"
-        },
-        "PivotFilterCriteria": {
-            "description": "Criteria for showing/hiding rows in a pivot table.",
-            "id": "PivotFilterCriteria",
-            "properties": {
-                "visibleValues": {
-                    "description": "Values that should be included.  Values not listed here are excluded.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "AddConditionalFormatRuleRequest": {
             "description": "Adds a new conditional format rule at the given index.\nAll subsequent rules' indexes are incremented.",
             "id": "AddConditionalFormatRuleRequest",
@@ -3601,59 +2604,10 @@
             },
             "type": "object"
         },
-        "CreateDeveloperMetadataRequest": {
-            "description": "A request to create developer metadata.",
-            "id": "CreateDeveloperMetadataRequest",
-            "properties": {
-                "developerMetadata": {
-                    "$ref": "DeveloperMetadata",
-                    "description": "The developer metadata to create."
-                }
-            },
-            "type": "object"
-        },
         "ChartSpec": {
             "description": "The specifications of a chart.",
             "id": "ChartSpec",
             "properties": {
-                "candlestickChart": {
-                    "$ref": "CandlestickChartSpec",
-                    "description": "A candlestick chart specification."
-                },
-                "bubbleChart": {
-                    "$ref": "BubbleChartSpec",
-                    "description": "A bubble chart specification."
-                },
-                "fontName": {
-                    "description": "The name of the font to use by default for all chart text (e.g. title,\naxis labels, legend).  If a font is specified for a specific part of the\nchart it will override this font name.",
-                    "type": "string"
-                },
-                "maximized": {
-                    "description": "True to make a chart fill the entire space in which it's rendered with\nminimum padding.  False to use the default padding.\n(Not applicable to Geo and Org charts.)",
-                    "type": "boolean"
-                },
-                "hiddenDimensionStrategy": {
-                    "description": "Determines how the charts will use hidden rows or columns.",
-                    "enum": [
-                        "CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED",
-                        "SKIP_HIDDEN_ROWS_AND_COLUMNS",
-                        "SKIP_HIDDEN_ROWS",
-                        "SKIP_HIDDEN_COLUMNS",
-                        "SHOW_ALL"
-                    ],
-                    "enumDescriptions": [
-                        "Default value, do not use.",
-                        "Charts will skip hidden rows and columns.",
-                        "Charts will skip hidden rows only.",
-                        "Charts will skip hidden columns only.",
-                        "Charts will not skip any hidden rows or columns."
-                    ],
-                    "type": "string"
-                },
-                "subtitleTextFormat": {
-                    "$ref": "TextFormat",
-                    "description": "The subtitle text format.\nStrikethrough and underline are not supported."
-                },
                 "subtitle": {
                     "description": "The subtitle of the chart.",
                     "type": "string"
@@ -3697,6 +2651,55 @@
                 "histogramChart": {
                     "$ref": "HistogramChartSpec",
                     "description": "A histogram chart specification."
+                },
+                "candlestickChart": {
+                    "$ref": "CandlestickChartSpec",
+                    "description": "A candlestick chart specification."
+                },
+                "bubbleChart": {
+                    "$ref": "BubbleChartSpec",
+                    "description": "A bubble chart specification."
+                },
+                "fontName": {
+                    "description": "The name of the font to use by default for all chart text (e.g. title,\naxis labels, legend).  If a font is specified for a specific part of the\nchart it will override this font name.",
+                    "type": "string"
+                },
+                "maximized": {
+                    "description": "True to make a chart fill the entire space in which it's rendered with\nminimum padding.  False to use the default padding.\n(Not applicable to Geo and Org charts.)",
+                    "type": "boolean"
+                },
+                "hiddenDimensionStrategy": {
+                    "description": "Determines how the charts will use hidden rows or columns.",
+                    "enum": [
+                        "CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED",
+                        "SKIP_HIDDEN_ROWS_AND_COLUMNS",
+                        "SKIP_HIDDEN_ROWS",
+                        "SKIP_HIDDEN_COLUMNS",
+                        "SHOW_ALL"
+                    ],
+                    "enumDescriptions": [
+                        "Default value, do not use.",
+                        "Charts will skip hidden rows and columns.",
+                        "Charts will skip hidden rows only.",
+                        "Charts will skip hidden columns only.",
+                        "Charts will not skip any hidden rows or columns."
+                    ],
+                    "type": "string"
+                },
+                "subtitleTextFormat": {
+                    "$ref": "TextFormat",
+                    "description": "The subtitle text format.\nStrikethrough and underline are not supported."
+                }
+            },
+            "type": "object"
+        },
+        "CreateDeveloperMetadataRequest": {
+            "description": "A request to create developer metadata.",
+            "id": "CreateDeveloperMetadataRequest",
+            "properties": {
+                "developerMetadata": {
+                    "$ref": "DeveloperMetadata",
+                    "description": "The developer metadata to create."
                 }
             },
             "type": "object"
@@ -3719,43 +2722,6 @@
             },
             "type": "object"
         },
-        "NumberFormat": {
-            "description": "The number format of a cell.",
-            "id": "NumberFormat",
-            "properties": {
-                "type": {
-                    "description": "The type of the number format.\nWhen writing, this field must be set.",
-                    "enum": [
-                        "NUMBER_FORMAT_TYPE_UNSPECIFIED",
-                        "TEXT",
-                        "NUMBER",
-                        "PERCENT",
-                        "CURRENCY",
-                        "DATE",
-                        "TIME",
-                        "DATE_TIME",
-                        "SCIENTIFIC"
-                    ],
-                    "enumDescriptions": [
-                        "The number format is not specified\nand is based on the contents of the cell.\nDo not explicitly use this.",
-                        "Text formatting, e.g `1000.12`",
-                        "Number formatting, e.g, `1,000.12`",
-                        "Percent formatting, e.g `10.12%`",
-                        "Currency formatting, e.g `$1,000.12`",
-                        "Date formatting, e.g `9/26/2008`",
-                        "Time formatting, e.g `3:59:00 PM`",
-                        "Date+Time formatting, e.g `9/26/08 15:59:00`",
-                        "Scientific number formatting, e.g `1.01E+03`"
-                    ],
-                    "type": "string"
-                },
-                "pattern": {
-                    "description": "Pattern string used for formatting.  If not set, a default pattern based on\nthe user's locale will be used if necessary for the given type.\nSee the [Date and Number Formats guide](/sheets/api/guides/formats) for more\ninformation about the supported patterns.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "DataFilterValueRange": {
             "description": "A range of values whose location is specified by a DataFilter.",
             "id": "DataFilterValueRange",
@@ -3791,6 +2757,43 @@
             },
             "type": "object"
         },
+        "NumberFormat": {
+            "description": "The number format of a cell.",
+            "id": "NumberFormat",
+            "properties": {
+                "pattern": {
+                    "description": "Pattern string used for formatting.  If not set, a default pattern based on\nthe user's locale will be used if necessary for the given type.\nSee the [Date and Number Formats guide](/sheets/api/guides/formats) for more\ninformation about the supported patterns.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The type of the number format.\nWhen writing, this field must be set.",
+                    "enum": [
+                        "NUMBER_FORMAT_TYPE_UNSPECIFIED",
+                        "TEXT",
+                        "NUMBER",
+                        "PERCENT",
+                        "CURRENCY",
+                        "DATE",
+                        "TIME",
+                        "DATE_TIME",
+                        "SCIENTIFIC"
+                    ],
+                    "enumDescriptions": [
+                        "The number format is not specified\nand is based on the contents of the cell.\nDo not explicitly use this.",
+                        "Text formatting, e.g `1000.12`",
+                        "Number formatting, e.g, `1,000.12`",
+                        "Percent formatting, e.g `10.12%`",
+                        "Currency formatting, e.g `$1,000.12`",
+                        "Date formatting, e.g `9/26/2008`",
+                        "Time formatting, e.g `3:59:00 PM`",
+                        "Date+Time formatting, e.g `9/26/08 15:59:00`",
+                        "Scientific number formatting, e.g `1.01E+03`"
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "CandlestickDomain": {
             "description": "The domain of a CandlestickChart.",
             "id": "CandlestickDomain",
@@ -3836,6 +2839,10 @@
                     "description": "True if the sheet is hidden in the UI, false if it's visible.",
                     "type": "boolean"
                 },
+                "gridProperties": {
+                    "$ref": "GridProperties",
+                    "description": "Additional properties of the sheet if this sheet is a grid.\n(If the sheet is an object sheet, containing a chart or image, then\nthis field will be absent.)\nWhen writing it is an error to set any grid properties on non-grid sheets."
+                },
                 "sheetType": {
                     "description": "The type of sheet. Defaults to GRID.\nThis field cannot be changed once set.",
                     "enum": [
@@ -3849,10 +2856,6 @@
                         "The sheet has no grid and instead has an object like a chart or image."
                     ],
                     "type": "string"
-                },
-                "gridProperties": {
-                    "$ref": "GridProperties",
-                    "description": "Additional properties of the sheet if this sheet is a grid.\n(If the sheet is an object sheet, containing a chart or image, then\nthis field will be absent.)\nWhen writing it is an error to set any grid properties on non-grid sheets."
                 }
             },
             "type": "object"
@@ -3881,6 +2884,15 @@
             "description": "A combination of a source range and how to extend that source.",
             "id": "SourceAndDestination",
             "properties": {
+                "fillLength": {
+                    "description": "The number of rows or columns that data should be filled into.\nPositive numbers expand beyond the last row or last column\nof the source.  Negative numbers expand before the first row\nor first column of the source.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "source": {
+                    "$ref": "GridRange",
+                    "description": "The location of the data to use as the source of the autofill."
+                },
                 "dimension": {
                     "description": "The dimension that data should be filled into.",
                     "enum": [
@@ -3894,15 +2906,6 @@
                         "Operates on the columns of a sheet."
                     ],
                     "type": "string"
-                },
-                "fillLength": {
-                    "description": "The number of rows or columns that data should be filled into.\nPositive numbers expand beyond the last row or last column\nof the source.  Negative numbers expand before the first row\nor first column of the source.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "source": {
-                    "$ref": "GridRange",
-                    "description": "The location of the data to use as the source of the autofill."
                 }
             },
             "type": "object"
@@ -3923,6 +2926,10 @@
                     "$ref": "ChartData",
                     "description": "The data containing the label of the parent for the corresponding node.\nA blank value indicates that the node has no parent and is a top-level\nnode.\nThis field is optional."
                 },
+                "labels": {
+                    "$ref": "ChartData",
+                    "description": "The data containing the labels for all the nodes in the chart.  Labels\nmust be unique."
+                },
                 "nodeSize": {
                     "description": "The size of the org chart nodes.",
                     "enum": [
@@ -3939,10 +2946,6 @@
                     ],
                     "type": "string"
                 },
-                "labels": {
-                    "$ref": "ChartData",
-                    "description": "The data containing the labels for all the nodes in the chart.  Labels\nmust be unique."
-                },
                 "nodeColor": {
                     "$ref": "Color",
                     "description": "The color of the org chart nodes."
@@ -3954,6 +2957,10 @@
             "description": "A filter view.",
             "id": "FilterView",
             "properties": {
+                "namedRangeId": {
+                    "description": "The named range this filter view is backed by, if any.\n\nWhen writing, only one of range or named_range_id\nmay be set.",
+                    "type": "string"
+                },
                 "filterViewId": {
                     "description": "The ID of the filter view.",
                     "format": "int32",
@@ -3980,10 +2987,6 @@
                         "$ref": "SortSpec"
                     },
                     "type": "array"
-                },
-                "namedRangeId": {
-                    "description": "The named range this filter view is backed by, if any.\n\nWhen writing, only one of range or named_range_id\nmay be set.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -4006,6 +3009,10 @@
             "description": "Properties referring a single dimension (either row or column). If both\nBandedRange.row_properties and BandedRange.column_properties are\nset, the fill colors are applied to cells according to the following rules:\n\n* header_color and footer_color take priority over band colors.\n* first_band_color takes priority over second_band_color.\n* row_properties takes priority over column_properties.\n\nFor example, the first row color takes priority over the first column\ncolor, but the first column color takes priority over the second row color.\nSimilarly, the row header takes priority over the column header in the\ntop left cell, but the column header takes priority over the first row\ncolor if the row header is not set.",
             "id": "BandingProperties",
             "properties": {
+                "secondBandColor": {
+                    "$ref": "Color",
+                    "description": "The second color that is alternating. (Required)"
+                },
                 "footerColor": {
                     "$ref": "Color",
                     "description": "The color of the last row or column. If this field is not set, the last\nrow or column will be filled with either first_band_color or\nsecond_band_color, depending on the color of the previous row or\ncolumn."
@@ -4017,10 +3024,6 @@
                 "firstBandColor": {
                     "$ref": "Color",
                     "description": "The first color that is alternating. (Required)"
-                },
-                "secondBandColor": {
-                    "$ref": "Color",
-                    "description": "The second color that is alternating. (Required)"
                 }
             },
             "type": "object"
@@ -4126,6 +3129,11 @@
             "description": "The response when updating a range of values in a spreadsheet.",
             "id": "UpdateValuesResponse",
             "properties": {
+                "updatedColumns": {
+                    "description": "The number of columns where at least one cell in the column was updated.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "spreadsheetId": {
                     "description": "The spreadsheet the updates were applied to.",
                     "type": "string"
@@ -4147,11 +3155,6 @@
                     "description": "The number of rows where at least one cell in the row was updated.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "updatedColumns": {
-                    "description": "The number of columns where at least one cell in the column was updated.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -4160,6 +3163,10 @@
             "description": "The definition of how a value in a pivot table should be calculated.",
             "id": "PivotValue",
             "properties": {
+                "formula": {
+                    "description": "A custom formula to calculate the value.  The formula must start\nwith an `=` character.",
+                    "type": "string"
+                },
                 "summarizeFunction": {
                     "description": "A function to summarize the value.\nIf formula is set, the only supported values are\nSUM and\nCUSTOM.\nIf sourceColumnOffset is set, then `CUSTOM`\nis not supported.",
                     "enum": [
@@ -4204,11 +3211,7 @@
                     "type": "integer"
                 },
                 "name": {
-                    "description": "A name to use for the value. This is only used if formula was set.\nOtherwise, the column name is used.",
-                    "type": "string"
-                },
-                "formula": {
-                    "description": "A custom formula to calculate the value.  The formula must start\nwith an `=` character.",
+                    "description": "A name to use for the value.",
                     "type": "string"
                 }
             },
@@ -4218,6 +3221,10 @@
             "description": "An error in a cell.",
             "id": "ErrorValue",
             "properties": {
+                "message": {
+                    "description": "A message with more information about the error\n(in the spreadsheet's locale).",
+                    "type": "string"
+                },
                 "type": {
                     "description": "The type of error.",
                     "enum": [
@@ -4245,10 +3252,6 @@
                         "Corresponds to the `Loading...` state."
                     ],
                     "type": "string"
-                },
-                "message": {
-                    "description": "A message with more information about the error\n(in the spreadsheet's locale).",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -4268,17 +3271,17 @@
             "description": "Information about which values in a pivot group should be used for sorting.",
             "id": "PivotGroupSortValueBucket",
             "properties": {
+                "valuesIndex": {
+                    "description": "The offset in the PivotTable.values list which the values in this\ngrouping should be sorted by.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "buckets": {
                     "description": "Determines the bucket from which values are chosen to sort.\n\nFor example, in a pivot table with one row group & two column groups,\nthe row group can list up to two values. The first value corresponds\nto a value within the first column group, and the second value\ncorresponds to a value in the second column group.  If no values\nare listed, this would indicate that the row should be sorted according\nto the \"Grand Total\" over the column groups. If a single value is listed,\nthis would correspond to using the \"Total\" of that bucket.",
                     "items": {
                         "$ref": "ExtendedValue"
                     },
                     "type": "array"
-                },
-                "valuesIndex": {
-                    "description": "The offset in the PivotTable.values list which the values in this\ngrouping should be sorted by.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -4316,16 +3319,16 @@
             "description": "The response when clearing a range of values selected with\nDataFilters in a spreadsheet.",
             "id": "BatchClearValuesByDataFilterResponse",
             "properties": {
+                "spreadsheetId": {
+                    "description": "The spreadsheet the updates were applied to.",
+                    "type": "string"
+                },
                 "clearedRanges": {
                     "description": "The ranges that were cleared, in A1 notation.\n(If the requests were for an unbounded range or a ranger larger\n than the bounds of the sheet, this will be the actual ranges\n that were cleared, bounded to the sheet's limits.)",
                     "items": {
                         "type": "string"
                     },
                     "type": "array"
-                },
-                "spreadsheetId": {
-                    "description": "The spreadsheet the updates were applied to.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -4334,6 +3337,10 @@
             "description": "The Candlestick chart data, each containing the low, open, close, and high\nvalues for a series.",
             "id": "CandlestickData",
             "properties": {
+                "openSeries": {
+                    "$ref": "CandlestickSeries",
+                    "description": "The range data (vertical axis) for the open/initial value for each\ncandle. This is the bottom of the candle body.  If less than the close\nvalue the candle will be filled.  Otherwise the candle will be hollow."
+                },
                 "highSeries": {
                     "$ref": "CandlestickSeries",
                     "description": "The range data (vertical axis) for the high/maximum value for each\ncandle. This is the top of the candle's center line."
@@ -4345,10 +3352,6 @@
                 "lowSeries": {
                     "$ref": "CandlestickSeries",
                     "description": "The range data (vertical axis) for the low/minimum value for each candle.\nThis is the bottom of the candle's center line."
-                },
-                "openSeries": {
-                    "$ref": "CandlestickSeries",
-                    "description": "The range data (vertical axis) for the open/initial value for each\ncandle. This is the bottom of the candle body.  If less than the close\nvalue the candle will be filled.  Otherwise the candle will be hollow."
                 }
             },
             "type": "object"
@@ -4357,6 +3360,10 @@
             "description": "The position of an embedded object such as a chart.",
             "id": "EmbeddedObjectPosition",
             "properties": {
+                "newSheet": {
+                    "description": "If true, the embedded object will be put on a new sheet whose ID\nis chosen for you. Used only when writing.",
+                    "type": "boolean"
+                },
                 "overlayPosition": {
                     "$ref": "OverlayPosition",
                     "description": "The position at which the object is overlaid on top of a grid."
@@ -4365,10 +3372,6 @@
                     "description": "The sheet this is on. Set only if the embedded object\nis on its own sheet. Must be non-negative.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "newSheet": {
-                    "description": "If true, the embedded object will be put on a new sheet whose ID\nis chosen for you. Used only when writing.",
-                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -4459,6 +3462,10 @@
             "description": "Fills in more data based on existing data.",
             "id": "AutoFillRequest",
             "properties": {
+                "range": {
+                    "$ref": "GridRange",
+                    "description": "The range to autofill. This will examine the range and detect\nthe location that has data and automatically fill that data\nin to the rest of the range."
+                },
                 "useAlternateSeries": {
                     "description": "True if we should generate data with the \"alternate\" series.\nThis differs based on the type and amount of source data.",
                     "type": "boolean"
@@ -4466,10 +3473,6 @@
                 "sourceAndDestination": {
                     "$ref": "SourceAndDestination",
                     "description": "The source and destination areas to autofill.\nThis explicitly lists the source of the autofill and where to\nextend that data."
-                },
-                "range": {
-                    "$ref": "GridRange",
-                    "description": "The range to autofill. This will examine the range and detect\nthe location that has data and automatically fill that data\nin to the rest of the range."
                 }
             },
             "type": "object"
@@ -4478,10 +3481,6 @@
             "description": "A rule that applies a gradient color scale format, based on\nthe interpolation points listed. The format of a cell will vary\nbased on its contents as compared to the values of the interpolation\npoints.",
             "id": "GradientRule",
             "properties": {
-                "midpoint": {
-                    "$ref": "InterpolationPoint",
-                    "description": "An optional midway interpolation point."
-                },
                 "maxpoint": {
                     "$ref": "InterpolationPoint",
                     "description": "The final interpolation point."
@@ -4489,6 +3488,10 @@
                 "minpoint": {
                     "$ref": "InterpolationPoint",
                     "description": "The starting interpolation point."
+                },
+                "midpoint": {
+                    "$ref": "InterpolationPoint",
+                    "description": "An optional midway interpolation point."
                 }
             },
             "type": "object"
@@ -4514,6 +3517,10 @@
             "description": "A single interpolation point on a gradient conditional format.\nThese pin the gradient color scale according to the color,\ntype and value chosen.",
             "id": "InterpolationPoint",
             "properties": {
+                "value": {
+                    "description": "The value this interpolation point uses.  May be a formula.\nUnused if type is MIN or\nMAX.",
+                    "type": "string"
+                },
                 "color": {
                     "$ref": "Color",
                     "description": "The color this interpolation point should use."
@@ -4537,10 +3544,6 @@
                         "The interpolation point will be the given percentile\nover all the cells in the range of the conditional format.\nThis is equivalent to NUMBER if the value was:\n`=PERCENTILE(FLATTEN(range), value / 100)`\n(where errors in the range are ignored when flattening)."
                     ],
                     "type": "string"
-                },
-                "value": {
-                    "description": "The value this interpolation point uses.  May be a formula.\nUnused if type is MIN or\nMAX.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -4563,16 +3566,16 @@
             "description": "The request for retrieving a Spreadsheet.",
             "id": "GetSpreadsheetByDataFilterRequest",
             "properties": {
-                "includeGridData": {
-                    "description": "True if grid data should be returned.\nThis parameter is ignored if a field mask was set in the request.",
-                    "type": "boolean"
-                },
                 "dataFilters": {
                     "description": "The DataFilters used to select which ranges to retrieve from\nthe spreadsheet.",
                     "items": {
                         "$ref": "DataFilter"
                     },
                     "type": "array"
+                },
+                "includeGridData": {
+                    "description": "True if grid data should be returned.\nThis parameter is ignored if a field mask was set in the request.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -4593,6 +3596,16 @@
             "description": "The result of the find/replace.",
             "id": "FindReplaceResponse",
             "properties": {
+                "formulasChanged": {
+                    "description": "The number of formula cells changed.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "valuesChanged": {
+                    "description": "The number of non-formula cells changed.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "occurrencesChanged": {
                     "description": "The number of occurrences (possibly multiple within a cell) changed.\nFor example, if replacing `\"e\"` with `\"o\"` in `\"Google Sheets\"`, this would\nbe `\"3\"` because `\"Google Sheets\"` -> `\"Googlo Shoots\"`.",
                     "format": "int32",
@@ -4607,16 +3620,6 @@
                     "description": "The number of sheets changed.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "formulasChanged": {
-                    "description": "The number of formula cells changed.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "valuesChanged": {
-                    "description": "The number of non-formula cells changed.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -4797,11 +3800,6 @@
             "description": "Duplicates the contents of a sheet.",
             "id": "DuplicateSheetRequest",
             "properties": {
-                "sourceSheetId": {
-                    "description": "The sheet to duplicate.",
-                    "format": "int32",
-                    "type": "integer"
-                },
                 "newSheetId": {
                     "description": "If set, the ID of the new sheet. If not set, an ID is chosen.\nIf set, the ID must not conflict with any existing sheet ID.\nIf set, it must be non-negative.",
                     "format": "int32",
@@ -4815,6 +3813,11 @@
                 "newSheetName": {
                     "description": "The name of the new sheet.  If empty, a new name is chosen for you.",
                     "type": "string"
+                },
+                "sourceSheetId": {
+                    "description": "The sheet to duplicate.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -4823,6 +3826,10 @@
             "description": "The kinds of value that a cell in a spreadsheet can have.",
             "id": "ExtendedValue",
             "properties": {
+                "errorValue": {
+                    "$ref": "ErrorValue",
+                    "description": "Represents an error.\nThis field is read-only."
+                },
                 "formulaValue": {
                     "description": "Represents a formula.",
                     "type": "string"
@@ -4839,10 +3846,6 @@
                     "description": "Represents a double value.\nNote: Dates, Times and DateTimes are represented as doubles in\n\"serial number\" format.",
                     "format": "double",
                     "type": "number"
-                },
-                "errorValue": {
-                    "$ref": "ErrorValue",
-                    "description": "Represents an error.\nThis field is read-only."
                 }
             },
             "type": "object"
@@ -4875,13 +3878,13 @@
             "description": "A histogram series containing the series color and data.",
             "id": "HistogramSeries",
             "properties": {
-                "data": {
-                    "$ref": "ChartData",
-                    "description": "The data for this histogram series."
-                },
                 "barColor": {
                     "$ref": "Color",
                     "description": "The color of the column representing this series in each bucket.\nThis field is optional."
+                },
+                "data": {
+                    "$ref": "ChartData",
+                    "description": "The data for this histogram series."
                 }
             },
             "type": "object"
@@ -4908,13 +3911,6 @@
             "description": "Resource that represents a spreadsheet.",
             "id": "Spreadsheet",
             "properties": {
-                "developerMetadata": {
-                    "description": "The developer metadata associated with a spreadsheet.",
-                    "items": {
-                        "$ref": "DeveloperMetadata"
-                    },
-                    "type": "array"
-                },
                 "sheets": {
                     "description": "The sheets that are part of a spreadsheet.",
                     "items": {
@@ -4940,6 +3936,13 @@
                         "$ref": "NamedRange"
                     },
                     "type": "array"
+                },
+                "developerMetadata": {
+                    "description": "The developer metadata associated with a spreadsheet.",
+                    "items": {
+                        "$ref": "DeveloperMetadata"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -4998,14 +4001,14 @@
                     "description": "True if the text is underlined.",
                     "type": "boolean"
                 },
-                "foregroundColor": {
-                    "$ref": "Color",
-                    "description": "The foreground color of the text."
-                },
                 "bold": {
                     "description": "True if the text is bold.",
                     "type": "boolean"
                 },
+                "foregroundColor": {
+                    "$ref": "Color",
+                    "description": "The foreground color of the text."
+                },
                 "fontFamily": {
                     "description": "The font family.",
                     "type": "string"
@@ -5052,15 +4055,58 @@
             "description": "Settings to control how circular dependencies are resolved with iterative\ncalculation.",
             "id": "IterativeCalculationSettings",
             "properties": {
-                "convergenceThreshold": {
-                    "description": "When iterative calculation is enabled and successive results differ by\nless than this threshold value, the calculation rounds stop.",
-                    "format": "double",
-                    "type": "number"
-                },
                 "maxIterations": {
                     "description": "When iterative calculation is enabled, the maximum number of calculation\nrounds to perform.",
                     "format": "int32",
                     "type": "integer"
+                },
+                "convergenceThreshold": {
+                    "description": "When iterative calculation is enabled and successive results differ by\nless than this threshold value, the calculation rounds stop.",
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "SpreadsheetProperties": {
+            "description": "Properties of a spreadsheet.",
+            "id": "SpreadsheetProperties",
+            "properties": {
+                "defaultFormat": {
+                    "$ref": "CellFormat",
+                    "description": "The default format of all cells in the spreadsheet.\nCellData.effectiveFormat will not be set if the\ncell's format is equal to this default format.\nThis field is read-only."
+                },
+                "autoRecalc": {
+                    "description": "The amount of time to wait before volatile functions are recalculated.",
+                    "enum": [
+                        "RECALCULATION_INTERVAL_UNSPECIFIED",
+                        "ON_CHANGE",
+                        "MINUTE",
+                        "HOUR"
+                    ],
+                    "enumDescriptions": [
+                        "Default value. This value must not be used.",
+                        "Volatile functions are updated on every change.",
+                        "Volatile functions are updated on every change and every minute.",
+                        "Volatile functions are updated on every change and hourly."
+                    ],
+                    "type": "string"
+                },
+                "title": {
+                    "description": "The title of the spreadsheet.",
+                    "type": "string"
+                },
+                "timeZone": {
+                    "description": "The time zone of the spreadsheet, in CLDR format such as\n`America/New_York`. If the time zone isn't recognized, this may\nbe a custom time zone such as `GMT-07:00`.",
+                    "type": "string"
+                },
+                "locale": {
+                    "description": "The locale of the spreadsheet in one of the following formats:\n\n* an ISO 639-1 language code such as `en`\n\n* an ISO 639-2 language code such as `fil`, if no 639-1 code exists\n\n* a combination of the ISO language code and country code, such as `en_US`\n\nNote: when updating this field, not all locales/languages are supported.",
+                    "type": "string"
+                },
+                "iterativeCalculationSettings": {
+                    "$ref": "IterativeCalculationSettings",
+                    "description": "Determines whether and how circular references are resolved with iterative\ncalculation.  Absence of this field means that circular references will\nresult in calculation errors."
                 }
             },
             "type": "object"
@@ -5096,57 +4142,10 @@
             },
             "type": "object"
         },
-        "SpreadsheetProperties": {
-            "description": "Properties of a spreadsheet.",
-            "id": "SpreadsheetProperties",
-            "properties": {
-                "title": {
-                    "description": "The title of the spreadsheet.",
-                    "type": "string"
-                },
-                "timeZone": {
-                    "description": "The time zone of the spreadsheet, in CLDR format such as\n`America/New_York`. If the time zone isn't recognized, this may\nbe a custom time zone such as `GMT-07:00`.",
-                    "type": "string"
-                },
-                "locale": {
-                    "description": "The locale of the spreadsheet in one of the following formats:\n\n* an ISO 639-1 language code such as `en`\n\n* an ISO 639-2 language code such as `fil`, if no 639-1 code exists\n\n* a combination of the ISO language code and country code, such as `en_US`\n\nNote: when updating this field, not all locales/languages are supported.",
-                    "type": "string"
-                },
-                "iterativeCalculationSettings": {
-                    "$ref": "IterativeCalculationSettings",
-                    "description": "Determines whether and how circular references are resolved with iterative\ncalculation.  Absence of this field means that circular references will\nresult in calculation errors."
-                },
-                "autoRecalc": {
-                    "description": "The amount of time to wait before volatile functions are recalculated.",
-                    "enum": [
-                        "RECALCULATION_INTERVAL_UNSPECIFIED",
-                        "ON_CHANGE",
-                        "MINUTE",
-                        "HOUR"
-                    ],
-                    "enumDescriptions": [
-                        "Default value. This value must not be used.",
-                        "Volatile functions are updated on every change.",
-                        "Volatile functions are updated on every change and every minute.",
-                        "Volatile functions are updated on every change and hourly."
-                    ],
-                    "type": "string"
-                },
-                "defaultFormat": {
-                    "$ref": "CellFormat",
-                    "description": "The default format of all cells in the spreadsheet.\nCellData.effectiveFormat will not be set if the\ncell's format is equal to this default format.\nThis field is read-only."
-                }
-            },
-            "type": "object"
-        },
         "RepeatCellRequest": {
             "description": "Updates all cells in the range to the values in the given Cell object.\nOnly the fields listed in the fields field are updated; others are\nunchanged.\n\nIf writing a cell with a formula, the formula's ranges will automatically\nincrement for each field in the range.\nFor example, if writing a cell with formula `=A1` into range B2:C4,\nB2 would be `=A1`, B3 would be `=A2`, B4 would be `=A3`,\nC2 would be `=B1`, C3 would be `=B2`, C4 would be `=B3`.\n\nTo keep the formula's ranges static, use the `$` indicator.\nFor example, use the formula `=$A$1` to prevent both the row and the\ncolumn from incrementing.",
             "id": "RepeatCellRequest",
             "properties": {
-                "cell": {
-                    "$ref": "CellData",
-                    "description": "The data to write."
-                },
                 "range": {
                     "$ref": "GridRange",
                     "description": "The range to repeat the cell in."
@@ -5155,6 +4154,10 @@
                     "description": "The fields that should be updated.  At least one field must be specified.\nThe root `cell` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.",
                     "format": "google-fieldmask",
                     "type": "string"
+                },
+                "cell": {
+                    "$ref": "CellData",
+                    "description": "The data to write."
                 }
             },
             "type": "object"
@@ -5263,22 +4266,6 @@
             "description": "A protected range.",
             "id": "ProtectedRange",
             "properties": {
-                "unprotectedRanges": {
-                    "description": "The list of unprotected ranges within a protected sheet.\nUnprotected ranges are only supported on protected sheets.",
-                    "items": {
-                        "$ref": "GridRange"
-                    },
-                    "type": "array"
-                },
-                "namedRangeId": {
-                    "description": "The named range this protected range is backed by, if any.\n\nWhen writing, only one of range or named_range_id\nmay be set.",
-                    "type": "string"
-                },
-                "protectedRangeId": {
-                    "description": "The ID of the protected range.\nThis field is read-only.",
-                    "format": "int32",
-                    "type": "integer"
-                },
                 "warningOnly": {
                     "description": "True if this protected range will show a warning when editing.\nWarning-based protection means that every user can edit data in the\nprotected range, except editing will prompt a warning asking the user\nto confirm the edit.\n\nWhen writing: if this field is true, then editors is ignored.\nAdditionally, if this field is changed from true to false and the\n`editors` field is not set (nor included in the field mask), then\nthe editors will be set to all the editors in the document.",
                     "type": "boolean"
@@ -5298,6 +4285,22 @@
                 "description": {
                     "description": "The description of this protected range.",
                     "type": "string"
+                },
+                "unprotectedRanges": {
+                    "description": "The list of unprotected ranges within a protected sheet.\nUnprotected ranges are only supported on protected sheets.",
+                    "items": {
+                        "$ref": "GridRange"
+                    },
+                    "type": "array"
+                },
+                "namedRangeId": {
+                    "description": "The named range this protected range is backed by, if any.\n\nWhen writing, only one of range or named_range_id\nmay be set.",
+                    "type": "string"
+                },
+                "protectedRangeId": {
+                    "description": "The ID of the protected range.\nThis field is read-only.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -5329,29 +4332,15 @@
             },
             "type": "object"
         },
-        "NamedRange": {
-            "description": "A named range.",
-            "id": "NamedRange",
-            "properties": {
-                "namedRangeId": {
-                    "description": "The ID of the named range.",
-                    "type": "string"
-                },
-                "range": {
-                    "$ref": "GridRange",
-                    "description": "The range this represents."
-                },
-                "name": {
-                    "description": "The name of the named range.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "DimensionRange": {
             "description": "A range along a single dimension on a sheet.\nAll indexes are zero-based.\nIndexes are half open: the start index is inclusive\nand the end index is exclusive.\nMissing indexes indicate the range is unbounded on that side.",
             "id": "DimensionRange",
             "properties": {
+                "sheetId": {
+                    "description": "The sheet this span is on.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "dimension": {
                     "description": "The dimension of the span.",
                     "enum": [
@@ -5375,11 +4364,25 @@
                     "description": "The start (inclusive) of the span, or not set if unbounded.",
                     "format": "int32",
                     "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "NamedRange": {
+            "description": "A named range.",
+            "id": "NamedRange",
+            "properties": {
+                "range": {
+                    "$ref": "GridRange",
+                    "description": "The range this represents."
                 },
-                "sheetId": {
-                    "description": "The sheet this span is on.",
-                    "format": "int32",
-                    "type": "integer"
+                "name": {
+                    "description": "The name of the named range.",
+                    "type": "string"
+                },
+                "namedRangeId": {
+                    "description": "The ID of the named range.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -5420,6 +4423,1003 @@
                 }
             },
             "type": "object"
+        },
+        "Borders": {
+            "description": "The borders of the cell.",
+            "id": "Borders",
+            "properties": {
+                "bottom": {
+                    "$ref": "Border",
+                    "description": "The bottom border of the cell."
+                },
+                "top": {
+                    "$ref": "Border",
+                    "description": "The top border of the cell."
+                },
+                "left": {
+                    "$ref": "Border",
+                    "description": "The left border of the cell."
+                },
+                "right": {
+                    "$ref": "Border",
+                    "description": "The right border of the cell."
+                }
+            },
+            "type": "object"
+        },
+        "BasicChartSeries": {
+            "description": "A single series of data in a chart.\nFor example, if charting stock prices over time, multiple series may exist,\none for the \"Open Price\", \"High Price\", \"Low Price\" and \"Close Price\".",
+            "id": "BasicChartSeries",
+            "properties": {
+                "type": {
+                    "description": "The type of this series. Valid only if the\nchartType is\nCOMBO.\nDifferent types will change the way the series is visualized.\nOnly LINE, AREA,\nand COLUMN are supported.",
+                    "enum": [
+                        "BASIC_CHART_TYPE_UNSPECIFIED",
+                        "BAR",
+                        "LINE",
+                        "AREA",
+                        "COLUMN",
+                        "SCATTER",
+                        "COMBO",
+                        "STEPPED_AREA"
+                    ],
+                    "enumDescriptions": [
+                        "Default value, do not use.",
+                        "A <a href=\"/chart/interactive/docs/gallery/barchart\">bar chart</a>.",
+                        "A <a href=\"/chart/interactive/docs/gallery/linechart\">line chart</a>.",
+                        "An <a href=\"/chart/interactive/docs/gallery/areachart\">area chart</a>.",
+                        "A <a href=\"/chart/interactive/docs/gallery/columnchart\">column chart</a>.",
+                        "A <a href=\"/chart/interactive/docs/gallery/scatterchart\">scatter chart</a>.",
+                        "A <a href=\"/chart/interactive/docs/gallery/combochart\">combo chart</a>.",
+                        "A <a href=\"/chart/interactive/docs/gallery/steppedareachart\">stepped area chart</a>."
+                    ],
+                    "type": "string"
+                },
+                "series": {
+                    "$ref": "ChartData",
+                    "description": "The data being visualized in this chart series."
+                },
+                "targetAxis": {
+                    "description": "The minor axis that will specify the range of values for this series.\nFor example, if charting stocks over time, the \"Volume\" series\nmay want to be pinned to the right with the prices pinned to the left,\nbecause the scale of trading volume is different than the scale of\nprices.\nIt is an error to specify an axis that isn't a valid minor axis\nfor the chart's type.",
+                    "enum": [
+                        "BASIC_CHART_AXIS_POSITION_UNSPECIFIED",
+                        "BOTTOM_AXIS",
+                        "LEFT_AXIS",
+                        "RIGHT_AXIS"
+                    ],
+                    "enumDescriptions": [
+                        "Default value, do not use.",
+                        "The axis rendered at the bottom of a chart.\nFor most charts, this is the standard major axis.\nFor bar charts, this is a minor axis.",
+                        "The axis rendered at the left of a chart.\nFor most charts, this is a minor axis.\nFor bar charts, this is the standard major axis.",
+                        "The axis rendered at the right of a chart.\nFor most charts, this is a minor axis.\nFor bar charts, this is an unusual major axis."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AutoResizeDimensionsRequest": {
+            "description": "Automatically resizes one or more dimensions based on the contents\nof the cells in that dimension.",
+            "id": "AutoResizeDimensionsRequest",
+            "properties": {
+                "dimensions": {
+                    "$ref": "DimensionRange",
+                    "description": "The dimensions to automatically resize."
+                }
+            },
+            "type": "object"
+        },
+        "UpdateBordersRequest": {
+            "description": "Updates the borders of a range.\nIf a field is not set in the request, that means the border remains as-is.\nFor example, with two subsequent UpdateBordersRequest:\n\n 1. range: A1:A5 `{ top: RED, bottom: WHITE }`\n 2. range: A1:A5 `{ left: BLUE }`\n\nThat would result in A1:A5 having a borders of\n`{ top: RED, bottom: WHITE, left: BLUE }`.\nIf you want to clear a border, explicitly set the style to\nNONE.",
+            "id": "UpdateBordersRequest",
+            "properties": {
+                "bottom": {
+                    "$ref": "Border",
+                    "description": "The border to put at the bottom of the range."
+                },
+                "innerVertical": {
+                    "$ref": "Border",
+                    "description": "The vertical border to put within the range."
+                },
+                "right": {
+                    "$ref": "Border",
+                    "description": "The border to put at the right of the range."
+                },
+                "range": {
+                    "$ref": "GridRange",
+                    "description": "The range whose borders should be updated."
+                },
+                "innerHorizontal": {
+                    "$ref": "Border",
+                    "description": "The horizontal border to put within the range."
+                },
+                "top": {
+                    "$ref": "Border",
+                    "description": "The border to put at the top of the range."
+                },
+                "left": {
+                    "$ref": "Border",
+                    "description": "The border to put at the left of the range."
+                }
+            },
+            "type": "object"
+        },
+        "CellFormat": {
+            "description": "The format of a cell.",
+            "id": "CellFormat",
+            "properties": {
+                "textFormat": {
+                    "$ref": "TextFormat",
+                    "description": "The format of the text in the cell (unless overridden by a format run)."
+                },
+                "backgroundColor": {
+                    "$ref": "Color",
+                    "description": "The background color of the cell."
+                },
+                "padding": {
+                    "$ref": "Padding",
+                    "description": "The padding of the cell."
+                },
+                "verticalAlignment": {
+                    "description": "The vertical alignment of the value in the cell.",
+                    "enum": [
+                        "VERTICAL_ALIGN_UNSPECIFIED",
+                        "TOP",
+                        "MIDDLE",
+                        "BOTTOM"
+                    ],
+                    "enumDescriptions": [
+                        "The vertical alignment is not specified.  Do not use this.",
+                        "The text is explicitly aligned to the top of the cell.",
+                        "The text is explicitly aligned to the middle of the cell.",
+                        "The text is explicitly aligned to the bottom of the cell."
+                    ],
+                    "type": "string"
+                },
+                "borders": {
+                    "$ref": "Borders",
+                    "description": "The borders of the cell."
+                },
+                "textDirection": {
+                    "description": "The direction of the text in the cell.",
+                    "enum": [
+                        "TEXT_DIRECTION_UNSPECIFIED",
+                        "LEFT_TO_RIGHT",
+                        "RIGHT_TO_LEFT"
+                    ],
+                    "enumDescriptions": [
+                        "The text direction is not specified. Do not use this.",
+                        "The text direction of left-to-right was set by the user.",
+                        "The text direction of right-to-left was set by the user."
+                    ],
+                    "type": "string"
+                },
+                "wrapStrategy": {
+                    "description": "The wrap strategy for the value in the cell.",
+                    "enum": [
+                        "WRAP_STRATEGY_UNSPECIFIED",
+                        "OVERFLOW_CELL",
+                        "LEGACY_WRAP",
+                        "CLIP",
+                        "WRAP"
+                    ],
+                    "enumDescriptions": [
+                        "The default value, do not use.",
+                        "Lines that are longer than the cell width will be written in the next\ncell over, so long as that cell is empty. If the next cell over is\nnon-empty, this behaves the same as CLIP. The text will never wrap\nto the next line unless the user manually inserts a new line.\nExample:\n\n    | First sentence. |\n    | Manual newline that is very long. <- Text continues into next cell\n    | Next newline.   |",
+                        "This wrap strategy represents the old Google Sheets wrap strategy where\nwords that are longer than a line are clipped rather than broken. This\nstrategy is not supported on all platforms and is being phased out.\nExample:\n\n    | Cell has a |\n    | loooooooooo| <- Word is clipped.\n    | word.      |",
+                        "Lines that are longer than the cell width will be clipped.\nThe text will never wrap to the next line unless the user manually\ninserts a new line.\nExample:\n\n    | First sentence. |\n    | Manual newline t| <- Text is clipped\n    | Next newline.   |",
+                        "Words that are longer than a line are wrapped at the character level\nrather than clipped.\nExample:\n\n    | Cell has a |\n    | loooooooooo| <- Word is broken.\n    | ong word.  |"
+                    ],
+                    "type": "string"
+                },
+                "textRotation": {
+                    "$ref": "TextRotation",
+                    "description": "The rotation applied to text in a cell"
+                },
+                "numberFormat": {
+                    "$ref": "NumberFormat",
+                    "description": "A format describing how number values should be represented to the user."
+                },
+                "hyperlinkDisplayType": {
+                    "description": "How a hyperlink, if it exists, should be displayed in the cell.",
+                    "enum": [
+                        "HYPERLINK_DISPLAY_TYPE_UNSPECIFIED",
+                        "LINKED",
+                        "PLAIN_TEXT"
+                    ],
+                    "enumDescriptions": [
+                        "The default value: the hyperlink is rendered. Do not use this.",
+                        "A hyperlink should be explicitly rendered.",
+                        "A hyperlink should not be rendered."
+                    ],
+                    "type": "string"
+                },
+                "horizontalAlignment": {
+                    "description": "The horizontal alignment of the value in the cell.",
+                    "enum": [
+                        "HORIZONTAL_ALIGN_UNSPECIFIED",
+                        "LEFT",
+                        "CENTER",
+                        "RIGHT"
+                    ],
+                    "enumDescriptions": [
+                        "The horizontal alignment is not specified. Do not use this.",
+                        "The text is explicitly aligned to the left of the cell.",
+                        "The text is explicitly aligned to the center of the cell.",
+                        "The text is explicitly aligned to the right of the cell."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ClearValuesResponse": {
+            "description": "The response when clearing a range of values in a spreadsheet.",
+            "id": "ClearValuesResponse",
+            "properties": {
+                "spreadsheetId": {
+                    "description": "The spreadsheet the updates were applied to.",
+                    "type": "string"
+                },
+                "clearedRange": {
+                    "description": "The range (in A1 notation) that was cleared.\n(If the request was for an unbounded range or a ranger larger\n than the bounds of the sheet, this will be the actual range\n that was cleared, bounded to the sheet's limits.)",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DeleteConditionalFormatRuleRequest": {
+            "description": "Deletes a conditional format rule at the given index.\nAll subsequent rules' indexes are decremented.",
+            "id": "DeleteConditionalFormatRuleRequest",
+            "properties": {
+                "sheetId": {
+                    "description": "The sheet the rule is being deleted from.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "index": {
+                    "description": "The zero-based index of the rule to be deleted.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "DeleteNamedRangeRequest": {
+            "description": "Removes the named range with the given ID from the spreadsheet.",
+            "id": "DeleteNamedRangeRequest",
+            "properties": {
+                "namedRangeId": {
+                    "description": "The ID of the named range to delete.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AddBandingResponse": {
+            "description": "The result of adding a banded range.",
+            "id": "AddBandingResponse",
+            "properties": {
+                "bandedRange": {
+                    "$ref": "BandedRange",
+                    "description": "The banded range that was added."
+                }
+            },
+            "type": "object"
+        },
+        "ChartData": {
+            "description": "The data included in a domain or series.",
+            "id": "ChartData",
+            "properties": {
+                "sourceRange": {
+                    "$ref": "ChartSourceRange",
+                    "description": "The source ranges of the data."
+                }
+            },
+            "type": "object"
+        },
+        "BatchGetValuesResponse": {
+            "description": "The response when retrieving more than one range of values in a spreadsheet.",
+            "id": "BatchGetValuesResponse",
+            "properties": {
+                "valueRanges": {
+                    "description": "The requested values. The order of the ValueRanges is the same as the\norder of the requested ranges.",
+                    "items": {
+                        "$ref": "ValueRange"
+                    },
+                    "type": "array"
+                },
+                "spreadsheetId": {
+                    "description": "The ID of the spreadsheet the data was retrieved from.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "UpdateBandingRequest": {
+            "description": "Updates properties of the supplied banded range.",
+            "id": "UpdateBandingRequest",
+            "properties": {
+                "fields": {
+                    "description": "The fields that should be updated.  At least one field must be specified.\nThe root `bandedRange` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                },
+                "bandedRange": {
+                    "$ref": "BandedRange",
+                    "description": "The banded range to update with the new properties."
+                }
+            },
+            "type": "object"
+        },
+        "Color": {
+            "description": "Represents a color in the RGBA color space. This representation is designed\nfor simplicity of conversion to/from color representations in various\nlanguages over compactness; for example, the fields of this representation\ncan be trivially provided to the constructor of \"java.awt.Color\" in Java; it\ncan also be trivially provided to UIColor's \"+colorWithRed:green:blue:alpha\"\nmethod in iOS; and, with just a little work, it can be easily formatted into\na CSS \"rgba()\" string in JavaScript, as well. Here are some examples:\n\nExample (Java):\n\n     import com.google.type.Color;\n\n     // ...\n     public static java.awt.Color fromProto(Color protocolor) {\n       float alpha = protocolor.hasAlpha()\n           ? protocolor.getAlpha().getValue()\n           : 1.0;\n\n       return new java.awt.Color(\n           protocolor.getRed(),\n           protocolor.getGreen(),\n           protocolor.getBlue(),\n           alpha);\n     }\n\n     public static Color toProto(java.awt.Color color) {\n       float red = (float) color.getRed();\n       float green = (float) color.getGreen();\n       float blue = (float) color.getBlue();\n       float denominator = 255.0;\n       Color.Builder resultBuilder =\n           Color\n               .newBuilder()\n               .setRed(red / denominator)\n               .setGreen(green / denominator)\n               .setBlue(blue / denominator);\n       int alpha = color.getAlpha();\n       if (alpha != 255) {\n         result.setAlpha(\n             FloatValue\n                 .newBuilder()\n                 .setValue(((float) alpha) / denominator)\n                 .build());\n       }\n       return resultBuilder.build();\n     }\n     // ...\n\nExample (iOS / Obj-C):\n\n     // ...\n     static UIColor* fromProto(Color* protocolor) {\n        float red = [protocolor red];\n        float green = [protocolor green];\n        float blue = [protocolor blue];\n        FloatValue* alpha_wrapper = [protocolor alpha];\n        float alpha = 1.0;\n        if (alpha_wrapper != nil) {\n          alpha = [alpha_wrapper value];\n        }\n        return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];\n     }\n\n     static Color* toProto(UIColor* color) {\n         CGFloat red, green, blue, alpha;\n         if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {\n           return nil;\n         }\n         Color* result = [Color alloc] init];\n         [result setRed:red];\n         [result setGreen:green];\n         [result setBlue:blue];\n         if (alpha <= 0.9999) {\n           [result setAlpha:floatWrapperWithValue(alpha)];\n         }\n         [result autorelease];\n         return result;\n    }\n    // ...\n\n Example (JavaScript):\n\n    // ...\n\n    var protoToCssColor = function(rgb_color) {\n       var redFrac = rgb_color.red || 0.0;\n       var greenFrac = rgb_color.green || 0.0;\n       var blueFrac = rgb_color.blue || 0.0;\n       var red = Math.floor(redFrac * 255);\n       var green = Math.floor(greenFrac * 255);\n       var blue = Math.floor(blueFrac * 255);\n\n       if (!('alpha' in rgb_color)) {\n          return rgbToCssColor_(red, green, blue);\n       }\n\n       var alphaFrac = rgb_color.alpha.value || 0.0;\n       var rgbParams = [red, green, blue].join(',');\n       return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');\n    };\n\n    var rgbToCssColor_ = function(red, green, blue) {\n      var rgbNumber = new Number((red << 16) | (green << 8) | blue);\n      var hexString = rgbNumber.toString(16);\n      var missingZeros = 6 - hexString.length;\n      var resultBuilder = ['#'];\n      for (var i = 0; i < missingZeros; i++) {\n         resultBuilder.push('0');\n      }\n      resultBuilder.push(hexString);\n      return resultBuilder.join('');\n    };\n\n    // ...",
+            "id": "Color",
+            "properties": {
+                "red": {
+                    "description": "The amount of red in the color as a value in the interval [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                },
+                "alpha": {
+                    "description": "The fraction of this color that should be applied to the pixel. That is,\nthe final pixel color is defined by the equation:\n\n  pixel color = alpha * (this color) + (1.0 - alpha) * (background color)\n\nThis means that a value of 1.0 corresponds to a solid color, whereas\na value of 0.0 corresponds to a completely transparent color. This\nuses a wrapper message rather than a simple float scalar so that it is\npossible to distinguish between a default value and the value being unset.\nIf omitted, this color object is to be rendered as a solid color\n(as if the alpha value had been explicitly given with a value of 1.0).",
+                    "format": "float",
+                    "type": "number"
+                },
+                "blue": {
+                    "description": "The amount of blue in the color as a value in the interval [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                },
+                "green": {
+                    "description": "The amount of green in the color as a value in the interval [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "PivotGroup": {
+            "description": "A single grouping (either row or column) in a pivot table.",
+            "id": "PivotGroup",
+            "properties": {
+                "sortOrder": {
+                    "description": "The order the values in this group should be sorted.",
+                    "enum": [
+                        "SORT_ORDER_UNSPECIFIED",
+                        "ASCENDING",
+                        "DESCENDING"
+                    ],
+                    "enumDescriptions": [
+                        "Default value, do not use this.",
+                        "Sort ascending.",
+                        "Sort descending."
+                    ],
+                    "type": "string"
+                },
+                "valueBucket": {
+                    "$ref": "PivotGroupSortValueBucket",
+                    "description": "The bucket of the opposite pivot group to sort by.\nIf not specified, sorting is alphabetical by this group's values."
+                },
+                "valueMetadata": {
+                    "description": "Metadata about values in the grouping.",
+                    "items": {
+                        "$ref": "PivotGroupValueMetadata"
+                    },
+                    "type": "array"
+                },
+                "showTotals": {
+                    "description": "True if the pivot table should include the totals for this grouping.",
+                    "type": "boolean"
+                },
+                "sourceColumnOffset": {
+                    "description": "The column offset of the source range that this grouping is based on.\n\nFor example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`\nmeans this group refers to column `C`, whereas the offset `1` would refer\nto column `D`.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "PivotTable": {
+            "description": "A pivot table.",
+            "id": "PivotTable",
+            "properties": {
+                "criteria": {
+                    "additionalProperties": {
+                        "$ref": "PivotFilterCriteria"
+                    },
+                    "description": "An optional mapping of filters per source column offset.\n\nThe filters will be applied before aggregating data into the pivot table.\nThe map's key is the column offset of the source range that you want to\nfilter, and the value is the criteria for that column.\n\nFor example, if the source was `C10:E15`, a key of `0` will have the filter\nfor column `C`, whereas the key `1` is for column `D`.",
+                    "type": "object"
+                },
+                "rows": {
+                    "description": "Each row grouping in the pivot table.",
+                    "items": {
+                        "$ref": "PivotGroup"
+                    },
+                    "type": "array"
+                },
+                "valueLayout": {
+                    "description": "Whether values should be listed horizontally (as columns)\nor vertically (as rows).",
+                    "enum": [
+                        "HORIZONTAL",
+                        "VERTICAL"
+                    ],
+                    "enumDescriptions": [
+                        "Values are laid out horizontally (as columns).",
+                        "Values are laid out vertically (as rows)."
+                    ],
+                    "type": "string"
+                },
+                "values": {
+                    "description": "A list of values to include in the pivot table.",
+                    "items": {
+                        "$ref": "PivotValue"
+                    },
+                    "type": "array"
+                },
+                "source": {
+                    "$ref": "GridRange",
+                    "description": "The range the pivot table is reading data from."
+                },
+                "columns": {
+                    "description": "Each column grouping in the pivot table.",
+                    "items": {
+                        "$ref": "PivotGroup"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ChartSourceRange": {
+            "description": "Source ranges for a chart.",
+            "id": "ChartSourceRange",
+            "properties": {
+                "sources": {
+                    "description": "The ranges of data for a series or domain.\nExactly one dimension must have a length of 1,\nand all sources in the list must have the same dimension\nwith length 1.\nThe domain (if it exists) & all series must have the same number\nof source ranges. If using more than one source range, then the source\nrange at a given offset must be contiguous across the domain and series.\n\nFor example, these are valid configurations:\n\n    domain sources: A1:A5\n    series1 sources: B1:B5\n    series2 sources: D6:D10\n\n    domain sources: A1:A5, C10:C12\n    series1 sources: B1:B5, D10:D12\n    series2 sources: C1:C5, E10:E12",
+                    "items": {
+                        "$ref": "GridRange"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SearchDeveloperMetadataResponse": {
+            "description": "A reply to a developer metadata search request.",
+            "id": "SearchDeveloperMetadataResponse",
+            "properties": {
+                "matchedDeveloperMetadata": {
+                    "description": "The metadata matching the criteria of the search request.",
+                    "items": {
+                        "$ref": "MatchedDeveloperMetadata"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ValueRange": {
+            "description": "Data within a range of the spreadsheet.",
+            "id": "ValueRange",
+            "properties": {
+                "values": {
+                    "description": "The data that was read or to be written.  This is an array of arrays,\nthe outer array representing all the data and each inner array\nrepresenting a major dimension. Each item in the inner array\ncorresponds with one cell.\n\nFor output, empty trailing rows and columns will not be included.\n\nFor input, supported value types are: bool, string, and double.\nNull values will be skipped.\nTo set a cell to an empty value, set the string value to an empty string.",
+                    "items": {
+                        "items": {
+                            "type": "any"
+                        },
+                        "type": "array"
+                    },
+                    "type": "array"
+                },
+                "majorDimension": {
+                    "description": "The major dimension of the values.\n\nFor output, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,\nthen requesting `range=A1:B2,majorDimension=ROWS` will return\n`[[1,2],[3,4]]`,\nwhereas requesting `range=A1:B2,majorDimension=COLUMNS` will return\n`[[1,3],[2,4]]`.\n\nFor input, with `range=A1:B2,majorDimension=ROWS` then `[[1,2],[3,4]]`\nwill set `A1=1,B1=2,A2=3,B2=4`. With `range=A1:B2,majorDimension=COLUMNS`\nthen `[[1,2],[3,4]]` will set `A1=1,B1=3,A2=2,B2=4`.\n\nWhen writing, if this field is not set, it defaults to ROWS.",
+                    "enum": [
+                        "DIMENSION_UNSPECIFIED",
+                        "ROWS",
+                        "COLUMNS"
+                    ],
+                    "enumDescriptions": [
+                        "The default value, do not use.",
+                        "Operates on the rows of a sheet.",
+                        "Operates on the columns of a sheet."
+                    ],
+                    "type": "string"
+                },
+                "range": {
+                    "description": "The range the values cover, in A1 notation.\nFor output, this range indicates the entire requested range,\neven though the values will exclude trailing rows and columns.\nWhen appending values, this field represents the range to search for a\ntable, after which values will be appended.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AppendCellsRequest": {
+            "description": "Adds new cells after the last row with data in a sheet,\ninserting new rows into the sheet if necessary.",
+            "id": "AppendCellsRequest",
+            "properties": {
+                "fields": {
+                    "description": "The fields of CellData that should be updated.\nAt least one field must be specified.\nThe root is the CellData; 'row.values.' should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                },
+                "rows": {
+                    "description": "The data to append.",
+                    "items": {
+                        "$ref": "RowData"
+                    },
+                    "type": "array"
+                },
+                "sheetId": {
+                    "description": "The sheet ID to append the data to.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "AddBandingRequest": {
+            "description": "Adds a new banded range to the spreadsheet.",
+            "id": "AddBandingRequest",
+            "properties": {
+                "bandedRange": {
+                    "$ref": "BandedRange",
+                    "description": "The banded range to add. The bandedRangeId\nfield is optional; if one is not set, an id will be randomly generated. (It\nis an error to specify the ID of a range that already exists.)"
+                }
+            },
+            "type": "object"
+        },
+        "Response": {
+            "description": "A single response from an update.",
+            "id": "Response",
+            "properties": {
+                "deleteDeveloperMetadata": {
+                    "$ref": "DeleteDeveloperMetadataResponse",
+                    "description": "A reply from deleting a developer metadata entry."
+                },
+                "addFilterView": {
+                    "$ref": "AddFilterViewResponse",
+                    "description": "A reply from adding a filter view."
+                },
+                "addBanding": {
+                    "$ref": "AddBandingResponse",
+                    "description": "A reply from adding a banded range."
+                },
+                "addProtectedRange": {
+                    "$ref": "AddProtectedRangeResponse",
+                    "description": "A reply from adding a protected range."
+                },
+                "duplicateSheet": {
+                    "$ref": "DuplicateSheetResponse",
+                    "description": "A reply from duplicating a sheet."
+                },
+                "deleteConditionalFormatRule": {
+                    "$ref": "DeleteConditionalFormatRuleResponse",
+                    "description": "A reply from deleting a conditional format rule."
+                },
+                "updateEmbeddedObjectPosition": {
+                    "$ref": "UpdateEmbeddedObjectPositionResponse",
+                    "description": "A reply from updating an embedded object's position."
+                },
+                "duplicateFilterView": {
+                    "$ref": "DuplicateFilterViewResponse",
+                    "description": "A reply from duplicating a filter view."
+                },
+                "addChart": {
+                    "$ref": "AddChartResponse",
+                    "description": "A reply from adding a chart."
+                },
+                "updateDeveloperMetadata": {
+                    "$ref": "UpdateDeveloperMetadataResponse",
+                    "description": "A reply from updating a developer metadata entry."
+                },
+                "findReplace": {
+                    "$ref": "FindReplaceResponse",
+                    "description": "A reply from doing a find/replace."
+                },
+                "addSheet": {
+                    "$ref": "AddSheetResponse",
+                    "description": "A reply from adding a sheet."
+                },
+                "updateConditionalFormatRule": {
+                    "$ref": "UpdateConditionalFormatRuleResponse",
+                    "description": "A reply from updating a conditional format rule."
+                },
+                "createDeveloperMetadata": {
+                    "$ref": "CreateDeveloperMetadataResponse",
+                    "description": "A reply from creating a developer metadata entry."
+                },
+                "addNamedRange": {
+                    "$ref": "AddNamedRangeResponse",
+                    "description": "A reply from adding a named range."
+                }
+            },
+            "type": "object"
+        },
+        "EmbeddedChart": {
+            "description": "A chart embedded in a sheet.",
+            "id": "EmbeddedChart",
+            "properties": {
+                "chartId": {
+                    "description": "The ID of the chart.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "position": {
+                    "$ref": "EmbeddedObjectPosition",
+                    "description": "The position of the chart."
+                },
+                "spec": {
+                    "$ref": "ChartSpec",
+                    "description": "The specification of the chart."
+                }
+            },
+            "type": "object"
+        },
+        "TextFormatRun": {
+            "description": "A run of a text format. The format of this run continues until the start\nindex of the next run.\nWhen updating, all fields must be set.",
+            "id": "TextFormatRun",
+            "properties": {
+                "startIndex": {
+                    "description": "The character index where this run starts.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "format": {
+                    "$ref": "TextFormat",
+                    "description": "The format of this run.  Absent values inherit the cell's format."
+                }
+            },
+            "type": "object"
+        },
+        "InsertRangeRequest": {
+            "description": "Inserts cells into a range, shifting the existing cells over or down.",
+            "id": "InsertRangeRequest",
+            "properties": {
+                "shiftDimension": {
+                    "description": "The dimension which will be shifted when inserting cells.\nIf ROWS, existing cells will be shifted down.\nIf COLUMNS, existing cells will be shifted right.",
+                    "enum": [
+                        "DIMENSION_UNSPECIFIED",
+                        "ROWS",
+                        "COLUMNS"
+                    ],
+                    "enumDescriptions": [
+                        "The default value, do not use.",
+                        "Operates on the rows of a sheet.",
+                        "Operates on the columns of a sheet."
+                    ],
+                    "type": "string"
+                },
+                "range": {
+                    "$ref": "GridRange",
+                    "description": "The range to insert new cells into."
+                }
+            },
+            "type": "object"
+        },
+        "AddNamedRangeResponse": {
+            "description": "The result of adding a named range.",
+            "id": "AddNamedRangeResponse",
+            "properties": {
+                "namedRange": {
+                    "$ref": "NamedRange",
+                    "description": "The named range to add."
+                }
+            },
+            "type": "object"
+        },
+        "BatchUpdateValuesByDataFilterResponse": {
+            "description": "The response when updating a range of values in a spreadsheet.",
+            "id": "BatchUpdateValuesByDataFilterResponse",
+            "properties": {
+                "totalUpdatedRows": {
+                    "description": "The total number of rows where at least one cell in the row was updated.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "responses": {
+                    "description": "The response for each range updated.",
+                    "items": {
+                        "$ref": "UpdateValuesByDataFilterResponse"
+                    },
+                    "type": "array"
+                },
+                "totalUpdatedSheets": {
+                    "description": "The total number of sheets where at least one cell in the sheet was\nupdated.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "totalUpdatedCells": {
+                    "description": "The total number of cells updated.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "totalUpdatedColumns": {
+                    "description": "The total number of columns where at least one cell in the column was\nupdated.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "spreadsheetId": {
+                    "description": "The spreadsheet the updates were applied to.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "RowData": {
+            "description": "Data about each cell in a row.",
+            "id": "RowData",
+            "properties": {
+                "values": {
+                    "description": "The values in the row, one per column.",
+                    "items": {
+                        "$ref": "CellData"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GridData": {
+            "description": "Data in the grid, as well as metadata about the dimensions.",
+            "id": "GridData",
+            "properties": {
+                "columnMetadata": {
+                    "description": "Metadata about the requested columns in the grid, starting with the column\nin start_column.",
+                    "items": {
+                        "$ref": "DimensionProperties"
+                    },
+                    "type": "array"
+                },
+                "startColumn": {
+                    "description": "The first column this GridData refers to, zero-based.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "rowMetadata": {
+                    "description": "Metadata about the requested rows in the grid, starting with the row\nin start_row.",
+                    "items": {
+                        "$ref": "DimensionProperties"
+                    },
+                    "type": "array"
+                },
+                "rowData": {
+                    "description": "The data in the grid, one entry per row,\nstarting with the row in startRow.\nThe values in RowData will correspond to columns starting\nat start_column.",
+                    "items": {
+                        "$ref": "RowData"
+                    },
+                    "type": "array"
+                },
+                "startRow": {
+                    "description": "The first row this GridData refers to, zero-based.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "Border": {
+            "description": "A border along a cell.",
+            "id": "Border",
+            "properties": {
+                "color": {
+                    "$ref": "Color",
+                    "description": "The color of the border."
+                },
+                "width": {
+                    "description": "The width of the border, in pixels.\nDeprecated; the width is determined by the \"style\" field.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "style": {
+                    "description": "The style of the border.",
+                    "enum": [
+                        "STYLE_UNSPECIFIED",
+                        "DOTTED",
+                        "DASHED",
+                        "SOLID",
+                        "SOLID_MEDIUM",
+                        "SOLID_THICK",
+                        "NONE",
+                        "DOUBLE"
+                    ],
+                    "enumDescriptions": [
+                        "The style is not specified. Do not use this.",
+                        "The border is dotted.",
+                        "The border is dashed.",
+                        "The border is a thin solid line.",
+                        "The border is a medium solid line.",
+                        "The border is a thick solid line.",
+                        "No border.\nUsed only when updating a border in order to erase it.",
+                        "The border is two solid lines."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "FindReplaceRequest": {
+            "description": "Finds and replaces data in cells over a range, sheet, or all sheets.",
+            "id": "FindReplaceRequest",
+            "properties": {
+                "range": {
+                    "$ref": "GridRange",
+                    "description": "The range to find/replace over."
+                },
+                "sheetId": {
+                    "description": "The sheet to find/replace over.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "allSheets": {
+                    "description": "True to find/replace over all sheets.",
+                    "type": "boolean"
+                },
+                "matchCase": {
+                    "description": "True if the search is case sensitive.",
+                    "type": "boolean"
+                },
+                "includeFormulas": {
+                    "description": "True if the search should include cells with formulas.\nFalse to skip cells with formulas.",
+                    "type": "boolean"
+                },
+                "matchEntireCell": {
+                    "description": "True if the find value should match the entire cell.",
+                    "type": "boolean"
+                },
+                "find": {
+                    "description": "The value to search.",
+                    "type": "string"
+                },
+                "searchByRegex": {
+                    "description": "True if the find value is a regex.\nThe regular expression and replacement should follow Java regex rules\nat https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html.\nThe replacement string is allowed to refer to capturing groups.\nFor example, if one cell has the contents `\"Google Sheets\"` and another\nhas `\"Google Docs\"`, then searching for `\"o.* (.*)\"` with a replacement of\n`\"$1 Rocks\"` would change the contents of the cells to\n`\"GSheets Rocks\"` and `\"GDocs Rocks\"` respectively.",
+                    "type": "boolean"
+                },
+                "replacement": {
+                    "description": "The value to use as the replacement.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "UpdateNamedRangeRequest": {
+            "description": "Updates properties of the named range with the specified\nnamedRangeId.",
+            "id": "UpdateNamedRangeRequest",
+            "properties": {
+                "fields": {
+                    "description": "The fields that should be updated.  At least one field must be specified.\nThe root `namedRange` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                },
+                "namedRange": {
+                    "$ref": "NamedRange",
+                    "description": "The named range to update with the new properties."
+                }
+            },
+            "type": "object"
+        },
+        "AddSheetRequest": {
+            "description": "Adds a new sheet.\nWhen a sheet is added at a given index,\nall subsequent sheets' indexes are incremented.\nTo add an object sheet, use AddChartRequest instead and specify\nEmbeddedObjectPosition.sheetId or\nEmbeddedObjectPosition.newSheet.",
+            "id": "AddSheetRequest",
+            "properties": {
+                "properties": {
+                    "$ref": "SheetProperties",
+                    "description": "The properties the new sheet should have.\nAll properties are optional.\nThe sheetId field is optional; if one is not\nset, an id will be randomly generated. (It is an error to specify the ID\nof a sheet that already exists.)"
+                }
+            },
+            "type": "object"
+        },
+        "UpdateCellsRequest": {
+            "description": "Updates all cells in a range with new data.",
+            "id": "UpdateCellsRequest",
+            "properties": {
+                "fields": {
+                    "description": "The fields of CellData that should be updated.\nAt least one field must be specified.\nThe root is the CellData; 'row.values.' should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                },
+                "rows": {
+                    "description": "The data to write.",
+                    "items": {
+                        "$ref": "RowData"
+                    },
+                    "type": "array"
+                },
+                "start": {
+                    "$ref": "GridCoordinate",
+                    "description": "The coordinate to start writing data at.\nAny number of rows and columns (including a different number of\ncolumns per row) may be written."
+                },
+                "range": {
+                    "$ref": "GridRange",
+                    "description": "The range to write data to.\n\nIf the data in rows does not cover the entire requested range,\nthe fields matching those set in fields will be cleared."
+                }
+            },
+            "type": "object"
+        },
+        "DeleteConditionalFormatRuleResponse": {
+            "description": "The result of deleting a conditional format rule.",
+            "id": "DeleteConditionalFormatRuleResponse",
+            "properties": {
+                "rule": {
+                    "$ref": "ConditionalFormatRule",
+                    "description": "The rule that was deleted."
+                }
+            },
+            "type": "object"
+        },
+        "RandomizeRangeRequest": {
+            "description": "Randomizes the order of the rows in a range.",
+            "id": "RandomizeRangeRequest",
+            "properties": {
+                "range": {
+                    "$ref": "GridRange",
+                    "description": "The range to randomize."
+                }
+            },
+            "type": "object"
+        },
+        "DeleteRangeRequest": {
+            "description": "Deletes a range of cells, shifting other cells into the deleted area.",
+            "id": "DeleteRangeRequest",
+            "properties": {
+                "shiftDimension": {
+                    "description": "The dimension from which deleted cells will be replaced with.\nIf ROWS, existing cells will be shifted upward to\nreplace the deleted cells. If COLUMNS, existing cells\nwill be shifted left to replace the deleted cells.",
+                    "enum": [
+                        "DIMENSION_UNSPECIFIED",
+                        "ROWS",
+                        "COLUMNS"
+                    ],
+                    "enumDescriptions": [
+                        "The default value, do not use.",
+                        "Operates on the rows of a sheet.",
+                        "Operates on the columns of a sheet."
+                    ],
+                    "type": "string"
+                },
+                "range": {
+                    "$ref": "GridRange",
+                    "description": "The range of cells to delete."
+                }
+            },
+            "type": "object"
+        },
+        "GridCoordinate": {
+            "description": "A coordinate in a sheet.\nAll indexes are zero-based.",
+            "id": "GridCoordinate",
+            "properties": {
+                "columnIndex": {
+                    "description": "The column index of the coordinate.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "rowIndex": {
+                    "description": "The row index of the coordinate.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "sheetId": {
+                    "description": "The sheet this coordinate is on.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "UpdateSheetPropertiesRequest": {
+            "description": "Updates properties of the sheet with the specified\nsheetId.",
+            "id": "UpdateSheetPropertiesRequest",
+            "properties": {
+                "properties": {
+                    "$ref": "SheetProperties",
+                    "description": "The properties to update."
+                },
+                "fields": {
+                    "description": "The fields that should be updated.  At least one field must be specified.\nThe root `properties` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/slides__v1.json b/discovery/googleapis/slides__v1.json
index febba09..5b0e45f 100644
--- a/discovery/googleapis/slides__v1.json
+++ b/discovery/googleapis/slides__v1.json
@@ -2,23 +2,23 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/spreadsheets": {
-                    "description": "View and manage your spreadsheets in Google Drive"
-                },
-                "https://www.googleapis.com/auth/presentations": {
-                    "description": "View and manage your Google Slides presentations"
-                },
                 "https://www.googleapis.com/auth/presentations.readonly": {
                     "description": "View your Google Slides presentations"
                 },
-                "https://www.googleapis.com/auth/drive.readonly": {
-                    "description": "View the files in your Google Drive"
-                },
                 "https://www.googleapis.com/auth/spreadsheets.readonly": {
                     "description": "View your Google Spreadsheets"
                 },
                 "https://www.googleapis.com/auth/drive": {
                     "description": "View and manage the files in your Google Drive"
+                },
+                "https://www.googleapis.com/auth/drive.readonly": {
+                    "description": "View the files in your Google Drive"
+                },
+                "https://www.googleapis.com/auth/spreadsheets": {
+                    "description": "View and manage your spreadsheets in Google Drive"
+                },
+                "https://www.googleapis.com/auth/presentations": {
+                    "description": "View and manage your Google Slides presentations"
                 }
             }
         }
@@ -40,6 +40,16 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -61,11 +71,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -79,6 +84,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -115,16 +125,6 @@
             "description": "Pretty-print response.",
             "location": "query",
             "type": "boolean"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
         }
     },
     "protocol": "rest",
@@ -210,56 +210,6 @@
             "resources": {
                 "pages": {
                     "methods": {
-                        "getThumbnail": {
-                            "description": "Generates a thumbnail of the latest version of the specified page in the\npresentation and returns a URL to the thumbnail image.",
-                            "httpMethod": "GET",
-                            "id": "slides.presentations.pages.getThumbnail",
-                            "parameterOrder": [
-                                "presentationId",
-                                "pageObjectId"
-                            ],
-                            "parameters": {
-                                "pageObjectId": {
-                                    "description": "The object ID of the page whose thumbnail to retrieve.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "thumbnailProperties.thumbnailSize": {
-                                    "description": "The optional thumbnail image size.\n\nIf you don't specify the size, the server chooses a default size of the\nimage.",
-                                    "enum": [
-                                        "THUMBNAIL_SIZE_UNSPECIFIED",
-                                        "LARGE"
-                                    ],
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "thumbnailProperties.mimeType": {
-                                    "description": "The optional mime type of the thumbnail image.\n\nIf you don't specify the mime type, the default mime type will be PNG.",
-                                    "enum": [
-                                        "PNG"
-                                    ],
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "presentationId": {
-                                    "description": "The ID of the presentation to retrieve.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/presentations/{presentationId}/pages/{pageObjectId}/thumbnail",
-                            "response": {
-                                "$ref": "Thumbnail"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/drive",
-                                "https://www.googleapis.com/auth/drive.readonly",
-                                "https://www.googleapis.com/auth/presentations",
-                                "https://www.googleapis.com/auth/presentations.readonly"
-                            ]
-                        },
                         "get": {
                             "description": "Gets the latest version of the specified page in the presentation.",
                             "httpMethod": "GET",
@@ -292,19 +242,686 @@
                                 "https://www.googleapis.com/auth/presentations",
                                 "https://www.googleapis.com/auth/presentations.readonly"
                             ]
+                        },
+                        "getThumbnail": {
+                            "description": "Generates a thumbnail of the latest version of the specified page in the\npresentation and returns a URL to the thumbnail image.",
+                            "httpMethod": "GET",
+                            "id": "slides.presentations.pages.getThumbnail",
+                            "parameterOrder": [
+                                "presentationId",
+                                "pageObjectId"
+                            ],
+                            "parameters": {
+                                "thumbnailProperties.thumbnailSize": {
+                                    "description": "The optional thumbnail image size.\n\nIf you don't specify the size, the server chooses a default size of the\nimage.",
+                                    "enum": [
+                                        "THUMBNAIL_SIZE_UNSPECIFIED",
+                                        "LARGE"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "thumbnailProperties.mimeType": {
+                                    "description": "The optional mime type of the thumbnail image.\n\nIf you don't specify the mime type, the default mime type will be PNG.",
+                                    "enum": [
+                                        "PNG"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "presentationId": {
+                                    "description": "The ID of the presentation to retrieve.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageObjectId": {
+                                    "description": "The object ID of the page whose thumbnail to retrieve.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/presentations/{presentationId}/pages/{pageObjectId}/thumbnail",
+                            "response": {
+                                "$ref": "Thumbnail"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/drive",
+                                "https://www.googleapis.com/auth/drive.readonly",
+                                "https://www.googleapis.com/auth/presentations",
+                                "https://www.googleapis.com/auth/presentations.readonly"
+                            ]
                         }
                     }
                 }
             }
         }
     },
-    "revision": "20171002",
+    "revision": "20171012",
     "rootUrl": "https://slides.googleapis.com/",
     "schemas": {
+        "UpdateImagePropertiesRequest": {
+            "description": "Update the properties of an Image.",
+            "id": "UpdateImagePropertiesRequest",
+            "properties": {
+                "imageProperties": {
+                    "$ref": "ImageProperties",
+                    "description": "The image properties to update."
+                },
+                "objectId": {
+                    "description": "The object ID of the image the updates are applied to.",
+                    "type": "string"
+                },
+                "fields": {
+                    "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `imageProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the image outline color, set `fields` to\n`\"outline.outlineFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ParagraphStyle": {
+            "description": "Styles that apply to a whole paragraph.\n\nIf this text is contained in a shape with a parent placeholder, then these paragraph styles may be\ninherited from the parent. Which paragraph styles are inherited depend on the\nnesting level of lists:\n\n* A paragraph not in a list will inherit its paragraph style from the\n  paragraph at the 0 nesting level of the list inside the parent placeholder.\n* A paragraph in a list will inherit its paragraph style from the paragraph\n  at its corresponding nesting level of the list inside the parent\n  placeholder.\n\nInherited paragraph styles are represented as unset fields in this message.",
+            "id": "ParagraphStyle",
+            "properties": {
+                "indentStart": {
+                    "$ref": "Dimension",
+                    "description": "The amount indentation for the paragraph on the side that corresponds to\nthe start of the text, based on the current text direction. If unset, the\nvalue is inherited from the parent."
+                },
+                "spaceAbove": {
+                    "$ref": "Dimension",
+                    "description": "The amount of extra space above the paragraph. If unset, the value is\ninherited from the parent."
+                },
+                "alignment": {
+                    "description": "The text alignment for this paragraph.",
+                    "enum": [
+                        "ALIGNMENT_UNSPECIFIED",
+                        "START",
+                        "CENTER",
+                        "END",
+                        "JUSTIFIED"
+                    ],
+                    "enumDescriptions": [
+                        "The paragraph alignment is inherited from the parent.",
+                        "The paragraph is aligned to the start of the line. Left-aligned for\nLTR text, right-aligned otherwise.",
+                        "The paragraph is centered.",
+                        "The paragraph is aligned to the end of the line. Right-aligned for\nLTR text, left-aligned otherwise.",
+                        "The paragraph is justified."
+                    ],
+                    "type": "string"
+                },
+                "lineSpacing": {
+                    "description": "The amount of space between lines, as a percentage of normal, where normal\nis represented as 100.0. If unset, the value is inherited from the parent.",
+                    "format": "float",
+                    "type": "number"
+                },
+                "indentFirstLine": {
+                    "$ref": "Dimension",
+                    "description": "The amount of indentation for the start of the first line of the paragraph.\nIf unset, the value is inherited from the parent."
+                },
+                "spaceBelow": {
+                    "$ref": "Dimension",
+                    "description": "The amount of extra space above the paragraph. If unset, the value is\ninherited from the parent."
+                },
+                "direction": {
+                    "description": "The text direction of this paragraph. If unset, the value defaults to\nLEFT_TO_RIGHT since\ntext direction is not inherited.",
+                    "enum": [
+                        "TEXT_DIRECTION_UNSPECIFIED",
+                        "LEFT_TO_RIGHT",
+                        "RIGHT_TO_LEFT"
+                    ],
+                    "enumDescriptions": [
+                        "The text direction is inherited from the parent.",
+                        "The text goes from left to right.",
+                        "The text goes from right to left."
+                    ],
+                    "type": "string"
+                },
+                "indentEnd": {
+                    "$ref": "Dimension",
+                    "description": "The amount indentation for the paragraph on the side that corresponds to\nthe end of the text, based on the current text direction. If unset, the\nvalue is inherited from the parent."
+                },
+                "spacingMode": {
+                    "description": "The spacing mode for the paragraph.",
+                    "enum": [
+                        "SPACING_MODE_UNSPECIFIED",
+                        "NEVER_COLLAPSE",
+                        "COLLAPSE_LISTS"
+                    ],
+                    "enumDescriptions": [
+                        "The spacing mode is inherited from the parent.",
+                        "Paragraph spacing is always rendered.",
+                        "Paragraph spacing is skipped between list elements."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "UpdateTableRowPropertiesRequest": {
+            "description": "Updates the properties of a Table row.",
+            "id": "UpdateTableRowPropertiesRequest",
+            "properties": {
+                "fields": {
+                    "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `tableRowProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the minimum row height, set `fields` to\n`\"min_row_height\"`.\n\nIf '\"min_row_height\"' is included in the field mask but the property is\nleft unset, the minimum row height will default to 0.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                },
+                "tableRowProperties": {
+                    "$ref": "TableRowProperties",
+                    "description": "The table row properties to update."
+                },
+                "objectId": {
+                    "description": "The object ID of the table.",
+                    "type": "string"
+                },
+                "rowIndices": {
+                    "description": "The list of zero-based indices specifying which rows to update. If no\nindices are provided, all rows in the table will be updated.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ReplaceAllShapesWithSheetsChartResponse": {
+            "description": "The result of replacing shapes with a Google Sheets chart.",
+            "id": "ReplaceAllShapesWithSheetsChartResponse",
+            "properties": {
+                "occurrencesChanged": {
+                    "description": "The number of shapes replaced with charts.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "TableCellProperties": {
+            "description": "The properties of the TableCell.",
+            "id": "TableCellProperties",
+            "properties": {
+                "tableCellBackgroundFill": {
+                    "$ref": "TableCellBackgroundFill",
+                    "description": "The background fill of the table cell. The default fill matches the fill\nfor newly created table cells in the Slides editor."
+                }
+            },
+            "type": "object"
+        },
+        "Outline": {
+            "description": "The outline of a PageElement.\n\nIf these fields are unset, they may be inherited from a parent placeholder\nif it exists. If there is no parent, the fields will default to the value\nused for new page elements created in the Slides editor, which may depend on\nthe page element kind.",
+            "id": "Outline",
+            "properties": {
+                "outlineFill": {
+                    "$ref": "OutlineFill",
+                    "description": "The fill of the outline."
+                },
+                "weight": {
+                    "$ref": "Dimension",
+                    "description": "The thickness of the outline."
+                },
+                "dashStyle": {
+                    "description": "The dash style of the outline.",
+                    "enum": [
+                        "DASH_STYLE_UNSPECIFIED",
+                        "SOLID",
+                        "DOT",
+                        "DASH",
+                        "DASH_DOT",
+                        "LONG_DASH",
+                        "LONG_DASH_DOT"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified dash style.",
+                        "Solid line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'solid'.\nThis is the default dash style.",
+                        "Dotted line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'dot'.",
+                        "Dashed line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'dash'.",
+                        "Alternating dashes and dots. Corresponds to ECMA-376 ST_PresetLineDashVal\nvalue 'dashDot'.",
+                        "Line with large dashes. Corresponds to ECMA-376 ST_PresetLineDashVal\nvalue 'lgDash'.",
+                        "Alternating large dashes and dots. Corresponds to ECMA-376\nST_PresetLineDashVal value 'lgDashDot'."
+                    ],
+                    "type": "string"
+                },
+                "propertyState": {
+                    "description": "The outline property state.\n\nUpdating the the outline on a page element will implicitly update this\nfield to`RENDERED`, unless another value is specified in the same request.\nTo have no outline on a page element, set this field to `NOT_RENDERED`. In\nthis case, any other outline fields set in the same request will be\nignored.",
+                    "enum": [
+                        "RENDERED",
+                        "NOT_RENDERED",
+                        "INHERIT"
+                    ],
+                    "enumDescriptions": [
+                        "If a property's state is RENDERED, then the element has the corresponding\nproperty when rendered on a page. If the element is a placeholder shape as\ndetermined by the placeholder\nfield, and it inherits from a placeholder shape, the corresponding field\nmay be unset, meaning that the property value is inherited from a parent\nplaceholder. If the element does not inherit, then the field will contain\nthe rendered value. This is the default value.",
+                        "If a property's state is NOT_RENDERED, then the element does not have the\ncorresponding property when rendered on a page. However, the field may\nstill be set so it can be inherited by child shapes. To remove a property\nfrom a rendered element, set its property_state to NOT_RENDERED.",
+                        "If a property's state is INHERIT, then the property state uses the value of\ncorresponding `property_state` field on the parent shape. Elements that do\nnot inherit will never have an INHERIT property state."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "RefreshSheetsChartRequest": {
+            "description": "Refreshes an embedded Google Sheets chart by replacing it with the latest\nversion of the chart from Google Sheets.\n\nNOTE: Refreshing charts requires  at least one of the spreadsheets.readonly,\nspreadsheets, drive.readonly, or drive OAuth scopes.",
+            "id": "RefreshSheetsChartRequest",
+            "properties": {
+                "objectId": {
+                    "description": "The object ID of the chart to refresh.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ShapeProperties": {
+            "description": "The properties of a Shape.\n\nIf the shape is a placeholder shape as determined by the\nplaceholder field, then these\nproperties may be inherited from a parent placeholder shape.\nDetermining the rendered value of the property depends on the corresponding\nproperty_state field value.",
+            "id": "ShapeProperties",
+            "properties": {
+                "link": {
+                    "$ref": "Link",
+                    "description": "The hyperlink destination of the shape. If unset, there is no link. Links\nare not inherited from parent placeholders."
+                },
+                "outline": {
+                    "$ref": "Outline",
+                    "description": "The outline of the shape. If unset, the outline is inherited from a\nparent placeholder if it exists. If the shape has no parent, then the\ndefault outline depends on the shape type, matching the defaults for\nnew shapes created in the Slides editor."
+                },
+                "shadow": {
+                    "$ref": "Shadow",
+                    "description": "The shadow properties of the shape. If unset, the shadow is inherited from\na parent placeholder if it exists. If the shape has no parent, then the\ndefault shadow matches the defaults for new shapes created in the Slides\neditor. This property is read-only."
+                },
+                "shapeBackgroundFill": {
+                    "$ref": "ShapeBackgroundFill",
+                    "description": "The background fill of the shape. If unset, the background fill is\ninherited from a parent placeholder if it exists. If the shape has no\nparent, then the default background fill depends on the shape type,\nmatching the defaults for new shapes created in the Slides editor."
+                }
+            },
+            "type": "object"
+        },
+        "TableColumnProperties": {
+            "description": "Properties of each column in a table.",
+            "id": "TableColumnProperties",
+            "properties": {
+                "columnWidth": {
+                    "$ref": "Dimension",
+                    "description": "Width of a column."
+                }
+            },
+            "type": "object"
+        },
+        "NotesProperties": {
+            "description": "The properties of Page that are only\nrelevant for pages with page_type NOTES.",
+            "id": "NotesProperties",
+            "properties": {
+                "speakerNotesObjectId": {
+                    "description": "The object ID of the shape on this notes page that contains the speaker\nnotes for the corresponding slide.\nThe actual shape may not always exist on the notes page. Inserting text\nusing this object ID will automatically create the shape. In this case, the\nactual shape may have different object ID. The `GetPresentation` or\n`GetPage` action will always return the latest object ID.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TableRow": {
+            "description": "Properties and contents of each row in a table.",
+            "id": "TableRow",
+            "properties": {
+                "tableCells": {
+                    "description": "Properties and contents of each cell.\n\nCells that span multiple columns are represented only once with a\ncolumn_span greater\nthan 1. As a result, the length of this collection does not always match\nthe number of columns of the entire table.",
+                    "items": {
+                        "$ref": "TableCell"
+                    },
+                    "type": "array"
+                },
+                "rowHeight": {
+                    "$ref": "Dimension",
+                    "description": "Height of a row."
+                },
+                "tableRowProperties": {
+                    "$ref": "TableRowProperties",
+                    "description": "Properties of the row."
+                }
+            },
+            "type": "object"
+        },
+        "UpdateTableCellPropertiesRequest": {
+            "description": "Update the properties of a TableCell.",
+            "id": "UpdateTableCellPropertiesRequest",
+            "properties": {
+                "fields": {
+                    "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `tableCellProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the table cell background solid fill color, set\n`fields` to `\"tableCellBackgroundFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                },
+                "tableRange": {
+                    "$ref": "TableRange",
+                    "description": "The table range representing the subset of the table to which the updates\nare applied. If a table range is not specified, the updates will apply to\nthe entire table."
+                },
+                "objectId": {
+                    "description": "The object ID of the table.",
+                    "type": "string"
+                },
+                "tableCellProperties": {
+                    "$ref": "TableCellProperties",
+                    "description": "The table cell properties to update."
+                }
+            },
+            "type": "object"
+        },
+        "CreateSlideRequest": {
+            "description": "Creates a new slide.",
+            "id": "CreateSlideRequest",
+            "properties": {
+                "slideLayoutReference": {
+                    "$ref": "LayoutReference",
+                    "description": "Layout reference of the slide to be inserted, based on the *current\nmaster*, which is one of the following:\n\n- The master of the previous slide index.\n- The master of the first slide, if the insertion_index is zero.\n- The first master in the presentation, if there are no slides.\n\nIf the LayoutReference is not found in the current master, a 400 bad\nrequest error is returned.\n\nIf you don't specify a layout reference, then the new slide will use the\npredefined layout `BLANK`."
+                },
+                "objectId": {
+                    "description": "A user-supplied object ID.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\n\nIf you don't specify an ID, a unique one is generated.",
+                    "type": "string"
+                },
+                "insertionIndex": {
+                    "description": "The optional zero-based index indicating where to insert the slides.\n\nIf you don't specify an index, the new slide is created at the end.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "placeholderIdMappings": {
+                    "description": "An optional list of object ID mappings from the placeholder(s) on the layout to the placeholder(s)\nthat will be created on the new slide from that specified layout. Can only\nbe used when `slide_layout_reference` is specified.",
+                    "items": {
+                        "$ref": "LayoutPlaceholderIdMapping"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "TableRowProperties": {
+            "description": "Properties of each row in a table.",
+            "id": "TableRowProperties",
+            "properties": {
+                "minRowHeight": {
+                    "$ref": "Dimension",
+                    "description": "Minimum height of the row. The row will be rendered in the Slides editor at\na height equal to or greater than this value in order to show all the text\nin the row's cell(s)."
+                }
+            },
+            "type": "object"
+        },
+        "BatchUpdatePresentationRequest": {
+            "description": "Request message for PresentationsService.BatchUpdatePresentation.",
+            "id": "BatchUpdatePresentationRequest",
+            "properties": {
+                "writeControl": {
+                    "$ref": "WriteControl",
+                    "description": "Provides control over how write requests are executed."
+                },
+                "requests": {
+                    "description": "A list of updates to apply to the presentation.",
+                    "items": {
+                        "$ref": "Request"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GroupObjectsResponse": {
+            "description": "The result of grouping objects.",
+            "id": "GroupObjectsResponse",
+            "properties": {
+                "objectId": {
+                    "description": "The object ID of the created group.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TextContent": {
+            "description": "The general text content. The text must reside in a compatible shape (e.g.\ntext box or rectangle) or a table cell in a page.",
+            "id": "TextContent",
+            "properties": {
+                "textElements": {
+                    "description": "The text contents broken down into its component parts, including styling\ninformation. This property is read-only.",
+                    "items": {
+                        "$ref": "TextElement"
+                    },
+                    "type": "array"
+                },
+                "lists": {
+                    "additionalProperties": {
+                        "$ref": "List"
+                    },
+                    "description": "The bulleted lists contained in this text, keyed by list ID.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "TableBorderCell": {
+            "description": "The properties of each border cell.",
+            "id": "TableBorderCell",
+            "properties": {
+                "tableBorderProperties": {
+                    "$ref": "TableBorderProperties",
+                    "description": "The border properties."
+                },
+                "location": {
+                    "$ref": "TableCellLocation",
+                    "description": "The location of the border within the border table."
+                }
+            },
+            "type": "object"
+        },
+        "TableBorderProperties": {
+            "description": "The border styling properties of the\nTableBorderCell.",
+            "id": "TableBorderProperties",
+            "properties": {
+                "weight": {
+                    "$ref": "Dimension",
+                    "description": "The thickness of the border."
+                },
+                "dashStyle": {
+                    "description": "The dash style of the border.",
+                    "enum": [
+                        "DASH_STYLE_UNSPECIFIED",
+                        "SOLID",
+                        "DOT",
+                        "DASH",
+                        "DASH_DOT",
+                        "LONG_DASH",
+                        "LONG_DASH_DOT"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified dash style.",
+                        "Solid line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'solid'.\nThis is the default dash style.",
+                        "Dotted line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'dot'.",
+                        "Dashed line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'dash'.",
+                        "Alternating dashes and dots. Corresponds to ECMA-376 ST_PresetLineDashVal\nvalue 'dashDot'.",
+                        "Line with large dashes. Corresponds to ECMA-376 ST_PresetLineDashVal\nvalue 'lgDash'.",
+                        "Alternating large dashes and dots. Corresponds to ECMA-376\nST_PresetLineDashVal value 'lgDashDot'."
+                    ],
+                    "type": "string"
+                },
+                "tableBorderFill": {
+                    "$ref": "TableBorderFill",
+                    "description": "The fill of the table border."
+                }
+            },
+            "type": "object"
+        },
+        "CreateSheetsChartResponse": {
+            "description": "The result of creating an embedded Google Sheets chart.",
+            "id": "CreateSheetsChartResponse",
+            "properties": {
+                "objectId": {
+                    "description": "The object ID of the created chart.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "WriteControl": {
+            "description": "Provides control over how write requests are executed.",
+            "id": "WriteControl",
+            "properties": {
+                "requiredRevisionId": {
+                    "description": "The revision ID of the presentation required for the write request. If\nspecified and the `required_revision_id` doesn't exactly match the\npresentation's current `revision_id`, the request will not be processed and\nwill return a 400 bad request error.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DeleteParagraphBulletsRequest": {
+            "description": "Deletes bullets from all of the paragraphs that overlap with the given text\nindex range.\n\nThe nesting level of each paragraph will be visually preserved by adding\nindent to the start of the corresponding paragraph.",
+            "id": "DeleteParagraphBulletsRequest",
+            "properties": {
+                "textRange": {
+                    "$ref": "Range",
+                    "description": "The range of text to delete bullets from, based on TextElement indexes."
+                },
+                "objectId": {
+                    "description": "The object ID of the shape or table containing the text to delete bullets\nfrom.",
+                    "type": "string"
+                },
+                "cellLocation": {
+                    "$ref": "TableCellLocation",
+                    "description": "The optional table cell location if the text to be modified is in a table\ncell. If present, the object_id must refer to a table."
+                }
+            },
+            "type": "object"
+        },
+        "ParagraphMarker": {
+            "description": "A TextElement kind that represents the beginning of a new paragraph.",
+            "id": "ParagraphMarker",
+            "properties": {
+                "bullet": {
+                    "$ref": "Bullet",
+                    "description": "The bullet for this paragraph. If not present, the paragraph does not\nbelong to a list."
+                },
+                "style": {
+                    "$ref": "ParagraphStyle",
+                    "description": "The paragraph's style"
+                }
+            },
+            "type": "object"
+        },
+        "InsertTableColumnsRequest": {
+            "description": "Inserts columns into a table.\n\nOther columns in the table will be resized to fit the new column.",
+            "id": "InsertTableColumnsRequest",
+            "properties": {
+                "insertRight": {
+                    "description": "Whether to insert new columns to the right of the reference cell location.\n\n- `True`: insert to the right.\n- `False`: insert to the left.",
+                    "type": "boolean"
+                },
+                "tableObjectId": {
+                    "description": "The table to insert columns into.",
+                    "type": "string"
+                },
+                "number": {
+                    "description": "The number of columns to be inserted. Maximum 20 per request.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "cellLocation": {
+                    "$ref": "TableCellLocation",
+                    "description": "The reference table cell location from which columns will be inserted.\n\nA new column will be inserted to the left (or right) of the column where\nthe reference cell is. If the reference cell is a merged cell, a new\ncolumn will be inserted to the left (or right) of the merged cell."
+                }
+            },
+            "type": "object"
+        },
+        "Thumbnail": {
+            "description": "The thumbnail of a page.",
+            "id": "Thumbnail",
+            "properties": {
+                "width": {
+                    "description": "The positive width in pixels of the thumbnail image.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "height": {
+                    "description": "The positive height in pixels of the thumbnail image.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "contentUrl": {
+                    "description": "The content URL of the thumbnail image.\n\nThe URL to the image has a default lifetime of 30 minutes.\nThis URL is tagged with the account of the requester. Anyone with the URL\neffectively accesses the image as the original requester. Access to the\nimage may be lost if the presentation's sharing settings change.\nThe mime type of the thumbnail image is the same as specified in the\n`GetPageThumbnailRequest`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LayoutPlaceholderIdMapping": {
+            "description": "The user-specified ID mapping for a placeholder that will be created on a\nslide from a specified layout.",
+            "id": "LayoutPlaceholderIdMapping",
+            "properties": {
+                "layoutPlaceholder": {
+                    "$ref": "Placeholder",
+                    "description": "The placeholder on a layout that will be applied to a slide. Only type and index are needed. For example, a\npredefined `TITLE_AND_BODY` layout may usually have a TITLE placeholder\nwith index 0 and a BODY placeholder with index 0."
+                },
+                "layoutPlaceholderObjectId": {
+                    "description": "The object ID of the placeholder on a layout that will be applied\nto a slide.",
+                    "type": "string"
+                },
+                "objectId": {
+                    "description": "A user-supplied object ID for the placeholder identified above that to be\ncreated onto a slide.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\n\nIf you don't specify an ID, a unique one is generated.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "UpdateTableBorderPropertiesRequest": {
+            "description": "Updates the properties of the table borders in a Table.",
+            "id": "UpdateTableBorderPropertiesRequest",
+            "properties": {
+                "fields": {
+                    "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `tableBorderProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the table border solid fill color, set\n`fields` to `\"tableBorderFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                },
+                "borderPosition": {
+                    "description": "The border position in the table range the updates should apply to. If a\nborder position is not specified, the updates will apply to all borders in\nthe table range.",
+                    "enum": [
+                        "ALL",
+                        "BOTTOM",
+                        "INNER",
+                        "INNER_HORIZONTAL",
+                        "INNER_VERTICAL",
+                        "LEFT",
+                        "OUTER",
+                        "RIGHT",
+                        "TOP"
+                    ],
+                    "enumDescriptions": [
+                        "All borders in the range.",
+                        "Borders at the bottom of the range.",
+                        "Borders on the inside of the range.",
+                        "Horizontal borders on the inside of the range.",
+                        "Vertical borders on the inside of the range.",
+                        "Borders at the left of the range.",
+                        "Borders along the outside of the range.",
+                        "Borders at the right of the range.",
+                        "Borders at the top of the range."
+                    ],
+                    "type": "string"
+                },
+                "tableRange": {
+                    "$ref": "TableRange",
+                    "description": "The table range representing the subset of the table to which the updates\nare applied. If a table range is not specified, the updates will apply to\nthe entire table."
+                },
+                "objectId": {
+                    "description": "The object ID of the table.",
+                    "type": "string"
+                },
+                "tableBorderProperties": {
+                    "$ref": "TableBorderProperties",
+                    "description": "The table border properties to update."
+                }
+            },
+            "type": "object"
+        },
         "UpdateShapePropertiesRequest": {
             "description": "Update the properties of a Shape.",
             "id": "UpdateShapePropertiesRequest",
             "properties": {
+                "fields": {
+                    "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `shapeProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the shape background solid fill color, set `fields`\nto `\"shapeBackgroundFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                },
                 "objectId": {
                     "description": "The object ID of the shape the updates are applied to.",
                     "type": "string"
@@ -312,11 +929,6 @@
                 "shapeProperties": {
                     "$ref": "ShapeProperties",
                     "description": "The shape properties to update."
-                },
-                "fields": {
-                    "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `shapeProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the shape background solid fill color, set `fields`\nto `\"shapeBackgroundFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.",
-                    "format": "google-fieldmask",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -332,6 +944,34 @@
             },
             "type": "object"
         },
+        "UpdateTableColumnPropertiesRequest": {
+            "description": "Updates the properties of a Table column.",
+            "id": "UpdateTableColumnPropertiesRequest",
+            "properties": {
+                "objectId": {
+                    "description": "The object ID of the table.",
+                    "type": "string"
+                },
+                "tableColumnProperties": {
+                    "$ref": "TableColumnProperties",
+                    "description": "The table column properties to update.\n\nIf the value of `table_column_properties#column_width` in the request is\nless than 406,400 EMU (32 points), a 400 bad request error is returned."
+                },
+                "columnIndices": {
+                    "description": "The list of zero-based indices specifying which columns to update. If no\nindices are provided, all columns in the table will be updated.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                },
+                "fields": {
+                    "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `tableColumnProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the column width, set `fields` to `\"column_width\"`.\n\nIf '\"column_width\"' is included in the field mask but the property is left\nunset, the column width will default to 406,400 EMU (32 points).",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "Recolor": {
             "description": "A recolor effect applied on an image.",
             "id": "Recolor",
@@ -442,10 +1082,26 @@
             },
             "type": "object"
         },
+        "CreateShapeResponse": {
+            "description": "The result of creating a shape.",
+            "id": "CreateShapeResponse",
+            "properties": {
+                "objectId": {
+                    "description": "The object ID of the created shape.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "RgbColor": {
             "description": "An RGB color.",
             "id": "RgbColor",
             "properties": {
+                "red": {
+                    "description": "The red component of the color, from 0.0 to 1.0.",
+                    "format": "float",
+                    "type": "number"
+                },
                 "blue": {
                     "description": "The blue component of the color, from 0.0 to 1.0.",
                     "format": "float",
@@ -455,22 +1111,6 @@
                     "description": "The green component of the color, from 0.0 to 1.0.",
                     "format": "float",
                     "type": "number"
-                },
-                "red": {
-                    "description": "The red component of the color, from 0.0 to 1.0.",
-                    "format": "float",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "CreateShapeResponse": {
-            "description": "The result of creating a shape.",
-            "id": "CreateShapeResponse",
-            "properties": {
-                "objectId": {
-                    "description": "The object ID of the created shape.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -914,10 +1554,6 @@
             "description": "Updates the properties of a Line.",
             "id": "UpdateLinePropertiesRequest",
             "properties": {
-                "objectId": {
-                    "description": "The object ID of the line the update is applied to.",
-                    "type": "string"
-                },
                 "lineProperties": {
                     "$ref": "LineProperties",
                     "description": "The line properties to update."
@@ -926,6 +1562,10 @@
                     "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `lineProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the line solid fill color, set `fields` to\n`\"lineFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.",
                     "format": "google-fieldmask",
                     "type": "string"
+                },
+                "objectId": {
+                    "description": "The object ID of the line the update is applied to.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -939,7 +1579,7 @@
                     "description": "Solid color fill."
                 },
                 "propertyState": {
-                    "description": "The background fill property state.\n\nUpdating the the fill on a table cell will implicitly update this field\nto `RENDERED`, unless another value is specified in the same request. To\nhave no fill on a table cell, set this field to `NOT_RENDERED`. In this\ncase, any other fill fields set in the same request will be ignored.",
+                    "description": "The background fill property state.\n\nUpdating the fill on a table cell will implicitly update this field\nto `RENDERED`, unless another value is specified in the same request. To\nhave no fill on a table cell, set this field to `NOT_RENDERED`. In this\ncase, any other fill fields set in the same request will be ignored.",
                     "enum": [
                         "RENDERED",
                         "NOT_RENDERED",
@@ -959,17 +1599,17 @@
             "description": "Updates the position of slides in the presentation.",
             "id": "UpdateSlidesPositionRequest",
             "properties": {
+                "insertionIndex": {
+                    "description": "The index where the slides should be inserted, based on the slide\narrangement before the move takes place. Must be between zero and the\nnumber of slides in the presentation, inclusive.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "slideObjectIds": {
                     "description": "The IDs of the slides in the presentation that should be moved.\nThe slides in this list must be in existing presentation order, without\nduplicates.",
                     "items": {
                         "type": "string"
                     },
                     "type": "array"
-                },
-                "insertionIndex": {
-                    "description": "The index where the slides should be inserted, based on the slide\narrangement before the move takes place. Must be between zero and the\nnumber of slides in the presentation, inclusive.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -978,11 +1618,6 @@
             "description": "Updates the properties of a Page.",
             "id": "UpdatePagePropertiesRequest",
             "properties": {
-                "fields": {
-                    "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `pageProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the page background solid fill color, set `fields`\nto `\"pageBackgroundFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.",
-                    "format": "google-fieldmask",
-                    "type": "string"
-                },
                 "pageProperties": {
                     "$ref": "PageProperties",
                     "description": "The page properties to update."
@@ -990,6 +1625,11 @@
                 "objectId": {
                     "description": "The object ID of the page the update is applied to.",
                     "type": "string"
+                },
+                "fields": {
+                    "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `pageProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the page background solid fill color, set `fields`\nto `\"pageBackgroundFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.",
+                    "format": "google-fieldmask",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1012,6 +1652,10 @@
             "description": "The placeholder information that uniquely identifies a placeholder shape.",
             "id": "Placeholder",
             "properties": {
+                "parentObjectId": {
+                    "description": "The object ID of this shape's parent placeholder.\nIf unset, the parent placeholder shape does not exist, so the shape does\nnot inherit properties from any other shape.",
+                    "type": "string"
+                },
                 "index": {
                     "description": "The index of the placeholder. If the same placeholder types are present in\nthe same page, they would have different index values.",
                     "format": "int32",
@@ -1058,10 +1702,6 @@
                         "Slide image."
                     ],
                     "type": "string"
-                },
-                "parentObjectId": {
-                    "description": "The object ID of this shape's parent placeholder.\nIf unset, the parent placeholder shape does not exist, so the shape does\nnot inherit properties from any other shape.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1070,16 +1710,16 @@
             "description": "Duplicates a slide or page element.\n\nWhen duplicating a slide, the duplicate slide will be created immediately\nfollowing the specified slide. When duplicating a page element, the duplicate\nwill be placed on the same page at the same position as the original.",
             "id": "DuplicateObjectRequest",
             "properties": {
+                "objectId": {
+                    "description": "The ID of the object to duplicate.",
+                    "type": "string"
+                },
                 "objectIds": {
                     "additionalProperties": {
                         "type": "string"
                     },
                     "description": "The object being duplicated may contain other objects, for example when\nduplicating a slide or a group page element. This map defines how the IDs\nof duplicated objects are generated: the keys are the IDs of the original\nobjects and its values are the IDs that will be assigned to the\ncorresponding duplicate object. The ID of the source object's duplicate\nmay be specified in this map as well, using the same value of the\n`object_id` field as a key and the newly desired ID as the value.\n\nAll keys must correspond to existing IDs in the presentation. All values\nmust be unique in the presentation and must start with an alphanumeric\ncharacter or an underscore (matches regex `[a-zA-Z0-9_]`); remaining\ncharacters may include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`). The length of the new ID must not be less than 5 or\ngreater than 50.\n\nIf any IDs of source objects are omitted from the map, a new random ID will\nbe assigned. If the map is empty or unset, all duplicate objects will\nreceive a new random ID.",
                     "type": "object"
-                },
-                "objectId": {
-                    "description": "The ID of the object to duplicate.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1110,6 +1750,18 @@
             "description": "A page in a presentation.",
             "id": "Page",
             "properties": {
+                "masterProperties": {
+                    "$ref": "MasterProperties",
+                    "description": "Master specific properties. Only set if page_type = MASTER."
+                },
+                "objectId": {
+                    "description": "The object ID for this page. Object IDs used by\nPage and\nPageElement share the same namespace.",
+                    "type": "string"
+                },
+                "revisionId": {
+                    "description": "The revision ID of the presentation containing this page. Can be used in\nupdate requests to assert that the presentation revision hasn't changed\nsince the last read operation. Only populated if the user has edit access\nto the presentation.\n\nThe format of the revision ID may change over time, so it should be treated\nopaquely. A returned revision ID is only guaranteed to be valid for 24\nhours after it has been returned and cannot be shared across users. If the\nrevision ID is unchanged between calls, then the presentation has not\nchanged. Conversely, a changed ID (for the same presentation and user)\nusually means the presentation has been updated; however, a changed ID can\nalso be due to internal factors such as ID format changes.",
+                    "type": "string"
+                },
                 "layoutProperties": {
                     "$ref": "LayoutProperties",
                     "description": "Layout specific properties. Only set if page_type = LAYOUT."
@@ -1143,24 +1795,27 @@
                     },
                     "type": "array"
                 },
-                "slideProperties": {
-                    "$ref": "SlideProperties",
-                    "description": "Slide specific properties. Only set if page_type = SLIDE."
-                },
                 "pageProperties": {
                     "$ref": "PageProperties",
                     "description": "The properties of the page."
                 },
-                "masterProperties": {
-                    "$ref": "MasterProperties",
-                    "description": "Master specific properties. Only set if page_type = MASTER."
+                "slideProperties": {
+                    "$ref": "SlideProperties",
+                    "description": "Slide specific properties. Only set if page_type = SLIDE."
+                }
+            },
+            "type": "object"
+        },
+        "UnmergeTableCellsRequest": {
+            "description": "Unmerges cells in a Table.",
+            "id": "UnmergeTableCellsRequest",
+            "properties": {
+                "tableRange": {
+                    "$ref": "TableRange",
+                    "description": "The table range specifying which cells of the table to unmerge.\n\nAll merged cells in this range will be unmerged, and cells that are already\nunmerged will not be affected. If the range has no merged cells, the\nrequest will do nothing. If there is text in any of the merged cells, the\ntext will remain in the upper-left (\"head\") cell of the resulting block of\nunmerged cells."
                 },
                 "objectId": {
-                    "description": "The object ID for this page. Object IDs used by\nPage and\nPageElement share the same namespace.",
-                    "type": "string"
-                },
-                "revisionId": {
-                    "description": "The revision ID of the presentation containing this page. Can be used in\nupdate requests to assert that the presentation revision hasn't changed\nsince the last read operation. Only populated if the user has edit access\nto the presentation.\n\nThe format of the revision ID may change over time, so it should be treated\nopaquely. A returned revision ID is only guaranteed to be valid for 24\nhours after it has been returned and cannot be shared across users. If the\nrevision ID is unchanged between calls, then the presentation has not\nchanged. Conversely, a changed ID (for the same presentation and user)\nusually means the presentation has been updated; however, a changed ID can\nalso be due to internal factors such as ID format changes.",
+                    "description": "The object ID of the table.",
                     "type": "string"
                 }
             },
@@ -1175,7 +1830,7 @@
                     "description": "Solid color fill."
                 },
                 "propertyState": {
-                    "description": "The background fill property state.\n\nUpdating the the fill on a shape will implicitly update this field to\n`RENDERED`, unless another value is specified in the same request. To\nhave no fill on a shape, set this field to `NOT_RENDERED`. In this case,\nany other fill fields set in the same request will be ignored.",
+                    "description": "The background fill property state.\n\nUpdating the fill on a shape will implicitly update this field to\n`RENDERED`, unless another value is specified in the same request. To\nhave no fill on a shape, set this field to `NOT_RENDERED`. In this case,\nany other fill fields set in the same request will be ignored.",
                     "enum": [
                         "RENDERED",
                         "NOT_RENDERED",
@@ -1299,6 +1954,10 @@
             "description": "A color and position in a gradient band.",
             "id": "ColorStop",
             "properties": {
+                "color": {
+                    "$ref": "OpaqueColor",
+                    "description": "The color of the gradient stop."
+                },
                 "position": {
                     "description": "The relative position of the color stop in the gradient band measured\nin percentage. The value should be in the interval [0.0, 1.0].",
                     "format": "float",
@@ -1308,10 +1967,6 @@
                     "description": "The alpha value of this color in the gradient band. Defaults to 1.0,\nfully opaque.",
                     "format": "float",
                     "type": "number"
-                },
-                "color": {
-                    "$ref": "OpaqueColor",
-                    "description": "The color of the gradient stop."
                 }
             },
             "type": "object"
@@ -1362,17 +2017,6 @@
             "description": "Replaces all shapes that match the given criteria with the provided image.",
             "id": "ReplaceAllShapesWithImageRequest",
             "properties": {
-                "pageObjectIds": {
-                    "description": "If non-empty, limits the matches to page elements only on the given pages.\n\nReturns a 400 bad request error if given the page object ID of a\nnotes page or a\nnotes master, or if a\npage with that object ID doesn't exist in the presentation.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "containsText": {
-                    "$ref": "SubstringMatchCriteria",
-                    "description": "If set, this request will replace all of the shapes that contain the\ngiven text."
-                },
                 "imageUrl": {
                     "description": "The image URL.\n\nThe image is fetched once at insertion time and a copy is stored for\ndisplay inside the presentation. Images must be less than 50MB in size,\ncannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF\nformat.\n\nThe provided URL can be at maximum 2K bytes large.",
                     "type": "string"
@@ -1388,6 +2032,32 @@
                         "Scales and centers the image to fill the bounds of the original shape.\nThe image may be cropped in order to fill the shape. The rendered size of\nthe image will be the same as that of the original shape."
                     ],
                     "type": "string"
+                },
+                "pageObjectIds": {
+                    "description": "If non-empty, limits the matches to page elements only on the given pages.\n\nReturns a 400 bad request error if given the page object ID of a\nnotes page or a\nnotes master, or if a\npage with that object ID doesn't exist in the presentation.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "containsText": {
+                    "$ref": "SubstringMatchCriteria",
+                    "description": "If set, this request will replace all of the shapes that contain the\ngiven text."
+                }
+            },
+            "type": "object"
+        },
+        "MergeTableCellsRequest": {
+            "description": "Merges cells in a Table.",
+            "id": "MergeTableCellsRequest",
+            "properties": {
+                "tableRange": {
+                    "$ref": "TableRange",
+                    "description": "The table range specifying which cells of the table to merge.\n\nAny text in the cells being merged will be concatenated and stored in the\nupper-left (\"head\") cell of the range. If the range is non-rectangular\n(which can occur in some cases where the range covers cells that are\nalready merged), a 400 bad request error is returned."
+                },
+                "objectId": {
+                    "description": "The object ID of the table.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1474,17 +2144,31 @@
             },
             "type": "object"
         },
+        "UngroupObjectsRequest": {
+            "description": "Ungroups objects, such as groups.",
+            "id": "UngroupObjectsRequest",
+            "properties": {
+                "objectIds": {
+                    "description": "The object IDs of the objects to ungroup.\n\nOnly groups that are not inside other\ngroups can be ungrouped. All the groups\nshould be on the same page. The group itself is deleted. The visual sizes\nand positions of all the children are preserved.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "DeleteTableRowRequest": {
             "description": "Deletes a row from a table.",
             "id": "DeleteTableRowRequest",
             "properties": {
-                "cellLocation": {
-                    "$ref": "TableCellLocation",
-                    "description": "The reference table cell location from which a row will be deleted.\n\nThe row this cell spans will be deleted. If this is a merged cell, multiple\nrows will be deleted. If no rows remain in the table after this deletion,\nthe whole table is deleted."
-                },
                 "tableObjectId": {
                     "description": "The table to delete rows from.",
                     "type": "string"
+                },
+                "cellLocation": {
+                    "$ref": "TableCellLocation",
+                    "description": "The reference table cell location from which a row will be deleted.\n\nThe row this cell spans will be deleted. If this is a merged cell, multiple\nrows will be deleted. If no rows remain in the table after this deletion,\nthe whole table is deleted."
                 }
             },
             "type": "object"
@@ -1493,6 +2177,10 @@
             "description": "Describes the bullet of a paragraph.",
             "id": "Bullet",
             "properties": {
+                "listId": {
+                    "description": "The ID of the list this paragraph belongs to.",
+                    "type": "string"
+                },
                 "glyph": {
                     "description": "The rendered bullet glyph for this paragraph.",
                     "type": "string"
@@ -1505,10 +2193,6 @@
                 "bulletStyle": {
                     "$ref": "TextStyle",
                     "description": "The paragraph specific text style applied to this bullet."
-                },
-                "listId": {
-                    "description": "The ID of the list this paragraph belongs to.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1524,17 +2208,6 @@
             },
             "type": "object"
         },
-        "CreateLineResponse": {
-            "description": "The result of creating a line.",
-            "id": "CreateLineResponse",
-            "properties": {
-                "objectId": {
-                    "description": "The object ID of the created line.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "TableCellLocation": {
             "description": "A location of a single table cell within a table.",
             "id": "TableCellLocation",
@@ -1552,6 +2225,17 @@
             },
             "type": "object"
         },
+        "CreateLineResponse": {
+            "description": "The result of creating a line.",
+            "id": "CreateLineResponse",
+            "properties": {
+                "objectId": {
+                    "description": "The object ID of the created line.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ReplaceAllTextResponse": {
             "description": "The result of replacing text.",
             "id": "ReplaceAllTextResponse",
@@ -1564,10 +2248,29 @@
             },
             "type": "object"
         },
+        "TableBorderFill": {
+            "description": "The fill of the border.",
+            "id": "TableBorderFill",
+            "properties": {
+                "solidFill": {
+                    "$ref": "SolidFill",
+                    "description": "Solid fill."
+                }
+            },
+            "type": "object"
+        },
         "UpdateParagraphStyleRequest": {
             "description": "Updates the styling for all of the paragraphs within a Shape or Table that\noverlap with the given text index range.",
             "id": "UpdateParagraphStyleRequest",
             "properties": {
+                "textRange": {
+                    "$ref": "Range",
+                    "description": "The range of text containing the paragraph(s) to style."
+                },
+                "objectId": {
+                    "description": "The object ID of the shape or table with the text to be styled.",
+                    "type": "string"
+                },
                 "style": {
                     "$ref": "ParagraphStyle",
                     "description": "The paragraph's style."
@@ -1580,14 +2283,6 @@
                     "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `style` is implied and\nshould not be specified. A single `\"*\"` can be used as short-hand for\nlisting every field.\n\nFor example, to update the paragraph alignment, set `fields` to\n`\"alignment\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.",
                     "format": "google-fieldmask",
                     "type": "string"
-                },
-                "textRange": {
-                    "$ref": "Range",
-                    "description": "The range of text containing the paragraph(s) to style."
-                },
-                "objectId": {
-                    "description": "The object ID of the shape or table with the text to be styled.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1934,6 +2629,30 @@
             },
             "type": "object"
         },
+        "InsertTextRequest": {
+            "description": "Inserts text into a shape or a table cell.",
+            "id": "InsertTextRequest",
+            "properties": {
+                "cellLocation": {
+                    "$ref": "TableCellLocation",
+                    "description": "The optional table cell location if the text is to be inserted into a table\ncell. If present, the object_id must refer to a table."
+                },
+                "text": {
+                    "description": "The text to be inserted.\n\nInserting a newline character will implicitly create a new\nParagraphMarker at that index.\nThe paragraph style of the new paragraph will be copied from the paragraph\nat the current insertion index, including lists and bullets.\n\nText styles for inserted text will be determined automatically, generally\npreserving the styling of neighboring text. In most cases, the text will be\nadded to the TextRun that exists at the\ninsertion index.\n\nSome control characters (U+0000-U+0008, U+000C-U+001F) and characters\nfrom the Unicode Basic Multilingual Plane Private Use Area (U+E000-U+F8FF)\nwill be stripped out of the inserted text.",
+                    "type": "string"
+                },
+                "objectId": {
+                    "description": "The object ID of the shape or table where the text will be inserted.",
+                    "type": "string"
+                },
+                "insertionIndex": {
+                    "description": "The index where the text will be inserted, in Unicode code units, based\non TextElement indexes.\n\nThe index is zero-based and is computed from the start of the string.\nThe index may be adjusted to prevent insertions inside Unicode grapheme\nclusters. In these cases, the text will be inserted immediately after the\ngrapheme cluster.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
         "AffineTransform": {
             "description": "AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ]\nto transform source coordinates (x,y) into destination coordinates (x', y')\naccording to:\n\n      x'  x  =   shear_y  scale_y  translate_y  \n      1  [ 1 ]\n\nAfter transformation,\n\n     x' = scale_x * x + shear_x * y + translate_x;\n     y' = scale_y * y + shear_y * x + translate_y;\n\nThis message is therefore composed of these six matrix elements.",
             "id": "AffineTransform",
@@ -1985,30 +2704,6 @@
             },
             "type": "object"
         },
-        "InsertTextRequest": {
-            "description": "Inserts text into a shape or a table cell.",
-            "id": "InsertTextRequest",
-            "properties": {
-                "text": {
-                    "description": "The text to be inserted.\n\nInserting a newline character will implicitly create a new\nParagraphMarker at that index.\nThe paragraph style of the new paragraph will be copied from the paragraph\nat the current insertion index, including lists and bullets.\n\nText styles for inserted text will be determined automatically, generally\npreserving the styling of neighboring text. In most cases, the text will be\nadded to the TextRun that exists at the\ninsertion index.\n\nSome control characters (U+0000-U+0008, U+000C-U+001F) and characters\nfrom the Unicode Basic Multilingual Plane Private Use Area (U+E000-U+F8FF)\nwill be stripped out of the inserted text.",
-                    "type": "string"
-                },
-                "objectId": {
-                    "description": "The object ID of the shape or table where the text will be inserted.",
-                    "type": "string"
-                },
-                "insertionIndex": {
-                    "description": "The index where the text will be inserted, in Unicode code units, based\non TextElement indexes.\n\nThe index is zero-based and is computed from the start of the string.\nThe index may be adjusted to prevent insertions inside Unicode grapheme\nclusters. In these cases, the text will be inserted immediately after the\ngrapheme cluster.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "cellLocation": {
-                    "$ref": "TableCellLocation",
-                    "description": "The optional table cell location if the text is to be inserted into a table\ncell. If present, the object_id must refer to a table."
-                }
-            },
-            "type": "object"
-        },
         "AutoText": {
             "description": "A TextElement kind that represents auto text.",
             "id": "AutoText",
@@ -2047,6 +2742,25 @@
             },
             "type": "object"
         },
+        "DeleteTextRequest": {
+            "description": "Deletes text from a shape or a table cell.",
+            "id": "DeleteTextRequest",
+            "properties": {
+                "cellLocation": {
+                    "$ref": "TableCellLocation",
+                    "description": "The optional table cell location if the text is to be deleted from a table\ncell. If present, the object_id must refer to a table."
+                },
+                "textRange": {
+                    "$ref": "Range",
+                    "description": "The range of text to delete, based on TextElement indexes.\n\nThere is always an implicit newline character at the end of a shape's or\ntable cell's text that cannot be deleted. `Range.Type.ALL` will use the\ncorrect bounds, but care must be taken when specifying explicit bounds for\nrange types `FROM_START_INDEX` and `FIXED_RANGE`. For example, if the text\nis \"ABC\", followed by an implicit newline, then the maximum value is 2 for\n`text_range.start_index` and 3 for `text_range.end_index`.\n\nDeleting text that crosses a paragraph boundary may result in changes\nto paragraph styles and lists as the two paragraphs are merged.\n\nRanges that include only one code unit of a surrogate pair are expanded to\ninclude both code units."
+                },
+                "objectId": {
+                    "description": "The object ID of the shape or table from which the text will be deleted.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "UpdatePageElementTransformRequest": {
             "description": "Updates the transform of a page element.\n\nUpdating the transform of a group will change the absolute transform of the\npage elements in that group, which can change their visual appearance. See\nthe documentation for PageElement.transform for more details.",
             "id": "UpdatePageElementTransformRequest",
@@ -2076,25 +2790,6 @@
             },
             "type": "object"
         },
-        "DeleteTextRequest": {
-            "description": "Deletes text from a shape or a table cell.",
-            "id": "DeleteTextRequest",
-            "properties": {
-                "textRange": {
-                    "$ref": "Range",
-                    "description": "The range of text to delete, based on TextElement indexes.\n\nThere is always an implicit newline character at the end of a shape's or\ntable cell's text that cannot be deleted. `Range.Type.ALL` will use the\ncorrect bounds, but care must be taken when specifying explicit bounds for\nrange types `FROM_START_INDEX` and `FIXED_RANGE`. For example, if the text\nis \"ABC\", followed by an implicit newline, then the maximum value is 2 for\n`text_range.start_index` and 3 for `text_range.end_index`.\n\nDeleting text that crosses a paragraph boundary may result in changes\nto paragraph styles and lists as the two paragraphs are merged.\n\nRanges that include only one code unit of a surrogate pair are expanded to\ninclude both code units."
-                },
-                "objectId": {
-                    "description": "The object ID of the shape or table from which the text will be deleted.",
-                    "type": "string"
-                },
-                "cellLocation": {
-                    "$ref": "TableCellLocation",
-                    "description": "The optional table cell location if the text is to be deleted from a table\ncell. If present, the object_id must refer to a table."
-                }
-            },
-            "type": "object"
-        },
         "DeleteObjectRequest": {
             "description": "Deletes an object, either pages or\npage elements, from the\npresentation.",
             "id": "DeleteObjectRequest",
@@ -2106,6 +2801,32 @@
             },
             "type": "object"
         },
+        "Dimension": {
+            "description": "A magnitude in a single direction in the specified units.",
+            "id": "Dimension",
+            "properties": {
+                "magnitude": {
+                    "description": "The magnitude.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "unit": {
+                    "description": "The units for magnitude.",
+                    "enum": [
+                        "UNIT_UNSPECIFIED",
+                        "EMU",
+                        "PT"
+                    ],
+                    "enumDescriptions": [
+                        "The units are unknown.",
+                        "An English Metric Unit (EMU) is defined as 1/360,000 of a centimeter\nand thus there are 914,400 EMUs per inch, and 12,700 EMUs per point.",
+                        "A point, 1/72 of an inch."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "TextElement": {
             "description": "A TextElement describes the content of a range of indices in the text content\nof a Shape or TableCell.",
             "id": "TextElement",
@@ -2135,32 +2856,6 @@
             },
             "type": "object"
         },
-        "Dimension": {
-            "description": "A magnitude in a single direction in the specified units.",
-            "id": "Dimension",
-            "properties": {
-                "magnitude": {
-                    "description": "The magnitude.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "unit": {
-                    "description": "The units for magnitude.",
-                    "enum": [
-                        "UNIT_UNSPECIFIED",
-                        "EMU",
-                        "PT"
-                    ],
-                    "enumDescriptions": [
-                        "The units are unknown.",
-                        "An English Metric Unit (EMU) is defined as 1/360,000 of a centimeter\nand thus there are 914,400 EMUs per inch, and 12,700 EMUs per point.",
-                        "A point, 1/72 of an inch."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "LineFill": {
             "description": "The fill of the line.",
             "id": "LineFill",
@@ -2187,10 +2882,6 @@
             "description": "Inserts rows into a table.",
             "id": "InsertTableRowsRequest",
             "properties": {
-                "cellLocation": {
-                    "$ref": "TableCellLocation",
-                    "description": "The reference table cell location from which rows will be inserted.\n\nA new row will be inserted above (or below) the row where the reference\ncell is. If the reference cell is a merged cell, a new row will be\ninserted above (or below) the merged cell."
-                },
                 "tableObjectId": {
                     "description": "The table to insert rows into.",
                     "type": "string"
@@ -2203,6 +2894,10 @@
                     "description": "The number of rows to be inserted. Maximum 20 per request.",
                     "format": "int32",
                     "type": "integer"
+                },
+                "cellLocation": {
+                    "$ref": "TableCellLocation",
+                    "description": "The reference table cell location from which rows will be inserted.\n\nA new row will be inserted above (or below) the row where the reference\ncell is. If the reference cell is a merged cell, a new row will be\ninserted above (or below) the merged cell."
                 }
             },
             "type": "object"
@@ -2211,10 +2906,6 @@
             "description": "The properties of Page are only\nrelevant for pages with page_type LAYOUT.",
             "id": "LayoutProperties",
             "properties": {
-                "masterObjectId": {
-                    "description": "The object ID of the master that this layout is based on.",
-                    "type": "string"
-                },
                 "name": {
                     "description": "The name of the layout.",
                     "type": "string"
@@ -2222,107 +2913,10 @@
                 "displayName": {
                     "description": "The human-readable name of the layout.",
                     "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LineProperties": {
-            "description": "The properties of the Line.\n\nWhen unset, these fields default to values that match the appearance of\nnew lines created in the Slides editor.",
-            "id": "LineProperties",
-            "properties": {
-                "endArrow": {
-                    "description": "The style of the arrow at the end of the line.",
-                    "enum": [
-                        "ARROW_STYLE_UNSPECIFIED",
-                        "NONE",
-                        "STEALTH_ARROW",
-                        "FILL_ARROW",
-                        "FILL_CIRCLE",
-                        "FILL_SQUARE",
-                        "FILL_DIAMOND",
-                        "OPEN_ARROW",
-                        "OPEN_CIRCLE",
-                        "OPEN_SQUARE",
-                        "OPEN_DIAMOND"
-                    ],
-                    "enumDescriptions": [
-                        "An unspecified arrow style.",
-                        "No arrow.",
-                        "Arrow with notched back. Corresponds to ECMA-376 ST_LineEndType value\n'stealth'.",
-                        "Filled arrow. Corresponds to ECMA-376 ST_LineEndType value 'triangle'.",
-                        "Filled circle. Corresponds to ECMA-376 ST_LineEndType value 'oval'.",
-                        "Filled square.",
-                        "Filled diamond. Corresponds to ECMA-376 ST_LineEndType value 'diamond'.",
-                        "Hollow arrow.",
-                        "Hollow circle.",
-                        "Hollow square.",
-                        "Hollow diamond."
-                    ],
+                },
+                "masterObjectId": {
+                    "description": "The object ID of the master that this layout is based on.",
                     "type": "string"
-                },
-                "startArrow": {
-                    "description": "The style of the arrow at the beginning of the line.",
-                    "enum": [
-                        "ARROW_STYLE_UNSPECIFIED",
-                        "NONE",
-                        "STEALTH_ARROW",
-                        "FILL_ARROW",
-                        "FILL_CIRCLE",
-                        "FILL_SQUARE",
-                        "FILL_DIAMOND",
-                        "OPEN_ARROW",
-                        "OPEN_CIRCLE",
-                        "OPEN_SQUARE",
-                        "OPEN_DIAMOND"
-                    ],
-                    "enumDescriptions": [
-                        "An unspecified arrow style.",
-                        "No arrow.",
-                        "Arrow with notched back. Corresponds to ECMA-376 ST_LineEndType value\n'stealth'.",
-                        "Filled arrow. Corresponds to ECMA-376 ST_LineEndType value 'triangle'.",
-                        "Filled circle. Corresponds to ECMA-376 ST_LineEndType value 'oval'.",
-                        "Filled square.",
-                        "Filled diamond. Corresponds to ECMA-376 ST_LineEndType value 'diamond'.",
-                        "Hollow arrow.",
-                        "Hollow circle.",
-                        "Hollow square.",
-                        "Hollow diamond."
-                    ],
-                    "type": "string"
-                },
-                "weight": {
-                    "$ref": "Dimension",
-                    "description": "The thickness of the line."
-                },
-                "lineFill": {
-                    "$ref": "LineFill",
-                    "description": "The fill of the line. The default line fill matches the defaults for new\nlines created in the Slides editor."
-                },
-                "dashStyle": {
-                    "description": "The dash style of the line.",
-                    "enum": [
-                        "DASH_STYLE_UNSPECIFIED",
-                        "SOLID",
-                        "DOT",
-                        "DASH",
-                        "DASH_DOT",
-                        "LONG_DASH",
-                        "LONG_DASH_DOT"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified dash style.",
-                        "Solid line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'solid'.\nThis is the default dash style.",
-                        "Dotted line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'dot'.",
-                        "Dashed line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'dash'.",
-                        "Alternating dashes and dots. Corresponds to ECMA-376 ST_PresetLineDashVal\nvalue 'dashDot'.",
-                        "Line with large dashes. Corresponds to ECMA-376 ST_PresetLineDashVal\nvalue 'lgDash'.",
-                        "Alternating large dashes and dots. Corresponds to ECMA-376\nST_PresetLineDashVal value 'lgDashDot'."
-                    ],
-                    "type": "string"
-                },
-                "link": {
-                    "$ref": "Link",
-                    "description": "The hyperlink destination of the line. If unset, there is no link."
                 }
             },
             "type": "object"
@@ -2361,10 +2955,6 @@
                     "description": "The title of the presentation.",
                     "type": "string"
                 },
-                "locale": {
-                    "description": "The locale of the presentation, as an IETF BCP 47 language tag.",
-                    "type": "string"
-                },
                 "masters": {
                     "description": "The slide masters in the presentation. A slide master contains all common\npage elements and the common properties for a set of layouts. They serve\nthree purposes:\n\n- Placeholder shapes on a master contain the default text styles and shape\n  properties of all placeholder shapes on pages that use that master.\n- The master page properties define the common page properties inherited by\n  its layouts.\n- Any other shapes on the master slide will appear on all slides using that\n  master, regardless of their layout.",
                     "items": {
@@ -2372,6 +2962,10 @@
                     },
                     "type": "array"
                 },
+                "locale": {
+                    "description": "The locale of the presentation, as an IETF BCP 47 language tag.",
+                    "type": "string"
+                },
                 "pageSize": {
                     "$ref": "Size",
                     "description": "The size of pages in the presentation."
@@ -2379,6 +2973,107 @@
             },
             "type": "object"
         },
+        "LineProperties": {
+            "description": "The properties of the Line.\n\nWhen unset, these fields default to values that match the appearance of\nnew lines created in the Slides editor.",
+            "id": "LineProperties",
+            "properties": {
+                "weight": {
+                    "$ref": "Dimension",
+                    "description": "The thickness of the line."
+                },
+                "lineFill": {
+                    "$ref": "LineFill",
+                    "description": "The fill of the line. The default line fill matches the defaults for new\nlines created in the Slides editor."
+                },
+                "link": {
+                    "$ref": "Link",
+                    "description": "The hyperlink destination of the line. If unset, there is no link."
+                },
+                "dashStyle": {
+                    "description": "The dash style of the line.",
+                    "enum": [
+                        "DASH_STYLE_UNSPECIFIED",
+                        "SOLID",
+                        "DOT",
+                        "DASH",
+                        "DASH_DOT",
+                        "LONG_DASH",
+                        "LONG_DASH_DOT"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified dash style.",
+                        "Solid line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'solid'.\nThis is the default dash style.",
+                        "Dotted line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'dot'.",
+                        "Dashed line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'dash'.",
+                        "Alternating dashes and dots. Corresponds to ECMA-376 ST_PresetLineDashVal\nvalue 'dashDot'.",
+                        "Line with large dashes. Corresponds to ECMA-376 ST_PresetLineDashVal\nvalue 'lgDash'.",
+                        "Alternating large dashes and dots. Corresponds to ECMA-376\nST_PresetLineDashVal value 'lgDashDot'."
+                    ],
+                    "type": "string"
+                },
+                "startArrow": {
+                    "description": "The style of the arrow at the beginning of the line.",
+                    "enum": [
+                        "ARROW_STYLE_UNSPECIFIED",
+                        "NONE",
+                        "STEALTH_ARROW",
+                        "FILL_ARROW",
+                        "FILL_CIRCLE",
+                        "FILL_SQUARE",
+                        "FILL_DIAMOND",
+                        "OPEN_ARROW",
+                        "OPEN_CIRCLE",
+                        "OPEN_SQUARE",
+                        "OPEN_DIAMOND"
+                    ],
+                    "enumDescriptions": [
+                        "An unspecified arrow style.",
+                        "No arrow.",
+                        "Arrow with notched back. Corresponds to ECMA-376 ST_LineEndType value\n'stealth'.",
+                        "Filled arrow. Corresponds to ECMA-376 ST_LineEndType value 'triangle'.",
+                        "Filled circle. Corresponds to ECMA-376 ST_LineEndType value 'oval'.",
+                        "Filled square.",
+                        "Filled diamond. Corresponds to ECMA-376 ST_LineEndType value 'diamond'.",
+                        "Hollow arrow.",
+                        "Hollow circle.",
+                        "Hollow square.",
+                        "Hollow diamond."
+                    ],
+                    "type": "string"
+                },
+                "endArrow": {
+                    "description": "The style of the arrow at the end of the line.",
+                    "enum": [
+                        "ARROW_STYLE_UNSPECIFIED",
+                        "NONE",
+                        "STEALTH_ARROW",
+                        "FILL_ARROW",
+                        "FILL_CIRCLE",
+                        "FILL_SQUARE",
+                        "FILL_DIAMOND",
+                        "OPEN_ARROW",
+                        "OPEN_CIRCLE",
+                        "OPEN_SQUARE",
+                        "OPEN_DIAMOND"
+                    ],
+                    "enumDescriptions": [
+                        "An unspecified arrow style.",
+                        "No arrow.",
+                        "Arrow with notched back. Corresponds to ECMA-376 ST_LineEndType value\n'stealth'.",
+                        "Filled arrow. Corresponds to ECMA-376 ST_LineEndType value 'triangle'.",
+                        "Filled circle. Corresponds to ECMA-376 ST_LineEndType value 'oval'.",
+                        "Filled square.",
+                        "Filled diamond. Corresponds to ECMA-376 ST_LineEndType value 'diamond'.",
+                        "Hollow arrow.",
+                        "Hollow circle.",
+                        "Hollow square.",
+                        "Hollow diamond."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "OpaqueColor": {
             "description": "A themeable solid color value.",
             "id": "OpaqueColor",
@@ -2436,6 +3131,23 @@
             "description": "The properties of the Image.",
             "id": "ImageProperties",
             "properties": {
+                "recolor": {
+                    "$ref": "Recolor",
+                    "description": "The recolor effect of the image. If not set, the image is not recolored.\nThis property is read-only."
+                },
+                "cropProperties": {
+                    "$ref": "CropProperties",
+                    "description": "The crop properties of the image. If not set, the image is not cropped.\nThis property is read-only."
+                },
+                "outline": {
+                    "$ref": "Outline",
+                    "description": "The outline of the image. If not set, the image has no outline."
+                },
+                "brightness": {
+                    "description": "The brightness effect of the image. The value should be in the interval\n[-1.0, 1.0], where 0 means no effect. This property is read-only.",
+                    "format": "float",
+                    "type": "number"
+                },
                 "transparency": {
                     "description": "The transparency effect of the image. The value should be in the interval\n[0.0, 1.0], where 0 means no effect and 1 means completely transparent.\nThis property is read-only.",
                     "format": "float",
@@ -2453,23 +3165,6 @@
                     "description": "The contrast effect of the image. The value should be in the interval\n[-1.0, 1.0], where 0 means no effect. This property is read-only.",
                     "format": "float",
                     "type": "number"
-                },
-                "cropProperties": {
-                    "$ref": "CropProperties",
-                    "description": "The crop properties of the image. If not set, the image is not cropped.\nThis property is read-only."
-                },
-                "recolor": {
-                    "$ref": "Recolor",
-                    "description": "The recolor effect of the image. If not set, the image is not recolored.\nThis property is read-only."
-                },
-                "outline": {
-                    "$ref": "Outline",
-                    "description": "The outline of the image. If not set, the the image has no outline."
-                },
-                "brightness": {
-                    "description": "The brightness effect of the image. The value should be in the interval\n[-1.0, 1.0], where 0 means no effect. This property is read-only.",
-                    "format": "float",
-                    "type": "number"
                 }
             },
             "type": "object"
@@ -2490,10 +3185,6 @@
             "description": "A PageElement kind representing a\nline, curved connector, or bent connector.",
             "id": "Line",
             "properties": {
-                "lineProperties": {
-                    "$ref": "LineProperties",
-                    "description": "The properties of the line."
-                },
                 "lineType": {
                     "description": "The type of the line.",
                     "enum": [
@@ -2521,24 +3212,10 @@
                         "Curved connector 5 form. Corresponds to ECMA-376 ST_ShapeType\n'curvedConnector5'."
                     ],
                     "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "BatchUpdatePresentationResponse": {
-            "description": "Response message from a batch update.",
-            "id": "BatchUpdatePresentationResponse",
-            "properties": {
-                "replies": {
-                    "description": "The reply of the updates.  This maps 1:1 with the updates, although\nreplies to some requests may be empty.",
-                    "items": {
-                        "$ref": "Response"
-                    },
-                    "type": "array"
                 },
-                "presentationId": {
-                    "description": "The presentation the updates were applied to.",
-                    "type": "string"
+                "lineProperties": {
+                    "$ref": "LineProperties",
+                    "description": "The properties of the line."
                 }
             },
             "type": "object"
@@ -2579,6 +3256,24 @@
             },
             "type": "object"
         },
+        "BatchUpdatePresentationResponse": {
+            "description": "Response message from a batch update.",
+            "id": "BatchUpdatePresentationResponse",
+            "properties": {
+                "replies": {
+                    "description": "The reply of the updates.  This maps 1:1 with the updates, although\nreplies to some requests may be empty.",
+                    "items": {
+                        "$ref": "Response"
+                    },
+                    "type": "array"
+                },
+                "presentationId": {
+                    "description": "The presentation the updates were applied to.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "CreateImageResponse": {
             "description": "The result of creating an image.",
             "id": "CreateImageResponse",
@@ -2594,6 +3289,10 @@
             "description": "The properties of Page that are only\nrelevant for pages with page_type SLIDE.",
             "id": "SlideProperties",
             "properties": {
+                "notesPage": {
+                    "$ref": "Page",
+                    "description": "The notes page that this slide is associated with. It defines the visual\nappearance of a notes page when printing or exporting slides with speaker\nnotes. A notes page inherits properties from the\nnotes master.\nThe placeholder shape with type BODY on the notes page contains the speaker\nnotes for this slide. The ID of this shape is identified by the\nspeakerNotesObjectId field.\nThe notes page is read-only except for the text content and styles of the\nspeaker notes shape."
+                },
                 "masterObjectId": {
                     "description": "The object ID of the master that this slide is based on.",
                     "type": "string"
@@ -2601,10 +3300,17 @@
                 "layoutObjectId": {
                     "description": "The object ID of the layout that this slide is based on.",
                     "type": "string"
-                },
-                "notesPage": {
-                    "$ref": "Page",
-                    "description": "The notes page that this slide is associated with. It defines the visual\nappearance of a notes page when printing or exporting slides with speaker\nnotes. A notes page inherits properties from the\nnotes master.\nThe placeholder shape with type BODY on the notes page contains the speaker\nnotes for this slide. The ID of this shape is identified by the\nspeakerNotesObjectId field.\nThe notes page is read-only except for the text content and styles of the\nspeaker notes shape."
+                }
+            },
+            "type": "object"
+        },
+        "MasterProperties": {
+            "description": "The properties of Page that are only\nrelevant for pages with page_type MASTER.",
+            "id": "MasterProperties",
+            "properties": {
+                "displayName": {
+                    "description": "The human-readable name of the master.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2613,18 +3319,6 @@
             "description": "A single response from an update.",
             "id": "Response",
             "properties": {
-                "createVideo": {
-                    "$ref": "CreateVideoResponse",
-                    "description": "The result of creating a video."
-                },
-                "replaceAllShapesWithSheetsChart": {
-                    "$ref": "ReplaceAllShapesWithSheetsChartResponse",
-                    "description": "The result of replacing all shapes matching some criteria with a Google\nSheets chart."
-                },
-                "createSheetsChart": {
-                    "$ref": "CreateSheetsChartResponse",
-                    "description": "The result of creating a Google Sheets chart."
-                },
                 "replaceAllShapesWithImage": {
                     "$ref": "ReplaceAllShapesWithImageResponse",
                     "description": "The result of replacing all shapes matching some criteria with an\nimage."
@@ -2645,10 +3339,6 @@
                     "$ref": "DuplicateObjectResponse",
                     "description": "The result of duplicating an object."
                 },
-                "createShape": {
-                    "$ref": "CreateShapeResponse",
-                    "description": "The result of creating a shape."
-                },
                 "createLine": {
                     "$ref": "CreateLineResponse",
                     "description": "The result of creating a line."
@@ -2656,17 +3346,26 @@
                 "createImage": {
                     "$ref": "CreateImageResponse",
                     "description": "The result of creating an image."
-                }
-            },
-            "type": "object"
-        },
-        "MasterProperties": {
-            "description": "The properties of Page that are only\nrelevant for pages with page_type MASTER.",
-            "id": "MasterProperties",
-            "properties": {
-                "displayName": {
-                    "description": "The human-readable name of the master.",
-                    "type": "string"
+                },
+                "createVideo": {
+                    "$ref": "CreateVideoResponse",
+                    "description": "The result of creating a video."
+                },
+                "createSheetsChart": {
+                    "$ref": "CreateSheetsChartResponse",
+                    "description": "The result of creating a Google Sheets chart."
+                },
+                "replaceAllShapesWithSheetsChart": {
+                    "$ref": "ReplaceAllShapesWithSheetsChartResponse",
+                    "description": "The result of replacing all shapes matching some criteria with a Google\nSheets chart."
+                },
+                "groupObjects": {
+                    "$ref": "GroupObjectsResponse",
+                    "description": "The result of grouping objects."
+                },
+                "createShape": {
+                    "$ref": "CreateShapeResponse",
+                    "description": "The result of creating a shape."
                 }
             },
             "type": "object"
@@ -2686,21 +3385,6 @@
             },
             "type": "object"
         },
-        "TextRun": {
-            "description": "A TextElement kind that represents a run of text that all has the same\nstyling.",
-            "id": "TextRun",
-            "properties": {
-                "content": {
-                    "description": "The text of this run.",
-                    "type": "string"
-                },
-                "style": {
-                    "$ref": "TextStyle",
-                    "description": "The styling applied to this run."
-                }
-            },
-            "type": "object"
-        },
         "LayoutReference": {
             "description": "Slide layout reference. This may reference either:\n\n- A predefined layout\n- One of the layouts in the presentation.",
             "id": "LayoutReference",
@@ -2744,6 +3428,21 @@
             },
             "type": "object"
         },
+        "TextRun": {
+            "description": "A TextElement kind that represents a run of text that all has the same\nstyling.",
+            "id": "TextRun",
+            "properties": {
+                "content": {
+                    "description": "The text of this run.",
+                    "type": "string"
+                },
+                "style": {
+                    "$ref": "TextStyle",
+                    "description": "The styling applied to this run."
+                }
+            },
+            "type": "object"
+        },
         "TableRange": {
             "description": "A table range represents a reference to a subset of a table.\n\nIt's important to note that the cells specified by a table range do not\nnecessarily form a rectangle. For example, let's say we have a 3 x 3 table\nwhere all the cells of the last row are merged together. The table looks\nlike this:\n\n           \n  [             ]\n\nA table range with location = (0, 0), row span = 3 and column span = 2\nspecifies the following cells:\n\n   x     x \n  [      x      ]",
             "id": "TableRange",
@@ -2769,11 +3468,6 @@
             "description": "Creates a new table.",
             "id": "CreateTableRequest",
             "properties": {
-                "rows": {
-                    "description": "Number of rows in the table.",
-                    "format": "int32",
-                    "type": "integer"
-                },
                 "columns": {
                     "description": "Number of columns in the table.",
                     "format": "int32",
@@ -2786,6 +3480,11 @@
                 "elementProperties": {
                     "$ref": "PageElementProperties",
                     "description": "The element properties for the table.\n\nThe table will be created at the provided size, subject to a minimum size.\nIf no size is provided, the table will be automatically sized.\n\nTable transforms must have a scale of 1 and no shear components. If no\ntransform is provided, the table will be centered on the page."
+                },
+                "rows": {
+                    "description": "Number of rows in the table.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -2801,10 +3500,35 @@
             },
             "type": "object"
         },
+        "GroupObjectsRequest": {
+            "description": "Groups objects to create an object group. For example, groups PageElements to create a Group on the same page as all the children.",
+            "id": "GroupObjectsRequest",
+            "properties": {
+                "groupObjectId": {
+                    "description": "A user-supplied object ID for the group to be created.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\n\nIf you don't specify an ID, a unique one is generated.",
+                    "type": "string"
+                },
+                "childrenObjectIds": {
+                    "description": "The object IDs of the objects to group.\n\nOnly page elements can be grouped. There should be at least two page\nelements on the same page that are not already in another group. Some page\nelements, such as videos, tables and placeholder shapes cannot be grouped.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "Table": {
             "description": "A PageElement kind representing a\ntable.",
             "id": "Table",
             "properties": {
+                "tableColumns": {
+                    "description": "Properties of each column.",
+                    "items": {
+                        "$ref": "TableColumnProperties"
+                    },
+                    "type": "array"
+                },
                 "columns": {
                     "description": "Number of columns in the table.",
                     "format": "int32",
@@ -2817,15 +3541,36 @@
                     },
                     "type": "array"
                 },
+                "horizontalBorderRows": {
+                    "description": "Properties of horizontal cell borders.\n\nA table's horizontal cell borders are represented as a grid. The grid has\none more row than the number of rows in the table and the same number of\ncolumns as the table. For example, if the table is 3 x 3, its horizontal\nborders will be represented as a grid with 4 rows and 3 columns.",
+                    "items": {
+                        "$ref": "TableBorderRow"
+                    },
+                    "type": "array"
+                },
+                "verticalBorderRows": {
+                    "description": "Properties of vertical cell borders.\n\nA table's vertical cell borders are represented as a grid. The grid has the\nsame number of rows as the table and one more column than the number of\ncolumns in the table. For example, if the table is 3 x 3, its vertical\nborders will be represented as a grid with 3 rows and 4 columns.",
+                    "items": {
+                        "$ref": "TableBorderRow"
+                    },
+                    "type": "array"
+                },
                 "rows": {
                     "description": "Number of rows in the table.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "tableColumns": {
-                    "description": "Properties of each column.",
+                }
+            },
+            "type": "object"
+        },
+        "TableBorderRow": {
+            "description": "Contents of each border row in a table.",
+            "id": "TableBorderRow",
+            "properties": {
+                "tableBorderCells": {
+                    "description": "Properties of each border cell. When a border's adjacent table cells are\nmerged, it is not included in the response.",
                     "items": {
-                        "$ref": "TableColumnProperties"
+                        "$ref": "TableBorderCell"
                     },
                     "type": "array"
                 }
@@ -2836,10 +3581,6 @@
             "description": "The page background fill.",
             "id": "PageBackgroundFill",
             "properties": {
-                "solidFill": {
-                    "$ref": "SolidFill",
-                    "description": "Solid color fill."
-                },
                 "propertyState": {
                     "description": "The background fill property state.\n\nUpdating the fill on a page will implicitly update this field to\n`RENDERED`, unless another value is specified in the same request. To\nhave no fill on a page, set this field to `NOT_RENDERED`. In this case,\nany other fill fields set in the same request will be ignored.",
                     "enum": [
@@ -2857,6 +3598,10 @@
                 "stretchedPictureFill": {
                     "$ref": "StretchedPictureFill",
                     "description": "Stretched picture fill."
+                },
+                "solidFill": {
+                    "$ref": "SolidFill",
+                    "description": "Solid color fill."
                 }
             },
             "type": "object"
@@ -2969,6 +3714,10 @@
             "description": "Common properties for a page element.\n\nNote: When you initially create a\nPageElement, the API may modify\nthe values of both `size` and `transform`, but the\nvisual size will be unchanged.",
             "id": "PageElementProperties",
             "properties": {
+                "pageObjectId": {
+                    "description": "The object ID of the page where the element is located.",
+                    "type": "string"
+                },
                 "size": {
                     "$ref": "Size",
                     "description": "The size of the element."
@@ -2976,10 +3725,6 @@
                 "transform": {
                     "$ref": "AffineTransform",
                     "description": "The transform for the element."
-                },
-                "pageObjectId": {
-                    "description": "The object ID of the page where the element is located.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2999,13 +3744,41 @@
             "description": "The stretched picture fill. The page or page element is filled entirely with\nthe specified picture. The picture is stretched to fit its container.",
             "id": "StretchedPictureFill",
             "properties": {
-                "contentUrl": {
-                    "description": "Reading the content_url:\n\nAn URL to a picture with a default lifetime of 30 minutes.\nThis URL is tagged with the account of the requester. Anyone with the URL\neffectively accesses the picture as the original requester. Access to the\npicture may be lost if the presentation's sharing settings change.\n\nWriting the content_url:\n\nThe picture is fetched once at insertion time and a copy is stored for\ndisplay inside the presentation. Pictures must be less than 50MB in size,\ncannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF\nformat.\n\nThe provided URL can be at maximum 2K bytes large.",
-                    "type": "string"
-                },
                 "size": {
                     "$ref": "Size",
                     "description": "The original size of the picture fill. This field is read-only."
+                },
+                "contentUrl": {
+                    "description": "Reading the content_url:\n\nAn URL to a picture with a default lifetime of 30 minutes.\nThis URL is tagged with the account of the requester. Anyone with the URL\neffectively accesses the picture as the original requester. Access to the\npicture may be lost if the presentation's sharing settings change.\n\nWriting the content_url:\n\nThe picture is fetched once at insertion time and a copy is stored for\ndisplay inside the presentation. Pictures must be less than 50MB in size,\ncannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF\nformat.\n\nThe provided URL can be at maximum 2K bytes large.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "UpdateTextStyleRequest": {
+            "description": "Update the styling of text in a Shape or\nTable.",
+            "id": "UpdateTextStyleRequest",
+            "properties": {
+                "fields": {
+                    "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `style` is implied and\nshould not be specified. A single `\"*\"` can be used as short-hand for\nlisting every field.\n\nFor example, to update the text style to bold, set `fields` to `\"bold\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                },
+                "textRange": {
+                    "$ref": "Range",
+                    "description": "The range of text to style.\n\nThe range may be extended to include adjacent newlines.\n\nIf the range fully contains a paragraph belonging to a list, the\nparagraph's bullet is also updated with the matching text style."
+                },
+                "objectId": {
+                    "description": "The object ID of the shape or table with the text to be styled.",
+                    "type": "string"
+                },
+                "style": {
+                    "$ref": "TextStyle",
+                    "description": "The style(s) to set on the text.\n\nIf the value for a particular style matches that of the parent, that style\nwill be set to inherit.\n\nCertain text style changes may cause other changes meant to mirror the\nbehavior of the Slides editor. See the documentation of\nTextStyle for more information."
+                },
+                "cellLocation": {
+                    "$ref": "TableCellLocation",
+                    "description": "The location of the cell in the table containing the text to style. If\n`object_id` refers to a table, `cell_location` must have a value.\nOtherwise, it must not."
                 }
             },
             "type": "object"
@@ -3025,34 +3798,6 @@
             },
             "type": "object"
         },
-        "UpdateTextStyleRequest": {
-            "description": "Update the styling of text in a Shape or\nTable.",
-            "id": "UpdateTextStyleRequest",
-            "properties": {
-                "style": {
-                    "$ref": "TextStyle",
-                    "description": "The style(s) to set on the text.\n\nIf the value for a particular style matches that of the parent, that style\nwill be set to inherit.\n\nCertain text style changes may cause other changes meant to mirror the\nbehavior of the Slides editor. See the documentation of\nTextStyle for more information."
-                },
-                "cellLocation": {
-                    "$ref": "TableCellLocation",
-                    "description": "The location of the cell in the table containing the text to style. If\n`object_id` refers to a table, `cell_location` must have a value.\nOtherwise, it must not."
-                },
-                "fields": {
-                    "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `style` is implied and\nshould not be specified. A single `\"*\"` can be used as short-hand for\nlisting every field.\n\nFor example, to update the text style to bold, set `fields` to `\"bold\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.",
-                    "format": "google-fieldmask",
-                    "type": "string"
-                },
-                "textRange": {
-                    "$ref": "Range",
-                    "description": "The range of text to style.\n\nThe range may be extended to include adjacent newlines.\n\nIf the range fully contains a paragraph belonging to a list, the\nparagraph's bullet is also updated with the matching text style."
-                },
-                "objectId": {
-                    "description": "The object ID of the shape or table with the text to be styled.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "List": {
             "description": "A List describes the look and feel of bullets belonging to paragraphs\nassociated with a list. A paragraph that is part of a list has an implicit\nreference to that list's ID.",
             "id": "List",
@@ -3091,34 +3836,6 @@
             "description": "A visual element rendered on a page.",
             "id": "PageElement",
             "properties": {
-                "transform": {
-                    "$ref": "AffineTransform",
-                    "description": "The transform of the page element.\n\nThe visual appearance of the page element is determined by its absolute\ntransform. To compute the absolute transform, preconcatenate a page\nelement's transform with the transforms of all of its parent groups. If the\npage element is not in a group, its absolute transform is the same as the\nvalue in this field.\n\nThe initial transform for the newly created Group is always the identity transform."
-                },
-                "objectId": {
-                    "description": "The object ID for this page element. Object IDs used by\ngoogle.apps.slides.v1.Page and\ngoogle.apps.slides.v1.PageElement share the same namespace.",
-                    "type": "string"
-                },
-                "shape": {
-                    "$ref": "Shape",
-                    "description": "A generic shape."
-                },
-                "line": {
-                    "$ref": "Line",
-                    "description": "A line page element."
-                },
-                "description": {
-                    "description": "The description of the page element. Combined with title to display alt\ntext.",
-                    "type": "string"
-                },
-                "elementGroup": {
-                    "$ref": "Group",
-                    "description": "A collection of page elements joined as a single unit."
-                },
-                "image": {
-                    "$ref": "Image",
-                    "description": "An image page element."
-                },
                 "size": {
                     "$ref": "Size",
                     "description": "The size of the page element."
@@ -3142,6 +3859,34 @@
                 "table": {
                     "$ref": "Table",
                     "description": "A table page element."
+                },
+                "objectId": {
+                    "description": "The object ID for this page element. Object IDs used by\ngoogle.apps.slides.v1.Page and\ngoogle.apps.slides.v1.PageElement share the same namespace.",
+                    "type": "string"
+                },
+                "transform": {
+                    "$ref": "AffineTransform",
+                    "description": "The transform of the page element.\n\nThe visual appearance of the page element is determined by its absolute\ntransform. To compute the absolute transform, preconcatenate a page\nelement's transform with the transforms of all of its parent groups. If the\npage element is not in a group, its absolute transform is the same as the\nvalue in this field.\n\nThe initial transform for the newly created Group is always the identity transform."
+                },
+                "shape": {
+                    "$ref": "Shape",
+                    "description": "A generic shape."
+                },
+                "line": {
+                    "$ref": "Line",
+                    "description": "A line page element."
+                },
+                "description": {
+                    "description": "The description of the page element. Combined with title to display alt\ntext.",
+                    "type": "string"
+                },
+                "elementGroup": {
+                    "$ref": "Group",
+                    "description": "A collection of page elements joined as a single unit."
+                },
+                "image": {
+                    "$ref": "Image",
+                    "description": "An image page element."
                 }
             },
             "type": "object"
@@ -3169,10 +3914,6 @@
             "description": "Creates bullets for all of the paragraphs that overlap with the given\ntext index range.\n\nThe nesting level of each paragraph will be determined by counting leading\ntabs in front of each paragraph. To avoid excess space between the bullet and\nthe corresponding paragraph, these leading tabs are removed by this request.\nThis may change the indices of parts of the text.\n\nIf the paragraph immediately before paragraphs being updated is in a list\nwith a matching preset, the paragraphs being updated are added to that\npreceding list.",
             "id": "CreateParagraphBulletsRequest",
             "properties": {
-                "cellLocation": {
-                    "$ref": "TableCellLocation",
-                    "description": "The optional table cell location if the text to be modified is in a table\ncell. If present, the object_id must refer to a table."
-                },
                 "textRange": {
                     "$ref": "Range",
                     "description": "The range of text to apply the bullet presets to, based on TextElement indexes."
@@ -3218,6 +3959,10 @@
                         "A numbered list with `ZERODIGIT`, `ALPHA` and `ROMAN` numeric glyphs for\nthe first 3 list nesting levels, followed by periods."
                     ],
                     "type": "string"
+                },
+                "cellLocation": {
+                    "$ref": "TableCellLocation",
+                    "description": "The optional table cell location if the text to be modified is in a table\ncell. If present, the object_id must refer to a table."
                 }
             },
             "type": "object"
@@ -3226,14 +3971,14 @@
             "description": "Represents the styling that can be applied to a TextRun.\n\nIf this text is contained in a shape with a parent placeholder, then these text styles may be\ninherited from the parent. Which text styles are inherited depend on the\nnesting level of lists:\n\n* A text run in a paragraph that is not in a list will inherit its text style\n  from the the newline character in the paragraph at the 0 nesting level of\n  the list inside the parent placeholder.\n* A text run in a paragraph that is in a list will inherit its text style\n  from the newline character in the paragraph at its corresponding nesting\n  level of the list inside the parent placeholder.\n\nInherited text styles are represented as unset fields in this message. If\ntext is contained in a shape without a parent placeholder, unsetting these\nfields will revert the style to a value matching the defaults in the Slides\neditor.",
             "id": "TextStyle",
             "properties": {
-                "bold": {
-                    "description": "Whether or not the text is rendered as bold.",
-                    "type": "boolean"
-                },
                 "foregroundColor": {
                     "$ref": "OptionalColor",
                     "description": "The color of the text itself. If set, the color is either opaque or\ntransparent, depending on if the `opaque_color` field in it is set."
                 },
+                "bold": {
+                    "description": "Whether or not the text is rendered as bold.",
+                    "type": "boolean"
+                },
                 "fontFamily": {
                     "description": "The font family of the text.\n\nThe font family can be any font from the Font menu in Slides or from\n[Google Fonts] (https://fonts.google.com/). If the font name is\nunrecognized, the text is rendered in `Arial`.\n\nSome fonts can affect the weight of the text. If an update request\nspecifies values for both `font_family` and `bold`, the explicitly-set\n`bold` value is used.",
                     "type": "string"
@@ -3328,22 +4073,26 @@
             "description": "A single kind of update to apply to a presentation.",
             "id": "Request",
             "properties": {
-                "duplicateObject": {
-                    "$ref": "DuplicateObjectRequest",
-                    "description": "Duplicates a slide or page element."
+                "updateParagraphStyle": {
+                    "$ref": "UpdateParagraphStyleRequest",
+                    "description": "Updates the styling of paragraphs within a Shape or Table."
                 },
                 "deleteTableColumn": {
                     "$ref": "DeleteTableColumnRequest",
                     "description": "Deletes a column from a table."
                 },
-                "createLine": {
-                    "$ref": "CreateLineRequest",
-                    "description": "Creates a line."
+                "duplicateObject": {
+                    "$ref": "DuplicateObjectRequest",
+                    "description": "Duplicates a slide or page element."
                 },
                 "updateVideoProperties": {
                     "$ref": "UpdateVideoPropertiesRequest",
                     "description": "Updates the properties of a Video."
                 },
+                "createLine": {
+                    "$ref": "CreateLineRequest",
+                    "description": "Creates a line."
+                },
                 "createImage": {
                     "$ref": "CreateImageRequest",
                     "description": "Creates an image."
@@ -3356,13 +4105,17 @@
                     "$ref": "CreateVideoRequest",
                     "description": "Creates a video."
                 },
+                "replaceAllShapesWithSheetsChart": {
+                    "$ref": "ReplaceAllShapesWithSheetsChartRequest",
+                    "description": "Replaces all shapes matching some criteria with a Google Sheets chart."
+                },
                 "createSheetsChart": {
                     "$ref": "CreateSheetsChartRequest",
                     "description": "Creates an embedded Google Sheets chart."
                 },
-                "replaceAllShapesWithSheetsChart": {
-                    "$ref": "ReplaceAllShapesWithSheetsChartRequest",
-                    "description": "Replaces all shapes matching some criteria with a Google Sheets chart."
+                "unmergeTableCells": {
+                    "$ref": "UnmergeTableCellsRequest",
+                    "description": "Unmerges cells in a Table."
                 },
                 "updatePageElementTransform": {
                     "$ref": "UpdatePageElementTransformRequest",
@@ -3372,6 +4125,10 @@
                     "$ref": "UpdateTextStyleRequest",
                     "description": "Updates the styling of text within a Shape or Table."
                 },
+                "updateTableRowProperties": {
+                    "$ref": "UpdateTableRowPropertiesRequest",
+                    "description": "Updates the properties of a Table row."
+                },
                 "replaceAllShapesWithImage": {
                     "$ref": "ReplaceAllShapesWithImageRequest",
                     "description": "Replaces all shapes matching some criteria with an image."
@@ -3384,14 +4141,14 @@
                     "$ref": "UpdateImagePropertiesRequest",
                     "description": "Updates the properties of an Image."
                 },
-                "createSlide": {
-                    "$ref": "CreateSlideRequest",
-                    "description": "Creates a new slide."
-                },
                 "insertTableRows": {
                     "$ref": "InsertTableRowsRequest",
                     "description": "Inserts rows into a table."
                 },
+                "createSlide": {
+                    "$ref": "CreateSlideRequest",
+                    "description": "Creates a new slide."
+                },
                 "updateLineProperties": {
                     "$ref": "UpdateLinePropertiesRequest",
                     "description": "Updates the properties of a Line."
@@ -3408,10 +4165,22 @@
                     "$ref": "UpdateShapePropertiesRequest",
                     "description": "Updates the properties of a Shape."
                 },
+                "groupObjects": {
+                    "$ref": "GroupObjectsRequest",
+                    "description": "Groups objects, such as page elements."
+                },
+                "ungroupObjects": {
+                    "$ref": "UngroupObjectsRequest",
+                    "description": "Ungroups objects, such as groups."
+                },
                 "insertText": {
                     "$ref": "InsertTextRequest",
                     "description": "Inserts text into a shape or table cell."
                 },
+                "updateTableColumnProperties": {
+                    "$ref": "UpdateTableColumnPropertiesRequest",
+                    "description": "Updates the properties of a Table\ncolumn."
+                },
                 "deleteText": {
                     "$ref": "DeleteTextRequest",
                     "description": "Deletes text from a shape or a table cell."
@@ -3420,18 +4189,26 @@
                     "$ref": "UpdatePagePropertiesRequest",
                     "description": "Updates the properties of a Page."
                 },
-                "deleteParagraphBullets": {
-                    "$ref": "DeleteParagraphBulletsRequest",
-                    "description": "Deletes bullets from paragraphs."
-                },
                 "createShape": {
                     "$ref": "CreateShapeRequest",
                     "description": "Creates a new shape."
                 },
+                "deleteParagraphBullets": {
+                    "$ref": "DeleteParagraphBulletsRequest",
+                    "description": "Deletes bullets from paragraphs."
+                },
+                "updateTableBorderProperties": {
+                    "$ref": "UpdateTableBorderPropertiesRequest",
+                    "description": "Updates the properties of the table borders in a Table."
+                },
                 "insertTableColumns": {
                     "$ref": "InsertTableColumnsRequest",
                     "description": "Inserts columns into a table."
                 },
+                "mergeTableCells": {
+                    "$ref": "MergeTableCellsRequest",
+                    "description": "Merges cells in a Table."
+                },
                 "refreshSheetsChart": {
                     "$ref": "RefreshSheetsChartRequest",
                     "description": "Refreshes a Google Sheets chart."
@@ -3447,466 +4224,6 @@
                 "deleteObject": {
                     "$ref": "DeleteObjectRequest",
                     "description": "Deletes a page or page element from the presentation."
-                },
-                "updateParagraphStyle": {
-                    "$ref": "UpdateParagraphStyleRequest",
-                    "description": "Updates the styling of paragraphs within a Shape or Table."
-                }
-            },
-            "type": "object"
-        },
-        "UpdateImagePropertiesRequest": {
-            "description": "Update the properties of an Image.",
-            "id": "UpdateImagePropertiesRequest",
-            "properties": {
-                "imageProperties": {
-                    "$ref": "ImageProperties",
-                    "description": "The image properties to update."
-                },
-                "objectId": {
-                    "description": "The object ID of the image the updates are applied to.",
-                    "type": "string"
-                },
-                "fields": {
-                    "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `imageProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the image outline color, set `fields` to\n`\"outline.outlineFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.",
-                    "format": "google-fieldmask",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ParagraphStyle": {
-            "description": "Styles that apply to a whole paragraph.\n\nIf this text is contained in a shape with a parent placeholder, then these paragraph styles may be\ninherited from the parent. Which paragraph styles are inherited depend on the\nnesting level of lists:\n\n* A paragraph not in a list will inherit its paragraph style from the\n  paragraph at the 0 nesting level of the list inside the parent placeholder.\n* A paragraph in a list will inherit its paragraph style from the paragraph\n  at its corresponding nesting level of the list inside the parent\n  placeholder.\n\nInherited paragraph styles are represented as unset fields in this message.",
-            "id": "ParagraphStyle",
-            "properties": {
-                "spaceBelow": {
-                    "$ref": "Dimension",
-                    "description": "The amount of extra space above the paragraph. If unset, the value is\ninherited from the parent."
-                },
-                "direction": {
-                    "description": "The text direction of this paragraph. If unset, the value defaults to\nLEFT_TO_RIGHT since\ntext direction is not inherited.",
-                    "enum": [
-                        "TEXT_DIRECTION_UNSPECIFIED",
-                        "LEFT_TO_RIGHT",
-                        "RIGHT_TO_LEFT"
-                    ],
-                    "enumDescriptions": [
-                        "The text direction is inherited from the parent.",
-                        "The text goes from left to right.",
-                        "The text goes from right to left."
-                    ],
-                    "type": "string"
-                },
-                "spacingMode": {
-                    "description": "The spacing mode for the paragraph.",
-                    "enum": [
-                        "SPACING_MODE_UNSPECIFIED",
-                        "NEVER_COLLAPSE",
-                        "COLLAPSE_LISTS"
-                    ],
-                    "enumDescriptions": [
-                        "The spacing mode is inherited from the parent.",
-                        "Paragraph spacing is always rendered.",
-                        "Paragraph spacing is skipped between list elements."
-                    ],
-                    "type": "string"
-                },
-                "indentEnd": {
-                    "$ref": "Dimension",
-                    "description": "The amount indentation for the paragraph on the side that corresponds to\nthe end of the text, based on the current text direction. If unset, the\nvalue is inherited from the parent."
-                },
-                "indentStart": {
-                    "$ref": "Dimension",
-                    "description": "The amount indentation for the paragraph on the side that corresponds to\nthe start of the text, based on the current text direction. If unset, the\nvalue is inherited from the parent."
-                },
-                "spaceAbove": {
-                    "$ref": "Dimension",
-                    "description": "The amount of extra space above the paragraph. If unset, the value is\ninherited from the parent."
-                },
-                "indentFirstLine": {
-                    "$ref": "Dimension",
-                    "description": "The amount of indentation for the start of the first line of the paragraph.\nIf unset, the value is inherited from the parent."
-                },
-                "lineSpacing": {
-                    "description": "The amount of space between lines, as a percentage of normal, where normal\nis represented as 100.0. If unset, the value is inherited from the parent.",
-                    "format": "float",
-                    "type": "number"
-                },
-                "alignment": {
-                    "description": "The text alignment for this paragraph.",
-                    "enum": [
-                        "ALIGNMENT_UNSPECIFIED",
-                        "START",
-                        "CENTER",
-                        "END",
-                        "JUSTIFIED"
-                    ],
-                    "enumDescriptions": [
-                        "The paragraph alignment is inherited from the parent.",
-                        "The paragraph is aligned to the start of the line. Left-aligned for\nLTR text, right-aligned otherwise.",
-                        "The paragraph is centered.",
-                        "The paragraph is aligned to the end of the line. Right-aligned for\nLTR text, left-aligned otherwise.",
-                        "The paragraph is justified."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ReplaceAllShapesWithSheetsChartResponse": {
-            "description": "The result of replacing shapes with a Google Sheets chart.",
-            "id": "ReplaceAllShapesWithSheetsChartResponse",
-            "properties": {
-                "occurrencesChanged": {
-                    "description": "The number of shapes replaced with charts.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "TableCellProperties": {
-            "description": "The properties of the TableCell.",
-            "id": "TableCellProperties",
-            "properties": {
-                "tableCellBackgroundFill": {
-                    "$ref": "TableCellBackgroundFill",
-                    "description": "The background fill of the table cell. The default fill matches the fill\nfor newly created table cells in the Slides editor."
-                }
-            },
-            "type": "object"
-        },
-        "RefreshSheetsChartRequest": {
-            "description": "Refreshes an embedded Google Sheets chart by replacing it with the latest\nversion of the chart from Google Sheets.\n\nNOTE: Refreshing charts requires  at least one of the spreadsheets.readonly,\nspreadsheets, drive.readonly, or drive OAuth scopes.",
-            "id": "RefreshSheetsChartRequest",
-            "properties": {
-                "objectId": {
-                    "description": "The object ID of the chart to refresh.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Outline": {
-            "description": "The outline of a PageElement.\n\nIf these fields are unset, they may be inherited from a parent placeholder\nif it exists. If there is no parent, the fields will default to the value\nused for new page elements created in the Slides editor, which may depend on\nthe page element kind.",
-            "id": "Outline",
-            "properties": {
-                "outlineFill": {
-                    "$ref": "OutlineFill",
-                    "description": "The fill of the outline."
-                },
-                "weight": {
-                    "$ref": "Dimension",
-                    "description": "The thickness of the outline."
-                },
-                "dashStyle": {
-                    "description": "The dash style of the outline.",
-                    "enum": [
-                        "DASH_STYLE_UNSPECIFIED",
-                        "SOLID",
-                        "DOT",
-                        "DASH",
-                        "DASH_DOT",
-                        "LONG_DASH",
-                        "LONG_DASH_DOT"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified dash style.",
-                        "Solid line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'solid'.\nThis is the default dash style.",
-                        "Dotted line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'dot'.",
-                        "Dashed line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'dash'.",
-                        "Alternating dashes and dots. Corresponds to ECMA-376 ST_PresetLineDashVal\nvalue 'dashDot'.",
-                        "Line with large dashes. Corresponds to ECMA-376 ST_PresetLineDashVal\nvalue 'lgDash'.",
-                        "Alternating large dashes and dots. Corresponds to ECMA-376\nST_PresetLineDashVal value 'lgDashDot'."
-                    ],
-                    "type": "string"
-                },
-                "propertyState": {
-                    "description": "The outline property state.\n\nUpdating the the outline on a page element will implicitly update this\nfield to`RENDERED`, unless another value is specified in the same request.\nTo have no outline on a page element, set this field to `NOT_RENDERED`. In\nthis case, any other outline fields set in the same request will be\nignored.",
-                    "enum": [
-                        "RENDERED",
-                        "NOT_RENDERED",
-                        "INHERIT"
-                    ],
-                    "enumDescriptions": [
-                        "If a property's state is RENDERED, then the element has the corresponding\nproperty when rendered on a page. If the element is a placeholder shape as\ndetermined by the placeholder\nfield, and it inherits from a placeholder shape, the corresponding field\nmay be unset, meaning that the property value is inherited from a parent\nplaceholder. If the element does not inherit, then the field will contain\nthe rendered value. This is the default value.",
-                        "If a property's state is NOT_RENDERED, then the element does not have the\ncorresponding property when rendered on a page. However, the field may\nstill be set so it can be inherited by child shapes. To remove a property\nfrom a rendered element, set its property_state to NOT_RENDERED.",
-                        "If a property's state is INHERIT, then the property state uses the value of\ncorresponding `property_state` field on the parent shape. Elements that do\nnot inherit will never have an INHERIT property state."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TableColumnProperties": {
-            "description": "Properties of each column in a table.",
-            "id": "TableColumnProperties",
-            "properties": {
-                "columnWidth": {
-                    "$ref": "Dimension",
-                    "description": "Width of a column."
-                }
-            },
-            "type": "object"
-        },
-        "ShapeProperties": {
-            "description": "The properties of a Shape.\n\nIf the shape is a placeholder shape as determined by the\nplaceholder field, then these\nproperties may be inherited from a parent placeholder shape.\nDetermining the rendered value of the property depends on the corresponding\nproperty_state field value.",
-            "id": "ShapeProperties",
-            "properties": {
-                "outline": {
-                    "$ref": "Outline",
-                    "description": "The outline of the shape. If unset, the outline is inherited from a\nparent placeholder if it exists. If the shape has no parent, then the\ndefault outline depends on the shape type, matching the defaults for\nnew shapes created in the Slides editor."
-                },
-                "shadow": {
-                    "$ref": "Shadow",
-                    "description": "The shadow properties of the shape. If unset, the shadow is inherited from\na parent placeholder if it exists. If the shape has no parent, then the\ndefault shadow matches the defaults for new shapes created in the Slides\neditor. This property is read-only."
-                },
-                "shapeBackgroundFill": {
-                    "$ref": "ShapeBackgroundFill",
-                    "description": "The background fill of the shape. If unset, the background fill is\ninherited from a parent placeholder if it exists. If the shape has no\nparent, then the default background fill depends on the shape type,\nmatching the defaults for new shapes created in the Slides editor."
-                },
-                "link": {
-                    "$ref": "Link",
-                    "description": "The hyperlink destination of the shape. If unset, there is no link. Links\nare not inherited from parent placeholders."
-                }
-            },
-            "type": "object"
-        },
-        "NotesProperties": {
-            "description": "The properties of Page that are only\nrelevant for pages with page_type NOTES.",
-            "id": "NotesProperties",
-            "properties": {
-                "speakerNotesObjectId": {
-                    "description": "The object ID of the shape on this notes page that contains the speaker\nnotes for the corresponding slide.\nThe actual shape may not always exist on the notes page. Inserting text\nusing this object ID will automatically create the shape. In this case, the\nactual shape may have different object ID. The `GetPresentation` or\n`GetPage` action will always return the latest object ID.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TableRow": {
-            "description": "Properties and contents of each row in a table.",
-            "id": "TableRow",
-            "properties": {
-                "tableCells": {
-                    "description": "Properties and contents of each cell.\n\nCells that span multiple columns are represented only once with a\ncolumn_span greater\nthan 1. As a result, the length of this collection does not always match\nthe number of columns of the entire table.",
-                    "items": {
-                        "$ref": "TableCell"
-                    },
-                    "type": "array"
-                },
-                "rowHeight": {
-                    "$ref": "Dimension",
-                    "description": "Height of a row."
-                }
-            },
-            "type": "object"
-        },
-        "UpdateTableCellPropertiesRequest": {
-            "description": "Update the properties of a TableCell.",
-            "id": "UpdateTableCellPropertiesRequest",
-            "properties": {
-                "fields": {
-                    "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `tableCellProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the table cell background solid fill color, set\n`fields` to `\"tableCellBackgroundFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.",
-                    "format": "google-fieldmask",
-                    "type": "string"
-                },
-                "tableRange": {
-                    "$ref": "TableRange",
-                    "description": "The table range representing the subset of the table to which the updates\nare applied. If a table range is not specified, the updates will apply to\nthe entire table."
-                },
-                "objectId": {
-                    "description": "The object ID of the table.",
-                    "type": "string"
-                },
-                "tableCellProperties": {
-                    "$ref": "TableCellProperties",
-                    "description": "The table cell properties to update."
-                }
-            },
-            "type": "object"
-        },
-        "CreateSlideRequest": {
-            "description": "Creates a new slide.",
-            "id": "CreateSlideRequest",
-            "properties": {
-                "placeholderIdMappings": {
-                    "description": "An optional list of object ID mappings from the placeholder(s) on the layout to the placeholder(s)\nthat will be created on the new slide from that specified layout. Can only\nbe used when `slide_layout_reference` is specified.",
-                    "items": {
-                        "$ref": "LayoutPlaceholderIdMapping"
-                    },
-                    "type": "array"
-                },
-                "slideLayoutReference": {
-                    "$ref": "LayoutReference",
-                    "description": "Layout reference of the slide to be inserted, based on the *current\nmaster*, which is one of the following:\n\n- The master of the previous slide index.\n- The master of the first slide, if the insertion_index is zero.\n- The first master in the presentation, if there are no slides.\n\nIf the LayoutReference is not found in the current master, a 400 bad\nrequest error is returned.\n\nIf you don't specify a layout reference, then the new slide will use the\npredefined layout `BLANK`."
-                },
-                "objectId": {
-                    "description": "A user-supplied object ID.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\n\nIf you don't specify an ID, a unique one is generated.",
-                    "type": "string"
-                },
-                "insertionIndex": {
-                    "description": "The optional zero-based index indicating where to insert the slides.\n\nIf you don't specify an index, the new slide is created at the end.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "BatchUpdatePresentationRequest": {
-            "description": "Request message for PresentationsService.BatchUpdatePresentation.",
-            "id": "BatchUpdatePresentationRequest",
-            "properties": {
-                "writeControl": {
-                    "$ref": "WriteControl",
-                    "description": "Provides control over how write requests are executed."
-                },
-                "requests": {
-                    "description": "A list of updates to apply to the presentation.",
-                    "items": {
-                        "$ref": "Request"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "TextContent": {
-            "description": "The general text content. The text must reside in a compatible shape (e.g.\ntext box or rectangle) or a table cell in a page.",
-            "id": "TextContent",
-            "properties": {
-                "textElements": {
-                    "description": "The text contents broken down into its component parts, including styling\ninformation. This property is read-only.",
-                    "items": {
-                        "$ref": "TextElement"
-                    },
-                    "type": "array"
-                },
-                "lists": {
-                    "additionalProperties": {
-                        "$ref": "List"
-                    },
-                    "description": "The bulleted lists contained in this text, keyed by list ID.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "CreateSheetsChartResponse": {
-            "description": "The result of creating an embedded Google Sheets chart.",
-            "id": "CreateSheetsChartResponse",
-            "properties": {
-                "objectId": {
-                    "description": "The object ID of the created chart.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "WriteControl": {
-            "description": "Provides control over how write requests are executed.",
-            "id": "WriteControl",
-            "properties": {
-                "requiredRevisionId": {
-                    "description": "The revision ID of the presentation required for the write request. If\nspecified and the `required_revision_id` doesn't exactly match the\npresentation's current `revision_id`, the request will not be processed and\nwill return a 400 bad request error.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "DeleteParagraphBulletsRequest": {
-            "description": "Deletes bullets from all of the paragraphs that overlap with the given text\nindex range.\n\nThe nesting level of each paragraph will be visually preserved by adding\nindent to the start of the corresponding paragraph.",
-            "id": "DeleteParagraphBulletsRequest",
-            "properties": {
-                "textRange": {
-                    "$ref": "Range",
-                    "description": "The range of text to delete bullets from, based on TextElement indexes."
-                },
-                "objectId": {
-                    "description": "The object ID of the shape or table containing the text to delete bullets\nfrom.",
-                    "type": "string"
-                },
-                "cellLocation": {
-                    "$ref": "TableCellLocation",
-                    "description": "The optional table cell location if the text to be modified is in a table\ncell. If present, the object_id must refer to a table."
-                }
-            },
-            "type": "object"
-        },
-        "ParagraphMarker": {
-            "description": "A TextElement kind that represents the beginning of a new paragraph.",
-            "id": "ParagraphMarker",
-            "properties": {
-                "style": {
-                    "$ref": "ParagraphStyle",
-                    "description": "The paragraph's style"
-                },
-                "bullet": {
-                    "$ref": "Bullet",
-                    "description": "The bullet for this paragraph. If not present, the paragraph does not\nbelong to a list."
-                }
-            },
-            "type": "object"
-        },
-        "InsertTableColumnsRequest": {
-            "description": "Inserts columns into a table.\n\nOther columns in the table will be resized to fit the new column.",
-            "id": "InsertTableColumnsRequest",
-            "properties": {
-                "number": {
-                    "description": "The number of columns to be inserted. Maximum 20 per request.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "cellLocation": {
-                    "$ref": "TableCellLocation",
-                    "description": "The reference table cell location from which columns will be inserted.\n\nA new column will be inserted to the left (or right) of the column where\nthe reference cell is. If the reference cell is a merged cell, a new\ncolumn will be inserted to the left (or right) of the merged cell."
-                },
-                "insertRight": {
-                    "description": "Whether to insert new columns to the right of the reference cell location.\n\n- `True`: insert to the right.\n- `False`: insert to the left.",
-                    "type": "boolean"
-                },
-                "tableObjectId": {
-                    "description": "The table to insert columns into.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Thumbnail": {
-            "description": "The thumbnail of a page.",
-            "id": "Thumbnail",
-            "properties": {
-                "height": {
-                    "description": "The positive height in pixels of the thumbnail image.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "contentUrl": {
-                    "description": "The content URL of the thumbnail image.\n\nThe URL to the image has a default lifetime of 30 minutes.\nThis URL is tagged with the account of the requester. Anyone with the URL\neffectively accesses the image as the original requester. Access to the\nimage may be lost if the presentation's sharing settings change.\nThe mime type of the thumbnail image is the same as specified in the\n`GetPageThumbnailRequest`.",
-                    "type": "string"
-                },
-                "width": {
-                    "description": "The positive width in pixels of the thumbnail image.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "LayoutPlaceholderIdMapping": {
-            "description": "The user-specified ID mapping for a placeholder that will be created on a\nslide from a specified layout.",
-            "id": "LayoutPlaceholderIdMapping",
-            "properties": {
-                "layoutPlaceholder": {
-                    "$ref": "Placeholder",
-                    "description": "The placeholder on a layout that will be applied to a slide. Only type and index are needed. For example, a\npredefined `TITLE_AND_BODY` layout may usually have a TITLE placeholder\nwith index 0 and a BODY placeholder with index 0."
-                },
-                "layoutPlaceholderObjectId": {
-                    "description": "The object ID of the placeholder on a layout that will be applied\nto a slide.",
-                    "type": "string"
-                },
-                "objectId": {
-                    "description": "A user-supplied object ID for the placeholder identified above that to be\ncreated onto a slide.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\n\nIf you don't specify an ID, a unique one is generated.",
-                    "type": "string"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/sourcerepo__v1.json b/discovery/googleapis/sourcerepo__v1.json
index 40c3507..fe7b08f 100644
--- a/discovery/googleapis/sourcerepo__v1.json
+++ b/discovery/googleapis/sourcerepo__v1.json
@@ -2,9 +2,6 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/source.read_only": {
-                    "description": "View the contents of your source code repositories"
-                },
                 "https://www.googleapis.com/auth/source.read_write": {
                     "description": "Manage the contents of your source code repositories"
                 },
@@ -13,6 +10,9 @@
                 },
                 "https://www.googleapis.com/auth/cloud-platform": {
                     "description": "View and manage your data across Google Cloud Platform services"
+                },
+                "https://www.googleapis.com/auth/source.read_only": {
+                    "description": "View the contents of your source code repositories"
                 }
             }
         }
@@ -34,19 +34,13 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
+        "bearer_token": {
+            "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         },
@@ -71,11 +65,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -89,6 +78,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -119,6 +113,12 @@
             "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.",
             "location": "query",
             "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
         }
     },
     "protocol": "rest",
@@ -127,6 +127,60 @@
             "resources": {
                 "repos": {
                     "methods": {
+                        "getIamPolicy": {
+                            "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
+                            "httpMethod": "GET",
+                            "id": "sourcerepo.projects.repos.getIamPolicy",
+                            "parameterOrder": [
+                                "resource"
+                            ],
+                            "parameters": {
+                                "resource": {
+                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/repos/.+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+resource}:getIamPolicy",
+                            "response": {
+                                "$ref": "Policy"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/source.full_control",
+                                "https://www.googleapis.com/auth/source.read_only",
+                                "https://www.googleapis.com/auth/source.read_write"
+                            ]
+                        },
+                        "get": {
+                            "description": "Returns information about a repo.",
+                            "httpMethod": "GET",
+                            "id": "sourcerepo.projects.repos.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The name of the requested repository. Values are of the form\n`projects/<project>/repos/<repo>`.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/repos/.+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "Repo"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/source.full_control",
+                                "https://www.googleapis.com/auth/source.read_only",
+                                "https://www.googleapis.com/auth/source.read_write"
+                            ]
+                        },
                         "testIamPermissions": {
                             "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.",
                             "httpMethod": "POST",
@@ -281,69 +335,211 @@
                                 "https://www.googleapis.com/auth/source.read_only",
                                 "https://www.googleapis.com/auth/source.read_write"
                             ]
-                        },
-                        "getIamPolicy": {
-                            "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
-                            "httpMethod": "GET",
-                            "id": "sourcerepo.projects.repos.getIamPolicy",
-                            "parameterOrder": [
-                                "resource"
-                            ],
-                            "parameters": {
-                                "resource": {
-                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/repos/.+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+resource}:getIamPolicy",
-                            "response": {
-                                "$ref": "Policy"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/source.full_control",
-                                "https://www.googleapis.com/auth/source.read_only",
-                                "https://www.googleapis.com/auth/source.read_write"
-                            ]
-                        },
-                        "get": {
-                            "description": "Returns information about a repo.",
-                            "httpMethod": "GET",
-                            "id": "sourcerepo.projects.repos.get",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "The name of the requested repository. Values are of the form\n`projects/<project>/repos/<repo>`.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/repos/.+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "response": {
-                                "$ref": "Repo"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/source.full_control",
-                                "https://www.googleapis.com/auth/source.read_only",
-                                "https://www.googleapis.com/auth/source.read_write"
-                            ]
                         }
                     }
                 }
             }
         }
     },
-    "revision": "20170908",
+    "revision": "20171011",
     "rootUrl": "https://sourcerepo.googleapis.com/",
     "schemas": {
+        "AuditConfig": {
+            "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
+            "id": "AuditConfig",
+            "properties": {
+                "auditLogConfigs": {
+                    "description": "The configuration for logging of each type of permission.\nNext ID: 4",
+                    "items": {
+                        "$ref": "AuditLogConfig"
+                    },
+                    "type": "array"
+                },
+                "exemptedMembers": {
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "service": {
+                    "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SetIamPolicyRequest": {
+            "description": "Request message for `SetIamPolicy` method.",
+            "id": "SetIamPolicyRequest",
+            "properties": {
+                "policy": {
+                    "$ref": "Policy",
+                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
+                },
+                "updateMask": {
+                    "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Binding": {
+            "description": "Associates `members` with a `role`.",
+            "id": "Binding",
+            "properties": {
+                "condition": {
+                    "$ref": "Expr",
+                    "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently.\nThis field is GOOGLE_INTERNAL."
+                },
+                "members": {
+                    "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "role": {
+                    "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "MirrorConfig": {
+            "description": "Configuration to automatically mirror a repository from another\nhosting service, for example GitHub or BitBucket.",
+            "id": "MirrorConfig",
+            "properties": {
+                "url": {
+                    "description": "URL of the main repository at the other hosting service.",
+                    "type": "string"
+                },
+                "webhookId": {
+                    "description": "ID of the webhook listening to updates to trigger mirroring.\nRemoving this webhook from the other hosting service will stop\nGoogle Cloud Source Repositories from receiving notifications,\nand thereby disabling mirroring.",
+                    "type": "string"
+                },
+                "deployKeyId": {
+                    "description": "ID of the SSH deploy key at the other hosting service.\nRemoving this key from the other service would deauthorize\nGoogle Cloud Source Repositories from mirroring.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Expr": {
+            "description": "Represents an expression text. Example:\n\n    title: \"User account presence\"\n    description: \"Determines whether the request has a user account\"\n    expression: \"size(request.user) > 0\"",
+            "id": "Expr",
+            "properties": {
+                "location": {
+                    "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.",
+                    "type": "string"
+                },
+                "title": {
+                    "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.",
+                    "type": "string"
+                },
+                "expression": {
+                    "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Repo": {
+            "description": "A repository (or repo) is a Git repository storing versioned source content.",
+            "id": "Repo",
+            "properties": {
+                "size": {
+                    "description": "The disk usage of the repo, in bytes.\nOnly returned by GetRepo.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Resource name of the repository, of the form\n`projects/<project>/repos/<repo>`.  The repo name may contain slashes.\neg, `projects/myproject/repos/name/with/slash`",
+                    "type": "string"
+                },
+                "mirrorConfig": {
+                    "$ref": "MirrorConfig",
+                    "description": "How this repository mirrors a repository managed by another service."
+                },
+                "url": {
+                    "description": "URL to clone the repository from Google Cloud Source Repositories.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TestIamPermissionsResponse": {
+            "description": "Response message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsResponse",
+            "properties": {
+                "permissions": {
+                    "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListReposResponse": {
+            "description": "Response for ListRepos.  The size is not set in the returned repositories.",
+            "id": "ListReposResponse",
+            "properties": {
+                "repos": {
+                    "description": "The listed repos.",
+                    "items": {
+                        "$ref": "Repo"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "If non-empty, additional repositories exist within the project. These\ncan be retrieved by including this value in the next ListReposRequest's\npage_token field.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AuditLogConfig": {
+            "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n    {\n      \"audit_log_configs\": [\n        {\n          \"log_type\": \"DATA_READ\",\n          \"exempted_members\": [\n            \"user:foo@gmail.com\"\n          ]\n        },\n        {\n          \"log_type\": \"DATA_WRITE\",\n        }\n      ]\n    }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.",
+            "id": "AuditLogConfig",
+            "properties": {
+                "exemptedMembers": {
+                    "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "logType": {
+                    "description": "The log type that this config enables.",
+                    "enum": [
+                        "LOG_TYPE_UNSPECIFIED",
+                        "ADMIN_READ",
+                        "DATA_WRITE",
+                        "DATA_READ"
+                    ],
+                    "enumDescriptions": [
+                        "Default case. Should never be this.",
+                        "Admin reads. Example: CloudIAM getIamPolicy",
+                        "Data writes. Example: CloudSQL Users create",
+                        "Data reads. Example: CloudSQL Users list"
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "TestIamPermissionsRequest": {
             "description": "Request message for `TestIamPermissions` method.",
             "id": "TestIamPermissionsRequest",
@@ -391,202 +587,6 @@
                 }
             },
             "type": "object"
-        },
-        "AuditConfig": {
-            "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
-            "id": "AuditConfig",
-            "properties": {
-                "exemptedMembers": {
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "service": {
-                    "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
-                    "type": "string"
-                },
-                "auditLogConfigs": {
-                    "description": "The configuration for logging of each type of permission.\nNext ID: 4",
-                    "items": {
-                        "$ref": "AuditLogConfig"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "SetIamPolicyRequest": {
-            "description": "Request message for `SetIamPolicy` method.",
-            "id": "SetIamPolicyRequest",
-            "properties": {
-                "policy": {
-                    "$ref": "Policy",
-                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
-                },
-                "updateMask": {
-                    "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.",
-                    "format": "google-fieldmask",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Binding": {
-            "description": "Associates `members` with a `role`.",
-            "id": "Binding",
-            "properties": {
-                "members": {
-                    "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "role": {
-                    "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired",
-                    "type": "string"
-                },
-                "condition": {
-                    "$ref": "Expr",
-                    "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently.\nThis field is GOOGLE_INTERNAL."
-                }
-            },
-            "type": "object"
-        },
-        "MirrorConfig": {
-            "description": "Configuration to automatically mirror a repository from another\nhosting service, for example GitHub or BitBucket.",
-            "id": "MirrorConfig",
-            "properties": {
-                "url": {
-                    "description": "URL of the main repository at the other hosting service.",
-                    "type": "string"
-                },
-                "webhookId": {
-                    "description": "ID of the webhook listening to updates to trigger mirroring.\nRemoving this webook from the other hosting service will stop\nGoogle Cloud Source Repositories from receiving notifications,\nand thereby disabling mirroring.",
-                    "type": "string"
-                },
-                "deployKeyId": {
-                    "description": "ID of the SSH deploy key at the other hosting service.\nRemoving this key from the other service would deauthorize\nGoogle Cloud Source Repositories from mirroring.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
-        "Expr": {
-            "description": "Represents an expression text. Example:\n\n    title: \"User account presence\"\n    description: \"Determines whether the request has a user account\"\n    expression: \"size(request.user) > 0\"",
-            "id": "Expr",
-            "properties": {
-                "expression": {
-                    "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.",
-                    "type": "string"
-                },
-                "location": {
-                    "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.",
-                    "type": "string"
-                },
-                "title": {
-                    "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Repo": {
-            "description": "A repository (or repo) is a Git repository storing versioned source content.",
-            "id": "Repo",
-            "properties": {
-                "name": {
-                    "description": "Resource name of the repository, of the form\n`projects/<project>/repos/<repo>`.  The repo name may contain slashes.\neg, `projects/myproject/repos/name/with/slash`",
-                    "type": "string"
-                },
-                "mirrorConfig": {
-                    "$ref": "MirrorConfig",
-                    "description": "How this repository mirrors a repository managed by another service."
-                },
-                "url": {
-                    "description": "URL to clone the repository from Google Cloud Source Repositories.",
-                    "type": "string"
-                },
-                "size": {
-                    "description": "The disk usage of the repo, in bytes.\nOnly returned by GetRepo.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListReposResponse": {
-            "description": "Response for ListRepos.  The size is not set in the returned repositories.",
-            "id": "ListReposResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "If non-empty, additional repositories exist within the project. These\ncan be retrieved by including this value in the next ListReposRequest's\npage_token field.",
-                    "type": "string"
-                },
-                "repos": {
-                    "description": "The listed repos.",
-                    "items": {
-                        "$ref": "Repo"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "TestIamPermissionsResponse": {
-            "description": "Response message for `TestIamPermissions` method.",
-            "id": "TestIamPermissionsResponse",
-            "properties": {
-                "permissions": {
-                    "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AuditLogConfig": {
-            "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n    {\n      \"audit_log_configs\": [\n        {\n          \"log_type\": \"DATA_READ\",\n          \"exempted_members\": [\n            \"user:foo@gmail.com\"\n          ]\n        },\n        {\n          \"log_type\": \"DATA_WRITE\",\n        }\n      ]\n    }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.",
-            "id": "AuditLogConfig",
-            "properties": {
-                "exemptedMembers": {
-                    "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "logType": {
-                    "description": "The log type that this config enables.",
-                    "enum": [
-                        "LOG_TYPE_UNSPECIFIED",
-                        "ADMIN_READ",
-                        "DATA_WRITE",
-                        "DATA_READ"
-                    ],
-                    "enumDescriptions": [
-                        "Default case. Should never be this.",
-                        "Admin reads. Example: CloudIAM getIamPolicy",
-                        "Data writes. Example: CloudSQL Users create",
-                        "Data reads. Example: CloudSQL Users list"
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/spanner__v1.json b/discovery/googleapis/spanner__v1.json
index d7ed4ea..6ef4fcd 100644
--- a/discovery/googleapis/spanner__v1.json
+++ b/discovery/googleapis/spanner__v1.json
@@ -31,13 +31,60 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
         "uploadType": {
             "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "callback": {
+            "description": "JSONP",
             "location": "query",
             "type": "string"
         },
@@ -54,11 +101,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -74,174 +116,14 @@
             ],
             "location": "query",
             "type": "string"
-        },
-        "access_token": {
-            "description": "OAuth access token.",
-            "location": "query",
-            "type": "string"
-        },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-            "location": "query",
-            "type": "string"
-        },
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
         }
     },
     "protocol": "rest",
     "resources": {
         "projects": {
             "resources": {
-                "instanceConfigs": {
-                    "methods": {
-                        "list": {
-                            "description": "Lists the supported instance configurations for a given project.",
-                            "httpMethod": "GET",
-                            "id": "spanner.projects.instanceConfigs.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "If non-empty, `page_token` should contain a\nnext_page_token\nfrom a previous ListInstanceConfigsResponse.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Number of instance configurations to be returned in the response. If 0 or\nless, defaults to the server's maximum allowed page size.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "parent": {
-                                    "description": "Required. The name of the project for which a list of supported instance\nconfigurations is requested. Values are of the form\n`projects/<project>`.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+parent}/instanceConfigs",
-                            "response": {
-                                "$ref": "ListInstanceConfigsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/spanner.admin"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets information about a particular instance configuration.",
-                            "httpMethod": "GET",
-                            "id": "spanner.projects.instanceConfigs.get",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Required. The name of the requested instance configuration. Values are of\nthe form `projects/<project>/instanceConfigs/<config>`.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/instanceConfigs/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "response": {
-                                "$ref": "InstanceConfig"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/spanner.admin"
-                            ]
-                        }
-                    }
-                },
                 "instances": {
                     "methods": {
-                        "testIamPermissions": {
-                            "description": "Returns permissions that the caller has on the specified instance resource.\n\nAttempting this RPC on a non-existent Cloud Spanner instance resource will\nresult in a NOT_FOUND error if the user has `spanner.instances.list`\npermission on the containing Google Cloud Project. Otherwise returns an\nempty set of permissions.",
-                            "httpMethod": "POST",
-                            "id": "spanner.projects.instances.testIamPermissions",
-                            "parameterOrder": [
-                                "resource"
-                            ],
-                            "parameters": {
-                                "resource": {
-                                    "description": "REQUIRED: The Cloud Spanner resource for which permissions are being tested. The format is `projects/<project ID>/instances/<instance ID>` for instance resources and `projects/<project ID>/instances/<instance ID>/databases/<database ID>` for database resources.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/instances/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+resource}:testIamPermissions",
-                            "request": {
-                                "$ref": "TestIamPermissionsRequest"
-                            },
-                            "response": {
-                                "$ref": "TestIamPermissionsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/spanner.admin"
-                            ]
-                        },
-                        "delete": {
-                            "description": "Deletes an instance.\n\nImmediately upon completion of the request:\n\n  * Billing ceases for all of the instance's reserved resources.\n\nSoon afterward:\n\n  * The instance and *all of its databases* immediately and\n    irrevocably disappear from the API. All data in the databases\n    is permanently deleted.",
-                            "httpMethod": "DELETE",
-                            "id": "spanner.projects.instances.delete",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Required. The name of the instance to be deleted. Values are of the form\n`projects/<project>/instances/<instance>`",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/instances/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/spanner.admin"
-                            ]
-                        },
                         "list": {
                             "description": "Lists all instances in the given project.",
                             "httpMethod": "GET",
@@ -250,6 +132,12 @@
                                 "parent"
                             ],
                             "parameters": {
+                                "pageSize": {
+                                    "description": "Number of instances to be returned in the response. If 0 or less, defaults\nto the server's maximum allowed page size.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
                                 "parent": {
                                     "description": "Required. The name of the project for which a list of instances is\nrequested. Values are of the form `projects/<project>`.",
                                     "location": "path",
@@ -266,12 +154,6 @@
                                     "description": "If non-empty, `page_token` should contain a\nnext_page_token from a\nprevious ListInstancesResponse.",
                                     "location": "query",
                                     "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Number of instances to be returned in the response. If 0 or less, defaults\nto the server's maximum allowed page size.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
                                 }
                             },
                             "path": "v1/{+parent}/instances",
@@ -367,31 +249,6 @@
                                 "https://www.googleapis.com/auth/spanner.admin"
                             ]
                         },
-                        "get": {
-                            "description": "Gets information about a particular instance.",
-                            "httpMethod": "GET",
-                            "id": "spanner.projects.instances.get",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Required. The name of the requested instance. Values are of the form\n`projects/<project>/instances/<instance>`.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/instances/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/{+name}",
-                            "response": {
-                                "$ref": "Instance"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/spanner.admin"
-                            ]
-                        },
                         "patch": {
                             "description": "Updates an instance, and begins allocating or releasing resources\nas requested. The returned long-running\noperation can be used to track the\nprogress of updating the instance. If the named instance does not\nexist, returns `NOT_FOUND`.\n\nImmediately upon completion of this request:\n\n  * For resource types for which a decrease in the instance's allocation\n    has been requested, billing is based on the newly-requested level.\n\nUntil completion of the returned operation:\n\n  * Cancelling the operation sets its metadata's\n    cancel_time, and begins\n    restoring resources to their pre-request values. The operation\n    is guaranteed to succeed at undoing all resource changes,\n    after which point it terminates with a `CANCELLED` status.\n  * All other attempts to modify the instance are rejected.\n  * Reading the instance via the API continues to give the pre-request\n    resource levels.\n\nUpon completion of the returned operation:\n\n  * Billing begins for all successfully-allocated resources (some types\n    may have lower than the requested levels).\n  * All newly-reserved resources are available for serving the instance's\n    tables.\n  * The instance's new resource levels are readable via the API.\n\nThe returned long-running operation will\nhave a name of the format `<instance_name>/operations/<operation_id>` and\ncan be used to track the instance modification.  The\nmetadata field type is\nUpdateInstanceMetadata.\nThe response field type is\nInstance, if successful.\n\nAuthorization requires `spanner.instances.update` permission on\nresource name.",
                             "httpMethod": "PATCH",
@@ -419,95 +276,89 @@
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/spanner.admin"
                             ]
+                        },
+                        "get": {
+                            "description": "Gets information about a particular instance.",
+                            "httpMethod": "GET",
+                            "id": "spanner.projects.instances.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The name of the requested instance. Values are of the form\n`projects/<project>/instances/<instance>`.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/instances/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "Instance"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/spanner.admin"
+                            ]
+                        },
+                        "testIamPermissions": {
+                            "description": "Returns permissions that the caller has on the specified instance resource.\n\nAttempting this RPC on a non-existent Cloud Spanner instance resource will\nresult in a NOT_FOUND error if the user has `spanner.instances.list`\npermission on the containing Google Cloud Project. Otherwise returns an\nempty set of permissions.",
+                            "httpMethod": "POST",
+                            "id": "spanner.projects.instances.testIamPermissions",
+                            "parameterOrder": [
+                                "resource"
+                            ],
+                            "parameters": {
+                                "resource": {
+                                    "description": "REQUIRED: The Cloud Spanner resource for which permissions are being tested. The format is `projects/<project ID>/instances/<instance ID>` for instance resources and `projects/<project ID>/instances/<instance ID>/databases/<database ID>` for database resources.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/instances/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+resource}:testIamPermissions",
+                            "request": {
+                                "$ref": "TestIamPermissionsRequest"
+                            },
+                            "response": {
+                                "$ref": "TestIamPermissionsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/spanner.admin"
+                            ]
+                        },
+                        "delete": {
+                            "description": "Deletes an instance.\n\nImmediately upon completion of the request:\n\n  * Billing ceases for all of the instance's reserved resources.\n\nSoon afterward:\n\n  * The instance and *all of its databases* immediately and\n    irrevocably disappear from the API. All data in the databases\n    is permanently deleted.",
+                            "httpMethod": "DELETE",
+                            "id": "spanner.projects.instances.delete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The name of the instance to be deleted. Values are of the form\n`projects/<project>/instances/<instance>`",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/instances/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/spanner.admin"
+                            ]
                         }
                     },
                     "resources": {
                         "databases": {
                             "methods": {
-                                "setIamPolicy": {
-                                    "description": "Sets the access control policy on a database resource. Replaces any\nexisting policy.\n\nAuthorization requires `spanner.databases.setIamPolicy` permission on\nresource.",
-                                    "httpMethod": "POST",
-                                    "id": "spanner.projects.instances.databases.setIamPolicy",
-                                    "parameterOrder": [
-                                        "resource"
-                                    ],
-                                    "parameters": {
-                                        "resource": {
-                                            "description": "REQUIRED: The Cloud Spanner resource for which the policy is being set. The format is `projects/<project ID>/instances/<instance ID>` for instance resources and `projects/<project ID>/instances/<instance ID>/databases/<database ID>` for databases resources.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+resource}:setIamPolicy",
-                                    "request": {
-                                        "$ref": "SetIamPolicyRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "Policy"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/spanner.admin"
-                                    ]
-                                },
-                                "create": {
-                                    "description": "Creates a new Cloud Spanner database and starts to prepare it for serving.\nThe returned long-running operation will\nhave a name of the format `<database_name>/operations/<operation_id>` and\ncan be used to track preparation of the database. The\nmetadata field type is\nCreateDatabaseMetadata. The\nresponse field type is\nDatabase, if successful.",
-                                    "httpMethod": "POST",
-                                    "id": "spanner.projects.instances.databases.create",
-                                    "parameterOrder": [
-                                        "parent"
-                                    ],
-                                    "parameters": {
-                                        "parent": {
-                                            "description": "Required. The name of the instance that will serve the new database.\nValues are of the form `projects/<project>/instances/<instance>`.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/instances/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+parent}/databases",
-                                    "request": {
-                                        "$ref": "CreateDatabaseRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "Operation"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/spanner.admin"
-                                    ]
-                                },
-                                "getIamPolicy": {
-                                    "description": "Gets the access control policy for a database resource. Returns an empty\npolicy if a database exists but does not have a policy set.\n\nAuthorization requires `spanner.databases.getIamPolicy` permission on\nresource.",
-                                    "httpMethod": "POST",
-                                    "id": "spanner.projects.instances.databases.getIamPolicy",
-                                    "parameterOrder": [
-                                        "resource"
-                                    ],
-                                    "parameters": {
-                                        "resource": {
-                                            "description": "REQUIRED: The Cloud Spanner resource for which the policy is being retrieved. The format is `projects/<project ID>/instances/<instance ID>` for instance resources and `projects/<project ID>/instances/<instance ID>/databases/<database ID>` for database resources.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+resource}:getIamPolicy",
-                                    "request": {
-                                        "$ref": "GetIamPolicyRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "Policy"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/spanner.admin"
-                                    ]
-                                },
                                 "get": {
                                     "description": "Gets the state of a Cloud Spanner database.",
                                     "httpMethod": "GET",
@@ -674,61 +525,95 @@
                                         "https://www.googleapis.com/auth/cloud-platform",
                                         "https://www.googleapis.com/auth/spanner.admin"
                                     ]
+                                },
+                                "create": {
+                                    "description": "Creates a new Cloud Spanner database and starts to prepare it for serving.\nThe returned long-running operation will\nhave a name of the format `<database_name>/operations/<operation_id>` and\ncan be used to track preparation of the database. The\nmetadata field type is\nCreateDatabaseMetadata. The\nresponse field type is\nDatabase, if successful.",
+                                    "httpMethod": "POST",
+                                    "id": "spanner.projects.instances.databases.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "Required. The name of the instance that will serve the new database.\nValues are of the form `projects/<project>/instances/<instance>`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/instances/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/databases",
+                                    "request": {
+                                        "$ref": "CreateDatabaseRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/spanner.admin"
+                                    ]
+                                },
+                                "setIamPolicy": {
+                                    "description": "Sets the access control policy on a database resource. Replaces any\nexisting policy.\n\nAuthorization requires `spanner.databases.setIamPolicy` permission on\nresource.",
+                                    "httpMethod": "POST",
+                                    "id": "spanner.projects.instances.databases.setIamPolicy",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "REQUIRED: The Cloud Spanner resource for which the policy is being set. The format is `projects/<project ID>/instances/<instance ID>` for instance resources and `projects/<project ID>/instances/<instance ID>/databases/<database ID>` for databases resources.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+resource}:setIamPolicy",
+                                    "request": {
+                                        "$ref": "SetIamPolicyRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Policy"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/spanner.admin"
+                                    ]
+                                },
+                                "getIamPolicy": {
+                                    "description": "Gets the access control policy for a database resource. Returns an empty\npolicy if a database exists but does not have a policy set.\n\nAuthorization requires `spanner.databases.getIamPolicy` permission on\nresource.",
+                                    "httpMethod": "POST",
+                                    "id": "spanner.projects.instances.databases.getIamPolicy",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "REQUIRED: The Cloud Spanner resource for which the policy is being retrieved. The format is `projects/<project ID>/instances/<instance ID>` for instance resources and `projects/<project ID>/instances/<instance ID>/databases/<database ID>` for database resources.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+resource}:getIamPolicy",
+                                    "request": {
+                                        "$ref": "GetIamPolicyRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Policy"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/spanner.admin"
+                                    ]
                                 }
                             },
                             "resources": {
                                 "operations": {
                                     "methods": {
-                                        "cancel": {
-                                            "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
-                                            "httpMethod": "POST",
-                                            "id": "spanner.projects.instances.databases.operations.cancel",
-                                            "parameterOrder": [
-                                                "name"
-                                            ],
-                                            "parameters": {
-                                                "name": {
-                                                    "description": "The name of the operation resource to be cancelled.",
-                                                    "location": "path",
-                                                    "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/operations/[^/]+$",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/{+name}:cancel",
-                                            "response": {
-                                                "$ref": "Empty"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform",
-                                                "https://www.googleapis.com/auth/spanner.admin"
-                                            ]
-                                        },
-                                        "delete": {
-                                            "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.",
-                                            "httpMethod": "DELETE",
-                                            "id": "spanner.projects.instances.databases.operations.delete",
-                                            "parameterOrder": [
-                                                "name"
-                                            ],
-                                            "parameters": {
-                                                "name": {
-                                                    "description": "The name of the operation resource to be deleted.",
-                                                    "location": "path",
-                                                    "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/operations/[^/]+$",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/{+name}",
-                                            "response": {
-                                                "$ref": "Empty"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform",
-                                                "https://www.googleapis.com/auth/spanner.admin"
-                                            ]
-                                        },
                                         "list": {
                                             "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
                                             "httpMethod": "GET",
@@ -794,76 +679,44 @@
                                                 "https://www.googleapis.com/auth/cloud-platform",
                                                 "https://www.googleapis.com/auth/spanner.admin"
                                             ]
-                                        }
-                                    }
-                                },
-                                "sessions": {
-                                    "methods": {
-                                        "read": {
-                                            "description": "Reads rows from the database using key lookups and scans, as a\nsimple key/value style alternative to\nExecuteSql.  This method cannot be used to\nreturn a result set larger than 10 MiB; if the read matches more\ndata than that, the read fails with a `FAILED_PRECONDITION`\nerror.\n\nReads inside read-write transactions might return `ABORTED`. If\nthis occurs, the application should restart the transaction from\nthe beginning. See Transaction for more details.\n\nLarger result sets can be yielded in streaming fashion by calling\nStreamingRead instead.",
-                                            "httpMethod": "POST",
-                                            "id": "spanner.projects.instances.databases.sessions.read",
-                                            "parameterOrder": [
-                                                "session"
-                                            ],
-                                            "parameters": {
-                                                "session": {
-                                                    "description": "Required. The session in which the read should be performed.",
-                                                    "location": "path",
-                                                    "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1/{+session}:read",
-                                            "request": {
-                                                "$ref": "ReadRequest"
-                                            },
-                                            "response": {
-                                                "$ref": "ResultSet"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform",
-                                                "https://www.googleapis.com/auth/spanner.data"
-                                            ]
                                         },
-                                        "get": {
-                                            "description": "Gets a session. Returns `NOT_FOUND` if the session does not exist.\nThis is mainly useful for determining whether a session is still\nalive.",
-                                            "httpMethod": "GET",
-                                            "id": "spanner.projects.instances.databases.sessions.get",
+                                        "cancel": {
+                                            "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
+                                            "httpMethod": "POST",
+                                            "id": "spanner.projects.instances.databases.operations.cancel",
                                             "parameterOrder": [
                                                 "name"
                                             ],
                                             "parameters": {
                                                 "name": {
-                                                    "description": "Required. The name of the session to retrieve.",
+                                                    "description": "The name of the operation resource to be cancelled.",
                                                     "location": "path",
-                                                    "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$",
+                                                    "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/operations/[^/]+$",
                                                     "required": true,
                                                     "type": "string"
                                                 }
                                             },
-                                            "path": "v1/{+name}",
+                                            "path": "v1/{+name}:cancel",
                                             "response": {
-                                                "$ref": "Session"
+                                                "$ref": "Empty"
                                             },
                                             "scopes": [
                                                 "https://www.googleapis.com/auth/cloud-platform",
-                                                "https://www.googleapis.com/auth/spanner.data"
+                                                "https://www.googleapis.com/auth/spanner.admin"
                                             ]
                                         },
                                         "delete": {
-                                            "description": "Ends a session, releasing server resources associated with it.",
+                                            "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.",
                                             "httpMethod": "DELETE",
-                                            "id": "spanner.projects.instances.databases.sessions.delete",
+                                            "id": "spanner.projects.instances.databases.operations.delete",
                                             "parameterOrder": [
                                                 "name"
                                             ],
                                             "parameters": {
                                                 "name": {
-                                                    "description": "Required. The name of the session to delete.",
+                                                    "description": "The name of the operation resource to be deleted.",
                                                     "location": "path",
-                                                    "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$",
+                                                    "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/operations/[^/]+$",
                                                     "required": true,
                                                     "type": "string"
                                                 }
@@ -874,9 +727,13 @@
                                             },
                                             "scopes": [
                                                 "https://www.googleapis.com/auth/cloud-platform",
-                                                "https://www.googleapis.com/auth/spanner.data"
+                                                "https://www.googleapis.com/auth/spanner.admin"
                                             ]
-                                        },
+                                        }
+                                    }
+                                },
+                                "sessions": {
+                                    "methods": {
                                         "commit": {
                                             "description": "Commits a transaction. The request includes the mutations to be\napplied to rows in the database.\n\n`Commit` might return an `ABORTED` error. This can occur at any time;\ncommonly, the cause is conflicts with concurrent\ntransactions. However, it can also happen for a variety of other\nreasons. If `Commit` returns `ABORTED`, the caller should re-attempt\nthe transaction from the beginning, re-using the same session.",
                                             "httpMethod": "POST",
@@ -961,6 +818,31 @@
                                                 "https://www.googleapis.com/auth/spanner.data"
                                             ]
                                         },
+                                        "delete": {
+                                            "description": "Ends a session, releasing server resources associated with it.",
+                                            "httpMethod": "DELETE",
+                                            "id": "spanner.projects.instances.databases.sessions.delete",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. The name of the session to delete.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "Empty"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/spanner.data"
+                                            ]
+                                        },
                                         "executeSql": {
                                             "description": "Executes an SQL query, returning all rows in a single reply. This\nmethod cannot be used to return a result set larger than 10 MiB;\nif the query yields more data than that, the query fails with\na `FAILED_PRECONDITION` error.\n\nQueries inside read-write transactions might return `ABORTED`. If\nthis occurs, the application should restart the transaction from\nthe beginning. See Transaction for more details.\n\nLarger result sets can be fetched in streaming fashion by calling\nExecuteStreamingSql instead.",
                                             "httpMethod": "POST",
@@ -997,11 +879,6 @@
                                                 "database"
                                             ],
                                             "parameters": {
-                                                "pageToken": {
-                                                    "description": "If non-empty, `page_token` should contain a\nnext_page_token from a previous\nListSessionsResponse.",
-                                                    "location": "query",
-                                                    "type": "string"
-                                                },
                                                 "pageSize": {
                                                     "description": "Number of sessions to be returned in the response. If 0 or less, defaults\nto the server's maximum allowed page size.",
                                                     "format": "int32",
@@ -1019,6 +896,11 @@
                                                     "description": "An expression for filtering the results of the request. Filter rules are\ncase insensitive. The fields eligible for filtering are:\n\n  * labels.key where key is the name of a label\n\nSome examples of using filters are:\n\n  * labels.env:* --> The session has the label \"env\".\n  * labels.env:dev --> The session has the label \"env\" and the value of\n                       the label contains the string \"dev\".",
                                                     "location": "query",
                                                     "type": "string"
+                                                },
+                                                "pageToken": {
+                                                    "description": "If non-empty, `page_token` should contain a\nnext_page_token from a previous\nListSessionsResponse.",
+                                                    "location": "query",
+                                                    "type": "string"
                                                 }
                                             },
                                             "path": "v1/{+database}/sessions",
@@ -1113,6 +995,59 @@
                                                 "https://www.googleapis.com/auth/cloud-platform",
                                                 "https://www.googleapis.com/auth/spanner.data"
                                             ]
+                                        },
+                                        "read": {
+                                            "description": "Reads rows from the database using key lookups and scans, as a\nsimple key/value style alternative to\nExecuteSql.  This method cannot be used to\nreturn a result set larger than 10 MiB; if the read matches more\ndata than that, the read fails with a `FAILED_PRECONDITION`\nerror.\n\nReads inside read-write transactions might return `ABORTED`. If\nthis occurs, the application should restart the transaction from\nthe beginning. See Transaction for more details.\n\nLarger result sets can be yielded in streaming fashion by calling\nStreamingRead instead.",
+                                            "httpMethod": "POST",
+                                            "id": "spanner.projects.instances.databases.sessions.read",
+                                            "parameterOrder": [
+                                                "session"
+                                            ],
+                                            "parameters": {
+                                                "session": {
+                                                    "description": "Required. The session in which the read should be performed.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+session}:read",
+                                            "request": {
+                                                "$ref": "ReadRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "ResultSet"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/spanner.data"
+                                            ]
+                                        },
+                                        "get": {
+                                            "description": "Gets a session. Returns `NOT_FOUND` if the session does not exist.\nThis is mainly useful for determining whether a session is still\nalive.",
+                                            "httpMethod": "GET",
+                                            "id": "spanner.projects.instances.databases.sessions.get",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. The name of the session to retrieve.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "Session"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/spanner.data"
+                                            ]
                                         }
                                     }
                                 }
@@ -1178,6 +1113,11 @@
                                         "name"
                                     ],
                                     "parameters": {
+                                        "filter": {
+                                            "description": "The standard list filter.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
                                         "name": {
                                             "description": "The name of the operation's parent resource.",
                                             "location": "path",
@@ -1195,11 +1135,6 @@
                                             "format": "int32",
                                             "location": "query",
                                             "type": "integer"
-                                        },
-                                        "filter": {
-                                            "description": "The standard list filter.",
-                                            "location": "query",
-                                            "type": "string"
                                         }
                                     },
                                     "path": "v1/{+name}",
@@ -1239,64 +1174,88 @@
                             }
                         }
                     }
+                },
+                "instanceConfigs": {
+                    "methods": {
+                        "list": {
+                            "description": "Lists the supported instance configurations for a given project.",
+                            "httpMethod": "GET",
+                            "id": "spanner.projects.instanceConfigs.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "pageToken": {
+                                    "description": "If non-empty, `page_token` should contain a\nnext_page_token\nfrom a previous ListInstanceConfigsResponse.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Number of instance configurations to be returned in the response. If 0 or\nless, defaults to the server's maximum allowed page size.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "parent": {
+                                    "description": "Required. The name of the project for which a list of supported instance\nconfigurations is requested. Values are of the form\n`projects/<project>`.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+parent}/instanceConfigs",
+                            "response": {
+                                "$ref": "ListInstanceConfigsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/spanner.admin"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets information about a particular instance configuration.",
+                            "httpMethod": "GET",
+                            "id": "spanner.projects.instanceConfigs.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The name of the requested instance configuration. Values are of\nthe form `projects/<project>/instanceConfigs/<config>`.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/instanceConfigs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "InstanceConfig"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/spanner.admin"
+                            ]
+                        }
+                    }
                 }
             }
         }
     },
-    "revision": "20170914",
+    "revision": "20171003",
     "rootUrl": "https://spanner.googleapis.com/",
     "schemas": {
-        "RollbackRequest": {
-            "description": "The request for Rollback.",
-            "id": "RollbackRequest",
+        "StructType": {
+            "description": "`StructType` defines the fields of a STRUCT type.",
+            "id": "StructType",
             "properties": {
-                "transactionId": {
-                    "description": "Required. The transaction to roll back.",
-                    "format": "byte",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Transaction": {
-            "description": "A transaction.",
-            "id": "Transaction",
-            "properties": {
-                "id": {
-                    "description": "`id` may be used to identify the transaction in subsequent\nRead,\nExecuteSql,\nCommit, or\nRollback calls.\n\nSingle-use read-only transactions do not have IDs, because\nsingle-use transactions do not support multiple requests.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "readTimestamp": {
-                    "description": "For snapshot read-only transactions, the read timestamp chosen\nfor the transaction. Not returned by default: see\nTransactionOptions.ReadOnly.return_read_timestamp.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UpdateDatabaseDdlMetadata": {
-            "description": "Metadata type for the operation returned by\nUpdateDatabaseDdl.",
-            "id": "UpdateDatabaseDdlMetadata",
-            "properties": {
-                "statements": {
-                    "description": "For an update this list contains all the statements. For an\nindividual statement, this list contains only that statement.",
+                "fields": {
+                    "description": "The list of fields that make up this struct. Order is\nsignificant, because values of this struct type are represented as\nlists, where the order of field values matches the order of\nfields in the StructType. In turn, the order of fields\nmatches the order of columns in a read request, or the order of\nfields in the `SELECT` clause of a query.",
                     "items": {
-                        "type": "string"
+                        "$ref": "Field"
                     },
                     "type": "array"
-                },
-                "commitTimestamps": {
-                    "description": "Reports the commit timestamps of all statements that have\nsucceeded so far, where `commit_timestamps[i]` is the commit\ntimestamp for the statement `statements[i]`.",
-                    "items": {
-                        "format": "google-datetime",
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "database": {
-                    "description": "The database being modified.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1315,20 +1274,6 @@
             },
             "type": "object"
         },
-        "StructType": {
-            "description": "`StructType` defines the fields of a STRUCT type.",
-            "id": "StructType",
-            "properties": {
-                "fields": {
-                    "description": "The list of fields that make up this struct. Order is\nsignificant, because values of this struct type are represented as\nlists, where the order of field values matches the order of\nfields in the StructType. In turn, the order of fields\nmatches the order of columns in a read request, or the order of\nfields in the `SELECT` clause of a query.",
-                    "items": {
-                        "$ref": "Field"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "Field": {
             "description": "Message representing a single field of a struct.",
             "id": "Field",
@@ -1344,20 +1289,6 @@
             },
             "type": "object"
         },
-        "TestIamPermissionsRequest": {
-            "description": "Request message for `TestIamPermissions` method.",
-            "id": "TestIamPermissionsRequest",
-            "properties": {
-                "permissions": {
-                    "description": "REQUIRED: The set of permissions to check for 'resource'.\nPermissions with wildcards (such as '*', 'spanner.*', 'spanner.instances.*') are not allowed.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "ResultSetStats": {
             "description": "Additional statistics about a ResultSet or PartialResultSet.",
             "id": "ResultSetStats",
@@ -1377,6 +1308,20 @@
             },
             "type": "object"
         },
+        "TestIamPermissionsRequest": {
+            "description": "Request message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsRequest",
+            "properties": {
+                "permissions": {
+                    "description": "REQUIRED: The set of permissions to check for 'resource'.\nPermissions with wildcards (such as '*', 'spanner.*', 'spanner.instances.*') are not allowed.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "CommitResponse": {
             "description": "The response for Commit.",
             "id": "CommitResponse",
@@ -1436,6 +1381,24 @@
             "description": "Node information for nodes appearing in a QueryPlan.plan_nodes.",
             "id": "PlanNode",
             "properties": {
+                "kind": {
+                    "description": "Used to determine the type of node. May be needed for visualizing\ndifferent kinds of nodes differently. For example, If the node is a\nSCALAR node, it will have a condensed representation\nwhich can be used to directly embed a description of the node in its\nparent.",
+                    "enum": [
+                        "KIND_UNSPECIFIED",
+                        "RELATIONAL",
+                        "SCALAR"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified.",
+                        "Denotes a Relational operator node in the expression tree. Relational\noperators represent iterative processing of rows during query execution.\nFor example, a `TableScan` operation that reads rows from a table.",
+                        "Denotes a Scalar node in the expression tree. Scalar nodes represent\nnon-iterable entities in the query plan. For example, constants or\narithmetic operators appearing inside predicate expressions or references\nto column names."
+                    ],
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "The display name for the node.",
+                    "type": "string"
+                },
                 "childLinks": {
                     "description": "List of child node `index`es and their relationship to this parent.",
                     "items": {
@@ -1467,24 +1430,6 @@
                     "description": "The `PlanNode`'s index in node list.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "kind": {
-                    "description": "Used to determine the type of node. May be needed for visualizing\ndifferent kinds of nodes differently. For example, If the node is a\nSCALAR node, it will have a condensed representation\nwhich can be used to directly embed a description of the node in its\nparent.",
-                    "enum": [
-                        "KIND_UNSPECIFIED",
-                        "RELATIONAL",
-                        "SCALAR"
-                    ],
-                    "enumDescriptions": [
-                        "Not specified.",
-                        "Denotes a Relational operator node in the expression tree. Relational\noperators represent iterative processing of rows during query execution.\nFor example, a `TableScan` operation that reads rows from a table.",
-                        "Denotes a Scalar node in the expression tree. Scalar nodes represent\nnon-iterable entities in the query plan. For example, constants or\narithmetic operators appearing inside predicate expressions or references\nto column names."
-                    ],
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "The display name for the node.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1519,6 +1464,10 @@
             "description": "Metadata associated with a parent-child relationship appearing in a\nPlanNode.",
             "id": "ChildLink",
             "properties": {
+                "type": {
+                    "description": "The type of the link. For example, in Hash Joins this could be used to\ndistinguish between the build child and the probe child, or in the case\nof the child being an output variable, to represent the tag associated\nwith the output variable.",
+                    "type": "string"
+                },
                 "childIndex": {
                     "description": "The node to which the link points.",
                     "format": "int32",
@@ -1527,10 +1476,6 @@
                 "variable": {
                     "description": "Only present if the child node is SCALAR and corresponds\nto an output variable of the parent node. The field carries the name of\nthe output variable.\nFor example, a `TableScan` operator that reads rows from a table will\nhave child links to the `SCALAR` nodes representing the output variables\ncreated for each column that is read by the operator. The corresponding\n`variable` fields will be set to the variable names assigned to the\ncolumns.",
                     "type": "string"
-                },
-                "type": {
-                    "description": "The type of the link. For example, in Hash Joins this could be used to\ndistinguish between the build child and the probe child, or in the case\nof the child being an output variable, to represent the tag associated\nwith the output variable.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1539,42 +1484,13 @@
             "description": "Arguments to delete operations.",
             "id": "Delete",
             "properties": {
-                "keySet": {
-                    "$ref": "KeySet",
-                    "description": "Required. The primary keys of the rows within table to delete."
-                },
                 "table": {
                     "description": "Required. The table whose rows will be deleted.",
                     "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListInstanceConfigsResponse": {
-            "description": "The response for ListInstanceConfigs.",
-            "id": "ListInstanceConfigsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "`next_page_token` can be sent in a subsequent\nListInstanceConfigs call to\nfetch more of the matching instance configurations.",
-                    "type": "string"
                 },
-                "instanceConfigs": {
-                    "description": "The list of requested instance configurations.",
-                    "items": {
-                        "$ref": "InstanceConfig"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "BeginTransactionRequest": {
-            "description": "The request for BeginTransaction.",
-            "id": "BeginTransactionRequest",
-            "properties": {
-                "options": {
-                    "$ref": "TransactionOptions",
-                    "description": "Required. Options for the new transaction."
+                "keySet": {
+                    "$ref": "KeySet",
+                    "description": "Required. The primary keys of the rows within table to delete."
                 }
             },
             "type": "object"
@@ -1602,6 +1518,35 @@
             },
             "type": "object"
         },
+        "BeginTransactionRequest": {
+            "description": "The request for BeginTransaction.",
+            "id": "BeginTransactionRequest",
+            "properties": {
+                "options": {
+                    "$ref": "TransactionOptions",
+                    "description": "Required. Options for the new transaction."
+                }
+            },
+            "type": "object"
+        },
+        "ListInstanceConfigsResponse": {
+            "description": "The response for ListInstanceConfigs.",
+            "id": "ListInstanceConfigsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "`next_page_token` can be sent in a subsequent\nListInstanceConfigs call to\nfetch more of the matching instance configurations.",
+                    "type": "string"
+                },
+                "instanceConfigs": {
+                    "description": "The list of requested instance configurations.",
+                    "items": {
+                        "$ref": "InstanceConfig"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "TestIamPermissionsResponse": {
             "description": "Response message for `TestIamPermissions` method.",
             "id": "TestIamPermissionsResponse",
@@ -1637,16 +1582,16 @@
             "description": "The response for ListSessions.",
             "id": "ListSessionsResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "`next_page_token` can be sent in a subsequent\nListSessions call to fetch more of the matching\nsessions.",
-                    "type": "string"
-                },
                 "sessions": {
                     "description": "The list of requested sessions.",
                     "items": {
                         "$ref": "Session"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "`next_page_token` can be sent in a subsequent\nListSessions call to fetch more of the matching\nsessions.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1701,20 +1646,6 @@
             "description": "KeyRange represents a range of rows in a table or index.\n\nA range has a start key and an end key. These keys can be open or\nclosed, indicating if the range includes rows with that key.\n\nKeys are represented by lists, where the ith value in the list\ncorresponds to the ith component of the table or index primary key.\nIndividual values are encoded as described here.\n\nFor example, consider the following table definition:\n\n    CREATE TABLE UserEvents (\n      UserName STRING(MAX),\n      EventDate STRING(10)\n    ) PRIMARY KEY(UserName, EventDate);\n\nThe following keys name rows in this table:\n\n    \"Bob\", \"2014-09-23\"\n\nSince the `UserEvents` table's `PRIMARY KEY` clause names two\ncolumns, each `UserEvents` key has two elements; the first is the\n`UserName`, and the second is the `EventDate`.\n\nKey ranges with multiple components are interpreted\nlexicographically by component using the table or index key's declared\nsort order. For example, the following range returns all events for\nuser `\"Bob\"` that occurred in the year 2015:\n\n    \"start_closed\": [\"Bob\", \"2015-01-01\"]\n    \"end_closed\": [\"Bob\", \"2015-12-31\"]\n\nStart and end keys can omit trailing key components. This affects the\ninclusion and exclusion of rows that exactly match the provided key\ncomponents: if the key is closed, then rows that exactly match the\nprovided components are included; if the key is open, then rows\nthat exactly match are not included.\n\nFor example, the following range includes all events for `\"Bob\"` that\noccurred during and after the year 2000:\n\n    \"start_closed\": [\"Bob\", \"2000-01-01\"]\n    \"end_closed\": [\"Bob\"]\n\nThe next example retrieves all events for `\"Bob\"`:\n\n    \"start_closed\": [\"Bob\"]\n    \"end_closed\": [\"Bob\"]\n\nTo retrieve events before the year 2000:\n\n    \"start_closed\": [\"Bob\"]\n    \"end_open\": [\"Bob\", \"2000-01-01\"]\n\nThe following range includes all rows in the table:\n\n    \"start_closed\": []\n    \"end_closed\": []\n\nThis range returns all users whose `UserName` begins with any\ncharacter from A to C:\n\n    \"start_closed\": [\"A\"]\n    \"end_open\": [\"D\"]\n\nThis range returns all users whose `UserName` begins with B:\n\n    \"start_closed\": [\"B\"]\n    \"end_open\": [\"C\"]\n\nKey ranges honor column sort order. For example, suppose a table is\ndefined as follows:\n\n    CREATE TABLE DescendingSortedTable {\n      Key INT64,\n      ...\n    ) PRIMARY KEY(Key DESC);\n\nThe following range retrieves all rows with key values between 1\nand 100 inclusive:\n\n    \"start_closed\": [\"100\"]\n    \"end_closed\": [\"1\"]\n\nNote that 100 is passed as the start, and 1 is passed as the end,\nbecause `Key` is a descending column in the schema.",
             "id": "KeyRange",
             "properties": {
-                "startClosed": {
-                    "description": "If the start is closed, then the range includes all rows whose\nfirst `len(start_closed)` key columns exactly match `start_closed`.",
-                    "items": {
-                        "type": "any"
-                    },
-                    "type": "array"
-                },
-                "startOpen": {
-                    "description": "If the start is open, then the range excludes rows whose first\n`len(start_open)` key columns exactly match `start_open`.",
-                    "items": {
-                        "type": "any"
-                    },
-                    "type": "array"
-                },
                 "endOpen": {
                     "description": "If the end is open, then the range excludes rows whose first\n`len(end_open)` key columns exactly match `end_open`.",
                     "items": {
@@ -1728,6 +1659,20 @@
                         "type": "any"
                     },
                     "type": "array"
+                },
+                "startClosed": {
+                    "description": "If the start is closed, then the range includes all rows whose\nfirst `len(start_closed)` key columns exactly match `start_closed`.",
+                    "items": {
+                        "type": "any"
+                    },
+                    "type": "array"
+                },
+                "startOpen": {
+                    "description": "If the start is open, then the range excludes rows whose first\n`len(start_open)` key columns exactly match `start_open`.",
+                    "items": {
+                        "type": "any"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -1736,10 +1681,6 @@
             "description": "Condensed representation of a node and its subtree. Only present for\n`SCALAR` PlanNode(s).",
             "id": "ShortRepresentation",
             "properties": {
-                "description": {
-                    "description": "A string representation of the expression subtree rooted at this node.",
-                    "type": "string"
-                },
                 "subqueries": {
                     "additionalProperties": {
                         "format": "int32",
@@ -1747,6 +1688,10 @@
                     },
                     "description": "A mapping of (subquery variable name) -> (subquery node id) for cases\nwhere the `description` string of this node references a `SCALAR`\nsubquery contained in the expression subtree rooted at this node. The\nreferenced `SCALAR` subquery may not necessarily be a direct child of\nthis node.",
                     "type": "object"
+                },
+                "description": {
+                    "description": "A string representation of the expression subtree rooted at this node.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1840,6 +1785,15 @@
             "description": "Message type to initiate a read-only transaction.",
             "id": "ReadOnly",
             "properties": {
+                "returnReadTimestamp": {
+                    "description": "If true, the Cloud Spanner-selected read timestamp is included in\nthe Transaction message that describes the transaction.",
+                    "type": "boolean"
+                },
+                "exactStaleness": {
+                    "description": "Executes all reads at a timestamp that is `exact_staleness`\nold. The timestamp is chosen soon after the read is started.\n\nGuarantees that all writes that have committed more than the\nspecified number of seconds ago are visible. Because Cloud Spanner\nchooses the exact timestamp, this mode works even if the client's\nlocal clock is substantially skewed from Cloud Spanner commit\ntimestamps.\n\nUseful for reading at nearby replicas without the distributed\ntimestamp negotiation overhead of `max_staleness`.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
                 "strong": {
                     "description": "Read at a timestamp where all previously committed transactions\nare visible.",
                     "type": "boolean"
@@ -1858,15 +1812,6 @@
                     "description": "Executes all reads at the given timestamp. Unlike other modes,\nreads at a specific timestamp are repeatable; the same read at\nthe same timestamp always returns the same data. If the\ntimestamp is in the future, the read will block until the\nspecified timestamp, modulo the read's deadline.\n\nUseful for large scale consistent reads such as mapreduces, or\nfor coordinating many reads against a consistent snapshot of the\ndata.",
                     "format": "google-datetime",
                     "type": "string"
-                },
-                "returnReadTimestamp": {
-                    "description": "If true, the Cloud Spanner-selected read timestamp is included in\nthe Transaction message that describes the transaction.",
-                    "type": "boolean"
-                },
-                "exactStaleness": {
-                    "description": "Executes all reads at a timestamp that is `exact_staleness`\nold. The timestamp is chosen soon after the read is started.\n\nGuarantees that all writes that have committed more than the\nspecified number of seconds ago are visible. Because Cloud Spanner\nchooses the exact timestamp, this mode works even if the client's\nlocal clock is substantially skewed from Cloud Spanner commit\ntimestamps.\n\nUseful for reading at nearby replicas without the distributed\ntimestamp negotiation overhead of `max_staleness`.",
-                    "format": "google-duration",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1875,6 +1820,26 @@
             "description": "The request for ExecuteSql and\nExecuteStreamingSql.",
             "id": "ExecuteSqlRequest",
             "properties": {
+                "transaction": {
+                    "$ref": "TransactionSelector",
+                    "description": "The transaction to use. If none is provided, the default is a\ntemporary read-only transaction with strong concurrency."
+                },
+                "resumeToken": {
+                    "description": "If this request is resuming a previously interrupted SQL query\nexecution, `resume_token` should be copied from the last\nPartialResultSet yielded before the interruption. Doing this\nenables the new SQL query execution to resume where the last one left\noff. The rest of the request parameters must exactly match the\nrequest that yielded this token.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "paramTypes": {
+                    "additionalProperties": {
+                        "$ref": "Type"
+                    },
+                    "description": "It is not always possible for Cloud Spanner to infer the right SQL type\nfrom a JSON value.  For example, values of type `BYTES` and values\nof type `STRING` both appear in params as JSON strings.\n\nIn these cases, `param_types` can be used to specify the exact\nSQL type for some or all of the SQL query parameters. See the\ndefinition of Type for more information\nabout SQL types.",
+                    "type": "object"
+                },
+                "sql": {
+                    "description": "Required. The SQL query string.",
+                    "type": "string"
+                },
                 "params": {
                     "additionalProperties": {
                         "description": "Properties of the object.",
@@ -1896,26 +1861,6 @@
                         "This mode returns both the query plan and the execution statistics along\nwith the result rows."
                     ],
                     "type": "string"
-                },
-                "transaction": {
-                    "$ref": "TransactionSelector",
-                    "description": "The transaction to use. If none is provided, the default is a\ntemporary read-only transaction with strong concurrency."
-                },
-                "resumeToken": {
-                    "description": "If this request is resuming a previously interrupted SQL query\nexecution, `resume_token` should be copied from the last\nPartialResultSet yielded before the interruption. Doing this\nenables the new SQL query execution to resume where the last one left\noff. The rest of the request parameters must exactly match the\nrequest that yielded this token.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "paramTypes": {
-                    "additionalProperties": {
-                        "$ref": "Type"
-                    },
-                    "description": "It is not always possible for Cloud Spanner to infer the right SQL type\nfrom a JSON value.  For example, values of type `BYTES` and values\nof type `STRING` both appear in params as JSON strings.\n\nIn these cases, `param_types` can be used to specify the exact\nSQL type for some or all of the SQL query parameters. See the\ndefinition of Type for more information\nabout SQL types.",
-                    "type": "object"
-                },
-                "sql": {
-                    "description": "Required. The SQL query string.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1924,6 +1869,13 @@
             "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
             "id": "Policy",
             "properties": {
+                "bindings": {
+                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
+                    "items": {
+                        "$ref": "Binding"
+                    },
+                    "type": "array"
+                },
                 "etag": {
                     "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
                     "format": "byte",
@@ -1933,13 +1885,6 @@
                     "description": "Version of the `Policy`. The default version is 0.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "bindings": {
-                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
-                    "items": {
-                        "$ref": "Binding"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -1948,15 +1893,6 @@
             "description": "The request for Read and\nStreamingRead.",
             "id": "ReadRequest",
             "properties": {
-                "limit": {
-                    "description": "If greater than zero, only the first `limit` rows are yielded. If `limit`\nis zero, the default is no limit.\nA limit cannot be specified if partition_token is set.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "index": {
-                    "description": "If non-empty, the name of an index on table. This index is\nused instead of the table primary key when interpreting key_set\nand sorting result rows. See key_set for further information.",
-                    "type": "string"
-                },
                 "keySet": {
                     "$ref": "KeySet",
                     "description": "Required. `key_set` identifies the rows to be yielded. `key_set` names the\nprimary keys of the rows in table to be yielded, unless index\nis present. If index is present, then key_set instead names\nindex keys in index.\n\nRows are yielded in table primary key order (if index is empty)\nor index key order (if index is non-empty).\n\nIt is not an error for the `key_set` to name rows that do not\nexist in the database. Read yields nothing for nonexistent rows."
@@ -1980,6 +1916,15 @@
                 "table": {
                     "description": "Required. The name of the table in the database to be read.",
                     "type": "string"
+                },
+                "limit": {
+                    "description": "If greater than zero, only the first `limit` rows are yielded. If `limit`\nis zero, the default is no limit.\nA limit cannot be specified if partition_token is set.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "index": {
+                    "description": "If non-empty, the name of an index on table. This index is\nused instead of the table primary key when interpreting key_set\nand sorting result rows. See key_set for further information.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1988,10 +1933,6 @@
             "description": "Arguments to insert, update, insert_or_update, and\nreplace operations.",
             "id": "Write",
             "properties": {
-                "table": {
-                    "description": "Required. The table whose rows will be written.",
-                    "type": "string"
-                },
                 "columns": {
                     "description": "The names of the columns in table to be written.\n\nThe list of columns must contain enough columns to allow\nCloud Spanner to derive values for all primary key columns in the\nrow(s) to be modified.",
                     "items": {
@@ -2008,6 +1949,10 @@
                         "type": "array"
                     },
                     "type": "array"
+                },
+                "table": {
+                    "description": "Required. The table whose rows will be written.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2053,27 +1998,13 @@
             },
             "type": "object"
         },
-        "ResultSet": {
-            "description": "Results from Read or\nExecuteSql.",
-            "id": "ResultSet",
+        "CreateSessionRequest": {
+            "description": "The request for CreateSession.",
+            "id": "CreateSessionRequest",
             "properties": {
-                "rows": {
-                    "description": "Each element in `rows` is a row whose format is defined by\nmetadata.row_type. The ith element\nin each row matches the ith field in\nmetadata.row_type. Elements are\nencoded based on type as described\nhere.",
-                    "items": {
-                        "items": {
-                            "type": "any"
-                        },
-                        "type": "array"
-                    },
-                    "type": "array"
-                },
-                "metadata": {
-                    "$ref": "ResultSetMetadata",
-                    "description": "Metadata about the result set, such as row type information."
-                },
-                "stats": {
-                    "$ref": "ResultSetStats",
-                    "description": "Query plan and execution statistics for the query that produced this\nresult set. These can be requested by setting\nExecuteSqlRequest.query_mode."
+                "session": {
+                    "$ref": "Session",
+                    "description": "The session to create."
                 }
             },
             "type": "object"
@@ -2105,31 +2036,27 @@
             },
             "type": "object"
         },
-        "CreateSessionRequest": {
-            "description": "The request for CreateSession.",
-            "id": "CreateSessionRequest",
+        "ResultSet": {
+            "description": "Results from Read or\nExecuteSql.",
+            "id": "ResultSet",
             "properties": {
-                "session": {
-                    "$ref": "Session",
-                    "description": "The session to create."
-                }
-            },
-            "type": "object"
-        },
-        "UpdateDatabaseDdlRequest": {
-            "description": "Enqueues the given DDL statements to be applied, in order but not\nnecessarily all at once, to the database schema at some point (or\npoints) in the future. The server checks that the statements\nare executable (syntactically valid, name tables that exist, etc.)\nbefore enqueueing them, but they may still fail upon\nlater execution (e.g., if a statement from another batch of\nstatements is applied first and it conflicts in some way, or if\nthere is some data-related problem like a `NULL` value in a column to\nwhich `NOT NULL` would be added). If a statement fails, all\nsubsequent statements in the batch are automatically cancelled.\n\nEach batch of statements is assigned a name which can be used with\nthe Operations API to monitor\nprogress. See the\noperation_id field for more\ndetails.",
-            "id": "UpdateDatabaseDdlRequest",
-            "properties": {
-                "statements": {
-                    "description": "DDL statements to be applied to the database.",
+                "metadata": {
+                    "$ref": "ResultSetMetadata",
+                    "description": "Metadata about the result set, such as row type information."
+                },
+                "stats": {
+                    "$ref": "ResultSetStats",
+                    "description": "Query plan and execution statistics for the query that produced this\nresult set. These can be requested by setting\nExecuteSqlRequest.query_mode."
+                },
+                "rows": {
+                    "description": "Each element in `rows` is a row whose format is defined by\nmetadata.row_type. The ith element\nin each row matches the ith field in\nmetadata.row_type. Elements are\nencoded based on type as described\nhere.",
                     "items": {
-                        "type": "string"
+                        "items": {
+                            "type": "any"
+                        },
+                        "type": "array"
                     },
                     "type": "array"
-                },
-                "operationId": {
-                    "description": "If empty, the new update request is assigned an\nautomatically-generated operation ID. Otherwise, `operation_id`\nis used to construct the name of the resulting\nOperation.\n\nSpecifying an explicit operation ID simplifies determining\nwhether the statements were executed in the event that the\nUpdateDatabaseDdl call is replayed,\nor the return value is otherwise lost: the database and\n`operation_id` fields can be combined to form the\nname of the resulting\nlongrunning.Operation: `<database>/operations/<operation_id>`.\n\n`operation_id` should be unique within the database, and must be\na valid identifier: `a-z*`. Note that\nautomatically-generated operation IDs always begin with an\nunderscore. If the named operation already exists,\nUpdateDatabaseDdl returns\n`ALREADY_EXISTS`.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2152,10 +2079,37 @@
             },
             "type": "object"
         },
+        "UpdateDatabaseDdlRequest": {
+            "description": "Enqueues the given DDL statements to be applied, in order but not\nnecessarily all at once, to the database schema at some point (or\npoints) in the future. The server checks that the statements\nare executable (syntactically valid, name tables that exist, etc.)\nbefore enqueueing them, but they may still fail upon\nlater execution (e.g., if a statement from another batch of\nstatements is applied first and it conflicts in some way, or if\nthere is some data-related problem like a `NULL` value in a column to\nwhich `NOT NULL` would be added). If a statement fails, all\nsubsequent statements in the batch are automatically cancelled.\n\nEach batch of statements is assigned a name which can be used with\nthe Operations API to monitor\nprogress. See the\noperation_id field for more\ndetails.",
+            "id": "UpdateDatabaseDdlRequest",
+            "properties": {
+                "statements": {
+                    "description": "DDL statements to be applied to the database.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "operationId": {
+                    "description": "If empty, the new update request is assigned an\nautomatically-generated operation ID. Otherwise, `operation_id`\nis used to construct the name of the resulting\nOperation.\n\nSpecifying an explicit operation ID simplifies determining\nwhether the statements were executed in the event that the\nUpdateDatabaseDdl call is replayed,\nor the return value is otherwise lost: the database and\n`operation_id` fields can be combined to form the\nname of the resulting\nlongrunning.Operation: `<database>/operations/<operation_id>`.\n\n`operation_id` should be unique within the database, and must be\na valid identifier: `a-z*`. Note that\nautomatically-generated operation IDs always begin with an\nunderscore. If the named operation already exists,\nUpdateDatabaseDdl returns\n`ALREADY_EXISTS`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "PartialResultSet": {
             "description": "Partial results from a streaming read or SQL query. Streaming reads and\nSQL queries better tolerate large result sets, large rows, and large\nvalues, but are a little trickier to consume.",
             "id": "PartialResultSet",
             "properties": {
+                "resumeToken": {
+                    "description": "Streaming calls might be interrupted for a variety of reasons, such\nas TCP connection loss. If this occurs, the stream of results can\nbe resumed by re-sending the original request and including\n`resume_token`. Note that executing any other transaction in the\nsame session invalidates the token.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "stats": {
+                    "$ref": "ResultSetStats",
+                    "description": "Query plan and execution statistics for the query that produced this\nstreaming result set. These can be requested by setting\nExecuteSqlRequest.query_mode and are sent\nonly once with the last response in the stream."
+                },
                 "chunkedValue": {
                     "description": "If true, then the final value in values is chunked, and must\nbe combined with more values from subsequent `PartialResultSet`s\nto obtain a complete field value.",
                     "type": "boolean"
@@ -2170,15 +2124,6 @@
                         "type": "any"
                     },
                     "type": "array"
-                },
-                "resumeToken": {
-                    "description": "Streaming calls might be interrupted for a variety of reasons, such\nas TCP connection loss. If this occurs, the stream of results can\nbe resumed by re-sending the original request and including\n`resume_token`. Note that executing any other transaction in the\nsame session invalidates the token.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "stats": {
-                    "$ref": "ResultSetStats",
-                    "description": "Query plan and execution statistics for the query that produced this\nstreaming result set. These can be requested by setting\nExecuteSqlRequest.query_mode and are sent\nonly once with the last response in the stream."
                 }
             },
             "type": "object"
@@ -2213,16 +2158,16 @@
             "description": "The response message for Operations.ListOperations.",
             "id": "ListOperationsResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
-                },
                 "operations": {
                     "description": "A list of operations that matches the specified filter in the request.",
                     "items": {
                         "$ref": "Operation"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2262,14 +2207,38 @@
             },
             "type": "object"
         },
+        "KeySet": {
+            "description": "`KeySet` defines a collection of Cloud Spanner keys and/or key ranges. All\nthe keys are expected to be in the same table or index. The keys need\nnot be sorted in any particular way.\n\nIf the same key is specified multiple times in the set (for example\nif two ranges, two keys, or a key and a range overlap), Cloud Spanner\nbehaves as if the key were only specified once.",
+            "id": "KeySet",
+            "properties": {
+                "keys": {
+                    "description": "A list of specific keys. Entries in `keys` should have exactly as\nmany elements as there are columns in the primary or index key\nwith which this `KeySet` is used.  Individual key values are\nencoded as described here.",
+                    "items": {
+                        "items": {
+                            "type": "any"
+                        },
+                        "type": "array"
+                    },
+                    "type": "array"
+                },
+                "all": {
+                    "description": "For convenience `all` can be set to `true` to indicate that this\n`KeySet` matches all keys in the table or index. Note that any keys\nspecified in `keys` or `ranges` are only yielded once.",
+                    "type": "boolean"
+                },
+                "ranges": {
+                    "description": "A list of key ranges. See KeyRange for more information about\nkey range specifications.",
+                    "items": {
+                        "$ref": "KeyRange"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "Mutation": {
             "description": "A modification to one or more Cloud Spanner rows.  Mutations can be\napplied to a Cloud Spanner database by sending them in a\nCommit call.",
             "id": "Mutation",
             "properties": {
-                "delete": {
-                    "$ref": "Delete",
-                    "description": "Delete rows from a table. Succeeds whether or not the named\nrows were present."
-                },
                 "insert": {
                     "$ref": "Write",
                     "description": "Insert new rows in a table. If any of the rows already exist,\nthe write or transaction fails with error `ALREADY_EXISTS`."
@@ -2285,34 +2254,10 @@
                 "replace": {
                     "$ref": "Write",
                     "description": "Like insert, except that if the row already exists, it is\ndeleted, and the column values provided are inserted\ninstead. Unlike insert_or_update, this means any values not\nexplicitly written become `NULL`."
-                }
-            },
-            "type": "object"
-        },
-        "KeySet": {
-            "description": "`KeySet` defines a collection of Cloud Spanner keys and/or key ranges. All\nthe keys are expected to be in the same table or index. The keys need\nnot be sorted in any particular way.\n\nIf the same key is specified multiple times in the set (for example\nif two ranges, two keys, or a key and a range overlap), Cloud Spanner\nbehaves as if the key were only specified once.",
-            "id": "KeySet",
-            "properties": {
-                "ranges": {
-                    "description": "A list of key ranges. See KeyRange for more information about\nkey range specifications.",
-                    "items": {
-                        "$ref": "KeyRange"
-                    },
-                    "type": "array"
                 },
-                "keys": {
-                    "description": "A list of specific keys. Entries in `keys` should have exactly as\nmany elements as there are columns in the primary or index key\nwith which this `KeySet` is used.  Individual key values are\nencoded as described here.",
-                    "items": {
-                        "items": {
-                            "type": "any"
-                        },
-                        "type": "array"
-                    },
-                    "type": "array"
-                },
-                "all": {
-                    "description": "For convenience `all` can be set to `true` to indicate that this\n`KeySet` matches all keys in the table or index. Note that any keys\nspecified in `keys` or `ranges` are only yielded once.",
-                    "type": "boolean"
+                "delete": {
+                    "$ref": "Delete",
+                    "description": "Delete rows from a table. Succeeds whether or not the named\nrows were present."
                 }
             },
             "type": "object"
@@ -2356,13 +2301,47 @@
             },
             "type": "object"
         },
-        "SetIamPolicyRequest": {
-            "description": "Request message for `SetIamPolicy` method.",
-            "id": "SetIamPolicyRequest",
+        "Instance": {
+            "description": "An isolated set of Cloud Spanner resources on which databases can be hosted.",
+            "id": "Instance",
             "properties": {
-                "policy": {
-                    "$ref": "Policy",
-                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
+                "displayName": {
+                    "description": "Required. The descriptive name for this instance as it appears in UIs.\nMust be unique per project and between 4 and 30 characters in length.",
+                    "type": "string"
+                },
+                "nodeCount": {
+                    "description": "Required. The number of nodes allocated to this instance. This may be zero\nin API responses for instances that are not yet in state `READY`.\n\nEach Spanner node can provide up to 10,000 QPS of reads or 2000 QPS of\nwrites (writing single rows at 1KB data per row), and 2 TiB storage.\n\nFor optimal performance, we recommend provisioning enough nodes to keep\noverall CPU utilization under 75%.\n\nA minimum of 3 nodes is recommended for production environments.  This\nminimum is required for SLAs to apply to your instance.\n\nNote that Cloud Spanner performance is highly dependent on workload, schema\ndesign, and dataset characteristics. The performance numbers above are\nestimates, and assume [best practices](https://cloud.google.com/spanner/docs/bulk-loading)\nare followed.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Cloud Labels are a flexible and lightweight mechanism for organizing cloud\nresources into groups that reflect a customer's organizational needs and\ndeployment strategies. Cloud Labels can be used to filter collections of\nresources. They can be used to control how resource metrics are aggregated.\nAnd they can be used as arguments to policy management rules (e.g. route,\nfirewall, load balancing, etc.).\n\n * Label keys must be between 1 and 63 characters long and must conform to\n   the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.\n * Label values must be between 0 and 63 characters long and must conform\n   to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.\n * No more than 64 labels can be associated with a given resource.\n\nSee https://goo.gl/xmQnxf for more information on and examples of labels.\n\nIf you plan to use labels in your own code, please note that additional\ncharacters may be allowed in the future. And so you are advised to use an\ninternal label representation, such as JSON, which doesn't rely upon\nspecific characters being disallowed.  For example, representing labels\nas the string:  name + \"_\" + value  would prove problematic if we were to\nallow \"_\" in a future release.",
+                    "type": "object"
+                },
+                "config": {
+                    "description": "Required. The name of the instance's configuration. Values are of the form\n`projects/<project>/instanceConfigs/<configuration>`. See\nalso InstanceConfig and\nListInstanceConfigs.",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Output only. The current instance state. For\nCreateInstance, the state must be\neither omitted or set to `CREATING`. For\nUpdateInstance, the state must be\neither omitted or set to `READY`.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "CREATING",
+                        "READY"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified.",
+                        "The instance is still being created. Resources may not be\navailable yet, and operations such as database creation may not\nwork.",
+                        "The instance is fully created and ready to do work such as\ncreating databases."
+                    ],
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Required. A unique identifier for the instance, which cannot be changed\nafter the instance is created. Values are of the form\n`projects/<project>/instances/a-z*[a-z0-9]`. The final\nsegment of the name must be between 6 and 30 characters in length.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2385,47 +2364,68 @@
             },
             "type": "object"
         },
-        "Instance": {
-            "description": "An isolated set of Cloud Spanner resources on which databases can be hosted.",
-            "id": "Instance",
+        "SetIamPolicyRequest": {
+            "description": "Request message for `SetIamPolicy` method.",
+            "id": "SetIamPolicyRequest",
             "properties": {
-                "config": {
-                    "description": "Required. The name of the instance's configuration. Values are of the form\n`projects/<project>/instanceConfigs/<configuration>`. See\nalso InstanceConfig and\nListInstanceConfigs.",
+                "policy": {
+                    "$ref": "Policy",
+                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
+                }
+            },
+            "type": "object"
+        },
+        "RollbackRequest": {
+            "description": "The request for Rollback.",
+            "id": "RollbackRequest",
+            "properties": {
+                "transactionId": {
+                    "description": "Required. The transaction to roll back.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Transaction": {
+            "description": "A transaction.",
+            "id": "Transaction",
+            "properties": {
+                "id": {
+                    "description": "`id` may be used to identify the transaction in subsequent\nRead,\nExecuteSql,\nCommit, or\nRollback calls.\n\nSingle-use read-only transactions do not have IDs, because\nsingle-use transactions do not support multiple requests.",
+                    "format": "byte",
                     "type": "string"
                 },
-                "state": {
-                    "description": "Output only. The current instance state. For\nCreateInstance, the state must be\neither omitted or set to `CREATING`. For\nUpdateInstance, the state must be\neither omitted or set to `READY`.",
-                    "enum": [
-                        "STATE_UNSPECIFIED",
-                        "CREATING",
-                        "READY"
-                    ],
-                    "enumDescriptions": [
-                        "Not specified.",
-                        "The instance is still being created. Resources may not be\navailable yet, and operations such as database creation may not\nwork.",
-                        "The instance is fully created and ready to do work such as\ncreating databases."
-                    ],
+                "readTimestamp": {
+                    "description": "For snapshot read-only transactions, the read timestamp chosen\nfor the transaction. Not returned by default: see\nTransactionOptions.ReadOnly.return_read_timestamp.",
+                    "format": "google-datetime",
                     "type": "string"
-                },
-                "name": {
-                    "description": "Required. A unique identifier for the instance, which cannot be changed\nafter the instance is created. Values are of the form\n`projects/<project>/instances/a-z*[a-z0-9]`. The final\nsegment of the name must be between 6 and 30 characters in length.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "Required. The descriptive name for this instance as it appears in UIs.\nMust be unique per project and between 4 and 30 characters in length.",
-                    "type": "string"
-                },
-                "nodeCount": {
-                    "description": "Required. The number of nodes allocated to this instance. This may be zero\nin API responses for instances that are not yet in state `READY`.\n\nEach Spanner node can provide up to 10,000 QPS of reads or 2000 QPS of\nwrites (writing single rows at 1KB data per row), and 2 TiB storage.\n\nFor optimal performance, we recommend provisioning enough nodes to keep\noverall CPU utilization under 75%.\n\nA minimum of 3 nodes is recommended for production environments.  This\nminimum is required for SLAs to apply to your instance.\n\nNote that Cloud Spanner performance is highly dependent on workload, schema\ndesign, and dataset characteristics. The performance numbers above are\nestimates, and assume [best practices](https://cloud.google.com/spanner/docs/bulk-loading)\nare followed.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "labels": {
-                    "additionalProperties": {
+                }
+            },
+            "type": "object"
+        },
+        "UpdateDatabaseDdlMetadata": {
+            "description": "Metadata type for the operation returned by\nUpdateDatabaseDdl.",
+            "id": "UpdateDatabaseDdlMetadata",
+            "properties": {
+                "commitTimestamps": {
+                    "description": "Reports the commit timestamps of all statements that have\nsucceeded so far, where `commit_timestamps[i]` is the commit\ntimestamp for the statement `statements[i]`.",
+                    "items": {
+                        "format": "google-datetime",
                         "type": "string"
                     },
-                    "description": "Cloud Labels are a flexible and lightweight mechanism for organizing cloud\nresources into groups that reflect a customer's organizational needs and\ndeployment strategies. Cloud Labels can be used to filter collections of\nresources. They can be used to control how resource metrics are aggregated.\nAnd they can be used as arguments to policy management rules (e.g. route,\nfirewall, load balancing, etc.).\n\n * Label keys must be between 1 and 63 characters long and must conform to\n   the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.\n * Label values must be between 0 and 63 characters long and must conform\n   to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.\n * No more than 64 labels can be associated with a given resource.\n\nSee https://goo.gl/xmQnxf for more information on and examples of labels.\n\nIf you plan to use labels in your own code, please note that additional\ncharacters may be allowed in the future. And so you are advised to use an\ninternal label representation, such as JSON, which doesn't rely upon\nspecific characters being disallowed.  For example, representing labels\nas the string:  name + \"_\" + value  would prove problematic if we were to\nallow \"_\" in a future release.",
-                    "type": "object"
+                    "type": "array"
+                },
+                "database": {
+                    "description": "The database being modified.",
+                    "type": "string"
+                },
+                "statements": {
+                    "description": "For an update this list contains all the statements. For an\nindividual statement, this list contains only that statement.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/speech__v1.json b/discovery/googleapis/speech__v1.json
index efd9b9c..9d36141 100644
--- a/discovery/googleapis/speech__v1.json
+++ b/discovery/googleapis/speech__v1.json
@@ -25,16 +25,27 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
         "fields": {
             "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -99,23 +110,63 @@
             "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
         }
     },
     "protocol": "rest",
     "resources": {
         "operations": {
             "methods": {
+                "cancel": {
+                    "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
+                    "httpMethod": "POST",
+                    "id": "speech.operations.cancel",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The name of the operation resource to be cancelled.",
+                            "location": "path",
+                            "pattern": "^[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/operations/{+name}:cancel",
+                    "request": {
+                        "$ref": "CancelOperationRequest"
+                    },
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "delete": {
+                    "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.",
+                    "httpMethod": "DELETE",
+                    "id": "speech.operations.delete",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The name of the operation resource to be deleted.",
+                            "location": "path",
+                            "pattern": "^[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/operations/{+name}",
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
                 "get": {
                     "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
                     "httpMethod": "GET",
@@ -175,79 +226,11 @@
                     "scopes": [
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
-                },
-                "cancel": {
-                    "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
-                    "httpMethod": "POST",
-                    "id": "speech.operations.cancel",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The name of the operation resource to be cancelled.",
-                            "location": "path",
-                            "pattern": "^[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/operations/{+name}:cancel",
-                    "request": {
-                        "$ref": "CancelOperationRequest"
-                    },
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
-                "delete": {
-                    "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.",
-                    "httpMethod": "DELETE",
-                    "id": "speech.operations.delete",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The name of the operation resource to be deleted.",
-                            "location": "path",
-                            "pattern": "^[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/operations/{+name}",
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
                 }
             }
         },
         "speech": {
             "methods": {
-                "longrunningrecognize": {
-                    "description": "Performs asynchronous speech recognition: receive results via the\ngoogle.longrunning.Operations interface. Returns either an\n`Operation.error` or an `Operation.response` which contains\na `LongRunningRecognizeResponse` message.",
-                    "httpMethod": "POST",
-                    "id": "speech.speech.longrunningrecognize",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/speech:longrunningrecognize",
-                    "request": {
-                        "$ref": "LongRunningRecognizeRequest"
-                    },
-                    "response": {
-                        "$ref": "Operation"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
                 "recognize": {
                     "description": "Performs synchronous speech recognition: receive results after all audio\nhas been sent and processed.",
                     "httpMethod": "POST",
@@ -264,25 +247,61 @@
                     "scopes": [
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
+                },
+                "longrunningrecognize": {
+                    "description": "Performs asynchronous speech recognition: receive results via the\ngoogle.longrunning.Operations interface. Returns either an\n`Operation.error` or an `Operation.response` which contains\na `LongRunningRecognizeResponse` message.",
+                    "httpMethod": "POST",
+                    "id": "speech.speech.longrunningrecognize",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/speech:longrunningrecognize",
+                    "request": {
+                        "$ref": "LongRunningRecognizeRequest"
+                    },
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
                 }
             }
         }
     },
-    "revision": "20170925",
+    "revision": "20171018",
     "rootUrl": "https://speech.googleapis.com/",
     "schemas": {
+        "SpeechRecognitionResult": {
+            "description": "A speech recognition result corresponding to a portion of the audio.",
+            "id": "SpeechRecognitionResult",
+            "properties": {
+                "channelTag": {
+                    "description": "For multi-channel audio, this is the channel number corresponding to the\nrecognized result for the audio from that channel.\nFor audio_channel_count = N, its output values can range from '0' to 'N-1'.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "alternatives": {
+                    "description": "*Output-only* May contain one or more recognition hypotheses (up to the\nmaximum specified in `max_alternatives`).\nThese alternatives are ordered in terms of accuracy, with the top (first)\nalternative being the most probable, as ranked by the recognizer.",
+                    "items": {
+                        "$ref": "SpeechRecognitionAlternative"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "RecognitionAudio": {
             "description": "Contains audio data in the encoding specified in the `RecognitionConfig`.\nEither `content` or `uri` must be supplied. Supplying both or neither\nreturns google.rpc.Code.INVALID_ARGUMENT. See\n[audio limits](https://cloud.google.com/speech/limits#content).",
             "id": "RecognitionAudio",
             "properties": {
-                "uri": {
-                    "description": "URI that points to a file that contains audio data bytes as specified in\n`RecognitionConfig`. Currently, only Google Cloud Storage URIs are\nsupported, which must be specified in the following format:\n`gs://bucket_name/object_name` (other URI formats return\ngoogle.rpc.Code.INVALID_ARGUMENT). For more information, see\n[Request URIs](https://cloud.google.com/storage/docs/reference-uris).",
-                    "type": "string"
-                },
                 "content": {
                     "description": "The audio data bytes encoded as specified in\n`RecognitionConfig`. Note: as with all bytes fields, protobuffers use a\npure binary representation, whereas JSON representations use base64.",
                     "format": "byte",
                     "type": "string"
+                },
+                "uri": {
+                    "description": "URI that points to a file that contains audio data bytes as specified in\n`RecognitionConfig`. Currently, only Google Cloud Storage URIs are\nsupported, which must be specified in the following format:\n`gs://bucket_name/object_name` (other URI formats return\ngoogle.rpc.Code.INVALID_ARGUMENT). For more information, see\n[Request URIs](https://cloud.google.com/storage/docs/reference-uris).",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -326,6 +345,10 @@
             "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
             "id": "Operation",
             "properties": {
+                "done": {
+                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+                    "type": "boolean"
+                },
                 "response": {
                     "additionalProperties": {
                         "description": "Properties of the object. Contains field @type with type URL.",
@@ -349,10 +372,6 @@
                     },
                     "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
                     "type": "object"
-                },
-                "done": {
-                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
-                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -361,9 +380,9 @@
             "description": "Provides information to the recognizer that specifies how to process the\nrequest.",
             "id": "RecognitionConfig",
             "properties": {
-                "languageCode": {
-                    "description": "*Required* The language of the supplied audio as a\n[BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag.\nExample: \"en-US\".\nSee [Language Support](https://cloud.google.com/speech/docs/languages)\nfor a list of the currently supported language codes.",
-                    "type": "string"
+                "profanityFilter": {
+                    "description": "*Optional* If set to `true`, the server will attempt to filter out\nprofanities, replacing all but the initial character in each filtered word\nwith asterisks, e.g. \"f***\". If set to `false` or omitted, profanities\nwon't be filtered out.",
+                    "type": "boolean"
                 },
                 "encoding": {
                     "description": "*Required* Encoding of audio data sent in all `RecognitionAudio` messages.",
@@ -396,10 +415,6 @@
                     },
                     "type": "array"
                 },
-                "profanityFilter": {
-                    "description": "*Optional* If set to `true`, the server will attempt to filter out\nprofanities, replacing all but the initial character in each filtered word\nwith asterisks, e.g. \"f***\". If set to `false` or omitted, profanities\nwon't be filtered out.",
-                    "type": "boolean"
-                },
                 "sampleRateHertz": {
                     "description": "*Required* Sample rate in Hertz of the audio data sent in all\n`RecognitionAudio` messages. Valid values are: 8000-48000.\n16000 is optimal. For best results, set the sampling rate of the audio\nsource to 16000 Hz. If that's not possible, use the native sample rate of\nthe audio source (instead of re-sampling).",
                     "format": "int32",
@@ -413,6 +428,10 @@
                     "description": "*Optional* Maximum number of recognition hypotheses to be returned.\nSpecifically, the maximum number of `SpeechRecognitionAlternative` messages\nwithin each `SpeechRecognitionResult`.\nThe server may return fewer than `max_alternatives`.\nValid values are `0`-`30`. A value of `0` or `1` will return a maximum of\none. If omitted, will return a maximum of one.",
                     "format": "int32",
                     "type": "integer"
+                },
+                "languageCode": {
+                    "description": "*Required* The language of the supplied audio as a\n[BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag.\nExample: \"en-US\".\nSee [Language Support](https://cloud.google.com/speech/docs/languages)\nfor a list of the currently supported language codes.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -421,11 +440,6 @@
             "description": "Word-specific information for recognized words. Word information is only\nincluded in the response when certain request parameters are set, such\nas `enable_word_time_offsets`.",
             "id": "WordInfo",
             "properties": {
-                "endTime": {
-                    "description": "*Output-only* Time offset relative to the beginning of the audio,\nand corresponding to the end of the spoken word.\nThis field is only set if `enable_word_time_offsets=true` and only\nin the top hypothesis.\nThis is an experimental feature and the accuracy of the time offset can\nvary.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
                 "startTime": {
                     "description": "*Output-only* Time offset relative to the beginning of the audio,\nand corresponding to the start of the spoken word.\nThis field is only set if `enable_word_time_offsets=true` and only\nin the top hypothesis.\nThis is an experimental feature and the accuracy of the time offset can\nvary.",
                     "format": "google-duration",
@@ -434,6 +448,11 @@
                 "word": {
                     "description": "*Output-only* The word corresponding to this set of information.",
                     "type": "string"
+                },
+                "endTime": {
+                    "description": "*Output-only* Time offset relative to the beginning of the audio,\nand corresponding to the end of the spoken word.\nThis field is only set if `enable_word_time_offsets=true` and only\nin the top hypothesis.\nThis is an experimental feature and the accuracy of the time offset can\nvary.",
+                    "format": "google-duration",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -442,6 +461,10 @@
             "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
             "id": "Status",
             "properties": {
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
                 "details": {
                     "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
                     "items": {
@@ -457,10 +480,6 @@
                     "description": "The status code, which should be an enum value of google.rpc.Code.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -486,20 +505,6 @@
             },
             "type": "object"
         },
-        "SpeechContext": {
-            "description": "Provides \"hints\" to the speech recognizer to favor specific words and phrases\nin the results.",
-            "id": "SpeechContext",
-            "properties": {
-                "phrases": {
-                    "description": "*Optional* A list of strings containing words and phrases \"hints\" so that\nthe speech recognition is more likely to recognize them. This can be used\nto improve the accuracy for specific words and phrases, for example, if\nspecific commands are typically spoken by the user. This can also be used\nto add additional words to the vocabulary of the recognizer. See\n[usage limits](https://cloud.google.com/speech/limits#content).",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "ListOperationsResponse": {
             "description": "The response message for Operations.ListOperations.",
             "id": "ListOperationsResponse",
@@ -518,12 +523,26 @@
             },
             "type": "object"
         },
+        "SpeechContext": {
+            "description": "Provides \"hints\" to the speech recognizer to favor specific words and phrases\nin the results.",
+            "id": "SpeechContext",
+            "properties": {
+                "phrases": {
+                    "description": "*Optional* A list of strings containing words and phrases \"hints\" so that\nthe speech recognition is more likely to recognize them. This can be used\nto improve the accuracy for specific words and phrases, for example, if\nspecific commands are typically spoken by the user. This can also be used\nto add additional words to the vocabulary of the recognizer. See\n[usage limits](https://cloud.google.com/speech/limits#content).",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "SpeechRecognitionAlternative": {
             "description": "Alternative hypotheses (a.k.a. n-best list).",
             "id": "SpeechRecognitionAlternative",
             "properties": {
                 "confidence": {
-                    "description": "*Output-only* The confidence estimate between 0.0 and 1.0. A higher number\nindicates an estimated greater likelihood that the recognized words are\ncorrect. This field is typically provided only for the top hypothesis, and\nonly for `is_final=true` results. Clients should not rely on the\n`confidence` field as it is not guaranteed to be accurate or consistent.\nThe default of 0.0 is a sentinel value indicating `confidence` was not set.",
+                    "description": "*Output-only* The confidence estimate between 0.0 and 1.0. A higher number\nindicates an estimated greater likelihood that the recognized words are\ncorrect. This field is typically provided only for the top hypothesis, and\nonly for `is_final=true` results. Clients should not rely on the\n`confidence` field as it is not guaranteed to be accurate, or even set, in\nany of the results.\nThe default of 0.0 is a sentinel value indicating `confidence` was not set.",
                     "format": "float",
                     "type": "number"
                 },
@@ -540,20 +559,6 @@
                 }
             },
             "type": "object"
-        },
-        "SpeechRecognitionResult": {
-            "description": "A speech recognition result corresponding to a portion of the audio.",
-            "id": "SpeechRecognitionResult",
-            "properties": {
-                "alternatives": {
-                    "description": "*Output-only* May contain one or more recognition hypotheses (up to the\nmaximum specified in `max_alternatives`).\nThese alternatives are ordered in terms of accuracy, with the top (first)\nalternative being the most probable, as ranked by the recognizer.",
-                    "items": {
-                        "$ref": "SpeechRecognitionAlternative"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/storage__v1.json b/discovery/googleapis/storage__v1.json
index 643acab..458c044 100644
--- a/discovery/googleapis/storage__v1.json
+++ b/discovery/googleapis/storage__v1.json
@@ -26,7 +26,7 @@
     "description": "Stores and retrieves potentially large, immutable data objects.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/storage/docs/json_api/",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/rE26AVrnFbD9orx-YtVO_pKNglE\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/wG6rmEvDnTlddzJg86OD2al2nik\"",
     "icons": {
         "x16": "https://www.google.com/images/icons/product/cloud_storage-16.png",
         "x32": "https://www.google.com/images/icons/product/cloud_storage-32.png"
@@ -110,7 +110,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -143,7 +143,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -172,7 +172,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -204,7 +204,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -240,7 +240,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -279,7 +279,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -327,7 +327,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -379,7 +379,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -411,7 +411,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -496,7 +496,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request",
                             "location": "query",
                             "type": "string"
                         }
@@ -560,7 +560,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request.",
                             "location": "query",
                             "type": "string"
                         }
@@ -657,7 +657,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -689,7 +689,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -730,7 +730,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -827,7 +827,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -891,7 +891,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -924,7 +924,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -953,7 +953,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -997,7 +997,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1033,7 +1033,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1072,7 +1072,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1115,7 +1115,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1149,7 +1149,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1181,7 +1181,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1214,7 +1214,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1270,7 +1270,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1316,7 +1316,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1358,7 +1358,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1403,7 +1403,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1452,7 +1452,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1504,7 +1504,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1585,7 +1585,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1728,7 +1728,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1799,7 +1799,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1876,7 +1876,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -1922,7 +1922,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -2042,7 +2042,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -2113,7 +2113,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         },
@@ -2222,7 +2222,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -2379,7 +2379,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -2425,7 +2425,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -2479,7 +2479,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -2582,7 +2582,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         }
@@ -2651,7 +2651,7 @@
                             "type": "string"
                         },
                         "userProject": {
-                            "description": "The project to be billed for this request, for Requester Pays buckets.",
+                            "description": "The project to be billed for this request. Required for Requester Pays buckets.",
                             "location": "query",
                             "type": "string"
                         },
@@ -2699,7 +2699,7 @@
                                     "type": "string"
                                 },
                                 "userProject": {
-                                    "description": "The project to be billed for this request, for Requester Pays buckets.",
+                                    "description": "The project to be billed for this request.",
                                     "location": "query",
                                     "type": "string"
                                 }
@@ -2721,7 +2721,7 @@
             }
         }
     },
-    "revision": "20170920",
+    "revision": "20171004",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Bucket": {
diff --git a/discovery/googleapis/storagetransfer__v1.json b/discovery/googleapis/storagetransfer__v1.json
index 5e37f24..078a037 100644
--- a/discovery/googleapis/storagetransfer__v1.json
+++ b/discovery/googleapis/storagetransfer__v1.json
@@ -24,11 +24,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
         "prettyPrint": {
             "default": "true",
             "description": "Returns response with indentations and line breaks.",
@@ -79,13 +74,13 @@
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
@@ -100,13 +95,18 @@
             "location": "query",
             "type": "boolean"
         },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
         "bearer_token": {
             "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
             "type": "string"
         }
@@ -142,6 +142,97 @@
         },
         "transferOperations": {
             "methods": {
+                "pause": {
+                    "description": "Pauses a transfer operation.",
+                    "httpMethod": "POST",
+                    "id": "storagetransfer.transferOperations.pause",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The name of the transfer operation.\nRequired.",
+                            "location": "path",
+                            "pattern": "^transferOperations/.+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+name}:pause",
+                    "request": {
+                        "$ref": "PauseTransferOperationRequest"
+                    },
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "delete": {
+                    "description": "This method is not supported and the server returns `UNIMPLEMENTED`.",
+                    "httpMethod": "DELETE",
+                    "id": "storagetransfer.transferOperations.delete",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The name of the operation resource to be deleted.",
+                            "location": "path",
+                            "pattern": "^transferOperations/.+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+name}",
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "list": {
+                    "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+                    "httpMethod": "GET",
+                    "id": "storagetransfer.transferOperations.list",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "pageToken": {
+                            "description": "The list page token.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "name": {
+                            "description": "The value `transferOperations`.",
+                            "location": "path",
+                            "pattern": "^transferOperations$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "pageSize": {
+                            "description": "The list page size. The max allowed value is 256.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        },
+                        "filter": {
+                            "description": "A list of query parameters specified as JSON text in the form of {\\\"project_id\\\" : \\\"my_project_id\\\", \\\"job_names\\\" : [\\\"jobid1\\\", \\\"jobid2\\\",...], \\\"operation_names\\\" : [\\\"opid1\\\", \\\"opid2\\\",...], \\\"transfer_statuses\\\":[\\\"status1\\\", \\\"status2\\\",...]}. Since `job_names`, `operation_names`, and `transfer_statuses` support multiple values, they must be specified with array notation. `job_names`, `operation_names`, and `transfer_statuses` are optional.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+name}",
+                    "response": {
+                        "$ref": "ListOperationsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
                 "resume": {
                     "description": "Resumes a transfer operation that is paused.",
                     "httpMethod": "POST",
@@ -216,97 +307,6 @@
                     "scopes": [
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
-                },
-                "pause": {
-                    "description": "Pauses a transfer operation.",
-                    "httpMethod": "POST",
-                    "id": "storagetransfer.transferOperations.pause",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The name of the transfer operation.\nRequired.",
-                            "location": "path",
-                            "pattern": "^transferOperations/.+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+name}:pause",
-                    "request": {
-                        "$ref": "PauseTransferOperationRequest"
-                    },
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
-                "delete": {
-                    "description": "This method is not supported and the server returns `UNIMPLEMENTED`.",
-                    "httpMethod": "DELETE",
-                    "id": "storagetransfer.transferOperations.delete",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The name of the operation resource to be deleted.",
-                            "location": "path",
-                            "pattern": "^transferOperations/.+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+name}",
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
-                "list": {
-                    "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
-                    "httpMethod": "GET",
-                    "id": "storagetransfer.transferOperations.list",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "filter": {
-                            "description": "A list of query parameters specified as JSON text in the form of {\\\"project_id\\\" : \\\"my_project_id\\\", \\\"job_names\\\" : [\\\"jobid1\\\", \\\"jobid2\\\",...], \\\"operation_names\\\" : [\\\"opid1\\\", \\\"opid2\\\",...], \\\"transfer_statuses\\\":[\\\"status1\\\", \\\"status2\\\",...]}. Since `job_names`, `operation_names`, and `transfer_statuses` support multiple values, they must be specified with array notation. `job_names`, `operation_names`, and `transfer_statuses` are optional.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageToken": {
-                            "description": "The list page token.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "name": {
-                            "description": "The value `transferOperations`.",
-                            "location": "path",
-                            "pattern": "^transferOperations$",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "pageSize": {
-                            "description": "The list page size. The max allowed value is 256.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        }
-                    },
-                    "path": "v1/{+name}",
-                    "response": {
-                        "$ref": "ListOperationsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
                 }
             }
         },
@@ -318,11 +318,6 @@
                     "id": "storagetransfer.transferJobs.list",
                     "parameterOrder": [],
                     "parameters": {
-                        "filter": {
-                            "description": "A list of query parameters specified as JSON text in the form of\n{\"project_id\":\"my_project_id\",\n\"job_names\":[\"jobid1\",\"jobid2\",...],\n\"job_statuses\":[\"status1\",\"status2\",...]}.\nSince `job_names` and `job_statuses` support multiple values, their values\nmust be specified with array notation. `project_id` is required. `job_names`\nand `job_statuses` are optional.  The valid values for `job_statuses` are\ncase-insensitive: `ENABLED`, `DISABLED`, and `DELETED`.",
-                            "location": "query",
-                            "type": "string"
-                        },
                         "pageToken": {
                             "description": "The list page token.",
                             "location": "query",
@@ -333,6 +328,11 @@
                             "format": "int32",
                             "location": "query",
                             "type": "integer"
+                        },
+                        "filter": {
+                            "description": "A list of query parameters specified as JSON text in the form of\n{\"project_id\":\"my_project_id\",\n\"job_names\":[\"jobid1\",\"jobid2\",...],\n\"job_statuses\":[\"status1\",\"status2\",...]}.\nSince `job_names` and `job_statuses` support multiple values, their values\nmust be specified with array notation. `project_id` is required. `job_names`\nand `job_statuses` are optional.  The valid values for `job_statuses` are\ncase-insensitive: `ENABLED`, `DISABLED`, and `DELETED`.",
+                            "location": "query",
+                            "type": "string"
                         }
                     },
                     "path": "v1/transferJobs",
@@ -419,480 +419,9 @@
             }
         }
     },
-    "revision": "20170928",
+    "revision": "20171012",
     "rootUrl": "https://storagetransfer.googleapis.com/",
     "schemas": {
-        "GcsData": {
-            "description": "In a GcsData, an object's name is the Google Cloud Storage object's name and\nits `lastModificationTime` refers to the object's updated time, which changes\nwhen the content or the metadata of the object is updated.",
-            "id": "GcsData",
-            "properties": {
-                "bucketName": {
-                    "description": "Google Cloud Storage bucket name (see\n[Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).\nRequired.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListTransferJobsResponse": {
-            "description": "Response from ListTransferJobs.",
-            "id": "ListTransferJobsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "The list next page token.",
-                    "type": "string"
-                },
-                "transferJobs": {
-                    "description": "A list of transfer jobs.",
-                    "items": {
-                        "$ref": "TransferJob"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "UpdateTransferJobRequest": {
-            "description": "Request passed to UpdateTransferJob.",
-            "id": "UpdateTransferJobRequest",
-            "properties": {
-                "projectId": {
-                    "description": "The ID of the Google Cloud Platform Console project that owns the job.\nRequired.",
-                    "type": "string"
-                },
-                "updateTransferJobFieldMask": {
-                    "description": "The field mask of the fields in `transferJob` that are to be updated in\nthis request.  Fields in `transferJob` that can be updated are:\n`description`, `transferSpec`, and `status`.  To update the `transferSpec`\nof the job, a complete transfer specification has to be provided. An\nincomplete specification which misses any required fields will be rejected\nwith the error `INVALID_ARGUMENT`.",
-                    "format": "google-fieldmask",
-                    "type": "string"
-                },
-                "transferJob": {
-                    "$ref": "TransferJob",
-                    "description": "The job to update. `transferJob` is expected to specify only three fields:\n`description`, `transferSpec`, and `status`.  An UpdateTransferJobRequest\nthat specifies other fields will be rejected with an error\n`INVALID_ARGUMENT`.\nRequired."
-                }
-            },
-            "type": "object"
-        },
-        "ObjectConditions": {
-            "description": "Conditions that determine which objects will be transferred.",
-            "id": "ObjectConditions",
-            "properties": {
-                "excludePrefixes": {
-                    "description": "`excludePrefixes` must follow the requirements described for\n`includePrefixes`.\n\nThe max size of `excludePrefixes` is 1000.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "minTimeElapsedSinceLastModification": {
-                    "description": "If unspecified, `minTimeElapsedSinceLastModification` takes a zero value\nand `maxTimeElapsedSinceLastModification` takes the maximum possible\nvalue of Duration. Objects that satisfy the object conditions\nmust either have a `lastModificationTime` greater or equal to\n`NOW` - `maxTimeElapsedSinceLastModification` and less than\n`NOW` - `minTimeElapsedSinceLastModification`, or not have a\n`lastModificationTime`.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "maxTimeElapsedSinceLastModification": {
-                    "description": "`maxTimeElapsedSinceLastModification` is the complement to\n`minTimeElapsedSinceLastModification`.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "includePrefixes": {
-                    "description": "If `includePrefixes` is specified, objects that satisfy the object\nconditions must have names that start with one of the `includePrefixes`\nand that do not start with any of the `excludePrefixes`. If `includePrefixes`\nis not specified, all objects except those that have names starting with\none of the `excludePrefixes` must satisfy the object conditions.\n\nRequirements:\n\n  * Each include-prefix and exclude-prefix can contain any sequence of\n    Unicode characters, of max length 1024 bytes when UTF8-encoded, and\n    must not contain Carriage Return or Line Feed characters.  Wildcard\n    matching and regular expression matching are not supported.\n\n  * Each include-prefix and exclude-prefix must omit the leading slash.\n    For example, to include the `requests.gz` object in a transfer from\n    `s3://my-aws-bucket/logs/y=2015/requests.gz`, specify the include\n    prefix as `logs/y=2015/requests.gz`.\n\n  * None of the include-prefix or the exclude-prefix values can be empty,\n    if specified.\n\n  * Each include-prefix must include a distinct portion of the object\n    namespace, i.e., no include-prefix may be a prefix of another\n    include-prefix.\n\n  * Each exclude-prefix must exclude a distinct portion of the object\n    namespace, i.e., no exclude-prefix may be a prefix of another\n    exclude-prefix.\n\n  * If `includePrefixes` is specified, then each exclude-prefix must start\n    with the value of a path explicitly included by `includePrefixes`.\n\nThe max size of `includePrefixes` is 1000.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Operation": {
-            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
-            "id": "Operation",
-            "properties": {
-                "done": {
-                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
-                    "type": "boolean"
-                },
-                "response": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `transferOperations/some/unique/name`.",
-                    "type": "string"
-                },
-                "error": {
-                    "$ref": "Status",
-                    "description": "The error result of the operation in case of failure or cancellation."
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Represents the transfer operation object.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "TransferOptions": {
-            "description": "TransferOptions uses three boolean parameters to define the actions\nto be performed on objects in a transfer.",
-            "id": "TransferOptions",
-            "properties": {
-                "deleteObjectsUniqueInSink": {
-                    "description": "Whether objects that exist only in the sink should be deleted.  Note that\nthis option and `deleteObjectsFromSourceAfterTransfer` are mutually\nexclusive.",
-                    "type": "boolean"
-                },
-                "overwriteObjectsAlreadyExistingInSink": {
-                    "description": "Whether overwriting objects that already exist in the sink is allowed.",
-                    "type": "boolean"
-                },
-                "deleteObjectsFromSourceAfterTransfer": {
-                    "description": "Whether objects should be deleted from the source after they are\ntransferred to the sink.  Note that this option and\n`deleteObjectsUniqueInSink` are mutually exclusive.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "TransferSpec": {
-            "description": "Configuration for running a transfer.",
-            "id": "TransferSpec",
-            "properties": {
-                "transferOptions": {
-                    "$ref": "TransferOptions",
-                    "description": "If the option `deleteObjectsUniqueInSink` is `true`, object conditions\nbased on objects' `lastModificationTime` are ignored and do not exclude\nobjects in a data source or a data sink."
-                },
-                "awsS3DataSource": {
-                    "$ref": "AwsS3Data",
-                    "description": "An AWS S3 data source."
-                },
-                "httpDataSource": {
-                    "$ref": "HttpData",
-                    "description": "An HTTP URL data source."
-                },
-                "objectConditions": {
-                    "$ref": "ObjectConditions",
-                    "description": "Only objects that satisfy these object conditions are included in the set\nof data source and data sink objects.  Object conditions based on\nobjects' `lastModificationTime` do not exclude objects in a data sink."
-                },
-                "gcsDataSink": {
-                    "$ref": "GcsData",
-                    "description": "A Google Cloud Storage data sink."
-                },
-                "gcsDataSource": {
-                    "$ref": "GcsData",
-                    "description": "A Google Cloud Storage data source."
-                }
-            },
-            "type": "object"
-        },
-        "ResumeTransferOperationRequest": {
-            "description": "Request passed to ResumeTransferOperation.",
-            "id": "ResumeTransferOperationRequest",
-            "properties": {},
-            "type": "object"
-        },
-        "Status": {
-            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
-            "id": "Status",
-            "properties": {
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                },
-                "details": {
-                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ListOperationsResponse": {
-            "description": "The response message for Operations.ListOperations.",
-            "id": "ListOperationsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
-                },
-                "operations": {
-                    "description": "A list of operations that matches the specified filter in the request.",
-                    "items": {
-                        "$ref": "Operation"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleServiceAccount": {
-            "description": "Google service account",
-            "id": "GoogleServiceAccount",
-            "properties": {
-                "accountEmail": {
-                    "description": "Required.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TimeOfDay": {
-            "description": "Represents a time of day. The date and time zone are either not significant\nor are specified elsewhere. An API may choose to allow leap seconds. Related\ntypes are google.type.Date and `google.protobuf.Timestamp`.",
-            "id": "TimeOfDay",
-            "properties": {
-                "seconds": {
-                    "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may\nallow the value 60 if it allows leap-seconds.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "minutes": {
-                    "description": "Minutes of hour of day. Must be from 0 to 59.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "hours": {
-                    "description": "Hours of day in 24 hour format. Should be from 0 to 23. An API may choose\nto allow the value \"24:00:00\" for scenarios like business closing time.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "nanos": {
-                    "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "ErrorLogEntry": {
-            "description": "An entry describing an error that has occurred.",
-            "id": "ErrorLogEntry",
-            "properties": {
-                "errorDetails": {
-                    "description": "A list of messages that carry the error details.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "url": {
-                    "description": "A URL that refers to the target (a data source, a data sink,\nor an object) with which the error is associated.\nRequired.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TransferJob": {
-            "description": "This resource represents the configuration of a transfer job that runs\nperiodically.",
-            "id": "TransferJob",
-            "properties": {
-                "description": {
-                    "description": "A description provided by the user for the job. Its max length is 1024\nbytes when Unicode-encoded.",
-                    "type": "string"
-                },
-                "transferSpec": {
-                    "$ref": "TransferSpec",
-                    "description": "Transfer specification."
-                },
-                "creationTime": {
-                    "description": "This field cannot be changed by user requests.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "status": {
-                    "description": "Status of the job. This value MUST be specified for\n`CreateTransferJobRequests`.\n\nNOTE: The effect of the new job status takes place during a subsequent job\nrun. For example, if you change the job status from `ENABLED` to\n`DISABLED`, and an operation spawned by the transfer is running, the status\nchange would not affect the current operation.",
-                    "enum": [
-                        "STATUS_UNSPECIFIED",
-                        "ENABLED",
-                        "DISABLED",
-                        "DELETED"
-                    ],
-                    "enumDescriptions": [
-                        "Zero is an illegal value.",
-                        "New transfers will be performed based on the schedule.",
-                        "New transfers will not be scheduled.",
-                        "This is a soft delete state. After a transfer job is set to this\nstate, the job and all the transfer executions are subject to\ngarbage collection."
-                    ],
-                    "type": "string"
-                },
-                "schedule": {
-                    "$ref": "Schedule",
-                    "description": "Schedule specification."
-                },
-                "name": {
-                    "description": "A globally unique name assigned by Storage Transfer Service when the\njob is created. This field should be left empty in requests to create a new\ntransfer job; otherwise, the requests result in an `INVALID_ARGUMENT`\nerror.",
-                    "type": "string"
-                },
-                "deletionTime": {
-                    "description": "This field cannot be changed by user requests.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "projectId": {
-                    "description": "The ID of the Google Cloud Platform Console project that owns the job.",
-                    "type": "string"
-                },
-                "lastModificationTime": {
-                    "description": "This field cannot be changed by user requests.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Schedule": {
-            "description": "Transfers can be scheduled to recur or to run just once.",
-            "id": "Schedule",
-            "properties": {
-                "scheduleEndDate": {
-                    "$ref": "Date",
-                    "description": "The last day the recurring transfer will be run. If `scheduleEndDate`\nis the same as `scheduleStartDate`, the transfer will be executed only\nonce."
-                },
-                "startTimeOfDay": {
-                    "$ref": "TimeOfDay",
-                    "description": "The time in UTC at which the transfer will be scheduled to start in a day.\nTransfers may start later than this time. If not specified, recurring and\none-time transfers that are scheduled to run today will run immediately;\nrecurring transfers that are scheduled to run on a future date will start\nat approximately midnight UTC on that date. Note that when configuring a\ntransfer with the Cloud Platform Console, the transfer's start time in a\nday is specified in your local timezone."
-                },
-                "scheduleStartDate": {
-                    "$ref": "Date",
-                    "description": "The first day the recurring transfer is scheduled to run. If\n`scheduleStartDate` is in the past, the transfer will run for the first\ntime on the following day.\nRequired."
-                }
-            },
-            "type": "object"
-        },
-        "Date": {
-            "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.",
-            "id": "Date",
-            "properties": {
-                "month": {
-                    "description": "Month of year. Must be from 1 to 12.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "day": {
-                    "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "year": {
-                    "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "TransferOperation": {
-            "description": "A description of the execution of a transfer.",
-            "id": "TransferOperation",
-            "properties": {
-                "transferSpec": {
-                    "$ref": "TransferSpec",
-                    "description": "Transfer specification.\nRequired."
-                },
-                "status": {
-                    "description": "Status of the transfer operation.",
-                    "enum": [
-                        "STATUS_UNSPECIFIED",
-                        "IN_PROGRESS",
-                        "PAUSED",
-                        "SUCCESS",
-                        "FAILED",
-                        "ABORTED"
-                    ],
-                    "enumDescriptions": [
-                        "Zero is an illegal value.",
-                        "In progress.",
-                        "Paused.",
-                        "Completed successfully.",
-                        "Terminated due to an unrecoverable failure.",
-                        "Aborted by the user."
-                    ],
-                    "type": "string"
-                },
-                "counters": {
-                    "$ref": "TransferCounters",
-                    "description": "Information about the progress of the transfer operation."
-                },
-                "errorBreakdowns": {
-                    "description": "Summarizes errors encountered with sample error log entries.",
-                    "items": {
-                        "$ref": "ErrorSummary"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "A globally unique ID assigned by the system.",
-                    "type": "string"
-                },
-                "projectId": {
-                    "description": "The ID of the Google Cloud Platform Console project that owns the operation.\nRequired.",
-                    "type": "string"
-                },
-                "endTime": {
-                    "description": "End time of this transfer execution.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "Start time of this transfer execution.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "transferJobName": {
-                    "description": "The name of the transfer job that triggers this transfer operation.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AwsS3Data": {
-            "description": "An AwsS3Data can be a data source, but not a data sink.\nIn an AwsS3Data, an object's name is the S3 object's key name.",
-            "id": "AwsS3Data",
-            "properties": {
-                "bucketName": {
-                    "description": "S3 Bucket name (see\n[Creating a bucket](http://docs.aws.amazon.com/AmazonS3/latest/dev/create-bucket-get-location-example.html)).\nRequired.",
-                    "type": "string"
-                },
-                "awsAccessKey": {
-                    "$ref": "AwsAccessKey",
-                    "description": "AWS access key used to sign the API requests to the AWS S3 bucket.\nPermissions on the bucket must be granted to the access ID of the\nAWS access key.\nRequired."
-                }
-            },
-            "type": "object"
-        },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
-        "AwsAccessKey": {
-            "description": "AWS access key (see\n[AWS Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html)).",
-            "id": "AwsAccessKey",
-            "properties": {
-                "accessKeyId": {
-                    "description": "AWS access key ID.\nRequired.",
-                    "type": "string"
-                },
-                "secretAccessKey": {
-                    "description": "AWS secret access key. This field is not returned in RPC responses.\nRequired.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "PauseTransferOperationRequest": {
             "description": "Request passed to PauseTransferOperation.",
             "id": "PauseTransferOperationRequest",
@@ -903,36 +432,6 @@
             "description": "A collection of counters that report the progress of a transfer operation.",
             "id": "TransferCounters",
             "properties": {
-                "bytesFromSourceFailed": {
-                    "description": "Bytes in the data source that failed during the transfer.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "objectsCopiedToSink": {
-                    "description": "Objects that are copied to the data sink.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "objectsFromSourceFailed": {
-                    "description": "Objects in the data source that failed during the transfer.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "bytesFoundOnlyFromSink": {
-                    "description": "Bytes found only in the data sink that are scheduled to be deleted.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "objectsDeletedFromSource": {
-                    "description": "Objects that are deleted from the data source.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "bytesCopiedToSink": {
-                    "description": "Bytes that are copied to the data sink.",
-                    "format": "int64",
-                    "type": "string"
-                },
                 "objectsFromSourceSkippedBySync": {
                     "description": "Objects in the data source that are not transferred because they already\nexist in the data sink.",
                     "format": "int64",
@@ -958,13 +457,13 @@
                     "format": "int64",
                     "type": "string"
                 },
-                "objectsDeletedFromSink": {
-                    "description": "Objects that are deleted from the data sink.",
+                "objectsFoundOnlyFromSink": {
+                    "description": "Objects found only in the data sink that are scheduled to be deleted.",
                     "format": "int64",
                     "type": "string"
                 },
-                "objectsFoundOnlyFromSink": {
-                    "description": "Objects found only in the data sink that are scheduled to be deleted.",
+                "objectsDeletedFromSink": {
+                    "description": "Objects that are deleted from the data sink.",
                     "format": "int64",
                     "type": "string"
                 },
@@ -982,6 +481,36 @@
                     "description": "Bytes that failed to be deleted from the data sink.",
                     "format": "int64",
                     "type": "string"
+                },
+                "bytesFromSourceFailed": {
+                    "description": "Bytes in the data source that failed during the transfer.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "objectsFromSourceFailed": {
+                    "description": "Objects in the data source that failed during the transfer.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "objectsCopiedToSink": {
+                    "description": "Objects that are copied to the data sink.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "bytesFoundOnlyFromSink": {
+                    "description": "Bytes found only in the data sink that are scheduled to be deleted.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "objectsDeletedFromSource": {
+                    "description": "Objects that are deleted from the data source.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "bytesCopiedToSink": {
+                    "description": "Bytes that are copied to the data sink.",
+                    "format": "int64",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1057,6 +586,477 @@
                 }
             },
             "type": "object"
+        },
+        "GcsData": {
+            "description": "In a GcsData, an object's name is the Google Cloud Storage object's name and\nits `lastModificationTime` refers to the object's updated time, which changes\nwhen the content or the metadata of the object is updated.",
+            "id": "GcsData",
+            "properties": {
+                "bucketName": {
+                    "description": "Google Cloud Storage bucket name (see\n[Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).\nRequired.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListTransferJobsResponse": {
+            "description": "Response from ListTransferJobs.",
+            "id": "ListTransferJobsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The list next page token.",
+                    "type": "string"
+                },
+                "transferJobs": {
+                    "description": "A list of transfer jobs.",
+                    "items": {
+                        "$ref": "TransferJob"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "UpdateTransferJobRequest": {
+            "description": "Request passed to UpdateTransferJob.",
+            "id": "UpdateTransferJobRequest",
+            "properties": {
+                "transferJob": {
+                    "$ref": "TransferJob",
+                    "description": "The job to update. `transferJob` is expected to specify only three fields:\n`description`, `transferSpec`, and `status`.  An UpdateTransferJobRequest\nthat specifies other fields will be rejected with an error\n`INVALID_ARGUMENT`.\nRequired."
+                },
+                "projectId": {
+                    "description": "The ID of the Google Cloud Platform Console project that owns the job.\nRequired.",
+                    "type": "string"
+                },
+                "updateTransferJobFieldMask": {
+                    "description": "The field mask of the fields in `transferJob` that are to be updated in\nthis request.  Fields in `transferJob` that can be updated are:\n`description`, `transferSpec`, and `status`.  To update the `transferSpec`\nof the job, a complete transfer specification has to be provided. An\nincomplete specification which misses any required fields will be rejected\nwith the error `INVALID_ARGUMENT`.",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ObjectConditions": {
+            "description": "Conditions that determine which objects will be transferred.",
+            "id": "ObjectConditions",
+            "properties": {
+                "maxTimeElapsedSinceLastModification": {
+                    "description": "`maxTimeElapsedSinceLastModification` is the complement to\n`minTimeElapsedSinceLastModification`.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "includePrefixes": {
+                    "description": "If `includePrefixes` is specified, objects that satisfy the object\nconditions must have names that start with one of the `includePrefixes`\nand that do not start with any of the `excludePrefixes`. If `includePrefixes`\nis not specified, all objects except those that have names starting with\none of the `excludePrefixes` must satisfy the object conditions.\n\nRequirements:\n\n  * Each include-prefix and exclude-prefix can contain any sequence of\n    Unicode characters, of max length 1024 bytes when UTF8-encoded, and\n    must not contain Carriage Return or Line Feed characters.  Wildcard\n    matching and regular expression matching are not supported.\n\n  * Each include-prefix and exclude-prefix must omit the leading slash.\n    For example, to include the `requests.gz` object in a transfer from\n    `s3://my-aws-bucket/logs/y=2015/requests.gz`, specify the include\n    prefix as `logs/y=2015/requests.gz`.\n\n  * None of the include-prefix or the exclude-prefix values can be empty,\n    if specified.\n\n  * Each include-prefix must include a distinct portion of the object\n    namespace, i.e., no include-prefix may be a prefix of another\n    include-prefix.\n\n  * Each exclude-prefix must exclude a distinct portion of the object\n    namespace, i.e., no exclude-prefix may be a prefix of another\n    exclude-prefix.\n\n  * If `includePrefixes` is specified, then each exclude-prefix must start\n    with the value of a path explicitly included by `includePrefixes`.\n\nThe max size of `includePrefixes` is 1000.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "excludePrefixes": {
+                    "description": "`excludePrefixes` must follow the requirements described for\n`includePrefixes`.\n\nThe max size of `excludePrefixes` is 1000.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "minTimeElapsedSinceLastModification": {
+                    "description": "If unspecified, `minTimeElapsedSinceLastModification` takes a zero value\nand `maxTimeElapsedSinceLastModification` takes the maximum possible\nvalue of Duration. Objects that satisfy the object conditions\nmust either have a `lastModificationTime` greater or equal to\n`NOW` - `maxTimeElapsedSinceLastModification` and less than\n`NOW` - `minTimeElapsedSinceLastModification`, or not have a\n`lastModificationTime`.",
+                    "format": "google-duration",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+            "id": "Operation",
+            "properties": {
+                "done": {
+                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+                    "type": "boolean"
+                },
+                "response": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `transferOperations/some/unique/name`.",
+                    "type": "string"
+                },
+                "error": {
+                    "$ref": "Status",
+                    "description": "The error result of the operation in case of failure or cancellation."
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Represents the transfer operation object.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "TransferOptions": {
+            "description": "TransferOptions uses three boolean parameters to define the actions\nto be performed on objects in a transfer.",
+            "id": "TransferOptions",
+            "properties": {
+                "deleteObjectsUniqueInSink": {
+                    "description": "Whether objects that exist only in the sink should be deleted.  Note that\nthis option and `deleteObjectsFromSourceAfterTransfer` are mutually\nexclusive.",
+                    "type": "boolean"
+                },
+                "overwriteObjectsAlreadyExistingInSink": {
+                    "description": "Whether overwriting objects that already exist in the sink is allowed.",
+                    "type": "boolean"
+                },
+                "deleteObjectsFromSourceAfterTransfer": {
+                    "description": "Whether objects should be deleted from the source after they are\ntransferred to the sink.  Note that this option and\n`deleteObjectsUniqueInSink` are mutually exclusive.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "TransferSpec": {
+            "description": "Configuration for running a transfer.",
+            "id": "TransferSpec",
+            "properties": {
+                "awsS3DataSource": {
+                    "$ref": "AwsS3Data",
+                    "description": "An AWS S3 data source."
+                },
+                "httpDataSource": {
+                    "$ref": "HttpData",
+                    "description": "An HTTP URL data source."
+                },
+                "objectConditions": {
+                    "$ref": "ObjectConditions",
+                    "description": "Only objects that satisfy these object conditions are included in the set\nof data source and data sink objects.  Object conditions based on\nobjects' `lastModificationTime` do not exclude objects in a data sink."
+                },
+                "gcsDataSink": {
+                    "$ref": "GcsData",
+                    "description": "A Google Cloud Storage data sink."
+                },
+                "gcsDataSource": {
+                    "$ref": "GcsData",
+                    "description": "A Google Cloud Storage data source."
+                },
+                "transferOptions": {
+                    "$ref": "TransferOptions",
+                    "description": "If the option `deleteObjectsUniqueInSink` is `true`, object conditions\nbased on objects' `lastModificationTime` are ignored and do not exclude\nobjects in a data source or a data sink."
+                }
+            },
+            "type": "object"
+        },
+        "ResumeTransferOperationRequest": {
+            "description": "Request passed to ResumeTransferOperation.",
+            "id": "ResumeTransferOperationRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+            "id": "Status",
+            "properties": {
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListOperationsResponse": {
+            "description": "The response message for Operations.ListOperations.",
+            "id": "ListOperationsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
+                "operations": {
+                    "description": "A list of operations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Operation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleServiceAccount": {
+            "description": "Google service account",
+            "id": "GoogleServiceAccount",
+            "properties": {
+                "accountEmail": {
+                    "description": "Required.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TimeOfDay": {
+            "description": "Represents a time of day. The date and time zone are either not significant\nor are specified elsewhere. An API may choose to allow leap seconds. Related\ntypes are google.type.Date and `google.protobuf.Timestamp`.",
+            "id": "TimeOfDay",
+            "properties": {
+                "minutes": {
+                    "description": "Minutes of hour of day. Must be from 0 to 59.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "hours": {
+                    "description": "Hours of day in 24 hour format. Should be from 0 to 23. An API may choose\nto allow the value \"24:00:00\" for scenarios like business closing time.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "nanos": {
+                    "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "seconds": {
+                    "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may\nallow the value 60 if it allows leap-seconds.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "ErrorLogEntry": {
+            "description": "An entry describing an error that has occurred.",
+            "id": "ErrorLogEntry",
+            "properties": {
+                "errorDetails": {
+                    "description": "A list of messages that carry the error details.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "url": {
+                    "description": "A URL that refers to the target (a data source, a data sink,\nor an object) with which the error is associated.\nRequired.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TransferJob": {
+            "description": "This resource represents the configuration of a transfer job that runs\nperiodically.",
+            "id": "TransferJob",
+            "properties": {
+                "description": {
+                    "description": "A description provided by the user for the job. Its max length is 1024\nbytes when Unicode-encoded.",
+                    "type": "string"
+                },
+                "creationTime": {
+                    "description": "This field cannot be changed by user requests.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "transferSpec": {
+                    "$ref": "TransferSpec",
+                    "description": "Transfer specification."
+                },
+                "status": {
+                    "description": "Status of the job. This value MUST be specified for\n`CreateTransferJobRequests`.\n\nNOTE: The effect of the new job status takes place during a subsequent job\nrun. For example, if you change the job status from `ENABLED` to\n`DISABLED`, and an operation spawned by the transfer is running, the status\nchange would not affect the current operation.",
+                    "enum": [
+                        "STATUS_UNSPECIFIED",
+                        "ENABLED",
+                        "DISABLED",
+                        "DELETED"
+                    ],
+                    "enumDescriptions": [
+                        "Zero is an illegal value.",
+                        "New transfers will be performed based on the schedule.",
+                        "New transfers will not be scheduled.",
+                        "This is a soft delete state. After a transfer job is set to this\nstate, the job and all the transfer executions are subject to\ngarbage collection."
+                    ],
+                    "type": "string"
+                },
+                "schedule": {
+                    "$ref": "Schedule",
+                    "description": "Schedule specification."
+                },
+                "deletionTime": {
+                    "description": "This field cannot be changed by user requests.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "A globally unique name assigned by Storage Transfer Service when the\njob is created. This field should be left empty in requests to create a new\ntransfer job; otherwise, the requests result in an `INVALID_ARGUMENT`\nerror.",
+                    "type": "string"
+                },
+                "lastModificationTime": {
+                    "description": "This field cannot be changed by user requests.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "projectId": {
+                    "description": "The ID of the Google Cloud Platform Console project that owns the job.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Schedule": {
+            "description": "Transfers can be scheduled to recur or to run just once.",
+            "id": "Schedule",
+            "properties": {
+                "scheduleEndDate": {
+                    "$ref": "Date",
+                    "description": "The last day the recurring transfer will be run. If `scheduleEndDate`\nis the same as `scheduleStartDate`, the transfer will be executed only\nonce."
+                },
+                "startTimeOfDay": {
+                    "$ref": "TimeOfDay",
+                    "description": "The time in UTC at which the transfer will be scheduled to start in a day.\nTransfers may start later than this time. If not specified, recurring and\none-time transfers that are scheduled to run today will run immediately;\nrecurring transfers that are scheduled to run on a future date will start\nat approximately midnight UTC on that date. Note that when configuring a\ntransfer with the Cloud Platform Console, the transfer's start time in a\nday is specified in your local timezone."
+                },
+                "scheduleStartDate": {
+                    "$ref": "Date",
+                    "description": "The first day the recurring transfer is scheduled to run. If\n`scheduleStartDate` is in the past, the transfer will run for the first\ntime on the following day.\nRequired."
+                }
+            },
+            "type": "object"
+        },
+        "Date": {
+            "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.",
+            "id": "Date",
+            "properties": {
+                "day": {
+                    "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "year": {
+                    "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "month": {
+                    "description": "Month of year. Must be from 1 to 12.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "TransferOperation": {
+            "description": "A description of the execution of a transfer.",
+            "id": "TransferOperation",
+            "properties": {
+                "endTime": {
+                    "description": "End time of this transfer execution.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Start time of this transfer execution.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "transferJobName": {
+                    "description": "The name of the transfer job that triggers this transfer operation.",
+                    "type": "string"
+                },
+                "transferSpec": {
+                    "$ref": "TransferSpec",
+                    "description": "Transfer specification.\nRequired."
+                },
+                "counters": {
+                    "$ref": "TransferCounters",
+                    "description": "Information about the progress of the transfer operation."
+                },
+                "status": {
+                    "description": "Status of the transfer operation.",
+                    "enum": [
+                        "STATUS_UNSPECIFIED",
+                        "IN_PROGRESS",
+                        "PAUSED",
+                        "SUCCESS",
+                        "FAILED",
+                        "ABORTED"
+                    ],
+                    "enumDescriptions": [
+                        "Zero is an illegal value.",
+                        "In progress.",
+                        "Paused.",
+                        "Completed successfully.",
+                        "Terminated due to an unrecoverable failure.",
+                        "Aborted by the user."
+                    ],
+                    "type": "string"
+                },
+                "errorBreakdowns": {
+                    "description": "Summarizes errors encountered with sample error log entries.",
+                    "items": {
+                        "$ref": "ErrorSummary"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "A globally unique ID assigned by the system.",
+                    "type": "string"
+                },
+                "projectId": {
+                    "description": "The ID of the Google Cloud Platform Console project that owns the operation.\nRequired.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AwsS3Data": {
+            "description": "An AwsS3Data can be a data source, but not a data sink.\nIn an AwsS3Data, an object's name is the S3 object's key name.",
+            "id": "AwsS3Data",
+            "properties": {
+                "bucketName": {
+                    "description": "S3 Bucket name (see\n[Creating a bucket](http://docs.aws.amazon.com/AmazonS3/latest/dev/create-bucket-get-location-example.html)).\nRequired.",
+                    "type": "string"
+                },
+                "awsAccessKey": {
+                    "$ref": "AwsAccessKey",
+                    "description": "AWS access key used to sign the API requests to the AWS S3 bucket.\nPermissions on the bucket must be granted to the access ID of the\nAWS access key.\nRequired."
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "AwsAccessKey": {
+            "description": "AWS access key (see\n[AWS Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html)).",
+            "id": "AwsAccessKey",
+            "properties": {
+                "secretAccessKey": {
+                    "description": "AWS secret access key. This field is not returned in RPC responses.\nRequired.",
+                    "type": "string"
+                },
+                "accessKeyId": {
+                    "description": "AWS access key ID.\nRequired.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/streetviewpublish__v1.json b/discovery/googleapis/streetviewpublish__v1.json
index 6d2df3a..6b372d4 100644
--- a/discovery/googleapis/streetviewpublish__v1.json
+++ b/discovery/googleapis/streetviewpublish__v1.json
@@ -25,6 +25,33 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
         "fields": {
             "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
@@ -83,33 +110,6 @@
             "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.",
             "location": "query",
             "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
         }
     },
     "protocol": "rest",
@@ -224,46 +224,6 @@
         },
         "photo": {
             "methods": {
-                "startUpload": {
-                    "description": "Creates an upload session to start uploading photo bytes. The upload URL of\nthe returned UploadRef is used to\nupload the bytes for the Photo.\n\nIn addition to the photo requirements shown in\nhttps://support.google.com/maps/answer/7012050?hl=en&ref_topic=6275604,\nthe photo must also meet the following requirements:\n\n* Photo Sphere XMP metadata must be included in the photo medadata. See\nhttps://developers.google.com/streetview/spherical-metadata for the\nrequired fields.\n* The pixel size of the photo must meet the size requirements listed in\nhttps://support.google.com/maps/answer/7012050?hl=en&ref_topic=6275604, and\nthe photo must be a full 360 horizontally.\n\nAfter the upload is complete, the\nUploadRef is used with\nCreatePhoto\nto create the Photo object entry.",
-                    "httpMethod": "POST",
-                    "id": "streetviewpublish.photo.startUpload",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1/photo:startUpload",
-                    "request": {
-                        "$ref": "Empty"
-                    },
-                    "response": {
-                        "$ref": "UploadRef"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/streetviewpublish"
-                    ]
-                },
-                "delete": {
-                    "description": "Deletes a Photo and its metadata.\n\nThis method returns the following error codes:\n\n* google.rpc.Code.PERMISSION_DENIED if the requesting user did not\ncreate the requested photo.\n* google.rpc.Code.NOT_FOUND if the photo ID does not exist.",
-                    "httpMethod": "DELETE",
-                    "id": "streetviewpublish.photo.delete",
-                    "parameterOrder": [
-                        "photoId"
-                    ],
-                    "parameters": {
-                        "photoId": {
-                            "description": "Required. ID of the Photo.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/photo/{photoId}",
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/streetviewpublish"
-                    ]
-                },
                 "get": {
                     "description": "Gets the metadata of the specified\nPhoto.\n\nThis method returns the following error codes:\n\n* google.rpc.Code.PERMISSION_DENIED if the requesting user did not\ncreate the requested Photo.\n* google.rpc.Code.NOT_FOUND if the requested\nPhoto does not exist.",
                     "httpMethod": "GET",
@@ -344,150 +304,53 @@
                     "scopes": [
                         "https://www.googleapis.com/auth/streetviewpublish"
                     ]
+                },
+                "startUpload": {
+                    "description": "Creates an upload session to start uploading photo bytes. The upload URL of\nthe returned UploadRef is used to\nupload the bytes for the Photo.\n\nIn addition to the photo requirements shown in\nhttps://support.google.com/maps/answer/7012050?hl=en&ref_topic=6275604,\nthe photo must also meet the following requirements:\n\n* Photo Sphere XMP metadata must be included in the photo medadata. See\nhttps://developers.google.com/streetview/spherical-metadata for the\nrequired fields.\n* The pixel size of the photo must meet the size requirements listed in\nhttps://support.google.com/maps/answer/7012050?hl=en&ref_topic=6275604, and\nthe photo must be a full 360 horizontally.\n\nAfter the upload is complete, the\nUploadRef is used with\nCreatePhoto\nto create the Photo object entry.",
+                    "httpMethod": "POST",
+                    "id": "streetviewpublish.photo.startUpload",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/photo:startUpload",
+                    "request": {
+                        "$ref": "Empty"
+                    },
+                    "response": {
+                        "$ref": "UploadRef"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/streetviewpublish"
+                    ]
+                },
+                "delete": {
+                    "description": "Deletes a Photo and its metadata.\n\nThis method returns the following error codes:\n\n* google.rpc.Code.PERMISSION_DENIED if the requesting user did not\ncreate the requested photo.\n* google.rpc.Code.NOT_FOUND if the photo ID does not exist.",
+                    "httpMethod": "DELETE",
+                    "id": "streetviewpublish.photo.delete",
+                    "parameterOrder": [
+                        "photoId"
+                    ],
+                    "parameters": {
+                        "photoId": {
+                            "description": "Required. ID of the Photo.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/photo/{photoId}",
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/streetviewpublish"
+                    ]
                 }
             }
         }
     },
-    "revision": "20171003",
+    "revision": "20171019",
     "rootUrl": "https://streetviewpublish.googleapis.com/",
     "schemas": {
-        "BatchUpdatePhotosRequest": {
-            "description": "Request to update the metadata of photos.\nUpdating the pixels of photos is not supported.",
-            "id": "BatchUpdatePhotosRequest",
-            "properties": {
-                "updatePhotoRequests": {
-                    "description": "Required. List of\nUpdatePhotoRequests.",
-                    "items": {
-                        "$ref": "UpdatePhotoRequest"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ListPhotosResponse": {
-            "description": "Response to list all photos that belong to a user.",
-            "id": "ListPhotosResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Token to retrieve the next page of results, or empty if there are no more\nresults in the list.",
-                    "type": "string"
-                },
-                "photos": {
-                    "description": "List of photos. The maximum number of items returned is based on the\npageSize field\nin the request.",
-                    "items": {
-                        "$ref": "Photo"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Photo": {
-            "description": "Photo is used to store 360 photos along with photo metadata.",
-            "id": "Photo",
-            "properties": {
-                "captureTime": {
-                    "description": "Absolute time when the photo was captured.\nWhen the photo has no exif timestamp, this is used to set a timestamp in\nthe photo metadata.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "thumbnailUrl": {
-                    "description": "Output only. The thumbnail URL for showing a preview of the given photo.",
-                    "type": "string"
-                },
-                "viewCount": {
-                    "description": "Output only. View count of the photo.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "downloadUrl": {
-                    "description": "Output only. The download URL for the photo bytes. This field is set only\nwhen\nGetPhotoRequest.view\nis set to\nPhotoView.INCLUDE_DOWNLOAD_URL.",
-                    "type": "string"
-                },
-                "connections": {
-                    "description": "Connections to other photos. A connection represents the link from this\nphoto to another photo.",
-                    "items": {
-                        "$ref": "Connection"
-                    },
-                    "type": "array"
-                },
-                "places": {
-                    "description": "Places where this photo belongs.",
-                    "items": {
-                        "$ref": "Place"
-                    },
-                    "type": "array"
-                },
-                "uploadReference": {
-                    "$ref": "UploadRef",
-                    "description": "Required when creating a photo. Input only. The resource URL where the\nphoto bytes are uploaded to."
-                },
-                "photoId": {
-                    "$ref": "PhotoId",
-                    "description": "Required when updating a photo. Output only when creating a photo.\nIdentifier for the photo, which is unique among all photos in\nGoogle."
-                },
-                "pose": {
-                    "$ref": "Pose",
-                    "description": "Pose of the photo."
-                },
-                "shareLink": {
-                    "description": "Output only. The share link for the photo.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Operation": {
-            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
-            "id": "Operation",
-            "properties": {
-                "done": {
-                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
-                    "type": "boolean"
-                },
-                "response": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
-                    "type": "string"
-                },
-                "error": {
-                    "$ref": "Status",
-                    "description": "The error result of the operation in case of failure or cancellation."
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "PhotoResponse": {
-            "description": "Response payload for a single\nPhoto\nin batch operations including\nBatchGetPhotos\nand\nBatchUpdatePhotos.",
-            "id": "PhotoResponse",
-            "properties": {
-                "status": {
-                    "$ref": "Status",
-                    "description": "The status for the operation to get or update a single photo in the batch\nrequest."
-                },
-                "photo": {
-                    "$ref": "Photo",
-                    "description": "The Photo resource, if the request\nwas successful."
-                }
-            },
-            "type": "object"
-        },
         "Connection": {
             "description": "A connection is the link from a source photo to a destination photo.",
             "id": "Connection",
@@ -554,48 +417,26 @@
             },
             "type": "object"
         },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
         "Level": {
             "description": "Level information containing level number and its corresponding name.",
             "id": "Level",
             "properties": {
-                "name": {
-                    "description": "Required. A name assigned to this Level, restricted to 3 characters.\nConsider how the elevator buttons would be labeled for this level if there\nwas an elevator.",
-                    "type": "string"
-                },
                 "number": {
                     "description": "Floor number, used for ordering. 0 indicates the ground level, 1 indicates\nthe first level above ground level, -1 indicates the first level under\nground level. Non-integer values are OK.",
                     "format": "double",
                     "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "UploadRef": {
-            "description": "Upload reference for media files.",
-            "id": "UploadRef",
-            "properties": {
-                "uploadUrl": {
-                    "description": "Required. An upload reference should be unique for each user. It follows\nthe form:\n\"https://streetviewpublish.googleapis.com/media/user/{account_id}/photo/{upload_reference}\"",
+                },
+                "name": {
+                    "description": "Required. A name assigned to this Level, restricted to 3 characters.\nConsider how the elevator buttons would be labeled for this level if there\nwas an elevator.",
                     "type": "string"
                 }
             },
             "type": "object"
         },
-        "Place": {
-            "description": "Place metadata for an entity.",
-            "id": "Place",
-            "properties": {
-                "placeId": {
-                    "description": "Place identifier, as described in\nhttps://developers.google.com/places/place-id.",
-                    "type": "string"
-                }
-            },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
             "type": "object"
         },
         "BatchGetPhotosResponse": {
@@ -612,16 +453,24 @@
             },
             "type": "object"
         },
-        "BatchDeletePhotosRequest": {
-            "description": "Request to delete multiple Photos.",
-            "id": "BatchDeletePhotosRequest",
+        "Place": {
+            "description": "Place metadata for an entity.",
+            "id": "Place",
             "properties": {
-                "photoIds": {
-                    "description": "Required. IDs of the Photos. For HTTP\nGET requests, the URL query parameter should be\n`photoIds=<id1>&photoIds=<id2>&...`.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
+                "placeId": {
+                    "description": "Place identifier, as described in\nhttps://developers.google.com/places/place-id.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "UploadRef": {
+            "description": "Upload reference for media files.",
+            "id": "UploadRef",
+            "properties": {
+                "uploadUrl": {
+                    "description": "Required. An upload reference should be unique for each user. It follows\nthe form:\n\"https://streetviewpublish.googleapis.com/media/user/{account_id}/photo/{upload_reference}\"",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -643,6 +492,20 @@
             },
             "type": "object"
         },
+        "BatchDeletePhotosRequest": {
+            "description": "Request to delete multiple Photos.",
+            "id": "BatchDeletePhotosRequest",
+            "properties": {
+                "photoIds": {
+                    "description": "Required. IDs of the Photos. For HTTP\nGET requests, the URL query parameter should be\n`photoIds=<id1>&photoIds=<id2>&...`.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "UpdatePhotoRequest": {
             "description": "Request to update the metadata of a\nPhoto. Updating the pixels of a photo\nis not supported.",
             "id": "UpdatePhotoRequest",
@@ -659,21 +522,19 @@
             },
             "type": "object"
         },
-        "PhotoId": {
-            "description": "Identifier for a Photo.",
-            "id": "PhotoId",
-            "properties": {
-                "id": {
-                    "description": "Required. A unique identifier for a photo.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "Pose": {
             "description": "Raw pose measurement for an entity.",
             "id": "Pose",
             "properties": {
+                "latLngPair": {
+                    "$ref": "LatLng",
+                    "description": "Latitude and longitude pair of the pose, as explained here:\nhttps://cloud.google.com/datastore/docs/reference/rest/Shared.Types/LatLng\nWhen creating a Photo, if the\nlatitude and longitude pair are not provided here, the geolocation from the\nexif header will be used. If the latitude and longitude pair is not\nprovided and cannot be found in the exif header, the create photo process\nwill fail."
+                },
+                "roll": {
+                    "description": "Roll, measured in degrees. Value must be >= 0 and <360. A value of 0\nmeans level with the horizon.\nNaN indicates an unmeasured quantity.",
+                    "format": "double",
+                    "type": "number"
+                },
                 "level": {
                     "$ref": "Level",
                     "description": "Level (the floor in a building) used to configure vertical navigation."
@@ -692,15 +553,154 @@
                     "description": "Pitch, measured at the center of the photo in degrees. Value must be >=-90\nand <= 90. A value of -90 means looking directly down, and a value of 90\nmeans looking directly up.\nNaN indicates an unmeasured quantity.",
                     "format": "double",
                     "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "PhotoId": {
+            "description": "Identifier for a Photo.",
+            "id": "PhotoId",
+            "properties": {
+                "id": {
+                    "description": "Required. A unique identifier for a photo.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "BatchUpdatePhotosRequest": {
+            "description": "Request to update the metadata of photos.\nUpdating the pixels of photos is not supported.",
+            "id": "BatchUpdatePhotosRequest",
+            "properties": {
+                "updatePhotoRequests": {
+                    "description": "Required. List of\nUpdatePhotoRequests.",
+                    "items": {
+                        "$ref": "UpdatePhotoRequest"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListPhotosResponse": {
+            "description": "Response to list all photos that belong to a user.",
+            "id": "ListPhotosResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Token to retrieve the next page of results, or empty if there are no more\nresults in the list.",
+                    "type": "string"
                 },
-                "latLngPair": {
-                    "$ref": "LatLng",
-                    "description": "Latitude and longitude pair of the pose, as explained here:\nhttps://cloud.google.com/datastore/docs/reference/rest/Shared.Types/LatLng\nWhen creating a Photo, if the\nlatitude and longitude pair are not provided here, the geolocation from the\nexif header will be used. If the latitude and longitude pair is not\nprovided and cannot be found in the exif header, the create photo process\nwill fail."
+                "photos": {
+                    "description": "List of photos. The maximum number of items returned is based on the\npageSize field\nin the request.",
+                    "items": {
+                        "$ref": "Photo"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Photo": {
+            "description": "Photo is used to store 360 photos along with photo metadata.",
+            "id": "Photo",
+            "properties": {
+                "downloadUrl": {
+                    "description": "Output only. The download URL for the photo bytes. This field is set only\nwhen\nGetPhotoRequest.view\nis set to\nPhotoView.INCLUDE_DOWNLOAD_URL.",
+                    "type": "string"
                 },
-                "roll": {
-                    "description": "Roll, measured in degrees. Value must be >= 0 and <360. A value of 0\nmeans level with the horizon.\nNaN indicates an unmeasured quantity.",
-                    "format": "double",
-                    "type": "number"
+                "places": {
+                    "description": "Places where this photo belongs.",
+                    "items": {
+                        "$ref": "Place"
+                    },
+                    "type": "array"
+                },
+                "connections": {
+                    "description": "Connections to other photos. A connection represents the link from this\nphoto to another photo.",
+                    "items": {
+                        "$ref": "Connection"
+                    },
+                    "type": "array"
+                },
+                "uploadReference": {
+                    "$ref": "UploadRef",
+                    "description": "Required when creating a photo. Input only. The resource URL where the\nphoto bytes are uploaded to."
+                },
+                "pose": {
+                    "$ref": "Pose",
+                    "description": "Pose of the photo."
+                },
+                "photoId": {
+                    "$ref": "PhotoId",
+                    "description": "Required when updating a photo. Output only when creating a photo.\nIdentifier for the photo, which is unique among all photos in\nGoogle."
+                },
+                "shareLink": {
+                    "description": "Output only. The share link for the photo.",
+                    "type": "string"
+                },
+                "thumbnailUrl": {
+                    "description": "Output only. The thumbnail URL for showing a preview of the given photo.",
+                    "type": "string"
+                },
+                "captureTime": {
+                    "description": "Absolute time when the photo was captured.\nWhen the photo has no exif timestamp, this is used to set a timestamp in\nthe photo metadata.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "viewCount": {
+                    "description": "Output only. View count of the photo.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+            "id": "Operation",
+            "properties": {
+                "done": {
+                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+                    "type": "boolean"
+                },
+                "response": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+                    "type": "string"
+                },
+                "error": {
+                    "$ref": "Status",
+                    "description": "The error result of the operation in case of failure or cancellation."
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "PhotoResponse": {
+            "description": "Response payload for a single\nPhoto\nin batch operations including\nBatchGetPhotos\nand\nBatchUpdatePhotos.",
+            "id": "PhotoResponse",
+            "properties": {
+                "status": {
+                    "$ref": "Status",
+                    "description": "The status for the operation to get or update a single photo in the batch\nrequest."
+                },
+                "photo": {
+                    "$ref": "Photo",
+                    "description": "The Photo resource, if the request\nwas successful."
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/testing__v1.json b/discovery/googleapis/testing__v1.json
new file mode 100644
index 0000000..4c9ebf4
--- /dev/null
+++ b/discovery/googleapis/testing__v1.json
@@ -0,0 +1,1343 @@
+{
+    "auth": {
+        "oauth2": {
+            "scopes": {
+                "https://www.googleapis.com/auth/cloud-platform.read-only": {
+                    "description": "View your data across Google Cloud Platform services"
+                },
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "View and manage your data across Google Cloud Platform services"
+                }
+            }
+        }
+    },
+    "basePath": "",
+    "baseUrl": "https://testing.googleapis.com/",
+    "batchPath": "batch",
+    "description": "Allows developers to run automated tests for their mobile applications on Google infrastructure.",
+    "discoveryVersion": "v1",
+    "documentationLink": "https://developers.google.com/cloud-test-lab/",
+    "icons": {
+        "x16": "http://www.google.com/images/icons/product/search-16.gif",
+        "x32": "http://www.google.com/images/icons/product/search-32.gif"
+    },
+    "id": "testing:v1",
+    "kind": "discovery#restDescription",
+    "name": "testing",
+    "ownerDomain": "google.com",
+    "ownerName": "Google",
+    "parameters": {
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
+        "$.xgafv": {
+            "description": "V1 error format.",
+            "enum": [
+                "1",
+                "2"
+            ],
+            "enumDescriptions": [
+                "v1 error format",
+                "v2 error format"
+            ],
+            "location": "query",
+            "type": "string"
+        },
+        "alt": {
+            "default": "json",
+            "description": "Data format for response.",
+            "enum": [
+                "json",
+                "media",
+                "proto"
+            ],
+            "enumDescriptions": [
+                "Responses with Content-Type of application/json",
+                "Media download with context-dependent Content-Type",
+                "Responses with Content-Type of application/x-protobuf"
+            ],
+            "location": "query",
+            "type": "string"
+        }
+    },
+    "protocol": "rest",
+    "resources": {
+        "projects": {
+            "resources": {
+                "testMatrices": {
+                    "methods": {
+                        "get": {
+                            "description": "Check the status of a test matrix.\n\nMay return any of the following canonical error codes:\n\n- PERMISSION_DENIED - if the user is not authorized to read project\n- INVALID_ARGUMENT - if the request is malformed\n- NOT_FOUND - if the Test Matrix does not exist",
+                            "httpMethod": "GET",
+                            "id": "testing.projects.testMatrices.get",
+                            "parameterOrder": [
+                                "projectId",
+                                "testMatrixId"
+                            ],
+                            "parameters": {
+                                "testMatrixId": {
+                                    "description": "Unique test matrix id which was assigned by the service.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "projectId": {
+                                    "description": "Cloud project that owns the test matrix.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/projects/{projectId}/testMatrices/{testMatrixId}",
+                            "response": {
+                                "$ref": "TestMatrix"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        },
+                        "create": {
+                            "description": "Request to run a matrix of tests according to the given specifications.\nUnsupported environments will be returned in the state UNSUPPORTED.\nMatrices are limited to at most 200 supported executions.\n\nMay return any of the following canonical error codes:\n\n- PERMISSION_DENIED - if the user is not authorized to write to project\n- INVALID_ARGUMENT - if the request is malformed or if the matrix expands\n                     to more than 200 supported executions",
+                            "httpMethod": "POST",
+                            "id": "testing.projects.testMatrices.create",
+                            "parameterOrder": [
+                                "projectId"
+                            ],
+                            "parameters": {
+                                "requestId": {
+                                    "description": "A string id used to detect duplicated requests.\nIds are automatically scoped to a project, so\nusers should ensure the ID is unique per-project.\nA UUID is recommended.\n\nOptional, but strongly recommended.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "projectId": {
+                                    "description": "The GCE project under which this job will run.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/projects/{projectId}/testMatrices",
+                            "request": {
+                                "$ref": "TestMatrix"
+                            },
+                            "response": {
+                                "$ref": "TestMatrix"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "cancel": {
+                            "description": "Cancels unfinished test executions in a test matrix.\nThis call returns immediately and cancellation proceeds asychronously.\nIf the matrix is already final, this operation will have no effect.\n\nMay return any of the following canonical error codes:\n\n- PERMISSION_DENIED - if the user is not authorized to read project\n- INVALID_ARGUMENT - if the request is malformed\n- NOT_FOUND - if the Test Matrix does not exist",
+                            "httpMethod": "POST",
+                            "id": "testing.projects.testMatrices.cancel",
+                            "parameterOrder": [
+                                "projectId",
+                                "testMatrixId"
+                            ],
+                            "parameters": {
+                                "projectId": {
+                                    "description": "Cloud project that owns the test.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "testMatrixId": {
+                                    "description": "Test matrix that will be canceled.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/projects/{projectId}/testMatrices/{testMatrixId}:cancel",
+                            "response": {
+                                "$ref": "CancelTestMatrixResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        "testEnvironmentCatalog": {
+            "methods": {
+                "get": {
+                    "description": "Get the catalog of supported test environments.\n\nMay return any of the following canonical error codes:\n\n- INVALID_ARGUMENT - if the request is malformed\n- NOT_FOUND - if the environment type does not exist\n- INTERNAL - if an internal error occurred",
+                    "httpMethod": "GET",
+                    "id": "testing.testEnvironmentCatalog.get",
+                    "parameterOrder": [
+                        "environmentType"
+                    ],
+                    "parameters": {
+                        "projectId": {
+                            "description": "For authorization, the cloud project requesting the TestEnvironmentCatalog.\nOptional",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "environmentType": {
+                            "description": "The type of environment that should be listed.\nRequired",
+                            "enum": [
+                                "ENVIRONMENT_TYPE_UNSPECIFIED",
+                                "ANDROID",
+                                "NETWORK_CONFIGURATION"
+                            ],
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/testEnvironmentCatalog/{environmentType}",
+                    "response": {
+                        "$ref": "TestEnvironmentCatalog"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
+                }
+            }
+        }
+    },
+    "revision": "20171019",
+    "rootUrl": "https://testing.googleapis.com/",
+    "schemas": {
+        "GoogleAuto": {
+            "description": "Enables automatic Google account login.\nIf set, the service will automatically generate a Google test account and add\nit to the device, before executing the test. Note that test accounts might be\nreused.\nMany applications show their full set of functionalities when an account is\npresent on the device. Logging into the device with these generated accounts\nallows testing more functionalities.",
+            "id": "GoogleAuto",
+            "properties": {},
+            "type": "object"
+        },
+        "AndroidDeviceCatalog": {
+            "description": "The currently supported Android devices.",
+            "id": "AndroidDeviceCatalog",
+            "properties": {
+                "runtimeConfiguration": {
+                    "$ref": "AndroidRuntimeConfiguration",
+                    "description": "The set of supported runtime configurations.\n@OutputOnly"
+                },
+                "versions": {
+                    "description": "The set of supported Android OS versions.\n@OutputOnly",
+                    "items": {
+                        "$ref": "AndroidVersion"
+                    },
+                    "type": "array"
+                },
+                "models": {
+                    "description": "The set of supported Android device models.\n@OutputOnly",
+                    "items": {
+                        "$ref": "AndroidModel"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AndroidDeviceList": {
+            "description": "A list of Android device configurations in which the test is to be executed.",
+            "id": "AndroidDeviceList",
+            "properties": {
+                "androidDevices": {
+                    "description": "A list of Android devices\nRequired",
+                    "items": {
+                        "$ref": "AndroidDevice"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ClientInfo": {
+            "description": "Information about the client which invoked the test.",
+            "id": "ClientInfo",
+            "properties": {
+                "clientInfoDetails": {
+                    "description": "The list of detailed information about client.",
+                    "items": {
+                        "$ref": "ClientInfoDetail"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "Client name, such as gcloud.\nRequired",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnvironmentMatrix": {
+            "description": "The matrix of environments in which the test is to be executed.",
+            "id": "EnvironmentMatrix",
+            "properties": {
+                "androidDeviceList": {
+                    "$ref": "AndroidDeviceList",
+                    "description": "A list of Android devices; the test will be run only on the specified\ndevices."
+                },
+                "androidMatrix": {
+                    "$ref": "AndroidMatrix",
+                    "description": "A matrix of Android devices."
+                }
+            },
+            "type": "object"
+        },
+        "CancelTestMatrixResponse": {
+            "description": "Response containing the current state of the specified test matrix.",
+            "id": "CancelTestMatrixResponse",
+            "properties": {
+                "testState": {
+                    "description": "The current rolled-up state of the test matrix.\nIf this state is already final, then the cancelation request will\nhave no effect.",
+                    "enum": [
+                        "TEST_STATE_UNSPECIFIED",
+                        "VALIDATING",
+                        "PENDING",
+                        "RUNNING",
+                        "FINISHED",
+                        "ERROR",
+                        "UNSUPPORTED_ENVIRONMENT",
+                        "INCOMPATIBLE_ENVIRONMENT",
+                        "INCOMPATIBLE_ARCHITECTURE",
+                        "CANCELLED",
+                        "INVALID"
+                    ],
+                    "enumDescriptions": [
+                        "Do not use.  For proto versioning only.",
+                        "The execution or matrix is being validated.",
+                        "The execution or matrix is waiting for resources to become available.",
+                        "The execution is currently being processed.\n\nCan only be set on an execution.",
+                        "The execution or matrix has terminated normally.\n\nOn a matrix this means that the matrix level processing completed normally,\nbut individual executions may be in an ERROR state.",
+                        "The execution or matrix has stopped because it encountered an\ninfrastructure failure.",
+                        "The execution was not run because it corresponds to a unsupported\nenvironment.\n\nCan only be set on an execution.",
+                        "The execution was not run because the provided inputs are incompatible with\nthe requested environment.\n\nExample: requested AndroidVersion is lower than APK's minSdkVersion\n\nCan only be set on an execution.",
+                        "The execution was not run because the provided inputs are incompatible with\nthe requested architecture.\n\nExample: requested device does not support running the native code in\nthe supplied APK\n\nCan only be set on an execution.",
+                        "The user cancelled the execution.\n\nCan only be set on an execution.",
+                        "The execution or matrix was not run because the provided inputs are not\nvalid.\n\nExamples: input file is not of the expected type, is malformed/corrupt, or\nwas flagged as malware"
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Date": {
+            "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.",
+            "id": "Date",
+            "properties": {
+                "day": {
+                    "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "year": {
+                    "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "month": {
+                    "description": "Month of year. Must be from 1 to 12.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "Account": {
+            "description": "Identifies an account and how to log into it",
+            "id": "Account",
+            "properties": {
+                "googleAuto": {
+                    "$ref": "GoogleAuto",
+                    "description": "An automatic google login account"
+                }
+            },
+            "type": "object"
+        },
+        "TestEnvironmentCatalog": {
+            "description": "A description of a test environment.",
+            "id": "TestEnvironmentCatalog",
+            "properties": {
+                "androidDeviceCatalog": {
+                    "$ref": "AndroidDeviceCatalog",
+                    "description": "Android devices suitable for running Android Instrumentation Tests."
+                },
+                "networkConfigurationCatalog": {
+                    "$ref": "NetworkConfigurationCatalog",
+                    "description": "Supported network configurations"
+                }
+            },
+            "type": "object"
+        },
+        "Locale": {
+            "description": "A location/region designation for language.",
+            "id": "Locale",
+            "properties": {
+                "tags": {
+                    "description": "Tags for this dimension.\nExamples: \"default\"",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "id": {
+                    "description": "The id for this locale.\nExample: \"en_US\"\n@OutputOnly",
+                    "type": "string"
+                },
+                "region": {
+                    "description": "A human-friendy string representing the region for this locale.\nExample: \"United States\"\nNot present for every locale.\n@OutputOnly",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "A human-friendly name for this language/locale.\nExample: \"English\"\n@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ObbFile": {
+            "description": "An opaque binary blob file to install on the device before the test starts",
+            "id": "ObbFile",
+            "properties": {
+                "obb": {
+                    "$ref": "FileReference",
+                    "description": "Opaque Binary Blob (OBB) file(s) to install on the device\nRequired"
+                },
+                "obbFileName": {
+                    "description": "OBB file name which must conform to the format as specified by\nAndroid\ne.g. [main|patch].0300110.com.example.android.obb\nwhich will be installed into\n  <shared-storage>/Android/obb/<package-name>/\non the device\nRequired",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AndroidRuntimeConfiguration": {
+            "description": "Configuration that can be selected at the time a test is run.",
+            "id": "AndroidRuntimeConfiguration",
+            "properties": {
+                "orientations": {
+                    "description": "The set of available orientations.\n@OutputOnly",
+                    "items": {
+                        "$ref": "Orientation"
+                    },
+                    "type": "array"
+                },
+                "locales": {
+                    "description": "The set of available locales.\n@OutputOnly",
+                    "items": {
+                        "$ref": "Locale"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AndroidDevice": {
+            "description": "A single Android device.",
+            "id": "AndroidDevice",
+            "properties": {
+                "orientation": {
+                    "description": "How the device is oriented during the test.\nUse the EnvironmentDiscoveryService to get supported options.\nRequired",
+                    "type": "string"
+                },
+                "locale": {
+                    "description": "The locale the test device used for testing.\nUse the EnvironmentDiscoveryService to get supported options.\nRequired",
+                    "type": "string"
+                },
+                "androidVersionId": {
+                    "description": "The id of the Android OS version to be used.\nUse the EnvironmentDiscoveryService to get supported options.\nRequired",
+                    "type": "string"
+                },
+                "androidModelId": {
+                    "description": "The id of the Android device to be used.\nUse the EnvironmentDiscoveryService to get supported options.\nRequired",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "NetworkConfiguration": {
+            "id": "NetworkConfiguration",
+            "properties": {
+                "downRule": {
+                    "$ref": "TrafficRule",
+                    "description": "The emulation rule applying to the download traffic"
+                },
+                "id": {
+                    "description": "The unique opaque id for this network traffic configuration\n@OutputOnly",
+                    "type": "string"
+                },
+                "upRule": {
+                    "$ref": "TrafficRule",
+                    "description": "The emulation rule applying to the upload traffic"
+                }
+            },
+            "type": "object"
+        },
+        "ToolResultsStep": {
+            "description": "Represents a tool results step resource.\n\nThis has the results of a TestExecution.",
+            "id": "ToolResultsStep",
+            "properties": {
+                "executionId": {
+                    "description": "A tool results execution ID.\n@OutputOnly",
+                    "type": "string"
+                },
+                "stepId": {
+                    "description": "A tool results step ID.\n@OutputOnly",
+                    "type": "string"
+                },
+                "historyId": {
+                    "description": "A tool results history ID.\n@OutputOnly",
+                    "type": "string"
+                },
+                "projectId": {
+                    "description": "The cloud project that owns the tool results step.\n@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TrafficRule": {
+            "description": "Network emulation parameters",
+            "id": "TrafficRule",
+            "properties": {
+                "packetLossRatio": {
+                    "description": "Packet loss ratio (0.0 - 1.0)",
+                    "format": "float",
+                    "type": "number"
+                },
+                "burst": {
+                    "description": "Burst size in kbits",
+                    "format": "float",
+                    "type": "number"
+                },
+                "bandwidth": {
+                    "description": "Bandwidth in kbits/second",
+                    "format": "float",
+                    "type": "number"
+                },
+                "packetDuplicationRatio": {
+                    "description": "Packet duplication ratio (0.0 - 1.0)",
+                    "format": "float",
+                    "type": "number"
+                },
+                "delay": {
+                    "description": "Packet delay, must be >= 0",
+                    "format": "google-duration",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AndroidInstrumentationTest": {
+            "description": "A test of an Android application that can control an Android component\nindependently of its normal lifecycle.\nAndroid instrumentation tests run an application APK and test APK inside the\nsame process on a virtual or physical AndroidDevice.  They also specify\na test runner class, such as com.google.GoogleTestRunner, which can vary\non the specific instrumentation framework chosen.\n\nSee <http://developer.android.com/tools/testing/testing_android.html> for\nmore information on types of Android tests.",
+            "id": "AndroidInstrumentationTest",
+            "properties": {
+                "orchestratorOption": {
+                    "description": "The option of whether running each test within its own invocation of\ninstrumentation with Android Test Orchestrator or not.\n** Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or\nhigher! **\nOrchestrator offers the following benefits:\n - No shared state\n - Crashes are isolated\n - Logs are scoped per test\n\nSee\n<https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator>\nfor more information about Android Test Orchestrator.\n\nOptional, if empty, test will be run without orchestrator.",
+                    "enum": [
+                        "ORCHESTRATOR_OPTION_UNSPECIFIED",
+                        "USE_ORCHESTRATOR",
+                        "DO_NOT_USE_ORCHESTRATOR"
+                    ],
+                    "enumDescriptions": [
+                        "This means that the server should choose the mode. And test will be run\nwithout orchestrator.\nUsing orchestrator is highly encouraged because of all the benefits it\noffers. And in the future, all instrumentation tests will be run with\norchestrator by default if preference unspecified.",
+                        "Run test using orchestrator.\n** Only compatible with AndroidJUnitRunner version 1.0 or higher! **\nRecommended.",
+                        "Run test without using orchestrator."
+                    ],
+                    "type": "string"
+                },
+                "testTargets": {
+                    "description": "Each target must be fully qualified with the package name or class name,\nin one of these formats:\n - \"package package_name\"\n - \"class package_name.class_name\"\n - \"class package_name.class_name#method_name\"\n\nOptional, if empty, all targets in the module will be run.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "testApk": {
+                    "$ref": "FileReference",
+                    "description": "The APK containing the test code to be executed.\nRequired"
+                },
+                "testRunnerClass": {
+                    "description": "The InstrumentationTestRunner class.\nOptional, default is determined by examining the application's manifest.",
+                    "type": "string"
+                },
+                "testPackageId": {
+                    "description": "The java package for the test to be executed.\nOptional, default is determined by examining the application's manifest.",
+                    "type": "string"
+                },
+                "appPackageId": {
+                    "description": "The java package for the application under test.\nOptional, default is determined by examining the application's manifest.",
+                    "type": "string"
+                },
+                "appApk": {
+                    "$ref": "FileReference",
+                    "description": "The APK for the application under test.\nRequired"
+                }
+            },
+            "type": "object"
+        },
+        "DeviceFile": {
+            "description": "A single device file description.",
+            "id": "DeviceFile",
+            "properties": {
+                "obbFile": {
+                    "$ref": "ObbFile",
+                    "description": "A reference to an opaque binary blob file"
+                }
+            },
+            "type": "object"
+        },
+        "ClientInfoDetail": {
+            "description": "Key-value pair of detailed information about the client which invoked the\ntest. For example {'Version', '1.0'}, {'Release Track', 'BETA'}",
+            "id": "ClientInfoDetail",
+            "properties": {
+                "value": {
+                    "description": "The value of detailed client information.\nRequired",
+                    "type": "string"
+                },
+                "key": {
+                    "description": "The key of detailed client information.\nRequired",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EnvironmentVariable": {
+            "description": "A key-value pair passed as an environment variable to the test",
+            "id": "EnvironmentVariable",
+            "properties": {
+                "value": {
+                    "description": "Value for the environment variable",
+                    "type": "string"
+                },
+                "key": {
+                    "description": "Key for the environment variable",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Environment": {
+            "description": "The environment in which the test is run.",
+            "id": "Environment",
+            "properties": {
+                "androidDevice": {
+                    "$ref": "AndroidDevice",
+                    "description": "An Android device which must be used with an Android test."
+                }
+            },
+            "type": "object"
+        },
+        "TestExecution": {
+            "description": "Specifies a single test to be executed in a single environment.",
+            "id": "TestExecution",
+            "properties": {
+                "testDetails": {
+                    "$ref": "TestDetails",
+                    "description": "Additional details about the running test.\n@OutputOnly"
+                },
+                "matrixId": {
+                    "description": "Id of the containing TestMatrix.\n@OutputOnly",
+                    "type": "string"
+                },
+                "environment": {
+                    "$ref": "Environment",
+                    "description": "How the host machine(s) are configured.\n@OutputOnly"
+                },
+                "state": {
+                    "description": "Indicates the current progress of the test execution (e.g., FINISHED).\n@OutputOnly",
+                    "enum": [
+                        "TEST_STATE_UNSPECIFIED",
+                        "VALIDATING",
+                        "PENDING",
+                        "RUNNING",
+                        "FINISHED",
+                        "ERROR",
+                        "UNSUPPORTED_ENVIRONMENT",
+                        "INCOMPATIBLE_ENVIRONMENT",
+                        "INCOMPATIBLE_ARCHITECTURE",
+                        "CANCELLED",
+                        "INVALID"
+                    ],
+                    "enumDescriptions": [
+                        "Do not use.  For proto versioning only.",
+                        "The execution or matrix is being validated.",
+                        "The execution or matrix is waiting for resources to become available.",
+                        "The execution is currently being processed.\n\nCan only be set on an execution.",
+                        "The execution or matrix has terminated normally.\n\nOn a matrix this means that the matrix level processing completed normally,\nbut individual executions may be in an ERROR state.",
+                        "The execution or matrix has stopped because it encountered an\ninfrastructure failure.",
+                        "The execution was not run because it corresponds to a unsupported\nenvironment.\n\nCan only be set on an execution.",
+                        "The execution was not run because the provided inputs are incompatible with\nthe requested environment.\n\nExample: requested AndroidVersion is lower than APK's minSdkVersion\n\nCan only be set on an execution.",
+                        "The execution was not run because the provided inputs are incompatible with\nthe requested architecture.\n\nExample: requested device does not support running the native code in\nthe supplied APK\n\nCan only be set on an execution.",
+                        "The user cancelled the execution.\n\nCan only be set on an execution.",
+                        "The execution or matrix was not run because the provided inputs are not\nvalid.\n\nExamples: input file is not of the expected type, is malformed/corrupt, or\nwas flagged as malware"
+                    ],
+                    "type": "string"
+                },
+                "toolResultsStep": {
+                    "$ref": "ToolResultsStep",
+                    "description": "Where the results for this execution are written.\n@OutputOnly"
+                },
+                "projectId": {
+                    "description": "The cloud project that owns the test execution.\n@OutputOnly",
+                    "type": "string"
+                },
+                "testSpecification": {
+                    "$ref": "TestSpecification",
+                    "description": "How to run the test.\n@OutputOnly"
+                },
+                "id": {
+                    "description": "Unique id set by the backend.\n@OutputOnly",
+                    "type": "string"
+                },
+                "timestamp": {
+                    "description": "The time this test execution was initially created.\n@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudStorage": {
+            "description": "A storage location within Google cloud storage (GCS).",
+            "id": "GoogleCloudStorage",
+            "properties": {
+                "gcsPath": {
+                    "description": "The path to a directory in GCS that will\neventually contain the results for this test.\nThe requesting user must have write access on the bucket in the supplied\npath.\nRequired",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "RoboDirective": {
+            "description": "Directs Robo to interact with a specific UI element if it is encountered\nduring the crawl. Currently, Robo can perform text entry or element click.",
+            "id": "RoboDirective",
+            "properties": {
+                "actionType": {
+                    "description": "The type of action that Robo should perform on the specified element.\nRequired.",
+                    "enum": [
+                        "ACTION_TYPE_UNSPECIFIED",
+                        "SINGLE_CLICK",
+                        "ENTER_TEXT"
+                    ],
+                    "enumDescriptions": [
+                        "DO NOT USE. For proto versioning only.",
+                        "Direct Robo to click on the specified element. No-op if specified element\nis not clickable.",
+                        "Direct Robo to enter text on the specified element. No-op if specified\nelement is not enabled or does not allow text entry."
+                    ],
+                    "type": "string"
+                },
+                "inputText": {
+                    "description": "The text that Robo is directed to set. If left empty, the directive will be\ntreated as a CLICK on the element matching the resource_name.\nOptional",
+                    "type": "string"
+                },
+                "resourceName": {
+                    "description": "The android resource name of the target UI element\nFor example,\n   in Java: R.string.foo\n   in xml: @string/foo\nOnly the “foo” part is needed.\nReference doc:\nhttps://developer.android.com/guide/topics/resources/accessing-resources.html\nRequired",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AndroidMatrix": {
+            "description": "A set of Android device configuration permutations is defined by the\nthe cross-product of the given axes.  Internally, the given AndroidMatrix\nwill be expanded into a set of AndroidDevices.\n\nOnly supported permutations will be instantiated.  Invalid permutations\n(e.g., incompatible models/versions) are ignored.",
+            "id": "AndroidMatrix",
+            "properties": {
+                "androidModelIds": {
+                    "description": "The ids of the set of Android device to be used.\nUse the EnvironmentDiscoveryService to get supported options.\nRequired",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "orientations": {
+                    "description": "The set of orientations to test with.\nUse the EnvironmentDiscoveryService to get supported options.\nRequired",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "locales": {
+                    "description": "The set of locales the test device will enable for testing.\nUse the EnvironmentDiscoveryService to get supported options.\nRequired",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "androidVersionIds": {
+                    "description": "The ids of the set of Android OS version to be used.\nUse the EnvironmentDiscoveryService to get supported options.\nRequired",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AndroidModel": {
+            "description": "A description of an Android device tests may be run on.",
+            "id": "AndroidModel",
+            "properties": {
+                "name": {
+                    "description": "The human-readable marketing name for this device model.\nExamples: \"Nexus 5\", \"Galaxy S5\"\n@OutputOnly",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "The unique opaque id for this model.\nUse this for invoking the TestExecutionService.\n@OutputOnly",
+                    "type": "string"
+                },
+                "tags": {
+                    "description": "Tags for this dimension.\nExamples: \"default\", \"preview\", \"deprecated\"",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "manufacturer": {
+                    "description": "The manufacturer of this device.\n@OutputOnly",
+                    "type": "string"
+                },
+                "brand": {
+                    "description": "The company that this device is branded with.\nExample: \"Google\", \"Samsung\"\n@OutputOnly",
+                    "type": "string"
+                },
+                "screenX": {
+                    "description": "Screen size in the horizontal (X) dimension measured in pixels.\n@OutputOnly",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "codename": {
+                    "description": "The name of the industrial design.\nThis corresponds to android.os.Build.DEVICE\n@OutputOnly",
+                    "type": "string"
+                },
+                "screenY": {
+                    "description": "Screen size in the vertical (Y) dimension measured in pixels.\n@OutputOnly",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "form": {
+                    "description": "Whether this device is virtual or physical.\n@OutputOnly",
+                    "enum": [
+                        "DEVICE_FORM_UNSPECIFIED",
+                        "VIRTUAL",
+                        "PHYSICAL"
+                    ],
+                    "enumDescriptions": [
+                        "Do not use.  For proto versioning only.",
+                        "A software stack that simulates the device",
+                        "Actual hardware"
+                    ],
+                    "type": "string"
+                },
+                "screenDensity": {
+                    "description": "Screen density in DPI.\nThis corresponds to ro.sf.lcd_density\n@OutputOnly",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "supportedVersionIds": {
+                    "description": "The set of Android versions this device supports.\n@OutputOnly",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "supportedAbis": {
+                    "description": "The list of supported ABIs for this device.\nThis corresponds to either android.os.Build.SUPPORTED_ABIS (for API level\n21 and above) or android.os.Build.CPU_ABI/CPU_ABI2.\nThe most preferred ABI is the first element in the list.\n\nElements are optionally prefixed by \"version_id:\" (where version_id is\nthe id of an AndroidVersion), denoting an ABI that is supported only on\na particular version.\n@OutputOnly",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "TestSetup": {
+            "description": "A description of how to set up the device prior to running the test",
+            "id": "TestSetup",
+            "properties": {
+                "account": {
+                    "$ref": "Account",
+                    "description": "The device will be logged in on this account for the duration of the test.\nOptional"
+                },
+                "directoriesToPull": {
+                    "description": "List of directories on the device to upload to GCS at the end of the test;\nthey must be absolute paths under /sdcard or /data/local/tmp.\nPath names are restricted to characters a-z A-Z 0-9 _ - . + and /\n\nNote: The paths /sdcard and /data will be made available and treated as\nimplicit path substitutions. E.g. if /sdcard on a particular device does\nnot map to external storage, the system will replace it with the external\nstorage path prefix for that device.\n\nOptional",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "filesToPush": {
+                    "description": "List of files to push to the device before starting the test.\n\nOptional",
+                    "items": {
+                        "$ref": "DeviceFile"
+                    },
+                    "type": "array"
+                },
+                "networkProfile": {
+                    "description": "The network traffic profile used for running the test.\nOptional",
+                    "type": "string"
+                },
+                "environmentVariables": {
+                    "description": "Environment variables to set for the test (only applicable for\ninstrumentation tests).",
+                    "items": {
+                        "$ref": "EnvironmentVariable"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "TestSpecification": {
+            "description": "A description of how to run the test.",
+            "id": "TestSpecification",
+            "properties": {
+                "autoGoogleLogin": {
+                    "description": "Enables automatic Google account login.\nIf set, the service will automatically generate a Google test account and\nadd it to the device, before executing the test. Note that test accounts\nmight be reused.\nMany applications show their full set of functionalities when an account is\npresent on the device. Logging into the device with these generated\naccounts allows testing more functionalities.\nDefault is false.\nOptional",
+                    "type": "boolean"
+                },
+                "testSetup": {
+                    "$ref": "TestSetup",
+                    "description": "Test setup requirements e.g. files to install, bootstrap scripts\nOptional"
+                },
+                "androidTestLoop": {
+                    "$ref": "AndroidTestLoop",
+                    "description": "An Android Application with a Test Loop"
+                },
+                "androidRoboTest": {
+                    "$ref": "AndroidRoboTest",
+                    "description": "An Android robo test."
+                },
+                "androidInstrumentationTest": {
+                    "$ref": "AndroidInstrumentationTest",
+                    "description": "An Android instrumentation test."
+                },
+                "disablePerformanceMetrics": {
+                    "description": "Disables performance metrics recording; may reduce test latency.",
+                    "type": "boolean"
+                },
+                "disableVideoRecording": {
+                    "description": "Disables video recording; may reduce test latency.",
+                    "type": "boolean"
+                },
+                "testTimeout": {
+                    "description": "Max time a test execution is allowed to run before it is\nautomatically cancelled.\nOptional, default is 5 min.",
+                    "format": "google-duration",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ResultStorage": {
+            "description": "Locations where the results of running the test are stored.",
+            "id": "ResultStorage",
+            "properties": {
+                "toolResultsHistory": {
+                    "$ref": "ToolResultsHistory",
+                    "description": "The tool results history that contains the tool results execution that\nresults are written to.\n\nOptional, if not provided the service will choose an appropriate value."
+                },
+                "googleCloudStorage": {
+                    "$ref": "GoogleCloudStorage",
+                    "description": "Required."
+                },
+                "toolResultsExecution": {
+                    "$ref": "ToolResultsExecution",
+                    "description": "The tool results execution that results are written to.\n@OutputOnly"
+                }
+            },
+            "type": "object"
+        },
+        "TestMatrix": {
+            "description": "A group of one or more TestExecutions, built by taking a\nproduct of values over a pre-defined set of axes.",
+            "id": "TestMatrix",
+            "properties": {
+                "clientInfo": {
+                    "$ref": "ClientInfo",
+                    "description": "Information about the client which invoked the test.\nOptional"
+                },
+                "testExecutions": {
+                    "description": "The list of test executions that the service creates for this matrix.\n@OutputOnly",
+                    "items": {
+                        "$ref": "TestExecution"
+                    },
+                    "type": "array"
+                },
+                "timestamp": {
+                    "description": "The time this test matrix was initially created.\n@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "environmentMatrix": {
+                    "$ref": "EnvironmentMatrix",
+                    "description": "How the host machine(s) are configured.\nRequired"
+                },
+                "testMatrixId": {
+                    "description": "Unique id set by the service.\n@OutputOnly",
+                    "type": "string"
+                },
+                "resultStorage": {
+                    "$ref": "ResultStorage",
+                    "description": "Where the results for the matrix are written.\nRequired"
+                },
+                "invalidMatrixDetails": {
+                    "description": "Describes why the matrix is considered invalid.\nOnly useful for matrices in the INVALID state.\n@OutputOnly",
+                    "enum": [
+                        "INVALID_MATRIX_DETAILS_UNSPECIFIED",
+                        "DETAILS_UNAVAILABLE",
+                        "MALFORMED_APK",
+                        "MALFORMED_TEST_APK",
+                        "NO_MANIFEST",
+                        "NO_PACKAGE_NAME",
+                        "TEST_SAME_AS_APP",
+                        "NO_INSTRUMENTATION",
+                        "NO_SIGNATURE",
+                        "INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE",
+                        "NO_TEST_RUNNER_CLASS",
+                        "NO_LAUNCHER_ACTIVITY",
+                        "FORBIDDEN_PERMISSIONS",
+                        "INVALID_ROBO_DIRECTIVES",
+                        "TEST_LOOP_INTENT_FILTER_NOT_FOUND",
+                        "SCENARIO_LABEL_NOT_DECLARED",
+                        "SCENARIO_LABEL_MALFORMED",
+                        "SCENARIO_NOT_DECLARED",
+                        "DEVICE_ADMIN_RECEIVER",
+                        "TEST_ONLY_APK"
+                    ],
+                    "enumDescriptions": [
+                        "Do not use. For proto versioning only.",
+                        "The matrix is INVALID, but there are no further details available.",
+                        "The input app APK could not be parsed.",
+                        "The input test APK could not be parsed.",
+                        "The AndroidManifest.xml could not be found.",
+                        "The APK manifest does not declare a package name.",
+                        "The test package and app package are the same.",
+                        "The test apk does not declare an instrumentation.",
+                        "The input app apk does not have a signature.",
+                        "The test runner class specified by user or in the test APK's manifest file\nis not compatible with Android Test Orchestrator.\nOrchestrator is only compatible with AndroidJUnitRunner version 1.0 or\nhigher.\nOrchestrator can be disabled by using DO_NOT_USE_ORCHESTRATOR\nOrchestratorOption.",
+                        "The test APK does not contain the test runner class specified by user or in\nthe manifest file.\nThis can be caused by either of the following reasons:\n- the user provided a runner class name that's incorrect, or\n- the test runner isn't built into the test APK (might be in the app APK\ninstead).",
+                        "A main launcher activity could not be found.",
+                        "The app declares one or more permissions that are not allowed.",
+                        "There is a conflict in the provided robo_directives.",
+                        "There there is no test loop intent filter, or the one that is given is\nnot formatted correctly.",
+                        "The request contains a scenario label that was not declared in the\nmanifest.",
+                        "There was an error when parsing a label's value.",
+                        "The request contains a scenario number that was not declared in the\nmanifest.",
+                        "Device administrator applications are not allowed.",
+                        "The APK is marked as \"testOnly\"."
+                    ],
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Indicates the current progress of the test matrix (e.g., FINISHED)\n@OutputOnly",
+                    "enum": [
+                        "TEST_STATE_UNSPECIFIED",
+                        "VALIDATING",
+                        "PENDING",
+                        "RUNNING",
+                        "FINISHED",
+                        "ERROR",
+                        "UNSUPPORTED_ENVIRONMENT",
+                        "INCOMPATIBLE_ENVIRONMENT",
+                        "INCOMPATIBLE_ARCHITECTURE",
+                        "CANCELLED",
+                        "INVALID"
+                    ],
+                    "enumDescriptions": [
+                        "Do not use.  For proto versioning only.",
+                        "The execution or matrix is being validated.",
+                        "The execution or matrix is waiting for resources to become available.",
+                        "The execution is currently being processed.\n\nCan only be set on an execution.",
+                        "The execution or matrix has terminated normally.\n\nOn a matrix this means that the matrix level processing completed normally,\nbut individual executions may be in an ERROR state.",
+                        "The execution or matrix has stopped because it encountered an\ninfrastructure failure.",
+                        "The execution was not run because it corresponds to a unsupported\nenvironment.\n\nCan only be set on an execution.",
+                        "The execution was not run because the provided inputs are incompatible with\nthe requested environment.\n\nExample: requested AndroidVersion is lower than APK's minSdkVersion\n\nCan only be set on an execution.",
+                        "The execution was not run because the provided inputs are incompatible with\nthe requested architecture.\n\nExample: requested device does not support running the native code in\nthe supplied APK\n\nCan only be set on an execution.",
+                        "The user cancelled the execution.\n\nCan only be set on an execution.",
+                        "The execution or matrix was not run because the provided inputs are not\nvalid.\n\nExamples: input file is not of the expected type, is malformed/corrupt, or\nwas flagged as malware"
+                    ],
+                    "type": "string"
+                },
+                "testSpecification": {
+                    "$ref": "TestSpecification",
+                    "description": "How to run the test.\nRequired"
+                },
+                "projectId": {
+                    "description": "The cloud project that owns the test matrix.\n@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AndroidVersion": {
+            "description": "A version of the Android OS",
+            "id": "AndroidVersion",
+            "properties": {
+                "versionString": {
+                    "description": "A string representing this version of the Android OS.\nExamples: \"4.3\", \"4.4\"\n@OutputOnly",
+                    "type": "string"
+                },
+                "codeName": {
+                    "description": "The code name for this Android version.\nExamples: \"JellyBean\", \"KitKat\"\n@OutputOnly",
+                    "type": "string"
+                },
+                "apiLevel": {
+                    "description": "The API level for this Android version.\nExamples: 18, 19\n@OutputOnly",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "distribution": {
+                    "$ref": "Distribution",
+                    "description": "Market share for this version.\n@OutputOnly"
+                },
+                "tags": {
+                    "description": "Tags for this dimension.\nExamples: \"default\", \"preview\", \"deprecated\"",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "id": {
+                    "description": "An opaque id for this Android version.\nUse this id to invoke the TestExecutionService.\n@OutputOnly",
+                    "type": "string"
+                },
+                "releaseDate": {
+                    "$ref": "Date",
+                    "description": "The date this Android version became available in the market.\n@OutputOnly"
+                }
+            },
+            "type": "object"
+        },
+        "FileReference": {
+            "description": "A reference to a file, used for user inputs.",
+            "id": "FileReference",
+            "properties": {
+                "gcsPath": {
+                    "description": "A path to a file in Google Cloud Storage.\nExample: gs://build-app-1414623860166/app-debug-unaligned.apk",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TestDetails": {
+            "description": "Additional details about the progress of the running test.",
+            "id": "TestDetails",
+            "properties": {
+                "progressMessages": {
+                    "description": "Human-readable, detailed descriptions of the test's progress.\nFor example: \"Provisioning a device\", \"Starting Test\".\n\nDuring the course of execution new data may be appended\nto the end of progress_messages.\n@OutputOnly",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "errorMessage": {
+                    "description": "If the TestState is ERROR, then this string will contain human-readable\ndetails about the error.\n@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ToolResultsExecution": {
+            "description": "Represents a tool results execution resource.\n\nThis has the results of a TestMatrix.",
+            "id": "ToolResultsExecution",
+            "properties": {
+                "executionId": {
+                    "description": "A tool results execution ID.\n@OutputOnly",
+                    "type": "string"
+                },
+                "historyId": {
+                    "description": "A tool results history ID.\n@OutputOnly",
+                    "type": "string"
+                },
+                "projectId": {
+                    "description": "The cloud project that owns the tool results execution.\n@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Distribution": {
+            "description": "Data about the relative number of devices running a\ngiven configuration of the Android platform.",
+            "id": "Distribution",
+            "properties": {
+                "marketShare": {
+                    "description": "The estimated fraction (0-1) of the total market with this configuration.\n@OutputOnly",
+                    "format": "double",
+                    "type": "number"
+                },
+                "measurementTime": {
+                    "description": "The time this distribution was measured.\n@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AndroidRoboTest": {
+            "description": "A test of an android application that explores the application on a virtual\nor physical Android Device, finding culprits and crashes as it goes.",
+            "id": "AndroidRoboTest",
+            "properties": {
+                "appApk": {
+                    "$ref": "FileReference",
+                    "description": "The APK for the application under test.\nRequired"
+                },
+                "appPackageId": {
+                    "description": "The java package for the application under test.\nOptional, default is determined by examining the application's manifest.",
+                    "type": "string"
+                },
+                "maxSteps": {
+                    "description": "The max number of steps Robo can execute.\nDefault is no limit.\nOptional",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "appInitialActivity": {
+                    "description": "The initial activity that should be used to start the app.\nOptional",
+                    "type": "string"
+                },
+                "roboDirectives": {
+                    "description": "A set of directives Robo should apply during the crawl.\nThis allows users to customize the crawl. For example, the username and\npassword for a test account can be provided.\nOptional",
+                    "items": {
+                        "$ref": "RoboDirective"
+                    },
+                    "type": "array"
+                },
+                "maxDepth": {
+                    "description": "The max depth of the traversal stack Robo can explore. Needs to be at least\n2 to make Robo explore the app beyond the first activity.\nDefault is 50.\nOptional",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "ToolResultsHistory": {
+            "description": "Represents a tool results history resource.",
+            "id": "ToolResultsHistory",
+            "properties": {
+                "historyId": {
+                    "description": "A tool results history ID.\nRequired",
+                    "type": "string"
+                },
+                "projectId": {
+                    "description": "The cloud project that owns the tool results history.\nRequired",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Orientation": {
+            "description": "Screen orientation of the device.",
+            "id": "Orientation",
+            "properties": {
+                "tags": {
+                    "description": "Tags for this dimension.\nExamples: \"default\"",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "id": {
+                    "description": "The id for this orientation.\nExample: \"portrait\"\n@OutputOnly",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "A human-friendly name for this orientation.\nExample: \"portrait\"\n@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "NetworkConfigurationCatalog": {
+            "id": "NetworkConfigurationCatalog",
+            "properties": {
+                "configurations": {
+                    "items": {
+                        "$ref": "NetworkConfiguration"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AndroidTestLoop": {
+            "description": "A test of an Android Application with a Test Loop.\nThe intent <intent-name> will be implicitly added, since Games is the only\nuser of this api, for the time being.",
+            "id": "AndroidTestLoop",
+            "properties": {
+                "appPackageId": {
+                    "description": "The java package for the application under test.\nOptional, default is determined by examining the application's manifest.",
+                    "type": "string"
+                },
+                "appApk": {
+                    "$ref": "FileReference",
+                    "description": "The APK for the application under test.\nRequired"
+                },
+                "scenarioLabels": {
+                    "description": "The list of scenario labels that should be run during the test.\nThe scenario labels should map to labels defined in the application's\nmanifest. For example, player_experience and\ncom.google.test.loops.player_experience add all of the loops labeled in the\nmanifest with the com.google.test.loops.player_experience name to the\nexecution.\nOptional. Scenarios can also be specified in the scenarios field.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "scenarios": {
+                    "description": "The list of scenarios that should be run during the test.\nOptional, default is all test loops, derived from the application's\nmanifest.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        }
+    },
+    "servicePath": "",
+    "title": "Google Cloud Testing API",
+    "version": "v1"
+}
\ No newline at end of file
diff --git a/discovery/googleapis/translate__v2.json b/discovery/googleapis/translate__v2.json
index 38e7d9e..35596e6 100644
--- a/discovery/googleapis/translate__v2.json
+++ b/discovery/googleapis/translate__v2.json
@@ -31,6 +31,27 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "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. Overrides userIp if both are provided.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -95,27 +116,6 @@
             "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
-        },
-        "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. Overrides userIp if both are provided.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
         }
     },
     "protocol": "rest",
@@ -174,13 +174,13 @@
                     "httpMethod": "GET",
                     "id": "language.languages.list",
                     "parameters": {
-                        "target": {
-                            "description": "The language to use to return localized, human readable names of supported\nlanguages.",
+                        "model": {
+                            "description": "The model type for which supported languages should be returned.",
                             "location": "query",
                             "type": "string"
                         },
-                        "model": {
-                            "description": "The model type for which supported languages should be returned.",
+                        "target": {
+                            "description": "The language to use to return localized, human readable names of supported\nlanguages.",
                             "location": "query",
                             "type": "string"
                         }
@@ -198,6 +198,24 @@
         },
         "translations": {
             "methods": {
+                "translate": {
+                    "description": "Translates input text, returning translated text.",
+                    "httpMethod": "POST",
+                    "id": "language.translations.translate",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v2",
+                    "request": {
+                        "$ref": "TranslateTextRequest"
+                    },
+                    "response": {
+                        "$ref": "TranslationsListResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-translation",
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
                 "list": {
                     "description": "Translates input text, returning translated text.",
                     "httpMethod": "GET",
@@ -207,6 +225,24 @@
                         "target"
                     ],
                     "parameters": {
+                        "q": {
+                            "description": "The input text to translate. Repeat this parameter to perform translation\noperations on multiple text inputs.",
+                            "location": "query",
+                            "repeated": true,
+                            "required": true,
+                            "type": "string"
+                        },
+                        "source": {
+                            "description": "The language of the source text, set to one of the language codes listed in\nLanguage Support. If the source language is not specified, the API will\nattempt to identify the source language automatically and return it within\nthe response.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "cid": {
+                            "description": "The customization id for translate",
+                            "location": "query",
+                            "repeated": true,
+                            "type": "string"
+                        },
                         "target": {
                             "description": "The language to use for translation of the input text, set to one of the\nlanguage codes listed in Language Support.",
                             "location": "query",
@@ -230,24 +266,6 @@
                             "description": "The `model` type requested for this translation. Valid values are\nlisted in public documentation.",
                             "location": "query",
                             "type": "string"
-                        },
-                        "q": {
-                            "description": "The input text to translate. Repeat this parameter to perform translation\noperations on multiple text inputs.",
-                            "location": "query",
-                            "repeated": true,
-                            "required": true,
-                            "type": "string"
-                        },
-                        "source": {
-                            "description": "The language of the source text, set to one of the language codes listed in\nLanguage Support. If the source language is not specified, the API will\nattempt to identify the source language automatically and return it within\nthe response.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "cid": {
-                            "description": "The customization id for translate",
-                            "location": "query",
-                            "repeated": true,
-                            "type": "string"
                         }
                     },
                     "path": "v2",
@@ -258,24 +276,6 @@
                         "https://www.googleapis.com/auth/cloud-translation",
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
-                },
-                "translate": {
-                    "description": "Translates input text, returning translated text.",
-                    "httpMethod": "POST",
-                    "id": "language.translations.translate",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v2",
-                    "request": {
-                        "$ref": "TranslateTextRequest"
-                    },
-                    "response": {
-                        "$ref": "TranslationsListResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-translation",
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
                 }
             }
         }
@@ -283,6 +283,17 @@
     "revision": "20170525",
     "rootUrl": "https://translation.googleapis.com/",
     "schemas": {
+        "GetSupportedLanguagesRequest": {
+            "description": "The request message for discovering supported languages.",
+            "id": "GetSupportedLanguagesRequest",
+            "properties": {
+                "target": {
+                    "description": "The language to use to return localized, human readable names of supported\nlanguages.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "LanguagesListResponse": {
             "id": "LanguagesListResponse",
             "properties": {
@@ -296,36 +307,9 @@
             },
             "type": "object"
         },
-        "DetectionsResource": {
-            "description": "An array of languages which we detect for the given text The most likely language list first.",
-            "id": "DetectionsResource",
-            "items": {
-                "properties": {
-                    "language": {
-                        "description": "The language we detected.",
-                        "type": "string"
-                    },
-                    "isReliable": {
-                        "description": "A boolean to indicate is the language detection result reliable.",
-                        "type": "boolean"
-                    },
-                    "confidence": {
-                        "description": "The confidence of the detection result of this language.",
-                        "format": "float",
-                        "type": "number"
-                    }
-                },
-                "type": "object"
-            },
-            "type": "array"
-        },
         "TranslationsResource": {
             "id": "TranslationsResource",
             "properties": {
-                "detectedSourceLanguage": {
-                    "description": "The source language of the initial request, detected automatically, if\nno source language was passed within the initial request. If the\nsource language was passed, auto-detection of the language will not\noccur and this field will be empty.",
-                    "type": "string"
-                },
                 "model": {
                     "description": "The `model` type used for this translation. Valid values are\nlisted in public documentation. Can be different from requested `model`.\nPresent only if specific model type was explicitly requested.",
                     "type": "string"
@@ -333,10 +317,37 @@
                 "translatedText": {
                     "description": "Text translated into the target language.",
                     "type": "string"
+                },
+                "detectedSourceLanguage": {
+                    "description": "The source language of the initial request, detected automatically, if\nno source language was passed within the initial request. If the\nsource language was passed, auto-detection of the language will not\noccur and this field will be empty.",
+                    "type": "string"
                 }
             },
             "type": "object"
         },
+        "DetectionsResource": {
+            "description": "An array of languages which we detect for the given text The most likely language list first.",
+            "id": "DetectionsResource",
+            "items": {
+                "properties": {
+                    "confidence": {
+                        "description": "The confidence of the detection result of this language.",
+                        "format": "float",
+                        "type": "number"
+                    },
+                    "language": {
+                        "description": "The language we detected.",
+                        "type": "string"
+                    },
+                    "isReliable": {
+                        "description": "A boolean to indicate is the language detection result reliable.",
+                        "type": "boolean"
+                    }
+                },
+                "type": "object"
+            },
+            "type": "array"
+        },
         "TranslationsListResponse": {
             "description": "The main language translation response message.",
             "id": "TranslationsListResponse",
@@ -421,17 +432,6 @@
                 }
             },
             "type": "object"
-        },
-        "GetSupportedLanguagesRequest": {
-            "description": "The request message for discovering supported languages.",
-            "id": "GetSupportedLanguagesRequest",
-            "properties": {
-                "target": {
-                    "description": "The language to use to return localized, human readable names of supported\nlanguages.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "language/translate/",
diff --git a/discovery/googleapis/vault__v1.json b/discovery/googleapis/vault__v1.json
index db8ae89..d88d294 100644
--- a/discovery/googleapis/vault__v1.json
+++ b/discovery/googleapis/vault__v1.json
@@ -2,11 +2,11 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/ediscovery": {
-                    "description": "Manage your eDiscovery data"
-                },
                 "https://www.googleapis.com/auth/ediscovery.readonly": {
                     "description": "View your eDiscovery data"
+                },
+                "https://www.googleapis.com/auth/ediscovery": {
+                    "description": "Manage your eDiscovery data"
                 }
             }
         }
@@ -28,37 +28,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "access_token": {
-            "description": "OAuth access token.",
-            "location": "query",
-            "type": "string"
-        },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-            "location": "query",
-            "type": "string"
-        },
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -70,13 +39,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
@@ -113,124 +82,43 @@
             ],
             "location": "query",
             "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
         "matters": {
             "methods": {
-                "undelete": {
-                    "description": "Undeletes the specified matter. Returns matter with updated state.",
-                    "httpMethod": "POST",
-                    "id": "vault.matters.undelete",
-                    "parameterOrder": [
-                        "matterId"
-                    ],
-                    "parameters": {
-                        "matterId": {
-                            "description": "The matter ID.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/matters/{matterId}:undelete",
-                    "request": {
-                        "$ref": "UndeleteMatterRequest"
-                    },
-                    "response": {
-                        "$ref": "Matter"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/ediscovery"
-                    ]
-                },
-                "get": {
-                    "description": "Gets the specified matter.",
-                    "httpMethod": "GET",
-                    "id": "vault.matters.get",
-                    "parameterOrder": [
-                        "matterId"
-                    ],
-                    "parameters": {
-                        "matterId": {
-                            "description": "The matter ID.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "view": {
-                            "description": "Specifies which parts of the Matter to return in the response.",
-                            "enum": [
-                                "VIEW_UNSPECIFIED",
-                                "BASIC",
-                                "FULL"
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/matters/{matterId}",
-                    "response": {
-                        "$ref": "Matter"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/ediscovery",
-                        "https://www.googleapis.com/auth/ediscovery.readonly"
-                    ]
-                },
-                "close": {
-                    "description": "Closes the specified matter. Returns matter with updated state.",
-                    "httpMethod": "POST",
-                    "id": "vault.matters.close",
-                    "parameterOrder": [
-                        "matterId"
-                    ],
-                    "parameters": {
-                        "matterId": {
-                            "description": "The matter ID.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/matters/{matterId}:close",
-                    "request": {
-                        "$ref": "CloseMatterRequest"
-                    },
-                    "response": {
-                        "$ref": "CloseMatterResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/ediscovery"
-                    ]
-                },
-                "update": {
-                    "description": "Updates the specified matter.\nThis updates only the name and description of the matter, identified by\nmatter id. Changes to any other fields are ignored.\nReturns the default view of the matter.",
-                    "httpMethod": "PUT",
-                    "id": "vault.matters.update",
-                    "parameterOrder": [
-                        "matterId"
-                    ],
-                    "parameters": {
-                        "matterId": {
-                            "description": "The matter ID.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/matters/{matterId}",
-                    "request": {
-                        "$ref": "Matter"
-                    },
-                    "response": {
-                        "$ref": "Matter"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/ediscovery"
-                    ]
-                },
                 "delete": {
                     "description": "Deletes the specified matter. Returns matter with updated state.",
                     "httpMethod": "DELETE",
@@ -254,54 +142,6 @@
                         "https://www.googleapis.com/auth/ediscovery"
                     ]
                 },
-                "list": {
-                    "description": "Lists matters the user has access to.",
-                    "httpMethod": "GET",
-                    "id": "vault.matters.list",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "pageToken": {
-                            "description": "The pagination token as returned in the response.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageSize": {
-                            "description": "The number of matters to return in the response.\nDefault and maximum are 100.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        },
-                        "view": {
-                            "description": "Specifies which parts of the matter to return in response.",
-                            "enum": [
-                                "VIEW_UNSPECIFIED",
-                                "BASIC",
-                                "FULL"
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "state": {
-                            "description": "If set, list only matters with that specific state. The default is listing\nmatters of all states.",
-                            "enum": [
-                                "STATE_UNSPECIFIED",
-                                "OPEN",
-                                "CLOSED",
-                                "DELETED"
-                            ],
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/matters",
-                    "response": {
-                        "$ref": "ListMattersResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/ediscovery",
-                        "https://www.googleapis.com/auth/ediscovery.readonly"
-                    ]
-                },
                 "addPermissions": {
                     "description": "Adds an account as a matter collaborator.",
                     "httpMethod": "POST",
@@ -328,6 +168,54 @@
                         "https://www.googleapis.com/auth/ediscovery"
                     ]
                 },
+                "list": {
+                    "description": "Lists matters the user has access to.",
+                    "httpMethod": "GET",
+                    "id": "vault.matters.list",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "state": {
+                            "description": "If set, list only matters with that specific state. The default is listing\nmatters of all states.",
+                            "enum": [
+                                "STATE_UNSPECIFIED",
+                                "OPEN",
+                                "CLOSED",
+                                "DELETED"
+                            ],
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageToken": {
+                            "description": "The pagination token as returned in the response.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageSize": {
+                            "description": "The number of matters to return in the response.\nDefault and maximum are 100.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        },
+                        "view": {
+                            "description": "Specifies which parts of the matter to return in response.",
+                            "enum": [
+                                "VIEW_UNSPECIFIED",
+                                "BASIC",
+                                "FULL"
+                            ],
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/matters",
+                    "response": {
+                        "$ref": "ListMattersResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/ediscovery",
+                        "https://www.googleapis.com/auth/ediscovery.readonly"
+                    ]
+                },
                 "create": {
                     "description": "Creates a new matter with the given name and description. The initial state\nis open, and the owner is the method caller. Returns the created matter\nwith default view.",
                     "httpMethod": "POST",
@@ -396,11 +284,219 @@
                     "scopes": [
                         "https://www.googleapis.com/auth/ediscovery"
                     ]
+                },
+                "close": {
+                    "description": "Closes the specified matter. Returns matter with updated state.",
+                    "httpMethod": "POST",
+                    "id": "vault.matters.close",
+                    "parameterOrder": [
+                        "matterId"
+                    ],
+                    "parameters": {
+                        "matterId": {
+                            "description": "The matter ID.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/matters/{matterId}:close",
+                    "request": {
+                        "$ref": "CloseMatterRequest"
+                    },
+                    "response": {
+                        "$ref": "CloseMatterResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/ediscovery"
+                    ]
+                },
+                "get": {
+                    "description": "Gets the specified matter.",
+                    "httpMethod": "GET",
+                    "id": "vault.matters.get",
+                    "parameterOrder": [
+                        "matterId"
+                    ],
+                    "parameters": {
+                        "view": {
+                            "description": "Specifies which parts of the Matter to return in the response.",
+                            "enum": [
+                                "VIEW_UNSPECIFIED",
+                                "BASIC",
+                                "FULL"
+                            ],
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "matterId": {
+                            "description": "The matter ID.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/matters/{matterId}",
+                    "response": {
+                        "$ref": "Matter"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/ediscovery",
+                        "https://www.googleapis.com/auth/ediscovery.readonly"
+                    ]
+                },
+                "undelete": {
+                    "description": "Undeletes the specified matter. Returns matter with updated state.",
+                    "httpMethod": "POST",
+                    "id": "vault.matters.undelete",
+                    "parameterOrder": [
+                        "matterId"
+                    ],
+                    "parameters": {
+                        "matterId": {
+                            "description": "The matter ID.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/matters/{matterId}:undelete",
+                    "request": {
+                        "$ref": "UndeleteMatterRequest"
+                    },
+                    "response": {
+                        "$ref": "Matter"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/ediscovery"
+                    ]
+                },
+                "update": {
+                    "description": "Updates the specified matter.\nThis updates only the name and description of the matter, identified by\nmatter id. Changes to any other fields are ignored.\nReturns the default view of the matter.",
+                    "httpMethod": "PUT",
+                    "id": "vault.matters.update",
+                    "parameterOrder": [
+                        "matterId"
+                    ],
+                    "parameters": {
+                        "matterId": {
+                            "description": "The matter ID.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/matters/{matterId}",
+                    "request": {
+                        "$ref": "Matter"
+                    },
+                    "response": {
+                        "$ref": "Matter"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/ediscovery"
+                    ]
                 }
             },
             "resources": {
                 "holds": {
                     "methods": {
+                        "delete": {
+                            "description": "Removes a hold by ID. This will release any HeldAccounts on this Hold.",
+                            "httpMethod": "DELETE",
+                            "id": "vault.matters.holds.delete",
+                            "parameterOrder": [
+                                "matterId",
+                                "holdId"
+                            ],
+                            "parameters": {
+                                "holdId": {
+                                    "description": "The hold ID.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "matterId": {
+                                    "description": "The matter ID.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/matters/{matterId}/holds/{holdId}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/ediscovery"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists holds within a matter. An empty page token in ListHoldsResponse\ndenotes no more holds to list.",
+                            "httpMethod": "GET",
+                            "id": "vault.matters.holds.list",
+                            "parameterOrder": [
+                                "matterId"
+                            ],
+                            "parameters": {
+                                "matterId": {
+                                    "description": "The matter ID.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "The pagination token as returned in the response.\nAn empty token means start from the beginning.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The number of holds to return in the response, between 0 and 100 inclusive.\nLeaving this empty, or as 0, is the same as page_size = 100.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v1/matters/{matterId}/holds",
+                            "response": {
+                                "$ref": "ListHoldsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/ediscovery",
+                                "https://www.googleapis.com/auth/ediscovery.readonly"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets a hold by ID.",
+                            "httpMethod": "GET",
+                            "id": "vault.matters.holds.get",
+                            "parameterOrder": [
+                                "matterId",
+                                "holdId"
+                            ],
+                            "parameters": {
+                                "holdId": {
+                                    "description": "The hold ID.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "matterId": {
+                                    "description": "The matter ID.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/matters/{matterId}/holds/{holdId}",
+                            "response": {
+                                "$ref": "Hold"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/ediscovery",
+                                "https://www.googleapis.com/auth/ediscovery.readonly"
+                            ]
+                        },
                         "update": {
                             "description": "Updates the OU and/or query parameters of a hold. You cannot add accounts\nto a hold that covers an OU, nor can you add OUs to a hold that covers\nindividual accounts. Accounts listed in the hold will be ignored.",
                             "httpMethod": "PUT",
@@ -459,102 +555,6 @@
                             "scopes": [
                                 "https://www.googleapis.com/auth/ediscovery"
                             ]
-                        },
-                        "delete": {
-                            "description": "Removes a hold by ID. This will release any HeldAccounts on this Hold.",
-                            "httpMethod": "DELETE",
-                            "id": "vault.matters.holds.delete",
-                            "parameterOrder": [
-                                "matterId",
-                                "holdId"
-                            ],
-                            "parameters": {
-                                "holdId": {
-                                    "description": "The hold ID.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "matterId": {
-                                    "description": "The matter ID.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/matters/{matterId}/holds/{holdId}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/ediscovery"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists holds within a matter. An empty page token in ListHoldsResponse\ndenotes no more holds to list.",
-                            "httpMethod": "GET",
-                            "id": "vault.matters.holds.list",
-                            "parameterOrder": [
-                                "matterId"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "The pagination token as returned in the response.\nAn empty token means start from the beginning.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "The number of holds to return in the response, between 0 and 100 inclusive.\nLeaving this empty, or as 0, is the same as page_size = 100.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "matterId": {
-                                    "description": "The matter ID.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/matters/{matterId}/holds",
-                            "response": {
-                                "$ref": "ListHoldsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/ediscovery",
-                                "https://www.googleapis.com/auth/ediscovery.readonly"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets a hold by ID.",
-                            "httpMethod": "GET",
-                            "id": "vault.matters.holds.get",
-                            "parameterOrder": [
-                                "matterId",
-                                "holdId"
-                            ],
-                            "parameters": {
-                                "holdId": {
-                                    "description": "The hold ID.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "matterId": {
-                                    "description": "The matter ID.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1/matters/{matterId}/holds/{holdId}",
-                            "response": {
-                                "$ref": "Hold"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/ediscovery",
-                                "https://www.googleapis.com/auth/ediscovery.readonly"
-                            ]
                         }
                     },
                     "resources": {
@@ -569,14 +569,14 @@
                                         "holdId"
                                     ],
                                     "parameters": {
-                                        "holdId": {
-                                            "description": "The hold ID.",
+                                        "matterId": {
+                                            "description": "The matter ID.",
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
                                         },
-                                        "matterId": {
-                                            "description": "The matter ID.",
+                                        "holdId": {
+                                            "description": "The hold ID.",
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
@@ -639,14 +639,14 @@
                                         "holdId"
                                     ],
                                     "parameters": {
-                                        "matterId": {
-                                            "description": "The matter ID.",
+                                        "holdId": {
+                                            "description": "The hold ID.",
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
                                         },
-                                        "holdId": {
-                                            "description": "The hold ID.",
+                                        "matterId": {
+                                            "description": "The matter ID.",
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
@@ -671,10 +671,87 @@
     "revision": "20170812",
     "rootUrl": "https://vault.googleapis.com/",
     "schemas": {
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "ReopenMatterRequest": {
+            "description": "Reopen a matter by ID.",
+            "id": "ReopenMatterRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "CloseMatterRequest": {
+            "description": "Close a matter by ID.",
+            "id": "CloseMatterRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "RemoveMatterPermissionsRequest": {
+            "description": "Remove an account as a matter collaborator.",
+            "id": "RemoveMatterPermissionsRequest",
+            "properties": {
+                "accountId": {
+                    "description": "The account ID.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MatterPermission": {
+            "description": "Currently each matter only has one owner, and all others are collaborators.\nWhen an account is purged, its corresponding MatterPermission resources\ncease to exist.",
+            "id": "MatterPermission",
+            "properties": {
+                "accountId": {
+                    "description": "The account id, as provided by <a href=\"https://developers.google.com/admin-sdk/\">Admin SDK</a>.",
+                    "type": "string"
+                },
+                "role": {
+                    "description": "The user's role in this matter.",
+                    "enum": [
+                        "ROLE_UNSPECIFIED",
+                        "COLLABORATOR",
+                        "OWNER"
+                    ],
+                    "enumDescriptions": [
+                        "No role assigned.",
+                        "A collaborator to the matter.",
+                        "The owner of the matter."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListMattersResponse": {
+            "description": "Provides the list of matters.",
+            "id": "ListMattersResponse",
+            "properties": {
+                "matters": {
+                    "description": "List of matters.",
+                    "items": {
+                        "$ref": "Matter"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Page token to retrieve the next page of results in the list.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "HeldMailQuery": {
             "description": "Query options for mail holds.",
             "id": "HeldMailQuery",
             "properties": {
+                "endTime": {
+                    "description": "The end date range for the search query. These timestamps are in GMT and\nrounded down to the start of the given date.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
                 "startTime": {
                     "description": "The start date range for the search query. These timestamps are in GMT and\nrounded down to the start of the given date.",
                     "format": "google-datetime",
@@ -683,11 +760,6 @@
                 "terms": {
                     "description": "The search terms for the hold.",
                     "type": "string"
-                },
-                "endTime": {
-                    "description": "The end date range for the search query. These timestamps are in GMT and\nrounded down to the start of the given date.",
-                    "format": "google-datetime",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -703,6 +775,17 @@
             },
             "type": "object"
         },
+        "HeldDriveQuery": {
+            "description": "Query options for drive holds.",
+            "id": "HeldDriveQuery",
+            "properties": {
+                "includeTeamDriveFiles": {
+                    "description": "If true, include files in Team Drives in the hold.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "HeldGroupsQuery": {
             "description": "Query options for group holds.",
             "id": "HeldGroupsQuery",
@@ -724,29 +807,18 @@
             },
             "type": "object"
         },
-        "HeldDriveQuery": {
-            "description": "Query options for drive holds.",
-            "id": "HeldDriveQuery",
-            "properties": {
-                "includeTeamDriveFiles": {
-                    "description": "If true, include files in Team Drives in the hold.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
         "HeldOrgUnit": {
             "description": "A organizational unit being held in a particular hold.\nThis structure is immutable.",
             "id": "HeldOrgUnit",
             "properties": {
-                "orgUnitId": {
-                    "description": "The org unit's immutable ID as provided by the admin SDK.",
-                    "type": "string"
-                },
                 "holdTime": {
                     "description": "When the org unit was put on hold. This property is immutable.",
                     "format": "google-datetime",
                     "type": "string"
+                },
+                "orgUnitId": {
+                    "description": "The org unit's immutable ID as provided by the admin SDK.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -755,6 +827,10 @@
             "description": "Add an account with the permission specified. The role cannot be owner.\nIf an account already has a role in the matter, it will be\noverwritten.",
             "id": "AddMatterPermissionsRequest",
             "properties": {
+                "matterPermission": {
+                    "$ref": "MatterPermission",
+                    "description": "The MatterPermission to add."
+                },
                 "ccMe": {
                     "description": "Only relevant if send_emails is true.\nTrue to CC requestor in the email message.\nFalse to not CC requestor.",
                     "type": "boolean"
@@ -762,10 +838,6 @@
                 "sendEmails": {
                     "description": "True to send notification email to the added account.\nFalse to not send notification email.",
                     "type": "boolean"
-                },
-                "matterPermission": {
-                    "$ref": "MatterPermission",
-                    "description": "The MatterPermission to add."
                 }
             },
             "type": "object"
@@ -774,10 +846,6 @@
             "description": "Represents a matter.",
             "id": "Matter",
             "properties": {
-                "description": {
-                    "description": "The description of the matter.",
-                    "type": "string"
-                },
                 "matterId": {
                     "description": "The matter ID which is generated by the server.\nShould be blank when creating a new matter.",
                     "type": "string"
@@ -808,6 +876,10 @@
                 "name": {
                     "description": "The name of the matter.",
                     "type": "string"
+                },
+                "description": {
+                    "description": "The description of the matter.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -816,14 +888,14 @@
             "description": "An account being held in a particular hold. This structure is immutable.\nThis can be either a single user or a google group, depending on the corpus.",
             "id": "HeldAccount",
             "properties": {
-                "accountId": {
-                    "description": "The account's ID as provided by the\n<a href=\"https://developers.google.com/admin-sdk/\">Admin SDK</a>.",
-                    "type": "string"
-                },
                 "holdTime": {
                     "description": "When the account was put on hold.",
                     "format": "google-datetime",
                     "type": "string"
+                },
+                "accountId": {
+                    "description": "The account's ID as provided by the\n<a href=\"https://developers.google.com/admin-sdk/\">Admin SDK</a>.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -862,14 +934,21 @@
             "description": "Represents a hold within Vault. A hold restricts purging of\nartifacts based on the combination of the query and accounts restrictions.\nA hold can be configured to either apply to an explicitly configured set\nof accounts, or can be applied to all members of an organizational unit.",
             "id": "Hold",
             "properties": {
-                "query": {
-                    "$ref": "CorpusQuery",
-                    "description": "The corpus-specific query. If set, the corpusQuery must match corpus\ntype."
+                "accounts": {
+                    "description": "If set, the hold applies to the enumerated accounts and org_unit must be\nempty.",
+                    "items": {
+                        "$ref": "HeldAccount"
+                    },
+                    "type": "array"
                 },
                 "orgUnit": {
                     "$ref": "HeldOrgUnit",
                     "description": "If set, the hold applies to all members of the organizational unit and\naccounts must be empty. This property is mutable. For groups holds,\nset the accounts field."
                 },
+                "query": {
+                    "$ref": "CorpusQuery",
+                    "description": "The corpus-specific query. If set, the corpusQuery must match corpus\ntype."
+                },
                 "corpus": {
                     "description": "The corpus to be searched.",
                     "enum": [
@@ -891,20 +970,13 @@
                     "format": "google-datetime",
                     "type": "string"
                 },
-                "holdId": {
-                    "description": "The unique immutable ID of the hold. Assigned during creation.",
-                    "type": "string"
-                },
                 "name": {
                     "description": "The name of the hold.",
                     "type": "string"
                 },
-                "accounts": {
-                    "description": "If set, the hold applies to the enumerated accounts and org_unit must be\nempty.",
-                    "items": {
-                        "$ref": "HeldAccount"
-                    },
-                    "type": "array"
+                "holdId": {
+                    "description": "The unique immutable ID of the hold. Assigned during creation.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -927,12 +999,6 @@
             },
             "type": "object"
         },
-        "UndeleteMatterRequest": {
-            "description": "Undelete a matter by ID.",
-            "id": "UndeleteMatterRequest",
-            "properties": {},
-            "type": "object"
-        },
         "ListHeldAccountsResponse": {
             "description": "Returns a list of held accounts for a hold.",
             "id": "ListHeldAccountsResponse",
@@ -947,77 +1013,11 @@
             },
             "type": "object"
         },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
+        "UndeleteMatterRequest": {
+            "description": "Undelete a matter by ID.",
+            "id": "UndeleteMatterRequest",
             "properties": {},
             "type": "object"
-        },
-        "ReopenMatterRequest": {
-            "description": "Reopen a matter by ID.",
-            "id": "ReopenMatterRequest",
-            "properties": {},
-            "type": "object"
-        },
-        "CloseMatterRequest": {
-            "description": "Close a matter by ID.",
-            "id": "CloseMatterRequest",
-            "properties": {},
-            "type": "object"
-        },
-        "RemoveMatterPermissionsRequest": {
-            "description": "Remove an account as a matter collaborator.",
-            "id": "RemoveMatterPermissionsRequest",
-            "properties": {
-                "accountId": {
-                    "description": "The account ID.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "MatterPermission": {
-            "description": "Currently each matter only has one owner, and all others are collaborators.\nWhen an account is purged, its corresponding MatterPermission resources\ncease to exist.",
-            "id": "MatterPermission",
-            "properties": {
-                "role": {
-                    "description": "The user's role in this matter.",
-                    "enum": [
-                        "ROLE_UNSPECIFIED",
-                        "COLLABORATOR",
-                        "OWNER"
-                    ],
-                    "enumDescriptions": [
-                        "No role assigned.",
-                        "A collaborator to the matter.",
-                        "The owner of the matter."
-                    ],
-                    "type": "string"
-                },
-                "accountId": {
-                    "description": "The account id, as provided by <a href=\"https://developers.google.com/admin-sdk/\">Admin SDK</a>.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListMattersResponse": {
-            "description": "Provides the list of matters.",
-            "id": "ListMattersResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Page token to retrieve the next page of results in the list.",
-                    "type": "string"
-                },
-                "matters": {
-                    "description": "List of matters.",
-                    "items": {
-                        "$ref": "Matter"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/vision__v1.json b/discovery/googleapis/vision__v1.json
index 4c4c092..05b94d9 100644
--- a/discovery/googleapis/vision__v1.json
+++ b/discovery/googleapis/vision__v1.json
@@ -2,11 +2,11 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/cloud-vision": {
-                    "description": "Apply machine learning models to understand and label images"
-                },
                 "https://www.googleapis.com/auth/cloud-platform": {
                     "description": "View and manage your data across Google Cloud Platform services"
+                },
+                "https://www.googleapis.com/auth/cloud-vision": {
+                    "description": "Apply machine learning models to understand and label images"
                 }
             }
         }
@@ -28,45 +28,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
-            "location": "query",
-            "type": "string"
-        },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "$.xgafv": {
-            "description": "V1 error format.",
-            "enum": [
-                "1",
-                "2"
-            ],
-            "enumDescriptions": [
-                "v1 error format",
-                "v2 error format"
-            ],
-            "location": "query",
-            "type": "string"
-        },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -83,13 +44,13 @@
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
@@ -113,6 +74,45 @@
             "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
+        "$.xgafv": {
+            "description": "V1 error format.",
+            "enum": [
+                "1",
+                "2"
+            ],
+            "enumDescriptions": [
+                "v1 error format",
+                "v2 error format"
+            ],
+            "location": "query",
+            "type": "string"
+        },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
@@ -140,983 +140,38 @@
             }
         }
     },
-    "revision": "20170922",
+    "revision": "20171012",
     "rootUrl": "https://vision.googleapis.com/",
     "schemas": {
-        "ImageContext": {
-            "description": "Image context and/or feature-specific parameters.",
-            "id": "ImageContext",
-            "properties": {
-                "cropHintsParams": {
-                    "$ref": "CropHintsParams",
-                    "description": "Parameters for crop hints annotation request."
-                },
-                "languageHints": {
-                    "description": "List of languages to use for TEXT_DETECTION. In most cases, an empty value\nyields the best results since it enables automatic language detection. For\nlanguages based on the Latin alphabet, setting `language_hints` is not\nneeded. In rare cases, when the language of the text in the image is known,\nsetting a hint will help get better results (although it will be a\nsignificant hindrance if the hint is wrong). Text detection returns an\nerror if one or more of the specified languages is not one of the\n[supported languages](/vision/docs/languages).",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "latLongRect": {
-                    "$ref": "LatLongRect",
-                    "description": "lat/long rectangle that specifies the location of the image."
-                }
-            },
-            "type": "object"
-        },
-        "Page": {
-            "description": "Detected page from OCR.",
-            "id": "Page",
-            "properties": {
-                "height": {
-                    "description": "Page height in pixels.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "width": {
-                    "description": "Page width in pixels.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "blocks": {
-                    "description": "List of blocks of text, images etc on this page.",
-                    "items": {
-                        "$ref": "Block"
-                    },
-                    "type": "array"
-                },
-                "property": {
-                    "$ref": "TextProperty",
-                    "description": "Additional information detected on the page."
-                }
-            },
-            "type": "object"
-        },
-        "AnnotateImageRequest": {
-            "description": "Request for performing Google Cloud Vision API tasks over a user-provided\nimage, with user-requested features.",
-            "id": "AnnotateImageRequest",
-            "properties": {
-                "features": {
-                    "description": "Requested features.",
-                    "items": {
-                        "$ref": "Feature"
-                    },
-                    "type": "array"
-                },
-                "image": {
-                    "$ref": "Image",
-                    "description": "The image to be processed."
-                },
-                "imageContext": {
-                    "$ref": "ImageContext",
-                    "description": "Additional context that may accompany the image."
-                }
-            },
-            "type": "object"
-        },
-        "Status": {
-            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
-            "id": "Status",
-            "properties": {
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                },
-                "details": {
-                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Symbol": {
-            "description": "A single symbol representation.",
-            "id": "Symbol",
-            "properties": {
-                "boundingBox": {
-                    "$ref": "BoundingPoly",
-                    "description": "The bounding box for the symbol.\nThe vertices are in the order of top-left, top-right, bottom-right,\nbottom-left. When a rotation of the bounding box is detected the rotation\nis represented as around the top-left corner as defined when the text is\nread in the 'natural' orientation.\nFor example:\n  * when the text is horizontal it might look like:\n     0----1\n     |    |\n     3----2\n  * when it's rotated 180 degrees around the top-left corner it becomes:\n     2----3\n     |    |\n     1----0\n  and the vertice order will still be (0, 1, 2, 3)."
-                },
-                "text": {
-                    "description": "The actual UTF-8 representation of the symbol.",
-                    "type": "string"
-                },
-                "property": {
-                    "$ref": "TextProperty",
-                    "description": "Additional information detected for the symbol."
-                }
-            },
-            "type": "object"
-        },
-        "LatLongRect": {
-            "description": "Rectangle determined by min and max `LatLng` pairs.",
-            "id": "LatLongRect",
-            "properties": {
-                "maxLatLng": {
-                    "$ref": "LatLng",
-                    "description": "Max lat/long pair."
-                },
-                "minLatLng": {
-                    "$ref": "LatLng",
-                    "description": "Min lat/long pair."
-                }
-            },
-            "type": "object"
-        },
-        "CropHintsAnnotation": {
-            "description": "Set of crop hints that are used to generate new crops when serving images.",
-            "id": "CropHintsAnnotation",
-            "properties": {
-                "cropHints": {
-                    "description": "Crop hint results.",
-                    "items": {
-                        "$ref": "CropHint"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "LatLng": {
-            "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n<a href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\">WGS84\nstandard</a>. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n    def NormalizeLongitude(longitude):\n      \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n      q, r = divmod(longitude, 360.0)\n      if r > 180.0 or (r == 180.0 and q <= -1.0):\n        return r - 360.0\n      return r\n\n    def NormalizeLatLng(latitude, longitude):\n      \"\"\"Wraps decimal degrees latitude and longitude to\n      [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n      r = latitude % 360.0\n      if r <= 90.0:\n        return r, NormalizeLongitude(longitude)\n      elif r >= 270.0:\n        return r - 360, NormalizeLongitude(longitude)\n      else:\n        return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n    assert 180.0 == NormalizeLongitude(180.0)\n    assert -180.0 == NormalizeLongitude(-180.0)\n    assert -179.0 == NormalizeLongitude(181.0)\n    assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n    assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n    assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n    assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n    assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n    assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)",
-            "id": "LatLng",
-            "properties": {
-                "latitude": {
-                    "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
-                    "format": "double",
-                    "type": "number"
-                },
-                "longitude": {
-                    "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
-                    "format": "double",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "Color": {
-            "description": "Represents a color in the RGBA color space. This representation is designed\nfor simplicity of conversion to/from color representations in various\nlanguages over compactness; for example, the fields of this representation\ncan be trivially provided to the constructor of \"java.awt.Color\" in Java; it\ncan also be trivially provided to UIColor's \"+colorWithRed:green:blue:alpha\"\nmethod in iOS; and, with just a little work, it can be easily formatted into\na CSS \"rgba()\" string in JavaScript, as well. Here are some examples:\n\nExample (Java):\n\n     import com.google.type.Color;\n\n     // ...\n     public static java.awt.Color fromProto(Color protocolor) {\n       float alpha = protocolor.hasAlpha()\n           ? protocolor.getAlpha().getValue()\n           : 1.0;\n\n       return new java.awt.Color(\n           protocolor.getRed(),\n           protocolor.getGreen(),\n           protocolor.getBlue(),\n           alpha);\n     }\n\n     public static Color toProto(java.awt.Color color) {\n       float red = (float) color.getRed();\n       float green = (float) color.getGreen();\n       float blue = (float) color.getBlue();\n       float denominator = 255.0;\n       Color.Builder resultBuilder =\n           Color\n               .newBuilder()\n               .setRed(red / denominator)\n               .setGreen(green / denominator)\n               .setBlue(blue / denominator);\n       int alpha = color.getAlpha();\n       if (alpha != 255) {\n         result.setAlpha(\n             FloatValue\n                 .newBuilder()\n                 .setValue(((float) alpha) / denominator)\n                 .build());\n       }\n       return resultBuilder.build();\n     }\n     // ...\n\nExample (iOS / Obj-C):\n\n     // ...\n     static UIColor* fromProto(Color* protocolor) {\n        float red = [protocolor red];\n        float green = [protocolor green];\n        float blue = [protocolor blue];\n        FloatValue* alpha_wrapper = [protocolor alpha];\n        float alpha = 1.0;\n        if (alpha_wrapper != nil) {\n          alpha = [alpha_wrapper value];\n        }\n        return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];\n     }\n\n     static Color* toProto(UIColor* color) {\n         CGFloat red, green, blue, alpha;\n         if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {\n           return nil;\n         }\n         Color* result = [Color alloc] init];\n         [result setRed:red];\n         [result setGreen:green];\n         [result setBlue:blue];\n         if (alpha <= 0.9999) {\n           [result setAlpha:floatWrapperWithValue(alpha)];\n         }\n         [result autorelease];\n         return result;\n    }\n    // ...\n\n Example (JavaScript):\n\n    // ...\n\n    var protoToCssColor = function(rgb_color) {\n       var redFrac = rgb_color.red || 0.0;\n       var greenFrac = rgb_color.green || 0.0;\n       var blueFrac = rgb_color.blue || 0.0;\n       var red = Math.floor(redFrac * 255);\n       var green = Math.floor(greenFrac * 255);\n       var blue = Math.floor(blueFrac * 255);\n\n       if (!('alpha' in rgb_color)) {\n          return rgbToCssColor_(red, green, blue);\n       }\n\n       var alphaFrac = rgb_color.alpha.value || 0.0;\n       var rgbParams = [red, green, blue].join(',');\n       return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');\n    };\n\n    var rgbToCssColor_ = function(red, green, blue) {\n      var rgbNumber = new Number((red << 16) | (green << 8) | blue);\n      var hexString = rgbNumber.toString(16);\n      var missingZeros = 6 - hexString.length;\n      var resultBuilder = ['#'];\n      for (var i = 0; i < missingZeros; i++) {\n         resultBuilder.push('0');\n      }\n      resultBuilder.push(hexString);\n      return resultBuilder.join('');\n    };\n\n    // ...",
-            "id": "Color",
-            "properties": {
-                "red": {
-                    "description": "The amount of red in the color as a value in the interval [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "alpha": {
-                    "description": "The fraction of this color that should be applied to the pixel. That is,\nthe final pixel color is defined by the equation:\n\n  pixel color = alpha * (this color) + (1.0 - alpha) * (background color)\n\nThis means that a value of 1.0 corresponds to a solid color, whereas\na value of 0.0 corresponds to a completely transparent color. This\nuses a wrapper message rather than a simple float scalar so that it is\npossible to distinguish between a default value and the value being unset.\nIf omitted, this color object is to be rendered as a solid color\n(as if the alpha value had been explicitly given with a value of 1.0).",
-                    "format": "float",
-                    "type": "number"
-                },
-                "blue": {
-                    "description": "The amount of blue in the color as a value in the interval [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "green": {
-                    "description": "The amount of green in the color as a value in the interval [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "ImageProperties": {
-            "description": "Stores image properties, such as dominant colors.",
-            "id": "ImageProperties",
-            "properties": {
-                "dominantColors": {
-                    "$ref": "DominantColorsAnnotation",
-                    "description": "If present, dominant colors completed successfully."
-                }
-            },
-            "type": "object"
-        },
-        "Feature": {
-            "description": "Users describe the type of Google Cloud Vision API tasks to perform over\nimages by using *Feature*s. Each Feature indicates a type of image\ndetection task to perform. Features encode the Cloud Vision API\nvertical to operate on and the number of top-scoring results to return.",
-            "id": "Feature",
-            "properties": {
-                "maxResults": {
-                    "description": "Maximum number of results of this type.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "type": {
-                    "description": "The feature type.",
-                    "enum": [
-                        "TYPE_UNSPECIFIED",
-                        "FACE_DETECTION",
-                        "LANDMARK_DETECTION",
-                        "LOGO_DETECTION",
-                        "LABEL_DETECTION",
-                        "TEXT_DETECTION",
-                        "DOCUMENT_TEXT_DETECTION",
-                        "SAFE_SEARCH_DETECTION",
-                        "IMAGE_PROPERTIES",
-                        "CROP_HINTS",
-                        "WEB_DETECTION"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified feature type.",
-                        "Run face detection.",
-                        "Run landmark detection.",
-                        "Run logo detection.",
-                        "Run label detection.",
-                        "Run OCR.",
-                        "Run dense text document OCR. Takes precedence when both\nDOCUMENT_TEXT_DETECTION and TEXT_DETECTION are present.",
-                        "Run computer vision models to compute image safe-search properties.",
-                        "Compute a set of image properties, such as the image's dominant colors.",
-                        "Run crop hints.",
-                        "Run web detection."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SafeSearchAnnotation": {
-            "description": "Set of features pertaining to the image, computed by computer vision\nmethods over safe-search verticals (for example, adult, spoof, medical,\nviolence).",
-            "id": "SafeSearchAnnotation",
-            "properties": {
-                "adult": {
-                    "description": "Represents the adult content likelihood for the image.",
-                    "enum": [
-                        "UNKNOWN",
-                        "VERY_UNLIKELY",
-                        "UNLIKELY",
-                        "POSSIBLE",
-                        "LIKELY",
-                        "VERY_LIKELY"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown likelihood.",
-                        "It is very unlikely that the image belongs to the specified vertical.",
-                        "It is unlikely that the image belongs to the specified vertical.",
-                        "It is possible that the image belongs to the specified vertical.",
-                        "It is likely that the image belongs to the specified vertical.",
-                        "It is very likely that the image belongs to the specified vertical."
-                    ],
-                    "type": "string"
-                },
-                "spoof": {
-                    "description": "Spoof likelihood. The likelihood that an modification\nwas made to the image's canonical version to make it appear\nfunny or offensive.",
-                    "enum": [
-                        "UNKNOWN",
-                        "VERY_UNLIKELY",
-                        "UNLIKELY",
-                        "POSSIBLE",
-                        "LIKELY",
-                        "VERY_LIKELY"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown likelihood.",
-                        "It is very unlikely that the image belongs to the specified vertical.",
-                        "It is unlikely that the image belongs to the specified vertical.",
-                        "It is possible that the image belongs to the specified vertical.",
-                        "It is likely that the image belongs to the specified vertical.",
-                        "It is very likely that the image belongs to the specified vertical."
-                    ],
-                    "type": "string"
-                },
-                "medical": {
-                    "description": "Likelihood that this is a medical image.",
-                    "enum": [
-                        "UNKNOWN",
-                        "VERY_UNLIKELY",
-                        "UNLIKELY",
-                        "POSSIBLE",
-                        "LIKELY",
-                        "VERY_LIKELY"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown likelihood.",
-                        "It is very unlikely that the image belongs to the specified vertical.",
-                        "It is unlikely that the image belongs to the specified vertical.",
-                        "It is possible that the image belongs to the specified vertical.",
-                        "It is likely that the image belongs to the specified vertical.",
-                        "It is very likely that the image belongs to the specified vertical."
-                    ],
-                    "type": "string"
-                },
-                "violence": {
-                    "description": "Violence likelihood.",
-                    "enum": [
-                        "UNKNOWN",
-                        "VERY_UNLIKELY",
-                        "UNLIKELY",
-                        "POSSIBLE",
-                        "LIKELY",
-                        "VERY_LIKELY"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown likelihood.",
-                        "It is very unlikely that the image belongs to the specified vertical.",
-                        "It is unlikely that the image belongs to the specified vertical.",
-                        "It is possible that the image belongs to the specified vertical.",
-                        "It is likely that the image belongs to the specified vertical.",
-                        "It is very likely that the image belongs to the specified vertical."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "DominantColorsAnnotation": {
-            "description": "Set of dominant colors and their corresponding scores.",
-            "id": "DominantColorsAnnotation",
-            "properties": {
-                "colors": {
-                    "description": "RGB color values with their score and pixel fraction.",
-                    "items": {
-                        "$ref": "ColorInfo"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "TextAnnotation": {
-            "description": "TextAnnotation contains a structured representation of OCR extracted text.\nThe hierarchy of an OCR extracted text structure is like this:\n    TextAnnotation -> Page -> Block -> Paragraph -> Word -> Symbol\nEach structural component, starting from Page, may further have their own\nproperties. Properties describe detected languages, breaks etc.. Please\nrefer to the google.cloud.vision.v1.TextAnnotation.TextProperty message\ndefinition below for more detail.",
-            "id": "TextAnnotation",
-            "properties": {
-                "text": {
-                    "description": "UTF-8 text detected on the pages.",
-                    "type": "string"
-                },
-                "pages": {
-                    "description": "List of pages detected by OCR.",
-                    "items": {
-                        "$ref": "Page"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Vertex": {
-            "description": "A vertex represents a 2D point in the image.\nNOTE: the vertex coordinates are in the same scale as the original image.",
-            "id": "Vertex",
-            "properties": {
-                "y": {
-                    "description": "Y coordinate.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "x": {
-                    "description": "X coordinate.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "DetectedLanguage": {
-            "description": "Detected language for a structural component.",
-            "id": "DetectedLanguage",
-            "properties": {
-                "confidence": {
-                    "description": "Confidence of detected language. Range [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "languageCode": {
-                    "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more\ninformation, see\nhttp://www.unicode.org/reports/tr35/#Unicode_locale_identifier.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "BoundingPoly": {
-            "description": "A bounding polygon for the detected image annotation.",
-            "id": "BoundingPoly",
-            "properties": {
-                "vertices": {
-                    "description": "The bounding polygon vertices.",
-                    "items": {
-                        "$ref": "Vertex"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "TextProperty": {
-            "description": "Additional information detected on the structural component.",
-            "id": "TextProperty",
-            "properties": {
-                "detectedBreak": {
-                    "$ref": "DetectedBreak",
-                    "description": "Detected start or end of a text segment."
-                },
-                "detectedLanguages": {
-                    "description": "A list of detected languages together with confidence.",
-                    "items": {
-                        "$ref": "DetectedLanguage"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "WebEntity": {
-            "description": "Entity deduced from similar images on the Internet.",
-            "id": "WebEntity",
-            "properties": {
-                "entityId": {
-                    "description": "Opaque entity ID.",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "Canonical description of the entity, in English.",
-                    "type": "string"
-                },
-                "score": {
-                    "description": "Overall relevancy score for the entity.\nNot normalized and not comparable across different image queries.",
-                    "format": "float",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "AnnotateImageResponse": {
-            "description": "Response to an image annotation request.",
-            "id": "AnnotateImageResponse",
-            "properties": {
-                "landmarkAnnotations": {
-                    "description": "If present, landmark detection has completed successfully.",
-                    "items": {
-                        "$ref": "EntityAnnotation"
-                    },
-                    "type": "array"
-                },
-                "textAnnotations": {
-                    "description": "If present, text (OCR) detection has completed successfully.",
-                    "items": {
-                        "$ref": "EntityAnnotation"
-                    },
-                    "type": "array"
-                },
-                "imagePropertiesAnnotation": {
-                    "$ref": "ImageProperties",
-                    "description": "If present, image properties were extracted successfully."
-                },
-                "faceAnnotations": {
-                    "description": "If present, face detection has completed successfully.",
-                    "items": {
-                        "$ref": "FaceAnnotation"
-                    },
-                    "type": "array"
-                },
-                "logoAnnotations": {
-                    "description": "If present, logo detection has completed successfully.",
-                    "items": {
-                        "$ref": "EntityAnnotation"
-                    },
-                    "type": "array"
-                },
-                "webDetection": {
-                    "$ref": "WebDetection",
-                    "description": "If present, web detection has completed successfully."
-                },
-                "cropHintsAnnotation": {
-                    "$ref": "CropHintsAnnotation",
-                    "description": "If present, crop hints have completed successfully."
-                },
-                "safeSearchAnnotation": {
-                    "$ref": "SafeSearchAnnotation",
-                    "description": "If present, safe-search annotation has completed successfully."
-                },
-                "labelAnnotations": {
-                    "description": "If present, label detection has completed successfully.",
-                    "items": {
-                        "$ref": "EntityAnnotation"
-                    },
-                    "type": "array"
-                },
-                "error": {
-                    "$ref": "Status",
-                    "description": "If set, represents the error message for the operation.\nNote that filled-in image annotations are guaranteed to be\ncorrect, even when `error` is set."
-                },
-                "fullTextAnnotation": {
-                    "$ref": "TextAnnotation",
-                    "description": "If present, text (OCR) detection or document (OCR) text detection has\ncompleted successfully.\nThis annotation provides the structural hierarchy for the OCR detected\ntext."
-                }
-            },
-            "type": "object"
-        },
-        "CropHintsParams": {
-            "description": "Parameters for crop hints annotation request.",
-            "id": "CropHintsParams",
-            "properties": {
-                "aspectRatios": {
-                    "description": "Aspect ratios in floats, representing the ratio of the width to the height\nof the image. For example, if the desired aspect ratio is 4/3, the\ncorresponding float value should be 1.33333.  If not specified, the\nbest possible crop is returned. The number of provided aspect ratios is\nlimited to a maximum of 16; any aspect ratios provided after the 16th are\nignored.",
-                    "items": {
-                        "format": "float",
-                        "type": "number"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Block": {
-            "description": "Logical element on the page.",
-            "id": "Block",
-            "properties": {
-                "property": {
-                    "$ref": "TextProperty",
-                    "description": "Additional information detected for the block."
-                },
-                "blockType": {
-                    "description": "Detected block type (text, image etc) for this block.",
-                    "enum": [
-                        "UNKNOWN",
-                        "TEXT",
-                        "TABLE",
-                        "PICTURE",
-                        "RULER",
-                        "BARCODE"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown block type.",
-                        "Regular text block.",
-                        "Table block.",
-                        "Image block.",
-                        "Horizontal/vertical line box.",
-                        "Barcode block."
-                    ],
-                    "type": "string"
-                },
-                "boundingBox": {
-                    "$ref": "BoundingPoly",
-                    "description": "The bounding box for the block.\nThe vertices are in the order of top-left, top-right, bottom-right,\nbottom-left. When a rotation of the bounding box is detected the rotation\nis represented as around the top-left corner as defined when the text is\nread in the 'natural' orientation.\nFor example:\n  * when the text is horizontal it might look like:\n     0----1\n     |    |\n     3----2\n  * when it's rotated 180 degrees around the top-left corner it becomes:\n     2----3\n     |    |\n     1----0\n  and the vertice order will still be (0, 1, 2, 3)."
-                },
-                "paragraphs": {
-                    "description": "List of paragraphs in this block (if this blocks is of type text).",
-                    "items": {
-                        "$ref": "Paragraph"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "WebDetection": {
-            "description": "Relevant information for the image from the Internet.",
-            "id": "WebDetection",
-            "properties": {
-                "visuallySimilarImages": {
-                    "description": "The visually similar image results.",
-                    "items": {
-                        "$ref": "WebImage"
-                    },
-                    "type": "array"
-                },
-                "partialMatchingImages": {
-                    "description": "Partial matching images from the Internet.\nThose images are similar enough to share some key-point features. For\nexample an original image will likely have partial matching for its crops.",
-                    "items": {
-                        "$ref": "WebImage"
-                    },
-                    "type": "array"
-                },
-                "fullMatchingImages": {
-                    "description": "Fully matching images from the Internet.\nCan include resized copies of the query image.",
-                    "items": {
-                        "$ref": "WebImage"
-                    },
-                    "type": "array"
-                },
-                "webEntities": {
-                    "description": "Deduced entities from similar images on the Internet.",
-                    "items": {
-                        "$ref": "WebEntity"
-                    },
-                    "type": "array"
-                },
-                "pagesWithMatchingImages": {
-                    "description": "Web pages containing the matching images from the Internet.",
-                    "items": {
-                        "$ref": "WebPage"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "BatchAnnotateImagesResponse": {
-            "description": "Response to a batch image annotation request.",
-            "id": "BatchAnnotateImagesResponse",
-            "properties": {
-                "responses": {
-                    "description": "Individual responses to image annotation requests within the batch.",
-                    "items": {
-                        "$ref": "AnnotateImageResponse"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ImageSource": {
-            "description": "External image source (Google Cloud Storage image location).",
-            "id": "ImageSource",
-            "properties": {
-                "imageUri": {
-                    "description": "Image URI which supports:\n1) Google Cloud Storage image URI, which must be in the following form:\n`gs://bucket_name/object_name` (for details, see\n[Google Cloud Storage Request\nURIs](https://cloud.google.com/storage/docs/reference-uris)).\nNOTE: Cloud Storage object versioning is not supported.\n2) Publicly accessible image HTTP/HTTPS URL.\nThis is preferred over the legacy `gcs_image_uri` above. When both\n`gcs_image_uri` and `image_uri` are specified, `image_uri` takes\nprecedence.",
-                    "type": "string"
-                },
-                "gcsImageUri": {
-                    "description": "NOTE: For new code `image_uri` below is preferred.\nGoogle Cloud Storage image URI, which must be in the following form:\n`gs://bucket_name/object_name` (for details, see\n[Google Cloud Storage Request\nURIs](https://cloud.google.com/storage/docs/reference-uris)).\nNOTE: Cloud Storage object versioning is not supported.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LocationInfo": {
-            "description": "Detected entity location information.",
-            "id": "LocationInfo",
-            "properties": {
-                "latLng": {
-                    "$ref": "LatLng",
-                    "description": "lat/long location coordinates."
-                }
-            },
-            "type": "object"
-        },
-        "Property": {
-            "description": "A `Property` consists of a user-supplied name/value pair.",
-            "id": "Property",
-            "properties": {
-                "value": {
-                    "description": "Value of the property.",
-                    "type": "string"
-                },
-                "uint64Value": {
-                    "description": "Value of numeric properties.",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Name of the property.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Position": {
-            "description": "A 3D position in the image, used primarily for Face detection landmarks.\nA valid Position must have both x and y coordinates.\nThe position coordinates are in the same scale as the original image.",
-            "id": "Position",
-            "properties": {
-                "y": {
-                    "description": "Y coordinate.",
-                    "format": "float",
-                    "type": "number"
-                },
-                "z": {
-                    "description": "Z coordinate (or depth).",
-                    "format": "float",
-                    "type": "number"
-                },
-                "x": {
-                    "description": "X coordinate.",
-                    "format": "float",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "WebPage": {
-            "description": "Metadata for web pages.",
-            "id": "WebPage",
-            "properties": {
-                "score": {
-                    "description": "(Deprecated) Overall relevancy score for the web page.",
-                    "format": "float",
-                    "type": "number"
-                },
-                "url": {
-                    "description": "The result web page URL.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ColorInfo": {
-            "description": "Color information consists of RGB channels, score, and the fraction of\nthe image that the color occupies in the image.",
-            "id": "ColorInfo",
-            "properties": {
-                "pixelFraction": {
-                    "description": "The fraction of pixels the color occupies in the image.\nValue in range [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "color": {
-                    "$ref": "Color",
-                    "description": "RGB components of the color."
-                },
-                "score": {
-                    "description": "Image-specific score for this color. Value in range [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "EntityAnnotation": {
-            "description": "Set of detected entity features.",
-            "id": "EntityAnnotation",
-            "properties": {
-                "properties": {
-                    "description": "Some entities may have optional user-supplied `Property` (name/value)\nfields, such a score or string that qualifies the entity.",
-                    "items": {
-                        "$ref": "Property"
-                    },
-                    "type": "array"
-                },
-                "score": {
-                    "description": "Overall score of the result. Range [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "locations": {
-                    "description": "The location information for the detected entity. Multiple\n`LocationInfo` elements can be present because one location may\nindicate the location of the scene in the image, and another location\nmay indicate the location of the place where the image was taken.\nLocation information is usually present for landmarks.",
-                    "items": {
-                        "$ref": "LocationInfo"
-                    },
-                    "type": "array"
-                },
-                "mid": {
-                    "description": "Opaque entity ID. Some IDs may be available in\n[Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).",
-                    "type": "string"
-                },
-                "confidence": {
-                    "description": "The accuracy of the entity detection in an image.\nFor example, for an image in which the \"Eiffel Tower\" entity is detected,\nthis field represents the confidence that there is a tower in the query\nimage. Range [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "boundingPoly": {
-                    "$ref": "BoundingPoly",
-                    "description": "Image region to which this entity belongs. Not produced\nfor `LABEL_DETECTION` features."
-                },
-                "locale": {
-                    "description": "The language code for the locale in which the entity textual\n`description` is expressed.",
-                    "type": "string"
-                },
-                "topicality": {
-                    "description": "The relevancy of the ICA (Image Content Annotation) label to the\nimage. For example, the relevancy of \"tower\" is likely higher to an image\ncontaining the detected \"Eiffel Tower\" than to an image containing a\ndetected distant towering building, even though the confidence that\nthere is a tower in each image may be the same. Range [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "description": {
-                    "description": "Entity textual description, expressed in its `locale` language.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CropHint": {
-            "description": "Single crop hint that is used to generate a new crop when serving an image.",
-            "id": "CropHint",
-            "properties": {
-                "importanceFraction": {
-                    "description": "Fraction of importance of this salient region with respect to the original\nimage.",
-                    "format": "float",
-                    "type": "number"
-                },
-                "confidence": {
-                    "description": "Confidence of this being a salient region.  Range [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "boundingPoly": {
-                    "$ref": "BoundingPoly",
-                    "description": "The bounding polygon for the crop region. The coordinates of the bounding\nbox are in the original image's scale, as returned in `ImageParams`."
-                }
-            },
-            "type": "object"
-        },
-        "Landmark": {
-            "description": "A face-specific landmark (for example, a face feature).\nLandmark positions may fall outside the bounds of the image\nif the face is near one or more edges of the image.\nTherefore it is NOT guaranteed that `0 <= x < width` or\n`0 <= y < height`.",
-            "id": "Landmark",
-            "properties": {
-                "type": {
-                    "description": "Face landmark type.",
-                    "enum": [
-                        "UNKNOWN_LANDMARK",
-                        "LEFT_EYE",
-                        "RIGHT_EYE",
-                        "LEFT_OF_LEFT_EYEBROW",
-                        "RIGHT_OF_LEFT_EYEBROW",
-                        "LEFT_OF_RIGHT_EYEBROW",
-                        "RIGHT_OF_RIGHT_EYEBROW",
-                        "MIDPOINT_BETWEEN_EYES",
-                        "NOSE_TIP",
-                        "UPPER_LIP",
-                        "LOWER_LIP",
-                        "MOUTH_LEFT",
-                        "MOUTH_RIGHT",
-                        "MOUTH_CENTER",
-                        "NOSE_BOTTOM_RIGHT",
-                        "NOSE_BOTTOM_LEFT",
-                        "NOSE_BOTTOM_CENTER",
-                        "LEFT_EYE_TOP_BOUNDARY",
-                        "LEFT_EYE_RIGHT_CORNER",
-                        "LEFT_EYE_BOTTOM_BOUNDARY",
-                        "LEFT_EYE_LEFT_CORNER",
-                        "RIGHT_EYE_TOP_BOUNDARY",
-                        "RIGHT_EYE_RIGHT_CORNER",
-                        "RIGHT_EYE_BOTTOM_BOUNDARY",
-                        "RIGHT_EYE_LEFT_CORNER",
-                        "LEFT_EYEBROW_UPPER_MIDPOINT",
-                        "RIGHT_EYEBROW_UPPER_MIDPOINT",
-                        "LEFT_EAR_TRAGION",
-                        "RIGHT_EAR_TRAGION",
-                        "LEFT_EYE_PUPIL",
-                        "RIGHT_EYE_PUPIL",
-                        "FOREHEAD_GLABELLA",
-                        "CHIN_GNATHION",
-                        "CHIN_LEFT_GONION",
-                        "CHIN_RIGHT_GONION"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown face landmark detected. Should not be filled.",
-                        "Left eye.",
-                        "Right eye.",
-                        "Left of left eyebrow.",
-                        "Right of left eyebrow.",
-                        "Left of right eyebrow.",
-                        "Right of right eyebrow.",
-                        "Midpoint between eyes.",
-                        "Nose tip.",
-                        "Upper lip.",
-                        "Lower lip.",
-                        "Mouth left.",
-                        "Mouth right.",
-                        "Mouth center.",
-                        "Nose, bottom right.",
-                        "Nose, bottom left.",
-                        "Nose, bottom center.",
-                        "Left eye, top boundary.",
-                        "Left eye, right corner.",
-                        "Left eye, bottom boundary.",
-                        "Left eye, left corner.",
-                        "Right eye, top boundary.",
-                        "Right eye, right corner.",
-                        "Right eye, bottom boundary.",
-                        "Right eye, left corner.",
-                        "Left eyebrow, upper midpoint.",
-                        "Right eyebrow, upper midpoint.",
-                        "Left ear tragion.",
-                        "Right ear tragion.",
-                        "Left eye pupil.",
-                        "Right eye pupil.",
-                        "Forehead glabella.",
-                        "Chin gnathion.",
-                        "Chin left gonion.",
-                        "Chin right gonion."
-                    ],
-                    "type": "string"
-                },
-                "position": {
-                    "$ref": "Position",
-                    "description": "Face landmark position."
-                }
-            },
-            "type": "object"
-        },
-        "WebImage": {
-            "description": "Metadata for online images.",
-            "id": "WebImage",
-            "properties": {
-                "score": {
-                    "description": "(Deprecated) Overall relevancy score for the image.",
-                    "format": "float",
-                    "type": "number"
-                },
-                "url": {
-                    "description": "The result image URL.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Word": {
-            "description": "A word representation.",
-            "id": "Word",
-            "properties": {
-                "boundingBox": {
-                    "$ref": "BoundingPoly",
-                    "description": "The bounding box for the word.\nThe vertices are in the order of top-left, top-right, bottom-right,\nbottom-left. When a rotation of the bounding box is detected the rotation\nis represented as around the top-left corner as defined when the text is\nread in the 'natural' orientation.\nFor example:\n  * when the text is horizontal it might look like:\n     0----1\n     |    |\n     3----2\n  * when it's rotated 180 degrees around the top-left corner it becomes:\n     2----3\n     |    |\n     1----0\n  and the vertice order will still be (0, 1, 2, 3)."
-                },
-                "symbols": {
-                    "description": "List of symbols in the word.\nThe order of the symbols follows the natural reading order.",
-                    "items": {
-                        "$ref": "Symbol"
-                    },
-                    "type": "array"
-                },
-                "property": {
-                    "$ref": "TextProperty",
-                    "description": "Additional information detected for the word."
-                }
-            },
-            "type": "object"
-        },
-        "Paragraph": {
-            "description": "Structural unit of text representing a number of words in certain order.",
-            "id": "Paragraph",
-            "properties": {
-                "boundingBox": {
-                    "$ref": "BoundingPoly",
-                    "description": "The bounding box for the paragraph.\nThe vertices are in the order of top-left, top-right, bottom-right,\nbottom-left. When a rotation of the bounding box is detected the rotation\nis represented as around the top-left corner as defined when the text is\nread in the 'natural' orientation.\nFor example:\n  * when the text is horizontal it might look like:\n     0----1\n     |    |\n     3----2\n  * when it's rotated 180 degrees around the top-left corner it becomes:\n     2----3\n     |    |\n     1----0\n  and the vertice order will still be (0, 1, 2, 3)."
-                },
-                "words": {
-                    "description": "List of words in this paragraph.",
-                    "items": {
-                        "$ref": "Word"
-                    },
-                    "type": "array"
-                },
-                "property": {
-                    "$ref": "TextProperty",
-                    "description": "Additional information detected for the paragraph."
-                }
-            },
-            "type": "object"
-        },
-        "Image": {
-            "description": "Client image to perform Google Cloud Vision API tasks over.",
-            "id": "Image",
-            "properties": {
-                "source": {
-                    "$ref": "ImageSource",
-                    "description": "Google Cloud Storage image location. If both `content` and `source`\nare provided for an image, `content` takes precedence and is\nused to perform the image annotation request."
-                },
-                "content": {
-                    "description": "Image content, represented as a stream of bytes.\nNote: as with all `bytes` fields, protobuffers use a pure binary\nrepresentation, whereas JSON representations use base64.",
-                    "format": "byte",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "FaceAnnotation": {
             "description": "A face annotation object contains the results of face detection.",
             "id": "FaceAnnotation",
             "properties": {
+                "sorrowLikelihood": {
+                    "description": "Sorrow likelihood.",
+                    "enum": [
+                        "UNKNOWN",
+                        "VERY_UNLIKELY",
+                        "UNLIKELY",
+                        "POSSIBLE",
+                        "LIKELY",
+                        "VERY_LIKELY"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown likelihood.",
+                        "It is very unlikely that the image belongs to the specified vertical.",
+                        "It is unlikely that the image belongs to the specified vertical.",
+                        "It is possible that the image belongs to the specified vertical.",
+                        "It is likely that the image belongs to the specified vertical.",
+                        "It is very likely that the image belongs to the specified vertical."
+                    ],
+                    "type": "string"
+                },
+                "tiltAngle": {
+                    "description": "Pitch angle, which indicates the upwards/downwards angle that the face is\npointing relative to the image's horizontal plane. Range [-180,180].",
+                    "format": "float",
+                    "type": "number"
+                },
                 "fdBoundingPoly": {
                     "$ref": "BoundingPoly",
                     "description": "The `fd_bounding_poly` bounding polygon is tighter than the\n`boundingPoly`, and encloses only the skin part of the face. Typically, it\nis used to eliminate the face from any image analysis that detects the\n\"amount of skin\" visible in an image. It is not based on the\nlandmarker results, only on the initial face detection, hence\nthe <code>fd</code> (face detection) prefix."
@@ -1271,31 +326,6 @@
                     "description": "Roll angle, which indicates the amount of clockwise/anti-clockwise rotation\nof the face relative to the image vertical about the axis perpendicular to\nthe face. Range [-180,180].",
                     "format": "float",
                     "type": "number"
-                },
-                "sorrowLikelihood": {
-                    "description": "Sorrow likelihood.",
-                    "enum": [
-                        "UNKNOWN",
-                        "VERY_UNLIKELY",
-                        "UNLIKELY",
-                        "POSSIBLE",
-                        "LIKELY",
-                        "VERY_LIKELY"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown likelihood.",
-                        "It is very unlikely that the image belongs to the specified vertical.",
-                        "It is unlikely that the image belongs to the specified vertical.",
-                        "It is possible that the image belongs to the specified vertical.",
-                        "It is likely that the image belongs to the specified vertical.",
-                        "It is very likely that the image belongs to the specified vertical."
-                    ],
-                    "type": "string"
-                },
-                "tiltAngle": {
-                    "description": "Pitch angle, which indicates the upwards/downwards angle that the face is\npointing relative to the image's horizontal plane. Range [-180,180].",
-                    "format": "float",
-                    "type": "number"
                 }
             },
             "type": "object"
@@ -1318,6 +348,10 @@
             "description": "Detected start or end of a structural component.",
             "id": "DetectedBreak",
             "properties": {
+                "isPrefix": {
+                    "description": "True if break prepends the element.",
+                    "type": "boolean"
+                },
                 "type": {
                     "description": "Detected break type.",
                     "enum": [
@@ -1337,10 +371,976 @@
                         "Line break that ends a paragraph."
                     ],
                     "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ImageContext": {
+            "description": "Image context and/or feature-specific parameters.",
+            "id": "ImageContext",
+            "properties": {
+                "latLongRect": {
+                    "$ref": "LatLongRect",
+                    "description": "lat/long rectangle that specifies the location of the image."
                 },
-                "isPrefix": {
-                    "description": "True if break prepends the element.",
-                    "type": "boolean"
+                "cropHintsParams": {
+                    "$ref": "CropHintsParams",
+                    "description": "Parameters for crop hints annotation request."
+                },
+                "languageHints": {
+                    "description": "List of languages to use for TEXT_DETECTION. In most cases, an empty value\nyields the best results since it enables automatic language detection. For\nlanguages based on the Latin alphabet, setting `language_hints` is not\nneeded. In rare cases, when the language of the text in the image is known,\nsetting a hint will help get better results (although it will be a\nsignificant hindrance if the hint is wrong). Text detection returns an\nerror if one or more of the specified languages is not one of the\n[supported languages](/vision/docs/languages).",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Page": {
+            "description": "Detected page from OCR.",
+            "id": "Page",
+            "properties": {
+                "height": {
+                    "description": "Page height in pixels.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "width": {
+                    "description": "Page width in pixels.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "blocks": {
+                    "description": "List of blocks of text, images etc on this page.",
+                    "items": {
+                        "$ref": "Block"
+                    },
+                    "type": "array"
+                },
+                "property": {
+                    "$ref": "TextProperty",
+                    "description": "Additional information detected on the page."
+                }
+            },
+            "type": "object"
+        },
+        "AnnotateImageRequest": {
+            "description": "Request for performing Google Cloud Vision API tasks over a user-provided\nimage, with user-requested features.",
+            "id": "AnnotateImageRequest",
+            "properties": {
+                "features": {
+                    "description": "Requested features.",
+                    "items": {
+                        "$ref": "Feature"
+                    },
+                    "type": "array"
+                },
+                "image": {
+                    "$ref": "Image",
+                    "description": "The image to be processed."
+                },
+                "imageContext": {
+                    "$ref": "ImageContext",
+                    "description": "Additional context that may accompany the image."
+                }
+            },
+            "type": "object"
+        },
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+            "id": "Status",
+            "properties": {
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                },
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "Symbol": {
+            "description": "A single symbol representation.",
+            "id": "Symbol",
+            "properties": {
+                "boundingBox": {
+                    "$ref": "BoundingPoly",
+                    "description": "The bounding box for the symbol.\nThe vertices are in the order of top-left, top-right, bottom-right,\nbottom-left. When a rotation of the bounding box is detected the rotation\nis represented as around the top-left corner as defined when the text is\nread in the 'natural' orientation.\nFor example:\n  * when the text is horizontal it might look like:\n     0----1\n     |    |\n     3----2\n  * when it's rotated 180 degrees around the top-left corner it becomes:\n     2----3\n     |    |\n     1----0\n  and the vertice order will still be (0, 1, 2, 3)."
+                },
+                "text": {
+                    "description": "The actual UTF-8 representation of the symbol.",
+                    "type": "string"
+                },
+                "property": {
+                    "$ref": "TextProperty",
+                    "description": "Additional information detected for the symbol."
+                }
+            },
+            "type": "object"
+        },
+        "LatLongRect": {
+            "description": "Rectangle determined by min and max `LatLng` pairs.",
+            "id": "LatLongRect",
+            "properties": {
+                "minLatLng": {
+                    "$ref": "LatLng",
+                    "description": "Min lat/long pair."
+                },
+                "maxLatLng": {
+                    "$ref": "LatLng",
+                    "description": "Max lat/long pair."
+                }
+            },
+            "type": "object"
+        },
+        "CropHintsAnnotation": {
+            "description": "Set of crop hints that are used to generate new crops when serving images.",
+            "id": "CropHintsAnnotation",
+            "properties": {
+                "cropHints": {
+                    "description": "Crop hint results.",
+                    "items": {
+                        "$ref": "CropHint"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "LatLng": {
+            "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n<a href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\">WGS84\nstandard</a>. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n    def NormalizeLongitude(longitude):\n      \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n      q, r = divmod(longitude, 360.0)\n      if r > 180.0 or (r == 180.0 and q <= -1.0):\n        return r - 360.0\n      return r\n\n    def NormalizeLatLng(latitude, longitude):\n      \"\"\"Wraps decimal degrees latitude and longitude to\n      [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n      r = latitude % 360.0\n      if r <= 90.0:\n        return r, NormalizeLongitude(longitude)\n      elif r >= 270.0:\n        return r - 360, NormalizeLongitude(longitude)\n      else:\n        return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n    assert 180.0 == NormalizeLongitude(180.0)\n    assert -180.0 == NormalizeLongitude(-180.0)\n    assert -179.0 == NormalizeLongitude(181.0)\n    assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n    assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n    assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n    assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n    assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n    assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)",
+            "id": "LatLng",
+            "properties": {
+                "longitude": {
+                    "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
+                    "format": "double",
+                    "type": "number"
+                },
+                "latitude": {
+                    "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "Color": {
+            "description": "Represents a color in the RGBA color space. This representation is designed\nfor simplicity of conversion to/from color representations in various\nlanguages over compactness; for example, the fields of this representation\ncan be trivially provided to the constructor of \"java.awt.Color\" in Java; it\ncan also be trivially provided to UIColor's \"+colorWithRed:green:blue:alpha\"\nmethod in iOS; and, with just a little work, it can be easily formatted into\na CSS \"rgba()\" string in JavaScript, as well. Here are some examples:\n\nExample (Java):\n\n     import com.google.type.Color;\n\n     // ...\n     public static java.awt.Color fromProto(Color protocolor) {\n       float alpha = protocolor.hasAlpha()\n           ? protocolor.getAlpha().getValue()\n           : 1.0;\n\n       return new java.awt.Color(\n           protocolor.getRed(),\n           protocolor.getGreen(),\n           protocolor.getBlue(),\n           alpha);\n     }\n\n     public static Color toProto(java.awt.Color color) {\n       float red = (float) color.getRed();\n       float green = (float) color.getGreen();\n       float blue = (float) color.getBlue();\n       float denominator = 255.0;\n       Color.Builder resultBuilder =\n           Color\n               .newBuilder()\n               .setRed(red / denominator)\n               .setGreen(green / denominator)\n               .setBlue(blue / denominator);\n       int alpha = color.getAlpha();\n       if (alpha != 255) {\n         result.setAlpha(\n             FloatValue\n                 .newBuilder()\n                 .setValue(((float) alpha) / denominator)\n                 .build());\n       }\n       return resultBuilder.build();\n     }\n     // ...\n\nExample (iOS / Obj-C):\n\n     // ...\n     static UIColor* fromProto(Color* protocolor) {\n        float red = [protocolor red];\n        float green = [protocolor green];\n        float blue = [protocolor blue];\n        FloatValue* alpha_wrapper = [protocolor alpha];\n        float alpha = 1.0;\n        if (alpha_wrapper != nil) {\n          alpha = [alpha_wrapper value];\n        }\n        return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];\n     }\n\n     static Color* toProto(UIColor* color) {\n         CGFloat red, green, blue, alpha;\n         if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {\n           return nil;\n         }\n         Color* result = [Color alloc] init];\n         [result setRed:red];\n         [result setGreen:green];\n         [result setBlue:blue];\n         if (alpha <= 0.9999) {\n           [result setAlpha:floatWrapperWithValue(alpha)];\n         }\n         [result autorelease];\n         return result;\n    }\n    // ...\n\n Example (JavaScript):\n\n    // ...\n\n    var protoToCssColor = function(rgb_color) {\n       var redFrac = rgb_color.red || 0.0;\n       var greenFrac = rgb_color.green || 0.0;\n       var blueFrac = rgb_color.blue || 0.0;\n       var red = Math.floor(redFrac * 255);\n       var green = Math.floor(greenFrac * 255);\n       var blue = Math.floor(blueFrac * 255);\n\n       if (!('alpha' in rgb_color)) {\n          return rgbToCssColor_(red, green, blue);\n       }\n\n       var alphaFrac = rgb_color.alpha.value || 0.0;\n       var rgbParams = [red, green, blue].join(',');\n       return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');\n    };\n\n    var rgbToCssColor_ = function(red, green, blue) {\n      var rgbNumber = new Number((red << 16) | (green << 8) | blue);\n      var hexString = rgbNumber.toString(16);\n      var missingZeros = 6 - hexString.length;\n      var resultBuilder = ['#'];\n      for (var i = 0; i < missingZeros; i++) {\n         resultBuilder.push('0');\n      }\n      resultBuilder.push(hexString);\n      return resultBuilder.join('');\n    };\n\n    // ...",
+            "id": "Color",
+            "properties": {
+                "red": {
+                    "description": "The amount of red in the color as a value in the interval [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                },
+                "alpha": {
+                    "description": "The fraction of this color that should be applied to the pixel. That is,\nthe final pixel color is defined by the equation:\n\n  pixel color = alpha * (this color) + (1.0 - alpha) * (background color)\n\nThis means that a value of 1.0 corresponds to a solid color, whereas\na value of 0.0 corresponds to a completely transparent color. This\nuses a wrapper message rather than a simple float scalar so that it is\npossible to distinguish between a default value and the value being unset.\nIf omitted, this color object is to be rendered as a solid color\n(as if the alpha value had been explicitly given with a value of 1.0).",
+                    "format": "float",
+                    "type": "number"
+                },
+                "blue": {
+                    "description": "The amount of blue in the color as a value in the interval [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                },
+                "green": {
+                    "description": "The amount of green in the color as a value in the interval [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "ImageProperties": {
+            "description": "Stores image properties, such as dominant colors.",
+            "id": "ImageProperties",
+            "properties": {
+                "dominantColors": {
+                    "$ref": "DominantColorsAnnotation",
+                    "description": "If present, dominant colors completed successfully."
+                }
+            },
+            "type": "object"
+        },
+        "Feature": {
+            "description": "Users describe the type of Google Cloud Vision API tasks to perform over\nimages by using *Feature*s. Each Feature indicates a type of image\ndetection task to perform. Features encode the Cloud Vision API\nvertical to operate on and the number of top-scoring results to return.",
+            "id": "Feature",
+            "properties": {
+                "maxResults": {
+                    "description": "Maximum number of results of this type.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "type": {
+                    "description": "The feature type.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "FACE_DETECTION",
+                        "LANDMARK_DETECTION",
+                        "LOGO_DETECTION",
+                        "LABEL_DETECTION",
+                        "TEXT_DETECTION",
+                        "DOCUMENT_TEXT_DETECTION",
+                        "SAFE_SEARCH_DETECTION",
+                        "IMAGE_PROPERTIES",
+                        "CROP_HINTS",
+                        "WEB_DETECTION"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified feature type.",
+                        "Run face detection.",
+                        "Run landmark detection.",
+                        "Run logo detection.",
+                        "Run label detection.",
+                        "Run OCR.",
+                        "Run dense text document OCR. Takes precedence when both\nDOCUMENT_TEXT_DETECTION and TEXT_DETECTION are present.",
+                        "Run computer vision models to compute image safe-search properties.",
+                        "Compute a set of image properties, such as the image's dominant colors.",
+                        "Run crop hints.",
+                        "Run web detection."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SafeSearchAnnotation": {
+            "description": "Set of features pertaining to the image, computed by computer vision\nmethods over safe-search verticals (for example, adult, spoof, medical,\nviolence).",
+            "id": "SafeSearchAnnotation",
+            "properties": {
+                "violence": {
+                    "description": "Likelihood that this image contains violent content.",
+                    "enum": [
+                        "UNKNOWN",
+                        "VERY_UNLIKELY",
+                        "UNLIKELY",
+                        "POSSIBLE",
+                        "LIKELY",
+                        "VERY_LIKELY"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown likelihood.",
+                        "It is very unlikely that the image belongs to the specified vertical.",
+                        "It is unlikely that the image belongs to the specified vertical.",
+                        "It is possible that the image belongs to the specified vertical.",
+                        "It is likely that the image belongs to the specified vertical.",
+                        "It is very likely that the image belongs to the specified vertical."
+                    ],
+                    "type": "string"
+                },
+                "adult": {
+                    "description": "Represents the adult content likelihood for the image. Adult content may\ncontain elements such as nudity, pornographic images or cartoons, or\nsexual activities.",
+                    "enum": [
+                        "UNKNOWN",
+                        "VERY_UNLIKELY",
+                        "UNLIKELY",
+                        "POSSIBLE",
+                        "LIKELY",
+                        "VERY_LIKELY"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown likelihood.",
+                        "It is very unlikely that the image belongs to the specified vertical.",
+                        "It is unlikely that the image belongs to the specified vertical.",
+                        "It is possible that the image belongs to the specified vertical.",
+                        "It is likely that the image belongs to the specified vertical.",
+                        "It is very likely that the image belongs to the specified vertical."
+                    ],
+                    "type": "string"
+                },
+                "spoof": {
+                    "description": "Spoof likelihood. The likelihood that an modification\nwas made to the image's canonical version to make it appear\nfunny or offensive.",
+                    "enum": [
+                        "UNKNOWN",
+                        "VERY_UNLIKELY",
+                        "UNLIKELY",
+                        "POSSIBLE",
+                        "LIKELY",
+                        "VERY_LIKELY"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown likelihood.",
+                        "It is very unlikely that the image belongs to the specified vertical.",
+                        "It is unlikely that the image belongs to the specified vertical.",
+                        "It is possible that the image belongs to the specified vertical.",
+                        "It is likely that the image belongs to the specified vertical.",
+                        "It is very likely that the image belongs to the specified vertical."
+                    ],
+                    "type": "string"
+                },
+                "medical": {
+                    "description": "Likelihood that this is a medical image.",
+                    "enum": [
+                        "UNKNOWN",
+                        "VERY_UNLIKELY",
+                        "UNLIKELY",
+                        "POSSIBLE",
+                        "LIKELY",
+                        "VERY_LIKELY"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown likelihood.",
+                        "It is very unlikely that the image belongs to the specified vertical.",
+                        "It is unlikely that the image belongs to the specified vertical.",
+                        "It is possible that the image belongs to the specified vertical.",
+                        "It is likely that the image belongs to the specified vertical.",
+                        "It is very likely that the image belongs to the specified vertical."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DominantColorsAnnotation": {
+            "description": "Set of dominant colors and their corresponding scores.",
+            "id": "DominantColorsAnnotation",
+            "properties": {
+                "colors": {
+                    "description": "RGB color values with their score and pixel fraction.",
+                    "items": {
+                        "$ref": "ColorInfo"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "TextAnnotation": {
+            "description": "TextAnnotation contains a structured representation of OCR extracted text.\nThe hierarchy of an OCR extracted text structure is like this:\n    TextAnnotation -> Page -> Block -> Paragraph -> Word -> Symbol\nEach structural component, starting from Page, may further have their own\nproperties. Properties describe detected languages, breaks etc.. Please\nrefer to the google.cloud.vision.v1.TextAnnotation.TextProperty message\ndefinition below for more detail.",
+            "id": "TextAnnotation",
+            "properties": {
+                "pages": {
+                    "description": "List of pages detected by OCR.",
+                    "items": {
+                        "$ref": "Page"
+                    },
+                    "type": "array"
+                },
+                "text": {
+                    "description": "UTF-8 text detected on the pages.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DetectedLanguage": {
+            "description": "Detected language for a structural component.",
+            "id": "DetectedLanguage",
+            "properties": {
+                "confidence": {
+                    "description": "Confidence of detected language. Range [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                },
+                "languageCode": {
+                    "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more\ninformation, see\nhttp://www.unicode.org/reports/tr35/#Unicode_locale_identifier.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Vertex": {
+            "description": "A vertex represents a 2D point in the image.\nNOTE: the vertex coordinates are in the same scale as the original image.",
+            "id": "Vertex",
+            "properties": {
+                "y": {
+                    "description": "Y coordinate.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "x": {
+                    "description": "X coordinate.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "TextProperty": {
+            "description": "Additional information detected on the structural component.",
+            "id": "TextProperty",
+            "properties": {
+                "detectedLanguages": {
+                    "description": "A list of detected languages together with confidence.",
+                    "items": {
+                        "$ref": "DetectedLanguage"
+                    },
+                    "type": "array"
+                },
+                "detectedBreak": {
+                    "$ref": "DetectedBreak",
+                    "description": "Detected start or end of a text segment."
+                }
+            },
+            "type": "object"
+        },
+        "BoundingPoly": {
+            "description": "A bounding polygon for the detected image annotation.",
+            "id": "BoundingPoly",
+            "properties": {
+                "vertices": {
+                    "description": "The bounding polygon vertices.",
+                    "items": {
+                        "$ref": "Vertex"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "WebEntity": {
+            "description": "Entity deduced from similar images on the Internet.",
+            "id": "WebEntity",
+            "properties": {
+                "entityId": {
+                    "description": "Opaque entity ID.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Canonical description of the entity, in English.",
+                    "type": "string"
+                },
+                "score": {
+                    "description": "Overall relevancy score for the entity.\nNot normalized and not comparable across different image queries.",
+                    "format": "float",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "AnnotateImageResponse": {
+            "description": "Response to an image annotation request.",
+            "id": "AnnotateImageResponse",
+            "properties": {
+                "logoAnnotations": {
+                    "description": "If present, logo detection has completed successfully.",
+                    "items": {
+                        "$ref": "EntityAnnotation"
+                    },
+                    "type": "array"
+                },
+                "cropHintsAnnotation": {
+                    "$ref": "CropHintsAnnotation",
+                    "description": "If present, crop hints have completed successfully."
+                },
+                "webDetection": {
+                    "$ref": "WebDetection",
+                    "description": "If present, web detection has completed successfully."
+                },
+                "labelAnnotations": {
+                    "description": "If present, label detection has completed successfully.",
+                    "items": {
+                        "$ref": "EntityAnnotation"
+                    },
+                    "type": "array"
+                },
+                "safeSearchAnnotation": {
+                    "$ref": "SafeSearchAnnotation",
+                    "description": "If present, safe-search annotation has completed successfully."
+                },
+                "error": {
+                    "$ref": "Status",
+                    "description": "If set, represents the error message for the operation.\nNote that filled-in image annotations are guaranteed to be\ncorrect, even when `error` is set."
+                },
+                "fullTextAnnotation": {
+                    "$ref": "TextAnnotation",
+                    "description": "If present, text (OCR) detection or document (OCR) text detection has\ncompleted successfully.\nThis annotation provides the structural hierarchy for the OCR detected\ntext."
+                },
+                "landmarkAnnotations": {
+                    "description": "If present, landmark detection has completed successfully.",
+                    "items": {
+                        "$ref": "EntityAnnotation"
+                    },
+                    "type": "array"
+                },
+                "textAnnotations": {
+                    "description": "If present, text (OCR) detection has completed successfully.",
+                    "items": {
+                        "$ref": "EntityAnnotation"
+                    },
+                    "type": "array"
+                },
+                "faceAnnotations": {
+                    "description": "If present, face detection has completed successfully.",
+                    "items": {
+                        "$ref": "FaceAnnotation"
+                    },
+                    "type": "array"
+                },
+                "imagePropertiesAnnotation": {
+                    "$ref": "ImageProperties",
+                    "description": "If present, image properties were extracted successfully."
+                }
+            },
+            "type": "object"
+        },
+        "CropHintsParams": {
+            "description": "Parameters for crop hints annotation request.",
+            "id": "CropHintsParams",
+            "properties": {
+                "aspectRatios": {
+                    "description": "Aspect ratios in floats, representing the ratio of the width to the height\nof the image. For example, if the desired aspect ratio is 4/3, the\ncorresponding float value should be 1.33333.  If not specified, the\nbest possible crop is returned. The number of provided aspect ratios is\nlimited to a maximum of 16; any aspect ratios provided after the 16th are\nignored.",
+                    "items": {
+                        "format": "float",
+                        "type": "number"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Block": {
+            "description": "Logical element on the page.",
+            "id": "Block",
+            "properties": {
+                "boundingBox": {
+                    "$ref": "BoundingPoly",
+                    "description": "The bounding box for the block.\nThe vertices are in the order of top-left, top-right, bottom-right,\nbottom-left. When a rotation of the bounding box is detected the rotation\nis represented as around the top-left corner as defined when the text is\nread in the 'natural' orientation.\nFor example:\n  * when the text is horizontal it might look like:\n     0----1\n     |    |\n     3----2\n  * when it's rotated 180 degrees around the top-left corner it becomes:\n     2----3\n     |    |\n     1----0\n  and the vertice order will still be (0, 1, 2, 3)."
+                },
+                "paragraphs": {
+                    "description": "List of paragraphs in this block (if this blocks is of type text).",
+                    "items": {
+                        "$ref": "Paragraph"
+                    },
+                    "type": "array"
+                },
+                "property": {
+                    "$ref": "TextProperty",
+                    "description": "Additional information detected for the block."
+                },
+                "blockType": {
+                    "description": "Detected block type (text, image etc) for this block.",
+                    "enum": [
+                        "UNKNOWN",
+                        "TEXT",
+                        "TABLE",
+                        "PICTURE",
+                        "RULER",
+                        "BARCODE"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown block type.",
+                        "Regular text block.",
+                        "Table block.",
+                        "Image block.",
+                        "Horizontal/vertical line box.",
+                        "Barcode block."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Property": {
+            "description": "A `Property` consists of a user-supplied name/value pair.",
+            "id": "Property",
+            "properties": {
+                "value": {
+                    "description": "Value of the property.",
+                    "type": "string"
+                },
+                "uint64Value": {
+                    "description": "Value of numeric properties.",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Name of the property.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LocationInfo": {
+            "description": "Detected entity location information.",
+            "id": "LocationInfo",
+            "properties": {
+                "latLng": {
+                    "$ref": "LatLng",
+                    "description": "lat/long location coordinates."
+                }
+            },
+            "type": "object"
+        },
+        "ImageSource": {
+            "description": "External image source (Google Cloud Storage image location).",
+            "id": "ImageSource",
+            "properties": {
+                "gcsImageUri": {
+                    "description": "NOTE: For new code `image_uri` below is preferred.\nGoogle Cloud Storage image URI, which must be in the following form:\n`gs://bucket_name/object_name` (for details, see\n[Google Cloud Storage Request\nURIs](https://cloud.google.com/storage/docs/reference-uris)).\nNOTE: Cloud Storage object versioning is not supported.",
+                    "type": "string"
+                },
+                "imageUri": {
+                    "description": "Image URI which supports:\n1) Google Cloud Storage image URI, which must be in the following form:\n`gs://bucket_name/object_name` (for details, see\n[Google Cloud Storage Request\nURIs](https://cloud.google.com/storage/docs/reference-uris)).\nNOTE: Cloud Storage object versioning is not supported.\n2) Publicly accessible image HTTP/HTTPS URL.\nThis is preferred over the legacy `gcs_image_uri` above. When both\n`gcs_image_uri` and `image_uri` are specified, `image_uri` takes\nprecedence.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "BatchAnnotateImagesResponse": {
+            "description": "Response to a batch image annotation request.",
+            "id": "BatchAnnotateImagesResponse",
+            "properties": {
+                "responses": {
+                    "description": "Individual responses to image annotation requests within the batch.",
+                    "items": {
+                        "$ref": "AnnotateImageResponse"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "WebDetection": {
+            "description": "Relevant information for the image from the Internet.",
+            "id": "WebDetection",
+            "properties": {
+                "fullMatchingImages": {
+                    "description": "Fully matching images from the Internet.\nCan include resized copies of the query image.",
+                    "items": {
+                        "$ref": "WebImage"
+                    },
+                    "type": "array"
+                },
+                "webEntities": {
+                    "description": "Deduced entities from similar images on the Internet.",
+                    "items": {
+                        "$ref": "WebEntity"
+                    },
+                    "type": "array"
+                },
+                "pagesWithMatchingImages": {
+                    "description": "Web pages containing the matching images from the Internet.",
+                    "items": {
+                        "$ref": "WebPage"
+                    },
+                    "type": "array"
+                },
+                "visuallySimilarImages": {
+                    "description": "The visually similar image results.",
+                    "items": {
+                        "$ref": "WebImage"
+                    },
+                    "type": "array"
+                },
+                "partialMatchingImages": {
+                    "description": "Partial matching images from the Internet.\nThose images are similar enough to share some key-point features. For\nexample an original image will likely have partial matching for its crops.",
+                    "items": {
+                        "$ref": "WebImage"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Position": {
+            "description": "A 3D position in the image, used primarily for Face detection landmarks.\nA valid Position must have both x and y coordinates.\nThe position coordinates are in the same scale as the original image.",
+            "id": "Position",
+            "properties": {
+                "y": {
+                    "description": "Y coordinate.",
+                    "format": "float",
+                    "type": "number"
+                },
+                "z": {
+                    "description": "Z coordinate (or depth).",
+                    "format": "float",
+                    "type": "number"
+                },
+                "x": {
+                    "description": "X coordinate.",
+                    "format": "float",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "WebPage": {
+            "description": "Metadata for web pages.",
+            "id": "WebPage",
+            "properties": {
+                "url": {
+                    "description": "The result web page URL.",
+                    "type": "string"
+                },
+                "score": {
+                    "description": "(Deprecated) Overall relevancy score for the web page.",
+                    "format": "float",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "ColorInfo": {
+            "description": "Color information consists of RGB channels, score, and the fraction of\nthe image that the color occupies in the image.",
+            "id": "ColorInfo",
+            "properties": {
+                "pixelFraction": {
+                    "description": "The fraction of pixels the color occupies in the image.\nValue in range [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                },
+                "color": {
+                    "$ref": "Color",
+                    "description": "RGB components of the color."
+                },
+                "score": {
+                    "description": "Image-specific score for this color. Value in range [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "EntityAnnotation": {
+            "description": "Set of detected entity features.",
+            "id": "EntityAnnotation",
+            "properties": {
+                "confidence": {
+                    "description": "The accuracy of the entity detection in an image.\nFor example, for an image in which the \"Eiffel Tower\" entity is detected,\nthis field represents the confidence that there is a tower in the query\nimage. Range [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                },
+                "boundingPoly": {
+                    "$ref": "BoundingPoly",
+                    "description": "Image region to which this entity belongs. Not produced\nfor `LABEL_DETECTION` features."
+                },
+                "locale": {
+                    "description": "The language code for the locale in which the entity textual\n`description` is expressed.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Entity textual description, expressed in its `locale` language.",
+                    "type": "string"
+                },
+                "topicality": {
+                    "description": "The relevancy of the ICA (Image Content Annotation) label to the\nimage. For example, the relevancy of \"tower\" is likely higher to an image\ncontaining the detected \"Eiffel Tower\" than to an image containing a\ndetected distant towering building, even though the confidence that\nthere is a tower in each image may be the same. Range [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                },
+                "properties": {
+                    "description": "Some entities may have optional user-supplied `Property` (name/value)\nfields, such a score or string that qualifies the entity.",
+                    "items": {
+                        "$ref": "Property"
+                    },
+                    "type": "array"
+                },
+                "score": {
+                    "description": "Overall score of the result. Range [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                },
+                "locations": {
+                    "description": "The location information for the detected entity. Multiple\n`LocationInfo` elements can be present because one location may\nindicate the location of the scene in the image, and another location\nmay indicate the location of the place where the image was taken.\nLocation information is usually present for landmarks.",
+                    "items": {
+                        "$ref": "LocationInfo"
+                    },
+                    "type": "array"
+                },
+                "mid": {
+                    "description": "Opaque entity ID. Some IDs may be available in\n[Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CropHint": {
+            "description": "Single crop hint that is used to generate a new crop when serving an image.",
+            "id": "CropHint",
+            "properties": {
+                "importanceFraction": {
+                    "description": "Fraction of importance of this salient region with respect to the original\nimage.",
+                    "format": "float",
+                    "type": "number"
+                },
+                "confidence": {
+                    "description": "Confidence of this being a salient region.  Range [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                },
+                "boundingPoly": {
+                    "$ref": "BoundingPoly",
+                    "description": "The bounding polygon for the crop region. The coordinates of the bounding\nbox are in the original image's scale, as returned in `ImageParams`."
+                }
+            },
+            "type": "object"
+        },
+        "Landmark": {
+            "description": "A face-specific landmark (for example, a face feature).\nLandmark positions may fall outside the bounds of the image\nif the face is near one or more edges of the image.\nTherefore it is NOT guaranteed that `0 <= x < width` or\n`0 <= y < height`.",
+            "id": "Landmark",
+            "properties": {
+                "type": {
+                    "description": "Face landmark type.",
+                    "enum": [
+                        "UNKNOWN_LANDMARK",
+                        "LEFT_EYE",
+                        "RIGHT_EYE",
+                        "LEFT_OF_LEFT_EYEBROW",
+                        "RIGHT_OF_LEFT_EYEBROW",
+                        "LEFT_OF_RIGHT_EYEBROW",
+                        "RIGHT_OF_RIGHT_EYEBROW",
+                        "MIDPOINT_BETWEEN_EYES",
+                        "NOSE_TIP",
+                        "UPPER_LIP",
+                        "LOWER_LIP",
+                        "MOUTH_LEFT",
+                        "MOUTH_RIGHT",
+                        "MOUTH_CENTER",
+                        "NOSE_BOTTOM_RIGHT",
+                        "NOSE_BOTTOM_LEFT",
+                        "NOSE_BOTTOM_CENTER",
+                        "LEFT_EYE_TOP_BOUNDARY",
+                        "LEFT_EYE_RIGHT_CORNER",
+                        "LEFT_EYE_BOTTOM_BOUNDARY",
+                        "LEFT_EYE_LEFT_CORNER",
+                        "RIGHT_EYE_TOP_BOUNDARY",
+                        "RIGHT_EYE_RIGHT_CORNER",
+                        "RIGHT_EYE_BOTTOM_BOUNDARY",
+                        "RIGHT_EYE_LEFT_CORNER",
+                        "LEFT_EYEBROW_UPPER_MIDPOINT",
+                        "RIGHT_EYEBROW_UPPER_MIDPOINT",
+                        "LEFT_EAR_TRAGION",
+                        "RIGHT_EAR_TRAGION",
+                        "LEFT_EYE_PUPIL",
+                        "RIGHT_EYE_PUPIL",
+                        "FOREHEAD_GLABELLA",
+                        "CHIN_GNATHION",
+                        "CHIN_LEFT_GONION",
+                        "CHIN_RIGHT_GONION"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown face landmark detected. Should not be filled.",
+                        "Left eye.",
+                        "Right eye.",
+                        "Left of left eyebrow.",
+                        "Right of left eyebrow.",
+                        "Left of right eyebrow.",
+                        "Right of right eyebrow.",
+                        "Midpoint between eyes.",
+                        "Nose tip.",
+                        "Upper lip.",
+                        "Lower lip.",
+                        "Mouth left.",
+                        "Mouth right.",
+                        "Mouth center.",
+                        "Nose, bottom right.",
+                        "Nose, bottom left.",
+                        "Nose, bottom center.",
+                        "Left eye, top boundary.",
+                        "Left eye, right corner.",
+                        "Left eye, bottom boundary.",
+                        "Left eye, left corner.",
+                        "Right eye, top boundary.",
+                        "Right eye, right corner.",
+                        "Right eye, bottom boundary.",
+                        "Right eye, left corner.",
+                        "Left eyebrow, upper midpoint.",
+                        "Right eyebrow, upper midpoint.",
+                        "Left ear tragion.",
+                        "Right ear tragion.",
+                        "Left eye pupil.",
+                        "Right eye pupil.",
+                        "Forehead glabella.",
+                        "Chin gnathion.",
+                        "Chin left gonion.",
+                        "Chin right gonion."
+                    ],
+                    "type": "string"
+                },
+                "position": {
+                    "$ref": "Position",
+                    "description": "Face landmark position."
+                }
+            },
+            "type": "object"
+        },
+        "WebImage": {
+            "description": "Metadata for online images.",
+            "id": "WebImage",
+            "properties": {
+                "url": {
+                    "description": "The result image URL.",
+                    "type": "string"
+                },
+                "score": {
+                    "description": "(Deprecated) Overall relevancy score for the image.",
+                    "format": "float",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "Word": {
+            "description": "A word representation.",
+            "id": "Word",
+            "properties": {
+                "property": {
+                    "$ref": "TextProperty",
+                    "description": "Additional information detected for the word."
+                },
+                "boundingBox": {
+                    "$ref": "BoundingPoly",
+                    "description": "The bounding box for the word.\nThe vertices are in the order of top-left, top-right, bottom-right,\nbottom-left. When a rotation of the bounding box is detected the rotation\nis represented as around the top-left corner as defined when the text is\nread in the 'natural' orientation.\nFor example:\n  * when the text is horizontal it might look like:\n     0----1\n     |    |\n     3----2\n  * when it's rotated 180 degrees around the top-left corner it becomes:\n     2----3\n     |    |\n     1----0\n  and the vertice order will still be (0, 1, 2, 3)."
+                },
+                "symbols": {
+                    "description": "List of symbols in the word.\nThe order of the symbols follows the natural reading order.",
+                    "items": {
+                        "$ref": "Symbol"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Image": {
+            "description": "Client image to perform Google Cloud Vision API tasks over.",
+            "id": "Image",
+            "properties": {
+                "source": {
+                    "$ref": "ImageSource",
+                    "description": "Google Cloud Storage image location. If both `content` and `source`\nare provided for an image, `content` takes precedence and is\nused to perform the image annotation request."
+                },
+                "content": {
+                    "description": "Image content, represented as a stream of bytes.\nNote: as with all `bytes` fields, protobuffers use a pure binary\nrepresentation, whereas JSON representations use base64.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Paragraph": {
+            "description": "Structural unit of text representing a number of words in certain order.",
+            "id": "Paragraph",
+            "properties": {
+                "property": {
+                    "$ref": "TextProperty",
+                    "description": "Additional information detected for the paragraph."
+                },
+                "boundingBox": {
+                    "$ref": "BoundingPoly",
+                    "description": "The bounding box for the paragraph.\nThe vertices are in the order of top-left, top-right, bottom-right,\nbottom-left. When a rotation of the bounding box is detected the rotation\nis represented as around the top-left corner as defined when the text is\nread in the 'natural' orientation.\nFor example:\n  * when the text is horizontal it might look like:\n     0----1\n     |    |\n     3----2\n  * when it's rotated 180 degrees around the top-left corner it becomes:\n     2----3\n     |    |\n     1----0\n  and the vertice order will still be (0, 1, 2, 3)."
+                },
+                "words": {
+                    "description": "List of words in this paragraph.",
+                    "items": {
+                        "$ref": "Word"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/youtubeAnalytics__v1.json b/discovery/googleapis/youtubeAnalytics__v1.json
index 6b8823b..7d94850 100644
--- a/discovery/googleapis/youtubeAnalytics__v1.json
+++ b/discovery/googleapis/youtubeAnalytics__v1.json
@@ -27,7 +27,7 @@
     "description": "Retrieves your YouTube Analytics data.",
     "discoveryVersion": "v1",
     "documentationLink": "http://developers.google.com/youtube/analytics/",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/odQlSBZwvr1oGd-NR5p1NlMc2Os\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/TgTBlKfEt-YuRxUqImxk_SW_j5o\"",
     "icons": {
         "x16": "https://www.google.com/images/icons/product/youtube-16.png",
         "x32": "https://www.google.com/images/icons/product/youtube-32.png"
@@ -381,7 +381,7 @@
             }
         }
     },
-    "revision": "20171003",
+    "revision": "20171018",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Group": {
diff --git a/discovery/googleapis/youtube__v3.json b/discovery/googleapis/youtube__v3.json
index 65e7ddd..ceabcc1 100644
--- a/discovery/googleapis/youtube__v3.json
+++ b/discovery/googleapis/youtube__v3.json
@@ -30,7 +30,7 @@
     "description": "Supports core YouTube features, such as uploading videos, creating and managing playlists, searching for content, and much more.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/youtube/v3",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/AIWw-yWxHTNchYNbx8LfngbqcZ8\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/BJDboFk3u5Gn0XCcgzl-Emxo56M\"",
     "icons": {
         "x16": "https://www.google.com/images/icons/product/youtube-16.png",
         "x32": "https://www.google.com/images/icons/product/youtube-32.png"
@@ -3541,7 +3541,7 @@
             }
         }
     },
-    "revision": "20170918",
+    "revision": "20171003",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "AccessPolicy": {
diff --git a/discovery/googleapis/youtubereporting__v1.json b/discovery/googleapis/youtubereporting__v1.json
index d4a11fa..8267e44 100644
--- a/discovery/googleapis/youtubereporting__v1.json
+++ b/discovery/googleapis/youtubereporting__v1.json
@@ -2,11 +2,11 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/yt-analytics.readonly": {
-                    "description": "View YouTube Analytics reports for your YouTube content"
-                },
                 "https://www.googleapis.com/auth/yt-analytics-monetary.readonly": {
                     "description": "View monetary and non-monetary YouTube Analytics reports for your YouTube content"
+                },
+                "https://www.googleapis.com/auth/yt-analytics.readonly": {
+                    "description": "View YouTube Analytics reports for your YouTube content"
                 }
             }
         }
@@ -83,13 +83,13 @@
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
@@ -117,61 +117,38 @@
     },
     "protocol": "rest",
     "resources": {
-        "jobs": {
+        "media": {
             "methods": {
-                "create": {
-                    "description": "Creates a job and returns it.",
-                    "httpMethod": "POST",
-                    "id": "youtubereporting.jobs.create",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "onBehalfOfContentOwner": {
-                            "description": "The content owner's external ID on which behalf the user is acting on. If\nnot set, the user is acting for himself (his own channel).",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/jobs",
-                    "request": {
-                        "$ref": "Job"
-                    },
-                    "response": {
-                        "$ref": "Job"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/yt-analytics-monetary.readonly",
-                        "https://www.googleapis.com/auth/yt-analytics.readonly"
-                    ]
-                },
-                "delete": {
-                    "description": "Deletes a job.",
-                    "httpMethod": "DELETE",
-                    "id": "youtubereporting.jobs.delete",
+                "download": {
+                    "description": "Method for media download. Download is supported\non the URI `/v1/media/{+name}?alt=media`.",
+                    "httpMethod": "GET",
+                    "id": "youtubereporting.media.download",
                     "parameterOrder": [
-                        "jobId"
+                        "resourceName"
                     ],
                     "parameters": {
-                        "onBehalfOfContentOwner": {
-                            "description": "The content owner's external ID on which behalf the user is acting on. If\nnot set, the user is acting for himself (his own channel).",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "jobId": {
-                            "description": "The ID of the job to delete.",
+                        "resourceName": {
+                            "description": "Name of the media that is being downloaded.  See\nReadRequest.resource_name.",
                             "location": "path",
+                            "pattern": "^.+$",
                             "required": true,
                             "type": "string"
                         }
                     },
-                    "path": "v1/jobs/{jobId}",
+                    "path": "v1/media/{+resourceName}",
                     "response": {
-                        "$ref": "Empty"
+                        "$ref": "Media"
                     },
                     "scopes": [
                         "https://www.googleapis.com/auth/yt-analytics-monetary.readonly",
                         "https://www.googleapis.com/auth/yt-analytics.readonly"
-                    ]
-                },
+                    ],
+                    "supportsMediaDownload": true
+                }
+            }
+        },
+        "jobs": {
+            "methods": {
                 "get": {
                     "description": "Gets a job.",
                     "httpMethod": "GET",
@@ -207,6 +184,11 @@
                     "id": "youtubereporting.jobs.list",
                     "parameterOrder": [],
                     "parameters": {
+                        "onBehalfOfContentOwner": {
+                            "description": "The content owner's external ID on which behalf the user is acting on. If\nnot set, the user is acting for himself (his own channel).",
+                            "location": "query",
+                            "type": "string"
+                        },
                         "includeSystemManaged": {
                             "description": "If set to true, also system-managed jobs will be returned; otherwise only\nuser-created jobs will be returned. System-managed jobs can neither be\nmodified nor deleted.",
                             "location": "query",
@@ -222,7 +204,23 @@
                             "format": "int32",
                             "location": "query",
                             "type": "integer"
-                        },
+                        }
+                    },
+                    "path": "v1/jobs",
+                    "response": {
+                        "$ref": "ListJobsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/yt-analytics-monetary.readonly",
+                        "https://www.googleapis.com/auth/yt-analytics.readonly"
+                    ]
+                },
+                "create": {
+                    "description": "Creates a job and returns it.",
+                    "httpMethod": "POST",
+                    "id": "youtubereporting.jobs.create",
+                    "parameterOrder": [],
+                    "parameters": {
                         "onBehalfOfContentOwner": {
                             "description": "The content owner's external ID on which behalf the user is acting on. If\nnot set, the user is acting for himself (his own channel).",
                             "location": "query",
@@ -230,8 +228,40 @@
                         }
                     },
                     "path": "v1/jobs",
+                    "request": {
+                        "$ref": "Job"
+                    },
                     "response": {
-                        "$ref": "ListJobsResponse"
+                        "$ref": "Job"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/yt-analytics-monetary.readonly",
+                        "https://www.googleapis.com/auth/yt-analytics.readonly"
+                    ]
+                },
+                "delete": {
+                    "description": "Deletes a job.",
+                    "httpMethod": "DELETE",
+                    "id": "youtubereporting.jobs.delete",
+                    "parameterOrder": [
+                        "jobId"
+                    ],
+                    "parameters": {
+                        "jobId": {
+                            "description": "The ID of the job to delete.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "onBehalfOfContentOwner": {
+                            "description": "The content owner's external ID on which behalf the user is acting on. If\nnot set, the user is acting for himself (his own channel).",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/jobs/{jobId}",
+                    "response": {
+                        "$ref": "Empty"
                     },
                     "scopes": [
                         "https://www.googleapis.com/auth/yt-analytics-monetary.readonly",
@@ -380,128 +410,11 @@
                     ]
                 }
             }
-        },
-        "media": {
-            "methods": {
-                "download": {
-                    "description": "Method for media download. Download is supported\non the URI `/v1/media/{+name}?alt=media`.",
-                    "httpMethod": "GET",
-                    "id": "youtubereporting.media.download",
-                    "parameterOrder": [
-                        "resourceName"
-                    ],
-                    "parameters": {
-                        "resourceName": {
-                            "description": "Name of the media that is being downloaded.  See\nReadRequest.resource_name.",
-                            "location": "path",
-                            "pattern": "^.+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/media/{+resourceName}",
-                    "response": {
-                        "$ref": "Media"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/yt-analytics-monetary.readonly",
-                        "https://www.googleapis.com/auth/yt-analytics.readonly"
-                    ],
-                    "supportsMediaDownload": true
-                }
-            }
         }
     },
-    "revision": "20171003",
+    "revision": "20171022",
     "rootUrl": "https://youtubereporting.googleapis.com/",
     "schemas": {
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
-        "ReportType": {
-            "description": "A report type.",
-            "id": "ReportType",
-            "properties": {
-                "name": {
-                    "description": "The name of the report type (max. 100 characters).",
-                    "type": "string"
-                },
-                "systemManaged": {
-                    "description": "True if this a system-managed report type; otherwise false. Reporting jobs\nfor system-managed report types are created automatically and can thus not\nbe used in the `CreateJob` method.",
-                    "type": "boolean"
-                },
-                "id": {
-                    "description": "The ID of the report type (max. 100 characters).",
-                    "type": "string"
-                },
-                "deprecateTime": {
-                    "description": "The date/time when this report type was/will be deprecated.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListReportTypesResponse": {
-            "description": "Response message for ReportingService.ListReportTypes.",
-            "id": "ListReportTypesResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "A token to retrieve next page of results.\nPass this value in the\nListReportTypesRequest.page_token\nfield in the subsequent call to `ListReportTypes` method to retrieve the next\npage of results.",
-                    "type": "string"
-                },
-                "reportTypes": {
-                    "description": "The list of report types.",
-                    "items": {
-                        "$ref": "ReportType"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Report": {
-            "description": "A report's metadata including the URL from which the report itself can be\ndownloaded.",
-            "id": "Report",
-            "properties": {
-                "downloadUrl": {
-                    "description": "The URL from which the report can be downloaded (max. 1000 characters).",
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "The start of the time period that the report instance covers. The value is\ninclusive.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "createTime": {
-                    "description": "The date/time when this report was created.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "jobId": {
-                    "description": "The ID of the job that created this report.",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "The server-generated ID of the report.",
-                    "type": "string"
-                },
-                "jobExpireTime": {
-                    "description": "The date/time when the job this report belongs to will expire/expired.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "endTime": {
-                    "description": "The end of the time period that the report instance covers. The value is\nexclusive.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "ListJobsResponse": {
             "description": "Response message for ReportingService.ListJobs.",
             "id": "ListJobsResponse",
@@ -542,13 +455,13 @@
                     "description": "The name of the job (max. 100 characters).",
                     "type": "string"
                 },
-                "systemManaged": {
-                    "description": "True if this a system-managed job that cannot be modified by the user;\notherwise false.",
-                    "type": "boolean"
-                },
                 "id": {
                     "description": "The server-generated ID of the job (max. 40 characters).",
                     "type": "string"
+                },
+                "systemManaged": {
+                    "description": "True if this a system-managed job that cannot be modified by the user;\notherwise false.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -557,16 +470,16 @@
             "description": "Response message for ReportingService.ListReports.",
             "id": "ListReportsResponse",
             "properties": {
+                "nextPageToken": {
+                    "description": "A token to retrieve next page of results.\nPass this value in the\nListReportsRequest.page_token\nfield in the subsequent call to `ListReports` method to retrieve the next\npage of results.",
+                    "type": "string"
+                },
                 "reports": {
                     "description": "The list of report types.",
                     "items": {
                         "$ref": "Report"
                     },
                     "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "A token to retrieve next page of results.\nPass this value in the\nListReportsRequest.page_token\nfield in the subsequent call to `ListReports` method to retrieve the next\npage of results.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -581,6 +494,93 @@
                 }
             },
             "type": "object"
+        },
+        "Report": {
+            "description": "A report's metadata including the URL from which the report itself can be\ndownloaded.",
+            "id": "Report",
+            "properties": {
+                "jobId": {
+                    "description": "The ID of the job that created this report.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "The server-generated ID of the report.",
+                    "type": "string"
+                },
+                "jobExpireTime": {
+                    "description": "The date/time when the job this report belongs to will expire/expired.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "The end of the time period that the report instance covers. The value is\nexclusive.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "downloadUrl": {
+                    "description": "The URL from which the report can be downloaded (max. 1000 characters).",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "The start of the time period that the report instance covers. The value is\ninclusive.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "createTime": {
+                    "description": "The date/time when this report was created.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "ListReportTypesResponse": {
+            "description": "Response message for ReportingService.ListReportTypes.",
+            "id": "ListReportTypesResponse",
+            "properties": {
+                "reportTypes": {
+                    "description": "The list of report types.",
+                    "items": {
+                        "$ref": "ReportType"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token to retrieve next page of results.\nPass this value in the\nListReportTypesRequest.page_token\nfield in the subsequent call to `ListReportTypes` method to retrieve the next\npage of results.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ReportType": {
+            "description": "A report type.",
+            "id": "ReportType",
+            "properties": {
+                "deprecateTime": {
+                    "description": "The date/time when this report type was/will be deprecated.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The name of the report type (max. 100 characters).",
+                    "type": "string"
+                },
+                "systemManaged": {
+                    "description": "True if this a system-managed report type; otherwise false. Reporting jobs\nfor system-managed report types are created automatically and can thus not\nbe used in the `CreateJob` method.",
+                    "type": "boolean"
+                },
+                "id": {
+                    "description": "The ID of the report type (max. 100 characters).",
+                    "type": "string"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis_beta/adexchangebuyer2__v2beta1.json b/discovery/googleapis_beta/adexchangebuyer2__v2beta1.json
index aa835d5..dcc43d3 100644
--- a/discovery/googleapis_beta/adexchangebuyer2__v2beta1.json
+++ b/discovery/googleapis_beta/adexchangebuyer2__v2beta1.json
@@ -25,76 +25,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "access_token": {
-            "description": "OAuth access token.",
-            "location": "query",
-            "type": "string"
-        },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-            "location": "query",
-            "type": "string"
-        },
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
-            "location": "query",
-            "type": "string"
-        },
-        "$.xgafv": {
-            "description": "V1 error format.",
-            "enum": [
-                "1",
-                "2"
-            ],
-            "enumDescriptions": [
-                "v1 error format",
-                "v2 error format"
-            ],
-            "location": "query",
-            "type": "string"
-        },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -110,10 +40,1592 @@
             ],
             "location": "query",
             "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
+        "$.xgafv": {
+            "description": "V1 error format.",
+            "enum": [
+                "1",
+                "2"
+            ],
+            "enumDescriptions": [
+                "v1 error format",
+                "v2 error format"
+            ],
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
+        "bidders": {
+            "resources": {
+                "filterSets": {
+                    "methods": {
+                        "create": {
+                            "description": "Creates the specified filter set for the account with the given account ID.",
+                            "httpMethod": "POST",
+                            "id": "adexchangebuyer2.bidders.filterSets.create",
+                            "parameterOrder": [
+                                "ownerName"
+                            ],
+                            "parameters": {
+                                "filterSet.relativeDateRange.offsetDays": {
+                                    "description": "The end date of the filter set, specified as the number of days before\ntoday. E.g. for a range where the last date is today, 0.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "isTransient": {
+                                    "description": "Whether the filter set is transient, or should be persisted indefinitely.\nBy default, filter sets are not transient.\nIf transient, it will be available for at least 1 hour after creation.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
+                                "filterSet.buyerAccountId": {
+                                    "description": "The ID of the buyer account on which to filter; optional.",
+                                    "format": "int64",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "filterSet.ownerAccountId": {
+                                    "description": "The account ID of the buyer who owns this filter set.\nThe value of this field is ignored in create operations.",
+                                    "format": "int64",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "filterSet.absoluteDateRange.startDate.day": {
+                                    "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filterSet.realtimeTimeRange.startTimestamp": {
+                                    "description": "The start timestamp of the real-time RTB metrics aggregation.",
+                                    "format": "google-datetime",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "filterSet.absoluteDateRange.startDate.month": {
+                                    "description": "Month of year. Must be from 1 to 12.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filterSet.absoluteDateRange.endDate.day": {
+                                    "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filterSet.absoluteDateRange.startDate.year": {
+                                    "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filterSet.name": {
+                                    "description": "A user-defined name of the filter set. Filter set names must be unique\nglobally and match one of the patterns:\n\n- `bidders/*/filterSets/*` (for accessing bidder-level troubleshooting\ndata)\n- `bidders/*/accounts/*/filterSets/*` (for accessing buyer-level\ntroubleshooting data)",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "filterSet.platforms": {
+                                    "description": "The list of platforms on which to filter; may be empty. The filters\nrepresented by multiple platforms are ORed together (i.e. if non-empty,\nresults must match any one of the platforms).",
+                                    "enum": [
+                                        "PLATFORM_UNSPECIFIED",
+                                        "DESKTOP",
+                                        "TABLET",
+                                        "MOBILE"
+                                    ],
+                                    "location": "query",
+                                    "repeated": true,
+                                    "type": "string"
+                                },
+                                "accountId": {
+                                    "description": "Account ID of the buyer.",
+                                    "format": "int64",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "filterSet.relativeDateRange.durationDays": {
+                                    "description": "The number of days in the requested date range. E.g. for a range spanning\ntoday, 1. For a range spanning the last 7 days, 7.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filterSet.dealId": {
+                                    "description": "The ID of the deal on which to filter; optional.",
+                                    "format": "int64",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "filterSet.absoluteDateRange.endDate.year": {
+                                    "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filterSet.environment": {
+                                    "description": "The environment on which to filter; optional.",
+                                    "enum": [
+                                        "ENVIRONMENT_UNSPECIFIED",
+                                        "WEB",
+                                        "APP"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "filterSet.absoluteDateRange.endDate.month": {
+                                    "description": "Month of year. Must be from 1 to 12.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filterSet.sellerNetworkIds": {
+                                    "description": "The list of IDs of the seller (publisher) networks on which to filter;\nmay be empty. The filters represented by multiple seller network IDs are\nORed together (i.e. if non-empty, results must match any one of the\npublisher networks).\nSee [seller-network-ids](https://developers.google.com/ad-exchange/rtb/downloads/seller-network-ids)\nfile for the set of existing seller network IDs.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "repeated": true,
+                                    "type": "integer"
+                                },
+                                "filterSet.filterSetId": {
+                                    "description": "The ID of the filter set; unique within the account of the filter set\nowner.\nThe value of this field is ignored in create operations.",
+                                    "format": "int64",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "filterSet.format": {
+                                    "description": "The format on which to filter; optional.",
+                                    "enum": [
+                                        "FORMAT_UNSPECIFIED",
+                                        "DISPLAY",
+                                        "VIDEO"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "filterSet.timeSeriesGranularity": {
+                                    "description": "The granularity of time intervals if a time series breakdown is desired;\noptional.",
+                                    "enum": [
+                                        "TIME_SERIES_GRANULARITY_UNSPECIFIED",
+                                        "HOURLY",
+                                        "DAILY"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "ownerName": {
+                                    "description": "Name of the owner (bidder or account) of the filter set to be created.\nFor example:\n- For a bidder-level filter set for bidder 123: \"bidders/123\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456\"",
+                                    "location": "path",
+                                    "pattern": "^bidders/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "filterSet.creativeId": {
+                                    "description": "The ID of the creative on which to filter; optional.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2beta1/{+ownerName}/filterSets",
+                            "response": {
+                                "$ref": "FilterSet"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/adexchange.buyer"
+                            ]
+                        },
+                        "delete": {
+                            "description": "Deletes the requested filter set from the account with the given account\nID.",
+                            "httpMethod": "DELETE",
+                            "id": "adexchangebuyer2.bidders.filterSets.delete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "filterSetId": {
+                                    "description": "The ID of the filter set to delete.",
+                                    "format": "int64",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "Full name of the resource to delete.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                    "location": "path",
+                                    "pattern": "^bidders/[^/]+/filterSets/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "accountId": {
+                                    "description": "Account ID of the buyer.",
+                                    "format": "int64",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2beta1/{+name}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/adexchange.buyer"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists all filter sets for the account with the given account ID.",
+                            "httpMethod": "GET",
+                            "id": "adexchangebuyer2.bidders.filterSets.list",
+                            "parameterOrder": [
+                                "ownerName"
+                            ],
+                            "parameters": {
+                                "pageToken": {
+                                    "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListFilterSetsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.list\nmethod.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "accountId": {
+                                    "description": "Account ID of the buyer.",
+                                    "format": "int64",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "ownerName": {
+                                    "description": "Name of the owner (bidder or account) of the filter sets to be listed.\nFor example:\n- For a bidder-level filter set for bidder 123: \"bidders/123\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456\"",
+                                    "location": "path",
+                                    "pattern": "^bidders/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2beta1/{+ownerName}/filterSets",
+                            "response": {
+                                "$ref": "ListFilterSetsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/adexchange.buyer"
+                            ]
+                        },
+                        "get": {
+                            "description": "Retrieves the requested filter set for the account with the given account\nID.",
+                            "httpMethod": "GET",
+                            "id": "adexchangebuyer2.bidders.filterSets.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "filterSetId": {
+                                    "description": "The ID of the filter set to get.",
+                                    "format": "int64",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "Full name of the resource being requested.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                    "location": "path",
+                                    "pattern": "^bidders/[^/]+/filterSets/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "accountId": {
+                                    "description": "Account ID of the buyer.",
+                                    "format": "int64",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2beta1/{+name}",
+                            "response": {
+                                "$ref": "FilterSet"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/adexchange.buyer"
+                            ]
+                        }
+                    },
+                    "resources": {
+                        "bidResponseErrors": {
+                            "methods": {
+                                "list": {
+                                    "description": "List all errors that occurred in bid responses, with the number of bid\nresponses affected for each reason.",
+                                    "httpMethod": "GET",
+                                    "id": "adexchangebuyer2.bidders.filterSets.bidResponseErrors.list",
+                                    "parameterOrder": [
+                                        "filterSetName"
+                                    ],
+                                    "parameters": {
+                                        "pageToken": {
+                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBidResponseErrorsResponse.nextPageToken\nreturned from the previous call to the bidResponseErrors.list\nmethod.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "filterSetName": {
+                                            "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                            "location": "path",
+                                            "pattern": "^bidders/[^/]+/filterSets/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "accountId": {
+                                            "description": "Account ID of the buyer.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "filterSetId": {
+                                            "description": "The ID of the filter set to apply.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta1/{+filterSetName}/bidResponseErrors",
+                                    "response": {
+                                        "$ref": "ListBidResponseErrorsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/adexchange.buyer"
+                                    ]
+                                }
+                            }
+                        },
+                        "bidResponsesWithoutBids": {
+                            "methods": {
+                                "list": {
+                                    "description": "List all reasons for which bid responses were considered to have no\napplicable bids, with the number of bid responses affected for each reason.",
+                                    "httpMethod": "GET",
+                                    "id": "adexchangebuyer2.bidders.filterSets.bidResponsesWithoutBids.list",
+                                    "parameterOrder": [
+                                        "filterSetName"
+                                    ],
+                                    "parameters": {
+                                        "filterSetId": {
+                                            "description": "The ID of the filter set to apply.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBidResponsesWithoutBidsResponse.nextPageToken\nreturned from the previous call to the bidResponsesWithoutBids.list\nmethod.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "filterSetName": {
+                                            "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                            "location": "path",
+                                            "pattern": "^bidders/[^/]+/filterSets/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "accountId": {
+                                            "description": "Account ID of the buyer.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta1/{+filterSetName}/bidResponsesWithoutBids",
+                                    "response": {
+                                        "$ref": "ListBidResponsesWithoutBidsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/adexchange.buyer"
+                                    ]
+                                }
+                            }
+                        },
+                        "filteredBidRequests": {
+                            "methods": {
+                                "list": {
+                                    "description": "List all reasons that caused a bid request not to be sent for an\nimpression, with the number of bid requests not sent for each reason.",
+                                    "httpMethod": "GET",
+                                    "id": "adexchangebuyer2.bidders.filterSets.filteredBidRequests.list",
+                                    "parameterOrder": [
+                                        "filterSetName"
+                                    ],
+                                    "parameters": {
+                                        "filterSetId": {
+                                            "description": "The ID of the filter set to apply.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListFilteredBidRequestsResponse.nextPageToken\nreturned from the previous call to the filteredBidRequests.list\nmethod.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "filterSetName": {
+                                            "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                            "location": "path",
+                                            "pattern": "^bidders/[^/]+/filterSets/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "accountId": {
+                                            "description": "Account ID of the buyer.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta1/{+filterSetName}/filteredBidRequests",
+                                    "response": {
+                                        "$ref": "ListFilteredBidRequestsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/adexchange.buyer"
+                                    ]
+                                }
+                            }
+                        },
+                        "filteredBids": {
+                            "methods": {
+                                "list": {
+                                    "description": "List all reasons for which bids were filtered, with the number of bids\nfiltered for each reason.",
+                                    "httpMethod": "GET",
+                                    "id": "adexchangebuyer2.bidders.filterSets.filteredBids.list",
+                                    "parameterOrder": [
+                                        "filterSetName"
+                                    ],
+                                    "parameters": {
+                                        "filterSetId": {
+                                            "description": "The ID of the filter set to apply.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListFilteredBidsResponse.nextPageToken\nreturned from the previous call to the filteredBids.list\nmethod.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "filterSetName": {
+                                            "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                            "location": "path",
+                                            "pattern": "^bidders/[^/]+/filterSets/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "accountId": {
+                                            "description": "Account ID of the buyer.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta1/{+filterSetName}/filteredBids",
+                                    "response": {
+                                        "$ref": "ListFilteredBidsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/adexchange.buyer"
+                                    ]
+                                }
+                            },
+                            "resources": {
+                                "details": {
+                                    "methods": {
+                                        "list": {
+                                            "description": "List all details associated with a specific reason for which bids were\nfiltered, with the number of bids filtered for each detail.",
+                                            "httpMethod": "GET",
+                                            "id": "adexchangebuyer2.bidders.filterSets.filteredBids.details.list",
+                                            "parameterOrder": [
+                                                "filterSetName",
+                                                "creativeStatusId"
+                                            ],
+                                            "parameters": {
+                                                "creativeStatusId": {
+                                                    "description": "The ID of the creative status for which to retrieve a breakdown by detail.\nSee\n[creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).\nDetails are only available for statuses 10, 14, 15, 17, 18, 19, 86, and 87.",
+                                                    "format": "int32",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "integer"
+                                                },
+                                                "accountId": {
+                                                    "description": "Account ID of the buyer.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetId": {
+                                                    "description": "The ID of the filter set to apply.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageToken": {
+                                                    "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListCreativeStatusBreakdownByDetailResponse.nextPageToken\nreturned from the previous call to the filteredBids.details.list\nmethod.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetName": {
+                                                    "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                                    "location": "path",
+                                                    "pattern": "^bidders/[^/]+/filterSets/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                }
+                                            },
+                                            "path": "v2beta1/{+filterSetName}/filteredBids/{creativeStatusId}/details",
+                                            "response": {
+                                                "$ref": "ListCreativeStatusBreakdownByDetailResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/adexchange.buyer"
+                                            ]
+                                        }
+                                    }
+                                },
+                                "creatives": {
+                                    "methods": {
+                                        "list": {
+                                            "description": "List all creatives associated with a specific reason for which bids were\nfiltered, with the number of bids filtered for each creative.",
+                                            "httpMethod": "GET",
+                                            "id": "adexchangebuyer2.bidders.filterSets.filteredBids.creatives.list",
+                                            "parameterOrder": [
+                                                "filterSetName",
+                                                "creativeStatusId"
+                                            ],
+                                            "parameters": {
+                                                "filterSetId": {
+                                                    "description": "The ID of the filter set to apply.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageToken": {
+                                                    "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListCreativeStatusBreakdownByCreativeResponse.nextPageToken\nreturned from the previous call to the filteredBids.creatives.list\nmethod.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetName": {
+                                                    "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                                    "location": "path",
+                                                    "pattern": "^bidders/[^/]+/filterSets/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "creativeStatusId": {
+                                                    "description": "The ID of the creative status for which to retrieve a breakdown by\ncreative.\nSee\n[creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).",
+                                                    "format": "int32",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "integer"
+                                                },
+                                                "accountId": {
+                                                    "description": "Account ID of the buyer.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta1/{+filterSetName}/filteredBids/{creativeStatusId}/creatives",
+                                            "response": {
+                                                "$ref": "ListCreativeStatusBreakdownByCreativeResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/adexchange.buyer"
+                                            ]
+                                        }
+                                    }
+                                }
+                            }
+                        },
+                        "nonBillableWinningBids": {
+                            "methods": {
+                                "list": {
+                                    "description": "List all reasons for which winning bids were not billable, with the number\nof bids not billed for each reason.",
+                                    "httpMethod": "GET",
+                                    "id": "adexchangebuyer2.bidders.filterSets.nonBillableWinningBids.list",
+                                    "parameterOrder": [
+                                        "filterSetName"
+                                    ],
+                                    "parameters": {
+                                        "filterSetId": {
+                                            "description": "The ID of the filter set to apply.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListNonBillableWinningBidsResponse.nextPageToken\nreturned from the previous call to the nonBillableWinningBids.list\nmethod.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "filterSetName": {
+                                            "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                            "location": "path",
+                                            "pattern": "^bidders/[^/]+/filterSets/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "accountId": {
+                                            "description": "Account ID of the buyer.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta1/{+filterSetName}/nonBillableWinningBids",
+                                    "response": {
+                                        "$ref": "ListNonBillableWinningBidsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/adexchange.buyer"
+                                    ]
+                                }
+                            }
+                        },
+                        "losingBids": {
+                            "methods": {
+                                "list": {
+                                    "description": "List all reasons for which bids lost in the auction, with the number of\nbids that lost for each reason.",
+                                    "httpMethod": "GET",
+                                    "id": "adexchangebuyer2.bidders.filterSets.losingBids.list",
+                                    "parameterOrder": [
+                                        "filterSetName"
+                                    ],
+                                    "parameters": {
+                                        "filterSetId": {
+                                            "description": "The ID of the filter set to apply.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListLosingBidsResponse.nextPageToken\nreturned from the previous call to the losingBids.list\nmethod.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "filterSetName": {
+                                            "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                            "location": "path",
+                                            "pattern": "^bidders/[^/]+/filterSets/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "accountId": {
+                                            "description": "Account ID of the buyer.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta1/{+filterSetName}/losingBids",
+                                    "response": {
+                                        "$ref": "ListLosingBidsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/adexchange.buyer"
+                                    ]
+                                }
+                            }
+                        },
+                        "impressionMetrics": {
+                            "methods": {
+                                "list": {
+                                    "description": "Lists all metrics that are measured in terms of number of impressions.",
+                                    "httpMethod": "GET",
+                                    "id": "adexchangebuyer2.bidders.filterSets.impressionMetrics.list",
+                                    "parameterOrder": [
+                                        "filterSetName"
+                                    ],
+                                    "parameters": {
+                                        "pageToken": {
+                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListImpressionMetricsResponse.nextPageToken\nreturned from the previous call to the impressionMetrics.list\nmethod.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "filterSetName": {
+                                            "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                            "location": "path",
+                                            "pattern": "^bidders/[^/]+/filterSets/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "accountId": {
+                                            "description": "Account ID of the buyer.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "filterSetId": {
+                                            "description": "The ID of the filter set to apply.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta1/{+filterSetName}/impressionMetrics",
+                                    "response": {
+                                        "$ref": "ListImpressionMetricsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/adexchange.buyer"
+                                    ]
+                                }
+                            }
+                        },
+                        "bidMetrics": {
+                            "methods": {
+                                "list": {
+                                    "description": "Lists all metrics that are measured in terms of number of bids.",
+                                    "httpMethod": "GET",
+                                    "id": "adexchangebuyer2.bidders.filterSets.bidMetrics.list",
+                                    "parameterOrder": [
+                                        "filterSetName"
+                                    ],
+                                    "parameters": {
+                                        "pageToken": {
+                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBidMetricsResponse.nextPageToken\nreturned from the previous call to the bidMetrics.list\nmethod.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "filterSetName": {
+                                            "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                            "location": "path",
+                                            "pattern": "^bidders/[^/]+/filterSets/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "accountId": {
+                                            "description": "Account ID of the buyer.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "filterSetId": {
+                                            "description": "The ID of the filter set to apply.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta1/{+filterSetName}/bidMetrics",
+                                    "response": {
+                                        "$ref": "ListBidMetricsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/adexchange.buyer"
+                                    ]
+                                }
+                            }
+                        }
+                    }
+                },
+                "accounts": {
+                    "resources": {
+                        "filterSets": {
+                            "methods": {
+                                "delete": {
+                                    "description": "Deletes the requested filter set from the account with the given account\nID.",
+                                    "httpMethod": "DELETE",
+                                    "id": "adexchangebuyer2.bidders.accounts.filterSets.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Full name of the resource to delete.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                            "location": "path",
+                                            "pattern": "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "accountId": {
+                                            "description": "Account ID of the buyer.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "filterSetId": {
+                                            "description": "The ID of the filter set to delete.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta1/{+name}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/adexchange.buyer"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists all filter sets for the account with the given account ID.",
+                                    "httpMethod": "GET",
+                                    "id": "adexchangebuyer2.bidders.accounts.filterSets.list",
+                                    "parameterOrder": [
+                                        "ownerName"
+                                    ],
+                                    "parameters": {
+                                        "ownerName": {
+                                            "description": "Name of the owner (bidder or account) of the filter sets to be listed.\nFor example:\n- For a bidder-level filter set for bidder 123: \"bidders/123\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456\"",
+                                            "location": "path",
+                                            "pattern": "^bidders/[^/]+/accounts/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListFilterSetsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.list\nmethod.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "accountId": {
+                                            "description": "Account ID of the buyer.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta1/{+ownerName}/filterSets",
+                                    "response": {
+                                        "$ref": "ListFilterSetsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/adexchange.buyer"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Retrieves the requested filter set for the account with the given account\nID.",
+                                    "httpMethod": "GET",
+                                    "id": "adexchangebuyer2.bidders.accounts.filterSets.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Full name of the resource being requested.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                            "location": "path",
+                                            "pattern": "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "accountId": {
+                                            "description": "Account ID of the buyer.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "filterSetId": {
+                                            "description": "The ID of the filter set to get.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta1/{+name}",
+                                    "response": {
+                                        "$ref": "FilterSet"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/adexchange.buyer"
+                                    ]
+                                },
+                                "create": {
+                                    "description": "Creates the specified filter set for the account with the given account ID.",
+                                    "httpMethod": "POST",
+                                    "id": "adexchangebuyer2.bidders.accounts.filterSets.create",
+                                    "parameterOrder": [
+                                        "ownerName"
+                                    ],
+                                    "parameters": {
+                                        "isTransient": {
+                                            "description": "Whether the filter set is transient, or should be persisted indefinitely.\nBy default, filter sets are not transient.\nIf transient, it will be available for at least 1 hour after creation.",
+                                            "location": "query",
+                                            "type": "boolean"
+                                        },
+                                        "accountId": {
+                                            "description": "Account ID of the buyer.",
+                                            "format": "int64",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "ownerName": {
+                                            "description": "Name of the owner (bidder or account) of the filter set to be created.\nFor example:\n- For a bidder-level filter set for bidder 123: \"bidders/123\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456\"",
+                                            "location": "path",
+                                            "pattern": "^bidders/[^/]+/accounts/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta1/{+ownerName}/filterSets",
+                                    "request": {
+                                        "$ref": "FilterSet"
+                                    },
+                                    "response": {
+                                        "$ref": "FilterSet"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/adexchange.buyer"
+                                    ]
+                                }
+                            },
+                            "resources": {
+                                "losingBids": {
+                                    "methods": {
+                                        "list": {
+                                            "description": "List all reasons for which bids lost in the auction, with the number of\nbids that lost for each reason.",
+                                            "httpMethod": "GET",
+                                            "id": "adexchangebuyer2.bidders.accounts.filterSets.losingBids.list",
+                                            "parameterOrder": [
+                                                "filterSetName"
+                                            ],
+                                            "parameters": {
+                                                "pageToken": {
+                                                    "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListLosingBidsResponse.nextPageToken\nreturned from the previous call to the losingBids.list\nmethod.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetName": {
+                                                    "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                                    "location": "path",
+                                                    "pattern": "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "accountId": {
+                                                    "description": "Account ID of the buyer.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetId": {
+                                                    "description": "The ID of the filter set to apply.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta1/{+filterSetName}/losingBids",
+                                            "response": {
+                                                "$ref": "ListLosingBidsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/adexchange.buyer"
+                                            ]
+                                        }
+                                    }
+                                },
+                                "impressionMetrics": {
+                                    "methods": {
+                                        "list": {
+                                            "description": "Lists all metrics that are measured in terms of number of impressions.",
+                                            "httpMethod": "GET",
+                                            "id": "adexchangebuyer2.bidders.accounts.filterSets.impressionMetrics.list",
+                                            "parameterOrder": [
+                                                "filterSetName"
+                                            ],
+                                            "parameters": {
+                                                "pageToken": {
+                                                    "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListImpressionMetricsResponse.nextPageToken\nreturned from the previous call to the impressionMetrics.list\nmethod.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetName": {
+                                                    "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                                    "location": "path",
+                                                    "pattern": "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "accountId": {
+                                                    "description": "Account ID of the buyer.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetId": {
+                                                    "description": "The ID of the filter set to apply.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta1/{+filterSetName}/impressionMetrics",
+                                            "response": {
+                                                "$ref": "ListImpressionMetricsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/adexchange.buyer"
+                                            ]
+                                        }
+                                    }
+                                },
+                                "bidMetrics": {
+                                    "methods": {
+                                        "list": {
+                                            "description": "Lists all metrics that are measured in terms of number of bids.",
+                                            "httpMethod": "GET",
+                                            "id": "adexchangebuyer2.bidders.accounts.filterSets.bidMetrics.list",
+                                            "parameterOrder": [
+                                                "filterSetName"
+                                            ],
+                                            "parameters": {
+                                                "filterSetId": {
+                                                    "description": "The ID of the filter set to apply.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageToken": {
+                                                    "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBidMetricsResponse.nextPageToken\nreturned from the previous call to the bidMetrics.list\nmethod.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetName": {
+                                                    "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                                    "location": "path",
+                                                    "pattern": "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "accountId": {
+                                                    "description": "Account ID of the buyer.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta1/{+filterSetName}/bidMetrics",
+                                            "response": {
+                                                "$ref": "ListBidMetricsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/adexchange.buyer"
+                                            ]
+                                        }
+                                    }
+                                },
+                                "bidResponseErrors": {
+                                    "methods": {
+                                        "list": {
+                                            "description": "List all errors that occurred in bid responses, with the number of bid\nresponses affected for each reason.",
+                                            "httpMethod": "GET",
+                                            "id": "adexchangebuyer2.bidders.accounts.filterSets.bidResponseErrors.list",
+                                            "parameterOrder": [
+                                                "filterSetName"
+                                            ],
+                                            "parameters": {
+                                                "pageToken": {
+                                                    "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBidResponseErrorsResponse.nextPageToken\nreturned from the previous call to the bidResponseErrors.list\nmethod.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetName": {
+                                                    "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                                    "location": "path",
+                                                    "pattern": "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "accountId": {
+                                                    "description": "Account ID of the buyer.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetId": {
+                                                    "description": "The ID of the filter set to apply.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta1/{+filterSetName}/bidResponseErrors",
+                                            "response": {
+                                                "$ref": "ListBidResponseErrorsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/adexchange.buyer"
+                                            ]
+                                        }
+                                    }
+                                },
+                                "bidResponsesWithoutBids": {
+                                    "methods": {
+                                        "list": {
+                                            "description": "List all reasons for which bid responses were considered to have no\napplicable bids, with the number of bid responses affected for each reason.",
+                                            "httpMethod": "GET",
+                                            "id": "adexchangebuyer2.bidders.accounts.filterSets.bidResponsesWithoutBids.list",
+                                            "parameterOrder": [
+                                                "filterSetName"
+                                            ],
+                                            "parameters": {
+                                                "filterSetId": {
+                                                    "description": "The ID of the filter set to apply.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageToken": {
+                                                    "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBidResponsesWithoutBidsResponse.nextPageToken\nreturned from the previous call to the bidResponsesWithoutBids.list\nmethod.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetName": {
+                                                    "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                                    "location": "path",
+                                                    "pattern": "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "accountId": {
+                                                    "description": "Account ID of the buyer.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta1/{+filterSetName}/bidResponsesWithoutBids",
+                                            "response": {
+                                                "$ref": "ListBidResponsesWithoutBidsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/adexchange.buyer"
+                                            ]
+                                        }
+                                    }
+                                },
+                                "filteredBidRequests": {
+                                    "methods": {
+                                        "list": {
+                                            "description": "List all reasons that caused a bid request not to be sent for an\nimpression, with the number of bid requests not sent for each reason.",
+                                            "httpMethod": "GET",
+                                            "id": "adexchangebuyer2.bidders.accounts.filterSets.filteredBidRequests.list",
+                                            "parameterOrder": [
+                                                "filterSetName"
+                                            ],
+                                            "parameters": {
+                                                "pageToken": {
+                                                    "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListFilteredBidRequestsResponse.nextPageToken\nreturned from the previous call to the filteredBidRequests.list\nmethod.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetName": {
+                                                    "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                                    "location": "path",
+                                                    "pattern": "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "accountId": {
+                                                    "description": "Account ID of the buyer.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetId": {
+                                                    "description": "The ID of the filter set to apply.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta1/{+filterSetName}/filteredBidRequests",
+                                            "response": {
+                                                "$ref": "ListFilteredBidRequestsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/adexchange.buyer"
+                                            ]
+                                        }
+                                    }
+                                },
+                                "nonBillableWinningBids": {
+                                    "methods": {
+                                        "list": {
+                                            "description": "List all reasons for which winning bids were not billable, with the number\nof bids not billed for each reason.",
+                                            "httpMethod": "GET",
+                                            "id": "adexchangebuyer2.bidders.accounts.filterSets.nonBillableWinningBids.list",
+                                            "parameterOrder": [
+                                                "filterSetName"
+                                            ],
+                                            "parameters": {
+                                                "pageToken": {
+                                                    "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListNonBillableWinningBidsResponse.nextPageToken\nreturned from the previous call to the nonBillableWinningBids.list\nmethod.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetName": {
+                                                    "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                                    "location": "path",
+                                                    "pattern": "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "accountId": {
+                                                    "description": "Account ID of the buyer.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetId": {
+                                                    "description": "The ID of the filter set to apply.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta1/{+filterSetName}/nonBillableWinningBids",
+                                            "response": {
+                                                "$ref": "ListNonBillableWinningBidsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/adexchange.buyer"
+                                            ]
+                                        }
+                                    }
+                                },
+                                "filteredBids": {
+                                    "methods": {
+                                        "list": {
+                                            "description": "List all reasons for which bids were filtered, with the number of bids\nfiltered for each reason.",
+                                            "httpMethod": "GET",
+                                            "id": "adexchangebuyer2.bidders.accounts.filterSets.filteredBids.list",
+                                            "parameterOrder": [
+                                                "filterSetName"
+                                            ],
+                                            "parameters": {
+                                                "filterSetId": {
+                                                    "description": "The ID of the filter set to apply.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageToken": {
+                                                    "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListFilteredBidsResponse.nextPageToken\nreturned from the previous call to the filteredBids.list\nmethod.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "filterSetName": {
+                                                    "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                                    "location": "path",
+                                                    "pattern": "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "accountId": {
+                                                    "description": "Account ID of the buyer.",
+                                                    "format": "int64",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta1/{+filterSetName}/filteredBids",
+                                            "response": {
+                                                "$ref": "ListFilteredBidsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/adexchange.buyer"
+                                            ]
+                                        }
+                                    },
+                                    "resources": {
+                                        "creatives": {
+                                            "methods": {
+                                                "list": {
+                                                    "description": "List all creatives associated with a specific reason for which bids were\nfiltered, with the number of bids filtered for each creative.",
+                                                    "httpMethod": "GET",
+                                                    "id": "adexchangebuyer2.bidders.accounts.filterSets.filteredBids.creatives.list",
+                                                    "parameterOrder": [
+                                                        "filterSetName",
+                                                        "creativeStatusId"
+                                                    ],
+                                                    "parameters": {
+                                                        "creativeStatusId": {
+                                                            "description": "The ID of the creative status for which to retrieve a breakdown by\ncreative.\nSee\n[creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).",
+                                                            "format": "int32",
+                                                            "location": "path",
+                                                            "required": true,
+                                                            "type": "integer"
+                                                        },
+                                                        "accountId": {
+                                                            "description": "Account ID of the buyer.",
+                                                            "format": "int64",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "filterSetId": {
+                                                            "description": "The ID of the filter set to apply.",
+                                                            "format": "int64",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "pageToken": {
+                                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListCreativeStatusBreakdownByCreativeResponse.nextPageToken\nreturned from the previous call to the filteredBids.creatives.list\nmethod.",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "filterSetName": {
+                                                            "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                                            "location": "path",
+                                                            "pattern": "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        },
+                                                        "pageSize": {
+                                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                                            "format": "int32",
+                                                            "location": "query",
+                                                            "type": "integer"
+                                                        }
+                                                    },
+                                                    "path": "v2beta1/{+filterSetName}/filteredBids/{creativeStatusId}/creatives",
+                                                    "response": {
+                                                        "$ref": "ListCreativeStatusBreakdownByCreativeResponse"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/adexchange.buyer"
+                                                    ]
+                                                }
+                                            }
+                                        },
+                                        "details": {
+                                            "methods": {
+                                                "list": {
+                                                    "description": "List all details associated with a specific reason for which bids were\nfiltered, with the number of bids filtered for each detail.",
+                                                    "httpMethod": "GET",
+                                                    "id": "adexchangebuyer2.bidders.accounts.filterSets.filteredBids.details.list",
+                                                    "parameterOrder": [
+                                                        "filterSetName",
+                                                        "creativeStatusId"
+                                                    ],
+                                                    "parameters": {
+                                                        "creativeStatusId": {
+                                                            "description": "The ID of the creative status for which to retrieve a breakdown by detail.\nSee\n[creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).\nDetails are only available for statuses 10, 14, 15, 17, 18, 19, 86, and 87.",
+                                                            "format": "int32",
+                                                            "location": "path",
+                                                            "required": true,
+                                                            "type": "integer"
+                                                        },
+                                                        "accountId": {
+                                                            "description": "Account ID of the buyer.",
+                                                            "format": "int64",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "filterSetId": {
+                                                            "description": "The ID of the filter set to apply.",
+                                                            "format": "int64",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "pageToken": {
+                                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListCreativeStatusBreakdownByDetailResponse.nextPageToken\nreturned from the previous call to the filteredBids.details.list\nmethod.",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "filterSetName": {
+                                                            "description": "Name of the filter set that should be applied to the requested metrics.\nFor example:\n- For a bidder-level filter set for bidder 123:\n  \"bidders/123/filterSets/abc\"\n- For an account-level filter set for the buyer account representing bidder\n  123: \"bidders/123/accounts/123/filterSets/abc\"\n- For an account-level filter set for the child seat buyer account 456\n  whose bidder is 123: \"bidders/123/accounts/456/filterSets/abc\"",
+                                                            "location": "path",
+                                                            "pattern": "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        },
+                                                        "pageSize": {
+                                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
+                                                            "format": "int32",
+                                                            "location": "query",
+                                                            "type": "integer"
+                                                        }
+                                                    },
+                                                    "path": "v2beta1/{+filterSetName}/filteredBids/{creativeStatusId}/details",
+                                                    "response": {
+                                                        "$ref": "ListCreativeStatusBreakdownByDetailResponse"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/adexchange.buyer"
+                                                    ]
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        },
         "accounts": {
             "resources": {
                 "clients": {
@@ -194,15 +1706,15 @@
                                 "clientAccountId"
                             ],
                             "parameters": {
-                                "clientAccountId": {
-                                    "description": "Unique numerical account ID of the client to update. (required)",
+                                "accountId": {
+                                    "description": "Unique numerical account ID for the buyer of which the client buyer\nis a customer; the sponsor buyer to update a client for. (required)",
                                     "format": "int64",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
                                 },
-                                "accountId": {
-                                    "description": "Unique numerical account ID for the buyer of which the client buyer\nis a customer; the sponsor buyer to update a client for. (required)",
+                                "clientAccountId": {
+                                    "description": "Unique numerical account ID of the client to update. (required)",
                                     "format": "int64",
                                     "location": "path",
                                     "required": true,
@@ -303,13 +1815,6 @@
                                         "invitationId"
                                     ],
                                     "parameters": {
-                                        "clientAccountId": {
-                                            "description": "Numerical account ID of the client buyer that the user invitation\nto be retrieved is associated with. (required)",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
                                         "invitationId": {
                                             "description": "Numerical identifier of the user invitation to retrieve. (required)",
                                             "format": "int64",
@@ -323,6 +1828,13 @@
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
+                                        },
+                                        "clientAccountId": {
+                                            "description": "Numerical account ID of the client buyer that the user invitation\nto be retrieved is associated with. (required)",
+                                            "format": "int64",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
                                         }
                                     },
                                     "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations/{invitationId}",
@@ -372,49 +1884,6 @@
                         },
                         "users": {
                             "methods": {
-                                "update": {
-                                    "description": "Updates an existing client user.\nOnly the user status can be changed on update.",
-                                    "httpMethod": "PUT",
-                                    "id": "adexchangebuyer2.accounts.clients.users.update",
-                                    "parameterOrder": [
-                                        "accountId",
-                                        "clientAccountId",
-                                        "userId"
-                                    ],
-                                    "parameters": {
-                                        "userId": {
-                                            "description": "Numerical identifier of the user to retrieve. (required)",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "accountId": {
-                                            "description": "Numerical account ID of the client's sponsor buyer. (required)",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "clientAccountId": {
-                                            "description": "Numerical account ID of the client buyer that the user to be retrieved\nis associated with. (required)",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/users/{userId}",
-                                    "request": {
-                                        "$ref": "ClientUser"
-                                    },
-                                    "response": {
-                                        "$ref": "ClientUser"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/adexchange.buyer"
-                                    ]
-                                },
                                 "get": {
                                     "description": "Retrieves an existing client user.",
                                     "httpMethod": "GET",
@@ -496,6 +1965,49 @@
                                     "scopes": [
                                         "https://www.googleapis.com/auth/adexchange.buyer"
                                     ]
+                                },
+                                "update": {
+                                    "description": "Updates an existing client user.\nOnly the user status can be changed on update.",
+                                    "httpMethod": "PUT",
+                                    "id": "adexchangebuyer2.accounts.clients.users.update",
+                                    "parameterOrder": [
+                                        "accountId",
+                                        "clientAccountId",
+                                        "userId"
+                                    ],
+                                    "parameters": {
+                                        "userId": {
+                                            "description": "Numerical identifier of the user to retrieve. (required)",
+                                            "format": "int64",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "accountId": {
+                                            "description": "Numerical account ID of the client's sponsor buyer. (required)",
+                                            "format": "int64",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "clientAccountId": {
+                                            "description": "Numerical account ID of the client buyer that the user to be retrieved\nis associated with. (required)",
+                                            "format": "int64",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/users/{userId}",
+                                    "request": {
+                                        "$ref": "ClientUser"
+                                    },
+                                    "response": {
+                                        "$ref": "ClientUser"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/adexchange.buyer"
+                                    ]
                                 }
                             }
                         }
@@ -503,39 +2015,6 @@
                 },
                 "creatives": {
                     "methods": {
-                        "update": {
-                            "description": "Updates a creative.",
-                            "httpMethod": "PUT",
-                            "id": "adexchangebuyer2.accounts.creatives.update",
-                            "parameterOrder": [
-                                "accountId",
-                                "creativeId"
-                            ],
-                            "parameters": {
-                                "accountId": {
-                                    "description": "The account that this creative belongs to.\nCan be used to filter the response of the\ncreatives.list\nmethod.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "creativeId": {
-                                    "description": "The buyer-defined creative ID of this creative.\nCan be used to filter the response of the\ncreatives.list\nmethod.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}",
-                            "request": {
-                                "$ref": "Creative"
-                            },
-                            "response": {
-                                "$ref": "Creative"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/adexchange.buyer"
-                            ]
-                        },
                         "list": {
                             "description": "Lists creatives.",
                             "httpMethod": "GET",
@@ -583,12 +2062,6 @@
                                 "accountId"
                             ],
                             "parameters": {
-                                "accountId": {
-                                    "description": "The account that this creative belongs to.\nCan be used to filter the response of the\ncreatives.list\nmethod.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
                                 "duplicateIdMode": {
                                     "description": "Indicates if multiple creatives can share an ID or not. Default is\nNO_DUPLICATES (one ID per creative).",
                                     "enum": [
@@ -597,6 +2070,12 @@
                                     ],
                                     "location": "query",
                                     "type": "string"
+                                },
+                                "accountId": {
+                                    "description": "The account that this creative belongs to.\nCan be used to filter the response of the\ncreatives.list\nmethod.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
                                 }
                             },
                             "path": "v2beta1/accounts/{accountId}/creatives",
@@ -619,14 +2098,14 @@
                                 "creativeId"
                             ],
                             "parameters": {
-                                "creativeId": {
-                                    "description": "The creative ID of the creative to stop notifications for.\nSpecify \"-\" to specify stopping account level notifications.",
+                                "accountId": {
+                                    "description": "The account of the creative to stop notifications for.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
                                 },
-                                "accountId": {
-                                    "description": "The account of the creative to stop notifications for.",
+                                "creativeId": {
+                                    "description": "The creative ID of the creative to stop notifications for.\nSpecify \"-\" to specify stopping account level notifications.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
@@ -643,36 +2122,6 @@
                                 "https://www.googleapis.com/auth/adexchange.buyer"
                             ]
                         },
-                        "get": {
-                            "description": "Gets a creative.",
-                            "httpMethod": "GET",
-                            "id": "adexchangebuyer2.accounts.creatives.get",
-                            "parameterOrder": [
-                                "accountId",
-                                "creativeId"
-                            ],
-                            "parameters": {
-                                "creativeId": {
-                                    "description": "The ID of the creative to retrieve.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "accountId": {
-                                    "description": "The account the creative belongs to.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}",
-                            "response": {
-                                "$ref": "Creative"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/adexchange.buyer"
-                            ]
-                        },
                         "watch": {
                             "description": "Watches a creative. Will result in push notifications being sent to the\ntopic when the creative changes status.",
                             "httpMethod": "POST",
@@ -705,6 +2154,69 @@
                             "scopes": [
                                 "https://www.googleapis.com/auth/adexchange.buyer"
                             ]
+                        },
+                        "get": {
+                            "description": "Gets a creative.",
+                            "httpMethod": "GET",
+                            "id": "adexchangebuyer2.accounts.creatives.get",
+                            "parameterOrder": [
+                                "accountId",
+                                "creativeId"
+                            ],
+                            "parameters": {
+                                "accountId": {
+                                    "description": "The account the creative belongs to.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "creativeId": {
+                                    "description": "The ID of the creative to retrieve.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}",
+                            "response": {
+                                "$ref": "Creative"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/adexchange.buyer"
+                            ]
+                        },
+                        "update": {
+                            "description": "Updates a creative.",
+                            "httpMethod": "PUT",
+                            "id": "adexchangebuyer2.accounts.creatives.update",
+                            "parameterOrder": [
+                                "accountId",
+                                "creativeId"
+                            ],
+                            "parameters": {
+                                "accountId": {
+                                    "description": "The account that this creative belongs to.\nCan be used to filter the response of the\ncreatives.list\nmethod.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "creativeId": {
+                                    "description": "The buyer-defined creative ID of this creative.\nCan be used to filter the response of the\ncreatives.list\nmethod.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}",
+                            "request": {
+                                "$ref": "Creative"
+                            },
+                            "response": {
+                                "$ref": "Creative"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/adexchange.buyer"
+                            ]
                         }
                     },
                     "resources": {
@@ -719,6 +2231,12 @@
                                         "creativeId"
                                     ],
                                     "parameters": {
+                                        "creativeId": {
+                                            "description": "The creative ID to list the associations from.\nSpecify \"-\" to list all creatives under the above account.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
                                         "pageToken": {
                                             "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListDealAssociationsResponse.next_page_token\nreturned from the previous call to 'ListDealAssociations' method.",
                                             "location": "query",
@@ -740,12 +2258,6 @@
                                             "description": "An optional query string to filter deal associations. If no filter is\nspecified, all associations will be returned.\nSupported queries are:\n<ul>\n<li>accountId=<i>account_id_string</i>\n<li>creativeId=<i>creative_id_string</i>\n<li>dealsId=<i>deals_id_string</i>\n<li>dealsStatus:{approved, conditionally_approved, disapproved,\n                  not_checked}\n<li>openAuctionStatus:{approved, conditionally_approved, disapproved,\n                         not_checked}\n</ul>\nExample: 'dealsId=12345 AND dealsStatus:disapproved'",
                                             "location": "query",
                                             "type": "string"
-                                        },
-                                        "creativeId": {
-                                            "description": "The creative ID to list the associations from.\nSpecify \"-\" to list all creatives under the above account.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
                                         }
                                     },
                                     "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}/dealAssociations",
@@ -798,14 +2310,14 @@
                                         "creativeId"
                                     ],
                                     "parameters": {
-                                        "accountId": {
-                                            "description": "The account the creative belongs to.",
+                                        "creativeId": {
+                                            "description": "The ID of the creative associated with the deal.",
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
                                         },
-                                        "creativeId": {
-                                            "description": "The ID of the creative associated with the deal.",
+                                        "accountId": {
+                                            "description": "The account the creative belongs to.",
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
@@ -825,638 +2337,603 @@
                             }
                         }
                     }
-                },
-                "filterSets": {
-                    "methods": {
-                        "delete": {
-                            "description": "Deletes the requested filter set from the account with the given account\nID.",
-                            "httpMethod": "DELETE",
-                            "id": "adexchangebuyer2.accounts.filterSets.delete",
-                            "parameterOrder": [
-                                "accountId",
-                                "filterSetId"
-                            ],
-                            "parameters": {
-                                "accountId": {
-                                    "description": "Account ID of the buyer.",
-                                    "format": "int64",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "filterSetId": {
-                                    "description": "The ID of the filter set to delete.",
-                                    "format": "int64",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/adexchange.buyer"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists all filter sets for the account with the given account ID.",
-                            "httpMethod": "GET",
-                            "id": "adexchangebuyer2.accounts.filterSets.list",
-                            "parameterOrder": [
-                                "accountId"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListFilterSetsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.list\nmethod.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "accountId": {
-                                    "description": "Account ID of the buyer.",
-                                    "format": "int64",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2beta1/accounts/{accountId}/filterSets",
-                            "response": {
-                                "$ref": "ListFilterSetsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/adexchange.buyer"
-                            ]
-                        },
-                        "get": {
-                            "description": "Retrieves the requested filter set for the account with the given account\nID.",
-                            "httpMethod": "GET",
-                            "id": "adexchangebuyer2.accounts.filterSets.get",
-                            "parameterOrder": [
-                                "accountId",
-                                "filterSetId"
-                            ],
-                            "parameters": {
-                                "accountId": {
-                                    "description": "Account ID of the buyer.",
-                                    "format": "int64",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "filterSetId": {
-                                    "description": "The ID of the filter set to get.",
-                                    "format": "int64",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}",
-                            "response": {
-                                "$ref": "FilterSet"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/adexchange.buyer"
-                            ]
-                        },
-                        "create": {
-                            "description": "Creates the specified filter set for the account with the given account ID.",
-                            "httpMethod": "POST",
-                            "id": "adexchangebuyer2.accounts.filterSets.create",
-                            "parameterOrder": [
-                                "accountId"
-                            ],
-                            "parameters": {
-                                "isTransient": {
-                                    "description": "Whether the filter set is transient, or should be persisted indefinitely.\nBy default, filter sets are not transient.\nIf transient, it will be available for at least 1 hour after creation.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                },
-                                "accountId": {
-                                    "description": "Account ID of the buyer.",
-                                    "format": "int64",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2beta1/accounts/{accountId}/filterSets",
-                            "request": {
-                                "$ref": "FilterSet"
-                            },
-                            "response": {
-                                "$ref": "FilterSet"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/adexchange.buyer"
-                            ]
-                        }
-                    },
-                    "resources": {
-                        "bidResponsesWithoutBids": {
-                            "methods": {
-                                "list": {
-                                    "description": "List all reasons for which bid responses were considered to have no\napplicable bids, with the number of bid responses affected for each reason.",
-                                    "httpMethod": "GET",
-                                    "id": "adexchangebuyer2.accounts.filterSets.bidResponsesWithoutBids.list",
-                                    "parameterOrder": [
-                                        "accountId",
-                                        "filterSetId"
-                                    ],
-                                    "parameters": {
-                                        "pageToken": {
-                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBidResponsesWithoutBidsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.bidResponsesWithoutBids.list\nmethod.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "accountId": {
-                                            "description": "Account ID of the buyer.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "filterSetId": {
-                                            "description": "The ID of the filter set to apply.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/bidResponsesWithoutBids",
-                                    "response": {
-                                        "$ref": "ListBidResponsesWithoutBidsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/adexchange.buyer"
-                                    ]
-                                }
-                            }
-                        },
-                        "filteredBidRequests": {
-                            "methods": {
-                                "list": {
-                                    "description": "List all reasons that caused a bid request not to be sent for an\nimpression, with the number of bid requests not sent for each reason.",
-                                    "httpMethod": "GET",
-                                    "id": "adexchangebuyer2.accounts.filterSets.filteredBidRequests.list",
-                                    "parameterOrder": [
-                                        "accountId",
-                                        "filterSetId"
-                                    ],
-                                    "parameters": {
-                                        "pageToken": {
-                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListFilteredBidRequestsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.filteredBidRequests.list\nmethod.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "accountId": {
-                                            "description": "Account ID of the buyer.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "filterSetId": {
-                                            "description": "The ID of the filter set to apply.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBidRequests",
-                                    "response": {
-                                        "$ref": "ListFilteredBidRequestsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/adexchange.buyer"
-                                    ]
-                                }
-                            }
-                        },
-                        "filteredBids": {
-                            "methods": {
-                                "list": {
-                                    "description": "List all reasons for which bids were filtered, with the number of bids\nfiltered for each reason.",
-                                    "httpMethod": "GET",
-                                    "id": "adexchangebuyer2.accounts.filterSets.filteredBids.list",
-                                    "parameterOrder": [
-                                        "accountId",
-                                        "filterSetId"
-                                    ],
-                                    "parameters": {
-                                        "pageToken": {
-                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListFilteredBidsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.filteredBids.list\nmethod.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "accountId": {
-                                            "description": "Account ID of the buyer.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "filterSetId": {
-                                            "description": "The ID of the filter set to apply.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBids",
-                                    "response": {
-                                        "$ref": "ListFilteredBidsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/adexchange.buyer"
-                                    ]
-                                }
-                            },
-                            "resources": {
-                                "details": {
-                                    "methods": {
-                                        "list": {
-                                            "description": "List all details associated with a specific reason for which bids were\nfiltered, with the number of bids filtered for each detail.",
-                                            "httpMethod": "GET",
-                                            "id": "adexchangebuyer2.accounts.filterSets.filteredBids.details.list",
-                                            "parameterOrder": [
-                                                "accountId",
-                                                "filterSetId",
-                                                "creativeStatusId"
-                                            ],
-                                            "parameters": {
-                                                "pageToken": {
-                                                    "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListCreativeStatusBreakdownByDetailResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.filteredBids.details.list\nmethod.",
-                                                    "location": "query",
-                                                    "type": "string"
-                                                },
-                                                "creativeStatusId": {
-                                                    "description": "The ID of the creative status for which to retrieve a breakdown by detail.\nSee\n[creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).\nDetails are only available for statuses 10, 14, 15, 17, 18, 19, 86, and 87.",
-                                                    "format": "int32",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "integer"
-                                                },
-                                                "pageSize": {
-                                                    "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
-                                                    "format": "int32",
-                                                    "location": "query",
-                                                    "type": "integer"
-                                                },
-                                                "accountId": {
-                                                    "description": "Account ID of the buyer.",
-                                                    "format": "int64",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "filterSetId": {
-                                                    "description": "The ID of the filter set to apply.",
-                                                    "format": "int64",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBids/{creativeStatusId}/details",
-                                            "response": {
-                                                "$ref": "ListCreativeStatusBreakdownByDetailResponse"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/adexchange.buyer"
-                                            ]
-                                        }
-                                    }
-                                },
-                                "creatives": {
-                                    "methods": {
-                                        "list": {
-                                            "description": "List all creatives associated with a specific reason for which bids were\nfiltered, with the number of bids filtered for each creative.",
-                                            "httpMethod": "GET",
-                                            "id": "adexchangebuyer2.accounts.filterSets.filteredBids.creatives.list",
-                                            "parameterOrder": [
-                                                "accountId",
-                                                "filterSetId",
-                                                "creativeStatusId"
-                                            ],
-                                            "parameters": {
-                                                "pageToken": {
-                                                    "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListCreativeStatusBreakdownByCreativeResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.filteredBids.creatives.list\nmethod.",
-                                                    "location": "query",
-                                                    "type": "string"
-                                                },
-                                                "creativeStatusId": {
-                                                    "description": "The ID of the creative status for which to retrieve a breakdown by\ncreative.\nSee\n[creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).",
-                                                    "format": "int32",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "integer"
-                                                },
-                                                "pageSize": {
-                                                    "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
-                                                    "format": "int32",
-                                                    "location": "query",
-                                                    "type": "integer"
-                                                },
-                                                "accountId": {
-                                                    "description": "Account ID of the buyer.",
-                                                    "format": "int64",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "filterSetId": {
-                                                    "description": "The ID of the filter set to apply.",
-                                                    "format": "int64",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBids/{creativeStatusId}/creatives",
-                                            "response": {
-                                                "$ref": "ListCreativeStatusBreakdownByCreativeResponse"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/adexchange.buyer"
-                                            ]
-                                        }
-                                    }
-                                }
-                            }
-                        },
-                        "nonBillableWinningBids": {
-                            "methods": {
-                                "list": {
-                                    "description": "List all reasons for which winning bids were not billable, with the number\nof bids not billed for each reason.",
-                                    "httpMethod": "GET",
-                                    "id": "adexchangebuyer2.accounts.filterSets.nonBillableWinningBids.list",
-                                    "parameterOrder": [
-                                        "accountId",
-                                        "filterSetId"
-                                    ],
-                                    "parameters": {
-                                        "filterSetId": {
-                                            "description": "The ID of the filter set to apply.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "pageToken": {
-                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListNonBillableWinningBidsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.nonBillableWinningBids.list\nmethod.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "accountId": {
-                                            "description": "Account ID of the buyer.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/nonBillableWinningBids",
-                                    "response": {
-                                        "$ref": "ListNonBillableWinningBidsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/adexchange.buyer"
-                                    ]
-                                }
-                            }
-                        },
-                        "losingBids": {
-                            "methods": {
-                                "list": {
-                                    "description": "List all reasons for which bids lost in the auction, with the number of\nbids that lost for each reason.",
-                                    "httpMethod": "GET",
-                                    "id": "adexchangebuyer2.accounts.filterSets.losingBids.list",
-                                    "parameterOrder": [
-                                        "accountId",
-                                        "filterSetId"
-                                    ],
-                                    "parameters": {
-                                        "pageToken": {
-                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListLosingBidsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.losingBids.list\nmethod.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "accountId": {
-                                            "description": "Account ID of the buyer.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "filterSetId": {
-                                            "description": "The ID of the filter set to apply.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/losingBids",
-                                    "response": {
-                                        "$ref": "ListLosingBidsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/adexchange.buyer"
-                                    ]
-                                }
-                            }
-                        },
-                        "impressionMetrics": {
-                            "methods": {
-                                "list": {
-                                    "description": "Lists all metrics that are measured in terms of number of impressions.",
-                                    "httpMethod": "GET",
-                                    "id": "adexchangebuyer2.accounts.filterSets.impressionMetrics.list",
-                                    "parameterOrder": [
-                                        "accountId",
-                                        "filterSetId"
-                                    ],
-                                    "parameters": {
-                                        "pageToken": {
-                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListImpressionMetricsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.impressionMetrics.list\nmethod.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "accountId": {
-                                            "description": "Account ID of the buyer.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "filterSetId": {
-                                            "description": "The ID of the filter set to apply.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/impressionMetrics",
-                                    "response": {
-                                        "$ref": "ListImpressionMetricsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/adexchange.buyer"
-                                    ]
-                                }
-                            }
-                        },
-                        "bidMetrics": {
-                            "methods": {
-                                "list": {
-                                    "description": "Lists all metrics that are measured in terms of number of bids.",
-                                    "httpMethod": "GET",
-                                    "id": "adexchangebuyer2.accounts.filterSets.bidMetrics.list",
-                                    "parameterOrder": [
-                                        "accountId",
-                                        "filterSetId"
-                                    ],
-                                    "parameters": {
-                                        "pageToken": {
-                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBidMetricsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.bidMetrics.list\nmethod.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "accountId": {
-                                            "description": "Account ID of the buyer.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "filterSetId": {
-                                            "description": "The ID of the filter set to apply.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/bidMetrics",
-                                    "response": {
-                                        "$ref": "ListBidMetricsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/adexchange.buyer"
-                                    ]
-                                }
-                            }
-                        },
-                        "bidResponseErrors": {
-                            "methods": {
-                                "list": {
-                                    "description": "List all errors that occurred in bid responses, with the number of bid\nresponses affected for each reason.",
-                                    "httpMethod": "GET",
-                                    "id": "adexchangebuyer2.accounts.filterSets.bidResponseErrors.list",
-                                    "parameterOrder": [
-                                        "accountId",
-                                        "filterSetId"
-                                    ],
-                                    "parameters": {
-                                        "filterSetId": {
-                                            "description": "The ID of the filter set to apply.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "pageToken": {
-                                            "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBidResponseErrorsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.bidResponseErrors.list\nmethod.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "accountId": {
-                                            "description": "Account ID of the buyer.",
-                                            "format": "int64",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/bidResponseErrors",
-                                    "response": {
-                                        "$ref": "ListBidResponseErrorsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/adexchange.buyer"
-                                    ]
-                                }
-                            }
-                        }
-                    }
                 }
             }
         }
     },
-    "revision": "20171003",
+    "revision": "20171019",
     "rootUrl": "https://adexchangebuyer.googleapis.com/",
     "schemas": {
+        "ImpressionMetricsRow": {
+            "description": "The set of metrics that are measured in numbers of impressions, representing\nhow many impressions with the specified dimension values were considered\neligible at each stage of the bidding funnel.",
+            "id": "ImpressionMetricsRow",
+            "properties": {
+                "responsesWithBids": {
+                    "$ref": "MetricValue",
+                    "description": "The number of impressions for which Ad Exchange received a response from\nthe buyer that contained at least one applicable bid."
+                },
+                "successfulResponses": {
+                    "$ref": "MetricValue",
+                    "description": "The number of impressions for which the buyer successfully sent a response\nto Ad Exchange."
+                },
+                "rowDimensions": {
+                    "$ref": "RowDimensions",
+                    "description": "The values of all dimensions associated with metric values in this row."
+                },
+                "availableImpressions": {
+                    "$ref": "MetricValue",
+                    "description": "The number of impressions available to the buyer on Ad Exchange.\nIn some cases this value may be unavailable."
+                },
+                "inventoryMatches": {
+                    "$ref": "MetricValue",
+                    "description": "The number of impressions that match the buyer's inventory pretargeting."
+                },
+                "bidRequests": {
+                    "$ref": "MetricValue",
+                    "description": "The number of impressions for which Ad Exchange sent the buyer a bid\nrequest."
+                }
+            },
+            "type": "object"
+        },
+        "AuctionContext": {
+            "description": "@OutputOnly The auction type the restriction applies to.",
+            "id": "AuctionContext",
+            "properties": {
+                "auctionTypes": {
+                    "description": "The auction types this restriction applies to.",
+                    "enumDescriptions": [
+                        "The restriction applies to open auction.",
+                        "The restriction applies to direct deals."
+                    ],
+                    "items": {
+                        "enum": [
+                            "OPEN_AUCTION",
+                            "DIRECT_DEALS"
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListImpressionMetricsResponse": {
+            "description": "Response message for listing the metrics that are measured in number of\nimpressions.",
+            "id": "ListImpressionMetricsResponse",
+            "properties": {
+                "impressionMetricsRows": {
+                    "description": "List of rows, each containing a set of impression metrics.",
+                    "items": {
+                        "$ref": "ImpressionMetricsRow"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListImpressionMetricsRequest.pageToken\nfield in the subsequent call to the impressionMetrics.list\nmethod to retrieve the next page of results.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "BidMetricsRow": {
+            "description": "The set of metrics that are measured in numbers of bids, representing how\nmany bids with the specified dimension values were considered eligible at\neach stage of the bidding funnel;",
+            "id": "BidMetricsRow",
+            "properties": {
+                "measurableImpressions": {
+                    "$ref": "MetricValue",
+                    "description": "The number of bids for which the corresponding impression was measurable\nfor viewability (as defined by Active View)."
+                },
+                "bids": {
+                    "$ref": "MetricValue",
+                    "description": "The number of bids that Ad Exchange received from the buyer."
+                },
+                "billedImpressions": {
+                    "$ref": "MetricValue",
+                    "description": "The number of bids for which the buyer was billed."
+                },
+                "bidsInAuction": {
+                    "$ref": "MetricValue",
+                    "description": "The number of bids that were permitted to compete in the auction."
+                },
+                "rowDimensions": {
+                    "$ref": "RowDimensions",
+                    "description": "The values of all dimensions associated with metric values in this row."
+                },
+                "impressionsWon": {
+                    "$ref": "MetricValue",
+                    "description": "The number of bids that won an impression."
+                },
+                "viewableImpressions": {
+                    "$ref": "MetricValue",
+                    "description": "The number of bids for which the corresponding impression was viewable (as\ndefined by Active View)."
+                }
+            },
+            "type": "object"
+        },
+        "ListBidResponseErrorsResponse": {
+            "description": "Response message for listing all reasons that bid responses resulted in an\nerror.",
+            "id": "ListBidResponseErrorsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListBidResponseErrorsRequest.pageToken\nfield in the subsequent call to the bidResponseErrors.list\nmethod to retrieve the next page of results.",
+                    "type": "string"
+                },
+                "calloutStatusRows": {
+                    "description": "List of rows, with counts of bid responses aggregated by callout status.",
+                    "items": {
+                        "$ref": "CalloutStatusRow"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "CreativeStatusRow": {
+            "description": "The number of bids with the specified dimension values that did not win the\nauction (either were filtered pre-auction or lost the auction), as described\nby the specified creative status.",
+            "id": "CreativeStatusRow",
+            "properties": {
+                "rowDimensions": {
+                    "$ref": "RowDimensions",
+                    "description": "The values of all dimensions associated with metric values in this row."
+                },
+                "creativeStatusId": {
+                    "description": "The ID of the creative status.\nSee [creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "bidCount": {
+                    "$ref": "MetricValue",
+                    "description": "The number of bids with the specified status."
+                }
+            },
+            "type": "object"
+        },
+        "RealtimeTimeRange": {
+            "description": "An open-ended realtime time range specified by the start timestamp.\nFor filter sets that specify a realtime time range RTB metrics continue to\nbe aggregated throughout the lifetime of the filter set.",
+            "id": "RealtimeTimeRange",
+            "properties": {
+                "startTimestamp": {
+                    "description": "The start timestamp of the real-time RTB metrics aggregation.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "NonBillableWinningBidStatusRow": {
+            "description": "The number of winning bids with the specified dimension values for which the\nbuyer was not billed, as described by the specified status.",
+            "id": "NonBillableWinningBidStatusRow",
+            "properties": {
+                "rowDimensions": {
+                    "$ref": "RowDimensions",
+                    "description": "The values of all dimensions associated with metric values in this row."
+                },
+                "bidCount": {
+                    "$ref": "MetricValue",
+                    "description": "The number of bids with the specified status."
+                },
+                "status": {
+                    "description": "The status specifying why the winning bids were not billed.",
+                    "enum": [
+                        "STATUS_UNSPECIFIED",
+                        "AD_NOT_RENDERED",
+                        "INVALID_IMPRESSION"
+                    ],
+                    "enumDescriptions": [
+                        "A placeholder for an undefined status.\nThis value will never be returned in responses.",
+                        "The buyer was not billed because the ad was not rendered by the\npublisher.",
+                        "The buyer was not billed because the impression won by the bid was\ndetermined to be invalid."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "FilteredBidDetailRow": {
+            "description": "The number of filtered bids with the specified dimension values, among those\nfiltered due to the requested filtering reason (i.e. creative status), that\nhave the specified detail.",
+            "id": "FilteredBidDetailRow",
+            "properties": {
+                "rowDimensions": {
+                    "$ref": "RowDimensions",
+                    "description": "The values of all dimensions associated with metric values in this row."
+                },
+                "detailId": {
+                    "description": "The ID of the detail. The associated value can be looked up in the\ndictionary file corresponding to the DetailType in the response message.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "bidCount": {
+                    "$ref": "MetricValue",
+                    "description": "The number of bids with the specified detail."
+                }
+            },
+            "type": "object"
+        },
+        "AbsoluteDateRange": {
+            "description": "An absolute date range, specified by its start date and end date.\nThe supported range of dates begins 30 days before today and ends today.\nValidity checked upon filter set creation. If a filter set with an absolute\ndate range is run at a later date more than 30 days after start_date, it will\nfail.",
+            "id": "AbsoluteDateRange",
+            "properties": {
+                "endDate": {
+                    "$ref": "Date",
+                    "description": "The end date of the range (inclusive).\nMust be within the 30 days leading up to current date, and must be equal to\nor after start_date."
+                },
+                "startDate": {
+                    "$ref": "Date",
+                    "description": "The start date of the range (inclusive).\nMust be within the 30 days leading up to current date, and must be equal to\nor before end_date."
+                }
+            },
+            "type": "object"
+        },
+        "AddDealAssociationRequest": {
+            "description": "A request for associating a deal and a creative.",
+            "id": "AddDealAssociationRequest",
+            "properties": {
+                "association": {
+                    "$ref": "CreativeDealAssociation",
+                    "description": "The association between a creative and a deal that should be added."
+                }
+            },
+            "type": "object"
+        },
+        "WatchCreativeRequest": {
+            "description": "A request for watching changes to creative Status.",
+            "id": "WatchCreativeRequest",
+            "properties": {
+                "topic": {
+                    "description": "The Pub/Sub topic to publish notifications to.\nThis topic must already exist and must give permission to\nad-exchange-buyside-reports@google.com to write to the topic.\nThis should be the full resource name in\n\"projects/{project_id}/topics/{topic_id}\" format.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TimeInterval": {
+            "description": "An interval of time, with an absolute start and end.",
+            "id": "TimeInterval",
+            "properties": {
+                "endTime": {
+                    "description": "The timestamp marking the end of the range (exclusive) for which data is\nincluded.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "The timestamp marking the start of the range (inclusive) for which data is\nincluded.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "FilteredBidCreativeRow": {
+            "description": "The number of filtered bids with the specified dimension values that have the\nspecified creative.",
+            "id": "FilteredBidCreativeRow",
+            "properties": {
+                "rowDimensions": {
+                    "$ref": "RowDimensions",
+                    "description": "The values of all dimensions associated with metric values in this row."
+                },
+                "bidCount": {
+                    "$ref": "MetricValue",
+                    "description": "The number of bids with the specified creative."
+                },
+                "creativeId": {
+                    "description": "The ID of the creative.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "RelativeDateRange": {
+            "description": "A relative date range, specified by an offset and a duration.\nThe supported range of dates begins 30 days before today and ends today.\nI.e. the limits for these values are:\noffset_days >= 0\nduration_days >= 1\noffset_days + duration_days <= 30",
+            "id": "RelativeDateRange",
+            "properties": {
+                "durationDays": {
+                    "description": "The number of days in the requested date range. E.g. for a range spanning\ntoday, 1. For a range spanning the last 7 days, 7.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "offsetDays": {
+                    "description": "The end date of the filter set, specified as the number of days before\ntoday. E.g. for a range where the last date is today, 0.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "NativeContent": {
+            "description": "Native content for a creative.",
+            "id": "NativeContent",
+            "properties": {
+                "advertiserName": {
+                    "description": "The name of the advertiser or sponsor, to be displayed in the ad creative.",
+                    "type": "string"
+                },
+                "storeUrl": {
+                    "description": "The URL to the app store to purchase/download the promoted app.",
+                    "type": "string"
+                },
+                "headline": {
+                    "description": "A short title for the ad.",
+                    "type": "string"
+                },
+                "appIcon": {
+                    "$ref": "Image",
+                    "description": "The app icon, for app download ads."
+                },
+                "callToAction": {
+                    "description": "A label for the button that the user is supposed to click.",
+                    "type": "string"
+                },
+                "body": {
+                    "description": "A long description of the ad.",
+                    "type": "string"
+                },
+                "starRating": {
+                    "description": "The app rating in the app store. Must be in the range [0-5].",
+                    "format": "double",
+                    "type": "number"
+                },
+                "videoUrl": {
+                    "description": "The URL to fetch a native video ad.",
+                    "type": "string"
+                },
+                "logo": {
+                    "$ref": "Image",
+                    "description": "A smaller image, for the advertiser's logo."
+                },
+                "clickLinkUrl": {
+                    "description": "The URL that the browser/SDK will load when the user clicks the ad.",
+                    "type": "string"
+                },
+                "priceDisplayText": {
+                    "description": "The price of the promoted app including currency info.",
+                    "type": "string"
+                },
+                "image": {
+                    "$ref": "Image",
+                    "description": "A large image."
+                },
+                "clickTrackingUrl": {
+                    "description": "The URL to use for click tracking.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListClientsResponse": {
+            "id": "ListClientsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListClientsRequest.pageToken\nfield in the subsequent call to the\naccounts.clients.list method\nto retrieve the next page of results.",
+                    "type": "string"
+                },
+                "clients": {
+                    "description": "The returned list of clients.",
+                    "items": {
+                        "$ref": "Client"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListBidResponsesWithoutBidsResponse": {
+            "description": "Response message for listing all reasons that bid responses were considered\nto have no applicable bids.",
+            "id": "ListBidResponsesWithoutBidsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListBidResponsesWithoutBidsRequest.pageToken\nfield in the subsequent call to the bidResponsesWithoutBids.list\nmethod to retrieve the next page of results.",
+                    "type": "string"
+                },
+                "bidResponseWithoutBidsStatusRows": {
+                    "description": "List of rows, with counts of bid responses without bids aggregated by\nstatus.",
+                    "items": {
+                        "$ref": "BidResponseWithoutBidsStatusRow"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ServingContext": {
+            "description": "The serving context for this restriction.",
+            "id": "ServingContext",
+            "properties": {
+                "platform": {
+                    "$ref": "PlatformContext",
+                    "description": "Matches impressions coming from a particular platform."
+                },
+                "location": {
+                    "$ref": "LocationContext",
+                    "description": "Matches impressions coming from users *or* publishers in a specific\nlocation."
+                },
+                "auctionType": {
+                    "$ref": "AuctionContext",
+                    "description": "Matches impressions for a particular auction type."
+                },
+                "all": {
+                    "description": "Matches all contexts.",
+                    "enum": [
+                        "SIMPLE_CONTEXT"
+                    ],
+                    "enumDescriptions": [
+                        "A simple context."
+                    ],
+                    "type": "string"
+                },
+                "appType": {
+                    "$ref": "AppContext",
+                    "description": "Matches impressions for a particular app type."
+                },
+                "securityType": {
+                    "$ref": "SecurityContext",
+                    "description": "Matches impressions for a particular security type."
+                }
+            },
+            "type": "object"
+        },
+        "Image": {
+            "description": "An image resource. You may provide a larger image than was requested,\nso long as the aspect ratio is preserved.",
+            "id": "Image",
+            "properties": {
+                "height": {
+                    "description": "Image height in pixels.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "width": {
+                    "description": "Image width in pixels.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "url": {
+                    "description": "The URL of the image.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListFilterSetsResponse": {
+            "description": "Response message for listing filter sets.",
+            "id": "ListFilterSetsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListFilterSetsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.list\nmethod to retrieve the next page of results.",
+                    "type": "string"
+                },
+                "filterSets": {
+                    "description": "The filter sets belonging to the buyer.",
+                    "items": {
+                        "$ref": "FilterSet"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "BidResponseWithoutBidsStatusRow": {
+            "description": "The number of impressions with the specified dimension values that were\nconsidered to have no applicable bids, as described by the specified status.",
+            "id": "BidResponseWithoutBidsStatusRow",
+            "properties": {
+                "impressionCount": {
+                    "$ref": "MetricValue",
+                    "description": "The number of impressions for which there was a bid response with the\nspecified status."
+                },
+                "status": {
+                    "description": "The status specifying why the bid responses were considered to have no\napplicable bids.",
+                    "enum": [
+                        "STATUS_UNSPECIFIED",
+                        "RESPONSES_WITHOUT_BIDS",
+                        "RESPONSES_WITHOUT_BIDS_FOR_ACCOUNT",
+                        "RESPONSES_WITHOUT_BIDS_FOR_DEAL"
+                    ],
+                    "enumDescriptions": [
+                        "A placeholder for an undefined status.\nThis value will never be returned in responses.",
+                        "The response had no bids.",
+                        "The response had no bids for the specified account, though it may have\nincluded bids on behalf of other accounts.",
+                        "The response had no bids for the specified deal, though it may have\nincluded bids on other deals on behalf of the account to which the deal\nbelongs."
+                    ],
+                    "type": "string"
+                },
+                "rowDimensions": {
+                    "$ref": "RowDimensions",
+                    "description": "The values of all dimensions associated with metric values in this row."
+                }
+            },
+            "type": "object"
+        },
+        "ClientUserInvitation": {
+            "description": "An invitation for a new client user to get access to the Ad Exchange\nBuyer UI.\nAll fields are required unless otherwise specified.",
+            "id": "ClientUserInvitation",
+            "properties": {
+                "email": {
+                    "description": "The email address to which the invitation is sent. Email\naddresses should be unique among all client users under each sponsor\nbuyer.",
+                    "type": "string"
+                },
+                "clientAccountId": {
+                    "description": "Numerical account ID of the client buyer\nthat the invited user is associated with.\nThe value of this field is ignored in create operations.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "invitationId": {
+                    "description": "The unique numerical ID of the invitation that is sent to the user.\nThe value of this field is ignored in create operations.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListClientUserInvitationsResponse": {
+            "id": "ListClientUserInvitationsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListClientUserInvitationsRequest.pageToken\nfield in the subsequent call to the\nclients.invitations.list\nmethod to retrieve the next\npage of results.",
+                    "type": "string"
+                },
+                "invitations": {
+                    "description": "The returned list of client users.",
+                    "items": {
+                        "$ref": "ClientUserInvitation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListClientUsersResponse": {
+            "id": "ListClientUsersResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListClientUsersRequest.pageToken\nfield in the subsequent call to the\nclients.invitations.list\nmethod to retrieve the next\npage of results.",
+                    "type": "string"
+                },
+                "users": {
+                    "description": "The returned list of client users.",
+                    "items": {
+                        "$ref": "ClientUser"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListCreativeStatusBreakdownByDetailResponse": {
+            "description": "Response message for listing all details associated with a given filtered bid\nreason.",
+            "id": "ListCreativeStatusBreakdownByDetailResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListCreativeStatusBreakdownByDetailRequest.pageToken\nfield in the subsequent call to the filteredBids.details.list\nmethod to retrieve the next page of results.",
+                    "type": "string"
+                },
+                "filteredBidDetailRows": {
+                    "description": "List of rows, with counts of bids with a given creative status aggregated\nby detail.",
+                    "items": {
+                        "$ref": "FilteredBidDetailRow"
+                    },
+                    "type": "array"
+                },
+                "detailType": {
+                    "description": "The type of detail that the detail IDs represent.",
+                    "enum": [
+                        "DETAIL_TYPE_UNSPECIFIED",
+                        "CREATIVE_ATTRIBUTE",
+                        "VENDOR",
+                        "SENSITIVE_CATEGORY",
+                        "PRODUCT_CATEGORY",
+                        "DISAPPROVAL_REASON"
+                    ],
+                    "enumDescriptions": [
+                        "A placeholder for an undefined status.\nThis value will never be returned in responses.",
+                        "Indicates that the detail ID refers to a creative attribute; see\n[publisher-excludable-creative-attributes](https://developers.google.com/ad-exchange/rtb/downloads/publisher-excludable-creative-attributes).",
+                        "Indicates that the detail ID refers to a vendor; see\n[vendors](https://developers.google.com/ad-exchange/rtb/downloads/vendors).",
+                        "Indicates that the detail ID refers to a sensitive category; see\n[ad-sensitive-categories](https://developers.google.com/ad-exchange/rtb/downloads/ad-sensitive-categories).",
+                        "Indicates that the detail ID refers to a product category; see\n[ad-product-categories](https://developers.google.com/ad-exchange/rtb/downloads/ad-product-categories).",
+                        "Indicates that the detail ID refers to a disapproval reason; see\nDisapprovalReason enum in [snippet-status-report-proto](https://developers.google.com/ad-exchange/rtb/downloads/snippet-status-report-proto)."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "LocationContext": {
             "description": "@OutputOnly The Geo criteria the restriction applies to.",
             "id": "LocationContext",
@@ -1517,6 +2994,20 @@
             "description": "A client user is created under a client buyer and has restricted access to\nthe Ad Exchange Marketplace and certain other sections\nof the Ad Exchange Buyer UI based on the role\ngranted to the associated client buyer.\n\nThe only way a new client user can be created is via accepting an\nemail invitation\n(see the\naccounts.clients.invitations.create\nmethod).\n\nAll fields are required unless otherwise specified.",
             "id": "ClientUser",
             "properties": {
+                "email": {
+                    "description": "User's email address. The value of this field\nis ignored in an update operation.",
+                    "type": "string"
+                },
+                "userId": {
+                    "description": "The unique numerical ID of the client user\nthat has accepted an invitation.\nThe value of this field is ignored in an update operation.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "clientAccountId": {
+                    "description": "Numerical account ID of the client buyer\nwith which the user is associated; the\nbuyer must be a client of the current sponsor buyer.\nThe value of this field is ignored in an update operation.",
+                    "format": "int64",
+                    "type": "string"
+                },
                 "status": {
                     "description": "The status of the client user.",
                     "enum": [
@@ -1532,20 +3023,6 @@
                         "A user that is currently disabled."
                     ],
                     "type": "string"
-                },
-                "email": {
-                    "description": "User's email address. The value of this field\nis ignored in an update operation.",
-                    "type": "string"
-                },
-                "userId": {
-                    "description": "The unique numerical ID of the client user\nthat has accepted an invitation.\nThe value of this field is ignored in an update operation.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "clientAccountId": {
-                    "description": "Numerical account ID of the client buyer\nwith which the user is associated; the\nbuyer must be a client of the current sponsor buyer.\nThe value of this field is ignored in an update operation.",
-                    "format": "int64",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1554,10 +3031,6 @@
             "description": "The association between a creative and a deal.",
             "id": "CreativeDealAssociation",
             "properties": {
-                "accountId": {
-                    "description": "The account the creative belongs to.",
-                    "type": "string"
-                },
                 "creativeId": {
                     "description": "The ID of the creative associated with the deal.",
                     "type": "string"
@@ -1565,6 +3038,10 @@
                 "dealsId": {
                     "description": "The externalDealId for the deal associated with the creative.",
                     "type": "string"
+                },
+                "accountId": {
+                    "description": "The account the creative belongs to.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1573,6 +3050,154 @@
             "description": "A creative and its classification data.",
             "id": "Creative",
             "properties": {
+                "native": {
+                    "$ref": "NativeContent",
+                    "description": "A native creative."
+                },
+                "servingRestrictions": {
+                    "description": "@OutputOnly The granular status of this ad in specific contexts.\nA context here relates to where something ultimately serves (for example,\na physical location, a platform, an HTTPS vs HTTP request, or the type\nof auction).",
+                    "items": {
+                        "$ref": "ServingRestriction"
+                    },
+                    "type": "array"
+                },
+                "video": {
+                    "$ref": "VideoContent",
+                    "description": "A video creative."
+                },
+                "agencyId": {
+                    "description": "The agency ID for this creative.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "clickThroughUrls": {
+                    "description": "The set of destination URLs for the creative.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "detectedSensitiveCategories": {
+                    "description": "@OutputOnly Detected sensitive categories, if any.\nSee the ad-sensitive-categories.txt file in the technical documentation for\na list of IDs. You should use these IDs along with the\nexcluded-sensitive-category field in the bid request to filter your bids.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                },
+                "adChoicesDestinationUrl": {
+                    "description": "The link to AdChoices destination page.",
+                    "type": "string"
+                },
+                "restrictedCategories": {
+                    "description": "All restricted categories for the ads that may be shown from this creative.",
+                    "enumDescriptions": [
+                        "The ad has no restricted categories",
+                        "The alcohol restricted category."
+                    ],
+                    "items": {
+                        "enum": [
+                            "NO_RESTRICTED_CATEGORIES",
+                            "ALCOHOL"
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "corrections": {
+                    "description": "@OutputOnly Shows any corrections that were applied to this creative.",
+                    "items": {
+                        "$ref": "Correction"
+                    },
+                    "type": "array"
+                },
+                "version": {
+                    "description": "@OutputOnly The version of this creative.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "vendorIds": {
+                    "description": "All vendor IDs for the ads that may be shown from this creative.\nSee https://storage.googleapis.com/adx-rtb-dictionaries/vendors.txt\nfor possible values.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                },
+                "impressionTrackingUrls": {
+                    "description": "The set of URLs to be called to record an impression.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "html": {
+                    "$ref": "HtmlContent",
+                    "description": "An HTML creative."
+                },
+                "dealsStatus": {
+                    "description": "@OutputOnly The top-level deals status of this creative.\nIf disapproved, an entry for 'auctionType=DIRECT_DEALS' (or 'ALL') in\nserving_restrictions will also exist. Note\nthat this may be nuanced with other contextual restrictions, in which case,\nit may be preferable to read from serving_restrictions directly.\nCan be used to filter the response of the\ncreatives.list\nmethod.",
+                    "enum": [
+                        "STATUS_UNSPECIFIED",
+                        "NOT_CHECKED",
+                        "CONDITIONALLY_APPROVED",
+                        "APPROVED",
+                        "DISAPPROVED"
+                    ],
+                    "enumDescriptions": [
+                        "The status is unknown.",
+                        "The creative has not been checked.",
+                        "The creative has been conditionally approved.\nSee serving_restrictions for details.",
+                        "The creative has been approved.",
+                        "The creative has been disapproved."
+                    ],
+                    "type": "string"
+                },
+                "detectedProductCategories": {
+                    "description": "@OutputOnly Detected product categories, if any.\nSee the ad-product-categories.txt file in the technical documentation\nfor a list of IDs.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                },
+                "openAuctionStatus": {
+                    "description": "@OutputOnly The top-level open auction status of this creative.\nIf disapproved, an entry for 'auctionType = OPEN_AUCTION' (or 'ALL') in\nserving_restrictions will also exist. Note\nthat this may be nuanced with other contextual restrictions, in which case,\nit may be preferable to read from serving_restrictions directly.\nCan be used to filter the response of the\ncreatives.list\nmethod.",
+                    "enum": [
+                        "STATUS_UNSPECIFIED",
+                        "NOT_CHECKED",
+                        "CONDITIONALLY_APPROVED",
+                        "APPROVED",
+                        "DISAPPROVED"
+                    ],
+                    "enumDescriptions": [
+                        "The status is unknown.",
+                        "The creative has not been checked.",
+                        "The creative has been conditionally approved.\nSee serving_restrictions for details.",
+                        "The creative has been approved.",
+                        "The creative has been disapproved."
+                    ],
+                    "type": "string"
+                },
+                "advertiserName": {
+                    "description": "The name of the company being advertised in the creative.",
+                    "type": "string"
+                },
+                "detectedDomains": {
+                    "description": "@OutputOnly\nThe detected domains for this creative.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "detectedAdvertiserIds": {
+                    "description": "@OutputOnly Detected advertiser IDs, if any.",
+                    "items": {
+                        "format": "int64",
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
                 "filteringStats": {
                     "$ref": "FilteringStats",
                     "description": "@OutputOnly The filtering stats for this creative."
@@ -1655,154 +3280,6 @@
                 "accountId": {
                     "description": "The account that this creative belongs to.\nCan be used to filter the response of the\ncreatives.list\nmethod.",
                     "type": "string"
-                },
-                "native": {
-                    "$ref": "NativeContent",
-                    "description": "A native creative."
-                },
-                "servingRestrictions": {
-                    "description": "@OutputOnly The granular status of this ad in specific contexts.\nA context here relates to where something ultimately serves (for example,\na physical location, a platform, an HTTPS vs HTTP request, or the type\nof auction).",
-                    "items": {
-                        "$ref": "ServingRestriction"
-                    },
-                    "type": "array"
-                },
-                "video": {
-                    "$ref": "VideoContent",
-                    "description": "A video creative."
-                },
-                "agencyId": {
-                    "description": "The agency ID for this creative.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "clickThroughUrls": {
-                    "description": "The set of destination URLs for the creative.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "adChoicesDestinationUrl": {
-                    "description": "The link to AdChoices destination page.",
-                    "type": "string"
-                },
-                "detectedSensitiveCategories": {
-                    "description": "@OutputOnly Detected sensitive categories, if any.\nSee the ad-sensitive-categories.txt file in the technical documentation for\na list of IDs. You should use these IDs along with the\nexcluded-sensitive-category field in the bid request to filter your bids.",
-                    "items": {
-                        "format": "int32",
-                        "type": "integer"
-                    },
-                    "type": "array"
-                },
-                "restrictedCategories": {
-                    "description": "All restricted categories for the ads that may be shown from this creative.",
-                    "enumDescriptions": [
-                        "The ad has no restricted categories",
-                        "The alcohol restricted category."
-                    ],
-                    "items": {
-                        "enum": [
-                            "NO_RESTRICTED_CATEGORIES",
-                            "ALCOHOL"
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "corrections": {
-                    "description": "@OutputOnly Shows any corrections that were applied to this creative.",
-                    "items": {
-                        "$ref": "Correction"
-                    },
-                    "type": "array"
-                },
-                "version": {
-                    "description": "@OutputOnly The version of this creative.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "vendorIds": {
-                    "description": "All vendor IDs for the ads that may be shown from this creative.\nSee https://storage.googleapis.com/adx-rtb-dictionaries/vendors.txt\nfor possible values.",
-                    "items": {
-                        "format": "int32",
-                        "type": "integer"
-                    },
-                    "type": "array"
-                },
-                "impressionTrackingUrls": {
-                    "description": "The set of URLs to be called to record an impression.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "html": {
-                    "$ref": "HtmlContent",
-                    "description": "An HTML creative."
-                },
-                "detectedProductCategories": {
-                    "description": "@OutputOnly Detected product categories, if any.\nSee the ad-product-categories.txt file in the technical documentation\nfor a list of IDs.",
-                    "items": {
-                        "format": "int32",
-                        "type": "integer"
-                    },
-                    "type": "array"
-                },
-                "dealsStatus": {
-                    "description": "@OutputOnly The top-level deals status of this creative.\nIf disapproved, an entry for 'auctionType=DIRECT_DEALS' (or 'ALL') in\nserving_restrictions will also exist. Note\nthat this may be nuanced with other contextual restrictions, in which case,\nit may be preferable to read from serving_restrictions directly.\nCan be used to filter the response of the\ncreatives.list\nmethod.",
-                    "enum": [
-                        "STATUS_UNSPECIFIED",
-                        "NOT_CHECKED",
-                        "CONDITIONALLY_APPROVED",
-                        "APPROVED",
-                        "DISAPPROVED"
-                    ],
-                    "enumDescriptions": [
-                        "The status is unknown.",
-                        "The creative has not been checked.",
-                        "The creative has been conditionally approved.\nSee serving_restrictions for details.",
-                        "The creative has been approved.",
-                        "The creative has been disapproved."
-                    ],
-                    "type": "string"
-                },
-                "openAuctionStatus": {
-                    "description": "@OutputOnly The top-level open auction status of this creative.\nIf disapproved, an entry for 'auctionType = OPEN_AUCTION' (or 'ALL') in\nserving_restrictions will also exist. Note\nthat this may be nuanced with other contextual restrictions, in which case,\nit may be preferable to read from serving_restrictions directly.\nCan be used to filter the response of the\ncreatives.list\nmethod.",
-                    "enum": [
-                        "STATUS_UNSPECIFIED",
-                        "NOT_CHECKED",
-                        "CONDITIONALLY_APPROVED",
-                        "APPROVED",
-                        "DISAPPROVED"
-                    ],
-                    "enumDescriptions": [
-                        "The status is unknown.",
-                        "The creative has not been checked.",
-                        "The creative has been conditionally approved.\nSee serving_restrictions for details.",
-                        "The creative has been approved.",
-                        "The creative has been disapproved."
-                    ],
-                    "type": "string"
-                },
-                "advertiserName": {
-                    "description": "The name of the company being advertised in the creative.",
-                    "type": "string"
-                },
-                "detectedDomains": {
-                    "description": "@OutputOnly\nThe detected domains for this creative.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "detectedAdvertiserIds": {
-                    "description": "@OutputOnly Detected advertiser IDs, if any.",
-                    "items": {
-                        "format": "int64",
-                        "type": "string"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -1836,10 +3313,46 @@
             },
             "type": "object"
         },
+        "ListCreativeStatusBreakdownByCreativeResponse": {
+            "description": "Response message for listing all creatives associated with a given filtered\nbid reason.",
+            "id": "ListCreativeStatusBreakdownByCreativeResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListCreativeStatusBreakdownByCreativeRequest.pageToken\nfield in the subsequent call to the filteredBids.creatives.list\nmethod to retrieve the next page of results.",
+                    "type": "string"
+                },
+                "filteredBidCreativeRows": {
+                    "description": "List of rows, with counts of bids with a given creative status aggregated\nby creative.",
+                    "items": {
+                        "$ref": "FilteredBidCreativeRow"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "Client": {
             "description": "A client resource represents a client buyer&mdash;an agency,\na brand, or an advertiser customer of the sponsor buyer.\nUsers associated with the client buyer have restricted access to\nthe Ad Exchange Marketplace and certain other sections\nof the Ad Exchange Buyer UI based on the role\ngranted to the client buyer.\nAll fields are required unless otherwise specified.",
             "id": "Client",
             "properties": {
+                "entityName": {
+                    "description": "The name of the entity. This field is automatically fetched based on\nthe type and ID.\nThe value of this field is ignored in create and update operations.",
+                    "type": "string"
+                },
+                "status": {
+                    "description": "The status of the client buyer.",
+                    "enum": [
+                        "CLIENT_STATUS_UNSPECIFIED",
+                        "DISABLED",
+                        "ACTIVE"
+                    ],
+                    "enumDescriptions": [
+                        "A placeholder for an undefined client status.",
+                        "A client that is currently disabled.",
+                        "A client that is currently active."
+                    ],
+                    "type": "string"
+                },
                 "entityType": {
                     "description": "The type of the client entity: `ADVERTISER`, `BRAND`, or `AGENCY`.",
                     "enum": [
@@ -1889,42 +3402,6 @@
                     "description": "The globally-unique numerical ID of the client.\nThe value of this field is ignored in create and update operations.",
                     "format": "int64",
                     "type": "string"
-                },
-                "entityName": {
-                    "description": "The name of the entity. This field is automatically fetched based on\nthe type and ID.\nThe value of this field is ignored in create and update operations.",
-                    "type": "string"
-                },
-                "status": {
-                    "description": "The status of the client buyer.",
-                    "enum": [
-                        "CLIENT_STATUS_UNSPECIFIED",
-                        "DISABLED",
-                        "ACTIVE"
-                    ],
-                    "enumDescriptions": [
-                        "A placeholder for an undefined client status.",
-                        "A client that is currently disabled.",
-                        "A client that is currently active."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListCreativeStatusBreakdownByCreativeResponse": {
-            "description": "Response message for listing all creatives associated with a given filtered\nbid reason.",
-            "id": "ListCreativeStatusBreakdownByCreativeResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListCreativeStatusBreakdownByCreativeRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.filteredBids.creatives.list\nmethod to retrieve the next page of results.",
-                    "type": "string"
-                },
-                "filteredBidCreativeRows": {
-                    "description": "List of rows, with counts of bids with a given creative status aggregated\nby creative.",
-                    "items": {
-                        "$ref": "FilteredBidCreativeRow"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -1933,13 +3410,6 @@
             "description": "@OutputOnly Shows any corrections that were applied to this creative.",
             "id": "Correction",
             "properties": {
-                "contexts": {
-                    "description": "The contexts for the correction.",
-                    "items": {
-                        "$ref": "ServingContext"
-                    },
-                    "type": "array"
-                },
                 "details": {
                     "description": "Additional details about what was corrected.",
                     "items": {
@@ -1978,6 +3448,13 @@
                         "The ad contains video content."
                     ],
                     "type": "string"
+                },
+                "contexts": {
+                    "description": "The contexts for the correction.",
+                    "items": {
+                        "$ref": "ServingContext"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -1986,8 +3463,47 @@
             "description": "A set of filters that is applied to a request for data.\nWithin a filter set, an AND operation is performed across the filters\nrepresented by each field. An OR operation is performed across the filters\nrepresented by the multiple values of a repeated field. E.g.\n\"format=VIDEO AND deal_id=12 AND (seller_network_id=34 OR\nseller_network_id=56)\"",
             "id": "FilterSet",
             "properties": {
-                "buyerAccountId": {
-                    "description": "The ID of the buyer account on which to filter; optional.",
+                "creativeId": {
+                    "description": "The ID of the creative on which to filter; optional.",
+                    "type": "string"
+                },
+                "platforms": {
+                    "description": "The list of platforms on which to filter; may be empty. The filters\nrepresented by multiple platforms are ORed together (i.e. if non-empty,\nresults must match any one of the platforms).",
+                    "enumDescriptions": [
+                        "A placeholder for an undefined platform; indicates that no platform\nfilter will be applied.",
+                        "The ad impression appears on a desktop.",
+                        "The ad impression appears on a tablet.",
+                        "The ad impression appears on a mobile device."
+                    ],
+                    "items": {
+                        "enum": [
+                            "PLATFORM_UNSPECIFIED",
+                            "DESKTOP",
+                            "TABLET",
+                            "MOBILE"
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "relativeDateRange": {
+                    "$ref": "RelativeDateRange",
+                    "description": "A relative date range, defined by an offset from today and a duration.\nInterpreted relative to Pacific time zone."
+                },
+                "name": {
+                    "description": "A user-defined name of the filter set. Filter set names must be unique\nglobally and match one of the patterns:\n\n- `bidders/*/filterSets/*` (for accessing bidder-level troubleshooting\ndata)\n- `bidders/*/accounts/*/filterSets/*` (for accessing buyer-level\ntroubleshooting data)",
+                    "type": "string"
+                },
+                "sellerNetworkIds": {
+                    "description": "The list of IDs of the seller (publisher) networks on which to filter;\nmay be empty. The filters represented by multiple seller network IDs are\nORed together (i.e. if non-empty, results must match any one of the\npublisher networks).\nSee [seller-network-ids](https://developers.google.com/ad-exchange/rtb/downloads/seller-network-ids)\nfile for the set of existing seller network IDs.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                },
+                "ownerAccountId": {
+                    "description": "The account ID of the buyer who owns this filter set.\nThe value of this field is ignored in create operations.",
                     "format": "int64",
                     "type": "string"
                 },
@@ -1995,6 +3511,11 @@
                     "$ref": "AbsoluteDateRange",
                     "description": "An absolute date range, defined by a start date and an end date.\nInterpreted relative to Pacific time zone."
                 },
+                "buyerAccountId": {
+                    "description": "The ID of the buyer account on which to filter; optional.",
+                    "format": "int64",
+                    "type": "string"
+                },
                 "environment": {
                     "description": "The environment on which to filter; optional.",
                     "enum": [
@@ -2050,66 +3571,6 @@
                 "realtimeTimeRange": {
                     "$ref": "RealtimeTimeRange",
                     "description": "An open-ended realtime time range, defined by the aggregation start\ntimestamp."
-                },
-                "creativeId": {
-                    "description": "The ID of the creative on which to filter; optional.",
-                    "type": "string"
-                },
-                "platforms": {
-                    "description": "The list of platforms on which to filter; may be empty. The filters\nrepresented by multiple platforms are ORed together (i.e. if non-empty,\nresults must match any one of the platforms).",
-                    "enumDescriptions": [
-                        "A placeholder for an undefined platform; indicates that no platform\nfilter will be applied.",
-                        "The ad impression appears on a desktop.",
-                        "The ad impression appears on a tablet.",
-                        "The ad impression appears on a mobile device."
-                    ],
-                    "items": {
-                        "enum": [
-                            "PLATFORM_UNSPECIFIED",
-                            "DESKTOP",
-                            "TABLET",
-                            "MOBILE"
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "relativeDateRange": {
-                    "$ref": "RelativeDateRange",
-                    "description": "A relative date range, defined by an offset from today and a duration.\nInterpreted relative to Pacific time zone."
-                },
-                "sellerNetworkIds": {
-                    "description": "The list of IDs of the seller (publisher) networks on which to filter;\nmay be empty. The filters represented by multiple seller network IDs are\nORed together (i.e. if non-empty, results must match any one of the\npublisher networks).\nSee [seller-network-ids](https://developers.google.com/ad-exchange/rtb/downloads/seller-network-ids)\nfile for the set of existing seller network IDs.",
-                    "items": {
-                        "format": "int32",
-                        "type": "integer"
-                    },
-                    "type": "array"
-                },
-                "ownerAccountId": {
-                    "description": "The account ID of the buyer who owns this filter set.\nThe value of this field is ignored in create operations.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CalloutStatusRow": {
-            "description": "The number of impressions with the specified dimension values where the\ncorresponding bid request or bid response was not successful, as described by\nthe specified callout status.",
-            "id": "CalloutStatusRow",
-            "properties": {
-                "rowDimensions": {
-                    "$ref": "RowDimensions",
-                    "description": "The values of all dimensions associated with metric values in this row."
-                },
-                "calloutStatusId": {
-                    "description": "The ID of the callout status.\nSee [callout-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/callout-status-codes).",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "impressionCount": {
-                    "$ref": "MetricValue",
-                    "description": "The number of impressions for which there was a bid request or bid response\nwith the specified callout status."
                 }
             },
             "type": "object"
@@ -2118,24 +3579,38 @@
             "description": "A response for listing creative and deal associations",
             "id": "ListDealAssociationsResponse",
             "properties": {
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListDealAssociationsRequest.page_token\nfield in the subsequent call to 'ListDealAssociation' method to retrieve\nthe next page of results.",
+                    "type": "string"
+                },
                 "associations": {
                     "description": "The list of associations.",
                     "items": {
                         "$ref": "CreativeDealAssociation"
                     },
                     "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListDealAssociationsRequest.page_token\nfield in the subsequent call to 'ListDealAssociation' method to retrieve\nthe next page of results.",
-                    "type": "string"
                 }
             },
             "type": "object"
         },
-        "StopWatchingCreativeRequest": {
-            "description": "A request for stopping notifications for changes to creative Status.",
-            "id": "StopWatchingCreativeRequest",
-            "properties": {},
+        "CalloutStatusRow": {
+            "description": "The number of impressions with the specified dimension values where the\ncorresponding bid request or bid response was not successful, as described by\nthe specified callout status.",
+            "id": "CalloutStatusRow",
+            "properties": {
+                "impressionCount": {
+                    "$ref": "MetricValue",
+                    "description": "The number of impressions for which there was a bid request or bid response\nwith the specified callout status."
+                },
+                "rowDimensions": {
+                    "$ref": "RowDimensions",
+                    "description": "The values of all dimensions associated with metric values in this row."
+                },
+                "calloutStatusId": {
+                    "description": "The ID of the callout status.\nSee [callout-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/callout-status-codes).",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
             "type": "object"
         },
         "Disapproval": {
@@ -2348,17 +3823,16 @@
             },
             "type": "object"
         },
+        "StopWatchingCreativeRequest": {
+            "description": "A request for stopping notifications for changes to creative Status.",
+            "id": "StopWatchingCreativeRequest",
+            "properties": {},
+            "type": "object"
+        },
         "ServingRestriction": {
             "description": "@OutputOnly A representation of the status of an ad in a\nspecific context. A context here relates to where something ultimately serves\n(for example, a user or publisher geo, a platform, an HTTPS vs HTTP request,\nor the type of auction).",
             "id": "ServingRestriction",
             "properties": {
-                "disapprovalReasons": {
-                    "description": "Any disapprovals bound to this restriction.\nOnly present if status=DISAPPROVED.\nCan be used to filter the response of the\ncreatives.list\nmethod.",
-                    "items": {
-                        "$ref": "Disapproval"
-                    },
-                    "type": "array"
-                },
                 "contexts": {
                     "description": "The contexts for the restriction.",
                     "items": {
@@ -2379,6 +3853,13 @@
                         "The ad is pending review in this context."
                     ],
                     "type": "string"
+                },
+                "disapprovalReasons": {
+                    "description": "Any disapprovals bound to this restriction.\nOnly present if status=DISAPPROVED.\nCan be used to filter the response of the\ncreatives.list\nmethod.",
+                    "items": {
+                        "$ref": "Disapproval"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -2448,16 +3929,16 @@
             "description": "Response message for listing all reasons that bids were filtered from the\nauction.",
             "id": "ListFilteredBidsResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListFilteredBidsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.filteredBids.list\nmethod to retrieve the next page of results.",
-                    "type": "string"
-                },
                 "creativeStatusRows": {
                     "description": "List of rows, with counts of filtered bids aggregated by filtering reason\n(i.e. creative status).",
                     "items": {
                         "$ref": "CreativeStatusRow"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListFilteredBidsRequest.pageToken\nfield in the subsequent call to the filteredBids.list\nmethod to retrieve the next page of results.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2484,23 +3965,20 @@
             },
             "type": "object"
         },
-        "HtmlContent": {
-            "description": "HTML content for a creative.",
-            "id": "HtmlContent",
+        "ListFilteredBidRequestsResponse": {
+            "description": "Response message for listing all reasons that bid requests were filtered and\nnot sent to the buyer.",
+            "id": "ListFilteredBidRequestsResponse",
             "properties": {
-                "width": {
-                    "description": "The width of the HTML snippet in pixels.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "snippet": {
-                    "description": "The HTML snippet that displays the ad when inserted in the web page.",
+                "nextPageToken": {
+                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListFilteredBidRequestsRequest.pageToken\nfield in the subsequent call to the filteredBidRequests.list\nmethod to retrieve the next page of results.",
                     "type": "string"
                 },
-                "height": {
-                    "description": "The height of the HTML snippet in pixels.",
-                    "format": "int32",
-                    "type": "integer"
+                "calloutStatusRows": {
+                    "description": "List of rows, with counts of filtered bid requests aggregated by callout\nstatus.",
+                    "items": {
+                        "$ref": "CalloutStatusRow"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -2523,19 +4001,22 @@
             },
             "type": "object"
         },
-        "ListFilteredBidRequestsResponse": {
-            "description": "Response message for listing all reasons that bid requests were filtered and\nnot sent to the buyer.",
-            "id": "ListFilteredBidRequestsResponse",
+        "HtmlContent": {
+            "description": "HTML content for a creative.",
+            "id": "HtmlContent",
             "properties": {
-                "calloutStatusRows": {
-                    "description": "List of rows, with counts of filtered bid requests aggregated by callout\nstatus.",
-                    "items": {
-                        "$ref": "CalloutStatusRow"
-                    },
-                    "type": "array"
+                "height": {
+                    "description": "The height of the HTML snippet in pixels.",
+                    "format": "int32",
+                    "type": "integer"
                 },
-                "nextPageToken": {
-                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListFilteredBidRequestsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.filteredBidRequests.list\nmethod to retrieve the next page of results.",
+                "width": {
+                    "description": "The width of the HTML snippet in pixels.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "snippet": {
+                    "description": "The HTML snippet that displays the ad when inserted in the web page.",
                     "type": "string"
                 }
             },
@@ -2546,7 +4027,7 @@
             "id": "ListBidMetricsResponse",
             "properties": {
                 "nextPageToken": {
-                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListBidMetricsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.bidMetrics.list\nmethod to retrieve the next page of results.",
+                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListBidMetricsRequest.pageToken\nfield in the subsequent call to the bidMetrics.list\nmethod to retrieve the next page of results.",
                     "type": "string"
                 },
                 "bidMetricsRows": {
@@ -2576,19 +4057,12 @@
             },
             "type": "object"
         },
-        "ListNonBillableWinningBidsResponse": {
-            "description": "Response message for listing all reasons for which a buyer was not billed for\na winning bid.",
-            "id": "ListNonBillableWinningBidsResponse",
+        "VideoContent": {
+            "description": "Video content for a creative.",
+            "id": "VideoContent",
             "properties": {
-                "nonBillableWinningBidStatusRows": {
-                    "description": "List of rows, with counts of bids not billed aggregated by reason.",
-                    "items": {
-                        "$ref": "NonBillableWinningBidStatusRow"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListNonBillableWinningBidsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.nonBillableWinningBids.list\nmethod to retrieve the next page of results.",
+                "videoUrl": {
+                    "description": "The URL to fetch a video ad.",
                     "type": "string"
                 }
             },
@@ -2606,612 +4080,29 @@
                     "type": "array"
                 },
                 "nextPageToken": {
-                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListLosingBidsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.losingBids.list\nmethod to retrieve the next page of results.",
+                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListLosingBidsRequest.pageToken\nfield in the subsequent call to the losingBids.list\nmethod to retrieve the next page of results.",
                     "type": "string"
                 }
             },
             "type": "object"
         },
-        "VideoContent": {
-            "description": "Video content for a creative.",
-            "id": "VideoContent",
+        "ListNonBillableWinningBidsResponse": {
+            "description": "Response message for listing all reasons for which a buyer was not billed for\na winning bid.",
+            "id": "ListNonBillableWinningBidsResponse",
             "properties": {
-                "videoUrl": {
-                    "description": "The URL to fetch a video ad.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ImpressionMetricsRow": {
-            "description": "The set of metrics that are measured in numbers of impressions, representing\nhow many impressions with the specified dimension values were considered\neligible at each stage of the bidding funnel.",
-            "id": "ImpressionMetricsRow",
-            "properties": {
-                "responsesWithBids": {
-                    "$ref": "MetricValue",
-                    "description": "The number of impressions for which Ad Exchange received a response from\nthe buyer that contained at least one applicable bid."
-                },
-                "successfulResponses": {
-                    "$ref": "MetricValue",
-                    "description": "The number of impressions for which the buyer successfully sent a response\nto Ad Exchange."
-                },
-                "rowDimensions": {
-                    "$ref": "RowDimensions",
-                    "description": "The values of all dimensions associated with metric values in this row."
-                },
-                "availableImpressions": {
-                    "$ref": "MetricValue",
-                    "description": "The number of impressions available to the buyer on Ad Exchange.\nIn some cases this value may be unavailable."
-                },
-                "bidRequests": {
-                    "$ref": "MetricValue",
-                    "description": "The number of impressions for which Ad Exchange sent the buyer a bid\nrequest."
-                },
-                "inventoryMatches": {
-                    "$ref": "MetricValue",
-                    "description": "The number of impressions that match the buyer's inventory pretargeting."
-                }
-            },
-            "type": "object"
-        },
-        "AuctionContext": {
-            "description": "@OutputOnly The auction type the restriction applies to.",
-            "id": "AuctionContext",
-            "properties": {
-                "auctionTypes": {
-                    "description": "The auction types this restriction applies to.",
-                    "enumDescriptions": [
-                        "The restriction applies to open auction.",
-                        "The restriction applies to direct deals."
-                    ],
+                "nonBillableWinningBidStatusRows": {
+                    "description": "List of rows, with counts of bids not billed aggregated by reason.",
                     "items": {
-                        "enum": [
-                            "OPEN_AUCTION",
-                            "DIRECT_DEALS"
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ListImpressionMetricsResponse": {
-            "description": "Response message for listing the metrics that are measured in number of\nimpressions.",
-            "id": "ListImpressionMetricsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListImpressionMetricsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.impressionMetrics.list\nmethod to retrieve the next page of results.",
-                    "type": "string"
-                },
-                "impressionMetricsRows": {
-                    "description": "List of rows, each containing a set of impression metrics.",
-                    "items": {
-                        "$ref": "ImpressionMetricsRow"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "BidMetricsRow": {
-            "description": "The set of metrics that are measured in numbers of bids, representing how\nmany bids with the specified dimension values were considered eligible at\neach stage of the bidding funnel;",
-            "id": "BidMetricsRow",
-            "properties": {
-                "bidsInAuction": {
-                    "$ref": "MetricValue",
-                    "description": "The number of bids that were permitted to compete in the auction."
-                },
-                "rowDimensions": {
-                    "$ref": "RowDimensions",
-                    "description": "The values of all dimensions associated with metric values in this row."
-                },
-                "viewableImpressions": {
-                    "$ref": "MetricValue",
-                    "description": "The number of bids for which the corresponding impression was viewable (as\ndefined by Active View)."
-                },
-                "impressionsWon": {
-                    "$ref": "MetricValue",
-                    "description": "The number of bids that won an impression."
-                },
-                "measurableImpressions": {
-                    "$ref": "MetricValue",
-                    "description": "The number of bids for which the corresponding impression was measurable\nfor viewability (as defined by Active View)."
-                },
-                "bids": {
-                    "$ref": "MetricValue",
-                    "description": "The number of bids that Ad Exchange received from the buyer."
-                },
-                "billedImpressions": {
-                    "$ref": "MetricValue",
-                    "description": "The number of bids for which the buyer was billed."
-                }
-            },
-            "type": "object"
-        },
-        "ListBidResponseErrorsResponse": {
-            "description": "Response message for listing all reasons that bid responses resulted in an\nerror.",
-            "id": "ListBidResponseErrorsResponse",
-            "properties": {
-                "calloutStatusRows": {
-                    "description": "List of rows, with counts of bid responses aggregated by callout status.",
-                    "items": {
-                        "$ref": "CalloutStatusRow"
+                        "$ref": "NonBillableWinningBidStatusRow"
                     },
                     "type": "array"
                 },
                 "nextPageToken": {
-                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListBidResponseErrorsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.bidResponseErrors.list\nmethod to retrieve the next page of results.",
+                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListNonBillableWinningBidsRequest.pageToken\nfield in the subsequent call to the nonBillableWinningBids.list\nmethod to retrieve the next page of results.",
                     "type": "string"
                 }
             },
             "type": "object"
-        },
-        "CreativeStatusRow": {
-            "description": "The number of bids with the specified dimension values that did not win the\nauction (either were filtered pre-auction or lost the auction), as described\nby the specified creative status.",
-            "id": "CreativeStatusRow",
-            "properties": {
-                "rowDimensions": {
-                    "$ref": "RowDimensions",
-                    "description": "The values of all dimensions associated with metric values in this row."
-                },
-                "creativeStatusId": {
-                    "description": "The ID of the creative status.\nSee [creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "bidCount": {
-                    "$ref": "MetricValue",
-                    "description": "The number of bids with the specified status."
-                }
-            },
-            "type": "object"
-        },
-        "RealtimeTimeRange": {
-            "description": "An open-ended realtime time range specified by the start timestamp.\nFor filter sets that specify a realtime time range RTB metrics continue to\nbe aggregated throughout the lifetime of the filter set.",
-            "id": "RealtimeTimeRange",
-            "properties": {
-                "startTimestamp": {
-                    "description": "The start timestamp of the real-time RTB metrics aggregation.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "NonBillableWinningBidStatusRow": {
-            "description": "The number of winning bids with the specified dimension values for which the\nbuyer was not billed, as described by the specified status.",
-            "id": "NonBillableWinningBidStatusRow",
-            "properties": {
-                "status": {
-                    "description": "The status specifying why the winning bids were not billed.",
-                    "enum": [
-                        "STATUS_UNSPECIFIED",
-                        "AD_NOT_RENDERED",
-                        "INVALID_IMPRESSION"
-                    ],
-                    "enumDescriptions": [
-                        "A placeholder for an undefined status.\nThis value will never be returned in responses.",
-                        "The buyer was not billed because the ad was not rendered by the\npublisher.",
-                        "The buyer was not billed because the impression won by the bid was\ndetermined to be invalid."
-                    ],
-                    "type": "string"
-                },
-                "rowDimensions": {
-                    "$ref": "RowDimensions",
-                    "description": "The values of all dimensions associated with metric values in this row."
-                },
-                "bidCount": {
-                    "$ref": "MetricValue",
-                    "description": "The number of bids with the specified status."
-                }
-            },
-            "type": "object"
-        },
-        "FilteredBidDetailRow": {
-            "description": "The number of filtered bids with the specified dimension values, among those\nfiltered due to the requested filtering reason (i.e. creative status), that\nhave the specified detail.",
-            "id": "FilteredBidDetailRow",
-            "properties": {
-                "rowDimensions": {
-                    "$ref": "RowDimensions",
-                    "description": "The values of all dimensions associated with metric values in this row."
-                },
-                "detailId": {
-                    "description": "The ID of the detail. The associated value can be looked up in the\ndictionary file corresponding to the DetailType in the response message.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "bidCount": {
-                    "$ref": "MetricValue",
-                    "description": "The number of bids with the specified detail."
-                }
-            },
-            "type": "object"
-        },
-        "AbsoluteDateRange": {
-            "description": "An absolute date range, specified by its start date and end date.\nThe supported range of dates begins 30 days before today and ends today.\nValidity checked upon filter set creation. If a filter set with an absolute\ndate range is run at a later date more than 30 days after start_date, it will\nfail.",
-            "id": "AbsoluteDateRange",
-            "properties": {
-                "startDate": {
-                    "$ref": "Date",
-                    "description": "The start date of the range (inclusive).\nMust be within the 30 days leading up to current date, and must be equal to\nor before end_date."
-                },
-                "endDate": {
-                    "$ref": "Date",
-                    "description": "The end date of the range (inclusive).\nMust be within the 30 days leading up to current date, and must be equal to\nor after start_date."
-                }
-            },
-            "type": "object"
-        },
-        "AddDealAssociationRequest": {
-            "description": "A request for associating a deal and a creative.",
-            "id": "AddDealAssociationRequest",
-            "properties": {
-                "association": {
-                    "$ref": "CreativeDealAssociation",
-                    "description": "The association between a creative and a deal that should be added."
-                }
-            },
-            "type": "object"
-        },
-        "WatchCreativeRequest": {
-            "description": "A request for watching changes to creative Status.",
-            "id": "WatchCreativeRequest",
-            "properties": {
-                "topic": {
-                    "description": "The Pub/Sub topic to publish notifications to.\nThis topic must already exist and must give permission to\nad-exchange-buyside-reports@google.com to write to the topic.\nThis should be the full resource name in\n\"projects/{project_id}/topics/{topic_id}\" format.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TimeInterval": {
-            "description": "An interval of time, with an absolute start and end.",
-            "id": "TimeInterval",
-            "properties": {
-                "endTime": {
-                    "description": "The timestamp marking the end of the range (exclusive) for which data is\nincluded.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "The timestamp marking the start of the range (inclusive) for which data is\nincluded.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "FilteredBidCreativeRow": {
-            "description": "The number of filtered bids with the specified dimension values that have the\nspecified creative.",
-            "id": "FilteredBidCreativeRow",
-            "properties": {
-                "rowDimensions": {
-                    "$ref": "RowDimensions",
-                    "description": "The values of all dimensions associated with metric values in this row."
-                },
-                "bidCount": {
-                    "$ref": "MetricValue",
-                    "description": "The number of bids with the specified creative."
-                },
-                "creativeId": {
-                    "description": "The ID of the creative.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "RelativeDateRange": {
-            "description": "A relative date range, specified by an offset and a duration.\nThe supported range of dates begins 30 days before today and ends today.\nI.e. the limits for these values are:\noffset_days >= 0\nduration_days >= 1\noffset_days + duration_days <= 30",
-            "id": "RelativeDateRange",
-            "properties": {
-                "durationDays": {
-                    "description": "The number of days in the requested date range. E.g. for a range spanning\ntoday, 1. For a range spanning the last 7 days, 7.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "offsetDays": {
-                    "description": "The end date of the filter set, specified as the number of days before\ntoday. E.g. for a range where the last date is today, 0.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "NativeContent": {
-            "description": "Native content for a creative.",
-            "id": "NativeContent",
-            "properties": {
-                "clickTrackingUrl": {
-                    "description": "The URL to use for click tracking.",
-                    "type": "string"
-                },
-                "image": {
-                    "$ref": "Image",
-                    "description": "A large image."
-                },
-                "advertiserName": {
-                    "description": "The name of the advertiser or sponsor, to be displayed in the ad creative.",
-                    "type": "string"
-                },
-                "storeUrl": {
-                    "description": "The URL to the app store to purchase/download the promoted app.",
-                    "type": "string"
-                },
-                "headline": {
-                    "description": "A short title for the ad.",
-                    "type": "string"
-                },
-                "appIcon": {
-                    "$ref": "Image",
-                    "description": "The app icon, for app download ads."
-                },
-                "callToAction": {
-                    "description": "A label for the button that the user is supposed to click.",
-                    "type": "string"
-                },
-                "body": {
-                    "description": "A long description of the ad.",
-                    "type": "string"
-                },
-                "starRating": {
-                    "description": "The app rating in the app store. Must be in the range [0-5].",
-                    "format": "double",
-                    "type": "number"
-                },
-                "videoUrl": {
-                    "description": "The URL to fetch a native video ad.",
-                    "type": "string"
-                },
-                "clickLinkUrl": {
-                    "description": "The URL that the browser/SDK will load when the user clicks the ad.",
-                    "type": "string"
-                },
-                "logo": {
-                    "$ref": "Image",
-                    "description": "A smaller image, for the advertiser's logo."
-                },
-                "priceDisplayText": {
-                    "description": "The price of the promoted app including currency info.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListClientsResponse": {
-            "id": "ListClientsResponse",
-            "properties": {
-                "clients": {
-                    "description": "The returned list of clients.",
-                    "items": {
-                        "$ref": "Client"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListClientsRequest.pageToken\nfield in the subsequent call to the\naccounts.clients.list method\nto retrieve the next page of results.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListBidResponsesWithoutBidsResponse": {
-            "description": "Response message for listing all reasons that bid responses were considered\nto have no applicable bids.",
-            "id": "ListBidResponsesWithoutBidsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListBidResponsesWithoutBidsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.bidResponsesWithoutBids.list\nmethod to retrieve the next page of results.",
-                    "type": "string"
-                },
-                "bidResponseWithoutBidsStatusRows": {
-                    "description": "List of rows, with counts of bid responses without bids aggregated by\nstatus.",
-                    "items": {
-                        "$ref": "BidResponseWithoutBidsStatusRow"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ServingContext": {
-            "description": "The serving context for this restriction.",
-            "id": "ServingContext",
-            "properties": {
-                "location": {
-                    "$ref": "LocationContext",
-                    "description": "Matches impressions coming from users *or* publishers in a specific\nlocation."
-                },
-                "auctionType": {
-                    "$ref": "AuctionContext",
-                    "description": "Matches impressions for a particular auction type."
-                },
-                "all": {
-                    "description": "Matches all contexts.",
-                    "enum": [
-                        "SIMPLE_CONTEXT"
-                    ],
-                    "enumDescriptions": [
-                        "A simple context."
-                    ],
-                    "type": "string"
-                },
-                "appType": {
-                    "$ref": "AppContext",
-                    "description": "Matches impressions for a particular app type."
-                },
-                "securityType": {
-                    "$ref": "SecurityContext",
-                    "description": "Matches impressions for a particular security type."
-                },
-                "platform": {
-                    "$ref": "PlatformContext",
-                    "description": "Matches impressions coming from a particular platform."
-                }
-            },
-            "type": "object"
-        },
-        "Image": {
-            "description": "An image resource. You may provide a larger image than was requested,\nso long as the aspect ratio is preserved.",
-            "id": "Image",
-            "properties": {
-                "width": {
-                    "description": "Image width in pixels.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "url": {
-                    "description": "The URL of the image.",
-                    "type": "string"
-                },
-                "height": {
-                    "description": "Image height in pixels.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "ListFilterSetsResponse": {
-            "description": "Response message for listing filter sets.",
-            "id": "ListFilterSetsResponse",
-            "properties": {
-                "filterSets": {
-                    "description": "The filter sets belonging to the buyer.",
-                    "items": {
-                        "$ref": "FilterSet"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListFilterSetsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.list\nmethod to retrieve the next page of results.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "BidResponseWithoutBidsStatusRow": {
-            "description": "The number of impressions with the specified dimension values that were\nconsidered to have no applicable bids, as described by the specified status.",
-            "id": "BidResponseWithoutBidsStatusRow",
-            "properties": {
-                "impressionCount": {
-                    "$ref": "MetricValue",
-                    "description": "The number of impressions for which there was a bid response with the\nspecified status."
-                },
-                "status": {
-                    "description": "The status specifying why the bid responses were considered to have no\napplicable bids.",
-                    "enum": [
-                        "STATUS_UNSPECIFIED",
-                        "RESPONSES_WITHOUT_BIDS",
-                        "RESPONSES_WITHOUT_BIDS_FOR_ACCOUNT",
-                        "RESPONSES_WITHOUT_BIDS_FOR_DEAL"
-                    ],
-                    "enumDescriptions": [
-                        "A placeholder for an undefined status.\nThis value will never be returned in responses.",
-                        "The response had no bids.",
-                        "The response had no bids for the specified account, though it may have\nincluded bids on behalf of other accounts.",
-                        "The response had no bids for the specified deal, though it may have\nincluded bids on other deals on behalf of the account to which the deal\nbelongs."
-                    ],
-                    "type": "string"
-                },
-                "rowDimensions": {
-                    "$ref": "RowDimensions",
-                    "description": "The values of all dimensions associated with metric values in this row."
-                }
-            },
-            "type": "object"
-        },
-        "ClientUserInvitation": {
-            "description": "An invitation for a new client user to get access to the Ad Exchange\nBuyer UI.\nAll fields are required unless otherwise specified.",
-            "id": "ClientUserInvitation",
-            "properties": {
-                "email": {
-                    "description": "The email address to which the invitation is sent. Email\naddresses should be unique among all client users under each sponsor\nbuyer.",
-                    "type": "string"
-                },
-                "clientAccountId": {
-                    "description": "Numerical account ID of the client buyer\nthat the invited user is associated with.\nThe value of this field is ignored in create operations.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "invitationId": {
-                    "description": "The unique numerical ID of the invitation that is sent to the user.\nThe value of this field is ignored in create operations.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListCreativeStatusBreakdownByDetailResponse": {
-            "description": "Response message for listing all details associated with a given filtered bid\nreason.",
-            "id": "ListCreativeStatusBreakdownByDetailResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListCreativeStatusBreakdownByDetailRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.filteredBids.details.list\nmethod to retrieve the next page of results.",
-                    "type": "string"
-                },
-                "filteredBidDetailRows": {
-                    "description": "List of rows, with counts of bids with a given creative status aggregated\nby detail.",
-                    "items": {
-                        "$ref": "FilteredBidDetailRow"
-                    },
-                    "type": "array"
-                },
-                "detailType": {
-                    "description": "The type of detail that the detail IDs represent.",
-                    "enum": [
-                        "DETAIL_TYPE_UNSPECIFIED",
-                        "CREATIVE_ATTRIBUTE",
-                        "VENDOR",
-                        "SENSITIVE_CATEGORY",
-                        "PRODUCT_CATEGORY",
-                        "DISAPPROVAL_REASON"
-                    ],
-                    "enumDescriptions": [
-                        "A placeholder for an undefined status.\nThis value will never be returned in responses.",
-                        "Indicates that the detail ID refers to a creative attribute; see\n[publisher-excludable-creative-attributes](https://developers.google.com/ad-exchange/rtb/downloads/publisher-excludable-creative-attributes).",
-                        "Indicates that the detail ID refers to a vendor; see\n[vendors](https://developers.google.com/ad-exchange/rtb/downloads/vendors).",
-                        "Indicates that the detail ID refers to a sensitive category; see\n[ad-sensitive-categories](https://developers.google.com/ad-exchange/rtb/downloads/ad-sensitive-categories).",
-                        "Indicates that the detail ID refers to a product category; see\n[ad-product-categories](https://developers.google.com/ad-exchange/rtb/downloads/ad-product-categories).",
-                        "Indicates that the detail ID refers to a disapproval reason; see\nDisapprovalReason enum in [snippet-status-report-proto](https://developers.google.com/ad-exchange/rtb/downloads/snippet-status-report-proto)."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListClientUsersResponse": {
-            "id": "ListClientUsersResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListClientUsersRequest.pageToken\nfield in the subsequent call to the\nclients.invitations.list\nmethod to retrieve the next\npage of results.",
-                    "type": "string"
-                },
-                "users": {
-                    "description": "The returned list of client users.",
-                    "items": {
-                        "$ref": "ClientUser"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ListClientUserInvitationsResponse": {
-            "id": "ListClientUserInvitationsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "A token to retrieve the next page of results.\nPass this value in the\nListClientUserInvitationsRequest.pageToken\nfield in the subsequent call to the\nclients.invitations.list\nmethod to retrieve the next\npage of results.",
-                    "type": "string"
-                },
-                "invitations": {
-                    "description": "The returned list of client users.",
-                    "items": {
-                        "$ref": "ClientUserInvitation"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis_beta/appengine__v1beta.json b/discovery/googleapis_beta/appengine__v1beta.json
index 07c9045..7bc6741 100644
--- a/discovery/googleapis_beta/appengine__v1beta.json
+++ b/discovery/googleapis_beta/appengine__v1beta.json
@@ -2,14 +2,14 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/cloud-platform": {
-                    "description": "View and manage your data across Google Cloud Platform services"
-                },
                 "https://www.googleapis.com/auth/appengine.admin": {
                     "description": "View and manage your applications deployed on Google App Engine"
                 },
                 "https://www.googleapis.com/auth/cloud-platform.read-only": {
                     "description": "View your data across Google Cloud Platform services"
+                },
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "View and manage your data across Google Cloud Platform services"
                 }
             }
         }
@@ -46,13 +46,13 @@
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
@@ -88,18 +88,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
-            "location": "query",
-            "type": "string"
-        },
         "uploadType": {
             "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
@@ -115,12 +110,42 @@
             ],
             "location": "query",
             "type": "string"
+        },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
         "apps": {
             "methods": {
+                "get": {
+                    "description": "Gets information about an application.",
+                    "httpMethod": "GET",
+                    "id": "appengine.apps.get",
+                    "parameterOrder": [
+                        "appsId"
+                    ],
+                    "parameters": {
+                        "appsId": {
+                            "description": "Part of `name`. Name of the Application resource to get. Example: apps/myapp.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta/apps/{appsId}",
+                    "response": {
+                        "$ref": "Application"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/appengine.admin",
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
+                },
                 "patch": {
                     "description": "Updates the specified Application resource. You can update the following fields:\nauth_domain - Google authentication domain for controlling user access to the application.\ndefault_cookie_expiration - Cookie expiration policy for the application.",
                     "httpMethod": "PATCH",
@@ -153,31 +178,6 @@
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
                 },
-                "get": {
-                    "description": "Gets information about an application.",
-                    "httpMethod": "GET",
-                    "id": "appengine.apps.get",
-                    "parameterOrder": [
-                        "appsId"
-                    ],
-                    "parameters": {
-                        "appsId": {
-                            "description": "Part of `name`. Name of the Application resource to get. Example: apps/myapp.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta/apps/{appsId}",
-                    "response": {
-                        "$ref": "Application"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/appengine.admin",
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
                 "create": {
                     "description": "Creates an App Engine application for a Google Cloud Platform project. Required fields:\nid - The ID of the target Cloud Platform project.\nlocation - The region (https://cloud.google.com/appengine/docs/locations) where you want the App Engine application located.For more information about App Engine applications, see Managing Projects, Applications, and Billing (https://cloud.google.com/appengine/docs/python/console/).",
                     "httpMethod": "POST",
@@ -223,8 +223,535 @@
                 }
             },
             "resources": {
+                "authorizedDomains": {
+                    "methods": {
+                        "list": {
+                            "description": "Lists all domains the user is authorized to administer.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.authorizedDomains.list",
+                            "parameterOrder": [
+                                "appsId"
+                            ],
+                            "parameters": {
+                                "appsId": {
+                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Continuation token for fetching the next page of results.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Maximum results to return per page.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v1beta/apps/{appsId}/authorizedDomains",
+                            "response": {
+                                "$ref": "ListAuthorizedDomainsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        }
+                    }
+                },
+                "operations": {
+                    "methods": {
+                        "list": {
+                            "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.operations.list",
+                            "parameterOrder": [
+                                "appsId"
+                            ],
+                            "parameters": {
+                                "appsId": {
+                                    "description": "Part of `name`. The name of the operation's parent resource.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "The standard list page token.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The standard list page size.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filter": {
+                                    "description": "The standard list filter.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta/apps/{appsId}/operations",
+                            "response": {
+                                "$ref": "ListOperationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.operations.get",
+                            "parameterOrder": [
+                                "appsId",
+                                "operationsId"
+                            ],
+                            "parameters": {
+                                "appsId": {
+                                    "description": "Part of `name`. The name of the operation resource.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "operationsId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta/apps/{appsId}/operations/{operationsId}",
+                            "response": {
+                                "$ref": "Operation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        }
+                    }
+                },
+                "domainMappings": {
+                    "methods": {
+                        "delete": {
+                            "description": "Deletes the specified domain mapping. A user must be authorized to administer the associated domain in order to delete a DomainMapping resource.",
+                            "httpMethod": "DELETE",
+                            "id": "appengine.apps.domainMappings.delete",
+                            "parameterOrder": [
+                                "appsId",
+                                "domainMappingsId"
+                            ],
+                            "parameters": {
+                                "domainMappingsId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/domainMappings/example.com.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}",
+                            "response": {
+                                "$ref": "Operation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists the domain mappings on an application.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.domainMappings.list",
+                            "parameterOrder": [
+                                "appsId"
+                            ],
+                            "parameters": {
+                                "appsId": {
+                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Continuation token for fetching the next page of results.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Maximum results to return per page.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v1beta/apps/{appsId}/domainMappings",
+                            "response": {
+                                "$ref": "ListDomainMappingsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets the specified domain mapping.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.domainMappings.get",
+                            "parameterOrder": [
+                                "appsId",
+                                "domainMappingsId"
+                            ],
+                            "parameters": {
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/domainMappings/example.com.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "domainMappingsId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}",
+                            "response": {
+                                "$ref": "DomainMapping"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        },
+                        "patch": {
+                            "description": "Updates the specified domain mapping. To map an SSL certificate to a domain mapping, update certificate_id to point to an AuthorizedCertificate resource. A user must be authorized to administer the associated domain in order to update a DomainMapping resource.",
+                            "httpMethod": "PATCH",
+                            "id": "appengine.apps.domainMappings.patch",
+                            "parameterOrder": [
+                                "appsId",
+                                "domainMappingsId"
+                            ],
+                            "parameters": {
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/domainMappings/example.com.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "domainMappingsId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "updateMask": {
+                                    "description": "Standard field mask for the set of fields to be updated.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}",
+                            "request": {
+                                "$ref": "DomainMapping"
+                            },
+                            "response": {
+                                "$ref": "Operation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "create": {
+                            "description": "Maps a domain to an application. A user must be authorized to administer a domain in order to map it to an application. For a list of available authorized domains, see AuthorizedDomains.ListAuthorizedDomains.",
+                            "httpMethod": "POST",
+                            "id": "appengine.apps.domainMappings.create",
+                            "parameterOrder": [
+                                "appsId"
+                            ],
+                            "parameters": {
+                                "appsId": {
+                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta/apps/{appsId}/domainMappings",
+                            "request": {
+                                "$ref": "DomainMapping"
+                            },
+                            "response": {
+                                "$ref": "Operation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    }
+                },
+                "firewall": {
+                    "resources": {
+                        "ingressRules": {
+                            "methods": {
+                                "list": {
+                                    "description": "Lists the firewall rules of an application.",
+                                    "httpMethod": "GET",
+                                    "id": "appengine.apps.firewall.ingressRules.list",
+                                    "parameterOrder": [
+                                        "appsId"
+                                    ],
+                                    "parameters": {
+                                        "appsId": {
+                                            "description": "Part of `parent`. Name of the Firewall collection to retrieve. Example: apps/myapp/firewall/ingressRules.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "Continuation token for fetching the next page of results.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Maximum results to return per page.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "matchingAddress": {
+                                            "description": "A valid IP Address. If set, only rules matching this address will be returned. The first returned rule will be the rule that fires on requests from this IP.",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta/apps/{appsId}/firewall/ingressRules",
+                                    "response": {
+                                        "$ref": "ListIngressRulesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/appengine.admin",
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                    ]
+                                },
+                                "create": {
+                                    "description": "Creates a firewall rule for the application.",
+                                    "httpMethod": "POST",
+                                    "id": "appengine.apps.firewall.ingressRules.create",
+                                    "parameterOrder": [
+                                        "appsId"
+                                    ],
+                                    "parameters": {
+                                        "appsId": {
+                                            "description": "Part of `parent`. Name of the parent Firewall collection in which to create a new rule. Example: apps/myapp/firewall/ingressRules.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta/apps/{appsId}/firewall/ingressRules",
+                                    "request": {
+                                        "$ref": "FirewallRule"
+                                    },
+                                    "response": {
+                                        "$ref": "FirewallRule"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Gets the specified firewall rule.",
+                                    "httpMethod": "GET",
+                                    "id": "appengine.apps.firewall.ingressRules.get",
+                                    "parameterOrder": [
+                                        "appsId",
+                                        "ingressRulesId"
+                                    ],
+                                    "parameters": {
+                                        "appsId": {
+                                            "description": "Part of `name`. Name of the Firewall resource to retrieve. Example: apps/myapp/firewall/ingressRules/100.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "ingressRulesId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta/apps/{appsId}/firewall/ingressRules/{ingressRulesId}",
+                                    "response": {
+                                        "$ref": "FirewallRule"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/appengine.admin",
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates the specified firewall rule.",
+                                    "httpMethod": "PATCH",
+                                    "id": "appengine.apps.firewall.ingressRules.patch",
+                                    "parameterOrder": [
+                                        "appsId",
+                                        "ingressRulesId"
+                                    ],
+                                    "parameters": {
+                                        "appsId": {
+                                            "description": "Part of `name`. Name of the Firewall resource to update. Example: apps/myapp/firewall/ingressRules/100.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "ingressRulesId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "Standard field mask for the set of fields to be updated.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta/apps/{appsId}/firewall/ingressRules/{ingressRulesId}",
+                                    "request": {
+                                        "$ref": "FirewallRule"
+                                    },
+                                    "response": {
+                                        "$ref": "FirewallRule"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "batchUpdate": {
+                                    "description": "Replaces the entire firewall ruleset in one bulk operation. This overrides and replaces the rules of an existing firewall with the new rules.If the final rule does not match traffic with the '*' wildcard IP range, then an \"allow all\" rule is explicitly added to the end of the list.",
+                                    "httpMethod": "POST",
+                                    "id": "appengine.apps.firewall.ingressRules.batchUpdate",
+                                    "parameterOrder": [
+                                        "appsId"
+                                    ],
+                                    "parameters": {
+                                        "appsId": {
+                                            "description": "Part of `name`. Name of the Firewall collection to set. Example: apps/myapp/firewall/ingressRules.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta/apps/{appsId}/firewall/ingressRules:batchUpdate",
+                                    "request": {
+                                        "$ref": "BatchUpdateIngressRulesRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "BatchUpdateIngressRulesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes the specified firewall rule.",
+                                    "httpMethod": "DELETE",
+                                    "id": "appengine.apps.firewall.ingressRules.delete",
+                                    "parameterOrder": [
+                                        "appsId",
+                                        "ingressRulesId"
+                                    ],
+                                    "parameters": {
+                                        "appsId": {
+                                            "description": "Part of `name`. Name of the Firewall resource to delete. Example: apps/myapp/firewall/ingressRules/100.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "ingressRulesId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta/apps/{appsId}/firewall/ingressRules/{ingressRulesId}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        }
+                    }
+                },
                 "locations": {
                     "methods": {
+                        "list": {
+                            "description": "Lists information about the supported locations for this service.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.locations.list",
+                            "parameterOrder": [
+                                "appsId"
+                            ],
+                            "parameters": {
+                                "filter": {
+                                    "description": "The standard list filter.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "appsId": {
+                                    "description": "Part of `name`. The resource that owns the locations collection, if applicable.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "The standard list page token.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The standard list page size.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v1beta/apps/{appsId}/locations",
+                            "response": {
+                                "$ref": "ListLocationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        },
                         "get": {
                             "description": "Get information about a location.",
                             "httpMethod": "GET",
@@ -256,47 +783,6 @@
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/cloud-platform.read-only"
                             ]
-                        },
-                        "list": {
-                            "description": "Lists information about the supported locations for this service.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.locations.list",
-                            "parameterOrder": [
-                                "appsId"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "The standard list page token.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `name`. The resource that owns the locations collection, if applicable.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "The standard list page size.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "filter": {
-                                    "description": "The standard list filter.",
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta/apps/{appsId}/locations",
-                            "response": {
-                                "$ref": "ListLocationsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
                         }
                     }
                 },
@@ -311,14 +797,14 @@
                                 "authorizedCertificatesId"
                             ],
                             "parameters": {
-                                "authorizedCertificatesId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/authorizedCertificates/12345.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
                                 },
-                                "appsId": {
-                                    "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/authorizedCertificates/12345.",
+                                "authorizedCertificatesId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
@@ -332,86 +818,6 @@
                                 "https://www.googleapis.com/auth/cloud-platform"
                             ]
                         },
-                        "patch": {
-                            "description": "Updates the specified SSL certificate. To renew a certificate and maintain its existing domain mappings, update certificate_data with a new certificate. The new certificate must be applicable to the same domains as the original certificate. The certificate display_name may also be updated.",
-                            "httpMethod": "PATCH",
-                            "id": "appengine.apps.authorizedCertificates.patch",
-                            "parameterOrder": [
-                                "appsId",
-                                "authorizedCertificatesId"
-                            ],
-                            "parameters": {
-                                "appsId": {
-                                    "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/authorizedCertificates/12345.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "authorizedCertificatesId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "updateMask": {
-                                    "description": "Standard field mask for the set of fields to be updated. Updates are only supported on the certificate_raw_data and display_name fields.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}",
-                            "request": {
-                                "$ref": "AuthorizedCertificate"
-                            },
-                            "response": {
-                                "$ref": "AuthorizedCertificate"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets the specified SSL certificate.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.authorizedCertificates.get",
-                            "parameterOrder": [
-                                "appsId",
-                                "authorizedCertificatesId"
-                            ],
-                            "parameters": {
-                                "view": {
-                                    "description": "Controls the set of fields returned in the GET response.",
-                                    "enum": [
-                                        "BASIC_CERTIFICATE",
-                                        "FULL_CERTIFICATE"
-                                    ],
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "authorizedCertificatesId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/authorizedCertificates/12345.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}",
-                            "response": {
-                                "$ref": "AuthorizedCertificate"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        },
                         "list": {
                             "description": "Lists all SSL certificates the user is authorized to administer.",
                             "httpMethod": "GET",
@@ -420,6 +826,17 @@
                                 "appsId"
                             ],
                             "parameters": {
+                                "appsId": {
+                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Continuation token for fetching the next page of results.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "pageSize": {
                                     "description": "Maximum results to return per page.",
                                     "format": "int32",
@@ -434,17 +851,6 @@
                                     ],
                                     "location": "query",
                                     "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "Continuation token for fetching the next page of results.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
                                 }
                             },
                             "path": "v1beta/apps/{appsId}/authorizedCertificates",
@@ -457,6 +863,86 @@
                                 "https://www.googleapis.com/auth/cloud-platform.read-only"
                             ]
                         },
+                        "get": {
+                            "description": "Gets the specified SSL certificate.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.authorizedCertificates.get",
+                            "parameterOrder": [
+                                "appsId",
+                                "authorizedCertificatesId"
+                            ],
+                            "parameters": {
+                                "authorizedCertificatesId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/authorizedCertificates/12345.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "view": {
+                                    "description": "Controls the set of fields returned in the GET response.",
+                                    "enum": [
+                                        "BASIC_CERTIFICATE",
+                                        "FULL_CERTIFICATE"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}",
+                            "response": {
+                                "$ref": "AuthorizedCertificate"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                            ]
+                        },
+                        "patch": {
+                            "description": "Updates the specified SSL certificate. To renew a certificate and maintain its existing domain mappings, update certificate_data with a new certificate. The new certificate must be applicable to the same domains as the original certificate. The certificate display_name may also be updated.",
+                            "httpMethod": "PATCH",
+                            "id": "appengine.apps.authorizedCertificates.patch",
+                            "parameterOrder": [
+                                "appsId",
+                                "authorizedCertificatesId"
+                            ],
+                            "parameters": {
+                                "authorizedCertificatesId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "updateMask": {
+                                    "description": "Standard field mask for the set of fields to be updated. Updates are only supported on the certificate_raw_data and display_name fields.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/authorizedCertificates/12345.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}",
+                            "request": {
+                                "$ref": "AuthorizedCertificate"
+                            },
+                            "response": {
+                                "$ref": "AuthorizedCertificate"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
                         "create": {
                             "description": "Uploads the specified SSL certificate.",
                             "httpMethod": "POST",
@@ -517,48 +1003,40 @@
                                 "https://www.googleapis.com/auth/cloud-platform"
                             ]
                         },
-                        "patch": {
-                            "description": "Updates the configuration of the specified service.",
-                            "httpMethod": "PATCH",
-                            "id": "appengine.apps.services.patch",
+                        "list": {
+                            "description": "Lists all the services in the application.",
+                            "httpMethod": "GET",
+                            "id": "appengine.apps.services.list",
                             "parameterOrder": [
-                                "appsId",
-                                "servicesId"
+                                "appsId"
                             ],
                             "parameters": {
-                                "updateMask": {
-                                    "description": "Standard field mask for the set of fields to be updated.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "servicesId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
                                 "appsId": {
-                                    "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default.",
+                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
                                 },
-                                "migrateTraffic": {
-                                    "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services#shardby) field in the Service resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see Migrating and Splitting Traffic (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).",
+                                "pageToken": {
+                                    "description": "Continuation token for fetching the next page of results.",
                                     "location": "query",
-                                    "type": "boolean"
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Maximum results to return per page.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
                                 }
                             },
-                            "path": "v1beta/apps/{appsId}/services/{servicesId}",
-                            "request": {
-                                "$ref": "Service"
-                            },
+                            "path": "v1beta/apps/{appsId}/services",
                             "response": {
-                                "$ref": "Operation"
+                                "$ref": "ListServicesResponse"
                             },
                             "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
+                                "https://www.googleapis.com/auth/appengine.admin",
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only"
                             ]
                         },
                         "get": {
@@ -570,14 +1048,14 @@
                                 "servicesId"
                             ],
                             "parameters": {
-                                "servicesId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
                                 },
-                                "appsId": {
-                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.",
+                                "servicesId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
@@ -593,40 +1071,48 @@
                                 "https://www.googleapis.com/auth/cloud-platform.read-only"
                             ]
                         },
-                        "list": {
-                            "description": "Lists all the services in the application.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.services.list",
+                        "patch": {
+                            "description": "Updates the configuration of the specified service.",
+                            "httpMethod": "PATCH",
+                            "id": "appengine.apps.services.patch",
                             "parameterOrder": [
-                                "appsId"
+                                "appsId",
+                                "servicesId"
                             ],
                             "parameters": {
-                                "pageSize": {
-                                    "description": "Maximum results to return per page.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
                                 },
-                                "pageToken": {
-                                    "description": "Continuation token for fetching the next page of results.",
+                                "migrateTraffic": {
+                                    "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services#shardby) field in the Service resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see Migrating and Splitting Traffic (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
+                                "updateMask": {
+                                    "description": "Standard field mask for the set of fields to be updated.",
+                                    "format": "google-fieldmask",
                                     "location": "query",
                                     "type": "string"
                                 },
-                                "appsId": {
-                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
+                                "servicesId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
                                 }
                             },
-                            "path": "v1beta/apps/{appsId}/services",
+                            "path": "v1beta/apps/{appsId}/services/{servicesId}",
+                            "request": {
+                                "$ref": "Service"
+                            },
                             "response": {
-                                "$ref": "ListServicesResponse"
+                                "$ref": "Operation"
                             },
                             "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                "https://www.googleapis.com/auth/cloud-platform"
                             ]
                         }
                     },
@@ -643,12 +1129,6 @@
                                         "versionsId"
                                     ],
                                     "parameters": {
-                                        "appsId": {
-                                            "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
                                         "versionsId": {
                                             "description": "Part of `name`. See documentation of `appsId`.",
                                             "location": "path",
@@ -660,6 +1140,12 @@
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
+                                        },
+                                        "appsId": {
+                                            "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
                                         }
                                     },
                                     "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
@@ -670,100 +1156,6 @@
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
                                 },
-                                "patch": {
-                                    "description": "Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses:\nserving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.serving_status):  For Version resources that use basic scaling, manual scaling, or run in  the App Engine flexible environment.\ninstance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.instance_class):  For Version resources that run in the App Engine standard environment.\nautomatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine standard environment.\nautomatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine standard environment.\nautomatic_scaling.min_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.\nautomatic_scaling.max_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.\nautomatic_scaling.cool_down_period_sec (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.\nautomatic_scaling.cpu_utilization.target_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.",
-                                    "httpMethod": "PATCH",
-                                    "id": "appengine.apps.services.versions.patch",
-                                    "parameterOrder": [
-                                        "appsId",
-                                        "servicesId",
-                                        "versionsId"
-                                    ],
-                                    "parameters": {
-                                        "appsId": {
-                                            "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default/versions/1.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "versionsId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "updateMask": {
-                                            "description": "Standard field mask for the set of fields to be updated.",
-                                            "format": "google-fieldmask",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "servicesId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
-                                    "request": {
-                                        "$ref": "Version"
-                                    },
-                                    "response": {
-                                        "$ref": "Operation"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "get": {
-                                    "description": "Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.",
-                                    "httpMethod": "GET",
-                                    "id": "appengine.apps.services.versions.get",
-                                    "parameterOrder": [
-                                        "appsId",
-                                        "servicesId",
-                                        "versionsId"
-                                    ],
-                                    "parameters": {
-                                        "appsId": {
-                                            "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "view": {
-                                            "description": "Controls the set of fields returned in the Get response.",
-                                            "enum": [
-                                                "BASIC",
-                                                "FULL"
-                                            ],
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "versionsId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "servicesId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
-                                    "response": {
-                                        "$ref": "Version"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/appengine.admin",
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                    ]
-                                },
                                 "list": {
                                     "description": "Lists the versions of a service.",
                                     "httpMethod": "GET",
@@ -779,17 +1171,17 @@
                                             "required": true,
                                             "type": "string"
                                         },
-                                        "pageToken": {
-                                            "description": "Continuation token for fetching the next page of results.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
                                         "appsId": {
                                             "description": "Part of `parent`. Name of the parent Service resource. Example: apps/myapp/services/default.",
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
                                         },
+                                        "pageToken": {
+                                            "description": "Continuation token for fetching the next page of results.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
                                         "pageSize": {
                                             "description": "Maximum results to return per page.",
                                             "format": "int32",
@@ -816,6 +1208,100 @@
                                         "https://www.googleapis.com/auth/cloud-platform.read-only"
                                     ]
                                 },
+                                "get": {
+                                    "description": "Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.",
+                                    "httpMethod": "GET",
+                                    "id": "appengine.apps.services.versions.get",
+                                    "parameterOrder": [
+                                        "appsId",
+                                        "servicesId",
+                                        "versionsId"
+                                    ],
+                                    "parameters": {
+                                        "servicesId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "appsId": {
+                                            "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "versionsId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "view": {
+                                            "description": "Controls the set of fields returned in the Get response.",
+                                            "enum": [
+                                                "BASIC",
+                                                "FULL"
+                                            ],
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
+                                    "response": {
+                                        "$ref": "Version"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/appengine.admin",
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses:\nserving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.serving_status):  For Version resources that use basic scaling, manual scaling, or run in  the App Engine flexible environment.\ninstance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.instance_class):  For Version resources that run in the App Engine standard environment.\nautomatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine standard environment.\nautomatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine standard environment.\nautomatic_scaling.min_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.\nautomatic_scaling.max_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.\nautomatic_scaling.cool_down_period_sec (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.\nautomatic_scaling.cpu_utilization.target_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine Flexible environment.",
+                                    "httpMethod": "PATCH",
+                                    "id": "appengine.apps.services.versions.patch",
+                                    "parameterOrder": [
+                                        "appsId",
+                                        "servicesId",
+                                        "versionsId"
+                                    ],
+                                    "parameters": {
+                                        "servicesId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "appsId": {
+                                            "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default/versions/1.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "versionsId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "Standard field mask for the set of fields to be updated.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
+                                    "request": {
+                                        "$ref": "Version"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
                                 "create": {
                                     "description": "Deploys code and resource files to a new version.",
                                     "httpMethod": "POST",
@@ -864,7 +1350,7 @@
                                                 "instancesId"
                                             ],
                                             "parameters": {
-                                                "instancesId": {
+                                                "servicesId": {
                                                     "description": "Part of `name`. See documentation of `appsId`.",
                                                     "location": "path",
                                                     "required": true,
@@ -876,13 +1362,13 @@
                                                     "required": true,
                                                     "type": "string"
                                                 },
-                                                "versionsId": {
+                                                "instancesId": {
                                                     "description": "Part of `name`. See documentation of `appsId`.",
                                                     "location": "path",
                                                     "required": true,
                                                     "type": "string"
                                                 },
-                                                "servicesId": {
+                                                "versionsId": {
                                                     "description": "Part of `name`. See documentation of `appsId`.",
                                                     "location": "path",
                                                     "required": true,
@@ -897,52 +1383,6 @@
                                                 "https://www.googleapis.com/auth/cloud-platform"
                                             ]
                                         },
-                                        "get": {
-                                            "description": "Gets instance information.",
-                                            "httpMethod": "GET",
-                                            "id": "appengine.apps.services.versions.instances.get",
-                                            "parameterOrder": [
-                                                "appsId",
-                                                "servicesId",
-                                                "versionsId",
-                                                "instancesId"
-                                            ],
-                                            "parameters": {
-                                                "servicesId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "instancesId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "appsId": {
-                                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "versionsId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}",
-                                            "response": {
-                                                "$ref": "Instance"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/appengine.admin",
-                                                "https://www.googleapis.com/auth/cloud-platform",
-                                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                            ]
-                                        },
                                         "list": {
                                             "description": "Lists the instances of a version.Tip: To aggregate details about instances over time, see the Stackdriver Monitoring API (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).",
                                             "httpMethod": "GET",
@@ -953,6 +1393,17 @@
                                                 "versionsId"
                                             ],
                                             "parameters": {
+                                                "appsId": {
+                                                    "description": "Part of `parent`. Name of the parent Version resource. Example: apps/myapp/services/default/versions/v1.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "pageToken": {
+                                                    "description": "Continuation token for fetching the next page of results.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
                                                 "pageSize": {
                                                     "description": "Maximum results to return per page.",
                                                     "format": "int32",
@@ -970,17 +1421,6 @@
                                                     "location": "path",
                                                     "required": true,
                                                     "type": "string"
-                                                },
-                                                "pageToken": {
-                                                    "description": "Continuation token for fetching the next page of results.",
-                                                    "location": "query",
-                                                    "type": "string"
-                                                },
-                                                "appsId": {
-                                                    "description": "Part of `parent`. Name of the parent Version resource. Example: apps/myapp/services/default/versions/v1.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
                                                 }
                                             },
                                             "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances",
@@ -993,6 +1433,52 @@
                                                 "https://www.googleapis.com/auth/cloud-platform.read-only"
                                             ]
                                         },
+                                        "get": {
+                                            "description": "Gets instance information.",
+                                            "httpMethod": "GET",
+                                            "id": "appengine.apps.services.versions.instances.get",
+                                            "parameterOrder": [
+                                                "appsId",
+                                                "servicesId",
+                                                "versionsId",
+                                                "instancesId"
+                                            ],
+                                            "parameters": {
+                                                "appsId": {
+                                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "instancesId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "versionsId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "servicesId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}",
+                                            "response": {
+                                                "$ref": "Instance"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/appengine.admin",
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                            ]
+                                        },
                                         "debug": {
                                             "description": "Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in \"debug mode\", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.",
                                             "httpMethod": "POST",
@@ -1004,13 +1490,13 @@
                                                 "instancesId"
                                             ],
                                             "parameters": {
-                                                "servicesId": {
+                                                "versionsId": {
                                                     "description": "Part of `name`. See documentation of `appsId`.",
                                                     "location": "path",
                                                     "required": true,
                                                     "type": "string"
                                                 },
-                                                "instancesId": {
+                                                "servicesId": {
                                                     "description": "Part of `name`. See documentation of `appsId`.",
                                                     "location": "path",
                                                     "required": true,
@@ -1022,7 +1508,7 @@
                                                     "required": true,
                                                     "type": "string"
                                                 },
-                                                "versionsId": {
+                                                "instancesId": {
                                                     "description": "Part of `name`. See documentation of `appsId`.",
                                                     "location": "path",
                                                     "required": true,
@@ -1045,710 +1531,13 @@
                             }
                         }
                     }
-                },
-                "authorizedDomains": {
-                    "methods": {
-                        "list": {
-                            "description": "Lists all domains the user is authorized to administer.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.authorizedDomains.list",
-                            "parameterOrder": [
-                                "appsId"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "Continuation token for fetching the next page of results.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Maximum results to return per page.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v1beta/apps/{appsId}/authorizedDomains",
-                            "response": {
-                                "$ref": "ListAuthorizedDomainsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        }
-                    }
-                },
-                "operations": {
-                    "methods": {
-                        "get": {
-                            "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.operations.get",
-                            "parameterOrder": [
-                                "appsId",
-                                "operationsId"
-                            ],
-                            "parameters": {
-                                "appsId": {
-                                    "description": "Part of `name`. The name of the operation resource.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "operationsId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta/apps/{appsId}/operations/{operationsId}",
-                            "response": {
-                                "$ref": "Operation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.operations.list",
-                            "parameterOrder": [
-                                "appsId"
-                            ],
-                            "parameters": {
-                                "filter": {
-                                    "description": "The standard list filter.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "The standard list page token.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `name`. The name of the operation's parent resource.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "The standard list page size.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v1beta/apps/{appsId}/operations",
-                            "response": {
-                                "$ref": "ListOperationsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        }
-                    }
-                },
-                "domainMappings": {
-                    "methods": {
-                        "delete": {
-                            "description": "Deletes the specified domain mapping. A user must be authorized to administer the associated domain in order to delete a DomainMapping resource.",
-                            "httpMethod": "DELETE",
-                            "id": "appengine.apps.domainMappings.delete",
-                            "parameterOrder": [
-                                "appsId",
-                                "domainMappingsId"
-                            ],
-                            "parameters": {
-                                "domainMappingsId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/domainMappings/example.com.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}",
-                            "response": {
-                                "$ref": "Operation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "patch": {
-                            "description": "Updates the specified domain mapping. To map an SSL certificate to a domain mapping, update certificate_id to point to an AuthorizedCertificate resource. A user must be authorized to administer the associated domain in order to update a DomainMapping resource.",
-                            "httpMethod": "PATCH",
-                            "id": "appengine.apps.domainMappings.patch",
-                            "parameterOrder": [
-                                "appsId",
-                                "domainMappingsId"
-                            ],
-                            "parameters": {
-                                "domainMappingsId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "updateMask": {
-                                    "description": "Standard field mask for the set of fields to be updated.",
-                                    "format": "google-fieldmask",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/domainMappings/example.com.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}",
-                            "request": {
-                                "$ref": "DomainMapping"
-                            },
-                            "response": {
-                                "$ref": "Operation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets the specified domain mapping.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.domainMappings.get",
-                            "parameterOrder": [
-                                "appsId",
-                                "domainMappingsId"
-                            ],
-                            "parameters": {
-                                "domainMappingsId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/domainMappings/example.com.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}",
-                            "response": {
-                                "$ref": "DomainMapping"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists the domain mappings on an application.",
-                            "httpMethod": "GET",
-                            "id": "appengine.apps.domainMappings.list",
-                            "parameterOrder": [
-                                "appsId"
-                            ],
-                            "parameters": {
-                                "pageToken": {
-                                    "description": "Continuation token for fetching the next page of results.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "appsId": {
-                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Maximum results to return per page.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v1beta/apps/{appsId}/domainMappings",
-                            "response": {
-                                "$ref": "ListDomainMappingsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/appengine.admin",
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only"
-                            ]
-                        },
-                        "create": {
-                            "description": "Maps a domain to an application. A user must be authorized to administer a domain in order to map it to an application. For a list of available authorized domains, see AuthorizedDomains.ListAuthorizedDomains.",
-                            "httpMethod": "POST",
-                            "id": "appengine.apps.domainMappings.create",
-                            "parameterOrder": [
-                                "appsId"
-                            ],
-                            "parameters": {
-                                "appsId": {
-                                    "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta/apps/{appsId}/domainMappings",
-                            "request": {
-                                "$ref": "DomainMapping"
-                            },
-                            "response": {
-                                "$ref": "Operation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        }
-                    }
-                },
-                "firewall": {
-                    "resources": {
-                        "ingressRules": {
-                            "methods": {
-                                "delete": {
-                                    "description": "Deletes the specified firewall rule.",
-                                    "httpMethod": "DELETE",
-                                    "id": "appengine.apps.firewall.ingressRules.delete",
-                                    "parameterOrder": [
-                                        "appsId",
-                                        "ingressRulesId"
-                                    ],
-                                    "parameters": {
-                                        "appsId": {
-                                            "description": "Part of `name`. Name of the Firewall resource to delete. Example: apps/myapp/firewall/ingressRules/100.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "ingressRulesId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta/apps/{appsId}/firewall/ingressRules/{ingressRulesId}",
-                                    "response": {
-                                        "$ref": "Empty"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "list": {
-                                    "description": "Lists the firewall rules of an application.",
-                                    "httpMethod": "GET",
-                                    "id": "appengine.apps.firewall.ingressRules.list",
-                                    "parameterOrder": [
-                                        "appsId"
-                                    ],
-                                    "parameters": {
-                                        "pageSize": {
-                                            "description": "Maximum results to return per page.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "matchingAddress": {
-                                            "description": "A valid IP Address. If set, only rules matching this address will be returned. The first returned rule will be the rule that fires on requests from this IP.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageToken": {
-                                            "description": "Continuation token for fetching the next page of results.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "appsId": {
-                                            "description": "Part of `parent`. Name of the Firewall collection to retrieve. Example: apps/myapp/firewall/ingressRules.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta/apps/{appsId}/firewall/ingressRules",
-                                    "response": {
-                                        "$ref": "ListIngressRulesResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/appengine.admin",
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                    ]
-                                },
-                                "create": {
-                                    "description": "Creates a firewall rule for the application.",
-                                    "httpMethod": "POST",
-                                    "id": "appengine.apps.firewall.ingressRules.create",
-                                    "parameterOrder": [
-                                        "appsId"
-                                    ],
-                                    "parameters": {
-                                        "appsId": {
-                                            "description": "Part of `parent`. Name of the parent Firewall collection in which to create a new rule. Example: apps/myapp/firewall/ingressRules.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta/apps/{appsId}/firewall/ingressRules",
-                                    "request": {
-                                        "$ref": "FirewallRule"
-                                    },
-                                    "response": {
-                                        "$ref": "FirewallRule"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "get": {
-                                    "description": "Gets the specified firewall rule.",
-                                    "httpMethod": "GET",
-                                    "id": "appengine.apps.firewall.ingressRules.get",
-                                    "parameterOrder": [
-                                        "appsId",
-                                        "ingressRulesId"
-                                    ],
-                                    "parameters": {
-                                        "ingressRulesId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "appsId": {
-                                            "description": "Part of `name`. Name of the Firewall resource to retrieve. Example: apps/myapp/firewall/ingressRules/100.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta/apps/{appsId}/firewall/ingressRules/{ingressRulesId}",
-                                    "response": {
-                                        "$ref": "FirewallRule"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/appengine.admin",
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                                    ]
-                                },
-                                "patch": {
-                                    "description": "Updates the specified firewall rule.",
-                                    "httpMethod": "PATCH",
-                                    "id": "appengine.apps.firewall.ingressRules.patch",
-                                    "parameterOrder": [
-                                        "appsId",
-                                        "ingressRulesId"
-                                    ],
-                                    "parameters": {
-                                        "updateMask": {
-                                            "description": "Standard field mask for the set of fields to be updated.",
-                                            "format": "google-fieldmask",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "appsId": {
-                                            "description": "Part of `name`. Name of the Firewall resource to update. Example: apps/myapp/firewall/ingressRules/100.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "ingressRulesId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta/apps/{appsId}/firewall/ingressRules/{ingressRulesId}",
-                                    "request": {
-                                        "$ref": "FirewallRule"
-                                    },
-                                    "response": {
-                                        "$ref": "FirewallRule"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "batchUpdate": {
-                                    "description": "Replaces the entire firewall ruleset in one bulk operation. This overrides and replaces the rules of an existing firewall with the new rules.If the final rule does not match traffic with the '*' wildcard IP range, then an \"allow all\" rule is explicitly added to the end of the list.",
-                                    "httpMethod": "POST",
-                                    "id": "appengine.apps.firewall.ingressRules.batchUpdate",
-                                    "parameterOrder": [
-                                        "appsId"
-                                    ],
-                                    "parameters": {
-                                        "appsId": {
-                                            "description": "Part of `name`. Name of the Firewall collection to set. Example: apps/myapp/firewall/ingressRules.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta/apps/{appsId}/firewall/ingressRules:batchUpdate",
-                                    "request": {
-                                        "$ref": "BatchUpdateIngressRulesRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "BatchUpdateIngressRulesResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                }
-                            }
-                        }
-                    }
                 }
             }
         }
     },
-    "revision": "20170926",
+    "revision": "20171009",
     "rootUrl": "https://appengine.googleapis.com/",
     "schemas": {
-        "AuthorizedDomain": {
-            "description": "A domain that a user has been authorized to administer. To authorize use of a domain, verify ownership via Webmaster Central (https://www.google.com/webmasters/verification/home).",
-            "id": "AuthorizedDomain",
-            "properties": {
-                "name": {
-                    "description": "Full path to the AuthorizedDomain resource in the API. Example: apps/myapp/authorizedDomains/example.com.@OutputOnly",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "Fully qualified domain name of the domain authorized for use. Example: example.com.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TrafficSplit": {
-            "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.",
-            "id": "TrafficSplit",
-            "properties": {
-                "allocations": {
-                    "additionalProperties": {
-                        "format": "double",
-                        "type": "number"
-                    },
-                    "description": "Mapping from version IDs within the service to fractional (0.000, 1] allocations of traffic for that version. Each version can be specified only once, but some versions in the service may not have any traffic allocation. Services that have traffic allocated cannot be deleted until either the service is deleted or their traffic allocation is removed. Allocations must sum to 1. Up to two decimal place precision is supported for IP-based splits and up to three decimal places is supported for cookie-based splits.",
-                    "type": "object"
-                },
-                "shardBy": {
-                    "description": "Mechanism used to determine which version a request is sent to. The traffic selection algorithm will be stable for either type until allocations are changed.",
-                    "enum": [
-                        "UNSPECIFIED",
-                        "COOKIE",
-                        "IP",
-                        "RANDOM"
-                    ],
-                    "enumDescriptions": [
-                        "Diversion method unspecified.",
-                        "Diversion based on a specially named cookie, \"GOOGAPPUID.\" The cookie must be set by the application itself or no diversion will occur.",
-                        "Diversion based on applying the modulus operation to a fingerprint of the IP address.",
-                        "Diversion based on weighted random assignment. An incoming request is randomly routed to a version in the traffic split, with probability proportional to the version's traffic share."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "OperationMetadataV1Beta": {
-            "description": "Metadata for the given google.longrunning.Operation.",
-            "id": "OperationMetadataV1Beta",
-            "properties": {
-                "endTime": {
-                    "description": "Time that this operation completed.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "warning": {
-                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "insertTime": {
-                    "description": "Time that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "user": {
-                    "description": "User who requested this operation.@OutputOnly",
-                    "type": "string"
-                },
-                "target": {
-                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
-                    "type": "string"
-                },
-                "ephemeralMessage": {
-                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
-                    "type": "string"
-                },
-                "method": {
-                    "description": "API method that initiated this operation. Example: google.appengine.v1beta.Versions.CreateVersion.@OutputOnly",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListServicesResponse": {
-            "description": "Response message for Services.ListServices.",
-            "id": "ListServicesResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Continuation token for fetching the next page of results.",
-                    "type": "string"
-                },
-                "services": {
-                    "description": "The services belonging to the requested application.",
-                    "items": {
-                        "$ref": "Service"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ListIngressRulesResponse": {
-            "description": "Response message for Firewall.ListIngressRules.",
-            "id": "ListIngressRulesResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Continuation token for fetching the next page of results.",
-                    "type": "string"
-                },
-                "ingressRules": {
-                    "description": "The ingress FirewallRules for this application.",
-                    "items": {
-                        "$ref": "FirewallRule"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Resources": {
-            "description": "Machine resources for a version.",
-            "id": "Resources",
-            "properties": {
-                "volumes": {
-                    "description": "User specified volumes.",
-                    "items": {
-                        "$ref": "Volume"
-                    },
-                    "type": "array"
-                },
-                "diskGb": {
-                    "description": "Disk size (GB) needed.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "memoryGb": {
-                    "description": "Memory (GB) needed.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "cpu": {
-                    "description": "Number of CPU cores needed.",
-                    "format": "double",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "Deployment": {
-            "description": "Code and application artifacts used to deploy a version to App Engine.",
-            "id": "Deployment",
-            "properties": {
-                "zip": {
-                    "$ref": "ZipInfo",
-                    "description": "The zip file for this deployment, if this is a zip deployment."
-                },
-                "container": {
-                    "$ref": "ContainerInfo",
-                    "description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment."
-                },
-                "build": {
-                    "$ref": "BuildInfo",
-                    "description": "Google Cloud Container Builder build information."
-                },
-                "files": {
-                    "additionalProperties": {
-                        "$ref": "FileInfo"
-                    },
-                    "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "Volume": {
-            "description": "Volumes mounted within the app container. Only applicable for VM runtimes.",
-            "id": "Volume",
-            "properties": {
-                "sizeGb": {
-                    "description": "Volume size in gigabytes.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "name": {
-                    "description": "Unique name for the volume.",
-                    "type": "string"
-                },
-                "volumeType": {
-                    "description": "Underlying volume type, e.g. 'tmpfs'.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "BatchUpdateIngressRulesResponse": {
-            "description": "Response message for Firewall.UpdateAllIngressRules.",
-            "id": "BatchUpdateIngressRulesResponse",
-            "properties": {
-                "ingressRules": {
-                    "description": "The full list of ingress FirewallRules for this application.",
-                    "items": {
-                        "$ref": "FirewallRule"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "ManagedCertificate": {
             "description": "A certificate managed by App Engine.",
             "id": "ManagedCertificate",
@@ -1819,19 +1608,16 @@
             "description": "Metadata for the given google.longrunning.Operation.",
             "id": "OperationMetadataV1Alpha",
             "properties": {
-                "ephemeralMessage": {
-                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
-                    "type": "string"
-                },
-                "method": {
-                    "description": "API method that initiated this operation. Example: google.appengine.v1alpha.Versions.CreateVersion.@OutputOnly",
-                    "type": "string"
-                },
                 "endTime": {
                     "description": "Time that this operation completed.@OutputOnly",
                     "format": "google-datetime",
                     "type": "string"
                 },
+                "insertTime": {
+                    "description": "Time that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
                 "warning": {
                     "description": "Durable messages that persist on every operation poll. @OutputOnly",
                     "items": {
@@ -1839,17 +1625,20 @@
                     },
                     "type": "array"
                 },
-                "insertTime": {
-                    "description": "Time that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
+                "user": {
+                    "description": "User who requested this operation.@OutputOnly",
                     "type": "string"
                 },
                 "target": {
                     "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
                     "type": "string"
                 },
-                "user": {
-                    "description": "User who requested this operation.@OutputOnly",
+                "ephemeralMessage": {
+                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
+                    "type": "string"
+                },
+                "method": {
+                    "description": "API method that initiated this operation. Example: google.appengine.v1alpha.Versions.CreateVersion.@OutputOnly",
                     "type": "string"
                 }
             },
@@ -1859,16 +1648,16 @@
             "description": "Rules to match an HTTP request and dispatch that request to a service.",
             "id": "UrlDispatchRule",
             "properties": {
-                "service": {
-                    "description": "Resource ID of a service in this application that should serve the matched request. The service must already exist. Example: default.",
+                "path": {
+                    "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path.The sum of the lengths of the domain and path may not exceed 100 characters.",
                     "type": "string"
                 },
                 "domain": {
                     "description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".Defaults to matching all domains: \"*\".",
                     "type": "string"
                 },
-                "path": {
-                    "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path.The sum of the lengths of the domain and path may not exceed 100 characters.",
+                "service": {
+                    "description": "Resource ID of a service in this application that should serve the matched request. The service must already exist. Example: default.",
                     "type": "string"
                 }
             },
@@ -1878,16 +1667,16 @@
             "description": "Response message for Versions.ListVersions.",
             "id": "ListVersionsResponse",
             "properties": {
+                "nextPageToken": {
+                    "description": "Continuation token for fetching the next page of results.",
+                    "type": "string"
+                },
                 "versions": {
                     "description": "The versions belonging to the requested service.",
                     "items": {
                         "$ref": "Version"
                     },
                     "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "Continuation token for fetching the next page of results.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1910,6 +1699,38 @@
             },
             "type": "object"
         },
+        "DomainMapping": {
+            "description": "A domain serving an App Engine application.",
+            "id": "DomainMapping",
+            "properties": {
+                "name": {
+                    "description": "Full path to the DomainMapping resource in the API. Example: apps/myapp/domainMapping/example.com.@OutputOnly",
+                    "type": "string"
+                },
+                "sslSettings": {
+                    "$ref": "SslSettings",
+                    "description": "SSL configuration for this domain. If unconfigured, this domain will not serve with SSL."
+                },
+                "id": {
+                    "description": "Relative name of the domain serving the application. Example: example.com.",
+                    "type": "string"
+                },
+                "resourceRecords": {
+                    "description": "The resource records required to configure this domain mapping. These records must be added to the domain's DNS configuration in order to serve the application via this domain mapping.@OutputOnly",
+                    "items": {
+                        "$ref": "ResourceRecord"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n  rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
         "ApiEndpointHandler": {
             "description": "Uses Google Cloud Endpoints to handle requests.",
             "id": "ApiEndpointHandler",
@@ -1921,33 +1742,17 @@
             },
             "type": "object"
         },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n  rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
-        "DomainMapping": {
-            "description": "A domain serving an App Engine application.",
-            "id": "DomainMapping",
+        "ZipInfo": {
+            "description": "The zip file information for a zip deployment.",
+            "id": "ZipInfo",
             "properties": {
-                "sslSettings": {
-                    "$ref": "SslSettings",
-                    "description": "SSL configuration for this domain. If unconfigured, this domain will not serve with SSL."
+                "filesCount": {
+                    "description": "An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.",
+                    "format": "int32",
+                    "type": "integer"
                 },
-                "name": {
-                    "description": "Full path to the DomainMapping resource in the API. Example: apps/myapp/domainMapping/example.com.@OutputOnly",
-                    "type": "string"
-                },
-                "resourceRecords": {
-                    "description": "The resource records required to configure this domain mapping. These records must be added to the domain's DNS configuration in order to serve the application via this domain mapping.@OutputOnly",
-                    "items": {
-                        "$ref": "ResourceRecord"
-                    },
-                    "type": "array"
-                },
-                "id": {
-                    "description": "Relative name of the domain serving the application. Example: example.com.",
+                "sourceUrl": {
+                    "description": "URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.",
                     "type": "string"
                 }
             },
@@ -1957,6 +1762,11 @@
             "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.",
             "id": "AutomaticScaling",
             "properties": {
+                "maxTotalInstances": {
+                    "description": "Maximum number of instances that should be started to handle requests.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "minTotalInstances": {
                     "description": "Minimum number of instances that should be maintained for this version.",
                     "format": "int32",
@@ -1994,44 +1804,23 @@
                     "format": "google-duration",
                     "type": "string"
                 },
-                "standardSchedulerSettings": {
-                    "$ref": "StandardSchedulerSettings",
-                    "description": "Scheduler settings for standard environment."
+                "requestUtilization": {
+                    "$ref": "RequestUtilization",
+                    "description": "Target scaling by request utilization."
                 },
                 "maxIdleInstances": {
                     "description": "Maximum number of idle instances that should be maintained for this version.",
                     "format": "int32",
                     "type": "integer"
                 },
-                "requestUtilization": {
-                    "$ref": "RequestUtilization",
-                    "description": "Target scaling by request utilization."
+                "standardSchedulerSettings": {
+                    "$ref": "StandardSchedulerSettings",
+                    "description": "Scheduler settings for standard environment."
                 },
                 "minIdleInstances": {
                     "description": "Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "maxTotalInstances": {
-                    "description": "Maximum number of instances that should be started to handle requests.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "ZipInfo": {
-            "description": "The zip file information for a zip deployment.",
-            "id": "ZipInfo",
-            "properties": {
-                "sourceUrl": {
-                    "description": "URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.",
-                    "type": "string"
-                },
-                "filesCount": {
-                    "description": "An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -2040,6 +1829,26 @@
             "description": "An SSL certificate that a user has been authorized to administer. A user is authorized to administer any certificate that applies to one of their authorized domains.",
             "id": "AuthorizedCertificate",
             "properties": {
+                "name": {
+                    "description": "Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly",
+                    "type": "string"
+                },
+                "domainMappingsCount": {
+                    "description": "Aggregate count of the domain mappings with this certificate mapped. This count includes domain mappings on applications for which the user does not have VIEWER permissions.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "domainNames": {
+                    "description": "Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "id": {
+                    "description": "Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly",
+                    "type": "string"
+                },
                 "displayName": {
                     "description": "The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.",
                     "type": "string"
@@ -2063,26 +1872,6 @@
                     "description": "The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate.@OutputOnly",
                     "format": "google-datetime",
                     "type": "string"
-                },
-                "name": {
-                    "description": "Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly",
-                    "type": "string"
-                },
-                "domainMappingsCount": {
-                    "description": "Aggregate count of the domain mappings with this certificate mapped. This count includes domain mappings on applications for which the user does not have VIEWER permissions.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "domainNames": {
-                    "description": "Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "id": {
-                    "description": "Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2120,13 +1909,13 @@
             "description": "Third-party Python runtime library that is required by the application.",
             "id": "Library",
             "properties": {
-                "version": {
-                    "description": "Version of the library to select, or \"latest\".",
-                    "type": "string"
-                },
                 "name": {
                     "description": "Name of the library. Example: \"django\".",
                     "type": "string"
+                },
+                "version": {
+                    "description": "Version of the library to select, or \"latest\".",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2135,16 +1924,16 @@
             "description": "The response message for Locations.ListLocations.",
             "id": "ListLocationsResponse",
             "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
                 "locations": {
                     "description": "A list of locations that matches the specified filter in the request.",
                     "items": {
                         "$ref": "Location"
                     },
                     "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2181,13 +1970,13 @@
             "description": "Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a \"service\" resource in the Service Management API (https://cloud.google.com/service-management/overview).",
             "id": "EndpointsApiService",
             "properties": {
-                "configId": {
-                    "description": "Endpoints service configuration id as specified by the Service Management API. For example \"2016-09-19r1\"",
-                    "type": "string"
-                },
                 "name": {
                     "description": "Endpoints service name which is the name of the \"service\" resource in the Service Management API. For example \"myapi.endpoints.myproject.cloud.goog\"",
                     "type": "string"
+                },
+                "configId": {
+                    "description": "Endpoints service configuration id as specified by the Service Management API. For example \"2016-09-19r1\"",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2196,6 +1985,14 @@
             "description": "URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.",
             "id": "UrlMap",
             "properties": {
+                "apiEndpoint": {
+                    "$ref": "ApiEndpointHandler",
+                    "description": "Uses API Endpoints to handle requests."
+                },
+                "staticFiles": {
+                    "$ref": "StaticFilesHandler",
+                    "description": "Returns the contents of a file, such as an image, as the response."
+                },
                 "redirectHttpResponseCode": {
                     "description": "30x code to use when performing redirects for the secure field. Defaults to 302.",
                     "enum": [
@@ -2269,14 +2066,6 @@
                         "If the user has signed in, the handler proceeds normally. Otherwise, the auth_fail_action is taken."
                     ],
                     "type": "string"
-                },
-                "apiEndpoint": {
-                    "$ref": "ApiEndpointHandler",
-                    "description": "Uses API Endpoints to handle requests."
-                },
-                "staticFiles": {
-                    "$ref": "StaticFilesHandler",
-                    "description": "Returns the contents of a file, such as an image, as the response."
                 }
             },
             "type": "object"
@@ -2285,6 +2074,10 @@
             "description": "Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers.",
             "id": "ApiConfigHandler",
             "properties": {
+                "script": {
+                    "description": "Path to the script from the application root directory.",
+                    "type": "string"
+                },
                 "login": {
                     "description": "Level of login required to access this resource. Defaults to optional.",
                     "enum": [
@@ -2336,10 +2129,6 @@
                         "Rejects request with a 401 HTTP status code and an error message."
                     ],
                     "type": "string"
-                },
-                "script": {
-                    "description": "Path to the script from the application root directory.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2383,6 +2172,17 @@
             "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them.",
             "id": "StaticFilesHandler",
             "properties": {
+                "applicationReadable": {
+                    "description": "Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.",
+                    "type": "boolean"
+                },
+                "httpHeaders": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "HTTP headers to use for all responses from these URLs.",
+                    "type": "object"
+                },
                 "uploadPathRegex": {
                     "description": "Regular expression that matches the file paths for all files that should be referenced by this handler.",
                     "type": "string"
@@ -2403,17 +2203,33 @@
                     "description": "Time a static file served by this handler should be cached by web proxies and browsers.",
                     "format": "google-duration",
                     "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DiskUtilization": {
+            "description": "Target scaling by disk usage. Only applicable for VM runtimes.",
+            "id": "DiskUtilization",
+            "properties": {
+                "targetWriteBytesPerSecond": {
+                    "description": "Target bytes written per second.",
+                    "format": "int32",
+                    "type": "integer"
                 },
-                "httpHeaders": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "HTTP headers to use for all responses from these URLs.",
-                    "type": "object"
+                "targetReadBytesPerSecond": {
+                    "description": "Target bytes read per second.",
+                    "format": "int32",
+                    "type": "integer"
                 },
-                "applicationReadable": {
-                    "description": "Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.",
-                    "type": "boolean"
+                "targetReadOpsPerSecond": {
+                    "description": "Target ops read per seconds.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "targetWriteOpsPerSecond": {
+                    "description": "Target ops written per second.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -2435,33 +2251,6 @@
             },
             "type": "object"
         },
-        "DiskUtilization": {
-            "description": "Target scaling by disk usage. Only applicable for VM runtimes.",
-            "id": "DiskUtilization",
-            "properties": {
-                "targetWriteBytesPerSecond": {
-                    "description": "Target bytes written per second.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "targetReadOpsPerSecond": {
-                    "description": "Target ops read per seconds.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "targetReadBytesPerSecond": {
-                    "description": "Target bytes read per second.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "targetWriteOpsPerSecond": {
-                    "description": "Target ops written per second.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
         "CpuUtilization": {
             "description": "Target scaling by CPU usage.",
             "id": "CpuUtilization",
@@ -2545,13 +2334,13 @@
             "description": "Metadata for the given google.cloud.location.Location.",
             "id": "LocationMetadata",
             "properties": {
-                "standardEnvironmentAvailable": {
-                    "description": "App Engine Standard Environment is available in the given location.@OutputOnly",
-                    "type": "boolean"
-                },
                 "flexibleEnvironmentAvailable": {
                     "description": "App Engine Flexible Environment is available in the given location.@OutputOnly",
                     "type": "boolean"
+                },
+                "standardEnvironmentAvailable": {
+                    "description": "App Engine Standard Environment is available in the given location.@OutputOnly",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -2579,16 +2368,16 @@
             "description": "The response message for Operations.ListOperations.",
             "id": "ListOperationsResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
-                },
                 "operations": {
                     "description": "A list of operations that matches the specified filter in the request.",
                     "items": {
                         "$ref": "Operation"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2597,10 +2386,6 @@
             "description": "A single firewall rule that is evaluated against incoming traffic and provides an action to take on matched requests.",
             "id": "FirewallRule",
             "properties": {
-                "description": {
-                    "description": "An optional string description of this rule. This field has a maximum length of 100 characters.",
-                    "type": "string"
-                },
                 "sourceRange": {
                     "description": "IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character \"*\" to match all IPs equivalent to \"0/0\" and \"::/0\" together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32  or 2001:0db8:0000:0042:0000:8a2e:0370:7334.<p>Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32.",
                     "type": "string"
@@ -2623,6 +2408,10 @@
                         "Matching requests are denied."
                     ],
                     "type": "string"
+                },
+                "description": {
+                    "description": "An optional string description of this rule. This field has a maximum length of 100 characters.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2631,19 +2420,14 @@
             "description": "Metadata for the given google.longrunning.Operation.",
             "id": "OperationMetadata",
             "properties": {
-                "insertTime": {
-                    "description": "Timestamp that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
+                "target": {
+                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/modules/default.@OutputOnly",
                     "type": "string"
                 },
                 "user": {
                     "description": "User who requested this operation.@OutputOnly",
                     "type": "string"
                 },
-                "target": {
-                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/modules/default.@OutputOnly",
-                    "type": "string"
-                },
                 "method": {
                     "description": "API method that initiated this operation. Example: google.appengine.v1beta4.Version.CreateVersion.@OutputOnly",
                     "type": "string"
@@ -2656,6 +2440,11 @@
                 "operationType": {
                     "description": "Type of this operation. Deprecated, use method field instead. Example: \"create_version\".@OutputOnly",
                     "type": "string"
+                },
+                "insertTime": {
+                    "description": "Timestamp that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2693,11 +2482,20 @@
             "description": "Metadata for the given google.longrunning.Operation.",
             "id": "OperationMetadataV1",
             "properties": {
+                "method": {
+                    "description": "API method that initiated this operation. Example: google.appengine.v1.Versions.CreateVersion.@OutputOnly",
+                    "type": "string"
+                },
                 "endTime": {
                     "description": "Time that this operation completed.@OutputOnly",
                     "format": "google-datetime",
                     "type": "string"
                 },
+                "insertTime": {
+                    "description": "Time that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
                 "warning": {
                     "description": "Durable messages that persist on every operation poll. @OutputOnly",
                     "items": {
@@ -2705,11 +2503,6 @@
                     },
                     "type": "array"
                 },
-                "insertTime": {
-                    "description": "Time that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
                 "user": {
                     "description": "User who requested this operation.@OutputOnly",
                     "type": "string"
@@ -2721,10 +2514,6 @@
                 "ephemeralMessage": {
                     "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
                     "type": "string"
-                },
-                "method": {
-                    "description": "API method that initiated this operation. Example: google.appengine.v1.Versions.CreateVersion.@OutputOnly",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2733,6 +2522,10 @@
             "description": "SSL configuration for a DomainMapping resource.",
             "id": "SslSettings",
             "properties": {
+                "certificateId": {
+                    "description": "ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will remove SSL support.By default, a managed certificate is automatically created for every domain mapping. To omit SSL support or to configure SSL manually, specify SslManagementType.MANUAL on a CREATE or UPDATE request. You must be authorized to administer the AuthorizedCertificate resource to manually map it to a DomainMapping resource. Example: 12345.",
+                    "type": "string"
+                },
                 "sslManagementType": {
                     "description": "SSL management type for this domain. If AUTOMATIC, a managed certificate is automatically provisioned. If MANUAL, certificate_id must be manually specified in order to configure SSL for this domain.",
                     "enum": [
@@ -2745,10 +2538,6 @@
                     ],
                     "type": "string"
                 },
-                "certificateId": {
-                    "description": "ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will remove SSL support.By default, a managed certificate is automatically created for every domain mapping. To omit SSL support or to configure SSL manually, specify SslManagementType.MANUAL on a CREATE or UPDATE request. You must be authorized to administer the AuthorizedCertificate resource to manually map it to a DomainMapping resource. Example: 12345.",
-                    "type": "string"
-                },
                 "pendingManagedCertificateId": {
                     "description": "ID of the managed AuthorizedCertificate resource currently being provisioned, if applicable. Until the new managed certificate has been successfully provisioned, the previous SSL state will be preserved. Once the provisioning process completes, the certificate_id field will reflect the new managed certificate and this field will be left empty. To remove SSL support while there is still a pending managed certificate, clear the certificate_id field with an UpdateDomainMappingRequest.@OutputOnly",
                     "type": "string"
@@ -2760,8 +2549,8 @@
             "description": "Custom static error page to be served when an error occurs.",
             "id": "ErrorHandler",
             "properties": {
-                "mimeType": {
-                    "description": "MIME type of file. Defaults to text/html.",
+                "staticFile": {
+                    "description": "Static file content to be served for this error.",
                     "type": "string"
                 },
                 "errorCode": {
@@ -2782,8 +2571,8 @@
                     ],
                     "type": "string"
                 },
-                "staticFile": {
-                    "description": "Static file content to be served for this error.",
+                "mimeType": {
+                    "description": "MIME type of file. Defaults to text/html.",
                     "type": "string"
                 }
             },
@@ -2793,14 +2582,6 @@
             "description": "Extra network settings. Only applicable for App Engine flexible environment versions",
             "id": "Network",
             "properties": {
-                "subnetworkName": {
-                    "description": "Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network.\nIf the network the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range.\nIf the network the VM instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network.\nIf the network the VM instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the App Engine flexible environment application.",
-                    "type": "string"
-                },
-                "instanceTag": {
-                    "description": "Tag to apply to the VM instance during creation. Only applicable for for App Engine flexible environment versions.",
-                    "type": "string"
-                },
                 "forwardedPorts": {
                     "description": "List of ports, or port pairs, to forward from the virtual machine to the application container. Only applicable for App Engine flexible environment versions.",
                     "items": {
@@ -2808,6 +2589,14 @@
                     },
                     "type": "array"
                 },
+                "instanceTag": {
+                    "description": "Tag to apply to the VM instance during creation. Only applicable for for App Engine flexible environment versions.",
+                    "type": "string"
+                },
+                "subnetworkName": {
+                    "description": "Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network.\nIf the network the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range.\nIf the network the VM instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network.\nIf the network the VM instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the App Engine flexible environment application.",
+                    "type": "string"
+                },
                 "name": {
                     "description": "Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.",
                     "type": "string"
@@ -2819,50 +2608,6 @@
             "description": "An Application resource contains the top-level configuration of an App Engine application. Next tag: 20",
             "id": "Application",
             "properties": {
-                "dispatchRules": {
-                    "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. Up to 20 dispatch rules can be supported.@OutputOnly",
-                    "items": {
-                        "$ref": "UrlDispatchRule"
-                    },
-                    "type": "array"
-                },
-                "gcrDomain": {
-                    "description": "The Google Container Registry domain used for storing managed build docker images for this application.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly",
-                    "type": "string"
-                },
-                "defaultCookieExpiration": {
-                    "description": "Cookie expiration policy for this application.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.",
-                    "type": "string"
-                },
-                "locationId": {
-                    "description": "Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US",
-                    "type": "string"
-                },
-                "servingStatus": {
-                    "description": "Serving status of this application.",
-                    "enum": [
-                        "UNSPECIFIED",
-                        "SERVING",
-                        "USER_DISABLED",
-                        "SYSTEM_DISABLED"
-                    ],
-                    "enumDescriptions": [
-                        "Serving status is unspecified.",
-                        "Application is serving.",
-                        "Application has been disabled by the user.",
-                        "Application has been disabled by the system."
-                    ],
-                    "type": "string"
-                },
                 "defaultHostname": {
                     "description": "Hostname used to reach this application, as resolved by App Engine.@OutputOnly",
                     "type": "string"
@@ -2885,6 +2630,50 @@
                 "defaultBucket": {
                     "description": "Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly",
                     "type": "string"
+                },
+                "dispatchRules": {
+                    "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. Up to 20 dispatch rules can be supported.@OutputOnly",
+                    "items": {
+                        "$ref": "UrlDispatchRule"
+                    },
+                    "type": "array"
+                },
+                "gcrDomain": {
+                    "description": "The Google Container Registry domain used for storing managed build docker images for this application.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.",
+                    "type": "string"
+                },
+                "defaultCookieExpiration": {
+                    "description": "Cookie expiration policy for this application.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "locationId": {
+                    "description": "Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US",
+                    "type": "string"
+                },
+                "servingStatus": {
+                    "description": "Serving status of this application.",
+                    "enum": [
+                        "UNSPECIFIED",
+                        "SERVING",
+                        "USER_DISABLED",
+                        "SYSTEM_DISABLED"
+                    ],
+                    "enumDescriptions": [
+                        "Serving status is unspecified.",
+                        "Application is serving.",
+                        "Application has been disabled by the user.",
+                        "Application has been disabled by the system."
+                    ],
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2893,8 +2682,17 @@
             "description": "An Instance resource is the computing unit that App Engine uses to automatically scale an application.",
             "id": "Instance",
             "properties": {
-                "vmId": {
-                    "description": "Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly",
+                "requests": {
+                    "description": "Number of requests since this instance was started.@OutputOnly",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "appEngineRelease": {
+                    "description": "App Engine release this instance is running on.@OutputOnly",
+                    "type": "string"
+                },
+                "vmName": {
+                    "description": "Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly",
                     "type": "string"
                 },
                 "qps": {
@@ -2902,21 +2700,25 @@
                     "format": "float",
                     "type": "number"
                 },
-                "name": {
-                    "description": "Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly",
+                "vmId": {
+                    "description": "Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly",
                     "type": "string"
                 },
                 "vmZoneName": {
                     "description": "Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly",
                     "type": "string"
                 },
+                "name": {
+                    "description": "Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly",
+                    "type": "string"
+                },
                 "averageLatency": {
                     "description": "Average latency (ms) over the last minute.@OutputOnly",
                     "format": "int32",
                     "type": "integer"
                 },
-                "id": {
-                    "description": "Relative name of the instance within the version. Example: instance-1.@OutputOnly",
+                "vmIp": {
+                    "description": "The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly",
                     "type": "string"
                 },
                 "memoryUsage": {
@@ -2924,8 +2726,8 @@
                     "format": "int64",
                     "type": "string"
                 },
-                "vmIp": {
-                    "description": "The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly",
+                "id": {
+                    "description": "Relative name of the instance within the version. Example: instance-1.@OutputOnly",
                     "type": "string"
                 },
                 "errors": {
@@ -2959,19 +2761,6 @@
                 "vmDebugEnabled": {
                     "description": "Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly",
                     "type": "boolean"
-                },
-                "requests": {
-                    "description": "Number of requests since this instance was started.@OutputOnly",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "appEngineRelease": {
-                    "description": "App Engine release this instance is running on.@OutputOnly",
-                    "type": "string"
-                },
-                "vmName": {
-                    "description": "Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2980,19 +2769,6 @@
             "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances.",
             "id": "LivenessCheck",
             "properties": {
-                "path": {
-                    "description": "The request path.",
-                    "type": "string"
-                },
-                "host": {
-                    "description": "Host header to send when performing a HTTP Liveness check. Example: \"myapp.appspot.com\"",
-                    "type": "string"
-                },
-                "successThreshold": {
-                    "description": "Number of consecutive successful checks required before considering the VM healthy.",
-                    "format": "uint32",
-                    "type": "integer"
-                },
                 "checkInterval": {
                     "description": "Interval between health checks.",
                     "format": "google-duration",
@@ -3012,6 +2788,19 @@
                     "description": "The initial delay before starting to execute the checks.",
                     "format": "google-duration",
                     "type": "string"
+                },
+                "path": {
+                    "description": "The request path.",
+                    "type": "string"
+                },
+                "successThreshold": {
+                    "description": "Number of consecutive successful checks required before considering the VM healthy.",
+                    "format": "uint32",
+                    "type": "integer"
+                },
+                "host": {
+                    "description": "Host header to send when performing a HTTP Liveness check. Example: \"myapp.appspot.com\"",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -3030,10 +2819,41 @@
             },
             "type": "object"
         },
+        "NetworkUtilization": {
+            "description": "Target scaling by network usage. Only applicable for VM runtimes.",
+            "id": "NetworkUtilization",
+            "properties": {
+                "targetSentBytesPerSecond": {
+                    "description": "Target bytes sent per second.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "targetSentPacketsPerSecond": {
+                    "description": "Target packets sent per second.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "targetReceivedBytesPerSecond": {
+                    "description": "Target bytes received per second.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "targetReceivedPacketsPerSecond": {
+                    "description": "Target packets received per second.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
         "Location": {
             "description": "A resource that represents Google Cloud Platform location.",
             "id": "Location",
             "properties": {
+                "name": {
+                    "description": "Resource name for the location, which may vary between implementations. For example: \"projects/example-project/locations/us-east1\"",
+                    "type": "string"
+                },
                 "locationId": {
                     "description": "The canonical id for this location. For example: \"us-east1\".",
                     "type": "string"
@@ -3052,37 +2872,6 @@
                     },
                     "description": "Cross-service attributes for the location. For example\n{\"cloud.googleapis.com/region\": \"us-east1\"}\n",
                     "type": "object"
-                },
-                "name": {
-                    "description": "Resource name for the location, which may vary between implementations. For example: \"projects/example-project/locations/us-east1\"",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "NetworkUtilization": {
-            "description": "Target scaling by network usage. Only applicable for VM runtimes.",
-            "id": "NetworkUtilization",
-            "properties": {
-                "targetReceivedBytesPerSecond": {
-                    "description": "Target bytes received per second.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "targetSentPacketsPerSecond": {
-                    "description": "Target packets sent per second.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "targetReceivedPacketsPerSecond": {
-                    "description": "Target packets received per second.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "targetSentBytesPerSecond": {
-                    "description": "Target bytes sent per second.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -3091,11 +2880,6 @@
             "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.",
             "id": "HealthCheck",
             "properties": {
-                "checkInterval": {
-                    "description": "Interval between health checks.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
                 "timeout": {
                     "description": "Time before the health check is considered failed.",
                     "format": "google-duration",
@@ -3114,15 +2898,20 @@
                     "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\"",
                     "type": "string"
                 },
+                "restartThreshold": {
+                    "description": "Number of consecutive failed health checks required before an instance is restarted.",
+                    "format": "uint32",
+                    "type": "integer"
+                },
                 "healthyThreshold": {
                     "description": "Number of consecutive successful health checks required before receiving traffic.",
                     "format": "uint32",
                     "type": "integer"
                 },
-                "restartThreshold": {
-                    "description": "Number of consecutive failed health checks required before an instance is restarted.",
-                    "format": "uint32",
-                    "type": "integer"
+                "checkInterval": {
+                    "description": "Interval between health checks.",
+                    "format": "google-duration",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -3131,21 +2920,6 @@
             "description": "Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation.",
             "id": "ReadinessCheck",
             "properties": {
-                "checkInterval": {
-                    "description": "Interval between health checks.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "failureThreshold": {
-                    "description": "Number of consecutive failed checks required before removing traffic.",
-                    "format": "uint32",
-                    "type": "integer"
-                },
-                "timeout": {
-                    "description": "Time before the check is considered failed.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
                 "appStartTimeout": {
                     "description": "A maximum time limit on application initialization, measured from moment the application successfully replies to a healthcheck until it is ready to serve traffic.",
                     "format": "google-duration",
@@ -3163,6 +2937,21 @@
                 "host": {
                     "description": "Host header to send when performing a HTTP Readiness check. Example: \"myapp.appspot.com\"",
                     "type": "string"
+                },
+                "checkInterval": {
+                    "description": "Interval between health checks.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "timeout": {
+                    "description": "Time before the check is considered failed.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "failureThreshold": {
+                    "description": "Number of consecutive failed checks required before removing traffic.",
+                    "format": "uint32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -3182,16 +2971,6 @@
             "description": "Scheduler settings for standard environment.",
             "id": "StandardSchedulerSettings",
             "properties": {
-                "minInstances": {
-                    "description": "Minimum number of instances for an app version. Set to a non-positive value (0 by convention) to disable min_instances configuration.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "targetCpuUtilization": {
-                    "description": "Target CPU utilization ratio to maintain when scaling.",
-                    "format": "double",
-                    "type": "number"
-                },
                 "targetThroughputUtilization": {
                     "description": "Target throughput utilization ratio to maintain when scaling",
                     "format": "double",
@@ -3201,6 +2980,16 @@
                     "description": "Maximum number of instances for an app version. Set to a non-positive value (0 by convention) to disable max_instances configuration.",
                     "format": "int32",
                     "type": "integer"
+                },
+                "minInstances": {
+                    "description": "Minimum number of instances for an app version. Set to a non-positive value (0 by convention) to disable min_instances configuration.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "targetCpuUtilization": {
+                    "description": "Target CPU utilization ratio to maintain when scaling.",
+                    "format": "double",
+                    "type": "number"
                 }
             },
             "type": "object"
@@ -3223,13 +3012,13 @@
                     "format": "google-datetime",
                     "type": "string"
                 },
-                "target": {
-                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
-                    "type": "string"
-                },
                 "user": {
                     "description": "User who requested this operation.@OutputOnly",
                     "type": "string"
+                },
+                "target": {
+                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -3238,22 +3027,6 @@
             "description": "A Version resource is a specific set of source code and configuration files that are deployed into a service.",
             "id": "Version",
             "properties": {
-                "threadsafe": {
-                    "description": "Whether multiple requests can be dispatched to this version at once.",
-                    "type": "boolean"
-                },
-                "readinessCheck": {
-                    "$ref": "ReadinessCheck",
-                    "description": "Configures readiness health checking for VM instances. Unhealthy instances are not put into the backend traffic rotation.Only returned in GET requests if view=FULL is set."
-                },
-                "manualScaling": {
-                    "$ref": "ManualScaling",
-                    "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time."
-                },
-                "name": {
-                    "description": "Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly",
-                    "type": "string"
-                },
                 "apiConfig": {
                     "$ref": "ApiConfigHandler",
                     "description": "Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set."
@@ -3262,14 +3035,14 @@
                     "$ref": "EndpointsApiService",
                     "description": "Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app."
                 },
-                "versionUrl": {
-                    "description": "Serving URL for this version. Example: \"https://myversion-dot-myservice-dot-myapp.appspot.com\"@OutputOnly",
-                    "type": "string"
-                },
                 "vm": {
                     "description": "Whether to deploy this version in a container on a virtual machine.",
                     "type": "boolean"
                 },
+                "versionUrl": {
+                    "description": "Serving URL for this version. Example: \"https://myversion-dot-myservice-dot-myapp.appspot.com\"@OutputOnly",
+                    "type": "string"
+                },
                 "instanceClass": {
                     "description": "Instance class that is used to run this version. Valid values are:\nAutomaticScaling: F1, F2, F4, F4_1G\nManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.",
                     "type": "string"
@@ -3301,6 +3074,10 @@
                     "format": "google-datetime",
                     "type": "string"
                 },
+                "resources": {
+                    "$ref": "Resources",
+                    "description": "Machine resources for this version. Only applicable for VM runtimes."
+                },
                 "inboundServices": {
                     "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service.",
                     "enumDescriptions": [
@@ -3330,10 +3107,6 @@
                     },
                     "type": "array"
                 },
-                "resources": {
-                    "$ref": "Resources",
-                    "description": "Machine resources for this version. Only applicable for VM runtimes."
-                },
                 "errorHandlers": {
                     "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.",
                     "items": {
@@ -3365,14 +3138,14 @@
                     "description": "Desired runtime. Example: python27.",
                     "type": "string"
                 },
-                "id": {
-                    "description": "Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: \"default\", \"latest\", and any name with the prefix \"ah-\".",
-                    "type": "string"
-                },
                 "createdBy": {
                     "description": "Email address of the user who created this version.@OutputOnly",
                     "type": "string"
                 },
+                "id": {
+                    "description": "Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: \"default\", \"latest\", and any name with the prefix \"ah-\".",
+                    "type": "string"
+                },
                 "envVariables": {
                     "additionalProperties": {
                         "type": "string"
@@ -3418,6 +3191,22 @@
                 "healthCheck": {
                     "$ref": "HealthCheck",
                     "description": "Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set."
+                },
+                "threadsafe": {
+                    "description": "Whether multiple requests can be dispatched to this version at once.",
+                    "type": "boolean"
+                },
+                "readinessCheck": {
+                    "$ref": "ReadinessCheck",
+                    "description": "Configures readiness health checking for VM instances. Unhealthy instances are not put into the backend traffic rotation.Only returned in GET requests if view=FULL is set."
+                },
+                "manualScaling": {
+                    "$ref": "ManualScaling",
+                    "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time."
+                },
+                "name": {
+                    "description": "Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -3428,6 +3217,21 @@
             "properties": {},
             "type": "object"
         },
+        "CertificateRawData": {
+            "description": "An SSL certificate obtained from a certificate authority.",
+            "id": "CertificateRawData",
+            "properties": {
+                "publicCertificate": {
+                    "description": "PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: <pre> -----BEGIN CERTIFICATE----- <certificate_value> -----END CERTIFICATE----- </pre>",
+                    "type": "string"
+                },
+                "privateKey": {
+                    "description": "Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: <pre> -----BEGIN RSA PRIVATE KEY----- <unencrypted_key_value> -----END RSA PRIVATE KEY----- </pre> @InputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "BuildInfo": {
             "description": "Google Cloud Container Builder build information.",
             "id": "BuildInfo",
@@ -3439,40 +3243,6 @@
             },
             "type": "object"
         },
-        "CertificateRawData": {
-            "description": "An SSL certificate obtained from a certificate authority.",
-            "id": "CertificateRawData",
-            "properties": {
-                "privateKey": {
-                    "description": "Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: <pre> -----BEGIN RSA PRIVATE KEY----- <unencrypted_key_value> -----END RSA PRIVATE KEY----- </pre> @InputOnly",
-                    "type": "string"
-                },
-                "publicCertificate": {
-                    "description": "PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: <pre> -----BEGIN CERTIFICATE----- <certificate_value> -----END CERTIFICATE----- </pre>",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "FileInfo": {
-            "description": "Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.",
-            "id": "FileInfo",
-            "properties": {
-                "sha1Sum": {
-                    "description": "The SHA1 hash of the file, in hex.",
-                    "type": "string"
-                },
-                "mimeType": {
-                    "description": "The MIME type of the file.Defaults to the value from Google Cloud Storage.",
-                    "type": "string"
-                },
-                "sourceUrl": {
-                    "description": "URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "ScriptHandler": {
             "description": "Executes a script to handle the request that matches the URL pattern.",
             "id": "ScriptHandler",
@@ -3484,18 +3254,37 @@
             },
             "type": "object"
         },
+        "FileInfo": {
+            "description": "Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.",
+            "id": "FileInfo",
+            "properties": {
+                "mimeType": {
+                    "description": "The MIME type of the file.Defaults to the value from Google Cloud Storage.",
+                    "type": "string"
+                },
+                "sourceUrl": {
+                    "description": "URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.",
+                    "type": "string"
+                },
+                "sha1Sum": {
+                    "description": "The SHA1 hash of the file, in hex.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "OperationMetadataExperimental": {
             "description": "Metadata for the given google.longrunning.Operation.",
             "id": "OperationMetadataExperimental",
             "properties": {
-                "target": {
-                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/customDomains/example.com.@OutputOnly",
-                    "type": "string"
-                },
                 "user": {
                     "description": "User who requested this operation.@OutputOnly",
                     "type": "string"
                 },
+                "target": {
+                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/customDomains/example.com.@OutputOnly",
+                    "type": "string"
+                },
                 "method": {
                     "description": "API method that initiated this operation. Example: google.appengine.experimental.CustomDomains.CreateCustomDomain.@OutputOnly",
                     "type": "string"
@@ -3512,6 +3301,217 @@
                 }
             },
             "type": "object"
+        },
+        "AuthorizedDomain": {
+            "description": "A domain that a user has been authorized to administer. To authorize use of a domain, verify ownership via Webmaster Central (https://www.google.com/webmasters/verification/home).",
+            "id": "AuthorizedDomain",
+            "properties": {
+                "id": {
+                    "description": "Fully qualified domain name of the domain authorized for use. Example: example.com.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Full path to the AuthorizedDomain resource in the API. Example: apps/myapp/authorizedDomains/example.com.@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TrafficSplit": {
+            "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.",
+            "id": "TrafficSplit",
+            "properties": {
+                "shardBy": {
+                    "description": "Mechanism used to determine which version a request is sent to. The traffic selection algorithm will be stable for either type until allocations are changed.",
+                    "enum": [
+                        "UNSPECIFIED",
+                        "COOKIE",
+                        "IP",
+                        "RANDOM"
+                    ],
+                    "enumDescriptions": [
+                        "Diversion method unspecified.",
+                        "Diversion based on a specially named cookie, \"GOOGAPPUID.\" The cookie must be set by the application itself or no diversion will occur.",
+                        "Diversion based on applying the modulus operation to a fingerprint of the IP address.",
+                        "Diversion based on weighted random assignment. An incoming request is randomly routed to a version in the traffic split, with probability proportional to the version's traffic share."
+                    ],
+                    "type": "string"
+                },
+                "allocations": {
+                    "additionalProperties": {
+                        "format": "double",
+                        "type": "number"
+                    },
+                    "description": "Mapping from version IDs within the service to fractional (0.000, 1] allocations of traffic for that version. Each version can be specified only once, but some versions in the service may not have any traffic allocation. Services that have traffic allocated cannot be deleted until either the service is deleted or their traffic allocation is removed. Allocations must sum to 1. Up to two decimal place precision is supported for IP-based splits and up to three decimal places is supported for cookie-based splits.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "OperationMetadataV1Beta": {
+            "description": "Metadata for the given google.longrunning.Operation.",
+            "id": "OperationMetadataV1Beta",
+            "properties": {
+                "endTime": {
+                    "description": "Time that this operation completed.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "warning": {
+                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "insertTime": {
+                    "description": "Time that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "user": {
+                    "description": "User who requested this operation.@OutputOnly",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
+                    "type": "string"
+                },
+                "ephemeralMessage": {
+                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
+                    "type": "string"
+                },
+                "method": {
+                    "description": "API method that initiated this operation. Example: google.appengine.v1beta.Versions.CreateVersion.@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListServicesResponse": {
+            "description": "Response message for Services.ListServices.",
+            "id": "ListServicesResponse",
+            "properties": {
+                "services": {
+                    "description": "The services belonging to the requested application.",
+                    "items": {
+                        "$ref": "Service"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Continuation token for fetching the next page of results.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListIngressRulesResponse": {
+            "description": "Response message for Firewall.ListIngressRules.",
+            "id": "ListIngressRulesResponse",
+            "properties": {
+                "ingressRules": {
+                    "description": "The ingress FirewallRules for this application.",
+                    "items": {
+                        "$ref": "FirewallRule"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Continuation token for fetching the next page of results.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Resources": {
+            "description": "Machine resources for a version.",
+            "id": "Resources",
+            "properties": {
+                "cpu": {
+                    "description": "Number of CPU cores needed.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "memoryGb": {
+                    "description": "Memory (GB) needed.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "volumes": {
+                    "description": "User specified volumes.",
+                    "items": {
+                        "$ref": "Volume"
+                    },
+                    "type": "array"
+                },
+                "diskGb": {
+                    "description": "Disk size (GB) needed.",
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "Deployment": {
+            "description": "Code and application artifacts used to deploy a version to App Engine.",
+            "id": "Deployment",
+            "properties": {
+                "zip": {
+                    "$ref": "ZipInfo",
+                    "description": "The zip file for this deployment, if this is a zip deployment."
+                },
+                "container": {
+                    "$ref": "ContainerInfo",
+                    "description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment."
+                },
+                "build": {
+                    "$ref": "BuildInfo",
+                    "description": "Google Cloud Container Builder build information."
+                },
+                "files": {
+                    "additionalProperties": {
+                        "$ref": "FileInfo"
+                    },
+                    "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "Volume": {
+            "description": "Volumes mounted within the app container. Only applicable for VM runtimes.",
+            "id": "Volume",
+            "properties": {
+                "sizeGb": {
+                    "description": "Volume size in gigabytes.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "name": {
+                    "description": "Unique name for the volume.",
+                    "type": "string"
+                },
+                "volumeType": {
+                    "description": "Underlying volume type, e.g. 'tmpfs'.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "BatchUpdateIngressRulesResponse": {
+            "description": "Response message for Firewall.UpdateAllIngressRules.",
+            "id": "BatchUpdateIngressRulesResponse",
+            "properties": {
+                "ingressRules": {
+                    "description": "The full list of ingress FirewallRules for this application.",
+                    "items": {
+                        "$ref": "FirewallRule"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis_beta/appengine__v1beta4.json b/discovery/googleapis_beta/appengine__v1beta4.json
index 08b5c9c..95f5e98 100644
--- a/discovery/googleapis_beta/appengine__v1beta4.json
+++ b/discovery/googleapis_beta/appengine__v1beta4.json
@@ -2,14 +2,14 @@
     "auth": {
         "oauth2": {
             "scopes": {
+                "https://www.googleapis.com/auth/cloud-platform.read-only": {
+                    "description": "View your data across Google Cloud Platform services"
+                },
                 "https://www.googleapis.com/auth/cloud-platform": {
                     "description": "View and manage your data across Google Cloud Platform services"
                 },
                 "https://www.googleapis.com/auth/appengine.admin": {
                     "description": "View and manage your applications deployed on Google App Engine"
-                },
-                "https://www.googleapis.com/auth/cloud-platform.read-only": {
-                    "description": "View your data across Google Cloud Platform services"
                 }
             }
         }
@@ -30,37 +30,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-            "location": "query",
-            "type": "string"
-        },
-        "access_token": {
-            "description": "OAuth access token.",
-            "location": "query",
-            "type": "string"
-        },
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -82,6 +51,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -95,11 +69,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -115,6 +84,37 @@
             ],
             "location": "query",
             "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
@@ -284,12 +284,6 @@
                                 "appsId"
                             ],
                             "parameters": {
-                                "pageSize": {
-                                    "description": "Maximum results to return per page.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
                                 "pageToken": {
                                     "description": "Continuation token for fetching the next page of results.",
                                     "location": "query",
@@ -300,6 +294,12 @@
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Maximum results to return per page.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
                                 }
                             },
                             "path": "v1beta4/apps/{appsId}/modules",
@@ -348,6 +348,43 @@
                     "resources": {
                         "versions": {
                             "methods": {
+                                "delete": {
+                                    "description": "Deletes an existing version.",
+                                    "httpMethod": "DELETE",
+                                    "id": "appengine.apps.modules.versions.delete",
+                                    "parameterOrder": [
+                                        "appsId",
+                                        "modulesId",
+                                        "versionsId"
+                                    ],
+                                    "parameters": {
+                                        "appsId": {
+                                            "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "versionsId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "modulesId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}",
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
                                 "patch": {
                                     "description": "Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses:\nserving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.serving_status):  For Version resources that use basic scaling, manual scaling, or run in  the App Engine flexible environment.\ninstance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.instance_class):  For Version resources that run in the App Engine standard environment.\nautomatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine standard environment.\nautomatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine standard environment.",
                                     "httpMethod": "PATCH",
@@ -358,6 +395,12 @@
                                         "versionsId"
                                     ],
                                     "parameters": {
+                                        "appsId": {
+                                            "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/modules/default/versions/1.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
                                         "mask": {
                                             "description": "Standard field mask for the set of fields to be updated.",
                                             "format": "google-fieldmask",
@@ -375,12 +418,6 @@
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
-                                        },
-                                        "appsId": {
-                                            "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/modules/default/versions/1.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
                                         }
                                     },
                                     "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}",
@@ -526,48 +563,55 @@
                                     "scopes": [
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
-                                },
-                                "delete": {
-                                    "description": "Deletes an existing version.",
-                                    "httpMethod": "DELETE",
-                                    "id": "appengine.apps.modules.versions.delete",
-                                    "parameterOrder": [
-                                        "appsId",
-                                        "modulesId",
-                                        "versionsId"
-                                    ],
-                                    "parameters": {
-                                        "appsId": {
-                                            "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "versionsId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "modulesId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}",
-                                    "response": {
-                                        "$ref": "Operation"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
                                 }
                             },
                             "resources": {
                                 "instances": {
                                     "methods": {
+                                        "delete": {
+                                            "description": "Stops a running instance.",
+                                            "httpMethod": "DELETE",
+                                            "id": "appengine.apps.modules.versions.instances.delete",
+                                            "parameterOrder": [
+                                                "appsId",
+                                                "modulesId",
+                                                "versionsId",
+                                                "instancesId"
+                                            ],
+                                            "parameters": {
+                                                "instancesId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "appsId": {
+                                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "versionsId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "modulesId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances/{instancesId}",
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
                                         "list": {
                                             "description": "Lists the instances of a version.Tip: To aggregate details about instances over time, see the Stackdriver Monitoring API (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).",
                                             "httpMethod": "GET",
@@ -629,18 +673,6 @@
                                                 "instancesId"
                                             ],
                                             "parameters": {
-                                                "instancesId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "appsId": {
-                                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
                                                 "versionsId": {
                                                     "description": "Part of `name`. See documentation of `appsId`.",
                                                     "location": "path",
@@ -652,6 +684,18 @@
                                                     "location": "path",
                                                     "required": true,
                                                     "type": "string"
+                                                },
+                                                "instancesId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "appsId": {
+                                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
                                                 }
                                             },
                                             "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances/{instancesId}",
@@ -710,50 +754,6 @@
                                             "scopes": [
                                                 "https://www.googleapis.com/auth/cloud-platform"
                                             ]
-                                        },
-                                        "delete": {
-                                            "description": "Stops a running instance.",
-                                            "httpMethod": "DELETE",
-                                            "id": "appengine.apps.modules.versions.instances.delete",
-                                            "parameterOrder": [
-                                                "appsId",
-                                                "modulesId",
-                                                "versionsId",
-                                                "instancesId"
-                                            ],
-                                            "parameters": {
-                                                "instancesId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "appsId": {
-                                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "versionsId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "modulesId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances/{instancesId}",
-                                            "response": {
-                                                "$ref": "Operation"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform"
-                                            ]
                                         }
                                     }
                                 }
@@ -772,14 +772,14 @@
                                 "operationsId"
                             ],
                             "parameters": {
-                                "operationsId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                "appsId": {
+                                    "description": "Part of `name`. The name of the operation resource.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
                                 },
-                                "appsId": {
-                                    "description": "Part of `name`. The name of the operation resource.",
+                                "operationsId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
@@ -849,14 +849,14 @@
                                 "locationsId"
                             ],
                             "parameters": {
-                                "locationsId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                "appsId": {
+                                    "description": "Part of `name`. Resource name for the location.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
                                 },
-                                "appsId": {
-                                    "description": "Part of `name`. Resource name for the location.",
+                                "locationsId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
@@ -880,17 +880,6 @@
                                 "appsId"
                             ],
                             "parameters": {
-                                "pageSize": {
-                                    "description": "The standard list page size.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "filter": {
-                                    "description": "The standard list filter.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
                                 "pageToken": {
                                     "description": "The standard list page token.",
                                     "location": "query",
@@ -901,6 +890,17 @@
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The standard list page size.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filter": {
+                                    "description": "The standard list filter.",
+                                    "location": "query",
+                                    "type": "string"
                                 }
                             },
                             "path": "v1beta4/apps/{appsId}/locations",
@@ -918,561 +918,20 @@
             }
         }
     },
-    "revision": "20170926",
+    "revision": "20171009",
     "rootUrl": "https://appengine.googleapis.com/",
     "schemas": {
-        "ListInstancesResponse": {
-            "description": "Response message for Instances.ListInstances.",
-            "id": "ListInstancesResponse",
+        "DebugInstanceRequest": {
+            "description": "Request message for Instances.DebugInstance.",
+            "id": "DebugInstanceRequest",
             "properties": {
-                "instances": {
-                    "description": "The instances belonging to the requested version.",
-                    "items": {
-                        "$ref": "Instance"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "Continuation token for fetching the next page of results.",
+                "sshKey": {
+                    "description": "Public SSH key to add to the instance. Examples:\n[USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME]\n[USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {\"userName\":\"[USERNAME]\",\"expireOn\":\"[EXPIRE_TIME]\"}For more information, see Adding and Removing SSH Keys (https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys).",
                     "type": "string"
                 }
             },
             "type": "object"
         },
-        "ErrorHandler": {
-            "description": "Custom static error page to be served when an error occurs.",
-            "id": "ErrorHandler",
-            "properties": {
-                "mimeType": {
-                    "description": "MIME type of file. Defaults to text/html.",
-                    "type": "string"
-                },
-                "errorCode": {
-                    "description": "Error condition this handler applies to.",
-                    "enum": [
-                        "ERROR_CODE_UNSPECIFIED",
-                        "ERROR_CODE_DEFAULT",
-                        "ERROR_CODE_OVER_QUOTA",
-                        "ERROR_CODE_DOS_API_DENIAL",
-                        "ERROR_CODE_TIMEOUT"
-                    ],
-                    "enumDescriptions": [
-                        "Not specified. ERROR_CODE_DEFAULT is assumed.",
-                        "All other error types.",
-                        "Application has exceeded a resource quota.",
-                        "Client blocked by the application's Denial of Service protection configuration.",
-                        "Deadline reached before the application responds."
-                    ],
-                    "type": "string"
-                },
-                "staticFile": {
-                    "description": "Static file content to be served for this error.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "OperationMetadataV1": {
-            "description": "Metadata for the given google.longrunning.Operation.",
-            "id": "OperationMetadataV1",
-            "properties": {
-                "warning": {
-                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "insertTime": {
-                    "description": "Time that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "target": {
-                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
-                    "type": "string"
-                },
-                "user": {
-                    "description": "User who requested this operation.@OutputOnly",
-                    "type": "string"
-                },
-                "ephemeralMessage": {
-                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
-                    "type": "string"
-                },
-                "method": {
-                    "description": "API method that initiated this operation. Example: google.appengine.v1.Versions.CreateVersion.@OutputOnly",
-                    "type": "string"
-                },
-                "endTime": {
-                    "description": "Time that this operation completed.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "OperationMetadataV1Alpha": {
-            "description": "Metadata for the given google.longrunning.Operation.",
-            "id": "OperationMetadataV1Alpha",
-            "properties": {
-                "endTime": {
-                    "description": "Time that this operation completed.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "warning": {
-                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "insertTime": {
-                    "description": "Time that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "user": {
-                    "description": "User who requested this operation.@OutputOnly",
-                    "type": "string"
-                },
-                "target": {
-                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
-                    "type": "string"
-                },
-                "ephemeralMessage": {
-                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
-                    "type": "string"
-                },
-                "method": {
-                    "description": "API method that initiated this operation. Example: google.appengine.v1alpha.Versions.CreateVersion.@OutputOnly",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Network": {
-            "description": "Extra network settings. Only applicable for VM runtimes.",
-            "id": "Network",
-            "properties": {
-                "instanceTag": {
-                    "description": "Tag to apply to the VM instance during creation.",
-                    "type": "string"
-                },
-                "forwardedPorts": {
-                    "description": "List of ports, or port pairs, to forward from the virtual machine to the application container.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Application": {
-            "description": "An Application resource contains the top-level configuration of an App Engine application.",
-            "id": "Application",
-            "properties": {
-                "codeBucket": {
-                    "description": "Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly",
-                    "type": "string"
-                },
-                "location": {
-                    "description": "Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US",
-                    "type": "string"
-                },
-                "defaultBucket": {
-                    "description": "Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly",
-                    "type": "string"
-                },
-                "dispatchRules": {
-                    "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a module or version. Rules are order-dependent.@OutputOnly",
-                    "items": {
-                        "$ref": "UrlDispatchRule"
-                    },
-                    "type": "array"
-                },
-                "defaultHostname": {
-                    "description": "Hostname used to reach the application, as resolved by App Engine.@OutputOnly",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly",
-                    "type": "string"
-                },
-                "authDomain": {
-                    "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.",
-                    "type": "string"
-                },
-                "iap": {
-                    "$ref": "IdentityAwareProxy"
-                },
-                "id": {
-                    "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.",
-                    "type": "string"
-                },
-                "defaultCookieExpiration": {
-                    "description": "Cookie expiration policy for this application.",
-                    "format": "google-duration",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Instance": {
-            "description": "An Instance resource is the computing unit that App Engine uses to automatically scale an application.",
-            "id": "Instance",
-            "properties": {
-                "vmId": {
-                    "description": "Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly",
-                    "type": "string"
-                },
-                "qps": {
-                    "description": "Average queries per second (QPS) over the last minute.@OutputOnly",
-                    "format": "float",
-                    "type": "number"
-                },
-                "vmZoneName": {
-                    "description": "Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Full path to the Instance resource in the API. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.@OutputOnly",
-                    "type": "string"
-                },
-                "vmUnlocked": {
-                    "description": "Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly",
-                    "type": "boolean"
-                },
-                "averageLatency": {
-                    "description": "Average latency (ms) over the last minute.@OutputOnly",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "id": {
-                    "description": "Relative name of the instance within the version. Example: instance-1.@OutputOnly",
-                    "type": "string"
-                },
-                "vmIp": {
-                    "description": "The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly",
-                    "type": "string"
-                },
-                "memoryUsage": {
-                    "description": "Total memory in use (bytes).@OutputOnly",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "errors": {
-                    "description": "Number of errors since this instance was started.@OutputOnly",
-                    "format": "uint32",
-                    "type": "integer"
-                },
-                "availability": {
-                    "description": "Availability of the instance.@OutputOnly",
-                    "enum": [
-                        "UNSPECIFIED",
-                        "RESIDENT",
-                        "DYNAMIC"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                },
-                "vmStatus": {
-                    "description": "Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly",
-                    "type": "string"
-                },
-                "requests": {
-                    "description": "Number of requests since this instance was started.@OutputOnly",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "appEngineRelease": {
-                    "description": "App Engine release this instance is running on.@OutputOnly",
-                    "type": "string"
-                },
-                "startTimestamp": {
-                    "description": "Time that this instance was started.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "vmName": {
-                    "description": "Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UrlDispatchRule": {
-            "description": "Rules to match an HTTP request and dispatch that request to a module.",
-            "id": "UrlDispatchRule",
-            "properties": {
-                "module": {
-                    "description": "Resource ID of a module in this application that should serve the matched request. The module must already exist. Example: default.",
-                    "type": "string"
-                },
-                "domain": {
-                    "description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".Defaults to matching all domains: \"*\".",
-                    "type": "string"
-                },
-                "path": {
-                    "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Module": {
-            "description": "A Module resource is a logical component of an application that can share state and communicate in a secure fashion with other modules. For example, an application that handles customer requests might include separate modules to handle tasks such as backend data analysis or API requests from mobile devices. Each module has a collection of versions that define a specific set of code used to implement the functionality of that module.",
-            "id": "Module",
-            "properties": {
-                "id": {
-                    "description": "Relative name of the module within the application. Example: default.@OutputOnly",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Full path to the Module resource in the API. Example: apps/myapp/modules/default.@OutputOnly",
-                    "type": "string"
-                },
-                "split": {
-                    "$ref": "TrafficSplit",
-                    "description": "Mapping that defines fractional HTTP traffic diversion to different versions within the module."
-                }
-            },
-            "type": "object"
-        },
-        "ListVersionsResponse": {
-            "description": "Response message for Versions.ListVersions.",
-            "id": "ListVersionsResponse",
-            "properties": {
-                "versions": {
-                    "description": "The versions belonging to the requested module.",
-                    "items": {
-                        "$ref": "Version"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "Continuation token for fetching the next page of results.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ApiEndpointHandler": {
-            "description": "Uses Google Cloud Endpoints to handle requests.",
-            "id": "ApiEndpointHandler",
-            "properties": {
-                "scriptPath": {
-                    "description": "Path to the script from the application root directory.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "StaticDirectoryHandler": {
-            "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static directory handlers make it easy to serve the entire contents of a directory as static files.",
-            "id": "StaticDirectoryHandler",
-            "properties": {
-                "expiration": {
-                    "description": "Time a static file served by this handler should be cached.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "applicationReadable": {
-                    "description": "Whether files should also be uploaded as code data. By default, files declared in static directory handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.",
-                    "type": "boolean"
-                },
-                "httpHeaders": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "HTTP headers to use for all responses from these URLs.",
-                    "type": "object"
-                },
-                "directory": {
-                    "description": "Path to the directory containing the static files from the application root directory. Everything after the end of the matched URL pattern is appended to static_dir to form the full path to the requested file.",
-                    "type": "string"
-                },
-                "mimeType": {
-                    "description": "MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are direved from each file's filename extension.",
-                    "type": "string"
-                },
-                "requireMatchingFile": {
-                    "description": "Whether this handler should match the request if the file referenced by the handler does not exist.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "AutomaticScaling": {
-            "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.",
-            "id": "AutomaticScaling",
-            "properties": {
-                "minIdleInstances": {
-                    "description": "Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a module.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "maxTotalInstances": {
-                    "description": "Maximum number of instances that should be started to handle requests.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "minTotalInstances": {
-                    "description": "Minimum number of instances that should be maintained for this version.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "networkUtilization": {
-                    "$ref": "NetworkUtilization",
-                    "description": "Target scaling by network usage."
-                },
-                "coolDownPeriod": {
-                    "description": "Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "maxConcurrentRequests": {
-                    "description": "Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "maxPendingLatency": {
-                    "description": "Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "cpuUtilization": {
-                    "$ref": "CpuUtilization",
-                    "description": "Target scaling by CPU usage."
-                },
-                "diskUtilization": {
-                    "$ref": "DiskUtilization",
-                    "description": "Target scaling by disk usage."
-                },
-                "minPendingLatency": {
-                    "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "requestUtilization": {
-                    "$ref": "RequestUtilization",
-                    "description": "Target scaling by request utilization."
-                },
-                "maxIdleInstances": {
-                    "description": "Maximum number of idle instances that should be maintained for this version.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "NetworkUtilization": {
-            "description": "Target scaling by network usage. Only applicable for VM runtimes.",
-            "id": "NetworkUtilization",
-            "properties": {
-                "targetReceivedBytesPerSec": {
-                    "description": "Target bytes received per second.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "targetSentPacketsPerSec": {
-                    "description": "Target packets sent per second.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "targetReceivedPacketsPerSec": {
-                    "description": "Target packets received per second.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "targetSentBytesPerSec": {
-                    "description": "Target bytes sent per second.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "Location": {
-            "description": "A resource that represents Google Cloud Platform location.",
-            "id": "Location",
-            "properties": {
-                "locationId": {
-                    "description": "The canonical id for this location. For example: \"us-east1\".",
-                    "type": "string"
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Service-specific metadata. For example the available capacity at the given location.",
-                    "type": "object"
-                },
-                "labels": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Cross-service attributes for the location. For example\n{\"cloud.googleapis.com/region\": \"us-east1\"}\n",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "Resource name for the location, which may vary between implementations. For example: \"projects/example-project/locations/us-east1\"",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "HealthCheck": {
-            "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.",
-            "id": "HealthCheck",
-            "properties": {
-                "checkInterval": {
-                    "description": "Interval between health checks.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "timeout": {
-                    "description": "Time before the health check is considered failed.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "unhealthyThreshold": {
-                    "description": "Number of consecutive failed health checks required before removing traffic.",
-                    "format": "uint32",
-                    "type": "integer"
-                },
-                "disableHealthCheck": {
-                    "description": "Whether to explicitly disable health checks for this instance.",
-                    "type": "boolean"
-                },
-                "host": {
-                    "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\"",
-                    "type": "string"
-                },
-                "healthyThreshold": {
-                    "description": "Number of consecutive successful health checks required before receiving traffic.",
-                    "format": "uint32",
-                    "type": "integer"
-                },
-                "restartThreshold": {
-                    "description": "Number of consecutive failed health checks required before an instance is restarted.",
-                    "format": "uint32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
         "SourceReference": {
             "description": "Reference to a particular snapshot of the source tree used to build and deploy the application.",
             "id": "SourceReference",
@@ -1488,28 +947,17 @@
             },
             "type": "object"
         },
-        "DebugInstanceRequest": {
-            "description": "Request message for Instances.DebugInstance.",
-            "id": "DebugInstanceRequest",
-            "properties": {
-                "sshKey": {
-                    "description": "Public SSH key to add to the instance. Examples:\n[USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME]\n[USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {\"userName\":\"[USERNAME]\",\"expireOn\":\"[EXPIRE_TIME]\"}For more information, see Adding and Removing SSH Keys (https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys).",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "Library": {
             "description": "Third-party Python runtime library that is required by the application.",
             "id": "Library",
             "properties": {
-                "name": {
-                    "description": "Name of the library. Example: \"django\".",
-                    "type": "string"
-                },
                 "version": {
                     "description": "Version of the library to select, or \"latest\".",
                     "type": "string"
+                },
+                "name": {
+                    "description": "Name of the library. Example: \"django\".",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1565,6 +1013,24 @@
             "description": "A Version resource is a specific set of source code and configuration files that are deployed into a module.",
             "id": "Version",
             "properties": {
+                "envVariables": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Environment variables made available to the application.Only returned in GET requests if view=FULL is set.",
+                    "type": "object"
+                },
+                "network": {
+                    "$ref": "Network",
+                    "description": "Extra network settings. Only applicable for VM runtimes."
+                },
+                "betaSettings": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Metadata settings that are supplied to this version to enable beta runtime features.",
+                    "type": "object"
+                },
                 "env": {
                     "description": "App Engine execution environment to use for this version.Defaults to 1.",
                     "type": "string"
@@ -1706,24 +1172,6 @@
                 "id": {
                     "description": "Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: \"default\", \"latest\", and any name with the prefix \"ah-\".",
                     "type": "string"
-                },
-                "envVariables": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Environment variables made available to the application.Only returned in GET requests if view=FULL is set.",
-                    "type": "object"
-                },
-                "network": {
-                    "$ref": "Network",
-                    "description": "Extra network settings. Only applicable for VM runtimes."
-                },
-                "betaSettings": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Metadata settings that are supplied to this version to enable beta runtime features.",
-                    "type": "object"
                 }
             },
             "type": "object"
@@ -1849,45 +1297,24 @@
             },
             "type": "object"
         },
-        "Operation": {
-            "description": "This resource represents a long-running operation that is the result of a network API call.",
-            "id": "Operation",
-            "properties": {
-                "done": {
-                    "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.",
-                    "type": "boolean"
-                },
-                "response": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.",
-                    "type": "string"
-                },
-                "error": {
-                    "$ref": "Status",
-                    "description": "The error result of the operation in case of failure or cancellation."
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
         "ApiConfigHandler": {
             "description": "Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers.",
             "id": "ApiConfigHandler",
             "properties": {
+                "authFailAction": {
+                    "description": "Action to take when users access resources that require authentication. Defaults to redirect.",
+                    "enum": [
+                        "AUTH_FAIL_ACTION_UNSPECIFIED",
+                        "AUTH_FAIL_ACTION_REDIRECT",
+                        "AUTH_FAIL_ACTION_UNAUTHORIZED"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.",
+                        "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.",
+                        "Rejects request with a 401 HTTP status code and an error message."
+                    ],
+                    "type": "string"
+                },
                 "script": {
                     "description": "Path to the script from the application root directory.",
                     "type": "string"
@@ -1929,19 +1356,51 @@
                         "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect."
                     ],
                     "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a network API call.",
+            "id": "Operation",
+            "properties": {
+                "name": {
+                    "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.",
+                    "type": "string"
                 },
-                "authFailAction": {
-                    "description": "Action to take when users access resources that require authentication. Defaults to redirect.",
-                    "enum": [
-                        "AUTH_FAIL_ACTION_UNSPECIFIED",
-                        "AUTH_FAIL_ACTION_REDIRECT",
-                        "AUTH_FAIL_ACTION_UNAUTHORIZED"
-                    ],
-                    "enumDescriptions": [
-                        "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.",
-                        "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.",
-                        "Rejects request with a 401 HTTP status code and an error message."
-                    ],
+                "error": {
+                    "$ref": "Status",
+                    "description": "The error result of the operation in case of failure or cancellation."
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+                    "type": "object"
+                },
+                "done": {
+                    "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.",
+                    "type": "boolean"
+                },
+                "response": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "ScriptHandler": {
+            "description": "Executes a script to handle the request that matches the URL pattern.",
+            "id": "ScriptHandler",
+            "properties": {
+                "scriptPath": {
+                    "description": "Path to the script from the application root directory.",
                     "type": "string"
                 }
             },
@@ -1951,6 +1410,10 @@
             "description": "Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.",
             "id": "FileInfo",
             "properties": {
+                "sha1Sum": {
+                    "description": "The SHA1 hash of the file, in hex.",
+                    "type": "string"
+                },
                 "mimeType": {
                     "description": "The MIME type of the file.Defaults to the value from Google Cloud Storage.",
                     "type": "string"
@@ -1958,10 +1421,6 @@
                 "sourceUrl": {
                     "description": "URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.",
                     "type": "string"
-                },
-                "sha1Sum": {
-                    "description": "The SHA1 hash of the file, in hex.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1970,14 +1429,6 @@
             "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them.",
             "id": "StaticFilesHandler",
             "properties": {
-                "uploadPathRegex": {
-                    "description": "Regular expression that matches the file paths for all files that should be referenced by this handler.",
-                    "type": "string"
-                },
-                "path": {
-                    "description": "Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.",
-                    "type": "string"
-                },
                 "mimeType": {
                     "description": "MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are derived from each file's filename extension.",
                     "type": "string"
@@ -2001,16 +1452,13 @@
                     },
                     "description": "HTTP headers to use for all responses from these URLs.",
                     "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "ScriptHandler": {
-            "description": "Executes a script to handle the request that matches the URL pattern.",
-            "id": "ScriptHandler",
-            "properties": {
-                "scriptPath": {
-                    "description": "Path to the script from the application root directory.",
+                },
+                "uploadPathRegex": {
+                    "description": "Regular expression that matches the file paths for all files that should be referenced by this handler.",
+                    "type": "string"
+                },
+                "path": {
+                    "description": "Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.",
                     "type": "string"
                 }
             },
@@ -2047,15 +1495,15 @@
             "description": "A module with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.",
             "id": "BasicScaling",
             "properties": {
-                "idleTimeout": {
-                    "description": "Duration of time after the last request that an instance must wait before the instance is shut down.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
                 "maxInstances": {
                     "description": "Maximum number of instances to create for this version.",
                     "format": "int32",
                     "type": "integer"
+                },
+                "idleTimeout": {
+                    "description": "Duration of time after the last request that an instance must wait before the instance is shut down.",
+                    "format": "google-duration",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2064,6 +1512,10 @@
             "description": "Metadata for the given google.longrunning.Operation.",
             "id": "OperationMetadataExperimental",
             "properties": {
+                "method": {
+                    "description": "API method that initiated this operation. Example: google.appengine.experimental.CustomDomains.CreateCustomDomain.@OutputOnly",
+                    "type": "string"
+                },
                 "insertTime": {
                     "description": "Time that this operation was created.@OutputOnly",
                     "format": "google-datetime",
@@ -2081,10 +1533,6 @@
                 "user": {
                     "description": "User who requested this operation.@OutputOnly",
                     "type": "string"
-                },
-                "method": {
-                    "description": "API method that initiated this operation. Example: google.appengine.experimental.CustomDomains.CreateCustomDomain.@OutputOnly",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2110,6 +1558,10 @@
             "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.",
             "id": "Status",
             "properties": {
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
                 "details": {
                     "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
                     "items": {
@@ -2125,10 +1577,6 @@
                     "description": "The status code, which should be an enum value of google.rpc.Code.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2137,14 +1585,6 @@
             "description": "Identity-Aware Proxy",
             "id": "IdentityAwareProxy",
             "properties": {
-                "enabled": {
-                    "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.If true, the oauth2_client_id and oauth2_client_secret fields must be non-empty.",
-                    "type": "boolean"
-                },
-                "oauth2ClientSecret": {
-                    "description": "For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2_client_secret_sha256 field.@InputOnly",
-                    "type": "string"
-                },
                 "oauth2ClientId": {
                     "description": "OAuth2 client ID to use for the authentication flow.",
                     "type": "string"
@@ -2152,6 +1592,14 @@
                 "oauth2ClientSecretSha256": {
                     "description": "Hex-encoded SHA-256 hash of the client secret.@OutputOnly",
                     "type": "string"
+                },
+                "enabled": {
+                    "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.If true, the oauth2_client_id and oauth2_client_secret fields must be non-empty.",
+                    "type": "boolean"
+                },
+                "oauth2ClientSecret": {
+                    "description": "For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2_client_secret_sha256 field.@InputOnly",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2201,13 +1649,13 @@
             "description": "Metadata for the given google.cloud.location.Location.",
             "id": "LocationMetadata",
             "properties": {
-                "standardEnvironmentAvailable": {
-                    "description": "App Engine Standard Environment is available in the given location.@OutputOnly",
-                    "type": "boolean"
-                },
                 "flexibleEnvironmentAvailable": {
                     "description": "App Engine Flexible Environment is available in the given location.@OutputOnly",
                     "type": "boolean"
+                },
+                "standardEnvironmentAvailable": {
+                    "description": "App Engine Standard Environment is available in the given location.@OutputOnly",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -2216,6 +1664,11 @@
             "description": "Metadata for the given google.longrunning.Operation.",
             "id": "OperationMetadataV1Beta",
             "properties": {
+                "insertTime": {
+                    "description": "Time that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
                 "warning": {
                     "description": "Durable messages that persist on every operation poll. @OutputOnly",
                     "items": {
@@ -2223,19 +1676,14 @@
                     },
                     "type": "array"
                 },
-                "insertTime": {
-                    "description": "Time that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
+                "user": {
+                    "description": "User who requested this operation.@OutputOnly",
                     "type": "string"
                 },
                 "target": {
                     "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
                     "type": "string"
                 },
-                "user": {
-                    "description": "User who requested this operation.@OutputOnly",
-                    "type": "string"
-                },
                 "ephemeralMessage": {
                     "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
                     "type": "string"
@@ -2256,16 +1704,16 @@
             "description": "Response message for Modules.ListModules.",
             "id": "ListModulesResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "Continuation token for fetching the next page of results.",
-                    "type": "string"
-                },
                 "modules": {
                     "description": "The modules belonging to the requested application.",
                     "items": {
                         "$ref": "Module"
                     },
                     "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Continuation token for fetching the next page of results.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2366,6 +1814,10 @@
             "description": "Metadata for the given google.longrunning.Operation.",
             "id": "OperationMetadata",
             "properties": {
+                "method": {
+                    "description": "API method that initiated this operation. Example: google.appengine.v1beta4.Version.CreateVersion.@OutputOnly",
+                    "type": "string"
+                },
                 "endTime": {
                     "description": "Timestamp that this operation completed.@OutputOnly",
                     "format": "google-datetime",
@@ -2380,16 +1832,564 @@
                     "format": "google-datetime",
                     "type": "string"
                 },
+                "user": {
+                    "description": "User who requested this operation.@OutputOnly",
+                    "type": "string"
+                },
                 "target": {
                     "description": "Name of the resource that this operation is acting on. Example: apps/myapp/modules/default.@OutputOnly",
                     "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListInstancesResponse": {
+            "description": "Response message for Instances.ListInstances.",
+            "id": "ListInstancesResponse",
+            "properties": {
+                "instances": {
+                    "description": "The instances belonging to the requested version.",
+                    "items": {
+                        "$ref": "Instance"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Continuation token for fetching the next page of results.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "OperationMetadataV1": {
+            "description": "Metadata for the given google.longrunning.Operation.",
+            "id": "OperationMetadataV1",
+            "properties": {
+                "ephemeralMessage": {
+                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
+                    "type": "string"
+                },
+                "method": {
+                    "description": "API method that initiated this operation. Example: google.appengine.v1.Versions.CreateVersion.@OutputOnly",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "Time that this operation completed.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "warning": {
+                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "insertTime": {
+                    "description": "Time that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
+                    "type": "string"
+                },
+                "user": {
+                    "description": "User who requested this operation.@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ErrorHandler": {
+            "description": "Custom static error page to be served when an error occurs.",
+            "id": "ErrorHandler",
+            "properties": {
+                "staticFile": {
+                    "description": "Static file content to be served for this error.",
+                    "type": "string"
+                },
+                "mimeType": {
+                    "description": "MIME type of file. Defaults to text/html.",
+                    "type": "string"
+                },
+                "errorCode": {
+                    "description": "Error condition this handler applies to.",
+                    "enum": [
+                        "ERROR_CODE_UNSPECIFIED",
+                        "ERROR_CODE_DEFAULT",
+                        "ERROR_CODE_OVER_QUOTA",
+                        "ERROR_CODE_DOS_API_DENIAL",
+                        "ERROR_CODE_TIMEOUT"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. ERROR_CODE_DEFAULT is assumed.",
+                        "All other error types.",
+                        "Application has exceeded a resource quota.",
+                        "Client blocked by the application's Denial of Service protection configuration.",
+                        "Deadline reached before the application responds."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "OperationMetadataV1Alpha": {
+            "description": "Metadata for the given google.longrunning.Operation.",
+            "id": "OperationMetadataV1Alpha",
+            "properties": {
+                "warning": {
+                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "insertTime": {
+                    "description": "Time that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
+                    "type": "string"
                 },
                 "user": {
                     "description": "User who requested this operation.@OutputOnly",
                     "type": "string"
                 },
+                "ephemeralMessage": {
+                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
+                    "type": "string"
+                },
                 "method": {
-                    "description": "API method that initiated this operation. Example: google.appengine.v1beta4.Version.CreateVersion.@OutputOnly",
+                    "description": "API method that initiated this operation. Example: google.appengine.v1alpha.Versions.CreateVersion.@OutputOnly",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "Time that this operation completed.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Application": {
+            "description": "An Application resource contains the top-level configuration of an App Engine application.",
+            "id": "Application",
+            "properties": {
+                "name": {
+                    "description": "Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly",
+                    "type": "string"
+                },
+                "iap": {
+                    "$ref": "IdentityAwareProxy"
+                },
+                "authDomain": {
+                    "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.",
+                    "type": "string"
+                },
+                "defaultCookieExpiration": {
+                    "description": "Cookie expiration policy for this application.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.",
+                    "type": "string"
+                },
+                "codeBucket": {
+                    "description": "Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly",
+                    "type": "string"
+                },
+                "location": {
+                    "description": "Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US",
+                    "type": "string"
+                },
+                "defaultBucket": {
+                    "description": "Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly",
+                    "type": "string"
+                },
+                "dispatchRules": {
+                    "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a module or version. Rules are order-dependent.@OutputOnly",
+                    "items": {
+                        "$ref": "UrlDispatchRule"
+                    },
+                    "type": "array"
+                },
+                "defaultHostname": {
+                    "description": "Hostname used to reach the application, as resolved by App Engine.@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Network": {
+            "description": "Extra network settings. Only applicable for VM runtimes.",
+            "id": "Network",
+            "properties": {
+                "instanceTag": {
+                    "description": "Tag to apply to the VM instance during creation.",
+                    "type": "string"
+                },
+                "forwardedPorts": {
+                    "description": "List of ports, or port pairs, to forward from the virtual machine to the application container.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Instance": {
+            "description": "An Instance resource is the computing unit that App Engine uses to automatically scale an application.",
+            "id": "Instance",
+            "properties": {
+                "requests": {
+                    "description": "Number of requests since this instance was started.@OutputOnly",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "appEngineRelease": {
+                    "description": "App Engine release this instance is running on.@OutputOnly",
+                    "type": "string"
+                },
+                "startTimestamp": {
+                    "description": "Time that this instance was started.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "vmName": {
+                    "description": "Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly",
+                    "type": "string"
+                },
+                "vmId": {
+                    "description": "Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly",
+                    "type": "string"
+                },
+                "qps": {
+                    "description": "Average queries per second (QPS) over the last minute.@OutputOnly",
+                    "format": "float",
+                    "type": "number"
+                },
+                "vmZoneName": {
+                    "description": "Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly",
+                    "type": "string"
+                },
+                "vmUnlocked": {
+                    "description": "Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly",
+                    "type": "boolean"
+                },
+                "name": {
+                    "description": "Full path to the Instance resource in the API. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.@OutputOnly",
+                    "type": "string"
+                },
+                "averageLatency": {
+                    "description": "Average latency (ms) over the last minute.@OutputOnly",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "vmIp": {
+                    "description": "The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly",
+                    "type": "string"
+                },
+                "memoryUsage": {
+                    "description": "Total memory in use (bytes).@OutputOnly",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "Relative name of the instance within the version. Example: instance-1.@OutputOnly",
+                    "type": "string"
+                },
+                "errors": {
+                    "description": "Number of errors since this instance was started.@OutputOnly",
+                    "format": "uint32",
+                    "type": "integer"
+                },
+                "availability": {
+                    "description": "Availability of the instance.@OutputOnly",
+                    "enum": [
+                        "UNSPECIFIED",
+                        "RESIDENT",
+                        "DYNAMIC"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "vmStatus": {
+                    "description": "Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "UrlDispatchRule": {
+            "description": "Rules to match an HTTP request and dispatch that request to a module.",
+            "id": "UrlDispatchRule",
+            "properties": {
+                "module": {
+                    "description": "Resource ID of a module in this application that should serve the matched request. The module must already exist. Example: default.",
+                    "type": "string"
+                },
+                "domain": {
+                    "description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".Defaults to matching all domains: \"*\".",
+                    "type": "string"
+                },
+                "path": {
+                    "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListVersionsResponse": {
+            "description": "Response message for Versions.ListVersions.",
+            "id": "ListVersionsResponse",
+            "properties": {
+                "versions": {
+                    "description": "The versions belonging to the requested module.",
+                    "items": {
+                        "$ref": "Version"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Continuation token for fetching the next page of results.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Module": {
+            "description": "A Module resource is a logical component of an application that can share state and communicate in a secure fashion with other modules. For example, an application that handles customer requests might include separate modules to handle tasks such as backend data analysis or API requests from mobile devices. Each module has a collection of versions that define a specific set of code used to implement the functionality of that module.",
+            "id": "Module",
+            "properties": {
+                "id": {
+                    "description": "Relative name of the module within the application. Example: default.@OutputOnly",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Full path to the Module resource in the API. Example: apps/myapp/modules/default.@OutputOnly",
+                    "type": "string"
+                },
+                "split": {
+                    "$ref": "TrafficSplit",
+                    "description": "Mapping that defines fractional HTTP traffic diversion to different versions within the module."
+                }
+            },
+            "type": "object"
+        },
+        "ApiEndpointHandler": {
+            "description": "Uses Google Cloud Endpoints to handle requests.",
+            "id": "ApiEndpointHandler",
+            "properties": {
+                "scriptPath": {
+                    "description": "Path to the script from the application root directory.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "StaticDirectoryHandler": {
+            "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static directory handlers make it easy to serve the entire contents of a directory as static files.",
+            "id": "StaticDirectoryHandler",
+            "properties": {
+                "mimeType": {
+                    "description": "MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are direved from each file's filename extension.",
+                    "type": "string"
+                },
+                "requireMatchingFile": {
+                    "description": "Whether this handler should match the request if the file referenced by the handler does not exist.",
+                    "type": "boolean"
+                },
+                "expiration": {
+                    "description": "Time a static file served by this handler should be cached.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "applicationReadable": {
+                    "description": "Whether files should also be uploaded as code data. By default, files declared in static directory handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.",
+                    "type": "boolean"
+                },
+                "httpHeaders": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "HTTP headers to use for all responses from these URLs.",
+                    "type": "object"
+                },
+                "directory": {
+                    "description": "Path to the directory containing the static files from the application root directory. Everything after the end of the matched URL pattern is appended to static_dir to form the full path to the requested file.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AutomaticScaling": {
+            "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.",
+            "id": "AutomaticScaling",
+            "properties": {
+                "requestUtilization": {
+                    "$ref": "RequestUtilization",
+                    "description": "Target scaling by request utilization."
+                },
+                "maxIdleInstances": {
+                    "description": "Maximum number of idle instances that should be maintained for this version.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "minIdleInstances": {
+                    "description": "Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a module.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "maxTotalInstances": {
+                    "description": "Maximum number of instances that should be started to handle requests.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "minTotalInstances": {
+                    "description": "Minimum number of instances that should be maintained for this version.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "networkUtilization": {
+                    "$ref": "NetworkUtilization",
+                    "description": "Target scaling by network usage."
+                },
+                "coolDownPeriod": {
+                    "description": "Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "maxConcurrentRequests": {
+                    "description": "Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "maxPendingLatency": {
+                    "description": "Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "cpuUtilization": {
+                    "$ref": "CpuUtilization",
+                    "description": "Target scaling by CPU usage."
+                },
+                "diskUtilization": {
+                    "$ref": "DiskUtilization",
+                    "description": "Target scaling by disk usage."
+                },
+                "minPendingLatency": {
+                    "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.",
+                    "format": "google-duration",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Location": {
+            "description": "A resource that represents Google Cloud Platform location.",
+            "id": "Location",
+            "properties": {
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Cross-service attributes for the location. For example\n{\"cloud.googleapis.com/region\": \"us-east1\"}\n",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Resource name for the location, which may vary between implementations. For example: \"projects/example-project/locations/us-east1\"",
+                    "type": "string"
+                },
+                "locationId": {
+                    "description": "The canonical id for this location. For example: \"us-east1\".",
+                    "type": "string"
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata. For example the available capacity at the given location.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "NetworkUtilization": {
+            "description": "Target scaling by network usage. Only applicable for VM runtimes.",
+            "id": "NetworkUtilization",
+            "properties": {
+                "targetReceivedBytesPerSec": {
+                    "description": "Target bytes received per second.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "targetSentPacketsPerSec": {
+                    "description": "Target packets sent per second.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "targetReceivedPacketsPerSec": {
+                    "description": "Target packets received per second.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "targetSentBytesPerSec": {
+                    "description": "Target bytes sent per second.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "HealthCheck": {
+            "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.",
+            "id": "HealthCheck",
+            "properties": {
+                "unhealthyThreshold": {
+                    "description": "Number of consecutive failed health checks required before removing traffic.",
+                    "format": "uint32",
+                    "type": "integer"
+                },
+                "disableHealthCheck": {
+                    "description": "Whether to explicitly disable health checks for this instance.",
+                    "type": "boolean"
+                },
+                "host": {
+                    "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\"",
+                    "type": "string"
+                },
+                "healthyThreshold": {
+                    "description": "Number of consecutive successful health checks required before receiving traffic.",
+                    "format": "uint32",
+                    "type": "integer"
+                },
+                "restartThreshold": {
+                    "description": "Number of consecutive failed health checks required before an instance is restarted.",
+                    "format": "uint32",
+                    "type": "integer"
+                },
+                "checkInterval": {
+                    "description": "Interval between health checks.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "timeout": {
+                    "description": "Time before the health check is considered failed.",
+                    "format": "google-duration",
                     "type": "string"
                 }
             },
diff --git a/discovery/googleapis_beta/appengine__v1beta5.json b/discovery/googleapis_beta/appengine__v1beta5.json
index 03968a0..3838f73 100644
--- a/discovery/googleapis_beta/appengine__v1beta5.json
+++ b/discovery/googleapis_beta/appengine__v1beta5.json
@@ -2,14 +2,14 @@
     "auth": {
         "oauth2": {
             "scopes": {
+                "https://www.googleapis.com/auth/appengine.admin": {
+                    "description": "View and manage your applications deployed on Google App Engine"
+                },
                 "https://www.googleapis.com/auth/cloud-platform.read-only": {
                     "description": "View your data across Google Cloud Platform services"
                 },
                 "https://www.googleapis.com/auth/cloud-platform": {
                     "description": "View and manage your data across Google Cloud Platform services"
-                },
-                "https://www.googleapis.com/auth/appengine.admin": {
-                    "description": "View and manage your applications deployed on Google App Engine"
                 }
             }
         }
@@ -30,16 +30,27 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
         "uploadType": {
             "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -74,13 +85,13 @@
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
@@ -104,17 +115,6 @@
             "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
         }
     },
     "protocol": "rest",
@@ -129,17 +129,17 @@
                         "appsId"
                     ],
                     "parameters": {
-                        "appsId": {
-                            "description": "Part of `name`. Name of the Application resource to update. Example: apps/myapp.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        },
                         "mask": {
                             "description": "Standard field mask for the set of fields to be updated.",
                             "format": "google-fieldmask",
                             "location": "query",
                             "type": "string"
+                        },
+                        "appsId": {
+                            "description": "Part of `name`. Name of the Application resource to update. Example: apps/myapp.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
                         }
                     },
                     "path": "v1beta5/apps/{appsId}",
@@ -202,36 +202,6 @@
             "resources": {
                 "services": {
                     "methods": {
-                        "delete": {
-                            "description": "Deletes the specified service and all enclosed versions.",
-                            "httpMethod": "DELETE",
-                            "id": "appengine.apps.services.delete",
-                            "parameterOrder": [
-                                "appsId",
-                                "servicesId"
-                            ],
-                            "parameters": {
-                                "appsId": {
-                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "servicesId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta5/apps/{appsId}/services/{servicesId}",
-                            "response": {
-                                "$ref": "Operation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
                         "patch": {
                             "description": "Updates the configuration of the specified service.",
                             "httpMethod": "PATCH",
@@ -241,12 +211,6 @@
                                 "servicesId"
                             ],
                             "parameters": {
-                                "servicesId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
                                 "appsId": {
                                     "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default.",
                                     "location": "path",
@@ -263,6 +227,12 @@
                                     "format": "google-fieldmask",
                                     "location": "query",
                                     "type": "string"
+                                },
+                                "servicesId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
                                 }
                             },
                             "path": "v1beta5/apps/{appsId}/services/{servicesId}",
@@ -284,6 +254,12 @@
                                 "appsId"
                             ],
                             "parameters": {
+                                "pageSize": {
+                                    "description": "Maximum results to return per page.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
                                 "pageToken": {
                                     "description": "Continuation token for fetching the next page of results.",
                                     "location": "query",
@@ -294,12 +270,6 @@
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Maximum results to return per page.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
                                 }
                             },
                             "path": "v1beta5/apps/{appsId}/services",
@@ -343,6 +313,36 @@
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/cloud-platform.read-only"
                             ]
+                        },
+                        "delete": {
+                            "description": "Deletes the specified service and all enclosed versions.",
+                            "httpMethod": "DELETE",
+                            "id": "appengine.apps.services.delete",
+                            "parameterOrder": [
+                                "appsId",
+                                "servicesId"
+                            ],
+                            "parameters": {
+                                "servicesId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "appsId": {
+                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta5/apps/{appsId}/services/{servicesId}",
+                            "response": {
+                                "$ref": "Operation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
                         }
                     },
                     "resources": {
@@ -358,12 +358,6 @@
                                         "versionsId"
                                     ],
                                     "parameters": {
-                                        "versionsId": {
-                                            "description": "Part of `name`. See documentation of `appsId`.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
                                         "servicesId": {
                                             "description": "Part of `name`. See documentation of `appsId`.",
                                             "location": "path",
@@ -375,6 +369,12 @@
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
+                                        },
+                                        "versionsId": {
+                                            "description": "Part of `name`. See documentation of `appsId`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
                                         }
                                     },
                                     "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
@@ -440,6 +440,21 @@
                                         "servicesId"
                                     ],
                                     "parameters": {
+                                        "pageSize": {
+                                            "description": "Maximum results to return per page.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "view": {
+                                            "description": "Controls the set of fields returned in the List response.",
+                                            "enum": [
+                                                "BASIC",
+                                                "FULL"
+                                            ],
+                                            "location": "query",
+                                            "type": "string"
+                                        },
                                         "servicesId": {
                                             "description": "Part of `name`. See documentation of `appsId`.",
                                             "location": "path",
@@ -456,21 +471,6 @@
                                             "location": "path",
                                             "required": true,
                                             "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Maximum results to return per page.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "view": {
-                                            "description": "Controls the set of fields returned in the List response.",
-                                            "enum": [
-                                                "BASIC",
-                                                "FULL"
-                                            ],
-                                            "location": "query",
-                                            "type": "string"
                                         }
                                     },
                                     "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions",
@@ -568,50 +568,6 @@
                             "resources": {
                                 "instances": {
                                     "methods": {
-                                        "delete": {
-                                            "description": "Stops a running instance.",
-                                            "httpMethod": "DELETE",
-                                            "id": "appengine.apps.services.versions.instances.delete",
-                                            "parameterOrder": [
-                                                "appsId",
-                                                "servicesId",
-                                                "versionsId",
-                                                "instancesId"
-                                            ],
-                                            "parameters": {
-                                                "servicesId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "instancesId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "appsId": {
-                                                    "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp/services/default/versions/v1/instances/instance-1\".",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "versionsId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}",
-                                            "response": {
-                                                "$ref": "Operation"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform"
-                                            ]
-                                        },
                                         "list": {
                                             "description": "Lists the instances of a version.Tip: To aggregate details about instances over time, see the Stackdriver Monitoring API (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).",
                                             "httpMethod": "GET",
@@ -622,17 +578,6 @@
                                                 "versionsId"
                                             ],
                                             "parameters": {
-                                                "pageToken": {
-                                                    "description": "Continuation token for fetching the next page of results.",
-                                                    "location": "query",
-                                                    "type": "string"
-                                                },
-                                                "appsId": {
-                                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
                                                 "pageSize": {
                                                     "description": "Maximum results to return per page.",
                                                     "format": "int32",
@@ -650,6 +595,17 @@
                                                     "location": "path",
                                                     "required": true,
                                                     "type": "string"
+                                                },
+                                                "pageToken": {
+                                                    "description": "Continuation token for fetching the next page of results.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "appsId": {
+                                                    "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
                                                 }
                                             },
                                             "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances",
@@ -719,6 +675,12 @@
                                                 "instancesId"
                                             ],
                                             "parameters": {
+                                                "versionsId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
                                                 "servicesId": {
                                                     "description": "Part of `name`. See documentation of `appsId`.",
                                                     "location": "path",
@@ -736,12 +698,6 @@
                                                     "location": "path",
                                                     "required": true,
                                                     "type": "string"
-                                                },
-                                                "versionsId": {
-                                                    "description": "Part of `name`. See documentation of `appsId`.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
                                                 }
                                             },
                                             "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}:debug",
@@ -754,6 +710,50 @@
                                             "scopes": [
                                                 "https://www.googleapis.com/auth/cloud-platform"
                                             ]
+                                        },
+                                        "delete": {
+                                            "description": "Stops a running instance.",
+                                            "httpMethod": "DELETE",
+                                            "id": "appengine.apps.services.versions.instances.delete",
+                                            "parameterOrder": [
+                                                "appsId",
+                                                "servicesId",
+                                                "versionsId",
+                                                "instancesId"
+                                            ],
+                                            "parameters": {
+                                                "instancesId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "appsId": {
+                                                    "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp/services/default/versions/v1/instances/instance-1\".",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "versionsId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "servicesId": {
+                                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}",
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
                                         }
                                     }
                                 }
@@ -803,11 +803,6 @@
                                 "appsId"
                             ],
                             "parameters": {
-                                "filter": {
-                                    "description": "The standard list filter.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
                                 "pageToken": {
                                     "description": "The standard list page token.",
                                     "location": "query",
@@ -824,6 +819,11 @@
                                     "format": "int32",
                                     "location": "query",
                                     "type": "integer"
+                                },
+                                "filter": {
+                                    "description": "The standard list filter.",
+                                    "location": "query",
+                                    "type": "string"
                                 }
                             },
                             "path": "v1beta5/apps/{appsId}/operations",
@@ -849,14 +849,14 @@
                                 "locationsId"
                             ],
                             "parameters": {
-                                "appsId": {
-                                    "description": "Part of `name`. Resource name for the location.",
+                                "locationsId": {
+                                    "description": "Part of `name`. See documentation of `appsId`.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
                                 },
-                                "locationsId": {
-                                    "description": "Part of `name`. See documentation of `appsId`.",
+                                "appsId": {
+                                    "description": "Part of `name`. Resource name for the location.",
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
@@ -880,6 +880,12 @@
                                 "appsId"
                             ],
                             "parameters": {
+                                "pageSize": {
+                                    "description": "The standard list page size.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
                                 "filter": {
                                     "description": "The standard list filter.",
                                     "location": "query",
@@ -895,12 +901,6 @@
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "The standard list page size.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
                                 }
                             },
                             "path": "v1beta5/apps/{appsId}/locations",
@@ -918,370 +918,22 @@
             }
         }
     },
-    "revision": "20170926",
+    "revision": "20171009",
     "rootUrl": "https://appengine.googleapis.com/",
     "schemas": {
-        "Status": {
-            "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.",
-            "id": "Status",
-            "properties": {
-                "details": {
-                    "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                },
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "IdentityAwareProxy": {
-            "description": "Identity-Aware Proxy",
-            "id": "IdentityAwareProxy",
-            "properties": {
-                "oauth2ClientSecret": {
-                    "description": "For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2_client_secret_sha256 field.@InputOnly",
-                    "type": "string"
-                },
-                "oauth2ClientId": {
-                    "description": "OAuth2 client ID to use for the authentication flow.",
-                    "type": "string"
-                },
-                "oauth2ClientSecretSha256": {
-                    "description": "Hex-encoded SHA-256 hash of the client secret.@OutputOnly",
-                    "type": "string"
-                },
-                "enabled": {
-                    "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.If true, the oauth2_client_id and oauth2_client_secret fields must be non-empty.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "ManualScaling": {
-            "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.",
-            "id": "ManualScaling",
-            "properties": {
-                "instances": {
-                    "description": "Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "TrafficSplit": {
-            "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.",
-            "id": "TrafficSplit",
-            "properties": {
-                "allocations": {
-                    "additionalProperties": {
-                        "format": "double",
-                        "type": "number"
-                    },
-                    "description": "Mapping from version IDs within the service to fractional (0.000, 1] allocations of traffic for that version. Each version can be specified only once, but some versions in the service may not have any traffic allocation. Services that have traffic allocated cannot be deleted until either the service is deleted or their traffic allocation is removed. Allocations must sum to 1. Up to two decimal place precision is supported for IP-based splits and up to three decimal places is supported for cookie-based splits.",
-                    "type": "object"
-                },
-                "shardBy": {
-                    "description": "Mechanism used to determine which version a request is sent to. The traffic selection algorithm will be stable for either type until allocations are changed.",
-                    "enum": [
-                        "UNSPECIFIED",
-                        "COOKIE",
-                        "IP"
-                    ],
-                    "enumDescriptions": [
-                        "Diversion method unspecified.",
-                        "Diversion based on a specially named cookie, \"GOOGAPPUID.\" The cookie must be set by the application itself or else no diversion will occur.",
-                        "Diversion based on applying the modulus operation to a fingerprint of the IP address."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LocationMetadata": {
-            "description": "Metadata for the given google.cloud.location.Location.",
-            "id": "LocationMetadata",
-            "properties": {
-                "flexibleEnvironmentAvailable": {
-                    "description": "App Engine Flexible Environment is available in the given location.@OutputOnly",
-                    "type": "boolean"
-                },
-                "standardEnvironmentAvailable": {
-                    "description": "App Engine Standard Environment is available in the given location.@OutputOnly",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "OperationMetadataV1Beta": {
-            "description": "Metadata for the given google.longrunning.Operation.",
-            "id": "OperationMetadataV1Beta",
-            "properties": {
-                "user": {
-                    "description": "User who requested this operation.@OutputOnly",
-                    "type": "string"
-                },
-                "target": {
-                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
-                    "type": "string"
-                },
-                "ephemeralMessage": {
-                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
-                    "type": "string"
-                },
-                "method": {
-                    "description": "API method that initiated this operation. Example: google.appengine.v1beta.Versions.CreateVersion.@OutputOnly",
-                    "type": "string"
-                },
-                "endTime": {
-                    "description": "Time that this operation completed.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "warning": {
-                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "insertTime": {
-                    "description": "Time that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListServicesResponse": {
-            "description": "Response message for Services.ListServices.",
-            "id": "ListServicesResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "Continuation token for fetching the next page of results.",
-                    "type": "string"
-                },
-                "services": {
-                    "description": "The services belonging to the requested application.",
-                    "items": {
-                        "$ref": "Service"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Resources": {
-            "description": "Machine resources for a version.",
-            "id": "Resources",
-            "properties": {
-                "volumes": {
-                    "description": "Volumes mounted within the app container.",
-                    "items": {
-                        "$ref": "Volume"
-                    },
-                    "type": "array"
-                },
-                "diskGb": {
-                    "description": "Disk size (GB) needed.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "memoryGb": {
-                    "description": "Memory (GB) needed.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "cpu": {
-                    "description": "Number of CPU cores needed.",
-                    "format": "double",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "Deployment": {
-            "description": "Code and application artifacts used to deploy a version to App Engine.",
-            "id": "Deployment",
-            "properties": {
-                "files": {
-                    "additionalProperties": {
-                        "$ref": "FileInfo"
-                    },
-                    "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.",
-                    "type": "object"
-                },
-                "sourceReferences": {
-                    "description": "Origin of the source code for this deployment. There can be more than one source reference per version if source code is distributed among multiple repositories.",
-                    "items": {
-                        "$ref": "SourceReference"
-                    },
-                    "type": "array"
-                },
-                "container": {
-                    "$ref": "ContainerInfo",
-                    "description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment."
-                }
-            },
-            "type": "object"
-        },
-        "Volume": {
-            "description": "Volumes mounted within the app container. Only applicable for VM runtimes.",
-            "id": "Volume",
-            "properties": {
-                "sizeGb": {
-                    "description": "Volume size in gigabytes.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "name": {
-                    "description": "Unique name for the volume.",
-                    "type": "string"
-                },
-                "volumeType": {
-                    "description": "Underlying volume type, e.g. 'tmpfs'.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Service": {
-            "description": "A Service resource is a logical component of an application that can share state and communicate in a secure fashion with other services. For example, an application that handles customer requests might include separate services to handle other tasks such as API requests from mobile devices or backend data analysis. Each service has a collection of versions that define a specific set of code used to implement the functionality of that service.",
-            "id": "Service",
-            "properties": {
-                "name": {
-                    "description": "Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly",
-                    "type": "string"
-                },
-                "split": {
-                    "$ref": "TrafficSplit",
-                    "description": "Mapping that defines fractional HTTP traffic diversion to different versions within the service."
-                },
-                "id": {
-                    "description": "Relative name of the service within the application. Example: default.@OutputOnly",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListOperationsResponse": {
-            "description": "The response message for Operations.ListOperations.",
-            "id": "ListOperationsResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
-                },
-                "operations": {
-                    "description": "A list of operations that matches the specified filter in the request.",
-                    "items": {
-                        "$ref": "Operation"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "OperationMetadata": {
-            "description": "Metadata for the given google.longrunning.Operation.",
-            "id": "OperationMetadata",
-            "properties": {
-                "user": {
-                    "description": "User who requested this operation.@OutputOnly",
-                    "type": "string"
-                },
-                "target": {
-                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/modules/default.@OutputOnly",
-                    "type": "string"
-                },
-                "method": {
-                    "description": "API method that initiated this operation. Example: google.appengine.v1beta4.Version.CreateVersion.@OutputOnly",
-                    "type": "string"
-                },
-                "endTime": {
-                    "description": "Timestamp that this operation completed.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "operationType": {
-                    "description": "Type of this operation. Deprecated, use method field instead. Example: \"create_version\".@OutputOnly",
-                    "type": "string"
-                },
-                "insertTime": {
-                    "description": "Timestamp that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "ListInstancesResponse": {
             "description": "Response message for Instances.ListInstances.",
             "id": "ListInstancesResponse",
             "properties": {
-                "nextPageToken": {
-                    "description": "Continuation token for fetching the next page of results.",
-                    "type": "string"
-                },
                 "instances": {
                     "description": "The instances belonging to the requested version.",
                     "items": {
                         "$ref": "Instance"
                     },
                     "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "OperationMetadataV1": {
-            "description": "Metadata for the given google.longrunning.Operation.",
-            "id": "OperationMetadataV1",
-            "properties": {
-                "endTime": {
-                    "description": "Time that this operation completed.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
                 },
-                "warning": {
-                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "insertTime": {
-                    "description": "Time that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "target": {
-                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
-                    "type": "string"
-                },
-                "user": {
-                    "description": "User who requested this operation.@OutputOnly",
-                    "type": "string"
-                },
-                "ephemeralMessage": {
-                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
-                    "type": "string"
-                },
-                "method": {
-                    "description": "API method that initiated this operation. Example: google.appengine.v1.Versions.CreateVersion.@OutputOnly",
+                "nextPageToken": {
+                    "description": "Continuation token for fetching the next page of results.",
                     "type": "string"
                 }
             },
@@ -1320,10 +972,62 @@
             },
             "type": "object"
         },
+        "OperationMetadataV1": {
+            "description": "Metadata for the given google.longrunning.Operation.",
+            "id": "OperationMetadataV1",
+            "properties": {
+                "warning": {
+                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "insertTime": {
+                    "description": "Time that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
+                    "type": "string"
+                },
+                "user": {
+                    "description": "User who requested this operation.@OutputOnly",
+                    "type": "string"
+                },
+                "ephemeralMessage": {
+                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
+                    "type": "string"
+                },
+                "method": {
+                    "description": "API method that initiated this operation. Example: google.appengine.v1.Versions.CreateVersion.@OutputOnly",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "Time that this operation completed.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "OperationMetadataV1Alpha": {
             "description": "Metadata for the given google.longrunning.Operation.",
             "id": "OperationMetadataV1Alpha",
             "properties": {
+                "warning": {
+                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "insertTime": {
+                    "description": "Time that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
                 "user": {
                     "description": "User who requested this operation.@OutputOnly",
                     "type": "string"
@@ -1344,18 +1048,56 @@
                     "description": "Time that this operation completed.@OutputOnly",
                     "format": "google-datetime",
                     "type": "string"
-                },
-                "insertTime": {
-                    "description": "Time that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
+                }
+            },
+            "type": "object"
+        },
+        "Application": {
+            "description": "An Application resource contains the top-level configuration of an App Engine application.",
+            "id": "Application",
+            "properties": {
+                "authDomain": {
+                    "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.",
                     "type": "string"
                 },
-                "warning": {
-                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
+                "iap": {
+                    "$ref": "IdentityAwareProxy"
+                },
+                "id": {
+                    "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.",
+                    "type": "string"
+                },
+                "defaultCookieExpiration": {
+                    "description": "Cookie expiration policy for this application.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "codeBucket": {
+                    "description": "A Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly",
+                    "type": "string"
+                },
+                "location": {
+                    "description": "Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US",
+                    "type": "string"
+                },
+                "defaultBucket": {
+                    "description": "A Google Cloud Storage bucket that can be used by the application to store content.@OutputOnly",
+                    "type": "string"
+                },
+                "dispatchRules": {
+                    "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent.@OutputOnly",
                     "items": {
-                        "type": "string"
+                        "$ref": "UrlDispatchRule"
                     },
                     "type": "array"
+                },
+                "defaultHostname": {
+                    "description": "Hostname used to reach the application, as resolved by App Engine.@OutputOnly",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1386,79 +1128,24 @@
             },
             "type": "object"
         },
-        "Application": {
-            "description": "An Application resource contains the top-level configuration of an App Engine application.",
-            "id": "Application",
-            "properties": {
-                "codeBucket": {
-                    "description": "A Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly",
-                    "type": "string"
-                },
-                "location": {
-                    "description": "Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US",
-                    "type": "string"
-                },
-                "defaultBucket": {
-                    "description": "A Google Cloud Storage bucket that can be used by the application to store content.@OutputOnly",
-                    "type": "string"
-                },
-                "dispatchRules": {
-                    "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent.@OutputOnly",
-                    "items": {
-                        "$ref": "UrlDispatchRule"
-                    },
-                    "type": "array"
-                },
-                "defaultHostname": {
-                    "description": "Hostname used to reach the application, as resolved by App Engine.@OutputOnly",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly",
-                    "type": "string"
-                },
-                "authDomain": {
-                    "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.",
-                    "type": "string"
-                },
-                "iap": {
-                    "$ref": "IdentityAwareProxy"
-                },
-                "defaultCookieExpiration": {
-                    "description": "Cookie expiration policy for this application.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "UrlDispatchRule": {
-            "description": "Rules to match an HTTP request and dispatch that request to a service.",
-            "id": "UrlDispatchRule",
-            "properties": {
-                "service": {
-                    "description": "Resource id of a service in this application that should serve the matched request. The service must already exist. Example: default.",
-                    "type": "string"
-                },
-                "domain": {
-                    "description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".Defaults to matching all domains: \"*\".",
-                    "type": "string"
-                },
-                "path": {
-                    "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "Instance": {
             "description": "An Instance resource is the computing unit that App Engine uses to automatically scale an application.",
             "id": "Instance",
             "properties": {
+                "requests": {
+                    "description": "Number of requests since this instance was started.@OutputOnly",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "appEngineRelease": {
+                    "description": "App Engine release this instance is running on.@OutputOnly",
+                    "type": "string"
+                },
+                "startTimestamp": {
+                    "description": "Time that this instance was started.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
                 "vmName": {
                     "description": "Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly",
                     "type": "string"
@@ -1489,8 +1176,8 @@
                     "format": "int32",
                     "type": "integer"
                 },
-                "id": {
-                    "description": "Relative name of the instance within the version. Example: instance-1.@OutputOnly",
+                "vmIp": {
+                    "description": "The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly",
                     "type": "string"
                 },
                 "memoryUsage": {
@@ -1498,15 +1185,10 @@
                     "format": "int64",
                     "type": "string"
                 },
-                "vmIp": {
-                    "description": "The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly",
+                "id": {
+                    "description": "Relative name of the instance within the version. Example: instance-1.@OutputOnly",
                     "type": "string"
                 },
-                "errors": {
-                    "description": "Number of errors since this instance was started.@OutputOnly",
-                    "format": "uint32",
-                    "type": "integer"
-                },
                 "availability": {
                     "description": "Availability of the instance.@OutputOnly",
                     "enum": [
@@ -1525,18 +1207,28 @@
                     "description": "Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly",
                     "type": "string"
                 },
-                "requests": {
-                    "description": "Number of requests since this instance was started.@OutputOnly",
-                    "format": "int32",
+                "errors": {
+                    "description": "Number of errors since this instance was started.@OutputOnly",
+                    "format": "uint32",
                     "type": "integer"
-                },
-                "appEngineRelease": {
-                    "description": "App Engine release this instance is running on.@OutputOnly",
+                }
+            },
+            "type": "object"
+        },
+        "UrlDispatchRule": {
+            "description": "Rules to match an HTTP request and dispatch that request to a service.",
+            "id": "UrlDispatchRule",
+            "properties": {
+                "path": {
+                    "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.",
                     "type": "string"
                 },
-                "startTimestamp": {
-                    "description": "Time that this instance was started.@OutputOnly",
-                    "format": "google-datetime",
+                "service": {
+                    "description": "Resource id of a service in this application that should serve the matched request. The service must already exist. Example: default.",
+                    "type": "string"
+                },
+                "domain": {
+                    "description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".Defaults to matching all domains: \"*\".",
                     "type": "string"
                 }
             },
@@ -1575,6 +1267,19 @@
             "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.",
             "id": "AutomaticScaling",
             "properties": {
+                "cpuUtilization": {
+                    "$ref": "CpuUtilization",
+                    "description": "Target scaling by CPU usage."
+                },
+                "diskUtilization": {
+                    "$ref": "DiskUtilization",
+                    "description": "Target scaling by disk usage."
+                },
+                "minPendingLatency": {
+                    "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
                 "maxIdleInstances": {
                     "description": "Maximum number of idle instances that should be maintained for this version.",
                     "format": "int32",
@@ -1617,19 +1322,6 @@
                     "description": "Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.",
                     "format": "google-duration",
                     "type": "string"
-                },
-                "cpuUtilization": {
-                    "$ref": "CpuUtilization",
-                    "description": "Target scaling by CPU usage."
-                },
-                "diskUtilization": {
-                    "$ref": "DiskUtilization",
-                    "description": "Target scaling by disk usage."
-                },
-                "minPendingLatency": {
-                    "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.",
-                    "format": "google-duration",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1695,11 +1387,6 @@
             "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.",
             "id": "HealthCheck",
             "properties": {
-                "timeout": {
-                    "description": "Time before the health check is considered failed.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
                 "unhealthyThreshold": {
                     "description": "Number of consecutive failed health checks required before removing traffic.",
                     "format": "uint32",
@@ -1727,6 +1414,11 @@
                     "description": "Interval between health checks.",
                     "format": "google-duration",
                     "type": "string"
+                },
+                "timeout": {
+                    "description": "Time before the health check is considered failed.",
+                    "format": "google-duration",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1757,6 +1449,21 @@
             },
             "type": "object"
         },
+        "Library": {
+            "description": "Third-party Python runtime library that is required by the application.",
+            "id": "Library",
+            "properties": {
+                "version": {
+                    "description": "Version of the library to select, or \"latest\".",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Name of the library. Example: \"django\".",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "OperationMetadataV1Beta5": {
             "description": "Metadata for the given google.longrunning.Operation.",
             "id": "OperationMetadataV1Beta5",
@@ -1786,21 +1493,6 @@
             },
             "type": "object"
         },
-        "Library": {
-            "description": "Third-party Python runtime library that is required by the application.",
-            "id": "Library",
-            "properties": {
-                "version": {
-                    "description": "Version of the library to select, or \"latest\".",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Name of the library. Example: \"django\".",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "ListLocationsResponse": {
             "description": "The response message for Locations.ListLocations.",
             "id": "ListLocationsResponse",
@@ -1823,72 +1515,6 @@
             "description": "A Version resource is a specific set of source code and configuration files that are deployed into a service.",
             "id": "Version",
             "properties": {
-                "instanceClass": {
-                    "description": "Instance class that is used to run this version. Valid values are:\nAutomaticScaling: F1, F2, F4, F4_1G\nManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.",
-                    "type": "string"
-                },
-                "servingStatus": {
-                    "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.",
-                    "enum": [
-                        "SERVING_STATUS_UNSPECIFIED",
-                        "SERVING",
-                        "STOPPED"
-                    ],
-                    "enumDescriptions": [
-                        "Not specified.",
-                        "Currently serving. Instances are created according to the scaling settings of the version.",
-                        "Disabled from serving. No instances will be created and the scaling settings are ignored until the state of the version changes to SERVING."
-                    ],
-                    "type": "string"
-                },
-                "deployment": {
-                    "$ref": "Deployment",
-                    "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set."
-                },
-                "runtimeApiVersion": {
-                    "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard/<language>/config/appref",
-                    "type": "string"
-                },
-                "resources": {
-                    "$ref": "Resources",
-                    "description": "Machine resources for this version. Only applicable for VM runtimes."
-                },
-                "inboundServices": {
-                    "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service.",
-                    "enumDescriptions": [
-                        "Not specified.",
-                        "Allows an application to receive mail.",
-                        "Allows an application to receive email-bound notifications.",
-                        "Allows an application to receive error stanzas.",
-                        "Allows an application to receive instant messages.",
-                        "Allows an application to receive user subscription POSTs.",
-                        "Allows an application to receive a user's chat presence.",
-                        "Registers an application for notifications when a client connects or disconnects from a channel.",
-                        "Enables warmup requests."
-                    ],
-                    "items": {
-                        "enum": [
-                            "INBOUND_SERVICE_UNSPECIFIED",
-                            "INBOUND_SERVICE_MAIL",
-                            "INBOUND_SERVICE_MAIL_BOUNCE",
-                            "INBOUND_SERVICE_XMPP_ERROR",
-                            "INBOUND_SERVICE_XMPP_MESSAGE",
-                            "INBOUND_SERVICE_XMPP_SUBSCRIBE",
-                            "INBOUND_SERVICE_XMPP_PRESENCE",
-                            "INBOUND_SERVICE_CHANNEL_PRESENCE",
-                            "INBOUND_SERVICE_WARMUP"
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "errorHandlers": {
-                    "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.",
-                    "items": {
-                        "$ref": "ErrorHandler"
-                    },
-                    "type": "array"
-                },
                 "defaultExpiration": {
                     "description": "Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.",
                     "format": "google-duration",
@@ -1991,6 +1617,72 @@
                 "vm": {
                     "description": "Whether to deploy this version in a container on a virtual machine.",
                     "type": "boolean"
+                },
+                "instanceClass": {
+                    "description": "Instance class that is used to run this version. Valid values are:\nAutomaticScaling: F1, F2, F4, F4_1G\nManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.",
+                    "type": "string"
+                },
+                "servingStatus": {
+                    "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.",
+                    "enum": [
+                        "SERVING_STATUS_UNSPECIFIED",
+                        "SERVING",
+                        "STOPPED"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified.",
+                        "Currently serving. Instances are created according to the scaling settings of the version.",
+                        "Disabled from serving. No instances will be created and the scaling settings are ignored until the state of the version changes to SERVING."
+                    ],
+                    "type": "string"
+                },
+                "deployment": {
+                    "$ref": "Deployment",
+                    "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set."
+                },
+                "runtimeApiVersion": {
+                    "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard/<language>/config/appref",
+                    "type": "string"
+                },
+                "resources": {
+                    "$ref": "Resources",
+                    "description": "Machine resources for this version. Only applicable for VM runtimes."
+                },
+                "inboundServices": {
+                    "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service.",
+                    "enumDescriptions": [
+                        "Not specified.",
+                        "Allows an application to receive mail.",
+                        "Allows an application to receive email-bound notifications.",
+                        "Allows an application to receive error stanzas.",
+                        "Allows an application to receive instant messages.",
+                        "Allows an application to receive user subscription POSTs.",
+                        "Allows an application to receive a user's chat presence.",
+                        "Registers an application for notifications when a client connects or disconnects from a channel.",
+                        "Enables warmup requests."
+                    ],
+                    "items": {
+                        "enum": [
+                            "INBOUND_SERVICE_UNSPECIFIED",
+                            "INBOUND_SERVICE_MAIL",
+                            "INBOUND_SERVICE_MAIL_BOUNCE",
+                            "INBOUND_SERVICE_XMPP_ERROR",
+                            "INBOUND_SERVICE_XMPP_MESSAGE",
+                            "INBOUND_SERVICE_XMPP_SUBSCRIBE",
+                            "INBOUND_SERVICE_XMPP_PRESENCE",
+                            "INBOUND_SERVICE_CHANNEL_PRESENCE",
+                            "INBOUND_SERVICE_WARMUP"
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "errorHandlers": {
+                    "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.",
+                    "items": {
+                        "$ref": "ErrorHandler"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -2023,57 +1715,10 @@
             },
             "type": "object"
         },
-        "EndpointsApiService": {
-            "description": "Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a \"service\" resource in the Service Management API (https://cloud.google.com/service-management/overview).",
-            "id": "EndpointsApiService",
-            "properties": {
-                "configId": {
-                    "description": "Endpoints service configuration id as specified by the Service Management API. For example \"2016-09-19r1\"",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Endpoints service name which is the name of the \"service\" resource in the Service Management API. For example \"myapi.endpoints.myproject.cloud.goog\"",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "UrlMap": {
             "description": "URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript.",
             "id": "UrlMap",
             "properties": {
-                "script": {
-                    "$ref": "ScriptHandler",
-                    "description": "Executes a script to handle the request that matches this URL pattern."
-                },
-                "urlRegex": {
-                    "description": "A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.",
-                    "type": "string"
-                },
-                "login": {
-                    "description": "Level of login required to access this resource.",
-                    "enum": [
-                        "LOGIN_UNSPECIFIED",
-                        "LOGIN_OPTIONAL",
-                        "LOGIN_ADMIN",
-                        "LOGIN_REQUIRED"
-                    ],
-                    "enumDescriptions": [
-                        "Not specified. LOGIN_OPTIONAL is assumed.",
-                        "Does not require that the user is signed in.",
-                        "If the user is not signed in, the auth_fail_action is taken. In addition, if the user is not an administrator for the application, they are given an error message regardless of auth_fail_action. If the user is an administrator, the handler proceeds.",
-                        "If the user has signed in, the handler proceeds normally. Otherwise, the action given in auth_fail_action is taken."
-                    ],
-                    "type": "string"
-                },
-                "apiEndpoint": {
-                    "$ref": "ApiEndpointHandler",
-                    "description": "Uses API Endpoints to handle requests."
-                },
-                "staticFiles": {
-                    "$ref": "StaticFilesHandler",
-                    "description": "Returns the contents of a file, such as an image, as the response."
-                },
                 "redirectHttpResponseCode": {
                     "description": "30x code to use when performing redirects for the secure field. Defaults to 302.",
                     "enum": [
@@ -2123,20 +1768,17 @@
                         "Rejects request with an401 HTTP status code and an error message."
                     ],
                     "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ApiConfigHandler": {
-            "description": "Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers.",
-            "id": "ApiConfigHandler",
-            "properties": {
+                },
                 "script": {
-                    "description": "Path to the script from the application root directory.",
+                    "$ref": "ScriptHandler",
+                    "description": "Executes a script to handle the request that matches this URL pattern."
+                },
+                "urlRegex": {
+                    "description": "A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.",
                     "type": "string"
                 },
                 "login": {
-                    "description": "Level of login required to access this resource. Defaults to optional.",
+                    "description": "Level of login required to access this resource.",
                     "enum": [
                         "LOGIN_UNSPECIFIED",
                         "LOGIN_OPTIONAL",
@@ -2151,6 +1793,71 @@
                     ],
                     "type": "string"
                 },
+                "apiEndpoint": {
+                    "$ref": "ApiEndpointHandler",
+                    "description": "Uses API Endpoints to handle requests."
+                },
+                "staticFiles": {
+                    "$ref": "StaticFilesHandler",
+                    "description": "Returns the contents of a file, such as an image, as the response."
+                }
+            },
+            "type": "object"
+        },
+        "EndpointsApiService": {
+            "description": "Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a \"service\" resource in the Service Management API (https://cloud.google.com/service-management/overview).",
+            "id": "EndpointsApiService",
+            "properties": {
+                "configId": {
+                    "description": "Endpoints service configuration id as specified by the Service Management API. For example \"2016-09-19r1\"",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Endpoints service name which is the name of the \"service\" resource in the Service Management API. For example \"myapi.endpoints.myproject.cloud.goog\"",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a network API call.",
+            "id": "Operation",
+            "properties": {
+                "response": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.",
+                    "type": "string"
+                },
+                "error": {
+                    "$ref": "Status",
+                    "description": "The error result of the operation in case of failure or cancellation."
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+                    "type": "object"
+                },
+                "done": {
+                    "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "ApiConfigHandler": {
+            "description": "Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers.",
+            "id": "ApiConfigHandler",
+            "properties": {
                 "url": {
                     "description": "URL to serve the endpoint at.",
                     "type": "string"
@@ -2186,41 +1893,26 @@
                         "Rejects request with an401 HTTP status code and an error message."
                     ],
                     "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Operation": {
-            "description": "This resource represents a long-running operation that is the result of a network API call.",
-            "id": "Operation",
-            "properties": {
-                "done": {
-                    "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.",
-                    "type": "boolean"
                 },
-                "response": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.",
+                "script": {
+                    "description": "Path to the script from the application root directory.",
                     "type": "string"
                 },
-                "error": {
-                    "$ref": "Status",
-                    "description": "The error result of the operation in case of failure or cancellation."
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
-                    "type": "object"
+                "login": {
+                    "description": "Level of login required to access this resource. Defaults to optional.",
+                    "enum": [
+                        "LOGIN_UNSPECIFIED",
+                        "LOGIN_OPTIONAL",
+                        "LOGIN_ADMIN",
+                        "LOGIN_REQUIRED"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. LOGIN_OPTIONAL is assumed.",
+                        "Does not require that the user is signed in.",
+                        "If the user is not signed in, the auth_fail_action is taken. In addition, if the user is not an administrator for the application, they are given an error message regardless of auth_fail_action. If the user is an administrator, the handler proceeds.",
+                        "If the user has signed in, the handler proceeds normally. Otherwise, the action given in auth_fail_action is taken."
+                    ],
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2229,10 +1921,6 @@
             "description": "Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.",
             "id": "FileInfo",
             "properties": {
-                "sha1Sum": {
-                    "description": "The SHA1 hash of the file, in hex.",
-                    "type": "string"
-                },
                 "mimeType": {
                     "description": "The MIME type of the file.Defaults to the value from Google Cloud Storage.",
                     "type": "string"
@@ -2240,6 +1928,10 @@
                 "sourceUrl": {
                     "description": "URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.",
                     "type": "string"
+                },
+                "sha1Sum": {
+                    "description": "The SHA1 hash of the file, in hex.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -2248,17 +1940,6 @@
             "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them.",
             "id": "StaticFilesHandler",
             "properties": {
-                "applicationReadable": {
-                    "description": "Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.",
-                    "type": "boolean"
-                },
-                "httpHeaders": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "HTTP headers to use for all responses from these URLs.",
-                    "type": "object"
-                },
                 "uploadPathRegex": {
                     "description": "Regular expression that matches the file paths for all files that should be referenced by this handler.",
                     "type": "string"
@@ -2279,6 +1960,17 @@
                     "description": "Time a static file served by this handler should be cached.",
                     "format": "google-duration",
                     "type": "string"
+                },
+                "applicationReadable": {
+                    "description": "Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.",
+                    "type": "boolean"
+                },
+                "httpHeaders": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "HTTP headers to use for all responses from these URLs.",
+                    "type": "object"
                 }
             },
             "type": "object"
@@ -2294,27 +1986,15 @@
             },
             "type": "object"
         },
-        "BasicScaling": {
-            "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.",
-            "id": "BasicScaling",
-            "properties": {
-                "maxInstances": {
-                    "description": "Maximum number of instances to create for this version.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "idleTimeout": {
-                    "description": "Duration of time after the last request that an instance must wait before the instance is shut down.",
-                    "format": "google-duration",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "DiskUtilization": {
             "description": "Target scaling by disk usage. Only applicable for VM runtimes.",
             "id": "DiskUtilization",
             "properties": {
+                "targetReadOpsPerSec": {
+                    "description": "Target ops read per second.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "targetReadBytesPerSec": {
                     "description": "Target bytes read per second.",
                     "format": "int32",
@@ -2329,9 +2009,21 @@
                     "description": "Target bytes written per second.",
                     "format": "int32",
                     "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "BasicScaling": {
+            "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.",
+            "id": "BasicScaling",
+            "properties": {
+                "idleTimeout": {
+                    "description": "Duration of time after the last request that an instance must wait before the instance is shut down.",
+                    "format": "google-duration",
+                    "type": "string"
                 },
-                "targetReadOpsPerSec": {
-                    "description": "Target ops read per second.",
+                "maxInstances": {
+                    "description": "Maximum number of instances to create for this version.",
                     "format": "int32",
                     "type": "integer"
                 }
@@ -2342,6 +2034,16 @@
             "description": "Metadata for the given google.longrunning.Operation.",
             "id": "OperationMetadataExperimental",
             "properties": {
+                "insertTime": {
+                    "description": "Time that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "Time that this operation completed.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
                 "target": {
                     "description": "Name of the resource that this operation is acting on. Example: apps/myapp/customDomains/example.com.@OutputOnly",
                     "type": "string"
@@ -2353,16 +2055,6 @@
                 "method": {
                     "description": "API method that initiated this operation. Example: google.appengine.experimental.CustomDomains.CreateCustomDomain.@OutputOnly",
                     "type": "string"
-                },
-                "insertTime": {
-                    "description": "Time that this operation was created.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "endTime": {
-                    "description": "Time that this operation completed.@OutputOnly",
-                    "format": "google-datetime",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -2383,6 +2075,314 @@
                 }
             },
             "type": "object"
+        },
+        "Status": {
+            "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.",
+            "id": "Status",
+            "properties": {
+                "details": {
+                    "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                },
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "IdentityAwareProxy": {
+            "description": "Identity-Aware Proxy",
+            "id": "IdentityAwareProxy",
+            "properties": {
+                "oauth2ClientSecret": {
+                    "description": "For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2_client_secret_sha256 field.@InputOnly",
+                    "type": "string"
+                },
+                "oauth2ClientId": {
+                    "description": "OAuth2 client ID to use for the authentication flow.",
+                    "type": "string"
+                },
+                "oauth2ClientSecretSha256": {
+                    "description": "Hex-encoded SHA-256 hash of the client secret.@OutputOnly",
+                    "type": "string"
+                },
+                "enabled": {
+                    "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.If true, the oauth2_client_id and oauth2_client_secret fields must be non-empty.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "ManualScaling": {
+            "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.",
+            "id": "ManualScaling",
+            "properties": {
+                "instances": {
+                    "description": "Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "TrafficSplit": {
+            "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.",
+            "id": "TrafficSplit",
+            "properties": {
+                "allocations": {
+                    "additionalProperties": {
+                        "format": "double",
+                        "type": "number"
+                    },
+                    "description": "Mapping from version IDs within the service to fractional (0.000, 1] allocations of traffic for that version. Each version can be specified only once, but some versions in the service may not have any traffic allocation. Services that have traffic allocated cannot be deleted until either the service is deleted or their traffic allocation is removed. Allocations must sum to 1. Up to two decimal place precision is supported for IP-based splits and up to three decimal places is supported for cookie-based splits.",
+                    "type": "object"
+                },
+                "shardBy": {
+                    "description": "Mechanism used to determine which version a request is sent to. The traffic selection algorithm will be stable for either type until allocations are changed.",
+                    "enum": [
+                        "UNSPECIFIED",
+                        "COOKIE",
+                        "IP"
+                    ],
+                    "enumDescriptions": [
+                        "Diversion method unspecified.",
+                        "Diversion based on a specially named cookie, \"GOOGAPPUID.\" The cookie must be set by the application itself or else no diversion will occur.",
+                        "Diversion based on applying the modulus operation to a fingerprint of the IP address."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LocationMetadata": {
+            "description": "Metadata for the given google.cloud.location.Location.",
+            "id": "LocationMetadata",
+            "properties": {
+                "standardEnvironmentAvailable": {
+                    "description": "App Engine Standard Environment is available in the given location.@OutputOnly",
+                    "type": "boolean"
+                },
+                "flexibleEnvironmentAvailable": {
+                    "description": "App Engine Flexible Environment is available in the given location.@OutputOnly",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "OperationMetadataV1Beta": {
+            "description": "Metadata for the given google.longrunning.Operation.",
+            "id": "OperationMetadataV1Beta",
+            "properties": {
+                "method": {
+                    "description": "API method that initiated this operation. Example: google.appengine.v1beta.Versions.CreateVersion.@OutputOnly",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "Time that this operation completed.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "warning": {
+                    "description": "Durable messages that persist on every operation poll. @OutputOnly",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "insertTime": {
+                    "description": "Time that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "user": {
+                    "description": "User who requested this operation.@OutputOnly",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly",
+                    "type": "string"
+                },
+                "ephemeralMessage": {
+                    "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListServicesResponse": {
+            "description": "Response message for Services.ListServices.",
+            "id": "ListServicesResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Continuation token for fetching the next page of results.",
+                    "type": "string"
+                },
+                "services": {
+                    "description": "The services belonging to the requested application.",
+                    "items": {
+                        "$ref": "Service"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Resources": {
+            "description": "Machine resources for a version.",
+            "id": "Resources",
+            "properties": {
+                "volumes": {
+                    "description": "Volumes mounted within the app container.",
+                    "items": {
+                        "$ref": "Volume"
+                    },
+                    "type": "array"
+                },
+                "diskGb": {
+                    "description": "Disk size (GB) needed.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "memoryGb": {
+                    "description": "Memory (GB) needed.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "cpu": {
+                    "description": "Number of CPU cores needed.",
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "Deployment": {
+            "description": "Code and application artifacts used to deploy a version to App Engine.",
+            "id": "Deployment",
+            "properties": {
+                "files": {
+                    "additionalProperties": {
+                        "$ref": "FileInfo"
+                    },
+                    "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.",
+                    "type": "object"
+                },
+                "sourceReferences": {
+                    "description": "Origin of the source code for this deployment. There can be more than one source reference per version if source code is distributed among multiple repositories.",
+                    "items": {
+                        "$ref": "SourceReference"
+                    },
+                    "type": "array"
+                },
+                "container": {
+                    "$ref": "ContainerInfo",
+                    "description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment."
+                }
+            },
+            "type": "object"
+        },
+        "Volume": {
+            "description": "Volumes mounted within the app container. Only applicable for VM runtimes.",
+            "id": "Volume",
+            "properties": {
+                "volumeType": {
+                    "description": "Underlying volume type, e.g. 'tmpfs'.",
+                    "type": "string"
+                },
+                "sizeGb": {
+                    "description": "Volume size in gigabytes.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "name": {
+                    "description": "Unique name for the volume.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Service": {
+            "description": "A Service resource is a logical component of an application that can share state and communicate in a secure fashion with other services. For example, an application that handles customer requests might include separate services to handle other tasks such as API requests from mobile devices or backend data analysis. Each service has a collection of versions that define a specific set of code used to implement the functionality of that service.",
+            "id": "Service",
+            "properties": {
+                "id": {
+                    "description": "Relative name of the service within the application. Example: default.@OutputOnly",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly",
+                    "type": "string"
+                },
+                "split": {
+                    "$ref": "TrafficSplit",
+                    "description": "Mapping that defines fractional HTTP traffic diversion to different versions within the service."
+                }
+            },
+            "type": "object"
+        },
+        "ListOperationsResponse": {
+            "description": "The response message for Operations.ListOperations.",
+            "id": "ListOperationsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
+                "operations": {
+                    "description": "A list of operations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Operation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "OperationMetadata": {
+            "description": "Metadata for the given google.longrunning.Operation.",
+            "id": "OperationMetadata",
+            "properties": {
+                "method": {
+                    "description": "API method that initiated this operation. Example: google.appengine.v1beta4.Version.CreateVersion.@OutputOnly",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "Timestamp that this operation completed.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "operationType": {
+                    "description": "Type of this operation. Deprecated, use method field instead. Example: \"create_version\".@OutputOnly",
+                    "type": "string"
+                },
+                "insertTime": {
+                    "description": "Timestamp that this operation was created.@OutputOnly",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "user": {
+                    "description": "User who requested this operation.@OutputOnly",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Name of the resource that this operation is acting on. Example: apps/myapp/modules/default.@OutputOnly",
+                    "type": "string"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis_beta/clouderrorreporting__v1beta1.json b/discovery/googleapis_beta/clouderrorreporting__v1beta1.json
index 7f8fc38..bdb4860 100644
--- a/discovery/googleapis_beta/clouderrorreporting__v1beta1.json
+++ b/discovery/googleapis_beta/clouderrorreporting__v1beta1.json
@@ -25,6 +25,16 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
         "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.",
             "location": "query",
@@ -36,13 +46,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
+        "bearer_token": {
+            "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         },
@@ -57,18 +67,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
-            "location": "query",
-            "type": "string"
-        },
         "uploadType": {
             "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
@@ -85,6 +90,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -100,16 +110,6 @@
             ],
             "location": "query",
             "type": "string"
-        },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-            "location": "query",
-            "type": "string"
-        },
-        "access_token": {
-            "description": "OAuth access token.",
-            "location": "query",
-            "type": "string"
         }
     },
     "protocol": "rest",
@@ -152,24 +152,6 @@
                                 "projectName"
                             ],
                             "parameters": {
-                                "projectName": {
-                                    "description": "[Required] The resource name of the Google Cloud Platform project. Written\nas <code>projects/</code> plus the\n<a href=\"https://support.google.com/cloud/answer/6158840\">Google Cloud\nPlatform project ID</a>.\n\nExample: <code>projects/my-project-123</code>.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "timedCountDuration": {
-                                    "description": "[Optional] The preferred duration for a single returned `TimedCount`.\nIf not set, no timed counts are returned.",
-                                    "format": "google-duration",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "[Optional] A `next_page_token` provided by a previous response. To view\nadditional results, pass this token along with the identical query\nparameters as the first request.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
                                 "timeRange.period": {
                                     "description": "Restricts the query to the specified time range.",
                                     "enum": [
@@ -210,6 +192,11 @@
                                     "location": "query",
                                     "type": "integer"
                                 },
+                                "serviceFilter.version": {
+                                    "description": "[Optional] The exact value to match against\n[`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "order": {
                                     "description": "[Optional] The sort order in which the results are returned.\nDefault is `COUNT_DESC`.",
                                     "enum": [
@@ -222,11 +209,6 @@
                                     "location": "query",
                                     "type": "string"
                                 },
-                                "serviceFilter.version": {
-                                    "description": "[Optional] The exact value to match against\n[`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).",
-                                    "location": "query",
-                                    "type": "string"
-                                },
                                 "serviceFilter.resourceType": {
                                     "description": "[Optional] The exact value to match against\n[`ServiceContext.resource_type`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.resource_type).",
                                     "location": "query",
@@ -237,6 +219,24 @@
                                     "format": "google-datetime",
                                     "location": "query",
                                     "type": "string"
+                                },
+                                "projectName": {
+                                    "description": "[Required] The resource name of the Google Cloud Platform project. Written\nas <code>projects/</code> plus the\n<a href=\"https://support.google.com/cloud/answer/6158840\">Google Cloud\nPlatform project ID</a>.\n\nExample: <code>projects/my-project-123</code>.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "timedCountDuration": {
+                                    "description": "[Optional] The preferred duration for a single returned `TimedCount`.\nIf not set, no timed counts are returned.",
+                                    "format": "google-duration",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "[Optional] A `next_page_token` provided by a previous response. To view\nadditional results, pass this token along with the identical query\nparameters as the first request.",
+                                    "location": "query",
+                                    "type": "string"
                                 }
                             },
                             "path": "v1beta1/{+projectName}/groupStats",
@@ -314,17 +314,6 @@
                                 "projectName"
                             ],
                             "parameters": {
-                                "pageSize": {
-                                    "description": "[Optional] The maximum number of results to return per response.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "serviceFilter.version": {
-                                    "description": "[Optional] The exact value to match against\n[`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).",
-                                    "location": "query",
-                                    "type": "string"
-                                },
                                 "serviceFilter.resourceType": {
                                     "description": "[Optional] The exact value to match against\n[`ServiceContext.resource_type`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.resource_type).",
                                     "location": "query",
@@ -364,6 +353,17 @@
                                     "description": "[Optional] The exact value to match against\n[`ServiceContext.service`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.service).",
                                     "location": "query",
                                     "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "[Optional] The maximum number of results to return per response.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "serviceFilter.version": {
+                                    "description": "[Optional] The exact value to match against\n[`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).",
+                                    "location": "query",
+                                    "type": "string"
                                 }
                             },
                             "path": "v1beta1/{+projectName}/events",
@@ -406,13 +406,21 @@
             }
         }
     },
-    "revision": "20170914",
+    "revision": "20171014",
     "rootUrl": "https://clouderrorreporting.googleapis.com/",
     "schemas": {
         "ErrorEvent": {
             "description": "An error event which is returned by the Error Reporting system.",
             "id": "ErrorEvent",
             "properties": {
+                "message": {
+                    "description": "The stack trace that was reported or logged by the service.",
+                    "type": "string"
+                },
+                "serviceContext": {
+                    "$ref": "ServiceContext",
+                    "description": "The `ServiceContext` for which this error was reported."
+                },
                 "eventTime": {
                     "description": "Time when the event occurred as provided in the error report.\nIf the report did not contain a timestamp, the time the error was received\nby the Error Reporting system is used.",
                     "format": "google-datetime",
@@ -421,14 +429,6 @@
                 "context": {
                     "$ref": "ErrorContext",
                     "description": "Data about the context in which the error occurred."
-                },
-                "message": {
-                    "description": "The stack trace that was reported or logged by the service.",
-                    "type": "string"
-                },
-                "serviceContext": {
-                    "$ref": "ServiceContext",
-                    "description": "The `ServiceContext` for which this error was reported."
                 }
             },
             "type": "object"
@@ -437,6 +437,10 @@
             "description": "An error event which is reported to the Error Reporting system.",
             "id": "ReportedErrorEvent",
             "properties": {
+                "message": {
+                    "description": "[Required] The error message.\nIf no `context.reportLocation` is provided, the message must contain a\nheader (typically consisting of the exception type name and an error\nmessage) and an exception stack trace in one of the supported programming\nlanguages and formats.\nSupported languages are Java, Python, JavaScript, Ruby, C#, PHP, and Go.\nSupported stack trace formats are:\n\n* **Java**: Must be the return value of [`Throwable.printStackTrace()`](https://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html#printStackTrace%28%29).\n* **Python**: Must be the return value of [`traceback.format_exc()`](https://docs.python.org/2/library/traceback.html#traceback.format_exc).\n* **JavaScript**: Must be the value of [`error.stack`](https://github.com/v8/v8/wiki/Stack-Trace-API)\nas returned by V8.\n* **Ruby**: Must contain frames returned by [`Exception.backtrace`](https://ruby-doc.org/core-2.2.0/Exception.html#method-i-backtrace).\n* **C#**: Must be the return value of [`Exception.ToString()`](https://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx).\n* **PHP**: Must start with `PHP (Notice|Parse error|Fatal error|Warning)`\nand contain the result of [`(string)$exception`](http://php.net/manual/en/exception.tostring.php).\n* **Go**: Must be the return value of [`runtime.Stack()`](https://golang.org/pkg/runtime/debug/#Stack).",
+                    "type": "string"
+                },
                 "serviceContext": {
                     "$ref": "ServiceContext",
                     "description": "[Required] The service context in which this error has occurred."
@@ -449,10 +453,6 @@
                 "context": {
                     "$ref": "ErrorContext",
                     "description": "[Optional] A description of the context in which the error occurred."
-                },
-                "message": {
-                    "description": "[Required] The error message.\nIf no `context.reportLocation` is provided, the message must contain a\nheader (typically consisting of the exception type name and an error\nmessage) and an exception stack trace in one of the supported programming\nlanguages and formats.\nSupported languages are Java, Python, JavaScript, Ruby, C#, PHP, and Go.\nSupported stack trace formats are:\n\n* **Java**: Must be the return value of [`Throwable.printStackTrace()`](https://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html#printStackTrace%28%29).\n* **Python**: Must be the return value of [`traceback.format_exc()`](https://docs.python.org/2/library/traceback.html#traceback.format_exc).\n* **JavaScript**: Must be the value of [`error.stack`](https://github.com/v8/v8/wiki/Stack-Trace-API)\nas returned by V8.\n* **Ruby**: Must contain frames returned by [`Exception.backtrace`](https://ruby-doc.org/core-2.2.0/Exception.html#method-i-backtrace).\n* **C#**: Must be the return value of [`Exception.ToString()`](https://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx).\n* **PHP**: Must start with `PHP (Notice|Parse error|Fatal error|Warning)`\nand contain the result of [`(string)$exception`](http://php.net/manual/en/exception.tostring.php).\n* **Go**: Must be the return value of [`runtime.Stack()`](https://golang.org/pkg/runtime/debug/#Stack).",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -461,10 +461,6 @@
             "description": "A description of the context in which an error occurred.\nThis data should be provided by the application when reporting an error,\nunless the\nerror report has been generated automatically from Google App Engine logs.",
             "id": "ErrorContext",
             "properties": {
-                "httpRequest": {
-                    "$ref": "HttpRequestContext",
-                    "description": "The HTTP request which was processed when the error was\ntriggered."
-                },
                 "user": {
                     "description": "The user who caused or was affected by the crash.\nThis can be a user ID, an email address, or an arbitrary token that\nuniquely identifies the user.\nWhen sending an error report, leave this field empty if the user was not\nlogged in. In this case the\nError Reporting system will use other data, such as remote IP address, to\ndistinguish affected users. See `affected_users_count` in\n`ErrorGroupStats`.",
                     "type": "string"
@@ -479,6 +475,10 @@
                 "reportLocation": {
                     "$ref": "SourceLocation",
                     "description": "The location in the source code where the decision was made to\nreport the error, usually the place where it was logged.\nFor a logged exception this would be the source line where the\nexception is logged, usually close to the place where it was\ncaught."
+                },
+                "httpRequest": {
+                    "$ref": "HttpRequestContext",
+                    "description": "The HTTP request which was processed when the error was\ntriggered."
                 }
             },
             "type": "object"
@@ -498,6 +498,18 @@
             "description": "Data extracted for a specific group based on certain filter criteria,\nsuch as a given time period and/or service filter.",
             "id": "ErrorGroupStats",
             "properties": {
+                "numAffectedServices": {
+                    "description": "The total number of services with a non-zero error count for the given\nfilter criteria.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "affectedServices": {
+                    "description": "Service contexts with a non-zero error count for the given filter\ncriteria. This list can be truncated if multiple services are affected.\nRefer to `num_affected_services` for the total count.",
+                    "items": {
+                        "$ref": "ServiceContext"
+                    },
+                    "type": "array"
+                },
                 "representative": {
                     "$ref": "ErrorEvent",
                     "description": "An arbitrary event that is chosen as representative for the whole group.\nThe representative event is intended to be used as a quick preview for\nthe whole group. Events in the group are usually sufficiently similar\nto each other such that showing an arbitrary representative provides\ninsight into the characteristics of the group as a whole."
@@ -523,27 +535,15 @@
                     "format": "int64",
                     "type": "string"
                 },
-                "lastSeenTime": {
-                    "description": "Approximate last occurrence that was ever seen for this group and\nwhich matches the given filter criteria, ignoring the time_range\nthat was specified in the request.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
                 "affectedUsersCount": {
                     "description": "Approximate number of affected users in the given group that\nmatch the filter criteria.\nUsers are distinguished by data in the `ErrorContext` of the\nindividual error events, such as their login name or their remote\nIP address in case of HTTP requests.\nThe number of affected users can be zero even if the number of\nerrors is non-zero if no data was provided from which the\naffected user could be deduced.\nUsers are counted based on data in the request\ncontext that was provided in the error report. If more users are\nimplicitly affected, such as due to a crash of the whole service,\nthis is not reflected here.",
                     "format": "int64",
                     "type": "string"
                 },
-                "numAffectedServices": {
-                    "description": "The total number of services with a non-zero error count for the given\nfilter criteria.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "affectedServices": {
-                    "description": "Service contexts with a non-zero error count for the given filter\ncriteria. This list can be truncated if multiple services are affected.\nRefer to `num_affected_services` for the total count.",
-                    "items": {
-                        "$ref": "ServiceContext"
-                    },
-                    "type": "array"
+                "lastSeenTime": {
+                    "description": "Approximate last occurrence that was ever seen for this group and\nwhich matches the given filter criteria, ignoring the time_range\nthat was specified in the request.",
+                    "format": "google-datetime",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -619,10 +619,6 @@
             "description": "Describes a running service that sends errors.\nIts version changes over time and multiple versions can run in parallel.",
             "id": "ServiceContext",
             "properties": {
-                "service": {
-                    "description": "An identifier of the service, such as the name of the\nexecutable, job, or Google App Engine service name. This field is expected\nto have a low number of values that are relatively stable over time, as\nopposed to `version`, which can be changed whenever new code is deployed.\n\nContains the service name for error reports extracted from Google\nApp Engine logs or `default` if the App Engine default service is used.",
-                    "type": "string"
-                },
                 "resourceType": {
                     "description": "Type of the MonitoredResource. List of possible values:\nhttps://cloud.google.com/monitoring/api/resources\n\nValue is set automatically for incoming errors and must not be set when\nreporting errors.",
                     "type": "string"
@@ -630,6 +626,10 @@
                 "version": {
                     "description": "Represents the source code version that the developer provided,\nwhich could represent a version label or a Git SHA-1 hash, for example.\nFor App Engine standard environment, the version is set to the version of\nthe app.",
                     "type": "string"
+                },
+                "service": {
+                    "description": "An identifier of the service, such as the name of the\nexecutable, job, or Google App Engine service name. This field is expected\nto have a low number of values that are relatively stable over time, as\nopposed to `version`, which can be changed whenever new code is deployed.\n\nContains the service name for error reports extracted from Google\nApp Engine logs or `default` if the App Engine default service is used.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -638,6 +638,10 @@
             "description": "Indicates a location in the source code of the service for which errors are\nreported. `functionName` must be provided by the application when reporting\nan error, unless the error report contains a `message` with a supported\nexception stack trace. All fields are optional for the later case.",
             "id": "SourceLocation",
             "properties": {
+                "filePath": {
+                    "description": "The source code filename, which can include a truncated relative\npath, or a full path from a production machine.",
+                    "type": "string"
+                },
                 "lineNumber": {
                     "description": "1-based. 0 indicates that the line number is unknown.",
                     "format": "int32",
@@ -646,10 +650,6 @@
                 "functionName": {
                     "description": "Human-readable name of a function or method.\nThe value can include optional context like the class or package name.\nFor example, `my.package.MyClass.method` in case of Java.",
                     "type": "string"
-                },
-                "filePath": {
-                    "description": "The source code filename, which can include a truncated relative\npath, or a full path from a production machine.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -664,6 +664,14 @@
             "description": "HTTP request data that is related to a reported error.\nThis data should be provided by the application when reporting an error,\nunless the\nerror report has been generated automatically from Google App Engine logs.",
             "id": "HttpRequestContext",
             "properties": {
+                "method": {
+                    "description": "The type of HTTP request, such as `GET`, `POST`, etc.",
+                    "type": "string"
+                },
+                "remoteIp": {
+                    "description": "The IP address from which the request originated.\nThis can be IPv4, IPv6, or a token which is derived from the\nIP address, depending on the data that has been provided\nin the error report.",
+                    "type": "string"
+                },
                 "referrer": {
                     "description": "The referrer information that is provided with the request.",
                     "type": "string"
@@ -680,14 +688,6 @@
                     "description": "The HTTP response status code for the request.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "method": {
-                    "description": "The type of HTTP request, such as `GET`, `POST`, etc.",
-                    "type": "string"
-                },
-                "remoteIp": {
-                    "description": "The IP address from which the request originated.\nThis can be IPv4, IPv6, or a token which is derived from the\nIP address, depending on the data that has been provided\nin the error report.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -696,6 +696,13 @@
             "description": "Contains a set of requested error group stats.",
             "id": "ListGroupStatsResponse",
             "properties": {
+                "errorGroupStats": {
+                    "description": "The error group stats which match the given request.",
+                    "items": {
+                        "$ref": "ErrorGroupStats"
+                    },
+                    "type": "array"
+                },
                 "nextPageToken": {
                     "description": "If non-empty, more results are available.\nPass this token, along with the same query parameters as the first\nrequest, to view the next page of results.",
                     "type": "string"
@@ -704,13 +711,6 @@
                     "description": "The timestamp specifies the start time to which the request was restricted.\nThe start time is set based on the requested time range. It may be adjusted\nto a later time if a project has exceeded the storage quota and older data\nhas been deleted.",
                     "format": "google-datetime",
                     "type": "string"
-                },
-                "errorGroupStats": {
-                    "description": "The error group stats which match the given request.",
-                    "items": {
-                        "$ref": "ErrorGroupStats"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis_beta/cloudresourcemanager__v1beta1.json b/discovery/googleapis_beta/cloudresourcemanager__v1beta1.json
index 5ddd0e9..59a7b66 100644
--- a/discovery/googleapis_beta/cloudresourcemanager__v1beta1.json
+++ b/discovery/googleapis_beta/cloudresourcemanager__v1beta1.json
@@ -28,6 +28,27 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
         "fields": {
             "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
@@ -38,6 +59,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -51,11 +77,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -72,13 +93,13 @@
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
@@ -92,366 +113,12 @@
             "description": "Pretty-print response.",
             "location": "query",
             "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
         }
     },
     "protocol": "rest",
     "resources": {
-        "organizations": {
-            "methods": {
-                "getIamPolicy": {
-                    "description": "Gets the access control policy for an Organization resource. May be empty\nif no such policy or resource exists. The `resource` field should be the\norganization's resource name, e.g. \"organizations/123\".",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.organizations.getIamPolicy",
-                    "parameterOrder": [
-                        "resource"
-                    ],
-                    "parameters": {
-                        "resource": {
-                            "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
-                            "location": "path",
-                            "pattern": "^organizations/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/{+resource}:getIamPolicy",
-                    "request": {
-                        "$ref": "GetIamPolicyRequest"
-                    },
-                    "response": {
-                        "$ref": "Policy"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
-                "get": {
-                    "description": "Fetches an Organization resource identified by the specified resource name.",
-                    "httpMethod": "GET",
-                    "id": "cloudresourcemanager.organizations.get",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "organizationId": {
-                            "description": "The id of the Organization resource to fetch.\nThis field is deprecated and will be removed in v1. Use name instead.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "name": {
-                            "description": "The resource name of the Organization to fetch, e.g. \"organizations/1234\".",
-                            "location": "path",
-                            "pattern": "^organizations/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/{+name}",
-                    "response": {
-                        "$ref": "Organization"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
-                "update": {
-                    "description": "Updates an Organization resource identified by the specified resource name.",
-                    "httpMethod": "PUT",
-                    "id": "cloudresourcemanager.organizations.update",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "Output Only. The resource name of the organization. This is the\norganization's relative path in the API. Its format is\n\"organizations/[organization_id]\". For example, \"organizations/1234\".",
-                            "location": "path",
-                            "pattern": "^organizations/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/{+name}",
-                    "request": {
-                        "$ref": "Organization"
-                    },
-                    "response": {
-                        "$ref": "Organization"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
-                "testIamPermissions": {
-                    "description": "Returns permissions that a caller has on the specified Organization.\nThe `resource` field should be the organization's resource name,\ne.g. \"organizations/123\".",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.organizations.testIamPermissions",
-                    "parameterOrder": [
-                        "resource"
-                    ],
-                    "parameters": {
-                        "resource": {
-                            "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
-                            "location": "path",
-                            "pattern": "^organizations/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/{+resource}:testIamPermissions",
-                    "request": {
-                        "$ref": "TestIamPermissionsRequest"
-                    },
-                    "response": {
-                        "$ref": "TestIamPermissionsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
-                "list": {
-                    "description": "Lists Organization resources that are visible to the user and satisfy\nthe specified filter. This method returns Organizations in an unspecified\norder. New Organizations do not necessarily appear at the end of the list.",
-                    "httpMethod": "GET",
-                    "id": "cloudresourcemanager.organizations.list",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "pageSize": {
-                            "description": "The maximum number of Organizations to return in the response.\nThis field is optional.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        },
-                        "filter": {
-                            "description": "An optional query string used to filter the Organizations to return in\nthe response. Filter rules are case-insensitive.\n\n\nOrganizations may be filtered by `owner.directoryCustomerId` or by\n`domain`, where the domain is a Google for Work domain, for example:\n\n|Filter|Description|\n|------|-----------|\n|owner.directorycustomerid:123456789|Organizations with `owner.directory_customer_id` equal to `123456789`.|\n|domain:google.com|Organizations corresponding to the domain `google.com`.|\n\nThis field is optional.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageToken": {
-                            "description": "A pagination token returned from a previous call to `ListOrganizations`\nthat indicates from where listing should continue.\nThis field is optional.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/organizations",
-                    "response": {
-                        "$ref": "ListOrganizationsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
-                "setIamPolicy": {
-                    "description": "Sets the access control policy on an Organization resource. Replaces any\nexisting policy. The `resource` field should be the organization's resource\nname, e.g. \"organizations/123\".",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.organizations.setIamPolicy",
-                    "parameterOrder": [
-                        "resource"
-                    ],
-                    "parameters": {
-                        "resource": {
-                            "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
-                            "location": "path",
-                            "pattern": "^organizations/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/{+resource}:setIamPolicy",
-                    "request": {
-                        "$ref": "SetIamPolicyRequest"
-                    },
-                    "response": {
-                        "$ref": "Policy"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                }
-            }
-        },
         "projects": {
             "methods": {
-                "getIamPolicy": {
-                    "description": "Returns the IAM access control policy for the specified Project.\nPermission is denied if the policy or the resource does not exist.",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.projects.getIamPolicy",
-                    "parameterOrder": [
-                        "resource"
-                    ],
-                    "parameters": {
-                        "resource": {
-                            "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/projects/{resource}:getIamPolicy",
-                    "request": {
-                        "$ref": "GetIamPolicyRequest"
-                    },
-                    "response": {
-                        "$ref": "Policy"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
-                "get": {
-                    "description": "Retrieves the Project identified by the specified\n`project_id` (for example, `my-project-123`).\n\nThe caller must have read permissions for this Project.",
-                    "httpMethod": "GET",
-                    "id": "cloudresourcemanager.projects.get",
-                    "parameterOrder": [
-                        "projectId"
-                    ],
-                    "parameters": {
-                        "projectId": {
-                            "description": "The Project ID (for example, `my-project-123`).\n\nRequired.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/projects/{projectId}",
-                    "response": {
-                        "$ref": "Project"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
-                "undelete": {
-                    "description": "Restores the Project identified by the specified\n`project_id` (for example, `my-project-123`).\nYou can only use this method for a Project that has a lifecycle state of\nDELETE_REQUESTED.\nAfter deletion starts, the Project cannot be restored.\n\nThe caller must have modify permissions for this Project.",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.projects.undelete",
-                    "parameterOrder": [
-                        "projectId"
-                    ],
-                    "parameters": {
-                        "projectId": {
-                            "description": "The project ID (for example, `foo-bar-123`).\n\nRequired.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/projects/{projectId}:undelete",
-                    "request": {
-                        "$ref": "UndeleteProjectRequest"
-                    },
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
-                "update": {
-                    "description": "Updates the attributes of the Project identified by the specified\n`project_id` (for example, `my-project-123`).\n\nThe caller must have modify permissions for this Project.",
-                    "httpMethod": "PUT",
-                    "id": "cloudresourcemanager.projects.update",
-                    "parameterOrder": [
-                        "projectId"
-                    ],
-                    "parameters": {
-                        "projectId": {
-                            "description": "The project ID (for example, `my-project-123`).\n\nRequired.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/projects/{projectId}",
-                    "request": {
-                        "$ref": "Project"
-                    },
-                    "response": {
-                        "$ref": "Project"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
-                "getAncestry": {
-                    "description": "Gets a list of ancestors in the resource hierarchy for the Project\nidentified by the specified `project_id` (for example, `my-project-123`).\n\nThe caller must have read permissions for this Project.",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.projects.getAncestry",
-                    "parameterOrder": [
-                        "projectId"
-                    ],
-                    "parameters": {
-                        "projectId": {
-                            "description": "The Project ID (for example, `my-project-123`).\n\nRequired.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/projects/{projectId}:getAncestry",
-                    "request": {
-                        "$ref": "GetAncestryRequest"
-                    },
-                    "response": {
-                        "$ref": "GetAncestryResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
-                "testIamPermissions": {
-                    "description": "Returns permissions that a caller has on the specified Project.",
-                    "httpMethod": "POST",
-                    "id": "cloudresourcemanager.projects.testIamPermissions",
-                    "parameterOrder": [
-                        "resource"
-                    ],
-                    "parameters": {
-                        "resource": {
-                            "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
-                            "location": "path",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/projects/{resource}:testIamPermissions",
-                    "request": {
-                        "$ref": "TestIamPermissionsRequest"
-                    },
-                    "response": {
-                        "$ref": "TestIamPermissionsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                },
                 "delete": {
                     "description": "Marks the Project identified by the specified\n`project_id` (for example, `my-project-123`) for deletion.\nThis method will only affect the Project if the following criteria are met:\n\n+ The Project does not have a billing account associated with it.\n+ The Project has a lifecycle state of\nACTIVE.\n\nThis method changes the Project's lifecycle state from\nACTIVE\nto DELETE_REQUESTED.\nThe deletion starts at an unspecified time, at which point the project is\nno longer accessible.\n\nUntil the deletion completes, you can check the lifecycle state\nchecked by retrieving the Project with GetProject,\nand the Project remains visible to ListProjects.\nHowever, you cannot update the project.\n\nAfter the deletion completes, the Project is not retrievable by\nthe  GetProject and\nListProjects methods.\n\nThe caller must have modify permissions for this Project.",
                     "httpMethod": "DELETE",
@@ -555,6 +222,339 @@
                     "scopes": [
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
+                },
+                "getIamPolicy": {
+                    "description": "Returns the IAM access control policy for the specified Project.\nPermission is denied if the policy or the resource does not exist.",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.projects.getIamPolicy",
+                    "parameterOrder": [
+                        "resource"
+                    ],
+                    "parameters": {
+                        "resource": {
+                            "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/projects/{resource}:getIamPolicy",
+                    "request": {
+                        "$ref": "GetIamPolicyRequest"
+                    },
+                    "response": {
+                        "$ref": "Policy"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
+                },
+                "undelete": {
+                    "description": "Restores the Project identified by the specified\n`project_id` (for example, `my-project-123`).\nYou can only use this method for a Project that has a lifecycle state of\nDELETE_REQUESTED.\nAfter deletion starts, the Project cannot be restored.\n\nThe caller must have modify permissions for this Project.",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.projects.undelete",
+                    "parameterOrder": [
+                        "projectId"
+                    ],
+                    "parameters": {
+                        "projectId": {
+                            "description": "The project ID (for example, `foo-bar-123`).\n\nRequired.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/projects/{projectId}:undelete",
+                    "request": {
+                        "$ref": "UndeleteProjectRequest"
+                    },
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "get": {
+                    "description": "Retrieves the Project identified by the specified\n`project_id` (for example, `my-project-123`).\n\nThe caller must have read permissions for this Project.",
+                    "httpMethod": "GET",
+                    "id": "cloudresourcemanager.projects.get",
+                    "parameterOrder": [
+                        "projectId"
+                    ],
+                    "parameters": {
+                        "projectId": {
+                            "description": "The Project ID (for example, `my-project-123`).\n\nRequired.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/projects/{projectId}",
+                    "response": {
+                        "$ref": "Project"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
+                },
+                "update": {
+                    "description": "Updates the attributes of the Project identified by the specified\n`project_id` (for example, `my-project-123`).\n\nThe caller must have modify permissions for this Project.",
+                    "httpMethod": "PUT",
+                    "id": "cloudresourcemanager.projects.update",
+                    "parameterOrder": [
+                        "projectId"
+                    ],
+                    "parameters": {
+                        "projectId": {
+                            "description": "The project ID (for example, `my-project-123`).\n\nRequired.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/projects/{projectId}",
+                    "request": {
+                        "$ref": "Project"
+                    },
+                    "response": {
+                        "$ref": "Project"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "getAncestry": {
+                    "description": "Gets a list of ancestors in the resource hierarchy for the Project\nidentified by the specified `project_id` (for example, `my-project-123`).\n\nThe caller must have read permissions for this Project.",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.projects.getAncestry",
+                    "parameterOrder": [
+                        "projectId"
+                    ],
+                    "parameters": {
+                        "projectId": {
+                            "description": "The Project ID (for example, `my-project-123`).\n\nRequired.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/projects/{projectId}:getAncestry",
+                    "request": {
+                        "$ref": "GetAncestryRequest"
+                    },
+                    "response": {
+                        "$ref": "GetAncestryResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
+                },
+                "testIamPermissions": {
+                    "description": "Returns permissions that a caller has on the specified Project.",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.projects.testIamPermissions",
+                    "parameterOrder": [
+                        "resource"
+                    ],
+                    "parameters": {
+                        "resource": {
+                            "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/projects/{resource}:testIamPermissions",
+                    "request": {
+                        "$ref": "TestIamPermissionsRequest"
+                    },
+                    "response": {
+                        "$ref": "TestIamPermissionsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
+                }
+            }
+        },
+        "organizations": {
+            "methods": {
+                "update": {
+                    "description": "Updates an Organization resource identified by the specified resource name.",
+                    "httpMethod": "PUT",
+                    "id": "cloudresourcemanager.organizations.update",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Output Only. The resource name of the organization. This is the\norganization's relative path in the API. Its format is\n\"organizations/[organization_id]\". For example, \"organizations/1234\".",
+                            "location": "path",
+                            "pattern": "^organizations/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/{+name}",
+                    "request": {
+                        "$ref": "Organization"
+                    },
+                    "response": {
+                        "$ref": "Organization"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "testIamPermissions": {
+                    "description": "Returns permissions that a caller has on the specified Organization.\nThe `resource` field should be the organization's resource name,\ne.g. \"organizations/123\".",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.organizations.testIamPermissions",
+                    "parameterOrder": [
+                        "resource"
+                    ],
+                    "parameters": {
+                        "resource": {
+                            "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                            "location": "path",
+                            "pattern": "^organizations/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/{+resource}:testIamPermissions",
+                    "request": {
+                        "$ref": "TestIamPermissionsRequest"
+                    },
+                    "response": {
+                        "$ref": "TestIamPermissionsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
+                },
+                "list": {
+                    "description": "Lists Organization resources that are visible to the user and satisfy\nthe specified filter. This method returns Organizations in an unspecified\norder. New Organizations do not necessarily appear at the end of the list.",
+                    "httpMethod": "GET",
+                    "id": "cloudresourcemanager.organizations.list",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "pageToken": {
+                            "description": "A pagination token returned from a previous call to `ListOrganizations`\nthat indicates from where listing should continue.\nThis field is optional.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageSize": {
+                            "description": "The maximum number of Organizations to return in the response.\nThis field is optional.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        },
+                        "filter": {
+                            "description": "An optional query string used to filter the Organizations to return in\nthe response. Filter rules are case-insensitive.\n\n\nOrganizations may be filtered by `owner.directoryCustomerId` or by\n`domain`, where the domain is a Google for Work domain, for example:\n\n|Filter|Description|\n|------|-----------|\n|owner.directorycustomerid:123456789|Organizations with `owner.directory_customer_id` equal to `123456789`.|\n|domain:google.com|Organizations corresponding to the domain `google.com`.|\n\nThis field is optional.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/organizations",
+                    "response": {
+                        "$ref": "ListOrganizationsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
+                },
+                "setIamPolicy": {
+                    "description": "Sets the access control policy on an Organization resource. Replaces any\nexisting policy. The `resource` field should be the organization's resource\nname, e.g. \"organizations/123\".",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.organizations.setIamPolicy",
+                    "parameterOrder": [
+                        "resource"
+                    ],
+                    "parameters": {
+                        "resource": {
+                            "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+                            "location": "path",
+                            "pattern": "^organizations/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/{+resource}:setIamPolicy",
+                    "request": {
+                        "$ref": "SetIamPolicyRequest"
+                    },
+                    "response": {
+                        "$ref": "Policy"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "getIamPolicy": {
+                    "description": "Gets the access control policy for an Organization resource. May be empty\nif no such policy or resource exists. The `resource` field should be the\norganization's resource name, e.g. \"organizations/123\".",
+                    "httpMethod": "POST",
+                    "id": "cloudresourcemanager.organizations.getIamPolicy",
+                    "parameterOrder": [
+                        "resource"
+                    ],
+                    "parameters": {
+                        "resource": {
+                            "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                            "location": "path",
+                            "pattern": "^organizations/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/{+resource}:getIamPolicy",
+                    "request": {
+                        "$ref": "GetIamPolicyRequest"
+                    },
+                    "response": {
+                        "$ref": "Policy"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
+                },
+                "get": {
+                    "description": "Fetches an Organization resource identified by the specified resource name.",
+                    "httpMethod": "GET",
+                    "id": "cloudresourcemanager.organizations.get",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The resource name of the Organization to fetch, e.g. \"organizations/1234\".",
+                            "location": "path",
+                            "pattern": "^organizations/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "organizationId": {
+                            "description": "The id of the Organization resource to fetch.\nThis field is deprecated and will be removed in v1. Use name instead.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/{+name}",
+                    "response": {
+                        "$ref": "Organization"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                    ]
                 }
             }
         }
@@ -562,20 +562,31 @@
     "revision": "20170927",
     "rootUrl": "https://cloudresourcemanager.googleapis.com/",
     "schemas": {
-        "ListOrganizationsResponse": {
-            "description": "The response returned from the `ListOrganizations` method.",
-            "id": "ListOrganizationsResponse",
+        "AuditConfig": {
+            "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
+            "id": "AuditConfig",
             "properties": {
-                "organizations": {
-                    "description": "The list of Organizations that matched the list query, possibly paginated.",
+                "service": {
+                    "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
+                    "type": "string"
+                },
+                "auditLogConfigs": {
+                    "description": "The configuration for logging of each type of permission.\nNext ID: 4",
                     "items": {
-                        "$ref": "Organization"
+                        "$ref": "AuditLogConfig"
                     },
                     "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "A pagination token to be used to retrieve the next page of results. If the\nresult is too large to fit within the page size specified in the request,\nthis field will be set with a token that can be used to fetch the next page\nof results. If this field is empty, it indicates that this response\ncontains the last page of results.",
-                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Ancestor": {
+            "description": "Identifying information for a single ancestor of a project.",
+            "id": "Ancestor",
+            "properties": {
+                "resourceId": {
+                    "$ref": "ResourceId",
+                    "description": "Resource id of the ancestor."
                 }
             },
             "type": "object"
@@ -596,6 +607,24 @@
             },
             "type": "object"
         },
+        "ListOrganizationsResponse": {
+            "description": "The response returned from the `ListOrganizations` method.",
+            "id": "ListOrganizationsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A pagination token to be used to retrieve the next page of results. If the\nresult is too large to fit within the page size specified in the request,\nthis field will be set with a token that can be used to fetch the next page\nof results. If this field is empty, it indicates that this response\ncontains the last page of results.",
+                    "type": "string"
+                },
+                "organizations": {
+                    "description": "The list of Organizations that matched the list query, possibly paginated.",
+                    "items": {
+                        "$ref": "Organization"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "Binding": {
             "description": "Associates `members` with a `role`.",
             "id": "Binding",
@@ -624,14 +653,6 @@
             "description": "The root node in the resource hierarchy to which a particular entity's\n(e.g., company) resources belong.",
             "id": "Organization",
             "properties": {
-                "owner": {
-                    "$ref": "OrganizationOwner",
-                    "description": "The owner of this Organization. The owner should be specified on\ncreation. Once set, it cannot be changed.\nThis field is required."
-                },
-                "name": {
-                    "description": "Output Only. The resource name of the organization. This is the\norganization's relative path in the API. Its format is\n\"organizations/[organization_id]\". For example, \"organizations/1234\".",
-                    "type": "string"
-                },
                 "organizationId": {
                     "description": "An immutable id for the Organization that is assigned on creation. This\nshould be omitted when creating a new Organization.\nThis field is read-only.\nThis field is deprecated and will be removed in v1. Use name instead.",
                     "type": "string"
@@ -658,6 +679,14 @@
                     "description": "Timestamp when the Organization was created. Assigned by the server.\n@OutputOnly",
                     "format": "google-datetime",
                     "type": "string"
+                },
+                "owner": {
+                    "$ref": "OrganizationOwner",
+                    "description": "The owner of this Organization. The owner should be specified on\ncreation. Once set, it cannot be changed.\nThis field is required."
+                },
+                "name": {
+                    "description": "Output Only. The resource name of the organization. This is the\norganization's relative path in the API. Its format is\n\"organizations/[organization_id]\". For example, \"organizations/1234\".",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -708,6 +737,20 @@
             "properties": {},
             "type": "object"
         },
+        "GetAncestryResponse": {
+            "description": "Response from the GetAncestry method.",
+            "id": "GetAncestryResponse",
+            "properties": {
+                "ancestor": {
+                    "description": "Ancestors are ordered from bottom to top of the resource hierarchy. The\nfirst ancestor is the project itself, followed by the project's parent,\netc.",
+                    "items": {
+                        "$ref": "Ancestor"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "OrganizationOwner": {
             "description": "The entity that owns an Organization. The lifetime of the Organization and\nall of its descendants are bound to the `OrganizationOwner`. If the\n`OrganizationOwner` is deleted, the Organization and all its descendants will\nbe deleted.",
             "id": "OrganizationOwner",
@@ -719,14 +762,18 @@
             },
             "type": "object"
         },
-        "GetAncestryResponse": {
-            "description": "Response from the GetAncestry method.",
-            "id": "GetAncestryResponse",
+        "ListProjectsResponse": {
+            "description": "A page of the response received from the\nListProjects\nmethod.\n\nA paginated response where more pages are available has\n`next_page_token` set. This token can be used in a subsequent request to\nretrieve the next request page.",
+            "id": "ListProjectsResponse",
             "properties": {
-                "ancestor": {
-                    "description": "Ancestors are ordered from bottom to top of the resource hierarchy. The\nfirst ancestor is the project itself, followed by the project's parent,\netc.",
+                "nextPageToken": {
+                    "description": "Pagination token.\n\nIf the result set is too large to fit in a single response, this token\nis returned. It encodes the position of the current result cursor.\nFeeding this value into a new list request with the `page_token` parameter\ngives the next page of the results.\n\nWhen `next_page_token` is not filled in, there is no next page and\nthe list returned is the last page in the result set.\n\nPagination tokens have a limited lifetime.",
+                    "type": "string"
+                },
+                "projects": {
+                    "description": "The list of Projects that matched the list filter. This list can\nbe paginated.",
                     "items": {
-                        "$ref": "Ancestor"
+                        "$ref": "Project"
                     },
                     "type": "array"
                 }
@@ -763,24 +810,6 @@
             },
             "type": "object"
         },
-        "ListProjectsResponse": {
-            "description": "A page of the response received from the\nListProjects\nmethod.\n\nA paginated response where more pages are available has\n`next_page_token` set. This token can be used in a subsequent request to\nretrieve the next request page.",
-            "id": "ListProjectsResponse",
-            "properties": {
-                "projects": {
-                    "description": "The list of Projects that matched the list filter. This list can\nbe paginated.",
-                    "items": {
-                        "$ref": "Project"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "Pagination token.\n\nIf the result set is too large to fit in a single response, this token\nis returned. It encodes the position of the current result cursor.\nFeeding this value into a new list request with the `page_token` parameter\ngives the next page of the results.\n\nWhen `next_page_token` is not filled in, there is no next page and\nthe list returned is the last page in the result set.\n\nPagination tokens have a limited lifetime.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "GetAncestryRequest": {
             "description": "The request sent to the\nGetAncestry\nmethod.",
             "id": "GetAncestryRequest",
@@ -791,6 +820,15 @@
             "description": "A Project is a high-level Google Cloud Platform entity.  It is a\ncontainer for ACLs, APIs, App Engine Apps, VMs, and other\nGoogle Cloud Platform resources.",
             "id": "Project",
             "properties": {
+                "projectNumber": {
+                    "description": "The number uniquely identifying the project.\n\nExample: <code>415104041262</code>\nRead-only.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "parent": {
+                    "$ref": "ResourceId",
+                    "description": "An optional reference to a parent Resource.\n\nThe only supported parent type is \"organization\". Once set, the parent\ncannot be modified. The `parent` can be set on creation or using the\n`UpdateProject` method; the end user must have the\n`resourcemanager.projects.create` permission on the parent.\n\nRead-write."
+                },
                 "labels": {
                     "additionalProperties": {
                         "type": "string"
@@ -826,15 +864,6 @@
                         "This lifecycle state is no longer used and is not returned by the API."
                     ],
                     "type": "string"
-                },
-                "projectNumber": {
-                    "description": "The number uniquely identifying the project.\n\nExample: <code>415104041262</code>\nRead-only.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "parent": {
-                    "$ref": "ResourceId",
-                    "description": "An optional reference to a parent Resource.\n\nThe only supported parent type is \"organization\". Once set, the parent\ncannot be modified. The `parent` can be set on creation or using the\n`UpdateProject` method; the end user must have the\n`resourcemanager.projects.create` permission on the parent.\n\nRead-write."
                 }
             },
             "type": "object"
@@ -853,6 +882,37 @@
             },
             "type": "object"
         },
+        "Policy": {
+            "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
+            "id": "Policy",
+            "properties": {
+                "etag": {
+                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "version": {
+                    "description": "Version of the `Policy`. The default version is 0.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "auditConfigs": {
+                    "description": "Specifies cloud audit logging configuration for this policy.",
+                    "items": {
+                        "$ref": "AuditConfig"
+                    },
+                    "type": "array"
+                },
+                "bindings": {
+                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
+                    "items": {
+                        "$ref": "Binding"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "FolderOperationError": {
             "description": "A classification of the Folder Operation error.",
             "id": "FolderOperationError",
@@ -892,18 +952,6 @@
             "description": "Metadata describing a long running folder operation",
             "id": "FolderOperation",
             "properties": {
-                "sourceParent": {
-                    "description": "The resource name of the folder's parent.\nOnly applicable when the operation_type is MOVE.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "The display name of the folder.",
-                    "type": "string"
-                },
-                "destinationParent": {
-                    "description": "The resource name of the folder or organization we are either creating\nthe folder under or moving the folder to.",
-                    "type": "string"
-                },
                 "operationType": {
                     "description": "The type of this operation.",
                     "enum": [
@@ -917,37 +965,18 @@
                         "A move folder operation."
                     ],
                     "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Policy": {
-            "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
-            "id": "Policy",
-            "properties": {
-                "etag": {
-                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
-                    "format": "byte",
+                },
+                "sourceParent": {
+                    "description": "The resource name of the folder's parent.\nOnly applicable when the operation_type is MOVE.",
                     "type": "string"
                 },
-                "version": {
-                    "description": "Version of the `Policy`. The default version is 0.",
-                    "format": "int32",
-                    "type": "integer"
+                "displayName": {
+                    "description": "The display name of the folder.",
+                    "type": "string"
                 },
-                "auditConfigs": {
-                    "description": "Specifies cloud audit logging configuration for this policy.",
-                    "items": {
-                        "$ref": "AuditConfig"
-                    },
-                    "type": "array"
-                },
-                "bindings": {
-                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
-                    "items": {
-                        "$ref": "Binding"
-                    },
-                    "type": "array"
+                "destinationParent": {
+                    "description": "The resource name of the folder or organization we are either creating\nthe folder under or moving the folder to.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -956,42 +985,13 @@
             "description": "A container to reference an id for any resource type. A `resource` in Google\nCloud Platform is a generic term for something you (a developer) may want to\ninteract with through one of our API's. Some examples are an App Engine app,\na Compute Engine instance, a Cloud SQL database, and so on.",
             "id": "ResourceId",
             "properties": {
-                "type": {
-                    "description": "Required field representing the resource type this id is for.\nAt present, the valid types are \"project\", \"folder\", and \"organization\".",
-                    "type": "string"
-                },
                 "id": {
                     "description": "Required field for the type-specific id. This should correspond to the id\nused in the type-specific API's.",
                     "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AuditConfig": {
-            "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
-            "id": "AuditConfig",
-            "properties": {
-                "service": {
-                    "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
-                    "type": "string"
                 },
-                "auditLogConfigs": {
-                    "description": "The configuration for logging of each type of permission.\nNext ID: 4",
-                    "items": {
-                        "$ref": "AuditLogConfig"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Ancestor": {
-            "description": "Identifying information for a single ancestor of a project.",
-            "id": "Ancestor",
-            "properties": {
-                "resourceId": {
-                    "$ref": "ResourceId",
-                    "description": "Resource id of the ancestor."
+                "type": {
+                    "description": "Required field representing the resource type this id is for.\nAt present, the valid types are \"project\", \"folder\", and \"organization\".",
+                    "type": "string"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis_beta/cloudtasks__v2beta2.json b/discovery/googleapis_beta/cloudtasks__v2beta2.json
new file mode 100644
index 0000000..f63c906
--- /dev/null
+++ b/discovery/googleapis_beta/cloudtasks__v2beta2.json
@@ -0,0 +1,1580 @@
+{
+    "auth": {
+        "oauth2": {
+            "scopes": {
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "View and manage your data across Google Cloud Platform services"
+                }
+            }
+        }
+    },
+    "basePath": "",
+    "baseUrl": "https://cloudtasks.googleapis.com/",
+    "batchPath": "batch",
+    "canonicalName": "Cloud Tasks",
+    "description": "Manages the execution of large numbers of distributed requests. Cloud Tasks is in Alpha.",
+    "discoveryVersion": "v1",
+    "documentationLink": "https://cloud.google.com/cloud-tasks/",
+    "icons": {
+        "x16": "http://www.google.com/images/icons/product/search-16.gif",
+        "x32": "http://www.google.com/images/icons/product/search-32.gif"
+    },
+    "id": "cloudtasks:v2beta2",
+    "kind": "discovery#restDescription",
+    "name": "cloudtasks",
+    "ownerDomain": "google.com",
+    "ownerName": "Google",
+    "parameters": {
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
+        "$.xgafv": {
+            "description": "V1 error format.",
+            "enum": [
+                "1",
+                "2"
+            ],
+            "enumDescriptions": [
+                "v1 error format",
+                "v2 error format"
+            ],
+            "location": "query",
+            "type": "string"
+        },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
+        "alt": {
+            "default": "json",
+            "description": "Data format for response.",
+            "enum": [
+                "json",
+                "media",
+                "proto"
+            ],
+            "enumDescriptions": [
+                "Responses with Content-Type of application/json",
+                "Media download with context-dependent Content-Type",
+                "Responses with Content-Type of application/x-protobuf"
+            ],
+            "location": "query",
+            "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        }
+    },
+    "protocol": "rest",
+    "resources": {
+        "projects": {
+            "resources": {
+                "locations": {
+                    "methods": {
+                        "list": {
+                            "description": "Lists information about the supported locations for this service.",
+                            "httpMethod": "GET",
+                            "id": "cloudtasks.projects.locations.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The resource that owns the locations collection, if applicable.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "The standard list page token.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The standard list page size.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "filter": {
+                                    "description": "The standard list filter.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2beta2/{+name}/locations",
+                            "response": {
+                                "$ref": "ListLocationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "get": {
+                            "description": "Get information about a location.",
+                            "httpMethod": "GET",
+                            "id": "cloudtasks.projects.locations.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Resource name for the location.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2beta2/{+name}",
+                            "response": {
+                                "$ref": "Location"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    },
+                    "resources": {
+                        "queues": {
+                            "methods": {
+                                "getIamPolicy": {
+                                    "description": "Gets the access control policy for a Queue.\nReturns an empty policy if the resource exists and does not have a policy\nset.\n\nAuthorization requires the following [Google IAM](/iam) permission on the\nspecified resource parent:\n\n* `cloudtasks.queues.getIamPolicy`\n",
+                                    "httpMethod": "POST",
+                                    "id": "cloudtasks.projects.locations.queues.getIamPolicy",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta2/{+resource}:getIamPolicy",
+                                    "request": {
+                                        "$ref": "GetIamPolicyRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Policy"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Gets a queue.",
+                                    "httpMethod": "GET",
+                                    "id": "cloudtasks.projects.locations.queues.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required.\n\nThe resource name of the queue. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta2/{+name}",
+                                    "response": {
+                                        "$ref": "Queue"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates a queue.\n\nThis method creates the queue if it does not exist and updates\nthe queue if it does exist.\n\nWARNING: This method is only available to whitelisted\nusers. Using this method carries some risk. Read\n[Overview of Queue Management and queue.yaml](/cloud-tasks/docs/queue-yaml)\ncarefully and then sign up for\n[whitelist access to this method](https://goo.gl/Fe5mUy).",
+                                    "httpMethod": "PATCH",
+                                    "id": "cloudtasks.projects.locations.queues.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The queue name.\n\nThe queue name must have the following format:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`\n\n* `PROJECT_ID` can contain uppercase and lowercase letters,\n  numbers, hyphens, colons, and periods; that is, it must match\n  the regular expression: `[a-zA-Z\\\\d-:\\\\.]+`.\n* `QUEUE_ID` can contain uppercase and lowercase letters,\n  numbers, and hyphens; that is, it must match the regular\n  expression: `[a-zA-Z\\\\d-]+`. The maximum length is 100\n  characters.\n\nCaller-specified and required in CreateQueueRequest, after which\nit becomes output only.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "A mask used to specify which fields of the queue are being updated.\n\nIf empty, then all fields will be updated.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta2/{+name}",
+                                    "request": {
+                                        "$ref": "Queue"
+                                    },
+                                    "response": {
+                                        "$ref": "Queue"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "purge": {
+                                    "description": "Purges a queue by deleting all of its tasks.\n\nAll tasks created before this method is called are permanently deleted.\n\nPurge operations can take up to one minute to take effect. Tasks\nmight be dispatched before the purge takes effect. A purge is irreversible.",
+                                    "httpMethod": "POST",
+                                    "id": "cloudtasks.projects.locations.queues.purge",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta2/{+name}:purge",
+                                    "request": {
+                                        "$ref": "PurgeQueueRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Queue"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "testIamPermissions": {
+                                    "description": "Returns permissions that a caller has on a Queue.\nIf the resource does not exist, this will return an empty set of\npermissions, not a google.rpc.Code.NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.\n",
+                                    "httpMethod": "POST",
+                                    "id": "cloudtasks.projects.locations.queues.testIamPermissions",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta2/{+resource}:testIamPermissions",
+                                    "request": {
+                                        "$ref": "TestIamPermissionsRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "TestIamPermissionsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "pause": {
+                                    "description": "Pauses the queue.\n\nIf a queue is paused then the system will stop executing the\ntasks in the queue until it is resumed via\nCloudTasks.ResumeQueue. Tasks can still be added when the\nqueue is paused. The state of the queue is stored in\nQueue.queue_state; if paused it will be set to\nQueue.QueueState.PAUSED.\n\nWARNING: This method is only available to whitelisted\nusers. Using this method carries some risk. Read\n[Overview of Queue Management and queue.yaml](/cloud-tasks/docs/queue-yaml)\ncarefully and then sign up for\n[whitelist access to this method](https://goo.gl/Fe5mUy).",
+                                    "httpMethod": "POST",
+                                    "id": "cloudtasks.projects.locations.queues.pause",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta2/{+name}:pause",
+                                    "request": {
+                                        "$ref": "PauseQueueRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Queue"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a queue.\n\nThis command will delete the queue even if it has tasks in it.\n\nNote: If you delete a queue, a queue with the same name can't be created\nfor 7 days.\n\nWARNING: This method is only available to whitelisted\nusers. Using this method carries some risk. Read\n[Overview of Queue Management and queue.yaml](/cloud-tasks/docs/queue-yaml)\ncarefully and then sign up for\n[whitelist access to this method](https://goo.gl/Fe5mUy).",
+                                    "httpMethod": "DELETE",
+                                    "id": "cloudtasks.projects.locations.queues.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta2/{+name}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists queues.\n\nQueues are returned in lexicographical order.",
+                                    "httpMethod": "GET",
+                                    "id": "cloudtasks.projects.locations.queues.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "pageToken": {
+                                            "description": "A token identifying the page of results to return.\n\nTo request the first page results, page_token must be empty. To\nrequest the next page of results, page_token must be the value of\nListQueuesResponse.next_page_token returned from the previous\ncall to CloudTasks.ListQueues method. It is an error to\nswitch the value of ListQueuesRequest.filter while iterating\nthrough pages.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Requested page size.\n\nThe maximum page size is 9800. If unspecified, the page size will\nbe the maximum. Fewer queues than requested might be returned,\neven if more queues exist; use\nListQueuesResponse.next_page_token to determine if more\nqueues exist.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "parent": {
+                                            "description": "Required.\n\nThe location name.\nFor example: `projects/PROJECT_ID/locations/LOCATION_ID`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "filter": {
+                                            "description": "`filter` can be used to specify a subset of queues. Any Queue\nfield can be used as a filter and several operators as supported.\nFor example: `<=, <, >=, >, !=, =, :`. The filter syntax is the same as\ndescribed in\n[Stackdriver's Advanced Logs Filters](/logging/docs/view/advanced_filters).\n\nSample filter \"app_engine_http_target: *\".\n\nNote that using filters might cause fewer queues than the\nrequested_page size to be returned.",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta2/{+parent}/queues",
+                                    "response": {
+                                        "$ref": "ListQueuesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "create": {
+                                    "description": "Creates a queue.\n\nWARNING: This method is only available to whitelisted\nusers. Using this method carries some risk. Read\n[Overview of Queue Management and queue.yaml](/cloud-tasks/docs/queue-yaml)\ncarefully and then sign up for\n[whitelist access to this method](https://goo.gl/Fe5mUy).",
+                                    "httpMethod": "POST",
+                                    "id": "cloudtasks.projects.locations.queues.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "Required.\n\nThe location name in which the queue will be created.\nFor example: `projects/PROJECT_ID/locations/LOCATION_ID`\n\nThe list of allowed locations can be obtained by calling Cloud\nTasks' implementation of\ngoogle.cloud.location.Locations.ListLocations.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta2/{+parent}/queues",
+                                    "request": {
+                                        "$ref": "Queue"
+                                    },
+                                    "response": {
+                                        "$ref": "Queue"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "setIamPolicy": {
+                                    "description": "Sets the access control policy for a Queue. Replaces any existing\npolicy.\n\nAuthorization requires the following [Google IAM](/iam) permission on the\nspecified resource parent:\n\n* `cloudtasks.queues.setIamPolicy`\n",
+                                    "httpMethod": "POST",
+                                    "id": "cloudtasks.projects.locations.queues.setIamPolicy",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta2/{+resource}:setIamPolicy",
+                                    "request": {
+                                        "$ref": "SetIamPolicyRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Policy"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "resume": {
+                                    "description": "Resume a queue.\n\nThis method resumes a queue after it has been\nQueue.QueueState.PAUSED or Queue.QueueState.DISABLED. The state of\na queue is stored in Queue.queue_state; after calling this method it\nwill be set to Queue.QueueState.RUNNING.\n\nWARNING: This method is only available to whitelisted\nusers. Using this method carries some risk. Read\n[Overview of Queue Management and queue.yaml](/cloud-tasks/docs/queue-yaml)\ncarefully and then sign up for\n[whitelist access to this method](https://goo.gl/Fe5mUy).\n\nWARNING: Resuming many high-QPS queues at the same time can\nlead to target overloading. If you are resuming high-QPS\nqueues, follow the 500/50/5 pattern described in\n[Managing Cloud Tasks Scaling Risks](/cloud-tasks/pdfs/managing-cloud-tasks-scaling-risks-2017-06-05.pdf).",
+                                    "httpMethod": "POST",
+                                    "id": "cloudtasks.projects.locations.queues.resume",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta2/{+name}:resume",
+                                    "request": {
+                                        "$ref": "ResumeQueueRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Queue"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            },
+                            "resources": {
+                                "tasks": {
+                                    "methods": {
+                                        "create": {
+                                            "description": "Creates a task and adds it to a queue.\n\nTo add multiple tasks at the same time, use\n[HTTP batching](/storage/docs/json_api/v1/how-tos/batch)\nor the batching documentation for your client library, for example\nhttps://developers.google.com/api-client-library/python/guide/batch.\n\nTasks cannot be updated after creation; there is no UpdateTask command.\n\n* For [App Engine queues](google.cloud.tasks.v2beta2.AppEngineHttpTarget),\n  the maximum task size is 100KB.\n* For [pull queues](google.cloud.tasks.v2beta2.PullTarget), this\n  the maximum task size is 1MB.",
+                                            "httpMethod": "POST",
+                                            "id": "cloudtasks.projects.locations.queues.tasks.create",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "parent": {
+                                                    "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`\n\nThe queue must already exist.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta2/{+parent}/tasks",
+                                            "request": {
+                                                "$ref": "CreateTaskRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Task"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "cancelLease": {
+                                            "description": "Cancel a pull task's lease.\n\nThe lease holder can use this method to cancel a task's lease\nby setting Task.schedule_time to now. This will make the task\navailable to be leased to the next caller of CloudTasks.PullTasks.",
+                                            "httpMethod": "POST",
+                                            "id": "cloudtasks.projects.locations.queues.tasks.cancelLease",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required.\n\nThe task name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta2/{+name}:cancelLease",
+                                            "request": {
+                                                "$ref": "CancelLeaseRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Task"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "run": {
+                                            "description": "Forces a task to run now.\n\nThis command is meant to be used for manual debugging. For\nexample, CloudTasks.RunTask can be used to retry a failed\ntask after a fix has been made or to manually force a task to be\ndispatched now.\n\nWhen this method is called, Cloud Tasks will dispatch the task to its\ntarget, even if the queue is Queue.QueueState.PAUSED.\n\nThe dispatched task is returned. That is, the task that is returned\ncontains the Task.task_status after the task is dispatched but\nbefore the task is received by its target.\n\nIf Cloud Tasks receives a successful response from the task's\nhandler, then the task will be deleted; otherwise the task's\nTask.schedule_time will be reset to the time that\nCloudTasks.RunTask was called plus the retry delay specified\nin the queue and task's RetryConfig.\n\nCloudTasks.RunTask returns google.rpc.Code.NOT_FOUND when\nit is called on a task that has already succeeded or permanently\nfailed. google.rpc.Code.FAILED_PRECONDITION is returned when\nCloudTasks.RunTask is called on task that is dispatched or\nalready running.",
+                                            "httpMethod": "POST",
+                                            "id": "cloudtasks.projects.locations.queues.tasks.run",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required.\n\nThe task name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta2/{+name}:run",
+                                            "request": {
+                                                "$ref": "RunTaskRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Task"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "acknowledge": {
+                                            "description": "Acknowledges a pull task.\n\nThe lease holder, that is, the entity that received this task in\na PullTasksResponse, must call this method to indicate that\nthe work associated with the task has finished.\n\nThe lease holder must acknowledge a task within the\nPullTasksRequest.lease_duration or the lease will expire and\nthe task will become ready to be returned in a different\nPullTasksResponse. After the task is acknowledged, it will\nnot be returned by a later CloudTasks.PullTasks,\nCloudTasks.GetTask, or CloudTasks.ListTasks.",
+                                            "httpMethod": "POST",
+                                            "id": "cloudtasks.projects.locations.queues.tasks.acknowledge",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required.\n\nThe task name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta2/{+name}:acknowledge",
+                                            "request": {
+                                                "$ref": "AcknowledgeTaskRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Empty"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "renewLease": {
+                                            "description": "Renew the current lease of a pull task.\n\nThe lease holder can use this method to extend the lease by a new\nduration, starting from now. The new task lease will be\nreturned in Task.schedule_time.",
+                                            "httpMethod": "POST",
+                                            "id": "cloudtasks.projects.locations.queues.tasks.renewLease",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required.\n\nThe task name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta2/{+name}:renewLease",
+                                            "request": {
+                                                "$ref": "RenewLeaseRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Task"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "get": {
+                                            "description": "Gets a task.",
+                                            "httpMethod": "GET",
+                                            "id": "cloudtasks.projects.locations.queues.tasks.get",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required.\n\nThe task name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "responseView": {
+                                                    "description": "The response_view specifies which subset of the Task will be\nreturned.\n\nBy default response_view is Task.View.BASIC; not all\ninformation is retrieved by default because some data, such as\npayloads, might be desirable to return only when needed because\nof its large size or because of the sensitivity of data that it\ncontains.\n\nAuthorization for Task.View.FULL requires `cloudtasks.tasks.fullView`\n[Google IAM](/iam/) permission on the\nTask.name resource.",
+                                                    "enum": [
+                                                        "VIEW_UNSPECIFIED",
+                                                        "BASIC",
+                                                        "FULL"
+                                                    ],
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta2/{+name}",
+                                            "response": {
+                                                "$ref": "Task"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "delete": {
+                                            "description": "Deletes a task.\n\nA task can be deleted if it is scheduled or dispatched. A task\ncannot be deleted if it has completed successfully or permanently\nfailed.",
+                                            "httpMethod": "DELETE",
+                                            "id": "cloudtasks.projects.locations.queues.tasks.delete",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required.\n\nThe task name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta2/{+name}",
+                                            "response": {
+                                                "$ref": "Empty"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "pull": {
+                                            "description": "Pulls tasks from a pull queue and acquires a lease on them for a\nspecified PullTasksRequest.lease_duration.\n\nThis method is invoked by the lease holder to obtain the\nlease. The lease holder must acknowledge the task via\nCloudTasks.AcknowledgeTask after they have performed the work\nassociated with the task.\n\nThe payload is intended to store data that the lease holder needs\nto perform the work associated with the task. To return the\npayloads in the PullTasksResponse, set\nPullTasksRequest.response_view to Task.View.FULL.\n\nA maximum of 10 qps of CloudTasks.PullTasks requests are allowed per\nqueue. google.rpc.Code.RESOURCE_EXHAUSTED is returned when this limit\nis exceeded. google.rpc.Code.RESOURCE_EXHAUSTED is also returned when\nRateLimits.max_tasks_dispatched_per_second is exceeded.",
+                                            "httpMethod": "POST",
+                                            "id": "cloudtasks.projects.locations.queues.tasks.pull",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta2/{+name}/tasks:pull",
+                                            "request": {
+                                                "$ref": "PullTasksRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "PullTasksResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "list": {
+                                            "description": "Lists the tasks in a queue.\n\nBy default response_view is Task.View.BASIC; not all\ninformation is retrieved by default due to performance\nconsiderations; ListTasksRequest.response_view controls the\nsubset of information which is returned.",
+                                            "httpMethod": "GET",
+                                            "id": "cloudtasks.projects.locations.queues.tasks.list",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "responseView": {
+                                                    "description": "The response_view specifies which subset of the Task will be\nreturned.\n\nBy default response_view is Task.View.BASIC; not all\ninformation is retrieved by default because some data, such as\npayloads, might be desirable to return only when needed because\nof its large size or because of the sensitivity of data that it\ncontains.\n\nAuthorization for Task.View.FULL requires `cloudtasks.tasks.fullView`\n[Google IAM](/iam/) permission on the\nTask.name resource.",
+                                                    "enum": [
+                                                        "VIEW_UNSPECIFIED",
+                                                        "BASIC",
+                                                        "FULL"
+                                                    ],
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "orderBy": {
+                                                    "description": "\nSort order used for the query. The fields supported for sorting\nare Task.schedule_time and PullMessage.tag. All results will be\nreturned in approximately ascending order. The default ordering is by\nTask.schedule_time.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageToken": {
+                                                    "description": "A token identifying the page of results to return.\n\nTo request the first page results, page_token must be empty. To\nrequest the next page of results, page_token must be the value of\nListTasksResponse.next_page_token returned from the previous\ncall to CloudTasks.ListTasks method.\n\nThe page token is valid for only 2 hours.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Requested page size. Fewer tasks than requested might be returned.\n\nThe maximum page size is 1000. If unspecified, the page size will\nbe the maximum. Fewer tasks than requested might be returned,\neven if more tasks exist; use\nListTasksResponse.next_page_token to determine if more tasks\nexist.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "parent": {
+                                                    "description": "Required.\n\nThe queue name. For example:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2beta2/{+parent}/tasks",
+                                            "response": {
+                                                "$ref": "ListTasksResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "revision": "20171020",
+    "rootUrl": "https://cloudtasks.googleapis.com/",
+    "schemas": {
+        "PullTaskTarget": {
+            "description": "Deprecated. Use PullMessage.",
+            "id": "PullTaskTarget",
+            "properties": {
+                "payload": {
+                    "description": "Deprecated. Use PullMessage.payload.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "tag": {
+                    "description": "Deprecated. Use PullMessage.tag.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AppEngineQueueConfig": {
+            "description": "Deprecated. Use AppEngineHttpTarget.",
+            "id": "AppEngineQueueConfig",
+            "properties": {
+                "appEngineRoutingOverride": {
+                    "$ref": "AppEngineRouting",
+                    "description": "Deprecated. Use AppEngineHttpTarget.app_engine_routing_override."
+                }
+            },
+            "type": "object"
+        },
+        "GetIamPolicyRequest": {
+            "description": "Request message for `GetIamPolicy` method.",
+            "id": "GetIamPolicyRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "TestIamPermissionsResponse": {
+            "description": "Response message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsResponse",
+            "properties": {
+                "permissions": {
+                    "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "RetryConfig": {
+            "description": "Retry config.\n\nThese settings determine how a failed task attempt is retried.",
+            "id": "RetryConfig",
+            "properties": {
+                "minBackoff": {
+                    "description": "The minimum amount of time to wait before retrying a task after\nit fails.\n\n* For [App Engine queues](google.cloud.tasks.v2beta2.AppEngineHttpTarget),\n  this field is 0.1 seconds by default.\n* For [pull queues](google.cloud.tasks.v2beta2.PullTarget), this\n  field is output only and always 0.\n\n`min_backoff` will be truncated to the nearest second.\n\nThis field has the same meaning as\n[min_backoff_seconds in queue.yaml](/appengine/docs/standard/python/config/queueref#retry_parameters).",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "maxBackoff": {
+                    "description": "The maximum amount of time to wait before retrying a task after\nit fails. The default is 1 hour.\n\n* For [App Engine queues](google.cloud.tasks.v2beta2.AppEngineHttpTarget),\n  this field is 1 hour by default.\n* For [pull queues](google.cloud.tasks.v2beta2.PullTarget), this field\n  is output only and always 0.\n\n`max_backoff` will be truncated to the nearest second.\n\nThis field has the same meaning as\n[max_backoff_seconds in queue.yaml](/appengine/docs/standard/python/config/queueref#retry_parameters).",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "maxRetryDuration": {
+                    "description": "If positive, `max_retry_duration` specifies the time limit for retrying a\nfailed task, measured from when the task was first attempted. Once\n`max_retry_duration` time has passed *and* the task has been attempted\nRetryConfig.max_attempts times, no further attempts will be made and\nthe task will be deleted.\n\nIf zero, then the task age is unlimited.\n\n* For [App Engine queues](google.cloud.tasks.v2beta2.AppEngineHttpTarget),\n  this field is 0 seconds by default.\n* For [pull queues](google.cloud.tasks.v2beta2.PullTarget), this\n  field is output only and always 0.\n\n`max_retry_duration` will be truncated to the nearest second.\n\nThis field has the same meaning as\n[task_age_limit in queue.yaml](/appengine/docs/standard/python/config/queueref#retry_parameters).",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "maxDoublings": {
+                    "description": "The time between retries increases exponentially `max_doublings` times.\n`max_doublings` is maximum number of times that the interval between failed\ntask retries will be doubled before the interval increases linearly.\nAfter max_doublings intervals, the retry interval will be\n2^(max_doublings - 1) * RetryConfig.min_backoff.\n\n* For [App Engine queues](google.cloud.tasks.v2beta2.AppEngineHttpTarget),\n  this field is 16 by default.\n* For [pull queues](google.cloud.tasks.v2beta2.PullTarget), this field\n  is output only and always 0.\n\nThis field has the same meaning as\n[max_doublings in queue.yaml](/appengine/docs/standard/python/config/queueref#retry_parameters).",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "maxAttempts": {
+                    "description": "The maximum number of attempts for a task.\n\nCloud Tasks will attempt the task `max_attempts` times (that\nis, if the first attempt fails, then there will be\n`max_attempts - 1` retries).  Must be > 0.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "unlimitedAttempts": {
+                    "description": "If true, then the number of attempts is unlimited.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "PullTarget": {
+            "description": "Pull target.",
+            "id": "PullTarget",
+            "properties": {},
+            "type": "object"
+        },
+        "ResumeQueueRequest": {
+            "description": "Request message for CloudTasks.ResumeQueue.",
+            "id": "ResumeQueueRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "CreateTaskRequest": {
+            "description": "Request message for CloudTasks.CreateTask.",
+            "id": "CreateTaskRequest",
+            "properties": {
+                "responseView": {
+                    "description": "The response_view specifies which subset of the Task will be\nreturned.\n\nBy default response_view is Task.View.BASIC; not all\ninformation is retrieved by default because some data, such as\npayloads, might be desirable to return only when needed because\nof its large size or because of the sensitivity of data that it\ncontains.\n\nAuthorization for Task.View.FULL requires `cloudtasks.tasks.fullView`\n[Google IAM](/iam/) permission on the\nTask.name resource.",
+                    "enum": [
+                        "VIEW_UNSPECIFIED",
+                        "BASIC",
+                        "FULL"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified. Defaults to BASIC.",
+                        "The basic view omits fields which can be large or can contain\nsensitive data.\n\nThis view does not include the payload.",
+                        "All information is returned.\n\nPayloads might be desirable to return only when needed, because\nthey can be large and because of the sensitivity of the data\nthat you choose to store in it.\n\nAuthorization for Task.View.FULL requires\n`cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)\npermission on the Queue.name resource."
+                    ],
+                    "type": "string"
+                },
+                "task": {
+                    "$ref": "Task",
+                    "description": "Required.\n\nThe task to add.\n\nTask names have the following format:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`.\nThe user can optionally specify a name for the task in\nTask.name. If a name is not specified then the system will\ngenerate a random unique task id, which will be returned in the\nresponse's Task.name.\n\nIf Task.schedule_time is not set or is in the past then Cloud\nTasks will set it to the current time.\n\nTask De-duplication:\n\nExplicitly specifying a task ID enables task de-duplication.  If\na task's ID is identical to that of an existing task or a task\nthat was deleted or completed recently then the call will fail\nwith google.rpc.Code.ALREADY_EXISTS. If the task's queue was\ncreated using Cloud Tasks, then another task with the same name\ncan't be created for ~1hour after the original task was deleted\nor completed. If the task's queue was created using queue.yaml or\nqueue.xml, then another task with the same name can't be created\nfor ~9days after the original task was deleted or completed.\n\nBecause there is an extra lookup cost to identify duplicate task\nnames, these CloudTasks.CreateTask calls have significantly\nincreased latency. Using hashed strings for the task id or for\nthe prefix of the task id is recommended. Choosing task ids that\nare sequential or have sequential prefixes, for example using a\ntimestamp, causes an increase in latency and error rates in all\ntask commands. The infrastructure relies on an approximately\nuniform distribution of task ids to store and serve tasks\nefficiently."
+                }
+            },
+            "type": "object"
+        },
+        "ListTasksResponse": {
+            "description": "Response message for listing tasks using CloudTasks.ListTasks.",
+            "id": "ListTasksResponse",
+            "properties": {
+                "tasks": {
+                    "description": "The list of tasks.",
+                    "items": {
+                        "$ref": "Task"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token to retrieve next page of results.\n\nTo return the next page of results, call\nCloudTasks.ListTasks with this value as the\nListTasksRequest.page_token.\n\nIf the next_page_token is empty, there are no more results.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "PullQueueConfig": {
+            "description": "Deprecated. Use PullTarget.",
+            "id": "PullQueueConfig",
+            "properties": {},
+            "type": "object"
+        },
+        "Queue": {
+            "description": "A queue is a container of related tasks. Queues are configured to manage\nhow those tasks are dispatched. Configurable properties include rate limits,\nretry options, target types, and others.",
+            "id": "Queue",
+            "properties": {
+                "retryConfig": {
+                    "$ref": "RetryConfig",
+                    "description": "Settings that determine the retry behavior.\n\n* For tasks created using Cloud Tasks: the queue-level retry settings\n  apply to all tasks in the queue that were created using Cloud Tasks.\n  Retry settings cannot be set on individual tasks.\n* For tasks created using the App Engine SDK: the queue-level retry\n  settings apply to all tasks in the queue which do not have retry settings\n  explicitly set on the task and were created by the App Engine SDK. See\n  [App Engine documentation](/appengine/docs/standard/python/taskqueue/push/retrying-tasks)."
+                },
+                "queueState": {
+                    "description": "Output only.\n\nThe state of the queue.\n\n`queue_state` can only be changed by called\nCloudTasks.PauseQueue, CloudTasks.ResumeQueue, or uploading\n[queue.yaml](/appengine/docs/python/config/queueref).\nCloudTasks.UpdateQueue cannot be used to change `queue_state`.",
+                    "enum": [
+                        "QUEUE_STATE_UNSPECIFIED",
+                        "RUNNING",
+                        "PAUSED",
+                        "DISABLED"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified state.",
+                        "The queue is running. Tasks can be dispatched.",
+                        "Tasks are paused by the user. If the queue is paused then Cloud\nTasks will stop delivering tasks from it, but more tasks can\nstill be added to it by the user. When a pull queue is paused,\nall CloudTasks.PullTasks calls will return a\n`FAILED_PRECONDITION` error.",
+                        "The queue is disabled.\n\nA queue becomes `DISABLED` when\n[queue.yaml](/appengine/docs/python/config/queueref) or\n[queue.xml](appengine/docs/standard/java/config/queueref) is uploaded\nwhich does not contain the queue. You cannot directly disable a queue.\n\nWhen a queue is disabled, tasks can still be added to a queue\nbut the tasks are not dispatched and CloudTasks.PullTasks calls\nreturn a `FAILED_PRECONDITION` error.\n\nTo permanently delete this queue and all of its tasks, call\nCloudTasks.DeleteQueue."
+                    ],
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The queue name.\n\nThe queue name must have the following format:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`\n\n* `PROJECT_ID` can contain uppercase and lowercase letters,\n  numbers, hyphens, colons, and periods; that is, it must match\n  the regular expression: `[a-zA-Z\\\\d-:\\\\.]+`.\n* `QUEUE_ID` can contain uppercase and lowercase letters,\n  numbers, and hyphens; that is, it must match the regular\n  expression: `[a-zA-Z\\\\d-]+`. The maximum length is 100\n  characters.\n\nCaller-specified and required in CreateQueueRequest, after which\nit becomes output only.",
+                    "type": "string"
+                },
+                "rateLimits": {
+                    "$ref": "RateLimits",
+                    "description": "Rate limits for task dispatches.\n\nQueue.rate_limits and Queue.retry_config are related because they\nboth control task attempts however they control how tasks are attempted in\ndifferent ways:\n\n* Queue.rate_limits controls the total rate of dispatches from a queue\n  (i.e. all traffic dispatched from the queue, regardless of whether the\n  dispatch is from a first attempt or a retry).\n* Queue.retry_config controls what happens to particular a task after\n  its first attempt fails. That is, Queue.retry_config controls task\n  retries (the second attempt, third attempt, etc)."
+                },
+                "appEngineQueueConfig": {
+                    "$ref": "AppEngineQueueConfig",
+                    "description": "Deprecated. Use Queue.app_engine_http_target."
+                },
+                "pullTarget": {
+                    "$ref": "PullTarget",
+                    "description": "Pull target.\n\nA pull queue is a queue that has a PullTarget."
+                },
+                "pullQueueConfig": {
+                    "$ref": "PullQueueConfig",
+                    "description": "Deprecated. Use Queue.pull_target."
+                },
+                "appEngineHttpTarget": {
+                    "$ref": "AppEngineHttpTarget",
+                    "description": "App Engine HTTP target.\n\nAn App Engine queue is a queue that has an AppEngineHttpTarget."
+                },
+                "purgeTime": {
+                    "description": "Output only.\n\nThe last time this queue was purged. All tasks that were\ncreated before this time were purged.\n\nA queue can be purged using CloudTasks.PurgeQueue, the\n[App Engine Task Queue SDK, or the Cloud Console](/appengine/docs/standard/python/taskqueue/push/deleting-tasks-and-queues#purging_all_tasks_from_a_queue).\n\nPurge time will be truncated to the nearest microsecond. Purge\ntime will be zero if the queue has never been purged.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "PullTasksRequest": {
+            "description": "Request message for pulling tasks using CloudTasks.PullTasks.",
+            "id": "PullTasksRequest",
+            "properties": {
+                "responseView": {
+                    "description": "The response_view specifies which subset of the Task will be\nreturned.\n\nBy default response_view is Task.View.BASIC; not all\ninformation is retrieved by default because some data, such as\npayloads, might be desirable to return only when needed because\nof its large size or because of the sensitivity of data that it\ncontains.\n\nAuthorization for Task.View.FULL requires `cloudtasks.tasks.fullView`\n[Google IAM](/iam/) permission on the\nTask.name resource.",
+                    "enum": [
+                        "VIEW_UNSPECIFIED",
+                        "BASIC",
+                        "FULL"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified. Defaults to BASIC.",
+                        "The basic view omits fields which can be large or can contain\nsensitive data.\n\nThis view does not include the payload.",
+                        "All information is returned.\n\nPayloads might be desirable to return only when needed, because\nthey can be large and because of the sensitivity of the data\nthat you choose to store in it.\n\nAuthorization for Task.View.FULL requires\n`cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)\npermission on the Queue.name resource."
+                    ],
+                    "type": "string"
+                },
+                "filter": {
+                    "description": "`filter` can be used to specify a subset of tasks to lease.\n\nWhen `filter` is set to `tag=<my-tag>` then the\nPullTasksResponse will contain only tasks whose\nPullMessage.tag is equal to `<my-tag>`. `<my-tag>` must be less than\n500 bytes.\n\nWhen `filter` is set to `tag_function=oldest_tag()`, only tasks which have\nthe same tag as the task with the oldest schedule_time will be returned.\n\nGrammar Syntax:\n\n* `filter = \"tag=\" tag | \"tag_function=\" function`\n\n* `tag = string | bytes`\n\n* `function = \"oldest_tag()\"`\n\nThe `oldest_tag()` function returns tasks which have the same tag as the\noldest task (ordered by schedule time).",
+                    "type": "string"
+                },
+                "maxTasks": {
+                    "description": "The maximum number of tasks to lease. The maximum that can be\nrequested is 1000.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "leaseDuration": {
+                    "description": "The duration of the lease.\n\nEach task returned in the PullTasksResponse will have its\nTask.schedule_time set to the current time plus the\n`lease_duration`. A task that has been returned in a\nPullTasksResponse is leased -- that task will not be\nreturned in a different PullTasksResponse before the\nTask.schedule_time.\n\nAfter the lease holder has successfully finished the work\nassociated with the task, the lease holder must call\nCloudTasks.AcknowledgeTask. If the task is not acknowledged\nvia CloudTasks.AcknowledgeTask before the\nTask.schedule_time then it will be returned in a later\nPullTasksResponse so that another lease holder can process\nit.\n\nThe maximum lease duration is 1 week.\n`lease_duration` will be truncated to the nearest second.",
+                    "format": "google-duration",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SetIamPolicyRequest": {
+            "description": "Request message for `SetIamPolicy` method.",
+            "id": "SetIamPolicyRequest",
+            "properties": {
+                "policy": {
+                    "$ref": "Policy",
+                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
+                }
+            },
+            "type": "object"
+        },
+        "AppEngineRouting": {
+            "description": "App Engine Routing.\n\nFor more information about services, versions, and instances see\n[An Overview of App Engine](/appengine/docs/python/an-overview-of-app-engine),\n[Microservices Architecture on Google App Engine](/appengine/docs/python/microservices-on-app-engine),\n[App Engine Standard request routing](/appengine/docs/standard/python/how-requests-are-routed),\nand [App Engine Flex request routing](/appengine/docs/flexible/python/how-requests-are-routed).",
+            "id": "AppEngineRouting",
+            "properties": {
+                "service": {
+                    "description": "App service.\n\nBy default, the task is sent to the service which is the default\nservice when the task is attempted (\"default\").\n\nFor some queues or tasks which were created using the App Engine Task Queue\nAPI, AppEngineRouting.host is not parsable into\nAppEngineRouting.service, AppEngineRouting.version, and\nAppEngineRouting.instance. For example, some tasks which were created\nusing the App Engine SDK use a custom domain name; custom domains are not\nparsed by Cloud Tasks. If AppEngineRouting.host is not parsable, then\nAppEngineRouting.service, AppEngineRouting.version, and\nAppEngineRouting.instance are the empty string.",
+                    "type": "string"
+                },
+                "instance": {
+                    "description": "App instance.\n\nBy default, the task is sent to an instance which is available when\nthe task is attempted.\n\nRequests can only be sent to a specific instance if\n[manual scaling is used in App Engine Standard](/appengine/docs/python/an-overview-of-app-engine?hl=en_US#scaling_types_and_instance_classes).\nApp Engine Flex does not support instances. For more information, see\n[App Engine Standard request routing](/appengine/docs/standard/python/how-requests-are-routed)\nand [App Engine Flex request routing](/appengine/docs/flexible/python/how-requests-are-routed).",
+                    "type": "string"
+                },
+                "version": {
+                    "description": "App version.\n\nBy default, the task is sent to the version which is the default\nversion when the task is attempted (\"default\").\n\nFor some queues or tasks which were created using the App Engine Task Queue\nAPI, AppEngineRouting.host is not parsable into\nAppEngineRouting.service, AppEngineRouting.version, and\nAppEngineRouting.instance. For example, some tasks which were created\nusing the App Engine SDK use a custom domain name; custom domains are not\nparsed by Cloud Tasks. If AppEngineRouting.host is not parsable, then\nAppEngineRouting.service, AppEngineRouting.version, and\nAppEngineRouting.instance are the empty string.",
+                    "type": "string"
+                },
+                "host": {
+                    "description": "Output only.\n\nThe host that the task is sent to. For more information, see\n[How Requests are Routed](/appengine/docs/standard/python/how-requests-are-routed).\n\nThe host is constructed as:\n\n\n* `host = [application_domain_name]`</br>\n  `| [service] + '.' + [application_domain_name]`</br>\n  `| [version] + '.' + [application_domain_name]`</br>\n  `| [version_dot_service]+ '.' + [application_domain_name]`</br>\n  `| [instance] + '.' + [application_domain_name]`</br>\n  `| [instance_dot_service] + '.' + [application_domain_name]`</br>\n  `| [instance_dot_version] + '.' + [application_domain_name]`</br>\n  `| [instance_dot_version_dot_service] + '.' + [application_domain_name]`\n\n* `application_domain_name` = The domain name of the app, for\n  example <app-id>.appspot.com, which is associated with the\n  queue's project ID. Some tasks which were created using the App Engine\n  SDK use a custom domain name.\n\n* `service =` AppEngineRouting.service\n\n* `version =` AppEngineRouting.version\n\n* `version_dot_service =`\n  AppEngineRouting.version `+ '.' +` AppEngineRouting.service\n\n* `instance =` AppEngineRouting.instance\n\n* `instance_dot_service =`\n  AppEngineRouting.instance `+ '.' +` AppEngineRouting.service\n\n* `instance_dot_version =`\n  AppEngineRouting.instance `+ '.' +` AppEngineRouting.version\n\n* `instance_dot_version_dot_service =`\n  AppEngineRouting.instance `+ '.' +`\n  AppEngineRouting.version `+ '.' +` AppEngineRouting.service\n\nIf AppEngineRouting.service is empty, then the task will be sent\nto the service which is the default service when the task is attempted.\n\nIf AppEngineRouting.version is empty, then the task will be sent\nto the version which is the default version when the task is attempted.\n\nIf AppEngineRouting.instance is empty, then the task will be sent\nto an instance which is available when the task is attempted.\n\nWhen AppEngineRouting.service is \"default\",\nAppEngineRouting.version is \"default\", and\nAppEngineRouting.instance is empty, AppEngineRouting.host is\nshortened to just the `application_domain_name`.\n\nIf AppEngineRouting.service, AppEngineRouting.version, or\nAppEngineRouting.instance is invalid, then the task will be sent\nto the default version of the default service when the task is attempted.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "AppEngineHttpTarget": {
+            "description": "App Engine HTTP target.\n\nThe task will be delivered to the App Engine application hostname\nspecified by its AppEngineHttpTarget and AppEngineHttpRequest.\nThe documentation for AppEngineHttpRequest explains how the\ntask's host URL is constructed.\n\nUsing AppEngineHttpTarget requires\n[`appengine.applications.get`](/appengine/docs/admin-api/access-control)\nGoogle IAM permission for the project\nand the following scope:\n\n`https://www.googleapis.com/auth/cloud-platform`",
+            "id": "AppEngineHttpTarget",
+            "properties": {
+                "appEngineRoutingOverride": {
+                    "$ref": "AppEngineRouting",
+                    "description": "Overrides for the\ntask-level app_engine_routing.\n\nIf set, AppEngineHttpTarget.app_engine_routing_override is used for\nall tasks in the queue, no matter what the setting is for the\ntask-level app_engine_routing."
+                }
+            },
+            "type": "object"
+        },
+        "Location": {
+            "description": "A resource that represents Google Cloud Platform location.",
+            "id": "Location",
+            "properties": {
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Cross-service attributes for the location. For example\n\n    {\"cloud.googleapis.com/region\": \"us-east1\"}",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Resource name for the location, which may vary between implementations.\nFor example: `\"projects/example-project/locations/us-east1\"`",
+                    "type": "string"
+                },
+                "locationId": {
+                    "description": "The canonical id for this location. For example: `\"us-east1\"`.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata. For example the available capacity at the given\nlocation.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "AcknowledgeTaskRequest": {
+            "description": "Request message for acknowledging a task using\nCloudTasks.AcknowledgeTask.",
+            "id": "AcknowledgeTaskRequest",
+            "properties": {
+                "scheduleTime": {
+                    "description": "Required.\n\nThe task's current schedule time, available in the Task.schedule_time\nreturned in PullTasksResponse.tasks or\nCloudTasks.RenewLease. This restriction is to check that\nthe caller is acknowledging the correct task.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListQueuesResponse": {
+            "description": "Response message for CloudTasks.ListQueues.",
+            "id": "ListQueuesResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token to retrieve next page of results.\n\nTo return the next page of results, call\nCloudTasks.ListQueues with this value as the\nListQueuesRequest.page_token.\n\nIf the next_page_token is empty, there are no more results.\n\nThe page token is valid for only 2 hours.",
+                    "type": "string"
+                },
+                "queues": {
+                    "description": "The list of queues.",
+                    "items": {
+                        "$ref": "Queue"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "TestIamPermissionsRequest": {
+            "description": "Request message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsRequest",
+            "properties": {
+                "permissions": {
+                    "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Policy": {
+            "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
+            "id": "Policy",
+            "properties": {
+                "etag": {
+                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "version": {
+                    "description": "Version of the `Policy`. The default version is 0.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "bindings": {
+                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
+                    "items": {
+                        "$ref": "Binding"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListLocationsResponse": {
+            "description": "The response message for Locations.ListLocations.",
+            "id": "ListLocationsResponse",
+            "properties": {
+                "locations": {
+                    "description": "A list of locations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Location"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AppEngineTaskTarget": {
+            "description": "Deprecated. Use AppEngineHttpRequest.",
+            "id": "AppEngineTaskTarget",
+            "properties": {
+                "headers": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Deprecated. Use AppEngineHttpRequest.headers.",
+                    "type": "object"
+                },
+                "appEngineRouting": {
+                    "$ref": "AppEngineRouting",
+                    "description": "Deprecated. Use AppEngineHttpRequest.app_engine_routing."
+                },
+                "httpMethod": {
+                    "description": "Deprecated. Use AppEngineHttpRequest.http_method.",
+                    "enum": [
+                        "HTTP_METHOD_UNSPECIFIED",
+                        "POST",
+                        "GET",
+                        "HEAD",
+                        "PUT",
+                        "DELETE"
+                    ],
+                    "enumDescriptions": [
+                        "HTTP method unspecified",
+                        "HTTP Post",
+                        "HTTP Get",
+                        "HTTP Head",
+                        "HTTP Put",
+                        "HTTP Delete"
+                    ],
+                    "type": "string"
+                },
+                "payload": {
+                    "description": "Deprecated. Use AppEngineHttpRequest.payload.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "relativeUrl": {
+                    "description": "Deprecated. Use AppEngineHttpRequest.relative_url.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CancelLeaseRequest": {
+            "description": "Request message for canceling a lease using\nCloudTasks.CancelLease.",
+            "id": "CancelLeaseRequest",
+            "properties": {
+                "scheduleTime": {
+                    "description": "Required.\n\nThe task's current schedule time, available in the Task.schedule_time\nreturned in PullTasksResponse.tasks or\nCloudTasks.RenewLease. This restriction is to check that\nthe caller is canceling the correct task.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "responseView": {
+                    "description": "The response_view specifies which subset of the Task will be\nreturned.\n\nBy default response_view is Task.View.BASIC; not all\ninformation is retrieved by default because some data, such as\npayloads, might be desirable to return only when needed because\nof its large size or because of the sensitivity of data that it\ncontains.\n\nAuthorization for Task.View.FULL requires `cloudtasks.tasks.fullView`\n[Google IAM](/iam/) permission on the\nTask.name resource.",
+                    "enum": [
+                        "VIEW_UNSPECIFIED",
+                        "BASIC",
+                        "FULL"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified. Defaults to BASIC.",
+                        "The basic view omits fields which can be large or can contain\nsensitive data.\n\nThis view does not include the payload.",
+                        "All information is returned.\n\nPayloads might be desirable to return only when needed, because\nthey can be large and because of the sensitivity of the data\nthat you choose to store in it.\n\nAuthorization for Task.View.FULL requires\n`cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)\npermission on the Queue.name resource."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AttemptStatus": {
+            "description": "The status of a task attempt.",
+            "id": "AttemptStatus",
+            "properties": {
+                "responseTime": {
+                    "description": "Output only.\n\nThe time that this attempt response was received.\n\n`response_time` will be truncated to the nearest microsecond.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "responseStatus": {
+                    "$ref": "Status",
+                    "description": "Output only.\n\nThe response from the target for this attempt.\n\nIf the task has not been attempted or the task is currently running\nthen the response status is google.rpc.Code.UNKNOWN."
+                },
+                "scheduleTime": {
+                    "description": "Output only.\n\nThe time that this attempt was scheduled.\n\n`schedule_time` will be truncated to the nearest microsecond.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "dispatchTime": {
+                    "description": "Output only.\n\nThe time that this attempt was dispatched.\n\n`dispatch_time` will be truncated to the nearest microsecond.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "RateLimits": {
+            "description": "Rate limits.\n\nThis message determines the maximum rate that tasks can be dispatched by a\nqueue, regardless of whether the dispatch is a first task attempt or a retry.",
+            "id": "RateLimits",
+            "properties": {
+                "maxConcurrentTasks": {
+                    "description": "The maximum number of concurrent tasks that Cloud Tasks allows\nto be dispatched for this queue. After this threshold has been\nreached, Cloud Tasks stops dispatching tasks until the number of\nconcurrent requests decreases.\n\nThe maximum allowed value is 5,000.\n\n* For App Engine queues, this field is 10 by default.\n* For pull queues, this field is output only and always -1, which\n  indicates no limit.\n\nThis field has the same meaning as\n[max_concurrent_requests in queue.yaml](/appengine/docs/standard/python/config/queueref#max_concurrent_requests).",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "maxTasksDispatchedPerSecond": {
+                    "description": "The maximum rate at which tasks are dispatched from this\nqueue.\n\nThe maximum allowed value is 500.\n\n* For App Engine queues, this field is 1 by default.\n* For pull queues, this field is output only and always 10,000.\n\nThis field has the same meaning as\n[rate in queue.yaml](/appengine/docs/standard/python/config/queueref#rate).",
+                    "format": "double",
+                    "type": "number"
+                },
+                "maxBurstSize": {
+                    "description": "Output only.\n\nThe max burst size limits how fast the queue is processed when\nmany tasks are in the queue and the rate is high. This field\nallows the queue to have a high rate so processing starts shortly\nafter a task is enqueued, but still limits resource usage when\nmany tasks are enqueued in a short period of time.\n\n* For App Engine queues, if\n  RateLimits.max_tasks_dispatched_per_second is 1, this\n  field is 10; otherwise this field is\n  RateLimits.max_tasks_dispatched_per_second / 5.\n* For pull queues, this field is output only and always 10,000.\n\nNote: For App Engine queues that were created through\n`queue.yaml/xml`, `max_burst_size` might not have the same\nsettings as specified above; CloudTasks.UpdateQueue can be\nused to set `max_burst_size` only to the values specified above.\n\nThis field has the same meaning as\n[bucket_size in queue.yaml](/appengine/docs/standard/python/config/queueref#bucket_size).",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "PurgeQueueRequest": {
+            "description": "Request message for CloudTasks.PurgeQueue.",
+            "id": "PurgeQueueRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "PauseQueueRequest": {
+            "description": "Request message for CloudTasks.PauseQueue.",
+            "id": "PauseQueueRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "RunTaskRequest": {
+            "description": "Request message for forcing a task to run now using\nCloudTasks.RunTask.",
+            "id": "RunTaskRequest",
+            "properties": {
+                "responseView": {
+                    "description": "The response_view specifies which subset of the Task will be\nreturned.\n\nBy default response_view is Task.View.BASIC; not all\ninformation is retrieved by default because some data, such as\npayloads, might be desirable to return only when needed because\nof its large size or because of the sensitivity of data that it\ncontains.\n\nAuthorization for Task.View.FULL requires `cloudtasks.tasks.fullView`\n[Google IAM](/iam/) permission on the\nTask.name resource.",
+                    "enum": [
+                        "VIEW_UNSPECIFIED",
+                        "BASIC",
+                        "FULL"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified. Defaults to BASIC.",
+                        "The basic view omits fields which can be large or can contain\nsensitive data.\n\nThis view does not include the payload.",
+                        "All information is returned.\n\nPayloads might be desirable to return only when needed, because\nthey can be large and because of the sensitivity of the data\nthat you choose to store in it.\n\nAuthorization for Task.View.FULL requires\n`cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)\npermission on the Queue.name resource."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "PullTasksResponse": {
+            "description": "Response message for pulling tasks using CloudTasks.PullTasks.",
+            "id": "PullTasksResponse",
+            "properties": {
+                "tasks": {
+                    "description": "The leased tasks.",
+                    "items": {
+                        "$ref": "Task"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Task": {
+            "description": "A unit of scheduled work.",
+            "id": "Task",
+            "properties": {
+                "appEngineHttpRequest": {
+                    "$ref": "AppEngineHttpRequest",
+                    "description": "App Engine HTTP request that is sent to the task's target. Can be set\nonly if Queue.app_engine_http_target is set.\n\nAn App Engine task is a task that has AppEngineHttpRequest set."
+                },
+                "pullTaskTarget": {
+                    "$ref": "PullTaskTarget",
+                    "description": "Deprecated. Use Task.pull_message."
+                },
+                "view": {
+                    "description": "Output only.\n\nThe view specifies which subset of the Task has been\nreturned.",
+                    "enum": [
+                        "VIEW_UNSPECIFIED",
+                        "BASIC",
+                        "FULL"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified. Defaults to BASIC.",
+                        "The basic view omits fields which can be large or can contain\nsensitive data.\n\nThis view does not include the payload.",
+                        "All information is returned.\n\nPayloads might be desirable to return only when needed, because\nthey can be large and because of the sensitivity of the data\nthat you choose to store in it.\n\nAuthorization for Task.View.FULL requires\n`cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)\npermission on the Queue.name resource."
+                    ],
+                    "type": "string"
+                },
+                "pullMessage": {
+                    "$ref": "PullMessage",
+                    "description": "Pull message contains data that should be used by the caller of\nCloudTasks.PullTasks to process the task. Can be set only if\nQueue.pull_target is set.\n\nA pull task is a task that has PullMessage set."
+                },
+                "scheduleTime": {
+                    "description": "The time when the task is scheduled to be attempted.\n\nFor pull queues, this is the time when the task is available to\nbe leased; if a task is currently leased, this is the time when\nthe current lease expires, that is, the time that the task was\nleased plus the PullTasksRequest.lease_duration.\n\nFor App Engine queues, this is when the task will be attempted or retried.\n\n`schedule_time` will be truncated to the nearest microsecond.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "createTime": {
+                    "description": "Output only.\n\nThe time that the task was created.\n\n`create_time` will be truncated to the nearest second.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The task name.\n\nThe task name must have the following format:\n`projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`\n\n* `PROJECT_ID` can contain uppercase and lowercase letters,\n  numbers, hyphens, colons, and periods; that is, it must match\n  the regular expression: `[a-zA-Z\\\\d-:\\\\.]+`.\n* `QUEUE_ID` can contain uppercase and lowercase letters,\n  numbers, and hyphens; that is, it must match the regular\n  expression: `[a-zA-Z\\\\d-]+`. The maximum length is 100\n  characters.\n* `TASK_ID` contain uppercase and lowercase letters, numbers,\n  underscores, and hyphens; that is, it must match the regular\n  expression: `[a-zA-Z\\\\d_-]+`. The maximum length is 500\n  characters.\n\nOptionally caller-specified in CreateTaskRequest.",
+                    "type": "string"
+                },
+                "appEngineTaskTarget": {
+                    "$ref": "AppEngineTaskTarget",
+                    "description": "Deprecated. Use Task.app_engine_http_request."
+                },
+                "taskStatus": {
+                    "$ref": "TaskStatus",
+                    "description": "Output only.\n\nTask status."
+                }
+            },
+            "type": "object"
+        },
+        "PullMessage": {
+            "description": "The pull message contains data that can be used by the caller of\nCloudTasks.PullTasks to process the task.\n\nThis proto can only be used for tasks in a queue which has\nQueue.pull_target set.",
+            "id": "PullMessage",
+            "properties": {
+                "payload": {
+                    "description": "A data payload consumed by the task worker to execute the task.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "tag": {
+                    "description": "A meta-data tag for this task.\n\nThis value is used by CloudTasks.PullTasks calls when\nPullTasksRequest.filter is `tag=<tag>`.\n\nThe tag must be less than 500 bytes.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+            "id": "Status",
+            "properties": {
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                },
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "Binding": {
+            "description": "Associates `members` with a `role`.",
+            "id": "Binding",
+            "properties": {
+                "members": {
+                    "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "role": {
+                    "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "RenewLeaseRequest": {
+            "description": "Request message for renewing a lease using CloudTasks.RenewLease.",
+            "id": "RenewLeaseRequest",
+            "properties": {
+                "responseView": {
+                    "description": "The response_view specifies which subset of the Task will be\nreturned.\n\nBy default response_view is Task.View.BASIC; not all\ninformation is retrieved by default because some data, such as\npayloads, might be desirable to return only when needed because\nof its large size or because of the sensitivity of data that it\ncontains.\n\nAuthorization for Task.View.FULL requires `cloudtasks.tasks.fullView`\n[Google IAM](/iam/) permission on the\nTask.name resource.",
+                    "enum": [
+                        "VIEW_UNSPECIFIED",
+                        "BASIC",
+                        "FULL"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified. Defaults to BASIC.",
+                        "The basic view omits fields which can be large or can contain\nsensitive data.\n\nThis view does not include the payload.",
+                        "All information is returned.\n\nPayloads might be desirable to return only when needed, because\nthey can be large and because of the sensitivity of the data\nthat you choose to store in it.\n\nAuthorization for Task.View.FULL requires\n`cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)\npermission on the Queue.name resource."
+                    ],
+                    "type": "string"
+                },
+                "scheduleTime": {
+                    "description": "Required.\n\nThe task's current schedule time, available in the Task.schedule_time\nreturned in PullTasksResponse.tasks or\nCloudTasks.RenewLease. This restriction is to check that\nthe caller is renewing the correct task.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "newLeaseDuration": {
+                    "description": "Required.\n\nThe desired new lease duration, starting from now.\n\n\nThe maximum lease duration is 1 week.\n`new_lease_duration` will be truncated to the nearest second.",
+                    "format": "google-duration",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TaskStatus": {
+            "description": "Status of the task.",
+            "id": "TaskStatus",
+            "properties": {
+                "attemptResponseCount": {
+                    "description": "Output only.\n\nThe number of attempts which have received a response.\n\nThis field is not calculated for\n[pull tasks](google.cloud.tasks.v2beta2.PullTaskTarget).",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "lastAttemptStatus": {
+                    "$ref": "AttemptStatus",
+                    "description": "Output only.\n\nThe status of the task's last attempt.\n\nThis field is not calculated for\n[pull tasks](google.cloud.tasks.v2beta2.PullTaskTarget)."
+                },
+                "attemptDispatchCount": {
+                    "description": "Output only.\n\nThe number of attempts dispatched. This count includes tasks which have\nbeen dispatched but haven't received a response.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "firstAttemptStatus": {
+                    "$ref": "AttemptStatus",
+                    "description": "Output only.\n\nThe status of the task's first attempt.\n\nOnly AttemptStatus.dispatch_time will be set.\nThe other AttemptStatus information is not retained by Cloud Tasks.\n\nThis field is not calculated for\n[pull tasks](google.cloud.tasks.v2beta2.PullTaskTarget)."
+                }
+            },
+            "type": "object"
+        },
+        "AppEngineHttpRequest": {
+            "description": "App Engine HTTP request.\n\nThe message defines the HTTP request that is sent to an App Engine app when\nthe task is dispatched.\n\nThis proto can only be used for tasks in a queue which has\nQueue.app_engine_http_target set.\n\nUsing AppEngineHttpRequest requires\n[`appengine.applications.get`](/appengine/docs/admin-api/access-control)\nGoogle IAM permission for the project\nand the following scope:\n\n`https://www.googleapis.com/auth/cloud-platform`\n\nThe task will be delivered to the App Engine app which belongs to the same\nproject as the queue. For more information, see\n[How Requests are Routed](/appengine/docs/standard/python/how-requests-are-routed)\nand how routing is affected by\n[dispatch files](/appengine/docs/python/config/dispatchref).\n\nThe AppEngineRouting used to construct the URL that the task is\ndelivered to can be set at the queue-level or task-level:\n\n*  If set, AppEngineHttpTarget.app_engine_routing_override is used for\n   all tasks in the queue, no matter what the setting is for the\n   task-level app_engine_routing.\n\n\nThe `url` that the task will be sent to is:\n\n* `url =` AppEngineRouting.host `+` AppEngineHttpRequest.relative_url\n\nThe task will be sent to a task handler by an HTTP\nrequest using the specified AppEngineHttpRequest.http_method (for example\nPOST, HTTP GET, etc). The task attempt has succeeded if the task handler\nreturns an HTTP response code in the range [200 - 299]. Error 503 is\nconsidered an App Engine system error instead of an application error.\nRequests returning error 503 will be retried regardless of retry\nconfiguration and not counted against retry counts.\nAny other response code or a failure to receive a response before the\ndeadline is a failed attempt.",
+            "id": "AppEngineHttpRequest",
+            "properties": {
+                "headers": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "HTTP request headers.\n\nThis map contains the header field names and values.\nHeaders can be set when the\n[task is created](google.cloud.tasks.v2beta2.CloudTasks.CreateTask).\nRepeated headers are not supported but a header value can contain commas.\n\nCloud Tasks sets some headers to default values:\n\n* `User-Agent`: By default, this header is\n  `\"AppEngine-Google; (+http://code.google.com/appengine)\"`.\n  This header can be modified, but Cloud Tasks will append\n  `\"AppEngine-Google; (+http://code.google.com/appengine)\"` to the\n  modified `User-Agent`.\n\nIf the task has an AppEngineHttpRequest.payload, Cloud Tasks sets the\nfollowing headers:\n\n* `Content-Type`: By default, the `Content-Type` header is set to\n  `\"application/octet-stream\"`. The default can be overridden by explictly\n  setting `Content-Type` to a particular media type when the\n  [task is created](google.cloud.tasks.v2beta2.CloudTasks.CreateTask).\n  For example, `Content-Type` can be set to `\"application/json\"`.\n* `Content-Length`: This is computed by Cloud Tasks. This value is\n  output only. It cannot be changed.\n\nThe headers below cannot be set or overridden:\n\n* `Host`\n* `X-Google-*`\n* `X-AppEngine-*`\n\nIn addition, some App Engine headers, which contain\ntask-specific information, are also be sent to the task handler; see\n[request headers](/appengine/docs/python/taskqueue/push/creating-handlers#reading_request_headers).",
+                    "type": "object"
+                },
+                "appEngineRouting": {
+                    "$ref": "AppEngineRouting",
+                    "description": "Task-level setting for App Engine routing.\n\nIf set, AppEngineHttpTarget.app_engine_routing_override is used for\nall tasks in the queue, no matter what the setting is for the\ntask-level app_engine_routing."
+                },
+                "httpMethod": {
+                    "description": "The HTTP method to use for the request. The default is POST.\n\nThe app's request handler for the task's target URL must be able to handle\nHTTP requests with this http_method, otherwise the task attempt will fail\nwith error code 405 (Method Not Allowed). See\nthe Request-Line is not allowed for the resource identified by the\nRequest-URI\". See\n[Writing a push task request handler](/appengine/docs/java/taskqueue/push/creating-handlers#writing_a_push_task_request_handler)\nand the documentation for the request handlers in the language your app is\nwritten in e.g.\n[python RequestHandler](/appengine/docs/python/tools/webapp/requesthandlerclass).",
+                    "enum": [
+                        "HTTP_METHOD_UNSPECIFIED",
+                        "POST",
+                        "GET",
+                        "HEAD",
+                        "PUT",
+                        "DELETE"
+                    ],
+                    "enumDescriptions": [
+                        "HTTP method unspecified",
+                        "HTTP Post",
+                        "HTTP Get",
+                        "HTTP Head",
+                        "HTTP Put",
+                        "HTTP Delete"
+                    ],
+                    "type": "string"
+                },
+                "payload": {
+                    "description": "Payload.\n\nThe payload will be sent as the HTTP message body. A message\nbody, and thus a payload, is allowed only if the HTTP method is\nPOST or PUT. It is an error to set a data payload on a task with\nan incompatible HttpMethod.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "relativeUrl": {
+                    "description": "The relative URL.\n\nThe relative URL must begin with \"/\" and must be a valid HTTP relative URL.\nIt can contain a path and query string arguments.\nIf the relative URL is empty, then the root path \"/\" will be used.\nNo spaces are allowed, and the maximum length allowed is 2083 characters.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        }
+    },
+    "servicePath": "",
+    "title": "Cloud Tasks API",
+    "version": "v2beta2"
+}
\ No newline at end of file
diff --git a/discovery/googleapis_beta/dataflow__v1b3.json b/discovery/googleapis_beta/dataflow__v1b3.json
index bb75d38..8c41155 100644
--- a/discovery/googleapis_beta/dataflow__v1b3.json
+++ b/discovery/googleapis_beta/dataflow__v1b3.json
@@ -2,6 +2,9 @@
     "auth": {
         "oauth2": {
             "scopes": {
+                "https://www.googleapis.com/auth/compute.readonly": {
+                    "description": "View your Google Compute Engine resources"
+                },
                 "https://www.googleapis.com/auth/compute": {
                     "description": "View and manage your Google Compute Engine resources"
                 },
@@ -10,9 +13,6 @@
                 },
                 "https://www.googleapis.com/auth/userinfo.email": {
                     "description": "View your email address"
-                },
-                "https://www.googleapis.com/auth/compute.readonly": {
-                    "description": "View your Google Compute Engine resources"
                 }
             }
         }
@@ -33,13 +33,13 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
+        "bearer_token": {
+            "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         },
@@ -64,11 +64,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -82,6 +77,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -98,13 +98,13 @@
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
@@ -155,871 +155,8 @@
                 }
             },
             "resources": {
-                "locations": {
-                    "methods": {
-                        "workerMessages": {
-                            "description": "Send a worker_message to the service.",
-                            "httpMethod": "POST",
-                            "id": "dataflow.projects.locations.workerMessages",
-                            "parameterOrder": [
-                                "projectId",
-                                "location"
-                            ],
-                            "parameters": {
-                                "location": {
-                                    "description": "The location which contains the job",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "projectId": {
-                                    "description": "The project to send the WorkerMessages to.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1b3/projects/{projectId}/locations/{location}/WorkerMessages",
-                            "request": {
-                                "$ref": "SendWorkerMessagesRequest"
-                            },
-                            "response": {
-                                "$ref": "SendWorkerMessagesResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/compute",
-                                "https://www.googleapis.com/auth/compute.readonly",
-                                "https://www.googleapis.com/auth/userinfo.email"
-                            ]
-                        }
-                    },
-                    "resources": {
-                        "templates": {
-                            "methods": {
-                                "launch": {
-                                    "description": "Launch a template.",
-                                    "httpMethod": "POST",
-                                    "id": "dataflow.projects.locations.templates.launch",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "location"
-                                    ],
-                                    "parameters": {
-                                        "validateOnly": {
-                                            "description": "If true, the request is validated but not actually executed.\nDefaults to false.",
-                                            "location": "query",
-                                            "type": "boolean"
-                                        },
-                                        "projectId": {
-                                            "description": "Required. The ID of the Cloud Platform project that the job belongs to.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "gcsPath": {
-                                            "description": "Required. A Cloud Storage path to the template from which to create\nthe job.\nMust be valid Cloud Storage URL, beginning with 'gs://'.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "location": {
-                                            "description": "The location to which to direct the request.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1b3/projects/{projectId}/locations/{location}/templates:launch",
-                                    "request": {
-                                        "$ref": "LaunchTemplateParameters"
-                                    },
-                                    "response": {
-                                        "$ref": "LaunchTemplateResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/compute",
-                                        "https://www.googleapis.com/auth/compute.readonly",
-                                        "https://www.googleapis.com/auth/userinfo.email"
-                                    ]
-                                },
-                                "get": {
-                                    "description": "Get the template associated with a template.",
-                                    "httpMethod": "GET",
-                                    "id": "dataflow.projects.locations.templates.get",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "location"
-                                    ],
-                                    "parameters": {
-                                        "view": {
-                                            "description": "The view to retrieve. Defaults to METADATA_ONLY.",
-                                            "enum": [
-                                                "METADATA_ONLY"
-                                            ],
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "projectId": {
-                                            "description": "Required. The ID of the Cloud Platform project that the job belongs to.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "gcsPath": {
-                                            "description": "Required. A Cloud Storage path to the template from which to\ncreate the job.\nMust be a valid Cloud Storage URL, beginning with `gs://`.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "location": {
-                                            "description": "The location to which to direct the request.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1b3/projects/{projectId}/locations/{location}/templates:get",
-                                    "response": {
-                                        "$ref": "GetTemplateResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/compute",
-                                        "https://www.googleapis.com/auth/compute.readonly",
-                                        "https://www.googleapis.com/auth/userinfo.email"
-                                    ]
-                                },
-                                "create": {
-                                    "description": "Creates a Cloud Dataflow job from a template.",
-                                    "httpMethod": "POST",
-                                    "id": "dataflow.projects.locations.templates.create",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "location"
-                                    ],
-                                    "parameters": {
-                                        "projectId": {
-                                            "description": "Required. The ID of the Cloud Platform project that the job belongs to.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "location": {
-                                            "description": "The location to which to direct the request.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1b3/projects/{projectId}/locations/{location}/templates",
-                                    "request": {
-                                        "$ref": "CreateJobFromTemplateRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "Job"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/compute",
-                                        "https://www.googleapis.com/auth/compute.readonly",
-                                        "https://www.googleapis.com/auth/userinfo.email"
-                                    ]
-                                }
-                            }
-                        },
-                        "jobs": {
-                            "methods": {
-                                "list": {
-                                    "description": "List the jobs of a project in a given region.",
-                                    "httpMethod": "GET",
-                                    "id": "dataflow.projects.locations.jobs.list",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "location"
-                                    ],
-                                    "parameters": {
-                                        "projectId": {
-                                            "description": "The project which owns the jobs.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "filter": {
-                                            "description": "The kind of filter to use.",
-                                            "enum": [
-                                                "UNKNOWN",
-                                                "ALL",
-                                                "TERMINATED",
-                                                "ACTIVE"
-                                            ],
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "location": {
-                                            "description": "The location that contains this job.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "pageToken": {
-                                            "description": "Set this to the 'next_page_token' field of a previous response\nto request additional results in a long list.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "If there are many jobs, limit response to at most this many.\nThe actual number of jobs returned will be the lesser of max_responses\nand an unspecified server-defined limit.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "view": {
-                                            "description": "Level of information requested in response. Default is `JOB_VIEW_SUMMARY`.",
-                                            "enum": [
-                                                "JOB_VIEW_UNKNOWN",
-                                                "JOB_VIEW_SUMMARY",
-                                                "JOB_VIEW_ALL",
-                                                "JOB_VIEW_DESCRIPTION"
-                                            ],
-                                            "location": "query",
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1b3/projects/{projectId}/locations/{location}/jobs",
-                                    "response": {
-                                        "$ref": "ListJobsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/compute",
-                                        "https://www.googleapis.com/auth/compute.readonly",
-                                        "https://www.googleapis.com/auth/userinfo.email"
-                                    ]
-                                },
-                                "get": {
-                                    "description": "Gets the state of the specified Cloud Dataflow job.",
-                                    "httpMethod": "GET",
-                                    "id": "dataflow.projects.locations.jobs.get",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "location",
-                                        "jobId"
-                                    ],
-                                    "parameters": {
-                                        "location": {
-                                            "description": "The location that contains this job.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "view": {
-                                            "description": "The level of information requested in response.",
-                                            "enum": [
-                                                "JOB_VIEW_UNKNOWN",
-                                                "JOB_VIEW_SUMMARY",
-                                                "JOB_VIEW_ALL",
-                                                "JOB_VIEW_DESCRIPTION"
-                                            ],
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "jobId": {
-                                            "description": "The job ID.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "projectId": {
-                                            "description": "The ID of the Cloud Platform project that the job belongs to.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}",
-                                    "response": {
-                                        "$ref": "Job"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/compute",
-                                        "https://www.googleapis.com/auth/compute.readonly",
-                                        "https://www.googleapis.com/auth/userinfo.email"
-                                    ]
-                                },
-                                "update": {
-                                    "description": "Updates the state of an existing Cloud Dataflow job.",
-                                    "httpMethod": "PUT",
-                                    "id": "dataflow.projects.locations.jobs.update",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "location",
-                                        "jobId"
-                                    ],
-                                    "parameters": {
-                                        "jobId": {
-                                            "description": "The job ID.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "projectId": {
-                                            "description": "The ID of the Cloud Platform project that the job belongs to.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "location": {
-                                            "description": "The location that contains this job.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}",
-                                    "request": {
-                                        "$ref": "Job"
-                                    },
-                                    "response": {
-                                        "$ref": "Job"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/compute",
-                                        "https://www.googleapis.com/auth/compute.readonly",
-                                        "https://www.googleapis.com/auth/userinfo.email"
-                                    ]
-                                },
-                                "create": {
-                                    "description": "Creates a Cloud Dataflow job.",
-                                    "httpMethod": "POST",
-                                    "id": "dataflow.projects.locations.jobs.create",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "location"
-                                    ],
-                                    "parameters": {
-                                        "view": {
-                                            "description": "The level of information requested in response.",
-                                            "enum": [
-                                                "JOB_VIEW_UNKNOWN",
-                                                "JOB_VIEW_SUMMARY",
-                                                "JOB_VIEW_ALL",
-                                                "JOB_VIEW_DESCRIPTION"
-                                            ],
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "projectId": {
-                                            "description": "The ID of the Cloud Platform project that the job belongs to.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "location": {
-                                            "description": "The location that contains this job.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "replaceJobId": {
-                                            "description": "Deprecated. This field is now in the Job message.",
-                                            "location": "query",
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1b3/projects/{projectId}/locations/{location}/jobs",
-                                    "request": {
-                                        "$ref": "Job"
-                                    },
-                                    "response": {
-                                        "$ref": "Job"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/compute",
-                                        "https://www.googleapis.com/auth/compute.readonly",
-                                        "https://www.googleapis.com/auth/userinfo.email"
-                                    ]
-                                },
-                                "getMetrics": {
-                                    "description": "Request the job status.",
-                                    "httpMethod": "GET",
-                                    "id": "dataflow.projects.locations.jobs.getMetrics",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "location",
-                                        "jobId"
-                                    ],
-                                    "parameters": {
-                                        "jobId": {
-                                            "description": "The job to get messages for.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "projectId": {
-                                            "description": "A project id.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "location": {
-                                            "description": "The location which contains the job specified by job_id.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "startTime": {
-                                            "description": "Return only metric data that has changed since this time.\nDefault is to return all information about all metrics for the job.",
-                                            "format": "google-datetime",
-                                            "location": "query",
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/metrics",
-                                    "response": {
-                                        "$ref": "JobMetrics"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/compute",
-                                        "https://www.googleapis.com/auth/compute.readonly",
-                                        "https://www.googleapis.com/auth/userinfo.email"
-                                    ]
-                                }
-                            },
-                            "resources": {
-                                "workItems": {
-                                    "methods": {
-                                        "reportStatus": {
-                                            "description": "Reports the status of dataflow WorkItems leased by a worker.",
-                                            "httpMethod": "POST",
-                                            "id": "dataflow.projects.locations.jobs.workItems.reportStatus",
-                                            "parameterOrder": [
-                                                "projectId",
-                                                "location",
-                                                "jobId"
-                                            ],
-                                            "parameters": {
-                                                "location": {
-                                                    "description": "The location which contains the WorkItem's job.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "jobId": {
-                                                    "description": "The job which the WorkItem is part of.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "projectId": {
-                                                    "description": "The project which owns the WorkItem's job.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/workItems:reportStatus",
-                                            "request": {
-                                                "$ref": "ReportWorkItemStatusRequest"
-                                            },
-                                            "response": {
-                                                "$ref": "ReportWorkItemStatusResponse"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform",
-                                                "https://www.googleapis.com/auth/compute",
-                                                "https://www.googleapis.com/auth/compute.readonly",
-                                                "https://www.googleapis.com/auth/userinfo.email"
-                                            ]
-                                        },
-                                        "lease": {
-                                            "description": "Leases a dataflow WorkItem to run.",
-                                            "httpMethod": "POST",
-                                            "id": "dataflow.projects.locations.jobs.workItems.lease",
-                                            "parameterOrder": [
-                                                "projectId",
-                                                "location",
-                                                "jobId"
-                                            ],
-                                            "parameters": {
-                                                "jobId": {
-                                                    "description": "Identifies the workflow job this worker belongs to.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "projectId": {
-                                                    "description": "Identifies the project this worker belongs to.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "location": {
-                                                    "description": "The location which contains the WorkItem's job.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/workItems:lease",
-                                            "request": {
-                                                "$ref": "LeaseWorkItemRequest"
-                                            },
-                                            "response": {
-                                                "$ref": "LeaseWorkItemResponse"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform",
-                                                "https://www.googleapis.com/auth/compute",
-                                                "https://www.googleapis.com/auth/compute.readonly",
-                                                "https://www.googleapis.com/auth/userinfo.email"
-                                            ]
-                                        }
-                                    }
-                                },
-                                "debug": {
-                                    "methods": {
-                                        "sendCapture": {
-                                            "description": "Send encoded debug capture data for component.",
-                                            "httpMethod": "POST",
-                                            "id": "dataflow.projects.locations.jobs.debug.sendCapture",
-                                            "parameterOrder": [
-                                                "projectId",
-                                                "location",
-                                                "jobId"
-                                            ],
-                                            "parameters": {
-                                                "location": {
-                                                    "description": "The location which contains the job specified by job_id.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "jobId": {
-                                                    "description": "The job id.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "projectId": {
-                                                    "description": "The project id.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/debug/sendCapture",
-                                            "request": {
-                                                "$ref": "SendDebugCaptureRequest"
-                                            },
-                                            "response": {
-                                                "$ref": "SendDebugCaptureResponse"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform",
-                                                "https://www.googleapis.com/auth/compute",
-                                                "https://www.googleapis.com/auth/compute.readonly",
-                                                "https://www.googleapis.com/auth/userinfo.email"
-                                            ]
-                                        },
-                                        "getConfig": {
-                                            "description": "Get encoded debug configuration for component. Not cacheable.",
-                                            "httpMethod": "POST",
-                                            "id": "dataflow.projects.locations.jobs.debug.getConfig",
-                                            "parameterOrder": [
-                                                "projectId",
-                                                "location",
-                                                "jobId"
-                                            ],
-                                            "parameters": {
-                                                "location": {
-                                                    "description": "The location which contains the job specified by job_id.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "jobId": {
-                                                    "description": "The job id.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "projectId": {
-                                                    "description": "The project id.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/debug/getConfig",
-                                            "request": {
-                                                "$ref": "GetDebugConfigRequest"
-                                            },
-                                            "response": {
-                                                "$ref": "GetDebugConfigResponse"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform",
-                                                "https://www.googleapis.com/auth/compute",
-                                                "https://www.googleapis.com/auth/compute.readonly",
-                                                "https://www.googleapis.com/auth/userinfo.email"
-                                            ]
-                                        }
-                                    }
-                                },
-                                "messages": {
-                                    "methods": {
-                                        "list": {
-                                            "description": "Request the job status.",
-                                            "httpMethod": "GET",
-                                            "id": "dataflow.projects.locations.jobs.messages.list",
-                                            "parameterOrder": [
-                                                "projectId",
-                                                "location",
-                                                "jobId"
-                                            ],
-                                            "parameters": {
-                                                "pageSize": {
-                                                    "description": "If specified, determines the maximum number of messages to\nreturn.  If unspecified, the service may choose an appropriate\ndefault, or may return an arbitrarily large number of results.",
-                                                    "format": "int32",
-                                                    "location": "query",
-                                                    "type": "integer"
-                                                },
-                                                "minimumImportance": {
-                                                    "description": "Filter to only get messages with importance >= level",
-                                                    "enum": [
-                                                        "JOB_MESSAGE_IMPORTANCE_UNKNOWN",
-                                                        "JOB_MESSAGE_DEBUG",
-                                                        "JOB_MESSAGE_DETAILED",
-                                                        "JOB_MESSAGE_BASIC",
-                                                        "JOB_MESSAGE_WARNING",
-                                                        "JOB_MESSAGE_ERROR"
-                                                    ],
-                                                    "location": "query",
-                                                    "type": "string"
-                                                },
-                                                "projectId": {
-                                                    "description": "A project id.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "jobId": {
-                                                    "description": "The job to get messages about.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "endTime": {
-                                                    "description": "Return only messages with timestamps < end_time. The default is now\n(i.e. return up to the latest messages available).",
-                                                    "format": "google-datetime",
-                                                    "location": "query",
-                                                    "type": "string"
-                                                },
-                                                "location": {
-                                                    "description": "The location which contains the job specified by job_id.",
-                                                    "location": "path",
-                                                    "required": true,
-                                                    "type": "string"
-                                                },
-                                                "startTime": {
-                                                    "description": "If specified, return only messages with timestamps >= start_time.\nThe default is the job creation time (i.e. beginning of messages).",
-                                                    "format": "google-datetime",
-                                                    "location": "query",
-                                                    "type": "string"
-                                                },
-                                                "pageToken": {
-                                                    "description": "If supplied, this should be the value of next_page_token returned\nby an earlier call. This will cause the next page of results to\nbe returned.",
-                                                    "location": "query",
-                                                    "type": "string"
-                                                }
-                                            },
-                                            "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/messages",
-                                            "response": {
-                                                "$ref": "ListJobMessagesResponse"
-                                            },
-                                            "scopes": [
-                                                "https://www.googleapis.com/auth/cloud-platform",
-                                                "https://www.googleapis.com/auth/compute",
-                                                "https://www.googleapis.com/auth/compute.readonly",
-                                                "https://www.googleapis.com/auth/userinfo.email"
-                                            ]
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                },
-                "templates": {
-                    "methods": {
-                        "create": {
-                            "description": "Creates a Cloud Dataflow job from a template.",
-                            "httpMethod": "POST",
-                            "id": "dataflow.projects.templates.create",
-                            "parameterOrder": [
-                                "projectId"
-                            ],
-                            "parameters": {
-                                "projectId": {
-                                    "description": "Required. The ID of the Cloud Platform project that the job belongs to.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1b3/projects/{projectId}/templates",
-                            "request": {
-                                "$ref": "CreateJobFromTemplateRequest"
-                            },
-                            "response": {
-                                "$ref": "Job"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/compute",
-                                "https://www.googleapis.com/auth/compute.readonly",
-                                "https://www.googleapis.com/auth/userinfo.email"
-                            ]
-                        },
-                        "launch": {
-                            "description": "Launch a template.",
-                            "httpMethod": "POST",
-                            "id": "dataflow.projects.templates.launch",
-                            "parameterOrder": [
-                                "projectId"
-                            ],
-                            "parameters": {
-                                "projectId": {
-                                    "description": "Required. The ID of the Cloud Platform project that the job belongs to.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "gcsPath": {
-                                    "description": "Required. A Cloud Storage path to the template from which to create\nthe job.\nMust be valid Cloud Storage URL, beginning with 'gs://'.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "location": {
-                                    "description": "The location to which to direct the request.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "validateOnly": {
-                                    "description": "If true, the request is validated but not actually executed.\nDefaults to false.",
-                                    "location": "query",
-                                    "type": "boolean"
-                                }
-                            },
-                            "path": "v1b3/projects/{projectId}/templates:launch",
-                            "request": {
-                                "$ref": "LaunchTemplateParameters"
-                            },
-                            "response": {
-                                "$ref": "LaunchTemplateResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/compute",
-                                "https://www.googleapis.com/auth/compute.readonly",
-                                "https://www.googleapis.com/auth/userinfo.email"
-                            ]
-                        },
-                        "get": {
-                            "description": "Get the template associated with a template.",
-                            "httpMethod": "GET",
-                            "id": "dataflow.projects.templates.get",
-                            "parameterOrder": [
-                                "projectId"
-                            ],
-                            "parameters": {
-                                "location": {
-                                    "description": "The location to which to direct the request.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "view": {
-                                    "description": "The view to retrieve. Defaults to METADATA_ONLY.",
-                                    "enum": [
-                                        "METADATA_ONLY"
-                                    ],
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "projectId": {
-                                    "description": "Required. The ID of the Cloud Platform project that the job belongs to.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "gcsPath": {
-                                    "description": "Required. A Cloud Storage path to the template from which to\ncreate the job.\nMust be a valid Cloud Storage URL, beginning with `gs://`.",
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1b3/projects/{projectId}/templates:get",
-                            "response": {
-                                "$ref": "GetTemplateResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/compute",
-                                "https://www.googleapis.com/auth/compute.readonly",
-                                "https://www.googleapis.com/auth/userinfo.email"
-                            ]
-                        }
-                    }
-                },
                 "jobs": {
                     "methods": {
-                        "getMetrics": {
-                            "description": "Request the job status.",
-                            "httpMethod": "GET",
-                            "id": "dataflow.projects.jobs.getMetrics",
-                            "parameterOrder": [
-                                "projectId",
-                                "jobId"
-                            ],
-                            "parameters": {
-                                "startTime": {
-                                    "description": "Return only metric data that has changed since this time.\nDefault is to return all information about all metrics for the job.",
-                                    "format": "google-datetime",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "jobId": {
-                                    "description": "The job to get messages for.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "projectId": {
-                                    "description": "A project id.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "location": {
-                                    "description": "The location which contains the job specified by job_id.",
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1b3/projects/{projectId}/jobs/{jobId}/metrics",
-                            "response": {
-                                "$ref": "JobMetrics"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/compute",
-                                "https://www.googleapis.com/auth/compute.readonly",
-                                "https://www.googleapis.com/auth/userinfo.email"
-                            ]
-                        },
                         "get": {
                             "description": "Gets the state of the specified Cloud Dataflow job.",
                             "httpMethod": "GET",
@@ -1029,6 +166,11 @@
                                 "jobId"
                             ],
                             "parameters": {
+                                "location": {
+                                    "description": "The location that contains this job.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "view": {
                                     "description": "The level of information requested in response.",
                                     "enum": [
@@ -1051,11 +193,6 @@
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
-                                },
-                                "location": {
-                                    "description": "The location that contains this job.",
-                                    "location": "query",
-                                    "type": "string"
                                 }
                             },
                             "path": "v1b3/projects/{projectId}/jobs/{jobId}",
@@ -1118,22 +255,6 @@
                                 "projectId"
                             ],
                             "parameters": {
-                                "location": {
-                                    "description": "The location that contains this job.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "Set this to the 'next_page_token' field of a previous response\nto request additional results in a long list.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "If there are many jobs, limit response to at most this many.\nThe actual number of jobs returned will be the lesser of max_responses\nand an unspecified server-defined limit.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
                                 "view": {
                                     "description": "Level of information requested in response. Default is `JOB_VIEW_SUMMARY`.",
                                     "enum": [
@@ -1161,6 +282,22 @@
                                     ],
                                     "location": "query",
                                     "type": "string"
+                                },
+                                "location": {
+                                    "description": "The location that contains this job.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Set this to the 'next_page_token' field of a previous response\nto request additional results in a long list.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "If there are many jobs, limit response to at most this many.\nThe actual number of jobs returned will be the lesser of max_responses\nand an unspecified server-defined limit.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
                                 }
                             },
                             "path": "v1b3/projects/{projectId}/jobs:aggregated",
@@ -1182,6 +319,12 @@
                                 "projectId"
                             ],
                             "parameters": {
+                                "projectId": {
+                                    "description": "The project which owns the jobs.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
                                 "filter": {
                                     "description": "The kind of filter to use.",
                                     "enum": [
@@ -1219,12 +362,6 @@
                                     ],
                                     "location": "query",
                                     "type": "string"
-                                },
-                                "projectId": {
-                                    "description": "The project which owns the jobs.",
-                                    "location": "path",
-                                    "required": true,
-                                    "type": "string"
                                 }
                             },
                             "path": "v1b3/projects/{projectId}/jobs",
@@ -1246,6 +383,16 @@
                                 "projectId"
                             ],
                             "parameters": {
+                                "location": {
+                                    "description": "The location that contains this job.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "replaceJobId": {
+                                    "description": "Deprecated. This field is now in the Job message.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "view": {
                                     "description": "The level of information requested in response.",
                                     "enum": [
@@ -1262,16 +409,6 @@
                                     "location": "path",
                                     "required": true,
                                     "type": "string"
-                                },
-                                "location": {
-                                    "description": "The location that contains this job.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "replaceJobId": {
-                                    "description": "Deprecated. This field is now in the Job message.",
-                                    "location": "query",
-                                    "type": "string"
                                 }
                             },
                             "path": "v1b3/projects/{projectId}/jobs",
@@ -1287,47 +424,55 @@
                                 "https://www.googleapis.com/auth/compute.readonly",
                                 "https://www.googleapis.com/auth/userinfo.email"
                             ]
+                        },
+                        "getMetrics": {
+                            "description": "Request the job status.",
+                            "httpMethod": "GET",
+                            "id": "dataflow.projects.jobs.getMetrics",
+                            "parameterOrder": [
+                                "projectId",
+                                "jobId"
+                            ],
+                            "parameters": {
+                                "location": {
+                                    "description": "The location which contains the job specified by job_id.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "startTime": {
+                                    "description": "Return only metric data that has changed since this time.\nDefault is to return all information about all metrics for the job.",
+                                    "format": "google-datetime",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "jobId": {
+                                    "description": "The job to get messages for.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "projectId": {
+                                    "description": "A project id.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1b3/projects/{projectId}/jobs/{jobId}/metrics",
+                            "response": {
+                                "$ref": "JobMetrics"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/compute",
+                                "https://www.googleapis.com/auth/compute.readonly",
+                                "https://www.googleapis.com/auth/userinfo.email"
+                            ]
                         }
                     },
                     "resources": {
                         "workItems": {
                             "methods": {
-                                "reportStatus": {
-                                    "description": "Reports the status of dataflow WorkItems leased by a worker.",
-                                    "httpMethod": "POST",
-                                    "id": "dataflow.projects.jobs.workItems.reportStatus",
-                                    "parameterOrder": [
-                                        "projectId",
-                                        "jobId"
-                                    ],
-                                    "parameters": {
-                                        "jobId": {
-                                            "description": "The job which the WorkItem is part of.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "projectId": {
-                                            "description": "The project which owns the WorkItem's job.",
-                                            "location": "path",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1b3/projects/{projectId}/jobs/{jobId}/workItems:reportStatus",
-                                    "request": {
-                                        "$ref": "ReportWorkItemStatusRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "ReportWorkItemStatusResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/compute",
-                                        "https://www.googleapis.com/auth/compute.readonly",
-                                        "https://www.googleapis.com/auth/userinfo.email"
-                                    ]
-                                },
                                 "lease": {
                                     "description": "Leases a dataflow WorkItem to run.",
                                     "httpMethod": "POST",
@@ -1363,6 +508,42 @@
                                         "https://www.googleapis.com/auth/compute.readonly",
                                         "https://www.googleapis.com/auth/userinfo.email"
                                     ]
+                                },
+                                "reportStatus": {
+                                    "description": "Reports the status of dataflow WorkItems leased by a worker.",
+                                    "httpMethod": "POST",
+                                    "id": "dataflow.projects.jobs.workItems.reportStatus",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "jobId"
+                                    ],
+                                    "parameters": {
+                                        "jobId": {
+                                            "description": "The job which the WorkItem is part of.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "projectId": {
+                                            "description": "The project which owns the WorkItem's job.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1b3/projects/{projectId}/jobs/{jobId}/workItems:reportStatus",
+                                    "request": {
+                                        "$ref": "ReportWorkItemStatusRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "ReportWorkItemStatusResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/compute",
+                                        "https://www.googleapis.com/auth/compute.readonly",
+                                        "https://www.googleapis.com/auth/userinfo.email"
+                                    ]
                                 }
                             }
                         },
@@ -1465,14 +646,14 @@
                                             "required": true,
                                             "type": "string"
                                         },
-                                        "endTime": {
-                                            "description": "Return only messages with timestamps < end_time. The default is now\n(i.e. return up to the latest messages available).",
-                                            "format": "google-datetime",
+                                        "location": {
+                                            "description": "The location which contains the job specified by job_id.",
                                             "location": "query",
                                             "type": "string"
                                         },
-                                        "location": {
-                                            "description": "The location which contains the job specified by job_id.",
+                                        "endTime": {
+                                            "description": "Return only messages with timestamps < end_time. The default is now\n(i.e. return up to the latest messages available).",
+                                            "format": "google-datetime",
                                             "location": "query",
                                             "type": "string"
                                         },
@@ -1521,1515 +702,832 @@
                             }
                         }
                     }
+                },
+                "locations": {
+                    "methods": {
+                        "workerMessages": {
+                            "description": "Send a worker_message to the service.",
+                            "httpMethod": "POST",
+                            "id": "dataflow.projects.locations.workerMessages",
+                            "parameterOrder": [
+                                "projectId",
+                                "location"
+                            ],
+                            "parameters": {
+                                "location": {
+                                    "description": "The location which contains the job",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "projectId": {
+                                    "description": "The project to send the WorkerMessages to.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1b3/projects/{projectId}/locations/{location}/WorkerMessages",
+                            "request": {
+                                "$ref": "SendWorkerMessagesRequest"
+                            },
+                            "response": {
+                                "$ref": "SendWorkerMessagesResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/compute",
+                                "https://www.googleapis.com/auth/compute.readonly",
+                                "https://www.googleapis.com/auth/userinfo.email"
+                            ]
+                        }
+                    },
+                    "resources": {
+                        "templates": {
+                            "methods": {
+                                "create": {
+                                    "description": "Creates a Cloud Dataflow job from a template.",
+                                    "httpMethod": "POST",
+                                    "id": "dataflow.projects.locations.templates.create",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "location"
+                                    ],
+                                    "parameters": {
+                                        "projectId": {
+                                            "description": "Required. The ID of the Cloud Platform project that the job belongs to.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "location": {
+                                            "description": "The location to which to direct the request.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1b3/projects/{projectId}/locations/{location}/templates",
+                                    "request": {
+                                        "$ref": "CreateJobFromTemplateRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Job"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/compute",
+                                        "https://www.googleapis.com/auth/compute.readonly",
+                                        "https://www.googleapis.com/auth/userinfo.email"
+                                    ]
+                                },
+                                "launch": {
+                                    "description": "Launch a template.",
+                                    "httpMethod": "POST",
+                                    "id": "dataflow.projects.locations.templates.launch",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "location"
+                                    ],
+                                    "parameters": {
+                                        "validateOnly": {
+                                            "description": "If true, the request is validated but not actually executed.\nDefaults to false.",
+                                            "location": "query",
+                                            "type": "boolean"
+                                        },
+                                        "projectId": {
+                                            "description": "Required. The ID of the Cloud Platform project that the job belongs to.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "gcsPath": {
+                                            "description": "Required. A Cloud Storage path to the template from which to create\nthe job.\nMust be valid Cloud Storage URL, beginning with 'gs://'.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "location": {
+                                            "description": "The location to which to direct the request.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1b3/projects/{projectId}/locations/{location}/templates:launch",
+                                    "request": {
+                                        "$ref": "LaunchTemplateParameters"
+                                    },
+                                    "response": {
+                                        "$ref": "LaunchTemplateResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/compute",
+                                        "https://www.googleapis.com/auth/compute.readonly",
+                                        "https://www.googleapis.com/auth/userinfo.email"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Get the template associated with a template.",
+                                    "httpMethod": "GET",
+                                    "id": "dataflow.projects.locations.templates.get",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "location"
+                                    ],
+                                    "parameters": {
+                                        "view": {
+                                            "description": "The view to retrieve. Defaults to METADATA_ONLY.",
+                                            "enum": [
+                                                "METADATA_ONLY"
+                                            ],
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "projectId": {
+                                            "description": "Required. The ID of the Cloud Platform project that the job belongs to.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "gcsPath": {
+                                            "description": "Required. A Cloud Storage path to the template from which to\ncreate the job.\nMust be a valid Cloud Storage URL, beginning with `gs://`.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "location": {
+                                            "description": "The location to which to direct the request.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1b3/projects/{projectId}/locations/{location}/templates:get",
+                                    "response": {
+                                        "$ref": "GetTemplateResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/compute",
+                                        "https://www.googleapis.com/auth/compute.readonly",
+                                        "https://www.googleapis.com/auth/userinfo.email"
+                                    ]
+                                }
+                            }
+                        },
+                        "jobs": {
+                            "methods": {
+                                "update": {
+                                    "description": "Updates the state of an existing Cloud Dataflow job.",
+                                    "httpMethod": "PUT",
+                                    "id": "dataflow.projects.locations.jobs.update",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "location",
+                                        "jobId"
+                                    ],
+                                    "parameters": {
+                                        "jobId": {
+                                            "description": "The job ID.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "projectId": {
+                                            "description": "The ID of the Cloud Platform project that the job belongs to.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "location": {
+                                            "description": "The location that contains this job.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}",
+                                    "request": {
+                                        "$ref": "Job"
+                                    },
+                                    "response": {
+                                        "$ref": "Job"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/compute",
+                                        "https://www.googleapis.com/auth/compute.readonly",
+                                        "https://www.googleapis.com/auth/userinfo.email"
+                                    ]
+                                },
+                                "create": {
+                                    "description": "Creates a Cloud Dataflow job.",
+                                    "httpMethod": "POST",
+                                    "id": "dataflow.projects.locations.jobs.create",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "location"
+                                    ],
+                                    "parameters": {
+                                        "view": {
+                                            "description": "The level of information requested in response.",
+                                            "enum": [
+                                                "JOB_VIEW_UNKNOWN",
+                                                "JOB_VIEW_SUMMARY",
+                                                "JOB_VIEW_ALL",
+                                                "JOB_VIEW_DESCRIPTION"
+                                            ],
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "projectId": {
+                                            "description": "The ID of the Cloud Platform project that the job belongs to.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "location": {
+                                            "description": "The location that contains this job.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "replaceJobId": {
+                                            "description": "Deprecated. This field is now in the Job message.",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1b3/projects/{projectId}/locations/{location}/jobs",
+                                    "request": {
+                                        "$ref": "Job"
+                                    },
+                                    "response": {
+                                        "$ref": "Job"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/compute",
+                                        "https://www.googleapis.com/auth/compute.readonly",
+                                        "https://www.googleapis.com/auth/userinfo.email"
+                                    ]
+                                },
+                                "getMetrics": {
+                                    "description": "Request the job status.",
+                                    "httpMethod": "GET",
+                                    "id": "dataflow.projects.locations.jobs.getMetrics",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "location",
+                                        "jobId"
+                                    ],
+                                    "parameters": {
+                                        "startTime": {
+                                            "description": "Return only metric data that has changed since this time.\nDefault is to return all information about all metrics for the job.",
+                                            "format": "google-datetime",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "jobId": {
+                                            "description": "The job to get messages for.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "projectId": {
+                                            "description": "A project id.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "location": {
+                                            "description": "The location which contains the job specified by job_id.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/metrics",
+                                    "response": {
+                                        "$ref": "JobMetrics"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/compute",
+                                        "https://www.googleapis.com/auth/compute.readonly",
+                                        "https://www.googleapis.com/auth/userinfo.email"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "List the jobs of a project in a given region.",
+                                    "httpMethod": "GET",
+                                    "id": "dataflow.projects.locations.jobs.list",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "location"
+                                    ],
+                                    "parameters": {
+                                        "projectId": {
+                                            "description": "The project which owns the jobs.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "filter": {
+                                            "description": "The kind of filter to use.",
+                                            "enum": [
+                                                "UNKNOWN",
+                                                "ALL",
+                                                "TERMINATED",
+                                                "ACTIVE"
+                                            ],
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "location": {
+                                            "description": "The location that contains this job.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "Set this to the 'next_page_token' field of a previous response\nto request additional results in a long list.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "If there are many jobs, limit response to at most this many.\nThe actual number of jobs returned will be the lesser of max_responses\nand an unspecified server-defined limit.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "view": {
+                                            "description": "Level of information requested in response. Default is `JOB_VIEW_SUMMARY`.",
+                                            "enum": [
+                                                "JOB_VIEW_UNKNOWN",
+                                                "JOB_VIEW_SUMMARY",
+                                                "JOB_VIEW_ALL",
+                                                "JOB_VIEW_DESCRIPTION"
+                                            ],
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1b3/projects/{projectId}/locations/{location}/jobs",
+                                    "response": {
+                                        "$ref": "ListJobsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/compute",
+                                        "https://www.googleapis.com/auth/compute.readonly",
+                                        "https://www.googleapis.com/auth/userinfo.email"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Gets the state of the specified Cloud Dataflow job.",
+                                    "httpMethod": "GET",
+                                    "id": "dataflow.projects.locations.jobs.get",
+                                    "parameterOrder": [
+                                        "projectId",
+                                        "location",
+                                        "jobId"
+                                    ],
+                                    "parameters": {
+                                        "view": {
+                                            "description": "The level of information requested in response.",
+                                            "enum": [
+                                                "JOB_VIEW_UNKNOWN",
+                                                "JOB_VIEW_SUMMARY",
+                                                "JOB_VIEW_ALL",
+                                                "JOB_VIEW_DESCRIPTION"
+                                            ],
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "jobId": {
+                                            "description": "The job ID.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "projectId": {
+                                            "description": "The ID of the Cloud Platform project that the job belongs to.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "location": {
+                                            "description": "The location that contains this job.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}",
+                                    "response": {
+                                        "$ref": "Job"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/compute",
+                                        "https://www.googleapis.com/auth/compute.readonly",
+                                        "https://www.googleapis.com/auth/userinfo.email"
+                                    ]
+                                }
+                            },
+                            "resources": {
+                                "workItems": {
+                                    "methods": {
+                                        "lease": {
+                                            "description": "Leases a dataflow WorkItem to run.",
+                                            "httpMethod": "POST",
+                                            "id": "dataflow.projects.locations.jobs.workItems.lease",
+                                            "parameterOrder": [
+                                                "projectId",
+                                                "location",
+                                                "jobId"
+                                            ],
+                                            "parameters": {
+                                                "location": {
+                                                    "description": "The location which contains the WorkItem's job.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "jobId": {
+                                                    "description": "Identifies the workflow job this worker belongs to.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "projectId": {
+                                                    "description": "Identifies the project this worker belongs to.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/workItems:lease",
+                                            "request": {
+                                                "$ref": "LeaseWorkItemRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "LeaseWorkItemResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/compute",
+                                                "https://www.googleapis.com/auth/compute.readonly",
+                                                "https://www.googleapis.com/auth/userinfo.email"
+                                            ]
+                                        },
+                                        "reportStatus": {
+                                            "description": "Reports the status of dataflow WorkItems leased by a worker.",
+                                            "httpMethod": "POST",
+                                            "id": "dataflow.projects.locations.jobs.workItems.reportStatus",
+                                            "parameterOrder": [
+                                                "projectId",
+                                                "location",
+                                                "jobId"
+                                            ],
+                                            "parameters": {
+                                                "jobId": {
+                                                    "description": "The job which the WorkItem is part of.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "projectId": {
+                                                    "description": "The project which owns the WorkItem's job.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "location": {
+                                                    "description": "The location which contains the WorkItem's job.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/workItems:reportStatus",
+                                            "request": {
+                                                "$ref": "ReportWorkItemStatusRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "ReportWorkItemStatusResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/compute",
+                                                "https://www.googleapis.com/auth/compute.readonly",
+                                                "https://www.googleapis.com/auth/userinfo.email"
+                                            ]
+                                        }
+                                    }
+                                },
+                                "debug": {
+                                    "methods": {
+                                        "sendCapture": {
+                                            "description": "Send encoded debug capture data for component.",
+                                            "httpMethod": "POST",
+                                            "id": "dataflow.projects.locations.jobs.debug.sendCapture",
+                                            "parameterOrder": [
+                                                "projectId",
+                                                "location",
+                                                "jobId"
+                                            ],
+                                            "parameters": {
+                                                "location": {
+                                                    "description": "The location which contains the job specified by job_id.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "jobId": {
+                                                    "description": "The job id.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "projectId": {
+                                                    "description": "The project id.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/debug/sendCapture",
+                                            "request": {
+                                                "$ref": "SendDebugCaptureRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "SendDebugCaptureResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/compute",
+                                                "https://www.googleapis.com/auth/compute.readonly",
+                                                "https://www.googleapis.com/auth/userinfo.email"
+                                            ]
+                                        },
+                                        "getConfig": {
+                                            "description": "Get encoded debug configuration for component. Not cacheable.",
+                                            "httpMethod": "POST",
+                                            "id": "dataflow.projects.locations.jobs.debug.getConfig",
+                                            "parameterOrder": [
+                                                "projectId",
+                                                "location",
+                                                "jobId"
+                                            ],
+                                            "parameters": {
+                                                "jobId": {
+                                                    "description": "The job id.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "projectId": {
+                                                    "description": "The project id.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "location": {
+                                                    "description": "The location which contains the job specified by job_id.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/debug/getConfig",
+                                            "request": {
+                                                "$ref": "GetDebugConfigRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "GetDebugConfigResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/compute",
+                                                "https://www.googleapis.com/auth/compute.readonly",
+                                                "https://www.googleapis.com/auth/userinfo.email"
+                                            ]
+                                        }
+                                    }
+                                },
+                                "messages": {
+                                    "methods": {
+                                        "list": {
+                                            "description": "Request the job status.",
+                                            "httpMethod": "GET",
+                                            "id": "dataflow.projects.locations.jobs.messages.list",
+                                            "parameterOrder": [
+                                                "projectId",
+                                                "location",
+                                                "jobId"
+                                            ],
+                                            "parameters": {
+                                                "endTime": {
+                                                    "description": "Return only messages with timestamps < end_time. The default is now\n(i.e. return up to the latest messages available).",
+                                                    "format": "google-datetime",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "location": {
+                                                    "description": "The location which contains the job specified by job_id.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "startTime": {
+                                                    "description": "If specified, return only messages with timestamps >= start_time.\nThe default is the job creation time (i.e. beginning of messages).",
+                                                    "format": "google-datetime",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageToken": {
+                                                    "description": "If supplied, this should be the value of next_page_token returned\nby an earlier call. This will cause the next page of results to\nbe returned.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "If specified, determines the maximum number of messages to\nreturn.  If unspecified, the service may choose an appropriate\ndefault, or may return an arbitrarily large number of results.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "minimumImportance": {
+                                                    "description": "Filter to only get messages with importance >= level",
+                                                    "enum": [
+                                                        "JOB_MESSAGE_IMPORTANCE_UNKNOWN",
+                                                        "JOB_MESSAGE_DEBUG",
+                                                        "JOB_MESSAGE_DETAILED",
+                                                        "JOB_MESSAGE_BASIC",
+                                                        "JOB_MESSAGE_WARNING",
+                                                        "JOB_MESSAGE_ERROR"
+                                                    ],
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "projectId": {
+                                                    "description": "A project id.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "jobId": {
+                                                    "description": "The job to get messages about.",
+                                                    "location": "path",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/messages",
+                                            "response": {
+                                                "$ref": "ListJobMessagesResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform",
+                                                "https://www.googleapis.com/auth/compute",
+                                                "https://www.googleapis.com/auth/compute.readonly",
+                                                "https://www.googleapis.com/auth/userinfo.email"
+                                            ]
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                },
+                "templates": {
+                    "methods": {
+                        "get": {
+                            "description": "Get the template associated with a template.",
+                            "httpMethod": "GET",
+                            "id": "dataflow.projects.templates.get",
+                            "parameterOrder": [
+                                "projectId"
+                            ],
+                            "parameters": {
+                                "location": {
+                                    "description": "The location to which to direct the request.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "view": {
+                                    "description": "The view to retrieve. Defaults to METADATA_ONLY.",
+                                    "enum": [
+                                        "METADATA_ONLY"
+                                    ],
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "projectId": {
+                                    "description": "Required. The ID of the Cloud Platform project that the job belongs to.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "gcsPath": {
+                                    "description": "Required. A Cloud Storage path to the template from which to\ncreate the job.\nMust be a valid Cloud Storage URL, beginning with `gs://`.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1b3/projects/{projectId}/templates:get",
+                            "response": {
+                                "$ref": "GetTemplateResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/compute",
+                                "https://www.googleapis.com/auth/compute.readonly",
+                                "https://www.googleapis.com/auth/userinfo.email"
+                            ]
+                        },
+                        "create": {
+                            "description": "Creates a Cloud Dataflow job from a template.",
+                            "httpMethod": "POST",
+                            "id": "dataflow.projects.templates.create",
+                            "parameterOrder": [
+                                "projectId"
+                            ],
+                            "parameters": {
+                                "projectId": {
+                                    "description": "Required. The ID of the Cloud Platform project that the job belongs to.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1b3/projects/{projectId}/templates",
+                            "request": {
+                                "$ref": "CreateJobFromTemplateRequest"
+                            },
+                            "response": {
+                                "$ref": "Job"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/compute",
+                                "https://www.googleapis.com/auth/compute.readonly",
+                                "https://www.googleapis.com/auth/userinfo.email"
+                            ]
+                        },
+                        "launch": {
+                            "description": "Launch a template.",
+                            "httpMethod": "POST",
+                            "id": "dataflow.projects.templates.launch",
+                            "parameterOrder": [
+                                "projectId"
+                            ],
+                            "parameters": {
+                                "projectId": {
+                                    "description": "Required. The ID of the Cloud Platform project that the job belongs to.",
+                                    "location": "path",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "gcsPath": {
+                                    "description": "Required. A Cloud Storage path to the template from which to create\nthe job.\nMust be valid Cloud Storage URL, beginning with 'gs://'.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "location": {
+                                    "description": "The location to which to direct the request.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "validateOnly": {
+                                    "description": "If true, the request is validated but not actually executed.\nDefaults to false.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                }
+                            },
+                            "path": "v1b3/projects/{projectId}/templates:launch",
+                            "request": {
+                                "$ref": "LaunchTemplateParameters"
+                            },
+                            "response": {
+                                "$ref": "LaunchTemplateResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/compute",
+                                "https://www.googleapis.com/auth/compute.readonly",
+                                "https://www.googleapis.com/auth/userinfo.email"
+                            ]
+                        }
+                    }
                 }
             }
         }
     },
-    "revision": "20170930",
+    "revision": "20171003",
     "rootUrl": "https://dataflow.googleapis.com/",
     "schemas": {
-        "SourceMetadata": {
-            "description": "Metadata about a Source useful for automatically optimizing\nand tuning the pipeline, etc.",
-            "id": "SourceMetadata",
-            "properties": {
-                "estimatedSizeBytes": {
-                    "description": "An estimate of the total size (in bytes) of the data that would be\nread from this source.  This estimate is in terms of external storage\nsize, before any decompression or other processing done by the reader.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "infinite": {
-                    "description": "Specifies that the size of this source is known to be infinite\n(this is a streaming source).",
-                    "type": "boolean"
-                },
-                "producesSortedKeys": {
-                    "description": "Whether this source is known to produce key/value pairs with\nthe (encoded) keys in lexicographically sorted order.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "DistributionUpdate": {
-            "description": "A metric value representing a distribution.",
-            "id": "DistributionUpdate",
-            "properties": {
-                "sum": {
-                    "$ref": "SplitInt64",
-                    "description": "Use an int64 since we'd prefer the added precision. If overflow is a common\nproblem we can detect it and use an additional int64 or a double."
-                },
-                "max": {
-                    "$ref": "SplitInt64",
-                    "description": "The maximum value present in the distribution."
-                },
-                "histogram": {
-                    "$ref": "Histogram",
-                    "description": "(Optional) Histogram of value counts for the distribution."
-                },
-                "count": {
-                    "$ref": "SplitInt64",
-                    "description": "The count of the number of elements present in the distribution."
-                },
-                "min": {
-                    "$ref": "SplitInt64",
-                    "description": "The minimum value present in the distribution."
-                },
-                "sumOfSquares": {
-                    "description": "Use a double since the sum of squares is likely to overflow int64.",
-                    "format": "double",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "WorkerHealthReportResponse": {
-            "description": "WorkerHealthReportResponse contains information returned to the worker\nin response to a health ping.",
-            "id": "WorkerHealthReportResponse",
-            "properties": {
-                "reportInterval": {
-                    "description": "A positive value indicates the worker should change its reporting interval\nto the specified value.\n\nThe default value of zero means no change in report rate is requested by\nthe server.",
-                    "format": "google-duration",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SourceFork": {
-            "description": "DEPRECATED in favor of DynamicSourceSplit.",
-            "id": "SourceFork",
-            "properties": {
-                "residual": {
-                    "$ref": "SourceSplitShard",
-                    "description": "DEPRECATED"
-                },
-                "residualSource": {
-                    "$ref": "DerivedSource",
-                    "description": "DEPRECATED"
-                },
-                "primary": {
-                    "$ref": "SourceSplitShard",
-                    "description": "DEPRECATED"
-                },
-                "primarySource": {
-                    "$ref": "DerivedSource",
-                    "description": "DEPRECATED"
-                }
-            },
-            "type": "object"
-        },
-        "WorkItemStatus": {
-            "description": "Conveys a worker's progress through the work described by a WorkItem.",
-            "id": "WorkItemStatus",
-            "properties": {
-                "completed": {
-                    "description": "True if the WorkItem was completed (successfully or unsuccessfully).",
-                    "type": "boolean"
-                },
-                "reportedProgress": {
-                    "$ref": "ApproximateReportedProgress",
-                    "description": "The worker's progress through this WorkItem."
-                },
-                "sourceFork": {
-                    "$ref": "SourceFork",
-                    "description": "DEPRECATED in favor of dynamic_source_split."
-                },
-                "totalThrottlerWaitTimeSeconds": {
-                    "description": "Total time the worker spent being throttled by external systems.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "counterUpdates": {
-                    "description": "Worker output counters for this WorkItem.",
-                    "items": {
-                        "$ref": "CounterUpdate"
-                    },
-                    "type": "array"
-                },
-                "workItemId": {
-                    "description": "Identifies the WorkItem.",
-                    "type": "string"
-                },
-                "errors": {
-                    "description": "Specifies errors which occurred during processing.  If errors are\nprovided, and completed = true, then the WorkItem is considered\nto have failed.",
-                    "items": {
-                        "$ref": "Status"
-                    },
-                    "type": "array"
-                },
-                "metricUpdates": {
-                    "description": "DEPRECATED in favor of counter_updates.",
-                    "items": {
-                        "$ref": "MetricUpdate"
-                    },
-                    "type": "array"
-                },
-                "dynamicSourceSplit": {
-                    "$ref": "DynamicSourceSplit",
-                    "description": "See documentation of stop_position."
-                },
-                "sourceOperationResponse": {
-                    "$ref": "SourceOperationResponse",
-                    "description": "If the work item represented a SourceOperationRequest, and the work\nis completed, contains the result of the operation."
-                },
-                "progress": {
-                    "$ref": "ApproximateProgress",
-                    "description": "DEPRECATED in favor of reported_progress."
-                },
-                "requestedLeaseDuration": {
-                    "description": "Amount of time the worker requests for its lease.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "reportIndex": {
-                    "description": "The report index.  When a WorkItem is leased, the lease will\ncontain an initial report index.  When a WorkItem's status is\nreported to the system, the report should be sent with\nthat report index, and the response will contain the index the\nworker should use for the next report.  Reports received with\nunexpected index values will be rejected by the service.\n\nIn order to preserve idempotency, the worker should not alter the\ncontents of a report, even if the worker must submit the same\nreport multiple times before getting back a response.  The worker\nshould not submit a subsequent report until the response for the\nprevious report had been received from the service.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "stopPosition": {
-                    "$ref": "Position",
-                    "description": "A worker may split an active map task in two parts, \"primary\" and\n\"residual\", continuing to process the primary part and returning the\nresidual part into the pool of available work.\nThis event is called a \"dynamic split\" and is critical to the dynamic\nwork rebalancing feature. The two obtained sub-tasks are called\n\"parts\" of the split.\nThe parts, if concatenated, must represent the same input as would\nbe read by the current task if the split did not happen.\nThe exact way in which the original task is decomposed into the two\nparts is specified either as a position demarcating them\n(stop_position), or explicitly as two DerivedSources, if this\ntask consumes a user-defined source type (dynamic_source_split).\n\nThe \"current\" task is adjusted as a result of the split: after a task\nwith range [A, B) sends a stop_position update at C, its range is\nconsidered to be [A, C), e.g.:\n* Progress should be interpreted relative to the new range, e.g.\n  \"75% completed\" means \"75% of [A, C) completed\"\n* The worker should interpret proposed_stop_position relative to the\n  new range, e.g. \"split at 68%\" should be interpreted as\n  \"split at 68% of [A, C)\".\n* If the worker chooses to split again using stop_position, only\n  stop_positions in [A, C) will be accepted.\n* Etc.\ndynamic_source_split has similar semantics: e.g., if a task with\nsource S splits using dynamic_source_split into {P, R}\n(where P and R must be together equivalent to S), then subsequent\nprogress and proposed_stop_position should be interpreted relative\nto P, and in a potential subsequent dynamic_source_split into {P', R'},\nP' and R' must be together equivalent to P, etc."
-                }
-            },
-            "type": "object"
-        },
-        "ComponentSource": {
-            "description": "Description of an interstitial value between transforms in an execution\nstage.",
-            "id": "ComponentSource",
-            "properties": {
-                "originalTransformOrCollection": {
-                    "description": "User name for the original user transform or collection with which this\nsource is most closely associated.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Dataflow service generated name for this source.",
-                    "type": "string"
-                },
-                "userName": {
-                    "description": "Human-readable name for this transform; may be user or system generated.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Histogram": {
-            "description": "Histogram of value counts for a distribution.\n\nBuckets have an inclusive lower bound and exclusive upper bound and use\n\"1,2,5 bucketing\": The first bucket range is from [0,1) and all subsequent\nbucket boundaries are powers of ten multiplied by 1, 2, or 5. Thus, bucket\nboundaries are 0, 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, ...\nNegative values are not supported.",
-            "id": "Histogram",
-            "properties": {
-                "bucketCounts": {
-                    "description": "Counts of values in each bucket. For efficiency, prefix and trailing\nbuckets with count = 0 are elided. Buckets can store the full range of\nvalues of an unsigned long, with ULLONG_MAX falling into the 59th bucket\nwith range [1e19, 2e19).",
-                    "items": {
-                        "format": "int64",
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "firstBucketOffset": {
-                    "description": "Starting index of first stored bucket. The non-inclusive upper-bound of\nthe ith bucket is given by:\n  pow(10,(i-first_bucket_offset)/3) * (1,2,5)[(i-first_bucket_offset)%3]",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "WorkItemServiceState": {
-            "description": "The Dataflow service's idea of the current state of a WorkItem\nbeing processed by a worker.",
-            "id": "WorkItemServiceState",
-            "properties": {
-                "harnessData": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "Other data returned by the service, specific to the particular\nworker harness.",
-                    "type": "object"
-                },
-                "leaseExpireTime": {
-                    "description": "Time at which the current lease will expire.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "metricShortId": {
-                    "description": "The short ids that workers should use in subsequent metric updates.\nWorkers should strive to use short ids whenever possible, but it is ok\nto request the short_id again if a worker lost track of it\n(e.g. if the worker is recovering from a crash).\nNOTE: it is possible that the response may have short ids for a subset\nof the metrics.",
-                    "items": {
-                        "$ref": "MetricShortId"
-                    },
-                    "type": "array"
-                },
-                "nextReportIndex": {
-                    "description": "The index value to use for the next report sent by the worker.\nNote: If the report call fails for whatever reason, the worker should\nreuse this index for subsequent report attempts.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "suggestedStopPoint": {
-                    "$ref": "ApproximateProgress",
-                    "description": "DEPRECATED in favor of split_request."
-                },
-                "splitRequest": {
-                    "$ref": "ApproximateSplitRequest",
-                    "description": "The progress point in the WorkItem where the Dataflow service\nsuggests that the worker truncate the task."
-                },
-                "suggestedStopPosition": {
-                    "$ref": "Position",
-                    "description": "Obsolete, always empty."
-                },
-                "reportStatusInterval": {
-                    "description": "New recommended reporting interval.",
-                    "format": "google-duration",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "MetricStructuredName": {
-            "description": "Identifies a metric, by describing the source which generated the\nmetric.",
-            "id": "MetricStructuredName",
-            "properties": {
-                "name": {
-                    "description": "Worker-defined metric name.",
-                    "type": "string"
-                },
-                "origin": {
-                    "description": "Origin (namespace) of metric name. May be blank for user-define metrics;\nwill be \"dataflow\" for metrics defined by the Dataflow service or SDK.",
-                    "type": "string"
-                },
-                "context": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Zero or more labeled fields which identify the part of the job this\nmetric is associated with, such as the name of a step or collection.\n\nFor example, built-in counters associated with steps will have\ncontext['step'] = <step-name>. Counters associated with PCollections\nin the SDK will have context['pcollection'] = <pcollection-name>.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "SeqMapTaskOutputInfo": {
-            "description": "Information about an output of a SeqMapTask.",
-            "id": "SeqMapTaskOutputInfo",
-            "properties": {
-                "tag": {
-                    "description": "The id of the TupleTag the user code will tag the output value by.",
-                    "type": "string"
-                },
-                "sink": {
-                    "$ref": "Sink",
-                    "description": "The sink to write the output value to."
-                }
-            },
-            "type": "object"
-        },
-        "JobExecutionStageInfo": {
-            "description": "Contains information about how a particular\ngoogle.dataflow.v1beta3.Step will be executed.",
-            "id": "JobExecutionStageInfo",
-            "properties": {
-                "stepName": {
-                    "description": "The steps associated with the execution stage.\nNote that stages may have several steps, and that a given step\nmight be run by more than one stage.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "KeyRangeLocation": {
-            "description": "Location information for a specific key-range of a sharded computation.\nCurrently we only support UTF-8 character splits to simplify encoding into\nJSON.",
-            "id": "KeyRangeLocation",
-            "properties": {
-                "end": {
-                    "description": "The end (exclusive) of the key range.",
-                    "type": "string"
-                },
-                "deprecatedPersistentDirectory": {
-                    "description": "DEPRECATED. The location of the persistent state for this range, as a\npersistent directory in the worker local filesystem.",
-                    "type": "string"
-                },
-                "deliveryEndpoint": {
-                    "description": "The physical location of this range assignment to be used for\nstreaming computation cross-worker message delivery.",
-                    "type": "string"
-                },
-                "dataDisk": {
-                    "description": "The name of the data disk where data for this range is stored.\nThis name is local to the Google Cloud Platform project and uniquely\nidentifies the disk within that project, for example\n\"myproject-1014-104817-4c2-harness-0-disk-1\".",
-                    "type": "string"
-                },
-                "start": {
-                    "description": "The start (inclusive) of the key range.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SourceGetMetadataRequest": {
-            "description": "A request to compute the SourceMetadata of a Source.",
-            "id": "SourceGetMetadataRequest",
-            "properties": {
-                "source": {
-                    "$ref": "Source",
-                    "description": "Specification of the source whose metadata should be computed."
-                }
-            },
-            "type": "object"
-        },
-        "NameAndKind": {
-            "description": "Basic metadata about a counter.",
-            "id": "NameAndKind",
-            "properties": {
-                "name": {
-                    "description": "Name of the counter.",
-                    "type": "string"
-                },
-                "kind": {
-                    "description": "Counter aggregation kind.",
-                    "enum": [
-                        "INVALID",
-                        "SUM",
-                        "MAX",
-                        "MIN",
-                        "MEAN",
-                        "OR",
-                        "AND",
-                        "SET",
-                        "DISTRIBUTION"
-                    ],
-                    "enumDescriptions": [
-                        "Counter aggregation kind was not set.",
-                        "Aggregated value is the sum of all contributed values.",
-                        "Aggregated value is the max of all contributed values.",
-                        "Aggregated value is the min of all contributed values.",
-                        "Aggregated value is the mean of all contributed values.",
-                        "Aggregated value represents the logical 'or' of all contributed values.",
-                        "Aggregated value represents the logical 'and' of all contributed values.",
-                        "Aggregated value is a set of unique contributed values.",
-                        "Aggregated value captures statistics about a distribution."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SeqMapTask": {
-            "description": "Describes a particular function to invoke.",
-            "id": "SeqMapTask",
-            "properties": {
-                "inputs": {
-                    "description": "Information about each of the inputs.",
-                    "items": {
-                        "$ref": "SideInputInfo"
-                    },
-                    "type": "array"
-                },
-                "stageName": {
-                    "description": "System-defined name of the stage containing the SeqDo operation.\nUnique across the workflow.",
-                    "type": "string"
-                },
-                "systemName": {
-                    "description": "System-defined name of the SeqDo operation.\nUnique across the workflow.",
-                    "type": "string"
-                },
-                "userFn": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "The user function to invoke.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The user-provided name of the SeqDo operation.",
-                    "type": "string"
-                },
-                "outputInfos": {
-                    "description": "Information about each of the outputs.",
-                    "items": {
-                        "$ref": "SeqMapTaskOutputInfo"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "WorkerMessageCode": {
-            "description": "A message code is used to report status and error messages to the service.\nThe message codes are intended to be machine readable. The service will\ntake care of translating these into user understandable messages if\nnecessary.\n\nExample use cases:\n  1. Worker processes reporting successful startup.\n  2. Worker processes reporting specific errors (e.g. package staging\n     failure).",
-            "id": "WorkerMessageCode",
-            "properties": {
-                "parameters": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "Parameters contains specific information about the code.\n\nThis is a struct to allow parameters of different types.\n\nExamples:\n 1. For a \"HARNESS_STARTED\" message parameters might provide the name\n    of the worker and additional data like timing information.\n 2. For a \"GCS_DOWNLOAD_ERROR\" parameters might contain fields listing\n    the GCS objects being downloaded and fields containing errors.\n\nIn general complex data structures should be avoided. If a worker\nneeds to send a specific and complicated data structure then please\nconsider defining a new proto and adding it to the data oneof in\nWorkerMessageResponse.\n\nConventions:\n Parameters should only be used for information that isn't typically passed\n as a label.\n hostname and other worker identifiers should almost always be passed\n as labels since they will be included on most messages.",
-                    "type": "object"
-                },
-                "code": {
-                    "description": "The code is a string intended for consumption by a machine that identifies\nthe type of message being sent.\nExamples:\n 1. \"HARNESS_STARTED\" might be used to indicate the worker harness has\n     started.\n 2. \"GCS_DOWNLOAD_ERROR\" might be used to indicate an error downloading\n    a GCS file as part of the boot process of one of the worker containers.\n\nThis is a string and not an enum to make it easy to add new codes without\nwaiting for an API change.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "CustomSourceLocation": {
-            "description": "Identifies the location of a custom souce.",
-            "id": "CustomSourceLocation",
-            "properties": {
-                "stateful": {
-                    "description": "Whether this source is stateful.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "MapTask": {
-            "description": "MapTask consists of an ordered set of instructions, each of which\ndescribes one particular low-level operation for the worker to\nperform in order to accomplish the MapTask's WorkItem.\n\nEach instruction must appear in the list before any instructions which\ndepends on its output.",
-            "id": "MapTask",
-            "properties": {
-                "stageName": {
-                    "description": "System-defined name of the stage containing this MapTask.\nUnique across the workflow.",
-                    "type": "string"
-                },
-                "systemName": {
-                    "description": "System-defined name of this MapTask.\nUnique across the workflow.",
-                    "type": "string"
-                },
-                "instructions": {
-                    "description": "The instructions in the MapTask.",
-                    "items": {
-                        "$ref": "ParallelInstruction"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "FloatingPointMean": {
-            "description": "A representation of a floating point mean metric contribution.",
-            "id": "FloatingPointMean",
-            "properties": {
-                "sum": {
-                    "description": "The sum of all values being aggregated.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "count": {
-                    "$ref": "SplitInt64",
-                    "description": "The number of values being aggregated."
-                }
-            },
-            "type": "object"
-        },
-        "ReportWorkItemStatusResponse": {
-            "description": "Response from a request to report the status of WorkItems.",
-            "id": "ReportWorkItemStatusResponse",
-            "properties": {
-                "workItemServiceStates": {
-                    "description": "A set of messages indicating the service-side state for each\nWorkItem whose status was reported, in the same order as the\nWorkItemStatus messages in the ReportWorkItemStatusRequest which\nresulting in this response.",
-                    "items": {
-                        "$ref": "WorkItemServiceState"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "InstructionOutput": {
-            "description": "An output of an instruction.",
-            "id": "InstructionOutput",
-            "properties": {
-                "codec": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "The codec to use to encode data being written via this output.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The user-provided name of this output.",
-                    "type": "string"
-                },
-                "originalName": {
-                    "description": "System-defined name for this output in the original workflow graph.\nOutputs that do not contribute to an original instruction do not set this.",
-                    "type": "string"
-                },
-                "systemName": {
-                    "description": "System-defined name of this output.\nUnique across the workflow.",
-                    "type": "string"
-                },
-                "onlyCountKeyBytes": {
-                    "description": "For system-generated byte and mean byte metrics, certain instructions\nshould only report the key size.",
-                    "type": "boolean"
-                },
-                "onlyCountValueBytes": {
-                    "description": "For system-generated byte and mean byte metrics, certain instructions\nshould only report the value size.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "CreateJobFromTemplateRequest": {
-            "description": "A request to create a Cloud Dataflow job from a template.",
-            "id": "CreateJobFromTemplateRequest",
-            "properties": {
-                "environment": {
-                    "$ref": "RuntimeEnvironment",
-                    "description": "The runtime environment for the job."
-                },
-                "location": {
-                    "description": "The location to which to direct the request.",
-                    "type": "string"
-                },
-                "parameters": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "The runtime parameters to pass to the job.",
-                    "type": "object"
-                },
-                "jobName": {
-                    "description": "Required. The job name to use for the created job.",
-                    "type": "string"
-                },
-                "gcsPath": {
-                    "description": "Required. A Cloud Storage path to the template from which to\ncreate the job.\nMust be a valid Cloud Storage URL, beginning with `gs://`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "IntegerMean": {
-            "description": "A representation of an integer mean metric contribution.",
-            "id": "IntegerMean",
-            "properties": {
-                "sum": {
-                    "$ref": "SplitInt64",
-                    "description": "The sum of all values being aggregated."
-                },
-                "count": {
-                    "$ref": "SplitInt64",
-                    "description": "The number of values being aggregated."
-                }
-            },
-            "type": "object"
-        },
-        "ListJobsResponse": {
-            "description": "Response to a request to list Cloud Dataflow jobs.  This may be a partial\nresponse, depending on the page size in the ListJobsRequest.",
-            "id": "ListJobsResponse",
-            "properties": {
-                "jobs": {
-                    "description": "A subset of the requested job information.",
-                    "items": {
-                        "$ref": "Job"
-                    },
-                    "type": "array"
-                },
-                "failedLocation": {
-                    "description": "Zero or more messages describing locations that failed to respond.",
-                    "items": {
-                        "$ref": "FailedLocation"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "Set if there may be more results than fit in this response.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ComputationTopology": {
-            "description": "All configuration data for a particular Computation.",
-            "id": "ComputationTopology",
-            "properties": {
-                "keyRanges": {
-                    "description": "The key ranges processed by the computation.",
-                    "items": {
-                        "$ref": "KeyRangeLocation"
-                    },
-                    "type": "array"
-                },
-                "outputs": {
-                    "description": "The outputs from the computation.",
-                    "items": {
-                        "$ref": "StreamLocation"
-                    },
-                    "type": "array"
-                },
-                "stateFamilies": {
-                    "description": "The state family values.",
-                    "items": {
-                        "$ref": "StateFamilyConfig"
-                    },
-                    "type": "array"
-                },
-                "systemStageName": {
-                    "description": "The system stage name.",
-                    "type": "string"
-                },
-                "computationId": {
-                    "description": "The ID of the computation.",
-                    "type": "string"
-                },
-                "inputs": {
-                    "description": "The inputs to the computation.",
-                    "items": {
-                        "$ref": "StreamLocation"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "RuntimeEnvironment": {
-            "description": "The environment values to set at runtime.",
-            "id": "RuntimeEnvironment",
-            "properties": {
-                "zone": {
-                    "description": "The Compute Engine [availability\nzone](https://cloud.google.com/compute/docs/regions-zones/regions-zones)\nfor launching worker instances to run your pipeline.",
-                    "type": "string"
-                },
-                "maxWorkers": {
-                    "description": "The maximum number of Google Compute Engine instances to be made\navailable to your pipeline during execution, from 1 to 1000.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "tempLocation": {
-                    "description": "The Cloud Storage path to use for temporary files.\nMust be a valid Cloud Storage URL, beginning with `gs://`.",
-                    "type": "string"
-                },
-                "bypassTempDirValidation": {
-                    "description": "Whether to bypass the safety checks for the job's temporary directory.\nUse with caution.",
-                    "type": "boolean"
-                },
-                "serviceAccountEmail": {
-                    "description": "The email address of the service account to run the job as.",
-                    "type": "string"
-                },
-                "machineType": {
-                    "description": "The machine type to use for the job. Defaults to the value from the\ntemplate if not specified.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "MountedDataDisk": {
-            "description": "Describes mounted data disk.",
-            "id": "MountedDataDisk",
-            "properties": {
-                "dataDisk": {
-                    "description": "The name of the data disk.\nThis name is local to the Google Cloud Platform project and uniquely\nidentifies the disk within that project, for example\n\"myproject-1014-104817-4c2-harness-0-disk-1\".",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "StreamingSideInputLocation": {
-            "description": "Identifies the location of a streaming side input.",
-            "id": "StreamingSideInputLocation",
-            "properties": {
-                "tag": {
-                    "description": "Identifies the particular side input within the streaming Dataflow job.",
-                    "type": "string"
-                },
-                "stateFamily": {
-                    "description": "Identifies the state family where this side input is stored.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "LaunchTemplateResponse": {
-            "description": "Response to the request to launch a template.",
-            "id": "LaunchTemplateResponse",
-            "properties": {
-                "job": {
-                    "$ref": "Job",
-                    "description": "The job that was launched, if the request was not a dry run and\nthe job was successfully launched."
-                }
-            },
-            "type": "object"
-        },
-        "Job": {
-            "description": "Defines a job to be run by the Cloud Dataflow service.",
-            "id": "Job",
-            "properties": {
-                "clientRequestId": {
-                    "description": "The client's unique identifier of the job, re-used across retried attempts.\nIf this field is set, the service will ensure its uniqueness.\nThe request to create a job will fail if the service has knowledge of a\npreviously submitted job with the same client's ID and job name.\nThe caller may use this field to ensure idempotence of job\ncreation across retried attempts to create a job.\nBy default, the field is empty and, in that case, the service ignores it.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The user-specified Cloud Dataflow job name.\n\nOnly one Job with a given name may exist in a project at any\ngiven time. If a caller attempts to create a Job with the same\nname as an already-existing Job, the attempt returns the\nexisting Job.\n\nThe name must match the regular expression\n`[a-z]([-a-z0-9]{0,38}[a-z0-9])?`",
-                    "type": "string"
-                },
-                "replacedByJobId": {
-                    "description": "If another job is an update of this job (and thus, this job is in\n`JOB_STATE_UPDATED`), this field contains the ID of that job.",
-                    "type": "string"
-                },
-                "steps": {
-                    "description": "The top-level steps that constitute the entire job.",
-                    "items": {
-                        "$ref": "Step"
-                    },
-                    "type": "array"
-                },
-                "executionInfo": {
-                    "$ref": "JobExecutionInfo",
-                    "description": "Deprecated."
-                },
-                "id": {
-                    "description": "The unique ID of this job.\n\nThis field is set by the Cloud Dataflow service when the Job is\ncreated, and is immutable for the life of the job.",
-                    "type": "string"
-                },
-                "currentState": {
-                    "description": "The current state of the job.\n\nJobs are created in the `JOB_STATE_STOPPED` state unless otherwise\nspecified.\n\nA job in the `JOB_STATE_RUNNING` state may asynchronously enter a\nterminal state. After a job has reached a terminal state, no\nfurther state updates may be made.\n\nThis field may be mutated by the Cloud Dataflow service;\ncallers cannot mutate it.",
-                    "enum": [
-                        "JOB_STATE_UNKNOWN",
-                        "JOB_STATE_STOPPED",
-                        "JOB_STATE_RUNNING",
-                        "JOB_STATE_DONE",
-                        "JOB_STATE_FAILED",
-                        "JOB_STATE_CANCELLED",
-                        "JOB_STATE_UPDATED",
-                        "JOB_STATE_DRAINING",
-                        "JOB_STATE_DRAINED",
-                        "JOB_STATE_PENDING",
-                        "JOB_STATE_CANCELLING"
-                    ],
-                    "enumDescriptions": [
-                        "The job's run state isn't specified.",
-                        "`JOB_STATE_STOPPED` indicates that the job has not\nyet started to run.",
-                        "`JOB_STATE_RUNNING` indicates that the job is currently running.",
-                        "`JOB_STATE_DONE` indicates that the job has successfully completed.\nThis is a terminal job state.  This state may be set by the Cloud Dataflow\nservice, as a transition from `JOB_STATE_RUNNING`. It may also be set via a\nCloud Dataflow `UpdateJob` call, if the job has not yet reached a terminal\nstate.",
-                        "`JOB_STATE_FAILED` indicates that the job has failed.  This is a\nterminal job state.  This state may only be set by the Cloud Dataflow\nservice, and only as a transition from `JOB_STATE_RUNNING`.",
-                        "`JOB_STATE_CANCELLED` indicates that the job has been explicitly\ncancelled. This is a terminal job state. This state may only be\nset via a Cloud Dataflow `UpdateJob` call, and only if the job has not\nyet reached another terminal state.",
-                        "`JOB_STATE_UPDATED` indicates that the job was successfully updated,\nmeaning that this job was stopped and another job was started, inheriting\nstate from this one. This is a terminal job state. This state may only be\nset by the Cloud Dataflow service, and only as a transition from\n`JOB_STATE_RUNNING`.",
-                        "`JOB_STATE_DRAINING` indicates that the job is in the process of draining.\nA draining job has stopped pulling from its input sources and is processing\nany data that remains in-flight. This state may be set via a Cloud Dataflow\n`UpdateJob` call, but only as a transition from `JOB_STATE_RUNNING`. Jobs\nthat are draining may only transition to `JOB_STATE_DRAINED`,\n`JOB_STATE_CANCELLED`, or `JOB_STATE_FAILED`.",
-                        "`JOB_STATE_DRAINED` indicates that the job has been drained.\nA drained job terminated by stopping pulling from its input sources and\nprocessing any data that remained in-flight when draining was requested.\nThis state is a terminal state, may only be set by the Cloud Dataflow\nservice, and only as a transition from `JOB_STATE_DRAINING`.",
-                        "'JOB_STATE_PENDING' indicates that the job has been created but is not yet\nrunning.  Jobs that are pending may only transition to `JOB_STATE_RUNNING`,\nor `JOB_STATE_FAILED`.",
-                        "'JOB_STATE_CANCELLING' indicates that the job has been explicitly cancelled\nand is in the process of stopping.  Jobs that are cancelling may only\ntransition to 'JOB_STATE_CANCELLED' or 'JOB_STATE_FAILED'."
-                    ],
-                    "type": "string"
-                },
-                "location": {
-                    "description": "The location that contains this job.",
-                    "type": "string"
-                },
-                "currentStateTime": {
-                    "description": "The timestamp associated with the current state.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "transformNameMapping": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "The map of transform name prefixes of the job to be replaced to the\ncorresponding name prefixes of the new job.",
-                    "type": "object"
-                },
-                "labels": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "User-defined labels for this job.\n\nThe labels map can contain no more than 64 entries.  Entries of the labels\nmap are UTF8 strings that comply with the following restrictions:\n\n* Keys must conform to regexp:  \\p{Ll}\\p{Lo}{0,62}\n* Values must conform to regexp:  [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}\n* Both keys and values are additionally constrained to be <= 128 bytes in\nsize.",
-                    "type": "object"
-                },
-                "createTime": {
-                    "description": "The timestamp when the job was initially created. Immutable and set by the\nCloud Dataflow service.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "environment": {
-                    "$ref": "Environment",
-                    "description": "The environment for the job."
-                },
-                "stageStates": {
-                    "description": "This field may be mutated by the Cloud Dataflow service;\ncallers cannot mutate it.",
-                    "items": {
-                        "$ref": "ExecutionStageState"
-                    },
-                    "type": "array"
-                },
-                "type": {
-                    "description": "The type of Cloud Dataflow job.",
-                    "enum": [
-                        "JOB_TYPE_UNKNOWN",
-                        "JOB_TYPE_BATCH",
-                        "JOB_TYPE_STREAMING"
-                    ],
-                    "enumDescriptions": [
-                        "The type of the job is unspecified, or unknown.",
-                        "A batch job with a well-defined end point: data is read, data is\nprocessed, data is written, and the job is done.",
-                        "A continuously streaming job with no end: data is read,\nprocessed, and written continuously."
-                    ],
-                    "type": "string"
-                },
-                "projectId": {
-                    "description": "The ID of the Cloud Platform project that the job belongs to.",
-                    "type": "string"
-                },
-                "pipelineDescription": {
-                    "$ref": "PipelineDescription",
-                    "description": "Preliminary field: The format of this data may change at any time.\nA description of the user pipeline and stages through which it is executed.\nCreated by Cloud Dataflow service.  Only retrieved with\nJOB_VIEW_DESCRIPTION or JOB_VIEW_ALL."
-                },
-                "replaceJobId": {
-                    "description": "If this job is an update of an existing job, this field is the job ID\nof the job it replaced.\n\nWhen sending a `CreateJobRequest`, you can update a job by specifying it\nhere. The job named here is stopped, and its intermediate state is\ntransferred to this job.",
-                    "type": "string"
-                },
-                "requestedState": {
-                    "description": "The job's requested state.\n\n`UpdateJob` may be used to switch between the `JOB_STATE_STOPPED` and\n`JOB_STATE_RUNNING` states, by setting requested_state.  `UpdateJob` may\nalso be used to directly set a job's requested state to\n`JOB_STATE_CANCELLED` or `JOB_STATE_DONE`, irrevocably terminating the\njob if it has not already reached a terminal state.",
-                    "enum": [
-                        "JOB_STATE_UNKNOWN",
-                        "JOB_STATE_STOPPED",
-                        "JOB_STATE_RUNNING",
-                        "JOB_STATE_DONE",
-                        "JOB_STATE_FAILED",
-                        "JOB_STATE_CANCELLED",
-                        "JOB_STATE_UPDATED",
-                        "JOB_STATE_DRAINING",
-                        "JOB_STATE_DRAINED",
-                        "JOB_STATE_PENDING",
-                        "JOB_STATE_CANCELLING"
-                    ],
-                    "enumDescriptions": [
-                        "The job's run state isn't specified.",
-                        "`JOB_STATE_STOPPED` indicates that the job has not\nyet started to run.",
-                        "`JOB_STATE_RUNNING` indicates that the job is currently running.",
-                        "`JOB_STATE_DONE` indicates that the job has successfully completed.\nThis is a terminal job state.  This state may be set by the Cloud Dataflow\nservice, as a transition from `JOB_STATE_RUNNING`. It may also be set via a\nCloud Dataflow `UpdateJob` call, if the job has not yet reached a terminal\nstate.",
-                        "`JOB_STATE_FAILED` indicates that the job has failed.  This is a\nterminal job state.  This state may only be set by the Cloud Dataflow\nservice, and only as a transition from `JOB_STATE_RUNNING`.",
-                        "`JOB_STATE_CANCELLED` indicates that the job has been explicitly\ncancelled. This is a terminal job state. This state may only be\nset via a Cloud Dataflow `UpdateJob` call, and only if the job has not\nyet reached another terminal state.",
-                        "`JOB_STATE_UPDATED` indicates that the job was successfully updated,\nmeaning that this job was stopped and another job was started, inheriting\nstate from this one. This is a terminal job state. This state may only be\nset by the Cloud Dataflow service, and only as a transition from\n`JOB_STATE_RUNNING`.",
-                        "`JOB_STATE_DRAINING` indicates that the job is in the process of draining.\nA draining job has stopped pulling from its input sources and is processing\nany data that remains in-flight. This state may be set via a Cloud Dataflow\n`UpdateJob` call, but only as a transition from `JOB_STATE_RUNNING`. Jobs\nthat are draining may only transition to `JOB_STATE_DRAINED`,\n`JOB_STATE_CANCELLED`, or `JOB_STATE_FAILED`.",
-                        "`JOB_STATE_DRAINED` indicates that the job has been drained.\nA drained job terminated by stopping pulling from its input sources and\nprocessing any data that remained in-flight when draining was requested.\nThis state is a terminal state, may only be set by the Cloud Dataflow\nservice, and only as a transition from `JOB_STATE_DRAINING`.",
-                        "'JOB_STATE_PENDING' indicates that the job has been created but is not yet\nrunning.  Jobs that are pending may only transition to `JOB_STATE_RUNNING`,\nor `JOB_STATE_FAILED`.",
-                        "'JOB_STATE_CANCELLING' indicates that the job has been explicitly cancelled\nand is in the process of stopping.  Jobs that are cancelling may only\ntransition to 'JOB_STATE_CANCELLED' or 'JOB_STATE_FAILED'."
-                    ],
-                    "type": "string"
-                },
-                "tempFiles": {
-                    "description": "A set of files the system should be aware of that are used\nfor temporary storage. These temporary files will be\nremoved on job completion.\nNo duplicates are allowed.\nNo file patterns are supported.\n\nThe supported files are:\n\nGoogle Cloud Storage:\n\n   storage.googleapis.com/{bucket}/{object}\n   bucket.storage.googleapis.com/{object}",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "DynamicSourceSplit": {
-            "description": "When a task splits using WorkItemStatus.dynamic_source_split, this\nmessage describes the two parts of the split relative to the\ndescription of the current task's input.",
-            "id": "DynamicSourceSplit",
-            "properties": {
-                "residual": {
-                    "$ref": "DerivedSource",
-                    "description": "Residual part (returned to the pool of work).\nSpecified relative to the previously-current source."
-                },
-                "primary": {
-                    "$ref": "DerivedSource",
-                    "description": "Primary part (continued to be processed by worker).\nSpecified relative to the previously-current source.\nBecomes current."
-                }
-            },
-            "type": "object"
-        },
-        "DerivedSource": {
-            "description": "Specification of one of the bundles produced as a result of splitting\na Source (e.g. when executing a SourceSplitRequest, or when\nsplitting an active task using WorkItemStatus.dynamic_source_split),\nrelative to the source being split.",
-            "id": "DerivedSource",
-            "properties": {
-                "derivationMode": {
-                    "description": "What source to base the produced source on (if any).",
-                    "enum": [
-                        "SOURCE_DERIVATION_MODE_UNKNOWN",
-                        "SOURCE_DERIVATION_MODE_INDEPENDENT",
-                        "SOURCE_DERIVATION_MODE_CHILD_OF_CURRENT",
-                        "SOURCE_DERIVATION_MODE_SIBLING_OF_CURRENT"
-                    ],
-                    "enumDescriptions": [
-                        "The source derivation is unknown, or unspecified.",
-                        "Produce a completely independent Source with no base.",
-                        "Produce a Source based on the Source being split.",
-                        "Produce a Source based on the base of the Source being split."
-                    ],
-                    "type": "string"
-                },
-                "source": {
-                    "$ref": "Source",
-                    "description": "Specification of the source."
-                }
-            },
-            "type": "object"
-        },
-        "SideInputId": {
-            "description": "Uniquely identifies a side input.",
-            "id": "SideInputId",
-            "properties": {
-                "inputIndex": {
-                    "description": "The index of the side input, from the list of non_parallel_inputs.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "declaringStepName": {
-                    "description": "The step that receives and usually consumes this side input.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SourceOperationResponse": {
-            "description": "The result of a SourceOperationRequest, specified in\nReportWorkItemStatusRequest.source_operation when the work item\nis completed.",
-            "id": "SourceOperationResponse",
-            "properties": {
-                "getMetadata": {
-                    "$ref": "SourceGetMetadataResponse",
-                    "description": "A response to a request to get metadata about a source."
-                },
-                "split": {
-                    "$ref": "SourceSplitResponse",
-                    "description": "A response to a request to split a source."
-                }
-            },
-            "type": "object"
-        },
-        "SendDebugCaptureResponse": {
-            "description": "Response to a send capture request.\nnothing",
-            "id": "SendDebugCaptureResponse",
-            "properties": {},
-            "type": "object"
-        },
-        "SideInputInfo": {
-            "description": "Information about a side input of a DoFn or an input of a SeqDoFn.",
-            "id": "SideInputInfo",
-            "properties": {
-                "tag": {
-                    "description": "The id of the tag the user code will access this side input by;\nthis should correspond to the tag of some MultiOutputInfo.",
-                    "type": "string"
-                },
-                "kind": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "How to interpret the source element(s) as a side input value.",
-                    "type": "object"
-                },
-                "sources": {
-                    "description": "The source(s) to read element(s) from to get the value of this side input.\nIf more than one source, then the elements are taken from the\nsources, in the specified order if order matters.\nAt least one source is required.",
-                    "items": {
-                        "$ref": "Source"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "WriteInstruction": {
-            "description": "An instruction that writes records.\nTakes one input, produces no outputs.",
-            "id": "WriteInstruction",
-            "properties": {
-                "sink": {
-                    "$ref": "Sink",
-                    "description": "The sink to write to."
-                },
-                "input": {
-                    "$ref": "InstructionInput",
-                    "description": "The input."
-                }
-            },
-            "type": "object"
-        },
-        "ConcatPosition": {
-            "description": "A position that encapsulates an inner position and an index for the inner\nposition. A ConcatPosition can be used by a reader of a source that\nencapsulates a set of other sources.",
-            "id": "ConcatPosition",
-            "properties": {
-                "position": {
-                    "$ref": "Position",
-                    "description": "Position within the inner source."
-                },
-                "index": {
-                    "description": "Index of the inner source.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "CounterStructuredNameAndMetadata": {
-            "description": "A single message which encapsulates structured name and metadata for a given\ncounter.",
-            "id": "CounterStructuredNameAndMetadata",
-            "properties": {
-                "name": {
-                    "$ref": "CounterStructuredName",
-                    "description": "Structured name of the counter."
-                },
-                "metadata": {
-                    "$ref": "CounterMetadata",
-                    "description": "Metadata associated with a counter"
-                }
-            },
-            "type": "object"
-        },
-        "AutoscalingSettings": {
-            "description": "Settings for WorkerPool autoscaling.",
-            "id": "AutoscalingSettings",
-            "properties": {
-                "maxNumWorkers": {
-                    "description": "The maximum number of workers to cap scaling at.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "algorithm": {
-                    "description": "The algorithm to use for autoscaling.",
-                    "enum": [
-                        "AUTOSCALING_ALGORITHM_UNKNOWN",
-                        "AUTOSCALING_ALGORITHM_NONE",
-                        "AUTOSCALING_ALGORITHM_BASIC"
-                    ],
-                    "enumDescriptions": [
-                        "The algorithm is unknown, or unspecified.",
-                        "Disable autoscaling.",
-                        "Increase worker count over time to reduce job execution time."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "StreamingComputationRanges": {
-            "description": "Describes full or partial data disk assignment information of the computation\nranges.",
-            "id": "StreamingComputationRanges",
-            "properties": {
-                "rangeAssignments": {
-                    "description": "Data disk assignments for ranges from this computation.",
-                    "items": {
-                        "$ref": "KeyRangeDataDiskAssignment"
-                    },
-                    "type": "array"
-                },
-                "computationId": {
-                    "description": "The ID of the computation.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ExecutionStageSummary": {
-            "description": "Description of the composing transforms, names/ids, and input/outputs of a\nstage of execution.  Some composing transforms and sources may have been\ngenerated by the Dataflow service during execution planning.",
-            "id": "ExecutionStageSummary",
-            "properties": {
-                "name": {
-                    "description": "Dataflow service generated name for this stage.",
-                    "type": "string"
-                },
-                "inputSource": {
-                    "description": "Input sources for this stage.",
-                    "items": {
-                        "$ref": "StageSource"
-                    },
-                    "type": "array"
-                },
-                "id": {
-                    "description": "Dataflow service generated id for this stage.",
-                    "type": "string"
-                },
-                "componentTransform": {
-                    "description": "Transforms that comprise this execution stage.",
-                    "items": {
-                        "$ref": "ComponentTransform"
-                    },
-                    "type": "array"
-                },
-                "componentSource": {
-                    "description": "Collections produced and consumed by component transforms of this stage.",
-                    "items": {
-                        "$ref": "ComponentSource"
-                    },
-                    "type": "array"
-                },
-                "kind": {
-                    "description": "Type of tranform this stage is executing.",
-                    "enum": [
-                        "UNKNOWN_KIND",
-                        "PAR_DO_KIND",
-                        "GROUP_BY_KEY_KIND",
-                        "FLATTEN_KIND",
-                        "READ_KIND",
-                        "WRITE_KIND",
-                        "CONSTANT_KIND",
-                        "SINGLETON_KIND",
-                        "SHUFFLE_KIND"
-                    ],
-                    "enumDescriptions": [
-                        "Unrecognized transform type.",
-                        "ParDo transform.",
-                        "Group By Key transform.",
-                        "Flatten transform.",
-                        "Read transform.",
-                        "Write transform.",
-                        "Constructs from a constant value, such as with Create.of.",
-                        "Creates a Singleton view of a collection.",
-                        "Opening or closing a shuffle session, often as part of a GroupByKey."
-                    ],
-                    "type": "string"
-                },
-                "outputSource": {
-                    "description": "Output sources for this stage.",
-                    "items": {
-                        "$ref": "StageSource"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "SendWorkerMessagesRequest": {
-            "description": "A request for sending worker messages to the service.",
-            "id": "SendWorkerMessagesRequest",
-            "properties": {
-                "workerMessages": {
-                    "description": "The WorkerMessages to send.",
-                    "items": {
-                        "$ref": "WorkerMessage"
-                    },
-                    "type": "array"
-                },
-                "location": {
-                    "description": "The location which contains the job",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SourceSplitShard": {
-            "description": "DEPRECATED in favor of DerivedSource.",
-            "id": "SourceSplitShard",
-            "properties": {
-                "derivationMode": {
-                    "description": "DEPRECATED",
-                    "enum": [
-                        "SOURCE_DERIVATION_MODE_UNKNOWN",
-                        "SOURCE_DERIVATION_MODE_INDEPENDENT",
-                        "SOURCE_DERIVATION_MODE_CHILD_OF_CURRENT",
-                        "SOURCE_DERIVATION_MODE_SIBLING_OF_CURRENT"
-                    ],
-                    "enumDescriptions": [
-                        "The source derivation is unknown, or unspecified.",
-                        "Produce a completely independent Source with no base.",
-                        "Produce a Source based on the Source being split.",
-                        "Produce a Source based on the base of the Source being split."
-                    ],
-                    "type": "string"
-                },
-                "source": {
-                    "$ref": "Source",
-                    "description": "DEPRECATED"
-                }
-            },
-            "type": "object"
-        },
-        "CPUTime": {
-            "description": "Modeled after information exposed by /proc/stat.",
-            "id": "CPUTime",
-            "properties": {
-                "totalMs": {
-                    "description": "Total active CPU time across all cores (ie., non-idle) in milliseconds\nsince start-up.",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "rate": {
-                    "description": "Average CPU utilization rate (% non-idle cpu / second) since previous\nsample.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "timestamp": {
-                    "description": "Timestamp of the measurement.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Environment": {
-            "description": "Describes the environment in which a Dataflow Job runs.",
-            "id": "Environment",
-            "properties": {
-                "sdkPipelineOptions": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "The Cloud Dataflow SDK pipeline options specified by the user. These\noptions are passed through the service and are used to recreate the\nSDK pipeline options on the worker in a language agnostic and platform\nindependent way.",
-                    "type": "object"
-                },
-                "userAgent": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "A description of the process that generated the request.",
-                    "type": "object"
-                },
-                "clusterManagerApiService": {
-                    "description": "The type of cluster manager API to use.  If unknown or\nunspecified, the service will attempt to choose a reasonable\ndefault.  This should be in the form of the API service name,\ne.g. \"compute.googleapis.com\".",
-                    "type": "string"
-                },
-                "tempStoragePrefix": {
-                    "description": "The prefix of the resources the system should use for temporary\nstorage.  The system will append the suffix \"/temp-{JOBNAME} to\nthis resource prefix, where {JOBNAME} is the value of the\njob_name field.  The resulting bucket and object prefix is used\nas the prefix of the resources used to store temporary data\nneeded during the job execution.  NOTE: This will override the\nvalue in taskrunner_settings.\nThe supported resource type is:\n\nGoogle Cloud Storage:\n\n  storage.googleapis.com/{bucket}/{object}\n  bucket.storage.googleapis.com/{object}",
-                    "type": "string"
-                },
-                "workerPools": {
-                    "description": "The worker pools. At least one \"harness\" worker pool must be\nspecified in order for the job to have workers.",
-                    "items": {
-                        "$ref": "WorkerPool"
-                    },
-                    "type": "array"
-                },
-                "dataset": {
-                    "description": "The dataset for the current project where various workflow\nrelated tables are stored.\n\nThe supported resource type is:\n\nGoogle BigQuery:\n  bigquery.googleapis.com/{dataset}",
-                    "type": "string"
-                },
-                "experiments": {
-                    "description": "The list of experiments to enable.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "internalExperiments": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Experimental settings.",
-                    "type": "object"
-                },
-                "version": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "A structure describing which components and their versions of the service\nare required in order to run the job.",
-                    "type": "object"
-                },
-                "serviceAccountEmail": {
-                    "description": "Identity to run virtual machines as. Defaults to the default account.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "StreamingComputationTask": {
-            "description": "A task which describes what action should be performed for the specified\nstreaming computation ranges.",
-            "id": "StreamingComputationTask",
-            "properties": {
-                "taskType": {
-                    "description": "A type of streaming computation task.",
-                    "enum": [
-                        "STREAMING_COMPUTATION_TASK_UNKNOWN",
-                        "STREAMING_COMPUTATION_TASK_STOP",
-                        "STREAMING_COMPUTATION_TASK_START"
-                    ],
-                    "enumDescriptions": [
-                        "The streaming computation task is unknown, or unspecified.",
-                        "Stop processing specified streaming computation range(s).",
-                        "Start processing specified streaming computation range(s)."
-                    ],
-                    "type": "string"
-                },
-                "computationRanges": {
-                    "description": "Contains ranges of a streaming computation this task should apply to.",
-                    "items": {
-                        "$ref": "StreamingComputationRanges"
-                    },
-                    "type": "array"
-                },
-                "dataDisks": {
-                    "description": "Describes the set of data disks this task should apply to.",
-                    "items": {
-                        "$ref": "MountedDataDisk"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "SendDebugCaptureRequest": {
-            "description": "Request to send encoded debug information.",
-            "id": "SendDebugCaptureRequest",
-            "properties": {
-                "location": {
-                    "description": "The location which contains the job specified by job_id.",
-                    "type": "string"
-                },
-                "data": {
-                    "description": "The encoded debug information.",
-                    "type": "string"
-                },
-                "componentId": {
-                    "description": "The internal component id for which debug information is sent.",
-                    "type": "string"
-                },
-                "workerId": {
-                    "description": "The worker id, i.e., VM hostname.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GetDebugConfigResponse": {
-            "description": "Response to a get debug configuration request.",
-            "id": "GetDebugConfigResponse",
-            "properties": {
-                "config": {
-                    "description": "The encoded debug configuration for the requested component.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ComponentTransform": {
-            "description": "Description of a transform executed as part of an execution stage.",
-            "id": "ComponentTransform",
-            "properties": {
-                "originalTransform": {
-                    "description": "User name for the original user transform with which this transform is\nmost closely associated.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Dataflow service generated name for this source.",
-                    "type": "string"
-                },
-                "userName": {
-                    "description": "Human-readable name for this transform; may be user or system generated.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "StreamingSetupTask": {
-            "description": "A task which initializes part of a streaming Dataflow job.",
-            "id": "StreamingSetupTask",
-            "properties": {
-                "drain": {
-                    "description": "The user has requested drain.",
-                    "type": "boolean"
-                },
-                "workerHarnessPort": {
-                    "description": "The TCP port used by the worker to communicate with the Dataflow\nworker harness.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "receiveWorkPort": {
-                    "description": "The TCP port on which the worker should listen for messages from\nother streaming computation workers.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "streamingComputationTopology": {
-                    "$ref": "TopologyConfig",
-                    "description": "The global topology of the streaming Dataflow job."
-                }
-            },
-            "type": "object"
-        },
-        "PubsubLocation": {
-            "description": "Identifies a pubsub location to use for transferring data into or\nout of a streaming Dataflow job.",
-            "id": "PubsubLocation",
-            "properties": {
-                "idLabel": {
-                    "description": "If set, contains a pubsub label from which to extract record ids.\nIf left empty, record deduplication will be strictly best effort.",
-                    "type": "string"
-                },
-                "timestampLabel": {
-                    "description": "If set, contains a pubsub label from which to extract record timestamps.\nIf left empty, record timestamps will be generated upon arrival.",
-                    "type": "string"
-                },
-                "topic": {
-                    "description": "A pubsub topic, in the form of\n\"pubsub.googleapis.com/topics/<project-id>/<topic-name>\"",
-                    "type": "string"
-                },
-                "subscription": {
-                    "description": "A pubsub subscription, in the form of\n\"pubsub.googleapis.com/subscriptions/<project-id>/<subscription-name>\"",
-                    "type": "string"
-                },
-                "dropLateData": {
-                    "description": "Indicates whether the pipeline allows late-arriving data.",
-                    "type": "boolean"
-                },
-                "trackingSubscription": {
-                    "description": "If set, specifies the pubsub subscription that will be used for tracking\ncustom time timestamps for watermark estimation.",
-                    "type": "string"
-                },
-                "withAttributes": {
-                    "description": "If true, then the client has requested to get pubsub attributes.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "WorkerHealthReport": {
-            "description": "WorkerHealthReport contains information about the health of a worker.\n\nThe VM should be identified by the labels attached to the WorkerMessage that\nthis health ping belongs to.",
-            "id": "WorkerHealthReport",
-            "properties": {
-                "pods": {
-                    "description": "The pods running on the worker. See:\nhttp://kubernetes.io/v1.1/docs/api-reference/v1/definitions.html#_v1_pod\n\nThis field is used by the worker to send the status of the indvidual\ncontainers running on each worker.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                },
-                "vmStartupTime": {
-                    "description": "The time the VM was booted.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "reportInterval": {
-                    "description": "The interval at which the worker is sending health reports.\nThe default value of 0 should be interpreted as the field is not being\nexplicitly set by the worker.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "vmIsHealthy": {
-                    "description": "Whether the VM is healthy.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "JobMessage": {
-            "description": "A particular message pertaining to a Dataflow job.",
-            "id": "JobMessage",
-            "properties": {
-                "messageImportance": {
-                    "description": "Importance level of the message.",
-                    "enum": [
-                        "JOB_MESSAGE_IMPORTANCE_UNKNOWN",
-                        "JOB_MESSAGE_DEBUG",
-                        "JOB_MESSAGE_DETAILED",
-                        "JOB_MESSAGE_BASIC",
-                        "JOB_MESSAGE_WARNING",
-                        "JOB_MESSAGE_ERROR"
-                    ],
-                    "enumDescriptions": [
-                        "The message importance isn't specified, or is unknown.",
-                        "The message is at the 'debug' level: typically only useful for\nsoftware engineers working on the code the job is running.\nTypically, Dataflow pipeline runners do not display log messages\nat this level by default.",
-                        "The message is at the 'detailed' level: somewhat verbose, but\npotentially useful to users.  Typically, Dataflow pipeline\nrunners do not display log messages at this level by default.\nThese messages are displayed by default in the Dataflow\nmonitoring UI.",
-                        "The message is at the 'basic' level: useful for keeping\ntrack of the execution of a Dataflow pipeline.  Typically,\nDataflow pipeline runners display log messages at this level by\ndefault, and these messages are displayed by default in the\nDataflow monitoring UI.",
-                        "The message is at the 'warning' level: indicating a condition\npertaining to a job which may require human intervention.\nTypically, Dataflow pipeline runners display log messages at this\nlevel by default, and these messages are displayed by default in\nthe Dataflow monitoring UI.",
-                        "The message is at the 'error' level: indicating a condition\npreventing a job from succeeding.  Typically, Dataflow pipeline\nrunners display log messages at this level by default, and these\nmessages are displayed by default in the Dataflow monitoring UI."
-                    ],
-                    "type": "string"
-                },
-                "messageText": {
-                    "description": "The text of the message.",
-                    "type": "string"
-                },
-                "time": {
-                    "description": "The timestamp of the message.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "Deprecated.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "ParameterMetadata": {
             "description": "Metadata for a specific parameter.",
             "id": "ParameterMetadata",
@@ -3097,48 +1595,10 @@
             },
             "type": "object"
         },
-        "MetricShortId": {
-            "description": "The metric short id is returned to the user alongside an offset into\nReportWorkItemStatusRequest",
-            "id": "MetricShortId",
-            "properties": {
-                "metricIndex": {
-                    "description": "The index of the corresponding metric in\nthe ReportWorkItemStatusRequest. Required.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "shortId": {
-                    "description": "The service-generated short identifier for the metric.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ShellTask": {
-            "description": "A task which consists of a shell command for the worker to execute.",
-            "id": "ShellTask",
-            "properties": {
-                "command": {
-                    "description": "The shell command to run.",
-                    "type": "string"
-                },
-                "exitCode": {
-                    "description": "Exit code for the task.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
         "AutoscalingEvent": {
             "description": "A structured message reporting an autoscaling decision made by the Dataflow\nservice.",
             "id": "AutoscalingEvent",
             "properties": {
-                "currentNumWorkers": {
-                    "description": "The current number of workers the job has.",
-                    "format": "int64",
-                    "type": "string"
-                },
                 "time": {
                     "description": "The time this event was emitted to indicate a new target or current\nnum_workers value.",
                     "format": "google-datetime",
@@ -3170,6 +1630,44 @@
                     "description": "The target number of workers the worker pool wants to resize to use.",
                     "format": "int64",
                     "type": "string"
+                },
+                "currentNumWorkers": {
+                    "description": "The current number of workers the job has.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MetricShortId": {
+            "description": "The metric short id is returned to the user alongside an offset into\nReportWorkItemStatusRequest",
+            "id": "MetricShortId",
+            "properties": {
+                "shortId": {
+                    "description": "The service-generated short identifier for the metric.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "metricIndex": {
+                    "description": "The index of the corresponding metric in\nthe ReportWorkItemStatusRequest. Required.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "ShellTask": {
+            "description": "A task which consists of a shell command for the worker to execute.",
+            "id": "ShellTask",
+            "properties": {
+                "exitCode": {
+                    "description": "Exit code for the task.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "command": {
+                    "description": "The shell command to run.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -3178,6 +1676,41 @@
             "description": "Taskrunner configuration settings.",
             "id": "TaskRunnerSettings",
             "properties": {
+                "taskGroup": {
+                    "description": "The UNIX group ID on the worker VM to use for tasks launched by\ntaskrunner; e.g. \"wheel\".",
+                    "type": "string"
+                },
+                "harnessCommand": {
+                    "description": "The command to launch the worker harness.",
+                    "type": "string"
+                },
+                "logDir": {
+                    "description": "The directory on the VM to store logs.",
+                    "type": "string"
+                },
+                "dataflowApiVersion": {
+                    "description": "The API version of endpoint, e.g. \"v1b3\"",
+                    "type": "string"
+                },
+                "oauthScopes": {
+                    "description": "The OAuth2 scopes to be requested by the taskrunner in order to\naccess the Cloud Dataflow API.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "streamingWorkerMainClass": {
+                    "description": "The streaming worker main class name.",
+                    "type": "string"
+                },
+                "logUploadLocation": {
+                    "description": "Indicates where to put logs.  If this is not specified, the logs\nwill not be uploaded.\n\nThe supported resource type is:\n\nGoogle Cloud Storage:\n  storage.googleapis.com/{bucket}/{object}\n  bucket.storage.googleapis.com/{object}",
+                    "type": "string"
+                },
+                "workflowFileName": {
+                    "description": "The file to store the workflow in.",
+                    "type": "string"
+                },
                 "baseTaskDir": {
                     "description": "The location on the worker for task-specific subdirectories.",
                     "type": "string"
@@ -3186,14 +1719,14 @@
                     "description": "The prefix of the resources the taskrunner should use for\ntemporary storage.\n\nThe supported resource type is:\n\nGoogle Cloud Storage:\n  storage.googleapis.com/{bucket}/{object}\n  bucket.storage.googleapis.com/{object}",
                     "type": "string"
                 },
-                "commandlinesFileName": {
-                    "description": "The file to store preprocessing commands in.",
-                    "type": "string"
-                },
                 "languageHint": {
                     "description": "The suggested backend language.",
                     "type": "string"
                 },
+                "commandlinesFileName": {
+                    "description": "The file to store preprocessing commands in.",
+                    "type": "string"
+                },
                 "baseUrl": {
                     "description": "The base URL for the taskrunner to use when accessing Google Cloud APIs.\n\nWhen workers access Google Cloud APIs, they logically do so via\nrelative URLs.  If this field is specified, it supplies the base\nURL to use for resolving these relative URLs.  The normative\nalgorithm used is defined by RFC 1808, \"Relative Uniform Resource\nLocators\".\n\nIf not specified, the default value is \"http://www.googleapis.com/\"",
                     "type": "string"
@@ -3210,52 +1743,17 @@
                     "$ref": "WorkerSettings",
                     "description": "The settings to pass to the parallel worker harness."
                 },
-                "vmId": {
-                    "description": "The ID string of the VM.",
-                    "type": "string"
-                },
                 "taskUser": {
                     "description": "The UNIX user ID on the worker VM to use for tasks launched by\ntaskrunner; e.g. \"root\".",
                     "type": "string"
                 },
+                "vmId": {
+                    "description": "The ID string of the VM.",
+                    "type": "string"
+                },
                 "alsologtostderr": {
                     "description": "Whether to also send taskrunner log info to stderr.",
                     "type": "boolean"
-                },
-                "taskGroup": {
-                    "description": "The UNIX group ID on the worker VM to use for tasks launched by\ntaskrunner; e.g. \"wheel\".",
-                    "type": "string"
-                },
-                "harnessCommand": {
-                    "description": "The command to launch the worker harness.",
-                    "type": "string"
-                },
-                "logDir": {
-                    "description": "The directory on the VM to store logs.",
-                    "type": "string"
-                },
-                "oauthScopes": {
-                    "description": "The OAuth2 scopes to be requested by the taskrunner in order to\naccess the Cloud Dataflow API.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "dataflowApiVersion": {
-                    "description": "The API version of endpoint, e.g. \"v1b3\"",
-                    "type": "string"
-                },
-                "streamingWorkerMainClass": {
-                    "description": "The streaming worker main class name.",
-                    "type": "string"
-                },
-                "logUploadLocation": {
-                    "description": "Indicates where to put logs.  If this is not specified, the logs\nwill not be uploaded.\n\nThe supported resource type is:\n\nGoogle Cloud Storage:\n  storage.googleapis.com/{bucket}/{object}\n  bucket.storage.googleapis.com/{object}",
-                    "type": "string"
-                },
-                "workflowFileName": {
-                    "description": "The file to store the workflow in.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -3264,11 +1762,6 @@
             "description": "Position defines a position within a collection of data.  The value\ncan be either the end position, a key (used with ordered\ncollections), a byte offset, or a record index.",
             "id": "Position",
             "properties": {
-                "recordIndex": {
-                    "description": "Position is a record index.",
-                    "format": "int64",
-                    "type": "string"
-                },
                 "shufflePosition": {
                     "description": "CloudPosition is a base64 encoded BatchShufflePosition (with FIXED\nsharding).",
                     "type": "string"
@@ -3289,6 +1782,11 @@
                 "key": {
                     "description": "Position is a string key, ordered lexicographically.",
                     "type": "string"
+                },
+                "recordIndex": {
+                    "description": "Position is a record index.",
+                    "format": "int64",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -3297,21 +1795,6 @@
             "description": "A source that records can be read and decoded from.",
             "id": "Source",
             "properties": {
-                "metadata": {
-                    "$ref": "SourceMetadata",
-                    "description": "Optionally, metadata for this source can be supplied right away,\navoiding a SourceGetMetadataOperation roundtrip\n(see SourceOperationRequest).\n\nThis field is meaningful only in the Source objects populated\nby the user (e.g. when filling in a DerivedSource).\nSource objects supplied by the framework to the user don't have\nthis field populated."
-                },
-                "baseSpecs": {
-                    "description": "While splitting, sources may specify the produced bundles\nas differences against another source, in order to save backend-side\nmemory and allow bigger jobs. For details, see SourceSplitRequest.\nTo support this use case, the full set of parameters of the source\nis logically obtained by taking the latest explicitly specified value\nof each parameter in the order:\nbase_specs (later items win), spec (overrides anything in base_specs).",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                },
                 "doesNotNeedSplitting": {
                     "description": "Setting this value to true hints to the framework that the source\ndoesn't need splitting, and using SourceSplitRequest on it would\nyield SOURCE_SPLIT_OUTCOME_USE_CURRENT.\n\nE.g. a file splitter may set this to true when splitting a single file\ninto a set of byte ranges of appropriate size, and set this\nto false when splitting a filepattern into individual files.\nHowever, for efficiency, a file splitter may decide to produce\nfile subranges directly from the filepattern to avoid a splitting\nround-trip.\n\nSee SourceSplitRequest for an overview of the splitting process.\n\nThis field is meaningful only in the Source objects populated\nby the user (e.g. when filling in a DerivedSource).\nSource objects supplied by the framework to the user don't have\nthis field populated.",
                     "type": "boolean"
@@ -3331,6 +1814,21 @@
                     },
                     "description": "The source to read from, plus its parameters.",
                     "type": "object"
+                },
+                "metadata": {
+                    "$ref": "SourceMetadata",
+                    "description": "Optionally, metadata for this source can be supplied right away,\navoiding a SourceGetMetadataOperation roundtrip\n(see SourceOperationRequest).\n\nThis field is meaningful only in the Source objects populated\nby the user (e.g. when filling in a DerivedSource).\nSource objects supplied by the framework to the user don't have\nthis field populated."
+                },
+                "baseSpecs": {
+                    "description": "While splitting, sources may specify the produced bundles\nas differences against another source, in order to save backend-side\nmemory and allow bigger jobs. For details, see SourceSplitRequest.\nTo support this use case, the full set of parameters of the source\nis logically obtained by taking the latest explicitly specified value\nof each parameter in the order:\nbase_specs (later items win), spec (overrides anything in base_specs).",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -3339,15 +1837,15 @@
             "description": "A representation of an int64, n, that is immune to precision loss when\nencoded in JSON.",
             "id": "SplitInt64",
             "properties": {
-                "lowBits": {
-                    "description": "The low order bits: n & 0xffffffff.",
-                    "format": "uint32",
-                    "type": "integer"
-                },
                 "highBits": {
                     "description": "The high order bits, including the sign: n >> 32.",
                     "format": "int32",
                     "type": "integer"
+                },
+                "lowBits": {
+                    "description": "The low order bits: n & 0xffffffff.",
+                    "format": "uint32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -3356,6 +1854,44 @@
             "description": "Describes one particular pool of Cloud Dataflow workers to be\ninstantiated by the Cloud Dataflow service in order to perform the\ncomputations required by a job.  Note that a workflow job may use\nmultiple pools, in order to match the various computational\nrequirements of the various stages of the job.",
             "id": "WorkerPool",
             "properties": {
+                "network": {
+                    "description": "Network to which VMs will be assigned.  If empty or unspecified,\nthe service will use the network \"default\".",
+                    "type": "string"
+                },
+                "defaultPackageSet": {
+                    "description": "The default package set to install.  This allows the service to\nselect a default set of packages which are useful to worker\nharnesses written in a particular language.",
+                    "enum": [
+                        "DEFAULT_PACKAGE_SET_UNKNOWN",
+                        "DEFAULT_PACKAGE_SET_NONE",
+                        "DEFAULT_PACKAGE_SET_JAVA",
+                        "DEFAULT_PACKAGE_SET_PYTHON"
+                    ],
+                    "enumDescriptions": [
+                        "The default set of packages to stage is unknown, or unspecified.",
+                        "Indicates that no packages should be staged at the worker unless\nexplicitly specified by the job.",
+                        "Stage packages typically useful to workers written in Java.",
+                        "Stage pacakges typically useful to workers written in Python."
+                    ],
+                    "type": "string"
+                },
+                "numThreadsPerWorker": {
+                    "description": "The number of threads per worker harness. If empty or unspecified, the\nservice will choose a number of threads (according to the number of cores\non the selected machine type for batch, or 1 by convention for streaming).",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "numWorkers": {
+                    "description": "Number of Google Compute Engine workers in this pool needed to\nexecute the job.  If zero or unspecified, the service will\nattempt to choose a reasonable default.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "zone": {
+                    "description": "Zone to run the worker pools in.  If empty or unspecified, the service\nwill attempt to choose a reasonable default.",
+                    "type": "string"
+                },
+                "diskSourceImage": {
+                    "description": "Fully qualified source image for disks.",
+                    "type": "string"
+                },
                 "packages": {
                     "description": "Packages to be installed on workers.",
                     "items": {
@@ -3400,14 +1936,14 @@
                     "description": "Required. Docker container image that executes the Cloud Dataflow worker\nharness, residing in Google Container Registry.",
                     "type": "string"
                 },
-                "machineType": {
-                    "description": "Machine type (e.g. \"n1-standard-1\").  If empty or unspecified, the\nservice will attempt to choose a reasonable default.",
-                    "type": "string"
-                },
                 "diskType": {
                     "description": "Type of root disk for VMs.  If empty or unspecified, the service will\nattempt to choose a reasonable default.",
                     "type": "string"
                 },
+                "machineType": {
+                    "description": "Machine type (e.g. \"n1-standard-1\").  If empty or unspecified, the\nservice will attempt to choose a reasonable default.",
+                    "type": "string"
+                },
                 "kind": {
                     "description": "The kind of the worker pool; currently only `harness` and `shuffle`\nare supported.",
                     "type": "string"
@@ -3437,58 +1973,20 @@
                     ],
                     "type": "string"
                 },
-                "autoscalingSettings": {
-                    "$ref": "AutoscalingSettings",
-                    "description": "Settings for autoscaling of this WorkerPool."
-                },
                 "taskrunnerSettings": {
                     "$ref": "TaskRunnerSettings",
                     "description": "Settings passed through to Google Compute Engine workers when\nusing the standard Dataflow task runner.  Users should ignore\nthis field."
                 },
+                "autoscalingSettings": {
+                    "$ref": "AutoscalingSettings",
+                    "description": "Settings for autoscaling of this WorkerPool."
+                },
                 "metadata": {
                     "additionalProperties": {
                         "type": "string"
                     },
                     "description": "Metadata to set on the Google Compute Engine VMs.",
                     "type": "object"
-                },
-                "defaultPackageSet": {
-                    "description": "The default package set to install.  This allows the service to\nselect a default set of packages which are useful to worker\nharnesses written in a particular language.",
-                    "enum": [
-                        "DEFAULT_PACKAGE_SET_UNKNOWN",
-                        "DEFAULT_PACKAGE_SET_NONE",
-                        "DEFAULT_PACKAGE_SET_JAVA",
-                        "DEFAULT_PACKAGE_SET_PYTHON"
-                    ],
-                    "enumDescriptions": [
-                        "The default set of packages to stage is unknown, or unspecified.",
-                        "Indicates that no packages should be staged at the worker unless\nexplicitly specified by the job.",
-                        "Stage packages typically useful to workers written in Java.",
-                        "Stage pacakges typically useful to workers written in Python."
-                    ],
-                    "type": "string"
-                },
-                "network": {
-                    "description": "Network to which VMs will be assigned.  If empty or unspecified,\nthe service will use the network \"default\".",
-                    "type": "string"
-                },
-                "zone": {
-                    "description": "Zone to run the worker pools in.  If empty or unspecified, the service\nwill attempt to choose a reasonable default.",
-                    "type": "string"
-                },
-                "numWorkers": {
-                    "description": "Number of Google Compute Engine workers in this pool needed to\nexecute the job.  If zero or unspecified, the service will\nattempt to choose a reasonable default.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "numThreadsPerWorker": {
-                    "description": "The number of threads per worker harness. If empty or unspecified, the\nservice will choose a number of threads (according to the number of cores\non the selected machine type for batch, or 1 by convention for streaming).",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "diskSourceImage": {
-                    "description": "Fully qualified source image for disks.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -3497,13 +1995,35 @@
             "description": "A work item that represents the different operations that can be\nperformed on a user-defined Source specification.",
             "id": "SourceOperationRequest",
             "properties": {
-                "split": {
-                    "$ref": "SourceSplitRequest",
-                    "description": "Information about a request to split a source."
-                },
                 "getMetadata": {
                     "$ref": "SourceGetMetadataRequest",
                     "description": "Information about a request to get metadata about a source."
+                },
+                "split": {
+                    "$ref": "SourceSplitRequest",
+                    "description": "Information about a request to split a source."
+                }
+            },
+            "type": "object"
+        },
+        "StructuredMessage": {
+            "description": "A rich message format, including a human readable string, a key for\nidentifying the message, and structured data associated with the message for\nprogrammatic consumption.",
+            "id": "StructuredMessage",
+            "properties": {
+                "messageText": {
+                    "description": "Human-readable version of message.",
+                    "type": "string"
+                },
+                "parameters": {
+                    "description": "The structured data associated with this message.",
+                    "items": {
+                        "$ref": "Parameter"
+                    },
+                    "type": "array"
+                },
+                "messageKey": {
+                    "description": "Idenfier for this message type.  Used by external systems to\ninternationalize or personalize message.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -3535,28 +2055,28 @@
                     "description": "Identifies the cloud project this WorkItem belongs to.",
                     "type": "string"
                 },
-                "sourceOperationTask": {
-                    "$ref": "SourceOperationRequest",
-                    "description": "Additional information for source operation WorkItems."
-                },
-                "streamingSetupTask": {
-                    "$ref": "StreamingSetupTask",
-                    "description": "Additional information for StreamingSetupTask WorkItems."
-                },
                 "reportStatusInterval": {
                     "description": "Recommended reporting interval.",
                     "format": "google-duration",
                     "type": "string"
                 },
-                "streamingConfigTask": {
-                    "$ref": "StreamingConfigTask",
-                    "description": "Additional information for StreamingConfigTask WorkItems."
+                "streamingSetupTask": {
+                    "$ref": "StreamingSetupTask",
+                    "description": "Additional information for StreamingSetupTask WorkItems."
+                },
+                "sourceOperationTask": {
+                    "$ref": "SourceOperationRequest",
+                    "description": "Additional information for source operation WorkItems."
                 },
                 "leaseExpireTime": {
                     "description": "Time when the lease on this Work will expire.",
                     "format": "google-datetime",
                     "type": "string"
                 },
+                "streamingConfigTask": {
+                    "$ref": "StreamingConfigTask",
+                    "description": "Additional information for StreamingConfigTask WorkItems."
+                },
                 "initialReportIndex": {
                     "description": "The initial index to use when reporting the status of the WorkItem.",
                     "format": "int64",
@@ -3582,22 +2102,14 @@
             },
             "type": "object"
         },
-        "StructuredMessage": {
-            "description": "A rich message format, including a human readable string, a key for\nidentifying the message, and structured data associated with the message for\nprogrammatic consumption.",
-            "id": "StructuredMessage",
+        "ResourceUtilizationReport": {
+            "description": "Worker metrics exported from workers. This contains resource utilization\nmetrics accumulated from a variety of sources. For more information, see\ngo/df-resource-signals.",
+            "id": "ResourceUtilizationReport",
             "properties": {
-                "messageKey": {
-                    "description": "Idenfier for this message type.  Used by external systems to\ninternationalize or personalize message.",
-                    "type": "string"
-                },
-                "messageText": {
-                    "description": "Human-readable version of message.",
-                    "type": "string"
-                },
-                "parameters": {
-                    "description": "The structured data associated with this message.",
+                "cpuTime": {
+                    "description": "CPU utilization samples.",
                     "items": {
-                        "$ref": "Parameter"
+                        "$ref": "CPUTime"
                     },
                     "type": "array"
                 }
@@ -3620,24 +2132,24 @@
             },
             "type": "object"
         },
-        "ResourceUtilizationReport": {
-            "description": "Worker metrics exported from workers. This contains resource utilization\nmetrics accumulated from a variety of sources. For more information, see\ngo/df-resource-signals.",
-            "id": "ResourceUtilizationReport",
-            "properties": {
-                "cpuTime": {
-                    "description": "CPU utilization samples.",
-                    "items": {
-                        "$ref": "CPUTime"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "TopologyConfig": {
             "description": "Global topology of the streaming Dataflow job, including all\ncomputations and their sharded locations.",
             "id": "TopologyConfig",
             "properties": {
+                "userStageToComputationNameMap": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Maps user stage names to stable computation names.",
+                    "type": "object"
+                },
+                "computations": {
+                    "description": "The computations associated with a streaming Dataflow job.",
+                    "items": {
+                        "$ref": "ComputationTopology"
+                    },
+                    "type": "array"
+                },
                 "persistentStateVersion": {
                     "description": "Version number for persistent state.",
                     "format": "int32",
@@ -3654,20 +2166,6 @@
                     "description": "The size (in bits) of keys that will be assigned to source messages.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "userStageToComputationNameMap": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Maps user stage names to stable computation names.",
-                    "type": "object"
-                },
-                "computations": {
-                    "description": "The computations associated with a streaming Dataflow job.",
-                    "items": {
-                        "$ref": "ComputationTopology"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -3704,14 +2202,22 @@
             "description": "Provides data to pass through to the worker harness.",
             "id": "WorkerSettings",
             "properties": {
-                "baseUrl": {
-                    "description": "The base URL for accessing Google Cloud APIs.\n\nWhen workers access Google Cloud APIs, they logically do so via\nrelative URLs.  If this field is specified, it supplies the base\nURL to use for resolving these relative URLs.  The normative\nalgorithm used is defined by RFC 1808, \"Relative Uniform Resource\nLocators\".\n\nIf not specified, the default value is \"http://www.googleapis.com/\"",
+                "workerId": {
+                    "description": "The ID of the worker running this pipeline.",
+                    "type": "string"
+                },
+                "tempStoragePrefix": {
+                    "description": "The prefix of the resources the system should use for temporary\nstorage.\n\nThe supported resource type is:\n\nGoogle Cloud Storage:\n\n  storage.googleapis.com/{bucket}/{object}\n  bucket.storage.googleapis.com/{object}",
                     "type": "string"
                 },
                 "reportingEnabled": {
                     "description": "Whether to send work progress updates to the service.",
                     "type": "boolean"
                 },
+                "baseUrl": {
+                    "description": "The base URL for accessing Google Cloud APIs.\n\nWhen workers access Google Cloud APIs, they logically do so via\nrelative URLs.  If this field is specified, it supplies the base\nURL to use for resolving these relative URLs.  The normative\nalgorithm used is defined by RFC 1808, \"Relative Uniform Resource\nLocators\".\n\nIf not specified, the default value is \"http://www.googleapis.com/\"",
+                    "type": "string"
+                },
                 "servicePath": {
                     "description": "The Cloud Dataflow service path relative to the root URL, for example,\n\"dataflow/v1b3/projects\".",
                     "type": "string"
@@ -3719,14 +2225,6 @@
                 "shuffleServicePath": {
                     "description": "The Shuffle service path relative to the root URL, for example,\n\"shuffle/v1beta1\".",
                     "type": "string"
-                },
-                "workerId": {
-                    "description": "The ID of the worker running this pipeline.",
-                    "type": "string"
-                },
-                "tempStoragePrefix": {
-                    "description": "The prefix of the resources the system should use for temporary\nstorage.\n\nThe supported resource type is:\n\nGoogle Cloud Storage:\n\n  storage.googleapis.com/{bucket}/{object}\n  bucket.storage.googleapis.com/{object}",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -3886,14 +2384,26 @@
             },
             "type": "object"
         },
-        "LeaseWorkItemResponse": {
-            "description": "Response to a request to lease WorkItems.",
-            "id": "LeaseWorkItemResponse",
+        "StreamingComputationConfig": {
+            "description": "Configuration information for a single streaming computation.",
+            "id": "StreamingComputationConfig",
             "properties": {
-                "workItems": {
-                    "description": "A list of the leased WorkItems.",
+                "computationId": {
+                    "description": "Unique identifier for this computation.",
+                    "type": "string"
+                },
+                "stageName": {
+                    "description": "Stage name of this computation.",
+                    "type": "string"
+                },
+                "systemName": {
+                    "description": "System defined name for this computation.",
+                    "type": "string"
+                },
+                "instructions": {
+                    "description": "Instructions that comprise the computation.",
                     "items": {
-                        "$ref": "WorkItem"
+                        "$ref": "ParallelInstruction"
                     },
                     "type": "array"
                 }
@@ -3904,6 +2414,24 @@
             "description": "Description of the type, names/ids, and input/outputs for a transform.",
             "id": "TransformSummary",
             "properties": {
+                "id": {
+                    "description": "SDK generated id of this transform instance.",
+                    "type": "string"
+                },
+                "outputCollectionName": {
+                    "description": "User  names for all collection outputs to this transform.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "displayData": {
+                    "description": "Transform-specific display data.",
+                    "items": {
+                        "$ref": "DisplayData"
+                    },
+                    "type": "array"
+                },
                 "kind": {
                     "description": "Type of transform.",
                     "enum": [
@@ -3940,50 +2468,43 @@
                 "name": {
                     "description": "User provided name for this transform instance.",
                     "type": "string"
-                },
-                "id": {
-                    "description": "SDK generated id of this transform instance.",
-                    "type": "string"
-                },
-                "displayData": {
-                    "description": "Transform-specific display data.",
+                }
+            },
+            "type": "object"
+        },
+        "LeaseWorkItemResponse": {
+            "description": "Response to a request to lease WorkItems.",
+            "id": "LeaseWorkItemResponse",
+            "properties": {
+                "workItems": {
+                    "description": "A list of the leased WorkItems.",
                     "items": {
-                        "$ref": "DisplayData"
-                    },
-                    "type": "array"
-                },
-                "outputCollectionName": {
-                    "description": "User  names for all collection outputs to this transform.",
-                    "items": {
-                        "type": "string"
+                        "$ref": "WorkItem"
                     },
                     "type": "array"
                 }
             },
             "type": "object"
         },
-        "StreamingComputationConfig": {
-            "description": "Configuration information for a single streaming computation.",
-            "id": "StreamingComputationConfig",
+        "Sink": {
+            "description": "A sink that records can be encoded and written to.",
+            "id": "Sink",
             "properties": {
-                "computationId": {
-                    "description": "Unique identifier for this computation.",
-                    "type": "string"
-                },
-                "stageName": {
-                    "description": "Stage name of this computation.",
-                    "type": "string"
-                },
-                "systemName": {
-                    "description": "System defined name for this computation.",
-                    "type": "string"
-                },
-                "instructions": {
-                    "description": "Instructions that comprise the computation.",
-                    "items": {
-                        "$ref": "ParallelInstruction"
+                "codec": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
                     },
-                    "type": "array"
+                    "description": "The codec to use to encode data written to the sink.",
+                    "type": "object"
+                },
+                "spec": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "The sink to write to, plus its parameters.",
+                    "type": "object"
                 }
             },
             "type": "object"
@@ -3992,10 +2513,6 @@
             "description": "Parameters to provide to the template being launched.",
             "id": "LaunchTemplateParameters",
             "properties": {
-                "environment": {
-                    "$ref": "RuntimeEnvironment",
-                    "description": "The runtime environment for the job."
-                },
                 "parameters": {
                     "additionalProperties": {
                         "type": "string"
@@ -4006,29 +2523,10 @@
                 "jobName": {
                     "description": "Required. The job name to use for the created job.",
                     "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Sink": {
-            "description": "A sink that records can be encoded and written to.",
-            "id": "Sink",
-            "properties": {
-                "spec": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "The sink to write to, plus its parameters.",
-                    "type": "object"
                 },
-                "codec": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "The codec to use to encode data written to the sink.",
-                    "type": "object"
+                "environment": {
+                    "$ref": "RuntimeEnvironment",
+                    "description": "The runtime environment for the job."
                 }
             },
             "type": "object"
@@ -4148,13 +2646,21 @@
             "description": "Data provided with a pipeline or transform to provide descriptive info.",
             "id": "DisplayData",
             "properties": {
-                "strValue": {
-                    "description": "Contains value if the data is of string type.",
+                "timestampValue": {
+                    "description": "Contains value if the data is of timestamp type.",
+                    "format": "google-datetime",
                     "type": "string"
                 },
-                "durationValue": {
-                    "description": "Contains value if the data is of duration type.",
-                    "format": "google-duration",
+                "javaClassValue": {
+                    "description": "Contains value if the data is of java class type.",
+                    "type": "string"
+                },
+                "boolValue": {
+                    "description": "Contains value if the data is of a boolean type.",
+                    "type": "boolean"
+                },
+                "strValue": {
+                    "description": "Contains value if the data is of string type.",
                     "type": "string"
                 },
                 "int64Value": {
@@ -4162,6 +2668,11 @@
                     "format": "int64",
                     "type": "string"
                 },
+                "durationValue": {
+                    "description": "Contains value if the data is of duration type.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
                 "namespace": {
                     "description": "The namespace for the key. This is usually a class name or programming\nlanguage namespace (i.e. python module) which defines the display data.\nThis allows a dax monitoring system to specially handle the data\nand perform custom rendering.",
                     "type": "string"
@@ -4179,25 +2690,12 @@
                     "description": "A possible additional shorter value to display.\nFor example a java_class_name_value of com.mypackage.MyDoFn\nwill be stored with MyDoFn as the short_str_value and\ncom.mypackage.MyDoFn as the java_class_name value.\nshort_str_value can be displayed and java_class_name_value\nwill be displayed as a tooltip.",
                     "type": "string"
                 },
-                "url": {
-                    "description": "An optional full URL.",
-                    "type": "string"
-                },
                 "label": {
                     "description": "An optional label to display in a dax UI for the element.",
                     "type": "string"
                 },
-                "timestampValue": {
-                    "description": "Contains value if the data is of timestamp type.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "boolValue": {
-                    "description": "Contains value if the data is of a boolean type.",
-                    "type": "boolean"
-                },
-                "javaClassValue": {
-                    "description": "Contains value if the data is of java class type.",
+                "url": {
+                    "description": "An optional full URL.",
                     "type": "string"
                 }
             },
@@ -4207,6 +2705,22 @@
             "description": "Request to lease WorkItems.",
             "id": "LeaseWorkItemRequest",
             "properties": {
+                "currentWorkerTime": {
+                    "description": "The current timestamp at the worker.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "location": {
+                    "description": "The location which contains the WorkItem's job.",
+                    "type": "string"
+                },
+                "workItemTypes": {
+                    "description": "Filter for WorkItem type.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
                 "workerCapabilities": {
                     "description": "Worker capabilities. WorkItems might be limited to workers with specific\ncapabilities.",
                     "items": {
@@ -4222,22 +2736,6 @@
                     "description": "The initial lease period.",
                     "format": "google-duration",
                     "type": "string"
-                },
-                "currentWorkerTime": {
-                    "description": "The current timestamp at the worker.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "workItemTypes": {
-                    "description": "Filter for WorkItem type.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "location": {
-                    "description": "The location which contains the WorkItem's job.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -4265,13 +2763,13 @@
             "description": "The response to a GetTemplate request.",
             "id": "GetTemplateResponse",
             "properties": {
-                "status": {
-                    "$ref": "Status",
-                    "description": "The status of the get template request. Any problems with the\nrequest will be indicated in the error_details."
-                },
                 "metadata": {
                     "$ref": "TemplateMetadata",
                     "description": "The template metadata describing the template name, available\nparameters, etc."
+                },
+                "status": {
+                    "$ref": "Status",
+                    "description": "The status of the get template request. Any problems with the\nrequest will be indicated in the error_details."
                 }
             },
             "type": "object"
@@ -4295,6 +2793,13 @@
             "description": "Request to report the status of WorkItems.",
             "id": "ReportWorkItemStatusRequest",
             "properties": {
+                "workItemStatuses": {
+                    "description": "The order is unimportant, except that the order of the\nWorkItemServiceState messages in the ReportWorkItemStatusResponse\ncorresponds to the order of WorkItemStatus messages here.",
+                    "items": {
+                        "$ref": "WorkItemStatus"
+                    },
+                    "type": "array"
+                },
                 "currentWorkerTime": {
                     "description": "The current timestamp at the worker.",
                     "format": "google-datetime",
@@ -4307,43 +2812,6 @@
                 "location": {
                     "description": "The location which contains the WorkItem's job.",
                     "type": "string"
-                },
-                "workItemStatuses": {
-                    "description": "The order is unimportant, except that the order of the\nWorkItemServiceState messages in the ReportWorkItemStatusResponse\ncorresponds to the order of WorkItemStatus messages here.",
-                    "items": {
-                        "$ref": "WorkItemStatus"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "StreamingConfigTask": {
-            "description": "A task that carries configuration information for streaming computations.",
-            "id": "StreamingConfigTask",
-            "properties": {
-                "userStepToStateFamilyNameMap": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Map from user step names to state families.",
-                    "type": "object"
-                },
-                "windmillServicePort": {
-                    "description": "If present, the worker must use this port to communicate with Windmill\nService dispatchers. Only applicable when windmill_service_endpoint is\nspecified.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "streamingComputationConfigs": {
-                    "description": "Set of computation configuration information.",
-                    "items": {
-                        "$ref": "StreamingComputationConfig"
-                    },
-                    "type": "array"
-                },
-                "windmillServiceEndpoint": {
-                    "description": "If present, the worker must use this endpoint to communicate with Windmill\nService dispatchers, otherwise the worker must continue to use whatever\nendpoint it had been using.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -4352,6 +2820,13 @@
             "description": "A descriptive representation of submitted pipeline as well as the executed\nform.  This data is provided by the Dataflow service for ease of visualizing\nthe pipeline and interpretting Dataflow provided metrics.",
             "id": "PipelineDescription",
             "properties": {
+                "originalPipelineTransform": {
+                    "description": "Description of each transform in the pipeline and collections between them.",
+                    "items": {
+                        "$ref": "TransformSummary"
+                    },
+                    "type": "array"
+                },
                 "displayData": {
                     "description": "Pipeline level display data.",
                     "items": {
@@ -4365,36 +2840,36 @@
                         "$ref": "ExecutionStageSummary"
                     },
                     "type": "array"
-                },
-                "originalPipelineTransform": {
-                    "description": "Description of each transform in the pipeline and collections between them.",
-                    "items": {
-                        "$ref": "TransformSummary"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
         },
-        "Step": {
-            "description": "Defines a particular step within a Cloud Dataflow job.\n\nA job consists of multiple steps, each of which performs some\nspecific operation as part of the overall job.  Data is typically\npassed from one step to another as part of the job.\n\nHere's an example of a sequence of steps which together implement a\nMap-Reduce job:\n\n  * Read a collection of data from some source, parsing the\n    collection's elements.\n\n  * Validate the elements.\n\n  * Apply a user-defined function to map each element to some value\n    and extract an element-specific key value.\n\n  * Group elements with the same key into a single element with\n    that key, transforming a multiply-keyed collection into a\n    uniquely-keyed collection.\n\n  * Write the elements out to some data sink.\n\nNote that the Cloud Dataflow service may be used to run many different\ntypes of jobs, not just Map-Reduce.",
-            "id": "Step",
+        "StreamingConfigTask": {
+            "description": "A task that carries configuration information for streaming computations.",
+            "id": "StreamingConfigTask",
             "properties": {
-                "name": {
-                    "description": "The name that identifies the step. This must be unique for each\nstep with respect to all other steps in the Cloud Dataflow job.",
-                    "type": "string"
-                },
-                "kind": {
-                    "description": "The kind of step in the Cloud Dataflow job.",
-                    "type": "string"
-                },
-                "properties": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
+                "streamingComputationConfigs": {
+                    "description": "Set of computation configuration information.",
+                    "items": {
+                        "$ref": "StreamingComputationConfig"
                     },
-                    "description": "Named properties associated with the step. Each kind of\npredefined step has its own required set of properties.\nMust be provided on Create.  Only retrieved with JOB_VIEW_ALL.",
+                    "type": "array"
+                },
+                "windmillServiceEndpoint": {
+                    "description": "If present, the worker must use this endpoint to communicate with Windmill\nService dispatchers, otherwise the worker must continue to use whatever\nendpoint it had been using.",
+                    "type": "string"
+                },
+                "userStepToStateFamilyNameMap": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Map from user step names to state families.",
                     "type": "object"
+                },
+                "windmillServicePort": {
+                    "description": "If present, the worker must use this port to communicate with Windmill\nService dispatchers. Only applicable when windmill_service_endpoint is\nspecified.",
+                    "format": "int64",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -4413,6 +2888,29 @@
             },
             "type": "object"
         },
+        "Step": {
+            "description": "Defines a particular step within a Cloud Dataflow job.\n\nA job consists of multiple steps, each of which performs some\nspecific operation as part of the overall job.  Data is typically\npassed from one step to another as part of the job.\n\nHere's an example of a sequence of steps which together implement a\nMap-Reduce job:\n\n  * Read a collection of data from some source, parsing the\n    collection's elements.\n\n  * Validate the elements.\n\n  * Apply a user-defined function to map each element to some value\n    and extract an element-specific key value.\n\n  * Group elements with the same key into a single element with\n    that key, transforming a multiply-keyed collection into a\n    uniquely-keyed collection.\n\n  * Write the elements out to some data sink.\n\nNote that the Cloud Dataflow service may be used to run many different\ntypes of jobs, not just Map-Reduce.",
+            "id": "Step",
+            "properties": {
+                "properties": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "Named properties associated with the step. Each kind of\npredefined step has its own required set of properties.\nMust be provided on Create.  Only retrieved with JOB_VIEW_ALL.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "The name that identifies the step. This must be unique for each\nstep with respect to all other steps in the Cloud Dataflow job.",
+                    "type": "string"
+                },
+                "kind": {
+                    "description": "The kind of step in the Cloud Dataflow job.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "FailedLocation": {
             "description": "Indicates which location failed to respond to a request for data.",
             "id": "FailedLocation",
@@ -4444,35 +2942,34 @@
             },
             "type": "object"
         },
-        "ListJobMessagesResponse": {
-            "description": "Response to a request to list job messages.",
-            "id": "ListJobMessagesResponse",
-            "properties": {
-                "jobMessages": {
-                    "description": "Messages in ascending timestamp order.",
-                    "items": {
-                        "$ref": "JobMessage"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "The token to obtain the next page of results if there are more.",
-                    "type": "string"
-                },
-                "autoscalingEvents": {
-                    "description": "Autoscaling events in ascending timestamp order.",
-                    "items": {
-                        "$ref": "AutoscalingEvent"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "CounterMetadata": {
             "description": "CounterMetadata includes all static non-name non-value counter attributes.",
             "id": "CounterMetadata",
             "properties": {
+                "standardUnits": {
+                    "description": "System defined Units, see above enum.",
+                    "enum": [
+                        "BYTES",
+                        "BYTES_PER_SEC",
+                        "MILLISECONDS",
+                        "MICROSECONDS",
+                        "NANOSECONDS",
+                        "TIMESTAMP_MSEC",
+                        "TIMESTAMP_USEC",
+                        "TIMESTAMP_NSEC"
+                    ],
+                    "enumDescriptions": [
+                        "Counter returns a value in bytes.",
+                        "Counter returns a value in bytes per second.",
+                        "Counter returns a value in milliseconds.",
+                        "Counter returns a value in microseconds.",
+                        "Counter returns a value in nanoseconds.",
+                        "Counter returns a timestamp in milliseconds.",
+                        "Counter returns a timestamp in microseconds.",
+                        "Counter returns a timestamp in nanoseconds."
+                    ],
+                    "type": "string"
+                },
                 "otherUnits": {
                     "description": "A string referring to the unit type.",
                     "type": "string"
@@ -4506,30 +3003,31 @@
                         "Aggregated value captures statistics about a distribution."
                     ],
                     "type": "string"
-                },
-                "standardUnits": {
-                    "description": "System defined Units, see above enum.",
-                    "enum": [
-                        "BYTES",
-                        "BYTES_PER_SEC",
-                        "MILLISECONDS",
-                        "MICROSECONDS",
-                        "NANOSECONDS",
-                        "TIMESTAMP_MSEC",
-                        "TIMESTAMP_USEC",
-                        "TIMESTAMP_NSEC"
-                    ],
-                    "enumDescriptions": [
-                        "Counter returns a value in bytes.",
-                        "Counter returns a value in bytes per second.",
-                        "Counter returns a value in milliseconds.",
-                        "Counter returns a value in microseconds.",
-                        "Counter returns a value in nanoseconds.",
-                        "Counter returns a timestamp in milliseconds.",
-                        "Counter returns a timestamp in microseconds.",
-                        "Counter returns a timestamp in nanoseconds."
-                    ],
+                }
+            },
+            "type": "object"
+        },
+        "ListJobMessagesResponse": {
+            "description": "Response to a request to list job messages.",
+            "id": "ListJobMessagesResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The token to obtain the next page of results if there are more.",
                     "type": "string"
+                },
+                "autoscalingEvents": {
+                    "description": "Autoscaling events in ascending timestamp order.",
+                    "items": {
+                        "$ref": "AutoscalingEvent"
+                    },
+                    "type": "array"
+                },
+                "jobMessages": {
+                    "description": "Messages in ascending timestamp order.",
+                    "items": {
+                        "$ref": "JobMessage"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -4558,21 +3056,6 @@
             },
             "type": "object"
         },
-        "StateFamilyConfig": {
-            "description": "State family configuration.",
-            "id": "StateFamilyConfig",
-            "properties": {
-                "stateFamily": {
-                    "description": "The state family value.",
-                    "type": "string"
-                },
-                "isRead": {
-                    "description": "If true, this family corresponds to a read operation.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
         "IntegerList": {
             "description": "A metric value representing a list of integers.",
             "id": "IntegerList",
@@ -4587,6 +3070,21 @@
             },
             "type": "object"
         },
+        "StateFamilyConfig": {
+            "description": "State family configuration.",
+            "id": "StateFamilyConfig",
+            "properties": {
+                "isRead": {
+                    "description": "If true, this family corresponds to a read operation.",
+                    "type": "boolean"
+                },
+                "stateFamily": {
+                    "description": "The state family value.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ResourceUtilizationReportResponse": {
             "description": "Service-side response to WorkerMessage reporting resource utilization.",
             "id": "ResourceUtilizationReportResponse",
@@ -4597,13 +3095,6 @@
             "description": "The response to a SourceSplitRequest.",
             "id": "SourceSplitResponse",
             "properties": {
-                "bundles": {
-                    "description": "If outcome is SPLITTING_HAPPENED, then this is a list of bundles\ninto which the source was split. Otherwise this field is ignored.\nThis list can be empty, which means the source represents an empty input.",
-                    "items": {
-                        "$ref": "DerivedSource"
-                    },
-                    "type": "array"
-                },
                 "shards": {
                     "description": "DEPRECATED in favor of bundles.",
                     "items": {
@@ -4624,6 +3115,13 @@
                         "Splitting produced a list of bundles."
                     ],
                     "type": "string"
+                },
+                "bundles": {
+                    "description": "If outcome is SPLITTING_HAPPENED, then this is a list of bundles\ninto which the source was split. Otherwise this field is ignored.\nThis list can be empty, which means the source represents an empty input.",
+                    "items": {
+                        "$ref": "DerivedSource"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -4643,30 +3141,30 @@
                     "description": "User-provided name of this operation.",
                     "type": "string"
                 },
-                "parDo": {
-                    "$ref": "ParDoInstruction",
-                    "description": "Additional information for ParDo instructions."
-                },
                 "read": {
                     "$ref": "ReadInstruction",
                     "description": "Additional information for Read instructions."
                 },
-                "flatten": {
-                    "$ref": "FlattenInstruction",
-                    "description": "Additional information for Flatten instructions."
+                "parDo": {
+                    "$ref": "ParDoInstruction",
+                    "description": "Additional information for ParDo instructions."
                 },
                 "originalName": {
                     "description": "System-defined name for the operation in the original workflow graph.",
                     "type": "string"
                 },
-                "systemName": {
-                    "description": "System-defined name of this operation.\nUnique across the workflow.",
-                    "type": "string"
+                "flatten": {
+                    "$ref": "FlattenInstruction",
+                    "description": "Additional information for Flatten instructions."
                 },
                 "write": {
                     "$ref": "WriteInstruction",
                     "description": "Additional information for Write instructions."
                 },
+                "systemName": {
+                    "description": "System-defined name of this operation.\nUnique across the workflow.",
+                    "type": "string"
+                },
                 "partialGroupByKey": {
                     "$ref": "PartialGroupByKeyInstruction",
                     "description": "Additional information for PartialGroupByKey instructions."
@@ -4712,18 +3210,6 @@
             "description": "An instruction that does a ParDo operation.\nTakes one main input and zero or more side inputs, and produces\nzero or more outputs.\nRuns user code.",
             "id": "ParDoInstruction",
             "properties": {
-                "numOutputs": {
-                    "description": "The number of outputs.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "sideInputs": {
-                    "description": "Zero or more side inputs.",
-                    "items": {
-                        "$ref": "SideInputInfo"
-                    },
-                    "type": "array"
-                },
                 "multiOutputInfos": {
                     "description": "Information about each of the outputs, if user_fn is a  MultiDoFn.",
                     "items": {
@@ -4742,6 +3228,18 @@
                 "input": {
                     "$ref": "InstructionInput",
                     "description": "The input."
+                },
+                "numOutputs": {
+                    "description": "The number of outputs.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "sideInputs": {
+                    "description": "Zero or more side inputs.",
+                    "items": {
+                        "$ref": "SideInputInfo"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -4761,10 +3259,6 @@
             "description": "Identifies a counter within a per-job namespace. Counters whose structured\nnames are the same get merged into a single value for the job.",
             "id": "CounterStructuredName",
             "properties": {
-                "componentStepName": {
-                    "description": "Name of the optimized step being executed by the workers.",
-                    "type": "string"
-                },
                 "portion": {
                     "description": "Portion of this counter, either key or value.",
                     "enum": [
@@ -4799,6 +3293,14 @@
                     "$ref": "SideInputId",
                     "description": "ID of a side input being read from/written to. Side inputs are identified\nby a pair of (reader, input_index). The reader is usually equal to the\noriginal name, but it may be different, if a ParDo emits it's Iterator /\nMap side input object."
                 },
+                "executionStepName": {
+                    "description": "Name of the stage. An execution step contains multiple component steps.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Counter name. Not necessarily globally-unique, but unique within the\ncontext of the other fields.\nRequired.",
+                    "type": "string"
+                },
                 "origin": {
                     "description": "One of the standard Origins defined above.",
                     "enum": [
@@ -4811,12 +3313,8 @@
                     ],
                     "type": "string"
                 },
-                "executionStepName": {
-                    "description": "Name of the stage. An execution step contains multiple component steps.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Counter name. Not necessarily globally-unique, but unique within the\ncontext of the other fields.\nRequired.",
+                "componentStepName": {
+                    "description": "Name of the optimized step being executed by the workers.",
                     "type": "string"
                 }
             },
@@ -4826,6 +3324,23 @@
             "description": "Describes the state of a metric.",
             "id": "MetricUpdate",
             "properties": {
+                "updateTime": {
+                    "description": "Timestamp associated with the metric value. Optional when workers are\nreporting work progress; it will be filled in responses from the\nmetrics API.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "name": {
+                    "$ref": "MetricStructuredName",
+                    "description": "Name of the metric."
+                },
+                "distribution": {
+                    "description": "A struct value describing properties of a distribution of numeric values.",
+                    "type": "any"
+                },
+                "set": {
+                    "description": "Worker-computed aggregate value for the \"Set\" aggregation kind.  The only\npossible value type is a list of Values whose type can be Long, Double,\nor String, according to the metric's type.  All Values in the list must\nbe of the same type.",
+                    "type": "any"
+                },
                 "internal": {
                     "description": "Worker-computed aggregate value for internal use by the Dataflow\nservice.",
                     "type": "any"
@@ -4849,23 +3364,6 @@
                 "meanSum": {
                     "description": "Worker-computed aggregate value for the \"Mean\" aggregation kind.\nThis holds the sum of the aggregated values and is used in combination\nwith mean_count below to obtain the actual mean aggregate value.\nThe only possible value types are Long and Double.",
                     "type": "any"
-                },
-                "updateTime": {
-                    "description": "Timestamp associated with the metric value. Optional when workers are\nreporting work progress; it will be filled in responses from the\nmetrics API.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "name": {
-                    "$ref": "MetricStructuredName",
-                    "description": "Name of the metric."
-                },
-                "distribution": {
-                    "description": "A struct value describing properties of a distribution of numeric values.",
-                    "type": "any"
-                },
-                "set": {
-                    "description": "Worker-computed aggregate value for the \"Set\" aggregation kind.  The only\npossible value type is a list of Values whose type can be Long, Double,\nor String, according to the metric's type.  All Values in the list must\nbe of the same type.",
-                    "type": "any"
                 }
             },
             "type": "object"
@@ -4914,10 +3412,6 @@
             "description": "Metadata describing a template.",
             "id": "TemplateMetadata",
             "properties": {
-                "description": {
-                    "description": "Optional. A description of the template.",
-                    "type": "string"
-                },
                 "parameters": {
                     "description": "The parameters for the template.",
                     "items": {
@@ -4928,6 +3422,10 @@
                 "name": {
                     "description": "Required. The name of the template.",
                     "type": "string"
+                },
+                "description": {
+                    "description": "Optional. A description of the template.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -4936,6 +3434,18 @@
             "description": "WorkerMessage provides information to the backend about a worker.",
             "id": "WorkerMessage",
             "properties": {
+                "workerHealthReport": {
+                    "$ref": "WorkerHealthReport",
+                    "description": "The health of a worker."
+                },
+                "workerMessageCode": {
+                    "$ref": "WorkerMessageCode",
+                    "description": "A worker message code."
+                },
+                "workerMetrics": {
+                    "$ref": "ResourceUtilizationReport",
+                    "description": "Resource metrics reported by workers."
+                },
                 "labels": {
                     "additionalProperties": {
                         "type": "string"
@@ -4951,18 +3461,6 @@
                 "workerShutdownNotice": {
                     "$ref": "WorkerShutdownNotice",
                     "description": "Shutdown notice by workers."
-                },
-                "workerHealthReport": {
-                    "$ref": "WorkerHealthReport",
-                    "description": "The health of a worker."
-                },
-                "workerMessageCode": {
-                    "$ref": "WorkerMessageCode",
-                    "description": "A worker message code."
-                },
-                "workerMetrics": {
-                    "$ref": "ResourceUtilizationReport",
-                    "description": "Resource metrics reported by workers."
                 }
             },
             "type": "object"
@@ -5011,35 +3509,14 @@
             "description": "An update to a Counter sent from a worker.",
             "id": "CounterUpdate",
             "properties": {
-                "integer": {
-                    "$ref": "SplitInt64",
-                    "description": "Integer value for Sum, Max, Min."
-                },
-                "integerList": {
-                    "$ref": "IntegerList",
-                    "description": "List of integers, for Set."
-                },
-                "structuredNameAndMetadata": {
-                    "$ref": "CounterStructuredNameAndMetadata",
-                    "description": "Counter structured name and metadata."
-                },
-                "floatingPoint": {
-                    "description": "Floating point value for Sum, Max, Min.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "integerMean": {
-                    "$ref": "IntegerMean",
-                    "description": "Integer mean aggregation value for Mean."
+                "internal": {
+                    "description": "Value for internally-defined counters used by the Dataflow service.",
+                    "type": "any"
                 },
                 "cumulative": {
                     "description": "True if this counter is reported as the total cumulative aggregate\nvalue accumulated since the worker started working on this WorkItem.\nBy default this is false, indicating that this counter is reported\nas a delta.",
                     "type": "boolean"
                 },
-                "internal": {
-                    "description": "Value for internally-defined counters used by the Dataflow service.",
-                    "type": "any"
-                },
                 "floatingPointMean": {
                     "$ref": "FloatingPointMean",
                     "description": "Floating point mean aggregation value for Mean."
@@ -5052,14 +3529,14 @@
                     "$ref": "NameAndKind",
                     "description": "Counter name and aggregation type."
                 },
-                "distribution": {
-                    "$ref": "DistributionUpdate",
-                    "description": "Distribution data"
-                },
                 "stringList": {
                     "$ref": "StringList",
                     "description": "List of strings, for Set."
                 },
+                "distribution": {
+                    "$ref": "DistributionUpdate",
+                    "description": "Distribution data"
+                },
                 "shortId": {
                     "description": "The service-generated short identifier for this counter.\nThe short_id -> (name, metadata) mapping is constant for the lifetime of\na job.",
                     "format": "int64",
@@ -5068,6 +3545,1529 @@
                 "floatingPointList": {
                     "$ref": "FloatingPointList",
                     "description": "List of floating point numbers, for Set."
+                },
+                "integer": {
+                    "$ref": "SplitInt64",
+                    "description": "Integer value for Sum, Max, Min."
+                },
+                "structuredNameAndMetadata": {
+                    "$ref": "CounterStructuredNameAndMetadata",
+                    "description": "Counter structured name and metadata."
+                },
+                "integerList": {
+                    "$ref": "IntegerList",
+                    "description": "List of integers, for Set."
+                },
+                "integerMean": {
+                    "$ref": "IntegerMean",
+                    "description": "Integer mean aggregation value for Mean."
+                },
+                "floatingPoint": {
+                    "description": "Floating point value for Sum, Max, Min.",
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "SourceMetadata": {
+            "description": "Metadata about a Source useful for automatically optimizing\nand tuning the pipeline, etc.",
+            "id": "SourceMetadata",
+            "properties": {
+                "estimatedSizeBytes": {
+                    "description": "An estimate of the total size (in bytes) of the data that would be\nread from this source.  This estimate is in terms of external storage\nsize, before any decompression or other processing done by the reader.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "infinite": {
+                    "description": "Specifies that the size of this source is known to be infinite\n(this is a streaming source).",
+                    "type": "boolean"
+                },
+                "producesSortedKeys": {
+                    "description": "Whether this source is known to produce key/value pairs with\nthe (encoded) keys in lexicographically sorted order.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "DistributionUpdate": {
+            "description": "A metric value representing a distribution.",
+            "id": "DistributionUpdate",
+            "properties": {
+                "histogram": {
+                    "$ref": "Histogram",
+                    "description": "(Optional) Histogram of value counts for the distribution."
+                },
+                "max": {
+                    "$ref": "SplitInt64",
+                    "description": "The maximum value present in the distribution."
+                },
+                "count": {
+                    "$ref": "SplitInt64",
+                    "description": "The count of the number of elements present in the distribution."
+                },
+                "min": {
+                    "$ref": "SplitInt64",
+                    "description": "The minimum value present in the distribution."
+                },
+                "sumOfSquares": {
+                    "description": "Use a double since the sum of squares is likely to overflow int64.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "sum": {
+                    "$ref": "SplitInt64",
+                    "description": "Use an int64 since we'd prefer the added precision. If overflow is a common\nproblem we can detect it and use an additional int64 or a double."
+                }
+            },
+            "type": "object"
+        },
+        "SourceFork": {
+            "description": "DEPRECATED in favor of DynamicSourceSplit.",
+            "id": "SourceFork",
+            "properties": {
+                "primarySource": {
+                    "$ref": "DerivedSource",
+                    "description": "DEPRECATED"
+                },
+                "residual": {
+                    "$ref": "SourceSplitShard",
+                    "description": "DEPRECATED"
+                },
+                "residualSource": {
+                    "$ref": "DerivedSource",
+                    "description": "DEPRECATED"
+                },
+                "primary": {
+                    "$ref": "SourceSplitShard",
+                    "description": "DEPRECATED"
+                }
+            },
+            "type": "object"
+        },
+        "WorkerHealthReportResponse": {
+            "description": "WorkerHealthReportResponse contains information returned to the worker\nin response to a health ping.",
+            "id": "WorkerHealthReportResponse",
+            "properties": {
+                "reportInterval": {
+                    "description": "A positive value indicates the worker should change its reporting interval\nto the specified value.\n\nThe default value of zero means no change in report rate is requested by\nthe server.",
+                    "format": "google-duration",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "WorkItemStatus": {
+            "description": "Conveys a worker's progress through the work described by a WorkItem.",
+            "id": "WorkItemStatus",
+            "properties": {
+                "totalThrottlerWaitTimeSeconds": {
+                    "description": "Total time the worker spent being throttled by external systems.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "counterUpdates": {
+                    "description": "Worker output counters for this WorkItem.",
+                    "items": {
+                        "$ref": "CounterUpdate"
+                    },
+                    "type": "array"
+                },
+                "workItemId": {
+                    "description": "Identifies the WorkItem.",
+                    "type": "string"
+                },
+                "metricUpdates": {
+                    "description": "DEPRECATED in favor of counter_updates.",
+                    "items": {
+                        "$ref": "MetricUpdate"
+                    },
+                    "type": "array"
+                },
+                "errors": {
+                    "description": "Specifies errors which occurred during processing.  If errors are\nprovided, and completed = true, then the WorkItem is considered\nto have failed.",
+                    "items": {
+                        "$ref": "Status"
+                    },
+                    "type": "array"
+                },
+                "dynamicSourceSplit": {
+                    "$ref": "DynamicSourceSplit",
+                    "description": "See documentation of stop_position."
+                },
+                "sourceOperationResponse": {
+                    "$ref": "SourceOperationResponse",
+                    "description": "If the work item represented a SourceOperationRequest, and the work\nis completed, contains the result of the operation."
+                },
+                "progress": {
+                    "$ref": "ApproximateProgress",
+                    "description": "DEPRECATED in favor of reported_progress."
+                },
+                "requestedLeaseDuration": {
+                    "description": "Amount of time the worker requests for its lease.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "reportIndex": {
+                    "description": "The report index.  When a WorkItem is leased, the lease will\ncontain an initial report index.  When a WorkItem's status is\nreported to the system, the report should be sent with\nthat report index, and the response will contain the index the\nworker should use for the next report.  Reports received with\nunexpected index values will be rejected by the service.\n\nIn order to preserve idempotency, the worker should not alter the\ncontents of a report, even if the worker must submit the same\nreport multiple times before getting back a response.  The worker\nshould not submit a subsequent report until the response for the\nprevious report had been received from the service.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "stopPosition": {
+                    "$ref": "Position",
+                    "description": "A worker may split an active map task in two parts, \"primary\" and\n\"residual\", continuing to process the primary part and returning the\nresidual part into the pool of available work.\nThis event is called a \"dynamic split\" and is critical to the dynamic\nwork rebalancing feature. The two obtained sub-tasks are called\n\"parts\" of the split.\nThe parts, if concatenated, must represent the same input as would\nbe read by the current task if the split did not happen.\nThe exact way in which the original task is decomposed into the two\nparts is specified either as a position demarcating them\n(stop_position), or explicitly as two DerivedSources, if this\ntask consumes a user-defined source type (dynamic_source_split).\n\nThe \"current\" task is adjusted as a result of the split: after a task\nwith range [A, B) sends a stop_position update at C, its range is\nconsidered to be [A, C), e.g.:\n* Progress should be interpreted relative to the new range, e.g.\n  \"75% completed\" means \"75% of [A, C) completed\"\n* The worker should interpret proposed_stop_position relative to the\n  new range, e.g. \"split at 68%\" should be interpreted as\n  \"split at 68% of [A, C)\".\n* If the worker chooses to split again using stop_position, only\n  stop_positions in [A, C) will be accepted.\n* Etc.\ndynamic_source_split has similar semantics: e.g., if a task with\nsource S splits using dynamic_source_split into {P, R}\n(where P and R must be together equivalent to S), then subsequent\nprogress and proposed_stop_position should be interpreted relative\nto P, and in a potential subsequent dynamic_source_split into {P', R'},\nP' and R' must be together equivalent to P, etc."
+                },
+                "completed": {
+                    "description": "True if the WorkItem was completed (successfully or unsuccessfully).",
+                    "type": "boolean"
+                },
+                "reportedProgress": {
+                    "$ref": "ApproximateReportedProgress",
+                    "description": "The worker's progress through this WorkItem."
+                },
+                "sourceFork": {
+                    "$ref": "SourceFork",
+                    "description": "DEPRECATED in favor of dynamic_source_split."
+                }
+            },
+            "type": "object"
+        },
+        "ComponentSource": {
+            "description": "Description of an interstitial value between transforms in an execution\nstage.",
+            "id": "ComponentSource",
+            "properties": {
+                "name": {
+                    "description": "Dataflow service generated name for this source.",
+                    "type": "string"
+                },
+                "userName": {
+                    "description": "Human-readable name for this transform; may be user or system generated.",
+                    "type": "string"
+                },
+                "originalTransformOrCollection": {
+                    "description": "User name for the original user transform or collection with which this\nsource is most closely associated.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Histogram": {
+            "description": "Histogram of value counts for a distribution.\n\nBuckets have an inclusive lower bound and exclusive upper bound and use\n\"1,2,5 bucketing\": The first bucket range is from [0,1) and all subsequent\nbucket boundaries are powers of ten multiplied by 1, 2, or 5. Thus, bucket\nboundaries are 0, 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, ...\nNegative values are not supported.",
+            "id": "Histogram",
+            "properties": {
+                "firstBucketOffset": {
+                    "description": "Starting index of first stored bucket. The non-inclusive upper-bound of\nthe ith bucket is given by:\n  pow(10,(i-first_bucket_offset)/3) * (1,2,5)[(i-first_bucket_offset)%3]",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "bucketCounts": {
+                    "description": "Counts of values in each bucket. For efficiency, prefix and trailing\nbuckets with count = 0 are elided. Buckets can store the full range of\nvalues of an unsigned long, with ULLONG_MAX falling into the 59th bucket\nwith range [1e19, 2e19).",
+                    "items": {
+                        "format": "int64",
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "WorkItemServiceState": {
+            "description": "The Dataflow service's idea of the current state of a WorkItem\nbeing processed by a worker.",
+            "id": "WorkItemServiceState",
+            "properties": {
+                "nextReportIndex": {
+                    "description": "The index value to use for the next report sent by the worker.\nNote: If the report call fails for whatever reason, the worker should\nreuse this index for subsequent report attempts.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "suggestedStopPoint": {
+                    "$ref": "ApproximateProgress",
+                    "description": "DEPRECATED in favor of split_request."
+                },
+                "splitRequest": {
+                    "$ref": "ApproximateSplitRequest",
+                    "description": "The progress point in the WorkItem where the Dataflow service\nsuggests that the worker truncate the task."
+                },
+                "suggestedStopPosition": {
+                    "$ref": "Position",
+                    "description": "Obsolete, always empty."
+                },
+                "reportStatusInterval": {
+                    "description": "New recommended reporting interval.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "harnessData": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "Other data returned by the service, specific to the particular\nworker harness.",
+                    "type": "object"
+                },
+                "leaseExpireTime": {
+                    "description": "Time at which the current lease will expire.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "metricShortId": {
+                    "description": "The short ids that workers should use in subsequent metric updates.\nWorkers should strive to use short ids whenever possible, but it is ok\nto request the short_id again if a worker lost track of it\n(e.g. if the worker is recovering from a crash).\nNOTE: it is possible that the response may have short ids for a subset\nof the metrics.",
+                    "items": {
+                        "$ref": "MetricShortId"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "MetricStructuredName": {
+            "description": "Identifies a metric, by describing the source which generated the\nmetric.",
+            "id": "MetricStructuredName",
+            "properties": {
+                "context": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Zero or more labeled fields which identify the part of the job this\nmetric is associated with, such as the name of a step or collection.\n\nFor example, built-in counters associated with steps will have\ncontext['step'] = <step-name>. Counters associated with PCollections\nin the SDK will have context['pcollection'] = <pcollection-name>.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Worker-defined metric name.",
+                    "type": "string"
+                },
+                "origin": {
+                    "description": "Origin (namespace) of metric name. May be blank for user-define metrics;\nwill be \"dataflow\" for metrics defined by the Dataflow service or SDK.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SeqMapTaskOutputInfo": {
+            "description": "Information about an output of a SeqMapTask.",
+            "id": "SeqMapTaskOutputInfo",
+            "properties": {
+                "sink": {
+                    "$ref": "Sink",
+                    "description": "The sink to write the output value to."
+                },
+                "tag": {
+                    "description": "The id of the TupleTag the user code will tag the output value by.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "JobExecutionStageInfo": {
+            "description": "Contains information about how a particular\ngoogle.dataflow.v1beta3.Step will be executed.",
+            "id": "JobExecutionStageInfo",
+            "properties": {
+                "stepName": {
+                    "description": "The steps associated with the execution stage.\nNote that stages may have several steps, and that a given step\nmight be run by more than one stage.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "KeyRangeLocation": {
+            "description": "Location information for a specific key-range of a sharded computation.\nCurrently we only support UTF-8 character splits to simplify encoding into\nJSON.",
+            "id": "KeyRangeLocation",
+            "properties": {
+                "end": {
+                    "description": "The end (exclusive) of the key range.",
+                    "type": "string"
+                },
+                "deprecatedPersistentDirectory": {
+                    "description": "DEPRECATED. The location of the persistent state for this range, as a\npersistent directory in the worker local filesystem.",
+                    "type": "string"
+                },
+                "deliveryEndpoint": {
+                    "description": "The physical location of this range assignment to be used for\nstreaming computation cross-worker message delivery.",
+                    "type": "string"
+                },
+                "dataDisk": {
+                    "description": "The name of the data disk where data for this range is stored.\nThis name is local to the Google Cloud Platform project and uniquely\nidentifies the disk within that project, for example\n\"myproject-1014-104817-4c2-harness-0-disk-1\".",
+                    "type": "string"
+                },
+                "start": {
+                    "description": "The start (inclusive) of the key range.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SourceGetMetadataRequest": {
+            "description": "A request to compute the SourceMetadata of a Source.",
+            "id": "SourceGetMetadataRequest",
+            "properties": {
+                "source": {
+                    "$ref": "Source",
+                    "description": "Specification of the source whose metadata should be computed."
+                }
+            },
+            "type": "object"
+        },
+        "SeqMapTask": {
+            "description": "Describes a particular function to invoke.",
+            "id": "SeqMapTask",
+            "properties": {
+                "userFn": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "The user function to invoke.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "The user-provided name of the SeqDo operation.",
+                    "type": "string"
+                },
+                "outputInfos": {
+                    "description": "Information about each of the outputs.",
+                    "items": {
+                        "$ref": "SeqMapTaskOutputInfo"
+                    },
+                    "type": "array"
+                },
+                "inputs": {
+                    "description": "Information about each of the inputs.",
+                    "items": {
+                        "$ref": "SideInputInfo"
+                    },
+                    "type": "array"
+                },
+                "stageName": {
+                    "description": "System-defined name of the stage containing the SeqDo operation.\nUnique across the workflow.",
+                    "type": "string"
+                },
+                "systemName": {
+                    "description": "System-defined name of the SeqDo operation.\nUnique across the workflow.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "NameAndKind": {
+            "description": "Basic metadata about a counter.",
+            "id": "NameAndKind",
+            "properties": {
+                "kind": {
+                    "description": "Counter aggregation kind.",
+                    "enum": [
+                        "INVALID",
+                        "SUM",
+                        "MAX",
+                        "MIN",
+                        "MEAN",
+                        "OR",
+                        "AND",
+                        "SET",
+                        "DISTRIBUTION"
+                    ],
+                    "enumDescriptions": [
+                        "Counter aggregation kind was not set.",
+                        "Aggregated value is the sum of all contributed values.",
+                        "Aggregated value is the max of all contributed values.",
+                        "Aggregated value is the min of all contributed values.",
+                        "Aggregated value is the mean of all contributed values.",
+                        "Aggregated value represents the logical 'or' of all contributed values.",
+                        "Aggregated value represents the logical 'and' of all contributed values.",
+                        "Aggregated value is a set of unique contributed values.",
+                        "Aggregated value captures statistics about a distribution."
+                    ],
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Name of the counter.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "WorkerMessageCode": {
+            "description": "A message code is used to report status and error messages to the service.\nThe message codes are intended to be machine readable. The service will\ntake care of translating these into user understandable messages if\nnecessary.\n\nExample use cases:\n  1. Worker processes reporting successful startup.\n  2. Worker processes reporting specific errors (e.g. package staging\n     failure).",
+            "id": "WorkerMessageCode",
+            "properties": {
+                "parameters": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "Parameters contains specific information about the code.\n\nThis is a struct to allow parameters of different types.\n\nExamples:\n 1. For a \"HARNESS_STARTED\" message parameters might provide the name\n    of the worker and additional data like timing information.\n 2. For a \"GCS_DOWNLOAD_ERROR\" parameters might contain fields listing\n    the GCS objects being downloaded and fields containing errors.\n\nIn general complex data structures should be avoided. If a worker\nneeds to send a specific and complicated data structure then please\nconsider defining a new proto and adding it to the data oneof in\nWorkerMessageResponse.\n\nConventions:\n Parameters should only be used for information that isn't typically passed\n as a label.\n hostname and other worker identifiers should almost always be passed\n as labels since they will be included on most messages.",
+                    "type": "object"
+                },
+                "code": {
+                    "description": "The code is a string intended for consumption by a machine that identifies\nthe type of message being sent.\nExamples:\n 1. \"HARNESS_STARTED\" might be used to indicate the worker harness has\n     started.\n 2. \"GCS_DOWNLOAD_ERROR\" might be used to indicate an error downloading\n    a GCS file as part of the boot process of one of the worker containers.\n\nThis is a string and not an enum to make it easy to add new codes without\nwaiting for an API change.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CustomSourceLocation": {
+            "description": "Identifies the location of a custom souce.",
+            "id": "CustomSourceLocation",
+            "properties": {
+                "stateful": {
+                    "description": "Whether this source is stateful.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "MapTask": {
+            "description": "MapTask consists of an ordered set of instructions, each of which\ndescribes one particular low-level operation for the worker to\nperform in order to accomplish the MapTask's WorkItem.\n\nEach instruction must appear in the list before any instructions which\ndepends on its output.",
+            "id": "MapTask",
+            "properties": {
+                "instructions": {
+                    "description": "The instructions in the MapTask.",
+                    "items": {
+                        "$ref": "ParallelInstruction"
+                    },
+                    "type": "array"
+                },
+                "stageName": {
+                    "description": "System-defined name of the stage containing this MapTask.\nUnique across the workflow.",
+                    "type": "string"
+                },
+                "systemName": {
+                    "description": "System-defined name of this MapTask.\nUnique across the workflow.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "FloatingPointMean": {
+            "description": "A representation of a floating point mean metric contribution.",
+            "id": "FloatingPointMean",
+            "properties": {
+                "sum": {
+                    "description": "The sum of all values being aggregated.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "count": {
+                    "$ref": "SplitInt64",
+                    "description": "The number of values being aggregated."
+                }
+            },
+            "type": "object"
+        },
+        "ReportWorkItemStatusResponse": {
+            "description": "Response from a request to report the status of WorkItems.",
+            "id": "ReportWorkItemStatusResponse",
+            "properties": {
+                "workItemServiceStates": {
+                    "description": "A set of messages indicating the service-side state for each\nWorkItem whose status was reported, in the same order as the\nWorkItemStatus messages in the ReportWorkItemStatusRequest which\nresulting in this response.",
+                    "items": {
+                        "$ref": "WorkItemServiceState"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "InstructionOutput": {
+            "description": "An output of an instruction.",
+            "id": "InstructionOutput",
+            "properties": {
+                "name": {
+                    "description": "The user-provided name of this output.",
+                    "type": "string"
+                },
+                "originalName": {
+                    "description": "System-defined name for this output in the original workflow graph.\nOutputs that do not contribute to an original instruction do not set this.",
+                    "type": "string"
+                },
+                "systemName": {
+                    "description": "System-defined name of this output.\nUnique across the workflow.",
+                    "type": "string"
+                },
+                "onlyCountKeyBytes": {
+                    "description": "For system-generated byte and mean byte metrics, certain instructions\nshould only report the key size.",
+                    "type": "boolean"
+                },
+                "onlyCountValueBytes": {
+                    "description": "For system-generated byte and mean byte metrics, certain instructions\nshould only report the value size.",
+                    "type": "boolean"
+                },
+                "codec": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "The codec to use to encode data being written via this output.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "CreateJobFromTemplateRequest": {
+            "description": "A request to create a Cloud Dataflow job from a template.",
+            "id": "CreateJobFromTemplateRequest",
+            "properties": {
+                "environment": {
+                    "$ref": "RuntimeEnvironment",
+                    "description": "The runtime environment for the job."
+                },
+                "location": {
+                    "description": "The location to which to direct the request.",
+                    "type": "string"
+                },
+                "parameters": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "The runtime parameters to pass to the job.",
+                    "type": "object"
+                },
+                "jobName": {
+                    "description": "Required. The job name to use for the created job.",
+                    "type": "string"
+                },
+                "gcsPath": {
+                    "description": "Required. A Cloud Storage path to the template from which to\ncreate the job.\nMust be a valid Cloud Storage URL, beginning with `gs://`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "IntegerMean": {
+            "description": "A representation of an integer mean metric contribution.",
+            "id": "IntegerMean",
+            "properties": {
+                "sum": {
+                    "$ref": "SplitInt64",
+                    "description": "The sum of all values being aggregated."
+                },
+                "count": {
+                    "$ref": "SplitInt64",
+                    "description": "The number of values being aggregated."
+                }
+            },
+            "type": "object"
+        },
+        "ListJobsResponse": {
+            "description": "Response to a request to list Cloud Dataflow jobs.  This may be a partial\nresponse, depending on the page size in the ListJobsRequest.",
+            "id": "ListJobsResponse",
+            "properties": {
+                "failedLocation": {
+                    "description": "Zero or more messages describing locations that failed to respond.",
+                    "items": {
+                        "$ref": "FailedLocation"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Set if there may be more results than fit in this response.",
+                    "type": "string"
+                },
+                "jobs": {
+                    "description": "A subset of the requested job information.",
+                    "items": {
+                        "$ref": "Job"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ComputationTopology": {
+            "description": "All configuration data for a particular Computation.",
+            "id": "ComputationTopology",
+            "properties": {
+                "stateFamilies": {
+                    "description": "The state family values.",
+                    "items": {
+                        "$ref": "StateFamilyConfig"
+                    },
+                    "type": "array"
+                },
+                "outputs": {
+                    "description": "The outputs from the computation.",
+                    "items": {
+                        "$ref": "StreamLocation"
+                    },
+                    "type": "array"
+                },
+                "systemStageName": {
+                    "description": "The system stage name.",
+                    "type": "string"
+                },
+                "computationId": {
+                    "description": "The ID of the computation.",
+                    "type": "string"
+                },
+                "inputs": {
+                    "description": "The inputs to the computation.",
+                    "items": {
+                        "$ref": "StreamLocation"
+                    },
+                    "type": "array"
+                },
+                "keyRanges": {
+                    "description": "The key ranges processed by the computation.",
+                    "items": {
+                        "$ref": "KeyRangeLocation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "RuntimeEnvironment": {
+            "description": "The environment values to set at runtime.",
+            "id": "RuntimeEnvironment",
+            "properties": {
+                "maxWorkers": {
+                    "description": "The maximum number of Google Compute Engine instances to be made\navailable to your pipeline during execution, from 1 to 1000.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "serviceAccountEmail": {
+                    "description": "The email address of the service account to run the job as.",
+                    "type": "string"
+                },
+                "tempLocation": {
+                    "description": "The Cloud Storage path to use for temporary files.\nMust be a valid Cloud Storage URL, beginning with `gs://`.",
+                    "type": "string"
+                },
+                "bypassTempDirValidation": {
+                    "description": "Whether to bypass the safety checks for the job's temporary directory.\nUse with caution.",
+                    "type": "boolean"
+                },
+                "machineType": {
+                    "description": "The machine type to use for the job. Defaults to the value from the\ntemplate if not specified.",
+                    "type": "string"
+                },
+                "zone": {
+                    "description": "The Compute Engine [availability\nzone](https://cloud.google.com/compute/docs/regions-zones/regions-zones)\nfor launching worker instances to run your pipeline.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "StreamingSideInputLocation": {
+            "description": "Identifies the location of a streaming side input.",
+            "id": "StreamingSideInputLocation",
+            "properties": {
+                "stateFamily": {
+                    "description": "Identifies the state family where this side input is stored.",
+                    "type": "string"
+                },
+                "tag": {
+                    "description": "Identifies the particular side input within the streaming Dataflow job.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MountedDataDisk": {
+            "description": "Describes mounted data disk.",
+            "id": "MountedDataDisk",
+            "properties": {
+                "dataDisk": {
+                    "description": "The name of the data disk.\nThis name is local to the Google Cloud Platform project and uniquely\nidentifies the disk within that project, for example\n\"myproject-1014-104817-4c2-harness-0-disk-1\".",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LaunchTemplateResponse": {
+            "description": "Response to the request to launch a template.",
+            "id": "LaunchTemplateResponse",
+            "properties": {
+                "job": {
+                    "$ref": "Job",
+                    "description": "The job that was launched, if the request was not a dry run and\nthe job was successfully launched."
+                }
+            },
+            "type": "object"
+        },
+        "Job": {
+            "description": "Defines a job to be run by the Cloud Dataflow service.",
+            "id": "Job",
+            "properties": {
+                "steps": {
+                    "description": "The top-level steps that constitute the entire job.",
+                    "items": {
+                        "$ref": "Step"
+                    },
+                    "type": "array"
+                },
+                "replacedByJobId": {
+                    "description": "If another job is an update of this job (and thus, this job is in\n`JOB_STATE_UPDATED`), this field contains the ID of that job.",
+                    "type": "string"
+                },
+                "executionInfo": {
+                    "$ref": "JobExecutionInfo",
+                    "description": "Deprecated."
+                },
+                "id": {
+                    "description": "The unique ID of this job.\n\nThis field is set by the Cloud Dataflow service when the Job is\ncreated, and is immutable for the life of the job.",
+                    "type": "string"
+                },
+                "currentState": {
+                    "description": "The current state of the job.\n\nJobs are created in the `JOB_STATE_STOPPED` state unless otherwise\nspecified.\n\nA job in the `JOB_STATE_RUNNING` state may asynchronously enter a\nterminal state. After a job has reached a terminal state, no\nfurther state updates may be made.\n\nThis field may be mutated by the Cloud Dataflow service;\ncallers cannot mutate it.",
+                    "enum": [
+                        "JOB_STATE_UNKNOWN",
+                        "JOB_STATE_STOPPED",
+                        "JOB_STATE_RUNNING",
+                        "JOB_STATE_DONE",
+                        "JOB_STATE_FAILED",
+                        "JOB_STATE_CANCELLED",
+                        "JOB_STATE_UPDATED",
+                        "JOB_STATE_DRAINING",
+                        "JOB_STATE_DRAINED",
+                        "JOB_STATE_PENDING",
+                        "JOB_STATE_CANCELLING"
+                    ],
+                    "enumDescriptions": [
+                        "The job's run state isn't specified.",
+                        "`JOB_STATE_STOPPED` indicates that the job has not\nyet started to run.",
+                        "`JOB_STATE_RUNNING` indicates that the job is currently running.",
+                        "`JOB_STATE_DONE` indicates that the job has successfully completed.\nThis is a terminal job state.  This state may be set by the Cloud Dataflow\nservice, as a transition from `JOB_STATE_RUNNING`. It may also be set via a\nCloud Dataflow `UpdateJob` call, if the job has not yet reached a terminal\nstate.",
+                        "`JOB_STATE_FAILED` indicates that the job has failed.  This is a\nterminal job state.  This state may only be set by the Cloud Dataflow\nservice, and only as a transition from `JOB_STATE_RUNNING`.",
+                        "`JOB_STATE_CANCELLED` indicates that the job has been explicitly\ncancelled. This is a terminal job state. This state may only be\nset via a Cloud Dataflow `UpdateJob` call, and only if the job has not\nyet reached another terminal state.",
+                        "`JOB_STATE_UPDATED` indicates that the job was successfully updated,\nmeaning that this job was stopped and another job was started, inheriting\nstate from this one. This is a terminal job state. This state may only be\nset by the Cloud Dataflow service, and only as a transition from\n`JOB_STATE_RUNNING`.",
+                        "`JOB_STATE_DRAINING` indicates that the job is in the process of draining.\nA draining job has stopped pulling from its input sources and is processing\nany data that remains in-flight. This state may be set via a Cloud Dataflow\n`UpdateJob` call, but only as a transition from `JOB_STATE_RUNNING`. Jobs\nthat are draining may only transition to `JOB_STATE_DRAINED`,\n`JOB_STATE_CANCELLED`, or `JOB_STATE_FAILED`.",
+                        "`JOB_STATE_DRAINED` indicates that the job has been drained.\nA drained job terminated by stopping pulling from its input sources and\nprocessing any data that remained in-flight when draining was requested.\nThis state is a terminal state, may only be set by the Cloud Dataflow\nservice, and only as a transition from `JOB_STATE_DRAINING`.",
+                        "'JOB_STATE_PENDING' indicates that the job has been created but is not yet\nrunning.  Jobs that are pending may only transition to `JOB_STATE_RUNNING`,\nor `JOB_STATE_FAILED`.",
+                        "'JOB_STATE_CANCELLING' indicates that the job has been explicitly cancelled\nand is in the process of stopping.  Jobs that are cancelling may only\ntransition to 'JOB_STATE_CANCELLED' or 'JOB_STATE_FAILED'."
+                    ],
+                    "type": "string"
+                },
+                "location": {
+                    "description": "The location that contains this job.",
+                    "type": "string"
+                },
+                "currentStateTime": {
+                    "description": "The timestamp associated with the current state.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "transformNameMapping": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "The map of transform name prefixes of the job to be replaced to the\ncorresponding name prefixes of the new job.",
+                    "type": "object"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "User-defined labels for this job.\n\nThe labels map can contain no more than 64 entries.  Entries of the labels\nmap are UTF8 strings that comply with the following restrictions:\n\n* Keys must conform to regexp:  \\p{Ll}\\p{Lo}{0,62}\n* Values must conform to regexp:  [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}\n* Both keys and values are additionally constrained to be <= 128 bytes in\nsize.",
+                    "type": "object"
+                },
+                "environment": {
+                    "$ref": "Environment",
+                    "description": "The environment for the job."
+                },
+                "createTime": {
+                    "description": "The timestamp when the job was initially created. Immutable and set by the\nCloud Dataflow service.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "stageStates": {
+                    "description": "This field may be mutated by the Cloud Dataflow service;\ncallers cannot mutate it.",
+                    "items": {
+                        "$ref": "ExecutionStageState"
+                    },
+                    "type": "array"
+                },
+                "projectId": {
+                    "description": "The ID of the Cloud Platform project that the job belongs to.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The type of Cloud Dataflow job.",
+                    "enum": [
+                        "JOB_TYPE_UNKNOWN",
+                        "JOB_TYPE_BATCH",
+                        "JOB_TYPE_STREAMING"
+                    ],
+                    "enumDescriptions": [
+                        "The type of the job is unspecified, or unknown.",
+                        "A batch job with a well-defined end point: data is read, data is\nprocessed, data is written, and the job is done.",
+                        "A continuously streaming job with no end: data is read,\nprocessed, and written continuously."
+                    ],
+                    "type": "string"
+                },
+                "pipelineDescription": {
+                    "$ref": "PipelineDescription",
+                    "description": "Preliminary field: The format of this data may change at any time.\nA description of the user pipeline and stages through which it is executed.\nCreated by Cloud Dataflow service.  Only retrieved with\nJOB_VIEW_DESCRIPTION or JOB_VIEW_ALL."
+                },
+                "replaceJobId": {
+                    "description": "If this job is an update of an existing job, this field is the job ID\nof the job it replaced.\n\nWhen sending a `CreateJobRequest`, you can update a job by specifying it\nhere. The job named here is stopped, and its intermediate state is\ntransferred to this job.",
+                    "type": "string"
+                },
+                "requestedState": {
+                    "description": "The job's requested state.\n\n`UpdateJob` may be used to switch between the `JOB_STATE_STOPPED` and\n`JOB_STATE_RUNNING` states, by setting requested_state.  `UpdateJob` may\nalso be used to directly set a job's requested state to\n`JOB_STATE_CANCELLED` or `JOB_STATE_DONE`, irrevocably terminating the\njob if it has not already reached a terminal state.",
+                    "enum": [
+                        "JOB_STATE_UNKNOWN",
+                        "JOB_STATE_STOPPED",
+                        "JOB_STATE_RUNNING",
+                        "JOB_STATE_DONE",
+                        "JOB_STATE_FAILED",
+                        "JOB_STATE_CANCELLED",
+                        "JOB_STATE_UPDATED",
+                        "JOB_STATE_DRAINING",
+                        "JOB_STATE_DRAINED",
+                        "JOB_STATE_PENDING",
+                        "JOB_STATE_CANCELLING"
+                    ],
+                    "enumDescriptions": [
+                        "The job's run state isn't specified.",
+                        "`JOB_STATE_STOPPED` indicates that the job has not\nyet started to run.",
+                        "`JOB_STATE_RUNNING` indicates that the job is currently running.",
+                        "`JOB_STATE_DONE` indicates that the job has successfully completed.\nThis is a terminal job state.  This state may be set by the Cloud Dataflow\nservice, as a transition from `JOB_STATE_RUNNING`. It may also be set via a\nCloud Dataflow `UpdateJob` call, if the job has not yet reached a terminal\nstate.",
+                        "`JOB_STATE_FAILED` indicates that the job has failed.  This is a\nterminal job state.  This state may only be set by the Cloud Dataflow\nservice, and only as a transition from `JOB_STATE_RUNNING`.",
+                        "`JOB_STATE_CANCELLED` indicates that the job has been explicitly\ncancelled. This is a terminal job state. This state may only be\nset via a Cloud Dataflow `UpdateJob` call, and only if the job has not\nyet reached another terminal state.",
+                        "`JOB_STATE_UPDATED` indicates that the job was successfully updated,\nmeaning that this job was stopped and another job was started, inheriting\nstate from this one. This is a terminal job state. This state may only be\nset by the Cloud Dataflow service, and only as a transition from\n`JOB_STATE_RUNNING`.",
+                        "`JOB_STATE_DRAINING` indicates that the job is in the process of draining.\nA draining job has stopped pulling from its input sources and is processing\nany data that remains in-flight. This state may be set via a Cloud Dataflow\n`UpdateJob` call, but only as a transition from `JOB_STATE_RUNNING`. Jobs\nthat are draining may only transition to `JOB_STATE_DRAINED`,\n`JOB_STATE_CANCELLED`, or `JOB_STATE_FAILED`.",
+                        "`JOB_STATE_DRAINED` indicates that the job has been drained.\nA drained job terminated by stopping pulling from its input sources and\nprocessing any data that remained in-flight when draining was requested.\nThis state is a terminal state, may only be set by the Cloud Dataflow\nservice, and only as a transition from `JOB_STATE_DRAINING`.",
+                        "'JOB_STATE_PENDING' indicates that the job has been created but is not yet\nrunning.  Jobs that are pending may only transition to `JOB_STATE_RUNNING`,\nor `JOB_STATE_FAILED`.",
+                        "'JOB_STATE_CANCELLING' indicates that the job has been explicitly cancelled\nand is in the process of stopping.  Jobs that are cancelling may only\ntransition to 'JOB_STATE_CANCELLED' or 'JOB_STATE_FAILED'."
+                    ],
+                    "type": "string"
+                },
+                "tempFiles": {
+                    "description": "A set of files the system should be aware of that are used\nfor temporary storage. These temporary files will be\nremoved on job completion.\nNo duplicates are allowed.\nNo file patterns are supported.\n\nThe supported files are:\n\nGoogle Cloud Storage:\n\n   storage.googleapis.com/{bucket}/{object}\n   bucket.storage.googleapis.com/{object}",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "clientRequestId": {
+                    "description": "The client's unique identifier of the job, re-used across retried attempts.\nIf this field is set, the service will ensure its uniqueness.\nThe request to create a job will fail if the service has knowledge of a\npreviously submitted job with the same client's ID and job name.\nThe caller may use this field to ensure idempotence of job\ncreation across retried attempts to create a job.\nBy default, the field is empty and, in that case, the service ignores it.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The user-specified Cloud Dataflow job name.\n\nOnly one Job with a given name may exist in a project at any\ngiven time. If a caller attempts to create a Job with the same\nname as an already-existing Job, the attempt returns the\nexisting Job.\n\nThe name must match the regular expression\n`[a-z]([-a-z0-9]{0,38}[a-z0-9])?`",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DerivedSource": {
+            "description": "Specification of one of the bundles produced as a result of splitting\na Source (e.g. when executing a SourceSplitRequest, or when\nsplitting an active task using WorkItemStatus.dynamic_source_split),\nrelative to the source being split.",
+            "id": "DerivedSource",
+            "properties": {
+                "derivationMode": {
+                    "description": "What source to base the produced source on (if any).",
+                    "enum": [
+                        "SOURCE_DERIVATION_MODE_UNKNOWN",
+                        "SOURCE_DERIVATION_MODE_INDEPENDENT",
+                        "SOURCE_DERIVATION_MODE_CHILD_OF_CURRENT",
+                        "SOURCE_DERIVATION_MODE_SIBLING_OF_CURRENT"
+                    ],
+                    "enumDescriptions": [
+                        "The source derivation is unknown, or unspecified.",
+                        "Produce a completely independent Source with no base.",
+                        "Produce a Source based on the Source being split.",
+                        "Produce a Source based on the base of the Source being split."
+                    ],
+                    "type": "string"
+                },
+                "source": {
+                    "$ref": "Source",
+                    "description": "Specification of the source."
+                }
+            },
+            "type": "object"
+        },
+        "DynamicSourceSplit": {
+            "description": "When a task splits using WorkItemStatus.dynamic_source_split, this\nmessage describes the two parts of the split relative to the\ndescription of the current task's input.",
+            "id": "DynamicSourceSplit",
+            "properties": {
+                "residual": {
+                    "$ref": "DerivedSource",
+                    "description": "Residual part (returned to the pool of work).\nSpecified relative to the previously-current source."
+                },
+                "primary": {
+                    "$ref": "DerivedSource",
+                    "description": "Primary part (continued to be processed by worker).\nSpecified relative to the previously-current source.\nBecomes current."
+                }
+            },
+            "type": "object"
+        },
+        "SideInputId": {
+            "description": "Uniquely identifies a side input.",
+            "id": "SideInputId",
+            "properties": {
+                "inputIndex": {
+                    "description": "The index of the side input, from the list of non_parallel_inputs.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "declaringStepName": {
+                    "description": "The step that receives and usually consumes this side input.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SourceOperationResponse": {
+            "description": "The result of a SourceOperationRequest, specified in\nReportWorkItemStatusRequest.source_operation when the work item\nis completed.",
+            "id": "SourceOperationResponse",
+            "properties": {
+                "getMetadata": {
+                    "$ref": "SourceGetMetadataResponse",
+                    "description": "A response to a request to get metadata about a source."
+                },
+                "split": {
+                    "$ref": "SourceSplitResponse",
+                    "description": "A response to a request to split a source."
+                }
+            },
+            "type": "object"
+        },
+        "SideInputInfo": {
+            "description": "Information about a side input of a DoFn or an input of a SeqDoFn.",
+            "id": "SideInputInfo",
+            "properties": {
+                "tag": {
+                    "description": "The id of the tag the user code will access this side input by;\nthis should correspond to the tag of some MultiOutputInfo.",
+                    "type": "string"
+                },
+                "kind": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "How to interpret the source element(s) as a side input value.",
+                    "type": "object"
+                },
+                "sources": {
+                    "description": "The source(s) to read element(s) from to get the value of this side input.\nIf more than one source, then the elements are taken from the\nsources, in the specified order if order matters.\nAt least one source is required.",
+                    "items": {
+                        "$ref": "Source"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SendDebugCaptureResponse": {
+            "description": "Response to a send capture request.\nnothing",
+            "id": "SendDebugCaptureResponse",
+            "properties": {},
+            "type": "object"
+        },
+        "CounterStructuredNameAndMetadata": {
+            "description": "A single message which encapsulates structured name and metadata for a given\ncounter.",
+            "id": "CounterStructuredNameAndMetadata",
+            "properties": {
+                "name": {
+                    "$ref": "CounterStructuredName",
+                    "description": "Structured name of the counter."
+                },
+                "metadata": {
+                    "$ref": "CounterMetadata",
+                    "description": "Metadata associated with a counter"
+                }
+            },
+            "type": "object"
+        },
+        "ConcatPosition": {
+            "description": "A position that encapsulates an inner position and an index for the inner\nposition. A ConcatPosition can be used by a reader of a source that\nencapsulates a set of other sources.",
+            "id": "ConcatPosition",
+            "properties": {
+                "position": {
+                    "$ref": "Position",
+                    "description": "Position within the inner source."
+                },
+                "index": {
+                    "description": "Index of the inner source.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "WriteInstruction": {
+            "description": "An instruction that writes records.\nTakes one input, produces no outputs.",
+            "id": "WriteInstruction",
+            "properties": {
+                "input": {
+                    "$ref": "InstructionInput",
+                    "description": "The input."
+                },
+                "sink": {
+                    "$ref": "Sink",
+                    "description": "The sink to write to."
+                }
+            },
+            "type": "object"
+        },
+        "StreamingComputationRanges": {
+            "description": "Describes full or partial data disk assignment information of the computation\nranges.",
+            "id": "StreamingComputationRanges",
+            "properties": {
+                "computationId": {
+                    "description": "The ID of the computation.",
+                    "type": "string"
+                },
+                "rangeAssignments": {
+                    "description": "Data disk assignments for ranges from this computation.",
+                    "items": {
+                        "$ref": "KeyRangeDataDiskAssignment"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AutoscalingSettings": {
+            "description": "Settings for WorkerPool autoscaling.",
+            "id": "AutoscalingSettings",
+            "properties": {
+                "algorithm": {
+                    "description": "The algorithm to use for autoscaling.",
+                    "enum": [
+                        "AUTOSCALING_ALGORITHM_UNKNOWN",
+                        "AUTOSCALING_ALGORITHM_NONE",
+                        "AUTOSCALING_ALGORITHM_BASIC"
+                    ],
+                    "enumDescriptions": [
+                        "The algorithm is unknown, or unspecified.",
+                        "Disable autoscaling.",
+                        "Increase worker count over time to reduce job execution time."
+                    ],
+                    "type": "string"
+                },
+                "maxNumWorkers": {
+                    "description": "The maximum number of workers to cap scaling at.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "ExecutionStageSummary": {
+            "description": "Description of the composing transforms, names/ids, and input/outputs of a\nstage of execution.  Some composing transforms and sources may have been\ngenerated by the Dataflow service during execution planning.",
+            "id": "ExecutionStageSummary",
+            "properties": {
+                "name": {
+                    "description": "Dataflow service generated name for this stage.",
+                    "type": "string"
+                },
+                "inputSource": {
+                    "description": "Input sources for this stage.",
+                    "items": {
+                        "$ref": "StageSource"
+                    },
+                    "type": "array"
+                },
+                "id": {
+                    "description": "Dataflow service generated id for this stage.",
+                    "type": "string"
+                },
+                "componentTransform": {
+                    "description": "Transforms that comprise this execution stage.",
+                    "items": {
+                        "$ref": "ComponentTransform"
+                    },
+                    "type": "array"
+                },
+                "componentSource": {
+                    "description": "Collections produced and consumed by component transforms of this stage.",
+                    "items": {
+                        "$ref": "ComponentSource"
+                    },
+                    "type": "array"
+                },
+                "kind": {
+                    "description": "Type of tranform this stage is executing.",
+                    "enum": [
+                        "UNKNOWN_KIND",
+                        "PAR_DO_KIND",
+                        "GROUP_BY_KEY_KIND",
+                        "FLATTEN_KIND",
+                        "READ_KIND",
+                        "WRITE_KIND",
+                        "CONSTANT_KIND",
+                        "SINGLETON_KIND",
+                        "SHUFFLE_KIND"
+                    ],
+                    "enumDescriptions": [
+                        "Unrecognized transform type.",
+                        "ParDo transform.",
+                        "Group By Key transform.",
+                        "Flatten transform.",
+                        "Read transform.",
+                        "Write transform.",
+                        "Constructs from a constant value, such as with Create.of.",
+                        "Creates a Singleton view of a collection.",
+                        "Opening or closing a shuffle session, often as part of a GroupByKey."
+                    ],
+                    "type": "string"
+                },
+                "outputSource": {
+                    "description": "Output sources for this stage.",
+                    "items": {
+                        "$ref": "StageSource"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SendWorkerMessagesRequest": {
+            "description": "A request for sending worker messages to the service.",
+            "id": "SendWorkerMessagesRequest",
+            "properties": {
+                "workerMessages": {
+                    "description": "The WorkerMessages to send.",
+                    "items": {
+                        "$ref": "WorkerMessage"
+                    },
+                    "type": "array"
+                },
+                "location": {
+                    "description": "The location which contains the job",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SourceSplitShard": {
+            "description": "DEPRECATED in favor of DerivedSource.",
+            "id": "SourceSplitShard",
+            "properties": {
+                "derivationMode": {
+                    "description": "DEPRECATED",
+                    "enum": [
+                        "SOURCE_DERIVATION_MODE_UNKNOWN",
+                        "SOURCE_DERIVATION_MODE_INDEPENDENT",
+                        "SOURCE_DERIVATION_MODE_CHILD_OF_CURRENT",
+                        "SOURCE_DERIVATION_MODE_SIBLING_OF_CURRENT"
+                    ],
+                    "enumDescriptions": [
+                        "The source derivation is unknown, or unspecified.",
+                        "Produce a completely independent Source with no base.",
+                        "Produce a Source based on the Source being split.",
+                        "Produce a Source based on the base of the Source being split."
+                    ],
+                    "type": "string"
+                },
+                "source": {
+                    "$ref": "Source",
+                    "description": "DEPRECATED"
+                }
+            },
+            "type": "object"
+        },
+        "CPUTime": {
+            "description": "Modeled after information exposed by /proc/stat.",
+            "id": "CPUTime",
+            "properties": {
+                "timestamp": {
+                    "description": "Timestamp of the measurement.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "totalMs": {
+                    "description": "Total active CPU time across all cores (ie., non-idle) in milliseconds\nsince start-up.",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "rate": {
+                    "description": "Average CPU utilization rate (% non-idle cpu / second) since previous\nsample.",
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "Environment": {
+            "description": "Describes the environment in which a Dataflow Job runs.",
+            "id": "Environment",
+            "properties": {
+                "version": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "A structure describing which components and their versions of the service\nare required in order to run the job.",
+                    "type": "object"
+                },
+                "internalExperiments": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Experimental settings.",
+                    "type": "object"
+                },
+                "serviceAccountEmail": {
+                    "description": "Identity to run virtual machines as. Defaults to the default account.",
+                    "type": "string"
+                },
+                "sdkPipelineOptions": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "The Cloud Dataflow SDK pipeline options specified by the user. These\noptions are passed through the service and are used to recreate the\nSDK pipeline options on the worker in a language agnostic and platform\nindependent way.",
+                    "type": "object"
+                },
+                "userAgent": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "A description of the process that generated the request.",
+                    "type": "object"
+                },
+                "clusterManagerApiService": {
+                    "description": "The type of cluster manager API to use.  If unknown or\nunspecified, the service will attempt to choose a reasonable\ndefault.  This should be in the form of the API service name,\ne.g. \"compute.googleapis.com\".",
+                    "type": "string"
+                },
+                "tempStoragePrefix": {
+                    "description": "The prefix of the resources the system should use for temporary\nstorage.  The system will append the suffix \"/temp-{JOBNAME} to\nthis resource prefix, where {JOBNAME} is the value of the\njob_name field.  The resulting bucket and object prefix is used\nas the prefix of the resources used to store temporary data\nneeded during the job execution.  NOTE: This will override the\nvalue in taskrunner_settings.\nThe supported resource type is:\n\nGoogle Cloud Storage:\n\n  storage.googleapis.com/{bucket}/{object}\n  bucket.storage.googleapis.com/{object}",
+                    "type": "string"
+                },
+                "workerPools": {
+                    "description": "The worker pools. At least one \"harness\" worker pool must be\nspecified in order for the job to have workers.",
+                    "items": {
+                        "$ref": "WorkerPool"
+                    },
+                    "type": "array"
+                },
+                "dataset": {
+                    "description": "The dataset for the current project where various workflow\nrelated tables are stored.\n\nThe supported resource type is:\n\nGoogle BigQuery:\n  bigquery.googleapis.com/{dataset}",
+                    "type": "string"
+                },
+                "experiments": {
+                    "description": "The list of experiments to enable.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "StreamingComputationTask": {
+            "description": "A task which describes what action should be performed for the specified\nstreaming computation ranges.",
+            "id": "StreamingComputationTask",
+            "properties": {
+                "taskType": {
+                    "description": "A type of streaming computation task.",
+                    "enum": [
+                        "STREAMING_COMPUTATION_TASK_UNKNOWN",
+                        "STREAMING_COMPUTATION_TASK_STOP",
+                        "STREAMING_COMPUTATION_TASK_START"
+                    ],
+                    "enumDescriptions": [
+                        "The streaming computation task is unknown, or unspecified.",
+                        "Stop processing specified streaming computation range(s).",
+                        "Start processing specified streaming computation range(s)."
+                    ],
+                    "type": "string"
+                },
+                "computationRanges": {
+                    "description": "Contains ranges of a streaming computation this task should apply to.",
+                    "items": {
+                        "$ref": "StreamingComputationRanges"
+                    },
+                    "type": "array"
+                },
+                "dataDisks": {
+                    "description": "Describes the set of data disks this task should apply to.",
+                    "items": {
+                        "$ref": "MountedDataDisk"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "SendDebugCaptureRequest": {
+            "description": "Request to send encoded debug information.",
+            "id": "SendDebugCaptureRequest",
+            "properties": {
+                "location": {
+                    "description": "The location which contains the job specified by job_id.",
+                    "type": "string"
+                },
+                "data": {
+                    "description": "The encoded debug information.",
+                    "type": "string"
+                },
+                "componentId": {
+                    "description": "The internal component id for which debug information is sent.",
+                    "type": "string"
+                },
+                "workerId": {
+                    "description": "The worker id, i.e., VM hostname.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GetDebugConfigResponse": {
+            "description": "Response to a get debug configuration request.",
+            "id": "GetDebugConfigResponse",
+            "properties": {
+                "config": {
+                    "description": "The encoded debug configuration for the requested component.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ComponentTransform": {
+            "description": "Description of a transform executed as part of an execution stage.",
+            "id": "ComponentTransform",
+            "properties": {
+                "originalTransform": {
+                    "description": "User name for the original user transform with which this transform is\nmost closely associated.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Dataflow service generated name for this source.",
+                    "type": "string"
+                },
+                "userName": {
+                    "description": "Human-readable name for this transform; may be user or system generated.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "StreamingSetupTask": {
+            "description": "A task which initializes part of a streaming Dataflow job.",
+            "id": "StreamingSetupTask",
+            "properties": {
+                "drain": {
+                    "description": "The user has requested drain.",
+                    "type": "boolean"
+                },
+                "workerHarnessPort": {
+                    "description": "The TCP port used by the worker to communicate with the Dataflow\nworker harness.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "receiveWorkPort": {
+                    "description": "The TCP port on which the worker should listen for messages from\nother streaming computation workers.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "streamingComputationTopology": {
+                    "$ref": "TopologyConfig",
+                    "description": "The global topology of the streaming Dataflow job."
+                }
+            },
+            "type": "object"
+        },
+        "PubsubLocation": {
+            "description": "Identifies a pubsub location to use for transferring data into or\nout of a streaming Dataflow job.",
+            "id": "PubsubLocation",
+            "properties": {
+                "withAttributes": {
+                    "description": "If true, then the client has requested to get pubsub attributes.",
+                    "type": "boolean"
+                },
+                "idLabel": {
+                    "description": "If set, contains a pubsub label from which to extract record ids.\nIf left empty, record deduplication will be strictly best effort.",
+                    "type": "string"
+                },
+                "timestampLabel": {
+                    "description": "If set, contains a pubsub label from which to extract record timestamps.\nIf left empty, record timestamps will be generated upon arrival.",
+                    "type": "string"
+                },
+                "topic": {
+                    "description": "A pubsub topic, in the form of\n\"pubsub.googleapis.com/topics/<project-id>/<topic-name>\"",
+                    "type": "string"
+                },
+                "subscription": {
+                    "description": "A pubsub subscription, in the form of\n\"pubsub.googleapis.com/subscriptions/<project-id>/<subscription-name>\"",
+                    "type": "string"
+                },
+                "dropLateData": {
+                    "description": "Indicates whether the pipeline allows late-arriving data.",
+                    "type": "boolean"
+                },
+                "trackingSubscription": {
+                    "description": "If set, specifies the pubsub subscription that will be used for tracking\ncustom time timestamps for watermark estimation.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "WorkerHealthReport": {
+            "description": "WorkerHealthReport contains information about the health of a worker.\n\nThe VM should be identified by the labels attached to the WorkerMessage that\nthis health ping belongs to.",
+            "id": "WorkerHealthReport",
+            "properties": {
+                "pods": {
+                    "description": "The pods running on the worker. See:\nhttp://kubernetes.io/v1.1/docs/api-reference/v1/definitions.html#_v1_pod\n\nThis field is used by the worker to send the status of the indvidual\ncontainers running on each worker.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                },
+                "vmStartupTime": {
+                    "description": "The time the VM was booted.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "reportInterval": {
+                    "description": "The interval at which the worker is sending health reports.\nThe default value of 0 should be interpreted as the field is not being\nexplicitly set by the worker.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "vmIsHealthy": {
+                    "description": "Whether the VM is healthy.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "JobMessage": {
+            "description": "A particular message pertaining to a Dataflow job.",
+            "id": "JobMessage",
+            "properties": {
+                "id": {
+                    "description": "Deprecated.",
+                    "type": "string"
+                },
+                "messageImportance": {
+                    "description": "Importance level of the message.",
+                    "enum": [
+                        "JOB_MESSAGE_IMPORTANCE_UNKNOWN",
+                        "JOB_MESSAGE_DEBUG",
+                        "JOB_MESSAGE_DETAILED",
+                        "JOB_MESSAGE_BASIC",
+                        "JOB_MESSAGE_WARNING",
+                        "JOB_MESSAGE_ERROR"
+                    ],
+                    "enumDescriptions": [
+                        "The message importance isn't specified, or is unknown.",
+                        "The message is at the 'debug' level: typically only useful for\nsoftware engineers working on the code the job is running.\nTypically, Dataflow pipeline runners do not display log messages\nat this level by default.",
+                        "The message is at the 'detailed' level: somewhat verbose, but\npotentially useful to users.  Typically, Dataflow pipeline\nrunners do not display log messages at this level by default.\nThese messages are displayed by default in the Dataflow\nmonitoring UI.",
+                        "The message is at the 'basic' level: useful for keeping\ntrack of the execution of a Dataflow pipeline.  Typically,\nDataflow pipeline runners display log messages at this level by\ndefault, and these messages are displayed by default in the\nDataflow monitoring UI.",
+                        "The message is at the 'warning' level: indicating a condition\npertaining to a job which may require human intervention.\nTypically, Dataflow pipeline runners display log messages at this\nlevel by default, and these messages are displayed by default in\nthe Dataflow monitoring UI.",
+                        "The message is at the 'error' level: indicating a condition\npreventing a job from succeeding.  Typically, Dataflow pipeline\nrunners display log messages at this level by default, and these\nmessages are displayed by default in the Dataflow monitoring UI."
+                    ],
+                    "type": "string"
+                },
+                "messageText": {
+                    "description": "The text of the message.",
+                    "type": "string"
+                },
+                "time": {
+                    "description": "The timestamp of the message.",
+                    "format": "google-datetime",
+                    "type": "string"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis_beta/dlp__v2beta1.json b/discovery/googleapis_beta/dlp__v2beta1.json
index 320c925..cd59f67 100644
--- a/discovery/googleapis_beta/dlp__v2beta1.json
+++ b/discovery/googleapis_beta/dlp__v2beta1.json
@@ -25,17 +25,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
         "fields": {
             "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
@@ -110,192 +99,25 @@
             "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
         }
     },
     "protocol": "rest",
     "resources": {
-        "content": {
-            "methods": {
-                "inspect": {
-                    "description": "Finds potentially sensitive info in a list of strings.\nThis method has limits on input size, processing time, and output size.",
-                    "httpMethod": "POST",
-                    "id": "dlp.content.inspect",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v2beta1/content:inspect",
-                    "request": {
-                        "$ref": "GooglePrivacyDlpV2beta1InspectContentRequest"
-                    },
-                    "response": {
-                        "$ref": "GooglePrivacyDlpV2beta1InspectContentResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
-                "redact": {
-                    "description": "Redacts potentially sensitive info from a list of strings.\nThis method has limits on input size, processing time, and output size.",
-                    "httpMethod": "POST",
-                    "id": "dlp.content.redact",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v2beta1/content:redact",
-                    "request": {
-                        "$ref": "GooglePrivacyDlpV2beta1RedactContentRequest"
-                    },
-                    "response": {
-                        "$ref": "GooglePrivacyDlpV2beta1RedactContentResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
-                "deidentify": {
-                    "description": "De-identifies potentially sensitive info from a list of strings.\nThis method has limits on input size and output size.",
-                    "httpMethod": "POST",
-                    "id": "dlp.content.deidentify",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v2beta1/content:deidentify",
-                    "request": {
-                        "$ref": "GooglePrivacyDlpV2beta1DeidentifyContentRequest"
-                    },
-                    "response": {
-                        "$ref": "GooglePrivacyDlpV2beta1DeidentifyContentResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                }
-            }
-        },
-        "rootCategories": {
-            "methods": {
-                "list": {
-                    "description": "Returns the list of root categories of sensitive information.",
-                    "httpMethod": "GET",
-                    "id": "dlp.rootCategories.list",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "languageCode": {
-                            "description": "Optional language code for localized friendly category names.\nIf omitted or if localized strings are not available,\nen-US strings will be returned.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v2beta1/rootCategories",
-                    "response": {
-                        "$ref": "GooglePrivacyDlpV2beta1ListRootCategoriesResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                }
-            },
-            "resources": {
-                "infoTypes": {
-                    "methods": {
-                        "list": {
-                            "description": "Returns sensitive information types for given category.",
-                            "httpMethod": "GET",
-                            "id": "dlp.rootCategories.infoTypes.list",
-                            "parameterOrder": [
-                                "category"
-                            ],
-                            "parameters": {
-                                "category": {
-                                    "description": "Category name as returned by ListRootCategories.",
-                                    "location": "path",
-                                    "pattern": "^[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "languageCode": {
-                                    "description": "Optional BCP-47 language code for localized info type friendly\nnames. If omitted, or if localized strings are not available,\nen-US strings will be returned.",
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2beta1/rootCategories/{+category}/infoTypes",
-                            "response": {
-                                "$ref": "GooglePrivacyDlpV2beta1ListInfoTypesResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        }
-                    }
-                }
-            }
-        },
         "riskAnalysis": {
             "resources": {
                 "operations": {
                     "methods": {
-                        "list": {
-                            "description": "Fetches the list of long running operations.",
-                            "httpMethod": "GET",
-                            "id": "dlp.riskAnalysis.operations.list",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "pageSize": {
-                                    "description": "The list page size. The maximum allowed value is 256 and the default is 100.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                },
-                                "filter": {
-                                    "description": "Filters by `done`. That is, `done=true` or `done=false`.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "description": "The name of the operation's parent resource.",
-                                    "location": "path",
-                                    "pattern": "^riskAnalysis/operations$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "The standard list page token.",
-                                    "location": "query",
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2beta1/{+name}",
-                            "response": {
-                                "$ref": "GoogleLongrunningListOperationsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
-                            "httpMethod": "GET",
-                            "id": "dlp.riskAnalysis.operations.get",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "The name of the operation resource.",
-                                    "location": "path",
-                                    "pattern": "^riskAnalysis/operations/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2beta1/{+name}",
-                            "response": {
-                                "$ref": "GoogleLongrunningOperation"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        },
                         "cancel": {
                             "description": "Cancels an operation. Use the `inspect.operations.get` to check whether the cancellation succeeded or the operation completed despite cancellation.",
                             "httpMethod": "POST",
@@ -346,6 +168,70 @@
                             "scopes": [
                                 "https://www.googleapis.com/auth/cloud-platform"
                             ]
+                        },
+                        "list": {
+                            "description": "Fetches the list of long running operations.",
+                            "httpMethod": "GET",
+                            "id": "dlp.riskAnalysis.operations.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "filter": {
+                                    "description": "Filters by `done`. That is, `done=true` or `done=false`.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "The name of the operation's parent resource.",
+                                    "location": "path",
+                                    "pattern": "^riskAnalysis/operations$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "The standard list page token.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The list page size. The maximum allowed value is 256 and the default is 100.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v2beta1/{+name}",
+                            "response": {
+                                "$ref": "GoogleLongrunningListOperationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+                            "httpMethod": "GET",
+                            "id": "dlp.riskAnalysis.operations.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The name of the operation resource.",
+                                    "location": "path",
+                                    "pattern": "^riskAnalysis/operations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2beta1/{+name}",
+                            "response": {
+                                "$ref": "GoogleLongrunningOperation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
                         }
                     }
                 }
@@ -386,12 +272,6 @@
                                         "name"
                                     ],
                                     "parameters": {
-                                        "pageSize": {
-                                            "description": "Maximum number of results to return.\nIf 0, the implementation selects a reasonable value.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
                                         "filter": {
                                             "description": "Restricts findings to items that match. Supports info_type and likelihood.\n\nExamples:\n\n- info_type=EMAIL_ADDRESS\n- info_type=PHONE_NUMBER,EMAIL_ADDRESS\n- likelihood=VERY_LIKELY\n- likelihood=VERY_LIKELY,LIKELY\n- info_type=EMAIL_ADDRESS,likelihood=VERY_LIKELY,LIKELY",
                                             "location": "query",
@@ -408,6 +288,12 @@
                                             "description": "The value returned by the last `ListInspectFindingsResponse`; indicates\nthat this is a continuation of a prior `ListInspectFindings` call, and that\nthe system should return the next page of data.",
                                             "location": "query",
                                             "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Maximum number of results to return.\nIf 0, the implementation selects a reasonable value.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
                                         }
                                     },
                                     "path": "v2beta1/{+name}/findings",
@@ -424,6 +310,23 @@
                 },
                 "operations": {
                     "methods": {
+                        "create": {
+                            "description": "Schedules a job scanning content in a Google Cloud Platform data\nrepository.",
+                            "httpMethod": "POST",
+                            "id": "dlp.inspect.operations.create",
+                            "parameterOrder": [],
+                            "parameters": {},
+                            "path": "v2beta1/inspect/operations",
+                            "request": {
+                                "$ref": "GooglePrivacyDlpV2beta1CreateInspectOperationRequest"
+                            },
+                            "response": {
+                                "$ref": "GoogleLongrunningOperation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
                         "cancel": {
                             "description": "Cancels an operation. Use the `inspect.operations.get` to check whether the cancellation succeeded or the operation completed despite cancellation.",
                             "httpMethod": "POST",
@@ -538,19 +441,116 @@
                             "scopes": [
                                 "https://www.googleapis.com/auth/cloud-platform"
                             ]
-                        },
-                        "create": {
-                            "description": "Schedules a job scanning content in a Google Cloud Platform data\nrepository.",
-                            "httpMethod": "POST",
-                            "id": "dlp.inspect.operations.create",
-                            "parameterOrder": [],
-                            "parameters": {},
-                            "path": "v2beta1/inspect/operations",
-                            "request": {
-                                "$ref": "GooglePrivacyDlpV2beta1CreateInspectOperationRequest"
+                        }
+                    }
+                }
+            }
+        },
+        "content": {
+            "methods": {
+                "deidentify": {
+                    "description": "De-identifies potentially sensitive info from a list of strings.\nThis method has limits on input size and output size.",
+                    "httpMethod": "POST",
+                    "id": "dlp.content.deidentify",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v2beta1/content:deidentify",
+                    "request": {
+                        "$ref": "GooglePrivacyDlpV2beta1DeidentifyContentRequest"
+                    },
+                    "response": {
+                        "$ref": "GooglePrivacyDlpV2beta1DeidentifyContentResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "inspect": {
+                    "description": "Finds potentially sensitive info in a list of strings.\nThis method has limits on input size, processing time, and output size.",
+                    "httpMethod": "POST",
+                    "id": "dlp.content.inspect",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v2beta1/content:inspect",
+                    "request": {
+                        "$ref": "GooglePrivacyDlpV2beta1InspectContentRequest"
+                    },
+                    "response": {
+                        "$ref": "GooglePrivacyDlpV2beta1InspectContentResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "redact": {
+                    "description": "Redacts potentially sensitive info from a list of strings.\nThis method has limits on input size, processing time, and output size.",
+                    "httpMethod": "POST",
+                    "id": "dlp.content.redact",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v2beta1/content:redact",
+                    "request": {
+                        "$ref": "GooglePrivacyDlpV2beta1RedactContentRequest"
+                    },
+                    "response": {
+                        "$ref": "GooglePrivacyDlpV2beta1RedactContentResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                }
+            }
+        },
+        "rootCategories": {
+            "methods": {
+                "list": {
+                    "description": "Returns the list of root categories of sensitive information.",
+                    "httpMethod": "GET",
+                    "id": "dlp.rootCategories.list",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "languageCode": {
+                            "description": "Optional language code for localized friendly category names.\nIf omitted or if localized strings are not available,\nen-US strings will be returned.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2beta1/rootCategories",
+                    "response": {
+                        "$ref": "GooglePrivacyDlpV2beta1ListRootCategoriesResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                }
+            },
+            "resources": {
+                "infoTypes": {
+                    "methods": {
+                        "list": {
+                            "description": "Returns sensitive information types for given category.",
+                            "httpMethod": "GET",
+                            "id": "dlp.rootCategories.infoTypes.list",
+                            "parameterOrder": [
+                                "category"
+                            ],
+                            "parameters": {
+                                "category": {
+                                    "description": "Category name as returned by ListRootCategories.",
+                                    "location": "path",
+                                    "pattern": "^[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "languageCode": {
+                                    "description": "Optional BCP-47 language code for localized info type friendly\nnames. If omitted, or if localized strings are not available,\nen-US strings will be returned.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
                             },
+                            "path": "v2beta1/rootCategories/{+category}/infoTypes",
                             "response": {
-                                "$ref": "GoogleLongrunningOperation"
+                                "$ref": "GooglePrivacyDlpV2beta1ListInfoTypesResponse"
                             },
                             "scopes": [
                                 "https://www.googleapis.com/auth/cloud-platform"
@@ -561,9 +561,675 @@
             }
         }
     },
-    "revision": "20170928",
+    "revision": "20171017",
     "rootUrl": "https://dlp.googleapis.com/",
     "schemas": {
+        "GooglePrivacyDlpV2beta1OperationConfig": {
+            "description": "Additional configuration for inspect long running operations.",
+            "id": "GooglePrivacyDlpV2beta1OperationConfig",
+            "properties": {
+                "maxItemFindings": {
+                    "description": "Max number of findings per file, Datastore entity, or database row.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1BigQueryOptions": {
+            "description": "Options defining BigQuery table and row identifiers.",
+            "id": "GooglePrivacyDlpV2beta1BigQueryOptions",
+            "properties": {
+                "tableReference": {
+                    "$ref": "GooglePrivacyDlpV2beta1BigQueryTable",
+                    "description": "Complete BigQuery table reference."
+                },
+                "identifyingFields": {
+                    "description": "References to fields uniquely identifying rows within the table.\nNested fields in the format, like `person.birthdate.year`, are allowed.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1FieldId"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1PrivacyMetric": {
+            "description": "Privacy metric to compute for reidentification risk analysis.",
+            "id": "GooglePrivacyDlpV2beta1PrivacyMetric",
+            "properties": {
+                "lDiversityConfig": {
+                    "$ref": "GooglePrivacyDlpV2beta1LDiversityConfig"
+                },
+                "numericalStatsConfig": {
+                    "$ref": "GooglePrivacyDlpV2beta1NumericalStatsConfig"
+                },
+                "kAnonymityConfig": {
+                    "$ref": "GooglePrivacyDlpV2beta1KAnonymityConfig"
+                },
+                "categoricalStatsConfig": {
+                    "$ref": "GooglePrivacyDlpV2beta1CategoricalStatsConfig"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1ReplaceConfig": {
+            "id": "GooglePrivacyDlpV2beta1ReplaceConfig",
+            "properties": {
+                "replaceWith": {
+                    "description": "Content replacing sensitive information of given type. Max 256 chars.",
+                    "type": "string"
+                },
+                "infoType": {
+                    "$ref": "GooglePrivacyDlpV2beta1InfoType",
+                    "description": "Type of information to replace. Only one ReplaceConfig per info_type\nshould be provided. If ReplaceConfig does not have an info_type, the DLP\nAPI matches it against all info_types that are found but not specified in\nanother ReplaceConfig."
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1NumericalStatsConfig": {
+            "description": "Compute numerical stats over an individual column, including\nmin, max, and quantiles.",
+            "id": "GooglePrivacyDlpV2beta1NumericalStatsConfig",
+            "properties": {
+                "field": {
+                    "$ref": "GooglePrivacyDlpV2beta1FieldId",
+                    "description": "Field to compute numerical stats on. Supported types are\ninteger, float, date, datetime, timestamp, time."
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1LDiversityEquivalenceClass": {
+            "description": "The set of columns' values that share the same l-diversity value.",
+            "id": "GooglePrivacyDlpV2beta1LDiversityEquivalenceClass",
+            "properties": {
+                "equivalenceClassSize": {
+                    "description": "Size of the k-anonymity equivalence class.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "quasiIdsValues": {
+                    "description": "Quasi-identifier values defining the k-anonymity equivalence\nclass. The order is always the same as the original request.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1Value"
+                    },
+                    "type": "array"
+                },
+                "numDistinctSensitiveValues": {
+                    "description": "Number of distinct sensitive values in this equivalence class.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "topSensitiveValues": {
+                    "description": "Estimated frequencies of top sensitive values.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1ValueFrequency"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1DeidentificationSummary": {
+            "description": "High level summary of deidentification.",
+            "id": "GooglePrivacyDlpV2beta1DeidentificationSummary",
+            "properties": {
+                "transformedBytes": {
+                    "description": "Total size in bytes that were transformed in some way.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "transformationSummaries": {
+                    "description": "Transformations applied to the dataset.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1TransformationSummary"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1RecordCondition": {
+            "description": "A condition for determining whether a transformation should be applied to\na field.",
+            "id": "GooglePrivacyDlpV2beta1RecordCondition",
+            "properties": {
+                "expressions": {
+                    "$ref": "GooglePrivacyDlpV2beta1Expressions"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1TimePartConfig": {
+            "description": "For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a\nportion of the value.",
+            "id": "GooglePrivacyDlpV2beta1TimePartConfig",
+            "properties": {
+                "partToExtract": {
+                    "enum": [
+                        "TIME_PART_UNSPECIFIED",
+                        "YEAR",
+                        "MONTH",
+                        "DAY_OF_MONTH",
+                        "DAY_OF_WEEK",
+                        "WEEK_OF_YEAR",
+                        "HOUR_OF_DAY"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "[000-9999]",
+                        "[1-12]",
+                        "[1-31]",
+                        "[1-7]",
+                        "[1-52]",
+                        "[0-24]"
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1ListInfoTypesResponse": {
+            "description": "Response to the ListInfoTypes request.",
+            "id": "GooglePrivacyDlpV2beta1ListInfoTypesResponse",
+            "properties": {
+                "infoTypes": {
+                    "description": "Set of sensitive info types belonging to a category.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1InfoTypeDescription"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1CloudStorageKey": {
+            "description": "Record key for a finding in a Cloud Storage file.",
+            "id": "GooglePrivacyDlpV2beta1CloudStorageKey",
+            "properties": {
+                "filePath": {
+                    "description": "Path to the file.",
+                    "type": "string"
+                },
+                "startOffset": {
+                    "description": "Byte offset of the referenced data in the file.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1NumericalStatsResult": {
+            "description": "Result of the numerical stats computation.",
+            "id": "GooglePrivacyDlpV2beta1NumericalStatsResult",
+            "properties": {
+                "maxValue": {
+                    "$ref": "GooglePrivacyDlpV2beta1Value",
+                    "description": "Maximum value appearing in the column."
+                },
+                "quantileValues": {
+                    "description": "List of 99 values that partition the set of field values into 100 equal\nsized buckets.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1Value"
+                    },
+                    "type": "array"
+                },
+                "minValue": {
+                    "$ref": "GooglePrivacyDlpV2beta1Value",
+                    "description": "Minimum value appearing in the column."
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1Dictionary": {
+            "description": "Custom information type based on a dictionary of words or phrases. This can\nbe used to match sensitive information specific to the data, such as a list\nof employee IDs or job titles.\n\nDictionary words are case-insensitive and all characters other than letters\nand digits in the unicode [Basic Multilingual\nPlane](https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_Multilingual_Plane)\nwill be replaced with whitespace when scanning for matches, so the\ndictionary phrase \"Sam Johnson\" will match all three phrases \"sam johnson\",\n\"Sam, Johnson\", and \"Sam (Johnson)\". Additionally, the characters\nsurrounding any match must be of a different type than the adjacent\ncharacters within the word, so letters must be next to non-letters and\ndigits next to non-digits. For example, the dictionary word \"jen\" will\nmatch the first three letters of the text \"jen123\" but will return no\nmatches for \"jennifer\".\n\nDictionary words containing a large number of characters that are not\nletters or digits may result in unexpected findings because such characters\nare treated as whitespace.",
+            "id": "GooglePrivacyDlpV2beta1Dictionary",
+            "properties": {
+                "wordList": {
+                    "$ref": "GooglePrivacyDlpV2beta1WordList",
+                    "description": "List of words or phrases to search for."
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1DatastoreOptions": {
+            "description": "Options defining a data set within Google Cloud Datastore.",
+            "id": "GooglePrivacyDlpV2beta1DatastoreOptions",
+            "properties": {
+                "kind": {
+                    "$ref": "GooglePrivacyDlpV2beta1KindExpression",
+                    "description": "The kind to process."
+                },
+                "projection": {
+                    "description": "Properties to scan. If none are specified, all properties will be scanned\nby default.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1Projection"
+                    },
+                    "type": "array"
+                },
+                "partitionId": {
+                    "$ref": "GooglePrivacyDlpV2beta1PartitionId",
+                    "description": "A partition ID identifies a grouping of entities. The grouping is always\nby project and namespace, however the namespace ID may be empty."
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1RecordTransformations": {
+            "description": "A type of transformation that is applied over structured data such as a\ntable.",
+            "id": "GooglePrivacyDlpV2beta1RecordTransformations",
+            "properties": {
+                "recordSuppressions": {
+                    "description": "Configuration defining which records get suppressed entirely. Records that\nmatch any suppression rule are omitted from the output [optional].",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1RecordSuppression"
+                    },
+                    "type": "array"
+                },
+                "fieldTransformations": {
+                    "description": "Transform the record by applying various field transformations.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1FieldTransformation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1InspectConfig": {
+            "description": "Configuration description of the scanning process.\nWhen used with redactContent only info_types and min_likelihood are currently\nused.",
+            "id": "GooglePrivacyDlpV2beta1InspectConfig",
+            "properties": {
+                "excludeTypes": {
+                    "description": "When true, excludes type information of the findings.",
+                    "type": "boolean"
+                },
+                "minLikelihood": {
+                    "description": "Only returns findings equal or above this threshold.",
+                    "enum": [
+                        "LIKELIHOOD_UNSPECIFIED",
+                        "VERY_UNLIKELY",
+                        "UNLIKELY",
+                        "POSSIBLE",
+                        "LIKELY",
+                        "VERY_LIKELY"
+                    ],
+                    "enumDescriptions": [
+                        "Default value; information with all likelihoods is included.",
+                        "Few matching elements.",
+                        "",
+                        "Some matching elements.",
+                        "",
+                        "Many matching elements."
+                    ],
+                    "type": "string"
+                },
+                "infoTypeLimits": {
+                    "description": "Configuration of findings limit given for specified info types.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1InfoTypeLimit"
+                    },
+                    "type": "array"
+                },
+                "maxFindings": {
+                    "description": "Limits the number of findings per content item or long running operation.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "infoTypes": {
+                    "description": "Restricts what info_types to look for. The values must correspond to\nInfoType values returned by ListInfoTypes or found in documentation.\nEmpty info_types runs all enabled detectors.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1InfoType"
+                    },
+                    "type": "array"
+                },
+                "includeQuote": {
+                    "description": "When true, a contextual quote from the data that triggered a finding is\nincluded in the response; see Finding.quote.",
+                    "type": "boolean"
+                },
+                "customInfoTypes": {
+                    "description": "Custom info types provided by the user.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1CustomInfoType"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1Projection": {
+            "description": "A representation of a Datastore property in a projection.",
+            "id": "GooglePrivacyDlpV2beta1Projection",
+            "properties": {
+                "property": {
+                    "$ref": "GooglePrivacyDlpV2beta1PropertyReference",
+                    "description": "The property to project."
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1RedactConfig": {
+            "description": "Redact a given value. For example, if used with an `InfoTypeTransformation`\ntransforming PHONE_NUMBER, and input 'My phone number is 206-555-0123', the\noutput would be 'My phone number is '.",
+            "id": "GooglePrivacyDlpV2beta1RedactConfig",
+            "properties": {},
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1Key": {
+            "description": "A unique identifier for a Datastore entity.\nIf a key's partition ID or any of its path kinds or names are\nreserved/read-only, the key is reserved/read-only.\nA reserved/read-only key is forbidden in certain documented contexts.",
+            "id": "GooglePrivacyDlpV2beta1Key",
+            "properties": {
+                "path": {
+                    "description": "The entity path.\nAn entity path consists of one or more elements composed of a kind and a\nstring or numerical identifier, which identify entities. The first\nelement identifies a _root entity_, the second element identifies\na _child_ of the root entity, the third element identifies a child of the\nsecond entity, and so forth. The entities identified by all prefixes of\nthe path are called the element's _ancestors_.\n\nA path can never be empty, and a path can have at most 100 elements.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1PathElement"
+                    },
+                    "type": "array"
+                },
+                "partitionId": {
+                    "$ref": "GooglePrivacyDlpV2beta1PartitionId",
+                    "description": "Entities are partitioned into subsets, currently identified by a project\nID and namespace ID.\nQueries are scoped to a single partition."
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1CryptoHashConfig": {
+            "description": "Pseudonymization method that generates surrogates via cryptographic hashing.\nUses SHA-256.\nOutputs a 32 byte digest as an uppercase hex string\n(for example, 41D1567F7F99F1DC2A5FAB886DEE5BEE).\nCurrently, only string and integer values can be hashed.",
+            "id": "GooglePrivacyDlpV2beta1CryptoHashConfig",
+            "properties": {
+                "cryptoKey": {
+                    "$ref": "GooglePrivacyDlpV2beta1CryptoKey",
+                    "description": "The key used by the hash function."
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1InspectContentRequest": {
+            "description": "Request to search for potentially sensitive info in a list of items.",
+            "id": "GooglePrivacyDlpV2beta1InspectContentRequest",
+            "properties": {
+                "items": {
+                    "description": "The list of items to inspect. Items in a single request are\nconsidered \"related\" unless inspect_config.independent_inputs is true.\nUp to 100 are allowed per request.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1ContentItem"
+                    },
+                    "type": "array"
+                },
+                "inspectConfig": {
+                    "$ref": "GooglePrivacyDlpV2beta1InspectConfig",
+                    "description": "Configuration for the inspector."
+                }
+            },
+            "type": "object"
+        },
+        "GoogleTypeDate": {
+            "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.",
+            "id": "GoogleTypeDate",
+            "properties": {
+                "month": {
+                    "description": "Month of year. Must be from 1 to 12.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "year": {
+                    "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "day": {
+                    "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1ImageRedactionConfig": {
+            "description": "Configuration for determining how redaction of images should occur.",
+            "id": "GooglePrivacyDlpV2beta1ImageRedactionConfig",
+            "properties": {
+                "redactAllText": {
+                    "description": "If true, all text found in the image, regardless whether it matches an\ninfo_type, is redacted.",
+                    "type": "boolean"
+                },
+                "infoType": {
+                    "$ref": "GooglePrivacyDlpV2beta1InfoType",
+                    "description": "Only one per info_type should be provided per request. If not\nspecified, and redact_all_text is false, the DLP API will redact all\ntext that it matches against all info_types that are found, but not\nspecified in another ImageRedactionConfig."
+                },
+                "redactionColor": {
+                    "$ref": "GooglePrivacyDlpV2beta1Color",
+                    "description": "The color to use when redacting content from an image. If not specified,\nthe default is black."
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1ReplaceWithInfoTypeConfig": {
+            "description": "Replace each matching finding with the name of the info_type.",
+            "id": "GooglePrivacyDlpV2beta1ReplaceWithInfoTypeConfig",
+            "properties": {},
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1Location": {
+            "description": "Specifies the location of a finding within its source item.",
+            "id": "GooglePrivacyDlpV2beta1Location",
+            "properties": {
+                "recordKey": {
+                    "$ref": "GooglePrivacyDlpV2beta1RecordKey",
+                    "description": "Key of the finding."
+                },
+                "tableLocation": {
+                    "$ref": "GooglePrivacyDlpV2beta1TableLocation",
+                    "description": "Location within a `ContentItem.Table`."
+                },
+                "codepointRange": {
+                    "$ref": "GooglePrivacyDlpV2beta1Range",
+                    "description": "Character offsets within a content item, included when content type\nis a text. Default charset assumed to be UTF-8."
+                },
+                "fieldId": {
+                    "$ref": "GooglePrivacyDlpV2beta1FieldId",
+                    "description": "Field id of the field containing the finding."
+                },
+                "imageBoxes": {
+                    "description": "Location within an image's pixels.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1ImageLocation"
+                    },
+                    "type": "array"
+                },
+                "byteRange": {
+                    "$ref": "GooglePrivacyDlpV2beta1Range",
+                    "description": "Zero-based byte offsets within a content item."
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1RecordSuppression": {
+            "description": "Configuration to suppress records whose suppression conditions evaluate to\ntrue.",
+            "id": "GooglePrivacyDlpV2beta1RecordSuppression",
+            "properties": {
+                "condition": {
+                    "$ref": "GooglePrivacyDlpV2beta1RecordCondition"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1CustomInfoType": {
+            "description": "Custom information type provided by the user. Used to find domain-specific\nsensitive information configurable to the data in question.",
+            "id": "GooglePrivacyDlpV2beta1CustomInfoType",
+            "properties": {
+                "infoType": {
+                    "$ref": "GooglePrivacyDlpV2beta1InfoType",
+                    "description": "Info type configuration. All custom info types must have configurations\nthat do not conflict with built-in info types or other custom info types."
+                },
+                "dictionary": {
+                    "$ref": "GooglePrivacyDlpV2beta1Dictionary",
+                    "description": "Dictionary-based custom info type."
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1UnwrappedCryptoKey": {
+            "description": "Using raw keys is prone to security risks due to accidentally\nleaking the key. Choose another type of key if possible.",
+            "id": "GooglePrivacyDlpV2beta1UnwrappedCryptoKey",
+            "properties": {
+                "key": {
+                    "description": "The AES 128/192/256 bit key. [required]",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1EntityId": {
+            "description": "An entity in a dataset is a field or set of fields that correspond to a\nsingle person. For example, in medical records the `EntityId` might be\na patient identifier, or for financial records it might be an account\nidentifier. This message is used when generalizations or analysis must be\nconsistent across multiple rows pertaining to the same entity.",
+            "id": "GooglePrivacyDlpV2beta1EntityId",
+            "properties": {
+                "field": {
+                    "$ref": "GooglePrivacyDlpV2beta1FieldId",
+                    "description": "Composite key indicating which field contains the entity identifier."
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1InfoTypeDescription": {
+            "description": "Description of the information type (infoType).",
+            "id": "GooglePrivacyDlpV2beta1InfoTypeDescription",
+            "properties": {
+                "name": {
+                    "description": "Internal name of the infoType.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "Human readable form of the infoType name.",
+                    "type": "string"
+                },
+                "categories": {
+                    "description": "List of categories this infoType belongs to.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1CategoryDescription"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleRpcStatus": {
+            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+            "id": "GoogleRpcStatus",
+            "properties": {
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                },
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1PathElement": {
+            "description": "A (kind, ID/name) pair used to construct a key path.\n\nIf either name or ID is set, the element is complete.\nIf neither is set, the element is incomplete.",
+            "id": "GooglePrivacyDlpV2beta1PathElement",
+            "properties": {
+                "id": {
+                    "description": "The auto-allocated ID of the entity.\nNever equal to zero. Values less than zero are discouraged and may not\nbe supported in the future.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The name of the entity.\nA name matching regex `__.*__` is reserved/read-only.\nA name must not be more than 1500 bytes when UTF-8 encoded.\nCannot be `\"\"`.",
+                    "type": "string"
+                },
+                "kind": {
+                    "description": "The kind of the entity.\nA kind matching regex `__.*__` is reserved/read-only.\nA kind must not contain more than 1500 bytes when UTF-8 encoded.\nCannot be `\"\"`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1SummaryResult": {
+            "description": "A collection that informs the user the number of times a particular\n`TransformationResultCode` and error details occurred.",
+            "id": "GooglePrivacyDlpV2beta1SummaryResult",
+            "properties": {
+                "details": {
+                    "description": "A place for warnings or errors to show up if a transformation didn't\nwork as expected.",
+                    "type": "string"
+                },
+                "count": {
+                    "format": "int64",
+                    "type": "string"
+                },
+                "code": {
+                    "enum": [
+                        "TRANSFORMATION_RESULT_CODE_UNSPECIFIED",
+                        "SUCCESS",
+                        "ERROR"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1BigQueryTable": {
+            "description": "Message defining the location of a BigQuery table. A table is uniquely\nidentified  by its project_id, dataset_id, and table_name. Within a query\na table is often referenced with a string in the format of:\n`<project_id>:<dataset_id>.<table_id>` or\n`<project_id>.<dataset_id>.<table_id>`.",
+            "id": "GooglePrivacyDlpV2beta1BigQueryTable",
+            "properties": {
+                "tableId": {
+                    "description": "Name of the table.",
+                    "type": "string"
+                },
+                "projectId": {
+                    "description": "The Google Cloud Platform project ID of the project containing the table.\nIf omitted, project ID is inferred from the API call.",
+                    "type": "string"
+                },
+                "datasetId": {
+                    "description": "Dataset ID of the table.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1InfoTypeTransformations": {
+            "description": "A type of transformation that will scan unstructured text and\napply various `PrimitiveTransformation`s to each finding, where the\ntransformation is applied to only values that were identified as a specific\ninfo_type.",
+            "id": "GooglePrivacyDlpV2beta1InfoTypeTransformations",
+            "properties": {
+                "transformations": {
+                    "description": "Transformation for each info type. Cannot specify more than one\nfor a given info type. [required]",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1InfoTypeTransformation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1ListRootCategoriesResponse": {
+            "description": "Response for ListRootCategories request.",
+            "id": "GooglePrivacyDlpV2beta1ListRootCategoriesResponse",
+            "properties": {
+                "categories": {
+                    "description": "List of all into type categories supported by the API.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1CategoryDescription"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "GooglePrivacyDlpV2beta1KindExpression": {
             "description": "A representation of a Datastore kind.",
             "id": "GooglePrivacyDlpV2beta1KindExpression",
@@ -586,6 +1252,24 @@
             },
             "type": "object"
         },
+        "GooglePrivacyDlpV2beta1InfoTypeTransformation": {
+            "description": "A transformation to apply to text that is identified as a specific\ninfo_type.",
+            "id": "GooglePrivacyDlpV2beta1InfoTypeTransformation",
+            "properties": {
+                "primitiveTransformation": {
+                    "$ref": "GooglePrivacyDlpV2beta1PrimitiveTransformation",
+                    "description": "Primitive transformation to apply to the info type. [required]"
+                },
+                "infoTypes": {
+                    "description": "Info types to apply the transformation to. Empty list will match all\navailable info types for this transformation.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1InfoType"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "GooglePrivacyDlpV2beta1AnalyzeDataSourceRiskRequest": {
             "description": "Request for creating a risk analysis operation.",
             "id": "GooglePrivacyDlpV2beta1AnalyzeDataSourceRiskRequest",
@@ -601,24 +1285,6 @@
             },
             "type": "object"
         },
-        "GooglePrivacyDlpV2beta1InfoTypeTransformation": {
-            "description": "A transformation to apply to text that is identified as a specific\ninfo_type.",
-            "id": "GooglePrivacyDlpV2beta1InfoTypeTransformation",
-            "properties": {
-                "infoTypes": {
-                    "description": "Info types to apply the transformation to. Empty list will match all\navailable info types for this transformation.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1InfoType"
-                    },
-                    "type": "array"
-                },
-                "primitiveTransformation": {
-                    "$ref": "GooglePrivacyDlpV2beta1PrimitiveTransformation",
-                    "description": "Primitive transformation to apply to the info type. [required]"
-                }
-            },
-            "type": "object"
-        },
         "GooglePrivacyDlpV2beta1KAnonymityResult": {
             "description": "Result of the k-anonymity computation.",
             "id": "GooglePrivacyDlpV2beta1KAnonymityResult",
@@ -637,10 +1303,6 @@
             "description": "Buckets represented as ranges, along with replacement values. Ranges must\nbe non-overlapping.",
             "id": "GooglePrivacyDlpV2beta1Bucket",
             "properties": {
-                "min": {
-                    "$ref": "GooglePrivacyDlpV2beta1Value",
-                    "description": "Lower bound of the range, inclusive. Type should be the same as max if\nused."
-                },
                 "max": {
                     "$ref": "GooglePrivacyDlpV2beta1Value",
                     "description": "Upper bound of the range, exclusive; type must match min."
@@ -648,6 +1310,10 @@
                 "replacementValue": {
                     "$ref": "GooglePrivacyDlpV2beta1Value",
                     "description": "Replacement value for this bucket. If not provided\nthe default behavior will be to hyphenate the min-max range."
+                },
+                "min": {
+                    "$ref": "GooglePrivacyDlpV2beta1Value",
+                    "description": "Lower bound of the range, inclusive. Type should be the same as max if\nused."
                 }
             },
             "type": "object"
@@ -656,6 +1322,16 @@
             "description": "Histogram bucket of value frequencies in the column.",
             "id": "GooglePrivacyDlpV2beta1CategoricalStatsHistogramBucket",
             "properties": {
+                "bucketSize": {
+                    "description": "Total number of records in this bucket.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "valueFrequencyUpperBound": {
+                    "description": "Upper bound on the value frequency of the values in this bucket.",
+                    "format": "int64",
+                    "type": "string"
+                },
                 "valueFrequencyLowerBound": {
                     "description": "Lower bound on the value frequency of the values in this bucket.",
                     "format": "int64",
@@ -667,16 +1343,6 @@
                         "$ref": "GooglePrivacyDlpV2beta1ValueFrequency"
                     },
                     "type": "array"
-                },
-                "bucketSize": {
-                    "description": "Total number of records in this bucket.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "valueFrequencyUpperBound": {
-                    "description": "Upper bound on the value frequency of the values in this bucket.",
-                    "format": "int64",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -726,11 +1392,11 @@
             "description": "Message for a unique key indicating a record that contains a finding.",
             "id": "GooglePrivacyDlpV2beta1RecordKey",
             "properties": {
-                "datastoreKey": {
-                    "$ref": "GooglePrivacyDlpV2beta1DatastoreKey"
-                },
                 "cloudStorageKey": {
                     "$ref": "GooglePrivacyDlpV2beta1CloudStorageKey"
+                },
+                "datastoreKey": {
+                    "$ref": "GooglePrivacyDlpV2beta1DatastoreKey"
                 }
             },
             "type": "object"
@@ -739,13 +1405,6 @@
             "description": "Request to de-identify a list of items.",
             "id": "GooglePrivacyDlpV2beta1DeidentifyContentRequest",
             "properties": {
-                "items": {
-                    "description": "The list of items to inspect. Up to 100 are allowed per request.\nAll items will be treated as text/*.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1ContentItem"
-                    },
-                    "type": "array"
-                },
                 "deidentifyConfig": {
                     "$ref": "GooglePrivacyDlpV2beta1DeidentifyConfig",
                     "description": "Configuration for the de-identification of the list of content items."
@@ -753,6 +1412,13 @@
                 "inspectConfig": {
                     "$ref": "GooglePrivacyDlpV2beta1InspectConfig",
                     "description": "Configuration for the inspector."
+                },
+                "items": {
+                    "description": "The list of items to inspect. Up to 100 are allowed per request.\nAll items will be treated as text/*.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1ContentItem"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -761,16 +1427,16 @@
             "description": "All the findings for a single scanned item.",
             "id": "GooglePrivacyDlpV2beta1InspectResult",
             "properties": {
+                "findingsTruncated": {
+                    "description": "If true, then this item might have more findings than were returned,\nand the findings returned are an arbitrary subset of all findings.\nThe findings list might be truncated because the input items were too\nlarge, or because the server reached the maximum amount of resources\nallowed for a single API call. For best results, divide the input into\nsmaller batches.",
+                    "type": "boolean"
+                },
                 "findings": {
                     "description": "List of findings for an item.",
                     "items": {
                         "$ref": "GooglePrivacyDlpV2beta1Finding"
                     },
                     "type": "array"
-                },
-                "findingsTruncated": {
-                    "description": "If true, then this item might have more findings than were returned,\nand the findings returned are an arbitrary subset of all findings.\nThe findings list might be truncated because the input items were too\nlarge, or because the server reached the maximum amount of resources\nallowed for a single API call. For best results, divide the input into\nsmaller batches.",
-                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -779,6 +1445,11 @@
             "description": "Bounding box encompassing detected text within an image.",
             "id": "GooglePrivacyDlpV2beta1ImageLocation",
             "properties": {
+                "width": {
+                    "description": "Width of the bounding box in pixels.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "height": {
                     "description": "Height of the bounding box in pixels.",
                     "format": "int32",
@@ -793,11 +1464,6 @@
                     "description": "Left coordinate of the bounding box. (0,0) is upper left.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "width": {
-                    "description": "Width of the bounding box in pixels.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -817,6 +1483,10 @@
             "description": "Container structure for the content to inspect.",
             "id": "GooglePrivacyDlpV2beta1ContentItem",
             "properties": {
+                "value": {
+                    "description": "String data to inspect or redact.",
+                    "type": "string"
+                },
                 "table": {
                     "$ref": "GooglePrivacyDlpV2beta1Table",
                     "description": "Structured content for inspection."
@@ -829,10 +1499,6 @@
                 "type": {
                     "description": "Type of the content, as defined in Content-Type HTTP header.\nSupported types are: all \"text\" types, octet streams, PNG images,\nJPEG images.",
                     "type": "string"
-                },
-                "value": {
-                    "description": "String data to inspect or redact.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -841,6 +1507,10 @@
             "description": "Replaces an identifier with an surrogate using FPE with the FFX\nmode of operation.\nThe identifier must be representable by the US-ASCII character set.\nFor a given crypto key and context, the same identifier will be\nreplaced with the same surrogate.\nNote that a given identifier must be either the empty string or be at\nleast two characters long.",
             "id": "GooglePrivacyDlpV2beta1CryptoReplaceFfxFpeConfig",
             "properties": {
+                "customAlphabet": {
+                    "description": "This is supported by mapping these to the alphanumeric characters\nthat the FFX mode natively supports. This happens before/after\nencryption/decryption.\nEach character listed must appear only once.\nNumber of characters must be in the range [2, 62].\nThis must be encoded as ASCII.\nThe order of characters does not matter.",
+                    "type": "string"
+                },
                 "cryptoKey": {
                     "$ref": "GooglePrivacyDlpV2beta1CryptoKey",
                     "description": "The key used by the encryption algorithm. [required]"
@@ -870,10 +1540,6 @@
                 "context": {
                     "$ref": "GooglePrivacyDlpV2beta1FieldId",
                     "description": "A context may be used for higher security since the same\nidentifier in two different contexts likely will be given a distinct\nsurrogate. The principle is that the likeliness is inversely related\nto the ratio of the number of distinct identifiers per context over the\nnumber of possible surrogates: As long as this ratio is small, the\nlikehood is large.\n\nIf the context is not set, a default tweak will be used.\nIf the context is set but:\n\n1. there is no record present when transforming a given value or\n1. the field is not present when transforming a given value,\n\na default tweak will be used.\n\nNote that case (1) is expected when an `InfoTypeTransformation` is\napplied to both structured and non-structured `ContentItem`s.\nCurrently, the referenced field may be of value type integer or string.\n\nThe tweak is constructed as a sequence of bytes in big endian byte order\nsuch that:\n\n- a 64 bit integer is encoded followed by a single byte of value 1\n- a string is encoded in UTF-8 format followed by a single byte of value 2\n\nThis is also known as the 'tweak', as in tweakable encryption."
-                },
-                "customAlphabet": {
-                    "description": "This is supported by mapping these to the alphanumeric characters\nthat the FFX mode natively supports. This happens before/after\nencryption/decryption.\nEach character listed must appear only once.\nNumber of characters must be in the range [2, 62].\nThis must be encoded as ASCII.\nThe order of characters does not matter.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -882,6 +1548,11 @@
             "description": "Represents a color in the RGB color space.",
             "id": "GooglePrivacyDlpV2beta1Color",
             "properties": {
+                "red": {
+                    "description": "The amount of red in the color as a value in the interval [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                },
                 "green": {
                     "description": "The amount of green in the color as a value in the interval [0, 1].",
                     "format": "float",
@@ -891,11 +1562,6 @@
                     "description": "The amount of blue in the color as a value in the interval [0, 1].",
                     "format": "float",
                     "type": "number"
-                },
-                "red": {
-                    "description": "The amount of red in the color as a value in the interval [0, 1].",
-                    "format": "float",
-                    "type": "number"
                 }
             },
             "type": "object"
@@ -935,34 +1601,34 @@
             },
             "type": "object"
         },
+        "GooglePrivacyDlpV2beta1InfoTypeLimit": {
+            "description": "Max findings configuration per info type, per content item or long running\noperation.",
+            "id": "GooglePrivacyDlpV2beta1InfoTypeLimit",
+            "properties": {
+                "maxFindings": {
+                    "description": "Max findings limit for the given infoType.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "infoType": {
+                    "$ref": "GooglePrivacyDlpV2beta1InfoType",
+                    "description": "Type of information the findings limit applies to. Only one limit per\ninfo_type should be provided. If InfoTypeLimit does not have an\ninfo_type, the DLP API applies the limit against all info_types that are\nfound but not specified in another InfoTypeLimit."
+                }
+            },
+            "type": "object"
+        },
         "GooglePrivacyDlpV2beta1CryptoKey": {
             "description": "This is a data encryption key (DEK) (as opposed to\na key encryption key (KEK) stored by KMS).\nWhen using KMS to wrap/unwrap DEKs, be sure to set an appropriate\nIAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot\nunwrap the data crypto key.",
             "id": "GooglePrivacyDlpV2beta1CryptoKey",
             "properties": {
+                "kmsWrapped": {
+                    "$ref": "GooglePrivacyDlpV2beta1KmsWrappedCryptoKey"
+                },
                 "unwrapped": {
                     "$ref": "GooglePrivacyDlpV2beta1UnwrappedCryptoKey"
                 },
                 "transient": {
                     "$ref": "GooglePrivacyDlpV2beta1TransientCryptoKey"
-                },
-                "kmsWrapped": {
-                    "$ref": "GooglePrivacyDlpV2beta1KmsWrappedCryptoKey"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1InfoTypeLimit": {
-            "description": "Max findings configuration per info type, per content item or long running\noperation.",
-            "id": "GooglePrivacyDlpV2beta1InfoTypeLimit",
-            "properties": {
-                "infoType": {
-                    "$ref": "GooglePrivacyDlpV2beta1InfoType",
-                    "description": "Type of information the findings limit applies to. Only one limit per\ninfo_type should be provided. If InfoTypeLimit does not have an\ninfo_type, the DLP API applies the limit against all info_types that are\nfound but not specified in another InfoTypeLimit."
-                },
-                "maxFindings": {
-                    "description": "Max findings limit for the given infoType.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -1000,17 +1666,6 @@
             "description": "Set of primitive values supported by the system.",
             "id": "GooglePrivacyDlpV2beta1Value",
             "properties": {
-                "timestampValue": {
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "booleanValue": {
-                    "type": "boolean"
-                },
-                "floatValue": {
-                    "format": "double",
-                    "type": "number"
-                },
                 "timeValue": {
                     "$ref": "GoogleTypeTimeOfDay"
                 },
@@ -1023,6 +1678,17 @@
                 },
                 "dateValue": {
                     "$ref": "GoogleTypeDate"
+                },
+                "timestampValue": {
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "booleanValue": {
+                    "type": "boolean"
+                },
+                "floatValue": {
+                    "format": "double",
+                    "type": "number"
                 }
             },
             "type": "object"
@@ -1031,10 +1697,6 @@
             "description": "The field type of `value` and `field` do not need to match to be\nconsidered equal, but not all comparisons are possible.\n\nA `value` of type:\n\n- `string` can be compared against all other types\n- `boolean` can only be compared against other booleans\n- `integer` can be compared against doubles or a string if the string value\ncan be parsed as an integer.\n- `double` can be compared against integers or a string if the string can\nbe parsed as a double.\n- `Timestamp` can be compared against strings in RFC 3339 date string\nformat.\n- `TimeOfDay` can be compared against timestamps and strings in the format\nof 'HH:mm:ss'.\n\nIf we fail to compare do to type mismatch, a warning will be given and\nthe condition will evaluate to false.",
             "id": "GooglePrivacyDlpV2beta1Condition",
             "properties": {
-                "field": {
-                    "$ref": "GooglePrivacyDlpV2beta1FieldId",
-                    "description": "Field within the record this condition is evaluated against. [required]"
-                },
                 "operator": {
                     "description": "Operator used to compare the field or info type to the value. [required]",
                     "enum": [
@@ -1062,6 +1724,10 @@
                 "value": {
                     "$ref": "GooglePrivacyDlpV2beta1Value",
                     "description": "Value to compare against. [Required, except for `EXISTS` tests.]"
+                },
+                "field": {
+                    "$ref": "GooglePrivacyDlpV2beta1FieldId",
+                    "description": "Field within the record this condition is evaluated against. [required]"
                 }
             },
             "type": "object"
@@ -1099,13 +1765,6 @@
             "description": "Request to search for potentially sensitive info in a list of items\nand replace it with a default or provided content.",
             "id": "GooglePrivacyDlpV2beta1RedactContentRequest",
             "properties": {
-                "items": {
-                    "description": "The list of items to inspect. Up to 100 are allowed per request.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1ContentItem"
-                    },
-                    "type": "array"
-                },
                 "replaceConfigs": {
                     "description": "The strings to replace findings text findings with. Must specify at least\none of these or one ImageRedactionConfig if redacting images.",
                     "items": {
@@ -1123,6 +1782,27 @@
                 "inspectConfig": {
                     "$ref": "GooglePrivacyDlpV2beta1InspectConfig",
                     "description": "Configuration for the inspector."
+                },
+                "items": {
+                    "description": "The list of items to inspect. Up to 100 are allowed per request.",
+                    "items": {
+                        "$ref": "GooglePrivacyDlpV2beta1ContentItem"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1WordList": {
+            "description": "Message defining a list of words or phrases to search for in the data.",
+            "id": "GooglePrivacyDlpV2beta1WordList",
+            "properties": {
+                "words": {
+                    "description": "Words or phrases defining the dictionary. The dictionary must contain\nat least one phrase and every phrase must contain at least 2 characters\nthat are letters or digits. [required]",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -1142,10 +1822,6 @@
             "description": "Summary of a single tranformation.",
             "id": "GooglePrivacyDlpV2beta1TransformationSummary",
             "properties": {
-                "recordSuppress": {
-                    "$ref": "GooglePrivacyDlpV2beta1RecordSuppression",
-                    "description": "The specific suppression option these stats apply to."
-                },
                 "infoType": {
                     "$ref": "GooglePrivacyDlpV2beta1InfoType",
                     "description": "Set if the transformation was limited to a specific info_type."
@@ -1170,6 +1846,10 @@
                         "$ref": "GooglePrivacyDlpV2beta1FieldTransformation"
                     },
                     "type": "array"
+                },
+                "recordSuppress": {
+                    "$ref": "GooglePrivacyDlpV2beta1RecordSuppression",
+                    "description": "The specific suppression option these stats apply to."
                 }
             },
             "type": "object"
@@ -1184,6 +1864,10 @@
             "description": "Partially mask a string by replacing a given number of characters with a\nfixed character. Masking can start from the beginning or end of the string.\nThis can be used on data of any type (numbers, longs, and so on) and when\nde-identifying structured data we'll attempt to preserve the original data's\ntype. (This allows you to take a long like 123 and modify it to a string like\n**3.",
             "id": "GooglePrivacyDlpV2beta1CharacterMaskConfig",
             "properties": {
+                "maskingCharacter": {
+                    "description": "Character to mask the sensitive values&mdash;for example, \"*\" for an\nalphabetic string such as name, or \"0\" for a numeric string such as ZIP\ncode or credit card number. String must have length 1. If not supplied, we\nwill default to \"*\" for strings, 0 for digits.",
+                    "type": "string"
+                },
                 "reverseOrder": {
                     "description": "Mask characters in reverse order. For example, if `masking_character` is\n'0', number_to_mask is 14, and `reverse_order` is false, then\n1234-5678-9012-3456 -> 00000000000000-3456\nIf `masking_character` is '*', `number_to_mask` is 3, and `reverse_order`\nis true, then 12345 -> 12***",
                     "type": "boolean"
@@ -1199,10 +1883,6 @@
                         "$ref": "GooglePrivacyDlpV2beta1CharsToIgnore"
                     },
                     "type": "array"
-                },
-                "maskingCharacter": {
-                    "description": "Character to mask the sensitive values&mdash;for example, \"*\" for an\nalphabetic string such as name, or \"0\" for a numeric string such as ZIP\ncode or credit card number. String must have length 1. If not supplied, we\nwill default to \"*\" for strings, 0 for digits.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1222,10 +1902,6 @@
             "description": "Request for scheduling a scan of a data subset from a Google Platform data\nrepository.",
             "id": "GooglePrivacyDlpV2beta1CreateInspectOperationRequest",
             "properties": {
-                "operationConfig": {
-                    "$ref": "GooglePrivacyDlpV2beta1OperationConfig",
-                    "description": "Additional configuration settings for long running operations."
-                },
                 "inspectConfig": {
                     "$ref": "GooglePrivacyDlpV2beta1InspectConfig",
                     "description": "Configuration for the inspector."
@@ -1237,6 +1913,26 @@
                 "outputConfig": {
                     "$ref": "GooglePrivacyDlpV2beta1OutputStorageConfig",
                     "description": "Optional location to store findings."
+                },
+                "operationConfig": {
+                    "$ref": "GooglePrivacyDlpV2beta1OperationConfig",
+                    "description": "Additional configuration settings for long running operations."
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1InfoTypeStatistics": {
+            "description": "Statistics regarding a specific InfoType.",
+            "id": "GooglePrivacyDlpV2beta1InfoTypeStatistics",
+            "properties": {
+                "count": {
+                    "description": "Number of findings for this info type.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "infoType": {
+                    "$ref": "GooglePrivacyDlpV2beta1InfoType",
+                    "description": "The type of finding this stat is for."
                 }
             },
             "type": "object"
@@ -1255,22 +1951,6 @@
             },
             "type": "object"
         },
-        "GooglePrivacyDlpV2beta1InfoTypeStatistics": {
-            "description": "Statistics regarding a specific InfoType.",
-            "id": "GooglePrivacyDlpV2beta1InfoTypeStatistics",
-            "properties": {
-                "infoType": {
-                    "$ref": "GooglePrivacyDlpV2beta1InfoType",
-                    "description": "The type of finding this stat is for."
-                },
-                "count": {
-                    "description": "Number of findings for this info type.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "GooglePrivacyDlpV2beta1PropertyReference": {
             "description": "A reference to a property relative to the Datastore kind expressions.",
             "id": "GooglePrivacyDlpV2beta1PropertyReference",
@@ -1282,6 +1962,21 @@
             },
             "type": "object"
         },
+        "GooglePrivacyDlpV2beta1OutputStorageConfig": {
+            "description": "Cloud repository for storing output.",
+            "id": "GooglePrivacyDlpV2beta1OutputStorageConfig",
+            "properties": {
+                "storagePath": {
+                    "$ref": "GooglePrivacyDlpV2beta1CloudStoragePath",
+                    "description": "The path to a Google Cloud Storage location to store output.\nThe bucket must already exist and\nthe Google APIs service account for DLP must have write permission to\nwrite to the given bucket.\nResults are split over multiple csv files with each file name matching\nthe pattern \"[operation_id]_[count].csv\", for example\n`3094877188788974909_1.csv`. The `operation_id` matches the\nidentifier for the Operation, and the `count` is a counter used for\ntracking the number of files written.\n\nThe CSV file(s) contain the following columns regardless of storage type\nscanned:\n- id\n- info_type\n- likelihood\n- byte size of finding\n- quote\n- timestamp\n\nFor Cloud Storage the next columns are:\n\n- file_path\n- start_offset\n\nFor Cloud Datastore the next columns are:\n\n- project_id\n- namespace_id\n- path\n- column_name\n- offset\n\nFor BigQuery the next columns are:\n\n- row_number\n- project_id\n- dataset_id\n- table_id"
+                },
+                "table": {
+                    "$ref": "GooglePrivacyDlpV2beta1BigQueryTable",
+                    "description": "Store findings in a new table in the dataset."
+                }
+            },
+            "type": "object"
+        },
         "GooglePrivacyDlpV2beta1FieldTransformation": {
             "description": "The transformation to apply to the field.",
             "id": "GooglePrivacyDlpV2beta1FieldTransformation",
@@ -1308,21 +2003,6 @@
             },
             "type": "object"
         },
-        "GooglePrivacyDlpV2beta1OutputStorageConfig": {
-            "description": "Cloud repository for storing output.",
-            "id": "GooglePrivacyDlpV2beta1OutputStorageConfig",
-            "properties": {
-                "table": {
-                    "$ref": "GooglePrivacyDlpV2beta1BigQueryTable",
-                    "description": "Store findings in a new table in the dataset."
-                },
-                "storagePath": {
-                    "$ref": "GooglePrivacyDlpV2beta1CloudStoragePath",
-                    "description": "The path to a Google Cloud Storage location to store output.\nThe bucket must already exist and\nthe Google APIs service account for DLP must have write permission to\nwrite to the given bucket.\nResults are split over multiple csv files with each file name matching\nthe pattern \"[operation_id]_[count].csv\", for example\n`3094877188788974909_1.csv`. The `operation_id` matches the\nidentifier for the Operation, and the `count` is a counter used for\ntracking the number of files written.\n\nThe CSV file(s) contain the following columns regardless of storage type\nscanned:\n- id\n- info_type\n- likelihood\n- byte size of finding\n- quote\n- timestamp\n\nFor Cloud Storage the next columns are:\n\n- file_path\n- start_offset\n\nFor Cloud Datastore the next columns are:\n\n- project_id\n- namespace_id\n- path\n- column_name\n- offset\n\nFor BigQuery the next columns are:\n\n- row_number\n- project_id\n- dataset_id\n- table_id"
-                }
-            },
-            "type": "object"
-        },
         "GooglePrivacyDlpV2beta1BucketingConfig": {
             "description": "Generalization function that buckets values based on ranges. The ranges and\nreplacement values are dynamically provided by the user for custom behavior,\nsuch as 1-30 -> LOW 31-65 -> MEDIUM 66-100 -> HIGH\nThis can be used on\ndata of type: number, long, string, timestamp.\nIf the bound `Value` type differs from the type of data being transformed, we\nwill first attempt converting the type of the data to be transformed to match\nthe type of the bound before comparing.",
             "id": "GooglePrivacyDlpV2beta1BucketingConfig",
@@ -1379,18 +2059,6 @@
             "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
             "id": "GoogleLongrunningOperation",
             "properties": {
-                "error": {
-                    "$ref": "GoogleRpcStatus",
-                    "description": "The error result of the operation in case of failure or cancellation."
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "This field will contain an InspectOperationMetadata object for `inspect.operations.create` or a RiskAnalysisOperationMetadata object for `dataSource.analyze`.  This will always be returned with the Operation.",
-                    "type": "object"
-                },
                 "done": {
                     "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
                     "type": "boolean"
@@ -1406,6 +2074,18 @@
                 "name": {
                     "description": "The server-assigned name. The `name` should have the format of `inspect/operations/<identifier>`.",
                     "type": "string"
+                },
+                "error": {
+                    "$ref": "GoogleRpcStatus",
+                    "description": "The error result of the operation in case of failure or cancellation."
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "This field will contain an InspectOperationMetadata object for `inspect.operations.create` or a RiskAnalysisOperationMetadata object for `dataSource.analyze`.  This will always be returned with the Operation.",
+                    "type": "object"
                 }
             },
             "type": "object"
@@ -1430,15 +2110,24 @@
             "description": "Metadata returned within GetOperation for an inspect request.",
             "id": "GooglePrivacyDlpV2beta1InspectOperationMetadata",
             "properties": {
-                "requestStorageConfig": {
-                    "$ref": "GooglePrivacyDlpV2beta1StorageConfig",
-                    "description": "The storage config used to create the Operation."
+                "requestOutputConfig": {
+                    "$ref": "GooglePrivacyDlpV2beta1OutputStorageConfig",
+                    "description": "Optional location to store findings."
+                },
+                "createTime": {
+                    "description": "The time which this request was started.",
+                    "format": "google-datetime",
+                    "type": "string"
                 },
                 "processedBytes": {
                     "description": "Total size in bytes that were processed.",
                     "format": "int64",
                     "type": "string"
                 },
+                "requestStorageConfig": {
+                    "$ref": "GooglePrivacyDlpV2beta1StorageConfig",
+                    "description": "The storage config used to create the Operation."
+                },
                 "totalEstimatedBytes": {
                     "description": "Estimate of the number of bytes to process.",
                     "format": "int64",
@@ -1453,15 +2142,6 @@
                 "requestInspectConfig": {
                     "$ref": "GooglePrivacyDlpV2beta1InspectConfig",
                     "description": "The inspect config used to create the Operation."
-                },
-                "requestOutputConfig": {
-                    "$ref": "GooglePrivacyDlpV2beta1OutputStorageConfig",
-                    "description": "Optional location to store findings."
-                },
-                "createTime": {
-                    "description": "The time which this request was started.",
-                    "format": "google-datetime",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1481,9 +2161,6 @@
             "description": "Characters to skip when doing deidentification of a value. These will be left\nalone and skipped.",
             "id": "GooglePrivacyDlpV2beta1CharsToIgnore",
             "properties": {
-                "charactersToSkip": {
-                    "type": "string"
-                },
                 "commonCharactersToIgnore": {
                     "enum": [
                         "CHARACTER_GROUP_UNSPECIFIED",
@@ -1502,6 +2179,9 @@
                         "Whitespace character, one of [ \\t\\n\\x0B\\f\\r]"
                     ],
                     "type": "string"
+                },
+                "charactersToSkip": {
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1510,6 +2190,10 @@
             "description": "Buckets values based on fixed size ranges. The\nBucketing transformation can provide all of this functionality,\nbut requires more configuration. This message is provided as a convenience to\nthe user for simple bucketing strategies.\nThe resulting value will be a hyphenated string of\nlower_bound-upper_bound.\nThis can be used on data of type: double, long.\nIf the bound Value type differs from the type of data\nbeing transformed, we will first attempt converting the type of the data to\nbe transformed to match the type of the bound before comparing.",
             "id": "GooglePrivacyDlpV2beta1FixedSizeBucketingConfig",
             "properties": {
+                "upperBound": {
+                    "$ref": "GooglePrivacyDlpV2beta1Value",
+                    "description": "Upper bound value of buckets. All values greater than upper_bound are\ngrouped together into a single bucket; for example if `upper_bound` = 89,\nthen all values greater than 89 are replaced with the value “89+”.\n[Required]."
+                },
                 "lowerBound": {
                     "$ref": "GooglePrivacyDlpV2beta1Value",
                     "description": "Lower bound value of buckets. All values less than `lower_bound` are\ngrouped together into a single bucket; for example if `lower_bound` = 10,\nthen all values less than 10 are replaced with the value “-10”. [Required]."
@@ -1518,10 +2202,6 @@
                     "description": "Size of each bucket (except for minimum and maximum buckets). So if\n`lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the\nfollowing buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,\n60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works. [Required].",
                     "format": "double",
                     "type": "number"
-                },
-                "upperBound": {
-                    "$ref": "GooglePrivacyDlpV2beta1Value",
-                    "description": "Upper bound value of buckets. All values greater than upper_bound are\ngrouped together into a single bucket; for example if `upper_bound` = 89,\nthen all values greater than 89 are replaced with the value “89+”.\n[Required]."
                 }
             },
             "type": "object"
@@ -1530,9 +2210,6 @@
             "description": "Result of a risk analysis\n[`Operation`](/dlp/docs/reference/rest/v2beta1/inspect.operations)\nrequest.",
             "id": "GooglePrivacyDlpV2beta1RiskAnalysisOperationResult",
             "properties": {
-                "numericalStatsResult": {
-                    "$ref": "GooglePrivacyDlpV2beta1NumericalStatsResult"
-                },
                 "kAnonymityResult": {
                     "$ref": "GooglePrivacyDlpV2beta1KAnonymityResult"
                 },
@@ -1541,6 +2218,24 @@
                 },
                 "categoricalStatsResult": {
                     "$ref": "GooglePrivacyDlpV2beta1CategoricalStatsResult"
+                },
+                "numericalStatsResult": {
+                    "$ref": "GooglePrivacyDlpV2beta1NumericalStatsResult"
+                }
+            },
+            "type": "object"
+        },
+        "GooglePrivacyDlpV2beta1CategoryDescription": {
+            "description": "Info Type Category description.",
+            "id": "GooglePrivacyDlpV2beta1CategoryDescription",
+            "properties": {
+                "name": {
+                    "description": "Internal name of the category.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "Human readable form of the category name.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1557,28 +2252,10 @@
             },
             "type": "object"
         },
-        "GooglePrivacyDlpV2beta1CategoryDescription": {
-            "description": "Info Type Category description.",
-            "id": "GooglePrivacyDlpV2beta1CategoryDescription",
-            "properties": {
-                "displayName": {
-                    "description": "Human readable form of the category name.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Internal name of the category.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "GooglePrivacyDlpV2beta1PrimitiveTransformation": {
             "description": "A rule for transforming a value.",
             "id": "GooglePrivacyDlpV2beta1PrimitiveTransformation",
             "properties": {
-                "replaceConfig": {
-                    "$ref": "GooglePrivacyDlpV2beta1ReplaceValueConfig"
-                },
                 "timePartConfig": {
                     "$ref": "GooglePrivacyDlpV2beta1TimePartConfig"
                 },
@@ -1602,6 +2279,9 @@
                 },
                 "cryptoReplaceFfxFpeConfig": {
                     "$ref": "GooglePrivacyDlpV2beta1CryptoReplaceFfxFpeConfig"
+                },
+                "replaceConfig": {
+                    "$ref": "GooglePrivacyDlpV2beta1ReplaceValueConfig"
                 }
             },
             "type": "object"
@@ -1665,6 +2345,10 @@
             "description": "Metadata returned within the\n[`riskAnalysis.operations.get`](/dlp/docs/reference/rest/v2beta1/riskAnalysis.operations/get)\nfor risk analysis.",
             "id": "GooglePrivacyDlpV2beta1RiskAnalysisOperationMetadata",
             "properties": {
+                "requestedPrivacyMetric": {
+                    "$ref": "GooglePrivacyDlpV2beta1PrivacyMetric",
+                    "description": "Privacy metric to compute."
+                },
                 "createTime": {
                     "description": "The time which this request was started.",
                     "format": "google-datetime",
@@ -1673,10 +2357,6 @@
                 "requestedSourceTable": {
                     "$ref": "GooglePrivacyDlpV2beta1BigQueryTable",
                     "description": "Input dataset to compute metrics over."
-                },
-                "requestedPrivacyMetric": {
-                    "$ref": "GooglePrivacyDlpV2beta1PrivacyMetric",
-                    "description": "Privacy metric to compute."
                 }
             },
             "type": "object"
@@ -1685,16 +2365,16 @@
             "description": "The response message for Operations.ListOperations.",
             "id": "GoogleLongrunningListOperationsResponse",
             "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
                 "operations": {
                     "description": "A list of operations that matches the specified filter in the request.",
                     "items": {
                         "$ref": "GoogleLongrunningOperation"
                     },
                     "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1711,6 +2391,12 @@
             },
             "type": "object"
         },
+        "GoogleProtobufEmpty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "GoogleProtobufEmpty",
+            "properties": {},
+            "type": "object"
+        },
         "GooglePrivacyDlpV2beta1ListInspectFindingsResponse": {
             "description": "Response to the ListInspectFindings request.",
             "id": "GooglePrivacyDlpV2beta1ListInspectFindingsResponse",
@@ -1726,12 +2412,6 @@
             },
             "type": "object"
         },
-        "GoogleProtobufEmpty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "GoogleProtobufEmpty",
-            "properties": {},
-            "type": "object"
-        },
         "GooglePrivacyDlpV2beta1Expressions": {
             "description": "A collection of expressions",
             "id": "GooglePrivacyDlpV2beta1Expressions",
@@ -1815,6 +2495,23 @@
             },
             "type": "object"
         },
+        "GooglePrivacyDlpV2beta1Range": {
+            "description": "Generic half-open interval [start, end)",
+            "id": "GooglePrivacyDlpV2beta1Range",
+            "properties": {
+                "start": {
+                    "description": "Index of the first character of the range (inclusive).",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "end": {
+                    "description": "Index of the last character of the range (exclusive).",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GooglePrivacyDlpV2beta1LDiversityResult": {
             "description": "Result of the l-diversity computation.",
             "id": "GooglePrivacyDlpV2beta1LDiversityResult",
@@ -1843,37 +2540,10 @@
             },
             "type": "object"
         },
-        "GooglePrivacyDlpV2beta1Range": {
-            "description": "Generic half-open interval [start, end)",
-            "id": "GooglePrivacyDlpV2beta1Range",
-            "properties": {
-                "start": {
-                    "description": "Index of the first character of the range (inclusive).",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "end": {
-                    "description": "Index of the last character of the range (exclusive).",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "GoogleTypeTimeOfDay": {
             "description": "Represents a time of day. The date and time zone are either not significant\nor are specified elsewhere. An API may choose to allow leap seconds. Related\ntypes are google.type.Date and `google.protobuf.Timestamp`.",
             "id": "GoogleTypeTimeOfDay",
             "properties": {
-                "nanos": {
-                    "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "seconds": {
-                    "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may\nallow the value 60 if it allows leap-seconds.",
-                    "format": "int32",
-                    "type": "integer"
-                },
                 "minutes": {
                     "description": "Minutes of hour of day. Must be from 0 to 59.",
                     "format": "int32",
@@ -1883,6 +2553,16 @@
                     "description": "Hours of day in 24 hour format. Should be from 0 to 23. An API may choose\nto allow the value \"24:00:00\" for scenarios like business closing time.",
                     "format": "int32",
                     "type": "integer"
+                },
+                "nanos": {
+                    "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "seconds": {
+                    "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may\nallow the value 60 if it allows leap-seconds.",
+                    "format": "int32",
+                    "type": "integer"
                 }
             },
             "type": "object"
@@ -1938,639 +2618,6 @@
                 }
             },
             "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1OperationConfig": {
-            "description": "Additional configuration for inspect long running operations.",
-            "id": "GooglePrivacyDlpV2beta1OperationConfig",
-            "properties": {
-                "maxItemFindings": {
-                    "description": "Max number of findings per file, Datastore entity, or database row.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1BigQueryOptions": {
-            "description": "Options defining BigQuery table and row identifiers.",
-            "id": "GooglePrivacyDlpV2beta1BigQueryOptions",
-            "properties": {
-                "tableReference": {
-                    "$ref": "GooglePrivacyDlpV2beta1BigQueryTable",
-                    "description": "Complete BigQuery table reference."
-                },
-                "identifyingFields": {
-                    "description": "References to fields uniquely identifying rows within the table.\nNested fields in the format, like `person.birthdate.year`, are allowed.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1FieldId"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1PrivacyMetric": {
-            "description": "Privacy metric to compute for reidentification risk analysis.",
-            "id": "GooglePrivacyDlpV2beta1PrivacyMetric",
-            "properties": {
-                "numericalStatsConfig": {
-                    "$ref": "GooglePrivacyDlpV2beta1NumericalStatsConfig"
-                },
-                "kAnonymityConfig": {
-                    "$ref": "GooglePrivacyDlpV2beta1KAnonymityConfig"
-                },
-                "categoricalStatsConfig": {
-                    "$ref": "GooglePrivacyDlpV2beta1CategoricalStatsConfig"
-                },
-                "lDiversityConfig": {
-                    "$ref": "GooglePrivacyDlpV2beta1LDiversityConfig"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1ReplaceConfig": {
-            "id": "GooglePrivacyDlpV2beta1ReplaceConfig",
-            "properties": {
-                "infoType": {
-                    "$ref": "GooglePrivacyDlpV2beta1InfoType",
-                    "description": "Type of information to replace. Only one ReplaceConfig per info_type\nshould be provided. If ReplaceConfig does not have an info_type, the DLP\nAPI matches it against all info_types that are found but not specified in\nanother ReplaceConfig."
-                },
-                "replaceWith": {
-                    "description": "Content replacing sensitive information of given type. Max 256 chars.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1LDiversityEquivalenceClass": {
-            "description": "The set of columns' values that share the same l-diversity value.",
-            "id": "GooglePrivacyDlpV2beta1LDiversityEquivalenceClass",
-            "properties": {
-                "equivalenceClassSize": {
-                    "description": "Size of the k-anonymity equivalence class.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "quasiIdsValues": {
-                    "description": "Quasi-identifier values defining the k-anonymity equivalence\nclass. The order is always the same as the original request.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1Value"
-                    },
-                    "type": "array"
-                },
-                "numDistinctSensitiveValues": {
-                    "description": "Number of distinct sensitive values in this equivalence class.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "topSensitiveValues": {
-                    "description": "Estimated frequencies of top sensitive values.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1ValueFrequency"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1NumericalStatsConfig": {
-            "description": "Compute numerical stats over an individual column, including\nmin, max, and quantiles.",
-            "id": "GooglePrivacyDlpV2beta1NumericalStatsConfig",
-            "properties": {
-                "field": {
-                    "$ref": "GooglePrivacyDlpV2beta1FieldId",
-                    "description": "Field to compute numerical stats on. Supported types are\ninteger, float, date, datetime, timestamp, time."
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1TimePartConfig": {
-            "description": "For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a\nportion of the value.",
-            "id": "GooglePrivacyDlpV2beta1TimePartConfig",
-            "properties": {
-                "partToExtract": {
-                    "enum": [
-                        "TIME_PART_UNSPECIFIED",
-                        "YEAR",
-                        "MONTH",
-                        "DAY_OF_MONTH",
-                        "DAY_OF_WEEK",
-                        "WEEK_OF_YEAR",
-                        "HOUR_OF_DAY"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "[000-9999]",
-                        "[1-12]",
-                        "[1-31]",
-                        "[1-7]",
-                        "[1-52]",
-                        "[0-24]"
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1RecordCondition": {
-            "description": "A condition for determing whether a transformation should be applied to\na field.",
-            "id": "GooglePrivacyDlpV2beta1RecordCondition",
-            "properties": {
-                "expressions": {
-                    "$ref": "GooglePrivacyDlpV2beta1Expressions"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1DeidentificationSummary": {
-            "description": "High level summary of deidentification.",
-            "id": "GooglePrivacyDlpV2beta1DeidentificationSummary",
-            "properties": {
-                "transformationSummaries": {
-                    "description": "Transformations applied to the dataset.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1TransformationSummary"
-                    },
-                    "type": "array"
-                },
-                "transformedBytes": {
-                    "description": "Total size in bytes that were transformed in some way.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1ListInfoTypesResponse": {
-            "description": "Response to the ListInfoTypes request.",
-            "id": "GooglePrivacyDlpV2beta1ListInfoTypesResponse",
-            "properties": {
-                "infoTypes": {
-                    "description": "Set of sensitive info types belonging to a category.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1InfoTypeDescription"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1CloudStorageKey": {
-            "description": "Record key for a finding in a Cloud Storage file.",
-            "id": "GooglePrivacyDlpV2beta1CloudStorageKey",
-            "properties": {
-                "filePath": {
-                    "description": "Path to the file.",
-                    "type": "string"
-                },
-                "startOffset": {
-                    "description": "Byte offset of the referenced data in the file.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1NumericalStatsResult": {
-            "description": "Result of the numerical stats computation.",
-            "id": "GooglePrivacyDlpV2beta1NumericalStatsResult",
-            "properties": {
-                "minValue": {
-                    "$ref": "GooglePrivacyDlpV2beta1Value",
-                    "description": "Minimum value appearing in the column."
-                },
-                "maxValue": {
-                    "$ref": "GooglePrivacyDlpV2beta1Value",
-                    "description": "Maximum value appearing in the column."
-                },
-                "quantileValues": {
-                    "description": "List of 99 values that partition the set of field values into 100 equal\nsized buckets.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1Value"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1DatastoreOptions": {
-            "description": "Options defining a data set within Google Cloud Datastore.",
-            "id": "GooglePrivacyDlpV2beta1DatastoreOptions",
-            "properties": {
-                "kind": {
-                    "$ref": "GooglePrivacyDlpV2beta1KindExpression",
-                    "description": "The kind to process."
-                },
-                "projection": {
-                    "description": "Properties to scan. If none are specified, all properties will be scanned\nby default.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1Projection"
-                    },
-                    "type": "array"
-                },
-                "partitionId": {
-                    "$ref": "GooglePrivacyDlpV2beta1PartitionId",
-                    "description": "A partition ID identifies a grouping of entities. The grouping is always\nby project and namespace, however the namespace ID may be empty."
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1RecordTransformations": {
-            "description": "A type of transformation that is applied over structured data such as a\ntable.",
-            "id": "GooglePrivacyDlpV2beta1RecordTransformations",
-            "properties": {
-                "fieldTransformations": {
-                    "description": "Transform the record by applying various field transformations.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1FieldTransformation"
-                    },
-                    "type": "array"
-                },
-                "recordSuppressions": {
-                    "description": "Configuration defining which records get suppressed entirely. Records that\nmatch any suppression rule are omitted from the output [optional].",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1RecordSuppression"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1InspectConfig": {
-            "description": "Configuration description of the scanning process.\nWhen used with redactContent only info_types and min_likelihood are currently\nused.",
-            "id": "GooglePrivacyDlpV2beta1InspectConfig",
-            "properties": {
-                "excludeTypes": {
-                    "description": "When true, excludes type information of the findings.",
-                    "type": "boolean"
-                },
-                "minLikelihood": {
-                    "description": "Only returns findings equal or above this threshold.",
-                    "enum": [
-                        "LIKELIHOOD_UNSPECIFIED",
-                        "VERY_UNLIKELY",
-                        "UNLIKELY",
-                        "POSSIBLE",
-                        "LIKELY",
-                        "VERY_LIKELY"
-                    ],
-                    "enumDescriptions": [
-                        "Default value; information with all likelihoods is included.",
-                        "Few matching elements.",
-                        "",
-                        "Some matching elements.",
-                        "",
-                        "Many matching elements."
-                    ],
-                    "type": "string"
-                },
-                "infoTypeLimits": {
-                    "description": "Configuration of findings limit given for specified info types.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1InfoTypeLimit"
-                    },
-                    "type": "array"
-                },
-                "maxFindings": {
-                    "description": "Limits the number of findings per content item or long running operation.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "infoTypes": {
-                    "description": "Restricts what info_types to look for. The values must correspond to\nInfoType values returned by ListInfoTypes or found in documentation.\nEmpty info_types runs all enabled detectors.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1InfoType"
-                    },
-                    "type": "array"
-                },
-                "includeQuote": {
-                    "description": "When true, a contextual quote from the data that triggered a finding is\nincluded in the response; see Finding.quote.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1Projection": {
-            "description": "A representation of a Datastore property in a projection.",
-            "id": "GooglePrivacyDlpV2beta1Projection",
-            "properties": {
-                "property": {
-                    "$ref": "GooglePrivacyDlpV2beta1PropertyReference",
-                    "description": "The property to project."
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1RedactConfig": {
-            "description": "Redact a given value. For example, if used with an `InfoTypeTransformation`\ntransforming PHONE_NUMBER, and input 'My phone number is 206-555-0123', the\noutput would be 'My phone number is '.",
-            "id": "GooglePrivacyDlpV2beta1RedactConfig",
-            "properties": {},
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1CryptoHashConfig": {
-            "description": "Pseudonymization method that generates surrogates via cryptographic hashing.\nUses SHA-256.\nOutputs a 32 byte digest as an uppercase hex string\n(for example, 41D1567F7F99F1DC2A5FAB886DEE5BEE).\nCurrently, only string and integer values can be hashed.",
-            "id": "GooglePrivacyDlpV2beta1CryptoHashConfig",
-            "properties": {
-                "cryptoKey": {
-                    "$ref": "GooglePrivacyDlpV2beta1CryptoKey",
-                    "description": "The key used by the hash function."
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1Key": {
-            "description": "A unique identifier for a Datastore entity.\nIf a key's partition ID or any of its path kinds or names are\nreserved/read-only, the key is reserved/read-only.\nA reserved/read-only key is forbidden in certain documented contexts.",
-            "id": "GooglePrivacyDlpV2beta1Key",
-            "properties": {
-                "partitionId": {
-                    "$ref": "GooglePrivacyDlpV2beta1PartitionId",
-                    "description": "Entities are partitioned into subsets, currently identified by a project\nID and namespace ID.\nQueries are scoped to a single partition."
-                },
-                "path": {
-                    "description": "The entity path.\nAn entity path consists of one or more elements composed of a kind and a\nstring or numerical identifier, which identify entities. The first\nelement identifies a _root entity_, the second element identifies\na _child_ of the root entity, the third element identifies a child of the\nsecond entity, and so forth. The entities identified by all prefixes of\nthe path are called the element's _ancestors_.\n\nA path can never be empty, and a path can have at most 100 elements.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1PathElement"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1InspectContentRequest": {
-            "description": "Request to search for potentially sensitive info in a list of items.",
-            "id": "GooglePrivacyDlpV2beta1InspectContentRequest",
-            "properties": {
-                "inspectConfig": {
-                    "$ref": "GooglePrivacyDlpV2beta1InspectConfig",
-                    "description": "Configuration for the inspector."
-                },
-                "items": {
-                    "description": "The list of items to inspect. Items in a single request are\nconsidered \"related\" unless inspect_config.independent_inputs is true.\nUp to 100 are allowed per request.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1ContentItem"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleTypeDate": {
-            "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.",
-            "id": "GoogleTypeDate",
-            "properties": {
-                "year": {
-                    "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "day": {
-                    "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "month": {
-                    "description": "Month of year. Must be from 1 to 12.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1ReplaceWithInfoTypeConfig": {
-            "description": "Replace each matching finding with the name of the info_type.",
-            "id": "GooglePrivacyDlpV2beta1ReplaceWithInfoTypeConfig",
-            "properties": {},
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1ImageRedactionConfig": {
-            "description": "Configuration for determing how redaction of images should occur.",
-            "id": "GooglePrivacyDlpV2beta1ImageRedactionConfig",
-            "properties": {
-                "infoType": {
-                    "$ref": "GooglePrivacyDlpV2beta1InfoType",
-                    "description": "Only one per info_type should be provided per request. If not\nspecified, and redact_all_text is false, the DLP API will redact all\ntext that it matches against all info_types that are found, but not\nspecified in another ImageRedactionConfig."
-                },
-                "redactionColor": {
-                    "$ref": "GooglePrivacyDlpV2beta1Color",
-                    "description": "The color to use when redacting content from an image. If not specified,\nthe default is black."
-                },
-                "redactAllText": {
-                    "description": "If true, all text found in the image, regardless whether it matches an\ninfo_type, is redacted.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1Location": {
-            "description": "Specifies the location of a finding within its source item.",
-            "id": "GooglePrivacyDlpV2beta1Location",
-            "properties": {
-                "tableLocation": {
-                    "$ref": "GooglePrivacyDlpV2beta1TableLocation",
-                    "description": "Location within a `ContentItem.Table`."
-                },
-                "codepointRange": {
-                    "$ref": "GooglePrivacyDlpV2beta1Range",
-                    "description": "Character offsets within a content item, included when content type\nis a text. Default charset assumed to be UTF-8."
-                },
-                "fieldId": {
-                    "$ref": "GooglePrivacyDlpV2beta1FieldId",
-                    "description": "Field id of the field containing the finding."
-                },
-                "imageBoxes": {
-                    "description": "Location within an image's pixels.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1ImageLocation"
-                    },
-                    "type": "array"
-                },
-                "byteRange": {
-                    "$ref": "GooglePrivacyDlpV2beta1Range",
-                    "description": "Zero-based byte offsets within a content item."
-                },
-                "recordKey": {
-                    "$ref": "GooglePrivacyDlpV2beta1RecordKey",
-                    "description": "Key of the finding."
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1RecordSuppression": {
-            "description": "Configuration to suppress records whose suppression conditions evaluate to\ntrue.",
-            "id": "GooglePrivacyDlpV2beta1RecordSuppression",
-            "properties": {
-                "condition": {
-                    "$ref": "GooglePrivacyDlpV2beta1RecordCondition"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1InfoTypeDescription": {
-            "description": "Description of the information type (infoType).",
-            "id": "GooglePrivacyDlpV2beta1InfoTypeDescription",
-            "properties": {
-                "displayName": {
-                    "description": "Human readable form of the infoType name.",
-                    "type": "string"
-                },
-                "categories": {
-                    "description": "List of categories this infoType belongs to.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1CategoryDescription"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "Internal name of the infoType.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1EntityId": {
-            "description": "An entity in a dataset is a field or set of fields that correspond to a\nsingle person. For example, in medical records the `EntityId` might be\na patient identifier, or for financial records it might be an account\nidentifier. This message is used when generalizations or analysis must be\nconsistent across multiple rows pertaining to the same entity.",
-            "id": "GooglePrivacyDlpV2beta1EntityId",
-            "properties": {
-                "field": {
-                    "$ref": "GooglePrivacyDlpV2beta1FieldId",
-                    "description": "Composite key indicating which field contains the entity identifier."
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1UnwrappedCryptoKey": {
-            "description": "Using raw keys is prone to security risks due to accidentally\nleaking the key. Choose another type of key if possible.",
-            "id": "GooglePrivacyDlpV2beta1UnwrappedCryptoKey",
-            "properties": {
-                "key": {
-                    "description": "The AES 128/192/256 bit key. [required]",
-                    "format": "byte",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleRpcStatus": {
-            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
-            "id": "GoogleRpcStatus",
-            "properties": {
-                "details": {
-                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                },
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1PathElement": {
-            "description": "A (kind, ID/name) pair used to construct a key path.\n\nIf either name or ID is set, the element is complete.\nIf neither is set, the element is incomplete.",
-            "id": "GooglePrivacyDlpV2beta1PathElement",
-            "properties": {
-                "name": {
-                    "description": "The name of the entity.\nA name matching regex `__.*__` is reserved/read-only.\nA name must not be more than 1500 bytes when UTF-8 encoded.\nCannot be `\"\"`.",
-                    "type": "string"
-                },
-                "kind": {
-                    "description": "The kind of the entity.\nA kind matching regex `__.*__` is reserved/read-only.\nA kind must not contain more than 1500 bytes when UTF-8 encoded.\nCannot be `\"\"`.",
-                    "type": "string"
-                },
-                "id": {
-                    "description": "The auto-allocated ID of the entity.\nNever equal to zero. Values less than zero are discouraged and may not\nbe supported in the future.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1BigQueryTable": {
-            "description": "Message defining the location of a BigQuery table. A table is uniquely\nidentified  by its project_id, dataset_id, and table_name. Within a query\na table is often referenced with a string in the format of:\n`<project_id>:<dataset_id>.<table_id>` or\n`<project_id>.<dataset_id>.<table_id>`.",
-            "id": "GooglePrivacyDlpV2beta1BigQueryTable",
-            "properties": {
-                "tableId": {
-                    "description": "Name of the table.",
-                    "type": "string"
-                },
-                "projectId": {
-                    "description": "The Google Cloud Platform project ID of the project containing the table.\nIf omitted, project ID is inferred from the API call.",
-                    "type": "string"
-                },
-                "datasetId": {
-                    "description": "Dataset ID of the table.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1SummaryResult": {
-            "description": "A collection that informs the user the number of times a particular\n`TransformationResultCode` and error details occurred.",
-            "id": "GooglePrivacyDlpV2beta1SummaryResult",
-            "properties": {
-                "details": {
-                    "description": "A place for warnings or errors to show up if a transformation didn't\nwork as expected.",
-                    "type": "string"
-                },
-                "count": {
-                    "format": "int64",
-                    "type": "string"
-                },
-                "code": {
-                    "enum": [
-                        "TRANSFORMATION_RESULT_CODE_UNSPECIFIED",
-                        "SUCCESS",
-                        "ERROR"
-                    ],
-                    "enumDescriptions": [
-                        "",
-                        "",
-                        ""
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1ListRootCategoriesResponse": {
-            "description": "Response for ListRootCategories request.",
-            "id": "GooglePrivacyDlpV2beta1ListRootCategoriesResponse",
-            "properties": {
-                "categories": {
-                    "description": "List of all into type categories supported by the API.",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1CategoryDescription"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GooglePrivacyDlpV2beta1InfoTypeTransformations": {
-            "description": "A type of transformation that will scan unstructured text and\napply various `PrimitiveTransformation`s to each finding, where the\ntransformation is applied to only values that were identified as a specific\ninfo_type.",
-            "id": "GooglePrivacyDlpV2beta1InfoTypeTransformations",
-            "properties": {
-                "transformations": {
-                    "description": "Transformation for each info type. Cannot specify more than one\nfor a given info type. [required]",
-                    "items": {
-                        "$ref": "GooglePrivacyDlpV2beta1InfoTypeTransformation"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis_beta/dns__v2beta1.json b/discovery/googleapis_beta/dns__v2beta1.json
index 1ceaf54..b9446cc 100644
--- a/discovery/googleapis_beta/dns__v2beta1.json
+++ b/discovery/googleapis_beta/dns__v2beta1.json
@@ -23,7 +23,7 @@
     "description": "Configures and serves authoritative DNS records.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/cloud-dns",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/hCZ9r7lonpaIRYcIWE2bmHSvZuc\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/1ygC5TQ9P71NTbJnVQWc6e8wc0w\"",
     "icons": {
         "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
         "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -763,7 +763,7 @@
             }
         }
     },
-    "revision": "20170928",
+    "revision": "20171011",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Change": {
diff --git a/discovery/googleapis_beta/firestore__v1beta1.json b/discovery/googleapis_beta/firestore__v1beta1.json
new file mode 100644
index 0000000..6082480
--- /dev/null
+++ b/discovery/googleapis_beta/firestore__v1beta1.json
@@ -0,0 +1,1949 @@
+{
+    "auth": {
+        "oauth2": {
+            "scopes": {
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "View and manage your data across Google Cloud Platform services"
+                },
+                "https://www.googleapis.com/auth/datastore": {
+                    "description": "View and manage your Google Cloud Datastore data"
+                }
+            }
+        }
+    },
+    "basePath": "",
+    "baseUrl": "https://firestore.googleapis.com/",
+    "batchPath": "batch",
+    "canonicalName": "Firestore",
+    "description": "",
+    "discoveryVersion": "v1",
+    "documentationLink": "https://cloud.google.com/firestore",
+    "icons": {
+        "x16": "http://www.google.com/images/icons/product/search-16.gif",
+        "x32": "http://www.google.com/images/icons/product/search-32.gif"
+    },
+    "id": "firestore:v1beta1",
+    "kind": "discovery#restDescription",
+    "name": "firestore",
+    "ownerDomain": "google.com",
+    "ownerName": "Google",
+    "parameters": {
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
+        "$.xgafv": {
+            "description": "V1 error format.",
+            "enum": [
+                "1",
+                "2"
+            ],
+            "enumDescriptions": [
+                "v1 error format",
+                "v2 error format"
+            ],
+            "location": "query",
+            "type": "string"
+        },
+        "alt": {
+            "default": "json",
+            "description": "Data format for response.",
+            "enum": [
+                "json",
+                "media",
+                "proto"
+            ],
+            "enumDescriptions": [
+                "Responses with Content-Type of application/json",
+                "Media download with context-dependent Content-Type",
+                "Responses with Content-Type of application/x-protobuf"
+            ],
+            "location": "query",
+            "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        }
+    },
+    "protocol": "rest",
+    "resources": {
+        "projects": {
+            "resources": {
+                "databases": {
+                    "resources": {
+                        "indexes": {
+                            "methods": {
+                                "delete": {
+                                    "description": "Deletes an index.",
+                                    "httpMethod": "DELETE",
+                                    "id": "firestore.projects.databases.indexes.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The index name. For example:\n`projects/{project_id}/databases/{database_id}/indexes/{index_id}`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+/indexes/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+name}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Gets an index.",
+                                    "httpMethod": "GET",
+                                    "id": "firestore.projects.databases.indexes.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the index. For example:\n`projects/{project_id}/databases/{database_id}/indexes/{index_id}`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+/indexes/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+name}",
+                                    "response": {
+                                        "$ref": "Index"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists the indexes that match the specified filters.",
+                                    "httpMethod": "GET",
+                                    "id": "firestore.projects.databases.indexes.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "pageToken": {
+                                            "description": "The standard List page token.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "The standard List page size.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "parent": {
+                                            "description": "The database name. For example:\n`projects/{project_id}/databases/{database_id}`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "filter": {
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+parent}/indexes",
+                                    "response": {
+                                        "$ref": "ListIndexesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                },
+                                "create": {
+                                    "description": "Creates the specified index.\nA newly created index's initial state is `CREATING`. On completion of the\nreturned google.longrunning.Operation, the state will be `READY`.\nIf the index already exists, the call will return an `ALREADY_EXISTS`\nstatus.\n\nDuring creation, the process could result in an error, in which case the\nindex will move to the `ERROR` state. The process can be recovered by\nfixing the data that caused the error, removing the index with\ndelete, then re-creating the index with\ncreate.\n\nIndexes with a single field cannot be created.",
+                                    "httpMethod": "POST",
+                                    "id": "firestore.projects.databases.indexes.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "The name of the database this index will apply to. For example:\n`projects/{project_id}/databases/{database_id}`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+parent}/indexes",
+                                    "request": {
+                                        "$ref": "Index"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                }
+                            }
+                        },
+                        "documents": {
+                            "methods": {
+                                "commit": {
+                                    "description": "Commits a transaction, while optionally updating documents.",
+                                    "httpMethod": "POST",
+                                    "id": "firestore.projects.databases.documents.commit",
+                                    "parameterOrder": [
+                                        "database"
+                                    ],
+                                    "parameters": {
+                                        "database": {
+                                            "description": "The database name. In the format:\n`projects/{project_id}/databases/{database_id}`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+database}/documents:commit",
+                                    "request": {
+                                        "$ref": "CommitRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "CommitResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                },
+                                "listCollectionIds": {
+                                    "description": "Lists all the collection IDs underneath a document.",
+                                    "httpMethod": "POST",
+                                    "id": "firestore.projects.databases.documents.listCollectionIds",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "The parent document. In the format:\n`projects/{project_id}/databases/{database_id}/documents/{document_path}`.\nFor example:\n`projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+/documents/[^/]+/.+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+parent}:listCollectionIds",
+                                    "request": {
+                                        "$ref": "ListCollectionIdsRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "ListCollectionIdsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a document.",
+                                    "httpMethod": "DELETE",
+                                    "id": "firestore.projects.databases.documents.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "currentDocument.updateTime": {
+                                            "description": "When set, the target document must exist and have been last updated at\nthat time.",
+                                            "format": "google-datetime",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "currentDocument.exists": {
+                                            "description": "When set to `true`, the target document must exist.\nWhen set to `false`, the target document must not exist.",
+                                            "location": "query",
+                                            "type": "boolean"
+                                        },
+                                        "name": {
+                                            "description": "The resource name of the Document to delete. In the format:\n`projects/{project_id}/databases/{database_id}/documents/{document_path}`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+/documents/[^/]+/.+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+name}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                },
+                                "rollback": {
+                                    "description": "Rolls back a transaction.",
+                                    "httpMethod": "POST",
+                                    "id": "firestore.projects.databases.documents.rollback",
+                                    "parameterOrder": [
+                                        "database"
+                                    ],
+                                    "parameters": {
+                                        "database": {
+                                            "description": "The database name. In the format:\n`projects/{project_id}/databases/{database_id}`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+database}/documents:rollback",
+                                    "request": {
+                                        "$ref": "RollbackRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                },
+                                "write": {
+                                    "description": "Streams batches of document updates and deletes, in order.",
+                                    "httpMethod": "POST",
+                                    "id": "firestore.projects.databases.documents.write",
+                                    "parameterOrder": [
+                                        "database"
+                                    ],
+                                    "parameters": {
+                                        "database": {
+                                            "description": "The database name. In the format:\n`projects/{project_id}/databases/{database_id}`.\nThis is only required in the first message.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+database}/documents:write",
+                                    "request": {
+                                        "$ref": "WriteRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "WriteResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                },
+                                "beginTransaction": {
+                                    "description": "Starts a new transaction.",
+                                    "httpMethod": "POST",
+                                    "id": "firestore.projects.databases.documents.beginTransaction",
+                                    "parameterOrder": [
+                                        "database"
+                                    ],
+                                    "parameters": {
+                                        "database": {
+                                            "description": "The database name. In the format:\n`projects/{project_id}/databases/{database_id}`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+database}/documents:beginTransaction",
+                                    "request": {
+                                        "$ref": "BeginTransactionRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "BeginTransactionResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                },
+                                "batchGet": {
+                                    "description": "Gets multiple documents.\n\nDocuments returned by this method are not guaranteed to be returned in the\nsame order that they were requested.",
+                                    "httpMethod": "POST",
+                                    "id": "firestore.projects.databases.documents.batchGet",
+                                    "parameterOrder": [
+                                        "database"
+                                    ],
+                                    "parameters": {
+                                        "database": {
+                                            "description": "The database name. In the format:\n`projects/{project_id}/databases/{database_id}`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+database}/documents:batchGet",
+                                    "request": {
+                                        "$ref": "BatchGetDocumentsRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "BatchGetDocumentsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists documents.",
+                                    "httpMethod": "GET",
+                                    "id": "firestore.projects.databases.documents.list",
+                                    "parameterOrder": [
+                                        "parent",
+                                        "collectionId"
+                                    ],
+                                    "parameters": {
+                                        "mask.fieldPaths": {
+                                            "description": "The list of field paths in the mask. See Document.fields for a field\npath syntax reference.",
+                                            "location": "query",
+                                            "repeated": true,
+                                            "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "The `next_page_token` value returned from a previous List request, if any.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "collectionId": {
+                                            "description": "The collection ID, relative to `parent`, to list. For example: `chatrooms`\nor `messages`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "The maximum number of documents to return.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "transaction": {
+                                            "description": "Reads documents in a transaction.",
+                                            "format": "byte",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "The parent resource name. In the format:\n`projects/{project_id}/databases/{database_id}/documents` or\n`projects/{project_id}/databases/{database_id}/documents/{document_path}`.\nFor example:\n`projects/my-project/databases/my-database/documents` or\n`projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+/documents/[^/]+/.+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "readTime": {
+                                            "description": "Reads documents as they were at the given time.\nThis may not be older than 60 seconds.",
+                                            "format": "google-datetime",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "orderBy": {
+                                            "description": "The order to sort results by. For example: `priority desc, name`.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "showMissing": {
+                                            "description": "If the list should show missing documents. A missing document is a\ndocument that does not exist but has sub-documents. These documents will\nbe returned with a key but will not have fields, Document.create_time,\nor Document.update_time set.\n\nRequests with `show_missing` may not specify `where` or\n`order_by`.",
+                                            "location": "query",
+                                            "type": "boolean"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+parent}/{collectionId}",
+                                    "response": {
+                                        "$ref": "ListDocumentsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                },
+                                "runQuery": {
+                                    "description": "Runs a query.",
+                                    "httpMethod": "POST",
+                                    "id": "firestore.projects.databases.documents.runQuery",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "The parent resource name. In the format:\n`projects/{project_id}/databases/{database_id}/documents` or\n`projects/{project_id}/databases/{database_id}/documents/{document_path}`.\nFor example:\n`projects/my-project/databases/my-database/documents` or\n`projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+/documents/[^/]+/.+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+parent}:runQuery",
+                                    "request": {
+                                        "$ref": "RunQueryRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "RunQueryResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                },
+                                "createDocument": {
+                                    "description": "Creates a new document.",
+                                    "httpMethod": "POST",
+                                    "id": "firestore.projects.databases.documents.createDocument",
+                                    "parameterOrder": [
+                                        "parent",
+                                        "collectionId"
+                                    ],
+                                    "parameters": {
+                                        "documentId": {
+                                            "description": "The client-assigned document ID to use for this document.\n\nOptional. If not specified, an ID will be assigned by the service.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "The parent resource. For example:\n`projects/{project_id}/databases/{database_id}/documents` or\n`projects/{project_id}/databases/{database_id}/documents/chatrooms/{chatroom_id}`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+/documents/.+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "mask.fieldPaths": {
+                                            "description": "The list of field paths in the mask. See Document.fields for a field\npath syntax reference.",
+                                            "location": "query",
+                                            "repeated": true,
+                                            "type": "string"
+                                        },
+                                        "collectionId": {
+                                            "description": "The collection ID, relative to `parent`, to list. For example: `chatrooms`.",
+                                            "location": "path",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+parent}/{collectionId}",
+                                    "request": {
+                                        "$ref": "Document"
+                                    },
+                                    "response": {
+                                        "$ref": "Document"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Gets a single document.",
+                                    "httpMethod": "GET",
+                                    "id": "firestore.projects.databases.documents.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "transaction": {
+                                            "description": "Reads the document in a transaction.",
+                                            "format": "byte",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "readTime": {
+                                            "description": "Reads the version of the document at the given time.\nThis may not be older than 60 seconds.",
+                                            "format": "google-datetime",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "mask.fieldPaths": {
+                                            "description": "The list of field paths in the mask. See Document.fields for a field\npath syntax reference.",
+                                            "location": "query",
+                                            "repeated": true,
+                                            "type": "string"
+                                        },
+                                        "name": {
+                                            "description": "The resource name of the Document to get. In the format:\n`projects/{project_id}/databases/{database_id}/documents/{document_path}`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+/documents/[^/]+/.+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+name}",
+                                    "response": {
+                                        "$ref": "Document"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates or inserts a document.",
+                                    "httpMethod": "PATCH",
+                                    "id": "firestore.projects.databases.documents.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "mask.fieldPaths": {
+                                            "description": "The list of field paths in the mask. See Document.fields for a field\npath syntax reference.",
+                                            "location": "query",
+                                            "repeated": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask.fieldPaths": {
+                                            "description": "The list of field paths in the mask. See Document.fields for a field\npath syntax reference.",
+                                            "location": "query",
+                                            "repeated": true,
+                                            "type": "string"
+                                        },
+                                        "name": {
+                                            "description": "The resource name of the document, for example\n`projects/{project_id}/databases/{database_id}/documents/{document_path}`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+/documents/[^/]+/.+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "currentDocument.updateTime": {
+                                            "description": "When set, the target document must exist and have been last updated at\nthat time.",
+                                            "format": "google-datetime",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "currentDocument.exists": {
+                                            "description": "When set to `true`, the target document must exist.\nWhen set to `false`, the target document must not exist.",
+                                            "location": "query",
+                                            "type": "boolean"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+name}",
+                                    "request": {
+                                        "$ref": "Document"
+                                    },
+                                    "response": {
+                                        "$ref": "Document"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                },
+                                "listen": {
+                                    "description": "Listens to changes.",
+                                    "httpMethod": "POST",
+                                    "id": "firestore.projects.databases.documents.listen",
+                                    "parameterOrder": [
+                                        "database"
+                                    ],
+                                    "parameters": {
+                                        "database": {
+                                            "description": "The database name. In the format:\n`projects/{project_id}/databases/{database_id}`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/databases/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+database}/documents:listen",
+                                    "request": {
+                                        "$ref": "ListenRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "ListenResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/datastore"
+                                    ]
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "revision": "0",
+    "rootUrl": "https://firestore.googleapis.com/",
+    "schemas": {
+        "RollbackRequest": {
+            "description": "The request for Firestore.Rollback.",
+            "id": "RollbackRequest",
+            "properties": {
+                "transaction": {
+                    "description": "The transaction to roll back.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CompositeFilter": {
+            "description": "A filter that merges multiple other filters using the given operator.",
+            "id": "CompositeFilter",
+            "properties": {
+                "op": {
+                    "description": "The operator for combining multiple filters.",
+                    "enum": [
+                        "OPERATOR_UNSPECIFIED",
+                        "AND"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified. This value must not be used.",
+                        "The results are required to satisfy each of the combined filters."
+                    ],
+                    "type": "string"
+                },
+                "filters": {
+                    "description": "The list of filters to combine.\nMust contain at least one filter.",
+                    "items": {
+                        "$ref": "Filter"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "DocumentsTarget": {
+            "description": "A target specified by a set of documents names.",
+            "id": "DocumentsTarget",
+            "properties": {
+                "documents": {
+                    "description": "The names of the documents to retrieve. In the format:\n`projects/{project_id}/databases/{database_id}/documents/{document_path}`.\nThe request will fail if any of the document is not a child resource of\nthe given `database`. Duplicate names will be elided.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "DocumentMask": {
+            "description": "A set of field paths on a document.\nUsed to restrict a get or update operation on a document to a subset of its\nfields.\nThis is different from standard field masks, as this is always scoped to a\nDocument, and takes in account the dynamic nature of Value.",
+            "id": "DocumentMask",
+            "properties": {
+                "fieldPaths": {
+                    "description": "The list of field paths in the mask. See Document.fields for a field\npath syntax reference.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "DocumentTransform": {
+            "description": "A transformation of a document.",
+            "id": "DocumentTransform",
+            "properties": {
+                "document": {
+                    "description": "The name of the document to transform.",
+                    "type": "string"
+                },
+                "fieldTransforms": {
+                    "description": "The list of transformations to apply to the fields of the document, in\norder.",
+                    "items": {
+                        "$ref": "FieldTransform"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "FieldTransform": {
+            "description": "A transformation of a field of the document.",
+            "id": "FieldTransform",
+            "properties": {
+                "setToServerValue": {
+                    "description": "Sets the field to the given server value.",
+                    "enum": [
+                        "SERVER_VALUE_UNSPECIFIED",
+                        "REQUEST_TIME"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified. This value must not be used.",
+                        "The time at which the server processed the request."
+                    ],
+                    "type": "string"
+                },
+                "fieldPath": {
+                    "description": "The path of the field. See Document.fields for the field path syntax\nreference.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CommitResponse": {
+            "description": "The response for Firestore.Commit.",
+            "id": "CommitResponse",
+            "properties": {
+                "writeResults": {
+                    "description": "The result of applying the writes.\n\nThis i-th write result corresponds to the i-th write in the\nrequest.",
+                    "items": {
+                        "$ref": "WriteResult"
+                    },
+                    "type": "array"
+                },
+                "commitTime": {
+                    "description": "The time at which the commit occurred.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListCollectionIdsResponse": {
+            "description": "The response from Firestore.ListCollectionIds.",
+            "id": "ListCollectionIdsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A page token that may be used to continue the list.",
+                    "type": "string"
+                },
+                "collectionIds": {
+                    "description": "The collection ids.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Order": {
+            "description": "An order on a field.",
+            "id": "Order",
+            "properties": {
+                "field": {
+                    "$ref": "FieldReference",
+                    "description": "The field to order by."
+                },
+                "direction": {
+                    "description": "The direction to order by. Defaults to `ASCENDING`.",
+                    "enum": [
+                        "DIRECTION_UNSPECIFIED",
+                        "ASCENDING",
+                        "DESCENDING"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "Ascending.",
+                        "Descending."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "WriteResponse": {
+            "description": "The response for Firestore.Write.",
+            "id": "WriteResponse",
+            "properties": {
+                "streamToken": {
+                    "description": "A token that represents the position of this response in the stream.\nThis can be used by a client to resume the stream at this point.\n\nThis field is always set.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "writeResults": {
+                    "description": "The result of applying the writes.\n\nThis i-th write result corresponds to the i-th write in the\nrequest.",
+                    "items": {
+                        "$ref": "WriteResult"
+                    },
+                    "type": "array"
+                },
+                "commitTime": {
+                    "description": "The time at which the commit occurred.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "streamId": {
+                    "description": "The ID of the stream.\nOnly set on the first message, when a new stream was created.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "FieldFilter": {
+            "description": "A filter on a specific field.",
+            "id": "FieldFilter",
+            "properties": {
+                "field": {
+                    "$ref": "FieldReference",
+                    "description": "The field to filter by."
+                },
+                "value": {
+                    "$ref": "Value",
+                    "description": "The value to compare to."
+                },
+                "op": {
+                    "description": "The operator to filter by.",
+                    "enum": [
+                        "OPERATOR_UNSPECIFIED",
+                        "LESS_THAN",
+                        "LESS_THAN_OR_EQUAL",
+                        "GREATER_THAN",
+                        "GREATER_THAN_OR_EQUAL",
+                        "EQUAL"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified. This value must not be used.",
+                        "Less than. Requires that the field come first in `order_by`.",
+                        "Less than or equal. Requires that the field come first in `order_by`.",
+                        "Greater than. Requires that the field come first in `order_by`.",
+                        "Greater than or equal. Requires that the field come first in\n`order_by`.",
+                        "Equal."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TargetChange": {
+            "description": "Targets being watched have changed.",
+            "id": "TargetChange",
+            "properties": {
+                "resumeToken": {
+                    "description": "A token that can be used to resume the stream for the given `target_ids`,\nor all targets if `target_ids` is empty.\n\nNot set on every target change.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "targetIds": {
+                    "description": "The target IDs of targets that have changed.\n\nIf empty, the change applies to all targets.\n\nFor `target_change_type=ADD`, the order of the target IDs matches the order\nof the requests to add the targets. This allows clients to unambiguously\nassociate server-assigned target IDs with added targets.\n\nFor other states, the order of the target IDs is not defined.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                },
+                "readTime": {
+                    "description": "The consistent `read_time` for the given `target_ids` (omitted when the\ntarget_ids are not at a consistent snapshot).\n\nThe stream is guaranteed to send a `read_time` with `target_ids` empty\nwhenever the entire stream reaches a new consistent snapshot. ADD,\nCURRENT, and RESET messages are guaranteed to (eventually) result in a\nnew consistent snapshot (while NO_CHANGE and REMOVE messages are not).\n\nFor a given stream, `read_time` is guaranteed to be monotonically\nincreasing.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "cause": {
+                    "$ref": "Status",
+                    "description": "The error that resulted in this change, if applicable."
+                },
+                "targetChangeType": {
+                    "description": "The type of change that occurred.",
+                    "enum": [
+                        "NO_CHANGE",
+                        "ADD",
+                        "REMOVE",
+                        "CURRENT",
+                        "RESET"
+                    ],
+                    "enumDescriptions": [
+                        "No change has occurred. Used only to send an updated `resume_token`.",
+                        "The targets have been added.",
+                        "The targets have been removed.",
+                        "The targets reflect all changes committed before the targets were added\nto the stream.\n\nThis will be sent after or with a `read_time` that is greater than or\nequal to the time at which the targets were added.\n\nListeners can wait for this change if read-after-write semantics\nare desired.",
+                        "The targets have been reset, and a new initial state for the targets\nwill be returned in subsequent changes.\n\nAfter the initial state is complete, `CURRENT` will be returned even\nif the target was previously indicated to be `CURRENT`."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MapValue": {
+            "description": "A map value.",
+            "id": "MapValue",
+            "properties": {
+                "fields": {
+                    "additionalProperties": {
+                        "$ref": "Value"
+                    },
+                    "description": "The map's fields.\n\nThe map keys represent field names. Field names matching the regular\nexpression `__.*__` are reserved. Reserved field names are forbidden except\nin certain documented contexts. The map keys, represented as UTF-8, must\nnot exceed 1,500 bytes and cannot be empty.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "DocumentDelete": {
+            "description": "A Document has been deleted.\n\nMay be the result of multiple writes, including updates, the\nlast of which deleted the Document.\n\nMultiple DocumentDelete messages may be returned for the same logical\ndelete, if multiple targets are affected.",
+            "id": "DocumentDelete",
+            "properties": {
+                "document": {
+                    "description": "The resource name of the Document that was deleted.",
+                    "type": "string"
+                },
+                "readTime": {
+                    "description": "The read timestamp at which the delete was observed.\n\nGreater or equal to the `commit_time` of the delete.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "removedTargetIds": {
+                    "description": "A set of target IDs for targets that previously matched this entity.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "BeginTransactionResponse": {
+            "description": "The response for Firestore.BeginTransaction.",
+            "id": "BeginTransactionResponse",
+            "properties": {
+                "transaction": {
+                    "description": "The transaction that was started.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "IndexField": {
+            "description": "A field of an index.",
+            "id": "IndexField",
+            "properties": {
+                "mode": {
+                    "description": "The field's mode.",
+                    "enum": [
+                        "MODE_UNSPECIFIED",
+                        "ASCENDING",
+                        "DESCENDING"
+                    ],
+                    "enumDescriptions": [
+                        "The mode is unspecified.",
+                        "The field's values are indexed so as to support sequencing in\nascending order and also query by <, >, <=, >=, and =.",
+                        "The field's values are indexed so as to support sequencing in\ndescending order and also query by <, >, <=, >=, and =."
+                    ],
+                    "type": "string"
+                },
+                "fieldPath": {
+                    "description": "The path of the field. Must match the field path specification described\nby google.firestore.v1beta1.Document.fields.\nSpecial field path `__name__` may be used by itself or at the end of a\npath. `__type__` may be used only at the end of path.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "RunQueryResponse": {
+            "description": "The response for Firestore.RunQuery.",
+            "id": "RunQueryResponse",
+            "properties": {
+                "skippedResults": {
+                    "description": "The number of results that have been skipped due to an offset between\nthe last response and the current response.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "transaction": {
+                    "description": "The transaction that was started as part of this request.\nCan only be set in the first response, and only if\nRunQueryRequest.new_transaction was set in the request.\nIf set, no other fields will be set in this response.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "document": {
+                    "$ref": "Document",
+                    "description": "A query result.\nNot set when reporting partial progress."
+                },
+                "readTime": {
+                    "description": "The time at which the document was read. This may be monotonically\nincreasing; in this case, the previous documents in the result stream are\nguaranteed not to have changed between their `read_time` and this one.\n\nIf the query returns no results, a response with `read_time` and no\n`document` will be sent, and this represents the time at which the query\nwas run.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "BeginTransactionRequest": {
+            "description": "The request for Firestore.BeginTransaction.",
+            "id": "BeginTransactionRequest",
+            "properties": {
+                "options": {
+                    "$ref": "TransactionOptions",
+                    "description": "The options for the transaction.\nDefaults to a read-write transaction."
+                }
+            },
+            "type": "object"
+        },
+        "CommitRequest": {
+            "description": "The request for Firestore.Commit.",
+            "id": "CommitRequest",
+            "properties": {
+                "transaction": {
+                    "description": "If set, applies all writes in this transaction, and commits it.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "writes": {
+                    "description": "The writes to apply.\n\nAlways executed atomically and in order.",
+                    "items": {
+                        "$ref": "Write"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListenRequest": {
+            "description": "A request for Firestore.Listen",
+            "id": "ListenRequest",
+            "properties": {
+                "removeTarget": {
+                    "description": "The ID of a target to remove from this stream.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "addTarget": {
+                    "$ref": "Target",
+                    "description": "A target to add to this stream."
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Labels associated with this target change.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "LatLng": {
+            "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n<a href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\">WGS84\nstandard</a>. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n    def NormalizeLongitude(longitude):\n      \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n      q, r = divmod(longitude, 360.0)\n      if r > 180.0 or (r == 180.0 and q <= -1.0):\n        return r - 360.0\n      return r\n\n    def NormalizeLatLng(latitude, longitude):\n      \"\"\"Wraps decimal degrees latitude and longitude to\n      [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n      r = latitude % 360.0\n      if r <= 90.0:\n        return r, NormalizeLongitude(longitude)\n      elif r >= 270.0:\n        return r - 360, NormalizeLongitude(longitude)\n      else:\n        return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n    assert 180.0 == NormalizeLongitude(180.0)\n    assert -180.0 == NormalizeLongitude(-180.0)\n    assert -179.0 == NormalizeLongitude(181.0)\n    assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n    assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n    assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n    assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n    assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n    assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)",
+            "id": "LatLng",
+            "properties": {
+                "latitude": {
+                    "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
+                    "format": "double",
+                    "type": "number"
+                },
+                "longitude": {
+                    "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "CollectionSelector": {
+            "description": "A selection of a collection, such as `messages as m1`.",
+            "id": "CollectionSelector",
+            "properties": {
+                "allDescendants": {
+                    "description": "When false, selects only collections that are immediate children of\nthe `parent` specified in the containing `RunQueryRequest`.\nWhen true, selects all descendant collections.",
+                    "type": "boolean"
+                },
+                "collectionId": {
+                    "description": "The collection ID.\nWhen set, selects only collections with this ID.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ArrayValue": {
+            "description": "An array value.",
+            "id": "ArrayValue",
+            "properties": {
+                "values": {
+                    "description": "Values in the array.",
+                    "items": {
+                        "$ref": "Value"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Index": {
+            "description": "An index definition.",
+            "id": "Index",
+            "properties": {
+                "state": {
+                    "description": "The state of the index.\nOutput only.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "CREATING",
+                        "READY",
+                        "ERROR"
+                    ],
+                    "enumDescriptions": [
+                        "The state is unspecified.",
+                        "The index is being created.\nThere is an active long-running operation for the index.\nThe index is updated when writing a document.\nSome index data may exist.",
+                        "The index is ready to be used.\nThe index is updated when writing a document.\nThe index is fully populated from all stored documents it applies to.",
+                        "The index was being created, but something went wrong.\nThere is no active long-running operation for the index,\nand the most recently finished long-running operation failed.\nThe index is not updated when writing a document.\nSome index data may exist."
+                    ],
+                    "type": "string"
+                },
+                "fields": {
+                    "description": "The fields to index.",
+                    "items": {
+                        "$ref": "IndexField"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The resource name of the index.\nOutput only.",
+                    "type": "string"
+                },
+                "collectionId": {
+                    "description": "The collection ID to which this index applies. Required.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "StructuredQuery": {
+            "description": "A Firestore query.",
+            "id": "StructuredQuery",
+            "properties": {
+                "where": {
+                    "$ref": "Filter",
+                    "description": "The filter to apply."
+                },
+                "orderBy": {
+                    "description": "The order to apply to the query results.\n\nFirestore guarantees a stable ordering through the following rules:\n\n * Any field required to appear in `order_by`, that is not already\n   specified in `order_by`, is appended to the order in field name order\n   by default.\n * If an order on `__name__` is not specified, it is appended by default.\n\nFields are appended with the same sort direction as the last order\nspecified, or 'ASCENDING' if no order was specified. For example:\n\n * `SELECT * FROM Foo ORDER BY A` becomes\n   `SELECT * FROM Foo ORDER BY A, __name__`\n * `SELECT * FROM Foo ORDER BY A DESC` becomes\n   `SELECT * FROM Foo ORDER BY A DESC, __name__ DESC`\n * `SELECT * FROM Foo WHERE A > 1` becomes\n   `SELECT * FROM Foo WHERE A > 1 ORDER BY A, __name__`",
+                    "items": {
+                        "$ref": "Order"
+                    },
+                    "type": "array"
+                },
+                "select": {
+                    "$ref": "Projection",
+                    "description": "The projection to return."
+                },
+                "limit": {
+                    "description": "The maximum number of results to return.\n\nApplies after all other constraints.\nMust be >= 0 if specified.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "offset": {
+                    "description": "The number of results to skip.\n\nApplies before limit, but after all other constraints. Must be >= 0 if\nspecified.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "from": {
+                    "description": "The collections to query.",
+                    "items": {
+                        "$ref": "CollectionSelector"
+                    },
+                    "type": "array"
+                },
+                "endAt": {
+                    "$ref": "Cursor",
+                    "description": "A end point for the query results."
+                },
+                "startAt": {
+                    "$ref": "Cursor",
+                    "description": "A starting point for the query results."
+                }
+            },
+            "type": "object"
+        },
+        "UnaryFilter": {
+            "description": "A filter with a single operand.",
+            "id": "UnaryFilter",
+            "properties": {
+                "field": {
+                    "$ref": "FieldReference",
+                    "description": "The field to which to apply the operator."
+                },
+                "op": {
+                    "description": "The unary operator to apply.",
+                    "enum": [
+                        "OPERATOR_UNSPECIFIED",
+                        "IS_NAN",
+                        "IS_NULL"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified. This value must not be used.",
+                        "Test if a field is equal to NaN.",
+                        "Test if an exprestion evaluates to Null."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Filter": {
+            "description": "A filter.",
+            "id": "Filter",
+            "properties": {
+                "unaryFilter": {
+                    "$ref": "UnaryFilter",
+                    "description": "A filter that takes exactly one argument."
+                },
+                "compositeFilter": {
+                    "$ref": "CompositeFilter",
+                    "description": "A composite filter."
+                },
+                "fieldFilter": {
+                    "$ref": "FieldFilter",
+                    "description": "A filter on a document field."
+                }
+            },
+            "type": "object"
+        },
+        "WriteRequest": {
+            "description": "The request for Firestore.Write.\n\nThe first request creates a stream, or resumes an existing one from a token.\n\nWhen creating a new stream, the server replies with a response containing\nonly an ID and a token, to use in the next request.\n\nWhen resuming a stream, the server first streams any responses later than the\ngiven token, then a response containing only an up-to-date token, to use in\nthe next request.",
+            "id": "WriteRequest",
+            "properties": {
+                "streamToken": {
+                    "description": "A stream token that was previously sent by the server.\n\nThe client should set this field to the token from the most recent\nWriteResponse it has received. This acknowledges that the client has\nreceived responses up to this token. After sending this token, earlier\ntokens may not be used anymore.\n\nThe server may close the stream if there are too many unacknowledged\nresponses.\n\nLeave this field unset when creating a new stream. To resume a stream at\na specific point, set this field and the `stream_id` field.\n\nLeave this field unset when creating a new stream.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "writes": {
+                    "description": "The writes to apply.\n\nAlways executed atomically and in order.\nThis must be empty on the first request.\nThis may be empty on the last request.\nThis must not be empty on all other requests.",
+                    "items": {
+                        "$ref": "Write"
+                    },
+                    "type": "array"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Labels associated with this write request.",
+                    "type": "object"
+                },
+                "streamId": {
+                    "description": "The ID of the write stream to resume.\nThis may only be set in the first message. When left empty, a new write\nstream will be created.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "BatchGetDocumentsResponse": {
+            "description": "The streamed response for Firestore.BatchGetDocuments.",
+            "id": "BatchGetDocumentsResponse",
+            "properties": {
+                "missing": {
+                    "description": "A document name that was requested but does not exist. In the format:\n`projects/{project_id}/databases/{database_id}/documents/{document_path}`.",
+                    "type": "string"
+                },
+                "found": {
+                    "$ref": "Document",
+                    "description": "A document that was requested."
+                },
+                "transaction": {
+                    "description": "The transaction that was started as part of this request.\nWill only be set in the first response, and only if\nBatchGetDocumentsRequest.new_transaction was set in the request.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "readTime": {
+                    "description": "The time at which the document was read.\nThis may be monotically increasing, in this case the previous documents in\nthe result stream are guaranteed not to have changed between their\nread_time and this one.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Target": {
+            "description": "A specification of a set of documents to listen to.",
+            "id": "Target",
+            "properties": {
+                "documents": {
+                    "$ref": "DocumentsTarget",
+                    "description": "A target specified by a set of document names."
+                },
+                "query": {
+                    "$ref": "QueryTarget",
+                    "description": "A target specified by a query."
+                },
+                "resumeToken": {
+                    "description": "A resume token from a prior TargetChange for an identical target.\n\nUsing a resume token with a different target is unsupported and may fail.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "once": {
+                    "description": "If the target should be removed once it is current and consistent.",
+                    "type": "boolean"
+                },
+                "readTime": {
+                    "description": "Start listening after a specific `read_time`.\n\nThe client must know the state of matching documents at this time.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "targetId": {
+                    "description": "A client provided target ID.\n\nIf not set, the server will assign an ID for the target.\n\nUsed for resuming a target without changing IDs. The IDs can either be\nclient-assigned or be server-assigned in a previous stream. All targets\nwith client provided IDs must be added before adding a target that needs\na server-assigned id.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "RunQueryRequest": {
+            "description": "The request for Firestore.RunQuery.",
+            "id": "RunQueryRequest",
+            "properties": {
+                "newTransaction": {
+                    "$ref": "TransactionOptions",
+                    "description": "Starts a new transaction and reads the documents.\nDefaults to a read-only transaction.\nThe new transaction ID will be returned as the first response in the\nstream."
+                },
+                "transaction": {
+                    "description": "Reads documents in a transaction.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "structuredQuery": {
+                    "$ref": "StructuredQuery",
+                    "description": "A structured query."
+                },
+                "readTime": {
+                    "description": "Reads documents as they were at the given time.\nThis may not be older than 60 seconds.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Precondition": {
+            "description": "A precondition on a document, used for conditional operations.",
+            "id": "Precondition",
+            "properties": {
+                "exists": {
+                    "description": "When set to `true`, the target document must exist.\nWhen set to `false`, the target document must not exist.",
+                    "type": "boolean"
+                },
+                "updateTime": {
+                    "description": "When set, the target document must exist and have been last updated at\nthat time.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "ListIndexesResponse": {
+            "description": "The response for FirestoreAdmin.ListIndexes.",
+            "id": "ListIndexesResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
+                "indexes": {
+                    "description": "The indexes.",
+                    "items": {
+                        "$ref": "Index"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "TransactionOptions": {
+            "description": "Options for creating a new transaction.",
+            "id": "TransactionOptions",
+            "properties": {
+                "readWrite": {
+                    "$ref": "ReadWrite",
+                    "description": "The transaction can be used for both read and write operations."
+                },
+                "readOnly": {
+                    "$ref": "ReadOnly",
+                    "description": "The transaction can only be used for read operations."
+                }
+            },
+            "type": "object"
+        },
+        "FieldReference": {
+            "description": "A reference to a field, such as `max(messages.time) as max_time`.",
+            "id": "FieldReference",
+            "properties": {
+                "fieldPath": {
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListenResponse": {
+            "description": "The response for Firestore.Listen.",
+            "id": "ListenResponse",
+            "properties": {
+                "filter": {
+                    "$ref": "ExistenceFilter",
+                    "description": "A filter to apply to the set of documents previously returned for the\ngiven target.\n\nReturned when documents may have been removed from the given target, but\nthe exact documents are unknown."
+                },
+                "documentChange": {
+                    "$ref": "DocumentChange",
+                    "description": "A Document has changed."
+                },
+                "documentRemove": {
+                    "$ref": "DocumentRemove",
+                    "description": "A Document has been removed from a target (because it is no longer\nrelevant to that target)."
+                },
+                "targetChange": {
+                    "$ref": "TargetChange",
+                    "description": "Targets have changed."
+                },
+                "documentDelete": {
+                    "$ref": "DocumentDelete",
+                    "description": "A Document has been deleted."
+                }
+            },
+            "type": "object"
+        },
+        "ListCollectionIdsRequest": {
+            "description": "The request for Firestore.ListCollectionIds.",
+            "id": "ListCollectionIdsRequest",
+            "properties": {
+                "pageToken": {
+                    "description": "A page token. Must be a value from\nListCollectionIdsResponse.",
+                    "type": "string"
+                },
+                "pageSize": {
+                    "description": "The maximum number of results to return.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "ExistenceFilter": {
+            "description": "A digest of all the documents that match a given target.",
+            "id": "ExistenceFilter",
+            "properties": {
+                "count": {
+                    "description": "The total count of documents that match target_id.\n\nIf different from the count of documents in the client that match, the\nclient must manually determine which documents no longer match the target.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "targetId": {
+                    "description": "The target ID to which this filter applies.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "ReadOnly": {
+            "description": "Options for a transaction that can only be used to read documents.",
+            "id": "ReadOnly",
+            "properties": {
+                "readTime": {
+                    "description": "Reads documents at the given time.\nThis may not be older than 60 seconds.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "WriteResult": {
+            "description": "The result of applying a write.",
+            "id": "WriteResult",
+            "properties": {
+                "updateTime": {
+                    "description": "The last update time of the document after applying the write. Not set\nafter a `delete`.\n\nIf the write did not actually change the document, this will be the\nprevious update_time.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "transformResults": {
+                    "description": "The results of applying each DocumentTransform.FieldTransform, in the\nsame order.",
+                    "items": {
+                        "$ref": "Value"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Value": {
+            "description": "A message that can hold any of the supported value types.",
+            "id": "Value",
+            "properties": {
+                "integerValue": {
+                    "description": "An integer value.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "arrayValue": {
+                    "$ref": "ArrayValue",
+                    "description": "An array value.\n\nCannot contain another array value."
+                },
+                "referenceValue": {
+                    "description": "A reference to a document. For example:\n`projects/{project_id}/databases/{database_id}/documents/{document_path}`.",
+                    "type": "string"
+                },
+                "stringValue": {
+                    "description": "A string value.\n\nThe string, represented as UTF-8, must not exceed 1 MiB - 89 bytes.\nOnly the first 1,500 bytes of the UTF-8 representation are considered by\nqueries.",
+                    "type": "string"
+                },
+                "doubleValue": {
+                    "description": "A double value.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "timestampValue": {
+                    "description": "A timestamp value.\n\nPrecise only to microseconds. When stored, any additional precision is\nrounded down.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "nullValue": {
+                    "description": "A null value.",
+                    "enum": [
+                        "NULL_VALUE"
+                    ],
+                    "enumDescriptions": [
+                        "Null value."
+                    ],
+                    "type": "string"
+                },
+                "booleanValue": {
+                    "description": "A boolean value.",
+                    "type": "boolean"
+                },
+                "mapValue": {
+                    "$ref": "MapValue",
+                    "description": "A map value."
+                },
+                "geoPointValue": {
+                    "$ref": "LatLng",
+                    "description": "A geo point value representing a point on the surface of Earth."
+                },
+                "bytesValue": {
+                    "description": "A bytes value.\n\nMust not exceed 1 MiB - 89 bytes.\nOnly the first 1,500 bytes are considered by queries.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Write": {
+            "description": "A write on a document.",
+            "id": "Write",
+            "properties": {
+                "delete": {
+                    "description": "A document name to delete. In the format:\n`projects/{project_id}/databases/{database_id}/documents/{document_path}`.",
+                    "type": "string"
+                },
+                "currentDocument": {
+                    "$ref": "Precondition",
+                    "description": "An optional precondition on the document.\n\nThe write will fail if this is set and not met by the target document."
+                },
+                "updateMask": {
+                    "$ref": "DocumentMask",
+                    "description": "The fields to update in this write.\n\nThis field can be set only when the operation is `update`.\nNone of the field paths in the mask may contain a reserved name.\nIf the document exists on the server and has fields not referenced in the\nmask, they are left unchanged.\nFields referenced in the mask, but not present in the input document, are\ndeleted from the document on the server.\nThe field paths in this mask must not contain a reserved field name."
+                },
+                "update": {
+                    "$ref": "Document",
+                    "description": "A document to write."
+                },
+                "transform": {
+                    "$ref": "DocumentTransform",
+                    "description": "Applies a tranformation to a document.\nAt most one `transform` per document is allowed in a given request.\nAn `update` cannot follow a `transform` on the same document in a given\nrequest."
+                }
+            },
+            "type": "object"
+        },
+        "Cursor": {
+            "description": "A position in a query result set.",
+            "id": "Cursor",
+            "properties": {
+                "before": {
+                    "description": "If the position is just before or just after the given values, relative\nto the sort order defined by the query.",
+                    "type": "boolean"
+                },
+                "values": {
+                    "description": "The values that represent a position, in the order they appear in\nthe order by clause of a query.\n\nCan contain fewer values than specified in the order by clause.",
+                    "items": {
+                        "$ref": "Value"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ReadWrite": {
+            "description": "Options for a transaction that can be used to read and write documents.",
+            "id": "ReadWrite",
+            "properties": {
+                "retryTransaction": {
+                    "description": "An optional transaction to retry.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "BatchGetDocumentsRequest": {
+            "description": "The request for Firestore.BatchGetDocuments.",
+            "id": "BatchGetDocumentsRequest",
+            "properties": {
+                "documents": {
+                    "description": "The names of the documents to retrieve. In the format:\n`projects/{project_id}/databases/{database_id}/documents/{document_path}`.\nThe request will fail if any of the document is not a child resource of the\ngiven `database`. Duplicate names will be elided.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "readTime": {
+                    "description": "Reads documents as they were at the given time.\nThis may not be older than 60 seconds.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "newTransaction": {
+                    "$ref": "TransactionOptions",
+                    "description": "Starts a new transaction and reads the documents.\nDefaults to a read-only transaction.\nThe new transaction ID will be returned as the first response in the\nstream."
+                },
+                "mask": {
+                    "$ref": "DocumentMask",
+                    "description": "The fields to return. If not set, returns all fields.\n\nIf a document has a field that is not present in this mask, that field will\nnot be returned in the response."
+                },
+                "transaction": {
+                    "description": "Reads documents in a transaction.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "QueryTarget": {
+            "description": "A target specified by a query.",
+            "id": "QueryTarget",
+            "properties": {
+                "parent": {
+                    "description": "The parent resource name. In the format:\n`projects/{project_id}/databases/{database_id}/documents` or\n`projects/{project_id}/databases/{database_id}/documents/{document_path}`.\nFor example:\n`projects/my-project/databases/my-database/documents` or\n`projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`",
+                    "type": "string"
+                },
+                "structuredQuery": {
+                    "$ref": "StructuredQuery",
+                    "description": "A structured query."
+                }
+            },
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+            "id": "Operation",
+            "properties": {
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+                    "type": "object"
+                },
+                "done": {
+                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+                    "type": "boolean"
+                },
+                "response": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+                    "type": "string"
+                },
+                "error": {
+                    "$ref": "Status",
+                    "description": "The error result of the operation in case of failure or cancellation."
+                }
+            },
+            "type": "object"
+        },
+        "DocumentChange": {
+            "description": "A Document has changed.\n\nMay be the result of multiple writes, including deletes, that\nultimately resulted in a new value for the Document.\n\nMultiple DocumentChange messages may be returned for the same logical\nchange, if multiple targets are affected.",
+            "id": "DocumentChange",
+            "properties": {
+                "removedTargetIds": {
+                    "description": "A set of target IDs for targets that no longer match this document.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                },
+                "document": {
+                    "$ref": "Document",
+                    "description": "The new state of the Document.\n\nIf `mask` is set, contains only fields that were updated or added."
+                },
+                "targetIds": {
+                    "description": "A set of target IDs of targets that match this document.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+            "id": "Status",
+            "properties": {
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                },
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Document": {
+            "description": "A Firestore document.\n\nMust not exceed 1 MiB - 4 bytes.",
+            "id": "Document",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. The time at which the document was created.\n\nThis value increases monotonically when a document is deleted then\nrecreated. It can also be compared to values from other documents and\nthe `read_time` of a query.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. The time at which the document was last changed.\n\nThis value is initally set to the `create_time` then increases\nmonotonically with each change to the document. It can also be\ncompared to values from other documents and the `read_time` of a query.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "fields": {
+                    "additionalProperties": {
+                        "$ref": "Value"
+                    },
+                    "description": "The document's fields.\n\nThe map keys represent field names.\n\nA simple field name contains only characters `a` to `z`, `A` to `Z`,\n`0` to `9`, or `_`, and must not start with `0` to `9` or `_`. For example,\n`foo_bar_17`.\n\nField names matching the regular expression `__.*__` are reserved. Reserved\nfield names are forbidden except in certain documented contexts. The map\nkeys, represented as UTF-8, must not exceed 1,500 bytes and cannot be\nempty.\n\nField paths may be used in other contexts to refer to structured fields\ndefined here. For `map_value`, the field path is represented by the simple\nor quoted field names of the containing fields, delimited by `.`. For\nexample, the structured field\n`\"foo\" : { map_value: { \"x&y\" : { string_value: \"hello\" }}}` would be\nrepresented by the field path `foo.x&y`.\n\nWithin a field path, a quoted field name starts and ends with `` ` `` and\nmay contain any character. Some characters, including `` ` ``, must be\nescaped using a `\\`. For example, `` `x&y` `` represents `x&y` and\n`` `bak\\`tik` `` represents `` bak`tik ``.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "The resource name of the document, for example\n`projects/{project_id}/databases/{database_id}/documents/{document_path}`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Projection": {
+            "description": "The projection of document's fields to return.",
+            "id": "Projection",
+            "properties": {
+                "fields": {
+                    "description": "The fields to return.\n\nIf empty, all fields are returned. To only return the name\nof the document, use `['__name__']`.",
+                    "items": {
+                        "$ref": "FieldReference"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "DocumentRemove": {
+            "description": "A Document has been removed from the view of the targets.\n\nSent if the document is no longer relevant to a target and is out of view.\nCan be sent instead of a DocumentDelete or a DocumentChange if the server\ncan not send the new value of the document.\n\nMultiple DocumentRemove messages may be returned for the same logical\nwrite or delete, if multiple targets are affected.",
+            "id": "DocumentRemove",
+            "properties": {
+                "document": {
+                    "description": "The resource name of the Document that has gone out of view.",
+                    "type": "string"
+                },
+                "readTime": {
+                    "description": "The read timestamp at which the remove was observed.\n\nGreater or equal to the `commit_time` of the change/delete/remove.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "removedTargetIds": {
+                    "description": "A set of target IDs for targets that previously matched this document.",
+                    "items": {
+                        "format": "int32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListDocumentsResponse": {
+            "description": "The response for Firestore.ListDocuments.",
+            "id": "ListDocumentsResponse",
+            "properties": {
+                "documents": {
+                    "description": "The Documents found.",
+                    "items": {
+                        "$ref": "Document"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The next page token.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        }
+    },
+    "servicePath": "",
+    "title": "Google Cloud Firestore API",
+    "version": "v1beta1"
+}
\ No newline at end of file
diff --git a/discovery/googleapis_beta/language__v1beta1.json b/discovery/googleapis_beta/language__v1beta1.json
index 2599ff5..816dabc 100644
--- a/discovery/googleapis_beta/language__v1beta1.json
+++ b/discovery/googleapis_beta/language__v1beta1.json
@@ -2,11 +2,11 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/cloud-language": {
-                    "description": "Apply machine learning models to reveal the structure and meaning of text"
-                },
                 "https://www.googleapis.com/auth/cloud-platform": {
                     "description": "View and manage your data across Google Cloud Platform services"
+                },
+                "https://www.googleapis.com/auth/cloud-language": {
+                    "description": "Apply machine learning models to reveal the structure and meaning of text"
                 }
             }
         }
@@ -28,6 +28,37 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -62,13 +93,13 @@
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "access_token": {
+            "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
-        "access_token": {
-            "description": "OAuth access token.",
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
         },
@@ -82,79 +113,12 @@
             "description": "Pretty-print response.",
             "location": "query",
             "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
-            "location": "query",
-            "type": "string"
-        },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
-            "location": "query",
-            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
         "documents": {
             "methods": {
-                "annotateText": {
-                    "description": "A convenience method that provides all the features that analyzeSentiment,\nanalyzeEntities, and analyzeSyntax provide in one call.",
-                    "httpMethod": "POST",
-                    "id": "language.documents.annotateText",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1beta1/documents:annotateText",
-                    "request": {
-                        "$ref": "AnnotateTextRequest"
-                    },
-                    "response": {
-                        "$ref": "AnnotateTextResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-language",
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
-                "analyzeEntities": {
-                    "description": "Finds named entities (currently proper names and common nouns) in the text\nalong with entity types, salience, mentions for each entity, and\nother properties.",
-                    "httpMethod": "POST",
-                    "id": "language.documents.analyzeEntities",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1beta1/documents:analyzeEntities",
-                    "request": {
-                        "$ref": "AnalyzeEntitiesRequest"
-                    },
-                    "response": {
-                        "$ref": "AnalyzeEntitiesResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-language",
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
                 "analyzeSyntax": {
                     "description": "Analyzes the syntax of the text and provides sentence boundaries and\ntokenization along with part of speech tags, dependency trees, and other\nproperties.",
                     "httpMethod": "POST",
@@ -190,646 +154,49 @@
                         "https://www.googleapis.com/auth/cloud-language",
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
+                },
+                "annotateText": {
+                    "description": "A convenience method that provides all the features that analyzeSentiment,\nanalyzeEntities, and analyzeSyntax provide in one call.",
+                    "httpMethod": "POST",
+                    "id": "language.documents.annotateText",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1beta1/documents:annotateText",
+                    "request": {
+                        "$ref": "AnnotateTextRequest"
+                    },
+                    "response": {
+                        "$ref": "AnnotateTextResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-language",
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "analyzeEntities": {
+                    "description": "Finds named entities (currently proper names and common nouns) in the text\nalong with entity types, salience, mentions for each entity, and\nother properties.",
+                    "httpMethod": "POST",
+                    "id": "language.documents.analyzeEntities",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1beta1/documents:analyzeEntities",
+                    "request": {
+                        "$ref": "AnalyzeEntitiesRequest"
+                    },
+                    "response": {
+                        "$ref": "AnalyzeEntitiesResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-language",
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
                 }
             }
         }
     },
-    "revision": "20171003",
+    "revision": "20171016",
     "rootUrl": "https://language.googleapis.com/",
     "schemas": {
-        "AnalyzeSyntaxRequest": {
-            "description": "The syntax analysis request message.",
-            "id": "AnalyzeSyntaxRequest",
-            "properties": {
-                "encodingType": {
-                    "description": "The encoding type used by the API to calculate offsets.",
-                    "enum": [
-                        "NONE",
-                        "UTF8",
-                        "UTF16",
-                        "UTF32"
-                    ],
-                    "enumDescriptions": [
-                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
-                    ],
-                    "type": "string"
-                },
-                "document": {
-                    "$ref": "Document",
-                    "description": "Input document."
-                }
-            },
-            "type": "object"
-        },
-        "AnalyzeSentimentResponse": {
-            "description": "The sentiment analysis response message.",
-            "id": "AnalyzeSentimentResponse",
-            "properties": {
-                "documentSentiment": {
-                    "$ref": "Sentiment",
-                    "description": "The overall sentiment of the input document."
-                },
-                "language": {
-                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
-                    "type": "string"
-                },
-                "sentences": {
-                    "description": "The sentiment for all the sentences in the document.",
-                    "items": {
-                        "$ref": "Sentence"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AnalyzeEntitiesResponse": {
-            "description": "The entity analysis response message.",
-            "id": "AnalyzeEntitiesResponse",
-            "properties": {
-                "entities": {
-                    "description": "The recognized entities in the input document.",
-                    "items": {
-                        "$ref": "Entity"
-                    },
-                    "type": "array"
-                },
-                "language": {
-                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AnalyzeSyntaxResponse": {
-            "description": "The syntax analysis response message.",
-            "id": "AnalyzeSyntaxResponse",
-            "properties": {
-                "language": {
-                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
-                    "type": "string"
-                },
-                "sentences": {
-                    "description": "Sentences in the input document.",
-                    "items": {
-                        "$ref": "Sentence"
-                    },
-                    "type": "array"
-                },
-                "tokens": {
-                    "description": "Tokens, along with their syntactic information, in the input document.",
-                    "items": {
-                        "$ref": "Token"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Entity": {
-            "description": "Represents a phrase in the text that is a known entity, such as\na person, an organization, or location. The API associates information, such\nas salience and mentions, with entities.",
-            "id": "Entity",
-            "properties": {
-                "salience": {
-                    "description": "The salience score associated with the entity in the [0, 1.0] range.\n\nThe salience score for an entity provides information about the\nimportance or centrality of that entity to the entire document text.\nScores closer to 0 are less salient, while scores closer to 1.0 are highly\nsalient.",
-                    "format": "float",
-                    "type": "number"
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Metadata associated with the entity.\n\nCurrently, Wikipedia URLs and Knowledge Graph MIDs are provided, if\navailable. The associated keys are \"wikipedia_url\" and \"mid\", respectively.",
-                    "type": "object"
-                },
-                "type": {
-                    "description": "The entity type.",
-                    "enum": [
-                        "UNKNOWN",
-                        "PERSON",
-                        "LOCATION",
-                        "ORGANIZATION",
-                        "EVENT",
-                        "WORK_OF_ART",
-                        "CONSUMER_GOOD",
-                        "OTHER"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown",
-                        "Person",
-                        "Location",
-                        "Organization",
-                        "Event",
-                        "Work of art",
-                        "Consumer goods",
-                        "Other types"
-                    ],
-                    "type": "string"
-                },
-                "mentions": {
-                    "description": "The mentions of this entity in the input document. The API currently\nsupports proper noun mentions.",
-                    "items": {
-                        "$ref": "EntityMention"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "The representative name for the entity.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AnnotateTextRequest": {
-            "description": "The request message for the text annotation API, which can perform multiple\nanalysis types (sentiment, entities, and syntax) in one call.",
-            "id": "AnnotateTextRequest",
-            "properties": {
-                "encodingType": {
-                    "description": "The encoding type used by the API to calculate offsets.",
-                    "enum": [
-                        "NONE",
-                        "UTF8",
-                        "UTF16",
-                        "UTF32"
-                    ],
-                    "enumDescriptions": [
-                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
-                    ],
-                    "type": "string"
-                },
-                "document": {
-                    "$ref": "Document",
-                    "description": "Input document."
-                },
-                "features": {
-                    "$ref": "Features",
-                    "description": "The enabled features."
-                }
-            },
-            "type": "object"
-        },
-        "AnalyzeSentimentRequest": {
-            "description": "The sentiment analysis request message.",
-            "id": "AnalyzeSentimentRequest",
-            "properties": {
-                "encodingType": {
-                    "description": "The encoding type used by the API to calculate sentence offsets for the\nsentence sentiment.",
-                    "enum": [
-                        "NONE",
-                        "UTF8",
-                        "UTF16",
-                        "UTF32"
-                    ],
-                    "enumDescriptions": [
-                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
-                    ],
-                    "type": "string"
-                },
-                "document": {
-                    "$ref": "Document",
-                    "description": "Input document."
-                }
-            },
-            "type": "object"
-        },
-        "AnnotateTextResponse": {
-            "description": "The text annotations response message.",
-            "id": "AnnotateTextResponse",
-            "properties": {
-                "entities": {
-                    "description": "Entities, along with their semantic information, in the input document.\nPopulated if the user enables\nAnnotateTextRequest.Features.extract_entities.",
-                    "items": {
-                        "$ref": "Entity"
-                    },
-                    "type": "array"
-                },
-                "documentSentiment": {
-                    "$ref": "Sentiment",
-                    "description": "The overall sentiment for the document. Populated if the user enables\nAnnotateTextRequest.Features.extract_document_sentiment."
-                },
-                "language": {
-                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
-                    "type": "string"
-                },
-                "sentences": {
-                    "description": "Sentences in the input document. Populated if the user enables\nAnnotateTextRequest.Features.extract_syntax.",
-                    "items": {
-                        "$ref": "Sentence"
-                    },
-                    "type": "array"
-                },
-                "tokens": {
-                    "description": "Tokens, along with their syntactic information, in the input document.\nPopulated if the user enables\nAnnotateTextRequest.Features.extract_syntax.",
-                    "items": {
-                        "$ref": "Token"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "DependencyEdge": {
-            "description": "Represents dependency parse tree information for a token.",
-            "id": "DependencyEdge",
-            "properties": {
-                "label": {
-                    "description": "The parse label for the token.",
-                    "enum": [
-                        "UNKNOWN",
-                        "ABBREV",
-                        "ACOMP",
-                        "ADVCL",
-                        "ADVMOD",
-                        "AMOD",
-                        "APPOS",
-                        "ATTR",
-                        "AUX",
-                        "AUXPASS",
-                        "CC",
-                        "CCOMP",
-                        "CONJ",
-                        "CSUBJ",
-                        "CSUBJPASS",
-                        "DEP",
-                        "DET",
-                        "DISCOURSE",
-                        "DOBJ",
-                        "EXPL",
-                        "GOESWITH",
-                        "IOBJ",
-                        "MARK",
-                        "MWE",
-                        "MWV",
-                        "NEG",
-                        "NN",
-                        "NPADVMOD",
-                        "NSUBJ",
-                        "NSUBJPASS",
-                        "NUM",
-                        "NUMBER",
-                        "P",
-                        "PARATAXIS",
-                        "PARTMOD",
-                        "PCOMP",
-                        "POBJ",
-                        "POSS",
-                        "POSTNEG",
-                        "PRECOMP",
-                        "PRECONJ",
-                        "PREDET",
-                        "PREF",
-                        "PREP",
-                        "PRONL",
-                        "PRT",
-                        "PS",
-                        "QUANTMOD",
-                        "RCMOD",
-                        "RCMODREL",
-                        "RDROP",
-                        "REF",
-                        "REMNANT",
-                        "REPARANDUM",
-                        "ROOT",
-                        "SNUM",
-                        "SUFF",
-                        "TMOD",
-                        "TOPIC",
-                        "VMOD",
-                        "VOCATIVE",
-                        "XCOMP",
-                        "SUFFIX",
-                        "TITLE",
-                        "ADVPHMOD",
-                        "AUXCAUS",
-                        "AUXVV",
-                        "DTMOD",
-                        "FOREIGN",
-                        "KW",
-                        "LIST",
-                        "NOMC",
-                        "NOMCSUBJ",
-                        "NOMCSUBJPASS",
-                        "NUMC",
-                        "COP",
-                        "DISLOCATED",
-                        "ASP",
-                        "GMOD",
-                        "GOBJ",
-                        "INFMOD",
-                        "MES",
-                        "NCOMP"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown",
-                        "Abbreviation modifier",
-                        "Adjectival complement",
-                        "Adverbial clause modifier",
-                        "Adverbial modifier",
-                        "Adjectival modifier of an NP",
-                        "Appositional modifier of an NP",
-                        "Attribute dependent of a copular verb",
-                        "Auxiliary (non-main) verb",
-                        "Passive auxiliary",
-                        "Coordinating conjunction",
-                        "Clausal complement of a verb or adjective",
-                        "Conjunct",
-                        "Clausal subject",
-                        "Clausal passive subject",
-                        "Dependency (unable to determine)",
-                        "Determiner",
-                        "Discourse",
-                        "Direct object",
-                        "Expletive",
-                        "Goes with (part of a word in a text not well edited)",
-                        "Indirect object",
-                        "Marker (word introducing a subordinate clause)",
-                        "Multi-word expression",
-                        "Multi-word verbal expression",
-                        "Negation modifier",
-                        "Noun compound modifier",
-                        "Noun phrase used as an adverbial modifier",
-                        "Nominal subject",
-                        "Passive nominal subject",
-                        "Numeric modifier of a noun",
-                        "Element of compound number",
-                        "Punctuation mark",
-                        "Parataxis relation",
-                        "Participial modifier",
-                        "The complement of a preposition is a clause",
-                        "Object of a preposition",
-                        "Possession modifier",
-                        "Postverbal negative particle",
-                        "Predicate complement",
-                        "Preconjunt",
-                        "Predeterminer",
-                        "Prefix",
-                        "Prepositional modifier",
-                        "The relationship between a verb and verbal morpheme",
-                        "Particle",
-                        "Associative or possessive marker",
-                        "Quantifier phrase modifier",
-                        "Relative clause modifier",
-                        "Complementizer in relative clause",
-                        "Ellipsis without a preceding predicate",
-                        "Referent",
-                        "Remnant",
-                        "Reparandum",
-                        "Root",
-                        "Suffix specifying a unit of number",
-                        "Suffix",
-                        "Temporal modifier",
-                        "Topic marker",
-                        "Clause headed by an infinite form of the verb that modifies a noun",
-                        "Vocative",
-                        "Open clausal complement",
-                        "Name suffix",
-                        "Name title",
-                        "Adverbial phrase modifier",
-                        "Causative auxiliary",
-                        "Helper auxiliary",
-                        "Rentaishi (Prenominal modifier)",
-                        "Foreign words",
-                        "Keyword",
-                        "List for chains of comparable items",
-                        "Nominalized clause",
-                        "Nominalized clausal subject",
-                        "Nominalized clausal passive",
-                        "Compound of numeric modifier",
-                        "Copula",
-                        "Dislocated relation (for fronted/topicalized elements)",
-                        "Aspect marker",
-                        "Genitive modifier",
-                        "Genitive object",
-                        "Infinitival modifier",
-                        "Measure",
-                        "Nominal complement of a noun"
-                    ],
-                    "type": "string"
-                },
-                "headTokenIndex": {
-                    "description": "Represents the head of this token in the dependency tree.\nThis is the index of the token which has an arc going to this token.\nThe index is the position of the token in the array of tokens returned\nby the API method. If this token is a root token, then the\n`head_token_index` is its own index.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "Token": {
-            "description": "Represents the smallest syntactic building block of the text.",
-            "id": "Token",
-            "properties": {
-                "partOfSpeech": {
-                    "$ref": "PartOfSpeech",
-                    "description": "Parts of speech tag for this token."
-                },
-                "dependencyEdge": {
-                    "$ref": "DependencyEdge",
-                    "description": "Dependency tree parse for this token."
-                },
-                "text": {
-                    "$ref": "TextSpan",
-                    "description": "The token text."
-                },
-                "lemma": {
-                    "description": "[Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TextSpan": {
-            "description": "Represents an output piece of text.",
-            "id": "TextSpan",
-            "properties": {
-                "beginOffset": {
-                    "description": "The API calculates the beginning offset of the content in the original\ndocument according to the EncodingType specified in the API request.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "content": {
-                    "description": "The content of the output text.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Status": {
-            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
-            "id": "Status",
-            "properties": {
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                },
-                "details": {
-                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                },
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "EntityMention": {
-            "description": "Represents a mention for an entity in the text. Currently, proper noun\nmentions are supported.",
-            "id": "EntityMention",
-            "properties": {
-                "type": {
-                    "description": "The type of the entity mention.",
-                    "enum": [
-                        "TYPE_UNKNOWN",
-                        "PROPER",
-                        "COMMON"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown",
-                        "Proper name",
-                        "Common noun (or noun compound)"
-                    ],
-                    "type": "string"
-                },
-                "text": {
-                    "$ref": "TextSpan",
-                    "description": "The mention text."
-                }
-            },
-            "type": "object"
-        },
-        "Features": {
-            "description": "All available features for sentiment, syntax, and semantic analysis.\nSetting each one to true will enable that specific analysis for the input.",
-            "id": "Features",
-            "properties": {
-                "extractDocumentSentiment": {
-                    "description": "Extract document-level sentiment.",
-                    "type": "boolean"
-                },
-                "extractSyntax": {
-                    "description": "Extract syntax information.",
-                    "type": "boolean"
-                },
-                "extractEntities": {
-                    "description": "Extract entities.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "Document": {
-            "description": "################################################################ #\n\nRepresents the input to API methods.",
-            "id": "Document",
-            "properties": {
-                "language": {
-                    "description": "The language of the document (if not specified, the language is\nautomatically detected). Both ISO and BCP-47 language codes are\naccepted.<br>\n[Language Support](/natural-language/docs/languages)\nlists currently supported languages for each API method.\nIf the language (either specified by the caller or automatically detected)\nis not supported by the called API method, an `INVALID_ARGUMENT` error\nis returned.",
-                    "type": "string"
-                },
-                "content": {
-                    "description": "The content of the input in string format.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "Required. If the type is not set or is `TYPE_UNSPECIFIED`,\nreturns an `INVALID_ARGUMENT` error.",
-                    "enum": [
-                        "TYPE_UNSPECIFIED",
-                        "PLAIN_TEXT",
-                        "HTML"
-                    ],
-                    "enumDescriptions": [
-                        "The content type is not specified.",
-                        "Plain text",
-                        "HTML"
-                    ],
-                    "type": "string"
-                },
-                "gcsContentUri": {
-                    "description": "The Google Cloud Storage URI where the file content is located.\nThis URI must be of the form: gs://bucket_name/object_name. For more\ndetails, see https://cloud.google.com/storage/docs/reference-uris.\nNOTE: Cloud Storage object versioning is not supported.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Sentence": {
-            "description": "Represents a sentence in the input document.",
-            "id": "Sentence",
-            "properties": {
-                "text": {
-                    "$ref": "TextSpan",
-                    "description": "The sentence text."
-                },
-                "sentiment": {
-                    "$ref": "Sentiment",
-                    "description": "For calls to AnalyzeSentiment or if\nAnnotateTextRequest.Features.extract_document_sentiment is set to\ntrue, this field will contain the sentiment for the sentence."
-                }
-            },
-            "type": "object"
-        },
-        "Sentiment": {
-            "description": "Represents the feeling associated with the entire text or entities in\nthe text.",
-            "id": "Sentiment",
-            "properties": {
-                "score": {
-                    "description": "Sentiment score between -1.0 (negative sentiment) and 1.0\n(positive sentiment).",
-                    "format": "float",
-                    "type": "number"
-                },
-                "polarity": {
-                    "description": "DEPRECATED FIELD - This field is being deprecated in\nfavor of score. Please refer to our documentation at\nhttps://cloud.google.com/natural-language/docs for more information.",
-                    "format": "float",
-                    "type": "number"
-                },
-                "magnitude": {
-                    "description": "A non-negative number in the [0, +inf) range, which represents\nthe absolute magnitude of sentiment regardless of score (positive or\nnegative).",
-                    "format": "float",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "AnalyzeEntitiesRequest": {
-            "description": "The entity analysis request message.",
-            "id": "AnalyzeEntitiesRequest",
-            "properties": {
-                "encodingType": {
-                    "description": "The encoding type used by the API to calculate offsets.",
-                    "enum": [
-                        "NONE",
-                        "UTF8",
-                        "UTF16",
-                        "UTF32"
-                    ],
-                    "enumDescriptions": [
-                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
-                    ],
-                    "type": "string"
-                },
-                "document": {
-                    "$ref": "Document",
-                    "description": "Input document."
-                }
-            },
-            "type": "object"
-        },
         "PartOfSpeech": {
             "description": "Represents part of speech information for a token.",
             "id": "PartOfSpeech",
@@ -1096,6 +463,639 @@
                 }
             },
             "type": "object"
+        },
+        "AnalyzeSyntaxRequest": {
+            "description": "The syntax analysis request message.",
+            "id": "AnalyzeSyntaxRequest",
+            "properties": {
+                "encodingType": {
+                    "description": "The encoding type used by the API to calculate offsets.",
+                    "enum": [
+                        "NONE",
+                        "UTF8",
+                        "UTF16",
+                        "UTF32"
+                    ],
+                    "enumDescriptions": [
+                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
+                    ],
+                    "type": "string"
+                },
+                "document": {
+                    "$ref": "Document",
+                    "description": "Input document."
+                }
+            },
+            "type": "object"
+        },
+        "AnalyzeSentimentResponse": {
+            "description": "The sentiment analysis response message.",
+            "id": "AnalyzeSentimentResponse",
+            "properties": {
+                "sentences": {
+                    "description": "The sentiment for all the sentences in the document.",
+                    "items": {
+                        "$ref": "Sentence"
+                    },
+                    "type": "array"
+                },
+                "documentSentiment": {
+                    "$ref": "Sentiment",
+                    "description": "The overall sentiment of the input document."
+                },
+                "language": {
+                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AnalyzeEntitiesResponse": {
+            "description": "The entity analysis response message.",
+            "id": "AnalyzeEntitiesResponse",
+            "properties": {
+                "entities": {
+                    "description": "The recognized entities in the input document.",
+                    "items": {
+                        "$ref": "Entity"
+                    },
+                    "type": "array"
+                },
+                "language": {
+                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AnalyzeSyntaxResponse": {
+            "description": "The syntax analysis response message.",
+            "id": "AnalyzeSyntaxResponse",
+            "properties": {
+                "tokens": {
+                    "description": "Tokens, along with their syntactic information, in the input document.",
+                    "items": {
+                        "$ref": "Token"
+                    },
+                    "type": "array"
+                },
+                "language": {
+                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
+                    "type": "string"
+                },
+                "sentences": {
+                    "description": "Sentences in the input document.",
+                    "items": {
+                        "$ref": "Sentence"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Entity": {
+            "description": "Represents a phrase in the text that is a known entity, such as\na person, an organization, or location. The API associates information, such\nas salience and mentions, with entities.",
+            "id": "Entity",
+            "properties": {
+                "mentions": {
+                    "description": "The mentions of this entity in the input document. The API currently\nsupports proper noun mentions.",
+                    "items": {
+                        "$ref": "EntityMention"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The representative name for the entity.",
+                    "type": "string"
+                },
+                "salience": {
+                    "description": "The salience score associated with the entity in the [0, 1.0] range.\n\nThe salience score for an entity provides information about the\nimportance or centrality of that entity to the entire document text.\nScores closer to 0 are less salient, while scores closer to 1.0 are highly\nsalient.",
+                    "format": "float",
+                    "type": "number"
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Metadata associated with the entity.\n\nCurrently, Wikipedia URLs and Knowledge Graph MIDs are provided, if\navailable. The associated keys are \"wikipedia_url\" and \"mid\", respectively.",
+                    "type": "object"
+                },
+                "type": {
+                    "description": "The entity type.",
+                    "enum": [
+                        "UNKNOWN",
+                        "PERSON",
+                        "LOCATION",
+                        "ORGANIZATION",
+                        "EVENT",
+                        "WORK_OF_ART",
+                        "CONSUMER_GOOD",
+                        "OTHER"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown",
+                        "Person",
+                        "Location",
+                        "Organization",
+                        "Event",
+                        "Work of art",
+                        "Consumer goods",
+                        "Other types"
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AnnotateTextRequest": {
+            "description": "The request message for the text annotation API, which can perform multiple\nanalysis types (sentiment, entities, and syntax) in one call.",
+            "id": "AnnotateTextRequest",
+            "properties": {
+                "encodingType": {
+                    "description": "The encoding type used by the API to calculate offsets.",
+                    "enum": [
+                        "NONE",
+                        "UTF8",
+                        "UTF16",
+                        "UTF32"
+                    ],
+                    "enumDescriptions": [
+                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
+                    ],
+                    "type": "string"
+                },
+                "document": {
+                    "$ref": "Document",
+                    "description": "Input document."
+                },
+                "features": {
+                    "$ref": "Features",
+                    "description": "The enabled features."
+                }
+            },
+            "type": "object"
+        },
+        "AnnotateTextResponse": {
+            "description": "The text annotations response message.",
+            "id": "AnnotateTextResponse",
+            "properties": {
+                "tokens": {
+                    "description": "Tokens, along with their syntactic information, in the input document.\nPopulated if the user enables\nAnnotateTextRequest.Features.extract_syntax.",
+                    "items": {
+                        "$ref": "Token"
+                    },
+                    "type": "array"
+                },
+                "entities": {
+                    "description": "Entities, along with their semantic information, in the input document.\nPopulated if the user enables\nAnnotateTextRequest.Features.extract_entities.",
+                    "items": {
+                        "$ref": "Entity"
+                    },
+                    "type": "array"
+                },
+                "documentSentiment": {
+                    "$ref": "Sentiment",
+                    "description": "The overall sentiment for the document. Populated if the user enables\nAnnotateTextRequest.Features.extract_document_sentiment."
+                },
+                "language": {
+                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
+                    "type": "string"
+                },
+                "sentences": {
+                    "description": "Sentences in the input document. Populated if the user enables\nAnnotateTextRequest.Features.extract_syntax.",
+                    "items": {
+                        "$ref": "Sentence"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AnalyzeSentimentRequest": {
+            "description": "The sentiment analysis request message.",
+            "id": "AnalyzeSentimentRequest",
+            "properties": {
+                "encodingType": {
+                    "description": "The encoding type used by the API to calculate sentence offsets for the\nsentence sentiment.",
+                    "enum": [
+                        "NONE",
+                        "UTF8",
+                        "UTF16",
+                        "UTF32"
+                    ],
+                    "enumDescriptions": [
+                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
+                    ],
+                    "type": "string"
+                },
+                "document": {
+                    "$ref": "Document",
+                    "description": "Input document."
+                }
+            },
+            "type": "object"
+        },
+        "DependencyEdge": {
+            "description": "Represents dependency parse tree information for a token.",
+            "id": "DependencyEdge",
+            "properties": {
+                "label": {
+                    "description": "The parse label for the token.",
+                    "enum": [
+                        "UNKNOWN",
+                        "ABBREV",
+                        "ACOMP",
+                        "ADVCL",
+                        "ADVMOD",
+                        "AMOD",
+                        "APPOS",
+                        "ATTR",
+                        "AUX",
+                        "AUXPASS",
+                        "CC",
+                        "CCOMP",
+                        "CONJ",
+                        "CSUBJ",
+                        "CSUBJPASS",
+                        "DEP",
+                        "DET",
+                        "DISCOURSE",
+                        "DOBJ",
+                        "EXPL",
+                        "GOESWITH",
+                        "IOBJ",
+                        "MARK",
+                        "MWE",
+                        "MWV",
+                        "NEG",
+                        "NN",
+                        "NPADVMOD",
+                        "NSUBJ",
+                        "NSUBJPASS",
+                        "NUM",
+                        "NUMBER",
+                        "P",
+                        "PARATAXIS",
+                        "PARTMOD",
+                        "PCOMP",
+                        "POBJ",
+                        "POSS",
+                        "POSTNEG",
+                        "PRECOMP",
+                        "PRECONJ",
+                        "PREDET",
+                        "PREF",
+                        "PREP",
+                        "PRONL",
+                        "PRT",
+                        "PS",
+                        "QUANTMOD",
+                        "RCMOD",
+                        "RCMODREL",
+                        "RDROP",
+                        "REF",
+                        "REMNANT",
+                        "REPARANDUM",
+                        "ROOT",
+                        "SNUM",
+                        "SUFF",
+                        "TMOD",
+                        "TOPIC",
+                        "VMOD",
+                        "VOCATIVE",
+                        "XCOMP",
+                        "SUFFIX",
+                        "TITLE",
+                        "ADVPHMOD",
+                        "AUXCAUS",
+                        "AUXVV",
+                        "DTMOD",
+                        "FOREIGN",
+                        "KW",
+                        "LIST",
+                        "NOMC",
+                        "NOMCSUBJ",
+                        "NOMCSUBJPASS",
+                        "NUMC",
+                        "COP",
+                        "DISLOCATED",
+                        "ASP",
+                        "GMOD",
+                        "GOBJ",
+                        "INFMOD",
+                        "MES",
+                        "NCOMP"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown",
+                        "Abbreviation modifier",
+                        "Adjectival complement",
+                        "Adverbial clause modifier",
+                        "Adverbial modifier",
+                        "Adjectival modifier of an NP",
+                        "Appositional modifier of an NP",
+                        "Attribute dependent of a copular verb",
+                        "Auxiliary (non-main) verb",
+                        "Passive auxiliary",
+                        "Coordinating conjunction",
+                        "Clausal complement of a verb or adjective",
+                        "Conjunct",
+                        "Clausal subject",
+                        "Clausal passive subject",
+                        "Dependency (unable to determine)",
+                        "Determiner",
+                        "Discourse",
+                        "Direct object",
+                        "Expletive",
+                        "Goes with (part of a word in a text not well edited)",
+                        "Indirect object",
+                        "Marker (word introducing a subordinate clause)",
+                        "Multi-word expression",
+                        "Multi-word verbal expression",
+                        "Negation modifier",
+                        "Noun compound modifier",
+                        "Noun phrase used as an adverbial modifier",
+                        "Nominal subject",
+                        "Passive nominal subject",
+                        "Numeric modifier of a noun",
+                        "Element of compound number",
+                        "Punctuation mark",
+                        "Parataxis relation",
+                        "Participial modifier",
+                        "The complement of a preposition is a clause",
+                        "Object of a preposition",
+                        "Possession modifier",
+                        "Postverbal negative particle",
+                        "Predicate complement",
+                        "Preconjunt",
+                        "Predeterminer",
+                        "Prefix",
+                        "Prepositional modifier",
+                        "The relationship between a verb and verbal morpheme",
+                        "Particle",
+                        "Associative or possessive marker",
+                        "Quantifier phrase modifier",
+                        "Relative clause modifier",
+                        "Complementizer in relative clause",
+                        "Ellipsis without a preceding predicate",
+                        "Referent",
+                        "Remnant",
+                        "Reparandum",
+                        "Root",
+                        "Suffix specifying a unit of number",
+                        "Suffix",
+                        "Temporal modifier",
+                        "Topic marker",
+                        "Clause headed by an infinite form of the verb that modifies a noun",
+                        "Vocative",
+                        "Open clausal complement",
+                        "Name suffix",
+                        "Name title",
+                        "Adverbial phrase modifier",
+                        "Causative auxiliary",
+                        "Helper auxiliary",
+                        "Rentaishi (Prenominal modifier)",
+                        "Foreign words",
+                        "Keyword",
+                        "List for chains of comparable items",
+                        "Nominalized clause",
+                        "Nominalized clausal subject",
+                        "Nominalized clausal passive",
+                        "Compound of numeric modifier",
+                        "Copula",
+                        "Dislocated relation (for fronted/topicalized elements)",
+                        "Aspect marker",
+                        "Genitive modifier",
+                        "Genitive object",
+                        "Infinitival modifier",
+                        "Measure",
+                        "Nominal complement of a noun"
+                    ],
+                    "type": "string"
+                },
+                "headTokenIndex": {
+                    "description": "Represents the head of this token in the dependency tree.\nThis is the index of the token which has an arc going to this token.\nThe index is the position of the token in the array of tokens returned\nby the API method. If this token is a root token, then the\n`head_token_index` is its own index.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "TextSpan": {
+            "description": "Represents an output piece of text.",
+            "id": "TextSpan",
+            "properties": {
+                "beginOffset": {
+                    "description": "The API calculates the beginning offset of the content in the original\ndocument according to the EncodingType specified in the API request.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "content": {
+                    "description": "The content of the output text.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Token": {
+            "description": "Represents the smallest syntactic building block of the text.",
+            "id": "Token",
+            "properties": {
+                "dependencyEdge": {
+                    "$ref": "DependencyEdge",
+                    "description": "Dependency tree parse for this token."
+                },
+                "text": {
+                    "$ref": "TextSpan",
+                    "description": "The token text."
+                },
+                "lemma": {
+                    "description": "[Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.",
+                    "type": "string"
+                },
+                "partOfSpeech": {
+                    "$ref": "PartOfSpeech",
+                    "description": "Parts of speech tag for this token."
+                }
+            },
+            "type": "object"
+        },
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+            "id": "Status",
+            "properties": {
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "EntityMention": {
+            "description": "Represents a mention for an entity in the text. Currently, proper noun\nmentions are supported.",
+            "id": "EntityMention",
+            "properties": {
+                "type": {
+                    "description": "The type of the entity mention.",
+                    "enum": [
+                        "TYPE_UNKNOWN",
+                        "PROPER",
+                        "COMMON"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown",
+                        "Proper name",
+                        "Common noun (or noun compound)"
+                    ],
+                    "type": "string"
+                },
+                "text": {
+                    "$ref": "TextSpan",
+                    "description": "The mention text."
+                }
+            },
+            "type": "object"
+        },
+        "Features": {
+            "description": "All available features for sentiment, syntax, and semantic analysis.\nSetting each one to true will enable that specific analysis for the input.",
+            "id": "Features",
+            "properties": {
+                "extractEntities": {
+                    "description": "Extract entities.",
+                    "type": "boolean"
+                },
+                "extractDocumentSentiment": {
+                    "description": "Extract document-level sentiment.",
+                    "type": "boolean"
+                },
+                "extractSyntax": {
+                    "description": "Extract syntax information.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "Document": {
+            "description": "################################################################ #\n\nRepresents the input to API methods.",
+            "id": "Document",
+            "properties": {
+                "content": {
+                    "description": "The content of the input in string format.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Required. If the type is not set or is `TYPE_UNSPECIFIED`,\nreturns an `INVALID_ARGUMENT` error.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "PLAIN_TEXT",
+                        "HTML"
+                    ],
+                    "enumDescriptions": [
+                        "The content type is not specified.",
+                        "Plain text",
+                        "HTML"
+                    ],
+                    "type": "string"
+                },
+                "gcsContentUri": {
+                    "description": "The Google Cloud Storage URI where the file content is located.\nThis URI must be of the form: gs://bucket_name/object_name. For more\ndetails, see https://cloud.google.com/storage/docs/reference-uris.\nNOTE: Cloud Storage object versioning is not supported.",
+                    "type": "string"
+                },
+                "language": {
+                    "description": "The language of the document (if not specified, the language is\nautomatically detected). Both ISO and BCP-47 language codes are\naccepted.<br>\n[Language Support](/natural-language/docs/languages)\nlists currently supported languages for each API method.\nIf the language (either specified by the caller or automatically detected)\nis not supported by the called API method, an `INVALID_ARGUMENT` error\nis returned.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Sentence": {
+            "description": "Represents a sentence in the input document.",
+            "id": "Sentence",
+            "properties": {
+                "text": {
+                    "$ref": "TextSpan",
+                    "description": "The sentence text."
+                },
+                "sentiment": {
+                    "$ref": "Sentiment",
+                    "description": "For calls to AnalyzeSentiment or if\nAnnotateTextRequest.Features.extract_document_sentiment is set to\ntrue, this field will contain the sentiment for the sentence."
+                }
+            },
+            "type": "object"
+        },
+        "AnalyzeEntitiesRequest": {
+            "description": "The entity analysis request message.",
+            "id": "AnalyzeEntitiesRequest",
+            "properties": {
+                "document": {
+                    "$ref": "Document",
+                    "description": "Input document."
+                },
+                "encodingType": {
+                    "description": "The encoding type used by the API to calculate offsets.",
+                    "enum": [
+                        "NONE",
+                        "UTF8",
+                        "UTF16",
+                        "UTF32"
+                    ],
+                    "enumDescriptions": [
+                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Sentiment": {
+            "description": "Represents the feeling associated with the entire text or entities in\nthe text.",
+            "id": "Sentiment",
+            "properties": {
+                "score": {
+                    "description": "Sentiment score between -1.0 (negative sentiment) and 1.0\n(positive sentiment).",
+                    "format": "float",
+                    "type": "number"
+                },
+                "polarity": {
+                    "description": "DEPRECATED FIELD - This field is being deprecated in\nfavor of score. Please refer to our documentation at\nhttps://cloud.google.com/natural-language/docs for more information.",
+                    "format": "float",
+                    "type": "number"
+                },
+                "magnitude": {
+                    "description": "A non-negative number in the [0, +inf) range, which represents\nthe absolute magnitude of sentiment regardless of score (positive or\nnegative).",
+                    "format": "float",
+                    "type": "number"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis_beta/language__v1beta2.json b/discovery/googleapis_beta/language__v1beta2.json
index 8ff336d..180ec99 100644
--- a/discovery/googleapis_beta/language__v1beta2.json
+++ b/discovery/googleapis_beta/language__v1beta2.json
@@ -2,11 +2,11 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/cloud-platform": {
-                    "description": "View and manage your data across Google Cloud Platform services"
-                },
                 "https://www.googleapis.com/auth/cloud-language": {
                     "description": "Apply machine learning models to reveal the structure and meaning of text"
+                },
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "View and manage your data across Google Cloud Platform services"
                 }
             }
         }
@@ -28,38 +28,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
         "uploadType": {
             "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
@@ -113,6 +81,38 @@
             "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
             "location": "query",
             "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
         }
     },
     "protocol": "rest",
@@ -230,9 +230,315 @@
             }
         }
     },
-    "revision": "20171003",
+    "revision": "20171016",
     "rootUrl": "https://language.googleapis.com/",
     "schemas": {
+        "Entity": {
+            "description": "Represents a phrase in the text that is a known entity, such as\na person, an organization, or location. The API associates information, such\nas salience and mentions, with entities.",
+            "id": "Entity",
+            "properties": {
+                "name": {
+                    "description": "The representative name for the entity.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The entity type.",
+                    "enum": [
+                        "UNKNOWN",
+                        "PERSON",
+                        "LOCATION",
+                        "ORGANIZATION",
+                        "EVENT",
+                        "WORK_OF_ART",
+                        "CONSUMER_GOOD",
+                        "OTHER"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown",
+                        "Person",
+                        "Location",
+                        "Organization",
+                        "Event",
+                        "Work of art",
+                        "Consumer goods",
+                        "Other types"
+                    ],
+                    "type": "string"
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Metadata associated with the entity.\n\nCurrently, Wikipedia URLs and Knowledge Graph MIDs are provided, if\navailable. The associated keys are \"wikipedia_url\" and \"mid\", respectively.",
+                    "type": "object"
+                },
+                "salience": {
+                    "description": "The salience score associated with the entity in the [0, 1.0] range.\n\nThe salience score for an entity provides information about the\nimportance or centrality of that entity to the entire document text.\nScores closer to 0 are less salient, while scores closer to 1.0 are highly\nsalient.",
+                    "format": "float",
+                    "type": "number"
+                },
+                "sentiment": {
+                    "$ref": "Sentiment",
+                    "description": "For calls to AnalyzeEntitySentiment or if\nAnnotateTextRequest.Features.extract_entity_sentiment is set to\ntrue, this field will contain the aggregate sentiment expressed for this\nentity in the provided document."
+                },
+                "mentions": {
+                    "description": "The mentions of this entity in the input document. The API currently\nsupports proper noun mentions.",
+                    "items": {
+                        "$ref": "EntityMention"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AnnotateTextRequest": {
+            "description": "The request message for the text annotation API, which can perform multiple\nanalysis types (sentiment, entities, and syntax) in one call.",
+            "id": "AnnotateTextRequest",
+            "properties": {
+                "encodingType": {
+                    "description": "The encoding type used by the API to calculate offsets.",
+                    "enum": [
+                        "NONE",
+                        "UTF8",
+                        "UTF16",
+                        "UTF32"
+                    ],
+                    "enumDescriptions": [
+                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
+                    ],
+                    "type": "string"
+                },
+                "document": {
+                    "$ref": "Document",
+                    "description": "Input document."
+                },
+                "features": {
+                    "$ref": "Features",
+                    "description": "The enabled features."
+                }
+            },
+            "type": "object"
+        },
+        "AnalyzeSentimentRequest": {
+            "description": "The sentiment analysis request message.",
+            "id": "AnalyzeSentimentRequest",
+            "properties": {
+                "encodingType": {
+                    "description": "The encoding type used by the API to calculate sentence offsets for the\nsentence sentiment.",
+                    "enum": [
+                        "NONE",
+                        "UTF8",
+                        "UTF16",
+                        "UTF32"
+                    ],
+                    "enumDescriptions": [
+                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
+                    ],
+                    "type": "string"
+                },
+                "document": {
+                    "$ref": "Document",
+                    "description": "Input document."
+                }
+            },
+            "type": "object"
+        },
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+            "id": "Status",
+            "properties": {
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Features": {
+            "description": "All available features for sentiment, syntax, and semantic analysis.\nSetting each one to true will enable that specific analysis for the input.",
+            "id": "Features",
+            "properties": {
+                "extractEntitySentiment": {
+                    "description": "Extract entities and their associated sentiment.",
+                    "type": "boolean"
+                },
+                "extractDocumentSentiment": {
+                    "description": "Extract document-level sentiment.",
+                    "type": "boolean"
+                },
+                "extractSyntax": {
+                    "description": "Extract syntax information.",
+                    "type": "boolean"
+                },
+                "extractEntities": {
+                    "description": "Extract entities.",
+                    "type": "boolean"
+                },
+                "classifyText": {
+                    "description": "Classify the full document into categories.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "Document": {
+            "description": "################################################################ #\n\nRepresents the input to API methods.",
+            "id": "Document",
+            "properties": {
+                "content": {
+                    "description": "The content of the input in string format.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Required. If the type is not set or is `TYPE_UNSPECIFIED`,\nreturns an `INVALID_ARGUMENT` error.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "PLAIN_TEXT",
+                        "HTML"
+                    ],
+                    "enumDescriptions": [
+                        "The content type is not specified.",
+                        "Plain text",
+                        "HTML"
+                    ],
+                    "type": "string"
+                },
+                "gcsContentUri": {
+                    "description": "The Google Cloud Storage URI where the file content is located.\nThis URI must be of the form: gs://bucket_name/object_name. For more\ndetails, see https://cloud.google.com/storage/docs/reference-uris.\nNOTE: Cloud Storage object versioning is not supported.",
+                    "type": "string"
+                },
+                "language": {
+                    "description": "The language of the document (if not specified, the language is\nautomatically detected). Both ISO and BCP-47 language codes are\naccepted.<br>\n[Language Support](/natural-language/docs/languages)\nlists currently supported languages for each API method.\nIf the language (either specified by the caller or automatically detected)\nis not supported by the called API method, an `INVALID_ARGUMENT` error\nis returned.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AnalyzeEntitiesRequest": {
+            "description": "The entity analysis request message.",
+            "id": "AnalyzeEntitiesRequest",
+            "properties": {
+                "encodingType": {
+                    "description": "The encoding type used by the API to calculate offsets.",
+                    "enum": [
+                        "NONE",
+                        "UTF8",
+                        "UTF16",
+                        "UTF32"
+                    ],
+                    "enumDescriptions": [
+                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
+                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
+                    ],
+                    "type": "string"
+                },
+                "document": {
+                    "$ref": "Document",
+                    "description": "Input document."
+                }
+            },
+            "type": "object"
+        },
+        "ClassifyTextRequest": {
+            "description": "The document classification request message.",
+            "id": "ClassifyTextRequest",
+            "properties": {
+                "document": {
+                    "$ref": "Document",
+                    "description": "Input document."
+                }
+            },
+            "type": "object"
+        },
+        "AnalyzeEntitySentimentResponse": {
+            "description": "The entity-level sentiment analysis response message.",
+            "id": "AnalyzeEntitySentimentResponse",
+            "properties": {
+                "language": {
+                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
+                    "type": "string"
+                },
+                "entities": {
+                    "description": "The recognized entities in the input document with associated sentiments.",
+                    "items": {
+                        "$ref": "Entity"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "AnalyzeSentimentResponse": {
+            "description": "The sentiment analysis response message.",
+            "id": "AnalyzeSentimentResponse",
+            "properties": {
+                "language": {
+                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
+                    "type": "string"
+                },
+                "sentences": {
+                    "description": "The sentiment for all the sentences in the document.",
+                    "items": {
+                        "$ref": "Sentence"
+                    },
+                    "type": "array"
+                },
+                "documentSentiment": {
+                    "$ref": "Sentiment",
+                    "description": "The overall sentiment of the input document."
+                }
+            },
+            "type": "object"
+        },
+        "AnalyzeSyntaxResponse": {
+            "description": "The syntax analysis response message.",
+            "id": "AnalyzeSyntaxResponse",
+            "properties": {
+                "tokens": {
+                    "description": "Tokens, along with their syntactic information, in the input document.",
+                    "items": {
+                        "$ref": "Token"
+                    },
+                    "type": "array"
+                },
+                "language": {
+                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
+                    "type": "string"
+                },
+                "sentences": {
+                    "description": "Sentences in the input document.",
+                    "items": {
+                        "$ref": "Sentence"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "AnnotateTextResponse": {
             "description": "The text annotations response message.",
             "id": "AnnotateTextResponse",
@@ -462,22 +768,6 @@
             },
             "type": "object"
         },
-        "TextSpan": {
-            "description": "Represents an output piece of text.",
-            "id": "TextSpan",
-            "properties": {
-                "beginOffset": {
-                    "description": "The API calculates the beginning offset of the content in the original\ndocument according to the EncodingType specified in the API request.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "content": {
-                    "description": "The content of the output text.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "Token": {
             "description": "Represents the smallest syntactic building block of the text.",
             "id": "Token",
@@ -501,6 +791,36 @@
             },
             "type": "object"
         },
+        "TextSpan": {
+            "description": "Represents an output piece of text.",
+            "id": "TextSpan",
+            "properties": {
+                "content": {
+                    "description": "The content of the output text.",
+                    "type": "string"
+                },
+                "beginOffset": {
+                    "description": "The API calculates the beginning offset of the content in the original\ndocument according to the EncodingType specified in the API request.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "ClassifyTextResponse": {
+            "description": "The document classification response message.",
+            "id": "ClassifyTextResponse",
+            "properties": {
+                "categories": {
+                    "description": "Categories representing the input document.",
+                    "items": {
+                        "$ref": "ClassificationCategory"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "EntityMention": {
             "description": "Represents a mention for an entity in the text. Currently, proper noun\nmentions are supported.",
             "id": "EntityMention",
@@ -530,31 +850,17 @@
             },
             "type": "object"
         },
-        "ClassifyTextResponse": {
-            "description": "The document classification response message.",
-            "id": "ClassifyTextResponse",
-            "properties": {
-                "categories": {
-                    "description": "Categories representing the input document.",
-                    "items": {
-                        "$ref": "ClassificationCategory"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "Sentence": {
             "description": "Represents a sentence in the input document.",
             "id": "Sentence",
             "properties": {
-                "sentiment": {
-                    "$ref": "Sentiment",
-                    "description": "For calls to AnalyzeSentiment or if\nAnnotateTextRequest.Features.extract_document_sentiment is set to\ntrue, this field will contain the sentiment for the sentence."
-                },
                 "text": {
                     "$ref": "TextSpan",
                     "description": "The sentence text."
+                },
+                "sentiment": {
+                    "$ref": "Sentiment",
+                    "description": "For calls to AnalyzeSentiment or if\nAnnotateTextRequest.Features.extract_document_sentiment is set to\ntrue, this field will contain the sentiment for the sentence."
                 }
             },
             "type": "object"
@@ -623,128 +929,6 @@
             "description": "Represents part of speech information for a token.",
             "id": "PartOfSpeech",
             "properties": {
-                "gender": {
-                    "description": "The grammatical gender.",
-                    "enum": [
-                        "GENDER_UNKNOWN",
-                        "FEMININE",
-                        "MASCULINE",
-                        "NEUTER"
-                    ],
-                    "enumDescriptions": [
-                        "Gender is not applicable in the analyzed language or is not predicted.",
-                        "Feminine",
-                        "Masculine",
-                        "Neuter"
-                    ],
-                    "type": "string"
-                },
-                "person": {
-                    "description": "The grammatical person.",
-                    "enum": [
-                        "PERSON_UNKNOWN",
-                        "FIRST",
-                        "SECOND",
-                        "THIRD",
-                        "REFLEXIVE_PERSON"
-                    ],
-                    "enumDescriptions": [
-                        "Person is not applicable in the analyzed language or is not predicted.",
-                        "First",
-                        "Second",
-                        "Third",
-                        "Reflexive"
-                    ],
-                    "type": "string"
-                },
-                "proper": {
-                    "description": "The grammatical properness.",
-                    "enum": [
-                        "PROPER_UNKNOWN",
-                        "PROPER",
-                        "NOT_PROPER"
-                    ],
-                    "enumDescriptions": [
-                        "Proper is not applicable in the analyzed language or is not predicted.",
-                        "Proper",
-                        "Not proper"
-                    ],
-                    "type": "string"
-                },
-                "case": {
-                    "description": "The grammatical case.",
-                    "enum": [
-                        "CASE_UNKNOWN",
-                        "ACCUSATIVE",
-                        "ADVERBIAL",
-                        "COMPLEMENTIVE",
-                        "DATIVE",
-                        "GENITIVE",
-                        "INSTRUMENTAL",
-                        "LOCATIVE",
-                        "NOMINATIVE",
-                        "OBLIQUE",
-                        "PARTITIVE",
-                        "PREPOSITIONAL",
-                        "REFLEXIVE_CASE",
-                        "RELATIVE_CASE",
-                        "VOCATIVE"
-                    ],
-                    "enumDescriptions": [
-                        "Case is not applicable in the analyzed language or is not predicted.",
-                        "Accusative",
-                        "Adverbial",
-                        "Complementive",
-                        "Dative",
-                        "Genitive",
-                        "Instrumental",
-                        "Locative",
-                        "Nominative",
-                        "Oblique",
-                        "Partitive",
-                        "Prepositional",
-                        "Reflexive",
-                        "Relative",
-                        "Vocative"
-                    ],
-                    "type": "string"
-                },
-                "tense": {
-                    "description": "The grammatical tense.",
-                    "enum": [
-                        "TENSE_UNKNOWN",
-                        "CONDITIONAL_TENSE",
-                        "FUTURE",
-                        "PAST",
-                        "PRESENT",
-                        "IMPERFECT",
-                        "PLUPERFECT"
-                    ],
-                    "enumDescriptions": [
-                        "Tense is not applicable in the analyzed language or is not predicted.",
-                        "Conditional",
-                        "Future",
-                        "Past",
-                        "Present",
-                        "Imperfect",
-                        "Pluperfect"
-                    ],
-                    "type": "string"
-                },
-                "reciprocity": {
-                    "description": "The grammatical reciprocity.",
-                    "enum": [
-                        "RECIPROCITY_UNKNOWN",
-                        "RECIPROCAL",
-                        "NON_RECIPROCAL"
-                    ],
-                    "enumDescriptions": [
-                        "Reciprocity is not applicable in the analyzed language or is not\npredicted.",
-                        "Reciprocal",
-                        "Non-reciprocal"
-                    ],
-                    "type": "string"
-                },
                 "form": {
                     "description": "The grammatical form.",
                     "enum": [
@@ -882,6 +1066,128 @@
                         "Affix"
                     ],
                     "type": "string"
+                },
+                "gender": {
+                    "description": "The grammatical gender.",
+                    "enum": [
+                        "GENDER_UNKNOWN",
+                        "FEMININE",
+                        "MASCULINE",
+                        "NEUTER"
+                    ],
+                    "enumDescriptions": [
+                        "Gender is not applicable in the analyzed language or is not predicted.",
+                        "Feminine",
+                        "Masculine",
+                        "Neuter"
+                    ],
+                    "type": "string"
+                },
+                "person": {
+                    "description": "The grammatical person.",
+                    "enum": [
+                        "PERSON_UNKNOWN",
+                        "FIRST",
+                        "SECOND",
+                        "THIRD",
+                        "REFLEXIVE_PERSON"
+                    ],
+                    "enumDescriptions": [
+                        "Person is not applicable in the analyzed language or is not predicted.",
+                        "First",
+                        "Second",
+                        "Third",
+                        "Reflexive"
+                    ],
+                    "type": "string"
+                },
+                "proper": {
+                    "description": "The grammatical properness.",
+                    "enum": [
+                        "PROPER_UNKNOWN",
+                        "PROPER",
+                        "NOT_PROPER"
+                    ],
+                    "enumDescriptions": [
+                        "Proper is not applicable in the analyzed language or is not predicted.",
+                        "Proper",
+                        "Not proper"
+                    ],
+                    "type": "string"
+                },
+                "case": {
+                    "description": "The grammatical case.",
+                    "enum": [
+                        "CASE_UNKNOWN",
+                        "ACCUSATIVE",
+                        "ADVERBIAL",
+                        "COMPLEMENTIVE",
+                        "DATIVE",
+                        "GENITIVE",
+                        "INSTRUMENTAL",
+                        "LOCATIVE",
+                        "NOMINATIVE",
+                        "OBLIQUE",
+                        "PARTITIVE",
+                        "PREPOSITIONAL",
+                        "REFLEXIVE_CASE",
+                        "RELATIVE_CASE",
+                        "VOCATIVE"
+                    ],
+                    "enumDescriptions": [
+                        "Case is not applicable in the analyzed language or is not predicted.",
+                        "Accusative",
+                        "Adverbial",
+                        "Complementive",
+                        "Dative",
+                        "Genitive",
+                        "Instrumental",
+                        "Locative",
+                        "Nominative",
+                        "Oblique",
+                        "Partitive",
+                        "Prepositional",
+                        "Reflexive",
+                        "Relative",
+                        "Vocative"
+                    ],
+                    "type": "string"
+                },
+                "tense": {
+                    "description": "The grammatical tense.",
+                    "enum": [
+                        "TENSE_UNKNOWN",
+                        "CONDITIONAL_TENSE",
+                        "FUTURE",
+                        "PAST",
+                        "PRESENT",
+                        "IMPERFECT",
+                        "PLUPERFECT"
+                    ],
+                    "enumDescriptions": [
+                        "Tense is not applicable in the analyzed language or is not predicted.",
+                        "Conditional",
+                        "Future",
+                        "Past",
+                        "Present",
+                        "Imperfect",
+                        "Pluperfect"
+                    ],
+                    "type": "string"
+                },
+                "reciprocity": {
+                    "description": "The grammatical reciprocity.",
+                    "enum": [
+                        "RECIPROCITY_UNKNOWN",
+                        "RECIPROCAL",
+                        "NON_RECIPROCAL"
+                    ],
+                    "enumDescriptions": [
+                        "Reciprocity is not applicable in the analyzed language or is not\npredicted.",
+                        "Reciprocal",
+                        "Non-reciprocal"
+                    ],
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -930,312 +1236,6 @@
                 }
             },
             "type": "object"
-        },
-        "Entity": {
-            "description": "Represents a phrase in the text that is a known entity, such as\na person, an organization, or location. The API associates information, such\nas salience and mentions, with entities.",
-            "id": "Entity",
-            "properties": {
-                "name": {
-                    "description": "The representative name for the entity.",
-                    "type": "string"
-                },
-                "salience": {
-                    "description": "The salience score associated with the entity in the [0, 1.0] range.\n\nThe salience score for an entity provides information about the\nimportance or centrality of that entity to the entire document text.\nScores closer to 0 are less salient, while scores closer to 1.0 are highly\nsalient.",
-                    "format": "float",
-                    "type": "number"
-                },
-                "type": {
-                    "description": "The entity type.",
-                    "enum": [
-                        "UNKNOWN",
-                        "PERSON",
-                        "LOCATION",
-                        "ORGANIZATION",
-                        "EVENT",
-                        "WORK_OF_ART",
-                        "CONSUMER_GOOD",
-                        "OTHER"
-                    ],
-                    "enumDescriptions": [
-                        "Unknown",
-                        "Person",
-                        "Location",
-                        "Organization",
-                        "Event",
-                        "Work of art",
-                        "Consumer goods",
-                        "Other types"
-                    ],
-                    "type": "string"
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Metadata associated with the entity.\n\nCurrently, Wikipedia URLs and Knowledge Graph MIDs are provided, if\navailable. The associated keys are \"wikipedia_url\" and \"mid\", respectively.",
-                    "type": "object"
-                },
-                "sentiment": {
-                    "$ref": "Sentiment",
-                    "description": "For calls to AnalyzeEntitySentiment or if\nAnnotateTextRequest.Features.extract_entity_sentiment is set to\ntrue, this field will contain the aggregate sentiment expressed for this\nentity in the provided document."
-                },
-                "mentions": {
-                    "description": "The mentions of this entity in the input document. The API currently\nsupports proper noun mentions.",
-                    "items": {
-                        "$ref": "EntityMention"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AnnotateTextRequest": {
-            "description": "The request message for the text annotation API, which can perform multiple\nanalysis types (sentiment, entities, and syntax) in one call.",
-            "id": "AnnotateTextRequest",
-            "properties": {
-                "encodingType": {
-                    "description": "The encoding type used by the API to calculate offsets.",
-                    "enum": [
-                        "NONE",
-                        "UTF8",
-                        "UTF16",
-                        "UTF32"
-                    ],
-                    "enumDescriptions": [
-                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
-                    ],
-                    "type": "string"
-                },
-                "document": {
-                    "$ref": "Document",
-                    "description": "Input document."
-                },
-                "features": {
-                    "$ref": "Features",
-                    "description": "The enabled features."
-                }
-            },
-            "type": "object"
-        },
-        "AnalyzeSentimentRequest": {
-            "description": "The sentiment analysis request message.",
-            "id": "AnalyzeSentimentRequest",
-            "properties": {
-                "encodingType": {
-                    "description": "The encoding type used by the API to calculate sentence offsets for the\nsentence sentiment.",
-                    "enum": [
-                        "NONE",
-                        "UTF8",
-                        "UTF16",
-                        "UTF32"
-                    ],
-                    "enumDescriptions": [
-                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
-                    ],
-                    "type": "string"
-                },
-                "document": {
-                    "$ref": "Document",
-                    "description": "Input document."
-                }
-            },
-            "type": "object"
-        },
-        "Status": {
-            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
-            "id": "Status",
-            "properties": {
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                },
-                "details": {
-                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Features": {
-            "description": "All available features for sentiment, syntax, and semantic analysis.\nSetting each one to true will enable that specific analysis for the input.",
-            "id": "Features",
-            "properties": {
-                "classifyText": {
-                    "description": "Classify the full document into categories.",
-                    "type": "boolean"
-                },
-                "extractEntitySentiment": {
-                    "description": "Extract entities and their associated sentiment.",
-                    "type": "boolean"
-                },
-                "extractDocumentSentiment": {
-                    "description": "Extract document-level sentiment.",
-                    "type": "boolean"
-                },
-                "extractSyntax": {
-                    "description": "Extract syntax information.",
-                    "type": "boolean"
-                },
-                "extractEntities": {
-                    "description": "Extract entities.",
-                    "type": "boolean"
-                }
-            },
-            "type": "object"
-        },
-        "Document": {
-            "description": "################################################################ #\n\nRepresents the input to API methods.",
-            "id": "Document",
-            "properties": {
-                "language": {
-                    "description": "The language of the document (if not specified, the language is\nautomatically detected). Both ISO and BCP-47 language codes are\naccepted.<br>\n[Language Support](/natural-language/docs/languages)\nlists currently supported languages for each API method.\nIf the language (either specified by the caller or automatically detected)\nis not supported by the called API method, an `INVALID_ARGUMENT` error\nis returned.",
-                    "type": "string"
-                },
-                "content": {
-                    "description": "The content of the input in string format.",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "Required. If the type is not set or is `TYPE_UNSPECIFIED`,\nreturns an `INVALID_ARGUMENT` error.",
-                    "enum": [
-                        "TYPE_UNSPECIFIED",
-                        "PLAIN_TEXT",
-                        "HTML"
-                    ],
-                    "enumDescriptions": [
-                        "The content type is not specified.",
-                        "Plain text",
-                        "HTML"
-                    ],
-                    "type": "string"
-                },
-                "gcsContentUri": {
-                    "description": "The Google Cloud Storage URI where the file content is located.\nThis URI must be of the form: gs://bucket_name/object_name. For more\ndetails, see https://cloud.google.com/storage/docs/reference-uris.\nNOTE: Cloud Storage object versioning is not supported.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AnalyzeEntitiesRequest": {
-            "description": "The entity analysis request message.",
-            "id": "AnalyzeEntitiesRequest",
-            "properties": {
-                "encodingType": {
-                    "description": "The encoding type used by the API to calculate offsets.",
-                    "enum": [
-                        "NONE",
-                        "UTF8",
-                        "UTF16",
-                        "UTF32"
-                    ],
-                    "enumDescriptions": [
-                        "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.",
-                        "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively."
-                    ],
-                    "type": "string"
-                },
-                "document": {
-                    "$ref": "Document",
-                    "description": "Input document."
-                }
-            },
-            "type": "object"
-        },
-        "ClassifyTextRequest": {
-            "description": "The document classification request message.",
-            "id": "ClassifyTextRequest",
-            "properties": {
-                "document": {
-                    "$ref": "Document",
-                    "description": "Input document."
-                }
-            },
-            "type": "object"
-        },
-        "AnalyzeEntitySentimentResponse": {
-            "description": "The entity-level sentiment analysis response message.",
-            "id": "AnalyzeEntitySentimentResponse",
-            "properties": {
-                "language": {
-                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
-                    "type": "string"
-                },
-                "entities": {
-                    "description": "The recognized entities in the input document with associated sentiments.",
-                    "items": {
-                        "$ref": "Entity"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AnalyzeSentimentResponse": {
-            "description": "The sentiment analysis response message.",
-            "id": "AnalyzeSentimentResponse",
-            "properties": {
-                "documentSentiment": {
-                    "$ref": "Sentiment",
-                    "description": "The overall sentiment of the input document."
-                },
-                "language": {
-                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
-                    "type": "string"
-                },
-                "sentences": {
-                    "description": "The sentiment for all the sentences in the document.",
-                    "items": {
-                        "$ref": "Sentence"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AnalyzeSyntaxResponse": {
-            "description": "The syntax analysis response message.",
-            "id": "AnalyzeSyntaxResponse",
-            "properties": {
-                "language": {
-                    "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.",
-                    "type": "string"
-                },
-                "sentences": {
-                    "description": "Sentences in the input document.",
-                    "items": {
-                        "$ref": "Sentence"
-                    },
-                    "type": "array"
-                },
-                "tokens": {
-                    "description": "Tokens, along with their syntactic information, in the input document.",
-                    "items": {
-                        "$ref": "Token"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis_beta/logging__v2beta1.json b/discovery/googleapis_beta/logging__v2beta1.json
index 99a7fae..1f946bd 100644
--- a/discovery/googleapis_beta/logging__v2beta1.json
+++ b/discovery/googleapis_beta/logging__v2beta1.json
@@ -37,24 +37,18 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
         "fields": {
             "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "callback": {
+            "description": "JSONP",
             "location": "query",
             "type": "string"
         },
@@ -71,11 +65,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -113,19 +102,101 @@
             "location": "query",
             "type": "boolean"
         },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
         "bearer_token": {
             "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
             "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
         }
     },
     "protocol": "rest",
     "resources": {
+        "billingAccounts": {
+            "resources": {
+                "logs": {
+                    "methods": {
+                        "delete": {
+                            "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.",
+                            "httpMethod": "DELETE",
+                            "id": "logging.billingAccounts.logs.delete",
+                            "parameterOrder": [
+                                "logName"
+                            ],
+                            "parameters": {
+                                "logName": {
+                                    "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.",
+                                    "location": "path",
+                                    "pattern": "^billingAccounts/[^/]+/logs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2beta1/{+logName}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.",
+                            "httpMethod": "GET",
+                            "id": "logging.billingAccounts.logs.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^billingAccounts/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageToken": {
+                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                }
+                            },
+                            "path": "v2beta1/{+parent}/logs",
+                            "response": {
+                                "$ref": "ListLogsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        }
+                    }
+                }
+            }
+        },
         "monitoredResourceDescriptors": {
             "methods": {
                 "list": {
@@ -163,6 +234,44 @@
             "resources": {
                 "logs": {
                     "methods": {
+                        "list": {
+                            "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.",
+                            "httpMethod": "GET",
+                            "id": "logging.organizations.logs.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "pageToken": {
+                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "parent": {
+                                    "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2beta1/{+parent}/logs",
+                            "response": {
+                                "$ref": "ListLogsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloud-platform.read-only",
+                                "https://www.googleapis.com/auth/logging.admin",
+                                "https://www.googleapis.com/auth/logging.read"
+                            ]
+                        },
                         "delete": {
                             "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.",
                             "httpMethod": "DELETE",
@@ -187,44 +296,6 @@
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/logging.admin"
                             ]
-                        },
-                        "list": {
-                            "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.",
-                            "httpMethod": "GET",
-                            "id": "logging.organizations.logs.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "parent": {
-                                    "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^organizations/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v2beta1/{+parent}/logs",
-                            "response": {
-                                "$ref": "ListLogsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
                         }
                     }
                 }
@@ -338,6 +409,12 @@
                                 "parent"
                             ],
                             "parameters": {
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
                                 "parent": {
                                     "description": "Required. The name of the project containing the metrics:\n\"projects/[PROJECT_ID]\"\n",
                                     "location": "path",
@@ -349,12 +426,6 @@
                                     "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
                                     "location": "query",
                                     "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
                                 }
                             },
                             "path": "v2beta1/{+parent}/metrics",
@@ -430,31 +501,6 @@
                 },
                 "sinks": {
                     "methods": {
-                        "delete": {
-                            "description": "Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.",
-                            "httpMethod": "DELETE",
-                            "id": "logging.projects.sinks.delete",
-                            "parameterOrder": [
-                                "sinkName"
-                            ],
-                            "parameters": {
-                                "sinkName": {
-                                    "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/sinks/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2beta1/{+sinkName}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
                         "get": {
                             "description": "Gets a sink.",
                             "httpMethod": "GET",
@@ -490,6 +536,13 @@
                                 "parent"
                             ],
                             "parameters": {
+                                "parent": {
+                                    "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
                                 "pageToken": {
                                     "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
                                     "location": "query",
@@ -500,13 +553,6 @@
                                     "format": "int32",
                                     "location": "query",
                                     "type": "integer"
-                                },
-                                "parent": {
-                                    "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
                                 }
                             },
                             "path": "v2beta1/{+parent}/sinks",
@@ -591,6 +637,31 @@
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/logging.admin"
                             ]
+                        },
+                        "delete": {
+                            "description": "Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.",
+                            "httpMethod": "DELETE",
+                            "id": "logging.projects.sinks.delete",
+                            "parameterOrder": [
+                                "sinkName"
+                            ],
+                            "parameters": {
+                                "sinkName": {
+                                    "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/sinks/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2beta1/{+sinkName}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/logging.admin"
+                            ]
                         }
                     }
                 },
@@ -662,97 +733,11 @@
                     }
                 }
             }
-        },
-        "billingAccounts": {
-            "resources": {
-                "logs": {
-                    "methods": {
-                        "delete": {
-                            "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.",
-                            "httpMethod": "DELETE",
-                            "id": "logging.billingAccounts.logs.delete",
-                            "parameterOrder": [
-                                "logName"
-                            ],
-                            "parameters": {
-                                "logName": {
-                                    "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.",
-                                    "location": "path",
-                                    "pattern": "^billingAccounts/[^/]+/logs/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2beta1/{+logName}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/logging.admin"
-                            ]
-                        },
-                        "list": {
-                            "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.",
-                            "httpMethod": "GET",
-                            "id": "logging.billingAccounts.logs.list",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "parent": {
-                                    "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n",
-                                    "location": "path",
-                                    "pattern": "^billingAccounts/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "pageSize": {
-                                    "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.",
-                                    "format": "int32",
-                                    "location": "query",
-                                    "type": "integer"
-                                }
-                            },
-                            "path": "v2beta1/{+parent}/logs",
-                            "response": {
-                                "$ref": "ListLogsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloud-platform.read-only",
-                                "https://www.googleapis.com/auth/logging.admin",
-                                "https://www.googleapis.com/auth/logging.read"
-                            ]
-                        }
-                    }
-                }
-            }
         }
     },
-    "revision": "20170926",
+    "revision": "20171016",
     "rootUrl": "https://logging.googleapis.com/",
     "schemas": {
-        "SourceReference": {
-            "description": "A reference to a particular snapshot of the source tree used to build and deploy an application.",
-            "id": "SourceReference",
-            "properties": {
-                "repository": {
-                    "description": "Optional. A URI string identifying the repository. Example: \"https://github.com/GoogleCloudPlatform/kubernetes.git\"",
-                    "type": "string"
-                },
-                "revisionId": {
-                    "description": "The canonical and persistent identifier of the deployed revision. Example (git): \"0035781c50ec7aa23385dc841529ce8a4b70db1b\"",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "WriteLogEntriesResponse": {
             "description": "Result returned from WriteLogEntries. empty",
             "id": "WriteLogEntriesResponse",
@@ -847,10 +832,6 @@
             "description": "BucketOptions describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. BucketOptions does not include the number of values in each bucket.A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i > 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.",
             "id": "BucketOptions",
             "properties": {
-                "exponentialBuckets": {
-                    "$ref": "Exponential",
-                    "description": "The exponential buckets."
-                },
                 "explicitBuckets": {
                     "$ref": "Explicit",
                     "description": "The explicit buckets."
@@ -858,6 +839,10 @@
                 "linearBuckets": {
                     "$ref": "Linear",
                     "description": "The linear bucket."
+                },
+                "exponentialBuckets": {
+                    "$ref": "Exponential",
+                    "description": "The exponential buckets."
                 }
             },
             "type": "object"
@@ -884,14 +869,6 @@
             "description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.",
             "id": "MetricDescriptor",
             "properties": {
-                "name": {
-                    "description": "The resource name of the metric descriptor. Depending on the implementation, the name typically includes: (1) the parent resource name that defines the scope of the metric type or of its data; and (2) the metric's URL-encoded type, which also appears in the type field of this descriptor. For example, following is the resource name of a custom metric within the GCP project my-project-id:\n\"projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount\"\n",
-                    "type": "string"
-                },
-                "type": {
-                    "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined custom metric types have the DNS name custom.googleapis.com. Metric types should use a natural hierarchical grouping. For example:\n\"custom.googleapis.com/invoice/paid/amount\"\n\"appengine.googleapis.com/http/server/response_latencies\"\n",
-                    "type": "string"
-                },
                 "valueType": {
                     "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported.",
                     "enum": [
@@ -931,7 +908,7 @@
                     "type": "string"
                 },
                 "displayName": {
-                    "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\".",
+                    "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\". This field is optional but it is recommended to be set for any metrics associated with user-visible concepts, such as Quota.",
                     "type": "string"
                 },
                 "description": {
@@ -948,6 +925,14 @@
                         "$ref": "LabelDescriptor"
                     },
                     "type": "array"
+                },
+                "name": {
+                    "description": "The resource name of the metric descriptor.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined custom metric types have the DNS name custom.googleapis.com. Metric types should use a natural hierarchical grouping. For example:\n\"custom.googleapis.com/invoice/paid/amount\"\n\"appengine.googleapis.com/http/server/response_latencies\"\n",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -956,6 +941,38 @@
             "description": "An individual entry in a log.",
             "id": "LogEntry",
             "properties": {
+                "jsonPayload": {
+                    "additionalProperties": {
+                        "description": "Properties of the object.",
+                        "type": "any"
+                    },
+                    "description": "The log entry payload, represented as a structure that is expressed as a JSON object.",
+                    "type": "object"
+                },
+                "insertId": {
+                    "description": "Optional. A unique identifier for the log entry. If you provide a value, then Stackdriver Logging considers other log entries in the same project, with the same timestamp, and with the same insert_id to be duplicates which can be removed. If omitted in new log entries, then Stackdriver Logging assigns its own unique identifier. The insert_id is also used to order log entries that have the same timestamp value.",
+                    "type": "string"
+                },
+                "operation": {
+                    "$ref": "LogEntryOperation",
+                    "description": "Optional. Information about an operation associated with the log entry, if applicable."
+                },
+                "textPayload": {
+                    "description": "The log entry payload, represented as a Unicode string (UTF-8).",
+                    "type": "string"
+                },
+                "protoPayload": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The log entry payload, represented as a protocol buffer. Some Google Cloud Platform services use this field for their log entry payloads.",
+                    "type": "object"
+                },
+                "trace": {
+                    "description": "Optional. Resource name of the trace associated with the log entry, if any. If it contains a relative resource name, the name is assumed to be relative to //tracing.googleapis.com. Example: projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824",
+                    "type": "string"
+                },
                 "labels": {
                     "additionalProperties": {
                         "type": "string"
@@ -963,10 +980,6 @@
                     "description": "Optional. A set of user-defined (key, value) data that provides additional information about the log entry.",
                     "type": "object"
                 },
-                "trace": {
-                    "description": "Optional. Resource name of the trace associated with the log entry, if any. If it contains a relative resource name, the name is assumed to be relative to //tracing.googleapis.com. Example: projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824",
-                    "type": "string"
-                },
                 "severity": {
                     "description": "Optional. The severity of the log entry. The default value is LogSeverity.DEFAULT.",
                     "enum": [
@@ -997,13 +1010,13 @@
                     "$ref": "LogEntrySourceLocation",
                     "description": "Optional. Source code location information associated with the log entry, if any."
                 },
-                "timestamp": {
-                    "description": "Optional. The time the event described by the log entry occurred. This time is used to compute the log entry's age and to enforce the logs retention period. If this field is omitted in a new log entry, then Stackdriver Logging assigns it the current time.Incoming log entries should have timestamps that are no more than the logs retention period in the past, and no more than 24 hours in the future. See the entries.write API method for more information.",
+                "receiveTimestamp": {
+                    "description": "Output only. The time the log entry was received by Stackdriver Logging.",
                     "format": "google-datetime",
                     "type": "string"
                 },
-                "receiveTimestamp": {
-                    "description": "Output only. The time the log entry was received by Stackdriver Logging.",
+                "timestamp": {
+                    "description": "Optional. The time the event described by the log entry occurred. This time is used to compute the log entry's age and to enforce the logs retention period. If this field is omitted in a new log entry, then Stackdriver Logging assigns it the current time.Incoming log entries should have timestamps that are no more than the logs retention period in the past, and no more than 24 hours in the future. See the entries.write API method for more information.",
                     "format": "google-datetime",
                     "type": "string"
                 },
@@ -1018,34 +1031,6 @@
                 "httpRequest": {
                     "$ref": "HttpRequest",
                     "description": "Optional. Information about the HTTP request associated with this log entry, if applicable."
-                },
-                "jsonPayload": {
-                    "additionalProperties": {
-                        "description": "Properties of the object.",
-                        "type": "any"
-                    },
-                    "description": "The log entry payload, represented as a structure that is expressed as a JSON object.",
-                    "type": "object"
-                },
-                "operation": {
-                    "$ref": "LogEntryOperation",
-                    "description": "Optional. Information about an operation associated with the log entry, if applicable."
-                },
-                "insertId": {
-                    "description": "Optional. A unique identifier for the log entry. If you provide a value, then Stackdriver Logging considers other log entries in the same project, with the same timestamp, and with the same insert_id to be duplicates which can be removed. If omitted in new log entries, then Stackdriver Logging assigns its own unique identifier. The insert_id is also used to order log entries that have the same timestamp value.",
-                    "type": "string"
-                },
-                "textPayload": {
-                    "description": "The log entry payload, represented as a Unicode string (UTF-8).",
-                    "type": "string"
-                },
-                "protoPayload": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "The log entry payload, represented as a protocol buffer. Some Google Cloud Platform services use this field for their log entry payloads.",
-                    "type": "object"
                 }
             },
             "type": "object"
@@ -1054,6 +1039,59 @@
             "description": "Complete log information about a single HTTP request to an App Engine application.",
             "id": "RequestLog",
             "properties": {
+                "nickname": {
+                    "description": "The logged-in user who made the request.Most likely, this is the part of the user's email before the @ sign. The field value is the same for different requests from the same user, but different users can have similar names. This information is also available to the application via the App Engine Users API.This field will be populated starting with App Engine 1.9.21.",
+                    "type": "string"
+                },
+                "pendingTime": {
+                    "description": "Time this request spent in the pending request queue.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "resource": {
+                    "description": "Contains the path and query portion of the URL that was requested. For example, if the URL was \"http://example.com/app?name=val\", the resource would be \"/app?name=val\". The fragment identifier, which is identified by the # character, is not included.",
+                    "type": "string"
+                },
+                "status": {
+                    "description": "HTTP response status code. Example: 200, 404.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "taskName": {
+                    "description": "Task name of the request, in the case of an offline request.",
+                    "type": "string"
+                },
+                "urlMapEntry": {
+                    "description": "File or class that handled the request.",
+                    "type": "string"
+                },
+                "instanceIndex": {
+                    "description": "If the instance processing this request belongs to a manually scaled module, then this is the 0-based index of the instance. Otherwise, this value is -1.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "host": {
+                    "description": "Internet host and port number of the resource being requested.",
+                    "type": "string"
+                },
+                "finished": {
+                    "description": "Whether this request is finished or active.",
+                    "type": "boolean"
+                },
+                "httpVersion": {
+                    "description": "HTTP version of request. Example: \"HTTP/1.1\".",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Time when the request started.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "latency": {
+                    "description": "Latency of the request.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
                 "ip": {
                     "description": "Origin IP address.",
                     "type": "string"
@@ -1132,70 +1170,17 @@
                     },
                     "type": "array"
                 },
-                "taskQueueName": {
-                    "description": "Queue name of the request, in the case of an offline request.",
-                    "type": "string"
-                },
                 "referrer": {
                     "description": "Referrer URL of request.",
                     "type": "string"
                 },
+                "taskQueueName": {
+                    "description": "Queue name of the request, in the case of an offline request.",
+                    "type": "string"
+                },
                 "requestId": {
                     "description": "Globally unique identifier for a request, which is based on the request start time. Request IDs for requests which started later will compare greater as strings than those for requests which started earlier.",
                     "type": "string"
-                },
-                "nickname": {
-                    "description": "The logged-in user who made the request.Most likely, this is the part of the user's email before the @ sign. The field value is the same for different requests from the same user, but different users can have similar names. This information is also available to the application via the App Engine Users API.This field will be populated starting with App Engine 1.9.21.",
-                    "type": "string"
-                },
-                "pendingTime": {
-                    "description": "Time this request spent in the pending request queue.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "resource": {
-                    "description": "Contains the path and query portion of the URL that was requested. For example, if the URL was \"http://example.com/app?name=val\", the resource would be \"/app?name=val\". The fragment identifier, which is identified by the # character, is not included.",
-                    "type": "string"
-                },
-                "status": {
-                    "description": "HTTP response status code. Example: 200, 404.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "taskName": {
-                    "description": "Task name of the request, in the case of an offline request.",
-                    "type": "string"
-                },
-                "urlMapEntry": {
-                    "description": "File or class that handled the request.",
-                    "type": "string"
-                },
-                "instanceIndex": {
-                    "description": "If the instance processing this request belongs to a manually scaled module, then this is the 0-based index of the instance. Otherwise, this value is -1.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "finished": {
-                    "description": "Whether this request is finished or active.",
-                    "type": "boolean"
-                },
-                "host": {
-                    "description": "Internet host and port number of the resource being requested.",
-                    "type": "string"
-                },
-                "httpVersion": {
-                    "description": "HTTP version of request. Example: \"HTTP/1.1\".",
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "Time when the request started.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "latency": {
-                    "description": "Latency of the request.",
-                    "format": "google-duration",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1245,6 +1230,18 @@
             "description": "Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.Logs-based metric can also be used to extract values from logs and create a a distribution of the values. The distribution records the statistics of the extracted values along with an optional histogram of the values as specified by the bucket options.",
             "id": "LogMetric",
             "properties": {
+                "description": {
+                    "description": "Optional. A description of this metric, which is used in documentation.",
+                    "type": "string"
+                },
+                "bucketOptions": {
+                    "$ref": "BucketOptions",
+                    "description": "Optional. The bucket_options are required when the logs-based metric is using a DISTRIBUTION value type and it describes the bucket boundaries used to create a histogram of the extracted values."
+                },
+                "valueExtractor": {
+                    "description": "Optional. A value_extractor is required when using a distribution logs-based metric to extract the values to record from a log entry. Two functions are supported for value extraction: EXTRACT(field) or REGEXP_EXTRACT(field, regex). The argument are:  1. field: The name of the log entry field from which the value is to be  extracted.  2. regex: A regular expression using the Google RE2 syntax  (https://github.com/google/re2/wiki/Syntax) with a single capture  group to extract data from the specified log entry field. The value  of the field is converted to a string before applying the regex.  It is an error to specify a regex that does not include exactly one  capture group.The result of the extraction must be convertible to a double type, as the distribution always records double values. If either the extraction or the conversion to double fails, then those values are not recorded in the distribution.Example: REGEXP_EXTRACT(jsonPayload.request, \".*quantity=(\\d+).*\")",
+                    "type": "string"
+                },
                 "name": {
                     "description": "Required. The client-assigned metric identifier. Examples: \"error_count\", \"nginx/requests\".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: \"projects/my-project/metrics/nginx%2Frequests\".",
                     "type": "string"
@@ -1275,18 +1272,6 @@
                 "filter": {
                     "description": "Required. An advanced logs filter which is used to match log entries. Example:\n\"resource.type=gae_app AND severity>=ERROR\"\nThe maximum length of the filter is 20000 characters.",
                     "type": "string"
-                },
-                "description": {
-                    "description": "Optional. A description of this metric, which is used in documentation.",
-                    "type": "string"
-                },
-                "bucketOptions": {
-                    "$ref": "BucketOptions",
-                    "description": "Optional. The bucket_options are required when the logs-based metric is using a DISTRIBUTION value type and it describes the bucket boundaries used to create a histogram of the extracted values."
-                },
-                "valueExtractor": {
-                    "description": "Optional. A value_extractor is required when using a distribution logs-based metric to extract the values to record from a log entry. Two functions are supported for value extraction: EXTRACT(field) or REGEXP_EXTRACT(field, regex). The argument are:  1. field: The name of the log entry field from which the value is to be  extracted.  2. regex: A regular expression using the Google RE2 syntax  (https://github.com/google/re2/wiki/Syntax) with a single capture  group to extract data from the specified log entry field. The value  of the field is converted to a string before applying the regex.  It is an error to specify a regex that does not include exactly one  capture group.The result of the extraction must be convertible to a double type, as the distribution always records double values. If either the extraction or the conversion to double fails, then those values are not recorded in the distribution.Example: REGEXP_EXTRACT(jsonPayload.request, \".*quantity=(\\d+).*\")",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1313,22 +1298,18 @@
             "description": "Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project, organization, billing account, or folder.",
             "id": "LogSink",
             "properties": {
-                "name": {
-                    "description": "Required. The client-assigned sink identifier, unique within the project. Example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.",
-                    "type": "string"
-                },
                 "includeChildren": {
                     "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then logs from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression. For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent. To only export entries from certain child projects, filter on the project part of the log name:\nlogName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND\nresource.type=gce_instance\n",
                     "type": "boolean"
                 },
-                "destination": {
-                    "description": "Required. The export destination:\n\"storage.googleapis.com/[GCS_BUCKET]\"\n\"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\"\n\"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\"\nThe sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.",
-                    "type": "string"
-                },
                 "filter": {
                     "description": "Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. For example:\nlogName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity>=ERROR\n",
                     "type": "string"
                 },
+                "destination": {
+                    "description": "Required. The export destination:\n\"storage.googleapis.com/[GCS_BUCKET]\"\n\"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\"\n\"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\"\nThe sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.",
+                    "type": "string"
+                },
                 "endTime": {
                     "description": "Deprecated. This field is ignored when creating or updating sinks.",
                     "format": "google-datetime",
@@ -1356,6 +1337,10 @@
                         "LogEntry version 1 format."
                     ],
                     "type": "string"
+                },
+                "name": {
+                    "description": "Required. The client-assigned sink identifier, unique within the project. Example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1364,34 +1349,16 @@
             "description": "Result returned from ListLogs.",
             "id": "ListLogsResponse",
             "properties": {
+                "nextPageToken": {
+                    "description": "If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.",
+                    "type": "string"
+                },
                 "logNames": {
                     "description": "A list of log names. For example, \"projects/my-project/syslog\" or \"organizations/123/cloudresourcemanager.googleapis.com%2Factivity\".",
                     "items": {
                         "type": "string"
                     },
                     "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListSinksResponse": {
-            "description": "Result returned from ListSinks.",
-            "id": "ListSinksResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken.",
-                    "type": "string"
-                },
-                "sinks": {
-                    "description": "A list of sinks.",
-                    "items": {
-                        "$ref": "LogSink"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -1468,10 +1435,35 @@
             },
             "type": "object"
         },
+        "ListSinksResponse": {
+            "description": "Result returned from ListSinks.",
+            "id": "ListSinksResponse",
+            "properties": {
+                "sinks": {
+                    "description": "A list of sinks.",
+                    "items": {
+                        "$ref": "LogSink"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "MonitoredResourceDescriptor": {
             "description": "An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of \"gce_instance\" and specifies the use of the labels \"instance_id\" and \"zone\" to identify particular VM instances.Different APIs can support different monitored resource types. APIs generally provide a list method that returns the monitored resource descriptors used by the API.",
             "id": "MonitoredResourceDescriptor",
             "properties": {
+                "labels": {
+                    "description": "Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels \"database_id\" and \"zone\".",
+                    "items": {
+                        "$ref": "LabelDescriptor"
+                    },
+                    "type": "array"
+                },
                 "name": {
                     "description": "Optional. The resource name of the monitored resource descriptor: \"projects/{project_id}/monitoredResourceDescriptors/{type}\" where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format \"monitoredResourceDescriptors/{type}\".",
                     "type": "string"
@@ -1487,13 +1479,6 @@
                 "type": {
                     "description": "Required. The monitored resource type. For example, the type \"cloudsql_database\" represents databases in Google Cloud SQL. The maximum length of this value is 256 characters.",
                     "type": "string"
-                },
-                "labels": {
-                    "description": "Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels \"database_id\" and \"zone\".",
-                    "items": {
-                        "$ref": "LabelDescriptor"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -1634,6 +1619,17 @@
             "description": "The parameters to ListLogEntries.",
             "id": "ListLogEntriesRequest",
             "properties": {
+                "orderBy": {
+                    "description": "Optional. How the results should be sorted. Presently, the only permitted values are \"timestamp asc\" (default) and \"timestamp desc\". The first option returns entries in order of increasing values of LogEntry.timestamp (oldest first), and the second option returns entries in order of decreasing timestamps (newest first). Entries with equal timestamps are returned in order of their insert_id values.",
+                    "type": "string"
+                },
+                "resourceNames": {
+                    "description": "Required. Names of one or more parent resources from which to retrieve log entries:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nProjects listed in the project_ids field are added to this list.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
                 "projectIds": {
                     "description": "Deprecated. Use resource_names instead. One or more project identifiers or project numbers from which to retrieve log entries. Example: \"my-project-1A\". If present, these project identifiers are converted to resource name format and added to the list of resources in resource_names.",
                     "items": {
@@ -1653,17 +1649,6 @@
                     "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of next_page_token in the response indicates that more results might be available.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "orderBy": {
-                    "description": "Optional. How the results should be sorted. Presently, the only permitted values are \"timestamp asc\" (default) and \"timestamp desc\". The first option returns entries in order of increasing values of LogEntry.timestamp (oldest first), and the second option returns entries in order of decreasing timestamps (newest first). Entries with equal timestamps are returned in order of their insert_id values.",
-                    "type": "string"
-                },
-                "resourceNames": {
-                    "description": "Required. Names of one or more parent resources from which to retrieve log entries:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nProjects listed in the project_ids field are added to this list.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
                 }
             },
             "type": "object"
@@ -1682,6 +1667,21 @@
                 }
             },
             "type": "object"
+        },
+        "SourceReference": {
+            "description": "A reference to a particular snapshot of the source tree used to build and deploy an application.",
+            "id": "SourceReference",
+            "properties": {
+                "repository": {
+                    "description": "Optional. A URI string identifying the repository. Example: \"https://github.com/GoogleCloudPlatform/kubernetes.git\"",
+                    "type": "string"
+                },
+                "revisionId": {
+                    "description": "The canonical and persistent identifier of the deployed revision. Example (git): \"0035781c50ec7aa23385dc841529ce8a4b70db1b\"",
+                    "type": "string"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis_beta/oslogin__v1alpha.json b/discovery/googleapis_beta/oslogin__v1alpha.json
index 090d6c8..1fc1e0d 100644
--- a/discovery/googleapis_beta/oslogin__v1alpha.json
+++ b/discovery/googleapis_beta/oslogin__v1alpha.json
@@ -34,6 +34,22 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -55,6 +71,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -68,11 +89,6 @@
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -103,22 +119,6 @@
             "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.",
             "location": "query",
             "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
         }
     },
     "protocol": "rest",
@@ -184,6 +184,31 @@
             "resources": {
                 "sshPublicKeys": {
                     "methods": {
+                        "delete": {
+                            "description": "Deletes an SSH public key.",
+                            "httpMethod": "DELETE",
+                            "id": "oslogin.users.sshPublicKeys.delete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The fingerprint of the public key to update. Public keys are identified by\ntheir SHA-256 fingerprint. The fingerprint of the public key is in format\n`users/{user}/sshPublicKeys/{fingerprint}`.",
+                                    "location": "path",
+                                    "pattern": "^users/[^/]+/sshPublicKeys/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1alpha/{+name}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/compute"
+                            ]
+                        },
                         "patch": {
                             "description": "Updates an SSH public key and returns the profile information. This method\nsupports patch semantics.",
                             "httpMethod": "PATCH",
@@ -242,77 +267,15 @@
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/compute"
                             ]
-                        },
-                        "delete": {
-                            "description": "Deletes an SSH public key.",
-                            "httpMethod": "DELETE",
-                            "id": "oslogin.users.sshPublicKeys.delete",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "The fingerprint of the public key to update. Public keys are identified by\ntheir SHA-256 fingerprint. The fingerprint of the public key is in format\n`users/{user}/sshPublicKeys/{fingerprint}`.",
-                                    "location": "path",
-                                    "pattern": "^users/[^/]+/sshPublicKeys/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1alpha/{+name}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/compute"
-                            ]
                         }
                     }
                 }
             }
         }
     },
-    "revision": "20170929",
+    "revision": "20171014",
     "rootUrl": "https://oslogin.googleapis.com/",
     "schemas": {
-        "SshPublicKey": {
-            "description": "The SSH public key information associated with a Directory API User.",
-            "id": "SshPublicKey",
-            "properties": {
-                "expirationTimeUsec": {
-                    "description": "An expiration time in microseconds since epoch.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "fingerprint": {
-                    "description": "The SHA-256 fingerprint of the SSH public key.\nOutput only.",
-                    "type": "string"
-                },
-                "key": {
-                    "description": "Public key text in SSH format, defined by\n<a href=\"https://www.ietf.org/rfc/rfc4253.txt\" target=\"_blank\">RFC4253</a>\nsection 6.6.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Empty": {
-            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
-        "ImportSshPublicKeyResponse": {
-            "description": "A response message for importing an SSH public key.",
-            "id": "ImportSshPublicKeyResponse",
-            "properties": {
-                "loginProfile": {
-                    "$ref": "LoginProfile",
-                    "description": "The login profile information for the user."
-                }
-            },
-            "type": "object"
-        },
         "PosixAccount": {
             "description": "The POSIX account information associated with a Directory API User.",
             "id": "PosixAccount",
@@ -358,17 +321,6 @@
             "description": "The Directory API profile information used for logging in to a virtual\nmachine on Google Compute Engine.",
             "id": "LoginProfile",
             "properties": {
-                "suspended": {
-                    "description": "Indicates if the user is suspended.",
-                    "type": "boolean"
-                },
-                "sshPublicKeys": {
-                    "additionalProperties": {
-                        "$ref": "SshPublicKey"
-                    },
-                    "description": "A map from SSH public key fingerprint to the associated key object.",
-                    "type": "object"
-                },
                 "posixAccounts": {
                     "description": "The list of POSIX accounts associated with the Directory API user.",
                     "items": {
@@ -379,6 +331,54 @@
                 "name": {
                     "description": "A unique user ID for identifying the user.",
                     "type": "string"
+                },
+                "suspended": {
+                    "description": "Indicates if the user is suspended.",
+                    "type": "boolean"
+                },
+                "sshPublicKeys": {
+                    "additionalProperties": {
+                        "$ref": "SshPublicKey"
+                    },
+                    "description": "A map from SSH public key fingerprint to the associated key object.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "SshPublicKey": {
+            "description": "The SSH public key information associated with a Directory API User.",
+            "id": "SshPublicKey",
+            "properties": {
+                "expirationTimeUsec": {
+                    "description": "An expiration time in microseconds since epoch.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "fingerprint": {
+                    "description": "The SHA-256 fingerprint of the SSH public key.\nOutput only.",
+                    "type": "string"
+                },
+                "key": {
+                    "description": "Public key text in SSH format, defined by\n<a href=\"https://www.ietf.org/rfc/rfc4253.txt\" target=\"_blank\">RFC4253</a>\nsection 6.6.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "ImportSshPublicKeyResponse": {
+            "description": "A response message for importing an SSH public key.",
+            "id": "ImportSshPublicKeyResponse",
+            "properties": {
+                "loginProfile": {
+                    "$ref": "LoginProfile",
+                    "description": "The login profile information for the user."
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis_beta/oslogin__v1beta.json b/discovery/googleapis_beta/oslogin__v1beta.json
new file mode 100644
index 0000000..1b568e2
--- /dev/null
+++ b/discovery/googleapis_beta/oslogin__v1beta.json
@@ -0,0 +1,390 @@
+{
+    "auth": {
+        "oauth2": {
+            "scopes": {
+                "https://www.googleapis.com/auth/compute.readonly": {
+                    "description": "View your Google Compute Engine resources"
+                },
+                "https://www.googleapis.com/auth/compute": {
+                    "description": "View and manage your Google Compute Engine resources"
+                },
+                "https://www.googleapis.com/auth/cloud-platform.read-only": {
+                    "description": "View your data across Google Cloud Platform services"
+                },
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "View and manage your data across Google Cloud Platform services"
+                }
+            }
+        }
+    },
+    "basePath": "",
+    "baseUrl": "https://oslogin.googleapis.com/",
+    "batchPath": "batch",
+    "canonicalName": "Cloud OS Login",
+    "description": "Manages OS login configuration for Directory API users.",
+    "discoveryVersion": "v1",
+    "documentationLink": "https://cloud.google.com/compute/docs/oslogin/rest/",
+    "icons": {
+        "x16": "http://www.google.com/images/icons/product/search-16.gif",
+        "x32": "http://www.google.com/images/icons/product/search-32.gif"
+    },
+    "id": "oslogin:v1beta",
+    "kind": "discovery#restDescription",
+    "name": "oslogin",
+    "ownerDomain": "google.com",
+    "ownerName": "Google",
+    "parameters": {
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
+        "$.xgafv": {
+            "description": "V1 error format.",
+            "enum": [
+                "1",
+                "2"
+            ],
+            "enumDescriptions": [
+                "v1 error format",
+                "v2 error format"
+            ],
+            "location": "query",
+            "type": "string"
+        },
+        "alt": {
+            "default": "json",
+            "description": "Data format for response.",
+            "enum": [
+                "json",
+                "media",
+                "proto"
+            ],
+            "enumDescriptions": [
+                "Responses with Content-Type of application/json",
+                "Media download with context-dependent Content-Type",
+                "Responses with Content-Type of application/x-protobuf"
+            ],
+            "location": "query",
+            "type": "string"
+        }
+    },
+    "protocol": "rest",
+    "resources": {
+        "users": {
+            "methods": {
+                "importSshPublicKey": {
+                    "description": "Adds an SSH public key and returns the profile information. Default POSIX\naccount information is set when no username and UID exist as part of the\nlogin profile.",
+                    "httpMethod": "POST",
+                    "id": "oslogin.users.importSshPublicKey",
+                    "parameterOrder": [
+                        "parent"
+                    ],
+                    "parameters": {
+                        "parent": {
+                            "description": "The unique ID for the user in format `users/{user}`.",
+                            "location": "path",
+                            "pattern": "^users/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta/{+parent}:importSshPublicKey",
+                    "request": {
+                        "$ref": "SshPublicKey"
+                    },
+                    "response": {
+                        "$ref": "ImportSshPublicKeyResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute"
+                    ]
+                },
+                "getLoginProfile": {
+                    "description": "Retrieves the profile information used for logging in to a virtual machine\non Google Compute Engine.",
+                    "httpMethod": "GET",
+                    "id": "oslogin.users.getLoginProfile",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The unique ID for the user in format `users/{user}`.",
+                            "location": "path",
+                            "pattern": "^users/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta/{+name}/loginProfile",
+                    "response": {
+                        "$ref": "LoginProfile"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only",
+                        "https://www.googleapis.com/auth/compute",
+                        "https://www.googleapis.com/auth/compute.readonly"
+                    ]
+                }
+            },
+            "resources": {
+                "sshPublicKeys": {
+                    "methods": {
+                        "delete": {
+                            "description": "Deletes an SSH public key.",
+                            "httpMethod": "DELETE",
+                            "id": "oslogin.users.sshPublicKeys.delete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The fingerprint of the public key to update. Public keys are identified by\ntheir SHA-256 fingerprint. The fingerprint of the public key is in format\n`users/{user}/sshPublicKeys/{fingerprint}`.",
+                                    "location": "path",
+                                    "pattern": "^users/[^/]+/sshPublicKeys/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta/{+name}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/compute"
+                            ]
+                        },
+                        "patch": {
+                            "description": "Updates an SSH public key and returns the profile information. This method\nsupports patch semantics.",
+                            "httpMethod": "PATCH",
+                            "id": "oslogin.users.sshPublicKeys.patch",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The fingerprint of the public key to update. Public keys are identified by\ntheir SHA-256 fingerprint. The fingerprint of the public key is in format\n`users/{user}/sshPublicKeys/{fingerprint}`.",
+                                    "location": "path",
+                                    "pattern": "^users/[^/]+/sshPublicKeys/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "updateMask": {
+                                    "description": "Mask to control which fields get updated. Updates all if not present.",
+                                    "format": "google-fieldmask",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta/{+name}",
+                            "request": {
+                                "$ref": "SshPublicKey"
+                            },
+                            "response": {
+                                "$ref": "SshPublicKey"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/compute"
+                            ]
+                        },
+                        "get": {
+                            "description": "Retrieves an SSH public key.",
+                            "httpMethod": "GET",
+                            "id": "oslogin.users.sshPublicKeys.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The fingerprint of the public key to retrieve. Public keys are identified\nby their SHA-256 fingerprint. The fingerprint of the public key is in\nformat `users/{user}/sshPublicKeys/{fingerprint}`.",
+                                    "location": "path",
+                                    "pattern": "^users/[^/]+/sshPublicKeys/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta/{+name}",
+                            "response": {
+                                "$ref": "SshPublicKey"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/compute"
+                            ]
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "revision": "20171014",
+    "rootUrl": "https://oslogin.googleapis.com/",
+    "schemas": {
+        "PosixAccount": {
+            "description": "The POSIX account information associated with a Directory API User.",
+            "id": "PosixAccount",
+            "properties": {
+                "primary": {
+                    "description": "Only one POSIX account can be marked as primary.",
+                    "type": "boolean"
+                },
+                "gid": {
+                    "description": "The default group ID.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "uid": {
+                    "description": "The user ID.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "username": {
+                    "description": "The username of the POSIX account.",
+                    "type": "string"
+                },
+                "shell": {
+                    "description": "The path to the logic shell for this account.",
+                    "type": "string"
+                },
+                "homeDirectory": {
+                    "description": "The path to the home directory for this account.",
+                    "type": "string"
+                },
+                "systemId": {
+                    "description": "System identifier for which account the username or uid applies to.\nBy default, the empty value is used.",
+                    "type": "string"
+                },
+                "gecos": {
+                    "description": "The GECOS (user information) entry for this account.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LoginProfile": {
+            "description": "The user profile information used for logging in to a virtual machine on\nGoogle Compute Engine.",
+            "id": "LoginProfile",
+            "properties": {
+                "sshPublicKeys": {
+                    "additionalProperties": {
+                        "$ref": "SshPublicKey"
+                    },
+                    "description": "A map from SSH public key fingerprint to the associated key object.",
+                    "type": "object"
+                },
+                "posixAccounts": {
+                    "description": "The list of POSIX accounts associated with the user.",
+                    "items": {
+                        "$ref": "PosixAccount"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The primary email address that uniquely identifies the user.",
+                    "type": "string"
+                },
+                "suspended": {
+                    "description": "Indicates if the user is suspended. A suspended user cannot log in but\ntheir profile information is retained.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "SshPublicKey": {
+            "description": "The SSH public key information associated with a Directory API User.",
+            "id": "SshPublicKey",
+            "properties": {
+                "expirationTimeUsec": {
+                    "description": "An expiration time in microseconds since epoch.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "fingerprint": {
+                    "description": "The SHA-256 fingerprint of the SSH public key.\nOutput only.",
+                    "type": "string"
+                },
+                "key": {
+                    "description": "Public key text in SSH format, defined by\n<a href=\"https://www.ietf.org/rfc/rfc4253.txt\" target=\"_blank\">RFC4253</a>\nsection 6.6.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "ImportSshPublicKeyResponse": {
+            "description": "A response message for importing an SSH public key.",
+            "id": "ImportSshPublicKeyResponse",
+            "properties": {
+                "loginProfile": {
+                    "$ref": "LoginProfile",
+                    "description": "The login profile information for the user."
+                }
+            },
+            "type": "object"
+        }
+    },
+    "servicePath": "",
+    "title": "Google Cloud OS Login API",
+    "version": "v1beta"
+}
\ No newline at end of file
diff --git a/discovery/googleapis_beta/proximitybeacon__v1beta1.json b/discovery/googleapis_beta/proximitybeacon__v1beta1.json
index 6ce1d09..402ea35 100644
--- a/discovery/googleapis_beta/proximitybeacon__v1beta1.json
+++ b/discovery/googleapis_beta/proximitybeacon__v1beta1.json
@@ -24,50 +24,6 @@
     "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"
-        },
-        "callback": {
-            "description": "JSONP",
-            "location": "query",
-            "type": "string"
-        },
-        "alt": {
-            "default": "json",
-            "description": "Data format for response.",
-            "enum": [
-                "json",
-                "media",
-                "proto"
-            ],
-            "enumDescriptions": [
-                "Responses with Content-Type of application/json",
-                "Media download with context-dependent Content-Type",
-                "Responses with Content-Type of application/x-protobuf"
-            ],
-            "location": "query",
-            "type": "string"
-        },
-        "access_token": {
-            "description": "OAuth access token.",
-            "location": "query",
-            "type": "string"
-        },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
-            "location": "query",
-            "type": "string"
-        },
         "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.",
             "location": "query",
@@ -79,13 +35,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
+        "bearer_token": {
+            "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         },
@@ -109,84 +65,54 @@
             "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
+        },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
+        "$.xgafv": {
+            "description": "V1 error format.",
+            "enum": [
+                "1",
+                "2"
+            ],
+            "enumDescriptions": [
+                "v1 error format",
+                "v2 error format"
+            ],
+            "location": "query",
+            "type": "string"
+        },
+        "alt": {
+            "default": "json",
+            "description": "Data format for response.",
+            "enum": [
+                "json",
+                "media",
+                "proto"
+            ],
+            "enumDescriptions": [
+                "Responses with Content-Type of application/json",
+                "Media download with context-dependent Content-Type",
+                "Responses with Content-Type of application/x-protobuf"
+            ],
+            "location": "query",
+            "type": "string"
+        },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
+        "access_token": {
+            "description": "OAuth access token.",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
-        "beaconinfo": {
-            "methods": {
-                "getforobserved": {
-                    "description": "Given one or more beacon observations, returns any beacon information\nand attachments accessible to your application. Authorize by using the\n[API key](https://developers.google.com/beacons/proximity/get-started#request_a_browser_api_key)\nfor the application.",
-                    "httpMethod": "POST",
-                    "id": "proximitybeacon.beaconinfo.getforobserved",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1beta1/beaconinfo:getforobserved",
-                    "request": {
-                        "$ref": "GetInfoForObservedBeaconsRequest"
-                    },
-                    "response": {
-                        "$ref": "GetInfoForObservedBeaconsResponse"
-                    }
-                }
-            }
-        },
-        "namespaces": {
-            "methods": {
-                "list": {
-                    "description": "Lists all attachment namespaces owned by your Google Developers Console\nproject. Attachment data associated with a beacon must include a\nnamespaced type, and the namespace must be owned by your project.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **viewer**, **Is owner** or **Can edit**\npermissions in the Google Developers Console project.",
-                    "httpMethod": "GET",
-                    "id": "proximitybeacon.namespaces.list",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "projectId": {
-                            "description": "The project id to list namespaces under.\nOptional.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/namespaces",
-                    "response": {
-                        "$ref": "ListNamespacesResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/userlocation.beacon.registry"
-                    ]
-                },
-                "update": {
-                    "description": "Updates the information about the specified namespace. Only the namespace\nvisibility can be updated.",
-                    "httpMethod": "PUT",
-                    "id": "proximitybeacon.namespaces.update",
-                    "parameterOrder": [
-                        "namespaceName"
-                    ],
-                    "parameters": {
-                        "namespaceName": {
-                            "description": "Resource name of this namespace. Namespaces names have the format:\n<code>namespaces/<var>namespace</var></code>.",
-                            "location": "path",
-                            "pattern": "^namespaces/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "projectId": {
-                            "description": "The project id of the namespace to update. If the project id is not\nspecified then the project making the request is used. The project id\nmust match the project that owns the beacon.\nOptional.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/{+namespaceName}",
-                    "request": {
-                        "$ref": "Namespace"
-                    },
-                    "response": {
-                        "$ref": "Namespace"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/userlocation.beacon.registry"
-                    ]
-                }
-            }
-        },
         "v1beta1": {
             "methods": {
                 "getEidparams": {
@@ -207,152 +133,6 @@
         },
         "beacons": {
             "methods": {
-                "decommission": {
-                    "description": "Decommissions the specified beacon in the service. This beacon will no\nlonger be returned from `beaconinfo.getforobserved`. This operation is\npermanent -- you will not be able to re-register a beacon with this ID\nagain.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.",
-                    "httpMethod": "POST",
-                    "id": "proximitybeacon.beacons.decommission",
-                    "parameterOrder": [
-                        "beaconName"
-                    ],
-                    "parameters": {
-                        "beaconName": {
-                            "description": "Beacon that should be decommissioned. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID of the beacon's \"stable\" UID.\nRequired.",
-                            "location": "path",
-                            "pattern": "^beacons/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "projectId": {
-                            "description": "The project id of the beacon to decommission. If the project id is not\nspecified then the project making the request is used. The project id\nmust match the project that owns the beacon.\nOptional.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/{+beaconName}:decommission",
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/userlocation.beacon.registry"
-                    ]
-                },
-                "deactivate": {
-                    "description": "Deactivates a beacon. Once deactivated, the API will not return\ninformation nor attachment data for the beacon when queried via\n`beaconinfo.getforobserved`. Calling this method on an already inactive\nbeacon will do nothing (but will return a successful response code).\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.",
-                    "httpMethod": "POST",
-                    "id": "proximitybeacon.beacons.deactivate",
-                    "parameterOrder": [
-                        "beaconName"
-                    ],
-                    "parameters": {
-                        "beaconName": {
-                            "description": "Beacon that should be deactivated. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID or the beacon's \"stable\" UID.\nRequired.",
-                            "location": "path",
-                            "pattern": "^beacons/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        },
-                        "projectId": {
-                            "description": "The project id of the beacon to deactivate. If the project id is not\nspecified then the project making the request is used. The project id must\nmatch the project that owns the beacon.\nOptional.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/{+beaconName}:deactivate",
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/userlocation.beacon.registry"
-                    ]
-                },
-                "delete": {
-                    "description": "Deletes the specified beacon including all diagnostics data for the beacon\nas well as any attachments on the beacon (including those belonging to\nother projects). This operation cannot be undone.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.",
-                    "httpMethod": "DELETE",
-                    "id": "proximitybeacon.beacons.delete",
-                    "parameterOrder": [
-                        "beaconName"
-                    ],
-                    "parameters": {
-                        "projectId": {
-                            "description": "The project id of the beacon to delete. If not provided, the project\nthat is making the request is used.\nOptional.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "beaconName": {
-                            "description": "Beacon that should be deleted. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID or the beacon's \"stable\" UID.\nRequired.",
-                            "location": "path",
-                            "pattern": "^beacons/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/{+beaconName}",
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/userlocation.beacon.registry"
-                    ]
-                },
-                "list": {
-                    "description": "Searches the beacon registry for beacons that match the given search\ncriteria. Only those beacons that the client has permission to list\nwill be returned.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **viewer**, **Is owner** or **Can edit**\npermissions in the Google Developers Console project.",
-                    "httpMethod": "GET",
-                    "id": "proximitybeacon.beacons.list",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "pageToken": {
-                            "description": "A pagination token obtained from a previous request to list beacons.",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "pageSize": {
-                            "description": "The maximum number of records to return for this request, up to a\nserver-defined upper limit.",
-                            "format": "int32",
-                            "location": "query",
-                            "type": "integer"
-                        },
-                        "q": {
-                            "description": "Filter query string that supports the following field filters:\n\n* **description:`\"<string>\"`**\n  For example: **description:\"Room 3\"**\n  Returns beacons whose description matches tokens in the string \"Room 3\"\n  (not necessarily that exact string).\n  The string must be double-quoted.\n* **status:`<enum>`**\n  For example: **status:active**\n  Returns beacons whose status matches the given value. Values must be\n  one of the Beacon.Status enum values (case insensitive). Accepts\n  multiple filters which will be combined with OR logic.\n* **stability:`<enum>`**\n  For example: **stability:mobile**\n  Returns beacons whose expected stability matches the given value.\n  Values must be one of the Beacon.Stability enum values (case\n  insensitive). Accepts multiple filters which will be combined with\n  OR logic.\n* **place\\_id:`\"<string>\"`**\n  For example: **place\\_id:\"ChIJVSZzVR8FdkgRXGmmm6SslKw=\"**\n  Returns beacons explicitly registered at the given place, expressed as\n  a Place ID obtained from [Google Places API](/places/place-id). Does not\n  match places inside the given place. Does not consider the beacon's\n  actual location (which may be different from its registered place).\n  Accepts multiple filters that will be combined with OR logic. The place\n  ID must be double-quoted.\n* **registration\\_time`[<|>|<=|>=]<integer>`**\n  For example: **registration\\_time>=1433116800**\n  Returns beacons whose registration time matches the given filter.\n  Supports the operators: <, >, <=, and >=. Timestamp must be expressed as\n  an integer number of seconds since midnight January 1, 1970 UTC. Accepts\n  at most two filters that will be combined with AND logic, to support\n  \"between\" semantics. If more than two are supplied, the latter ones are\n  ignored.\n* **lat:`<double> lng:<double> radius:<integer>`**\n  For example: **lat:51.1232343 lng:-1.093852 radius:1000**\n  Returns beacons whose registered location is within the given circle.\n  When any of these fields are given, all are required. Latitude and\n  longitude must be decimal degrees between -90.0 and 90.0 and between\n  -180.0 and 180.0 respectively. Radius must be an integer number of\n  meters between 10 and 1,000,000 (1000 km).\n* **property:`\"<string>=<string>\"`**\n  For example: **property:\"battery-type=CR2032\"**\n  Returns beacons which have a property of the given name and value.\n  Supports multiple filters which will be combined with OR logic.\n  The entire name=value string must be double-quoted as one string.\n* **attachment\\_type:`\"<string>\"`**\n  For example: **attachment_type:\"my-namespace/my-type\"**\n  Returns beacons having at least one attachment of the given namespaced\n  type. Supports \"any within this namespace\" via the partial wildcard\n  syntax: \"my-namespace/*\". Supports multiple filters which will be\n  combined with OR logic. The string must be double-quoted.\n* **indoor\\_level:`\"<string>\"`**\n  For example: **indoor\\_level:\"1\"**\n  Returns beacons which are located on the given indoor level. Accepts\n  multiple filters that will be combined with OR logic.\n\nMultiple filters on the same field are combined with OR logic (except\nregistration_time which is combined with AND logic).\nMultiple filters on different fields are combined with AND logic.\nFilters should be separated by spaces.\n\nAs with any HTTP query string parameter, the whole filter expression must\nbe URL-encoded.\n\nExample REST request:\n`GET /v1beta1/beacons?q=status:active%20lat:51.123%20lng:-1.095%20radius:1000`",
-                            "location": "query",
-                            "type": "string"
-                        },
-                        "projectId": {
-                            "description": "The project id to list beacons under. If not present then the project\ncredential that made the request is used as the project.\nOptional.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/beacons",
-                    "response": {
-                        "$ref": "ListBeaconsResponse"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/userlocation.beacon.registry"
-                    ]
-                },
-                "register": {
-                    "description": "Registers a previously unregistered beacon given its `advertisedId`.\nThese IDs are unique within the system. An ID can be registered only once.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.",
-                    "httpMethod": "POST",
-                    "id": "proximitybeacon.beacons.register",
-                    "parameterOrder": [],
-                    "parameters": {
-                        "projectId": {
-                            "description": "The project id of the project the beacon will be registered to. If\nthe project id is not specified then the project making the request\nis used.\nOptional.",
-                            "location": "query",
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/beacons:register",
-                    "request": {
-                        "$ref": "Beacon"
-                    },
-                    "response": {
-                        "$ref": "Beacon"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/userlocation.beacon.registry"
-                    ]
-                },
                 "activate": {
                     "description": "Activates a beacon. A beacon that is active will return information\nand attachment data when queried via `beaconinfo.getforobserved`.\nCalling this method on an already active beacon will do nothing (but\nwill return a successful response code).\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.",
                     "httpMethod": "POST",
@@ -419,17 +199,17 @@
                         "beaconName"
                     ],
                     "parameters": {
-                        "projectId": {
-                            "description": "The project id of the beacon to update. If the project id is not\nspecified then the project making the request is used. The project id\nmust match the project that owns the beacon.\nOptional.",
-                            "location": "query",
-                            "type": "string"
-                        },
                         "beaconName": {
                             "description": "Resource name of this beacon. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone, `1` for iBeacon, or `5` for AltBeacon.\n\nThis field must be left empty when registering. After reading a beacon,\nclients can use the name for future operations.",
                             "location": "path",
                             "pattern": "^beacons/[^/]+$",
                             "required": true,
                             "type": "string"
+                        },
+                        "projectId": {
+                            "description": "The project id of the beacon to update. If the project id is not\nspecified then the project making the request is used. The project id\nmust match the project that owns the beacon.\nOptional.",
+                            "location": "query",
+                            "type": "string"
                         }
                     },
                     "path": "v1beta1/{+beaconName}",
@@ -442,6 +222,152 @@
                     "scopes": [
                         "https://www.googleapis.com/auth/userlocation.beacon.registry"
                     ]
+                },
+                "decommission": {
+                    "description": "Decommissions the specified beacon in the service. This beacon will no\nlonger be returned from `beaconinfo.getforobserved`. This operation is\npermanent -- you will not be able to re-register a beacon with this ID\nagain.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.",
+                    "httpMethod": "POST",
+                    "id": "proximitybeacon.beacons.decommission",
+                    "parameterOrder": [
+                        "beaconName"
+                    ],
+                    "parameters": {
+                        "beaconName": {
+                            "description": "Beacon that should be decommissioned. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID of the beacon's \"stable\" UID.\nRequired.",
+                            "location": "path",
+                            "pattern": "^beacons/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "projectId": {
+                            "description": "The project id of the beacon to decommission. If the project id is not\nspecified then the project making the request is used. The project id\nmust match the project that owns the beacon.\nOptional.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/{+beaconName}:decommission",
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/userlocation.beacon.registry"
+                    ]
+                },
+                "delete": {
+                    "description": "Deletes the specified beacon including all diagnostics data for the beacon\nas well as any attachments on the beacon (including those belonging to\nother projects). This operation cannot be undone.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.",
+                    "httpMethod": "DELETE",
+                    "id": "proximitybeacon.beacons.delete",
+                    "parameterOrder": [
+                        "beaconName"
+                    ],
+                    "parameters": {
+                        "beaconName": {
+                            "description": "Beacon that should be deleted. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID or the beacon's \"stable\" UID.\nRequired.",
+                            "location": "path",
+                            "pattern": "^beacons/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "projectId": {
+                            "description": "The project id of the beacon to delete. If not provided, the project\nthat is making the request is used.\nOptional.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/{+beaconName}",
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/userlocation.beacon.registry"
+                    ]
+                },
+                "deactivate": {
+                    "description": "Deactivates a beacon. Once deactivated, the API will not return\ninformation nor attachment data for the beacon when queried via\n`beaconinfo.getforobserved`. Calling this method on an already inactive\nbeacon will do nothing (but will return a successful response code).\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.",
+                    "httpMethod": "POST",
+                    "id": "proximitybeacon.beacons.deactivate",
+                    "parameterOrder": [
+                        "beaconName"
+                    ],
+                    "parameters": {
+                        "beaconName": {
+                            "description": "Beacon that should be deactivated. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID or the beacon's \"stable\" UID.\nRequired.",
+                            "location": "path",
+                            "pattern": "^beacons/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "projectId": {
+                            "description": "The project id of the beacon to deactivate. If the project id is not\nspecified then the project making the request is used. The project id must\nmatch the project that owns the beacon.\nOptional.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/{+beaconName}:deactivate",
+                    "response": {
+                        "$ref": "Empty"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/userlocation.beacon.registry"
+                    ]
+                },
+                "register": {
+                    "description": "Registers a previously unregistered beacon given its `advertisedId`.\nThese IDs are unique within the system. An ID can be registered only once.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.",
+                    "httpMethod": "POST",
+                    "id": "proximitybeacon.beacons.register",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "projectId": {
+                            "description": "The project id of the project the beacon will be registered to. If\nthe project id is not specified then the project making the request\nis used.\nOptional.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/beacons:register",
+                    "request": {
+                        "$ref": "Beacon"
+                    },
+                    "response": {
+                        "$ref": "Beacon"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/userlocation.beacon.registry"
+                    ]
+                },
+                "list": {
+                    "description": "Searches the beacon registry for beacons that match the given search\ncriteria. Only those beacons that the client has permission to list\nwill be returned.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **viewer**, **Is owner** or **Can edit**\npermissions in the Google Developers Console project.",
+                    "httpMethod": "GET",
+                    "id": "proximitybeacon.beacons.list",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "pageToken": {
+                            "description": "A pagination token obtained from a previous request to list beacons.",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "pageSize": {
+                            "description": "The maximum number of records to return for this request, up to a\nserver-defined upper limit.",
+                            "format": "int32",
+                            "location": "query",
+                            "type": "integer"
+                        },
+                        "q": {
+                            "description": "Filter query string that supports the following field filters:\n\n* **description:`\"<string>\"`**\n  For example: **description:\"Room 3\"**\n  Returns beacons whose description matches tokens in the string \"Room 3\"\n  (not necessarily that exact string).\n  The string must be double-quoted.\n* **status:`<enum>`**\n  For example: **status:active**\n  Returns beacons whose status matches the given value. Values must be\n  one of the Beacon.Status enum values (case insensitive). Accepts\n  multiple filters which will be combined with OR logic.\n* **stability:`<enum>`**\n  For example: **stability:mobile**\n  Returns beacons whose expected stability matches the given value.\n  Values must be one of the Beacon.Stability enum values (case\n  insensitive). Accepts multiple filters which will be combined with\n  OR logic.\n* **place\\_id:`\"<string>\"`**\n  For example: **place\\_id:\"ChIJVSZzVR8FdkgRXGmmm6SslKw=\"**\n  Returns beacons explicitly registered at the given place, expressed as\n  a Place ID obtained from [Google Places API](/places/place-id). Does not\n  match places inside the given place. Does not consider the beacon's\n  actual location (which may be different from its registered place).\n  Accepts multiple filters that will be combined with OR logic. The place\n  ID must be double-quoted.\n* **registration\\_time`[<|>|<=|>=]<integer>`**\n  For example: **registration\\_time>=1433116800**\n  Returns beacons whose registration time matches the given filter.\n  Supports the operators: <, >, <=, and >=. Timestamp must be expressed as\n  an integer number of seconds since midnight January 1, 1970 UTC. Accepts\n  at most two filters that will be combined with AND logic, to support\n  \"between\" semantics. If more than two are supplied, the latter ones are\n  ignored.\n* **lat:`<double> lng:<double> radius:<integer>`**\n  For example: **lat:51.1232343 lng:-1.093852 radius:1000**\n  Returns beacons whose registered location is within the given circle.\n  When any of these fields are given, all are required. Latitude and\n  longitude must be decimal degrees between -90.0 and 90.0 and between\n  -180.0 and 180.0 respectively. Radius must be an integer number of\n  meters between 10 and 1,000,000 (1000 km).\n* **property:`\"<string>=<string>\"`**\n  For example: **property:\"battery-type=CR2032\"**\n  Returns beacons which have a property of the given name and value.\n  Supports multiple filters which will be combined with OR logic.\n  The entire name=value string must be double-quoted as one string.\n* **attachment\\_type:`\"<string>\"`**\n  For example: **attachment_type:\"my-namespace/my-type\"**\n  Returns beacons having at least one attachment of the given namespaced\n  type. Supports \"any within this namespace\" via the partial wildcard\n  syntax: \"my-namespace/*\". Supports multiple filters which will be\n  combined with OR logic. The string must be double-quoted.\n* **indoor\\_level:`\"<string>\"`**\n  For example: **indoor\\_level:\"1\"**\n  Returns beacons which are located on the given indoor level. Accepts\n  multiple filters that will be combined with OR logic.\n\nMultiple filters on the same field are combined with OR logic (except\nregistration_time which is combined with AND logic).\nMultiple filters on different fields are combined with AND logic.\nFilters should be separated by spaces.\n\nAs with any HTTP query string parameter, the whole filter expression must\nbe URL-encoded.\n\nExample REST request:\n`GET /v1beta1/beacons?q=status:active%20lat:51.123%20lng:-1.095%20radius:1000`",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "projectId": {
+                            "description": "The project id to list beacons under. If not present then the project\ncredential that made the request is used as the project.\nOptional.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/beacons",
+                    "response": {
+                        "$ref": "ListBeaconsResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/userlocation.beacon.registry"
+                    ]
                 }
             },
             "resources": {
@@ -455,6 +381,13 @@
                                 "beaconName"
                             ],
                             "parameters": {
+                                "beaconName": {
+                                    "description": "Beacon that the diagnostics are for.",
+                                    "location": "path",
+                                    "pattern": "^beacons/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
                                 "pageToken": {
                                     "description": "Requests results that occur after the `page_token`, obtained from the\nresponse to a previous request. Optional.",
                                     "location": "query",
@@ -465,7 +398,8 @@
                                     "enum": [
                                         "ALERT_UNSPECIFIED",
                                         "WRONG_LOCATION",
-                                        "LOW_BATTERY"
+                                        "LOW_BATTERY",
+                                        "LOW_ACTIVITY"
                                     ],
                                     "location": "query",
                                     "type": "string"
@@ -480,13 +414,6 @@
                                     "description": "Requests only diagnostic records for the given project id. If not set,\nthen the project making the request will be used for looking up\ndiagnostic records. Optional.",
                                     "location": "query",
                                     "type": "string"
-                                },
-                                "beaconName": {
-                                    "description": "Beacon that the diagnostics are for.",
-                                    "location": "path",
-                                    "pattern": "^beacons/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
                                 }
                             },
                             "path": "v1beta1/{+beaconName}/diagnostics",
@@ -543,17 +470,17 @@
                                 "beaconName"
                             ],
                             "parameters": {
-                                "projectId": {
-                                    "description": "The project id of the project the attachment will belong to. If\nthe project id is not specified then the project making the request\nis used.\nOptional.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
                                 "beaconName": {
                                     "description": "Beacon on which the attachment should be created. A beacon name has the\nformat \"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast\nby the beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID or the beacon's \"stable\" UID.\nRequired.",
                                     "location": "path",
                                     "pattern": "^beacons/[^/]+$",
                                     "required": true,
                                     "type": "string"
+                                },
+                                "projectId": {
+                                    "description": "The project id of the project the attachment will belong to. If\nthe project id is not specified then the project making the request\nis used.\nOptional.",
+                                    "location": "query",
+                                    "type": "string"
                                 }
                             },
                             "path": "v1beta1/{+beaconName}/attachments",
@@ -575,17 +502,17 @@
                                 "attachmentName"
                             ],
                             "parameters": {
+                                "projectId": {
+                                    "description": "The project id of the attachment to delete. If not provided, the project\nthat is making the request is used.\nOptional.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "attachmentName": {
                                     "description": "The attachment name (`attachmentName`) of\nthe attachment to remove. For example:\n`beacons/3!893737abc9/attachments/c5e937-af0-494-959-ec49d12738`. For\nEddystone-EID beacons, the beacon ID portion (`3!893737abc9`) may be the\nbeacon's current EID, or its \"stable\" Eddystone-UID.\nRequired.",
                                     "location": "path",
                                     "pattern": "^beacons/[^/]+/attachments/[^/]+$",
                                     "required": true,
                                     "type": "string"
-                                },
-                                "projectId": {
-                                    "description": "The project id of the attachment to delete. If not provided, the project\nthat is making the request is used.\nOptional.",
-                                    "location": "query",
-                                    "type": "string"
                                 }
                             },
                             "path": "v1beta1/{+attachmentName}",
@@ -604,11 +531,6 @@
                                 "beaconName"
                             ],
                             "parameters": {
-                                "namespacedType": {
-                                    "description": "Specifies the namespace and type of attachment to include in response in\n<var>namespace/type</var> format. Accepts `*/*` to specify\n\"all types in all namespaces\".",
-                                    "location": "query",
-                                    "type": "string"
-                                },
                                 "beaconName": {
                                     "description": "Beacon whose attachments should be fetched. A beacon name has the\nformat \"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast\nby the beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID or the beacon's \"stable\" UID.\nRequired.",
                                     "location": "path",
@@ -620,6 +542,11 @@
                                     "description": "The project id to list beacon attachments under. This field can be\nused when \"*\" is specified to mean all attachment namespaces. Projects\nmay have multiple attachments with multiple namespaces. If \"*\" is\nspecified and the projectId string is empty, then the project\nmaking the request is used.\nOptional.",
                                     "location": "query",
                                     "type": "string"
+                                },
+                                "namespacedType": {
+                                    "description": "Specifies the namespace and type of attachment to include in response in\n<var>namespace/type</var> format. Accepts `*/*` to specify\n\"all types in all namespaces\".",
+                                    "location": "query",
+                                    "type": "string"
                                 }
                             },
                             "path": "v1beta1/{+beaconName}/attachments",
@@ -633,113 +560,100 @@
                     }
                 }
             }
+        },
+        "beaconinfo": {
+            "methods": {
+                "getforobserved": {
+                    "description": "Given one or more beacon observations, returns any beacon information\nand attachments accessible to your application. Authorize by using the\n[API key](https://developers.google.com/beacons/proximity/get-started#request_a_browser_api_key)\nfor the application.",
+                    "httpMethod": "POST",
+                    "id": "proximitybeacon.beaconinfo.getforobserved",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1beta1/beaconinfo:getforobserved",
+                    "request": {
+                        "$ref": "GetInfoForObservedBeaconsRequest"
+                    },
+                    "response": {
+                        "$ref": "GetInfoForObservedBeaconsResponse"
+                    }
+                }
+            }
+        },
+        "namespaces": {
+            "methods": {
+                "update": {
+                    "description": "Updates the information about the specified namespace. Only the namespace\nvisibility can be updated.",
+                    "httpMethod": "PUT",
+                    "id": "proximitybeacon.namespaces.update",
+                    "parameterOrder": [
+                        "namespaceName"
+                    ],
+                    "parameters": {
+                        "namespaceName": {
+                            "description": "Resource name of this namespace. Namespaces names have the format:\n<code>namespaces/<var>namespace</var></code>.",
+                            "location": "path",
+                            "pattern": "^namespaces/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "projectId": {
+                            "description": "The project id of the namespace to update. If the project id is not\nspecified then the project making the request is used. The project id\nmust match the project that owns the beacon.\nOptional.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/{+namespaceName}",
+                    "request": {
+                        "$ref": "Namespace"
+                    },
+                    "response": {
+                        "$ref": "Namespace"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/userlocation.beacon.registry"
+                    ]
+                },
+                "list": {
+                    "description": "Lists all attachment namespaces owned by your Google Developers Console\nproject. Attachment data associated with a beacon must include a\nnamespaced type, and the namespace must be owned by your project.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **viewer**, **Is owner** or **Can edit**\npermissions in the Google Developers Console project.",
+                    "httpMethod": "GET",
+                    "id": "proximitybeacon.namespaces.list",
+                    "parameterOrder": [],
+                    "parameters": {
+                        "projectId": {
+                            "description": "The project id to list namespaces under.\nOptional.",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1beta1/namespaces",
+                    "response": {
+                        "$ref": "ListNamespacesResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/userlocation.beacon.registry"
+                    ]
+                }
+            }
         }
     },
-    "revision": "20171003",
+    "revision": "20171017",
     "rootUrl": "https://proximitybeacon.googleapis.com/",
     "schemas": {
-        "EphemeralIdRegistrationParams": {
-            "description": "Information a client needs to provision and register beacons that\nbroadcast Eddystone-EID format beacon IDs, using Elliptic curve\nDiffie-Hellman key exchange. See\n[the Eddystone specification](https://github.com/google/eddystone/tree/master/eddystone-eid) at GitHub.",
-            "id": "EphemeralIdRegistrationParams",
-            "properties": {
-                "serviceEcdhPublicKey": {
-                    "description": "The beacon service's public key for use by a beacon to derive its\nIdentity Key using Elliptic Curve Diffie-Hellman key exchange.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "maxRotationPeriodExponent": {
-                    "description": "Indicates the maximum rotation period supported by the service.\nSee EddystoneEidRegistration.rotation_period_exponent",
-                    "format": "uint32",
-                    "type": "integer"
-                },
-                "minRotationPeriodExponent": {
-                    "description": "Indicates the minimum rotation period supported by the service.\nSee EddystoneEidRegistration.rotation_period_exponent",
-                    "format": "uint32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "DeleteAttachmentsResponse": {
-            "description": "Response for a request to delete attachments.",
-            "id": "DeleteAttachmentsResponse",
-            "properties": {
-                "numDeleted": {
-                    "description": "The number of attachments that were deleted.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "Observation": {
-            "description": "Represents one beacon observed once.",
-            "id": "Observation",
-            "properties": {
-                "advertisedId": {
-                    "$ref": "AdvertisedId",
-                    "description": "The ID advertised by the beacon the client has encountered.\n\nIf the submitted `advertised_id` type is Eddystone-EID, then the client\nmust be authorized to resolve the given beacon. Otherwise no data will be\nreturned for that beacon.\nRequired."
-                },
-                "telemetry": {
-                    "description": "The array of telemetry bytes received from the beacon. The server is\nresponsible for parsing it. This field may frequently be empty, as\nwith a beacon that transmits telemetry only occasionally.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "timestampMs": {
-                    "description": "Time when the beacon was observed.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListDiagnosticsResponse": {
-            "description": "Response that contains the requested diagnostics.",
-            "id": "ListDiagnosticsResponse",
-            "properties": {
-                "diagnostics": {
-                    "description": "The diagnostics matching the given request.",
-                    "items": {
-                        "$ref": "Diagnostics"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "Token that can be used for pagination. Returned only if the\nrequest matches more beacons than can be returned in this response.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GetInfoForObservedBeaconsResponse": {
-            "description": "Information about the requested beacons, optionally including attachment\ndata.",
-            "id": "GetInfoForObservedBeaconsResponse",
-            "properties": {
-                "beacons": {
-                    "description": "Public information about beacons.\nMay be empty if the request matched no beacons.",
-                    "items": {
-                        "$ref": "BeaconInfo"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "Beacon": {
             "description": "Details of a beacon device.",
             "id": "Beacon",
             "properties": {
-                "description": {
-                    "description": "Free text used to identify and describe the beacon. Maximum length 140\ncharacters.\nOptional.",
-                    "type": "string"
+                "latLng": {
+                    "$ref": "LatLng",
+                    "description": "The location of the beacon, expressed as a latitude and longitude pair.\nThis location is given when the beacon is registered or updated. It does\nnot necessarily indicate the actual current location of the beacon.\nOptional."
                 },
                 "placeId": {
                     "description": "The [Google Places API](/places/place-id) Place ID of the place where\nthe beacon is deployed. This is given when the beacon is registered or\nupdated, not automatically detected in any way.\nOptional.",
                     "type": "string"
                 },
-                "latLng": {
-                    "$ref": "LatLng",
-                    "description": "The location of the beacon, expressed as a latitude and longitude pair.\nThis location is given when the beacon is registered or updated. It does\nnot necessarily indicate the actual current location of the beacon.\nOptional."
+                "description": {
+                    "description": "Free text used to identify and describe the beacon. Maximum length 140\ncharacters.\nOptional.",
+                    "type": "string"
                 },
                 "properties": {
                     "additionalProperties": {
@@ -851,6 +765,11 @@
             "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.",
             "id": "Date",
             "properties": {
+                "month": {
+                    "description": "Month of year. Must be from 1 to 12.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "day": {
                     "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.",
                     "format": "int32",
@@ -860,11 +779,6 @@
                     "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.",
                     "format": "int32",
                     "type": "integer"
-                },
-                "month": {
-                    "description": "Month of year. Must be from 1 to 12.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -899,14 +813,16 @@
                     "description": "An unordered list of Alerts that the beacon has.",
                     "enumDescriptions": [
                         "Invalid value. Should never appear.",
-                        "The beacon has been reported in a location different than its registered\nlocation. This may indicate that the beacon has been moved. This signal\nis not 100% accurate, but indicates that further investigation is worth\nwhile.",
-                        "The battery level for the beacon is low enough that, given the beacon's\ncurrent use, its battery will run out with in the next 60 days. This\nindicates that the battery should be replaced soon."
+                        "The beacon has been reported far from its expected location (the beacon's\nlat_lng field if populated, otherwise, if the beacon's place_id field is\npresent, the center of that place). This may indicate that the beacon has\nbeen moved. This signal is not 100% accurate, but indicates that further\ninvestigation is worthwhile.",
+                        "The battery level for the beacon is low enough that, given the beacon's\ncurrent use, its battery will run out with in the next 60 days. This\nindicates that the battery should be replaced soon.",
+                        "The beacon has been reported at a very low rate or not at all. This may\nindicate that the beacon is broken or just that no one has gone near the\nbeacon in recent days. If this status appears unexpectedly, the beacon\nowner should investigate further."
                     ],
                     "items": {
                         "enum": [
                             "ALERT_UNSPECIFIED",
                             "WRONG_LOCATION",
-                            "LOW_BATTERY"
+                            "LOW_BATTERY",
+                            "LOW_ACTIVITY"
                         ],
                         "type": "string"
                     },
@@ -999,6 +915,16 @@
             "description": "Write-only registration parameters for beacons using Eddystone-EID format.\nTwo ways of securely registering an Eddystone-EID beacon with the service\nare supported:\n\n1. Perform an ECDH key exchange via this API, including a previous call\n   to `GET /v1beta1/eidparams`. In this case the fields\n   `beacon_ecdh_public_key` and `service_ecdh_public_key` should be\n   populated and `beacon_identity_key` should not be populated. This\n   method ensures that only the two parties in the ECDH key exchange can\n   compute the identity key, which becomes a secret between them.\n2. Derive or obtain the beacon's identity key via other secure means\n   (perhaps an ECDH key exchange between the beacon and a mobile device\n   or any other secure method), and then submit the resulting identity key\n   to the service. In this case `beacon_identity_key` field should be\n   populated, and neither of `beacon_ecdh_public_key` nor\n   `service_ecdh_public_key` fields should be. The security of this method\n   depends on how securely the parties involved (in particular the\n   bluetooth client) handle the identity key, and obviously on how\n   securely the identity key was generated.\n\nSee [the Eddystone specification](https://github.com/google/eddystone/tree/master/eddystone-eid) at GitHub.",
             "id": "EphemeralIdRegistration",
             "properties": {
+                "initialClockValue": {
+                    "description": "The initial clock value of the beacon. The beacon's clock must have\nbegun counting at this value immediately prior to transmitting this\nvalue to the resolving service. Significant delay in transmitting this\nvalue to the service risks registration or resolution failures. If a\nvalue is not provided, the default is zero.",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "beaconEcdhPublicKey": {
+                    "description": "The beacon's public key used for the Elliptic curve Diffie-Hellman\nkey exchange. When this field is populated, `service_ecdh_public_key`\nmust also be populated, and `beacon_identity_key` must not be.",
+                    "format": "byte",
+                    "type": "string"
+                },
                 "rotationPeriodExponent": {
                     "description": "Indicates the nominal period between each rotation of the beacon's\nephemeral ID. \"Nominal\" because the beacon should randomize the\nactual interval. See [the spec at github](https://github.com/google/eddystone/tree/master/eddystone-eid)\nfor details. This value corresponds to a power-of-two scaler on the\nbeacon's clock: when the scaler value is K, the beacon will begin\nbroadcasting a new ephemeral ID on average every 2^K seconds.",
                     "format": "uint32",
@@ -1018,16 +944,6 @@
                     "description": "An initial ephemeral ID calculated using the clock value submitted as\n`initial_clock_value`, and the secret key generated by the\nDiffie-Hellman key exchange using `service_ecdh_public_key` and\n`service_ecdh_public_key`. This initial EID value will be used by the\nservice to confirm that the key exchange process was successful.",
                     "format": "byte",
                     "type": "string"
-                },
-                "initialClockValue": {
-                    "description": "The initial clock value of the beacon. The beacon's clock must have\nbegun counting at this value immediately prior to transmitting this\nvalue to the resolving service. Significant delay in transmitting this\nvalue to the service risks registration or resolution failures. If a\nvalue is not provided, the default is zero.",
-                    "format": "uint64",
-                    "type": "string"
-                },
-                "beaconEcdhPublicKey": {
-                    "description": "The beacon's public key used for the Elliptic curve Diffie-Hellman\nkey exchange. When this field is populated, `service_ecdh_public_key`\nmust also be populated, and `beacon_identity_key` must not be.",
-                    "format": "byte",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -1125,6 +1041,93 @@
                 }
             },
             "type": "object"
+        },
+        "EphemeralIdRegistrationParams": {
+            "description": "Information a client needs to provision and register beacons that\nbroadcast Eddystone-EID format beacon IDs, using Elliptic curve\nDiffie-Hellman key exchange. See\n[the Eddystone specification](https://github.com/google/eddystone/tree/master/eddystone-eid) at GitHub.",
+            "id": "EphemeralIdRegistrationParams",
+            "properties": {
+                "maxRotationPeriodExponent": {
+                    "description": "Indicates the maximum rotation period supported by the service.\nSee EddystoneEidRegistration.rotation_period_exponent",
+                    "format": "uint32",
+                    "type": "integer"
+                },
+                "minRotationPeriodExponent": {
+                    "description": "Indicates the minimum rotation period supported by the service.\nSee EddystoneEidRegistration.rotation_period_exponent",
+                    "format": "uint32",
+                    "type": "integer"
+                },
+                "serviceEcdhPublicKey": {
+                    "description": "The beacon service's public key for use by a beacon to derive its\nIdentity Key using Elliptic Curve Diffie-Hellman key exchange.",
+                    "format": "byte",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DeleteAttachmentsResponse": {
+            "description": "Response for a request to delete attachments.",
+            "id": "DeleteAttachmentsResponse",
+            "properties": {
+                "numDeleted": {
+                    "description": "The number of attachments that were deleted.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "Observation": {
+            "description": "Represents one beacon observed once.",
+            "id": "Observation",
+            "properties": {
+                "telemetry": {
+                    "description": "The array of telemetry bytes received from the beacon. The server is\nresponsible for parsing it. This field may frequently be empty, as\nwith a beacon that transmits telemetry only occasionally.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "timestampMs": {
+                    "description": "Time when the beacon was observed.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "advertisedId": {
+                    "$ref": "AdvertisedId",
+                    "description": "The ID advertised by the beacon the client has encountered.\n\nIf the submitted `advertised_id` type is Eddystone-EID, then the client\nmust be authorized to resolve the given beacon. Otherwise no data will be\nreturned for that beacon.\nRequired."
+                }
+            },
+            "type": "object"
+        },
+        "ListDiagnosticsResponse": {
+            "description": "Response that contains the requested diagnostics.",
+            "id": "ListDiagnosticsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Token that can be used for pagination. Returned only if the\nrequest matches more beacons than can be returned in this response.",
+                    "type": "string"
+                },
+                "diagnostics": {
+                    "description": "The diagnostics matching the given request.",
+                    "items": {
+                        "$ref": "Diagnostics"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GetInfoForObservedBeaconsResponse": {
+            "description": "Information about the requested beacons, optionally including attachment\ndata.",
+            "id": "GetInfoForObservedBeaconsResponse",
+            "properties": {
+                "beacons": {
+                    "description": "Public information about beacons.\nMay be empty if the request matched no beacons.",
+                    "items": {
+                        "$ref": "BeaconInfo"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis_beta/pubsub__v1beta2.json b/discovery/googleapis_beta/pubsub__v1beta2.json
index 5620645..2e34112 100644
--- a/discovery/googleapis_beta/pubsub__v1beta2.json
+++ b/discovery/googleapis_beta/pubsub__v1beta2.json
@@ -2,11 +2,11 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/cloud-platform": {
-                    "description": "View and manage your data across Google Cloud Platform services"
-                },
                 "https://www.googleapis.com/auth/pubsub": {
                     "description": "View and manage Pub/Sub topics and subscriptions"
+                },
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "View and manage your data across Google Cloud Platform services"
                 }
             }
         }
@@ -28,8 +28,24 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "callback": {
-            "description": "JSONP",
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+            "location": "query",
+            "type": "string"
+        },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
@@ -46,6 +62,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -83,34 +104,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
         "bearer_token": {
             "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
-            "location": "query",
-            "type": "string"
-        },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
         }
@@ -119,144 +119,38 @@
     "resources": {
         "projects": {
             "resources": {
-                "topics": {
+                "subscriptions": {
                     "methods": {
-                        "get": {
-                            "description": "Gets the configuration of a topic.",
-                            "httpMethod": "GET",
-                            "id": "pubsub.projects.topics.get",
-                            "parameterOrder": [
-                                "topic"
-                            ],
-                            "parameters": {
-                                "topic": {
-                                    "description": "The name of the topic to get.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta2/{+topic}",
-                            "response": {
-                                "$ref": "Topic"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/pubsub"
-                            ]
-                        },
-                        "publish": {
-                            "description": "Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic\ndoes not exist. The message payload must not be empty; it must contain\n either a non-empty data field, or at least one attribute.",
-                            "httpMethod": "POST",
-                            "id": "pubsub.projects.topics.publish",
-                            "parameterOrder": [
-                                "topic"
-                            ],
-                            "parameters": {
-                                "topic": {
-                                    "description": "The messages in the request will be published on this topic.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta2/{+topic}:publish",
-                            "request": {
-                                "$ref": "PublishRequest"
-                            },
-                            "response": {
-                                "$ref": "PublishResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/pubsub"
-                            ]
-                        },
-                        "testIamPermissions": {
-                            "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.",
-                            "httpMethod": "POST",
-                            "id": "pubsub.projects.topics.testIamPermissions",
-                            "parameterOrder": [
-                                "resource"
-                            ],
-                            "parameters": {
-                                "resource": {
-                                    "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta2/{+resource}:testIamPermissions",
-                            "request": {
-                                "$ref": "TestIamPermissionsRequest"
-                            },
-                            "response": {
-                                "$ref": "TestIamPermissionsResponse"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/pubsub"
-                            ]
-                        },
-                        "delete": {
-                            "description": "Deletes the topic with the given name. Returns `NOT_FOUND` if the topic\ndoes not exist. After a topic is deleted, a new topic may be created with\nthe same name; this is an entirely new topic with none of the old\nconfiguration or subscriptions. Existing subscriptions to this topic are\nnot deleted, but their `topic` field is set to `_deleted-topic_`.",
-                            "httpMethod": "DELETE",
-                            "id": "pubsub.projects.topics.delete",
-                            "parameterOrder": [
-                                "topic"
-                            ],
-                            "parameters": {
-                                "topic": {
-                                    "description": "Name of the topic to delete.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta2/{+topic}",
-                            "response": {
-                                "$ref": "Empty"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/pubsub"
-                            ]
-                        },
                         "list": {
-                            "description": "Lists matching topics.",
+                            "description": "Lists matching subscriptions.",
                             "httpMethod": "GET",
-                            "id": "pubsub.projects.topics.list",
+                            "id": "pubsub.projects.subscriptions.list",
                             "parameterOrder": [
                                 "project"
                             ],
                             "parameters": {
                                 "pageToken": {
-                                    "description": "The value returned by the last `ListTopicsResponse`; indicates that this is\na continuation of a prior `ListTopics` call, and that the system should\nreturn the next page of data.",
+                                    "description": "The value returned by the last `ListSubscriptionsResponse`; indicates that\nthis is a continuation of a prior `ListSubscriptions` call, and that the\nsystem should return the next page of data.",
                                     "location": "query",
                                     "type": "string"
                                 },
                                 "pageSize": {
-                                    "description": "Maximum number of topics to return.",
+                                    "description": "Maximum number of subscriptions to return.",
                                     "format": "int32",
                                     "location": "query",
                                     "type": "integer"
                                 },
                                 "project": {
-                                    "description": "The name of the cloud project that topics belong to.",
+                                    "description": "The name of the cloud project that subscriptions belong to.",
                                     "location": "path",
                                     "pattern": "^projects/[^/]+$",
                                     "required": true,
                                     "type": "string"
                                 }
                             },
-                            "path": "v1beta2/{+project}/topics",
+                            "path": "v1beta2/{+project}/subscriptions",
                             "response": {
-                                "$ref": "ListTopicsResponse"
+                                "$ref": "ListSubscriptionsResponse"
                             },
                             "scopes": [
                                 "https://www.googleapis.com/auth/cloud-platform",
@@ -266,7 +160,7 @@
                         "setIamPolicy": {
                             "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.",
                             "httpMethod": "POST",
-                            "id": "pubsub.projects.topics.setIamPolicy",
+                            "id": "pubsub.projects.subscriptions.setIamPolicy",
                             "parameterOrder": [
                                 "resource"
                             ],
@@ -274,7 +168,7 @@
                                 "resource": {
                                     "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
                                     "location": "path",
-                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
+                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
                                     "required": true,
                                     "type": "string"
                                 }
@@ -292,123 +186,27 @@
                             ]
                         },
                         "create": {
-                            "description": "Creates the given topic with the given name.",
+                            "description": "Creates a subscription to a given topic.\nIf the subscription already exists, returns `ALREADY_EXISTS`.\nIf the corresponding topic doesn't exist, returns `NOT_FOUND`.\n\nIf the name is not provided in the request, the server will assign a random\nname for this subscription on the same project as the topic. Note that\nfor REST API requests, you must specify a name.",
                             "httpMethod": "PUT",
-                            "id": "pubsub.projects.topics.create",
+                            "id": "pubsub.projects.subscriptions.create",
                             "parameterOrder": [
                                 "name"
                             ],
                             "parameters": {
                                 "name": {
-                                    "description": "The name of the topic. It must have the format\n`\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter,\nand contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),\nunderscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent\nsigns (`%`). It must be between 3 and 255 characters in length, and it\nmust not start with `\"goog\"`.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta2/{+name}",
-                            "request": {
-                                "$ref": "Topic"
-                            },
-                            "response": {
-                                "$ref": "Topic"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/pubsub"
-                            ]
-                        },
-                        "getIamPolicy": {
-                            "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
-                            "httpMethod": "GET",
-                            "id": "pubsub.projects.topics.getIamPolicy",
-                            "parameterOrder": [
-                                "resource"
-                            ],
-                            "parameters": {
-                                "resource": {
-                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta2/{+resource}:getIamPolicy",
-                            "response": {
-                                "$ref": "Policy"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/pubsub"
-                            ]
-                        }
-                    },
-                    "resources": {
-                        "subscriptions": {
-                            "methods": {
-                                "list": {
-                                    "description": "Lists the name of the subscriptions for this topic.",
-                                    "httpMethod": "GET",
-                                    "id": "pubsub.projects.topics.subscriptions.list",
-                                    "parameterOrder": [
-                                        "topic"
-                                    ],
-                                    "parameters": {
-                                        "pageSize": {
-                                            "description": "Maximum number of subscription names to return.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "topic": {
-                                            "description": "The name of the topic that subscriptions are attached to.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/topics/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        },
-                                        "pageToken": {
-                                            "description": "The value returned by the last `ListTopicSubscriptionsResponse`; indicates\nthat this is a continuation of a prior `ListTopicSubscriptions` call, and\nthat the system should return the next page of data.",
-                                            "location": "query",
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta2/{+topic}/subscriptions",
-                                    "response": {
-                                        "$ref": "ListTopicSubscriptionsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/pubsub"
-                                    ]
-                                }
-                            }
-                        }
-                    }
-                },
-                "subscriptions": {
-                    "methods": {
-                        "getIamPolicy": {
-                            "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
-                            "httpMethod": "GET",
-                            "id": "pubsub.projects.subscriptions.getIamPolicy",
-                            "parameterOrder": [
-                                "resource"
-                            ],
-                            "parameters": {
-                                "resource": {
-                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                    "description": "The name of the subscription. It must have the format\n`\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must\nstart with a letter, and contain only letters (`[A-Za-z]`), numbers\n(`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),\nplus (`+`) or percent signs (`%`). It must be between 3 and 255 characters\nin length, and it must not start with `\"goog\"`.",
                                     "location": "path",
                                     "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
                                     "required": true,
                                     "type": "string"
                                 }
                             },
-                            "path": "v1beta2/{+resource}:getIamPolicy",
+                            "path": "v1beta2/{+name}",
+                            "request": {
+                                "$ref": "Subscription"
+                            },
                             "response": {
-                                "$ref": "Policy"
+                                "$ref": "Subscription"
                             },
                             "scopes": [
                                 "https://www.googleapis.com/auth/cloud-platform",
@@ -471,6 +269,31 @@
                                 "https://www.googleapis.com/auth/pubsub"
                             ]
                         },
+                        "getIamPolicy": {
+                            "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
+                            "httpMethod": "GET",
+                            "id": "pubsub.projects.subscriptions.getIamPolicy",
+                            "parameterOrder": [
+                                "resource"
+                            ],
+                            "parameters": {
+                                "resource": {
+                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta2/{+resource}:getIamPolicy",
+                            "response": {
+                                "$ref": "Policy"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/pubsub"
+                            ]
+                        },
                         "get": {
                             "description": "Gets the configuration details of a subscription.",
                             "httpMethod": "GET",
@@ -604,37 +427,41 @@
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/pubsub"
                             ]
-                        },
+                        }
+                    }
+                },
+                "topics": {
+                    "methods": {
                         "list": {
-                            "description": "Lists matching subscriptions.",
+                            "description": "Lists matching topics.",
                             "httpMethod": "GET",
-                            "id": "pubsub.projects.subscriptions.list",
+                            "id": "pubsub.projects.topics.list",
                             "parameterOrder": [
                                 "project"
                             ],
                             "parameters": {
+                                "pageToken": {
+                                    "description": "The value returned by the last `ListTopicsResponse`; indicates that this is\na continuation of a prior `ListTopics` call, and that the system should\nreturn the next page of data.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "pageSize": {
-                                    "description": "Maximum number of subscriptions to return.",
+                                    "description": "Maximum number of topics to return.",
                                     "format": "int32",
                                     "location": "query",
                                     "type": "integer"
                                 },
                                 "project": {
-                                    "description": "The name of the cloud project that subscriptions belong to.",
+                                    "description": "The name of the cloud project that topics belong to.",
                                     "location": "path",
                                     "pattern": "^projects/[^/]+$",
                                     "required": true,
                                     "type": "string"
-                                },
-                                "pageToken": {
-                                    "description": "The value returned by the last `ListSubscriptionsResponse`; indicates that\nthis is a continuation of a prior `ListSubscriptions` call, and that the\nsystem should return the next page of data.",
-                                    "location": "query",
-                                    "type": "string"
                                 }
                             },
-                            "path": "v1beta2/{+project}/subscriptions",
+                            "path": "v1beta2/{+project}/topics",
                             "response": {
-                                "$ref": "ListSubscriptionsResponse"
+                                "$ref": "ListTopicsResponse"
                             },
                             "scopes": [
                                 "https://www.googleapis.com/auth/cloud-platform",
@@ -642,27 +469,27 @@
                             ]
                         },
                         "create": {
-                            "description": "Creates a subscription to a given topic.\nIf the subscription already exists, returns `ALREADY_EXISTS`.\nIf the corresponding topic doesn't exist, returns `NOT_FOUND`.\n\nIf the name is not provided in the request, the server will assign a random\nname for this subscription on the same project as the topic. Note that\nfor REST API requests, you must specify a name.",
+                            "description": "Creates the given topic with the given name.",
                             "httpMethod": "PUT",
-                            "id": "pubsub.projects.subscriptions.create",
+                            "id": "pubsub.projects.topics.create",
                             "parameterOrder": [
                                 "name"
                             ],
                             "parameters": {
                                 "name": {
-                                    "description": "The name of the subscription. It must have the format\n`\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must\nstart with a letter, and contain only letters (`[A-Za-z]`), numbers\n(`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),\nplus (`+`) or percent signs (`%`). It must be between 3 and 255 characters\nin length, and it must not start with `\"goog\"`.",
+                                    "description": "The name of the topic. It must have the format\n`\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter,\nand contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),\nunderscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent\nsigns (`%`). It must be between 3 and 255 characters in length, and it\nmust not start with `\"goog\"`.",
                                     "location": "path",
-                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
+                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
                                     "required": true,
                                     "type": "string"
                                 }
                             },
                             "path": "v1beta2/{+name}",
                             "request": {
-                                "$ref": "Subscription"
+                                "$ref": "Topic"
                             },
                             "response": {
-                                "$ref": "Subscription"
+                                "$ref": "Topic"
                             },
                             "scopes": [
                                 "https://www.googleapis.com/auth/cloud-platform",
@@ -672,7 +499,7 @@
                         "setIamPolicy": {
                             "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.",
                             "httpMethod": "POST",
-                            "id": "pubsub.projects.subscriptions.setIamPolicy",
+                            "id": "pubsub.projects.topics.setIamPolicy",
                             "parameterOrder": [
                                 "resource"
                             ],
@@ -680,7 +507,7 @@
                                 "resource": {
                                     "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
                                     "location": "path",
-                                    "pattern": "^projects/[^/]+/subscriptions/[^/]+$",
+                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
                                     "required": true,
                                     "type": "string"
                                 }
@@ -696,13 +523,186 @@
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/pubsub"
                             ]
+                        },
+                        "getIamPolicy": {
+                            "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
+                            "httpMethod": "GET",
+                            "id": "pubsub.projects.topics.getIamPolicy",
+                            "parameterOrder": [
+                                "resource"
+                            ],
+                            "parameters": {
+                                "resource": {
+                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta2/{+resource}:getIamPolicy",
+                            "response": {
+                                "$ref": "Policy"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/pubsub"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets the configuration of a topic.",
+                            "httpMethod": "GET",
+                            "id": "pubsub.projects.topics.get",
+                            "parameterOrder": [
+                                "topic"
+                            ],
+                            "parameters": {
+                                "topic": {
+                                    "description": "The name of the topic to get.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta2/{+topic}",
+                            "response": {
+                                "$ref": "Topic"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/pubsub"
+                            ]
+                        },
+                        "publish": {
+                            "description": "Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic\ndoes not exist. The message payload must not be empty; it must contain\n either a non-empty data field, or at least one attribute.",
+                            "httpMethod": "POST",
+                            "id": "pubsub.projects.topics.publish",
+                            "parameterOrder": [
+                                "topic"
+                            ],
+                            "parameters": {
+                                "topic": {
+                                    "description": "The messages in the request will be published on this topic.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta2/{+topic}:publish",
+                            "request": {
+                                "$ref": "PublishRequest"
+                            },
+                            "response": {
+                                "$ref": "PublishResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/pubsub"
+                            ]
+                        },
+                        "testIamPermissions": {
+                            "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.",
+                            "httpMethod": "POST",
+                            "id": "pubsub.projects.topics.testIamPermissions",
+                            "parameterOrder": [
+                                "resource"
+                            ],
+                            "parameters": {
+                                "resource": {
+                                    "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta2/{+resource}:testIamPermissions",
+                            "request": {
+                                "$ref": "TestIamPermissionsRequest"
+                            },
+                            "response": {
+                                "$ref": "TestIamPermissionsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/pubsub"
+                            ]
+                        },
+                        "delete": {
+                            "description": "Deletes the topic with the given name. Returns `NOT_FOUND` if the topic\ndoes not exist. After a topic is deleted, a new topic may be created with\nthe same name; this is an entirely new topic with none of the old\nconfiguration or subscriptions. Existing subscriptions to this topic are\nnot deleted, but their `topic` field is set to `_deleted-topic_`.",
+                            "httpMethod": "DELETE",
+                            "id": "pubsub.projects.topics.delete",
+                            "parameterOrder": [
+                                "topic"
+                            ],
+                            "parameters": {
+                                "topic": {
+                                    "description": "Name of the topic to delete.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/topics/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta2/{+topic}",
+                            "response": {
+                                "$ref": "Empty"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/pubsub"
+                            ]
+                        }
+                    },
+                    "resources": {
+                        "subscriptions": {
+                            "methods": {
+                                "list": {
+                                    "description": "Lists the name of the subscriptions for this topic.",
+                                    "httpMethod": "GET",
+                                    "id": "pubsub.projects.topics.subscriptions.list",
+                                    "parameterOrder": [
+                                        "topic"
+                                    ],
+                                    "parameters": {
+                                        "pageSize": {
+                                            "description": "Maximum number of subscription names to return.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "topic": {
+                                            "description": "The name of the topic that subscriptions are attached to.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/topics/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageToken": {
+                                            "description": "The value returned by the last `ListTopicSubscriptionsResponse`; indicates\nthat this is a continuation of a prior `ListTopicSubscriptions` call, and\nthat the system should return the next page of data.",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta2/{+topic}/subscriptions",
+                                    "response": {
+                                        "$ref": "ListTopicSubscriptionsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/pubsub"
+                                    ]
+                                }
+                            }
                         }
                     }
                 }
             }
         }
     },
-    "revision": "20170918",
+    "revision": "20171003",
     "rootUrl": "https://pubsub.googleapis.com/",
     "schemas": {
         "SetIamPolicyRequest": {
@@ -731,11 +731,6 @@
             "description": "A message data and its attributes. The message payload must not be empty;\nit must contain either a non-empty data field, or at least one attribute.",
             "id": "PubsubMessage",
             "properties": {
-                "data": {
-                    "description": "The message payload. For JSON requests, the value of this field must be\n[base64-encoded](https://tools.ietf.org/html/rfc4648).",
-                    "format": "byte",
-                    "type": "string"
-                },
                 "messageId": {
                     "description": "ID of this message, assigned by the server when the message is published.\nGuaranteed to be unique within the topic. This value may be read by a\nsubscriber that receives a `PubsubMessage` via a `Pull` call or a push\ndelivery. It must not be populated by the publisher in a `Publish` call.",
                     "type": "string"
@@ -751,6 +746,11 @@
                     "description": "The time at which the message was published, populated by the server when\nit receives the `Publish` call. It must not be populated by the\npublisher in a `Publish` call.",
                     "format": "google-datetime",
                     "type": "string"
+                },
+                "data": {
+                    "description": "The message payload. For JSON requests, the value of this field must be\n[base64-encoded](https://tools.ietf.org/html/rfc4648).",
+                    "format": "byte",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -773,20 +773,16 @@
             },
             "type": "object"
         },
-        "ListTopicsResponse": {
-            "description": "Response for the `ListTopics` method.",
-            "id": "ListTopicsResponse",
+        "AcknowledgeRequest": {
+            "description": "Request for the Acknowledge method.",
+            "id": "AcknowledgeRequest",
             "properties": {
-                "topics": {
-                    "description": "The resulting topics.",
+                "ackIds": {
+                    "description": "The acknowledgment ID for the messages being acknowledged that was returned\nby the Pub/Sub system in the `Pull` response. Must not be empty.",
                     "items": {
-                        "$ref": "Topic"
+                        "type": "string"
                     },
                     "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "If not empty, indicates that there may be more topics that match the\nrequest; this value should be passed in a new `ListTopicsRequest`.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -797,14 +793,18 @@
             "properties": {},
             "type": "object"
         },
-        "AcknowledgeRequest": {
-            "description": "Request for the Acknowledge method.",
-            "id": "AcknowledgeRequest",
+        "ListTopicsResponse": {
+            "description": "Response for the `ListTopics` method.",
+            "id": "ListTopicsResponse",
             "properties": {
-                "ackIds": {
-                    "description": "The acknowledgment ID for the messages being acknowledged that was returned\nby the Pub/Sub system in the `Pull` response. Must not be empty.",
+                "nextPageToken": {
+                    "description": "If not empty, indicates that there may be more topics that match the\nrequest; this value should be passed in a new `ListTopicsRequest`.",
+                    "type": "string"
+                },
+                "topics": {
+                    "description": "The resulting topics.",
                     "items": {
-                        "type": "string"
+                        "$ref": "Topic"
                     },
                     "type": "array"
                 }
@@ -956,6 +956,14 @@
             "description": "A subscription resource.",
             "id": "Subscription",
             "properties": {
+                "topic": {
+                    "description": "The name of the topic from which this subscription is receiving messages.\nThe value of this field will be `_deleted-topic_` if the topic has been\ndeleted.",
+                    "type": "string"
+                },
+                "pushConfig": {
+                    "$ref": "PushConfig",
+                    "description": "If push delivery is used with this subscription, this field is\nused to configure it. An empty `pushConfig` signifies that the subscriber\nwill pull and ack messages using API methods."
+                },
                 "ackDeadlineSeconds": {
                     "description": "This value is the maximum time after a subscriber receives a message\nbefore the subscriber should acknowledge the message. After message\ndelivery but before the ack deadline expires and before the message is\nacknowledged, it is an outstanding message and will not be delivered\nagain during that time (on a best-effort basis).\n\nFor pull subscriptions, this value is used as the initial value for the ack\ndeadline. To override this value for a given message, call\n`ModifyAckDeadline` with the corresponding `ack_id` if using pull.\nThe maximum custom deadline you can specify is 600 seconds (10 minutes).\n\nFor push delivery, this value is also used to set the request timeout for\nthe call to the push endpoint.\n\nIf the subscriber never acknowledges the message, the Pub/Sub\nsystem will eventually redeliver the message.\n\nIf this parameter is 0, a default value of 10 seconds is used.",
                     "format": "int32",
@@ -964,14 +972,6 @@
                 "name": {
                     "description": "The name of the subscription. It must have the format\n`\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must\nstart with a letter, and contain only letters (`[A-Za-z]`), numbers\n(`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),\nplus (`+`) or percent signs (`%`). It must be between 3 and 255 characters\nin length, and it must not start with `\"goog\"`.",
                     "type": "string"
-                },
-                "topic": {
-                    "description": "The name of the topic from which this subscription is receiving messages.\nThe value of this field will be `_deleted-topic_` if the topic has been\ndeleted.",
-                    "type": "string"
-                },
-                "pushConfig": {
-                    "$ref": "PushConfig",
-                    "description": "If push delivery is used with this subscription, this field is\nused to configure it. An empty `pushConfig` signifies that the subscriber\nwill pull and ack messages using API methods."
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis_beta/runtimeconfig__v1beta1.json b/discovery/googleapis_beta/runtimeconfig__v1beta1.json
index 5a90b2a..97dc439 100644
--- a/discovery/googleapis_beta/runtimeconfig__v1beta1.json
+++ b/discovery/googleapis_beta/runtimeconfig__v1beta1.json
@@ -2,11 +2,11 @@
     "auth": {
         "oauth2": {
             "scopes": {
-                "https://www.googleapis.com/auth/cloud-platform": {
-                    "description": "View and manage your data across Google Cloud Platform services"
-                },
                 "https://www.googleapis.com/auth/cloudruntimeconfig": {
                     "description": "Manage your Google Cloud Platform services' runtime configuration"
+                },
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "View and manage your data across Google Cloud Platform services"
                 }
             }
         }
@@ -28,27 +28,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -60,13 +39,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "uploadType": {
+            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "uploadType": {
-            "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
@@ -104,13 +83,34 @@
             "location": "query",
             "type": "string"
         },
+        "key": {
+            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+            "location": "query",
+            "type": "string"
+        },
         "access_token": {
             "description": "OAuth access token.",
             "location": "query",
             "type": "string"
         },
-        "key": {
-            "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
             "location": "query",
             "type": "string"
         }
@@ -121,6 +121,145 @@
             "resources": {
                 "configs": {
                     "methods": {
+                        "setIamPolicy": {
+                            "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.",
+                            "httpMethod": "POST",
+                            "id": "runtimeconfig.projects.configs.setIamPolicy",
+                            "parameterOrder": [
+                                "resource"
+                            ],
+                            "parameters": {
+                                "resource": {
+                                    "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/configs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta1/{+resource}:setIamPolicy",
+                            "request": {
+                                "$ref": "SetIamPolicyRequest"
+                            },
+                            "response": {
+                                "$ref": "Policy"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloudruntimeconfig"
+                            ]
+                        },
+                        "create": {
+                            "description": "Creates a new RuntimeConfig resource. The configuration name must be\nunique within project.",
+                            "httpMethod": "POST",
+                            "id": "runtimeconfig.projects.configs.create",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "requestId": {
+                                    "description": "An optional but recommended unique `request_id`. If the server\nreceives two `create()` requests  with the same\n`request_id`, then the second request will be ignored and the\nfirst resource created and stored in the backend is returned.\nEmpty `request_id` fields are ignored.\n\nIt is responsibility of the client to ensure uniqueness of the\n`request_id` strings.\n\n`request_id` strings are limited to 64 characters.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "parent": {
+                                    "description": "The [project ID](https://support.google.com/cloud/answer/6158840?hl=en&ref_topic=6158848)\nfor this request, in the format `projects/[PROJECT_ID]`.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta1/{+parent}/configs",
+                            "request": {
+                                "$ref": "RuntimeConfig"
+                            },
+                            "response": {
+                                "$ref": "RuntimeConfig"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloudruntimeconfig"
+                            ]
+                        },
+                        "getIamPolicy": {
+                            "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
+                            "httpMethod": "GET",
+                            "id": "runtimeconfig.projects.configs.getIamPolicy",
+                            "parameterOrder": [
+                                "resource"
+                            ],
+                            "parameters": {
+                                "resource": {
+                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/configs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta1/{+resource}:getIamPolicy",
+                            "response": {
+                                "$ref": "Policy"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloudruntimeconfig"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets information about a RuntimeConfig resource.",
+                            "httpMethod": "GET",
+                            "id": "runtimeconfig.projects.configs.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The name of the RuntimeConfig resource to retrieve, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/configs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta1/{+name}",
+                            "response": {
+                                "$ref": "RuntimeConfig"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloudruntimeconfig"
+                            ]
+                        },
+                        "update": {
+                            "description": "Updates a RuntimeConfig resource. The configuration must exist beforehand.",
+                            "httpMethod": "PUT",
+                            "id": "runtimeconfig.projects.configs.update",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The name of the RuntimeConfig resource to update, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/configs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1beta1/{+name}",
+                            "request": {
+                                "$ref": "RuntimeConfig"
+                            },
+                            "response": {
+                                "$ref": "RuntimeConfig"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform",
+                                "https://www.googleapis.com/auth/cloudruntimeconfig"
+                            ]
+                        },
                         "testIamPermissions": {
                             "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.",
                             "httpMethod": "POST",
@@ -209,154 +348,15 @@
                                 "https://www.googleapis.com/auth/cloud-platform",
                                 "https://www.googleapis.com/auth/cloudruntimeconfig"
                             ]
-                        },
-                        "create": {
-                            "description": "Creates a new RuntimeConfig resource. The configuration name must be\nunique within project.",
-                            "httpMethod": "POST",
-                            "id": "runtimeconfig.projects.configs.create",
-                            "parameterOrder": [
-                                "parent"
-                            ],
-                            "parameters": {
-                                "requestId": {
-                                    "description": "An optional but recommended unique `request_id`. If the server\nreceives two `create()` requests  with the same\n`request_id`, then the second request will be ignored and the\nfirst resource created and stored in the backend is returned.\nEmpty `request_id` fields are ignored.\n\nIt is responsibility of the client to ensure uniqueness of the\n`request_id` strings.\n\n`request_id` strings are limited to 64 characters.",
-                                    "location": "query",
-                                    "type": "string"
-                                },
-                                "parent": {
-                                    "description": "The [project ID](https://support.google.com/cloud/answer/6158840?hl=en&ref_topic=6158848)\nfor this request, in the format `projects/[PROJECT_ID]`.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta1/{+parent}/configs",
-                            "request": {
-                                "$ref": "RuntimeConfig"
-                            },
-                            "response": {
-                                "$ref": "RuntimeConfig"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloudruntimeconfig"
-                            ]
-                        },
-                        "setIamPolicy": {
-                            "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.",
-                            "httpMethod": "POST",
-                            "id": "runtimeconfig.projects.configs.setIamPolicy",
-                            "parameterOrder": [
-                                "resource"
-                            ],
-                            "parameters": {
-                                "resource": {
-                                    "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/configs/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta1/{+resource}:setIamPolicy",
-                            "request": {
-                                "$ref": "SetIamPolicyRequest"
-                            },
-                            "response": {
-                                "$ref": "Policy"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloudruntimeconfig"
-                            ]
-                        },
-                        "getIamPolicy": {
-                            "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
-                            "httpMethod": "GET",
-                            "id": "runtimeconfig.projects.configs.getIamPolicy",
-                            "parameterOrder": [
-                                "resource"
-                            ],
-                            "parameters": {
-                                "resource": {
-                                    "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/configs/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta1/{+resource}:getIamPolicy",
-                            "response": {
-                                "$ref": "Policy"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloudruntimeconfig"
-                            ]
-                        },
-                        "get": {
-                            "description": "Gets information about a RuntimeConfig resource.",
-                            "httpMethod": "GET",
-                            "id": "runtimeconfig.projects.configs.get",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "The name of the RuntimeConfig resource to retrieve, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/configs/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta1/{+name}",
-                            "response": {
-                                "$ref": "RuntimeConfig"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloudruntimeconfig"
-                            ]
-                        },
-                        "update": {
-                            "description": "Updates a RuntimeConfig resource. The configuration must exist beforehand.",
-                            "httpMethod": "PUT",
-                            "id": "runtimeconfig.projects.configs.update",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "The name of the RuntimeConfig resource to update, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`",
-                                    "location": "path",
-                                    "pattern": "^projects/[^/]+/configs/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1beta1/{+name}",
-                            "request": {
-                                "$ref": "RuntimeConfig"
-                            },
-                            "response": {
-                                "$ref": "RuntimeConfig"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform",
-                                "https://www.googleapis.com/auth/cloudruntimeconfig"
-                            ]
                         }
                     },
                     "resources": {
-                        "waiters": {
+                        "variables": {
                             "methods": {
                                 "testIamPermissions": {
                                     "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.",
                                     "httpMethod": "POST",
-                                    "id": "runtimeconfig.projects.configs.waiters.testIamPermissions",
+                                    "id": "runtimeconfig.projects.configs.variables.testIamPermissions",
                                     "parameterOrder": [
                                         "resource"
                                     ],
@@ -364,7 +364,7 @@
                                         "resource": {
                                             "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
                                             "location": "path",
-                                            "pattern": "^projects/[^/]+/configs/[^/]+/waiters/[^/]+$",
+                                            "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$",
                                             "required": true,
                                             "type": "string"
                                         }
@@ -382,6 +382,200 @@
                                     ]
                                 },
                                 "delete": {
+                                    "description": "Deletes a variable or multiple variables.\n\nIf you specify a variable name, then that variable is deleted. If you\nspecify a prefix and `recursive` is true, then all variables with that\nprefix are deleted. You must set a `recursive` to true if you delete\nvariables by prefix.",
+                                    "httpMethod": "DELETE",
+                                    "id": "runtimeconfig.projects.configs.variables.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "recursive": {
+                                            "description": "Set to `true` to recursively delete multiple variables with the same\nprefix.",
+                                            "location": "query",
+                                            "type": "boolean"
+                                        },
+                                        "name": {
+                                            "description": "The name of the variable to delete, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+name}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudruntimeconfig"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists variables within given a configuration, matching any provided filters.\nThis only lists variable names, not the values, unless `return_values` is\ntrue, in which case only variables that user has IAM permission to GetVariable\nwill be returned.",
+                                    "httpMethod": "GET",
+                                    "id": "runtimeconfig.projects.configs.variables.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "The path to the RuntimeConfig resource for which you want to list variables.\nThe configuration must exist beforehand; the path must be in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/configs/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "filter": {
+                                            "description": "Filters variables by matching the specified filter. For example:\n\n`projects/example-project/config/[CONFIG_NAME]/variables/example-variable`.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "returnValues": {
+                                            "description": "The flag indicates whether the user wants to return values of variables.\nIf true, then only those variables that user has IAM GetVariable permission\nwill be returned along with their values.",
+                                            "location": "query",
+                                            "type": "boolean"
+                                        },
+                                        "pageToken": {
+                                            "description": "Specifies a page token to use. Set `pageToken` to a `nextPageToken`\nreturned by a previous list request to get the next page of results.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Specifies the number of results to return per page. If there are fewer\nelements than the specified number, returns all elements.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+parent}/variables",
+                                    "response": {
+                                        "$ref": "ListVariablesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudruntimeconfig"
+                                    ]
+                                },
+                                "create": {
+                                    "description": "Creates a variable within the given configuration. You cannot create\na variable with a name that is a prefix of an existing variable name, or a\nname that has an existing variable name as a prefix.\n\nTo learn more about creating a variable, read the\n[Setting and Getting Data](/deployment-manager/runtime-configurator/set-and-get-variables)\ndocumentation.",
+                                    "httpMethod": "POST",
+                                    "id": "runtimeconfig.projects.configs.variables.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "The path to the RutimeConfig resource that this variable should belong to.\nThe configuration must exist beforehand; the path must be in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/configs/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "requestId": {
+                                            "description": "An optional but recommended unique `request_id`. If the server\nreceives two `create()` requests  with the same\n`request_id`, then the second request will be ignored and the\nfirst resource created and stored in the backend is returned.\nEmpty `request_id` fields are ignored.\n\nIt is responsibility of the client to ensure uniqueness of the\n`request_id` strings.\n\n`request_id` strings are limited to 64 characters.",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+parent}/variables",
+                                    "request": {
+                                        "$ref": "Variable"
+                                    },
+                                    "response": {
+                                        "$ref": "Variable"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudruntimeconfig"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Gets information about a single variable.",
+                                    "httpMethod": "GET",
+                                    "id": "runtimeconfig.projects.configs.variables.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the variable to return, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIBLE_NAME]`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+name}",
+                                    "response": {
+                                        "$ref": "Variable"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudruntimeconfig"
+                                    ]
+                                },
+                                "watch": {
+                                    "description": "Watches a specific variable and waits for a change in the variable's value.\nWhen there is a change, this method returns the new value or times out.\n\nIf a variable is deleted while being watched, the `variableState` state is\nset to `DELETED` and the method returns the last known variable `value`.\n\nIf you set the deadline for watching to a larger value than internal timeout\n(60 seconds), the current variable value is returned and the `variableState`\nwill be `VARIABLE_STATE_UNSPECIFIED`.\n\nTo learn more about creating a watcher, read the\n[Watching a Variable for Changes](/deployment-manager/runtime-configurator/watching-a-variable)\ndocumentation.",
+                                    "httpMethod": "POST",
+                                    "id": "runtimeconfig.projects.configs.variables.watch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the variable to watch, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+name}:watch",
+                                    "request": {
+                                        "$ref": "WatchVariableRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Variable"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudruntimeconfig"
+                                    ]
+                                },
+                                "update": {
+                                    "description": "Updates an existing variable with a new value.",
+                                    "httpMethod": "PUT",
+                                    "id": "runtimeconfig.projects.configs.variables.update",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the variable to update, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+name}",
+                                    "request": {
+                                        "$ref": "Variable"
+                                    },
+                                    "response": {
+                                        "$ref": "Variable"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudruntimeconfig"
+                                    ]
+                                }
+                            }
+                        },
+                        "waiters": {
+                            "methods": {
+                                "delete": {
                                     "description": "Deletes the waiter with the specified name.",
                                     "httpMethod": "DELETE",
                                     "id": "runtimeconfig.projects.configs.waiters.delete",
@@ -499,6 +693,34 @@
                                         "https://www.googleapis.com/auth/cloud-platform",
                                         "https://www.googleapis.com/auth/cloudruntimeconfig"
                                     ]
+                                },
+                                "testIamPermissions": {
+                                    "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.",
+                                    "httpMethod": "POST",
+                                    "id": "runtimeconfig.projects.configs.waiters.testIamPermissions",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/configs/[^/]+/waiters/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta1/{+resource}:testIamPermissions",
+                                    "request": {
+                                        "$ref": "TestIamPermissionsRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "TestIamPermissionsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudruntimeconfig"
+                                    ]
                                 }
                             }
                         },
@@ -558,237 +780,252 @@
                                     ]
                                 }
                             }
-                        },
-                        "variables": {
-                            "methods": {
-                                "testIamPermissions": {
-                                    "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.",
-                                    "httpMethod": "POST",
-                                    "id": "runtimeconfig.projects.configs.variables.testIamPermissions",
-                                    "parameterOrder": [
-                                        "resource"
-                                    ],
-                                    "parameters": {
-                                        "resource": {
-                                            "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta1/{+resource}:testIamPermissions",
-                                    "request": {
-                                        "$ref": "TestIamPermissionsRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "TestIamPermissionsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloudruntimeconfig"
-                                    ]
-                                },
-                                "delete": {
-                                    "description": "Deletes a variable or multiple variables.\n\nIf you specify a variable name, then that variable is deleted. If you\nspecify a prefix and `recursive` is true, then all variables with that\nprefix are deleted. You must set a `recursive` to true if you delete\nvariables by prefix.",
-                                    "httpMethod": "DELETE",
-                                    "id": "runtimeconfig.projects.configs.variables.delete",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "recursive": {
-                                            "description": "Set to `true` to recursively delete multiple variables with the same\nprefix.",
-                                            "location": "query",
-                                            "type": "boolean"
-                                        },
-                                        "name": {
-                                            "description": "The name of the variable to delete, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta1/{+name}",
-                                    "response": {
-                                        "$ref": "Empty"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloudruntimeconfig"
-                                    ]
-                                },
-                                "list": {
-                                    "description": "Lists variables within given a configuration, matching any provided filters.\nThis only lists variable names, not the values, unless `return_values` is\ntrue, in which case only variables that user has IAM permission to GetVariable\nwill be returned.",
-                                    "httpMethod": "GET",
-                                    "id": "runtimeconfig.projects.configs.variables.list",
-                                    "parameterOrder": [
-                                        "parent"
-                                    ],
-                                    "parameters": {
-                                        "filter": {
-                                            "description": "Filters variables by matching the specified filter. For example:\n\n`projects/example-project/config/[CONFIG_NAME]/variables/example-variable`.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "returnValues": {
-                                            "description": "The flag indicates whether the user wants to return values of variables.\nIf true, then only those variables that user has IAM GetVariable permission\nwill be returned along with their values.",
-                                            "location": "query",
-                                            "type": "boolean"
-                                        },
-                                        "pageToken": {
-                                            "description": "Specifies a page token to use. Set `pageToken` to a `nextPageToken`\nreturned by a previous list request to get the next page of results.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "pageSize": {
-                                            "description": "Specifies the number of results to return per page. If there are fewer\nelements than the specified number, returns all elements.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "parent": {
-                                            "description": "The path to the RuntimeConfig resource for which you want to list variables.\nThe configuration must exist beforehand; the path must be in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/configs/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta1/{+parent}/variables",
-                                    "response": {
-                                        "$ref": "ListVariablesResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloudruntimeconfig"
-                                    ]
-                                },
-                                "create": {
-                                    "description": "Creates a variable within the given configuration. You cannot create\na variable with a name that is a prefix of an existing variable name, or a\nname that has an existing variable name as a prefix.\n\nTo learn more about creating a variable, read the\n[Setting and Getting Data](/deployment-manager/runtime-configurator/set-and-get-variables)\ndocumentation.",
-                                    "httpMethod": "POST",
-                                    "id": "runtimeconfig.projects.configs.variables.create",
-                                    "parameterOrder": [
-                                        "parent"
-                                    ],
-                                    "parameters": {
-                                        "requestId": {
-                                            "description": "An optional but recommended unique `request_id`. If the server\nreceives two `create()` requests  with the same\n`request_id`, then the second request will be ignored and the\nfirst resource created and stored in the backend is returned.\nEmpty `request_id` fields are ignored.\n\nIt is responsibility of the client to ensure uniqueness of the\n`request_id` strings.\n\n`request_id` strings are limited to 64 characters.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "parent": {
-                                            "description": "The path to the RutimeConfig resource that this variable should belong to.\nThe configuration must exist beforehand; the path must be in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/configs/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta1/{+parent}/variables",
-                                    "request": {
-                                        "$ref": "Variable"
-                                    },
-                                    "response": {
-                                        "$ref": "Variable"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloudruntimeconfig"
-                                    ]
-                                },
-                                "get": {
-                                    "description": "Gets information about a single variable.",
-                                    "httpMethod": "GET",
-                                    "id": "runtimeconfig.projects.configs.variables.get",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "The name of the variable to return, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIBLE_NAME]`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta1/{+name}",
-                                    "response": {
-                                        "$ref": "Variable"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloudruntimeconfig"
-                                    ]
-                                },
-                                "watch": {
-                                    "description": "Watches a specific variable and waits for a change in the variable's value.\nWhen there is a change, this method returns the new value or times out.\n\nIf a variable is deleted while being watched, the `variableState` state is\nset to `DELETED` and the method returns the last known variable `value`.\n\nIf you set the deadline for watching to a larger value than internal timeout\n(60 seconds), the current variable value is returned and the `variableState`\nwill be `VARIABLE_STATE_UNSPECIFIED`.\n\nTo learn more about creating a watcher, read the\n[Watching a Variable for Changes](/deployment-manager/runtime-configurator/watching-a-variable)\ndocumentation.",
-                                    "httpMethod": "POST",
-                                    "id": "runtimeconfig.projects.configs.variables.watch",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "The name of the variable to watch, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta1/{+name}:watch",
-                                    "request": {
-                                        "$ref": "WatchVariableRequest"
-                                    },
-                                    "response": {
-                                        "$ref": "Variable"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloudruntimeconfig"
-                                    ]
-                                },
-                                "update": {
-                                    "description": "Updates an existing variable with a new value.",
-                                    "httpMethod": "PUT",
-                                    "id": "runtimeconfig.projects.configs.variables.update",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "The name of the variable to update, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta1/{+name}",
-                                    "request": {
-                                        "$ref": "Variable"
-                                    },
-                                    "response": {
-                                        "$ref": "Variable"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform",
-                                        "https://www.googleapis.com/auth/cloudruntimeconfig"
-                                    ]
-                                }
-                            }
                         }
                     }
                 }
             }
         }
     },
-    "revision": "20171002",
+    "revision": "20171019",
     "rootUrl": "https://runtimeconfig.googleapis.com/",
     "schemas": {
+        "EndCondition": {
+            "description": "The condition that a Waiter resource is waiting for.",
+            "id": "EndCondition",
+            "properties": {
+                "cardinality": {
+                    "$ref": "Cardinality",
+                    "description": "The cardinality of the `EndCondition`."
+                }
+            },
+            "type": "object"
+        },
+        "TestIamPermissionsResponse": {
+            "description": "Response message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsResponse",
+            "properties": {
+                "permissions": {
+                    "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListVariablesResponse": {
+            "description": "Response for the `ListVariables()` method.",
+            "id": "ListVariablesResponse",
+            "properties": {
+                "variables": {
+                    "description": "A list of variables and their values. The order of returned variable\nobjects is arbitrary.",
+                    "items": {
+                        "$ref": "Variable"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "This token allows you to get the next page of results for list requests.\nIf the number of results is larger than `pageSize`, use the `nextPageToken`\nas a value for the query parameter `pageToken` in the next list request.\nSubsequent list requests will have their own `nextPageToken` to continue\npaging through the results",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "RuntimeConfig": {
+            "description": "A RuntimeConfig resource is the primary resource in the Cloud RuntimeConfig\nservice. A RuntimeConfig resource consists of metadata and a hierarchy of\nvariables.",
+            "id": "RuntimeConfig",
+            "properties": {
+                "name": {
+                    "description": "The resource name of a runtime config. The name must have the format:\n\n    projects/[PROJECT_ID]/configs/[CONFIG_NAME]\n\nThe `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an\narbitrary name that matches RFC 1035 segment specification. The length of\n`[CONFIG_NAME]` must be less than 64 bytes.\n\nYou pick the RuntimeConfig resource name, but the server will validate that\nthe name adheres to this format. After you create the resource, you cannot\nchange the resource's name.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "An optional description of the RuntimeConfig object.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "WatchVariableRequest": {
+            "description": "Request for the `WatchVariable()` method.",
+            "id": "WatchVariableRequest",
+            "properties": {
+                "newerThan": {
+                    "description": "If specified, checks the current timestamp of the variable and if the\ncurrent timestamp is newer than `newerThan` timestamp, the method returns\nimmediately.\n\nIf not specified or the variable has an older timestamp, the watcher waits\nfor a the value to change before returning.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListWaitersResponse": {
+            "description": "Response for the `ListWaiters()` method.\nOrder of returned waiter objects is arbitrary.",
+            "id": "ListWaitersResponse",
+            "properties": {
+                "waiters": {
+                    "description": "Found waiters in the project.",
+                    "items": {
+                        "$ref": "Waiter"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "This token allows you to get the next page of results for list requests.\nIf the number of results is larger than `pageSize`, use the `nextPageToken`\nas a value for the query parameter `pageToken` in the next list request.\nSubsequent list requests will have their own `nextPageToken` to continue\npaging through the results",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TestIamPermissionsRequest": {
+            "description": "Request message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsRequest",
+            "properties": {
+                "permissions": {
+                    "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Waiter": {
+            "description": "A Waiter resource waits for some end condition within a RuntimeConfig resource\nto be met before it returns. For example, assume you have a distributed\nsystem where each node writes to a Variable resource indidicating the node's\nreadiness as part of the startup process.\n\nYou then configure a Waiter resource with the success condition set to wait\nuntil some number of nodes have checked in. Afterwards, your application\nruns some arbitrary code after the condition has been met and the waiter\nreturns successfully.\n\nOnce created, a Waiter resource is immutable.\n\nTo learn more about using waiters, read the\n[Creating a Waiter](/deployment-manager/runtime-configurator/creating-a-waiter)\ndocumentation.",
+            "id": "Waiter",
+            "properties": {
+                "success": {
+                    "$ref": "EndCondition",
+                    "description": "[Required] The success condition. If this condition is met, `done` will be\nset to `true` and the `error` value will remain unset. The failure condition\ntakes precedence over the success condition. If both conditions are met, a\nfailure will be indicated."
+                },
+                "done": {
+                    "description": "[Output Only] If the value is `false`, it means the waiter is still waiting\nfor one of its conditions to be met.\n\nIf true, the waiter has finished. If the waiter finished due to a timeout\nor failure, `error` will be set.",
+                    "type": "boolean"
+                },
+                "createTime": {
+                    "description": "[Output Only] The instant at which this Waiter resource was created. Adding\nthe value of `timeout` to this instant yields the timeout deadline for the\nwaiter.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "timeout": {
+                    "description": "[Required] Specifies the timeout of the waiter in seconds, beginning from\nthe instant that `waiters().create` method is called. If this time elapses\nbefore the success or failure conditions are met, the waiter fails and sets\nthe `error` code to `DEADLINE_EXCEEDED`.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The name of the Waiter resource, in the format:\n\n    projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]\n\nThe `[PROJECT_ID]` must be a valid Google Cloud project ID,\nthe `[CONFIG_NAME]` must be a valid RuntimeConfig resource, the\n`[WAITER_NAME]` must match RFC 1035 segment specification, and the length\nof `[WAITER_NAME]` must be less than 64 bytes.\n\nAfter you create a Waiter resource, you cannot change the resource name.",
+                    "type": "string"
+                },
+                "error": {
+                    "$ref": "Status",
+                    "description": "[Output Only] If the waiter ended due to a failure or timeout, this value\nwill be set."
+                },
+                "failure": {
+                    "$ref": "EndCondition",
+                    "description": "[Optional] The failure condition of this waiter. If this condition is met,\n`done` will be set to `true` and the `error` code will be set to `ABORTED`.\nThe failure condition takes precedence over the success condition. If both\nconditions are met, a failure will be indicated. This value is optional; if\nno failure condition is set, the only failure scenario will be a timeout."
+                }
+            },
+            "type": "object"
+        },
+        "Variable": {
+            "description": "Describes a single variable within a RuntimeConfig resource.\nThe name denotes the hierarchical variable name. For example,\n`ports/serving_port` is a valid variable name. The variable value is an\nopaque string and only leaf variables can have values (that is, variables\nthat do not have any child variables).",
+            "id": "Variable",
+            "properties": {
+                "value": {
+                    "description": "The binary value of the variable. The length of the value must be less\nthan 4096 bytes. Empty values are also accepted. The value must be\nbase64 encoded. Only one of `value` or `text` can be set.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "[Ouput only] The current state of the variable. The variable state indicates\nthe outcome of the `variables().watch` call and is visible through the\n`get` and `list` calls.",
+                    "enum": [
+                        "VARIABLE_STATE_UNSPECIFIED",
+                        "UPDATED",
+                        "DELETED"
+                    ],
+                    "enumDescriptions": [
+                        "Default variable state.",
+                        "The variable was updated, while `variables().watch` was executing.",
+                        "The variable was deleted, while `variables().watch` was executing."
+                    ],
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "[Output Only] The time of the last variable update.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The name of the variable resource, in the format:\n\n    projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]\n\nThe `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a\nvalid RuntimeConfig reource and `[VARIABLE_NAME]` follows Unix file system\nfile path naming.\n\nThe `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and\ndashes. Slashes are used as path element separators and are not part of the\n`[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one\nnon-slash character. Multiple slashes are coalesced into single slash\ncharacter. Each path segment should follow RFC 1035 segment specification.\nThe length of a `[VARIABLE_NAME]` must be less than 256 bytes.\n\nOnce you create a variable, you cannot change the variable name.",
+                    "type": "string"
+                },
+                "text": {
+                    "description": "The string value of the variable. The length of the value must be less\nthan 4096 bytes. Empty values are also accepted. For example,\n`text: \"my text value\"`. The string must be valid UTF-8.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Policy": {
+            "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
+            "id": "Policy",
+            "properties": {
+                "etag": {
+                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "version": {
+                    "description": "Version of the `Policy`. The default version is 0.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "bindings": {
+                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
+                    "items": {
+                        "$ref": "Binding"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+            "id": "Operation",
+            "properties": {
+                "done": {
+                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+                    "type": "boolean"
+                },
+                "response": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+                    "type": "string"
+                },
+                "error": {
+                    "$ref": "Status",
+                    "description": "The error result of the operation in case of failure or cancellation."
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
         "SetIamPolicyRequest": {
             "description": "Request message for `SetIamPolicy` method.",
             "id": "SetIamPolicyRequest",
@@ -804,6 +1041,11 @@
             "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
             "id": "Status",
             "properties": {
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "message": {
                     "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
                     "type": "string"
@@ -818,11 +1060,6 @@
                         "type": "object"
                     },
                     "type": "array"
-                },
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
                 }
             },
             "type": "object"
@@ -884,243 +1121,6 @@
                 }
             },
             "type": "object"
-        },
-        "EndCondition": {
-            "description": "The condition that a Waiter resource is waiting for.",
-            "id": "EndCondition",
-            "properties": {
-                "cardinality": {
-                    "$ref": "Cardinality",
-                    "description": "The cardinality of the `EndCondition`."
-                }
-            },
-            "type": "object"
-        },
-        "TestIamPermissionsResponse": {
-            "description": "Response message for `TestIamPermissions` method.",
-            "id": "TestIamPermissionsResponse",
-            "properties": {
-                "permissions": {
-                    "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "ListVariablesResponse": {
-            "description": "Response for the `ListVariables()` method.",
-            "id": "ListVariablesResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "This token allows you to get the next page of results for list requests.\nIf the number of results is larger than `pageSize`, use the `nextPageToken`\nas a value for the query parameter `pageToken` in the next list request.\nSubsequent list requests will have their own `nextPageToken` to continue\npaging through the results",
-                    "type": "string"
-                },
-                "variables": {
-                    "description": "A list of variables and their values. The order of returned variable\nobjects is arbitrary.",
-                    "items": {
-                        "$ref": "Variable"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "RuntimeConfig": {
-            "description": "A RuntimeConfig resource is the primary resource in the Cloud RuntimeConfig\nservice. A RuntimeConfig resource consists of metadata and a hierarchy of\nvariables.",
-            "id": "RuntimeConfig",
-            "properties": {
-                "description": {
-                    "description": "An optional description of the RuntimeConfig object.",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The resource name of a runtime config. The name must have the format:\n\n    projects/[PROJECT_ID]/configs/[CONFIG_NAME]\n\nThe `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an\narbitrary name that matches RFC 1035 segment specification. The length of\n`[CONFIG_NAME]` must be less than 64 bytes.\n\nYou pick the RuntimeConfig resource name, but the server will validate that\nthe name adheres to this format. After you create the resource, you cannot\nchange the resource's name.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "WatchVariableRequest": {
-            "description": "Request for the `WatchVariable()` method.",
-            "id": "WatchVariableRequest",
-            "properties": {
-                "newerThan": {
-                    "description": "If specified, checks the current timestamp of the variable and if the\ncurrent timestamp is newer than `newerThan` timestamp, the method returns\nimmediately.\n\nIf not specified or the variable has an older timestamp, the watcher waits\nfor a the value to change before returning.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListWaitersResponse": {
-            "description": "Response for the `ListWaiters()` method.\nOrder of returned waiter objects is arbitrary.",
-            "id": "ListWaitersResponse",
-            "properties": {
-                "nextPageToken": {
-                    "description": "This token allows you to get the next page of results for list requests.\nIf the number of results is larger than `pageSize`, use the `nextPageToken`\nas a value for the query parameter `pageToken` in the next list request.\nSubsequent list requests will have their own `nextPageToken` to continue\npaging through the results",
-                    "type": "string"
-                },
-                "waiters": {
-                    "description": "Found waiters in the project.",
-                    "items": {
-                        "$ref": "Waiter"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "TestIamPermissionsRequest": {
-            "description": "Request message for `TestIamPermissions` method.",
-            "id": "TestIamPermissionsRequest",
-            "properties": {
-                "permissions": {
-                    "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Waiter": {
-            "description": "A Waiter resource waits for some end condition within a RuntimeConfig resource\nto be met before it returns. For example, assume you have a distributed\nsystem where each node writes to a Variable resource indidicating the node's\nreadiness as part of the startup process.\n\nYou then configure a Waiter resource with the success condition set to wait\nuntil some number of nodes have checked in. Afterwards, your application\nruns some arbitrary code after the condition has been met and the waiter\nreturns successfully.\n\nOnce created, a Waiter resource is immutable.\n\nTo learn more about using waiters, read the\n[Creating a Waiter](/deployment-manager/runtime-configurator/creating-a-waiter)\ndocumentation.",
-            "id": "Waiter",
-            "properties": {
-                "error": {
-                    "$ref": "Status",
-                    "description": "[Output Only] If the waiter ended due to a failure or timeout, this value\nwill be set."
-                },
-                "failure": {
-                    "$ref": "EndCondition",
-                    "description": "[Optional] The failure condition of this waiter. If this condition is met,\n`done` will be set to `true` and the `error` code will be set to `ABORTED`.\nThe failure condition takes precedence over the success condition. If both\nconditions are met, a failure will be indicated. This value is optional; if\nno failure condition is set, the only failure scenario will be a timeout."
-                },
-                "success": {
-                    "$ref": "EndCondition",
-                    "description": "[Required] The success condition. If this condition is met, `done` will be\nset to `true` and the `error` value will remain unset. The failure condition\ntakes precedence over the success condition. If both conditions are met, a\nfailure will be indicated."
-                },
-                "done": {
-                    "description": "[Output Only] If the value is `false`, it means the waiter is still waiting\nfor one of its conditions to be met.\n\nIf true, the waiter has finished. If the waiter finished due to a timeout\nor failure, `error` will be set.",
-                    "type": "boolean"
-                },
-                "createTime": {
-                    "description": "[Output Only] The instant at which this Waiter resource was created. Adding\nthe value of `timeout` to this instant yields the timeout deadline for the\nwaiter.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "timeout": {
-                    "description": "[Required] Specifies the timeout of the waiter in seconds, beginning from\nthe instant that `waiters().create` method is called. If this time elapses\nbefore the success or failure conditions are met, the waiter fails and sets\nthe `error` code to `DEADLINE_EXCEEDED`.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of the Waiter resource, in the format:\n\n    projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]\n\nThe `[PROJECT_ID]` must be a valid Google Cloud project ID,\nthe `[CONFIG_NAME]` must be a valid RuntimeConfig resource, the\n`[WAITER_NAME]` must match RFC 1035 segment specification, and the length\nof `[WAITER_NAME]` must be less than 64 bytes.\n\nAfter you create a Waiter resource, you cannot change the resource name.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Policy": {
-            "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).",
-            "id": "Policy",
-            "properties": {
-                "etag": {
-                    "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
-                    "format": "byte",
-                    "type": "string"
-                },
-                "version": {
-                    "description": "Version of the `Policy`. The default version is 0.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "bindings": {
-                    "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
-                    "items": {
-                        "$ref": "Binding"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "Variable": {
-            "description": "Describes a single variable within a RuntimeConfig resource.\nThe name denotes the hierarchical variable name. For example,\n`ports/serving_port` is a valid variable name. The variable value is an\nopaque string and only leaf variables can have values (that is, variables\nthat do not have any child variables).",
-            "id": "Variable",
-            "properties": {
-                "state": {
-                    "description": "[Ouput only] The current state of the variable. The variable state indicates\nthe outcome of the `variables().watch` call and is visible through the\n`get` and `list` calls.",
-                    "enum": [
-                        "VARIABLE_STATE_UNSPECIFIED",
-                        "UPDATED",
-                        "DELETED"
-                    ],
-                    "enumDescriptions": [
-                        "Default variable state.",
-                        "The variable was updated, while `variables().watch` was executing.",
-                        "The variable was deleted, while `variables().watch` was executing."
-                    ],
-                    "type": "string"
-                },
-                "updateTime": {
-                    "description": "[Output Only] The time of the last variable update.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The name of the variable resource, in the format:\n\n    projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]\n\nThe `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a\nvalid RuntimeConfig reource and `[VARIABLE_NAME]` follows Unix file system\nfile path naming.\n\nThe `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and\ndashes. Slashes are used as path element separators and are not part of the\n`[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one\nnon-slash character. Multiple slashes are coalesced into single slash\ncharacter. Each path segment should follow RFC 1035 segment specification.\nThe length of a `[VARIABLE_NAME]` must be less than 256 bytes.\n\nOnce you create a variable, you cannot change the variable name.",
-                    "type": "string"
-                },
-                "text": {
-                    "description": "The string value of the variable. The length of the value must be less\nthan 4096 bytes. Empty values are also accepted. For example,\n`text: \"my text value\"`. The string must be valid UTF-8.",
-                    "type": "string"
-                },
-                "value": {
-                    "description": "The binary value of the variable. The length of the value must be less\nthan 4096 bytes. Empty values are also accepted. The value must be\nbase64 encoded. Only one of `value` or `text` can be set.",
-                    "format": "byte",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Operation": {
-            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
-            "id": "Operation",
-            "properties": {
-                "done": {
-                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
-                    "type": "boolean"
-                },
-                "response": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
-                    "type": "string"
-                },
-                "error": {
-                    "$ref": "Status",
-                    "description": "The error result of the operation in case of failure or cancellation."
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis_beta/speech__v1beta1.json b/discovery/googleapis_beta/speech__v1beta1.json
index ee79567..57e0448 100644
--- a/discovery/googleapis_beta/speech__v1beta1.json
+++ b/discovery/googleapis_beta/speech__v1beta1.json
@@ -25,27 +25,6 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "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.",
-            "location": "query",
-            "type": "string"
-        },
-        "pp": {
-            "default": "true",
-            "description": "Pretty-print response.",
-            "location": "query",
-            "type": "boolean"
-        },
-        "oauth_token": {
-            "description": "OAuth 2.0 token for the current user.",
-            "location": "query",
-            "type": "string"
-        },
-        "bearer_token": {
-            "description": "OAuth bearer token.",
-            "location": "query",
-            "type": "string"
-        },
         "upload_protocol": {
             "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
@@ -57,18 +36,13 @@
             "location": "query",
             "type": "boolean"
         },
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
-            "location": "query",
-            "type": "string"
-        },
         "uploadType": {
             "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
-        "callback": {
-            "description": "JSONP",
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
             "location": "query",
             "type": "string"
         },
@@ -85,6 +59,11 @@
             "location": "query",
             "type": "string"
         },
+        "callback": {
+            "description": "JSONP",
+            "location": "query",
+            "type": "string"
+        },
         "alt": {
             "default": "json",
             "description": "Data format for response.",
@@ -110,60 +89,71 @@
             "description": "OAuth access token.",
             "location": "query",
             "type": "string"
+        },
+        "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.",
+            "location": "query",
+            "type": "string"
+        },
+        "pp": {
+            "default": "true",
+            "description": "Pretty-print response.",
+            "location": "query",
+            "type": "boolean"
+        },
+        "bearer_token": {
+            "description": "OAuth bearer token.",
+            "location": "query",
+            "type": "string"
+        },
+        "oauth_token": {
+            "description": "OAuth 2.0 token for the current user.",
+            "location": "query",
+            "type": "string"
         }
     },
     "protocol": "rest",
     "resources": {
+        "speech": {
+            "methods": {
+                "syncrecognize": {
+                    "description": "Performs synchronous speech recognition: receive results after all audio\nhas been sent and processed.",
+                    "httpMethod": "POST",
+                    "id": "speech.speech.syncrecognize",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1beta1/speech:syncrecognize",
+                    "request": {
+                        "$ref": "SyncRecognizeRequest"
+                    },
+                    "response": {
+                        "$ref": "SyncRecognizeResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                },
+                "asyncrecognize": {
+                    "description": "Performs asynchronous speech recognition: receive results via the\n[google.longrunning.Operations]\n(/speech/reference/rest/v1beta1/operations#Operation)\ninterface. Returns either an\n`Operation.error` or an `Operation.response` which contains\nan `AsyncRecognizeResponse` message.",
+                    "httpMethod": "POST",
+                    "id": "speech.speech.asyncrecognize",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1beta1/speech:asyncrecognize",
+                    "request": {
+                        "$ref": "AsyncRecognizeRequest"
+                    },
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                    ]
+                }
+            }
+        },
         "operations": {
             "methods": {
-                "cancel": {
-                    "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
-                    "httpMethod": "POST",
-                    "id": "speech.operations.cancel",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The name of the operation resource to be cancelled.",
-                            "location": "path",
-                            "pattern": "^[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/operations/{+name}:cancel",
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
-                "delete": {
-                    "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.",
-                    "httpMethod": "DELETE",
-                    "id": "speech.operations.delete",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The name of the operation resource to be deleted.",
-                            "location": "path",
-                            "pattern": "^[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1beta1/operations/{+name}",
-                    "response": {
-                        "$ref": "Empty"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
-                    ]
-                },
                 "get": {
                     "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
                     "httpMethod": "GET",
@@ -223,40 +213,50 @@
                     "scopes": [
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
-                }
-            }
-        },
-        "speech": {
-            "methods": {
-                "asyncrecognize": {
-                    "description": "Performs asynchronous speech recognition: receive results via the\n[google.longrunning.Operations]\n(/speech/reference/rest/v1beta1/operations#Operation)\ninterface. Returns either an\n`Operation.error` or an `Operation.response` which contains\nan `AsyncRecognizeResponse` message.",
+                },
+                "cancel": {
+                    "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
                     "httpMethod": "POST",
-                    "id": "speech.speech.asyncrecognize",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1beta1/speech:asyncrecognize",
-                    "request": {
-                        "$ref": "AsyncRecognizeRequest"
+                    "id": "speech.operations.cancel",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The name of the operation resource to be cancelled.",
+                            "location": "path",
+                            "pattern": "^[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
                     },
+                    "path": "v1beta1/operations/{+name}:cancel",
                     "response": {
-                        "$ref": "Operation"
+                        "$ref": "Empty"
                     },
                     "scopes": [
                         "https://www.googleapis.com/auth/cloud-platform"
                     ]
                 },
-                "syncrecognize": {
-                    "description": "Performs synchronous speech recognition: receive results after all audio\nhas been sent and processed.",
-                    "httpMethod": "POST",
-                    "id": "speech.speech.syncrecognize",
-                    "parameterOrder": [],
-                    "parameters": {},
-                    "path": "v1beta1/speech:syncrecognize",
-                    "request": {
-                        "$ref": "SyncRecognizeRequest"
+                "delete": {
+                    "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.",
+                    "httpMethod": "DELETE",
+                    "id": "speech.operations.delete",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "The name of the operation resource to be deleted.",
+                            "location": "path",
+                            "pattern": "^[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
                     },
+                    "path": "v1beta1/operations/{+name}",
                     "response": {
-                        "$ref": "SyncRecognizeResponse"
+                        "$ref": "Empty"
                     },
                     "scopes": [
                         "https://www.googleapis.com/auth/cloud-platform"
@@ -265,124 +265,9 @@
             }
         }
     },
-    "revision": "20170925",
+    "revision": "20171018",
     "rootUrl": "https://speech.googleapis.com/",
     "schemas": {
-        "AsyncRecognizeRequest": {
-            "description": "The top-level message sent by the client for the `AsyncRecognize` method.",
-            "id": "AsyncRecognizeRequest",
-            "properties": {
-                "audio": {
-                    "$ref": "RecognitionAudio",
-                    "description": "*Required* The audio data to be recognized."
-                },
-                "config": {
-                    "$ref": "RecognitionConfig",
-                    "description": "*Required* Provides information to the recognizer that specifies how to\nprocess the request."
-                }
-            },
-            "type": "object"
-        },
-        "RecognitionAudio": {
-            "description": "Contains audio data in the encoding specified in the `RecognitionConfig`.\nEither `content` or `uri` must be supplied. Supplying both or neither\nreturns google.rpc.Code.INVALID_ARGUMENT. See\n[audio limits](https://cloud.google.com/speech/limits#content).",
-            "id": "RecognitionAudio",
-            "properties": {
-                "uri": {
-                    "description": "URI that points to a file that contains audio data bytes as specified in\n`RecognitionConfig`. Currently, only Google Cloud Storage URIs are\nsupported, which must be specified in the following format:\n`gs://bucket_name/object_name` (other URI formats return\ngoogle.rpc.Code.INVALID_ARGUMENT). For more information, see\n[Request URIs](https://cloud.google.com/storage/docs/reference-uris).",
-                    "type": "string"
-                },
-                "content": {
-                    "description": "The audio data bytes encoded as specified in\n`RecognitionConfig`. Note: as with all bytes fields, protobuffers use a\npure binary representation, whereas JSON representations use base64.",
-                    "format": "byte",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Operation": {
-            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
-            "id": "Operation",
-            "properties": {
-                "done": {
-                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
-                    "type": "boolean"
-                },
-                "response": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
-                    "type": "string"
-                },
-                "error": {
-                    "$ref": "Status",
-                    "description": "The error result of the operation in case of failure or cancellation."
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
-                    "type": "object"
-                }
-            },
-            "type": "object"
-        },
-        "RecognitionConfig": {
-            "description": "Provides information to the recognizer that specifies how to process the\nrequest.",
-            "id": "RecognitionConfig",
-            "properties": {
-                "maxAlternatives": {
-                    "description": "*Optional* Maximum number of recognition hypotheses to be returned.\nSpecifically, the maximum number of `SpeechRecognitionAlternative` messages\nwithin each `SpeechRecognitionResult`.\nThe server may return fewer than `max_alternatives`.\nValid values are `0`-`30`. A value of `0` or `1` will return a maximum of\none. If omitted, will return a maximum of one.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "sampleRate": {
-                    "description": "*Required* Sample rate in Hertz of the audio data sent in all\n`RecognitionAudio` messages. Valid values are: 8000-48000.\n16000 is optimal. For best results, set the sampling rate of the audio\nsource to 16000 Hz. If that's not possible, use the native sample rate of\nthe audio source (instead of re-sampling).",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "languageCode": {
-                    "description": "*Optional* The language of the supplied audio as a BCP-47 language tag.\nExample: \"en-GB\"  https://www.rfc-editor.org/rfc/bcp/bcp47.txt\nIf omitted, defaults to \"en-US\". See\n[Language Support](https://cloud.google.com/speech/docs/languages)\nfor a list of the currently supported language codes.",
-                    "type": "string"
-                },
-                "encoding": {
-                    "description": "*Required* Encoding of audio data sent in all `RecognitionAudio` messages.",
-                    "enum": [
-                        "ENCODING_UNSPECIFIED",
-                        "LINEAR16",
-                        "FLAC",
-                        "MULAW",
-                        "AMR",
-                        "AMR_WB"
-                    ],
-                    "enumDescriptions": [
-                        "Not specified. Will return result google.rpc.Code.INVALID_ARGUMENT.",
-                        "Uncompressed 16-bit signed little-endian samples (Linear PCM).\nThis is the only encoding that may be used by `AsyncRecognize`.",
-                        "This is the recommended encoding for `SyncRecognize` and\n`StreamingRecognize` because it uses lossless compression; therefore\nrecognition accuracy is not compromised by a lossy codec.\n\nThe stream FLAC (Free Lossless Audio Codec) encoding is specified at:\nhttp://flac.sourceforge.net/documentation.html.\n16-bit and 24-bit samples are supported.\nNot all fields in STREAMINFO are supported.",
-                        "8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law.",
-                        "Adaptive Multi-Rate Narrowband codec. `sample_rate` must be 8000 Hz.",
-                        "Adaptive Multi-Rate Wideband codec. `sample_rate` must be 16000 Hz."
-                    ],
-                    "type": "string"
-                },
-                "profanityFilter": {
-                    "description": "*Optional* If set to `true`, the server will attempt to filter out\nprofanities, replacing all but the initial character in each filtered word\nwith asterisks, e.g. \"f***\". If set to `false` or omitted, profanities\nwon't be filtered out.",
-                    "type": "boolean"
-                },
-                "speechContext": {
-                    "$ref": "SpeechContext",
-                    "description": "*Optional* A means to provide context to assist the speech recognition."
-                }
-            },
-            "type": "object"
-        },
         "SyncRecognizeRequest": {
             "description": "The top-level message sent by the client for the `SyncRecognize` method.",
             "id": "SyncRecognizeRequest",
@@ -398,6 +283,20 @@
             },
             "type": "object"
         },
+        "SyncRecognizeResponse": {
+            "description": "The only message returned to the client by `SyncRecognize`. method. It\ncontains the result as zero or more sequential `SpeechRecognitionResult`\nmessages.",
+            "id": "SyncRecognizeResponse",
+            "properties": {
+                "results": {
+                    "description": "*Output-only* Sequential list of transcription results corresponding to\nsequential portions of audio.",
+                    "items": {
+                        "$ref": "SpeechRecognitionResult"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "Status": {
             "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
             "id": "Status",
@@ -425,26 +324,28 @@
             },
             "type": "object"
         },
-        "SyncRecognizeResponse": {
-            "description": "The only message returned to the client by `SyncRecognize`. method. It\ncontains the result as zero or more sequential `SpeechRecognitionResult`\nmessages.",
-            "id": "SyncRecognizeResponse",
-            "properties": {
-                "results": {
-                    "description": "*Output-only* Sequential list of transcription results corresponding to\nsequential portions of audio.",
-                    "items": {
-                        "$ref": "SpeechRecognitionResult"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "Empty": {
             "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
             "id": "Empty",
             "properties": {},
             "type": "object"
         },
+        "SpeechRecognitionAlternative": {
+            "description": "Alternative hypotheses (a.k.a. n-best list).",
+            "id": "SpeechRecognitionAlternative",
+            "properties": {
+                "confidence": {
+                    "description": "*Output-only* The confidence estimate between 0.0 and 1.0. A higher number\nindicates an estimated greater likelihood that the recognized words are\ncorrect. This field is typically provided only for the top hypothesis, and\nonly for `is_final=true` results. Clients should not rely on the\n`confidence` field as it is not guaranteed to be accurate, or even set, in\nany of the results.\nThe default of 0.0 is a sentinel value indicating `confidence` was not set.",
+                    "format": "float",
+                    "type": "number"
+                },
+                "transcript": {
+                    "description": "*Output-only* Transcript text representing the words that the user spoke.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "SpeechContext": {
             "description": "Provides \"hints\" to the speech recognizer to favor specific words and phrases\nin the results.",
             "id": "SpeechContext",
@@ -463,32 +364,16 @@
             "description": "The response message for Operations.ListOperations.",
             "id": "ListOperationsResponse",
             "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
                 "operations": {
                     "description": "A list of operations that matches the specified filter in the request.",
                     "items": {
                         "$ref": "Operation"
                     },
                     "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "The standard List next-page token.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SpeechRecognitionAlternative": {
-            "description": "Alternative hypotheses (a.k.a. n-best list).",
-            "id": "SpeechRecognitionAlternative",
-            "properties": {
-                "confidence": {
-                    "description": "*Output-only* The confidence estimate between 0.0 and 1.0. A higher number\nindicates an estimated greater likelihood that the recognized words are\ncorrect. This field is typically provided only for the top hypothesis, and\nonly for `is_final=true` results. Clients should not rely on the\n`confidence` field as it is not guaranteed to be accurate, or even set, in\nany of the results.\nThe default of 0.0 is a sentinel value indicating `confidence` was not set.",
-                    "format": "float",
-                    "type": "number"
-                },
-                "transcript": {
-                    "description": "*Output-only* Transcript text representing the words that the user spoke.",
-                    "type": "string"
                 }
             },
             "type": "object"
@@ -506,6 +391,121 @@
                 }
             },
             "type": "object"
+        },
+        "AsyncRecognizeRequest": {
+            "description": "The top-level message sent by the client for the `AsyncRecognize` method.",
+            "id": "AsyncRecognizeRequest",
+            "properties": {
+                "audio": {
+                    "$ref": "RecognitionAudio",
+                    "description": "*Required* The audio data to be recognized."
+                },
+                "config": {
+                    "$ref": "RecognitionConfig",
+                    "description": "*Required* Provides information to the recognizer that specifies how to\nprocess the request."
+                }
+            },
+            "type": "object"
+        },
+        "RecognitionAudio": {
+            "description": "Contains audio data in the encoding specified in the `RecognitionConfig`.\nEither `content` or `uri` must be supplied. Supplying both or neither\nreturns google.rpc.Code.INVALID_ARGUMENT. See\n[audio limits](https://cloud.google.com/speech/limits#content).",
+            "id": "RecognitionAudio",
+            "properties": {
+                "content": {
+                    "description": "The audio data bytes encoded as specified in\n`RecognitionConfig`. Note: as with all bytes fields, protobuffers use a\npure binary representation, whereas JSON representations use base64.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "uri": {
+                    "description": "URI that points to a file that contains audio data bytes as specified in\n`RecognitionConfig`. Currently, only Google Cloud Storage URIs are\nsupported, which must be specified in the following format:\n`gs://bucket_name/object_name` (other URI formats return\ngoogle.rpc.Code.INVALID_ARGUMENT). For more information, see\n[Request URIs](https://cloud.google.com/storage/docs/reference-uris).",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+            "id": "Operation",
+            "properties": {
+                "response": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+                    "type": "string"
+                },
+                "error": {
+                    "$ref": "Status",
+                    "description": "The error result of the operation in case of failure or cancellation."
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+                    "type": "object"
+                },
+                "done": {
+                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "RecognitionConfig": {
+            "description": "Provides information to the recognizer that specifies how to process the\nrequest.",
+            "id": "RecognitionConfig",
+            "properties": {
+                "maxAlternatives": {
+                    "description": "*Optional* Maximum number of recognition hypotheses to be returned.\nSpecifically, the maximum number of `SpeechRecognitionAlternative` messages\nwithin each `SpeechRecognitionResult`.\nThe server may return fewer than `max_alternatives`.\nValid values are `0`-`30`. A value of `0` or `1` will return a maximum of\none. If omitted, will return a maximum of one.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "sampleRate": {
+                    "description": "*Required* Sample rate in Hertz of the audio data sent in all\n`RecognitionAudio` messages. Valid values are: 8000-48000.\n16000 is optimal. For best results, set the sampling rate of the audio\nsource to 16000 Hz. If that's not possible, use the native sample rate of\nthe audio source (instead of re-sampling).",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "languageCode": {
+                    "description": "*Optional* The language of the supplied audio as a BCP-47 language tag.\nExample: \"en-GB\"  https://www.rfc-editor.org/rfc/bcp/bcp47.txt\nIf omitted, defaults to \"en-US\". See\n[Language Support](https://cloud.google.com/speech/docs/languages)\nfor a list of the currently supported language codes.",
+                    "type": "string"
+                },
+                "profanityFilter": {
+                    "description": "*Optional* If set to `true`, the server will attempt to filter out\nprofanities, replacing all but the initial character in each filtered word\nwith asterisks, e.g. \"f***\". If set to `false` or omitted, profanities\nwon't be filtered out.",
+                    "type": "boolean"
+                },
+                "speechContext": {
+                    "$ref": "SpeechContext",
+                    "description": "*Optional* A means to provide context to assist the speech recognition."
+                },
+                "encoding": {
+                    "description": "*Required* Encoding of audio data sent in all `RecognitionAudio` messages.",
+                    "enum": [
+                        "ENCODING_UNSPECIFIED",
+                        "LINEAR16",
+                        "FLAC",
+                        "MULAW",
+                        "AMR",
+                        "AMR_WB"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. Will return result google.rpc.Code.INVALID_ARGUMENT.",
+                        "Uncompressed 16-bit signed little-endian samples (Linear PCM).\nThis is the only encoding that may be used by `AsyncRecognize`.",
+                        "This is the recommended encoding for `SyncRecognize` and\n`StreamingRecognize` because it uses lossless compression; therefore\nrecognition accuracy is not compromised by a lossy codec.\n\nThe stream FLAC (Free Lossless Audio Codec) encoding is specified at:\nhttp://flac.sourceforge.net/documentation.html.\n16-bit and 24-bit samples are supported.\nNot all fields in STREAMINFO are supported.",
+                        "8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law.",
+                        "Adaptive Multi-Rate Narrowband codec. `sample_rate` must be 8000 Hz.",
+                        "Adaptive Multi-Rate Wideband codec. `sample_rate` must be 16000 Hz."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis_beta/sqladmin__v1beta3.json b/discovery/googleapis_beta/sqladmin__v1beta3.json
index 44347a0..ea96b26 100644
--- a/discovery/googleapis_beta/sqladmin__v1beta3.json
+++ b/discovery/googleapis_beta/sqladmin__v1beta3.json
@@ -18,7 +18,7 @@
     "description": "Creates and configures Cloud SQL instances, which provide fully-managed MySQL databases.",
     "discoveryVersion": "v1",
     "documentationLink": "https://cloud.google.com/sql/docs/reference/latest",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/lsRSA9rF-4KQu4xYN0id-kYxBtA\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/7RWofroP1ZyOrHOERSswwKZ-f84\"",
     "icons": {
         "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
         "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -910,7 +910,7 @@
             }
         }
     },
-    "revision": "20170807",
+    "revision": "20171011",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "BackupConfiguration": {
diff --git a/discovery/googleapis_beta/sqladmin__v1beta4.json b/discovery/googleapis_beta/sqladmin__v1beta4.json
index 4acad5a..3c5ec02 100644
--- a/discovery/googleapis_beta/sqladmin__v1beta4.json
+++ b/discovery/googleapis_beta/sqladmin__v1beta4.json
@@ -18,7 +18,7 @@
     "description": "Creates and configures Cloud SQL instances, which provide fully-managed MySQL databases.",
     "discoveryVersion": "v1",
     "documentationLink": "https://cloud.google.com/sql/docs/reference/latest",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/odbYGRT1izLWfRhfVNwcTacV8sM\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/qGR3q9t_cRz9md0zXxOmhlJ1eX0\"",
     "icons": {
         "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
         "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -551,6 +551,40 @@
                         "https://www.googleapis.com/auth/sqlservice.admin"
                     ]
                 },
+                "demoteMaster": {
+                    "description": "Demotes the standalone instance to be a read replica Cloud SQL instance of an on-premises master.",
+                    "httpMethod": "POST",
+                    "id": "sql.instances.demoteMaster",
+                    "parameterOrder": [
+                        "project",
+                        "instance"
+                    ],
+                    "parameters": {
+                        "instance": {
+                            "description": "Cloud SQL instance name.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "ID of the project that contains the instance.",
+                            "location": "path",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "projects/{project}/instances/{instance}/demoteMaster",
+                    "request": {
+                        "$ref": "InstancesDemoteMasterRequest"
+                    },
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/sqlservice.admin"
+                    ]
+                },
                 "export": {
                     "description": "Exports data from a Cloud SQL instance to a Google Cloud Storage bucket as a MySQL dump file.",
                     "httpMethod": "POST",
@@ -1490,7 +1524,7 @@
             }
         }
     },
-    "revision": "20170807",
+    "revision": "20171011",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "AclEntry": {
@@ -1896,6 +1930,74 @@
             },
             "type": "object"
         },
+        "DemoteMasterConfiguration": {
+            "description": "Read-replica configuration for connecting to the on-premises master.",
+            "id": "DemoteMasterConfiguration",
+            "properties": {
+                "kind": {
+                    "default": "sql#demoteMasterConfiguration",
+                    "description": "This is always sql#demoteMasterConfiguration.",
+                    "type": "string"
+                },
+                "mysqlReplicaConfiguration": {
+                    "$ref": "DemoteMasterMySqlReplicaConfiguration",
+                    "description": "MySQL specific configuration when replicating from a MySQL on-premises master. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata. The configuration information is used only to set up the replication connection and is stored by MySQL in a file named master.info in the data directory."
+                }
+            },
+            "type": "object"
+        },
+        "DemoteMasterContext": {
+            "description": "Database instance demote master context.",
+            "id": "DemoteMasterContext",
+            "properties": {
+                "kind": {
+                    "default": "sql#demoteMasterContext",
+                    "description": "This is always sql#demoteMasterContext.",
+                    "type": "string"
+                },
+                "masterInstanceName": {
+                    "description": "The name of the instance which will act as on-premises master in the replication setup.",
+                    "type": "string"
+                },
+                "replicaConfiguration": {
+                    "$ref": "DemoteMasterConfiguration",
+                    "description": "Configuration specific to read-replicas replicating from the on-premises master."
+                }
+            },
+            "type": "object"
+        },
+        "DemoteMasterMySqlReplicaConfiguration": {
+            "description": "Read-replica configuration specific to MySQL databases.",
+            "id": "DemoteMasterMySqlReplicaConfiguration",
+            "properties": {
+                "caCertificate": {
+                    "description": "PEM representation of the trusted CA's x509 certificate.",
+                    "type": "string"
+                },
+                "clientCertificate": {
+                    "description": "PEM representation of the slave's x509 certificate.",
+                    "type": "string"
+                },
+                "clientKey": {
+                    "description": "PEM representation of the slave's private key. The corresponsing public key is encoded in the client's certificate. The format of the slave's private key can be either PKCS #1 or PKCS #8.",
+                    "type": "string"
+                },
+                "kind": {
+                    "default": "sql#demoteMasterMysqlReplicaConfiguration",
+                    "description": "This is always sql#demoteMasterMysqlReplicaConfiguration.",
+                    "type": "string"
+                },
+                "password": {
+                    "description": "The password for the replication connection.",
+                    "type": "string"
+                },
+                "username": {
+                    "description": "The username for the replication connection.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ExportContext": {
             "description": "Database instance export context.",
             "id": "ExportContext",
@@ -2090,6 +2192,17 @@
             },
             "type": "object"
         },
+        "InstancesDemoteMasterRequest": {
+            "description": "Database demote master request.",
+            "id": "InstancesDemoteMasterRequest",
+            "properties": {
+                "demoteMasterContext": {
+                    "$ref": "DemoteMasterContext",
+                    "description": "Contains details about the demoteMaster operation."
+                }
+            },
+            "type": "object"
+        },
         "InstancesExportRequest": {
             "description": "Database instance export request.",
             "id": "InstancesExportRequest",
diff --git a/discovery/googleapis_beta/toolresults__v1beta3.json b/discovery/googleapis_beta/toolresults__v1beta3.json
index 69a7288..70b9b4e 100644
--- a/discovery/googleapis_beta/toolresults__v1beta3.json
+++ b/discovery/googleapis_beta/toolresults__v1beta3.json
@@ -15,7 +15,7 @@
     "description": "Reads and publishes results from Firebase Test Lab.",
     "discoveryVersion": "v1",
     "documentationLink": "https://firebase.google.com/docs/test-lab/",
-    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/dsThgnMRVyXvP0x7GRMgJLgmPMc\"",
+    "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/1Q_hxPj6ovQkawravymDN5wNvJc\"",
     "icons": {
         "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
         "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -1161,7 +1161,7 @@
             }
         }
     },
-    "revision": "20171004",
+    "revision": "20171020",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "AndroidAppInfo": {
@@ -1518,6 +1518,91 @@
             },
             "type": "object"
         },
+        "GraphicsStats": {
+            "description": "Graphics statistics for the App. The information is collected from 'adb shell dumpsys graphicsstats'. For more info see: https://developer.android.com/training/testing/performance.html Statistics will only be present for API 23+.",
+            "id": "GraphicsStats",
+            "properties": {
+                "buckets": {
+                    "description": "Histogram of frame render times. There should be 154 buckets ranging from [5ms, 6ms) to [4950ms, infinity)",
+                    "items": {
+                        "$ref": "GraphicsStatsBucket"
+                    },
+                    "type": "array"
+                },
+                "highInputLatencyCount": {
+                    "description": "Total \"high input latency\" events.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "jankyFrames": {
+                    "description": "Total frames with slow render time. Should be <= total_frames.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "missedVsyncCount": {
+                    "description": "Total \"missed vsync\" events.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "p50Millis": {
+                    "description": "50th percentile frame render time in milliseconds.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "p90Millis": {
+                    "description": "90th percentile frame render time in milliseconds.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "p95Millis": {
+                    "description": "95th percentile frame render time in milliseconds.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "p99Millis": {
+                    "description": "99th percentile frame render time in milliseconds.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "slowBitmapUploadCount": {
+                    "description": "Total \"slow bitmap upload\" events.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "slowDrawCount": {
+                    "description": "Total \"slow draw\" events.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "slowUiThreadCount": {
+                    "description": "Total \"slow UI thread\" events.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "totalFrames": {
+                    "description": "Total frames rendered by package.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GraphicsStatsBucket": {
+            "id": "GraphicsStatsBucket",
+            "properties": {
+                "frameCount": {
+                    "description": "Number of frames in the bucket.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "renderMillis": {
+                    "description": "Lower bound of render time in milliseconds.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "History": {
             "description": "A History represents a sorted list of Executions ordered by the start_timestamp_millis field (descending). It can be used to group all the Executions of a continuous build.\n\nNote that the ordering only operates on one-dimension. If a repository has multiple branches, it means that multiple histories will need to be used in order to order Executions per branch.",
             "id": "History",
@@ -1770,6 +1855,10 @@
                     "description": "A tool results execution ID.",
                     "type": "string"
                 },
+                "graphicsStats": {
+                    "$ref": "GraphicsStats",
+                    "description": "Graphics statistics for the entire run. Statistics are reset at the beginning of the run and collected at the end of the run."
+                },
                 "historyId": {
                     "description": "A tool results history ID.",
                     "type": "string"
@@ -2199,14 +2288,18 @@
                     "description": "Type of issue. Required.",
                     "enum": [
                         "anr",
+                        "compatibleWithOrchestrator",
                         "fatalException",
                         "nativeCrash",
-                        "unspecifiedType"
+                        "unspecifiedType",
+                        "unusedRoboDirective"
                     ],
                     "enumDescriptions": [
                         "",
                         "",
                         "",
+                        "",
+                        "",
                         ""
                     ],
                     "type": "string"
diff --git a/discovery/googleapis_beta/videointelligence__v1beta1.json b/discovery/googleapis_beta/videointelligence__v1beta1.json
index d64aa5c..2fa8d98 100644
--- a/discovery/googleapis_beta/videointelligence__v1beta1.json
+++ b/discovery/googleapis_beta/videointelligence__v1beta1.json
@@ -25,16 +25,27 @@
     "ownerDomain": "google.com",
     "ownerName": "Google",
     "parameters": {
-        "fields": {
-            "description": "Selector specifying which fields to include in a partial response.",
+        "upload_protocol": {
+            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
+        "prettyPrint": {
+            "default": "true",
+            "description": "Returns response with indentations and line breaks.",
+            "location": "query",
+            "type": "boolean"
+        },
         "uploadType": {
             "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
             "location": "query",
             "type": "string"
         },
+        "fields": {
+            "description": "Selector specifying which fields to include in a partial response.",
+            "location": "query",
+            "type": "string"
+        },
         "$.xgafv": {
             "description": "V1 error format.",
             "enum": [
@@ -99,17 +110,6 @@
             "description": "OAuth 2.0 token for the current user.",
             "location": "query",
             "type": "string"
-        },
-        "upload_protocol": {
-            "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
-            "location": "query",
-            "type": "string"
-        },
-        "prettyPrint": {
-            "default": "true",
-            "description": "Returns response with indentations and line breaks.",
-            "location": "query",
-            "type": "boolean"
         }
     },
     "protocol": "rest",
@@ -136,549 +136,9 @@
             }
         }
     },
-    "revision": "20170925",
+    "revision": "20171004",
     "rootUrl": "https://videointelligence.googleapis.com/",
     "schemas": {
-        "GoogleCloudVideointelligenceV1beta1_VideoContext": {
-            "description": "Video context and/or feature-specific parameters.",
-            "id": "GoogleCloudVideointelligenceV1beta1_VideoContext",
-            "properties": {
-                "segments": {
-                    "description": "Video segments to annotate. The segments may overlap and are not required\nto be contiguous or span the whole video. If unspecified, each video\nis treated as a single segment.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1beta1_VideoSegment"
-                    },
-                    "type": "array"
-                },
-                "labelDetectionModel": {
-                    "description": "Model to use for label detection.\nSupported values: \"latest\" and \"stable\" (the default).",
-                    "type": "string"
-                },
-                "shotChangeDetectionModel": {
-                    "description": "Model to use for shot change detection.\nSupported values: \"latest\" and \"stable\" (the default).",
-                    "type": "string"
-                },
-                "labelDetectionMode": {
-                    "description": "If label detection has been requested, what labels should be detected\nin addition to video-level labels or segment-level labels. If unspecified,\ndefaults to `SHOT_MODE`.",
-                    "enum": [
-                        "LABEL_DETECTION_MODE_UNSPECIFIED",
-                        "SHOT_MODE",
-                        "FRAME_MODE",
-                        "SHOT_AND_FRAME_MODE"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified.",
-                        "Detect shot-level labels.",
-                        "Detect frame-level labels.",
-                        "Detect both shot-level and frame-level labels."
-                    ],
-                    "type": "string"
-                },
-                "stationaryCamera": {
-                    "description": "Whether the video has been shot from a stationary (i.e. non-moving) camera.\nWhen set to true, might improve detection accuracy for moving objects.",
-                    "type": "boolean"
-                },
-                "safeSearchDetectionModel": {
-                    "description": "Model to use for safe search detection.\nSupported values: \"latest\" and \"stable\" (the default).",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1_LabelAnnotation": {
-            "description": "Label annotation.",
-            "id": "GoogleCloudVideointelligenceV1_LabelAnnotation",
-            "properties": {
-                "description": {
-                    "description": "Textual description, e.g. `Fixed-gear bicycle`.",
-                    "type": "string"
-                },
-                "locations": {
-                    "description": "Where the label was detected and with what confidence.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1_LabelLocation"
-                    },
-                    "type": "array"
-                },
-                "languageCode": {
-                    "description": "Language code for `description` in BCP-47 format.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleRpc_Status": {
-            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
-            "id": "GoogleRpc_Status",
-            "properties": {
-                "details": {
-                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
-                    "items": {
-                        "additionalProperties": {
-                            "description": "Properties of the object. Contains field @type with type URL.",
-                            "type": "any"
-                        },
-                        "type": "object"
-                    },
-                    "type": "array"
-                },
-                "code": {
-                    "description": "The status code, which should be an enum value of google.rpc.Code.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "message": {
-                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1_VideoSegment": {
-            "description": "Video segment.",
-            "id": "GoogleCloudVideointelligenceV1_VideoSegment",
-            "properties": {
-                "endTime": {
-                    "description": "Time-offset, relative to the beginning of the video,\ncorresponding to the end of the segment (inclusive).",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "Time-offset, relative to the beginning of the video,\ncorresponding to the start of the segment (inclusive).",
-                    "format": "google-duration",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1beta2_VideoAnnotationResults": {
-            "description": "Annotation results for a single video.",
-            "id": "GoogleCloudVideointelligenceV1beta2_VideoAnnotationResults",
-            "properties": {
-                "shotLabelAnnotations": {
-                    "description": "Label annotations on shot level.\nThere is exactly one element for each unique label.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1beta2_LabelAnnotation"
-                    },
-                    "type": "array"
-                },
-                "error": {
-                    "$ref": "GoogleRpc_Status",
-                    "description": "If set, indicates an error. Note that for a single `AnnotateVideoRequest`\nsome videos may succeed and some may fail."
-                },
-                "frameLabelAnnotations": {
-                    "description": "Label annotations on frame level.\nThere is exactly one element for each unique label.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1beta2_LabelAnnotation"
-                    },
-                    "type": "array"
-                },
-                "inputUri": {
-                    "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).",
-                    "type": "string"
-                },
-                "explicitAnnotation": {
-                    "$ref": "GoogleCloudVideointelligenceV1beta2_ExplicitContentAnnotation",
-                    "description": "Explicit content annotation."
-                },
-                "segmentLabelAnnotations": {
-                    "description": "Label annotations on video level or user specified segment level.\nThere is exactly one element for each unique label.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1beta2_LabelAnnotation"
-                    },
-                    "type": "array"
-                },
-                "shotAnnotations": {
-                    "description": "Shot annotations. Each shot is represented as a video segment.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1beta2_VideoSegment"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1beta1_LabelLocation": {
-            "description": "Label location.",
-            "id": "GoogleCloudVideointelligenceV1beta1_LabelLocation",
-            "properties": {
-                "confidence": {
-                    "description": "Confidence that the label is accurate. Range: [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "segment": {
-                    "$ref": "GoogleCloudVideointelligenceV1beta1_VideoSegment",
-                    "description": "Video segment. Set to [-1, -1] for video-level labels.\nSet to [timestamp, timestamp] for frame-level labels.\nOtherwise, corresponds to one of `AnnotateSpec.segments`\n(if specified) or to shot boundaries (if requested)."
-                },
-                "level": {
-                    "description": "Label level.",
-                    "enum": [
-                        "LABEL_LEVEL_UNSPECIFIED",
-                        "VIDEO_LEVEL",
-                        "SEGMENT_LEVEL",
-                        "SHOT_LEVEL",
-                        "FRAME_LEVEL"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified.",
-                        "Video-level. Corresponds to the whole video.",
-                        "Segment-level. Corresponds to one of `AnnotateSpec.segments`.",
-                        "Shot-level. Corresponds to a single shot (i.e. a series of frames\nwithout a major camera position or background change).",
-                        "Frame-level. Corresponds to a single video frame."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1beta2_ExplicitContentAnnotation": {
-            "description": "Explicit content annotation (based on per-frame visual signals only).\nIf no explicit content has been detected in a frame, no annotations are\npresent for that frame.",
-            "id": "GoogleCloudVideointelligenceV1beta2_ExplicitContentAnnotation",
-            "properties": {
-                "frames": {
-                    "description": "All video frames where explicit content was detected.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1beta2_ExplicitContentFrame"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1beta2_LabelFrame": {
-            "description": "Video frame level annotation results for label detection.",
-            "id": "GoogleCloudVideointelligenceV1beta2_LabelFrame",
-            "properties": {
-                "confidence": {
-                    "description": "Confidence that the label is accurate. Range: [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "timeOffset": {
-                    "description": "Time-offset, relative to the beginning of the video, corresponding to the\nvideo frame for this location.",
-                    "format": "google-duration",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1beta2_AnnotateVideoProgress": {
-            "description": "Video annotation progress. Included in the `metadata`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.",
-            "id": "GoogleCloudVideointelligenceV1beta2_AnnotateVideoProgress",
-            "properties": {
-                "annotationProgress": {
-                    "description": "Progress metadata for all videos specified in `AnnotateVideoRequest`.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1beta2_VideoAnnotationProgress"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1_VideoAnnotationProgress": {
-            "description": "Annotation progress for a single video.",
-            "id": "GoogleCloudVideointelligenceV1_VideoAnnotationProgress",
-            "properties": {
-                "inputUri": {
-                    "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).",
-                    "type": "string"
-                },
-                "progressPercent": {
-                    "description": "Approximate percentage processed thus far.\nGuaranteed to be 100 when fully processed.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "updateTime": {
-                    "description": "Time of the most recent update.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "Time when the request was received.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1_AnnotateVideoProgress": {
-            "description": "Video annotation progress. Included in the `metadata`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.",
-            "id": "GoogleCloudVideointelligenceV1_AnnotateVideoProgress",
-            "properties": {
-                "annotationProgress": {
-                    "description": "Progress metadata for all videos specified in `AnnotateVideoRequest`.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1_VideoAnnotationProgress"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleLongrunning_Operation": {
-            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
-            "id": "GoogleLongrunning_Operation",
-            "properties": {
-                "error": {
-                    "$ref": "GoogleRpc_Status",
-                    "description": "The error result of the operation in case of failure or cancellation."
-                },
-                "metadata": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
-                    "type": "object"
-                },
-                "done": {
-                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
-                    "type": "boolean"
-                },
-                "response": {
-                    "additionalProperties": {
-                        "description": "Properties of the object. Contains field @type with type URL.",
-                        "type": "any"
-                    },
-                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
-                    "type": "object"
-                },
-                "name": {
-                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1beta2_VideoAnnotationProgress": {
-            "description": "Annotation progress for a single video.",
-            "id": "GoogleCloudVideointelligenceV1beta2_VideoAnnotationProgress",
-            "properties": {
-                "inputUri": {
-                    "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).",
-                    "type": "string"
-                },
-                "progressPercent": {
-                    "description": "Approximate percentage processed thus far.\nGuaranteed to be 100 when fully processed.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "updateTime": {
-                    "description": "Time of the most recent update.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "Time when the request was received.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1beta1_VideoAnnotationResults": {
-            "description": "Annotation results for a single video.",
-            "id": "GoogleCloudVideointelligenceV1beta1_VideoAnnotationResults",
-            "properties": {
-                "error": {
-                    "$ref": "GoogleRpc_Status",
-                    "description": "If set, indicates an error. Note that for a single `AnnotateVideoRequest`\nsome videos may succeed and some may fail."
-                },
-                "shotAnnotations": {
-                    "description": "Shot annotations. Each shot is represented as a video segment.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1beta1_VideoSegment"
-                    },
-                    "type": "array"
-                },
-                "safeSearchAnnotations": {
-                    "description": "Safe search annotations.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1beta1_SafeSearchAnnotation"
-                    },
-                    "type": "array"
-                },
-                "inputUri": {
-                    "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).",
-                    "type": "string"
-                },
-                "labelAnnotations": {
-                    "description": "Label annotations. There is exactly one element for each unique label.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1beta1_LabelAnnotation"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1_AnnotateVideoResponse": {
-            "description": "Video annotation response. Included in the `response`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.",
-            "id": "GoogleCloudVideointelligenceV1_AnnotateVideoResponse",
-            "properties": {
-                "annotationResults": {
-                    "description": "Annotation results for all videos specified in `AnnotateVideoRequest`.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1_VideoAnnotationResults"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1beta1_AnnotateVideoResponse": {
-            "description": "Video annotation response. Included in the `response`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.",
-            "id": "GoogleCloudVideointelligenceV1beta1_AnnotateVideoResponse",
-            "properties": {
-                "annotationResults": {
-                    "description": "Annotation results for all videos specified in `AnnotateVideoRequest`.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1beta1_VideoAnnotationResults"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1beta1_VideoAnnotationProgress": {
-            "description": "Annotation progress for a single video.",
-            "id": "GoogleCloudVideointelligenceV1beta1_VideoAnnotationProgress",
-            "properties": {
-                "inputUri": {
-                    "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).",
-                    "type": "string"
-                },
-                "progressPercent": {
-                    "description": "Approximate percentage processed thus far.\nGuaranteed to be 100 when fully processed.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "updateTime": {
-                    "description": "Time of the most recent update.",
-                    "format": "google-datetime",
-                    "type": "string"
-                },
-                "startTime": {
-                    "description": "Time when the request was received.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1beta2_ExplicitContentFrame": {
-            "description": "Video frame level annotation results for explicit content.",
-            "id": "GoogleCloudVideointelligenceV1beta2_ExplicitContentFrame",
-            "properties": {
-                "pornographyLikelihood": {
-                    "description": "Likelihood of the pornography content..",
-                    "enum": [
-                        "LIKELIHOOD_UNSPECIFIED",
-                        "VERY_UNLIKELY",
-                        "UNLIKELY",
-                        "POSSIBLE",
-                        "LIKELY",
-                        "VERY_LIKELY"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified likelihood.",
-                        "Very unlikely.",
-                        "Unlikely.",
-                        "Possible.",
-                        "Likely.",
-                        "Very likely."
-                    ],
-                    "type": "string"
-                },
-                "timeOffset": {
-                    "description": "Time-offset, relative to the beginning of the video, corresponding to the\nvideo frame for this location.",
-                    "format": "google-duration",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1beta1_AnnotateVideoRequest": {
-            "description": "Video annotation request.",
-            "id": "GoogleCloudVideointelligenceV1beta1_AnnotateVideoRequest",
-            "properties": {
-                "inputUri": {
-                    "description": "Input video location. Currently, only\n[Google Cloud Storage](https://cloud.google.com/storage/) URIs are\nsupported, which must be specified in the following format:\n`gs://bucket-id/object-id` (other URI formats return\ngoogle.rpc.Code.INVALID_ARGUMENT). For more information, see\n[Request URIs](/storage/docs/reference-uris).\nA video URI may include wildcards in `object-id`, and thus identify\nmultiple videos. Supported wildcards: '*' to match 0 or more characters;\n'?' to match 1 character. If unset, the input video should be embedded\nin the request as `input_content`. If set, `input_content` should be unset.",
-                    "type": "string"
-                },
-                "inputContent": {
-                    "description": "The video data bytes. Encoding: base64. If unset, the input video(s)\nshould be specified via `input_uri`. If set, `input_uri` should be unset.",
-                    "type": "string"
-                },
-                "features": {
-                    "description": "Requested video annotation features.",
-                    "enumDescriptions": [
-                        "Unspecified.",
-                        "Label detection. Detect objects, such as dog or flower.",
-                        "Shot change detection.",
-                        "Safe search detection."
-                    ],
-                    "items": {
-                        "enum": [
-                            "FEATURE_UNSPECIFIED",
-                            "LABEL_DETECTION",
-                            "SHOT_CHANGE_DETECTION",
-                            "SAFE_SEARCH_DETECTION"
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "outputUri": {
-                    "description": "Optional location where the output (in JSON format) should be stored.\nCurrently, only [Google Cloud Storage](https://cloud.google.com/storage/)\nURIs are supported, which must be specified in the following format:\n`gs://bucket-id/object-id` (other URI formats return\ngoogle.rpc.Code.INVALID_ARGUMENT). For more information, see\n[Request URIs](/storage/docs/reference-uris).",
-                    "type": "string"
-                },
-                "videoContext": {
-                    "$ref": "GoogleCloudVideointelligenceV1beta1_VideoContext",
-                    "description": "Additional video context and/or feature-specific parameters."
-                },
-                "locationId": {
-                    "description": "Optional cloud region where annotation should take place. Supported cloud\nregions: `us-east1`, `us-west1`, `europe-west1`, `asia-east1`. If no region\nis specified, a region will be determined based on video file location.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1beta1_VideoSegment": {
-            "description": "Video segment.",
-            "id": "GoogleCloudVideointelligenceV1beta1_VideoSegment",
-            "properties": {
-                "endTimeOffset": {
-                    "description": "End offset in microseconds (inclusive). Unset means 0.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "startTimeOffset": {
-                    "description": "Start offset in microseconds (inclusive). Unset means 0.",
-                    "format": "int64",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "GoogleCloudVideointelligenceV1beta2_LabelSegment": {
-            "description": "Video segment level annotation results for label detection.",
-            "id": "GoogleCloudVideointelligenceV1beta2_LabelSegment",
-            "properties": {
-                "confidence": {
-                    "description": "Confidence that the label is accurate. Range: [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "segment": {
-                    "$ref": "GoogleCloudVideointelligenceV1beta2_VideoSegment",
-                    "description": "Video segment where a label was detected."
-                }
-            },
-            "type": "object"
-        },
         "GoogleCloudVideointelligenceV1_SafeSearchAnnotation": {
             "description": "Safe search annotation (based on per-frame visual signals only).\nIf no unsafe content has been detected in a frame, no annotations\nare present for that frame.",
             "id": "GoogleCloudVideointelligenceV1_SafeSearchAnnotation",
@@ -715,13 +175,6 @@
             "description": "Label annotation.",
             "id": "GoogleCloudVideointelligenceV1beta2_LabelAnnotation",
             "properties": {
-                "categoryEntities": {
-                    "description": "Common categories for the detected entity.\nE.g. when the label is `Terrier` the category is likely `dog`. And in some\ncases there might be more than one categories e.g. `Terrier` could also be\na `pet`.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1beta2_Entity"
-                    },
-                    "type": "array"
-                },
                 "entity": {
                     "$ref": "GoogleCloudVideointelligenceV1beta2_Entity",
                     "description": "Detected entity."
@@ -739,6 +192,13 @@
                         "$ref": "GoogleCloudVideointelligenceV1beta2_LabelSegment"
                     },
                     "type": "array"
+                },
+                "categoryEntities": {
+                    "description": "Common categories for the detected entity.\nE.g. when the label is `Terrier` the category is likely `dog`. And in some\ncases there might be more than one categories e.g. `Terrier` could also be\na `pet`.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1beta2_Entity"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -905,55 +365,10 @@
             },
             "type": "object"
         },
-        "GoogleCloudVideointelligenceV1_VideoAnnotationResults": {
-            "description": "Annotation results for a single video.",
-            "id": "GoogleCloudVideointelligenceV1_VideoAnnotationResults",
-            "properties": {
-                "safeSearchAnnotations": {
-                    "description": "Safe search annotations.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1_SafeSearchAnnotation"
-                    },
-                    "type": "array"
-                },
-                "inputUri": {
-                    "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).",
-                    "type": "string"
-                },
-                "labelAnnotations": {
-                    "description": "Label annotations. There is exactly one element for each unique label.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1_LabelAnnotation"
-                    },
-                    "type": "array"
-                },
-                "error": {
-                    "$ref": "GoogleRpc_Status",
-                    "description": "If set, indicates an error. Note that for a single `AnnotateVideoRequest`\nsome videos may succeed and some may fail."
-                },
-                "shotAnnotations": {
-                    "description": "Shot annotations. Each shot is represented as a video segment.",
-                    "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1_VideoSegment"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "GoogleCloudVideointelligenceV1_LabelLocation": {
             "description": "Label location.",
             "id": "GoogleCloudVideointelligenceV1_LabelLocation",
             "properties": {
-                "confidence": {
-                    "description": "Confidence that the label is accurate. Range: [0, 1].",
-                    "format": "float",
-                    "type": "number"
-                },
-                "segment": {
-                    "$ref": "GoogleCloudVideointelligenceV1_VideoSegment",
-                    "description": "Video segment. Unset for video-level labels.\nSet to a frame timestamp for frame-level labels.\nOtherwise, corresponds to one of `AnnotateSpec.segments`\n(if specified) or to shot boundaries (if requested)."
-                },
                 "level": {
                     "description": "Label level.",
                     "enum": [
@@ -971,6 +386,51 @@
                         "Frame-level. Corresponds to a single video frame."
                     ],
                     "type": "string"
+                },
+                "confidence": {
+                    "description": "Confidence that the label is accurate. Range: [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                },
+                "segment": {
+                    "$ref": "GoogleCloudVideointelligenceV1_VideoSegment",
+                    "description": "Video segment. Unset for video-level labels.\nSet to a frame timestamp for frame-level labels.\nOtherwise, corresponds to one of `AnnotateSpec.segments`\n(if specified) or to shot boundaries (if requested)."
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1_VideoAnnotationResults": {
+            "description": "Annotation results for a single video.",
+            "id": "GoogleCloudVideointelligenceV1_VideoAnnotationResults",
+            "properties": {
+                "error": {
+                    "$ref": "GoogleRpc_Status",
+                    "description": "If set, indicates an error. Note that for a single `AnnotateVideoRequest`\nsome videos may succeed and some may fail."
+                },
+                "shotAnnotations": {
+                    "description": "Shot annotations. Each shot is represented as a video segment.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1_VideoSegment"
+                    },
+                    "type": "array"
+                },
+                "safeSearchAnnotations": {
+                    "description": "Safe search annotations.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1_SafeSearchAnnotation"
+                    },
+                    "type": "array"
+                },
+                "inputUri": {
+                    "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).",
+                    "type": "string"
+                },
+                "labelAnnotations": {
+                    "description": "Label annotations. There is exactly one element for each unique label.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1_LabelAnnotation"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -993,6 +453,74 @@
             "description": "Label annotation.",
             "id": "GoogleCloudVideointelligenceV1beta1_LabelAnnotation",
             "properties": {
+                "locations": {
+                    "description": "Where the label was detected and with what confidence.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1beta1_LabelLocation"
+                    },
+                    "type": "array"
+                },
+                "languageCode": {
+                    "description": "Language code for `description` in BCP-47 format.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Textual description, e.g. `Fixed-gear bicycle`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1beta1_VideoContext": {
+            "description": "Video context and/or feature-specific parameters.",
+            "id": "GoogleCloudVideointelligenceV1beta1_VideoContext",
+            "properties": {
+                "safeSearchDetectionModel": {
+                    "description": "Model to use for safe search detection.\nSupported values: \"latest\" and \"stable\" (the default).",
+                    "type": "string"
+                },
+                "segments": {
+                    "description": "Video segments to annotate. The segments may overlap and are not required\nto be contiguous or span the whole video. If unspecified, each video\nis treated as a single segment.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1beta1_VideoSegment"
+                    },
+                    "type": "array"
+                },
+                "labelDetectionModel": {
+                    "description": "Model to use for label detection.\nSupported values: \"latest\" and \"stable\" (the default).",
+                    "type": "string"
+                },
+                "shotChangeDetectionModel": {
+                    "description": "Model to use for shot change detection.\nSupported values: \"latest\" and \"stable\" (the default).",
+                    "type": "string"
+                },
+                "labelDetectionMode": {
+                    "description": "If label detection has been requested, what labels should be detected\nin addition to video-level labels or segment-level labels. If unspecified,\ndefaults to `SHOT_MODE`.",
+                    "enum": [
+                        "LABEL_DETECTION_MODE_UNSPECIFIED",
+                        "SHOT_MODE",
+                        "FRAME_MODE",
+                        "SHOT_AND_FRAME_MODE"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "Detect shot-level labels.",
+                        "Detect frame-level labels.",
+                        "Detect both shot-level and frame-level labels."
+                    ],
+                    "type": "string"
+                },
+                "stationaryCamera": {
+                    "description": "Whether the video has been shot from a stationary (i.e. non-moving) camera.\nWhen set to true, might improve detection accuracy for moving objects.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1_LabelAnnotation": {
+            "description": "Label annotation.",
+            "id": "GoogleCloudVideointelligenceV1_LabelAnnotation",
+            "properties": {
                 "languageCode": {
                     "description": "Language code for `description` in BCP-47 format.",
                     "type": "string"
@@ -1004,12 +532,484 @@
                 "locations": {
                     "description": "Where the label was detected and with what confidence.",
                     "items": {
-                        "$ref": "GoogleCloudVideointelligenceV1beta1_LabelLocation"
+                        "$ref": "GoogleCloudVideointelligenceV1_LabelLocation"
                     },
                     "type": "array"
                 }
             },
             "type": "object"
+        },
+        "GoogleRpc_Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+            "id": "GoogleRpc_Status",
+            "properties": {
+                "message": {
+                    "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                },
+                "details": {
+                    "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+                    "items": {
+                        "additionalProperties": {
+                            "description": "Properties of the object. Contains field @type with type URL.",
+                            "type": "any"
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
+                },
+                "code": {
+                    "description": "The status code, which should be an enum value of google.rpc.Code.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1_VideoSegment": {
+            "description": "Video segment.",
+            "id": "GoogleCloudVideointelligenceV1_VideoSegment",
+            "properties": {
+                "endTime": {
+                    "description": "Time-offset, relative to the beginning of the video,\ncorresponding to the end of the segment (inclusive).",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Time-offset, relative to the beginning of the video,\ncorresponding to the start of the segment (inclusive).",
+                    "format": "google-duration",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1beta2_VideoAnnotationResults": {
+            "description": "Annotation results for a single video.",
+            "id": "GoogleCloudVideointelligenceV1beta2_VideoAnnotationResults",
+            "properties": {
+                "error": {
+                    "$ref": "GoogleRpc_Status",
+                    "description": "If set, indicates an error. Note that for a single `AnnotateVideoRequest`\nsome videos may succeed and some may fail."
+                },
+                "frameLabelAnnotations": {
+                    "description": "Label annotations on frame level.\nThere is exactly one element for each unique label.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1beta2_LabelAnnotation"
+                    },
+                    "type": "array"
+                },
+                "inputUri": {
+                    "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).",
+                    "type": "string"
+                },
+                "explicitAnnotation": {
+                    "$ref": "GoogleCloudVideointelligenceV1beta2_ExplicitContentAnnotation",
+                    "description": "Explicit content annotation."
+                },
+                "segmentLabelAnnotations": {
+                    "description": "Label annotations on video level or user specified segment level.\nThere is exactly one element for each unique label.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1beta2_LabelAnnotation"
+                    },
+                    "type": "array"
+                },
+                "shotAnnotations": {
+                    "description": "Shot annotations. Each shot is represented as a video segment.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1beta2_VideoSegment"
+                    },
+                    "type": "array"
+                },
+                "shotLabelAnnotations": {
+                    "description": "Label annotations on shot level.\nThere is exactly one element for each unique label.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1beta2_LabelAnnotation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1beta1_LabelLocation": {
+            "description": "Label location.",
+            "id": "GoogleCloudVideointelligenceV1beta1_LabelLocation",
+            "properties": {
+                "confidence": {
+                    "description": "Confidence that the label is accurate. Range: [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                },
+                "segment": {
+                    "$ref": "GoogleCloudVideointelligenceV1beta1_VideoSegment",
+                    "description": "Video segment. Set to [-1, -1] for video-level labels.\nSet to [timestamp, timestamp] for frame-level labels.\nOtherwise, corresponds to one of `AnnotateSpec.segments`\n(if specified) or to shot boundaries (if requested)."
+                },
+                "level": {
+                    "description": "Label level.",
+                    "enum": [
+                        "LABEL_LEVEL_UNSPECIFIED",
+                        "VIDEO_LEVEL",
+                        "SEGMENT_LEVEL",
+                        "SHOT_LEVEL",
+                        "FRAME_LEVEL"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "Video-level. Corresponds to the whole video.",
+                        "Segment-level. Corresponds to one of `AnnotateSpec.segments`.",
+                        "Shot-level. Corresponds to a single shot (i.e. a series of frames\nwithout a major camera position or background change).",
+                        "Frame-level. Corresponds to a single video frame."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1beta2_ExplicitContentAnnotation": {
+            "description": "Explicit content annotation (based on per-frame visual signals only).\nIf no explicit content has been detected in a frame, no annotations are\npresent for that frame.",
+            "id": "GoogleCloudVideointelligenceV1beta2_ExplicitContentAnnotation",
+            "properties": {
+                "frames": {
+                    "description": "All video frames where explicit content was detected.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1beta2_ExplicitContentFrame"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1beta2_LabelFrame": {
+            "description": "Video frame level annotation results for label detection.",
+            "id": "GoogleCloudVideointelligenceV1beta2_LabelFrame",
+            "properties": {
+                "confidence": {
+                    "description": "Confidence that the label is accurate. Range: [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                },
+                "timeOffset": {
+                    "description": "Time-offset, relative to the beginning of the video, corresponding to the\nvideo frame for this location.",
+                    "format": "google-duration",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1beta2_AnnotateVideoProgress": {
+            "description": "Video annotation progress. Included in the `metadata`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.",
+            "id": "GoogleCloudVideointelligenceV1beta2_AnnotateVideoProgress",
+            "properties": {
+                "annotationProgress": {
+                    "description": "Progress metadata for all videos specified in `AnnotateVideoRequest`.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1beta2_VideoAnnotationProgress"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1_VideoAnnotationProgress": {
+            "description": "Annotation progress for a single video.",
+            "id": "GoogleCloudVideointelligenceV1_VideoAnnotationProgress",
+            "properties": {
+                "inputUri": {
+                    "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).",
+                    "type": "string"
+                },
+                "progressPercent": {
+                    "description": "Approximate percentage processed thus far.\nGuaranteed to be 100 when fully processed.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "updateTime": {
+                    "description": "Time of the most recent update.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Time when the request was received.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1_AnnotateVideoProgress": {
+            "description": "Video annotation progress. Included in the `metadata`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.",
+            "id": "GoogleCloudVideointelligenceV1_AnnotateVideoProgress",
+            "properties": {
+                "annotationProgress": {
+                    "description": "Progress metadata for all videos specified in `AnnotateVideoRequest`.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1_VideoAnnotationProgress"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleLongrunning_Operation": {
+            "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+            "id": "GoogleLongrunning_Operation",
+            "properties": {
+                "error": {
+                    "$ref": "GoogleRpc_Status",
+                    "description": "The error result of the operation in case of failure or cancellation."
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+                    "type": "object"
+                },
+                "done": {
+                    "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+                    "type": "boolean"
+                },
+                "response": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1beta1_VideoAnnotationResults": {
+            "description": "Annotation results for a single video.",
+            "id": "GoogleCloudVideointelligenceV1beta1_VideoAnnotationResults",
+            "properties": {
+                "error": {
+                    "$ref": "GoogleRpc_Status",
+                    "description": "If set, indicates an error. Note that for a single `AnnotateVideoRequest`\nsome videos may succeed and some may fail."
+                },
+                "shotAnnotations": {
+                    "description": "Shot annotations. Each shot is represented as a video segment.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1beta1_VideoSegment"
+                    },
+                    "type": "array"
+                },
+                "safeSearchAnnotations": {
+                    "description": "Safe search annotations.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1beta1_SafeSearchAnnotation"
+                    },
+                    "type": "array"
+                },
+                "inputUri": {
+                    "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).",
+                    "type": "string"
+                },
+                "labelAnnotations": {
+                    "description": "Label annotations. There is exactly one element for each unique label.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1beta1_LabelAnnotation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1beta2_VideoAnnotationProgress": {
+            "description": "Annotation progress for a single video.",
+            "id": "GoogleCloudVideointelligenceV1beta2_VideoAnnotationProgress",
+            "properties": {
+                "inputUri": {
+                    "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).",
+                    "type": "string"
+                },
+                "progressPercent": {
+                    "description": "Approximate percentage processed thus far.\nGuaranteed to be 100 when fully processed.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "updateTime": {
+                    "description": "Time of the most recent update.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Time when the request was received.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1_AnnotateVideoResponse": {
+            "description": "Video annotation response. Included in the `response`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.",
+            "id": "GoogleCloudVideointelligenceV1_AnnotateVideoResponse",
+            "properties": {
+                "annotationResults": {
+                    "description": "Annotation results for all videos specified in `AnnotateVideoRequest`.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1_VideoAnnotationResults"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1beta1_AnnotateVideoResponse": {
+            "description": "Video annotation response. Included in the `response`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.",
+            "id": "GoogleCloudVideointelligenceV1beta1_AnnotateVideoResponse",
+            "properties": {
+                "annotationResults": {
+                    "description": "Annotation results for all videos specified in `AnnotateVideoRequest`.",
+                    "items": {
+                        "$ref": "GoogleCloudVideointelligenceV1beta1_VideoAnnotationResults"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1beta1_VideoAnnotationProgress": {
+            "description": "Annotation progress for a single video.",
+            "id": "GoogleCloudVideointelligenceV1beta1_VideoAnnotationProgress",
+            "properties": {
+                "inputUri": {
+                    "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).",
+                    "type": "string"
+                },
+                "progressPercent": {
+                    "description": "Approximate percentage processed thus far.\nGuaranteed to be 100 when fully processed.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "updateTime": {
+                    "description": "Time of the most recent update.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Time when the request was received.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1beta2_ExplicitContentFrame": {
+            "description": "Video frame level annotation results for explicit content.",
+            "id": "GoogleCloudVideointelligenceV1beta2_ExplicitContentFrame",
+            "properties": {
+                "pornographyLikelihood": {
+                    "description": "Likelihood of the pornography content..",
+                    "enum": [
+                        "LIKELIHOOD_UNSPECIFIED",
+                        "VERY_UNLIKELY",
+                        "UNLIKELY",
+                        "POSSIBLE",
+                        "LIKELY",
+                        "VERY_LIKELY"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified likelihood.",
+                        "Very unlikely.",
+                        "Unlikely.",
+                        "Possible.",
+                        "Likely.",
+                        "Very likely."
+                    ],
+                    "type": "string"
+                },
+                "timeOffset": {
+                    "description": "Time-offset, relative to the beginning of the video, corresponding to the\nvideo frame for this location.",
+                    "format": "google-duration",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1beta1_AnnotateVideoRequest": {
+            "description": "Video annotation request.",
+            "id": "GoogleCloudVideointelligenceV1beta1_AnnotateVideoRequest",
+            "properties": {
+                "features": {
+                    "description": "Requested video annotation features.",
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "Label detection. Detect objects, such as dog or flower.",
+                        "Shot change detection.",
+                        "Safe search detection."
+                    ],
+                    "items": {
+                        "enum": [
+                            "FEATURE_UNSPECIFIED",
+                            "LABEL_DETECTION",
+                            "SHOT_CHANGE_DETECTION",
+                            "SAFE_SEARCH_DETECTION"
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "outputUri": {
+                    "description": "Optional location where the output (in JSON format) should be stored.\nCurrently, only [Google Cloud Storage](https://cloud.google.com/storage/)\nURIs are supported, which must be specified in the following format:\n`gs://bucket-id/object-id` (other URI formats return\ngoogle.rpc.Code.INVALID_ARGUMENT). For more information, see\n[Request URIs](/storage/docs/reference-uris).",
+                    "type": "string"
+                },
+                "videoContext": {
+                    "$ref": "GoogleCloudVideointelligenceV1beta1_VideoContext",
+                    "description": "Additional video context and/or feature-specific parameters."
+                },
+                "locationId": {
+                    "description": "Optional cloud region where annotation should take place. Supported cloud\nregions: `us-east1`, `us-west1`, `europe-west1`, `asia-east1`. If no region\nis specified, a region will be determined based on video file location.",
+                    "type": "string"
+                },
+                "inputUri": {
+                    "description": "Input video location. Currently, only\n[Google Cloud Storage](https://cloud.google.com/storage/) URIs are\nsupported, which must be specified in the following format:\n`gs://bucket-id/object-id` (other URI formats return\ngoogle.rpc.Code.INVALID_ARGUMENT). For more information, see\n[Request URIs](/storage/docs/reference-uris).\nA video URI may include wildcards in `object-id`, and thus identify\nmultiple videos. Supported wildcards: '*' to match 0 or more characters;\n'?' to match 1 character. If unset, the input video should be embedded\nin the request as `input_content`. If set, `input_content` should be unset.",
+                    "type": "string"
+                },
+                "inputContent": {
+                    "description": "The video data bytes. Encoding: base64. If unset, the input video(s)\nshould be specified via `input_uri`. If set, `input_uri` should be unset.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1beta1_VideoSegment": {
+            "description": "Video segment.",
+            "id": "GoogleCloudVideointelligenceV1beta1_VideoSegment",
+            "properties": {
+                "endTimeOffset": {
+                    "description": "End offset in microseconds (inclusive). Unset means 0.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "startTimeOffset": {
+                    "description": "Start offset in microseconds (inclusive). Unset means 0.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudVideointelligenceV1beta2_LabelSegment": {
+            "description": "Video segment level annotation results for label detection.",
+            "id": "GoogleCloudVideointelligenceV1beta2_LabelSegment",
+            "properties": {
+                "confidence": {
+                    "description": "Confidence that the label is accurate. Range: [0, 1].",
+                    "format": "float",
+                    "type": "number"
+                },
+                "segment": {
+                    "$ref": "GoogleCloudVideointelligenceV1beta2_VideoSegment",
+                    "description": "Video segment where a label was detected."
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/generated/googleapis/CHANGELOG.md b/generated/googleapis/CHANGELOG.md
index 9e46305..72cec11 100644
--- a/generated/googleapis/CHANGELOG.md
+++ b/generated/googleapis/CHANGELOG.md
@@ -1,3 +1,22 @@
+## 0.46.0
+
+* [api] admin:directory_v1
+* [api] bigquery:v2
+* [api] cloudfunctions:v1
+* [api] cloudtrace:v2
+* [api] compute:v1
+* [api] datastore:v1
+* [api] firebasedynamiclinks:v1
+* [api] firebaserules:v1
+* [api] manufacturers:v1
+* [api] monitoring:v3
+* [api] partners:v2
+* [api] slides:v1
+* [api] speech:v1
+* [api-breaking] cloudtrace:v2
+* [api-breaking] manufacturers:v1
+* [api-breaking] servicecontrol:v1
+
 ## 0.45.0
 * [api-new] cloudiot:v1
 * [api-new] testing:v1
diff --git a/generated/googleapis/README.md b/generated/googleapis/README.md
index 0851126..9ed79bf 100644
--- a/generated/googleapis/README.md
+++ b/generated/googleapis/README.md
@@ -597,12 +597,6 @@
 
 Official API documentation: https://cloud.google.com/pubsub/docs
 
-#### ![Logo](https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png) QPX Express API - qpxExpress v1
-
-Finds the least expensive flights between an origin and a destination.
-
-Official API documentation: http://developers.google.com/qpx-express
-
 #### ![Logo](https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png) Enterprise Apps Reseller API - reseller v1
 
 Creates and manages your customers and their subscriptions.
diff --git a/generated/googleapis/lib/acceleratedmobilepageurl/v1.dart b/generated/googleapis/lib/acceleratedmobilepageurl/v1.dart
index 2eb4f55..a139f23 100644
--- a/generated/googleapis/lib/acceleratedmobilepageurl/v1.dart
+++ b/generated/googleapis/lib/acceleratedmobilepageurl/v1.dart
@@ -40,6 +40,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchGetAmpUrlsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -47,8 +50,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<BatchGetAmpUrlsResponse> batchGet(
-      BatchGetAmpUrlsRequest request) {
+  async.Future<BatchGetAmpUrlsResponse> batchGet(BatchGetAmpUrlsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -59,6 +62,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/ampUrls:batchGet';
 
diff --git a/generated/googleapis/lib/adexchangebuyer/v1_3.dart b/generated/googleapis/lib/adexchangebuyer/v1_3.dart
index e8a254d..0520ab7 100644
--- a/generated/googleapis/lib/adexchangebuyer/v1_3.dart
+++ b/generated/googleapis/lib/adexchangebuyer/v1_3.dart
@@ -53,6 +53,9 @@
   ///
   /// [id] - The account id
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -60,7 +63,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Account> get(core.int id) {
+  async.Future<Account> get(core.int id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -71,6 +74,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' + commons.Escaper.ecapeVariable('$id');
 
@@ -87,6 +93,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountsList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -94,7 +103,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AccountsList> list() {
+  async.Future<AccountsList> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -102,6 +111,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'accounts';
 
     var _response = _requester.request(_url, "GET",
@@ -121,6 +134,9 @@
   ///
   /// [id] - The account id
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -128,7 +144,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Account> patch(Account request, core.int id) {
+  async.Future<Account> patch(Account request, core.int id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -142,6 +159,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' + commons.Escaper.ecapeVariable('$id');
 
@@ -162,6 +182,9 @@
   ///
   /// [id] - The account id
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -169,7 +192,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Account> update(Account request, core.int id) {
+  async.Future<Account> update(Account request, core.int id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -183,6 +207,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' + commons.Escaper.ecapeVariable('$id');
 
@@ -207,6 +234,9 @@
   ///
   /// [accountId] - The account id.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BillingInfo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -214,7 +244,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<BillingInfo> get(core.int accountId) {
+  async.Future<BillingInfo> get(core.int accountId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -225,6 +255,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'billinginfo/' + commons.Escaper.ecapeVariable('$accountId');
 
@@ -242,6 +275,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BillingInfoList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -249,7 +285,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<BillingInfoList> list() {
+  async.Future<BillingInfoList> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -257,6 +293,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'billinginfo';
 
     var _response = _requester.request(_url, "GET",
@@ -283,6 +323,9 @@
   ///
   /// [billingId] - The billing id to get the budget information for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Budget].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -290,7 +333,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Budget> get(core.String accountId, core.String billingId) {
+  async.Future<Budget> get(core.String accountId, core.String billingId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -304,6 +348,9 @@
     if (billingId == null) {
       throw new core.ArgumentError("Parameter billingId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'billinginfo/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -331,6 +378,9 @@
   ///
   /// [billingId] - The billing id associated with the budget being updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Budget].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -339,7 +389,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Budget> patch(
-      Budget request, core.String accountId, core.String billingId) {
+      Budget request, core.String accountId, core.String billingId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -356,6 +407,9 @@
     if (billingId == null) {
       throw new core.ArgumentError("Parameter billingId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'billinginfo/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -382,6 +436,9 @@
   ///
   /// [billingId] - The billing id associated with the budget being updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Budget].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -390,7 +447,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Budget> update(
-      Budget request, core.String accountId, core.String billingId) {
+      Budget request, core.String accountId, core.String billingId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -407,6 +465,9 @@
     if (billingId == null) {
       throw new core.ArgumentError("Parameter billingId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'billinginfo/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -437,6 +498,9 @@
   ///
   /// [buyerCreativeId] - The buyer-specific id for this creative.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Creative].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -444,7 +508,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Creative> get(core.int accountId, core.String buyerCreativeId) {
+  async.Future<Creative> get(core.int accountId, core.String buyerCreativeId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -458,6 +523,9 @@
     if (buyerCreativeId == null) {
       throw new core.ArgumentError("Parameter buyerCreativeId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'creatives/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -479,6 +547,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Creative].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -486,7 +557,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Creative> insert(Creative request) {
+  async.Future<Creative> insert(Creative request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -497,6 +568,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'creatives';
 
@@ -535,6 +609,9 @@
   /// - "disapproved" : Creatives which have been disapproved.
   /// - "not_checked" : Creatives whose status is not yet checked.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativesList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -547,7 +624,8 @@
       core.List<core.String> buyerCreativeId,
       core.int maxResults,
       core.String pageToken,
-      core.String statusFilter}) {
+      core.String statusFilter,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -570,6 +648,9 @@
     if (statusFilter != null) {
       _queryParams["statusFilter"] = [statusFilter];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'creatives';
 
@@ -594,6 +675,9 @@
   ///
   /// [id] - The direct deal id
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DirectDeal].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -601,7 +685,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DirectDeal> get(core.String id) {
+  async.Future<DirectDeal> get(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -612,6 +696,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'directdeals/' + commons.Escaper.ecapeVariable('$id');
 
@@ -628,6 +715,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DirectDealsList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -635,7 +725,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DirectDealsList> list() {
+  async.Future<DirectDealsList> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -643,6 +733,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'directdeals';
 
     var _response = _requester.request(_url, "GET",
@@ -681,6 +775,9 @@
   /// reports. To retrieve the next page, set this parameter to the value of
   /// "nextPageToken" from the previous response. Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PerformanceReportList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -690,7 +787,7 @@
   /// this method will complete with the same error.
   async.Future<PerformanceReportList> list(
       core.String accountId, core.String endDateTime, core.String startDateTime,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -716,6 +813,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'performancereport';
 
@@ -743,12 +843,16 @@
   ///
   /// [configId] - The specific id of the configuration to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String accountId, core.String configId) {
+  async.Future delete(core.String accountId, core.String configId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -762,6 +866,9 @@
     if (configId == null) {
       throw new core.ArgumentError("Parameter configId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -787,6 +894,9 @@
   ///
   /// [configId] - The specific id of the configuration to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PretargetingConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -795,7 +905,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PretargetingConfig> get(
-      core.String accountId, core.String configId) {
+      core.String accountId, core.String configId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -809,6 +920,9 @@
     if (configId == null) {
       throw new core.ArgumentError("Parameter configId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'pretargetingconfigs/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -832,6 +946,9 @@
   ///
   /// [accountId] - The account id to insert the pretargeting config for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PretargetingConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -840,7 +957,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PretargetingConfig> insert(
-      PretargetingConfig request, core.String accountId) {
+      PretargetingConfig request, core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -854,6 +972,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'pretargetingconfigs/' + commons.Escaper.ecapeVariable('$accountId');
 
@@ -872,6 +993,9 @@
   ///
   /// [accountId] - The account id to get the pretargeting configs for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PretargetingConfigList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -879,7 +1003,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PretargetingConfigList> list(core.String accountId) {
+  async.Future<PretargetingConfigList> list(core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -890,6 +1015,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'pretargetingconfigs/' + commons.Escaper.ecapeVariable('$accountId');
 
@@ -913,6 +1041,9 @@
   ///
   /// [configId] - The specific id of the configuration to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PretargetingConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -921,7 +1052,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PretargetingConfig> patch(
-      PretargetingConfig request, core.String accountId, core.String configId) {
+      PretargetingConfig request, core.String accountId, core.String configId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -938,6 +1070,9 @@
     if (configId == null) {
       throw new core.ArgumentError("Parameter configId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'pretargetingconfigs/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -963,6 +1098,9 @@
   ///
   /// [configId] - The specific id of the configuration to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PretargetingConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -971,7 +1109,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PretargetingConfig> update(
-      PretargetingConfig request, core.String accountId, core.String configId) {
+      PretargetingConfig request, core.String accountId, core.String configId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -988,6 +1127,9 @@
     if (configId == null) {
       throw new core.ArgumentError("Parameter configId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'pretargetingconfigs/' +
         commons.Escaper.ecapeVariable('$accountId') +
diff --git a/generated/googleapis/lib/adexchangebuyer/v1_4.dart b/generated/googleapis/lib/adexchangebuyer/v1_4.dart
index 87d2da4..d69eb60 100644
--- a/generated/googleapis/lib/adexchangebuyer/v1_4.dart
+++ b/generated/googleapis/lib/adexchangebuyer/v1_4.dart
@@ -61,6 +61,9 @@
   ///
   /// [id] - The account id
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -68,7 +71,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Account> get(core.int id) {
+  async.Future<Account> get(core.int id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -79,6 +82,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' + commons.Escaper.ecapeVariable('$id');
 
@@ -95,6 +101,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountsList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -102,7 +111,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AccountsList> list() {
+  async.Future<AccountsList> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -110,6 +119,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'accounts';
 
     var _response = _requester.request(_url, "GET",
@@ -132,6 +145,9 @@
   /// [confirmUnsafeAccountChange] - Confirmation for erasing bidder and cookie
   /// matching urls.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -140,7 +156,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Account> patch(Account request, core.int id,
-      {core.bool confirmUnsafeAccountChange}) {
+      {core.bool confirmUnsafeAccountChange, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -159,6 +175,9 @@
         "${confirmUnsafeAccountChange}"
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' + commons.Escaper.ecapeVariable('$id');
 
@@ -182,6 +201,9 @@
   /// [confirmUnsafeAccountChange] - Confirmation for erasing bidder and cookie
   /// matching urls.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -190,7 +212,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Account> update(Account request, core.int id,
-      {core.bool confirmUnsafeAccountChange}) {
+      {core.bool confirmUnsafeAccountChange, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -209,6 +231,9 @@
         "${confirmUnsafeAccountChange}"
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' + commons.Escaper.ecapeVariable('$id');
 
@@ -233,6 +258,9 @@
   ///
   /// [accountId] - The account id.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BillingInfo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -240,7 +268,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<BillingInfo> get(core.int accountId) {
+  async.Future<BillingInfo> get(core.int accountId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -251,6 +279,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'billinginfo/' + commons.Escaper.ecapeVariable('$accountId');
 
@@ -268,6 +299,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BillingInfoList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -275,7 +309,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<BillingInfoList> list() {
+  async.Future<BillingInfoList> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -283,6 +317,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'billinginfo';
 
     var _response = _requester.request(_url, "GET",
@@ -309,6 +347,9 @@
   ///
   /// [billingId] - The billing id to get the budget information for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Budget].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -316,7 +357,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Budget> get(core.String accountId, core.String billingId) {
+  async.Future<Budget> get(core.String accountId, core.String billingId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -330,6 +372,9 @@
     if (billingId == null) {
       throw new core.ArgumentError("Parameter billingId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'billinginfo/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -357,6 +402,9 @@
   ///
   /// [billingId] - The billing id associated with the budget being updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Budget].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -365,7 +413,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Budget> patch(
-      Budget request, core.String accountId, core.String billingId) {
+      Budget request, core.String accountId, core.String billingId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -382,6 +431,9 @@
     if (billingId == null) {
       throw new core.ArgumentError("Parameter billingId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'billinginfo/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -408,6 +460,9 @@
   ///
   /// [billingId] - The billing id associated with the budget being updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Budget].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -416,7 +471,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Budget> update(
-      Budget request, core.String accountId, core.String billingId) {
+      Budget request, core.String accountId, core.String billingId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -433,6 +489,9 @@
     if (billingId == null) {
       throw new core.ArgumentError("Parameter billingId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'billinginfo/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -464,13 +523,17 @@
   ///
   /// [dealId] - The id of the deal id to associate with this creative.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future addDeal(
-      core.int accountId, core.String buyerCreativeId, core.String dealId) {
+      core.int accountId, core.String buyerCreativeId, core.String dealId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -487,6 +550,9 @@
     if (dealId == null) {
       throw new core.ArgumentError("Parameter dealId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -515,6 +581,9 @@
   ///
   /// [buyerCreativeId] - The buyer-specific id for this creative.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Creative].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -522,7 +591,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Creative> get(core.int accountId, core.String buyerCreativeId) {
+  async.Future<Creative> get(core.int accountId, core.String buyerCreativeId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -536,6 +606,9 @@
     if (buyerCreativeId == null) {
       throw new core.ArgumentError("Parameter buyerCreativeId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'creatives/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -557,6 +630,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Creative].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -564,7 +640,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Creative> insert(Creative request) {
+  async.Future<Creative> insert(Creative request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -575,6 +651,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'creatives';
 
@@ -627,6 +706,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response. Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativesList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -640,7 +722,8 @@
       core.String dealsStatusFilter,
       core.int maxResults,
       core.String openAuctionStatusFilter,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -666,6 +749,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'creatives';
 
@@ -686,6 +772,9 @@
   ///
   /// [buyerCreativeId] - The buyer-specific id for this creative.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeDealIds].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -694,7 +783,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreativeDealIds> listDeals(
-      core.int accountId, core.String buyerCreativeId) {
+      core.int accountId, core.String buyerCreativeId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -708,6 +798,9 @@
     if (buyerCreativeId == null) {
       throw new core.ArgumentError("Parameter buyerCreativeId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'creatives/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -734,13 +827,17 @@
   ///
   /// [dealId] - The id of the deal id to disassociate with this creative.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future removeDeal(
-      core.int accountId, core.String buyerCreativeId, core.String dealId) {
+      core.int accountId, core.String buyerCreativeId, core.String dealId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -757,6 +854,9 @@
     if (dealId == null) {
       throw new core.ArgumentError("Parameter dealId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -791,6 +891,9 @@
   ///
   /// [proposalId] - The proposalId to delete deals from.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DeleteOrderDealsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -799,7 +902,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DeleteOrderDealsResponse> delete(
-      DeleteOrderDealsRequest request, core.String proposalId) {
+      DeleteOrderDealsRequest request, core.String proposalId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -813,6 +917,9 @@
     if (proposalId == null) {
       throw new core.ArgumentError("Parameter proposalId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'proposals/' +
         commons.Escaper.ecapeVariable('$proposalId') +
@@ -836,6 +943,9 @@
   ///
   /// [proposalId] - proposalId for which deals need to be added.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AddOrderDealsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -844,7 +954,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AddOrderDealsResponse> insert(
-      AddOrderDealsRequest request, core.String proposalId) {
+      AddOrderDealsRequest request, core.String proposalId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -858,6 +969,9 @@
     if (proposalId == null) {
       throw new core.ArgumentError("Parameter proposalId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'proposals/' +
         commons.Escaper.ecapeVariable('$proposalId') +
@@ -881,6 +995,9 @@
   ///
   /// [pqlQuery] - Query string to retrieve specific deals.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetOrderDealsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -889,7 +1006,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetOrderDealsResponse> list(core.String proposalId,
-      {core.String pqlQuery}) {
+      {core.String pqlQuery, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -903,6 +1020,9 @@
     if (pqlQuery != null) {
       _queryParams["pqlQuery"] = [pqlQuery];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'proposals/' + commons.Escaper.ecapeVariable('$proposalId') + '/deals';
@@ -924,6 +1044,9 @@
   ///
   /// [proposalId] - The proposalId to edit deals on.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EditAllOrderDealsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -932,7 +1055,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EditAllOrderDealsResponse> update(
-      EditAllOrderDealsRequest request, core.String proposalId) {
+      EditAllOrderDealsRequest request, core.String proposalId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -946,6 +1070,9 @@
     if (proposalId == null) {
       throw new core.ArgumentError("Parameter proposalId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'proposals/' +
         commons.Escaper.ecapeVariable('$proposalId') +
@@ -976,6 +1103,9 @@
   ///
   /// [proposalId] - The proposalId to add notes for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AddOrderNotesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -984,7 +1114,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AddOrderNotesResponse> insert(
-      AddOrderNotesRequest request, core.String proposalId) {
+      AddOrderNotesRequest request, core.String proposalId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -998,6 +1129,9 @@
     if (proposalId == null) {
       throw new core.ArgumentError("Parameter proposalId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'proposals/' +
         commons.Escaper.ecapeVariable('$proposalId') +
@@ -1023,6 +1157,9 @@
   /// contents of notes, please use syntax like "WHERE note.note = "foo" or
   /// "WHERE note.note LIKE "%bar%"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetOrderNotesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1031,7 +1168,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetOrderNotesResponse> list(core.String proposalId,
-      {core.String pqlQuery}) {
+      {core.String pqlQuery, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1045,6 +1182,9 @@
     if (pqlQuery != null) {
       _queryParams["pqlQuery"] = [pqlQuery];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'proposals/' + commons.Escaper.ecapeVariable('$proposalId') + '/notes';
@@ -1073,13 +1213,17 @@
   ///
   /// [privateAuctionId] - The private auction id to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future updateproposal(UpdatePrivateAuctionProposalRequest request,
-      core.String privateAuctionId) {
+  async.Future updateproposal(
+      UpdatePrivateAuctionProposalRequest request, core.String privateAuctionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1093,6 +1237,9 @@
     if (privateAuctionId == null) {
       throw new core.ArgumentError("Parameter privateAuctionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1136,6 +1283,9 @@
   /// reports. To retrieve the next page, set this parameter to the value of
   /// "nextPageToken" from the previous response. Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PerformanceReportList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1145,7 +1295,7 @@
   /// this method will complete with the same error.
   async.Future<PerformanceReportList> list(
       core.String accountId, core.String endDateTime, core.String startDateTime,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1171,6 +1321,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'performancereport';
 
@@ -1198,12 +1351,16 @@
   ///
   /// [configId] - The specific id of the configuration to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String accountId, core.String configId) {
+  async.Future delete(core.String accountId, core.String configId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1217,6 +1374,9 @@
     if (configId == null) {
       throw new core.ArgumentError("Parameter configId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1242,6 +1402,9 @@
   ///
   /// [configId] - The specific id of the configuration to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PretargetingConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1250,7 +1413,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PretargetingConfig> get(
-      core.String accountId, core.String configId) {
+      core.String accountId, core.String configId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1264,6 +1428,9 @@
     if (configId == null) {
       throw new core.ArgumentError("Parameter configId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'pretargetingconfigs/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1287,6 +1454,9 @@
   ///
   /// [accountId] - The account id to insert the pretargeting config for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PretargetingConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1295,7 +1465,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PretargetingConfig> insert(
-      PretargetingConfig request, core.String accountId) {
+      PretargetingConfig request, core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1309,6 +1480,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'pretargetingconfigs/' + commons.Escaper.ecapeVariable('$accountId');
 
@@ -1327,6 +1501,9 @@
   ///
   /// [accountId] - The account id to get the pretargeting configs for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PretargetingConfigList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1334,7 +1511,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PretargetingConfigList> list(core.String accountId) {
+  async.Future<PretargetingConfigList> list(core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1345,6 +1523,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'pretargetingconfigs/' + commons.Escaper.ecapeVariable('$accountId');
 
@@ -1368,6 +1549,9 @@
   ///
   /// [configId] - The specific id of the configuration to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PretargetingConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1376,7 +1560,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PretargetingConfig> patch(
-      PretargetingConfig request, core.String accountId, core.String configId) {
+      PretargetingConfig request, core.String accountId, core.String configId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1393,6 +1578,9 @@
     if (configId == null) {
       throw new core.ArgumentError("Parameter configId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'pretargetingconfigs/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1418,6 +1606,9 @@
   ///
   /// [configId] - The specific id of the configuration to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PretargetingConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1426,7 +1617,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PretargetingConfig> update(
-      PretargetingConfig request, core.String accountId, core.String configId) {
+      PretargetingConfig request, core.String accountId, core.String configId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1443,6 +1635,9 @@
     if (configId == null) {
       throw new core.ArgumentError("Parameter configId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'pretargetingconfigs/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1470,6 +1665,9 @@
   ///
   /// [productId] - The id for the product to get the head revision for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Product].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1477,7 +1675,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Product> get(core.String productId) {
+  async.Future<Product> get(core.String productId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1488,6 +1686,9 @@
     if (productId == null) {
       throw new core.ArgumentError("Parameter productId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'products/' + commons.Escaper.ecapeVariable('$productId');
 
@@ -1506,6 +1707,9 @@
   ///
   /// [pqlQuery] - The pql query used to query for products.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetOffersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1513,7 +1717,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GetOffersResponse> search({core.String pqlQuery}) {
+  async.Future<GetOffersResponse> search(
+      {core.String pqlQuery, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1524,6 +1729,9 @@
     if (pqlQuery != null) {
       _queryParams["pqlQuery"] = [pqlQuery];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'products/search';
 
@@ -1548,6 +1756,9 @@
   ///
   /// [proposalId] - Id of the proposal to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Proposal].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1555,7 +1766,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Proposal> get(core.String proposalId) {
+  async.Future<Proposal> get(core.String proposalId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1566,6 +1777,9 @@
     if (proposalId == null) {
       throw new core.ArgumentError("Parameter proposalId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'proposals/' + commons.Escaper.ecapeVariable('$proposalId');
 
@@ -1584,6 +1798,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreateOrdersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1591,7 +1808,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CreateOrdersResponse> insert(CreateOrdersRequest request) {
+  async.Future<CreateOrdersResponse> insert(CreateOrdersRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1602,6 +1820,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'proposals/insert';
 
@@ -1637,6 +1858,9 @@
   /// - "unknownAction"
   /// - "updateNonTerms"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Proposal].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1645,7 +1869,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Proposal> patch(Proposal request, core.String proposalId,
-      core.String revisionNumber, core.String updateAction) {
+      core.String revisionNumber, core.String updateAction,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1665,6 +1890,9 @@
     if (updateAction == null) {
       throw new core.ArgumentError("Parameter updateAction is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'proposals/' +
         commons.Escaper.ecapeVariable('$proposalId') +
@@ -1688,6 +1916,9 @@
   ///
   /// [pqlQuery] - Query string to retrieve specific proposals.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetOrdersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1695,7 +1926,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GetOrdersResponse> search({core.String pqlQuery}) {
+  async.Future<GetOrdersResponse> search(
+      {core.String pqlQuery, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1706,6 +1938,9 @@
     if (pqlQuery != null) {
       _queryParams["pqlQuery"] = [pqlQuery];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'proposals/search';
 
@@ -1724,12 +1959,15 @@
   ///
   /// [proposalId] - The proposal id for which the setup is complete
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future setupcomplete(core.String proposalId) {
+  async.Future setupcomplete(core.String proposalId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1740,6 +1978,9 @@
     if (proposalId == null) {
       throw new core.ArgumentError("Parameter proposalId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1779,6 +2020,9 @@
   /// - "unknownAction"
   /// - "updateNonTerms"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Proposal].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1787,7 +2031,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Proposal> update(Proposal request, core.String proposalId,
-      core.String revisionNumber, core.String updateAction) {
+      core.String revisionNumber, core.String updateAction,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1807,6 +2052,9 @@
     if (updateAction == null) {
       throw new core.ArgumentError("Parameter updateAction is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'proposals/' +
         commons.Escaper.ecapeVariable('$proposalId') +
@@ -1836,6 +2084,9 @@
   ///
   /// [accountId] - The accountId of the publisher to get profiles for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetPublisherProfilesByAccountIdResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1843,8 +2094,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GetPublisherProfilesByAccountIdResponse> list(
-      core.int accountId) {
+  async.Future<GetPublisherProfilesByAccountIdResponse> list(core.int accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1855,6 +2106,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'publisher/' +
         commons.Escaper.ecapeVariable('$accountId') +
diff --git a/generated/googleapis/lib/adexchangeseller/v1_1.dart b/generated/googleapis/lib/adexchangeseller/v1_1.dart
index 04d8001..d5b5b5b 100644
--- a/generated/googleapis/lib/adexchangeseller/v1_1.dart
+++ b/generated/googleapis/lib/adexchangeseller/v1_1.dart
@@ -66,6 +66,9 @@
   /// [accountId] - Account to get information about. Tip: 'myaccount' is a
   /// valid ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -73,7 +76,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Account> get(core.String accountId) {
+  async.Future<Account> get(core.String accountId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -84,6 +87,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' + commons.Escaper.ecapeVariable('$accountId');
 
@@ -114,6 +120,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdClients].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -121,7 +130,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AdClients> list({core.int maxResults, core.String pageToken}) {
+  async.Future<AdClients> list(
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -135,6 +145,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients';
 
@@ -164,6 +177,9 @@
   ///
   /// [adUnitId] - Ad unit to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdUnit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -171,7 +187,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AdUnit> get(core.String adClientId, core.String adUnitId) {
+  async.Future<AdUnit> get(core.String adClientId, core.String adUnitId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -185,6 +202,9 @@
     if (adUnitId == null) {
       throw new core.ArgumentError("Parameter adUnitId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -216,6 +236,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdUnits].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -224,7 +247,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdUnits> list(core.String adClientId,
-      {core.bool includeInactive, core.int maxResults, core.String pageToken}) {
+      {core.bool includeInactive,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -244,6 +270,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -281,6 +310,9 @@
   /// To retrieve the next page, set this parameter to the value of
   /// "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannels].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -290,7 +322,7 @@
   /// this method will complete with the same error.
   async.Future<CustomChannels> list(
       core.String adClientId, core.String adUnitId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -310,6 +342,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -340,6 +375,9 @@
   /// locale will be used if this is not supplied. The AdSense default (English)
   /// will be used if the supplied locale is invalid or unsupported.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Alerts].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -347,7 +385,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Alerts> list({core.String locale}) {
+  async.Future<Alerts> list({core.String locale, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -358,6 +396,9 @@
     if (locale != null) {
       _queryParams["locale"] = [locale];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'alerts';
 
@@ -387,6 +428,9 @@
   ///
   /// [customChannelId] - Custom channel to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -395,7 +439,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomChannel> get(
-      core.String adClientId, core.String customChannelId) {
+      core.String adClientId, core.String customChannelId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -409,6 +454,9 @@
     if (customChannelId == null) {
       throw new core.ArgumentError("Parameter customChannelId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -439,6 +487,9 @@
   /// To retrieve the next page, set this parameter to the value of
   /// "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannels].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -447,7 +498,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomChannels> list(core.String adClientId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -464,6 +515,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -503,6 +557,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdUnits].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -512,7 +569,10 @@
   /// this method will complete with the same error.
   async.Future<AdUnits> list(
       core.String adClientId, core.String customChannelId,
-      {core.bool includeInactive, core.int maxResults, core.String pageToken}) {
+      {core.bool includeInactive,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -535,6 +595,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -573,6 +636,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Metadata].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -580,7 +646,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Metadata> list() {
+  async.Future<Metadata> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -588,6 +654,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'metadata/dimensions';
 
     var _response = _requester.request(_url, "GET",
@@ -609,6 +679,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Metadata].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -616,7 +689,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Metadata> list() {
+  async.Future<Metadata> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -624,6 +697,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'metadata/metrics';
 
     var _response = _requester.request(_url, "GET",
@@ -647,6 +724,9 @@
   ///
   /// [dealId] - Preferred deal to get information about.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PreferredDeal].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -654,7 +734,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PreferredDeal> get(core.String dealId) {
+  async.Future<PreferredDeal> get(core.String dealId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -665,6 +745,9 @@
     if (dealId == null) {
       throw new core.ArgumentError("Parameter dealId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'preferreddeals/' + commons.Escaper.ecapeVariable('$dealId');
 
@@ -681,6 +764,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PreferredDeals].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -688,7 +774,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PreferredDeals> list() {
+  async.Future<PreferredDeals> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -696,6 +782,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'preferreddeals';
 
     var _response = _requester.request(_url, "GET",
@@ -755,6 +845,9 @@
   /// [startIndex] - Index of the first row of report data to return.
   /// Value must be between "0" and "5000".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -778,6 +871,7 @@
       core.List<core.String> metric,
       core.List<core.String> sort,
       core.int startIndex,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -816,6 +910,9 @@
     if (startIndex != null) {
       _queryParams["startIndex"] = ["${startIndex}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -858,6 +955,9 @@
   /// [startIndex] - Index of the first row of report data to return.
   /// Value must be between "0" and "5000".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Report].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -866,7 +966,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Report> generate(core.String savedReportId,
-      {core.String locale, core.int maxResults, core.int startIndex}) {
+      {core.String locale,
+      core.int maxResults,
+      core.int startIndex,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -886,6 +989,9 @@
     if (startIndex != null) {
       _queryParams["startIndex"] = ["${startIndex}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'reports/' + commons.Escaper.ecapeVariable('$savedReportId');
 
@@ -910,6 +1016,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SavedReports].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -918,7 +1027,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SavedReports> list(
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -932,6 +1041,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'reports/saved';
 
@@ -965,6 +1077,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UrlChannels].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -973,7 +1088,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UrlChannels> list(core.String adClientId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -990,6 +1105,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
diff --git a/generated/googleapis/lib/adexchangeseller/v2_0.dart b/generated/googleapis/lib/adexchangeseller/v2_0.dart
index 91fb89b..e504532 100644
--- a/generated/googleapis/lib/adexchangeseller/v2_0.dart
+++ b/generated/googleapis/lib/adexchangeseller/v2_0.dart
@@ -70,6 +70,9 @@
   /// [accountId] - Account to get information about. Tip: 'myaccount' is a
   /// valid ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -77,7 +80,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Account> get(core.String accountId) {
+  async.Future<Account> get(core.String accountId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -88,6 +91,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' + commons.Escaper.ecapeVariable('$accountId');
 
@@ -112,6 +118,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Accounts].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -119,7 +128,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Accounts> list({core.int maxResults, core.String pageToken}) {
+  async.Future<Accounts> list(
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -133,6 +143,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts';
 
@@ -166,6 +179,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdClients].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -174,7 +190,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdClients> list(core.String accountId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -191,6 +207,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -221,6 +240,9 @@
   /// locale will be used if this is not supplied. The AdSense default (English)
   /// will be used if the supplied locale is invalid or unsupported.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Alerts].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -228,7 +250,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Alerts> list(core.String accountId, {core.String locale}) {
+  async.Future<Alerts> list(core.String accountId,
+      {core.String locale, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -242,6 +265,9 @@
     if (locale != null) {
       _queryParams["locale"] = [locale];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/alerts';
@@ -272,6 +298,9 @@
   ///
   /// [customChannelId] - Custom channel to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -280,7 +309,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomChannel> get(core.String accountId, core.String adClientId,
-      core.String customChannelId) {
+      core.String customChannelId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -297,6 +327,9 @@
     if (customChannelId == null) {
       throw new core.ArgumentError("Parameter customChannelId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -331,6 +364,9 @@
   /// To retrieve the next page, set this parameter to the value of
   /// "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannels].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -340,7 +376,7 @@
   /// this method will complete with the same error.
   async.Future<CustomChannels> list(
       core.String accountId, core.String adClientId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -360,6 +396,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -401,6 +440,9 @@
   ///
   /// [accountId] - Account with visibility to the dimensions.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Metadata].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -408,7 +450,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Metadata> list(core.String accountId) {
+  async.Future<Metadata> list(core.String accountId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -419,6 +461,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -446,6 +491,9 @@
   ///
   /// [accountId] - Account with visibility to the metrics.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Metadata].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -453,7 +501,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Metadata> list(core.String accountId) {
+  async.Future<Metadata> list(core.String accountId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -464,6 +512,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -493,6 +544,9 @@
   ///
   /// [dealId] - Preferred deal to get information about.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PreferredDeal].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -500,7 +554,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PreferredDeal> get(core.String accountId, core.String dealId) {
+  async.Future<PreferredDeal> get(core.String accountId, core.String dealId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -514,6 +569,9 @@
     if (dealId == null) {
       throw new core.ArgumentError("Parameter dealId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -535,6 +593,9 @@
   ///
   /// [accountId] - Account owning the deals.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PreferredDeals].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -542,7 +603,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PreferredDeals> list(core.String accountId) {
+  async.Future<PreferredDeals> list(core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -553,6 +615,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -618,6 +683,9 @@
   /// [startIndex] - Index of the first row of report data to return.
   /// Value must be between "0" and "5000".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -642,6 +710,7 @@
       core.List<core.String> metric,
       core.List<core.String> sort,
       core.int startIndex,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -683,6 +752,9 @@
     if (startIndex != null) {
       _queryParams["startIndex"] = ["${startIndex}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -729,6 +801,9 @@
   /// [startIndex] - Index of the first row of report data to return.
   /// Value must be between "0" and "5000".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Report].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -738,7 +813,10 @@
   /// this method will complete with the same error.
   async.Future<Report> generate(
       core.String accountId, core.String savedReportId,
-      {core.String locale, core.int maxResults, core.int startIndex}) {
+      {core.String locale,
+      core.int maxResults,
+      core.int startIndex,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -761,6 +839,9 @@
     if (startIndex != null) {
       _queryParams["startIndex"] = ["${startIndex}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -790,6 +871,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SavedReports].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -798,7 +882,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SavedReports> list(core.String accountId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -815,6 +899,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -853,6 +940,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UrlChannels].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -861,7 +951,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UrlChannels> list(core.String accountId, core.String adClientId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -881,6 +971,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
diff --git a/generated/googleapis/lib/adexperiencereport/v1.dart b/generated/googleapis/lib/adexperiencereport/v1.dart
index 8e7aa4d..e493efb 100644
--- a/generated/googleapis/lib/adexperiencereport/v1.dart
+++ b/generated/googleapis/lib/adexperiencereport/v1.dart
@@ -52,6 +52,9 @@
   /// that process before they can gain access to the Ad Experience Report.
   /// Value must have pattern "^sites/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SiteSummaryResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -59,7 +62,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SiteSummaryResponse> get(core.String name) {
+  async.Future<SiteSummaryResponse> get(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -70,6 +74,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -92,6 +99,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ViolatingSitesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -99,7 +109,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ViolatingSitesResponse> list() {
+  async.Future<ViolatingSitesResponse> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -107,6 +117,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'v1/violatingSites';
 
     var _response = _requester.request(_url, "GET",
diff --git a/generated/googleapis/lib/admin/datatransfer_v1.dart b/generated/googleapis/lib/admin/datatransfer_v1.dart
index febc9f7..129a4aa 100644
--- a/generated/googleapis/lib/admin/datatransfer_v1.dart
+++ b/generated/googleapis/lib/admin/datatransfer_v1.dart
@@ -48,6 +48,9 @@
   ///
   /// [applicationId] - ID of the application resource to be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Application].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -55,7 +58,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Application> get(core.String applicationId) {
+  async.Future<Application> get(core.String applicationId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -66,6 +70,9 @@
     if (applicationId == null) {
       throw new core.ArgumentError("Parameter applicationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'applications/' + commons.Escaper.ecapeVariable('$applicationId');
 
@@ -89,6 +96,9 @@
   ///
   /// [pageToken] - Token to specify next page in the list.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ApplicationsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -97,7 +107,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ApplicationsListResponse> list(
-      {core.String customerId, core.int maxResults, core.String pageToken}) {
+      {core.String customerId,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -114,6 +127,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'applications';
 
@@ -140,6 +156,9 @@
   /// [dataTransferId] - ID of the resource to be retrieved. This is returned in
   /// the response from the insert method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DataTransfer].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -147,7 +166,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DataTransfer> get(core.String dataTransferId) {
+  async.Future<DataTransfer> get(core.String dataTransferId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -158,6 +178,9 @@
     if (dataTransferId == null) {
       throw new core.ArgumentError("Parameter dataTransferId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'transfers/' + commons.Escaper.ecapeVariable('$dataTransferId');
 
@@ -176,6 +199,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DataTransfer].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -183,7 +209,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DataTransfer> insert(DataTransfer request) {
+  async.Future<DataTransfer> insert(DataTransfer request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -194,6 +221,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'transfers';
 
@@ -224,6 +254,9 @@
   ///
   /// [status] - Status of the transfer.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DataTransfersListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -237,7 +270,8 @@
       core.String newOwnerUserId,
       core.String oldOwnerUserId,
       core.String pageToken,
-      core.String status}) {
+      core.String status,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -263,6 +297,9 @@
     if (status != null) {
       _queryParams["status"] = [status];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'transfers';
 
diff --git a/generated/googleapis/lib/admin/directory_v1.dart b/generated/googleapis/lib/admin/directory_v1.dart
index 1e7b308..73044d4 100644
--- a/generated/googleapis/lib/admin/directory_v1.dart
+++ b/generated/googleapis/lib/admin/directory_v1.dart
@@ -145,6 +145,8 @@
       new NotificationsResourceApi(_requester);
   OrgunitsResourceApi get orgunits => new OrgunitsResourceApi(_requester);
   PrivilegesResourceApi get privileges => new PrivilegesResourceApi(_requester);
+  ResolvedAppAccessSettingsResourceApi get resolvedAppAccessSettings =>
+      new ResolvedAppAccessSettingsResourceApi(_requester);
   ResourcesResourceApi get resources => new ResourcesResourceApi(_requester);
   RoleAssignmentsResourceApi get roleAssignments =>
       new RoleAssignmentsResourceApi(_requester);
@@ -176,12 +178,16 @@
   ///
   /// [codeId] - The unique ID of the ASP to be deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String userKey, core.int codeId) {
+  async.Future delete(core.String userKey, core.int codeId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -195,6 +201,9 @@
     if (codeId == null) {
       throw new core.ArgumentError("Parameter codeId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -221,6 +230,9 @@
   ///
   /// [codeId] - The unique ID of the ASP.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Asp].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -228,7 +240,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Asp> get(core.String userKey, core.int codeId) {
+  async.Future<Asp> get(core.String userKey, core.int codeId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -242,6 +255,9 @@
     if (codeId == null) {
       throw new core.ArgumentError("Parameter codeId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' +
         commons.Escaper.ecapeVariable('$userKey') +
@@ -264,6 +280,9 @@
   /// [userKey] - Identifies the user in the API request. The value can be the
   /// user's primary email address, alias email address, or unique user ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Asps].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -271,7 +290,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Asps> list(core.String userKey) {
+  async.Future<Asps> list(core.String userKey, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -282,6 +301,9 @@
     if (userKey == null) {
       throw new core.ArgumentError("Parameter userKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' + commons.Escaper.ecapeVariable('$userKey') + '/asps';
 
@@ -306,12 +328,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future stop(Channel request) {
+  async.Future stop(Channel request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -322,6 +347,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -352,13 +380,17 @@
   ///
   /// [resourceId] - Immutable ID of Chrome OS Device
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future action(ChromeOsDeviceAction request, core.String customerId,
-      core.String resourceId) {
+      core.String resourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -375,6 +407,9 @@
     if (resourceId == null) {
       throw new core.ArgumentError("Parameter resourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -407,6 +442,9 @@
   /// serialNumber, status, and user)
   /// - "FULL" : Includes all metadata fields
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChromeOsDevice].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -415,7 +453,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ChromeOsDevice> get(core.String customerId, core.String deviceId,
-      {core.String projection}) {
+      {core.String projection, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -432,6 +470,9 @@
     if (projection != null) {
       _queryParams["projection"] = [projection];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -485,6 +526,9 @@
   /// - "ASCENDING" : Ascending order.
   /// - "DESCENDING" : Descending order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChromeOsDevices].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -499,7 +543,8 @@
       core.String pageToken,
       core.String projection,
       core.String query,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -531,6 +576,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -555,13 +603,17 @@
   ///
   /// [orgUnitPath] - Full path of the target organization unit or its Id
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future moveDevicesToOu(ChromeOsMoveDevicesToOu request,
-      core.String customerId, core.String orgUnitPath) {
+      core.String customerId, core.String orgUnitPath,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -579,6 +631,9 @@
       throw new core.ArgumentError("Parameter orgUnitPath is required.");
     }
     _queryParams["orgUnitPath"] = [orgUnitPath];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -611,6 +666,9 @@
   /// serialNumber, status, and user)
   /// - "FULL" : Includes all metadata fields
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChromeOsDevice].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -620,7 +678,7 @@
   /// this method will complete with the same error.
   async.Future<ChromeOsDevice> patch(
       ChromeOsDevice request, core.String customerId, core.String deviceId,
-      {core.String projection}) {
+      {core.String projection, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -640,6 +698,9 @@
     if (projection != null) {
       _queryParams["projection"] = [projection];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -671,6 +732,9 @@
   /// serialNumber, status, and user)
   /// - "FULL" : Includes all metadata fields
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChromeOsDevice].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -680,7 +744,7 @@
   /// this method will complete with the same error.
   async.Future<ChromeOsDevice> update(
       ChromeOsDevice request, core.String customerId, core.String deviceId,
-      {core.String projection}) {
+      {core.String projection, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -700,6 +764,9 @@
     if (projection != null) {
       _queryParams["projection"] = [projection];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -727,6 +794,9 @@
   ///
   /// [customerKey] - Id of the customer to be retrieved
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Customer].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -734,7 +804,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Customer> get(core.String customerKey) {
+  async.Future<Customer> get(core.String customerKey, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -745,6 +815,9 @@
     if (customerKey == null) {
       throw new core.ArgumentError("Parameter customerKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customers/' + commons.Escaper.ecapeVariable('$customerKey');
 
@@ -765,6 +838,9 @@
   ///
   /// [customerKey] - Id of the customer to be updated
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Customer].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -772,7 +848,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Customer> patch(Customer request, core.String customerKey) {
+  async.Future<Customer> patch(Customer request, core.String customerKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -786,6 +863,9 @@
     if (customerKey == null) {
       throw new core.ArgumentError("Parameter customerKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customers/' + commons.Escaper.ecapeVariable('$customerKey');
 
@@ -806,6 +886,9 @@
   ///
   /// [customerKey] - Id of the customer to be updated
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Customer].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -813,7 +896,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Customer> update(Customer request, core.String customerKey) {
+  async.Future<Customer> update(Customer request, core.String customerKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -827,6 +911,9 @@
     if (customerKey == null) {
       throw new core.ArgumentError("Parameter customerKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customers/' + commons.Escaper.ecapeVariable('$customerKey');
 
@@ -853,12 +940,16 @@
   ///
   /// [domainAliasName] - Name of domain alias to be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String customer, core.String domainAliasName) {
+  async.Future delete(core.String customer, core.String domainAliasName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -872,6 +963,9 @@
     if (domainAliasName == null) {
       throw new core.ArgumentError("Parameter domainAliasName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -897,6 +991,9 @@
   ///
   /// [domainAliasName] - Name of domain alias to be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DomainAlias].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -905,7 +1002,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DomainAlias> get(
-      core.String customer, core.String domainAliasName) {
+      core.String customer, core.String domainAliasName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -919,6 +1017,9 @@
     if (domainAliasName == null) {
       throw new core.ArgumentError("Parameter domainAliasName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -942,6 +1043,9 @@
   ///
   /// [customer] - Immutable ID of the G Suite account.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DomainAlias].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -949,7 +1053,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DomainAlias> insert(DomainAlias request, core.String customer) {
+  async.Future<DomainAlias> insert(DomainAlias request, core.String customer,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -963,6 +1068,9 @@
     if (customer == null) {
       throw new core.ArgumentError("Parameter customer is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -986,6 +1094,9 @@
   /// [parentDomainName] - Name of the parent domain for which domain aliases
   /// are to be fetched.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DomainAliases].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -994,7 +1105,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DomainAliases> list(core.String customer,
-      {core.String parentDomainName}) {
+      {core.String parentDomainName, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1008,6 +1119,9 @@
     if (parentDomainName != null) {
       _queryParams["parentDomainName"] = [parentDomainName];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -1036,12 +1150,16 @@
   ///
   /// [domainName] - Name of domain to be deleted
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String customer, core.String domainName) {
+  async.Future delete(core.String customer, core.String domainName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1055,6 +1173,9 @@
     if (domainName == null) {
       throw new core.ArgumentError("Parameter domainName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1080,6 +1201,9 @@
   ///
   /// [domainName] - Name of domain to be retrieved
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Domains].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1087,7 +1211,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Domains> get(core.String customer, core.String domainName) {
+  async.Future<Domains> get(core.String customer, core.String domainName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1101,6 +1226,9 @@
     if (domainName == null) {
       throw new core.ArgumentError("Parameter domainName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -1124,6 +1252,9 @@
   ///
   /// [customer] - Immutable ID of the G Suite account.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Domains].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1131,7 +1262,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Domains> insert(Domains request, core.String customer) {
+  async.Future<Domains> insert(Domains request, core.String customer,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1145,6 +1277,9 @@
     if (customer == null) {
       throw new core.ArgumentError("Parameter customer is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'customer/' + commons.Escaper.ecapeVariable('$customer') + '/domains';
@@ -1164,6 +1299,9 @@
   ///
   /// [customer] - Immutable ID of the G Suite account.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Domains2].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1171,7 +1309,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Domains2> list(core.String customer) {
+  async.Future<Domains2> list(core.String customer, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1182,6 +1320,9 @@
     if (customer == null) {
       throw new core.ArgumentError("Parameter customer is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'customer/' + commons.Escaper.ecapeVariable('$customer') + '/domains';
@@ -1210,12 +1351,15 @@
   ///
   /// [groupKey] - Email or immutable Id of the group
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String groupKey) {
+  async.Future delete(core.String groupKey, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1226,6 +1370,9 @@
     if (groupKey == null) {
       throw new core.ArgumentError("Parameter groupKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1246,6 +1393,9 @@
   ///
   /// [groupKey] - Email or immutable Id of the group
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Group].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1253,7 +1403,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Group> get(core.String groupKey) {
+  async.Future<Group> get(core.String groupKey, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1264,6 +1414,9 @@
     if (groupKey == null) {
       throw new core.ArgumentError("Parameter groupKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groups/' + commons.Escaper.ecapeVariable('$groupKey');
 
@@ -1282,6 +1435,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Group].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1289,7 +1445,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Group> insert(Group request) {
+  async.Future<Group> insert(Group request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1300,6 +1456,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groups';
 
@@ -1331,6 +1490,9 @@
   /// be listed, the given user is a member of. If Id, it should match with id
   /// of user object
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Groups].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1343,7 +1505,8 @@
       core.String domain,
       core.int maxResults,
       core.String pageToken,
-      core.String userKey}) {
+      core.String userKey,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1366,6 +1529,9 @@
     if (userKey != null) {
       _queryParams["userKey"] = [userKey];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groups';
 
@@ -1387,6 +1553,9 @@
   /// [groupKey] - Email or immutable Id of the group. If Id, it should match
   /// with id of group object
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Group].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1394,7 +1563,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Group> patch(Group request, core.String groupKey) {
+  async.Future<Group> patch(Group request, core.String groupKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1408,6 +1578,9 @@
     if (groupKey == null) {
       throw new core.ArgumentError("Parameter groupKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groups/' + commons.Escaper.ecapeVariable('$groupKey');
 
@@ -1429,6 +1602,9 @@
   /// [groupKey] - Email or immutable Id of the group. If Id, it should match
   /// with id of group object
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Group].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1436,7 +1612,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Group> update(Group request, core.String groupKey) {
+  async.Future<Group> update(Group request, core.String groupKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1450,6 +1627,9 @@
     if (groupKey == null) {
       throw new core.ArgumentError("Parameter groupKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groups/' + commons.Escaper.ecapeVariable('$groupKey');
 
@@ -1476,12 +1656,16 @@
   ///
   /// [alias] - The alias to be removed
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String groupKey, core.String alias) {
+  async.Future delete(core.String groupKey, core.String alias,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1495,6 +1679,9 @@
     if (alias == null) {
       throw new core.ArgumentError("Parameter alias is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1520,6 +1707,9 @@
   ///
   /// [groupKey] - Email or immutable Id of the group
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Alias].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1527,7 +1717,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Alias> insert(Alias request, core.String groupKey) {
+  async.Future<Alias> insert(Alias request, core.String groupKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1541,6 +1732,9 @@
     if (groupKey == null) {
       throw new core.ArgumentError("Parameter groupKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groups/' + commons.Escaper.ecapeVariable('$groupKey') + '/aliases';
 
@@ -1559,6 +1753,9 @@
   ///
   /// [groupKey] - Email or immutable Id of the group
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Aliases].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1566,7 +1763,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Aliases> list(core.String groupKey) {
+  async.Future<Aliases> list(core.String groupKey, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1577,6 +1774,9 @@
     if (groupKey == null) {
       throw new core.ArgumentError("Parameter groupKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groups/' + commons.Escaper.ecapeVariable('$groupKey') + '/aliases';
 
@@ -1603,12 +1803,16 @@
   ///
   /// [memberKey] - Email or immutable Id of the member
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String groupKey, core.String memberKey) {
+  async.Future delete(core.String groupKey, core.String memberKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1622,6 +1826,9 @@
     if (memberKey == null) {
       throw new core.ArgumentError("Parameter memberKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1647,6 +1854,9 @@
   ///
   /// [memberKey] - Email or immutable Id of the member
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Member].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1654,7 +1864,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Member> get(core.String groupKey, core.String memberKey) {
+  async.Future<Member> get(core.String groupKey, core.String memberKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1668,6 +1879,9 @@
     if (memberKey == null) {
       throw new core.ArgumentError("Parameter memberKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groups/' +
         commons.Escaper.ecapeVariable('$groupKey') +
@@ -1691,6 +1905,9 @@
   ///
   /// [groupKey] - Email or immutable Id of the group
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Member].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1698,7 +1915,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Member> insert(Member request, core.String groupKey) {
+  async.Future<Member> insert(Member request, core.String groupKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1712,6 +1930,9 @@
     if (groupKey == null) {
       throw new core.ArgumentError("Parameter groupKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groups/' + commons.Escaper.ecapeVariable('$groupKey') + '/members';
 
@@ -1736,6 +1957,9 @@
   ///
   /// [roles] - Comma separated role values to filter list results on.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Members].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1744,7 +1968,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Members> list(core.String groupKey,
-      {core.int maxResults, core.String pageToken, core.String roles}) {
+      {core.int maxResults,
+      core.String pageToken,
+      core.String roles,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1764,6 +1991,9 @@
     if (roles != null) {
       _queryParams["roles"] = [roles];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groups/' + commons.Escaper.ecapeVariable('$groupKey') + '/members';
 
@@ -1789,6 +2019,9 @@
   /// [memberKey] - Email or immutable Id of the user. If Id, it should match
   /// with id of member object
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Member].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1797,7 +2030,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Member> patch(
-      Member request, core.String groupKey, core.String memberKey) {
+      Member request, core.String groupKey, core.String memberKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1814,6 +2048,9 @@
     if (memberKey == null) {
       throw new core.ArgumentError("Parameter memberKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groups/' +
         commons.Escaper.ecapeVariable('$groupKey') +
@@ -1841,6 +2078,9 @@
   /// [memberKey] - Email or immutable Id of the user. If Id, it should match
   /// with id of member object
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Member].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1849,7 +2089,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Member> update(
-      Member request, core.String groupKey, core.String memberKey) {
+      Member request, core.String groupKey, core.String memberKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1866,6 +2107,9 @@
     if (memberKey == null) {
       throw new core.ArgumentError("Parameter memberKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groups/' +
         commons.Escaper.ecapeVariable('$groupKey') +
@@ -1897,13 +2141,17 @@
   ///
   /// [resourceId] - Immutable ID of Mobile Device
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future action(MobileDeviceAction request, core.String customerId,
-      core.String resourceId) {
+      core.String resourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1920,6 +2168,9 @@
     if (resourceId == null) {
       throw new core.ArgumentError("Parameter resourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1946,12 +2197,16 @@
   ///
   /// [resourceId] - Immutable ID of Mobile Device
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String customerId, core.String resourceId) {
+  async.Future delete(core.String customerId, core.String resourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1965,6 +2220,9 @@
     if (resourceId == null) {
       throw new core.ArgumentError("Parameter resourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1996,6 +2254,9 @@
   /// model, status, type, and status)
   /// - "FULL" : Includes all metadata fields
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MobileDevice].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2004,7 +2265,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<MobileDevice> get(core.String customerId, core.String resourceId,
-      {core.String projection}) {
+      {core.String projection, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2021,6 +2282,9 @@
     if (projection != null) {
       _queryParams["projection"] = [projection];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -2072,6 +2336,9 @@
   /// - "ASCENDING" : Ascending order.
   /// - "DESCENDING" : Descending order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MobileDevices].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2085,7 +2352,8 @@
       core.String pageToken,
       core.String projection,
       core.String query,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2114,6 +2382,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -2143,12 +2414,16 @@
   ///
   /// [notificationId] - The unique ID of the notification.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String customer, core.String notificationId) {
+  async.Future delete(core.String customer, core.String notificationId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2162,6 +2437,9 @@
     if (notificationId == null) {
       throw new core.ArgumentError("Parameter notificationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2188,6 +2466,9 @@
   ///
   /// [notificationId] - The unique ID of the notification.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Notification].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2196,7 +2477,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Notification> get(
-      core.String customer, core.String notificationId) {
+      core.String customer, core.String notificationId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2210,6 +2492,9 @@
     if (notificationId == null) {
       throw new core.ArgumentError("Parameter notificationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -2239,6 +2524,9 @@
   ///
   /// [pageToken] - The token to specify the page of results to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Notifications].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2247,7 +2535,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Notifications> list(core.String customer,
-      {core.String language, core.int maxResults, core.String pageToken}) {
+      {core.String language,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2267,6 +2558,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -2291,6 +2585,9 @@
   ///
   /// [notificationId] - The unique ID of the notification.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Notification].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2299,7 +2596,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Notification> patch(
-      Notification request, core.String customer, core.String notificationId) {
+      Notification request, core.String customer, core.String notificationId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2316,6 +2614,9 @@
     if (notificationId == null) {
       throw new core.ArgumentError("Parameter notificationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -2341,6 +2642,9 @@
   ///
   /// [notificationId] - The unique ID of the notification.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Notification].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2349,7 +2653,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Notification> update(
-      Notification request, core.String customer, core.String notificationId) {
+      Notification request, core.String customer, core.String notificationId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2366,6 +2671,9 @@
     if (notificationId == null) {
       throw new core.ArgumentError("Parameter notificationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -2395,13 +2703,17 @@
   ///
   /// [orgUnitPath] - Full path of the organization unit or its Id
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String customerId, core.List<core.String> orgUnitPath) {
+      core.String customerId, core.List<core.String> orgUnitPath,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2415,6 +2727,9 @@
     if (orgUnitPath == null || orgUnitPath.isEmpty) {
       throw new core.ArgumentError("Parameter orgUnitPath is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2443,6 +2758,9 @@
   ///
   /// [orgUnitPath] - Full path of the organization unit or its Id
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrgUnit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2451,7 +2769,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrgUnit> get(
-      core.String customerId, core.List<core.String> orgUnitPath) {
+      core.String customerId, core.List<core.String> orgUnitPath,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2465,6 +2784,9 @@
     if (orgUnitPath == null || orgUnitPath.isEmpty) {
       throw new core.ArgumentError("Parameter orgUnitPath is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -2491,6 +2813,9 @@
   ///
   /// [customerId] - Immutable ID of the G Suite account
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrgUnit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2498,7 +2823,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<OrgUnit> insert(OrgUnit request, core.String customerId) {
+  async.Future<OrgUnit> insert(OrgUnit request, core.String customerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2512,6 +2838,9 @@
     if (customerId == null) {
       throw new core.ArgumentError("Parameter customerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -2540,6 +2869,9 @@
   /// - "all" : All sub-organization units.
   /// - "children" : Immediate children only (default).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrgUnits].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2548,7 +2880,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrgUnits> list(core.String customerId,
-      {core.String orgUnitPath, core.String type}) {
+      {core.String orgUnitPath, core.String type, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2565,6 +2897,9 @@
     if (type != null) {
       _queryParams["type"] = [type];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -2589,6 +2924,9 @@
   ///
   /// [orgUnitPath] - Full path of the organization unit or its Id
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrgUnit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2597,7 +2935,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrgUnit> patch(OrgUnit request, core.String customerId,
-      core.List<core.String> orgUnitPath) {
+      core.List<core.String> orgUnitPath,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2614,6 +2953,9 @@
     if (orgUnitPath == null || orgUnitPath.isEmpty) {
       throw new core.ArgumentError("Parameter orgUnitPath is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -2642,6 +2984,9 @@
   ///
   /// [orgUnitPath] - Full path of the organization unit or its Id
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrgUnit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2650,7 +2995,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrgUnit> update(OrgUnit request, core.String customerId,
-      core.List<core.String> orgUnitPath) {
+      core.List<core.String> orgUnitPath,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2667,6 +3013,9 @@
     if (orgUnitPath == null || orgUnitPath.isEmpty) {
       throw new core.ArgumentError("Parameter orgUnitPath is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -2697,6 +3046,9 @@
   ///
   /// [customer] - Immutable ID of the G Suite account.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Privileges].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2704,7 +3056,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Privileges> list(core.String customer) {
+  async.Future<Privileges> list(core.String customer, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2715,6 +3067,9 @@
     if (customer == null) {
       throw new core.ArgumentError("Parameter customer is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -2730,6 +3085,87 @@
   }
 }
 
+class ResolvedAppAccessSettingsResourceApi {
+  final commons.ApiRequester _requester;
+
+  ResolvedAppAccessSettingsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Retrieves resolved app access settings of the logged in user.
+  ///
+  /// Request parameters:
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [AppAccessCollections].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<AppAccessCollections> GetSettings({core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'resolvedappaccesssettings';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new AppAccessCollections.fromJson(data));
+  }
+
+  /// Retrieves the list of apps trusted by the admin of the logged in user.
+  ///
+  /// Request parameters:
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [TrustedApps].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<TrustedApps> ListTrustedApps({core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'trustedapps';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new TrustedApps.fromJson(data));
+  }
+}
+
 class ResourcesResourceApi {
   final commons.ApiRequester _requester;
 
@@ -2755,12 +3191,16 @@
   ///
   /// [calendarResourceId] - The unique ID of the calendar resource to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String customer, core.String calendarResourceId) {
+  async.Future delete(core.String customer, core.String calendarResourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2774,6 +3214,9 @@
     if (calendarResourceId == null) {
       throw new core.ArgumentError("Parameter calendarResourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2801,6 +3244,9 @@
   ///
   /// [calendarResourceId] - The unique ID of the calendar resource to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CalendarResource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2809,7 +3255,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CalendarResource> get(
-      core.String customer, core.String calendarResourceId) {
+      core.String customer, core.String calendarResourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2823,6 +3270,9 @@
     if (calendarResourceId == null) {
       throw new core.ArgumentError("Parameter calendarResourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -2848,6 +3298,9 @@
   /// account administrator, you can also use the my_customer alias to represent
   /// your account's customer ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CalendarResource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2856,7 +3309,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CalendarResource> insert(
-      CalendarResource request, core.String customer) {
+      CalendarResource request, core.String customer,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2870,6 +3324,9 @@
     if (customer == null) {
       throw new core.ArgumentError("Parameter customer is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -2897,6 +3354,9 @@
   ///
   /// [pageToken] - Token to specify the next page in the list.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CalendarResources].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2905,7 +3365,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CalendarResources> list(core.String customer,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2922,6 +3382,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -2936,7 +3399,11 @@
     return _response.then((data) => new CalendarResources.fromJson(data));
   }
 
-  /// Updates a calendar resource. This method supports patch semantics.
+  /// Updates a calendar resource.
+  ///
+  /// This method supports patch semantics, meaning you only need to include the
+  /// fields you wish to update. Fields that are not present in the request will
+  /// be preserved. This method supports patch semantics.
   ///
   /// [request] - The metadata request object.
   ///
@@ -2948,6 +3415,9 @@
   ///
   /// [calendarResourceId] - The unique ID of the calendar resource to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CalendarResource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2956,7 +3426,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CalendarResource> patch(CalendarResource request,
-      core.String customer, core.String calendarResourceId) {
+      core.String customer, core.String calendarResourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2973,6 +3444,9 @@
     if (calendarResourceId == null) {
       throw new core.ArgumentError("Parameter calendarResourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -2990,6 +3464,10 @@
 
   /// Updates a calendar resource.
   ///
+  /// This method supports patch semantics, meaning you only need to include the
+  /// fields you wish to update. Fields that are not present in the request will
+  /// be preserved.
+  ///
   /// [request] - The metadata request object.
   ///
   /// Request parameters:
@@ -3000,6 +3478,9 @@
   ///
   /// [calendarResourceId] - The unique ID of the calendar resource to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CalendarResource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3008,7 +3489,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CalendarResource> update(CalendarResource request,
-      core.String customer, core.String calendarResourceId) {
+      core.String customer, core.String calendarResourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3025,6 +3507,9 @@
     if (calendarResourceId == null) {
       throw new core.ArgumentError("Parameter calendarResourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -3054,12 +3539,16 @@
   ///
   /// [roleAssignmentId] - Immutable ID of the role assignment.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String customer, core.String roleAssignmentId) {
+  async.Future delete(core.String customer, core.String roleAssignmentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3073,6 +3562,9 @@
     if (roleAssignmentId == null) {
       throw new core.ArgumentError("Parameter roleAssignmentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3098,6 +3590,9 @@
   ///
   /// [roleAssignmentId] - Immutable ID of the role assignment.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RoleAssignment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3106,7 +3601,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RoleAssignment> get(
-      core.String customer, core.String roleAssignmentId) {
+      core.String customer, core.String roleAssignmentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3120,6 +3616,9 @@
     if (roleAssignmentId == null) {
       throw new core.ArgumentError("Parameter roleAssignmentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -3143,6 +3642,9 @@
   ///
   /// [customer] - Immutable ID of the G Suite account.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RoleAssignment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3151,7 +3653,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RoleAssignment> insert(
-      RoleAssignment request, core.String customer) {
+      RoleAssignment request, core.String customer,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3165,6 +3668,9 @@
     if (customer == null) {
       throw new core.ArgumentError("Parameter customer is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -3197,6 +3703,9 @@
   /// unique user ID. If included in the request, returns role assignments only
   /// for this user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RoleAssignments].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3208,7 +3717,8 @@
       {core.int maxResults,
       core.String pageToken,
       core.String roleId,
-      core.String userKey}) {
+      core.String userKey,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3231,6 +3741,9 @@
     if (userKey != null) {
       _queryParams["userKey"] = [userKey];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -3259,12 +3772,16 @@
   ///
   /// [roleId] - Immutable ID of the role.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String customer, core.String roleId) {
+  async.Future delete(core.String customer, core.String roleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3278,6 +3795,9 @@
     if (roleId == null) {
       throw new core.ArgumentError("Parameter roleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3303,6 +3823,9 @@
   ///
   /// [roleId] - Immutable ID of the role.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Role].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3310,7 +3833,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Role> get(core.String customer, core.String roleId) {
+  async.Future<Role> get(core.String customer, core.String roleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3324,6 +3848,9 @@
     if (roleId == null) {
       throw new core.ArgumentError("Parameter roleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -3347,6 +3874,9 @@
   ///
   /// [customer] - Immutable ID of the G Suite account.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Role].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3354,7 +3884,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Role> insert(Role request, core.String customer) {
+  async.Future<Role> insert(Role request, core.String customer,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3368,6 +3899,9 @@
     if (customer == null) {
       throw new core.ArgumentError("Parameter customer is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' + commons.Escaper.ecapeVariable('$customer') + '/roles';
 
@@ -3391,6 +3925,9 @@
   ///
   /// [pageToken] - Token to specify the next page in the list.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Roles].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3399,7 +3936,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Roles> list(core.String customer,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3416,6 +3953,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' + commons.Escaper.ecapeVariable('$customer') + '/roles';
 
@@ -3438,6 +3978,9 @@
   ///
   /// [roleId] - Immutable ID of the role.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Role].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3446,7 +3989,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Role> patch(
-      Role request, core.String customer, core.String roleId) {
+      Role request, core.String customer, core.String roleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3463,6 +4007,9 @@
     if (roleId == null) {
       throw new core.ArgumentError("Parameter roleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -3488,6 +4035,9 @@
   ///
   /// [roleId] - Immutable ID of the role.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Role].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3496,7 +4046,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Role> update(
-      Role request, core.String customer, core.String roleId) {
+      Role request, core.String customer, core.String roleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3513,6 +4064,9 @@
     if (roleId == null) {
       throw new core.ArgumentError("Parameter roleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customer') +
@@ -3542,12 +4096,16 @@
   ///
   /// [schemaKey] - Name or immutable Id of the schema
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String customerId, core.String schemaKey) {
+  async.Future delete(core.String customerId, core.String schemaKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3561,6 +4119,9 @@
     if (schemaKey == null) {
       throw new core.ArgumentError("Parameter schemaKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3586,6 +4147,9 @@
   ///
   /// [schemaKey] - Name or immutable Id of the schema
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Schema].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3593,7 +4157,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Schema> get(core.String customerId, core.String schemaKey) {
+  async.Future<Schema> get(core.String customerId, core.String schemaKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3607,6 +4172,9 @@
     if (schemaKey == null) {
       throw new core.ArgumentError("Parameter schemaKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -3630,6 +4198,9 @@
   ///
   /// [customerId] - Immutable ID of the G Suite account
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Schema].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3637,7 +4208,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Schema> insert(Schema request, core.String customerId) {
+  async.Future<Schema> insert(Schema request, core.String customerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3651,6 +4223,9 @@
     if (customerId == null) {
       throw new core.ArgumentError("Parameter customerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'customer/' + commons.Escaper.ecapeVariable('$customerId') + '/schemas';
@@ -3670,6 +4245,9 @@
   ///
   /// [customerId] - Immutable ID of the G Suite account
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Schemas].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3677,7 +4255,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Schemas> list(core.String customerId) {
+  async.Future<Schemas> list(core.String customerId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3688,6 +4266,9 @@
     if (customerId == null) {
       throw new core.ArgumentError("Parameter customerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'customer/' + commons.Escaper.ecapeVariable('$customerId') + '/schemas';
@@ -3711,6 +4292,9 @@
   ///
   /// [schemaKey] - Name or immutable Id of the schema.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Schema].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3719,7 +4303,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Schema> patch(
-      Schema request, core.String customerId, core.String schemaKey) {
+      Schema request, core.String customerId, core.String schemaKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3736,6 +4321,9 @@
     if (schemaKey == null) {
       throw new core.ArgumentError("Parameter schemaKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -3761,6 +4349,9 @@
   ///
   /// [schemaKey] - Name or immutable Id of the schema.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Schema].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3769,7 +4360,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Schema> update(
-      Schema request, core.String customerId, core.String schemaKey) {
+      Schema request, core.String customerId, core.String schemaKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3786,6 +4378,9 @@
     if (schemaKey == null) {
       throw new core.ArgumentError("Parameter schemaKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customer/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -3816,12 +4411,16 @@
   ///
   /// [clientId] - The Client ID of the application the token is issued to.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String userKey, core.String clientId) {
+  async.Future delete(core.String userKey, core.String clientId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3835,6 +4434,9 @@
     if (clientId == null) {
       throw new core.ArgumentError("Parameter clientId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3861,6 +4463,9 @@
   ///
   /// [clientId] - The Client ID of the application the token is issued to.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Token].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3868,7 +4473,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Token> get(core.String userKey, core.String clientId) {
+  async.Future<Token> get(core.String userKey, core.String clientId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3882,6 +4488,9 @@
     if (clientId == null) {
       throw new core.ArgumentError("Parameter clientId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' +
         commons.Escaper.ecapeVariable('$userKey') +
@@ -3905,6 +4514,9 @@
   /// [userKey] - Identifies the user in the API request. The value can be the
   /// user's primary email address, alias email address, or unique user ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Tokens].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3912,7 +4524,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Tokens> list(core.String userKey) {
+  async.Future<Tokens> list(core.String userKey, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3923,6 +4535,9 @@
     if (userKey == null) {
       throw new core.ArgumentError("Parameter userKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' + commons.Escaper.ecapeVariable('$userKey') + '/tokens';
 
@@ -3951,12 +4566,15 @@
   ///
   /// [userKey] - Email or immutable Id of the user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String userKey) {
+  async.Future delete(core.String userKey, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3967,6 +4585,9 @@
     if (userKey == null) {
       throw new core.ArgumentError("Parameter userKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -4003,6 +4624,9 @@
   /// - "admin_view" : Fetches the ADMIN_VIEW of the user.
   /// - "domain_public" : Fetches the DOMAIN_PUBLIC view of the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [User].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4013,7 +4637,8 @@
   async.Future<User> get(core.String userKey,
       {core.String customFieldMask,
       core.String projection,
-      core.String viewType}) {
+      core.String viewType,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4033,6 +4658,9 @@
     if (viewType != null) {
       _queryParams["viewType"] = [viewType];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' + commons.Escaper.ecapeVariable('$userKey');
 
@@ -4051,6 +4679,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [User].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4058,7 +4689,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<User> insert(User request) {
+  async.Future<User> insert(User request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4069,6 +4700,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users';
 
@@ -4139,6 +4773,9 @@
   /// - "admin_view" : Fetches the ADMIN_VIEW of the user.
   /// - "domain_public" : Fetches the DOMAIN_PUBLIC view of the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Users].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4158,7 +4795,8 @@
       core.String query,
       core.String showDeleted,
       core.String sortOrder,
-      core.String viewType}) {
+      core.String viewType,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4202,6 +4840,9 @@
     if (viewType != null) {
       _queryParams["viewType"] = [viewType];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users';
 
@@ -4222,12 +4863,16 @@
   ///
   /// [userKey] - Email or immutable Id of the user as admin
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future makeAdmin(UserMakeAdmin request, core.String userKey) {
+  async.Future makeAdmin(UserMakeAdmin request, core.String userKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4241,6 +4886,9 @@
     if (userKey == null) {
       throw new core.ArgumentError("Parameter userKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -4264,6 +4912,9 @@
   /// [userKey] - Email or immutable Id of the user. If Id, it should match with
   /// id of user object
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [User].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4271,7 +4922,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<User> patch(User request, core.String userKey) {
+  async.Future<User> patch(User request, core.String userKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4285,6 +4937,9 @@
     if (userKey == null) {
       throw new core.ArgumentError("Parameter userKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' + commons.Escaper.ecapeVariable('$userKey');
 
@@ -4305,12 +4960,16 @@
   ///
   /// [userKey] - The immutable id of the user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future undelete(UserUndelete request, core.String userKey) {
+  async.Future undelete(UserUndelete request, core.String userKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4324,6 +4983,9 @@
     if (userKey == null) {
       throw new core.ArgumentError("Parameter userKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -4347,6 +5009,9 @@
   /// [userKey] - Email or immutable Id of the user. If Id, it should match with
   /// id of user object
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [User].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4354,7 +5019,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<User> update(User request, core.String userKey) {
+  async.Future<User> update(User request, core.String userKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4368,6 +5034,9 @@
     if (userKey == null) {
       throw new core.ArgumentError("Parameter userKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' + commons.Escaper.ecapeVariable('$userKey');
 
@@ -4440,6 +5109,9 @@
   /// - "admin_view" : Fetches the ADMIN_VIEW of the user.
   /// - "domain_public" : Fetches the DOMAIN_PUBLIC view of the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Channel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4459,7 +5131,8 @@
       core.String query,
       core.String showDeleted,
       core.String sortOrder,
-      core.String viewType}) {
+      core.String viewType,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4506,6 +5179,9 @@
     if (viewType != null) {
       _queryParams["viewType"] = [viewType];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/watch';
 
@@ -4532,12 +5208,16 @@
   ///
   /// [alias] - The alias to be removed
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String userKey, core.String alias) {
+  async.Future delete(core.String userKey, core.String alias,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4551,6 +5231,9 @@
     if (alias == null) {
       throw new core.ArgumentError("Parameter alias is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -4576,6 +5259,9 @@
   ///
   /// [userKey] - Email or immutable Id of the user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Alias].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4583,7 +5269,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Alias> insert(Alias request, core.String userKey) {
+  async.Future<Alias> insert(Alias request, core.String userKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4597,6 +5284,9 @@
     if (userKey == null) {
       throw new core.ArgumentError("Parameter userKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' + commons.Escaper.ecapeVariable('$userKey') + '/aliases';
 
@@ -4620,6 +5310,9 @@
   /// - "add" : Alias Created Event
   /// - "delete" : Alias Deleted Event
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Aliases].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4627,7 +5320,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Aliases> list(core.String userKey, {core.String event}) {
+  async.Future<Aliases> list(core.String userKey,
+      {core.String event, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4641,6 +5335,9 @@
     if (event != null) {
       _queryParams["event"] = [event];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' + commons.Escaper.ecapeVariable('$userKey') + '/aliases';
 
@@ -4666,6 +5363,9 @@
   /// - "add" : Alias Created Event
   /// - "delete" : Alias Deleted Event
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Channel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4674,7 +5374,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Channel> watch(Channel request, core.String userKey,
-      {core.String event}) {
+      {core.String event, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4691,6 +5391,9 @@
     if (event != null) {
       _queryParams["event"] = [event];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'users/' + commons.Escaper.ecapeVariable('$userKey') + '/aliases/watch';
@@ -4716,12 +5419,15 @@
   ///
   /// [userKey] - Email or immutable Id of the user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String userKey) {
+  async.Future delete(core.String userKey, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4732,6 +5438,9 @@
     if (userKey == null) {
       throw new core.ArgumentError("Parameter userKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -4754,6 +5463,9 @@
   ///
   /// [userKey] - Email or immutable Id of the user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserPhoto].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4761,7 +5473,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UserPhoto> get(core.String userKey) {
+  async.Future<UserPhoto> get(core.String userKey, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4772,6 +5484,9 @@
     if (userKey == null) {
       throw new core.ArgumentError("Parameter userKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' +
         commons.Escaper.ecapeVariable('$userKey') +
@@ -4794,6 +5509,9 @@
   ///
   /// [userKey] - Email or immutable Id of the user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserPhoto].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4801,7 +5519,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UserPhoto> patch(UserPhoto request, core.String userKey) {
+  async.Future<UserPhoto> patch(UserPhoto request, core.String userKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4815,6 +5534,9 @@
     if (userKey == null) {
       throw new core.ArgumentError("Parameter userKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' +
         commons.Escaper.ecapeVariable('$userKey') +
@@ -4837,6 +5559,9 @@
   ///
   /// [userKey] - Email or immutable Id of the user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserPhoto].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4844,7 +5569,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UserPhoto> update(UserPhoto request, core.String userKey) {
+  async.Future<UserPhoto> update(UserPhoto request, core.String userKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4858,6 +5584,9 @@
     if (userKey == null) {
       throw new core.ArgumentError("Parameter userKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' +
         commons.Escaper.ecapeVariable('$userKey') +
@@ -4885,12 +5614,15 @@
   ///
   /// [userKey] - Email or immutable Id of the user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future generate(core.String userKey) {
+  async.Future generate(core.String userKey, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4901,6 +5633,9 @@
     if (userKey == null) {
       throw new core.ArgumentError("Parameter userKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -4923,12 +5658,15 @@
   ///
   /// [userKey] - Email or immutable Id of the user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future invalidate(core.String userKey) {
+  async.Future invalidate(core.String userKey, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4939,6 +5677,9 @@
     if (userKey == null) {
       throw new core.ArgumentError("Parameter userKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -4963,6 +5704,9 @@
   /// [userKey] - Identifies the user in the API request. The value can be the
   /// user's primary email address, alias email address, or unique user ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VerificationCodes].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4970,7 +5714,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<VerificationCodes> list(core.String userKey) {
+  async.Future<VerificationCodes> list(core.String userKey,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4981,6 +5726,9 @@
     if (userKey == null) {
       throw new core.ArgumentError("Parameter userKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' +
         commons.Escaper.ecapeVariable('$userKey') +
@@ -5099,6 +5847,96 @@
   }
 }
 
+/// JSON template for App Access Collections Resource object in Directory API.
+class AppAccessCollections {
+  /// List of blocked api access buckets.
+  core.List<core.String> blockedApiAccessBuckets;
+
+  /// Boolean to indicate whether to enforce app access settings on Android
+  /// Drive or not.
+  core.bool enforceSettingsForAndroidDrive;
+
+  /// Error message provided by the Admin that will be shown to the user when an
+  /// app is blocked.
+  core.String errorMessage;
+
+  /// ETag of the resource.
+  core.String etag;
+
+  /// Identifies the resource as an app access collection. Value:
+  /// admin#directory#appaccesscollection
+  core.String kind;
+
+  /// Unique ID of app access collection. (Readonly)
+  core.String resourceId;
+
+  /// Resource name given by the customer while creating/updating. Should be
+  /// unique under given customer.
+  core.String resourceName;
+
+  /// Boolean that indicates whether to trust domain owned apps.
+  core.bool trustDomainOwnedApps;
+
+  AppAccessCollections();
+
+  AppAccessCollections.fromJson(core.Map _json) {
+    if (_json.containsKey("blockedApiAccessBuckets")) {
+      blockedApiAccessBuckets = _json["blockedApiAccessBuckets"];
+    }
+    if (_json.containsKey("enforceSettingsForAndroidDrive")) {
+      enforceSettingsForAndroidDrive = _json["enforceSettingsForAndroidDrive"];
+    }
+    if (_json.containsKey("errorMessage")) {
+      errorMessage = _json["errorMessage"];
+    }
+    if (_json.containsKey("etag")) {
+      etag = _json["etag"];
+    }
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+    if (_json.containsKey("resourceId")) {
+      resourceId = _json["resourceId"];
+    }
+    if (_json.containsKey("resourceName")) {
+      resourceName = _json["resourceName"];
+    }
+    if (_json.containsKey("trustDomainOwnedApps")) {
+      trustDomainOwnedApps = _json["trustDomainOwnedApps"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (blockedApiAccessBuckets != null) {
+      _json["blockedApiAccessBuckets"] = blockedApiAccessBuckets;
+    }
+    if (enforceSettingsForAndroidDrive != null) {
+      _json["enforceSettingsForAndroidDrive"] = enforceSettingsForAndroidDrive;
+    }
+    if (errorMessage != null) {
+      _json["errorMessage"] = errorMessage;
+    }
+    if (etag != null) {
+      _json["etag"] = etag;
+    }
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    if (resourceId != null) {
+      _json["resourceId"] = resourceId;
+    }
+    if (resourceName != null) {
+      _json["resourceName"] = resourceName;
+    }
+    if (trustDomainOwnedApps != null) {
+      _json["trustDomainOwnedApps"] = trustDomainOwnedApps;
+    }
+    return _json;
+  }
+}
+
 /// The template that returns individual ASP (Access Code) data.
 class Asp {
   /// The unique ID of the ASP.
@@ -8201,6 +9039,114 @@
   }
 }
 
+/// JSON template for Trusted App Ids Resource object in Directory API.
+class TrustedAppId {
+  /// Android package name.
+  core.String androidPackageName;
+
+  /// SHA1 signature of the app certificate.
+  core.String certificateHashSHA1;
+
+  /// SHA256 signature of the app certificate.
+  core.String certificateHashSHA256;
+  core.String etag;
+
+  /// Identifies the resource as a trusted AppId.
+  core.String kind;
+
+  TrustedAppId();
+
+  TrustedAppId.fromJson(core.Map _json) {
+    if (_json.containsKey("androidPackageName")) {
+      androidPackageName = _json["androidPackageName"];
+    }
+    if (_json.containsKey("certificateHashSHA1")) {
+      certificateHashSHA1 = _json["certificateHashSHA1"];
+    }
+    if (_json.containsKey("certificateHashSHA256")) {
+      certificateHashSHA256 = _json["certificateHashSHA256"];
+    }
+    if (_json.containsKey("etag")) {
+      etag = _json["etag"];
+    }
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (androidPackageName != null) {
+      _json["androidPackageName"] = androidPackageName;
+    }
+    if (certificateHashSHA1 != null) {
+      _json["certificateHashSHA1"] = certificateHashSHA1;
+    }
+    if (certificateHashSHA256 != null) {
+      _json["certificateHashSHA256"] = certificateHashSHA256;
+    }
+    if (etag != null) {
+      _json["etag"] = etag;
+    }
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    return _json;
+  }
+}
+
+/// JSON template for Trusted Apps response object of a user in Directory API.
+class TrustedApps {
+  /// ETag of the resource.
+  core.String etag;
+
+  /// Identifies the resource as trusted apps response.
+  core.String kind;
+  core.String nextPageToken;
+
+  /// Trusted Apps list.
+  core.List<TrustedAppId> trustedApps;
+
+  TrustedApps();
+
+  TrustedApps.fromJson(core.Map _json) {
+    if (_json.containsKey("etag")) {
+      etag = _json["etag"];
+    }
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+    if (_json.containsKey("trustedApps")) {
+      trustedApps = _json["trustedApps"]
+          .map((value) => new TrustedAppId.fromJson(value))
+          .toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (etag != null) {
+      _json["etag"] = etag;
+    }
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    if (trustedApps != null) {
+      _json["trustedApps"] =
+          trustedApps.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
 /// JSON template for User object in Directory API.
 class User {
   ///
diff --git a/generated/googleapis/lib/admin/reports_v1.dart b/generated/googleapis/lib/admin/reports_v1.dart
index 0ebedd2..efa1f1f 100644
--- a/generated/googleapis/lib/admin/reports_v1.dart
+++ b/generated/googleapis/lib/admin/reports_v1.dart
@@ -87,6 +87,9 @@
   /// Value must have pattern
   /// "(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)(?:\.(\d+))?(?:(Z)|([-+])(\d\d):(\d\d))".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Activities].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -103,7 +106,8 @@
       core.String filters,
       core.int maxResults,
       core.String pageToken,
-      core.String startTime}) {
+      core.String startTime,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -141,6 +145,9 @@
     if (startTime != null) {
       _queryParams["startTime"] = [startTime];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'activity/users/' +
         commons.Escaper.ecapeVariable('$userKey') +
@@ -199,6 +206,9 @@
   /// Value must have pattern
   /// "(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)(?:\.(\d+))?(?:(Z)|([-+])(\d\d):(\d\d))".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Channel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -215,7 +225,8 @@
       core.String filters,
       core.int maxResults,
       core.String pageToken,
-      core.String startTime}) {
+      core.String startTime,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -256,6 +267,9 @@
     if (startTime != null) {
       _queryParams["startTime"] = [startTime];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'activity/users/' +
         commons.Escaper.ecapeVariable('$userKey') +
@@ -284,12 +298,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future stop(Channel request) {
+  async.Future stop(Channel request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -300,6 +317,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -341,6 +361,9 @@
   /// Value must have pattern
   /// "(((accounts)|(app_maker)|(apps_scripts)|(classroom)|(cros)|(gmail)|(calendar)|(docs)|(gplus)|(sites)|(device_management)|(drive)):[^,]+,)*(((accounts)|(app_maker)|(apps_scripts)|(classroom)|(cros)|(gmail)|(calendar)|(docs)|(gplus)|(sites)|(device_management)|(drive)):[^,]+)".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UsageReports].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -349,7 +372,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UsageReports> get(core.String date,
-      {core.String customerId, core.String pageToken, core.String parameters}) {
+      {core.String customerId,
+      core.String pageToken,
+      core.String parameters,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -369,6 +395,9 @@
     if (parameters != null) {
       _queryParams["parameters"] = [parameters];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'usage/dates/' + commons.Escaper.ecapeVariable('$date');
 
@@ -418,6 +447,9 @@
   /// Value must have pattern
   /// "(((accounts)|(classroom)|(cros)|(gmail)|(calendar)|(docs)|(gplus)|(sites)|(device_management)|(drive)):[^,]+,)*(((accounts)|(classroom)|(cros)|(gmail)|(calendar)|(docs)|(gplus)|(sites)|(device_management)|(drive)):[^,]+)".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UsageReports].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -430,7 +462,8 @@
       core.String filters,
       core.int maxResults,
       core.String pageToken,
-      core.String parameters}) {
+      core.String parameters,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -459,6 +492,9 @@
     if (parameters != null) {
       _queryParams["parameters"] = [parameters];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'usage/users/' +
         commons.Escaper.ecapeVariable('$userKey') +
diff --git a/generated/googleapis/lib/adsense/v1_4.dart b/generated/googleapis/lib/adsense/v1_4.dart
index ab1387e..b86f497 100644
--- a/generated/googleapis/lib/adsense/v1_4.dart
+++ b/generated/googleapis/lib/adsense/v1_4.dart
@@ -84,6 +84,9 @@
   ///
   /// [tree] - Whether the tree of sub accounts should be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -91,7 +94,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Account> get(core.String accountId, {core.bool tree}) {
+  async.Future<Account> get(core.String accountId,
+      {core.bool tree, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -105,6 +109,9 @@
     if (tree != null) {
       _queryParams["tree"] = ["${tree}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' + commons.Escaper.ecapeVariable('$accountId');
 
@@ -129,6 +136,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Accounts].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -136,7 +146,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Accounts> list({core.int maxResults, core.String pageToken}) {
+  async.Future<Accounts> list(
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -150,6 +161,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts';
 
@@ -183,6 +197,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdClients].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -191,7 +208,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdClients> list(core.String accountId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -208,6 +225,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -242,6 +262,9 @@
   ///
   /// [adUnitId] - Ad unit to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdUnit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -250,7 +273,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdUnit> get(
-      core.String accountId, core.String adClientId, core.String adUnitId) {
+      core.String accountId, core.String adClientId, core.String adUnitId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -267,6 +291,9 @@
     if (adUnitId == null) {
       throw new core.ArgumentError("Parameter adUnitId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -294,6 +321,9 @@
   ///
   /// [adUnitId] - Ad unit to get the code for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdCode].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -302,7 +332,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdCode> getAdCode(
-      core.String accountId, core.String adClientId, core.String adUnitId) {
+      core.String accountId, core.String adClientId, core.String adUnitId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -319,6 +350,9 @@
     if (adUnitId == null) {
       throw new core.ArgumentError("Parameter adUnitId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -355,6 +389,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdUnits].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -363,7 +400,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdUnits> list(core.String accountId, core.String adClientId,
-      {core.bool includeInactive, core.int maxResults, core.String pageToken}) {
+      {core.bool includeInactive,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -386,6 +426,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -427,6 +470,9 @@
   /// To retrieve the next page, set this parameter to the value of
   /// "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannels].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -436,7 +482,7 @@
   /// this method will complete with the same error.
   async.Future<CustomChannels> list(
       core.String accountId, core.String adClientId, core.String adUnitId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -459,6 +505,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -492,12 +541,16 @@
   ///
   /// [alertId] - Alert to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String accountId, core.String alertId) {
+  async.Future delete(core.String accountId, core.String alertId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -511,6 +564,9 @@
     if (alertId == null) {
       throw new core.ArgumentError("Parameter alertId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -538,6 +594,9 @@
   /// locale will be used if this is not supplied. The AdSense default (English)
   /// will be used if the supplied locale is invalid or unsupported.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Alerts].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -545,7 +604,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Alerts> list(core.String accountId, {core.String locale}) {
+  async.Future<Alerts> list(core.String accountId,
+      {core.String locale, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -559,6 +619,9 @@
     if (locale != null) {
       _queryParams["locale"] = [locale];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/alerts';
@@ -593,6 +656,9 @@
   ///
   /// [customChannelId] - Custom channel to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -601,7 +667,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomChannel> get(core.String accountId, core.String adClientId,
-      core.String customChannelId) {
+      core.String customChannelId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -618,6 +685,9 @@
     if (customChannelId == null) {
       throw new core.ArgumentError("Parameter customChannelId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -652,6 +722,9 @@
   /// To retrieve the next page, set this parameter to the value of
   /// "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannels].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -661,7 +734,7 @@
   /// this method will complete with the same error.
   async.Future<CustomChannels> list(
       core.String accountId, core.String adClientId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -681,6 +754,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -724,6 +800,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdUnits].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -733,7 +812,10 @@
   /// this method will complete with the same error.
   async.Future<AdUnits> list(core.String accountId, core.String adClientId,
       core.String customChannelId,
-      {core.bool includeInactive, core.int maxResults, core.String pageToken}) {
+      {core.bool includeInactive,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -759,6 +841,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -790,6 +875,9 @@
   ///
   /// [accountId] - Account for which to retrieve the payments.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Payments].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -797,7 +885,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Payments> list(core.String accountId) {
+  async.Future<Payments> list(core.String accountId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -808,6 +896,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/payments';
@@ -880,6 +971,9 @@
   /// AdSense account's local timezone. If false default PST/PDT timezone will
   /// be used.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -907,6 +1001,7 @@
       core.List<core.String> sort,
       core.int startIndex,
       core.bool useTimezoneReporting,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -954,6 +1049,9 @@
     if (useTimezoneReporting != null) {
       _queryParams["useTimezoneReporting"] = ["${useTimezoneReporting}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -1001,6 +1099,9 @@
   /// [startIndex] - Index of the first row of report data to return.
   /// Value must be between "0" and "5000".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdsenseReportsGenerateResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1010,7 +1111,10 @@
   /// this method will complete with the same error.
   async.Future<AdsenseReportsGenerateResponse> generate(
       core.String accountId, core.String savedReportId,
-      {core.String locale, core.int maxResults, core.int startIndex}) {
+      {core.String locale,
+      core.int maxResults,
+      core.int startIndex,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1033,6 +1137,9 @@
     if (startIndex != null) {
       _queryParams["startIndex"] = ["${startIndex}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1063,6 +1170,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SavedReports].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1071,7 +1181,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SavedReports> list(core.String accountId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1088,6 +1198,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1117,6 +1230,9 @@
   ///
   /// [savedAdStyleId] - Saved ad style to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SavedAdStyle].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1125,7 +1241,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SavedAdStyle> get(
-      core.String accountId, core.String savedAdStyleId) {
+      core.String accountId, core.String savedAdStyleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1139,6 +1256,9 @@
     if (savedAdStyleId == null) {
       throw new core.ArgumentError("Parameter savedAdStyleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1168,6 +1288,9 @@
   /// To retrieve the next page, set this parameter to the value of
   /// "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SavedAdStyles].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1176,7 +1299,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SavedAdStyles> list(core.String accountId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1193,6 +1316,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1231,6 +1357,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UrlChannels].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1239,7 +1368,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UrlChannels> list(core.String accountId, core.String adClientId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1259,6 +1388,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1293,6 +1425,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdClients].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1300,7 +1435,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AdClients> list({core.int maxResults, core.String pageToken}) {
+  async.Future<AdClients> list(
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1314,6 +1450,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients';
 
@@ -1343,6 +1482,9 @@
   ///
   /// [adUnitId] - Ad unit to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdUnit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1350,7 +1492,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AdUnit> get(core.String adClientId, core.String adUnitId) {
+  async.Future<AdUnit> get(core.String adClientId, core.String adUnitId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1364,6 +1507,9 @@
     if (adUnitId == null) {
       throw new core.ArgumentError("Parameter adUnitId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -1387,6 +1533,9 @@
   ///
   /// [adUnitId] - Ad unit to get the code for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdCode].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1394,7 +1543,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AdCode> getAdCode(core.String adClientId, core.String adUnitId) {
+  async.Future<AdCode> getAdCode(core.String adClientId, core.String adUnitId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1408,6 +1558,9 @@
     if (adUnitId == null) {
       throw new core.ArgumentError("Parameter adUnitId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -1440,6 +1593,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdUnits].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1448,7 +1604,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdUnits> list(core.String adClientId,
-      {core.bool includeInactive, core.int maxResults, core.String pageToken}) {
+      {core.bool includeInactive,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1468,6 +1627,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -1505,6 +1667,9 @@
   /// To retrieve the next page, set this parameter to the value of
   /// "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannels].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1514,7 +1679,7 @@
   /// this method will complete with the same error.
   async.Future<CustomChannels> list(
       core.String adClientId, core.String adUnitId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1534,6 +1699,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -1562,12 +1730,15 @@
   ///
   /// [alertId] - Alert to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String alertId) {
+  async.Future delete(core.String alertId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1578,6 +1749,9 @@
     if (alertId == null) {
       throw new core.ArgumentError("Parameter alertId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1600,6 +1774,9 @@
   /// locale will be used if this is not supplied. The AdSense default (English)
   /// will be used if the supplied locale is invalid or unsupported.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Alerts].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1607,7 +1784,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Alerts> list({core.String locale}) {
+  async.Future<Alerts> list({core.String locale, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1618,6 +1795,9 @@
     if (locale != null) {
       _queryParams["locale"] = [locale];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'alerts';
 
@@ -1647,6 +1827,9 @@
   ///
   /// [customChannelId] - Custom channel to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1655,7 +1838,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomChannel> get(
-      core.String adClientId, core.String customChannelId) {
+      core.String adClientId, core.String customChannelId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1669,6 +1853,9 @@
     if (customChannelId == null) {
       throw new core.ArgumentError("Parameter customChannelId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -1699,6 +1886,9 @@
   /// To retrieve the next page, set this parameter to the value of
   /// "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannels].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1707,7 +1897,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomChannels> list(core.String adClientId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1724,6 +1914,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -1763,6 +1956,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdUnits].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1772,7 +1968,10 @@
   /// this method will complete with the same error.
   async.Future<AdUnits> list(
       core.String adClientId, core.String customChannelId,
-      {core.bool includeInactive, core.int maxResults, core.String pageToken}) {
+      {core.bool includeInactive,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1795,6 +1994,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -1833,6 +2035,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Metadata].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1840,7 +2045,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Metadata> list() {
+  async.Future<Metadata> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1848,6 +2053,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'metadata/dimensions';
 
     var _response = _requester.request(_url, "GET",
@@ -1869,6 +2078,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Metadata].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1876,7 +2088,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Metadata> list() {
+  async.Future<Metadata> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1884,6 +2096,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'metadata/metrics';
 
     var _response = _requester.request(_url, "GET",
@@ -1905,6 +2121,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Payments].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1912,7 +2131,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Payments> list() {
+  async.Future<Payments> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1920,6 +2139,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'payments';
 
     var _response = _requester.request(_url, "GET",
@@ -1989,6 +2212,9 @@
   /// AdSense account's local timezone. If false default PST/PDT timezone will
   /// be used.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -2016,6 +2242,7 @@
       core.List<core.String> sort,
       core.int startIndex,
       core.bool useTimezoneReporting,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -2063,6 +2290,9 @@
     if (useTimezoneReporting != null) {
       _queryParams["useTimezoneReporting"] = ["${useTimezoneReporting}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -2106,6 +2336,9 @@
   /// [startIndex] - Index of the first row of report data to return.
   /// Value must be between "0" and "5000".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdsenseReportsGenerateResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2117,7 +2350,8 @@
       core.String savedReportId,
       {core.String locale,
       core.int maxResults,
-      core.int startIndex}) {
+      core.int startIndex,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2137,6 +2371,9 @@
     if (startIndex != null) {
       _queryParams["startIndex"] = ["${startIndex}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'reports/' + commons.Escaper.ecapeVariable('$savedReportId');
 
@@ -2162,6 +2399,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SavedReports].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2170,7 +2410,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SavedReports> list(
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2184,6 +2424,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'reports/saved';
 
@@ -2208,6 +2451,9 @@
   ///
   /// [savedAdStyleId] - Saved ad style to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SavedAdStyle].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2215,7 +2461,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SavedAdStyle> get(core.String savedAdStyleId) {
+  async.Future<SavedAdStyle> get(core.String savedAdStyleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2226,6 +2473,9 @@
     if (savedAdStyleId == null) {
       throw new core.ArgumentError("Parameter savedAdStyleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'savedadstyles/' + commons.Escaper.ecapeVariable('$savedAdStyleId');
 
@@ -2250,6 +2500,9 @@
   /// To retrieve the next page, set this parameter to the value of
   /// "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SavedAdStyles].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2258,7 +2511,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SavedAdStyles> list(
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2272,6 +2525,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'savedadstyles';
 
@@ -2304,6 +2560,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UrlChannels].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2312,7 +2571,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UrlChannels> list(core.String adClientId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2329,6 +2588,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
diff --git a/generated/googleapis/lib/adsensehost/v4_1.dart b/generated/googleapis/lib/adsensehost/v4_1.dart
index 9966350..0af00c0 100644
--- a/generated/googleapis/lib/adsensehost/v4_1.dart
+++ b/generated/googleapis/lib/adsensehost/v4_1.dart
@@ -57,6 +57,9 @@
   ///
   /// [accountId] - Account to get information about.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -64,7 +67,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Account> get(core.String accountId) {
+  async.Future<Account> get(core.String accountId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -75,6 +78,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' + commons.Escaper.ecapeVariable('$accountId');
 
@@ -93,6 +99,9 @@
   ///
   /// [filterAdClientId] - Ad clients to list accounts for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Accounts].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -100,7 +109,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Accounts> list(core.List<core.String> filterAdClientId) {
+  async.Future<Accounts> list(core.List<core.String> filterAdClientId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -112,6 +122,9 @@
       throw new core.ArgumentError("Parameter filterAdClientId is required.");
     }
     _queryParams["filterAdClientId"] = filterAdClientId;
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts';
 
@@ -140,6 +153,9 @@
   ///
   /// [adClientId] - Ad client to get.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdClient].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -147,7 +163,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AdClient> get(core.String accountId, core.String adClientId) {
+  async.Future<AdClient> get(core.String accountId, core.String adClientId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -161,6 +178,9 @@
     if (adClientId == null) {
       throw new core.ArgumentError("Parameter adClientId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -190,6 +210,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdClients].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -198,7 +221,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdClients> list(core.String accountId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -215,6 +238,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -245,6 +271,9 @@
   ///
   /// [adUnitId] - Ad unit to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdUnit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -253,7 +282,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdUnit> delete(
-      core.String accountId, core.String adClientId, core.String adUnitId) {
+      core.String accountId, core.String adClientId, core.String adUnitId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -270,6 +300,9 @@
     if (adUnitId == null) {
       throw new core.ArgumentError("Parameter adUnitId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -297,6 +330,9 @@
   ///
   /// [adUnitId] - Ad unit to get.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdUnit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -305,7 +341,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdUnit> get(
-      core.String accountId, core.String adClientId, core.String adUnitId) {
+      core.String accountId, core.String adClientId, core.String adUnitId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -322,6 +359,9 @@
     if (adUnitId == null) {
       throw new core.ArgumentError("Parameter adUnitId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -352,6 +392,9 @@
   ///
   /// [hostCustomChannelId] - Host custom channel to attach to the ad code.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdCode].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -361,7 +404,7 @@
   /// this method will complete with the same error.
   async.Future<AdCode> getAdCode(
       core.String accountId, core.String adClientId, core.String adUnitId,
-      {core.List<core.String> hostCustomChannelId}) {
+      {core.List<core.String> hostCustomChannelId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -381,6 +424,9 @@
     if (hostCustomChannelId != null) {
       _queryParams["hostCustomChannelId"] = hostCustomChannelId;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -409,6 +455,9 @@
   ///
   /// [adClientId] - Ad client into which to insert the ad unit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdUnit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -417,7 +466,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdUnit> insert(
-      AdUnit request, core.String accountId, core.String adClientId) {
+      AdUnit request, core.String accountId, core.String adClientId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -434,6 +484,9 @@
     if (adClientId == null) {
       throw new core.ArgumentError("Parameter adClientId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -468,6 +521,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdUnits].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -476,7 +532,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdUnits> list(core.String accountId, core.String adClientId,
-      {core.bool includeInactive, core.int maxResults, core.String pageToken}) {
+      {core.bool includeInactive,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -499,6 +558,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -528,6 +590,9 @@
   ///
   /// [adUnitId] - Ad unit to get.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdUnit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -536,7 +601,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdUnit> patch(AdUnit request, core.String accountId,
-      core.String adClientId, core.String adUnitId) {
+      core.String adClientId, core.String adUnitId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -557,6 +623,9 @@
       throw new core.ArgumentError("Parameter adUnitId is required.");
     }
     _queryParams["adUnitId"] = [adUnitId];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -583,6 +652,9 @@
   ///
   /// [adClientId] - Ad client which contains the ad unit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdUnit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -591,7 +663,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdUnit> update(
-      AdUnit request, core.String accountId, core.String adClientId) {
+      AdUnit request, core.String accountId, core.String adClientId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -608,6 +681,9 @@
     if (adClientId == null) {
       throw new core.ArgumentError("Parameter adClientId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -672,6 +748,9 @@
   /// [startIndex] - Index of the first row of report data to return.
   /// Value must be between "0" and "5000".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Report].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -687,7 +766,8 @@
       core.int maxResults,
       core.List<core.String> metric,
       core.List<core.String> sort,
-      core.int startIndex}) {
+      core.int startIndex,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -727,6 +807,9 @@
     if (startIndex != null) {
       _queryParams["startIndex"] = ["${startIndex}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'accounts/' + commons.Escaper.ecapeVariable('$accountId') + '/reports';
@@ -752,6 +835,9 @@
   ///
   /// [adClientId] - Ad client to get.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdClient].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -759,7 +845,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AdClient> get(core.String adClientId) {
+  async.Future<AdClient> get(core.String adClientId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -770,6 +856,9 @@
     if (adClientId == null) {
       throw new core.ArgumentError("Parameter adClientId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' + commons.Escaper.ecapeVariable('$adClientId');
 
@@ -794,6 +883,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdClients].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -801,7 +893,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AdClients> list({core.int maxResults, core.String pageToken}) {
+  async.Future<AdClients> list(
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -815,6 +908,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients';
 
@@ -847,6 +943,9 @@
   ///
   /// [websiteLocale] - The locale of the user's hosted website.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AssociationSession].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -856,7 +955,9 @@
   /// this method will complete with the same error.
   async.Future<AssociationSession> start(
       core.List<core.String> productCode, core.String websiteUrl,
-      {core.String userLocale, core.String websiteLocale}) {
+      {core.String userLocale,
+      core.String websiteLocale,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -878,6 +979,9 @@
     if (websiteLocale != null) {
       _queryParams["websiteLocale"] = [websiteLocale];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'associationsessions/start';
 
@@ -897,6 +1001,9 @@
   ///
   /// [token] - The token returned to the association callback URL.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AssociationSession].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -904,7 +1011,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AssociationSession> verify(core.String token) {
+  async.Future<AssociationSession> verify(core.String token,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -916,6 +1024,9 @@
       throw new core.ArgumentError("Parameter token is required.");
     }
     _queryParams["token"] = [token];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'associationsessions/verify';
 
@@ -942,6 +1053,9 @@
   ///
   /// [customChannelId] - Custom channel to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -950,7 +1064,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomChannel> delete(
-      core.String adClientId, core.String customChannelId) {
+      core.String adClientId, core.String customChannelId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -964,6 +1079,9 @@
     if (customChannelId == null) {
       throw new core.ArgumentError("Parameter customChannelId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -987,6 +1105,9 @@
   ///
   /// [customChannelId] - Custom channel to get.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -995,7 +1116,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomChannel> get(
-      core.String adClientId, core.String customChannelId) {
+      core.String adClientId, core.String customChannelId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1009,6 +1131,9 @@
     if (customChannelId == null) {
       throw new core.ArgumentError("Parameter customChannelId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -1032,6 +1157,9 @@
   ///
   /// [adClientId] - Ad client to which the new custom channel will be added.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1040,7 +1168,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomChannel> insert(
-      CustomChannel request, core.String adClientId) {
+      CustomChannel request, core.String adClientId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1054,6 +1183,9 @@
     if (adClientId == null) {
       throw new core.ArgumentError("Parameter adClientId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -1082,6 +1214,9 @@
   /// To retrieve the next page, set this parameter to the value of
   /// "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannels].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1090,7 +1225,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomChannels> list(core.String adClientId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1107,6 +1242,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -1132,6 +1270,9 @@
   ///
   /// [customChannelId] - Custom channel to get.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1140,7 +1281,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomChannel> patch(CustomChannel request,
-      core.String adClientId, core.String customChannelId) {
+      core.String adClientId, core.String customChannelId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1158,6 +1300,9 @@
       throw new core.ArgumentError("Parameter customChannelId is required.");
     }
     _queryParams["customChannelId"] = [customChannelId];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -1180,6 +1325,9 @@
   ///
   /// [adClientId] - Ad client in which the custom channel will be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomChannel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1188,7 +1336,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomChannel> update(
-      CustomChannel request, core.String adClientId) {
+      CustomChannel request, core.String adClientId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1202,6 +1351,9 @@
     if (adClientId == null) {
       throw new core.ArgumentError("Parameter adClientId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -1262,6 +1414,9 @@
   /// [startIndex] - Index of the first row of report data to return.
   /// Value must be between "0" and "5000".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Report].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1276,7 +1431,8 @@
       core.int maxResults,
       core.List<core.String> metric,
       core.List<core.String> sort,
-      core.int startIndex}) {
+      core.int startIndex,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1313,6 +1469,9 @@
     if (startIndex != null) {
       _queryParams["startIndex"] = ["${startIndex}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'reports';
 
@@ -1339,6 +1498,9 @@
   ///
   /// [urlChannelId] - URL channel to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UrlChannel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1347,7 +1509,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UrlChannel> delete(
-      core.String adClientId, core.String urlChannelId) {
+      core.String adClientId, core.String urlChannelId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1361,6 +1524,9 @@
     if (urlChannelId == null) {
       throw new core.ArgumentError("Parameter urlChannelId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -1384,6 +1550,9 @@
   ///
   /// [adClientId] - Ad client to which the new URL channel will be added.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UrlChannel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1391,7 +1560,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UrlChannel> insert(UrlChannel request, core.String adClientId) {
+  async.Future<UrlChannel> insert(UrlChannel request, core.String adClientId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1405,6 +1575,9 @@
     if (adClientId == null) {
       throw new core.ArgumentError("Parameter adClientId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
@@ -1433,6 +1606,9 @@
   /// retrieve the next page, set this parameter to the value of "nextPageToken"
   /// from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UrlChannels].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1441,7 +1617,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UrlChannels> list(core.String adClientId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1458,6 +1634,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'adclients/' +
         commons.Escaper.ecapeVariable('$adClientId') +
diff --git a/generated/googleapis/lib/analytics/v3.dart b/generated/googleapis/lib/analytics/v3.dart
index 0335077..7f0ce7f 100644
--- a/generated/googleapis/lib/analytics/v3.dart
+++ b/generated/googleapis/lib/analytics/v3.dart
@@ -139,6 +139,9 @@
   /// [start_index] - An index of the first entity to retrieve. Use this
   /// parameter as a pagination mechanism along with the max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GaData].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -156,7 +159,8 @@
       core.String samplingLevel,
       core.String segment,
       core.String sort,
-      core.int start_index}) {
+      core.int start_index,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -207,6 +211,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'data/ga';
 
@@ -275,6 +282,9 @@
   /// [start_index] - An index of the first entity to retrieve. Use this
   /// parameter as a pagination mechanism along with the max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [McfData].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -289,7 +299,8 @@
       core.int max_results,
       core.String samplingLevel,
       core.String sort,
-      core.int start_index}) {
+      core.int start_index,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -331,6 +342,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'data/mcf';
 
@@ -375,6 +389,9 @@
   /// the sort order for real time data.
   /// Value must have pattern "(-)?((ga:.+)|(rt:.+))".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RealtimeData].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -386,7 +403,8 @@
       {core.String dimensions,
       core.String filters,
       core.int max_results,
-      core.String sort}) {
+      core.String sort,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -414,6 +432,9 @@
     if (sort != null) {
       _queryParams["sort"] = [sort];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'data/realtime';
 
@@ -489,6 +510,9 @@
   /// [start_index] - An index of the first entity to retrieve. Use this
   /// parameter as a pagination mechanism along with the max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountSummaries].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -497,7 +521,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AccountSummaries> list(
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -511,6 +535,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accountSummaries';
 
@@ -538,12 +565,16 @@
   ///
   /// [linkId] - Link ID to delete the user link for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String accountId, core.String linkId) {
+  async.Future delete(core.String accountId, core.String linkId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -557,6 +588,9 @@
     if (linkId == null) {
       throw new core.ArgumentError("Parameter linkId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -582,6 +616,9 @@
   ///
   /// [accountId] - Account ID to create the user link for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntityUserLink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -590,7 +627,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EntityUserLink> insert(
-      EntityUserLink request, core.String accountId) {
+      EntityUserLink request, core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -604,6 +642,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -631,6 +672,9 @@
   /// this parameter as a pagination mechanism along with the max-results
   /// parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntityUserLinks].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -639,7 +683,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EntityUserLinks> list(core.String accountId,
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -656,6 +700,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -680,6 +727,9 @@
   ///
   /// [linkId] - Link ID to update the account-user link for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntityUserLink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -688,7 +738,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EntityUserLink> update(
-      EntityUserLink request, core.String accountId, core.String linkId) {
+      EntityUserLink request, core.String accountId, core.String linkId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -705,6 +756,9 @@
     if (linkId == null) {
       throw new core.ArgumentError("Parameter linkId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -737,6 +791,9 @@
   /// [start_index] - An index of the first account to retrieve. Use this
   /// parameter as a pagination mechanism along with the max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Accounts].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -744,7 +801,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Accounts> list({core.int max_results, core.int start_index}) {
+  async.Future<Accounts> list(
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -758,6 +816,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts';
 
@@ -794,6 +855,9 @@
   /// retrieve. Use this parameter as a pagination mechanism along with the
   /// max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomDataSources].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -803,7 +867,7 @@
   /// this method will complete with the same error.
   async.Future<CustomDataSources> list(
       core.String accountId, core.String webPropertyId,
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -823,6 +887,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -856,6 +923,9 @@
   ///
   /// [customDimensionId] - The ID of the custom dimension to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomDimension].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -864,7 +934,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomDimension> get(core.String accountId,
-      core.String webPropertyId, core.String customDimensionId) {
+      core.String webPropertyId, core.String customDimensionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -881,6 +952,9 @@
     if (customDimensionId == null) {
       throw new core.ArgumentError("Parameter customDimensionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -908,6 +982,9 @@
   ///
   /// [webPropertyId] - Web property ID for the custom dimension to create.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomDimension].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -915,8 +992,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CustomDimension> insert(CustomDimension request,
-      core.String accountId, core.String webPropertyId) {
+  async.Future<CustomDimension> insert(
+      CustomDimension request, core.String accountId, core.String webPropertyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -933,6 +1011,9 @@
     if (webPropertyId == null) {
       throw new core.ArgumentError("Parameter webPropertyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -963,6 +1044,9 @@
   /// [start_index] - An index of the first entity to retrieve. Use this
   /// parameter as a pagination mechanism along with the max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomDimensions].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -972,7 +1056,7 @@
   /// this method will complete with the same error.
   async.Future<CustomDimensions> list(
       core.String accountId, core.String webPropertyId,
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -992,6 +1076,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1026,6 +1113,9 @@
   /// related to the custom dimension being linked to a custom data source /
   /// data set.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomDimension].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1038,7 +1128,8 @@
       core.String accountId,
       core.String webPropertyId,
       core.String customDimensionId,
-      {core.bool ignoreCustomDataSourceLinks}) {
+      {core.bool ignoreCustomDataSourceLinks,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1063,6 +1154,9 @@
         "${ignoreCustomDataSourceLinks}"
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1097,6 +1191,9 @@
   /// related to the custom dimension being linked to a custom data source /
   /// data set.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomDimension].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1109,7 +1206,8 @@
       core.String accountId,
       core.String webPropertyId,
       core.String customDimensionId,
-      {core.bool ignoreCustomDataSourceLinks}) {
+      {core.bool ignoreCustomDataSourceLinks,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1134,6 +1232,9 @@
         "${ignoreCustomDataSourceLinks}"
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1168,6 +1269,9 @@
   ///
   /// [customMetricId] - The ID of the custom metric to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomMetric].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1176,7 +1280,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomMetric> get(core.String accountId,
-      core.String webPropertyId, core.String customMetricId) {
+      core.String webPropertyId, core.String customMetricId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1193,6 +1298,9 @@
     if (customMetricId == null) {
       throw new core.ArgumentError("Parameter customMetricId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1220,6 +1328,9 @@
   ///
   /// [webPropertyId] - Web property ID for the custom dimension to create.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomMetric].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1228,7 +1339,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomMetric> insert(
-      CustomMetric request, core.String accountId, core.String webPropertyId) {
+      CustomMetric request, core.String accountId, core.String webPropertyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1245,6 +1357,9 @@
     if (webPropertyId == null) {
       throw new core.ArgumentError("Parameter webPropertyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1275,6 +1390,9 @@
   /// [start_index] - An index of the first entity to retrieve. Use this
   /// parameter as a pagination mechanism along with the max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomMetrics].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1284,7 +1402,7 @@
   /// this method will complete with the same error.
   async.Future<CustomMetrics> list(
       core.String accountId, core.String webPropertyId,
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1304,6 +1422,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1336,6 +1457,9 @@
   /// related to the custom metric being linked to a custom data source / data
   /// set.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomMetric].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1345,7 +1469,7 @@
   /// this method will complete with the same error.
   async.Future<CustomMetric> patch(CustomMetric request, core.String accountId,
       core.String webPropertyId, core.String customMetricId,
-      {core.bool ignoreCustomDataSourceLinks}) {
+      {core.bool ignoreCustomDataSourceLinks, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1370,6 +1494,9 @@
         "${ignoreCustomDataSourceLinks}"
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1403,6 +1530,9 @@
   /// related to the custom metric being linked to a custom data source / data
   /// set.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CustomMetric].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1412,7 +1542,7 @@
   /// this method will complete with the same error.
   async.Future<CustomMetric> update(CustomMetric request, core.String accountId,
       core.String webPropertyId, core.String customMetricId,
-      {core.bool ignoreCustomDataSourceLinks}) {
+      {core.bool ignoreCustomDataSourceLinks, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1437,6 +1567,9 @@
         "${ignoreCustomDataSourceLinks}"
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1473,13 +1606,17 @@
   ///
   /// [experimentId] - ID of the experiment to delete
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String accountId, core.String webPropertyId,
-      core.String profileId, core.String experimentId) {
+      core.String profileId, core.String experimentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1499,6 +1636,9 @@
     if (experimentId == null) {
       throw new core.ArgumentError("Parameter experimentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1532,6 +1672,9 @@
   ///
   /// [experimentId] - Experiment ID to retrieve the experiment for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Experiment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1540,7 +1683,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Experiment> get(core.String accountId, core.String webPropertyId,
-      core.String profileId, core.String experimentId) {
+      core.String profileId, core.String experimentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1560,6 +1704,9 @@
     if (experimentId == null) {
       throw new core.ArgumentError("Parameter experimentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1591,6 +1738,9 @@
   ///
   /// [profileId] - View (Profile) ID to create the experiment for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Experiment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1599,7 +1749,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Experiment> insert(Experiment request, core.String accountId,
-      core.String webPropertyId, core.String profileId) {
+      core.String webPropertyId, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1619,6 +1770,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1656,6 +1810,9 @@
   /// [start_index] - An index of the first experiment to retrieve. Use this
   /// parameter as a pagination mechanism along with the max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Experiments].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1665,7 +1822,7 @@
   /// this method will complete with the same error.
   async.Future<Experiments> list(
       core.String accountId, core.String webPropertyId, core.String profileId,
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1688,6 +1845,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1720,6 +1880,9 @@
   ///
   /// [experimentId] - Experiment ID of the experiment to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Experiment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1732,7 +1895,8 @@
       core.String accountId,
       core.String webPropertyId,
       core.String profileId,
-      core.String experimentId) {
+      core.String experimentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1755,6 +1919,9 @@
     if (experimentId == null) {
       throw new core.ArgumentError("Parameter experimentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1788,6 +1955,9 @@
   ///
   /// [experimentId] - Experiment ID of the experiment to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Experiment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1800,7 +1970,8 @@
       core.String accountId,
       core.String webPropertyId,
       core.String profileId,
-      core.String experimentId) {
+      core.String experimentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1823,6 +1994,9 @@
     if (experimentId == null) {
       throw new core.ArgumentError("Parameter experimentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1857,6 +2031,9 @@
   ///
   /// [filterId] - ID of the filter to be deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Filter].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1864,7 +2041,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Filter> delete(core.String accountId, core.String filterId) {
+  async.Future<Filter> delete(core.String accountId, core.String filterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1878,6 +2056,9 @@
     if (filterId == null) {
       throw new core.ArgumentError("Parameter filterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1901,6 +2082,9 @@
   ///
   /// [filterId] - Filter ID to retrieve filters for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Filter].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1908,7 +2092,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Filter> get(core.String accountId, core.String filterId) {
+  async.Future<Filter> get(core.String accountId, core.String filterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1922,6 +2107,9 @@
     if (filterId == null) {
       throw new core.ArgumentError("Parameter filterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1945,6 +2133,9 @@
   ///
   /// [accountId] - Account ID to create filter for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Filter].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1952,7 +2143,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Filter> insert(Filter request, core.String accountId) {
+  async.Future<Filter> insert(Filter request, core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1966,6 +2158,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1992,6 +2187,9 @@
   /// [start_index] - An index of the first entity to retrieve. Use this
   /// parameter as a pagination mechanism along with the max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Filters].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2000,7 +2198,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Filters> list(core.String accountId,
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2017,6 +2215,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2041,6 +2242,9 @@
   ///
   /// [filterId] - ID of the filter to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Filter].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2049,7 +2253,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Filter> patch(
-      Filter request, core.String accountId, core.String filterId) {
+      Filter request, core.String accountId, core.String filterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2066,6 +2271,9 @@
     if (filterId == null) {
       throw new core.ArgumentError("Parameter filterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2091,6 +2299,9 @@
   ///
   /// [filterId] - ID of the filter to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Filter].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2099,7 +2310,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Filter> update(
-      Filter request, core.String accountId, core.String filterId) {
+      Filter request, core.String accountId, core.String filterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2116,6 +2328,9 @@
     if (filterId == null) {
       throw new core.ArgumentError("Parameter filterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2149,6 +2364,9 @@
   ///
   /// [goalId] - Goal ID to retrieve the goal for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Goal].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2157,7 +2375,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Goal> get(core.String accountId, core.String webPropertyId,
-      core.String profileId, core.String goalId) {
+      core.String profileId, core.String goalId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2177,6 +2396,9 @@
     if (goalId == null) {
       throw new core.ArgumentError("Parameter goalId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2208,6 +2430,9 @@
   ///
   /// [profileId] - View (Profile) ID to create the goal for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Goal].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2216,7 +2441,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Goal> insert(Goal request, core.String accountId,
-      core.String webPropertyId, core.String profileId) {
+      core.String webPropertyId, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2236,6 +2462,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2275,6 +2504,9 @@
   /// [start_index] - An index of the first goal to retrieve. Use this parameter
   /// as a pagination mechanism along with the max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Goals].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2284,7 +2516,7 @@
   /// this method will complete with the same error.
   async.Future<Goals> list(
       core.String accountId, core.String webPropertyId, core.String profileId,
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2307,6 +2539,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2339,6 +2574,9 @@
   ///
   /// [goalId] - Index of the goal to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Goal].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2347,7 +2585,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Goal> patch(Goal request, core.String accountId,
-      core.String webPropertyId, core.String profileId, core.String goalId) {
+      core.String webPropertyId, core.String profileId, core.String goalId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2370,6 +2609,9 @@
     if (goalId == null) {
       throw new core.ArgumentError("Parameter goalId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2403,6 +2645,9 @@
   ///
   /// [goalId] - Index of the goal to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Goal].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2411,7 +2656,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Goal> update(Goal request, core.String accountId,
-      core.String webPropertyId, core.String profileId, core.String goalId) {
+      core.String webPropertyId, core.String profileId, core.String goalId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2434,6 +2680,9 @@
     if (goalId == null) {
       throw new core.ArgumentError("Parameter goalId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2477,13 +2726,17 @@
   /// [linkId] - ID of the profile filter link to delete.
   /// Value must have pattern "\d+:\d+".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String accountId, core.String webPropertyId,
-      core.String profileId, core.String linkId) {
+      core.String profileId, core.String linkId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2503,6 +2756,9 @@
     if (linkId == null) {
       throw new core.ArgumentError("Parameter linkId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2540,6 +2796,9 @@
   /// [linkId] - ID of the profile filter link.
   /// Value must have pattern "\d+:\d+".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProfileFilterLink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2548,7 +2807,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ProfileFilterLink> get(core.String accountId,
-      core.String webPropertyId, core.String profileId, core.String linkId) {
+      core.String webPropertyId, core.String profileId, core.String linkId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2568,6 +2828,9 @@
     if (linkId == null) {
       throw new core.ArgumentError("Parameter linkId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2602,6 +2865,9 @@
   /// [profileId] - Profile ID to create filter link for.
   /// Value must have pattern "\d+".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProfileFilterLink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2610,7 +2876,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ProfileFilterLink> insert(ProfileFilterLink request,
-      core.String accountId, core.String webPropertyId, core.String profileId) {
+      core.String accountId, core.String webPropertyId, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2630,6 +2897,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2669,6 +2939,9 @@
   /// [start_index] - An index of the first entity to retrieve. Use this
   /// parameter as a pagination mechanism along with the max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProfileFilterLinks].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2678,7 +2951,7 @@
   /// this method will complete with the same error.
   async.Future<ProfileFilterLinks> list(
       core.String accountId, core.String webPropertyId, core.String profileId,
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2701,6 +2974,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2738,6 +3014,9 @@
   /// [linkId] - ID of the profile filter link to be updated.
   /// Value must have pattern "\d+:\d+".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProfileFilterLink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2750,7 +3029,8 @@
       core.String accountId,
       core.String webPropertyId,
       core.String profileId,
-      core.String linkId) {
+      core.String linkId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2773,6 +3053,9 @@
     if (linkId == null) {
       throw new core.ArgumentError("Parameter linkId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2810,6 +3093,9 @@
   /// [linkId] - ID of the profile filter link to be updated.
   /// Value must have pattern "\d+:\d+".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProfileFilterLink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2822,7 +3108,8 @@
       core.String accountId,
       core.String webPropertyId,
       core.String profileId,
-      core.String linkId) {
+      core.String linkId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2845,6 +3132,9 @@
     if (linkId == null) {
       throw new core.ArgumentError("Parameter linkId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2883,13 +3173,17 @@
   ///
   /// [linkId] - Link ID to delete the user link for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String accountId, core.String webPropertyId,
-      core.String profileId, core.String linkId) {
+      core.String profileId, core.String linkId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2909,6 +3203,9 @@
     if (linkId == null) {
       throw new core.ArgumentError("Parameter linkId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2942,6 +3239,9 @@
   ///
   /// [profileId] - View (Profile) ID to create the user link for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntityUserLink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2950,7 +3250,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EntityUserLink> insert(EntityUserLink request,
-      core.String accountId, core.String webPropertyId, core.String profileId) {
+      core.String accountId, core.String webPropertyId, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2970,6 +3271,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -3009,6 +3313,9 @@
   /// this parameter as a pagination mechanism along with the max-results
   /// parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntityUserLinks].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3018,7 +3325,7 @@
   /// this method will complete with the same error.
   async.Future<EntityUserLinks> list(
       core.String accountId, core.String webPropertyId, core.String profileId,
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3041,6 +3348,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -3073,6 +3383,9 @@
   ///
   /// [linkId] - Link ID to update the user link for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntityUserLink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3085,7 +3398,8 @@
       core.String accountId,
       core.String webPropertyId,
       core.String profileId,
-      core.String linkId) {
+      core.String linkId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3108,6 +3422,9 @@
     if (linkId == null) {
       throw new core.ArgumentError("Parameter linkId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -3144,13 +3461,17 @@
   ///
   /// [profileId] - ID of the view (profile) to be deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String accountId, core.String webPropertyId, core.String profileId) {
+      core.String accountId, core.String webPropertyId, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3167,6 +3488,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3199,6 +3523,9 @@
   /// [profileId] - View (Profile) ID to retrieve the view (profile) for.
   /// Value must have pattern "[0-9]+".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Profile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3207,7 +3534,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Profile> get(
-      core.String accountId, core.String webPropertyId, core.String profileId) {
+      core.String accountId, core.String webPropertyId, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3224,6 +3552,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -3251,6 +3582,9 @@
   ///
   /// [webPropertyId] - Web property ID to create the view (profile) for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Profile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3259,7 +3593,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Profile> insert(
-      Profile request, core.String accountId, core.String webPropertyId) {
+      Profile request, core.String accountId, core.String webPropertyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3276,6 +3611,9 @@
     if (webPropertyId == null) {
       throw new core.ArgumentError("Parameter webPropertyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -3310,6 +3648,9 @@
   /// [start_index] - An index of the first entity to retrieve. Use this
   /// parameter as a pagination mechanism along with the max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Profiles].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3318,7 +3659,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Profiles> list(core.String accountId, core.String webPropertyId,
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3338,6 +3679,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -3366,6 +3710,9 @@
   ///
   /// [profileId] - ID of the view (profile) to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Profile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3374,7 +3721,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Profile> patch(Profile request, core.String accountId,
-      core.String webPropertyId, core.String profileId) {
+      core.String webPropertyId, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3394,6 +3742,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -3423,6 +3774,9 @@
   ///
   /// [profileId] - ID of the view (profile) to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Profile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3431,7 +3785,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Profile> update(Profile request, core.String accountId,
-      core.String webPropertyId, core.String profileId) {
+      core.String webPropertyId, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3451,6 +3806,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -3486,13 +3844,17 @@
   ///
   /// [remarketingAudienceId] - The ID of the remarketing audience to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String accountId, core.String webPropertyId,
-      core.String remarketingAudienceId) {
+      core.String remarketingAudienceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3510,6 +3872,9 @@
       throw new core.ArgumentError(
           "Parameter remarketingAudienceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3540,6 +3905,9 @@
   ///
   /// [remarketingAudienceId] - The ID of the remarketing audience to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RemarketingAudience].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3548,7 +3916,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RemarketingAudience> get(core.String accountId,
-      core.String webPropertyId, core.String remarketingAudienceId) {
+      core.String webPropertyId, core.String remarketingAudienceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3566,6 +3935,9 @@
       throw new core.ArgumentError(
           "Parameter remarketingAudienceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -3594,6 +3966,9 @@
   /// [webPropertyId] - Web property ID for which to create the remarketing
   /// audience.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RemarketingAudience].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3602,7 +3977,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RemarketingAudience> insert(RemarketingAudience request,
-      core.String accountId, core.String webPropertyId) {
+      core.String accountId, core.String webPropertyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3619,6 +3995,9 @@
     if (webPropertyId == null) {
       throw new core.ArgumentError("Parameter webPropertyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -3652,6 +4031,9 @@
   ///
   /// [type] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RemarketingAudiences].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3661,7 +4043,10 @@
   /// this method will complete with the same error.
   async.Future<RemarketingAudiences> list(
       core.String accountId, core.String webPropertyId,
-      {core.int max_results, core.int start_index, core.String type}) {
+      {core.int max_results,
+      core.int start_index,
+      core.String type,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3684,6 +4069,9 @@
     if (type != null) {
       _queryParams["type"] = [type];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -3714,6 +4102,9 @@
   ///
   /// [remarketingAudienceId] - The ID of the remarketing audience to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RemarketingAudience].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3725,7 +4116,8 @@
       RemarketingAudience request,
       core.String accountId,
       core.String webPropertyId,
-      core.String remarketingAudienceId) {
+      core.String remarketingAudienceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3746,6 +4138,9 @@
       throw new core.ArgumentError(
           "Parameter remarketingAudienceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -3776,6 +4171,9 @@
   ///
   /// [remarketingAudienceId] - The ID of the remarketing audience to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RemarketingAudience].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3787,7 +4185,8 @@
       RemarketingAudience request,
       core.String accountId,
       core.String webPropertyId,
-      core.String remarketingAudienceId) {
+      core.String remarketingAudienceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3808,6 +4207,9 @@
       throw new core.ArgumentError(
           "Parameter remarketingAudienceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -3842,6 +4244,9 @@
   /// [start_index] - An index of the first segment to retrieve. Use this
   /// parameter as a pagination mechanism along with the max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Segments].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3849,7 +4254,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Segments> list({core.int max_results, core.int start_index}) {
+  async.Future<Segments> list(
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3863,6 +4269,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/segments';
 
@@ -3894,13 +4303,17 @@
   ///
   /// [unsampledReportId] - ID of the unsampled report to be deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String accountId, core.String webPropertyId,
-      core.String profileId, core.String unsampledReportId) {
+      core.String profileId, core.String unsampledReportId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3920,6 +4333,9 @@
     if (unsampledReportId == null) {
       throw new core.ArgumentError("Parameter unsampledReportId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3953,6 +4369,9 @@
   ///
   /// [unsampledReportId] - ID of the unsampled report to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UnsampledReport].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3964,7 +4383,8 @@
       core.String accountId,
       core.String webPropertyId,
       core.String profileId,
-      core.String unsampledReportId) {
+      core.String unsampledReportId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3984,6 +4404,9 @@
     if (unsampledReportId == null) {
       throw new core.ArgumentError("Parameter unsampledReportId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -4015,6 +4438,9 @@
   ///
   /// [profileId] - View (Profile) ID to create the unsampled report for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UnsampledReport].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4023,7 +4449,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UnsampledReport> insert(UnsampledReport request,
-      core.String accountId, core.String webPropertyId, core.String profileId) {
+      core.String accountId, core.String webPropertyId, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4043,6 +4470,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -4081,6 +4511,9 @@
   /// this parameter as a pagination mechanism along with the max-results
   /// parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UnsampledReports].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4090,7 +4523,7 @@
   /// this method will complete with the same error.
   async.Future<UnsampledReports> list(
       core.String accountId, core.String webPropertyId, core.String profileId,
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4113,6 +4546,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -4154,6 +4590,9 @@
   /// deleted.
   /// Value must have pattern ".{22}".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
@@ -4163,7 +4602,8 @@
       AnalyticsDataimportDeleteUploadDataRequest request,
       core.String accountId,
       core.String webPropertyId,
-      core.String customDataSourceId) {
+      core.String customDataSourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4183,6 +4623,9 @@
     if (customDataSourceId == null) {
       throw new core.ArgumentError("Parameter customDataSourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -4219,6 +4662,9 @@
   /// [uploadId] - Upload Id to retrieve.
   /// Value must have pattern ".{22}".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Upload].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4227,7 +4673,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Upload> get(core.String accountId, core.String webPropertyId,
-      core.String customDataSourceId, core.String uploadId) {
+      core.String customDataSourceId, core.String uploadId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4247,6 +4694,9 @@
     if (uploadId == null) {
       throw new core.ArgumentError("Parameter uploadId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -4284,6 +4734,9 @@
   /// [start_index] - A 1-based index of the first upload to retrieve. Use this
   /// parameter as a pagination mechanism along with the max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Uploads].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4293,7 +4746,7 @@
   /// this method will complete with the same error.
   async.Future<Uploads> list(core.String accountId, core.String webPropertyId,
       core.String customDataSourceId,
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4316,6 +4769,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -4347,6 +4803,9 @@
   /// [customDataSourceId] - Custom data source Id to which the data being
   /// uploaded belongs.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -4362,7 +4821,8 @@
   /// this method will complete with the same error.
   async.Future<Upload> uploadData(core.String accountId,
       core.String webPropertyId, core.String customDataSourceId,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -4380,6 +4840,9 @@
     if (customDataSourceId == null) {
       throw new core.ArgumentError("Parameter customDataSourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -4436,13 +4899,17 @@
   ///
   /// [webPropertyAdWordsLinkId] - Web property AdWords link ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String accountId, core.String webPropertyId,
-      core.String webPropertyAdWordsLinkId) {
+      core.String webPropertyAdWordsLinkId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4460,6 +4927,9 @@
       throw new core.ArgumentError(
           "Parameter webPropertyAdWordsLinkId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -4489,6 +4959,9 @@
   ///
   /// [webPropertyAdWordsLinkId] - Web property-AdWords link ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntityAdWordsLink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4497,7 +4970,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EntityAdWordsLink> get(core.String accountId,
-      core.String webPropertyId, core.String webPropertyAdWordsLinkId) {
+      core.String webPropertyId, core.String webPropertyAdWordsLinkId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4515,6 +4989,9 @@
       throw new core.ArgumentError(
           "Parameter webPropertyAdWordsLinkId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -4542,6 +5019,9 @@
   ///
   /// [webPropertyId] - Web property ID to create the link for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntityAdWordsLink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4550,7 +5030,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EntityAdWordsLink> insert(EntityAdWordsLink request,
-      core.String accountId, core.String webPropertyId) {
+      core.String accountId, core.String webPropertyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4567,6 +5048,9 @@
     if (webPropertyId == null) {
       throw new core.ArgumentError("Parameter webPropertyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -4599,6 +5083,9 @@
   /// retrieve. Use this parameter as a pagination mechanism along with the
   /// max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntityAdWordsLinks].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4608,7 +5095,7 @@
   /// this method will complete with the same error.
   async.Future<EntityAdWordsLinks> list(
       core.String accountId, core.String webPropertyId,
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4628,6 +5115,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -4657,6 +5147,9 @@
   ///
   /// [webPropertyAdWordsLinkId] - Web property-AdWords link ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntityAdWordsLink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4668,7 +5161,8 @@
       EntityAdWordsLink request,
       core.String accountId,
       core.String webPropertyId,
-      core.String webPropertyAdWordsLinkId) {
+      core.String webPropertyAdWordsLinkId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4689,6 +5183,9 @@
       throw new core.ArgumentError(
           "Parameter webPropertyAdWordsLinkId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -4718,6 +5215,9 @@
   ///
   /// [webPropertyAdWordsLinkId] - Web property-AdWords link ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntityAdWordsLink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4729,7 +5229,8 @@
       EntityAdWordsLink request,
       core.String accountId,
       core.String webPropertyId,
-      core.String webPropertyAdWordsLinkId) {
+      core.String webPropertyAdWordsLinkId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4750,6 +5251,9 @@
       throw new core.ArgumentError(
           "Parameter webPropertyAdWordsLinkId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -4784,6 +5288,9 @@
   /// [webPropertyId] - ID to retrieve the web property for.
   /// Value must have pattern "UA-[0-9]+-[0-9]+".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Webproperty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4792,7 +5299,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Webproperty> get(
-      core.String accountId, core.String webPropertyId) {
+      core.String accountId, core.String webPropertyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4806,6 +5314,9 @@
     if (webPropertyId == null) {
       throw new core.ArgumentError("Parameter webPropertyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -4831,6 +5342,9 @@
   ///
   /// [accountId] - Account ID to create the web property for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Webproperty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4838,7 +5352,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Webproperty> insert(Webproperty request, core.String accountId) {
+  async.Future<Webproperty> insert(Webproperty request, core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4852,6 +5367,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -4880,6 +5398,9 @@
   /// [start_index] - An index of the first entity to retrieve. Use this
   /// parameter as a pagination mechanism along with the max-results parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Webproperties].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4888,7 +5409,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Webproperties> list(core.String accountId,
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4905,6 +5426,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -4929,6 +5453,9 @@
   ///
   /// [webPropertyId] - Web property ID
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Webproperty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4937,7 +5464,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Webproperty> patch(
-      Webproperty request, core.String accountId, core.String webPropertyId) {
+      Webproperty request, core.String accountId, core.String webPropertyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4954,6 +5482,9 @@
     if (webPropertyId == null) {
       throw new core.ArgumentError("Parameter webPropertyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -4979,6 +5510,9 @@
   ///
   /// [webPropertyId] - Web property ID
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Webproperty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4987,7 +5521,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Webproperty> update(
-      Webproperty request, core.String accountId, core.String webPropertyId) {
+      Webproperty request, core.String accountId, core.String webPropertyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5004,6 +5539,9 @@
     if (webPropertyId == null) {
       throw new core.ArgumentError("Parameter webPropertyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -5036,13 +5574,17 @@
   ///
   /// [linkId] - Link ID to delete the user link for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String accountId, core.String webPropertyId, core.String linkId) {
+      core.String accountId, core.String webPropertyId, core.String linkId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5059,6 +5601,9 @@
     if (linkId == null) {
       throw new core.ArgumentError("Parameter linkId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -5088,6 +5633,9 @@
   ///
   /// [webPropertyId] - Web Property ID to create the user link for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntityUserLink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5095,8 +5643,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<EntityUserLink> insert(EntityUserLink request,
-      core.String accountId, core.String webPropertyId) {
+  async.Future<EntityUserLink> insert(
+      EntityUserLink request, core.String accountId, core.String webPropertyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5113,6 +5662,9 @@
     if (webPropertyId == null) {
       throw new core.ArgumentError("Parameter webPropertyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -5146,6 +5698,9 @@
   /// Use this parameter as a pagination mechanism along with the max-results
   /// parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntityUserLinks].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5155,7 +5710,7 @@
   /// this method will complete with the same error.
   async.Future<EntityUserLinks> list(
       core.String accountId, core.String webPropertyId,
-      {core.int max_results, core.int start_index}) {
+      {core.int max_results, core.int start_index, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5175,6 +5730,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -5203,6 +5761,9 @@
   ///
   /// [linkId] - Link ID to update the account-user link for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntityUserLink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5211,7 +5772,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EntityUserLink> update(EntityUserLink request,
-      core.String accountId, core.String webPropertyId, core.String linkId) {
+      core.String accountId, core.String webPropertyId, core.String linkId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5231,6 +5793,9 @@
     if (linkId == null) {
       throw new core.ArgumentError("Parameter linkId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'management/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -5271,6 +5836,9 @@
   /// to the Core Reporting API
   /// Value must have pattern "ga".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Columns].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5278,7 +5846,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Columns> list(core.String reportType) {
+  async.Future<Columns> list(core.String reportType, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5289,6 +5857,9 @@
     if (reportType == null) {
       throw new core.ArgumentError("Parameter reportType is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'metadata/' + commons.Escaper.ecapeVariable('$reportType') + '/columns';
@@ -5314,6 +5885,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountTicket].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5321,7 +5895,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AccountTicket> createAccountTicket(AccountTicket request) {
+  async.Future<AccountTicket> createAccountTicket(AccountTicket request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5332,6 +5907,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'provisioning/createAccountTicket';
 
diff --git a/generated/googleapis/lib/analyticsreporting/v4.dart b/generated/googleapis/lib/analyticsreporting/v4.dart
index bbc1df7..940dcc3 100644
--- a/generated/googleapis/lib/analyticsreporting/v4.dart
+++ b/generated/googleapis/lib/analyticsreporting/v4.dart
@@ -45,6 +45,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetReportsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -52,7 +55,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GetReportsResponse> batchGet(GetReportsRequest request) {
+  async.Future<GetReportsResponse> batchGet(GetReportsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -63,6 +67,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/reports:batchGet';
 
diff --git a/generated/googleapis/lib/androiddeviceprovisioning/v1.dart b/generated/googleapis/lib/androiddeviceprovisioning/v1.dart
index ab0410f..c8c7861 100644
--- a/generated/googleapis/lib/androiddeviceprovisioning/v1.dart
+++ b/generated/googleapis/lib/androiddeviceprovisioning/v1.dart
@@ -43,6 +43,9 @@
   /// [name] - The name of the operation resource.
   /// Value must have pattern "^operations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -50,7 +53,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String name) {
+  async.Future<Operation> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -61,6 +64,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -106,6 +112,9 @@
   /// identifies the reseller.
   /// Value must have pattern "^partners/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Company].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -114,7 +123,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Company> create(
-      CreateCustomerRequest request, core.String parent) {
+      CreateCustomerRequest request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -128,6 +138,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/customers';
@@ -150,6 +163,9 @@
   /// [partnerId] - The ID of the partner.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListCustomersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -157,7 +173,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListCustomersResponse> list(core.String partnerId) {
+  async.Future<ListCustomersResponse> list(core.String partnerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -168,6 +185,9 @@
     if (partnerId == null) {
       throw new core.ArgumentError("Parameter partnerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/partners/' +
         commons.Escaper.ecapeVariableReserved('$partnerId') +
@@ -197,6 +217,9 @@
   /// [partnerId] - ID of the partner.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ClaimDeviceResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -205,7 +228,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ClaimDeviceResponse> claim(
-      ClaimDeviceRequest request, core.String partnerId) {
+      ClaimDeviceRequest request, core.String partnerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -219,6 +243,9 @@
     if (partnerId == null) {
       throw new core.ArgumentError("Parameter partnerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/partners/' +
         commons.Escaper.ecapeVariableReserved('$partnerId') +
@@ -242,6 +269,9 @@
   /// [partnerId] - Partner ID.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -250,7 +280,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> claimAsync(
-      ClaimDevicesRequest request, core.String partnerId) {
+      ClaimDevicesRequest request, core.String partnerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -264,6 +295,9 @@
     if (partnerId == null) {
       throw new core.ArgumentError("Parameter partnerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/partners/' +
         commons.Escaper.ecapeVariableReserved('$partnerId') +
@@ -287,6 +321,9 @@
   /// [partnerId] - ID of the partner.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FindDevicesByDeviceIdentifierResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -295,7 +332,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FindDevicesByDeviceIdentifierResponse> findByIdentifier(
-      FindDevicesByDeviceIdentifierRequest request, core.String partnerId) {
+      FindDevicesByDeviceIdentifierRequest request, core.String partnerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -309,6 +347,9 @@
     if (partnerId == null) {
       throw new core.ArgumentError("Parameter partnerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/partners/' +
         commons.Escaper.ecapeVariableReserved('$partnerId') +
@@ -333,6 +374,9 @@
   /// [partnerId] - ID of the partner.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FindDevicesByOwnerResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -341,7 +385,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FindDevicesByOwnerResponse> findByOwner(
-      FindDevicesByOwnerRequest request, core.String partnerId) {
+      FindDevicesByOwnerRequest request, core.String partnerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -355,6 +400,9 @@
     if (partnerId == null) {
       throw new core.ArgumentError("Parameter partnerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/partners/' +
         commons.Escaper.ecapeVariableReserved('$partnerId') +
@@ -377,6 +425,9 @@
   /// [name] - Resource name in `partners/[PARTNER_ID]/devices/[DEVICE_ID]`.
   /// Value must have pattern "^partners/[^/]+/devices/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Device].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -384,7 +435,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Device> get(core.String name) {
+  async.Future<Device> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -395,6 +446,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -420,6 +474,9 @@
   /// [deviceId] - ID of the partner.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DeviceMetadata].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -428,7 +485,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DeviceMetadata> metadata(UpdateDeviceMetadataRequest request,
-      core.String metadataOwnerId, core.String deviceId) {
+      core.String metadataOwnerId, core.String deviceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -445,6 +503,9 @@
     if (deviceId == null) {
       throw new core.ArgumentError("Parameter deviceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/partners/' +
         commons.Escaper.ecapeVariableReserved('$metadataOwnerId') +
@@ -471,6 +532,9 @@
   /// [partnerId] - ID of the partner.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -479,7 +543,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> unclaim(
-      UnclaimDeviceRequest request, core.String partnerId) {
+      UnclaimDeviceRequest request, core.String partnerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -493,6 +558,9 @@
     if (partnerId == null) {
       throw new core.ArgumentError("Parameter partnerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/partners/' +
         commons.Escaper.ecapeVariableReserved('$partnerId') +
@@ -516,6 +584,9 @@
   /// [partnerId] - Partner ID.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -524,7 +595,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> unclaimAsync(
-      UnclaimDevicesRequest request, core.String partnerId) {
+      UnclaimDevicesRequest request, core.String partnerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -538,6 +610,9 @@
     if (partnerId == null) {
       throw new core.ArgumentError("Parameter partnerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/partners/' +
         commons.Escaper.ecapeVariableReserved('$partnerId') +
@@ -561,6 +636,9 @@
   /// [partnerId] - Partner ID.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -569,7 +647,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> updateMetadataAsync(
-      UpdateDeviceMetadataInBatchRequest request, core.String partnerId) {
+      UpdateDeviceMetadataInBatchRequest request, core.String partnerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -583,6 +662,9 @@
     if (partnerId == null) {
       throw new core.ArgumentError("Parameter partnerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/partners/' +
         commons.Escaper.ecapeVariableReserved('$partnerId') +
diff --git a/generated/googleapis/lib/androidenterprise/v1.dart b/generated/googleapis/lib/androidenterprise/v1.dart
index 017117e..b5d4617 100644
--- a/generated/googleapis/lib/androidenterprise/v1.dart
+++ b/generated/googleapis/lib/androidenterprise/v1.dart
@@ -70,6 +70,9 @@
   ///
   /// [deviceId] - The ID of the device.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Device].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -78,7 +81,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Device> get(
-      core.String enterpriseId, core.String userId, core.String deviceId) {
+      core.String enterpriseId, core.String userId, core.String deviceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -95,6 +99,9 @@
     if (deviceId == null) {
       throw new core.ArgumentError("Parameter deviceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -126,6 +133,9 @@
   ///
   /// [deviceId] - The ID of the device.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DeviceState].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -134,7 +144,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DeviceState> getState(
-      core.String enterpriseId, core.String userId, core.String deviceId) {
+      core.String enterpriseId, core.String userId, core.String deviceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -151,6 +162,9 @@
     if (deviceId == null) {
       throw new core.ArgumentError("Parameter deviceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -177,6 +191,9 @@
   ///
   /// [userId] - The ID of the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DevicesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -185,7 +202,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DevicesListResponse> list(
-      core.String enterpriseId, core.String userId) {
+      core.String enterpriseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -199,6 +217,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -231,6 +252,9 @@
   ///
   /// [deviceId] - The ID of the device.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DeviceState].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -239,7 +263,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DeviceState> setState(DeviceState request,
-      core.String enterpriseId, core.String userId, core.String deviceId) {
+      core.String enterpriseId, core.String userId, core.String deviceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -259,6 +284,9 @@
     if (deviceId == null) {
       throw new core.ArgumentError("Parameter deviceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -292,12 +320,16 @@
   /// [notificationSetId] - The notification set ID as returned by
   /// Enterprises.PullNotificationSet. This must be provided.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future acknowledgeNotificationSet({core.String notificationSetId}) {
+  async.Future acknowledgeNotificationSet(
+      {core.String notificationSetId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -308,6 +340,9 @@
     if (notificationSetId != null) {
       _queryParams["notificationSetId"] = [notificationSetId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -333,6 +368,9 @@
   ///
   /// [enterpriseToken] - The Enterprise token appended to the Callback URL.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Enterprise].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -341,7 +379,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Enterprise> completeSignup(
-      {core.String completionToken, core.String enterpriseToken}) {
+      {core.String completionToken,
+      core.String enterpriseToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -355,6 +395,9 @@
     if (enterpriseToken != null) {
       _queryParams["enterpriseToken"] = [enterpriseToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/completeSignup';
 
@@ -378,6 +421,9 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdministratorWebToken].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -386,7 +432,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdministratorWebToken> createWebToken(
-      AdministratorWebTokenSpec request, core.String enterpriseId) {
+      AdministratorWebTokenSpec request, core.String enterpriseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -400,6 +447,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -423,12 +473,15 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String enterpriseId) {
+  async.Future delete(core.String enterpriseId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -439,6 +492,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -461,6 +517,9 @@
   ///
   /// [token] - The token provided by the enterprise to register the EMM.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Enterprise].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -468,7 +527,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Enterprise> enroll(Enterprise request, core.String token) {
+  async.Future<Enterprise> enroll(Enterprise request, core.String token,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -483,6 +543,9 @@
       throw new core.ArgumentError("Parameter token is required.");
     }
     _queryParams["token"] = [token];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/enroll';
 
@@ -509,6 +572,9 @@
   /// changes and, more importantly, the URL must be well-formed so that it can
   /// be parsed.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SignupInfo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -516,7 +582,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SignupInfo> generateSignupUrl({core.String callbackUrl}) {
+  async.Future<SignupInfo> generateSignupUrl(
+      {core.String callbackUrl, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -527,6 +594,9 @@
     if (callbackUrl != null) {
       _queryParams["callbackUrl"] = [callbackUrl];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/signupUrl';
 
@@ -545,6 +615,9 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Enterprise].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -552,7 +625,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Enterprise> get(core.String enterpriseId) {
+  async.Future<Enterprise> get(core.String enterpriseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -563,6 +637,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' + commons.Escaper.ecapeVariable('$enterpriseId');
 
@@ -581,6 +658,9 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AndroidDevicePolicyConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -589,7 +669,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AndroidDevicePolicyConfig> getAndroidDevicePolicyConfig(
-      core.String enterpriseId) {
+      core.String enterpriseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -600,6 +681,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -641,6 +725,9 @@
   /// - "googleCredentials"
   /// - "pkcs12"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ServiceAccount].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -649,7 +736,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ServiceAccount> getServiceAccount(core.String enterpriseId,
-      {core.String keyType}) {
+      {core.String keyType, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -663,6 +750,9 @@
     if (keyType != null) {
       _queryParams["keyType"] = [keyType];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -684,6 +774,9 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StoreLayout].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -691,7 +784,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<StoreLayout> getStoreLayout(core.String enterpriseId) {
+  async.Future<StoreLayout> getStoreLayout(core.String enterpriseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -702,6 +796,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -725,6 +822,9 @@
   ///
   /// [token] - The token provided by the enterprise to register the EMM.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Enterprise].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -732,7 +832,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Enterprise> insert(Enterprise request, core.String token) {
+  async.Future<Enterprise> insert(Enterprise request, core.String token,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -747,6 +848,9 @@
       throw new core.ArgumentError("Parameter token is required.");
     }
     _queryParams["token"] = [token];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises';
 
@@ -769,6 +873,9 @@
   ///
   /// [domain] - The exact primary domain name of the enterprise to look up.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EnterprisesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -776,7 +883,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<EnterprisesListResponse> list(core.String domain) {
+  async.Future<EnterprisesListResponse> list(core.String domain,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -788,6 +896,9 @@
       throw new core.ArgumentError("Parameter domain is required.");
     }
     _queryParams["domain"] = [domain];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises';
 
@@ -832,6 +943,9 @@
   /// - "returnImmediately"
   /// - "waitForNotifications"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [NotificationSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -839,7 +953,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<NotificationSet> pullNotificationSet({core.String requestMode}) {
+  async.Future<NotificationSet> pullNotificationSet(
+      {core.String requestMode, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -850,6 +965,9 @@
     if (requestMode != null) {
       _queryParams["requestMode"] = [requestMode];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/pullNotificationSet';
 
@@ -869,6 +987,9 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EnterprisesSendTestPushNotificationResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -877,7 +998,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EnterprisesSendTestPushNotificationResponse>
-      sendTestPushNotification(core.String enterpriseId) {
+      sendTestPushNotification(core.String enterpriseId,
+          {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -888,6 +1010,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -912,6 +1037,9 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EnterpriseAccount].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -920,7 +1048,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EnterpriseAccount> setAccount(
-      EnterpriseAccount request, core.String enterpriseId) {
+      EnterpriseAccount request, core.String enterpriseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -934,6 +1063,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -959,6 +1091,9 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AndroidDevicePolicyConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -967,7 +1102,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AndroidDevicePolicyConfig> setAndroidDevicePolicyConfig(
-      AndroidDevicePolicyConfig request, core.String enterpriseId) {
+      AndroidDevicePolicyConfig request, core.String enterpriseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -981,6 +1117,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -1010,6 +1149,9 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StoreLayout].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1018,7 +1160,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StoreLayout> setStoreLayout(
-      StoreLayout request, core.String enterpriseId) {
+      StoreLayout request, core.String enterpriseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1032,6 +1175,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -1052,12 +1198,15 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future unenroll(core.String enterpriseId) {
+  async.Future unenroll(core.String enterpriseId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1068,6 +1217,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1101,13 +1253,17 @@
   /// [entitlementId] - The ID of the entitlement (a product ID), e.g.
   /// "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String enterpriseId, core.String userId, core.String entitlementId) {
+      core.String enterpriseId, core.String userId, core.String entitlementId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1124,6 +1280,9 @@
     if (entitlementId == null) {
       throw new core.ArgumentError("Parameter entitlementId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1154,6 +1313,9 @@
   /// [entitlementId] - The ID of the entitlement (a product ID), e.g.
   /// "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Entitlement].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1162,7 +1324,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Entitlement> get(
-      core.String enterpriseId, core.String userId, core.String entitlementId) {
+      core.String enterpriseId, core.String userId, core.String entitlementId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1179,6 +1342,9 @@
     if (entitlementId == null) {
       throw new core.ArgumentError("Parameter entitlementId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -1204,6 +1370,9 @@
   ///
   /// [userId] - The ID of the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntitlementsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1212,7 +1381,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EntitlementsListResponse> list(
-      core.String enterpriseId, core.String userId) {
+      core.String enterpriseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1226,6 +1396,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -1262,6 +1435,9 @@
   /// prevent this operation from returning successfully, as long as the
   /// entitlement was successfully assigned to the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Entitlement].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1271,7 +1447,7 @@
   /// this method will complete with the same error.
   async.Future<Entitlement> patch(Entitlement request, core.String enterpriseId,
       core.String userId, core.String entitlementId,
-      {core.bool install}) {
+      {core.bool install, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1294,6 +1470,9 @@
     if (install != null) {
       _queryParams["install"] = ["${install}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -1329,6 +1508,9 @@
   /// prevent this operation from returning successfully, as long as the
   /// entitlement was successfully assigned to the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Entitlement].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1338,7 +1520,7 @@
   /// this method will complete with the same error.
   async.Future<Entitlement> update(Entitlement request,
       core.String enterpriseId, core.String userId, core.String entitlementId,
-      {core.bool install}) {
+      {core.bool install, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1361,6 +1543,9 @@
     if (install != null) {
       _queryParams["install"] = ["${install}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -1393,6 +1578,9 @@
   /// [groupLicenseId] - The ID of the product the group license is for, e.g.
   /// "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GroupLicense].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1401,7 +1589,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GroupLicense> get(
-      core.String enterpriseId, core.String groupLicenseId) {
+      core.String enterpriseId, core.String groupLicenseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1415,6 +1604,9 @@
     if (groupLicenseId == null) {
       throw new core.ArgumentError("Parameter groupLicenseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -1437,6 +1629,9 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GroupLicensesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1444,7 +1639,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GroupLicensesListResponse> list(core.String enterpriseId) {
+  async.Future<GroupLicensesListResponse> list(core.String enterpriseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1455,6 +1651,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -1487,6 +1686,9 @@
   /// [groupLicenseId] - The ID of the product the group license is for, e.g.
   /// "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GroupLicenseUsersListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1495,7 +1697,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GroupLicenseUsersListResponse> list(
-      core.String enterpriseId, core.String groupLicenseId) {
+      core.String enterpriseId, core.String groupLicenseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1509,6 +1712,9 @@
     if (groupLicenseId == null) {
       throw new core.ArgumentError("Parameter groupLicenseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -1546,13 +1752,17 @@
   /// [installId] - The ID of the product represented by the install, e.g.
   /// "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String enterpriseId, core.String userId,
-      core.String deviceId, core.String installId) {
+      core.String deviceId, core.String installId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1572,6 +1782,9 @@
     if (installId == null) {
       throw new core.ArgumentError("Parameter installId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1606,6 +1819,9 @@
   /// [installId] - The ID of the product represented by the install, e.g.
   /// "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Install].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1614,7 +1830,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Install> get(core.String enterpriseId, core.String userId,
-      core.String deviceId, core.String installId) {
+      core.String deviceId, core.String installId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1634,6 +1851,9 @@
     if (installId == null) {
       throw new core.ArgumentError("Parameter installId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -1663,6 +1883,9 @@
   ///
   /// [deviceId] - The Android ID of the device.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstallsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1671,7 +1894,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstallsListResponse> list(
-      core.String enterpriseId, core.String userId, core.String deviceId) {
+      core.String enterpriseId, core.String userId, core.String deviceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1688,6 +1912,9 @@
     if (deviceId == null) {
       throw new core.ArgumentError("Parameter deviceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -1723,6 +1950,9 @@
   /// [installId] - The ID of the product represented by the install, e.g.
   /// "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Install].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1731,7 +1961,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Install> patch(Install request, core.String enterpriseId,
-      core.String userId, core.String deviceId, core.String installId) {
+      core.String userId, core.String deviceId, core.String installId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1754,6 +1985,9 @@
     if (installId == null) {
       throw new core.ArgumentError("Parameter installId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -1790,6 +2024,9 @@
   /// [installId] - The ID of the product represented by the install, e.g.
   /// "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Install].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1798,7 +2035,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Install> update(Install request, core.String enterpriseId,
-      core.String userId, core.String deviceId, core.String installId) {
+      core.String userId, core.String deviceId, core.String installId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1821,6 +2059,9 @@
     if (installId == null) {
       throw new core.ArgumentError("Parameter installId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -1861,13 +2102,17 @@
   /// [managedConfigurationForDeviceId] - The ID of the managed configuration (a
   /// product ID), e.g. "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String enterpriseId, core.String userId,
-      core.String deviceId, core.String managedConfigurationForDeviceId) {
+      core.String deviceId, core.String managedConfigurationForDeviceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1888,6 +2133,9 @@
       throw new core.ArgumentError(
           "Parameter managedConfigurationForDeviceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1922,6 +2170,9 @@
   /// [managedConfigurationForDeviceId] - The ID of the managed configuration (a
   /// product ID), e.g. "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1933,7 +2184,8 @@
       core.String enterpriseId,
       core.String userId,
       core.String deviceId,
-      core.String managedConfigurationForDeviceId) {
+      core.String managedConfigurationForDeviceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1954,6 +2206,9 @@
       throw new core.ArgumentError(
           "Parameter managedConfigurationForDeviceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -1984,6 +2239,9 @@
   ///
   /// [deviceId] - The Android ID of the device.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedConfigurationsForDeviceListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1992,7 +2250,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ManagedConfigurationsForDeviceListResponse> list(
-      core.String enterpriseId, core.String userId, core.String deviceId) {
+      core.String enterpriseId, core.String userId, core.String deviceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2009,6 +2268,9 @@
     if (deviceId == null) {
       throw new core.ArgumentError("Parameter deviceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -2044,6 +2306,9 @@
   /// [managedConfigurationForDeviceId] - The ID of the managed configuration (a
   /// product ID), e.g. "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2056,7 +2321,8 @@
       core.String enterpriseId,
       core.String userId,
       core.String deviceId,
-      core.String managedConfigurationForDeviceId) {
+      core.String managedConfigurationForDeviceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2080,6 +2346,9 @@
       throw new core.ArgumentError(
           "Parameter managedConfigurationForDeviceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -2115,6 +2384,9 @@
   /// [managedConfigurationForDeviceId] - The ID of the managed configuration (a
   /// product ID), e.g. "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2127,7 +2399,8 @@
       core.String enterpriseId,
       core.String userId,
       core.String deviceId,
-      core.String managedConfigurationForDeviceId) {
+      core.String managedConfigurationForDeviceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2151,6 +2424,9 @@
       throw new core.ArgumentError(
           "Parameter managedConfigurationForDeviceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -2189,13 +2465,17 @@
   /// [managedConfigurationForUserId] - The ID of the managed configuration (a
   /// product ID), e.g. "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String enterpriseId, core.String userId,
-      core.String managedConfigurationForUserId) {
+      core.String managedConfigurationForUserId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2213,6 +2493,9 @@
       throw new core.ArgumentError(
           "Parameter managedConfigurationForUserId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2244,6 +2527,9 @@
   /// [managedConfigurationForUserId] - The ID of the managed configuration (a
   /// product ID), e.g. "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2252,7 +2538,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ManagedConfiguration> get(core.String enterpriseId,
-      core.String userId, core.String managedConfigurationForUserId) {
+      core.String userId, core.String managedConfigurationForUserId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2270,6 +2557,9 @@
       throw new core.ArgumentError(
           "Parameter managedConfigurationForUserId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -2296,6 +2586,9 @@
   ///
   /// [userId] - The ID of the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedConfigurationsForUserListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2304,7 +2597,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ManagedConfigurationsForUserListResponse> list(
-      core.String enterpriseId, core.String userId) {
+      core.String enterpriseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2318,6 +2612,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -2349,6 +2646,9 @@
   /// [managedConfigurationForUserId] - The ID of the managed configuration (a
   /// product ID), e.g. "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2360,7 +2660,8 @@
       ManagedConfiguration request,
       core.String enterpriseId,
       core.String userId,
-      core.String managedConfigurationForUserId) {
+      core.String managedConfigurationForUserId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2381,6 +2682,9 @@
       throw new core.ArgumentError(
           "Parameter managedConfigurationForUserId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -2412,6 +2716,9 @@
   /// [managedConfigurationForUserId] - The ID of the managed configuration (a
   /// product ID), e.g. "app:com.google.android.gm".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2423,7 +2730,8 @@
       ManagedConfiguration request,
       core.String enterpriseId,
       core.String userId,
-      core.String managedConfigurationForUserId) {
+      core.String managedConfigurationForUserId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2444,6 +2752,9 @@
       throw new core.ArgumentError(
           "Parameter managedConfigurationForUserId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -2477,6 +2788,9 @@
   /// [language] - The BCP47 tag for the user's preferred language (e.g.
   /// "en-US", "de")
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Permission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2485,7 +2799,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Permission> get(core.String permissionId,
-      {core.String language}) {
+      {core.String language, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2499,6 +2813,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'permissions/' + commons.Escaper.ecapeVariable('$permissionId');
 
@@ -2533,13 +2850,17 @@
   ///
   /// [productId] - The ID of the product.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future approve(ProductsApproveRequest request, core.String enterpriseId,
-      core.String productId) {
+      core.String productId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2556,6 +2877,9 @@
     if (productId == null) {
       throw new core.ArgumentError("Parameter productId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2594,6 +2918,9 @@
   /// [languageCode] - The BCP 47 language code used for permission names and
   /// descriptions in the returned iframe, for instance "en-US".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProductsGenerateApprovalUrlResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2603,7 +2930,7 @@
   /// this method will complete with the same error.
   async.Future<ProductsGenerateApprovalUrlResponse> generateApprovalUrl(
       core.String enterpriseId, core.String productId,
-      {core.String languageCode}) {
+      {core.String languageCode, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2620,6 +2947,9 @@
     if (languageCode != null) {
       _queryParams["languageCode"] = [languageCode];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -2648,6 +2978,9 @@
   /// [language] - The BCP47 tag for the user's preferred language (e.g.
   /// "en-US", "de").
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Product].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2656,7 +2989,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Product> get(core.String enterpriseId, core.String productId,
-      {core.String language}) {
+      {core.String language, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2673,6 +3006,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -2704,6 +3040,9 @@
   /// [language] - The BCP47 tag for the user's preferred language (e.g.
   /// "en-US", "de").
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AppRestrictionsSchema].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2713,7 +3052,7 @@
   /// this method will complete with the same error.
   async.Future<AppRestrictionsSchema> getAppRestrictionsSchema(
       core.String enterpriseId, core.String productId,
-      {core.String language}) {
+      {core.String language, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2730,6 +3069,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -2754,6 +3096,9 @@
   ///
   /// [productId] - The ID of the product.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProductPermissions].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2762,7 +3107,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ProductPermissions> getPermissions(
-      core.String enterpriseId, core.String productId) {
+      core.String enterpriseId, core.String productId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2776,6 +3122,9 @@
     if (productId == null) {
       throw new core.ArgumentError("Parameter productId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -2821,6 +3170,9 @@
   /// obtain more products, and so forth. This parameter cannot be used in the
   /// initial request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProductsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2833,7 +3185,8 @@
       core.String language,
       core.int maxResults,
       core.String query,
-      core.String token}) {
+      core.String token,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2859,6 +3212,9 @@
     if (token != null) {
       _queryParams["token"] = [token];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -2882,12 +3238,16 @@
   ///
   /// [productId] - The ID of the product.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future unapprove(core.String enterpriseId, core.String productId) {
+  async.Future unapprove(core.String enterpriseId, core.String productId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2901,6 +3261,9 @@
     if (productId == null) {
       throw new core.ArgumentError("Parameter productId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2937,12 +3300,16 @@
   ///
   /// [keyId] - The ID of the key.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String enterpriseId, core.String keyId) {
+  async.Future delete(core.String enterpriseId, core.String keyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2956,6 +3323,9 @@
     if (keyId == null) {
       throw new core.ArgumentError("Parameter keyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2987,6 +3357,9 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ServiceAccountKey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2995,7 +3368,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ServiceAccountKey> insert(
-      ServiceAccountKey request, core.String enterpriseId) {
+      ServiceAccountKey request, core.String enterpriseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3009,6 +3383,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3033,6 +3410,9 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ServiceAccountKeysListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3040,7 +3420,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ServiceAccountKeysListResponse> list(core.String enterpriseId) {
+  async.Future<ServiceAccountKeysListResponse> list(core.String enterpriseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3051,6 +3432,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3083,13 +3467,17 @@
   ///
   /// [clusterId] - The ID of the cluster.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String enterpriseId, core.String pageId, core.String clusterId) {
+      core.String enterpriseId, core.String pageId, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3106,6 +3494,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3135,6 +3526,9 @@
   ///
   /// [clusterId] - The ID of the cluster.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StoreCluster].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3143,7 +3537,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StoreCluster> get(
-      core.String enterpriseId, core.String pageId, core.String clusterId) {
+      core.String enterpriseId, core.String pageId, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3160,6 +3555,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3187,6 +3585,9 @@
   ///
   /// [pageId] - The ID of the page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StoreCluster].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3195,7 +3596,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StoreCluster> insert(
-      StoreCluster request, core.String enterpriseId, core.String pageId) {
+      StoreCluster request, core.String enterpriseId, core.String pageId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3212,6 +3614,9 @@
     if (pageId == null) {
       throw new core.ArgumentError("Parameter pageId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3236,6 +3641,9 @@
   ///
   /// [pageId] - The ID of the page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StoreLayoutClustersListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3244,7 +3652,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StoreLayoutClustersListResponse> list(
-      core.String enterpriseId, core.String pageId) {
+      core.String enterpriseId, core.String pageId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3258,6 +3667,9 @@
     if (pageId == null) {
       throw new core.ArgumentError("Parameter pageId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3287,6 +3699,9 @@
   ///
   /// [clusterId] - The ID of the cluster.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StoreCluster].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3295,7 +3710,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StoreCluster> patch(StoreCluster request,
-      core.String enterpriseId, core.String pageId, core.String clusterId) {
+      core.String enterpriseId, core.String pageId, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3315,6 +3731,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3344,6 +3763,9 @@
   ///
   /// [clusterId] - The ID of the cluster.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StoreCluster].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3352,7 +3774,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StoreCluster> update(StoreCluster request,
-      core.String enterpriseId, core.String pageId, core.String clusterId) {
+      core.String enterpriseId, core.String pageId, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3372,6 +3795,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3404,12 +3830,16 @@
   ///
   /// [pageId] - The ID of the page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String enterpriseId, core.String pageId) {
+  async.Future delete(core.String enterpriseId, core.String pageId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3423,6 +3853,9 @@
     if (pageId == null) {
       throw new core.ArgumentError("Parameter pageId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3448,6 +3881,9 @@
   ///
   /// [pageId] - The ID of the page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StorePage].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3455,7 +3891,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<StorePage> get(core.String enterpriseId, core.String pageId) {
+  async.Future<StorePage> get(core.String enterpriseId, core.String pageId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3469,6 +3906,9 @@
     if (pageId == null) {
       throw new core.ArgumentError("Parameter pageId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3492,6 +3932,9 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StorePage].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3499,7 +3942,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<StorePage> insert(StorePage request, core.String enterpriseId) {
+  async.Future<StorePage> insert(StorePage request, core.String enterpriseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3513,6 +3957,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3533,6 +3980,9 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StoreLayoutPagesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3540,7 +3990,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<StoreLayoutPagesListResponse> list(core.String enterpriseId) {
+  async.Future<StoreLayoutPagesListResponse> list(core.String enterpriseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3551,6 +4002,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3576,6 +4030,9 @@
   ///
   /// [pageId] - The ID of the page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StorePage].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3584,7 +4041,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StorePage> patch(
-      StorePage request, core.String enterpriseId, core.String pageId) {
+      StorePage request, core.String enterpriseId, core.String pageId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3601,6 +4059,9 @@
     if (pageId == null) {
       throw new core.ArgumentError("Parameter pageId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3626,6 +4087,9 @@
   ///
   /// [pageId] - The ID of the page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StorePage].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3634,7 +4098,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StorePage> update(
-      StorePage request, core.String enterpriseId, core.String pageId) {
+      StorePage request, core.String enterpriseId, core.String pageId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3651,6 +4116,9 @@
     if (pageId == null) {
       throw new core.ArgumentError("Parameter pageId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3680,12 +4148,16 @@
   ///
   /// [userId] - The ID of the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String enterpriseId, core.String userId) {
+  async.Future delete(core.String enterpriseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3699,6 +4171,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3728,6 +4203,9 @@
   ///
   /// [userId] - The ID of the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AuthenticationToken].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3736,7 +4214,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AuthenticationToken> generateAuthenticationToken(
-      core.String enterpriseId, core.String userId) {
+      core.String enterpriseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3750,6 +4229,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3778,6 +4260,9 @@
   ///
   /// [userId] - The ID of the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserToken].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3786,7 +4271,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UserToken> generateToken(
-      core.String enterpriseId, core.String userId) {
+      core.String enterpriseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3800,6 +4286,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3824,6 +4313,9 @@
   ///
   /// [userId] - The ID of the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [User].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3831,7 +4323,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<User> get(core.String enterpriseId, core.String userId) {
+  async.Future<User> get(core.String enterpriseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3845,6 +4338,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3868,6 +4364,9 @@
   ///
   /// [userId] - The ID of the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProductSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3876,7 +4375,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ProductSet> getAvailableProductSet(
-      core.String enterpriseId, core.String userId) {
+      core.String enterpriseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3890,6 +4390,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3920,6 +4423,9 @@
   ///
   /// [enterpriseId] - The ID of the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [User].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3927,7 +4433,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<User> insert(User request, core.String enterpriseId) {
+  async.Future<User> insert(User request, core.String enterpriseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3941,6 +4448,9 @@
     if (enterpriseId == null) {
       throw new core.ArgumentError("Parameter enterpriseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -3965,6 +4475,9 @@
   ///
   /// [email] - The exact primary email address of the user to look up.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UsersListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3973,7 +4486,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UsersListResponse> list(
-      core.String enterpriseId, core.String email) {
+      core.String enterpriseId, core.String email,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3988,6 +4502,9 @@
       throw new core.ArgumentError("Parameter email is required.");
     }
     _queryParams["email"] = [email];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -4017,6 +4534,9 @@
   ///
   /// [userId] - The ID of the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [User].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4025,7 +4545,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<User> patch(
-      User request, core.String enterpriseId, core.String userId) {
+      User request, core.String enterpriseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4042,6 +4563,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -4065,12 +4589,16 @@
   ///
   /// [userId] - The ID of the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future revokeToken(core.String enterpriseId, core.String userId) {
+  async.Future revokeToken(core.String enterpriseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4084,6 +4612,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -4115,6 +4646,9 @@
   ///
   /// [userId] - The ID of the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProductSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4123,7 +4657,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ProductSet> setAvailableProductSet(
-      ProductSet request, core.String enterpriseId, core.String userId) {
+      ProductSet request, core.String enterpriseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4140,6 +4675,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -4171,6 +4709,9 @@
   ///
   /// [userId] - The ID of the user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [User].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4179,7 +4720,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<User> update(
-      User request, core.String enterpriseId, core.String userId) {
+      User request, core.String enterpriseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4196,6 +4738,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'enterprises/' +
         commons.Escaper.ecapeVariable('$enterpriseId') +
@@ -5142,7 +5687,7 @@
 ///
 /// Use the API to query group licenses. A Grouplicenses resource includes the
 /// total number of licenses purchased (paid apps only) and the total number of
-/// licenses currently in use. Iyn other words, the total number of Entitlements
+/// licenses currently in use. In other words, the total number of Entitlements
 /// that exist for the product.
 ///
 /// Only one group license object is created per product and group license
@@ -6448,12 +6993,12 @@
   /// tracks per user.
   core.String productSetBehavior;
 
-  /// Other products that are part of the set, in addition to those specified in
-  /// the productId array. The only difference between this field and the
-  /// productId array is that it's possible to specify additional information
-  /// about this product visibility, see ProductVisibility and its fields for
-  /// more information. Specifying the same product ID both here and in the
-  /// productId array is not allowed and it will result in an error.
+  /// Additional list of product IDs making up the product set. Unlike the
+  /// productID array, in this list It's possible to specify which tracks
+  /// (alpha, beta, production) of a product are visible to the user. See
+  /// ProductVisibility and its fields for more information. Specifying the same
+  /// product ID both here and in the productId array is not allowed and it will
+  /// result in an error.
   core.List<ProductVisibility> productVisibility;
 
   ProductSet();
@@ -6530,20 +7075,21 @@
 
 /// A product to be made visible to a user.
 class ProductVisibility {
-  /// The product ID that should be made visible to the user. This is required.
+  /// The product ID to make visible to the user. Required for each item in the
+  /// productVisibility list.
   core.String productId;
 
-  /// This allows to only grant visibility to the specified tracks of the app.
-  /// For example, if an app has a prod version, a beta version and an alpha
-  /// version and the enterprise has been granted visibility to both the alpha
-  /// and beta tracks, if tracks is {"beta", "production"} the user will be able
-  /// to install the app and they will get the beta version of the app. If there
-  /// are no app versions in the specified track or if the enterprise wasn't
-  /// granted visibility for the track, adding the "alpha" and "beta" values to
-  /// the list of tracks will have no effect for now; however they will take
-  /// effect once both conditions are met. Note that the enterprise itself needs
-  /// to be granted access to the alpha and/or beta tracks, regardless of
-  /// whether individual users or admins have access to those tracks.
+  /// Grants visibility to the specified track(s) of the product to the user.
+  /// The track available to the user is based on the following order of
+  /// preference: alpha, beta, production. For example, if an app has a prod
+  /// version, a beta version and an alpha version and the enterprise has been
+  /// granted visibility to both the alpha and beta tracks, if tracks is
+  /// {"beta", "production"} the user will be able to install the app and they
+  /// will get the beta version of the app. If there are no app versions in the
+  /// specified track adding the "alpha" and "beta" values to the list of tracks
+  /// will have no effect. Note that the enterprise requires access to alpha
+  /// and/or beta tracks before users can be granted visibility to apps in those
+  /// tracks.
   ///
   /// The allowed sets are: {} (considered equivalent to {"production"})
   /// {"production"} {"beta", "production"} {"alpha", "beta", "production"} The
diff --git a/generated/googleapis/lib/androidmanagement/v1.dart b/generated/googleapis/lib/androidmanagement/v1.dart
index ed4ac3f..758cd23 100644
--- a/generated/googleapis/lib/androidmanagement/v1.dart
+++ b/generated/googleapis/lib/androidmanagement/v1.dart
@@ -64,6 +64,9 @@
   /// [projectId] - The id of the Google Cloud Platform project which will own
   /// the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Enterprise].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -74,7 +77,8 @@
   async.Future<Enterprise> create(Enterprise request,
       {core.String signupUrlName,
       core.String enterpriseToken,
-      core.String projectId}) {
+      core.String projectId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -94,6 +98,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/enterprises';
 
@@ -113,6 +120,9 @@
   /// [name] - The name of the enterprise in the form enterprises/{enterpriseId}
   /// Value must have pattern "^enterprises/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Enterprise].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -120,7 +130,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Enterprise> get(core.String name) {
+  async.Future<Enterprise> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -131,6 +141,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -155,6 +168,9 @@
   /// [updateMask] - The field mask indicating the fields to update. If not set,
   /// all modifiable fields will be modified.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Enterprise].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -163,7 +179,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Enterprise> patch(Enterprise request, core.String name,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -180,6 +196,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -211,6 +230,9 @@
   /// a BCP47 tag (e.g. "en-US", "de"). If not specified the default language of
   /// the application will be used.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Application].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -218,7 +240,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Application> get(core.String name, {core.String languageCode}) {
+  async.Future<Application> get(core.String name,
+      {core.String languageCode, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -232,6 +255,9 @@
     if (languageCode != null) {
       _queryParams["languageCode"] = [languageCode];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -262,6 +288,9 @@
   /// enterprises/{enterpriseId}/devices/{deviceId}
   /// Value must have pattern "^enterprises/[^/]+/devices/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -269,7 +298,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -280,6 +309,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -300,6 +332,9 @@
   /// enterprises/{enterpriseId}/devices/{deviceId}
   /// Value must have pattern "^enterprises/[^/]+/devices/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Device].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -307,7 +342,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Device> get(core.String name) {
+  async.Future<Device> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -318,6 +353,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -342,6 +380,9 @@
   /// enterprises/{enterpriseId}/devices/{deviceId}
   /// Value must have pattern "^enterprises/[^/]+/devices/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -349,7 +390,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> issueCommand(Command request, core.String name) {
+  async.Future<Operation> issueCommand(Command request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -363,6 +405,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$name') +
@@ -391,6 +436,9 @@
   /// [pageToken] - A token identifying a page of results the server should
   /// return.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListDevicesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -399,7 +447,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListDevicesResponse> list(core.String parent,
-      {core.int pageSize, core.String pageToken}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -416,6 +464,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/devices';
@@ -442,6 +493,9 @@
   /// [updateMask] - The field mask indicating the fields to update. If not set,
   /// all modifiable fields will be modified.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Device].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -450,7 +504,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Device> patch(Device request, core.String name,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -467,6 +521,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -502,6 +559,9 @@
   /// Value must have pattern
   /// "^enterprises/[^/]+/devices/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -509,7 +569,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> cancel(core.String name) {
+  async.Future<Empty> cancel(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -520,6 +580,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':cancel';
 
@@ -543,6 +606,9 @@
   /// Value must have pattern
   /// "^enterprises/[^/]+/devices/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -550,7 +616,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -561,6 +627,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -583,6 +652,9 @@
   /// Value must have pattern
   /// "^enterprises/[^/]+/devices/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -590,7 +662,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String name) {
+  async.Future<Operation> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -601,6 +673,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -634,6 +709,9 @@
   ///
   /// [pageToken] - The standard list page token.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOperationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -642,7 +720,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOperationsResponse> list(core.String name,
-      {core.int pageSize, core.String filter, core.String pageToken}) {
+      {core.int pageSize,
+      core.String filter,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -662,6 +743,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -691,6 +775,9 @@
   /// enterprises/{enterpriseId}
   /// Value must have pattern "^enterprises/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EnrollmentToken].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -699,7 +786,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EnrollmentToken> create(
-      EnrollmentToken request, core.String parent) {
+      EnrollmentToken request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -713,6 +801,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -735,6 +826,9 @@
   /// enterprises/{enterpriseId}/enrollmentTokens/{enrollmentTokenId}
   /// Value must have pattern "^enterprises/[^/]+/enrollmentTokens/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -742,7 +836,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -753,6 +847,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -781,6 +878,9 @@
   /// enterprises/{enterpriseId}/policies/{policyId}
   /// Value must have pattern "^enterprises/[^/]+/policies/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -788,7 +888,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -799,6 +899,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -819,6 +922,9 @@
   /// enterprises/{enterpriseId}/policies/{policyId}
   /// Value must have pattern "^enterprises/[^/]+/policies/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -826,7 +932,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Policy> get(core.String name) {
+  async.Future<Policy> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -837,6 +943,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -863,6 +972,9 @@
   /// [pageToken] - A token identifying a page of results the server should
   /// return.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListPoliciesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -871,7 +983,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListPoliciesResponse> list(core.String parent,
-      {core.int pageSize, core.String pageToken}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -888,6 +1000,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/policies';
@@ -914,6 +1029,9 @@
   /// [updateMask] - The field mask indicating the fields to update. If not set,
   /// all modifiable fields will be modified.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -922,7 +1040,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> patch(Policy request, core.String name,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -939,6 +1057,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -969,6 +1090,9 @@
   /// enterprises/{enterpriseId}
   /// Value must have pattern "^enterprises/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [WebToken].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -976,7 +1100,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<WebToken> create(WebToken request, core.String parent) {
+  async.Future<WebToken> create(WebToken request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -990,6 +1115,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/webTokens';
@@ -1023,6 +1151,9 @@
   /// [projectId] - The id of the Google Cloud Platform project which will own
   /// the enterprise.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SignupUrl].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1031,7 +1162,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SignupUrl> create(
-      {core.String callbackUrl, core.String projectId}) {
+      {core.String callbackUrl, core.String projectId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1045,6 +1176,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/signupUrls';
 
@@ -1494,12 +1628,12 @@
   core.bool policyCompliant;
 
   /// The name of the policy that is intended to be applied to the device. If
-  /// empty, the policy with id default is applied. This field may be modified
-  /// by an update request. The name of the policy is in the form
-  /// enterprises/{enterpriseId}/policies/{policyId}. It is also permissible to
-  /// only specify the policyId when updating this field as long as the policyId
-  /// contains no slashes since the rest of the policy name can be inferred from
-  /// context.
+  /// empty, the policy_name for the user that owns this device is applied. This
+  /// field may be modified by an update request. The name of the policy is in
+  /// the form enterprises/{enterpriseId}/policies/{policyId}. It is also
+  /// permissible to only specify the policyId when updating this field as long
+  /// as the policyId contains no slashes since the rest of the policy name can
+  /// be inferred from context.
   core.String policyName;
 
   /// Power management events on the device in chronological order. This
@@ -1532,9 +1666,8 @@
   /// will be in this state until they have applied policy.
   core.String state;
 
-  /// The resource name of the user of the device in the form
-  /// enterprises/{enterpriseId}/users/{userId}. This is the name of the device
-  /// account automatically created for this device.
+  /// The resource name of the user that owns this device in the form
+  /// enterprises/{enterpriseId}/users/{userId}.
   core.String userName;
 
   Device();
@@ -1846,8 +1979,10 @@
 
   /// The name of the policy that will be initially applied to the enrolled
   /// device in the form enterprises/{enterpriseId}/policies/{policyId}. If not
-  /// specified, the policy with id default is applied. It is permissible to
-  /// only specify the policyId when updating this field as long as the policyId
+  /// specified, the policy_name for the user that owns the device is applied.
+  /// If user_name also isn't specified, the policy defaults to
+  /// enterprises/{enterpriseId}/policies/default. It is permissible to only
+  /// specify the policyId when updating this field as long as the policyId
   /// contains no slashes since the rest of the policy name can be inferred from
   /// context.
   core.String policyName;
@@ -3258,8 +3393,8 @@
   core.List<core.String> stayOnPluggedModes;
 
   /// The system update policy, which controls how OS updates are applied. If
-  /// the update type is WINDOWED and the device has a device account, the
-  /// update window will automatically apply to Play app updates as well.
+  /// the update type is WINDOWED, the update window will automatically apply to
+  /// Play app updates as well.
   SystemUpdate systemUpdate;
 
   /// Whether the microphone is muted and adjusting microphone volume is
@@ -3817,11 +3952,10 @@
   /// for the device, which typically requires the user to accept system
   /// updates.
   /// - "AUTOMATIC" : Install automatically as soon as an update is available.
-  /// - "WINDOWED" : Install automatically within a daily maintenance window. If
-  /// the device has a device account, this also configures Play apps to be
-  /// updated within the window. This is strongly recommended for kiosk devices
-  /// because this is the only way apps persistently pinned to the foreground
-  /// can be updated by Play.
+  /// - "WINDOWED" : Install automatically within a daily maintenance window.
+  /// This also configures Play apps to be updated within the window. This is
+  /// strongly recommended for kiosk devices because this is the only way apps
+  /// persistently pinned to the foreground can be updated by Play.
   /// - "POSTPONE" : Postpone automatic install up to a maximum of 30 days.
   core.String type;
 
diff --git a/generated/googleapis/lib/androidpublisher/v2.dart b/generated/googleapis/lib/androidpublisher/v2.dart
index 8ee3bb2..651b54f 100644
--- a/generated/googleapis/lib/androidpublisher/v2.dart
+++ b/generated/googleapis/lib/androidpublisher/v2.dart
@@ -75,6 +75,9 @@
   ///
   /// [editId] - Unique identifier for this edit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AppEdit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -82,7 +85,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AppEdit> commit(core.String packageName, core.String editId) {
+  async.Future<AppEdit> commit(core.String packageName, core.String editId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -96,6 +100,9 @@
     if (editId == null) {
       throw new core.ArgumentError("Parameter editId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -122,12 +129,16 @@
   ///
   /// [editId] - Unique identifier for this edit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String packageName, core.String editId) {
+  async.Future delete(core.String packageName, core.String editId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -141,6 +152,9 @@
     if (editId == null) {
       throw new core.ArgumentError("Parameter editId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -167,6 +181,9 @@
   ///
   /// [editId] - Unique identifier for this edit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AppEdit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -174,7 +191,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AppEdit> get(core.String packageName, core.String editId) {
+  async.Future<AppEdit> get(core.String packageName, core.String editId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -188,6 +206,9 @@
     if (editId == null) {
       throw new core.ArgumentError("Parameter editId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -211,6 +232,9 @@
   /// [packageName] - Unique identifier for the Android app that is being
   /// updated; for example, "com.spiffygame".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AppEdit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -218,7 +242,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AppEdit> insert(AppEdit request, core.String packageName) {
+  async.Future<AppEdit> insert(AppEdit request, core.String packageName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -232,6 +257,9 @@
     if (packageName == null) {
       throw new core.ArgumentError("Parameter packageName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') + '/edits';
 
@@ -254,6 +282,9 @@
   ///
   /// [editId] - Unique identifier for this edit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AppEdit].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -261,7 +292,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AppEdit> validate(core.String packageName, core.String editId) {
+  async.Future<AppEdit> validate(core.String packageName, core.String editId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -275,6 +307,9 @@
     if (editId == null) {
       throw new core.ArgumentError("Parameter editId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -314,13 +349,17 @@
   /// localized listing to read or modify. For example, to select Austrian
   /// German, pass "de-AT".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String packageName, core.String editId,
-      core.int apkVersionCode, core.String language) {
+      core.int apkVersionCode, core.String language,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -340,6 +379,9 @@
     if (language == null) {
       throw new core.ArgumentError("Parameter language is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -372,13 +414,17 @@
   /// [apkVersionCode] - The APK version code whose APK-specific listings should
   /// be read or modified.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future deleteall(
-      core.String packageName, core.String editId, core.int apkVersionCode) {
+      core.String packageName, core.String editId, core.int apkVersionCode,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -395,6 +441,9 @@
     if (apkVersionCode == null) {
       throw new core.ArgumentError("Parameter apkVersionCode is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -431,6 +480,9 @@
   /// localized listing to read or modify. For example, to select Austrian
   /// German, pass "de-AT".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ApkListing].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -439,7 +491,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ApkListing> get(core.String packageName, core.String editId,
-      core.int apkVersionCode, core.String language) {
+      core.int apkVersionCode, core.String language,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -459,6 +512,9 @@
     if (language == null) {
       throw new core.ArgumentError("Parameter language is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -489,6 +545,9 @@
   /// [apkVersionCode] - The APK version code whose APK-specific listings should
   /// be read or modified.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ApkListingsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -497,7 +556,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ApkListingsListResponse> list(
-      core.String packageName, core.String editId, core.int apkVersionCode) {
+      core.String packageName, core.String editId, core.int apkVersionCode,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -514,6 +574,9 @@
     if (apkVersionCode == null) {
       throw new core.ArgumentError("Parameter apkVersionCode is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -550,6 +613,9 @@
   /// localized listing to read or modify. For example, to select Austrian
   /// German, pass "de-AT".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ApkListing].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -558,7 +624,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ApkListing> patch(ApkListing request, core.String packageName,
-      core.String editId, core.int apkVersionCode, core.String language) {
+      core.String editId, core.int apkVersionCode, core.String language,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -581,6 +648,9 @@
     if (language == null) {
       throw new core.ArgumentError("Parameter language is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -618,6 +688,9 @@
   /// localized listing to read or modify. For example, to select Austrian
   /// German, pass "de-AT".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ApkListing].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -626,7 +699,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ApkListing> update(ApkListing request, core.String packageName,
-      core.String editId, core.int apkVersionCode, core.String language) {
+      core.String editId, core.int apkVersionCode, core.String language,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -649,6 +723,9 @@
     if (language == null) {
       throw new core.ArgumentError("Parameter language is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -687,6 +764,9 @@
   ///
   /// [editId] - Unique identifier for this edit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ApksAddExternallyHostedResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -697,7 +777,8 @@
   async.Future<ApksAddExternallyHostedResponse> addexternallyhosted(
       ApksAddExternallyHostedRequest request,
       core.String packageName,
-      core.String editId) {
+      core.String editId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -714,6 +795,9 @@
     if (editId == null) {
       throw new core.ArgumentError("Parameter editId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -737,6 +821,9 @@
   ///
   /// [editId] - Unique identifier for this edit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ApksListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -745,7 +832,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ApksListResponse> list(
-      core.String packageName, core.String editId) {
+      core.String packageName, core.String editId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -759,6 +847,9 @@
     if (editId == null) {
       throw new core.ArgumentError("Parameter editId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -781,6 +872,9 @@
   ///
   /// [editId] - Unique identifier for this edit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -795,7 +889,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Apk> upload(core.String packageName, core.String editId,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -810,6 +905,9 @@
     if (editId == null) {
       throw new core.ArgumentError("Parameter editId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -866,6 +964,9 @@
   /// Possible string values are:
   /// - "proguard"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -884,7 +985,8 @@
       core.String editId,
       core.int apkVersionCode,
       core.String deobfuscationFileType,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -906,6 +1008,9 @@
       throw new core.ArgumentError(
           "Parameter deobfuscationFileType is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -964,6 +1069,9 @@
   ///
   /// [editId] - Unique identifier for this edit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AppDetails].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -971,7 +1079,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AppDetails> get(core.String packageName, core.String editId) {
+  async.Future<AppDetails> get(core.String packageName, core.String editId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -985,6 +1094,9 @@
     if (editId == null) {
       throw new core.ArgumentError("Parameter editId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -1011,6 +1123,9 @@
   ///
   /// [editId] - Unique identifier for this edit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AppDetails].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1019,7 +1134,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AppDetails> patch(
-      AppDetails request, core.String packageName, core.String editId) {
+      AppDetails request, core.String packageName, core.String editId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1036,6 +1152,9 @@
     if (editId == null) {
       throw new core.ArgumentError("Parameter editId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -1062,6 +1181,9 @@
   ///
   /// [editId] - Unique identifier for this edit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AppDetails].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1070,7 +1192,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AppDetails> update(
-      AppDetails request, core.String packageName, core.String editId) {
+      AppDetails request, core.String packageName, core.String editId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1087,6 +1210,9 @@
     if (editId == null) {
       throw new core.ArgumentError("Parameter editId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -1126,6 +1252,9 @@
   /// - "main"
   /// - "patch"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ExpansionFile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1134,7 +1263,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ExpansionFile> get(core.String packageName, core.String editId,
-      core.int apkVersionCode, core.String expansionFileType) {
+      core.int apkVersionCode, core.String expansionFileType,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1154,6 +1284,9 @@
     if (expansionFileType == null) {
       throw new core.ArgumentError("Parameter expansionFileType is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -1193,6 +1326,9 @@
   /// - "main"
   /// - "patch"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ExpansionFile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1205,7 +1341,8 @@
       core.String packageName,
       core.String editId,
       core.int apkVersionCode,
-      core.String expansionFileType) {
+      core.String expansionFileType,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1228,6 +1365,9 @@
     if (expansionFileType == null) {
       throw new core.ArgumentError("Parameter expansionFileType is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -1266,6 +1406,9 @@
   /// - "main"
   /// - "patch"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ExpansionFile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1278,7 +1421,8 @@
       core.String packageName,
       core.String editId,
       core.int apkVersionCode,
-      core.String expansionFileType) {
+      core.String expansionFileType,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1301,6 +1445,9 @@
     if (expansionFileType == null) {
       throw new core.ArgumentError("Parameter expansionFileType is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -1336,6 +1483,9 @@
   /// - "main"
   /// - "patch"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -1354,7 +1504,8 @@
       core.String editId,
       core.int apkVersionCode,
       core.String expansionFileType,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -1375,6 +1526,9 @@
     if (expansionFileType == null) {
       throw new core.ArgumentError("Parameter expansionFileType is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -1451,13 +1605,17 @@
   /// [imageId] - Unique identifier an image within the set of images attached
   /// to this edit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String packageName, core.String editId,
-      core.String language, core.String imageType, core.String imageId) {
+      core.String language, core.String imageType, core.String imageId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1480,6 +1638,9 @@
     if (imageId == null) {
       throw new core.ArgumentError("Parameter imageId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1527,6 +1688,9 @@
   /// - "tvScreenshots"
   /// - "wearScreenshots"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ImagesDeleteAllResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1535,7 +1699,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ImagesDeleteAllResponse> deleteall(core.String packageName,
-      core.String editId, core.String language, core.String imageType) {
+      core.String editId, core.String language, core.String imageType,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1555,6 +1720,9 @@
     if (imageType == null) {
       throw new core.ArgumentError("Parameter imageType is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -1598,6 +1766,9 @@
   /// - "tvScreenshots"
   /// - "wearScreenshots"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ImagesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1606,7 +1777,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ImagesListResponse> list(core.String packageName,
-      core.String editId, core.String language, core.String imageType) {
+      core.String editId, core.String language, core.String imageType,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1626,6 +1798,9 @@
     if (imageType == null) {
       throw new core.ArgumentError("Parameter imageType is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -1670,6 +1845,9 @@
   /// - "tvScreenshots"
   /// - "wearScreenshots"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -1685,7 +1863,8 @@
   /// this method will complete with the same error.
   async.Future<ImagesUploadResponse> upload(core.String packageName,
       core.String editId, core.String language, core.String imageType,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -1706,6 +1885,9 @@
     if (imageType == null) {
       throw new core.ArgumentError("Parameter imageType is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -1766,13 +1948,17 @@
   /// listing to read or modify. For example, to select Austrian German, pass
   /// "de-AT".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String packageName, core.String editId, core.String language) {
+      core.String packageName, core.String editId, core.String language,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1789,6 +1975,9 @@
     if (language == null) {
       throw new core.ArgumentError("Parameter language is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1816,12 +2005,16 @@
   ///
   /// [editId] - Unique identifier for this edit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future deleteall(core.String packageName, core.String editId) {
+  async.Future deleteall(core.String packageName, core.String editId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1835,6 +2028,9 @@
     if (editId == null) {
       throw new core.ArgumentError("Parameter editId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1865,6 +2061,9 @@
   /// listing to read or modify. For example, to select Austrian German, pass
   /// "de-AT".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Listing].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1873,7 +2072,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Listing> get(
-      core.String packageName, core.String editId, core.String language) {
+      core.String packageName, core.String editId, core.String language,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1890,6 +2090,9 @@
     if (language == null) {
       throw new core.ArgumentError("Parameter language is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -1915,6 +2118,9 @@
   ///
   /// [editId] - Unique identifier for this edit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListingsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1923,7 +2129,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListingsListResponse> list(
-      core.String packageName, core.String editId) {
+      core.String packageName, core.String editId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1937,6 +2144,9 @@
     if (editId == null) {
       throw new core.ArgumentError("Parameter editId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -1968,6 +2178,9 @@
   /// listing to read or modify. For example, to select Austrian German, pass
   /// "de-AT".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Listing].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1976,7 +2189,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Listing> patch(Listing request, core.String packageName,
-      core.String editId, core.String language) {
+      core.String editId, core.String language,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1996,6 +2210,9 @@
     if (language == null) {
       throw new core.ArgumentError("Parameter language is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -2027,6 +2244,9 @@
   /// listing to read or modify. For example, to select Austrian German, pass
   /// "de-AT".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Listing].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2035,7 +2255,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Listing> update(Listing request, core.String packageName,
-      core.String editId, core.String language) {
+      core.String editId, core.String language,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2055,6 +2276,9 @@
     if (language == null) {
       throw new core.ArgumentError("Parameter language is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -2091,6 +2315,9 @@
   /// - "production"
   /// - "rollout"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Testers].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2099,7 +2326,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Testers> get(
-      core.String packageName, core.String editId, core.String track) {
+      core.String packageName, core.String editId, core.String track,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2116,6 +2344,9 @@
     if (track == null) {
       throw new core.ArgumentError("Parameter track is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -2148,6 +2379,9 @@
   /// - "production"
   /// - "rollout"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Testers].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2156,7 +2390,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Testers> patch(Testers request, core.String packageName,
-      core.String editId, core.String track) {
+      core.String editId, core.String track,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2176,6 +2411,9 @@
     if (track == null) {
       throw new core.ArgumentError("Parameter track is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -2208,6 +2446,9 @@
   /// - "production"
   /// - "rollout"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Testers].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2216,7 +2457,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Testers> update(Testers request, core.String packageName,
-      core.String editId, core.String track) {
+      core.String editId, core.String track,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2236,6 +2478,9 @@
     if (track == null) {
       throw new core.ArgumentError("Parameter track is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -2275,6 +2520,9 @@
   /// - "production"
   /// - "rollout"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Track].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2283,7 +2531,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Track> get(
-      core.String packageName, core.String editId, core.String track) {
+      core.String packageName, core.String editId, core.String track,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2300,6 +2549,9 @@
     if (track == null) {
       throw new core.ArgumentError("Parameter track is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -2325,6 +2577,9 @@
   ///
   /// [editId] - Unique identifier for this edit.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TracksListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2333,7 +2588,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TracksListResponse> list(
-      core.String packageName, core.String editId) {
+      core.String packageName, core.String editId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2347,6 +2603,9 @@
     if (editId == null) {
       throw new core.ArgumentError("Parameter editId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -2382,6 +2641,9 @@
   /// - "production"
   /// - "rollout"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Track].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2390,7 +2652,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Track> patch(Track request, core.String packageName,
-      core.String editId, core.String track) {
+      core.String editId, core.String track,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2410,6 +2673,9 @@
     if (track == null) {
       throw new core.ArgumentError("Parameter track is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -2446,6 +2712,9 @@
   /// - "production"
   /// - "rollout"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Track].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2454,7 +2723,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Track> update(Track request, core.String packageName,
-      core.String editId, core.String track) {
+      core.String editId, core.String track,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2474,6 +2744,9 @@
     if (track == null) {
       throw new core.ArgumentError("Parameter track is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/edits/' +
@@ -2512,6 +2785,9 @@
   ///
   /// [token] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EntitlementsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2523,7 +2799,8 @@
       {core.int maxResults,
       core.String productId,
       core.int startIndex,
-      core.String token}) {
+      core.String token,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2546,6 +2823,9 @@
     if (token != null) {
       _queryParams["token"] = [token];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') + '/entitlements';
 
@@ -2569,6 +2849,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InappproductsBatchResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2577,7 +2860,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InappproductsBatchResponse> batch(
-      InappproductsBatchRequest request) {
+      InappproductsBatchRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2588,6 +2872,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'inappproducts/batch';
 
@@ -2610,12 +2897,16 @@
   ///
   /// [sku] - Unique identifier for the in-app product.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String packageName, core.String sku) {
+  async.Future delete(core.String packageName, core.String sku,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2629,6 +2920,9 @@
     if (sku == null) {
       throw new core.ArgumentError("Parameter sku is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2653,6 +2947,9 @@
   ///
   /// [sku] - Unique identifier for the in-app product.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InAppProduct].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2660,7 +2957,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<InAppProduct> get(core.String packageName, core.String sku) {
+  async.Future<InAppProduct> get(core.String packageName, core.String sku,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2674,6 +2972,9 @@
     if (sku == null) {
       throw new core.ArgumentError("Parameter sku is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/inappproducts/' +
@@ -2702,6 +3003,9 @@
   /// product will be auto converted to the target currency based on the default
   /// price. Defaults to false.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InAppProduct].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2711,7 +3015,7 @@
   /// this method will complete with the same error.
   async.Future<InAppProduct> insert(
       InAppProduct request, core.String packageName,
-      {core.bool autoConvertMissingPrices}) {
+      {core.bool autoConvertMissingPrices, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2730,6 +3034,9 @@
         "${autoConvertMissingPrices}"
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') + '/inappproducts';
 
@@ -2756,6 +3063,9 @@
   ///
   /// [token] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InappproductsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2764,7 +3074,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InappproductsListResponse> list(core.String packageName,
-      {core.int maxResults, core.int startIndex, core.String token}) {
+      {core.int maxResults,
+      core.int startIndex,
+      core.String token,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2784,6 +3097,9 @@
     if (token != null) {
       _queryParams["token"] = [token];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') + '/inappproducts';
 
@@ -2814,6 +3130,9 @@
   /// product will be auto converted to the target currency based on the default
   /// price. Defaults to false.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InAppProduct].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2823,7 +3142,7 @@
   /// this method will complete with the same error.
   async.Future<InAppProduct> patch(
       InAppProduct request, core.String packageName, core.String sku,
-      {core.bool autoConvertMissingPrices}) {
+      {core.bool autoConvertMissingPrices, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2845,6 +3164,9 @@
         "${autoConvertMissingPrices}"
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/inappproducts/' +
@@ -2875,6 +3197,9 @@
   /// product will be auto converted to the target currency based on the default
   /// price. Defaults to false.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InAppProduct].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2884,7 +3209,7 @@
   /// this method will complete with the same error.
   async.Future<InAppProduct> update(
       InAppProduct request, core.String packageName, core.String sku,
-      {core.bool autoConvertMissingPrices}) {
+      {core.bool autoConvertMissingPrices, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2906,6 +3231,9 @@
         "${autoConvertMissingPrices}"
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/inappproducts/' +
@@ -2953,6 +3281,9 @@
   /// [token] - The token provided to the user's device when the inapp product
   /// was purchased.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProductPurchase].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2961,7 +3292,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ProductPurchase> get(
-      core.String packageName, core.String productId, core.String token) {
+      core.String packageName, core.String productId, core.String token,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2978,6 +3310,9 @@
     if (token == null) {
       throw new core.ArgumentError("Parameter token is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/purchases/products/' +
@@ -3015,13 +3350,17 @@
   /// [token] - The token provided to the user's device when the subscription
   /// was purchased.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future cancel(
-      core.String packageName, core.String subscriptionId, core.String token) {
+      core.String packageName, core.String subscriptionId, core.String token,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3038,6 +3377,9 @@
     if (token == null) {
       throw new core.ArgumentError("Parameter token is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3073,6 +3415,9 @@
   /// [token] - The token provided to the user's device when the subscription
   /// was purchased.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SubscriptionPurchasesDeferResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3084,7 +3429,8 @@
       SubscriptionPurchasesDeferRequest request,
       core.String packageName,
       core.String subscriptionId,
-      core.String token) {
+      core.String token,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3104,6 +3450,9 @@
     if (token == null) {
       throw new core.ArgumentError("Parameter token is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/purchases/subscriptions/' +
@@ -3136,6 +3485,9 @@
   /// [token] - The token provided to the user's device when the subscription
   /// was purchased.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SubscriptionPurchase].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3144,7 +3496,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SubscriptionPurchase> get(
-      core.String packageName, core.String subscriptionId, core.String token) {
+      core.String packageName, core.String subscriptionId, core.String token,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3161,6 +3514,9 @@
     if (token == null) {
       throw new core.ArgumentError("Parameter token is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/purchases/subscriptions/' +
@@ -3191,13 +3547,17 @@
   /// [token] - The token provided to the user's device when the subscription
   /// was purchased.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future refund(
-      core.String packageName, core.String subscriptionId, core.String token) {
+      core.String packageName, core.String subscriptionId, core.String token,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3214,6 +3574,9 @@
     if (token == null) {
       throw new core.ArgumentError("Parameter token is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3248,13 +3611,17 @@
   /// [token] - The token provided to the user's device when the subscription
   /// was purchased.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future revoke(
-      core.String packageName, core.String subscriptionId, core.String token) {
+      core.String packageName, core.String subscriptionId, core.String token,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3271,6 +3638,9 @@
     if (token == null) {
       throw new core.ArgumentError("Parameter token is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3325,6 +3695,9 @@
   ///
   /// [token] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VoidedPurchasesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3337,7 +3710,8 @@
       core.int maxResults,
       core.int startIndex,
       core.String startTime,
-      core.String token}) {
+      core.String token,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3363,6 +3737,9 @@
     if (token != null) {
       _queryParams["token"] = [token];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/purchases/voidedpurchases';
@@ -3394,6 +3771,9 @@
   ///
   /// [translationLanguage] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Review].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3402,7 +3782,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Review> get(core.String packageName, core.String reviewId,
-      {core.String translationLanguage}) {
+      {core.String translationLanguage, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3419,6 +3799,9 @@
     if (translationLanguage != null) {
       _queryParams["translationLanguage"] = [translationLanguage];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/reviews/' +
@@ -3448,6 +3831,9 @@
   ///
   /// [translationLanguage] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ReviewsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3459,7 +3845,8 @@
       {core.int maxResults,
       core.int startIndex,
       core.String token,
-      core.String translationLanguage}) {
+      core.String translationLanguage,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3482,6 +3869,9 @@
     if (translationLanguage != null) {
       _queryParams["translationLanguage"] = [translationLanguage];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') + '/reviews';
 
@@ -3505,6 +3895,9 @@
   ///
   /// [reviewId] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ReviewsReplyResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3513,7 +3906,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ReviewsReplyResponse> reply(ReviewsReplyRequest request,
-      core.String packageName, core.String reviewId) {
+      core.String packageName, core.String reviewId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3530,6 +3924,9 @@
     if (reviewId == null) {
       throw new core.ArgumentError("Parameter reviewId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$packageName') +
         '/reviews/' +
diff --git a/generated/googleapis/lib/appengine/v1.dart b/generated/googleapis/lib/appengine/v1.dart
index 6b5c00b..4f41119 100644
--- a/generated/googleapis/lib/appengine/v1.dart
+++ b/generated/googleapis/lib/appengine/v1.dart
@@ -72,6 +72,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -79,7 +82,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> create(Application request) {
+  async.Future<Operation> create(Application request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -90,6 +93,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps';
 
@@ -109,6 +115,9 @@
   /// [appsId] - Part of `name`. Name of the Application resource to get.
   /// Example: apps/myapp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Application].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -116,7 +125,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Application> get(core.String appsId) {
+  async.Future<Application> get(core.String appsId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -127,6 +136,9 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' + commons.Escaper.ecapeVariable('$appsId');
 
@@ -154,6 +166,9 @@
   ///
   /// [updateMask] - Standard field mask for the set of fields to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -162,7 +177,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> patch(Application request, core.String appsId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -179,6 +194,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' + commons.Escaper.ecapeVariable('$appsId');
 
@@ -203,6 +221,9 @@
   /// [appsId] - Part of `name`. Name of the application to repair. Example:
   /// apps/myapp
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -211,7 +232,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> repair(
-      RepairApplicationRequest request, core.String appsId) {
+      RepairApplicationRequest request, core.String appsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -225,6 +247,9 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' + commons.Escaper.ecapeVariable('$appsId') + ':repair';
 
@@ -253,6 +278,9 @@
   /// [appsId] - Part of `parent`. Name of the parent Application resource.
   /// Example: apps/myapp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AuthorizedCertificate].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -261,7 +289,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AuthorizedCertificate> create(
-      AuthorizedCertificate request, core.String appsId) {
+      AuthorizedCertificate request, core.String appsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -275,6 +304,9 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -299,6 +331,9 @@
   /// [authorizedCertificatesId] - Part of `name`. See documentation of
   /// `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -307,7 +342,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> delete(
-      core.String appsId, core.String authorizedCertificatesId) {
+      core.String appsId, core.String authorizedCertificatesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -322,6 +358,9 @@
       throw new core.ArgumentError(
           "Parameter authorizedCertificatesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -352,6 +391,9 @@
   /// - "BASIC_CERTIFICATE" : A BASIC_CERTIFICATE.
   /// - "FULL_CERTIFICATE" : A FULL_CERTIFICATE.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AuthorizedCertificate].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -361,7 +403,7 @@
   /// this method will complete with the same error.
   async.Future<AuthorizedCertificate> get(
       core.String appsId, core.String authorizedCertificatesId,
-      {core.String view}) {
+      {core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -379,6 +421,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -401,15 +446,18 @@
   /// [appsId] - Part of `parent`. Name of the parent Application resource.
   /// Example: apps/myapp.
   ///
-  /// [pageToken] - Continuation token for fetching the next page of results.
-  ///
-  /// [pageSize] - Maximum results to return per page.
-  ///
   /// [view] - Controls the set of fields returned in the LIST response.
   /// Possible string values are:
   /// - "BASIC_CERTIFICATE" : A BASIC_CERTIFICATE.
   /// - "FULL_CERTIFICATE" : A FULL_CERTIFICATE.
   ///
+  /// [pageToken] - Continuation token for fetching the next page of results.
+  ///
+  /// [pageSize] - Maximum results to return per page.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListAuthorizedCertificatesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -418,7 +466,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListAuthorizedCertificatesResponse> list(core.String appsId,
-      {core.String pageToken, core.int pageSize, core.String view}) {
+      {core.String view,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -429,14 +480,17 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if (view != null) {
+      _queryParams["view"] = [view];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (view != null) {
-      _queryParams["view"] = [view];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/apps/' +
@@ -473,6 +527,9 @@
   /// Updates are only supported on the certificate_raw_data and display_name
   /// fields.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AuthorizedCertificate].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -482,7 +539,7 @@
   /// this method will complete with the same error.
   async.Future<AuthorizedCertificate> patch(AuthorizedCertificate request,
       core.String appsId, core.String authorizedCertificatesId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -503,6 +560,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -536,6 +596,9 @@
   ///
   /// [pageSize] - Maximum results to return per page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListAuthorizedDomainsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -544,7 +607,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListAuthorizedDomainsResponse> list(core.String appsId,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -561,6 +624,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -594,6 +660,9 @@
   /// [appsId] - Part of `parent`. Name of the parent Application resource.
   /// Example: apps/myapp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -601,7 +670,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> create(DomainMapping request, core.String appsId) {
+  async.Future<Operation> create(DomainMapping request, core.String appsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -615,6 +685,9 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -640,6 +713,9 @@
   ///
   /// [domainMappingsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -648,7 +724,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(
-      core.String appsId, core.String domainMappingsId) {
+      core.String appsId, core.String domainMappingsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -662,6 +739,9 @@
     if (domainMappingsId == null) {
       throw new core.ArgumentError("Parameter domainMappingsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -686,6 +766,9 @@
   ///
   /// [domainMappingsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DomainMapping].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -694,7 +777,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DomainMapping> get(
-      core.String appsId, core.String domainMappingsId) {
+      core.String appsId, core.String domainMappingsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -708,6 +792,9 @@
     if (domainMappingsId == null) {
       throw new core.ArgumentError("Parameter domainMappingsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -734,6 +821,9 @@
   ///
   /// [pageSize] - Maximum results to return per page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListDomainMappingsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -742,7 +832,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListDomainMappingsResponse> list(core.String appsId,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -759,6 +849,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -790,6 +883,9 @@
   ///
   /// [updateMask] - Standard field mask for the set of fields to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -799,7 +895,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       DomainMapping request, core.String appsId, core.String domainMappingsId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -819,6 +915,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -862,6 +961,9 @@
   /// [appsId] - Part of `name`. Name of the Firewall collection to set.
   /// Example: apps/myapp/firewall/ingressRules.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchUpdateIngressRulesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -870,7 +972,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchUpdateIngressRulesResponse> batchUpdate(
-      BatchUpdateIngressRulesRequest request, core.String appsId) {
+      BatchUpdateIngressRulesRequest request, core.String appsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -884,6 +987,9 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -908,6 +1014,9 @@
   /// [appsId] - Part of `parent`. Name of the parent Firewall collection in
   /// which to create a new rule. Example: apps/myapp/firewall/ingressRules.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FirewallRule].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -915,7 +1024,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<FirewallRule> create(FirewallRule request, core.String appsId) {
+  async.Future<FirewallRule> create(FirewallRule request, core.String appsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -929,6 +1039,9 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -952,6 +1065,9 @@
   ///
   /// [ingressRulesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -959,7 +1075,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String appsId, core.String ingressRulesId) {
+  async.Future<Empty> delete(core.String appsId, core.String ingressRulesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -973,6 +1090,9 @@
     if (ingressRulesId == null) {
       throw new core.ArgumentError("Parameter ingressRulesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -997,6 +1117,9 @@
   ///
   /// [ingressRulesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FirewallRule].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1004,8 +1127,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<FirewallRule> get(
-      core.String appsId, core.String ingressRulesId) {
+  async.Future<FirewallRule> get(core.String appsId, core.String ingressRulesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1019,6 +1142,9 @@
     if (ingressRulesId == null) {
       throw new core.ArgumentError("Parameter ingressRulesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1049,6 +1175,9 @@
   /// address will be returned. The first returned rule will be the rule that
   /// fires on requests from this IP.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListIngressRulesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1057,7 +1186,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListIngressRulesResponse> list(core.String appsId,
-      {core.String pageToken, core.int pageSize, core.String matchingAddress}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String matchingAddress,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1077,6 +1209,9 @@
     if (matchingAddress != null) {
       _queryParams["matchingAddress"] = [matchingAddress];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1105,6 +1240,9 @@
   ///
   /// [updateMask] - Standard field mask for the set of fields to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FirewallRule].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1114,7 +1252,7 @@
   /// this method will complete with the same error.
   async.Future<FirewallRule> patch(
       FirewallRule request, core.String appsId, core.String ingressRulesId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1134,6 +1272,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1163,6 +1304,9 @@
   ///
   /// [locationsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Location].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1170,7 +1314,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Location> get(core.String appsId, core.String locationsId) {
+  async.Future<Location> get(core.String appsId, core.String locationsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1184,6 +1329,9 @@
     if (locationsId == null) {
       throw new core.ArgumentError("Parameter locationsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1206,12 +1354,15 @@
   /// [appsId] - Part of `name`. The resource that owns the locations
   /// collection, if applicable.
   ///
-  /// [filter] - The standard list filter.
-  ///
   /// [pageToken] - The standard list page token.
   ///
   /// [pageSize] - The standard list page size.
   ///
+  /// [filter] - The standard list filter.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLocationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1220,7 +1371,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLocationsResponse> list(core.String appsId,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String filter,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1231,15 +1385,18 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
-    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' + commons.Escaper.ecapeVariable('$appsId') + '/locations';
 
@@ -1268,6 +1425,9 @@
   ///
   /// [operationsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1275,7 +1435,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String appsId, core.String operationsId) {
+  async.Future<Operation> get(core.String appsId, core.String operationsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1289,6 +1450,9 @@
     if (operationsId == null) {
       throw new core.ArgumentError("Parameter operationsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1318,11 +1482,14 @@
   ///
   /// [appsId] - Part of `name`. The name of the operation's parent resource.
   ///
+  /// [pageToken] - The standard list page token.
+  ///
   /// [pageSize] - The standard list page size.
   ///
   /// [filter] - The standard list filter.
   ///
-  /// [pageToken] - The standard list page token.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListOperationsResponse].
   ///
@@ -1332,7 +1499,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOperationsResponse> list(core.String appsId,
-      {core.int pageSize, core.String filter, core.String pageToken}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String filter,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1343,14 +1513,17 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
     if (filter != null) {
       _queryParams["filter"] = [filter];
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url =
@@ -1383,6 +1556,9 @@
   ///
   /// [servicesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1390,7 +1566,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> delete(core.String appsId, core.String servicesId) {
+  async.Future<Operation> delete(core.String appsId, core.String servicesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1404,6 +1581,9 @@
     if (servicesId == null) {
       throw new core.ArgumentError("Parameter servicesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1428,6 +1608,9 @@
   ///
   /// [servicesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Service].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1435,7 +1618,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Service> get(core.String appsId, core.String servicesId) {
+  async.Future<Service> get(core.String appsId, core.String servicesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1449,6 +1633,9 @@
     if (servicesId == null) {
       throw new core.ArgumentError("Parameter servicesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1471,9 +1658,12 @@
   /// [appsId] - Part of `parent`. Name of the parent Application resource.
   /// Example: apps/myapp.
   ///
+  /// [pageToken] - Continuation token for fetching the next page of results.
+  ///
   /// [pageSize] - Maximum results to return per page.
   ///
-  /// [pageToken] - Continuation token for fetching the next page of results.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListServicesResponse].
   ///
@@ -1483,7 +1673,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListServicesResponse> list(core.String appsId,
-      {core.int pageSize, core.String pageToken}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1494,11 +1684,14 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/apps/' + commons.Escaper.ecapeVariable('$appsId') + '/services';
@@ -1539,6 +1732,9 @@
   /// Splitting Traffic
   /// (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1548,7 +1744,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       Service request, core.String appsId, core.String servicesId,
-      {core.String updateMask, core.bool migrateTraffic}) {
+      {core.String updateMask, core.bool migrateTraffic, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1571,6 +1767,9 @@
     if (migrateTraffic != null) {
       _queryParams["migrateTraffic"] = ["${migrateTraffic}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1607,6 +1806,9 @@
   ///
   /// [servicesId] - Part of `parent`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1615,7 +1817,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> create(
-      Version request, core.String appsId, core.String servicesId) {
+      Version request, core.String appsId, core.String servicesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1632,6 +1835,9 @@
     if (servicesId == null) {
       throw new core.ArgumentError("Parameter servicesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1659,6 +1865,9 @@
   ///
   /// [versionsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1667,7 +1876,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(
-      core.String appsId, core.String servicesId, core.String versionsId) {
+      core.String appsId, core.String servicesId, core.String versionsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1684,6 +1894,9 @@
     if (versionsId == null) {
       throw new core.ArgumentError("Parameter versionsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1718,6 +1931,9 @@
   /// - "BASIC" : A BASIC.
   /// - "FULL" : A FULL.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Version].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1727,7 +1943,7 @@
   /// this method will complete with the same error.
   async.Future<Version> get(
       core.String appsId, core.String servicesId, core.String versionsId,
-      {core.String view}) {
+      {core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1747,6 +1963,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1782,6 +2001,9 @@
   /// - "BASIC" : A BASIC.
   /// - "FULL" : A FULL.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListVersionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1791,7 +2013,10 @@
   /// this method will complete with the same error.
   async.Future<ListVersionsResponse> list(
       core.String appsId, core.String servicesId,
-      {core.String pageToken, core.int pageSize, core.String view}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String view,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1814,6 +2039,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1878,6 +2106,9 @@
   ///
   /// [updateMask] - Standard field mask for the set of fields to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1887,7 +2118,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(Version request, core.String appsId,
       core.String servicesId, core.String versionsId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1910,6 +2141,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1954,6 +2188,9 @@
   ///
   /// [instancesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1966,7 +2203,8 @@
       core.String appsId,
       core.String servicesId,
       core.String versionsId,
-      core.String instancesId) {
+      core.String instancesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1989,6 +2227,9 @@
     if (instancesId == null) {
       throw new core.ArgumentError("Parameter instancesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -2022,6 +2263,9 @@
   ///
   /// [instancesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2030,7 +2274,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String appsId, core.String servicesId,
-      core.String versionsId, core.String instancesId) {
+      core.String versionsId, core.String instancesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2050,6 +2295,9 @@
     if (instancesId == null) {
       throw new core.ArgumentError("Parameter instancesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -2082,6 +2330,9 @@
   ///
   /// [instancesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Instance].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2090,7 +2341,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Instance> get(core.String appsId, core.String servicesId,
-      core.String versionsId, core.String instancesId) {
+      core.String versionsId, core.String instancesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2110,6 +2362,9 @@
     if (instancesId == null) {
       throw new core.ArgumentError("Parameter instancesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -2146,6 +2401,9 @@
   ///
   /// [pageSize] - Maximum results to return per page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListInstancesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2155,7 +2413,7 @@
   /// this method will complete with the same error.
   async.Future<ListInstancesResponse> list(
       core.String appsId, core.String servicesId, core.String versionsId,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2178,6 +2436,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
diff --git a/generated/googleapis/lib/appsactivity/v1.dart b/generated/googleapis/lib/appsactivity/v1.dart
index 147c993..086bc65 100644
--- a/generated/googleapis/lib/appsactivity/v1.dart
+++ b/generated/googleapis/lib/appsactivity/v1.dart
@@ -82,6 +82,9 @@
   /// [userId] - Indicates the user to return activity for. Use the special
   /// value me to indicate the currently authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListActivitiesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -96,7 +99,8 @@
       core.int pageSize,
       core.String pageToken,
       core.String source,
-      core.String userId}) {
+      core.String userId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -125,6 +129,9 @@
     if (userId != null) {
       _queryParams["userId"] = [userId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'activities';
 
diff --git a/generated/googleapis/lib/appstate/v1.dart b/generated/googleapis/lib/appstate/v1.dart
index 12855fe..2cd721d 100644
--- a/generated/googleapis/lib/appstate/v1.dart
+++ b/generated/googleapis/lib/appstate/v1.dart
@@ -47,6 +47,9 @@
   /// [currentDataVersion] - The version of the data to be cleared. Version
   /// strings are returned by the server.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [WriteResult].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -55,7 +58,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<WriteResult> clear(core.int stateKey,
-      {core.String currentDataVersion}) {
+      {core.String currentDataVersion, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -69,6 +72,9 @@
     if (currentDataVersion != null) {
       _queryParams["currentDataVersion"] = [currentDataVersion];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'states/' + commons.Escaper.ecapeVariable('$stateKey') + '/clear';
 
@@ -92,12 +98,15 @@
   /// [stateKey] - The key for the data to be retrieved.
   /// Value must be between "0" and "3".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.int stateKey) {
+  async.Future delete(core.int stateKey, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -108,6 +117,9 @@
     if (stateKey == null) {
       throw new core.ArgumentError("Parameter stateKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -130,6 +142,9 @@
   /// [stateKey] - The key for the data to be retrieved.
   /// Value must be between "0" and "3".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -137,7 +152,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GetResponse> get(core.int stateKey) {
+  async.Future<GetResponse> get(core.int stateKey, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -148,6 +163,9 @@
     if (stateKey == null) {
       throw new core.ArgumentError("Parameter stateKey is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'states/' + commons.Escaper.ecapeVariable('$stateKey');
 
@@ -167,6 +185,9 @@
   /// [includeData] - Whether to include the full data in addition to the
   /// version number
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -174,7 +195,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListResponse> list({core.bool includeData}) {
+  async.Future<ListResponse> list(
+      {core.bool includeData, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -185,6 +207,9 @@
     if (includeData != null) {
       _queryParams["includeData"] = ["${includeData}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'states';
 
@@ -214,6 +239,9 @@
   /// server for this key, the update will succeed irrespective of the value of
   /// this parameter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [WriteResult].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -222,7 +250,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<WriteResult> update(UpdateRequest request, core.int stateKey,
-      {core.String currentStateVersion}) {
+      {core.String currentStateVersion, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -239,6 +267,9 @@
     if (currentStateVersion != null) {
       _queryParams["currentStateVersion"] = [currentStateVersion];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'states/' + commons.Escaper.ecapeVariable('$stateKey');
 
diff --git a/generated/googleapis/lib/bigquery/v2.dart b/generated/googleapis/lib/bigquery/v2.dart
index 8be4563..ca7ba97 100644
--- a/generated/googleapis/lib/bigquery/v2.dart
+++ b/generated/googleapis/lib/bigquery/v2.dart
@@ -86,13 +86,16 @@
   /// [deleteContents] - If True, delete all the tables in the dataset. If False
   /// and the dataset contains tables, the request will fail. Default is False
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String projectId, core.String datasetId,
-      {core.bool deleteContents}) {
+      {core.bool deleteContents, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -109,6 +112,9 @@
     if (deleteContents != null) {
       _queryParams["deleteContents"] = ["${deleteContents}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -134,6 +140,9 @@
   ///
   /// [datasetId] - Dataset ID of the requested dataset
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Dataset].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -141,7 +150,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Dataset> get(core.String projectId, core.String datasetId) {
+  async.Future<Dataset> get(core.String projectId, core.String datasetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -155,6 +165,9 @@
     if (datasetId == null) {
       throw new core.ArgumentError("Parameter datasetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -178,6 +191,9 @@
   ///
   /// [projectId] - Project ID of the new dataset
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Dataset].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -185,7 +201,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Dataset> insert(Dataset request, core.String projectId) {
+  async.Future<Dataset> insert(Dataset request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -199,6 +216,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'projects/' + commons.Escaper.ecapeVariable('$projectId') + '/datasets';
@@ -232,6 +252,9 @@
   /// [pageToken] - Page token, returned by a previous call, to request the next
   /// page of results
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DatasetList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -243,7 +266,8 @@
       {core.bool all,
       core.String filter,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -266,6 +290,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'projects/' + commons.Escaper.ecapeVariable('$projectId') + '/datasets';
@@ -292,6 +319,9 @@
   ///
   /// [datasetId] - Dataset ID of the dataset being updated
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Dataset].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -300,7 +330,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Dataset> patch(
-      Dataset request, core.String projectId, core.String datasetId) {
+      Dataset request, core.String projectId, core.String datasetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -317,6 +348,9 @@
     if (datasetId == null) {
       throw new core.ArgumentError("Parameter datasetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -344,6 +378,9 @@
   ///
   /// [datasetId] - Dataset ID of the dataset being updated
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Dataset].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -352,7 +389,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Dataset> update(
-      Dataset request, core.String projectId, core.String datasetId) {
+      Dataset request, core.String projectId, core.String datasetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -369,6 +407,9 @@
     if (datasetId == null) {
       throw new core.ArgumentError("Parameter datasetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -400,6 +441,9 @@
   ///
   /// [jobId] - [Required] Job ID of the job to cancel
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [JobCancelResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -408,7 +452,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<JobCancelResponse> cancel(
-      core.String projectId, core.String jobId) {
+      core.String projectId, core.String jobId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -422,6 +467,9 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -448,6 +496,9 @@
   ///
   /// [jobId] - [Required] Job ID of the requested job
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Job].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -455,7 +506,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Job> get(core.String projectId, core.String jobId) {
+  async.Future<Job> get(core.String projectId, core.String jobId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -469,6 +521,9 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -503,6 +558,9 @@
   /// before returning. Default is 10 seconds. If the timeout passes before the
   /// job completes, the 'jobComplete' field in the response will be false
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetQueryResultsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -515,7 +573,8 @@
       {core.int maxResults,
       core.String pageToken,
       core.String startIndex,
-      core.int timeoutMs}) {
+      core.int timeoutMs,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -541,6 +600,9 @@
     if (timeoutMs != null) {
       _queryParams["timeoutMs"] = ["${timeoutMs}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -564,6 +626,9 @@
   ///
   /// [projectId] - Project ID of the project that will be billed for the job
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -578,7 +643,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Job> insert(Job request, core.String projectId,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -593,6 +659,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -644,6 +713,9 @@
   ///
   /// [stateFilter] - Filter for job state
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [JobList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -656,7 +728,8 @@
       core.int maxResults,
       core.String pageToken,
       core.String projection,
-      core.List<core.String> stateFilter}) {
+      core.List<core.String> stateFilter,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -682,6 +755,9 @@
     if (stateFilter != null) {
       _queryParams["stateFilter"] = stateFilter;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' + commons.Escaper.ecapeVariable('$projectId') + '/jobs';
 
@@ -703,6 +779,9 @@
   ///
   /// [projectId] - Project ID of the project billed for the query
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [QueryResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -710,8 +789,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<QueryResponse> query(
-      QueryRequest request, core.String projectId) {
+  async.Future<QueryResponse> query(QueryRequest request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -725,6 +804,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'projects/' + commons.Escaper.ecapeVariable('$projectId') + '/queries';
@@ -751,6 +833,9 @@
   ///
   /// [projectId] - Project ID for which the service account is requested.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetServiceAccountResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -759,7 +844,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetServiceAccountResponse> getServiceAccount(
-      core.String projectId) {
+      core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -770,6 +856,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -794,6 +883,9 @@
   /// [pageToken] - Page token, returned by a previous call, to request the next
   /// page of results
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProjectList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -801,7 +893,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ProjectList> list({core.int maxResults, core.String pageToken}) {
+  async.Future<ProjectList> list(
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -815,6 +908,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects';
 
@@ -846,6 +942,9 @@
   ///
   /// [tableId] - Table ID of the destination table.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TableDataInsertAllResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -857,7 +956,8 @@
       TableDataInsertAllRequest request,
       core.String projectId,
       core.String datasetId,
-      core.String tableId) {
+      core.String tableId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -877,6 +977,9 @@
     if (tableId == null) {
       throw new core.ArgumentError("Parameter tableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -917,6 +1020,9 @@
   ///
   /// [startIndex] - Zero-based index of the starting row to read
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TableDataList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -929,7 +1035,8 @@
       {core.int maxResults,
       core.String pageToken,
       core.String selectedFields,
-      core.String startIndex}) {
+      core.String startIndex,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -958,6 +1065,9 @@
     if (startIndex != null) {
       _queryParams["startIndex"] = [startIndex];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -993,13 +1103,17 @@
   ///
   /// [tableId] - Table ID of the table to delete
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String projectId, core.String datasetId, core.String tableId) {
+      core.String projectId, core.String datasetId, core.String tableId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1016,6 +1130,9 @@
     if (tableId == null) {
       throw new core.ArgumentError("Parameter tableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1050,6 +1167,9 @@
   /// [selectedFields] - List of fields to return (comma-separated). If
   /// unspecified, all fields are returned
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Table].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1059,7 +1179,7 @@
   /// this method will complete with the same error.
   async.Future<Table> get(
       core.String projectId, core.String datasetId, core.String tableId,
-      {core.String selectedFields}) {
+      {core.String selectedFields, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1079,6 +1199,9 @@
     if (selectedFields != null) {
       _queryParams["selectedFields"] = [selectedFields];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1106,6 +1229,9 @@
   ///
   /// [datasetId] - Dataset ID of the new table
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Table].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1114,7 +1240,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Table> insert(
-      Table request, core.String projectId, core.String datasetId) {
+      Table request, core.String projectId, core.String datasetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1131,6 +1258,9 @@
     if (datasetId == null) {
       throw new core.ArgumentError("Parameter datasetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1161,6 +1291,9 @@
   /// [pageToken] - Page token, returned by a previous call, to request the next
   /// page of results
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TableList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1169,7 +1302,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TableList> list(core.String projectId, core.String datasetId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1189,6 +1322,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1220,6 +1356,9 @@
   ///
   /// [tableId] - Table ID of the table to update
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Table].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1228,7 +1367,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Table> patch(Table request, core.String projectId,
-      core.String datasetId, core.String tableId) {
+      core.String datasetId, core.String tableId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1248,6 +1388,9 @@
     if (tableId == null) {
       throw new core.ArgumentError("Parameter tableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1279,6 +1422,9 @@
   ///
   /// [tableId] - Table ID of the table to update
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Table].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1287,7 +1433,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Table> update(Table request, core.String projectId,
-      core.String datasetId, core.String tableId) {
+      core.String datasetId, core.String tableId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1307,6 +1454,9 @@
     if (tableId == null) {
       throw new core.ArgumentError("Parameter tableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -3087,16 +3237,16 @@
   /// [Deprecated] The format of the schemaInline property.
   core.String schemaInlineFormat;
 
-  /// [Experimental] Allows the schema of the desitination table to be updated
-  /// as a side effect of the load job if a schema is autodetected or supplied
-  /// in the job configuration. Schema update options are supported in two
-  /// cases: when writeDisposition is WRITE_APPEND; when writeDisposition is
-  /// WRITE_TRUNCATE and the destination table is a partition of a table,
-  /// specified by partition decorators. For normal tables, WRITE_TRUNCATE will
-  /// always overwrite the schema. One or more of the following values are
-  /// specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the
-  /// schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the
-  /// original schema to nullable.
+  /// Allows the schema of the desitination table to be updated as a side effect
+  /// of the load job if a schema is autodetected or supplied in the job
+  /// configuration. Schema update options are supported in two cases: when
+  /// writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE
+  /// and the destination table is a partition of a table, specified by
+  /// partition decorators. For normal tables, WRITE_TRUNCATE will always
+  /// overwrite the schema. One or more of the following values are specified:
+  /// ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema.
+  /// ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original
+  /// schema to nullable.
   core.List<core.String> schemaUpdateOptions;
 
   /// [Optional] The number of rows at the top of a CSV file that BigQuery will
@@ -3120,8 +3270,8 @@
   /// the '*' wildcard character is not allowed.
   core.List<core.String> sourceUris;
 
-  /// [Experimental] If specified, configures time-based partitioning for the
-  /// destination table.
+  /// If specified, configures time-based partitioning for the destination
+  /// table.
   TimePartitioning timePartitioning;
 
   /// [Optional] Specifies the action that occurs if the destination table
@@ -3347,15 +3497,15 @@
   /// Query parameters for standard SQL queries.
   core.List<QueryParameter> queryParameters;
 
-  /// [Experimental] Allows the schema of the destination table to be updated as
-  /// a side effect of the query job. Schema update options are supported in two
-  /// cases: when writeDisposition is WRITE_APPEND; when writeDisposition is
-  /// WRITE_TRUNCATE and the destination table is a partition of a table,
-  /// specified by partition decorators. For normal tables, WRITE_TRUNCATE will
-  /// always overwrite the schema. One or more of the following values are
-  /// specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the
-  /// schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the
-  /// original schema to nullable.
+  /// Allows the schema of the destination table to be updated as a side effect
+  /// of the query job. Schema update options are supported in two cases: when
+  /// writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE
+  /// and the destination table is a partition of a table, specified by
+  /// partition decorators. For normal tables, WRITE_TRUNCATE will always
+  /// overwrite the schema. One or more of the following values are specified:
+  /// ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema.
+  /// ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original
+  /// schema to nullable.
   core.List<core.String> schemaUpdateOptions;
 
   /// [Optional] If querying an external data source outside of BigQuery,
@@ -3364,8 +3514,8 @@
   /// as if it were a standard BigQuery table.
   core.Map<core.String, ExternalDataConfiguration> tableDefinitions;
 
-  /// [Experimental] If specified, configures time-based partitioning for the
-  /// destination table.
+  /// If specified, configures time-based partitioning for the destination
+  /// table.
   TimePartitioning timePartitioning;
 
   /// Specifies whether to use BigQuery's legacy SQL dialect for this query. The
@@ -4892,8 +5042,7 @@
   /// [Required] Reference describing the ID of this table.
   TableReference tableReference;
 
-  /// [Experimental] If specified, configures time-based partitioning for this
-  /// table.
+  /// If specified, configures time-based partitioning for this table.
   TimePartitioning timePartitioning;
 
   /// [Output-only] Describes the table type. The following values are
@@ -5401,6 +5550,14 @@
 }
 
 class TableListTables {
+  /// The time when this table was created, in milliseconds since the epoch.
+  core.String creationTime;
+
+  /// [Optional] The time when this table expires, in milliseconds since the
+  /// epoch. If not present, the table will persist indefinitely. Expired tables
+  /// will be deleted and their storage reclaimed.
+  core.String expirationTime;
+
   /// The user-friendly name for this table.
   core.String friendlyName;
 
@@ -5417,7 +5574,7 @@
   /// A reference uniquely identifying the table.
   TableReference tableReference;
 
-  /// [Experimental] The time-based partitioning for this table.
+  /// The time-based partitioning for this table.
   TimePartitioning timePartitioning;
 
   /// The type of table. Possible values are: TABLE, VIEW.
@@ -5429,6 +5586,12 @@
   TableListTables();
 
   TableListTables.fromJson(core.Map _json) {
+    if (_json.containsKey("creationTime")) {
+      creationTime = _json["creationTime"];
+    }
+    if (_json.containsKey("expirationTime")) {
+      expirationTime = _json["expirationTime"];
+    }
     if (_json.containsKey("friendlyName")) {
       friendlyName = _json["friendlyName"];
     }
@@ -5459,6 +5622,12 @@
   core.Map<core.String, core.Object> toJson() {
     final core.Map<core.String, core.Object> _json =
         new core.Map<core.String, core.Object>();
+    if (creationTime != null) {
+      _json["creationTime"] = creationTime;
+    }
+    if (expirationTime != null) {
+      _json["expirationTime"] = expirationTime;
+    }
     if (friendlyName != null) {
       _json["friendlyName"] = friendlyName;
     }
diff --git a/generated/googleapis/lib/bigquerydatatransfer/v1.dart b/generated/googleapis/lib/bigquerydatatransfer/v1.dart
index ac55b2a..b5a452b 100644
--- a/generated/googleapis/lib/bigquerydatatransfer/v1.dart
+++ b/generated/googleapis/lib/bigquerydatatransfer/v1.dart
@@ -73,6 +73,9 @@
   /// `projects/{project_id}/dataSources/{data_source_id}`
   /// Value must have pattern "^projects/[^/]+/dataSources/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CheckValidCredsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -81,7 +84,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CheckValidCredsResponse> checkValidCreds(
-      CheckValidCredsRequest request, core.String name) {
+      CheckValidCredsRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -95,6 +99,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$name') +
@@ -119,6 +126,9 @@
   /// `projects/{project_id}/dataSources/{data_source_id}`
   /// Value must have pattern "^projects/[^/]+/dataSources/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DataSource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -126,7 +136,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DataSource> get(core.String name) {
+  async.Future<DataSource> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -137,6 +147,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -159,6 +172,9 @@
   /// Must be in the form: `projects/{project_id}`
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [pageSize] - Page size. The default page size is the maximum value of 1000
+  /// results.
+  ///
   /// [pageToken] - Pagination token, which can be used to request a specific
   /// page
   /// of `ListDataSourcesRequest` list results. For multiple-page
@@ -166,8 +182,8 @@
   /// a `next_page` token, which can be used as the
   /// `page_token` value to request the next page of list results.
   ///
-  /// [pageSize] - Page size. The default page size is the maximum value of 1000
-  /// results.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListDataSourcesResponse].
   ///
@@ -177,7 +193,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListDataSourcesResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -188,11 +204,14 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/' +
@@ -227,6 +246,9 @@
   /// [name] - Resource name for the location.
   /// Value must have pattern "^projects/[^/]+/locations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Location].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -234,7 +256,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Location> get(core.String name) {
+  async.Future<Location> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -245,6 +267,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -270,6 +295,9 @@
   ///
   /// [pageSize] - The standard list page size.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLocationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -278,7 +306,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLocationsResponse> list(core.String name,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -298,6 +329,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$name') + '/locations';
@@ -334,6 +368,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/dataSources/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CheckValidCredsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -342,7 +379,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CheckValidCredsResponse> checkValidCreds(
-      CheckValidCredsRequest request, core.String name) {
+      CheckValidCredsRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -356,6 +394,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$name') +
@@ -381,6 +422,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/dataSources/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DataSource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -388,7 +432,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DataSource> get(core.String name) {
+  async.Future<DataSource> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -399,6 +443,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -431,6 +478,9 @@
   /// [pageSize] - Page size. The default page size is the maximum value of 1000
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListDataSourcesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -439,7 +489,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListDataSourcesResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -456,6 +506,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -513,6 +566,9 @@
   ///   returned in the title bar of the browser, with the page text prompting
   ///   the user to copy the code and paste it in the application.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TransferConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -522,7 +578,7 @@
   /// this method will complete with the same error.
   async.Future<TransferConfig> create(
       TransferConfig request, core.String parent,
-      {core.String authorizationCode}) {
+      {core.String authorizationCode, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -539,6 +595,9 @@
     if (authorizationCode != null) {
       _queryParams["authorizationCode"] = [authorizationCode];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -564,6 +623,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -571,7 +633,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -582,6 +644,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -604,6 +669,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TransferConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -611,7 +679,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TransferConfig> get(core.String name) {
+  async.Future<TransferConfig> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -622,6 +690,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -642,9 +713,6 @@
   /// should be returned: `projects/{project_id}`.
   /// Value must have pattern "^projects/[^/]+/locations/[^/]+$".
   ///
-  /// [dataSourceIds] - When specified, only configurations of requested data
-  /// sources are returned.
-  ///
   /// [pageToken] - Pagination token, which can be used to request a specific
   /// page
   /// of `ListTransfersRequest` list results. For multiple-page
@@ -655,6 +723,12 @@
   /// [pageSize] - Page size. The default page size is the maximum value of 1000
   /// results.
   ///
+  /// [dataSourceIds] - When specified, only configurations of requested data
+  /// sources are returned.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListTransferConfigsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -663,9 +737,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListTransferConfigsResponse> list(core.String parent,
-      {core.List<core.String> dataSourceIds,
-      core.String pageToken,
-      core.int pageSize}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.List<core.String> dataSourceIds,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -676,15 +751,18 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
-    if (dataSourceIds != null) {
-      _queryParams["dataSourceIds"] = dataSourceIds;
-    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (dataSourceIds != null) {
+      _queryParams["dataSourceIds"] = dataSourceIds;
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -736,6 +814,9 @@
   ///
   /// [updateMask] - Required list of fields to be updated in this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TransferConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -744,7 +825,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TransferConfig> patch(TransferConfig request, core.String name,
-      {core.String authorizationCode, core.String updateMask}) {
+      {core.String authorizationCode,
+      core.String updateMask,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -764,6 +847,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -790,6 +876,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ScheduleTransferRunsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -798,7 +887,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ScheduleTransferRunsResponse> scheduleRuns(
-      ScheduleTransferRunsRequest request, core.String parent) {
+      ScheduleTransferRunsRequest request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -812,6 +902,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -849,6 +942,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+/runs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -856,7 +952,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -867,6 +963,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -889,6 +988,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+/runs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TransferRun].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -896,7 +998,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TransferRun> get(core.String name) {
+  async.Future<TransferRun> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -907,6 +1009,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -930,6 +1035,12 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$".
   ///
+  /// [pageSize] - Page size. The default page size is the maximum value of 1000
+  /// results.
+  ///
+  /// [states] - When specified, only transfer runs with requested states are
+  /// returned.
+  ///
   /// [runAttempt] - Indicates how run attempts are to be pulled.
   /// Possible string values are:
   /// - "RUN_ATTEMPT_UNSPECIFIED" : A RUN_ATTEMPT_UNSPECIFIED.
@@ -942,11 +1053,8 @@
   /// a `next_page` token, which can be used as the
   /// `page_token` value to request the next page of list results.
   ///
-  /// [pageSize] - Page size. The default page size is the maximum value of 1000
-  /// results.
-  ///
-  /// [states] - When specified, only transfer runs with requested states are
-  /// returned.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListTransferRunsResponse].
   ///
@@ -956,10 +1064,11 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListTransferRunsResponse> list(core.String parent,
-      {core.String runAttempt,
+      {core.int pageSize,
+      core.List<core.String> states,
+      core.String runAttempt,
       core.String pageToken,
-      core.int pageSize,
-      core.List<core.String> states}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -970,17 +1079,20 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (states != null) {
+      _queryParams["states"] = states;
+    }
     if (runAttempt != null) {
       _queryParams["runAttempt"] = [runAttempt];
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
-    }
-    if (states != null) {
-      _queryParams["states"] = states;
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/runs';
@@ -1026,6 +1138,9 @@
   /// and ERROR
   /// messages are returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListTransferLogsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1036,7 +1151,8 @@
   async.Future<ListTransferLogsResponse> list(core.String parent,
       {core.String pageToken,
       core.int pageSize,
-      core.List<core.String> messageTypes}) {
+      core.List<core.String> messageTypes,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1056,6 +1172,9 @@
     if (messageTypes != null) {
       _queryParams["messageTypes"] = messageTypes;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -1114,6 +1233,9 @@
   ///   returned in the title bar of the browser, with the page text prompting
   ///   the user to copy the code and paste it in the application.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TransferConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1123,7 +1245,7 @@
   /// this method will complete with the same error.
   async.Future<TransferConfig> create(
       TransferConfig request, core.String parent,
-      {core.String authorizationCode}) {
+      {core.String authorizationCode, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1140,6 +1262,9 @@
     if (authorizationCode != null) {
       _queryParams["authorizationCode"] = [authorizationCode];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -1164,6 +1289,9 @@
   /// `projects/{project_id}/transferConfigs/{config_id}`
   /// Value must have pattern "^projects/[^/]+/transferConfigs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1171,7 +1299,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1182,6 +1310,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1203,6 +1334,9 @@
   /// `projects/{project_id}/transferConfigs/{config_id}`
   /// Value must have pattern "^projects/[^/]+/transferConfigs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TransferConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1210,7 +1344,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TransferConfig> get(core.String name) {
+  async.Future<TransferConfig> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1221,6 +1355,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1241,6 +1378,12 @@
   /// should be returned: `projects/{project_id}`.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [pageSize] - Page size. The default page size is the maximum value of 1000
+  /// results.
+  ///
+  /// [dataSourceIds] - When specified, only configurations of requested data
+  /// sources are returned.
+  ///
   /// [pageToken] - Pagination token, which can be used to request a specific
   /// page
   /// of `ListTransfersRequest` list results. For multiple-page
@@ -1248,11 +1391,8 @@
   /// a `next_page` token, which can be used as the
   /// `page_token` value to request the next page of list results.
   ///
-  /// [pageSize] - Page size. The default page size is the maximum value of 1000
-  /// results.
-  ///
-  /// [dataSourceIds] - When specified, only configurations of requested data
-  /// sources are returned.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListTransferConfigsResponse].
   ///
@@ -1262,9 +1402,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListTransferConfigsResponse> list(core.String parent,
-      {core.String pageToken,
-      core.int pageSize,
-      core.List<core.String> dataSourceIds}) {
+      {core.int pageSize,
+      core.List<core.String> dataSourceIds,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1275,15 +1416,18 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
-    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
     if (dataSourceIds != null) {
       _queryParams["dataSourceIds"] = dataSourceIds;
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -1334,6 +1478,9 @@
   ///   returned in the title bar of the browser, with the page text prompting
   ///   the user to copy the code and paste it in the application.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TransferConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1342,7 +1489,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TransferConfig> patch(TransferConfig request, core.String name,
-      {core.String updateMask, core.String authorizationCode}) {
+      {core.String updateMask,
+      core.String authorizationCode,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1362,6 +1511,9 @@
     if (authorizationCode != null) {
       _queryParams["authorizationCode"] = [authorizationCode];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1387,6 +1539,9 @@
   /// `projects/{project_id}/transferConfigs/{config_id}`.
   /// Value must have pattern "^projects/[^/]+/transferConfigs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ScheduleTransferRunsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1395,7 +1550,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ScheduleTransferRunsResponse> scheduleRuns(
-      ScheduleTransferRunsRequest request, core.String parent) {
+      ScheduleTransferRunsRequest request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1409,6 +1565,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -1444,6 +1603,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/transferConfigs/[^/]+/runs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1451,7 +1613,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1462,6 +1624,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1484,6 +1649,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/transferConfigs/[^/]+/runs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TransferRun].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1491,7 +1659,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TransferRun> get(core.String name) {
+  async.Future<TransferRun> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1502,6 +1670,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1542,6 +1713,9 @@
   /// - "RUN_ATTEMPT_UNSPECIFIED" : A RUN_ATTEMPT_UNSPECIFIED.
   /// - "LATEST" : A LATEST.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListTransferRunsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1553,7 +1727,8 @@
       {core.String pageToken,
       core.int pageSize,
       core.List<core.String> states,
-      core.String runAttempt}) {
+      core.String runAttempt,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1576,6 +1751,9 @@
     if (runAttempt != null) {
       _queryParams["runAttempt"] = [runAttempt];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/runs';
 
@@ -1620,6 +1798,9 @@
   /// and ERROR
   /// messages are returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListTransferLogsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1630,7 +1811,8 @@
   async.Future<ListTransferLogsResponse> list(core.String parent,
       {core.String pageToken,
       core.int pageSize,
-      core.List<core.String> messageTypes}) {
+      core.List<core.String> messageTypes,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1650,6 +1832,9 @@
     if (messageTypes != null) {
       _queryParams["messageTypes"] = messageTypes;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
diff --git a/generated/googleapis/lib/blogger/v3.dart b/generated/googleapis/lib/blogger/v3.dart
index 5298705..a7e0d8a 100644
--- a/generated/googleapis/lib/blogger/v3.dart
+++ b/generated/googleapis/lib/blogger/v3.dart
@@ -59,6 +59,9 @@
   ///
   /// [maxPosts] - Maximum number of posts to pull back with the blog.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BlogUserInfo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -67,7 +70,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BlogUserInfo> get(core.String userId, core.String blogId,
-      {core.int maxPosts}) {
+      {core.int maxPosts, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -84,6 +87,9 @@
     if (maxPosts != null) {
       _queryParams["maxPosts"] = ["${maxPosts}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' +
         commons.Escaper.ecapeVariable('$userId') +
@@ -120,6 +126,9 @@
   /// - "AUTHOR" : Author level detail.
   /// - "READER" : Reader level detail.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Blog].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -128,7 +137,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Blog> get(core.String blogId,
-      {core.int maxPosts, core.String view}) {
+      {core.int maxPosts, core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -145,6 +154,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' + commons.Escaper.ecapeVariable('$blogId');
 
@@ -170,6 +182,9 @@
   /// - "AUTHOR" : Author level detail.
   /// - "READER" : Reader level detail.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Blog].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -177,7 +192,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Blog> getByUrl(core.String url, {core.String view}) {
+  async.Future<Blog> getByUrl(core.String url,
+      {core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -192,6 +208,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/byurl';
 
@@ -228,6 +247,9 @@
   /// - "AUTHOR" : Author level detail.
   /// - "READER" : Reader level detail.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BlogList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -239,7 +261,8 @@
       {core.bool fetchUserInfo,
       core.List<core.String> role,
       core.List<core.String> status,
-      core.String view}) {
+      core.String view,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -262,6 +285,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' + commons.Escaper.ecapeVariable('$userId') + '/blogs';
 
@@ -290,6 +316,9 @@
   ///
   /// [commentId] - The ID of the comment to mark as not spam.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -298,7 +327,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Comment> approve(
-      core.String blogId, core.String postId, core.String commentId) {
+      core.String blogId, core.String postId, core.String commentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -315,6 +345,9 @@
     if (commentId == null) {
       throw new core.ArgumentError("Parameter commentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' +
         commons.Escaper.ecapeVariable('$blogId') +
@@ -343,13 +376,17 @@
   ///
   /// [commentId] - The ID of the comment to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String blogId, core.String postId, core.String commentId) {
+      core.String blogId, core.String postId, core.String commentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -366,6 +403,9 @@
     if (commentId == null) {
       throw new core.ArgumentError("Parameter commentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -404,6 +444,9 @@
   /// - "AUTHOR" : Author level detail
   /// - "READER" : Admin level detail
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -413,7 +456,7 @@
   /// this method will complete with the same error.
   async.Future<Comment> get(
       core.String blogId, core.String postId, core.String commentId,
-      {core.String view}) {
+      {core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -433,6 +476,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' +
         commons.Escaper.ecapeVariable('$blogId') +
@@ -479,6 +525,9 @@
   /// - "AUTHOR" : Author level detail
   /// - "READER" : Reader level detail
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommentList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -493,7 +542,8 @@
       core.String pageToken,
       core.DateTime startDate,
       core.List<core.String> status,
-      core.String view}) {
+      core.String view,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -528,6 +578,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' +
         commons.Escaper.ecapeVariable('$blogId') +
@@ -564,6 +617,9 @@
   ///
   /// [status] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommentList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -577,7 +633,8 @@
       core.int maxResults,
       core.String pageToken,
       core.DateTime startDate,
-      core.List<core.String> status}) {
+      core.List<core.String> status,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -606,6 +663,9 @@
     if (status != null) {
       _queryParams["status"] = status;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' + commons.Escaper.ecapeVariable('$blogId') + '/comments';
 
@@ -628,6 +688,9 @@
   ///
   /// [commentId] - The ID of the comment to mark as spam.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -636,7 +699,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Comment> markAsSpam(
-      core.String blogId, core.String postId, core.String commentId) {
+      core.String blogId, core.String postId, core.String commentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -653,6 +717,9 @@
     if (commentId == null) {
       throw new core.ArgumentError("Parameter commentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' +
         commons.Escaper.ecapeVariable('$blogId') +
@@ -681,6 +748,9 @@
   ///
   /// [commentId] - The ID of the comment to delete content from.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -689,7 +759,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Comment> removeContent(
-      core.String blogId, core.String postId, core.String commentId) {
+      core.String blogId, core.String postId, core.String commentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -706,6 +777,9 @@
     if (commentId == null) {
       throw new core.ArgumentError("Parameter commentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' +
         commons.Escaper.ecapeVariable('$blogId') +
@@ -738,6 +812,9 @@
   ///
   /// [range] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Pageviews].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -746,7 +823,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Pageviews> get(core.String blogId,
-      {core.List<core.String> range}) {
+      {core.List<core.String> range, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -760,6 +837,9 @@
     if (range != null) {
       _queryParams["range"] = range;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' + commons.Escaper.ecapeVariable('$blogId') + '/pageviews';
 
@@ -786,12 +866,16 @@
   ///
   /// [pageId] - The ID of the Page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String blogId, core.String pageId) {
+  async.Future delete(core.String blogId, core.String pageId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -805,6 +889,9 @@
     if (pageId == null) {
       throw new core.ArgumentError("Parameter pageId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -836,6 +923,9 @@
   /// - "AUTHOR" : Author level detail
   /// - "READER" : Reader level detail
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Page].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -844,7 +934,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Page> get(core.String blogId, core.String pageId,
-      {core.String view}) {
+      {core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -861,6 +951,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' +
         commons.Escaper.ecapeVariable('$blogId') +
@@ -886,6 +979,9 @@
   ///
   /// [isDraft] - Whether to create the page as a draft (default: false).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Page].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -894,7 +990,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Page> insert(Page request, core.String blogId,
-      {core.bool isDraft}) {
+      {core.bool isDraft, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -911,6 +1007,9 @@
     if (isDraft != null) {
       _queryParams["isDraft"] = ["${isDraft}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' + commons.Escaper.ecapeVariable('$blogId') + '/pages';
 
@@ -944,6 +1043,9 @@
   /// - "AUTHOR" : Author level detail
   /// - "READER" : Reader level detail
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PageList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -956,7 +1058,8 @@
       core.int maxResults,
       core.String pageToken,
       core.List<core.String> status,
-      core.String view}) {
+      core.String view,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -982,6 +1085,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' + commons.Escaper.ecapeVariable('$blogId') + '/pages';
 
@@ -1010,6 +1116,9 @@
   /// [revert_1] - Whether a revert action should be performed when the page is
   /// updated (default: false).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Page].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1018,7 +1127,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Page> patch(Page request, core.String blogId, core.String pageId,
-      {core.bool publish_1, core.bool revert_1}) {
+      {core.bool publish_1, core.bool revert_1, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1041,6 +1150,9 @@
     if (revert_1 != null) {
       _queryParams["revert"] = ["${revert_1}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' +
         commons.Escaper.ecapeVariable('$blogId') +
@@ -1064,6 +1176,9 @@
   ///
   /// [pageId] - The ID of the page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Page].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1071,7 +1186,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Page> publish(core.String blogId, core.String pageId) {
+  async.Future<Page> publish(core.String blogId, core.String pageId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1085,6 +1201,9 @@
     if (pageId == null) {
       throw new core.ArgumentError("Parameter pageId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' +
         commons.Escaper.ecapeVariable('$blogId') +
@@ -1109,6 +1228,9 @@
   ///
   /// [pageId] - The ID of the page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Page].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1116,7 +1238,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Page> revert(core.String blogId, core.String pageId) {
+  async.Future<Page> revert(core.String blogId, core.String pageId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1130,6 +1253,9 @@
     if (pageId == null) {
       throw new core.ArgumentError("Parameter pageId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' +
         commons.Escaper.ecapeVariable('$blogId') +
@@ -1162,6 +1288,9 @@
   /// [revert_1] - Whether a revert action should be performed when the page is
   /// updated (default: false).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Page].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1171,7 +1300,7 @@
   /// this method will complete with the same error.
   async.Future<Page> update(
       Page request, core.String blogId, core.String pageId,
-      {core.bool publish_1, core.bool revert_1}) {
+      {core.bool publish_1, core.bool revert_1, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1194,6 +1323,9 @@
     if (revert_1 != null) {
       _queryParams["revert"] = ["${revert_1}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' +
         commons.Escaper.ecapeVariable('$blogId') +
@@ -1231,6 +1363,9 @@
   ///
   /// [maxComments] - Maximum number of comments to pull back on a post.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PostUserInfo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1240,7 +1375,7 @@
   /// this method will complete with the same error.
   async.Future<PostUserInfo> get(
       core.String userId, core.String blogId, core.String postId,
-      {core.int maxComments}) {
+      {core.int maxComments, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1260,6 +1395,9 @@
     if (maxComments != null) {
       _queryParams["maxComments"] = ["${maxComments}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' +
         commons.Escaper.ecapeVariable('$userId') +
@@ -1318,6 +1456,9 @@
   /// - "AUTHOR" : Author level detail
   /// - "READER" : Reader level detail
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PostUserInfosList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1334,7 +1475,8 @@
       core.String pageToken,
       core.DateTime startDate,
       core.List<core.String> status,
-      core.String view}) {
+      core.String view,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1375,6 +1517,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' +
         commons.Escaper.ecapeVariable('$userId') +
@@ -1405,12 +1550,16 @@
   ///
   /// [postId] - The ID of the Post.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String blogId, core.String postId) {
+  async.Future delete(core.String blogId, core.String postId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1424,6 +1573,9 @@
     if (postId == null) {
       throw new core.ArgumentError("Parameter postId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1465,6 +1617,9 @@
   /// - "AUTHOR" : Author level detail
   /// - "READER" : Reader level detail
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Post].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1476,7 +1631,8 @@
       {core.bool fetchBody,
       core.bool fetchImages,
       core.int maxComments,
-      core.String view}) {
+      core.String view,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1502,6 +1658,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' +
         commons.Escaper.ecapeVariable('$blogId') +
@@ -1534,6 +1693,9 @@
   /// - "AUTHOR" : Author level detail
   /// - "READER" : Reader level detail
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Post].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1542,7 +1704,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Post> getByPath(core.String blogId, core.String path,
-      {core.int maxComments, core.String view}) {
+      {core.int maxComments, core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1563,6 +1725,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'blogs/' + commons.Escaper.ecapeVariable('$blogId') + '/posts/bypath';
@@ -1592,6 +1757,9 @@
   ///
   /// [isDraft] - Whether to create the post as a draft (default: false).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Post].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1600,7 +1768,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Post> insert(Post request, core.String blogId,
-      {core.bool fetchBody, core.bool fetchImages, core.bool isDraft}) {
+      {core.bool fetchBody,
+      core.bool fetchImages,
+      core.bool isDraft,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1623,6 +1794,9 @@
     if (isDraft != null) {
       _queryParams["isDraft"] = ["${isDraft}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' + commons.Escaper.ecapeVariable('$blogId') + '/posts';
 
@@ -1673,6 +1847,9 @@
   /// - "AUTHOR" : Author level detail
   /// - "READER" : Reader level detail
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PostList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1690,7 +1867,8 @@
       core.String pageToken,
       core.DateTime startDate,
       core.List<core.String> status,
-      core.String view}) {
+      core.String view,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1731,6 +1909,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' + commons.Escaper.ecapeVariable('$blogId') + '/posts';
 
@@ -1768,6 +1949,9 @@
   /// [revert_1] - Whether a revert action should be performed when the post is
   /// updated (default: false).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Post].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1780,7 +1964,8 @@
       core.bool fetchImages,
       core.int maxComments,
       core.bool publish_1,
-      core.bool revert_1}) {
+      core.bool revert_1,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1812,6 +1997,9 @@
     if (revert_1 != null) {
       _queryParams["revert"] = ["${revert_1}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' +
         commons.Escaper.ecapeVariable('$blogId') +
@@ -1841,6 +2029,9 @@
   /// at the a previously saved schedule date (if present), or the current time.
   /// If a future date is given, the post will be scheduled to be published.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Post].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1849,7 +2040,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Post> publish(core.String blogId, core.String postId,
-      {core.DateTime publishDate}) {
+      {core.DateTime publishDate, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1866,6 +2057,9 @@
     if (publishDate != null) {
       _queryParams["publishDate"] = [(publishDate).toIso8601String()];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' +
         commons.Escaper.ecapeVariable('$blogId') +
@@ -1890,6 +2084,9 @@
   ///
   /// [postId] - The ID of the Post.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Post].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1897,7 +2094,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Post> revert(core.String blogId, core.String postId) {
+  async.Future<Post> revert(core.String blogId, core.String postId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1911,6 +2109,9 @@
     if (postId == null) {
       throw new core.ArgumentError("Parameter postId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' +
         commons.Escaper.ecapeVariable('$blogId') +
@@ -1944,6 +2145,9 @@
   /// - "published" : Order by the date the post was published
   /// - "updated" : Order by the date the post was last updated
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PostList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1952,7 +2156,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PostList> search(core.String blogId, core.String q,
-      {core.bool fetchBodies, core.String orderBy}) {
+      {core.bool fetchBodies, core.String orderBy, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1973,6 +2177,9 @@
     if (orderBy != null) {
       _queryParams["orderBy"] = [orderBy];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'blogs/' + commons.Escaper.ecapeVariable('$blogId') + '/posts/search';
@@ -2011,6 +2218,9 @@
   /// [revert_1] - Whether a revert action should be performed when the post is
   /// updated (default: false).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Post].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2024,7 +2234,8 @@
       core.bool fetchImages,
       core.int maxComments,
       core.bool publish_1,
-      core.bool revert_1}) {
+      core.bool revert_1,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2056,6 +2267,9 @@
     if (revert_1 != null) {
       _queryParams["revert"] = ["${revert_1}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'blogs/' +
         commons.Escaper.ecapeVariable('$blogId') +
@@ -2083,6 +2297,9 @@
   ///
   /// [userId] - The ID of the user to get.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [User].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2090,7 +2307,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<User> get(core.String userId) {
+  async.Future<User> get(core.String userId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2101,6 +2318,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' + commons.Escaper.ecapeVariable('$userId');
 
diff --git a/generated/googleapis/lib/books/v1.dart b/generated/googleapis/lib/books/v1.dart
index c6fa130..f6fcfec 100644
--- a/generated/googleapis/lib/books/v1.dart
+++ b/generated/googleapis/lib/books/v1.dart
@@ -63,6 +63,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Bookshelf].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -71,7 +74,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Bookshelf> get(core.String userId, core.String shelf,
-      {core.String source}) {
+      {core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -88,6 +91,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' +
         commons.Escaper.ecapeVariable('$userId') +
@@ -111,6 +117,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Bookshelves].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -118,7 +127,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Bookshelves> list(core.String userId, {core.String source}) {
+  async.Future<Bookshelves> list(core.String userId,
+      {core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -132,6 +142,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' + commons.Escaper.ecapeVariable('$userId') + '/bookshelves';
 
@@ -168,6 +181,9 @@
   ///
   /// [startIndex] - Index of the first element to return (starts at 0)
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Volumes].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -179,7 +195,8 @@
       {core.int maxResults,
       core.bool showPreorders,
       core.String source,
-      core.int startIndex}) {
+      core.int startIndex,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -205,6 +222,9 @@
     if (startIndex != null) {
       _queryParams["startIndex"] = ["${startIndex}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/' +
         commons.Escaper.ecapeVariable('$userId') +
@@ -240,6 +260,9 @@
   ///
   /// [uploadClientToken] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BooksCloudloadingResource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -251,7 +274,8 @@
       {core.String driveDocumentId,
       core.String mimeType,
       core.String name,
-      core.String uploadClientToken}) {
+      core.String uploadClientToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -271,6 +295,9 @@
     if (uploadClientToken != null) {
       _queryParams["upload_client_token"] = [uploadClientToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'cloudloading/addBook';
 
@@ -290,12 +317,15 @@
   ///
   /// [volumeId] - The id of the book to be removed.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future deleteBook(core.String volumeId) {
+  async.Future deleteBook(core.String volumeId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -307,6 +337,9 @@
       throw new core.ArgumentError("Parameter volumeId is required.");
     }
     _queryParams["volumeId"] = [volumeId];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -325,6 +358,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BooksCloudloadingResource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -333,7 +369,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BooksCloudloadingResource> updateBook(
-      BooksCloudloadingResource request) {
+      BooksCloudloadingResource request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -344,6 +381,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'cloudloading/updateBook';
 
@@ -369,6 +409,9 @@
   ///
   /// [cpksver] - The device/version ID from which to request the data.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Metadata].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -376,7 +419,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Metadata> listOfflineMetadata(core.String cpksver) {
+  async.Future<Metadata> listOfflineMetadata(core.String cpksver,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -388,6 +432,9 @@
       throw new core.ArgumentError("Parameter cpksver is required.");
     }
     _queryParams["cpksver"] = [cpksver];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'dictionary/listOfflineMetadata';
 
@@ -423,6 +470,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Layersummary].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -431,7 +481,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Layersummary> get(core.String volumeId, core.String summaryId,
-      {core.String contentVersion, core.String source}) {
+      {core.String contentVersion, core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -451,6 +501,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'volumes/' +
         commons.Escaper.ecapeVariable('$volumeId') +
@@ -481,6 +534,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Layersummaries].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -492,7 +548,8 @@
       {core.String contentVersion,
       core.int maxResults,
       core.String pageToken,
-      core.String source}) {
+      core.String source,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -515,6 +572,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'volumes/' +
         commons.Escaper.ecapeVariable('$volumeId') +
@@ -565,6 +625,9 @@
   /// [w] - The requested pixel width for any images. If width is provided
   /// height must also be provided.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Annotationdata].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -579,7 +642,8 @@
       core.String locale,
       core.int scale,
       core.String source,
-      core.int w}) {
+      core.int w,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -618,6 +682,9 @@
     if (w != null) {
       _queryParams["w"] = ["${w}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'volumes/' +
         commons.Escaper.ecapeVariable('$volumeId') +
@@ -672,6 +739,9 @@
   /// [w] - The requested pixel width for any images. If width is provided
   /// height must also be provided.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Annotationsdata].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -690,7 +760,8 @@
       core.String source,
       core.String updatedMax,
       core.String updatedMin,
-      core.int w}) {
+      core.int w,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -738,6 +809,9 @@
     if (w != null) {
       _queryParams["w"] = ["${w}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'volumes/' +
         commons.Escaper.ecapeVariable('$volumeId') +
@@ -776,6 +850,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Volumeannotation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -785,7 +862,7 @@
   /// this method will complete with the same error.
   async.Future<Volumeannotation> get(
       core.String volumeId, core.String layerId, core.String annotationId,
-      {core.String locale, core.String source}) {
+      {core.String locale, core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -808,6 +885,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'volumes/' +
         commons.Escaper.ecapeVariable('$volumeId') +
@@ -865,6 +945,9 @@
   /// [volumeAnnotationsVersion] - The version of the volume annotations that
   /// you are requesting.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Volumeannotations].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -885,7 +968,8 @@
       core.String startPosition,
       core.String updatedMax,
       core.String updatedMin,
-      core.String volumeAnnotationsVersion}) {
+      core.String volumeAnnotationsVersion,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -939,6 +1023,9 @@
     if (volumeAnnotationsVersion != null) {
       _queryParams["volumeAnnotationsVersion"] = [volumeAnnotationsVersion];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'volumes/' +
         commons.Escaper.ecapeVariable('$volumeId') +
@@ -964,6 +1051,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Usersettings].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -971,7 +1061,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Usersettings> getUserSettings() {
+  async.Future<Usersettings> getUserSettings({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -979,6 +1069,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'myconfig/getUserSettings';
 
     var _response = _requester.request(_url, "GET",
@@ -1003,6 +1097,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DownloadAccesses].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1012,7 +1109,7 @@
   /// this method will complete with the same error.
   async.Future<DownloadAccesses> releaseDownloadAccess(
       core.List<core.String> volumeIds, core.String cpksver,
-      {core.String locale, core.String source}) {
+      {core.String locale, core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1034,6 +1131,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'myconfig/releaseDownloadAccess';
 
@@ -1068,6 +1168,9 @@
   /// [locale] - ISO-639-1, ISO-3166-1 codes for message localization, i.e.
   /// en_US.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RequestAccess].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1077,7 +1180,7 @@
   /// this method will complete with the same error.
   async.Future<RequestAccess> requestAccess(core.String source,
       core.String volumeId, core.String nonce, core.String cpksver,
-      {core.String licenseTypes, core.String locale}) {
+      {core.String licenseTypes, core.String locale, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1107,6 +1210,9 @@
     if (locale != null) {
       _queryParams["locale"] = [locale];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'myconfig/requestAccess';
 
@@ -1143,6 +1249,9 @@
   ///
   /// [volumeIds] - The volume(s) to request download restrictions for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Volumes].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1156,7 +1265,8 @@
       core.bool includeNonComicsSeries,
       core.String locale,
       core.bool showPreorders,
-      core.List<core.String> volumeIds}) {
+      core.List<core.String> volumeIds,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1191,6 +1301,9 @@
     if (volumeIds != null) {
       _queryParams["volumeIds"] = volumeIds;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'myconfig/syncVolumeLicenses';
 
@@ -1211,6 +1324,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Usersettings].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1218,7 +1334,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Usersettings> updateUserSettings(Usersettings request) {
+  async.Future<Usersettings> updateUserSettings(Usersettings request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1229,6 +1346,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'myconfig/updateUserSettings';
 
@@ -1269,12 +1389,16 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String annotationId, {core.String source}) {
+  async.Future delete(core.String annotationId,
+      {core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1288,6 +1412,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1318,6 +1445,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Annotation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1329,7 +1459,8 @@
       {core.String annotationId,
       core.String country,
       core.bool showOnlySummaryInResponse,
-      core.String source}) {
+      core.String source,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1354,6 +1485,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'mylibrary/annotations';
 
@@ -1394,6 +1528,9 @@
   ///
   /// [volumeId] - The volume to restrict annotations to.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Annotations].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1411,7 +1548,8 @@
       core.String source,
       core.String updatedMax,
       core.String updatedMin,
-      core.String volumeId}) {
+      core.String volumeId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1449,6 +1587,9 @@
     if (volumeId != null) {
       _queryParams["volumeId"] = [volumeId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'mylibrary/annotations';
 
@@ -1469,6 +1610,9 @@
   ///
   /// [volumeId] - Volume id to get the summary for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnnotationsSummary].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1477,7 +1621,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AnnotationsSummary> summary(
-      core.List<core.String> layerIds, core.String volumeId) {
+      core.List<core.String> layerIds, core.String volumeId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1493,6 +1638,9 @@
       throw new core.ArgumentError("Parameter volumeId is required.");
     }
     _queryParams["volumeId"] = [volumeId];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'mylibrary/annotations/summary';
 
@@ -1515,6 +1663,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Annotation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1523,7 +1674,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Annotation> update(Annotation request, core.String annotationId,
-      {core.String source}) {
+      {core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1540,6 +1691,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'mylibrary/annotations/' +
         commons.Escaper.ecapeVariable('$annotationId');
@@ -1579,13 +1733,16 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future addVolume(core.String shelf, core.String volumeId,
-      {core.String reason, core.String source}) {
+      {core.String reason, core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1606,6 +1763,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1630,12 +1790,16 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future clearVolumes(core.String shelf, {core.String source}) {
+  async.Future clearVolumes(core.String shelf,
+      {core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1649,6 +1813,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1674,6 +1841,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Bookshelf].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1681,7 +1851,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Bookshelf> get(core.String shelf, {core.String source}) {
+  async.Future<Bookshelf> get(core.String shelf,
+      {core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1695,6 +1866,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'mylibrary/bookshelves/' + commons.Escaper.ecapeVariable('$shelf');
 
@@ -1713,6 +1887,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Bookshelves].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1720,7 +1897,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Bookshelves> list({core.String source}) {
+  async.Future<Bookshelves> list({core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1731,6 +1908,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'mylibrary/bookshelves';
 
@@ -1757,6 +1937,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
@@ -1764,7 +1947,7 @@
   /// this method will complete with the same error.
   async.Future moveVolume(
       core.String shelf, core.String volumeId, core.int volumePosition,
-      {core.String source}) {
+      {core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1786,6 +1969,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1816,13 +2002,16 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future removeVolume(core.String shelf, core.String volumeId,
-      {core.String reason, core.String source}) {
+      {core.String reason, core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1843,6 +2032,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1890,6 +2082,9 @@
   ///
   /// [startIndex] - Index of the first element to return (starts at 0)
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Volumes].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1904,7 +2099,8 @@
       core.String q,
       core.bool showPreorders,
       core.String source,
-      core.int startIndex}) {
+      core.int startIndex,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1936,6 +2132,9 @@
     if (startIndex != null) {
       _queryParams["startIndex"] = ["${startIndex}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'mylibrary/bookshelves/' +
         commons.Escaper.ecapeVariable('$shelf') +
@@ -1968,6 +2167,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ReadingPosition].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1976,7 +2178,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ReadingPosition> get(core.String volumeId,
-      {core.String contentVersion, core.String source}) {
+      {core.String contentVersion, core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1993,6 +2195,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'mylibrary/readingpositions/' +
         commons.Escaper.ecapeVariable('$volumeId');
@@ -2033,6 +2238,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
@@ -2043,7 +2251,8 @@
       {core.String action,
       core.String contentVersion,
       core.String deviceCookie,
-      core.String source}) {
+      core.String source,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2074,6 +2283,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2107,6 +2319,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Notification].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2115,7 +2330,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Notification> get(core.String notificationId,
-      {core.String locale, core.String source}) {
+      {core.String locale, core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2133,6 +2348,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'notification/get';
 
@@ -2158,6 +2376,9 @@
   /// [locale] - ISO-639-1 language and ISO-3166-1 country code. Default is
   /// en-US if unset.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Category].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2165,7 +2386,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Category> listCategories({core.String locale}) {
+  async.Future<Category> listCategories(
+      {core.String locale, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2176,6 +2398,9 @@
     if (locale != null) {
       _queryParams["locale"] = [locale];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'onboarding/listCategories';
 
@@ -2208,6 +2433,9 @@
   ///
   /// [pageToken] - The value of the nextToken from the previous page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Volume2].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2220,7 +2448,8 @@
       core.String locale,
       core.String maxAllowedMaturityRating,
       core.int pageSize,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2243,6 +2472,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'onboarding/listCategoryVolumes';
 
@@ -2278,6 +2510,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Discoveryclusters].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2288,7 +2523,8 @@
   async.Future<Discoveryclusters> get(
       {core.String locale,
       core.String maxAllowedMaturityRating,
-      core.String source}) {
+      core.String source,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2305,6 +2541,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'personalizedstream/get';
 
@@ -2341,6 +2580,9 @@
   ///
   /// [volumeId] - Volume id to exercise the offer
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
@@ -2354,7 +2596,8 @@
       core.String offerId,
       core.String product,
       core.String serial,
-      core.String volumeId}) {
+      core.String volumeId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2386,6 +2629,9 @@
     if (volumeId != null) {
       _queryParams["volumeId"] = [volumeId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2416,6 +2662,9 @@
   ///
   /// [serial] - device serial
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
@@ -2428,7 +2677,8 @@
       core.String model,
       core.String offerId,
       core.String product,
-      core.String serial}) {
+      core.String serial,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2457,6 +2707,9 @@
     if (serial != null) {
       _queryParams["serial"] = [serial];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2487,6 +2740,9 @@
   ///
   /// [serial] - device serial
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Offers].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2500,7 +2756,8 @@
       core.String manufacturer,
       core.String model,
       core.String product,
-      core.String serial}) {
+      core.String serial,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2526,6 +2783,9 @@
     if (serial != null) {
       _queryParams["serial"] = [serial];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'promooffer/get';
 
@@ -2553,6 +2813,9 @@
   ///
   /// [seriesId] - String that identifies the series
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Series].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2560,7 +2823,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Series> get(core.List<core.String> seriesId) {
+  async.Future<Series> get(core.List<core.String> seriesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2572,6 +2836,9 @@
       throw new core.ArgumentError("Parameter seriesId is required.");
     }
     _queryParams["series_id"] = seriesId;
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'series/get';
 
@@ -2602,6 +2869,9 @@
   ///
   /// [pageToken] - The value of the nextToken from the previous page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Seriesmembership].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2610,7 +2880,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Seriesmembership> get(core.String seriesId,
-      {core.int pageSize, core.String pageToken}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2628,6 +2898,9 @@
     if (pageToken != null) {
       _queryParams["page_token"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'series/membership/get';
 
@@ -2677,6 +2950,9 @@
   ///
   /// [userLibraryConsistentRead] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Volume].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2690,7 +2966,8 @@
       core.String partner,
       core.String projection,
       core.String source,
-      core.bool userLibraryConsistentRead}) {
+      core.bool userLibraryConsistentRead,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2721,6 +2998,9 @@
         "${userLibraryConsistentRead}"
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'volumes/' + commons.Escaper.ecapeVariable('$volumeId');
 
@@ -2793,6 +3073,9 @@
   ///
   /// [startIndex] - Index of the first result to return (starts at 0)
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Volumes].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2813,7 +3096,8 @@
       core.String projection,
       core.bool showPreorders,
       core.String source,
-      core.int startIndex}) {
+      core.int startIndex,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2864,6 +3148,9 @@
     if (startIndex != null) {
       _queryParams["startIndex"] = ["${startIndex}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'volumes';
 
@@ -2907,6 +3194,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Volumes].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2918,7 +3208,8 @@
       {core.String association,
       core.String locale,
       core.String maxAllowedMaturityRating,
-      core.String source}) {
+      core.String source,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2941,6 +3232,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'volumes/' + commons.Escaper.ecapeVariable('$volumeId') + '/associated';
@@ -2982,6 +3276,9 @@
   ///
   /// [startIndex] - Index of the first result to return (starts at 0)
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Volumes].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2996,7 +3293,8 @@
       core.int maxResults,
       core.List<core.String> processingState,
       core.String source,
-      core.int startIndex}) {
+      core.int startIndex,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3025,6 +3323,9 @@
     if (startIndex != null) {
       _queryParams["startIndex"] = ["${startIndex}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'volumes/mybooks';
 
@@ -3060,6 +3361,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Volumes].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3070,7 +3374,8 @@
   async.Future<Volumes> list(
       {core.String locale,
       core.String maxAllowedMaturityRating,
-      core.String source}) {
+      core.String source,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3087,6 +3392,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'volumes/recommended';
 
@@ -3115,6 +3423,9 @@
   ///
   /// [source] - String to identify the originator of this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BooksVolumesRecommendedRateResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3124,7 +3435,7 @@
   /// this method will complete with the same error.
   async.Future<BooksVolumesRecommendedRateResponse> rate(
       core.String rating, core.String volumeId,
-      {core.String locale, core.String source}) {
+      {core.String locale, core.String source, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3146,6 +3457,9 @@
     if (source != null) {
       _queryParams["source"] = [source];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'volumes/recommended/rate';
 
@@ -3186,6 +3500,9 @@
   /// [volumeId] - The ids of the volumes to be returned. If not specified all
   /// that match the processingState are returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Volumes].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3199,7 +3516,8 @@
       core.List<core.String> processingState,
       core.String source,
       core.int startIndex,
-      core.List<core.String> volumeId}) {
+      core.List<core.String> volumeId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3225,6 +3543,9 @@
     if (volumeId != null) {
       _queryParams["volumeId"] = volumeId;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'volumes/useruploaded';
 
diff --git a/generated/googleapis/lib/calendar/v3.dart b/generated/googleapis/lib/calendar/v3.dart
index a1022d0..a7bb10b 100644
--- a/generated/googleapis/lib/calendar/v3.dart
+++ b/generated/googleapis/lib/calendar/v3.dart
@@ -57,12 +57,16 @@
   ///
   /// [ruleId] - ACL rule identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String calendarId, core.String ruleId) {
+  async.Future delete(core.String calendarId, core.String ruleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -76,6 +80,9 @@
     if (ruleId == null) {
       throw new core.ArgumentError("Parameter ruleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -103,6 +110,9 @@
   ///
   /// [ruleId] - ACL rule identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AclRule].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -110,7 +120,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AclRule> get(core.String calendarId, core.String ruleId) {
+  async.Future<AclRule> get(core.String calendarId, core.String ruleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -124,6 +135,9 @@
     if (ruleId == null) {
       throw new core.ArgumentError("Parameter ruleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' +
         commons.Escaper.ecapeVariable('$calendarId') +
@@ -149,6 +163,12 @@
   /// calendarList.list method. If you want to access the primary calendar of
   /// the currently logged in user, use the "primary" keyword.
   ///
+  /// [sendNotifications] - Whether to send notifications about the calendar
+  /// sharing change. Optional. The default is True.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AclRule].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -156,7 +176,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AclRule> insert(AclRule request, core.String calendarId) {
+  async.Future<AclRule> insert(AclRule request, core.String calendarId,
+      {core.bool sendNotifications, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -170,6 +191,12 @@
     if (calendarId == null) {
       throw new core.ArgumentError("Parameter calendarId is required.");
     }
+    if (sendNotifications != null) {
+      _queryParams["sendNotifications"] = ["${sendNotifications}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' + commons.Escaper.ecapeVariable('$calendarId') + '/acl';
 
@@ -211,6 +238,9 @@
   /// Learn more about incremental synchronization.
   /// Optional. The default is to return all entries.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Acl].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -222,7 +252,8 @@
       {core.int maxResults,
       core.String pageToken,
       core.bool showDeleted,
-      core.String syncToken}) {
+      core.String syncToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -245,6 +276,9 @@
     if (syncToken != null) {
       _queryParams["syncToken"] = [syncToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' + commons.Escaper.ecapeVariable('$calendarId') + '/acl';
 
@@ -269,6 +303,13 @@
   ///
   /// [ruleId] - ACL rule identifier.
   ///
+  /// [sendNotifications] - Whether to send notifications about the calendar
+  /// sharing change. Note that there are no notifications on access removal.
+  /// Optional. The default is True.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AclRule].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -277,7 +318,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AclRule> patch(
-      AclRule request, core.String calendarId, core.String ruleId) {
+      AclRule request, core.String calendarId, core.String ruleId,
+      {core.bool sendNotifications, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -294,6 +336,12 @@
     if (ruleId == null) {
       throw new core.ArgumentError("Parameter ruleId is required.");
     }
+    if (sendNotifications != null) {
+      _queryParams["sendNotifications"] = ["${sendNotifications}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' +
         commons.Escaper.ecapeVariable('$calendarId') +
@@ -321,6 +369,13 @@
   ///
   /// [ruleId] - ACL rule identifier.
   ///
+  /// [sendNotifications] - Whether to send notifications about the calendar
+  /// sharing change. Note that there are no notifications on access removal.
+  /// Optional. The default is True.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AclRule].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -329,7 +384,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AclRule> update(
-      AclRule request, core.String calendarId, core.String ruleId) {
+      AclRule request, core.String calendarId, core.String ruleId,
+      {core.bool sendNotifications, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -346,6 +402,12 @@
     if (ruleId == null) {
       throw new core.ArgumentError("Parameter ruleId is required.");
     }
+    if (sendNotifications != null) {
+      _queryParams["sendNotifications"] = ["${sendNotifications}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' +
         commons.Escaper.ecapeVariable('$calendarId') +
@@ -392,6 +454,9 @@
   /// Learn more about incremental synchronization.
   /// Optional. The default is to return all entries.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Channel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -403,7 +468,8 @@
       {core.int maxResults,
       core.String pageToken,
       core.bool showDeleted,
-      core.String syncToken}) {
+      core.String syncToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -429,6 +495,9 @@
     if (syncToken != null) {
       _queryParams["syncToken"] = [syncToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' +
         commons.Escaper.ecapeVariable('$calendarId') +
@@ -457,12 +526,15 @@
   /// calendarList.list method. If you want to access the primary calendar of
   /// the currently logged in user, use the "primary" keyword.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String calendarId) {
+  async.Future delete(core.String calendarId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -473,6 +545,9 @@
     if (calendarId == null) {
       throw new core.ArgumentError("Parameter calendarId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -496,6 +571,9 @@
   /// calendarList.list method. If you want to access the primary calendar of
   /// the currently logged in user, use the "primary" keyword.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CalendarListEntry].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -503,7 +581,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CalendarListEntry> get(core.String calendarId) {
+  async.Future<CalendarListEntry> get(core.String calendarId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -514,6 +593,9 @@
     if (calendarId == null) {
       throw new core.ArgumentError("Parameter calendarId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'users/me/calendarList/' + commons.Escaper.ecapeVariable('$calendarId');
@@ -538,6 +620,9 @@
   /// index-based colorId field will be set to the best matching option
   /// automatically. Optional. The default is False.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CalendarListEntry].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -546,7 +631,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CalendarListEntry> insert(CalendarListEntry request,
-      {core.bool colorRgbFormat}) {
+      {core.bool colorRgbFormat, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -560,6 +645,9 @@
     if (colorRgbFormat != null) {
       _queryParams["colorRgbFormat"] = ["${colorRgbFormat}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/me/calendarList';
 
@@ -611,6 +699,9 @@
   /// Learn more about incremental synchronization.
   /// Optional. The default is to return all entries.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CalendarList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -624,7 +715,8 @@
       core.String pageToken,
       core.bool showDeleted,
       core.bool showHidden,
-      core.String syncToken}) {
+      core.String syncToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -650,6 +742,9 @@
     if (syncToken != null) {
       _queryParams["syncToken"] = [syncToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/me/calendarList';
 
@@ -678,6 +773,9 @@
   /// index-based colorId field will be set to the best matching option
   /// automatically. Optional. The default is False.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CalendarListEntry].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -687,7 +785,7 @@
   /// this method will complete with the same error.
   async.Future<CalendarListEntry> patch(
       CalendarListEntry request, core.String calendarId,
-      {core.bool colorRgbFormat}) {
+      {core.bool colorRgbFormat, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -704,6 +802,9 @@
     if (colorRgbFormat != null) {
       _queryParams["colorRgbFormat"] = ["${colorRgbFormat}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'users/me/calendarList/' + commons.Escaper.ecapeVariable('$calendarId');
@@ -732,6 +833,9 @@
   /// index-based colorId field will be set to the best matching option
   /// automatically. Optional. The default is False.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CalendarListEntry].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -741,7 +845,7 @@
   /// this method will complete with the same error.
   async.Future<CalendarListEntry> update(
       CalendarListEntry request, core.String calendarId,
-      {core.bool colorRgbFormat}) {
+      {core.bool colorRgbFormat, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -758,6 +862,9 @@
     if (colorRgbFormat != null) {
       _queryParams["colorRgbFormat"] = ["${colorRgbFormat}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'users/me/calendarList/' + commons.Escaper.ecapeVariable('$calendarId');
@@ -812,6 +919,9 @@
   /// Learn more about incremental synchronization.
   /// Optional. The default is to return all entries.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Channel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -825,7 +935,8 @@
       core.String pageToken,
       core.bool showDeleted,
       core.bool showHidden,
-      core.String syncToken}) {
+      core.String syncToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -854,6 +965,9 @@
     if (syncToken != null) {
       _queryParams["syncToken"] = [syncToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/me/calendarList/watch';
 
@@ -881,12 +995,15 @@
   /// calendarList.list method. If you want to access the primary calendar of
   /// the currently logged in user, use the "primary" keyword.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future clear(core.String calendarId) {
+  async.Future clear(core.String calendarId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -897,6 +1014,9 @@
     if (calendarId == null) {
       throw new core.ArgumentError("Parameter calendarId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -921,12 +1041,15 @@
   /// calendarList.list method. If you want to access the primary calendar of
   /// the currently logged in user, use the "primary" keyword.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String calendarId) {
+  async.Future delete(core.String calendarId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -937,6 +1060,9 @@
     if (calendarId == null) {
       throw new core.ArgumentError("Parameter calendarId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -959,6 +1085,9 @@
   /// calendarList.list method. If you want to access the primary calendar of
   /// the currently logged in user, use the "primary" keyword.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Calendar].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -966,7 +1095,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Calendar> get(core.String calendarId) {
+  async.Future<Calendar> get(core.String calendarId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -977,6 +1106,9 @@
     if (calendarId == null) {
       throw new core.ArgumentError("Parameter calendarId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' + commons.Escaper.ecapeVariable('$calendarId');
 
@@ -995,6 +1127,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Calendar].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1002,7 +1137,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Calendar> insert(Calendar request) {
+  async.Future<Calendar> insert(Calendar request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1013,6 +1148,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars';
 
@@ -1035,6 +1173,9 @@
   /// calendarList.list method. If you want to access the primary calendar of
   /// the currently logged in user, use the "primary" keyword.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Calendar].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1042,7 +1183,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Calendar> patch(Calendar request, core.String calendarId) {
+  async.Future<Calendar> patch(Calendar request, core.String calendarId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1056,6 +1198,9 @@
     if (calendarId == null) {
       throw new core.ArgumentError("Parameter calendarId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' + commons.Escaper.ecapeVariable('$calendarId');
 
@@ -1078,6 +1223,9 @@
   /// calendarList.list method. If you want to access the primary calendar of
   /// the currently logged in user, use the "primary" keyword.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Calendar].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1085,7 +1233,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Calendar> update(Calendar request, core.String calendarId) {
+  async.Future<Calendar> update(Calendar request, core.String calendarId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1099,6 +1248,9 @@
     if (calendarId == null) {
       throw new core.ArgumentError("Parameter calendarId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' + commons.Escaper.ecapeVariable('$calendarId');
 
@@ -1123,12 +1275,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future stop(Channel request) {
+  async.Future stop(Channel request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1139,6 +1294,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1163,6 +1321,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Colors].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1170,7 +1331,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Colors> get() {
+  async.Future<Colors> get({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1178,6 +1339,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'colors';
 
     var _response = _requester.request(_url, "GET",
@@ -1208,13 +1373,16 @@
   /// [sendNotifications] - Whether to send notifications about the deletion of
   /// the event. Optional. The default is False.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String calendarId, core.String eventId,
-      {core.bool sendNotifications}) {
+      {core.bool sendNotifications, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1231,6 +1399,9 @@
     if (sendNotifications != null) {
       _queryParams["sendNotifications"] = ["${sendNotifications}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1272,6 +1443,9 @@
   /// [timeZone] - Time zone used in the response. Optional. The default is the
   /// time zone of the calendar.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Event].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1282,7 +1456,8 @@
   async.Future<Event> get(core.String calendarId, core.String eventId,
       {core.bool alwaysIncludeEmail,
       core.int maxAttendees,
-      core.String timeZone}) {
+      core.String timeZone,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1305,6 +1480,9 @@
     if (timeZone != null) {
       _queryParams["timeZone"] = [timeZone];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' +
         commons.Escaper.ecapeVariable('$calendarId') +
@@ -1334,6 +1512,9 @@
   /// [supportsAttachments] - Whether API client performing operation supports
   /// event attachments. Optional. The default is False.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Event].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1342,7 +1523,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Event> import(Event request, core.String calendarId,
-      {core.bool supportsAttachments}) {
+      {core.bool supportsAttachments, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1359,6 +1540,9 @@
     if (supportsAttachments != null) {
       _queryParams["supportsAttachments"] = ["${supportsAttachments}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' +
         commons.Escaper.ecapeVariable('$calendarId') +
@@ -1393,6 +1577,9 @@
   /// [supportsAttachments] - Whether API client performing operation supports
   /// event attachments. Optional. The default is False.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Event].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1403,7 +1590,8 @@
   async.Future<Event> insert(Event request, core.String calendarId,
       {core.int maxAttendees,
       core.bool sendNotifications,
-      core.bool supportsAttachments}) {
+      core.bool supportsAttachments,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1426,6 +1614,9 @@
     if (supportsAttachments != null) {
       _queryParams["supportsAttachments"] = ["${supportsAttachments}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'calendars/' + commons.Escaper.ecapeVariable('$calendarId') + '/events';
@@ -1485,6 +1676,9 @@
   /// [timeZone] - Time zone used in the response. Optional. The default is the
   /// time zone of the calendar.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Events].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1501,7 +1695,8 @@
       core.bool showDeleted,
       core.DateTime timeMax,
       core.DateTime timeMin,
-      core.String timeZone}) {
+      core.String timeZone,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1542,6 +1737,9 @@
     if (timeZone != null) {
       _queryParams["timeZone"] = [timeZone];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' +
         commons.Escaper.ecapeVariable('$calendarId') +
@@ -1669,6 +1867,9 @@
   /// this time will always be included regardless of showDeleted. Optional. The
   /// default is not to filter by last modification time.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Events].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1693,7 +1894,8 @@
       core.DateTime timeMax,
       core.DateTime timeMin,
       core.String timeZone,
-      core.DateTime updatedMin}) {
+      core.DateTime updatedMin,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1755,6 +1957,9 @@
     if (updatedMin != null) {
       _queryParams["updatedMin"] = [(updatedMin).toIso8601String()];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'calendars/' + commons.Escaper.ecapeVariable('$calendarId') + '/events';
@@ -1783,6 +1988,9 @@
   /// [sendNotifications] - Whether to send notifications about the change of
   /// the event's organizer. Optional. The default is False.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Event].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1792,7 +2000,7 @@
   /// this method will complete with the same error.
   async.Future<Event> move(
       core.String calendarId, core.String eventId, core.String destination,
-      {core.bool sendNotifications}) {
+      {core.bool sendNotifications, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1813,6 +2021,9 @@
     if (sendNotifications != null) {
       _queryParams["sendNotifications"] = ["${sendNotifications}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' +
         commons.Escaper.ecapeVariable('$calendarId') +
@@ -1859,6 +2070,9 @@
   /// [supportsAttachments] - Whether API client performing operation supports
   /// event attachments. Optional. The default is False.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Event].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1871,7 +2085,8 @@
       {core.bool alwaysIncludeEmail,
       core.int maxAttendees,
       core.bool sendNotifications,
-      core.bool supportsAttachments}) {
+      core.bool supportsAttachments,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1900,6 +2115,9 @@
     if (supportsAttachments != null) {
       _queryParams["supportsAttachments"] = ["${supportsAttachments}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' +
         commons.Escaper.ecapeVariable('$calendarId') +
@@ -1928,6 +2146,9 @@
   /// [sendNotifications] - Whether to send notifications about the creation of
   /// the event. Optional. The default is False.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Event].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1936,7 +2157,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Event> quickAdd(core.String calendarId, core.String text,
-      {core.bool sendNotifications}) {
+      {core.bool sendNotifications, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1954,6 +2175,9 @@
     if (sendNotifications != null) {
       _queryParams["sendNotifications"] = ["${sendNotifications}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' +
         commons.Escaper.ecapeVariable('$calendarId') +
@@ -1998,6 +2222,9 @@
   /// [supportsAttachments] - Whether API client performing operation supports
   /// event attachments. Optional. The default is False.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Event].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2010,7 +2237,8 @@
       {core.bool alwaysIncludeEmail,
       core.int maxAttendees,
       core.bool sendNotifications,
-      core.bool supportsAttachments}) {
+      core.bool supportsAttachments,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2039,6 +2267,9 @@
     if (supportsAttachments != null) {
       _queryParams["supportsAttachments"] = ["${supportsAttachments}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' +
         commons.Escaper.ecapeVariable('$calendarId') +
@@ -2167,6 +2398,9 @@
   /// this time will always be included regardless of showDeleted. Optional. The
   /// default is not to filter by last modification time.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Channel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2191,7 +2425,8 @@
       core.DateTime timeMax,
       core.DateTime timeMin,
       core.String timeZone,
-      core.DateTime updatedMin}) {
+      core.DateTime updatedMin,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2256,6 +2491,9 @@
     if (updatedMin != null) {
       _queryParams["updatedMin"] = [(updatedMin).toIso8601String()];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'calendars/' +
         commons.Escaper.ecapeVariable('$calendarId') +
@@ -2282,6 +2520,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FreeBusyResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2289,7 +2530,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<FreeBusyResponse> query(FreeBusyRequest request) {
+  async.Future<FreeBusyResponse> query(FreeBusyRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2300,6 +2542,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'freeBusy';
 
@@ -2324,6 +2569,9 @@
   ///
   /// [setting] - The id of the user setting.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Setting].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2331,7 +2579,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Setting> get(core.String setting) {
+  async.Future<Setting> get(core.String setting, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2342,6 +2590,9 @@
     if (setting == null) {
       throw new core.ArgumentError("Parameter setting is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/me/settings/' + commons.Escaper.ecapeVariable('$setting');
 
@@ -2373,6 +2624,9 @@
   /// Learn more about incremental synchronization.
   /// Optional. The default is to return all entries.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Settings].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2381,7 +2635,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Settings> list(
-      {core.int maxResults, core.String pageToken, core.String syncToken}) {
+      {core.int maxResults,
+      core.String pageToken,
+      core.String syncToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2398,6 +2655,9 @@
     if (syncToken != null) {
       _queryParams["syncToken"] = [syncToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/me/settings';
 
@@ -2431,6 +2691,9 @@
   /// Learn more about incremental synchronization.
   /// Optional. The default is to return all entries.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Channel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2439,7 +2702,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Channel> watch(Channel request,
-      {core.int maxResults, core.String pageToken, core.String syncToken}) {
+      {core.int maxResults,
+      core.String pageToken,
+      core.String syncToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2459,6 +2725,9 @@
     if (syncToken != null) {
       _queryParams["syncToken"] = [syncToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/me/settings/watch';
 
diff --git a/generated/googleapis/lib/civicinfo/v2.dart b/generated/googleapis/lib/civicinfo/v2.dart
index d55d391..f5d2a96 100644
--- a/generated/googleapis/lib/civicinfo/v2.dart
+++ b/generated/googleapis/lib/civicinfo/v2.dart
@@ -48,6 +48,9 @@
   /// Lucene library are supported. See
   /// http://lucene.apache.org/core/2_9_4/queryparsersyntax.html
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DivisionSearchResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -56,7 +59,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DivisionSearchResponse> search(DivisionSearchRequest request,
-      {core.String query}) {
+      {core.String query, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -70,6 +73,9 @@
     if (query != null) {
       _queryParams["query"] = [query];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'divisions';
 
@@ -94,6 +100,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ElectionsQueryResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -102,7 +111,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ElectionsQueryResponse> electionQuery(
-      ElectionsQueryRequest request) {
+      ElectionsQueryRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -113,6 +123,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'elections';
 
@@ -146,6 +159,9 @@
   /// determine a matching address or unable to determine the election for
   /// electionId=0 queries.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VoterInfoResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -157,7 +173,8 @@
       VoterInfoRequest request, core.String address,
       {core.String electionId,
       core.bool officialOnly,
-      core.bool returnAllAvailableData}) {
+      core.bool returnAllAvailableData,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -181,6 +198,9 @@
     if (returnAllAvailableData != null) {
       _queryParams["returnAllAvailableData"] = ["${returnAllAvailableData}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'voterinfo';
 
@@ -221,6 +241,9 @@
   /// of these roles will be returned. Divisions that don't contain a matching
   /// office will not be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RepresentativeInfoResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -233,7 +256,8 @@
       {core.String address,
       core.bool includeOffices,
       core.List<core.String> levels,
-      core.List<core.String> roles}) {
+      core.List<core.String> roles,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -256,6 +280,9 @@
     if (roles != null) {
       _queryParams["roles"] = roles;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'representatives';
 
@@ -291,6 +318,9 @@
   /// of these roles will be returned. Divisions that don't contain a matching
   /// office will not be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RepresentativeInfoData].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -302,7 +332,8 @@
       DivisionRepresentativeInfoRequest request, core.String ocdId,
       {core.List<core.String> levels,
       core.bool recursive,
-      core.List<core.String> roles}) {
+      core.List<core.String> roles,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -325,6 +356,9 @@
     if (roles != null) {
       _queryParams["roles"] = roles;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'representatives/' + commons.Escaper.ecapeVariable('$ocdId');
 
diff --git a/generated/googleapis/lib/classroom/v1.dart b/generated/googleapis/lib/classroom/v1.dart
index 603d62b..598e0dc 100644
--- a/generated/googleapis/lib/classroom/v1.dart
+++ b/generated/googleapis/lib/classroom/v1.dart
@@ -140,6 +140,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Course].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -147,7 +150,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Course> create(Course request) {
+  async.Future<Course> create(Course request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -158,6 +161,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses';
 
@@ -185,6 +191,9 @@
   /// This identifier can be either the Classroom-assigned identifier or an
   /// alias.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -192,7 +201,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String id) {
+  async.Future<Empty> delete(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -203,6 +212,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' + commons.Escaper.ecapeVariable('$id');
 
@@ -230,6 +242,9 @@
   /// This identifier can be either the Classroom-assigned identifier or an
   /// alias.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Course].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -237,7 +252,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Course> get(core.String id) {
+  async.Future<Course> get(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -248,6 +263,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' + commons.Escaper.ecapeVariable('$id');
 
@@ -307,6 +325,9 @@
   /// * the email address of the user
   /// * the string literal `"me"`, indicating the requesting user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListCoursesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -319,7 +340,8 @@
       core.String pageToken,
       core.int pageSize,
       core.List<core.String> courseStates,
-      core.String teacherId}) {
+      core.String teacherId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -342,6 +364,9 @@
     if (teacherId != null) {
       _queryParams["teacherId"] = [teacherId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses';
 
@@ -396,6 +421,9 @@
   ///
   /// `updateMask=<field1>,<field2>,...`
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Course].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -404,7 +432,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Course> patch(Course request, core.String id,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -421,6 +449,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' + commons.Escaper.ecapeVariable('$id');
 
@@ -452,6 +483,9 @@
   /// This identifier can be either the Classroom-assigned identifier or an
   /// alias.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Course].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -459,7 +493,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Course> update(Course request, core.String id) {
+  async.Future<Course> update(Course request, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -473,6 +508,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' + commons.Escaper.ecapeVariable('$id');
 
@@ -512,6 +550,9 @@
   /// This identifier can be either the Classroom-assigned identifier or an
   /// alias.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CourseAlias].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -519,7 +560,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CourseAlias> create(CourseAlias request, core.String courseId) {
+  async.Future<CourseAlias> create(CourseAlias request, core.String courseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -533,6 +575,9 @@
     if (courseId == null) {
       throw new core.ArgumentError("Parameter courseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/courses/' + commons.Escaper.ecapeVariable('$courseId') + '/aliases';
@@ -567,6 +612,9 @@
   /// [alias] - Alias to delete.
   /// This may not be the Classroom-assigned identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -574,7 +622,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String courseId, core.String alias) {
+  async.Future<Empty> delete(core.String courseId, core.String alias,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -588,6 +637,9 @@
     if (alias == null) {
       throw new core.ArgumentError("Parameter alias is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -632,6 +684,9 @@
   ///
   /// The server may return fewer than the specified number of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListCourseAliasesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -640,7 +695,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListCourseAliasesResponse> list(core.String courseId,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -657,6 +712,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/courses/' + commons.Escaper.ecapeVariable('$courseId') + '/aliases';
@@ -699,6 +757,9 @@
   /// This identifier can be either the Classroom-assigned identifier or an
   /// alias.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Announcement].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -706,8 +767,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Announcement> create(
-      Announcement request, core.String courseId) {
+  async.Future<Announcement> create(Announcement request, core.String courseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -721,6 +782,9 @@
     if (courseId == null) {
       throw new core.ArgumentError("Parameter courseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -759,6 +823,9 @@
   /// [id] - Identifier of the announcement to delete.
   /// This identifier is a Classroom-assigned identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -766,7 +833,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String courseId, core.String id) {
+  async.Future<Empty> delete(core.String courseId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -780,6 +848,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -813,6 +884,9 @@
   ///
   /// [id] - Identifier of the announcement.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Announcement].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -820,7 +894,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Announcement> get(core.String courseId, core.String id) {
+  async.Future<Announcement> get(core.String courseId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -834,6 +909,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -867,10 +945,6 @@
   /// This identifier can be either the Classroom-assigned identifier or an
   /// alias.
   ///
-  /// [announcementStates] - Restriction on the `state` of announcements
-  /// returned.
-  /// If this argument is left unspecified, the default value is `PUBLISHED`.
-  ///
   /// [pageToken] - nextPageToken
   /// value returned from a previous
   /// list call,
@@ -892,6 +966,13 @@
   ///
   /// The server may return fewer than the specified number of results.
   ///
+  /// [announcementStates] - Restriction on the `state` of announcements
+  /// returned.
+  /// If this argument is left unspecified, the default value is `PUBLISHED`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListAnnouncementsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -900,10 +981,11 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListAnnouncementsResponse> list(core.String courseId,
-      {core.List<core.String> announcementStates,
-      core.String pageToken,
+      {core.String pageToken,
       core.String orderBy,
-      core.int pageSize}) {
+      core.int pageSize,
+      core.List<core.String> announcementStates,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -914,9 +996,6 @@
     if (courseId == null) {
       throw new core.ArgumentError("Parameter courseId is required.");
     }
-    if (announcementStates != null) {
-      _queryParams["announcementStates"] = announcementStates;
-    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
@@ -926,6 +1005,12 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (announcementStates != null) {
+      _queryParams["announcementStates"] = announcementStates;
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -964,6 +1049,9 @@
   ///
   /// [id] - Identifier of the announcement.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Announcement].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -974,7 +1062,8 @@
   async.Future<Announcement> modifyAssignees(
       ModifyAnnouncementAssigneesRequest request,
       core.String courseId,
-      core.String id) {
+      core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -991,6 +1080,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -1044,6 +1136,9 @@
   /// * `state`
   /// * `scheduled_time`
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Announcement].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1053,7 +1148,7 @@
   /// this method will complete with the same error.
   async.Future<Announcement> patch(
       Announcement request, core.String courseId, core.String id,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1073,6 +1168,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -1126,6 +1224,9 @@
   /// This identifier can be either the Classroom-assigned identifier or an
   /// alias.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CourseWork].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1133,7 +1234,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CourseWork> create(CourseWork request, core.String courseId) {
+  async.Future<CourseWork> create(CourseWork request, core.String courseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1147,6 +1249,9 @@
     if (courseId == null) {
       throw new core.ArgumentError("Parameter courseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -1185,6 +1290,9 @@
   /// [id] - Identifier of the course work to delete.
   /// This identifier is a Classroom-assigned identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1192,7 +1300,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String courseId, core.String id) {
+  async.Future<Empty> delete(core.String courseId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1206,6 +1315,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -1239,6 +1351,9 @@
   ///
   /// [id] - Identifier of the course work.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CourseWork].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1246,7 +1361,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CourseWork> get(core.String courseId, core.String id) {
+  async.Future<CourseWork> get(core.String courseId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1260,6 +1376,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -1319,6 +1438,9 @@
   /// is returned. If unspecified, items with a work status of `PUBLISHED`
   /// is returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListCourseWorkResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1330,7 +1452,8 @@
       {core.String pageToken,
       core.String orderBy,
       core.int pageSize,
-      core.List<core.String> courseWorkStates}) {
+      core.List<core.String> courseWorkStates,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1353,6 +1476,9 @@
     if (courseWorkStates != null) {
       _queryParams["courseWorkStates"] = courseWorkStates;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -1390,6 +1516,9 @@
   ///
   /// [id] - Identifier of the coursework.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CourseWork].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1400,7 +1529,8 @@
   async.Future<CourseWork> modifyAssignees(
       ModifyCourseWorkAssigneesRequest request,
       core.String courseId,
-      core.String id) {
+      core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1417,6 +1547,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -1485,6 +1618,9 @@
   /// * `scheduled_time`
   /// * `submission_modification_mode`
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CourseWork].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1494,7 +1630,7 @@
   /// this method will complete with the same error.
   async.Future<CourseWork> patch(
       CourseWork request, core.String courseId, core.String id,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1514,6 +1650,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -1556,6 +1695,9 @@
   ///
   /// [id] - Identifier of the student submission.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StudentSubmission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1564,7 +1706,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StudentSubmission> get(
-      core.String courseId, core.String courseWorkId, core.String id) {
+      core.String courseId, core.String courseWorkId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1581,6 +1724,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -1624,6 +1770,15 @@
   /// This may be set to the string literal `"-"` to request student work for
   /// all course work in the specified course.
   ///
+  /// [userId] - Optional argument to restrict returned student work to those
+  /// owned by the
+  /// student with the specified identifier. The identifier can be one of the
+  /// following:
+  ///
+  /// * the numeric identifier for the user
+  /// * the email address of the user
+  /// * the string literal `"me"`, indicating the requesting user
+  ///
   /// [late] - Requested lateness value. If specified, returned student
   /// submissions are
   /// restricted by the requested value.
@@ -1651,14 +1806,8 @@
   /// submissions
   /// match one of the specified submission states.
   ///
-  /// [userId] - Optional argument to restrict returned student work to those
-  /// owned by the
-  /// student with the specified identifier. The identifier can be one of the
-  /// following:
-  ///
-  /// * the numeric identifier for the user
-  /// * the email address of the user
-  /// * the string literal `"me"`, indicating the requesting user
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListStudentSubmissionsResponse].
   ///
@@ -1669,11 +1818,12 @@
   /// this method will complete with the same error.
   async.Future<ListStudentSubmissionsResponse> list(
       core.String courseId, core.String courseWorkId,
-      {core.String late,
+      {core.String userId,
+      core.String late,
       core.String pageToken,
       core.int pageSize,
       core.List<core.String> states,
-      core.String userId}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1687,6 +1837,9 @@
     if (courseWorkId == null) {
       throw new core.ArgumentError("Parameter courseWorkId is required.");
     }
+    if (userId != null) {
+      _queryParams["userId"] = [userId];
+    }
     if (late != null) {
       _queryParams["late"] = [late];
     }
@@ -1699,8 +1852,8 @@
     if (states != null) {
       _queryParams["states"] = states;
     }
-    if (userId != null) {
-      _queryParams["userId"] = [userId];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/courses/' +
@@ -1751,6 +1904,9 @@
   ///
   /// [id] - Identifier of the student submission.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StudentSubmission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1762,7 +1918,8 @@
       ModifyAttachmentsRequest request,
       core.String courseId,
       core.String courseWorkId,
-      core.String id) {
+      core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1782,6 +1939,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -1841,6 +2001,9 @@
   /// * `draft_grade`
   /// * `assigned_grade`
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StudentSubmission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1850,7 +2013,7 @@
   /// this method will complete with the same error.
   async.Future<StudentSubmission> patch(StudentSubmission request,
       core.String courseId, core.String courseWorkId, core.String id,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1873,6 +2036,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -1926,6 +2092,9 @@
   ///
   /// [id] - Identifier of the student submission.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1934,7 +2103,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> reclaim(ReclaimStudentSubmissionRequest request,
-      core.String courseId, core.String courseWorkId, core.String id) {
+      core.String courseId, core.String courseWorkId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1954,6 +2124,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -2009,6 +2182,9 @@
   ///
   /// [id] - Identifier of the student submission.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2017,7 +2193,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> return_(ReturnStudentSubmissionRequest request,
-      core.String courseId, core.String courseWorkId, core.String id) {
+      core.String courseId, core.String courseWorkId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2037,6 +2214,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -2089,6 +2269,9 @@
   ///
   /// [id] - Identifier of the student submission.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2097,7 +2280,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> turnIn(TurnInStudentSubmissionRequest request,
-      core.String courseId, core.String courseWorkId, core.String id) {
+      core.String courseId, core.String courseWorkId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2117,6 +2301,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -2169,6 +2356,9 @@
   /// corresponds to the requesting user; it may be omitted if the requesting
   /// user has administrative permissions to create students for any user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Student].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2177,7 +2367,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Student> create(Student request, core.String courseId,
-      {core.String enrollmentCode}) {
+      {core.String enrollmentCode, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2194,6 +2384,9 @@
     if (enrollmentCode != null) {
       _queryParams["enrollmentCode"] = [enrollmentCode];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -2231,6 +2424,9 @@
   /// * the email address of the user
   /// * the string literal `"me"`, indicating the requesting user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2238,7 +2434,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String courseId, core.String userId) {
+  async.Future<Empty> delete(core.String courseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2252,6 +2449,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -2290,6 +2490,9 @@
   /// * the email address of the user
   /// * the string literal `"me"`, indicating the requesting user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Student].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2297,7 +2500,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Student> get(core.String courseId, core.String userId) {
+  async.Future<Student> get(core.String courseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2311,6 +2515,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -2352,6 +2559,9 @@
   ///
   /// The server may return fewer than the specified number of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListStudentsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2360,7 +2570,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListStudentsResponse> list(core.String courseId,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2377,6 +2587,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -2421,6 +2634,9 @@
   /// This identifier can be either the Classroom-assigned identifier or an
   /// alias.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Teacher].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2428,7 +2644,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Teacher> create(Teacher request, core.String courseId) {
+  async.Future<Teacher> create(Teacher request, core.String courseId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2442,6 +2659,9 @@
     if (courseId == null) {
       throw new core.ArgumentError("Parameter courseId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -2481,6 +2701,9 @@
   /// * the email address of the user
   /// * the string literal `"me"`, indicating the requesting user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2488,7 +2711,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String courseId, core.String userId) {
+  async.Future<Empty> delete(core.String courseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2502,6 +2726,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -2540,6 +2767,9 @@
   /// * the email address of the user
   /// * the string literal `"me"`, indicating the requesting user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Teacher].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2547,7 +2777,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Teacher> get(core.String courseId, core.String userId) {
+  async.Future<Teacher> get(core.String courseId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2561,6 +2792,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -2602,6 +2836,9 @@
   ///
   /// The server may return fewer than the specified number of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListTeachersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2610,7 +2847,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListTeachersResponse> list(core.String courseId,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2627,6 +2864,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/courses/' +
         commons.Escaper.ecapeVariable('$courseId') +
@@ -2667,6 +2907,9 @@
   ///
   /// [id] - Identifier of the invitation to accept.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2674,7 +2917,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> accept(core.String id) {
+  async.Future<Empty> accept(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2685,6 +2928,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/invitations/' + commons.Escaper.ecapeVariable('$id') + ':accept';
 
@@ -2714,6 +2960,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Invitation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2721,7 +2970,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Invitation> create(Invitation request) {
+  async.Future<Invitation> create(Invitation request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2732,6 +2981,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/invitations';
 
@@ -2757,6 +3009,9 @@
   ///
   /// [id] - Identifier of the invitation to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2764,7 +3019,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String id) {
+  async.Future<Empty> delete(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2775,6 +3030,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/invitations/' + commons.Escaper.ecapeVariable('$id');
 
@@ -2799,6 +3057,9 @@
   ///
   /// [id] - Identifier of the invitation to return.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Invitation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2806,7 +3067,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Invitation> get(core.String id) {
+  async.Future<Invitation> get(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2817,6 +3078,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/invitations/' + commons.Escaper.ecapeVariable('$id');
 
@@ -2865,6 +3129,9 @@
   /// specified
   /// identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListInvitationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2876,7 +3143,8 @@
       {core.String pageToken,
       core.String userId,
       core.int pageSize,
-      core.String courseId}) {
+      core.String courseId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2896,6 +3164,9 @@
     if (courseId != null) {
       _queryParams["courseId"] = [courseId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/invitations';
 
@@ -2931,25 +3202,28 @@
   /// This method may return the following error codes:
   ///
   /// * `PERMISSION_DENIED` if:
-  ///   * the authenticated user does not have permission to receive
-  ///     notifications from the requested field; or
+  ///     * the authenticated user does not have permission to receive
+  ///       notifications from the requested field; or
   /// * the credential provided does not include the appropriate scope for the
-  ///     requested feed.
-  ///   * another access error is encountered.
+  ///       requested feed.
+  ///     * another access error is encountered.
   /// * `INVALID_ARGUMENT` if:
-  ///   * no `destination` is specified, or the specified `destination` is not
-  ///     valid; or
-  ///   * no `feed` is specified, or the specified `feed` is not valid.
+  /// * no `destination` is specified, or the specified `destination` is not
+  ///       valid; or
+  ///     * no `feed` is specified, or the specified `feed` is not valid.
   /// * `NOT_FOUND` if:
   /// * the specified `feed` cannot be located, or the requesting user does not
-  ///     have permission to determine whether or not it exists; or
-  ///   * the specified `destination` cannot be located, or Classroom has not
-  ///     been granted permission to publish to it.
+  ///       have permission to determine whether or not it exists; or
+  ///     * the specified `destination` cannot be located, or Classroom has not
+  ///       been granted permission to publish to it.
   ///
   /// [request] - The metadata request object.
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Registration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2957,7 +3231,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Registration> create(Registration request) {
+  async.Future<Registration> create(Registration request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2968,6 +3243,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/registrations';
 
@@ -2988,6 +3266,9 @@
   /// [registrationId] - The `registration_id` of the `Registration` to be
   /// deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2995,7 +3276,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String registrationId) {
+  async.Future<Empty> delete(core.String registrationId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3006,6 +3288,9 @@
     if (registrationId == null) {
       throw new core.ArgumentError("Parameter registrationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/registrations/' + commons.Escaper.ecapeVariable('$registrationId');
@@ -3048,6 +3333,9 @@
   /// * the email address of the user
   /// * the string literal `"me"`, indicating the requesting user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserProfile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3055,7 +3343,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UserProfile> get(core.String userId) {
+  async.Future<UserProfile> get(core.String userId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3066,6 +3354,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/userProfiles/' + commons.Escaper.ecapeVariable('$userId');
 
@@ -3123,6 +3414,9 @@
   ///
   /// [studentId] - ID of the student (in standard format)
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GuardianInvitation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3131,7 +3425,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GuardianInvitation> create(
-      GuardianInvitation request, core.String studentId) {
+      GuardianInvitation request, core.String studentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3145,6 +3440,9 @@
     if (studentId == null) {
       throw new core.ArgumentError("Parameter studentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/userProfiles/' +
         commons.Escaper.ecapeVariable('$studentId') +
@@ -3182,6 +3480,9 @@
   /// [invitationId] - The `id` field of the `GuardianInvitation` being
   /// requested.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GuardianInvitation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3190,7 +3491,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GuardianInvitation> get(
-      core.String studentId, core.String invitationId) {
+      core.String studentId, core.String invitationId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3204,6 +3506,9 @@
     if (invitationId == null) {
       throw new core.ArgumentError("Parameter invitationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/userProfiles/' +
         commons.Escaper.ecapeVariable('$studentId') +
@@ -3271,6 +3576,9 @@
   /// `invited_email_address`
   /// will be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListGuardianInvitationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3282,7 +3590,8 @@
       {core.String pageToken,
       core.int pageSize,
       core.List<core.String> states,
-      core.String invitedEmailAddress}) {
+      core.String invitedEmailAddress,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3305,6 +3614,9 @@
     if (invitedEmailAddress != null) {
       _queryParams["invitedEmailAddress"] = [invitedEmailAddress];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/userProfiles/' +
         commons.Escaper.ecapeVariable('$studentId') +
@@ -3361,6 +3673,9 @@
   ///
   /// `updateMask=<field1>,<field2>,...`
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GuardianInvitation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3370,7 +3685,7 @@
   /// this method will complete with the same error.
   async.Future<GuardianInvitation> patch(GuardianInvitation request,
       core.String studentId, core.String invitationId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3390,6 +3705,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/userProfiles/' +
         commons.Escaper.ecapeVariable('$studentId') +
@@ -3443,6 +3761,9 @@
   ///
   /// [guardianId] - The `id` field from a `Guardian`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3450,7 +3771,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String studentId, core.String guardianId) {
+  async.Future<Empty> delete(core.String studentId, core.String guardianId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3464,6 +3786,9 @@
     if (guardianId == null) {
       throw new core.ArgumentError("Parameter guardianId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/userProfiles/' +
         commons.Escaper.ecapeVariable('$studentId') +
@@ -3506,6 +3831,9 @@
   ///
   /// [guardianId] - The `id` field from a `Guardian`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Guardian].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3513,7 +3841,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Guardian> get(core.String studentId, core.String guardianId) {
+  async.Future<Guardian> get(core.String studentId, core.String guardianId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3527,6 +3856,9 @@
     if (guardianId == null) {
       throw new core.ArgumentError("Parameter guardianId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/userProfiles/' +
         commons.Escaper.ecapeVariable('$studentId') +
@@ -3593,6 +3925,9 @@
   /// to, resulting in this guardian link.
   /// This filter can only be used by domain administrators.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListGuardiansResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3603,7 +3938,8 @@
   async.Future<ListGuardiansResponse> list(core.String studentId,
       {core.String pageToken,
       core.int pageSize,
-      core.String invitedEmailAddress}) {
+      core.String invitedEmailAddress,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3623,6 +3959,9 @@
     if (invitedEmailAddress != null) {
       _queryParams["invitedEmailAddress"] = [invitedEmailAddress];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/userProfiles/' +
         commons.Escaper.ecapeVariable('$studentId') +
diff --git a/generated/googleapis/lib/cloudbilling/v1.dart b/generated/googleapis/lib/cloudbilling/v1.dart
index 8836c4c..e3f5104 100644
--- a/generated/googleapis/lib/cloudbilling/v1.dart
+++ b/generated/googleapis/lib/cloudbilling/v1.dart
@@ -54,6 +54,9 @@
   /// `billingAccounts/012345-567890-ABCDEF`.
   /// Value must have pattern "^billingAccounts/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BillingAccount].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -61,7 +64,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<BillingAccount> get(core.String name) {
+  async.Future<BillingAccount> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -72,6 +75,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -98,6 +104,9 @@
   /// `next_page_token` value returned from a previous `ListBillingAccounts`
   /// call. If unspecified, the first page of results is returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListBillingAccountsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -106,7 +115,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListBillingAccountsResponse> list(
-      {core.int pageSize, core.String pageToken}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -120,6 +129,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/billingAccounts';
 
@@ -160,6 +172,9 @@
   /// `next_page_token` value returned from a previous `ListProjectBillingInfo`
   /// call. If unspecified, the first page of results is returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListProjectBillingInfoResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -168,7 +183,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListProjectBillingInfoResponse> list(core.String name,
-      {core.int pageSize, core.String pageToken}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -185,6 +200,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + '/projects';
 
@@ -215,6 +233,9 @@
   /// retrieved. For example, `projects/tokyo-rain-123`.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProjectBillingInfo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -222,7 +243,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ProjectBillingInfo> getBillingInfo(core.String name) {
+  async.Future<ProjectBillingInfo> getBillingInfo(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -233,6 +255,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$name') + '/billingInfo';
@@ -289,6 +314,9 @@
   /// that you want to update. For example, `projects/tokyo-rain-123`.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProjectBillingInfo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -297,7 +325,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ProjectBillingInfo> updateBillingInfo(
-      ProjectBillingInfo request, core.String name) {
+      ProjectBillingInfo request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -311,6 +340,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$name') + '/billingInfo';
@@ -343,6 +375,9 @@
   /// `next_page_token` value returned from a previous `ListServices`
   /// call. If unspecified, the first page of results is returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListServicesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -351,7 +386,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListServicesResponse> list(
-      {core.int pageSize, core.String pageToken}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -365,6 +400,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services';
 
@@ -417,6 +455,9 @@
   /// `next_page_token` value returned from a previous `ListSkus`
   /// call. If unspecified, the first page of results is returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListSkusResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -429,7 +470,8 @@
       core.String endTime,
       core.int pageSize,
       core.String startTime,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -455,6 +497,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/skus';
 
diff --git a/generated/googleapis/lib/cloudbuild/v1.dart b/generated/googleapis/lib/cloudbuild/v1.dart
index 7086e1c..23ea6f2 100644
--- a/generated/googleapis/lib/cloudbuild/v1.dart
+++ b/generated/googleapis/lib/cloudbuild/v1.dart
@@ -55,6 +55,9 @@
   /// [name] - The name of the operation resource to be cancelled.
   /// Value must have pattern "^operations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -62,7 +65,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> cancel(CancelOperationRequest request, core.String name) {
+  async.Future<Empty> cancel(CancelOperationRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -76,6 +80,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':cancel';
 
@@ -97,6 +104,9 @@
   /// [name] - The name of the operation resource.
   /// Value must have pattern "^operations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -104,7 +114,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String name) {
+  async.Future<Operation> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -115,6 +125,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -144,12 +157,15 @@
   /// [name] - The name of the operation's parent resource.
   /// Value must have pattern "^operations$".
   ///
-  /// [filter] - The standard list filter.
-  ///
   /// [pageToken] - The standard list page token.
   ///
   /// [pageSize] - The standard list page size.
   ///
+  /// [filter] - The standard list filter.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOperationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -158,7 +174,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOperationsResponse> list(core.String name,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String filter,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -169,15 +188,18 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
-    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -217,6 +239,9 @@
   ///
   /// [id] - ID of the build.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Build].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -225,7 +250,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Build> cancel(
-      CancelBuildRequest request, core.String projectId, core.String id) {
+      CancelBuildRequest request, core.String projectId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -242,6 +268,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -270,6 +299,9 @@
   ///
   /// [projectId] - ID of the project.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -277,7 +309,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> create(Build request, core.String projectId) {
+  async.Future<Operation> create(Build request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -291,6 +324,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -316,6 +352,9 @@
   ///
   /// [id] - ID of the build.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Build].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -323,7 +362,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Build> get(core.String projectId, core.String id) {
+  async.Future<Build> get(core.String projectId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -337,6 +377,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -361,11 +404,14 @@
   ///
   /// [projectId] - ID of the project.
   ///
+  /// [filter] - The raw filter text to constrain the results.
+  ///
   /// [pageToken] - Token to provide to skip to a particular spot in the list.
   ///
   /// [pageSize] - Number of results to return in the list.
   ///
-  /// [filter] - The raw filter text to constrain the results.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListBuildsResponse].
   ///
@@ -375,7 +421,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListBuildsResponse> list(core.String projectId,
-      {core.String pageToken, core.int pageSize, core.String filter}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -386,14 +435,17 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/projects/' +
@@ -426,6 +478,9 @@
   ///
   /// [projectId] - ID of the project for which to configure automatic builds.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BuildTrigger].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -433,8 +488,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<BuildTrigger> create(
-      BuildTrigger request, core.String projectId) {
+  async.Future<BuildTrigger> create(BuildTrigger request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -448,6 +503,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -472,6 +530,9 @@
   ///
   /// [triggerId] - ID of the BuildTrigger to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -479,7 +540,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String projectId, core.String triggerId) {
+  async.Future<Empty> delete(core.String projectId, core.String triggerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -493,6 +555,9 @@
     if (triggerId == null) {
       throw new core.ArgumentError("Parameter triggerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -518,6 +583,9 @@
   ///
   /// [triggerId] - ID of the BuildTrigger to get.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BuildTrigger].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -525,7 +593,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<BuildTrigger> get(core.String projectId, core.String triggerId) {
+  async.Future<BuildTrigger> get(core.String projectId, core.String triggerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -539,6 +608,9 @@
     if (triggerId == null) {
       throw new core.ArgumentError("Parameter triggerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -562,6 +634,9 @@
   ///
   /// [projectId] - ID of the project for which to list BuildTriggers.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListBuildTriggersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -569,7 +644,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListBuildTriggersResponse> list(core.String projectId) {
+  async.Future<ListBuildTriggersResponse> list(core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -580,6 +656,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -607,6 +686,9 @@
   ///
   /// [triggerId] - ID of the BuildTrigger to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BuildTrigger].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -615,7 +697,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BuildTrigger> patch(
-      BuildTrigger request, core.String projectId, core.String triggerId) {
+      BuildTrigger request, core.String projectId, core.String triggerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -632,6 +715,9 @@
     if (triggerId == null) {
       throw new core.ArgumentError("Parameter triggerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
diff --git a/generated/googleapis/lib/clouddebugger/v2.dart b/generated/googleapis/lib/clouddebugger/v2.dart
index 944e3d8..9a08490 100644
--- a/generated/googleapis/lib/clouddebugger/v2.dart
+++ b/generated/googleapis/lib/clouddebugger/v2.dart
@@ -71,6 +71,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RegisterDebuggeeResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -79,7 +82,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RegisterDebuggeeResponse> register(
-      RegisterDebuggeeRequest request) {
+      RegisterDebuggeeRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -90,6 +94,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/controller/debuggees/register';
 
@@ -143,6 +150,9 @@
   /// expired. The value should be set from the `next_wait_token` field in
   /// the last response. The initial value should be set to `"init"`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListActiveBreakpointsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -151,7 +161,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListActiveBreakpointsResponse> list(core.String debuggeeId,
-      {core.bool successOnTimeout, core.String waitToken}) {
+      {core.bool successOnTimeout,
+      core.String waitToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -168,6 +180,9 @@
     if (waitToken != null) {
       _queryParams["waitToken"] = [waitToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/controller/debuggees/' +
         commons.Escaper.ecapeVariable('$debuggeeId') +
@@ -200,6 +215,9 @@
   ///
   /// [id] - Breakpoint identifier, unique in the scope of the debuggee.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UpdateActiveBreakpointResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -210,7 +228,8 @@
   async.Future<UpdateActiveBreakpointResponse> update(
       UpdateActiveBreakpointRequest request,
       core.String debuggeeId,
-      core.String id) {
+      core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -227,6 +246,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/controller/debuggees/' +
         commons.Escaper.ecapeVariable('$debuggeeId') +
@@ -266,16 +288,19 @@
   ///
   /// Request parameters:
   ///
-  /// [includeInactive] - When set to `true`, the result includes all debuggees.
-  /// Otherwise, the
-  /// result includes only debuggees that are active.
-  ///
   /// [project] - Project number of a Google Cloud project whose debuggees to
   /// list.
   ///
   /// [clientVersion] - The client version making the call.
   /// Schema: `domain/type/version` (e.g., `google.com/intellij/v1`).
   ///
+  /// [includeInactive] - When set to `true`, the result includes all debuggees.
+  /// Otherwise, the
+  /// result includes only debuggees that are active.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListDebuggeesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -284,9 +309,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListDebuggeesResponse> list(
-      {core.bool includeInactive,
-      core.String project,
-      core.String clientVersion}) {
+      {core.String project,
+      core.String clientVersion,
+      core.bool includeInactive,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -294,15 +320,18 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (includeInactive != null) {
-      _queryParams["includeInactive"] = ["${includeInactive}"];
-    }
     if (project != null) {
       _queryParams["project"] = [project];
     }
     if (clientVersion != null) {
       _queryParams["clientVersion"] = [clientVersion];
     }
+    if (includeInactive != null) {
+      _queryParams["includeInactive"] = ["${includeInactive}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/debugger/debuggees';
 
@@ -333,6 +362,9 @@
   /// [clientVersion] - The client version making the call.
   /// Schema: `domain/type/version` (e.g., `google.com/intellij/v1`).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -341,7 +373,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> delete(core.String debuggeeId, core.String breakpointId,
-      {core.String clientVersion}) {
+      {core.String clientVersion, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -358,6 +390,9 @@
     if (clientVersion != null) {
       _queryParams["clientVersion"] = [clientVersion];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/debugger/debuggees/' +
         commons.Escaper.ecapeVariable('$debuggeeId') +
@@ -384,6 +419,9 @@
   /// [clientVersion] - The client version making the call.
   /// Schema: `domain/type/version` (e.g., `google.com/intellij/v1`).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetBreakpointResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -393,7 +431,7 @@
   /// this method will complete with the same error.
   async.Future<GetBreakpointResponse> get(
       core.String debuggeeId, core.String breakpointId,
-      {core.String clientVersion}) {
+      {core.String clientVersion, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -410,6 +448,9 @@
     if (clientVersion != null) {
       _queryParams["clientVersion"] = [clientVersion];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/debugger/debuggees/' +
         commons.Escaper.ecapeVariable('$debuggeeId') +
@@ -451,13 +492,16 @@
   /// - "CAPTURE" : A CAPTURE.
   /// - "LOG" : A LOG.
   ///
+  /// [includeAllUsers] - When set to `true`, the response includes the list of
+  /// breakpoints set by
+  /// any user. Otherwise, it includes only breakpoints set by the caller.
+  ///
   /// [includeInactive] - When set to `true`, the response includes active and
   /// inactive
   /// breakpoints. Otherwise, it includes only active breakpoints.
   ///
-  /// [includeAllUsers] - When set to `true`, the response includes the list of
-  /// breakpoints set by
-  /// any user. Otherwise, it includes only breakpoints set by the caller.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListBreakpointsResponse].
   ///
@@ -471,8 +515,9 @@
       core.String waitToken,
       core.String clientVersion,
       core.String action_value,
+      core.bool includeAllUsers,
       core.bool includeInactive,
-      core.bool includeAllUsers}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -495,11 +540,14 @@
     if (action_value != null) {
       _queryParams["action.value"] = [action_value];
     }
+    if (includeAllUsers != null) {
+      _queryParams["includeAllUsers"] = ["${includeAllUsers}"];
+    }
     if (includeInactive != null) {
       _queryParams["includeInactive"] = ["${includeInactive}"];
     }
-    if (includeAllUsers != null) {
-      _queryParams["includeAllUsers"] = ["${includeAllUsers}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/debugger/debuggees/' +
@@ -526,6 +574,9 @@
   /// [clientVersion] - The client version making the call.
   /// Schema: `domain/type/version` (e.g., `google.com/intellij/v1`).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SetBreakpointResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -535,7 +586,7 @@
   /// this method will complete with the same error.
   async.Future<SetBreakpointResponse> set(
       Breakpoint request, core.String debuggeeId,
-      {core.String clientVersion}) {
+      {core.String clientVersion, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -552,6 +603,9 @@
     if (clientVersion != null) {
       _queryParams["clientVersion"] = [clientVersion];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/debugger/debuggees/' +
         commons.Escaper.ecapeVariable('$debuggeeId') +
diff --git a/generated/googleapis/lib/cloudfunctions/v1.dart b/generated/googleapis/lib/cloudfunctions/v1.dart
index 0440971..2ca7ef6 100644
--- a/generated/googleapis/lib/cloudfunctions/v1.dart
+++ b/generated/googleapis/lib/cloudfunctions/v1.dart
@@ -47,6 +47,9 @@
   /// [name] - The name of the operation resource.
   /// Value must have pattern "^operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -54,7 +57,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String name) {
+  async.Future<Operation> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -65,6 +68,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -91,13 +97,16 @@
   ///
   /// Request parameters:
   ///
+  /// [filter] - The standard list filter.
+  ///
   /// [pageToken] - The standard list page token.
   ///
   /// [name] - The name of the operation's parent resource.
   ///
   /// [pageSize] - The standard list page size.
   ///
-  /// [filter] - The standard list filter.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListOperationsResponse].
   ///
@@ -107,10 +116,11 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOperationsResponse> list(
-      {core.String pageToken,
+      {core.String filter,
+      core.String pageToken,
       core.String name,
       core.int pageSize,
-      core.String filter}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -118,6 +128,9 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
@@ -127,8 +140,8 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/operations';
@@ -155,6 +168,9 @@
 class ProjectsLocationsResourceApi {
   final commons.ApiRequester _requester;
 
+  ProjectsLocationsFunctionsResourceApi get functions =>
+      new ProjectsLocationsFunctionsResourceApi(_requester);
+
   ProjectsLocationsResourceApi(commons.ApiRequester client)
       : _requester = client;
 
@@ -165,12 +181,15 @@
   /// [name] - The resource that owns the locations collection, if applicable.
   /// Value must have pattern "^projects/[^/]+$".
   ///
-  /// [filter] - The standard list filter.
-  ///
   /// [pageToken] - The standard list page token.
   ///
   /// [pageSize] - The standard list page size.
   ///
+  /// [filter] - The standard list filter.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLocationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -179,7 +198,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLocationsResponse> list(core.String name,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String filter,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -190,15 +212,18 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
-    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$name') + '/locations';
@@ -213,6 +238,949 @@
   }
 }
 
+class ProjectsLocationsFunctionsResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsFunctionsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Invokes synchronously deployed function. To be used for testing, very
+  /// limited traffic allowed.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the function to be called.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/functions/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [CallFunctionResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<CallFunctionResponse> call(
+      CallFunctionRequest request, core.String name,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':call';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new CallFunctionResponse.fromJson(data));
+  }
+
+  /// Creates a new function. If a function with the given name already exists
+  /// in
+  /// the specified project, the long running operation will return
+  /// `ALREADY_EXISTS` error.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [location] - The project and location in which the function should be
+  /// created, specified
+  /// in the format `projects / * /locations / * `
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> create(CloudFunction request, core.String location,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (location == null) {
+      throw new core.ArgumentError("Parameter location is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' +
+        commons.Escaper.ecapeVariableReserved('$location') +
+        '/functions';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Operation.fromJson(data));
+  }
+
+  /// Deletes a function with the given name from the specified project. If the
+  /// given function is used by some trigger, the trigger will be updated to
+  /// remove this function.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the function which should be deleted.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/functions/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> delete(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "DELETE",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Operation.fromJson(data));
+  }
+
+  /// Returns a signed URL for downloading deployed function source code.
+  /// The URL is only valid for a limited period and should be used within
+  /// minutes after generation.
+  /// For more information about the signed URL usage see:
+  /// https://cloud.google.com/storage/docs/access-control/signed-urls
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of function for which source code Google Cloud Storage
+  /// signed
+  /// URL should be generated.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/functions/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GenerateDownloadUrlResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GenerateDownloadUrlResponse> generateDownloadUrl(
+      GenerateDownloadUrlRequest request, core.String name,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' +
+        commons.Escaper.ecapeVariableReserved('$name') +
+        ':generateDownloadUrl';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new GenerateDownloadUrlResponse.fromJson(data));
+  }
+
+  /// Returns a signed URL for uploading a function source code.
+  /// For more information about the signed URL usage see:
+  /// https://cloud.google.com/storage/docs/access-control/signed-urls
+  /// Once the function source code upload is complete, the used signed
+  /// URL should be provided in CreateFunction or UpdateFunction request
+  /// as a reference to the function source code.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - The project and location in which the Google Cloud Storage
+  /// signed URL
+  /// should be generated, specified in the format `projects / * /locations / *
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GenerateUploadUrlResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GenerateUploadUrlResponse> generateUploadUrl(
+      GenerateUploadUrlRequest request, core.String parent,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        '/functions:generateUploadUrl';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new GenerateUploadUrlResponse.fromJson(data));
+  }
+
+  /// Returns a function with the given name from the requested project.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the function which details should be obtained.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/functions/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [CloudFunction].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<CloudFunction> get(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new CloudFunction.fromJson(data));
+  }
+
+  /// Returns a list of functions that belong to the requested project.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - The project and location from which the function should be
+  /// listed,
+  /// specified in the format `projects / * /locations / * `
+  /// If you want to list functions in all locations, use "-" in place of a
+  /// location.
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+$".
+  ///
+  /// [pageToken] - The value returned by the last
+  /// `ListFunctionsResponse`; indicates that
+  /// this is a continuation of a prior `ListFunctions` call, and that the
+  /// system should return the next page of data.
+  ///
+  /// [pageSize] - Maximum number of functions to return per call.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListFunctionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListFunctionsResponse> list(core.String parent,
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url =
+        'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/functions';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new ListFunctionsResponse.fromJson(data));
+  }
+
+  /// Updates existing function.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - A user-defined name of the function. Function names must be
+  /// unique
+  /// globally and match pattern `projects / * /locations / * /functions / * `
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/functions/[^/]+$".
+  ///
+  /// [updateMask] - Required list of fields to be updated in this request.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> patch(CloudFunction request, core.String name,
+      {core.String updateMask, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if (updateMask != null) {
+      _queryParams["updateMask"] = [updateMask];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "PATCH",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Operation.fromJson(data));
+  }
+}
+
+/// Request for the `CallFunction` method.
+class CallFunctionRequest {
+  /// Input to be passed to the function.
+  core.String data;
+
+  CallFunctionRequest();
+
+  CallFunctionRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("data")) {
+      data = _json["data"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (data != null) {
+      _json["data"] = data;
+    }
+    return _json;
+  }
+}
+
+/// Response of `CallFunction` method.
+class CallFunctionResponse {
+  /// Either system or user-function generated error. Set if execution
+  /// was not successful.
+  core.String error;
+
+  /// Execution id of function invocation.
+  core.String executionId;
+
+  /// Result populated for successful execution of synchronous function. Will
+  /// not be populated if function does not return a result through context.
+  core.String result;
+
+  CallFunctionResponse();
+
+  CallFunctionResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("error")) {
+      error = _json["error"];
+    }
+    if (_json.containsKey("executionId")) {
+      executionId = _json["executionId"];
+    }
+    if (_json.containsKey("result")) {
+      result = _json["result"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (error != null) {
+      _json["error"] = error;
+    }
+    if (executionId != null) {
+      _json["executionId"] = executionId;
+    }
+    if (result != null) {
+      _json["result"] = result;
+    }
+    return _json;
+  }
+}
+
+/// Describes a Cloud Function that contains user computation executed in
+/// response to an event. It encapsulate function and triggers configurations.
+class CloudFunction {
+  /// The amount of memory in MB available for a function.
+  /// Defaults to 256MB.
+  core.int availableMemoryMb;
+
+  /// User-provided description of a function.
+  core.String description;
+
+  /// The name of the function (as defined in source code) that will be
+  /// executed. Defaults to the resource name suffix, if not specified. For
+  /// backward compatibility, if function with given name is not found, then the
+  /// system will try to use function named "function".
+  /// For Node.js this is name of a function exported by the module specified
+  /// in `source_location`.
+  core.String entryPoint;
+
+  /// A source that fires events in response to a condition in another service.
+  EventTrigger eventTrigger;
+
+  /// An HTTPS endpoint type of source that can be triggered via URL.
+  HttpsTrigger httpsTrigger;
+
+  /// Labels associated with this Cloud Function.
+  core.Map<core.String, core.String> labels;
+
+  /// A user-defined name of the function. Function names must be unique
+  /// globally and match pattern `projects / * /locations / * /functions / * `
+  core.String name;
+
+  /// Output only. The email of the function's service account.
+  core.String serviceAccountEmail;
+
+  /// The Google Cloud Storage URL, starting with gs://, pointing to the zip
+  /// archive which contains the function.
+  core.String sourceArchiveUrl;
+
+  /// **Beta Feature**
+  ///
+  /// The source repository where a function is hosted.
+  SourceRepository sourceRepository;
+
+  /// The Google Cloud Storage signed URL used for source uploading, generated
+  /// by google.cloud.functions.v1.GenerateUploadUrl
+  core.String sourceUploadUrl;
+
+  /// Output only. Status of the function deployment.
+  /// Possible string values are:
+  /// - "CLOUD_FUNCTION_STATUS_UNSPECIFIED" : Not specified. Invalid state.
+  /// - "ACTIVE" : Function has been succesfully deployed and is serving.
+  /// - "OFFLINE" : Function deployment failed and the function isn’t serving.
+  /// - "DEPLOY_IN_PROGRESS" : Function is being created or updated.
+  /// - "DELETE_IN_PROGRESS" : Function is being deleted.
+  /// - "UNKNOWN" : Function deployment failed and the function serving state is
+  /// undefined.
+  /// The function should be updated or deleted to move it out of this state.
+  core.String status;
+
+  /// The function execution timeout. Execution is considered failed and
+  /// can be terminated if the function is not completed at the end of the
+  /// timeout period. Defaults to 60 seconds.
+  core.String timeout;
+
+  /// Output only. The last update timestamp of a Cloud Function.
+  core.String updateTime;
+
+  /// Output only.
+  /// The version identifier of the Cloud Function. Each deployment attempt
+  /// results in a new version of a function being created.
+  core.String versionId;
+
+  CloudFunction();
+
+  CloudFunction.fromJson(core.Map _json) {
+    if (_json.containsKey("availableMemoryMb")) {
+      availableMemoryMb = _json["availableMemoryMb"];
+    }
+    if (_json.containsKey("description")) {
+      description = _json["description"];
+    }
+    if (_json.containsKey("entryPoint")) {
+      entryPoint = _json["entryPoint"];
+    }
+    if (_json.containsKey("eventTrigger")) {
+      eventTrigger = new EventTrigger.fromJson(_json["eventTrigger"]);
+    }
+    if (_json.containsKey("httpsTrigger")) {
+      httpsTrigger = new HttpsTrigger.fromJson(_json["httpsTrigger"]);
+    }
+    if (_json.containsKey("labels")) {
+      labels = _json["labels"];
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("serviceAccountEmail")) {
+      serviceAccountEmail = _json["serviceAccountEmail"];
+    }
+    if (_json.containsKey("sourceArchiveUrl")) {
+      sourceArchiveUrl = _json["sourceArchiveUrl"];
+    }
+    if (_json.containsKey("sourceRepository")) {
+      sourceRepository =
+          new SourceRepository.fromJson(_json["sourceRepository"]);
+    }
+    if (_json.containsKey("sourceUploadUrl")) {
+      sourceUploadUrl = _json["sourceUploadUrl"];
+    }
+    if (_json.containsKey("status")) {
+      status = _json["status"];
+    }
+    if (_json.containsKey("timeout")) {
+      timeout = _json["timeout"];
+    }
+    if (_json.containsKey("updateTime")) {
+      updateTime = _json["updateTime"];
+    }
+    if (_json.containsKey("versionId")) {
+      versionId = _json["versionId"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (availableMemoryMb != null) {
+      _json["availableMemoryMb"] = availableMemoryMb;
+    }
+    if (description != null) {
+      _json["description"] = description;
+    }
+    if (entryPoint != null) {
+      _json["entryPoint"] = entryPoint;
+    }
+    if (eventTrigger != null) {
+      _json["eventTrigger"] = (eventTrigger).toJson();
+    }
+    if (httpsTrigger != null) {
+      _json["httpsTrigger"] = (httpsTrigger).toJson();
+    }
+    if (labels != null) {
+      _json["labels"] = labels;
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (serviceAccountEmail != null) {
+      _json["serviceAccountEmail"] = serviceAccountEmail;
+    }
+    if (sourceArchiveUrl != null) {
+      _json["sourceArchiveUrl"] = sourceArchiveUrl;
+    }
+    if (sourceRepository != null) {
+      _json["sourceRepository"] = (sourceRepository).toJson();
+    }
+    if (sourceUploadUrl != null) {
+      _json["sourceUploadUrl"] = sourceUploadUrl;
+    }
+    if (status != null) {
+      _json["status"] = status;
+    }
+    if (timeout != null) {
+      _json["timeout"] = timeout;
+    }
+    if (updateTime != null) {
+      _json["updateTime"] = updateTime;
+    }
+    if (versionId != null) {
+      _json["versionId"] = versionId;
+    }
+    return _json;
+  }
+}
+
+/// Describes EventTrigger, used to request events be sent from another
+/// service.
+class EventTrigger {
+  /// Required. The type of event to observe. For example:
+  /// `google.storage.object.finalized` and
+  /// `google.firebase.analytics.event.log`.
+  ///
+  /// Event type consists of three parts:
+  ///  1. namespace: The domain name of the organization in reverse-domain
+  ///     notation (e.g. `acme.net` appears as `net.acme`) and any orginization
+  /// specific subdivisions. If the organization's top-level domain is `com`,
+  ///     the top-level domain is ommited (e.g. `google.com` appears as
+  ///     `google`). For example, `google.storage` and
+  ///     `google.firebase.analytics`.
+  ///  2. resource type: The type of resource on which event ocurs. For
+  ///     example, the Google Cloud Storage API includes the type `object`.
+  ///  3. action: The action that generates the event. For example, actions for
+  ///     a Google Cloud Storage Object include 'finalize' and 'delete'.
+  /// These parts are lower case and joined by '.'.
+  core.String eventType;
+
+  /// Specifies policy for failed executions.
+  FailurePolicy failurePolicy;
+
+  /// Required. The resource(s) from which to observe events, for example,
+  /// `projects/_/buckets/myBucket`.
+  ///
+  /// Not all syntactically correct values are accepted by all services. For
+  /// example:
+  ///
+  /// 1. The authorization model must support it. Google Cloud Functions
+  ///    only allows EventTriggers to be deployed that observe resources in the
+  ///    same project as the `CloudFunction`.
+  /// 2. The resource type must match the pattern expected for an
+  ///    `event_type`. For example, an `EventTrigger` that has an
+  ///    `event_type` of "google.pubsub.topic.publish" should have a resource
+  ///    that matches Google Cloud Pub/Sub topics.
+  ///
+  /// Additionally, some services may support short names when creating an
+  /// `EventTrigger`. These will always be returned in the normalized "long"
+  /// format.
+  ///
+  /// See each *service's* documentation for supported formats.
+  core.String resource;
+
+  /// The hostname of the service that should be observed.
+  ///
+  /// If no string is provided, the default service implementing the API will
+  /// be used. For example, `storage.googleapis.com` is the default for all
+  /// event types in the 'google.storage` namespace.
+  core.String service;
+
+  EventTrigger();
+
+  EventTrigger.fromJson(core.Map _json) {
+    if (_json.containsKey("eventType")) {
+      eventType = _json["eventType"];
+    }
+    if (_json.containsKey("failurePolicy")) {
+      failurePolicy = new FailurePolicy.fromJson(_json["failurePolicy"]);
+    }
+    if (_json.containsKey("resource")) {
+      resource = _json["resource"];
+    }
+    if (_json.containsKey("service")) {
+      service = _json["service"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (eventType != null) {
+      _json["eventType"] = eventType;
+    }
+    if (failurePolicy != null) {
+      _json["failurePolicy"] = (failurePolicy).toJson();
+    }
+    if (resource != null) {
+      _json["resource"] = resource;
+    }
+    if (service != null) {
+      _json["service"] = service;
+    }
+    return _json;
+  }
+}
+
+/// Describes the policy in case of function's execution failure.
+/// If empty, then defaults to ignoring failures (i.e. not retrying them).
+class FailurePolicy {
+  /// If specified, then the function will be retried in case of a failure.
+  Retry retry;
+
+  FailurePolicy();
+
+  FailurePolicy.fromJson(core.Map _json) {
+    if (_json.containsKey("retry")) {
+      retry = new Retry.fromJson(_json["retry"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (retry != null) {
+      _json["retry"] = (retry).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Request of `GenerateDownloadUrl` method.
+class GenerateDownloadUrlRequest {
+  /// The optional version of function. If not set, default, current version
+  /// is used.
+  core.String versionId;
+
+  GenerateDownloadUrlRequest();
+
+  GenerateDownloadUrlRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("versionId")) {
+      versionId = _json["versionId"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (versionId != null) {
+      _json["versionId"] = versionId;
+    }
+    return _json;
+  }
+}
+
+/// Response of `GenerateDownloadUrl` method.
+class GenerateDownloadUrlResponse {
+  /// The generated Google Cloud Storage signed URL that should be used for
+  /// function source code download.
+  core.String downloadUrl;
+
+  GenerateDownloadUrlResponse();
+
+  GenerateDownloadUrlResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("downloadUrl")) {
+      downloadUrl = _json["downloadUrl"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (downloadUrl != null) {
+      _json["downloadUrl"] = downloadUrl;
+    }
+    return _json;
+  }
+}
+
+/// Request of `GenerateSourceUploadUrl` method.
+class GenerateUploadUrlRequest {
+  GenerateUploadUrlRequest();
+
+  GenerateUploadUrlRequest.fromJson(core.Map _json) {}
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    return _json;
+  }
+}
+
+/// Response of `GenerateSourceUploadUrl` method.
+class GenerateUploadUrlResponse {
+  /// The generated Google Cloud Storage signed URL that should be used for a
+  /// function source code upload. The uploaded file should be a zip archive
+  /// which contains a function.
+  core.String uploadUrl;
+
+  GenerateUploadUrlResponse();
+
+  GenerateUploadUrlResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("uploadUrl")) {
+      uploadUrl = _json["uploadUrl"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (uploadUrl != null) {
+      _json["uploadUrl"] = uploadUrl;
+    }
+    return _json;
+  }
+}
+
+/// Describes HttpsTrigger, could be used to connect web hooks to function.
+class HttpsTrigger {
+  /// Output only. The deployed url for the function.
+  core.String url;
+
+  HttpsTrigger();
+
+  HttpsTrigger.fromJson(core.Map _json) {
+    if (_json.containsKey("url")) {
+      url = _json["url"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (url != null) {
+      _json["url"] = url;
+    }
+    return _json;
+  }
+}
+
+/// Response for the `ListFunctions` method.
+class ListFunctionsResponse {
+  /// The functions that match the request.
+  core.List<CloudFunction> functions;
+
+  /// If not empty, indicates that there may be more functions that match
+  /// the request; this value should be passed in a new
+  /// google.cloud.functions.v1.ListFunctionsRequest
+  /// to get more functions.
+  core.String nextPageToken;
+
+  ListFunctionsResponse();
+
+  ListFunctionsResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("functions")) {
+      functions = _json["functions"]
+          .map((value) => new CloudFunction.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (functions != null) {
+      _json["functions"] = functions.map((value) => (value).toJson()).toList();
+    }
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    return _json;
+  }
+}
+
 /// The response message for Locations.ListLocations.
 class ListLocationsResponse {
   /// A list of locations that matches the specified filter in the request.
@@ -421,6 +1389,66 @@
 }
 
 /// Metadata describing an Operation
+class OperationMetadataV1 {
+  /// The original request that started the operation.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.Map<core.String, core.Object> request;
+
+  /// Target of the operation - for example
+  /// projects/project-1/locations/region-1/functions/function-1
+  core.String target;
+
+  /// Type of operation.
+  /// Possible string values are:
+  /// - "OPERATION_UNSPECIFIED" : Unknown operation type.
+  /// - "CREATE_FUNCTION" : Triggered by CreateFunction call
+  /// - "UPDATE_FUNCTION" : Triggered by UpdateFunction call
+  /// - "DELETE_FUNCTION" : Triggered by DeleteFunction call.
+  core.String type;
+
+  /// Version id of the function created or updated by an API call.
+  /// This field is only pupulated for Create and Update operations.
+  core.String versionId;
+
+  OperationMetadataV1();
+
+  OperationMetadataV1.fromJson(core.Map _json) {
+    if (_json.containsKey("request")) {
+      request = _json["request"];
+    }
+    if (_json.containsKey("target")) {
+      target = _json["target"];
+    }
+    if (_json.containsKey("type")) {
+      type = _json["type"];
+    }
+    if (_json.containsKey("versionId")) {
+      versionId = _json["versionId"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (request != null) {
+      _json["request"] = request;
+    }
+    if (target != null) {
+      _json["target"] = target;
+    }
+    if (type != null) {
+      _json["type"] = type;
+    }
+    if (versionId != null) {
+      _json["versionId"] = versionId;
+    }
+    return _json;
+  }
+}
+
+/// Metadata describing an Operation
 class OperationMetadataV1Beta2 {
   /// The original request that started the operation.
   ///
@@ -480,6 +1508,73 @@
   }
 }
 
+/// Describes the retry policy in case of function's execution failure.
+/// A function execution will be retried on any failure.
+/// A failed execution will be retried up to 7 days with an exponential backoff
+/// (capped at 10 seconds).
+/// Retried execution is charged as any other execution.
+class Retry {
+  Retry();
+
+  Retry.fromJson(core.Map _json) {}
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    return _json;
+  }
+}
+
+/// Describes SourceRepository, used to represent parameters related to
+/// source repository where a function is hosted.
+class SourceRepository {
+  /// Output only. The URL pointing to the hosted repository where the function
+  /// were defined at the time of deployment. It always points to a specific
+  /// commit in the format described above.
+  core.String deployedUrl;
+
+  /// The URL pointing to the hosted repository where the function is defined.
+  /// There are supported Cloud Source Repository URLs in the following
+  /// formats:
+  ///
+  /// To refer to a specific commit:
+  /// `https://source.developers.google.com/projects / * /repos / * /revisions /
+  /// * /paths / * `
+  /// To refer to a moveable alias (branch):
+  /// `https://source.developers.google.com/projects / * /repos / *
+  /// /moveable-aliases / * /paths / * `
+  /// In particular, to refer to HEAD use `master` moveable alias.
+  /// To refer to a specific fixed alias (tag):
+  /// `https://source.developers.google.com/projects / * /repos / *
+  /// /fixed-aliases / * /paths / * `
+  ///
+  /// You may omit `paths / * ` if you want to use the main directory.
+  core.String url;
+
+  SourceRepository();
+
+  SourceRepository.fromJson(core.Map _json) {
+    if (_json.containsKey("deployedUrl")) {
+      deployedUrl = _json["deployedUrl"];
+    }
+    if (_json.containsKey("url")) {
+      url = _json["url"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (deployedUrl != null) {
+      _json["deployedUrl"] = deployedUrl;
+    }
+    if (url != null) {
+      _json["url"] = url;
+    }
+    return _json;
+  }
+}
+
 /// The `Status` type defines a logical error model that is suitable for
 /// different
 /// programming environments, including REST APIs and RPC APIs. It is used by
diff --git a/generated/googleapis/lib/cloudiot/v1.dart b/generated/googleapis/lib/cloudiot/v1.dart
new file mode 100644
index 0000000..edcea0a
--- /dev/null
+++ b/generated/googleapis/lib/cloudiot/v1.dart
@@ -0,0 +1,2570 @@
+// This is a generated file (see the discoveryapis_generator project).
+
+library googleapis.cloudiot.v1;
+
+import 'dart:core' as core;
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+
+import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
+import 'package:http/http.dart' as http;
+
+export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
+    show ApiRequestError, DetailedApiRequestError;
+
+const core.String USER_AGENT = 'dart-api-client cloudiot/v1';
+
+/// Registers and manages IoT (Internet of Things) devices that connect to the
+/// Google Cloud Platform.
+class CloudiotApi {
+  /// View and manage your data across Google Cloud Platform services
+  static const CloudPlatformScope =
+      "https://www.googleapis.com/auth/cloud-platform";
+
+  /// Register and manage devices in the Google Cloud IoT service
+  static const CloudiotScope = "https://www.googleapis.com/auth/cloudiot";
+
+  final commons.ApiRequester _requester;
+
+  ProjectsResourceApi get projects => new ProjectsResourceApi(_requester);
+
+  CloudiotApi(http.Client client,
+      {core.String rootUrl: "https://cloudiot.googleapis.com/",
+      core.String servicePath: ""})
+      : _requester =
+            new commons.ApiRequester(client, rootUrl, servicePath, USER_AGENT);
+}
+
+class ProjectsResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsResourceApi get locations =>
+      new ProjectsLocationsResourceApi(_requester);
+
+  ProjectsResourceApi(commons.ApiRequester client) : _requester = client;
+}
+
+class ProjectsLocationsResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsRegistriesResourceApi get registries =>
+      new ProjectsLocationsRegistriesResourceApi(_requester);
+
+  ProjectsLocationsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+}
+
+class ProjectsLocationsRegistriesResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsRegistriesDevicesResourceApi get devices =>
+      new ProjectsLocationsRegistriesDevicesResourceApi(_requester);
+
+  ProjectsLocationsRegistriesResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates a device registry that contains devices.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - The project and cloud region where this device registry must be
+  /// created.
+  /// For example, `projects/example-project/locations/us-central1`.
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [DeviceRegistry].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<DeviceRegistry> create(
+      DeviceRegistry request, core.String parent,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        '/registries';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new DeviceRegistry.fromJson(data));
+  }
+
+  /// Deletes a device registry configuration.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the device registry. For example,
+  /// `projects/example-project/locations/us-central1/registries/my-registry`.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/registries/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "DELETE",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Empty.fromJson(data));
+  }
+
+  /// Gets a device registry configuration.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the device registry. For example,
+  /// `projects/example-project/locations/us-central1/registries/my-registry`.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/registries/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [DeviceRegistry].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<DeviceRegistry> get(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new DeviceRegistry.fromJson(data));
+  }
+
+  /// Gets the access control policy for a resource.
+  /// Returns an empty policy if the resource exists and does not have a policy
+  /// set.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// requested.
+  /// See the operation documentation for the appropriate value for this field.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/registries/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Policy> getIamPolicy(
+      GetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (resource == null) {
+      throw new core.ArgumentError("Parameter resource is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' +
+        commons.Escaper.ecapeVariableReserved('$resource') +
+        ':getIamPolicy';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Policy.fromJson(data));
+  }
+
+  /// Lists device registries.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - The project and cloud region path. For example,
+  /// `projects/example-project/locations/us-central1`.
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+$".
+  ///
+  /// [pageSize] - The maximum number of registries to return in the response.
+  /// If this value
+  /// is zero, the service will select a default size. A call may return fewer
+  /// objects than requested, but if there is a non-empty `page_token`, it
+  /// indicates that more entries are available.
+  ///
+  /// [pageToken] - The value returned by the last
+  /// `ListDeviceRegistriesResponse`; indicates
+  /// that this is a continuation of a prior `ListDeviceRegistries` call, and
+  /// that the system should return the next page of data.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListDeviceRegistriesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListDeviceRegistriesResponse> list(core.String parent,
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        '/registries';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new ListDeviceRegistriesResponse.fromJson(data));
+  }
+
+  /// Updates a device registry configuration.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The resource path name. For example,
+  /// `projects/example-project/locations/us-central1/registries/my-registry`.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/registries/[^/]+$".
+  ///
+  /// [updateMask] - Only updates the `device_registry` fields indicated by this
+  /// mask.
+  /// The field mask must not be empty, and it must not contain fields that
+  /// are immutable or only set by the server.
+  /// Mutable top-level fields: `event_notification_config`, `mqtt_config`, and
+  /// `state_notification_config`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [DeviceRegistry].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<DeviceRegistry> patch(DeviceRegistry request, core.String name,
+      {core.String updateMask, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if (updateMask != null) {
+      _queryParams["updateMask"] = [updateMask];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "PATCH",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new DeviceRegistry.fromJson(data));
+  }
+
+  /// Sets the access control policy on the specified resource. Replaces any
+  /// existing policy.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// specified.
+  /// See the operation documentation for the appropriate value for this field.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/registries/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Policy> setIamPolicy(
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (resource == null) {
+      throw new core.ArgumentError("Parameter resource is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' +
+        commons.Escaper.ecapeVariableReserved('$resource') +
+        ':setIamPolicy';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Policy.fromJson(data));
+  }
+
+  /// Returns permissions that a caller has on the specified resource.
+  /// If the resource does not exist, this will return an empty set of
+  /// permissions, not a NOT_FOUND error.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy detail is being
+  /// requested.
+  /// See the operation documentation for the appropriate value for this field.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/registries/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [TestIamPermissionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<TestIamPermissionsResponse> testIamPermissions(
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (resource == null) {
+      throw new core.ArgumentError("Parameter resource is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' +
+        commons.Escaper.ecapeVariableReserved('$resource') +
+        ':testIamPermissions';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new TestIamPermissionsResponse.fromJson(data));
+  }
+}
+
+class ProjectsLocationsRegistriesDevicesResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsRegistriesDevicesConfigVersionsResourceApi
+      get configVersions =>
+          new ProjectsLocationsRegistriesDevicesConfigVersionsResourceApi(
+              _requester);
+  ProjectsLocationsRegistriesDevicesStatesResourceApi get states =>
+      new ProjectsLocationsRegistriesDevicesStatesResourceApi(_requester);
+
+  ProjectsLocationsRegistriesDevicesResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates a device in a device registry.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - The name of the device registry where this device should be
+  /// created.
+  /// For example,
+  /// `projects/example-project/locations/us-central1/registries/my-registry`.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/registries/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Device].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Device> create(Device request, core.String parent,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url =
+        'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/devices';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Device.fromJson(data));
+  }
+
+  /// Deletes a device.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the device. For example,
+  /// `projects/p0/locations/us-central1/registries/registry0/devices/device0`
+  /// or
+  /// `projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/registries/[^/]+/devices/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "DELETE",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Empty.fromJson(data));
+  }
+
+  /// Gets details about a device.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the device. For example,
+  /// `projects/p0/locations/us-central1/registries/registry0/devices/device0`
+  /// or
+  /// `projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/registries/[^/]+/devices/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Device].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Device> get(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Device.fromJson(data));
+  }
+
+  /// List devices in a device registry.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - The device registry path. Required. For example,
+  /// `projects/my-project/locations/us-central1/registries/my-registry`.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/registries/[^/]+$".
+  ///
+  /// [deviceNumIds] - A list of device numerical ids. If empty, it will ignore
+  /// this field. This
+  /// field cannot hold more than 10,000 entries.
+  ///
+  /// [pageToken] - The value returned by the last `ListDevicesResponse`;
+  /// indicates
+  /// that this is a continuation of a prior `ListDevices` call, and
+  /// that the system should return the next page of data.
+  ///
+  /// [fieldMask] - The fields of the `Device` resource to be returned in the
+  /// response. The
+  /// fields `id`, and `num_id` are always returned by default, along with any
+  /// other fields specified.
+  ///
+  /// [pageSize] - The maximum number of devices to return in the response. If
+  /// this value
+  /// is zero, the service will select a default size. A call may return fewer
+  /// objects than requested, but if there is a non-empty `page_token`, it
+  /// indicates that more entries are available.
+  ///
+  /// [deviceIds] - A list of device string identifiers. If empty, it will
+  /// ignore this field.
+  /// For example, `['device0', 'device12']`. This field cannot hold more than
+  /// 10,000 entries.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListDevicesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListDevicesResponse> list(core.String parent,
+      {core.List<core.String> deviceNumIds,
+      core.String pageToken,
+      core.String fieldMask,
+      core.int pageSize,
+      core.List<core.String> deviceIds,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if (deviceNumIds != null) {
+      _queryParams["deviceNumIds"] = deviceNumIds;
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (fieldMask != null) {
+      _queryParams["fieldMask"] = [fieldMask];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (deviceIds != null) {
+      _queryParams["deviceIds"] = deviceIds;
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url =
+        'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/devices';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new ListDevicesResponse.fromJson(data));
+  }
+
+  /// Modifies the configuration for the device, which is eventually sent from
+  /// the Cloud IoT Core servers. Returns the modified configuration version and
+  /// its metadata.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the device. For example,
+  /// `projects/p0/locations/us-central1/registries/registry0/devices/device0`
+  /// or
+  /// `projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/registries/[^/]+/devices/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [DeviceConfig].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<DeviceConfig> modifyCloudToDeviceConfig(
+      ModifyCloudToDeviceConfigRequest request, core.String name,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' +
+        commons.Escaper.ecapeVariableReserved('$name') +
+        ':modifyCloudToDeviceConfig';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new DeviceConfig.fromJson(data));
+  }
+
+  /// Updates a device.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The resource path name. For example,
+  /// `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
+  /// `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
+  /// When `name` is populated as a response from the service, it always ends
+  /// in the device numeric ID.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/registries/[^/]+/devices/[^/]+$".
+  ///
+  /// [updateMask] - Only updates the `device` fields indicated by this mask.
+  /// The field mask must not be empty, and it must not contain fields that
+  /// are immutable or only set by the server.
+  /// Mutable top-level fields: `credentials`, `enabled_state`, and `metadata`
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Device].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Device> patch(Device request, core.String name,
+      {core.String updateMask, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if (updateMask != null) {
+      _queryParams["updateMask"] = [updateMask];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "PATCH",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Device.fromJson(data));
+  }
+}
+
+class ProjectsLocationsRegistriesDevicesConfigVersionsResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsRegistriesDevicesConfigVersionsResourceApi(
+      commons.ApiRequester client)
+      : _requester = client;
+
+  /// Lists the last few versions of the device configuration in descending
+  /// order (i.e.: newest first).
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the device. For example,
+  /// `projects/p0/locations/us-central1/registries/registry0/devices/device0`
+  /// or
+  /// `projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/registries/[^/]+/devices/[^/]+$".
+  ///
+  /// [numVersions] - The number of versions to list. Versions are listed in
+  /// decreasing order of
+  /// the version number. The maximum number of versions retained is 10. If this
+  /// value is zero, it will return all the versions available.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListDeviceConfigVersionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListDeviceConfigVersionsResponse> list(core.String name,
+      {core.int numVersions, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if (numVersions != null) {
+      _queryParams["numVersions"] = ["${numVersions}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' +
+        commons.Escaper.ecapeVariableReserved('$name') +
+        '/configVersions';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new ListDeviceConfigVersionsResponse.fromJson(data));
+  }
+}
+
+class ProjectsLocationsRegistriesDevicesStatesResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsRegistriesDevicesStatesResourceApi(
+      commons.ApiRequester client)
+      : _requester = client;
+
+  /// Lists the last few versions of the device state in descending order (i.e.:
+  /// newest first).
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the device. For example,
+  /// `projects/p0/locations/us-central1/registries/registry0/devices/device0`
+  /// or
+  /// `projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`.
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/registries/[^/]+/devices/[^/]+$".
+  ///
+  /// [numStates] - The number of states to list. States are listed in
+  /// descending order of
+  /// update time. The maximum number of states retained is 10. If this
+  /// value is zero, it will return all the states available.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListDeviceStatesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListDeviceStatesResponse> list(core.String name,
+      {core.int numStates, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if (numStates != null) {
+      _queryParams["numStates"] = ["${numStates}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + '/states';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new ListDeviceStatesResponse.fromJson(data));
+  }
+}
+
+/// Specifies the audit configuration for a service.
+/// The configuration determines which permission types are logged, and what
+/// identities, if any, are exempted from logging.
+/// An AuditConfig must have one or more AuditLogConfigs.
+///
+/// If there are AuditConfigs for both `allServices` and a specific service,
+/// the union of the two AuditConfigs is used for that service: the log_types
+/// specified in each AuditConfig are enabled, and the exempted_members in each
+/// AuditConfig are exempted.
+///
+/// Example Policy with multiple AuditConfigs:
+///
+///     {
+///       "audit_configs": [
+///         {
+///           "service": "allServices"
+///           "audit_log_configs": [
+///             {
+///               "log_type": "DATA_READ",
+///               "exempted_members": [
+///                 "user:foo@gmail.com"
+///               ]
+///             },
+///             {
+///               "log_type": "DATA_WRITE",
+///             },
+///             {
+///               "log_type": "ADMIN_READ",
+///             }
+///           ]
+///         },
+///         {
+///           "service": "fooservice.googleapis.com"
+///           "audit_log_configs": [
+///             {
+///               "log_type": "DATA_READ",
+///             },
+///             {
+///               "log_type": "DATA_WRITE",
+///               "exempted_members": [
+///                 "user:bar@gmail.com"
+///               ]
+///             }
+///           ]
+///         }
+///       ]
+///     }
+///
+/// For fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ
+/// logging. It also exempts foo@gmail.com from DATA_READ logging, and
+/// bar@gmail.com from DATA_WRITE logging.
+class AuditConfig {
+  /// The configuration for logging of each type of permission.
+  /// Next ID: 4
+  core.List<AuditLogConfig> auditLogConfigs;
+  core.List<core.String> exemptedMembers;
+
+  /// Specifies a service that will be enabled for audit logging.
+  /// For example, `storage.googleapis.com`, `cloudsql.googleapis.com`.
+  /// `allServices` is a special value that covers all services.
+  core.String service;
+
+  AuditConfig();
+
+  AuditConfig.fromJson(core.Map _json) {
+    if (_json.containsKey("auditLogConfigs")) {
+      auditLogConfigs = _json["auditLogConfigs"]
+          .map((value) => new AuditLogConfig.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("exemptedMembers")) {
+      exemptedMembers = _json["exemptedMembers"];
+    }
+    if (_json.containsKey("service")) {
+      service = _json["service"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (auditLogConfigs != null) {
+      _json["auditLogConfigs"] =
+          auditLogConfigs.map((value) => (value).toJson()).toList();
+    }
+    if (exemptedMembers != null) {
+      _json["exemptedMembers"] = exemptedMembers;
+    }
+    if (service != null) {
+      _json["service"] = service;
+    }
+    return _json;
+  }
+}
+
+/// Provides the configuration for logging a type of permissions.
+/// Example:
+///
+///     {
+///       "audit_log_configs": [
+///         {
+///           "log_type": "DATA_READ",
+///           "exempted_members": [
+///             "user:foo@gmail.com"
+///           ]
+///         },
+///         {
+///           "log_type": "DATA_WRITE",
+///         }
+///       ]
+///     }
+///
+/// This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting
+/// foo@gmail.com from DATA_READ logging.
+class AuditLogConfig {
+  /// Specifies the identities that do not cause logging for this type of
+  /// permission.
+  /// Follows the same format of Binding.members.
+  core.List<core.String> exemptedMembers;
+
+  /// The log type that this config enables.
+  /// Possible string values are:
+  /// - "LOG_TYPE_UNSPECIFIED" : Default case. Should never be this.
+  /// - "ADMIN_READ" : Admin reads. Example: CloudIAM getIamPolicy
+  /// - "DATA_WRITE" : Data writes. Example: CloudSQL Users create
+  /// - "DATA_READ" : Data reads. Example: CloudSQL Users list
+  core.String logType;
+
+  AuditLogConfig();
+
+  AuditLogConfig.fromJson(core.Map _json) {
+    if (_json.containsKey("exemptedMembers")) {
+      exemptedMembers = _json["exemptedMembers"];
+    }
+    if (_json.containsKey("logType")) {
+      logType = _json["logType"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (exemptedMembers != null) {
+      _json["exemptedMembers"] = exemptedMembers;
+    }
+    if (logType != null) {
+      _json["logType"] = logType;
+    }
+    return _json;
+  }
+}
+
+/// Associates `members` with a `role`.
+class Binding {
+  /// The condition that is associated with this binding.
+  /// NOTE: an unsatisfied condition will not allow user access via current
+  /// binding. Different bindings, including their conditions, are examined
+  /// independently.
+  /// This field is GOOGLE_INTERNAL.
+  Expr condition;
+
+  /// Specifies the identities requesting access for a Cloud Platform resource.
+  /// `members` can have the following values:
+  ///
+  /// * `allUsers`: A special identifier that represents anyone who is
+  ///    on the internet; with or without a Google account.
+  ///
+  /// * `allAuthenticatedUsers`: A special identifier that represents anyone
+  ///    who is authenticated with a Google account or a service account.
+  ///
+  /// * `user:{emailid}`: An email address that represents a specific Google
+  ///    account. For example, `alice@gmail.com` or `joe@example.com`.
+  ///
+  ///
+  /// * `serviceAccount:{emailid}`: An email address that represents a service
+  ///    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+  ///
+  /// * `group:{emailid}`: An email address that represents a Google group.
+  ///    For example, `admins@example.com`.
+  ///
+  ///
+  /// * `domain:{domain}`: A Google Apps domain name that represents all the
+  ///    users of that domain. For example, `google.com` or `example.com`.
+  core.List<core.String> members;
+
+  /// Role that is assigned to `members`.
+  /// For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+  /// Required
+  core.String role;
+
+  Binding();
+
+  Binding.fromJson(core.Map _json) {
+    if (_json.containsKey("condition")) {
+      condition = new Expr.fromJson(_json["condition"]);
+    }
+    if (_json.containsKey("members")) {
+      members = _json["members"];
+    }
+    if (_json.containsKey("role")) {
+      role = _json["role"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (condition != null) {
+      _json["condition"] = (condition).toJson();
+    }
+    if (members != null) {
+      _json["members"] = members;
+    }
+    if (role != null) {
+      _json["role"] = role;
+    }
+    return _json;
+  }
+}
+
+/// The device resource.
+class Device {
+  /// If a device is blocked, connections or requests from this device will
+  /// fail.
+  /// Can be used to temporarily prevent the device from connecting if, for
+  /// example, the sensor is generating bad data and needs maintenance.
+  core.bool blocked;
+
+  /// The most recent device configuration, which is eventually sent from
+  /// Cloud IoT Core to the device. If not present on creation, the
+  /// configuration will be initialized with an empty payload and version value
+  /// of `1`. To update this field after creation, use the
+  /// `DeviceManager.ModifyCloudToDeviceConfig` method.
+  DeviceConfig config;
+
+  /// The credentials used to authenticate this device. To allow credential
+  /// rotation without interruption, multiple device credentials can be bound to
+  /// this device. No more than 3 credentials can be bound to a single device at
+  /// a time. When new credentials are added to a device, they are verified
+  /// against the registry credentials. For details, see the description of the
+  /// `DeviceRegistry.credentials` field.
+  core.List<DeviceCredential> credentials;
+
+  /// The user-defined device identifier. The device ID must be unique
+  /// within a device registry.
+  core.String id;
+
+  /// [Output only] The last time a cloud-to-device config version
+  /// acknowledgment
+  /// was received from the device. This field is only for configurations
+  /// sent through MQTT.
+  core.String lastConfigAckTime;
+
+  /// [Output only] The last time a cloud-to-device config version was sent to
+  /// the device.
+  core.String lastConfigSendTime;
+
+  /// [Output only] The error message of the most recent error, such as a
+  /// failure
+  /// to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
+  /// field. If no errors have occurred, this field has an empty message
+  /// and the status code 0 == OK. Otherwise, this field is expected to have a
+  /// status code other than OK.
+  Status lastErrorStatus;
+
+  /// [Output only] The time the most recent error occurred, such as a failure
+  /// to
+  /// publish to Cloud Pub/Sub. This field is the timestamp of
+  /// 'last_error_status'.
+  core.String lastErrorTime;
+
+  /// [Output only] The last time a telemetry event was received. Timestamps are
+  /// periodically collected and written to storage; they may be stale by a few
+  /// minutes.
+  core.String lastEventTime;
+
+  /// [Output only] The last time a heartbeat was received. Timestamps are
+  /// periodically collected and written to storage; they may be stale by a few
+  /// minutes. This field is only for devices connecting through MQTT.
+  core.String lastHeartbeatTime;
+
+  /// [Output only] The last time a state event was received. Timestamps are
+  /// periodically collected and written to storage; they may be stale by a few
+  /// minutes.
+  core.String lastStateTime;
+
+  /// The metadata key-value pairs assigned to the device. This metadata is not
+  /// interpreted or indexed by Cloud IoT Core. It can be used to add contextual
+  /// information for the device.
+  ///
+  /// Keys must conform to the regular expression [a-zA-Z0-9-_]+ and be less
+  /// than
+  /// 128 bytes in length.
+  ///
+  /// Values are free-form strings. Each value must be less than or equal to 32
+  /// KB in size.
+  ///
+  /// The total size of all keys and values must be less than 256 KB, and the
+  /// maximum number of key-value pairs is 500.
+  core.Map<core.String, core.String> metadata;
+
+  /// The resource path name. For example,
+  /// `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
+  /// `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
+  /// When `name` is populated as a response from the service, it always ends
+  /// in the device numeric ID.
+  core.String name;
+
+  /// [Output only] A server-defined unique numeric ID for the device. This is a
+  /// more compact way to identify devices, and it is globally unique.
+  core.String numId;
+
+  /// [Output only] The state most recently received from the device. If no
+  /// state
+  /// has been reported, this field is not present.
+  DeviceState state;
+
+  Device();
+
+  Device.fromJson(core.Map _json) {
+    if (_json.containsKey("blocked")) {
+      blocked = _json["blocked"];
+    }
+    if (_json.containsKey("config")) {
+      config = new DeviceConfig.fromJson(_json["config"]);
+    }
+    if (_json.containsKey("credentials")) {
+      credentials = _json["credentials"]
+          .map((value) => new DeviceCredential.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("lastConfigAckTime")) {
+      lastConfigAckTime = _json["lastConfigAckTime"];
+    }
+    if (_json.containsKey("lastConfigSendTime")) {
+      lastConfigSendTime = _json["lastConfigSendTime"];
+    }
+    if (_json.containsKey("lastErrorStatus")) {
+      lastErrorStatus = new Status.fromJson(_json["lastErrorStatus"]);
+    }
+    if (_json.containsKey("lastErrorTime")) {
+      lastErrorTime = _json["lastErrorTime"];
+    }
+    if (_json.containsKey("lastEventTime")) {
+      lastEventTime = _json["lastEventTime"];
+    }
+    if (_json.containsKey("lastHeartbeatTime")) {
+      lastHeartbeatTime = _json["lastHeartbeatTime"];
+    }
+    if (_json.containsKey("lastStateTime")) {
+      lastStateTime = _json["lastStateTime"];
+    }
+    if (_json.containsKey("metadata")) {
+      metadata = _json["metadata"];
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("numId")) {
+      numId = _json["numId"];
+    }
+    if (_json.containsKey("state")) {
+      state = new DeviceState.fromJson(_json["state"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (blocked != null) {
+      _json["blocked"] = blocked;
+    }
+    if (config != null) {
+      _json["config"] = (config).toJson();
+    }
+    if (credentials != null) {
+      _json["credentials"] =
+          credentials.map((value) => (value).toJson()).toList();
+    }
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (lastConfigAckTime != null) {
+      _json["lastConfigAckTime"] = lastConfigAckTime;
+    }
+    if (lastConfigSendTime != null) {
+      _json["lastConfigSendTime"] = lastConfigSendTime;
+    }
+    if (lastErrorStatus != null) {
+      _json["lastErrorStatus"] = (lastErrorStatus).toJson();
+    }
+    if (lastErrorTime != null) {
+      _json["lastErrorTime"] = lastErrorTime;
+    }
+    if (lastEventTime != null) {
+      _json["lastEventTime"] = lastEventTime;
+    }
+    if (lastHeartbeatTime != null) {
+      _json["lastHeartbeatTime"] = lastHeartbeatTime;
+    }
+    if (lastStateTime != null) {
+      _json["lastStateTime"] = lastStateTime;
+    }
+    if (metadata != null) {
+      _json["metadata"] = metadata;
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (numId != null) {
+      _json["numId"] = numId;
+    }
+    if (state != null) {
+      _json["state"] = (state).toJson();
+    }
+    return _json;
+  }
+}
+
+/// The device configuration. Eventually delivered to devices.
+class DeviceConfig {
+  /// The device configuration data.
+  core.String binaryData;
+  core.List<core.int> get binaryDataAsBytes {
+    return convert.BASE64.decode(binaryData);
+  }
+
+  void set binaryDataAsBytes(core.List<core.int> _bytes) {
+    binaryData =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  /// [Output only] The time at which this configuration version was updated in
+  /// Cloud IoT Core. This timestamp is set by the server.
+  core.String cloudUpdateTime;
+
+  /// [Output only] The time at which Cloud IoT Core received the
+  /// acknowledgment from the device, indicating that the device has received
+  /// this configuration version. If this field is not present, the device has
+  /// not yet acknowledged that it received this version. Note that when
+  /// the config was sent to the device, many config versions may have been
+  /// available in Cloud IoT Core while the device was disconnected, and on
+  /// connection, only the latest version is sent to the device. Some
+  /// versions may never be sent to the device, and therefore are never
+  /// acknowledged. This timestamp is set by Cloud IoT Core.
+  core.String deviceAckTime;
+
+  /// [Output only] The version of this update. The version number is assigned
+  /// by
+  /// the server, and is always greater than 0 after device creation. The
+  /// version must be 0 on the `CreateDevice` request if a `config` is
+  /// specified; the response of `CreateDevice` will always have a value of 1.
+  core.String version;
+
+  DeviceConfig();
+
+  DeviceConfig.fromJson(core.Map _json) {
+    if (_json.containsKey("binaryData")) {
+      binaryData = _json["binaryData"];
+    }
+    if (_json.containsKey("cloudUpdateTime")) {
+      cloudUpdateTime = _json["cloudUpdateTime"];
+    }
+    if (_json.containsKey("deviceAckTime")) {
+      deviceAckTime = _json["deviceAckTime"];
+    }
+    if (_json.containsKey("version")) {
+      version = _json["version"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (binaryData != null) {
+      _json["binaryData"] = binaryData;
+    }
+    if (cloudUpdateTime != null) {
+      _json["cloudUpdateTime"] = cloudUpdateTime;
+    }
+    if (deviceAckTime != null) {
+      _json["deviceAckTime"] = deviceAckTime;
+    }
+    if (version != null) {
+      _json["version"] = version;
+    }
+    return _json;
+  }
+}
+
+/// A server-stored device credential used for authentication.
+class DeviceCredential {
+  /// [Optional] The time at which this credential becomes invalid. This
+  /// credential will be ignored for new client authentication requests after
+  /// this timestamp; however, it will not be automatically deleted.
+  core.String expirationTime;
+
+  /// A public key used to verify the signature of JSON Web Tokens (JWTs).
+  /// When adding a new device credential, either via device creation or via
+  /// modifications, this public key credential may be required to be signed by
+  /// one of the registry level certificates. More specifically, if the
+  /// registry contains at least one certificate, any new device credential
+  /// must be signed by one of the registry certificates. As a result,
+  /// when the registry contains certificates, only X.509 certificates are
+  /// accepted as device credentials. However, if the registry does
+  /// not contain a certificate, self-signed certificates and public keys will
+  /// be accepted. New device credentials must be different from every
+  /// registry-level certificate.
+  PublicKeyCredential publicKey;
+
+  DeviceCredential();
+
+  DeviceCredential.fromJson(core.Map _json) {
+    if (_json.containsKey("expirationTime")) {
+      expirationTime = _json["expirationTime"];
+    }
+    if (_json.containsKey("publicKey")) {
+      publicKey = new PublicKeyCredential.fromJson(_json["publicKey"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (expirationTime != null) {
+      _json["expirationTime"] = expirationTime;
+    }
+    if (publicKey != null) {
+      _json["publicKey"] = (publicKey).toJson();
+    }
+    return _json;
+  }
+}
+
+/// A container for a group of devices.
+class DeviceRegistry {
+  /// The credentials used to verify the device credentials. No more than 10
+  /// credentials can be bound to a single registry at a time. The verification
+  /// process occurs at the time of device creation or update. If this field is
+  /// empty, no verification is performed. Otherwise, the credentials of a newly
+  /// created device or added credentials of an updated device should be signed
+  /// with one of these registry credentials.
+  ///
+  /// Note, however, that existing devices will never be affected by
+  /// modifications to this list of credentials: after a device has been
+  /// successfully created in a registry, it should be able to connect even if
+  /// its registry credentials are revoked, deleted, or modified.
+  core.List<RegistryCredential> credentials;
+
+  /// The configuration for notification of telemetry events received from the
+  /// device. All telemetry events that were successfully published by the
+  /// device and acknowledged by Cloud IoT Core are guaranteed to be
+  /// delivered to Cloud Pub/Sub. Only the first configuration is used.
+  core.List<EventNotificationConfig> eventNotificationConfigs;
+
+  /// The DeviceService (HTTP) configuration for this device registry.
+  HttpConfig httpConfig;
+
+  /// The identifier of this device registry. For example, `myRegistry`.
+  core.String id;
+
+  /// The MQTT configuration for this device registry.
+  MqttConfig mqttConfig;
+
+  /// The resource path name. For example,
+  /// `projects/example-project/locations/us-central1/registries/my-registry`.
+  core.String name;
+
+  /// The configuration for notification of new states received from the device.
+  /// State updates are guaranteed to be stored in the state history, but
+  /// notifications to Cloud Pub/Sub are not guaranteed. For example, if
+  /// permissions are misconfigured or the specified topic doesn't exist, no
+  /// notification will be published but the state will still be stored in Cloud
+  /// IoT Core.
+  StateNotificationConfig stateNotificationConfig;
+
+  DeviceRegistry();
+
+  DeviceRegistry.fromJson(core.Map _json) {
+    if (_json.containsKey("credentials")) {
+      credentials = _json["credentials"]
+          .map((value) => new RegistryCredential.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("eventNotificationConfigs")) {
+      eventNotificationConfigs = _json["eventNotificationConfigs"]
+          .map((value) => new EventNotificationConfig.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("httpConfig")) {
+      httpConfig = new HttpConfig.fromJson(_json["httpConfig"]);
+    }
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("mqttConfig")) {
+      mqttConfig = new MqttConfig.fromJson(_json["mqttConfig"]);
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("stateNotificationConfig")) {
+      stateNotificationConfig = new StateNotificationConfig.fromJson(
+          _json["stateNotificationConfig"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (credentials != null) {
+      _json["credentials"] =
+          credentials.map((value) => (value).toJson()).toList();
+    }
+    if (eventNotificationConfigs != null) {
+      _json["eventNotificationConfigs"] =
+          eventNotificationConfigs.map((value) => (value).toJson()).toList();
+    }
+    if (httpConfig != null) {
+      _json["httpConfig"] = (httpConfig).toJson();
+    }
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (mqttConfig != null) {
+      _json["mqttConfig"] = (mqttConfig).toJson();
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (stateNotificationConfig != null) {
+      _json["stateNotificationConfig"] = (stateNotificationConfig).toJson();
+    }
+    return _json;
+  }
+}
+
+/// The device state, as reported by the device.
+class DeviceState {
+  /// The device state data.
+  core.String binaryData;
+  core.List<core.int> get binaryDataAsBytes {
+    return convert.BASE64.decode(binaryData);
+  }
+
+  void set binaryDataAsBytes(core.List<core.int> _bytes) {
+    binaryData =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  /// [Output only] The time at which this state version was updated in Cloud
+  /// IoT Core.
+  core.String updateTime;
+
+  DeviceState();
+
+  DeviceState.fromJson(core.Map _json) {
+    if (_json.containsKey("binaryData")) {
+      binaryData = _json["binaryData"];
+    }
+    if (_json.containsKey("updateTime")) {
+      updateTime = _json["updateTime"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (binaryData != null) {
+      _json["binaryData"] = binaryData;
+    }
+    if (updateTime != null) {
+      _json["updateTime"] = updateTime;
+    }
+    return _json;
+  }
+}
+
+/// A generic empty message that you can re-use to avoid defining duplicated
+/// empty messages in your APIs. A typical example is to use it as the request
+/// or the response type of an API method. For instance:
+///
+///     service Foo {
+///       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
+///     }
+///
+/// The JSON representation for `Empty` is empty JSON object `{}`.
+class Empty {
+  Empty();
+
+  Empty.fromJson(core.Map _json) {}
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    return _json;
+  }
+}
+
+/// The configuration to forward telemetry events.
+class EventNotificationConfig {
+  /// A Cloud Pub/Sub topic name. For example,
+  /// `projects/myProject/topics/deviceEvents`.
+  core.String pubsubTopicName;
+
+  EventNotificationConfig();
+
+  EventNotificationConfig.fromJson(core.Map _json) {
+    if (_json.containsKey("pubsubTopicName")) {
+      pubsubTopicName = _json["pubsubTopicName"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (pubsubTopicName != null) {
+      _json["pubsubTopicName"] = pubsubTopicName;
+    }
+    return _json;
+  }
+}
+
+/// Represents an expression text. Example:
+///
+///     title: "User account presence"
+///     description: "Determines whether the request has a user account"
+///     expression: "size(request.user) > 0"
+class Expr {
+  /// An optional description of the expression. This is a longer text which
+  /// describes the expression, e.g. when hovered over it in a UI.
+  core.String description;
+
+  /// Textual representation of an expression in
+  /// Common Expression Language syntax.
+  ///
+  /// The application context of the containing message determines which
+  /// well-known feature set of CEL is supported.
+  core.String expression;
+
+  /// An optional string indicating the location of the expression for error
+  /// reporting, e.g. a file name and a position in the file.
+  core.String location;
+
+  /// An optional title for the expression, i.e. a short string describing
+  /// its purpose. This can be used e.g. in UIs which allow to enter the
+  /// expression.
+  core.String title;
+
+  Expr();
+
+  Expr.fromJson(core.Map _json) {
+    if (_json.containsKey("description")) {
+      description = _json["description"];
+    }
+    if (_json.containsKey("expression")) {
+      expression = _json["expression"];
+    }
+    if (_json.containsKey("location")) {
+      location = _json["location"];
+    }
+    if (_json.containsKey("title")) {
+      title = _json["title"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (description != null) {
+      _json["description"] = description;
+    }
+    if (expression != null) {
+      _json["expression"] = expression;
+    }
+    if (location != null) {
+      _json["location"] = location;
+    }
+    if (title != null) {
+      _json["title"] = title;
+    }
+    return _json;
+  }
+}
+
+/// Request message for `GetIamPolicy` method.
+class GetIamPolicyRequest {
+  GetIamPolicyRequest();
+
+  GetIamPolicyRequest.fromJson(core.Map _json) {}
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    return _json;
+  }
+}
+
+/// The configuration of the HTTP bridge for a device registry.
+class HttpConfig {
+  /// If enabled, allows devices to use DeviceService via the HTTP protocol.
+  /// Otherwise, any requests to DeviceService will fail for this registry.
+  /// Possible string values are:
+  /// - "HTTP_STATE_UNSPECIFIED" : No HTTP state specified. If not specified,
+  /// DeviceService will be
+  /// enabled by default.
+  /// - "HTTP_ENABLED" : Enables DeviceService (HTTP) service for the registry.
+  /// - "HTTP_DISABLED" : Disables DeviceService (HTTP) service for the
+  /// registry.
+  core.String httpEnabledState;
+
+  HttpConfig();
+
+  HttpConfig.fromJson(core.Map _json) {
+    if (_json.containsKey("httpEnabledState")) {
+      httpEnabledState = _json["httpEnabledState"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (httpEnabledState != null) {
+      _json["httpEnabledState"] = httpEnabledState;
+    }
+    return _json;
+  }
+}
+
+/// Response for `ListDeviceConfigVersions`.
+class ListDeviceConfigVersionsResponse {
+  /// The device configuration for the last few versions. Versions are listed
+  /// in decreasing order, starting from the most recent one.
+  core.List<DeviceConfig> deviceConfigs;
+
+  ListDeviceConfigVersionsResponse();
+
+  ListDeviceConfigVersionsResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("deviceConfigs")) {
+      deviceConfigs = _json["deviceConfigs"]
+          .map((value) => new DeviceConfig.fromJson(value))
+          .toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (deviceConfigs != null) {
+      _json["deviceConfigs"] =
+          deviceConfigs.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// Response for `ListDeviceRegistries`.
+class ListDeviceRegistriesResponse {
+  /// The registries that matched the query.
+  core.List<DeviceRegistry> deviceRegistries;
+
+  /// If not empty, indicates that there may be more registries that match the
+  /// request; this value should be passed in a new
+  /// `ListDeviceRegistriesRequest`.
+  core.String nextPageToken;
+
+  ListDeviceRegistriesResponse();
+
+  ListDeviceRegistriesResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("deviceRegistries")) {
+      deviceRegistries = _json["deviceRegistries"]
+          .map((value) => new DeviceRegistry.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (deviceRegistries != null) {
+      _json["deviceRegistries"] =
+          deviceRegistries.map((value) => (value).toJson()).toList();
+    }
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    return _json;
+  }
+}
+
+/// Response for `ListDeviceStates`.
+class ListDeviceStatesResponse {
+  /// The last few device states. States are listed in descending order of
+  /// server
+  /// update time, starting from the most recent one.
+  core.List<DeviceState> deviceStates;
+
+  ListDeviceStatesResponse();
+
+  ListDeviceStatesResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("deviceStates")) {
+      deviceStates = _json["deviceStates"]
+          .map((value) => new DeviceState.fromJson(value))
+          .toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (deviceStates != null) {
+      _json["deviceStates"] =
+          deviceStates.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// Response for `ListDevices`.
+class ListDevicesResponse {
+  /// The devices that match the request.
+  core.List<Device> devices;
+
+  /// If not empty, indicates that there may be more devices that match the
+  /// request; this value should be passed in a new `ListDevicesRequest`.
+  core.String nextPageToken;
+
+  ListDevicesResponse();
+
+  ListDevicesResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("devices")) {
+      devices =
+          _json["devices"].map((value) => new Device.fromJson(value)).toList();
+    }
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (devices != null) {
+      _json["devices"] = devices.map((value) => (value).toJson()).toList();
+    }
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    return _json;
+  }
+}
+
+/// Request for `ModifyCloudToDeviceConfig`.
+class ModifyCloudToDeviceConfigRequest {
+  /// The configuration data for the device.
+  core.String binaryData;
+  core.List<core.int> get binaryDataAsBytes {
+    return convert.BASE64.decode(binaryData);
+  }
+
+  void set binaryDataAsBytes(core.List<core.int> _bytes) {
+    binaryData =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  /// The version number to update. If this value is zero, it will not check the
+  /// version number of the server and will always update the current version;
+  /// otherwise, this update will fail if the version number found on the server
+  /// does not match this version number. This is used to support multiple
+  /// simultaneous updates without losing data.
+  core.String versionToUpdate;
+
+  ModifyCloudToDeviceConfigRequest();
+
+  ModifyCloudToDeviceConfigRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("binaryData")) {
+      binaryData = _json["binaryData"];
+    }
+    if (_json.containsKey("versionToUpdate")) {
+      versionToUpdate = _json["versionToUpdate"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (binaryData != null) {
+      _json["binaryData"] = binaryData;
+    }
+    if (versionToUpdate != null) {
+      _json["versionToUpdate"] = versionToUpdate;
+    }
+    return _json;
+  }
+}
+
+/// The configuration of MQTT for a device registry.
+class MqttConfig {
+  /// If enabled, allows connections using the MQTT protocol. Otherwise, MQTT
+  /// connections to this registry will fail.
+  /// Possible string values are:
+  /// - "MQTT_STATE_UNSPECIFIED" : No MQTT state specified. If not specified,
+  /// MQTT will be enabled by default.
+  /// - "MQTT_ENABLED" : Enables a MQTT connection.
+  /// - "MQTT_DISABLED" : Disables a MQTT connection.
+  core.String mqttEnabledState;
+
+  MqttConfig();
+
+  MqttConfig.fromJson(core.Map _json) {
+    if (_json.containsKey("mqttEnabledState")) {
+      mqttEnabledState = _json["mqttEnabledState"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (mqttEnabledState != null) {
+      _json["mqttEnabledState"] = mqttEnabledState;
+    }
+    return _json;
+  }
+}
+
+/// Defines an Identity and Access Management (IAM) policy. It is used to
+/// specify access control policies for Cloud Platform resources.
+///
+///
+/// A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+/// `members` to a `role`, where the members can be user accounts, Google
+/// groups,
+/// Google domains, and service accounts. A `role` is a named list of
+/// permissions
+/// defined by IAM.
+///
+/// **Example**
+///
+///     {
+///       "bindings": [
+///         {
+///           "role": "roles/owner",
+///           "members": [
+///             "user:mike@example.com",
+///             "group:admins@example.com",
+///             "domain:google.com",
+///             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+///           ]
+///         },
+///         {
+///           "role": "roles/viewer",
+///           "members": ["user:sean@example.com"]
+///         }
+///       ]
+///     }
+///
+/// For a description of IAM and its features, see the
+/// [IAM developer's guide](https://cloud.google.com/iam).
+class Policy {
+  /// Specifies cloud audit logging configuration for this policy.
+  core.List<AuditConfig> auditConfigs;
+
+  /// Associates a list of `members` to a `role`.
+  /// `bindings` with no members will result in an error.
+  core.List<Binding> bindings;
+
+  /// `etag` is used for optimistic concurrency control as a way to help
+  /// prevent simultaneous updates of a policy from overwriting each other.
+  /// It is strongly suggested that systems make use of the `etag` in the
+  /// read-modify-write cycle to perform policy updates in order to avoid race
+  /// conditions: An `etag` is returned in the response to `getIamPolicy`, and
+  /// systems are expected to put that etag in the request to `setIamPolicy` to
+  /// ensure that their change will be applied to the same version of the
+  /// policy.
+  ///
+  /// If no `etag` is provided in the call to `setIamPolicy`, then the existing
+  /// policy is overwritten blindly.
+  core.String etag;
+  core.List<core.int> get etagAsBytes {
+    return convert.BASE64.decode(etag);
+  }
+
+  void set etagAsBytes(core.List<core.int> _bytes) {
+    etag =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  core.bool iamOwned;
+
+  /// Version of the `Policy`. The default version is 0.
+  core.int version;
+
+  Policy();
+
+  Policy.fromJson(core.Map _json) {
+    if (_json.containsKey("auditConfigs")) {
+      auditConfigs = _json["auditConfigs"]
+          .map((value) => new AuditConfig.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("bindings")) {
+      bindings = _json["bindings"]
+          .map((value) => new Binding.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("etag")) {
+      etag = _json["etag"];
+    }
+    if (_json.containsKey("iamOwned")) {
+      iamOwned = _json["iamOwned"];
+    }
+    if (_json.containsKey("version")) {
+      version = _json["version"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (auditConfigs != null) {
+      _json["auditConfigs"] =
+          auditConfigs.map((value) => (value).toJson()).toList();
+    }
+    if (bindings != null) {
+      _json["bindings"] = bindings.map((value) => (value).toJson()).toList();
+    }
+    if (etag != null) {
+      _json["etag"] = etag;
+    }
+    if (iamOwned != null) {
+      _json["iamOwned"] = iamOwned;
+    }
+    if (version != null) {
+      _json["version"] = version;
+    }
+    return _json;
+  }
+}
+
+/// A public key certificate format and data.
+class PublicKeyCertificate {
+  /// The certificate data.
+  core.String certificate;
+
+  /// The certificate format.
+  /// Possible string values are:
+  /// - "UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT" : The format has not been
+  /// specified. This is an invalid default value and
+  /// must not be used.
+  /// - "X509_CERTIFICATE_PEM" : An X.509v3 certificate
+  /// ([RFC5280](https://www.ietf.org/rfc/rfc5280.txt)),
+  /// encoded in base64, and wrapped by `-----BEGIN CERTIFICATE-----` and
+  /// `-----END CERTIFICATE-----`.
+  core.String format;
+
+  /// [Output only] The certificate details. Used only for X.509 certificates.
+  X509CertificateDetails x509Details;
+
+  PublicKeyCertificate();
+
+  PublicKeyCertificate.fromJson(core.Map _json) {
+    if (_json.containsKey("certificate")) {
+      certificate = _json["certificate"];
+    }
+    if (_json.containsKey("format")) {
+      format = _json["format"];
+    }
+    if (_json.containsKey("x509Details")) {
+      x509Details = new X509CertificateDetails.fromJson(_json["x509Details"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (certificate != null) {
+      _json["certificate"] = certificate;
+    }
+    if (format != null) {
+      _json["format"] = format;
+    }
+    if (x509Details != null) {
+      _json["x509Details"] = (x509Details).toJson();
+    }
+    return _json;
+  }
+}
+
+/// A public key format and data.
+class PublicKeyCredential {
+  /// The format of the key.
+  /// Possible string values are:
+  /// - "UNSPECIFIED_PUBLIC_KEY_FORMAT" : The format has not been specified.
+  /// This is an invalid default value and
+  /// must not be used.
+  /// - "RSA_PEM" : An RSA public key encoded in base64, and wrapped by
+  /// `-----BEGIN PUBLIC KEY-----` and `-----END PUBLIC KEY-----`. This can be
+  /// used to verify `RS256` signatures in JWT tokens ([RFC7518](
+  /// https://www.ietf.org/rfc/rfc7518.txt)).
+  /// - "RSA_X509_PEM" : As RSA_PEM, but wrapped in an X.509v3 certificate
+  /// ([RFC5280](
+  /// https://www.ietf.org/rfc/rfc5280.txt)), encoded in base64, and wrapped by
+  /// `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`.
+  /// - "ES256_PEM" : Public key for the ECDSA algorithm using P-256 and
+  /// SHA-256, encoded in
+  /// base64, and wrapped by `-----BEGIN PUBLIC KEY-----` and `-----END
+  /// PUBLIC KEY-----`. This can be used to verify JWT tokens with the `ES256`
+  /// algorithm ([RFC7518](https://www.ietf.org/rfc/rfc7518.txt)). This curve is
+  /// defined in [OpenSSL](https://www.openssl.org/) as the `prime256v1` curve.
+  /// - "ES256_X509_PEM" : As ES256_PEM, but wrapped in an X.509v3 certificate
+  /// ([RFC5280](
+  /// https://www.ietf.org/rfc/rfc5280.txt)), encoded in base64, and wrapped by
+  /// `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`.
+  core.String format;
+
+  /// The key data.
+  core.String key;
+
+  PublicKeyCredential();
+
+  PublicKeyCredential.fromJson(core.Map _json) {
+    if (_json.containsKey("format")) {
+      format = _json["format"];
+    }
+    if (_json.containsKey("key")) {
+      key = _json["key"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (format != null) {
+      _json["format"] = format;
+    }
+    if (key != null) {
+      _json["key"] = key;
+    }
+    return _json;
+  }
+}
+
+/// A server-stored registry credential used to validate device credentials.
+class RegistryCredential {
+  /// A public key certificate used to verify the device credentials.
+  PublicKeyCertificate publicKeyCertificate;
+
+  RegistryCredential();
+
+  RegistryCredential.fromJson(core.Map _json) {
+    if (_json.containsKey("publicKeyCertificate")) {
+      publicKeyCertificate =
+          new PublicKeyCertificate.fromJson(_json["publicKeyCertificate"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (publicKeyCertificate != null) {
+      _json["publicKeyCertificate"] = (publicKeyCertificate).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Request message for `SetIamPolicy` method.
+class SetIamPolicyRequest {
+  /// REQUIRED: The complete policy to be applied to the `resource`. The size of
+  /// the policy is limited to a few 10s of KB. An empty policy is a
+  /// valid policy but certain Cloud Platform services (such as Projects)
+  /// might reject them.
+  Policy policy;
+
+  /// OPTIONAL: A FieldMask specifying which fields of the policy to modify.
+  /// Only
+  /// the fields in the mask will be modified. If no mask is provided, the
+  /// following default mask is used:
+  /// paths: "bindings, etag"
+  /// This field is only used by Cloud IAM.
+  core.String updateMask;
+
+  SetIamPolicyRequest();
+
+  SetIamPolicyRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("policy")) {
+      policy = new Policy.fromJson(_json["policy"]);
+    }
+    if (_json.containsKey("updateMask")) {
+      updateMask = _json["updateMask"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (policy != null) {
+      _json["policy"] = (policy).toJson();
+    }
+    if (updateMask != null) {
+      _json["updateMask"] = updateMask;
+    }
+    return _json;
+  }
+}
+
+/// The configuration for notification of new states received from the device.
+class StateNotificationConfig {
+  /// A Cloud Pub/Sub topic name. For example,
+  /// `projects/myProject/topics/deviceEvents`.
+  core.String pubsubTopicName;
+
+  StateNotificationConfig();
+
+  StateNotificationConfig.fromJson(core.Map _json) {
+    if (_json.containsKey("pubsubTopicName")) {
+      pubsubTopicName = _json["pubsubTopicName"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (pubsubTopicName != null) {
+      _json["pubsubTopicName"] = pubsubTopicName;
+    }
+    return _json;
+  }
+}
+
+/// The `Status` type defines a logical error model that is suitable for
+/// different
+/// programming environments, including REST APIs and RPC APIs. It is used by
+/// [gRPC](https://github.com/grpc). The error model is designed to be:
+///
+/// - Simple to use and understand for most users
+/// - Flexible enough to meet unexpected needs
+///
+/// # Overview
+///
+/// The `Status` message contains three pieces of data: error code, error
+/// message,
+/// and error details. The error code should be an enum value of
+/// google.rpc.Code, but it may accept additional error codes if needed.  The
+/// error message should be a developer-facing English message that helps
+/// developers *understand* and *resolve* the error. If a localized user-facing
+/// error message is needed, put the localized message in the error details or
+/// localize it in the client. The optional error details may contain arbitrary
+/// information about the error. There is a predefined set of error detail types
+/// in the package `google.rpc` that can be used for common error conditions.
+///
+/// # Language mapping
+///
+/// The `Status` message is the logical representation of the error model, but
+/// it
+/// is not necessarily the actual wire format. When the `Status` message is
+/// exposed in different client libraries and different wire protocols, it can
+/// be
+/// mapped differently. For example, it will likely be mapped to some exceptions
+/// in Java, but more likely mapped to some error codes in C.
+///
+/// # Other uses
+///
+/// The error model and the `Status` message can be used in a variety of
+/// environments, either with or without APIs, to provide a
+/// consistent developer experience across different environments.
+///
+/// Example uses of this error model include:
+///
+/// - Partial errors. If a service needs to return partial errors to the client,
+/// it may embed the `Status` in the normal response to indicate the partial
+///     errors.
+///
+/// - Workflow errors. A typical workflow has multiple steps. Each step may
+///     have a `Status` message for error reporting.
+///
+/// - Batch operations. If a client uses batch request and batch response, the
+///     `Status` message should be used directly inside batch response, one for
+///     each error sub-response.
+///
+/// - Asynchronous operations. If an API call embeds asynchronous operation
+///     results in its response, the status of those operations should be
+///     represented directly using the `Status` message.
+///
+/// - Logging. If some API errors are stored in logs, the message `Status` could
+/// be used directly after any stripping needed for security/privacy reasons.
+class Status {
+  /// The status code, which should be an enum value of google.rpc.Code.
+  core.int code;
+
+  /// A list of messages that carry the error details.  There is a common set of
+  /// message types for APIs to use.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.List<core.Map<core.String, core.Object>> details;
+
+  /// A developer-facing error message, which should be in English. Any
+  /// user-facing error message should be localized and sent in the
+  /// google.rpc.Status.details field, or localized by the client.
+  core.String message;
+
+  Status();
+
+  Status.fromJson(core.Map _json) {
+    if (_json.containsKey("code")) {
+      code = _json["code"];
+    }
+    if (_json.containsKey("details")) {
+      details = _json["details"];
+    }
+    if (_json.containsKey("message")) {
+      message = _json["message"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (code != null) {
+      _json["code"] = code;
+    }
+    if (details != null) {
+      _json["details"] = details;
+    }
+    if (message != null) {
+      _json["message"] = message;
+    }
+    return _json;
+  }
+}
+
+/// Request message for `TestIamPermissions` method.
+class TestIamPermissionsRequest {
+  /// The set of permissions to check for the `resource`. Permissions with
+  /// wildcards (such as '*' or 'storage.*') are not allowed. For more
+  /// information see
+  /// [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
+  core.List<core.String> permissions;
+
+  TestIamPermissionsRequest();
+
+  TestIamPermissionsRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("permissions")) {
+      permissions = _json["permissions"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (permissions != null) {
+      _json["permissions"] = permissions;
+    }
+    return _json;
+  }
+}
+
+/// Response message for `TestIamPermissions` method.
+class TestIamPermissionsResponse {
+  /// A subset of `TestPermissionsRequest.permissions` that the caller is
+  /// allowed.
+  core.List<core.String> permissions;
+
+  TestIamPermissionsResponse();
+
+  TestIamPermissionsResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("permissions")) {
+      permissions = _json["permissions"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (permissions != null) {
+      _json["permissions"] = permissions;
+    }
+    return _json;
+  }
+}
+
+/// Details of an X.509 certificate. For informational purposes only.
+class X509CertificateDetails {
+  /// The time the certificate becomes invalid.
+  core.String expiryTime;
+
+  /// The entity that signed the certificate.
+  core.String issuer;
+
+  /// The type of public key in the certificate.
+  core.String publicKeyType;
+
+  /// The algorithm used to sign the certificate.
+  core.String signatureAlgorithm;
+
+  /// The time the certificate becomes valid.
+  core.String startTime;
+
+  /// The entity the certificate and public key belong to.
+  core.String subject;
+
+  X509CertificateDetails();
+
+  X509CertificateDetails.fromJson(core.Map _json) {
+    if (_json.containsKey("expiryTime")) {
+      expiryTime = _json["expiryTime"];
+    }
+    if (_json.containsKey("issuer")) {
+      issuer = _json["issuer"];
+    }
+    if (_json.containsKey("publicKeyType")) {
+      publicKeyType = _json["publicKeyType"];
+    }
+    if (_json.containsKey("signatureAlgorithm")) {
+      signatureAlgorithm = _json["signatureAlgorithm"];
+    }
+    if (_json.containsKey("startTime")) {
+      startTime = _json["startTime"];
+    }
+    if (_json.containsKey("subject")) {
+      subject = _json["subject"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (expiryTime != null) {
+      _json["expiryTime"] = expiryTime;
+    }
+    if (issuer != null) {
+      _json["issuer"] = issuer;
+    }
+    if (publicKeyType != null) {
+      _json["publicKeyType"] = publicKeyType;
+    }
+    if (signatureAlgorithm != null) {
+      _json["signatureAlgorithm"] = signatureAlgorithm;
+    }
+    if (startTime != null) {
+      _json["startTime"] = startTime;
+    }
+    if (subject != null) {
+      _json["subject"] = subject;
+    }
+    return _json;
+  }
+}
diff --git a/generated/googleapis/lib/cloudkms/v1.dart b/generated/googleapis/lib/cloudkms/v1.dart
index bcdca8f..cec9f41 100644
--- a/generated/googleapis/lib/cloudkms/v1.dart
+++ b/generated/googleapis/lib/cloudkms/v1.dart
@@ -57,6 +57,9 @@
   /// [name] - Resource name for the location.
   /// Value must have pattern "^projects/[^/]+/locations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Location].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -64,7 +67,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Location> get(core.String name) {
+  async.Future<Location> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -75,6 +78,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -94,11 +100,14 @@
   /// [name] - The resource that owns the locations collection, if applicable.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [filter] - The standard list filter.
+  ///
   /// [pageToken] - The standard list page token.
   ///
   /// [pageSize] - The standard list page size.
   ///
-  /// [filter] - The standard list filter.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListLocationsResponse].
   ///
@@ -108,7 +117,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLocationsResponse> list(core.String name,
-      {core.String pageToken, core.int pageSize, core.String filter}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -119,14 +131,17 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url =
@@ -165,6 +180,9 @@
   /// regular
   /// expression `[a-zA-Z0-9_-]{1,63}`
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [KeyRing].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -173,7 +191,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<KeyRing> create(KeyRing request, core.String parent,
-      {core.String keyRingId}) {
+      {core.String keyRingId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -190,6 +208,9 @@
     if (keyRingId != null) {
       _queryParams["keyRingId"] = [keyRingId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/keyRings';
@@ -210,6 +231,9 @@
   /// [name] - The name of the KeyRing to get.
   /// Value must have pattern "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [KeyRing].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -217,7 +241,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<KeyRing> get(core.String name) {
+  async.Future<KeyRing> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -228,6 +252,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -251,6 +278,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -258,7 +288,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Policy> getIamPolicy(core.String resource) {
+  async.Future<Policy> getIamPolicy(core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -269,6 +300,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -299,6 +333,9 @@
   /// including the ListKeyRingsResponse.next_page_token in a subsequent
   /// request.  If unspecified, the server will pick an appropriate default.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListKeyRingsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -307,7 +344,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListKeyRingsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -324,6 +361,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/keyRings';
@@ -349,6 +389,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -357,7 +400,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -371,6 +415,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -402,6 +449,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -410,7 +460,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -424,6 +475,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -467,6 +521,9 @@
   /// regular
   /// expression `[a-zA-Z0-9_-]{1,63}`
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CryptoKey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -475,7 +532,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CryptoKey> create(CryptoKey request, core.String parent,
-      {core.String cryptoKeyId}) {
+      {core.String cryptoKeyId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -492,6 +549,9 @@
     if (cryptoKeyId != null) {
       _queryParams["cryptoKeyId"] = [cryptoKeyId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -518,6 +578,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DecryptResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -526,7 +589,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DecryptResponse> decrypt(
-      DecryptRequest request, core.String name) {
+      DecryptRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -540,6 +604,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':decrypt';
 
@@ -566,6 +633,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EncryptResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -574,7 +644,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EncryptResponse> encrypt(
-      EncryptRequest request, core.String name) {
+      EncryptRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -588,6 +659,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':encrypt';
 
@@ -609,6 +683,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CryptoKey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -616,7 +693,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CryptoKey> get(core.String name) {
+  async.Future<CryptoKey> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -627,6 +704,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -651,6 +731,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -658,7 +741,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Policy> getIamPolicy(core.String resource) {
+  async.Future<Policy> getIamPolicy(core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -669,6 +753,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -700,6 +787,9 @@
   /// including the ListCryptoKeysResponse.next_page_token in a subsequent
   /// request.  If unspecified, the server will pick an appropriate default.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListCryptoKeysResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -708,7 +798,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListCryptoKeysResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -725,6 +815,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -752,6 +845,9 @@
   ///
   /// [updateMask] - Required list of fields to be updated in this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CryptoKey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -760,7 +856,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CryptoKey> patch(CryptoKey request, core.String name,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -777,6 +873,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -802,6 +901,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -810,7 +912,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -824,6 +927,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -856,6 +962,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -864,7 +973,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -878,6 +988,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -903,6 +1016,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CryptoKey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -911,7 +1027,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CryptoKey> updatePrimaryVersion(
-      UpdateCryptoKeyPrimaryVersionRequest request, core.String name) {
+      UpdateCryptoKeyPrimaryVersionRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -925,6 +1042,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$name') +
@@ -962,6 +1082,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CryptoKeyVersion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -970,7 +1093,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CryptoKeyVersion> create(
-      CryptoKeyVersion request, core.String parent) {
+      CryptoKeyVersion request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -984,6 +1108,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -1019,6 +1146,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+/cryptoKeyVersions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CryptoKeyVersion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1027,7 +1157,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CryptoKeyVersion> destroy(
-      DestroyCryptoKeyVersionRequest request, core.String name) {
+      DestroyCryptoKeyVersionRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1041,6 +1172,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':destroy';
 
@@ -1061,6 +1195,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+/cryptoKeyVersions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CryptoKeyVersion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1068,7 +1205,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CryptoKeyVersion> get(core.String name) {
+  async.Future<CryptoKeyVersion> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1079,6 +1216,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1110,6 +1250,9 @@
   /// ListCryptoKeyVersionsResponse.next_page_token in a subsequent request.
   /// If unspecified, the server will pick an appropriate default.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListCryptoKeyVersionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1118,7 +1261,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListCryptoKeyVersionsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1135,6 +1278,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -1171,6 +1317,9 @@
   ///
   /// [updateMask] - Required list of fields to be updated in this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CryptoKeyVersion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1180,7 +1329,7 @@
   /// this method will complete with the same error.
   async.Future<CryptoKeyVersion> patch(
       CryptoKeyVersion request, core.String name,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1197,6 +1346,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1225,6 +1377,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+/cryptoKeyVersions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CryptoKeyVersion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1233,7 +1388,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CryptoKeyVersion> restore(
-      RestoreCryptoKeyVersionRequest request, core.String name) {
+      RestoreCryptoKeyVersionRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1247,6 +1403,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':restore';
 
diff --git a/generated/googleapis/lib/cloudresourcemanager/v1.dart b/generated/googleapis/lib/cloudresourcemanager/v1.dart
index abde7e5..ae92ea1 100644
--- a/generated/googleapis/lib/cloudresourcemanager/v1.dart
+++ b/generated/googleapis/lib/cloudresourcemanager/v1.dart
@@ -55,6 +55,9 @@
   /// [resource] - Name of the resource for the `Policy` to clear.
   /// Value must have pattern "^folders/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -63,7 +66,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> clearOrgPolicy(
-      ClearOrgPolicyRequest request, core.String resource) {
+      ClearOrgPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -77,6 +81,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -103,6 +110,9 @@
   /// `Policy`.
   /// Value must have pattern "^folders/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrgPolicy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -111,7 +121,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrgPolicy> getEffectiveOrgPolicy(
-      GetEffectiveOrgPolicyRequest request, core.String resource) {
+      GetEffectiveOrgPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -125,6 +136,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -153,6 +167,9 @@
   /// [resource] - Name of the resource the `Policy` is set on.
   /// Value must have pattern "^folders/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrgPolicy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -161,7 +178,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrgPolicy> getOrgPolicy(
-      GetOrgPolicyRequest request, core.String resource) {
+      GetOrgPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -175,6 +193,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -198,6 +219,9 @@
   /// [resource] - Name of the resource to list `Constraints` for.
   /// Value must have pattern "^folders/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListAvailableOrgPolicyConstraintsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -208,7 +232,8 @@
   async.Future<ListAvailableOrgPolicyConstraintsResponse>
       listAvailableOrgPolicyConstraints(
           ListAvailableOrgPolicyConstraintsRequest request,
-          core.String resource) {
+          core.String resource,
+          {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -222,6 +247,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -246,6 +274,9 @@
   /// [resource] - Name of the resource to list Policies for.
   /// Value must have pattern "^folders/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOrgPoliciesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -254,7 +285,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOrgPoliciesResponse> listOrgPolicies(
-      ListOrgPoliciesRequest request, core.String resource) {
+      ListOrgPoliciesRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -268,6 +300,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -296,6 +331,9 @@
   /// [resource] - Resource name of the resource to attach the `Policy`.
   /// Value must have pattern "^folders/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrgPolicy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -304,7 +342,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrgPolicy> setOrgPolicy(
-      SetOrgPolicyRequest request, core.String resource) {
+      SetOrgPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -318,6 +357,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -350,6 +392,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Lien].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -357,7 +402,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Lien> create(Lien request) {
+  async.Future<Lien> create(Lien request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -368,6 +413,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/liens';
 
@@ -391,6 +439,9 @@
   /// [name] - The name/identifier of the Lien to delete.
   /// Value must have pattern "^liens/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -398,7 +449,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -409,6 +460,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -438,6 +492,9 @@
   /// [parent] - The name of the resource to list all attached Liens.
   /// For example, `projects/1234`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLiensResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -446,7 +503,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLiensResponse> list(
-      {core.String pageToken, core.int pageSize, core.String parent}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String parent,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -463,6 +523,9 @@
     if (parent != null) {
       _queryParams["parent"] = [parent];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/liens';
 
@@ -490,6 +553,9 @@
   /// [name] - The name of the operation resource.
   /// Value must have pattern "^operations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -497,7 +563,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String name) {
+  async.Future<Operation> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -508,6 +574,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -535,6 +604,9 @@
   /// [resource] - Name of the resource for the `Policy` to clear.
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -543,7 +615,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> clearOrgPolicy(
-      ClearOrgPolicyRequest request, core.String resource) {
+      ClearOrgPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -557,6 +630,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -580,6 +656,9 @@
   /// "organizations/1234".
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Organization].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -587,7 +666,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Organization> get(core.String name) {
+  async.Future<Organization> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -598,6 +677,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -622,6 +704,9 @@
   /// `Policy`.
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrgPolicy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -630,7 +715,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrgPolicy> getEffectiveOrgPolicy(
-      GetEffectiveOrgPolicyRequest request, core.String resource) {
+      GetEffectiveOrgPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -644,6 +730,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -674,6 +763,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -682,7 +774,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> getIamPolicy(
-      GetIamPolicyRequest request, core.String resource) {
+      GetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -696,6 +789,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -724,6 +820,9 @@
   /// [resource] - Name of the resource the `Policy` is set on.
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrgPolicy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -732,7 +831,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrgPolicy> getOrgPolicy(
-      GetOrgPolicyRequest request, core.String resource) {
+      GetOrgPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -746,6 +846,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -769,6 +872,9 @@
   /// [resource] - Name of the resource to list `Constraints` for.
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListAvailableOrgPolicyConstraintsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -779,7 +885,8 @@
   async.Future<ListAvailableOrgPolicyConstraintsResponse>
       listAvailableOrgPolicyConstraints(
           ListAvailableOrgPolicyConstraintsRequest request,
-          core.String resource) {
+          core.String resource,
+          {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -793,6 +900,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -817,6 +927,9 @@
   /// [resource] - Name of the resource to list Policies for.
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOrgPoliciesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -825,7 +938,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOrgPoliciesResponse> listOrgPolicies(
-      ListOrgPoliciesRequest request, core.String resource) {
+      ListOrgPoliciesRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -839,6 +953,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -865,6 +982,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchOrganizationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -873,7 +993,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SearchOrganizationsResponse> search(
-      SearchOrganizationsRequest request) {
+      SearchOrganizationsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -884,6 +1005,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/organizations:search';
 
@@ -914,6 +1038,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -922,7 +1049,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -936,6 +1064,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -964,6 +1095,9 @@
   /// [resource] - Resource name of the resource to attach the `Policy`.
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrgPolicy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -972,7 +1106,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrgPolicy> setOrgPolicy(
-      SetOrgPolicyRequest request, core.String resource) {
+      SetOrgPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -986,6 +1121,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1015,6 +1153,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1023,7 +1164,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1037,6 +1179,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1067,6 +1212,9 @@
   /// [resource] - Name of the resource for the `Policy` to clear.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1075,7 +1223,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> clearOrgPolicy(
-      ClearOrgPolicyRequest request, core.String resource) {
+      ClearOrgPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1089,6 +1238,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1120,6 +1272,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1127,7 +1282,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> create(Project request) {
+  async.Future<Operation> create(Project request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1138,6 +1293,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects';
 
@@ -1182,6 +1340,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1189,7 +1350,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String projectId) {
+  async.Future<Empty> delete(core.String projectId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1200,6 +1361,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' + commons.Escaper.ecapeVariable('$projectId');
 
@@ -1223,6 +1387,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Project].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1230,7 +1397,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Project> get(core.String projectId) {
+  async.Future<Project> get(core.String projectId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1241,6 +1408,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' + commons.Escaper.ecapeVariable('$projectId');
 
@@ -1266,6 +1436,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetAncestryResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1274,7 +1447,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetAncestryResponse> getAncestry(
-      GetAncestryRequest request, core.String projectId) {
+      GetAncestryRequest request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1288,6 +1462,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1314,6 +1491,9 @@
   /// `Policy`.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrgPolicy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1322,7 +1502,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrgPolicy> getEffectiveOrgPolicy(
-      GetEffectiveOrgPolicyRequest request, core.String resource) {
+      GetEffectiveOrgPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1336,6 +1517,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1364,6 +1548,9 @@
   /// requested.
   /// See the operation documentation for the appropriate value for this field.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1372,7 +1559,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> getIamPolicy(
-      GetIamPolicyRequest request, core.String resource) {
+      GetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1386,6 +1574,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$resource') +
@@ -1414,6 +1605,9 @@
   /// [resource] - Name of the resource the `Policy` is set on.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrgPolicy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1422,7 +1616,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrgPolicy> getOrgPolicy(
-      GetOrgPolicyRequest request, core.String resource) {
+      GetOrgPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1436,6 +1631,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1456,12 +1654,6 @@
   ///
   /// Request parameters:
   ///
-  /// [pageSize] - The maximum number of Projects to return in the response.
-  /// The server can return fewer Projects than requested.
-  /// If unspecified, server picks an appropriate default.
-  ///
-  /// Optional.
-  ///
   /// [filter] - An expression for filtering the results of the request.  Filter
   /// rules are
   /// case insensitive. The fields eligible for filtering are:
@@ -1501,6 +1693,15 @@
   ///
   /// Optional.
   ///
+  /// [pageSize] - The maximum number of Projects to return in the response.
+  /// The server can return fewer Projects than requested.
+  /// If unspecified, server picks an appropriate default.
+  ///
+  /// Optional.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListProjectsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1509,7 +1710,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListProjectsResponse> list(
-      {core.int pageSize, core.String filter, core.String pageToken}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1517,15 +1721,18 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
-    }
     if (filter != null) {
       _queryParams["filter"] = [filter];
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects';
 
@@ -1547,6 +1754,9 @@
   /// [resource] - Name of the resource to list `Constraints` for.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListAvailableOrgPolicyConstraintsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1557,7 +1767,8 @@
   async.Future<ListAvailableOrgPolicyConstraintsResponse>
       listAvailableOrgPolicyConstraints(
           ListAvailableOrgPolicyConstraintsRequest request,
-          core.String resource) {
+          core.String resource,
+          {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1571,6 +1782,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1595,6 +1809,9 @@
   /// [resource] - Name of the resource to list Policies for.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOrgPoliciesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1603,7 +1820,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOrgPoliciesResponse> listOrgPolicies(
-      ListOrgPoliciesRequest request, core.String resource) {
+      ListOrgPoliciesRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1617,6 +1835,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1682,6 +1903,9 @@
   /// specified.
   /// See the operation documentation for the appropriate value for this field.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1690,7 +1914,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1704,6 +1929,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$resource') +
@@ -1732,6 +1960,9 @@
   /// [resource] - Resource name of the resource to attach the `Policy`.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrgPolicy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1740,7 +1971,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrgPolicy> setOrgPolicy(
-      SetOrgPolicyRequest request, core.String resource) {
+      SetOrgPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1754,6 +1986,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1780,6 +2015,9 @@
   /// requested.
   /// See the operation documentation for the appropriate value for this field.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1788,7 +2026,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1802,6 +2041,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$resource') +
@@ -1833,6 +2075,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1841,7 +2086,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> undelete(
-      UndeleteProjectRequest request, core.String projectId) {
+      UndeleteProjectRequest request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1855,6 +2101,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1882,6 +2131,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Project].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1889,7 +2141,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Project> update(Project request, core.String projectId) {
+  async.Future<Project> update(Project request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1903,6 +2156,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' + commons.Escaper.ecapeVariable('$projectId');
 
diff --git a/generated/googleapis/lib/cloudresourcemanager/v2beta1.dart b/generated/googleapis/lib/cloudresourcemanager/v2beta1.dart
index 87d5419..483c68c 100644
--- a/generated/googleapis/lib/cloudresourcemanager/v2beta1.dart
+++ b/generated/googleapis/lib/cloudresourcemanager/v2beta1.dart
@@ -75,6 +75,9 @@
   /// [parent] - The resource name of the new Folder's parent.
   /// Must be of the form `folders/{folder_id}` or `organizations/{org_id}`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -82,7 +85,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> create(Folder request, {core.String parent}) {
+  async.Future<Operation> create(Folder request,
+      {core.String parent, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -96,6 +100,9 @@
     if (parent != null) {
       _queryParams["parent"] = [parent];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/folders';
 
@@ -122,6 +129,9 @@
   /// Must be of the form `folders/{folder_id}`.
   /// Value must have pattern "^folders/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Folder].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -129,7 +139,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Folder> delete(core.String name) {
+  async.Future<Folder> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -140,6 +150,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -164,6 +177,9 @@
   /// Must be of the form `folders/{folder_id}`.
   /// Value must have pattern "^folders/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Folder].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -171,7 +187,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Folder> get(core.String name) {
+  async.Future<Folder> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -182,6 +198,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -209,6 +228,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^folders/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -217,7 +239,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> getIamPolicy(
-      GetIamPolicyRequest request, core.String resource) {
+      GetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -231,6 +254,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -274,6 +300,9 @@
   /// should
   /// be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListFoldersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -285,7 +314,8 @@
       {core.String pageToken,
       core.int pageSize,
       core.String parent,
-      core.bool showDeleted}) {
+      core.bool showDeleted,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -305,6 +335,9 @@
     if (showDeleted != null) {
       _queryParams["showDeleted"] = ["${showDeleted}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/folders';
 
@@ -342,6 +375,9 @@
   /// Must be of the form folders/{folder_id}
   /// Value must have pattern "^folders/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -349,7 +385,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> move(MoveFolderRequest request, core.String name) {
+  async.Future<Operation> move(MoveFolderRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -363,6 +400,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name') + ':move';
@@ -402,6 +442,9 @@
   /// [updateMask] - Fields to be updated.
   /// Only the `display_name` can be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Folder].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -410,7 +453,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Folder> patch(Folder request, core.String name,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -427,6 +470,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -450,6 +496,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchFoldersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -457,7 +506,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SearchFoldersResponse> search(SearchFoldersRequest request) {
+  async.Future<SearchFoldersResponse> search(SearchFoldersRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -468,6 +518,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/folders:search';
 
@@ -495,6 +548,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^folders/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -503,7 +559,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -517,6 +574,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -546,6 +606,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^folders/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -554,7 +617,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -568,6 +632,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -600,6 +667,9 @@
   /// Must be of the form `folders/{folder_id}`.
   /// Value must have pattern "^folders/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Folder].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -607,8 +677,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Folder> undelete(
-      UndeleteFolderRequest request, core.String name) {
+  async.Future<Folder> undelete(UndeleteFolderRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -622,6 +692,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' +
         commons.Escaper.ecapeVariableReserved('$name') +
diff --git a/generated/googleapis/lib/cloudtrace/v1.dart b/generated/googleapis/lib/cloudtrace/v1.dart
index 1874f7e..c86285c 100644
--- a/generated/googleapis/lib/cloudtrace/v1.dart
+++ b/generated/googleapis/lib/cloudtrace/v1.dart
@@ -65,6 +65,9 @@
   ///
   /// [projectId] - ID of the Cloud project where the trace data is stored.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -72,7 +75,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> patchTraces(Traces request, core.String projectId) {
+  async.Future<Empty> patchTraces(Traces request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -86,6 +90,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -114,6 +121,9 @@
   ///
   /// [traceId] - ID of the trace to return.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Trace].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -121,7 +131,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Trace> get(core.String projectId, core.String traceId) {
+  async.Future<Trace> get(core.String projectId, core.String traceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -135,6 +146,9 @@
     if (traceId == null) {
       throw new core.ArgumentError("Parameter traceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -156,14 +170,6 @@
   ///
   /// [projectId] - ID of the Cloud project where the trace data is stored.
   ///
-  /// [pageToken] - Token identifying the page of results to return. If
-  /// provided, use the
-  /// value of the `next_page_token` field from a previous request. Optional.
-  ///
-  /// [startTime] - Start of the time interval (inclusive) during which the
-  /// trace data was
-  /// collected from the application.
-  ///
   /// [pageSize] - Maximum number of traces to return. If not specified or <= 0,
   /// the
   /// implementation selects a reasonable value.  The implementation may
@@ -227,6 +233,17 @@
   /// data was
   /// collected from the application.
   ///
+  /// [pageToken] - Token identifying the page of results to return. If
+  /// provided, use the
+  /// value of the `next_page_token` field from a previous request. Optional.
+  ///
+  /// [startTime] - Start of the time interval (inclusive) during which the
+  /// trace data was
+  /// collected from the application.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListTracesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -235,13 +252,14 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListTracesResponse> list(core.String projectId,
-      {core.String pageToken,
-      core.String startTime,
-      core.int pageSize,
+      {core.int pageSize,
       core.String view,
       core.String orderBy,
       core.String filter,
-      core.String endTime}) {
+      core.String endTime,
+      core.String pageToken,
+      core.String startTime,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -252,12 +270,6 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
-    }
-    if (startTime != null) {
-      _queryParams["startTime"] = [startTime];
-    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
@@ -273,6 +285,15 @@
     if (endTime != null) {
       _queryParams["endTime"] = [endTime];
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (startTime != null) {
+      _queryParams["startTime"] = [startTime];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
diff --git a/generated/googleapis/lib/cloudtrace/v2.dart b/generated/googleapis/lib/cloudtrace/v2.dart
index cea6617..96a8426 100644
--- a/generated/googleapis/lib/cloudtrace/v2.dart
+++ b/generated/googleapis/lib/cloudtrace/v2.dart
@@ -70,6 +70,9 @@
   /// `projects/PROJECT_ID`.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -78,7 +81,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> batchWrite(
-      BatchWriteSpansRequest request, core.String name) {
+      BatchWriteSpansRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -92,6 +96,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' +
         commons.Escaper.ecapeVariableReserved('$name') +
@@ -127,6 +134,9 @@
   /// assigned when the span is created.
   /// Value must have pattern "^projects/[^/]+/traces/[^/]+/spans/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Span].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -134,7 +144,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Span> create(Span request, core.String name) {
+  async.Future<Span> create(Span request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -148,6 +159,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -419,6 +433,64 @@
   }
 }
 
+/// An event describing a message sent/received between Spans.
+class MessageEvent {
+  /// The number of compressed bytes sent or received. If missing assumed to
+  /// be the same size as uncompressed.
+  core.String compressedSizeBytes;
+
+  /// An identifier for the MessageEvent's message that can be used to match
+  /// SENT and RECEIVED MessageEvents. It is recommended to be unique within
+  /// a Span.
+  core.String id;
+
+  /// Type of MessageEvent. Indicates whether the message was sent or
+  /// received.
+  /// Possible string values are:
+  /// - "TYPE_UNSPECIFIED" : Unknown event type.
+  /// - "SENT" : Indicates a sent message.
+  /// - "RECEIVED" : Indicates a received message.
+  core.String type;
+
+  /// The number of uncompressed bytes sent or received.
+  core.String uncompressedSizeBytes;
+
+  MessageEvent();
+
+  MessageEvent.fromJson(core.Map _json) {
+    if (_json.containsKey("compressedSizeBytes")) {
+      compressedSizeBytes = _json["compressedSizeBytes"];
+    }
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("type")) {
+      type = _json["type"];
+    }
+    if (_json.containsKey("uncompressedSizeBytes")) {
+      uncompressedSizeBytes = _json["uncompressedSizeBytes"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (compressedSizeBytes != null) {
+      _json["compressedSizeBytes"] = compressedSizeBytes;
+    }
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (type != null) {
+      _json["type"] = type;
+    }
+    if (uncompressedSizeBytes != null) {
+      _json["uncompressedSizeBytes"] = uncompressedSizeBytes;
+    }
+    return _json;
+  }
+}
+
 /// Binary module.
 class Module {
   /// A unique identifier for the module, usually a hash of its
@@ -453,72 +525,6 @@
   }
 }
 
-/// An event describing an RPC message sent or received on the network.
-class NetworkEvent {
-  /// The number of compressed bytes sent or received.
-  core.String compressedMessageSize;
-
-  /// An identifier for the message, which must be unique in this span.
-  core.String messageId;
-
-  /// For sent messages, this is the time at which the first bit was sent.
-  /// For received messages, this is the time at which the last bit was
-  /// received.
-  core.String time;
-
-  /// Type of NetworkEvent. Indicates whether the RPC message was sent or
-  /// received.
-  /// Possible string values are:
-  /// - "TYPE_UNSPECIFIED" : Unknown event type.
-  /// - "SENT" : Indicates a sent RPC message.
-  /// - "RECV" : Indicates a received RPC message.
-  core.String type;
-
-  /// The number of uncompressed bytes sent or received.
-  core.String uncompressedMessageSize;
-
-  NetworkEvent();
-
-  NetworkEvent.fromJson(core.Map _json) {
-    if (_json.containsKey("compressedMessageSize")) {
-      compressedMessageSize = _json["compressedMessageSize"];
-    }
-    if (_json.containsKey("messageId")) {
-      messageId = _json["messageId"];
-    }
-    if (_json.containsKey("time")) {
-      time = _json["time"];
-    }
-    if (_json.containsKey("type")) {
-      type = _json["type"];
-    }
-    if (_json.containsKey("uncompressedMessageSize")) {
-      uncompressedMessageSize = _json["uncompressedMessageSize"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (compressedMessageSize != null) {
-      _json["compressedMessageSize"] = compressedMessageSize;
-    }
-    if (messageId != null) {
-      _json["messageId"] = messageId;
-    }
-    if (time != null) {
-      _json["time"] = time;
-    }
-    if (type != null) {
-      _json["type"] = type;
-    }
-    if (uncompressedMessageSize != null) {
-      _json["uncompressedMessageSize"] = uncompressedMessageSize;
-    }
-    return _json;
-  }
-}
-
 /// A span represents a single operation within a trace. Spans can be
 /// nested to form a trace tree. Often, a trace contains a root span
 /// that describes the end-to-end latency, and one or more subspans for
@@ -585,7 +591,7 @@
   Status status;
 
   /// The included time events. There can be up to 32 annotations and 128
-  /// network
+  /// message
   /// events per span.
   TimeEvents timeEvents;
 
@@ -940,13 +946,13 @@
   }
 }
 
-/// A time-stamped annotation or network event in the Span.
+/// A time-stamped annotation or message event in the Span.
 class TimeEvent {
   /// Text annotation with a set of attributes.
   Annotation annotation;
 
-  /// An event describing an RPC message sent/received on the network.
-  NetworkEvent networkEvent;
+  /// An event describing a message sent/received between Spans.
+  MessageEvent messageEvent;
 
   /// The timestamp indicating the time the event occurred.
   core.String time;
@@ -957,8 +963,8 @@
     if (_json.containsKey("annotation")) {
       annotation = new Annotation.fromJson(_json["annotation"]);
     }
-    if (_json.containsKey("networkEvent")) {
-      networkEvent = new NetworkEvent.fromJson(_json["networkEvent"]);
+    if (_json.containsKey("messageEvent")) {
+      messageEvent = new MessageEvent.fromJson(_json["messageEvent"]);
     }
     if (_json.containsKey("time")) {
       time = _json["time"];
@@ -971,8 +977,8 @@
     if (annotation != null) {
       _json["annotation"] = (annotation).toJson();
     }
-    if (networkEvent != null) {
-      _json["networkEvent"] = (networkEvent).toJson();
+    if (messageEvent != null) {
+      _json["messageEvent"] = (messageEvent).toJson();
     }
     if (time != null) {
       _json["time"] = time;
@@ -983,15 +989,15 @@
 
 /// A collection of `TimeEvent`s. A `TimeEvent` is a time-stamped annotation
 /// on the span, consisting of either user-supplied key:value pairs, or
-/// details of an RPC message sent/received on the network.
+/// details of a message sent/received between Spans.
 class TimeEvents {
   /// The number of dropped annotations in all the included time events.
   /// If the value is 0, then no annotations were dropped.
   core.int droppedAnnotationsCount;
 
-  /// The number of dropped network events in all the included time events.
-  /// If the value is 0, then no network events were dropped.
-  core.int droppedNetworkEventsCount;
+  /// The number of dropped message events in all the included time events.
+  /// If the value is 0, then no message events were dropped.
+  core.int droppedMessageEventsCount;
 
   /// A collection of `TimeEvent`s.
   core.List<TimeEvent> timeEvent;
@@ -1002,8 +1008,8 @@
     if (_json.containsKey("droppedAnnotationsCount")) {
       droppedAnnotationsCount = _json["droppedAnnotationsCount"];
     }
-    if (_json.containsKey("droppedNetworkEventsCount")) {
-      droppedNetworkEventsCount = _json["droppedNetworkEventsCount"];
+    if (_json.containsKey("droppedMessageEventsCount")) {
+      droppedMessageEventsCount = _json["droppedMessageEventsCount"];
     }
     if (_json.containsKey("timeEvent")) {
       timeEvent = _json["timeEvent"]
@@ -1018,8 +1024,8 @@
     if (droppedAnnotationsCount != null) {
       _json["droppedAnnotationsCount"] = droppedAnnotationsCount;
     }
-    if (droppedNetworkEventsCount != null) {
-      _json["droppedNetworkEventsCount"] = droppedNetworkEventsCount;
+    if (droppedMessageEventsCount != null) {
+      _json["droppedMessageEventsCount"] = droppedMessageEventsCount;
     }
     if (timeEvent != null) {
       _json["timeEvent"] = timeEvent.map((value) => (value).toJson()).toList();
diff --git a/generated/googleapis/lib/compute/v1.dart b/generated/googleapis/lib/compute/v1.dart
index 7fa18ba..df1852f 100644
--- a/generated/googleapis/lib/compute/v1.dart
+++ b/generated/googleapis/lib/compute/v1.dart
@@ -75,6 +75,12 @@
   InstanceTemplatesResourceApi get instanceTemplates =>
       new InstanceTemplatesResourceApi(_requester);
   InstancesResourceApi get instances => new InstancesResourceApi(_requester);
+  InterconnectAttachmentsResourceApi get interconnectAttachments =>
+      new InterconnectAttachmentsResourceApi(_requester);
+  InterconnectLocationsResourceApi get interconnectLocations =>
+      new InterconnectLocationsResourceApi(_requester);
+  InterconnectsResourceApi get interconnects =>
+      new InterconnectsResourceApi(_requester);
   LicensesResourceApi get licenses => new LicensesResourceApi(_requester);
   MachineTypesResourceApi get machineTypes =>
       new MachineTypesResourceApi(_requester);
@@ -187,6 +193,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AcceleratorTypeAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -199,7 +208,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -222,6 +232,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/aggregated/acceleratorTypes';
@@ -251,6 +264,9 @@
   /// [acceleratorType] - Name of the accelerator type to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AcceleratorType].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -259,7 +275,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AcceleratorType> get(
-      core.String project, core.String zone, core.String acceleratorType) {
+      core.String project, core.String zone, core.String acceleratorType,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -276,6 +293,9 @@
     if (acceleratorType == null) {
       throw new core.ArgumentError("Parameter acceleratorType is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -349,6 +369,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AcceleratorTypeList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -360,7 +383,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -386,6 +410,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -461,6 +488,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AddressAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -472,7 +502,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -495,6 +526,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/aggregated/addresses';
 
@@ -534,6 +568,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -543,7 +580,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String region, core.String address,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -563,6 +600,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -593,6 +633,9 @@
   /// [address] - Name of the address resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Address].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -601,7 +644,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Address> get(
-      core.String project, core.String region, core.String address) {
+      core.String project, core.String region, core.String address,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -618,6 +662,9 @@
     if (address == null) {
       throw new core.ArgumentError("Parameter address is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -661,6 +708,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -670,7 +720,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       Address request, core.String project, core.String region,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -690,6 +740,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -762,6 +815,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AddressList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -773,7 +829,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -799,6 +856,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -874,6 +934,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AutoscalerAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -885,7 +948,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -908,6 +972,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/aggregated/autoscalers';
@@ -949,6 +1016,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -958,7 +1028,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String zone, core.String autoscaler,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -978,6 +1048,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -1009,6 +1082,9 @@
   /// [autoscaler] - Name of the autoscaler to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Autoscaler].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1017,7 +1093,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Autoscaler> get(
-      core.String project, core.String zone, core.String autoscaler) {
+      core.String project, core.String zone, core.String autoscaler,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1034,6 +1111,9 @@
     if (autoscaler == null) {
       throw new core.ArgumentError("Parameter autoscaler is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -1077,6 +1157,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1086,7 +1169,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       Autoscaler request, core.String project, core.String zone,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1106,6 +1189,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -1178,6 +1264,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AutoscalerList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1189,7 +1278,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1215,6 +1305,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -1261,6 +1354,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1270,7 +1366,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       Autoscaler request, core.String project, core.String zone,
-      {core.String autoscaler, core.String requestId}) {
+      {core.String autoscaler, core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1293,6 +1389,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -1338,6 +1437,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1347,7 +1449,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> update(
       Autoscaler request, core.String project, core.String zone,
-      {core.String autoscaler, core.String requestId}) {
+      {core.String autoscaler, core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1370,6 +1472,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -1415,6 +1520,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1423,7 +1531,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String project, core.String backendBucket,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1440,6 +1548,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/backendBuckets/' +
@@ -1466,6 +1577,9 @@
   /// [backendBucket] - Name of the BackendBucket resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BackendBucket].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1474,7 +1588,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BackendBucket> get(
-      core.String project, core.String backendBucket) {
+      core.String project, core.String backendBucket,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1488,6 +1603,9 @@
     if (backendBucket == null) {
       throw new core.ArgumentError("Parameter backendBucket is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/backendBuckets/' +
@@ -1526,6 +1644,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1534,7 +1655,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(BackendBucket request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1551,6 +1672,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/backendBuckets';
 
@@ -1618,6 +1742,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BackendBucketList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1629,7 +1756,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1652,6 +1780,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/backendBuckets';
 
@@ -1692,6 +1823,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1701,7 +1835,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       BackendBucket request, core.String project, core.String backendBucket,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1721,6 +1855,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/backendBuckets/' +
@@ -1762,6 +1899,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1771,7 +1911,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> update(
       BackendBucket request, core.String project, core.String backendBucket,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1791,6 +1931,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/backendBuckets/' +
@@ -1866,6 +2009,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BackendServiceAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1877,7 +2023,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1900,6 +2047,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/aggregated/backendServices';
@@ -1938,6 +2088,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1947,7 +2100,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String backendService,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1964,6 +2117,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/backendServices/' +
@@ -1990,6 +2146,9 @@
   /// [backendService] - Name of the BackendService resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BackendService].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1998,7 +2157,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BackendService> get(
-      core.String project, core.String backendService) {
+      core.String project, core.String backendService,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2012,6 +2172,9 @@
     if (backendService == null) {
       throw new core.ArgumentError("Parameter backendService is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/backendServices/' +
@@ -2040,6 +2203,9 @@
   /// queried instance belongs.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BackendServiceGroupHealth].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2050,7 +2216,8 @@
   async.Future<BackendServiceGroupHealth> getHealth(
       ResourceGroupReference request,
       core.String project,
-      core.String backendService) {
+      core.String backendService,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2067,6 +2234,9 @@
     if (backendService == null) {
       throw new core.ArgumentError("Parameter backendService is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/backendServices/' +
@@ -2109,6 +2279,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2117,7 +2290,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(BackendService request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2134,6 +2307,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/backendServices';
@@ -2202,6 +2378,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BackendServiceList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2213,7 +2392,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2236,6 +2416,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/backendServices';
@@ -2279,6 +2462,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2288,7 +2474,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       BackendService request, core.String project, core.String backendService,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2308,6 +2494,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/backendServices/' +
@@ -2351,6 +2540,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2360,7 +2552,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> update(
       BackendService request, core.String project, core.String backendService,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2380,6 +2572,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/backendServices/' +
@@ -2454,6 +2649,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DiskTypeAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2465,7 +2663,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2488,6 +2687,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/aggregated/diskTypes';
 
@@ -2515,6 +2717,9 @@
   /// [diskType] - Name of the disk type to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DiskType].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2523,7 +2728,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DiskType> get(
-      core.String project, core.String zone, core.String diskType) {
+      core.String project, core.String zone, core.String diskType,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2540,6 +2746,9 @@
     if (diskType == null) {
       throw new core.ArgumentError("Parameter diskType is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -2613,6 +2822,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DiskTypeList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2624,7 +2836,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2650,6 +2863,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -2725,6 +2941,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DiskAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2736,7 +2955,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2759,6 +2979,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/aggregated/disks';
 
@@ -2802,6 +3025,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2811,7 +3037,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> createSnapshot(
       Snapshot request, core.String project, core.String zone, core.String disk,
-      {core.bool guestFlush, core.String requestId}) {
+      {core.bool guestFlush, core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2837,6 +3063,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -2883,6 +3112,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2892,7 +3124,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String zone, core.String disk,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2912,6 +3144,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -2943,6 +3178,9 @@
   /// [disk] - Name of the persistent disk to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Disk].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2951,7 +3189,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Disk> get(
-      core.String project, core.String zone, core.String disk) {
+      core.String project, core.String zone, core.String disk,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2968,6 +3207,9 @@
     if (disk == null) {
       throw new core.ArgumentError("Parameter disk is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -3016,6 +3258,9 @@
   ///
   /// [sourceImage] - Optional. Source image to restore onto a disk.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3025,7 +3270,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       Disk request, core.String project, core.String zone,
-      {core.String requestId, core.String sourceImage}) {
+      {core.String requestId, core.String sourceImage, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3048,6 +3293,9 @@
     if (sourceImage != null) {
       _queryParams["sourceImage"] = [sourceImage];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -3120,6 +3368,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DiskList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3131,7 +3382,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3157,6 +3409,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -3201,6 +3456,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3210,7 +3468,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> resize(DisksResizeRequest request,
       core.String project, core.String zone, core.String disk,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3233,6 +3491,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -3280,6 +3541,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3289,7 +3553,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> setLabels(ZoneSetLabelsRequest request,
       core.String project, core.String zone, core.String resource,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3312,6 +3576,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -3359,6 +3626,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3367,7 +3637,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String project, core.String firewall,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3384,6 +3654,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/firewalls/' +
@@ -3409,6 +3682,9 @@
   /// [firewall] - Name of the firewall rule to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Firewall].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3416,7 +3692,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Firewall> get(core.String project, core.String firewall) {
+  async.Future<Firewall> get(core.String project, core.String firewall,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3430,6 +3707,9 @@
     if (firewall == null) {
       throw new core.ArgumentError("Parameter firewall is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/firewalls/' +
@@ -3468,6 +3748,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3476,7 +3759,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(Firewall request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3493,6 +3776,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/firewalls';
 
@@ -3559,6 +3845,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FirewallList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3570,7 +3859,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3593,6 +3883,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/firewalls';
 
@@ -3633,6 +3926,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3642,7 +3938,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       Firewall request, core.String project, core.String firewall,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3662,6 +3958,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/firewalls/' +
@@ -3704,6 +4003,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3713,7 +4015,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> update(
       Firewall request, core.String project, core.String firewall,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3733,6 +4035,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/firewalls/' +
@@ -3807,6 +4112,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ForwardingRuleAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3818,7 +4126,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3841,6 +4150,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/aggregated/forwardingRules';
@@ -3882,6 +4194,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3891,7 +4206,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String region, core.String forwardingRule,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3911,6 +4226,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -3941,6 +4259,9 @@
   /// [forwardingRule] - Name of the ForwardingRule resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ForwardingRule].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3949,7 +4270,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ForwardingRule> get(
-      core.String project, core.String region, core.String forwardingRule) {
+      core.String project, core.String region, core.String forwardingRule,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3966,6 +4288,9 @@
     if (forwardingRule == null) {
       throw new core.ArgumentError("Parameter forwardingRule is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -4009,6 +4334,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4018,7 +4346,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       ForwardingRule request, core.String project, core.String region,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4038,6 +4366,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -4111,6 +4442,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ForwardingRuleList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4122,7 +4456,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4148,6 +4483,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -4194,6 +4532,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4203,7 +4544,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> setTarget(TargetReference request,
       core.String project, core.String region, core.String forwardingRule,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4226,6 +4567,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -4273,6 +4617,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4281,7 +4628,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String project, core.String address,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4298,6 +4645,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/addresses/' +
@@ -4324,6 +4674,9 @@
   /// [address] - Name of the address resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Address].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4331,7 +4684,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Address> get(core.String project, core.String address) {
+  async.Future<Address> get(core.String project, core.String address,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4345,6 +4699,9 @@
     if (address == null) {
       throw new core.ArgumentError("Parameter address is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/addresses/' +
@@ -4383,6 +4740,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4391,7 +4751,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(Address request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4408,6 +4768,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/addresses';
 
@@ -4474,6 +4837,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AddressList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4485,7 +4851,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4508,6 +4875,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/addresses';
 
@@ -4551,6 +4921,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4560,7 +4933,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String forwardingRule,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4577,6 +4950,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/forwardingRules/' +
@@ -4603,6 +4979,9 @@
   /// [forwardingRule] - Name of the ForwardingRule resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ForwardingRule].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4611,7 +4990,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ForwardingRule> get(
-      core.String project, core.String forwardingRule) {
+      core.String project, core.String forwardingRule,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4625,6 +5005,9 @@
     if (forwardingRule == null) {
       throw new core.ArgumentError("Parameter forwardingRule is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/forwardingRules/' +
@@ -4663,6 +5046,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4671,7 +5057,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(ForwardingRule request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4688,6 +5074,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/forwardingRules';
@@ -4756,6 +5145,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ForwardingRuleList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4767,7 +5159,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4790,6 +5183,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/forwardingRules';
@@ -4831,6 +5227,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4840,7 +5239,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> setTarget(
       TargetReference request, core.String project, core.String forwardingRule,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4860,6 +5259,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/forwardingRules/' +
@@ -4936,6 +5338,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OperationAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4947,7 +5352,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4970,6 +5376,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/aggregated/operations';
 
@@ -4993,12 +5402,16 @@
   /// [operation] - Name of the Operations resource to delete.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String project, core.String operation) {
+  async.Future delete(core.String project, core.String operation,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5012,6 +5425,9 @@
     if (operation == null) {
       throw new core.ArgumentError("Parameter operation is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -5040,6 +5456,9 @@
   /// [operation] - Name of the Operations resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5047,7 +5466,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String project, core.String operation) {
+  async.Future<Operation> get(core.String project, core.String operation,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5061,6 +5481,9 @@
     if (operation == null) {
       throw new core.ArgumentError("Parameter operation is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/operations/' +
@@ -5130,6 +5553,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OperationList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5141,7 +5567,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5164,6 +5591,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/operations';
 
@@ -5206,6 +5636,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5214,7 +5647,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String project, core.String healthCheck,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5231,6 +5664,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/healthChecks/' +
@@ -5257,6 +5693,9 @@
   /// [healthCheck] - Name of the HealthCheck resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [HealthCheck].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5264,7 +5703,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<HealthCheck> get(core.String project, core.String healthCheck) {
+  async.Future<HealthCheck> get(core.String project, core.String healthCheck,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5278,6 +5718,9 @@
     if (healthCheck == null) {
       throw new core.ArgumentError("Parameter healthCheck is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/healthChecks/' +
@@ -5316,6 +5759,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5324,7 +5770,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(HealthCheck request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5341,6 +5787,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/healthChecks';
 
@@ -5408,6 +5857,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [HealthCheckList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5419,7 +5871,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5442,6 +5895,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/healthChecks';
 
@@ -5482,6 +5938,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5491,7 +5950,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       HealthCheck request, core.String project, core.String healthCheck,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5511,6 +5970,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/healthChecks/' +
@@ -5552,6 +6014,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5561,7 +6026,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> update(
       HealthCheck request, core.String project, core.String healthCheck,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5581,6 +6046,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/healthChecks/' +
@@ -5626,6 +6094,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5635,7 +6106,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String httpHealthCheck,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5652,6 +6123,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/httpHealthChecks/' +
@@ -5678,6 +6152,9 @@
   /// [httpHealthCheck] - Name of the HttpHealthCheck resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [HttpHealthCheck].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5686,7 +6163,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<HttpHealthCheck> get(
-      core.String project, core.String httpHealthCheck) {
+      core.String project, core.String httpHealthCheck,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5700,6 +6178,9 @@
     if (httpHealthCheck == null) {
       throw new core.ArgumentError("Parameter httpHealthCheck is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/httpHealthChecks/' +
@@ -5738,6 +6219,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5746,7 +6230,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(HttpHealthCheck request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5763,6 +6247,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/httpHealthChecks';
@@ -5831,6 +6318,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [HttpHealthCheckList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5842,7 +6332,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5865,6 +6356,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/httpHealthChecks';
@@ -5906,6 +6400,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5915,7 +6412,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       HttpHealthCheck request, core.String project, core.String httpHealthCheck,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5935,6 +6432,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/httpHealthChecks/' +
@@ -5976,6 +6476,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5985,7 +6488,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> update(
       HttpHealthCheck request, core.String project, core.String httpHealthCheck,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6005,6 +6508,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/httpHealthChecks/' +
@@ -6050,6 +6556,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6059,7 +6568,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String httpsHealthCheck,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6076,6 +6585,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/httpsHealthChecks/' +
@@ -6102,6 +6614,9 @@
   /// [httpsHealthCheck] - Name of the HttpsHealthCheck resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [HttpsHealthCheck].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6110,7 +6625,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<HttpsHealthCheck> get(
-      core.String project, core.String httpsHealthCheck) {
+      core.String project, core.String httpsHealthCheck,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6124,6 +6640,9 @@
     if (httpsHealthCheck == null) {
       throw new core.ArgumentError("Parameter httpsHealthCheck is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/httpsHealthChecks/' +
@@ -6162,6 +6681,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6170,7 +6692,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(HttpsHealthCheck request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6187,6 +6709,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/httpsHealthChecks';
@@ -6255,6 +6780,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [HttpsHealthCheckList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6266,7 +6794,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6289,6 +6818,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/httpsHealthChecks';
@@ -6330,6 +6862,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6339,7 +6874,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(HttpsHealthCheck request, core.String project,
       core.String httpsHealthCheck,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6359,6 +6894,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/httpsHealthChecks/' +
@@ -6400,6 +6938,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6409,7 +6950,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> update(HttpsHealthCheck request, core.String project,
       core.String httpsHealthCheck,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6429,6 +6970,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/httpsHealthChecks/' +
@@ -6473,6 +7017,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6481,7 +7028,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String project, core.String image,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6498,6 +7045,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/images/' +
@@ -6540,6 +7090,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6549,7 +7102,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> deprecate(
       DeprecationStatus request, core.String project, core.String image,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6569,6 +7122,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/images/' +
@@ -6596,6 +7152,9 @@
   /// [image] - Name of the image resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Image].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6603,7 +7162,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Image> get(core.String project, core.String image) {
+  async.Future<Image> get(core.String project, core.String image,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6617,6 +7177,9 @@
     if (image == null) {
       throw new core.ArgumentError("Parameter image is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/images/' +
@@ -6643,6 +7206,9 @@
   /// [family] - Name of the image family to search for.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Image].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6650,7 +7216,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Image> getFromFamily(core.String project, core.String family) {
+  async.Future<Image> getFromFamily(core.String project, core.String family,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6664,6 +7231,9 @@
     if (family == null) {
       throw new core.ArgumentError("Parameter family is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/images/family/' +
@@ -6704,6 +7274,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6712,7 +7285,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(Image request, core.String project,
-      {core.bool forceCreate, core.String requestId}) {
+      {core.bool forceCreate, core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6732,6 +7305,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/images';
 
@@ -6803,6 +7379,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ImageList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6814,7 +7393,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6837,6 +7417,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/images';
 
@@ -6863,6 +7446,9 @@
   /// [resource] - Name of the resource for this request.
   /// Value must have pattern "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6870,8 +7456,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> setLabels(GlobalSetLabelsRequest request,
-      core.String project, core.String resource) {
+  async.Future<Operation> setLabels(
+      GlobalSetLabelsRequest request, core.String project, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6888,6 +7475,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/images/' +
@@ -6951,6 +7541,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6963,7 +7556,8 @@
       core.String project,
       core.String zone,
       core.String instanceGroupManager,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6987,6 +7581,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -7058,6 +7655,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceGroupManagerAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7070,7 +7670,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7093,6 +7694,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/aggregated/instanceGroupManagers';
@@ -7134,6 +7738,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7143,7 +7750,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String zone, core.String instanceGroupManager,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7164,6 +7771,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -7219,6 +7829,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7231,7 +7844,8 @@
       core.String project,
       core.String zone,
       core.String instanceGroupManager,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7255,6 +7869,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -7285,6 +7902,9 @@
   ///
   /// [instanceGroupManager] - The name of the managed instance group.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceGroupManager].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7293,7 +7913,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstanceGroupManager> get(
-      core.String project, core.String zone, core.String instanceGroupManager) {
+      core.String project, core.String zone, core.String instanceGroupManager,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7311,6 +7932,9 @@
       throw new core.ArgumentError(
           "Parameter instanceGroupManager is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -7362,6 +7986,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7371,7 +7998,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       InstanceGroupManager request, core.String project, core.String zone,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7391,6 +8018,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -7463,6 +8093,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceGroupManagerList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7475,7 +8108,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7501,6 +8135,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -7541,6 +8178,9 @@
   ///
   /// [pageToken] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceGroupManagersListManagedInstancesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7554,7 +8194,8 @@
           {core.String filter,
           core.int maxResults,
           core.String orderBy,
-          core.String pageToken}) {
+          core.String pageToken,
+          core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7584,6 +8225,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -7640,6 +8284,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7652,7 +8299,8 @@
       core.String project,
       core.String zone,
       core.String instanceGroupManager,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7676,6 +8324,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -7731,6 +8382,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7740,7 +8394,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> resize(core.String project, core.String zone,
       core.String instanceGroupManager, core.int size,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7765,6 +8419,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -7811,6 +8468,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7823,7 +8483,8 @@
       core.String project,
       core.String zone,
       core.String instanceGroupManager,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7847,6 +8508,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -7896,6 +8560,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7908,7 +8575,8 @@
       core.String project,
       core.String zone,
       core.String instanceGroupManager,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7932,6 +8600,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -7985,6 +8656,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7997,7 +8671,8 @@
       core.String project,
       core.String zone,
       core.String instanceGroup,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8020,6 +8695,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -8091,6 +8769,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceGroupAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8102,7 +8783,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8125,6 +8807,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/aggregated/instanceGroups';
@@ -8166,6 +8851,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8175,7 +8863,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String zone, core.String instanceGroup,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8195,6 +8883,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -8224,6 +8915,9 @@
   ///
   /// [instanceGroup] - The name of the instance group.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8232,7 +8926,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstanceGroup> get(
-      core.String project, core.String zone, core.String instanceGroup) {
+      core.String project, core.String zone, core.String instanceGroup,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8249,6 +8944,9 @@
     if (instanceGroup == null) {
       throw new core.ArgumentError("Parameter instanceGroup is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -8291,6 +8989,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8300,7 +9001,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       InstanceGroup request, core.String project, core.String zone,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8320,6 +9021,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -8392,6 +9096,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceGroupList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8403,7 +9110,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8429,6 +9137,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -8505,6 +9216,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceGroupsListInstances].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8520,7 +9234,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8552,6 +9267,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -8603,6 +9321,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8615,7 +9336,8 @@
       core.String project,
       core.String zone,
       core.String instanceGroup,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8638,6 +9360,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -8683,6 +9408,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8695,7 +9423,8 @@
       core.String project,
       core.String zone,
       core.String instanceGroup,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8718,6 +9447,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -8770,6 +9502,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8779,7 +9514,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String instanceTemplate,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8796,6 +9531,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/instanceTemplates/' +
@@ -8822,6 +9560,9 @@
   /// [instanceTemplate] - The name of the instance template.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceTemplate].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8830,7 +9571,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstanceTemplate> get(
-      core.String project, core.String instanceTemplate) {
+      core.String project, core.String instanceTemplate,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8844,6 +9586,9 @@
     if (instanceTemplate == null) {
       throw new core.ArgumentError("Parameter instanceTemplate is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/instanceTemplates/' +
@@ -8884,6 +9629,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8892,7 +9640,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(InstanceTemplate request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8909,6 +9657,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/instanceTemplates';
@@ -8977,6 +9728,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceTemplateList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8988,7 +9742,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9011,6 +9766,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/instanceTemplates';
@@ -9062,6 +9820,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9075,7 +9836,8 @@
       core.String zone,
       core.String instance,
       core.String networkInterface,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9102,6 +9864,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -9173,6 +9938,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9184,7 +9952,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9207,6 +9976,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/aggregated/instances';
 
@@ -9251,6 +10023,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9260,7 +10035,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> attachDisk(AttachedDisk request, core.String project,
       core.String zone, core.String instance,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9283,6 +10058,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -9328,6 +10106,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9337,7 +10118,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String zone, core.String instance,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9357,6 +10138,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -9404,6 +10188,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9417,7 +10204,8 @@
       core.String instance,
       core.String accessConfig,
       core.String networkInterface,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9445,6 +10233,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -9491,6 +10282,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9500,7 +10294,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> detachDisk(core.String project, core.String zone,
       core.String instance, core.String deviceName,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9524,6 +10318,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -9556,6 +10353,9 @@
   /// [instance] - Name of the instance resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Instance].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9564,7 +10364,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Instance> get(
-      core.String project, core.String zone, core.String instance) {
+      core.String project, core.String zone, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9581,6 +10382,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -9620,6 +10424,9 @@
   /// subsequent calls, this field should be set to the next value returned in
   /// the previous call.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SerialPortOutput].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9629,7 +10436,7 @@
   /// this method will complete with the same error.
   async.Future<SerialPortOutput> getSerialPortOutput(
       core.String project, core.String zone, core.String instance,
-      {core.int port, core.String start_1}) {
+      {core.int port, core.String start_1, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9652,6 +10459,9 @@
     if (start_1 != null) {
       _queryParams["start"] = [start_1];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -9696,6 +10506,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9705,7 +10518,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       Instance request, core.String project, core.String zone,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9725,6 +10538,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -9797,6 +10613,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9808,7 +10627,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9834,6 +10654,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -9877,6 +10700,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9886,7 +10712,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> reset(
       core.String project, core.String zone, core.String instance,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9906,6 +10732,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -9923,6 +10752,93 @@
     return _response.then((data) => new Operation.fromJson(data));
   }
 
+  /// Sets deletion protection on the instance.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - Project ID for this request.
+  /// Value must have pattern
+  /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))".
+  ///
+  /// [zone] - The name of the zone for this request.
+  /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
+  ///
+  /// [resource] - Name of the resource for this request.
+  /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
+  ///
+  /// [deletionProtection] - Whether the resource should be protected against
+  /// deletion.
+  ///
+  /// [requestId] - An optional request ID to identify requests. Specify a
+  /// unique request ID so that if you must retry your request, the server will
+  /// know to ignore the request if it has already been completed.
+  ///
+  /// For example, consider a situation where you make an initial request and
+  /// the request times out. If you make the request again with the same request
+  /// ID, the server can check if original operation with the same request ID
+  /// was received, and if so, will ignore the second request. This prevents
+  /// clients from accidentally creating duplicate commitments.
+  ///
+  /// The request ID must be a valid UUID with the exception that zero UUID is
+  /// not supported (00000000-0000-0000-0000-000000000000).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> setDeletionProtection(
+      core.String project, core.String zone, core.String resource,
+      {core.bool deletionProtection,
+      core.String requestId,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (project == null) {
+      throw new core.ArgumentError("Parameter project is required.");
+    }
+    if (zone == null) {
+      throw new core.ArgumentError("Parameter zone is required.");
+    }
+    if (resource == null) {
+      throw new core.ArgumentError("Parameter resource is required.");
+    }
+    if (deletionProtection != null) {
+      _queryParams["deletionProtection"] = ["${deletionProtection}"];
+    }
+    if (requestId != null) {
+      _queryParams["requestId"] = [requestId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = commons.Escaper.ecapeVariable('$project') +
+        '/zones/' +
+        commons.Escaper.ecapeVariable('$zone') +
+        '/instances/' +
+        commons.Escaper.ecapeVariable('$resource') +
+        '/setDeletionProtection';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Operation.fromJson(data));
+  }
+
   /// Sets the auto-delete flag for a disk attached to an instance.
   ///
   /// Request parameters:
@@ -9956,6 +10872,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9969,7 +10888,8 @@
       core.String instance,
       core.bool autoDelete,
       core.String deviceName,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9997,6 +10917,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -10044,6 +10967,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10053,7 +10979,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> setLabels(InstancesSetLabelsRequest request,
       core.String project, core.String zone, core.String instance,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10076,6 +11002,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -10123,6 +11052,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10135,7 +11067,8 @@
       core.String project,
       core.String zone,
       core.String instance,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10158,6 +11091,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -10205,6 +11141,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10214,7 +11153,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> setMachineType(InstancesSetMachineTypeRequest request,
       core.String project, core.String zone, core.String instance,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10237,6 +11176,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -10284,6 +11226,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10293,7 +11238,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> setMetadata(Metadata request, core.String project,
       core.String zone, core.String instance,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10316,6 +11261,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -10364,6 +11312,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10376,7 +11327,8 @@
       core.String project,
       core.String zone,
       core.String instance,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10399,6 +11351,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -10445,6 +11400,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10454,7 +11412,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> setScheduling(Scheduling request, core.String project,
       core.String zone, core.String instance,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10477,6 +11435,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -10524,6 +11485,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10536,7 +11500,8 @@
       core.String project,
       core.String zone,
       core.String instance,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10559,6 +11524,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -10605,6 +11573,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10614,7 +11585,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> setTags(
       Tags request, core.String project, core.String zone, core.String instance,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10637,6 +11608,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -10682,6 +11656,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10691,7 +11668,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> start(
       core.String project, core.String zone, core.String instance,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10711,6 +11688,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -10758,6 +11738,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10770,7 +11753,8 @@
       core.String project,
       core.String zone,
       core.String instance,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10793,6 +11777,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -10811,11 +11798,11 @@
   }
 
   /// Stops a running instance, shutting it down cleanly, and allows you to
-  /// restart the instance at a later time. Stopped instances do not incur
-  /// per-minute, virtual machine usage charges while they are stopped, but any
-  /// resources that the virtual machine is using, such as persistent disks and
-  /// static IP addresses, will continue to be charged until they are deleted.
-  /// For more information, see Stopping an instance.
+  /// restart the instance at a later time. Stopped instances do not incur VM
+  /// usage charges while they are stopped. However, resources that the VM is
+  /// using, such as persistent disks and static IP addresses, will continue to
+  /// be charged until they are deleted. For more information, see Stopping an
+  /// instance.
   ///
   /// Request parameters:
   ///
@@ -10842,6 +11829,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10851,7 +11841,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> stop(
       core.String project, core.String zone, core.String instance,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10871,6 +11861,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -10889,6 +11882,1014 @@
   }
 }
 
+class InterconnectAttachmentsResourceApi {
+  final commons.ApiRequester _requester;
+
+  InterconnectAttachmentsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Retrieves an aggregated list of interconnect attachments.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - Project ID for this request.
+  /// Value must have pattern
+  /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))".
+  ///
+  /// [filter] - Sets a filter {expression} for filtering listed resources. Your
+  /// {expression} must be in the format: field_name comparison_string
+  /// literal_string.
+  ///
+  /// The field_name is the name of the field you want to compare. Only atomic
+  /// field types are supported (string, number, boolean). The comparison_string
+  /// must be either eq (equals) or ne (not equals). The literal_string is the
+  /// string value to filter to. The literal value must be valid for the type of
+  /// field you are filtering by (string, number, boolean). For string fields,
+  /// the literal value is interpreted as a regular expression using RE2 syntax.
+  /// The literal value must match the entire field.
+  ///
+  /// For example, to filter for instances that do not have a name of
+  /// example-instance, you would use name ne example-instance.
+  ///
+  /// You can filter on nested fields. For example, you could filter on
+  /// instances that have set the scheduling.automaticRestart field to true. Use
+  /// filtering on nested fields to take advantage of labels to organize and
+  /// search for results based on label values.
+  ///
+  /// To filter on multiple expressions, provide each separate expression within
+  /// parentheses. For example, (scheduling.automaticRestart eq true) (zone eq
+  /// us-central1-f). Multiple expressions are treated as AND expressions,
+  /// meaning that resources must match all expressions to pass the filters.
+  ///
+  /// [maxResults] - The maximum number of results per page that should be
+  /// returned. If the number of available results is larger than maxResults,
+  /// Compute Engine returns a nextPageToken that can be used to get the next
+  /// page of results in subsequent list requests. Acceptable values are 0 to
+  /// 500, inclusive. (Default: 500)
+  ///
+  /// [orderBy] - Sorts list results by a certain order. By default, results are
+  /// returned in alphanumerical order based on the resource name.
+  ///
+  /// You can also sort results in descending order based on the creation
+  /// timestamp using orderBy="creationTimestamp desc". This sorts results based
+  /// on the creationTimestamp field in reverse chronological order (newest
+  /// result first). Use this to sort resources like operations so that the
+  /// newest operation is returned first.
+  ///
+  /// Currently, only sorting by name or creationTimestamp desc is supported.
+  ///
+  /// [pageToken] - Specifies a page token to use. Set pageToken to the
+  /// nextPageToken returned by a previous list request to get the next page of
+  /// results.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [InterconnectAttachmentAggregatedList].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<InterconnectAttachmentAggregatedList> aggregatedList(
+      core.String project,
+      {core.String filter,
+      core.int maxResults,
+      core.String orderBy,
+      core.String pageToken,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (project == null) {
+      throw new core.ArgumentError("Parameter project is required.");
+    }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if (maxResults != null) {
+      _queryParams["maxResults"] = ["${maxResults}"];
+    }
+    if (orderBy != null) {
+      _queryParams["orderBy"] = [orderBy];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = commons.Escaper.ecapeVariable('$project') +
+        '/aggregated/interconnectAttachments';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then(
+        (data) => new InterconnectAttachmentAggregatedList.fromJson(data));
+  }
+
+  /// Deletes the specified interconnect attachment.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - Project ID for this request.
+  /// Value must have pattern
+  /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))".
+  ///
+  /// [region] - Name of the region for this request.
+  /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
+  ///
+  /// [interconnectAttachment] - Name of the interconnect attachment to delete.
+  /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
+  ///
+  /// [requestId] - An optional request ID to identify requests. Specify a
+  /// unique request ID so that if you must retry your request, the server will
+  /// know to ignore the request if it has already been completed.
+  ///
+  /// For example, consider a situation where you make an initial request and
+  /// the request times out. If you make the request again with the same request
+  /// ID, the server can check if original operation with the same request ID
+  /// was received, and if so, will ignore the second request. This prevents
+  /// clients from accidentally creating duplicate commitments.
+  ///
+  /// The request ID must be a valid UUID with the exception that zero UUID is
+  /// not supported (00000000-0000-0000-0000-000000000000).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> delete(core.String project, core.String region,
+      core.String interconnectAttachment,
+      {core.String requestId, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (project == null) {
+      throw new core.ArgumentError("Parameter project is required.");
+    }
+    if (region == null) {
+      throw new core.ArgumentError("Parameter region is required.");
+    }
+    if (interconnectAttachment == null) {
+      throw new core.ArgumentError(
+          "Parameter interconnectAttachment is required.");
+    }
+    if (requestId != null) {
+      _queryParams["requestId"] = [requestId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = commons.Escaper.ecapeVariable('$project') +
+        '/regions/' +
+        commons.Escaper.ecapeVariable('$region') +
+        '/interconnectAttachments/' +
+        commons.Escaper.ecapeVariable('$interconnectAttachment');
+
+    var _response = _requester.request(_url, "DELETE",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Operation.fromJson(data));
+  }
+
+  /// Returns the specified interconnect attachment.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - Project ID for this request.
+  /// Value must have pattern
+  /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))".
+  ///
+  /// [region] - Name of the region for this request.
+  /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
+  ///
+  /// [interconnectAttachment] - Name of the interconnect attachment to return.
+  /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [InterconnectAttachment].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<InterconnectAttachment> get(core.String project,
+      core.String region, core.String interconnectAttachment,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (project == null) {
+      throw new core.ArgumentError("Parameter project is required.");
+    }
+    if (region == null) {
+      throw new core.ArgumentError("Parameter region is required.");
+    }
+    if (interconnectAttachment == null) {
+      throw new core.ArgumentError(
+          "Parameter interconnectAttachment is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = commons.Escaper.ecapeVariable('$project') +
+        '/regions/' +
+        commons.Escaper.ecapeVariable('$region') +
+        '/interconnectAttachments/' +
+        commons.Escaper.ecapeVariable('$interconnectAttachment');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new InterconnectAttachment.fromJson(data));
+  }
+
+  /// Creates an InterconnectAttachment in the specified project using the data
+  /// included in the request.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - Project ID for this request.
+  /// Value must have pattern
+  /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))".
+  ///
+  /// [region] - Name of the region for this request.
+  /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
+  ///
+  /// [requestId] - An optional request ID to identify requests. Specify a
+  /// unique request ID so that if you must retry your request, the server will
+  /// know to ignore the request if it has already been completed.
+  ///
+  /// For example, consider a situation where you make an initial request and
+  /// the request times out. If you make the request again with the same request
+  /// ID, the server can check if original operation with the same request ID
+  /// was received, and if so, will ignore the second request. This prevents
+  /// clients from accidentally creating duplicate commitments.
+  ///
+  /// The request ID must be a valid UUID with the exception that zero UUID is
+  /// not supported (00000000-0000-0000-0000-000000000000).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> insert(
+      InterconnectAttachment request, core.String project, core.String region,
+      {core.String requestId, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (project == null) {
+      throw new core.ArgumentError("Parameter project is required.");
+    }
+    if (region == null) {
+      throw new core.ArgumentError("Parameter region is required.");
+    }
+    if (requestId != null) {
+      _queryParams["requestId"] = [requestId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = commons.Escaper.ecapeVariable('$project') +
+        '/regions/' +
+        commons.Escaper.ecapeVariable('$region') +
+        '/interconnectAttachments';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Operation.fromJson(data));
+  }
+
+  /// Retrieves the list of interconnect attachments contained within the
+  /// specified region.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - Project ID for this request.
+  /// Value must have pattern
+  /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))".
+  ///
+  /// [region] - Name of the region for this request.
+  /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
+  ///
+  /// [filter] - Sets a filter {expression} for filtering listed resources. Your
+  /// {expression} must be in the format: field_name comparison_string
+  /// literal_string.
+  ///
+  /// The field_name is the name of the field you want to compare. Only atomic
+  /// field types are supported (string, number, boolean). The comparison_string
+  /// must be either eq (equals) or ne (not equals). The literal_string is the
+  /// string value to filter to. The literal value must be valid for the type of
+  /// field you are filtering by (string, number, boolean). For string fields,
+  /// the literal value is interpreted as a regular expression using RE2 syntax.
+  /// The literal value must match the entire field.
+  ///
+  /// For example, to filter for instances that do not have a name of
+  /// example-instance, you would use name ne example-instance.
+  ///
+  /// You can filter on nested fields. For example, you could filter on
+  /// instances that have set the scheduling.automaticRestart field to true. Use
+  /// filtering on nested fields to take advantage of labels to organize and
+  /// search for results based on label values.
+  ///
+  /// To filter on multiple expressions, provide each separate expression within
+  /// parentheses. For example, (scheduling.automaticRestart eq true) (zone eq
+  /// us-central1-f). Multiple expressions are treated as AND expressions,
+  /// meaning that resources must match all expressions to pass the filters.
+  ///
+  /// [maxResults] - The maximum number of results per page that should be
+  /// returned. If the number of available results is larger than maxResults,
+  /// Compute Engine returns a nextPageToken that can be used to get the next
+  /// page of results in subsequent list requests. Acceptable values are 0 to
+  /// 500, inclusive. (Default: 500)
+  ///
+  /// [orderBy] - Sorts list results by a certain order. By default, results are
+  /// returned in alphanumerical order based on the resource name.
+  ///
+  /// You can also sort results in descending order based on the creation
+  /// timestamp using orderBy="creationTimestamp desc". This sorts results based
+  /// on the creationTimestamp field in reverse chronological order (newest
+  /// result first). Use this to sort resources like operations so that the
+  /// newest operation is returned first.
+  ///
+  /// Currently, only sorting by name or creationTimestamp desc is supported.
+  ///
+  /// [pageToken] - Specifies a page token to use. Set pageToken to the
+  /// nextPageToken returned by a previous list request to get the next page of
+  /// results.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [InterconnectAttachmentList].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<InterconnectAttachmentList> list(
+      core.String project, core.String region,
+      {core.String filter,
+      core.int maxResults,
+      core.String orderBy,
+      core.String pageToken,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (project == null) {
+      throw new core.ArgumentError("Parameter project is required.");
+    }
+    if (region == null) {
+      throw new core.ArgumentError("Parameter region is required.");
+    }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if (maxResults != null) {
+      _queryParams["maxResults"] = ["${maxResults}"];
+    }
+    if (orderBy != null) {
+      _queryParams["orderBy"] = [orderBy];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = commons.Escaper.ecapeVariable('$project') +
+        '/regions/' +
+        commons.Escaper.ecapeVariable('$region') +
+        '/interconnectAttachments';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new InterconnectAttachmentList.fromJson(data));
+  }
+}
+
+class InterconnectLocationsResourceApi {
+  final commons.ApiRequester _requester;
+
+  InterconnectLocationsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Returns the details for the specified interconnect location. Get a list of
+  /// available interconnect locations by making a list() request.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - Project ID for this request.
+  /// Value must have pattern
+  /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))".
+  ///
+  /// [interconnectLocation] - Name of the interconnect location to return.
+  /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [InterconnectLocation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<InterconnectLocation> get(
+      core.String project, core.String interconnectLocation,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (project == null) {
+      throw new core.ArgumentError("Parameter project is required.");
+    }
+    if (interconnectLocation == null) {
+      throw new core.ArgumentError(
+          "Parameter interconnectLocation is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = commons.Escaper.ecapeVariable('$project') +
+        '/global/interconnectLocations/' +
+        commons.Escaper.ecapeVariable('$interconnectLocation');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new InterconnectLocation.fromJson(data));
+  }
+
+  /// Retrieves the list of interconnect locations available to the specified
+  /// project.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - Project ID for this request.
+  /// Value must have pattern
+  /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))".
+  ///
+  /// [filter] - Sets a filter {expression} for filtering listed resources. Your
+  /// {expression} must be in the format: field_name comparison_string
+  /// literal_string.
+  ///
+  /// The field_name is the name of the field you want to compare. Only atomic
+  /// field types are supported (string, number, boolean). The comparison_string
+  /// must be either eq (equals) or ne (not equals). The literal_string is the
+  /// string value to filter to. The literal value must be valid for the type of
+  /// field you are filtering by (string, number, boolean). For string fields,
+  /// the literal value is interpreted as a regular expression using RE2 syntax.
+  /// The literal value must match the entire field.
+  ///
+  /// For example, to filter for instances that do not have a name of
+  /// example-instance, you would use name ne example-instance.
+  ///
+  /// You can filter on nested fields. For example, you could filter on
+  /// instances that have set the scheduling.automaticRestart field to true. Use
+  /// filtering on nested fields to take advantage of labels to organize and
+  /// search for results based on label values.
+  ///
+  /// To filter on multiple expressions, provide each separate expression within
+  /// parentheses. For example, (scheduling.automaticRestart eq true) (zone eq
+  /// us-central1-f). Multiple expressions are treated as AND expressions,
+  /// meaning that resources must match all expressions to pass the filters.
+  ///
+  /// [maxResults] - The maximum number of results per page that should be
+  /// returned. If the number of available results is larger than maxResults,
+  /// Compute Engine returns a nextPageToken that can be used to get the next
+  /// page of results in subsequent list requests. Acceptable values are 0 to
+  /// 500, inclusive. (Default: 500)
+  ///
+  /// [orderBy] - Sorts list results by a certain order. By default, results are
+  /// returned in alphanumerical order based on the resource name.
+  ///
+  /// You can also sort results in descending order based on the creation
+  /// timestamp using orderBy="creationTimestamp desc". This sorts results based
+  /// on the creationTimestamp field in reverse chronological order (newest
+  /// result first). Use this to sort resources like operations so that the
+  /// newest operation is returned first.
+  ///
+  /// Currently, only sorting by name or creationTimestamp desc is supported.
+  ///
+  /// [pageToken] - Specifies a page token to use. Set pageToken to the
+  /// nextPageToken returned by a previous list request to get the next page of
+  /// results.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [InterconnectLocationList].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<InterconnectLocationList> list(core.String project,
+      {core.String filter,
+      core.int maxResults,
+      core.String orderBy,
+      core.String pageToken,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (project == null) {
+      throw new core.ArgumentError("Parameter project is required.");
+    }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if (maxResults != null) {
+      _queryParams["maxResults"] = ["${maxResults}"];
+    }
+    if (orderBy != null) {
+      _queryParams["orderBy"] = [orderBy];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = commons.Escaper.ecapeVariable('$project') +
+        '/global/interconnectLocations';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new InterconnectLocationList.fromJson(data));
+  }
+}
+
+class InterconnectsResourceApi {
+  final commons.ApiRequester _requester;
+
+  InterconnectsResourceApi(commons.ApiRequester client) : _requester = client;
+
+  /// Deletes the specified interconnect.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - Project ID for this request.
+  /// Value must have pattern
+  /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))".
+  ///
+  /// [interconnect] - Name of the interconnect to delete.
+  /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
+  ///
+  /// [requestId] - An optional request ID to identify requests. Specify a
+  /// unique request ID so that if you must retry your request, the server will
+  /// know to ignore the request if it has already been completed.
+  ///
+  /// For example, consider a situation where you make an initial request and
+  /// the request times out. If you make the request again with the same request
+  /// ID, the server can check if original operation with the same request ID
+  /// was received, and if so, will ignore the second request. This prevents
+  /// clients from accidentally creating duplicate commitments.
+  ///
+  /// The request ID must be a valid UUID with the exception that zero UUID is
+  /// not supported (00000000-0000-0000-0000-000000000000).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> delete(core.String project, core.String interconnect,
+      {core.String requestId, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (project == null) {
+      throw new core.ArgumentError("Parameter project is required.");
+    }
+    if (interconnect == null) {
+      throw new core.ArgumentError("Parameter interconnect is required.");
+    }
+    if (requestId != null) {
+      _queryParams["requestId"] = [requestId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = commons.Escaper.ecapeVariable('$project') +
+        '/global/interconnects/' +
+        commons.Escaper.ecapeVariable('$interconnect');
+
+    var _response = _requester.request(_url, "DELETE",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Operation.fromJson(data));
+  }
+
+  /// Returns the specified interconnect. Get a list of available interconnects
+  /// by making a list() request.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - Project ID for this request.
+  /// Value must have pattern
+  /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))".
+  ///
+  /// [interconnect] - Name of the interconnect to return.
+  /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Interconnect].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Interconnect> get(core.String project, core.String interconnect,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (project == null) {
+      throw new core.ArgumentError("Parameter project is required.");
+    }
+    if (interconnect == null) {
+      throw new core.ArgumentError("Parameter interconnect is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = commons.Escaper.ecapeVariable('$project') +
+        '/global/interconnects/' +
+        commons.Escaper.ecapeVariable('$interconnect');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Interconnect.fromJson(data));
+  }
+
+  /// Creates a Interconnect in the specified project using the data included in
+  /// the request.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - Project ID for this request.
+  /// Value must have pattern
+  /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))".
+  ///
+  /// [requestId] - An optional request ID to identify requests. Specify a
+  /// unique request ID so that if you must retry your request, the server will
+  /// know to ignore the request if it has already been completed.
+  ///
+  /// For example, consider a situation where you make an initial request and
+  /// the request times out. If you make the request again with the same request
+  /// ID, the server can check if original operation with the same request ID
+  /// was received, and if so, will ignore the second request. This prevents
+  /// clients from accidentally creating duplicate commitments.
+  ///
+  /// The request ID must be a valid UUID with the exception that zero UUID is
+  /// not supported (00000000-0000-0000-0000-000000000000).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> insert(Interconnect request, core.String project,
+      {core.String requestId, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (project == null) {
+      throw new core.ArgumentError("Parameter project is required.");
+    }
+    if (requestId != null) {
+      _queryParams["requestId"] = [requestId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = commons.Escaper.ecapeVariable('$project') + '/global/interconnects';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Operation.fromJson(data));
+  }
+
+  /// Retrieves the list of interconnect available to the specified project.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - Project ID for this request.
+  /// Value must have pattern
+  /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))".
+  ///
+  /// [filter] - Sets a filter {expression} for filtering listed resources. Your
+  /// {expression} must be in the format: field_name comparison_string
+  /// literal_string.
+  ///
+  /// The field_name is the name of the field you want to compare. Only atomic
+  /// field types are supported (string, number, boolean). The comparison_string
+  /// must be either eq (equals) or ne (not equals). The literal_string is the
+  /// string value to filter to. The literal value must be valid for the type of
+  /// field you are filtering by (string, number, boolean). For string fields,
+  /// the literal value is interpreted as a regular expression using RE2 syntax.
+  /// The literal value must match the entire field.
+  ///
+  /// For example, to filter for instances that do not have a name of
+  /// example-instance, you would use name ne example-instance.
+  ///
+  /// You can filter on nested fields. For example, you could filter on
+  /// instances that have set the scheduling.automaticRestart field to true. Use
+  /// filtering on nested fields to take advantage of labels to organize and
+  /// search for results based on label values.
+  ///
+  /// To filter on multiple expressions, provide each separate expression within
+  /// parentheses. For example, (scheduling.automaticRestart eq true) (zone eq
+  /// us-central1-f). Multiple expressions are treated as AND expressions,
+  /// meaning that resources must match all expressions to pass the filters.
+  ///
+  /// [maxResults] - The maximum number of results per page that should be
+  /// returned. If the number of available results is larger than maxResults,
+  /// Compute Engine returns a nextPageToken that can be used to get the next
+  /// page of results in subsequent list requests. Acceptable values are 0 to
+  /// 500, inclusive. (Default: 500)
+  ///
+  /// [orderBy] - Sorts list results by a certain order. By default, results are
+  /// returned in alphanumerical order based on the resource name.
+  ///
+  /// You can also sort results in descending order based on the creation
+  /// timestamp using orderBy="creationTimestamp desc". This sorts results based
+  /// on the creationTimestamp field in reverse chronological order (newest
+  /// result first). Use this to sort resources like operations so that the
+  /// newest operation is returned first.
+  ///
+  /// Currently, only sorting by name or creationTimestamp desc is supported.
+  ///
+  /// [pageToken] - Specifies a page token to use. Set pageToken to the
+  /// nextPageToken returned by a previous list request to get the next page of
+  /// results.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [InterconnectList].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<InterconnectList> list(core.String project,
+      {core.String filter,
+      core.int maxResults,
+      core.String orderBy,
+      core.String pageToken,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (project == null) {
+      throw new core.ArgumentError("Parameter project is required.");
+    }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if (maxResults != null) {
+      _queryParams["maxResults"] = ["${maxResults}"];
+    }
+    if (orderBy != null) {
+      _queryParams["orderBy"] = [orderBy];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = commons.Escaper.ecapeVariable('$project') + '/global/interconnects';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new InterconnectList.fromJson(data));
+  }
+
+  /// Updates the specified interconnect with the data included in the request.
+  /// This method supports PATCH semantics and uses the JSON merge patch format
+  /// and processing rules.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - Project ID for this request.
+  /// Value must have pattern
+  /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))".
+  ///
+  /// [interconnect] - Name of the interconnect to update.
+  /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
+  ///
+  /// [requestId] - An optional request ID to identify requests. Specify a
+  /// unique request ID so that if you must retry your request, the server will
+  /// know to ignore the request if it has already been completed.
+  ///
+  /// For example, consider a situation where you make an initial request and
+  /// the request times out. If you make the request again with the same request
+  /// ID, the server can check if original operation with the same request ID
+  /// was received, and if so, will ignore the second request. This prevents
+  /// clients from accidentally creating duplicate commitments.
+  ///
+  /// The request ID must be a valid UUID with the exception that zero UUID is
+  /// not supported (00000000-0000-0000-0000-000000000000).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> patch(
+      Interconnect request, core.String project, core.String interconnect,
+      {core.String requestId, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (project == null) {
+      throw new core.ArgumentError("Parameter project is required.");
+    }
+    if (interconnect == null) {
+      throw new core.ArgumentError("Parameter interconnect is required.");
+    }
+    if (requestId != null) {
+      _queryParams["requestId"] = [requestId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = commons.Escaper.ecapeVariable('$project') +
+        '/global/interconnects/' +
+        commons.Escaper.ecapeVariable('$interconnect');
+
+    var _response = _requester.request(_url, "PATCH",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Operation.fromJson(data));
+  }
+}
+
 class LicensesResourceApi {
   final commons.ApiRequester _requester;
 
@@ -10905,6 +12906,9 @@
   /// [license] - Name of the License resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [License].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10912,7 +12916,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<License> get(core.String project, core.String license) {
+  async.Future<License> get(core.String project, core.String license,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10926,6 +12931,9 @@
     if (license == null) {
       throw new core.ArgumentError("Parameter license is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/licenses/' +
@@ -11000,6 +13008,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MachineTypeAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11011,7 +13022,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11034,6 +13046,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/aggregated/machineTypes';
@@ -11063,6 +13078,9 @@
   /// [machineType] - Name of the machine type to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MachineType].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11071,7 +13089,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<MachineType> get(
-      core.String project, core.String zone, core.String machineType) {
+      core.String project, core.String zone, core.String machineType,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11088,6 +13107,9 @@
     if (machineType == null) {
       throw new core.ArgumentError("Parameter machineType is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -11161,6 +13183,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MachineTypeList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11172,7 +13197,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11198,6 +13224,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -11245,6 +13274,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11254,7 +13286,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> addPeering(NetworksAddPeeringRequest request,
       core.String project, core.String network,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11274,6 +13306,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/networks/' +
@@ -11313,6 +13348,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11321,7 +13359,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String project, core.String network,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11338,6 +13376,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/networks/' +
@@ -11364,6 +13405,9 @@
   /// [network] - Name of the network to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Network].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11371,7 +13415,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Network> get(core.String project, core.String network) {
+  async.Future<Network> get(core.String project, core.String network,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11385,6 +13430,9 @@
     if (network == null) {
       throw new core.ArgumentError("Parameter network is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/networks/' +
@@ -11423,6 +13471,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11431,7 +13482,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(Network request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11448,6 +13499,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/networks';
 
@@ -11514,6 +13568,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [NetworkList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11525,7 +13582,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11548,6 +13606,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/networks';
 
@@ -11586,6 +13647,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11595,7 +13659,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       Network request, core.String project, core.String network,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11615,6 +13679,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/networks/' +
@@ -11655,6 +13722,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11664,7 +13734,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> removePeering(NetworksRemovePeeringRequest request,
       core.String project, core.String network,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11684,6 +13754,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/networks/' +
@@ -11723,6 +13796,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11732,7 +13808,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> switchToCustomMode(
       core.String project, core.String network,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11749,6 +13825,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/networks/' +
@@ -11791,6 +13870,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11799,7 +13881,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> disableXpnHost(core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11813,6 +13895,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/disableXpnHost';
 
@@ -11849,6 +13934,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11858,7 +13946,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> disableXpnResource(
       ProjectsDisableXpnResourceRequest request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11875,6 +13963,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/disableXpnResource';
 
@@ -11908,6 +13999,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11916,7 +14010,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> enableXpnHost(core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11930,6 +14024,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/enableXpnHost';
 
@@ -11967,6 +14064,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11976,7 +14076,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> enableXpnResource(
       ProjectsEnableXpnResourceRequest request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11993,6 +14093,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/enableXpnResource';
 
@@ -12013,6 +14116,9 @@
   /// Value must have pattern
   /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Project].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12020,7 +14126,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Project> get(core.String project) {
+  async.Future<Project> get(core.String project, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12031,6 +14137,9 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project');
 
@@ -12052,6 +14161,9 @@
   /// Value must have pattern
   /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Project].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12059,7 +14171,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Project> getXpnHost(core.String project) {
+  async.Future<Project> getXpnHost(core.String project, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12070,6 +14182,9 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/getXpnHost';
 
@@ -12099,6 +14214,9 @@
   ///
   /// [pageToken] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProjectsGetXpnResources].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12110,7 +14228,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12133,6 +14252,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/getXpnResources';
 
@@ -12163,6 +14285,9 @@
   ///
   /// [pageToken] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [XpnHostList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12175,7 +14300,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12201,6 +14327,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/listXpnHosts';
 
@@ -12236,6 +14365,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12244,7 +14376,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> moveDisk(DiskMoveRequest request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12261,6 +14393,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/moveDisk';
 
@@ -12297,6 +14432,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12306,7 +14444,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> moveInstance(
       InstanceMoveRequest request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12323,6 +14461,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/moveInstance';
 
@@ -12359,6 +14500,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12368,7 +14512,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> setCommonInstanceMetadata(
       Metadata request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12385,6 +14529,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/setCommonInstanceMetadata';
@@ -12423,6 +14570,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12432,7 +14582,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> setUsageExportBucket(
       UsageExportLocation request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12449,6 +14599,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/setUsageExportBucket';
 
@@ -12495,6 +14648,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12504,7 +14660,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String region, core.String autoscaler,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12524,6 +14680,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -12554,6 +14713,9 @@
   /// [autoscaler] - Name of the autoscaler to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Autoscaler].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12562,7 +14724,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Autoscaler> get(
-      core.String project, core.String region, core.String autoscaler) {
+      core.String project, core.String region, core.String autoscaler,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12579,6 +14742,9 @@
     if (autoscaler == null) {
       throw new core.ArgumentError("Parameter autoscaler is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -12622,6 +14788,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12631,7 +14800,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       Autoscaler request, core.String project, core.String region,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12651,6 +14820,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -12723,6 +14895,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RegionAutoscalerList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12735,7 +14910,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12761,6 +14937,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -12807,6 +14986,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12816,7 +14998,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       Autoscaler request, core.String project, core.String region,
-      {core.String autoscaler, core.String requestId}) {
+      {core.String autoscaler, core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12839,6 +15021,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -12884,6 +15069,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12893,7 +15081,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> update(
       Autoscaler request, core.String project, core.String region,
-      {core.String autoscaler, core.String requestId}) {
+      {core.String autoscaler, core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12916,6 +15104,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -12965,6 +15156,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12974,7 +15168,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String region, core.String backendService,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12994,6 +15188,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -13024,6 +15221,9 @@
   /// [backendService] - Name of the BackendService resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BackendService].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -13032,7 +15232,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BackendService> get(
-      core.String project, core.String region, core.String backendService) {
+      core.String project, core.String region, core.String backendService,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -13049,6 +15250,9 @@
     if (backendService == null) {
       throw new core.ArgumentError("Parameter backendService is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -13083,6 +15287,9 @@
   /// queried instance belongs.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BackendServiceGroupHealth].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -13094,7 +15301,8 @@
       ResourceGroupReference request,
       core.String project,
       core.String region,
-      core.String backendService) {
+      core.String backendService,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -13114,6 +15322,9 @@
     if (backendService == null) {
       throw new core.ArgumentError("Parameter backendService is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -13161,6 +15372,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -13170,7 +15384,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       BackendService request, core.String project, core.String region,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -13190,6 +15404,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -13263,6 +15480,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BackendServiceList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -13274,7 +15494,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -13300,6 +15521,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -13348,6 +15572,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -13357,7 +15584,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(BackendService request, core.String project,
       core.String region, core.String backendService,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -13380,6 +15607,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -13428,6 +15658,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -13437,7 +15670,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> update(BackendService request, core.String project,
       core.String region, core.String backendService,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -13460,6 +15693,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -13537,6 +15773,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommitmentAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -13548,7 +15787,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -13571,6 +15811,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/aggregated/commitments';
@@ -13600,6 +15843,9 @@
   /// [commitment] - Name of the commitment to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Commitment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -13608,7 +15854,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Commitment> get(
-      core.String project, core.String region, core.String commitment) {
+      core.String project, core.String region, core.String commitment,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -13625,6 +15872,9 @@
     if (commitment == null) {
       throw new core.ArgumentError("Parameter commitment is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -13668,6 +15918,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -13677,7 +15930,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       Commitment request, core.String project, core.String region,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -13697,6 +15950,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -13769,6 +16025,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommitmentList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -13780,7 +16039,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -13806,6 +16066,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -13869,6 +16132,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -13881,7 +16147,8 @@
       core.String project,
       core.String region,
       core.String instanceGroupManager,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -13905,6 +16172,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -13948,6 +16218,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -13957,7 +16230,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String region, core.String instanceGroupManager,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -13978,6 +16251,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -14033,6 +16309,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -14045,7 +16324,8 @@
       core.String project,
       core.String region,
       core.String instanceGroupManager,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -14069,6 +16349,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -14098,6 +16381,9 @@
   ///
   /// [instanceGroupManager] - Name of the managed instance group to return.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceGroupManager].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -14105,8 +16391,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<InstanceGroupManager> get(core.String project,
-      core.String region, core.String instanceGroupManager) {
+  async.Future<InstanceGroupManager> get(
+      core.String project, core.String region, core.String instanceGroupManager,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -14124,6 +16411,9 @@
       throw new core.ArgumentError(
           "Parameter instanceGroupManager is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -14173,6 +16463,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -14182,7 +16475,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       InstanceGroupManager request, core.String project, core.String region,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -14202,6 +16495,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -14274,6 +16570,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RegionInstanceGroupManagerList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -14286,7 +16585,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -14312,6 +16612,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -14350,6 +16653,9 @@
   ///
   /// [pageToken] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RegionInstanceGroupManagersListInstancesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -14363,7 +16669,8 @@
           {core.String filter,
           core.int maxResults,
           core.String orderBy,
-          core.String pageToken}) {
+          core.String pageToken,
+          core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -14393,6 +16700,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -14449,6 +16759,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -14461,7 +16774,8 @@
       core.String project,
       core.String region,
       core.String instanceGroupManager,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -14485,6 +16799,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -14540,6 +16857,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -14549,7 +16869,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> resize(core.String project, core.String region,
       core.String instanceGroupManager, core.int size,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -14574,6 +16894,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -14619,6 +16942,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -14631,7 +16957,8 @@
       core.String project,
       core.String region,
       core.String instanceGroupManager,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -14655,6 +16982,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -14700,6 +17030,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -14712,7 +17045,8 @@
       core.String project,
       core.String region,
       core.String instanceGroupManager,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -14736,6 +17070,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -14772,6 +17109,9 @@
   ///
   /// [instanceGroup] - Name of the instance group resource to return.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -14780,7 +17120,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstanceGroup> get(
-      core.String project, core.String region, core.String instanceGroup) {
+      core.String project, core.String region, core.String instanceGroup,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -14797,6 +17138,9 @@
     if (instanceGroup == null) {
       throw new core.ArgumentError("Parameter instanceGroup is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -14870,6 +17214,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RegionInstanceGroupList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -14882,7 +17229,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -14908,6 +17256,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -14986,6 +17337,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RegionInstanceGroupsListInstances].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -15001,7 +17355,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -15033,6 +17388,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -15079,6 +17437,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -15091,7 +17452,8 @@
       core.String project,
       core.String region,
       core.String instanceGroup,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -15114,6 +17476,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -15152,13 +17517,17 @@
   /// [operation] - Name of the Operations resource to delete.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String project, core.String region, core.String operation) {
+      core.String project, core.String region, core.String operation,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -15175,6 +17544,9 @@
     if (operation == null) {
       throw new core.ArgumentError("Parameter operation is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -15207,6 +17579,9 @@
   /// [operation] - Name of the Operations resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -15215,7 +17590,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> get(
-      core.String project, core.String region, core.String operation) {
+      core.String project, core.String region, core.String operation,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -15232,6 +17608,9 @@
     if (operation == null) {
       throw new core.ArgumentError("Parameter operation is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -15306,6 +17685,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OperationList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -15317,7 +17699,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -15343,6 +17726,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -15376,6 +17762,9 @@
   /// [region] - Name of the region resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Region].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -15383,7 +17772,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Region> get(core.String project, core.String region) {
+  async.Future<Region> get(core.String project, core.String region,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -15397,6 +17787,9 @@
     if (region == null) {
       throw new core.ArgumentError("Parameter region is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -15465,6 +17858,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RegionList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -15476,7 +17872,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -15499,6 +17896,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/regions';
 
@@ -15571,6 +17971,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RouterAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -15582,7 +17985,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -15605,6 +18009,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/aggregated/routers';
 
@@ -15644,6 +18051,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -15653,7 +18063,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String region, core.String router,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -15673,6 +18083,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -15704,6 +18117,9 @@
   /// [router] - Name of the Router resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Router].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -15712,7 +18128,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Router> get(
-      core.String project, core.String region, core.String router) {
+      core.String project, core.String region, core.String router,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -15729,6 +18146,9 @@
     if (router == null) {
       throw new core.ArgumentError("Parameter router is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -15759,6 +18179,9 @@
   /// [router] - Name of the Router resource to query.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RouterStatusResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -15767,7 +18190,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RouterStatusResponse> getRouterStatus(
-      core.String project, core.String region, core.String router) {
+      core.String project, core.String region, core.String router,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -15784,6 +18208,9 @@
     if (router == null) {
       throw new core.ArgumentError("Parameter router is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -15828,6 +18255,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -15837,7 +18267,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       Router request, core.String project, core.String region,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -15857,6 +18287,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -15929,6 +18362,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RouterList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -15940,7 +18376,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -15966,6 +18403,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -16012,6 +18452,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -16021,7 +18464,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(Router request, core.String project,
       core.String region, core.String router,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -16044,6 +18487,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -16077,6 +18523,9 @@
   /// [router] - Name of the Router resource to query.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RoutersPreviewResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -16085,7 +18534,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RoutersPreviewResponse> preview(Router request,
-      core.String project, core.String region, core.String router) {
+      core.String project, core.String region, core.String router,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -16105,6 +18555,9 @@
     if (router == null) {
       throw new core.ArgumentError("Parameter router is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -16152,6 +18605,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -16161,7 +18617,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> update(Router request, core.String project,
       core.String region, core.String router,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -16184,6 +18640,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -16230,6 +18689,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -16238,7 +18700,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String project, core.String route,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -16255,6 +18717,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/routes/' +
@@ -16281,6 +18746,9 @@
   /// [route] - Name of the Route resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Route].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -16288,7 +18756,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Route> get(core.String project, core.String route) {
+  async.Future<Route> get(core.String project, core.String route,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -16302,6 +18771,9 @@
     if (route == null) {
       throw new core.ArgumentError("Parameter route is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/routes/' +
@@ -16340,6 +18812,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -16348,7 +18823,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(Route request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -16365,6 +18840,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/routes';
 
@@ -16431,6 +18909,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RouteList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -16442,7 +18923,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -16465,6 +18947,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/routes';
 
@@ -16513,6 +18998,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -16521,7 +19009,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String project, core.String snapshot,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -16538,6 +19026,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/snapshots/' +
@@ -16564,6 +19055,9 @@
   /// [snapshot] - Name of the Snapshot resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Snapshot].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -16571,7 +19065,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Snapshot> get(core.String project, core.String snapshot) {
+  async.Future<Snapshot> get(core.String project, core.String snapshot,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -16585,6 +19080,9 @@
     if (snapshot == null) {
       throw new core.ArgumentError("Parameter snapshot is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/snapshots/' +
@@ -16654,6 +19152,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SnapshotList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -16665,7 +19166,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -16688,6 +19190,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/snapshots';
 
@@ -16714,6 +19219,9 @@
   /// [resource] - Name of the resource for this request.
   /// Value must have pattern "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -16721,8 +19229,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> setLabels(GlobalSetLabelsRequest request,
-      core.String project, core.String resource) {
+  async.Future<Operation> setLabels(
+      GlobalSetLabelsRequest request, core.String project, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -16739,6 +19248,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/snapshots/' +
@@ -16784,6 +19296,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -16793,7 +19308,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String sslCertificate,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -16810,6 +19325,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/sslCertificates/' +
@@ -16836,6 +19354,9 @@
   /// [sslCertificate] - Name of the SslCertificate resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SslCertificate].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -16844,7 +19365,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SslCertificate> get(
-      core.String project, core.String sslCertificate) {
+      core.String project, core.String sslCertificate,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -16858,6 +19380,9 @@
     if (sslCertificate == null) {
       throw new core.ArgumentError("Parameter sslCertificate is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/sslCertificates/' +
@@ -16896,6 +19421,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -16904,7 +19432,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(SslCertificate request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -16921,6 +19449,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/sslCertificates';
@@ -16989,6 +19520,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SslCertificateList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -17000,7 +19534,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -17023,6 +19558,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/sslCertificates';
@@ -17096,6 +19634,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SubnetworkAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -17107,7 +19648,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -17130,6 +19672,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/aggregated/subnetworks';
@@ -17171,6 +19716,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -17180,7 +19728,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String region, core.String subnetwork,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -17200,6 +19748,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -17245,6 +19796,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -17257,7 +19811,8 @@
       core.String project,
       core.String region,
       core.String subnetwork,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -17280,6 +19835,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -17312,6 +19870,9 @@
   /// [subnetwork] - Name of the Subnetwork resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subnetwork].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -17320,7 +19881,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Subnetwork> get(
-      core.String project, core.String region, core.String subnetwork) {
+      core.String project, core.String region, core.String subnetwork,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -17337,6 +19899,9 @@
     if (subnetwork == null) {
       throw new core.ArgumentError("Parameter subnetwork is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -17380,6 +19945,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -17389,7 +19957,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       Subnetwork request, core.String project, core.String region,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -17409,6 +19977,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -17481,6 +20052,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SubnetworkList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -17492,7 +20066,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -17518,6 +20093,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -17563,6 +20141,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -17575,7 +20156,8 @@
       core.String project,
       core.String region,
       core.String subnetwork,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -17598,6 +20180,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -17646,6 +20231,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -17655,7 +20243,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String targetHttpProxy,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -17672,6 +20260,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/targetHttpProxies/' +
@@ -17698,6 +20289,9 @@
   /// [targetHttpProxy] - Name of the TargetHttpProxy resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetHttpProxy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -17706,7 +20300,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TargetHttpProxy> get(
-      core.String project, core.String targetHttpProxy) {
+      core.String project, core.String targetHttpProxy,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -17720,6 +20315,9 @@
     if (targetHttpProxy == null) {
       throw new core.ArgumentError("Parameter targetHttpProxy is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/targetHttpProxies/' +
@@ -17758,6 +20356,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -17766,7 +20367,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(TargetHttpProxy request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -17783,6 +20384,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/targetHttpProxies';
@@ -17851,6 +20455,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetHttpProxyList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -17862,7 +20469,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -17885,6 +20493,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/targetHttpProxies';
@@ -17924,6 +20535,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -17933,7 +20547,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> setUrlMap(
       UrlMapReference request, core.String project, core.String targetHttpProxy,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -17953,6 +20567,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/targetHttpProxies/' +
@@ -17999,6 +20616,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -18008,7 +20628,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String targetHttpsProxy,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -18025,6 +20645,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/targetHttpsProxies/' +
@@ -18051,6 +20674,9 @@
   /// [targetHttpsProxy] - Name of the TargetHttpsProxy resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetHttpsProxy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -18059,7 +20685,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TargetHttpsProxy> get(
-      core.String project, core.String targetHttpsProxy) {
+      core.String project, core.String targetHttpsProxy,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -18073,6 +20700,9 @@
     if (targetHttpsProxy == null) {
       throw new core.ArgumentError("Parameter targetHttpsProxy is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/targetHttpsProxies/' +
@@ -18111,6 +20741,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -18119,7 +20752,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(TargetHttpsProxy request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -18136,6 +20769,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/targetHttpsProxies';
@@ -18204,6 +20840,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetHttpsProxyList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -18215,7 +20854,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -18238,6 +20878,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/targetHttpsProxies';
@@ -18278,6 +20921,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -18289,7 +20935,8 @@
       TargetHttpsProxiesSetSslCertificatesRequest request,
       core.String project,
       core.String targetHttpsProxy,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -18309,6 +20956,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/targetHttpsProxies/' +
@@ -18351,6 +21001,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -18360,7 +21013,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> setUrlMap(UrlMapReference request,
       core.String project, core.String targetHttpsProxy,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -18380,6 +21033,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/targetHttpsProxies/' +
@@ -18455,6 +21111,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetInstanceAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -18466,7 +21125,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -18489,6 +21149,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/aggregated/targetInstances';
@@ -18530,6 +21193,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -18539,7 +21205,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String zone, core.String targetInstance,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -18559,6 +21225,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -18590,6 +21259,9 @@
   /// [targetInstance] - Name of the TargetInstance resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetInstance].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -18598,7 +21270,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TargetInstance> get(
-      core.String project, core.String zone, core.String targetInstance) {
+      core.String project, core.String zone, core.String targetInstance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -18615,6 +21288,9 @@
     if (targetInstance == null) {
       throw new core.ArgumentError("Parameter targetInstance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -18658,6 +21334,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -18667,7 +21346,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       TargetInstance request, core.String project, core.String zone,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -18687,6 +21366,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -18760,6 +21442,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetInstanceList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -18771,7 +21456,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -18797,6 +21483,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -18847,6 +21536,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -18859,7 +21551,8 @@
       core.String project,
       core.String region,
       core.String targetPool,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -18882,6 +21575,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -18928,6 +21624,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -18937,7 +21636,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> addInstance(TargetPoolsAddInstanceRequest request,
       core.String project, core.String region, core.String targetPool,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -18960,6 +21659,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -19031,6 +21733,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetPoolAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -19042,7 +21747,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -19065,6 +21771,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/aggregated/targetPools';
@@ -19106,6 +21815,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -19115,7 +21827,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String region, core.String targetPool,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -19135,6 +21847,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -19166,6 +21881,9 @@
   /// [targetPool] - Name of the TargetPool resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetPool].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -19174,7 +21892,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TargetPool> get(
-      core.String project, core.String region, core.String targetPool) {
+      core.String project, core.String region, core.String targetPool,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -19191,6 +21910,9 @@
     if (targetPool == null) {
       throw new core.ArgumentError("Parameter targetPool is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -19225,6 +21947,9 @@
   /// instance belongs.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetPoolInstanceHealth].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -19233,7 +21958,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TargetPoolInstanceHealth> getHealth(InstanceReference request,
-      core.String project, core.String region, core.String targetPool) {
+      core.String project, core.String region, core.String targetPool,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -19253,6 +21979,9 @@
     if (targetPool == null) {
       throw new core.ArgumentError("Parameter targetPool is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -19298,6 +22027,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -19307,7 +22039,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       TargetPool request, core.String project, core.String region,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -19327,6 +22059,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -19400,6 +22135,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetPoolList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -19411,7 +22149,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -19437,6 +22176,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -19481,6 +22223,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -19493,7 +22238,8 @@
       core.String project,
       core.String region,
       core.String targetPool,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -19516,6 +22262,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -19562,6 +22311,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -19574,7 +22326,8 @@
       core.String project,
       core.String region,
       core.String targetPool,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -19597,6 +22350,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -19645,6 +22401,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -19654,7 +22413,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> setBackup(TargetReference request,
       core.String project, core.String region, core.String targetPool,
-      {core.double failoverRatio, core.String requestId}) {
+      {core.double failoverRatio, core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -19680,6 +22439,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -19728,6 +22490,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -19737,7 +22502,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String targetSslProxy,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -19754,6 +22519,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/targetSslProxies/' +
@@ -19780,6 +22548,9 @@
   /// [targetSslProxy] - Name of the TargetSslProxy resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetSslProxy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -19788,7 +22559,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TargetSslProxy> get(
-      core.String project, core.String targetSslProxy) {
+      core.String project, core.String targetSslProxy,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -19802,6 +22574,9 @@
     if (targetSslProxy == null) {
       throw new core.ArgumentError("Parameter targetSslProxy is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/targetSslProxies/' +
@@ -19840,6 +22615,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -19848,7 +22626,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(TargetSslProxy request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -19865,6 +22643,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/targetSslProxies';
@@ -19933,6 +22714,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetSslProxyList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -19944,7 +22728,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -19967,6 +22752,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/targetSslProxies';
@@ -20007,6 +22795,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -20018,7 +22809,8 @@
       TargetSslProxiesSetBackendServiceRequest request,
       core.String project,
       core.String targetSslProxy,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -20038,6 +22830,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/targetSslProxies/' +
@@ -20080,6 +22875,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -20091,7 +22889,8 @@
       TargetSslProxiesSetProxyHeaderRequest request,
       core.String project,
       core.String targetSslProxy,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -20111,6 +22910,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/targetSslProxies/' +
@@ -20153,6 +22955,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -20164,7 +22969,8 @@
       TargetSslProxiesSetSslCertificatesRequest request,
       core.String project,
       core.String targetSslProxy,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -20184,6 +22990,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/targetSslProxies/' +
@@ -20230,6 +23039,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -20239,7 +23051,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String targetTcpProxy,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -20256,6 +23068,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/targetTcpProxies/' +
@@ -20282,6 +23097,9 @@
   /// [targetTcpProxy] - Name of the TargetTcpProxy resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetTcpProxy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -20290,7 +23108,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TargetTcpProxy> get(
-      core.String project, core.String targetTcpProxy) {
+      core.String project, core.String targetTcpProxy,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -20304,6 +23123,9 @@
     if (targetTcpProxy == null) {
       throw new core.ArgumentError("Parameter targetTcpProxy is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/targetTcpProxies/' +
@@ -20342,6 +23164,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -20350,7 +23175,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(TargetTcpProxy request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -20367,6 +23192,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/targetTcpProxies';
@@ -20435,6 +23263,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetTcpProxyList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -20446,7 +23277,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -20469,6 +23301,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$project') + '/global/targetTcpProxies';
@@ -20509,6 +23344,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -20520,7 +23358,8 @@
       TargetTcpProxiesSetBackendServiceRequest request,
       core.String project,
       core.String targetTcpProxy,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -20540,6 +23379,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/targetTcpProxies/' +
@@ -20582,6 +23424,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -20593,7 +23438,8 @@
       TargetTcpProxiesSetProxyHeaderRequest request,
       core.String project,
       core.String targetTcpProxy,
-      {core.String requestId}) {
+      {core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -20613,6 +23459,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/targetTcpProxies/' +
@@ -20689,6 +23538,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetVpnGatewayAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -20701,7 +23553,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -20724,6 +23577,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/aggregated/targetVpnGateways';
@@ -20765,6 +23621,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -20774,7 +23633,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String region, core.String targetVpnGateway,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -20794,6 +23653,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -20825,6 +23687,9 @@
   /// [targetVpnGateway] - Name of the target VPN gateway to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetVpnGateway].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -20833,7 +23698,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TargetVpnGateway> get(
-      core.String project, core.String region, core.String targetVpnGateway) {
+      core.String project, core.String region, core.String targetVpnGateway,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -20850,6 +23716,9 @@
     if (targetVpnGateway == null) {
       throw new core.ArgumentError("Parameter targetVpnGateway is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -20893,6 +23762,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -20902,7 +23774,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       TargetVpnGateway request, core.String project, core.String region,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -20922,6 +23794,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -20995,6 +23870,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetVpnGatewayList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -21007,7 +23885,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -21033,6 +23912,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -21078,6 +23960,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -21086,7 +23971,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String project, core.String urlMap,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -21103,6 +23988,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/urlMaps/' +
@@ -21129,6 +24017,9 @@
   /// [urlMap] - Name of the UrlMap resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UrlMap].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -21136,7 +24027,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UrlMap> get(core.String project, core.String urlMap) {
+  async.Future<UrlMap> get(core.String project, core.String urlMap,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -21150,6 +24042,9 @@
     if (urlMap == null) {
       throw new core.ArgumentError("Parameter urlMap is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/urlMaps/' +
@@ -21188,6 +24083,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -21196,7 +24094,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(UrlMap request, core.String project,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -21213,6 +24111,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/urlMaps';
 
@@ -21252,6 +24153,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -21261,7 +24165,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> invalidateCache(
       CacheInvalidationRule request, core.String project, core.String urlMap,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -21281,6 +24185,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/urlMaps/' +
@@ -21350,6 +24257,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UrlMapList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -21361,7 +24271,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -21384,6 +24295,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/urlMaps';
 
@@ -21424,6 +24338,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -21433,7 +24350,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       UrlMap request, core.String project, core.String urlMap,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -21453,6 +24370,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/urlMaps/' +
@@ -21494,6 +24414,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -21503,7 +24426,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> update(
       UrlMap request, core.String project, core.String urlMap,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -21523,6 +24446,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/urlMaps/' +
@@ -21552,6 +24478,9 @@
   /// [urlMap] - Name of the UrlMap resource to be validated as.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UrlMapsValidateResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -21560,7 +24489,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UrlMapsValidateResponse> validate(
-      UrlMapsValidateRequest request, core.String project, core.String urlMap) {
+      UrlMapsValidateRequest request, core.String project, core.String urlMap,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -21577,6 +24507,9 @@
     if (urlMap == null) {
       throw new core.ArgumentError("Parameter urlMap is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/urlMaps/' +
@@ -21652,6 +24585,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VpnTunnelAggregatedList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -21663,7 +24599,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -21686,6 +24623,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/aggregated/vpnTunnels';
 
@@ -21725,6 +24665,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -21734,7 +24677,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> delete(
       core.String project, core.String region, core.String vpnTunnel,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -21754,6 +24697,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -21785,6 +24731,9 @@
   /// [vpnTunnel] - Name of the VpnTunnel resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VpnTunnel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -21793,7 +24742,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<VpnTunnel> get(
-      core.String project, core.String region, core.String vpnTunnel) {
+      core.String project, core.String region, core.String vpnTunnel,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -21810,6 +24760,9 @@
     if (vpnTunnel == null) {
       throw new core.ArgumentError("Parameter vpnTunnel is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -21853,6 +24806,9 @@
   /// The request ID must be a valid UUID with the exception that zero UUID is
   /// not supported (00000000-0000-0000-0000-000000000000).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -21862,7 +24818,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> insert(
       VpnTunnel request, core.String project, core.String region,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -21882,6 +24838,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -21955,6 +24914,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VpnTunnelList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -21966,7 +24928,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -21992,6 +24955,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/regions/' +
@@ -22027,13 +24993,17 @@
   /// [operation] - Name of the Operations resource to delete.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String project, core.String zone, core.String operation) {
+      core.String project, core.String zone, core.String operation,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -22050,6 +25020,9 @@
     if (operation == null) {
       throw new core.ArgumentError("Parameter operation is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -22082,6 +25055,9 @@
   /// [operation] - Name of the Operations resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -22090,7 +25066,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> get(
-      core.String project, core.String zone, core.String operation) {
+      core.String project, core.String zone, core.String operation,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -22107,6 +25084,9 @@
     if (operation == null) {
       throw new core.ArgumentError("Parameter operation is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -22181,6 +25161,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OperationList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -22192,7 +25175,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -22218,6 +25202,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -22251,6 +25238,9 @@
   /// [zone] - Name of the zone resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Zone].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -22258,7 +25248,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Zone> get(core.String project, core.String zone) {
+  async.Future<Zone> get(core.String project, core.String zone,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -22272,6 +25263,9 @@
     if (zone == null) {
       throw new core.ArgumentError("Parameter zone is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -22340,6 +25334,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ZoneList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -22351,7 +25348,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -22374,6 +25372,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/zones';
 
@@ -22564,7 +25565,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -22750,7 +25753,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -22931,7 +25936,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -23292,7 +26299,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -23475,7 +26484,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -23655,7 +26666,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -23867,7 +26880,8 @@
 
   /// Specifies a valid partial or full URL to an existing Persistent Disk
   /// resource. When creating a new instance, one of
-  /// initializeParams.sourceImage or disks.source is required.
+  /// initializeParams.sourceImage or disks.source is required except for local
+  /// SSD.
   ///
   /// If desired, you can also attach existing non-root persistent disks using
   /// this property. This field is only applicable for persistent disks.
@@ -23999,7 +27013,8 @@
   core.String diskType;
 
   /// The source image to create this disk. When creating a new instance, one of
-  /// initializeParams.sourceImage or disks.source is required.
+  /// initializeParams.sourceImage or disks.source is required except for local
+  /// SSD.
   ///
   /// To create a disk with one of the public operating system images, specify
   /// the image by its family name. For example, specify family/debian-8 to use
@@ -24272,7 +27287,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -24456,7 +27473,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -24684,7 +27703,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -24904,15 +27925,15 @@
 /// Custom utilization metric policy.
 class AutoscalingPolicyCustomMetricUtilization {
   /// The identifier (type) of the Stackdriver Monitoring metric. The metric
-  /// cannot have negative values and should be a utilization metric, which
-  /// means that the number of virtual machines handling requests should
-  /// increase or decrease proportionally to the metric.
+  /// cannot have negative values.
   ///
   /// The metric must have a value type of INT64 or DOUBLE.
   core.String metric;
 
   /// The target value of the metric that autoscaler should maintain. This must
-  /// be a positive value.
+  /// be a positive value. A utilization metric scales number of virtual
+  /// machines handling requests to increase or decrease proportionally to the
+  /// metric.
   ///
   /// For example, a good metric to use as a utilization_target is
   /// compute.googleapis.com/instance/network/received_bytes_count. The
@@ -25264,7 +28285,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -25721,7 +28744,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -26008,7 +29033,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -26189,7 +29216,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -26594,7 +29623,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -26778,7 +29809,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -26959,7 +29992,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -27586,7 +30621,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -27769,7 +30806,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -28094,7 +31133,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -28276,7 +31317,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -28456,7 +31499,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -28618,7 +31663,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -28868,6 +31915,19 @@
   /// match both properties for the firewall to apply. Only IPv4 is supported.
   core.List<core.String> sourceRanges;
 
+  /// If source service accounts are specified, the firewall will apply only to
+  /// traffic originating from an instance with a service account in this list.
+  /// Source service accounts cannot be used to control traffic to an instance's
+  /// external IP address because service accounts are associated with an
+  /// instance, not an IP address. sourceRanges can be set at the same time as
+  /// sourceServiceAccounts. If both are set, the firewall will apply to traffic
+  /// that has source IP address within sourceRanges OR the source IP belongs to
+  /// an instance with service account listed in sourceServiceAccount. The
+  /// connection does not need to match both properties for the firewall to
+  /// apply. sourceServiceAccounts cannot be used at the same time as sourceTags
+  /// or targetTags.
+  core.List<core.String> sourceServiceAccounts;
+
   /// If source tags are specified, the firewall rule applies only to traffic
   /// with source IPs that match the primary network interfaces of VM instances
   /// that have the tag and are in the same VPC network. Source tags cannot be
@@ -28881,10 +31941,18 @@
   /// for the firewall to apply.
   core.List<core.String> sourceTags;
 
-  /// A list of instance tags indicating sets of instances located in the
-  /// network that may make network connections as specified in allowed[]. If no
-  /// targetTags are specified, the firewall rule applies to all instances on
-  /// the specified network.
+  /// A list of service accounts indicating sets of instances located in the
+  /// network that may make network connections as specified in allowed[].
+  /// targetServiceAccounts cannot be used at the same time as targetTags or
+  /// sourceTags. If neither targetServiceAccounts nor targetTags are specified,
+  /// the firewall rule applies to all instances on the specified network.
+  core.List<core.String> targetServiceAccounts;
+
+  /// A list of tags that controls which instances the firewall rule applies to.
+  /// If targetTags are specified, then the firewall rule applies only to
+  /// instances in the VPC network that have one of those tags. If no targetTags
+  /// are specified, the firewall rule applies to all instances on the specified
+  /// network.
   core.List<core.String> targetTags;
 
   Firewall();
@@ -28933,9 +32001,15 @@
     if (_json.containsKey("sourceRanges")) {
       sourceRanges = _json["sourceRanges"];
     }
+    if (_json.containsKey("sourceServiceAccounts")) {
+      sourceServiceAccounts = _json["sourceServiceAccounts"];
+    }
     if (_json.containsKey("sourceTags")) {
       sourceTags = _json["sourceTags"];
     }
+    if (_json.containsKey("targetServiceAccounts")) {
+      targetServiceAccounts = _json["targetServiceAccounts"];
+    }
     if (_json.containsKey("targetTags")) {
       targetTags = _json["targetTags"];
     }
@@ -28983,9 +32057,15 @@
     if (sourceRanges != null) {
       _json["sourceRanges"] = sourceRanges;
     }
+    if (sourceServiceAccounts != null) {
+      _json["sourceServiceAccounts"] = sourceServiceAccounts;
+    }
     if (sourceTags != null) {
       _json["sourceTags"] = sourceTags;
     }
+    if (targetServiceAccounts != null) {
+      _json["targetServiceAccounts"] = targetServiceAccounts;
+    }
     if (targetTags != null) {
       _json["targetTags"] = targetTags;
     }
@@ -29037,7 +32117,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -29178,18 +32260,32 @@
 class ForwardingRule {
   /// The IP address that this forwarding rule is serving on behalf of.
   ///
-  /// For global forwarding rules, the address must be a global IP. For regional
-  /// forwarding rules, the address must live in the same region as the
-  /// forwarding rule. By default, this field is empty and an ephemeral IPv4
-  /// address from the same scope (global or regional) will be assigned. A
-  /// regional forwarding rule supports IPv4 only. A global forwarding rule
-  /// supports either IPv4 or IPv6.
+  /// Addresses are restricted based on the forwarding rule's load balancing
+  /// scheme (EXTERNAL or INTERNAL) and scope (global or regional).
+  ///
+  /// When the load balancing scheme is EXTERNAL, for global forwarding rules,
+  /// the address must be a global IP, and for regional forwarding rules, the
+  /// address must live in the same region as the forwarding rule. If this field
+  /// is empty, an ephemeral IPv4 address from the same scope (global or
+  /// regional) will be assigned. A regional forwarding rule supports IPv4 only.
+  /// A global forwarding rule supports either IPv4 or IPv6.
   ///
   /// When the load balancing scheme is INTERNAL, this can only be an RFC 1918
-  /// IP address belonging to the network/subnetwork configured for the
-  /// forwarding rule. A reserved address cannot be used. If the field is empty,
-  /// the IP address will be automatically allocated from the internal IP range
-  /// of the subnetwork or network configured for this forwarding rule.
+  /// IP address belonging to the network/subnet configured for the forwarding
+  /// rule. By default, if this field is empty, an ephemeral internal IP address
+  /// will be automatically allocated from the IP range of the subnet or network
+  /// configured for this forwarding rule.
+  ///
+  /// An address can be specified either by a literal IP address or a URL
+  /// reference to an existing Address resource. The following examples are all
+  /// valid:
+  /// - 100.1.2.3
+  /// -
+  /// https://www.googleapis.com/compute/v1/projects/project/regions/region/addresses/address
+  /// - projects/project/regions/region/addresses/address
+  /// - regions/region/addresses/address
+  /// - global/addresses/address
+  /// - address
   core.String IPAddress;
 
   /// The IP protocol to which this rule applies. Valid options are TCP, UDP,
@@ -29476,7 +32572,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -29661,7 +32759,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -29841,7 +32941,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -30359,7 +33461,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -30812,7 +33916,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -31140,7 +34246,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -31675,7 +34783,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -31822,6 +34932,9 @@
   /// [Output Only] Creation timestamp in RFC3339 text format.
   core.String creationTimestamp;
 
+  /// Whether the resource should be protected against deletion.
+  core.bool deletionProtection;
+
   /// An optional description of this resource. Provide this property when you
   /// create the resource.
   core.String description;
@@ -31962,6 +35075,9 @@
     if (_json.containsKey("creationTimestamp")) {
       creationTimestamp = _json["creationTimestamp"];
     }
+    if (_json.containsKey("deletionProtection")) {
+      deletionProtection = _json["deletionProtection"];
+    }
     if (_json.containsKey("description")) {
       description = _json["description"];
     }
@@ -32044,6 +35160,9 @@
     if (creationTimestamp != null) {
       _json["creationTimestamp"] = creationTimestamp;
     }
+    if (deletionProtection != null) {
+      _json["deletionProtection"] = deletionProtection;
+    }
     if (description != null) {
       _json["description"] = description;
     }
@@ -32155,7 +35274,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -32497,7 +35618,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -32683,7 +35806,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -33159,7 +36284,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -33345,7 +36472,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -33621,7 +36750,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -33859,7 +36990,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -34093,7 +37226,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -34282,7 +37417,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -34764,7 +37901,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -34997,7 +38136,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -35266,6 +38407,1687 @@
   }
 }
 
+/// Protocol definitions for Mixer API to support Interconnect. Next available
+/// tag: 25
+class Interconnect {
+  /// Administrative status of the interconnect. When this is set to ?true?, the
+  /// Interconnect is functional and may carry traffic (assuming there are
+  /// functional InterconnectAttachments and other requirements are satisfied).
+  /// When set to ?false?, no packets will be carried over this Interconnect and
+  /// no BGP routes will be exchanged over it. By default, it is set to ?true?.
+  core.bool adminEnabled;
+
+  /// [Output Only] List of CircuitInfo objects, that describe the individual
+  /// circuits in this LAG.
+  core.List<InterconnectCircuitInfo> circuitInfos;
+
+  /// [Output Only] Creation timestamp in RFC3339 text format.
+  core.String creationTimestamp;
+
+  /// Customer name, to put in the Letter of Authorization as the party
+  /// authorized to request a crossconnect.
+  core.String customerName;
+
+  /// An optional description of this resource. Provide this property when you
+  /// create the resource.
+  core.String description;
+
+  /// [Output Only] List of outages expected for this Interconnect.
+  core.List<InterconnectOutageNotification> expectedOutages;
+
+  /// [Output Only] IP address configured on the Google side of the Interconnect
+  /// link. This can be used only for ping tests.
+  core.String googleIpAddress;
+
+  /// [Output Only] Google reference ID; to be used when raising support tickets
+  /// with Google or otherwise to debug backend connectivity issues.
+  core.String googleReferenceId;
+
+  /// [Output Only] The unique identifier for the resource. This identifier is
+  /// defined by the server.
+  core.String id;
+
+  /// [Output Only] A list of the URLs of all InterconnectAttachments configured
+  /// to use this Interconnect.
+  core.List<core.String> interconnectAttachments;
+
+  ///
+  /// Possible string values are:
+  /// - "DEDICATED"
+  /// - "IT_PRIVATE"
+  core.String interconnectType;
+
+  /// [Output Only] Type of the resource. Always compute#interconnect for
+  /// interconnects.
+  core.String kind;
+
+  ///
+  /// Possible string values are:
+  /// - "LINK_TYPE_ETHERNET_10G_LR"
+  core.String linkType;
+
+  /// URL of the InterconnectLocation object that represents where this
+  /// connection is to be provisioned.
+  core.String location;
+
+  /// Name of the resource. Provided by the client when the resource is created.
+  /// The name must be 1-63 characters long, and comply with RFC1035.
+  /// Specifically, the name must be 1-63 characters long and match the regular
+  /// expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must
+  /// be a lowercase letter, and all following characters must be a dash,
+  /// lowercase letter, or digit, except the last character, which cannot be a
+  /// dash.
+  core.String name;
+
+  /// Email address to contact the customer NOC for operations and maintenance
+  /// notifications regarding this Interconnect. If specified, this will be used
+  /// for notifications in addition to all other forms described, such as
+  /// Stackdriver logs alerting and Cloud Notifications.
+  core.String nocContactEmail;
+
+  /// [Output Only] The current status of whether or not this Interconnect is
+  /// functional.
+  /// Possible string values are:
+  /// - "ACTIVE"
+  /// - "OS_ACTIVE"
+  /// - "OS_UNPROVISIONED"
+  /// - "UNPROVISIONED"
+  core.String operationalStatus;
+
+  /// [Output Only] IP address configured on the customer side of the
+  /// Interconnect link. The customer should configure this IP address during
+  /// turnup when prompted by Google NOC. This can be used only for ping tests.
+  core.String peerIpAddress;
+
+  /// [Output Only] Number of links actually provisioned in this interconnect.
+  core.int provisionedLinkCount;
+
+  /// Target number of physical links in the link bundle, as requested by the
+  /// customer.
+  core.int requestedLinkCount;
+
+  /// [Output Only] Server-defined URL for the resource.
+  core.String selfLink;
+
+  Interconnect();
+
+  Interconnect.fromJson(core.Map _json) {
+    if (_json.containsKey("adminEnabled")) {
+      adminEnabled = _json["adminEnabled"];
+    }
+    if (_json.containsKey("circuitInfos")) {
+      circuitInfos = _json["circuitInfos"]
+          .map((value) => new InterconnectCircuitInfo.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("creationTimestamp")) {
+      creationTimestamp = _json["creationTimestamp"];
+    }
+    if (_json.containsKey("customerName")) {
+      customerName = _json["customerName"];
+    }
+    if (_json.containsKey("description")) {
+      description = _json["description"];
+    }
+    if (_json.containsKey("expectedOutages")) {
+      expectedOutages = _json["expectedOutages"]
+          .map((value) => new InterconnectOutageNotification.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("googleIpAddress")) {
+      googleIpAddress = _json["googleIpAddress"];
+    }
+    if (_json.containsKey("googleReferenceId")) {
+      googleReferenceId = _json["googleReferenceId"];
+    }
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("interconnectAttachments")) {
+      interconnectAttachments = _json["interconnectAttachments"];
+    }
+    if (_json.containsKey("interconnectType")) {
+      interconnectType = _json["interconnectType"];
+    }
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+    if (_json.containsKey("linkType")) {
+      linkType = _json["linkType"];
+    }
+    if (_json.containsKey("location")) {
+      location = _json["location"];
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("nocContactEmail")) {
+      nocContactEmail = _json["nocContactEmail"];
+    }
+    if (_json.containsKey("operationalStatus")) {
+      operationalStatus = _json["operationalStatus"];
+    }
+    if (_json.containsKey("peerIpAddress")) {
+      peerIpAddress = _json["peerIpAddress"];
+    }
+    if (_json.containsKey("provisionedLinkCount")) {
+      provisionedLinkCount = _json["provisionedLinkCount"];
+    }
+    if (_json.containsKey("requestedLinkCount")) {
+      requestedLinkCount = _json["requestedLinkCount"];
+    }
+    if (_json.containsKey("selfLink")) {
+      selfLink = _json["selfLink"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (adminEnabled != null) {
+      _json["adminEnabled"] = adminEnabled;
+    }
+    if (circuitInfos != null) {
+      _json["circuitInfos"] =
+          circuitInfos.map((value) => (value).toJson()).toList();
+    }
+    if (creationTimestamp != null) {
+      _json["creationTimestamp"] = creationTimestamp;
+    }
+    if (customerName != null) {
+      _json["customerName"] = customerName;
+    }
+    if (description != null) {
+      _json["description"] = description;
+    }
+    if (expectedOutages != null) {
+      _json["expectedOutages"] =
+          expectedOutages.map((value) => (value).toJson()).toList();
+    }
+    if (googleIpAddress != null) {
+      _json["googleIpAddress"] = googleIpAddress;
+    }
+    if (googleReferenceId != null) {
+      _json["googleReferenceId"] = googleReferenceId;
+    }
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (interconnectAttachments != null) {
+      _json["interconnectAttachments"] = interconnectAttachments;
+    }
+    if (interconnectType != null) {
+      _json["interconnectType"] = interconnectType;
+    }
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    if (linkType != null) {
+      _json["linkType"] = linkType;
+    }
+    if (location != null) {
+      _json["location"] = location;
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (nocContactEmail != null) {
+      _json["nocContactEmail"] = nocContactEmail;
+    }
+    if (operationalStatus != null) {
+      _json["operationalStatus"] = operationalStatus;
+    }
+    if (peerIpAddress != null) {
+      _json["peerIpAddress"] = peerIpAddress;
+    }
+    if (provisionedLinkCount != null) {
+      _json["provisionedLinkCount"] = provisionedLinkCount;
+    }
+    if (requestedLinkCount != null) {
+      _json["requestedLinkCount"] = requestedLinkCount;
+    }
+    if (selfLink != null) {
+      _json["selfLink"] = selfLink;
+    }
+    return _json;
+  }
+}
+
+/// Protocol definitions for Mixer API to support InterconnectAttachment. Next
+/// available tag: 23
+class InterconnectAttachment {
+  /// [Output Only] IPv4 address + prefix length to be configured on Cloud
+  /// Router Interface for this interconnect attachment.
+  core.String cloudRouterIpAddress;
+
+  /// [Output Only] Creation timestamp in RFC3339 text format.
+  core.String creationTimestamp;
+
+  /// [Output Only] IPv4 address + prefix length to be configured on the
+  /// customer router subinterface for this interconnect attachment.
+  core.String customerRouterIpAddress;
+
+  /// An optional description of this resource. Provide this property when you
+  /// create the resource.
+  core.String description;
+
+  /// [Output Only] Google reference ID, to be used when raising support tickets
+  /// with Google or otherwise to debug backend connectivity issues.
+  core.String googleReferenceId;
+
+  /// [Output Only] The unique identifier for the resource. This identifier is
+  /// defined by the server.
+  core.String id;
+
+  /// URL of the underlying Interconnect object that this attachment's traffic
+  /// will traverse through.
+  core.String interconnect;
+
+  /// [Output Only] Type of the resource. Always compute#interconnectAttachment
+  /// for interconnect attachments.
+  core.String kind;
+
+  /// Name of the resource. Provided by the client when the resource is created.
+  /// The name must be 1-63 characters long, and comply with RFC1035.
+  /// Specifically, the name must be 1-63 characters long and match the regular
+  /// expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must
+  /// be a lowercase letter, and all following characters must be a dash,
+  /// lowercase letter, or digit, except the last character, which cannot be a
+  /// dash.
+  core.String name;
+
+  /// [Output Only] The current status of whether or not this interconnect
+  /// attachment is functional.
+  /// Possible string values are:
+  /// - "ACTIVE"
+  /// - "OS_ACTIVE"
+  /// - "OS_UNPROVISIONED"
+  /// - "UNPROVISIONED"
+  core.String operationalStatus;
+
+  /// [Output Only] Information specific to a Private InterconnectAttachment.
+  /// Only populated if the interconnect that this is attached is of type
+  /// IT_PRIVATE.
+  InterconnectAttachmentPrivateInfo privateInterconnectInfo;
+
+  /// [Output Only] URL of the region where the regional interconnect attachment
+  /// resides.
+  core.String region;
+
+  /// URL of the cloud router to be used for dynamic routing. This router must
+  /// be in the same region as this InterconnectAttachment. The
+  /// InterconnectAttachment will automatically connect the Interconnect to the
+  /// network & region within which the Cloud Router is configured.
+  core.String router;
+
+  /// [Output Only] Server-defined URL for the resource.
+  core.String selfLink;
+
+  InterconnectAttachment();
+
+  InterconnectAttachment.fromJson(core.Map _json) {
+    if (_json.containsKey("cloudRouterIpAddress")) {
+      cloudRouterIpAddress = _json["cloudRouterIpAddress"];
+    }
+    if (_json.containsKey("creationTimestamp")) {
+      creationTimestamp = _json["creationTimestamp"];
+    }
+    if (_json.containsKey("customerRouterIpAddress")) {
+      customerRouterIpAddress = _json["customerRouterIpAddress"];
+    }
+    if (_json.containsKey("description")) {
+      description = _json["description"];
+    }
+    if (_json.containsKey("googleReferenceId")) {
+      googleReferenceId = _json["googleReferenceId"];
+    }
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("interconnect")) {
+      interconnect = _json["interconnect"];
+    }
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("operationalStatus")) {
+      operationalStatus = _json["operationalStatus"];
+    }
+    if (_json.containsKey("privateInterconnectInfo")) {
+      privateInterconnectInfo = new InterconnectAttachmentPrivateInfo.fromJson(
+          _json["privateInterconnectInfo"]);
+    }
+    if (_json.containsKey("region")) {
+      region = _json["region"];
+    }
+    if (_json.containsKey("router")) {
+      router = _json["router"];
+    }
+    if (_json.containsKey("selfLink")) {
+      selfLink = _json["selfLink"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (cloudRouterIpAddress != null) {
+      _json["cloudRouterIpAddress"] = cloudRouterIpAddress;
+    }
+    if (creationTimestamp != null) {
+      _json["creationTimestamp"] = creationTimestamp;
+    }
+    if (customerRouterIpAddress != null) {
+      _json["customerRouterIpAddress"] = customerRouterIpAddress;
+    }
+    if (description != null) {
+      _json["description"] = description;
+    }
+    if (googleReferenceId != null) {
+      _json["googleReferenceId"] = googleReferenceId;
+    }
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (interconnect != null) {
+      _json["interconnect"] = interconnect;
+    }
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (operationalStatus != null) {
+      _json["operationalStatus"] = operationalStatus;
+    }
+    if (privateInterconnectInfo != null) {
+      _json["privateInterconnectInfo"] = (privateInterconnectInfo).toJson();
+    }
+    if (region != null) {
+      _json["region"] = region;
+    }
+    if (router != null) {
+      _json["router"] = router;
+    }
+    if (selfLink != null) {
+      _json["selfLink"] = selfLink;
+    }
+    return _json;
+  }
+}
+
+class InterconnectAttachmentAggregatedListWarningData {
+  /// [Output Only] A key that provides more detail on the warning being
+  /// returned. For example, for warnings where there are no results in a list
+  /// request for a particular zone, this key might be scope and the key value
+  /// might be the zone name. Other examples might be a key indicating a
+  /// deprecated resource and a suggested replacement, or a warning about
+  /// invalid network settings (for example, if an instance attempts to perform
+  /// IP forwarding but is not enabled for IP forwarding).
+  core.String key;
+
+  /// [Output Only] A warning data value corresponding to the key.
+  core.String value;
+
+  InterconnectAttachmentAggregatedListWarningData();
+
+  InterconnectAttachmentAggregatedListWarningData.fromJson(core.Map _json) {
+    if (_json.containsKey("key")) {
+      key = _json["key"];
+    }
+    if (_json.containsKey("value")) {
+      value = _json["value"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (key != null) {
+      _json["key"] = key;
+    }
+    if (value != null) {
+      _json["value"] = value;
+    }
+    return _json;
+  }
+}
+
+/// [Output Only] Informational warning message.
+class InterconnectAttachmentAggregatedListWarning {
+  /// [Output Only] A warning code, if applicable. For example, Compute Engine
+  /// returns NO_RESULTS_ON_PAGE if there are no results in the response.
+  /// Possible string values are:
+  /// - "CLEANUP_FAILED"
+  /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
+  /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
+  /// - "EXTERNAL_API_WARNING"
+  /// - "FIELD_VALUE_OVERRIDEN"
+  /// - "INJECTED_KERNELS_DEPRECATED"
+  /// - "MISSING_TYPE_DEPENDENCY"
+  /// - "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+  /// - "NEXT_HOP_CANNOT_IP_FORWARD"
+  /// - "NEXT_HOP_INSTANCE_NOT_FOUND"
+  /// - "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+  /// - "NEXT_HOP_NOT_RUNNING"
+  /// - "NOT_CRITICAL_ERROR"
+  /// - "NO_RESULTS_ON_PAGE"
+  /// - "REQUIRED_TOS_AGREEMENT"
+  /// - "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+  /// - "RESOURCE_NOT_DELETED"
+  /// - "SCHEMA_VALIDATION_IGNORED"
+  /// - "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+  /// - "UNDECLARED_PROPERTIES"
+  /// - "UNREACHABLE"
+  core.String code;
+
+  /// [Output Only] Metadata about this warning in key: value format. For
+  /// example:
+  /// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+  core.List<InterconnectAttachmentAggregatedListWarningData> data;
+
+  /// [Output Only] A human-readable description of the warning code.
+  core.String message;
+
+  InterconnectAttachmentAggregatedListWarning();
+
+  InterconnectAttachmentAggregatedListWarning.fromJson(core.Map _json) {
+    if (_json.containsKey("code")) {
+      code = _json["code"];
+    }
+    if (_json.containsKey("data")) {
+      data = _json["data"]
+          .map((value) =>
+              new InterconnectAttachmentAggregatedListWarningData.fromJson(
+                  value))
+          .toList();
+    }
+    if (_json.containsKey("message")) {
+      message = _json["message"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (code != null) {
+      _json["code"] = code;
+    }
+    if (data != null) {
+      _json["data"] = data.map((value) => (value).toJson()).toList();
+    }
+    if (message != null) {
+      _json["message"] = message;
+    }
+    return _json;
+  }
+}
+
+class InterconnectAttachmentAggregatedList {
+  /// [Output Only] Unique identifier for the resource; defined by the server.
+  core.String id;
+
+  /// A list of InterconnectAttachmentsScopedList resources.
+  core.Map<core.String, InterconnectAttachmentsScopedList> items;
+
+  /// [Output Only] Type of resource. Always
+  /// compute#interconnectAttachmentAggregatedList for aggregated lists of
+  /// interconnect attachments.
+  core.String kind;
+
+  /// [Output Only] This token allows you to get the next page of results for
+  /// list requests. If the number of results is larger than maxResults, use the
+  /// nextPageToken as a value for the query parameter pageToken in the next
+  /// list request. Subsequent list requests will have their own nextPageToken
+  /// to continue paging through the results.
+  core.String nextPageToken;
+
+  /// [Output Only] Server-defined URL for this resource.
+  core.String selfLink;
+
+  /// [Output Only] Informational warning message.
+  InterconnectAttachmentAggregatedListWarning warning;
+
+  InterconnectAttachmentAggregatedList();
+
+  InterconnectAttachmentAggregatedList.fromJson(core.Map _json) {
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("items")) {
+      items = commons.mapMap<core.Map<core.String, core.Object>,
+              InterconnectAttachmentsScopedList>(
+          _json["items"],
+          (core.Map<core.String, core.Object> item) =>
+              new InterconnectAttachmentsScopedList.fromJson(item));
+    }
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+    if (_json.containsKey("selfLink")) {
+      selfLink = _json["selfLink"];
+    }
+    if (_json.containsKey("warning")) {
+      warning = new InterconnectAttachmentAggregatedListWarning.fromJson(
+          _json["warning"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (items != null) {
+      _json["items"] = commons.mapMap<InterconnectAttachmentsScopedList,
+              core.Map<core.String, core.Object>>(
+          items, (InterconnectAttachmentsScopedList item) => (item).toJson());
+    }
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    if (selfLink != null) {
+      _json["selfLink"] = selfLink;
+    }
+    if (warning != null) {
+      _json["warning"] = (warning).toJson();
+    }
+    return _json;
+  }
+}
+
+class InterconnectAttachmentListWarningData {
+  /// [Output Only] A key that provides more detail on the warning being
+  /// returned. For example, for warnings where there are no results in a list
+  /// request for a particular zone, this key might be scope and the key value
+  /// might be the zone name. Other examples might be a key indicating a
+  /// deprecated resource and a suggested replacement, or a warning about
+  /// invalid network settings (for example, if an instance attempts to perform
+  /// IP forwarding but is not enabled for IP forwarding).
+  core.String key;
+
+  /// [Output Only] A warning data value corresponding to the key.
+  core.String value;
+
+  InterconnectAttachmentListWarningData();
+
+  InterconnectAttachmentListWarningData.fromJson(core.Map _json) {
+    if (_json.containsKey("key")) {
+      key = _json["key"];
+    }
+    if (_json.containsKey("value")) {
+      value = _json["value"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (key != null) {
+      _json["key"] = key;
+    }
+    if (value != null) {
+      _json["value"] = value;
+    }
+    return _json;
+  }
+}
+
+/// [Output Only] Informational warning message.
+class InterconnectAttachmentListWarning {
+  /// [Output Only] A warning code, if applicable. For example, Compute Engine
+  /// returns NO_RESULTS_ON_PAGE if there are no results in the response.
+  /// Possible string values are:
+  /// - "CLEANUP_FAILED"
+  /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
+  /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
+  /// - "EXTERNAL_API_WARNING"
+  /// - "FIELD_VALUE_OVERRIDEN"
+  /// - "INJECTED_KERNELS_DEPRECATED"
+  /// - "MISSING_TYPE_DEPENDENCY"
+  /// - "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+  /// - "NEXT_HOP_CANNOT_IP_FORWARD"
+  /// - "NEXT_HOP_INSTANCE_NOT_FOUND"
+  /// - "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+  /// - "NEXT_HOP_NOT_RUNNING"
+  /// - "NOT_CRITICAL_ERROR"
+  /// - "NO_RESULTS_ON_PAGE"
+  /// - "REQUIRED_TOS_AGREEMENT"
+  /// - "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+  /// - "RESOURCE_NOT_DELETED"
+  /// - "SCHEMA_VALIDATION_IGNORED"
+  /// - "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+  /// - "UNDECLARED_PROPERTIES"
+  /// - "UNREACHABLE"
+  core.String code;
+
+  /// [Output Only] Metadata about this warning in key: value format. For
+  /// example:
+  /// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+  core.List<InterconnectAttachmentListWarningData> data;
+
+  /// [Output Only] A human-readable description of the warning code.
+  core.String message;
+
+  InterconnectAttachmentListWarning();
+
+  InterconnectAttachmentListWarning.fromJson(core.Map _json) {
+    if (_json.containsKey("code")) {
+      code = _json["code"];
+    }
+    if (_json.containsKey("data")) {
+      data = _json["data"]
+          .map((value) =>
+              new InterconnectAttachmentListWarningData.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("message")) {
+      message = _json["message"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (code != null) {
+      _json["code"] = code;
+    }
+    if (data != null) {
+      _json["data"] = data.map((value) => (value).toJson()).toList();
+    }
+    if (message != null) {
+      _json["message"] = message;
+    }
+    return _json;
+  }
+}
+
+/// Response to the list request, and contains a list of interconnect
+/// attachments.
+class InterconnectAttachmentList {
+  /// [Output Only] Unique identifier for the resource; defined by the server.
+  core.String id;
+
+  /// A list of InterconnectAttachment resources.
+  core.List<InterconnectAttachment> items;
+
+  /// [Output Only] Type of resource. Always compute#interconnectAttachmentList
+  /// for lists of interconnect attachments.
+  core.String kind;
+
+  /// [Output Only] This token allows you to get the next page of results for
+  /// list requests. If the number of results is larger than maxResults, use the
+  /// nextPageToken as a value for the query parameter pageToken in the next
+  /// list request. Subsequent list requests will have their own nextPageToken
+  /// to continue paging through the results.
+  core.String nextPageToken;
+
+  /// [Output Only] Server-defined URL for this resource.
+  core.String selfLink;
+
+  /// [Output Only] Informational warning message.
+  InterconnectAttachmentListWarning warning;
+
+  InterconnectAttachmentList();
+
+  InterconnectAttachmentList.fromJson(core.Map _json) {
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("items")) {
+      items = _json["items"]
+          .map((value) => new InterconnectAttachment.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+    if (_json.containsKey("selfLink")) {
+      selfLink = _json["selfLink"];
+    }
+    if (_json.containsKey("warning")) {
+      warning =
+          new InterconnectAttachmentListWarning.fromJson(_json["warning"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (items != null) {
+      _json["items"] = items.map((value) => (value).toJson()).toList();
+    }
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    if (selfLink != null) {
+      _json["selfLink"] = selfLink;
+    }
+    if (warning != null) {
+      _json["warning"] = (warning).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Private information for an interconnect attachment when this belongs to an
+/// interconnect of type IT_PRIVATE.
+class InterconnectAttachmentPrivateInfo {
+  /// [Output Only] 802.1q encapsulation tag to be used for traffic between
+  /// Google and the customer, going to and from this network and region.
+  core.int tag8021q;
+
+  InterconnectAttachmentPrivateInfo();
+
+  InterconnectAttachmentPrivateInfo.fromJson(core.Map _json) {
+    if (_json.containsKey("tag8021q")) {
+      tag8021q = _json["tag8021q"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (tag8021q != null) {
+      _json["tag8021q"] = tag8021q;
+    }
+    return _json;
+  }
+}
+
+class InterconnectAttachmentsScopedListWarningData {
+  /// [Output Only] A key that provides more detail on the warning being
+  /// returned. For example, for warnings where there are no results in a list
+  /// request for a particular zone, this key might be scope and the key value
+  /// might be the zone name. Other examples might be a key indicating a
+  /// deprecated resource and a suggested replacement, or a warning about
+  /// invalid network settings (for example, if an instance attempts to perform
+  /// IP forwarding but is not enabled for IP forwarding).
+  core.String key;
+
+  /// [Output Only] A warning data value corresponding to the key.
+  core.String value;
+
+  InterconnectAttachmentsScopedListWarningData();
+
+  InterconnectAttachmentsScopedListWarningData.fromJson(core.Map _json) {
+    if (_json.containsKey("key")) {
+      key = _json["key"];
+    }
+    if (_json.containsKey("value")) {
+      value = _json["value"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (key != null) {
+      _json["key"] = key;
+    }
+    if (value != null) {
+      _json["value"] = value;
+    }
+    return _json;
+  }
+}
+
+/// Informational warning which replaces the list of addresses when the list is
+/// empty.
+class InterconnectAttachmentsScopedListWarning {
+  /// [Output Only] A warning code, if applicable. For example, Compute Engine
+  /// returns NO_RESULTS_ON_PAGE if there are no results in the response.
+  /// Possible string values are:
+  /// - "CLEANUP_FAILED"
+  /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
+  /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
+  /// - "EXTERNAL_API_WARNING"
+  /// - "FIELD_VALUE_OVERRIDEN"
+  /// - "INJECTED_KERNELS_DEPRECATED"
+  /// - "MISSING_TYPE_DEPENDENCY"
+  /// - "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+  /// - "NEXT_HOP_CANNOT_IP_FORWARD"
+  /// - "NEXT_HOP_INSTANCE_NOT_FOUND"
+  /// - "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+  /// - "NEXT_HOP_NOT_RUNNING"
+  /// - "NOT_CRITICAL_ERROR"
+  /// - "NO_RESULTS_ON_PAGE"
+  /// - "REQUIRED_TOS_AGREEMENT"
+  /// - "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+  /// - "RESOURCE_NOT_DELETED"
+  /// - "SCHEMA_VALIDATION_IGNORED"
+  /// - "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+  /// - "UNDECLARED_PROPERTIES"
+  /// - "UNREACHABLE"
+  core.String code;
+
+  /// [Output Only] Metadata about this warning in key: value format. For
+  /// example:
+  /// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+  core.List<InterconnectAttachmentsScopedListWarningData> data;
+
+  /// [Output Only] A human-readable description of the warning code.
+  core.String message;
+
+  InterconnectAttachmentsScopedListWarning();
+
+  InterconnectAttachmentsScopedListWarning.fromJson(core.Map _json) {
+    if (_json.containsKey("code")) {
+      code = _json["code"];
+    }
+    if (_json.containsKey("data")) {
+      data = _json["data"]
+          .map((value) =>
+              new InterconnectAttachmentsScopedListWarningData.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("message")) {
+      message = _json["message"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (code != null) {
+      _json["code"] = code;
+    }
+    if (data != null) {
+      _json["data"] = data.map((value) => (value).toJson()).toList();
+    }
+    if (message != null) {
+      _json["message"] = message;
+    }
+    return _json;
+  }
+}
+
+class InterconnectAttachmentsScopedList {
+  /// List of interconnect attachments contained in this scope.
+  core.List<InterconnectAttachment> interconnectAttachments;
+
+  /// Informational warning which replaces the list of addresses when the list
+  /// is empty.
+  InterconnectAttachmentsScopedListWarning warning;
+
+  InterconnectAttachmentsScopedList();
+
+  InterconnectAttachmentsScopedList.fromJson(core.Map _json) {
+    if (_json.containsKey("interconnectAttachments")) {
+      interconnectAttachments = _json["interconnectAttachments"]
+          .map((value) => new InterconnectAttachment.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("warning")) {
+      warning = new InterconnectAttachmentsScopedListWarning.fromJson(
+          _json["warning"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (interconnectAttachments != null) {
+      _json["interconnectAttachments"] =
+          interconnectAttachments.map((value) => (value).toJson()).toList();
+    }
+    if (warning != null) {
+      _json["warning"] = (warning).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Describes a single physical circuit between the Customer and Google.
+/// CircuitInfo objects are created by Google, so all fields are output only.
+/// Next id: 4
+class InterconnectCircuitInfo {
+  /// Customer-side demarc ID for this circuit. This will only be set if it was
+  /// provided by the Customer to Google during circuit turn-up.
+  core.String customerDemarcId;
+
+  /// Google-assigned unique ID for this circuit. Assigned at circuit turn-up.
+  core.String googleCircuitId;
+
+  /// Google-side demarc ID for this circuit. Assigned at circuit turn-up and
+  /// provided by Google to the customer in the LOA.
+  core.String googleDemarcId;
+
+  InterconnectCircuitInfo();
+
+  InterconnectCircuitInfo.fromJson(core.Map _json) {
+    if (_json.containsKey("customerDemarcId")) {
+      customerDemarcId = _json["customerDemarcId"];
+    }
+    if (_json.containsKey("googleCircuitId")) {
+      googleCircuitId = _json["googleCircuitId"];
+    }
+    if (_json.containsKey("googleDemarcId")) {
+      googleDemarcId = _json["googleDemarcId"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (customerDemarcId != null) {
+      _json["customerDemarcId"] = customerDemarcId;
+    }
+    if (googleCircuitId != null) {
+      _json["googleCircuitId"] = googleCircuitId;
+    }
+    if (googleDemarcId != null) {
+      _json["googleDemarcId"] = googleDemarcId;
+    }
+    return _json;
+  }
+}
+
+class InterconnectListWarningData {
+  /// [Output Only] A key that provides more detail on the warning being
+  /// returned. For example, for warnings where there are no results in a list
+  /// request for a particular zone, this key might be scope and the key value
+  /// might be the zone name. Other examples might be a key indicating a
+  /// deprecated resource and a suggested replacement, or a warning about
+  /// invalid network settings (for example, if an instance attempts to perform
+  /// IP forwarding but is not enabled for IP forwarding).
+  core.String key;
+
+  /// [Output Only] A warning data value corresponding to the key.
+  core.String value;
+
+  InterconnectListWarningData();
+
+  InterconnectListWarningData.fromJson(core.Map _json) {
+    if (_json.containsKey("key")) {
+      key = _json["key"];
+    }
+    if (_json.containsKey("value")) {
+      value = _json["value"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (key != null) {
+      _json["key"] = key;
+    }
+    if (value != null) {
+      _json["value"] = value;
+    }
+    return _json;
+  }
+}
+
+/// [Output Only] Informational warning message.
+class InterconnectListWarning {
+  /// [Output Only] A warning code, if applicable. For example, Compute Engine
+  /// returns NO_RESULTS_ON_PAGE if there are no results in the response.
+  /// Possible string values are:
+  /// - "CLEANUP_FAILED"
+  /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
+  /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
+  /// - "EXTERNAL_API_WARNING"
+  /// - "FIELD_VALUE_OVERRIDEN"
+  /// - "INJECTED_KERNELS_DEPRECATED"
+  /// - "MISSING_TYPE_DEPENDENCY"
+  /// - "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+  /// - "NEXT_HOP_CANNOT_IP_FORWARD"
+  /// - "NEXT_HOP_INSTANCE_NOT_FOUND"
+  /// - "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+  /// - "NEXT_HOP_NOT_RUNNING"
+  /// - "NOT_CRITICAL_ERROR"
+  /// - "NO_RESULTS_ON_PAGE"
+  /// - "REQUIRED_TOS_AGREEMENT"
+  /// - "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+  /// - "RESOURCE_NOT_DELETED"
+  /// - "SCHEMA_VALIDATION_IGNORED"
+  /// - "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+  /// - "UNDECLARED_PROPERTIES"
+  /// - "UNREACHABLE"
+  core.String code;
+
+  /// [Output Only] Metadata about this warning in key: value format. For
+  /// example:
+  /// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+  core.List<InterconnectListWarningData> data;
+
+  /// [Output Only] A human-readable description of the warning code.
+  core.String message;
+
+  InterconnectListWarning();
+
+  InterconnectListWarning.fromJson(core.Map _json) {
+    if (_json.containsKey("code")) {
+      code = _json["code"];
+    }
+    if (_json.containsKey("data")) {
+      data = _json["data"]
+          .map((value) => new InterconnectListWarningData.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("message")) {
+      message = _json["message"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (code != null) {
+      _json["code"] = code;
+    }
+    if (data != null) {
+      _json["data"] = data.map((value) => (value).toJson()).toList();
+    }
+    if (message != null) {
+      _json["message"] = message;
+    }
+    return _json;
+  }
+}
+
+/// Response to the list request, and contains a list of interconnects.
+class InterconnectList {
+  /// [Output Only] Unique identifier for the resource; defined by the server.
+  core.String id;
+
+  /// A list of Interconnect resources.
+  core.List<Interconnect> items;
+
+  /// [Output Only] Type of resource. Always compute#interconnectList for lists
+  /// of interconnects.
+  core.String kind;
+
+  /// [Output Only] This token allows you to get the next page of results for
+  /// list requests. If the number of results is larger than maxResults, use the
+  /// nextPageToken as a value for the query parameter pageToken in the next
+  /// list request. Subsequent list requests will have their own nextPageToken
+  /// to continue paging through the results.
+  core.String nextPageToken;
+
+  /// [Output Only] Server-defined URL for this resource.
+  core.String selfLink;
+
+  /// [Output Only] Informational warning message.
+  InterconnectListWarning warning;
+
+  InterconnectList();
+
+  InterconnectList.fromJson(core.Map _json) {
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("items")) {
+      items = _json["items"]
+          .map((value) => new Interconnect.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+    if (_json.containsKey("selfLink")) {
+      selfLink = _json["selfLink"];
+    }
+    if (_json.containsKey("warning")) {
+      warning = new InterconnectListWarning.fromJson(_json["warning"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (items != null) {
+      _json["items"] = items.map((value) => (value).toJson()).toList();
+    }
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    if (selfLink != null) {
+      _json["selfLink"] = selfLink;
+    }
+    if (warning != null) {
+      _json["warning"] = (warning).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Protocol definitions for Mixer API to support InterconnectLocation.
+class InterconnectLocation {
+  /// [Output Only] The postal address of the Point of Presence, each line in
+  /// the address is separated by a newline character.
+  core.String address;
+
+  /// Availability zone for this location. Within a city, maintenance will not
+  /// be simultaneously scheduled in more than one availability zone. Example:
+  /// "zone1" or "zone2".
+  core.String availabilityZone;
+
+  /// City designator used by the Interconnect UI to locate this
+  /// InterconnectLocation within the Continent. For example: "Chicago, IL",
+  /// "Amsterdam, Netherlands".
+  core.String city;
+
+  /// Continent for this location. Used by the location picker in the
+  /// Interconnect UI.
+  /// Possible string values are:
+  /// - "AFRICA"
+  /// - "ASIA_PAC"
+  /// - "C_AFRICA"
+  /// - "C_ASIA_PAC"
+  /// - "C_EUROPE"
+  /// - "C_NORTH_AMERICA"
+  /// - "C_SOUTH_AMERICA"
+  /// - "EUROPE"
+  /// - "NORTH_AMERICA"
+  /// - "SOUTH_AMERICA"
+  core.String continent;
+
+  /// [Output Only] Creation timestamp in RFC3339 text format.
+  core.String creationTimestamp;
+
+  /// [Output Only] An optional description of the resource.
+  core.String description;
+
+  /// [Output Only] The name of the provider for this facility (e.g., EQUINIX).
+  core.String facilityProvider;
+
+  /// [Output Only] A provider-assigned Identifier for this facility (e.g.,
+  /// Ashburn-DC1).
+  core.String facilityProviderFacilityId;
+
+  /// [Output Only] The unique identifier for the resource. This identifier is
+  /// defined by the server.
+  core.String id;
+
+  /// [Output Only] Type of the resource. Always compute#interconnectLocation
+  /// for interconnect locations.
+  core.String kind;
+
+  /// [Output Only] Name of the resource.
+  core.String name;
+
+  /// [Output Only] The peeringdb identifier for this facility (corresponding
+  /// with a netfac type in peeringdb).
+  core.String peeringdbFacilityId;
+
+  /// [Output Only] A list of InterconnectLocation.RegionInfo objects, that
+  /// describe parameters pertaining to the relation between this
+  /// InterconnectLocation and various Google Cloud regions.
+  core.List<InterconnectLocationRegionInfo> regionInfos;
+
+  /// [Output Only] Server-defined URL for the resource.
+  core.String selfLink;
+
+  InterconnectLocation();
+
+  InterconnectLocation.fromJson(core.Map _json) {
+    if (_json.containsKey("address")) {
+      address = _json["address"];
+    }
+    if (_json.containsKey("availabilityZone")) {
+      availabilityZone = _json["availabilityZone"];
+    }
+    if (_json.containsKey("city")) {
+      city = _json["city"];
+    }
+    if (_json.containsKey("continent")) {
+      continent = _json["continent"];
+    }
+    if (_json.containsKey("creationTimestamp")) {
+      creationTimestamp = _json["creationTimestamp"];
+    }
+    if (_json.containsKey("description")) {
+      description = _json["description"];
+    }
+    if (_json.containsKey("facilityProvider")) {
+      facilityProvider = _json["facilityProvider"];
+    }
+    if (_json.containsKey("facilityProviderFacilityId")) {
+      facilityProviderFacilityId = _json["facilityProviderFacilityId"];
+    }
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("peeringdbFacilityId")) {
+      peeringdbFacilityId = _json["peeringdbFacilityId"];
+    }
+    if (_json.containsKey("regionInfos")) {
+      regionInfos = _json["regionInfos"]
+          .map((value) => new InterconnectLocationRegionInfo.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("selfLink")) {
+      selfLink = _json["selfLink"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (address != null) {
+      _json["address"] = address;
+    }
+    if (availabilityZone != null) {
+      _json["availabilityZone"] = availabilityZone;
+    }
+    if (city != null) {
+      _json["city"] = city;
+    }
+    if (continent != null) {
+      _json["continent"] = continent;
+    }
+    if (creationTimestamp != null) {
+      _json["creationTimestamp"] = creationTimestamp;
+    }
+    if (description != null) {
+      _json["description"] = description;
+    }
+    if (facilityProvider != null) {
+      _json["facilityProvider"] = facilityProvider;
+    }
+    if (facilityProviderFacilityId != null) {
+      _json["facilityProviderFacilityId"] = facilityProviderFacilityId;
+    }
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (peeringdbFacilityId != null) {
+      _json["peeringdbFacilityId"] = peeringdbFacilityId;
+    }
+    if (regionInfos != null) {
+      _json["regionInfos"] =
+          regionInfos.map((value) => (value).toJson()).toList();
+    }
+    if (selfLink != null) {
+      _json["selfLink"] = selfLink;
+    }
+    return _json;
+  }
+}
+
+class InterconnectLocationListWarningData {
+  /// [Output Only] A key that provides more detail on the warning being
+  /// returned. For example, for warnings where there are no results in a list
+  /// request for a particular zone, this key might be scope and the key value
+  /// might be the zone name. Other examples might be a key indicating a
+  /// deprecated resource and a suggested replacement, or a warning about
+  /// invalid network settings (for example, if an instance attempts to perform
+  /// IP forwarding but is not enabled for IP forwarding).
+  core.String key;
+
+  /// [Output Only] A warning data value corresponding to the key.
+  core.String value;
+
+  InterconnectLocationListWarningData();
+
+  InterconnectLocationListWarningData.fromJson(core.Map _json) {
+    if (_json.containsKey("key")) {
+      key = _json["key"];
+    }
+    if (_json.containsKey("value")) {
+      value = _json["value"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (key != null) {
+      _json["key"] = key;
+    }
+    if (value != null) {
+      _json["value"] = value;
+    }
+    return _json;
+  }
+}
+
+/// [Output Only] Informational warning message.
+class InterconnectLocationListWarning {
+  /// [Output Only] A warning code, if applicable. For example, Compute Engine
+  /// returns NO_RESULTS_ON_PAGE if there are no results in the response.
+  /// Possible string values are:
+  /// - "CLEANUP_FAILED"
+  /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
+  /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
+  /// - "EXTERNAL_API_WARNING"
+  /// - "FIELD_VALUE_OVERRIDEN"
+  /// - "INJECTED_KERNELS_DEPRECATED"
+  /// - "MISSING_TYPE_DEPENDENCY"
+  /// - "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+  /// - "NEXT_HOP_CANNOT_IP_FORWARD"
+  /// - "NEXT_HOP_INSTANCE_NOT_FOUND"
+  /// - "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+  /// - "NEXT_HOP_NOT_RUNNING"
+  /// - "NOT_CRITICAL_ERROR"
+  /// - "NO_RESULTS_ON_PAGE"
+  /// - "REQUIRED_TOS_AGREEMENT"
+  /// - "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+  /// - "RESOURCE_NOT_DELETED"
+  /// - "SCHEMA_VALIDATION_IGNORED"
+  /// - "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+  /// - "UNDECLARED_PROPERTIES"
+  /// - "UNREACHABLE"
+  core.String code;
+
+  /// [Output Only] Metadata about this warning in key: value format. For
+  /// example:
+  /// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+  core.List<InterconnectLocationListWarningData> data;
+
+  /// [Output Only] A human-readable description of the warning code.
+  core.String message;
+
+  InterconnectLocationListWarning();
+
+  InterconnectLocationListWarning.fromJson(core.Map _json) {
+    if (_json.containsKey("code")) {
+      code = _json["code"];
+    }
+    if (_json.containsKey("data")) {
+      data = _json["data"]
+          .map((value) =>
+              new InterconnectLocationListWarningData.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("message")) {
+      message = _json["message"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (code != null) {
+      _json["code"] = code;
+    }
+    if (data != null) {
+      _json["data"] = data.map((value) => (value).toJson()).toList();
+    }
+    if (message != null) {
+      _json["message"] = message;
+    }
+    return _json;
+  }
+}
+
+/// Response to the list request, and contains a list of interconnect locations.
+class InterconnectLocationList {
+  /// [Output Only] Unique identifier for the resource; defined by the server.
+  core.String id;
+
+  /// A list of InterconnectLocation resources.
+  core.List<InterconnectLocation> items;
+
+  /// [Output Only] Type of resource. Always compute#interconnectLocationList
+  /// for lists of interconnect locations.
+  core.String kind;
+
+  /// [Output Only] This token allows you to get the next page of results for
+  /// list requests. If the number of results is larger than maxResults, use the
+  /// nextPageToken as a value for the query parameter pageToken in the next
+  /// list request. Subsequent list requests will have their own nextPageToken
+  /// to continue paging through the results.
+  core.String nextPageToken;
+
+  /// [Output Only] Server-defined URL for this resource.
+  core.String selfLink;
+
+  /// [Output Only] Informational warning message.
+  InterconnectLocationListWarning warning;
+
+  InterconnectLocationList();
+
+  InterconnectLocationList.fromJson(core.Map _json) {
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("items")) {
+      items = _json["items"]
+          .map((value) => new InterconnectLocation.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+    if (_json.containsKey("selfLink")) {
+      selfLink = _json["selfLink"];
+    }
+    if (_json.containsKey("warning")) {
+      warning = new InterconnectLocationListWarning.fromJson(_json["warning"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (items != null) {
+      _json["items"] = items.map((value) => (value).toJson()).toList();
+    }
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    if (selfLink != null) {
+      _json["selfLink"] = selfLink;
+    }
+    if (warning != null) {
+      _json["warning"] = (warning).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Information about any potential InterconnectAttachments between an
+/// Interconnect at a specific InterconnectLocation, and a specific Cloud
+/// Region.
+class InterconnectLocationRegionInfo {
+  /// Expected round-trip time in milliseconds, from this InterconnectLocation
+  /// to a VM in this region.
+  core.String expectedRttMs;
+
+  /// Identifies the network presence of this location.
+  /// Possible string values are:
+  /// - "GLOBAL"
+  /// - "LOCAL_REGION"
+  /// - "LP_GLOBAL"
+  /// - "LP_LOCAL_REGION"
+  core.String locationPresence;
+
+  /// URL for the region of this location.
+  core.String region;
+
+  InterconnectLocationRegionInfo();
+
+  InterconnectLocationRegionInfo.fromJson(core.Map _json) {
+    if (_json.containsKey("expectedRttMs")) {
+      expectedRttMs = _json["expectedRttMs"];
+    }
+    if (_json.containsKey("locationPresence")) {
+      locationPresence = _json["locationPresence"];
+    }
+    if (_json.containsKey("region")) {
+      region = _json["region"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (expectedRttMs != null) {
+      _json["expectedRttMs"] = expectedRttMs;
+    }
+    if (locationPresence != null) {
+      _json["locationPresence"] = locationPresence;
+    }
+    if (region != null) {
+      _json["region"] = region;
+    }
+    return _json;
+  }
+}
+
+/// Description of a planned outage on this Interconnect. Next id: 9
+class InterconnectOutageNotification {
+  /// Iff issue_type is IT_PARTIAL_OUTAGE, a list of the Google-side circuit IDs
+  /// that will be affected.
+  core.List<core.String> affectedCircuits;
+
+  /// Short user-visible description of the purpose of the outage.
+  core.String description;
+  core.String endTime;
+
+  ///
+  /// Possible string values are:
+  /// - "IT_OUTAGE"
+  /// - "IT_PARTIAL_OUTAGE"
+  /// - "OUTAGE"
+  /// - "PARTIAL_OUTAGE"
+  core.String issueType;
+
+  /// Unique identifier for this outage notification.
+  core.String name;
+
+  ///
+  /// Possible string values are:
+  /// - "GOOGLE"
+  /// - "NSRC_GOOGLE"
+  core.String source;
+
+  /// Scheduled start and end times for the outage (milliseconds since Unix
+  /// epoch).
+  core.String startTime;
+
+  ///
+  /// Possible string values are:
+  /// - "ACTIVE"
+  /// - "CANCELLED"
+  /// - "NS_ACTIVE"
+  /// - "NS_CANCELED"
+  core.String state;
+
+  InterconnectOutageNotification();
+
+  InterconnectOutageNotification.fromJson(core.Map _json) {
+    if (_json.containsKey("affectedCircuits")) {
+      affectedCircuits = _json["affectedCircuits"];
+    }
+    if (_json.containsKey("description")) {
+      description = _json["description"];
+    }
+    if (_json.containsKey("endTime")) {
+      endTime = _json["endTime"];
+    }
+    if (_json.containsKey("issueType")) {
+      issueType = _json["issueType"];
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("source")) {
+      source = _json["source"];
+    }
+    if (_json.containsKey("startTime")) {
+      startTime = _json["startTime"];
+    }
+    if (_json.containsKey("state")) {
+      state = _json["state"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (affectedCircuits != null) {
+      _json["affectedCircuits"] = affectedCircuits;
+    }
+    if (description != null) {
+      _json["description"] = description;
+    }
+    if (endTime != null) {
+      _json["endTime"] = endTime;
+    }
+    if (issueType != null) {
+      _json["issueType"] = issueType;
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (source != null) {
+      _json["source"] = source;
+    }
+    if (startTime != null) {
+      _json["startTime"] = startTime;
+    }
+    if (state != null) {
+      _json["state"] = state;
+    }
+    return _json;
+  }
+}
+
 /// A license resource.
 class License {
   /// [Output Only] Deprecated. This field no longer reflects whether a license
@@ -35543,7 +40365,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -35727,7 +40551,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -35908,7 +40734,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -36623,7 +41451,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -37042,7 +41872,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -37398,7 +42230,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -37583,7 +42417,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -37764,7 +42600,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -38448,7 +43286,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -38627,7 +43467,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -38807,7 +43649,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -39150,7 +43994,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -39414,7 +44260,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -39656,7 +44504,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -39966,7 +44816,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -40273,7 +45125,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -40516,6 +45370,11 @@
   /// represents the IP address of the interface.
   core.String ipRange;
 
+  /// URI of the linked interconnect attachment. It must be in the same region
+  /// as the router. Each interface can have at most one linked resource and it
+  /// could either be a VPN Tunnel or an interconnect attachment.
+  core.String linkedInterconnectAttachment;
+
   /// URI of the linked VPN tunnel. It must be in the same region as the router.
   /// Each interface can have at most one linked resource and it could either be
   /// a VPN Tunnel or an interconnect attachment.
@@ -40531,6 +45390,9 @@
     if (_json.containsKey("ipRange")) {
       ipRange = _json["ipRange"];
     }
+    if (_json.containsKey("linkedInterconnectAttachment")) {
+      linkedInterconnectAttachment = _json["linkedInterconnectAttachment"];
+    }
     if (_json.containsKey("linkedVpnTunnel")) {
       linkedVpnTunnel = _json["linkedVpnTunnel"];
     }
@@ -40545,6 +45407,9 @@
     if (ipRange != null) {
       _json["ipRange"] = ipRange;
     }
+    if (linkedInterconnectAttachment != null) {
+      _json["linkedInterconnectAttachment"] = linkedInterconnectAttachment;
+    }
     if (linkedVpnTunnel != null) {
       _json["linkedVpnTunnel"] = linkedVpnTunnel;
     }
@@ -40599,7 +45464,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -40996,7 +45863,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -41580,7 +46449,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -41858,7 +46729,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -42186,7 +47059,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -42370,7 +47245,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -42612,7 +47489,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -42975,7 +47854,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -43282,7 +48163,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -43577,7 +48460,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -43761,7 +48646,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -43941,7 +48828,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -44256,7 +49145,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -44474,7 +49365,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -44763,7 +49656,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -45104,7 +49999,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -45430,7 +50327,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -45741,7 +50640,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -45926,7 +50827,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -46107,7 +51010,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -46433,7 +51338,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -47013,7 +51920,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -47196,7 +52105,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -47375,7 +52286,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -47515,7 +52428,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
@@ -47838,7 +52753,9 @@
   /// Possible string values are:
   /// - "CLEANUP_FAILED"
   /// - "DEPRECATED_RESOURCE_USED"
+  /// - "DEPRECATED_TYPE_USED"
   /// - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+  /// - "EXPERIMENTAL_TYPE_USED"
   /// - "EXTERNAL_API_WARNING"
   /// - "FIELD_VALUE_OVERRIDEN"
   /// - "INJECTED_KERNELS_DEPRECATED"
diff --git a/generated/googleapis/lib/consumersurveys/v2.dart b/generated/googleapis/lib/consumersurveys/v2.dart
index 6134108..c18fff7 100644
--- a/generated/googleapis/lib/consumersurveys/v2.dart
+++ b/generated/googleapis/lib/consumersurveys/v2.dart
@@ -62,6 +62,9 @@
   ///
   /// [panelId] - External URL ID for the panel.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MobileAppPanel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -69,7 +72,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<MobileAppPanel> get(core.String panelId) {
+  async.Future<MobileAppPanel> get(core.String panelId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -80,6 +83,9 @@
     if (panelId == null) {
       throw new core.ArgumentError("Parameter panelId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'mobileAppPanels/' + commons.Escaper.ecapeVariable('$panelId');
 
@@ -102,6 +108,9 @@
   ///
   /// [token] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MobileAppPanelsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -110,7 +119,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<MobileAppPanelsListResponse> list(
-      {core.int maxResults, core.int startIndex, core.String token}) {
+      {core.int maxResults,
+      core.int startIndex,
+      core.String token,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -127,6 +139,9 @@
     if (token != null) {
       _queryParams["token"] = [token];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'mobileAppPanels';
 
@@ -149,6 +164,9 @@
   ///
   /// [panelId] - External URL ID for the panel.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MobileAppPanel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -157,7 +175,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<MobileAppPanel> update(
-      MobileAppPanel request, core.String panelId) {
+      MobileAppPanel request, core.String panelId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -171,6 +190,9 @@
     if (panelId == null) {
       throw new core.ArgumentError("Parameter panelId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'mobileAppPanels/' + commons.Escaper.ecapeVariable('$panelId');
 
@@ -199,6 +221,9 @@
   ///
   /// [surveyUrlId] - External URL ID for the survey.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -215,7 +240,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future get(ResultsGetRequest request, core.String surveyUrlId,
-      {commons.DownloadOptions downloadOptions:
+      {core.String $fields,
+      commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -230,6 +256,9 @@
     if (surveyUrlId == null) {
       throw new core.ArgumentError("Parameter surveyUrlId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -262,6 +291,9 @@
   ///
   /// [surveyUrlId] - External URL ID for the survey.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SurveysDeleteResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -269,7 +301,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SurveysDeleteResponse> delete(core.String surveyUrlId) {
+  async.Future<SurveysDeleteResponse> delete(core.String surveyUrlId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -280,6 +313,9 @@
     if (surveyUrlId == null) {
       throw new core.ArgumentError("Parameter surveyUrlId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'surveys/' + commons.Escaper.ecapeVariable('$surveyUrlId');
 
@@ -298,6 +334,9 @@
   ///
   /// [surveyUrlId] - External URL ID for the survey.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Survey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -305,7 +344,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Survey> get(core.String surveyUrlId) {
+  async.Future<Survey> get(core.String surveyUrlId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -316,6 +355,9 @@
     if (surveyUrlId == null) {
       throw new core.ArgumentError("Parameter surveyUrlId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'surveys/' + commons.Escaper.ecapeVariable('$surveyUrlId');
 
@@ -334,6 +376,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Survey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -341,7 +386,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Survey> insert(Survey request) {
+  async.Future<Survey> insert(Survey request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -352,6 +397,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'surveys';
 
@@ -374,6 +422,9 @@
   ///
   /// [token] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SurveysListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -382,7 +433,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SurveysListResponse> list(
-      {core.int maxResults, core.int startIndex, core.String token}) {
+      {core.int maxResults,
+      core.int startIndex,
+      core.String token,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -399,6 +453,9 @@
     if (token != null) {
       _queryParams["token"] = [token];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'surveys';
 
@@ -419,6 +476,9 @@
   ///
   /// [resourceId] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SurveysStartResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -427,7 +487,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SurveysStartResponse> start(
-      SurveysStartRequest request, core.String resourceId) {
+      SurveysStartRequest request, core.String resourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -441,6 +502,9 @@
     if (resourceId == null) {
       throw new core.ArgumentError("Parameter resourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'surveys/' + commons.Escaper.ecapeVariable('$resourceId') + '/start';
 
@@ -459,6 +523,9 @@
   ///
   /// [resourceId] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SurveysStopResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -466,7 +533,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SurveysStopResponse> stop(core.String resourceId) {
+  async.Future<SurveysStopResponse> stop(core.String resourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -477,6 +545,9 @@
     if (resourceId == null) {
       throw new core.ArgumentError("Parameter resourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'surveys/' + commons.Escaper.ecapeVariable('$resourceId') + '/stop';
 
@@ -498,6 +569,9 @@
   ///
   /// [surveyUrlId] - External URL ID for the survey.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Survey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -505,7 +579,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Survey> update(Survey request, core.String surveyUrlId) {
+  async.Future<Survey> update(Survey request, core.String surveyUrlId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -519,6 +594,9 @@
     if (surveyUrlId == null) {
       throw new core.ArgumentError("Parameter surveyUrlId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'surveys/' + commons.Escaper.ecapeVariable('$surveyUrlId');
 
diff --git a/generated/googleapis/lib/container/v1.dart b/generated/googleapis/lib/container/v1.dart
index 3afa30d..0454c31 100644
--- a/generated/googleapis/lib/container/v1.dart
+++ b/generated/googleapis/lib/container/v1.dart
@@ -62,6 +62,9 @@
   /// [zone](/compute/docs/zones#available)
   /// to return operations for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ServerConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -70,7 +73,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ServerConfig> getServerconfig(
-      core.String projectId, core.String zone) {
+      core.String projectId, core.String zone,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -84,6 +88,9 @@
     if (zone == null) {
       throw new core.ArgumentError("Parameter zone is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -125,6 +132,9 @@
   ///
   /// [clusterId] - The name of the cluster to upgrade.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -133,7 +143,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> addons(SetAddonsConfigRequest request,
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -153,6 +164,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -186,6 +200,9 @@
   ///
   /// [clusterId] - The name of the cluster.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -194,7 +211,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> completeIpRotation(CompleteIPRotationRequest request,
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -214,6 +232,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -257,6 +278,9 @@
   /// [zone](/compute/docs/zones#available) in which the cluster
   /// resides.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -265,7 +289,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> create(
-      CreateClusterRequest request, core.String projectId, core.String zone) {
+      CreateClusterRequest request, core.String projectId, core.String zone,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -282,6 +307,9 @@
     if (zone == null) {
       throw new core.ArgumentError("Parameter zone is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -319,6 +347,9 @@
   ///
   /// [clusterId] - The name of the cluster to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -327,7 +358,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -344,6 +376,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -374,6 +409,9 @@
   ///
   /// [clusterId] - The name of the cluster to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Cluster].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -382,7 +420,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Cluster> get(
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -399,6 +438,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -431,6 +473,9 @@
   ///
   /// [clusterId] - The name of the cluster to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -439,7 +484,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> legacyAbac(SetLegacyAbacRequest request,
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -459,6 +505,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -489,6 +538,9 @@
   /// [zone](/compute/docs/zones#available) in which the cluster
   /// resides, or "-" for all zones.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListClustersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -497,7 +549,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListClustersResponse> list(
-      core.String projectId, core.String zone) {
+      core.String projectId, core.String zone,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -511,6 +564,9 @@
     if (zone == null) {
       throw new core.ArgumentError("Parameter zone is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -542,6 +598,9 @@
   ///
   /// [clusterId] - The name of the cluster to upgrade.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -550,7 +609,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> locations(SetLocationsRequest request,
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -570,6 +630,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -603,6 +666,9 @@
   ///
   /// [clusterId] - The name of the cluster to upgrade.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -611,7 +677,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> logging(SetLoggingServiceRequest request,
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -631,6 +698,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -664,6 +734,9 @@
   ///
   /// [clusterId] - The name of the cluster to upgrade.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -672,7 +745,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> master(UpdateMasterRequest request,
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -692,6 +766,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -725,6 +802,9 @@
   ///
   /// [clusterId] - The name of the cluster to upgrade.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -733,7 +813,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> monitoring(SetMonitoringServiceRequest request,
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -753,6 +834,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -786,6 +870,9 @@
   ///
   /// [clusterId] - The name of the cluster.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -794,7 +881,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> resourceLabels(SetLabelsRequest request,
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -814,6 +902,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -847,6 +938,9 @@
   ///
   /// [clusterId] - The name of the cluster to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -858,7 +952,8 @@
       SetMaintenancePolicyRequest request,
       core.String projectId,
       core.String zone,
-      core.String clusterId) {
+      core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -878,6 +973,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -913,6 +1011,9 @@
   ///
   /// [clusterId] - The name of the cluster to upgrade.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -921,7 +1022,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> setMasterAuth(SetMasterAuthRequest request,
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -941,6 +1043,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -974,6 +1079,9 @@
   ///
   /// [clusterId] - The name of the cluster.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -982,7 +1090,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> setNetworkPolicy(SetNetworkPolicyRequest request,
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1002,6 +1111,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1035,6 +1147,9 @@
   ///
   /// [clusterId] - The name of the cluster.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1043,7 +1158,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> startIpRotation(StartIPRotationRequest request,
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1063,6 +1179,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1096,6 +1215,9 @@
   ///
   /// [clusterId] - The name of the cluster to upgrade.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1104,7 +1226,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> update(UpdateClusterRequest request,
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1124,6 +1247,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1165,6 +1291,9 @@
   ///
   /// [nodePoolId] - The name of the node pool to upgrade.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1177,7 +1306,8 @@
       core.String projectId,
       core.String zone,
       core.String clusterId,
-      core.String nodePoolId) {
+      core.String nodePoolId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1200,6 +1330,9 @@
     if (nodePoolId == null) {
       throw new core.ArgumentError("Parameter nodePoolId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1235,6 +1368,9 @@
   ///
   /// [clusterId] - The name of the cluster.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1243,7 +1379,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> create(CreateNodePoolRequest request,
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1263,6 +1400,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1296,6 +1436,9 @@
   ///
   /// [nodePoolId] - The name of the node pool to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1304,7 +1447,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String projectId, core.String zone,
-      core.String clusterId, core.String nodePoolId) {
+      core.String clusterId, core.String nodePoolId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1324,6 +1468,9 @@
     if (nodePoolId == null) {
       throw new core.ArgumentError("Parameter nodePoolId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1358,6 +1505,9 @@
   ///
   /// [nodePoolId] - The name of the node pool.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [NodePool].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1366,7 +1516,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<NodePool> get(core.String projectId, core.String zone,
-      core.String clusterId, core.String nodePoolId) {
+      core.String clusterId, core.String nodePoolId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1386,6 +1537,9 @@
     if (nodePoolId == null) {
       throw new core.ArgumentError("Parameter nodePoolId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1418,6 +1572,9 @@
   ///
   /// [clusterId] - The name of the cluster.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListNodePoolsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1426,7 +1583,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListNodePoolsResponse> list(
-      core.String projectId, core.String zone, core.String clusterId) {
+      core.String projectId, core.String zone, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1443,6 +1601,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1479,6 +1640,9 @@
   ///
   /// [nodePoolId] - The name of the node pool to rollback.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1491,7 +1655,8 @@
       core.String projectId,
       core.String zone,
       core.String clusterId,
-      core.String nodePoolId) {
+      core.String nodePoolId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1514,6 +1679,9 @@
     if (nodePoolId == null) {
       throw new core.ArgumentError("Parameter nodePoolId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1551,6 +1719,9 @@
   ///
   /// [nodePoolId] - The name of the node pool to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1563,7 +1734,8 @@
       core.String projectId,
       core.String zone,
       core.String clusterId,
-      core.String nodePoolId) {
+      core.String nodePoolId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1586,6 +1758,9 @@
     if (nodePoolId == null) {
       throw new core.ArgumentError("Parameter nodePoolId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1623,6 +1798,9 @@
   ///
   /// [nodePoolId] - The name of the node pool to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1635,7 +1813,8 @@
       core.String projectId,
       core.String zone,
       core.String clusterId,
-      core.String nodePoolId) {
+      core.String nodePoolId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1658,6 +1837,9 @@
     if (nodePoolId == null) {
       throw new core.ArgumentError("Parameter nodePoolId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1695,6 +1877,9 @@
   ///
   /// [nodePoolId] - The name of the node pool to upgrade.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1707,7 +1892,8 @@
       core.String projectId,
       core.String zone,
       core.String clusterId,
-      core.String nodePoolId) {
+      core.String nodePoolId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1730,6 +1916,9 @@
     if (nodePoolId == null) {
       throw new core.ArgumentError("Parameter nodePoolId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1771,6 +1960,9 @@
   ///
   /// [operationId] - The server-assigned `name` of the operation.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1779,7 +1971,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> cancel(CancelOperationRequest request,
-      core.String projectId, core.String zone, core.String operationId) {
+      core.String projectId, core.String zone, core.String operationId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1799,6 +1992,9 @@
     if (operationId == null) {
       throw new core.ArgumentError("Parameter operationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1830,6 +2026,9 @@
   ///
   /// [operationId] - The server-assigned `name` of the operation.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1838,7 +2037,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> get(
-      core.String projectId, core.String zone, core.String operationId) {
+      core.String projectId, core.String zone, core.String operationId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1855,6 +2055,9 @@
     if (operationId == null) {
       throw new core.ArgumentError("Parameter operationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1883,6 +2086,9 @@
   /// [zone](/compute/docs/zones#available)
   /// to return operations for, or `-` for all zones.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOperationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1891,7 +2097,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOperationsResponse> list(
-      core.String projectId, core.String zone) {
+      core.String projectId, core.String zone,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1905,6 +2112,9 @@
     if (zone == null) {
       throw new core.ArgumentError("Parameter zone is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -4177,11 +4387,16 @@
 
 /// SetMasterAuthRequest updates the admin password of a cluster.
 class SetMasterAuthRequest {
-  /// The exact form of action to be taken on the master auth
+  /// The exact form of action to be taken on the master auth.
   /// Possible string values are:
-  /// - "UNKNOWN" : Operation is unknown and will error out
+  /// - "UNKNOWN" : Operation is unknown and will error out.
   /// - "SET_PASSWORD" : Set the password to a user generated value.
   /// - "GENERATE_PASSWORD" : Generate a new password and set it to that.
+  /// - "SET_USERNAME" : Set the username.  If an empty username is provided,
+  /// basic authentication
+  /// is disabled for the cluster.  If a non-empty username is provided, basic
+  /// authentication is enabled, with either a provided password or a generated
+  /// one.
   core.String action;
 
   /// A description of the update.
diff --git a/generated/googleapis/lib/content/v2.dart b/generated/googleapis/lib/content/v2.dart
index 9c48cbf..297a6ed 100644
--- a/generated/googleapis/lib/content/v2.dart
+++ b/generated/googleapis/lib/content/v2.dart
@@ -53,6 +53,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountsAuthInfoResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -60,7 +63,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AccountsAuthInfoResponse> authinfo() {
+  async.Future<AccountsAuthInfoResponse> authinfo({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -68,6 +71,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'accounts/authinfo';
 
     var _response = _requester.request(_url, "GET",
@@ -95,6 +102,9 @@
   /// flag removes any existing claim on the requested website by another
   /// account and replaces it with a claim from this account.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountsClaimWebsiteResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -104,7 +114,7 @@
   /// this method will complete with the same error.
   async.Future<AccountsClaimWebsiteResponse> claimwebsite(
       core.String merchantId, core.String accountId,
-      {core.bool overwrite}) {
+      {core.bool overwrite, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -121,6 +131,9 @@
     if (overwrite != null) {
       _queryParams["overwrite"] = ["${overwrite}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/accounts/' +
@@ -146,6 +159,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountsCustomBatchResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -155,7 +171,8 @@
   /// this method will complete with the same error.
   async.Future<AccountsCustomBatchResponse> custombatch(
       AccountsCustomBatchRequest request,
-      {core.bool dryRun}) {
+      {core.bool dryRun,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -169,6 +186,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/batch';
 
@@ -196,13 +216,16 @@
   /// [force] - Flag to delete sub-accounts with products. The default value is
   /// false.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String merchantId, core.String accountId,
-      {core.bool dryRun, core.bool force}) {
+      {core.bool dryRun, core.bool force, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -222,6 +245,9 @@
     if (force != null) {
       _queryParams["force"] = ["${force}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -249,6 +275,9 @@
   ///
   /// [accountId] - The ID of the account.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -256,7 +285,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Account> get(core.String merchantId, core.String accountId) {
+  async.Future<Account> get(core.String merchantId, core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -270,6 +300,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/accounts/' +
@@ -295,6 +328,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -303,7 +339,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Account> insert(Account request, core.String merchantId,
-      {core.bool dryRun}) {
+      {core.bool dryRun, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -320,6 +356,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/accounts';
 
@@ -344,6 +383,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -352,7 +394,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AccountsListResponse> list(core.String merchantId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -369,6 +411,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/accounts';
 
@@ -397,6 +442,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -406,7 +454,7 @@
   /// this method will complete with the same error.
   async.Future<Account> patch(
       Account request, core.String merchantId, core.String accountId,
-      {core.bool dryRun}) {
+      {core.bool dryRun, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -426,6 +474,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/accounts/' +
@@ -455,6 +506,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -464,7 +518,7 @@
   /// this method will complete with the same error.
   async.Future<Account> update(
       Account request, core.String merchantId, core.String accountId,
-      {core.bool dryRun}) {
+      {core.bool dryRun, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -484,6 +538,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/accounts/' +
@@ -508,6 +565,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountstatusesCustomBatchResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -516,7 +576,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AccountstatusesCustomBatchResponse> custombatch(
-      AccountstatusesCustomBatchRequest request) {
+      AccountstatusesCustomBatchRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -527,6 +588,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accountstatuses/batch';
 
@@ -551,6 +615,9 @@
   ///
   /// [accountId] - The ID of the account.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountStatus].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -558,8 +625,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AccountStatus> get(
-      core.String merchantId, core.String accountId) {
+  async.Future<AccountStatus> get(core.String merchantId, core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -573,6 +640,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/accountstatuses/' +
@@ -599,6 +669,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountstatusesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -607,7 +680,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AccountstatusesListResponse> list(core.String merchantId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -624,6 +697,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/accountstatuses';
 
@@ -652,6 +728,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccounttaxCustomBatchResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -661,7 +740,8 @@
   /// this method will complete with the same error.
   async.Future<AccounttaxCustomBatchResponse> custombatch(
       AccounttaxCustomBatchRequest request,
-      {core.bool dryRun}) {
+      {core.bool dryRun,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -675,6 +755,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounttax/batch';
 
@@ -700,6 +783,9 @@
   /// [accountId] - The ID of the account for which to get/update account tax
   /// settings.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountTax].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -707,7 +793,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AccountTax> get(core.String merchantId, core.String accountId) {
+  async.Future<AccountTax> get(core.String merchantId, core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -721,6 +808,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/accounttax/' +
@@ -747,6 +837,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccounttaxListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -755,7 +848,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AccounttaxListResponse> list(core.String merchantId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -772,6 +865,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/accounttax';
 
@@ -801,6 +897,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountTax].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -810,7 +909,7 @@
   /// this method will complete with the same error.
   async.Future<AccountTax> patch(
       AccountTax request, core.String merchantId, core.String accountId,
-      {core.bool dryRun}) {
+      {core.bool dryRun, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -830,6 +929,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/accounttax/' +
@@ -860,6 +962,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountTax].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -869,7 +974,7 @@
   /// this method will complete with the same error.
   async.Future<AccountTax> update(
       AccountTax request, core.String merchantId, core.String accountId,
-      {core.bool dryRun}) {
+      {core.bool dryRun, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -889,6 +994,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/accounttax/' +
@@ -915,6 +1023,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DatafeedsCustomBatchResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -924,7 +1035,8 @@
   /// this method will complete with the same error.
   async.Future<DatafeedsCustomBatchResponse> custombatch(
       DatafeedsCustomBatchRequest request,
-      {core.bool dryRun}) {
+      {core.bool dryRun,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -938,6 +1050,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'datafeeds/batch';
 
@@ -962,13 +1077,16 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String merchantId, core.String datafeedId,
-      {core.bool dryRun}) {
+      {core.bool dryRun, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -985,6 +1103,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1010,6 +1131,9 @@
   ///
   /// [datafeedId] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Datafeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1017,7 +1141,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Datafeed> get(core.String merchantId, core.String datafeedId) {
+  async.Future<Datafeed> get(core.String merchantId, core.String datafeedId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1031,6 +1156,9 @@
     if (datafeedId == null) {
       throw new core.ArgumentError("Parameter datafeedId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/datafeeds/' +
@@ -1056,6 +1184,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Datafeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1064,7 +1195,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Datafeed> insert(Datafeed request, core.String merchantId,
-      {core.bool dryRun}) {
+      {core.bool dryRun, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1081,6 +1212,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/datafeeds';
 
@@ -1105,6 +1239,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DatafeedsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1113,7 +1250,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DatafeedsListResponse> list(core.String merchantId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1130,6 +1267,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/datafeeds';
 
@@ -1156,6 +1296,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Datafeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1165,7 +1308,7 @@
   /// this method will complete with the same error.
   async.Future<Datafeed> patch(
       Datafeed request, core.String merchantId, core.String datafeedId,
-      {core.bool dryRun}) {
+      {core.bool dryRun, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1185,6 +1328,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/datafeeds/' +
@@ -1212,6 +1358,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Datafeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1221,7 +1370,7 @@
   /// this method will complete with the same error.
   async.Future<Datafeed> update(
       Datafeed request, core.String merchantId, core.String datafeedId,
-      {core.bool dryRun}) {
+      {core.bool dryRun, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1241,6 +1390,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/datafeeds/' +
@@ -1266,6 +1418,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DatafeedstatusesCustomBatchResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1274,7 +1429,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DatafeedstatusesCustomBatchResponse> custombatch(
-      DatafeedstatusesCustomBatchRequest request) {
+      DatafeedstatusesCustomBatchRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1285,6 +1441,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'datafeedstatuses/batch';
 
@@ -1317,6 +1476,9 @@
   /// parameter is required for feeds targeting multiple countries and
   /// languages, since a feed may have a different status for each target.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DatafeedStatus].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1326,7 +1488,7 @@
   /// this method will complete with the same error.
   async.Future<DatafeedStatus> get(
       core.String merchantId, core.String datafeedId,
-      {core.String country, core.String language}) {
+      {core.String country, core.String language, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1346,6 +1508,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/datafeedstatuses/' +
@@ -1372,6 +1537,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DatafeedstatusesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1380,7 +1548,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DatafeedstatusesListResponse> list(core.String merchantId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1397,6 +1565,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/datafeedstatuses';
 
@@ -1426,6 +1597,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InventoryCustomBatchResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1435,7 +1609,8 @@
   /// this method will complete with the same error.
   async.Future<InventoryCustomBatchResponse> custombatch(
       InventoryCustomBatchRequest request,
-      {core.bool dryRun}) {
+      {core.bool dryRun,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1449,6 +1624,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'inventory/batch';
 
@@ -1481,6 +1659,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InventorySetResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1490,7 +1671,7 @@
   /// this method will complete with the same error.
   async.Future<InventorySetResponse> set(InventorySetRequest request,
       core.String merchantId, core.String storeCode, core.String productId,
-      {core.bool dryRun}) {
+      {core.bool dryRun, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1513,6 +1694,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/inventory/' +
@@ -1546,6 +1730,9 @@
   ///
   /// [orderId] - The ID of the order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersAcknowledgeResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1556,7 +1743,8 @@
   async.Future<OrdersAcknowledgeResponse> acknowledge(
       OrdersAcknowledgeRequest request,
       core.String merchantId,
-      core.String orderId) {
+      core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1573,6 +1761,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -1599,6 +1790,9 @@
   ///
   /// [orderId] - The ID of the test order to modify.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersAdvanceTestOrderResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1607,7 +1801,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrdersAdvanceTestOrderResponse> advancetestorder(
-      core.String merchantId, core.String orderId) {
+      core.String merchantId, core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1621,6 +1816,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/testorders/' +
@@ -1648,6 +1846,9 @@
   ///
   /// [orderId] - The ID of the order to cancel.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersCancelResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1655,8 +1856,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<OrdersCancelResponse> cancel(OrdersCancelRequest request,
-      core.String merchantId, core.String orderId) {
+  async.Future<OrdersCancelResponse> cancel(
+      OrdersCancelRequest request, core.String merchantId, core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1673,6 +1875,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -1699,6 +1904,9 @@
   ///
   /// [orderId] - The ID of the order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersCancelLineItemResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1709,7 +1917,8 @@
   async.Future<OrdersCancelLineItemResponse> cancellineitem(
       OrdersCancelLineItemRequest request,
       core.String merchantId,
-      core.String orderId) {
+      core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1726,6 +1935,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -1751,6 +1963,9 @@
   ///
   /// [merchantId] - The ID of the managing account.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersCreateTestOrderResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1759,7 +1974,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrdersCreateTestOrderResponse> createtestorder(
-      OrdersCreateTestOrderRequest request, core.String merchantId) {
+      OrdersCreateTestOrderRequest request, core.String merchantId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1773,6 +1989,9 @@
     if (merchantId == null) {
       throw new core.ArgumentError("Parameter merchantId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/testorders';
 
@@ -1793,6 +2012,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersCustomBatchResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1801,7 +2023,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrdersCustomBatchResponse> custombatch(
-      OrdersCustomBatchRequest request) {
+      OrdersCustomBatchRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1812,6 +2035,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'orders/batch';
 
@@ -1834,6 +2060,9 @@
   ///
   /// [orderId] - The ID of the order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Order].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1841,7 +2070,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Order> get(core.String merchantId, core.String orderId) {
+  async.Future<Order> get(core.String merchantId, core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1855,6 +2085,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -1878,6 +2111,9 @@
   ///
   /// [merchantOrderId] - The merchant order id to be looked for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersGetByMerchantOrderIdResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1886,7 +2122,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrdersGetByMerchantOrderIdResponse> getbymerchantorderid(
-      core.String merchantId, core.String merchantOrderId) {
+      core.String merchantId, core.String merchantOrderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1900,6 +2137,9 @@
     if (merchantOrderId == null) {
       throw new core.ArgumentError("Parameter merchantOrderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/ordersbymerchantid/' +
@@ -1930,6 +2170,9 @@
   /// - "template1b"
   /// - "template2"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersGetTestOrderTemplateResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1938,7 +2181,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrdersGetTestOrderTemplateResponse> gettestordertemplate(
-      core.String merchantId, core.String templateName) {
+      core.String merchantId, core.String templateName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1952,6 +2196,9 @@
     if (templateName == null) {
       throw new core.ArgumentError("Parameter templateName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/testordertemplates/' +
@@ -2010,6 +2257,9 @@
   /// partiallyShipped, and completed is a shortcut for shipped ,
   /// partiallyDelivered, delivered, partiallyReturned, returned, and canceled.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2024,7 +2274,8 @@
       core.String pageToken,
       core.String placedDateEnd,
       core.String placedDateStart,
-      core.List<core.String> statuses}) {
+      core.List<core.String> statuses,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2056,6 +2307,9 @@
     if (statuses != null) {
       _queryParams["statuses"] = statuses;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/orders';
 
@@ -2079,6 +2333,9 @@
   ///
   /// [orderId] - The ID of the order to refund.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersRefundResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2086,8 +2343,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<OrdersRefundResponse> refund(OrdersRefundRequest request,
-      core.String merchantId, core.String orderId) {
+  async.Future<OrdersRefundResponse> refund(
+      OrdersRefundRequest request, core.String merchantId, core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2104,6 +2362,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -2130,6 +2391,9 @@
   ///
   /// [orderId] - The ID of the order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersReturnLineItemResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2140,7 +2404,8 @@
   async.Future<OrdersReturnLineItemResponse> returnlineitem(
       OrdersReturnLineItemRequest request,
       core.String merchantId,
-      core.String orderId) {
+      core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2157,6 +2422,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -2184,6 +2452,9 @@
   ///
   /// [orderId] - The ID of the order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersShipLineItemsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2194,7 +2465,8 @@
   async.Future<OrdersShipLineItemsResponse> shiplineitems(
       OrdersShipLineItemsRequest request,
       core.String merchantId,
-      core.String orderId) {
+      core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2211,6 +2483,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -2238,6 +2513,9 @@
   ///
   /// [orderId] - The ID of the order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersUpdateMerchantOrderIdResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2248,7 +2526,8 @@
   async.Future<OrdersUpdateMerchantOrderIdResponse> updatemerchantorderid(
       OrdersUpdateMerchantOrderIdRequest request,
       core.String merchantId,
-      core.String orderId) {
+      core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2265,6 +2544,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -2292,6 +2574,9 @@
   ///
   /// [orderId] - The ID of the order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersUpdateShipmentResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2302,7 +2587,8 @@
   async.Future<OrdersUpdateShipmentResponse> updateshipment(
       OrdersUpdateShipmentRequest request,
       core.String merchantId,
-      core.String orderId) {
+      core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2319,6 +2605,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -2350,6 +2639,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProductsCustomBatchResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2359,7 +2651,8 @@
   /// this method will complete with the same error.
   async.Future<ProductsCustomBatchResponse> custombatch(
       ProductsCustomBatchRequest request,
-      {core.bool dryRun}) {
+      {core.bool dryRun,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2373,6 +2666,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'products/batch';
 
@@ -2397,13 +2693,16 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String merchantId, core.String productId,
-      {core.bool dryRun}) {
+      {core.bool dryRun, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2420,6 +2719,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2445,6 +2747,9 @@
   ///
   /// [productId] - The ID of the product.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Product].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2452,7 +2757,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Product> get(core.String merchantId, core.String productId) {
+  async.Future<Product> get(core.String merchantId, core.String productId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2466,6 +2772,9 @@
     if (productId == null) {
       throw new core.ArgumentError("Parameter productId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/products/' +
@@ -2493,6 +2802,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Product].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2501,7 +2813,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Product> insert(Product request, core.String merchantId,
-      {core.bool dryRun}) {
+      {core.bool dryRun, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2518,6 +2830,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/products';
 
@@ -2546,6 +2861,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProductsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2556,7 +2874,8 @@
   async.Future<ProductsListResponse> list(core.String merchantId,
       {core.bool includeInvalidInsertedItems,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2578,6 +2897,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/products';
 
@@ -2606,6 +2928,9 @@
   /// [includeAttributes] - Flag to include full product data in the results of
   /// this request. The default value is false.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProductstatusesCustomBatchResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2615,7 +2940,8 @@
   /// this method will complete with the same error.
   async.Future<ProductstatusesCustomBatchResponse> custombatch(
       ProductstatusesCustomBatchRequest request,
-      {core.bool includeAttributes}) {
+      {core.bool includeAttributes,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2629,6 +2955,9 @@
     if (includeAttributes != null) {
       _queryParams["includeAttributes"] = ["${includeAttributes}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'productstatuses/batch';
 
@@ -2654,6 +2983,9 @@
   /// [includeAttributes] - Flag to include full product data in the result of
   /// this get request. The default value is false.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProductStatus].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2662,7 +2994,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ProductStatus> get(core.String merchantId, core.String productId,
-      {core.bool includeAttributes}) {
+      {core.bool includeAttributes, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2679,6 +3011,9 @@
     if (includeAttributes != null) {
       _queryParams["includeAttributes"] = ["${includeAttributes}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/productstatuses/' +
@@ -2712,6 +3047,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProductstatusesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2723,7 +3061,8 @@
       {core.bool includeAttributes,
       core.bool includeInvalidInsertedItems,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2748,6 +3087,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/productstatuses';
 
@@ -2777,6 +3119,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ShippingsettingsCustomBatchResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2786,7 +3131,8 @@
   /// this method will complete with the same error.
   async.Future<ShippingsettingsCustomBatchResponse> custombatch(
       ShippingsettingsCustomBatchRequest request,
-      {core.bool dryRun}) {
+      {core.bool dryRun,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2800,6 +3146,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'shippingsettings/batch';
 
@@ -2825,6 +3174,9 @@
   /// [accountId] - The ID of the account for which to get/update shipping
   /// settings.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ShippingSettings].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2833,7 +3185,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ShippingSettings> get(
-      core.String merchantId, core.String accountId) {
+      core.String merchantId, core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2847,6 +3200,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/shippingsettings/' +
@@ -2868,6 +3224,9 @@
   /// [merchantId] - The ID of the account for which to retrieve the supported
   /// carriers.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ShippingsettingsGetSupportedCarriersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2876,7 +3235,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ShippingsettingsGetSupportedCarriersResponse>
-      getsupportedcarriers(core.String merchantId) {
+      getsupportedcarriers(core.String merchantId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2887,6 +3246,9 @@
     if (merchantId == null) {
       throw new core.ArgumentError("Parameter merchantId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/supportedCarriers';
 
@@ -2912,6 +3274,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ShippingsettingsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2920,7 +3285,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ShippingsettingsListResponse> list(core.String merchantId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2937,6 +3302,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/shippingsettings';
 
@@ -2967,6 +3335,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ShippingSettings].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2976,7 +3347,7 @@
   /// this method will complete with the same error.
   async.Future<ShippingSettings> patch(
       ShippingSettings request, core.String merchantId, core.String accountId,
-      {core.bool dryRun}) {
+      {core.bool dryRun, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2996,6 +3367,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/shippingsettings/' +
@@ -3026,6 +3400,9 @@
   ///
   /// [dryRun] - Flag to run the request in dry-run mode.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ShippingSettings].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3035,7 +3412,7 @@
   /// this method will complete with the same error.
   async.Future<ShippingSettings> update(
       ShippingSettings request, core.String merchantId, core.String accountId,
-      {core.bool dryRun}) {
+      {core.bool dryRun, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3055,6 +3432,9 @@
     if (dryRun != null) {
       _queryParams["dryRun"] = ["${dryRun}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/shippingsettings/' +
@@ -4547,8 +4927,8 @@
   /// the data feed.
   core.String attributeLanguage;
 
-  /// [DEPRECATED] Please use target.language instead. The two-letter ISO 639-1
-  /// language of the items in the feed. Must be a valid language for
+  /// [DEPRECATED] Please use targets[].language instead. The two-letter ISO
+  /// 639-1 language of the items in the feed. Must be a valid language for
   /// targetCountry.
   core.String contentLanguage;
 
@@ -4568,8 +4948,8 @@
   /// The ID of the data feed.
   core.String id;
 
-  /// [DEPRECATED] Please use target.includedDestination instead. The list of
-  /// intended destinations (corresponds to checked check boxes in Merchant
+  /// [DEPRECATED] Please use targets[].includedDestinations instead. The list
+  /// of intended destinations (corresponds to checked check boxes in Merchant
   /// Center).
   core.List<core.String> intendedDestinations;
 
@@ -4580,7 +4960,7 @@
   /// A descriptive name of the data feed.
   core.String name;
 
-  /// [DEPRECATED] Please use target.country instead. The country where the
+  /// [DEPRECATED] Please use targets[].country instead. The country where the
   /// items in the feed will be included in the search index, represented as a
   /// CLDR territory code.
   core.String targetCountry;
@@ -5625,6 +6005,7 @@
   /// non-empty. Can only be set if all other fields are not set.
   core.List<core.String> postalCodeGroupNames;
 
+  /// A list of inclusive order price upper bounds. The last price's value can
   /// be "infinity". For example [{"value": "10", "currency": "USD"}, {"value":
   /// "500", "currency": "USD"}, {"value": "infinity", "currency": "USD"}]
   /// represents the headers "<= $10", " $500". All prices within a service must
@@ -5632,6 +6013,7 @@
   /// fields are not set.
   core.List<Price> prices;
 
+  /// A list of inclusive order weight upper bounds. The last weight's value can
   /// be "infinity". For example [{"value": "10", "unit": "kg"}, {"value": "50",
   /// "unit": "kg"}, {"value": "infinity", "unit": "kg"}] represents the headers
   /// "<= 10kg", " 50kg". All weights within a service must have the same unit.
diff --git a/generated/googleapis/lib/content/v2sandbox.dart b/generated/googleapis/lib/content/v2sandbox.dart
index 7cd554a..3deb7a7 100644
--- a/generated/googleapis/lib/content/v2sandbox.dart
+++ b/generated/googleapis/lib/content/v2sandbox.dart
@@ -47,6 +47,9 @@
   ///
   /// [orderId] - The ID of the order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersAcknowledgeResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -57,7 +60,8 @@
   async.Future<OrdersAcknowledgeResponse> acknowledge(
       OrdersAcknowledgeRequest request,
       core.String merchantId,
-      core.String orderId) {
+      core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -74,6 +78,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -100,6 +107,9 @@
   ///
   /// [orderId] - The ID of the test order to modify.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersAdvanceTestOrderResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -108,7 +118,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrdersAdvanceTestOrderResponse> advancetestorder(
-      core.String merchantId, core.String orderId) {
+      core.String merchantId, core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -122,6 +133,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/testorders/' +
@@ -149,6 +163,9 @@
   ///
   /// [orderId] - The ID of the order to cancel.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersCancelResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -156,8 +173,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<OrdersCancelResponse> cancel(OrdersCancelRequest request,
-      core.String merchantId, core.String orderId) {
+  async.Future<OrdersCancelResponse> cancel(
+      OrdersCancelRequest request, core.String merchantId, core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -174,6 +192,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -200,6 +221,9 @@
   ///
   /// [orderId] - The ID of the order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersCancelLineItemResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -210,7 +234,8 @@
   async.Future<OrdersCancelLineItemResponse> cancellineitem(
       OrdersCancelLineItemRequest request,
       core.String merchantId,
-      core.String orderId) {
+      core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -227,6 +252,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -252,6 +280,9 @@
   ///
   /// [merchantId] - The ID of the managing account.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersCreateTestOrderResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -260,7 +291,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrdersCreateTestOrderResponse> createtestorder(
-      OrdersCreateTestOrderRequest request, core.String merchantId) {
+      OrdersCreateTestOrderRequest request, core.String merchantId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -274,6 +306,9 @@
     if (merchantId == null) {
       throw new core.ArgumentError("Parameter merchantId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/testorders';
 
@@ -294,6 +329,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersCustomBatchResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -302,7 +340,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrdersCustomBatchResponse> custombatch(
-      OrdersCustomBatchRequest request) {
+      OrdersCustomBatchRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -313,6 +352,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'orders/batch';
 
@@ -335,6 +377,9 @@
   ///
   /// [orderId] - The ID of the order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Order].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -342,7 +387,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Order> get(core.String merchantId, core.String orderId) {
+  async.Future<Order> get(core.String merchantId, core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -356,6 +402,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -379,6 +428,9 @@
   ///
   /// [merchantOrderId] - The merchant order id to be looked for.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersGetByMerchantOrderIdResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -387,7 +439,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrdersGetByMerchantOrderIdResponse> getbymerchantorderid(
-      core.String merchantId, core.String merchantOrderId) {
+      core.String merchantId, core.String merchantOrderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -401,6 +454,9 @@
     if (merchantOrderId == null) {
       throw new core.ArgumentError("Parameter merchantOrderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/ordersbymerchantid/' +
@@ -431,6 +487,9 @@
   /// - "template1b"
   /// - "template2"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersGetTestOrderTemplateResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -439,7 +498,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrdersGetTestOrderTemplateResponse> gettestordertemplate(
-      core.String merchantId, core.String templateName) {
+      core.String merchantId, core.String templateName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -453,6 +513,9 @@
     if (templateName == null) {
       throw new core.ArgumentError("Parameter templateName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/testordertemplates/' +
@@ -511,6 +574,9 @@
   /// partiallyShipped, and completed is a shortcut for shipped ,
   /// partiallyDelivered, delivered, partiallyReturned, returned, and canceled.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -525,7 +591,8 @@
       core.String pageToken,
       core.String placedDateEnd,
       core.String placedDateStart,
-      core.List<core.String> statuses}) {
+      core.List<core.String> statuses,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -557,6 +624,9 @@
     if (statuses != null) {
       _queryParams["statuses"] = statuses;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') + '/orders';
 
@@ -580,6 +650,9 @@
   ///
   /// [orderId] - The ID of the order to refund.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersRefundResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -587,8 +660,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<OrdersRefundResponse> refund(OrdersRefundRequest request,
-      core.String merchantId, core.String orderId) {
+  async.Future<OrdersRefundResponse> refund(
+      OrdersRefundRequest request, core.String merchantId, core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -605,6 +679,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -631,6 +708,9 @@
   ///
   /// [orderId] - The ID of the order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersReturnLineItemResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -641,7 +721,8 @@
   async.Future<OrdersReturnLineItemResponse> returnlineitem(
       OrdersReturnLineItemRequest request,
       core.String merchantId,
-      core.String orderId) {
+      core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -658,6 +739,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -685,6 +769,9 @@
   ///
   /// [orderId] - The ID of the order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersShipLineItemsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -695,7 +782,8 @@
   async.Future<OrdersShipLineItemsResponse> shiplineitems(
       OrdersShipLineItemsRequest request,
       core.String merchantId,
-      core.String orderId) {
+      core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -712,6 +800,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -739,6 +830,9 @@
   ///
   /// [orderId] - The ID of the order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersUpdateMerchantOrderIdResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -749,7 +843,8 @@
   async.Future<OrdersUpdateMerchantOrderIdResponse> updatemerchantorderid(
       OrdersUpdateMerchantOrderIdRequest request,
       core.String merchantId,
-      core.String orderId) {
+      core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -766,6 +861,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
@@ -793,6 +891,9 @@
   ///
   /// [orderId] - The ID of the order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersUpdateShipmentResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -803,7 +904,8 @@
   async.Future<OrdersUpdateShipmentResponse> updateshipment(
       OrdersUpdateShipmentRequest request,
       core.String merchantId,
-      core.String orderId) {
+      core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -820,6 +922,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$merchantId') +
         '/orders/' +
diff --git a/generated/googleapis/lib/customsearch/v1.dart b/generated/googleapis/lib/customsearch/v1.dart
index 69d2e87..f4b89d4 100644
--- a/generated/googleapis/lib/customsearch/v1.dart
+++ b/generated/googleapis/lib/customsearch/v1.dart
@@ -193,6 +193,9 @@
   ///
   /// [start] - The index of the first result to return
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Search].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -230,7 +233,8 @@
       core.String siteSearch,
       core.String siteSearchFilter,
       core.String sort,
-      core.int start}) {
+      core.int start,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -332,6 +336,9 @@
     if (start != null) {
       _queryParams["start"] = ["${start}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1';
 
diff --git a/generated/googleapis/lib/dataproc/v1.dart b/generated/googleapis/lib/dataproc/v1.dart
index 710520e..fddba07 100644
--- a/generated/googleapis/lib/dataproc/v1.dart
+++ b/generated/googleapis/lib/dataproc/v1.dart
@@ -71,6 +71,9 @@
   /// [region] - Required. The Cloud Dataproc region in which to handle the
   /// request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -79,7 +82,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> create(
-      Cluster request, core.String projectId, core.String region) {
+      Cluster request, core.String projectId, core.String region,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -96,6 +100,9 @@
     if (region == null) {
       throw new core.ArgumentError("Parameter region is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -124,6 +131,9 @@
   ///
   /// [clusterName] - Required. The cluster name.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -132,7 +142,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(
-      core.String projectId, core.String region, core.String clusterName) {
+      core.String projectId, core.String region, core.String clusterName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -149,6 +160,9 @@
     if (clusterName == null) {
       throw new core.ArgumentError("Parameter clusterName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -181,6 +195,9 @@
   ///
   /// [clusterName] - Required. The cluster name.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -189,7 +206,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> diagnose(DiagnoseClusterRequest request,
-      core.String projectId, core.String region, core.String clusterName) {
+      core.String projectId, core.String region, core.String clusterName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -209,6 +227,9 @@
     if (clusterName == null) {
       throw new core.ArgumentError("Parameter clusterName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -239,6 +260,9 @@
   ///
   /// [clusterName] - Required. The cluster name.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Cluster].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -247,7 +271,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Cluster> get(
-      core.String projectId, core.String region, core.String clusterName) {
+      core.String projectId, core.String region, core.String clusterName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -264,6 +289,9 @@
     if (clusterName == null) {
       throw new core.ArgumentError("Parameter clusterName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -291,10 +319,6 @@
   /// [region] - Required. The Cloud Dataproc region in which to handle the
   /// request.
   ///
-  /// [pageToken] - Optional. The standard List page token.
-  ///
-  /// [pageSize] - Optional. The standard List page size.
-  ///
   /// [filter] - Optional. A filter constraining the clusters to list. Filters
   /// are case-sensitive and have the following syntax:field = value AND field =
   /// value ...where field is one of status.state, clusterName, or labels.[KEY],
@@ -307,6 +331,13 @@
   /// implicit AND operator.Example filter:status.state = ACTIVE AND clusterName
   /// = mycluster AND labels.env = staging AND labels.starred = *
   ///
+  /// [pageToken] - Optional. The standard List page token.
+  ///
+  /// [pageSize] - Optional. The standard List page size.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListClustersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -316,7 +347,10 @@
   /// this method will complete with the same error.
   async.Future<ListClustersResponse> list(
       core.String projectId, core.String region,
-      {core.String pageToken, core.int pageSize, core.String filter}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -330,14 +364,17 @@
     if (region == null) {
       throw new core.ArgumentError("Parameter region is required.");
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/projects/' +
@@ -402,6 +439,9 @@
   /// <td><strong><em>config.secondary_worker_config.num_instances</em></strong></td>
   /// <td>Resize secondary worker group</td>  </tr>  </tbody>  </table>
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -411,7 +451,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(Cluster request, core.String projectId,
       core.String region, core.String clusterName,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -434,6 +474,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -474,6 +517,9 @@
   ///
   /// [jobId] - Required. The job ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Job].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -482,7 +528,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Job> cancel(CancelJobRequest request, core.String projectId,
-      core.String region, core.String jobId) {
+      core.String region, core.String jobId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -502,6 +549,9 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -533,6 +583,9 @@
   ///
   /// [jobId] - Required. The job ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -541,7 +594,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> delete(
-      core.String projectId, core.String region, core.String jobId) {
+      core.String projectId, core.String region, core.String jobId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -558,6 +612,9 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -587,6 +644,9 @@
   ///
   /// [jobId] - Required. The job ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Job].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -595,7 +655,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Job> get(
-      core.String projectId, core.String region, core.String jobId) {
+      core.String projectId, core.String region, core.String jobId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -612,6 +673,9 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -639,14 +703,6 @@
   /// [region] - Required. The Cloud Dataproc region in which to handle the
   /// request.
   ///
-  /// [pageToken] - Optional. The page token, returned by a previous call, to
-  /// request the next page of results.
-  ///
-  /// [pageSize] - Optional. The number of results to return in each response.
-  ///
-  /// [clusterName] - Optional. If set, the returned jobs list includes only
-  /// jobs that were submitted to the named cluster.
-  ///
   /// [filter] - Optional. A filter constraining the jobs to list. Filters are
   /// case-sensitive and have the following syntax:field = value AND field =
   /// value ...where field is status.state or labels.[KEY], and [KEY] is a label
@@ -663,6 +719,17 @@
   /// - "ACTIVE" : A ACTIVE.
   /// - "NON_ACTIVE" : A NON_ACTIVE.
   ///
+  /// [pageToken] - Optional. The page token, returned by a previous call, to
+  /// request the next page of results.
+  ///
+  /// [pageSize] - Optional. The number of results to return in each response.
+  ///
+  /// [clusterName] - Optional. If set, the returned jobs list includes only
+  /// jobs that were submitted to the named cluster.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListJobsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -671,11 +738,12 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListJobsResponse> list(core.String projectId, core.String region,
-      {core.String pageToken,
+      {core.String filter,
+      core.String jobStateMatcher,
+      core.String pageToken,
       core.int pageSize,
       core.String clusterName,
-      core.String filter,
-      core.String jobStateMatcher}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -689,6 +757,12 @@
     if (region == null) {
       throw new core.ArgumentError("Parameter region is required.");
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if (jobStateMatcher != null) {
+      _queryParams["jobStateMatcher"] = [jobStateMatcher];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
@@ -698,11 +772,8 @@
     if (clusterName != null) {
       _queryParams["clusterName"] = [clusterName];
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
-    }
-    if (jobStateMatcher != null) {
-      _queryParams["jobStateMatcher"] = [jobStateMatcher];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/projects/' +
@@ -741,6 +812,9 @@
   /// value. <strong>Note:</strong> Currently, <code>labels</code> is the only
   /// field that can be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Job].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -750,7 +824,7 @@
   /// this method will complete with the same error.
   async.Future<Job> patch(
       Job request, core.String projectId, core.String region, core.String jobId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -773,6 +847,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -802,6 +879,9 @@
   /// [region] - Required. The Cloud Dataproc region in which to handle the
   /// request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Job].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -810,7 +890,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Job> submit(
-      SubmitJobRequest request, core.String projectId, core.String region) {
+      SubmitJobRequest request, core.String projectId, core.String region,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -827,6 +908,9 @@
     if (region == null) {
       throw new core.ArgumentError("Parameter region is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -865,6 +949,9 @@
   /// [name] - The name of the operation resource to be cancelled.
   /// Value must have pattern "^projects/[^/]+/regions/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -872,7 +959,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> cancel(core.String name) {
+  async.Future<Empty> cancel(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -883,6 +970,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':cancel';
 
@@ -905,6 +995,9 @@
   /// [name] - The name of the operation resource to be deleted.
   /// Value must have pattern "^projects/[^/]+/regions/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -912,7 +1005,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -923,6 +1016,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -944,6 +1040,9 @@
   /// [name] - The name of the operation resource.
   /// Value must have pattern "^projects/[^/]+/regions/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -951,7 +1050,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String name) {
+  async.Future<Operation> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -962,6 +1061,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -995,6 +1097,9 @@
   ///
   /// [pageSize] - The standard list page size.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOperationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1003,7 +1108,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOperationsResponse> list(core.String name,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1023,6 +1131,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
diff --git a/generated/googleapis/lib/datastore/v1.dart b/generated/googleapis/lib/datastore/v1.dart
index 355c394..4eabcfd 100644
--- a/generated/googleapis/lib/datastore/v1.dart
+++ b/generated/googleapis/lib/datastore/v1.dart
@@ -53,6 +53,9 @@
   ///
   /// [projectId] - The ID of the project against which to make the request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AllocateIdsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -61,7 +64,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AllocateIdsResponse> allocateIds(
-      AllocateIdsRequest request, core.String projectId) {
+      AllocateIdsRequest request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -75,6 +79,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -97,6 +104,9 @@
   ///
   /// [projectId] - The ID of the project against which to make the request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BeginTransactionResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -105,7 +115,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BeginTransactionResponse> beginTransaction(
-      BeginTransactionRequest request, core.String projectId) {
+      BeginTransactionRequest request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -119,6 +130,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -143,6 +157,9 @@
   ///
   /// [projectId] - The ID of the project against which to make the request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommitResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -151,7 +168,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CommitResponse> commit(
-      CommitRequest request, core.String projectId) {
+      CommitRequest request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -165,6 +183,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -187,6 +208,9 @@
   ///
   /// [projectId] - The ID of the project against which to make the request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LookupResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -195,7 +219,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LookupResponse> lookup(
-      LookupRequest request, core.String projectId) {
+      LookupRequest request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -209,6 +234,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -223,7 +251,8 @@
     return _response.then((data) => new LookupResponse.fromJson(data));
   }
 
-  /// Rolls back a transaction.
+  /// Prevents the supplied keys' IDs from being auto-allocated by Cloud
+  /// Datastore.
   ///
   /// [request] - The metadata request object.
   ///
@@ -231,15 +260,19 @@
   ///
   /// [projectId] - The ID of the project against which to make the request.
   ///
-  /// Completes with a [RollbackResponse].
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ReserveIdsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<RollbackResponse> rollback(
-      RollbackRequest request, core.String projectId) {
+  async.Future<ReserveIdsResponse> reserveIds(
+      ReserveIdsRequest request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -253,6 +286,60 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/projects/' +
+        commons.Escaper.ecapeVariable('$projectId') +
+        ':reserveIds';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new ReserveIdsResponse.fromJson(data));
+  }
+
+  /// Rolls back a transaction.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [projectId] - The ID of the project against which to make the request.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [RollbackResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<RollbackResponse> rollback(
+      RollbackRequest request, core.String projectId,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (projectId == null) {
+      throw new core.ArgumentError("Parameter projectId is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -275,6 +362,9 @@
   ///
   /// [projectId] - The ID of the project against which to make the request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RunQueryResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -283,7 +373,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RunQueryResponse> runQuery(
-      RunQueryRequest request, core.String projectId) {
+      RunQueryRequest request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -297,6 +388,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -334,6 +428,9 @@
   /// [name] - The name of the operation resource to be cancelled.
   /// Value must have pattern "^projects/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -341,7 +438,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> cancel(core.String name) {
+  async.Future<Empty> cancel(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -352,6 +449,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':cancel';
 
@@ -374,6 +474,9 @@
   /// [name] - The name of the operation resource to be deleted.
   /// Value must have pattern "^projects/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -381,7 +484,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -392,6 +495,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -413,6 +519,9 @@
   /// [name] - The name of the operation resource.
   /// Value must have pattern "^projects/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleLongrunningOperation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -420,7 +529,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleLongrunningOperation> get(core.String name) {
+  async.Future<GoogleLongrunningOperation> get(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -431,6 +541,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -461,11 +574,14 @@
   /// [name] - The name of the operation's parent resource.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [pageSize] - The standard list page size.
+  ///
   /// [filter] - The standard list filter.
   ///
   /// [pageToken] - The standard list page token.
   ///
-  /// [pageSize] - The standard list page size.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [GoogleLongrunningListOperationsResponse].
   ///
@@ -475,7 +591,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleLongrunningListOperationsResponse> list(core.String name,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.int pageSize,
+      core.String filter,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -486,14 +605,17 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
     if (filter != null) {
       _queryParams["filter"] = [filter];
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url =
@@ -2438,6 +2560,52 @@
   }
 }
 
+/// The request for Datastore.ReserveIds.
+class ReserveIdsRequest {
+  /// If not empty, the ID of the database against which to make the request.
+  core.String databaseId;
+
+  /// A list of keys with complete key paths whose numeric IDs should not be
+  /// auto-allocated.
+  core.List<Key> keys;
+
+  ReserveIdsRequest();
+
+  ReserveIdsRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("databaseId")) {
+      databaseId = _json["databaseId"];
+    }
+    if (_json.containsKey("keys")) {
+      keys = _json["keys"].map((value) => new Key.fromJson(value)).toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (databaseId != null) {
+      _json["databaseId"] = databaseId;
+    }
+    if (keys != null) {
+      _json["keys"] = keys.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// The response for Datastore.ReserveIds.
+class ReserveIdsResponse {
+  ReserveIdsResponse();
+
+  ReserveIdsResponse.fromJson(core.Map _json) {}
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    return _json;
+  }
+}
+
 /// The request for Datastore.Rollback.
 class RollbackRequest {
   /// The transaction identifier, returned by a call to
diff --git a/generated/googleapis/lib/deploymentmanager/v2.dart b/generated/googleapis/lib/deploymentmanager/v2.dart
index 57f39a5..737d015 100644
--- a/generated/googleapis/lib/deploymentmanager/v2.dart
+++ b/generated/googleapis/lib/deploymentmanager/v2.dart
@@ -69,6 +69,9 @@
   /// [deployment] - The name of the deployment for this request.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -77,7 +80,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> cancelPreview(DeploymentsCancelPreviewRequest request,
-      core.String project, core.String deployment) {
+      core.String project, core.String deployment,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -94,6 +98,9 @@
     if (deployment == null) {
       throw new core.ArgumentError("Parameter deployment is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/deployments/' +
@@ -125,6 +132,9 @@
   /// - "ABANDON"
   /// - "DELETE"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -133,7 +143,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String project, core.String deployment,
-      {core.String deletePolicy}) {
+      {core.String deletePolicy, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -150,6 +160,9 @@
     if (deletePolicy != null) {
       _queryParams["deletePolicy"] = [deletePolicy];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/deployments/' +
@@ -175,6 +188,9 @@
   /// [deployment] - The name of the deployment for this request.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Deployment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -182,7 +198,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Deployment> get(core.String project, core.String deployment) {
+  async.Future<Deployment> get(core.String project, core.String deployment,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -196,6 +213,9 @@
     if (deployment == null) {
       throw new core.ArgumentError("Parameter deployment is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/deployments/' +
@@ -222,6 +242,9 @@
   /// [resource] - Name of the resource for this request.
   /// Value must have pattern "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -229,7 +252,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Policy> getIamPolicy(core.String project, core.String resource) {
+  async.Future<Policy> getIamPolicy(core.String project, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -243,6 +267,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/deployments/' +
@@ -278,6 +305,9 @@
   /// cancel the preview and you must separately delete this deployment if you
   /// want to remove it.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -286,7 +316,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(Deployment request, core.String project,
-      {core.bool preview}) {
+      {core.bool preview, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -303,6 +333,9 @@
     if (preview != null) {
       _queryParams["preview"] = ["${preview}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/deployments';
 
@@ -369,6 +402,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DeploymentsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -380,7 +416,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -403,6 +440,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/deployments';
 
@@ -450,6 +490,9 @@
   /// exist after you cancel the preview and you must separately delete this
   /// deployment if you want to remove it.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -459,7 +502,10 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       Deployment request, core.String project, core.String deployment,
-      {core.String createPolicy, core.String deletePolicy, core.bool preview}) {
+      {core.String createPolicy,
+      core.String deletePolicy,
+      core.bool preview,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -485,6 +531,9 @@
     if (preview != null) {
       _queryParams["preview"] = ["${preview}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/deployments/' +
@@ -513,6 +562,9 @@
   /// [resource] - Name of the resource for this request.
   /// Value must have pattern "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -521,7 +573,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      Policy request, core.String project, core.String resource) {
+      Policy request, core.String project, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -538,6 +591,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/deployments/' +
@@ -567,6 +623,9 @@
   /// [deployment] - The name of the deployment for this request.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -575,7 +634,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> stop(DeploymentsStopRequest request,
-      core.String project, core.String deployment) {
+      core.String project, core.String deployment,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -592,6 +652,9 @@
     if (deployment == null) {
       throw new core.ArgumentError("Parameter deployment is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/deployments/' +
@@ -620,6 +683,9 @@
   /// [resource] - Name of the resource for this request.
   /// Value must have pattern "(?:[-a-z0-9_]{0,62}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -628,9 +694,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestPermissionsResponse> testIamPermissions(
-      TestPermissionsRequest request,
-      core.String project,
-      core.String resource) {
+      TestPermissionsRequest request, core.String project, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -647,6 +712,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/deployments/' +
@@ -697,6 +765,9 @@
   /// exist after you cancel the preview and you must separately delete this
   /// deployment if you want to remove it.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -706,7 +777,10 @@
   /// this method will complete with the same error.
   async.Future<Operation> update(
       Deployment request, core.String project, core.String deployment,
-      {core.String createPolicy, core.String deletePolicy, core.bool preview}) {
+      {core.String createPolicy,
+      core.String deletePolicy,
+      core.bool preview,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -732,6 +806,9 @@
     if (preview != null) {
       _queryParams["preview"] = ["${preview}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/deployments/' +
@@ -766,6 +843,9 @@
   /// [manifest] - The name of the manifest for this request.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Manifest].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -774,7 +854,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Manifest> get(
-      core.String project, core.String deployment, core.String manifest) {
+      core.String project, core.String deployment, core.String manifest,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -791,6 +872,9 @@
     if (manifest == null) {
       throw new core.ArgumentError("Parameter manifest is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/deployments/' +
@@ -864,6 +948,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManifestsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -876,7 +963,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -902,6 +990,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/deployments/' +
@@ -933,6 +1024,9 @@
   ///
   /// [operation] - The name of the operation for this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -940,7 +1034,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String project, core.String operation) {
+  async.Future<Operation> get(core.String project, core.String operation,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -954,6 +1049,9 @@
     if (operation == null) {
       throw new core.ArgumentError("Parameter operation is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/operations/' +
@@ -1022,6 +1120,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OperationsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1033,7 +1134,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1056,6 +1158,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/operations';
 
@@ -1087,6 +1192,9 @@
   ///
   /// [resource] - The name of the resource for this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Resource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1095,7 +1203,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Resource> get(
-      core.String project, core.String deployment, core.String resource) {
+      core.String project, core.String deployment, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1112,6 +1221,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/deployments/' +
@@ -1185,6 +1297,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ResourcesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1197,7 +1312,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1223,6 +1339,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/deployments/' +
@@ -1298,6 +1417,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TypesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1309,7 +1431,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1332,6 +1455,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/types';
 
diff --git a/generated/googleapis/lib/dfareporting/v2_8.dart b/generated/googleapis/lib/dfareporting/v2_8.dart
index 77249d3..1e0cb9f 100644
--- a/generated/googleapis/lib/dfareporting/v2_8.dart
+++ b/generated/googleapis/lib/dfareporting/v2_8.dart
@@ -161,6 +161,9 @@
   ///
   /// [summaryAccountId] - Account ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountActiveAdSummary].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -169,7 +172,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AccountActiveAdSummary> get(
-      core.String profileId, core.String summaryAccountId) {
+      core.String profileId, core.String summaryAccountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -183,6 +187,9 @@
     if (summaryAccountId == null) {
       throw new core.ArgumentError("Parameter summaryAccountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -213,6 +220,9 @@
   ///
   /// [id] - Account permission group ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountPermissionGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -221,7 +231,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AccountPermissionGroup> get(
-      core.String profileId, core.String id) {
+      core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -235,6 +246,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -256,6 +270,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountPermissionGroupsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -263,8 +280,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AccountPermissionGroupsListResponse> list(
-      core.String profileId) {
+  async.Future<AccountPermissionGroupsListResponse> list(core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -275,6 +292,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -305,6 +325,9 @@
   ///
   /// [id] - Account permission ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountPermission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -312,7 +335,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AccountPermission> get(core.String profileId, core.String id) {
+  async.Future<AccountPermission> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -326,6 +350,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -347,6 +374,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountPermissionsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -354,7 +384,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AccountPermissionsListResponse> list(core.String profileId) {
+  async.Future<AccountPermissionsListResponse> list(core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -365,6 +396,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -395,6 +429,9 @@
   ///
   /// [id] - User profile ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountUserProfile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -402,7 +439,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AccountUserProfile> get(core.String profileId, core.String id) {
+  async.Future<AccountUserProfile> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -416,6 +454,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -439,6 +480,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountUserProfile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -447,7 +491,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AccountUserProfile> insert(
-      AccountUserProfile request, core.String profileId) {
+      AccountUserProfile request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -461,6 +506,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -514,6 +562,9 @@
   ///
   /// [userRoleId] - Select only user profiles with the specified user role ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountUserProfilesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -530,7 +581,8 @@
       core.String sortField,
       core.String sortOrder,
       core.String subaccountId,
-      core.String userRoleId}) {
+      core.String userRoleId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -568,6 +620,9 @@
     if (userRoleId != null) {
       _queryParams["userRoleId"] = [userRoleId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -594,6 +649,9 @@
   ///
   /// [id] - User profile ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountUserProfile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -602,7 +660,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AccountUserProfile> patch(
-      AccountUserProfile request, core.String profileId, core.String id) {
+      AccountUserProfile request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -620,6 +679,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -642,6 +704,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountUserProfile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -650,7 +715,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AccountUserProfile> update(
-      AccountUserProfile request, core.String profileId) {
+      AccountUserProfile request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -664,6 +730,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -692,6 +761,9 @@
   ///
   /// [id] - Account ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -699,7 +771,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Account> get(core.String profileId, core.String id) {
+  async.Future<Account> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -713,6 +786,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -762,6 +838,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AccountsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -776,7 +855,8 @@
       core.String pageToken,
       core.String searchString,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -808,6 +888,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -832,6 +915,9 @@
   ///
   /// [id] - Account ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -840,7 +926,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Account> patch(
-      Account request, core.String profileId, core.String id) {
+      Account request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -858,6 +945,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -880,6 +970,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -887,7 +980,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Account> update(Account request, core.String profileId) {
+  async.Future<Account> update(Account request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -901,6 +995,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -929,6 +1026,9 @@
   ///
   /// [id] - Ad ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Ad].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -936,7 +1036,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Ad> get(core.String profileId, core.String id) {
+  async.Future<Ad> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -950,6 +1051,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -973,6 +1077,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Ad].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -980,7 +1087,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Ad> insert(Ad request, core.String profileId) {
+  async.Future<Ad> insert(Ad request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -994,6 +1102,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/ads';
@@ -1087,6 +1198,9 @@
   ///
   /// [type] - Select only ads with these types.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1117,7 +1231,8 @@
       core.String sortOrder,
       core.bool sslCompliant,
       core.bool sslRequired,
-      core.List<core.String> type}) {
+      core.List<core.String> type,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1198,6 +1313,9 @@
     if (type != null) {
       _queryParams["type"] = type;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/ads';
@@ -1221,6 +1339,9 @@
   ///
   /// [id] - Ad ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Ad].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1228,7 +1349,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Ad> patch(Ad request, core.String profileId, core.String id) {
+  async.Future<Ad> patch(Ad request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1246,6 +1368,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/ads';
@@ -1267,6 +1392,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Ad].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1274,7 +1402,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Ad> update(Ad request, core.String profileId) {
+  async.Future<Ad> update(Ad request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1288,6 +1417,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'userprofiles/' + commons.Escaper.ecapeVariable('$profileId') + '/ads';
@@ -1316,12 +1448,16 @@
   ///
   /// [id] - Advertiser group ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String profileId, core.String id) {
+  async.Future delete(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1335,6 +1471,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1360,6 +1499,9 @@
   ///
   /// [id] - Advertiser group ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdvertiserGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1367,7 +1509,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AdvertiserGroup> get(core.String profileId, core.String id) {
+  async.Future<AdvertiserGroup> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1381,6 +1524,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -1404,6 +1550,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdvertiserGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1412,7 +1561,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdvertiserGroup> insert(
-      AdvertiserGroup request, core.String profileId) {
+      AdvertiserGroup request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1426,6 +1576,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -1472,6 +1625,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdvertiserGroupsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1485,7 +1641,8 @@
       core.String pageToken,
       core.String searchString,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1514,6 +1671,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -1540,6 +1700,9 @@
   ///
   /// [id] - Advertiser group ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdvertiserGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1548,7 +1711,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdvertiserGroup> patch(
-      AdvertiserGroup request, core.String profileId, core.String id) {
+      AdvertiserGroup request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1566,6 +1730,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -1588,6 +1755,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdvertiserGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1596,7 +1766,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AdvertiserGroup> update(
-      AdvertiserGroup request, core.String profileId) {
+      AdvertiserGroup request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1610,6 +1781,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -1638,6 +1812,9 @@
   ///
   /// [id] - Advertiser ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Advertiser].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1645,7 +1822,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Advertiser> get(core.String profileId, core.String id) {
+  async.Future<Advertiser> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1659,6 +1837,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -1682,6 +1863,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Advertiser].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1689,7 +1873,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Advertiser> insert(Advertiser request, core.String profileId) {
+  async.Future<Advertiser> insert(Advertiser request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1703,6 +1888,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -1768,6 +1956,9 @@
   ///
   /// [subaccountId] - Select only advertisers with these subaccount IDs.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AdvertisersListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1787,7 +1978,8 @@
       core.String sortField,
       core.String sortOrder,
       core.String status,
-      core.String subaccountId}) {
+      core.String subaccountId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1836,6 +2028,9 @@
     if (subaccountId != null) {
       _queryParams["subaccountId"] = [subaccountId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -1860,6 +2055,9 @@
   ///
   /// [id] - Advertiser ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Advertiser].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1868,7 +2066,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Advertiser> patch(
-      Advertiser request, core.String profileId, core.String id) {
+      Advertiser request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1886,6 +2085,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -1908,6 +2110,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Advertiser].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1915,7 +2120,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Advertiser> update(Advertiser request, core.String profileId) {
+  async.Future<Advertiser> update(Advertiser request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1929,6 +2135,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -1955,6 +2164,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BrowsersListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1962,7 +2174,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<BrowsersListResponse> list(core.String profileId) {
+  async.Future<BrowsersListResponse> list(core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1973,6 +2186,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -2006,6 +2222,9 @@
   ///
   /// [campaignId] - Campaign ID in this association.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CampaignCreativeAssociation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2016,7 +2235,8 @@
   async.Future<CampaignCreativeAssociation> insert(
       CampaignCreativeAssociation request,
       core.String profileId,
-      core.String campaignId) {
+      core.String campaignId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2033,6 +2253,9 @@
     if (campaignId == null) {
       throw new core.ArgumentError("Parameter campaignId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -2069,6 +2292,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CampaignCreativeAssociationsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2078,7 +2304,10 @@
   /// this method will complete with the same error.
   async.Future<CampaignCreativeAssociationsListResponse> list(
       core.String profileId, core.String campaignId,
-      {core.int maxResults, core.String pageToken, core.String sortOrder}) {
+      {core.int maxResults,
+      core.String pageToken,
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2101,6 +2330,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -2132,6 +2364,9 @@
   ///
   /// [id] - Campaign ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Campaign].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2139,7 +2374,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Campaign> get(core.String profileId, core.String id) {
+  async.Future<Campaign> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2153,6 +2389,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -2181,6 +2420,9 @@
   ///
   /// [defaultLandingPageUrl] - Default landing page URL for this new campaign.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Campaign].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2189,7 +2431,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Campaign> insert(Campaign request, core.String profileId,
-      core.String defaultLandingPageName, core.String defaultLandingPageUrl) {
+      core.String defaultLandingPageName, core.String defaultLandingPageUrl,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2213,6 +2456,9 @@
           "Parameter defaultLandingPageUrl is required.");
     }
     _queryParams["defaultLandingPageUrl"] = [defaultLandingPageUrl];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -2277,6 +2523,9 @@
   ///
   /// [subaccountId] - Select only campaigns that belong to this subaccount.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CampaignsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2297,7 +2546,8 @@
       core.String searchString,
       core.String sortField,
       core.String sortOrder,
-      core.String subaccountId}) {
+      core.String subaccountId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2349,6 +2599,9 @@
     if (subaccountId != null) {
       _queryParams["subaccountId"] = [subaccountId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -2373,6 +2626,9 @@
   ///
   /// [id] - Campaign ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Campaign].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2381,7 +2637,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Campaign> patch(
-      Campaign request, core.String profileId, core.String id) {
+      Campaign request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2399,6 +2656,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -2421,6 +2681,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Campaign].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2428,7 +2691,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Campaign> update(Campaign request, core.String profileId) {
+  async.Future<Campaign> update(Campaign request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2442,6 +2706,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -2470,6 +2737,9 @@
   ///
   /// [id] - Change log ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChangeLog].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2477,7 +2747,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ChangeLog> get(core.String profileId, core.String id) {
+  async.Future<ChangeLog> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2491,6 +2762,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -2602,6 +2876,9 @@
   ///
   /// [userProfileIds] - Select only change logs with these user profile IDs.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChangeLogsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2619,7 +2896,8 @@
       core.String objectType,
       core.String pageToken,
       core.String searchString,
-      core.List<core.String> userProfileIds}) {
+      core.List<core.String> userProfileIds,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2660,6 +2938,9 @@
     if (userProfileIds != null) {
       _queryParams["userProfileIds"] = userProfileIds;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -2694,6 +2975,9 @@
   ///
   /// [regionDartIds] - Select only cities from these regions.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CitiesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2705,7 +2989,8 @@
       {core.List<core.String> countryDartIds,
       core.List<core.String> dartIds,
       core.String namePrefix,
-      core.List<core.String> regionDartIds}) {
+      core.List<core.String> regionDartIds,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2728,6 +3013,9 @@
     if (regionDartIds != null) {
       _queryParams["regionDartIds"] = regionDartIds;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -2756,6 +3044,9 @@
   ///
   /// [id] - Connection type ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ConnectionType].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2763,7 +3054,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ConnectionType> get(core.String profileId, core.String id) {
+  async.Future<ConnectionType> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2777,6 +3069,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -2798,6 +3093,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ConnectionTypesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2805,7 +3103,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ConnectionTypesListResponse> list(core.String profileId) {
+  async.Future<ConnectionTypesListResponse> list(core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2816,6 +3115,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -2846,12 +3148,16 @@
   ///
   /// [id] - Content category ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String profileId, core.String id) {
+  async.Future delete(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2865,6 +3171,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2890,6 +3199,9 @@
   ///
   /// [id] - Content category ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContentCategory].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2897,7 +3209,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ContentCategory> get(core.String profileId, core.String id) {
+  async.Future<ContentCategory> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2911,6 +3224,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -2934,6 +3250,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContentCategory].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2942,7 +3261,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ContentCategory> insert(
-      ContentCategory request, core.String profileId) {
+      ContentCategory request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2956,6 +3276,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -3002,6 +3325,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContentCategoriesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3015,7 +3341,8 @@
       core.String pageToken,
       core.String searchString,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3044,6 +3371,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -3070,6 +3400,9 @@
   ///
   /// [id] - Content category ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContentCategory].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3078,7 +3411,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ContentCategory> patch(
-      ContentCategory request, core.String profileId, core.String id) {
+      ContentCategory request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3096,6 +3430,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -3118,6 +3455,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContentCategory].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3126,7 +3466,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ContentCategory> update(
-      ContentCategory request, core.String profileId) {
+      ContentCategory request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3140,6 +3481,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -3168,6 +3512,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ConversionsBatchInsertResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3176,7 +3523,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ConversionsBatchInsertResponse> batchinsert(
-      ConversionsBatchInsertRequest request, core.String profileId) {
+      ConversionsBatchInsertRequest request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3190,6 +3538,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -3213,6 +3564,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ConversionsBatchUpdateResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3221,7 +3575,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ConversionsBatchUpdateResponse> batchupdate(
-      ConversionsBatchUpdateRequest request, core.String profileId) {
+      ConversionsBatchUpdateRequest request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3235,6 +3590,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -3264,6 +3622,9 @@
   ///
   /// [dartId] - Country DART ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Country].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3271,7 +3632,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Country> get(core.String profileId, core.String dartId) {
+  async.Future<Country> get(core.String profileId, core.String dartId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3285,6 +3647,9 @@
     if (dartId == null) {
       throw new core.ArgumentError("Parameter dartId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -3306,6 +3671,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CountriesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3313,7 +3681,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CountriesListResponse> list(core.String profileId) {
+  async.Future<CountriesListResponse> list(core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3324,6 +3693,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -3354,6 +3726,9 @@
   ///
   /// [advertiserId] - Advertiser ID of this creative. This is a required field.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -3369,7 +3744,8 @@
   /// this method will complete with the same error.
   async.Future<CreativeAssetMetadata> insert(CreativeAssetMetadata request,
       core.String profileId, core.String advertiserId,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -3387,6 +3763,9 @@
     if (advertiserId == null) {
       throw new core.ArgumentError("Parameter advertiserId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -3437,13 +3816,17 @@
   ///
   /// [id] - Creative Field Value ID
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String profileId, core.String creativeFieldId, core.String id) {
+      core.String profileId, core.String creativeFieldId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3460,6 +3843,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3489,6 +3875,9 @@
   ///
   /// [id] - Creative Field Value ID
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeFieldValue].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3497,7 +3886,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreativeFieldValue> get(
-      core.String profileId, core.String creativeFieldId, core.String id) {
+      core.String profileId, core.String creativeFieldId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3514,6 +3904,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -3541,6 +3934,9 @@
   ///
   /// [creativeFieldId] - Creative field ID for this creative field value.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeFieldValue].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3549,7 +3945,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreativeFieldValue> insert(CreativeFieldValue request,
-      core.String profileId, core.String creativeFieldId) {
+      core.String profileId, core.String creativeFieldId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3566,6 +3963,9 @@
     if (creativeFieldId == null) {
       throw new core.ArgumentError("Parameter creativeFieldId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -3611,6 +4011,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeFieldValuesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3625,7 +4028,8 @@
       core.String pageToken,
       core.String searchString,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3657,6 +4061,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -3687,6 +4094,9 @@
   ///
   /// [id] - Creative Field Value ID
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeFieldValue].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3695,7 +4105,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreativeFieldValue> patch(CreativeFieldValue request,
-      core.String profileId, core.String creativeFieldId, core.String id) {
+      core.String profileId, core.String creativeFieldId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3716,6 +4127,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -3742,6 +4156,9 @@
   ///
   /// [creativeFieldId] - Creative field ID for this creative field value.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeFieldValue].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3750,7 +4167,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreativeFieldValue> update(CreativeFieldValue request,
-      core.String profileId, core.String creativeFieldId) {
+      core.String profileId, core.String creativeFieldId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3767,6 +4185,9 @@
     if (creativeFieldId == null) {
       throw new core.ArgumentError("Parameter creativeFieldId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -3797,12 +4218,16 @@
   ///
   /// [id] - Creative Field ID
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String profileId, core.String id) {
+  async.Future delete(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3816,6 +4241,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3841,6 +4269,9 @@
   ///
   /// [id] - Creative Field ID
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeField].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3848,7 +4279,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CreativeField> get(core.String profileId, core.String id) {
+  async.Future<CreativeField> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3862,6 +4294,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -3885,6 +4320,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeField].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3893,7 +4331,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreativeField> insert(
-      CreativeField request, core.String profileId) {
+      CreativeField request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3907,6 +4346,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -3957,6 +4399,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeFieldsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3971,7 +4416,8 @@
       core.String pageToken,
       core.String searchString,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4003,6 +4449,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4028,6 +4477,9 @@
   ///
   /// [id] - Creative Field ID
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeField].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4036,7 +4488,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreativeField> patch(
-      CreativeField request, core.String profileId, core.String id) {
+      CreativeField request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4054,6 +4507,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4076,6 +4532,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeField].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4084,7 +4543,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreativeField> update(
-      CreativeField request, core.String profileId) {
+      CreativeField request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4098,6 +4558,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4126,6 +4589,9 @@
   ///
   /// [id] - Creative group ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4133,7 +4599,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CreativeGroup> get(core.String profileId, core.String id) {
+  async.Future<CreativeGroup> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4147,6 +4614,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4170,6 +4640,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4178,7 +4651,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreativeGroup> insert(
-      CreativeGroup request, core.String profileId) {
+      CreativeGroup request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4192,6 +4666,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4245,6 +4722,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeGroupsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4260,7 +4740,8 @@
       core.String pageToken,
       core.String searchString,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4295,6 +4776,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4320,6 +4804,9 @@
   ///
   /// [id] - Creative group ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4328,7 +4815,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreativeGroup> patch(
-      CreativeGroup request, core.String profileId, core.String id) {
+      CreativeGroup request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4346,6 +4834,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4368,6 +4859,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativeGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4376,7 +4870,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreativeGroup> update(
-      CreativeGroup request, core.String profileId) {
+      CreativeGroup request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4390,6 +4885,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4418,6 +4916,9 @@
   ///
   /// [id] - Creative ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Creative].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4425,7 +4926,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Creative> get(core.String profileId, core.String id) {
+  async.Future<Creative> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4439,6 +4941,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4462,6 +4967,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Creative].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4469,7 +4977,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Creative> insert(Creative request, core.String profileId) {
+  async.Future<Creative> insert(Creative request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4483,6 +4992,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4553,6 +5065,9 @@
   ///
   /// [types] - Select only creatives with these creative types.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreativesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4576,7 +5091,8 @@
       core.String sortField,
       core.String sortOrder,
       core.String studioCreativeId,
-      core.List<core.String> types}) {
+      core.List<core.String> types,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4635,6 +5151,9 @@
     if (types != null) {
       _queryParams["types"] = types;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4659,6 +5178,9 @@
   ///
   /// [id] - Creative ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Creative].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4667,7 +5189,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Creative> patch(
-      Creative request, core.String profileId, core.String id) {
+      Creative request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4685,6 +5208,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4707,6 +5233,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Creative].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4714,7 +5243,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Creative> update(Creative request, core.String profileId) {
+  async.Future<Creative> update(Creative request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4728,6 +5258,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4761,6 +5294,9 @@
   ///
   /// [pageToken] - The value of the nextToken from the previous result page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DimensionValueList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4770,7 +5306,7 @@
   /// this method will complete with the same error.
   async.Future<DimensionValueList> query(
       DimensionValueRequest request, core.String profileId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4790,6 +5326,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4819,6 +5358,9 @@
   ///
   /// [id] - Directory site contact ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DirectorySiteContact].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4826,8 +5368,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DirectorySiteContact> get(
-      core.String profileId, core.String id) {
+  async.Future<DirectorySiteContact> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4841,6 +5383,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4892,6 +5437,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DirectorySiteContactsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4906,7 +5454,8 @@
       core.String pageToken,
       core.String searchString,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4938,6 +5487,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -4967,6 +5519,9 @@
   ///
   /// [id] - Directory site ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DirectorySite].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4974,7 +5529,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DirectorySite> get(core.String profileId, core.String id) {
+  async.Future<DirectorySite> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4988,6 +5544,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -5011,6 +5570,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DirectorySite].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5019,7 +5581,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DirectorySite> insert(
-      DirectorySite request, core.String profileId) {
+      DirectorySite request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5033,6 +5596,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -5097,6 +5663,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DirectorySitesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5117,7 +5686,8 @@
       core.String parentId,
       core.String searchString,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5173,6 +5743,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -5216,13 +5789,17 @@
   /// - "OBJECT_CREATIVE"
   /// - "OBJECT_PLACEMENT"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String profileId, core.String objectId,
-      core.String name, core.String objectType) {
+      core.String name, core.String objectType,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5244,6 +5821,9 @@
       throw new core.ArgumentError("Parameter objectType is required.");
     }
     _queryParams["objectType"] = [objectType];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -5272,6 +5852,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DynamicTargetingKey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5280,7 +5863,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DynamicTargetingKey> insert(
-      DynamicTargetingKey request, core.String profileId) {
+      DynamicTargetingKey request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5294,6 +5878,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -5328,6 +5915,9 @@
   /// - "OBJECT_CREATIVE"
   /// - "OBJECT_PLACEMENT"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DynamicTargetingKeysListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5339,7 +5929,8 @@
       {core.String advertiserId,
       core.List<core.String> names,
       core.String objectId,
-      core.String objectType}) {
+      core.String objectType,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5362,6 +5953,9 @@
     if (objectType != null) {
       _queryParams["objectType"] = [objectType];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -5391,12 +5985,16 @@
   ///
   /// [id] - Event tag ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String profileId, core.String id) {
+  async.Future delete(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5410,6 +6008,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -5435,6 +6036,9 @@
   ///
   /// [id] - Event tag ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EventTag].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5442,7 +6046,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<EventTag> get(core.String profileId, core.String id) {
+  async.Future<EventTag> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5456,6 +6061,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -5479,6 +6087,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EventTag].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5486,7 +6097,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<EventTag> insert(EventTag request, core.String profileId) {
+  async.Future<EventTag> insert(EventTag request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5500,6 +6112,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -5566,6 +6181,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EventTagsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5583,7 +6201,8 @@
       core.List<core.String> ids,
       core.String searchString,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5624,6 +6243,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -5648,6 +6270,9 @@
   ///
   /// [id] - Event tag ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EventTag].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5656,7 +6281,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EventTag> patch(
-      EventTag request, core.String profileId, core.String id) {
+      EventTag request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5674,6 +6300,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -5696,6 +6325,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EventTag].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5703,7 +6335,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<EventTag> update(EventTag request, core.String profileId) {
+  async.Future<EventTag> update(EventTag request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5717,6 +6350,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -5746,6 +6382,9 @@
   ///
   /// [fileId] - The ID of the report file.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -5762,7 +6401,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future get(core.String reportId, core.String fileId,
-      {commons.DownloadOptions downloadOptions:
+      {core.String $fields,
+      commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -5777,6 +6417,9 @@
     if (fileId == null) {
       throw new core.ArgumentError("Parameter fileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -5826,6 +6469,9 @@
   /// - "ASCENDING" : Ascending order.
   /// - "DESCENDING" : Descending order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FileList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5838,7 +6484,8 @@
       core.String pageToken,
       core.String scope,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5864,6 +6511,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -5893,12 +6543,16 @@
   ///
   /// [id] - Floodlight activity ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String profileId, core.String id) {
+  async.Future delete(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5912,6 +6566,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -5938,6 +6595,9 @@
   /// [floodlightActivityId] - Floodlight activity ID for which we want to
   /// generate a tag.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FloodlightActivitiesGenerateTagResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5947,7 +6607,8 @@
   /// this method will complete with the same error.
   async.Future<FloodlightActivitiesGenerateTagResponse> generatetag(
       core.String profileId,
-      {core.String floodlightActivityId}) {
+      {core.String floodlightActivityId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5961,6 +6622,9 @@
     if (floodlightActivityId != null) {
       _queryParams["floodlightActivityId"] = [floodlightActivityId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -5984,6 +6648,9 @@
   ///
   /// [id] - Floodlight activity ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FloodlightActivity].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5991,7 +6658,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<FloodlightActivity> get(core.String profileId, core.String id) {
+  async.Future<FloodlightActivity> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6005,6 +6673,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -6028,6 +6699,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FloodlightActivity].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6036,7 +6710,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FloodlightActivity> insert(
-      FloodlightActivity request, core.String profileId) {
+      FloodlightActivity request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6050,6 +6725,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -6125,6 +6803,9 @@
   /// [tagString] - Select only floodlight activities with the specified tag
   /// string.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FloodlightActivitiesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6145,7 +6826,8 @@
       core.String searchString,
       core.String sortField,
       core.String sortOrder,
-      core.String tagString}) {
+      core.String tagString,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6201,6 +6883,9 @@
     if (tagString != null) {
       _queryParams["tagString"] = [tagString];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -6227,6 +6912,9 @@
   ///
   /// [id] - Floodlight activity ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FloodlightActivity].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6235,7 +6923,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FloodlightActivity> patch(
-      FloodlightActivity request, core.String profileId, core.String id) {
+      FloodlightActivity request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6253,6 +6942,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -6275,6 +6967,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FloodlightActivity].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6283,7 +6978,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FloodlightActivity> update(
-      FloodlightActivity request, core.String profileId) {
+      FloodlightActivity request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6297,6 +6993,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -6326,6 +7025,9 @@
   ///
   /// [id] - Floodlight activity Group ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FloodlightActivityGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6334,7 +7036,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FloodlightActivityGroup> get(
-      core.String profileId, core.String id) {
+      core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6348,6 +7051,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -6371,6 +7077,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FloodlightActivityGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6379,7 +7088,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FloodlightActivityGroup> insert(
-      FloodlightActivityGroup request, core.String profileId) {
+      FloodlightActivityGroup request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6393,6 +7103,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -6457,6 +7170,9 @@
   /// - "COUNTER"
   /// - "SALE"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FloodlightActivityGroupsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6473,7 +7189,8 @@
       core.String searchString,
       core.String sortField,
       core.String sortOrder,
-      core.String type}) {
+      core.String type,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6511,6 +7228,9 @@
     if (type != null) {
       _queryParams["type"] = [type];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -6537,6 +7257,9 @@
   ///
   /// [id] - Floodlight activity Group ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FloodlightActivityGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6545,7 +7268,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FloodlightActivityGroup> patch(
-      FloodlightActivityGroup request, core.String profileId, core.String id) {
+      FloodlightActivityGroup request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6563,6 +7287,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -6585,6 +7312,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FloodlightActivityGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6593,7 +7323,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FloodlightActivityGroup> update(
-      FloodlightActivityGroup request, core.String profileId) {
+      FloodlightActivityGroup request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6607,6 +7338,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -6636,6 +7370,9 @@
   ///
   /// [id] - Floodlight configuration ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FloodlightConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6644,7 +7381,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FloodlightConfiguration> get(
-      core.String profileId, core.String id) {
+      core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6658,6 +7396,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -6682,6 +7423,9 @@
   /// [ids] - Set of IDs of floodlight configurations to retrieve. Required
   /// field; otherwise an empty list will be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FloodlightConfigurationsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6690,7 +7434,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FloodlightConfigurationsListResponse> list(core.String profileId,
-      {core.List<core.String> ids}) {
+      {core.List<core.String> ids, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6704,6 +7448,9 @@
     if (ids != null) {
       _queryParams["ids"] = ids;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -6730,6 +7477,9 @@
   ///
   /// [id] - Floodlight configuration ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FloodlightConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6738,7 +7488,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FloodlightConfiguration> patch(
-      FloodlightConfiguration request, core.String profileId, core.String id) {
+      FloodlightConfiguration request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6756,6 +7507,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -6778,6 +7532,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FloodlightConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6786,7 +7543,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FloodlightConfiguration> update(
-      FloodlightConfiguration request, core.String profileId) {
+      FloodlightConfiguration request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6800,6 +7558,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -6830,6 +7591,9 @@
   ///
   /// [id] - Inventory item ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InventoryItem].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6838,7 +7602,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InventoryItem> get(
-      core.String profileId, core.String projectId, core.String id) {
+      core.String profileId, core.String projectId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6855,6 +7620,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -6910,6 +7678,9 @@
   /// - "PLANNING_PLACEMENT_TYPE_CREDIT"
   /// - "PLANNING_PLACEMENT_TYPE_REGULAR"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InventoryItemsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -6927,7 +7698,8 @@
       core.List<core.String> siteId,
       core.String sortField,
       core.String sortOrder,
-      core.String type}) {
+      core.String type,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6968,6 +7740,9 @@
     if (type != null) {
       _queryParams["type"] = [type];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7001,13 +7776,17 @@
   ///
   /// [id] - Landing page ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String profileId, core.String campaignId, core.String id) {
+      core.String profileId, core.String campaignId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7024,6 +7803,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -7053,6 +7835,9 @@
   ///
   /// [id] - Landing page ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LandingPage].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7061,7 +7846,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LandingPage> get(
-      core.String profileId, core.String campaignId, core.String id) {
+      core.String profileId, core.String campaignId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7078,6 +7864,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7105,6 +7894,9 @@
   ///
   /// [campaignId] - Landing page campaign ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LandingPage].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7113,7 +7905,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LandingPage> insert(
-      LandingPage request, core.String profileId, core.String campaignId) {
+      LandingPage request, core.String profileId, core.String campaignId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7130,6 +7923,9 @@
     if (campaignId == null) {
       throw new core.ArgumentError("Parameter campaignId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7154,6 +7950,9 @@
   ///
   /// [campaignId] - Landing page campaign ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LandingPagesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7162,7 +7961,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LandingPagesListResponse> list(
-      core.String profileId, core.String campaignId) {
+      core.String profileId, core.String campaignId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7176,6 +7976,9 @@
     if (campaignId == null) {
       throw new core.ArgumentError("Parameter campaignId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7206,6 +8009,9 @@
   ///
   /// [id] - Landing page ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LandingPage].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7214,7 +8020,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LandingPage> patch(LandingPage request, core.String profileId,
-      core.String campaignId, core.String id) {
+      core.String campaignId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7235,6 +8042,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7261,6 +8071,9 @@
   ///
   /// [campaignId] - Landing page campaign ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LandingPage].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7269,7 +8082,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LandingPage> update(
-      LandingPage request, core.String profileId, core.String campaignId) {
+      LandingPage request, core.String profileId, core.String campaignId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7286,6 +8100,9 @@
     if (campaignId == null) {
       throw new core.ArgumentError("Parameter campaignId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7314,6 +8131,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LanguagesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7321,7 +8141,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LanguagesListResponse> list(core.String profileId) {
+  async.Future<LanguagesListResponse> list(core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7332,6 +8153,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7358,6 +8182,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MetrosListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7365,7 +8192,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<MetrosListResponse> list(core.String profileId) {
+  async.Future<MetrosListResponse> list(core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7376,6 +8204,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7404,6 +8235,9 @@
   ///
   /// [id] - Mobile carrier ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MobileCarrier].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7411,7 +8245,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<MobileCarrier> get(core.String profileId, core.String id) {
+  async.Future<MobileCarrier> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7425,6 +8260,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7446,6 +8284,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MobileCarriersListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7453,7 +8294,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<MobileCarriersListResponse> list(core.String profileId) {
+  async.Future<MobileCarriersListResponse> list(core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7464,6 +8306,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7494,6 +8339,9 @@
   ///
   /// [id] - Operating system version ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OperatingSystemVersion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7502,7 +8350,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OperatingSystemVersion> get(
-      core.String profileId, core.String id) {
+      core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7516,6 +8365,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7537,6 +8389,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OperatingSystemVersionsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7544,8 +8399,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<OperatingSystemVersionsListResponse> list(
-      core.String profileId) {
+  async.Future<OperatingSystemVersionsListResponse> list(core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7556,6 +8411,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7586,6 +8444,9 @@
   ///
   /// [dartId] - Operating system DART ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OperatingSystem].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7593,7 +8454,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<OperatingSystem> get(core.String profileId, core.String dartId) {
+  async.Future<OperatingSystem> get(core.String profileId, core.String dartId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7607,6 +8469,9 @@
     if (dartId == null) {
       throw new core.ArgumentError("Parameter dartId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7628,6 +8493,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OperatingSystemsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7635,7 +8503,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<OperatingSystemsListResponse> list(core.String profileId) {
+  async.Future<OperatingSystemsListResponse> list(core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7646,6 +8515,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7677,6 +8549,9 @@
   ///
   /// [id] - Order document ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrderDocument].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7685,7 +8560,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OrderDocument> get(
-      core.String profileId, core.String projectId, core.String id) {
+      core.String profileId, core.String projectId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7702,6 +8578,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7762,6 +8641,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrderDocumentsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7779,7 +8661,8 @@
       core.String searchString,
       core.List<core.String> siteId,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7820,6 +8703,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7853,6 +8739,9 @@
   ///
   /// [id] - Order ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Order].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7861,7 +8750,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Order> get(
-      core.String profileId, core.String projectId, core.String id) {
+      core.String profileId, core.String projectId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7878,6 +8768,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -7930,6 +8823,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OrdersListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -7945,7 +8841,8 @@
       core.String searchString,
       core.List<core.String> siteId,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -7980,6 +8877,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -8010,6 +8910,9 @@
   ///
   /// [id] - Placement group ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlacementGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8017,7 +8920,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PlacementGroup> get(core.String profileId, core.String id) {
+  async.Future<PlacementGroup> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8031,6 +8935,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -8054,6 +8961,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlacementGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8062,7 +8972,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PlacementGroup> insert(
-      PlacementGroup request, core.String profileId) {
+      PlacementGroup request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8076,6 +8987,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -8173,6 +9087,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlacementGroupsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8199,7 +9116,8 @@
       core.String searchString,
       core.List<core.String> siteIds,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8267,6 +9185,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -8292,6 +9213,9 @@
   ///
   /// [id] - Placement group ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlacementGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8300,7 +9224,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PlacementGroup> patch(
-      PlacementGroup request, core.String profileId, core.String id) {
+      PlacementGroup request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8318,6 +9243,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -8340,6 +9268,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlacementGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8348,7 +9279,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PlacementGroup> update(
-      PlacementGroup request, core.String profileId) {
+      PlacementGroup request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8362,6 +9294,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -8391,12 +9326,16 @@
   ///
   /// [id] - Placement strategy ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String profileId, core.String id) {
+  async.Future delete(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8410,6 +9349,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -8435,6 +9377,9 @@
   ///
   /// [id] - Placement strategy ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlacementStrategy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8442,7 +9387,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PlacementStrategy> get(core.String profileId, core.String id) {
+  async.Future<PlacementStrategy> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8456,6 +9402,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -8479,6 +9428,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlacementStrategy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8487,7 +9439,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PlacementStrategy> insert(
-      PlacementStrategy request, core.String profileId) {
+      PlacementStrategy request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8501,6 +9454,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -8548,6 +9504,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlacementStrategiesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8561,7 +9520,8 @@
       core.String pageToken,
       core.String searchString,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8590,6 +9550,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -8616,6 +9579,9 @@
   ///
   /// [id] - Placement strategy ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlacementStrategy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8624,7 +9590,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PlacementStrategy> patch(
-      PlacementStrategy request, core.String profileId, core.String id) {
+      PlacementStrategy request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8642,6 +9609,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -8664,6 +9634,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlacementStrategy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8672,7 +9645,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PlacementStrategy> update(
-      PlacementStrategy request, core.String profileId) {
+      PlacementStrategy request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8686,6 +9660,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -8721,6 +9698,9 @@
   ///
   /// Note: PLACEMENT_TAG_STANDARD can only be generated for 1x1 placements.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlacementsGenerateTagsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8732,7 +9712,8 @@
       core.String profileId,
       {core.String campaignId,
       core.List<core.String> placementIds,
-      core.List<core.String> tagFormats}) {
+      core.List<core.String> tagFormats,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8752,6 +9733,9 @@
     if (tagFormats != null) {
       _queryParams["tagFormats"] = tagFormats;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -8775,6 +9759,9 @@
   ///
   /// [id] - Placement ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Placement].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8782,7 +9769,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Placement> get(core.String profileId, core.String id) {
+  async.Future<Placement> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8796,6 +9784,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -8819,6 +9810,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Placement].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8826,7 +9820,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Placement> insert(Placement request, core.String profileId) {
+  async.Future<Placement> insert(Placement request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -8840,6 +9835,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -8938,6 +9936,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlacementsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -8967,7 +9968,8 @@
       core.List<core.String> siteIds,
       core.List<core.String> sizeIds,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9044,6 +10046,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9068,6 +10073,9 @@
   ///
   /// [id] - Placement ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Placement].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9076,7 +10084,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Placement> patch(
-      Placement request, core.String profileId, core.String id) {
+      Placement request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9094,6 +10103,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9116,6 +10128,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Placement].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9123,7 +10138,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Placement> update(Placement request, core.String profileId) {
+  async.Future<Placement> update(Placement request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9137,6 +10153,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9165,6 +10184,9 @@
   ///
   /// [id] - Platform type ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlatformType].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9172,7 +10194,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PlatformType> get(core.String profileId, core.String id) {
+  async.Future<PlatformType> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9186,6 +10209,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9207,6 +10233,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlatformTypesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9214,7 +10243,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PlatformTypesListResponse> list(core.String profileId) {
+  async.Future<PlatformTypesListResponse> list(core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9225,6 +10255,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9254,6 +10287,9 @@
   ///
   /// [code] - Postal code ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PostalCode].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9261,7 +10297,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PostalCode> get(core.String profileId, core.String code) {
+  async.Future<PostalCode> get(core.String profileId, core.String code,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9275,6 +10312,9 @@
     if (code == null) {
       throw new core.ArgumentError("Parameter code is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9296,6 +10336,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PostalCodesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9303,7 +10346,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PostalCodesListResponse> list(core.String profileId) {
+  async.Future<PostalCodesListResponse> list(core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9314,6 +10358,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9342,6 +10389,9 @@
   ///
   /// [id] - Project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Project].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9349,7 +10399,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Project> get(core.String profileId, core.String id) {
+  async.Future<Project> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9363,6 +10414,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9412,6 +10466,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProjectsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9426,7 +10483,8 @@
       core.String pageToken,
       core.String searchString,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9458,6 +10516,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9484,6 +10545,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RegionsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9491,7 +10555,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<RegionsListResponse> list(core.String profileId) {
+  async.Future<RegionsListResponse> list(core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9502,6 +10567,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9531,6 +10599,9 @@
   ///
   /// [remarketingListId] - Remarketing list ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RemarketingListShare].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9539,7 +10610,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RemarketingListShare> get(
-      core.String profileId, core.String remarketingListId) {
+      core.String profileId, core.String remarketingListId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9553,6 +10625,9 @@
     if (remarketingListId == null) {
       throw new core.ArgumentError("Parameter remarketingListId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9579,6 +10654,9 @@
   ///
   /// [remarketingListId] - Remarketing list ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RemarketingListShare].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9587,7 +10665,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RemarketingListShare> patch(RemarketingListShare request,
-      core.String profileId, core.String remarketingListId) {
+      core.String profileId, core.String remarketingListId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9605,6 +10684,9 @@
       throw new core.ArgumentError("Parameter remarketingListId is required.");
     }
     _queryParams["remarketingListId"] = [remarketingListId];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9627,6 +10709,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RemarketingListShare].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9635,7 +10720,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RemarketingListShare> update(
-      RemarketingListShare request, core.String profileId) {
+      RemarketingListShare request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9649,6 +10735,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9678,6 +10767,9 @@
   ///
   /// [id] - Remarketing list ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RemarketingList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9685,7 +10777,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<RemarketingList> get(core.String profileId, core.String id) {
+  async.Future<RemarketingList> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9699,6 +10792,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9722,6 +10818,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RemarketingList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9730,7 +10829,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RemarketingList> insert(
-      RemarketingList request, core.String profileId) {
+      RemarketingList request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9744,6 +10844,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9795,6 +10898,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RemarketingListsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9810,7 +10916,8 @@
       core.String name,
       core.String pageToken,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9846,6 +10953,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9872,6 +10982,9 @@
   ///
   /// [id] - Remarketing list ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RemarketingList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9880,7 +10993,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RemarketingList> patch(
-      RemarketingList request, core.String profileId, core.String id) {
+      RemarketingList request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9898,6 +11012,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9920,6 +11037,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RemarketingList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -9928,7 +11048,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RemarketingList> update(
-      RemarketingList request, core.String profileId) {
+      RemarketingList request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9942,6 +11063,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -9974,12 +11098,16 @@
   ///
   /// [reportId] - The ID of the report.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String profileId, core.String reportId) {
+  async.Future delete(core.String profileId, core.String reportId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -9993,6 +11121,9 @@
     if (reportId == null) {
       throw new core.ArgumentError("Parameter reportId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -10018,6 +11149,9 @@
   ///
   /// [reportId] - The ID of the report.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Report].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10025,7 +11159,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Report> get(core.String profileId, core.String reportId) {
+  async.Future<Report> get(core.String profileId, core.String reportId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10039,6 +11174,9 @@
     if (reportId == null) {
       throw new core.ArgumentError("Parameter reportId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -10062,6 +11200,9 @@
   ///
   /// [profileId] - The DFA user profile ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Report].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10069,7 +11210,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Report> insert(Report request, core.String profileId) {
+  async.Future<Report> insert(Report request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10083,6 +11225,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -10124,6 +11269,9 @@
   /// - "ASCENDING" : Ascending order.
   /// - "DESCENDING" : Descending order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ReportList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10136,7 +11284,8 @@
       core.String pageToken,
       core.String scope,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10162,6 +11311,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -10186,6 +11338,9 @@
   ///
   /// [reportId] - The ID of the report.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Report].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10194,7 +11349,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Report> patch(
-      Report request, core.String profileId, core.String reportId) {
+      Report request, core.String profileId, core.String reportId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10211,6 +11367,9 @@
     if (reportId == null) {
       throw new core.ArgumentError("Parameter reportId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -10236,6 +11395,9 @@
   ///
   /// [synchronous] - If set and true, tries to run the report synchronously.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [File].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10244,7 +11406,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<File> run(core.String profileId, core.String reportId,
-      {core.bool synchronous}) {
+      {core.bool synchronous, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10261,6 +11423,9 @@
     if (synchronous != null) {
       _queryParams["synchronous"] = ["${synchronous}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -10287,6 +11452,9 @@
   ///
   /// [reportId] - The ID of the report.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Report].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10295,7 +11463,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Report> update(
-      Report request, core.String profileId, core.String reportId) {
+      Report request, core.String profileId, core.String reportId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10312,6 +11481,9 @@
     if (reportId == null) {
       throw new core.ArgumentError("Parameter reportId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -10344,6 +11516,9 @@
   ///
   /// [profileId] - The DFA user profile ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CompatibleFields].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10351,7 +11526,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CompatibleFields> query(Report request, core.String profileId) {
+  async.Future<CompatibleFields> query(Report request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10365,6 +11541,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -10395,6 +11574,9 @@
   ///
   /// [fileId] - The ID of the report file.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -10412,7 +11594,8 @@
   /// this method will complete with the same error.
   async.Future get(
       core.String profileId, core.String reportId, core.String fileId,
-      {commons.DownloadOptions downloadOptions:
+      {core.String $fields,
+      commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -10430,6 +11613,9 @@
     if (fileId == null) {
       throw new core.ArgumentError("Parameter fileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -10477,6 +11663,9 @@
   /// - "ASCENDING" : Ascending order.
   /// - "DESCENDING" : Descending order.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FileList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10488,7 +11677,8 @@
       {core.int maxResults,
       core.String pageToken,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10514,6 +11704,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -10544,6 +11737,9 @@
   ///
   /// [id] - Site ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Site].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10551,7 +11747,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Site> get(core.String profileId, core.String id) {
+  async.Future<Site> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10565,6 +11762,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -10588,6 +11788,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Site].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10595,7 +11798,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Site> insert(Site request, core.String profileId) {
+  async.Future<Site> insert(Site request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10609,6 +11813,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -10675,6 +11882,9 @@
   /// [unmappedSite] - Select only sites that have not been mapped to a
   /// directory site.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SitesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10697,7 +11907,8 @@
       core.String sortField,
       core.String sortOrder,
       core.String subaccountId,
-      core.bool unmappedSite}) {
+      core.bool unmappedSite,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10759,6 +11970,9 @@
     if (unmappedSite != null) {
       _queryParams["unmappedSite"] = ["${unmappedSite}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -10783,6 +11997,9 @@
   ///
   /// [id] - Site ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Site].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10790,8 +12007,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Site> patch(
-      Site request, core.String profileId, core.String id) {
+  async.Future<Site> patch(Site request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10809,6 +12026,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -10831,6 +12051,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Site].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10838,7 +12061,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Site> update(Site request, core.String profileId) {
+  async.Future<Site> update(Site request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10852,6 +12076,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -10880,6 +12107,9 @@
   ///
   /// [id] - Size ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Size].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10887,7 +12117,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Size> get(core.String profileId, core.String id) {
+  async.Future<Size> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10901,6 +12132,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -10924,6 +12158,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Size].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10931,7 +12168,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Size> insert(Size request, core.String profileId) {
+  async.Future<Size> insert(Size request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -10945,6 +12183,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -10975,6 +12216,9 @@
   /// [width] - Select only sizes with this width.
   /// Value must be between "0" and "32767".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SizesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -10986,7 +12230,8 @@
       {core.int height,
       core.bool iabStandard,
       core.List<core.String> ids,
-      core.int width}) {
+      core.int width,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11009,6 +12254,9 @@
     if (width != null) {
       _queryParams["width"] = ["${width}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11037,6 +12285,9 @@
   ///
   /// [id] - Subaccount ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subaccount].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11044,7 +12295,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Subaccount> get(core.String profileId, core.String id) {
+  async.Future<Subaccount> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11058,6 +12310,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11081,6 +12336,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subaccount].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11088,7 +12346,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Subaccount> insert(Subaccount request, core.String profileId) {
+  async.Future<Subaccount> insert(Subaccount request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11102,6 +12361,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11148,6 +12410,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SubaccountsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11161,7 +12426,8 @@
       core.String pageToken,
       core.String searchString,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11190,6 +12456,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11214,6 +12483,9 @@
   ///
   /// [id] - Subaccount ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subaccount].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11222,7 +12494,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Subaccount> patch(
-      Subaccount request, core.String profileId, core.String id) {
+      Subaccount request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11240,6 +12513,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11262,6 +12538,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subaccount].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11269,7 +12548,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Subaccount> update(Subaccount request, core.String profileId) {
+  async.Future<Subaccount> update(Subaccount request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11283,6 +12563,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11312,6 +12595,9 @@
   ///
   /// [id] - Remarketing list ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetableRemarketingList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11320,7 +12606,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TargetableRemarketingList> get(
-      core.String profileId, core.String id) {
+      core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11334,6 +12621,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11386,6 +12676,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetableRemarketingListsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11400,7 +12693,8 @@
       core.String name,
       core.String pageToken,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11433,6 +12727,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11463,6 +12760,9 @@
   ///
   /// [id] - Targeting template ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetingTemplate].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11470,7 +12770,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TargetingTemplate> get(core.String profileId, core.String id) {
+  async.Future<TargetingTemplate> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11484,6 +12785,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11507,6 +12811,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetingTemplate].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11515,7 +12822,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TargetingTemplate> insert(
-      TargetingTemplate request, core.String profileId) {
+      TargetingTemplate request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11529,6 +12837,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11577,6 +12888,9 @@
   /// - "ASCENDING"
   /// - "DESCENDING"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetingTemplatesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11591,7 +12905,8 @@
       core.String pageToken,
       core.String searchString,
       core.String sortField,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11623,6 +12938,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11649,6 +12967,9 @@
   ///
   /// [id] - Targeting template ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetingTemplate].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11657,7 +12978,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TargetingTemplate> patch(
-      TargetingTemplate request, core.String profileId, core.String id) {
+      TargetingTemplate request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11675,6 +12997,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11697,6 +13022,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TargetingTemplate].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11705,7 +13033,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TargetingTemplate> update(
-      TargetingTemplate request, core.String profileId) {
+      TargetingTemplate request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11719,6 +13048,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11745,6 +13077,9 @@
   ///
   /// [profileId] - The user profile ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserProfile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11752,7 +13087,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UserProfile> get(core.String profileId) {
+  async.Future<UserProfile> get(core.String profileId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11763,6 +13098,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' + commons.Escaper.ecapeVariable('$profileId');
 
@@ -11779,6 +13117,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserProfileList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11786,7 +13127,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UserProfileList> list() {
+  async.Future<UserProfileList> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11794,6 +13135,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'userprofiles';
 
     var _response = _requester.request(_url, "GET",
@@ -11820,6 +13165,9 @@
   ///
   /// [id] - User role permission group ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserRolePermissionGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11828,7 +13176,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UserRolePermissionGroup> get(
-      core.String profileId, core.String id) {
+      core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11842,6 +13191,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11863,6 +13215,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserRolePermissionGroupsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11870,8 +13225,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UserRolePermissionGroupsListResponse> list(
-      core.String profileId) {
+  async.Future<UserRolePermissionGroupsListResponse> list(core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11882,6 +13237,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11912,6 +13270,9 @@
   ///
   /// [id] - User role permission ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserRolePermission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11919,7 +13280,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UserRolePermission> get(core.String profileId, core.String id) {
+  async.Future<UserRolePermission> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11933,6 +13295,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -11956,6 +13321,9 @@
   ///
   /// [ids] - Select only user role permissions with these IDs.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserRolePermissionsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -11964,7 +13332,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UserRolePermissionsListResponse> list(core.String profileId,
-      {core.List<core.String> ids}) {
+      {core.List<core.String> ids, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -11978,6 +13346,9 @@
     if (ids != null) {
       _queryParams["ids"] = ids;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -12007,12 +13378,16 @@
   ///
   /// [id] - User role ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String profileId, core.String id) {
+  async.Future delete(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12026,6 +13401,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -12051,6 +13429,9 @@
   ///
   /// [id] - User role ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserRole].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12058,7 +13439,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UserRole> get(core.String profileId, core.String id) {
+  async.Future<UserRole> get(core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12072,6 +13454,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -12095,6 +13480,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserRole].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12102,7 +13490,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UserRole> insert(UserRole request, core.String profileId) {
+  async.Future<UserRole> insert(UserRole request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12116,6 +13505,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -12167,6 +13559,9 @@
   ///
   /// [subaccountId] - Select only user roles that belong to this subaccount.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserRolesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12182,7 +13577,8 @@
       core.String searchString,
       core.String sortField,
       core.String sortOrder,
-      core.String subaccountId}) {
+      core.String subaccountId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12217,6 +13613,9 @@
     if (subaccountId != null) {
       _queryParams["subaccountId"] = [subaccountId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -12241,6 +13640,9 @@
   ///
   /// [id] - User role ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserRole].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12249,7 +13651,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UserRole> patch(
-      UserRole request, core.String profileId, core.String id) {
+      UserRole request, core.String profileId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12267,6 +13670,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -12289,6 +13695,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserRole].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12296,7 +13705,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UserRole> update(UserRole request, core.String profileId) {
+  async.Future<UserRole> update(UserRole request, core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12310,6 +13720,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -12338,6 +13751,9 @@
   ///
   /// [id] - Video format ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VideoFormat].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12345,7 +13761,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<VideoFormat> get(core.String profileId, core.int id) {
+  async.Future<VideoFormat> get(core.String profileId, core.int id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12359,6 +13776,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
@@ -12380,6 +13800,9 @@
   ///
   /// [profileId] - User profile ID associated with this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VideoFormatsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -12387,7 +13810,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<VideoFormatsListResponse> list(core.String profileId) {
+  async.Future<VideoFormatsListResponse> list(core.String profileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -12398,6 +13822,9 @@
     if (profileId == null) {
       throw new core.ArgumentError("Parameter profileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'userprofiles/' +
         commons.Escaper.ecapeVariable('$profileId') +
diff --git a/generated/googleapis/lib/discovery/v1.dart b/generated/googleapis/lib/discovery/v1.dart
index e287411..be3f0c8 100644
--- a/generated/googleapis/lib/discovery/v1.dart
+++ b/generated/googleapis/lib/discovery/v1.dart
@@ -41,6 +41,9 @@
   ///
   /// [version] - The version of the API.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RestDescription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -48,7 +51,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<RestDescription> getRest(core.String api, core.String version) {
+  async.Future<RestDescription> getRest(core.String api, core.String version,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -62,6 +66,9 @@
     if (version == null) {
       throw new core.ArgumentError("Parameter version is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'apis/' +
         commons.Escaper.ecapeVariable('$api') +
@@ -86,6 +93,9 @@
   ///
   /// [preferred] - Return only the preferred version of an API.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DirectoryList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -93,7 +103,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DirectoryList> list({core.String name, core.bool preferred}) {
+  async.Future<DirectoryList> list(
+      {core.String name, core.bool preferred, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -107,6 +118,9 @@
     if (preferred != null) {
       _queryParams["preferred"] = ["${preferred}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'apis';
 
diff --git a/generated/googleapis/lib/dns/v1.dart b/generated/googleapis/lib/dns/v1.dart
index 370a9a9..6bc0bc8 100644
--- a/generated/googleapis/lib/dns/v1.dart
+++ b/generated/googleapis/lib/dns/v1.dart
@@ -64,6 +64,9 @@
   /// [managedZone] - Identifies the managed zone addressed by this request. Can
   /// be the managed zone name or id.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Change].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -72,7 +75,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Change> create(
-      Change request, core.String project, core.String managedZone) {
+      Change request, core.String project, core.String managedZone,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -89,6 +93,9 @@
     if (managedZone == null) {
       throw new core.ArgumentError("Parameter managedZone is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
@@ -116,6 +123,9 @@
   /// [changeId] - The identifier of the requested change, from a previous
   /// ResourceRecordSetsChangeResponse.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Change].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -124,7 +134,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Change> get(
-      core.String project, core.String managedZone, core.String changeId) {
+      core.String project, core.String managedZone, core.String changeId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -141,6 +152,9 @@
     if (changeId == null) {
       throw new core.ArgumentError("Parameter changeId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
@@ -178,6 +192,9 @@
   ///
   /// [sortOrder] - Sorting order direction: 'ascending' or 'descending'.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChangesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -190,7 +207,8 @@
       {core.int maxResults,
       core.String pageToken,
       core.String sortBy,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -216,6 +234,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
@@ -245,6 +266,9 @@
   ///
   /// [project] - Identifies the project addressed by this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedZone].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -252,7 +276,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ManagedZone> create(ManagedZone request, core.String project) {
+  async.Future<ManagedZone> create(ManagedZone request, core.String project,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -266,6 +291,9 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/managedZones';
 
@@ -287,12 +315,16 @@
   /// [managedZone] - Identifies the managed zone addressed by this request. Can
   /// be the managed zone name or id.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String project, core.String managedZone) {
+  async.Future delete(core.String project, core.String managedZone,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -306,6 +338,9 @@
     if (managedZone == null) {
       throw new core.ArgumentError("Parameter managedZone is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -331,6 +366,9 @@
   /// [managedZone] - Identifies the managed zone addressed by this request. Can
   /// be the managed zone name or id.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedZone].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -338,7 +376,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ManagedZone> get(core.String project, core.String managedZone) {
+  async.Future<ManagedZone> get(core.String project, core.String managedZone,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -352,6 +391,9 @@
     if (managedZone == null) {
       throw new core.ArgumentError("Parameter managedZone is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
@@ -380,6 +422,9 @@
   /// [pageToken] - Optional. A tag returned by a previous list request that was
   /// truncated. Use this parameter to continue a previous list request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedZonesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -388,7 +433,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ManagedZonesListResponse> list(core.String project,
-      {core.String dnsName, core.int maxResults, core.String pageToken}) {
+      {core.String dnsName,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -408,6 +456,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/managedZones';
 
@@ -433,6 +484,9 @@
   ///
   /// [project] - Identifies the project addressed by this request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Project].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -440,7 +494,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Project> get(core.String project) {
+  async.Future<Project> get(core.String project, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -451,6 +505,9 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project');
 
@@ -491,6 +548,9 @@
   /// [type] - Restricts the list to return only records of this type. If
   /// present, the "name" parameter must also be present.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ResourceRecordSetsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -503,7 +563,8 @@
       {core.int maxResults,
       core.String name,
       core.String pageToken,
-      core.String type}) {
+      core.String type,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -529,6 +590,9 @@
     if (type != null) {
       _queryParams["type"] = [type];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
diff --git a/generated/googleapis/lib/doubleclickbidmanager/v1.dart b/generated/googleapis/lib/doubleclickbidmanager/v1.dart
index a60a273..d7edc3f 100644
--- a/generated/googleapis/lib/doubleclickbidmanager/v1.dart
+++ b/generated/googleapis/lib/doubleclickbidmanager/v1.dart
@@ -45,6 +45,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DownloadLineItemsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -53,7 +56,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DownloadLineItemsResponse> downloadlineitems(
-      DownloadLineItemsRequest request) {
+      DownloadLineItemsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -64,6 +68,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'lineitems/downloadlineitems';
 
@@ -83,6 +90,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UploadLineItemsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -91,7 +101,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UploadLineItemsResponse> uploadlineitems(
-      UploadLineItemsRequest request) {
+      UploadLineItemsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -102,6 +113,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'lineitems/uploadlineitems';
 
@@ -126,6 +140,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Query].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -133,7 +150,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Query> createquery(Query request) {
+  async.Future<Query> createquery(Query request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -144,6 +161,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'query';
 
@@ -162,12 +182,15 @@
   ///
   /// [queryId] - Query ID to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future deletequery(core.String queryId) {
+  async.Future deletequery(core.String queryId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -178,6 +201,9 @@
     if (queryId == null) {
       throw new core.ArgumentError("Parameter queryId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -198,6 +224,9 @@
   ///
   /// [queryId] - Query ID to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Query].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -205,7 +234,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Query> getquery(core.String queryId) {
+  async.Future<Query> getquery(core.String queryId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -216,6 +245,9 @@
     if (queryId == null) {
       throw new core.ArgumentError("Parameter queryId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'query/' + commons.Escaper.ecapeVariable('$queryId');
 
@@ -232,6 +264,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListQueriesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -239,7 +274,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListQueriesResponse> listqueries() {
+  async.Future<ListQueriesResponse> listqueries({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -247,6 +282,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'queries';
 
     var _response = _requester.request(_url, "GET",
@@ -266,12 +305,16 @@
   ///
   /// [queryId] - Query ID to run.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future runquery(RunQueryRequest request, core.String queryId) {
+  async.Future runquery(RunQueryRequest request, core.String queryId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -285,6 +328,9 @@
     if (queryId == null) {
       throw new core.ArgumentError("Parameter queryId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -311,6 +357,9 @@
   ///
   /// [queryId] - Query ID with which the reports are associated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListReportsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -318,7 +367,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListReportsResponse> listreports(core.String queryId) {
+  async.Future<ListReportsResponse> listreports(core.String queryId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -329,6 +379,9 @@
     if (queryId == null) {
       throw new core.ArgumentError("Parameter queryId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'queries/' + commons.Escaper.ecapeVariable('$queryId') + '/reports';
 
@@ -353,6 +406,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DownloadResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -360,7 +416,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DownloadResponse> download(DownloadRequest request) {
+  async.Future<DownloadResponse> download(DownloadRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -371,6 +428,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'sdf/download';
 
diff --git a/generated/googleapis/lib/doubleclicksearch/v2.dart b/generated/googleapis/lib/doubleclicksearch/v2.dart
index 2f02a91..5f4c828 100644
--- a/generated/googleapis/lib/doubleclicksearch/v2.dart
+++ b/generated/googleapis/lib/doubleclicksearch/v2.dart
@@ -81,6 +81,9 @@
   ///
   /// [criterionId] - Numeric ID of the criterion.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ConversionList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -99,7 +102,8 @@
       {core.String adGroupId,
       core.String adId,
       core.String campaignId,
-      core.String criterionId}) {
+      core.String criterionId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -144,6 +148,9 @@
     if (criterionId != null) {
       _queryParams["criterionId"] = [criterionId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'agency/' +
         commons.Escaper.ecapeVariable('$agencyId') +
@@ -168,6 +175,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ConversionList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -175,7 +185,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ConversionList> insert(ConversionList request) {
+  async.Future<ConversionList> insert(ConversionList request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -186,6 +197,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'conversion';
 
@@ -225,6 +239,9 @@
   /// [startRow] - The 0-based starting index for retrieving conversions
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ConversionList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -240,7 +257,8 @@
       core.String engineAccountId,
       core.int rowCount,
       core.int startDate,
-      core.int startRow) {
+      core.int startRow,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -279,6 +297,9 @@
       throw new core.ArgumentError("Parameter startRow is required.");
     }
     _queryParams["startRow"] = ["${startRow}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'conversion';
 
@@ -297,6 +318,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ConversionList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -304,7 +328,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ConversionList> update(ConversionList request) {
+  async.Future<ConversionList> update(ConversionList request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -315,6 +340,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'conversion';
 
@@ -334,6 +362,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UpdateAvailabilityResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -342,7 +373,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UpdateAvailabilityResponse> updateAvailability(
-      UpdateAvailabilityRequest request) {
+      UpdateAvailabilityRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -353,6 +385,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'conversion/updateAvailability';
 
@@ -378,6 +413,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Report].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -385,7 +423,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Report> generate(ReportRequest request_1) {
+  async.Future<Report> generate(ReportRequest request_1,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -396,6 +435,9 @@
     if (request_1 != null) {
       _body = convert.JSON.encode((request_1).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'reports/generate';
 
@@ -414,6 +456,9 @@
   ///
   /// [reportId] - ID of the report request being polled.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Report].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -421,7 +466,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Report> get(core.String reportId) {
+  async.Future<Report> get(core.String reportId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -432,6 +477,9 @@
     if (reportId == null) {
       throw new core.ArgumentError("Parameter reportId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'reports/' + commons.Escaper.ecapeVariable('$reportId');
 
@@ -452,6 +500,9 @@
   ///
   /// [reportFragment] - The index of the report fragment to download.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -462,7 +513,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future getFile(core.String reportId, core.int reportFragment,
-      {commons.DownloadOptions downloadOptions:
+      {core.String $fields,
+      commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -477,6 +529,9 @@
     if (reportFragment == null) {
       throw new core.ArgumentError("Parameter reportFragment is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -505,6 +560,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Report].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -512,7 +570,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Report> request(ReportRequest request_1) {
+  async.Future<Report> request(ReportRequest request_1, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -523,6 +581,9 @@
     if (request_1 != null) {
       _body = convert.JSON.encode((request_1).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'reports';
 
@@ -549,6 +610,9 @@
   ///
   /// [advertiserId] - DS ID of the advertiser.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SavedColumnList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -557,7 +621,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SavedColumnList> list(
-      core.String agencyId, core.String advertiserId) {
+      core.String agencyId, core.String advertiserId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -571,6 +636,9 @@
     if (advertiserId == null) {
       throw new core.ArgumentError("Parameter advertiserId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'agency/' +
         commons.Escaper.ecapeVariable('$agencyId') +
diff --git a/generated/googleapis/lib/drive/v2.dart b/generated/googleapis/lib/drive/v2.dart
index 793a4a7..8b06f51 100644
--- a/generated/googleapis/lib/drive/v2.dart
+++ b/generated/googleapis/lib/drive/v2.dart
@@ -104,6 +104,9 @@
   /// [startChangeId] - Change ID to start counting from when calculating number
   /// of remaining change IDs
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [About].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -114,7 +117,8 @@
   async.Future<About> get(
       {core.bool includeSubscribed,
       core.String maxChangeIdCount,
-      core.String startChangeId}) {
+      core.String startChangeId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -131,6 +135,9 @@
     if (startChangeId != null) {
       _queryParams["startChangeId"] = [startChangeId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'about';
 
@@ -155,6 +162,9 @@
   ///
   /// [appId] - The ID of the app.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [App].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -162,7 +172,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<App> get(core.String appId) {
+  async.Future<App> get(core.String appId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -173,6 +183,9 @@
     if (appId == null) {
       throw new core.ArgumentError("Parameter appId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'apps/' + commons.Escaper.ecapeVariable('$appId');
 
@@ -205,6 +218,9 @@
   /// some extensions from Unicode's LDML format
   /// (http://www.unicode.org/reports/tr35/).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AppList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -215,7 +231,8 @@
   async.Future<AppList> list(
       {core.String appFilterExtensions,
       core.String appFilterMimeTypes,
-      core.String languageCode}) {
+      core.String languageCode,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -232,6 +249,9 @@
     if (languageCode != null) {
       _queryParams["languageCode"] = [languageCode];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'apps';
 
@@ -261,6 +281,9 @@
   ///
   /// [teamDriveId] - The Team Drive from which the change will be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Change].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -269,7 +292,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Change> get(core.String changeId,
-      {core.bool supportsTeamDrives, core.String teamDriveId}) {
+      {core.bool supportsTeamDrives,
+      core.String teamDriveId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -286,6 +311,9 @@
     if (teamDriveId != null) {
       _queryParams["teamDriveId"] = [teamDriveId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'changes/' + commons.Escaper.ecapeVariable('$changeId');
 
@@ -308,6 +336,9 @@
   /// [teamDriveId] - The ID of the Team Drive for which the starting pageToken
   /// for listing future changes from that Team Drive will be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StartPageToken].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -316,7 +347,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StartPageToken> getStartPageToken(
-      {core.bool supportsTeamDrives, core.String teamDriveId}) {
+      {core.bool supportsTeamDrives,
+      core.String teamDriveId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -330,6 +363,9 @@
     if (teamDriveId != null) {
       _queryParams["teamDriveId"] = [teamDriveId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'changes/startPageToken';
 
@@ -381,6 +417,9 @@
   /// specified the change IDs will be reflective of the Team Drive; use the
   /// combined Team Drive ID and change ID as an identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChangeList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -398,7 +437,8 @@
       core.String spaces,
       core.String startChangeId,
       core.bool supportsTeamDrives,
-      core.String teamDriveId}) {
+      core.String teamDriveId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -436,6 +476,9 @@
     if (teamDriveId != null) {
       _queryParams["teamDriveId"] = [teamDriveId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'changes';
 
@@ -489,6 +532,9 @@
   /// specified the change IDs will be reflective of the Team Drive; use the
   /// combined Team Drive ID and change ID as an identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Channel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -506,7 +552,8 @@
       core.String spaces,
       core.String startChangeId,
       core.bool supportsTeamDrives,
-      core.String teamDriveId}) {
+      core.String teamDriveId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -547,6 +594,9 @@
     if (teamDriveId != null) {
       _queryParams["teamDriveId"] = [teamDriveId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'changes/watch';
 
@@ -571,12 +621,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future stop(Channel request) {
+  async.Future stop(Channel request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -587,6 +640,9 @@
     if (request != null) {
       _body = convert_1.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -615,12 +671,16 @@
   ///
   /// [childId] - The ID of the child.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String folderId, core.String childId) {
+  async.Future delete(core.String folderId, core.String childId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -634,6 +694,9 @@
     if (childId == null) {
       throw new core.ArgumentError("Parameter childId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -659,6 +722,9 @@
   ///
   /// [childId] - The ID of the child.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChildReference].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -666,7 +732,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ChildReference> get(core.String folderId, core.String childId) {
+  async.Future<ChildReference> get(core.String folderId, core.String childId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -680,6 +747,9 @@
     if (childId == null) {
       throw new core.ArgumentError("Parameter childId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$folderId') +
@@ -706,6 +776,9 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChildReference].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -715,7 +788,7 @@
   /// this method will complete with the same error.
   async.Future<ChildReference> insert(
       ChildReference request, core.String folderId,
-      {core.bool supportsTeamDrives}) {
+      {core.bool supportsTeamDrives, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -732,6 +805,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$folderId') + '/children';
 
@@ -765,6 +841,9 @@
   ///
   /// [q] - Query string for searching children.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChildList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -776,7 +855,8 @@
       {core.int maxResults,
       core.String orderBy,
       core.String pageToken,
-      core.String q}) {
+      core.String q,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -799,6 +879,9 @@
     if (q != null) {
       _queryParams["q"] = [q];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$folderId') + '/children';
 
@@ -825,12 +908,16 @@
   ///
   /// [commentId] - The ID of the comment.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String fileId, core.String commentId) {
+  async.Future delete(core.String fileId, core.String commentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -844,6 +931,9 @@
     if (commentId == null) {
       throw new core.ArgumentError("Parameter commentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -872,6 +962,9 @@
   /// [includeDeleted] - If set, this will succeed when retrieving a deleted
   /// comment, and will include any deleted replies.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -880,7 +973,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Comment> get(core.String fileId, core.String commentId,
-      {core.bool includeDeleted}) {
+      {core.bool includeDeleted, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -897,6 +990,9 @@
     if (includeDeleted != null) {
       _queryParams["includeDeleted"] = ["${includeDeleted}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -920,6 +1016,9 @@
   ///
   /// [fileId] - The ID of the file.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -927,7 +1026,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Comment> insert(Comment request, core.String fileId) {
+  async.Future<Comment> insert(Comment request, core.String fileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -941,6 +1041,9 @@
     if (fileId == null) {
       throw new core.ArgumentError("Parameter fileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/comments';
 
@@ -973,6 +1076,9 @@
   /// [updatedMin] - Only discussions that were updated after this timestamp
   /// will be returned. Formatted as an RFC 3339 timestamp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommentList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -984,7 +1090,8 @@
       {core.bool includeDeleted,
       core.int maxResults,
       core.String pageToken,
-      core.String updatedMin}) {
+      core.String updatedMin,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1007,6 +1114,9 @@
     if (updatedMin != null) {
       _queryParams["updatedMin"] = [updatedMin];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/comments';
 
@@ -1029,6 +1139,9 @@
   ///
   /// [commentId] - The ID of the comment.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1037,7 +1150,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Comment> patch(
-      Comment request, core.String fileId, core.String commentId) {
+      Comment request, core.String fileId, core.String commentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1054,6 +1168,9 @@
     if (commentId == null) {
       throw new core.ArgumentError("Parameter commentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -1079,6 +1196,9 @@
   ///
   /// [commentId] - The ID of the comment.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1087,7 +1207,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Comment> update(
-      Comment request, core.String fileId, core.String commentId) {
+      Comment request, core.String fileId, core.String commentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1104,6 +1225,9 @@
     if (commentId == null) {
       throw new core.ArgumentError("Parameter commentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -1158,6 +1282,9 @@
   /// default visibility/sharing policies.
   /// - "PRIVATE" : The new file will be visible to only the owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [File].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1173,7 +1300,8 @@
       core.bool supportsTeamDrives,
       core.String timedTextLanguage,
       core.String timedTextTrackName,
-      core.String visibility}) {
+      core.String visibility,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1211,6 +1339,9 @@
     if (visibility != null) {
       _queryParams["visibility"] = [visibility];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/copy';
 
@@ -1234,12 +1365,16 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String fileId, {core.bool supportsTeamDrives}) {
+  async.Future delete(core.String fileId,
+      {core.bool supportsTeamDrives, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1253,6 +1388,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1271,12 +1409,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future emptyTrash() {
+  async.Future emptyTrash({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1284,6 +1425,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _downloadOptions = null;
 
     _url = 'files/trash';
@@ -1306,6 +1451,9 @@
   ///
   /// [mimeType] - The MIME type of the format requested for this export.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -1316,7 +1464,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future export(core.String fileId, core.String mimeType,
-      {commons.DownloadOptions downloadOptions:
+      {core.String $fields,
+      commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -1332,6 +1481,9 @@
       throw new core.ArgumentError("Parameter mimeType is required.");
     }
     _queryParams["mimeType"] = [mimeType];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -1361,6 +1513,9 @@
   /// [space] - The space in which the IDs can be used to create new files.
   /// Supported values are 'drive' and 'appDataFolder'.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GeneratedIds].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1369,7 +1524,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GeneratedIds> generateIds(
-      {core.int maxResults, core.String space}) {
+      {core.int maxResults, core.String space, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1383,6 +1538,9 @@
     if (space != null) {
       _queryParams["space"] = [space];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/generateIds';
 
@@ -1419,6 +1577,9 @@
   /// modifiedDateBehavior=noChange, updateViewedDate=true and an empty request
   /// body.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -1440,6 +1601,7 @@
       core.String revisionId,
       core.bool supportsTeamDrives,
       core.bool updateViewedDate,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -1467,6 +1629,9 @@
     if (updateViewedDate != null) {
       _queryParams["updateViewedDate"] = ["${updateViewedDate}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -1520,6 +1685,9 @@
   /// default visibility/sharing policies.
   /// - "PRIVATE" : The new file will be visible to only the owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -1543,6 +1711,7 @@
       core.String timedTextTrackName,
       core.bool useContentAsIndexableText,
       core.String visibility,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -1584,6 +1753,9 @@
     if (visibility != null) {
       _queryParams["visibility"] = [visibility];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -1654,6 +1826,9 @@
   ///
   /// [teamDriveId] - ID of Team Drive to search.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FileList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1672,7 +1847,8 @@
       core.String q,
       core.String spaces,
       core.bool supportsTeamDrives,
-      core.String teamDriveId}) {
+      core.String teamDriveId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1713,6 +1889,9 @@
     if (teamDriveId != null) {
       _queryParams["teamDriveId"] = [teamDriveId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files';
 
@@ -1786,6 +1965,9 @@
   /// [useContentAsIndexableText] - Whether to use the content as indexable
   /// text.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [File].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1807,7 +1989,8 @@
       core.String timedTextLanguage,
       core.String timedTextTrackName,
       core.bool updateViewedDate,
-      core.bool useContentAsIndexableText}) {
+      core.bool useContentAsIndexableText,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1865,6 +2048,9 @@
         "${useContentAsIndexableText}"
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId');
 
@@ -1886,6 +2072,9 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [File].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1893,7 +2082,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<File> touch(core.String fileId, {core.bool supportsTeamDrives}) {
+  async.Future<File> touch(core.String fileId,
+      {core.bool supportsTeamDrives, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1907,6 +2097,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/touch';
 
@@ -1929,6 +2122,9 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [File].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1936,7 +2132,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<File> trash(core.String fileId, {core.bool supportsTeamDrives}) {
+  async.Future<File> trash(core.String fileId,
+      {core.bool supportsTeamDrives, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1950,6 +2147,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/trash';
 
@@ -1971,6 +2171,9 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [File].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1979,7 +2182,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<File> untrash(core.String fileId,
-      {core.bool supportsTeamDrives}) {
+      {core.bool supportsTeamDrives, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1993,6 +2196,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/untrash';
 
@@ -2065,6 +2271,9 @@
   /// [useContentAsIndexableText] - Whether to use the content as indexable
   /// text.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -2093,6 +2302,7 @@
       core.String timedTextTrackName,
       core.bool updateViewedDate,
       core.bool useContentAsIndexableText,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -2152,6 +2362,9 @@
         "${useContentAsIndexableText}"
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -2201,6 +2414,9 @@
   /// modifiedDateBehavior=noChange, updateViewedDate=true and an empty request
   /// body.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -2222,6 +2438,7 @@
       core.String revisionId,
       core.bool supportsTeamDrives,
       core.bool updateViewedDate,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -2252,6 +2469,9 @@
     if (updateViewedDate != null) {
       _queryParams["updateViewedDate"] = ["${updateViewedDate}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -2285,12 +2505,16 @@
   ///
   /// [parentId] - The ID of the parent.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String fileId, core.String parentId) {
+  async.Future delete(core.String fileId, core.String parentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2304,6 +2528,9 @@
     if (parentId == null) {
       throw new core.ArgumentError("Parameter parentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2329,6 +2556,9 @@
   ///
   /// [parentId] - The ID of the parent.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ParentReference].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2336,7 +2566,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ParentReference> get(core.String fileId, core.String parentId) {
+  async.Future<ParentReference> get(core.String fileId, core.String parentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2350,6 +2581,9 @@
     if (parentId == null) {
       throw new core.ArgumentError("Parameter parentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -2376,6 +2610,9 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ParentReference].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2385,7 +2622,7 @@
   /// this method will complete with the same error.
   async.Future<ParentReference> insert(
       ParentReference request, core.String fileId,
-      {core.bool supportsTeamDrives}) {
+      {core.bool supportsTeamDrives, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2402,6 +2639,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/parents';
 
@@ -2420,6 +2660,9 @@
   ///
   /// [fileId] - The ID of the file.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ParentList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2427,7 +2670,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ParentList> list(core.String fileId) {
+  async.Future<ParentList> list(core.String fileId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2438,6 +2681,9 @@
     if (fileId == null) {
       throw new core.ArgumentError("Parameter fileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/parents';
 
@@ -2467,13 +2713,16 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String fileId, core.String permissionId,
-      {core.bool supportsTeamDrives}) {
+      {core.bool supportsTeamDrives, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2490,6 +2739,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2518,6 +2770,9 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Permission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2526,7 +2781,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Permission> get(core.String fileId, core.String permissionId,
-      {core.bool supportsTeamDrives}) {
+      {core.bool supportsTeamDrives, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2543,6 +2798,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -2564,6 +2822,9 @@
   ///
   /// [email] - The email address for which to return a permission ID
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PermissionId].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2571,7 +2832,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PermissionId> getIdForEmail(core.String email) {
+  async.Future<PermissionId> getIdForEmail(core.String email,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2582,6 +2844,9 @@
     if (email == null) {
       throw new core.ArgumentError("Parameter email is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'permissionIds/' + commons.Escaper.ecapeVariable('$email');
 
@@ -2611,6 +2876,9 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Permission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2621,7 +2889,8 @@
   async.Future<Permission> insert(Permission request, core.String fileId,
       {core.String emailMessage,
       core.bool sendNotificationEmails,
-      core.bool supportsTeamDrives}) {
+      core.bool supportsTeamDrives,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2644,6 +2913,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/permissions';
 
@@ -2675,6 +2947,9 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PermissionList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2685,7 +2960,8 @@
   async.Future<PermissionList> list(core.String fileId,
       {core.int maxResults,
       core.String pageToken,
-      core.bool supportsTeamDrives}) {
+      core.bool supportsTeamDrives,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2705,6 +2981,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/permissions';
 
@@ -2736,6 +3015,9 @@
   /// current owners to writers. Does nothing if the specified role is not
   /// 'owner'.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Permission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2747,7 +3029,8 @@
       Permission request, core.String fileId, core.String permissionId,
       {core.bool removeExpiration,
       core.bool supportsTeamDrives,
-      core.bool transferOwnership}) {
+      core.bool transferOwnership,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2773,6 +3056,9 @@
     if (transferOwnership != null) {
       _queryParams["transferOwnership"] = ["${transferOwnership}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -2807,6 +3093,9 @@
   /// current owners to writers. Does nothing if the specified role is not
   /// 'owner'.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Permission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2818,7 +3107,8 @@
       Permission request, core.String fileId, core.String permissionId,
       {core.bool removeExpiration,
       core.bool supportsTeamDrives,
-      core.bool transferOwnership}) {
+      core.bool transferOwnership,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2844,6 +3134,9 @@
     if (transferOwnership != null) {
       _queryParams["transferOwnership"] = ["${transferOwnership}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -2875,13 +3168,16 @@
   ///
   /// [visibility] - The visibility of the property.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String fileId, core.String propertyKey,
-      {core.String visibility}) {
+      {core.String visibility, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2898,6 +3194,9 @@
     if (visibility != null) {
       _queryParams["visibility"] = [visibility];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2925,6 +3224,9 @@
   ///
   /// [visibility] - The visibility of the property.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Property].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2933,7 +3235,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Property> get(core.String fileId, core.String propertyKey,
-      {core.String visibility}) {
+      {core.String visibility, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2950,6 +3252,9 @@
     if (visibility != null) {
       _queryParams["visibility"] = [visibility];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -2973,6 +3278,9 @@
   ///
   /// [fileId] - The ID of the file.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Property].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2980,7 +3288,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Property> insert(Property request, core.String fileId) {
+  async.Future<Property> insert(Property request, core.String fileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2994,6 +3303,9 @@
     if (fileId == null) {
       throw new core.ArgumentError("Parameter fileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/properties';
 
@@ -3012,6 +3324,9 @@
   ///
   /// [fileId] - The ID of the file.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PropertyList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3019,7 +3334,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PropertyList> list(core.String fileId) {
+  async.Future<PropertyList> list(core.String fileId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3030,6 +3345,9 @@
     if (fileId == null) {
       throw new core.ArgumentError("Parameter fileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/properties';
 
@@ -3055,6 +3373,9 @@
   ///
   /// [visibility] - The visibility of the property.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Property].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3064,7 +3385,7 @@
   /// this method will complete with the same error.
   async.Future<Property> patch(
       Property request, core.String fileId, core.String propertyKey,
-      {core.String visibility}) {
+      {core.String visibility, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3084,6 +3405,9 @@
     if (visibility != null) {
       _queryParams["visibility"] = [visibility];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -3111,6 +3435,9 @@
   ///
   /// [visibility] - The visibility of the property.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Property].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3120,7 +3447,7 @@
   /// this method will complete with the same error.
   async.Future<Property> update(
       Property request, core.String fileId, core.String propertyKey,
-      {core.String visibility}) {
+      {core.String visibility, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3140,6 +3467,9 @@
     if (visibility != null) {
       _queryParams["visibility"] = [visibility];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -3174,6 +3504,9 @@
   /// with each change. If this parameter is excluded, the most recent data
   /// model will be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -3185,6 +3518,7 @@
   /// this method will complete with the same error.
   async.Future get(core.String fileId,
       {core.int revision,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -3200,6 +3534,9 @@
     if (revision != null) {
       _queryParams["revision"] = ["${revision}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -3233,6 +3570,9 @@
   /// model after the provided revision. If not set, the uploaded model replaces
   /// the current model on the server.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -3246,6 +3586,7 @@
   /// this method will complete with the same error.
   async.Future update(core.String fileId,
       {core.String baseRevision,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -3261,6 +3602,9 @@
     if (baseRevision != null) {
       _queryParams["baseRevision"] = [baseRevision];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -3303,13 +3647,17 @@
   ///
   /// [replyId] - The ID of the reply.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String fileId, core.String commentId, core.String replyId) {
+      core.String fileId, core.String commentId, core.String replyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3326,6 +3674,9 @@
     if (replyId == null) {
       throw new core.ArgumentError("Parameter replyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3358,6 +3709,9 @@
   /// [includeDeleted] - If set, this will succeed when retrieving a deleted
   /// reply.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommentReply].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3367,7 +3721,7 @@
   /// this method will complete with the same error.
   async.Future<CommentReply> get(
       core.String fileId, core.String commentId, core.String replyId,
-      {core.bool includeDeleted}) {
+      {core.bool includeDeleted, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3387,6 +3741,9 @@
     if (includeDeleted != null) {
       _queryParams["includeDeleted"] = ["${includeDeleted}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -3414,6 +3771,9 @@
   ///
   /// [commentId] - The ID of the comment.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommentReply].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3422,7 +3782,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CommentReply> insert(
-      CommentReply request, core.String fileId, core.String commentId) {
+      CommentReply request, core.String fileId, core.String commentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3439,6 +3800,9 @@
     if (commentId == null) {
       throw new core.ArgumentError("Parameter commentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -3474,6 +3838,9 @@
   /// sets. To get the next page of results, set this parameter to the value of
   /// "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommentReplyList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3482,7 +3849,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CommentReplyList> list(core.String fileId, core.String commentId,
-      {core.bool includeDeleted, core.int maxResults, core.String pageToken}) {
+      {core.bool includeDeleted,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3505,6 +3875,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -3533,6 +3906,9 @@
   ///
   /// [replyId] - The ID of the reply.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommentReply].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3541,7 +3917,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CommentReply> patch(CommentReply request, core.String fileId,
-      core.String commentId, core.String replyId) {
+      core.String commentId, core.String replyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3561,6 +3938,9 @@
     if (replyId == null) {
       throw new core.ArgumentError("Parameter replyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -3590,6 +3970,9 @@
   ///
   /// [replyId] - The ID of the reply.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommentReply].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3598,7 +3981,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CommentReply> update(CommentReply request, core.String fileId,
-      core.String commentId, core.String replyId) {
+      core.String commentId, core.String replyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3618,6 +4002,9 @@
     if (replyId == null) {
       throw new core.ArgumentError("Parameter replyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -3649,12 +4036,16 @@
   ///
   /// [revisionId] - The ID of the revision.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String fileId, core.String revisionId) {
+  async.Future delete(core.String fileId, core.String revisionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3668,6 +4059,9 @@
     if (revisionId == null) {
       throw new core.ArgumentError("Parameter revisionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3693,6 +4087,9 @@
   ///
   /// [revisionId] - The ID of the revision.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Revision].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3700,7 +4097,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Revision> get(core.String fileId, core.String revisionId) {
+  async.Future<Revision> get(core.String fileId, core.String revisionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3714,6 +4112,9 @@
     if (revisionId == null) {
       throw new core.ArgumentError("Parameter revisionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -3742,6 +4143,9 @@
   /// set this parameter to the value of "nextPageToken" from the previous
   /// response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RevisionList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3750,7 +4154,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RevisionList> list(core.String fileId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3767,6 +4171,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/revisions';
 
@@ -3789,6 +4196,9 @@
   ///
   /// [revisionId] - The ID for the revision.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Revision].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3797,7 +4207,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Revision> patch(
-      Revision request, core.String fileId, core.String revisionId) {
+      Revision request, core.String fileId, core.String revisionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3814,6 +4225,9 @@
     if (revisionId == null) {
       throw new core.ArgumentError("Parameter revisionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -3839,6 +4253,9 @@
   ///
   /// [revisionId] - The ID for the revision.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Revision].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3847,7 +4264,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Revision> update(
-      Revision request, core.String fileId, core.String revisionId) {
+      Revision request, core.String fileId, core.String revisionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3864,6 +4282,9 @@
     if (revisionId == null) {
       throw new core.ArgumentError("Parameter revisionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -3892,12 +4313,15 @@
   ///
   /// [teamDriveId] - The ID of the Team Drive
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String teamDriveId) {
+  async.Future delete(core.String teamDriveId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3908,6 +4332,9 @@
     if (teamDriveId == null) {
       throw new core.ArgumentError("Parameter teamDriveId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3928,6 +4355,9 @@
   ///
   /// [teamDriveId] - The ID of the Team Drive
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TeamDrive].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3935,7 +4365,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TeamDrive> get(core.String teamDriveId) {
+  async.Future<TeamDrive> get(core.String teamDriveId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3946,6 +4376,9 @@
     if (teamDriveId == null) {
       throw new core.ArgumentError("Parameter teamDriveId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'teamdrives/' + commons.Escaper.ecapeVariable('$teamDriveId');
 
@@ -3970,6 +4403,9 @@
   /// duplicates by attempting to create the same Team Drive. If the Team Drive
   /// already exists a 409 error will be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TeamDrive].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3977,7 +4413,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TeamDrive> insert(TeamDrive request, core.String requestId) {
+  async.Future<TeamDrive> insert(TeamDrive request, core.String requestId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3992,6 +4429,9 @@
       throw new core.ArgumentError("Parameter requestId is required.");
     }
     _queryParams["requestId"] = [requestId];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'teamdrives';
 
@@ -4013,6 +4453,9 @@
   ///
   /// [pageToken] - Page token for Team Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TeamDriveList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4021,7 +4464,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TeamDriveList> list(
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4035,6 +4478,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'teamdrives';
 
@@ -4055,6 +4501,9 @@
   ///
   /// [teamDriveId] - The ID of the Team Drive
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TeamDrive].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4062,7 +4511,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TeamDrive> update(TeamDrive request, core.String teamDriveId) {
+  async.Future<TeamDrive> update(TeamDrive request, core.String teamDriveId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4076,6 +4526,9 @@
     if (teamDriveId == null) {
       throw new core.ArgumentError("Parameter teamDriveId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'teamdrives/' + commons.Escaper.ecapeVariable('$teamDriveId');
 
diff --git a/generated/googleapis/lib/drive/v3.dart b/generated/googleapis/lib/drive/v3.dart
index e900f27..6403438 100644
--- a/generated/googleapis/lib/drive/v3.dart
+++ b/generated/googleapis/lib/drive/v3.dart
@@ -86,6 +86,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [About].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -93,7 +96,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<About> get() {
+  async.Future<About> get({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -101,6 +104,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'about';
 
     var _response = _requester.request(_url, "GET",
@@ -128,6 +135,9 @@
   /// [teamDriveId] - The ID of the Team Drive for which the starting pageToken
   /// for listing future changes from that Team Drive will be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StartPageToken].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -136,7 +146,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StartPageToken> getStartPageToken(
-      {core.bool supportsTeamDrives, core.String teamDriveId}) {
+      {core.bool supportsTeamDrives,
+      core.String teamDriveId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -150,6 +162,9 @@
     if (teamDriveId != null) {
       _queryParams["teamDriveId"] = [teamDriveId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'changes/startPageToken';
 
@@ -200,6 +215,9 @@
   /// specified the change IDs will be reflective of the Team Drive; use the
   /// combined Team Drive ID and change ID as an identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChangeList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -215,7 +233,8 @@
       core.bool restrictToMyDrive,
       core.String spaces,
       core.bool supportsTeamDrives,
-      core.String teamDriveId}) {
+      core.String teamDriveId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -251,6 +270,9 @@
     if (teamDriveId != null) {
       _queryParams["teamDriveId"] = [teamDriveId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'changes';
 
@@ -303,6 +325,9 @@
   /// specified the change IDs will be reflective of the Team Drive; use the
   /// combined Team Drive ID and change ID as an identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Channel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -318,7 +343,8 @@
       core.bool restrictToMyDrive,
       core.String spaces,
       core.bool supportsTeamDrives,
-      core.String teamDriveId}) {
+      core.String teamDriveId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -357,6 +383,9 @@
     if (teamDriveId != null) {
       _queryParams["teamDriveId"] = [teamDriveId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'changes/watch';
 
@@ -381,12 +410,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future stop(Channel request) {
+  async.Future stop(Channel request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -397,6 +429,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -425,6 +460,9 @@
   ///
   /// [fileId] - The ID of the file.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -432,7 +470,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Comment> create(Comment request, core.String fileId) {
+  async.Future<Comment> create(Comment request, core.String fileId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -446,6 +485,9 @@
     if (fileId == null) {
       throw new core.ArgumentError("Parameter fileId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/comments';
 
@@ -466,12 +508,16 @@
   ///
   /// [commentId] - The ID of the comment.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String fileId, core.String commentId) {
+  async.Future delete(core.String fileId, core.String commentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -485,6 +531,9 @@
     if (commentId == null) {
       throw new core.ArgumentError("Parameter commentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -513,6 +562,9 @@
   /// [includeDeleted] - Whether to return deleted comments. Deleted comments
   /// will not include their original content.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -521,7 +573,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Comment> get(core.String fileId, core.String commentId,
-      {core.bool includeDeleted}) {
+      {core.bool includeDeleted, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -538,6 +590,9 @@
     if (includeDeleted != null) {
       _queryParams["includeDeleted"] = ["${includeDeleted}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -572,6 +627,9 @@
   /// [startModifiedTime] - The minimum value of 'modifiedTime' for the result
   /// comments (RFC 3339 date-time).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommentList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -583,7 +641,8 @@
       {core.bool includeDeleted,
       core.int pageSize,
       core.String pageToken,
-      core.String startModifiedTime}) {
+      core.String startModifiedTime,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -606,6 +665,9 @@
     if (startModifiedTime != null) {
       _queryParams["startModifiedTime"] = [startModifiedTime];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/comments';
 
@@ -628,6 +690,9 @@
   ///
   /// [commentId] - The ID of the comment.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -636,7 +701,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Comment> update(
-      Comment request, core.String fileId, core.String commentId) {
+      Comment request, core.String fileId, core.String commentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -653,6 +719,9 @@
     if (commentId == null) {
       throw new core.ArgumentError("Parameter commentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -699,6 +768,9 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [File].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -710,7 +782,8 @@
       {core.bool ignoreDefaultVisibility,
       core.bool keepRevisionForever,
       core.String ocrLanguage,
-      core.bool supportsTeamDrives}) {
+      core.bool supportsTeamDrives,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -736,6 +809,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/copy';
 
@@ -773,6 +849,9 @@
   /// [useContentAsIndexableText] - Whether to use the uploaded content as
   /// indexable text.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -792,6 +871,7 @@
       core.String ocrLanguage,
       core.bool supportsTeamDrives,
       core.bool useContentAsIndexableText,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -821,6 +901,9 @@
         "${useContentAsIndexableText}"
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -854,12 +937,16 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String fileId, {core.bool supportsTeamDrives}) {
+  async.Future delete(core.String fileId,
+      {core.bool supportsTeamDrives, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -873,6 +960,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -891,12 +981,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future emptyTrash() {
+  async.Future emptyTrash({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -904,6 +997,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _downloadOptions = null;
 
     _url = 'files/trash';
@@ -926,6 +1023,9 @@
   ///
   /// [mimeType] - The MIME type of the format requested for this export.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -936,7 +1036,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future export(core.String fileId, core.String mimeType,
-      {commons.DownloadOptions downloadOptions:
+      {core.String $fields,
+      commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -952,6 +1053,9 @@
       throw new core.ArgumentError("Parameter mimeType is required.");
     }
     _queryParams["mimeType"] = [mimeType];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -981,6 +1085,9 @@
   /// [space] - The space in which the IDs can be used to create new files.
   /// Supported values are 'drive' and 'appDataFolder'.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GeneratedIds].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -988,7 +1095,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GeneratedIds> generateIds({core.int count, core.String space}) {
+  async.Future<GeneratedIds> generateIds(
+      {core.int count, core.String space, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1002,6 +1110,9 @@
     if (space != null) {
       _queryParams["space"] = [space];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/generateIds';
 
@@ -1027,6 +1138,9 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -1045,6 +1159,7 @@
   async.Future get(core.String fileId,
       {core.bool acknowledgeAbuse,
       core.bool supportsTeamDrives,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -1063,6 +1178,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -1129,6 +1247,9 @@
   ///
   /// [teamDriveId] - ID of Team Drive to search.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FileList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1146,7 +1267,8 @@
       core.String q,
       core.String spaces,
       core.bool supportsTeamDrives,
-      core.String teamDriveId}) {
+      core.String teamDriveId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1184,6 +1306,9 @@
     if (teamDriveId != null) {
       _queryParams["teamDriveId"] = [teamDriveId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files';
 
@@ -1221,6 +1346,9 @@
   /// [useContentAsIndexableText] - Whether to use the uploaded content as
   /// indexable text.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -1241,6 +1369,7 @@
       core.String removeParents,
       core.bool supportsTeamDrives,
       core.bool useContentAsIndexableText,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -1276,6 +1405,9 @@
         "${useContentAsIndexableText}"
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -1314,6 +1446,9 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -1332,6 +1467,7 @@
   async.Future watch(Channel request, core.String fileId,
       {core.bool acknowledgeAbuse,
       core.bool supportsTeamDrives,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -1353,6 +1489,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -1400,6 +1539,9 @@
   /// and downgrade the current owner to a writer. This parameter is required as
   /// an acknowledgement of the side effect.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Permission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1411,7 +1553,8 @@
       {core.String emailMessage,
       core.bool sendNotificationEmail,
       core.bool supportsTeamDrives,
-      core.bool transferOwnership}) {
+      core.bool transferOwnership,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1437,6 +1580,9 @@
     if (transferOwnership != null) {
       _queryParams["transferOwnership"] = ["${transferOwnership}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/permissions';
 
@@ -1460,13 +1606,16 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String fileId, core.String permissionId,
-      {core.bool supportsTeamDrives}) {
+      {core.bool supportsTeamDrives, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1483,6 +1632,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1511,6 +1663,9 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Permission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1519,7 +1674,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Permission> get(core.String fileId, core.String permissionId,
-      {core.bool supportsTeamDrives}) {
+      {core.bool supportsTeamDrives, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1536,6 +1691,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -1570,6 +1728,9 @@
   /// [supportsTeamDrives] - Whether the requesting application supports Team
   /// Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PermissionList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1580,7 +1741,8 @@
   async.Future<PermissionList> list(core.String fileId,
       {core.int pageSize,
       core.String pageToken,
-      core.bool supportsTeamDrives}) {
+      core.bool supportsTeamDrives,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1600,6 +1762,9 @@
     if (supportsTeamDrives != null) {
       _queryParams["supportsTeamDrives"] = ["${supportsTeamDrives}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/permissions';
 
@@ -1631,6 +1796,9 @@
   /// and downgrade the current owner to a writer. This parameter is required as
   /// an acknowledgement of the side effect.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Permission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1642,7 +1810,8 @@
       Permission request, core.String fileId, core.String permissionId,
       {core.bool removeExpiration,
       core.bool supportsTeamDrives,
-      core.bool transferOwnership}) {
+      core.bool transferOwnership,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1668,6 +1837,9 @@
     if (transferOwnership != null) {
       _queryParams["transferOwnership"] = ["${transferOwnership}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -1699,6 +1871,9 @@
   ///
   /// [commentId] - The ID of the comment.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Reply].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1707,7 +1882,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Reply> create(
-      Reply request, core.String fileId, core.String commentId) {
+      Reply request, core.String fileId, core.String commentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1724,6 +1900,9 @@
     if (commentId == null) {
       throw new core.ArgumentError("Parameter commentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -1750,13 +1929,17 @@
   ///
   /// [replyId] - The ID of the reply.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String fileId, core.String commentId, core.String replyId) {
+      core.String fileId, core.String commentId, core.String replyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1773,6 +1956,9 @@
     if (replyId == null) {
       throw new core.ArgumentError("Parameter replyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1805,6 +1991,9 @@
   /// [includeDeleted] - Whether to return deleted replies. Deleted replies will
   /// not include their original content.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Reply].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1814,7 +2003,7 @@
   /// this method will complete with the same error.
   async.Future<Reply> get(
       core.String fileId, core.String commentId, core.String replyId,
-      {core.bool includeDeleted}) {
+      {core.bool includeDeleted, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1834,6 +2023,9 @@
     if (includeDeleted != null) {
       _queryParams["includeDeleted"] = ["${includeDeleted}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -1869,6 +2061,9 @@
   /// page. This should be set to the value of 'nextPageToken' from the previous
   /// response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ReplyList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1877,7 +2072,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ReplyList> list(core.String fileId, core.String commentId,
-      {core.bool includeDeleted, core.int pageSize, core.String pageToken}) {
+      {core.bool includeDeleted,
+      core.int pageSize,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1900,6 +2098,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -1928,6 +2129,9 @@
   ///
   /// [replyId] - The ID of the reply.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Reply].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1936,7 +2140,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Reply> update(Reply request, core.String fileId,
-      core.String commentId, core.String replyId) {
+      core.String commentId, core.String replyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1956,6 +2161,9 @@
     if (replyId == null) {
       throw new core.ArgumentError("Parameter replyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -1988,12 +2196,16 @@
   ///
   /// [revisionId] - The ID of the revision.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String fileId, core.String revisionId) {
+  async.Future delete(core.String fileId, core.String revisionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2007,6 +2219,9 @@
     if (revisionId == null) {
       throw new core.ArgumentError("Parameter revisionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2036,6 +2251,9 @@
   /// downloading known malware or other abusive files. This is only applicable
   /// when alt=media.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -2053,6 +2271,7 @@
   /// this method will complete with the same error.
   async.Future get(core.String fileId, core.String revisionId,
       {core.bool acknowledgeAbuse,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -2071,6 +2290,9 @@
     if (acknowledgeAbuse != null) {
       _queryParams["acknowledgeAbuse"] = ["${acknowledgeAbuse}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -2106,6 +2328,9 @@
   /// page. This should be set to the value of 'nextPageToken' from the previous
   /// response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RevisionList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2114,7 +2339,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RevisionList> list(core.String fileId,
-      {core.int pageSize, core.String pageToken}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2131,6 +2356,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' + commons.Escaper.ecapeVariable('$fileId') + '/revisions';
 
@@ -2153,6 +2381,9 @@
   ///
   /// [revisionId] - The ID of the revision.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Revision].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2161,7 +2392,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Revision> update(
-      Revision request, core.String fileId, core.String revisionId) {
+      Revision request, core.String fileId, core.String revisionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2178,6 +2410,9 @@
     if (revisionId == null) {
       throw new core.ArgumentError("Parameter revisionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'files/' +
         commons.Escaper.ecapeVariable('$fileId') +
@@ -2211,6 +2446,9 @@
   /// duplicates by attempting to create the same Team Drive. If the Team Drive
   /// already exists a 409 error will be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TeamDrive].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2218,7 +2456,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TeamDrive> create(TeamDrive request, core.String requestId) {
+  async.Future<TeamDrive> create(TeamDrive request, core.String requestId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2233,6 +2472,9 @@
       throw new core.ArgumentError("Parameter requestId is required.");
     }
     _queryParams["requestId"] = [requestId];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'teamdrives';
 
@@ -2252,12 +2494,15 @@
   ///
   /// [teamDriveId] - The ID of the Team Drive
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String teamDriveId) {
+  async.Future delete(core.String teamDriveId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2268,6 +2513,9 @@
     if (teamDriveId == null) {
       throw new core.ArgumentError("Parameter teamDriveId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2288,6 +2536,9 @@
   ///
   /// [teamDriveId] - The ID of the Team Drive
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TeamDrive].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2295,7 +2546,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TeamDrive> get(core.String teamDriveId) {
+  async.Future<TeamDrive> get(core.String teamDriveId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2306,6 +2557,9 @@
     if (teamDriveId == null) {
       throw new core.ArgumentError("Parameter teamDriveId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'teamdrives/' + commons.Escaper.ecapeVariable('$teamDriveId');
 
@@ -2327,6 +2581,9 @@
   ///
   /// [pageToken] - Page token for Team Drives.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TeamDriveList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2334,7 +2591,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TeamDriveList> list({core.int pageSize, core.String pageToken}) {
+  async.Future<TeamDriveList> list(
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2348,6 +2606,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'teamdrives';
 
@@ -2368,6 +2629,9 @@
   ///
   /// [teamDriveId] - The ID of the Team Drive
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TeamDrive].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2375,7 +2639,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TeamDrive> update(TeamDrive request, core.String teamDriveId) {
+  async.Future<TeamDrive> update(TeamDrive request, core.String teamDriveId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2389,6 +2654,9 @@
     if (teamDriveId == null) {
       throw new core.ArgumentError("Parameter teamDriveId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'teamdrives/' + commons.Escaper.ecapeVariable('$teamDriveId');
 
diff --git a/generated/googleapis/lib/firebasedynamiclinks/v1.dart b/generated/googleapis/lib/firebasedynamiclinks/v1.dart
index 1b66b42..60ce398 100644
--- a/generated/googleapis/lib/firebasedynamiclinks/v1.dart
+++ b/generated/googleapis/lib/firebasedynamiclinks/v1.dart
@@ -50,6 +50,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreateShortDynamicLinkResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -58,7 +61,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreateShortDynamicLinkResponse> create(
-      CreateShortDynamicLinkRequest request) {
+      CreateShortDynamicLinkRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -69,6 +73,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/shortLinks';
 
@@ -98,6 +105,9 @@
   ///
   /// [durationDays] - The span of time requested in days.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DynamicLinkStats].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -106,7 +116,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DynamicLinkStats> getLinkStats(core.String dynamicLink,
-      {core.String durationDays}) {
+      {core.String durationDays, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -120,6 +130,9 @@
     if (durationDays != null) {
       _queryParams["durationDays"] = [durationDays];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariable('$dynamicLink') + '/linkStats';
 
@@ -138,6 +151,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetIosPostInstallAttributionResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -146,7 +162,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetIosPostInstallAttributionResponse> installAttribution(
-      GetIosPostInstallAttributionRequest request) {
+      GetIosPostInstallAttributionRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -157,6 +174,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/installAttribution';
 
@@ -346,6 +366,29 @@
   }
 }
 
+/// Desktop related attributes to the Dynamic Link.
+class DesktopInfo {
+  /// Link to open on desktop.
+  core.String desktopFallbackLink;
+
+  DesktopInfo();
+
+  DesktopInfo.fromJson(core.Map _json) {
+    if (_json.containsKey("desktopFallbackLink")) {
+      desktopFallbackLink = _json["desktopFallbackLink"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (desktopFallbackLink != null) {
+      _json["desktopFallbackLink"] = desktopFallbackLink;
+    }
+    return _json;
+  }
+}
+
 /// Signals associated with the device making the request.
 class DeviceInfo {
   /// Device model name.
@@ -477,6 +520,10 @@
   /// [documentation](https://firebase.google.com/docs/dynamic-links/create-manually).
   AndroidInfo androidInfo;
 
+  /// Desktop related information. See desktop related parameters in the
+  /// [documentation](https://firebase.google.com/docs/dynamic-links/create-manually).
+  DesktopInfo desktopInfo;
+
   /// Dynamic Links domain that the project owns, e.g. abcd.app.goo.gl
   /// [Learn
   /// more](https://firebase.google.com/docs/dynamic-links/android/receive)
@@ -514,6 +561,9 @@
     if (_json.containsKey("androidInfo")) {
       androidInfo = new AndroidInfo.fromJson(_json["androidInfo"]);
     }
+    if (_json.containsKey("desktopInfo")) {
+      desktopInfo = new DesktopInfo.fromJson(_json["desktopInfo"]);
+    }
     if (_json.containsKey("dynamicLinkDomain")) {
       dynamicLinkDomain = _json["dynamicLinkDomain"];
     }
@@ -541,6 +591,9 @@
     if (androidInfo != null) {
       _json["androidInfo"] = (androidInfo).toJson();
     }
+    if (desktopInfo != null) {
+      _json["desktopInfo"] = (desktopInfo).toJson();
+    }
     if (dynamicLinkDomain != null) {
       _json["dynamicLinkDomain"] = dynamicLinkDomain;
     }
diff --git a/generated/googleapis/lib/firebaseremoteconfig/v1.dart b/generated/googleapis/lib/firebaseremoteconfig/v1.dart
index 5bdd095..c37c96f 100644
--- a/generated/googleapis/lib/firebaseremoteconfig/v1.dart
+++ b/generated/googleapis/lib/firebaseremoteconfig/v1.dart
@@ -43,6 +43,9 @@
   /// See note at the beginning of this file regarding project ids.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RemoteConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -50,7 +53,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<RemoteConfig> getRemoteConfig(core.String project) {
+  async.Future<RemoteConfig> getRemoteConfig(core.String project,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -61,6 +65,9 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$project') +
@@ -111,6 +118,9 @@
   /// may still result after flipping to <code>false</code>, even if getting a
   /// "200 OK" when calling with <code>true</code>.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RemoteConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -120,7 +130,7 @@
   /// this method will complete with the same error.
   async.Future<RemoteConfig> updateRemoteConfig(
       RemoteConfig request, core.String project,
-      {core.bool validateOnly}) {
+      {core.bool validateOnly, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -137,6 +147,9 @@
     if (validateOnly != null) {
       _queryParams["validateOnly"] = ["${validateOnly}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$project') +
diff --git a/generated/googleapis/lib/firebaserules/v1.dart b/generated/googleapis/lib/firebaserules/v1.dart
index b0f3cca..4f0b6ad 100644
--- a/generated/googleapis/lib/firebaserules/v1.dart
+++ b/generated/googleapis/lib/firebaserules/v1.dart
@@ -86,6 +86,9 @@
   /// Format: `projects/{project_id}/rulesets/{ruleset_id}`
   /// Value must have pattern "^projects/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestRulesetResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -94,7 +97,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestRulesetResponse> test(
-      TestRulesetRequest request, core.String name) {
+      TestRulesetRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -108,6 +112,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':test';
 
@@ -159,6 +166,9 @@
   /// Format: `projects/{project_id}`
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Release].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -166,7 +176,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Release> create(Release request, core.String name) {
+  async.Future<Release> create(Release request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -180,6 +191,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + '/releases';
 
@@ -201,6 +215,9 @@
   /// Format: `projects/{project_id}/releases/{release_id}`
   /// Value must have pattern "^projects/[^/]+/releases/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -208,7 +225,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -219,6 +236,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -240,6 +260,9 @@
   /// Format: `projects/{project_id}/releases/{release_id}`
   /// Value must have pattern "^projects/[^/]+/releases/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Release].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -247,7 +270,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Release> get(core.String name) {
+  async.Future<Release> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -258,6 +281,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -287,6 +313,9 @@
   /// - "FIREBASE_RULES_EXECUTABLE_V1" : A FIREBASE_RULES_EXECUTABLE_V1.
   /// - "FIREBASE_RULES_EXECUTABLE_V2" : A FIREBASE_RULES_EXECUTABLE_V2.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetReleaseExecutableResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -295,7 +324,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetReleaseExecutableResponse> getExecutable(core.String name,
-      {core.String executableVersion}) {
+      {core.String executableVersion, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -309,6 +338,9 @@
     if (executableVersion != null) {
       _queryParams["executableVersion"] = [executableVersion];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$name') +
@@ -370,6 +402,9 @@
   /// the releases, the caller should iterate until the `page_token` on the
   /// response is empty.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListReleasesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -378,7 +413,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListReleasesResponse> list(core.String name,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -398,6 +436,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + '/releases';
 
@@ -410,6 +451,61 @@
     return _response.then((data) => new ListReleasesResponse.fromJson(data));
   }
 
+  /// Update a `Release` via PATCH.
+  ///
+  /// Only updates to the `ruleset_name` and `test_suite_name` fields will be
+  /// honored. `Release` rename is not supported. To create a `Release` use the
+  /// CreateRelease method.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Resource name for the project which owns this `Release`.
+  ///
+  /// Format: `projects/{project_id}`
+  /// Value must have pattern "^projects/[^/]+/releases/.+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Release].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Release> patch(UpdateReleaseRequest request, core.String name,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "PATCH",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Release.fromJson(data));
+  }
+
   /// Update a `Release`.
   ///
   /// Only updates to the `ruleset_name` and `test_suite_name` fields will be
@@ -447,6 +543,9 @@
   /// Format: `projects/{project_id}/releases/{release_id}`
   /// Value must have pattern "^projects/[^/]+/releases/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Release].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -454,7 +553,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Release> update(Release request, core.String name) {
+  async.Future<Release> update(Release request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -468,6 +568,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -504,6 +607,9 @@
   /// Format: `projects/{project_id}`
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Ruleset].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -511,7 +617,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Ruleset> create(Ruleset request, core.String name) {
+  async.Future<Ruleset> create(Ruleset request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -525,6 +632,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + '/rulesets';
 
@@ -548,6 +658,9 @@
   /// Format: `projects/{project_id}/rulesets/{ruleset_id}`
   /// Value must have pattern "^projects/[^/]+/rulesets/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -555,7 +668,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -566,6 +679,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -587,6 +703,9 @@
   /// Format: `projects/{project_id}/rulesets/{ruleset_id}`
   /// Value must have pattern "^projects/[^/]+/rulesets/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Ruleset].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -594,7 +713,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Ruleset> get(core.String name) {
+  async.Future<Ruleset> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -605,6 +724,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -631,14 +753,6 @@
   /// Format: `projects/{project_id}`
   /// Value must have pattern "^projects/[^/]+$".
   ///
-  /// [pageToken] - Next page token for loading the next batch of `Ruleset`
-  /// instances.
-  ///
-  /// [pageSize] - Page size to load. Maximum of 100. Defaults to 10.
-  /// Note: `page_size` is just a hint and the service may choose to load less
-  /// than `page_size` due to the size of the output. To traverse all of the
-  /// releases, caller should iterate until the `page_token` is empty.
-  ///
   /// [filter] - `Ruleset` filter. The list method supports filters with
   /// restrictions on
   /// `Ruleset.name`.
@@ -648,6 +762,17 @@
   ///
   /// Example: `create_time > date("2017-01-01") AND name=UUID-*`
   ///
+  /// [pageToken] - Next page token for loading the next batch of `Ruleset`
+  /// instances.
+  ///
+  /// [pageSize] - Page size to load. Maximum of 100. Defaults to 10.
+  /// Note: `page_size` is just a hint and the service may choose to load less
+  /// than `page_size` due to the size of the output. To traverse all of the
+  /// releases, caller should iterate until the `page_token` is empty.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListRulesetsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -656,7 +781,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListRulesetsResponse> list(core.String name,
-      {core.String pageToken, core.int pageSize, core.String filter}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -667,14 +795,17 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + '/rulesets';
@@ -1578,3 +1709,35 @@
     return _json;
   }
 }
+
+/// The request for FirebaseRulesService.UpdateReleasePatch.
+class UpdateReleaseRequest {
+  /// `Release` to update.
+  Release release;
+
+  /// Specifies which fields to update.
+  core.String updateMask;
+
+  UpdateReleaseRequest();
+
+  UpdateReleaseRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("release")) {
+      release = new Release.fromJson(_json["release"]);
+    }
+    if (_json.containsKey("updateMask")) {
+      updateMask = _json["updateMask"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (release != null) {
+      _json["release"] = (release).toJson();
+    }
+    if (updateMask != null) {
+      _json["updateMask"] = updateMask;
+    }
+    return _json;
+  }
+}
diff --git a/generated/googleapis/lib/fitness/v1.dart b/generated/googleapis/lib/fitness/v1.dart
index b992f18..649231f 100644
--- a/generated/googleapis/lib/fitness/v1.dart
+++ b/generated/googleapis/lib/fitness/v1.dart
@@ -140,6 +140,9 @@
   /// [userId] - Create the data source for the person identified. Use me to
   /// indicate the authenticated user. Only me is supported at this time.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DataSource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -147,7 +150,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DataSource> create(DataSource request, core.String userId) {
+  async.Future<DataSource> create(DataSource request, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -161,6 +165,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/dataSources';
 
@@ -183,6 +190,9 @@
   ///
   /// [dataSourceId] - The data stream ID of the data source to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DataSource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -190,8 +200,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DataSource> delete(
-      core.String userId, core.String dataSourceId) {
+  async.Future<DataSource> delete(core.String userId, core.String dataSourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -205,6 +215,9 @@
     if (dataSourceId == null) {
       throw new core.ArgumentError("Parameter dataSourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/dataSources/' +
@@ -228,6 +241,9 @@
   ///
   /// [dataSourceId] - The data stream ID of the data source to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DataSource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -235,7 +251,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DataSource> get(core.String userId, core.String dataSourceId) {
+  async.Future<DataSource> get(core.String userId, core.String dataSourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -249,6 +266,9 @@
     if (dataSourceId == null) {
       throw new core.ArgumentError("Parameter dataSourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/dataSources/' +
@@ -276,6 +296,9 @@
   /// [dataTypeName] - The names of data types to include in the list. If not
   /// specified, all data sources will be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListDataSourcesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -284,7 +307,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListDataSourcesResponse> list(core.String userId,
-      {core.List<core.String> dataTypeName}) {
+      {core.List<core.String> dataTypeName, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -298,6 +321,9 @@
     if (dataTypeName != null) {
       _queryParams["dataTypeName"] = dataTypeName;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/dataSources';
 
@@ -326,6 +352,9 @@
   ///
   /// [dataSourceId] - The data stream ID of the data source to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DataSource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -334,7 +363,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DataSource> patch(
-      DataSource request, core.String userId, core.String dataSourceId) {
+      DataSource request, core.String userId, core.String dataSourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -351,6 +381,9 @@
     if (dataSourceId == null) {
       throw new core.ArgumentError("Parameter dataSourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/dataSources/' +
@@ -380,6 +413,9 @@
   ///
   /// [dataSourceId] - The data stream ID of the data source to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DataSource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -388,7 +424,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DataSource> update(
-      DataSource request, core.String userId, core.String dataSourceId) {
+      DataSource request, core.String userId, core.String dataSourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -405,6 +442,9 @@
     if (dataSourceId == null) {
       throw new core.ArgumentError("Parameter dataSourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/dataSources/' +
@@ -443,6 +483,9 @@
   /// result sets. To get the next page of results, set this parameter to the
   /// value of nextPageToken from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListDataPointChangesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -452,7 +495,7 @@
   /// this method will complete with the same error.
   async.Future<ListDataPointChangesResponse> list(
       core.String userId, core.String dataSourceId,
-      {core.int limit, core.String pageToken}) {
+      {core.int limit, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -472,6 +515,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/dataSources/' +
@@ -521,6 +567,9 @@
   ///
   /// [modifiedTimeMillis] - When the operation was performed on the client.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
@@ -528,7 +577,9 @@
   /// this method will complete with the same error.
   async.Future delete(
       core.String userId, core.String dataSourceId, core.String datasetId,
-      {core.String currentTimeMillis, core.String modifiedTimeMillis}) {
+      {core.String currentTimeMillis,
+      core.String modifiedTimeMillis,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -551,6 +602,9 @@
     if (modifiedTimeMillis != null) {
       _queryParams["modifiedTimeMillis"] = [modifiedTimeMillis];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -598,6 +652,9 @@
   /// will yield a partial dataset with data point end timestamps that are
   /// strictly smaller than those in the previous partial response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Dataset].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -607,7 +664,7 @@
   /// this method will complete with the same error.
   async.Future<Dataset> get(
       core.String userId, core.String dataSourceId, core.String datasetId,
-      {core.int limit, core.String pageToken}) {
+      {core.int limit, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -630,6 +687,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/dataSources/' +
@@ -670,6 +730,9 @@
   /// epoch. Note that the minStartTimeNs and maxEndTimeNs properties in the
   /// request body are in nanoseconds instead of milliseconds.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Dataset].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -679,7 +742,7 @@
   /// this method will complete with the same error.
   async.Future<Dataset> patch(Dataset request, core.String userId,
       core.String dataSourceId, core.String datasetId,
-      {core.String currentTimeMillis}) {
+      {core.String currentTimeMillis, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -702,6 +765,9 @@
     if (currentTimeMillis != null) {
       _queryParams["currentTimeMillis"] = [currentTimeMillis];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/dataSources/' +
@@ -736,6 +802,9 @@
   /// [userId] - Aggregate data for the person identified. Use me to indicate
   /// the authenticated user. Only me is supported at this time.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AggregateResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -744,7 +813,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AggregateResponse> aggregate(
-      AggregateRequest request, core.String userId) {
+      AggregateRequest request, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -758,6 +828,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/dataset:aggregate';
 
@@ -788,13 +861,16 @@
   /// [currentTimeMillis] - The client's current time in milliseconds since
   /// epoch.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String userId, core.String sessionId,
-      {core.String currentTimeMillis}) {
+      {core.String currentTimeMillis, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -811,6 +887,9 @@
     if (currentTimeMillis != null) {
       _queryParams["currentTimeMillis"] = [currentTimeMillis];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -848,6 +927,9 @@
   /// [startTime] - An RFC3339 timestamp. Only sessions ending between the start
   /// and end times will be included in the response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListSessionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -859,7 +941,8 @@
       {core.String endTime,
       core.bool includeDeleted,
       core.String pageToken,
-      core.String startTime}) {
+      core.String startTime,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -882,6 +965,9 @@
     if (startTime != null) {
       _queryParams["startTime"] = [startTime];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/sessions';
 
@@ -908,6 +994,9 @@
   /// [currentTimeMillis] - The client's current time in milliseconds since
   /// epoch.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Session].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -917,7 +1006,7 @@
   /// this method will complete with the same error.
   async.Future<Session> update(
       Session request, core.String userId, core.String sessionId,
-      {core.String currentTimeMillis}) {
+      {core.String currentTimeMillis, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -937,6 +1026,9 @@
     if (currentTimeMillis != null) {
       _queryParams["currentTimeMillis"] = [currentTimeMillis];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/sessions/' +
diff --git a/generated/googleapis/lib/fusiontables/v1.dart b/generated/googleapis/lib/fusiontables/v1.dart
index a8b5613..12e83cf 100644
--- a/generated/googleapis/lib/fusiontables/v1.dart
+++ b/generated/googleapis/lib/fusiontables/v1.dart
@@ -61,12 +61,16 @@
   ///
   /// [columnId] - Name or identifier for the column being deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String tableId, core.String columnId) {
+  async.Future delete(core.String tableId, core.String columnId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -80,6 +84,9 @@
     if (columnId == null) {
       throw new core.ArgumentError("Parameter columnId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -105,6 +112,9 @@
   ///
   /// [columnId] - Name or identifier for the column that is being requested.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Column].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -112,7 +122,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Column> get(core.String tableId, core.String columnId) {
+  async.Future<Column> get(core.String tableId, core.String columnId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -126,6 +137,9 @@
     if (columnId == null) {
       throw new core.ArgumentError("Parameter columnId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -149,6 +163,9 @@
   ///
   /// [tableId] - Table for which a new column is being added.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Column].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -156,7 +173,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Column> insert(Column request, core.String tableId) {
+  async.Future<Column> insert(Column request, core.String tableId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -170,6 +188,9 @@
     if (tableId == null) {
       throw new core.ArgumentError("Parameter tableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/columns';
 
@@ -194,6 +215,9 @@
   /// [pageToken] - Continuation token specifying which result page to return.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ColumnList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -202,7 +226,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ColumnList> list(core.String tableId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -219,6 +243,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/columns';
 
@@ -242,6 +269,9 @@
   ///
   /// [columnId] - Name or identifier for the column that is being updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Column].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -250,7 +280,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Column> patch(
-      Column request, core.String tableId, core.String columnId) {
+      Column request, core.String tableId, core.String columnId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -267,6 +298,9 @@
     if (columnId == null) {
       throw new core.ArgumentError("Parameter columnId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -292,6 +326,9 @@
   ///
   /// [columnId] - Name or identifier for the column that is being updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Column].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -300,7 +337,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Column> update(
-      Column request, core.String tableId, core.String columnId) {
+      Column request, core.String tableId, core.String columnId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -317,6 +355,9 @@
     if (columnId == null) {
       throw new core.ArgumentError("Parameter columnId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -353,6 +394,9 @@
   /// numbers for numeric values and parsed geometries for KML values? Default
   /// is true.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -371,6 +415,7 @@
   async.Future sql(core.String sql_1,
       {core.bool hdrs,
       core.bool typed,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -390,6 +435,9 @@
     if (typed != null) {
       _queryParams["typed"] = ["${typed}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -422,6 +470,9 @@
   /// numbers for numeric values and parsed geometries for KML values? Default
   /// is true.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -440,6 +491,7 @@
   async.Future sqlGet(core.String sql_1,
       {core.bool hdrs,
       core.bool typed,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -459,6 +511,9 @@
     if (typed != null) {
       _queryParams["typed"] = ["${typed}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -492,12 +547,16 @@
   ///
   /// [styleId] - Identifier (within a table) for the style being deleted
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String tableId, core.int styleId) {
+  async.Future delete(core.String tableId, core.int styleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -511,6 +570,9 @@
     if (styleId == null) {
       throw new core.ArgumentError("Parameter styleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -536,6 +598,9 @@
   ///
   /// [styleId] - Identifier (integer) for a specific style in a table
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StyleSetting].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -543,7 +608,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<StyleSetting> get(core.String tableId, core.int styleId) {
+  async.Future<StyleSetting> get(core.String tableId, core.int styleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -557,6 +623,9 @@
     if (styleId == null) {
       throw new core.ArgumentError("Parameter styleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -580,6 +649,9 @@
   ///
   /// [tableId] - Table for which a new style is being added
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StyleSetting].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -587,7 +659,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<StyleSetting> insert(StyleSetting request, core.String tableId) {
+  async.Future<StyleSetting> insert(StyleSetting request, core.String tableId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -601,6 +674,9 @@
     if (tableId == null) {
       throw new core.ArgumentError("Parameter tableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/styles';
 
@@ -624,6 +700,9 @@
   /// [pageToken] - Continuation token specifying which result page to return.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StyleSettingList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -632,7 +711,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StyleSettingList> list(core.String tableId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -649,6 +728,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/styles';
 
@@ -671,6 +753,9 @@
   ///
   /// [styleId] - Identifier (within a table) for the style being updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StyleSetting].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -679,7 +764,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StyleSetting> patch(
-      StyleSetting request, core.String tableId, core.int styleId) {
+      StyleSetting request, core.String tableId, core.int styleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -696,6 +782,9 @@
     if (styleId == null) {
       throw new core.ArgumentError("Parameter styleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -721,6 +810,9 @@
   ///
   /// [styleId] - Identifier (within a table) for the style being updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StyleSetting].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -729,7 +821,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StyleSetting> update(
-      StyleSetting request, core.String tableId, core.int styleId) {
+      StyleSetting request, core.String tableId, core.int styleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -746,6 +839,9 @@
     if (styleId == null) {
       throw new core.ArgumentError("Parameter styleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -776,6 +872,9 @@
   /// [copyPresentation] - Whether to also copy tabs, styles, and templates.
   /// Default is false.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Table].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -783,7 +882,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Table> copy(core.String tableId, {core.bool copyPresentation}) {
+  async.Future<Table> copy(core.String tableId,
+      {core.bool copyPresentation, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -797,6 +897,9 @@
     if (copyPresentation != null) {
       _queryParams["copyPresentation"] = ["${copyPresentation}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/copy';
 
@@ -815,12 +918,15 @@
   ///
   /// [tableId] - ID of the table that is being deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String tableId) {
+  async.Future delete(core.String tableId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -831,6 +937,9 @@
     if (tableId == null) {
       throw new core.ArgumentError("Parameter tableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -851,6 +960,9 @@
   ///
   /// [tableId] - Identifier(ID) for the table being requested.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Table].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -858,7 +970,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Table> get(core.String tableId) {
+  async.Future<Table> get(core.String tableId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -869,6 +981,9 @@
     if (tableId == null) {
       throw new core.ArgumentError("Parameter tableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId');
 
@@ -909,6 +1024,9 @@
   /// [startLine] - The index of the first line from which to start importing,
   /// inclusive. Default is 0.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -928,6 +1046,7 @@
       core.int endLine,
       core.bool isStrict,
       core.int startLine,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -955,6 +1074,9 @@
     if (startLine != null) {
       _queryParams["startLine"] = ["${startLine}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -992,6 +1114,9 @@
   /// [encoding] - The encoding of the content. Default is UTF-8. Use
   /// 'auto-detect' if you are unsure of the encoding.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -1008,6 +1133,7 @@
   async.Future<Table> importTable(core.String name,
       {core.String delimiter,
       core.String encoding,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -1027,6 +1153,9 @@
     if (encoding != null) {
       _queryParams["encoding"] = [encoding];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -1054,6 +1183,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Table].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1061,7 +1193,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Table> insert(Table request) {
+  async.Future<Table> insert(Table request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1072,6 +1204,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables';
 
@@ -1093,6 +1228,9 @@
   /// [pageToken] - Continuation token specifying which result page to return.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TableList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1100,7 +1238,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TableList> list({core.int maxResults, core.String pageToken}) {
+  async.Future<TableList> list(
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1114,6 +1253,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables';
 
@@ -1140,6 +1282,9 @@
   /// specified view definition replaces the existing one. Only a view can be
   /// updated with a new definition.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Table].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1148,7 +1293,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Table> patch(Table request, core.String tableId,
-      {core.bool replaceViewDefinition}) {
+      {core.bool replaceViewDefinition, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1165,6 +1310,9 @@
     if (replaceViewDefinition != null) {
       _queryParams["replaceViewDefinition"] = ["${replaceViewDefinition}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId');
 
@@ -1190,6 +1338,9 @@
   /// specified view definition replaces the existing one. Only a view can be
   /// updated with a new definition.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Table].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1198,7 +1349,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Table> update(Table request, core.String tableId,
-      {core.bool replaceViewDefinition}) {
+      {core.bool replaceViewDefinition, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1215,6 +1366,9 @@
     if (replaceViewDefinition != null) {
       _queryParams["replaceViewDefinition"] = ["${replaceViewDefinition}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId');
 
@@ -1241,12 +1395,16 @@
   ///
   /// [taskId] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String tableId, core.String taskId) {
+  async.Future delete(core.String tableId, core.String taskId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1260,6 +1418,9 @@
     if (taskId == null) {
       throw new core.ArgumentError("Parameter taskId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1285,6 +1446,9 @@
   ///
   /// [taskId] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Task].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1292,7 +1456,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Task> get(core.String tableId, core.String taskId) {
+  async.Future<Task> get(core.String tableId, core.String taskId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1306,6 +1471,9 @@
     if (taskId == null) {
       throw new core.ArgumentError("Parameter taskId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -1334,6 +1502,9 @@
   ///
   /// [startIndex] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TaskList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1342,7 +1513,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TaskList> list(core.String tableId,
-      {core.int maxResults, core.String pageToken, core.int startIndex}) {
+      {core.int maxResults,
+      core.String pageToken,
+      core.int startIndex,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1362,6 +1536,9 @@
     if (startIndex != null) {
       _queryParams["startIndex"] = ["${startIndex}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/tasks';
 
@@ -1388,12 +1565,16 @@
   ///
   /// [templateId] - Identifier for the template which is being deleted
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String tableId, core.int templateId) {
+  async.Future delete(core.String tableId, core.int templateId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1407,6 +1588,9 @@
     if (templateId == null) {
       throw new core.ArgumentError("Parameter templateId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1432,6 +1616,9 @@
   ///
   /// [templateId] - Identifier for the template that is being requested
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Template].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1439,7 +1626,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Template> get(core.String tableId, core.int templateId) {
+  async.Future<Template> get(core.String tableId, core.int templateId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1453,6 +1641,9 @@
     if (templateId == null) {
       throw new core.ArgumentError("Parameter templateId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -1476,6 +1667,9 @@
   ///
   /// [tableId] - Table for which a new template is being created
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Template].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1483,7 +1677,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Template> insert(Template request, core.String tableId) {
+  async.Future<Template> insert(Template request, core.String tableId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1497,6 +1692,9 @@
     if (tableId == null) {
       throw new core.ArgumentError("Parameter tableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/templates';
 
@@ -1521,6 +1719,9 @@
   /// [pageToken] - Continuation token specifying which results page to return.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TemplateList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1529,7 +1730,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TemplateList> list(core.String tableId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1546,6 +1747,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/templates';
 
@@ -1568,6 +1772,9 @@
   ///
   /// [templateId] - Identifier for the template that is being updated
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Template].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1576,7 +1783,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Template> patch(
-      Template request, core.String tableId, core.int templateId) {
+      Template request, core.String tableId, core.int templateId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1593,6 +1801,9 @@
     if (templateId == null) {
       throw new core.ArgumentError("Parameter templateId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -1618,6 +1829,9 @@
   ///
   /// [templateId] - Identifier for the template that is being updated
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Template].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1626,7 +1840,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Template> update(
-      Template request, core.String tableId, core.int templateId) {
+      Template request, core.String tableId, core.int templateId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1643,6 +1858,9 @@
     if (templateId == null) {
       throw new core.ArgumentError("Parameter templateId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
diff --git a/generated/googleapis/lib/fusiontables/v2.dart b/generated/googleapis/lib/fusiontables/v2.dart
index bd60319..86e8538 100644
--- a/generated/googleapis/lib/fusiontables/v2.dart
+++ b/generated/googleapis/lib/fusiontables/v2.dart
@@ -61,12 +61,16 @@
   ///
   /// [columnId] - Name or identifier for the column being deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String tableId, core.String columnId) {
+  async.Future delete(core.String tableId, core.String columnId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -80,6 +84,9 @@
     if (columnId == null) {
       throw new core.ArgumentError("Parameter columnId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -105,6 +112,9 @@
   ///
   /// [columnId] - Name or identifier for the column that is being requested.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Column].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -112,7 +122,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Column> get(core.String tableId, core.String columnId) {
+  async.Future<Column> get(core.String tableId, core.String columnId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -126,6 +137,9 @@
     if (columnId == null) {
       throw new core.ArgumentError("Parameter columnId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -149,6 +163,9 @@
   ///
   /// [tableId] - Table for which a new column is being added.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Column].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -156,7 +173,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Column> insert(Column request, core.String tableId) {
+  async.Future<Column> insert(Column request, core.String tableId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -170,6 +188,9 @@
     if (tableId == null) {
       throw new core.ArgumentError("Parameter tableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/columns';
 
@@ -192,6 +213,9 @@
   ///
   /// [pageToken] - Continuation token specifying which result page to return.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ColumnList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -200,7 +224,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ColumnList> list(core.String tableId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -217,6 +241,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/columns';
 
@@ -240,6 +267,9 @@
   ///
   /// [columnId] - Name or identifier for the column that is being updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Column].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -248,7 +278,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Column> patch(
-      Column request, core.String tableId, core.String columnId) {
+      Column request, core.String tableId, core.String columnId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -265,6 +296,9 @@
     if (columnId == null) {
       throw new core.ArgumentError("Parameter columnId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -290,6 +324,9 @@
   ///
   /// [columnId] - Name or identifier for the column that is being updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Column].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -298,7 +335,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Column> update(
-      Column request, core.String tableId, core.String columnId) {
+      Column request, core.String tableId, core.String columnId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -315,6 +353,9 @@
     if (columnId == null) {
       throw new core.ArgumentError("Parameter columnId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -363,6 +404,9 @@
   /// numbers for numeric values and parsed geometries for KML values. Default
   /// is true.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -381,6 +425,7 @@
   async.Future sql(core.String sql_1,
       {core.bool hdrs,
       core.bool typed,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -400,6 +445,9 @@
     if (typed != null) {
       _queryParams["typed"] = ["${typed}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -438,6 +486,9 @@
   /// numbers for numeric values and parsed geometries for KML values. Default
   /// is true.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -456,6 +507,7 @@
   async.Future sqlGet(core.String sql_1,
       {core.bool hdrs,
       core.bool typed,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -475,6 +527,9 @@
     if (typed != null) {
       _queryParams["typed"] = ["${typed}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -508,12 +563,16 @@
   ///
   /// [styleId] - Identifier (within a table) for the style being deleted
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String tableId, core.int styleId) {
+  async.Future delete(core.String tableId, core.int styleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -527,6 +586,9 @@
     if (styleId == null) {
       throw new core.ArgumentError("Parameter styleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -552,6 +614,9 @@
   ///
   /// [styleId] - Identifier (integer) for a specific style in a table
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StyleSetting].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -559,7 +624,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<StyleSetting> get(core.String tableId, core.int styleId) {
+  async.Future<StyleSetting> get(core.String tableId, core.int styleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -573,6 +639,9 @@
     if (styleId == null) {
       throw new core.ArgumentError("Parameter styleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -596,6 +665,9 @@
   ///
   /// [tableId] - Table for which a new style is being added
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StyleSetting].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -603,7 +675,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<StyleSetting> insert(StyleSetting request, core.String tableId) {
+  async.Future<StyleSetting> insert(StyleSetting request, core.String tableId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -617,6 +690,9 @@
     if (tableId == null) {
       throw new core.ArgumentError("Parameter tableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/styles';
 
@@ -640,6 +716,9 @@
   /// [pageToken] - Continuation token specifying which result page to return.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StyleSettingList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -648,7 +727,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StyleSettingList> list(core.String tableId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -665,6 +744,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/styles';
 
@@ -687,6 +769,9 @@
   ///
   /// [styleId] - Identifier (within a table) for the style being updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StyleSetting].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -695,7 +780,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StyleSetting> patch(
-      StyleSetting request, core.String tableId, core.int styleId) {
+      StyleSetting request, core.String tableId, core.int styleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -712,6 +798,9 @@
     if (styleId == null) {
       throw new core.ArgumentError("Parameter styleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -737,6 +826,9 @@
   ///
   /// [styleId] - Identifier (within a table) for the style being updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StyleSetting].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -745,7 +837,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StyleSetting> update(
-      StyleSetting request, core.String tableId, core.int styleId) {
+      StyleSetting request, core.String tableId, core.int styleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -762,6 +855,9 @@
     if (styleId == null) {
       throw new core.ArgumentError("Parameter styleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -792,6 +888,9 @@
   /// [copyPresentation] - Whether to also copy tabs, styles, and templates.
   /// Default is false.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Table].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -799,7 +898,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Table> copy(core.String tableId, {core.bool copyPresentation}) {
+  async.Future<Table> copy(core.String tableId,
+      {core.bool copyPresentation, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -813,6 +913,9 @@
     if (copyPresentation != null) {
       _queryParams["copyPresentation"] = ["${copyPresentation}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/copy';
 
@@ -831,12 +934,15 @@
   ///
   /// [tableId] - ID of the table to be deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String tableId) {
+  async.Future delete(core.String tableId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -847,6 +953,9 @@
     if (tableId == null) {
       throw new core.ArgumentError("Parameter tableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -867,6 +976,9 @@
   ///
   /// [tableId] - Identifier for the table being requested.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Table].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -874,7 +986,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Table> get(core.String tableId) {
+  async.Future<Table> get(core.String tableId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -885,6 +997,9 @@
     if (tableId == null) {
       throw new core.ArgumentError("Parameter tableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId');
 
@@ -921,6 +1036,9 @@
   /// [startLine] - The index of the first line from which to start importing,
   /// inclusive. Default is 0.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -940,6 +1058,7 @@
       core.int endLine,
       core.bool isStrict,
       core.int startLine,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -967,6 +1086,9 @@
     if (startLine != null) {
       _queryParams["startLine"] = ["${startLine}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -1004,6 +1126,9 @@
   /// [encoding] - The encoding of the content. Default is UTF-8. Use
   /// auto-detect if you are unsure of the encoding.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -1020,6 +1145,7 @@
   async.Future<Table> importTable(core.String name,
       {core.String delimiter,
       core.String encoding,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -1039,6 +1165,9 @@
     if (encoding != null) {
       _queryParams["encoding"] = [encoding];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -1066,6 +1195,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Table].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1073,7 +1205,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Table> insert(Table request) {
+  async.Future<Table> insert(Table request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1084,6 +1216,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables';
 
@@ -1104,6 +1239,9 @@
   ///
   /// [pageToken] - Continuation token specifying which result page to return.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TableList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1111,7 +1249,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TableList> list({core.int maxResults, core.String pageToken}) {
+  async.Future<TableList> list(
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1125,6 +1264,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables';
 
@@ -1151,6 +1293,9 @@
   /// specified view definition replaces the existing one. Only a view can be
   /// updated with a new definition.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Table].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1159,7 +1304,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Table> patch(Table request, core.String tableId,
-      {core.bool replaceViewDefinition}) {
+      {core.bool replaceViewDefinition, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1176,6 +1321,9 @@
     if (replaceViewDefinition != null) {
       _queryParams["replaceViewDefinition"] = ["${replaceViewDefinition}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId');
 
@@ -1214,6 +1362,9 @@
   /// [startLine] - The index of the first line from which to start importing,
   /// inclusive. Default is 0.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -1233,6 +1384,7 @@
       core.int endLine,
       core.bool isStrict,
       core.int startLine,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -1260,6 +1412,9 @@
     if (startLine != null) {
       _queryParams["startLine"] = ["${startLine}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -1298,6 +1453,9 @@
   /// specified view definition replaces the existing one. Only a view can be
   /// updated with a new definition.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Table].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1306,7 +1464,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Table> update(Table request, core.String tableId,
-      {core.bool replaceViewDefinition}) {
+      {core.bool replaceViewDefinition, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1323,6 +1481,9 @@
     if (replaceViewDefinition != null) {
       _queryParams["replaceViewDefinition"] = ["${replaceViewDefinition}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId');
 
@@ -1350,12 +1511,16 @@
   ///
   /// [taskId] - The identifier of the task to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String tableId, core.String taskId) {
+  async.Future delete(core.String tableId, core.String taskId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1369,6 +1534,9 @@
     if (taskId == null) {
       throw new core.ArgumentError("Parameter taskId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1394,6 +1562,9 @@
   ///
   /// [taskId] - The identifier of the task to get.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Task].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1401,7 +1572,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Task> get(core.String tableId, core.String taskId) {
+  async.Future<Task> get(core.String tableId, core.String taskId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1415,6 +1587,9 @@
     if (taskId == null) {
       throw new core.ArgumentError("Parameter taskId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -1442,6 +1617,9 @@
   ///
   /// [startIndex] - Index of the first result returned in the current page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TaskList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1450,7 +1628,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TaskList> list(core.String tableId,
-      {core.int maxResults, core.String pageToken, core.int startIndex}) {
+      {core.int maxResults,
+      core.String pageToken,
+      core.int startIndex,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1470,6 +1651,9 @@
     if (startIndex != null) {
       _queryParams["startIndex"] = ["${startIndex}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/tasks';
 
@@ -1496,12 +1680,16 @@
   ///
   /// [templateId] - Identifier for the template which is being deleted
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String tableId, core.int templateId) {
+  async.Future delete(core.String tableId, core.int templateId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1515,6 +1703,9 @@
     if (templateId == null) {
       throw new core.ArgumentError("Parameter templateId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1540,6 +1731,9 @@
   ///
   /// [templateId] - Identifier for the template that is being requested
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Template].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1547,7 +1741,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Template> get(core.String tableId, core.int templateId) {
+  async.Future<Template> get(core.String tableId, core.int templateId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1561,6 +1756,9 @@
     if (templateId == null) {
       throw new core.ArgumentError("Parameter templateId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -1584,6 +1782,9 @@
   ///
   /// [tableId] - Table for which a new template is being created
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Template].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1591,7 +1792,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Template> insert(Template request, core.String tableId) {
+  async.Future<Template> insert(Template request, core.String tableId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1605,6 +1807,9 @@
     if (tableId == null) {
       throw new core.ArgumentError("Parameter tableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/templates';
 
@@ -1629,6 +1834,9 @@
   /// [pageToken] - Continuation token specifying which results page to return.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TemplateList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1637,7 +1845,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TemplateList> list(core.String tableId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1654,6 +1862,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' + commons.Escaper.ecapeVariable('$tableId') + '/templates';
 
@@ -1676,6 +1887,9 @@
   ///
   /// [templateId] - Identifier for the template that is being updated
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Template].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1684,7 +1898,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Template> patch(
-      Template request, core.String tableId, core.int templateId) {
+      Template request, core.String tableId, core.int templateId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1701,6 +1916,9 @@
     if (templateId == null) {
       throw new core.ArgumentError("Parameter templateId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
@@ -1726,6 +1944,9 @@
   ///
   /// [templateId] - Identifier for the template that is being updated
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Template].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1734,7 +1955,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Template> update(
-      Template request, core.String tableId, core.int templateId) {
+      Template request, core.String tableId, core.int templateId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1751,6 +1973,9 @@
     if (templateId == null) {
       throw new core.ArgumentError("Parameter templateId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'tables/' +
         commons.Escaper.ecapeVariable('$tableId') +
diff --git a/generated/googleapis/lib/games/v1.dart b/generated/googleapis/lib/games/v1.dart
index aacdb96..95730b8 100644
--- a/generated/googleapis/lib/games/v1.dart
+++ b/generated/googleapis/lib/games/v1.dart
@@ -80,6 +80,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AchievementDefinitionsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -91,7 +94,8 @@
       {core.String consistencyToken,
       core.String language,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -111,6 +115,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'achievements';
 
@@ -145,6 +152,9 @@
   /// by the caller. This number is used at the server to ensure that the
   /// request is handled correctly across retries.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AchievementIncrementResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -154,7 +164,9 @@
   /// this method will complete with the same error.
   async.Future<AchievementIncrementResponse> increment(
       core.String achievementId, core.int stepsToIncrement,
-      {core.String consistencyToken, core.String requestId}) {
+      {core.String consistencyToken,
+      core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -175,6 +187,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'achievements/' +
         commons.Escaper.ecapeVariable('$achievementId') +
@@ -218,6 +233,9 @@
   /// - "REVEALED" : List only revealed achievements.
   /// - "UNLOCKED" : List only unlocked achievements.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlayerAchievementListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -230,7 +248,8 @@
       core.String language,
       core.int maxResults,
       core.String pageToken,
-      core.String state}) {
+      core.String state,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -256,6 +275,9 @@
     if (state != null) {
       _queryParams["state"] = [state];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'players/' +
         commons.Escaper.ecapeVariable('$playerId') +
@@ -280,6 +302,9 @@
   ///
   /// [consistencyToken] - The last-seen mutation timestamp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AchievementRevealResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -288,7 +313,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AchievementRevealResponse> reveal(core.String achievementId,
-      {core.String consistencyToken}) {
+      {core.String consistencyToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -302,6 +327,9 @@
     if (consistencyToken != null) {
       _queryParams["consistencyToken"] = [consistencyToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'achievements/' +
         commons.Escaper.ecapeVariable('$achievementId') +
@@ -330,6 +358,9 @@
   ///
   /// [consistencyToken] - The last-seen mutation timestamp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AchievementSetStepsAtLeastResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -339,7 +370,7 @@
   /// this method will complete with the same error.
   async.Future<AchievementSetStepsAtLeastResponse> setStepsAtLeast(
       core.String achievementId, core.int steps,
-      {core.String consistencyToken}) {
+      {core.String consistencyToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -357,6 +388,9 @@
     if (consistencyToken != null) {
       _queryParams["consistencyToken"] = [consistencyToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'achievements/' +
         commons.Escaper.ecapeVariable('$achievementId') +
@@ -380,6 +414,9 @@
   ///
   /// [consistencyToken] - The last-seen mutation timestamp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AchievementUnlockResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -388,7 +425,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AchievementUnlockResponse> unlock(core.String achievementId,
-      {core.String consistencyToken}) {
+      {core.String consistencyToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -402,6 +439,9 @@
     if (consistencyToken != null) {
       _queryParams["consistencyToken"] = [consistencyToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'achievements/' +
         commons.Escaper.ecapeVariable('$achievementId') +
@@ -425,6 +465,9 @@
   ///
   /// [consistencyToken] - The last-seen mutation timestamp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AchievementUpdateMultipleResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -434,7 +477,8 @@
   /// this method will complete with the same error.
   async.Future<AchievementUpdateMultipleResponse> updateMultiple(
       AchievementUpdateMultipleRequest request,
-      {core.String consistencyToken}) {
+      {core.String consistencyToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -448,6 +492,9 @@
     if (consistencyToken != null) {
       _queryParams["consistencyToken"] = [consistencyToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'achievements/updateMultiple';
 
@@ -488,6 +535,9 @@
   /// - "IOS" : Retrieve applications that can be played on iOS.
   /// - "WEB_APP" : Retrieve applications that can be played on desktop web.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Application].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -498,7 +548,8 @@
   async.Future<Application> get(core.String applicationId,
       {core.String consistencyToken,
       core.String language,
-      core.String platformType}) {
+      core.String platformType,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -518,6 +569,9 @@
     if (platformType != null) {
       _queryParams["platformType"] = [platformType];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'applications/' + commons.Escaper.ecapeVariable('$applicationId');
 
@@ -537,12 +591,15 @@
   ///
   /// [consistencyToken] - The last-seen mutation timestamp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future played({core.String consistencyToken}) {
+  async.Future played({core.String consistencyToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -553,6 +610,9 @@
     if (consistencyToken != null) {
       _queryParams["consistencyToken"] = [consistencyToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -578,6 +638,9 @@
   ///
   /// [consistencyToken] - The last-seen mutation timestamp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ApplicationVerifyResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -586,7 +649,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ApplicationVerifyResponse> verify(core.String applicationId,
-      {core.String consistencyToken}) {
+      {core.String consistencyToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -600,6 +663,9 @@
     if (consistencyToken != null) {
       _queryParams["consistencyToken"] = [consistencyToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'applications/' +
         commons.Escaper.ecapeVariable('$applicationId') +
@@ -638,6 +704,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlayerEventListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -649,7 +718,8 @@
       {core.String consistencyToken,
       core.String language,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -669,6 +739,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'events';
 
@@ -697,6 +770,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EventDefinitionListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -708,7 +784,8 @@
       {core.String consistencyToken,
       core.String language,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -728,6 +805,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'eventDefinitions';
 
@@ -753,6 +833,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EventUpdateResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -761,7 +844,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EventUpdateResponse> record(EventRecordRequest request,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -778,6 +863,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'events';
 
@@ -807,6 +895,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Leaderboard].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -815,7 +906,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Leaderboard> get(core.String leaderboardId,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -832,6 +925,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'leaderboards/' + commons.Escaper.ecapeVariable('$leaderboardId');
 
@@ -860,6 +956,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LeaderboardListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -871,7 +970,8 @@
       {core.String consistencyToken,
       core.String language,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -891,6 +991,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'leaderboards';
 
@@ -915,6 +1018,9 @@
   ///
   /// [consistencyToken] - The last-seen mutation timestamp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MetagameConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -923,7 +1029,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<MetagameConfig> getMetagameConfig(
-      {core.String consistencyToken}) {
+      {core.String consistencyToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -934,6 +1040,9 @@
     if (consistencyToken != null) {
       _queryParams["consistencyToken"] = [consistencyToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'metagameConfig';
 
@@ -971,6 +1080,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CategoryListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -983,7 +1095,8 @@
       {core.String consistencyToken,
       core.String language,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1009,6 +1122,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'players/' +
         commons.Escaper.ecapeVariable('$playerId') +
@@ -1043,6 +1159,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Player].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1051,7 +1170,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Player> get(core.String playerId,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1068,6 +1189,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'players/' + commons.Escaper.ecapeVariable('$playerId');
 
@@ -1108,6 +1232,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlayerListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1119,7 +1246,8 @@
       {core.String consistencyToken,
       core.String language,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1142,6 +1270,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'players/me/players/' + commons.Escaper.ecapeVariable('$collection');
 
@@ -1169,12 +1300,16 @@
   ///
   /// [consistencyToken] - The last-seen mutation timestamp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future remove(PushTokenId request, {core.String consistencyToken}) {
+  async.Future remove(PushTokenId request,
+      {core.String consistencyToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1188,6 +1323,9 @@
     if (consistencyToken != null) {
       _queryParams["consistencyToken"] = [consistencyToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1210,12 +1348,16 @@
   ///
   /// [consistencyToken] - The last-seen mutation timestamp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future update(PushToken request, {core.String consistencyToken}) {
+  async.Future update(PushToken request,
+      {core.String consistencyToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1229,6 +1371,9 @@
     if (consistencyToken != null) {
       _queryParams["consistencyToken"] = [consistencyToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1264,6 +1409,9 @@
   ///
   /// [consistencyToken] - The last-seen mutation timestamp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
@@ -1271,7 +1419,7 @@
   /// this method will complete with the same error.
   async.Future claim(
       core.String questId, core.String milestoneId, core.String requestId,
-      {core.String consistencyToken}) {
+      {core.String consistencyToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1292,6 +1440,9 @@
     if (consistencyToken != null) {
       _queryParams["consistencyToken"] = [consistencyToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1328,6 +1479,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Quest].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1336,7 +1490,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Quest> accept(core.String questId,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1353,6 +1509,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'quests/' + commons.Escaper.ecapeVariable('$questId') + '/accept';
 
@@ -1386,6 +1545,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [QuestListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1397,7 +1559,8 @@
       {core.String consistencyToken,
       core.String language,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1420,6 +1583,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'players/' + commons.Escaper.ecapeVariable('$playerId') + '/quests';
 
@@ -1452,6 +1618,9 @@
   ///
   /// [consistencyToken] - The last-seen mutation timestamp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RevisionCheckResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1460,7 +1629,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RevisionCheckResponse> check(core.String clientRevision,
-      {core.String consistencyToken}) {
+      {core.String consistencyToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1475,6 +1644,9 @@
     if (consistencyToken != null) {
       _queryParams["consistencyToken"] = [consistencyToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'revisions/check';
 
@@ -1505,6 +1677,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Room].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1513,7 +1688,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Room> create(RoomCreateRequest request,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1530,6 +1707,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'rooms/create';
 
@@ -1554,6 +1734,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Room].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1562,7 +1745,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Room> decline(core.String roomId,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1579,6 +1764,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'rooms/' + commons.Escaper.ecapeVariable('$roomId') + '/decline';
 
@@ -1600,12 +1788,16 @@
   ///
   /// [consistencyToken] - The last-seen mutation timestamp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future dismiss(core.String roomId, {core.String consistencyToken}) {
+  async.Future dismiss(core.String roomId,
+      {core.String consistencyToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1619,6 +1811,9 @@
     if (consistencyToken != null) {
       _queryParams["consistencyToken"] = [consistencyToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1644,6 +1839,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Room].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1652,7 +1850,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Room> get(core.String roomId,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1669,6 +1869,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'rooms/' + commons.Escaper.ecapeVariable('$roomId');
 
@@ -1695,6 +1898,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Room].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1703,7 +1909,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Room> join(RoomJoinRequest request, core.String roomId,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1723,6 +1931,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'rooms/' + commons.Escaper.ecapeVariable('$roomId') + '/join';
 
@@ -1749,6 +1960,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Room].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1757,7 +1971,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Room> leave(RoomLeaveRequest request, core.String roomId,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1777,6 +1993,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'rooms/' + commons.Escaper.ecapeVariable('$roomId') + '/leave';
 
@@ -1805,6 +2024,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RoomList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1816,7 +2038,8 @@
       {core.String consistencyToken,
       core.String language,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1836,6 +2059,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'rooms';
 
@@ -1863,6 +2089,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RoomStatus].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1872,7 +2101,9 @@
   /// this method will complete with the same error.
   async.Future<RoomStatus> reportStatus(
       RoomP2PStatuses request, core.String roomId,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1892,6 +2123,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'rooms/' + commons.Escaper.ecapeVariable('$roomId') + '/reportstatus';
@@ -1953,6 +2187,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlayerLeaderboardScoreListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1966,7 +2203,8 @@
       core.String includeRankType,
       core.String language,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1998,6 +2236,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'players/' +
         commons.Escaper.ecapeVariable('$playerId') +
@@ -2046,6 +2287,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LeaderboardScores].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2058,7 +2302,8 @@
       {core.String consistencyToken,
       core.String language,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2088,6 +2333,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'leaderboards/' +
         commons.Escaper.ecapeVariable('$leaderboardId') +
@@ -2141,6 +2389,9 @@
   /// [returnTopIfAbsent] - True if the top scores should be returned when the
   /// player is not in the leaderboard. Defaults to true.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LeaderboardScores].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2155,7 +2406,8 @@
       core.int maxResults,
       core.String pageToken,
       core.int resultsAbove,
-      core.bool returnTopIfAbsent}) {
+      core.bool returnTopIfAbsent,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2191,6 +2443,9 @@
     if (returnTopIfAbsent != null) {
       _queryParams["returnTopIfAbsent"] = ["${returnTopIfAbsent}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'leaderboards/' +
         commons.Escaper.ecapeVariable('$leaderboardId') +
@@ -2229,6 +2484,9 @@
   /// section 2.3 of RFC 3986.
   /// Value must have pattern "[a-zA-Z0-9-._~]{0,64}".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlayerScoreResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2240,7 +2498,8 @@
       core.String leaderboardId, core.String score,
       {core.String consistencyToken,
       core.String language,
-      core.String scoreTag}) {
+      core.String scoreTag,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2264,6 +2523,9 @@
     if (scoreTag != null) {
       _queryParams["scoreTag"] = [scoreTag];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'leaderboards/' +
         commons.Escaper.ecapeVariable('$leaderboardId') +
@@ -2289,6 +2551,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlayerScoreListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2299,7 +2564,8 @@
   async.Future<PlayerScoreListResponse> submitMultiple(
       PlayerScoreSubmissionList request,
       {core.String consistencyToken,
-      core.String language}) {
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2316,6 +2582,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'leaderboards/scores';
 
@@ -2345,6 +2614,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Snapshot].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2353,7 +2625,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Snapshot> get(core.String snapshotId,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2370,6 +2644,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'snapshots/' + commons.Escaper.ecapeVariable('$snapshotId');
 
@@ -2402,6 +2679,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SnapshotListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2413,7 +2693,8 @@
       {core.String consistencyToken,
       core.String language,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2436,6 +2717,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'players/' + commons.Escaper.ecapeVariable('$playerId') + '/snapshots';
@@ -2464,12 +2748,16 @@
   ///
   /// [consistencyToken] - The last-seen mutation timestamp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future cancel(core.String matchId, {core.String consistencyToken}) {
+  async.Future cancel(core.String matchId,
+      {core.String consistencyToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2483,6 +2771,9 @@
     if (consistencyToken != null) {
       _queryParams["consistencyToken"] = [consistencyToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2510,6 +2801,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TurnBasedMatch].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2518,7 +2812,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TurnBasedMatch> create(TurnBasedMatchCreateRequest request,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2535,6 +2831,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'turnbasedmatches/create';
 
@@ -2558,6 +2857,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TurnBasedMatch].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2566,7 +2868,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TurnBasedMatch> decline(core.String matchId,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2583,6 +2887,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'turnbasedmatches/' +
         commons.Escaper.ecapeVariable('$matchId') +
@@ -2606,12 +2913,16 @@
   ///
   /// [consistencyToken] - The last-seen mutation timestamp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future dismiss(core.String matchId, {core.String consistencyToken}) {
+  async.Future dismiss(core.String matchId,
+      {core.String consistencyToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2625,6 +2936,9 @@
     if (consistencyToken != null) {
       _queryParams["consistencyToken"] = [consistencyToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2656,6 +2970,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TurnBasedMatch].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2665,7 +2982,9 @@
   /// this method will complete with the same error.
   async.Future<TurnBasedMatch> finish(
       TurnBasedMatchResults request, core.String matchId,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2685,6 +3004,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'turnbasedmatches/' +
         commons.Escaper.ecapeVariable('$matchId') +
@@ -2712,6 +3034,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TurnBasedMatch].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2722,7 +3047,8 @@
   async.Future<TurnBasedMatch> get(core.String matchId,
       {core.String consistencyToken,
       core.bool includeMatchData,
-      core.String language}) {
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2742,6 +3068,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'turnbasedmatches/' + commons.Escaper.ecapeVariable('$matchId');
 
@@ -2765,6 +3094,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TurnBasedMatch].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2773,7 +3105,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TurnBasedMatch> join(core.String matchId,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2790,6 +3124,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'turnbasedmatches/' +
         commons.Escaper.ecapeVariable('$matchId') +
@@ -2816,6 +3153,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TurnBasedMatch].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2824,7 +3164,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TurnBasedMatch> leave(core.String matchId,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2841,6 +3183,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'turnbasedmatches/' +
         commons.Escaper.ecapeVariable('$matchId') +
@@ -2874,6 +3219,9 @@
   /// join via automatching; this is only valid if automatch criteria is set on
   /// the match with remaining slots for automatched players.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TurnBasedMatch].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2885,7 +3233,8 @@
       core.String matchId, core.int matchVersion,
       {core.String consistencyToken,
       core.String language,
-      core.String pendingParticipantId}) {
+      core.String pendingParticipantId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2909,6 +3258,9 @@
     if (pendingParticipantId != null) {
       _queryParams["pendingParticipantId"] = [pendingParticipantId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'turnbasedmatches/' +
         commons.Escaper.ecapeVariable('$matchId') +
@@ -2950,6 +3302,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TurnBasedMatchList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2963,7 +3318,8 @@
       core.String language,
       core.int maxCompletedMatches,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2989,6 +3345,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'turnbasedmatches';
 
@@ -3019,6 +3378,9 @@
   /// by the caller. This number is used at the server to ensure that the
   /// request is handled correctly across retries.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TurnBasedMatchRematch].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3029,7 +3391,8 @@
   async.Future<TurnBasedMatchRematch> rematch(core.String matchId,
       {core.String consistencyToken,
       core.String language,
-      core.String requestId}) {
+      core.String requestId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3049,6 +3412,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'turnbasedmatches/' +
         commons.Escaper.ecapeVariable('$matchId') +
@@ -3093,6 +3459,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TurnBasedMatchSync].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3106,7 +3475,8 @@
       core.String language,
       core.int maxCompletedMatches,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3132,6 +3502,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'turnbasedmatches/sync';
 
@@ -3157,6 +3530,9 @@
   /// [language] - The preferred language to use for strings returned by this
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TurnBasedMatch].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3166,7 +3542,9 @@
   /// this method will complete with the same error.
   async.Future<TurnBasedMatch> takeTurn(
       TurnBasedMatchTurn request, core.String matchId,
-      {core.String consistencyToken, core.String language}) {
+      {core.String consistencyToken,
+      core.String language,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3186,6 +3564,9 @@
     if (language != null) {
       _queryParams["language"] = [language];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'turnbasedmatches/' +
         commons.Escaper.ecapeVariable('$matchId') +
diff --git a/generated/googleapis/lib/gamesconfiguration/v1configuration.dart b/generated/googleapis/lib/gamesconfiguration/v1configuration.dart
index fa7a776..6e28727 100644
--- a/generated/googleapis/lib/gamesconfiguration/v1configuration.dart
+++ b/generated/googleapis/lib/gamesconfiguration/v1configuration.dart
@@ -57,12 +57,15 @@
   ///
   /// [achievementId] - The ID of the achievement used by this method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String achievementId) {
+  async.Future delete(core.String achievementId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -73,6 +76,9 @@
     if (achievementId == null) {
       throw new core.ArgumentError("Parameter achievementId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -93,6 +99,9 @@
   ///
   /// [achievementId] - The ID of the achievement used by this method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AchievementConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -100,7 +109,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AchievementConfiguration> get(core.String achievementId) {
+  async.Future<AchievementConfiguration> get(core.String achievementId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -111,6 +121,9 @@
     if (achievementId == null) {
       throw new core.ArgumentError("Parameter achievementId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'achievements/' + commons.Escaper.ecapeVariable('$achievementId');
 
@@ -133,6 +146,9 @@
   /// [applicationId] - The application ID from the Google Play developer
   /// console.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AchievementConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -141,7 +157,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AchievementConfiguration> insert(
-      AchievementConfiguration request, core.String applicationId) {
+      AchievementConfiguration request, core.String applicationId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -155,6 +172,9 @@
     if (applicationId == null) {
       throw new core.ArgumentError("Parameter applicationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'applications/' +
         commons.Escaper.ecapeVariable('$applicationId') +
@@ -184,6 +204,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AchievementConfigurationListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -194,7 +217,8 @@
   async.Future<AchievementConfigurationListResponse> list(
       core.String applicationId,
       {core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -211,6 +235,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'applications/' +
         commons.Escaper.ecapeVariable('$applicationId') +
@@ -235,6 +262,9 @@
   ///
   /// [achievementId] - The ID of the achievement used by this method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AchievementConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -243,7 +273,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AchievementConfiguration> patch(
-      AchievementConfiguration request, core.String achievementId) {
+      AchievementConfiguration request, core.String achievementId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -257,6 +288,9 @@
     if (achievementId == null) {
       throw new core.ArgumentError("Parameter achievementId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'achievements/' + commons.Escaper.ecapeVariable('$achievementId');
 
@@ -278,6 +312,9 @@
   ///
   /// [achievementId] - The ID of the achievement used by this method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AchievementConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -286,7 +323,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AchievementConfiguration> update(
-      AchievementConfiguration request, core.String achievementId) {
+      AchievementConfiguration request, core.String achievementId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -300,6 +338,9 @@
     if (achievementId == null) {
       throw new core.ArgumentError("Parameter achievementId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'achievements/' + commons.Escaper.ecapeVariable('$achievementId');
 
@@ -331,6 +372,9 @@
   /// - "ACHIEVEMENT_ICON" : The icon image for an achievement resource.
   /// - "LEADERBOARD_ICON" : The icon image for a leaderboard resource.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -346,7 +390,8 @@
   /// this method will complete with the same error.
   async.Future<ImageConfiguration> upload(
       core.String resourceId, core.String imageType,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -361,6 +406,9 @@
     if (imageType == null) {
       throw new core.ArgumentError("Parameter imageType is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -404,12 +452,15 @@
   ///
   /// [leaderboardId] - The ID of the leaderboard.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String leaderboardId) {
+  async.Future delete(core.String leaderboardId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -420,6 +471,9 @@
     if (leaderboardId == null) {
       throw new core.ArgumentError("Parameter leaderboardId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -440,6 +494,9 @@
   ///
   /// [leaderboardId] - The ID of the leaderboard.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LeaderboardConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -447,7 +504,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LeaderboardConfiguration> get(core.String leaderboardId) {
+  async.Future<LeaderboardConfiguration> get(core.String leaderboardId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -458,6 +516,9 @@
     if (leaderboardId == null) {
       throw new core.ArgumentError("Parameter leaderboardId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'leaderboards/' + commons.Escaper.ecapeVariable('$leaderboardId');
 
@@ -480,6 +541,9 @@
   /// [applicationId] - The application ID from the Google Play developer
   /// console.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LeaderboardConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -488,7 +552,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LeaderboardConfiguration> insert(
-      LeaderboardConfiguration request, core.String applicationId) {
+      LeaderboardConfiguration request, core.String applicationId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -502,6 +567,9 @@
     if (applicationId == null) {
       throw new core.ArgumentError("Parameter applicationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'applications/' +
         commons.Escaper.ecapeVariable('$applicationId') +
@@ -531,6 +599,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LeaderboardConfigurationListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -541,7 +612,8 @@
   async.Future<LeaderboardConfigurationListResponse> list(
       core.String applicationId,
       {core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -558,6 +630,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'applications/' +
         commons.Escaper.ecapeVariable('$applicationId') +
@@ -582,6 +657,9 @@
   ///
   /// [leaderboardId] - The ID of the leaderboard.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LeaderboardConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -590,7 +668,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LeaderboardConfiguration> patch(
-      LeaderboardConfiguration request, core.String leaderboardId) {
+      LeaderboardConfiguration request, core.String leaderboardId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -604,6 +683,9 @@
     if (leaderboardId == null) {
       throw new core.ArgumentError("Parameter leaderboardId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'leaderboards/' + commons.Escaper.ecapeVariable('$leaderboardId');
 
@@ -625,6 +707,9 @@
   ///
   /// [leaderboardId] - The ID of the leaderboard.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LeaderboardConfiguration].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -633,7 +718,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LeaderboardConfiguration> update(
-      LeaderboardConfiguration request, core.String leaderboardId) {
+      LeaderboardConfiguration request, core.String leaderboardId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -647,6 +733,9 @@
     if (leaderboardId == null) {
       throw new core.ArgumentError("Parameter leaderboardId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'leaderboards/' + commons.Escaper.ecapeVariable('$leaderboardId');
 
diff --git a/generated/googleapis/lib/gamesmanagement/v1management.dart b/generated/googleapis/lib/gamesmanagement/v1management.dart
index a96ace7..7464201 100644
--- a/generated/googleapis/lib/gamesmanagement/v1management.dart
+++ b/generated/googleapis/lib/gamesmanagement/v1management.dart
@@ -57,6 +57,9 @@
   ///
   /// [achievementId] - The ID of the achievement used by this method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AchievementResetResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -64,7 +67,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AchievementResetResponse> reset(core.String achievementId) {
+  async.Future<AchievementResetResponse> reset(core.String achievementId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -75,6 +79,9 @@
     if (achievementId == null) {
       throw new core.ArgumentError("Parameter achievementId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'achievements/' +
         commons.Escaper.ecapeVariable('$achievementId') +
@@ -96,6 +103,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AchievementResetAllResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -103,7 +113,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AchievementResetAllResponse> resetAll() {
+  async.Future<AchievementResetAllResponse> resetAll({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -111,6 +121,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'achievements/reset';
 
     var _response = _requester.request(_url, "POST",
@@ -128,12 +142,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future resetAllForAllPlayers() {
+  async.Future resetAllForAllPlayers({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -141,6 +158,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _downloadOptions = null;
 
     _url = 'achievements/resetAllForAllPlayers';
@@ -162,12 +183,16 @@
   ///
   /// [achievementId] - The ID of the achievement used by this method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future resetForAllPlayers(core.String achievementId) {
+  async.Future resetForAllPlayers(core.String achievementId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -178,6 +203,9 @@
     if (achievementId == null) {
       throw new core.ArgumentError("Parameter achievementId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -202,13 +230,17 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future resetMultipleForAllPlayers(
-      AchievementResetMultipleForAllRequest request) {
+      AchievementResetMultipleForAllRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -219,6 +251,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -254,6 +289,9 @@
   ///
   /// [pageToken] - The token returned by the previous request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [HiddenPlayerList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -262,7 +300,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<HiddenPlayerList> listHidden(core.String applicationId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -279,6 +317,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'applications/' +
         commons.Escaper.ecapeVariable('$applicationId') +
@@ -308,12 +349,15 @@
   ///
   /// [eventId] - The ID of the event.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future reset(core.String eventId) {
+  async.Future reset(core.String eventId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -324,6 +368,9 @@
     if (eventId == null) {
       throw new core.ArgumentError("Parameter eventId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -344,12 +391,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future resetAll() {
+  async.Future resetAll({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -357,6 +407,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _downloadOptions = null;
 
     _url = 'events/reset';
@@ -376,12 +430,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future resetAllForAllPlayers() {
+  async.Future resetAllForAllPlayers({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -389,6 +446,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _downloadOptions = null;
 
     _url = 'events/resetAllForAllPlayers';
@@ -410,12 +471,15 @@
   ///
   /// [eventId] - The ID of the event.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future resetForAllPlayers(core.String eventId) {
+  async.Future resetForAllPlayers(core.String eventId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -426,6 +490,9 @@
     if (eventId == null) {
       throw new core.ArgumentError("Parameter eventId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -450,13 +517,17 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future resetMultipleForAllPlayers(
-      EventsResetMultipleForAllRequest request) {
+      EventsResetMultipleForAllRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -467,6 +538,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -498,12 +572,16 @@
   /// [playerId] - A player ID. A value of me may be used in place of the
   /// authenticated player's ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future hide(core.String applicationId, core.String playerId) {
+  async.Future hide(core.String applicationId, core.String playerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -517,6 +595,9 @@
     if (playerId == null) {
       throw new core.ArgumentError("Parameter playerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -545,12 +626,16 @@
   /// [playerId] - A player ID. A value of me may be used in place of the
   /// authenticated player's ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future unhide(core.String applicationId, core.String playerId) {
+  async.Future unhide(core.String applicationId, core.String playerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -564,6 +649,9 @@
     if (playerId == null) {
       throw new core.ArgumentError("Parameter playerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -595,12 +683,15 @@
   ///
   /// [questId] - The ID of the quest.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future reset(core.String questId) {
+  async.Future reset(core.String questId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -611,6 +702,9 @@
     if (questId == null) {
       throw new core.ArgumentError("Parameter questId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -631,12 +725,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future resetAll() {
+  async.Future resetAll({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -644,6 +741,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _downloadOptions = null;
 
     _url = 'quests/reset';
@@ -662,12 +763,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future resetAllForAllPlayers() {
+  async.Future resetAllForAllPlayers({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -675,6 +779,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _downloadOptions = null;
 
     _url = 'quests/resetAllForAllPlayers';
@@ -696,12 +804,15 @@
   ///
   /// [questId] - The ID of the quest.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future resetForAllPlayers(core.String questId) {
+  async.Future resetForAllPlayers(core.String questId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -712,6 +823,9 @@
     if (questId == null) {
       throw new core.ArgumentError("Parameter questId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -736,13 +850,17 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future resetMultipleForAllPlayers(
-      QuestsResetMultipleForAllRequest request) {
+      QuestsResetMultipleForAllRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -753,6 +871,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -779,12 +900,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future reset() {
+  async.Future reset({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -792,6 +916,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _downloadOptions = null;
 
     _url = 'rooms/reset';
@@ -811,12 +939,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future resetForAllPlayers() {
+  async.Future resetForAllPlayers({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -824,6 +955,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _downloadOptions = null;
 
     _url = 'rooms/resetForAllPlayers';
@@ -851,6 +986,9 @@
   ///
   /// [leaderboardId] - The ID of the leaderboard.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlayerScoreResetResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -858,7 +996,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PlayerScoreResetResponse> reset(core.String leaderboardId) {
+  async.Future<PlayerScoreResetResponse> reset(core.String leaderboardId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -869,6 +1008,9 @@
     if (leaderboardId == null) {
       throw new core.ArgumentError("Parameter leaderboardId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'leaderboards/' +
         commons.Escaper.ecapeVariable('$leaderboardId') +
@@ -890,6 +1032,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlayerScoreResetAllResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -897,7 +1042,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PlayerScoreResetAllResponse> resetAll() {
+  async.Future<PlayerScoreResetAllResponse> resetAll({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -905,6 +1050,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'scores/reset';
 
     var _response = _requester.request(_url, "POST",
@@ -922,12 +1071,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future resetAllForAllPlayers() {
+  async.Future resetAllForAllPlayers({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -935,6 +1087,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _downloadOptions = null;
 
     _url = 'scores/resetAllForAllPlayers';
@@ -956,12 +1112,16 @@
   ///
   /// [leaderboardId] - The ID of the leaderboard.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future resetForAllPlayers(core.String leaderboardId) {
+  async.Future resetForAllPlayers(core.String leaderboardId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -972,6 +1132,9 @@
     if (leaderboardId == null) {
       throw new core.ArgumentError("Parameter leaderboardId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -996,13 +1159,17 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future resetMultipleForAllPlayers(
-      ScoresResetMultipleForAllRequest request) {
+      ScoresResetMultipleForAllRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1013,6 +1180,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1039,12 +1209,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future reset() {
+  async.Future reset({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1052,6 +1225,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _downloadOptions = null;
 
     _url = 'turnbasedmatches/reset';
@@ -1071,12 +1248,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future resetForAllPlayers() {
+  async.Future resetForAllPlayers({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1084,6 +1264,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _downloadOptions = null;
 
     _url = 'turnbasedmatches/resetForAllPlayers';
diff --git a/generated/googleapis/lib/genomics/v1.dart b/generated/googleapis/lib/genomics/v1.dart
index 10bb5c1..4ac889a 100644
--- a/generated/googleapis/lib/genomics/v1.dart
+++ b/generated/googleapis/lib/genomics/v1.dart
@@ -84,6 +84,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchCreateAnnotationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -92,7 +95,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchCreateAnnotationsResponse> batchCreate(
-      BatchCreateAnnotationsRequest request) {
+      BatchCreateAnnotationsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -103,6 +107,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/annotations:batchCreate';
 
@@ -143,6 +150,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Annotation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -150,7 +160,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Annotation> create(Annotation request) {
+  async.Future<Annotation> create(Annotation request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -161,6 +171,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/annotations';
 
@@ -180,6 +193,9 @@
   ///
   /// [annotationId] - The ID of the annotation to be deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -187,7 +203,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String annotationId) {
+  async.Future<Empty> delete(core.String annotationId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -198,6 +214,9 @@
     if (annotationId == null) {
       throw new core.ArgumentError("Parameter annotationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/annotations/' + commons.Escaper.ecapeVariable('$annotationId');
 
@@ -217,6 +236,9 @@
   ///
   /// [annotationId] - The ID of the annotation to be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Annotation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -224,7 +246,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Annotation> get(core.String annotationId) {
+  async.Future<Annotation> get(core.String annotationId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -235,6 +258,9 @@
     if (annotationId == null) {
       throw new core.ArgumentError("Parameter annotationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/annotations/' + commons.Escaper.ecapeVariable('$annotationId');
 
@@ -259,6 +285,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchAnnotationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -267,7 +296,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SearchAnnotationsResponse> search(
-      SearchAnnotationsRequest request) {
+      SearchAnnotationsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -278,6 +308,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/annotations/search';
 
@@ -308,6 +341,9 @@
   /// info. If unspecified, all mutable
   /// fields will be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Annotation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -316,7 +352,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Annotation> update(Annotation request, core.String annotationId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -333,6 +369,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/annotations/' + commons.Escaper.ecapeVariable('$annotationId');
 
@@ -366,6 +405,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnnotationSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -373,7 +415,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AnnotationSet> create(AnnotationSet request) {
+  async.Future<AnnotationSet> create(AnnotationSet request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -384,6 +427,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/annotationsets';
 
@@ -403,6 +449,9 @@
   ///
   /// [annotationSetId] - The ID of the annotation set to be deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -410,7 +459,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String annotationSetId) {
+  async.Future<Empty> delete(core.String annotationSetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -421,6 +471,9 @@
     if (annotationSetId == null) {
       throw new core.ArgumentError("Parameter annotationSetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/annotationsets/' +
         commons.Escaper.ecapeVariable('$annotationSetId');
@@ -441,6 +494,9 @@
   ///
   /// [annotationSetId] - The ID of the annotation set to be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnnotationSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -448,7 +504,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AnnotationSet> get(core.String annotationSetId) {
+  async.Future<AnnotationSet> get(core.String annotationSetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -459,6 +516,9 @@
     if (annotationSetId == null) {
       throw new core.ArgumentError("Parameter annotationSetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/annotationsets/' +
         commons.Escaper.ecapeVariable('$annotationSetId');
@@ -484,6 +544,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchAnnotationSetsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -492,7 +555,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SearchAnnotationSetsResponse> search(
-      SearchAnnotationSetsRequest request) {
+      SearchAnnotationSetsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -503,6 +567,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/annotationsets/search';
 
@@ -534,6 +601,9 @@
   /// info. If unspecified, all
   /// mutable fields will be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnnotationSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -543,7 +613,7 @@
   /// this method will complete with the same error.
   async.Future<AnnotationSet> update(
       AnnotationSet request, core.String annotationSetId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -560,6 +630,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/annotationsets/' +
         commons.Escaper.ecapeVariable('$annotationSetId');
@@ -589,6 +662,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CallSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -596,7 +672,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CallSet> create(CallSet request) {
+  async.Future<CallSet> create(CallSet request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -607,6 +683,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/callsets';
 
@@ -629,6 +708,9 @@
   ///
   /// [callSetId] - The ID of the call set to be deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -636,7 +718,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String callSetId) {
+  async.Future<Empty> delete(core.String callSetId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -647,6 +729,9 @@
     if (callSetId == null) {
       throw new core.ArgumentError("Parameter callSetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/callsets/' + commons.Escaper.ecapeVariable('$callSetId');
 
@@ -669,6 +754,9 @@
   ///
   /// [callSetId] - The ID of the call set.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CallSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -676,7 +764,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CallSet> get(core.String callSetId) {
+  async.Future<CallSet> get(core.String callSetId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -687,6 +775,9 @@
     if (callSetId == null) {
       throw new core.ArgumentError("Parameter callSetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/callsets/' + commons.Escaper.ecapeVariable('$callSetId');
 
@@ -719,6 +810,9 @@
   /// acceptable value is "name". If unspecified, all mutable fields will be
   /// updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CallSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -727,7 +821,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CallSet> patch(CallSet request, core.String callSetId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -744,6 +838,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/callsets/' + commons.Escaper.ecapeVariable('$callSetId');
 
@@ -769,6 +866,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchCallSetsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -776,7 +876,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SearchCallSetsResponse> search(SearchCallSetsRequest request) {
+  async.Future<SearchCallSetsResponse> search(SearchCallSetsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -787,6 +888,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/callsets/search';
 
@@ -815,6 +919,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Dataset].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -822,7 +929,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Dataset> create(Dataset request) {
+  async.Future<Dataset> create(Dataset request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -833,6 +940,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/datasets';
 
@@ -860,6 +970,9 @@
   ///
   /// [datasetId] - The ID of the dataset to be deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -867,7 +980,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String datasetId) {
+  async.Future<Empty> delete(core.String datasetId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -878,6 +991,9 @@
     if (datasetId == null) {
       throw new core.ArgumentError("Parameter datasetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/datasets/' + commons.Escaper.ecapeVariable('$datasetId');
 
@@ -900,6 +1016,9 @@
   ///
   /// [datasetId] - The ID of the dataset.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Dataset].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -907,7 +1026,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Dataset> get(core.String datasetId) {
+  async.Future<Dataset> get(core.String datasetId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -918,6 +1037,9 @@
     if (datasetId == null) {
       throw new core.ArgumentError("Parameter datasetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/datasets/' + commons.Escaper.ecapeVariable('$datasetId');
 
@@ -949,6 +1071,9 @@
   /// `datasets/<dataset ID>`.
   /// Value must have pattern "^datasets/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -957,7 +1082,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> getIamPolicy(
-      GetIamPolicyRequest request, core.String resource) {
+      GetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -971,6 +1097,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -993,16 +1122,19 @@
   ///
   /// Request parameters:
   ///
+  /// [pageToken] - The continuation token, which is used to page through large
+  /// result sets.
+  /// To get the next page of results, set this parameter to the value of
+  /// `nextPageToken` from the previous response.
+  ///
   /// [pageSize] - The maximum number of results to return in a single page. If
   /// unspecified,
   /// defaults to 50. The maximum value is 1024.
   ///
   /// [projectId] - Required. The Google Cloud project ID to list datasets for.
   ///
-  /// [pageToken] - The continuation token, which is used to page through large
-  /// result sets.
-  /// To get the next page of results, set this parameter to the value of
-  /// `nextPageToken` from the previous response.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListDatasetsResponse].
   ///
@@ -1012,7 +1144,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListDatasetsResponse> list(
-      {core.int pageSize, core.String projectId, core.String pageToken}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String projectId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1020,14 +1155,17 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/datasets';
@@ -1061,6 +1199,9 @@
   /// acceptable value is "name". If unspecified, all mutable fields will be
   /// updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Dataset].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1069,7 +1210,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Dataset> patch(Dataset request, core.String datasetId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1086,6 +1227,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/datasets/' + commons.Escaper.ecapeVariable('$datasetId');
 
@@ -1117,6 +1261,9 @@
   /// `datasets/<dataset ID>`.
   /// Value must have pattern "^datasets/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1125,7 +1272,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1139,6 +1287,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1170,6 +1321,9 @@
   /// `datasets/<dataset ID>`.
   /// Value must have pattern "^datasets/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1178,7 +1332,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1192,6 +1347,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1221,6 +1379,9 @@
   ///
   /// [datasetId] - The ID of the dataset to be undeleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Dataset].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1229,7 +1390,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Dataset> undelete(
-      UndeleteDatasetRequest request, core.String datasetId) {
+      UndeleteDatasetRequest request, core.String datasetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1243,6 +1405,9 @@
     if (datasetId == null) {
       throw new core.ArgumentError("Parameter datasetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/datasets/' +
         commons.Escaper.ecapeVariable('$datasetId') +
@@ -1276,6 +1441,9 @@
   /// [name] - The name of the operation resource to be cancelled.
   /// Value must have pattern "^operations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1283,7 +1451,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> cancel(CancelOperationRequest request, core.String name) {
+  async.Future<Empty> cancel(CancelOperationRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1297,6 +1466,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':cancel';
 
@@ -1318,6 +1490,9 @@
   /// [name] - The name of the operation resource.
   /// Value must have pattern "^operations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1325,7 +1500,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String name) {
+  async.Future<Operation> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1336,6 +1511,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1381,6 +1559,9 @@
   /// defaults to
   /// 256. The maximum value is 2048.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOperationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1389,7 +1570,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOperationsResponse> list(core.String name,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1409,6 +1593,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1442,6 +1629,9 @@
   /// must have WRITE
   /// permissions to the dataset associated with this read group set.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1449,7 +1639,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String readGroupSetId) {
+  async.Future<Empty> delete(core.String readGroupSetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1460,6 +1651,9 @@
     if (readGroupSetId == null) {
       throw new core.ArgumentError("Parameter readGroupSetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/readgroupsets/' + commons.Escaper.ecapeVariable('$readGroupSetId');
@@ -1492,6 +1686,9 @@
   /// caller must have
   /// READ access to this read group set.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1500,7 +1697,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> export(
-      ExportReadGroupSetRequest request, core.String readGroupSetId) {
+      ExportReadGroupSetRequest request, core.String readGroupSetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1514,6 +1712,9 @@
     if (readGroupSetId == null) {
       throw new core.ArgumentError("Parameter readGroupSetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/readgroupsets/' +
         commons.Escaper.ecapeVariable('$readGroupSetId') +
@@ -1538,6 +1739,9 @@
   ///
   /// [readGroupSetId] - The ID of the read group set.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ReadGroupSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1545,7 +1749,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ReadGroupSet> get(core.String readGroupSetId) {
+  async.Future<ReadGroupSet> get(core.String readGroupSetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1556,6 +1761,9 @@
     if (readGroupSetId == null) {
       throw new core.ArgumentError("Parameter readGroupSetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/readgroupsets/' + commons.Escaper.ecapeVariable('$readGroupSetId');
@@ -1593,6 +1801,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1600,7 +1811,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> import(ImportReadGroupSetsRequest request) {
+  async.Future<Operation> import(ImportReadGroupSetsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1611,6 +1823,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/readgroupsets:import';
 
@@ -1648,6 +1863,9 @@
   /// Leaving `updateMask` unset is equivalent to specifying all mutable
   /// fields.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ReadGroupSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1657,7 +1875,7 @@
   /// this method will complete with the same error.
   async.Future<ReadGroupSet> patch(
       ReadGroupSet request, core.String readGroupSetId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1674,6 +1892,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/readgroupsets/' + commons.Escaper.ecapeVariable('$readGroupSetId');
@@ -1700,6 +1921,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchReadGroupSetsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1708,7 +1932,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SearchReadGroupSetsResponse> search(
-      SearchReadGroupSetsRequest request) {
+      SearchReadGroupSetsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1719,6 +1944,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/readgroupsets/search';
 
@@ -1789,6 +2017,9 @@
   /// set associated
   /// with this query. Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListCoverageBucketsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1802,7 +2033,8 @@
       core.int pageSize,
       core.String start,
       core.String targetBucketWidth,
-      core.String referenceName}) {
+      core.String referenceName,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1831,6 +2063,9 @@
     if (referenceName != null) {
       _queryParams["referenceName"] = [referenceName];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/readgroupsets/' +
         commons.Escaper.ecapeVariable('$readGroupSetId') +
@@ -1884,6 +2119,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchReadsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1891,7 +2129,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SearchReadsResponse> search(SearchReadsRequest request) {
+  async.Future<SearchReadsResponse> search(SearchReadsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1902,6 +2141,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/reads/search';
 
@@ -1936,6 +2178,9 @@
   ///
   /// [referenceId] - The ID of the reference.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Reference].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1943,7 +2188,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Reference> get(core.String referenceId) {
+  async.Future<Reference> get(core.String referenceId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1954,6 +2199,9 @@
     if (referenceId == null) {
       throw new core.ArgumentError("Parameter referenceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/references/' + commons.Escaper.ecapeVariable('$referenceId');
 
@@ -1979,6 +2227,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchReferencesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1986,8 +2237,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SearchReferencesResponse> search(
-      SearchReferencesRequest request) {
+  async.Future<SearchReferencesResponse> search(SearchReferencesRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1998,6 +2249,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/references/search';
 
@@ -2030,6 +2284,11 @@
   ///
   /// [referenceId] - The ID of the reference.
   ///
+  /// [pageToken] - The continuation token, which is used to page through large
+  /// result sets.
+  /// To get the next page of results, set this parameter to the value of
+  /// `nextPageToken` from the previous response.
+  ///
   /// [pageSize] - The maximum number of bases to return in a single page. If
   /// unspecified,
   /// defaults to 200Kbp (kilo base pairs). The maximum value is 10Mbp (mega
@@ -2042,10 +2301,8 @@
   /// the length
   /// of this reference.
   ///
-  /// [pageToken] - The continuation token, which is used to page through large
-  /// result sets.
-  /// To get the next page of results, set this parameter to the value of
-  /// `nextPageToken` from the previous response.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListBasesResponse].
   ///
@@ -2055,10 +2312,11 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListBasesResponse> list(core.String referenceId,
-      {core.int pageSize,
+      {core.String pageToken,
+      core.int pageSize,
       core.String start,
       core.String end,
-      core.String pageToken}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2069,6 +2327,9 @@
     if (referenceId == null) {
       throw new core.ArgumentError("Parameter referenceId is required.");
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
@@ -2078,8 +2339,8 @@
     if (end != null) {
       _queryParams["end"] = [end];
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/references/' +
@@ -2114,6 +2375,9 @@
   ///
   /// [referenceSetId] - The ID of the reference set.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ReferenceSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2121,7 +2385,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ReferenceSet> get(core.String referenceSetId) {
+  async.Future<ReferenceSet> get(core.String referenceSetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2132,6 +2397,9 @@
     if (referenceSetId == null) {
       throw new core.ArgumentError("Parameter referenceSetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/referencesets/' + commons.Escaper.ecapeVariable('$referenceSetId');
@@ -2158,6 +2426,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchReferenceSetsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2166,7 +2437,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SearchReferenceSetsResponse> search(
-      SearchReferenceSetsRequest request) {
+      SearchReferenceSetsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2177,6 +2449,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/referencesets/search';
 
@@ -2206,6 +2481,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Variant].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2213,7 +2491,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Variant> create(Variant request) {
+  async.Future<Variant> create(Variant request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2224,6 +2502,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/variants';
 
@@ -2246,6 +2527,9 @@
   ///
   /// [variantId] - The ID of the variant to be deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2253,7 +2537,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String variantId) {
+  async.Future<Empty> delete(core.String variantId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2264,6 +2548,9 @@
     if (variantId == null) {
       throw new core.ArgumentError("Parameter variantId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/variants/' + commons.Escaper.ecapeVariable('$variantId');
 
@@ -2286,6 +2573,9 @@
   ///
   /// [variantId] - The ID of the variant.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Variant].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2293,7 +2583,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Variant> get(core.String variantId) {
+  async.Future<Variant> get(core.String variantId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2304,6 +2594,9 @@
     if (variantId == null) {
       throw new core.ArgumentError("Parameter variantId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/variants/' + commons.Escaper.ecapeVariable('$variantId');
 
@@ -2341,6 +2634,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2348,7 +2644,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> import(ImportVariantsRequest request) {
+  async.Future<Operation> import(ImportVariantsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2359,6 +2656,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/variants:import';
 
@@ -2467,6 +2767,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2474,7 +2777,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> merge(MergeVariantsRequest request) {
+  async.Future<Empty> merge(MergeVariantsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2485,6 +2789,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/variants:merge';
 
@@ -2518,6 +2825,9 @@
   /// info. Acceptable values are "names" and
   /// "info". If unspecified, all mutable fields will be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Variant].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2526,7 +2836,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Variant> patch(Variant request, core.String variantId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2543,6 +2853,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/variants/' + commons.Escaper.ecapeVariable('$variantId');
 
@@ -2568,6 +2881,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchVariantsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2575,7 +2891,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SearchVariantsResponse> search(SearchVariantsRequest request) {
+  async.Future<SearchVariantsResponse> search(SearchVariantsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2586,6 +2903,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/variants/search';
 
@@ -2618,6 +2938,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VariantSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2625,7 +2948,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<VariantSet> create(VariantSet request) {
+  async.Future<VariantSet> create(VariantSet request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2636,6 +2959,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/variantsets';
 
@@ -2659,6 +2985,9 @@
   ///
   /// [variantSetId] - The ID of the variant set to be deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2666,7 +2995,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String variantSetId) {
+  async.Future<Empty> delete(core.String variantSetId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2677,6 +3006,9 @@
     if (variantSetId == null) {
       throw new core.ArgumentError("Parameter variantSetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/variantsets/' + commons.Escaper.ecapeVariable('$variantSetId');
 
@@ -2703,6 +3035,9 @@
   /// data which
   /// should be exported. The caller must have READ access to this variant set.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2711,7 +3046,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> export(
-      ExportVariantSetRequest request, core.String variantSetId) {
+      ExportVariantSetRequest request, core.String variantSetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2725,6 +3061,9 @@
     if (variantSetId == null) {
       throw new core.ArgumentError("Parameter variantSetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/variantsets/' +
         commons.Escaper.ecapeVariable('$variantSetId') +
@@ -2749,6 +3088,9 @@
   ///
   /// [variantSetId] - Required. The ID of the variant set.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VariantSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2756,7 +3098,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<VariantSet> get(core.String variantSetId) {
+  async.Future<VariantSet> get(core.String variantSetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2767,6 +3110,9 @@
     if (variantSetId == null) {
       throw new core.ArgumentError("Parameter variantSetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/variantsets/' + commons.Escaper.ecapeVariable('$variantSetId');
 
@@ -2801,6 +3147,9 @@
   /// Leaving `updateMask` unset is equivalent to specifying all mutable
   /// fields.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VariantSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2809,7 +3158,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<VariantSet> patch(VariantSet request, core.String variantSetId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2826,6 +3175,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/variantsets/' + commons.Escaper.ecapeVariable('$variantSetId');
 
@@ -2851,6 +3203,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchVariantSetsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2859,7 +3214,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SearchVariantSetsResponse> search(
-      SearchVariantSetsRequest request) {
+      SearchVariantSetsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2870,6 +3226,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/variantsets/search';
 
diff --git a/generated/googleapis/lib/gmail/v1.dart b/generated/googleapis/lib/gmail/v1.dart
index 53c5a39..7fa5dfe 100644
--- a/generated/googleapis/lib/gmail/v1.dart
+++ b/generated/googleapis/lib/gmail/v1.dart
@@ -97,6 +97,9 @@
   /// [userId] - The user's email address. The special value me can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Profile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -104,7 +107,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Profile> getProfile(core.String userId) {
+  async.Future<Profile> getProfile(core.String userId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -115,6 +118,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/profile';
 
@@ -134,12 +140,15 @@
   /// [userId] - The user's email address. The special value me can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future stop(core.String userId) {
+  async.Future stop(core.String userId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -150,6 +159,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -173,6 +185,9 @@
   /// [userId] - The user's email address. The special value me can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [WatchResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -180,7 +195,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<WatchResponse> watch(WatchRequest request, core.String userId) {
+  async.Future<WatchResponse> watch(WatchRequest request, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -194,6 +210,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/watch';
 
@@ -221,6 +240,9 @@
   /// [userId] - The user's email address. The special value me can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -235,7 +257,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Draft> create(Draft request, core.String userId,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -250,6 +273,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -285,12 +311,16 @@
   ///
   /// [id] - The ID of the draft to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String userId, core.String id) {
+  async.Future delete(core.String userId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -304,6 +334,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -336,6 +369,9 @@
   /// - "minimal"
   /// - "raw"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Draft].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -344,7 +380,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Draft> get(core.String userId, core.String id,
-      {core.String format}) {
+      {core.String format, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -361,6 +397,9 @@
     if (format != null) {
       _queryParams["format"] = [format];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/drafts/' +
@@ -393,6 +432,9 @@
   /// the same query format as the Gmail search box. For example,
   /// "from:someuser@example.com rfc822msgid: is:unread".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListDraftsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -404,7 +446,8 @@
       {core.bool includeSpamTrash,
       core.int maxResults,
       core.String pageToken,
-      core.String q}) {
+      core.String q,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -427,6 +470,9 @@
     if (q != null) {
       _queryParams["q"] = [q];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/drafts';
 
@@ -449,6 +495,9 @@
   /// [userId] - The user's email address. The special value me can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -463,7 +512,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Message> send(Draft request, core.String userId,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -478,6 +528,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -514,6 +567,9 @@
   ///
   /// [id] - The ID of the draft to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -528,7 +584,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Draft> update(Draft request, core.String userId, core.String id,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -546,6 +603,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -610,6 +670,9 @@
   /// response, there are no updates to retrieve and you can store the returned
   /// historyId for a future request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListHistoryResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -622,7 +685,8 @@
       core.String labelId,
       core.int maxResults,
       core.String pageToken,
-      core.String startHistoryId}) {
+      core.String startHistoryId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -648,6 +712,9 @@
     if (startHistoryId != null) {
       _queryParams["startHistoryId"] = [startHistoryId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/history';
 
@@ -675,6 +742,9 @@
   /// [userId] - The user's email address. The special value me can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Label].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -682,7 +752,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Label> create(Label request, core.String userId) {
+  async.Future<Label> create(Label request, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -696,6 +767,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/labels';
 
@@ -718,12 +792,16 @@
   ///
   /// [id] - The ID of the label to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String userId, core.String id) {
+  async.Future delete(core.String userId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -737,6 +815,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -762,6 +843,9 @@
   ///
   /// [id] - The ID of the label to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Label].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -769,7 +853,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Label> get(core.String userId, core.String id) {
+  async.Future<Label> get(core.String userId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -783,6 +868,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/labels/' +
@@ -804,6 +892,9 @@
   /// [userId] - The user's email address. The special value me can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLabelsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -811,7 +902,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListLabelsResponse> list(core.String userId) {
+  async.Future<ListLabelsResponse> list(core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -822,6 +914,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/labels';
 
@@ -845,6 +940,9 @@
   ///
   /// [id] - The ID of the label to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Label].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -852,7 +950,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Label> patch(Label request, core.String userId, core.String id) {
+  async.Future<Label> patch(Label request, core.String userId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -869,6 +968,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/labels/' +
@@ -894,6 +996,9 @@
   ///
   /// [id] - The ID of the label to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Label].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -901,8 +1006,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Label> update(
-      Label request, core.String userId, core.String id) {
+  async.Future<Label> update(Label request, core.String userId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -919,6 +1024,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/labels/' +
@@ -952,13 +1060,17 @@
   /// [userId] - The user's email address. The special value me can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future batchDelete(
-      BatchDeleteMessagesRequest request, core.String userId) {
+      BatchDeleteMessagesRequest request, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -972,6 +1084,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -995,13 +1110,17 @@
   /// [userId] - The user's email address. The special value me can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future batchModify(
-      BatchModifyMessagesRequest request, core.String userId) {
+      BatchModifyMessagesRequest request, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1015,6 +1134,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1039,12 +1161,16 @@
   ///
   /// [id] - The ID of the message to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String userId, core.String id) {
+  async.Future delete(core.String userId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1058,6 +1184,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1093,6 +1222,9 @@
   /// [metadataHeaders] - When given and format is METADATA, only include
   /// headers specified.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Message].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1101,7 +1233,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Message> get(core.String userId, core.String id,
-      {core.String format, core.List<core.String> metadataHeaders}) {
+      {core.String format,
+      core.List<core.String> metadataHeaders,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1121,6 +1255,9 @@
     if (metadataHeaders != null) {
       _queryParams["metadataHeaders"] = metadataHeaders;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/messages/' +
@@ -1161,6 +1298,9 @@
   /// [processForCalendar] - Process calendar invites in the email and add any
   /// extracted meetings to the Google Calendar for this user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -1179,6 +1319,7 @@
       core.String internalDateSource,
       core.bool neverMarkSpam,
       core.bool processForCalendar,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -1206,6 +1347,9 @@
     if (processForCalendar != null) {
       _queryParams["processForCalendar"] = ["${processForCalendar}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -1251,6 +1395,9 @@
   /// - "dateHeader"
   /// - "receivedTime"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -1267,6 +1414,7 @@
   async.Future<Message> insert(Message request, core.String userId,
       {core.bool deleted,
       core.String internalDateSource,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -1288,6 +1436,9 @@
     if (internalDateSource != null) {
       _queryParams["internalDateSource"] = [internalDateSource];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -1336,6 +1487,9 @@
   /// Parameter cannot be used when accessing the api using the gmail.metadata
   /// scope.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListMessagesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1348,7 +1502,8 @@
       core.List<core.String> labelIds,
       core.int maxResults,
       core.String pageToken,
-      core.String q}) {
+      core.String q,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1374,6 +1529,9 @@
     if (q != null) {
       _queryParams["q"] = [q];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/messages';
 
@@ -1397,6 +1555,9 @@
   ///
   /// [id] - The ID of the message to modify.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Message].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1405,7 +1566,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Message> modify(
-      ModifyMessageRequest request, core.String userId, core.String id) {
+      ModifyMessageRequest request, core.String userId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1422,6 +1584,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/messages/' +
@@ -1447,6 +1612,9 @@
   /// [userId] - The user's email address. The special value me can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -1461,7 +1629,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Message> send(Message request, core.String userId,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -1476,6 +1645,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -1510,6 +1682,9 @@
   ///
   /// [id] - The ID of the message to Trash.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Message].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1517,7 +1692,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Message> trash(core.String userId, core.String id) {
+  async.Future<Message> trash(core.String userId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1531,6 +1707,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/messages/' +
@@ -1555,6 +1734,9 @@
   ///
   /// [id] - The ID of the message to remove from Trash.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Message].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1562,7 +1744,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Message> untrash(core.String userId, core.String id) {
+  async.Future<Message> untrash(core.String userId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1576,6 +1759,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/messages/' +
@@ -1609,6 +1795,9 @@
   ///
   /// [id] - The ID of the attachment.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MessagePartBody].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1617,7 +1806,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<MessagePartBody> get(
-      core.String userId, core.String messageId, core.String id) {
+      core.String userId, core.String messageId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1634,6 +1824,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/messages/' +
@@ -1670,6 +1863,9 @@
   /// [userId] - User's email address. The special value "me" can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AutoForwarding].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1677,7 +1873,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AutoForwarding> getAutoForwarding(core.String userId) {
+  async.Future<AutoForwarding> getAutoForwarding(core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1688,6 +1885,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$userId') + '/settings/autoForwarding';
@@ -1708,6 +1908,9 @@
   /// [userId] - User's email address. The special value "me" can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ImapSettings].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1715,7 +1918,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ImapSettings> getImap(core.String userId) {
+  async.Future<ImapSettings> getImap(core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1726,6 +1930,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/settings/imap';
 
@@ -1745,6 +1952,9 @@
   /// [userId] - User's email address. The special value "me" can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PopSettings].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1752,7 +1962,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PopSettings> getPop(core.String userId) {
+  async.Future<PopSettings> getPop(core.String userId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1763,6 +1973,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/settings/pop';
 
@@ -1782,6 +1995,9 @@
   /// [userId] - User's email address. The special value "me" can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VacationSettings].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1789,7 +2005,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<VacationSettings> getVacation(core.String userId) {
+  async.Future<VacationSettings> getVacation(core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1800,6 +2017,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/settings/vacation';
 
@@ -1825,6 +2045,9 @@
   /// [userId] - User's email address. The special value "me" can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AutoForwarding].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1833,7 +2056,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AutoForwarding> updateAutoForwarding(
-      AutoForwarding request, core.String userId) {
+      AutoForwarding request, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1847,6 +2071,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariable('$userId') + '/settings/autoForwarding';
@@ -1869,6 +2096,9 @@
   /// [userId] - User's email address. The special value "me" can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ImapSettings].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1877,7 +2107,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ImapSettings> updateImap(
-      ImapSettings request, core.String userId) {
+      ImapSettings request, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1891,6 +2122,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/settings/imap';
 
@@ -1912,6 +2146,9 @@
   /// [userId] - User's email address. The special value "me" can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PopSettings].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1919,7 +2156,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PopSettings> updatePop(PopSettings request, core.String userId) {
+  async.Future<PopSettings> updatePop(PopSettings request, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1933,6 +2171,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/settings/pop';
 
@@ -1954,6 +2195,9 @@
   /// [userId] - User's email address. The special value "me" can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VacationSettings].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1962,7 +2206,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<VacationSettings> updateVacation(
-      VacationSettings request, core.String userId) {
+      VacationSettings request, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1976,6 +2221,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/settings/vacation';
 
@@ -2004,6 +2252,9 @@
   /// [userId] - User's email address. The special value "me" can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Filter].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2011,7 +2262,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Filter> create(Filter request, core.String userId) {
+  async.Future<Filter> create(Filter request, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2025,6 +2277,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/settings/filters';
 
@@ -2046,12 +2301,16 @@
   ///
   /// [id] - The ID of the filter to be deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String userId, core.String id) {
+  async.Future delete(core.String userId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2065,6 +2324,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2090,6 +2352,9 @@
   ///
   /// [id] - The ID of the filter to be fetched.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Filter].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2097,7 +2362,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Filter> get(core.String userId, core.String id) {
+  async.Future<Filter> get(core.String userId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2111,6 +2377,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/settings/filters/' +
@@ -2132,6 +2401,9 @@
   /// [userId] - User's email address. The special value "me" can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListFiltersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2139,7 +2411,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListFiltersResponse> list(core.String userId) {
+  async.Future<ListFiltersResponse> list(core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2150,6 +2423,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/settings/filters';
 
@@ -2184,6 +2460,9 @@
   /// [userId] - User's email address. The special value "me" can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ForwardingAddress].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2192,7 +2471,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ForwardingAddress> create(
-      ForwardingAddress request, core.String userId) {
+      ForwardingAddress request, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2206,6 +2486,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/settings/forwardingAddresses';
@@ -2232,12 +2515,16 @@
   ///
   /// [forwardingEmail] - The forwarding address to be deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String userId, core.String forwardingEmail) {
+  async.Future delete(core.String userId, core.String forwardingEmail,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2251,6 +2538,9 @@
     if (forwardingEmail == null) {
       throw new core.ArgumentError("Parameter forwardingEmail is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2276,6 +2566,9 @@
   ///
   /// [forwardingEmail] - The forwarding address to be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ForwardingAddress].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2284,7 +2577,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ForwardingAddress> get(
-      core.String userId, core.String forwardingEmail) {
+      core.String userId, core.String forwardingEmail,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2298,6 +2592,9 @@
     if (forwardingEmail == null) {
       throw new core.ArgumentError("Parameter forwardingEmail is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/settings/forwardingAddresses/' +
@@ -2319,6 +2616,9 @@
   /// [userId] - User's email address. The special value "me" can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListForwardingAddressesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2326,7 +2626,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListForwardingAddressesResponse> list(core.String userId) {
+  async.Future<ListForwardingAddressesResponse> list(core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2337,6 +2638,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/settings/forwardingAddresses';
@@ -2379,6 +2683,9 @@
   /// [userId] - User's email address. The special value "me" can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SendAs].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2386,7 +2693,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SendAs> create(SendAs request, core.String userId) {
+  async.Future<SendAs> create(SendAs request, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2400,6 +2708,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/settings/sendAs';
 
@@ -2425,12 +2736,16 @@
   ///
   /// [sendAsEmail] - The send-as alias to be deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String userId, core.String sendAsEmail) {
+  async.Future delete(core.String userId, core.String sendAsEmail,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2444,6 +2759,9 @@
     if (sendAsEmail == null) {
       throw new core.ArgumentError("Parameter sendAsEmail is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2470,6 +2788,9 @@
   ///
   /// [sendAsEmail] - The send-as alias to be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SendAs].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2477,7 +2798,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SendAs> get(core.String userId, core.String sendAsEmail) {
+  async.Future<SendAs> get(core.String userId, core.String sendAsEmail,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2491,6 +2813,9 @@
     if (sendAsEmail == null) {
       throw new core.ArgumentError("Parameter sendAsEmail is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/settings/sendAs/' +
@@ -2514,6 +2839,9 @@
   /// [userId] - User's email address. The special value "me" can be used to
   /// indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListSendAsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2521,7 +2849,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListSendAsResponse> list(core.String userId) {
+  async.Future<ListSendAsResponse> list(core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2532,6 +2861,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/settings/sendAs';
 
@@ -2560,6 +2892,9 @@
   ///
   /// [sendAsEmail] - The send-as alias to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SendAs].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2568,7 +2903,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SendAs> patch(
-      SendAs request, core.String userId, core.String sendAsEmail) {
+      SendAs request, core.String userId, core.String sendAsEmail,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2585,6 +2921,9 @@
     if (sendAsEmail == null) {
       throw new core.ArgumentError("Parameter sendAsEmail is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/settings/sendAs/' +
@@ -2615,6 +2954,9 @@
   ///
   /// [sendAsEmail] - The send-as alias to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SendAs].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2623,7 +2965,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SendAs> update(
-      SendAs request, core.String userId, core.String sendAsEmail) {
+      SendAs request, core.String userId, core.String sendAsEmail,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2640,6 +2983,9 @@
     if (sendAsEmail == null) {
       throw new core.ArgumentError("Parameter sendAsEmail is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/settings/sendAs/' +
@@ -2667,12 +3013,16 @@
   ///
   /// [sendAsEmail] - The send-as alias to be verified.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future verify(core.String userId, core.String sendAsEmail) {
+  async.Future verify(core.String userId, core.String sendAsEmail,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2686,6 +3036,9 @@
     if (sendAsEmail == null) {
       throw new core.ArgumentError("Parameter sendAsEmail is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2722,13 +3075,17 @@
   ///
   /// [id] - The immutable ID for the SmimeInfo.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String userId, core.String sendAsEmail, core.String id) {
+      core.String userId, core.String sendAsEmail, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2745,6 +3102,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2775,6 +3135,9 @@
   ///
   /// [id] - The immutable ID for the SmimeInfo.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SmimeInfo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2783,7 +3146,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SmimeInfo> get(
-      core.String userId, core.String sendAsEmail, core.String id) {
+      core.String userId, core.String sendAsEmail, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2800,6 +3164,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/settings/sendAs/' +
@@ -2829,6 +3196,9 @@
   /// [sendAsEmail] - The email address that appears in the "From:" header for
   /// mail sent using this alias.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SmimeInfo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2837,7 +3207,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SmimeInfo> insert(
-      SmimeInfo request, core.String userId, core.String sendAsEmail) {
+      SmimeInfo request, core.String userId, core.String sendAsEmail,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2854,6 +3225,9 @@
     if (sendAsEmail == null) {
       throw new core.ArgumentError("Parameter sendAsEmail is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/settings/sendAs/' +
@@ -2879,6 +3253,9 @@
   /// [sendAsEmail] - The email address that appears in the "From:" header for
   /// mail sent using this alias.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListSmimeInfoResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2887,7 +3264,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListSmimeInfoResponse> list(
-      core.String userId, core.String sendAsEmail) {
+      core.String userId, core.String sendAsEmail,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2901,6 +3279,9 @@
     if (sendAsEmail == null) {
       throw new core.ArgumentError("Parameter sendAsEmail is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/settings/sendAs/' +
@@ -2928,13 +3309,17 @@
   ///
   /// [id] - The immutable ID for the SmimeInfo.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future setDefault(
-      core.String userId, core.String sendAsEmail, core.String id) {
+      core.String userId, core.String sendAsEmail, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2951,6 +3336,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2986,12 +3374,16 @@
   ///
   /// [id] - ID of the Thread to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String userId, core.String id) {
+  async.Future delete(core.String userId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3005,6 +3397,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3039,6 +3434,9 @@
   /// [metadataHeaders] - When given and format is METADATA, only include
   /// headers specified.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Thread].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3047,7 +3445,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Thread> get(core.String userId, core.String id,
-      {core.String format, core.List<core.String> metadataHeaders}) {
+      {core.String format,
+      core.List<core.String> metadataHeaders,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3067,6 +3467,9 @@
     if (metadataHeaders != null) {
       _queryParams["metadataHeaders"] = metadataHeaders;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/threads/' +
@@ -3103,6 +3506,9 @@
   /// "from:someuser@example.com rfc822msgid: is:unread". Parameter cannot be
   /// used when accessing the api using the gmail.metadata scope.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListThreadsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3115,7 +3521,8 @@
       core.List<core.String> labelIds,
       core.int maxResults,
       core.String pageToken,
-      core.String q}) {
+      core.String q,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3141,6 +3548,9 @@
     if (q != null) {
       _queryParams["q"] = [q];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') + '/threads';
 
@@ -3165,6 +3575,9 @@
   ///
   /// [id] - The ID of the thread to modify.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Thread].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3173,7 +3586,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Thread> modify(
-      ModifyThreadRequest request, core.String userId, core.String id) {
+      ModifyThreadRequest request, core.String userId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3190,6 +3604,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/threads/' +
@@ -3214,6 +3631,9 @@
   ///
   /// [id] - The ID of the thread to Trash.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Thread].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3221,7 +3641,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Thread> trash(core.String userId, core.String id) {
+  async.Future<Thread> trash(core.String userId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3235,6 +3656,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/threads/' +
@@ -3259,6 +3683,9 @@
   ///
   /// [id] - The ID of the thread to remove from Trash.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Thread].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3266,7 +3693,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Thread> untrash(core.String userId, core.String id) {
+  async.Future<Thread> untrash(core.String userId, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3280,6 +3708,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$userId') +
         '/threads/' +
diff --git a/generated/googleapis/lib/groupsmigration/v1.dart b/generated/googleapis/lib/groupsmigration/v1.dart
index f83fefa..83abcca 100644
--- a/generated/googleapis/lib/groupsmigration/v1.dart
+++ b/generated/googleapis/lib/groupsmigration/v1.dart
@@ -50,6 +50,9 @@
   ///
   /// [groupId] - The group ID
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -64,7 +67,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Groups> insert(core.String groupId,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -76,6 +80,9 @@
     if (groupId == null) {
       throw new core.ArgumentError("Parameter groupId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
diff --git a/generated/googleapis/lib/groupssettings/v1.dart b/generated/googleapis/lib/groupssettings/v1.dart
index 8679832..fdd1913 100644
--- a/generated/googleapis/lib/groupssettings/v1.dart
+++ b/generated/googleapis/lib/groupssettings/v1.dart
@@ -42,6 +42,9 @@
   ///
   /// [groupUniqueId] - The resource ID
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Groups].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -49,7 +52,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Groups> get(core.String groupUniqueId) {
+  async.Future<Groups> get(core.String groupUniqueId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -60,6 +63,9 @@
     if (groupUniqueId == null) {
       throw new core.ArgumentError("Parameter groupUniqueId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$groupUniqueId');
 
@@ -80,6 +86,9 @@
   ///
   /// [groupUniqueId] - The resource ID
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Groups].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -87,7 +96,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Groups> patch(Groups request, core.String groupUniqueId) {
+  async.Future<Groups> patch(Groups request, core.String groupUniqueId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -101,6 +111,9 @@
     if (groupUniqueId == null) {
       throw new core.ArgumentError("Parameter groupUniqueId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$groupUniqueId');
 
@@ -121,6 +134,9 @@
   ///
   /// [groupUniqueId] - The resource ID
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Groups].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -128,7 +144,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Groups> update(Groups request, core.String groupUniqueId) {
+  async.Future<Groups> update(Groups request, core.String groupUniqueId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -142,6 +159,9 @@
     if (groupUniqueId == null) {
       throw new core.ArgumentError("Parameter groupUniqueId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$groupUniqueId');
 
diff --git a/generated/googleapis/lib/iam/v1.dart b/generated/googleapis/lib/iam/v1.dart
index cf5924f..bfd8a8a 100644
--- a/generated/googleapis/lib/iam/v1.dart
+++ b/generated/googleapis/lib/iam/v1.dart
@@ -65,6 +65,9 @@
   /// `projects/{PROJECT_ID}`
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Role].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -72,7 +75,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Role> create(CreateRoleRequest request, core.String parent) {
+  async.Future<Role> create(CreateRoleRequest request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -86,6 +90,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/roles';
 
@@ -118,6 +125,9 @@
   ///
   /// [etag] - Used to perform a consistent read-modify-write.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Role].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -125,7 +135,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Role> delete(core.String name, {core.String etag}) {
+  async.Future<Role> delete(core.String name,
+      {core.String etag, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -139,6 +150,9 @@
     if (etag != null) {
       _queryParams["etag"] = [etag];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -161,6 +175,9 @@
   /// `projects/{PROJECT_ID}/roles/{ROLE_NAME}`
   /// Value must have pattern "^organizations/[^/]+/roles/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Role].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -168,7 +185,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Role> get(core.String name) {
+  async.Future<Role> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -179,6 +196,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -202,6 +222,11 @@
   /// `projects/{PROJECT_ID}`
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [showDeleted] - Include Roles that have been deleted.
+  ///
+  /// [pageToken] - Optional pagination token returned in an earlier
+  /// ListRolesResponse.
+  ///
   /// [pageSize] - Optional limit on the number of roles to include in the
   /// response.
   ///
@@ -210,10 +235,8 @@
   /// - "BASIC" : A BASIC.
   /// - "FULL" : A FULL.
   ///
-  /// [showDeleted] - Include Roles that have been deleted.
-  ///
-  /// [pageToken] - Optional pagination token returned in an earlier
-  /// ListRolesResponse.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListRolesResponse].
   ///
@@ -223,10 +246,11 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListRolesResponse> list(core.String parent,
-      {core.int pageSize,
+      {core.bool showDeleted,
+      core.String pageToken,
+      core.int pageSize,
       core.String view,
-      core.bool showDeleted,
-      core.String pageToken}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -237,17 +261,20 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if (showDeleted != null) {
+      _queryParams["showDeleted"] = ["${showDeleted}"];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
     if (view != null) {
       _queryParams["view"] = [view];
     }
-    if (showDeleted != null) {
-      _queryParams["showDeleted"] = ["${showDeleted}"];
-    }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/roles';
@@ -275,6 +302,9 @@
   ///
   /// [updateMask] - A mask describing which fields in the Role have changed.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Role].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -283,7 +313,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Role> patch(Role request, core.String name,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -300,6 +330,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -323,6 +356,9 @@
   /// `projects/{PROJECT_ID}/roles/{ROLE_NAME}`
   /// Value must have pattern "^organizations/[^/]+/roles/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Role].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -330,7 +366,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Role> undelete(UndeleteRoleRequest request, core.String name) {
+  async.Future<Role> undelete(UndeleteRoleRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -344,6 +381,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':undelete';
 
@@ -370,6 +410,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [QueryTestablePermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -378,7 +421,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<QueryTestablePermissionsResponse> queryTestablePermissions(
-      QueryTestablePermissionsRequest request) {
+      QueryTestablePermissionsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -389,6 +433,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/permissions:queryTestablePermissions';
 
@@ -431,6 +478,9 @@
   /// `projects/{PROJECT_ID}`
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Role].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -438,7 +488,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Role> create(CreateRoleRequest request, core.String parent) {
+  async.Future<Role> create(CreateRoleRequest request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -452,6 +503,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/roles';
 
@@ -484,6 +538,9 @@
   ///
   /// [etag] - Used to perform a consistent read-modify-write.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Role].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -491,7 +548,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Role> delete(core.String name, {core.String etag}) {
+  async.Future<Role> delete(core.String name,
+      {core.String etag, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -505,6 +563,9 @@
     if (etag != null) {
       _queryParams["etag"] = [etag];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -527,6 +588,9 @@
   /// `projects/{PROJECT_ID}/roles/{ROLE_NAME}`
   /// Value must have pattern "^projects/[^/]+/roles/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Role].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -534,7 +598,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Role> get(core.String name) {
+  async.Future<Role> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -545,6 +609,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -581,6 +648,9 @@
   /// - "BASIC" : A BASIC.
   /// - "FULL" : A FULL.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListRolesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -592,7 +662,8 @@
       {core.bool showDeleted,
       core.String pageToken,
       core.int pageSize,
-      core.String view}) {
+      core.String view,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -615,6 +686,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/roles';
 
@@ -641,6 +715,9 @@
   ///
   /// [updateMask] - A mask describing which fields in the Role have changed.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Role].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -649,7 +726,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Role> patch(Role request, core.String name,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -666,6 +743,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -689,6 +769,9 @@
   /// `projects/{PROJECT_ID}/roles/{ROLE_NAME}`
   /// Value must have pattern "^projects/[^/]+/roles/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Role].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -696,7 +779,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Role> undelete(UndeleteRoleRequest request, core.String name) {
+  async.Future<Role> undelete(UndeleteRoleRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -710,6 +794,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':undelete';
 
@@ -744,6 +831,9 @@
   /// accounts, such as `projects/my-project-123`.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ServiceAccount].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -752,7 +842,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ServiceAccount> create(
-      CreateServiceAccountRequest request, core.String name) {
+      CreateServiceAccountRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -766,6 +857,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$name') +
@@ -791,6 +885,9 @@
   /// `unique_id` of the service account.
   /// Value must have pattern "^projects/[^/]+/serviceAccounts/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -798,7 +895,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -809,6 +906,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -832,6 +932,9 @@
   /// `unique_id` of the service account.
   /// Value must have pattern "^projects/[^/]+/serviceAccounts/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ServiceAccount].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -839,7 +942,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ServiceAccount> get(core.String name) {
+  async.Future<ServiceAccount> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -850,6 +953,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -872,6 +978,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/serviceAccounts/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -879,7 +988,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Policy> getIamPolicy(core.String resource) {
+  async.Future<Policy> getIamPolicy(core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -890,6 +1000,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -922,6 +1035,9 @@
   /// ListServiceAccountsResponse.next_page_token
   /// in a subsequent request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListServiceAccountsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -930,7 +1046,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListServiceAccountsResponse> list(core.String name,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -947,6 +1063,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$name') +
@@ -974,6 +1093,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/serviceAccounts/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -982,7 +1104,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -996,6 +1119,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1023,6 +1149,9 @@
   /// `unique_id` of the service account.
   /// Value must have pattern "^projects/[^/]+/serviceAccounts/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SignBlobResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1031,7 +1160,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SignBlobResponse> signBlob(
-      SignBlobRequest request, core.String name) {
+      SignBlobRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1045,6 +1175,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':signBlob';
 
@@ -1074,6 +1207,9 @@
   /// `unique_id` of the service account.
   /// Value must have pattern "^projects/[^/]+/serviceAccounts/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SignJwtResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1082,7 +1218,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SignJwtResponse> signJwt(
-      SignJwtRequest request, core.String name) {
+      SignJwtRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1096,6 +1233,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':signJwt';
 
@@ -1120,6 +1260,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/serviceAccounts/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1128,7 +1271,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1142,6 +1286,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1178,6 +1325,9 @@
   /// `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`.
   /// Value must have pattern "^projects/[^/]+/serviceAccounts/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ServiceAccount].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1185,8 +1335,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ServiceAccount> update(
-      ServiceAccount request, core.String name) {
+  async.Future<ServiceAccount> update(ServiceAccount request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1200,6 +1350,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1233,6 +1386,9 @@
   /// `unique_id` of the service account.
   /// Value must have pattern "^projects/[^/]+/serviceAccounts/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ServiceAccountKey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1241,7 +1397,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ServiceAccountKey> create(
-      CreateServiceAccountKeyRequest request, core.String name) {
+      CreateServiceAccountKeyRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1255,6 +1412,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + '/keys';
 
@@ -1280,6 +1440,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/serviceAccounts/[^/]+/keys/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1287,7 +1450,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1298,6 +1461,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1332,6 +1498,9 @@
   /// - "TYPE_X509_PEM_FILE" : A TYPE_X509_PEM_FILE.
   /// - "TYPE_RAW_PUBLIC_KEY" : A TYPE_RAW_PUBLIC_KEY.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ServiceAccountKey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1340,7 +1509,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ServiceAccountKey> get(core.String name,
-      {core.String publicKeyType}) {
+      {core.String publicKeyType, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1354,6 +1523,9 @@
     if (publicKeyType != null) {
       _queryParams["publicKeyType"] = [publicKeyType];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1383,6 +1555,9 @@
   /// response. Duplicate key types are not allowed. If no key type
   /// is provided, all keys are returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListServiceAccountKeysResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1391,7 +1566,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListServiceAccountKeysResponse> list(core.String name,
-      {core.List<core.String> keyTypes}) {
+      {core.List<core.String> keyTypes, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1405,6 +1580,9 @@
     if (keyTypes != null) {
       _queryParams["keyTypes"] = keyTypes;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + '/keys';
 
@@ -1434,6 +1612,9 @@
   /// `projects/{PROJECT_ID}/roles/{ROLE_NAME}`
   /// Value must have pattern "^roles/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Role].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1441,7 +1622,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Role> get(core.String name) {
+  async.Future<Role> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1452,6 +1633,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1468,12 +1652,6 @@
   ///
   /// Request parameters:
   ///
-  /// [pageToken] - Optional pagination token returned in an earlier
-  /// ListRolesResponse.
-  ///
-  /// [pageSize] - Optional limit on the number of roles to include in the
-  /// response.
-  ///
   /// [view] - Optional view for the returned Role objects.
   /// Possible string values are:
   /// - "BASIC" : A BASIC.
@@ -1487,6 +1665,15 @@
   ///
   /// [showDeleted] - Include Roles that have been deleted.
   ///
+  /// [pageToken] - Optional pagination token returned in an earlier
+  /// ListRolesResponse.
+  ///
+  /// [pageSize] - Optional limit on the number of roles to include in the
+  /// response.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListRolesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1495,11 +1682,12 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListRolesResponse> list(
-      {core.String pageToken,
-      core.int pageSize,
-      core.String view,
+      {core.String view,
       core.String parent,
-      core.bool showDeleted}) {
+      core.bool showDeleted,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1507,12 +1695,6 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
-    }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
-    }
     if (view != null) {
       _queryParams["view"] = [view];
     }
@@ -1522,6 +1704,15 @@
     if (showDeleted != null) {
       _queryParams["showDeleted"] = ["${showDeleted}"];
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/roles';
 
@@ -1543,6 +1734,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [QueryGrantableRolesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1551,7 +1745,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<QueryGrantableRolesResponse> queryGrantableRoles(
-      QueryGrantableRolesRequest request) {
+      QueryGrantableRolesRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1562,6 +1757,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/roles:queryGrantableRoles';
 
diff --git a/generated/googleapis/lib/identitytoolkit/v3.dart b/generated/googleapis/lib/identitytoolkit/v3.dart
index 3094892..d0c24f7 100644
--- a/generated/googleapis/lib/identitytoolkit/v3.dart
+++ b/generated/googleapis/lib/identitytoolkit/v3.dart
@@ -47,6 +47,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreateAuthUriResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -55,7 +58,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreateAuthUriResponse> createAuthUri(
-      IdentitytoolkitRelyingpartyCreateAuthUriRequest request) {
+      IdentitytoolkitRelyingpartyCreateAuthUriRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -66,6 +70,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'createAuthUri';
 
@@ -84,6 +91,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DeleteAccountResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -92,7 +102,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DeleteAccountResponse> deleteAccount(
-      IdentitytoolkitRelyingpartyDeleteAccountRequest request) {
+      IdentitytoolkitRelyingpartyDeleteAccountRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -103,6 +114,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'deleteAccount';
 
@@ -121,6 +135,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DownloadAccountResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -129,7 +146,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DownloadAccountResponse> downloadAccount(
-      IdentitytoolkitRelyingpartyDownloadAccountRequest request) {
+      IdentitytoolkitRelyingpartyDownloadAccountRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -140,6 +158,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'downloadAccount';
 
@@ -158,6 +179,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EmailLinkSigninResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -166,7 +190,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EmailLinkSigninResponse> emailLinkSignin(
-      IdentitytoolkitRelyingpartyEmailLinkSigninRequest request) {
+      IdentitytoolkitRelyingpartyEmailLinkSigninRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -177,6 +202,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'emailLinkSignin';
 
@@ -195,6 +223,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetAccountInfoResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -203,7 +234,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetAccountInfoResponse> getAccountInfo(
-      IdentitytoolkitRelyingpartyGetAccountInfoRequest request) {
+      IdentitytoolkitRelyingpartyGetAccountInfoRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -214,6 +246,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'getAccountInfo';
 
@@ -232,6 +267,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetOobConfirmationCodeResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -240,7 +278,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetOobConfirmationCodeResponse> getOobConfirmationCode(
-      Relyingparty request) {
+      Relyingparty request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -251,6 +290,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'getOobConfirmationCode';
 
@@ -272,6 +314,9 @@
   ///
   /// [projectNumber] - GCP project number of the request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [IdentitytoolkitRelyingpartyGetProjectConfigResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -281,7 +326,9 @@
   /// this method will complete with the same error.
   async.Future<IdentitytoolkitRelyingpartyGetProjectConfigResponse>
       getProjectConfig(
-          {core.String delegatedProjectNumber, core.String projectNumber}) {
+          {core.String delegatedProjectNumber,
+          core.String projectNumber,
+          core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -295,6 +342,9 @@
     if (projectNumber != null) {
       _queryParams["projectNumber"] = [projectNumber];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'getProjectConfig';
 
@@ -312,6 +362,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [IdentitytoolkitRelyingpartyGetPublicKeysResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -319,8 +372,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<IdentitytoolkitRelyingpartyGetPublicKeysResponse>
-      getPublicKeys() {
+  async.Future<IdentitytoolkitRelyingpartyGetPublicKeysResponse> getPublicKeys(
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -328,6 +381,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'publicKeys';
 
     var _response = _requester.request(_url, "GET",
@@ -344,6 +401,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetRecaptchaParamResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -351,7 +411,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GetRecaptchaParamResponse> getRecaptchaParam() {
+  async.Future<GetRecaptchaParamResponse> getRecaptchaParam(
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -359,6 +420,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'getRecaptchaParam';
 
     var _response = _requester.request(_url, "GET",
@@ -377,6 +442,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ResetPasswordResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -385,7 +453,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ResetPasswordResponse> resetPassword(
-      IdentitytoolkitRelyingpartyResetPasswordRequest request) {
+      IdentitytoolkitRelyingpartyResetPasswordRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -396,6 +465,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'resetPassword';
 
@@ -414,6 +486,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a
   /// [IdentitytoolkitRelyingpartySendVerificationCodeResponse].
   ///
@@ -424,7 +499,8 @@
   /// this method will complete with the same error.
   async.Future<IdentitytoolkitRelyingpartySendVerificationCodeResponse>
       sendVerificationCode(
-          IdentitytoolkitRelyingpartySendVerificationCodeRequest request) {
+          IdentitytoolkitRelyingpartySendVerificationCodeRequest request,
+          {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -435,6 +511,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'sendVerificationCode';
 
@@ -455,6 +534,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SetAccountInfoResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -463,7 +545,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SetAccountInfoResponse> setAccountInfo(
-      IdentitytoolkitRelyingpartySetAccountInfoRequest request) {
+      IdentitytoolkitRelyingpartySetAccountInfoRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -474,6 +557,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'setAccountInfo';
 
@@ -492,6 +578,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [IdentitytoolkitRelyingpartySetProjectConfigResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -501,7 +590,8 @@
   /// this method will complete with the same error.
   async.Future<IdentitytoolkitRelyingpartySetProjectConfigResponse>
       setProjectConfig(
-          IdentitytoolkitRelyingpartySetProjectConfigRequest request) {
+          IdentitytoolkitRelyingpartySetProjectConfigRequest request,
+          {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -512,6 +602,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'setProjectConfig';
 
@@ -531,6 +624,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [IdentitytoolkitRelyingpartySignOutUserResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -539,7 +635,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<IdentitytoolkitRelyingpartySignOutUserResponse> signOutUser(
-      IdentitytoolkitRelyingpartySignOutUserRequest request) {
+      IdentitytoolkitRelyingpartySignOutUserRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -550,6 +647,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'signOutUser';
 
@@ -569,6 +669,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SignupNewUserResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -577,7 +680,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SignupNewUserResponse> signupNewUser(
-      IdentitytoolkitRelyingpartySignupNewUserRequest request) {
+      IdentitytoolkitRelyingpartySignupNewUserRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -588,6 +692,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'signupNewUser';
 
@@ -606,6 +713,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UploadAccountResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -614,7 +724,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UploadAccountResponse> uploadAccount(
-      IdentitytoolkitRelyingpartyUploadAccountRequest request) {
+      IdentitytoolkitRelyingpartyUploadAccountRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -625,6 +736,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'uploadAccount';
 
@@ -643,6 +757,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VerifyAssertionResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -651,7 +768,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<VerifyAssertionResponse> verifyAssertion(
-      IdentitytoolkitRelyingpartyVerifyAssertionRequest request) {
+      IdentitytoolkitRelyingpartyVerifyAssertionRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -662,6 +780,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'verifyAssertion';
 
@@ -680,6 +801,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VerifyCustomTokenResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -688,7 +812,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<VerifyCustomTokenResponse> verifyCustomToken(
-      IdentitytoolkitRelyingpartyVerifyCustomTokenRequest request) {
+      IdentitytoolkitRelyingpartyVerifyCustomTokenRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -699,6 +824,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'verifyCustomToken';
 
@@ -718,6 +846,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VerifyPasswordResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -726,7 +857,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<VerifyPasswordResponse> verifyPassword(
-      IdentitytoolkitRelyingpartyVerifyPasswordRequest request) {
+      IdentitytoolkitRelyingpartyVerifyPasswordRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -737,6 +869,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'verifyPassword';
 
@@ -756,6 +891,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [IdentitytoolkitRelyingpartyVerifyPhoneNumberResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -765,7 +903,8 @@
   /// this method will complete with the same error.
   async.Future<IdentitytoolkitRelyingpartyVerifyPhoneNumberResponse>
       verifyPhoneNumber(
-          IdentitytoolkitRelyingpartyVerifyPhoneNumberRequest request) {
+          IdentitytoolkitRelyingpartyVerifyPhoneNumberRequest request,
+          {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -776,6 +915,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'verifyPhoneNumber';
 
diff --git a/generated/googleapis/lib/kgsearch/v1.dart b/generated/googleapis/lib/kgsearch/v1.dart
index 863b0fd..82d79ef 100644
--- a/generated/googleapis/lib/kgsearch/v1.dart
+++ b/generated/googleapis/lib/kgsearch/v1.dart
@@ -38,8 +38,6 @@
   ///
   /// Request parameters:
   ///
-  /// [indent] - Enables indenting of json results.
-  ///
   /// [languages] - The list of language codes (defined in ISO 693) to run the
   /// query with,
   /// e.g. 'en'.
@@ -59,6 +57,11 @@
   /// (as defined in http://schema.org/Person). If multiple types are specified,
   /// returned entities will contain one or more of these types.
   ///
+  /// [indent] - Enables indenting of json results.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -67,13 +70,14 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SearchResponse> search(
-      {core.bool indent,
-      core.List<core.String> languages,
+      {core.List<core.String> languages,
       core.List<core.String> ids,
       core.int limit,
       core.bool prefix,
       core.String query,
-      core.List<core.String> types}) {
+      core.List<core.String> types,
+      core.bool indent,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -81,9 +85,6 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (indent != null) {
-      _queryParams["indent"] = ["${indent}"];
-    }
     if (languages != null) {
       _queryParams["languages"] = languages;
     }
@@ -102,6 +103,12 @@
     if (types != null) {
       _queryParams["types"] = types;
     }
+    if (indent != null) {
+      _queryParams["indent"] = ["${indent}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/entities:search';
 
diff --git a/generated/googleapis/lib/language/v1.dart b/generated/googleapis/lib/language/v1.dart
index 0bea219..35cb836 100644
--- a/generated/googleapis/lib/language/v1.dart
+++ b/generated/googleapis/lib/language/v1.dart
@@ -50,6 +50,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnalyzeEntitiesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -58,7 +61,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AnalyzeEntitiesResponse> analyzeEntities(
-      AnalyzeEntitiesRequest request) {
+      AnalyzeEntitiesRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -69,6 +73,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/documents:analyzeEntities';
 
@@ -88,6 +95,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnalyzeEntitySentimentResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -96,7 +106,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AnalyzeEntitySentimentResponse> analyzeEntitySentiment(
-      AnalyzeEntitySentimentRequest request) {
+      AnalyzeEntitySentimentRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -107,6 +118,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/documents:analyzeEntitySentiment';
 
@@ -126,6 +140,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnalyzeSentimentResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -134,7 +151,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AnalyzeSentimentResponse> analyzeSentiment(
-      AnalyzeSentimentRequest request) {
+      AnalyzeSentimentRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -145,6 +163,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/documents:analyzeSentiment';
 
@@ -166,6 +187,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnalyzeSyntaxResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -174,7 +198,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AnalyzeSyntaxResponse> analyzeSyntax(
-      AnalyzeSyntaxRequest request) {
+      AnalyzeSyntaxRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -185,6 +210,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/documents:analyzeSyntax';
 
@@ -204,6 +232,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnnotateTextResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -211,7 +242,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AnnotateTextResponse> annotateText(AnnotateTextRequest request) {
+  async.Future<AnnotateTextResponse> annotateText(AnnotateTextRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -222,6 +254,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/documents:annotateText';
 
diff --git a/generated/googleapis/lib/licensing/v1.dart b/generated/googleapis/lib/licensing/v1.dart
index be5a93f..4a84546 100644
--- a/generated/googleapis/lib/licensing/v1.dart
+++ b/generated/googleapis/lib/licensing/v1.dart
@@ -48,13 +48,17 @@
   ///
   /// [userId] - email id or unique Id of the user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String productId, core.String skuId, core.String userId) {
+      core.String productId, core.String skuId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -71,6 +75,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -99,6 +106,9 @@
   ///
   /// [userId] - email id or unique Id of the user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LicenseAssignment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -107,7 +117,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LicenseAssignment> get(
-      core.String productId, core.String skuId, core.String userId) {
+      core.String productId, core.String skuId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -124,6 +135,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$productId') +
         '/sku/' +
@@ -150,6 +164,9 @@
   ///
   /// [skuId] - Name for sku
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LicenseAssignment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -157,8 +174,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LicenseAssignment> insert(LicenseAssignmentInsert request,
-      core.String productId, core.String skuId) {
+  async.Future<LicenseAssignment> insert(
+      LicenseAssignmentInsert request, core.String productId, core.String skuId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -175,6 +193,9 @@
     if (skuId == null) {
       throw new core.ArgumentError("Parameter skuId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$productId') +
         '/sku/' +
@@ -206,6 +227,9 @@
   /// [pageToken] - Token to fetch the next page.Optional. By default server
   /// will return first page
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LicenseAssignmentList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -215,7 +239,7 @@
   /// this method will complete with the same error.
   async.Future<LicenseAssignmentList> listForProduct(
       core.String productId, core.String customerId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -236,6 +260,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$productId') + '/users';
 
@@ -266,6 +293,9 @@
   /// [pageToken] - Token to fetch the next page.Optional. By default server
   /// will return first page
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LicenseAssignmentList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -275,7 +305,7 @@
   /// this method will complete with the same error.
   async.Future<LicenseAssignmentList> listForProductAndSku(
       core.String productId, core.String skuId, core.String customerId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -299,6 +329,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$productId') +
         '/sku/' +
@@ -326,6 +359,9 @@
   ///
   /// [userId] - email id or unique Id of the user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LicenseAssignment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -334,7 +370,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LicenseAssignment> patch(LicenseAssignment request,
-      core.String productId, core.String skuId, core.String userId) {
+      core.String productId, core.String skuId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -354,6 +391,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$productId') +
         '/sku/' +
@@ -382,6 +422,9 @@
   ///
   /// [userId] - email id or unique Id of the user
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LicenseAssignment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -390,7 +433,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LicenseAssignment> update(LicenseAssignment request,
-      core.String productId, core.String skuId, core.String userId) {
+      core.String productId, core.String skuId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -410,6 +454,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$productId') +
         '/sku/' +
diff --git a/generated/googleapis/lib/logging/v2.dart b/generated/googleapis/lib/logging/v2.dart
index 892a279..13563c1 100644
--- a/generated/googleapis/lib/logging/v2.dart
+++ b/generated/googleapis/lib/logging/v2.dart
@@ -90,6 +90,9 @@
   /// Examples: "projects/my-logging-project", "organizations/123456789".
   /// Value must have pattern "^billingAccounts/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogExclusion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -97,7 +100,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogExclusion> create(LogExclusion request, core.String parent) {
+  async.Future<LogExclusion> create(LogExclusion request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -111,6 +115,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -137,6 +144,9 @@
   /// Example: "projects/my-project-id/exclusions/my-exclusion-id".
   /// Value must have pattern "^billingAccounts/[^/]+/exclusions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -144,7 +154,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -155,6 +165,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -179,6 +192,9 @@
   /// Example: "projects/my-project-id/exclusions/my-exclusion-id".
   /// Value must have pattern "^billingAccounts/[^/]+/exclusions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogExclusion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -186,7 +202,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogExclusion> get(core.String name) {
+  async.Future<LogExclusion> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -197,6 +213,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -231,6 +250,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListExclusionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -239,7 +261,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListExclusionsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -256,6 +278,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -291,6 +316,9 @@
   /// request.For example, to change the filter and description of an exclusion,
   /// specify an update_mask of "filter,description".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogExclusion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -299,7 +327,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogExclusion> patch(LogExclusion request, core.String name,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -316,6 +344,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -352,6 +383,9 @@
   /// For more information about log names, see LogEntry.
   /// Value must have pattern "^billingAccounts/[^/]+/logs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -359,7 +393,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String logName) {
+  async.Future<Empty> delete(core.String logName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -370,6 +404,9 @@
     if (logName == null) {
       throw new core.ArgumentError("Parameter logName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$logName');
 
@@ -404,6 +441,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLogsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -412,7 +452,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLogsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -429,6 +469,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$parent') + '/logs';
 
@@ -476,6 +519,9 @@
   /// be a unique service account used only for exports from the new sink. For
   /// more information, see writer_identity in LogSink.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -484,7 +530,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogSink> create(LogSink request, core.String parent,
-      {core.bool uniqueWriterIdentity}) {
+      {core.bool uniqueWriterIdentity, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -501,6 +547,9 @@
     if (uniqueWriterIdentity != null) {
       _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$parent') + '/sinks';
 
@@ -527,6 +576,9 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^billingAccounts/[^/]+/sinks/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -534,7 +586,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String sinkName) {
+  async.Future<Empty> delete(core.String sinkName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -545,6 +597,9 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
 
@@ -569,6 +624,9 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^billingAccounts/[^/]+/sinks/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -576,7 +634,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogSink> get(core.String sinkName) {
+  async.Future<LogSink> get(core.String sinkName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -587,6 +645,9 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
 
@@ -620,6 +681,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListSinksResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -628,7 +692,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListSinksResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -645,6 +709,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$parent') + '/sinks';
 
@@ -675,16 +742,6 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^billingAccounts/[^/]+/sinks/[^/]+$".
   ///
-  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
-  /// need an update. A sink field will be overwritten if, and only if, it is in
-  /// the update mask. name and output only fields cannot be updated.An empty
-  /// updateMask is temporarily treated as using the following mask for
-  /// backwards compatibility purposes:  destination,filter,includeChildren At
-  /// some point in the future, behavior will be removed and specifying an empty
-  /// updateMask will be an error.For a detailed FieldMask definition, see
-  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
-  /// updateMask=filter.
-  ///
   /// [uniqueWriterIdentity] - Optional. See sinks.create for a description of
   /// this field. When updating a sink, the effect of this field on the value of
   /// writer_identity in the updated sink depends on both the old and new values
@@ -696,6 +753,19 @@
   /// It is an error if the old value is true and the new value is set to false
   /// or defaulted to false.
   ///
+  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
+  /// need an update. A sink field will be overwritten if, and only if, it is in
+  /// the update mask. name and output only fields cannot be updated.An empty
+  /// updateMask is temporarily treated as using the following mask for
+  /// backwards compatibility purposes:  destination,filter,includeChildren At
+  /// some point in the future, behavior will be removed and specifying an empty
+  /// updateMask will be an error.For a detailed FieldMask definition, see
+  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+  /// updateMask=filter.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -704,7 +774,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogSink> patch(LogSink request, core.String sinkName,
-      {core.String updateMask, core.bool uniqueWriterIdentity}) {
+      {core.bool uniqueWriterIdentity,
+      core.String updateMask,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -718,11 +790,14 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if (uniqueWriterIdentity != null) {
+      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    }
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
-    if (uniqueWriterIdentity != null) {
-      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
@@ -754,16 +829,6 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^billingAccounts/[^/]+/sinks/[^/]+$".
   ///
-  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
-  /// need an update. A sink field will be overwritten if, and only if, it is in
-  /// the update mask. name and output only fields cannot be updated.An empty
-  /// updateMask is temporarily treated as using the following mask for
-  /// backwards compatibility purposes:  destination,filter,includeChildren At
-  /// some point in the future, behavior will be removed and specifying an empty
-  /// updateMask will be an error.For a detailed FieldMask definition, see
-  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
-  /// updateMask=filter.
-  ///
   /// [uniqueWriterIdentity] - Optional. See sinks.create for a description of
   /// this field. When updating a sink, the effect of this field on the value of
   /// writer_identity in the updated sink depends on both the old and new values
@@ -775,6 +840,19 @@
   /// It is an error if the old value is true and the new value is set to false
   /// or defaulted to false.
   ///
+  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
+  /// need an update. A sink field will be overwritten if, and only if, it is in
+  /// the update mask. name and output only fields cannot be updated.An empty
+  /// updateMask is temporarily treated as using the following mask for
+  /// backwards compatibility purposes:  destination,filter,includeChildren At
+  /// some point in the future, behavior will be removed and specifying an empty
+  /// updateMask will be an error.For a detailed FieldMask definition, see
+  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+  /// updateMask=filter.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -783,7 +861,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogSink> update(LogSink request, core.String sinkName,
-      {core.String updateMask, core.bool uniqueWriterIdentity}) {
+      {core.bool uniqueWriterIdentity,
+      core.String updateMask,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -797,11 +877,14 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if (uniqueWriterIdentity != null) {
+      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    }
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
-    if (uniqueWriterIdentity != null) {
-      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
@@ -828,6 +911,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLogEntriesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -835,7 +921,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListLogEntriesResponse> list(ListLogEntriesRequest request) {
+  async.Future<ListLogEntriesResponse> list(ListLogEntriesRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -846,6 +933,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/entries:list';
 
@@ -867,6 +957,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [WriteLogEntriesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -874,7 +967,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<WriteLogEntriesResponse> write(WriteLogEntriesRequest request) {
+  async.Future<WriteLogEntriesResponse> write(WriteLogEntriesRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -885,6 +979,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/entries:write';
 
@@ -931,6 +1028,9 @@
   /// Examples: "projects/my-logging-project", "organizations/123456789".
   /// Value must have pattern "^folders/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogExclusion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -938,7 +1038,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogExclusion> create(LogExclusion request, core.String parent) {
+  async.Future<LogExclusion> create(LogExclusion request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -952,6 +1053,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -978,6 +1082,9 @@
   /// Example: "projects/my-project-id/exclusions/my-exclusion-id".
   /// Value must have pattern "^folders/[^/]+/exclusions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -985,7 +1092,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -996,6 +1103,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1020,6 +1130,9 @@
   /// Example: "projects/my-project-id/exclusions/my-exclusion-id".
   /// Value must have pattern "^folders/[^/]+/exclusions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogExclusion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1027,7 +1140,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogExclusion> get(core.String name) {
+  async.Future<LogExclusion> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1038,6 +1151,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1072,6 +1188,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListExclusionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1080,7 +1199,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListExclusionsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1097,6 +1216,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -1132,6 +1254,9 @@
   /// request.For example, to change the filter and description of an exclusion,
   /// specify an update_mask of "filter,description".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogExclusion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1140,7 +1265,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogExclusion> patch(LogExclusion request, core.String name,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1157,6 +1282,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1192,6 +1320,9 @@
   /// For more information about log names, see LogEntry.
   /// Value must have pattern "^folders/[^/]+/logs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1199,7 +1330,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String logName) {
+  async.Future<Empty> delete(core.String logName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1210,6 +1341,9 @@
     if (logName == null) {
       throw new core.ArgumentError("Parameter logName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$logName');
 
@@ -1244,6 +1378,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLogsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1252,7 +1389,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLogsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1269,6 +1406,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$parent') + '/logs';
 
@@ -1315,6 +1455,9 @@
   /// be a unique service account used only for exports from the new sink. For
   /// more information, see writer_identity in LogSink.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1323,7 +1466,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogSink> create(LogSink request, core.String parent,
-      {core.bool uniqueWriterIdentity}) {
+      {core.bool uniqueWriterIdentity, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1340,6 +1483,9 @@
     if (uniqueWriterIdentity != null) {
       _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$parent') + '/sinks';
 
@@ -1366,6 +1512,9 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^folders/[^/]+/sinks/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1373,7 +1522,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String sinkName) {
+  async.Future<Empty> delete(core.String sinkName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1384,6 +1533,9 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
 
@@ -1408,6 +1560,9 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^folders/[^/]+/sinks/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1415,7 +1570,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogSink> get(core.String sinkName) {
+  async.Future<LogSink> get(core.String sinkName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1426,6 +1581,9 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
 
@@ -1459,6 +1617,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListSinksResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1467,7 +1628,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListSinksResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1484,6 +1645,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$parent') + '/sinks';
 
@@ -1514,16 +1678,6 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^folders/[^/]+/sinks/[^/]+$".
   ///
-  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
-  /// need an update. A sink field will be overwritten if, and only if, it is in
-  /// the update mask. name and output only fields cannot be updated.An empty
-  /// updateMask is temporarily treated as using the following mask for
-  /// backwards compatibility purposes:  destination,filter,includeChildren At
-  /// some point in the future, behavior will be removed and specifying an empty
-  /// updateMask will be an error.For a detailed FieldMask definition, see
-  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
-  /// updateMask=filter.
-  ///
   /// [uniqueWriterIdentity] - Optional. See sinks.create for a description of
   /// this field. When updating a sink, the effect of this field on the value of
   /// writer_identity in the updated sink depends on both the old and new values
@@ -1535,6 +1689,19 @@
   /// It is an error if the old value is true and the new value is set to false
   /// or defaulted to false.
   ///
+  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
+  /// need an update. A sink field will be overwritten if, and only if, it is in
+  /// the update mask. name and output only fields cannot be updated.An empty
+  /// updateMask is temporarily treated as using the following mask for
+  /// backwards compatibility purposes:  destination,filter,includeChildren At
+  /// some point in the future, behavior will be removed and specifying an empty
+  /// updateMask will be an error.For a detailed FieldMask definition, see
+  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+  /// updateMask=filter.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1543,7 +1710,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogSink> patch(LogSink request, core.String sinkName,
-      {core.String updateMask, core.bool uniqueWriterIdentity}) {
+      {core.bool uniqueWriterIdentity,
+      core.String updateMask,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1557,11 +1726,14 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if (uniqueWriterIdentity != null) {
+      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    }
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
-    if (uniqueWriterIdentity != null) {
-      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
@@ -1593,16 +1765,6 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^folders/[^/]+/sinks/[^/]+$".
   ///
-  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
-  /// need an update. A sink field will be overwritten if, and only if, it is in
-  /// the update mask. name and output only fields cannot be updated.An empty
-  /// updateMask is temporarily treated as using the following mask for
-  /// backwards compatibility purposes:  destination,filter,includeChildren At
-  /// some point in the future, behavior will be removed and specifying an empty
-  /// updateMask will be an error.For a detailed FieldMask definition, see
-  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
-  /// updateMask=filter.
-  ///
   /// [uniqueWriterIdentity] - Optional. See sinks.create for a description of
   /// this field. When updating a sink, the effect of this field on the value of
   /// writer_identity in the updated sink depends on both the old and new values
@@ -1614,6 +1776,19 @@
   /// It is an error if the old value is true and the new value is set to false
   /// or defaulted to false.
   ///
+  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
+  /// need an update. A sink field will be overwritten if, and only if, it is in
+  /// the update mask. name and output only fields cannot be updated.An empty
+  /// updateMask is temporarily treated as using the following mask for
+  /// backwards compatibility purposes:  destination,filter,includeChildren At
+  /// some point in the future, behavior will be removed and specifying an empty
+  /// updateMask will be an error.For a detailed FieldMask definition, see
+  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+  /// updateMask=filter.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1622,7 +1797,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogSink> update(LogSink request, core.String sinkName,
-      {core.String updateMask, core.bool uniqueWriterIdentity}) {
+      {core.bool uniqueWriterIdentity,
+      core.String updateMask,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1636,11 +1813,14 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if (uniqueWriterIdentity != null) {
+      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    }
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
-    if (uniqueWriterIdentity != null) {
-      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
@@ -1675,6 +1855,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListMonitoredResourceDescriptorsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1683,7 +1866,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListMonitoredResourceDescriptorsResponse> list(
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1697,6 +1880,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/monitoredResourceDescriptors';
 
@@ -1746,6 +1932,9 @@
   /// Examples: "projects/my-logging-project", "organizations/123456789".
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogExclusion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1753,7 +1942,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogExclusion> create(LogExclusion request, core.String parent) {
+  async.Future<LogExclusion> create(LogExclusion request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1767,6 +1957,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -1793,6 +1986,9 @@
   /// Example: "projects/my-project-id/exclusions/my-exclusion-id".
   /// Value must have pattern "^organizations/[^/]+/exclusions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1800,7 +1996,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1811,6 +2007,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1835,6 +2034,9 @@
   /// Example: "projects/my-project-id/exclusions/my-exclusion-id".
   /// Value must have pattern "^organizations/[^/]+/exclusions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogExclusion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1842,7 +2044,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogExclusion> get(core.String name) {
+  async.Future<LogExclusion> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1853,6 +2055,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1887,6 +2092,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListExclusionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1895,7 +2103,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListExclusionsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1912,6 +2120,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -1947,6 +2158,9 @@
   /// request.For example, to change the filter and description of an exclusion,
   /// specify an update_mask of "filter,description".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogExclusion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1955,7 +2169,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogExclusion> patch(LogExclusion request, core.String name,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1972,6 +2186,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -2008,6 +2225,9 @@
   /// For more information about log names, see LogEntry.
   /// Value must have pattern "^organizations/[^/]+/logs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2015,7 +2235,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String logName) {
+  async.Future<Empty> delete(core.String logName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2026,6 +2246,9 @@
     if (logName == null) {
       throw new core.ArgumentError("Parameter logName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$logName');
 
@@ -2060,6 +2283,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLogsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2068,7 +2294,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLogsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2085,6 +2311,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$parent') + '/logs';
 
@@ -2132,6 +2361,9 @@
   /// be a unique service account used only for exports from the new sink. For
   /// more information, see writer_identity in LogSink.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2140,7 +2372,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogSink> create(LogSink request, core.String parent,
-      {core.bool uniqueWriterIdentity}) {
+      {core.bool uniqueWriterIdentity, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2157,6 +2389,9 @@
     if (uniqueWriterIdentity != null) {
       _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$parent') + '/sinks';
 
@@ -2183,6 +2418,9 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^organizations/[^/]+/sinks/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2190,7 +2428,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String sinkName) {
+  async.Future<Empty> delete(core.String sinkName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2201,6 +2439,9 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
 
@@ -2225,6 +2466,9 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^organizations/[^/]+/sinks/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2232,7 +2476,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogSink> get(core.String sinkName) {
+  async.Future<LogSink> get(core.String sinkName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2243,6 +2487,9 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
 
@@ -2276,6 +2523,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListSinksResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2284,7 +2534,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListSinksResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2301,6 +2551,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$parent') + '/sinks';
 
@@ -2331,16 +2584,6 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^organizations/[^/]+/sinks/[^/]+$".
   ///
-  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
-  /// need an update. A sink field will be overwritten if, and only if, it is in
-  /// the update mask. name and output only fields cannot be updated.An empty
-  /// updateMask is temporarily treated as using the following mask for
-  /// backwards compatibility purposes:  destination,filter,includeChildren At
-  /// some point in the future, behavior will be removed and specifying an empty
-  /// updateMask will be an error.For a detailed FieldMask definition, see
-  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
-  /// updateMask=filter.
-  ///
   /// [uniqueWriterIdentity] - Optional. See sinks.create for a description of
   /// this field. When updating a sink, the effect of this field on the value of
   /// writer_identity in the updated sink depends on both the old and new values
@@ -2352,6 +2595,19 @@
   /// It is an error if the old value is true and the new value is set to false
   /// or defaulted to false.
   ///
+  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
+  /// need an update. A sink field will be overwritten if, and only if, it is in
+  /// the update mask. name and output only fields cannot be updated.An empty
+  /// updateMask is temporarily treated as using the following mask for
+  /// backwards compatibility purposes:  destination,filter,includeChildren At
+  /// some point in the future, behavior will be removed and specifying an empty
+  /// updateMask will be an error.For a detailed FieldMask definition, see
+  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+  /// updateMask=filter.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2360,7 +2616,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogSink> patch(LogSink request, core.String sinkName,
-      {core.String updateMask, core.bool uniqueWriterIdentity}) {
+      {core.bool uniqueWriterIdentity,
+      core.String updateMask,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2374,11 +2632,14 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if (uniqueWriterIdentity != null) {
+      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    }
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
-    if (uniqueWriterIdentity != null) {
-      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
@@ -2410,16 +2671,6 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^organizations/[^/]+/sinks/[^/]+$".
   ///
-  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
-  /// need an update. A sink field will be overwritten if, and only if, it is in
-  /// the update mask. name and output only fields cannot be updated.An empty
-  /// updateMask is temporarily treated as using the following mask for
-  /// backwards compatibility purposes:  destination,filter,includeChildren At
-  /// some point in the future, behavior will be removed and specifying an empty
-  /// updateMask will be an error.For a detailed FieldMask definition, see
-  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
-  /// updateMask=filter.
-  ///
   /// [uniqueWriterIdentity] - Optional. See sinks.create for a description of
   /// this field. When updating a sink, the effect of this field on the value of
   /// writer_identity in the updated sink depends on both the old and new values
@@ -2431,6 +2682,19 @@
   /// It is an error if the old value is true and the new value is set to false
   /// or defaulted to false.
   ///
+  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
+  /// need an update. A sink field will be overwritten if, and only if, it is in
+  /// the update mask. name and output only fields cannot be updated.An empty
+  /// updateMask is temporarily treated as using the following mask for
+  /// backwards compatibility purposes:  destination,filter,includeChildren At
+  /// some point in the future, behavior will be removed and specifying an empty
+  /// updateMask will be an error.For a detailed FieldMask definition, see
+  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+  /// updateMask=filter.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2439,7 +2703,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogSink> update(LogSink request, core.String sinkName,
-      {core.String updateMask, core.bool uniqueWriterIdentity}) {
+      {core.bool uniqueWriterIdentity,
+      core.String updateMask,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2453,11 +2719,14 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if (uniqueWriterIdentity != null) {
+      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    }
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
-    if (uniqueWriterIdentity != null) {
-      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
@@ -2508,6 +2777,9 @@
   /// Examples: "projects/my-logging-project", "organizations/123456789".
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogExclusion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2515,7 +2787,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogExclusion> create(LogExclusion request, core.String parent) {
+  async.Future<LogExclusion> create(LogExclusion request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2529,6 +2802,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -2555,6 +2831,9 @@
   /// Example: "projects/my-project-id/exclusions/my-exclusion-id".
   /// Value must have pattern "^projects/[^/]+/exclusions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2562,7 +2841,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2573,6 +2852,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -2597,6 +2879,9 @@
   /// Example: "projects/my-project-id/exclusions/my-exclusion-id".
   /// Value must have pattern "^projects/[^/]+/exclusions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogExclusion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2604,7 +2889,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogExclusion> get(core.String name) {
+  async.Future<LogExclusion> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2615,6 +2900,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -2649,6 +2937,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListExclusionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2657,7 +2948,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListExclusionsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2674,6 +2965,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -2709,6 +3003,9 @@
   /// request.For example, to change the filter and description of an exclusion,
   /// specify an update_mask of "filter,description".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogExclusion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2717,7 +3014,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogExclusion> patch(LogExclusion request, core.String name,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2734,6 +3031,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -2769,6 +3069,9 @@
   /// For more information about log names, see LogEntry.
   /// Value must have pattern "^projects/[^/]+/logs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2776,7 +3079,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String logName) {
+  async.Future<Empty> delete(core.String logName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2787,6 +3090,9 @@
     if (logName == null) {
       throw new core.ArgumentError("Parameter logName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$logName');
 
@@ -2821,6 +3127,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLogsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2829,7 +3138,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLogsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2846,6 +3155,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$parent') + '/logs';
 
@@ -2875,6 +3187,9 @@
   /// The new metric must be provided in the request.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogMetric].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2882,7 +3197,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogMetric> create(LogMetric request, core.String parent) {
+  async.Future<LogMetric> create(LogMetric request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2896,6 +3212,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v2/' + commons.Escaper.ecapeVariableReserved('$parent') + '/metrics';
@@ -2918,6 +3237,9 @@
   ///
   /// Value must have pattern "^projects/[^/]+/metrics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2925,7 +3247,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String metricName) {
+  async.Future<Empty> delete(core.String metricName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2936,6 +3258,9 @@
     if (metricName == null) {
       throw new core.ArgumentError("Parameter metricName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$metricName');
 
@@ -2957,6 +3282,9 @@
   ///
   /// Value must have pattern "^projects/[^/]+/metrics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogMetric].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2964,7 +3292,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogMetric> get(core.String metricName) {
+  async.Future<LogMetric> get(core.String metricName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2975,6 +3303,9 @@
     if (metricName == null) {
       throw new core.ArgumentError("Parameter metricName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$metricName');
 
@@ -3005,6 +3336,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLogMetricsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3013,7 +3347,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLogMetricsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3030,6 +3364,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v2/' + commons.Escaper.ecapeVariableReserved('$parent') + '/metrics';
@@ -3056,6 +3393,9 @@
   /// [PROJECT_ID], then a new metric is created.
   /// Value must have pattern "^projects/[^/]+/metrics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogMetric].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3063,7 +3403,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogMetric> update(LogMetric request, core.String metricName) {
+  async.Future<LogMetric> update(LogMetric request, core.String metricName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3077,6 +3418,9 @@
     if (metricName == null) {
       throw new core.ArgumentError("Parameter metricName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$metricName');
 
@@ -3123,6 +3467,9 @@
   /// be a unique service account used only for exports from the new sink. For
   /// more information, see writer_identity in LogSink.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3131,7 +3478,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogSink> create(LogSink request, core.String parent,
-      {core.bool uniqueWriterIdentity}) {
+      {core.bool uniqueWriterIdentity, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3148,6 +3495,9 @@
     if (uniqueWriterIdentity != null) {
       _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$parent') + '/sinks';
 
@@ -3174,6 +3524,9 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^projects/[^/]+/sinks/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3181,7 +3534,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String sinkName) {
+  async.Future<Empty> delete(core.String sinkName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3192,6 +3545,9 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
 
@@ -3216,6 +3572,9 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^projects/[^/]+/sinks/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3223,7 +3582,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogSink> get(core.String sinkName) {
+  async.Future<LogSink> get(core.String sinkName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3234,6 +3593,9 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
 
@@ -3267,6 +3629,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListSinksResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3275,7 +3640,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListSinksResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3292,6 +3657,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$parent') + '/sinks';
 
@@ -3322,16 +3690,6 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^projects/[^/]+/sinks/[^/]+$".
   ///
-  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
-  /// need an update. A sink field will be overwritten if, and only if, it is in
-  /// the update mask. name and output only fields cannot be updated.An empty
-  /// updateMask is temporarily treated as using the following mask for
-  /// backwards compatibility purposes:  destination,filter,includeChildren At
-  /// some point in the future, behavior will be removed and specifying an empty
-  /// updateMask will be an error.For a detailed FieldMask definition, see
-  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
-  /// updateMask=filter.
-  ///
   /// [uniqueWriterIdentity] - Optional. See sinks.create for a description of
   /// this field. When updating a sink, the effect of this field on the value of
   /// writer_identity in the updated sink depends on both the old and new values
@@ -3343,6 +3701,19 @@
   /// It is an error if the old value is true and the new value is set to false
   /// or defaulted to false.
   ///
+  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
+  /// need an update. A sink field will be overwritten if, and only if, it is in
+  /// the update mask. name and output only fields cannot be updated.An empty
+  /// updateMask is temporarily treated as using the following mask for
+  /// backwards compatibility purposes:  destination,filter,includeChildren At
+  /// some point in the future, behavior will be removed and specifying an empty
+  /// updateMask will be an error.For a detailed FieldMask definition, see
+  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+  /// updateMask=filter.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3351,7 +3722,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogSink> patch(LogSink request, core.String sinkName,
-      {core.String updateMask, core.bool uniqueWriterIdentity}) {
+      {core.bool uniqueWriterIdentity,
+      core.String updateMask,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3365,11 +3738,14 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if (uniqueWriterIdentity != null) {
+      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    }
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
-    if (uniqueWriterIdentity != null) {
-      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
@@ -3401,16 +3777,6 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^projects/[^/]+/sinks/[^/]+$".
   ///
-  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
-  /// need an update. A sink field will be overwritten if, and only if, it is in
-  /// the update mask. name and output only fields cannot be updated.An empty
-  /// updateMask is temporarily treated as using the following mask for
-  /// backwards compatibility purposes:  destination,filter,includeChildren At
-  /// some point in the future, behavior will be removed and specifying an empty
-  /// updateMask will be an error.For a detailed FieldMask definition, see
-  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
-  /// updateMask=filter.
-  ///
   /// [uniqueWriterIdentity] - Optional. See sinks.create for a description of
   /// this field. When updating a sink, the effect of this field on the value of
   /// writer_identity in the updated sink depends on both the old and new values
@@ -3422,6 +3788,19 @@
   /// It is an error if the old value is true and the new value is set to false
   /// or defaulted to false.
   ///
+  /// [updateMask] - Optional. Field mask that specifies the fields in sink that
+  /// need an update. A sink field will be overwritten if, and only if, it is in
+  /// the update mask. name and output only fields cannot be updated.An empty
+  /// updateMask is temporarily treated as using the following mask for
+  /// backwards compatibility purposes:  destination,filter,includeChildren At
+  /// some point in the future, behavior will be removed and specifying an empty
+  /// updateMask will be an error.For a detailed FieldMask definition, see
+  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmaskExample:
+  /// updateMask=filter.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3430,7 +3809,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogSink> update(LogSink request, core.String sinkName,
-      {core.String updateMask, core.bool uniqueWriterIdentity}) {
+      {core.bool uniqueWriterIdentity,
+      core.String updateMask,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3444,11 +3825,14 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if (uniqueWriterIdentity != null) {
+      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    }
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
-    if (uniqueWriterIdentity != null) {
-      _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/' + commons.Escaper.ecapeVariableReserved('$sinkName');
@@ -4892,6 +5276,8 @@
 
   /// A concise name for the metric, which can be displayed in user interfaces.
   /// Use sentence case without an ending period, for example "Request count".
+  /// This field is optional but it is recommended to be set for any metrics
+  /// associated with user-visible concepts, such as Quota.
   core.String displayName;
 
   /// The set of labels that can be used to describe a specific instance of this
@@ -4913,13 +5299,7 @@
   /// and sets a new start time for the following points.
   core.String metricKind;
 
-  /// The resource name of the metric descriptor. Depending on the
-  /// implementation, the name typically includes: (1) the parent resource name
-  /// that defines the scope of the metric type or of its data; and (2) the
-  /// metric's URL-encoded type, which also appears in the type field of this
-  /// descriptor. For example, following is the resource name of a custom metric
-  /// within the GCP project my-project-id:
-  /// "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
+  /// The resource name of the metric descriptor.
   core.String name;
 
   /// The metric type, including its DNS name prefix. The type is not
diff --git a/generated/googleapis/lib/manufacturers/v1.dart b/generated/googleapis/lib/manufacturers/v1.dart
index dbfbffb..b1b3a07 100644
--- a/generated/googleapis/lib/manufacturers/v1.dart
+++ b/generated/googleapis/lib/manufacturers/v1.dart
@@ -68,6 +68,9 @@
   /// https://support.google.com/manufacturers/answer/6124116#id.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -75,7 +78,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String parent, core.String name) {
+  async.Future<Empty> delete(core.String parent, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -89,6 +93,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -132,6 +139,9 @@
   /// https://support.google.com/manufacturers/answer/6124116#id.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Product].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -139,7 +149,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Product> get(core.String parent, core.String name) {
+  async.Future<Product> get(core.String parent, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -153,6 +164,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -177,12 +191,15 @@
   /// `account_id` - The ID of the Manufacturer Center account.
   /// Value must have pattern "^accounts/[^/]+$".
   ///
-  /// [pageToken] - The token returned by the previous request.
-  ///
   /// [pageSize] - Maximum number of product statuses to return in the response,
   /// used for
   /// paging.
   ///
+  /// [pageToken] - The token returned by the previous request.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListProductsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -191,7 +208,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListProductsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -202,11 +219,14 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url =
@@ -256,6 +276,9 @@
   /// https://support.google.com/manufacturers/answer/6124116#id.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Product].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -264,7 +287,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Product> update(
-      Product request, core.String parent, core.String name) {
+      Product request, core.String parent, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -281,6 +305,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -389,7 +416,7 @@
   /// https://support.google.com/manufacturers/answer/6124116#productpage.
   core.String productPageUrl;
 
-  /// The category of the product. For more information, see
+  /// The type or category of the product. For more information, see
   /// https://support.google.com/manufacturers/answer/6124116#producttype.
   core.List<core.String> productType;
 
@@ -417,9 +444,9 @@
   /// see https://support.google.com/manufacturers/answer/6124116#price.
   Price suggestedRetailPrice;
 
-  /// The target account id. Should only be used in the accounts of the data
+  /// The target client id. Should only be used in the accounts of the data
   /// partners.
-  core.String targetAccountId;
+  core.String targetClientId;
 
   /// The theme of the product. For more information, see
   /// https://support.google.com/manufacturers/answer/6124116#theme.
@@ -529,8 +556,8 @@
     if (_json.containsKey("suggestedRetailPrice")) {
       suggestedRetailPrice = new Price.fromJson(_json["suggestedRetailPrice"]);
     }
-    if (_json.containsKey("targetAccountId")) {
-      targetAccountId = _json["targetAccountId"];
+    if (_json.containsKey("targetClientId")) {
+      targetClientId = _json["targetClientId"];
     }
     if (_json.containsKey("theme")) {
       theme = _json["theme"];
@@ -636,8 +663,8 @@
     if (suggestedRetailPrice != null) {
       _json["suggestedRetailPrice"] = (suggestedRetailPrice).toJson();
     }
-    if (targetAccountId != null) {
-      _json["targetAccountId"] = targetAccountId;
+    if (targetClientId != null) {
+      _json["targetClientId"] = targetClientId;
     }
     if (theme != null) {
       _json["theme"] = theme;
@@ -791,8 +818,9 @@
   /// The status of the image.
   /// @OutputOnly
   /// Possible string values are:
-  /// - "STATUS_UNSPECIFIED" : Status is unspecified. Should not be used.
-  /// - "PENDING_PROCESSING" : Image was uploaded and is being processed.
+  /// - "STATUS_UNSPECIFIED" : The image status is unspecified. Should not be
+  /// used.
+  /// - "PENDING_PROCESSING" : The image was uploaded and is being processed.
   /// - "PENDING_CRAWL" : The image crawl is still pending.
   /// - "OK" : The image was processed and it meets the requirements.
   /// - "ROBOTED" : The image URL is protected by robots.txt file and cannot be
@@ -805,6 +833,9 @@
   /// - "TOO_BIG" : The image is too big.
   /// - "CRAWL_SKIPPED" : The image was manually overridden and will not be
   /// crawled.
+  /// - "HOSTLOADED" : The image crawl was postponed to avoid overloading the
+  /// host.
+  /// - "HTTP_404" : The image URL returned a "404 Not Found" error.
   core.String status;
 
   /// The type of the image, i.e., crawled or uploaded.
diff --git a/generated/googleapis/lib/mirror/v1.dart b/generated/googleapis/lib/mirror/v1.dart
index dd0cef0..7ab6e15 100644
--- a/generated/googleapis/lib/mirror/v1.dart
+++ b/generated/googleapis/lib/mirror/v1.dart
@@ -67,6 +67,9 @@
   /// [accountName] - The name of the account to be passed to the Android
   /// Account Manager.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -75,7 +78,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Account> insert(Account request, core.String userToken,
-      core.String accountType, core.String accountName) {
+      core.String accountType, core.String accountName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -95,6 +99,9 @@
     if (accountName == null) {
       throw new core.ArgumentError("Parameter accountName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$userToken') +
@@ -124,12 +131,15 @@
   ///
   /// [id] - The ID of the contact.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String id) {
+  async.Future delete(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -140,6 +150,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -160,6 +173,9 @@
   ///
   /// [id] - The ID of the contact.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Contact].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -167,7 +183,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Contact> get(core.String id) {
+  async.Future<Contact> get(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -178,6 +194,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'contacts/' + commons.Escaper.ecapeVariable('$id');
 
@@ -196,6 +215,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Contact].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -203,7 +225,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Contact> insert(Contact request) {
+  async.Future<Contact> insert(Contact request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -214,6 +236,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'contacts';
 
@@ -230,6 +255,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContactsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -237,7 +265,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ContactsListResponse> list() {
+  async.Future<ContactsListResponse> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -245,6 +273,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'contacts';
 
     var _response = _requester.request(_url, "GET",
@@ -264,6 +296,9 @@
   ///
   /// [id] - The ID of the contact.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Contact].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -271,7 +306,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Contact> patch(Contact request, core.String id) {
+  async.Future<Contact> patch(Contact request, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -285,6 +321,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'contacts/' + commons.Escaper.ecapeVariable('$id');
 
@@ -305,6 +344,9 @@
   ///
   /// [id] - The ID of the contact.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Contact].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -312,7 +354,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Contact> update(Contact request, core.String id) {
+  async.Future<Contact> update(Contact request, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -326,6 +369,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'contacts/' + commons.Escaper.ecapeVariable('$id');
 
@@ -350,6 +396,9 @@
   ///
   /// [id] - The ID of the location or latest for the last known location.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Location].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -357,7 +406,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Location> get(core.String id) {
+  async.Future<Location> get(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -368,6 +417,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'locations/' + commons.Escaper.ecapeVariable('$id');
 
@@ -384,6 +436,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LocationsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -391,7 +446,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LocationsListResponse> list() {
+  async.Future<LocationsListResponse> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -399,6 +454,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'locations';
 
     var _response = _requester.request(_url, "GET",
@@ -426,6 +485,9 @@
   /// - timezone - The key to the user’s current time zone region as defined in
   /// the tz database. Example: America/Los_Angeles.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Setting].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -433,7 +495,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Setting> get(core.String id) {
+  async.Future<Setting> get(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -444,6 +506,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'settings/' + commons.Escaper.ecapeVariable('$id');
 
@@ -468,12 +533,15 @@
   ///
   /// [id] - The ID of the subscription.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String id) {
+  async.Future delete(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -484,6 +552,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -504,6 +575,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -511,7 +585,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Subscription> insert(Subscription request) {
+  async.Future<Subscription> insert(Subscription request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -522,6 +597,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'subscriptions';
 
@@ -538,6 +616,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SubscriptionsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -545,7 +626,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SubscriptionsListResponse> list() {
+  async.Future<SubscriptionsListResponse> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -553,6 +634,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'subscriptions';
 
     var _response = _requester.request(_url, "GET",
@@ -573,6 +658,9 @@
   ///
   /// [id] - The ID of the subscription.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -580,7 +668,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Subscription> update(Subscription request, core.String id) {
+  async.Future<Subscription> update(Subscription request, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -594,6 +683,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'subscriptions/' + commons.Escaper.ecapeVariable('$id');
 
@@ -621,12 +713,15 @@
   ///
   /// [id] - The ID of the timeline item.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String id) {
+  async.Future delete(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -637,6 +732,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -657,6 +755,9 @@
   ///
   /// [id] - The ID of the timeline item.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TimelineItem].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -664,7 +765,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TimelineItem> get(core.String id) {
+  async.Future<TimelineItem> get(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -675,6 +776,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'timeline/' + commons.Escaper.ecapeVariable('$id');
 
@@ -693,6 +797,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -707,7 +814,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TimelineItem> insert(TimelineItem request,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -719,6 +827,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -767,6 +878,9 @@
   /// [sourceItemId] - If provided, only items with the given sourceItemId will
   /// be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TimelineListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -781,7 +895,8 @@
       core.String orderBy,
       core.String pageToken,
       core.bool pinnedOnly,
-      core.String sourceItemId}) {
+      core.String sourceItemId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -810,6 +925,9 @@
     if (sourceItemId != null) {
       _queryParams["sourceItemId"] = [sourceItemId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'timeline';
 
@@ -830,6 +948,9 @@
   ///
   /// [id] - The ID of the timeline item.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TimelineItem].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -837,7 +958,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TimelineItem> patch(TimelineItem request, core.String id) {
+  async.Future<TimelineItem> patch(TimelineItem request, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -851,6 +973,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'timeline/' + commons.Escaper.ecapeVariable('$id');
 
@@ -871,6 +996,9 @@
   ///
   /// [id] - The ID of the timeline item.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -885,7 +1013,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TimelineItem> update(TimelineItem request, core.String id,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -900,6 +1029,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -938,12 +1070,16 @@
   ///
   /// [attachmentId] - The ID of the attachment.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String itemId, core.String attachmentId) {
+  async.Future delete(core.String itemId, core.String attachmentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -957,6 +1093,9 @@
     if (attachmentId == null) {
       throw new core.ArgumentError("Parameter attachmentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -982,6 +1121,9 @@
   ///
   /// [attachmentId] - The ID of the attachment.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -998,7 +1140,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future get(core.String itemId, core.String attachmentId,
-      {commons.DownloadOptions downloadOptions:
+      {core.String $fields,
+      commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -1013,6 +1156,9 @@
     if (attachmentId == null) {
       throw new core.ArgumentError("Parameter attachmentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -1041,6 +1187,9 @@
   ///
   /// [itemId] - The ID of the timeline item the attachment belongs to.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -1055,7 +1204,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Attachment> insert(core.String itemId,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -1067,6 +1217,9 @@
     if (itemId == null) {
       throw new core.ArgumentError("Parameter itemId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -1100,6 +1253,9 @@
   ///
   /// [itemId] - The ID of the timeline item whose attachments should be listed.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AttachmentsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1107,7 +1263,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AttachmentsListResponse> list(core.String itemId) {
+  async.Future<AttachmentsListResponse> list(core.String itemId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1118,6 +1275,9 @@
     if (itemId == null) {
       throw new core.ArgumentError("Parameter itemId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'timeline/' + commons.Escaper.ecapeVariable('$itemId') + '/attachments';
diff --git a/generated/googleapis/lib/ml/v1.dart b/generated/googleapis/lib/ml/v1.dart
index c208c71..d663c66 100644
--- a/generated/googleapis/lib/ml/v1.dart
+++ b/generated/googleapis/lib/ml/v1.dart
@@ -52,6 +52,9 @@
   /// [name] - Required. The project name.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleCloudMlV1GetConfigResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -59,7 +62,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleCloudMlV1GetConfigResponse> getConfig(core.String name) {
+  async.Future<GoogleCloudMlV1GetConfigResponse> getConfig(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -70,6 +74,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':getConfig';
@@ -98,6 +105,9 @@
   /// resource.
   /// Value must have pattern "^projects/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleApiHttpBody].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -106,7 +116,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleApiHttpBody> predict(
-      GoogleCloudMlV1PredictRequest request, core.String name) {
+      GoogleCloudMlV1PredictRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -120,6 +131,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':predict';
 
@@ -147,6 +161,9 @@
   /// [name] - Required. The name of the job to cancel.
   /// Value must have pattern "^projects/[^/]+/jobs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleProtobufEmpty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -155,7 +172,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleProtobufEmpty> cancel(
-      GoogleCloudMlV1CancelJobRequest request, core.String name) {
+      GoogleCloudMlV1CancelJobRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -169,6 +187,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':cancel';
 
@@ -190,6 +211,9 @@
   /// [parent] - Required. The project name.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleCloudMlV1Job].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -198,7 +222,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleCloudMlV1Job> create(
-      GoogleCloudMlV1Job request, core.String parent) {
+      GoogleCloudMlV1Job request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -212,6 +237,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/jobs';
 
@@ -231,6 +259,9 @@
   /// [name] - Required. The name of the job to get the description of.
   /// Value must have pattern "^projects/[^/]+/jobs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleCloudMlV1Job].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -238,7 +269,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleCloudMlV1Job> get(core.String name) {
+  async.Future<GoogleCloudMlV1Job> get(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -249,6 +281,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -272,6 +307,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/jobs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleIamV1Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -279,7 +317,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleIamV1Policy> getIamPolicy(core.String resource) {
+  async.Future<GoogleIamV1Policy> getIamPolicy(core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -290,6 +329,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -311,6 +353,8 @@
   /// [parent] - Required. The name of the project for which to list jobs.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [filter] - Optional. Specifies the subset of jobs to retrieve.
+  ///
   /// [pageToken] - Optional. A page token to request the next page of results.
   ///
   /// You get the token from the `next_page_token` field of the response from
@@ -323,7 +367,8 @@
   ///
   /// The default value is 20, and the maximum page size is 100.
   ///
-  /// [filter] - Optional. Specifies the subset of jobs to retrieve.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [GoogleCloudMlV1ListJobsResponse].
   ///
@@ -333,7 +378,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleCloudMlV1ListJobsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize, core.String filter}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -344,14 +392,17 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/jobs';
@@ -378,6 +429,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/jobs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleIamV1Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -386,7 +440,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleIamV1Policy> setIamPolicy(
-      GoogleIamV1SetIamPolicyRequest request, core.String resource) {
+      GoogleIamV1SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -400,6 +455,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -431,6 +489,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/jobs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleIamV1TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -439,7 +500,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleIamV1TestIamPermissionsResponse> testIamPermissions(
-      GoogleIamV1TestIamPermissionsRequest request, core.String resource) {
+      GoogleIamV1TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -453,6 +515,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -490,6 +555,9 @@
   /// [parent] - Required. The project name.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleCloudMlV1Model].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -498,7 +566,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleCloudMlV1Model> create(
-      GoogleCloudMlV1Model request, core.String parent) {
+      GoogleCloudMlV1Model request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -512,6 +581,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/models';
 
@@ -535,6 +607,9 @@
   /// [name] - Required. The name of the model.
   /// Value must have pattern "^projects/[^/]+/models/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleLongrunningOperation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -542,7 +617,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleLongrunningOperation> delete(core.String name) {
+  async.Future<GoogleLongrunningOperation> delete(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -553,6 +629,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -575,6 +654,9 @@
   /// [name] - Required. The name of the model.
   /// Value must have pattern "^projects/[^/]+/models/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleCloudMlV1Model].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -582,7 +664,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleCloudMlV1Model> get(core.String name) {
+  async.Future<GoogleCloudMlV1Model> get(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -593,6 +676,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -616,6 +702,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/models/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleIamV1Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -623,7 +712,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleIamV1Policy> getIamPolicy(core.String resource) {
+  async.Future<GoogleIamV1Policy> getIamPolicy(core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -634,6 +724,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -659,11 +752,6 @@
   /// listed.
   /// Value must have pattern "^projects/[^/]+$".
   ///
-  /// [pageToken] - Optional. A page token to request the next page of results.
-  ///
-  /// You get the token from the `next_page_token` field of the response from
-  /// the previous call.
-  ///
   /// [pageSize] - Optional. The number of models to retrieve per "page" of
   /// results. If there
   /// are more remaining results than this number, the response message will
@@ -671,6 +759,14 @@
   ///
   /// The default value is 20, and the maximum page size is 100.
   ///
+  /// [pageToken] - Optional. A page token to request the next page of results.
+  ///
+  /// You get the token from the `next_page_token` field of the response from
+  /// the previous call.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleCloudMlV1ListModelsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -679,7 +775,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleCloudMlV1ListModelsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -690,11 +786,14 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/models';
@@ -742,6 +841,9 @@
   /// Currently the supported update masks are `description`,
   /// `default_version.name`, `labels`, and `etag`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleLongrunningOperation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -751,7 +853,7 @@
   /// this method will complete with the same error.
   async.Future<GoogleLongrunningOperation> patch(
       GoogleCloudMlV1Model request, core.String name,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -768,6 +870,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -793,6 +898,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/models/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleIamV1Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -801,7 +909,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleIamV1Policy> setIamPolicy(
-      GoogleIamV1SetIamPolicyRequest request, core.String resource) {
+      GoogleIamV1SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -815,6 +924,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -846,6 +958,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/models/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleIamV1TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -854,7 +969,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleIamV1TestIamPermissionsResponse> testIamPermissions(
-      GoogleIamV1TestIamPermissionsRequest request, core.String resource) {
+      GoogleIamV1TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -868,6 +984,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -906,6 +1025,9 @@
   /// [parent] - Required. The name of the model.
   /// Value must have pattern "^projects/[^/]+/models/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleLongrunningOperation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -914,7 +1036,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleLongrunningOperation> create(
-      GoogleCloudMlV1Version request, core.String parent) {
+      GoogleCloudMlV1Version request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -928,6 +1051,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/versions';
@@ -958,6 +1084,9 @@
   /// [projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list).
   /// Value must have pattern "^projects/[^/]+/models/[^/]+/versions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleLongrunningOperation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -965,7 +1094,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleLongrunningOperation> delete(core.String name) {
+  async.Future<GoogleLongrunningOperation> delete(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -976,6 +1106,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1001,6 +1134,9 @@
   /// [name] - Required. The name of the version.
   /// Value must have pattern "^projects/[^/]+/models/[^/]+/versions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleCloudMlV1Version].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1008,7 +1144,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleCloudMlV1Version> get(core.String name) {
+  async.Future<GoogleCloudMlV1Version> get(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1019,6 +1156,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1054,6 +1194,9 @@
   ///
   /// The default value is 20, and the maximum page size is 100.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleCloudMlV1ListVersionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1062,7 +1205,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleCloudMlV1ListVersionsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1079,6 +1222,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/versions';
@@ -1123,6 +1269,9 @@
   /// Currently the only supported update masks are `description`, `labels`, and
   /// `etag`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleLongrunningOperation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1132,7 +1281,7 @@
   /// this method will complete with the same error.
   async.Future<GoogleLongrunningOperation> patch(
       GoogleCloudMlV1Version request, core.String name,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1149,6 +1298,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1181,6 +1333,9 @@
   /// [projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list).
   /// Value must have pattern "^projects/[^/]+/models/[^/]+/versions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleCloudMlV1Version].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1189,7 +1344,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleCloudMlV1Version> setDefault(
-      GoogleCloudMlV1SetDefaultVersionRequest request, core.String name) {
+      GoogleCloudMlV1SetDefaultVersionRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1203,6 +1359,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':setDefault';
@@ -1239,6 +1398,9 @@
   /// [name] - The name of the operation resource to be cancelled.
   /// Value must have pattern "^projects/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleProtobufEmpty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1246,7 +1408,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleProtobufEmpty> cancel(core.String name) {
+  async.Future<GoogleProtobufEmpty> cancel(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1257,6 +1420,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':cancel';
 
@@ -1279,6 +1445,9 @@
   /// [name] - The name of the operation resource to be deleted.
   /// Value must have pattern "^projects/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleProtobufEmpty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1286,7 +1455,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleProtobufEmpty> delete(core.String name) {
+  async.Future<GoogleProtobufEmpty> delete(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1297,6 +1467,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1318,6 +1491,9 @@
   /// [name] - The name of the operation resource.
   /// Value must have pattern "^projects/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleLongrunningOperation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1325,7 +1501,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleLongrunningOperation> get(core.String name) {
+  async.Future<GoogleLongrunningOperation> get(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1336,6 +1513,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1366,11 +1546,14 @@
   /// [name] - The name of the operation's parent resource.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [pageSize] - The standard list page size.
+  ///
   /// [filter] - The standard list filter.
   ///
   /// [pageToken] - The standard list page token.
   ///
-  /// [pageSize] - The standard list page size.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [GoogleLongrunningListOperationsResponse].
   ///
@@ -1380,7 +1563,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleLongrunningListOperationsResponse> list(core.String name,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.int pageSize,
+      core.String filter,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1391,14 +1577,17 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
     if (filter != null) {
       _queryParams["filter"] = [filter];
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url =
diff --git a/generated/googleapis/lib/monitoring/v3.dart b/generated/googleapis/lib/monitoring/v3.dart
index 3532185..424bc1a 100644
--- a/generated/googleapis/lib/monitoring/v3.dart
+++ b/generated/googleapis/lib/monitoring/v3.dart
@@ -37,6 +37,8 @@
   final commons.ApiRequester _requester;
 
   ProjectsResourceApi get projects => new ProjectsResourceApi(_requester);
+  UptimeCheckIpsResourceApi get uptimeCheckIps =>
+      new UptimeCheckIpsResourceApi(_requester);
 
   MonitoringApi(http.Client client,
       {core.String rootUrl: "https://monitoring.googleapis.com/",
@@ -59,6 +61,8 @@
           new ProjectsMonitoredResourceDescriptorsResourceApi(_requester);
   ProjectsTimeSeriesResourceApi get timeSeries =>
       new ProjectsTimeSeriesResourceApi(_requester);
+  ProjectsUptimeCheckConfigsResourceApi get uptimeCheckConfigs =>
+      new ProjectsUptimeCheckConfigsResourceApi(_requester);
 
   ProjectsResourceApi(commons.ApiRequester client) : _requester = client;
 }
@@ -81,6 +85,9 @@
   /// "projects/PROJECT_ID_OR_NUMBER".
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreateCollectdTimeSeriesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -89,7 +96,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreateCollectdTimeSeriesResponse> create(
-      CreateCollectdTimeSeriesRequest request, core.String name) {
+      CreateCollectdTimeSeriesRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -103,6 +111,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v3/' +
         commons.Escaper.ecapeVariableReserved('$name') +
@@ -140,6 +151,9 @@
   /// [validateOnly] - If true, validate this request but do not create the
   /// group.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Group].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -148,7 +162,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Group> create(Group request, core.String name,
-      {core.bool validateOnly}) {
+      {core.bool validateOnly, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -165,6 +179,9 @@
     if (validateOnly != null) {
       _queryParams["validateOnly"] = ["${validateOnly}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name') + '/groups';
 
@@ -185,6 +202,9 @@
   /// "projects/{project_id_or_number}/groups/{group_id}".
   /// Value must have pattern "^projects/[^/]+/groups/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -192,7 +212,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -203,6 +223,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -223,6 +246,9 @@
   /// "projects/{project_id_or_number}/groups/{group_id}".
   /// Value must have pattern "^projects/[^/]+/groups/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Group].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -230,7 +256,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Group> get(core.String name) {
+  async.Future<Group> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -241,6 +267,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -287,6 +316,9 @@
   /// ancestor. If the specified group has no immediate parent, the results are
   /// empty.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListGroupsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -299,7 +331,8 @@
       core.String descendantsOfGroup,
       core.String pageToken,
       core.int pageSize,
-      core.String ancestorsOfGroup}) {
+      core.String ancestorsOfGroup,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -325,6 +358,9 @@
     if (ancestorsOfGroup != null) {
       _queryParams["ancestorsOfGroup"] = [ancestorsOfGroup];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name') + '/groups';
 
@@ -354,6 +390,9 @@
   /// [validateOnly] - If true, validate this request but do not update the
   /// existing group.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Group].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -362,7 +401,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Group> update(Group request, core.String name,
-      {core.bool validateOnly}) {
+      {core.bool validateOnly, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -379,6 +418,9 @@
     if (validateOnly != null) {
       _queryParams["validateOnly"] = ["${validateOnly}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -419,12 +461,15 @@
   /// field causes the method to return additional results from the previous
   /// method call.
   ///
+  /// [pageSize] - A positive number that is the maximum number of results to
+  /// return.
+  ///
   /// [interval_startTime] - Optional. The beginning of the time interval. The
   /// default value for the start time is the end time. The start time must not
   /// be later than the end time.
   ///
-  /// [pageSize] - A positive number that is the maximum number of results to
-  /// return.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListGroupMembersResponse].
   ///
@@ -437,8 +482,9 @@
       {core.String interval_endTime,
       core.String filter,
       core.String pageToken,
+      core.int pageSize,
       core.String interval_startTime,
-      core.int pageSize}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -458,11 +504,14 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
     if (interval_startTime != null) {
       _queryParams["interval.startTime"] = [interval_startTime];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name') + '/members';
@@ -495,6 +544,9 @@
   /// "projects/{project_id_or_number}".
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MetricDescriptor].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -503,7 +555,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<MetricDescriptor> create(
-      MetricDescriptor request, core.String name) {
+      MetricDescriptor request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -517,6 +570,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v3/' +
         commons.Escaper.ecapeVariableReserved('$name') +
@@ -541,6 +597,9 @@
   /// example of {metric_id} is: "custom.googleapis.com/my_test_metric".
   /// Value must have pattern "^projects/[^/]+/metricDescriptors/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -548,7 +607,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -559,6 +618,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -582,6 +644,9 @@
   /// "compute.googleapis.com/instance/disk/read_bytes_count".
   /// Value must have pattern "^projects/[^/]+/metricDescriptors/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MetricDescriptor].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -589,7 +654,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<MetricDescriptor> get(core.String name) {
+  async.Future<MetricDescriptor> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -600,6 +665,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -621,6 +689,12 @@
   /// "projects/{project_id_or_number}".
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [filter] - If this field is empty, all custom and system-defined metric
+  /// descriptors are returned. Otherwise, the filter specifies which metric
+  /// descriptors are to be returned. For example, the following filter matches
+  /// all custom metrics:
+  /// metric.type = starts_with("custom.googleapis.com/")
+  ///
   /// [pageToken] - If this field is not empty then it must contain the
   /// nextPageToken value returned by a previous call to this method. Using this
   /// field causes the method to return additional results from the previous
@@ -629,11 +703,8 @@
   /// [pageSize] - A positive number that is the maximum number of results to
   /// return.
   ///
-  /// [filter] - If this field is empty, all custom and system-defined metric
-  /// descriptors are returned. Otherwise, the filter specifies which metric
-  /// descriptors are to be returned. For example, the following filter matches
-  /// all custom metrics:
-  /// metric.type = starts_with("custom.googleapis.com/")
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListMetricDescriptorsResponse].
   ///
@@ -643,7 +714,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListMetricDescriptorsResponse> list(core.String name,
-      {core.String pageToken, core.int pageSize, core.String filter}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -654,14 +728,17 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v3/' +
@@ -696,6 +773,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/monitoredResourceDescriptors/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MonitoredResourceDescriptor].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -703,7 +783,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<MonitoredResourceDescriptor> get(core.String name) {
+  async.Future<MonitoredResourceDescriptor> get(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -714,6 +795,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -736,12 +820,6 @@
   /// "projects/{project_id_or_number}".
   /// Value must have pattern "^projects/[^/]+$".
   ///
-  /// [filter] - An optional filter describing the descriptors to be returned.
-  /// The filter can reference the descriptor's type and labels. For example,
-  /// the following filter returns only Google Compute Engine descriptors that
-  /// have an id label:
-  /// resource.type = starts_with("gce_") AND resource.label:id
-  ///
   /// [pageToken] - If this field is not empty then it must contain the
   /// nextPageToken value returned by a previous call to this method. Using this
   /// field causes the method to return additional results from the previous
@@ -750,6 +828,15 @@
   /// [pageSize] - A positive number that is the maximum number of results to
   /// return.
   ///
+  /// [filter] - An optional filter describing the descriptors to be returned.
+  /// The filter can reference the descriptor's type and labels. For example,
+  /// the following filter returns only Google Compute Engine descriptors that
+  /// have an id label:
+  /// resource.type = starts_with("gce_") AND resource.label:id
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListMonitoredResourceDescriptorsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -758,7 +845,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListMonitoredResourceDescriptorsResponse> list(core.String name,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String filter,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -769,15 +859,18 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
-    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v3/' +
         commons.Escaper.ecapeVariableReserved('$name') +
@@ -813,6 +906,9 @@
   /// "projects/{project_id_or_number}".
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -820,8 +916,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> create(
-      CreateTimeSeriesRequest request, core.String name) {
+  async.Future<Empty> create(CreateTimeSeriesRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -835,6 +931,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v3/' + commons.Escaper.ecapeVariableReserved('$name') + '/timeSeries';
@@ -857,34 +956,6 @@
   /// "projects/{project_id_or_number}".
   /// Value must have pattern "^projects/[^/]+$".
   ///
-  /// [aggregation_groupByFields] - The set of fields to preserve when
-  /// crossSeriesReducer is specified. The groupByFields determine how the time
-  /// series are partitioned into subsets prior to applying the aggregation
-  /// function. Each subset contains time series that have the same value for
-  /// each of the grouping fields. Each individual time series is a member of
-  /// exactly one subset. The crossSeriesReducer is applied to each subset of
-  /// time series. It is not possible to reduce across different resource types,
-  /// so this field implicitly contains resource.type. Fields not specified in
-  /// groupByFields are aggregated away. If groupByFields is not specified and
-  /// all the time series have the same resource type, then the time series are
-  /// aggregated into a single output time series. If crossSeriesReducer is not
-  /// defined, this field is ignored.
-  ///
-  /// [interval_endTime] - Required. The end of the time interval.
-  ///
-  /// [aggregation_alignmentPeriod] - The alignment period for per-time series
-  /// alignment. If present, alignmentPeriod must be at least 60 seconds. After
-  /// per-time series alignment, each time series will contain data points only
-  /// on the period boundaries. If perSeriesAligner is not specified or equals
-  /// ALIGN_NONE, then this field is ignored. If perSeriesAligner is specified
-  /// and does not equal ALIGN_NONE, then this field must be defined; otherwise
-  /// an error is returned.
-  ///
-  /// [pageSize] - A positive number that is the maximum number of results to
-  /// return. When view field sets to FULL, it limits the number of Points
-  /// server will return; if view field is HEADERS, it limits the number of
-  /// TimeSeries server will return.
-  ///
   /// [orderBy] - Specifies the order in which the points of the time series
   /// should be returned. By default, results are not ordered. Currently, this
   /// field must be left blank.
@@ -918,6 +989,11 @@
   /// metric.type = "compute.googleapis.com/instance/cpu/usage_time" AND
   ///     metric.label.instance_name = "my-instance-name"
   ///
+  /// [pageToken] - If this field is not empty then it must contain the
+  /// nextPageToken value returned by a previous call to this method. Using this
+  /// field causes the method to return additional results from the previous
+  /// method call.
+  ///
   /// [aggregation_perSeriesAligner] - The approach to be used to align
   /// individual time series. Not all alignment functions may be applied to all
   /// time series, depending on the metric type and value type of the original
@@ -945,11 +1021,6 @@
   /// - "ALIGN_PERCENTILE_50" : A ALIGN_PERCENTILE_50.
   /// - "ALIGN_PERCENTILE_05" : A ALIGN_PERCENTILE_05.
   ///
-  /// [pageToken] - If this field is not empty then it must contain the
-  /// nextPageToken value returned by a previous call to this method. Using this
-  /// field causes the method to return additional results from the previous
-  /// method call.
-  ///
   /// [interval_startTime] - Optional. The beginning of the time interval. The
   /// default value for the start time is the end time. The start time must not
   /// be later than the end time.
@@ -959,6 +1030,37 @@
   /// - "FULL" : A FULL.
   /// - "HEADERS" : A HEADERS.
   ///
+  /// [aggregation_groupByFields] - The set of fields to preserve when
+  /// crossSeriesReducer is specified. The groupByFields determine how the time
+  /// series are partitioned into subsets prior to applying the aggregation
+  /// function. Each subset contains time series that have the same value for
+  /// each of the grouping fields. Each individual time series is a member of
+  /// exactly one subset. The crossSeriesReducer is applied to each subset of
+  /// time series. It is not possible to reduce across different resource types,
+  /// so this field implicitly contains resource.type. Fields not specified in
+  /// groupByFields are aggregated away. If groupByFields is not specified and
+  /// all the time series have the same resource type, then the time series are
+  /// aggregated into a single output time series. If crossSeriesReducer is not
+  /// defined, this field is ignored.
+  ///
+  /// [interval_endTime] - Required. The end of the time interval.
+  ///
+  /// [aggregation_alignmentPeriod] - The alignment period for per-time series
+  /// alignment. If present, alignmentPeriod must be at least 60 seconds. After
+  /// per-time series alignment, each time series will contain data points only
+  /// on the period boundaries. If perSeriesAligner is not specified or equals
+  /// ALIGN_NONE, then this field is ignored. If perSeriesAligner is specified
+  /// and does not equal ALIGN_NONE, then this field must be defined; otherwise
+  /// an error is returned.
+  ///
+  /// [pageSize] - A positive number that is the maximum number of results to
+  /// return. When view field sets to FULL, it limits the number of Points
+  /// server will return; if view field is HEADERS, it limits the number of
+  /// TimeSeries server will return.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListTimeSeriesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -967,17 +1069,18 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListTimeSeriesResponse> list(core.String name,
-      {core.List<core.String> aggregation_groupByFields,
+      {core.String orderBy,
+      core.String aggregation_crossSeriesReducer,
+      core.String filter,
+      core.String pageToken,
+      core.String aggregation_perSeriesAligner,
+      core.String interval_startTime,
+      core.String view,
+      core.List<core.String> aggregation_groupByFields,
       core.String interval_endTime,
       core.String aggregation_alignmentPeriod,
       core.int pageSize,
-      core.String orderBy,
-      core.String aggregation_crossSeriesReducer,
-      core.String filter,
-      core.String aggregation_perSeriesAligner,
-      core.String pageToken,
-      core.String interval_startTime,
-      core.String view}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -988,6 +1091,31 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if (orderBy != null) {
+      _queryParams["orderBy"] = [orderBy];
+    }
+    if (aggregation_crossSeriesReducer != null) {
+      _queryParams["aggregation.crossSeriesReducer"] = [
+        aggregation_crossSeriesReducer
+      ];
+    }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (aggregation_perSeriesAligner != null) {
+      _queryParams["aggregation.perSeriesAligner"] = [
+        aggregation_perSeriesAligner
+      ];
+    }
+    if (interval_startTime != null) {
+      _queryParams["interval.startTime"] = [interval_startTime];
+    }
+    if (view != null) {
+      _queryParams["view"] = [view];
+    }
     if (aggregation_groupByFields != null) {
       _queryParams["aggregation.groupByFields"] = aggregation_groupByFields;
     }
@@ -1002,30 +1130,8 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (orderBy != null) {
-      _queryParams["orderBy"] = [orderBy];
-    }
-    if (aggregation_crossSeriesReducer != null) {
-      _queryParams["aggregation.crossSeriesReducer"] = [
-        aggregation_crossSeriesReducer
-      ];
-    }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
-    }
-    if (aggregation_perSeriesAligner != null) {
-      _queryParams["aggregation.perSeriesAligner"] = [
-        aggregation_perSeriesAligner
-      ];
-    }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
-    }
-    if (interval_startTime != null) {
-      _queryParams["interval.startTime"] = [interval_startTime];
-    }
-    if (view != null) {
-      _queryParams["view"] = [view];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url =
@@ -1041,6 +1147,386 @@
   }
 }
 
+class ProjectsUptimeCheckConfigsResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsUptimeCheckConfigsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates a new uptime check configuration.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - The project in which to create the uptime check. The format
+  /// is:projects/[PROJECT_ID].
+  /// Value must have pattern "^projects/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [UptimeCheckConfig].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<UptimeCheckConfig> create(
+      UptimeCheckConfig request, core.String parent,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v3/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        '/uptimeCheckConfigs';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new UptimeCheckConfig.fromJson(data));
+  }
+
+  /// Deletes an uptime check configuration. Note that this method will fail if
+  /// the uptime check configuration is referenced by an alert policy or other
+  /// dependent configs that would be rendered invalid by the deletion.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The uptime check configuration to delete. The format
+  /// isprojects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID].
+  /// Value must have pattern "^projects/[^/]+/uptimeCheckConfigs/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "DELETE",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Empty.fromJson(data));
+  }
+
+  /// Gets a single uptime check configuration.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The uptime check configuration to retrieve. The format
+  /// isprojects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID].
+  /// Value must have pattern "^projects/[^/]+/uptimeCheckConfigs/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [UptimeCheckConfig].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<UptimeCheckConfig> get(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new UptimeCheckConfig.fromJson(data));
+  }
+
+  /// Lists the existing valid uptime check configurations for the project,
+  /// leaving out any invalid configurations.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - The project whose uptime check configurations are listed. The
+  /// format isprojects/[PROJECT_ID].
+  /// Value must have pattern "^projects/[^/]+$".
+  ///
+  /// [pageToken] - If this field is not empty then it must contain the
+  /// nextPageToken value returned by a previous call to this method. Using this
+  /// field causes the method to return more results from the previous method
+  /// call.
+  ///
+  /// [pageSize] - The maximum number of results to return in a single response.
+  /// The server may further constrain the maximum number of results returned in
+  /// a single page. If the page_size is <=0, the server will decide the number
+  /// of results to be returned.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListUptimeCheckConfigsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListUptimeCheckConfigsResponse> list(core.String parent,
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v3/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        '/uptimeCheckConfigs';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new ListUptimeCheckConfigsResponse.fromJson(data));
+  }
+
+  /// Updates an uptime check configuration. You can either replace the entire
+  /// configuration with a new one or replace only certain fields in the current
+  /// configuration by specifying the fields to be updated via "updateMask".
+  /// Returns the updated configuration.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - A unique resource name for this UptimeCheckConfig. The format
+  /// is:projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID].This field
+  /// should be omitted when creating the uptime check configuration; on create,
+  /// the resource name is assigned by the server and included in the response.
+  /// Value must have pattern "^projects/[^/]+/uptimeCheckConfigs/[^/]+$".
+  ///
+  /// [updateMask] - Optional. If present, only the listed fields in the current
+  /// uptime check configuration are updated with values from the new
+  /// configuration. If this field is empty, then the current configuration is
+  /// completely replaced with the new configuration.
+  ///
+  /// [name1] - The uptime check configuration to update. The format
+  /// isprojects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID].
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [UptimeCheckConfig].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<UptimeCheckConfig> patch(
+      UptimeCheckConfig request, core.String name,
+      {core.String updateMask, core.String name1, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if (updateMask != null) {
+      _queryParams["updateMask"] = [updateMask];
+    }
+    if (name1 != null) {
+      _queryParams["name1"] = [name1];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "PATCH",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new UptimeCheckConfig.fromJson(data));
+  }
+}
+
+class UptimeCheckIpsResourceApi {
+  final commons.ApiRequester _requester;
+
+  UptimeCheckIpsResourceApi(commons.ApiRequester client) : _requester = client;
+
+  /// Returns the list of IPs that checkers run from
+  ///
+  /// Request parameters:
+  ///
+  /// [pageToken] - If this field is not empty then it must contain the
+  /// nextPageToken value returned by a previous call to this method. Using this
+  /// field causes the method to return more results from the previous method
+  /// call. NOTE: this field is not yet implemented
+  ///
+  /// [pageSize] - The maximum number of results to return in a single response.
+  /// The server may further constrain the maximum number of results returned in
+  /// a single page. If the page_size is <=0, the server will decide the number
+  /// of results to be returned. NOTE: this field is not yet implemented
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListUptimeCheckIpsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListUptimeCheckIpsResponse> list(
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v3/uptimeCheckIps';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new ListUptimeCheckIpsResponse.fromJson(data));
+  }
+}
+
+/// A type of authentication to perform against the specified resource or URL
+/// that uses username and password. Currently, only Basic authentication is
+/// supported in Uptime Monitoring.
+class BasicAuthentication {
+  /// The password to authenticate.
+  core.String password;
+
+  /// The username to authenticate.
+  core.String username;
+
+  BasicAuthentication();
+
+  BasicAuthentication.fromJson(core.Map _json) {
+    if (_json.containsKey("password")) {
+      password = _json["password"];
+    }
+    if (_json.containsKey("username")) {
+      username = _json["username"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (password != null) {
+      _json["password"] = password;
+    }
+    if (username != null) {
+      _json["username"] = username;
+    }
+    return _json;
+  }
+}
+
 /// BucketOptions describes the bucket boundaries used to create a histogram for
 /// the distribution. The buckets can be in a linear sequence, an exponential
 /// sequence, or each bucket can be specified explicitly. BucketOptions does not
@@ -1323,6 +1809,31 @@
   }
 }
 
+/// Used to perform string matching. Currently, this matches on the exact
+/// content. In the future, it can be expanded to allow for regular expressions
+/// and more complex matching.
+class ContentMatcher {
+  /// String content to match
+  core.String content;
+
+  ContentMatcher();
+
+  ContentMatcher.fromJson(core.Map _json) {
+    if (_json.containsKey("content")) {
+      content = _json["content"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (content != null) {
+      _json["content"] = content;
+    }
+    return _json;
+  }
+}
+
 /// The CreateCollectdTimeSeries request.
 class CreateCollectdTimeSeriesRequest {
   /// The collectd payloads representing the time series data. You must not
@@ -1836,6 +2347,89 @@
   }
 }
 
+/// Information involved in an HTTP/HTTPS uptime check request.
+class HttpCheck {
+  /// The authentication information. Optional when creating an HTTP check;
+  /// defaults to empty.
+  BasicAuthentication authInfo;
+
+  /// The list of headers to send as part of the uptime check request. If two
+  /// headers have the same key and different values, they should be entered as
+  /// a single header, with the value being a comma-separated list of all the
+  /// desired values as described at
+  /// https://www.w3.org/Protocols/rfc2616/rfc2616.txt (page 31). Entering two
+  /// separate headers with the same key in a Create call will cause the first
+  /// to be overwritten by the second.
+  core.Map<core.String, core.String> headers;
+
+  /// Boolean specifiying whether to encrypt the header information. Encryption
+  /// should be specified for any headers related to authentication that you do
+  /// not wish to be seen when retrieving the configuration. The server will be
+  /// responsible for encrypting the headers. On Get/List calls, if mask_headers
+  /// is set to True then the headers will be obscured with ******.
+  core.bool maskHeaders;
+
+  /// The path to the page to run the check against. Will be combined with the
+  /// host (specified within the MonitoredResource) and port to construct the
+  /// full URL. Optional (defaults to "/").
+  core.String path;
+
+  /// The port to the page to run the check against. Will be combined with host
+  /// (specified within the MonitoredResource) and path to construct the full
+  /// URL. Optional (defaults to 80 without SSL, or 443 with SSL).
+  core.int port;
+
+  /// If true, use HTTPS instead of HTTP to run the check.
+  core.bool useSsl;
+
+  HttpCheck();
+
+  HttpCheck.fromJson(core.Map _json) {
+    if (_json.containsKey("authInfo")) {
+      authInfo = new BasicAuthentication.fromJson(_json["authInfo"]);
+    }
+    if (_json.containsKey("headers")) {
+      headers = _json["headers"];
+    }
+    if (_json.containsKey("maskHeaders")) {
+      maskHeaders = _json["maskHeaders"];
+    }
+    if (_json.containsKey("path")) {
+      path = _json["path"];
+    }
+    if (_json.containsKey("port")) {
+      port = _json["port"];
+    }
+    if (_json.containsKey("useSsl")) {
+      useSsl = _json["useSsl"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (authInfo != null) {
+      _json["authInfo"] = (authInfo).toJson();
+    }
+    if (headers != null) {
+      _json["headers"] = headers;
+    }
+    if (maskHeaders != null) {
+      _json["maskHeaders"] = maskHeaders;
+    }
+    if (path != null) {
+      _json["path"] = path;
+    }
+    if (port != null) {
+      _json["port"] = port;
+    }
+    if (useSsl != null) {
+      _json["useSsl"] = useSsl;
+    }
+    return _json;
+  }
+}
+
 /// A description of a label.
 class LabelDescriptor {
   /// A human-readable description for the label.
@@ -2119,6 +2713,86 @@
   }
 }
 
+/// The protocol for the ListUptimeCheckConfigs response.
+class ListUptimeCheckConfigsResponse {
+  /// This field represents the pagination token to retrieve the next page of
+  /// results. If the value is empty, it means no further results for the
+  /// request. To retrieve the next page of results, the value of the
+  /// next_page_token is passed to the subsequent List method call (in the
+  /// request message's page_token field).
+  core.String nextPageToken;
+
+  /// The returned uptime check configurations.
+  core.List<UptimeCheckConfig> uptimeCheckConfigs;
+
+  ListUptimeCheckConfigsResponse();
+
+  ListUptimeCheckConfigsResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+    if (_json.containsKey("uptimeCheckConfigs")) {
+      uptimeCheckConfigs = _json["uptimeCheckConfigs"]
+          .map((value) => new UptimeCheckConfig.fromJson(value))
+          .toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    if (uptimeCheckConfigs != null) {
+      _json["uptimeCheckConfigs"] =
+          uptimeCheckConfigs.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// The protocol for the ListUptimeCheckIps response.
+class ListUptimeCheckIpsResponse {
+  /// This field represents the pagination token to retrieve the next page of
+  /// results. If the value is empty, it means no further results for the
+  /// request. To retrieve the next page of results, the value of the
+  /// next_page_token is passed to the subsequent List method call (in the
+  /// request message's page_token field). NOTE: this field is not yet
+  /// implemented
+  core.String nextPageToken;
+
+  /// The returned list of IP addresses (including region and location) that the
+  /// checkers run from.
+  core.List<UptimeCheckIp> uptimeCheckIps;
+
+  ListUptimeCheckIpsResponse();
+
+  ListUptimeCheckIpsResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+    if (_json.containsKey("uptimeCheckIps")) {
+      uptimeCheckIps = _json["uptimeCheckIps"]
+          .map((value) => new UptimeCheckIp.fromJson(value))
+          .toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    if (uptimeCheckIps != null) {
+      _json["uptimeCheckIps"] =
+          uptimeCheckIps.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
 /// A specific metric, identified by specifying values for all of the labels of
 /// a MetricDescriptor.
 class Metric {
@@ -2163,6 +2837,8 @@
 
   /// A concise name for the metric, which can be displayed in user interfaces.
   /// Use sentence case without an ending period, for example "Request count".
+  /// This field is optional but it is recommended to be set for any metrics
+  /// associated with user-visible concepts, such as Quota.
   core.String displayName;
 
   /// The set of labels that can be used to describe a specific instance of this
@@ -2184,13 +2860,7 @@
   /// and sets a new start time for the following points.
   core.String metricKind;
 
-  /// The resource name of the metric descriptor. Depending on the
-  /// implementation, the name typically includes: (1) the parent resource name
-  /// that defines the scope of the metric type or of its data; and (2) the
-  /// metric's URL-encoded type, which also appears in the type field of this
-  /// descriptor. For example, following is the resource name of a custom metric
-  /// within the GCP project my-project-id:
-  /// "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
+  /// The resource name of the metric descriptor.
   core.String name;
 
   /// The metric type, including its DNS name prefix. The type is not
@@ -2567,6 +3237,44 @@
   }
 }
 
+/// The resource submessage for group checks. It can be used instead of a
+/// monitored resource, when multiple resources are being monitored.
+class ResourceGroup {
+  /// The group of resources being monitored. Should be only the group_id, not
+  /// projects/<project_id>/groups/<group_id>.
+  core.String groupId;
+
+  /// The resource type of the group members.
+  /// Possible string values are:
+  /// - "RESOURCE_TYPE_UNSPECIFIED" : Default value (not valid).
+  /// - "INSTANCE" : A group of instances (could be either GCE or AWS_EC2).
+  /// - "AWS_ELB_LOAD_BALANCER" : A group of AWS load balancers.
+  core.String resourceType;
+
+  ResourceGroup();
+
+  ResourceGroup.fromJson(core.Map _json) {
+    if (_json.containsKey("groupId")) {
+      groupId = _json["groupId"];
+    }
+    if (_json.containsKey("resourceType")) {
+      resourceType = _json["resourceType"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (groupId != null) {
+      _json["groupId"] = groupId;
+    }
+    if (resourceType != null) {
+      _json["resourceType"] = resourceType;
+    }
+    return _json;
+  }
+}
+
 /// SourceContext represents information about the source of a protobuf element,
 /// like the file in which it is defined.
 class SourceContext {
@@ -2673,6 +3381,31 @@
   }
 }
 
+/// Information required for a TCP uptime check request.
+class TcpCheck {
+  /// The port to the page to run the check against. Will be combined with host
+  /// (specified within the MonitoredResource) to construct the full URL.
+  /// Required.
+  core.int port;
+
+  TcpCheck();
+
+  TcpCheck.fromJson(core.Map _json) {
+    if (_json.containsKey("port")) {
+      port = _json["port"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (port != null) {
+      _json["port"] = port;
+    }
+    return _json;
+  }
+}
+
 /// A time interval extending just after a start time through an end time. If
 /// the start time is the same as the end time, then the interval represents a
 /// single point in time.
@@ -2942,3 +3675,185 @@
     return _json;
   }
 }
+
+/// This message configures which resources and services to monitor for
+/// availability.
+class UptimeCheckConfig {
+  /// The expected content on the page the check is run against. Currently, only
+  /// the first entry in the list is supported, and other entries will be
+  /// ignored. The server will look for an exact match of the string in the page
+  /// response's content. This field is optional and should only be specified if
+  /// a content match is required.
+  core.List<ContentMatcher> contentMatchers;
+
+  /// A human-friendly name for the uptime check configuration. The display name
+  /// should be unique within a Stackdriver Account in order to make it easier
+  /// to identify; however, uniqueness is not enforced. Required.
+  core.String displayName;
+
+  /// Contains information needed to make an HTTP or HTTPS check.
+  HttpCheck httpCheck;
+
+  /// The monitored resource associated with the configuration.
+  MonitoredResource monitoredResource;
+
+  /// A unique resource name for this UptimeCheckConfig. The format
+  /// is:projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID].This field
+  /// should be omitted when creating the uptime check configuration; on create,
+  /// the resource name is assigned by the server and included in the response.
+  core.String name;
+
+  /// How often the uptime check is performed. Currently, only 1, 5, 10, and 15
+  /// minutes are supported. Required.
+  core.String period;
+
+  /// The group resource associated with the configuration.
+  ResourceGroup resourceGroup;
+
+  /// The list of regions from which the check will be run. If this field is
+  /// specified, enough regions to include a minimum of 3 locations must be
+  /// provided, or an error message is returned. Not specifying this field will
+  /// result in uptime checks running from all regions.
+  core.List<core.String> selectedRegions;
+
+  /// Contains information needed to make a TCP check.
+  TcpCheck tcpCheck;
+
+  /// The maximum amount of time to wait for the request to complete (must be
+  /// between 1 and 60 seconds). Required.
+  core.String timeout;
+
+  UptimeCheckConfig();
+
+  UptimeCheckConfig.fromJson(core.Map _json) {
+    if (_json.containsKey("contentMatchers")) {
+      contentMatchers = _json["contentMatchers"]
+          .map((value) => new ContentMatcher.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("displayName")) {
+      displayName = _json["displayName"];
+    }
+    if (_json.containsKey("httpCheck")) {
+      httpCheck = new HttpCheck.fromJson(_json["httpCheck"]);
+    }
+    if (_json.containsKey("monitoredResource")) {
+      monitoredResource =
+          new MonitoredResource.fromJson(_json["monitoredResource"]);
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("period")) {
+      period = _json["period"];
+    }
+    if (_json.containsKey("resourceGroup")) {
+      resourceGroup = new ResourceGroup.fromJson(_json["resourceGroup"]);
+    }
+    if (_json.containsKey("selectedRegions")) {
+      selectedRegions = _json["selectedRegions"];
+    }
+    if (_json.containsKey("tcpCheck")) {
+      tcpCheck = new TcpCheck.fromJson(_json["tcpCheck"]);
+    }
+    if (_json.containsKey("timeout")) {
+      timeout = _json["timeout"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (contentMatchers != null) {
+      _json["contentMatchers"] =
+          contentMatchers.map((value) => (value).toJson()).toList();
+    }
+    if (displayName != null) {
+      _json["displayName"] = displayName;
+    }
+    if (httpCheck != null) {
+      _json["httpCheck"] = (httpCheck).toJson();
+    }
+    if (monitoredResource != null) {
+      _json["monitoredResource"] = (monitoredResource).toJson();
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (period != null) {
+      _json["period"] = period;
+    }
+    if (resourceGroup != null) {
+      _json["resourceGroup"] = (resourceGroup).toJson();
+    }
+    if (selectedRegions != null) {
+      _json["selectedRegions"] = selectedRegions;
+    }
+    if (tcpCheck != null) {
+      _json["tcpCheck"] = (tcpCheck).toJson();
+    }
+    if (timeout != null) {
+      _json["timeout"] = timeout;
+    }
+    return _json;
+  }
+}
+
+/// Contains the region, location, and list of IP addresses where checkers in
+/// the location run from.
+class UptimeCheckIp {
+  /// The IP address from which the uptime check originates. This is a full IP
+  /// address (not an IP address range). Most IP addresses, as of this
+  /// publication, are in IPv4 format; however, one should not rely on the IP
+  /// addresses being in IPv4 format indefinitely and should support
+  /// interpreting this field in either IPv4 or IPv6 format.
+  core.String ipAddress;
+
+  /// A more specific location within the region that typically encodes a
+  /// particular city/town/metro (and its containing state/province or country)
+  /// within the broader umbrella region category.
+  core.String location;
+
+  /// A broad region category in which the IP address is located.
+  /// Possible string values are:
+  /// - "REGION_UNSPECIFIED" : Default value if no region is specified. Will
+  /// result in uptime checks running from all regions.
+  /// - "USA" : Allows checks to run from locations within the United States of
+  /// America.
+  /// - "EUROPE" : Allows checks to run from locations within the continent of
+  /// Europe.
+  /// - "SOUTH_AMERICA" : Allows checks to run from locations within the
+  /// continent of South America.
+  /// - "ASIA_PACIFIC" : Allows checks to run from locations within the Asia
+  /// Pacific area (ex: Singapore).
+  core.String region;
+
+  UptimeCheckIp();
+
+  UptimeCheckIp.fromJson(core.Map _json) {
+    if (_json.containsKey("ipAddress")) {
+      ipAddress = _json["ipAddress"];
+    }
+    if (_json.containsKey("location")) {
+      location = _json["location"];
+    }
+    if (_json.containsKey("region")) {
+      region = _json["region"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (ipAddress != null) {
+      _json["ipAddress"] = ipAddress;
+    }
+    if (location != null) {
+      _json["location"] = location;
+    }
+    if (region != null) {
+      _json["region"] = region;
+    }
+    return _json;
+  }
+}
diff --git a/generated/googleapis/lib/oauth2/v2.dart b/generated/googleapis/lib/oauth2/v2.dart
index 1f9c980..1c334d7 100644
--- a/generated/googleapis/lib/oauth2/v2.dart
+++ b/generated/googleapis/lib/oauth2/v2.dart
@@ -42,6 +42,9 @@
 
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Jwk].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -49,7 +52,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Jwk> getCertForOpenIdConnect() {
+  async.Future<Jwk> getCertForOpenIdConnect({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -57,6 +60,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'oauth2/v2/certs';
 
     var _response = _requester.request(_url, "GET",
@@ -76,6 +83,9 @@
   ///
   /// [tokenHandle] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Tokeninfo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -84,7 +94,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Tokeninfo> tokeninfo(
-      {core.String accessToken, core.String idToken, core.String tokenHandle}) {
+      {core.String accessToken,
+      core.String idToken,
+      core.String tokenHandle,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -101,6 +114,9 @@
     if (tokenHandle != null) {
       _queryParams["token_handle"] = [tokenHandle];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'oauth2/v2/tokeninfo';
 
@@ -123,6 +139,9 @@
 
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Userinfoplus].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -130,7 +149,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Userinfoplus> get() {
+  async.Future<Userinfoplus> get({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -138,6 +157,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'oauth2/v2/userinfo';
 
     var _response = _requester.request(_url, "GET",
@@ -165,6 +188,9 @@
 
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Userinfoplus].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -172,7 +198,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Userinfoplus> get() {
+  async.Future<Userinfoplus> get({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -180,6 +206,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'userinfo/v2/me';
 
     var _response = _requester.request(_url, "GET",
diff --git a/generated/googleapis/lib/pagespeedonline/v1.dart b/generated/googleapis/lib/pagespeedonline/v1.dart
index cb4d2c1..ee1ae6f 100644
--- a/generated/googleapis/lib/pagespeedonline/v1.dart
+++ b/generated/googleapis/lib/pagespeedonline/v1.dart
@@ -60,6 +60,9 @@
   /// - "desktop" : Fetch and analyze the URL for desktop browsers
   /// - "mobile" : Fetch and analyze the URL for mobile devices
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Result].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -72,7 +75,8 @@
       core.String locale,
       core.List<core.String> rule,
       core.bool screenshot,
-      core.String strategy}) {
+      core.String strategy,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -101,6 +105,9 @@
     if (strategy != null) {
       _queryParams["strategy"] = [strategy];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'runPagespeed';
 
diff --git a/generated/googleapis/lib/pagespeedonline/v2.dart b/generated/googleapis/lib/pagespeedonline/v2.dart
index ab30cde..da50002 100644
--- a/generated/googleapis/lib/pagespeedonline/v2.dart
+++ b/generated/googleapis/lib/pagespeedonline/v2.dart
@@ -60,6 +60,9 @@
   /// - "desktop" : Fetch and analyze the URL for desktop browsers
   /// - "mobile" : Fetch and analyze the URL for mobile devices
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Result].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -72,7 +75,8 @@
       core.String locale,
       core.List<core.String> rule,
       core.bool screenshot,
-      core.String strategy}) {
+      core.String strategy,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -101,6 +105,9 @@
     if (strategy != null) {
       _queryParams["strategy"] = [strategy];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'runPagespeed';
 
diff --git a/generated/googleapis/lib/partners/v2.dart b/generated/googleapis/lib/partners/v2.dart
index a7cd4f8..4f54b0c 100644
--- a/generated/googleapis/lib/partners/v2.dart
+++ b/generated/googleapis/lib/partners/v2.dart
@@ -48,6 +48,17 @@
   ///
   /// Request parameters:
   ///
+  /// [requestMetadata_userOverrides_ipAddress] - IP address to use instead of
+  /// the user's geo-located IP address.
+  ///
+  /// [requestMetadata_experimentIds] - Experiment IDs the current request
+  /// belongs to.
+  ///
+  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
+  /// indicate where the traffic comes from.
+  /// An identifier has multiple letters created by a team which redirected the
+  /// traffic to us.
+  ///
   /// [requestMetadata_partnersSessionId] - Google Partners session ID.
   ///
   /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
@@ -78,16 +89,8 @@
   ///
   /// [requestMetadata_locale] - Locale to use for the current request.
   ///
-  /// [requestMetadata_userOverrides_ipAddress] - IP address to use instead of
-  /// the user's geo-located IP address.
-  ///
-  /// [requestMetadata_experimentIds] - Experiment IDs the current request
-  /// belongs to.
-  ///
-  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
-  /// indicate where the traffic comes from.
-  /// An identifier has multiple letters created by a team which redirected the
-  /// traffic to us.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListAnalyticsResponse].
   ///
@@ -97,15 +100,16 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListAnalyticsResponse> list(
-      {core.String requestMetadata_partnersSessionId,
+      {core.String requestMetadata_userOverrides_ipAddress,
+      core.List<core.String> requestMetadata_experimentIds,
+      core.String requestMetadata_trafficSource_trafficSubId,
+      core.String requestMetadata_partnersSessionId,
       core.String requestMetadata_userOverrides_userId,
       core.String pageToken,
       core.int pageSize,
       core.String requestMetadata_trafficSource_trafficSourceId,
       core.String requestMetadata_locale,
-      core.String requestMetadata_userOverrides_ipAddress,
-      core.List<core.String> requestMetadata_experimentIds,
-      core.String requestMetadata_trafficSource_trafficSubId}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -113,6 +117,20 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if (requestMetadata_userOverrides_ipAddress != null) {
+      _queryParams["requestMetadata.userOverrides.ipAddress"] = [
+        requestMetadata_userOverrides_ipAddress
+      ];
+    }
+    if (requestMetadata_experimentIds != null) {
+      _queryParams["requestMetadata.experimentIds"] =
+          requestMetadata_experimentIds;
+    }
+    if (requestMetadata_trafficSource_trafficSubId != null) {
+      _queryParams["requestMetadata.trafficSource.trafficSubId"] = [
+        requestMetadata_trafficSource_trafficSubId
+      ];
+    }
     if (requestMetadata_partnersSessionId != null) {
       _queryParams["requestMetadata.partnersSessionId"] = [
         requestMetadata_partnersSessionId
@@ -137,19 +155,8 @@
     if (requestMetadata_locale != null) {
       _queryParams["requestMetadata.locale"] = [requestMetadata_locale];
     }
-    if (requestMetadata_userOverrides_ipAddress != null) {
-      _queryParams["requestMetadata.userOverrides.ipAddress"] = [
-        requestMetadata_userOverrides_ipAddress
-      ];
-    }
-    if (requestMetadata_experimentIds != null) {
-      _queryParams["requestMetadata.experimentIds"] =
-          requestMetadata_experimentIds;
-    }
-    if (requestMetadata_trafficSource_trafficSubId != null) {
-      _queryParams["requestMetadata.trafficSource.trafficSubId"] = [
-        requestMetadata_trafficSource_trafficSubId
-      ];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/analytics';
@@ -177,6 +184,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogMessageResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -184,7 +194,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogMessageResponse> log(LogMessageRequest request) {
+  async.Future<LogMessageResponse> log(LogMessageRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -195,6 +206,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/clientMessages:log';
 
@@ -222,12 +236,25 @@
   ///
   /// [companyId] - The ID of the company to retrieve.
   ///
+  /// [requestMetadata_trafficSource_trafficSourceId] - Identifier to indicate
+  /// where the traffic comes from.
+  /// An identifier has multiple letters created by a team which redirected the
+  /// traffic to us.
+  ///
+  /// [requestMetadata_userOverrides_ipAddress] - IP address to use instead of
+  /// the user's geo-located IP address.
+  ///
+  /// [requestMetadata_experimentIds] - Experiment IDs the current request
+  /// belongs to.
+  ///
   /// [currencyCode] - If the company's budget is in a different currency code
   /// than this one, then
   /// the converted budget is converted to this currency code.
   ///
-  /// [requestMetadata_experimentIds] - Experiment IDs the current request
-  /// belongs to.
+  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
+  /// indicate where the traffic comes from.
+  /// An identifier has multiple letters created by a team which redirected the
+  /// traffic to us.
   ///
   /// [orderBy] - How to order addresses within the returned company. Currently,
   /// only
@@ -235,16 +262,11 @@
   /// farthest in distance from given address and farthest to closest distance
   /// from given address respectively.
   ///
-  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
-  /// indicate where the traffic comes from.
-  /// An identifier has multiple letters created by a team which redirected the
-  /// traffic to us.
+  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
   ///
   /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
   /// instead of the user's ID.
   ///
-  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
-  ///
   /// [view] - The view of `Company` resource to be returned. This must not be
   /// `COMPANY_VIEW_UNSPECIFIED`.
   /// Possible string values are:
@@ -258,13 +280,8 @@
   ///
   /// [requestMetadata_locale] - Locale to use for the current request.
   ///
-  /// [requestMetadata_trafficSource_trafficSourceId] - Identifier to indicate
-  /// where the traffic comes from.
-  /// An identifier has multiple letters created by a team which redirected the
-  /// traffic to us.
-  ///
-  /// [requestMetadata_userOverrides_ipAddress] - IP address to use instead of
-  /// the user's geo-located IP address.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [GetCompanyResponse].
   ///
@@ -274,17 +291,18 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetCompanyResponse> get(core.String companyId,
-      {core.String currencyCode,
+      {core.String requestMetadata_trafficSource_trafficSourceId,
+      core.String requestMetadata_userOverrides_ipAddress,
       core.List<core.String> requestMetadata_experimentIds,
-      core.String orderBy,
+      core.String currencyCode,
       core.String requestMetadata_trafficSource_trafficSubId,
-      core.String requestMetadata_userOverrides_userId,
+      core.String orderBy,
       core.String requestMetadata_partnersSessionId,
+      core.String requestMetadata_userOverrides_userId,
       core.String view,
       core.String address,
       core.String requestMetadata_locale,
-      core.String requestMetadata_trafficSource_trafficSourceId,
-      core.String requestMetadata_userOverrides_ipAddress}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -295,31 +313,41 @@
     if (companyId == null) {
       throw new core.ArgumentError("Parameter companyId is required.");
     }
-    if (currencyCode != null) {
-      _queryParams["currencyCode"] = [currencyCode];
+    if (requestMetadata_trafficSource_trafficSourceId != null) {
+      _queryParams["requestMetadata.trafficSource.trafficSourceId"] = [
+        requestMetadata_trafficSource_trafficSourceId
+      ];
+    }
+    if (requestMetadata_userOverrides_ipAddress != null) {
+      _queryParams["requestMetadata.userOverrides.ipAddress"] = [
+        requestMetadata_userOverrides_ipAddress
+      ];
     }
     if (requestMetadata_experimentIds != null) {
       _queryParams["requestMetadata.experimentIds"] =
           requestMetadata_experimentIds;
     }
-    if (orderBy != null) {
-      _queryParams["orderBy"] = [orderBy];
+    if (currencyCode != null) {
+      _queryParams["currencyCode"] = [currencyCode];
     }
     if (requestMetadata_trafficSource_trafficSubId != null) {
       _queryParams["requestMetadata.trafficSource.trafficSubId"] = [
         requestMetadata_trafficSource_trafficSubId
       ];
     }
-    if (requestMetadata_userOverrides_userId != null) {
-      _queryParams["requestMetadata.userOverrides.userId"] = [
-        requestMetadata_userOverrides_userId
-      ];
+    if (orderBy != null) {
+      _queryParams["orderBy"] = [orderBy];
     }
     if (requestMetadata_partnersSessionId != null) {
       _queryParams["requestMetadata.partnersSessionId"] = [
         requestMetadata_partnersSessionId
       ];
     }
+    if (requestMetadata_userOverrides_userId != null) {
+      _queryParams["requestMetadata.userOverrides.userId"] = [
+        requestMetadata_userOverrides_userId
+      ];
+    }
     if (view != null) {
       _queryParams["view"] = [view];
     }
@@ -329,15 +357,8 @@
     if (requestMetadata_locale != null) {
       _queryParams["requestMetadata.locale"] = [requestMetadata_locale];
     }
-    if (requestMetadata_trafficSource_trafficSourceId != null) {
-      _queryParams["requestMetadata.trafficSource.trafficSourceId"] = [
-        requestMetadata_trafficSource_trafficSourceId
-      ];
-    }
-    if (requestMetadata_userOverrides_ipAddress != null) {
-      _queryParams["requestMetadata.userOverrides.ipAddress"] = [
-        requestMetadata_userOverrides_ipAddress
-      ];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/companies/' + commons.Escaper.ecapeVariable('$companyId');
@@ -355,38 +376,6 @@
   ///
   /// Request parameters:
   ///
-  /// [maxMonthlyBudget_nanos] - Number of nano (10^-9) units of the amount.
-  /// The value must be between -999,999,999 and +999,999,999 inclusive.
-  /// If `units` is positive, `nanos` must be positive or zero.
-  /// If `units` is zero, `nanos` can be positive, zero, or negative.
-  /// If `units` is negative, `nanos` must be negative or zero.
-  /// For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
-  ///
-  /// [services] - List of services that the returned agencies should provide.
-  /// If this is
-  /// not empty, any returned agency must have at least one of these services,
-  /// or one of the specializations in the "specializations" field.
-  ///
-  /// [requestMetadata_trafficSource_trafficSourceId] - Identifier to indicate
-  /// where the traffic comes from.
-  /// An identifier has multiple letters created by a team which redirected the
-  /// traffic to us.
-  ///
-  /// [maxMonthlyBudget_units] - The whole units of the amount.
-  /// For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
-  ///
-  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
-  /// indicate where the traffic comes from.
-  /// An identifier has multiple letters created by a team which redirected the
-  /// traffic to us.
-  ///
-  /// [minMonthlyBudget_nanos] - Number of nano (10^-9) units of the amount.
-  /// The value must be between -999,999,999 and +999,999,999 inclusive.
-  /// If `units` is positive, `nanos` must be positive or zero.
-  /// If `units` is zero, `nanos` can be positive, zero, or negative.
-  /// If `units` is negative, `nanos` must be negative or zero.
-  /// For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
-  ///
   /// [requestMetadata_partnersSessionId] - Google Partners session ID.
   ///
   /// [companyName] - Company name to search for.
@@ -436,12 +425,12 @@
   /// [maxMonthlyBudget_currencyCode] - The 3-letter currency code defined in
   /// ISO 4217.
   ///
-  /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
-  /// instead of the user's ID.
-  ///
   /// [minMonthlyBudget_currencyCode] - The 3-letter currency code defined in
   /// ISO 4217.
   ///
+  /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
+  /// instead of the user's ID.
+  ///
   /// [view] - The view of the `Company` resource to be returned. This must not
   /// be
   /// `COMPANY_VIEW_UNSPECIFIED`.
@@ -449,14 +438,49 @@
   /// - "COMPANY_VIEW_UNSPECIFIED" : A COMPANY_VIEW_UNSPECIFIED.
   /// - "CV_GOOGLE_PARTNER_SEARCH" : A CV_GOOGLE_PARTNER_SEARCH.
   ///
-  /// [requestMetadata_locale] - Locale to use for the current request.
-  ///
   /// [address] - The address to use when searching for companies.
   /// If not given, the geo-located address of the request is used.
   ///
+  /// [requestMetadata_locale] - Locale to use for the current request.
+  ///
   /// [minMonthlyBudget_units] - The whole units of the amount.
   /// For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
   ///
+  /// [maxMonthlyBudget_nanos] - Number of nano (10^-9) units of the amount.
+  /// The value must be between -999,999,999 and +999,999,999 inclusive.
+  /// If `units` is positive, `nanos` must be positive or zero.
+  /// If `units` is zero, `nanos` can be positive, zero, or negative.
+  /// If `units` is negative, `nanos` must be negative or zero.
+  /// For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+  ///
+  /// [services] - List of services that the returned agencies should provide.
+  /// If this is
+  /// not empty, any returned agency must have at least one of these services,
+  /// or one of the specializations in the "specializations" field.
+  ///
+  /// [requestMetadata_trafficSource_trafficSourceId] - Identifier to indicate
+  /// where the traffic comes from.
+  /// An identifier has multiple letters created by a team which redirected the
+  /// traffic to us.
+  ///
+  /// [maxMonthlyBudget_units] - The whole units of the amount.
+  /// For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+  ///
+  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
+  /// indicate where the traffic comes from.
+  /// An identifier has multiple letters created by a team which redirected the
+  /// traffic to us.
+  ///
+  /// [minMonthlyBudget_nanos] - Number of nano (10^-9) units of the amount.
+  /// The value must be between -999,999,999 and +999,999,999 inclusive.
+  /// If `units` is positive, `nanos` must be positive or zero.
+  /// If `units` is zero, `nanos` can be positive, zero, or negative.
+  /// If `units` is negative, `nanos` must be negative or zero.
+  /// For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListCompaniesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -465,13 +489,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListCompaniesResponse> list(
-      {core.int maxMonthlyBudget_nanos,
-      core.List<core.String> services,
-      core.String requestMetadata_trafficSource_trafficSourceId,
-      core.String maxMonthlyBudget_units,
-      core.String requestMetadata_trafficSource_trafficSubId,
-      core.int minMonthlyBudget_nanos,
-      core.String requestMetadata_partnersSessionId,
+      {core.String requestMetadata_partnersSessionId,
       core.String companyName,
       core.String pageToken,
       core.List<core.String> industries,
@@ -484,12 +502,19 @@
       core.String orderBy,
       core.List<core.String> specializations,
       core.String maxMonthlyBudget_currencyCode,
-      core.String requestMetadata_userOverrides_userId,
       core.String minMonthlyBudget_currencyCode,
+      core.String requestMetadata_userOverrides_userId,
       core.String view,
-      core.String requestMetadata_locale,
       core.String address,
-      core.String minMonthlyBudget_units}) {
+      core.String requestMetadata_locale,
+      core.String minMonthlyBudget_units,
+      core.int maxMonthlyBudget_nanos,
+      core.List<core.String> services,
+      core.String requestMetadata_trafficSource_trafficSourceId,
+      core.String maxMonthlyBudget_units,
+      core.String requestMetadata_trafficSource_trafficSubId,
+      core.int minMonthlyBudget_nanos,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -497,28 +522,6 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (maxMonthlyBudget_nanos != null) {
-      _queryParams["maxMonthlyBudget.nanos"] = ["${maxMonthlyBudget_nanos}"];
-    }
-    if (services != null) {
-      _queryParams["services"] = services;
-    }
-    if (requestMetadata_trafficSource_trafficSourceId != null) {
-      _queryParams["requestMetadata.trafficSource.trafficSourceId"] = [
-        requestMetadata_trafficSource_trafficSourceId
-      ];
-    }
-    if (maxMonthlyBudget_units != null) {
-      _queryParams["maxMonthlyBudget.units"] = [maxMonthlyBudget_units];
-    }
-    if (requestMetadata_trafficSource_trafficSubId != null) {
-      _queryParams["requestMetadata.trafficSource.trafficSubId"] = [
-        requestMetadata_trafficSource_trafficSubId
-      ];
-    }
-    if (minMonthlyBudget_nanos != null) {
-      _queryParams["minMonthlyBudget.nanos"] = ["${minMonthlyBudget_nanos}"];
-    }
     if (requestMetadata_partnersSessionId != null) {
       _queryParams["requestMetadata.partnersSessionId"] = [
         requestMetadata_partnersSessionId
@@ -565,28 +568,53 @@
         maxMonthlyBudget_currencyCode
       ];
     }
-    if (requestMetadata_userOverrides_userId != null) {
-      _queryParams["requestMetadata.userOverrides.userId"] = [
-        requestMetadata_userOverrides_userId
-      ];
-    }
     if (minMonthlyBudget_currencyCode != null) {
       _queryParams["minMonthlyBudget.currencyCode"] = [
         minMonthlyBudget_currencyCode
       ];
     }
+    if (requestMetadata_userOverrides_userId != null) {
+      _queryParams["requestMetadata.userOverrides.userId"] = [
+        requestMetadata_userOverrides_userId
+      ];
+    }
     if (view != null) {
       _queryParams["view"] = [view];
     }
-    if (requestMetadata_locale != null) {
-      _queryParams["requestMetadata.locale"] = [requestMetadata_locale];
-    }
     if (address != null) {
       _queryParams["address"] = [address];
     }
+    if (requestMetadata_locale != null) {
+      _queryParams["requestMetadata.locale"] = [requestMetadata_locale];
+    }
     if (minMonthlyBudget_units != null) {
       _queryParams["minMonthlyBudget.units"] = [minMonthlyBudget_units];
     }
+    if (maxMonthlyBudget_nanos != null) {
+      _queryParams["maxMonthlyBudget.nanos"] = ["${maxMonthlyBudget_nanos}"];
+    }
+    if (services != null) {
+      _queryParams["services"] = services;
+    }
+    if (requestMetadata_trafficSource_trafficSourceId != null) {
+      _queryParams["requestMetadata.trafficSource.trafficSourceId"] = [
+        requestMetadata_trafficSource_trafficSourceId
+      ];
+    }
+    if (maxMonthlyBudget_units != null) {
+      _queryParams["maxMonthlyBudget.units"] = [maxMonthlyBudget_units];
+    }
+    if (requestMetadata_trafficSource_trafficSubId != null) {
+      _queryParams["requestMetadata.trafficSource.trafficSubId"] = [
+        requestMetadata_trafficSource_trafficSubId
+      ];
+    }
+    if (minMonthlyBudget_nanos != null) {
+      _queryParams["minMonthlyBudget.nanos"] = ["${minMonthlyBudget_nanos}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/companies';
 
@@ -613,6 +641,9 @@
   ///
   /// [companyId] - The ID of the company to contact.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreateLeadResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -621,7 +652,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreateLeadResponse> create(
-      CreateLeadRequest request, core.String companyId) {
+      CreateLeadRequest request, core.String companyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -635,6 +667,9 @@
     if (companyId == null) {
       throw new core.ArgumentError("Parameter companyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/companies/' +
         commons.Escaper.ecapeVariable('$companyId') +
@@ -675,16 +710,11 @@
   /// - "CET_DIGITAL_SALES" : A CET_DIGITAL_SALES.
   /// - "CET_MOBILE_SITES" : A CET_MOBILE_SITES.
   ///
-  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
-  /// indicate where the traffic comes from.
-  /// An identifier has multiple letters created by a team which redirected the
-  /// traffic to us.
+  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
   ///
   /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
   /// instead of the user's ID.
   ///
-  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
-  ///
   /// [requestMetadata_trafficSource_trafficSourceId] - Identifier to indicate
   /// where the traffic comes from.
   /// An identifier has multiple letters created by a team which redirected the
@@ -698,6 +728,14 @@
   /// [requestMetadata_experimentIds] - Experiment IDs the current request
   /// belongs to.
   ///
+  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
+  /// indicate where the traffic comes from.
+  /// An identifier has multiple letters created by a team which redirected the
+  /// traffic to us.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ExamToken].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -706,13 +744,14 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ExamToken> getToken(core.String examType,
-      {core.String requestMetadata_trafficSource_trafficSubId,
+      {core.String requestMetadata_partnersSessionId,
       core.String requestMetadata_userOverrides_userId,
-      core.String requestMetadata_partnersSessionId,
       core.String requestMetadata_trafficSource_trafficSourceId,
       core.String requestMetadata_locale,
       core.String requestMetadata_userOverrides_ipAddress,
-      core.List<core.String> requestMetadata_experimentIds}) {
+      core.List<core.String> requestMetadata_experimentIds,
+      core.String requestMetadata_trafficSource_trafficSubId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -723,9 +762,9 @@
     if (examType == null) {
       throw new core.ArgumentError("Parameter examType is required.");
     }
-    if (requestMetadata_trafficSource_trafficSubId != null) {
-      _queryParams["requestMetadata.trafficSource.trafficSubId"] = [
-        requestMetadata_trafficSource_trafficSubId
+    if (requestMetadata_partnersSessionId != null) {
+      _queryParams["requestMetadata.partnersSessionId"] = [
+        requestMetadata_partnersSessionId
       ];
     }
     if (requestMetadata_userOverrides_userId != null) {
@@ -733,11 +772,6 @@
         requestMetadata_userOverrides_userId
       ];
     }
-    if (requestMetadata_partnersSessionId != null) {
-      _queryParams["requestMetadata.partnersSessionId"] = [
-        requestMetadata_partnersSessionId
-      ];
-    }
     if (requestMetadata_trafficSource_trafficSourceId != null) {
       _queryParams["requestMetadata.trafficSource.trafficSourceId"] = [
         requestMetadata_trafficSource_trafficSourceId
@@ -755,6 +789,14 @@
       _queryParams["requestMetadata.experimentIds"] =
           requestMetadata_experimentIds;
     }
+    if (requestMetadata_trafficSource_trafficSubId != null) {
+      _queryParams["requestMetadata.trafficSource.trafficSubId"] = [
+        requestMetadata_trafficSource_trafficSubId
+      ];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/exams/' + commons.Escaper.ecapeVariable('$examType') + '/token';
 
@@ -778,11 +820,27 @@
   ///
   /// Request parameters:
   ///
-  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
+  /// [requestMetadata_locale] - Locale to use for the current request.
+  ///
+  /// [requestMetadata_userOverrides_ipAddress] - IP address to use instead of
+  /// the user's geo-located IP address.
+  ///
+  /// [requestMetadata_experimentIds] - Experiment IDs the current request
+  /// belongs to.
+  ///
+  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
+  /// indicate where the traffic comes from.
+  /// An identifier has multiple letters created by a team which redirected the
+  /// traffic to us.
+  ///
+  /// [orderBy] - How to order Leads. Currently, only `create_time`
+  /// and `create_time desc` are supported
   ///
   /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
   /// instead of the user's ID.
   ///
+  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
+  ///
   /// [pageToken] - A token identifying a page of results that the server
   /// returns.
   /// Typically, this is the value of `ListLeadsResponse.next_page_token`
@@ -798,21 +856,8 @@
   /// An identifier has multiple letters created by a team which redirected the
   /// traffic to us.
   ///
-  /// [requestMetadata_locale] - Locale to use for the current request.
-  ///
-  /// [requestMetadata_userOverrides_ipAddress] - IP address to use instead of
-  /// the user's geo-located IP address.
-  ///
-  /// [requestMetadata_experimentIds] - Experiment IDs the current request
-  /// belongs to.
-  ///
-  /// [orderBy] - How to order Leads. Currently, only `create_time`
-  /// and `create_time desc` are supported
-  ///
-  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
-  /// indicate where the traffic comes from.
-  /// An identifier has multiple letters created by a team which redirected the
-  /// traffic to us.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListLeadsResponse].
   ///
@@ -822,16 +867,17 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLeadsResponse> list(
-      {core.String requestMetadata_partnersSessionId,
+      {core.String requestMetadata_locale,
+      core.String requestMetadata_userOverrides_ipAddress,
+      core.List<core.String> requestMetadata_experimentIds,
+      core.String requestMetadata_trafficSource_trafficSubId,
+      core.String orderBy,
       core.String requestMetadata_userOverrides_userId,
+      core.String requestMetadata_partnersSessionId,
       core.String pageToken,
       core.int pageSize,
       core.String requestMetadata_trafficSource_trafficSourceId,
-      core.String requestMetadata_locale,
-      core.String requestMetadata_userOverrides_ipAddress,
-      core.List<core.String> requestMetadata_experimentIds,
-      core.String orderBy,
-      core.String requestMetadata_trafficSource_trafficSubId}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -839,16 +885,36 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (requestMetadata_partnersSessionId != null) {
-      _queryParams["requestMetadata.partnersSessionId"] = [
-        requestMetadata_partnersSessionId
+    if (requestMetadata_locale != null) {
+      _queryParams["requestMetadata.locale"] = [requestMetadata_locale];
+    }
+    if (requestMetadata_userOverrides_ipAddress != null) {
+      _queryParams["requestMetadata.userOverrides.ipAddress"] = [
+        requestMetadata_userOverrides_ipAddress
       ];
     }
+    if (requestMetadata_experimentIds != null) {
+      _queryParams["requestMetadata.experimentIds"] =
+          requestMetadata_experimentIds;
+    }
+    if (requestMetadata_trafficSource_trafficSubId != null) {
+      _queryParams["requestMetadata.trafficSource.trafficSubId"] = [
+        requestMetadata_trafficSource_trafficSubId
+      ];
+    }
+    if (orderBy != null) {
+      _queryParams["orderBy"] = [orderBy];
+    }
     if (requestMetadata_userOverrides_userId != null) {
       _queryParams["requestMetadata.userOverrides.userId"] = [
         requestMetadata_userOverrides_userId
       ];
     }
+    if (requestMetadata_partnersSessionId != null) {
+      _queryParams["requestMetadata.partnersSessionId"] = [
+        requestMetadata_partnersSessionId
+      ];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
@@ -860,25 +926,8 @@
         requestMetadata_trafficSource_trafficSourceId
       ];
     }
-    if (requestMetadata_locale != null) {
-      _queryParams["requestMetadata.locale"] = [requestMetadata_locale];
-    }
-    if (requestMetadata_userOverrides_ipAddress != null) {
-      _queryParams["requestMetadata.userOverrides.ipAddress"] = [
-        requestMetadata_userOverrides_ipAddress
-      ];
-    }
-    if (requestMetadata_experimentIds != null) {
-      _queryParams["requestMetadata.experimentIds"] =
-          requestMetadata_experimentIds;
-    }
-    if (orderBy != null) {
-      _queryParams["orderBy"] = [orderBy];
-    }
-    if (requestMetadata_trafficSource_trafficSubId != null) {
-      _queryParams["requestMetadata.trafficSource.trafficSubId"] = [
-        requestMetadata_trafficSource_trafficSubId
-      ];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/leads';
@@ -905,11 +954,6 @@
   ///
   /// Request parameters:
   ///
-  /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
-  /// instead of the user's ID.
-  ///
-  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
-  ///
   /// [requestMetadata_trafficSource_trafficSourceId] - Identifier to indicate
   /// where the traffic comes from.
   /// An identifier has multiple letters created by a team which redirected the
@@ -928,6 +972,14 @@
   /// An identifier has multiple letters created by a team which redirected the
   /// traffic to us.
   ///
+  /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
+  /// instead of the user's ID.
+  ///
+  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOffersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -936,13 +988,14 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOffersResponse> list(
-      {core.String requestMetadata_userOverrides_userId,
-      core.String requestMetadata_partnersSessionId,
-      core.String requestMetadata_trafficSource_trafficSourceId,
+      {core.String requestMetadata_trafficSource_trafficSourceId,
       core.String requestMetadata_locale,
       core.String requestMetadata_userOverrides_ipAddress,
       core.List<core.String> requestMetadata_experimentIds,
-      core.String requestMetadata_trafficSource_trafficSubId}) {
+      core.String requestMetadata_trafficSource_trafficSubId,
+      core.String requestMetadata_userOverrides_userId,
+      core.String requestMetadata_partnersSessionId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -950,16 +1003,6 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (requestMetadata_userOverrides_userId != null) {
-      _queryParams["requestMetadata.userOverrides.userId"] = [
-        requestMetadata_userOverrides_userId
-      ];
-    }
-    if (requestMetadata_partnersSessionId != null) {
-      _queryParams["requestMetadata.partnersSessionId"] = [
-        requestMetadata_partnersSessionId
-      ];
-    }
     if (requestMetadata_trafficSource_trafficSourceId != null) {
       _queryParams["requestMetadata.trafficSource.trafficSourceId"] = [
         requestMetadata_trafficSource_trafficSourceId
@@ -982,6 +1025,19 @@
         requestMetadata_trafficSource_trafficSubId
       ];
     }
+    if (requestMetadata_userOverrides_userId != null) {
+      _queryParams["requestMetadata.userOverrides.userId"] = [
+        requestMetadata_userOverrides_userId
+      ];
+    }
+    if (requestMetadata_partnersSessionId != null) {
+      _queryParams["requestMetadata.partnersSessionId"] = [
+        requestMetadata_partnersSessionId
+      ];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/offers';
 
@@ -1005,31 +1061,6 @@
   ///
   /// Request parameters:
   ///
-  /// [requestMetadata_experimentIds] - Experiment IDs the current request
-  /// belongs to.
-  ///
-  /// [entireCompany] - if true, show history for the entire company.  Requires
-  /// user to be admin.
-  ///
-  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
-  /// indicate where the traffic comes from.
-  /// An identifier has multiple letters created by a team which redirected the
-  /// traffic to us.
-  ///
-  /// [orderBy] - Comma-separated list of fields to order by, e.g.:
-  /// "foo,bar,baz".
-  /// Use "foo desc" to sort descending.
-  /// List of valid field names is: name, offer_code, expiration_time, status,
-  ///     last_modified_time, sender_name, creation_time, country_code,
-  ///     offer_type.
-  ///
-  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
-  ///
-  /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
-  /// instead of the user's ID.
-  ///
-  /// [pageToken] - Token to retrieve a specific page.
-  ///
   /// [pageSize] - Maximum number of rows to return per page.
   ///
   /// [requestMetadata_trafficSource_trafficSourceId] - Identifier to indicate
@@ -1042,6 +1073,34 @@
   /// [requestMetadata_userOverrides_ipAddress] - IP address to use instead of
   /// the user's geo-located IP address.
   ///
+  /// [requestMetadata_experimentIds] - Experiment IDs the current request
+  /// belongs to.
+  ///
+  /// [entireCompany] - if true, show history for the entire company.  Requires
+  /// user to be admin.
+  ///
+  /// [orderBy] - Comma-separated list of fields to order by, e.g.:
+  /// "foo,bar,baz".
+  /// Use "foo desc" to sort descending.
+  /// List of valid field names is: name, offer_code, expiration_time, status,
+  ///     last_modified_time, sender_name, creation_time, country_code,
+  ///     offer_type.
+  ///
+  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
+  /// indicate where the traffic comes from.
+  /// An identifier has multiple letters created by a team which redirected the
+  /// traffic to us.
+  ///
+  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
+  ///
+  /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
+  /// instead of the user's ID.
+  ///
+  /// [pageToken] - Token to retrieve a specific page.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOffersHistoryResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1050,17 +1109,18 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOffersHistoryResponse> list(
-      {core.List<core.String> requestMetadata_experimentIds,
+      {core.int pageSize,
+      core.String requestMetadata_trafficSource_trafficSourceId,
+      core.String requestMetadata_locale,
+      core.String requestMetadata_userOverrides_ipAddress,
+      core.List<core.String> requestMetadata_experimentIds,
       core.bool entireCompany,
-      core.String requestMetadata_trafficSource_trafficSubId,
       core.String orderBy,
+      core.String requestMetadata_trafficSource_trafficSubId,
       core.String requestMetadata_partnersSessionId,
       core.String requestMetadata_userOverrides_userId,
       core.String pageToken,
-      core.int pageSize,
-      core.String requestMetadata_trafficSource_trafficSourceId,
-      core.String requestMetadata_locale,
-      core.String requestMetadata_userOverrides_ipAddress}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1068,34 +1128,6 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (requestMetadata_experimentIds != null) {
-      _queryParams["requestMetadata.experimentIds"] =
-          requestMetadata_experimentIds;
-    }
-    if (entireCompany != null) {
-      _queryParams["entireCompany"] = ["${entireCompany}"];
-    }
-    if (requestMetadata_trafficSource_trafficSubId != null) {
-      _queryParams["requestMetadata.trafficSource.trafficSubId"] = [
-        requestMetadata_trafficSource_trafficSubId
-      ];
-    }
-    if (orderBy != null) {
-      _queryParams["orderBy"] = [orderBy];
-    }
-    if (requestMetadata_partnersSessionId != null) {
-      _queryParams["requestMetadata.partnersSessionId"] = [
-        requestMetadata_partnersSessionId
-      ];
-    }
-    if (requestMetadata_userOverrides_userId != null) {
-      _queryParams["requestMetadata.userOverrides.userId"] = [
-        requestMetadata_userOverrides_userId
-      ];
-    }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
-    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
@@ -1112,6 +1144,37 @@
         requestMetadata_userOverrides_ipAddress
       ];
     }
+    if (requestMetadata_experimentIds != null) {
+      _queryParams["requestMetadata.experimentIds"] =
+          requestMetadata_experimentIds;
+    }
+    if (entireCompany != null) {
+      _queryParams["entireCompany"] = ["${entireCompany}"];
+    }
+    if (orderBy != null) {
+      _queryParams["orderBy"] = [orderBy];
+    }
+    if (requestMetadata_trafficSource_trafficSubId != null) {
+      _queryParams["requestMetadata.trafficSource.trafficSubId"] = [
+        requestMetadata_trafficSource_trafficSubId
+      ];
+    }
+    if (requestMetadata_partnersSessionId != null) {
+      _queryParams["requestMetadata.partnersSessionId"] = [
+        requestMetadata_partnersSessionId
+      ];
+    }
+    if (requestMetadata_userOverrides_userId != null) {
+      _queryParams["requestMetadata.userOverrides.userId"] = [
+        requestMetadata_userOverrides_userId
+      ];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/offers/history';
 
@@ -1137,6 +1200,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogUserEventResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1144,7 +1210,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogUserEventResponse> log(LogUserEventRequest request) {
+  async.Future<LogUserEventResponse> log(LogUserEventRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1155,6 +1222,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/userEvents:log';
 
@@ -1200,6 +1270,9 @@
   /// An identifier has multiple letters created by a team which redirected the
   /// traffic to us.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListUserStatesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1214,7 +1287,8 @@
       core.String requestMetadata_locale,
       core.String requestMetadata_userOverrides_ipAddress,
       core.List<core.String> requestMetadata_experimentIds,
-      core.String requestMetadata_trafficSource_trafficSubId}) {
+      core.String requestMetadata_trafficSource_trafficSubId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1254,6 +1328,9 @@
         requestMetadata_trafficSource_trafficSubId
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/userStates';
 
@@ -1281,11 +1358,19 @@
   /// [userId] - The ID of the user. Can be set to <code>me</code> to mean
   /// the currently authenticated user.
   ///
-  /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
-  /// instead of the user's ID.
+  /// [requestMetadata_experimentIds] - Experiment IDs the current request
+  /// belongs to.
+  ///
+  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
+  /// indicate where the traffic comes from.
+  /// An identifier has multiple letters created by a team which redirected the
+  /// traffic to us.
   ///
   /// [requestMetadata_partnersSessionId] - Google Partners session ID.
   ///
+  /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
+  /// instead of the user's ID.
+  ///
   /// [requestMetadata_trafficSource_trafficSourceId] - Identifier to indicate
   /// where the traffic comes from.
   /// An identifier has multiple letters created by a team which redirected the
@@ -1296,13 +1381,8 @@
   /// [requestMetadata_userOverrides_ipAddress] - IP address to use instead of
   /// the user's geo-located IP address.
   ///
-  /// [requestMetadata_experimentIds] - Experiment IDs the current request
-  /// belongs to.
-  ///
-  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
-  /// indicate where the traffic comes from.
-  /// An identifier has multiple letters created by a team which redirected the
-  /// traffic to us.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [CompanyRelation].
   ///
@@ -1313,13 +1393,14 @@
   /// this method will complete with the same error.
   async.Future<CompanyRelation> createCompanyRelation(
       CompanyRelation request, core.String userId,
-      {core.String requestMetadata_userOverrides_userId,
+      {core.List<core.String> requestMetadata_experimentIds,
+      core.String requestMetadata_trafficSource_trafficSubId,
       core.String requestMetadata_partnersSessionId,
+      core.String requestMetadata_userOverrides_userId,
       core.String requestMetadata_trafficSource_trafficSourceId,
       core.String requestMetadata_locale,
       core.String requestMetadata_userOverrides_ipAddress,
-      core.List<core.String> requestMetadata_experimentIds,
-      core.String requestMetadata_trafficSource_trafficSubId}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1333,9 +1414,13 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
-    if (requestMetadata_userOverrides_userId != null) {
-      _queryParams["requestMetadata.userOverrides.userId"] = [
-        requestMetadata_userOverrides_userId
+    if (requestMetadata_experimentIds != null) {
+      _queryParams["requestMetadata.experimentIds"] =
+          requestMetadata_experimentIds;
+    }
+    if (requestMetadata_trafficSource_trafficSubId != null) {
+      _queryParams["requestMetadata.trafficSource.trafficSubId"] = [
+        requestMetadata_trafficSource_trafficSubId
       ];
     }
     if (requestMetadata_partnersSessionId != null) {
@@ -1343,6 +1428,11 @@
         requestMetadata_partnersSessionId
       ];
     }
+    if (requestMetadata_userOverrides_userId != null) {
+      _queryParams["requestMetadata.userOverrides.userId"] = [
+        requestMetadata_userOverrides_userId
+      ];
+    }
     if (requestMetadata_trafficSource_trafficSourceId != null) {
       _queryParams["requestMetadata.trafficSource.trafficSourceId"] = [
         requestMetadata_trafficSource_trafficSourceId
@@ -1356,14 +1446,8 @@
         requestMetadata_userOverrides_ipAddress
       ];
     }
-    if (requestMetadata_experimentIds != null) {
-      _queryParams["requestMetadata.experimentIds"] =
-          requestMetadata_experimentIds;
-    }
-    if (requestMetadata_trafficSource_trafficSubId != null) {
-      _queryParams["requestMetadata.trafficSource.trafficSubId"] = [
-        requestMetadata_trafficSource_trafficSubId
-      ];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/users/' +
@@ -1394,11 +1478,11 @@
   /// An identifier has multiple letters created by a team which redirected the
   /// traffic to us.
   ///
-  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
-  ///
   /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
   /// instead of the user's ID.
   ///
+  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
+  ///
   /// [requestMetadata_trafficSource_trafficSourceId] - Identifier to indicate
   /// where the traffic comes from.
   /// An identifier has multiple letters created by a team which redirected the
@@ -1409,6 +1493,9 @@
   /// [requestMetadata_userOverrides_ipAddress] - IP address to use instead of
   /// the user's geo-located IP address.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1419,11 +1506,12 @@
   async.Future<Empty> deleteCompanyRelation(core.String userId,
       {core.List<core.String> requestMetadata_experimentIds,
       core.String requestMetadata_trafficSource_trafficSubId,
-      core.String requestMetadata_partnersSessionId,
       core.String requestMetadata_userOverrides_userId,
+      core.String requestMetadata_partnersSessionId,
       core.String requestMetadata_trafficSource_trafficSourceId,
       core.String requestMetadata_locale,
-      core.String requestMetadata_userOverrides_ipAddress}) {
+      core.String requestMetadata_userOverrides_ipAddress,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1443,16 +1531,16 @@
         requestMetadata_trafficSource_trafficSubId
       ];
     }
-    if (requestMetadata_partnersSessionId != null) {
-      _queryParams["requestMetadata.partnersSessionId"] = [
-        requestMetadata_partnersSessionId
-      ];
-    }
     if (requestMetadata_userOverrides_userId != null) {
       _queryParams["requestMetadata.userOverrides.userId"] = [
         requestMetadata_userOverrides_userId
       ];
     }
+    if (requestMetadata_partnersSessionId != null) {
+      _queryParams["requestMetadata.partnersSessionId"] = [
+        requestMetadata_partnersSessionId
+      ];
+    }
     if (requestMetadata_trafficSource_trafficSourceId != null) {
       _queryParams["requestMetadata.trafficSource.trafficSourceId"] = [
         requestMetadata_trafficSource_trafficSourceId
@@ -1466,6 +1554,9 @@
         requestMetadata_userOverrides_ipAddress
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/users/' +
         commons.Escaper.ecapeVariable('$userId') +
@@ -1517,6 +1608,9 @@
   /// An identifier has multiple letters created by a team which redirected the
   /// traffic to us.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [User].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1532,7 +1626,8 @@
       core.String requestMetadata_locale,
       core.String requestMetadata_userOverrides_ipAddress,
       core.List<core.String> requestMetadata_experimentIds,
-      core.String requestMetadata_trafficSource_trafficSubId}) {
+      core.String requestMetadata_trafficSource_trafficSubId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1578,6 +1673,9 @@
         requestMetadata_trafficSource_trafficSubId
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/users/' + commons.Escaper.ecapeVariable('$userId');
 
@@ -1597,14 +1695,6 @@
   ///
   /// Request parameters:
   ///
-  /// [requestMetadata_experimentIds] - Experiment IDs the current request
-  /// belongs to.
-  ///
-  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
-  /// indicate where the traffic comes from.
-  /// An identifier has multiple letters created by a team which redirected the
-  /// traffic to us.
-  ///
   /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
   /// instead of the user's ID.
   ///
@@ -1620,6 +1710,17 @@
   /// [requestMetadata_userOverrides_ipAddress] - IP address to use instead of
   /// the user's geo-located IP address.
   ///
+  /// [requestMetadata_experimentIds] - Experiment IDs the current request
+  /// belongs to.
+  ///
+  /// [requestMetadata_trafficSource_trafficSubId] - Second level identifier to
+  /// indicate where the traffic comes from.
+  /// An identifier has multiple letters created by a team which redirected the
+  /// traffic to us.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserProfile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1628,13 +1729,14 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UserProfile> updateProfile(UserProfile request,
-      {core.List<core.String> requestMetadata_experimentIds,
-      core.String requestMetadata_trafficSource_trafficSubId,
-      core.String requestMetadata_userOverrides_userId,
+      {core.String requestMetadata_userOverrides_userId,
       core.String requestMetadata_partnersSessionId,
       core.String requestMetadata_trafficSource_trafficSourceId,
       core.String requestMetadata_locale,
-      core.String requestMetadata_userOverrides_ipAddress}) {
+      core.String requestMetadata_userOverrides_ipAddress,
+      core.List<core.String> requestMetadata_experimentIds,
+      core.String requestMetadata_trafficSource_trafficSubId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1645,15 +1747,6 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
-    if (requestMetadata_experimentIds != null) {
-      _queryParams["requestMetadata.experimentIds"] =
-          requestMetadata_experimentIds;
-    }
-    if (requestMetadata_trafficSource_trafficSubId != null) {
-      _queryParams["requestMetadata.trafficSource.trafficSubId"] = [
-        requestMetadata_trafficSource_trafficSubId
-      ];
-    }
     if (requestMetadata_userOverrides_userId != null) {
       _queryParams["requestMetadata.userOverrides.userId"] = [
         requestMetadata_userOverrides_userId
@@ -1677,6 +1770,18 @@
         requestMetadata_userOverrides_ipAddress
       ];
     }
+    if (requestMetadata_experimentIds != null) {
+      _queryParams["requestMetadata.experimentIds"] =
+          requestMetadata_experimentIds;
+    }
+    if (requestMetadata_trafficSource_trafficSubId != null) {
+      _queryParams["requestMetadata.trafficSource.trafficSubId"] = [
+        requestMetadata_trafficSource_trafficSubId
+      ];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/users/profile';
 
@@ -1700,11 +1805,6 @@
   ///
   /// Request parameters:
   ///
-  /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
-  /// instead of the user's ID.
-  ///
-  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
-  ///
   /// [requestMetadata_trafficSource_trafficSourceId] - Identifier to indicate
   /// where the traffic comes from.
   /// An identifier has multiple letters created by a team which redirected the
@@ -1723,6 +1823,14 @@
   /// An identifier has multiple letters created by a team which redirected the
   /// traffic to us.
   ///
+  /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
+  /// instead of the user's ID.
+  ///
+  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetPartnersStatusResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1731,13 +1839,14 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetPartnersStatusResponse> getPartnersstatus(
-      {core.String requestMetadata_userOverrides_userId,
-      core.String requestMetadata_partnersSessionId,
-      core.String requestMetadata_trafficSource_trafficSourceId,
+      {core.String requestMetadata_trafficSource_trafficSourceId,
       core.String requestMetadata_locale,
       core.String requestMetadata_userOverrides_ipAddress,
       core.List<core.String> requestMetadata_experimentIds,
-      core.String requestMetadata_trafficSource_trafficSubId}) {
+      core.String requestMetadata_trafficSource_trafficSubId,
+      core.String requestMetadata_userOverrides_userId,
+      core.String requestMetadata_partnersSessionId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1745,16 +1854,6 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (requestMetadata_userOverrides_userId != null) {
-      _queryParams["requestMetadata.userOverrides.userId"] = [
-        requestMetadata_userOverrides_userId
-      ];
-    }
-    if (requestMetadata_partnersSessionId != null) {
-      _queryParams["requestMetadata.partnersSessionId"] = [
-        requestMetadata_partnersSessionId
-      ];
-    }
     if (requestMetadata_trafficSource_trafficSourceId != null) {
       _queryParams["requestMetadata.trafficSource.trafficSourceId"] = [
         requestMetadata_trafficSource_trafficSourceId
@@ -1777,6 +1876,19 @@
         requestMetadata_trafficSource_trafficSubId
       ];
     }
+    if (requestMetadata_userOverrides_userId != null) {
+      _queryParams["requestMetadata.userOverrides.userId"] = [
+        requestMetadata_userOverrides_userId
+      ];
+    }
+    if (requestMetadata_partnersSessionId != null) {
+      _queryParams["requestMetadata.partnersSessionId"] = [
+        requestMetadata_partnersSessionId
+      ];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/partnersstatus';
 
@@ -1797,6 +1909,9 @@
   ///
   /// Request parameters:
   ///
+  /// [updateMask] - Standard field mask for the set of fields to be updated.
+  /// Required with at least 1 value in FieldMask's paths.
+  ///
   /// [requestMetadata_experimentIds] - Experiment IDs the current request
   /// belongs to.
   ///
@@ -1805,11 +1920,11 @@
   /// An identifier has multiple letters created by a team which redirected the
   /// traffic to us.
   ///
+  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
+  ///
   /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
   /// instead of the user's ID.
   ///
-  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
-  ///
   /// [requestMetadata_trafficSource_trafficSourceId] - Identifier to indicate
   /// where the traffic comes from.
   /// An identifier has multiple letters created by a team which redirected the
@@ -1820,8 +1935,8 @@
   /// [requestMetadata_userOverrides_ipAddress] - IP address to use instead of
   /// the user's geo-located IP address.
   ///
-  /// [updateMask] - Standard field mask for the set of fields to be updated.
-  /// Required with at least 1 value in FieldMask's paths.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Company].
   ///
@@ -1831,14 +1946,15 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Company> updateCompanies(Company request,
-      {core.List<core.String> requestMetadata_experimentIds,
+      {core.String updateMask,
+      core.List<core.String> requestMetadata_experimentIds,
       core.String requestMetadata_trafficSource_trafficSubId,
-      core.String requestMetadata_userOverrides_userId,
       core.String requestMetadata_partnersSessionId,
+      core.String requestMetadata_userOverrides_userId,
       core.String requestMetadata_trafficSource_trafficSourceId,
       core.String requestMetadata_locale,
       core.String requestMetadata_userOverrides_ipAddress,
-      core.String updateMask}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1849,6 +1965,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if (updateMask != null) {
+      _queryParams["updateMask"] = [updateMask];
+    }
     if (requestMetadata_experimentIds != null) {
       _queryParams["requestMetadata.experimentIds"] =
           requestMetadata_experimentIds;
@@ -1858,16 +1977,16 @@
         requestMetadata_trafficSource_trafficSubId
       ];
     }
-    if (requestMetadata_userOverrides_userId != null) {
-      _queryParams["requestMetadata.userOverrides.userId"] = [
-        requestMetadata_userOverrides_userId
-      ];
-    }
     if (requestMetadata_partnersSessionId != null) {
       _queryParams["requestMetadata.partnersSessionId"] = [
         requestMetadata_partnersSessionId
       ];
     }
+    if (requestMetadata_userOverrides_userId != null) {
+      _queryParams["requestMetadata.userOverrides.userId"] = [
+        requestMetadata_userOverrides_userId
+      ];
+    }
     if (requestMetadata_trafficSource_trafficSourceId != null) {
       _queryParams["requestMetadata.trafficSource.trafficSourceId"] = [
         requestMetadata_trafficSource_trafficSourceId
@@ -1881,8 +2000,8 @@
         requestMetadata_userOverrides_ipAddress
       ];
     }
-    if (updateMask != null) {
-      _queryParams["updateMask"] = [updateMask];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/companies';
@@ -1902,6 +2021,11 @@
   ///
   /// Request parameters:
   ///
+  /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
+  /// instead of the user's ID.
+  ///
+  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
+  ///
   /// [requestMetadata_trafficSource_trafficSourceId] - Identifier to indicate
   /// where the traffic comes from.
   /// An identifier has multiple letters created by a team which redirected the
@@ -1924,10 +2048,8 @@
   /// An identifier has multiple letters created by a team which redirected the
   /// traffic to us.
   ///
-  /// [requestMetadata_userOverrides_userId] - Logged-in user ID to impersonate
-  /// instead of the user's ID.
-  ///
-  /// [requestMetadata_partnersSessionId] - Google Partners session ID.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Lead].
   ///
@@ -1937,14 +2059,15 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Lead> updateLeads(Lead request,
-      {core.String requestMetadata_trafficSource_trafficSourceId,
+      {core.String requestMetadata_userOverrides_userId,
+      core.String requestMetadata_partnersSessionId,
+      core.String requestMetadata_trafficSource_trafficSourceId,
       core.String requestMetadata_locale,
       core.String requestMetadata_userOverrides_ipAddress,
       core.String updateMask,
       core.List<core.String> requestMetadata_experimentIds,
       core.String requestMetadata_trafficSource_trafficSubId,
-      core.String requestMetadata_userOverrides_userId,
-      core.String requestMetadata_partnersSessionId}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1955,6 +2078,16 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if (requestMetadata_userOverrides_userId != null) {
+      _queryParams["requestMetadata.userOverrides.userId"] = [
+        requestMetadata_userOverrides_userId
+      ];
+    }
+    if (requestMetadata_partnersSessionId != null) {
+      _queryParams["requestMetadata.partnersSessionId"] = [
+        requestMetadata_partnersSessionId
+      ];
+    }
     if (requestMetadata_trafficSource_trafficSourceId != null) {
       _queryParams["requestMetadata.trafficSource.trafficSourceId"] = [
         requestMetadata_trafficSource_trafficSourceId
@@ -1980,15 +2113,8 @@
         requestMetadata_trafficSource_trafficSubId
       ];
     }
-    if (requestMetadata_userOverrides_userId != null) {
-      _queryParams["requestMetadata.userOverrides.userId"] = [
-        requestMetadata_userOverrides_userId
-      ];
-    }
-    if (requestMetadata_partnersSessionId != null) {
-      _queryParams["requestMetadata.partnersSessionId"] = [
-        requestMetadata_partnersSessionId
-      ];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/leads';
@@ -4693,6 +4819,10 @@
   /// Of Service` button.
   /// - "SMB_ENTERED_WEBSITE_IN_CONTACT_PARTNER_FORM" : Advertiser entered
   /// website in contact form.
+  /// - "AGENCY_SELECTED_OPT_IN_AFA_MIGRATION" : Agency opted in for migrating
+  /// their exams to Academy for Ads.
+  /// - "AGENCY_SELECTED_OPT_OUT_AFA_MIGRATION" : Agency opted out for migrating
+  /// their exams to Academy for Ads.
   core.String eventAction;
 
   /// The category the action belongs to.
@@ -5532,6 +5662,9 @@
   /// A list of ids representing which markets the user was interested in.
   core.List<core.String> markets;
 
+  /// Whether or not to migrate the user's exam data to Academy for Ads.
+  core.bool migrateToAfa;
+
   /// The user's phone number.
   core.String phoneNumber;
 
@@ -5577,6 +5710,9 @@
     if (_json.containsKey("markets")) {
       markets = _json["markets"];
     }
+    if (_json.containsKey("migrateToAfa")) {
+      migrateToAfa = _json["migrateToAfa"];
+    }
     if (_json.containsKey("phoneNumber")) {
       phoneNumber = _json["phoneNumber"];
     }
@@ -5624,6 +5760,9 @@
     if (markets != null) {
       _json["markets"] = markets;
     }
+    if (migrateToAfa != null) {
+      _json["migrateToAfa"] = migrateToAfa;
+    }
     if (phoneNumber != null) {
       _json["phoneNumber"] = phoneNumber;
     }
diff --git a/generated/googleapis/lib/people/v1.dart b/generated/googleapis/lib/people/v1.dart
index e02c593..2d2fa70 100644
--- a/generated/googleapis/lib/people/v1.dart
+++ b/generated/googleapis/lib/people/v1.dart
@@ -76,10 +76,13 @@
   ///
   /// Request parameters:
   ///
+  /// [resourceNames] - The resource names of the contact groups to get.
+  ///
   /// [maxMembers] - Specifies the maximum number of members to return for each
   /// group.
   ///
-  /// [resourceNames] - The resource names of the contact groups to get.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [BatchGetContactGroupsResponse].
   ///
@@ -89,7 +92,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchGetContactGroupsResponse> batchGet(
-      {core.int maxMembers, core.List<core.String> resourceNames}) {
+      {core.List<core.String> resourceNames,
+      core.int maxMembers,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -97,11 +102,14 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if (resourceNames != null) {
+      _queryParams["resourceNames"] = resourceNames;
+    }
     if (maxMembers != null) {
       _queryParams["maxMembers"] = ["${maxMembers}"];
     }
-    if (resourceNames != null) {
-      _queryParams["resourceNames"] = resourceNames;
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/contactGroups:batchGet';
@@ -122,6 +130,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContactGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -129,7 +140,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ContactGroup> create(CreateContactGroupRequest request) {
+  async.Future<ContactGroup> create(CreateContactGroupRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -140,6 +152,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/contactGroups';
 
@@ -163,6 +178,9 @@
   /// [deleteContacts] - Set to true to also delete the contacts in the
   /// specified group.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -171,7 +189,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> delete(core.String resourceName,
-      {core.bool deleteContacts}) {
+      {core.bool deleteContacts, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -185,6 +203,9 @@
     if (deleteContacts != null) {
       _queryParams["deleteContacts"] = ["${deleteContacts}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$resourceName');
 
@@ -207,6 +228,9 @@
   ///
   /// [maxMembers] - Specifies the maximum number of members to return.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContactGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -215,7 +239,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ContactGroup> get(core.String resourceName,
-      {core.int maxMembers}) {
+      {core.int maxMembers, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -229,6 +253,9 @@
     if (maxMembers != null) {
       _queryParams["maxMembers"] = ["${maxMembers}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$resourceName');
 
@@ -246,15 +273,18 @@
   ///
   /// Request parameters:
   ///
+  /// [syncToken] - A sync token, returned by a previous call to
+  /// `contactgroups.list`.
+  /// Only resources changed since the sync token was created will be returned.
+  ///
   /// [pageToken] - The next_page_token value returned from a previous call to
   /// [ListContactGroups](/people/api/rest/v1/contactgroups/list).
   /// Requests the next page of resources.
   ///
   /// [pageSize] - The maximum number of resources to return.
   ///
-  /// [syncToken] - A sync token, returned by a previous call to
-  /// `contactgroups.list`.
-  /// Only resources changed since the sync token was created will be returned.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListContactGroupsResponse].
   ///
@@ -264,7 +294,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListContactGroupsResponse> list(
-      {core.String pageToken, core.int pageSize, core.String syncToken}) {
+      {core.String syncToken,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -272,14 +305,17 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if (syncToken != null) {
+      _queryParams["syncToken"] = [syncToken];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (syncToken != null) {
-      _queryParams["syncToken"] = [syncToken];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/contactGroups';
@@ -306,6 +342,9 @@
   /// string, in the form of `contactGroups/`<var>contact_group_id</var>.
   /// Value must have pattern "^contactGroups/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContactGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -314,7 +353,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ContactGroup> update(
-      UpdateContactGroupRequest request, core.String resourceName) {
+      UpdateContactGroupRequest request, core.String resourceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -328,6 +368,9 @@
     if (resourceName == null) {
       throw new core.ArgumentError("Parameter resourceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$resourceName');
 
@@ -356,6 +399,9 @@
   /// [resourceName] - The resource name of the contact group to modify.
   /// Value must have pattern "^contactGroups/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ModifyContactGroupMembersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -364,7 +410,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ModifyContactGroupMembersResponse> modify(
-      ModifyContactGroupMembersRequest request, core.String resourceName) {
+      ModifyContactGroupMembersRequest request, core.String resourceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -378,6 +425,9 @@
     if (resourceName == null) {
       throw new core.ArgumentError("Parameter resourceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resourceName') +
@@ -410,6 +460,9 @@
   ///
   /// [parent] - The resource name of the owning person resource.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Person].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -417,7 +470,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Person> createContact(Person request, {core.String parent}) {
+  async.Future<Person> createContact(Person request,
+      {core.String parent, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -431,6 +485,9 @@
     if (parent != null) {
       _queryParams["parent"] = [parent];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/people:createContact';
 
@@ -450,6 +507,9 @@
   /// [resourceName] - The resource name of the contact to delete.
   /// Value must have pattern "^people/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -457,7 +517,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> deleteContact(core.String resourceName) {
+  async.Future<Empty> deleteContact(core.String resourceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -468,6 +529,9 @@
     if (resourceName == null) {
       throw new core.ArgumentError("Parameter resourceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resourceName') +
@@ -537,6 +601,9 @@
   /// response. Each path should start with `person.`: for example,
   /// `person.names` or `person.photos`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Person].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -545,7 +612,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Person> get(core.String resourceName,
-      {core.String personFields, core.String requestMask_includeField}) {
+      {core.String personFields,
+      core.String requestMask_includeField,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -562,6 +631,9 @@
     if (requestMask_includeField != null) {
       _queryParams["requestMask.includeField"] = [requestMask_includeField];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$resourceName');
 
@@ -582,18 +654,6 @@
   ///
   /// Request parameters:
   ///
-  /// [resourceNames] - The resource names of the people to provide information
-  /// about.
-  ///
-  /// - To get information about the authenticated user, specify `people/me`.
-  /// - To get information about a google account, specify
-  ///   `people/`<var>account_id</var>.
-  /// - To get information about a contact, specify the resource name that
-  ///   identifies the contact as returned by
-  /// [`people.connections.list`](/people/api/rest/v1/people.connections/list).
-  ///
-  /// You can include up to 50 resource names in one request.
-  ///
   /// [personFields] - **Required.** A field mask to restrict which fields on
   /// each person are
   /// returned. Valid values are:
@@ -631,6 +691,21 @@
   /// response. Each path should start with `person.`: for example,
   /// `person.names` or `person.photos`.
   ///
+  /// [resourceNames] - The resource names of the people to provide information
+  /// about.
+  ///
+  /// - To get information about the authenticated user, specify `people/me`.
+  /// - To get information about a google account, specify
+  ///   `people/`<var>account_id</var>.
+  /// - To get information about a contact, specify the resource name that
+  ///   identifies the contact as returned by
+  /// [`people.connections.list`](/people/api/rest/v1/people.connections/list).
+  ///
+  /// You can include up to 50 resource names in one request.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetPeopleResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -639,9 +714,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetPeopleResponse> getBatchGet(
-      {core.List<core.String> resourceNames,
-      core.String personFields,
-      core.String requestMask_includeField}) {
+      {core.String personFields,
+      core.String requestMask_includeField,
+      core.List<core.String> resourceNames,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -649,15 +725,18 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (resourceNames != null) {
-      _queryParams["resourceNames"] = resourceNames;
-    }
     if (personFields != null) {
       _queryParams["personFields"] = [personFields];
     }
     if (requestMask_includeField != null) {
       _queryParams["requestMask.includeField"] = [requestMask_includeField];
     }
+    if (resourceNames != null) {
+      _queryParams["resourceNames"] = resourceNames;
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/people:batchGet';
 
@@ -717,6 +796,9 @@
   /// * skills
   /// * urls
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Person].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -725,7 +807,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Person> updateContact(Person request, core.String resourceName,
-      {core.String updatePersonFields}) {
+      {core.String updatePersonFields, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -742,6 +824,9 @@
     if (updatePersonFields != null) {
       _queryParams["updatePersonFields"] = [updatePersonFields];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resourceName') +
@@ -774,6 +859,29 @@
   /// `people/me` is valid.
   /// Value must have pattern "^people/[^/]+$".
   ///
+  /// [sortOrder] - The order in which the connections should be sorted.
+  /// Defaults to
+  /// `LAST_MODIFIED_ASCENDING`.
+  /// Possible string values are:
+  /// - "LAST_MODIFIED_ASCENDING" : A LAST_MODIFIED_ASCENDING.
+  /// - "FIRST_NAME_ASCENDING" : A FIRST_NAME_ASCENDING.
+  /// - "LAST_NAME_ASCENDING" : A LAST_NAME_ASCENDING.
+  ///
+  /// [requestSyncToken] - Whether the response should include a sync token,
+  /// which can be used to get
+  /// all changes since the last request.
+  ///
+  /// [pageToken] - The token of the page to be returned.
+  ///
+  /// [requestMask_includeField] - **Required.** Comma-separated list of person
+  /// fields to be included in the
+  /// response. Each path should start with `person.`: for example,
+  /// `person.names` or `person.photos`.
+  ///
+  /// [pageSize] - The number of connections to include in the response. Valid
+  /// values are
+  /// between 1 and 2000, inclusive. Defaults to 100.
+  ///
   /// [syncToken] - A sync token, returned by a previous call to
   /// `people.connections.list`.
   /// Only resources changed since the sync token was created will be returned.
@@ -810,28 +918,8 @@
   /// * taglines
   /// * urls
   ///
-  /// [sortOrder] - The order in which the connections should be sorted.
-  /// Defaults to
-  /// `LAST_MODIFIED_ASCENDING`.
-  /// Possible string values are:
-  /// - "LAST_MODIFIED_ASCENDING" : A LAST_MODIFIED_ASCENDING.
-  /// - "FIRST_NAME_ASCENDING" : A FIRST_NAME_ASCENDING.
-  /// - "LAST_NAME_ASCENDING" : A LAST_NAME_ASCENDING.
-  ///
-  /// [requestSyncToken] - Whether the response should include a sync token,
-  /// which can be used to get
-  /// all changes since the last request.
-  ///
-  /// [pageToken] - The token of the page to be returned.
-  ///
-  /// [pageSize] - The number of connections to include in the response. Valid
-  /// values are
-  /// between 1 and 2000, inclusive. Defaults to 100.
-  ///
-  /// [requestMask_includeField] - **Required.** Comma-separated list of person
-  /// fields to be included in the
-  /// response. Each path should start with `person.`: for example,
-  /// `person.names` or `person.photos`.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListConnectionsResponse].
   ///
@@ -841,13 +929,14 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListConnectionsResponse> list(core.String resourceName,
-      {core.String syncToken,
-      core.String personFields,
-      core.String sortOrder,
+      {core.String sortOrder,
       core.bool requestSyncToken,
       core.String pageToken,
+      core.String requestMask_includeField,
       core.int pageSize,
-      core.String requestMask_includeField}) {
+      core.String syncToken,
+      core.String personFields,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -858,12 +947,6 @@
     if (resourceName == null) {
       throw new core.ArgumentError("Parameter resourceName is required.");
     }
-    if (syncToken != null) {
-      _queryParams["syncToken"] = [syncToken];
-    }
-    if (personFields != null) {
-      _queryParams["personFields"] = [personFields];
-    }
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
@@ -873,11 +956,20 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if (requestMask_includeField != null) {
+      _queryParams["requestMask.includeField"] = [requestMask_includeField];
+    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (requestMask_includeField != null) {
-      _queryParams["requestMask.includeField"] = [requestMask_includeField];
+    if (syncToken != null) {
+      _queryParams["syncToken"] = [syncToken];
+    }
+    if (personFields != null) {
+      _queryParams["personFields"] = [personFields];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/' +
diff --git a/generated/googleapis/lib/playcustomapp/v1.dart b/generated/googleapis/lib/playcustomapp/v1.dart
index 037664a..6f1fea9 100644
--- a/generated/googleapis/lib/playcustomapp/v1.dart
+++ b/generated/googleapis/lib/playcustomapp/v1.dart
@@ -62,6 +62,9 @@
   ///
   /// [account] - Developer account ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -76,7 +79,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CustomApp> create(CustomApp request, core.String account,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -91,6 +95,9 @@
     if (account == null) {
       throw new core.ArgumentError("Parameter account is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
diff --git a/generated/googleapis/lib/playmoviespartner/v1.dart b/generated/googleapis/lib/playmoviespartner/v1.dart
index f6dbdab..e4eb8c9 100644
--- a/generated/googleapis/lib/playmoviespartner/v1.dart
+++ b/generated/googleapis/lib/playmoviespartner/v1.dart
@@ -58,6 +58,9 @@
   ///
   /// [availId] - REQUIRED. Avail ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Avail].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -65,7 +68,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Avail> get(core.String accountId, core.String availId) {
+  async.Future<Avail> get(core.String accountId, core.String availId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -79,6 +83,9 @@
     if (availId == null) {
       throw new core.ArgumentError("Parameter availId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -104,19 +111,6 @@
   /// [accountId] - REQUIRED. See _General rules_ for more information about
   /// this field.
   ///
-  /// [pphNames] - See _List methods rules_ for info about this field.
-  ///
-  /// [altId] - Filter Avails that match a case-insensitive, partner-specific
-  /// custom id.
-  /// NOTE: this field is deprecated and will be removed on V2; `alt_ids`
-  /// should be used instead.
-  ///
-  /// [studioNames] - See _List methods rules_ for info about this field.
-  ///
-  /// [territories] - Filter Avails that match (case-insensitive) any of the
-  /// given country codes,
-  /// using the "ISO 3166-1 alpha-2" format (examples: "US", "us", "Us").
-  ///
   /// [title] - Filter that matches Avails with a `title_internal_alias`,
   /// `series_title_internal_alias`, `season_title_internal_alias`,
   /// or `episode_title_internal_alias` that contains the given
@@ -131,6 +125,22 @@
   /// [altIds] - Filter Avails that match (case-insensitive) any of the given
   /// partner-specific custom ids.
   ///
+  /// [pphNames] - See _List methods rules_ for info about this field.
+  ///
+  /// [altId] - Filter Avails that match a case-insensitive, partner-specific
+  /// custom id.
+  /// NOTE: this field is deprecated and will be removed on V2; `alt_ids`
+  /// should be used instead.
+  ///
+  /// [studioNames] - See _List methods rules_ for info about this field.
+  ///
+  /// [territories] - Filter Avails that match (case-insensitive) any of the
+  /// given country codes,
+  /// using the "ISO 3166-1 alpha-2" format (examples: "US", "us", "Us").
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListAvailsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -139,15 +149,16 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListAvailsResponse> list(core.String accountId,
-      {core.List<core.String> pphNames,
-      core.String altId,
-      core.List<core.String> studioNames,
-      core.List<core.String> territories,
-      core.String title,
+      {core.String title,
       core.String pageToken,
       core.List<core.String> videoIds,
       core.int pageSize,
-      core.List<core.String> altIds}) {
+      core.List<core.String> altIds,
+      core.List<core.String> pphNames,
+      core.String altId,
+      core.List<core.String> studioNames,
+      core.List<core.String> territories,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -158,18 +169,6 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
-    if (pphNames != null) {
-      _queryParams["pphNames"] = pphNames;
-    }
-    if (altId != null) {
-      _queryParams["altId"] = [altId];
-    }
-    if (studioNames != null) {
-      _queryParams["studioNames"] = studioNames;
-    }
-    if (territories != null) {
-      _queryParams["territories"] = territories;
-    }
     if (title != null) {
       _queryParams["title"] = [title];
     }
@@ -185,6 +184,21 @@
     if (altIds != null) {
       _queryParams["altIds"] = altIds;
     }
+    if (pphNames != null) {
+      _queryParams["pphNames"] = pphNames;
+    }
+    if (altId != null) {
+      _queryParams["altId"] = [altId];
+    }
+    if (studioNames != null) {
+      _queryParams["studioNames"] = studioNames;
+    }
+    if (territories != null) {
+      _queryParams["territories"] = territories;
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -217,6 +231,9 @@
   ///
   /// [orderId] - REQUIRED. Order ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Order].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -224,7 +241,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Order> get(core.String accountId, core.String orderId) {
+  async.Future<Order> get(core.String accountId, core.String orderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -238,6 +256,9 @@
     if (orderId == null) {
       throw new core.ArgumentError("Parameter orderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -263,25 +284,28 @@
   /// [accountId] - REQUIRED. See _General rules_ for more information about
   /// this field.
   ///
-  /// [studioNames] - See _List methods rules_ for info about this field.
-  ///
-  /// [name] - Filter that matches Orders with a `name`, `show`, `season` or
-  /// `episode`
-  /// that contains the given case-insensitive name.
-  ///
-  /// [pageToken] - See _List methods rules_ for info about this field.
-  ///
   /// [videoIds] - Filter Orders that match any of the given `video_id`s.
   ///
   /// [customId] - Filter Orders that match a case-insensitive, partner-specific
   /// custom id.
   ///
+  /// [pageToken] - See _List methods rules_ for info about this field.
+  ///
   /// [pageSize] - See _List methods rules_ for info about this field.
   ///
   /// [pphNames] - See _List methods rules_ for info about this field.
   ///
   /// [status] - Filter Orders that match one of the given status.
   ///
+  /// [name] - Filter that matches Orders with a `name`, `show`, `season` or
+  /// `episode`
+  /// that contains the given case-insensitive name.
+  ///
+  /// [studioNames] - See _List methods rules_ for info about this field.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOrdersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -290,14 +314,15 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOrdersResponse> list(core.String accountId,
-      {core.List<core.String> studioNames,
-      core.String name,
-      core.String pageToken,
-      core.List<core.String> videoIds,
+      {core.List<core.String> videoIds,
       core.String customId,
+      core.String pageToken,
       core.int pageSize,
       core.List<core.String> pphNames,
-      core.List<core.String> status}) {
+      core.List<core.String> status,
+      core.String name,
+      core.List<core.String> studioNames,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -308,21 +333,15 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
-    if (studioNames != null) {
-      _queryParams["studioNames"] = studioNames;
-    }
-    if (name != null) {
-      _queryParams["name"] = [name];
-    }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
-    }
     if (videoIds != null) {
       _queryParams["videoIds"] = videoIds;
     }
     if (customId != null) {
       _queryParams["customId"] = [customId];
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
@@ -332,6 +351,15 @@
     if (status != null) {
       _queryParams["status"] = status;
     }
+    if (name != null) {
+      _queryParams["name"] = [name];
+    }
+    if (studioNames != null) {
+      _queryParams["studioNames"] = studioNames;
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -391,6 +419,9 @@
   ///
   /// [studioNames] - See _List methods rules_ for info about this field.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListStoreInfosResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -408,7 +439,8 @@
       core.List<core.String> pphNames,
       core.List<core.String> countries,
       core.String name,
-      core.List<core.String> studioNames}) {
+      core.List<core.String> studioNames,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -449,6 +481,9 @@
     if (studioNames != null) {
       _queryParams["studioNames"] = studioNames;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -484,6 +519,9 @@
   ///
   /// [country] - REQUIRED. Edit country.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StoreInfo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -492,7 +530,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StoreInfo> get(
-      core.String accountId, core.String videoId, core.String country) {
+      core.String accountId, core.String videoId, core.String country,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -509,6 +548,9 @@
     if (country == null) {
       throw new core.ArgumentError("Parameter country is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
diff --git a/generated/googleapis/lib/plus/v1.dart b/generated/googleapis/lib/plus/v1.dart
index 96b3c87..f65f000 100644
--- a/generated/googleapis/lib/plus/v1.dart
+++ b/generated/googleapis/lib/plus/v1.dart
@@ -54,6 +54,9 @@
   ///
   /// [activityId] - The ID of the activity to get.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Activity].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -61,7 +64,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Activity> get(core.String activityId) {
+  async.Future<Activity> get(core.String activityId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -72,6 +75,9 @@
     if (activityId == null) {
       throw new core.ArgumentError("Parameter activityId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'activities/' + commons.Escaper.ecapeVariable('$activityId');
 
@@ -105,6 +111,9 @@
   /// result sets. To get the next page of results, set this parameter to the
   /// value of "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ActivityFeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -113,7 +122,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ActivityFeed> list(core.String userId, core.String collection,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -133,6 +142,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'people/' +
         commons.Escaper.ecapeVariable('$userId') +
@@ -172,6 +184,9 @@
   /// value of "nextPageToken" from the previous response. This token can be of
   /// any length.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ActivityFeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -183,7 +198,8 @@
       {core.String language,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -207,6 +223,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'activities';
 
@@ -231,6 +250,9 @@
   ///
   /// [commentId] - The ID of the comment to get.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -238,7 +260,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Comment> get(core.String commentId) {
+  async.Future<Comment> get(core.String commentId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -249,6 +271,9 @@
     if (commentId == null) {
       throw new core.ArgumentError("Parameter commentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'comments/' + commons.Escaper.ecapeVariable('$commentId');
 
@@ -281,6 +306,9 @@
   /// - "ascending" : Sort oldest comments first.
   /// - "descending" : Sort newest comments first.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommentFeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -289,7 +317,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CommentFeed> list(core.String activityId,
-      {core.int maxResults, core.String pageToken, core.String sortOrder}) {
+      {core.int maxResults,
+      core.String pageToken,
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -309,6 +340,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'activities/' +
         commons.Escaper.ecapeVariable('$activityId') +
@@ -338,6 +372,9 @@
   /// [userId] - The ID of the person to get the profile for. The special value
   /// "me" can be used to indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Person].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -345,7 +382,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Person> get(core.String userId) {
+  async.Future<Person> get(core.String userId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -356,6 +393,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'people/' + commons.Escaper.ecapeVariable('$userId');
 
@@ -397,6 +437,9 @@
   /// result sets. To get the next page of results, set this parameter to the
   /// value of "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PeopleFeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -405,7 +448,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PeopleFeed> list(core.String userId, core.String collection,
-      {core.int maxResults, core.String orderBy, core.String pageToken}) {
+      {core.int maxResults,
+      core.String orderBy,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -428,6 +474,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'people/' +
         commons.Escaper.ecapeVariable('$userId') +
@@ -464,6 +513,9 @@
   /// result sets. To get the next page of results, set this parameter to the
   /// value of "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PeopleFeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -473,7 +525,7 @@
   /// this method will complete with the same error.
   async.Future<PeopleFeed> listByActivity(
       core.String activityId, core.String collection,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -493,6 +545,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'activities/' +
         commons.Escaper.ecapeVariable('$activityId') +
@@ -528,6 +583,9 @@
   /// value of "nextPageToken" from the previous response. This token can be of
   /// any length.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PeopleFeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -536,7 +594,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PeopleFeed> search(core.String query,
-      {core.String language, core.int maxResults, core.String pageToken}) {
+      {core.String language,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -557,6 +618,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'people';
 
diff --git a/generated/googleapis/lib/plusdomains/v1.dart b/generated/googleapis/lib/plusdomains/v1.dart
index 43c2b56..dcc228e 100644
--- a/generated/googleapis/lib/plusdomains/v1.dart
+++ b/generated/googleapis/lib/plusdomains/v1.dart
@@ -91,6 +91,9 @@
   ///
   /// [activityId] - The ID of the activity to get.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Activity].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -98,7 +101,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Activity> get(core.String activityId) {
+  async.Future<Activity> get(core.String activityId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -109,6 +112,9 @@
     if (activityId == null) {
       throw new core.ArgumentError("Parameter activityId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'activities/' + commons.Escaper.ecapeVariable('$activityId');
 
@@ -134,6 +140,9 @@
   /// The response will include all possible attachments for a URL, including
   /// video, photos, and articles based on the content of the page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Activity].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -142,7 +151,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Activity> insert(Activity request, core.String userId,
-      {core.bool preview}) {
+      {core.bool preview, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -159,6 +168,9 @@
     if (preview != null) {
       _queryParams["preview"] = ["${preview}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'people/' + commons.Escaper.ecapeVariable('$userId') + '/activities';
 
@@ -193,6 +205,9 @@
   /// result sets. To get the next page of results, set this parameter to the
   /// value of "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ActivityFeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -201,7 +216,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ActivityFeed> list(core.String userId, core.String collection,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -221,6 +236,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'people/' +
         commons.Escaper.ecapeVariable('$userId') +
@@ -258,6 +276,9 @@
   /// result sets. To get the next page of results, set this parameter to the
   /// value of "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AudiencesFeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -266,7 +287,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AudiencesFeed> list(core.String userId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -283,6 +304,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'people/' + commons.Escaper.ecapeVariable('$userId') + '/audiences';
 
@@ -314,6 +338,9 @@
   /// [userId] - IDs of the people to add to the circle. Optional, can be
   /// repeated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Circle].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -322,7 +349,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Circle> addPeople(core.String circleId,
-      {core.List<core.String> email, core.List<core.String> userId}) {
+      {core.List<core.String> email,
+      core.List<core.String> userId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -339,6 +368,9 @@
     if (userId != null) {
       _queryParams["userId"] = userId;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'circles/' + commons.Escaper.ecapeVariable('$circleId') + '/people';
 
@@ -357,6 +389,9 @@
   ///
   /// [circleId] - The ID of the circle to get.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Circle].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -364,7 +399,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Circle> get(core.String circleId) {
+  async.Future<Circle> get(core.String circleId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -375,6 +410,9 @@
     if (circleId == null) {
       throw new core.ArgumentError("Parameter circleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'circles/' + commons.Escaper.ecapeVariable('$circleId');
 
@@ -396,6 +434,9 @@
   /// [userId] - The ID of the user to create the circle on behalf of. The value
   /// "me" can be used to indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Circle].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -403,7 +444,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Circle> insert(Circle request, core.String userId) {
+  async.Future<Circle> insert(Circle request, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -417,6 +459,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'people/' + commons.Escaper.ecapeVariable('$userId') + '/circles';
 
@@ -445,6 +490,9 @@
   /// result sets. To get the next page of results, set this parameter to the
   /// value of "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CircleFeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -453,7 +501,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CircleFeed> list(core.String userId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -470,6 +518,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'people/' + commons.Escaper.ecapeVariable('$userId') + '/circles';
 
@@ -490,6 +541,9 @@
   ///
   /// [circleId] - The ID of the circle to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Circle].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -497,7 +551,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Circle> patch(Circle request, core.String circleId) {
+  async.Future<Circle> patch(Circle request, core.String circleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -511,6 +566,9 @@
     if (circleId == null) {
       throw new core.ArgumentError("Parameter circleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'circles/' + commons.Escaper.ecapeVariable('$circleId');
 
@@ -529,12 +587,15 @@
   ///
   /// [circleId] - The ID of the circle to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future remove(core.String circleId) {
+  async.Future remove(core.String circleId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -545,6 +606,9 @@
     if (circleId == null) {
       throw new core.ArgumentError("Parameter circleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -571,13 +635,18 @@
   /// [userId] - IDs of the people to remove from the circle. Optional, can be
   /// repeated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future removePeople(core.String circleId,
-      {core.List<core.String> email, core.List<core.String> userId}) {
+      {core.List<core.String> email,
+      core.List<core.String> userId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -594,6 +663,9 @@
     if (userId != null) {
       _queryParams["userId"] = userId;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -616,6 +688,9 @@
   ///
   /// [circleId] - The ID of the circle to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Circle].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -623,7 +698,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Circle> update(Circle request, core.String circleId) {
+  async.Future<Circle> update(Circle request, core.String circleId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -637,6 +713,9 @@
     if (circleId == null) {
       throw new core.ArgumentError("Parameter circleId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'circles/' + commons.Escaper.ecapeVariable('$circleId');
 
@@ -661,6 +740,9 @@
   ///
   /// [commentId] - The ID of the comment to get.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -668,7 +750,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Comment> get(core.String commentId) {
+  async.Future<Comment> get(core.String commentId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -679,6 +761,9 @@
     if (commentId == null) {
       throw new core.ArgumentError("Parameter commentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'comments/' + commons.Escaper.ecapeVariable('$commentId');
 
@@ -699,6 +784,9 @@
   ///
   /// [activityId] - The ID of the activity to reply to.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -706,7 +794,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Comment> insert(Comment request, core.String activityId) {
+  async.Future<Comment> insert(Comment request, core.String activityId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -720,6 +809,9 @@
     if (activityId == null) {
       throw new core.ArgumentError("Parameter activityId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'activities/' +
         commons.Escaper.ecapeVariable('$activityId') +
@@ -754,6 +846,9 @@
   /// - "ascending" : Sort oldest comments first.
   /// - "descending" : Sort newest comments first.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommentFeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -762,7 +857,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CommentFeed> list(core.String activityId,
-      {core.int maxResults, core.String pageToken, core.String sortOrder}) {
+      {core.int maxResults,
+      core.String pageToken,
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -782,6 +880,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'activities/' +
         commons.Escaper.ecapeVariable('$activityId') +
@@ -817,6 +918,9 @@
   /// Possible string values are:
   /// - "cloud" : Upload the media to share on Google+.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -832,7 +936,8 @@
   /// this method will complete with the same error.
   async.Future<Media> insert(
       Media request, core.String userId, core.String collection,
-      {commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
+      {core.String $fields,
+      commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -850,6 +955,9 @@
     if (collection == null) {
       throw new core.ArgumentError("Parameter collection is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -893,6 +1001,9 @@
   /// [userId] - The ID of the person to get the profile for. The special value
   /// "me" can be used to indicate the authenticated user.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Person].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -900,7 +1011,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Person> get(core.String userId) {
+  async.Future<Person> get(core.String userId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -911,6 +1022,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'people/' + commons.Escaper.ecapeVariable('$userId');
 
@@ -949,6 +1063,9 @@
   /// result sets. To get the next page of results, set this parameter to the
   /// value of "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PeopleFeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -957,7 +1074,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PeopleFeed> list(core.String userId, core.String collection,
-      {core.int maxResults, core.String orderBy, core.String pageToken}) {
+      {core.int maxResults,
+      core.String orderBy,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -980,6 +1100,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'people/' +
         commons.Escaper.ecapeVariable('$userId') +
@@ -1017,6 +1140,9 @@
   /// result sets. To get the next page of results, set this parameter to the
   /// value of "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PeopleFeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1026,7 +1152,7 @@
   /// this method will complete with the same error.
   async.Future<PeopleFeed> listByActivity(
       core.String activityId, core.String collection,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1046,6 +1172,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'activities/' +
         commons.Escaper.ecapeVariable('$activityId') +
@@ -1076,6 +1205,9 @@
   /// result sets. To get the next page of results, set this parameter to the
   /// value of "nextPageToken" from the previous response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PeopleFeed].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1084,7 +1216,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PeopleFeed> listByCircle(core.String circleId,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1101,6 +1233,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'circles/' + commons.Escaper.ecapeVariable('$circleId') + '/people';
 
diff --git a/generated/googleapis/lib/prediction/v1_6.dart b/generated/googleapis/lib/prediction/v1_6.dart
index f085ee9..29c8316 100644
--- a/generated/googleapis/lib/prediction/v1_6.dart
+++ b/generated/googleapis/lib/prediction/v1_6.dart
@@ -65,6 +65,9 @@
   ///
   /// [hostedModelName] - The name of a hosted model.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Output].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -73,7 +76,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Output> predict(
-      Input request, core.String project, core.String hostedModelName) {
+      Input request, core.String project, core.String hostedModelName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -90,6 +94,9 @@
     if (hostedModelName == null) {
       throw new core.ArgumentError("Parameter hostedModelName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/hostedmodels/' +
@@ -119,6 +126,9 @@
   ///
   /// [id] - The unique name for the predictive model.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Analyze].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -126,7 +136,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Analyze> analyze(core.String project, core.String id) {
+  async.Future<Analyze> analyze(core.String project, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -140,6 +151,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/trainedmodels/' +
@@ -163,12 +177,16 @@
   ///
   /// [id] - The unique name for the predictive model.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String project, core.String id) {
+  async.Future delete(core.String project, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -182,6 +200,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -206,6 +227,9 @@
   ///
   /// [id] - The unique name for the predictive model.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Insert2].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -213,7 +237,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Insert2> get(core.String project, core.String id) {
+  async.Future<Insert2> get(core.String project, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -227,6 +252,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/trainedmodels/' +
@@ -249,6 +277,9 @@
   ///
   /// [project] - The project associated with the model.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Insert2].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -256,7 +287,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Insert2> insert(Insert request, core.String project) {
+  async.Future<Insert2> insert(Insert request, core.String project,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -270,6 +302,9 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/trainedmodels';
 
@@ -292,6 +327,9 @@
   ///
   /// [pageToken] - Pagination token.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [List].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -300,7 +338,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<List> list(core.String project,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -317,6 +355,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/trainedmodels/list';
 
@@ -339,6 +380,9 @@
   ///
   /// [id] - The unique name for the predictive model.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Output].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -347,7 +391,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Output> predict(
-      Input request, core.String project, core.String id) {
+      Input request, core.String project, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -364,6 +409,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/trainedmodels/' +
@@ -389,6 +437,9 @@
   ///
   /// [id] - The unique name for the predictive model.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Insert2].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -397,7 +448,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Insert2> update(
-      Update request, core.String project, core.String id) {
+      Update request, core.String project, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -414,6 +466,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/trainedmodels/' +
diff --git a/generated/googleapis/lib/pubsub/v1.dart b/generated/googleapis/lib/pubsub/v1.dart
index be17e81..d585fe8 100644
--- a/generated/googleapis/lib/pubsub/v1.dart
+++ b/generated/googleapis/lib/pubsub/v1.dart
@@ -65,6 +65,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/snapshots/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -72,7 +75,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Policy> getIamPolicy(core.String resource) {
+  async.Future<Policy> getIamPolicy(core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -83,6 +87,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -109,6 +116,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/snapshots/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -117,7 +127,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -131,6 +142,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -162,6 +176,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/snapshots/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -170,7 +187,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -184,6 +202,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -222,6 +243,9 @@
   /// Format is `projects/{project}/subscriptions/{sub}`.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -230,7 +254,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> acknowledge(
-      AcknowledgeRequest request, core.String subscription) {
+      AcknowledgeRequest request, core.String subscription,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -244,6 +269,9 @@
     if (subscription == null) {
       throw new core.ArgumentError("Parameter subscription is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$subscription') +
@@ -283,6 +311,9 @@
   /// in length, and it must not start with `"goog"`.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -290,7 +321,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Subscription> create(Subscription request, core.String name) {
+  async.Future<Subscription> create(Subscription request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -304,6 +336,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -330,6 +365,9 @@
   /// Format is `projects/{project}/subscriptions/{sub}`.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -337,7 +375,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String subscription) {
+  async.Future<Empty> delete(core.String subscription, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -348,6 +386,9 @@
     if (subscription == null) {
       throw new core.ArgumentError("Parameter subscription is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$subscription');
 
@@ -368,6 +409,9 @@
   /// Format is `projects/{project}/subscriptions/{sub}`.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -375,7 +419,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Subscription> get(core.String subscription) {
+  async.Future<Subscription> get(core.String subscription,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -386,6 +431,9 @@
     if (subscription == null) {
       throw new core.ArgumentError("Parameter subscription is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$subscription');
 
@@ -409,6 +457,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -416,7 +467,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Policy> getIamPolicy(core.String resource) {
+  async.Future<Policy> getIamPolicy(core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -427,6 +479,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -456,6 +511,9 @@
   ///
   /// [pageSize] - Maximum number of subscriptions to return.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListSubscriptionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -464,7 +522,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListSubscriptionsResponse> list(core.String project,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -481,6 +539,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$project') +
@@ -510,6 +571,9 @@
   /// Format is `projects/{project}/subscriptions/{sub}`.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -518,7 +582,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> modifyAckDeadline(
-      ModifyAckDeadlineRequest request, core.String subscription) {
+      ModifyAckDeadlineRequest request, core.String subscription,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -532,6 +597,9 @@
     if (subscription == null) {
       throw new core.ArgumentError("Parameter subscription is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$subscription') +
@@ -561,6 +629,9 @@
   /// Format is `projects/{project}/subscriptions/{sub}`.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -569,7 +640,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> modifyPushConfig(
-      ModifyPushConfigRequest request, core.String subscription) {
+      ModifyPushConfigRequest request, core.String subscription,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -583,6 +655,9 @@
     if (subscription == null) {
       throw new core.ArgumentError("Parameter subscription is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$subscription') +
@@ -610,6 +685,9 @@
   /// Format is `projects/{project}/subscriptions/{sub}`.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PullResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -617,8 +695,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PullResponse> pull(
-      PullRequest request, core.String subscription) {
+  async.Future<PullResponse> pull(PullRequest request, core.String subscription,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -632,6 +710,9 @@
     if (subscription == null) {
       throw new core.ArgumentError("Parameter subscription is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$subscription') +
@@ -658,6 +739,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -666,7 +750,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -680,6 +765,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -711,6 +799,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -719,7 +810,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -733,6 +825,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -771,6 +866,9 @@
   /// must not start with `"goog"`.
   /// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Topic].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -778,7 +876,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Topic> create(Topic request, core.String name) {
+  async.Future<Topic> create(Topic request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -792,6 +891,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -816,6 +918,9 @@
   /// Format is `projects/{project}/topics/{topic}`.
   /// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -823,7 +928,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String topic) {
+  async.Future<Empty> delete(core.String topic, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -834,6 +939,9 @@
     if (topic == null) {
       throw new core.ArgumentError("Parameter topic is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$topic');
 
@@ -854,6 +962,9 @@
   /// Format is `projects/{project}/topics/{topic}`.
   /// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Topic].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -861,7 +972,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Topic> get(core.String topic) {
+  async.Future<Topic> get(core.String topic, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -872,6 +983,9 @@
     if (topic == null) {
       throw new core.ArgumentError("Parameter topic is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$topic');
 
@@ -895,6 +1009,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -902,7 +1019,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Policy> getIamPolicy(core.String resource) {
+  async.Future<Policy> getIamPolicy(core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -913,6 +1031,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -935,12 +1056,15 @@
   /// Format is `projects/{project}`.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [pageSize] - Maximum number of topics to return.
+  ///
   /// [pageToken] - The value returned by the last `ListTopicsResponse`;
   /// indicates that this is
   /// a continuation of a prior `ListTopics` call, and that the system should
   /// return the next page of data.
   ///
-  /// [pageSize] - Maximum number of topics to return.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListTopicsResponse].
   ///
@@ -950,7 +1074,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListTopicsResponse> list(core.String project,
-      {core.String pageToken, core.int pageSize}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -961,11 +1085,14 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url =
@@ -992,6 +1119,9 @@
   /// Format is `projects/{project}/topics/{topic}`.
   /// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PublishResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1000,7 +1130,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PublishResponse> publish(
-      PublishRequest request, core.String topic) {
+      PublishRequest request, core.String topic,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1014,6 +1145,9 @@
     if (topic == null) {
       throw new core.ArgumentError("Parameter topic is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$topic') + ':publish';
 
@@ -1038,6 +1172,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1046,7 +1183,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1060,6 +1198,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1091,6 +1232,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1099,7 +1243,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1113,6 +1258,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1143,12 +1291,15 @@
   /// Format is `projects/{project}/topics/{topic}`.
   /// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
   ///
+  /// [pageSize] - Maximum number of subscription names to return.
+  ///
   /// [pageToken] - The value returned by the last
   /// `ListTopicSubscriptionsResponse`; indicates
   /// that this is a continuation of a prior `ListTopicSubscriptions` call, and
   /// that the system should return the next page of data.
   ///
-  /// [pageSize] - Maximum number of subscription names to return.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListTopicSubscriptionsResponse].
   ///
@@ -1158,7 +1309,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListTopicSubscriptionsResponse> list(core.String topic,
-      {core.String pageToken, core.int pageSize}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1169,11 +1320,14 @@
     if (topic == null) {
       throw new core.ArgumentError("Parameter topic is required.");
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/' +
diff --git a/generated/googleapis/lib/qpxexpress/v1.dart b/generated/googleapis/lib/qpxexpress/v1.dart
deleted file mode 100644
index c2e8418..0000000
--- a/generated/googleapis/lib/qpxexpress/v1.dart
+++ /dev/null
@@ -1,1769 +0,0 @@
-// This is a generated file (see the discoveryapis_generator project).
-
-library googleapis.qpxExpress.v1;
-
-import 'dart:core' as core;
-import 'dart:async' as async;
-import 'dart:convert' as convert;
-
-import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
-import 'package:http/http.dart' as http;
-
-export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
-    show ApiRequestError, DetailedApiRequestError;
-
-const core.String USER_AGENT = 'dart-api-client qpxExpress/v1';
-
-/// Finds the least expensive flights between an origin and a destination.
-class QpxExpressApi {
-  final commons.ApiRequester _requester;
-
-  TripsResourceApi get trips => new TripsResourceApi(_requester);
-
-  QpxExpressApi(http.Client client,
-      {core.String rootUrl: "https://www.googleapis.com/",
-      core.String servicePath: "qpxExpress/v1/trips/"})
-      : _requester =
-            new commons.ApiRequester(client, rootUrl, servicePath, USER_AGENT);
-}
-
-class TripsResourceApi {
-  final commons.ApiRequester _requester;
-
-  TripsResourceApi(commons.ApiRequester client) : _requester = client;
-
-  /// Returns a list of flights.
-  ///
-  /// [request] - The metadata request object.
-  ///
-  /// Request parameters:
-  ///
-  /// Completes with a [TripsSearchResponse].
-  ///
-  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
-  /// error.
-  ///
-  /// If the used [http.Client] completes with an error when making a REST call,
-  /// this method will complete with the same error.
-  async.Future<TripsSearchResponse> search(TripsSearchRequest request) {
-    var _url = null;
-    var _queryParams = new core.Map();
-    var _uploadMedia = null;
-    var _uploadOptions = null;
-    var _downloadOptions = commons.DownloadOptions.Metadata;
-    var _body = null;
-
-    if (request != null) {
-      _body = convert.JSON.encode((request).toJson());
-    }
-
-    _url = 'search';
-
-    var _response = _requester.request(_url, "POST",
-        body: _body,
-        queryParams: _queryParams,
-        uploadOptions: _uploadOptions,
-        uploadMedia: _uploadMedia,
-        downloadOptions: _downloadOptions);
-    return _response.then((data) => new TripsSearchResponse.fromJson(data));
-  }
-}
-
-/// The make, model, and type of an aircraft.
-class AircraftData {
-  /// The aircraft code. For example, for a Boeing 777 the code would be 777.
-  core.String code;
-
-  /// Identifies this as an aircraftData object. Value: the fixed string
-  /// qpxexpress#aircraftData
-  core.String kind;
-
-  /// The name of an aircraft, for example Boeing 777.
-  core.String name;
-
-  AircraftData();
-
-  AircraftData.fromJson(core.Map _json) {
-    if (_json.containsKey("code")) {
-      code = _json["code"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("name")) {
-      name = _json["name"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (code != null) {
-      _json["code"] = code;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (name != null) {
-      _json["name"] = name;
-    }
-    return _json;
-  }
-}
-
-/// An airport.
-class AirportData {
-  /// The city code an airport is located in. For example, for JFK airport, this
-  /// is NYC.
-  core.String city;
-
-  /// An airport's code. For example, for Boston Logan airport, this is BOS.
-  core.String code;
-
-  /// Identifies this as an airport object. Value: the fixed string
-  /// qpxexpress#airportData.
-  core.String kind;
-
-  /// The name of an airport. For example, for airport BOS the name is "Boston
-  /// Logan International".
-  core.String name;
-
-  AirportData();
-
-  AirportData.fromJson(core.Map _json) {
-    if (_json.containsKey("city")) {
-      city = _json["city"];
-    }
-    if (_json.containsKey("code")) {
-      code = _json["code"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("name")) {
-      name = _json["name"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (city != null) {
-      _json["city"] = city;
-    }
-    if (code != null) {
-      _json["code"] = code;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (name != null) {
-      _json["name"] = name;
-    }
-    return _json;
-  }
-}
-
-/// Information about an item of baggage.
-class BagDescriptor {
-  /// Provides the commercial name for an optional service.
-  core.String commercialName;
-
-  /// How many of this type of bag will be checked on this flight.
-  core.int count;
-
-  /// A description of the baggage.
-  core.List<core.String> description;
-
-  /// Identifies this as a baggage object. Value: the fixed string
-  /// qpxexpress#bagDescriptor.
-  core.String kind;
-
-  /// The standard IATA subcode used to identify this optional service.
-  core.String subcode;
-
-  BagDescriptor();
-
-  BagDescriptor.fromJson(core.Map _json) {
-    if (_json.containsKey("commercialName")) {
-      commercialName = _json["commercialName"];
-    }
-    if (_json.containsKey("count")) {
-      count = _json["count"];
-    }
-    if (_json.containsKey("description")) {
-      description = _json["description"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("subcode")) {
-      subcode = _json["subcode"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (commercialName != null) {
-      _json["commercialName"] = commercialName;
-    }
-    if (count != null) {
-      _json["count"] = count;
-    }
-    if (description != null) {
-      _json["description"] = description;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (subcode != null) {
-      _json["subcode"] = subcode;
-    }
-    return _json;
-  }
-}
-
-/// Information about a carrier (ie. an airline, bus line, railroad, etc) that
-/// might be useful to display to an end-user.
-class CarrierData {
-  /// The IATA designator of a carrier (airline, etc). For example, for American
-  /// Airlines, the code is AA.
-  core.String code;
-
-  /// Identifies this as a kind of carrier (ie. an airline, bus line, railroad,
-  /// etc). Value: the fixed string qpxexpress#carrierData.
-  core.String kind;
-
-  /// The long, full name of a carrier. For example: American Airlines.
-  core.String name;
-
-  CarrierData();
-
-  CarrierData.fromJson(core.Map _json) {
-    if (_json.containsKey("code")) {
-      code = _json["code"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("name")) {
-      name = _json["name"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (code != null) {
-      _json["code"] = code;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (name != null) {
-      _json["name"] = name;
-    }
-    return _json;
-  }
-}
-
-/// Information about a city that might be useful to an end-user; typically the
-/// city of an airport.
-class CityData {
-  /// The IATA character ID of a city. For example, for Boston this is BOS.
-  core.String code;
-
-  /// The two-character country code of the country the city is located in. For
-  /// example, US for the United States of America.
-  core.String country;
-
-  /// Identifies this as a city, typically with one or more airports. Value: the
-  /// fixed string qpxexpress#cityData.
-  core.String kind;
-
-  /// The full name of a city. An example would be: New York.
-  core.String name;
-
-  CityData();
-
-  CityData.fromJson(core.Map _json) {
-    if (_json.containsKey("code")) {
-      code = _json["code"];
-    }
-    if (_json.containsKey("country")) {
-      country = _json["country"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("name")) {
-      name = _json["name"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (code != null) {
-      _json["code"] = code;
-    }
-    if (country != null) {
-      _json["country"] = country;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (name != null) {
-      _json["name"] = name;
-    }
-    return _json;
-  }
-}
-
-/// Detailed information about components found in the solutions of this
-/// response, including a trip's airport, city, taxes, airline, and aircraft.
-class Data {
-  /// The aircraft that is flying between an origin and destination.
-  core.List<AircraftData> aircraft;
-
-  /// The airport of an origin or destination.
-  core.List<AirportData> airport;
-
-  /// The airline carrier of the aircraft flying between an origin and
-  /// destination. Allowed values are IATA carrier codes.
-  core.List<CarrierData> carrier;
-
-  /// The city that is either the origin or destination of part of a trip.
-  core.List<CityData> city;
-
-  /// Identifies this as QPX Express response resource, including a trip's
-  /// airport, city, taxes, airline, and aircraft. Value: the fixed string
-  /// qpxexpress#data.
-  core.String kind;
-
-  /// The taxes due for flying between an origin and a destination.
-  core.List<TaxData> tax;
-
-  Data();
-
-  Data.fromJson(core.Map _json) {
-    if (_json.containsKey("aircraft")) {
-      aircraft = _json["aircraft"]
-          .map((value) => new AircraftData.fromJson(value))
-          .toList();
-    }
-    if (_json.containsKey("airport")) {
-      airport = _json["airport"]
-          .map((value) => new AirportData.fromJson(value))
-          .toList();
-    }
-    if (_json.containsKey("carrier")) {
-      carrier = _json["carrier"]
-          .map((value) => new CarrierData.fromJson(value))
-          .toList();
-    }
-    if (_json.containsKey("city")) {
-      city =
-          _json["city"].map((value) => new CityData.fromJson(value)).toList();
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("tax")) {
-      tax = _json["tax"].map((value) => new TaxData.fromJson(value)).toList();
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (aircraft != null) {
-      _json["aircraft"] = aircraft.map((value) => (value).toJson()).toList();
-    }
-    if (airport != null) {
-      _json["airport"] = airport.map((value) => (value).toJson()).toList();
-    }
-    if (carrier != null) {
-      _json["carrier"] = carrier.map((value) => (value).toJson()).toList();
-    }
-    if (city != null) {
-      _json["city"] = city.map((value) => (value).toJson()).toList();
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (tax != null) {
-      _json["tax"] = tax.map((value) => (value).toJson()).toList();
-    }
-    return _json;
-  }
-}
-
-/// Complete information about a fare used in the solution to a low-fare search
-/// query. In the airline industry a fare is a price an airline charges for
-/// one-way travel between two points. A fare typically contains a carrier code,
-/// two city codes, a price, and a fare basis. (A fare basis is a one-to-eight
-/// character alphanumeric code used to identify a fare.)
-class FareInfo {
-  core.String basisCode;
-
-  /// The carrier of the aircraft or other vehicle commuting between two points.
-  core.String carrier;
-
-  /// The city code of the city the trip ends at.
-  core.String destination;
-
-  /// A unique identifier of the fare.
-  core.String id;
-
-  /// Identifies this as a fare object. Value: the fixed string
-  /// qpxexpress#fareInfo.
-  core.String kind;
-
-  /// The city code of the city the trip begins at.
-  core.String origin;
-
-  /// Whether this is a private fare, for example one offered only to select
-  /// customers rather than the general public.
-  core.bool private;
-
-  FareInfo();
-
-  FareInfo.fromJson(core.Map _json) {
-    if (_json.containsKey("basisCode")) {
-      basisCode = _json["basisCode"];
-    }
-    if (_json.containsKey("carrier")) {
-      carrier = _json["carrier"];
-    }
-    if (_json.containsKey("destination")) {
-      destination = _json["destination"];
-    }
-    if (_json.containsKey("id")) {
-      id = _json["id"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("origin")) {
-      origin = _json["origin"];
-    }
-    if (_json.containsKey("private")) {
-      private = _json["private"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (basisCode != null) {
-      _json["basisCode"] = basisCode;
-    }
-    if (carrier != null) {
-      _json["carrier"] = carrier;
-    }
-    if (destination != null) {
-      _json["destination"] = destination;
-    }
-    if (id != null) {
-      _json["id"] = id;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (origin != null) {
-      _json["origin"] = origin;
-    }
-    if (private != null) {
-      _json["private"] = private;
-    }
-    return _json;
-  }
-}
-
-/// A flight is a sequence of legs with the same airline carrier and flight
-/// number. (A leg is the smallest unit of travel, in the case of a flight a
-/// takeoff immediately followed by a landing at two set points on a particular
-/// carrier with a particular flight number.) The naive view is that a flight is
-/// scheduled travel of an aircraft between two points, with possibly
-/// intermediate stops, but carriers will frequently list flights that require a
-/// change of aircraft between legs.
-class FlightInfo {
-  core.String carrier;
-
-  /// The flight number.
-  core.String number;
-
-  FlightInfo();
-
-  FlightInfo.fromJson(core.Map _json) {
-    if (_json.containsKey("carrier")) {
-      carrier = _json["carrier"];
-    }
-    if (_json.containsKey("number")) {
-      number = _json["number"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (carrier != null) {
-      _json["carrier"] = carrier;
-    }
-    if (number != null) {
-      _json["number"] = number;
-    }
-    return _json;
-  }
-}
-
-/// Information about free baggage allowed on one segment of a trip.
-class FreeBaggageAllowance {
-  /// A representation of a type of bag, such as an ATPCo subcode, Commercial
-  /// Name, or other description.
-  core.List<BagDescriptor> bagDescriptor;
-
-  /// The maximum number of kilos all the free baggage together may weigh.
-  core.int kilos;
-
-  /// The maximum number of kilos any one piece of baggage may weigh.
-  core.int kilosPerPiece;
-
-  /// Identifies this as free baggage object, allowed on one segment of a trip.
-  /// Value: the fixed string qpxexpress#freeBaggageAllowance.
-  core.String kind;
-
-  /// The number of free pieces of baggage allowed.
-  core.int pieces;
-
-  /// The number of pounds of free baggage allowed.
-  core.int pounds;
-
-  FreeBaggageAllowance();
-
-  FreeBaggageAllowance.fromJson(core.Map _json) {
-    if (_json.containsKey("bagDescriptor")) {
-      bagDescriptor = _json["bagDescriptor"]
-          .map((value) => new BagDescriptor.fromJson(value))
-          .toList();
-    }
-    if (_json.containsKey("kilos")) {
-      kilos = _json["kilos"];
-    }
-    if (_json.containsKey("kilosPerPiece")) {
-      kilosPerPiece = _json["kilosPerPiece"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("pieces")) {
-      pieces = _json["pieces"];
-    }
-    if (_json.containsKey("pounds")) {
-      pounds = _json["pounds"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (bagDescriptor != null) {
-      _json["bagDescriptor"] =
-          bagDescriptor.map((value) => (value).toJson()).toList();
-    }
-    if (kilos != null) {
-      _json["kilos"] = kilos;
-    }
-    if (kilosPerPiece != null) {
-      _json["kilosPerPiece"] = kilosPerPiece;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (pieces != null) {
-      _json["pieces"] = pieces;
-    }
-    if (pounds != null) {
-      _json["pounds"] = pounds;
-    }
-    return _json;
-  }
-}
-
-/// Information about a leg. (A leg is the smallest unit of travel, in the case
-/// of a flight a takeoff immediately followed by a landing at two set points on
-/// a particular carrier with a particular flight number.)
-class LegInfo {
-  /// The aircraft (or bus, ferry, railcar, etc) travelling between the two
-  /// points of this leg.
-  core.String aircraft;
-
-  /// The scheduled time of arrival at the destination of the leg, local to the
-  /// point of arrival.
-  core.String arrivalTime;
-
-  /// Whether you have to change planes following this leg. Only applies to the
-  /// next leg.
-  core.bool changePlane;
-
-  /// Duration of a connection following this leg, in minutes.
-  core.int connectionDuration;
-
-  /// The scheduled departure time of the leg, local to the point of departure.
-  core.String departureTime;
-
-  /// The leg destination as a city and airport.
-  core.String destination;
-
-  /// The terminal the flight is scheduled to arrive at.
-  core.String destinationTerminal;
-
-  /// The scheduled travelling time from the origin to the destination.
-  core.int duration;
-
-  /// An identifier that uniquely identifies this leg in the solution.
-  core.String id;
-
-  /// Identifies this as a leg object. A leg is the smallest unit of travel, in
-  /// the case of a flight a takeoff immediately followed by a landing at two
-  /// set points on a particular carrier with a particular flight number. Value:
-  /// the fixed string qpxexpress#legInfo.
-  core.String kind;
-
-  /// A simple, general description of the meal(s) served on the flight, for
-  /// example: "Hot meal".
-  core.String meal;
-
-  /// The number of miles in this leg.
-  core.int mileage;
-
-  /// In percent, the published on time performance on this leg.
-  core.int onTimePerformance;
-
-  /// Department of Transportation disclosure information on the actual operator
-  /// of a flight in a code share. (A code share refers to a marketing agreement
-  /// between two carriers, where one carrier will list in its schedules (and
-  /// take bookings for) flights that are actually operated by another carrier.)
-  core.String operatingDisclosure;
-
-  /// The leg origin as a city and airport.
-  core.String origin;
-
-  /// The terminal the flight is scheduled to depart from.
-  core.String originTerminal;
-
-  /// Whether passenger information must be furnished to the United States
-  /// Transportation Security Administration (TSA) prior to departure.
-  core.bool secure;
-
-  LegInfo();
-
-  LegInfo.fromJson(core.Map _json) {
-    if (_json.containsKey("aircraft")) {
-      aircraft = _json["aircraft"];
-    }
-    if (_json.containsKey("arrivalTime")) {
-      arrivalTime = _json["arrivalTime"];
-    }
-    if (_json.containsKey("changePlane")) {
-      changePlane = _json["changePlane"];
-    }
-    if (_json.containsKey("connectionDuration")) {
-      connectionDuration = _json["connectionDuration"];
-    }
-    if (_json.containsKey("departureTime")) {
-      departureTime = _json["departureTime"];
-    }
-    if (_json.containsKey("destination")) {
-      destination = _json["destination"];
-    }
-    if (_json.containsKey("destinationTerminal")) {
-      destinationTerminal = _json["destinationTerminal"];
-    }
-    if (_json.containsKey("duration")) {
-      duration = _json["duration"];
-    }
-    if (_json.containsKey("id")) {
-      id = _json["id"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("meal")) {
-      meal = _json["meal"];
-    }
-    if (_json.containsKey("mileage")) {
-      mileage = _json["mileage"];
-    }
-    if (_json.containsKey("onTimePerformance")) {
-      onTimePerformance = _json["onTimePerformance"];
-    }
-    if (_json.containsKey("operatingDisclosure")) {
-      operatingDisclosure = _json["operatingDisclosure"];
-    }
-    if (_json.containsKey("origin")) {
-      origin = _json["origin"];
-    }
-    if (_json.containsKey("originTerminal")) {
-      originTerminal = _json["originTerminal"];
-    }
-    if (_json.containsKey("secure")) {
-      secure = _json["secure"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (aircraft != null) {
-      _json["aircraft"] = aircraft;
-    }
-    if (arrivalTime != null) {
-      _json["arrivalTime"] = arrivalTime;
-    }
-    if (changePlane != null) {
-      _json["changePlane"] = changePlane;
-    }
-    if (connectionDuration != null) {
-      _json["connectionDuration"] = connectionDuration;
-    }
-    if (departureTime != null) {
-      _json["departureTime"] = departureTime;
-    }
-    if (destination != null) {
-      _json["destination"] = destination;
-    }
-    if (destinationTerminal != null) {
-      _json["destinationTerminal"] = destinationTerminal;
-    }
-    if (duration != null) {
-      _json["duration"] = duration;
-    }
-    if (id != null) {
-      _json["id"] = id;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (meal != null) {
-      _json["meal"] = meal;
-    }
-    if (mileage != null) {
-      _json["mileage"] = mileage;
-    }
-    if (onTimePerformance != null) {
-      _json["onTimePerformance"] = onTimePerformance;
-    }
-    if (operatingDisclosure != null) {
-      _json["operatingDisclosure"] = operatingDisclosure;
-    }
-    if (origin != null) {
-      _json["origin"] = origin;
-    }
-    if (originTerminal != null) {
-      _json["originTerminal"] = originTerminal;
-    }
-    if (secure != null) {
-      _json["secure"] = secure;
-    }
-    return _json;
-  }
-}
-
-/// The number and type of passengers. Unfortunately the definition of an
-/// infant, child, adult, and senior citizen varies across carriers and
-/// reservation systems.
-class PassengerCounts {
-  /// The number of passengers that are adults.
-  core.int adultCount;
-
-  /// The number of passengers that are children.
-  core.int childCount;
-
-  /// The number of passengers that are infants travelling in the lap of an
-  /// adult.
-  core.int infantInLapCount;
-
-  /// The number of passengers that are infants each assigned a seat.
-  core.int infantInSeatCount;
-
-  /// Identifies this as a passenger count object, representing the number of
-  /// passengers. Value: the fixed string qpxexpress#passengerCounts.
-  core.String kind;
-
-  /// The number of passengers that are senior citizens.
-  core.int seniorCount;
-
-  PassengerCounts();
-
-  PassengerCounts.fromJson(core.Map _json) {
-    if (_json.containsKey("adultCount")) {
-      adultCount = _json["adultCount"];
-    }
-    if (_json.containsKey("childCount")) {
-      childCount = _json["childCount"];
-    }
-    if (_json.containsKey("infantInLapCount")) {
-      infantInLapCount = _json["infantInLapCount"];
-    }
-    if (_json.containsKey("infantInSeatCount")) {
-      infantInSeatCount = _json["infantInSeatCount"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("seniorCount")) {
-      seniorCount = _json["seniorCount"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (adultCount != null) {
-      _json["adultCount"] = adultCount;
-    }
-    if (childCount != null) {
-      _json["childCount"] = childCount;
-    }
-    if (infantInLapCount != null) {
-      _json["infantInLapCount"] = infantInLapCount;
-    }
-    if (infantInSeatCount != null) {
-      _json["infantInSeatCount"] = infantInSeatCount;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (seniorCount != null) {
-      _json["seniorCount"] = seniorCount;
-    }
-    return _json;
-  }
-}
-
-/// The price of one or more travel segments. The currency used to purchase
-/// tickets is usually determined by the sale/ticketing city or the
-/// sale/ticketing country, unless none are specified, in which case it defaults
-/// to that of the journey origin country.
-class PricingInfo {
-  /// The total fare in the base fare currency (the currency of the country of
-  /// origin). This element is only present when the sales currency and the
-  /// currency of the country of commencement are different.
-  core.String baseFareTotal;
-
-  /// The fare used to price one or more segments.
-  core.List<FareInfo> fare;
-
-  /// The horizontal fare calculation. This is a field on a ticket that displays
-  /// all of the relevant items that go into the calculation of the fare.
-  core.String fareCalculation;
-
-  /// Identifies this as a pricing object, representing the price of one or more
-  /// travel segments. Value: the fixed string qpxexpress#pricingInfo.
-  core.String kind;
-
-  /// The latest ticketing time for this pricing assuming the reservation occurs
-  /// at ticketing time and there is no change in fares/rules. The time is local
-  /// to the point of sale (POS).
-  core.String latestTicketingTime;
-
-  /// The number of passengers to which this price applies.
-  PassengerCounts passengers;
-
-  /// The passenger type code for this pricing. An alphanumeric code used by a
-  /// carrier to restrict fares to certain categories of passenger. For
-  /// instance, a fare might be valid only for senior citizens.
-  core.String ptc;
-
-  /// Whether the fares on this pricing are refundable.
-  core.bool refundable;
-
-  /// The total fare in the sale or equivalent currency.
-  core.String saleFareTotal;
-
-  /// The taxes in the sale or equivalent currency.
-  core.String saleTaxTotal;
-
-  /// Total per-passenger price (fare and tax) in the sale or equivalent
-  /// currency.
-  core.String saleTotal;
-
-  /// The per-segment price and baggage information.
-  core.List<SegmentPricing> segmentPricing;
-
-  /// The taxes used to calculate the tax total per ticket.
-  core.List<TaxInfo> tax;
-
-  PricingInfo();
-
-  PricingInfo.fromJson(core.Map _json) {
-    if (_json.containsKey("baseFareTotal")) {
-      baseFareTotal = _json["baseFareTotal"];
-    }
-    if (_json.containsKey("fare")) {
-      fare =
-          _json["fare"].map((value) => new FareInfo.fromJson(value)).toList();
-    }
-    if (_json.containsKey("fareCalculation")) {
-      fareCalculation = _json["fareCalculation"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("latestTicketingTime")) {
-      latestTicketingTime = _json["latestTicketingTime"];
-    }
-    if (_json.containsKey("passengers")) {
-      passengers = new PassengerCounts.fromJson(_json["passengers"]);
-    }
-    if (_json.containsKey("ptc")) {
-      ptc = _json["ptc"];
-    }
-    if (_json.containsKey("refundable")) {
-      refundable = _json["refundable"];
-    }
-    if (_json.containsKey("saleFareTotal")) {
-      saleFareTotal = _json["saleFareTotal"];
-    }
-    if (_json.containsKey("saleTaxTotal")) {
-      saleTaxTotal = _json["saleTaxTotal"];
-    }
-    if (_json.containsKey("saleTotal")) {
-      saleTotal = _json["saleTotal"];
-    }
-    if (_json.containsKey("segmentPricing")) {
-      segmentPricing = _json["segmentPricing"]
-          .map((value) => new SegmentPricing.fromJson(value))
-          .toList();
-    }
-    if (_json.containsKey("tax")) {
-      tax = _json["tax"].map((value) => new TaxInfo.fromJson(value)).toList();
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (baseFareTotal != null) {
-      _json["baseFareTotal"] = baseFareTotal;
-    }
-    if (fare != null) {
-      _json["fare"] = fare.map((value) => (value).toJson()).toList();
-    }
-    if (fareCalculation != null) {
-      _json["fareCalculation"] = fareCalculation;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (latestTicketingTime != null) {
-      _json["latestTicketingTime"] = latestTicketingTime;
-    }
-    if (passengers != null) {
-      _json["passengers"] = (passengers).toJson();
-    }
-    if (ptc != null) {
-      _json["ptc"] = ptc;
-    }
-    if (refundable != null) {
-      _json["refundable"] = refundable;
-    }
-    if (saleFareTotal != null) {
-      _json["saleFareTotal"] = saleFareTotal;
-    }
-    if (saleTaxTotal != null) {
-      _json["saleTaxTotal"] = saleTaxTotal;
-    }
-    if (saleTotal != null) {
-      _json["saleTotal"] = saleTotal;
-    }
-    if (segmentPricing != null) {
-      _json["segmentPricing"] =
-          segmentPricing.map((value) => (value).toJson()).toList();
-    }
-    if (tax != null) {
-      _json["tax"] = tax.map((value) => (value).toJson()).toList();
-    }
-    return _json;
-  }
-}
-
-/// Details of a segment of a flight; a segment is one or more consecutive legs
-/// on the same flight. For example a hypothetical flight ZZ001, from DFW to
-/// OGG, would have one segment with two legs: DFW to HNL (leg 1), HNL to OGG
-/// (leg 2), and DFW to OGG (legs 1 and 2).
-class SegmentInfo {
-  /// The booking code or class for this segment.
-  core.String bookingCode;
-
-  /// The number of seats available in this booking code on this segment.
-  core.int bookingCodeCount;
-
-  /// The cabin booked for this segment.
-  core.String cabin;
-
-  /// In minutes, the duration of the connection following this segment.
-  core.int connectionDuration;
-
-  /// The duration of the flight segment in minutes.
-  core.int duration;
-
-  /// The flight this is a segment of.
-  FlightInfo flight;
-
-  /// An id uniquely identifying the segment in the solution.
-  core.String id;
-
-  /// Identifies this as a segment object. A segment is one or more consecutive
-  /// legs on the same flight. For example a hypothetical flight ZZ001, from DFW
-  /// to OGG, could have one segment with two legs: DFW to HNL (leg 1), HNL to
-  /// OGG (leg 2). Value: the fixed string qpxexpress#segmentInfo.
-  core.String kind;
-
-  /// The legs composing this segment.
-  core.List<LegInfo> leg;
-
-  /// The solution-based index of a segment in a married segment group. Married
-  /// segments can only be booked together. For example, an airline might report
-  /// a certain booking code as sold out from Boston to Pittsburgh, but as
-  /// available as part of two married segments Boston to Chicago connecting
-  /// through Pittsburgh. For example content of this field, consider the
-  /// round-trip flight ZZ1 PHX-PHL ZZ2 PHL-CLT ZZ3 CLT-PHX. This has three
-  /// segments, with the two outbound ones (ZZ1 ZZ2) married. In this case, the
-  /// two outbound segments belong to married segment group 0, and the return
-  /// segment belongs to married segment group 1.
-  core.String marriedSegmentGroup;
-
-  /// Whether the operation of this segment remains subject to government
-  /// approval.
-  core.bool subjectToGovernmentApproval;
-
-  SegmentInfo();
-
-  SegmentInfo.fromJson(core.Map _json) {
-    if (_json.containsKey("bookingCode")) {
-      bookingCode = _json["bookingCode"];
-    }
-    if (_json.containsKey("bookingCodeCount")) {
-      bookingCodeCount = _json["bookingCodeCount"];
-    }
-    if (_json.containsKey("cabin")) {
-      cabin = _json["cabin"];
-    }
-    if (_json.containsKey("connectionDuration")) {
-      connectionDuration = _json["connectionDuration"];
-    }
-    if (_json.containsKey("duration")) {
-      duration = _json["duration"];
-    }
-    if (_json.containsKey("flight")) {
-      flight = new FlightInfo.fromJson(_json["flight"]);
-    }
-    if (_json.containsKey("id")) {
-      id = _json["id"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("leg")) {
-      leg = _json["leg"].map((value) => new LegInfo.fromJson(value)).toList();
-    }
-    if (_json.containsKey("marriedSegmentGroup")) {
-      marriedSegmentGroup = _json["marriedSegmentGroup"];
-    }
-    if (_json.containsKey("subjectToGovernmentApproval")) {
-      subjectToGovernmentApproval = _json["subjectToGovernmentApproval"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (bookingCode != null) {
-      _json["bookingCode"] = bookingCode;
-    }
-    if (bookingCodeCount != null) {
-      _json["bookingCodeCount"] = bookingCodeCount;
-    }
-    if (cabin != null) {
-      _json["cabin"] = cabin;
-    }
-    if (connectionDuration != null) {
-      _json["connectionDuration"] = connectionDuration;
-    }
-    if (duration != null) {
-      _json["duration"] = duration;
-    }
-    if (flight != null) {
-      _json["flight"] = (flight).toJson();
-    }
-    if (id != null) {
-      _json["id"] = id;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (leg != null) {
-      _json["leg"] = leg.map((value) => (value).toJson()).toList();
-    }
-    if (marriedSegmentGroup != null) {
-      _json["marriedSegmentGroup"] = marriedSegmentGroup;
-    }
-    if (subjectToGovernmentApproval != null) {
-      _json["subjectToGovernmentApproval"] = subjectToGovernmentApproval;
-    }
-    return _json;
-  }
-}
-
-/// The price of this segment.
-class SegmentPricing {
-  /// A segment identifier unique within a single solution. It is used to refer
-  /// to different parts of the same solution.
-  core.String fareId;
-
-  /// Details of the free baggage allowance on this segment.
-  core.List<FreeBaggageAllowance> freeBaggageOption;
-
-  /// Identifies this as a segment pricing object, representing the price of
-  /// this segment. Value: the fixed string qpxexpress#segmentPricing.
-  core.String kind;
-
-  /// Unique identifier in the response of this segment.
-  core.String segmentId;
-
-  SegmentPricing();
-
-  SegmentPricing.fromJson(core.Map _json) {
-    if (_json.containsKey("fareId")) {
-      fareId = _json["fareId"];
-    }
-    if (_json.containsKey("freeBaggageOption")) {
-      freeBaggageOption = _json["freeBaggageOption"]
-          .map((value) => new FreeBaggageAllowance.fromJson(value))
-          .toList();
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("segmentId")) {
-      segmentId = _json["segmentId"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (fareId != null) {
-      _json["fareId"] = fareId;
-    }
-    if (freeBaggageOption != null) {
-      _json["freeBaggageOption"] =
-          freeBaggageOption.map((value) => (value).toJson()).toList();
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (segmentId != null) {
-      _json["segmentId"] = segmentId;
-    }
-    return _json;
-  }
-}
-
-/// Information about a slice. A slice represents a traveller's intent, the
-/// portion of a low-fare search corresponding to a traveler's request to get
-/// between two points. One-way journeys are generally expressed using 1 slice,
-/// round-trips using 2. For example, if a traveler specifies the following trip
-/// in a user interface:
-/// | Origin | Destination | Departure Date | | BOS | LAX | March 10, 2007 | |
-/// LAX | SYD | March 17, 2007 | | SYD | BOS | March 22, 2007 |
-/// then this is a three slice trip.
-class SliceInfo {
-  /// The duration of the slice in minutes.
-  core.int duration;
-
-  /// Identifies this as a slice object. A slice represents a traveller's
-  /// intent, the portion of a low-fare search corresponding to a traveler's
-  /// request to get between two points. One-way journeys are generally
-  /// expressed using 1 slice, round-trips using 2. Value: the fixed string
-  /// qpxexpress#sliceInfo.
-  core.String kind;
-
-  /// The segment(s) constituting the slice.
-  core.List<SegmentInfo> segment;
-
-  SliceInfo();
-
-  SliceInfo.fromJson(core.Map _json) {
-    if (_json.containsKey("duration")) {
-      duration = _json["duration"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("segment")) {
-      segment = _json["segment"]
-          .map((value) => new SegmentInfo.fromJson(value))
-          .toList();
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (duration != null) {
-      _json["duration"] = duration;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (segment != null) {
-      _json["segment"] = segment.map((value) => (value).toJson()).toList();
-    }
-    return _json;
-  }
-}
-
-/// Criteria a desired slice must satisfy.
-class SliceInput {
-  /// Slices with only the carriers in this alliance should be returned; do not
-  /// use this field with permittedCarrier. Allowed values are ONEWORLD,
-  /// SKYTEAM, and STAR.
-  core.String alliance;
-
-  /// Departure date in YYYY-MM-DD format.
-  core.String date;
-
-  /// Airport or city IATA designator of the destination.
-  core.String destination;
-
-  /// Identifies this as a slice input object, representing the criteria a
-  /// desired slice must satisfy. Value: the fixed string qpxexpress#sliceInput.
-  core.String kind;
-
-  /// The longest connection between two legs, in minutes, you are willing to
-  /// accept.
-  core.int maxConnectionDuration;
-
-  /// The maximum number of stops you are willing to accept in this slice.
-  core.int maxStops;
-
-  /// Airport or city IATA designator of the origin.
-  core.String origin;
-
-  /// A list of 2-letter IATA airline designators. Slices with only these
-  /// carriers should be returned.
-  core.List<core.String> permittedCarrier;
-
-  /// Slices must depart in this time of day range, local to the point of
-  /// departure.
-  TimeOfDayRange permittedDepartureTime;
-
-  /// Prefer solutions that book in this cabin for this slice. Allowed values
-  /// are COACH, PREMIUM_COACH, BUSINESS, and FIRST.
-  core.String preferredCabin;
-
-  /// A list of 2-letter IATA airline designators. Exclude slices that use these
-  /// carriers.
-  core.List<core.String> prohibitedCarrier;
-
-  SliceInput();
-
-  SliceInput.fromJson(core.Map _json) {
-    if (_json.containsKey("alliance")) {
-      alliance = _json["alliance"];
-    }
-    if (_json.containsKey("date")) {
-      date = _json["date"];
-    }
-    if (_json.containsKey("destination")) {
-      destination = _json["destination"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("maxConnectionDuration")) {
-      maxConnectionDuration = _json["maxConnectionDuration"];
-    }
-    if (_json.containsKey("maxStops")) {
-      maxStops = _json["maxStops"];
-    }
-    if (_json.containsKey("origin")) {
-      origin = _json["origin"];
-    }
-    if (_json.containsKey("permittedCarrier")) {
-      permittedCarrier = _json["permittedCarrier"];
-    }
-    if (_json.containsKey("permittedDepartureTime")) {
-      permittedDepartureTime =
-          new TimeOfDayRange.fromJson(_json["permittedDepartureTime"]);
-    }
-    if (_json.containsKey("preferredCabin")) {
-      preferredCabin = _json["preferredCabin"];
-    }
-    if (_json.containsKey("prohibitedCarrier")) {
-      prohibitedCarrier = _json["prohibitedCarrier"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (alliance != null) {
-      _json["alliance"] = alliance;
-    }
-    if (date != null) {
-      _json["date"] = date;
-    }
-    if (destination != null) {
-      _json["destination"] = destination;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (maxConnectionDuration != null) {
-      _json["maxConnectionDuration"] = maxConnectionDuration;
-    }
-    if (maxStops != null) {
-      _json["maxStops"] = maxStops;
-    }
-    if (origin != null) {
-      _json["origin"] = origin;
-    }
-    if (permittedCarrier != null) {
-      _json["permittedCarrier"] = permittedCarrier;
-    }
-    if (permittedDepartureTime != null) {
-      _json["permittedDepartureTime"] = (permittedDepartureTime).toJson();
-    }
-    if (preferredCabin != null) {
-      _json["preferredCabin"] = preferredCabin;
-    }
-    if (prohibitedCarrier != null) {
-      _json["prohibitedCarrier"] = prohibitedCarrier;
-    }
-    return _json;
-  }
-}
-
-/// Tax data.
-class TaxData {
-  /// An identifier uniquely identifying a tax in a response.
-  core.String id;
-
-  /// Identifies this as a tax data object, representing some tax. Value: the
-  /// fixed string qpxexpress#taxData.
-  core.String kind;
-
-  /// The name of a tax.
-  core.String name;
-
-  TaxData();
-
-  TaxData.fromJson(core.Map _json) {
-    if (_json.containsKey("id")) {
-      id = _json["id"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("name")) {
-      name = _json["name"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (id != null) {
-      _json["id"] = id;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (name != null) {
-      _json["name"] = name;
-    }
-    return _json;
-  }
-}
-
-/// Tax information.
-class TaxInfo {
-  /// Whether this is a government charge or a carrier surcharge.
-  core.String chargeType;
-
-  /// The code to enter in the ticket's tax box.
-  core.String code;
-
-  /// For government charges, the country levying the charge.
-  core.String country;
-
-  /// Identifier uniquely identifying this tax in a response. Not present for
-  /// unnamed carrier surcharges.
-  core.String id;
-
-  /// Identifies this as a tax information object. Value: the fixed string
-  /// qpxexpress#taxInfo.
-  core.String kind;
-
-  /// The price of the tax in the sales or equivalent currency.
-  core.String salePrice;
-
-  TaxInfo();
-
-  TaxInfo.fromJson(core.Map _json) {
-    if (_json.containsKey("chargeType")) {
-      chargeType = _json["chargeType"];
-    }
-    if (_json.containsKey("code")) {
-      code = _json["code"];
-    }
-    if (_json.containsKey("country")) {
-      country = _json["country"];
-    }
-    if (_json.containsKey("id")) {
-      id = _json["id"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("salePrice")) {
-      salePrice = _json["salePrice"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (chargeType != null) {
-      _json["chargeType"] = chargeType;
-    }
-    if (code != null) {
-      _json["code"] = code;
-    }
-    if (country != null) {
-      _json["country"] = country;
-    }
-    if (id != null) {
-      _json["id"] = id;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (salePrice != null) {
-      _json["salePrice"] = salePrice;
-    }
-    return _json;
-  }
-}
-
-/// Two times in a single day defining a time range.
-class TimeOfDayRange {
-  /// The earliest time of day in HH:MM format.
-  core.String earliestTime;
-
-  /// Identifies this as a time of day range object, representing two times in a
-  /// single day defining a time range. Value: the fixed string
-  /// qpxexpress#timeOfDayRange.
-  core.String kind;
-
-  /// The latest time of day in HH:MM format.
-  core.String latestTime;
-
-  TimeOfDayRange();
-
-  TimeOfDayRange.fromJson(core.Map _json) {
-    if (_json.containsKey("earliestTime")) {
-      earliestTime = _json["earliestTime"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("latestTime")) {
-      latestTime = _json["latestTime"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (earliestTime != null) {
-      _json["earliestTime"] = earliestTime;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (latestTime != null) {
-      _json["latestTime"] = latestTime;
-    }
-    return _json;
-  }
-}
-
-/// Trip information.
-class TripOption {
-  /// Identifier uniquely identifying this trip in a response.
-  core.String id;
-
-  /// Identifies this as a trip information object. Value: the fixed string
-  /// qpxexpress#tripOption.
-  core.String kind;
-
-  /// Per passenger pricing information.
-  core.List<PricingInfo> pricing;
-
-  /// The total price for all passengers on the trip, in the form of a currency
-  /// followed by an amount, e.g. USD253.35.
-  core.String saleTotal;
-
-  /// The slices that make up this trip's itinerary.
-  core.List<SliceInfo> slice;
-
-  TripOption();
-
-  TripOption.fromJson(core.Map _json) {
-    if (_json.containsKey("id")) {
-      id = _json["id"];
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("pricing")) {
-      pricing = _json["pricing"]
-          .map((value) => new PricingInfo.fromJson(value))
-          .toList();
-    }
-    if (_json.containsKey("saleTotal")) {
-      saleTotal = _json["saleTotal"];
-    }
-    if (_json.containsKey("slice")) {
-      slice =
-          _json["slice"].map((value) => new SliceInfo.fromJson(value)).toList();
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (id != null) {
-      _json["id"] = id;
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (pricing != null) {
-      _json["pricing"] = pricing.map((value) => (value).toJson()).toList();
-    }
-    if (saleTotal != null) {
-      _json["saleTotal"] = saleTotal;
-    }
-    if (slice != null) {
-      _json["slice"] = slice.map((value) => (value).toJson()).toList();
-    }
-    return _json;
-  }
-}
-
-/// A QPX Express search request, which will yield one or more solutions.
-class TripOptionsRequest {
-  /// Do not return solutions that cost more than this price. The alphabetical
-  /// part of the price is in ISO 4217. The format, in regex, is
-  /// [A-Z]{3}\d+(\.\d+)? Example: $102.07
-  core.String maxPrice;
-
-  /// Counts for each passenger type in the request.
-  PassengerCounts passengers;
-
-  /// Return only solutions with refundable fares.
-  core.bool refundable;
-
-  /// IATA country code representing the point of sale. This determines the
-  /// "equivalent amount paid" currency for the ticket.
-  core.String saleCountry;
-
-  /// The slices that make up the itinerary of this trip. A slice represents a
-  /// traveler's intent, the portion of a low-fare search corresponding to a
-  /// traveler's request to get between two points. One-way journeys are
-  /// generally expressed using one slice, round-trips using two. An example of
-  /// a one slice trip with three segments might be BOS-SYD, SYD-LAX, LAX-BOS if
-  /// the traveler only stopped in SYD and LAX just long enough to change
-  /// planes.
-  core.List<SliceInput> slice;
-
-  /// The number of solutions to return, maximum 500.
-  core.int solutions;
-
-  /// IATA country code representing the point of ticketing.
-  core.String ticketingCountry;
-
-  TripOptionsRequest();
-
-  TripOptionsRequest.fromJson(core.Map _json) {
-    if (_json.containsKey("maxPrice")) {
-      maxPrice = _json["maxPrice"];
-    }
-    if (_json.containsKey("passengers")) {
-      passengers = new PassengerCounts.fromJson(_json["passengers"]);
-    }
-    if (_json.containsKey("refundable")) {
-      refundable = _json["refundable"];
-    }
-    if (_json.containsKey("saleCountry")) {
-      saleCountry = _json["saleCountry"];
-    }
-    if (_json.containsKey("slice")) {
-      slice = _json["slice"]
-          .map((value) => new SliceInput.fromJson(value))
-          .toList();
-    }
-    if (_json.containsKey("solutions")) {
-      solutions = _json["solutions"];
-    }
-    if (_json.containsKey("ticketingCountry")) {
-      ticketingCountry = _json["ticketingCountry"];
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (maxPrice != null) {
-      _json["maxPrice"] = maxPrice;
-    }
-    if (passengers != null) {
-      _json["passengers"] = (passengers).toJson();
-    }
-    if (refundable != null) {
-      _json["refundable"] = refundable;
-    }
-    if (saleCountry != null) {
-      _json["saleCountry"] = saleCountry;
-    }
-    if (slice != null) {
-      _json["slice"] = slice.map((value) => (value).toJson()).toList();
-    }
-    if (solutions != null) {
-      _json["solutions"] = solutions;
-    }
-    if (ticketingCountry != null) {
-      _json["ticketingCountry"] = ticketingCountry;
-    }
-    return _json;
-  }
-}
-
-/// A QPX Express search response.
-class TripOptionsResponse {
-  /// Informational data global to list of solutions.
-  Data data;
-
-  /// Identifies this as a QPX Express trip response object, which consists of
-  /// zero or more solutions. Value: the fixed string qpxexpress#tripOptions.
-  core.String kind;
-
-  /// An identifier uniquely identifying this response.
-  core.String requestId;
-
-  /// A list of priced itinerary solutions to the QPX Express query.
-  core.List<TripOption> tripOption;
-
-  TripOptionsResponse();
-
-  TripOptionsResponse.fromJson(core.Map _json) {
-    if (_json.containsKey("data")) {
-      data = new Data.fromJson(_json["data"]);
-    }
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("requestId")) {
-      requestId = _json["requestId"];
-    }
-    if (_json.containsKey("tripOption")) {
-      tripOption = _json["tripOption"]
-          .map((value) => new TripOption.fromJson(value))
-          .toList();
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (data != null) {
-      _json["data"] = (data).toJson();
-    }
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (requestId != null) {
-      _json["requestId"] = requestId;
-    }
-    if (tripOption != null) {
-      _json["tripOption"] =
-          tripOption.map((value) => (value).toJson()).toList();
-    }
-    return _json;
-  }
-}
-
-/// A QPX Express search request.
-class TripsSearchRequest {
-  /// A QPX Express search request. Required values are at least one adult or
-  /// senior passenger, an origin, a destination, and a date.
-  TripOptionsRequest request;
-
-  TripsSearchRequest();
-
-  TripsSearchRequest.fromJson(core.Map _json) {
-    if (_json.containsKey("request")) {
-      request = new TripOptionsRequest.fromJson(_json["request"]);
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (request != null) {
-      _json["request"] = (request).toJson();
-    }
-    return _json;
-  }
-}
-
-/// A QPX Express search response.
-class TripsSearchResponse {
-  /// Identifies this as a QPX Express API search response resource. Value: the
-  /// fixed string qpxExpress#tripsSearch.
-  core.String kind;
-
-  /// All possible solutions to the QPX Express search request.
-  TripOptionsResponse trips;
-
-  TripsSearchResponse();
-
-  TripsSearchResponse.fromJson(core.Map _json) {
-    if (_json.containsKey("kind")) {
-      kind = _json["kind"];
-    }
-    if (_json.containsKey("trips")) {
-      trips = new TripOptionsResponse.fromJson(_json["trips"]);
-    }
-  }
-
-  core.Map<core.String, core.Object> toJson() {
-    final core.Map<core.String, core.Object> _json =
-        new core.Map<core.String, core.Object>();
-    if (kind != null) {
-      _json["kind"] = kind;
-    }
-    if (trips != null) {
-      _json["trips"] = (trips).toJson();
-    }
-    return _json;
-  }
-}
diff --git a/generated/googleapis/lib/reseller/v1.dart b/generated/googleapis/lib/reseller/v1.dart
index de0bd9f..bfc1e81 100644
--- a/generated/googleapis/lib/reseller/v1.dart
+++ b/generated/googleapis/lib/reseller/v1.dart
@@ -52,6 +52,9 @@
   /// customerId as a key for persistent data. If the domain name for a
   /// customerId is changed, the Google system automatically updates.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Customer].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -59,7 +62,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Customer> get(core.String customerId) {
+  async.Future<Customer> get(core.String customerId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -70,6 +73,9 @@
     if (customerId == null) {
       throw new core.ArgumentError("Parameter customerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customers/' + commons.Escaper.ecapeVariable('$customerId');
 
@@ -95,6 +101,9 @@
   /// the subscription transfer. For more information, see the administrator
   /// help center.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Customer].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -103,7 +112,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Customer> insert(Customer request,
-      {core.String customerAuthToken}) {
+      {core.String customerAuthToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -117,6 +126,9 @@
     if (customerAuthToken != null) {
       _queryParams["customerAuthToken"] = [customerAuthToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customers';
 
@@ -141,6 +153,9 @@
   /// customerId as a key for persistent data. If the domain name for a
   /// customerId is changed, the Google system automatically updates.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Customer].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -148,7 +163,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Customer> patch(Customer request, core.String customerId) {
+  async.Future<Customer> patch(Customer request, core.String customerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -162,6 +178,9 @@
     if (customerId == null) {
       throw new core.ArgumentError("Parameter customerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customers/' + commons.Escaper.ecapeVariable('$customerId');
 
@@ -185,6 +204,9 @@
   /// customerId as a key for persistent data. If the domain name for a
   /// customerId is changed, the Google system automatically updates.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Customer].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -192,7 +214,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Customer> update(Customer request, core.String customerId) {
+  async.Future<Customer> update(Customer request, core.String customerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -206,6 +229,9 @@
     if (customerId == null) {
       throw new core.ArgumentError("Parameter customerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customers/' + commons.Escaper.ecapeVariable('$customerId');
 
@@ -228,6 +254,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ResellernotifyGetwatchdetailsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -235,7 +264,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ResellernotifyGetwatchdetailsResponse> getwatchdetails() {
+  async.Future<ResellernotifyGetwatchdetailsResponse> getwatchdetails(
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -243,6 +273,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'resellernotify/getwatchdetails';
 
     var _response = _requester.request(_url, "GET",
@@ -262,6 +296,9 @@
   /// [serviceAccountEmailAddress] - The service account which will own the
   /// created Cloud-PubSub topic.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ResellernotifyResource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -270,7 +307,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ResellernotifyResource> register(
-      {core.String serviceAccountEmailAddress}) {
+      {core.String serviceAccountEmailAddress, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -281,6 +318,9 @@
     if (serviceAccountEmailAddress != null) {
       _queryParams["serviceAccountEmailAddress"] = [serviceAccountEmailAddress];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'resellernotify/register';
 
@@ -300,6 +340,9 @@
   /// [serviceAccountEmailAddress] - The service account which owns the
   /// Cloud-PubSub topic.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ResellernotifyResource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -308,7 +351,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ResellernotifyResource> unregister(
-      {core.String serviceAccountEmailAddress}) {
+      {core.String serviceAccountEmailAddress, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -319,6 +362,9 @@
     if (serviceAccountEmailAddress != null) {
       _queryParams["serviceAccountEmailAddress"] = [serviceAccountEmailAddress];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'resellernotify/unregister';
 
@@ -352,6 +398,9 @@
   /// use this ID as a key for persistent data. And the subscriptionId can be
   /// found using the retrieve all reseller subscriptions method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -360,7 +409,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Subscription> activate(
-      core.String customerId, core.String subscriptionId) {
+      core.String customerId, core.String subscriptionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -374,6 +424,9 @@
     if (subscriptionId == null) {
       throw new core.ArgumentError("Parameter subscriptionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customers/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -409,6 +462,9 @@
   /// use this ID as a key for persistent data. And the subscriptionId can be
   /// found using the retrieve all reseller subscriptions method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -417,7 +473,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Subscription> changePlan(ChangePlanRequest request,
-      core.String customerId, core.String subscriptionId) {
+      core.String customerId, core.String subscriptionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -434,6 +491,9 @@
     if (subscriptionId == null) {
       throw new core.ArgumentError("Parameter subscriptionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customers/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -468,6 +528,9 @@
   /// use this ID as a key for persistent data. And the subscriptionId can be
   /// found using the retrieve all reseller subscriptions method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -476,7 +539,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Subscription> changeRenewalSettings(RenewalSettings request,
-      core.String customerId, core.String subscriptionId) {
+      core.String customerId, core.String subscriptionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -493,6 +557,9 @@
     if (subscriptionId == null) {
       throw new core.ArgumentError("Parameter subscriptionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customers/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -526,6 +593,9 @@
   /// use this ID as a key for persistent data. And the subscriptionId can be
   /// found using the retrieve all reseller subscriptions method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -534,7 +604,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Subscription> changeSeats(
-      Seats request, core.String customerId, core.String subscriptionId) {
+      Seats request, core.String customerId, core.String subscriptionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -551,6 +622,9 @@
     if (subscriptionId == null) {
       throw new core.ArgumentError("Parameter subscriptionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customers/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -615,13 +689,17 @@
   /// The customer can then choose to set up billing directly with Google by
   /// using a credit card, or they can transfer to another reseller.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String customerId, core.String subscriptionId,
-      core.String deletionType) {
+      core.String deletionType,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -639,6 +717,9 @@
       throw new core.ArgumentError("Parameter deletionType is required.");
     }
     _queryParams["deletionType"] = [deletionType];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -671,6 +752,9 @@
   /// use this ID as a key for persistent data. And the subscriptionId can be
   /// found using the retrieve all reseller subscriptions method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -679,7 +763,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Subscription> get(
-      core.String customerId, core.String subscriptionId) {
+      core.String customerId, core.String subscriptionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -693,6 +778,9 @@
     if (subscriptionId == null) {
       throw new core.ArgumentError("Parameter subscriptionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customers/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -726,6 +814,9 @@
   /// the subscription transfer. For more information, see the administrator
   /// help center.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -735,7 +826,7 @@
   /// this method will complete with the same error.
   async.Future<Subscription> insert(
       Subscription request, core.String customerId,
-      {core.String customerAuthToken}) {
+      {core.String customerAuthToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -752,6 +843,9 @@
     if (customerAuthToken != null) {
       _queryParams["customerAuthToken"] = [customerAuthToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customers/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -800,6 +894,9 @@
   ///
   /// [pageToken] - Token to specify next page in the list
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscriptions].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -812,7 +909,8 @@
       core.String customerId,
       core.String customerNamePrefix,
       core.int maxResults,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -835,6 +933,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'subscriptions';
 
@@ -863,6 +964,9 @@
   /// use this ID as a key for persistent data. And the subscriptionId can be
   /// found using the retrieve all reseller subscriptions method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -871,7 +975,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Subscription> startPaidService(
-      core.String customerId, core.String subscriptionId) {
+      core.String customerId, core.String subscriptionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -885,6 +990,9 @@
     if (subscriptionId == null) {
       throw new core.ArgumentError("Parameter subscriptionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customers/' +
         commons.Escaper.ecapeVariable('$customerId') +
@@ -916,6 +1024,9 @@
   /// use this ID as a key for persistent data. And the subscriptionId can be
   /// found using the retrieve all reseller subscriptions method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -924,7 +1035,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Subscription> suspend(
-      core.String customerId, core.String subscriptionId) {
+      core.String customerId, core.String subscriptionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -938,6 +1050,9 @@
     if (subscriptionId == null) {
       throw new core.ArgumentError("Parameter subscriptionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'customers/' +
         commons.Escaper.ecapeVariable('$customerId') +
diff --git a/generated/googleapis/lib/runtimeconfig/v1.dart b/generated/googleapis/lib/runtimeconfig/v1.dart
index 5f87eff..635905c 100644
--- a/generated/googleapis/lib/runtimeconfig/v1.dart
+++ b/generated/googleapis/lib/runtimeconfig/v1.dart
@@ -61,6 +61,9 @@
   /// [name] - The name of the operation resource to be cancelled.
   /// Value must have pattern "^operations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -68,7 +71,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> cancel(CancelOperationRequest request, core.String name) {
+  async.Future<Empty> cancel(CancelOperationRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -82,6 +86,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':cancel';
 
@@ -104,6 +111,9 @@
   /// [name] - The name of the operation resource to be deleted.
   /// Value must have pattern "^operations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -111,7 +121,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -122,6 +132,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -157,6 +170,9 @@
   ///
   /// [pageToken] - The standard list page token.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOperationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -165,7 +181,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOperationsResponse> list(core.String name,
-      {core.int pageSize, core.String filter, core.String pageToken}) {
+      {core.int pageSize,
+      core.String filter,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -185,6 +204,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
diff --git a/generated/googleapis/lib/safebrowsing/v4.dart b/generated/googleapis/lib/safebrowsing/v4.dart
index 1d3a11f..0c540d7 100644
--- a/generated/googleapis/lib/safebrowsing/v4.dart
+++ b/generated/googleapis/lib/safebrowsing/v4.dart
@@ -48,11 +48,14 @@
   ///
   /// [encodedRequest] - A serialized FindFullHashesRequest proto.
   ///
+  /// [clientVersion] - The version of the client implementation.
+  ///
   /// [clientId] - A client ID that (hopefully) uniquely identifies the client
   /// implementation
   /// of the Safe Browsing API.
   ///
-  /// [clientVersion] - The version of the client implementation.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [FindFullHashesResponse].
   ///
@@ -62,7 +65,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FindFullHashesResponse> get(core.String encodedRequest,
-      {core.String clientId, core.String clientVersion}) {
+      {core.String clientVersion, core.String clientId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -73,11 +76,14 @@
     if (encodedRequest == null) {
       throw new core.ArgumentError("Parameter encodedRequest is required.");
     }
+    if (clientVersion != null) {
+      _queryParams["clientVersion"] = [clientVersion];
+    }
     if (clientId != null) {
       _queryParams["clientId"] = [clientId];
     }
-    if (clientVersion != null) {
-      _queryParams["clientVersion"] = [clientVersion];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v4/encodedFullHashes/' +
@@ -108,6 +114,9 @@
   ///
   /// [clientVersion] - The version of the client implementation.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FetchThreatListUpdatesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -116,7 +125,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FetchThreatListUpdatesResponse> get(core.String encodedRequest,
-      {core.String clientId, core.String clientVersion}) {
+      {core.String clientId, core.String clientVersion, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -133,6 +142,9 @@
     if (clientVersion != null) {
       _queryParams["clientVersion"] = [clientVersion];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v4/encodedUpdates/' + commons.Escaper.ecapeVariable('$encodedRequest');
@@ -159,6 +171,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FindFullHashesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -166,7 +181,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<FindFullHashesResponse> find(FindFullHashesRequest request) {
+  async.Future<FindFullHashesResponse> find(FindFullHashesRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -177,6 +193,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/fullHashes:find';
 
@@ -203,6 +222,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FetchThreatListUpdatesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -211,7 +233,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FetchThreatListUpdatesResponse> fetch(
-      FetchThreatListUpdatesRequest request) {
+      FetchThreatListUpdatesRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -222,6 +245,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/threatListUpdates:fetch';
 
@@ -245,6 +271,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListThreatListsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -252,7 +281,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListThreatListsResponse> list() {
+  async.Future<ListThreatListsResponse> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -260,6 +289,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'v4/threatLists';
 
     var _response = _requester.request(_url, "GET",
@@ -283,6 +316,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FindThreatMatchesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -290,8 +326,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<FindThreatMatchesResponse> find(
-      FindThreatMatchesRequest request) {
+  async.Future<FindThreatMatchesResponse> find(FindThreatMatchesRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -302,6 +338,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/threatMatches:find';
 
diff --git a/generated/googleapis/lib/script/v1.dart b/generated/googleapis/lib/script/v1.dart
index 79a6af0..344ee9c 100644
--- a/generated/googleapis/lib/script/v1.dart
+++ b/generated/googleapis/lib/script/v1.dart
@@ -90,6 +90,9 @@
   /// script ID, open
   /// the project in the script editor and select **File > Project properties**.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -97,7 +100,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> run(ExecutionRequest request, core.String scriptId) {
+  async.Future<Operation> run(ExecutionRequest request, core.String scriptId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -111,6 +115,9 @@
     if (scriptId == null) {
       throw new core.ArgumentError("Parameter scriptId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/scripts/' + commons.Escaper.ecapeVariable('$scriptId') + ':run';
 
diff --git a/generated/googleapis/lib/searchconsole/v1.dart b/generated/googleapis/lib/searchconsole/v1.dart
index ad48d3f..f8df051 100644
--- a/generated/googleapis/lib/searchconsole/v1.dart
+++ b/generated/googleapis/lib/searchconsole/v1.dart
@@ -49,6 +49,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RunMobileFriendlyTestResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -57,7 +60,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RunMobileFriendlyTestResponse> run(
-      RunMobileFriendlyTestRequest request) {
+      RunMobileFriendlyTestRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -68,6 +72,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/urlTestingTools/mobileFriendlyTest:run';
 
diff --git a/generated/googleapis/lib/servicecontrol/v1.dart b/generated/googleapis/lib/servicecontrol/v1.dart
index 682d83e..90aeb31 100644
--- a/generated/googleapis/lib/servicecontrol/v1.dart
+++ b/generated/googleapis/lib/servicecontrol/v1.dart
@@ -63,6 +63,9 @@
   ///
   /// See google.api.Service for the definition of a service name.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AllocateQuotaResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -71,7 +74,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AllocateQuotaResponse> allocateQuota(
-      AllocateQuotaRequest request, core.String serviceName) {
+      AllocateQuotaRequest request, core.String serviceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -85,6 +89,9 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' +
         commons.Escaper.ecapeVariable('$serviceName') +
@@ -125,6 +132,9 @@
   /// [google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service)
   /// for the definition of a service name.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CheckResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -133,7 +143,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CheckResponse> check(
-      CheckRequest request, core.String serviceName) {
+      CheckRequest request, core.String serviceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -147,6 +158,9 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' +
         commons.Escaper.ecapeVariable('$serviceName') +
@@ -178,6 +192,9 @@
   ///
   /// See google.api.Service for the definition of a service name.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EndReconciliationResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -186,7 +203,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<EndReconciliationResponse> endReconciliation(
-      EndReconciliationRequest request, core.String serviceName) {
+      EndReconciliationRequest request, core.String serviceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -200,6 +218,9 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' +
         commons.Escaper.ecapeVariable('$serviceName') +
@@ -237,6 +258,9 @@
   ///
   /// See google.api.Service for the definition of a service name.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ReleaseQuotaResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -245,7 +269,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ReleaseQuotaResponse> releaseQuota(
-      ReleaseQuotaRequest request, core.String serviceName) {
+      ReleaseQuotaRequest request, core.String serviceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -259,6 +284,9 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' +
         commons.Escaper.ecapeVariable('$serviceName') +
@@ -300,6 +328,9 @@
   /// [google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service)
   /// for the definition of a service name.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ReportResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -308,7 +339,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ReportResponse> report(
-      ReportRequest request, core.String serviceName) {
+      ReportRequest request, core.String serviceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -322,6 +354,9 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' +
         commons.Escaper.ecapeVariable('$serviceName') +
@@ -373,6 +408,9 @@
   ///
   /// See google.api.Service for the definition of a service name.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [StartReconciliationResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -381,7 +419,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<StartReconciliationResponse> startReconciliation(
-      StartReconciliationRequest request, core.String serviceName) {
+      StartReconciliationRequest request, core.String serviceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -395,6 +434,9 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' +
         commons.Escaper.ecapeVariable('$serviceName') +
@@ -487,21 +529,13 @@
   /// Quota metrics to indicate the result of allocation. Depending on the
   /// request, one or more of the following metrics will be included:
   ///
-  /// 1. For rate quota, per quota group or per quota metric incremental usage
-  /// will be specified using the following delta metric:
+  /// 1. Per quota group or per quota metric incremental usage will be specified
+  /// using the following delta metric :
   ///   "serviceruntime.googleapis.com/api/consumer/quota_used_count"
   ///
-  /// 2. For allocation quota, per quota metric total usage will be specified
-  /// using the following gauge metric:
-  ///   "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
-  ///
-  /// 3. For both rate quota and allocation quota, the quota limit reached
-  /// condition will be specified using the following boolean metric:
+  /// 2. The quota limit reached condition will be specified using the following
+  /// boolean metric :
   ///   "serviceruntime.googleapis.com/quota/exceeded"
-  ///
-  /// 4. For allocation quota, value for each quota limit associated with
-  /// the metrics will be specified using the following gauge metric:
-  ///   "serviceruntime.googleapis.com/quota/limit"
   core.List<MetricValueSet> quotaMetrics;
 
   /// ID of the actual config used to process the request.
@@ -570,7 +604,7 @@
   ///
   /// The values for Object must be JSON objects. It can consist of `num`,
   /// `String`, `bool` and `null` as well as `Map` and `List` values.
-  core.List<core.Map<core.String, core.Object>> metadata;
+  core.Map<core.String, core.Object> metadata;
 
   /// The name of the service method or operation.
   /// For API calls, this should be the name of the API method.
@@ -2115,8 +2149,11 @@
 
   /// Fully qualified name of the API method for which this quota operation is
   /// requested. This name is used for matching quota rules or metric rules and
-  /// billing status rules defined in service configuration. This field is not
-  /// required if the quota operation is performed on non-API resources.
+  /// billing status rules defined in service configuration.
+  ///
+  /// This field should not be set if any of the following is true:
+  /// (1) the quota operation is performed on non-API resources.
+  /// (2) quota_metrics is set because the caller is doing quota override.
   ///
   /// Example of an RPC method name:
   ///     google.example.library.v1.LibraryService.CreateShelf
@@ -2142,6 +2179,8 @@
   /// label value combinations. If a request has such duplicated MetricValue
   /// instances, the entire request is rejected with
   /// an invalid argument error.
+  ///
+  /// This field is mutually exclusive with method_name.
   core.List<MetricValueSet> quotaMetrics;
 
   /// Quota mode for this operation.
@@ -2152,28 +2191,15 @@
   /// the service configuration or specified using the quota metrics. If the
   /// amount is higher than the available quota, allocation error will be
   /// returned and no quota will be allocated.
-  /// For ReleaseQuota request, this mode is supported only for precise quota
-  /// limits. In this case, this operation releases quota for the amount
-  /// specified in the service configuration or specified using the quota
-  /// metrics. If the release can make used quota negative, release error
-  /// will be returned and no quota will be released.
-  /// - "BEST_EFFORT" : For AllocateQuota request, this mode is supported only
-  /// for imprecise
-  /// quota limits. In this case, the operation allocates quota for the amount
-  /// specified in the service configuration or specified using the quota
-  /// metrics. If the amount is higher than the available quota, request does
-  /// not fail but all available quota will be allocated.
-  /// For ReleaseQuota request, this mode is supported for both precise quota
-  /// limits and imprecise quota limits. In this case, this operation releases
-  /// quota for the amount specified in the service configuration or specified
-  /// using the quota metrics. If the release can make used quota
-  /// negative, request does not fail but only the used quota will be
-  /// released. After the ReleaseQuota request completes, the used quota
-  /// will be 0, and never goes to negative.
+  /// - "BEST_EFFORT" : The operation allocates quota for the amount specified
+  /// in the service
+  /// configuration or specified using the quota metrics. If the amount is
+  /// higher than the available quota, request does not fail but all available
+  /// quota will be allocated.
   /// - "CHECK_ONLY" : For AllocateQuota request, only checks if there is enough
   /// quota
   /// available and does not change the available quota. No lock is placed on
-  /// the available quota either. Not supported for ReleaseQuota request.
+  /// the available quota either.
   core.String quotaMode;
 
   QuotaOperation();
diff --git a/generated/googleapis/lib/servicemanagement/v1.dart b/generated/googleapis/lib/servicemanagement/v1.dart
index 93c2326..bdd6da3 100644
--- a/generated/googleapis/lib/servicemanagement/v1.dart
+++ b/generated/googleapis/lib/servicemanagement/v1.dart
@@ -60,6 +60,9 @@
   /// [name] - The name of the operation resource.
   /// Value must have pattern "^operations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -67,7 +70,7 @@
   ///
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
-  async.Future<Operation> get(core.String name) {
+  async.Future<Operation> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -78,6 +81,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -124,6 +130,9 @@
   /// defaults to
   /// 50. The maximum value is 100.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOperationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -135,7 +144,8 @@
       {core.String filter,
       core.String pageToken,
       core.String name,
-      core.int pageSize}) {
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -155,6 +165,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/operations';
 
@@ -189,6 +202,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -196,7 +212,8 @@
   ///
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
-  async.Future<Operation> create(ManagedService request) {
+  async.Future<Operation> create(ManagedService request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -207,6 +224,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services';
 
@@ -232,6 +252,9 @@
   /// [overview](/service-management/overview)
   /// for naming requirements.  For example: `example.googleapis.com`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -239,7 +262,8 @@
   ///
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
-  async.Future<Operation> delete(core.String serviceName) {
+  async.Future<Operation> delete(core.String serviceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -250,6 +274,9 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' + commons.Escaper.ecapeVariable('$serviceName');
 
@@ -276,6 +303,9 @@
   /// service name
   /// will cause the request to fail.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -284,7 +314,8 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<Operation> disable(
-      DisableServiceRequest request, core.String serviceName) {
+      DisableServiceRequest request, core.String serviceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -298,6 +329,9 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' +
         commons.Escaper.ecapeVariable('$serviceName') +
@@ -327,6 +361,9 @@
   /// service name will
   /// cause the request to fail.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -335,7 +372,8 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<Operation> enable(
-      EnableServiceRequest request, core.String serviceName) {
+      EnableServiceRequest request, core.String serviceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -349,6 +387,9 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' +
         commons.Escaper.ecapeVariable('$serviceName') +
@@ -380,6 +421,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GenerateConfigReportResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -388,7 +432,8 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<GenerateConfigReportResponse> generateConfigReport(
-      GenerateConfigReportRequest request) {
+      GenerateConfigReportRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -399,6 +444,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services:generateConfigReport';
 
@@ -421,6 +469,9 @@
   /// overview for naming
   /// requirements.  For example: `example.googleapis.com`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedService].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -428,7 +479,8 @@
   ///
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
-  async.Future<ManagedService> get(core.String serviceName) {
+  async.Future<ManagedService> get(core.String serviceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -439,6 +491,9 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' + commons.Escaper.ecapeVariable('$serviceName');
 
@@ -459,6 +514,8 @@
   /// [overview](/service-management/overview)
   /// for naming requirements.  For example: `example.googleapis.com`.
   ///
+  /// [configId] - The id of the service configuration resource.
+  ///
   /// [view] - Specifies which parts of the Service Config should be returned in
   /// the
   /// response.
@@ -466,7 +523,8 @@
   /// - "BASIC" : A BASIC.
   /// - "FULL" : A FULL.
   ///
-  /// [configId] - The id of the service configuration resource.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Service].
   ///
@@ -476,7 +534,7 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<Service> getConfig(core.String serviceName,
-      {core.String view, core.String configId}) {
+      {core.String configId, core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -487,11 +545,14 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if (configId != null) {
+      _queryParams["configId"] = [configId];
+    }
     if (view != null) {
       _queryParams["view"] = [view];
     }
-    if (configId != null) {
-      _queryParams["configId"] = [configId];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/services/' +
@@ -520,6 +581,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^services/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -528,7 +592,8 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<Policy> getIamPolicy(
-      GetIamPolicyRequest request, core.String resource) {
+      GetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -542,6 +607,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -568,6 +636,8 @@
   ///
   /// Request parameters:
   ///
+  /// [pageSize] - Requested size of the next page of data.
+  ///
   /// [producerProjectId] - Include services produced by the specified project.
   ///
   /// [consumerId] - Include services consumed by the specified consumer.
@@ -580,7 +650,8 @@
   /// previous list
   /// call.
   ///
-  /// [pageSize] - Requested size of the next page of data.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListServicesResponse].
   ///
@@ -590,10 +661,11 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<ListServicesResponse> list(
-      {core.String producerProjectId,
+      {core.int pageSize,
+      core.String producerProjectId,
       core.String consumerId,
       core.String pageToken,
-      core.int pageSize}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -601,6 +673,9 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
     if (producerProjectId != null) {
       _queryParams["producerProjectId"] = [producerProjectId];
     }
@@ -610,8 +685,8 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/services';
@@ -637,6 +712,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^services/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -645,7 +723,8 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -659,6 +738,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -690,6 +772,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^services/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -698,7 +783,8 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -712,6 +798,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -740,6 +829,9 @@
   /// [overview](/service-management/overview)
   /// for naming requirements. For example: `example.googleapis.com`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -747,7 +839,8 @@
   ///
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
-  async.Future<Operation> undelete(core.String serviceName) {
+  async.Future<Operation> undelete(core.String serviceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -758,6 +851,9 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' +
         commons.Escaper.ecapeVariable('$serviceName') +
@@ -791,6 +887,9 @@
   /// [overview](/service-management/overview)
   /// for naming requirements.  For example: `example.googleapis.com`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Service].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -798,7 +897,8 @@
   ///
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
-  async.Future<Service> create(Service request, core.String serviceName) {
+  async.Future<Service> create(Service request, core.String serviceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -812,6 +912,9 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' +
         commons.Escaper.ecapeVariable('$serviceName') +
@@ -843,6 +946,9 @@
   /// - "BASIC" : A BASIC.
   /// - "FULL" : A FULL.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Service].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -851,7 +957,7 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<Service> get(core.String serviceName, core.String configId,
-      {core.String view}) {
+      {core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -868,6 +974,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' +
         commons.Escaper.ecapeVariable('$serviceName') +
@@ -892,9 +1001,12 @@
   /// [overview](/service-management/overview)
   /// for naming requirements.  For example: `example.googleapis.com`.
   ///
+  /// [pageSize] - The max number of items to include in the response list.
+  ///
   /// [pageToken] - The token of the page to retrieve.
   ///
-  /// [pageSize] - The max number of items to include in the response list.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListServiceConfigsResponse].
   ///
@@ -904,7 +1016,7 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<ListServiceConfigsResponse> list(core.String serviceName,
-      {core.String pageToken, core.int pageSize}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -915,11 +1027,14 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/services/' +
@@ -955,6 +1070,9 @@
   /// [overview](/service-management/overview)
   /// for naming requirements.  For example: `example.googleapis.com`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -963,7 +1081,8 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<Operation> submit(
-      SubmitConfigSourceRequest request, core.String serviceName) {
+      SubmitConfigSourceRequest request, core.String serviceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -977,6 +1096,9 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' +
         commons.Escaper.ecapeVariable('$serviceName') +
@@ -1011,6 +1133,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^services/[^/]+/consumers/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1019,7 +1144,8 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<Policy> getIamPolicy(
-      GetIamPolicyRequest request, core.String resource) {
+      GetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1033,6 +1159,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1059,6 +1188,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^services/[^/]+/consumers/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1067,7 +1199,8 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1081,6 +1214,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1112,6 +1248,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^services/[^/]+/consumers/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1120,7 +1259,8 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1134,6 +1274,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1175,6 +1318,9 @@
   /// [overview](/service-management/overview)
   /// for naming requirements.  For example: `example.googleapis.com`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1182,7 +1328,8 @@
   ///
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
-  async.Future<Operation> create(Rollout request, core.String serviceName) {
+  async.Future<Operation> create(Rollout request, core.String serviceName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1196,6 +1343,9 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' +
         commons.Escaper.ecapeVariable('$serviceName') +
@@ -1220,6 +1370,9 @@
   ///
   /// [rolloutId] - The id of the rollout resource.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Rollout].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1227,7 +1380,8 @@
   ///
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
-  async.Future<Rollout> get(core.String serviceName, core.String rolloutId) {
+  async.Future<Rollout> get(core.String serviceName, core.String rolloutId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1241,6 +1395,9 @@
     if (rolloutId == null) {
       throw new core.ArgumentError("Parameter rolloutId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services/' +
         commons.Escaper.ecapeVariable('$serviceName') +
@@ -1265,10 +1422,6 @@
   /// [overview](/service-management/overview)
   /// for naming requirements.  For example: `example.googleapis.com`.
   ///
-  /// [pageToken] - The token of the page to retrieve.
-  ///
-  /// [pageSize] - The max number of items to include in the response list.
-  ///
   /// [filter] - Use `filter` to return subset of rollouts.
   /// The following filters are supported:
   ///   -- To limit the results to only those in
@@ -1278,6 +1431,13 @@
   ///      [status](google.api.servicemanagement.v1.RolloutStatus) 'CANCELLED'
   ///      or 'FAILED', use filter='status=CANCELLED OR status=FAILED'
   ///
+  /// [pageToken] - The token of the page to retrieve.
+  ///
+  /// [pageSize] - The max number of items to include in the response list.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListServiceRolloutsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1286,7 +1446,10 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<ListServiceRolloutsResponse> list(core.String serviceName,
-      {core.String pageToken, core.int pageSize, core.String filter}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1297,14 +1460,17 @@
     if (serviceName == null) {
       throw new core.ArgumentError("Parameter serviceName is required.");
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/services/' +
@@ -2007,6 +2173,7 @@
 ///
 /// The following example shows how to configure monitored resources and metrics
 /// for billing:
+///
 ///     monitored_resources:
 ///     - type: library.googleapis.com/branch
 ///       labels:
@@ -2974,8 +3141,8 @@
 ///       allow_cors: true
 class Endpoint {
   /// DEPRECATED: This field is no longer supported. Instead of using aliases,
-  /// please specify multiple google.api.Endpoint for each of the intented
-  /// alias.
+  /// please specify multiple google.api.Endpoint for each of the intended
+  /// aliases.
   ///
   /// Additional names that this endpoint will be hosted on.
   core.List<core.String> aliases;
@@ -4666,6 +4833,8 @@
 
   /// A concise name for the metric, which can be displayed in user interfaces.
   /// Use sentence case without an ending period, for example "Request count".
+  /// This field is optional but it is recommended to be set for any metrics
+  /// associated with user-visible concepts, such as Quota.
   core.String displayName;
 
   /// The set of labels that can be used to describe a specific
@@ -4690,14 +4859,7 @@
   /// points.
   core.String metricKind;
 
-  /// The resource name of the metric descriptor. Depending on the
-  /// implementation, the name typically includes: (1) the parent resource name
-  /// that defines the scope of the metric type or of its data; and (2) the
-  /// metric's URL-encoded type, which also appears in the `type` field of this
-  /// descriptor. For example, following is the resource name of a custom
-  /// metric within the GCP project `my-project-id`:
-  ///
-  /// "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
+  /// The resource name of the metric descriptor.
   core.String name;
 
   /// The metric type, including its DNS name prefix. The type is not
@@ -5739,49 +5901,30 @@
   /// the same metric will be checked together during runtime. The metric must
   /// be
   /// defined within the service config.
-  ///
-  /// Used by metric-based quotas only.
   core.String metric;
 
-  /// Name of the quota limit. The name is used to refer to the limit when
-  /// overriding the default limit on per-consumer basis.
+  /// Name of the quota limit.
   ///
-  /// For metric-based quota limits, the name must be provided, and it must be
-  /// unique within the service. The name can only include alphanumeric
-  /// characters as well as '-'.
+  /// The name must be provided, and it must be unique within the service. The
+  /// name can only include alphanumeric characters as well as '-'.
   ///
   /// The maximum length of the limit name is 64 characters.
-  ///
-  /// The name of a limit is used as a unique identifier for this limit.
-  /// Therefore, once a limit has been put into use, its name should be
-  /// immutable. You can use the display_name field to provide a user-friendly
-  /// name for the limit. The display name can be evolved over time without
-  /// affecting the identity of the limit.
   core.String name;
 
   /// Specify the unit of the quota limit. It uses the same syntax as
   /// Metric.unit. The supported unit kinds are determined by the quota
   /// backend system.
   ///
-  /// The [Google Service Control](https://cloud.google.com/service-control)
-  /// supports the following unit components:
-  /// * One of the time intevals:
-  ///   * "/min"  for quota every minute.
-  ///   * "/d"  for quota every 24 hours, starting 00:00 US Pacific Time.
-  ///   * Otherwise the quota won't be reset by time, such as storage limit.
-  /// * One and only one of the granted containers:
-  ///   * "/{project}" quota for a project
-  ///
   /// Here are some examples:
   /// * "1/min/{project}" for quota per minute per project.
   ///
   /// Note: the order of unit components is insignificant.
   /// The "1" at the beginning is required to follow the metric unit syntax.
-  ///
-  /// Used by metric-based quotas only.
   core.String unit;
 
-  /// Tiered limit values, currently only STANDARD is supported.
+  /// Tiered limit values. You must specify this as a key:value pair, with an
+  /// integer value that is the maximum number of requests allowed for the
+  /// specified unit. Currently only STANDARD is supported.
   core.Map<core.String, core.String> values;
 
   QuotaLimit();
@@ -7036,6 +7179,8 @@
 
   /// True, if the method should skip service control. If so, no control plane
   /// feature (like quota and billing) will be enabled.
+  /// This flag is used by ESP to allow some Endpoints customers to bypass
+  /// Google internal checks.
   core.bool skipServiceControl;
 
   UsageRule();
diff --git a/generated/googleapis/lib/serviceuser/v1.dart b/generated/googleapis/lib/serviceuser/v1.dart
index 19fcd75..74b13b2 100644
--- a/generated/googleapis/lib/serviceuser/v1.dart
+++ b/generated/googleapis/lib/serviceuser/v1.dart
@@ -78,6 +78,9 @@
   /// /v1/projects/my-project/services/servicemanagement.googleapis.com:disable
   /// Value must have pattern "^projects/[^/]+/services/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -86,7 +89,8 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<Operation> disable(
-      DisableServiceRequest request, core.String name) {
+      DisableServiceRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -100,6 +104,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':disable';
 
@@ -128,6 +135,9 @@
   /// - /v1/projects/my-project/services/servicemanagement.googleapis.com:enable
   /// Value must have pattern "^projects/[^/]+/services/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -135,8 +145,8 @@
   ///
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
-  async.Future<Operation> enable(
-      EnableServiceRequest request, core.String name) {
+  async.Future<Operation> enable(EnableServiceRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -150,6 +160,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':enable';
 
@@ -178,6 +191,9 @@
   ///
   /// [pageSize] - Requested size of the next page of data.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListEnabledServicesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -186,7 +202,7 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<ListEnabledServicesResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -203,6 +219,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/services';
@@ -237,6 +256,9 @@
   ///
   /// [pageSize] - Requested size of the next page of data.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchServicesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -245,7 +267,7 @@
   /// If the used [http_1.Client] completes with an error when making a REST
   /// call, this method will complete with the same error.
   async.Future<SearchServicesResponse> search(
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -259,6 +281,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/services:search';
 
@@ -1335,8 +1360,8 @@
 ///       allow_cors: true
 class Endpoint {
   /// DEPRECATED: This field is no longer supported. Instead of using aliases,
-  /// please specify multiple google.api.Endpoint for each of the intented
-  /// alias.
+  /// please specify multiple google.api.Endpoint for each of the intended
+  /// aliases.
   ///
   /// Additional names that this endpoint will be hosted on.
   core.List<core.String> aliases;
@@ -2608,6 +2633,8 @@
 
   /// A concise name for the metric, which can be displayed in user interfaces.
   /// Use sentence case without an ending period, for example "Request count".
+  /// This field is optional but it is recommended to be set for any metrics
+  /// associated with user-visible concepts, such as Quota.
   core.String displayName;
 
   /// The set of labels that can be used to describe a specific
@@ -2632,14 +2659,7 @@
   /// points.
   core.String metricKind;
 
-  /// The resource name of the metric descriptor. Depending on the
-  /// implementation, the name typically includes: (1) the parent resource name
-  /// that defines the scope of the metric type or of its data; and (2) the
-  /// metric's URL-encoded type, which also appears in the `type` field of this
-  /// descriptor. For example, following is the resource name of a custom
-  /// metric within the GCP project `my-project-id`:
-  ///
-  /// "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
+  /// The resource name of the metric descriptor.
   core.String name;
 
   /// The metric type, including its DNS name prefix. The type is not
@@ -3603,49 +3623,30 @@
   /// the same metric will be checked together during runtime. The metric must
   /// be
   /// defined within the service config.
-  ///
-  /// Used by metric-based quotas only.
   core.String metric;
 
-  /// Name of the quota limit. The name is used to refer to the limit when
-  /// overriding the default limit on per-consumer basis.
+  /// Name of the quota limit.
   ///
-  /// For metric-based quota limits, the name must be provided, and it must be
-  /// unique within the service. The name can only include alphanumeric
-  /// characters as well as '-'.
+  /// The name must be provided, and it must be unique within the service. The
+  /// name can only include alphanumeric characters as well as '-'.
   ///
   /// The maximum length of the limit name is 64 characters.
-  ///
-  /// The name of a limit is used as a unique identifier for this limit.
-  /// Therefore, once a limit has been put into use, its name should be
-  /// immutable. You can use the display_name field to provide a user-friendly
-  /// name for the limit. The display name can be evolved over time without
-  /// affecting the identity of the limit.
   core.String name;
 
   /// Specify the unit of the quota limit. It uses the same syntax as
   /// Metric.unit. The supported unit kinds are determined by the quota
   /// backend system.
   ///
-  /// The [Google Service Control](https://cloud.google.com/service-control)
-  /// supports the following unit components:
-  /// * One of the time intevals:
-  ///   * "/min"  for quota every minute.
-  ///   * "/d"  for quota every 24 hours, starting 00:00 US Pacific Time.
-  ///   * Otherwise the quota won't be reset by time, such as storage limit.
-  /// * One and only one of the granted containers:
-  ///   * "/{project}" quota for a project
-  ///
   /// Here are some examples:
   /// * "1/min/{project}" for quota per minute per project.
   ///
   /// Note: the order of unit components is insignificant.
   /// The "1" at the beginning is required to follow the metric unit syntax.
-  ///
-  /// Used by metric-based quotas only.
   core.String unit;
 
-  /// Tiered limit values, currently only STANDARD is supported.
+  /// Tiered limit values. You must specify this as a key:value pair, with an
+  /// integer value that is the maximum number of requests allowed for the
+  /// specified unit. Currently only STANDARD is supported.
   core.Map<core.String, core.String> values;
 
   QuotaLimit();
@@ -4603,6 +4604,8 @@
 
   /// True, if the method should skip service control. If so, no control plane
   /// feature (like quota and billing) will be enabled.
+  /// This flag is used by ESP to allow some Endpoints customers to bypass
+  /// Google internal checks.
   core.bool skipServiceControl;
 
   UsageRule();
diff --git a/generated/googleapis/lib/sheets/v4.dart b/generated/googleapis/lib/sheets/v4.dart
index d4672e4..326a0bf 100644
--- a/generated/googleapis/lib/sheets/v4.dart
+++ b/generated/googleapis/lib/sheets/v4.dart
@@ -85,6 +85,9 @@
   ///
   /// [spreadsheetId] - The spreadsheet to apply the updates to.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchUpdateSpreadsheetResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -93,7 +96,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchUpdateSpreadsheetResponse> batchUpdate(
-      BatchUpdateSpreadsheetRequest request, core.String spreadsheetId) {
+      BatchUpdateSpreadsheetRequest request, core.String spreadsheetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -107,6 +111,9 @@
     if (spreadsheetId == null) {
       throw new core.ArgumentError("Parameter spreadsheetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/spreadsheets/' +
         commons.Escaper.ecapeVariable('$spreadsheetId') +
@@ -128,6 +135,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Spreadsheet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -135,7 +145,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Spreadsheet> create(Spreadsheet request) {
+  async.Future<Spreadsheet> create(Spreadsheet request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -146,6 +156,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/spreadsheets';
 
@@ -189,6 +202,9 @@
   ///
   /// [ranges] - The ranges to retrieve from the spreadsheet.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Spreadsheet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -197,7 +213,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Spreadsheet> get(core.String spreadsheetId,
-      {core.bool includeGridData, core.List<core.String> ranges}) {
+      {core.bool includeGridData,
+      core.List<core.String> ranges,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -214,6 +232,9 @@
     if (ranges != null) {
       _queryParams["ranges"] = ranges;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/spreadsheets/' + commons.Escaper.ecapeVariable('$spreadsheetId');
 
@@ -255,6 +276,9 @@
   ///
   /// [spreadsheetId] - The spreadsheet to request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Spreadsheet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -263,7 +287,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Spreadsheet> getByDataFilter(
-      GetSpreadsheetByDataFilterRequest request, core.String spreadsheetId) {
+      GetSpreadsheetByDataFilterRequest request, core.String spreadsheetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -277,6 +302,9 @@
     if (spreadsheetId == null) {
       throw new core.ArgumentError("Parameter spreadsheetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/spreadsheets/' +
         commons.Escaper.ecapeVariable('$spreadsheetId') +
@@ -308,6 +336,9 @@
   ///
   /// [metadataId] - The ID of the developer metadata to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DeveloperMetadata].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -316,7 +347,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DeveloperMetadata> get(
-      core.String spreadsheetId, core.int metadataId) {
+      core.String spreadsheetId, core.int metadataId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -330,6 +362,9 @@
     if (metadataId == null) {
       throw new core.ArgumentError("Parameter metadataId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/spreadsheets/' +
         commons.Escaper.ecapeVariable('$spreadsheetId') +
@@ -357,6 +392,9 @@
   ///
   /// [spreadsheetId] - The ID of the spreadsheet to retrieve metadata from.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchDeveloperMetadataResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -365,7 +403,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SearchDeveloperMetadataResponse> search(
-      SearchDeveloperMetadataRequest request, core.String spreadsheetId) {
+      SearchDeveloperMetadataRequest request, core.String spreadsheetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -379,6 +418,9 @@
     if (spreadsheetId == null) {
       throw new core.ArgumentError("Parameter spreadsheetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/spreadsheets/' +
         commons.Escaper.ecapeVariable('$spreadsheetId') +
@@ -412,6 +454,9 @@
   ///
   /// [sheetId] - The ID of the sheet to copy.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SheetProperties].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -422,7 +467,8 @@
   async.Future<SheetProperties> copyTo(
       CopySheetToAnotherSpreadsheetRequest request,
       core.String spreadsheetId,
-      core.int sheetId) {
+      core.int sheetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -439,6 +485,9 @@
     if (sheetId == null) {
       throw new core.ArgumentError("Parameter sheetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/spreadsheets/' +
         commons.Escaper.ecapeVariable('$spreadsheetId') +
@@ -521,6 +570,9 @@
   /// - "SERIAL_NUMBER" : A SERIAL_NUMBER.
   /// - "FORMATTED_STRING" : A FORMATTED_STRING.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AppendValuesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -534,7 +586,8 @@
       core.String responseValueRenderOption,
       core.String insertDataOption,
       core.String valueInputOption,
-      core.String responseDateTimeRenderOption}) {
+      core.String responseDateTimeRenderOption,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -568,6 +621,9 @@
         responseDateTimeRenderOption
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/spreadsheets/' +
         commons.Escaper.ecapeVariable('$spreadsheetId') +
@@ -595,6 +651,9 @@
   ///
   /// [spreadsheetId] - The ID of the spreadsheet to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchClearValuesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -603,7 +662,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchClearValuesResponse> batchClear(
-      BatchClearValuesRequest request, core.String spreadsheetId) {
+      BatchClearValuesRequest request, core.String spreadsheetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -617,6 +677,9 @@
     if (spreadsheetId == null) {
       throw new core.ArgumentError("Parameter spreadsheetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/spreadsheets/' +
         commons.Escaper.ecapeVariable('$spreadsheetId') +
@@ -644,6 +707,9 @@
   ///
   /// [spreadsheetId] - The ID of the spreadsheet to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchClearValuesByDataFilterResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -652,7 +718,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchClearValuesByDataFilterResponse> batchClearByDataFilter(
-      BatchClearValuesByDataFilterRequest request, core.String spreadsheetId) {
+      BatchClearValuesByDataFilterRequest request, core.String spreadsheetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -666,6 +733,9 @@
     if (spreadsheetId == null) {
       throw new core.ArgumentError("Parameter spreadsheetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/spreadsheets/' +
         commons.Escaper.ecapeVariable('$spreadsheetId') +
@@ -688,20 +758,6 @@
   ///
   /// [spreadsheetId] - The ID of the spreadsheet to retrieve data from.
   ///
-  /// [majorDimension] - The major dimension that results should use.
-  ///
-  /// For example, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,
-  /// then requesting `range=A1:B2,majorDimension=ROWS` will return
-  /// `[[1,2],[3,4]]`,
-  /// whereas requesting `range=A1:B2,majorDimension=COLUMNS` will return
-  /// `[[1,3],[2,4]]`.
-  /// Possible string values are:
-  /// - "DIMENSION_UNSPECIFIED" : A DIMENSION_UNSPECIFIED.
-  /// - "ROWS" : A ROWS.
-  /// - "COLUMNS" : A COLUMNS.
-  ///
-  /// [ranges] - The A1 notation of the values to retrieve.
-  ///
   /// [dateTimeRenderOption] - How dates, times, and durations should be
   /// represented in the output.
   /// This is ignored if value_render_option is
@@ -719,6 +775,23 @@
   /// - "UNFORMATTED_VALUE" : A UNFORMATTED_VALUE.
   /// - "FORMULA" : A FORMULA.
   ///
+  /// [majorDimension] - The major dimension that results should use.
+  ///
+  /// For example, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,
+  /// then requesting `range=A1:B2,majorDimension=ROWS` will return
+  /// `[[1,2],[3,4]]`,
+  /// whereas requesting `range=A1:B2,majorDimension=COLUMNS` will return
+  /// `[[1,3],[2,4]]`.
+  /// Possible string values are:
+  /// - "DIMENSION_UNSPECIFIED" : A DIMENSION_UNSPECIFIED.
+  /// - "ROWS" : A ROWS.
+  /// - "COLUMNS" : A COLUMNS.
+  ///
+  /// [ranges] - The A1 notation of the values to retrieve.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchGetValuesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -727,10 +800,11 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchGetValuesResponse> batchGet(core.String spreadsheetId,
-      {core.String majorDimension,
+      {core.String dateTimeRenderOption,
+      core.String valueRenderOption,
+      core.String majorDimension,
       core.List<core.String> ranges,
-      core.String dateTimeRenderOption,
-      core.String valueRenderOption}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -741,17 +815,20 @@
     if (spreadsheetId == null) {
       throw new core.ArgumentError("Parameter spreadsheetId is required.");
     }
+    if (dateTimeRenderOption != null) {
+      _queryParams["dateTimeRenderOption"] = [dateTimeRenderOption];
+    }
+    if (valueRenderOption != null) {
+      _queryParams["valueRenderOption"] = [valueRenderOption];
+    }
     if (majorDimension != null) {
       _queryParams["majorDimension"] = [majorDimension];
     }
     if (ranges != null) {
       _queryParams["ranges"] = ranges;
     }
-    if (dateTimeRenderOption != null) {
-      _queryParams["dateTimeRenderOption"] = [dateTimeRenderOption];
-    }
-    if (valueRenderOption != null) {
-      _queryParams["valueRenderOption"] = [valueRenderOption];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v4/spreadsheets/' +
@@ -779,6 +856,9 @@
   ///
   /// [spreadsheetId] - The ID of the spreadsheet to retrieve data from.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchGetValuesByDataFilterResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -787,7 +867,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchGetValuesByDataFilterResponse> batchGetByDataFilter(
-      BatchGetValuesByDataFilterRequest request, core.String spreadsheetId) {
+      BatchGetValuesByDataFilterRequest request, core.String spreadsheetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -801,6 +882,9 @@
     if (spreadsheetId == null) {
       throw new core.ArgumentError("Parameter spreadsheetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/spreadsheets/' +
         commons.Escaper.ecapeVariable('$spreadsheetId') +
@@ -827,6 +911,9 @@
   ///
   /// [spreadsheetId] - The ID of the spreadsheet to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchUpdateValuesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -835,7 +922,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchUpdateValuesResponse> batchUpdate(
-      BatchUpdateValuesRequest request, core.String spreadsheetId) {
+      BatchUpdateValuesRequest request, core.String spreadsheetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -849,6 +937,9 @@
     if (spreadsheetId == null) {
       throw new core.ArgumentError("Parameter spreadsheetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/spreadsheets/' +
         commons.Escaper.ecapeVariable('$spreadsheetId') +
@@ -875,6 +966,9 @@
   ///
   /// [spreadsheetId] - The ID of the spreadsheet to update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchUpdateValuesByDataFilterResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -883,7 +977,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchUpdateValuesByDataFilterResponse> batchUpdateByDataFilter(
-      BatchUpdateValuesByDataFilterRequest request, core.String spreadsheetId) {
+      BatchUpdateValuesByDataFilterRequest request, core.String spreadsheetId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -897,6 +992,9 @@
     if (spreadsheetId == null) {
       throw new core.ArgumentError("Parameter spreadsheetId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/spreadsheets/' +
         commons.Escaper.ecapeVariable('$spreadsheetId') +
@@ -925,6 +1023,9 @@
   ///
   /// [range] - The A1 notation of the values to clear.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ClearValuesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -932,8 +1033,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ClearValuesResponse> clear(ClearValuesRequest request,
-      core.String spreadsheetId, core.String range) {
+  async.Future<ClearValuesResponse> clear(
+      ClearValuesRequest request, core.String spreadsheetId, core.String range,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -950,6 +1052,9 @@
     if (range == null) {
       throw new core.ArgumentError("Parameter range is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/spreadsheets/' +
         commons.Escaper.ecapeVariable('$spreadsheetId') +
@@ -975,6 +1080,18 @@
   ///
   /// [range] - The A1 notation of the values to retrieve.
   ///
+  /// [majorDimension] - The major dimension that results should use.
+  ///
+  /// For example, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,
+  /// then requesting `range=A1:B2,majorDimension=ROWS` will return
+  /// `[[1,2],[3,4]]`,
+  /// whereas requesting `range=A1:B2,majorDimension=COLUMNS` will return
+  /// `[[1,3],[2,4]]`.
+  /// Possible string values are:
+  /// - "DIMENSION_UNSPECIFIED" : A DIMENSION_UNSPECIFIED.
+  /// - "ROWS" : A ROWS.
+  /// - "COLUMNS" : A COLUMNS.
+  ///
   /// [dateTimeRenderOption] - How dates, times, and durations should be
   /// represented in the output.
   /// This is ignored if value_render_option is
@@ -992,17 +1109,8 @@
   /// - "UNFORMATTED_VALUE" : A UNFORMATTED_VALUE.
   /// - "FORMULA" : A FORMULA.
   ///
-  /// [majorDimension] - The major dimension that results should use.
-  ///
-  /// For example, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,
-  /// then requesting `range=A1:B2,majorDimension=ROWS` will return
-  /// `[[1,2],[3,4]]`,
-  /// whereas requesting `range=A1:B2,majorDimension=COLUMNS` will return
-  /// `[[1,3],[2,4]]`.
-  /// Possible string values are:
-  /// - "DIMENSION_UNSPECIFIED" : A DIMENSION_UNSPECIFIED.
-  /// - "ROWS" : A ROWS.
-  /// - "COLUMNS" : A COLUMNS.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ValueRange].
   ///
@@ -1012,9 +1120,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ValueRange> get(core.String spreadsheetId, core.String range,
-      {core.String dateTimeRenderOption,
+      {core.String majorDimension,
+      core.String dateTimeRenderOption,
       core.String valueRenderOption,
-      core.String majorDimension}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1028,14 +1137,17 @@
     if (range == null) {
       throw new core.ArgumentError("Parameter range is required.");
     }
+    if (majorDimension != null) {
+      _queryParams["majorDimension"] = [majorDimension];
+    }
     if (dateTimeRenderOption != null) {
       _queryParams["dateTimeRenderOption"] = [dateTimeRenderOption];
     }
     if (valueRenderOption != null) {
       _queryParams["valueRenderOption"] = [valueRenderOption];
     }
-    if (majorDimension != null) {
-      _queryParams["majorDimension"] = [majorDimension];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v4/spreadsheets/' +
@@ -1096,6 +1208,9 @@
   /// - "UNFORMATTED_VALUE" : A UNFORMATTED_VALUE.
   /// - "FORMULA" : A FORMULA.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UpdateValuesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1108,7 +1223,8 @@
       {core.String valueInputOption,
       core.String responseDateTimeRenderOption,
       core.bool includeValuesInResponse,
-      core.String responseValueRenderOption}) {
+      core.String responseValueRenderOption,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1139,6 +1255,9 @@
     if (responseValueRenderOption != null) {
       _queryParams["responseValueRenderOption"] = [responseValueRenderOption];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v4/spreadsheets/' +
         commons.Escaper.ecapeVariable('$spreadsheetId') +
@@ -7651,8 +7770,7 @@
   /// with an `=` character.
   core.String formula;
 
-  /// A name to use for the value. This is only used if formula was set.
-  /// Otherwise, the column name is used.
+  /// A name to use for the value.
   core.String name;
 
   /// The column offset of the source range that this value reads from.
diff --git a/generated/googleapis/lib/siteverification/v1.dart b/generated/googleapis/lib/siteverification/v1.dart
index 11ec0f2..3483ed6 100644
--- a/generated/googleapis/lib/siteverification/v1.dart
+++ b/generated/googleapis/lib/siteverification/v1.dart
@@ -47,12 +47,15 @@
   ///
   /// [id] - The id of a verified site or domain.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String id) {
+  async.Future delete(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -63,6 +66,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -83,6 +89,9 @@
   ///
   /// [id] - The id of a verified site or domain.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SiteVerificationWebResourceResource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -90,7 +99,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SiteVerificationWebResourceResource> get(core.String id) {
+  async.Future<SiteVerificationWebResourceResource> get(core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -101,6 +111,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'webResource/' + commons.Escaper.ecapeVariable('$id');
 
@@ -120,6 +133,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SiteVerificationWebResourceGettokenResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -128,7 +144,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SiteVerificationWebResourceGettokenResponse> getToken(
-      SiteVerificationWebResourceGettokenRequest request) {
+      SiteVerificationWebResourceGettokenRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -139,6 +156,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'token';
 
@@ -160,6 +180,9 @@
   ///
   /// [verificationMethod] - The method to use for verifying a site or domain.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SiteVerificationWebResourceResource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -169,7 +192,8 @@
   /// this method will complete with the same error.
   async.Future<SiteVerificationWebResourceResource> insert(
       SiteVerificationWebResourceResource request,
-      core.String verificationMethod) {
+      core.String verificationMethod,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -184,6 +208,9 @@
       throw new core.ArgumentError("Parameter verificationMethod is required.");
     }
     _queryParams["verificationMethod"] = [verificationMethod];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'webResource';
 
@@ -201,6 +228,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SiteVerificationWebResourceListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -208,7 +238,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SiteVerificationWebResourceListResponse> list() {
+  async.Future<SiteVerificationWebResourceListResponse> list(
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -216,6 +247,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'webResource';
 
     var _response = _requester.request(_url, "GET",
@@ -237,6 +272,9 @@
   ///
   /// [id] - The id of a verified site or domain.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SiteVerificationWebResourceResource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -245,7 +283,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SiteVerificationWebResourceResource> patch(
-      SiteVerificationWebResourceResource request, core.String id) {
+      SiteVerificationWebResourceResource request, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -259,6 +298,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'webResource/' + commons.Escaper.ecapeVariable('$id');
 
@@ -280,6 +322,9 @@
   ///
   /// [id] - The id of a verified site or domain.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SiteVerificationWebResourceResource].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -288,7 +333,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SiteVerificationWebResourceResource> update(
-      SiteVerificationWebResourceResource request, core.String id) {
+      SiteVerificationWebResourceResource request, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -302,6 +348,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'webResource/' + commons.Escaper.ecapeVariable('$id');
 
diff --git a/generated/googleapis/lib/slides/v1.dart b/generated/googleapis/lib/slides/v1.dart
index 0c6adcf..168c624 100644
--- a/generated/googleapis/lib/slides/v1.dart
+++ b/generated/googleapis/lib/slides/v1.dart
@@ -87,6 +87,9 @@
   ///
   /// [presentationId] - The presentation to apply the updates to.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchUpdatePresentationResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -95,7 +98,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchUpdatePresentationResponse> batchUpdate(
-      BatchUpdatePresentationRequest request, core.String presentationId) {
+      BatchUpdatePresentationRequest request, core.String presentationId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -109,6 +113,9 @@
     if (presentationId == null) {
       throw new core.ArgumentError("Parameter presentationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/presentations/' +
         commons.Escaper.ecapeVariable('$presentationId') +
@@ -132,6 +139,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Presentation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -139,7 +149,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Presentation> create(Presentation request) {
+  async.Future<Presentation> create(Presentation request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -150,6 +161,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/presentations';
 
@@ -169,6 +183,9 @@
   /// [presentationId] - The ID of the presentation to retrieve.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Presentation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -176,7 +193,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Presentation> get(core.String presentationId) {
+  async.Future<Presentation> get(core.String presentationId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -187,6 +205,9 @@
     if (presentationId == null) {
       throw new core.ArgumentError("Parameter presentationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/presentations/' +
         commons.Escaper.ecapeVariableReserved('$presentationId');
@@ -215,6 +236,9 @@
   ///
   /// [pageObjectId] - The object ID of the page to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Page].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -222,7 +246,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Page> get(core.String presentationId, core.String pageObjectId) {
+  async.Future<Page> get(core.String presentationId, core.String pageObjectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -236,6 +261,9 @@
     if (pageObjectId == null) {
       throw new core.ArgumentError("Parameter pageObjectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/presentations/' +
         commons.Escaper.ecapeVariable('$presentationId') +
@@ -275,6 +303,9 @@
   /// Possible string values are:
   /// - "PNG" : A PNG.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Thumbnail].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -285,7 +316,8 @@
   async.Future<Thumbnail> getThumbnail(
       core.String presentationId, core.String pageObjectId,
       {core.String thumbnailProperties_thumbnailSize,
-      core.String thumbnailProperties_mimeType}) {
+      core.String thumbnailProperties_mimeType,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -309,6 +341,9 @@
         thumbnailProperties_mimeType
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/presentations/' +
         commons.Escaper.ecapeVariable('$presentationId') +
@@ -2153,6 +2188,76 @@
   }
 }
 
+/// Groups objects to create an object group. For example, groups PageElements
+/// to create a Group on the same page as all the children.
+class GroupObjectsRequest {
+  /// The object IDs of the objects to group.
+  ///
+  /// Only page elements can be grouped. There should be at least two page
+  /// elements on the same page that are not already in another group. Some page
+  /// elements, such as videos, tables and placeholder shapes cannot be grouped.
+  core.List<core.String> childrenObjectIds;
+
+  /// A user-supplied object ID for the group to be created.
+  ///
+  /// If you specify an ID, it must be unique among all pages and page elements
+  /// in the presentation. The ID must start with an alphanumeric character or
+  /// an
+  /// underscore (matches regex `[a-zA-Z0-9_]`); remaining characters
+  /// may include those as well as a hyphen or colon (matches regex
+  /// `[a-zA-Z0-9_-:]`).
+  /// The length of the ID must not be less than 5 or greater than 50.
+  ///
+  /// If you don't specify an ID, a unique one is generated.
+  core.String groupObjectId;
+
+  GroupObjectsRequest();
+
+  GroupObjectsRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("childrenObjectIds")) {
+      childrenObjectIds = _json["childrenObjectIds"];
+    }
+    if (_json.containsKey("groupObjectId")) {
+      groupObjectId = _json["groupObjectId"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (childrenObjectIds != null) {
+      _json["childrenObjectIds"] = childrenObjectIds;
+    }
+    if (groupObjectId != null) {
+      _json["groupObjectId"] = groupObjectId;
+    }
+    return _json;
+  }
+}
+
+/// The result of grouping objects.
+class GroupObjectsResponse {
+  /// The object ID of the created group.
+  core.String objectId;
+
+  GroupObjectsResponse();
+
+  GroupObjectsResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("objectId")) {
+      objectId = _json["objectId"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (objectId != null) {
+      _json["objectId"] = objectId;
+    }
+    return _json;
+  }
+}
+
 /// A PageElement kind representing an
 /// image.
 class Image {
@@ -2206,7 +2311,7 @@
   /// The hyperlink destination of the image. If unset, there is no link.
   Link link;
 
-  /// The outline of the image. If not set, the the image has no outline.
+  /// The outline of the image. If not set, the image has no outline.
   Outline outline;
 
   /// The recolor effect of the image. If not set, the image is not recolored.
@@ -2955,6 +3060,43 @@
   }
 }
 
+/// Merges cells in a Table.
+class MergeTableCellsRequest {
+  /// The object ID of the table.
+  core.String objectId;
+
+  /// The table range specifying which cells of the table to merge.
+  ///
+  /// Any text in the cells being merged will be concatenated and stored in the
+  /// upper-left ("head") cell of the range. If the range is non-rectangular
+  /// (which can occur in some cases where the range covers cells that are
+  /// already merged), a 400 bad request error is returned.
+  TableRange tableRange;
+
+  MergeTableCellsRequest();
+
+  MergeTableCellsRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("objectId")) {
+      objectId = _json["objectId"];
+    }
+    if (_json.containsKey("tableRange")) {
+      tableRange = new TableRange.fromJson(_json["tableRange"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (objectId != null) {
+      _json["objectId"] = objectId;
+    }
+    if (tableRange != null) {
+      _json["tableRange"] = (tableRange).toJson();
+    }
+    return _json;
+  }
+}
+
 /// Contains properties describing the look and feel of a list bullet at a given
 /// level of nesting.
 class NestingLevel {
@@ -4501,6 +4643,9 @@
   /// Duplicates a slide or page element.
   DuplicateObjectRequest duplicateObject;
 
+  /// Groups objects, such as page elements.
+  GroupObjectsRequest groupObjects;
+
   /// Inserts columns into a table.
   InsertTableColumnsRequest insertTableColumns;
 
@@ -4510,6 +4655,9 @@
   /// Inserts text into a shape or table cell.
   InsertTextRequest insertText;
 
+  /// Merges cells in a Table.
+  MergeTableCellsRequest mergeTableCells;
+
   /// Refreshes a Google Sheets chart.
   RefreshSheetsChartRequest refreshSheetsChart;
 
@@ -4522,6 +4670,12 @@
   /// Replaces all instances of specified text.
   ReplaceAllTextRequest replaceAllText;
 
+  /// Ungroups objects, such as groups.
+  UngroupObjectsRequest ungroupObjects;
+
+  /// Unmerges cells in a Table.
+  UnmergeTableCellsRequest unmergeTableCells;
+
   /// Updates the properties of an Image.
   UpdateImagePropertiesRequest updateImageProperties;
 
@@ -4543,9 +4697,19 @@
   /// Updates the position of a set of slides in the presentation.
   UpdateSlidesPositionRequest updateSlidesPosition;
 
+  /// Updates the properties of the table borders in a Table.
+  UpdateTableBorderPropertiesRequest updateTableBorderProperties;
+
   /// Updates the properties of a TableCell.
   UpdateTableCellPropertiesRequest updateTableCellProperties;
 
+  /// Updates the properties of a Table
+  /// column.
+  UpdateTableColumnPropertiesRequest updateTableColumnProperties;
+
+  /// Updates the properties of a Table row.
+  UpdateTableRowPropertiesRequest updateTableRowProperties;
+
   /// Updates the styling of text within a Shape or Table.
   UpdateTextStyleRequest updateTextStyle;
 
@@ -4603,6 +4767,9 @@
       duplicateObject =
           new DuplicateObjectRequest.fromJson(_json["duplicateObject"]);
     }
+    if (_json.containsKey("groupObjects")) {
+      groupObjects = new GroupObjectsRequest.fromJson(_json["groupObjects"]);
+    }
     if (_json.containsKey("insertTableColumns")) {
       insertTableColumns =
           new InsertTableColumnsRequest.fromJson(_json["insertTableColumns"]);
@@ -4614,6 +4781,10 @@
     if (_json.containsKey("insertText")) {
       insertText = new InsertTextRequest.fromJson(_json["insertText"]);
     }
+    if (_json.containsKey("mergeTableCells")) {
+      mergeTableCells =
+          new MergeTableCellsRequest.fromJson(_json["mergeTableCells"]);
+    }
     if (_json.containsKey("refreshSheetsChart")) {
       refreshSheetsChart =
           new RefreshSheetsChartRequest.fromJson(_json["refreshSheetsChart"]);
@@ -4631,6 +4802,14 @@
       replaceAllText =
           new ReplaceAllTextRequest.fromJson(_json["replaceAllText"]);
     }
+    if (_json.containsKey("ungroupObjects")) {
+      ungroupObjects =
+          new UngroupObjectsRequest.fromJson(_json["ungroupObjects"]);
+    }
+    if (_json.containsKey("unmergeTableCells")) {
+      unmergeTableCells =
+          new UnmergeTableCellsRequest.fromJson(_json["unmergeTableCells"]);
+    }
     if (_json.containsKey("updateImageProperties")) {
       updateImageProperties = new UpdateImagePropertiesRequest.fromJson(
           _json["updateImageProperties"]);
@@ -4660,10 +4839,24 @@
       updateSlidesPosition = new UpdateSlidesPositionRequest.fromJson(
           _json["updateSlidesPosition"]);
     }
+    if (_json.containsKey("updateTableBorderProperties")) {
+      updateTableBorderProperties =
+          new UpdateTableBorderPropertiesRequest.fromJson(
+              _json["updateTableBorderProperties"]);
+    }
     if (_json.containsKey("updateTableCellProperties")) {
       updateTableCellProperties = new UpdateTableCellPropertiesRequest.fromJson(
           _json["updateTableCellProperties"]);
     }
+    if (_json.containsKey("updateTableColumnProperties")) {
+      updateTableColumnProperties =
+          new UpdateTableColumnPropertiesRequest.fromJson(
+              _json["updateTableColumnProperties"]);
+    }
+    if (_json.containsKey("updateTableRowProperties")) {
+      updateTableRowProperties = new UpdateTableRowPropertiesRequest.fromJson(
+          _json["updateTableRowProperties"]);
+    }
     if (_json.containsKey("updateTextStyle")) {
       updateTextStyle =
           new UpdateTextStyleRequest.fromJson(_json["updateTextStyle"]);
@@ -4719,6 +4912,9 @@
     if (duplicateObject != null) {
       _json["duplicateObject"] = (duplicateObject).toJson();
     }
+    if (groupObjects != null) {
+      _json["groupObjects"] = (groupObjects).toJson();
+    }
     if (insertTableColumns != null) {
       _json["insertTableColumns"] = (insertTableColumns).toJson();
     }
@@ -4728,6 +4924,9 @@
     if (insertText != null) {
       _json["insertText"] = (insertText).toJson();
     }
+    if (mergeTableCells != null) {
+      _json["mergeTableCells"] = (mergeTableCells).toJson();
+    }
     if (refreshSheetsChart != null) {
       _json["refreshSheetsChart"] = (refreshSheetsChart).toJson();
     }
@@ -4741,6 +4940,12 @@
     if (replaceAllText != null) {
       _json["replaceAllText"] = (replaceAllText).toJson();
     }
+    if (ungroupObjects != null) {
+      _json["ungroupObjects"] = (ungroupObjects).toJson();
+    }
+    if (unmergeTableCells != null) {
+      _json["unmergeTableCells"] = (unmergeTableCells).toJson();
+    }
     if (updateImageProperties != null) {
       _json["updateImageProperties"] = (updateImageProperties).toJson();
     }
@@ -4763,9 +4968,20 @@
     if (updateSlidesPosition != null) {
       _json["updateSlidesPosition"] = (updateSlidesPosition).toJson();
     }
+    if (updateTableBorderProperties != null) {
+      _json["updateTableBorderProperties"] =
+          (updateTableBorderProperties).toJson();
+    }
     if (updateTableCellProperties != null) {
       _json["updateTableCellProperties"] = (updateTableCellProperties).toJson();
     }
+    if (updateTableColumnProperties != null) {
+      _json["updateTableColumnProperties"] =
+          (updateTableColumnProperties).toJson();
+    }
+    if (updateTableRowProperties != null) {
+      _json["updateTableRowProperties"] = (updateTableRowProperties).toJson();
+    }
     if (updateTextStyle != null) {
       _json["updateTextStyle"] = (updateTextStyle).toJson();
     }
@@ -4802,6 +5018,9 @@
   /// The result of duplicating an object.
   DuplicateObjectResponse duplicateObject;
 
+  /// The result of grouping objects.
+  GroupObjectsResponse groupObjects;
+
   /// The result of replacing all shapes matching some criteria with an
   /// image.
   ReplaceAllShapesWithImageResponse replaceAllShapesWithImage;
@@ -4842,6 +5061,9 @@
       duplicateObject =
           new DuplicateObjectResponse.fromJson(_json["duplicateObject"]);
     }
+    if (_json.containsKey("groupObjects")) {
+      groupObjects = new GroupObjectsResponse.fromJson(_json["groupObjects"]);
+    }
     if (_json.containsKey("replaceAllShapesWithImage")) {
       replaceAllShapesWithImage =
           new ReplaceAllShapesWithImageResponse.fromJson(
@@ -4885,6 +5107,9 @@
     if (duplicateObject != null) {
       _json["duplicateObject"] = (duplicateObject).toJson();
     }
+    if (groupObjects != null) {
+      _json["groupObjects"] = (groupObjects).toJson();
+    }
     if (replaceAllShapesWithImage != null) {
       _json["replaceAllShapesWithImage"] = (replaceAllShapesWithImage).toJson();
     }
@@ -5455,7 +5680,7 @@
 class ShapeBackgroundFill {
   /// The background fill property state.
   ///
-  /// Updating the the fill on a shape will implicitly update this field to
+  /// Updating the fill on a shape will implicitly update this field to
   /// `RENDERED`, unless another value is specified in the same request. To
   /// have no fill on a shape, set this field to `NOT_RENDERED`. In this case,
   /// any other fill fields set in the same request will be ignored.
@@ -5867,6 +6092,14 @@
   /// Number of columns in the table.
   core.int columns;
 
+  /// Properties of horizontal cell borders.
+  ///
+  /// A table's horizontal cell borders are represented as a grid. The grid has
+  /// one more row than the number of rows in the table and the same number of
+  /// columns as the table. For example, if the table is 3 x 3, its horizontal
+  /// borders will be represented as a grid with 4 rows and 3 columns.
+  core.List<TableBorderRow> horizontalBorderRows;
+
   /// Number of rows in the table.
   core.int rows;
 
@@ -5880,12 +6113,26 @@
   /// than 1.
   core.List<TableRow> tableRows;
 
+  /// Properties of vertical cell borders.
+  ///
+  /// A table's vertical cell borders are represented as a grid. The grid has
+  /// the
+  /// same number of rows as the table and one more column than the number of
+  /// columns in the table. For example, if the table is 3 x 3, its vertical
+  /// borders will be represented as a grid with 3 rows and 4 columns.
+  core.List<TableBorderRow> verticalBorderRows;
+
   Table();
 
   Table.fromJson(core.Map _json) {
     if (_json.containsKey("columns")) {
       columns = _json["columns"];
     }
+    if (_json.containsKey("horizontalBorderRows")) {
+      horizontalBorderRows = _json["horizontalBorderRows"]
+          .map((value) => new TableBorderRow.fromJson(value))
+          .toList();
+    }
     if (_json.containsKey("rows")) {
       rows = _json["rows"];
     }
@@ -5899,6 +6146,11 @@
           .map((value) => new TableRow.fromJson(value))
           .toList();
     }
+    if (_json.containsKey("verticalBorderRows")) {
+      verticalBorderRows = _json["verticalBorderRows"]
+          .map((value) => new TableBorderRow.fromJson(value))
+          .toList();
+    }
   }
 
   core.Map<core.String, core.Object> toJson() {
@@ -5907,6 +6159,10 @@
     if (columns != null) {
       _json["columns"] = columns;
     }
+    if (horizontalBorderRows != null) {
+      _json["horizontalBorderRows"] =
+          horizontalBorderRows.map((value) => (value).toJson()).toList();
+    }
     if (rows != null) {
       _json["rows"] = rows;
     }
@@ -5917,6 +6173,153 @@
     if (tableRows != null) {
       _json["tableRows"] = tableRows.map((value) => (value).toJson()).toList();
     }
+    if (verticalBorderRows != null) {
+      _json["verticalBorderRows"] =
+          verticalBorderRows.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// The properties of each border cell.
+class TableBorderCell {
+  /// The location of the border within the border table.
+  TableCellLocation location;
+
+  /// The border properties.
+  TableBorderProperties tableBorderProperties;
+
+  TableBorderCell();
+
+  TableBorderCell.fromJson(core.Map _json) {
+    if (_json.containsKey("location")) {
+      location = new TableCellLocation.fromJson(_json["location"]);
+    }
+    if (_json.containsKey("tableBorderProperties")) {
+      tableBorderProperties =
+          new TableBorderProperties.fromJson(_json["tableBorderProperties"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (location != null) {
+      _json["location"] = (location).toJson();
+    }
+    if (tableBorderProperties != null) {
+      _json["tableBorderProperties"] = (tableBorderProperties).toJson();
+    }
+    return _json;
+  }
+}
+
+/// The fill of the border.
+class TableBorderFill {
+  /// Solid fill.
+  SolidFill solidFill;
+
+  TableBorderFill();
+
+  TableBorderFill.fromJson(core.Map _json) {
+    if (_json.containsKey("solidFill")) {
+      solidFill = new SolidFill.fromJson(_json["solidFill"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (solidFill != null) {
+      _json["solidFill"] = (solidFill).toJson();
+    }
+    return _json;
+  }
+}
+
+/// The border styling properties of the
+/// TableBorderCell.
+class TableBorderProperties {
+  /// The dash style of the border.
+  /// Possible string values are:
+  /// - "DASH_STYLE_UNSPECIFIED" : Unspecified dash style.
+  /// - "SOLID" : Solid line. Corresponds to ECMA-376 ST_PresetLineDashVal value
+  /// 'solid'.
+  /// This is the default dash style.
+  /// - "DOT" : Dotted line. Corresponds to ECMA-376 ST_PresetLineDashVal value
+  /// 'dot'.
+  /// - "DASH" : Dashed line. Corresponds to ECMA-376 ST_PresetLineDashVal value
+  /// 'dash'.
+  /// - "DASH_DOT" : Alternating dashes and dots. Corresponds to ECMA-376
+  /// ST_PresetLineDashVal
+  /// value 'dashDot'.
+  /// - "LONG_DASH" : Line with large dashes. Corresponds to ECMA-376
+  /// ST_PresetLineDashVal
+  /// value 'lgDash'.
+  /// - "LONG_DASH_DOT" : Alternating large dashes and dots. Corresponds to
+  /// ECMA-376
+  /// ST_PresetLineDashVal value 'lgDashDot'.
+  core.String dashStyle;
+
+  /// The fill of the table border.
+  TableBorderFill tableBorderFill;
+
+  /// The thickness of the border.
+  Dimension weight;
+
+  TableBorderProperties();
+
+  TableBorderProperties.fromJson(core.Map _json) {
+    if (_json.containsKey("dashStyle")) {
+      dashStyle = _json["dashStyle"];
+    }
+    if (_json.containsKey("tableBorderFill")) {
+      tableBorderFill = new TableBorderFill.fromJson(_json["tableBorderFill"]);
+    }
+    if (_json.containsKey("weight")) {
+      weight = new Dimension.fromJson(_json["weight"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (dashStyle != null) {
+      _json["dashStyle"] = dashStyle;
+    }
+    if (tableBorderFill != null) {
+      _json["tableBorderFill"] = (tableBorderFill).toJson();
+    }
+    if (weight != null) {
+      _json["weight"] = (weight).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Contents of each border row in a table.
+class TableBorderRow {
+  /// Properties of each border cell. When a border's adjacent table cells are
+  /// merged, it is not included in the response.
+  core.List<TableBorderCell> tableBorderCells;
+
+  TableBorderRow();
+
+  TableBorderRow.fromJson(core.Map _json) {
+    if (_json.containsKey("tableBorderCells")) {
+      tableBorderCells = _json["tableBorderCells"]
+          .map((value) => new TableBorderCell.fromJson(value))
+          .toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (tableBorderCells != null) {
+      _json["tableBorderCells"] =
+          tableBorderCells.map((value) => (value).toJson()).toList();
+    }
     return _json;
   }
 }
@@ -5985,7 +6388,7 @@
 class TableCellBackgroundFill {
   /// The background fill property state.
   ///
-  /// Updating the the fill on a table cell will implicitly update this field
+  /// Updating the fill on a table cell will implicitly update this field
   /// to `RENDERED`, unless another value is specified in the same request. To
   /// have no fill on a table cell, set this field to `NOT_RENDERED`. In this
   /// case, any other fill fields set in the same request will be ignored.
@@ -6184,6 +6587,9 @@
   /// the number of columns of the entire table.
   core.List<TableCell> tableCells;
 
+  /// Properties of the row.
+  TableRowProperties tableRowProperties;
+
   TableRow();
 
   TableRow.fromJson(core.Map _json) {
@@ -6195,6 +6601,10 @@
           .map((value) => new TableCell.fromJson(value))
           .toList();
     }
+    if (_json.containsKey("tableRowProperties")) {
+      tableRowProperties =
+          new TableRowProperties.fromJson(_json["tableRowProperties"]);
+    }
   }
 
   core.Map<core.String, core.Object> toJson() {
@@ -6207,6 +6617,35 @@
       _json["tableCells"] =
           tableCells.map((value) => (value).toJson()).toList();
     }
+    if (tableRowProperties != null) {
+      _json["tableRowProperties"] = (tableRowProperties).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Properties of each row in a table.
+class TableRowProperties {
+  /// Minimum height of the row. The row will be rendered in the Slides editor
+  /// at
+  /// a height equal to or greater than this value in order to show all the text
+  /// in the row's cell(s).
+  Dimension minRowHeight;
+
+  TableRowProperties();
+
+  TableRowProperties.fromJson(core.Map _json) {
+    if (_json.containsKey("minRowHeight")) {
+      minRowHeight = new Dimension.fromJson(_json["minRowHeight"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (minRowHeight != null) {
+      _json["minRowHeight"] = (minRowHeight).toJson();
+    }
     return _json;
   }
 }
@@ -6670,6 +7109,73 @@
   }
 }
 
+/// Ungroups objects, such as groups.
+class UngroupObjectsRequest {
+  /// The object IDs of the objects to ungroup.
+  ///
+  /// Only groups that are not inside other
+  /// groups can be ungrouped. All the groups
+  /// should be on the same page. The group itself is deleted. The visual sizes
+  /// and positions of all the children are preserved.
+  core.List<core.String> objectIds;
+
+  UngroupObjectsRequest();
+
+  UngroupObjectsRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("objectIds")) {
+      objectIds = _json["objectIds"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (objectIds != null) {
+      _json["objectIds"] = objectIds;
+    }
+    return _json;
+  }
+}
+
+/// Unmerges cells in a Table.
+class UnmergeTableCellsRequest {
+  /// The object ID of the table.
+  core.String objectId;
+
+  /// The table range specifying which cells of the table to unmerge.
+  ///
+  /// All merged cells in this range will be unmerged, and cells that are
+  /// already
+  /// unmerged will not be affected. If the range has no merged cells, the
+  /// request will do nothing. If there is text in any of the merged cells, the
+  /// text will remain in the upper-left ("head") cell of the resulting block of
+  /// unmerged cells.
+  TableRange tableRange;
+
+  UnmergeTableCellsRequest();
+
+  UnmergeTableCellsRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("objectId")) {
+      objectId = _json["objectId"];
+    }
+    if (_json.containsKey("tableRange")) {
+      tableRange = new TableRange.fromJson(_json["tableRange"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (objectId != null) {
+      _json["objectId"] = objectId;
+    }
+    if (tableRange != null) {
+      _json["tableRange"] = (tableRange).toJson();
+    }
+    return _json;
+  }
+}
+
 /// Update the properties of an Image.
 class UpdateImagePropertiesRequest {
   /// The fields that should be updated.
@@ -7035,6 +7541,90 @@
   }
 }
 
+/// Updates the properties of the table borders in a Table.
+class UpdateTableBorderPropertiesRequest {
+  /// The border position in the table range the updates should apply to. If a
+  /// border position is not specified, the updates will apply to all borders in
+  /// the table range.
+  /// Possible string values are:
+  /// - "ALL" : All borders in the range.
+  /// - "BOTTOM" : Borders at the bottom of the range.
+  /// - "INNER" : Borders on the inside of the range.
+  /// - "INNER_HORIZONTAL" : Horizontal borders on the inside of the range.
+  /// - "INNER_VERTICAL" : Vertical borders on the inside of the range.
+  /// - "LEFT" : Borders at the left of the range.
+  /// - "OUTER" : Borders along the outside of the range.
+  /// - "RIGHT" : Borders at the right of the range.
+  /// - "TOP" : Borders at the top of the range.
+  core.String borderPosition;
+
+  /// The fields that should be updated.
+  ///
+  /// At least one field must be specified. The root `tableBorderProperties` is
+  /// implied and should not be specified. A single `"*"` can be used as
+  /// short-hand for listing every field.
+  ///
+  /// For example to update the table border solid fill color, set
+  /// `fields` to `"tableBorderFill.solidFill.color"`.
+  ///
+  /// To reset a property to its default value, include its field name in the
+  /// field mask but leave the field itself unset.
+  core.String fields;
+
+  /// The object ID of the table.
+  core.String objectId;
+
+  /// The table border properties to update.
+  TableBorderProperties tableBorderProperties;
+
+  /// The table range representing the subset of the table to which the updates
+  /// are applied. If a table range is not specified, the updates will apply to
+  /// the entire table.
+  TableRange tableRange;
+
+  UpdateTableBorderPropertiesRequest();
+
+  UpdateTableBorderPropertiesRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("borderPosition")) {
+      borderPosition = _json["borderPosition"];
+    }
+    if (_json.containsKey("fields")) {
+      fields = _json["fields"];
+    }
+    if (_json.containsKey("objectId")) {
+      objectId = _json["objectId"];
+    }
+    if (_json.containsKey("tableBorderProperties")) {
+      tableBorderProperties =
+          new TableBorderProperties.fromJson(_json["tableBorderProperties"]);
+    }
+    if (_json.containsKey("tableRange")) {
+      tableRange = new TableRange.fromJson(_json["tableRange"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (borderPosition != null) {
+      _json["borderPosition"] = borderPosition;
+    }
+    if (fields != null) {
+      _json["fields"] = fields;
+    }
+    if (objectId != null) {
+      _json["objectId"] = objectId;
+    }
+    if (tableBorderProperties != null) {
+      _json["tableBorderProperties"] = (tableBorderProperties).toJson();
+    }
+    if (tableRange != null) {
+      _json["tableRange"] = (tableRange).toJson();
+    }
+    return _json;
+  }
+}
+
 /// Update the properties of a TableCell.
 class UpdateTableCellPropertiesRequest {
   /// The fields that should be updated.
@@ -7098,6 +7688,132 @@
   }
 }
 
+/// Updates the properties of a Table column.
+class UpdateTableColumnPropertiesRequest {
+  /// The list of zero-based indices specifying which columns to update. If no
+  /// indices are provided, all columns in the table will be updated.
+  core.List<core.int> columnIndices;
+
+  /// The fields that should be updated.
+  ///
+  /// At least one field must be specified. The root `tableColumnProperties` is
+  /// implied and should not be specified. A single `"*"` can be used as
+  /// short-hand for listing every field.
+  ///
+  /// For example to update the column width, set `fields` to `"column_width"`.
+  ///
+  /// If '"column_width"' is included in the field mask but the property is left
+  /// unset, the column width will default to 406,400 EMU (32 points).
+  core.String fields;
+
+  /// The object ID of the table.
+  core.String objectId;
+
+  /// The table column properties to update.
+  ///
+  /// If the value of `table_column_properties#column_width` in the request is
+  /// less than 406,400 EMU (32 points), a 400 bad request error is returned.
+  TableColumnProperties tableColumnProperties;
+
+  UpdateTableColumnPropertiesRequest();
+
+  UpdateTableColumnPropertiesRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("columnIndices")) {
+      columnIndices = _json["columnIndices"];
+    }
+    if (_json.containsKey("fields")) {
+      fields = _json["fields"];
+    }
+    if (_json.containsKey("objectId")) {
+      objectId = _json["objectId"];
+    }
+    if (_json.containsKey("tableColumnProperties")) {
+      tableColumnProperties =
+          new TableColumnProperties.fromJson(_json["tableColumnProperties"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (columnIndices != null) {
+      _json["columnIndices"] = columnIndices;
+    }
+    if (fields != null) {
+      _json["fields"] = fields;
+    }
+    if (objectId != null) {
+      _json["objectId"] = objectId;
+    }
+    if (tableColumnProperties != null) {
+      _json["tableColumnProperties"] = (tableColumnProperties).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Updates the properties of a Table row.
+class UpdateTableRowPropertiesRequest {
+  /// The fields that should be updated.
+  ///
+  /// At least one field must be specified. The root `tableRowProperties` is
+  /// implied and should not be specified. A single `"*"` can be used as
+  /// short-hand for listing every field.
+  ///
+  /// For example to update the minimum row height, set `fields` to
+  /// `"min_row_height"`.
+  ///
+  /// If '"min_row_height"' is included in the field mask but the property is
+  /// left unset, the minimum row height will default to 0.
+  core.String fields;
+
+  /// The object ID of the table.
+  core.String objectId;
+
+  /// The list of zero-based indices specifying which rows to update. If no
+  /// indices are provided, all rows in the table will be updated.
+  core.List<core.int> rowIndices;
+
+  /// The table row properties to update.
+  TableRowProperties tableRowProperties;
+
+  UpdateTableRowPropertiesRequest();
+
+  UpdateTableRowPropertiesRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("fields")) {
+      fields = _json["fields"];
+    }
+    if (_json.containsKey("objectId")) {
+      objectId = _json["objectId"];
+    }
+    if (_json.containsKey("rowIndices")) {
+      rowIndices = _json["rowIndices"];
+    }
+    if (_json.containsKey("tableRowProperties")) {
+      tableRowProperties =
+          new TableRowProperties.fromJson(_json["tableRowProperties"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (fields != null) {
+      _json["fields"] = fields;
+    }
+    if (objectId != null) {
+      _json["objectId"] = objectId;
+    }
+    if (rowIndices != null) {
+      _json["rowIndices"] = rowIndices;
+    }
+    if (tableRowProperties != null) {
+      _json["tableRowProperties"] = (tableRowProperties).toJson();
+    }
+    return _json;
+  }
+}
+
 /// Update the styling of text in a Shape or
 /// Table.
 class UpdateTextStyleRequest {
diff --git a/generated/googleapis/lib/sourcerepo/v1.dart b/generated/googleapis/lib/sourcerepo/v1.dart
index 4a2ee2a..bd792ef 100644
--- a/generated/googleapis/lib/sourcerepo/v1.dart
+++ b/generated/googleapis/lib/sourcerepo/v1.dart
@@ -70,6 +70,9 @@
   /// `projects/<project>`.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Repo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -77,7 +80,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Repo> create(Repo request, core.String parent) {
+  async.Future<Repo> create(Repo request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -91,6 +95,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/repos';
 
@@ -111,6 +118,9 @@
   /// `projects/<project>/repos/<repo>`.
   /// Value must have pattern "^projects/[^/]+/repos/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -118,7 +128,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -129,6 +139,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -149,6 +162,9 @@
   /// `projects/<project>/repos/<repo>`.
   /// Value must have pattern "^projects/[^/]+/repos/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Repo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -156,7 +172,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Repo> get(core.String name) {
+  async.Future<Repo> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -167,6 +183,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -190,6 +209,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/repos/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -197,7 +219,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Policy> getIamPolicy(core.String resource) {
+  async.Future<Policy> getIamPolicy(core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -208,6 +231,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -239,6 +265,9 @@
   /// [pageSize] - Maximum number of repositories to return; between 1 and 500.
   /// If not set or zero, defaults to 100 at the server.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListReposResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -247,7 +276,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListReposResponse> list(core.String name,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -264,6 +293,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + '/repos';
 
@@ -288,6 +320,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/repos/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -296,7 +331,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -310,6 +346,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -337,6 +376,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/repos/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -345,7 +387,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -359,6 +402,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -724,7 +770,7 @@
   core.String url;
 
   /// ID of the webhook listening to updates to trigger mirroring.
-  /// Removing this webook from the other hosting service will stop
+  /// Removing this webhook from the other hosting service will stop
   /// Google Cloud Source Repositories from receiving notifications,
   /// and thereby disabling mirroring.
   core.String webhookId;
diff --git a/generated/googleapis/lib/spanner/v1.dart b/generated/googleapis/lib/spanner/v1.dart
index 88bac91..f3793e2 100644
--- a/generated/googleapis/lib/spanner/v1.dart
+++ b/generated/googleapis/lib/spanner/v1.dart
@@ -66,6 +66,9 @@
   /// the form `projects/<project>/instanceConfigs/<config>`.
   /// Value must have pattern "^projects/[^/]+/instanceConfigs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -73,7 +76,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<InstanceConfig> get(core.String name) {
+  async.Future<InstanceConfig> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -84,6 +87,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -114,6 +120,9 @@
   /// response. If 0 or
   /// less, defaults to the server's maximum allowed page size.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListInstanceConfigsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -122,7 +131,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListInstanceConfigsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -139,6 +148,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -210,6 +222,9 @@
   /// are of the form `projects/<project>`.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -218,7 +233,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> create(
-      CreateInstanceRequest request, core.String parent) {
+      CreateInstanceRequest request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -232,6 +248,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/instances';
@@ -264,6 +283,9 @@
   /// `projects/<project>/instances/<instance>`
   /// Value must have pattern "^projects/[^/]+/instances/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -271,7 +293,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -282,6 +304,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -303,6 +328,9 @@
   /// `projects/<project>/instances/<instance>`.
   /// Value must have pattern "^projects/[^/]+/instances/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Instance].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -310,7 +338,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Instance> get(core.String name) {
+  async.Future<Instance> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -321,6 +349,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -349,6 +380,9 @@
   /// ID>/databases/<database ID>` for database resources.
   /// Value must have pattern "^projects/[^/]+/instances/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -357,7 +391,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> getIamPolicy(
-      GetIamPolicyRequest request, core.String resource) {
+      GetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -371,6 +406,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -394,6 +432,10 @@
   /// requested. Values are of the form `projects/<project>`.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [pageSize] - Number of instances to be returned in the response. If 0 or
+  /// less, defaults
+  /// to the server's maximum allowed page size.
+  ///
   /// [filter] - An expression for filtering the results of the request. Filter
   /// rules are
   /// case insensitive. The fields eligible for filtering are:
@@ -419,9 +461,8 @@
   /// next_page_token from a
   /// previous ListInstancesResponse.
   ///
-  /// [pageSize] - Number of instances to be returned in the response. If 0 or
-  /// less, defaults
-  /// to the server's maximum allowed page size.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListInstancesResponse].
   ///
@@ -431,7 +472,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListInstancesResponse> list(core.String parent,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.int pageSize,
+      core.String filter,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -442,14 +486,17 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
     if (filter != null) {
       _queryParams["filter"] = [filter];
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url =
@@ -516,6 +563,9 @@
   /// segment of the name must be between 6 and 30 characters in length.
   /// Value must have pattern "^projects/[^/]+/instances/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -523,8 +573,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> patch(
-      UpdateInstanceRequest request, core.String name) {
+  async.Future<Operation> patch(UpdateInstanceRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -538,6 +588,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -566,6 +619,9 @@
   /// ID>/databases/<database ID>` for databases resources.
   /// Value must have pattern "^projects/[^/]+/instances/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -574,7 +630,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -588,6 +645,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -620,6 +680,9 @@
   /// ID>/databases/<database ID>` for database resources.
   /// Value must have pattern "^projects/[^/]+/instances/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -628,7 +691,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -642,6 +706,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -687,6 +754,9 @@
   /// Values are of the form `projects/<project>/instances/<instance>`.
   /// Value must have pattern "^projects/[^/]+/instances/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -695,7 +765,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> create(
-      CreateDatabaseRequest request, core.String parent) {
+      CreateDatabaseRequest request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -709,6 +780,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/databases';
@@ -730,6 +804,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -737,7 +814,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> dropDatabase(core.String database) {
+  async.Future<Empty> dropDatabase(core.String database,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -748,6 +826,9 @@
     if (database == null) {
       throw new core.ArgumentError("Parameter database is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$database');
 
@@ -770,6 +851,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Database].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -777,7 +861,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Database> get(core.String name) {
+  async.Future<Database> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -788,6 +872,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -811,6 +898,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetDatabaseDdlResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -818,7 +908,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GetDatabaseDdlResponse> getDdl(core.String database) {
+  async.Future<GetDatabaseDdlResponse> getDdl(core.String database,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -829,6 +920,9 @@
     if (database == null) {
       throw new core.ArgumentError("Parameter database is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$database') + '/ddl';
 
@@ -858,6 +952,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -866,7 +963,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> getIamPolicy(
-      GetIamPolicyRequest request, core.String resource) {
+      GetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -880,6 +978,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -910,6 +1011,9 @@
   /// less,
   /// defaults to the server's maximum allowed page size.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListDatabasesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -918,7 +1022,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListDatabasesResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -935,6 +1039,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/databases';
@@ -965,6 +1072,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -973,7 +1083,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -987,6 +1098,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1021,6 +1135,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1029,7 +1146,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1043,6 +1161,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -1074,6 +1195,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1082,7 +1206,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> updateDdl(
-      UpdateDatabaseDdlRequest request, core.String database) {
+      UpdateDatabaseDdlRequest request, core.String database,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1096,6 +1221,9 @@
     if (database == null) {
       throw new core.ArgumentError("Parameter database is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$database') + '/ddl';
 
@@ -1132,6 +1260,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1139,7 +1270,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> cancel(core.String name) {
+  async.Future<Empty> cancel(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1150,6 +1281,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':cancel';
 
@@ -1173,6 +1307,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1180,7 +1317,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1191,6 +1328,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1213,6 +1353,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1220,7 +1363,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String name) {
+  async.Future<Operation> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1231,6 +1374,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1267,6 +1413,9 @@
   ///
   /// [pageSize] - The standard list page size.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOperationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1275,7 +1424,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOperationsResponse> list(core.String name,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1295,6 +1447,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1327,6 +1482,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Transaction].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1335,7 +1493,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Transaction> beginTransaction(
-      BeginTransactionRequest request, core.String session) {
+      BeginTransactionRequest request, core.String session,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1349,6 +1508,9 @@
     if (session == null) {
       throw new core.ArgumentError("Parameter session is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$session') +
@@ -1381,6 +1543,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommitResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1389,7 +1554,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CommitResponse> commit(
-      CommitRequest request, core.String session) {
+      CommitRequest request, core.String session,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1403,6 +1569,9 @@
     if (session == null) {
       throw new core.ArgumentError("Parameter session is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$session') + ':commit';
@@ -1445,6 +1614,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Session].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1453,7 +1625,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Session> create(
-      CreateSessionRequest request, core.String database) {
+      CreateSessionRequest request, core.String database,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1467,6 +1640,9 @@
     if (database == null) {
       throw new core.ArgumentError("Parameter database is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$database') +
@@ -1489,6 +1665,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1496,7 +1675,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1507,6 +1686,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1540,6 +1722,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ResultSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1548,7 +1733,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ResultSet> executeSql(
-      ExecuteSqlRequest request, core.String session) {
+      ExecuteSqlRequest request, core.String session,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1562,6 +1748,9 @@
     if (session == null) {
       throw new core.ArgumentError("Parameter session is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$session') +
@@ -1591,6 +1780,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PartialResultSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1599,7 +1791,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PartialResultSet> executeStreamingSql(
-      ExecuteSqlRequest request, core.String session) {
+      ExecuteSqlRequest request, core.String session,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1613,6 +1806,9 @@
     if (session == null) {
       throw new core.ArgumentError("Parameter session is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$session') +
@@ -1637,6 +1833,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Session].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1644,7 +1843,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Session> get(core.String name) {
+  async.Future<Session> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1655,6 +1854,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1675,10 +1877,6 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+$".
   ///
-  /// [pageToken] - If non-empty, `page_token` should contain a
-  /// next_page_token from a previous
-  /// ListSessionsResponse.
-  ///
   /// [pageSize] - Number of sessions to be returned in the response. If 0 or
   /// less, defaults
   /// to the server's maximum allowed page size.
@@ -1695,6 +1893,13 @@
   ///   * labels.env:dev --> The session has the label "env" and the value of
   ///                        the label contains the string "dev".
   ///
+  /// [pageToken] - If non-empty, `page_token` should contain a
+  /// next_page_token from a previous
+  /// ListSessionsResponse.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListSessionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1703,7 +1908,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListSessionsResponse> list(core.String database,
-      {core.String pageToken, core.int pageSize, core.String filter}) {
+      {core.int pageSize,
+      core.String filter,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1714,15 +1922,18 @@
     if (database == null) {
       throw new core.ArgumentError("Parameter database is required.");
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
-    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
     if (filter != null) {
       _queryParams["filter"] = [filter];
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$database') +
@@ -1759,6 +1970,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ResultSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1766,7 +1980,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ResultSet> read(ReadRequest request, core.String session) {
+  async.Future<ResultSet> read(ReadRequest request, core.String session,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1780,6 +1995,9 @@
     if (session == null) {
       throw new core.ArgumentError("Parameter session is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$session') + ':read';
 
@@ -1810,6 +2028,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1817,7 +2038,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> rollback(RollbackRequest request, core.String session) {
+  async.Future<Empty> rollback(RollbackRequest request, core.String session,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1831,6 +2053,9 @@
     if (session == null) {
       throw new core.ArgumentError("Parameter session is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/' + commons.Escaper.ecapeVariableReserved('$session') + ':rollback';
@@ -1858,6 +2083,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PartialResultSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1866,7 +2094,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PartialResultSet> streamingRead(
-      ReadRequest request, core.String session) {
+      ReadRequest request, core.String session,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1880,6 +2109,9 @@
     if (session == null) {
       throw new core.ArgumentError("Parameter session is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' +
         commons.Escaper.ecapeVariableReserved('$session') +
@@ -1918,6 +2150,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1925,7 +2160,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> cancel(core.String name) {
+  async.Future<Empty> cancel(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1936,6 +2171,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':cancel';
 
@@ -1959,6 +2197,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1966,7 +2207,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1977,6 +2218,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1999,6 +2243,9 @@
   /// Value must have pattern
   /// "^projects/[^/]+/instances/[^/]+/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2006,7 +2253,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String name) {
+  async.Future<Operation> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2017,6 +2264,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -2046,11 +2296,14 @@
   /// [name] - The name of the operation's parent resource.
   /// Value must have pattern "^projects/[^/]+/instances/[^/]+/operations$".
   ///
+  /// [filter] - The standard list filter.
+  ///
   /// [pageToken] - The standard list page token.
   ///
   /// [pageSize] - The standard list page size.
   ///
-  /// [filter] - The standard list filter.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListOperationsResponse].
   ///
@@ -2060,7 +2313,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOperationsResponse> list(core.String name,
-      {core.String pageToken, core.int pageSize, core.String filter}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2071,14 +2327,17 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
diff --git a/generated/googleapis/lib/speech/v1.dart b/generated/googleapis/lib/speech/v1.dart
index f079588..308ca78 100644
--- a/generated/googleapis/lib/speech/v1.dart
+++ b/generated/googleapis/lib/speech/v1.dart
@@ -55,6 +55,9 @@
   /// [name] - The name of the operation resource to be cancelled.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -62,7 +65,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> cancel(CancelOperationRequest request, core.String name) {
+  async.Future<Empty> cancel(CancelOperationRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -76,6 +80,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/operations/' +
         commons.Escaper.ecapeVariableReserved('$name') +
@@ -100,6 +107,9 @@
   /// [name] - The name of the operation resource to be deleted.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -107,7 +117,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -118,6 +128,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/operations/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -139,6 +152,9 @@
   /// [name] - The name of the operation resource.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -146,7 +162,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String name) {
+  async.Future<Operation> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -157,6 +173,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/operations/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -191,6 +210,9 @@
   ///
   /// [filter] - The standard list filter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOperationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -202,7 +224,8 @@
       {core.String pageToken,
       core.String name,
       core.int pageSize,
-      core.String filter}) {
+      core.String filter,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -222,6 +245,9 @@
     if (filter != null) {
       _queryParams["filter"] = [filter];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/operations';
 
@@ -249,6 +275,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -257,7 +286,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> longrunningrecognize(
-      LongRunningRecognizeRequest request) {
+      LongRunningRecognizeRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -268,6 +298,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/speech:longrunningrecognize';
 
@@ -287,6 +320,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RecognizeResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -294,7 +330,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<RecognizeResponse> recognize(RecognizeRequest request) {
+  async.Future<RecognizeResponse> recognize(RecognizeRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -305,6 +342,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/speech:recognize';
 
@@ -785,7 +825,8 @@
   /// indicates an estimated greater likelihood that the recognized words are
   /// correct. This field is typically provided only for the top hypothesis, and
   /// only for `is_final=true` results. Clients should not rely on the
-  /// `confidence` field as it is not guaranteed to be accurate or consistent.
+  /// `confidence` field as it is not guaranteed to be accurate, or even set, in
+  /// any of the results.
   /// The default of 0.0 is a sentinel value indicating `confidence` was not
   /// set.
   core.double confidence;
@@ -836,6 +877,12 @@
   /// alternative being the most probable, as ranked by the recognizer.
   core.List<SpeechRecognitionAlternative> alternatives;
 
+  /// For multi-channel audio, this is the channel number corresponding to the
+  /// recognized result for the audio from that channel.
+  /// For audio_channel_count = N, its output values can range from '0' to
+  /// 'N-1'.
+  core.int channelTag;
+
   SpeechRecognitionResult();
 
   SpeechRecognitionResult.fromJson(core.Map _json) {
@@ -844,6 +891,9 @@
           .map((value) => new SpeechRecognitionAlternative.fromJson(value))
           .toList();
     }
+    if (_json.containsKey("channelTag")) {
+      channelTag = _json["channelTag"];
+    }
   }
 
   core.Map<core.String, core.Object> toJson() {
@@ -853,6 +903,9 @@
       _json["alternatives"] =
           alternatives.map((value) => (value).toJson()).toList();
     }
+    if (channelTag != null) {
+      _json["channelTag"] = channelTag;
+    }
     return _json;
   }
 }
diff --git a/generated/googleapis/lib/storage/v1.dart b/generated/googleapis/lib/storage/v1.dart
index d5a0a30..0de3dc1 100644
--- a/generated/googleapis/lib/storage/v1.dart
+++ b/generated/googleapis/lib/storage/v1.dart
@@ -83,8 +83,11 @@
   /// user-emailAddress, group-groupId, group-emailAddress, allUsers, or
   /// allAuthenticatedUsers.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
@@ -92,7 +95,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String bucket, core.String entity,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -109,6 +112,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -136,8 +142,11 @@
   /// user-emailAddress, group-groupId, group-emailAddress, allUsers, or
   /// allAuthenticatedUsers.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [BucketAccessControl].
   ///
@@ -147,7 +156,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BucketAccessControl> get(core.String bucket, core.String entity,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -164,6 +173,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -187,8 +199,11 @@
   ///
   /// [bucket] - Name of a bucket.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [BucketAccessControl].
   ///
@@ -199,7 +214,7 @@
   /// this method will complete with the same error.
   async.Future<BucketAccessControl> insert(
       BucketAccessControl request, core.String bucket,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -216,6 +231,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' + commons.Escaper.ecapeVariable('$bucket') + '/acl';
 
@@ -234,8 +252,11 @@
   ///
   /// [bucket] - Name of a bucket.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [BucketAccessControls].
   ///
@@ -245,7 +266,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BucketAccessControls> list(core.String bucket,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -259,6 +280,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' + commons.Escaper.ecapeVariable('$bucket') + '/acl';
 
@@ -284,8 +308,11 @@
   /// user-emailAddress, group-groupId, group-emailAddress, allUsers, or
   /// allAuthenticatedUsers.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [BucketAccessControl].
   ///
@@ -296,7 +323,7 @@
   /// this method will complete with the same error.
   async.Future<BucketAccessControl> patch(
       BucketAccessControl request, core.String bucket, core.String entity,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -316,6 +343,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -343,8 +373,11 @@
   /// user-emailAddress, group-groupId, group-emailAddress, allUsers, or
   /// allAuthenticatedUsers.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [BucketAccessControl].
   ///
@@ -355,7 +388,7 @@
   /// this method will complete with the same error.
   async.Future<BucketAccessControl> update(
       BucketAccessControl request, core.String bucket, core.String entity,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -375,6 +408,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -408,8 +444,11 @@
   /// [ifMetagenerationNotMatch] - If set, only deletes the bucket if its
   /// metageneration does not match this value.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
@@ -419,7 +458,8 @@
   async.Future delete(core.String bucket,
       {core.String ifMetagenerationMatch,
       core.String ifMetagenerationNotMatch,
-      core.String userProject}) {
+      core.String userProject,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -439,6 +479,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -472,8 +515,11 @@
   /// - "full" : Include all properties.
   /// - "noAcl" : Omit owner, acl and defaultObjectAcl properties.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Bucket].
   ///
@@ -486,7 +532,8 @@
       {core.String ifMetagenerationMatch,
       core.String ifMetagenerationNotMatch,
       core.String projection,
-      core.String userProject}) {
+      core.String userProject,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -509,6 +556,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' + commons.Escaper.ecapeVariable('$bucket');
 
@@ -527,8 +577,11 @@
   ///
   /// [bucket] - Name of a bucket.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Policy].
   ///
@@ -538,7 +591,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> getIamPolicy(core.String bucket,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -552,6 +605,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' + commons.Escaper.ecapeVariable('$bucket') + '/iam';
 
@@ -607,8 +663,10 @@
   /// - "full" : Include all properties.
   /// - "noAcl" : Omit owner, acl and defaultObjectAcl properties.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Bucket].
   ///
@@ -621,7 +679,8 @@
       {core.String predefinedAcl,
       core.String predefinedDefaultObjectAcl,
       core.String projection,
-      core.String userProject}) {
+      core.String userProject,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -648,6 +707,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b';
 
@@ -679,8 +741,10 @@
   /// - "full" : Include all properties.
   /// - "noAcl" : Omit owner, acl and defaultObjectAcl properties.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Buckets].
   ///
@@ -694,7 +758,8 @@
       core.String pageToken,
       core.String prefix,
       core.String projection,
-      core.String userProject}) {
+      core.String userProject,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -721,6 +786,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b';
 
@@ -784,8 +852,11 @@
   /// - "full" : Include all properties.
   /// - "noAcl" : Omit owner, acl and defaultObjectAcl properties.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Bucket].
   ///
@@ -800,7 +871,8 @@
       core.String predefinedAcl,
       core.String predefinedDefaultObjectAcl,
       core.String projection,
-      core.String userProject}) {
+      core.String userProject,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -832,6 +904,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' + commons.Escaper.ecapeVariable('$bucket');
 
@@ -852,8 +927,11 @@
   ///
   /// [bucket] - Name of a bucket.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Policy].
   ///
@@ -863,7 +941,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(Policy request, core.String bucket,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -880,6 +958,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' + commons.Escaper.ecapeVariable('$bucket') + '/iam';
 
@@ -901,8 +982,11 @@
   ///
   /// [permissions] - Permissions to test.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
@@ -913,7 +997,7 @@
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
       core.String bucket, core.List<core.String> permissions,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -931,6 +1015,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -996,8 +1083,11 @@
   /// - "full" : Include all properties.
   /// - "noAcl" : Omit owner, acl and defaultObjectAcl properties.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Bucket].
   ///
@@ -1012,7 +1102,8 @@
       core.String predefinedAcl,
       core.String predefinedDefaultObjectAcl,
       core.String projection,
-      core.String userProject}) {
+      core.String userProject,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1044,6 +1135,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' + commons.Escaper.ecapeVariable('$bucket');
 
@@ -1068,12 +1162,15 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future stop(Channel request) {
+  async.Future stop(Channel request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1084,6 +1181,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1116,8 +1216,11 @@
   /// user-emailAddress, group-groupId, group-emailAddress, allUsers, or
   /// allAuthenticatedUsers.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
@@ -1125,7 +1228,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String bucket, core.String entity,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1142,6 +1245,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1170,8 +1276,11 @@
   /// user-emailAddress, group-groupId, group-emailAddress, allUsers, or
   /// allAuthenticatedUsers.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ObjectAccessControl].
   ///
@@ -1181,7 +1290,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ObjectAccessControl> get(core.String bucket, core.String entity,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1198,6 +1307,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -1221,8 +1333,11 @@
   ///
   /// [bucket] - Name of a bucket.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ObjectAccessControl].
   ///
@@ -1233,7 +1348,7 @@
   /// this method will complete with the same error.
   async.Future<ObjectAccessControl> insert(
       ObjectAccessControl request, core.String bucket,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1250,6 +1365,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'b/' + commons.Escaper.ecapeVariable('$bucket') + '/defaultObjectAcl';
@@ -1275,8 +1393,11 @@
   /// [ifMetagenerationNotMatch] - If present, only return default ACL listing
   /// if the bucket's current metageneration does not match the given value.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ObjectAccessControls].
   ///
@@ -1288,7 +1409,8 @@
   async.Future<ObjectAccessControls> list(core.String bucket,
       {core.String ifMetagenerationMatch,
       core.String ifMetagenerationNotMatch,
-      core.String userProject}) {
+      core.String userProject,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1308,6 +1430,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'b/' + commons.Escaper.ecapeVariable('$bucket') + '/defaultObjectAcl';
@@ -1334,8 +1459,11 @@
   /// user-emailAddress, group-groupId, group-emailAddress, allUsers, or
   /// allAuthenticatedUsers.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ObjectAccessControl].
   ///
@@ -1346,7 +1474,7 @@
   /// this method will complete with the same error.
   async.Future<ObjectAccessControl> patch(
       ObjectAccessControl request, core.String bucket, core.String entity,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1366,6 +1494,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -1393,8 +1524,11 @@
   /// user-emailAddress, group-groupId, group-emailAddress, allUsers, or
   /// allAuthenticatedUsers.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ObjectAccessControl].
   ///
@@ -1405,7 +1539,7 @@
   /// this method will complete with the same error.
   async.Future<ObjectAccessControl> update(
       ObjectAccessControl request, core.String bucket, core.String entity,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1425,6 +1559,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -1454,8 +1591,11 @@
   ///
   /// [notification] - ID of the notification to delete.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
@@ -1463,7 +1603,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String bucket, core.String notification,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1480,6 +1620,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1505,8 +1648,11 @@
   ///
   /// [notification] - Notification ID
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Notification].
   ///
@@ -1516,7 +1662,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Notification> get(core.String bucket, core.String notification,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1533,6 +1679,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -1556,8 +1705,11 @@
   ///
   /// [bucket] - The parent bucket of the notification.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Notification].
   ///
@@ -1567,7 +1719,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Notification> insert(Notification request, core.String bucket,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1584,6 +1736,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -1604,8 +1759,11 @@
   ///
   /// [bucket] - Name of a Google Cloud Storage bucket.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Notifications].
   ///
@@ -1615,7 +1773,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Notifications> list(core.String bucket,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1629,6 +1787,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -1667,8 +1828,11 @@
   /// [generation] - If present, selects a specific revision of this object (as
   /// opposed to the latest version, the default).
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
@@ -1677,7 +1841,7 @@
   /// this method will complete with the same error.
   async.Future delete(
       core.String bucket, core.String object, core.String entity,
-      {core.String generation, core.String userProject}) {
+      {core.String generation, core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1700,6 +1864,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1735,8 +1902,11 @@
   /// [generation] - If present, selects a specific revision of this object (as
   /// opposed to the latest version, the default).
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ObjectAccessControl].
   ///
@@ -1747,7 +1917,7 @@
   /// this method will complete with the same error.
   async.Future<ObjectAccessControl> get(
       core.String bucket, core.String object, core.String entity,
-      {core.String generation, core.String userProject}) {
+      {core.String generation, core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1770,6 +1940,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -1801,8 +1974,11 @@
   /// [generation] - If present, selects a specific revision of this object (as
   /// opposed to the latest version, the default).
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ObjectAccessControl].
   ///
@@ -1813,7 +1989,7 @@
   /// this method will complete with the same error.
   async.Future<ObjectAccessControl> insert(
       ObjectAccessControl request, core.String bucket, core.String object,
-      {core.String generation, core.String userProject}) {
+      {core.String generation, core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1836,6 +2012,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -1864,8 +2043,11 @@
   /// [generation] - If present, selects a specific revision of this object (as
   /// opposed to the latest version, the default).
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ObjectAccessControls].
   ///
@@ -1876,7 +2058,7 @@
   /// this method will complete with the same error.
   async.Future<ObjectAccessControls> list(
       core.String bucket, core.String object,
-      {core.String generation, core.String userProject}) {
+      {core.String generation, core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1896,6 +2078,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -1931,8 +2116,11 @@
   /// [generation] - If present, selects a specific revision of this object (as
   /// opposed to the latest version, the default).
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ObjectAccessControl].
   ///
@@ -1943,7 +2131,7 @@
   /// this method will complete with the same error.
   async.Future<ObjectAccessControl> patch(ObjectAccessControl request,
       core.String bucket, core.String object, core.String entity,
-      {core.String generation, core.String userProject}) {
+      {core.String generation, core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1969,6 +2157,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -2004,8 +2195,11 @@
   /// [generation] - If present, selects a specific revision of this object (as
   /// opposed to the latest version, the default).
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ObjectAccessControl].
   ///
@@ -2016,7 +2210,7 @@
   /// this method will complete with the same error.
   async.Future<ObjectAccessControl> update(ObjectAccessControl request,
       core.String bucket, core.String object, core.String entity,
-      {core.String generation, core.String userProject}) {
+      {core.String generation, core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2042,6 +2236,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -2104,8 +2301,11 @@
   /// that will be used to encrypt the object. Overrides the object metadata's
   /// kms_key_name value, if any.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
@@ -2129,6 +2329,7 @@
       core.String ifMetagenerationMatch,
       core.String kmsKeyName,
       core.String userProject,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -2162,6 +2363,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -2260,8 +2464,11 @@
   /// [sourceGeneration] - If present, selects a specific revision of the source
   /// object (as opposed to the latest version, the default).
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
@@ -2296,6 +2503,7 @@
       core.String projection,
       core.String sourceGeneration,
       core.String userProject,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -2360,6 +2568,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -2414,8 +2625,11 @@
   /// [ifMetagenerationNotMatch] - Makes the operation conditional on whether
   /// the object's current metageneration does not match the given value.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
@@ -2428,7 +2642,8 @@
       core.String ifGenerationNotMatch,
       core.String ifMetagenerationMatch,
       core.String ifMetagenerationNotMatch,
-      core.String userProject}) {
+      core.String userProject,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2460,6 +2675,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2509,8 +2727,11 @@
   /// - "full" : Include all properties.
   /// - "noAcl" : Omit the owner, acl property.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
@@ -2535,6 +2756,7 @@
       core.String ifMetagenerationNotMatch,
       core.String projection,
       core.String userProject,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -2571,6 +2793,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -2605,8 +2830,11 @@
   /// [generation] - If present, selects a specific revision of this object (as
   /// opposed to the latest version, the default).
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Policy].
   ///
@@ -2616,7 +2844,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> getIamPolicy(core.String bucket, core.String object,
-      {core.String generation, core.String userProject}) {
+      {core.String generation, core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2636,6 +2864,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -2713,8 +2944,11 @@
   /// - "full" : Include all properties.
   /// - "noAcl" : Omit the owner, acl property.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// [uploadMedia] - The media to upload.
   ///
@@ -2748,6 +2982,7 @@
       core.String predefinedAcl,
       core.String projection,
       core.String userProject,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia,
       commons.DownloadOptions downloadOptions:
@@ -2795,6 +3030,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -2853,12 +3091,15 @@
   /// - "full" : Include all properties.
   /// - "noAcl" : Omit the owner, acl property.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
   ///
   /// [versions] - If true, lists all versions of an object as distinct results.
   /// The default is false. For more information, see Object Versioning.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Objects].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2873,7 +3114,8 @@
       core.String prefix,
       core.String projection,
       core.String userProject,
-      core.bool versions}) {
+      core.bool versions,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2905,6 +3147,9 @@
     if (versions != null) {
       _queryParams["versions"] = ["${versions}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' + commons.Escaper.ecapeVariable('$bucket') + '/o';
 
@@ -2966,8 +3211,11 @@
   /// - "full" : Include all properties.
   /// - "noAcl" : Omit the owner, acl property.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Object].
   ///
@@ -2985,7 +3233,8 @@
       core.String ifMetagenerationNotMatch,
       core.String predefinedAcl,
       core.String projection,
-      core.String userProject}) {
+      core.String userProject,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3026,6 +3275,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -3133,8 +3385,11 @@
   /// [sourceGeneration] - If present, selects a specific revision of the source
   /// object (as opposed to the latest version, the default).
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [RewriteResponse].
   ///
@@ -3163,7 +3418,8 @@
       core.String projection,
       core.String rewriteToken,
       core.String sourceGeneration,
-      core.String userProject}) {
+      core.String userProject,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3235,6 +3491,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$sourceBucket') +
@@ -3268,8 +3527,11 @@
   /// [generation] - If present, selects a specific revision of this object (as
   /// opposed to the latest version, the default).
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Policy].
   ///
@@ -3280,7 +3542,7 @@
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
       Policy request, core.String bucket, core.String object,
-      {core.String generation, core.String userProject}) {
+      {core.String generation, core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3303,6 +3565,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -3334,8 +3599,11 @@
   /// [generation] - If present, selects a specific revision of this object (as
   /// opposed to the latest version, the default).
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
@@ -3349,7 +3617,8 @@
       core.String object,
       core.List<core.String> permissions,
       {core.String generation,
-      core.String userProject}) {
+      core.String userProject,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3373,6 +3642,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' +
         commons.Escaper.ecapeVariable('$bucket') +
@@ -3439,8 +3711,11 @@
   /// - "full" : Include all properties.
   /// - "noAcl" : Omit the owner, acl property.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
@@ -3466,6 +3741,7 @@
       core.String predefinedAcl,
       core.String projection,
       core.String userProject,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -3508,6 +3784,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -3559,12 +3838,15 @@
   /// - "full" : Include all properties.
   /// - "noAcl" : Omit the owner, acl property.
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request. Required for
+  /// Requester Pays buckets.
   ///
   /// [versions] - If true, lists all versions of an object as distinct results.
   /// The default is false. For more information, see Object Versioning.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Channel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3579,7 +3861,8 @@
       core.String prefix,
       core.String projection,
       core.String userProject,
-      core.bool versions}) {
+      core.bool versions,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3614,6 +3897,9 @@
     if (versions != null) {
       _queryParams["versions"] = ["${versions}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'b/' + commons.Escaper.ecapeVariable('$bucket') + '/o/watch';
 
@@ -3649,8 +3935,10 @@
   ///
   /// [projectId] - Project ID
   ///
-  /// [userProject] - The project to be billed for this request, for Requester
-  /// Pays buckets.
+  /// [userProject] - The project to be billed for this request.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ServiceAccount].
   ///
@@ -3660,7 +3948,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ServiceAccount> get(core.String projectId,
-      {core.String userProject}) {
+      {core.String userProject, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3674,6 +3962,9 @@
     if (userProject != null) {
       _queryParams["userProject"] = [userProject];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
diff --git a/generated/googleapis/lib/storagetransfer/v1.dart b/generated/googleapis/lib/storagetransfer/v1.dart
index 29a9d3a..1c982b1 100644
--- a/generated/googleapis/lib/storagetransfer/v1.dart
+++ b/generated/googleapis/lib/storagetransfer/v1.dart
@@ -59,6 +59,9 @@
   /// account is associated with.
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleServiceAccount].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -66,7 +69,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleServiceAccount> get(core.String projectId) {
+  async.Future<GoogleServiceAccount> get(core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -77,6 +81,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/googleServiceAccounts/' +
         commons.Escaper.ecapeVariable('$projectId');
@@ -102,6 +109,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TransferJob].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -109,7 +119,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TransferJob> create(TransferJob request) {
+  async.Future<TransferJob> create(TransferJob request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -120,6 +130,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/transferJobs';
 
@@ -144,6 +157,9 @@
   /// owns the job.
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TransferJob].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -151,7 +167,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TransferJob> get(core.String jobName, {core.String projectId}) {
+  async.Future<TransferJob> get(core.String jobName,
+      {core.String projectId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -165,6 +182,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$jobName');
 
@@ -181,6 +201,10 @@
   ///
   /// Request parameters:
   ///
+  /// [pageToken] - The list page token.
+  ///
+  /// [pageSize] - The list page size. The max allowed value is 256.
+  ///
   /// [filter] - A list of query parameters specified as JSON text in the form
   /// of
   /// {"project_id":"my_project_id",
@@ -192,9 +216,8 @@
   /// and `job_statuses` are optional.  The valid values for `job_statuses` are
   /// case-insensitive: `ENABLED`, `DISABLED`, and `DELETED`.
   ///
-  /// [pageToken] - The list page token.
-  ///
-  /// [pageSize] - The list page size. The max allowed value is 256.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListTransferJobsResponse].
   ///
@@ -204,7 +227,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListTransferJobsResponse> list(
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String filter,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -212,15 +238,18 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
-    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/transferJobs';
 
@@ -246,6 +275,9 @@
   /// Required.
   /// Value must have pattern "^transferJobs/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TransferJob].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -254,7 +286,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TransferJob> patch(
-      UpdateTransferJobRequest request, core.String jobName) {
+      UpdateTransferJobRequest request, core.String jobName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -268,6 +301,9 @@
     if (jobName == null) {
       throw new core.ArgumentError("Parameter jobName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$jobName');
 
@@ -295,6 +331,9 @@
   /// [name] - The name of the operation resource to be cancelled.
   /// Value must have pattern "^transferOperations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -302,7 +341,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> cancel(core.String name) {
+  async.Future<Empty> cancel(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -313,6 +352,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':cancel';
 
@@ -332,6 +374,9 @@
   /// [name] - The name of the operation resource to be deleted.
   /// Value must have pattern "^transferOperations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -339,7 +384,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -350,6 +395,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -371,6 +419,9 @@
   /// [name] - The name of the operation resource.
   /// Value must have pattern "^transferOperations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -378,7 +429,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String name) {
+  async.Future<Operation> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -389,6 +440,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -418,6 +472,10 @@
   /// [name] - The value `transferOperations`.
   /// Value must have pattern "^transferOperations$".
   ///
+  /// [pageToken] - The list page token.
+  ///
+  /// [pageSize] - The list page size. The max allowed value is 256.
+  ///
   /// [filter] - A list of query parameters specified as JSON text in the form
   /// of {\"project_id\" : \"my_project_id\", \"job_names\" : [\"jobid1\",
   /// \"jobid2\",...], \"operation_names\" : [\"opid1\", \"opid2\",...],
@@ -426,9 +484,8 @@
   /// must be specified with array notation. `job_names`, `operation_names`, and
   /// `transfer_statuses` are optional.
   ///
-  /// [pageToken] - The list page token.
-  ///
-  /// [pageSize] - The list page size. The max allowed value is 256.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListOperationsResponse].
   ///
@@ -438,7 +495,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOperationsResponse> list(core.String name,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String filter,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -449,15 +509,18 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
-    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -480,6 +543,9 @@
   /// Required.
   /// Value must have pattern "^transferOperations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -488,7 +554,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> pause(
-      PauseTransferOperationRequest request, core.String name) {
+      PauseTransferOperationRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -502,6 +569,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':pause';
 
@@ -524,6 +594,9 @@
   /// Required.
   /// Value must have pattern "^transferOperations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -532,7 +605,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> resume(
-      ResumeTransferOperationRequest request, core.String name) {
+      ResumeTransferOperationRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -546,6 +620,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name') + ':resume';
 
diff --git a/generated/googleapis/lib/streetviewpublish/v1.dart b/generated/googleapis/lib/streetviewpublish/v1.dart
index 26a48ea..058e287 100644
--- a/generated/googleapis/lib/streetviewpublish/v1.dart
+++ b/generated/googleapis/lib/streetviewpublish/v1.dart
@@ -63,6 +63,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Photo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -70,7 +73,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Photo> create(Photo request) {
+  async.Future<Photo> create(Photo request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -81,6 +84,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/photo';
 
@@ -105,6 +111,9 @@
   ///
   /// [photoId] - Required. ID of the Photo.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -112,7 +121,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String photoId) {
+  async.Future<Empty> delete(core.String photoId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -123,6 +132,9 @@
     if (photoId == null) {
       throw new core.ArgumentError("Parameter photoId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/photo/' + commons.Escaper.ecapeVariable('$photoId');
 
@@ -156,6 +168,9 @@
   /// - "BASIC" : A BASIC.
   /// - "INCLUDE_DOWNLOAD_URL" : A INCLUDE_DOWNLOAD_URL.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Photo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -163,7 +178,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Photo> get(core.String photoId, {core.String view}) {
+  async.Future<Photo> get(core.String photoId,
+      {core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -177,6 +193,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/photo/' + commons.Escaper.ecapeVariable('$photoId');
 
@@ -215,6 +234,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UploadRef].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -222,7 +244,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UploadRef> startUpload(Empty request) {
+  async.Future<UploadRef> startUpload(Empty request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -233,6 +255,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/photo:startUpload';
 
@@ -301,6 +326,9 @@
   /// empty,
   /// all connections will be removed.</aside>
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Photo].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -309,7 +337,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Photo> update(Photo request, core.String id,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -326,6 +354,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/photo/' + commons.Escaper.ecapeVariable('$id');
 
@@ -365,6 +396,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchDeletePhotosResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -373,7 +407,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchDeletePhotosResponse> batchDelete(
-      BatchDeletePhotosRequest request) {
+      BatchDeletePhotosRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -384,6 +419,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/photos:batchDelete';
 
@@ -427,6 +465,9 @@
   /// GET requests, the URL query parameter should be
   /// `photoIds=<id1>&photoIds=<id2>&...`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchGetPhotosResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -435,7 +476,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchGetPhotosResponse> batchGet(
-      {core.String view, core.List<core.String> photoIds}) {
+      {core.String view,
+      core.List<core.String> photoIds,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -449,6 +492,9 @@
     if (photoIds != null) {
       _queryParams["photoIds"] = photoIds;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/photos:batchGet';
 
@@ -494,6 +540,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchUpdatePhotosResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -502,7 +551,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchUpdatePhotosResponse> batchUpdate(
-      BatchUpdatePhotosRequest request) {
+      BatchUpdatePhotosRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -513,6 +563,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/photos:batchUpdate';
 
@@ -555,6 +608,9 @@
   /// - "BASIC" : A BASIC.
   /// - "INCLUDE_DOWNLOAD_URL" : A INCLUDE_DOWNLOAD_URL.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListPhotosResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -566,7 +622,8 @@
       {core.String filter,
       core.String pageToken,
       core.int pageSize,
-      core.String view}) {
+      core.String view,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -586,6 +643,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/photos';
 
diff --git a/generated/googleapis/lib/surveys/v2.dart b/generated/googleapis/lib/surveys/v2.dart
index f67a74f..dec1ff7 100644
--- a/generated/googleapis/lib/surveys/v2.dart
+++ b/generated/googleapis/lib/surveys/v2.dart
@@ -61,6 +61,9 @@
   ///
   /// [panelId] - External URL ID for the panel.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MobileAppPanel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -68,7 +71,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<MobileAppPanel> get(core.String panelId) {
+  async.Future<MobileAppPanel> get(core.String panelId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -79,6 +82,9 @@
     if (panelId == null) {
       throw new core.ArgumentError("Parameter panelId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'mobileAppPanels/' + commons.Escaper.ecapeVariable('$panelId');
 
@@ -101,6 +107,9 @@
   ///
   /// [token] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MobileAppPanelsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -109,7 +118,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<MobileAppPanelsListResponse> list(
-      {core.int maxResults, core.int startIndex, core.String token}) {
+      {core.int maxResults,
+      core.int startIndex,
+      core.String token,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -126,6 +138,9 @@
     if (token != null) {
       _queryParams["token"] = [token];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'mobileAppPanels';
 
@@ -148,6 +163,9 @@
   ///
   /// [panelId] - External URL ID for the panel.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MobileAppPanel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -156,7 +174,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<MobileAppPanel> update(
-      MobileAppPanel request, core.String panelId) {
+      MobileAppPanel request, core.String panelId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -170,6 +189,9 @@
     if (panelId == null) {
       throw new core.ArgumentError("Parameter panelId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'mobileAppPanels/' + commons.Escaper.ecapeVariable('$panelId');
 
@@ -198,6 +220,9 @@
   ///
   /// [surveyUrlId] - External URL ID for the survey.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -214,7 +239,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future get(ResultsGetRequest request, core.String surveyUrlId,
-      {commons.DownloadOptions downloadOptions:
+      {core.String $fields,
+      commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -229,6 +255,9 @@
     if (surveyUrlId == null) {
       throw new core.ArgumentError("Parameter surveyUrlId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -261,6 +290,9 @@
   ///
   /// [surveyUrlId] - External URL ID for the survey.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SurveysDeleteResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -268,7 +300,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SurveysDeleteResponse> delete(core.String surveyUrlId) {
+  async.Future<SurveysDeleteResponse> delete(core.String surveyUrlId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -279,6 +312,9 @@
     if (surveyUrlId == null) {
       throw new core.ArgumentError("Parameter surveyUrlId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'surveys/' + commons.Escaper.ecapeVariable('$surveyUrlId');
 
@@ -297,6 +333,9 @@
   ///
   /// [surveyUrlId] - External URL ID for the survey.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Survey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -304,7 +343,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Survey> get(core.String surveyUrlId) {
+  async.Future<Survey> get(core.String surveyUrlId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -315,6 +354,9 @@
     if (surveyUrlId == null) {
       throw new core.ArgumentError("Parameter surveyUrlId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'surveys/' + commons.Escaper.ecapeVariable('$surveyUrlId');
 
@@ -333,6 +375,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Survey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -340,7 +385,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Survey> insert(Survey request) {
+  async.Future<Survey> insert(Survey request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -351,6 +396,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'surveys';
 
@@ -373,6 +421,9 @@
   ///
   /// [token] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SurveysListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -381,7 +432,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SurveysListResponse> list(
-      {core.int maxResults, core.int startIndex, core.String token}) {
+      {core.int maxResults,
+      core.int startIndex,
+      core.String token,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -398,6 +452,9 @@
     if (token != null) {
       _queryParams["token"] = [token];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'surveys';
 
@@ -418,6 +475,9 @@
   ///
   /// [resourceId] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SurveysStartResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -426,7 +486,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SurveysStartResponse> start(
-      SurveysStartRequest request, core.String resourceId) {
+      SurveysStartRequest request, core.String resourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -440,6 +501,9 @@
     if (resourceId == null) {
       throw new core.ArgumentError("Parameter resourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'surveys/' + commons.Escaper.ecapeVariable('$resourceId') + '/start';
 
@@ -458,6 +522,9 @@
   ///
   /// [resourceId] - null
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SurveysStopResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -465,7 +532,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SurveysStopResponse> stop(core.String resourceId) {
+  async.Future<SurveysStopResponse> stop(core.String resourceId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -476,6 +544,9 @@
     if (resourceId == null) {
       throw new core.ArgumentError("Parameter resourceId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'surveys/' + commons.Escaper.ecapeVariable('$resourceId') + '/stop';
 
@@ -497,6 +568,9 @@
   ///
   /// [surveyUrlId] - External URL ID for the survey.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Survey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -504,7 +578,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Survey> update(Survey request, core.String surveyUrlId) {
+  async.Future<Survey> update(Survey request, core.String surveyUrlId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -518,6 +593,9 @@
     if (surveyUrlId == null) {
       throw new core.ArgumentError("Parameter surveyUrlId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'surveys/' + commons.Escaper.ecapeVariable('$surveyUrlId');
 
diff --git a/generated/googleapis/lib/tagmanager/v1.dart b/generated/googleapis/lib/tagmanager/v1.dart
index 3ae00da..1035440 100644
--- a/generated/googleapis/lib/tagmanager/v1.dart
+++ b/generated/googleapis/lib/tagmanager/v1.dart
@@ -72,6 +72,9 @@
   ///
   /// [accountId] - The GTM Account ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -79,7 +82,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Account> get(core.String accountId) {
+  async.Future<Account> get(core.String accountId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -90,6 +93,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' + commons.Escaper.ecapeVariable('$accountId');
 
@@ -106,6 +112,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListAccountsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -113,7 +122,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListAccountsResponse> list() {
+  async.Future<ListAccountsResponse> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -121,6 +130,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'accounts';
 
     var _response = _requester.request(_url, "GET",
@@ -143,6 +156,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the account in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -151,7 +167,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Account> update(Account request, core.String accountId,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -168,6 +184,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' + commons.Escaper.ecapeVariable('$accountId');
 
@@ -213,6 +232,9 @@
   ///
   /// [accountId] - The GTM Account ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Container].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -220,7 +242,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Container> create(Container request, core.String accountId) {
+  async.Future<Container> create(Container request, core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -234,6 +257,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -256,12 +282,16 @@
   ///
   /// [containerId] - The GTM Container ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String accountId, core.String containerId) {
+  async.Future delete(core.String accountId, core.String containerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -275,6 +305,9 @@
     if (containerId == null) {
       throw new core.ArgumentError("Parameter containerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -300,6 +333,9 @@
   ///
   /// [containerId] - The GTM Container ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Container].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -307,7 +343,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Container> get(core.String accountId, core.String containerId) {
+  async.Future<Container> get(core.String accountId, core.String containerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -321,6 +358,9 @@
     if (containerId == null) {
       throw new core.ArgumentError("Parameter containerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -342,6 +382,9 @@
   ///
   /// [accountId] - The GTM Account ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListContainersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -349,7 +392,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListContainersResponse> list(core.String accountId) {
+  async.Future<ListContainersResponse> list(core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -360,6 +404,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -387,6 +434,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the container in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Container].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -396,7 +446,7 @@
   /// this method will complete with the same error.
   async.Future<Container> update(
       Container request, core.String accountId, core.String containerId,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -416,6 +466,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -448,6 +501,9 @@
   ///
   /// [containerId] - The GTM Container ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Environment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -456,7 +512,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Environment> create(
-      Environment request, core.String accountId, core.String containerId) {
+      Environment request, core.String accountId, core.String containerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -473,6 +530,9 @@
     if (containerId == null) {
       throw new core.ArgumentError("Parameter containerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -499,13 +559,17 @@
   ///
   /// [environmentId] - The GTM Environment ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String accountId, core.String containerId,
-      core.String environmentId) {
+  async.Future delete(
+      core.String accountId, core.String containerId, core.String environmentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -522,6 +586,9 @@
     if (environmentId == null) {
       throw new core.ArgumentError("Parameter environmentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -551,6 +618,9 @@
   ///
   /// [environmentId] - The GTM Environment ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Environment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -558,8 +628,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Environment> get(core.String accountId, core.String containerId,
-      core.String environmentId) {
+  async.Future<Environment> get(
+      core.String accountId, core.String containerId, core.String environmentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -576,6 +647,9 @@
     if (environmentId == null) {
       throw new core.ArgumentError("Parameter environmentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -601,6 +675,9 @@
   ///
   /// [containerId] - The GTM Container ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListEnvironmentsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -609,7 +686,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListEnvironmentsResponse> list(
-      core.String accountId, core.String containerId) {
+      core.String accountId, core.String containerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -623,6 +701,9 @@
     if (containerId == null) {
       throw new core.ArgumentError("Parameter containerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -655,6 +736,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the environment in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Environment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -664,7 +748,7 @@
   /// this method will complete with the same error.
   async.Future<Environment> patch(Environment request, core.String accountId,
       core.String containerId, core.String environmentId,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -687,6 +771,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -719,6 +806,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the environment in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Environment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -728,7 +818,7 @@
   /// this method will complete with the same error.
   async.Future<Environment> update(Environment request, core.String accountId,
       core.String containerId, core.String environmentId,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -751,6 +841,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -788,6 +881,9 @@
   ///
   /// [containerId] - The GTM Container ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Folder].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -796,7 +892,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Folder> create(
-      Folder request, core.String accountId, core.String containerId) {
+      Folder request, core.String accountId, core.String containerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -813,6 +910,9 @@
     if (containerId == null) {
       throw new core.ArgumentError("Parameter containerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -839,13 +939,17 @@
   ///
   /// [folderId] - The GTM Folder ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String accountId, core.String containerId, core.String folderId) {
+      core.String accountId, core.String containerId, core.String folderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -862,6 +966,9 @@
     if (folderId == null) {
       throw new core.ArgumentError("Parameter folderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -891,6 +998,9 @@
   ///
   /// [folderId] - The GTM Folder ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Folder].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -899,7 +1009,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Folder> get(
-      core.String accountId, core.String containerId, core.String folderId) {
+      core.String accountId, core.String containerId, core.String folderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -916,6 +1027,9 @@
     if (folderId == null) {
       throw new core.ArgumentError("Parameter folderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -941,6 +1055,9 @@
   ///
   /// [containerId] - The GTM Container ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListFoldersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -949,7 +1066,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListFoldersResponse> list(
-      core.String accountId, core.String containerId) {
+      core.String accountId, core.String containerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -963,6 +1081,9 @@
     if (containerId == null) {
       throw new core.ArgumentError("Parameter containerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -994,6 +1115,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the folder in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Folder].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1003,7 +1127,7 @@
   /// this method will complete with the same error.
   async.Future<Folder> update(Folder request, core.String accountId,
       core.String containerId, core.String folderId,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1026,6 +1150,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1060,6 +1187,9 @@
   ///
   /// [folderId] - The GTM Folder ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FolderEntities].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1068,7 +1198,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FolderEntities> list(
-      core.String accountId, core.String containerId, core.String folderId) {
+      core.String accountId, core.String containerId, core.String folderId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1085,6 +1216,9 @@
     if (folderId == null) {
       throw new core.ArgumentError("Parameter folderId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1128,6 +1262,9 @@
   ///
   /// [variableId] - The variables to be moved to the folder.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
@@ -1137,7 +1274,8 @@
       core.String containerId, core.String folderId,
       {core.List<core.String> tagId,
       core.List<core.String> triggerId,
-      core.List<core.String> variableId}) {
+      core.List<core.String> variableId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1166,6 +1304,9 @@
     if (variableId != null) {
       _queryParams["variableId"] = variableId;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1205,6 +1346,9 @@
   ///
   /// [environmentId] - The GTM Environment ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Environment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1213,7 +1357,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Environment> update(Environment request, core.String accountId,
-      core.String containerId, core.String environmentId) {
+      core.String containerId, core.String environmentId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1233,6 +1378,9 @@
     if (environmentId == null) {
       throw new core.ArgumentError("Parameter environmentId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1267,6 +1415,9 @@
   ///
   /// [containerId] - The GTM Container ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Tag].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1275,7 +1426,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Tag> create(
-      Tag request, core.String accountId, core.String containerId) {
+      Tag request, core.String accountId, core.String containerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1292,6 +1444,9 @@
     if (containerId == null) {
       throw new core.ArgumentError("Parameter containerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1318,13 +1473,17 @@
   ///
   /// [tagId] - The GTM Tag ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String accountId, core.String containerId, core.String tagId) {
+      core.String accountId, core.String containerId, core.String tagId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1341,6 +1500,9 @@
     if (tagId == null) {
       throw new core.ArgumentError("Parameter tagId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1370,6 +1532,9 @@
   ///
   /// [tagId] - The GTM Tag ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Tag].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1378,7 +1543,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Tag> get(
-      core.String accountId, core.String containerId, core.String tagId) {
+      core.String accountId, core.String containerId, core.String tagId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1395,6 +1561,9 @@
     if (tagId == null) {
       throw new core.ArgumentError("Parameter tagId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1420,6 +1589,9 @@
   ///
   /// [containerId] - The GTM Container ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListTagsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1428,7 +1600,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListTagsResponse> list(
-      core.String accountId, core.String containerId) {
+      core.String accountId, core.String containerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1442,6 +1615,9 @@
     if (containerId == null) {
       throw new core.ArgumentError("Parameter containerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1473,6 +1649,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the tag in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Tag].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1482,7 +1661,7 @@
   /// this method will complete with the same error.
   async.Future<Tag> update(Tag request, core.String accountId,
       core.String containerId, core.String tagId,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1505,6 +1684,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1539,6 +1721,9 @@
   ///
   /// [containerId] - The GTM Container ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Trigger].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1547,7 +1732,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Trigger> create(
-      Trigger request, core.String accountId, core.String containerId) {
+      Trigger request, core.String accountId, core.String containerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1564,6 +1750,9 @@
     if (containerId == null) {
       throw new core.ArgumentError("Parameter containerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1590,13 +1779,17 @@
   ///
   /// [triggerId] - The GTM Trigger ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String accountId, core.String containerId, core.String triggerId) {
+      core.String accountId, core.String containerId, core.String triggerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1613,6 +1806,9 @@
     if (triggerId == null) {
       throw new core.ArgumentError("Parameter triggerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1642,6 +1838,9 @@
   ///
   /// [triggerId] - The GTM Trigger ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Trigger].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1650,7 +1849,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Trigger> get(
-      core.String accountId, core.String containerId, core.String triggerId) {
+      core.String accountId, core.String containerId, core.String triggerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1667,6 +1867,9 @@
     if (triggerId == null) {
       throw new core.ArgumentError("Parameter triggerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1692,6 +1895,9 @@
   ///
   /// [containerId] - The GTM Container ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListTriggersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1700,7 +1906,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListTriggersResponse> list(
-      core.String accountId, core.String containerId) {
+      core.String accountId, core.String containerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1714,6 +1921,9 @@
     if (containerId == null) {
       throw new core.ArgumentError("Parameter containerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1745,6 +1955,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the trigger in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Trigger].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1754,7 +1967,7 @@
   /// this method will complete with the same error.
   async.Future<Trigger> update(Trigger request, core.String accountId,
       core.String containerId, core.String triggerId,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1777,6 +1990,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1811,6 +2027,9 @@
   ///
   /// [containerId] - The GTM Container ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Variable].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1819,7 +2038,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Variable> create(
-      Variable request, core.String accountId, core.String containerId) {
+      Variable request, core.String accountId, core.String containerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1836,6 +2056,9 @@
     if (containerId == null) {
       throw new core.ArgumentError("Parameter containerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1862,13 +2085,17 @@
   ///
   /// [variableId] - The GTM Variable ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String accountId, core.String containerId, core.String variableId) {
+      core.String accountId, core.String containerId, core.String variableId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1885,6 +2112,9 @@
     if (variableId == null) {
       throw new core.ArgumentError("Parameter variableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1914,6 +2144,9 @@
   ///
   /// [variableId] - The GTM Variable ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Variable].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1922,7 +2155,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Variable> get(
-      core.String accountId, core.String containerId, core.String variableId) {
+      core.String accountId, core.String containerId, core.String variableId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1939,6 +2173,9 @@
     if (variableId == null) {
       throw new core.ArgumentError("Parameter variableId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1964,6 +2201,9 @@
   ///
   /// [containerId] - The GTM Container ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListVariablesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1972,7 +2212,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListVariablesResponse> list(
-      core.String accountId, core.String containerId) {
+      core.String accountId, core.String containerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1986,6 +2227,9 @@
     if (containerId == null) {
       throw new core.ArgumentError("Parameter containerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2017,6 +2261,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the variable in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Variable].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2026,7 +2273,7 @@
   /// this method will complete with the same error.
   async.Future<Variable> update(Variable request, core.String accountId,
       core.String containerId, core.String variableId,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2049,6 +2296,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2083,6 +2333,9 @@
   ///
   /// [containerId] - The GTM Container ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreateContainerVersionResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2093,7 +2346,8 @@
   async.Future<CreateContainerVersionResponse> create(
       CreateContainerVersionRequestVersionOptions request,
       core.String accountId,
-      core.String containerId) {
+      core.String containerId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2110,6 +2364,9 @@
     if (containerId == null) {
       throw new core.ArgumentError("Parameter containerId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2137,13 +2394,17 @@
   ///
   /// [containerVersionId] - The GTM Container Version ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String accountId, core.String containerId,
-      core.String containerVersionId) {
+      core.String containerVersionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2160,6 +2421,9 @@
     if (containerVersionId == null) {
       throw new core.ArgumentError("Parameter containerVersionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2190,6 +2454,9 @@
   /// [containerVersionId] - The GTM Container Version ID. Specify published to
   /// retrieve the currently published version.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContainerVersion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2198,7 +2465,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ContainerVersion> get(core.String accountId,
-      core.String containerId, core.String containerVersionId) {
+      core.String containerId, core.String containerVersionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2215,6 +2483,9 @@
     if (containerVersionId == null) {
       throw new core.ArgumentError("Parameter containerVersionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2244,6 +2515,9 @@
   ///
   /// [includeDeleted] - Also retrieve deleted (archived) versions when true.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListContainerVersionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2253,7 +2527,7 @@
   /// this method will complete with the same error.
   async.Future<ListContainerVersionsResponse> list(
       core.String accountId, core.String containerId,
-      {core.bool headers, core.bool includeDeleted}) {
+      {core.bool headers, core.bool includeDeleted, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2273,6 +2547,9 @@
     if (includeDeleted != null) {
       _queryParams["includeDeleted"] = ["${includeDeleted}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2303,6 +2580,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the container version in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PublishContainerVersionResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2312,7 +2592,7 @@
   /// this method will complete with the same error.
   async.Future<PublishContainerVersionResponse> publish(core.String accountId,
       core.String containerId, core.String containerVersionId,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2332,6 +2612,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2364,6 +2647,9 @@
   ///
   /// [containerVersionId] - The GTM Container Version ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContainerVersion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2372,7 +2658,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ContainerVersion> restore(core.String accountId,
-      core.String containerId, core.String containerVersionId) {
+      core.String containerId, core.String containerVersionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2389,6 +2676,9 @@
     if (containerVersionId == null) {
       throw new core.ArgumentError("Parameter containerVersionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2417,6 +2707,9 @@
   ///
   /// [containerVersionId] - The GTM Container Version ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContainerVersion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2425,7 +2718,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ContainerVersion> undelete(core.String accountId,
-      core.String containerId, core.String containerVersionId) {
+      core.String containerId, core.String containerVersionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2442,6 +2736,9 @@
     if (containerVersionId == null) {
       throw new core.ArgumentError("Parameter containerVersionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2475,6 +2772,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the container version in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContainerVersion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2487,7 +2787,8 @@
       core.String accountId,
       core.String containerId,
       core.String containerVersionId,
-      {core.String fingerprint}) {
+      {core.String fingerprint,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2510,6 +2811,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2542,6 +2846,9 @@
   ///
   /// [accountId] - The GTM Account ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserAccess].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2549,7 +2856,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UserAccess> create(UserAccess request, core.String accountId) {
+  async.Future<UserAccess> create(UserAccess request, core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2563,6 +2871,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2586,12 +2897,16 @@
   ///
   /// [permissionId] - The GTM User ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String accountId, core.String permissionId) {
+  async.Future delete(core.String accountId, core.String permissionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2605,6 +2920,9 @@
     if (permissionId == null) {
       throw new core.ArgumentError("Parameter permissionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2630,6 +2948,9 @@
   ///
   /// [permissionId] - The GTM User ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserAccess].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2637,8 +2958,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UserAccess> get(
-      core.String accountId, core.String permissionId) {
+  async.Future<UserAccess> get(core.String accountId, core.String permissionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2652,6 +2973,9 @@
     if (permissionId == null) {
       throw new core.ArgumentError("Parameter permissionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2675,6 +2999,9 @@
   /// [accountId] - The GTM Account ID. @required
   /// tagmanager.accounts.permissions.list
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListAccountUsersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2682,7 +3009,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListAccountUsersResponse> list(core.String accountId) {
+  async.Future<ListAccountUsersResponse> list(core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2693,6 +3021,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -2718,6 +3049,9 @@
   ///
   /// [permissionId] - The GTM User ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserAccess].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2726,7 +3060,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UserAccess> update(
-      UserAccess request, core.String accountId, core.String permissionId) {
+      UserAccess request, core.String accountId, core.String permissionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2743,6 +3078,9 @@
     if (permissionId == null) {
       throw new core.ArgumentError("Parameter permissionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
diff --git a/generated/googleapis/lib/tagmanager/v2.dart b/generated/googleapis/lib/tagmanager/v2.dart
index f5d96b3..429ade4 100644
--- a/generated/googleapis/lib/tagmanager/v2.dart
+++ b/generated/googleapis/lib/tagmanager/v2.dart
@@ -72,6 +72,9 @@
   ///
   /// [path] - GTM Accounts's API relative path. Example: accounts/{account_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -79,7 +82,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Account> get(core.String path) {
+  async.Future<Account> get(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -90,6 +93,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -108,6 +114,9 @@
   ///
   /// [pageToken] - Continuation token for fetching the next page of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListAccountsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -115,7 +124,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListAccountsResponse> list({core.String pageToken}) {
+  async.Future<ListAccountsResponse> list(
+      {core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -126,6 +136,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'accounts';
 
@@ -149,6 +162,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the account in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Account].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -157,7 +173,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Account> update(Account request, core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -174,6 +190,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -211,6 +230,9 @@
   /// [parent] - GTM Account's API relative path. Example:
   /// accounts/{account_id}.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Container].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -218,7 +240,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Container> create(Container request, core.String parent) {
+  async.Future<Container> create(Container request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -232,6 +255,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/containers';
 
@@ -251,12 +277,15 @@
   /// [path] - GTM Container's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String path) {
+  async.Future delete(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -267,6 +296,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -288,6 +320,9 @@
   /// [path] - GTM Container's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Container].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -295,7 +330,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Container> get(core.String path) {
+  async.Future<Container> get(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -306,6 +341,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -327,6 +365,9 @@
   ///
   /// [pageToken] - Continuation token for fetching the next page of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListContainersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -335,7 +376,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListContainersResponse> list(core.String parent,
-      {core.String pageToken}) {
+      {core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -349,6 +390,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/containers';
 
@@ -373,6 +417,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the container in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Container].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -381,7 +428,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Container> update(Container request, core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -398,6 +445,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -426,6 +476,9 @@
   /// [parent] - GTM Container's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Environment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -433,7 +486,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Environment> create(Environment request, core.String parent) {
+  async.Future<Environment> create(Environment request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -447,6 +501,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/environments';
 
@@ -466,12 +523,15 @@
   /// [path] - GTM Environment's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/environments/{environment_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String path) {
+  async.Future delete(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -482,6 +542,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -503,6 +566,9 @@
   /// [path] - GTM Environment's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/environments/{environment_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Environment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -510,7 +576,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Environment> get(core.String path) {
+  async.Future<Environment> get(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -521,6 +587,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -542,6 +611,9 @@
   ///
   /// [pageToken] - Continuation token for fetching the next page of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListEnvironmentsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -550,7 +622,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListEnvironmentsResponse> list(core.String parent,
-      {core.String pageToken}) {
+      {core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -564,6 +636,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/environments';
 
@@ -589,6 +664,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the environment in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Environment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -597,7 +675,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Environment> patch(Environment request, core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -614,6 +692,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -635,6 +716,9 @@
   /// [path] - GTM Environment's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/environments/{environment_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Environment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -642,7 +726,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Environment> reauthorize(Environment request, core.String path) {
+  async.Future<Environment> reauthorize(Environment request, core.String path,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -656,6 +741,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path') + ':reauthorize';
 
@@ -680,6 +768,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the environment in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Environment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -688,7 +779,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Environment> update(Environment request, core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -705,6 +796,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -731,6 +825,9 @@
   /// [parent] - GTM Container's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContainerVersionHeader].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -738,7 +835,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ContainerVersionHeader> latest(core.String parent) {
+  async.Future<ContainerVersionHeader> latest(core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -749,6 +847,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') +
         '/version_headers:latest';
@@ -773,6 +874,9 @@
   ///
   /// [pageToken] - Continuation token for fetching the next page of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListContainerVersionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -781,7 +885,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListContainerVersionsResponse> list(core.String parent,
-      {core.bool includeDeleted, core.String pageToken}) {
+      {core.bool includeDeleted, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -798,6 +902,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariableReserved('$parent') + '/version_headers';
@@ -826,12 +933,15 @@
   /// [path] - GTM ContainerVersion's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/versions/{version_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String path) {
+  async.Future delete(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -842,6 +952,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -866,6 +979,9 @@
   /// [containerVersionId] - The GTM ContainerVersion ID. Specify published to
   /// retrieve the currently published version.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContainerVersion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -874,7 +990,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ContainerVersion> get(core.String path,
-      {core.String containerVersionId}) {
+      {core.String containerVersionId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -888,6 +1004,9 @@
     if (containerVersionId != null) {
       _queryParams["containerVersionId"] = [containerVersionId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -907,6 +1026,9 @@
   /// [parent] - GTM Container's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContainerVersion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -914,7 +1036,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ContainerVersion> live(core.String parent) {
+  async.Future<ContainerVersion> live(core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -925,6 +1048,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/versions:live';
 
@@ -947,6 +1073,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the container version in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PublishContainerVersionResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -955,7 +1084,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PublishContainerVersionResponse> publish(core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -969,6 +1098,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path') + ':publish';
 
@@ -990,6 +1122,9 @@
   /// [path] - GTM ContainerVersion's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/versions/{version_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContainerVersion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -997,7 +1132,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ContainerVersion> setLatest(core.String path) {
+  async.Future<ContainerVersion> setLatest(core.String path,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1008,6 +1144,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path') + ':set_latest';
 
@@ -1027,6 +1166,9 @@
   /// [path] - GTM ContainerVersion's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/versions/{version_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContainerVersion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1034,7 +1176,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ContainerVersion> undelete(core.String path) {
+  async.Future<ContainerVersion> undelete(core.String path,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1045,6 +1188,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path') + ':undelete';
 
@@ -1069,6 +1215,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the container version in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ContainerVersion].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1078,7 +1227,7 @@
   /// this method will complete with the same error.
   async.Future<ContainerVersion> update(
       ContainerVersion request, core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1095,6 +1244,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -1138,6 +1290,9 @@
   /// [parent] - GTM parent Container's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Workspace].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1145,7 +1300,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Workspace> create(Workspace request, core.String parent) {
+  async.Future<Workspace> create(Workspace request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1159,6 +1315,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/workspaces';
 
@@ -1182,6 +1341,9 @@
   /// [path] - GTM Workspace's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreateContainerVersionResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1190,7 +1352,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreateContainerVersionResponse> createVersion(
-      CreateContainerVersionRequestVersionOptions request, core.String path) {
+      CreateContainerVersionRequestVersionOptions request, core.String path,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1204,6 +1367,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path') + ':create_version';
 
@@ -1224,12 +1390,15 @@
   /// [path] - GTM Workspace's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String path) {
+  async.Future delete(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1240,6 +1409,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1261,6 +1433,9 @@
   /// [path] - GTM Workspace's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Workspace].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1268,7 +1443,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Workspace> get(core.String path) {
+  async.Future<Workspace> get(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1279,6 +1454,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -1298,6 +1476,9 @@
   /// [path] - GTM workspace proposal's relative path: Example:
   /// accounts/{aid}/containers/{cid}/workspace/{wid}/workspace_proposal
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [WorkspaceProposal].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1305,7 +1486,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<WorkspaceProposal> getProposal(core.String path) {
+  async.Future<WorkspaceProposal> getProposal(core.String path,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1316,6 +1498,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -1335,6 +1520,9 @@
   /// [path] - GTM Workspace's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetWorkspaceStatusResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1342,7 +1530,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GetWorkspaceStatusResponse> getStatus(core.String path) {
+  async.Future<GetWorkspaceStatusResponse> getStatus(core.String path,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1353,6 +1542,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path') + '/status';
 
@@ -1375,6 +1567,9 @@
   ///
   /// [pageToken] - Continuation token for fetching the next page of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListWorkspacesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1383,7 +1578,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListWorkspacesResponse> list(core.String parent,
-      {core.String pageToken}) {
+      {core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1397,6 +1592,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/workspaces';
 
@@ -1417,6 +1615,9 @@
   /// [path] - GTM Workspace's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [QuickPreviewResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1424,7 +1625,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<QuickPreviewResponse> quickPreview(core.String path) {
+  async.Future<QuickPreviewResponse> quickPreview(core.String path,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1435,6 +1637,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path') + ':quick_preview';
 
@@ -1460,13 +1665,16 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the entity_in_workspace in the merge conflict.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future resolveConflict(Entity request, core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1483,6 +1691,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1506,6 +1717,9 @@
   /// [path] - GTM Workspace's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SyncWorkspaceResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1513,7 +1727,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SyncWorkspaceResponse> sync(core.String path) {
+  async.Future<SyncWorkspaceResponse> sync(core.String path,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1524,6 +1739,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path') + ':sync';
 
@@ -1548,6 +1766,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the workspace in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Workspace].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1556,7 +1777,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Workspace> update(Workspace request, core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1573,6 +1794,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -1594,6 +1818,9 @@
   /// [path] - GTM workspace proposal's relative path: Example:
   /// accounts/{aid}/containers/{cid}/workspace/{wid}/workspace_proposal
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [WorkspaceProposal].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1602,7 +1829,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<WorkspaceProposal> updateProposal(
-      UpdateWorkspaceProposalRequest request, core.String path) {
+      UpdateWorkspaceProposalRequest request, core.String path,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1616,6 +1844,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -1645,6 +1876,9 @@
   ///
   /// [type] - The types of built-in variables to enable.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CreateBuiltInVariableResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1653,7 +1887,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CreateBuiltInVariableResponse> create(core.String parent,
-      {core.List<core.String> type}) {
+      {core.List<core.String> type, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1667,6 +1901,9 @@
     if (type != null) {
       _queryParams["type"] = type;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') +
         '/built_in_variables';
@@ -1690,12 +1927,16 @@
   ///
   /// [type] - The types of built-in variables to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String path, {core.List<core.String> type}) {
+  async.Future delete(core.String path,
+      {core.List<core.String> type, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1709,6 +1950,9 @@
     if (type != null) {
       _queryParams["type"] = type;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1732,6 +1976,9 @@
   ///
   /// [pageToken] - Continuation token for fetching the next page of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListEnabledBuiltInVariablesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1740,7 +1987,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListEnabledBuiltInVariablesResponse> list(core.String parent,
-      {core.String pageToken}) {
+      {core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1754,6 +2001,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') +
         '/built_in_variables';
@@ -1875,6 +2125,9 @@
   /// - "videoUrl"
   /// - "videoVisible"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RevertBuiltInVariableResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1883,7 +2136,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RevertBuiltInVariableResponse> revert(core.String path,
-      {core.String type}) {
+      {core.String type, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1897,6 +2150,9 @@
     if (type != null) {
       _queryParams["type"] = [type];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path') +
         '/built_in_variables:revert';
@@ -1927,6 +2183,9 @@
   /// [parent] - GTM Workspace's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Folder].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1934,7 +2193,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Folder> create(Folder request, core.String parent) {
+  async.Future<Folder> create(Folder request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1948,6 +2208,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/folders';
 
@@ -1967,12 +2230,15 @@
   /// [path] - GTM Folder's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/folders/{folder_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String path) {
+  async.Future delete(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1983,6 +2249,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2006,6 +2275,9 @@
   ///
   /// [pageToken] - Continuation token for fetching the next page of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FolderEntities].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2014,7 +2286,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FolderEntities> entities(core.String path,
-      {core.String pageToken}) {
+      {core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2028,6 +2300,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path') + ':entities';
 
@@ -2047,6 +2322,9 @@
   /// [path] - GTM Folder's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/folders/{folder_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Folder].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2054,7 +2332,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Folder> get(core.String path) {
+  async.Future<Folder> get(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2065,6 +2343,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -2086,6 +2367,9 @@
   ///
   /// [pageToken] - Continuation token for fetching the next page of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListFoldersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2094,7 +2378,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListFoldersResponse> list(core.String parent,
-      {core.String pageToken}) {
+      {core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2108,6 +2392,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/folders';
 
@@ -2135,6 +2422,9 @@
   ///
   /// [variableId] - The variables to be moved to the folder.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
@@ -2143,7 +2433,8 @@
   async.Future moveEntitiesToFolder(Folder request, core.String path,
       {core.List<core.String> tagId,
       core.List<core.String> triggerId,
-      core.List<core.String> variableId}) {
+      core.List<core.String> variableId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2166,6 +2457,9 @@
     if (variableId != null) {
       _queryParams["variableId"] = variableId;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2191,6 +2485,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the tag in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RevertFolderResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2199,7 +2496,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RevertFolderResponse> revert(core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2213,6 +2510,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path') + ':revert';
 
@@ -2237,6 +2537,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the folder in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Folder].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2245,7 +2548,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Folder> update(Folder request, core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2262,6 +2565,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -2290,6 +2596,9 @@
   /// [parent] - GTM Workspace's API relative path. Example:
   /// accounts/{aid}/containers/{cid}/workspace/{wid}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [WorkspaceProposal].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2298,7 +2607,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<WorkspaceProposal> create(
-      CreateWorkspaceProposalRequest request, core.String parent) {
+      CreateWorkspaceProposalRequest request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2312,6 +2622,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/proposal';
 
@@ -2331,12 +2644,15 @@
   /// [path] - GTM workspace proposal's relative path: Example:
   /// accounts/{aid}/containers/{cid}/workspace/{wid}/workspace_proposal
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String path) {
+  async.Future delete(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2347,6 +2663,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2377,6 +2696,9 @@
   /// [parent] - GTM Workspace's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Tag].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2384,7 +2706,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Tag> create(Tag request, core.String parent) {
+  async.Future<Tag> create(Tag request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2398,6 +2721,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/tags';
 
@@ -2417,12 +2743,15 @@
   /// [path] - GTM Tag's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/tags/{tag_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String path) {
+  async.Future delete(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2433,6 +2762,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2454,6 +2786,9 @@
   /// [path] - GTM Tag's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/tags/{tag_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Tag].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2461,7 +2796,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Tag> get(core.String path) {
+  async.Future<Tag> get(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2472,6 +2807,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -2493,6 +2831,9 @@
   ///
   /// [pageToken] - Continuation token for fetching the next page of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListTagsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2501,7 +2842,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListTagsResponse> list(core.String parent,
-      {core.String pageToken}) {
+      {core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2515,6 +2856,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/tags';
 
@@ -2537,6 +2881,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of thetag in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RevertTagResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2545,7 +2892,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RevertTagResponse> revert(core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2559,6 +2906,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path') + ':revert';
 
@@ -2583,6 +2933,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the tag in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Tag].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2591,7 +2944,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Tag> update(Tag request, core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2608,6 +2961,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -2636,6 +2992,9 @@
   /// [parent] - GTM Workspaces's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Trigger].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2643,7 +3002,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Trigger> create(Trigger request, core.String parent) {
+  async.Future<Trigger> create(Trigger request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2657,6 +3017,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/triggers';
 
@@ -2676,12 +3039,15 @@
   /// [path] - GTM Trigger's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/triggers/{trigger_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String path) {
+  async.Future delete(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2692,6 +3058,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2713,6 +3082,9 @@
   /// [path] - GTM Trigger's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/triggers/{trigger_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Trigger].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2720,7 +3092,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Trigger> get(core.String path) {
+  async.Future<Trigger> get(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2731,6 +3103,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -2752,6 +3127,9 @@
   ///
   /// [pageToken] - Continuation token for fetching the next page of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListTriggersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2760,7 +3138,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListTriggersResponse> list(core.String parent,
-      {core.String pageToken}) {
+      {core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2774,6 +3152,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/triggers';
 
@@ -2796,6 +3177,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the trigger in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RevertTriggerResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2804,7 +3188,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RevertTriggerResponse> revert(core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2818,6 +3202,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path') + ':revert';
 
@@ -2842,6 +3229,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the trigger in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Trigger].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2850,7 +3240,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Trigger> update(Trigger request, core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2867,6 +3257,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -2895,6 +3288,9 @@
   /// [parent] - GTM Workspace's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Variable].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2902,7 +3298,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Variable> create(Variable request, core.String parent) {
+  async.Future<Variable> create(Variable request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2916,6 +3313,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/variables';
 
@@ -2935,12 +3335,15 @@
   /// [path] - GTM Variable's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/variables/{variable_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String path) {
+  async.Future delete(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2951,6 +3354,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2972,6 +3378,9 @@
   /// [path] - GTM Variable's API relative path. Example:
   /// accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/variables/{variable_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Variable].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2979,7 +3388,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Variable> get(core.String path) {
+  async.Future<Variable> get(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2990,6 +3399,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -3011,6 +3423,9 @@
   ///
   /// [pageToken] - Continuation token for fetching the next page of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListVariablesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3019,7 +3434,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListVariablesResponse> list(core.String parent,
-      {core.String pageToken}) {
+      {core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3033,6 +3448,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$parent') + '/variables';
 
@@ -3055,6 +3473,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the variable in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RevertVariableResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3063,7 +3484,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RevertVariableResponse> revert(core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3077,6 +3498,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path') + ':revert';
 
@@ -3101,6 +3525,9 @@
   /// [fingerprint] - When provided, this fingerprint must match the fingerprint
   /// of the variable in storage.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Variable].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3109,7 +3536,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Variable> update(Variable request, core.String path,
-      {core.String fingerprint}) {
+      {core.String fingerprint, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3126,6 +3553,9 @@
     if (fingerprint != null) {
       _queryParams["fingerprint"] = [fingerprint];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -3153,6 +3583,9 @@
   ///
   /// [parent] - GTM Account's API relative path. Example: accounts/{account_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserPermission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3161,7 +3594,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UserPermission> create(
-      UserPermission request, core.String parent) {
+      UserPermission request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3175,6 +3609,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariableReserved('$parent') + '/user_permissions';
@@ -3196,12 +3633,15 @@
   /// [path] - GTM UserPermission's API relative path. Example:
   /// accounts/{account_id}/user_permissions/{user_permission_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String path) {
+  async.Future delete(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3212,6 +3652,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3233,6 +3676,9 @@
   /// [path] - GTM UserPermission's API relative path. Example:
   /// accounts/{account_id}/user_permissions/{user_permission_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserPermission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3240,7 +3686,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UserPermission> get(core.String path) {
+  async.Future<UserPermission> get(core.String path, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3251,6 +3697,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
@@ -3273,6 +3722,9 @@
   ///
   /// [pageToken] - Continuation token for fetching the next page of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListUserPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3281,7 +3733,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListUserPermissionsResponse> list(core.String parent,
-      {core.String pageToken}) {
+      {core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3295,6 +3747,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         commons.Escaper.ecapeVariableReserved('$parent') + '/user_permissions';
@@ -3318,6 +3773,9 @@
   /// [path] - GTM UserPermission's API relative path. Example:
   /// accounts/{account_id}/user_permissions/{user_permission_id}
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserPermission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3325,8 +3783,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<UserPermission> update(
-      UserPermission request, core.String path) {
+  async.Future<UserPermission> update(UserPermission request, core.String path,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3340,6 +3798,9 @@
     if (path == null) {
       throw new core.ArgumentError("Parameter path is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariableReserved('$path');
 
diff --git a/generated/googleapis/lib/tasks/v1.dart b/generated/googleapis/lib/tasks/v1.dart
index 65c5009..4d29d65 100644
--- a/generated/googleapis/lib/tasks/v1.dart
+++ b/generated/googleapis/lib/tasks/v1.dart
@@ -46,12 +46,15 @@
   ///
   /// [tasklist] - Task list identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String tasklist) {
+  async.Future delete(core.String tasklist, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -62,6 +65,9 @@
     if (tasklist == null) {
       throw new core.ArgumentError("Parameter tasklist is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -82,6 +88,9 @@
   ///
   /// [tasklist] - Task list identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TaskList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -89,7 +98,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TaskList> get(core.String tasklist) {
+  async.Future<TaskList> get(core.String tasklist, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -100,6 +109,9 @@
     if (tasklist == null) {
       throw new core.ArgumentError("Parameter tasklist is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/@me/lists/' + commons.Escaper.ecapeVariable('$tasklist');
 
@@ -119,6 +131,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TaskList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -126,7 +141,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TaskList> insert(TaskList request) {
+  async.Future<TaskList> insert(TaskList request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -137,6 +152,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/@me/lists';
 
@@ -158,6 +176,9 @@
   ///
   /// [pageToken] - Token specifying the result page to return. Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TaskLists].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -166,7 +187,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TaskLists> list(
-      {core.String maxResults, core.String pageToken}) {
+      {core.String maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -180,6 +201,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/@me/lists';
 
@@ -201,6 +225,9 @@
   ///
   /// [tasklist] - Task list identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TaskList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -208,7 +235,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TaskList> patch(TaskList request, core.String tasklist) {
+  async.Future<TaskList> patch(TaskList request, core.String tasklist,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -222,6 +250,9 @@
     if (tasklist == null) {
       throw new core.ArgumentError("Parameter tasklist is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/@me/lists/' + commons.Escaper.ecapeVariable('$tasklist');
 
@@ -242,6 +273,9 @@
   ///
   /// [tasklist] - Task list identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TaskList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -249,7 +283,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TaskList> update(TaskList request, core.String tasklist) {
+  async.Future<TaskList> update(TaskList request, core.String tasklist,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -263,6 +298,9 @@
     if (tasklist == null) {
       throw new core.ArgumentError("Parameter tasklist is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'users/@me/lists/' + commons.Escaper.ecapeVariable('$tasklist');
 
@@ -289,12 +327,15 @@
   ///
   /// [tasklist] - Task list identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future clear(core.String tasklist) {
+  async.Future clear(core.String tasklist, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -305,6 +346,9 @@
     if (tasklist == null) {
       throw new core.ArgumentError("Parameter tasklist is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -327,12 +371,16 @@
   ///
   /// [task] - Task identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String tasklist, core.String task) {
+  async.Future delete(core.String tasklist, core.String task,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -346,6 +394,9 @@
     if (task == null) {
       throw new core.ArgumentError("Parameter task is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -371,6 +422,9 @@
   ///
   /// [task] - Task identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Task].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -378,7 +432,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Task> get(core.String tasklist, core.String task) {
+  async.Future<Task> get(core.String tasklist, core.String task,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -392,6 +447,9 @@
     if (task == null) {
       throw new core.ArgumentError("Parameter task is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'lists/' +
         commons.Escaper.ecapeVariable('$tasklist') +
@@ -422,6 +480,9 @@
   /// the first position among its siblings, this parameter is omitted.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Task].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -430,7 +491,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Task> insert(Task request, core.String tasklist,
-      {core.String parent, core.String previous}) {
+      {core.String parent, core.String previous, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -450,6 +511,9 @@
     if (previous != null) {
       _queryParams["previous"] = [previous];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'lists/' + commons.Escaper.ecapeVariable('$tasklist') + '/tasks';
 
@@ -500,6 +564,9 @@
   /// 3339 timestamp) to filter by. Optional. The default is not to filter by
   /// last modification time.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Tasks].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -517,7 +584,8 @@
       core.bool showCompleted,
       core.bool showDeleted,
       core.bool showHidden,
-      core.String updatedMin}) {
+      core.String updatedMin,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -558,6 +626,9 @@
     if (updatedMin != null) {
       _queryParams["updatedMin"] = [updatedMin];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'lists/' + commons.Escaper.ecapeVariable('$tasklist') + '/tasks';
 
@@ -587,6 +658,9 @@
   /// the first position among its siblings, this parameter is omitted.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Task].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -595,7 +669,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Task> move(core.String tasklist, core.String task,
-      {core.String parent, core.String previous}) {
+      {core.String parent, core.String previous, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -615,6 +689,9 @@
     if (previous != null) {
       _queryParams["previous"] = [previous];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'lists/' +
         commons.Escaper.ecapeVariable('$tasklist') +
@@ -641,6 +718,9 @@
   ///
   /// [task] - Task identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Task].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -648,8 +728,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Task> patch(
-      Task request, core.String tasklist, core.String task) {
+  async.Future<Task> patch(Task request, core.String tasklist, core.String task,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -666,6 +746,9 @@
     if (task == null) {
       throw new core.ArgumentError("Parameter task is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'lists/' +
         commons.Escaper.ecapeVariable('$tasklist') +
@@ -691,6 +774,9 @@
   ///
   /// [task] - Task identifier.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Task].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -699,7 +785,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Task> update(
-      Task request, core.String tasklist, core.String task) {
+      Task request, core.String tasklist, core.String task,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -716,6 +803,9 @@
     if (task == null) {
       throw new core.ArgumentError("Parameter task is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'lists/' +
         commons.Escaper.ecapeVariable('$tasklist') +
diff --git a/generated/googleapis/lib/testing/v1.dart b/generated/googleapis/lib/testing/v1.dart
new file mode 100644
index 0000000..8e1d32f
--- /dev/null
+++ b/generated/googleapis/lib/testing/v1.dart
@@ -0,0 +1,2607 @@
+// This is a generated file (see the discoveryapis_generator project).
+
+library googleapis.testing.v1;
+
+import 'dart:core' as core;
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+
+import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
+import 'package:http/http.dart' as http;
+
+export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
+    show ApiRequestError, DetailedApiRequestError;
+
+const core.String USER_AGENT = 'dart-api-client testing/v1';
+
+/// Allows developers to run automated tests for their mobile applications on
+/// Google infrastructure.
+class TestingApi {
+  /// View and manage your data across Google Cloud Platform services
+  static const CloudPlatformScope =
+      "https://www.googleapis.com/auth/cloud-platform";
+
+  /// View your data across Google Cloud Platform services
+  static const CloudPlatformReadOnlyScope =
+      "https://www.googleapis.com/auth/cloud-platform.read-only";
+
+  final commons.ApiRequester _requester;
+
+  ProjectsResourceApi get projects => new ProjectsResourceApi(_requester);
+  TestEnvironmentCatalogResourceApi get testEnvironmentCatalog =>
+      new TestEnvironmentCatalogResourceApi(_requester);
+
+  TestingApi(http.Client client,
+      {core.String rootUrl: "https://testing.googleapis.com/",
+      core.String servicePath: ""})
+      : _requester =
+            new commons.ApiRequester(client, rootUrl, servicePath, USER_AGENT);
+}
+
+class ProjectsResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsTestMatricesResourceApi get testMatrices =>
+      new ProjectsTestMatricesResourceApi(_requester);
+
+  ProjectsResourceApi(commons.ApiRequester client) : _requester = client;
+}
+
+class ProjectsTestMatricesResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsTestMatricesResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Cancels unfinished test executions in a test matrix.
+  /// This call returns immediately and cancellation proceeds asychronously.
+  /// If the matrix is already final, this operation will have no effect.
+  ///
+  /// May return any of the following canonical error codes:
+  ///
+  /// - PERMISSION_DENIED - if the user is not authorized to read project
+  /// - INVALID_ARGUMENT - if the request is malformed
+  /// - NOT_FOUND - if the Test Matrix does not exist
+  ///
+  /// Request parameters:
+  ///
+  /// [projectId] - Cloud project that owns the test.
+  ///
+  /// [testMatrixId] - Test matrix that will be canceled.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [CancelTestMatrixResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<CancelTestMatrixResponse> cancel(
+      core.String projectId, core.String testMatrixId,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (projectId == null) {
+      throw new core.ArgumentError("Parameter projectId is required.");
+    }
+    if (testMatrixId == null) {
+      throw new core.ArgumentError("Parameter testMatrixId is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/projects/' +
+        commons.Escaper.ecapeVariable('$projectId') +
+        '/testMatrices/' +
+        commons.Escaper.ecapeVariable('$testMatrixId') +
+        ':cancel';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new CancelTestMatrixResponse.fromJson(data));
+  }
+
+  /// Request to run a matrix of tests according to the given specifications.
+  /// Unsupported environments will be returned in the state UNSUPPORTED.
+  /// Matrices are limited to at most 200 supported executions.
+  ///
+  /// May return any of the following canonical error codes:
+  ///
+  /// - PERMISSION_DENIED - if the user is not authorized to write to project
+  /// - INVALID_ARGUMENT - if the request is malformed or if the matrix expands
+  ///                      to more than 200 supported executions
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [projectId] - The GCE project under which this job will run.
+  ///
+  /// [requestId] - A string id used to detect duplicated requests.
+  /// Ids are automatically scoped to a project, so
+  /// users should ensure the ID is unique per-project.
+  /// A UUID is recommended.
+  ///
+  /// Optional, but strongly recommended.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [TestMatrix].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<TestMatrix> create(TestMatrix request, core.String projectId,
+      {core.String requestId, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (projectId == null) {
+      throw new core.ArgumentError("Parameter projectId is required.");
+    }
+    if (requestId != null) {
+      _queryParams["requestId"] = [requestId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/projects/' +
+        commons.Escaper.ecapeVariable('$projectId') +
+        '/testMatrices';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new TestMatrix.fromJson(data));
+  }
+
+  /// Check the status of a test matrix.
+  ///
+  /// May return any of the following canonical error codes:
+  ///
+  /// - PERMISSION_DENIED - if the user is not authorized to read project
+  /// - INVALID_ARGUMENT - if the request is malformed
+  /// - NOT_FOUND - if the Test Matrix does not exist
+  ///
+  /// Request parameters:
+  ///
+  /// [projectId] - Cloud project that owns the test matrix.
+  ///
+  /// [testMatrixId] - Unique test matrix id which was assigned by the service.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [TestMatrix].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<TestMatrix> get(core.String projectId, core.String testMatrixId,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (projectId == null) {
+      throw new core.ArgumentError("Parameter projectId is required.");
+    }
+    if (testMatrixId == null) {
+      throw new core.ArgumentError("Parameter testMatrixId is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/projects/' +
+        commons.Escaper.ecapeVariable('$projectId') +
+        '/testMatrices/' +
+        commons.Escaper.ecapeVariable('$testMatrixId');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new TestMatrix.fromJson(data));
+  }
+}
+
+class TestEnvironmentCatalogResourceApi {
+  final commons.ApiRequester _requester;
+
+  TestEnvironmentCatalogResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Get the catalog of supported test environments.
+  ///
+  /// May return any of the following canonical error codes:
+  ///
+  /// - INVALID_ARGUMENT - if the request is malformed
+  /// - NOT_FOUND - if the environment type does not exist
+  /// - INTERNAL - if an internal error occurred
+  ///
+  /// Request parameters:
+  ///
+  /// [environmentType] - The type of environment that should be listed.
+  /// Required
+  /// Possible string values are:
+  /// - "ENVIRONMENT_TYPE_UNSPECIFIED" : A ENVIRONMENT_TYPE_UNSPECIFIED.
+  /// - "ANDROID" : A ANDROID.
+  /// - "NETWORK_CONFIGURATION" : A NETWORK_CONFIGURATION.
+  ///
+  /// [projectId] - For authorization, the cloud project requesting the
+  /// TestEnvironmentCatalog.
+  /// Optional
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [TestEnvironmentCatalog].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<TestEnvironmentCatalog> get(core.String environmentType,
+      {core.String projectId, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (environmentType == null) {
+      throw new core.ArgumentError("Parameter environmentType is required.");
+    }
+    if (projectId != null) {
+      _queryParams["projectId"] = [projectId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1/testEnvironmentCatalog/' +
+        commons.Escaper.ecapeVariable('$environmentType');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new TestEnvironmentCatalog.fromJson(data));
+  }
+}
+
+/// Identifies an account and how to log into it
+class Account {
+  /// An automatic google login account
+  GoogleAuto googleAuto;
+
+  Account();
+
+  Account.fromJson(core.Map _json) {
+    if (_json.containsKey("googleAuto")) {
+      googleAuto = new GoogleAuto.fromJson(_json["googleAuto"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (googleAuto != null) {
+      _json["googleAuto"] = (googleAuto).toJson();
+    }
+    return _json;
+  }
+}
+
+/// A single Android device.
+class AndroidDevice {
+  /// The id of the Android device to be used.
+  /// Use the EnvironmentDiscoveryService to get supported options.
+  /// Required
+  core.String androidModelId;
+
+  /// The id of the Android OS version to be used.
+  /// Use the EnvironmentDiscoveryService to get supported options.
+  /// Required
+  core.String androidVersionId;
+
+  /// The locale the test device used for testing.
+  /// Use the EnvironmentDiscoveryService to get supported options.
+  /// Required
+  core.String locale;
+
+  /// How the device is oriented during the test.
+  /// Use the EnvironmentDiscoveryService to get supported options.
+  /// Required
+  core.String orientation;
+
+  AndroidDevice();
+
+  AndroidDevice.fromJson(core.Map _json) {
+    if (_json.containsKey("androidModelId")) {
+      androidModelId = _json["androidModelId"];
+    }
+    if (_json.containsKey("androidVersionId")) {
+      androidVersionId = _json["androidVersionId"];
+    }
+    if (_json.containsKey("locale")) {
+      locale = _json["locale"];
+    }
+    if (_json.containsKey("orientation")) {
+      orientation = _json["orientation"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (androidModelId != null) {
+      _json["androidModelId"] = androidModelId;
+    }
+    if (androidVersionId != null) {
+      _json["androidVersionId"] = androidVersionId;
+    }
+    if (locale != null) {
+      _json["locale"] = locale;
+    }
+    if (orientation != null) {
+      _json["orientation"] = orientation;
+    }
+    return _json;
+  }
+}
+
+/// The currently supported Android devices.
+class AndroidDeviceCatalog {
+  /// The set of supported Android device models.
+  /// @OutputOnly
+  core.List<AndroidModel> models;
+
+  /// The set of supported runtime configurations.
+  /// @OutputOnly
+  AndroidRuntimeConfiguration runtimeConfiguration;
+
+  /// The set of supported Android OS versions.
+  /// @OutputOnly
+  core.List<AndroidVersion> versions;
+
+  AndroidDeviceCatalog();
+
+  AndroidDeviceCatalog.fromJson(core.Map _json) {
+    if (_json.containsKey("models")) {
+      models = _json["models"]
+          .map((value) => new AndroidModel.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("runtimeConfiguration")) {
+      runtimeConfiguration = new AndroidRuntimeConfiguration.fromJson(
+          _json["runtimeConfiguration"]);
+    }
+    if (_json.containsKey("versions")) {
+      versions = _json["versions"]
+          .map((value) => new AndroidVersion.fromJson(value))
+          .toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (models != null) {
+      _json["models"] = models.map((value) => (value).toJson()).toList();
+    }
+    if (runtimeConfiguration != null) {
+      _json["runtimeConfiguration"] = (runtimeConfiguration).toJson();
+    }
+    if (versions != null) {
+      _json["versions"] = versions.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// A list of Android device configurations in which the test is to be executed.
+class AndroidDeviceList {
+  /// A list of Android devices
+  /// Required
+  core.List<AndroidDevice> androidDevices;
+
+  AndroidDeviceList();
+
+  AndroidDeviceList.fromJson(core.Map _json) {
+    if (_json.containsKey("androidDevices")) {
+      androidDevices = _json["androidDevices"]
+          .map((value) => new AndroidDevice.fromJson(value))
+          .toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (androidDevices != null) {
+      _json["androidDevices"] =
+          androidDevices.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// A test of an Android application that can control an Android component
+/// independently of its normal lifecycle.
+/// Android instrumentation tests run an application APK and test APK inside the
+/// same process on a virtual or physical AndroidDevice.  They also specify
+/// a test runner class, such as com.google.GoogleTestRunner, which can vary
+/// on the specific instrumentation framework chosen.
+///
+/// See <http://developer.android.com/tools/testing/testing_android.html> for
+/// more information on types of Android tests.
+class AndroidInstrumentationTest {
+  /// The APK for the application under test.
+  /// Required
+  FileReference appApk;
+
+  /// The java package for the application under test.
+  /// Optional, default is determined by examining the application's manifest.
+  core.String appPackageId;
+
+  /// The option of whether running each test within its own invocation of
+  /// instrumentation with Android Test Orchestrator or not.
+  /// ** Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or
+  /// higher! **
+  /// Orchestrator offers the following benefits:
+  ///  - No shared state
+  ///  - Crashes are isolated
+  ///  - Logs are scoped per test
+  ///
+  /// See
+  /// <https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator>
+  /// for more information about Android Test Orchestrator.
+  ///
+  /// Optional, if empty, test will be run without orchestrator.
+  /// Possible string values are:
+  /// - "ORCHESTRATOR_OPTION_UNSPECIFIED" : This means that the server should
+  /// choose the mode. And test will be run
+  /// without orchestrator.
+  /// Using orchestrator is highly encouraged because of all the benefits it
+  /// offers. And in the future, all instrumentation tests will be run with
+  /// orchestrator by default if preference unspecified.
+  /// - "USE_ORCHESTRATOR" : Run test using orchestrator.
+  /// ** Only compatible with AndroidJUnitRunner version 1.0 or higher! **
+  /// Recommended.
+  /// - "DO_NOT_USE_ORCHESTRATOR" : Run test without using orchestrator.
+  core.String orchestratorOption;
+
+  /// The APK containing the test code to be executed.
+  /// Required
+  FileReference testApk;
+
+  /// The java package for the test to be executed.
+  /// Optional, default is determined by examining the application's manifest.
+  core.String testPackageId;
+
+  /// The InstrumentationTestRunner class.
+  /// Optional, default is determined by examining the application's manifest.
+  core.String testRunnerClass;
+
+  /// Each target must be fully qualified with the package name or class name,
+  /// in one of these formats:
+  ///  - "package package_name"
+  ///  - "class package_name.class_name"
+  ///  - "class package_name.class_name#method_name"
+  ///
+  /// Optional, if empty, all targets in the module will be run.
+  core.List<core.String> testTargets;
+
+  AndroidInstrumentationTest();
+
+  AndroidInstrumentationTest.fromJson(core.Map _json) {
+    if (_json.containsKey("appApk")) {
+      appApk = new FileReference.fromJson(_json["appApk"]);
+    }
+    if (_json.containsKey("appPackageId")) {
+      appPackageId = _json["appPackageId"];
+    }
+    if (_json.containsKey("orchestratorOption")) {
+      orchestratorOption = _json["orchestratorOption"];
+    }
+    if (_json.containsKey("testApk")) {
+      testApk = new FileReference.fromJson(_json["testApk"]);
+    }
+    if (_json.containsKey("testPackageId")) {
+      testPackageId = _json["testPackageId"];
+    }
+    if (_json.containsKey("testRunnerClass")) {
+      testRunnerClass = _json["testRunnerClass"];
+    }
+    if (_json.containsKey("testTargets")) {
+      testTargets = _json["testTargets"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (appApk != null) {
+      _json["appApk"] = (appApk).toJson();
+    }
+    if (appPackageId != null) {
+      _json["appPackageId"] = appPackageId;
+    }
+    if (orchestratorOption != null) {
+      _json["orchestratorOption"] = orchestratorOption;
+    }
+    if (testApk != null) {
+      _json["testApk"] = (testApk).toJson();
+    }
+    if (testPackageId != null) {
+      _json["testPackageId"] = testPackageId;
+    }
+    if (testRunnerClass != null) {
+      _json["testRunnerClass"] = testRunnerClass;
+    }
+    if (testTargets != null) {
+      _json["testTargets"] = testTargets;
+    }
+    return _json;
+  }
+}
+
+/// A set of Android device configuration permutations is defined by the
+/// the cross-product of the given axes.  Internally, the given AndroidMatrix
+/// will be expanded into a set of AndroidDevices.
+///
+/// Only supported permutations will be instantiated.  Invalid permutations
+/// (e.g., incompatible models/versions) are ignored.
+class AndroidMatrix {
+  /// The ids of the set of Android device to be used.
+  /// Use the EnvironmentDiscoveryService to get supported options.
+  /// Required
+  core.List<core.String> androidModelIds;
+
+  /// The ids of the set of Android OS version to be used.
+  /// Use the EnvironmentDiscoveryService to get supported options.
+  /// Required
+  core.List<core.String> androidVersionIds;
+
+  /// The set of locales the test device will enable for testing.
+  /// Use the EnvironmentDiscoveryService to get supported options.
+  /// Required
+  core.List<core.String> locales;
+
+  /// The set of orientations to test with.
+  /// Use the EnvironmentDiscoveryService to get supported options.
+  /// Required
+  core.List<core.String> orientations;
+
+  AndroidMatrix();
+
+  AndroidMatrix.fromJson(core.Map _json) {
+    if (_json.containsKey("androidModelIds")) {
+      androidModelIds = _json["androidModelIds"];
+    }
+    if (_json.containsKey("androidVersionIds")) {
+      androidVersionIds = _json["androidVersionIds"];
+    }
+    if (_json.containsKey("locales")) {
+      locales = _json["locales"];
+    }
+    if (_json.containsKey("orientations")) {
+      orientations = _json["orientations"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (androidModelIds != null) {
+      _json["androidModelIds"] = androidModelIds;
+    }
+    if (androidVersionIds != null) {
+      _json["androidVersionIds"] = androidVersionIds;
+    }
+    if (locales != null) {
+      _json["locales"] = locales;
+    }
+    if (orientations != null) {
+      _json["orientations"] = orientations;
+    }
+    return _json;
+  }
+}
+
+/// A description of an Android device tests may be run on.
+class AndroidModel {
+  /// The company that this device is branded with.
+  /// Example: "Google", "Samsung"
+  /// @OutputOnly
+  core.String brand;
+
+  /// The name of the industrial design.
+  /// This corresponds to android.os.Build.DEVICE
+  /// @OutputOnly
+  core.String codename;
+
+  /// Whether this device is virtual or physical.
+  /// @OutputOnly
+  /// Possible string values are:
+  /// - "DEVICE_FORM_UNSPECIFIED" : Do not use.  For proto versioning only.
+  /// - "VIRTUAL" : A software stack that simulates the device
+  /// - "PHYSICAL" : Actual hardware
+  core.String form;
+
+  /// The unique opaque id for this model.
+  /// Use this for invoking the TestExecutionService.
+  /// @OutputOnly
+  core.String id;
+
+  /// The manufacturer of this device.
+  /// @OutputOnly
+  core.String manufacturer;
+
+  /// The human-readable marketing name for this device model.
+  /// Examples: "Nexus 5", "Galaxy S5"
+  /// @OutputOnly
+  core.String name;
+
+  /// Screen density in DPI.
+  /// This corresponds to ro.sf.lcd_density
+  /// @OutputOnly
+  core.int screenDensity;
+
+  /// Screen size in the horizontal (X) dimension measured in pixels.
+  /// @OutputOnly
+  core.int screenX;
+
+  /// Screen size in the vertical (Y) dimension measured in pixels.
+  /// @OutputOnly
+  core.int screenY;
+
+  /// The list of supported ABIs for this device.
+  /// This corresponds to either android.os.Build.SUPPORTED_ABIS (for API level
+  /// 21 and above) or android.os.Build.CPU_ABI/CPU_ABI2.
+  /// The most preferred ABI is the first element in the list.
+  ///
+  /// Elements are optionally prefixed by "version_id:" (where version_id is
+  /// the id of an AndroidVersion), denoting an ABI that is supported only on
+  /// a particular version.
+  /// @OutputOnly
+  core.List<core.String> supportedAbis;
+
+  /// The set of Android versions this device supports.
+  /// @OutputOnly
+  core.List<core.String> supportedVersionIds;
+
+  /// Tags for this dimension.
+  /// Examples: "default", "preview", "deprecated"
+  core.List<core.String> tags;
+
+  AndroidModel();
+
+  AndroidModel.fromJson(core.Map _json) {
+    if (_json.containsKey("brand")) {
+      brand = _json["brand"];
+    }
+    if (_json.containsKey("codename")) {
+      codename = _json["codename"];
+    }
+    if (_json.containsKey("form")) {
+      form = _json["form"];
+    }
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("manufacturer")) {
+      manufacturer = _json["manufacturer"];
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("screenDensity")) {
+      screenDensity = _json["screenDensity"];
+    }
+    if (_json.containsKey("screenX")) {
+      screenX = _json["screenX"];
+    }
+    if (_json.containsKey("screenY")) {
+      screenY = _json["screenY"];
+    }
+    if (_json.containsKey("supportedAbis")) {
+      supportedAbis = _json["supportedAbis"];
+    }
+    if (_json.containsKey("supportedVersionIds")) {
+      supportedVersionIds = _json["supportedVersionIds"];
+    }
+    if (_json.containsKey("tags")) {
+      tags = _json["tags"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (brand != null) {
+      _json["brand"] = brand;
+    }
+    if (codename != null) {
+      _json["codename"] = codename;
+    }
+    if (form != null) {
+      _json["form"] = form;
+    }
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (manufacturer != null) {
+      _json["manufacturer"] = manufacturer;
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (screenDensity != null) {
+      _json["screenDensity"] = screenDensity;
+    }
+    if (screenX != null) {
+      _json["screenX"] = screenX;
+    }
+    if (screenY != null) {
+      _json["screenY"] = screenY;
+    }
+    if (supportedAbis != null) {
+      _json["supportedAbis"] = supportedAbis;
+    }
+    if (supportedVersionIds != null) {
+      _json["supportedVersionIds"] = supportedVersionIds;
+    }
+    if (tags != null) {
+      _json["tags"] = tags;
+    }
+    return _json;
+  }
+}
+
+/// A test of an android application that explores the application on a virtual
+/// or physical Android Device, finding culprits and crashes as it goes.
+class AndroidRoboTest {
+  /// The APK for the application under test.
+  /// Required
+  FileReference appApk;
+
+  /// The initial activity that should be used to start the app.
+  /// Optional
+  core.String appInitialActivity;
+
+  /// The java package for the application under test.
+  /// Optional, default is determined by examining the application's manifest.
+  core.String appPackageId;
+
+  /// The max depth of the traversal stack Robo can explore. Needs to be at
+  /// least
+  /// 2 to make Robo explore the app beyond the first activity.
+  /// Default is 50.
+  /// Optional
+  core.int maxDepth;
+
+  /// The max number of steps Robo can execute.
+  /// Default is no limit.
+  /// Optional
+  core.int maxSteps;
+
+  /// A set of directives Robo should apply during the crawl.
+  /// This allows users to customize the crawl. For example, the username and
+  /// password for a test account can be provided.
+  /// Optional
+  core.List<RoboDirective> roboDirectives;
+
+  AndroidRoboTest();
+
+  AndroidRoboTest.fromJson(core.Map _json) {
+    if (_json.containsKey("appApk")) {
+      appApk = new FileReference.fromJson(_json["appApk"]);
+    }
+    if (_json.containsKey("appInitialActivity")) {
+      appInitialActivity = _json["appInitialActivity"];
+    }
+    if (_json.containsKey("appPackageId")) {
+      appPackageId = _json["appPackageId"];
+    }
+    if (_json.containsKey("maxDepth")) {
+      maxDepth = _json["maxDepth"];
+    }
+    if (_json.containsKey("maxSteps")) {
+      maxSteps = _json["maxSteps"];
+    }
+    if (_json.containsKey("roboDirectives")) {
+      roboDirectives = _json["roboDirectives"]
+          .map((value) => new RoboDirective.fromJson(value))
+          .toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (appApk != null) {
+      _json["appApk"] = (appApk).toJson();
+    }
+    if (appInitialActivity != null) {
+      _json["appInitialActivity"] = appInitialActivity;
+    }
+    if (appPackageId != null) {
+      _json["appPackageId"] = appPackageId;
+    }
+    if (maxDepth != null) {
+      _json["maxDepth"] = maxDepth;
+    }
+    if (maxSteps != null) {
+      _json["maxSteps"] = maxSteps;
+    }
+    if (roboDirectives != null) {
+      _json["roboDirectives"] =
+          roboDirectives.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// Configuration that can be selected at the time a test is run.
+class AndroidRuntimeConfiguration {
+  /// The set of available locales.
+  /// @OutputOnly
+  core.List<Locale> locales;
+
+  /// The set of available orientations.
+  /// @OutputOnly
+  core.List<Orientation> orientations;
+
+  AndroidRuntimeConfiguration();
+
+  AndroidRuntimeConfiguration.fromJson(core.Map _json) {
+    if (_json.containsKey("locales")) {
+      locales =
+          _json["locales"].map((value) => new Locale.fromJson(value)).toList();
+    }
+    if (_json.containsKey("orientations")) {
+      orientations = _json["orientations"]
+          .map((value) => new Orientation.fromJson(value))
+          .toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (locales != null) {
+      _json["locales"] = locales.map((value) => (value).toJson()).toList();
+    }
+    if (orientations != null) {
+      _json["orientations"] =
+          orientations.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// A test of an Android Application with a Test Loop.
+/// The intent <intent-name> will be implicitly added, since Games is the only
+/// user of this api, for the time being.
+class AndroidTestLoop {
+  /// The APK for the application under test.
+  /// Required
+  FileReference appApk;
+
+  /// The java package for the application under test.
+  /// Optional, default is determined by examining the application's manifest.
+  core.String appPackageId;
+
+  /// The list of scenario labels that should be run during the test.
+  /// The scenario labels should map to labels defined in the application's
+  /// manifest. For example, player_experience and
+  /// com.google.test.loops.player_experience add all of the loops labeled in
+  /// the
+  /// manifest with the com.google.test.loops.player_experience name to the
+  /// execution.
+  /// Optional. Scenarios can also be specified in the scenarios field.
+  core.List<core.String> scenarioLabels;
+
+  /// The list of scenarios that should be run during the test.
+  /// Optional, default is all test loops, derived from the application's
+  /// manifest.
+  core.List<core.int> scenarios;
+
+  AndroidTestLoop();
+
+  AndroidTestLoop.fromJson(core.Map _json) {
+    if (_json.containsKey("appApk")) {
+      appApk = new FileReference.fromJson(_json["appApk"]);
+    }
+    if (_json.containsKey("appPackageId")) {
+      appPackageId = _json["appPackageId"];
+    }
+    if (_json.containsKey("scenarioLabels")) {
+      scenarioLabels = _json["scenarioLabels"];
+    }
+    if (_json.containsKey("scenarios")) {
+      scenarios = _json["scenarios"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (appApk != null) {
+      _json["appApk"] = (appApk).toJson();
+    }
+    if (appPackageId != null) {
+      _json["appPackageId"] = appPackageId;
+    }
+    if (scenarioLabels != null) {
+      _json["scenarioLabels"] = scenarioLabels;
+    }
+    if (scenarios != null) {
+      _json["scenarios"] = scenarios;
+    }
+    return _json;
+  }
+}
+
+/// A version of the Android OS
+class AndroidVersion {
+  /// The API level for this Android version.
+  /// Examples: 18, 19
+  /// @OutputOnly
+  core.int apiLevel;
+
+  /// The code name for this Android version.
+  /// Examples: "JellyBean", "KitKat"
+  /// @OutputOnly
+  core.String codeName;
+
+  /// Market share for this version.
+  /// @OutputOnly
+  Distribution distribution;
+
+  /// An opaque id for this Android version.
+  /// Use this id to invoke the TestExecutionService.
+  /// @OutputOnly
+  core.String id;
+
+  /// The date this Android version became available in the market.
+  /// @OutputOnly
+  Date releaseDate;
+
+  /// Tags for this dimension.
+  /// Examples: "default", "preview", "deprecated"
+  core.List<core.String> tags;
+
+  /// A string representing this version of the Android OS.
+  /// Examples: "4.3", "4.4"
+  /// @OutputOnly
+  core.String versionString;
+
+  AndroidVersion();
+
+  AndroidVersion.fromJson(core.Map _json) {
+    if (_json.containsKey("apiLevel")) {
+      apiLevel = _json["apiLevel"];
+    }
+    if (_json.containsKey("codeName")) {
+      codeName = _json["codeName"];
+    }
+    if (_json.containsKey("distribution")) {
+      distribution = new Distribution.fromJson(_json["distribution"]);
+    }
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("releaseDate")) {
+      releaseDate = new Date.fromJson(_json["releaseDate"]);
+    }
+    if (_json.containsKey("tags")) {
+      tags = _json["tags"];
+    }
+    if (_json.containsKey("versionString")) {
+      versionString = _json["versionString"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (apiLevel != null) {
+      _json["apiLevel"] = apiLevel;
+    }
+    if (codeName != null) {
+      _json["codeName"] = codeName;
+    }
+    if (distribution != null) {
+      _json["distribution"] = (distribution).toJson();
+    }
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (releaseDate != null) {
+      _json["releaseDate"] = (releaseDate).toJson();
+    }
+    if (tags != null) {
+      _json["tags"] = tags;
+    }
+    if (versionString != null) {
+      _json["versionString"] = versionString;
+    }
+    return _json;
+  }
+}
+
+/// Response containing the current state of the specified test matrix.
+class CancelTestMatrixResponse {
+  /// The current rolled-up state of the test matrix.
+  /// If this state is already final, then the cancelation request will
+  /// have no effect.
+  /// Possible string values are:
+  /// - "TEST_STATE_UNSPECIFIED" : Do not use.  For proto versioning only.
+  /// - "VALIDATING" : The execution or matrix is being validated.
+  /// - "PENDING" : The execution or matrix is waiting for resources to become
+  /// available.
+  /// - "RUNNING" : The execution is currently being processed.
+  ///
+  /// Can only be set on an execution.
+  /// - "FINISHED" : The execution or matrix has terminated normally.
+  ///
+  /// On a matrix this means that the matrix level processing completed
+  /// normally,
+  /// but individual executions may be in an ERROR state.
+  /// - "ERROR" : The execution or matrix has stopped because it encountered an
+  /// infrastructure failure.
+  /// - "UNSUPPORTED_ENVIRONMENT" : The execution was not run because it
+  /// corresponds to a unsupported
+  /// environment.
+  ///
+  /// Can only be set on an execution.
+  /// - "INCOMPATIBLE_ENVIRONMENT" : The execution was not run because the
+  /// provided inputs are incompatible with
+  /// the requested environment.
+  ///
+  /// Example: requested AndroidVersion is lower than APK's minSdkVersion
+  ///
+  /// Can only be set on an execution.
+  /// - "INCOMPATIBLE_ARCHITECTURE" : The execution was not run because the
+  /// provided inputs are incompatible with
+  /// the requested architecture.
+  ///
+  /// Example: requested device does not support running the native code in
+  /// the supplied APK
+  ///
+  /// Can only be set on an execution.
+  /// - "CANCELLED" : The user cancelled the execution.
+  ///
+  /// Can only be set on an execution.
+  /// - "INVALID" : The execution or matrix was not run because the provided
+  /// inputs are not
+  /// valid.
+  ///
+  /// Examples: input file is not of the expected type, is malformed/corrupt, or
+  /// was flagged as malware
+  core.String testState;
+
+  CancelTestMatrixResponse();
+
+  CancelTestMatrixResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("testState")) {
+      testState = _json["testState"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (testState != null) {
+      _json["testState"] = testState;
+    }
+    return _json;
+  }
+}
+
+/// Information about the client which invoked the test.
+class ClientInfo {
+  /// The list of detailed information about client.
+  core.List<ClientInfoDetail> clientInfoDetails;
+
+  /// Client name, such as gcloud.
+  /// Required
+  core.String name;
+
+  ClientInfo();
+
+  ClientInfo.fromJson(core.Map _json) {
+    if (_json.containsKey("clientInfoDetails")) {
+      clientInfoDetails = _json["clientInfoDetails"]
+          .map((value) => new ClientInfoDetail.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (clientInfoDetails != null) {
+      _json["clientInfoDetails"] =
+          clientInfoDetails.map((value) => (value).toJson()).toList();
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    return _json;
+  }
+}
+
+/// Key-value pair of detailed information about the client which invoked the
+/// test. For example {'Version', '1.0'}, {'Release Track', 'BETA'}
+class ClientInfoDetail {
+  /// The key of detailed client information.
+  /// Required
+  core.String key;
+
+  /// The value of detailed client information.
+  /// Required
+  core.String value;
+
+  ClientInfoDetail();
+
+  ClientInfoDetail.fromJson(core.Map _json) {
+    if (_json.containsKey("key")) {
+      key = _json["key"];
+    }
+    if (_json.containsKey("value")) {
+      value = _json["value"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (key != null) {
+      _json["key"] = key;
+    }
+    if (value != null) {
+      _json["value"] = value;
+    }
+    return _json;
+  }
+}
+
+/// Represents a whole calendar date, e.g. date of birth. The time of day and
+/// time zone are either specified elsewhere or are not significant. The date
+/// is relative to the Proleptic Gregorian Calendar. The day may be 0 to
+/// represent a year and month where the day is not significant, e.g. credit
+/// card
+/// expiration date. The year may be 0 to represent a month and day independent
+/// of year, e.g. anniversary date. Related types are google.type.TimeOfDay
+/// and `google.protobuf.Timestamp`.
+class Date {
+  /// Day of month. Must be from 1 to 31 and valid for the year and month, or 0
+  /// if specifying a year/month where the day is not significant.
+  core.int day;
+
+  /// Month of year. Must be from 1 to 12.
+  core.int month;
+
+  /// Year of date. Must be from 1 to 9999, or 0 if specifying a date without
+  /// a year.
+  core.int year;
+
+  Date();
+
+  Date.fromJson(core.Map _json) {
+    if (_json.containsKey("day")) {
+      day = _json["day"];
+    }
+    if (_json.containsKey("month")) {
+      month = _json["month"];
+    }
+    if (_json.containsKey("year")) {
+      year = _json["year"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (day != null) {
+      _json["day"] = day;
+    }
+    if (month != null) {
+      _json["month"] = month;
+    }
+    if (year != null) {
+      _json["year"] = year;
+    }
+    return _json;
+  }
+}
+
+/// A single device file description.
+class DeviceFile {
+  /// A reference to an opaque binary blob file
+  ObbFile obbFile;
+
+  DeviceFile();
+
+  DeviceFile.fromJson(core.Map _json) {
+    if (_json.containsKey("obbFile")) {
+      obbFile = new ObbFile.fromJson(_json["obbFile"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (obbFile != null) {
+      _json["obbFile"] = (obbFile).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Data about the relative number of devices running a
+/// given configuration of the Android platform.
+class Distribution {
+  /// The estimated fraction (0-1) of the total market with this configuration.
+  /// @OutputOnly
+  core.double marketShare;
+
+  /// The time this distribution was measured.
+  /// @OutputOnly
+  core.String measurementTime;
+
+  Distribution();
+
+  Distribution.fromJson(core.Map _json) {
+    if (_json.containsKey("marketShare")) {
+      marketShare = _json["marketShare"];
+    }
+    if (_json.containsKey("measurementTime")) {
+      measurementTime = _json["measurementTime"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (marketShare != null) {
+      _json["marketShare"] = marketShare;
+    }
+    if (measurementTime != null) {
+      _json["measurementTime"] = measurementTime;
+    }
+    return _json;
+  }
+}
+
+/// The environment in which the test is run.
+class Environment {
+  /// An Android device which must be used with an Android test.
+  AndroidDevice androidDevice;
+
+  Environment();
+
+  Environment.fromJson(core.Map _json) {
+    if (_json.containsKey("androidDevice")) {
+      androidDevice = new AndroidDevice.fromJson(_json["androidDevice"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (androidDevice != null) {
+      _json["androidDevice"] = (androidDevice).toJson();
+    }
+    return _json;
+  }
+}
+
+/// The matrix of environments in which the test is to be executed.
+class EnvironmentMatrix {
+  /// A list of Android devices; the test will be run only on the specified
+  /// devices.
+  AndroidDeviceList androidDeviceList;
+
+  /// A matrix of Android devices.
+  AndroidMatrix androidMatrix;
+
+  EnvironmentMatrix();
+
+  EnvironmentMatrix.fromJson(core.Map _json) {
+    if (_json.containsKey("androidDeviceList")) {
+      androidDeviceList =
+          new AndroidDeviceList.fromJson(_json["androidDeviceList"]);
+    }
+    if (_json.containsKey("androidMatrix")) {
+      androidMatrix = new AndroidMatrix.fromJson(_json["androidMatrix"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (androidDeviceList != null) {
+      _json["androidDeviceList"] = (androidDeviceList).toJson();
+    }
+    if (androidMatrix != null) {
+      _json["androidMatrix"] = (androidMatrix).toJson();
+    }
+    return _json;
+  }
+}
+
+/// A key-value pair passed as an environment variable to the test
+class EnvironmentVariable {
+  /// Key for the environment variable
+  core.String key;
+
+  /// Value for the environment variable
+  core.String value;
+
+  EnvironmentVariable();
+
+  EnvironmentVariable.fromJson(core.Map _json) {
+    if (_json.containsKey("key")) {
+      key = _json["key"];
+    }
+    if (_json.containsKey("value")) {
+      value = _json["value"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (key != null) {
+      _json["key"] = key;
+    }
+    if (value != null) {
+      _json["value"] = value;
+    }
+    return _json;
+  }
+}
+
+/// A reference to a file, used for user inputs.
+class FileReference {
+  /// A path to a file in Google Cloud Storage.
+  /// Example: gs://build-app-1414623860166/app-debug-unaligned.apk
+  core.String gcsPath;
+
+  FileReference();
+
+  FileReference.fromJson(core.Map _json) {
+    if (_json.containsKey("gcsPath")) {
+      gcsPath = _json["gcsPath"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (gcsPath != null) {
+      _json["gcsPath"] = gcsPath;
+    }
+    return _json;
+  }
+}
+
+/// Enables automatic Google account login.
+/// If set, the service will automatically generate a Google test account and
+/// add
+/// it to the device, before executing the test. Note that test accounts might
+/// be
+/// reused.
+/// Many applications show their full set of functionalities when an account is
+/// present on the device. Logging into the device with these generated accounts
+/// allows testing more functionalities.
+class GoogleAuto {
+  GoogleAuto();
+
+  GoogleAuto.fromJson(core.Map _json) {}
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    return _json;
+  }
+}
+
+/// A storage location within Google cloud storage (GCS).
+class GoogleCloudStorage {
+  /// The path to a directory in GCS that will
+  /// eventually contain the results for this test.
+  /// The requesting user must have write access on the bucket in the supplied
+  /// path.
+  /// Required
+  core.String gcsPath;
+
+  GoogleCloudStorage();
+
+  GoogleCloudStorage.fromJson(core.Map _json) {
+    if (_json.containsKey("gcsPath")) {
+      gcsPath = _json["gcsPath"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (gcsPath != null) {
+      _json["gcsPath"] = gcsPath;
+    }
+    return _json;
+  }
+}
+
+/// A location/region designation for language.
+class Locale {
+  /// The id for this locale.
+  /// Example: "en_US"
+  /// @OutputOnly
+  core.String id;
+
+  /// A human-friendly name for this language/locale.
+  /// Example: "English"
+  /// @OutputOnly
+  core.String name;
+
+  /// A human-friendy string representing the region for this locale.
+  /// Example: "United States"
+  /// Not present for every locale.
+  /// @OutputOnly
+  core.String region;
+
+  /// Tags for this dimension.
+  /// Examples: "default"
+  core.List<core.String> tags;
+
+  Locale();
+
+  Locale.fromJson(core.Map _json) {
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("region")) {
+      region = _json["region"];
+    }
+    if (_json.containsKey("tags")) {
+      tags = _json["tags"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (region != null) {
+      _json["region"] = region;
+    }
+    if (tags != null) {
+      _json["tags"] = tags;
+    }
+    return _json;
+  }
+}
+
+class NetworkConfiguration {
+  /// The emulation rule applying to the download traffic
+  TrafficRule downRule;
+
+  /// The unique opaque id for this network traffic configuration
+  /// @OutputOnly
+  core.String id;
+
+  /// The emulation rule applying to the upload traffic
+  TrafficRule upRule;
+
+  NetworkConfiguration();
+
+  NetworkConfiguration.fromJson(core.Map _json) {
+    if (_json.containsKey("downRule")) {
+      downRule = new TrafficRule.fromJson(_json["downRule"]);
+    }
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("upRule")) {
+      upRule = new TrafficRule.fromJson(_json["upRule"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (downRule != null) {
+      _json["downRule"] = (downRule).toJson();
+    }
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (upRule != null) {
+      _json["upRule"] = (upRule).toJson();
+    }
+    return _json;
+  }
+}
+
+class NetworkConfigurationCatalog {
+  core.List<NetworkConfiguration> configurations;
+
+  NetworkConfigurationCatalog();
+
+  NetworkConfigurationCatalog.fromJson(core.Map _json) {
+    if (_json.containsKey("configurations")) {
+      configurations = _json["configurations"]
+          .map((value) => new NetworkConfiguration.fromJson(value))
+          .toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (configurations != null) {
+      _json["configurations"] =
+          configurations.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// An opaque binary blob file to install on the device before the test starts
+class ObbFile {
+  /// Opaque Binary Blob (OBB) file(s) to install on the device
+  /// Required
+  FileReference obb;
+
+  /// OBB file name which must conform to the format as specified by
+  /// Android
+  /// e.g. [main|patch].0300110.com.example.android.obb
+  /// which will be installed into
+  ///   <shared-storage>/Android/obb/<package-name>/
+  /// on the device
+  /// Required
+  core.String obbFileName;
+
+  ObbFile();
+
+  ObbFile.fromJson(core.Map _json) {
+    if (_json.containsKey("obb")) {
+      obb = new FileReference.fromJson(_json["obb"]);
+    }
+    if (_json.containsKey("obbFileName")) {
+      obbFileName = _json["obbFileName"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (obb != null) {
+      _json["obb"] = (obb).toJson();
+    }
+    if (obbFileName != null) {
+      _json["obbFileName"] = obbFileName;
+    }
+    return _json;
+  }
+}
+
+/// Screen orientation of the device.
+class Orientation {
+  /// The id for this orientation.
+  /// Example: "portrait"
+  /// @OutputOnly
+  core.String id;
+
+  /// A human-friendly name for this orientation.
+  /// Example: "portrait"
+  /// @OutputOnly
+  core.String name;
+
+  /// Tags for this dimension.
+  /// Examples: "default"
+  core.List<core.String> tags;
+
+  Orientation();
+
+  Orientation.fromJson(core.Map _json) {
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("tags")) {
+      tags = _json["tags"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (tags != null) {
+      _json["tags"] = tags;
+    }
+    return _json;
+  }
+}
+
+/// Locations where the results of running the test are stored.
+class ResultStorage {
+  /// Required.
+  GoogleCloudStorage googleCloudStorage;
+
+  /// The tool results execution that results are written to.
+  /// @OutputOnly
+  ToolResultsExecution toolResultsExecution;
+
+  /// The tool results history that contains the tool results execution that
+  /// results are written to.
+  ///
+  /// Optional, if not provided the service will choose an appropriate value.
+  ToolResultsHistory toolResultsHistory;
+
+  ResultStorage();
+
+  ResultStorage.fromJson(core.Map _json) {
+    if (_json.containsKey("googleCloudStorage")) {
+      googleCloudStorage =
+          new GoogleCloudStorage.fromJson(_json["googleCloudStorage"]);
+    }
+    if (_json.containsKey("toolResultsExecution")) {
+      toolResultsExecution =
+          new ToolResultsExecution.fromJson(_json["toolResultsExecution"]);
+    }
+    if (_json.containsKey("toolResultsHistory")) {
+      toolResultsHistory =
+          new ToolResultsHistory.fromJson(_json["toolResultsHistory"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (googleCloudStorage != null) {
+      _json["googleCloudStorage"] = (googleCloudStorage).toJson();
+    }
+    if (toolResultsExecution != null) {
+      _json["toolResultsExecution"] = (toolResultsExecution).toJson();
+    }
+    if (toolResultsHistory != null) {
+      _json["toolResultsHistory"] = (toolResultsHistory).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Directs Robo to interact with a specific UI element if it is encountered
+/// during the crawl. Currently, Robo can perform text entry or element click.
+class RoboDirective {
+  /// The type of action that Robo should perform on the specified element.
+  /// Required.
+  /// Possible string values are:
+  /// - "ACTION_TYPE_UNSPECIFIED" : DO NOT USE. For proto versioning only.
+  /// - "SINGLE_CLICK" : Direct Robo to click on the specified element. No-op if
+  /// specified element
+  /// is not clickable.
+  /// - "ENTER_TEXT" : Direct Robo to enter text on the specified element. No-op
+  /// if specified
+  /// element is not enabled or does not allow text entry.
+  core.String actionType;
+
+  /// The text that Robo is directed to set. If left empty, the directive will
+  /// be
+  /// treated as a CLICK on the element matching the resource_name.
+  /// Optional
+  core.String inputText;
+
+  /// The android resource name of the target UI element
+  /// For example,
+  ///    in Java: R.string.foo
+  ///    in xml: @string/foo
+  /// Only the “foo” part is needed.
+  /// Reference doc:
+  /// https://developer.android.com/guide/topics/resources/accessing-resources.html
+  /// Required
+  core.String resourceName;
+
+  RoboDirective();
+
+  RoboDirective.fromJson(core.Map _json) {
+    if (_json.containsKey("actionType")) {
+      actionType = _json["actionType"];
+    }
+    if (_json.containsKey("inputText")) {
+      inputText = _json["inputText"];
+    }
+    if (_json.containsKey("resourceName")) {
+      resourceName = _json["resourceName"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (actionType != null) {
+      _json["actionType"] = actionType;
+    }
+    if (inputText != null) {
+      _json["inputText"] = inputText;
+    }
+    if (resourceName != null) {
+      _json["resourceName"] = resourceName;
+    }
+    return _json;
+  }
+}
+
+/// Additional details about the progress of the running test.
+class TestDetails {
+  /// If the TestState is ERROR, then this string will contain human-readable
+  /// details about the error.
+  /// @OutputOnly
+  core.String errorMessage;
+
+  /// Human-readable, detailed descriptions of the test's progress.
+  /// For example: "Provisioning a device", "Starting Test".
+  ///
+  /// During the course of execution new data may be appended
+  /// to the end of progress_messages.
+  /// @OutputOnly
+  core.List<core.String> progressMessages;
+
+  TestDetails();
+
+  TestDetails.fromJson(core.Map _json) {
+    if (_json.containsKey("errorMessage")) {
+      errorMessage = _json["errorMessage"];
+    }
+    if (_json.containsKey("progressMessages")) {
+      progressMessages = _json["progressMessages"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (errorMessage != null) {
+      _json["errorMessage"] = errorMessage;
+    }
+    if (progressMessages != null) {
+      _json["progressMessages"] = progressMessages;
+    }
+    return _json;
+  }
+}
+
+/// A description of a test environment.
+class TestEnvironmentCatalog {
+  /// Android devices suitable for running Android Instrumentation Tests.
+  AndroidDeviceCatalog androidDeviceCatalog;
+
+  /// Supported network configurations
+  NetworkConfigurationCatalog networkConfigurationCatalog;
+
+  TestEnvironmentCatalog();
+
+  TestEnvironmentCatalog.fromJson(core.Map _json) {
+    if (_json.containsKey("androidDeviceCatalog")) {
+      androidDeviceCatalog =
+          new AndroidDeviceCatalog.fromJson(_json["androidDeviceCatalog"]);
+    }
+    if (_json.containsKey("networkConfigurationCatalog")) {
+      networkConfigurationCatalog = new NetworkConfigurationCatalog.fromJson(
+          _json["networkConfigurationCatalog"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (androidDeviceCatalog != null) {
+      _json["androidDeviceCatalog"] = (androidDeviceCatalog).toJson();
+    }
+    if (networkConfigurationCatalog != null) {
+      _json["networkConfigurationCatalog"] =
+          (networkConfigurationCatalog).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Specifies a single test to be executed in a single environment.
+class TestExecution {
+  /// How the host machine(s) are configured.
+  /// @OutputOnly
+  Environment environment;
+
+  /// Unique id set by the backend.
+  /// @OutputOnly
+  core.String id;
+
+  /// Id of the containing TestMatrix.
+  /// @OutputOnly
+  core.String matrixId;
+
+  /// The cloud project that owns the test execution.
+  /// @OutputOnly
+  core.String projectId;
+
+  /// Indicates the current progress of the test execution (e.g., FINISHED).
+  /// @OutputOnly
+  /// Possible string values are:
+  /// - "TEST_STATE_UNSPECIFIED" : Do not use.  For proto versioning only.
+  /// - "VALIDATING" : The execution or matrix is being validated.
+  /// - "PENDING" : The execution or matrix is waiting for resources to become
+  /// available.
+  /// - "RUNNING" : The execution is currently being processed.
+  ///
+  /// Can only be set on an execution.
+  /// - "FINISHED" : The execution or matrix has terminated normally.
+  ///
+  /// On a matrix this means that the matrix level processing completed
+  /// normally,
+  /// but individual executions may be in an ERROR state.
+  /// - "ERROR" : The execution or matrix has stopped because it encountered an
+  /// infrastructure failure.
+  /// - "UNSUPPORTED_ENVIRONMENT" : The execution was not run because it
+  /// corresponds to a unsupported
+  /// environment.
+  ///
+  /// Can only be set on an execution.
+  /// - "INCOMPATIBLE_ENVIRONMENT" : The execution was not run because the
+  /// provided inputs are incompatible with
+  /// the requested environment.
+  ///
+  /// Example: requested AndroidVersion is lower than APK's minSdkVersion
+  ///
+  /// Can only be set on an execution.
+  /// - "INCOMPATIBLE_ARCHITECTURE" : The execution was not run because the
+  /// provided inputs are incompatible with
+  /// the requested architecture.
+  ///
+  /// Example: requested device does not support running the native code in
+  /// the supplied APK
+  ///
+  /// Can only be set on an execution.
+  /// - "CANCELLED" : The user cancelled the execution.
+  ///
+  /// Can only be set on an execution.
+  /// - "INVALID" : The execution or matrix was not run because the provided
+  /// inputs are not
+  /// valid.
+  ///
+  /// Examples: input file is not of the expected type, is malformed/corrupt, or
+  /// was flagged as malware
+  core.String state;
+
+  /// Additional details about the running test.
+  /// @OutputOnly
+  TestDetails testDetails;
+
+  /// How to run the test.
+  /// @OutputOnly
+  TestSpecification testSpecification;
+
+  /// The time this test execution was initially created.
+  /// @OutputOnly
+  core.String timestamp;
+
+  /// Where the results for this execution are written.
+  /// @OutputOnly
+  ToolResultsStep toolResultsStep;
+
+  TestExecution();
+
+  TestExecution.fromJson(core.Map _json) {
+    if (_json.containsKey("environment")) {
+      environment = new Environment.fromJson(_json["environment"]);
+    }
+    if (_json.containsKey("id")) {
+      id = _json["id"];
+    }
+    if (_json.containsKey("matrixId")) {
+      matrixId = _json["matrixId"];
+    }
+    if (_json.containsKey("projectId")) {
+      projectId = _json["projectId"];
+    }
+    if (_json.containsKey("state")) {
+      state = _json["state"];
+    }
+    if (_json.containsKey("testDetails")) {
+      testDetails = new TestDetails.fromJson(_json["testDetails"]);
+    }
+    if (_json.containsKey("testSpecification")) {
+      testSpecification =
+          new TestSpecification.fromJson(_json["testSpecification"]);
+    }
+    if (_json.containsKey("timestamp")) {
+      timestamp = _json["timestamp"];
+    }
+    if (_json.containsKey("toolResultsStep")) {
+      toolResultsStep = new ToolResultsStep.fromJson(_json["toolResultsStep"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (environment != null) {
+      _json["environment"] = (environment).toJson();
+    }
+    if (id != null) {
+      _json["id"] = id;
+    }
+    if (matrixId != null) {
+      _json["matrixId"] = matrixId;
+    }
+    if (projectId != null) {
+      _json["projectId"] = projectId;
+    }
+    if (state != null) {
+      _json["state"] = state;
+    }
+    if (testDetails != null) {
+      _json["testDetails"] = (testDetails).toJson();
+    }
+    if (testSpecification != null) {
+      _json["testSpecification"] = (testSpecification).toJson();
+    }
+    if (timestamp != null) {
+      _json["timestamp"] = timestamp;
+    }
+    if (toolResultsStep != null) {
+      _json["toolResultsStep"] = (toolResultsStep).toJson();
+    }
+    return _json;
+  }
+}
+
+/// A group of one or more TestExecutions, built by taking a
+/// product of values over a pre-defined set of axes.
+class TestMatrix {
+  /// Information about the client which invoked the test.
+  /// Optional
+  ClientInfo clientInfo;
+
+  /// How the host machine(s) are configured.
+  /// Required
+  EnvironmentMatrix environmentMatrix;
+
+  /// Describes why the matrix is considered invalid.
+  /// Only useful for matrices in the INVALID state.
+  /// @OutputOnly
+  /// Possible string values are:
+  /// - "INVALID_MATRIX_DETAILS_UNSPECIFIED" : Do not use. For proto versioning
+  /// only.
+  /// - "DETAILS_UNAVAILABLE" : The matrix is INVALID, but there are no further
+  /// details available.
+  /// - "MALFORMED_APK" : The input app APK could not be parsed.
+  /// - "MALFORMED_TEST_APK" : The input test APK could not be parsed.
+  /// - "NO_MANIFEST" : The AndroidManifest.xml could not be found.
+  /// - "NO_PACKAGE_NAME" : The APK manifest does not declare a package name.
+  /// - "TEST_SAME_AS_APP" : The test package and app package are the same.
+  /// - "NO_INSTRUMENTATION" : The test apk does not declare an instrumentation.
+  /// - "NO_SIGNATURE" : The input app apk does not have a signature.
+  /// - "INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE" : The test runner class
+  /// specified by user or in the test APK's manifest file
+  /// is not compatible with Android Test Orchestrator.
+  /// Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or
+  /// higher.
+  /// Orchestrator can be disabled by using DO_NOT_USE_ORCHESTRATOR
+  /// OrchestratorOption.
+  /// - "NO_TEST_RUNNER_CLASS" : The test APK does not contain the test runner
+  /// class specified by user or in
+  /// the manifest file.
+  /// This can be caused by either of the following reasons:
+  /// - the user provided a runner class name that's incorrect, or
+  /// - the test runner isn't built into the test APK (might be in the app APK
+  /// instead).
+  /// - "NO_LAUNCHER_ACTIVITY" : A main launcher activity could not be found.
+  /// - "FORBIDDEN_PERMISSIONS" : The app declares one or more permissions that
+  /// are not allowed.
+  /// - "INVALID_ROBO_DIRECTIVES" : There is a conflict in the provided
+  /// robo_directives.
+  /// - "TEST_LOOP_INTENT_FILTER_NOT_FOUND" : There there is no test loop intent
+  /// filter, or the one that is given is
+  /// not formatted correctly.
+  /// - "SCENARIO_LABEL_NOT_DECLARED" : The request contains a scenario label
+  /// that was not declared in the
+  /// manifest.
+  /// - "SCENARIO_LABEL_MALFORMED" : There was an error when parsing a label's
+  /// value.
+  /// - "SCENARIO_NOT_DECLARED" : The request contains a scenario number that
+  /// was not declared in the
+  /// manifest.
+  /// - "DEVICE_ADMIN_RECEIVER" : Device administrator applications are not
+  /// allowed.
+  /// - "TEST_ONLY_APK" : The APK is marked as "testOnly".
+  core.String invalidMatrixDetails;
+
+  /// The cloud project that owns the test matrix.
+  /// @OutputOnly
+  core.String projectId;
+
+  /// Where the results for the matrix are written.
+  /// Required
+  ResultStorage resultStorage;
+
+  /// Indicates the current progress of the test matrix (e.g., FINISHED)
+  /// @OutputOnly
+  /// Possible string values are:
+  /// - "TEST_STATE_UNSPECIFIED" : Do not use.  For proto versioning only.
+  /// - "VALIDATING" : The execution or matrix is being validated.
+  /// - "PENDING" : The execution or matrix is waiting for resources to become
+  /// available.
+  /// - "RUNNING" : The execution is currently being processed.
+  ///
+  /// Can only be set on an execution.
+  /// - "FINISHED" : The execution or matrix has terminated normally.
+  ///
+  /// On a matrix this means that the matrix level processing completed
+  /// normally,
+  /// but individual executions may be in an ERROR state.
+  /// - "ERROR" : The execution or matrix has stopped because it encountered an
+  /// infrastructure failure.
+  /// - "UNSUPPORTED_ENVIRONMENT" : The execution was not run because it
+  /// corresponds to a unsupported
+  /// environment.
+  ///
+  /// Can only be set on an execution.
+  /// - "INCOMPATIBLE_ENVIRONMENT" : The execution was not run because the
+  /// provided inputs are incompatible with
+  /// the requested environment.
+  ///
+  /// Example: requested AndroidVersion is lower than APK's minSdkVersion
+  ///
+  /// Can only be set on an execution.
+  /// - "INCOMPATIBLE_ARCHITECTURE" : The execution was not run because the
+  /// provided inputs are incompatible with
+  /// the requested architecture.
+  ///
+  /// Example: requested device does not support running the native code in
+  /// the supplied APK
+  ///
+  /// Can only be set on an execution.
+  /// - "CANCELLED" : The user cancelled the execution.
+  ///
+  /// Can only be set on an execution.
+  /// - "INVALID" : The execution or matrix was not run because the provided
+  /// inputs are not
+  /// valid.
+  ///
+  /// Examples: input file is not of the expected type, is malformed/corrupt, or
+  /// was flagged as malware
+  core.String state;
+
+  /// The list of test executions that the service creates for this matrix.
+  /// @OutputOnly
+  core.List<TestExecution> testExecutions;
+
+  /// Unique id set by the service.
+  /// @OutputOnly
+  core.String testMatrixId;
+
+  /// How to run the test.
+  /// Required
+  TestSpecification testSpecification;
+
+  /// The time this test matrix was initially created.
+  /// @OutputOnly
+  core.String timestamp;
+
+  TestMatrix();
+
+  TestMatrix.fromJson(core.Map _json) {
+    if (_json.containsKey("clientInfo")) {
+      clientInfo = new ClientInfo.fromJson(_json["clientInfo"]);
+    }
+    if (_json.containsKey("environmentMatrix")) {
+      environmentMatrix =
+          new EnvironmentMatrix.fromJson(_json["environmentMatrix"]);
+    }
+    if (_json.containsKey("invalidMatrixDetails")) {
+      invalidMatrixDetails = _json["invalidMatrixDetails"];
+    }
+    if (_json.containsKey("projectId")) {
+      projectId = _json["projectId"];
+    }
+    if (_json.containsKey("resultStorage")) {
+      resultStorage = new ResultStorage.fromJson(_json["resultStorage"]);
+    }
+    if (_json.containsKey("state")) {
+      state = _json["state"];
+    }
+    if (_json.containsKey("testExecutions")) {
+      testExecutions = _json["testExecutions"]
+          .map((value) => new TestExecution.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("testMatrixId")) {
+      testMatrixId = _json["testMatrixId"];
+    }
+    if (_json.containsKey("testSpecification")) {
+      testSpecification =
+          new TestSpecification.fromJson(_json["testSpecification"]);
+    }
+    if (_json.containsKey("timestamp")) {
+      timestamp = _json["timestamp"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (clientInfo != null) {
+      _json["clientInfo"] = (clientInfo).toJson();
+    }
+    if (environmentMatrix != null) {
+      _json["environmentMatrix"] = (environmentMatrix).toJson();
+    }
+    if (invalidMatrixDetails != null) {
+      _json["invalidMatrixDetails"] = invalidMatrixDetails;
+    }
+    if (projectId != null) {
+      _json["projectId"] = projectId;
+    }
+    if (resultStorage != null) {
+      _json["resultStorage"] = (resultStorage).toJson();
+    }
+    if (state != null) {
+      _json["state"] = state;
+    }
+    if (testExecutions != null) {
+      _json["testExecutions"] =
+          testExecutions.map((value) => (value).toJson()).toList();
+    }
+    if (testMatrixId != null) {
+      _json["testMatrixId"] = testMatrixId;
+    }
+    if (testSpecification != null) {
+      _json["testSpecification"] = (testSpecification).toJson();
+    }
+    if (timestamp != null) {
+      _json["timestamp"] = timestamp;
+    }
+    return _json;
+  }
+}
+
+/// A description of how to set up the device prior to running the test
+class TestSetup {
+  /// The device will be logged in on this account for the duration of the test.
+  /// Optional
+  Account account;
+
+  /// List of directories on the device to upload to GCS at the end of the test;
+  /// they must be absolute paths under /sdcard or /data/local/tmp.
+  /// Path names are restricted to characters a-z A-Z 0-9 _ - . + and /
+  ///
+  /// Note: The paths /sdcard and /data will be made available and treated as
+  /// implicit path substitutions. E.g. if /sdcard on a particular device does
+  /// not map to external storage, the system will replace it with the external
+  /// storage path prefix for that device.
+  ///
+  /// Optional
+  core.List<core.String> directoriesToPull;
+
+  /// Environment variables to set for the test (only applicable for
+  /// instrumentation tests).
+  core.List<EnvironmentVariable> environmentVariables;
+
+  /// List of files to push to the device before starting the test.
+  ///
+  /// Optional
+  core.List<DeviceFile> filesToPush;
+
+  /// The network traffic profile used for running the test.
+  /// Optional
+  core.String networkProfile;
+
+  TestSetup();
+
+  TestSetup.fromJson(core.Map _json) {
+    if (_json.containsKey("account")) {
+      account = new Account.fromJson(_json["account"]);
+    }
+    if (_json.containsKey("directoriesToPull")) {
+      directoriesToPull = _json["directoriesToPull"];
+    }
+    if (_json.containsKey("environmentVariables")) {
+      environmentVariables = _json["environmentVariables"]
+          .map((value) => new EnvironmentVariable.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("filesToPush")) {
+      filesToPush = _json["filesToPush"]
+          .map((value) => new DeviceFile.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("networkProfile")) {
+      networkProfile = _json["networkProfile"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (account != null) {
+      _json["account"] = (account).toJson();
+    }
+    if (directoriesToPull != null) {
+      _json["directoriesToPull"] = directoriesToPull;
+    }
+    if (environmentVariables != null) {
+      _json["environmentVariables"] =
+          environmentVariables.map((value) => (value).toJson()).toList();
+    }
+    if (filesToPush != null) {
+      _json["filesToPush"] =
+          filesToPush.map((value) => (value).toJson()).toList();
+    }
+    if (networkProfile != null) {
+      _json["networkProfile"] = networkProfile;
+    }
+    return _json;
+  }
+}
+
+/// A description of how to run the test.
+class TestSpecification {
+  /// An Android instrumentation test.
+  AndroidInstrumentationTest androidInstrumentationTest;
+
+  /// An Android robo test.
+  AndroidRoboTest androidRoboTest;
+
+  /// An Android Application with a Test Loop
+  AndroidTestLoop androidTestLoop;
+
+  /// Enables automatic Google account login.
+  /// If set, the service will automatically generate a Google test account and
+  /// add it to the device, before executing the test. Note that test accounts
+  /// might be reused.
+  /// Many applications show their full set of functionalities when an account
+  /// is
+  /// present on the device. Logging into the device with these generated
+  /// accounts allows testing more functionalities.
+  /// Default is false.
+  /// Optional
+  core.bool autoGoogleLogin;
+
+  /// Disables performance metrics recording; may reduce test latency.
+  core.bool disablePerformanceMetrics;
+
+  /// Disables video recording; may reduce test latency.
+  core.bool disableVideoRecording;
+
+  /// Test setup requirements e.g. files to install, bootstrap scripts
+  /// Optional
+  TestSetup testSetup;
+
+  /// Max time a test execution is allowed to run before it is
+  /// automatically cancelled.
+  /// Optional, default is 5 min.
+  core.String testTimeout;
+
+  TestSpecification();
+
+  TestSpecification.fromJson(core.Map _json) {
+    if (_json.containsKey("androidInstrumentationTest")) {
+      androidInstrumentationTest = new AndroidInstrumentationTest.fromJson(
+          _json["androidInstrumentationTest"]);
+    }
+    if (_json.containsKey("androidRoboTest")) {
+      androidRoboTest = new AndroidRoboTest.fromJson(_json["androidRoboTest"]);
+    }
+    if (_json.containsKey("androidTestLoop")) {
+      androidTestLoop = new AndroidTestLoop.fromJson(_json["androidTestLoop"]);
+    }
+    if (_json.containsKey("autoGoogleLogin")) {
+      autoGoogleLogin = _json["autoGoogleLogin"];
+    }
+    if (_json.containsKey("disablePerformanceMetrics")) {
+      disablePerformanceMetrics = _json["disablePerformanceMetrics"];
+    }
+    if (_json.containsKey("disableVideoRecording")) {
+      disableVideoRecording = _json["disableVideoRecording"];
+    }
+    if (_json.containsKey("testSetup")) {
+      testSetup = new TestSetup.fromJson(_json["testSetup"]);
+    }
+    if (_json.containsKey("testTimeout")) {
+      testTimeout = _json["testTimeout"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (androidInstrumentationTest != null) {
+      _json["androidInstrumentationTest"] =
+          (androidInstrumentationTest).toJson();
+    }
+    if (androidRoboTest != null) {
+      _json["androidRoboTest"] = (androidRoboTest).toJson();
+    }
+    if (androidTestLoop != null) {
+      _json["androidTestLoop"] = (androidTestLoop).toJson();
+    }
+    if (autoGoogleLogin != null) {
+      _json["autoGoogleLogin"] = autoGoogleLogin;
+    }
+    if (disablePerformanceMetrics != null) {
+      _json["disablePerformanceMetrics"] = disablePerformanceMetrics;
+    }
+    if (disableVideoRecording != null) {
+      _json["disableVideoRecording"] = disableVideoRecording;
+    }
+    if (testSetup != null) {
+      _json["testSetup"] = (testSetup).toJson();
+    }
+    if (testTimeout != null) {
+      _json["testTimeout"] = testTimeout;
+    }
+    return _json;
+  }
+}
+
+/// Represents a tool results execution resource.
+///
+/// This has the results of a TestMatrix.
+class ToolResultsExecution {
+  /// A tool results execution ID.
+  /// @OutputOnly
+  core.String executionId;
+
+  /// A tool results history ID.
+  /// @OutputOnly
+  core.String historyId;
+
+  /// The cloud project that owns the tool results execution.
+  /// @OutputOnly
+  core.String projectId;
+
+  ToolResultsExecution();
+
+  ToolResultsExecution.fromJson(core.Map _json) {
+    if (_json.containsKey("executionId")) {
+      executionId = _json["executionId"];
+    }
+    if (_json.containsKey("historyId")) {
+      historyId = _json["historyId"];
+    }
+    if (_json.containsKey("projectId")) {
+      projectId = _json["projectId"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (executionId != null) {
+      _json["executionId"] = executionId;
+    }
+    if (historyId != null) {
+      _json["historyId"] = historyId;
+    }
+    if (projectId != null) {
+      _json["projectId"] = projectId;
+    }
+    return _json;
+  }
+}
+
+/// Represents a tool results history resource.
+class ToolResultsHistory {
+  /// A tool results history ID.
+  /// Required
+  core.String historyId;
+
+  /// The cloud project that owns the tool results history.
+  /// Required
+  core.String projectId;
+
+  ToolResultsHistory();
+
+  ToolResultsHistory.fromJson(core.Map _json) {
+    if (_json.containsKey("historyId")) {
+      historyId = _json["historyId"];
+    }
+    if (_json.containsKey("projectId")) {
+      projectId = _json["projectId"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (historyId != null) {
+      _json["historyId"] = historyId;
+    }
+    if (projectId != null) {
+      _json["projectId"] = projectId;
+    }
+    return _json;
+  }
+}
+
+/// Represents a tool results step resource.
+///
+/// This has the results of a TestExecution.
+class ToolResultsStep {
+  /// A tool results execution ID.
+  /// @OutputOnly
+  core.String executionId;
+
+  /// A tool results history ID.
+  /// @OutputOnly
+  core.String historyId;
+
+  /// The cloud project that owns the tool results step.
+  /// @OutputOnly
+  core.String projectId;
+
+  /// A tool results step ID.
+  /// @OutputOnly
+  core.String stepId;
+
+  ToolResultsStep();
+
+  ToolResultsStep.fromJson(core.Map _json) {
+    if (_json.containsKey("executionId")) {
+      executionId = _json["executionId"];
+    }
+    if (_json.containsKey("historyId")) {
+      historyId = _json["historyId"];
+    }
+    if (_json.containsKey("projectId")) {
+      projectId = _json["projectId"];
+    }
+    if (_json.containsKey("stepId")) {
+      stepId = _json["stepId"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (executionId != null) {
+      _json["executionId"] = executionId;
+    }
+    if (historyId != null) {
+      _json["historyId"] = historyId;
+    }
+    if (projectId != null) {
+      _json["projectId"] = projectId;
+    }
+    if (stepId != null) {
+      _json["stepId"] = stepId;
+    }
+    return _json;
+  }
+}
+
+/// Network emulation parameters
+class TrafficRule {
+  /// Bandwidth in kbits/second
+  core.double bandwidth;
+
+  /// Burst size in kbits
+  core.double burst;
+
+  /// Packet delay, must be >= 0
+  core.String delay;
+
+  /// Packet duplication ratio (0.0 - 1.0)
+  core.double packetDuplicationRatio;
+
+  /// Packet loss ratio (0.0 - 1.0)
+  core.double packetLossRatio;
+
+  TrafficRule();
+
+  TrafficRule.fromJson(core.Map _json) {
+    if (_json.containsKey("bandwidth")) {
+      bandwidth = _json["bandwidth"];
+    }
+    if (_json.containsKey("burst")) {
+      burst = _json["burst"];
+    }
+    if (_json.containsKey("delay")) {
+      delay = _json["delay"];
+    }
+    if (_json.containsKey("packetDuplicationRatio")) {
+      packetDuplicationRatio = _json["packetDuplicationRatio"];
+    }
+    if (_json.containsKey("packetLossRatio")) {
+      packetLossRatio = _json["packetLossRatio"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (bandwidth != null) {
+      _json["bandwidth"] = bandwidth;
+    }
+    if (burst != null) {
+      _json["burst"] = burst;
+    }
+    if (delay != null) {
+      _json["delay"] = delay;
+    }
+    if (packetDuplicationRatio != null) {
+      _json["packetDuplicationRatio"] = packetDuplicationRatio;
+    }
+    if (packetLossRatio != null) {
+      _json["packetLossRatio"] = packetLossRatio;
+    }
+    return _json;
+  }
+}
diff --git a/generated/googleapis/lib/translate/v2.dart b/generated/googleapis/lib/translate/v2.dart
index cb89023..e4d2293 100644
--- a/generated/googleapis/lib/translate/v2.dart
+++ b/generated/googleapis/lib/translate/v2.dart
@@ -51,6 +51,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DetectionsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -58,7 +61,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DetectionsListResponse> detect(DetectLanguageRequest request) {
+  async.Future<DetectionsListResponse> detect(DetectLanguageRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -69,6 +73,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/detect';
 
@@ -88,6 +95,9 @@
   /// [q] - The input text upon which to perform language detection. Repeat this
   /// parameter to perform language detection on multiple text inputs.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DetectionsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -95,7 +105,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DetectionsListResponse> list(core.List<core.String> q) {
+  async.Future<DetectionsListResponse> list(core.List<core.String> q,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -107,6 +118,9 @@
       throw new core.ArgumentError("Parameter q is required.");
     }
     _queryParams["q"] = q;
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2/detect';
 
@@ -129,11 +143,14 @@
   ///
   /// Request parameters:
   ///
+  /// [model] - The model type for which supported languages should be returned.
+  ///
   /// [target] - The language to use to return localized, human readable names
   /// of supported
   /// languages.
   ///
-  /// [model] - The model type for which supported languages should be returned.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [LanguagesListResponse].
   ///
@@ -143,7 +160,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LanguagesListResponse> list(
-      {core.String target, core.String model}) {
+      {core.String model, core.String target, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -151,11 +168,14 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if (model != null) {
+      _queryParams["model"] = [model];
+    }
     if (target != null) {
       _queryParams["target"] = [target];
     }
-    if (model != null) {
-      _queryParams["model"] = [model];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2/languages';
@@ -187,6 +207,14 @@
   /// one of the
   /// language codes listed in Language Support.
   ///
+  /// [source] - The language of the source text, set to one of the language
+  /// codes listed in
+  /// Language Support. If the source language is not specified, the API will
+  /// attempt to identify the source language automatically and return it within
+  /// the response.
+  ///
+  /// [cid] - The customization id for translate
+  ///
   /// [format] - The format of the source text, in either HTML (default) or
   /// plain-text. A
   /// value of "html" indicates HTML and a value of "text" indicates plain-text.
@@ -198,13 +226,8 @@
   /// are
   /// listed in public documentation.
   ///
-  /// [source] - The language of the source text, set to one of the language
-  /// codes listed in
-  /// Language Support. If the source language is not specified, the API will
-  /// attempt to identify the source language automatically and return it within
-  /// the response.
-  ///
-  /// [cid] - The customization id for translate
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [TranslationsListResponse].
   ///
@@ -215,10 +238,11 @@
   /// this method will complete with the same error.
   async.Future<TranslationsListResponse> list(
       core.List<core.String> q, core.String target,
-      {core.String format,
+      {core.String source,
+      core.List<core.String> cid,
+      core.String format,
       core.String model,
-      core.String source,
-      core.List<core.String> cid}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -234,17 +258,20 @@
       throw new core.ArgumentError("Parameter target is required.");
     }
     _queryParams["target"] = [target];
+    if (source != null) {
+      _queryParams["source"] = [source];
+    }
+    if (cid != null) {
+      _queryParams["cid"] = cid;
+    }
     if (format != null) {
       _queryParams["format"] = [format];
     }
     if (model != null) {
       _queryParams["model"] = [model];
     }
-    if (source != null) {
-      _queryParams["source"] = [source];
-    }
-    if (cid != null) {
-      _queryParams["cid"] = cid;
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2';
@@ -265,6 +292,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TranslationsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -272,8 +302,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TranslationsListResponse> translate(
-      TranslateTextRequest request) {
+  async.Future<TranslationsListResponse> translate(TranslateTextRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -284,6 +314,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2';
 
diff --git a/generated/googleapis/lib/urlshortener/v1.dart b/generated/googleapis/lib/urlshortener/v1.dart
index 61bee11..ec31dd4 100644
--- a/generated/googleapis/lib/urlshortener/v1.dart
+++ b/generated/googleapis/lib/urlshortener/v1.dart
@@ -48,6 +48,9 @@
   /// - "ANALYTICS_TOP_STRINGS" : Returns only top string counts.
   /// - "FULL" : Returns the creation timestamp and all available analytics.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Url].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -55,7 +58,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Url> get(core.String shortUrl, {core.String projection}) {
+  async.Future<Url> get(core.String shortUrl,
+      {core.String projection, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -70,6 +74,9 @@
     if (projection != null) {
       _queryParams["projection"] = [projection];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'url';
 
@@ -88,6 +95,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Url].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -95,7 +105,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Url> insert(Url request) {
+  async.Future<Url> insert(Url request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -106,6 +116,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'url';
 
@@ -129,6 +142,9 @@
   ///
   /// [start_token] - Token for requesting successive pages of results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UrlHistory].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -137,7 +153,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UrlHistory> list(
-      {core.String projection, core.String start_token}) {
+      {core.String projection, core.String start_token, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -151,6 +167,9 @@
     if (start_token != null) {
       _queryParams["start-token"] = [start_token];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'url/history';
 
diff --git a/generated/googleapis/lib/vault/v1.dart b/generated/googleapis/lib/vault/v1.dart
index 189f860..13a088e 100644
--- a/generated/googleapis/lib/vault/v1.dart
+++ b/generated/googleapis/lib/vault/v1.dart
@@ -49,6 +49,9 @@
   ///
   /// [matterId] - The matter ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MatterPermission].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -57,7 +60,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<MatterPermission> addPermissions(
-      AddMatterPermissionsRequest request, core.String matterId) {
+      AddMatterPermissionsRequest request, core.String matterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -71,6 +75,9 @@
     if (matterId == null) {
       throw new core.ArgumentError("Parameter matterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/matters/' +
         commons.Escaper.ecapeVariable('$matterId') +
@@ -93,6 +100,9 @@
   ///
   /// [matterId] - The matter ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CloseMatterResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -101,7 +111,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<CloseMatterResponse> close(
-      CloseMatterRequest request, core.String matterId) {
+      CloseMatterRequest request, core.String matterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -115,6 +126,9 @@
     if (matterId == null) {
       throw new core.ArgumentError("Parameter matterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/matters/' + commons.Escaper.ecapeVariable('$matterId') + ':close';
@@ -137,6 +151,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Matter].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -144,7 +161,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Matter> create(Matter request) {
+  async.Future<Matter> create(Matter request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -155,6 +172,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/matters';
 
@@ -173,6 +193,9 @@
   ///
   /// [matterId] - The matter ID
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Matter].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -180,7 +203,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Matter> delete(core.String matterId) {
+  async.Future<Matter> delete(core.String matterId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -191,6 +214,9 @@
     if (matterId == null) {
       throw new core.ArgumentError("Parameter matterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/matters/' + commons.Escaper.ecapeVariable('$matterId');
 
@@ -215,6 +241,9 @@
   /// - "BASIC" : A BASIC.
   /// - "FULL" : A FULL.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Matter].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -222,7 +251,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Matter> get(core.String matterId, {core.String view}) {
+  async.Future<Matter> get(core.String matterId,
+      {core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -236,6 +266,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/matters/' + commons.Escaper.ecapeVariable('$matterId');
 
@@ -252,6 +285,15 @@
   ///
   /// Request parameters:
   ///
+  /// [state] - If set, list only matters with that specific state. The default
+  /// is listing
+  /// matters of all states.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : A STATE_UNSPECIFIED.
+  /// - "OPEN" : A OPEN.
+  /// - "CLOSED" : A CLOSED.
+  /// - "DELETED" : A DELETED.
+  ///
   /// [pageToken] - The pagination token as returned in the response.
   ///
   /// [pageSize] - The number of matters to return in the response.
@@ -263,14 +305,8 @@
   /// - "BASIC" : A BASIC.
   /// - "FULL" : A FULL.
   ///
-  /// [state] - If set, list only matters with that specific state. The default
-  /// is listing
-  /// matters of all states.
-  /// Possible string values are:
-  /// - "STATE_UNSPECIFIED" : A STATE_UNSPECIFIED.
-  /// - "OPEN" : A OPEN.
-  /// - "CLOSED" : A CLOSED.
-  /// - "DELETED" : A DELETED.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListMattersResponse].
   ///
@@ -280,10 +316,11 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListMattersResponse> list(
-      {core.String pageToken,
+      {core.String state,
+      core.String pageToken,
       core.int pageSize,
       core.String view,
-      core.String state}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -291,6 +328,9 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if (state != null) {
+      _queryParams["state"] = [state];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
@@ -300,8 +340,8 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
-    if (state != null) {
-      _queryParams["state"] = [state];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/matters';
@@ -323,6 +363,9 @@
   ///
   /// [matterId] - The matter ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -331,7 +374,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> removePermissions(
-      RemoveMatterPermissionsRequest request, core.String matterId) {
+      RemoveMatterPermissionsRequest request, core.String matterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -345,6 +389,9 @@
     if (matterId == null) {
       throw new core.ArgumentError("Parameter matterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/matters/' +
         commons.Escaper.ecapeVariable('$matterId') +
@@ -367,6 +414,9 @@
   ///
   /// [matterId] - The matter ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ReopenMatterResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -375,7 +425,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ReopenMatterResponse> reopen(
-      ReopenMatterRequest request, core.String matterId) {
+      ReopenMatterRequest request, core.String matterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -389,6 +440,9 @@
     if (matterId == null) {
       throw new core.ArgumentError("Parameter matterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/matters/' + commons.Escaper.ecapeVariable('$matterId') + ':reopen';
@@ -410,6 +464,9 @@
   ///
   /// [matterId] - The matter ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Matter].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -418,7 +475,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Matter> undelete(
-      UndeleteMatterRequest request, core.String matterId) {
+      UndeleteMatterRequest request, core.String matterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -432,6 +490,9 @@
     if (matterId == null) {
       throw new core.ArgumentError("Parameter matterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/matters/' +
         commons.Escaper.ecapeVariable('$matterId') +
@@ -457,6 +518,9 @@
   ///
   /// [matterId] - The matter ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Matter].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -464,7 +528,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Matter> update(Matter request, core.String matterId) {
+  async.Future<Matter> update(Matter request, core.String matterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -478,6 +543,9 @@
     if (matterId == null) {
       throw new core.ArgumentError("Parameter matterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/matters/' + commons.Escaper.ecapeVariable('$matterId');
 
@@ -507,6 +575,9 @@
   ///
   /// [matterId] - The matter ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Hold].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -514,7 +585,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Hold> create(Hold request, core.String matterId) {
+  async.Future<Hold> create(Hold request, core.String matterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -528,6 +600,9 @@
     if (matterId == null) {
       throw new core.ArgumentError("Parameter matterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/matters/' + commons.Escaper.ecapeVariable('$matterId') + '/holds';
@@ -549,6 +624,9 @@
   ///
   /// [holdId] - The hold ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -556,7 +634,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String matterId, core.String holdId) {
+  async.Future<Empty> delete(core.String matterId, core.String holdId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -570,6 +649,9 @@
     if (holdId == null) {
       throw new core.ArgumentError("Parameter holdId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/matters/' +
         commons.Escaper.ecapeVariable('$matterId') +
@@ -593,6 +675,9 @@
   ///
   /// [holdId] - The hold ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Hold].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -600,7 +685,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Hold> get(core.String matterId, core.String holdId) {
+  async.Future<Hold> get(core.String matterId, core.String holdId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -614,6 +700,9 @@
     if (holdId == null) {
       throw new core.ArgumentError("Parameter holdId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/matters/' +
         commons.Escaper.ecapeVariable('$matterId') +
@@ -643,6 +732,9 @@
   /// 100 inclusive.
   /// Leaving this empty, or as 0, is the same as page_size = 100.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListHoldsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -651,7 +743,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListHoldsResponse> list(core.String matterId,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -668,6 +760,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1/matters/' + commons.Escaper.ecapeVariable('$matterId') + '/holds';
@@ -693,6 +788,9 @@
   ///
   /// [holdId] - The ID of the hold.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Hold].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -701,7 +799,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Hold> update(
-      Hold request, core.String matterId, core.String holdId) {
+      Hold request, core.String matterId, core.String holdId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -718,6 +817,9 @@
     if (holdId == null) {
       throw new core.ArgumentError("Parameter holdId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/matters/' +
         commons.Escaper.ecapeVariable('$matterId') +
@@ -752,6 +854,9 @@
   ///
   /// [holdId] - The hold ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [HeldAccount].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -760,7 +865,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<HeldAccount> create(
-      HeldAccount request, core.String matterId, core.String holdId) {
+      HeldAccount request, core.String matterId, core.String holdId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -777,6 +883,9 @@
     if (holdId == null) {
       throw new core.ArgumentError("Parameter holdId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/matters/' +
         commons.Escaper.ecapeVariable('$matterId') +
@@ -804,6 +913,9 @@
   ///
   /// [accountId] - The ID of the account to remove from the hold.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -812,7 +924,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> delete(
-      core.String matterId, core.String holdId, core.String accountId) {
+      core.String matterId, core.String holdId, core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -829,6 +942,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/matters/' +
         commons.Escaper.ecapeVariable('$matterId') +
@@ -857,6 +973,9 @@
   ///
   /// [holdId] - The hold ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListHeldAccountsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -865,7 +984,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListHeldAccountsResponse> list(
-      core.String matterId, core.String holdId) {
+      core.String matterId, core.String holdId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -879,6 +999,9 @@
     if (holdId == null) {
       throw new core.ArgumentError("Parameter holdId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/matters/' +
         commons.Escaper.ecapeVariable('$matterId') +
diff --git a/generated/googleapis/lib/vision/v1.dart b/generated/googleapis/lib/vision/v1.dart
index 2949103..c1897b5 100644
--- a/generated/googleapis/lib/vision/v1.dart
+++ b/generated/googleapis/lib/vision/v1.dart
@@ -48,6 +48,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchAnnotateImagesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -56,7 +59,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchAnnotateImagesResponse> annotate(
-      BatchAnnotateImagesRequest request) {
+      BatchAnnotateImagesRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -67,6 +71,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/images:annotate';
 
@@ -1797,7 +1804,9 @@
 /// methods over safe-search verticals (for example, adult, spoof, medical,
 /// violence).
 class SafeSearchAnnotation {
-  /// Represents the adult content likelihood for the image.
+  /// Represents the adult content likelihood for the image. Adult content may
+  /// contain elements such as nudity, pornographic images or cartoons, or
+  /// sexual activities.
   /// Possible string values are:
   /// - "UNKNOWN" : Unknown likelihood.
   /// - "VERY_UNLIKELY" : It is very unlikely that the image belongs to the
@@ -1844,7 +1853,7 @@
   /// specified vertical.
   core.String spoof;
 
-  /// Violence likelihood.
+  /// Likelihood that this image contains violent content.
   /// Possible string values are:
   /// - "UNKNOWN" : Unknown likelihood.
   /// - "VERY_UNLIKELY" : It is very unlikely that the image belongs to the
diff --git a/generated/googleapis/lib/webfonts/v1.dart b/generated/googleapis/lib/webfonts/v1.dart
index 9cf4e02..2cfcdc2 100644
--- a/generated/googleapis/lib/webfonts/v1.dart
+++ b/generated/googleapis/lib/webfonts/v1.dart
@@ -47,6 +47,9 @@
   /// - "style" : Sort by number of styles
   /// - "trending" : Sort by trending
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [WebfontList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -54,7 +57,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<WebfontList> list({core.String sort}) {
+  async.Future<WebfontList> list({core.String sort, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -65,6 +68,9 @@
     if (sort != null) {
       _queryParams["sort"] = [sort];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'webfonts';
 
diff --git a/generated/googleapis/lib/webmasters/v3.dart b/generated/googleapis/lib/webmasters/v3.dart
index 98765d0..86746db 100644
--- a/generated/googleapis/lib/webmasters/v3.dart
+++ b/generated/googleapis/lib/webmasters/v3.dart
@@ -62,6 +62,9 @@
   /// [siteUrl] - The site's URL, including protocol. For example:
   /// http://www.example.com/
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchAnalyticsQueryResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -70,7 +73,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SearchAnalyticsQueryResponse> query(
-      SearchAnalyticsQueryRequest request, core.String siteUrl) {
+      SearchAnalyticsQueryRequest request, core.String siteUrl,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -84,6 +88,9 @@
     if (siteUrl == null) {
       throw new core.ArgumentError("Parameter siteUrl is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'sites/' +
         commons.Escaper.ecapeVariable('$siteUrl') +
@@ -115,12 +122,16 @@
   /// [feedpath] - The URL of the actual sitemap. For example:
   /// http://www.example.com/sitemap.xml
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String siteUrl, core.String feedpath) {
+  async.Future delete(core.String siteUrl, core.String feedpath,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -134,6 +145,9 @@
     if (feedpath == null) {
       throw new core.ArgumentError("Parameter feedpath is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -161,6 +175,9 @@
   /// [feedpath] - The URL of the actual sitemap. For example:
   /// http://www.example.com/sitemap.xml
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [WmxSitemap].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -168,7 +185,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<WmxSitemap> get(core.String siteUrl, core.String feedpath) {
+  async.Future<WmxSitemap> get(core.String siteUrl, core.String feedpath,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -182,6 +200,9 @@
     if (feedpath == null) {
       throw new core.ArgumentError("Parameter feedpath is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'sites/' +
         commons.Escaper.ecapeVariable('$siteUrl') +
@@ -208,6 +229,9 @@
   /// [sitemapIndex] - A URL of a site's sitemap index. For example:
   /// http://www.example.com/sitemapindex.xml
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SitemapsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -216,7 +240,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SitemapsListResponse> list(core.String siteUrl,
-      {core.String sitemapIndex}) {
+      {core.String sitemapIndex, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -230,6 +254,9 @@
     if (sitemapIndex != null) {
       _queryParams["sitemapIndex"] = [sitemapIndex];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'sites/' + commons.Escaper.ecapeVariable('$siteUrl') + '/sitemaps';
 
@@ -252,12 +279,16 @@
   /// [feedpath] - The URL of the sitemap to add. For example:
   /// http://www.example.com/sitemap.xml
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future submit(core.String siteUrl, core.String feedpath) {
+  async.Future submit(core.String siteUrl, core.String feedpath,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -271,6 +302,9 @@
     if (feedpath == null) {
       throw new core.ArgumentError("Parameter feedpath is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -300,12 +334,15 @@
   ///
   /// [siteUrl] - The URL of the site to add.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future add(core.String siteUrl) {
+  async.Future add(core.String siteUrl, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -316,6 +353,9 @@
     if (siteUrl == null) {
       throw new core.ArgumentError("Parameter siteUrl is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -337,12 +377,15 @@
   /// [siteUrl] - The URI of the property as defined in Search Console.
   /// Examples: http://www.example.com/ or android-app://com.example/
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String siteUrl) {
+  async.Future delete(core.String siteUrl, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -353,6 +396,9 @@
     if (siteUrl == null) {
       throw new core.ArgumentError("Parameter siteUrl is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -374,6 +420,9 @@
   /// [siteUrl] - The URI of the property as defined in Search Console.
   /// Examples: http://www.example.com/ or android-app://com.example/
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [WmxSite].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -381,7 +430,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<WmxSite> get(core.String siteUrl) {
+  async.Future<WmxSite> get(core.String siteUrl, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -392,6 +441,9 @@
     if (siteUrl == null) {
       throw new core.ArgumentError("Parameter siteUrl is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'sites/' + commons.Escaper.ecapeVariable('$siteUrl');
 
@@ -408,6 +460,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SitesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -415,7 +470,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SitesListResponse> list() {
+  async.Future<SitesListResponse> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -423,6 +478,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'sites';
 
     var _response = _requester.request(_url, "GET",
@@ -471,6 +530,9 @@
   /// - "smartphoneOnly"
   /// - "web"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UrlCrawlErrorsCountsQueryResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -481,7 +543,8 @@
   async.Future<UrlCrawlErrorsCountsQueryResponse> query(core.String siteUrl,
       {core.String category,
       core.bool latestCountsOnly,
-      core.String platform}) {
+      core.String platform,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -501,6 +564,9 @@
     if (platform != null) {
       _queryParams["platform"] = [platform];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'sites/' +
         commons.Escaper.ecapeVariable('$siteUrl') +
@@ -554,6 +620,9 @@
   /// - "smartphoneOnly"
   /// - "web"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UrlCrawlErrorsSample].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -562,7 +631,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UrlCrawlErrorsSample> get(core.String siteUrl, core.String url,
-      core.String category, core.String platform) {
+      core.String category, core.String platform,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -584,6 +654,9 @@
       throw new core.ArgumentError("Parameter platform is required.");
     }
     _queryParams["platform"] = [platform];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'sites/' +
         commons.Escaper.ecapeVariable('$siteUrl') +
@@ -626,6 +699,9 @@
   /// - "smartphoneOnly"
   /// - "web"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UrlCrawlErrorsSamplesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -634,7 +710,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UrlCrawlErrorsSamplesListResponse> list(
-      core.String siteUrl, core.String category, core.String platform) {
+      core.String siteUrl, core.String category, core.String platform,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -653,6 +730,9 @@
       throw new core.ArgumentError("Parameter platform is required.");
     }
     _queryParams["platform"] = [platform];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'sites/' +
         commons.Escaper.ecapeVariable('$siteUrl') +
@@ -700,13 +780,17 @@
   /// - "smartphoneOnly"
   /// - "web"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future markAsFixed(core.String siteUrl, core.String url,
-      core.String category, core.String platform) {
+      core.String category, core.String platform,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -728,6 +812,9 @@
       throw new core.ArgumentError("Parameter platform is required.");
     }
     _queryParams["platform"] = [platform];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
diff --git a/generated/googleapis/lib/youtube/v3.dart b/generated/googleapis/lib/youtube/v3.dart
index 49b6cac..8547830 100644
--- a/generated/googleapis/lib/youtube/v3.dart
+++ b/generated/googleapis/lib/youtube/v3.dart
@@ -125,6 +125,9 @@
   /// identifies the properties that the write operation will set as well as the
   /// properties that the API response will include.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Activity].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -132,7 +135,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Activity> insert(Activity request, core.String part) {
+  async.Future<Activity> insert(Activity request, core.String part,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -147,6 +151,9 @@
       throw new core.ArgumentError("Parameter part is required.");
     }
     _queryParams["part"] = [part];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'activities';
 
@@ -214,6 +221,9 @@
   /// previous activity on YouTube does not provide enough information to
   /// generate the activity feed.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ActivityListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -229,7 +239,8 @@
       core.String pageToken,
       core.DateTime publishedAfter,
       core.DateTime publishedBefore,
-      core.String regionCode}) {
+      core.String regionCode,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -265,6 +276,9 @@
     if (regionCode != null) {
       _queryParams["regionCode"] = [regionCode];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'activities';
 
@@ -307,13 +321,18 @@
   /// CMS account that the user authenticates with must be linked to the
   /// specified YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(core.String id,
-      {core.String onBehalfOf, core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOf,
+      core.String onBehalfOfContentOwner,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -331,6 +350,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -388,6 +410,9 @@
   /// caption language. The translation is generated by using machine
   /// translation, such as Google Translate.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -402,6 +427,7 @@
       core.String onBehalfOfContentOwner,
       core.String tfmt,
       core.String tlang,
+      core.String $fields,
       commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
@@ -426,6 +452,9 @@
     if (tlang != null) {
       _queryParams["tlang"] = [tlang];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -479,6 +508,9 @@
   /// transcript, which has no time codes, or if you suspect the time codes in
   /// your file are incorrect and want YouTube to try to fix them.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -496,6 +528,7 @@
       {core.String onBehalfOf,
       core.String onBehalfOfContentOwner,
       core.bool sync,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -521,6 +554,9 @@
     if (sync != null) {
       _queryParams["sync"] = ["${sync}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -576,6 +612,9 @@
   /// CMS account that the user authenticates with must be linked to the
   /// specified YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CaptionListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -586,7 +625,8 @@
   async.Future<CaptionListResponse> list(core.String part, core.String videoId,
       {core.String id,
       core.String onBehalfOf,
-      core.String onBehalfOfContentOwner}) {
+      core.String onBehalfOfContentOwner,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -611,6 +651,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'captions';
 
@@ -660,6 +703,9 @@
   /// the value to true, YouTube will automatically synchronize the caption
   /// track with the audio track.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -677,6 +723,7 @@
       {core.String onBehalfOf,
       core.String onBehalfOfContentOwner,
       core.bool sync,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -702,6 +749,9 @@
     if (sync != null) {
       _queryParams["sync"] = ["${sync}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -768,6 +818,9 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -784,6 +837,7 @@
   async.Future<ChannelBannerResource> insert(ChannelBannerResource request,
       {core.String channelId,
       core.String onBehalfOfContentOwner,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -802,6 +856,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -850,12 +907,16 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String id, {core.String onBehalfOfContentOwner}) {
+  async.Future delete(core.String id,
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -870,6 +931,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -930,6 +994,9 @@
   /// in the parameter value, without having to provide authentication
   /// credentials for each separate channel.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChannelSection].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -939,7 +1006,8 @@
   /// this method will complete with the same error.
   async.Future<ChannelSection> insert(ChannelSection request, core.String part,
       {core.String onBehalfOfContentOwner,
-      core.String onBehalfOfContentOwnerChannel}) {
+      core.String onBehalfOfContentOwnerChannel,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -962,6 +1030,9 @@
         onBehalfOfContentOwnerChannel
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'channelSections';
 
@@ -1021,6 +1092,9 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChannelSectionListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1033,7 +1107,8 @@
       core.String hl,
       core.String id,
       core.bool mine,
-      core.String onBehalfOfContentOwner}) {
+      core.String onBehalfOfContentOwner,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1060,6 +1135,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'channelSections';
 
@@ -1099,6 +1177,9 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChannelSection].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1107,7 +1188,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ChannelSection> update(ChannelSection request, core.String part,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1125,6 +1206,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'channelSections';
 
@@ -1208,6 +1292,9 @@
   /// result set that should be returned. In an API response, the nextPageToken
   /// and prevPageToken properties identify other pages that could be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChannelListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1225,7 +1312,8 @@
       core.bool mine,
       core.bool mySubscribers,
       core.String onBehalfOfContentOwner,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1267,6 +1355,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'channels';
 
@@ -1309,6 +1400,9 @@
   /// user authenticates with needs to be linked to the specified YouTube
   /// content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Channel].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1317,7 +1411,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Channel> update(Channel request, core.String part,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1335,6 +1429,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'channels';
 
@@ -1364,6 +1461,9 @@
   /// response will include. Set the parameter value to snippet. The snippet
   /// part has a quota cost of 2 units.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommentThread].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1371,7 +1471,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CommentThread> insert(CommentThread request, core.String part) {
+  async.Future<CommentThread> insert(CommentThread request, core.String part,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1386,6 +1487,9 @@
       throw new core.ArgumentError("Parameter part is required.");
     }
     _queryParams["part"] = [part];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'commentThreads';
 
@@ -1476,6 +1580,9 @@
   /// [videoId] - The videoId parameter instructs the API to return comment
   /// threads associated with the specified video ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommentThreadListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1493,7 +1600,8 @@
       core.String pageToken,
       core.String searchTerms,
       core.String textFormat,
-      core.String videoId}) {
+      core.String videoId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1537,6 +1645,9 @@
     if (videoId != null) {
       _queryParams["videoId"] = [videoId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'commentThreads';
 
@@ -1561,6 +1672,9 @@
   /// must at least include the snippet part in the parameter value since that
   /// part contains all of the properties that the API request can update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommentThread].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1568,7 +1682,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<CommentThread> update(CommentThread request, core.String part) {
+  async.Future<CommentThread> update(CommentThread request, core.String part,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1583,6 +1698,9 @@
       throw new core.ArgumentError("Parameter part is required.");
     }
     _queryParams["part"] = [part];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'commentThreads';
 
@@ -1608,12 +1726,15 @@
   /// [id] - The id parameter specifies the comment ID for the resource that is
   /// being deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String id) {
+  async.Future delete(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1625,6 +1746,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1650,6 +1774,9 @@
   /// response will include. Set the parameter value to snippet. The snippet
   /// part has a quota cost of 2 units.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1657,7 +1784,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Comment> insert(Comment request, core.String part) {
+  async.Future<Comment> insert(Comment request, core.String part,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1672,6 +1800,9 @@
       throw new core.ArgumentError("Parameter part is required.");
     }
     _queryParams["part"] = [part];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'comments';
 
@@ -1721,6 +1852,9 @@
   /// - "html" : Returns the comments in HTML format. This is the default value.
   /// - "plainText" : Returns the comments in plain text format.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [CommentListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1733,7 +1867,8 @@
       core.int maxResults,
       core.String pageToken,
       core.String parentId,
-      core.String textFormat}) {
+      core.String textFormat,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1760,6 +1895,9 @@
     if (textFormat != null) {
       _queryParams["textFormat"] = [textFormat];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'comments';
 
@@ -1780,12 +1918,15 @@
   /// [id] - The id parameter specifies a comma-separated list of IDs of
   /// comments that the caller believes should be classified as spam.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future markAsSpam(core.String id) {
+  async.Future markAsSpam(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1797,6 +1938,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1841,13 +1985,16 @@
   /// Note: This parameter is only valid if the moderationStatus parameter is
   /// also set to rejected.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future setModerationStatus(core.String id, core.String moderationStatus,
-      {core.bool banAuthor}) {
+      {core.bool banAuthor, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1866,6 +2013,9 @@
     if (banAuthor != null) {
       _queryParams["banAuthor"] = ["${banAuthor}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -1891,6 +2041,9 @@
   /// parameter value since that part contains all of the properties that the
   /// API request can update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Comment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1898,7 +2051,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Comment> update(Comment request, core.String part) {
+  async.Future<Comment> update(Comment request, core.String part,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1913,6 +2067,9 @@
       throw new core.ArgumentError("Parameter part is required.");
     }
     _queryParams["part"] = [part];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'comments';
 
@@ -1957,6 +2114,9 @@
   /// result set that should be returned. In an API response, the nextPageToken
   /// and prevPageToken properties identify other pages that could be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FanFundingEventListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1965,7 +2125,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<FanFundingEventListResponse> list(core.String part,
-      {core.String hl, core.int maxResults, core.String pageToken}) {
+      {core.String hl,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1986,6 +2149,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'fanFundingEvents';
 
@@ -2025,6 +2191,9 @@
   /// list of guide categories available in the specified country. The parameter
   /// value is an ISO 3166-1 alpha-2 country code.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GuideCategoryListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2033,7 +2202,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GuideCategoryListResponse> list(core.String part,
-      {core.String hl, core.String id, core.String regionCode}) {
+      {core.String hl,
+      core.String id,
+      core.String regionCode,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2054,6 +2226,9 @@
     if (regionCode != null) {
       _queryParams["regionCode"] = [regionCode];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'guideCategories';
 
@@ -2083,6 +2258,9 @@
   /// [hl] - The hl parameter specifies the language that should be used for
   /// text values in the API response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [I18nLanguageListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2091,7 +2269,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<I18nLanguageListResponse> list(core.String part,
-      {core.String hl}) {
+      {core.String hl, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2106,6 +2284,9 @@
     if (hl != null) {
       _queryParams["hl"] = [hl];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'i18nLanguages';
 
@@ -2135,6 +2316,9 @@
   /// [hl] - The hl parameter specifies the language that should be used for
   /// text values in the API response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [I18nRegionListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2143,7 +2327,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<I18nRegionListResponse> list(core.String part,
-      {core.String hl}) {
+      {core.String hl, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2158,6 +2342,9 @@
     if (hl != null) {
       _queryParams["hl"] = [hl];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'i18nRegions';
 
@@ -2229,6 +2416,9 @@
   /// the API will remove any existing binding between the broadcast and a video
   /// stream.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LiveBroadcast].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2239,7 +2429,8 @@
   async.Future<LiveBroadcast> bind(core.String id, core.String part,
       {core.String onBehalfOfContentOwner,
       core.String onBehalfOfContentOwnerChannel,
-      core.String streamId}) {
+      core.String streamId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2266,6 +2457,9 @@
     if (streamId != null) {
       _queryParams["streamId"] = [streamId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'liveBroadcasts/bind';
 
@@ -2346,6 +2540,9 @@
   /// the specified slate change will occur. The value is specified in ISO 8601
   /// (YYYY-MM-DDThh:mm:ss.sssZ) format.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LiveBroadcast].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2358,7 +2555,8 @@
       core.String offsetTimeMs,
       core.String onBehalfOfContentOwner,
       core.String onBehalfOfContentOwnerChannel,
-      core.DateTime walltime}) {
+      core.DateTime walltime,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2391,6 +2589,9 @@
     if (walltime != null) {
       _queryParams["walltime"] = [(walltime).toIso8601String()];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'liveBroadcasts/control';
 
@@ -2443,6 +2644,9 @@
   /// in the parameter value, without having to provide authentication
   /// credentials for each separate channel.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
@@ -2450,7 +2654,8 @@
   /// this method will complete with the same error.
   async.Future delete(core.String id,
       {core.String onBehalfOfContentOwner,
-      core.String onBehalfOfContentOwnerChannel}) {
+      core.String onBehalfOfContentOwnerChannel,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2470,6 +2675,9 @@
         onBehalfOfContentOwnerChannel
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2530,6 +2738,9 @@
   /// in the parameter value, without having to provide authentication
   /// credentials for each separate channel.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LiveBroadcast].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2539,7 +2750,8 @@
   /// this method will complete with the same error.
   async.Future<LiveBroadcast> insert(LiveBroadcast request, core.String part,
       {core.String onBehalfOfContentOwner,
-      core.String onBehalfOfContentOwnerChannel}) {
+      core.String onBehalfOfContentOwnerChannel,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2562,6 +2774,9 @@
         onBehalfOfContentOwnerChannel
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'liveBroadcasts';
 
@@ -2649,6 +2864,9 @@
   /// result set that should be returned. In an API response, the nextPageToken
   /// and prevPageToken properties identify other pages that could be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LiveBroadcastListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2664,7 +2882,8 @@
       core.bool mine,
       core.String onBehalfOfContentOwner,
       core.String onBehalfOfContentOwnerChannel,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2702,6 +2921,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'liveBroadcasts';
 
@@ -2778,6 +3000,9 @@
   /// in the parameter value, without having to provide authentication
   /// credentials for each separate channel.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LiveBroadcast].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2788,7 +3013,8 @@
   async.Future<LiveBroadcast> transition(
       core.String broadcastStatus, core.String id, core.String part,
       {core.String onBehalfOfContentOwner,
-      core.String onBehalfOfContentOwnerChannel}) {
+      core.String onBehalfOfContentOwnerChannel,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2816,6 +3042,9 @@
         onBehalfOfContentOwnerChannel
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'liveBroadcasts/transition';
 
@@ -2885,6 +3114,9 @@
   /// in the parameter value, without having to provide authentication
   /// credentials for each separate channel.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LiveBroadcast].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2894,7 +3126,8 @@
   /// this method will complete with the same error.
   async.Future<LiveBroadcast> update(LiveBroadcast request, core.String part,
       {core.String onBehalfOfContentOwner,
-      core.String onBehalfOfContentOwnerChannel}) {
+      core.String onBehalfOfContentOwnerChannel,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2917,6 +3150,9 @@
         onBehalfOfContentOwnerChannel
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'liveBroadcasts';
 
@@ -2942,12 +3178,15 @@
   /// [id] - The id parameter identifies the chat ban to remove. The value
   /// uniquely identifies both the ban and the chat.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String id) {
+  async.Future delete(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2959,6 +3198,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -2984,6 +3226,9 @@
   /// properties that the API response returns. Set the parameter value to
   /// snippet.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LiveChatBan].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2991,7 +3236,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LiveChatBan> insert(LiveChatBan request, core.String part) {
+  async.Future<LiveChatBan> insert(LiveChatBan request, core.String part,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3006,6 +3252,9 @@
       throw new core.ArgumentError("Parameter part is required.");
     }
     _queryParams["part"] = [part];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'liveChat/bans';
 
@@ -3032,12 +3281,15 @@
   /// [id] - The id parameter specifies the YouTube chat message ID of the
   /// resource that is being deleted.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String id) {
+  async.Future delete(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3049,6 +3301,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3073,6 +3328,9 @@
   /// properties that the write operation will set as well as the properties
   /// that the API response will include. Set the parameter value to snippet.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LiveChatMessage].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3081,7 +3339,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LiveChatMessage> insert(
-      LiveChatMessage request, core.String part) {
+      LiveChatMessage request, core.String part,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3096,6 +3355,9 @@
       throw new core.ArgumentError("Parameter part is required.");
     }
     _queryParams["part"] = [part];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'liveChat/messages';
 
@@ -3141,6 +3403,9 @@
   /// Default: 88.
   /// Value must be between "16" and "720".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LiveChatMessageListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3153,7 +3418,8 @@
       {core.String hl,
       core.int maxResults,
       core.String pageToken,
-      core.int profileImageSize}) {
+      core.int profileImageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3181,6 +3447,9 @@
     if (profileImageSize != null) {
       _queryParams["profileImageSize"] = ["${profileImageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'liveChat/messages';
 
@@ -3208,12 +3477,15 @@
   /// [id] - The id parameter identifies the chat moderator to remove. The value
   /// uniquely identifies both the moderator and the chat.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String id) {
+  async.Future delete(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3225,6 +3497,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3250,6 +3525,9 @@
   /// properties that the API response returns. Set the parameter value to
   /// snippet.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LiveChatModerator].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3258,7 +3536,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LiveChatModerator> insert(
-      LiveChatModerator request, core.String part) {
+      LiveChatModerator request, core.String part,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3273,6 +3552,9 @@
       throw new core.ArgumentError("Parameter part is required.");
     }
     _queryParams["part"] = [part];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'liveChat/moderators';
 
@@ -3303,6 +3585,9 @@
   /// result set that should be returned. In an API response, the nextPageToken
   /// and prevPageToken properties identify other pages that could be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LiveChatModeratorListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3312,7 +3597,7 @@
   /// this method will complete with the same error.
   async.Future<LiveChatModeratorListResponse> list(
       core.String liveChatId, core.String part,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3334,6 +3619,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'liveChat/moderators';
 
@@ -3393,6 +3681,9 @@
   /// in the parameter value, without having to provide authentication
   /// credentials for each separate channel.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
@@ -3400,7 +3691,8 @@
   /// this method will complete with the same error.
   async.Future delete(core.String id,
       {core.String onBehalfOfContentOwner,
-      core.String onBehalfOfContentOwnerChannel}) {
+      core.String onBehalfOfContentOwnerChannel,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3420,6 +3712,9 @@
         onBehalfOfContentOwnerChannel
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3481,6 +3776,9 @@
   /// in the parameter value, without having to provide authentication
   /// credentials for each separate channel.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LiveStream].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3490,7 +3788,8 @@
   /// this method will complete with the same error.
   async.Future<LiveStream> insert(LiveStream request, core.String part,
       {core.String onBehalfOfContentOwner,
-      core.String onBehalfOfContentOwnerChannel}) {
+      core.String onBehalfOfContentOwnerChannel,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3513,6 +3812,9 @@
         onBehalfOfContentOwnerChannel
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'liveStreams';
 
@@ -3583,6 +3885,9 @@
   /// result set that should be returned. In an API response, the nextPageToken
   /// and prevPageToken properties identify other pages that could be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LiveStreamListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3596,7 +3901,8 @@
       core.bool mine,
       core.String onBehalfOfContentOwner,
       core.String onBehalfOfContentOwnerChannel,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3628,6 +3934,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'liveStreams';
 
@@ -3692,6 +4001,9 @@
   /// in the parameter value, without having to provide authentication
   /// credentials for each separate channel.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LiveStream].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3701,7 +4013,8 @@
   /// this method will complete with the same error.
   async.Future<LiveStream> update(LiveStream request, core.String part,
       {core.String onBehalfOfContentOwner,
-      core.String onBehalfOfContentOwnerChannel}) {
+      core.String onBehalfOfContentOwnerChannel,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3724,6 +4037,9 @@
         onBehalfOfContentOwnerChannel
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'liveStreams';
 
@@ -3763,12 +4079,16 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String id, {core.String onBehalfOfContentOwner}) {
+  async.Future delete(core.String id,
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3783,6 +4103,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -3820,6 +4143,9 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlaylistItem].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3828,7 +4154,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PlaylistItem> insert(PlaylistItem request, core.String part,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3846,6 +4172,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'playlistItems';
 
@@ -3907,6 +4236,9 @@
   /// [videoId] - The videoId parameter specifies that the request should return
   /// only the playlist items that contain the specified video.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlaylistItemListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -3920,7 +4252,8 @@
       core.String onBehalfOfContentOwner,
       core.String pageToken,
       core.String playlistId,
-      core.String videoId}) {
+      core.String videoId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -3950,6 +4283,9 @@
     if (videoId != null) {
       _queryParams["videoId"] = [videoId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'playlistItems';
 
@@ -3998,6 +4334,9 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlaylistItem].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4006,7 +4345,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PlaylistItem> update(PlaylistItem request, core.String part,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4024,6 +4363,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'playlistItems';
 
@@ -4063,12 +4405,16 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String id, {core.String onBehalfOfContentOwner}) {
+  async.Future delete(core.String id,
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4083,6 +4429,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -4140,6 +4489,9 @@
   /// in the parameter value, without having to provide authentication
   /// credentials for each separate channel.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Playlist].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4149,7 +4501,8 @@
   /// this method will complete with the same error.
   async.Future<Playlist> insert(Playlist request, core.String part,
       {core.String onBehalfOfContentOwner,
-      core.String onBehalfOfContentOwnerChannel}) {
+      core.String onBehalfOfContentOwnerChannel,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4172,6 +4525,9 @@
         onBehalfOfContentOwnerChannel
       ];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'playlists';
 
@@ -4253,6 +4609,9 @@
   /// result set that should be returned. In an API response, the nextPageToken
   /// and prevPageToken properties identify other pages that could be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PlaylistListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4268,7 +4627,8 @@
       core.bool mine,
       core.String onBehalfOfContentOwner,
       core.String onBehalfOfContentOwnerChannel,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4306,6 +4666,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'playlists';
 
@@ -4349,6 +4712,9 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Playlist].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4357,7 +4723,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Playlist> update(Playlist request, core.String part,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4375,6 +4741,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'playlists';
 
@@ -4639,6 +5008,9 @@
   /// - "episode" : Only retrieve episodes of shows.
   /// - "movie" : Only retrieve movies.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SearchListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4676,7 +5048,8 @@
       core.String videoEmbeddable,
       core.String videoLicense,
       core.String videoSyndicated,
-      core.String videoType}) {
+      core.String videoType,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4778,6 +5151,9 @@
     if (videoType != null) {
       _queryParams["videoType"] = [videoType];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'search';
 
@@ -4817,6 +5193,9 @@
   /// result set that should be returned. In an API response, the nextPageToken
   /// and prevPageToken properties identify other pages that could be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SponsorListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4825,7 +5204,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SponsorListResponse> list(core.String part,
-      {core.String filter, core.int maxResults, core.String pageToken}) {
+      {core.String filter,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4846,6 +5228,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'sponsors';
 
@@ -4872,12 +5257,15 @@
   /// resource that is being deleted. In a subscription resource, the id
   /// property specifies the YouTube subscription ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String id) {
+  async.Future delete(core.String id, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4889,6 +5277,9 @@
       throw new core.ArgumentError("Parameter id is required.");
     }
     _queryParams["id"] = [id];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -4913,6 +5304,9 @@
   /// identifies the properties that the write operation will set as well as the
   /// properties that the API response will include.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -4920,7 +5314,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Subscription> insert(Subscription request, core.String part) {
+  async.Future<Subscription> insert(Subscription request, core.String part,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -4935,6 +5330,9 @@
       throw new core.ArgumentError("Parameter part is required.");
     }
     _queryParams["part"] = [part];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'subscriptions';
 
@@ -5030,6 +5428,9 @@
   /// result set that should be returned. In an API response, the nextPageToken
   /// and prevPageToken properties identify other pages that could be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SubscriptionListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5048,7 +5449,8 @@
       core.String onBehalfOfContentOwner,
       core.String onBehalfOfContentOwnerChannel,
       core.String order,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5095,6 +5497,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'subscriptions';
 
@@ -5139,6 +5544,9 @@
   /// result set that should be returned. In an API response, the nextPageToken
   /// and prevPageToken properties identify other pages that could be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SuperChatEventListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5147,7 +5555,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SuperChatEventListResponse> list(core.String part,
-      {core.String hl, core.int maxResults, core.String pageToken}) {
+      {core.String hl,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5168,6 +5579,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'superChatEvents';
 
@@ -5207,6 +5621,9 @@
   /// CMS account that the user authenticates with must be linked to the
   /// specified YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -5222,6 +5639,7 @@
   /// this method will complete with the same error.
   async.Future<ThumbnailSetResponse> set(core.String videoId,
       {core.String onBehalfOfContentOwner,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -5238,6 +5656,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -5277,6 +5698,9 @@
   /// [hl] - The hl parameter specifies the language that should be used for
   /// text values in the API response.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VideoAbuseReportReasonListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5285,7 +5709,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<VideoAbuseReportReasonListResponse> list(core.String part,
-      {core.String hl}) {
+      {core.String hl, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5300,6 +5724,9 @@
     if (hl != null) {
       _queryParams["hl"] = [hl];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'videoAbuseReportReasons';
 
@@ -5337,6 +5764,9 @@
   /// list of video categories available in the specified country. The parameter
   /// value is an ISO 3166-1 alpha-2 country code.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VideoCategoryListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5345,7 +5775,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<VideoCategoryListResponse> list(core.String part,
-      {core.String hl, core.String id, core.String regionCode}) {
+      {core.String hl,
+      core.String id,
+      core.String regionCode,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5366,6 +5799,9 @@
     if (regionCode != null) {
       _queryParams["regionCode"] = [regionCode];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'videoCategories';
 
@@ -5406,12 +5842,16 @@
   /// CMS account that the user authenticates with must be linked to the
   /// specified YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String id, {core.String onBehalfOfContentOwner}) {
+  async.Future delete(core.String id,
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5426,6 +5866,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -5462,6 +5905,9 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VideoGetRatingResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5470,7 +5916,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<VideoGetRatingResponse> getRating(core.String id,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5485,6 +5931,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'videos/getRating';
 
@@ -5561,6 +6010,9 @@
   /// [stabilize] - The stabilize parameter indicates whether YouTube should
   /// adjust the video to remove shaky camera motions.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -5580,6 +6032,7 @@
       core.String onBehalfOfContentOwner,
       core.String onBehalfOfContentOwnerChannel,
       core.bool stabilize,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -5613,6 +6066,9 @@
     if (stabilize != null) {
       _queryParams["stabilize"] = ["${stabilize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -5724,6 +6180,9 @@
   /// be used in conjunction with the chart parameter. By default, charts are
   /// not restricted to a particular category.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [VideoListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5743,7 +6202,8 @@
       core.String onBehalfOfContentOwner,
       core.String pageToken,
       core.String regionCode,
-      core.String videoCategoryId}) {
+      core.String videoCategoryId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5791,6 +6251,9 @@
     if (videoCategoryId != null) {
       _queryParams["videoCategoryId"] = [videoCategoryId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'videos';
 
@@ -5817,12 +6280,15 @@
   /// - "none" : Removes any rating that the authenticated user had previously
   /// set for the video.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future rate(core.String id, core.String rating) {
+  async.Future rate(core.String id, core.String rating, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5838,6 +6304,9 @@
       throw new core.ArgumentError("Parameter rating is required.");
     }
     _queryParams["rating"] = [rating];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -5871,13 +6340,16 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future reportAbuse(VideoAbuseReport request,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5891,6 +6363,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -5945,6 +6420,9 @@
   /// CMS account that the user authenticates with must be linked to the
   /// specified YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Video].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -5953,7 +6431,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Video> update(Video request, core.String part,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -5971,6 +6449,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'videos';
 
@@ -6011,6 +6492,9 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [uploadMedia] - The media to upload.
   ///
   /// [uploadOptions] - Options for the media upload. Streaming Media without
@@ -6024,6 +6508,7 @@
   /// this method will complete with the same error.
   async.Future set(InvideoBranding request, core.String channelId,
       {core.String onBehalfOfContentOwner,
+      core.String $fields,
       commons.UploadOptions uploadOptions: commons.UploadOptions.Default,
       commons.Media uploadMedia}) {
     var _url = null;
@@ -6043,6 +6528,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _uploadMedia = uploadMedia;
     _uploadOptions = uploadOptions;
@@ -6085,13 +6573,16 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future unset(core.String channelId,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -6106,6 +6597,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
diff --git a/generated/googleapis/lib/youtubeanalytics/v1.dart b/generated/googleapis/lib/youtubeanalytics/v1.dart
index d2b9c10..776fcf7 100644
--- a/generated/googleapis/lib/youtubeanalytics/v1.dart
+++ b/generated/googleapis/lib/youtubeanalytics/v1.dart
@@ -74,12 +74,16 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String id, {core.String onBehalfOfContentOwner}) {
+  async.Future delete(core.String id,
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -94,6 +98,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -127,6 +134,9 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GroupItem].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -135,7 +145,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GroupItem> insert(GroupItem request,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -149,6 +159,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groupItems';
 
@@ -181,6 +194,9 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GroupItemListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -189,7 +205,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GroupItemListResponse> list(core.String groupId,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -204,6 +220,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groupItems';
 
@@ -242,12 +261,16 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String id, {core.String onBehalfOfContentOwner}) {
+  async.Future delete(core.String id,
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -262,6 +285,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -295,6 +321,9 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Group].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -303,7 +332,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Group> insert(Group request,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -317,6 +346,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groups';
 
@@ -359,6 +391,9 @@
   /// result set that should be returned. In an API response, the nextPageToken
   /// property identifies the next page that can be retrieved.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GroupListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -370,7 +405,8 @@
       {core.String id,
       core.bool mine,
       core.String onBehalfOfContentOwner,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -390,6 +426,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groups';
 
@@ -421,6 +460,9 @@
   /// account that the user authenticates with must be linked to the specified
   /// YouTube content owner.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Group].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -429,7 +471,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Group> update(Group request,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -443,6 +485,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'groups';
 
@@ -526,6 +571,9 @@
   /// parameter as a pagination mechanism along with the max-results parameter
   /// (one-based, inclusive).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ResultTable].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -541,7 +589,8 @@
       core.bool include_historical_channel_data,
       core.int max_results,
       core.String sort,
-      core.int start_index}) {
+      core.int start_index,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -588,6 +637,9 @@
     if (start_index != null) {
       _queryParams["start-index"] = ["${start_index}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'reports';
 
diff --git a/generated/googleapis/lib/youtubereporting/v1.dart b/generated/googleapis/lib/youtubereporting/v1.dart
index 538d55b..632ebd5 100644
--- a/generated/googleapis/lib/youtubereporting/v1.dart
+++ b/generated/googleapis/lib/youtubereporting/v1.dart
@@ -65,6 +65,9 @@
   /// the user is acting on. If
   /// not set, the user is acting for himself (his own channel).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Job].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -72,7 +75,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Job> create(Job request, {core.String onBehalfOfContentOwner}) {
+  async.Future<Job> create(Job request,
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -86,6 +90,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/jobs';
 
@@ -108,6 +115,9 @@
   /// the user is acting on. If
   /// not set, the user is acting for himself (his own channel).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -116,7 +126,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> delete(core.String jobId,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -130,6 +140,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/jobs/' + commons.Escaper.ecapeVariable('$jobId');
 
@@ -152,6 +165,9 @@
   /// the user is acting on. If
   /// not set, the user is acting for himself (his own channel).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Job].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -160,7 +176,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Job> get(core.String jobId,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -174,6 +190,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/jobs/' + commons.Escaper.ecapeVariable('$jobId');
 
@@ -190,6 +209,10 @@
   ///
   /// Request parameters:
   ///
+  /// [onBehalfOfContentOwner] - The content owner's external ID on which behalf
+  /// the user is acting on. If
+  /// not set, the user is acting for himself (his own channel).
+  ///
   /// [includeSystemManaged] - If set to true, also system-managed jobs will be
   /// returned; otherwise only
   /// user-created jobs will be returned. System-managed jobs can neither be
@@ -205,9 +228,8 @@
   /// requested.
   /// If unspecified, server will pick an appropriate default.
   ///
-  /// [onBehalfOfContentOwner] - The content owner's external ID on which behalf
-  /// the user is acting on. If
-  /// not set, the user is acting for himself (his own channel).
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListJobsResponse].
   ///
@@ -217,10 +239,11 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListJobsResponse> list(
-      {core.bool includeSystemManaged,
+      {core.String onBehalfOfContentOwner,
+      core.bool includeSystemManaged,
       core.String pageToken,
       core.int pageSize,
-      core.String onBehalfOfContentOwner}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -228,6 +251,9 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if (onBehalfOfContentOwner != null) {
+      _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
+    }
     if (includeSystemManaged != null) {
       _queryParams["includeSystemManaged"] = ["${includeSystemManaged}"];
     }
@@ -237,8 +263,8 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (onBehalfOfContentOwner != null) {
-      _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1/jobs';
@@ -270,6 +296,9 @@
   /// the user is acting on. If
   /// not set, the user is acting for himself (his own channel).
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Report].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -278,7 +307,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Report> get(core.String jobId, core.String reportId,
-      {core.String onBehalfOfContentOwner}) {
+      {core.String onBehalfOfContentOwner, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -295,6 +324,9 @@
     if (onBehalfOfContentOwner != null) {
       _queryParams["onBehalfOfContentOwner"] = [onBehalfOfContentOwner];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/jobs/' +
         commons.Escaper.ecapeVariable('$jobId') +
@@ -342,6 +374,9 @@
   /// than requested.
   /// If unspecified, server will pick an appropriate default.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListReportsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -355,7 +390,8 @@
       core.String createdAfter,
       core.String startTimeAtOrAfter,
       core.String pageToken,
-      core.int pageSize}) {
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -384,6 +420,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/jobs/' + commons.Escaper.ecapeVariable('$jobId') + '/reports';
 
@@ -411,6 +450,9 @@
   /// ReadRequest.resource_name.
   /// Value must have pattern "^.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// [downloadOptions] - Options for downloading. A download can be either a
   /// Metadata (default) or Media download. Partial Media downloads are possible
   /// as well.
@@ -427,7 +469,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future download(core.String resourceName,
-      {commons.DownloadOptions downloadOptions:
+      {core.String $fields,
+      commons.DownloadOptions downloadOptions:
           commons.DownloadOptions.Metadata}) {
     var _url = null;
     var _queryParams = new core.Map();
@@ -439,6 +482,9 @@
     if (resourceName == null) {
       throw new core.ArgumentError("Parameter resourceName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = downloadOptions;
 
@@ -487,6 +533,9 @@
   /// than requested.
   /// If unspecified, server will pick an appropriate default.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListReportTypesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -498,7 +547,8 @@
       {core.String onBehalfOfContentOwner,
       core.bool includeSystemManaged,
       core.String pageToken,
-      core.int pageSize}) {
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -518,6 +568,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1/reportTypes';
 
diff --git a/generated/googleapis/pubspec.yaml b/generated/googleapis/pubspec.yaml
index f12fa2f..887b49a 100644
--- a/generated/googleapis/pubspec.yaml
+++ b/generated/googleapis/pubspec.yaml
@@ -1,7 +1,7 @@
 name: googleapis
-version: 0.45.0
+version: 0.46.0
 author: Dart Team <misc@dartlang.org>
-description: "Auto-generated client libraries for accessing the following APIs:acceleratedmobilepageurl:v1, adexchangebuyer:v1.3, adexchangebuyer:v1.4, adexchangeseller:v1.1, adexchangeseller:v2.0, adexperiencereport:v1, admin:datatransfer_v1, admin:directory_v1, admin:reports_v1, adsense:v1.4, adsensehost:v4.1, analytics:v3, analyticsreporting:v4, androiddeviceprovisioning:v1, androidenterprise:v1, androidmanagement:v1, androidpublisher:v2, appengine:v1, appsactivity:v1, appstate:v1, bigquery:v2, bigquerydatatransfer:v1, blogger:v3, books:v1, calendar:v3, civicinfo:v2, classroom:v1, cloudbilling:v1, cloudbuild:v1, clouddebugger:v2, cloudfunctions:v1, cloudiot:v1, cloudkms:v1, cloudresourcemanager:v1, cloudresourcemanager:v2beta1, cloudtrace:v1, cloudtrace:v2, compute:v1, consumersurveys:v2, container:v1, content:v2, content:v2sandbox, customsearch:v1, dataproc:v1, datastore:v1, deploymentmanager:v2, dfareporting:v2.8, discovery:v1, dns:v1, doubleclickbidmanager:v1, doubleclicksearch:v2, drive:v2, drive:v3, firebasedynamiclinks:v1, firebaseremoteconfig:v1, firebaserules:v1, fitness:v1, fusiontables:v1, fusiontables:v2, games:v1, gamesConfiguration:v1configuration, gamesManagement:v1management, genomics:v1, gmail:v1, groupsmigration:v1, groupssettings:v1, iam:v1, identitytoolkit:v3, kgsearch:v1, language:v1, licensing:v1, logging:v2, manufacturers:v1, mirror:v1, ml:v1, monitoring:v3, oauth2:v2, pagespeedonline:v1, pagespeedonline:v2, partners:v2, people:v1, playcustomapp:v1, playmoviespartner:v1, plus:v1, plusDomains:v1, prediction:v1.6, pubsub:v1, qpxExpress:v1, reseller:v1, runtimeconfig:v1, safebrowsing:v4, script:v1, searchconsole:v1, servicecontrol:v1, servicemanagement:v1, serviceuser:v1, sheets:v4, siteVerification:v1, slides:v1, sourcerepo:v1, spanner:v1, speech:v1, storage:v1, storagetransfer:v1, streetviewpublish:v1, surveys:v2, tagmanager:v1, tagmanager:v2, tasks:v1, testing:v1, translate:v2, urlshortener:v1, vault:v1, vision:v1, webfonts:v1, webmasters:v3, youtube:v3, youtubeAnalytics:v1, youtubereporting:v1"
+description: "Auto-generated client libraries for accessing the following APIs:acceleratedmobilepageurl:v1, adexchangebuyer:v1.3, adexchangebuyer:v1.4, adexchangeseller:v1.1, adexchangeseller:v2.0, adexperiencereport:v1, admin:datatransfer_v1, admin:directory_v1, admin:reports_v1, adsense:v1.4, adsensehost:v4.1, analytics:v3, analyticsreporting:v4, androiddeviceprovisioning:v1, androidenterprise:v1, androidmanagement:v1, androidpublisher:v2, appengine:v1, appsactivity:v1, appstate:v1, bigquery:v2, bigquerydatatransfer:v1, blogger:v3, books:v1, calendar:v3, civicinfo:v2, classroom:v1, cloudbilling:v1, cloudbuild:v1, clouddebugger:v2, cloudfunctions:v1, cloudiot:v1, cloudkms:v1, cloudresourcemanager:v1, cloudresourcemanager:v2beta1, cloudtrace:v1, cloudtrace:v2, compute:v1, consumersurveys:v2, container:v1, content:v2, content:v2sandbox, customsearch:v1, dataproc:v1, datastore:v1, deploymentmanager:v2, dfareporting:v2.8, discovery:v1, dns:v1, doubleclickbidmanager:v1, doubleclicksearch:v2, drive:v2, drive:v3, firebasedynamiclinks:v1, firebaseremoteconfig:v1, firebaserules:v1, fitness:v1, fusiontables:v1, fusiontables:v2, games:v1, gamesConfiguration:v1configuration, gamesManagement:v1management, genomics:v1, gmail:v1, groupsmigration:v1, groupssettings:v1, iam:v1, identitytoolkit:v3, kgsearch:v1, language:v1, licensing:v1, logging:v2, manufacturers:v1, mirror:v1, ml:v1, monitoring:v3, oauth2:v2, pagespeedonline:v1, pagespeedonline:v2, partners:v2, people:v1, playcustomapp:v1, playmoviespartner:v1, plus:v1, plusDomains:v1, prediction:v1.6, pubsub:v1, reseller:v1, runtimeconfig:v1, safebrowsing:v4, script:v1, searchconsole:v1, servicecontrol:v1, servicemanagement:v1, serviceuser:v1, sheets:v4, siteVerification:v1, slides:v1, sourcerepo:v1, spanner:v1, speech:v1, storage:v1, storagetransfer:v1, streetviewpublish:v1, surveys:v2, tagmanager:v1, tagmanager:v2, tasks:v1, testing:v1, translate:v2, urlshortener:v1, vault:v1, vision:v1, webfonts:v1, webmasters:v3, youtube:v3, youtubeAnalytics:v1, youtubereporting:v1"
 homepage: http://www.dartlang.org/googleapis/
 environment:
   sdk: '>=1.22.0 <2.0.0'
diff --git a/generated/googleapis/test/acceleratedmobilepageurl/v1_test.dart b/generated/googleapis/test/acceleratedmobilepageurl/v1_test.dart
index 603c3ce..8fc36c9 100644
--- a/generated/googleapis/test/acceleratedmobilepageurl/v1_test.dart
+++ b/generated/googleapis/test/acceleratedmobilepageurl/v1_test.dart
@@ -96,14 +96,14 @@
   buildCounterAmpUrlError--;
 }
 
-buildUnnamed1298() {
+buildUnnamed1285() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1298(core.List<core.String> o) {
+checkUnnamed1285(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -115,7 +115,7 @@
   buildCounterBatchGetAmpUrlsRequest++;
   if (buildCounterBatchGetAmpUrlsRequest < 3) {
     o.lookupStrategy = "foo";
-    o.urls = buildUnnamed1298();
+    o.urls = buildUnnamed1285();
   }
   buildCounterBatchGetAmpUrlsRequest--;
   return o;
@@ -125,32 +125,32 @@
   buildCounterBatchGetAmpUrlsRequest++;
   if (buildCounterBatchGetAmpUrlsRequest < 3) {
     unittest.expect(o.lookupStrategy, unittest.equals('foo'));
-    checkUnnamed1298(o.urls);
+    checkUnnamed1285(o.urls);
   }
   buildCounterBatchGetAmpUrlsRequest--;
 }
 
-buildUnnamed1299() {
+buildUnnamed1286() {
   var o = new core.List<api.AmpUrl>();
   o.add(buildAmpUrl());
   o.add(buildAmpUrl());
   return o;
 }
 
-checkUnnamed1299(core.List<api.AmpUrl> o) {
+checkUnnamed1286(core.List<api.AmpUrl> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAmpUrl(o[0]);
   checkAmpUrl(o[1]);
 }
 
-buildUnnamed1300() {
+buildUnnamed1287() {
   var o = new core.List<api.AmpUrlError>();
   o.add(buildAmpUrlError());
   o.add(buildAmpUrlError());
   return o;
 }
 
-checkUnnamed1300(core.List<api.AmpUrlError> o) {
+checkUnnamed1287(core.List<api.AmpUrlError> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAmpUrlError(o[0]);
   checkAmpUrlError(o[1]);
@@ -161,8 +161,8 @@
   var o = new api.BatchGetAmpUrlsResponse();
   buildCounterBatchGetAmpUrlsResponse++;
   if (buildCounterBatchGetAmpUrlsResponse < 3) {
-    o.ampUrls = buildUnnamed1299();
-    o.urlErrors = buildUnnamed1300();
+    o.ampUrls = buildUnnamed1286();
+    o.urlErrors = buildUnnamed1287();
   }
   buildCounterBatchGetAmpUrlsResponse--;
   return o;
@@ -171,8 +171,8 @@
 checkBatchGetAmpUrlsResponse(api.BatchGetAmpUrlsResponse o) {
   buildCounterBatchGetAmpUrlsResponse++;
   if (buildCounterBatchGetAmpUrlsResponse < 3) {
-    checkUnnamed1299(o.ampUrls);
-    checkUnnamed1300(o.urlErrors);
+    checkUnnamed1286(o.ampUrls);
+    checkUnnamed1287(o.urlErrors);
   }
   buildCounterBatchGetAmpUrlsResponse--;
 }
@@ -216,6 +216,7 @@
       api.AmpUrlsResourceApi res =
           new api.AcceleratedmobilepageurlApi(mock).ampUrls;
       var arg_request = buildBatchGetAmpUrlsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BatchGetAmpUrlsRequest.fromJson(json);
         checkBatchGetAmpUrlsRequest(obj);
@@ -249,6 +250,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -257,7 +259,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .batchGet(arg_request)
+          .batchGet(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BatchGetAmpUrlsResponse response) {
         checkBatchGetAmpUrlsResponse(response);
       })));
diff --git a/generated/googleapis/test/adexchangebuyer/v1_3_test.dart b/generated/googleapis/test/adexchangebuyer/v1_3_test.dart
new file mode 100644
index 0000000..46c7214
--- /dev/null
+++ b/generated/googleapis/test/adexchangebuyer/v1_3_test.dart
@@ -0,0 +1,2978 @@
+library googleapis.adexchangebuyer.v1_3.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/adexchangebuyer/v1_3.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAccountBidderLocation = 0;
+buildAccountBidderLocation() {
+  var o = new api.AccountBidderLocation();
+  buildCounterAccountBidderLocation++;
+  if (buildCounterAccountBidderLocation < 3) {
+    o.maximumQps = 42;
+    o.region = "foo";
+    o.url = "foo";
+  }
+  buildCounterAccountBidderLocation--;
+  return o;
+}
+
+checkAccountBidderLocation(api.AccountBidderLocation o) {
+  buildCounterAccountBidderLocation++;
+  if (buildCounterAccountBidderLocation < 3) {
+    unittest.expect(o.maximumQps, unittest.equals(42));
+    unittest.expect(o.region, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterAccountBidderLocation--;
+}
+
+buildUnnamed983() {
+  var o = new core.List<api.AccountBidderLocation>();
+  o.add(buildAccountBidderLocation());
+  o.add(buildAccountBidderLocation());
+  return o;
+}
+
+checkUnnamed983(core.List<api.AccountBidderLocation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountBidderLocation(o[0]);
+  checkAccountBidderLocation(o[1]);
+}
+
+core.int buildCounterAccount = 0;
+buildAccount() {
+  var o = new api.Account();
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    o.bidderLocation = buildUnnamed983();
+    o.cookieMatchingNid = "foo";
+    o.cookieMatchingUrl = "foo";
+    o.id = 42;
+    o.kind = "foo";
+    o.maximumActiveCreatives = 42;
+    o.maximumTotalQps = 42;
+    o.numberActiveCreatives = 42;
+  }
+  buildCounterAccount--;
+  return o;
+}
+
+checkAccount(api.Account o) {
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    checkUnnamed983(o.bidderLocation);
+    unittest.expect(o.cookieMatchingNid, unittest.equals('foo'));
+    unittest.expect(o.cookieMatchingUrl, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals(42));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.maximumActiveCreatives, unittest.equals(42));
+    unittest.expect(o.maximumTotalQps, unittest.equals(42));
+    unittest.expect(o.numberActiveCreatives, unittest.equals(42));
+  }
+  buildCounterAccount--;
+}
+
+buildUnnamed984() {
+  var o = new core.List<api.Account>();
+  o.add(buildAccount());
+  o.add(buildAccount());
+  return o;
+}
+
+checkUnnamed984(core.List<api.Account> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccount(o[0]);
+  checkAccount(o[1]);
+}
+
+core.int buildCounterAccountsList = 0;
+buildAccountsList() {
+  var o = new api.AccountsList();
+  buildCounterAccountsList++;
+  if (buildCounterAccountsList < 3) {
+    o.items = buildUnnamed984();
+    o.kind = "foo";
+  }
+  buildCounterAccountsList--;
+  return o;
+}
+
+checkAccountsList(api.AccountsList o) {
+  buildCounterAccountsList++;
+  if (buildCounterAccountsList < 3) {
+    checkUnnamed984(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAccountsList--;
+}
+
+buildUnnamed985() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed985(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBillingInfo = 0;
+buildBillingInfo() {
+  var o = new api.BillingInfo();
+  buildCounterBillingInfo++;
+  if (buildCounterBillingInfo < 3) {
+    o.accountId = 42;
+    o.accountName = "foo";
+    o.billingId = buildUnnamed985();
+    o.kind = "foo";
+  }
+  buildCounterBillingInfo--;
+  return o;
+}
+
+checkBillingInfo(api.BillingInfo o) {
+  buildCounterBillingInfo++;
+  if (buildCounterBillingInfo < 3) {
+    unittest.expect(o.accountId, unittest.equals(42));
+    unittest.expect(o.accountName, unittest.equals('foo'));
+    checkUnnamed985(o.billingId);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterBillingInfo--;
+}
+
+buildUnnamed986() {
+  var o = new core.List<api.BillingInfo>();
+  o.add(buildBillingInfo());
+  o.add(buildBillingInfo());
+  return o;
+}
+
+checkUnnamed986(core.List<api.BillingInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBillingInfo(o[0]);
+  checkBillingInfo(o[1]);
+}
+
+core.int buildCounterBillingInfoList = 0;
+buildBillingInfoList() {
+  var o = new api.BillingInfoList();
+  buildCounterBillingInfoList++;
+  if (buildCounterBillingInfoList < 3) {
+    o.items = buildUnnamed986();
+    o.kind = "foo";
+  }
+  buildCounterBillingInfoList--;
+  return o;
+}
+
+checkBillingInfoList(api.BillingInfoList o) {
+  buildCounterBillingInfoList++;
+  if (buildCounterBillingInfoList < 3) {
+    checkUnnamed986(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterBillingInfoList--;
+}
+
+core.int buildCounterBudget = 0;
+buildBudget() {
+  var o = new api.Budget();
+  buildCounterBudget++;
+  if (buildCounterBudget < 3) {
+    o.accountId = "foo";
+    o.billingId = "foo";
+    o.budgetAmount = "foo";
+    o.currencyCode = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+  }
+  buildCounterBudget--;
+  return o;
+}
+
+checkBudget(api.Budget o) {
+  buildCounterBudget++;
+  if (buildCounterBudget < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.billingId, unittest.equals('foo'));
+    unittest.expect(o.budgetAmount, unittest.equals('foo'));
+    unittest.expect(o.currencyCode, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterBudget--;
+}
+
+buildUnnamed987() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed987(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed988() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed988(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+buildUnnamed989() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed989(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed990() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed990(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterCreativeCorrections = 0;
+buildCreativeCorrections() {
+  var o = new api.CreativeCorrections();
+  buildCounterCreativeCorrections++;
+  if (buildCounterCreativeCorrections < 3) {
+    o.details = buildUnnamed990();
+    o.reason = "foo";
+  }
+  buildCounterCreativeCorrections--;
+  return o;
+}
+
+checkCreativeCorrections(api.CreativeCorrections o) {
+  buildCounterCreativeCorrections++;
+  if (buildCounterCreativeCorrections < 3) {
+    checkUnnamed990(o.details);
+    unittest.expect(o.reason, unittest.equals('foo'));
+  }
+  buildCounterCreativeCorrections--;
+}
+
+buildUnnamed991() {
+  var o = new core.List<api.CreativeCorrections>();
+  o.add(buildCreativeCorrections());
+  o.add(buildCreativeCorrections());
+  return o;
+}
+
+checkUnnamed991(core.List<api.CreativeCorrections> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeCorrections(o[0]);
+  checkCreativeCorrections(o[1]);
+}
+
+buildUnnamed992() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed992(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterCreativeDisapprovalReasons = 0;
+buildCreativeDisapprovalReasons() {
+  var o = new api.CreativeDisapprovalReasons();
+  buildCounterCreativeDisapprovalReasons++;
+  if (buildCounterCreativeDisapprovalReasons < 3) {
+    o.details = buildUnnamed992();
+    o.reason = "foo";
+  }
+  buildCounterCreativeDisapprovalReasons--;
+  return o;
+}
+
+checkCreativeDisapprovalReasons(api.CreativeDisapprovalReasons o) {
+  buildCounterCreativeDisapprovalReasons++;
+  if (buildCounterCreativeDisapprovalReasons < 3) {
+    checkUnnamed992(o.details);
+    unittest.expect(o.reason, unittest.equals('foo'));
+  }
+  buildCounterCreativeDisapprovalReasons--;
+}
+
+buildUnnamed993() {
+  var o = new core.List<api.CreativeDisapprovalReasons>();
+  o.add(buildCreativeDisapprovalReasons());
+  o.add(buildCreativeDisapprovalReasons());
+  return o;
+}
+
+checkUnnamed993(core.List<api.CreativeDisapprovalReasons> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeDisapprovalReasons(o[0]);
+  checkCreativeDisapprovalReasons(o[1]);
+}
+
+core.int buildCounterCreativeFilteringReasonsReasons = 0;
+buildCreativeFilteringReasonsReasons() {
+  var o = new api.CreativeFilteringReasonsReasons();
+  buildCounterCreativeFilteringReasonsReasons++;
+  if (buildCounterCreativeFilteringReasonsReasons < 3) {
+    o.filteringCount = "foo";
+    o.filteringStatus = 42;
+  }
+  buildCounterCreativeFilteringReasonsReasons--;
+  return o;
+}
+
+checkCreativeFilteringReasonsReasons(api.CreativeFilteringReasonsReasons o) {
+  buildCounterCreativeFilteringReasonsReasons++;
+  if (buildCounterCreativeFilteringReasonsReasons < 3) {
+    unittest.expect(o.filteringCount, unittest.equals('foo'));
+    unittest.expect(o.filteringStatus, unittest.equals(42));
+  }
+  buildCounterCreativeFilteringReasonsReasons--;
+}
+
+buildUnnamed994() {
+  var o = new core.List<api.CreativeFilteringReasonsReasons>();
+  o.add(buildCreativeFilteringReasonsReasons());
+  o.add(buildCreativeFilteringReasonsReasons());
+  return o;
+}
+
+checkUnnamed994(core.List<api.CreativeFilteringReasonsReasons> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeFilteringReasonsReasons(o[0]);
+  checkCreativeFilteringReasonsReasons(o[1]);
+}
+
+core.int buildCounterCreativeFilteringReasons = 0;
+buildCreativeFilteringReasons() {
+  var o = new api.CreativeFilteringReasons();
+  buildCounterCreativeFilteringReasons++;
+  if (buildCounterCreativeFilteringReasons < 3) {
+    o.date = "foo";
+    o.reasons = buildUnnamed994();
+  }
+  buildCounterCreativeFilteringReasons--;
+  return o;
+}
+
+checkCreativeFilteringReasons(api.CreativeFilteringReasons o) {
+  buildCounterCreativeFilteringReasons++;
+  if (buildCounterCreativeFilteringReasons < 3) {
+    unittest.expect(o.date, unittest.equals('foo'));
+    checkUnnamed994(o.reasons);
+  }
+  buildCounterCreativeFilteringReasons--;
+}
+
+buildUnnamed995() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed995(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterCreativeNativeAdAppIcon = 0;
+buildCreativeNativeAdAppIcon() {
+  var o = new api.CreativeNativeAdAppIcon();
+  buildCounterCreativeNativeAdAppIcon++;
+  if (buildCounterCreativeNativeAdAppIcon < 3) {
+    o.height = 42;
+    o.url = "foo";
+    o.width = 42;
+  }
+  buildCounterCreativeNativeAdAppIcon--;
+  return o;
+}
+
+checkCreativeNativeAdAppIcon(api.CreativeNativeAdAppIcon o) {
+  buildCounterCreativeNativeAdAppIcon++;
+  if (buildCounterCreativeNativeAdAppIcon < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterCreativeNativeAdAppIcon--;
+}
+
+core.int buildCounterCreativeNativeAdImage = 0;
+buildCreativeNativeAdImage() {
+  var o = new api.CreativeNativeAdImage();
+  buildCounterCreativeNativeAdImage++;
+  if (buildCounterCreativeNativeAdImage < 3) {
+    o.height = 42;
+    o.url = "foo";
+    o.width = 42;
+  }
+  buildCounterCreativeNativeAdImage--;
+  return o;
+}
+
+checkCreativeNativeAdImage(api.CreativeNativeAdImage o) {
+  buildCounterCreativeNativeAdImage++;
+  if (buildCounterCreativeNativeAdImage < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterCreativeNativeAdImage--;
+}
+
+buildUnnamed996() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed996(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterCreativeNativeAdLogo = 0;
+buildCreativeNativeAdLogo() {
+  var o = new api.CreativeNativeAdLogo();
+  buildCounterCreativeNativeAdLogo++;
+  if (buildCounterCreativeNativeAdLogo < 3) {
+    o.height = 42;
+    o.url = "foo";
+    o.width = 42;
+  }
+  buildCounterCreativeNativeAdLogo--;
+  return o;
+}
+
+checkCreativeNativeAdLogo(api.CreativeNativeAdLogo o) {
+  buildCounterCreativeNativeAdLogo++;
+  if (buildCounterCreativeNativeAdLogo < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterCreativeNativeAdLogo--;
+}
+
+core.int buildCounterCreativeNativeAd = 0;
+buildCreativeNativeAd() {
+  var o = new api.CreativeNativeAd();
+  buildCounterCreativeNativeAd++;
+  if (buildCounterCreativeNativeAd < 3) {
+    o.advertiser = "foo";
+    o.appIcon = buildCreativeNativeAdAppIcon();
+    o.body = "foo";
+    o.callToAction = "foo";
+    o.clickTrackingUrl = "foo";
+    o.headline = "foo";
+    o.image = buildCreativeNativeAdImage();
+    o.impressionTrackingUrl = buildUnnamed996();
+    o.logo = buildCreativeNativeAdLogo();
+    o.price = "foo";
+    o.starRating = 42.0;
+    o.store = "foo";
+  }
+  buildCounterCreativeNativeAd--;
+  return o;
+}
+
+checkCreativeNativeAd(api.CreativeNativeAd o) {
+  buildCounterCreativeNativeAd++;
+  if (buildCounterCreativeNativeAd < 3) {
+    unittest.expect(o.advertiser, unittest.equals('foo'));
+    checkCreativeNativeAdAppIcon(o.appIcon);
+    unittest.expect(o.body, unittest.equals('foo'));
+    unittest.expect(o.callToAction, unittest.equals('foo'));
+    unittest.expect(o.clickTrackingUrl, unittest.equals('foo'));
+    unittest.expect(o.headline, unittest.equals('foo'));
+    checkCreativeNativeAdImage(o.image);
+    checkUnnamed996(o.impressionTrackingUrl);
+    checkCreativeNativeAdLogo(o.logo);
+    unittest.expect(o.price, unittest.equals('foo'));
+    unittest.expect(o.starRating, unittest.equals(42.0));
+    unittest.expect(o.store, unittest.equals('foo'));
+  }
+  buildCounterCreativeNativeAd--;
+}
+
+buildUnnamed997() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed997(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+buildUnnamed998() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed998(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+buildUnnamed999() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed999(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+buildUnnamed1000() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed1000(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+core.int buildCounterCreative = 0;
+buildCreative() {
+  var o = new api.Creative();
+  buildCounterCreative++;
+  if (buildCounterCreative < 3) {
+    o.HTMLSnippet = "foo";
+    o.accountId = 42;
+    o.advertiserId = buildUnnamed987();
+    o.advertiserName = "foo";
+    o.agencyId = "foo";
+    o.apiUploadTimestamp = core.DateTime.parse("2002-02-27T14:01:02");
+    o.attribute = buildUnnamed988();
+    o.buyerCreativeId = "foo";
+    o.clickThroughUrl = buildUnnamed989();
+    o.corrections = buildUnnamed991();
+    o.disapprovalReasons = buildUnnamed993();
+    o.filteringReasons = buildCreativeFilteringReasons();
+    o.height = 42;
+    o.impressionTrackingUrl = buildUnnamed995();
+    o.kind = "foo";
+    o.nativeAd = buildCreativeNativeAd();
+    o.productCategories = buildUnnamed997();
+    o.restrictedCategories = buildUnnamed998();
+    o.sensitiveCategories = buildUnnamed999();
+    o.status = "foo";
+    o.vendorType = buildUnnamed1000();
+    o.version = 42;
+    o.videoURL = "foo";
+    o.width = 42;
+  }
+  buildCounterCreative--;
+  return o;
+}
+
+checkCreative(api.Creative o) {
+  buildCounterCreative++;
+  if (buildCounterCreative < 3) {
+    unittest.expect(o.HTMLSnippet, unittest.equals('foo'));
+    unittest.expect(o.accountId, unittest.equals(42));
+    checkUnnamed987(o.advertiserId);
+    unittest.expect(o.advertiserName, unittest.equals('foo'));
+    unittest.expect(o.agencyId, unittest.equals('foo'));
+    unittest.expect(o.apiUploadTimestamp,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    checkUnnamed988(o.attribute);
+    unittest.expect(o.buyerCreativeId, unittest.equals('foo'));
+    checkUnnamed989(o.clickThroughUrl);
+    checkUnnamed991(o.corrections);
+    checkUnnamed993(o.disapprovalReasons);
+    checkCreativeFilteringReasons(o.filteringReasons);
+    unittest.expect(o.height, unittest.equals(42));
+    checkUnnamed995(o.impressionTrackingUrl);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkCreativeNativeAd(o.nativeAd);
+    checkUnnamed997(o.productCategories);
+    checkUnnamed998(o.restrictedCategories);
+    checkUnnamed999(o.sensitiveCategories);
+    unittest.expect(o.status, unittest.equals('foo'));
+    checkUnnamed1000(o.vendorType);
+    unittest.expect(o.version, unittest.equals(42));
+    unittest.expect(o.videoURL, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterCreative--;
+}
+
+buildUnnamed1001() {
+  var o = new core.List<api.Creative>();
+  o.add(buildCreative());
+  o.add(buildCreative());
+  return o;
+}
+
+checkUnnamed1001(core.List<api.Creative> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreative(o[0]);
+  checkCreative(o[1]);
+}
+
+core.int buildCounterCreativesList = 0;
+buildCreativesList() {
+  var o = new api.CreativesList();
+  buildCounterCreativesList++;
+  if (buildCounterCreativesList < 3) {
+    o.items = buildUnnamed1001();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterCreativesList--;
+  return o;
+}
+
+checkCreativesList(api.CreativesList o) {
+  buildCounterCreativesList++;
+  if (buildCounterCreativesList < 3) {
+    checkUnnamed1001(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterCreativesList--;
+}
+
+core.int buildCounterDirectDeal = 0;
+buildDirectDeal() {
+  var o = new api.DirectDeal();
+  buildCounterDirectDeal++;
+  if (buildCounterDirectDeal < 3) {
+    o.accountId = 42;
+    o.advertiser = "foo";
+    o.allowsAlcohol = true;
+    o.buyerAccountId = "foo";
+    o.currencyCode = "foo";
+    o.dealTier = "foo";
+    o.endTime = "foo";
+    o.fixedCpm = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.privateExchangeMinCpm = "foo";
+    o.publisherBlocksOverriden = true;
+    o.sellerNetwork = "foo";
+    o.startTime = "foo";
+  }
+  buildCounterDirectDeal--;
+  return o;
+}
+
+checkDirectDeal(api.DirectDeal o) {
+  buildCounterDirectDeal++;
+  if (buildCounterDirectDeal < 3) {
+    unittest.expect(o.accountId, unittest.equals(42));
+    unittest.expect(o.advertiser, unittest.equals('foo'));
+    unittest.expect(o.allowsAlcohol, unittest.isTrue);
+    unittest.expect(o.buyerAccountId, unittest.equals('foo'));
+    unittest.expect(o.currencyCode, unittest.equals('foo'));
+    unittest.expect(o.dealTier, unittest.equals('foo'));
+    unittest.expect(o.endTime, unittest.equals('foo'));
+    unittest.expect(o.fixedCpm, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.privateExchangeMinCpm, unittest.equals('foo'));
+    unittest.expect(o.publisherBlocksOverriden, unittest.isTrue);
+    unittest.expect(o.sellerNetwork, unittest.equals('foo'));
+    unittest.expect(o.startTime, unittest.equals('foo'));
+  }
+  buildCounterDirectDeal--;
+}
+
+buildUnnamed1002() {
+  var o = new core.List<api.DirectDeal>();
+  o.add(buildDirectDeal());
+  o.add(buildDirectDeal());
+  return o;
+}
+
+checkUnnamed1002(core.List<api.DirectDeal> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDirectDeal(o[0]);
+  checkDirectDeal(o[1]);
+}
+
+core.int buildCounterDirectDealsList = 0;
+buildDirectDealsList() {
+  var o = new api.DirectDealsList();
+  buildCounterDirectDealsList++;
+  if (buildCounterDirectDealsList < 3) {
+    o.directDeals = buildUnnamed1002();
+    o.kind = "foo";
+  }
+  buildCounterDirectDealsList--;
+  return o;
+}
+
+checkDirectDealsList(api.DirectDealsList o) {
+  buildCounterDirectDealsList++;
+  if (buildCounterDirectDealsList < 3) {
+    checkUnnamed1002(o.directDeals);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterDirectDealsList--;
+}
+
+buildUnnamed1003() {
+  var o = new core.List<core.Object>();
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  return o;
+}
+
+checkUnnamed1003(core.List<core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o[0]) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(casted1["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted1["bool"], unittest.equals(true));
+  unittest.expect(casted1["string"], unittest.equals('foo'));
+  var casted2 = (o[1]) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(casted2["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted2["bool"], unittest.equals(true));
+  unittest.expect(casted2["string"], unittest.equals('foo'));
+}
+
+buildUnnamed1004() {
+  var o = new core.List<core.Object>();
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  return o;
+}
+
+checkUnnamed1004(core.List<core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted3 = (o[0]) as core.Map;
+  unittest.expect(casted3, unittest.hasLength(3));
+  unittest.expect(casted3["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted3["bool"], unittest.equals(true));
+  unittest.expect(casted3["string"], unittest.equals('foo'));
+  var casted4 = (o[1]) as core.Map;
+  unittest.expect(casted4, unittest.hasLength(3));
+  unittest.expect(casted4["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted4["bool"], unittest.equals(true));
+  unittest.expect(casted4["string"], unittest.equals('foo'));
+}
+
+buildUnnamed1005() {
+  var o = new core.List<core.Object>();
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  return o;
+}
+
+checkUnnamed1005(core.List<core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted5 = (o[0]) as core.Map;
+  unittest.expect(casted5, unittest.hasLength(3));
+  unittest.expect(casted5["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted5["bool"], unittest.equals(true));
+  unittest.expect(casted5["string"], unittest.equals('foo'));
+  var casted6 = (o[1]) as core.Map;
+  unittest.expect(casted6, unittest.hasLength(3));
+  unittest.expect(casted6["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted6["bool"], unittest.equals(true));
+  unittest.expect(casted6["string"], unittest.equals('foo'));
+}
+
+buildUnnamed1006() {
+  var o = new core.List<core.Object>();
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  return o;
+}
+
+checkUnnamed1006(core.List<core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted7 = (o[0]) as core.Map;
+  unittest.expect(casted7, unittest.hasLength(3));
+  unittest.expect(casted7["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted7["bool"], unittest.equals(true));
+  unittest.expect(casted7["string"], unittest.equals('foo'));
+  var casted8 = (o[1]) as core.Map;
+  unittest.expect(casted8, unittest.hasLength(3));
+  unittest.expect(casted8["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted8["bool"], unittest.equals(true));
+  unittest.expect(casted8["string"], unittest.equals('foo'));
+}
+
+core.int buildCounterPerformanceReport = 0;
+buildPerformanceReport() {
+  var o = new api.PerformanceReport();
+  buildCounterPerformanceReport++;
+  if (buildCounterPerformanceReport < 3) {
+    o.bidRate = 42.0;
+    o.bidRequestRate = 42.0;
+    o.calloutStatusRate = buildUnnamed1003();
+    o.cookieMatcherStatusRate = buildUnnamed1004();
+    o.creativeStatusRate = buildUnnamed1005();
+    o.filteredBidRate = 42.0;
+    o.hostedMatchStatusRate = buildUnnamed1006();
+    o.inventoryMatchRate = 42.0;
+    o.kind = "foo";
+    o.latency50thPercentile = 42.0;
+    o.latency85thPercentile = 42.0;
+    o.latency95thPercentile = 42.0;
+    o.noQuotaInRegion = 42.0;
+    o.outOfQuota = 42.0;
+    o.pixelMatchRequests = 42.0;
+    o.pixelMatchResponses = 42.0;
+    o.quotaConfiguredLimit = 42.0;
+    o.quotaThrottledLimit = 42.0;
+    o.region = "foo";
+    o.successfulRequestRate = 42.0;
+    o.timestamp = "foo";
+    o.unsuccessfulRequestRate = 42.0;
+  }
+  buildCounterPerformanceReport--;
+  return o;
+}
+
+checkPerformanceReport(api.PerformanceReport o) {
+  buildCounterPerformanceReport++;
+  if (buildCounterPerformanceReport < 3) {
+    unittest.expect(o.bidRate, unittest.equals(42.0));
+    unittest.expect(o.bidRequestRate, unittest.equals(42.0));
+    checkUnnamed1003(o.calloutStatusRate);
+    checkUnnamed1004(o.cookieMatcherStatusRate);
+    checkUnnamed1005(o.creativeStatusRate);
+    unittest.expect(o.filteredBidRate, unittest.equals(42.0));
+    checkUnnamed1006(o.hostedMatchStatusRate);
+    unittest.expect(o.inventoryMatchRate, unittest.equals(42.0));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.latency50thPercentile, unittest.equals(42.0));
+    unittest.expect(o.latency85thPercentile, unittest.equals(42.0));
+    unittest.expect(o.latency95thPercentile, unittest.equals(42.0));
+    unittest.expect(o.noQuotaInRegion, unittest.equals(42.0));
+    unittest.expect(o.outOfQuota, unittest.equals(42.0));
+    unittest.expect(o.pixelMatchRequests, unittest.equals(42.0));
+    unittest.expect(o.pixelMatchResponses, unittest.equals(42.0));
+    unittest.expect(o.quotaConfiguredLimit, unittest.equals(42.0));
+    unittest.expect(o.quotaThrottledLimit, unittest.equals(42.0));
+    unittest.expect(o.region, unittest.equals('foo'));
+    unittest.expect(o.successfulRequestRate, unittest.equals(42.0));
+    unittest.expect(o.timestamp, unittest.equals('foo'));
+    unittest.expect(o.unsuccessfulRequestRate, unittest.equals(42.0));
+  }
+  buildCounterPerformanceReport--;
+}
+
+buildUnnamed1007() {
+  var o = new core.List<api.PerformanceReport>();
+  o.add(buildPerformanceReport());
+  o.add(buildPerformanceReport());
+  return o;
+}
+
+checkUnnamed1007(core.List<api.PerformanceReport> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPerformanceReport(o[0]);
+  checkPerformanceReport(o[1]);
+}
+
+core.int buildCounterPerformanceReportList = 0;
+buildPerformanceReportList() {
+  var o = new api.PerformanceReportList();
+  buildCounterPerformanceReportList++;
+  if (buildCounterPerformanceReportList < 3) {
+    o.kind = "foo";
+    o.performanceReport = buildUnnamed1007();
+  }
+  buildCounterPerformanceReportList--;
+  return o;
+}
+
+checkPerformanceReportList(api.PerformanceReportList o) {
+  buildCounterPerformanceReportList++;
+  if (buildCounterPerformanceReportList < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed1007(o.performanceReport);
+  }
+  buildCounterPerformanceReportList--;
+}
+
+buildUnnamed1008() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1008(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPretargetingConfigDimensions = 0;
+buildPretargetingConfigDimensions() {
+  var o = new api.PretargetingConfigDimensions();
+  buildCounterPretargetingConfigDimensions++;
+  if (buildCounterPretargetingConfigDimensions < 3) {
+    o.height = "foo";
+    o.width = "foo";
+  }
+  buildCounterPretargetingConfigDimensions--;
+  return o;
+}
+
+checkPretargetingConfigDimensions(api.PretargetingConfigDimensions o) {
+  buildCounterPretargetingConfigDimensions++;
+  if (buildCounterPretargetingConfigDimensions < 3) {
+    unittest.expect(o.height, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals('foo'));
+  }
+  buildCounterPretargetingConfigDimensions--;
+}
+
+buildUnnamed1009() {
+  var o = new core.List<api.PretargetingConfigDimensions>();
+  o.add(buildPretargetingConfigDimensions());
+  o.add(buildPretargetingConfigDimensions());
+  return o;
+}
+
+checkUnnamed1009(core.List<api.PretargetingConfigDimensions> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPretargetingConfigDimensions(o[0]);
+  checkPretargetingConfigDimensions(o[1]);
+}
+
+buildUnnamed1010() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1010(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1011() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1011(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPretargetingConfigExcludedPlacements = 0;
+buildPretargetingConfigExcludedPlacements() {
+  var o = new api.PretargetingConfigExcludedPlacements();
+  buildCounterPretargetingConfigExcludedPlacements++;
+  if (buildCounterPretargetingConfigExcludedPlacements < 3) {
+    o.token = "foo";
+    o.type = "foo";
+  }
+  buildCounterPretargetingConfigExcludedPlacements--;
+  return o;
+}
+
+checkPretargetingConfigExcludedPlacements(
+    api.PretargetingConfigExcludedPlacements o) {
+  buildCounterPretargetingConfigExcludedPlacements++;
+  if (buildCounterPretargetingConfigExcludedPlacements < 3) {
+    unittest.expect(o.token, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterPretargetingConfigExcludedPlacements--;
+}
+
+buildUnnamed1012() {
+  var o = new core.List<api.PretargetingConfigExcludedPlacements>();
+  o.add(buildPretargetingConfigExcludedPlacements());
+  o.add(buildPretargetingConfigExcludedPlacements());
+  return o;
+}
+
+checkUnnamed1012(core.List<api.PretargetingConfigExcludedPlacements> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPretargetingConfigExcludedPlacements(o[0]);
+  checkPretargetingConfigExcludedPlacements(o[1]);
+}
+
+buildUnnamed1013() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1013(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1014() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1014(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1015() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1015(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1016() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1016(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1017() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1017(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1018() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1018(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1019() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1019(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPretargetingConfigPlacements = 0;
+buildPretargetingConfigPlacements() {
+  var o = new api.PretargetingConfigPlacements();
+  buildCounterPretargetingConfigPlacements++;
+  if (buildCounterPretargetingConfigPlacements < 3) {
+    o.token = "foo";
+    o.type = "foo";
+  }
+  buildCounterPretargetingConfigPlacements--;
+  return o;
+}
+
+checkPretargetingConfigPlacements(api.PretargetingConfigPlacements o) {
+  buildCounterPretargetingConfigPlacements++;
+  if (buildCounterPretargetingConfigPlacements < 3) {
+    unittest.expect(o.token, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterPretargetingConfigPlacements--;
+}
+
+buildUnnamed1020() {
+  var o = new core.List<api.PretargetingConfigPlacements>();
+  o.add(buildPretargetingConfigPlacements());
+  o.add(buildPretargetingConfigPlacements());
+  return o;
+}
+
+checkUnnamed1020(core.List<api.PretargetingConfigPlacements> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPretargetingConfigPlacements(o[0]);
+  checkPretargetingConfigPlacements(o[1]);
+}
+
+buildUnnamed1021() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1021(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1022() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1022(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1023() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1023(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1024() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1024(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1025() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1025(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPretargetingConfig = 0;
+buildPretargetingConfig() {
+  var o = new api.PretargetingConfig();
+  buildCounterPretargetingConfig++;
+  if (buildCounterPretargetingConfig < 3) {
+    o.billingId = "foo";
+    o.configId = "foo";
+    o.configName = "foo";
+    o.creativeType = buildUnnamed1008();
+    o.dimensions = buildUnnamed1009();
+    o.excludedContentLabels = buildUnnamed1010();
+    o.excludedGeoCriteriaIds = buildUnnamed1011();
+    o.excludedPlacements = buildUnnamed1012();
+    o.excludedUserLists = buildUnnamed1013();
+    o.excludedVerticals = buildUnnamed1014();
+    o.geoCriteriaIds = buildUnnamed1015();
+    o.isActive = true;
+    o.kind = "foo";
+    o.languages = buildUnnamed1016();
+    o.mobileCarriers = buildUnnamed1017();
+    o.mobileDevices = buildUnnamed1018();
+    o.mobileOperatingSystemVersions = buildUnnamed1019();
+    o.placements = buildUnnamed1020();
+    o.platforms = buildUnnamed1021();
+    o.supportedCreativeAttributes = buildUnnamed1022();
+    o.userLists = buildUnnamed1023();
+    o.vendorTypes = buildUnnamed1024();
+    o.verticals = buildUnnamed1025();
+  }
+  buildCounterPretargetingConfig--;
+  return o;
+}
+
+checkPretargetingConfig(api.PretargetingConfig o) {
+  buildCounterPretargetingConfig++;
+  if (buildCounterPretargetingConfig < 3) {
+    unittest.expect(o.billingId, unittest.equals('foo'));
+    unittest.expect(o.configId, unittest.equals('foo'));
+    unittest.expect(o.configName, unittest.equals('foo'));
+    checkUnnamed1008(o.creativeType);
+    checkUnnamed1009(o.dimensions);
+    checkUnnamed1010(o.excludedContentLabels);
+    checkUnnamed1011(o.excludedGeoCriteriaIds);
+    checkUnnamed1012(o.excludedPlacements);
+    checkUnnamed1013(o.excludedUserLists);
+    checkUnnamed1014(o.excludedVerticals);
+    checkUnnamed1015(o.geoCriteriaIds);
+    unittest.expect(o.isActive, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed1016(o.languages);
+    checkUnnamed1017(o.mobileCarriers);
+    checkUnnamed1018(o.mobileDevices);
+    checkUnnamed1019(o.mobileOperatingSystemVersions);
+    checkUnnamed1020(o.placements);
+    checkUnnamed1021(o.platforms);
+    checkUnnamed1022(o.supportedCreativeAttributes);
+    checkUnnamed1023(o.userLists);
+    checkUnnamed1024(o.vendorTypes);
+    checkUnnamed1025(o.verticals);
+  }
+  buildCounterPretargetingConfig--;
+}
+
+buildUnnamed1026() {
+  var o = new core.List<api.PretargetingConfig>();
+  o.add(buildPretargetingConfig());
+  o.add(buildPretargetingConfig());
+  return o;
+}
+
+checkUnnamed1026(core.List<api.PretargetingConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPretargetingConfig(o[0]);
+  checkPretargetingConfig(o[1]);
+}
+
+core.int buildCounterPretargetingConfigList = 0;
+buildPretargetingConfigList() {
+  var o = new api.PretargetingConfigList();
+  buildCounterPretargetingConfigList++;
+  if (buildCounterPretargetingConfigList < 3) {
+    o.items = buildUnnamed1026();
+    o.kind = "foo";
+  }
+  buildCounterPretargetingConfigList--;
+  return o;
+}
+
+checkPretargetingConfigList(api.PretargetingConfigList o) {
+  buildCounterPretargetingConfigList++;
+  if (buildCounterPretargetingConfigList < 3) {
+    checkUnnamed1026(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterPretargetingConfigList--;
+}
+
+buildUnnamed1027() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed1027(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+buildUnnamed1028() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1028(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-AccountBidderLocation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountBidderLocation();
+      var od = new api.AccountBidderLocation.fromJson(o.toJson());
+      checkAccountBidderLocation(od);
+    });
+  });
+
+  unittest.group("obj-schema-Account", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccount();
+      var od = new api.Account.fromJson(o.toJson());
+      checkAccount(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountsList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountsList();
+      var od = new api.AccountsList.fromJson(o.toJson());
+      checkAccountsList(od);
+    });
+  });
+
+  unittest.group("obj-schema-BillingInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBillingInfo();
+      var od = new api.BillingInfo.fromJson(o.toJson());
+      checkBillingInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-BillingInfoList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBillingInfoList();
+      var od = new api.BillingInfoList.fromJson(o.toJson());
+      checkBillingInfoList(od);
+    });
+  });
+
+  unittest.group("obj-schema-Budget", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBudget();
+      var od = new api.Budget.fromJson(o.toJson());
+      checkBudget(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeCorrections", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeCorrections();
+      var od = new api.CreativeCorrections.fromJson(o.toJson());
+      checkCreativeCorrections(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeDisapprovalReasons", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeDisapprovalReasons();
+      var od = new api.CreativeDisapprovalReasons.fromJson(o.toJson());
+      checkCreativeDisapprovalReasons(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeFilteringReasonsReasons", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeFilteringReasonsReasons();
+      var od = new api.CreativeFilteringReasonsReasons.fromJson(o.toJson());
+      checkCreativeFilteringReasonsReasons(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeFilteringReasons", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeFilteringReasons();
+      var od = new api.CreativeFilteringReasons.fromJson(o.toJson());
+      checkCreativeFilteringReasons(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeNativeAdAppIcon", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeNativeAdAppIcon();
+      var od = new api.CreativeNativeAdAppIcon.fromJson(o.toJson());
+      checkCreativeNativeAdAppIcon(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeNativeAdImage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeNativeAdImage();
+      var od = new api.CreativeNativeAdImage.fromJson(o.toJson());
+      checkCreativeNativeAdImage(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeNativeAdLogo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeNativeAdLogo();
+      var od = new api.CreativeNativeAdLogo.fromJson(o.toJson());
+      checkCreativeNativeAdLogo(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeNativeAd", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeNativeAd();
+      var od = new api.CreativeNativeAd.fromJson(o.toJson());
+      checkCreativeNativeAd(od);
+    });
+  });
+
+  unittest.group("obj-schema-Creative", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreative();
+      var od = new api.Creative.fromJson(o.toJson());
+      checkCreative(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativesList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativesList();
+      var od = new api.CreativesList.fromJson(o.toJson());
+      checkCreativesList(od);
+    });
+  });
+
+  unittest.group("obj-schema-DirectDeal", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDirectDeal();
+      var od = new api.DirectDeal.fromJson(o.toJson());
+      checkDirectDeal(od);
+    });
+  });
+
+  unittest.group("obj-schema-DirectDealsList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDirectDealsList();
+      var od = new api.DirectDealsList.fromJson(o.toJson());
+      checkDirectDealsList(od);
+    });
+  });
+
+  unittest.group("obj-schema-PerformanceReport", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPerformanceReport();
+      var od = new api.PerformanceReport.fromJson(o.toJson());
+      checkPerformanceReport(od);
+    });
+  });
+
+  unittest.group("obj-schema-PerformanceReportList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPerformanceReportList();
+      var od = new api.PerformanceReportList.fromJson(o.toJson());
+      checkPerformanceReportList(od);
+    });
+  });
+
+  unittest.group("obj-schema-PretargetingConfigDimensions", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPretargetingConfigDimensions();
+      var od = new api.PretargetingConfigDimensions.fromJson(o.toJson());
+      checkPretargetingConfigDimensions(od);
+    });
+  });
+
+  unittest.group("obj-schema-PretargetingConfigExcludedPlacements", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPretargetingConfigExcludedPlacements();
+      var od =
+          new api.PretargetingConfigExcludedPlacements.fromJson(o.toJson());
+      checkPretargetingConfigExcludedPlacements(od);
+    });
+  });
+
+  unittest.group("obj-schema-PretargetingConfigPlacements", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPretargetingConfigPlacements();
+      var od = new api.PretargetingConfigPlacements.fromJson(o.toJson());
+      checkPretargetingConfigPlacements(od);
+    });
+  });
+
+  unittest.group("obj-schema-PretargetingConfig", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPretargetingConfig();
+      var od = new api.PretargetingConfig.fromJson(o.toJson());
+      checkPretargetingConfig(od);
+    });
+  });
+
+  unittest.group("obj-schema-PretargetingConfigList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPretargetingConfigList();
+      var od = new api.PretargetingConfigList.fromJson(o.toJson());
+      checkPretargetingConfigList(od);
+    });
+  });
+
+  unittest.group("resource-AccountsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.AdexchangebuyerApi(mock).accounts;
+      var arg_id = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.AdexchangebuyerApi(mock).accounts;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("accounts"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountsList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountsList response) {
+        checkAccountsList(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.AdexchangebuyerApi(mock).accounts;
+      var arg_request = buildAccount();
+      var arg_id = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Account.fromJson(json);
+        checkAccount(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.AdexchangebuyerApi(mock).accounts;
+      var arg_request = buildAccount();
+      var arg_id = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Account.fromJson(json);
+        checkAccount(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BillingInfoResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.BillingInfoResourceApi res =
+          new api.AdexchangebuyerApi(mock).billingInfo;
+      var arg_accountId = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("billinginfo/"));
+        pathOffset += 12;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBillingInfo());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BillingInfo response) {
+        checkBillingInfo(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BillingInfoResourceApi res =
+          new api.AdexchangebuyerApi(mock).billingInfo;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("billinginfo"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBillingInfoList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BillingInfoList response) {
+        checkBillingInfoList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BudgetResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.BudgetResourceApi res = new api.AdexchangebuyerApi(mock).budget;
+      var arg_accountId = "foo";
+      var arg_billingId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("billinginfo/"));
+        pathOffset += 12;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_billingId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBudget());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_billingId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Budget response) {
+        checkBudget(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.BudgetResourceApi res = new api.AdexchangebuyerApi(mock).budget;
+      var arg_request = buildBudget();
+      var arg_accountId = "foo";
+      var arg_billingId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Budget.fromJson(json);
+        checkBudget(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("billinginfo/"));
+        pathOffset += 12;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_billingId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBudget());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_accountId, arg_billingId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Budget response) {
+        checkBudget(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.BudgetResourceApi res = new api.AdexchangebuyerApi(mock).budget;
+      var arg_request = buildBudget();
+      var arg_accountId = "foo";
+      var arg_billingId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Budget.fromJson(json);
+        checkBudget(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("billinginfo/"));
+        pathOffset += 12;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_billingId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBudget());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_accountId, arg_billingId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Budget response) {
+        checkBudget(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CreativesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CreativesResourceApi res = new api.AdexchangebuyerApi(mock).creatives;
+      var arg_accountId = 42;
+      var arg_buyerCreativeId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("creatives/"));
+        pathOffset += 10;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_buyerCreativeId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreative());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_buyerCreativeId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Creative response) {
+        checkCreative(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.CreativesResourceApi res = new api.AdexchangebuyerApi(mock).creatives;
+      var arg_request = buildCreative();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Creative.fromJson(json);
+        checkCreative(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("creatives"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreative());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Creative response) {
+        checkCreative(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CreativesResourceApi res = new api.AdexchangebuyerApi(mock).creatives;
+      var arg_accountId = buildUnnamed1027();
+      var arg_buyerCreativeId = buildUnnamed1028();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_statusFilter = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("creatives"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["accountId"].map(core.int.parse).toList(),
+            unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["buyerCreativeId"], unittest.equals(arg_buyerCreativeId));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["statusFilter"].first, unittest.equals(arg_statusFilter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativesList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              accountId: arg_accountId,
+              buyerCreativeId: arg_buyerCreativeId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              statusFilter: arg_statusFilter,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativesList response) {
+        checkCreativesList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-DirectDealsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.DirectDealsResourceApi res =
+          new api.AdexchangebuyerApi(mock).directDeals;
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("directdeals/"));
+        pathOffset += 12;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDirectDeal());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DirectDeal response) {
+        checkDirectDeal(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.DirectDealsResourceApi res =
+          new api.AdexchangebuyerApi(mock).directDeals;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("directdeals"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDirectDealsList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DirectDealsList response) {
+        checkDirectDealsList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PerformanceReportResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PerformanceReportResourceApi res =
+          new api.AdexchangebuyerApi(mock).performanceReport;
+      var arg_accountId = "foo";
+      var arg_endDateTime = "foo";
+      var arg_startDateTime = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("performancereport"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["endDateTime"].first, unittest.equals(arg_endDateTime));
+        unittest.expect(queryMap["startDateTime"].first,
+            unittest.equals(arg_startDateTime));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPerformanceReportList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_endDateTime, arg_startDateTime,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PerformanceReportList response) {
+        checkPerformanceReportList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PretargetingConfigResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.PretargetingConfigResourceApi res =
+          new api.AdexchangebuyerApi(mock).pretargetingConfig;
+      var arg_accountId = "foo";
+      var arg_configId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("pretargetingconfigs/"));
+        pathOffset += 20;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_configId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_accountId, arg_configId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PretargetingConfigResourceApi res =
+          new api.AdexchangebuyerApi(mock).pretargetingConfig;
+      var arg_accountId = "foo";
+      var arg_configId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("pretargetingconfigs/"));
+        pathOffset += 20;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_configId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPretargetingConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_configId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PretargetingConfig response) {
+        checkPretargetingConfig(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.PretargetingConfigResourceApi res =
+          new api.AdexchangebuyerApi(mock).pretargetingConfig;
+      var arg_request = buildPretargetingConfig();
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PretargetingConfig.fromJson(json);
+        checkPretargetingConfig(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("pretargetingconfigs/"));
+        pathOffset += 20;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPretargetingConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PretargetingConfig response) {
+        checkPretargetingConfig(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PretargetingConfigResourceApi res =
+          new api.AdexchangebuyerApi(mock).pretargetingConfig;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("pretargetingconfigs/"));
+        pathOffset += 20;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPretargetingConfigList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PretargetingConfigList response) {
+        checkPretargetingConfigList(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.PretargetingConfigResourceApi res =
+          new api.AdexchangebuyerApi(mock).pretargetingConfig;
+      var arg_request = buildPretargetingConfig();
+      var arg_accountId = "foo";
+      var arg_configId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PretargetingConfig.fromJson(json);
+        checkPretargetingConfig(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("pretargetingconfigs/"));
+        pathOffset += 20;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_configId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPretargetingConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_accountId, arg_configId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PretargetingConfig response) {
+        checkPretargetingConfig(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.PretargetingConfigResourceApi res =
+          new api.AdexchangebuyerApi(mock).pretargetingConfig;
+      var arg_request = buildPretargetingConfig();
+      var arg_accountId = "foo";
+      var arg_configId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PretargetingConfig.fromJson(json);
+        checkPretargetingConfig(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.3/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("pretargetingconfigs/"));
+        pathOffset += 20;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_configId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPretargetingConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_accountId, arg_configId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PretargetingConfig response) {
+        checkPretargetingConfig(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/adexchangebuyer/v1_4_test.dart b/generated/googleapis/test/adexchangebuyer/v1_4_test.dart
new file mode 100644
index 0000000..c1333fd
--- /dev/null
+++ b/generated/googleapis/test/adexchangebuyer/v1_4_test.dart
@@ -0,0 +1,6574 @@
+library googleapis.adexchangebuyer.v1_4.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/adexchangebuyer/v1_4.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAccountBidderLocation = 0;
+buildAccountBidderLocation() {
+  var o = new api.AccountBidderLocation();
+  buildCounterAccountBidderLocation++;
+  if (buildCounterAccountBidderLocation < 3) {
+    o.bidProtocol = "foo";
+    o.maximumQps = 42;
+    o.region = "foo";
+    o.url = "foo";
+  }
+  buildCounterAccountBidderLocation--;
+  return o;
+}
+
+checkAccountBidderLocation(api.AccountBidderLocation o) {
+  buildCounterAccountBidderLocation++;
+  if (buildCounterAccountBidderLocation < 3) {
+    unittest.expect(o.bidProtocol, unittest.equals('foo'));
+    unittest.expect(o.maximumQps, unittest.equals(42));
+    unittest.expect(o.region, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterAccountBidderLocation--;
+}
+
+buildUnnamed2062() {
+  var o = new core.List<api.AccountBidderLocation>();
+  o.add(buildAccountBidderLocation());
+  o.add(buildAccountBidderLocation());
+  return o;
+}
+
+checkUnnamed2062(core.List<api.AccountBidderLocation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountBidderLocation(o[0]);
+  checkAccountBidderLocation(o[1]);
+}
+
+core.int buildCounterAccount = 0;
+buildAccount() {
+  var o = new api.Account();
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    o.bidderLocation = buildUnnamed2062();
+    o.cookieMatchingNid = "foo";
+    o.cookieMatchingUrl = "foo";
+    o.id = 42;
+    o.kind = "foo";
+    o.maximumActiveCreatives = 42;
+    o.maximumTotalQps = 42;
+    o.numberActiveCreatives = 42;
+  }
+  buildCounterAccount--;
+  return o;
+}
+
+checkAccount(api.Account o) {
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    checkUnnamed2062(o.bidderLocation);
+    unittest.expect(o.cookieMatchingNid, unittest.equals('foo'));
+    unittest.expect(o.cookieMatchingUrl, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals(42));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.maximumActiveCreatives, unittest.equals(42));
+    unittest.expect(o.maximumTotalQps, unittest.equals(42));
+    unittest.expect(o.numberActiveCreatives, unittest.equals(42));
+  }
+  buildCounterAccount--;
+}
+
+buildUnnamed2063() {
+  var o = new core.List<api.Account>();
+  o.add(buildAccount());
+  o.add(buildAccount());
+  return o;
+}
+
+checkUnnamed2063(core.List<api.Account> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccount(o[0]);
+  checkAccount(o[1]);
+}
+
+core.int buildCounterAccountsList = 0;
+buildAccountsList() {
+  var o = new api.AccountsList();
+  buildCounterAccountsList++;
+  if (buildCounterAccountsList < 3) {
+    o.items = buildUnnamed2063();
+    o.kind = "foo";
+  }
+  buildCounterAccountsList--;
+  return o;
+}
+
+checkAccountsList(api.AccountsList o) {
+  buildCounterAccountsList++;
+  if (buildCounterAccountsList < 3) {
+    checkUnnamed2063(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAccountsList--;
+}
+
+buildUnnamed2064() {
+  var o = new core.List<api.MarketplaceDeal>();
+  o.add(buildMarketplaceDeal());
+  o.add(buildMarketplaceDeal());
+  return o;
+}
+
+checkUnnamed2064(core.List<api.MarketplaceDeal> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMarketplaceDeal(o[0]);
+  checkMarketplaceDeal(o[1]);
+}
+
+core.int buildCounterAddOrderDealsRequest = 0;
+buildAddOrderDealsRequest() {
+  var o = new api.AddOrderDealsRequest();
+  buildCounterAddOrderDealsRequest++;
+  if (buildCounterAddOrderDealsRequest < 3) {
+    o.deals = buildUnnamed2064();
+    o.proposalRevisionNumber = "foo";
+    o.updateAction = "foo";
+  }
+  buildCounterAddOrderDealsRequest--;
+  return o;
+}
+
+checkAddOrderDealsRequest(api.AddOrderDealsRequest o) {
+  buildCounterAddOrderDealsRequest++;
+  if (buildCounterAddOrderDealsRequest < 3) {
+    checkUnnamed2064(o.deals);
+    unittest.expect(o.proposalRevisionNumber, unittest.equals('foo'));
+    unittest.expect(o.updateAction, unittest.equals('foo'));
+  }
+  buildCounterAddOrderDealsRequest--;
+}
+
+buildUnnamed2065() {
+  var o = new core.List<api.MarketplaceDeal>();
+  o.add(buildMarketplaceDeal());
+  o.add(buildMarketplaceDeal());
+  return o;
+}
+
+checkUnnamed2065(core.List<api.MarketplaceDeal> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMarketplaceDeal(o[0]);
+  checkMarketplaceDeal(o[1]);
+}
+
+core.int buildCounterAddOrderDealsResponse = 0;
+buildAddOrderDealsResponse() {
+  var o = new api.AddOrderDealsResponse();
+  buildCounterAddOrderDealsResponse++;
+  if (buildCounterAddOrderDealsResponse < 3) {
+    o.deals = buildUnnamed2065();
+    o.proposalRevisionNumber = "foo";
+  }
+  buildCounterAddOrderDealsResponse--;
+  return o;
+}
+
+checkAddOrderDealsResponse(api.AddOrderDealsResponse o) {
+  buildCounterAddOrderDealsResponse++;
+  if (buildCounterAddOrderDealsResponse < 3) {
+    checkUnnamed2065(o.deals);
+    unittest.expect(o.proposalRevisionNumber, unittest.equals('foo'));
+  }
+  buildCounterAddOrderDealsResponse--;
+}
+
+buildUnnamed2066() {
+  var o = new core.List<api.MarketplaceNote>();
+  o.add(buildMarketplaceNote());
+  o.add(buildMarketplaceNote());
+  return o;
+}
+
+checkUnnamed2066(core.List<api.MarketplaceNote> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMarketplaceNote(o[0]);
+  checkMarketplaceNote(o[1]);
+}
+
+core.int buildCounterAddOrderNotesRequest = 0;
+buildAddOrderNotesRequest() {
+  var o = new api.AddOrderNotesRequest();
+  buildCounterAddOrderNotesRequest++;
+  if (buildCounterAddOrderNotesRequest < 3) {
+    o.notes = buildUnnamed2066();
+  }
+  buildCounterAddOrderNotesRequest--;
+  return o;
+}
+
+checkAddOrderNotesRequest(api.AddOrderNotesRequest o) {
+  buildCounterAddOrderNotesRequest++;
+  if (buildCounterAddOrderNotesRequest < 3) {
+    checkUnnamed2066(o.notes);
+  }
+  buildCounterAddOrderNotesRequest--;
+}
+
+buildUnnamed2067() {
+  var o = new core.List<api.MarketplaceNote>();
+  o.add(buildMarketplaceNote());
+  o.add(buildMarketplaceNote());
+  return o;
+}
+
+checkUnnamed2067(core.List<api.MarketplaceNote> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMarketplaceNote(o[0]);
+  checkMarketplaceNote(o[1]);
+}
+
+core.int buildCounterAddOrderNotesResponse = 0;
+buildAddOrderNotesResponse() {
+  var o = new api.AddOrderNotesResponse();
+  buildCounterAddOrderNotesResponse++;
+  if (buildCounterAddOrderNotesResponse < 3) {
+    o.notes = buildUnnamed2067();
+  }
+  buildCounterAddOrderNotesResponse--;
+  return o;
+}
+
+checkAddOrderNotesResponse(api.AddOrderNotesResponse o) {
+  buildCounterAddOrderNotesResponse++;
+  if (buildCounterAddOrderNotesResponse < 3) {
+    checkUnnamed2067(o.notes);
+  }
+  buildCounterAddOrderNotesResponse--;
+}
+
+buildUnnamed2068() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2068(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBillingInfo = 0;
+buildBillingInfo() {
+  var o = new api.BillingInfo();
+  buildCounterBillingInfo++;
+  if (buildCounterBillingInfo < 3) {
+    o.accountId = 42;
+    o.accountName = "foo";
+    o.billingId = buildUnnamed2068();
+    o.kind = "foo";
+  }
+  buildCounterBillingInfo--;
+  return o;
+}
+
+checkBillingInfo(api.BillingInfo o) {
+  buildCounterBillingInfo++;
+  if (buildCounterBillingInfo < 3) {
+    unittest.expect(o.accountId, unittest.equals(42));
+    unittest.expect(o.accountName, unittest.equals('foo'));
+    checkUnnamed2068(o.billingId);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterBillingInfo--;
+}
+
+buildUnnamed2069() {
+  var o = new core.List<api.BillingInfo>();
+  o.add(buildBillingInfo());
+  o.add(buildBillingInfo());
+  return o;
+}
+
+checkUnnamed2069(core.List<api.BillingInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBillingInfo(o[0]);
+  checkBillingInfo(o[1]);
+}
+
+core.int buildCounterBillingInfoList = 0;
+buildBillingInfoList() {
+  var o = new api.BillingInfoList();
+  buildCounterBillingInfoList++;
+  if (buildCounterBillingInfoList < 3) {
+    o.items = buildUnnamed2069();
+    o.kind = "foo";
+  }
+  buildCounterBillingInfoList--;
+  return o;
+}
+
+checkBillingInfoList(api.BillingInfoList o) {
+  buildCounterBillingInfoList++;
+  if (buildCounterBillingInfoList < 3) {
+    checkUnnamed2069(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterBillingInfoList--;
+}
+
+core.int buildCounterBudget = 0;
+buildBudget() {
+  var o = new api.Budget();
+  buildCounterBudget++;
+  if (buildCounterBudget < 3) {
+    o.accountId = "foo";
+    o.billingId = "foo";
+    o.budgetAmount = "foo";
+    o.currencyCode = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+  }
+  buildCounterBudget--;
+  return o;
+}
+
+checkBudget(api.Budget o) {
+  buildCounterBudget++;
+  if (buildCounterBudget < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.billingId, unittest.equals('foo'));
+    unittest.expect(o.budgetAmount, unittest.equals('foo'));
+    unittest.expect(o.currencyCode, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterBudget--;
+}
+
+core.int buildCounterBuyer = 0;
+buildBuyer() {
+  var o = new api.Buyer();
+  buildCounterBuyer++;
+  if (buildCounterBuyer < 3) {
+    o.accountId = "foo";
+  }
+  buildCounterBuyer--;
+  return o;
+}
+
+checkBuyer(api.Buyer o) {
+  buildCounterBuyer++;
+  if (buildCounterBuyer < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+  }
+  buildCounterBuyer--;
+}
+
+core.int buildCounterContactInformation = 0;
+buildContactInformation() {
+  var o = new api.ContactInformation();
+  buildCounterContactInformation++;
+  if (buildCounterContactInformation < 3) {
+    o.email = "foo";
+    o.name = "foo";
+  }
+  buildCounterContactInformation--;
+  return o;
+}
+
+checkContactInformation(api.ContactInformation o) {
+  buildCounterContactInformation++;
+  if (buildCounterContactInformation < 3) {
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterContactInformation--;
+}
+
+buildUnnamed2070() {
+  var o = new core.List<api.Proposal>();
+  o.add(buildProposal());
+  o.add(buildProposal());
+  return o;
+}
+
+checkUnnamed2070(core.List<api.Proposal> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProposal(o[0]);
+  checkProposal(o[1]);
+}
+
+core.int buildCounterCreateOrdersRequest = 0;
+buildCreateOrdersRequest() {
+  var o = new api.CreateOrdersRequest();
+  buildCounterCreateOrdersRequest++;
+  if (buildCounterCreateOrdersRequest < 3) {
+    o.proposals = buildUnnamed2070();
+    o.webPropertyCode = "foo";
+  }
+  buildCounterCreateOrdersRequest--;
+  return o;
+}
+
+checkCreateOrdersRequest(api.CreateOrdersRequest o) {
+  buildCounterCreateOrdersRequest++;
+  if (buildCounterCreateOrdersRequest < 3) {
+    checkUnnamed2070(o.proposals);
+    unittest.expect(o.webPropertyCode, unittest.equals('foo'));
+  }
+  buildCounterCreateOrdersRequest--;
+}
+
+buildUnnamed2071() {
+  var o = new core.List<api.Proposal>();
+  o.add(buildProposal());
+  o.add(buildProposal());
+  return o;
+}
+
+checkUnnamed2071(core.List<api.Proposal> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProposal(o[0]);
+  checkProposal(o[1]);
+}
+
+core.int buildCounterCreateOrdersResponse = 0;
+buildCreateOrdersResponse() {
+  var o = new api.CreateOrdersResponse();
+  buildCounterCreateOrdersResponse++;
+  if (buildCounterCreateOrdersResponse < 3) {
+    o.proposals = buildUnnamed2071();
+  }
+  buildCounterCreateOrdersResponse--;
+  return o;
+}
+
+checkCreateOrdersResponse(api.CreateOrdersResponse o) {
+  buildCounterCreateOrdersResponse++;
+  if (buildCounterCreateOrdersResponse < 3) {
+    checkUnnamed2071(o.proposals);
+  }
+  buildCounterCreateOrdersResponse--;
+}
+
+buildUnnamed2072() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2072(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2073() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed2073(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+buildUnnamed2074() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2074(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2075() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2075(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2076() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed2076(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+buildUnnamed2077() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2077(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterCreativeCorrectionsContexts = 0;
+buildCreativeCorrectionsContexts() {
+  var o = new api.CreativeCorrectionsContexts();
+  buildCounterCreativeCorrectionsContexts++;
+  if (buildCounterCreativeCorrectionsContexts < 3) {
+    o.auctionType = buildUnnamed2075();
+    o.contextType = "foo";
+    o.geoCriteriaId = buildUnnamed2076();
+    o.platform = buildUnnamed2077();
+  }
+  buildCounterCreativeCorrectionsContexts--;
+  return o;
+}
+
+checkCreativeCorrectionsContexts(api.CreativeCorrectionsContexts o) {
+  buildCounterCreativeCorrectionsContexts++;
+  if (buildCounterCreativeCorrectionsContexts < 3) {
+    checkUnnamed2075(o.auctionType);
+    unittest.expect(o.contextType, unittest.equals('foo'));
+    checkUnnamed2076(o.geoCriteriaId);
+    checkUnnamed2077(o.platform);
+  }
+  buildCounterCreativeCorrectionsContexts--;
+}
+
+buildUnnamed2078() {
+  var o = new core.List<api.CreativeCorrectionsContexts>();
+  o.add(buildCreativeCorrectionsContexts());
+  o.add(buildCreativeCorrectionsContexts());
+  return o;
+}
+
+checkUnnamed2078(core.List<api.CreativeCorrectionsContexts> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeCorrectionsContexts(o[0]);
+  checkCreativeCorrectionsContexts(o[1]);
+}
+
+buildUnnamed2079() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2079(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterCreativeCorrections = 0;
+buildCreativeCorrections() {
+  var o = new api.CreativeCorrections();
+  buildCounterCreativeCorrections++;
+  if (buildCounterCreativeCorrections < 3) {
+    o.contexts = buildUnnamed2078();
+    o.details = buildUnnamed2079();
+    o.reason = "foo";
+  }
+  buildCounterCreativeCorrections--;
+  return o;
+}
+
+checkCreativeCorrections(api.CreativeCorrections o) {
+  buildCounterCreativeCorrections++;
+  if (buildCounterCreativeCorrections < 3) {
+    checkUnnamed2078(o.contexts);
+    checkUnnamed2079(o.details);
+    unittest.expect(o.reason, unittest.equals('foo'));
+  }
+  buildCounterCreativeCorrections--;
+}
+
+buildUnnamed2080() {
+  var o = new core.List<api.CreativeCorrections>();
+  o.add(buildCreativeCorrections());
+  o.add(buildCreativeCorrections());
+  return o;
+}
+
+checkUnnamed2080(core.List<api.CreativeCorrections> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeCorrections(o[0]);
+  checkCreativeCorrections(o[1]);
+}
+
+buildUnnamed2081() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2081(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterCreativeFilteringReasonsReasons = 0;
+buildCreativeFilteringReasonsReasons() {
+  var o = new api.CreativeFilteringReasonsReasons();
+  buildCounterCreativeFilteringReasonsReasons++;
+  if (buildCounterCreativeFilteringReasonsReasons < 3) {
+    o.filteringCount = "foo";
+    o.filteringStatus = 42;
+  }
+  buildCounterCreativeFilteringReasonsReasons--;
+  return o;
+}
+
+checkCreativeFilteringReasonsReasons(api.CreativeFilteringReasonsReasons o) {
+  buildCounterCreativeFilteringReasonsReasons++;
+  if (buildCounterCreativeFilteringReasonsReasons < 3) {
+    unittest.expect(o.filteringCount, unittest.equals('foo'));
+    unittest.expect(o.filteringStatus, unittest.equals(42));
+  }
+  buildCounterCreativeFilteringReasonsReasons--;
+}
+
+buildUnnamed2082() {
+  var o = new core.List<api.CreativeFilteringReasonsReasons>();
+  o.add(buildCreativeFilteringReasonsReasons());
+  o.add(buildCreativeFilteringReasonsReasons());
+  return o;
+}
+
+checkUnnamed2082(core.List<api.CreativeFilteringReasonsReasons> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeFilteringReasonsReasons(o[0]);
+  checkCreativeFilteringReasonsReasons(o[1]);
+}
+
+core.int buildCounterCreativeFilteringReasons = 0;
+buildCreativeFilteringReasons() {
+  var o = new api.CreativeFilteringReasons();
+  buildCounterCreativeFilteringReasons++;
+  if (buildCounterCreativeFilteringReasons < 3) {
+    o.date = "foo";
+    o.reasons = buildUnnamed2082();
+  }
+  buildCounterCreativeFilteringReasons--;
+  return o;
+}
+
+checkCreativeFilteringReasons(api.CreativeFilteringReasons o) {
+  buildCounterCreativeFilteringReasons++;
+  if (buildCounterCreativeFilteringReasons < 3) {
+    unittest.expect(o.date, unittest.equals('foo'));
+    checkUnnamed2082(o.reasons);
+  }
+  buildCounterCreativeFilteringReasons--;
+}
+
+buildUnnamed2083() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2083(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2084() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2084(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterCreativeNativeAdAppIcon = 0;
+buildCreativeNativeAdAppIcon() {
+  var o = new api.CreativeNativeAdAppIcon();
+  buildCounterCreativeNativeAdAppIcon++;
+  if (buildCounterCreativeNativeAdAppIcon < 3) {
+    o.height = 42;
+    o.url = "foo";
+    o.width = 42;
+  }
+  buildCounterCreativeNativeAdAppIcon--;
+  return o;
+}
+
+checkCreativeNativeAdAppIcon(api.CreativeNativeAdAppIcon o) {
+  buildCounterCreativeNativeAdAppIcon++;
+  if (buildCounterCreativeNativeAdAppIcon < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterCreativeNativeAdAppIcon--;
+}
+
+core.int buildCounterCreativeNativeAdImage = 0;
+buildCreativeNativeAdImage() {
+  var o = new api.CreativeNativeAdImage();
+  buildCounterCreativeNativeAdImage++;
+  if (buildCounterCreativeNativeAdImage < 3) {
+    o.height = 42;
+    o.url = "foo";
+    o.width = 42;
+  }
+  buildCounterCreativeNativeAdImage--;
+  return o;
+}
+
+checkCreativeNativeAdImage(api.CreativeNativeAdImage o) {
+  buildCounterCreativeNativeAdImage++;
+  if (buildCounterCreativeNativeAdImage < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterCreativeNativeAdImage--;
+}
+
+buildUnnamed2085() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2085(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterCreativeNativeAdLogo = 0;
+buildCreativeNativeAdLogo() {
+  var o = new api.CreativeNativeAdLogo();
+  buildCounterCreativeNativeAdLogo++;
+  if (buildCounterCreativeNativeAdLogo < 3) {
+    o.height = 42;
+    o.url = "foo";
+    o.width = 42;
+  }
+  buildCounterCreativeNativeAdLogo--;
+  return o;
+}
+
+checkCreativeNativeAdLogo(api.CreativeNativeAdLogo o) {
+  buildCounterCreativeNativeAdLogo++;
+  if (buildCounterCreativeNativeAdLogo < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterCreativeNativeAdLogo--;
+}
+
+core.int buildCounterCreativeNativeAd = 0;
+buildCreativeNativeAd() {
+  var o = new api.CreativeNativeAd();
+  buildCounterCreativeNativeAd++;
+  if (buildCounterCreativeNativeAd < 3) {
+    o.advertiser = "foo";
+    o.appIcon = buildCreativeNativeAdAppIcon();
+    o.body = "foo";
+    o.callToAction = "foo";
+    o.clickLinkUrl = "foo";
+    o.clickTrackingUrl = "foo";
+    o.headline = "foo";
+    o.image = buildCreativeNativeAdImage();
+    o.impressionTrackingUrl = buildUnnamed2085();
+    o.logo = buildCreativeNativeAdLogo();
+    o.price = "foo";
+    o.starRating = 42.0;
+    o.store = "foo";
+    o.videoURL = "foo";
+  }
+  buildCounterCreativeNativeAd--;
+  return o;
+}
+
+checkCreativeNativeAd(api.CreativeNativeAd o) {
+  buildCounterCreativeNativeAd++;
+  if (buildCounterCreativeNativeAd < 3) {
+    unittest.expect(o.advertiser, unittest.equals('foo'));
+    checkCreativeNativeAdAppIcon(o.appIcon);
+    unittest.expect(o.body, unittest.equals('foo'));
+    unittest.expect(o.callToAction, unittest.equals('foo'));
+    unittest.expect(o.clickLinkUrl, unittest.equals('foo'));
+    unittest.expect(o.clickTrackingUrl, unittest.equals('foo'));
+    unittest.expect(o.headline, unittest.equals('foo'));
+    checkCreativeNativeAdImage(o.image);
+    checkUnnamed2085(o.impressionTrackingUrl);
+    checkCreativeNativeAdLogo(o.logo);
+    unittest.expect(o.price, unittest.equals('foo'));
+    unittest.expect(o.starRating, unittest.equals(42.0));
+    unittest.expect(o.store, unittest.equals('foo'));
+    unittest.expect(o.videoURL, unittest.equals('foo'));
+  }
+  buildCounterCreativeNativeAd--;
+}
+
+buildUnnamed2086() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed2086(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+buildUnnamed2087() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed2087(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+buildUnnamed2088() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed2088(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+buildUnnamed2089() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2089(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2090() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed2090(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+buildUnnamed2091() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2091(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterCreativeServingRestrictionsContexts = 0;
+buildCreativeServingRestrictionsContexts() {
+  var o = new api.CreativeServingRestrictionsContexts();
+  buildCounterCreativeServingRestrictionsContexts++;
+  if (buildCounterCreativeServingRestrictionsContexts < 3) {
+    o.auctionType = buildUnnamed2089();
+    o.contextType = "foo";
+    o.geoCriteriaId = buildUnnamed2090();
+    o.platform = buildUnnamed2091();
+  }
+  buildCounterCreativeServingRestrictionsContexts--;
+  return o;
+}
+
+checkCreativeServingRestrictionsContexts(
+    api.CreativeServingRestrictionsContexts o) {
+  buildCounterCreativeServingRestrictionsContexts++;
+  if (buildCounterCreativeServingRestrictionsContexts < 3) {
+    checkUnnamed2089(o.auctionType);
+    unittest.expect(o.contextType, unittest.equals('foo'));
+    checkUnnamed2090(o.geoCriteriaId);
+    checkUnnamed2091(o.platform);
+  }
+  buildCounterCreativeServingRestrictionsContexts--;
+}
+
+buildUnnamed2092() {
+  var o = new core.List<api.CreativeServingRestrictionsContexts>();
+  o.add(buildCreativeServingRestrictionsContexts());
+  o.add(buildCreativeServingRestrictionsContexts());
+  return o;
+}
+
+checkUnnamed2092(core.List<api.CreativeServingRestrictionsContexts> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeServingRestrictionsContexts(o[0]);
+  checkCreativeServingRestrictionsContexts(o[1]);
+}
+
+buildUnnamed2093() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2093(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterCreativeServingRestrictionsDisapprovalReasons = 0;
+buildCreativeServingRestrictionsDisapprovalReasons() {
+  var o = new api.CreativeServingRestrictionsDisapprovalReasons();
+  buildCounterCreativeServingRestrictionsDisapprovalReasons++;
+  if (buildCounterCreativeServingRestrictionsDisapprovalReasons < 3) {
+    o.details = buildUnnamed2093();
+    o.reason = "foo";
+  }
+  buildCounterCreativeServingRestrictionsDisapprovalReasons--;
+  return o;
+}
+
+checkCreativeServingRestrictionsDisapprovalReasons(
+    api.CreativeServingRestrictionsDisapprovalReasons o) {
+  buildCounterCreativeServingRestrictionsDisapprovalReasons++;
+  if (buildCounterCreativeServingRestrictionsDisapprovalReasons < 3) {
+    checkUnnamed2093(o.details);
+    unittest.expect(o.reason, unittest.equals('foo'));
+  }
+  buildCounterCreativeServingRestrictionsDisapprovalReasons--;
+}
+
+buildUnnamed2094() {
+  var o = new core.List<api.CreativeServingRestrictionsDisapprovalReasons>();
+  o.add(buildCreativeServingRestrictionsDisapprovalReasons());
+  o.add(buildCreativeServingRestrictionsDisapprovalReasons());
+  return o;
+}
+
+checkUnnamed2094(
+    core.List<api.CreativeServingRestrictionsDisapprovalReasons> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeServingRestrictionsDisapprovalReasons(o[0]);
+  checkCreativeServingRestrictionsDisapprovalReasons(o[1]);
+}
+
+core.int buildCounterCreativeServingRestrictions = 0;
+buildCreativeServingRestrictions() {
+  var o = new api.CreativeServingRestrictions();
+  buildCounterCreativeServingRestrictions++;
+  if (buildCounterCreativeServingRestrictions < 3) {
+    o.contexts = buildUnnamed2092();
+    o.disapprovalReasons = buildUnnamed2094();
+    o.reason = "foo";
+  }
+  buildCounterCreativeServingRestrictions--;
+  return o;
+}
+
+checkCreativeServingRestrictions(api.CreativeServingRestrictions o) {
+  buildCounterCreativeServingRestrictions++;
+  if (buildCounterCreativeServingRestrictions < 3) {
+    checkUnnamed2092(o.contexts);
+    checkUnnamed2094(o.disapprovalReasons);
+    unittest.expect(o.reason, unittest.equals('foo'));
+  }
+  buildCounterCreativeServingRestrictions--;
+}
+
+buildUnnamed2095() {
+  var o = new core.List<api.CreativeServingRestrictions>();
+  o.add(buildCreativeServingRestrictions());
+  o.add(buildCreativeServingRestrictions());
+  return o;
+}
+
+checkUnnamed2095(core.List<api.CreativeServingRestrictions> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeServingRestrictions(o[0]);
+  checkCreativeServingRestrictions(o[1]);
+}
+
+buildUnnamed2096() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed2096(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+core.int buildCounterCreative = 0;
+buildCreative() {
+  var o = new api.Creative();
+  buildCounterCreative++;
+  if (buildCounterCreative < 3) {
+    o.HTMLSnippet = "foo";
+    o.accountId = 42;
+    o.adChoicesDestinationUrl = "foo";
+    o.advertiserId = buildUnnamed2072();
+    o.advertiserName = "foo";
+    o.agencyId = "foo";
+    o.apiUploadTimestamp = core.DateTime.parse("2002-02-27T14:01:02");
+    o.attribute = buildUnnamed2073();
+    o.buyerCreativeId = "foo";
+    o.clickThroughUrl = buildUnnamed2074();
+    o.corrections = buildUnnamed2080();
+    o.dealsStatus = "foo";
+    o.detectedDomains = buildUnnamed2081();
+    o.filteringReasons = buildCreativeFilteringReasons();
+    o.height = 42;
+    o.impressionTrackingUrl = buildUnnamed2083();
+    o.kind = "foo";
+    o.languages = buildUnnamed2084();
+    o.nativeAd = buildCreativeNativeAd();
+    o.openAuctionStatus = "foo";
+    o.productCategories = buildUnnamed2086();
+    o.restrictedCategories = buildUnnamed2087();
+    o.sensitiveCategories = buildUnnamed2088();
+    o.servingRestrictions = buildUnnamed2095();
+    o.vendorType = buildUnnamed2096();
+    o.version = 42;
+    o.videoURL = "foo";
+    o.width = 42;
+  }
+  buildCounterCreative--;
+  return o;
+}
+
+checkCreative(api.Creative o) {
+  buildCounterCreative++;
+  if (buildCounterCreative < 3) {
+    unittest.expect(o.HTMLSnippet, unittest.equals('foo'));
+    unittest.expect(o.accountId, unittest.equals(42));
+    unittest.expect(o.adChoicesDestinationUrl, unittest.equals('foo'));
+    checkUnnamed2072(o.advertiserId);
+    unittest.expect(o.advertiserName, unittest.equals('foo'));
+    unittest.expect(o.agencyId, unittest.equals('foo'));
+    unittest.expect(o.apiUploadTimestamp,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    checkUnnamed2073(o.attribute);
+    unittest.expect(o.buyerCreativeId, unittest.equals('foo'));
+    checkUnnamed2074(o.clickThroughUrl);
+    checkUnnamed2080(o.corrections);
+    unittest.expect(o.dealsStatus, unittest.equals('foo'));
+    checkUnnamed2081(o.detectedDomains);
+    checkCreativeFilteringReasons(o.filteringReasons);
+    unittest.expect(o.height, unittest.equals(42));
+    checkUnnamed2083(o.impressionTrackingUrl);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2084(o.languages);
+    checkCreativeNativeAd(o.nativeAd);
+    unittest.expect(o.openAuctionStatus, unittest.equals('foo'));
+    checkUnnamed2086(o.productCategories);
+    checkUnnamed2087(o.restrictedCategories);
+    checkUnnamed2088(o.sensitiveCategories);
+    checkUnnamed2095(o.servingRestrictions);
+    checkUnnamed2096(o.vendorType);
+    unittest.expect(o.version, unittest.equals(42));
+    unittest.expect(o.videoURL, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterCreative--;
+}
+
+core.int buildCounterCreativeDealIdsDealStatuses = 0;
+buildCreativeDealIdsDealStatuses() {
+  var o = new api.CreativeDealIdsDealStatuses();
+  buildCounterCreativeDealIdsDealStatuses++;
+  if (buildCounterCreativeDealIdsDealStatuses < 3) {
+    o.arcStatus = "foo";
+    o.dealId = "foo";
+    o.webPropertyId = 42;
+  }
+  buildCounterCreativeDealIdsDealStatuses--;
+  return o;
+}
+
+checkCreativeDealIdsDealStatuses(api.CreativeDealIdsDealStatuses o) {
+  buildCounterCreativeDealIdsDealStatuses++;
+  if (buildCounterCreativeDealIdsDealStatuses < 3) {
+    unittest.expect(o.arcStatus, unittest.equals('foo'));
+    unittest.expect(o.dealId, unittest.equals('foo'));
+    unittest.expect(o.webPropertyId, unittest.equals(42));
+  }
+  buildCounterCreativeDealIdsDealStatuses--;
+}
+
+buildUnnamed2097() {
+  var o = new core.List<api.CreativeDealIdsDealStatuses>();
+  o.add(buildCreativeDealIdsDealStatuses());
+  o.add(buildCreativeDealIdsDealStatuses());
+  return o;
+}
+
+checkUnnamed2097(core.List<api.CreativeDealIdsDealStatuses> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeDealIdsDealStatuses(o[0]);
+  checkCreativeDealIdsDealStatuses(o[1]);
+}
+
+core.int buildCounterCreativeDealIds = 0;
+buildCreativeDealIds() {
+  var o = new api.CreativeDealIds();
+  buildCounterCreativeDealIds++;
+  if (buildCounterCreativeDealIds < 3) {
+    o.dealStatuses = buildUnnamed2097();
+    o.kind = "foo";
+  }
+  buildCounterCreativeDealIds--;
+  return o;
+}
+
+checkCreativeDealIds(api.CreativeDealIds o) {
+  buildCounterCreativeDealIds++;
+  if (buildCounterCreativeDealIds < 3) {
+    checkUnnamed2097(o.dealStatuses);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterCreativeDealIds--;
+}
+
+buildUnnamed2098() {
+  var o = new core.List<api.Creative>();
+  o.add(buildCreative());
+  o.add(buildCreative());
+  return o;
+}
+
+checkUnnamed2098(core.List<api.Creative> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreative(o[0]);
+  checkCreative(o[1]);
+}
+
+core.int buildCounterCreativesList = 0;
+buildCreativesList() {
+  var o = new api.CreativesList();
+  buildCounterCreativesList++;
+  if (buildCounterCreativesList < 3) {
+    o.items = buildUnnamed2098();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterCreativesList--;
+  return o;
+}
+
+checkCreativesList(api.CreativesList o) {
+  buildCounterCreativesList++;
+  if (buildCounterCreativesList < 3) {
+    checkUnnamed2098(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterCreativesList--;
+}
+
+core.int buildCounterDealServingMetadata = 0;
+buildDealServingMetadata() {
+  var o = new api.DealServingMetadata();
+  buildCounterDealServingMetadata++;
+  if (buildCounterDealServingMetadata < 3) {
+    o.alcoholAdsAllowed = true;
+    o.dealPauseStatus = buildDealServingMetadataDealPauseStatus();
+  }
+  buildCounterDealServingMetadata--;
+  return o;
+}
+
+checkDealServingMetadata(api.DealServingMetadata o) {
+  buildCounterDealServingMetadata++;
+  if (buildCounterDealServingMetadata < 3) {
+    unittest.expect(o.alcoholAdsAllowed, unittest.isTrue);
+    checkDealServingMetadataDealPauseStatus(o.dealPauseStatus);
+  }
+  buildCounterDealServingMetadata--;
+}
+
+core.int buildCounterDealServingMetadataDealPauseStatus = 0;
+buildDealServingMetadataDealPauseStatus() {
+  var o = new api.DealServingMetadataDealPauseStatus();
+  buildCounterDealServingMetadataDealPauseStatus++;
+  if (buildCounterDealServingMetadataDealPauseStatus < 3) {
+    o.buyerPauseReason = "foo";
+    o.firstPausedBy = "foo";
+    o.hasBuyerPaused = true;
+    o.hasSellerPaused = true;
+    o.sellerPauseReason = "foo";
+  }
+  buildCounterDealServingMetadataDealPauseStatus--;
+  return o;
+}
+
+checkDealServingMetadataDealPauseStatus(
+    api.DealServingMetadataDealPauseStatus o) {
+  buildCounterDealServingMetadataDealPauseStatus++;
+  if (buildCounterDealServingMetadataDealPauseStatus < 3) {
+    unittest.expect(o.buyerPauseReason, unittest.equals('foo'));
+    unittest.expect(o.firstPausedBy, unittest.equals('foo'));
+    unittest.expect(o.hasBuyerPaused, unittest.isTrue);
+    unittest.expect(o.hasSellerPaused, unittest.isTrue);
+    unittest.expect(o.sellerPauseReason, unittest.equals('foo'));
+  }
+  buildCounterDealServingMetadataDealPauseStatus--;
+}
+
+core.int buildCounterDealTerms = 0;
+buildDealTerms() {
+  var o = new api.DealTerms();
+  buildCounterDealTerms++;
+  if (buildCounterDealTerms < 3) {
+    o.brandingType = "foo";
+    o.crossListedExternalDealIdType = "foo";
+    o.description = "foo";
+    o.estimatedGrossSpend = buildPrice();
+    o.estimatedImpressionsPerDay = "foo";
+    o.guaranteedFixedPriceTerms = buildDealTermsGuaranteedFixedPriceTerms();
+    o.nonGuaranteedAuctionTerms = buildDealTermsNonGuaranteedAuctionTerms();
+    o.nonGuaranteedFixedPriceTerms =
+        buildDealTermsNonGuaranteedFixedPriceTerms();
+    o.rubiconNonGuaranteedTerms = buildDealTermsRubiconNonGuaranteedTerms();
+    o.sellerTimeZone = "foo";
+  }
+  buildCounterDealTerms--;
+  return o;
+}
+
+checkDealTerms(api.DealTerms o) {
+  buildCounterDealTerms++;
+  if (buildCounterDealTerms < 3) {
+    unittest.expect(o.brandingType, unittest.equals('foo'));
+    unittest.expect(o.crossListedExternalDealIdType, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    checkPrice(o.estimatedGrossSpend);
+    unittest.expect(o.estimatedImpressionsPerDay, unittest.equals('foo'));
+    checkDealTermsGuaranteedFixedPriceTerms(o.guaranteedFixedPriceTerms);
+    checkDealTermsNonGuaranteedAuctionTerms(o.nonGuaranteedAuctionTerms);
+    checkDealTermsNonGuaranteedFixedPriceTerms(o.nonGuaranteedFixedPriceTerms);
+    checkDealTermsRubiconNonGuaranteedTerms(o.rubiconNonGuaranteedTerms);
+    unittest.expect(o.sellerTimeZone, unittest.equals('foo'));
+  }
+  buildCounterDealTerms--;
+}
+
+buildUnnamed2099() {
+  var o = new core.List<api.PricePerBuyer>();
+  o.add(buildPricePerBuyer());
+  o.add(buildPricePerBuyer());
+  return o;
+}
+
+checkUnnamed2099(core.List<api.PricePerBuyer> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPricePerBuyer(o[0]);
+  checkPricePerBuyer(o[1]);
+}
+
+core.int buildCounterDealTermsGuaranteedFixedPriceTerms = 0;
+buildDealTermsGuaranteedFixedPriceTerms() {
+  var o = new api.DealTermsGuaranteedFixedPriceTerms();
+  buildCounterDealTermsGuaranteedFixedPriceTerms++;
+  if (buildCounterDealTermsGuaranteedFixedPriceTerms < 3) {
+    o.billingInfo = buildDealTermsGuaranteedFixedPriceTermsBillingInfo();
+    o.fixedPrices = buildUnnamed2099();
+    o.guaranteedImpressions = "foo";
+    o.guaranteedLooks = "foo";
+    o.minimumDailyLooks = "foo";
+  }
+  buildCounterDealTermsGuaranteedFixedPriceTerms--;
+  return o;
+}
+
+checkDealTermsGuaranteedFixedPriceTerms(
+    api.DealTermsGuaranteedFixedPriceTerms o) {
+  buildCounterDealTermsGuaranteedFixedPriceTerms++;
+  if (buildCounterDealTermsGuaranteedFixedPriceTerms < 3) {
+    checkDealTermsGuaranteedFixedPriceTermsBillingInfo(o.billingInfo);
+    checkUnnamed2099(o.fixedPrices);
+    unittest.expect(o.guaranteedImpressions, unittest.equals('foo'));
+    unittest.expect(o.guaranteedLooks, unittest.equals('foo'));
+    unittest.expect(o.minimumDailyLooks, unittest.equals('foo'));
+  }
+  buildCounterDealTermsGuaranteedFixedPriceTerms--;
+}
+
+core.int buildCounterDealTermsGuaranteedFixedPriceTermsBillingInfo = 0;
+buildDealTermsGuaranteedFixedPriceTermsBillingInfo() {
+  var o = new api.DealTermsGuaranteedFixedPriceTermsBillingInfo();
+  buildCounterDealTermsGuaranteedFixedPriceTermsBillingInfo++;
+  if (buildCounterDealTermsGuaranteedFixedPriceTermsBillingInfo < 3) {
+    o.currencyConversionTimeMs = "foo";
+    o.dfpLineItemId = "foo";
+    o.originalContractedQuantity = "foo";
+    o.price = buildPrice();
+  }
+  buildCounterDealTermsGuaranteedFixedPriceTermsBillingInfo--;
+  return o;
+}
+
+checkDealTermsGuaranteedFixedPriceTermsBillingInfo(
+    api.DealTermsGuaranteedFixedPriceTermsBillingInfo o) {
+  buildCounterDealTermsGuaranteedFixedPriceTermsBillingInfo++;
+  if (buildCounterDealTermsGuaranteedFixedPriceTermsBillingInfo < 3) {
+    unittest.expect(o.currencyConversionTimeMs, unittest.equals('foo'));
+    unittest.expect(o.dfpLineItemId, unittest.equals('foo'));
+    unittest.expect(o.originalContractedQuantity, unittest.equals('foo'));
+    checkPrice(o.price);
+  }
+  buildCounterDealTermsGuaranteedFixedPriceTermsBillingInfo--;
+}
+
+buildUnnamed2100() {
+  var o = new core.List<api.PricePerBuyer>();
+  o.add(buildPricePerBuyer());
+  o.add(buildPricePerBuyer());
+  return o;
+}
+
+checkUnnamed2100(core.List<api.PricePerBuyer> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPricePerBuyer(o[0]);
+  checkPricePerBuyer(o[1]);
+}
+
+core.int buildCounterDealTermsNonGuaranteedAuctionTerms = 0;
+buildDealTermsNonGuaranteedAuctionTerms() {
+  var o = new api.DealTermsNonGuaranteedAuctionTerms();
+  buildCounterDealTermsNonGuaranteedAuctionTerms++;
+  if (buildCounterDealTermsNonGuaranteedAuctionTerms < 3) {
+    o.autoOptimizePrivateAuction = true;
+    o.reservePricePerBuyers = buildUnnamed2100();
+  }
+  buildCounterDealTermsNonGuaranteedAuctionTerms--;
+  return o;
+}
+
+checkDealTermsNonGuaranteedAuctionTerms(
+    api.DealTermsNonGuaranteedAuctionTerms o) {
+  buildCounterDealTermsNonGuaranteedAuctionTerms++;
+  if (buildCounterDealTermsNonGuaranteedAuctionTerms < 3) {
+    unittest.expect(o.autoOptimizePrivateAuction, unittest.isTrue);
+    checkUnnamed2100(o.reservePricePerBuyers);
+  }
+  buildCounterDealTermsNonGuaranteedAuctionTerms--;
+}
+
+buildUnnamed2101() {
+  var o = new core.List<api.PricePerBuyer>();
+  o.add(buildPricePerBuyer());
+  o.add(buildPricePerBuyer());
+  return o;
+}
+
+checkUnnamed2101(core.List<api.PricePerBuyer> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPricePerBuyer(o[0]);
+  checkPricePerBuyer(o[1]);
+}
+
+core.int buildCounterDealTermsNonGuaranteedFixedPriceTerms = 0;
+buildDealTermsNonGuaranteedFixedPriceTerms() {
+  var o = new api.DealTermsNonGuaranteedFixedPriceTerms();
+  buildCounterDealTermsNonGuaranteedFixedPriceTerms++;
+  if (buildCounterDealTermsNonGuaranteedFixedPriceTerms < 3) {
+    o.fixedPrices = buildUnnamed2101();
+  }
+  buildCounterDealTermsNonGuaranteedFixedPriceTerms--;
+  return o;
+}
+
+checkDealTermsNonGuaranteedFixedPriceTerms(
+    api.DealTermsNonGuaranteedFixedPriceTerms o) {
+  buildCounterDealTermsNonGuaranteedFixedPriceTerms++;
+  if (buildCounterDealTermsNonGuaranteedFixedPriceTerms < 3) {
+    checkUnnamed2101(o.fixedPrices);
+  }
+  buildCounterDealTermsNonGuaranteedFixedPriceTerms--;
+}
+
+core.int buildCounterDealTermsRubiconNonGuaranteedTerms = 0;
+buildDealTermsRubiconNonGuaranteedTerms() {
+  var o = new api.DealTermsRubiconNonGuaranteedTerms();
+  buildCounterDealTermsRubiconNonGuaranteedTerms++;
+  if (buildCounterDealTermsRubiconNonGuaranteedTerms < 3) {
+    o.priorityPrice = buildPrice();
+    o.standardPrice = buildPrice();
+  }
+  buildCounterDealTermsRubiconNonGuaranteedTerms--;
+  return o;
+}
+
+checkDealTermsRubiconNonGuaranteedTerms(
+    api.DealTermsRubiconNonGuaranteedTerms o) {
+  buildCounterDealTermsRubiconNonGuaranteedTerms++;
+  if (buildCounterDealTermsRubiconNonGuaranteedTerms < 3) {
+    checkPrice(o.priorityPrice);
+    checkPrice(o.standardPrice);
+  }
+  buildCounterDealTermsRubiconNonGuaranteedTerms--;
+}
+
+buildUnnamed2102() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2102(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterDeleteOrderDealsRequest = 0;
+buildDeleteOrderDealsRequest() {
+  var o = new api.DeleteOrderDealsRequest();
+  buildCounterDeleteOrderDealsRequest++;
+  if (buildCounterDeleteOrderDealsRequest < 3) {
+    o.dealIds = buildUnnamed2102();
+    o.proposalRevisionNumber = "foo";
+    o.updateAction = "foo";
+  }
+  buildCounterDeleteOrderDealsRequest--;
+  return o;
+}
+
+checkDeleteOrderDealsRequest(api.DeleteOrderDealsRequest o) {
+  buildCounterDeleteOrderDealsRequest++;
+  if (buildCounterDeleteOrderDealsRequest < 3) {
+    checkUnnamed2102(o.dealIds);
+    unittest.expect(o.proposalRevisionNumber, unittest.equals('foo'));
+    unittest.expect(o.updateAction, unittest.equals('foo'));
+  }
+  buildCounterDeleteOrderDealsRequest--;
+}
+
+buildUnnamed2103() {
+  var o = new core.List<api.MarketplaceDeal>();
+  o.add(buildMarketplaceDeal());
+  o.add(buildMarketplaceDeal());
+  return o;
+}
+
+checkUnnamed2103(core.List<api.MarketplaceDeal> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMarketplaceDeal(o[0]);
+  checkMarketplaceDeal(o[1]);
+}
+
+core.int buildCounterDeleteOrderDealsResponse = 0;
+buildDeleteOrderDealsResponse() {
+  var o = new api.DeleteOrderDealsResponse();
+  buildCounterDeleteOrderDealsResponse++;
+  if (buildCounterDeleteOrderDealsResponse < 3) {
+    o.deals = buildUnnamed2103();
+    o.proposalRevisionNumber = "foo";
+  }
+  buildCounterDeleteOrderDealsResponse--;
+  return o;
+}
+
+checkDeleteOrderDealsResponse(api.DeleteOrderDealsResponse o) {
+  buildCounterDeleteOrderDealsResponse++;
+  if (buildCounterDeleteOrderDealsResponse < 3) {
+    checkUnnamed2103(o.deals);
+    unittest.expect(o.proposalRevisionNumber, unittest.equals('foo'));
+  }
+  buildCounterDeleteOrderDealsResponse--;
+}
+
+buildUnnamed2104() {
+  var o = new core.List<api.DeliveryControlFrequencyCap>();
+  o.add(buildDeliveryControlFrequencyCap());
+  o.add(buildDeliveryControlFrequencyCap());
+  return o;
+}
+
+checkUnnamed2104(core.List<api.DeliveryControlFrequencyCap> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDeliveryControlFrequencyCap(o[0]);
+  checkDeliveryControlFrequencyCap(o[1]);
+}
+
+core.int buildCounterDeliveryControl = 0;
+buildDeliveryControl() {
+  var o = new api.DeliveryControl();
+  buildCounterDeliveryControl++;
+  if (buildCounterDeliveryControl < 3) {
+    o.creativeBlockingLevel = "foo";
+    o.deliveryRateType = "foo";
+    o.frequencyCaps = buildUnnamed2104();
+  }
+  buildCounterDeliveryControl--;
+  return o;
+}
+
+checkDeliveryControl(api.DeliveryControl o) {
+  buildCounterDeliveryControl++;
+  if (buildCounterDeliveryControl < 3) {
+    unittest.expect(o.creativeBlockingLevel, unittest.equals('foo'));
+    unittest.expect(o.deliveryRateType, unittest.equals('foo'));
+    checkUnnamed2104(o.frequencyCaps);
+  }
+  buildCounterDeliveryControl--;
+}
+
+core.int buildCounterDeliveryControlFrequencyCap = 0;
+buildDeliveryControlFrequencyCap() {
+  var o = new api.DeliveryControlFrequencyCap();
+  buildCounterDeliveryControlFrequencyCap++;
+  if (buildCounterDeliveryControlFrequencyCap < 3) {
+    o.maxImpressions = 42;
+    o.numTimeUnits = 42;
+    o.timeUnitType = "foo";
+  }
+  buildCounterDeliveryControlFrequencyCap--;
+  return o;
+}
+
+checkDeliveryControlFrequencyCap(api.DeliveryControlFrequencyCap o) {
+  buildCounterDeliveryControlFrequencyCap++;
+  if (buildCounterDeliveryControlFrequencyCap < 3) {
+    unittest.expect(o.maxImpressions, unittest.equals(42));
+    unittest.expect(o.numTimeUnits, unittest.equals(42));
+    unittest.expect(o.timeUnitType, unittest.equals('foo'));
+  }
+  buildCounterDeliveryControlFrequencyCap--;
+}
+
+buildUnnamed2105() {
+  var o = new core.List<api.DimensionDimensionValue>();
+  o.add(buildDimensionDimensionValue());
+  o.add(buildDimensionDimensionValue());
+  return o;
+}
+
+checkUnnamed2105(core.List<api.DimensionDimensionValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimensionDimensionValue(o[0]);
+  checkDimensionDimensionValue(o[1]);
+}
+
+core.int buildCounterDimension = 0;
+buildDimension() {
+  var o = new api.Dimension();
+  buildCounterDimension++;
+  if (buildCounterDimension < 3) {
+    o.dimensionType = "foo";
+    o.dimensionValues = buildUnnamed2105();
+  }
+  buildCounterDimension--;
+  return o;
+}
+
+checkDimension(api.Dimension o) {
+  buildCounterDimension++;
+  if (buildCounterDimension < 3) {
+    unittest.expect(o.dimensionType, unittest.equals('foo'));
+    checkUnnamed2105(o.dimensionValues);
+  }
+  buildCounterDimension--;
+}
+
+core.int buildCounterDimensionDimensionValue = 0;
+buildDimensionDimensionValue() {
+  var o = new api.DimensionDimensionValue();
+  buildCounterDimensionDimensionValue++;
+  if (buildCounterDimensionDimensionValue < 3) {
+    o.id = 42;
+    o.name = "foo";
+    o.percentage = 42;
+  }
+  buildCounterDimensionDimensionValue--;
+  return o;
+}
+
+checkDimensionDimensionValue(api.DimensionDimensionValue o) {
+  buildCounterDimensionDimensionValue++;
+  if (buildCounterDimensionDimensionValue < 3) {
+    unittest.expect(o.id, unittest.equals(42));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.percentage, unittest.equals(42));
+  }
+  buildCounterDimensionDimensionValue--;
+}
+
+buildUnnamed2106() {
+  var o = new core.List<api.MarketplaceDeal>();
+  o.add(buildMarketplaceDeal());
+  o.add(buildMarketplaceDeal());
+  return o;
+}
+
+checkUnnamed2106(core.List<api.MarketplaceDeal> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMarketplaceDeal(o[0]);
+  checkMarketplaceDeal(o[1]);
+}
+
+core.int buildCounterEditAllOrderDealsRequest = 0;
+buildEditAllOrderDealsRequest() {
+  var o = new api.EditAllOrderDealsRequest();
+  buildCounterEditAllOrderDealsRequest++;
+  if (buildCounterEditAllOrderDealsRequest < 3) {
+    o.deals = buildUnnamed2106();
+    o.proposal = buildProposal();
+    o.proposalRevisionNumber = "foo";
+    o.updateAction = "foo";
+  }
+  buildCounterEditAllOrderDealsRequest--;
+  return o;
+}
+
+checkEditAllOrderDealsRequest(api.EditAllOrderDealsRequest o) {
+  buildCounterEditAllOrderDealsRequest++;
+  if (buildCounterEditAllOrderDealsRequest < 3) {
+    checkUnnamed2106(o.deals);
+    checkProposal(o.proposal);
+    unittest.expect(o.proposalRevisionNumber, unittest.equals('foo'));
+    unittest.expect(o.updateAction, unittest.equals('foo'));
+  }
+  buildCounterEditAllOrderDealsRequest--;
+}
+
+buildUnnamed2107() {
+  var o = new core.List<api.MarketplaceDeal>();
+  o.add(buildMarketplaceDeal());
+  o.add(buildMarketplaceDeal());
+  return o;
+}
+
+checkUnnamed2107(core.List<api.MarketplaceDeal> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMarketplaceDeal(o[0]);
+  checkMarketplaceDeal(o[1]);
+}
+
+core.int buildCounterEditAllOrderDealsResponse = 0;
+buildEditAllOrderDealsResponse() {
+  var o = new api.EditAllOrderDealsResponse();
+  buildCounterEditAllOrderDealsResponse++;
+  if (buildCounterEditAllOrderDealsResponse < 3) {
+    o.deals = buildUnnamed2107();
+    o.orderRevisionNumber = "foo";
+  }
+  buildCounterEditAllOrderDealsResponse--;
+  return o;
+}
+
+checkEditAllOrderDealsResponse(api.EditAllOrderDealsResponse o) {
+  buildCounterEditAllOrderDealsResponse++;
+  if (buildCounterEditAllOrderDealsResponse < 3) {
+    checkUnnamed2107(o.deals);
+    unittest.expect(o.orderRevisionNumber, unittest.equals('foo'));
+  }
+  buildCounterEditAllOrderDealsResponse--;
+}
+
+buildUnnamed2108() {
+  var o = new core.List<api.Product>();
+  o.add(buildProduct());
+  o.add(buildProduct());
+  return o;
+}
+
+checkUnnamed2108(core.List<api.Product> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProduct(o[0]);
+  checkProduct(o[1]);
+}
+
+core.int buildCounterGetOffersResponse = 0;
+buildGetOffersResponse() {
+  var o = new api.GetOffersResponse();
+  buildCounterGetOffersResponse++;
+  if (buildCounterGetOffersResponse < 3) {
+    o.products = buildUnnamed2108();
+  }
+  buildCounterGetOffersResponse--;
+  return o;
+}
+
+checkGetOffersResponse(api.GetOffersResponse o) {
+  buildCounterGetOffersResponse++;
+  if (buildCounterGetOffersResponse < 3) {
+    checkUnnamed2108(o.products);
+  }
+  buildCounterGetOffersResponse--;
+}
+
+buildUnnamed2109() {
+  var o = new core.List<api.MarketplaceDeal>();
+  o.add(buildMarketplaceDeal());
+  o.add(buildMarketplaceDeal());
+  return o;
+}
+
+checkUnnamed2109(core.List<api.MarketplaceDeal> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMarketplaceDeal(o[0]);
+  checkMarketplaceDeal(o[1]);
+}
+
+core.int buildCounterGetOrderDealsResponse = 0;
+buildGetOrderDealsResponse() {
+  var o = new api.GetOrderDealsResponse();
+  buildCounterGetOrderDealsResponse++;
+  if (buildCounterGetOrderDealsResponse < 3) {
+    o.deals = buildUnnamed2109();
+  }
+  buildCounterGetOrderDealsResponse--;
+  return o;
+}
+
+checkGetOrderDealsResponse(api.GetOrderDealsResponse o) {
+  buildCounterGetOrderDealsResponse++;
+  if (buildCounterGetOrderDealsResponse < 3) {
+    checkUnnamed2109(o.deals);
+  }
+  buildCounterGetOrderDealsResponse--;
+}
+
+buildUnnamed2110() {
+  var o = new core.List<api.MarketplaceNote>();
+  o.add(buildMarketplaceNote());
+  o.add(buildMarketplaceNote());
+  return o;
+}
+
+checkUnnamed2110(core.List<api.MarketplaceNote> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMarketplaceNote(o[0]);
+  checkMarketplaceNote(o[1]);
+}
+
+core.int buildCounterGetOrderNotesResponse = 0;
+buildGetOrderNotesResponse() {
+  var o = new api.GetOrderNotesResponse();
+  buildCounterGetOrderNotesResponse++;
+  if (buildCounterGetOrderNotesResponse < 3) {
+    o.notes = buildUnnamed2110();
+  }
+  buildCounterGetOrderNotesResponse--;
+  return o;
+}
+
+checkGetOrderNotesResponse(api.GetOrderNotesResponse o) {
+  buildCounterGetOrderNotesResponse++;
+  if (buildCounterGetOrderNotesResponse < 3) {
+    checkUnnamed2110(o.notes);
+  }
+  buildCounterGetOrderNotesResponse--;
+}
+
+buildUnnamed2111() {
+  var o = new core.List<api.Proposal>();
+  o.add(buildProposal());
+  o.add(buildProposal());
+  return o;
+}
+
+checkUnnamed2111(core.List<api.Proposal> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProposal(o[0]);
+  checkProposal(o[1]);
+}
+
+core.int buildCounterGetOrdersResponse = 0;
+buildGetOrdersResponse() {
+  var o = new api.GetOrdersResponse();
+  buildCounterGetOrdersResponse++;
+  if (buildCounterGetOrdersResponse < 3) {
+    o.proposals = buildUnnamed2111();
+  }
+  buildCounterGetOrdersResponse--;
+  return o;
+}
+
+checkGetOrdersResponse(api.GetOrdersResponse o) {
+  buildCounterGetOrdersResponse++;
+  if (buildCounterGetOrdersResponse < 3) {
+    checkUnnamed2111(o.proposals);
+  }
+  buildCounterGetOrdersResponse--;
+}
+
+buildUnnamed2112() {
+  var o = new core.List<api.PublisherProfileApiProto>();
+  o.add(buildPublisherProfileApiProto());
+  o.add(buildPublisherProfileApiProto());
+  return o;
+}
+
+checkUnnamed2112(core.List<api.PublisherProfileApiProto> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPublisherProfileApiProto(o[0]);
+  checkPublisherProfileApiProto(o[1]);
+}
+
+core.int buildCounterGetPublisherProfilesByAccountIdResponse = 0;
+buildGetPublisherProfilesByAccountIdResponse() {
+  var o = new api.GetPublisherProfilesByAccountIdResponse();
+  buildCounterGetPublisherProfilesByAccountIdResponse++;
+  if (buildCounterGetPublisherProfilesByAccountIdResponse < 3) {
+    o.profiles = buildUnnamed2112();
+  }
+  buildCounterGetPublisherProfilesByAccountIdResponse--;
+  return o;
+}
+
+checkGetPublisherProfilesByAccountIdResponse(
+    api.GetPublisherProfilesByAccountIdResponse o) {
+  buildCounterGetPublisherProfilesByAccountIdResponse++;
+  if (buildCounterGetPublisherProfilesByAccountIdResponse < 3) {
+    checkUnnamed2112(o.profiles);
+  }
+  buildCounterGetPublisherProfilesByAccountIdResponse--;
+}
+
+buildUnnamed2113() {
+  var o = new core.List<api.ContactInformation>();
+  o.add(buildContactInformation());
+  o.add(buildContactInformation());
+  return o;
+}
+
+checkUnnamed2113(core.List<api.ContactInformation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContactInformation(o[0]);
+  checkContactInformation(o[1]);
+}
+
+buildUnnamed2114() {
+  var o = new core.List<api.SharedTargeting>();
+  o.add(buildSharedTargeting());
+  o.add(buildSharedTargeting());
+  return o;
+}
+
+checkUnnamed2114(core.List<api.SharedTargeting> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSharedTargeting(o[0]);
+  checkSharedTargeting(o[1]);
+}
+
+core.int buildCounterMarketplaceDeal = 0;
+buildMarketplaceDeal() {
+  var o = new api.MarketplaceDeal();
+  buildCounterMarketplaceDeal++;
+  if (buildCounterMarketplaceDeal < 3) {
+    o.buyerPrivateData = buildPrivateData();
+    o.creationTimeMs = "foo";
+    o.creativePreApprovalPolicy = "foo";
+    o.creativeSafeFrameCompatibility = "foo";
+    o.dealId = "foo";
+    o.dealServingMetadata = buildDealServingMetadata();
+    o.deliveryControl = buildDeliveryControl();
+    o.externalDealId = "foo";
+    o.flightEndTimeMs = "foo";
+    o.flightStartTimeMs = "foo";
+    o.inventoryDescription = "foo";
+    o.isRfpTemplate = true;
+    o.isSetupComplete = true;
+    o.kind = "foo";
+    o.lastUpdateTimeMs = "foo";
+    o.name = "foo";
+    o.productId = "foo";
+    o.productRevisionNumber = "foo";
+    o.programmaticCreativeSource = "foo";
+    o.proposalId = "foo";
+    o.sellerContacts = buildUnnamed2113();
+    o.sharedTargetings = buildUnnamed2114();
+    o.syndicationProduct = "foo";
+    o.terms = buildDealTerms();
+    o.webPropertyCode = "foo";
+  }
+  buildCounterMarketplaceDeal--;
+  return o;
+}
+
+checkMarketplaceDeal(api.MarketplaceDeal o) {
+  buildCounterMarketplaceDeal++;
+  if (buildCounterMarketplaceDeal < 3) {
+    checkPrivateData(o.buyerPrivateData);
+    unittest.expect(o.creationTimeMs, unittest.equals('foo'));
+    unittest.expect(o.creativePreApprovalPolicy, unittest.equals('foo'));
+    unittest.expect(o.creativeSafeFrameCompatibility, unittest.equals('foo'));
+    unittest.expect(o.dealId, unittest.equals('foo'));
+    checkDealServingMetadata(o.dealServingMetadata);
+    checkDeliveryControl(o.deliveryControl);
+    unittest.expect(o.externalDealId, unittest.equals('foo'));
+    unittest.expect(o.flightEndTimeMs, unittest.equals('foo'));
+    unittest.expect(o.flightStartTimeMs, unittest.equals('foo'));
+    unittest.expect(o.inventoryDescription, unittest.equals('foo'));
+    unittest.expect(o.isRfpTemplate, unittest.isTrue);
+    unittest.expect(o.isSetupComplete, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.lastUpdateTimeMs, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.productId, unittest.equals('foo'));
+    unittest.expect(o.productRevisionNumber, unittest.equals('foo'));
+    unittest.expect(o.programmaticCreativeSource, unittest.equals('foo'));
+    unittest.expect(o.proposalId, unittest.equals('foo'));
+    checkUnnamed2113(o.sellerContacts);
+    checkUnnamed2114(o.sharedTargetings);
+    unittest.expect(o.syndicationProduct, unittest.equals('foo'));
+    checkDealTerms(o.terms);
+    unittest.expect(o.webPropertyCode, unittest.equals('foo'));
+  }
+  buildCounterMarketplaceDeal--;
+}
+
+core.int buildCounterMarketplaceDealParty = 0;
+buildMarketplaceDealParty() {
+  var o = new api.MarketplaceDealParty();
+  buildCounterMarketplaceDealParty++;
+  if (buildCounterMarketplaceDealParty < 3) {
+    o.buyer = buildBuyer();
+    o.seller = buildSeller();
+  }
+  buildCounterMarketplaceDealParty--;
+  return o;
+}
+
+checkMarketplaceDealParty(api.MarketplaceDealParty o) {
+  buildCounterMarketplaceDealParty++;
+  if (buildCounterMarketplaceDealParty < 3) {
+    checkBuyer(o.buyer);
+    checkSeller(o.seller);
+  }
+  buildCounterMarketplaceDealParty--;
+}
+
+core.int buildCounterMarketplaceLabel = 0;
+buildMarketplaceLabel() {
+  var o = new api.MarketplaceLabel();
+  buildCounterMarketplaceLabel++;
+  if (buildCounterMarketplaceLabel < 3) {
+    o.accountId = "foo";
+    o.createTimeMs = "foo";
+    o.deprecatedMarketplaceDealParty = buildMarketplaceDealParty();
+    o.label = "foo";
+  }
+  buildCounterMarketplaceLabel--;
+  return o;
+}
+
+checkMarketplaceLabel(api.MarketplaceLabel o) {
+  buildCounterMarketplaceLabel++;
+  if (buildCounterMarketplaceLabel < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.createTimeMs, unittest.equals('foo'));
+    checkMarketplaceDealParty(o.deprecatedMarketplaceDealParty);
+    unittest.expect(o.label, unittest.equals('foo'));
+  }
+  buildCounterMarketplaceLabel--;
+}
+
+core.int buildCounterMarketplaceNote = 0;
+buildMarketplaceNote() {
+  var o = new api.MarketplaceNote();
+  buildCounterMarketplaceNote++;
+  if (buildCounterMarketplaceNote < 3) {
+    o.creatorRole = "foo";
+    o.dealId = "foo";
+    o.kind = "foo";
+    o.note = "foo";
+    o.noteId = "foo";
+    o.proposalId = "foo";
+    o.proposalRevisionNumber = "foo";
+    o.timestampMs = "foo";
+  }
+  buildCounterMarketplaceNote--;
+  return o;
+}
+
+checkMarketplaceNote(api.MarketplaceNote o) {
+  buildCounterMarketplaceNote++;
+  if (buildCounterMarketplaceNote < 3) {
+    unittest.expect(o.creatorRole, unittest.equals('foo'));
+    unittest.expect(o.dealId, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.note, unittest.equals('foo'));
+    unittest.expect(o.noteId, unittest.equals('foo'));
+    unittest.expect(o.proposalId, unittest.equals('foo'));
+    unittest.expect(o.proposalRevisionNumber, unittest.equals('foo'));
+    unittest.expect(o.timestampMs, unittest.equals('foo'));
+  }
+  buildCounterMarketplaceNote--;
+}
+
+buildUnnamed2115() {
+  var o = new core.List<core.Object>();
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  return o;
+}
+
+checkUnnamed2115(core.List<core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o[0]) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(casted1["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted1["bool"], unittest.equals(true));
+  unittest.expect(casted1["string"], unittest.equals('foo'));
+  var casted2 = (o[1]) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(casted2["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted2["bool"], unittest.equals(true));
+  unittest.expect(casted2["string"], unittest.equals('foo'));
+}
+
+buildUnnamed2116() {
+  var o = new core.List<core.Object>();
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  return o;
+}
+
+checkUnnamed2116(core.List<core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted3 = (o[0]) as core.Map;
+  unittest.expect(casted3, unittest.hasLength(3));
+  unittest.expect(casted3["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted3["bool"], unittest.equals(true));
+  unittest.expect(casted3["string"], unittest.equals('foo'));
+  var casted4 = (o[1]) as core.Map;
+  unittest.expect(casted4, unittest.hasLength(3));
+  unittest.expect(casted4["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted4["bool"], unittest.equals(true));
+  unittest.expect(casted4["string"], unittest.equals('foo'));
+}
+
+buildUnnamed2117() {
+  var o = new core.List<core.Object>();
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  return o;
+}
+
+checkUnnamed2117(core.List<core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted5 = (o[0]) as core.Map;
+  unittest.expect(casted5, unittest.hasLength(3));
+  unittest.expect(casted5["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted5["bool"], unittest.equals(true));
+  unittest.expect(casted5["string"], unittest.equals('foo'));
+  var casted6 = (o[1]) as core.Map;
+  unittest.expect(casted6, unittest.hasLength(3));
+  unittest.expect(casted6["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted6["bool"], unittest.equals(true));
+  unittest.expect(casted6["string"], unittest.equals('foo'));
+}
+
+buildUnnamed2118() {
+  var o = new core.List<core.Object>();
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  return o;
+}
+
+checkUnnamed2118(core.List<core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted7 = (o[0]) as core.Map;
+  unittest.expect(casted7, unittest.hasLength(3));
+  unittest.expect(casted7["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted7["bool"], unittest.equals(true));
+  unittest.expect(casted7["string"], unittest.equals('foo'));
+  var casted8 = (o[1]) as core.Map;
+  unittest.expect(casted8, unittest.hasLength(3));
+  unittest.expect(casted8["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted8["bool"], unittest.equals(true));
+  unittest.expect(casted8["string"], unittest.equals('foo'));
+}
+
+core.int buildCounterPerformanceReport = 0;
+buildPerformanceReport() {
+  var o = new api.PerformanceReport();
+  buildCounterPerformanceReport++;
+  if (buildCounterPerformanceReport < 3) {
+    o.bidRate = 42.0;
+    o.bidRequestRate = 42.0;
+    o.calloutStatusRate = buildUnnamed2115();
+    o.cookieMatcherStatusRate = buildUnnamed2116();
+    o.creativeStatusRate = buildUnnamed2117();
+    o.filteredBidRate = 42.0;
+    o.hostedMatchStatusRate = buildUnnamed2118();
+    o.inventoryMatchRate = 42.0;
+    o.kind = "foo";
+    o.latency50thPercentile = 42.0;
+    o.latency85thPercentile = 42.0;
+    o.latency95thPercentile = 42.0;
+    o.noQuotaInRegion = 42.0;
+    o.outOfQuota = 42.0;
+    o.pixelMatchRequests = 42.0;
+    o.pixelMatchResponses = 42.0;
+    o.quotaConfiguredLimit = 42.0;
+    o.quotaThrottledLimit = 42.0;
+    o.region = "foo";
+    o.successfulRequestRate = 42.0;
+    o.timestamp = "foo";
+    o.unsuccessfulRequestRate = 42.0;
+  }
+  buildCounterPerformanceReport--;
+  return o;
+}
+
+checkPerformanceReport(api.PerformanceReport o) {
+  buildCounterPerformanceReport++;
+  if (buildCounterPerformanceReport < 3) {
+    unittest.expect(o.bidRate, unittest.equals(42.0));
+    unittest.expect(o.bidRequestRate, unittest.equals(42.0));
+    checkUnnamed2115(o.calloutStatusRate);
+    checkUnnamed2116(o.cookieMatcherStatusRate);
+    checkUnnamed2117(o.creativeStatusRate);
+    unittest.expect(o.filteredBidRate, unittest.equals(42.0));
+    checkUnnamed2118(o.hostedMatchStatusRate);
+    unittest.expect(o.inventoryMatchRate, unittest.equals(42.0));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.latency50thPercentile, unittest.equals(42.0));
+    unittest.expect(o.latency85thPercentile, unittest.equals(42.0));
+    unittest.expect(o.latency95thPercentile, unittest.equals(42.0));
+    unittest.expect(o.noQuotaInRegion, unittest.equals(42.0));
+    unittest.expect(o.outOfQuota, unittest.equals(42.0));
+    unittest.expect(o.pixelMatchRequests, unittest.equals(42.0));
+    unittest.expect(o.pixelMatchResponses, unittest.equals(42.0));
+    unittest.expect(o.quotaConfiguredLimit, unittest.equals(42.0));
+    unittest.expect(o.quotaThrottledLimit, unittest.equals(42.0));
+    unittest.expect(o.region, unittest.equals('foo'));
+    unittest.expect(o.successfulRequestRate, unittest.equals(42.0));
+    unittest.expect(o.timestamp, unittest.equals('foo'));
+    unittest.expect(o.unsuccessfulRequestRate, unittest.equals(42.0));
+  }
+  buildCounterPerformanceReport--;
+}
+
+buildUnnamed2119() {
+  var o = new core.List<api.PerformanceReport>();
+  o.add(buildPerformanceReport());
+  o.add(buildPerformanceReport());
+  return o;
+}
+
+checkUnnamed2119(core.List<api.PerformanceReport> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPerformanceReport(o[0]);
+  checkPerformanceReport(o[1]);
+}
+
+core.int buildCounterPerformanceReportList = 0;
+buildPerformanceReportList() {
+  var o = new api.PerformanceReportList();
+  buildCounterPerformanceReportList++;
+  if (buildCounterPerformanceReportList < 3) {
+    o.kind = "foo";
+    o.performanceReport = buildUnnamed2119();
+  }
+  buildCounterPerformanceReportList--;
+  return o;
+}
+
+checkPerformanceReportList(api.PerformanceReportList o) {
+  buildCounterPerformanceReportList++;
+  if (buildCounterPerformanceReportList < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2119(o.performanceReport);
+  }
+  buildCounterPerformanceReportList--;
+}
+
+buildUnnamed2120() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2120(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPretargetingConfigDimensions = 0;
+buildPretargetingConfigDimensions() {
+  var o = new api.PretargetingConfigDimensions();
+  buildCounterPretargetingConfigDimensions++;
+  if (buildCounterPretargetingConfigDimensions < 3) {
+    o.height = "foo";
+    o.width = "foo";
+  }
+  buildCounterPretargetingConfigDimensions--;
+  return o;
+}
+
+checkPretargetingConfigDimensions(api.PretargetingConfigDimensions o) {
+  buildCounterPretargetingConfigDimensions++;
+  if (buildCounterPretargetingConfigDimensions < 3) {
+    unittest.expect(o.height, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals('foo'));
+  }
+  buildCounterPretargetingConfigDimensions--;
+}
+
+buildUnnamed2121() {
+  var o = new core.List<api.PretargetingConfigDimensions>();
+  o.add(buildPretargetingConfigDimensions());
+  o.add(buildPretargetingConfigDimensions());
+  return o;
+}
+
+checkUnnamed2121(core.List<api.PretargetingConfigDimensions> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPretargetingConfigDimensions(o[0]);
+  checkPretargetingConfigDimensions(o[1]);
+}
+
+buildUnnamed2122() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2122(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2123() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2123(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPretargetingConfigExcludedPlacements = 0;
+buildPretargetingConfigExcludedPlacements() {
+  var o = new api.PretargetingConfigExcludedPlacements();
+  buildCounterPretargetingConfigExcludedPlacements++;
+  if (buildCounterPretargetingConfigExcludedPlacements < 3) {
+    o.token = "foo";
+    o.type = "foo";
+  }
+  buildCounterPretargetingConfigExcludedPlacements--;
+  return o;
+}
+
+checkPretargetingConfigExcludedPlacements(
+    api.PretargetingConfigExcludedPlacements o) {
+  buildCounterPretargetingConfigExcludedPlacements++;
+  if (buildCounterPretargetingConfigExcludedPlacements < 3) {
+    unittest.expect(o.token, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterPretargetingConfigExcludedPlacements--;
+}
+
+buildUnnamed2124() {
+  var o = new core.List<api.PretargetingConfigExcludedPlacements>();
+  o.add(buildPretargetingConfigExcludedPlacements());
+  o.add(buildPretargetingConfigExcludedPlacements());
+  return o;
+}
+
+checkUnnamed2124(core.List<api.PretargetingConfigExcludedPlacements> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPretargetingConfigExcludedPlacements(o[0]);
+  checkPretargetingConfigExcludedPlacements(o[1]);
+}
+
+buildUnnamed2125() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2125(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2126() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2126(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2127() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2127(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2128() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2128(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2129() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2129(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2130() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2130(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2131() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2131(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPretargetingConfigPlacements = 0;
+buildPretargetingConfigPlacements() {
+  var o = new api.PretargetingConfigPlacements();
+  buildCounterPretargetingConfigPlacements++;
+  if (buildCounterPretargetingConfigPlacements < 3) {
+    o.token = "foo";
+    o.type = "foo";
+  }
+  buildCounterPretargetingConfigPlacements--;
+  return o;
+}
+
+checkPretargetingConfigPlacements(api.PretargetingConfigPlacements o) {
+  buildCounterPretargetingConfigPlacements++;
+  if (buildCounterPretargetingConfigPlacements < 3) {
+    unittest.expect(o.token, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterPretargetingConfigPlacements--;
+}
+
+buildUnnamed2132() {
+  var o = new core.List<api.PretargetingConfigPlacements>();
+  o.add(buildPretargetingConfigPlacements());
+  o.add(buildPretargetingConfigPlacements());
+  return o;
+}
+
+checkUnnamed2132(core.List<api.PretargetingConfigPlacements> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPretargetingConfigPlacements(o[0]);
+  checkPretargetingConfigPlacements(o[1]);
+}
+
+buildUnnamed2133() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2133(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2134() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2134(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2135() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2135(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2136() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2136(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2137() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2137(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2138() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2138(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPretargetingConfigVideoPlayerSizes = 0;
+buildPretargetingConfigVideoPlayerSizes() {
+  var o = new api.PretargetingConfigVideoPlayerSizes();
+  buildCounterPretargetingConfigVideoPlayerSizes++;
+  if (buildCounterPretargetingConfigVideoPlayerSizes < 3) {
+    o.aspectRatio = "foo";
+    o.minHeight = "foo";
+    o.minWidth = "foo";
+  }
+  buildCounterPretargetingConfigVideoPlayerSizes--;
+  return o;
+}
+
+checkPretargetingConfigVideoPlayerSizes(
+    api.PretargetingConfigVideoPlayerSizes o) {
+  buildCounterPretargetingConfigVideoPlayerSizes++;
+  if (buildCounterPretargetingConfigVideoPlayerSizes < 3) {
+    unittest.expect(o.aspectRatio, unittest.equals('foo'));
+    unittest.expect(o.minHeight, unittest.equals('foo'));
+    unittest.expect(o.minWidth, unittest.equals('foo'));
+  }
+  buildCounterPretargetingConfigVideoPlayerSizes--;
+}
+
+buildUnnamed2139() {
+  var o = new core.List<api.PretargetingConfigVideoPlayerSizes>();
+  o.add(buildPretargetingConfigVideoPlayerSizes());
+  o.add(buildPretargetingConfigVideoPlayerSizes());
+  return o;
+}
+
+checkUnnamed2139(core.List<api.PretargetingConfigVideoPlayerSizes> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPretargetingConfigVideoPlayerSizes(o[0]);
+  checkPretargetingConfigVideoPlayerSizes(o[1]);
+}
+
+core.int buildCounterPretargetingConfig = 0;
+buildPretargetingConfig() {
+  var o = new api.PretargetingConfig();
+  buildCounterPretargetingConfig++;
+  if (buildCounterPretargetingConfig < 3) {
+    o.billingId = "foo";
+    o.configId = "foo";
+    o.configName = "foo";
+    o.creativeType = buildUnnamed2120();
+    o.dimensions = buildUnnamed2121();
+    o.excludedContentLabels = buildUnnamed2122();
+    o.excludedGeoCriteriaIds = buildUnnamed2123();
+    o.excludedPlacements = buildUnnamed2124();
+    o.excludedUserLists = buildUnnamed2125();
+    o.excludedVerticals = buildUnnamed2126();
+    o.geoCriteriaIds = buildUnnamed2127();
+    o.isActive = true;
+    o.kind = "foo";
+    o.languages = buildUnnamed2128();
+    o.minimumViewabilityDecile = 42;
+    o.mobileCarriers = buildUnnamed2129();
+    o.mobileDevices = buildUnnamed2130();
+    o.mobileOperatingSystemVersions = buildUnnamed2131();
+    o.placements = buildUnnamed2132();
+    o.platforms = buildUnnamed2133();
+    o.supportedCreativeAttributes = buildUnnamed2134();
+    o.userIdentifierDataRequired = buildUnnamed2135();
+    o.userLists = buildUnnamed2136();
+    o.vendorTypes = buildUnnamed2137();
+    o.verticals = buildUnnamed2138();
+    o.videoPlayerSizes = buildUnnamed2139();
+  }
+  buildCounterPretargetingConfig--;
+  return o;
+}
+
+checkPretargetingConfig(api.PretargetingConfig o) {
+  buildCounterPretargetingConfig++;
+  if (buildCounterPretargetingConfig < 3) {
+    unittest.expect(o.billingId, unittest.equals('foo'));
+    unittest.expect(o.configId, unittest.equals('foo'));
+    unittest.expect(o.configName, unittest.equals('foo'));
+    checkUnnamed2120(o.creativeType);
+    checkUnnamed2121(o.dimensions);
+    checkUnnamed2122(o.excludedContentLabels);
+    checkUnnamed2123(o.excludedGeoCriteriaIds);
+    checkUnnamed2124(o.excludedPlacements);
+    checkUnnamed2125(o.excludedUserLists);
+    checkUnnamed2126(o.excludedVerticals);
+    checkUnnamed2127(o.geoCriteriaIds);
+    unittest.expect(o.isActive, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2128(o.languages);
+    unittest.expect(o.minimumViewabilityDecile, unittest.equals(42));
+    checkUnnamed2129(o.mobileCarriers);
+    checkUnnamed2130(o.mobileDevices);
+    checkUnnamed2131(o.mobileOperatingSystemVersions);
+    checkUnnamed2132(o.placements);
+    checkUnnamed2133(o.platforms);
+    checkUnnamed2134(o.supportedCreativeAttributes);
+    checkUnnamed2135(o.userIdentifierDataRequired);
+    checkUnnamed2136(o.userLists);
+    checkUnnamed2137(o.vendorTypes);
+    checkUnnamed2138(o.verticals);
+    checkUnnamed2139(o.videoPlayerSizes);
+  }
+  buildCounterPretargetingConfig--;
+}
+
+buildUnnamed2140() {
+  var o = new core.List<api.PretargetingConfig>();
+  o.add(buildPretargetingConfig());
+  o.add(buildPretargetingConfig());
+  return o;
+}
+
+checkUnnamed2140(core.List<api.PretargetingConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPretargetingConfig(o[0]);
+  checkPretargetingConfig(o[1]);
+}
+
+core.int buildCounterPretargetingConfigList = 0;
+buildPretargetingConfigList() {
+  var o = new api.PretargetingConfigList();
+  buildCounterPretargetingConfigList++;
+  if (buildCounterPretargetingConfigList < 3) {
+    o.items = buildUnnamed2140();
+    o.kind = "foo";
+  }
+  buildCounterPretargetingConfigList--;
+  return o;
+}
+
+checkPretargetingConfigList(api.PretargetingConfigList o) {
+  buildCounterPretargetingConfigList++;
+  if (buildCounterPretargetingConfigList < 3) {
+    checkUnnamed2140(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterPretargetingConfigList--;
+}
+
+core.int buildCounterPrice = 0;
+buildPrice() {
+  var o = new api.Price();
+  buildCounterPrice++;
+  if (buildCounterPrice < 3) {
+    o.amountMicros = 42.0;
+    o.currencyCode = "foo";
+    o.expectedCpmMicros = 42.0;
+    o.pricingType = "foo";
+  }
+  buildCounterPrice--;
+  return o;
+}
+
+checkPrice(api.Price o) {
+  buildCounterPrice++;
+  if (buildCounterPrice < 3) {
+    unittest.expect(o.amountMicros, unittest.equals(42.0));
+    unittest.expect(o.currencyCode, unittest.equals('foo'));
+    unittest.expect(o.expectedCpmMicros, unittest.equals(42.0));
+    unittest.expect(o.pricingType, unittest.equals('foo'));
+  }
+  buildCounterPrice--;
+}
+
+core.int buildCounterPricePerBuyer = 0;
+buildPricePerBuyer() {
+  var o = new api.PricePerBuyer();
+  buildCounterPricePerBuyer++;
+  if (buildCounterPricePerBuyer < 3) {
+    o.auctionTier = "foo";
+    o.billedBuyer = buildBuyer();
+    o.buyer = buildBuyer();
+    o.price = buildPrice();
+  }
+  buildCounterPricePerBuyer--;
+  return o;
+}
+
+checkPricePerBuyer(api.PricePerBuyer o) {
+  buildCounterPricePerBuyer++;
+  if (buildCounterPricePerBuyer < 3) {
+    unittest.expect(o.auctionTier, unittest.equals('foo'));
+    checkBuyer(o.billedBuyer);
+    checkBuyer(o.buyer);
+    checkPrice(o.price);
+  }
+  buildCounterPricePerBuyer--;
+}
+
+core.int buildCounterPrivateData = 0;
+buildPrivateData() {
+  var o = new api.PrivateData();
+  buildCounterPrivateData++;
+  if (buildCounterPrivateData < 3) {
+    o.referenceId = "foo";
+    o.referencePayload = "foo";
+  }
+  buildCounterPrivateData--;
+  return o;
+}
+
+checkPrivateData(api.PrivateData o) {
+  buildCounterPrivateData++;
+  if (buildCounterPrivateData < 3) {
+    unittest.expect(o.referenceId, unittest.equals('foo'));
+    unittest.expect(o.referencePayload, unittest.equals('foo'));
+  }
+  buildCounterPrivateData--;
+}
+
+buildUnnamed2141() {
+  var o = new core.List<api.ContactInformation>();
+  o.add(buildContactInformation());
+  o.add(buildContactInformation());
+  return o;
+}
+
+checkUnnamed2141(core.List<api.ContactInformation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContactInformation(o[0]);
+  checkContactInformation(o[1]);
+}
+
+buildUnnamed2142() {
+  var o = new core.List<api.MarketplaceLabel>();
+  o.add(buildMarketplaceLabel());
+  o.add(buildMarketplaceLabel());
+  return o;
+}
+
+checkUnnamed2142(core.List<api.MarketplaceLabel> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMarketplaceLabel(o[0]);
+  checkMarketplaceLabel(o[1]);
+}
+
+buildUnnamed2143() {
+  var o = new core.List<api.SharedTargeting>();
+  o.add(buildSharedTargeting());
+  o.add(buildSharedTargeting());
+  return o;
+}
+
+checkUnnamed2143(core.List<api.SharedTargeting> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSharedTargeting(o[0]);
+  checkSharedTargeting(o[1]);
+}
+
+core.int buildCounterProduct = 0;
+buildProduct() {
+  var o = new api.Product();
+  buildCounterProduct++;
+  if (buildCounterProduct < 3) {
+    o.billedBuyer = buildBuyer();
+    o.buyer = buildBuyer();
+    o.creationTimeMs = "foo";
+    o.creatorContacts = buildUnnamed2141();
+    o.creatorRole = "foo";
+    o.deliveryControl = buildDeliveryControl();
+    o.flightEndTimeMs = "foo";
+    o.flightStartTimeMs = "foo";
+    o.hasCreatorSignedOff = true;
+    o.inventorySource = "foo";
+    o.kind = "foo";
+    o.labels = buildUnnamed2142();
+    o.lastUpdateTimeMs = "foo";
+    o.legacyOfferId = "foo";
+    o.marketplacePublisherProfileId = "foo";
+    o.name = "foo";
+    o.privateAuctionId = "foo";
+    o.productId = "foo";
+    o.publisherProfileId = "foo";
+    o.publisherProvidedForecast = buildPublisherProvidedForecast();
+    o.revisionNumber = "foo";
+    o.seller = buildSeller();
+    o.sharedTargetings = buildUnnamed2143();
+    o.state = "foo";
+    o.syndicationProduct = "foo";
+    o.terms = buildDealTerms();
+    o.webPropertyCode = "foo";
+  }
+  buildCounterProduct--;
+  return o;
+}
+
+checkProduct(api.Product o) {
+  buildCounterProduct++;
+  if (buildCounterProduct < 3) {
+    checkBuyer(o.billedBuyer);
+    checkBuyer(o.buyer);
+    unittest.expect(o.creationTimeMs, unittest.equals('foo'));
+    checkUnnamed2141(o.creatorContacts);
+    unittest.expect(o.creatorRole, unittest.equals('foo'));
+    checkDeliveryControl(o.deliveryControl);
+    unittest.expect(o.flightEndTimeMs, unittest.equals('foo'));
+    unittest.expect(o.flightStartTimeMs, unittest.equals('foo'));
+    unittest.expect(o.hasCreatorSignedOff, unittest.isTrue);
+    unittest.expect(o.inventorySource, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2142(o.labels);
+    unittest.expect(o.lastUpdateTimeMs, unittest.equals('foo'));
+    unittest.expect(o.legacyOfferId, unittest.equals('foo'));
+    unittest.expect(o.marketplacePublisherProfileId, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.privateAuctionId, unittest.equals('foo'));
+    unittest.expect(o.productId, unittest.equals('foo'));
+    unittest.expect(o.publisherProfileId, unittest.equals('foo'));
+    checkPublisherProvidedForecast(o.publisherProvidedForecast);
+    unittest.expect(o.revisionNumber, unittest.equals('foo'));
+    checkSeller(o.seller);
+    checkUnnamed2143(o.sharedTargetings);
+    unittest.expect(o.state, unittest.equals('foo'));
+    unittest.expect(o.syndicationProduct, unittest.equals('foo'));
+    checkDealTerms(o.terms);
+    unittest.expect(o.webPropertyCode, unittest.equals('foo'));
+  }
+  buildCounterProduct--;
+}
+
+buildUnnamed2144() {
+  var o = new core.List<api.ContactInformation>();
+  o.add(buildContactInformation());
+  o.add(buildContactInformation());
+  return o;
+}
+
+checkUnnamed2144(core.List<api.ContactInformation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContactInformation(o[0]);
+  checkContactInformation(o[1]);
+}
+
+buildUnnamed2145() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2145(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2146() {
+  var o = new core.List<api.MarketplaceLabel>();
+  o.add(buildMarketplaceLabel());
+  o.add(buildMarketplaceLabel());
+  return o;
+}
+
+checkUnnamed2146(core.List<api.MarketplaceLabel> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMarketplaceLabel(o[0]);
+  checkMarketplaceLabel(o[1]);
+}
+
+buildUnnamed2147() {
+  var o = new core.List<api.ContactInformation>();
+  o.add(buildContactInformation());
+  o.add(buildContactInformation());
+  return o;
+}
+
+checkUnnamed2147(core.List<api.ContactInformation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContactInformation(o[0]);
+  checkContactInformation(o[1]);
+}
+
+core.int buildCounterProposal = 0;
+buildProposal() {
+  var o = new api.Proposal();
+  buildCounterProposal++;
+  if (buildCounterProposal < 3) {
+    o.billedBuyer = buildBuyer();
+    o.buyer = buildBuyer();
+    o.buyerContacts = buildUnnamed2144();
+    o.buyerPrivateData = buildPrivateData();
+    o.dbmAdvertiserIds = buildUnnamed2145();
+    o.hasBuyerSignedOff = true;
+    o.hasSellerSignedOff = true;
+    o.inventorySource = "foo";
+    o.isRenegotiating = true;
+    o.isSetupComplete = true;
+    o.kind = "foo";
+    o.labels = buildUnnamed2146();
+    o.lastUpdaterOrCommentorRole = "foo";
+    o.name = "foo";
+    o.negotiationId = "foo";
+    o.originatorRole = "foo";
+    o.privateAuctionId = "foo";
+    o.proposalId = "foo";
+    o.proposalState = "foo";
+    o.revisionNumber = "foo";
+    o.revisionTimeMs = "foo";
+    o.seller = buildSeller();
+    o.sellerContacts = buildUnnamed2147();
+  }
+  buildCounterProposal--;
+  return o;
+}
+
+checkProposal(api.Proposal o) {
+  buildCounterProposal++;
+  if (buildCounterProposal < 3) {
+    checkBuyer(o.billedBuyer);
+    checkBuyer(o.buyer);
+    checkUnnamed2144(o.buyerContacts);
+    checkPrivateData(o.buyerPrivateData);
+    checkUnnamed2145(o.dbmAdvertiserIds);
+    unittest.expect(o.hasBuyerSignedOff, unittest.isTrue);
+    unittest.expect(o.hasSellerSignedOff, unittest.isTrue);
+    unittest.expect(o.inventorySource, unittest.equals('foo'));
+    unittest.expect(o.isRenegotiating, unittest.isTrue);
+    unittest.expect(o.isSetupComplete, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2146(o.labels);
+    unittest.expect(o.lastUpdaterOrCommentorRole, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.negotiationId, unittest.equals('foo'));
+    unittest.expect(o.originatorRole, unittest.equals('foo'));
+    unittest.expect(o.privateAuctionId, unittest.equals('foo'));
+    unittest.expect(o.proposalId, unittest.equals('foo'));
+    unittest.expect(o.proposalState, unittest.equals('foo'));
+    unittest.expect(o.revisionNumber, unittest.equals('foo'));
+    unittest.expect(o.revisionTimeMs, unittest.equals('foo'));
+    checkSeller(o.seller);
+    checkUnnamed2147(o.sellerContacts);
+  }
+  buildCounterProposal--;
+}
+
+buildUnnamed2148() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2148(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2149() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2149(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPublisherProfileApiProto = 0;
+buildPublisherProfileApiProto() {
+  var o = new api.PublisherProfileApiProto();
+  buildCounterPublisherProfileApiProto++;
+  if (buildCounterPublisherProfileApiProto < 3) {
+    o.accountId = "foo";
+    o.audience = "foo";
+    o.buyerPitchStatement = "foo";
+    o.directContact = "foo";
+    o.exchange = "foo";
+    o.googlePlusLink = "foo";
+    o.isParent = true;
+    o.isPublished = true;
+    o.kind = "foo";
+    o.logoUrl = "foo";
+    o.mediaKitLink = "foo";
+    o.name = "foo";
+    o.overview = "foo";
+    o.profileId = 42;
+    o.programmaticContact = "foo";
+    o.publisherDomains = buildUnnamed2148();
+    o.publisherProfileId = "foo";
+    o.publisherProvidedForecast = buildPublisherProvidedForecast();
+    o.rateCardInfoLink = "foo";
+    o.samplePageLink = "foo";
+    o.seller = buildSeller();
+    o.state = "foo";
+    o.topHeadlines = buildUnnamed2149();
+  }
+  buildCounterPublisherProfileApiProto--;
+  return o;
+}
+
+checkPublisherProfileApiProto(api.PublisherProfileApiProto o) {
+  buildCounterPublisherProfileApiProto++;
+  if (buildCounterPublisherProfileApiProto < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.audience, unittest.equals('foo'));
+    unittest.expect(o.buyerPitchStatement, unittest.equals('foo'));
+    unittest.expect(o.directContact, unittest.equals('foo'));
+    unittest.expect(o.exchange, unittest.equals('foo'));
+    unittest.expect(o.googlePlusLink, unittest.equals('foo'));
+    unittest.expect(o.isParent, unittest.isTrue);
+    unittest.expect(o.isPublished, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.logoUrl, unittest.equals('foo'));
+    unittest.expect(o.mediaKitLink, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.overview, unittest.equals('foo'));
+    unittest.expect(o.profileId, unittest.equals(42));
+    unittest.expect(o.programmaticContact, unittest.equals('foo'));
+    checkUnnamed2148(o.publisherDomains);
+    unittest.expect(o.publisherProfileId, unittest.equals('foo'));
+    checkPublisherProvidedForecast(o.publisherProvidedForecast);
+    unittest.expect(o.rateCardInfoLink, unittest.equals('foo'));
+    unittest.expect(o.samplePageLink, unittest.equals('foo'));
+    checkSeller(o.seller);
+    unittest.expect(o.state, unittest.equals('foo'));
+    checkUnnamed2149(o.topHeadlines);
+  }
+  buildCounterPublisherProfileApiProto--;
+}
+
+buildUnnamed2150() {
+  var o = new core.List<api.Dimension>();
+  o.add(buildDimension());
+  o.add(buildDimension());
+  return o;
+}
+
+checkUnnamed2150(core.List<api.Dimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimension(o[0]);
+  checkDimension(o[1]);
+}
+
+core.int buildCounterPublisherProvidedForecast = 0;
+buildPublisherProvidedForecast() {
+  var o = new api.PublisherProvidedForecast();
+  buildCounterPublisherProvidedForecast++;
+  if (buildCounterPublisherProvidedForecast < 3) {
+    o.dimensions = buildUnnamed2150();
+    o.weeklyImpressions = "foo";
+    o.weeklyUniques = "foo";
+  }
+  buildCounterPublisherProvidedForecast--;
+  return o;
+}
+
+checkPublisherProvidedForecast(api.PublisherProvidedForecast o) {
+  buildCounterPublisherProvidedForecast++;
+  if (buildCounterPublisherProvidedForecast < 3) {
+    checkUnnamed2150(o.dimensions);
+    unittest.expect(o.weeklyImpressions, unittest.equals('foo'));
+    unittest.expect(o.weeklyUniques, unittest.equals('foo'));
+  }
+  buildCounterPublisherProvidedForecast--;
+}
+
+core.int buildCounterSeller = 0;
+buildSeller() {
+  var o = new api.Seller();
+  buildCounterSeller++;
+  if (buildCounterSeller < 3) {
+    o.accountId = "foo";
+    o.subAccountId = "foo";
+  }
+  buildCounterSeller--;
+  return o;
+}
+
+checkSeller(api.Seller o) {
+  buildCounterSeller++;
+  if (buildCounterSeller < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.subAccountId, unittest.equals('foo'));
+  }
+  buildCounterSeller--;
+}
+
+buildUnnamed2151() {
+  var o = new core.List<api.TargetingValue>();
+  o.add(buildTargetingValue());
+  o.add(buildTargetingValue());
+  return o;
+}
+
+checkUnnamed2151(core.List<api.TargetingValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTargetingValue(o[0]);
+  checkTargetingValue(o[1]);
+}
+
+buildUnnamed2152() {
+  var o = new core.List<api.TargetingValue>();
+  o.add(buildTargetingValue());
+  o.add(buildTargetingValue());
+  return o;
+}
+
+checkUnnamed2152(core.List<api.TargetingValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTargetingValue(o[0]);
+  checkTargetingValue(o[1]);
+}
+
+core.int buildCounterSharedTargeting = 0;
+buildSharedTargeting() {
+  var o = new api.SharedTargeting();
+  buildCounterSharedTargeting++;
+  if (buildCounterSharedTargeting < 3) {
+    o.exclusions = buildUnnamed2151();
+    o.inclusions = buildUnnamed2152();
+    o.key = "foo";
+  }
+  buildCounterSharedTargeting--;
+  return o;
+}
+
+checkSharedTargeting(api.SharedTargeting o) {
+  buildCounterSharedTargeting++;
+  if (buildCounterSharedTargeting < 3) {
+    checkUnnamed2151(o.exclusions);
+    checkUnnamed2152(o.inclusions);
+    unittest.expect(o.key, unittest.equals('foo'));
+  }
+  buildCounterSharedTargeting--;
+}
+
+core.int buildCounterTargetingValue = 0;
+buildTargetingValue() {
+  var o = new api.TargetingValue();
+  buildCounterTargetingValue++;
+  if (buildCounterTargetingValue < 3) {
+    o.creativeSizeValue = buildTargetingValueCreativeSize();
+    o.dayPartTargetingValue = buildTargetingValueDayPartTargeting();
+    o.longValue = "foo";
+    o.stringValue = "foo";
+  }
+  buildCounterTargetingValue--;
+  return o;
+}
+
+checkTargetingValue(api.TargetingValue o) {
+  buildCounterTargetingValue++;
+  if (buildCounterTargetingValue < 3) {
+    checkTargetingValueCreativeSize(o.creativeSizeValue);
+    checkTargetingValueDayPartTargeting(o.dayPartTargetingValue);
+    unittest.expect(o.longValue, unittest.equals('foo'));
+    unittest.expect(o.stringValue, unittest.equals('foo'));
+  }
+  buildCounterTargetingValue--;
+}
+
+buildUnnamed2153() {
+  var o = new core.List<api.TargetingValueSize>();
+  o.add(buildTargetingValueSize());
+  o.add(buildTargetingValueSize());
+  return o;
+}
+
+checkUnnamed2153(core.List<api.TargetingValueSize> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTargetingValueSize(o[0]);
+  checkTargetingValueSize(o[1]);
+}
+
+core.int buildCounterTargetingValueCreativeSize = 0;
+buildTargetingValueCreativeSize() {
+  var o = new api.TargetingValueCreativeSize();
+  buildCounterTargetingValueCreativeSize++;
+  if (buildCounterTargetingValueCreativeSize < 3) {
+    o.companionSizes = buildUnnamed2153();
+    o.creativeSizeType = "foo";
+    o.nativeTemplate = "foo";
+    o.size = buildTargetingValueSize();
+    o.skippableAdType = "foo";
+  }
+  buildCounterTargetingValueCreativeSize--;
+  return o;
+}
+
+checkTargetingValueCreativeSize(api.TargetingValueCreativeSize o) {
+  buildCounterTargetingValueCreativeSize++;
+  if (buildCounterTargetingValueCreativeSize < 3) {
+    checkUnnamed2153(o.companionSizes);
+    unittest.expect(o.creativeSizeType, unittest.equals('foo'));
+    unittest.expect(o.nativeTemplate, unittest.equals('foo'));
+    checkTargetingValueSize(o.size);
+    unittest.expect(o.skippableAdType, unittest.equals('foo'));
+  }
+  buildCounterTargetingValueCreativeSize--;
+}
+
+buildUnnamed2154() {
+  var o = new core.List<api.TargetingValueDayPartTargetingDayPart>();
+  o.add(buildTargetingValueDayPartTargetingDayPart());
+  o.add(buildTargetingValueDayPartTargetingDayPart());
+  return o;
+}
+
+checkUnnamed2154(core.List<api.TargetingValueDayPartTargetingDayPart> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTargetingValueDayPartTargetingDayPart(o[0]);
+  checkTargetingValueDayPartTargetingDayPart(o[1]);
+}
+
+core.int buildCounterTargetingValueDayPartTargeting = 0;
+buildTargetingValueDayPartTargeting() {
+  var o = new api.TargetingValueDayPartTargeting();
+  buildCounterTargetingValueDayPartTargeting++;
+  if (buildCounterTargetingValueDayPartTargeting < 3) {
+    o.dayParts = buildUnnamed2154();
+    o.timeZoneType = "foo";
+  }
+  buildCounterTargetingValueDayPartTargeting--;
+  return o;
+}
+
+checkTargetingValueDayPartTargeting(api.TargetingValueDayPartTargeting o) {
+  buildCounterTargetingValueDayPartTargeting++;
+  if (buildCounterTargetingValueDayPartTargeting < 3) {
+    checkUnnamed2154(o.dayParts);
+    unittest.expect(o.timeZoneType, unittest.equals('foo'));
+  }
+  buildCounterTargetingValueDayPartTargeting--;
+}
+
+core.int buildCounterTargetingValueDayPartTargetingDayPart = 0;
+buildTargetingValueDayPartTargetingDayPart() {
+  var o = new api.TargetingValueDayPartTargetingDayPart();
+  buildCounterTargetingValueDayPartTargetingDayPart++;
+  if (buildCounterTargetingValueDayPartTargetingDayPart < 3) {
+    o.dayOfWeek = "foo";
+    o.endHour = 42;
+    o.endMinute = 42;
+    o.startHour = 42;
+    o.startMinute = 42;
+  }
+  buildCounterTargetingValueDayPartTargetingDayPart--;
+  return o;
+}
+
+checkTargetingValueDayPartTargetingDayPart(
+    api.TargetingValueDayPartTargetingDayPart o) {
+  buildCounterTargetingValueDayPartTargetingDayPart++;
+  if (buildCounterTargetingValueDayPartTargetingDayPart < 3) {
+    unittest.expect(o.dayOfWeek, unittest.equals('foo'));
+    unittest.expect(o.endHour, unittest.equals(42));
+    unittest.expect(o.endMinute, unittest.equals(42));
+    unittest.expect(o.startHour, unittest.equals(42));
+    unittest.expect(o.startMinute, unittest.equals(42));
+  }
+  buildCounterTargetingValueDayPartTargetingDayPart--;
+}
+
+core.int buildCounterTargetingValueSize = 0;
+buildTargetingValueSize() {
+  var o = new api.TargetingValueSize();
+  buildCounterTargetingValueSize++;
+  if (buildCounterTargetingValueSize < 3) {
+    o.height = 42;
+    o.width = 42;
+  }
+  buildCounterTargetingValueSize--;
+  return o;
+}
+
+checkTargetingValueSize(api.TargetingValueSize o) {
+  buildCounterTargetingValueSize++;
+  if (buildCounterTargetingValueSize < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterTargetingValueSize--;
+}
+
+core.int buildCounterUpdatePrivateAuctionProposalRequest = 0;
+buildUpdatePrivateAuctionProposalRequest() {
+  var o = new api.UpdatePrivateAuctionProposalRequest();
+  buildCounterUpdatePrivateAuctionProposalRequest++;
+  if (buildCounterUpdatePrivateAuctionProposalRequest < 3) {
+    o.externalDealId = "foo";
+    o.note = buildMarketplaceNote();
+    o.proposalRevisionNumber = "foo";
+    o.updateAction = "foo";
+  }
+  buildCounterUpdatePrivateAuctionProposalRequest--;
+  return o;
+}
+
+checkUpdatePrivateAuctionProposalRequest(
+    api.UpdatePrivateAuctionProposalRequest o) {
+  buildCounterUpdatePrivateAuctionProposalRequest++;
+  if (buildCounterUpdatePrivateAuctionProposalRequest < 3) {
+    unittest.expect(o.externalDealId, unittest.equals('foo'));
+    checkMarketplaceNote(o.note);
+    unittest.expect(o.proposalRevisionNumber, unittest.equals('foo'));
+    unittest.expect(o.updateAction, unittest.equals('foo'));
+  }
+  buildCounterUpdatePrivateAuctionProposalRequest--;
+}
+
+buildUnnamed2155() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed2155(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+buildUnnamed2156() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2156(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-AccountBidderLocation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountBidderLocation();
+      var od = new api.AccountBidderLocation.fromJson(o.toJson());
+      checkAccountBidderLocation(od);
+    });
+  });
+
+  unittest.group("obj-schema-Account", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccount();
+      var od = new api.Account.fromJson(o.toJson());
+      checkAccount(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountsList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountsList();
+      var od = new api.AccountsList.fromJson(o.toJson());
+      checkAccountsList(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddOrderDealsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddOrderDealsRequest();
+      var od = new api.AddOrderDealsRequest.fromJson(o.toJson());
+      checkAddOrderDealsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddOrderDealsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddOrderDealsResponse();
+      var od = new api.AddOrderDealsResponse.fromJson(o.toJson());
+      checkAddOrderDealsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddOrderNotesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddOrderNotesRequest();
+      var od = new api.AddOrderNotesRequest.fromJson(o.toJson());
+      checkAddOrderNotesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddOrderNotesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddOrderNotesResponse();
+      var od = new api.AddOrderNotesResponse.fromJson(o.toJson());
+      checkAddOrderNotesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-BillingInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBillingInfo();
+      var od = new api.BillingInfo.fromJson(o.toJson());
+      checkBillingInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-BillingInfoList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBillingInfoList();
+      var od = new api.BillingInfoList.fromJson(o.toJson());
+      checkBillingInfoList(od);
+    });
+  });
+
+  unittest.group("obj-schema-Budget", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBudget();
+      var od = new api.Budget.fromJson(o.toJson());
+      checkBudget(od);
+    });
+  });
+
+  unittest.group("obj-schema-Buyer", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBuyer();
+      var od = new api.Buyer.fromJson(o.toJson());
+      checkBuyer(od);
+    });
+  });
+
+  unittest.group("obj-schema-ContactInformation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContactInformation();
+      var od = new api.ContactInformation.fromJson(o.toJson());
+      checkContactInformation(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateOrdersRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateOrdersRequest();
+      var od = new api.CreateOrdersRequest.fromJson(o.toJson());
+      checkCreateOrdersRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateOrdersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateOrdersResponse();
+      var od = new api.CreateOrdersResponse.fromJson(o.toJson());
+      checkCreateOrdersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeCorrectionsContexts", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeCorrectionsContexts();
+      var od = new api.CreativeCorrectionsContexts.fromJson(o.toJson());
+      checkCreativeCorrectionsContexts(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeCorrections", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeCorrections();
+      var od = new api.CreativeCorrections.fromJson(o.toJson());
+      checkCreativeCorrections(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeFilteringReasonsReasons", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeFilteringReasonsReasons();
+      var od = new api.CreativeFilteringReasonsReasons.fromJson(o.toJson());
+      checkCreativeFilteringReasonsReasons(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeFilteringReasons", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeFilteringReasons();
+      var od = new api.CreativeFilteringReasons.fromJson(o.toJson());
+      checkCreativeFilteringReasons(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeNativeAdAppIcon", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeNativeAdAppIcon();
+      var od = new api.CreativeNativeAdAppIcon.fromJson(o.toJson());
+      checkCreativeNativeAdAppIcon(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeNativeAdImage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeNativeAdImage();
+      var od = new api.CreativeNativeAdImage.fromJson(o.toJson());
+      checkCreativeNativeAdImage(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeNativeAdLogo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeNativeAdLogo();
+      var od = new api.CreativeNativeAdLogo.fromJson(o.toJson());
+      checkCreativeNativeAdLogo(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeNativeAd", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeNativeAd();
+      var od = new api.CreativeNativeAd.fromJson(o.toJson());
+      checkCreativeNativeAd(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeServingRestrictionsContexts", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeServingRestrictionsContexts();
+      var od = new api.CreativeServingRestrictionsContexts.fromJson(o.toJson());
+      checkCreativeServingRestrictionsContexts(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeServingRestrictionsDisapprovalReasons",
+      () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeServingRestrictionsDisapprovalReasons();
+      var od = new api.CreativeServingRestrictionsDisapprovalReasons.fromJson(
+          o.toJson());
+      checkCreativeServingRestrictionsDisapprovalReasons(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeServingRestrictions", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeServingRestrictions();
+      var od = new api.CreativeServingRestrictions.fromJson(o.toJson());
+      checkCreativeServingRestrictions(od);
+    });
+  });
+
+  unittest.group("obj-schema-Creative", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreative();
+      var od = new api.Creative.fromJson(o.toJson());
+      checkCreative(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeDealIdsDealStatuses", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeDealIdsDealStatuses();
+      var od = new api.CreativeDealIdsDealStatuses.fromJson(o.toJson());
+      checkCreativeDealIdsDealStatuses(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeDealIds", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeDealIds();
+      var od = new api.CreativeDealIds.fromJson(o.toJson());
+      checkCreativeDealIds(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativesList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativesList();
+      var od = new api.CreativesList.fromJson(o.toJson());
+      checkCreativesList(od);
+    });
+  });
+
+  unittest.group("obj-schema-DealServingMetadata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDealServingMetadata();
+      var od = new api.DealServingMetadata.fromJson(o.toJson());
+      checkDealServingMetadata(od);
+    });
+  });
+
+  unittest.group("obj-schema-DealServingMetadataDealPauseStatus", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDealServingMetadataDealPauseStatus();
+      var od = new api.DealServingMetadataDealPauseStatus.fromJson(o.toJson());
+      checkDealServingMetadataDealPauseStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-DealTerms", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDealTerms();
+      var od = new api.DealTerms.fromJson(o.toJson());
+      checkDealTerms(od);
+    });
+  });
+
+  unittest.group("obj-schema-DealTermsGuaranteedFixedPriceTerms", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDealTermsGuaranteedFixedPriceTerms();
+      var od = new api.DealTermsGuaranteedFixedPriceTerms.fromJson(o.toJson());
+      checkDealTermsGuaranteedFixedPriceTerms(od);
+    });
+  });
+
+  unittest.group("obj-schema-DealTermsGuaranteedFixedPriceTermsBillingInfo",
+      () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDealTermsGuaranteedFixedPriceTermsBillingInfo();
+      var od = new api.DealTermsGuaranteedFixedPriceTermsBillingInfo.fromJson(
+          o.toJson());
+      checkDealTermsGuaranteedFixedPriceTermsBillingInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-DealTermsNonGuaranteedAuctionTerms", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDealTermsNonGuaranteedAuctionTerms();
+      var od = new api.DealTermsNonGuaranteedAuctionTerms.fromJson(o.toJson());
+      checkDealTermsNonGuaranteedAuctionTerms(od);
+    });
+  });
+
+  unittest.group("obj-schema-DealTermsNonGuaranteedFixedPriceTerms", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDealTermsNonGuaranteedFixedPriceTerms();
+      var od =
+          new api.DealTermsNonGuaranteedFixedPriceTerms.fromJson(o.toJson());
+      checkDealTermsNonGuaranteedFixedPriceTerms(od);
+    });
+  });
+
+  unittest.group("obj-schema-DealTermsRubiconNonGuaranteedTerms", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDealTermsRubiconNonGuaranteedTerms();
+      var od = new api.DealTermsRubiconNonGuaranteedTerms.fromJson(o.toJson());
+      checkDealTermsRubiconNonGuaranteedTerms(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeleteOrderDealsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteOrderDealsRequest();
+      var od = new api.DeleteOrderDealsRequest.fromJson(o.toJson());
+      checkDeleteOrderDealsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeleteOrderDealsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteOrderDealsResponse();
+      var od = new api.DeleteOrderDealsResponse.fromJson(o.toJson());
+      checkDeleteOrderDealsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeliveryControl", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeliveryControl();
+      var od = new api.DeliveryControl.fromJson(o.toJson());
+      checkDeliveryControl(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeliveryControlFrequencyCap", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeliveryControlFrequencyCap();
+      var od = new api.DeliveryControlFrequencyCap.fromJson(o.toJson());
+      checkDeliveryControlFrequencyCap(od);
+    });
+  });
+
+  unittest.group("obj-schema-Dimension", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDimension();
+      var od = new api.Dimension.fromJson(o.toJson());
+      checkDimension(od);
+    });
+  });
+
+  unittest.group("obj-schema-DimensionDimensionValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDimensionDimensionValue();
+      var od = new api.DimensionDimensionValue.fromJson(o.toJson());
+      checkDimensionDimensionValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-EditAllOrderDealsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEditAllOrderDealsRequest();
+      var od = new api.EditAllOrderDealsRequest.fromJson(o.toJson());
+      checkEditAllOrderDealsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-EditAllOrderDealsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEditAllOrderDealsResponse();
+      var od = new api.EditAllOrderDealsResponse.fromJson(o.toJson());
+      checkEditAllOrderDealsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-GetOffersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGetOffersResponse();
+      var od = new api.GetOffersResponse.fromJson(o.toJson());
+      checkGetOffersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-GetOrderDealsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGetOrderDealsResponse();
+      var od = new api.GetOrderDealsResponse.fromJson(o.toJson());
+      checkGetOrderDealsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-GetOrderNotesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGetOrderNotesResponse();
+      var od = new api.GetOrderNotesResponse.fromJson(o.toJson());
+      checkGetOrderNotesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-GetOrdersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGetOrdersResponse();
+      var od = new api.GetOrdersResponse.fromJson(o.toJson());
+      checkGetOrdersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-GetPublisherProfilesByAccountIdResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGetPublisherProfilesByAccountIdResponse();
+      var od =
+          new api.GetPublisherProfilesByAccountIdResponse.fromJson(o.toJson());
+      checkGetPublisherProfilesByAccountIdResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-MarketplaceDeal", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMarketplaceDeal();
+      var od = new api.MarketplaceDeal.fromJson(o.toJson());
+      checkMarketplaceDeal(od);
+    });
+  });
+
+  unittest.group("obj-schema-MarketplaceDealParty", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMarketplaceDealParty();
+      var od = new api.MarketplaceDealParty.fromJson(o.toJson());
+      checkMarketplaceDealParty(od);
+    });
+  });
+
+  unittest.group("obj-schema-MarketplaceLabel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMarketplaceLabel();
+      var od = new api.MarketplaceLabel.fromJson(o.toJson());
+      checkMarketplaceLabel(od);
+    });
+  });
+
+  unittest.group("obj-schema-MarketplaceNote", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMarketplaceNote();
+      var od = new api.MarketplaceNote.fromJson(o.toJson());
+      checkMarketplaceNote(od);
+    });
+  });
+
+  unittest.group("obj-schema-PerformanceReport", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPerformanceReport();
+      var od = new api.PerformanceReport.fromJson(o.toJson());
+      checkPerformanceReport(od);
+    });
+  });
+
+  unittest.group("obj-schema-PerformanceReportList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPerformanceReportList();
+      var od = new api.PerformanceReportList.fromJson(o.toJson());
+      checkPerformanceReportList(od);
+    });
+  });
+
+  unittest.group("obj-schema-PretargetingConfigDimensions", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPretargetingConfigDimensions();
+      var od = new api.PretargetingConfigDimensions.fromJson(o.toJson());
+      checkPretargetingConfigDimensions(od);
+    });
+  });
+
+  unittest.group("obj-schema-PretargetingConfigExcludedPlacements", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPretargetingConfigExcludedPlacements();
+      var od =
+          new api.PretargetingConfigExcludedPlacements.fromJson(o.toJson());
+      checkPretargetingConfigExcludedPlacements(od);
+    });
+  });
+
+  unittest.group("obj-schema-PretargetingConfigPlacements", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPretargetingConfigPlacements();
+      var od = new api.PretargetingConfigPlacements.fromJson(o.toJson());
+      checkPretargetingConfigPlacements(od);
+    });
+  });
+
+  unittest.group("obj-schema-PretargetingConfigVideoPlayerSizes", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPretargetingConfigVideoPlayerSizes();
+      var od = new api.PretargetingConfigVideoPlayerSizes.fromJson(o.toJson());
+      checkPretargetingConfigVideoPlayerSizes(od);
+    });
+  });
+
+  unittest.group("obj-schema-PretargetingConfig", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPretargetingConfig();
+      var od = new api.PretargetingConfig.fromJson(o.toJson());
+      checkPretargetingConfig(od);
+    });
+  });
+
+  unittest.group("obj-schema-PretargetingConfigList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPretargetingConfigList();
+      var od = new api.PretargetingConfigList.fromJson(o.toJson());
+      checkPretargetingConfigList(od);
+    });
+  });
+
+  unittest.group("obj-schema-Price", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPrice();
+      var od = new api.Price.fromJson(o.toJson());
+      checkPrice(od);
+    });
+  });
+
+  unittest.group("obj-schema-PricePerBuyer", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPricePerBuyer();
+      var od = new api.PricePerBuyer.fromJson(o.toJson());
+      checkPricePerBuyer(od);
+    });
+  });
+
+  unittest.group("obj-schema-PrivateData", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPrivateData();
+      var od = new api.PrivateData.fromJson(o.toJson());
+      checkPrivateData(od);
+    });
+  });
+
+  unittest.group("obj-schema-Product", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProduct();
+      var od = new api.Product.fromJson(o.toJson());
+      checkProduct(od);
+    });
+  });
+
+  unittest.group("obj-schema-Proposal", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProposal();
+      var od = new api.Proposal.fromJson(o.toJson());
+      checkProposal(od);
+    });
+  });
+
+  unittest.group("obj-schema-PublisherProfileApiProto", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPublisherProfileApiProto();
+      var od = new api.PublisherProfileApiProto.fromJson(o.toJson());
+      checkPublisherProfileApiProto(od);
+    });
+  });
+
+  unittest.group("obj-schema-PublisherProvidedForecast", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPublisherProvidedForecast();
+      var od = new api.PublisherProvidedForecast.fromJson(o.toJson());
+      checkPublisherProvidedForecast(od);
+    });
+  });
+
+  unittest.group("obj-schema-Seller", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSeller();
+      var od = new api.Seller.fromJson(o.toJson());
+      checkSeller(od);
+    });
+  });
+
+  unittest.group("obj-schema-SharedTargeting", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSharedTargeting();
+      var od = new api.SharedTargeting.fromJson(o.toJson());
+      checkSharedTargeting(od);
+    });
+  });
+
+  unittest.group("obj-schema-TargetingValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTargetingValue();
+      var od = new api.TargetingValue.fromJson(o.toJson());
+      checkTargetingValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-TargetingValueCreativeSize", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTargetingValueCreativeSize();
+      var od = new api.TargetingValueCreativeSize.fromJson(o.toJson());
+      checkTargetingValueCreativeSize(od);
+    });
+  });
+
+  unittest.group("obj-schema-TargetingValueDayPartTargeting", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTargetingValueDayPartTargeting();
+      var od = new api.TargetingValueDayPartTargeting.fromJson(o.toJson());
+      checkTargetingValueDayPartTargeting(od);
+    });
+  });
+
+  unittest.group("obj-schema-TargetingValueDayPartTargetingDayPart", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTargetingValueDayPartTargetingDayPart();
+      var od =
+          new api.TargetingValueDayPartTargetingDayPart.fromJson(o.toJson());
+      checkTargetingValueDayPartTargetingDayPart(od);
+    });
+  });
+
+  unittest.group("obj-schema-TargetingValueSize", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTargetingValueSize();
+      var od = new api.TargetingValueSize.fromJson(o.toJson());
+      checkTargetingValueSize(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdatePrivateAuctionProposalRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdatePrivateAuctionProposalRequest();
+      var od = new api.UpdatePrivateAuctionProposalRequest.fromJson(o.toJson());
+      checkUpdatePrivateAuctionProposalRequest(od);
+    });
+  });
+
+  unittest.group("resource-AccountsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.AdexchangebuyerApi(mock).accounts;
+      var arg_id = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.AdexchangebuyerApi(mock).accounts;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("accounts"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountsList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountsList response) {
+        checkAccountsList(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.AdexchangebuyerApi(mock).accounts;
+      var arg_request = buildAccount();
+      var arg_id = 42;
+      var arg_confirmUnsafeAccountChange = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Account.fromJson(json);
+        checkAccount(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["confirmUnsafeAccountChange"].first,
+            unittest.equals("$arg_confirmUnsafeAccountChange"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_id,
+              confirmUnsafeAccountChange: arg_confirmUnsafeAccountChange,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.AdexchangebuyerApi(mock).accounts;
+      var arg_request = buildAccount();
+      var arg_id = 42;
+      var arg_confirmUnsafeAccountChange = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Account.fromJson(json);
+        checkAccount(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["confirmUnsafeAccountChange"].first,
+            unittest.equals("$arg_confirmUnsafeAccountChange"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_id,
+              confirmUnsafeAccountChange: arg_confirmUnsafeAccountChange,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BillingInfoResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.BillingInfoResourceApi res =
+          new api.AdexchangebuyerApi(mock).billingInfo;
+      var arg_accountId = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("billinginfo/"));
+        pathOffset += 12;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBillingInfo());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BillingInfo response) {
+        checkBillingInfo(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BillingInfoResourceApi res =
+          new api.AdexchangebuyerApi(mock).billingInfo;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("billinginfo"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBillingInfoList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BillingInfoList response) {
+        checkBillingInfoList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BudgetResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.BudgetResourceApi res = new api.AdexchangebuyerApi(mock).budget;
+      var arg_accountId = "foo";
+      var arg_billingId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("billinginfo/"));
+        pathOffset += 12;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_billingId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBudget());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_billingId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Budget response) {
+        checkBudget(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.BudgetResourceApi res = new api.AdexchangebuyerApi(mock).budget;
+      var arg_request = buildBudget();
+      var arg_accountId = "foo";
+      var arg_billingId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Budget.fromJson(json);
+        checkBudget(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("billinginfo/"));
+        pathOffset += 12;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_billingId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBudget());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_accountId, arg_billingId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Budget response) {
+        checkBudget(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.BudgetResourceApi res = new api.AdexchangebuyerApi(mock).budget;
+      var arg_request = buildBudget();
+      var arg_accountId = "foo";
+      var arg_billingId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Budget.fromJson(json);
+        checkBudget(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("billinginfo/"));
+        pathOffset += 12;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_billingId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBudget());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_accountId, arg_billingId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Budget response) {
+        checkBudget(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CreativesResourceApi", () {
+    unittest.test("method--addDeal", () {
+      var mock = new HttpServerMock();
+      api.CreativesResourceApi res = new api.AdexchangebuyerApi(mock).creatives;
+      var arg_accountId = 42;
+      var arg_buyerCreativeId = "foo";
+      var arg_dealId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("creatives/"));
+        pathOffset += 10;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        index = path.indexOf("/addDeal/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_buyerCreativeId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/addDeal/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_dealId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .addDeal(arg_accountId, arg_buyerCreativeId, arg_dealId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CreativesResourceApi res = new api.AdexchangebuyerApi(mock).creatives;
+      var arg_accountId = 42;
+      var arg_buyerCreativeId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("creatives/"));
+        pathOffset += 10;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_buyerCreativeId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreative());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_buyerCreativeId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Creative response) {
+        checkCreative(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.CreativesResourceApi res = new api.AdexchangebuyerApi(mock).creatives;
+      var arg_request = buildCreative();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Creative.fromJson(json);
+        checkCreative(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("creatives"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreative());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Creative response) {
+        checkCreative(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CreativesResourceApi res = new api.AdexchangebuyerApi(mock).creatives;
+      var arg_accountId = buildUnnamed2155();
+      var arg_buyerCreativeId = buildUnnamed2156();
+      var arg_dealsStatusFilter = "foo";
+      var arg_maxResults = 42;
+      var arg_openAuctionStatusFilter = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("creatives"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["accountId"].map(core.int.parse).toList(),
+            unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["buyerCreativeId"], unittest.equals(arg_buyerCreativeId));
+        unittest.expect(queryMap["dealsStatusFilter"].first,
+            unittest.equals(arg_dealsStatusFilter));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["openAuctionStatusFilter"].first,
+            unittest.equals(arg_openAuctionStatusFilter));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativesList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              accountId: arg_accountId,
+              buyerCreativeId: arg_buyerCreativeId,
+              dealsStatusFilter: arg_dealsStatusFilter,
+              maxResults: arg_maxResults,
+              openAuctionStatusFilter: arg_openAuctionStatusFilter,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativesList response) {
+        checkCreativesList(response);
+      })));
+    });
+
+    unittest.test("method--listDeals", () {
+      var mock = new HttpServerMock();
+      api.CreativesResourceApi res = new api.AdexchangebuyerApi(mock).creatives;
+      var arg_accountId = 42;
+      var arg_buyerCreativeId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("creatives/"));
+        pathOffset += 10;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        index = path.indexOf("/listDeals", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_buyerCreativeId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/listDeals"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeDealIds());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .listDeals(arg_accountId, arg_buyerCreativeId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativeDealIds response) {
+        checkCreativeDealIds(response);
+      })));
+    });
+
+    unittest.test("method--removeDeal", () {
+      var mock = new HttpServerMock();
+      api.CreativesResourceApi res = new api.AdexchangebuyerApi(mock).creatives;
+      var arg_accountId = 42;
+      var arg_buyerCreativeId = "foo";
+      var arg_dealId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("creatives/"));
+        pathOffset += 10;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        index = path.indexOf("/removeDeal/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_buyerCreativeId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/removeDeal/"));
+        pathOffset += 12;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_dealId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .removeDeal(arg_accountId, arg_buyerCreativeId, arg_dealId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+  });
+
+  unittest.group("resource-MarketplacedealsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.MarketplacedealsResourceApi res =
+          new api.AdexchangebuyerApi(mock).marketplacedeals;
+      var arg_request = buildDeleteOrderDealsRequest();
+      var arg_proposalId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.DeleteOrderDealsRequest.fromJson(json);
+        checkDeleteOrderDealsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("proposals/"));
+        pathOffset += 10;
+        index = path.indexOf("/deals/delete", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_proposalId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/deals/delete"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDeleteOrderDealsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_request, arg_proposalId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DeleteOrderDealsResponse response) {
+        checkDeleteOrderDealsResponse(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.MarketplacedealsResourceApi res =
+          new api.AdexchangebuyerApi(mock).marketplacedeals;
+      var arg_request = buildAddOrderDealsRequest();
+      var arg_proposalId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AddOrderDealsRequest.fromJson(json);
+        checkAddOrderDealsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("proposals/"));
+        pathOffset += 10;
+        index = path.indexOf("/deals/insert", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_proposalId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/deals/insert"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAddOrderDealsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_proposalId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AddOrderDealsResponse response) {
+        checkAddOrderDealsResponse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.MarketplacedealsResourceApi res =
+          new api.AdexchangebuyerApi(mock).marketplacedeals;
+      var arg_proposalId = "foo";
+      var arg_pqlQuery = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("proposals/"));
+        pathOffset += 10;
+        index = path.indexOf("/deals", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_proposalId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/deals"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pqlQuery"].first, unittest.equals(arg_pqlQuery));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGetOrderDealsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_proposalId, pqlQuery: arg_pqlQuery, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.GetOrderDealsResponse response) {
+        checkGetOrderDealsResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.MarketplacedealsResourceApi res =
+          new api.AdexchangebuyerApi(mock).marketplacedeals;
+      var arg_request = buildEditAllOrderDealsRequest();
+      var arg_proposalId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.EditAllOrderDealsRequest.fromJson(json);
+        checkEditAllOrderDealsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("proposals/"));
+        pathOffset += 10;
+        index = path.indexOf("/deals/update", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_proposalId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/deals/update"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEditAllOrderDealsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.update(arg_request, arg_proposalId, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.EditAllOrderDealsResponse response) {
+        checkEditAllOrderDealsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-MarketplacenotesResourceApi", () {
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.MarketplacenotesResourceApi res =
+          new api.AdexchangebuyerApi(mock).marketplacenotes;
+      var arg_request = buildAddOrderNotesRequest();
+      var arg_proposalId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AddOrderNotesRequest.fromJson(json);
+        checkAddOrderNotesRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("proposals/"));
+        pathOffset += 10;
+        index = path.indexOf("/notes/insert", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_proposalId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/notes/insert"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAddOrderNotesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_proposalId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AddOrderNotesResponse response) {
+        checkAddOrderNotesResponse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.MarketplacenotesResourceApi res =
+          new api.AdexchangebuyerApi(mock).marketplacenotes;
+      var arg_proposalId = "foo";
+      var arg_pqlQuery = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("proposals/"));
+        pathOffset += 10;
+        index = path.indexOf("/notes", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_proposalId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/notes"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pqlQuery"].first, unittest.equals(arg_pqlQuery));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGetOrderNotesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_proposalId, pqlQuery: arg_pqlQuery, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.GetOrderNotesResponse response) {
+        checkGetOrderNotesResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-MarketplaceprivateauctionResourceApi", () {
+    unittest.test("method--updateproposal", () {
+      var mock = new HttpServerMock();
+      api.MarketplaceprivateauctionResourceApi res =
+          new api.AdexchangebuyerApi(mock).marketplaceprivateauction;
+      var arg_request = buildUpdatePrivateAuctionProposalRequest();
+      var arg_privateAuctionId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UpdatePrivateAuctionProposalRequest.fromJson(json);
+        checkUpdatePrivateAuctionProposalRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("privateauction/"));
+        pathOffset += 15;
+        index = path.indexOf("/updateproposal", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_privateAuctionId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/updateproposal"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .updateproposal(arg_request, arg_privateAuctionId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+  });
+
+  unittest.group("resource-PerformanceReportResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PerformanceReportResourceApi res =
+          new api.AdexchangebuyerApi(mock).performanceReport;
+      var arg_accountId = "foo";
+      var arg_endDateTime = "foo";
+      var arg_startDateTime = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("performancereport"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["endDateTime"].first, unittest.equals(arg_endDateTime));
+        unittest.expect(queryMap["startDateTime"].first,
+            unittest.equals(arg_startDateTime));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPerformanceReportList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_endDateTime, arg_startDateTime,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PerformanceReportList response) {
+        checkPerformanceReportList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PretargetingConfigResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.PretargetingConfigResourceApi res =
+          new api.AdexchangebuyerApi(mock).pretargetingConfig;
+      var arg_accountId = "foo";
+      var arg_configId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("pretargetingconfigs/"));
+        pathOffset += 20;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_configId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_accountId, arg_configId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PretargetingConfigResourceApi res =
+          new api.AdexchangebuyerApi(mock).pretargetingConfig;
+      var arg_accountId = "foo";
+      var arg_configId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("pretargetingconfigs/"));
+        pathOffset += 20;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_configId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPretargetingConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_configId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PretargetingConfig response) {
+        checkPretargetingConfig(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.PretargetingConfigResourceApi res =
+          new api.AdexchangebuyerApi(mock).pretargetingConfig;
+      var arg_request = buildPretargetingConfig();
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PretargetingConfig.fromJson(json);
+        checkPretargetingConfig(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("pretargetingconfigs/"));
+        pathOffset += 20;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPretargetingConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PretargetingConfig response) {
+        checkPretargetingConfig(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PretargetingConfigResourceApi res =
+          new api.AdexchangebuyerApi(mock).pretargetingConfig;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("pretargetingconfigs/"));
+        pathOffset += 20;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPretargetingConfigList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PretargetingConfigList response) {
+        checkPretargetingConfigList(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.PretargetingConfigResourceApi res =
+          new api.AdexchangebuyerApi(mock).pretargetingConfig;
+      var arg_request = buildPretargetingConfig();
+      var arg_accountId = "foo";
+      var arg_configId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PretargetingConfig.fromJson(json);
+        checkPretargetingConfig(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("pretargetingconfigs/"));
+        pathOffset += 20;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_configId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPretargetingConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_accountId, arg_configId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PretargetingConfig response) {
+        checkPretargetingConfig(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.PretargetingConfigResourceApi res =
+          new api.AdexchangebuyerApi(mock).pretargetingConfig;
+      var arg_request = buildPretargetingConfig();
+      var arg_accountId = "foo";
+      var arg_configId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PretargetingConfig.fromJson(json);
+        checkPretargetingConfig(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("pretargetingconfigs/"));
+        pathOffset += 20;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_configId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPretargetingConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_accountId, arg_configId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PretargetingConfig response) {
+        checkPretargetingConfig(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProductsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProductsResourceApi res = new api.AdexchangebuyerApi(mock).products;
+      var arg_productId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("products/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_productId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProduct());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_productId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Product response) {
+        checkProduct(response);
+      })));
+    });
+
+    unittest.test("method--search", () {
+      var mock = new HttpServerMock();
+      api.ProductsResourceApi res = new api.AdexchangebuyerApi(mock).products;
+      var arg_pqlQuery = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("products/search"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pqlQuery"].first, unittest.equals(arg_pqlQuery));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGetOffersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .search(pqlQuery: arg_pqlQuery, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.GetOffersResponse response) {
+        checkGetOffersResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProposalsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProposalsResourceApi res = new api.AdexchangebuyerApi(mock).proposals;
+      var arg_proposalId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("proposals/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_proposalId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProposal());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_proposalId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Proposal response) {
+        checkProposal(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.ProposalsResourceApi res = new api.AdexchangebuyerApi(mock).proposals;
+      var arg_request = buildCreateOrdersRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreateOrdersRequest.fromJson(json);
+        checkCreateOrdersRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("proposals/insert"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreateOrdersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreateOrdersResponse response) {
+        checkCreateOrdersResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ProposalsResourceApi res = new api.AdexchangebuyerApi(mock).proposals;
+      var arg_request = buildProposal();
+      var arg_proposalId = "foo";
+      var arg_revisionNumber = "foo";
+      var arg_updateAction = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Proposal.fromJson(json);
+        checkProposal(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("proposals/"));
+        pathOffset += 10;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_proposalId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_revisionNumber"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_updateAction"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProposal());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(
+              arg_request, arg_proposalId, arg_revisionNumber, arg_updateAction,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Proposal response) {
+        checkProposal(response);
+      })));
+    });
+
+    unittest.test("method--search", () {
+      var mock = new HttpServerMock();
+      api.ProposalsResourceApi res = new api.AdexchangebuyerApi(mock).proposals;
+      var arg_pqlQuery = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("proposals/search"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pqlQuery"].first, unittest.equals(arg_pqlQuery));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGetOrdersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .search(pqlQuery: arg_pqlQuery, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.GetOrdersResponse response) {
+        checkGetOrdersResponse(response);
+      })));
+    });
+
+    unittest.test("method--setupcomplete", () {
+      var mock = new HttpServerMock();
+      api.ProposalsResourceApi res = new api.AdexchangebuyerApi(mock).proposals;
+      var arg_proposalId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("proposals/"));
+        pathOffset += 10;
+        index = path.indexOf("/setupcomplete", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_proposalId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/setupcomplete"));
+        pathOffset += 14;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .setupcomplete(arg_proposalId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.ProposalsResourceApi res = new api.AdexchangebuyerApi(mock).proposals;
+      var arg_request = buildProposal();
+      var arg_proposalId = "foo";
+      var arg_revisionNumber = "foo";
+      var arg_updateAction = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Proposal.fromJson(json);
+        checkProposal(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("proposals/"));
+        pathOffset += 10;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_proposalId"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        index = path.indexOf("/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_revisionNumber"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_updateAction"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProposal());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(
+              arg_request, arg_proposalId, arg_revisionNumber, arg_updateAction,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Proposal response) {
+        checkProposal(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PubprofilesResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PubprofilesResourceApi res =
+          new api.AdexchangebuyerApi(mock).pubprofiles;
+      var arg_accountId = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("adexchangebuyer/v1.4/"));
+        pathOffset += 21;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("publisher/"));
+        pathOffset += 10;
+        index = path.indexOf("/profiles", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/profiles"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildGetPublisherProfilesByAccountIdResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.list(arg_accountId, $fields: arg_$fields).then(unittest.expectAsync1(
+          ((api.GetPublisherProfilesByAccountIdResponse response) {
+        checkGetPublisherProfilesByAccountIdResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/adexchangeseller/v1_1_test.dart b/generated/googleapis/test/adexchangeseller/v1_1_test.dart
new file mode 100644
index 0000000..7819e00
--- /dev/null
+++ b/generated/googleapis/test/adexchangeseller/v1_1_test.dart
@@ -0,0 +1,2170 @@
+library googleapis.adexchangeseller.v1_1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/adexchangeseller/v1_1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAccount = 0;
+buildAccount() {
+  var o = new api.Account();
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterAccount--;
+  return o;
+}
+
+checkAccount(api.Account o) {
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterAccount--;
+}
+
+core.int buildCounterAdClient = 0;
+buildAdClient() {
+  var o = new api.AdClient();
+  buildCounterAdClient++;
+  if (buildCounterAdClient < 3) {
+    o.arcOptIn = true;
+    o.id = "foo";
+    o.kind = "foo";
+    o.productCode = "foo";
+    o.supportsReporting = true;
+  }
+  buildCounterAdClient--;
+  return o;
+}
+
+checkAdClient(api.AdClient o) {
+  buildCounterAdClient++;
+  if (buildCounterAdClient < 3) {
+    unittest.expect(o.arcOptIn, unittest.isTrue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.productCode, unittest.equals('foo'));
+    unittest.expect(o.supportsReporting, unittest.isTrue);
+  }
+  buildCounterAdClient--;
+}
+
+buildUnnamed279() {
+  var o = new core.List<api.AdClient>();
+  o.add(buildAdClient());
+  o.add(buildAdClient());
+  return o;
+}
+
+checkUnnamed279(core.List<api.AdClient> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAdClient(o[0]);
+  checkAdClient(o[1]);
+}
+
+core.int buildCounterAdClients = 0;
+buildAdClients() {
+  var o = new api.AdClients();
+  buildCounterAdClients++;
+  if (buildCounterAdClients < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed279();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterAdClients--;
+  return o;
+}
+
+checkAdClients(api.AdClients o) {
+  buildCounterAdClients++;
+  if (buildCounterAdClients < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed279(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterAdClients--;
+}
+
+core.int buildCounterAdUnit = 0;
+buildAdUnit() {
+  var o = new api.AdUnit();
+  buildCounterAdUnit++;
+  if (buildCounterAdUnit < 3) {
+    o.code = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.status = "foo";
+  }
+  buildCounterAdUnit--;
+  return o;
+}
+
+checkAdUnit(api.AdUnit o) {
+  buildCounterAdUnit++;
+  if (buildCounterAdUnit < 3) {
+    unittest.expect(o.code, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+  }
+  buildCounterAdUnit--;
+}
+
+buildUnnamed280() {
+  var o = new core.List<api.AdUnit>();
+  o.add(buildAdUnit());
+  o.add(buildAdUnit());
+  return o;
+}
+
+checkUnnamed280(core.List<api.AdUnit> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAdUnit(o[0]);
+  checkAdUnit(o[1]);
+}
+
+core.int buildCounterAdUnits = 0;
+buildAdUnits() {
+  var o = new api.AdUnits();
+  buildCounterAdUnits++;
+  if (buildCounterAdUnits < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed280();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterAdUnits--;
+  return o;
+}
+
+checkAdUnits(api.AdUnits o) {
+  buildCounterAdUnits++;
+  if (buildCounterAdUnits < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed280(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterAdUnits--;
+}
+
+core.int buildCounterAlert = 0;
+buildAlert() {
+  var o = new api.Alert();
+  buildCounterAlert++;
+  if (buildCounterAlert < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.message = "foo";
+    o.severity = "foo";
+    o.type = "foo";
+  }
+  buildCounterAlert--;
+  return o;
+}
+
+checkAlert(api.Alert o) {
+  buildCounterAlert++;
+  if (buildCounterAlert < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.message, unittest.equals('foo'));
+    unittest.expect(o.severity, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterAlert--;
+}
+
+buildUnnamed281() {
+  var o = new core.List<api.Alert>();
+  o.add(buildAlert());
+  o.add(buildAlert());
+  return o;
+}
+
+checkUnnamed281(core.List<api.Alert> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAlert(o[0]);
+  checkAlert(o[1]);
+}
+
+core.int buildCounterAlerts = 0;
+buildAlerts() {
+  var o = new api.Alerts();
+  buildCounterAlerts++;
+  if (buildCounterAlerts < 3) {
+    o.items = buildUnnamed281();
+    o.kind = "foo";
+  }
+  buildCounterAlerts--;
+  return o;
+}
+
+checkAlerts(api.Alerts o) {
+  buildCounterAlerts++;
+  if (buildCounterAlerts < 3) {
+    checkUnnamed281(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAlerts--;
+}
+
+core.int buildCounterCustomChannelTargetingInfo = 0;
+buildCustomChannelTargetingInfo() {
+  var o = new api.CustomChannelTargetingInfo();
+  buildCounterCustomChannelTargetingInfo++;
+  if (buildCounterCustomChannelTargetingInfo < 3) {
+    o.adsAppearOn = "foo";
+    o.description = "foo";
+    o.location = "foo";
+    o.siteLanguage = "foo";
+  }
+  buildCounterCustomChannelTargetingInfo--;
+  return o;
+}
+
+checkCustomChannelTargetingInfo(api.CustomChannelTargetingInfo o) {
+  buildCounterCustomChannelTargetingInfo++;
+  if (buildCounterCustomChannelTargetingInfo < 3) {
+    unittest.expect(o.adsAppearOn, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    unittest.expect(o.siteLanguage, unittest.equals('foo'));
+  }
+  buildCounterCustomChannelTargetingInfo--;
+}
+
+core.int buildCounterCustomChannel = 0;
+buildCustomChannel() {
+  var o = new api.CustomChannel();
+  buildCounterCustomChannel++;
+  if (buildCounterCustomChannel < 3) {
+    o.code = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.targetingInfo = buildCustomChannelTargetingInfo();
+  }
+  buildCounterCustomChannel--;
+  return o;
+}
+
+checkCustomChannel(api.CustomChannel o) {
+  buildCounterCustomChannel++;
+  if (buildCounterCustomChannel < 3) {
+    unittest.expect(o.code, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkCustomChannelTargetingInfo(o.targetingInfo);
+  }
+  buildCounterCustomChannel--;
+}
+
+buildUnnamed282() {
+  var o = new core.List<api.CustomChannel>();
+  o.add(buildCustomChannel());
+  o.add(buildCustomChannel());
+  return o;
+}
+
+checkUnnamed282(core.List<api.CustomChannel> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCustomChannel(o[0]);
+  checkCustomChannel(o[1]);
+}
+
+core.int buildCounterCustomChannels = 0;
+buildCustomChannels() {
+  var o = new api.CustomChannels();
+  buildCounterCustomChannels++;
+  if (buildCounterCustomChannels < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed282();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterCustomChannels--;
+  return o;
+}
+
+checkCustomChannels(api.CustomChannels o) {
+  buildCounterCustomChannels++;
+  if (buildCounterCustomChannels < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed282(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterCustomChannels--;
+}
+
+buildUnnamed283() {
+  var o = new core.List<api.ReportingMetadataEntry>();
+  o.add(buildReportingMetadataEntry());
+  o.add(buildReportingMetadataEntry());
+  return o;
+}
+
+checkUnnamed283(core.List<api.ReportingMetadataEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkReportingMetadataEntry(o[0]);
+  checkReportingMetadataEntry(o[1]);
+}
+
+core.int buildCounterMetadata = 0;
+buildMetadata() {
+  var o = new api.Metadata();
+  buildCounterMetadata++;
+  if (buildCounterMetadata < 3) {
+    o.items = buildUnnamed283();
+    o.kind = "foo";
+  }
+  buildCounterMetadata--;
+  return o;
+}
+
+checkMetadata(api.Metadata o) {
+  buildCounterMetadata++;
+  if (buildCounterMetadata < 3) {
+    checkUnnamed283(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterMetadata--;
+}
+
+core.int buildCounterPreferredDeal = 0;
+buildPreferredDeal() {
+  var o = new api.PreferredDeal();
+  buildCounterPreferredDeal++;
+  if (buildCounterPreferredDeal < 3) {
+    o.advertiserName = "foo";
+    o.buyerNetworkName = "foo";
+    o.currencyCode = "foo";
+    o.endTime = "foo";
+    o.fixedCpm = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.startTime = "foo";
+  }
+  buildCounterPreferredDeal--;
+  return o;
+}
+
+checkPreferredDeal(api.PreferredDeal o) {
+  buildCounterPreferredDeal++;
+  if (buildCounterPreferredDeal < 3) {
+    unittest.expect(o.advertiserName, unittest.equals('foo'));
+    unittest.expect(o.buyerNetworkName, unittest.equals('foo'));
+    unittest.expect(o.currencyCode, unittest.equals('foo'));
+    unittest.expect(o.endTime, unittest.equals('foo'));
+    unittest.expect(o.fixedCpm, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.startTime, unittest.equals('foo'));
+  }
+  buildCounterPreferredDeal--;
+}
+
+buildUnnamed284() {
+  var o = new core.List<api.PreferredDeal>();
+  o.add(buildPreferredDeal());
+  o.add(buildPreferredDeal());
+  return o;
+}
+
+checkUnnamed284(core.List<api.PreferredDeal> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPreferredDeal(o[0]);
+  checkPreferredDeal(o[1]);
+}
+
+core.int buildCounterPreferredDeals = 0;
+buildPreferredDeals() {
+  var o = new api.PreferredDeals();
+  buildCounterPreferredDeals++;
+  if (buildCounterPreferredDeals < 3) {
+    o.items = buildUnnamed284();
+    o.kind = "foo";
+  }
+  buildCounterPreferredDeals--;
+  return o;
+}
+
+checkPreferredDeals(api.PreferredDeals o) {
+  buildCounterPreferredDeals++;
+  if (buildCounterPreferredDeals < 3) {
+    checkUnnamed284(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterPreferredDeals--;
+}
+
+buildUnnamed285() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed285(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterReportHeaders = 0;
+buildReportHeaders() {
+  var o = new api.ReportHeaders();
+  buildCounterReportHeaders++;
+  if (buildCounterReportHeaders < 3) {
+    o.currency = "foo";
+    o.name = "foo";
+    o.type = "foo";
+  }
+  buildCounterReportHeaders--;
+  return o;
+}
+
+checkReportHeaders(api.ReportHeaders o) {
+  buildCounterReportHeaders++;
+  if (buildCounterReportHeaders < 3) {
+    unittest.expect(o.currency, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterReportHeaders--;
+}
+
+buildUnnamed286() {
+  var o = new core.List<api.ReportHeaders>();
+  o.add(buildReportHeaders());
+  o.add(buildReportHeaders());
+  return o;
+}
+
+checkUnnamed286(core.List<api.ReportHeaders> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkReportHeaders(o[0]);
+  checkReportHeaders(o[1]);
+}
+
+buildUnnamed287() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed287(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed288() {
+  var o = new core.List<core.List<core.String>>();
+  o.add(buildUnnamed287());
+  o.add(buildUnnamed287());
+  return o;
+}
+
+checkUnnamed288(core.List<core.List<core.String>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed287(o[0]);
+  checkUnnamed287(o[1]);
+}
+
+buildUnnamed289() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed289(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed290() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed290(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterReport = 0;
+buildReport() {
+  var o = new api.Report();
+  buildCounterReport++;
+  if (buildCounterReport < 3) {
+    o.averages = buildUnnamed285();
+    o.headers = buildUnnamed286();
+    o.kind = "foo";
+    o.rows = buildUnnamed288();
+    o.totalMatchedRows = "foo";
+    o.totals = buildUnnamed289();
+    o.warnings = buildUnnamed290();
+  }
+  buildCounterReport--;
+  return o;
+}
+
+checkReport(api.Report o) {
+  buildCounterReport++;
+  if (buildCounterReport < 3) {
+    checkUnnamed285(o.averages);
+    checkUnnamed286(o.headers);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed288(o.rows);
+    unittest.expect(o.totalMatchedRows, unittest.equals('foo'));
+    checkUnnamed289(o.totals);
+    checkUnnamed290(o.warnings);
+  }
+  buildCounterReport--;
+}
+
+buildUnnamed291() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed291(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed292() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed292(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed293() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed293(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed294() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed294(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed295() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed295(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterReportingMetadataEntry = 0;
+buildReportingMetadataEntry() {
+  var o = new api.ReportingMetadataEntry();
+  buildCounterReportingMetadataEntry++;
+  if (buildCounterReportingMetadataEntry < 3) {
+    o.compatibleDimensions = buildUnnamed291();
+    o.compatibleMetrics = buildUnnamed292();
+    o.id = "foo";
+    o.kind = "foo";
+    o.requiredDimensions = buildUnnamed293();
+    o.requiredMetrics = buildUnnamed294();
+    o.supportedProducts = buildUnnamed295();
+  }
+  buildCounterReportingMetadataEntry--;
+  return o;
+}
+
+checkReportingMetadataEntry(api.ReportingMetadataEntry o) {
+  buildCounterReportingMetadataEntry++;
+  if (buildCounterReportingMetadataEntry < 3) {
+    checkUnnamed291(o.compatibleDimensions);
+    checkUnnamed292(o.compatibleMetrics);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed293(o.requiredDimensions);
+    checkUnnamed294(o.requiredMetrics);
+    checkUnnamed295(o.supportedProducts);
+  }
+  buildCounterReportingMetadataEntry--;
+}
+
+core.int buildCounterSavedReport = 0;
+buildSavedReport() {
+  var o = new api.SavedReport();
+  buildCounterSavedReport++;
+  if (buildCounterSavedReport < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterSavedReport--;
+  return o;
+}
+
+checkSavedReport(api.SavedReport o) {
+  buildCounterSavedReport++;
+  if (buildCounterSavedReport < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterSavedReport--;
+}
+
+buildUnnamed296() {
+  var o = new core.List<api.SavedReport>();
+  o.add(buildSavedReport());
+  o.add(buildSavedReport());
+  return o;
+}
+
+checkUnnamed296(core.List<api.SavedReport> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSavedReport(o[0]);
+  checkSavedReport(o[1]);
+}
+
+core.int buildCounterSavedReports = 0;
+buildSavedReports() {
+  var o = new api.SavedReports();
+  buildCounterSavedReports++;
+  if (buildCounterSavedReports < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed296();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterSavedReports--;
+  return o;
+}
+
+checkSavedReports(api.SavedReports o) {
+  buildCounterSavedReports++;
+  if (buildCounterSavedReports < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed296(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterSavedReports--;
+}
+
+core.int buildCounterUrlChannel = 0;
+buildUrlChannel() {
+  var o = new api.UrlChannel();
+  buildCounterUrlChannel++;
+  if (buildCounterUrlChannel < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.urlPattern = "foo";
+  }
+  buildCounterUrlChannel--;
+  return o;
+}
+
+checkUrlChannel(api.UrlChannel o) {
+  buildCounterUrlChannel++;
+  if (buildCounterUrlChannel < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.urlPattern, unittest.equals('foo'));
+  }
+  buildCounterUrlChannel--;
+}
+
+buildUnnamed297() {
+  var o = new core.List<api.UrlChannel>();
+  o.add(buildUrlChannel());
+  o.add(buildUrlChannel());
+  return o;
+}
+
+checkUnnamed297(core.List<api.UrlChannel> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUrlChannel(o[0]);
+  checkUrlChannel(o[1]);
+}
+
+core.int buildCounterUrlChannels = 0;
+buildUrlChannels() {
+  var o = new api.UrlChannels();
+  buildCounterUrlChannels++;
+  if (buildCounterUrlChannels < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed297();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterUrlChannels--;
+  return o;
+}
+
+checkUrlChannels(api.UrlChannels o) {
+  buildCounterUrlChannels++;
+  if (buildCounterUrlChannels < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed297(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterUrlChannels--;
+}
+
+buildUnnamed298() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed298(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed299() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed299(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed300() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed300(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed301() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed301(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-Account", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccount();
+      var od = new api.Account.fromJson(o.toJson());
+      checkAccount(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdClient", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdClient();
+      var od = new api.AdClient.fromJson(o.toJson());
+      checkAdClient(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdClients", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdClients();
+      var od = new api.AdClients.fromJson(o.toJson());
+      checkAdClients(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdUnit", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdUnit();
+      var od = new api.AdUnit.fromJson(o.toJson());
+      checkAdUnit(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdUnits", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdUnits();
+      var od = new api.AdUnits.fromJson(o.toJson());
+      checkAdUnits(od);
+    });
+  });
+
+  unittest.group("obj-schema-Alert", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAlert();
+      var od = new api.Alert.fromJson(o.toJson());
+      checkAlert(od);
+    });
+  });
+
+  unittest.group("obj-schema-Alerts", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAlerts();
+      var od = new api.Alerts.fromJson(o.toJson());
+      checkAlerts(od);
+    });
+  });
+
+  unittest.group("obj-schema-CustomChannelTargetingInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCustomChannelTargetingInfo();
+      var od = new api.CustomChannelTargetingInfo.fromJson(o.toJson());
+      checkCustomChannelTargetingInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-CustomChannel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCustomChannel();
+      var od = new api.CustomChannel.fromJson(o.toJson());
+      checkCustomChannel(od);
+    });
+  });
+
+  unittest.group("obj-schema-CustomChannels", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCustomChannels();
+      var od = new api.CustomChannels.fromJson(o.toJson());
+      checkCustomChannels(od);
+    });
+  });
+
+  unittest.group("obj-schema-Metadata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMetadata();
+      var od = new api.Metadata.fromJson(o.toJson());
+      checkMetadata(od);
+    });
+  });
+
+  unittest.group("obj-schema-PreferredDeal", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPreferredDeal();
+      var od = new api.PreferredDeal.fromJson(o.toJson());
+      checkPreferredDeal(od);
+    });
+  });
+
+  unittest.group("obj-schema-PreferredDeals", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPreferredDeals();
+      var od = new api.PreferredDeals.fromJson(o.toJson());
+      checkPreferredDeals(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportHeaders", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportHeaders();
+      var od = new api.ReportHeaders.fromJson(o.toJson());
+      checkReportHeaders(od);
+    });
+  });
+
+  unittest.group("obj-schema-Report", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReport();
+      var od = new api.Report.fromJson(o.toJson());
+      checkReport(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportingMetadataEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportingMetadataEntry();
+      var od = new api.ReportingMetadataEntry.fromJson(o.toJson());
+      checkReportingMetadataEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-SavedReport", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSavedReport();
+      var od = new api.SavedReport.fromJson(o.toJson());
+      checkSavedReport(od);
+    });
+  });
+
+  unittest.group("obj-schema-SavedReports", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSavedReports();
+      var od = new api.SavedReports.fromJson(o.toJson());
+      checkSavedReports(od);
+    });
+  });
+
+  unittest.group("obj-schema-UrlChannel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUrlChannel();
+      var od = new api.UrlChannel.fromJson(o.toJson());
+      checkUrlChannel(od);
+    });
+  });
+
+  unittest.group("obj-schema-UrlChannels", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUrlChannels();
+      var od = new api.UrlChannels.fromJson(o.toJson());
+      checkUrlChannels(od);
+    });
+  });
+
+  unittest.group("resource-AccountsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.AdexchangesellerApi(mock).accounts;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AdclientsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AdclientsResourceApi res =
+          new api.AdexchangesellerApi(mock).adclients;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("adclients"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdClients());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdClients response) {
+        checkAdClients(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AdunitsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AdunitsResourceApi res = new api.AdexchangesellerApi(mock).adunits;
+      var arg_adClientId = "foo";
+      var arg_adUnitId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/adunits/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/adunits/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_adUnitId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdUnit());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_adClientId, arg_adUnitId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdUnit response) {
+        checkAdUnit(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AdunitsResourceApi res = new api.AdexchangesellerApi(mock).adunits;
+      var arg_adClientId = "foo";
+      var arg_includeInactive = true;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/adunits", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/adunits"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeInactive"].first,
+            unittest.equals("$arg_includeInactive"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdUnits());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_adClientId,
+              includeInactive: arg_includeInactive,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdUnits response) {
+        checkAdUnits(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AdunitsCustomchannelsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AdunitsCustomchannelsResourceApi res =
+          new api.AdexchangesellerApi(mock).adunits.customchannels;
+      var arg_adClientId = "foo";
+      var arg_adUnitId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/adunits/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/adunits/"));
+        pathOffset += 9;
+        index = path.indexOf("/customchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adUnitId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/customchannels"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannels());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_adClientId, arg_adUnitId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannels response) {
+        checkCustomChannels(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AlertsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AlertsResourceApi res = new api.AdexchangesellerApi(mock).alerts;
+      var arg_locale = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("alerts"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAlerts());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(locale: arg_locale, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Alerts response) {
+        checkAlerts(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CustomchannelsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CustomchannelsResourceApi res =
+          new api.AdexchangesellerApi(mock).customchannels;
+      var arg_adClientId = "foo";
+      var arg_customChannelId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/customchannels/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/customchannels/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_customChannelId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_adClientId, arg_customChannelId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannel response) {
+        checkCustomChannel(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CustomchannelsResourceApi res =
+          new api.AdexchangesellerApi(mock).customchannels;
+      var arg_adClientId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/customchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/customchannels"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannels());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_adClientId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannels response) {
+        checkCustomChannels(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CustomchannelsAdunitsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CustomchannelsAdunitsResourceApi res =
+          new api.AdexchangesellerApi(mock).customchannels.adunits;
+      var arg_adClientId = "foo";
+      var arg_customChannelId = "foo";
+      var arg_includeInactive = true;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/customchannels/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/customchannels/"));
+        pathOffset += 16;
+        index = path.indexOf("/adunits", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_customChannelId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/adunits"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeInactive"].first,
+            unittest.equals("$arg_includeInactive"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdUnits());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_adClientId, arg_customChannelId,
+              includeInactive: arg_includeInactive,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdUnits response) {
+        checkAdUnits(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-MetadataDimensionsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.MetadataDimensionsResourceApi res =
+          new api.AdexchangesellerApi(mock).metadata.dimensions;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("metadata/dimensions"));
+        pathOffset += 19;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMetadata());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Metadata response) {
+        checkMetadata(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-MetadataMetricsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.MetadataMetricsResourceApi res =
+          new api.AdexchangesellerApi(mock).metadata.metrics;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("metadata/metrics"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMetadata());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Metadata response) {
+        checkMetadata(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PreferreddealsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PreferreddealsResourceApi res =
+          new api.AdexchangesellerApi(mock).preferreddeals;
+      var arg_dealId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("preferreddeals/"));
+        pathOffset += 15;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_dealId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPreferredDeal());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_dealId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PreferredDeal response) {
+        checkPreferredDeal(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PreferreddealsResourceApi res =
+          new api.AdexchangesellerApi(mock).preferreddeals;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("preferreddeals"));
+        pathOffset += 14;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPreferredDeals());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PreferredDeals response) {
+        checkPreferredDeals(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ReportsResourceApi", () {
+    unittest.test("method--generate", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.ReportsResourceApi res = new api.AdexchangesellerApi(mock).reports;
+      var arg_startDate = "foo";
+      var arg_endDate = "foo";
+      var arg_dimension = buildUnnamed298();
+      var arg_filter = buildUnnamed299();
+      var arg_locale = "foo";
+      var arg_maxResults = 42;
+      var arg_metric = buildUnnamed300();
+      var arg_sort = buildUnnamed301();
+      var arg_startIndex = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("reports"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["startDate"].first, unittest.equals(arg_startDate));
+        unittest.expect(
+            queryMap["endDate"].first, unittest.equals(arg_endDate));
+        unittest.expect(queryMap["dimension"], unittest.equals(arg_dimension));
+        unittest.expect(queryMap["filter"], unittest.equals(arg_filter));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["metric"], unittest.equals(arg_metric));
+        unittest.expect(queryMap["sort"], unittest.equals(arg_sort));
+        unittest.expect(core.int.parse(queryMap["startIndex"].first),
+            unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildReport());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .generate(arg_startDate, arg_endDate,
+              dimension: arg_dimension,
+              filter: arg_filter,
+              locale: arg_locale,
+              maxResults: arg_maxResults,
+              metric: arg_metric,
+              sort: arg_sort,
+              startIndex: arg_startIndex,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Report response) {
+        checkReport(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ReportsSavedResourceApi", () {
+    unittest.test("method--generate", () {
+      var mock = new HttpServerMock();
+      api.ReportsSavedResourceApi res =
+          new api.AdexchangesellerApi(mock).reports.saved;
+      var arg_savedReportId = "foo";
+      var arg_locale = "foo";
+      var arg_maxResults = 42;
+      var arg_startIndex = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("reports/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_savedReportId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(core.int.parse(queryMap["startIndex"].first),
+            unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildReport());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .generate(arg_savedReportId,
+              locale: arg_locale,
+              maxResults: arg_maxResults,
+              startIndex: arg_startIndex,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Report response) {
+        checkReport(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ReportsSavedResourceApi res =
+          new api.AdexchangesellerApi(mock).reports.saved;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("reports/saved"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSavedReports());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SavedReports response) {
+        checkSavedReports(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UrlchannelsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UrlchannelsResourceApi res =
+          new api.AdexchangesellerApi(mock).urlchannels;
+      var arg_adClientId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v1.1/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/urlchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/urlchannels"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUrlChannels());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_adClientId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UrlChannels response) {
+        checkUrlChannels(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/adexchangeseller/v2_0_test.dart b/generated/googleapis/test/adexchangeseller/v2_0_test.dart
new file mode 100644
index 0000000..2311f94
--- /dev/null
+++ b/generated/googleapis/test/adexchangeseller/v2_0_test.dart
@@ -0,0 +1,2004 @@
+library googleapis.adexchangeseller.v2_0.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/adexchangeseller/v2_0.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAccount = 0;
+buildAccount() {
+  var o = new api.Account();
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterAccount--;
+  return o;
+}
+
+checkAccount(api.Account o) {
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterAccount--;
+}
+
+buildUnnamed1801() {
+  var o = new core.List<api.Account>();
+  o.add(buildAccount());
+  o.add(buildAccount());
+  return o;
+}
+
+checkUnnamed1801(core.List<api.Account> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccount(o[0]);
+  checkAccount(o[1]);
+}
+
+core.int buildCounterAccounts = 0;
+buildAccounts() {
+  var o = new api.Accounts();
+  buildCounterAccounts++;
+  if (buildCounterAccounts < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1801();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterAccounts--;
+  return o;
+}
+
+checkAccounts(api.Accounts o) {
+  buildCounterAccounts++;
+  if (buildCounterAccounts < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1801(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterAccounts--;
+}
+
+core.int buildCounterAdClient = 0;
+buildAdClient() {
+  var o = new api.AdClient();
+  buildCounterAdClient++;
+  if (buildCounterAdClient < 3) {
+    o.arcOptIn = true;
+    o.id = "foo";
+    o.kind = "foo";
+    o.productCode = "foo";
+    o.supportsReporting = true;
+  }
+  buildCounterAdClient--;
+  return o;
+}
+
+checkAdClient(api.AdClient o) {
+  buildCounterAdClient++;
+  if (buildCounterAdClient < 3) {
+    unittest.expect(o.arcOptIn, unittest.isTrue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.productCode, unittest.equals('foo'));
+    unittest.expect(o.supportsReporting, unittest.isTrue);
+  }
+  buildCounterAdClient--;
+}
+
+buildUnnamed1802() {
+  var o = new core.List<api.AdClient>();
+  o.add(buildAdClient());
+  o.add(buildAdClient());
+  return o;
+}
+
+checkUnnamed1802(core.List<api.AdClient> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAdClient(o[0]);
+  checkAdClient(o[1]);
+}
+
+core.int buildCounterAdClients = 0;
+buildAdClients() {
+  var o = new api.AdClients();
+  buildCounterAdClients++;
+  if (buildCounterAdClients < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1802();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterAdClients--;
+  return o;
+}
+
+checkAdClients(api.AdClients o) {
+  buildCounterAdClients++;
+  if (buildCounterAdClients < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1802(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterAdClients--;
+}
+
+core.int buildCounterAlert = 0;
+buildAlert() {
+  var o = new api.Alert();
+  buildCounterAlert++;
+  if (buildCounterAlert < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.message = "foo";
+    o.severity = "foo";
+    o.type = "foo";
+  }
+  buildCounterAlert--;
+  return o;
+}
+
+checkAlert(api.Alert o) {
+  buildCounterAlert++;
+  if (buildCounterAlert < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.message, unittest.equals('foo'));
+    unittest.expect(o.severity, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterAlert--;
+}
+
+buildUnnamed1803() {
+  var o = new core.List<api.Alert>();
+  o.add(buildAlert());
+  o.add(buildAlert());
+  return o;
+}
+
+checkUnnamed1803(core.List<api.Alert> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAlert(o[0]);
+  checkAlert(o[1]);
+}
+
+core.int buildCounterAlerts = 0;
+buildAlerts() {
+  var o = new api.Alerts();
+  buildCounterAlerts++;
+  if (buildCounterAlerts < 3) {
+    o.items = buildUnnamed1803();
+    o.kind = "foo";
+  }
+  buildCounterAlerts--;
+  return o;
+}
+
+checkAlerts(api.Alerts o) {
+  buildCounterAlerts++;
+  if (buildCounterAlerts < 3) {
+    checkUnnamed1803(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAlerts--;
+}
+
+core.int buildCounterCustomChannelTargetingInfo = 0;
+buildCustomChannelTargetingInfo() {
+  var o = new api.CustomChannelTargetingInfo();
+  buildCounterCustomChannelTargetingInfo++;
+  if (buildCounterCustomChannelTargetingInfo < 3) {
+    o.adsAppearOn = "foo";
+    o.description = "foo";
+    o.location = "foo";
+    o.siteLanguage = "foo";
+  }
+  buildCounterCustomChannelTargetingInfo--;
+  return o;
+}
+
+checkCustomChannelTargetingInfo(api.CustomChannelTargetingInfo o) {
+  buildCounterCustomChannelTargetingInfo++;
+  if (buildCounterCustomChannelTargetingInfo < 3) {
+    unittest.expect(o.adsAppearOn, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    unittest.expect(o.siteLanguage, unittest.equals('foo'));
+  }
+  buildCounterCustomChannelTargetingInfo--;
+}
+
+core.int buildCounterCustomChannel = 0;
+buildCustomChannel() {
+  var o = new api.CustomChannel();
+  buildCounterCustomChannel++;
+  if (buildCounterCustomChannel < 3) {
+    o.code = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.targetingInfo = buildCustomChannelTargetingInfo();
+  }
+  buildCounterCustomChannel--;
+  return o;
+}
+
+checkCustomChannel(api.CustomChannel o) {
+  buildCounterCustomChannel++;
+  if (buildCounterCustomChannel < 3) {
+    unittest.expect(o.code, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkCustomChannelTargetingInfo(o.targetingInfo);
+  }
+  buildCounterCustomChannel--;
+}
+
+buildUnnamed1804() {
+  var o = new core.List<api.CustomChannel>();
+  o.add(buildCustomChannel());
+  o.add(buildCustomChannel());
+  return o;
+}
+
+checkUnnamed1804(core.List<api.CustomChannel> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCustomChannel(o[0]);
+  checkCustomChannel(o[1]);
+}
+
+core.int buildCounterCustomChannels = 0;
+buildCustomChannels() {
+  var o = new api.CustomChannels();
+  buildCounterCustomChannels++;
+  if (buildCounterCustomChannels < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1804();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterCustomChannels--;
+  return o;
+}
+
+checkCustomChannels(api.CustomChannels o) {
+  buildCounterCustomChannels++;
+  if (buildCounterCustomChannels < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1804(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterCustomChannels--;
+}
+
+buildUnnamed1805() {
+  var o = new core.List<api.ReportingMetadataEntry>();
+  o.add(buildReportingMetadataEntry());
+  o.add(buildReportingMetadataEntry());
+  return o;
+}
+
+checkUnnamed1805(core.List<api.ReportingMetadataEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkReportingMetadataEntry(o[0]);
+  checkReportingMetadataEntry(o[1]);
+}
+
+core.int buildCounterMetadata = 0;
+buildMetadata() {
+  var o = new api.Metadata();
+  buildCounterMetadata++;
+  if (buildCounterMetadata < 3) {
+    o.items = buildUnnamed1805();
+    o.kind = "foo";
+  }
+  buildCounterMetadata--;
+  return o;
+}
+
+checkMetadata(api.Metadata o) {
+  buildCounterMetadata++;
+  if (buildCounterMetadata < 3) {
+    checkUnnamed1805(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterMetadata--;
+}
+
+core.int buildCounterPreferredDeal = 0;
+buildPreferredDeal() {
+  var o = new api.PreferredDeal();
+  buildCounterPreferredDeal++;
+  if (buildCounterPreferredDeal < 3) {
+    o.advertiserName = "foo";
+    o.buyerNetworkName = "foo";
+    o.currencyCode = "foo";
+    o.endTime = "foo";
+    o.fixedCpm = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.startTime = "foo";
+  }
+  buildCounterPreferredDeal--;
+  return o;
+}
+
+checkPreferredDeal(api.PreferredDeal o) {
+  buildCounterPreferredDeal++;
+  if (buildCounterPreferredDeal < 3) {
+    unittest.expect(o.advertiserName, unittest.equals('foo'));
+    unittest.expect(o.buyerNetworkName, unittest.equals('foo'));
+    unittest.expect(o.currencyCode, unittest.equals('foo'));
+    unittest.expect(o.endTime, unittest.equals('foo'));
+    unittest.expect(o.fixedCpm, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.startTime, unittest.equals('foo'));
+  }
+  buildCounterPreferredDeal--;
+}
+
+buildUnnamed1806() {
+  var o = new core.List<api.PreferredDeal>();
+  o.add(buildPreferredDeal());
+  o.add(buildPreferredDeal());
+  return o;
+}
+
+checkUnnamed1806(core.List<api.PreferredDeal> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPreferredDeal(o[0]);
+  checkPreferredDeal(o[1]);
+}
+
+core.int buildCounterPreferredDeals = 0;
+buildPreferredDeals() {
+  var o = new api.PreferredDeals();
+  buildCounterPreferredDeals++;
+  if (buildCounterPreferredDeals < 3) {
+    o.items = buildUnnamed1806();
+    o.kind = "foo";
+  }
+  buildCounterPreferredDeals--;
+  return o;
+}
+
+checkPreferredDeals(api.PreferredDeals o) {
+  buildCounterPreferredDeals++;
+  if (buildCounterPreferredDeals < 3) {
+    checkUnnamed1806(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterPreferredDeals--;
+}
+
+buildUnnamed1807() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1807(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterReportHeaders = 0;
+buildReportHeaders() {
+  var o = new api.ReportHeaders();
+  buildCounterReportHeaders++;
+  if (buildCounterReportHeaders < 3) {
+    o.currency = "foo";
+    o.name = "foo";
+    o.type = "foo";
+  }
+  buildCounterReportHeaders--;
+  return o;
+}
+
+checkReportHeaders(api.ReportHeaders o) {
+  buildCounterReportHeaders++;
+  if (buildCounterReportHeaders < 3) {
+    unittest.expect(o.currency, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterReportHeaders--;
+}
+
+buildUnnamed1808() {
+  var o = new core.List<api.ReportHeaders>();
+  o.add(buildReportHeaders());
+  o.add(buildReportHeaders());
+  return o;
+}
+
+checkUnnamed1808(core.List<api.ReportHeaders> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkReportHeaders(o[0]);
+  checkReportHeaders(o[1]);
+}
+
+buildUnnamed1809() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1809(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1810() {
+  var o = new core.List<core.List<core.String>>();
+  o.add(buildUnnamed1809());
+  o.add(buildUnnamed1809());
+  return o;
+}
+
+checkUnnamed1810(core.List<core.List<core.String>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed1809(o[0]);
+  checkUnnamed1809(o[1]);
+}
+
+buildUnnamed1811() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1811(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1812() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1812(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterReport = 0;
+buildReport() {
+  var o = new api.Report();
+  buildCounterReport++;
+  if (buildCounterReport < 3) {
+    o.averages = buildUnnamed1807();
+    o.headers = buildUnnamed1808();
+    o.kind = "foo";
+    o.rows = buildUnnamed1810();
+    o.totalMatchedRows = "foo";
+    o.totals = buildUnnamed1811();
+    o.warnings = buildUnnamed1812();
+  }
+  buildCounterReport--;
+  return o;
+}
+
+checkReport(api.Report o) {
+  buildCounterReport++;
+  if (buildCounterReport < 3) {
+    checkUnnamed1807(o.averages);
+    checkUnnamed1808(o.headers);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed1810(o.rows);
+    unittest.expect(o.totalMatchedRows, unittest.equals('foo'));
+    checkUnnamed1811(o.totals);
+    checkUnnamed1812(o.warnings);
+  }
+  buildCounterReport--;
+}
+
+buildUnnamed1813() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1813(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1814() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1814(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1815() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1815(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1816() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1816(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1817() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1817(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterReportingMetadataEntry = 0;
+buildReportingMetadataEntry() {
+  var o = new api.ReportingMetadataEntry();
+  buildCounterReportingMetadataEntry++;
+  if (buildCounterReportingMetadataEntry < 3) {
+    o.compatibleDimensions = buildUnnamed1813();
+    o.compatibleMetrics = buildUnnamed1814();
+    o.id = "foo";
+    o.kind = "foo";
+    o.requiredDimensions = buildUnnamed1815();
+    o.requiredMetrics = buildUnnamed1816();
+    o.supportedProducts = buildUnnamed1817();
+  }
+  buildCounterReportingMetadataEntry--;
+  return o;
+}
+
+checkReportingMetadataEntry(api.ReportingMetadataEntry o) {
+  buildCounterReportingMetadataEntry++;
+  if (buildCounterReportingMetadataEntry < 3) {
+    checkUnnamed1813(o.compatibleDimensions);
+    checkUnnamed1814(o.compatibleMetrics);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed1815(o.requiredDimensions);
+    checkUnnamed1816(o.requiredMetrics);
+    checkUnnamed1817(o.supportedProducts);
+  }
+  buildCounterReportingMetadataEntry--;
+}
+
+core.int buildCounterSavedReport = 0;
+buildSavedReport() {
+  var o = new api.SavedReport();
+  buildCounterSavedReport++;
+  if (buildCounterSavedReport < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterSavedReport--;
+  return o;
+}
+
+checkSavedReport(api.SavedReport o) {
+  buildCounterSavedReport++;
+  if (buildCounterSavedReport < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterSavedReport--;
+}
+
+buildUnnamed1818() {
+  var o = new core.List<api.SavedReport>();
+  o.add(buildSavedReport());
+  o.add(buildSavedReport());
+  return o;
+}
+
+checkUnnamed1818(core.List<api.SavedReport> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSavedReport(o[0]);
+  checkSavedReport(o[1]);
+}
+
+core.int buildCounterSavedReports = 0;
+buildSavedReports() {
+  var o = new api.SavedReports();
+  buildCounterSavedReports++;
+  if (buildCounterSavedReports < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1818();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterSavedReports--;
+  return o;
+}
+
+checkSavedReports(api.SavedReports o) {
+  buildCounterSavedReports++;
+  if (buildCounterSavedReports < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1818(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterSavedReports--;
+}
+
+core.int buildCounterUrlChannel = 0;
+buildUrlChannel() {
+  var o = new api.UrlChannel();
+  buildCounterUrlChannel++;
+  if (buildCounterUrlChannel < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.urlPattern = "foo";
+  }
+  buildCounterUrlChannel--;
+  return o;
+}
+
+checkUrlChannel(api.UrlChannel o) {
+  buildCounterUrlChannel++;
+  if (buildCounterUrlChannel < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.urlPattern, unittest.equals('foo'));
+  }
+  buildCounterUrlChannel--;
+}
+
+buildUnnamed1819() {
+  var o = new core.List<api.UrlChannel>();
+  o.add(buildUrlChannel());
+  o.add(buildUrlChannel());
+  return o;
+}
+
+checkUnnamed1819(core.List<api.UrlChannel> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUrlChannel(o[0]);
+  checkUrlChannel(o[1]);
+}
+
+core.int buildCounterUrlChannels = 0;
+buildUrlChannels() {
+  var o = new api.UrlChannels();
+  buildCounterUrlChannels++;
+  if (buildCounterUrlChannels < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1819();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterUrlChannels--;
+  return o;
+}
+
+checkUrlChannels(api.UrlChannels o) {
+  buildCounterUrlChannels++;
+  if (buildCounterUrlChannels < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1819(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterUrlChannels--;
+}
+
+buildUnnamed1820() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1820(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1821() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1821(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1822() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1822(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1823() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1823(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-Account", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccount();
+      var od = new api.Account.fromJson(o.toJson());
+      checkAccount(od);
+    });
+  });
+
+  unittest.group("obj-schema-Accounts", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccounts();
+      var od = new api.Accounts.fromJson(o.toJson());
+      checkAccounts(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdClient", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdClient();
+      var od = new api.AdClient.fromJson(o.toJson());
+      checkAdClient(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdClients", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdClients();
+      var od = new api.AdClients.fromJson(o.toJson());
+      checkAdClients(od);
+    });
+  });
+
+  unittest.group("obj-schema-Alert", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAlert();
+      var od = new api.Alert.fromJson(o.toJson());
+      checkAlert(od);
+    });
+  });
+
+  unittest.group("obj-schema-Alerts", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAlerts();
+      var od = new api.Alerts.fromJson(o.toJson());
+      checkAlerts(od);
+    });
+  });
+
+  unittest.group("obj-schema-CustomChannelTargetingInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCustomChannelTargetingInfo();
+      var od = new api.CustomChannelTargetingInfo.fromJson(o.toJson());
+      checkCustomChannelTargetingInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-CustomChannel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCustomChannel();
+      var od = new api.CustomChannel.fromJson(o.toJson());
+      checkCustomChannel(od);
+    });
+  });
+
+  unittest.group("obj-schema-CustomChannels", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCustomChannels();
+      var od = new api.CustomChannels.fromJson(o.toJson());
+      checkCustomChannels(od);
+    });
+  });
+
+  unittest.group("obj-schema-Metadata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMetadata();
+      var od = new api.Metadata.fromJson(o.toJson());
+      checkMetadata(od);
+    });
+  });
+
+  unittest.group("obj-schema-PreferredDeal", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPreferredDeal();
+      var od = new api.PreferredDeal.fromJson(o.toJson());
+      checkPreferredDeal(od);
+    });
+  });
+
+  unittest.group("obj-schema-PreferredDeals", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPreferredDeals();
+      var od = new api.PreferredDeals.fromJson(o.toJson());
+      checkPreferredDeals(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportHeaders", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportHeaders();
+      var od = new api.ReportHeaders.fromJson(o.toJson());
+      checkReportHeaders(od);
+    });
+  });
+
+  unittest.group("obj-schema-Report", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReport();
+      var od = new api.Report.fromJson(o.toJson());
+      checkReport(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportingMetadataEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportingMetadataEntry();
+      var od = new api.ReportingMetadataEntry.fromJson(o.toJson());
+      checkReportingMetadataEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-SavedReport", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSavedReport();
+      var od = new api.SavedReport.fromJson(o.toJson());
+      checkSavedReport(od);
+    });
+  });
+
+  unittest.group("obj-schema-SavedReports", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSavedReports();
+      var od = new api.SavedReports.fromJson(o.toJson());
+      checkSavedReports(od);
+    });
+  });
+
+  unittest.group("obj-schema-UrlChannel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUrlChannel();
+      var od = new api.UrlChannel.fromJson(o.toJson());
+      checkUrlChannel(od);
+    });
+  });
+
+  unittest.group("obj-schema-UrlChannels", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUrlChannels();
+      var od = new api.UrlChannels.fromJson(o.toJson());
+      checkUrlChannels(od);
+    });
+  });
+
+  unittest.group("resource-AccountsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.AdexchangesellerApi(mock).accounts;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v2.0/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.AdexchangesellerApi(mock).accounts;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v2.0/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("accounts"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccounts());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Accounts response) {
+        checkAccounts(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsAdclientsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsAdclientsResourceApi res =
+          new api.AdexchangesellerApi(mock).accounts.adclients;
+      var arg_accountId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v2.0/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/adclients"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdClients());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdClients response) {
+        checkAdClients(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsAlertsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsAlertsResourceApi res =
+          new api.AdexchangesellerApi(mock).accounts.alerts;
+      var arg_accountId = "foo";
+      var arg_locale = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v2.0/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/alerts", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/alerts"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAlerts());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, locale: arg_locale, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Alerts response) {
+        checkAlerts(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsCustomchannelsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsCustomchannelsResourceApi res =
+          new api.AdexchangesellerApi(mock).accounts.customchannels;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_customChannelId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v2.0/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/customchannels/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/customchannels/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_customChannelId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_adClientId, arg_customChannelId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannel response) {
+        checkCustomChannel(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsCustomchannelsResourceApi res =
+          new api.AdexchangesellerApi(mock).accounts.customchannels;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v2.0/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/customchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/customchannels"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannels());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_adClientId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannels response) {
+        checkCustomChannels(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsMetadataDimensionsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsMetadataDimensionsResourceApi res =
+          new api.AdexchangesellerApi(mock).accounts.metadata.dimensions;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v2.0/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/metadata/dimensions", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/metadata/dimensions"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMetadata());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Metadata response) {
+        checkMetadata(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsMetadataMetricsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsMetadataMetricsResourceApi res =
+          new api.AdexchangesellerApi(mock).accounts.metadata.metrics;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v2.0/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/metadata/metrics", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("/metadata/metrics"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMetadata());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Metadata response) {
+        checkMetadata(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsPreferreddealsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsPreferreddealsResourceApi res =
+          new api.AdexchangesellerApi(mock).accounts.preferreddeals;
+      var arg_accountId = "foo";
+      var arg_dealId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v2.0/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/preferreddeals/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/preferreddeals/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_dealId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPreferredDeal());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_dealId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PreferredDeal response) {
+        checkPreferredDeal(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsPreferreddealsResourceApi res =
+          new api.AdexchangesellerApi(mock).accounts.preferreddeals;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v2.0/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/preferreddeals", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/preferreddeals"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPreferredDeals());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PreferredDeals response) {
+        checkPreferredDeals(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsReportsResourceApi", () {
+    unittest.test("method--generate", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.AccountsReportsResourceApi res =
+          new api.AdexchangesellerApi(mock).accounts.reports;
+      var arg_accountId = "foo";
+      var arg_startDate = "foo";
+      var arg_endDate = "foo";
+      var arg_dimension = buildUnnamed1820();
+      var arg_filter = buildUnnamed1821();
+      var arg_locale = "foo";
+      var arg_maxResults = 42;
+      var arg_metric = buildUnnamed1822();
+      var arg_sort = buildUnnamed1823();
+      var arg_startIndex = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v2.0/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/reports", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/reports"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["startDate"].first, unittest.equals(arg_startDate));
+        unittest.expect(
+            queryMap["endDate"].first, unittest.equals(arg_endDate));
+        unittest.expect(queryMap["dimension"], unittest.equals(arg_dimension));
+        unittest.expect(queryMap["filter"], unittest.equals(arg_filter));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["metric"], unittest.equals(arg_metric));
+        unittest.expect(queryMap["sort"], unittest.equals(arg_sort));
+        unittest.expect(core.int.parse(queryMap["startIndex"].first),
+            unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildReport());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .generate(arg_accountId, arg_startDate, arg_endDate,
+              dimension: arg_dimension,
+              filter: arg_filter,
+              locale: arg_locale,
+              maxResults: arg_maxResults,
+              metric: arg_metric,
+              sort: arg_sort,
+              startIndex: arg_startIndex,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Report response) {
+        checkReport(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsReportsSavedResourceApi", () {
+    unittest.test("method--generate", () {
+      var mock = new HttpServerMock();
+      api.AccountsReportsSavedResourceApi res =
+          new api.AdexchangesellerApi(mock).accounts.reports.saved;
+      var arg_accountId = "foo";
+      var arg_savedReportId = "foo";
+      var arg_locale = "foo";
+      var arg_maxResults = 42;
+      var arg_startIndex = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v2.0/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/reports/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/reports/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_savedReportId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(core.int.parse(queryMap["startIndex"].first),
+            unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildReport());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .generate(arg_accountId, arg_savedReportId,
+              locale: arg_locale,
+              maxResults: arg_maxResults,
+              startIndex: arg_startIndex,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Report response) {
+        checkReport(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsReportsSavedResourceApi res =
+          new api.AdexchangesellerApi(mock).accounts.reports.saved;
+      var arg_accountId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v2.0/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/reports/saved", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/reports/saved"));
+        pathOffset += 14;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSavedReports());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SavedReports response) {
+        checkSavedReports(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsUrlchannelsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsUrlchannelsResourceApi res =
+          new api.AdexchangesellerApi(mock).accounts.urlchannels;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("adexchangeseller/v2.0/"));
+        pathOffset += 22;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/urlchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/urlchannels"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUrlChannels());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_adClientId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UrlChannels response) {
+        checkUrlChannels(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/adexperiencereport/v1_test.dart b/generated/googleapis/test/adexperiencereport/v1_test.dart
index 2900719..367fc24 100644
--- a/generated/googleapis/test/adexperiencereport/v1_test.dart
+++ b/generated/googleapis/test/adexperiencereport/v1_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed1826() {
+buildUnnamed1824() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1826(core.List<core.String> o) {
+checkUnnamed1824(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -72,7 +72,7 @@
     o.enforcementTime = "foo";
     o.filterStatus = "foo";
     o.lastChangeTime = "foo";
-    o.region = buildUnnamed1826();
+    o.region = buildUnnamed1824();
     o.reportUrl = "foo";
     o.underReview = true;
   }
@@ -87,7 +87,7 @@
     unittest.expect(o.enforcementTime, unittest.equals('foo'));
     unittest.expect(o.filterStatus, unittest.equals('foo'));
     unittest.expect(o.lastChangeTime, unittest.equals('foo'));
-    checkUnnamed1826(o.region);
+    checkUnnamed1824(o.region);
     unittest.expect(o.reportUrl, unittest.equals('foo'));
     unittest.expect(o.underReview, unittest.isTrue);
   }
@@ -117,14 +117,14 @@
   buildCounterSiteSummaryResponse--;
 }
 
-buildUnnamed1827() {
+buildUnnamed1825() {
   var o = new core.List<api.SiteSummaryResponse>();
   o.add(buildSiteSummaryResponse());
   o.add(buildSiteSummaryResponse());
   return o;
 }
 
-checkUnnamed1827(core.List<api.SiteSummaryResponse> o) {
+checkUnnamed1825(core.List<api.SiteSummaryResponse> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSiteSummaryResponse(o[0]);
   checkSiteSummaryResponse(o[1]);
@@ -135,7 +135,7 @@
   var o = new api.ViolatingSitesResponse();
   buildCounterViolatingSitesResponse++;
   if (buildCounterViolatingSitesResponse < 3) {
-    o.violatingSites = buildUnnamed1827();
+    o.violatingSites = buildUnnamed1825();
   }
   buildCounterViolatingSitesResponse--;
   return o;
@@ -144,7 +144,7 @@
 checkViolatingSitesResponse(api.ViolatingSitesResponse o) {
   buildCounterViolatingSitesResponse++;
   if (buildCounterViolatingSitesResponse < 3) {
-    checkUnnamed1827(o.violatingSites);
+    checkUnnamed1825(o.violatingSites);
   }
   buildCounterViolatingSitesResponse--;
 }
@@ -179,6 +179,7 @@
       var mock = new HttpServerMock();
       api.SitesResourceApi res = new api.AdexperiencereportApi(mock).sites;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -210,6 +211,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -218,7 +220,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name)
+          .get(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SiteSummaryResponse response) {
         checkSiteSummaryResponse(response);
       })));
@@ -230,6 +232,7 @@
       var mock = new HttpServerMock();
       api.ViolatingSitesResourceApi res =
           new api.AdexperiencereportApi(mock).violatingSites;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -260,6 +263,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -268,7 +272,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list()
+          .list($fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ViolatingSitesResponse response) {
         checkViolatingSitesResponse(response);
       })));
diff --git a/generated/googleapis/test/admin/datatransfer_v1_test.dart b/generated/googleapis/test/admin/datatransfer_v1_test.dart
index bb531b9..719e3b1 100644
--- a/generated/googleapis/test/admin/datatransfer_v1_test.dart
+++ b/generated/googleapis/test/admin/datatransfer_v1_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed163() {
+buildUnnamed147() {
   var o = new core.List<api.ApplicationTransferParam>();
   o.add(buildApplicationTransferParam());
   o.add(buildApplicationTransferParam());
   return o;
 }
 
-checkUnnamed163(core.List<api.ApplicationTransferParam> o) {
+checkUnnamed147(core.List<api.ApplicationTransferParam> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApplicationTransferParam(o[0]);
   checkApplicationTransferParam(o[1]);
@@ -72,7 +72,7 @@
     o.id = "foo";
     o.kind = "foo";
     o.name = "foo";
-    o.transferParams = buildUnnamed163();
+    o.transferParams = buildUnnamed147();
   }
   buildCounterApplication--;
   return o;
@@ -85,19 +85,19 @@
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed163(o.transferParams);
+    checkUnnamed147(o.transferParams);
   }
   buildCounterApplication--;
 }
 
-buildUnnamed164() {
+buildUnnamed148() {
   var o = new core.List<api.ApplicationTransferParam>();
   o.add(buildApplicationTransferParam());
   o.add(buildApplicationTransferParam());
   return o;
 }
 
-checkUnnamed164(core.List<api.ApplicationTransferParam> o) {
+checkUnnamed148(core.List<api.ApplicationTransferParam> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApplicationTransferParam(o[0]);
   checkApplicationTransferParam(o[1]);
@@ -109,7 +109,7 @@
   buildCounterApplicationDataTransfer++;
   if (buildCounterApplicationDataTransfer < 3) {
     o.applicationId = "foo";
-    o.applicationTransferParams = buildUnnamed164();
+    o.applicationTransferParams = buildUnnamed148();
     o.applicationTransferStatus = "foo";
   }
   buildCounterApplicationDataTransfer--;
@@ -120,20 +120,20 @@
   buildCounterApplicationDataTransfer++;
   if (buildCounterApplicationDataTransfer < 3) {
     unittest.expect(o.applicationId, unittest.equals('foo'));
-    checkUnnamed164(o.applicationTransferParams);
+    checkUnnamed148(o.applicationTransferParams);
     unittest.expect(o.applicationTransferStatus, unittest.equals('foo'));
   }
   buildCounterApplicationDataTransfer--;
 }
 
-buildUnnamed165() {
+buildUnnamed149() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed165(core.List<core.String> o) {
+checkUnnamed149(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -145,7 +145,7 @@
   buildCounterApplicationTransferParam++;
   if (buildCounterApplicationTransferParam < 3) {
     o.key = "foo";
-    o.value = buildUnnamed165();
+    o.value = buildUnnamed149();
   }
   buildCounterApplicationTransferParam--;
   return o;
@@ -155,19 +155,19 @@
   buildCounterApplicationTransferParam++;
   if (buildCounterApplicationTransferParam < 3) {
     unittest.expect(o.key, unittest.equals('foo'));
-    checkUnnamed165(o.value);
+    checkUnnamed149(o.value);
   }
   buildCounterApplicationTransferParam--;
 }
 
-buildUnnamed166() {
+buildUnnamed150() {
   var o = new core.List<api.Application>();
   o.add(buildApplication());
   o.add(buildApplication());
   return o;
 }
 
-checkUnnamed166(core.List<api.Application> o) {
+checkUnnamed150(core.List<api.Application> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApplication(o[0]);
   checkApplication(o[1]);
@@ -178,7 +178,7 @@
   var o = new api.ApplicationsListResponse();
   buildCounterApplicationsListResponse++;
   if (buildCounterApplicationsListResponse < 3) {
-    o.applications = buildUnnamed166();
+    o.applications = buildUnnamed150();
     o.etag = "foo";
     o.kind = "foo";
     o.nextPageToken = "foo";
@@ -190,7 +190,7 @@
 checkApplicationsListResponse(api.ApplicationsListResponse o) {
   buildCounterApplicationsListResponse++;
   if (buildCounterApplicationsListResponse < 3) {
-    checkUnnamed166(o.applications);
+    checkUnnamed150(o.applications);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
@@ -198,14 +198,14 @@
   buildCounterApplicationsListResponse--;
 }
 
-buildUnnamed167() {
+buildUnnamed151() {
   var o = new core.List<api.ApplicationDataTransfer>();
   o.add(buildApplicationDataTransfer());
   o.add(buildApplicationDataTransfer());
   return o;
 }
 
-checkUnnamed167(core.List<api.ApplicationDataTransfer> o) {
+checkUnnamed151(core.List<api.ApplicationDataTransfer> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApplicationDataTransfer(o[0]);
   checkApplicationDataTransfer(o[1]);
@@ -216,7 +216,7 @@
   var o = new api.DataTransfer();
   buildCounterDataTransfer++;
   if (buildCounterDataTransfer < 3) {
-    o.applicationDataTransfers = buildUnnamed167();
+    o.applicationDataTransfers = buildUnnamed151();
     o.etag = "foo";
     o.id = "foo";
     o.kind = "foo";
@@ -232,7 +232,7 @@
 checkDataTransfer(api.DataTransfer o) {
   buildCounterDataTransfer++;
   if (buildCounterDataTransfer < 3) {
-    checkUnnamed167(o.applicationDataTransfers);
+    checkUnnamed151(o.applicationDataTransfers);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
@@ -245,14 +245,14 @@
   buildCounterDataTransfer--;
 }
 
-buildUnnamed168() {
+buildUnnamed152() {
   var o = new core.List<api.DataTransfer>();
   o.add(buildDataTransfer());
   o.add(buildDataTransfer());
   return o;
 }
 
-checkUnnamed168(core.List<api.DataTransfer> o) {
+checkUnnamed152(core.List<api.DataTransfer> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDataTransfer(o[0]);
   checkDataTransfer(o[1]);
@@ -263,7 +263,7 @@
   var o = new api.DataTransfersListResponse();
   buildCounterDataTransfersListResponse++;
   if (buildCounterDataTransfersListResponse < 3) {
-    o.dataTransfers = buildUnnamed168();
+    o.dataTransfers = buildUnnamed152();
     o.etag = "foo";
     o.kind = "foo";
     o.nextPageToken = "foo";
@@ -275,7 +275,7 @@
 checkDataTransfersListResponse(api.DataTransfersListResponse o) {
   buildCounterDataTransfersListResponse++;
   if (buildCounterDataTransfersListResponse < 3) {
-    checkUnnamed168(o.dataTransfers);
+    checkUnnamed152(o.dataTransfers);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
@@ -337,6 +337,7 @@
       var mock = new HttpServerMock();
       api.ApplicationsResourceApi res = new api.AdminApi(mock).applications;
       var arg_applicationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -373,6 +374,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -381,7 +383,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_applicationId)
+          .get(arg_applicationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Application response) {
         checkApplication(response);
       })));
@@ -393,6 +395,7 @@
       var arg_customerId = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -432,6 +435,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -443,7 +447,8 @@
           .list(
               customerId: arg_customerId,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ApplicationsListResponse response) {
         checkApplicationsListResponse(response);
       })));
@@ -455,6 +460,7 @@
       var mock = new HttpServerMock();
       api.TransfersResourceApi res = new api.AdminApi(mock).transfers;
       var arg_dataTransferId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -491,6 +497,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -499,7 +506,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_dataTransferId)
+          .get(arg_dataTransferId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DataTransfer response) {
         checkDataTransfer(response);
       })));
@@ -509,6 +516,7 @@
       var mock = new HttpServerMock();
       api.TransfersResourceApi res = new api.AdminApi(mock).transfers;
       var arg_request = buildDataTransfer();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DataTransfer.fromJson(json);
         checkDataTransfer(obj);
@@ -545,6 +553,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -553,7 +562,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request)
+          .insert(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DataTransfer response) {
         checkDataTransfer(response);
       })));
@@ -568,6 +577,7 @@
       var arg_oldOwnerUserId = "foo";
       var arg_pageToken = "foo";
       var arg_status = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -612,6 +622,7 @@
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(queryMap["status"].first, unittest.equals(arg_status));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -626,7 +637,8 @@
               newOwnerUserId: arg_newOwnerUserId,
               oldOwnerUserId: arg_oldOwnerUserId,
               pageToken: arg_pageToken,
-              status: arg_status)
+              status: arg_status,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.DataTransfersListResponse response) {
         checkDataTransfersListResponse(response);
diff --git a/generated/googleapis/test/admin/directory_v1_test.dart b/generated/googleapis/test/admin/directory_v1_test.dart
index 1c57f9b..e67026b 100644
--- a/generated/googleapis/test/admin/directory_v1_test.dart
+++ b/generated/googleapis/test/admin/directory_v1_test.dart
@@ -77,7 +77,7 @@
   buildCounterAlias--;
 }
 
-buildUnnamed851() {
+buildUnnamed836() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -92,7 +92,7 @@
   return o;
 }
 
-checkUnnamed851(core.List<core.Object> o) {
+checkUnnamed836(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o[0]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -111,7 +111,7 @@
   var o = new api.Aliases();
   buildCounterAliases++;
   if (buildCounterAliases < 3) {
-    o.aliases = buildUnnamed851();
+    o.aliases = buildUnnamed836();
     o.etag = "foo";
     o.kind = "foo";
   }
@@ -122,13 +122,59 @@
 checkAliases(api.Aliases o) {
   buildCounterAliases++;
   if (buildCounterAliases < 3) {
-    checkUnnamed851(o.aliases);
+    checkUnnamed836(o.aliases);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterAliases--;
 }
 
+buildUnnamed837() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed837(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAppAccessCollections = 0;
+buildAppAccessCollections() {
+  var o = new api.AppAccessCollections();
+  buildCounterAppAccessCollections++;
+  if (buildCounterAppAccessCollections < 3) {
+    o.blockedApiAccessBuckets = buildUnnamed837();
+    o.enforceSettingsForAndroidDrive = true;
+    o.errorMessage = "foo";
+    o.etag = "foo";
+    o.kind = "foo";
+    o.resourceId = "foo";
+    o.resourceName = "foo";
+    o.trustDomainOwnedApps = true;
+  }
+  buildCounterAppAccessCollections--;
+  return o;
+}
+
+checkAppAccessCollections(api.AppAccessCollections o) {
+  buildCounterAppAccessCollections++;
+  if (buildCounterAppAccessCollections < 3) {
+    checkUnnamed837(o.blockedApiAccessBuckets);
+    unittest.expect(o.enforceSettingsForAndroidDrive, unittest.isTrue);
+    unittest.expect(o.errorMessage, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.resourceId, unittest.equals('foo'));
+    unittest.expect(o.resourceName, unittest.equals('foo'));
+    unittest.expect(o.trustDomainOwnedApps, unittest.isTrue);
+  }
+  buildCounterAppAccessCollections--;
+}
+
 core.int buildCounterAsp = 0;
 buildAsp() {
   var o = new api.Asp();
@@ -160,14 +206,14 @@
   buildCounterAsp--;
 }
 
-buildUnnamed852() {
+buildUnnamed838() {
   var o = new core.List<api.Asp>();
   o.add(buildAsp());
   o.add(buildAsp());
   return o;
 }
 
-checkUnnamed852(core.List<api.Asp> o) {
+checkUnnamed838(core.List<api.Asp> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAsp(o[0]);
   checkAsp(o[1]);
@@ -179,7 +225,7 @@
   buildCounterAsps++;
   if (buildCounterAsps < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed852();
+    o.items = buildUnnamed838();
     o.kind = "foo";
   }
   buildCounterAsps--;
@@ -190,7 +236,7 @@
   buildCounterAsps++;
   if (buildCounterAsps < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed852(o.items);
+    checkUnnamed838(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterAsps--;
@@ -229,14 +275,14 @@
   buildCounterCalendarResource--;
 }
 
-buildUnnamed853() {
+buildUnnamed839() {
   var o = new core.List<api.CalendarResource>();
   o.add(buildCalendarResource());
   o.add(buildCalendarResource());
   return o;
 }
 
-checkUnnamed853(core.List<api.CalendarResource> o) {
+checkUnnamed839(core.List<api.CalendarResource> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCalendarResource(o[0]);
   checkCalendarResource(o[1]);
@@ -248,7 +294,7 @@
   buildCounterCalendarResources++;
   if (buildCounterCalendarResources < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed853();
+    o.items = buildUnnamed839();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -260,21 +306,21 @@
   buildCounterCalendarResources++;
   if (buildCounterCalendarResources < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed853(o.items);
+    checkUnnamed839(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterCalendarResources--;
 }
 
-buildUnnamed854() {
+buildUnnamed840() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed854(core.Map<core.String, core.String> o) {
+checkUnnamed840(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -289,7 +335,7 @@
     o.expiration = "foo";
     o.id = "foo";
     o.kind = "foo";
-    o.params = buildUnnamed854();
+    o.params = buildUnnamed840();
     o.payload = true;
     o.resourceId = "foo";
     o.resourceUri = "foo";
@@ -307,7 +353,7 @@
     unittest.expect(o.expiration, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed854(o.params);
+    checkUnnamed840(o.params);
     unittest.expect(o.payload, unittest.isTrue);
     unittest.expect(o.resourceId, unittest.equals('foo'));
     unittest.expect(o.resourceUri, unittest.equals('foo'));
@@ -339,14 +385,14 @@
   buildCounterChromeOsDeviceActiveTimeRanges--;
 }
 
-buildUnnamed855() {
+buildUnnamed841() {
   var o = new core.List<api.ChromeOsDeviceActiveTimeRanges>();
   o.add(buildChromeOsDeviceActiveTimeRanges());
   o.add(buildChromeOsDeviceActiveTimeRanges());
   return o;
 }
 
-checkUnnamed855(core.List<api.ChromeOsDeviceActiveTimeRanges> o) {
+checkUnnamed841(core.List<api.ChromeOsDeviceActiveTimeRanges> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkChromeOsDeviceActiveTimeRanges(o[0]);
   checkChromeOsDeviceActiveTimeRanges(o[1]);
@@ -373,14 +419,14 @@
   buildCounterChromeOsDeviceRecentUsers--;
 }
 
-buildUnnamed856() {
+buildUnnamed842() {
   var o = new core.List<api.ChromeOsDeviceRecentUsers>();
   o.add(buildChromeOsDeviceRecentUsers());
   o.add(buildChromeOsDeviceRecentUsers());
   return o;
 }
 
-checkUnnamed856(core.List<api.ChromeOsDeviceRecentUsers> o) {
+checkUnnamed842(core.List<api.ChromeOsDeviceRecentUsers> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkChromeOsDeviceRecentUsers(o[0]);
   checkChromeOsDeviceRecentUsers(o[1]);
@@ -391,7 +437,7 @@
   var o = new api.ChromeOsDevice();
   buildCounterChromeOsDevice++;
   if (buildCounterChromeOsDevice < 3) {
-    o.activeTimeRanges = buildUnnamed855();
+    o.activeTimeRanges = buildUnnamed841();
     o.annotatedAssetId = "foo";
     o.annotatedLocation = "foo";
     o.annotatedUser = "foo";
@@ -411,7 +457,7 @@
     o.orgUnitPath = "foo";
     o.osVersion = "foo";
     o.platformVersion = "foo";
-    o.recentUsers = buildUnnamed856();
+    o.recentUsers = buildUnnamed842();
     o.serialNumber = "foo";
     o.status = "foo";
     o.supportEndDate = core.DateTime.parse("2002-02-27T14:01:02");
@@ -424,7 +470,7 @@
 checkChromeOsDevice(api.ChromeOsDevice o) {
   buildCounterChromeOsDevice++;
   if (buildCounterChromeOsDevice < 3) {
-    checkUnnamed855(o.activeTimeRanges);
+    checkUnnamed841(o.activeTimeRanges);
     unittest.expect(o.annotatedAssetId, unittest.equals('foo'));
     unittest.expect(o.annotatedLocation, unittest.equals('foo'));
     unittest.expect(o.annotatedUser, unittest.equals('foo'));
@@ -446,7 +492,7 @@
     unittest.expect(o.orgUnitPath, unittest.equals('foo'));
     unittest.expect(o.osVersion, unittest.equals('foo'));
     unittest.expect(o.platformVersion, unittest.equals('foo'));
-    checkUnnamed856(o.recentUsers);
+    checkUnnamed842(o.recentUsers);
     unittest.expect(o.serialNumber, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals('foo'));
     unittest.expect(o.supportEndDate,
@@ -477,14 +523,14 @@
   buildCounterChromeOsDeviceAction--;
 }
 
-buildUnnamed857() {
+buildUnnamed843() {
   var o = new core.List<api.ChromeOsDevice>();
   o.add(buildChromeOsDevice());
   o.add(buildChromeOsDevice());
   return o;
 }
 
-checkUnnamed857(core.List<api.ChromeOsDevice> o) {
+checkUnnamed843(core.List<api.ChromeOsDevice> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkChromeOsDevice(o[0]);
   checkChromeOsDevice(o[1]);
@@ -495,7 +541,7 @@
   var o = new api.ChromeOsDevices();
   buildCounterChromeOsDevices++;
   if (buildCounterChromeOsDevices < 3) {
-    o.chromeosdevices = buildUnnamed857();
+    o.chromeosdevices = buildUnnamed843();
     o.etag = "foo";
     o.kind = "foo";
     o.nextPageToken = "foo";
@@ -507,7 +553,7 @@
 checkChromeOsDevices(api.ChromeOsDevices o) {
   buildCounterChromeOsDevices++;
   if (buildCounterChromeOsDevices < 3) {
-    checkUnnamed857(o.chromeosdevices);
+    checkUnnamed843(o.chromeosdevices);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
@@ -515,14 +561,14 @@
   buildCounterChromeOsDevices--;
 }
 
-buildUnnamed858() {
+buildUnnamed844() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed858(core.List<core.String> o) {
+checkUnnamed844(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -533,7 +579,7 @@
   var o = new api.ChromeOsMoveDevicesToOu();
   buildCounterChromeOsMoveDevicesToOu++;
   if (buildCounterChromeOsMoveDevicesToOu < 3) {
-    o.deviceIds = buildUnnamed858();
+    o.deviceIds = buildUnnamed844();
   }
   buildCounterChromeOsMoveDevicesToOu--;
   return o;
@@ -542,7 +588,7 @@
 checkChromeOsMoveDevicesToOu(api.ChromeOsMoveDevicesToOu o) {
   buildCounterChromeOsMoveDevicesToOu++;
   if (buildCounterChromeOsMoveDevicesToOu < 3) {
-    checkUnnamed858(o.deviceIds);
+    checkUnnamed844(o.deviceIds);
   }
   buildCounterChromeOsMoveDevicesToOu--;
 }
@@ -647,14 +693,14 @@
   buildCounterDomainAlias--;
 }
 
-buildUnnamed859() {
+buildUnnamed845() {
   var o = new core.List<api.DomainAlias>();
   o.add(buildDomainAlias());
   o.add(buildDomainAlias());
   return o;
 }
 
-checkUnnamed859(core.List<api.DomainAlias> o) {
+checkUnnamed845(core.List<api.DomainAlias> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDomainAlias(o[0]);
   checkDomainAlias(o[1]);
@@ -665,7 +711,7 @@
   var o = new api.DomainAliases();
   buildCounterDomainAliases++;
   if (buildCounterDomainAliases < 3) {
-    o.domainAliases = buildUnnamed859();
+    o.domainAliases = buildUnnamed845();
     o.etag = "foo";
     o.kind = "foo";
   }
@@ -676,21 +722,21 @@
 checkDomainAliases(api.DomainAliases o) {
   buildCounterDomainAliases++;
   if (buildCounterDomainAliases < 3) {
-    checkUnnamed859(o.domainAliases);
+    checkUnnamed845(o.domainAliases);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterDomainAliases--;
 }
 
-buildUnnamed860() {
+buildUnnamed846() {
   var o = new core.List<api.DomainAlias>();
   o.add(buildDomainAlias());
   o.add(buildDomainAlias());
   return o;
 }
 
-checkUnnamed860(core.List<api.DomainAlias> o) {
+checkUnnamed846(core.List<api.DomainAlias> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDomainAlias(o[0]);
   checkDomainAlias(o[1]);
@@ -702,7 +748,7 @@
   buildCounterDomains++;
   if (buildCounterDomains < 3) {
     o.creationTime = "foo";
-    o.domainAliases = buildUnnamed860();
+    o.domainAliases = buildUnnamed846();
     o.domainName = "foo";
     o.etag = "foo";
     o.isPrimary = true;
@@ -717,7 +763,7 @@
   buildCounterDomains++;
   if (buildCounterDomains < 3) {
     unittest.expect(o.creationTime, unittest.equals('foo'));
-    checkUnnamed860(o.domainAliases);
+    checkUnnamed846(o.domainAliases);
     unittest.expect(o.domainName, unittest.equals('foo'));
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.isPrimary, unittest.isTrue);
@@ -727,14 +773,14 @@
   buildCounterDomains--;
 }
 
-buildUnnamed861() {
+buildUnnamed847() {
   var o = new core.List<api.Domains>();
   o.add(buildDomains());
   o.add(buildDomains());
   return o;
 }
 
-checkUnnamed861(core.List<api.Domains> o) {
+checkUnnamed847(core.List<api.Domains> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDomains(o[0]);
   checkDomains(o[1]);
@@ -745,7 +791,7 @@
   var o = new api.Domains2();
   buildCounterDomains2++;
   if (buildCounterDomains2 < 3) {
-    o.domains = buildUnnamed861();
+    o.domains = buildUnnamed847();
     o.etag = "foo";
     o.kind = "foo";
   }
@@ -756,34 +802,34 @@
 checkDomains2(api.Domains2 o) {
   buildCounterDomains2++;
   if (buildCounterDomains2 < 3) {
-    checkUnnamed861(o.domains);
+    checkUnnamed847(o.domains);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterDomains2--;
 }
 
-buildUnnamed862() {
+buildUnnamed848() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed862(core.List<core.String> o) {
+checkUnnamed848(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed863() {
+buildUnnamed849() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed863(core.List<core.String> o) {
+checkUnnamed849(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -795,7 +841,7 @@
   buildCounterGroup++;
   if (buildCounterGroup < 3) {
     o.adminCreated = true;
-    o.aliases = buildUnnamed862();
+    o.aliases = buildUnnamed848();
     o.description = "foo";
     o.directMembersCount = "foo";
     o.email = "foo";
@@ -803,7 +849,7 @@
     o.id = "foo";
     o.kind = "foo";
     o.name = "foo";
-    o.nonEditableAliases = buildUnnamed863();
+    o.nonEditableAliases = buildUnnamed849();
   }
   buildCounterGroup--;
   return o;
@@ -813,7 +859,7 @@
   buildCounterGroup++;
   if (buildCounterGroup < 3) {
     unittest.expect(o.adminCreated, unittest.isTrue);
-    checkUnnamed862(o.aliases);
+    checkUnnamed848(o.aliases);
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.directMembersCount, unittest.equals('foo'));
     unittest.expect(o.email, unittest.equals('foo'));
@@ -821,19 +867,19 @@
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed863(o.nonEditableAliases);
+    checkUnnamed849(o.nonEditableAliases);
   }
   buildCounterGroup--;
 }
 
-buildUnnamed864() {
+buildUnnamed850() {
   var o = new core.List<api.Group>();
   o.add(buildGroup());
   o.add(buildGroup());
   return o;
 }
 
-checkUnnamed864(core.List<api.Group> o) {
+checkUnnamed850(core.List<api.Group> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGroup(o[0]);
   checkGroup(o[1]);
@@ -845,7 +891,7 @@
   buildCounterGroups++;
   if (buildCounterGroups < 3) {
     o.etag = "foo";
-    o.groups = buildUnnamed864();
+    o.groups = buildUnnamed850();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -857,7 +903,7 @@
   buildCounterGroups++;
   if (buildCounterGroups < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed864(o.groups);
+    checkUnnamed850(o.groups);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -895,14 +941,14 @@
   buildCounterMember--;
 }
 
-buildUnnamed865() {
+buildUnnamed851() {
   var o = new core.List<api.Member>();
   o.add(buildMember());
   o.add(buildMember());
   return o;
 }
 
-checkUnnamed865(core.List<api.Member> o) {
+checkUnnamed851(core.List<api.Member> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMember(o[0]);
   checkMember(o[1]);
@@ -915,7 +961,7 @@
   if (buildCounterMembers < 3) {
     o.etag = "foo";
     o.kind = "foo";
-    o.members = buildUnnamed865();
+    o.members = buildUnnamed851();
     o.nextPageToken = "foo";
   }
   buildCounterMembers--;
@@ -927,20 +973,20 @@
   if (buildCounterMembers < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed865(o.members);
+    checkUnnamed851(o.members);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterMembers--;
 }
 
-buildUnnamed866() {
+buildUnnamed852() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed866(core.List<core.String> o) {
+checkUnnamed852(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -953,7 +999,7 @@
   if (buildCounterMobileDeviceApplications < 3) {
     o.displayName = "foo";
     o.packageName = "foo";
-    o.permission = buildUnnamed866();
+    o.permission = buildUnnamed852();
     o.versionCode = 42;
     o.versionName = "foo";
   }
@@ -966,60 +1012,60 @@
   if (buildCounterMobileDeviceApplications < 3) {
     unittest.expect(o.displayName, unittest.equals('foo'));
     unittest.expect(o.packageName, unittest.equals('foo'));
-    checkUnnamed866(o.permission);
+    checkUnnamed852(o.permission);
     unittest.expect(o.versionCode, unittest.equals(42));
     unittest.expect(o.versionName, unittest.equals('foo'));
   }
   buildCounterMobileDeviceApplications--;
 }
 
-buildUnnamed867() {
+buildUnnamed853() {
   var o = new core.List<api.MobileDeviceApplications>();
   o.add(buildMobileDeviceApplications());
   o.add(buildMobileDeviceApplications());
   return o;
 }
 
-checkUnnamed867(core.List<api.MobileDeviceApplications> o) {
+checkUnnamed853(core.List<api.MobileDeviceApplications> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMobileDeviceApplications(o[0]);
   checkMobileDeviceApplications(o[1]);
 }
 
-buildUnnamed868() {
+buildUnnamed854() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed868(core.List<core.String> o) {
+checkUnnamed854(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed869() {
+buildUnnamed855() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed869(core.List<core.String> o) {
+checkUnnamed855(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed870() {
+buildUnnamed856() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed870(core.List<core.String> o) {
+checkUnnamed856(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1031,7 +1077,7 @@
   buildCounterMobileDevice++;
   if (buildCounterMobileDevice < 3) {
     o.adbStatus = true;
-    o.applications = buildUnnamed867();
+    o.applications = buildUnnamed853();
     o.basebandVersion = "foo";
     o.bootloaderVersion = "foo";
     o.brand = "foo";
@@ -1041,7 +1087,7 @@
     o.deviceCompromisedStatus = "foo";
     o.deviceId = "foo";
     o.devicePasswordStatus = "foo";
-    o.email = buildUnnamed868();
+    o.email = buildUnnamed854();
     o.encryptionStatus = "foo";
     o.etag = "foo";
     o.firstSync = core.DateTime.parse("2002-02-27T14:01:02");
@@ -1055,10 +1101,10 @@
     o.manufacturer = "foo";
     o.meid = "foo";
     o.model = "foo";
-    o.name = buildUnnamed869();
+    o.name = buildUnnamed855();
     o.networkOperator = "foo";
     o.os = "foo";
-    o.otherAccountsInfo = buildUnnamed870();
+    o.otherAccountsInfo = buildUnnamed856();
     o.privilege = "foo";
     o.releaseVersion = "foo";
     o.resourceId = "foo";
@@ -1079,7 +1125,7 @@
   buildCounterMobileDevice++;
   if (buildCounterMobileDevice < 3) {
     unittest.expect(o.adbStatus, unittest.isTrue);
-    checkUnnamed867(o.applications);
+    checkUnnamed853(o.applications);
     unittest.expect(o.basebandVersion, unittest.equals('foo'));
     unittest.expect(o.bootloaderVersion, unittest.equals('foo'));
     unittest.expect(o.brand, unittest.equals('foo'));
@@ -1089,7 +1135,7 @@
     unittest.expect(o.deviceCompromisedStatus, unittest.equals('foo'));
     unittest.expect(o.deviceId, unittest.equals('foo'));
     unittest.expect(o.devicePasswordStatus, unittest.equals('foo'));
-    checkUnnamed868(o.email);
+    checkUnnamed854(o.email);
     unittest.expect(o.encryptionStatus, unittest.equals('foo'));
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.firstSync,
@@ -1105,10 +1151,10 @@
     unittest.expect(o.manufacturer, unittest.equals('foo'));
     unittest.expect(o.meid, unittest.equals('foo'));
     unittest.expect(o.model, unittest.equals('foo'));
-    checkUnnamed869(o.name);
+    checkUnnamed855(o.name);
     unittest.expect(o.networkOperator, unittest.equals('foo'));
     unittest.expect(o.os, unittest.equals('foo'));
-    checkUnnamed870(o.otherAccountsInfo);
+    checkUnnamed856(o.otherAccountsInfo);
     unittest.expect(o.privilege, unittest.equals('foo'));
     unittest.expect(o.releaseVersion, unittest.equals('foo'));
     unittest.expect(o.resourceId, unittest.equals('foo'));
@@ -1143,14 +1189,14 @@
   buildCounterMobileDeviceAction--;
 }
 
-buildUnnamed871() {
+buildUnnamed857() {
   var o = new core.List<api.MobileDevice>();
   o.add(buildMobileDevice());
   o.add(buildMobileDevice());
   return o;
 }
 
-checkUnnamed871(core.List<api.MobileDevice> o) {
+checkUnnamed857(core.List<api.MobileDevice> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMobileDevice(o[0]);
   checkMobileDevice(o[1]);
@@ -1163,7 +1209,7 @@
   if (buildCounterMobileDevices < 3) {
     o.etag = "foo";
     o.kind = "foo";
-    o.mobiledevices = buildUnnamed871();
+    o.mobiledevices = buildUnnamed857();
     o.nextPageToken = "foo";
   }
   buildCounterMobileDevices--;
@@ -1175,7 +1221,7 @@
   if (buildCounterMobileDevices < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed871(o.mobiledevices);
+    checkUnnamed857(o.mobiledevices);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterMobileDevices--;
@@ -1215,14 +1261,14 @@
   buildCounterNotification--;
 }
 
-buildUnnamed872() {
+buildUnnamed858() {
   var o = new core.List<api.Notification>();
   o.add(buildNotification());
   o.add(buildNotification());
   return o;
 }
 
-checkUnnamed872(core.List<api.Notification> o) {
+checkUnnamed858(core.List<api.Notification> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkNotification(o[0]);
   checkNotification(o[1]);
@@ -1234,7 +1280,7 @@
   buildCounterNotifications++;
   if (buildCounterNotifications < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed872();
+    o.items = buildUnnamed858();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.unreadNotificationsCount = 42;
@@ -1247,7 +1293,7 @@
   buildCounterNotifications++;
   if (buildCounterNotifications < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed872(o.items);
+    checkUnnamed858(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.unreadNotificationsCount, unittest.equals(42));
@@ -1290,14 +1336,14 @@
   buildCounterOrgUnit--;
 }
 
-buildUnnamed873() {
+buildUnnamed859() {
   var o = new core.List<api.OrgUnit>();
   o.add(buildOrgUnit());
   o.add(buildOrgUnit());
   return o;
 }
 
-checkUnnamed873(core.List<api.OrgUnit> o) {
+checkUnnamed859(core.List<api.OrgUnit> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOrgUnit(o[0]);
   checkOrgUnit(o[1]);
@@ -1310,7 +1356,7 @@
   if (buildCounterOrgUnits < 3) {
     o.etag = "foo";
     o.kind = "foo";
-    o.organizationUnits = buildUnnamed873();
+    o.organizationUnits = buildUnnamed859();
   }
   buildCounterOrgUnits--;
   return o;
@@ -1321,19 +1367,19 @@
   if (buildCounterOrgUnits < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed873(o.organizationUnits);
+    checkUnnamed859(o.organizationUnits);
   }
   buildCounterOrgUnits--;
 }
 
-buildUnnamed874() {
+buildUnnamed860() {
   var o = new core.List<api.Privilege>();
   o.add(buildPrivilege());
   o.add(buildPrivilege());
   return o;
 }
 
-checkUnnamed874(core.List<api.Privilege> o) {
+checkUnnamed860(core.List<api.Privilege> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPrivilege(o[0]);
   checkPrivilege(o[1]);
@@ -1344,7 +1390,7 @@
   var o = new api.Privilege();
   buildCounterPrivilege++;
   if (buildCounterPrivilege < 3) {
-    o.childPrivileges = buildUnnamed874();
+    o.childPrivileges = buildUnnamed860();
     o.etag = "foo";
     o.isOuScopable = true;
     o.kind = "foo";
@@ -1359,7 +1405,7 @@
 checkPrivilege(api.Privilege o) {
   buildCounterPrivilege++;
   if (buildCounterPrivilege < 3) {
-    checkUnnamed874(o.childPrivileges);
+    checkUnnamed860(o.childPrivileges);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.isOuScopable, unittest.isTrue);
     unittest.expect(o.kind, unittest.equals('foo'));
@@ -1370,14 +1416,14 @@
   buildCounterPrivilege--;
 }
 
-buildUnnamed875() {
+buildUnnamed861() {
   var o = new core.List<api.Privilege>();
   o.add(buildPrivilege());
   o.add(buildPrivilege());
   return o;
 }
 
-checkUnnamed875(core.List<api.Privilege> o) {
+checkUnnamed861(core.List<api.Privilege> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPrivilege(o[0]);
   checkPrivilege(o[1]);
@@ -1389,7 +1435,7 @@
   buildCounterPrivileges++;
   if (buildCounterPrivileges < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed875();
+    o.items = buildUnnamed861();
     o.kind = "foo";
   }
   buildCounterPrivileges--;
@@ -1400,7 +1446,7 @@
   buildCounterPrivileges++;
   if (buildCounterPrivileges < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed875(o.items);
+    checkUnnamed861(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterPrivileges--;
@@ -1427,14 +1473,14 @@
   buildCounterRoleRolePrivileges--;
 }
 
-buildUnnamed876() {
+buildUnnamed862() {
   var o = new core.List<api.RoleRolePrivileges>();
   o.add(buildRoleRolePrivileges());
   o.add(buildRoleRolePrivileges());
   return o;
 }
 
-checkUnnamed876(core.List<api.RoleRolePrivileges> o) {
+checkUnnamed862(core.List<api.RoleRolePrivileges> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRoleRolePrivileges(o[0]);
   checkRoleRolePrivileges(o[1]);
@@ -1452,7 +1498,7 @@
     o.roleDescription = "foo";
     o.roleId = "foo";
     o.roleName = "foo";
-    o.rolePrivileges = buildUnnamed876();
+    o.rolePrivileges = buildUnnamed862();
   }
   buildCounterRole--;
   return o;
@@ -1468,7 +1514,7 @@
     unittest.expect(o.roleDescription, unittest.equals('foo'));
     unittest.expect(o.roleId, unittest.equals('foo'));
     unittest.expect(o.roleName, unittest.equals('foo'));
-    checkUnnamed876(o.rolePrivileges);
+    checkUnnamed862(o.rolePrivileges);
   }
   buildCounterRole--;
 }
@@ -1504,14 +1550,14 @@
   buildCounterRoleAssignment--;
 }
 
-buildUnnamed877() {
+buildUnnamed863() {
   var o = new core.List<api.RoleAssignment>();
   o.add(buildRoleAssignment());
   o.add(buildRoleAssignment());
   return o;
 }
 
-checkUnnamed877(core.List<api.RoleAssignment> o) {
+checkUnnamed863(core.List<api.RoleAssignment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRoleAssignment(o[0]);
   checkRoleAssignment(o[1]);
@@ -1523,7 +1569,7 @@
   buildCounterRoleAssignments++;
   if (buildCounterRoleAssignments < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed877();
+    o.items = buildUnnamed863();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -1535,21 +1581,21 @@
   buildCounterRoleAssignments++;
   if (buildCounterRoleAssignments < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed877(o.items);
+    checkUnnamed863(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterRoleAssignments--;
 }
 
-buildUnnamed878() {
+buildUnnamed864() {
   var o = new core.List<api.Role>();
   o.add(buildRole());
   o.add(buildRole());
   return o;
 }
 
-checkUnnamed878(core.List<api.Role> o) {
+checkUnnamed864(core.List<api.Role> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRole(o[0]);
   checkRole(o[1]);
@@ -1561,7 +1607,7 @@
   buildCounterRoles++;
   if (buildCounterRoles < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed878();
+    o.items = buildUnnamed864();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -1573,21 +1619,21 @@
   buildCounterRoles++;
   if (buildCounterRoles < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed878(o.items);
+    checkUnnamed864(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterRoles--;
 }
 
-buildUnnamed879() {
+buildUnnamed865() {
   var o = new core.List<api.SchemaFieldSpec>();
   o.add(buildSchemaFieldSpec());
   o.add(buildSchemaFieldSpec());
   return o;
 }
 
-checkUnnamed879(core.List<api.SchemaFieldSpec> o) {
+checkUnnamed865(core.List<api.SchemaFieldSpec> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSchemaFieldSpec(o[0]);
   checkSchemaFieldSpec(o[1]);
@@ -1599,7 +1645,7 @@
   buildCounterSchema++;
   if (buildCounterSchema < 3) {
     o.etag = "foo";
-    o.fields = buildUnnamed879();
+    o.fields = buildUnnamed865();
     o.kind = "foo";
     o.schemaId = "foo";
     o.schemaName = "foo";
@@ -1612,7 +1658,7 @@
   buildCounterSchema++;
   if (buildCounterSchema < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed879(o.fields);
+    checkUnnamed865(o.fields);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.schemaId, unittest.equals('foo'));
     unittest.expect(o.schemaName, unittest.equals('foo'));
@@ -1677,14 +1723,14 @@
   buildCounterSchemaFieldSpec--;
 }
 
-buildUnnamed880() {
+buildUnnamed866() {
   var o = new core.List<api.Schema>();
   o.add(buildSchema());
   o.add(buildSchema());
   return o;
 }
 
-checkUnnamed880(core.List<api.Schema> o) {
+checkUnnamed866(core.List<api.Schema> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSchema(o[0]);
   checkSchema(o[1]);
@@ -1697,7 +1743,7 @@
   if (buildCounterSchemas < 3) {
     o.etag = "foo";
     o.kind = "foo";
-    o.schemas = buildUnnamed880();
+    o.schemas = buildUnnamed866();
   }
   buildCounterSchemas--;
   return o;
@@ -1708,19 +1754,19 @@
   if (buildCounterSchemas < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed880(o.schemas);
+    checkUnnamed866(o.schemas);
   }
   buildCounterSchemas--;
 }
 
-buildUnnamed881() {
+buildUnnamed867() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed881(core.List<core.String> o) {
+checkUnnamed867(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1737,7 +1783,7 @@
     o.etag = "foo";
     o.kind = "foo";
     o.nativeApp = true;
-    o.scopes = buildUnnamed881();
+    o.scopes = buildUnnamed867();
     o.userKey = "foo";
   }
   buildCounterToken--;
@@ -1753,20 +1799,20 @@
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nativeApp, unittest.isTrue);
-    checkUnnamed881(o.scopes);
+    checkUnnamed867(o.scopes);
     unittest.expect(o.userKey, unittest.equals('foo'));
   }
   buildCounterToken--;
 }
 
-buildUnnamed882() {
+buildUnnamed868() {
   var o = new core.List<api.Token>();
   o.add(buildToken());
   o.add(buildToken());
   return o;
 }
 
-checkUnnamed882(core.List<api.Token> o) {
+checkUnnamed868(core.List<api.Token> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkToken(o[0]);
   checkToken(o[1]);
@@ -1778,7 +1824,7 @@
   buildCounterTokens++;
   if (buildCounterTokens < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed882();
+    o.items = buildUnnamed868();
     o.kind = "foo";
   }
   buildCounterTokens--;
@@ -1789,46 +1835,111 @@
   buildCounterTokens++;
   if (buildCounterTokens < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed882(o.items);
+    checkUnnamed868(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterTokens--;
 }
 
-buildUnnamed883() {
+core.int buildCounterTrustedAppId = 0;
+buildTrustedAppId() {
+  var o = new api.TrustedAppId();
+  buildCounterTrustedAppId++;
+  if (buildCounterTrustedAppId < 3) {
+    o.androidPackageName = "foo";
+    o.certificateHashSHA1 = "foo";
+    o.certificateHashSHA256 = "foo";
+    o.etag = "foo";
+    o.kind = "foo";
+  }
+  buildCounterTrustedAppId--;
+  return o;
+}
+
+checkTrustedAppId(api.TrustedAppId o) {
+  buildCounterTrustedAppId++;
+  if (buildCounterTrustedAppId < 3) {
+    unittest.expect(o.androidPackageName, unittest.equals('foo'));
+    unittest.expect(o.certificateHashSHA1, unittest.equals('foo'));
+    unittest.expect(o.certificateHashSHA256, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterTrustedAppId--;
+}
+
+buildUnnamed869() {
+  var o = new core.List<api.TrustedAppId>();
+  o.add(buildTrustedAppId());
+  o.add(buildTrustedAppId());
+  return o;
+}
+
+checkUnnamed869(core.List<api.TrustedAppId> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTrustedAppId(o[0]);
+  checkTrustedAppId(o[1]);
+}
+
+core.int buildCounterTrustedApps = 0;
+buildTrustedApps() {
+  var o = new api.TrustedApps();
+  buildCounterTrustedApps++;
+  if (buildCounterTrustedApps < 3) {
+    o.etag = "foo";
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.trustedApps = buildUnnamed869();
+  }
+  buildCounterTrustedApps--;
+  return o;
+}
+
+checkTrustedApps(api.TrustedApps o) {
+  buildCounterTrustedApps++;
+  if (buildCounterTrustedApps < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed869(o.trustedApps);
+  }
+  buildCounterTrustedApps--;
+}
+
+buildUnnamed870() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed883(core.List<core.String> o) {
+checkUnnamed870(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed884() {
+buildUnnamed871() {
   var o = new core.Map<core.String, api.UserCustomProperties>();
   o["x"] = buildUserCustomProperties();
   o["y"] = buildUserCustomProperties();
   return o;
 }
 
-checkUnnamed884(core.Map<core.String, api.UserCustomProperties> o) {
+checkUnnamed871(core.Map<core.String, api.UserCustomProperties> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUserCustomProperties(o["x"]);
   checkUserCustomProperties(o["y"]);
 }
 
-buildUnnamed885() {
+buildUnnamed872() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed885(core.List<core.String> o) {
+checkUnnamed872(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1845,10 +1956,10 @@
       'string': 'foo'
     };
     o.agreedToTerms = true;
-    o.aliases = buildUnnamed883();
+    o.aliases = buildUnnamed870();
     o.changePasswordAtNextLogin = true;
     o.creationTime = core.DateTime.parse("2002-02-27T14:01:02");
-    o.customSchemas = buildUnnamed884();
+    o.customSchemas = buildUnnamed871();
     o.customerId = "foo";
     o.deletionTime = core.DateTime.parse("2002-02-27T14:01:02");
     o.emails = {
@@ -1899,7 +2010,7 @@
       'string': 'foo'
     };
     o.name = buildUserName();
-    o.nonEditableAliases = buildUnnamed885();
+    o.nonEditableAliases = buildUnnamed872();
     o.notes = {
       'list': [1, 2, 3],
       'bool': true,
@@ -1956,11 +2067,11 @@
     unittest.expect(casted3["bool"], unittest.equals(true));
     unittest.expect(casted3["string"], unittest.equals('foo'));
     unittest.expect(o.agreedToTerms, unittest.isTrue);
-    checkUnnamed883(o.aliases);
+    checkUnnamed870(o.aliases);
     unittest.expect(o.changePasswordAtNextLogin, unittest.isTrue);
     unittest.expect(o.creationTime,
         unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
-    checkUnnamed884(o.customSchemas);
+    checkUnnamed871(o.customSchemas);
     unittest.expect(o.customerId, unittest.equals('foo'));
     unittest.expect(o.deletionTime,
         unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
@@ -2013,7 +2124,7 @@
     unittest.expect(casted10["bool"], unittest.equals(true));
     unittest.expect(casted10["string"], unittest.equals('foo'));
     checkUserName(o.name);
-    checkUnnamed885(o.nonEditableAliases);
+    checkUnnamed872(o.nonEditableAliases);
     var casted11 = (o.notes) as core.Map;
     unittest.expect(casted11, unittest.hasLength(3));
     unittest.expect(casted11["list"], unittest.equals([1, 2, 3]));
@@ -2592,14 +2703,14 @@
   buildCounterUserWebsite--;
 }
 
-buildUnnamed886() {
+buildUnnamed873() {
   var o = new core.List<api.User>();
   o.add(buildUser());
   o.add(buildUser());
   return o;
 }
 
-checkUnnamed886(core.List<api.User> o) {
+checkUnnamed873(core.List<api.User> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUser(o[0]);
   checkUser(o[1]);
@@ -2614,7 +2725,7 @@
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.triggerEvent = "foo";
-    o.users = buildUnnamed886();
+    o.users = buildUnnamed873();
   }
   buildCounterUsers--;
   return o;
@@ -2627,7 +2738,7 @@
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.triggerEvent, unittest.equals('foo'));
-    checkUnnamed886(o.users);
+    checkUnnamed873(o.users);
   }
   buildCounterUsers--;
 }
@@ -2657,14 +2768,14 @@
   buildCounterVerificationCode--;
 }
 
-buildUnnamed887() {
+buildUnnamed874() {
   var o = new core.List<api.VerificationCode>();
   o.add(buildVerificationCode());
   o.add(buildVerificationCode());
   return o;
 }
 
-checkUnnamed887(core.List<api.VerificationCode> o) {
+checkUnnamed874(core.List<api.VerificationCode> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVerificationCode(o[0]);
   checkVerificationCode(o[1]);
@@ -2676,7 +2787,7 @@
   buildCounterVerificationCodes++;
   if (buildCounterVerificationCodes < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed887();
+    o.items = buildUnnamed874();
     o.kind = "foo";
   }
   buildCounterVerificationCodes--;
@@ -2687,59 +2798,59 @@
   buildCounterVerificationCodes++;
   if (buildCounterVerificationCodes < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed887(o.items);
+    checkUnnamed874(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterVerificationCodes--;
 }
 
-buildUnnamed888() {
+buildUnnamed875() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed888(core.List<core.String> o) {
+checkUnnamed875(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed889() {
+buildUnnamed876() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed889(core.List<core.String> o) {
+checkUnnamed876(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed890() {
+buildUnnamed877() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed890(core.List<core.String> o) {
+checkUnnamed877(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed891() {
+buildUnnamed878() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed891(core.List<core.String> o) {
+checkUnnamed878(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2762,6 +2873,14 @@
     });
   });
 
+  unittest.group("obj-schema-AppAccessCollections", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAppAccessCollections();
+      var od = new api.AppAccessCollections.fromJson(o.toJson());
+      checkAppAccessCollections(od);
+    });
+  });
+
   unittest.group("obj-schema-Asp", () {
     unittest.test("to-json--from-json", () {
       var o = buildAsp();
@@ -3098,6 +3217,22 @@
     });
   });
 
+  unittest.group("obj-schema-TrustedAppId", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTrustedAppId();
+      var od = new api.TrustedAppId.fromJson(o.toJson());
+      checkTrustedAppId(od);
+    });
+  });
+
+  unittest.group("obj-schema-TrustedApps", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTrustedApps();
+      var od = new api.TrustedApps.fromJson(o.toJson());
+      checkTrustedApps(od);
+    });
+  });
+
   unittest.group("obj-schema-User", () {
     unittest.test("to-json--from-json", () {
       var o = buildUser();
@@ -3296,6 +3431,7 @@
       api.AspsResourceApi res = new api.AdminApi(mock).asps;
       var arg_userKey = "foo";
       var arg_codeId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3341,6 +3477,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3348,7 +3485,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_userKey, arg_codeId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_userKey, arg_codeId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -3356,6 +3495,7 @@
       api.AspsResourceApi res = new api.AdminApi(mock).asps;
       var arg_userKey = "foo";
       var arg_codeId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3401,6 +3541,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3409,7 +3550,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_userKey, arg_codeId)
+          .get(arg_userKey, arg_codeId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Asp response) {
         checkAsp(response);
       })));
@@ -3419,6 +3560,7 @@
       var mock = new HttpServerMock();
       api.AspsResourceApi res = new api.AdminApi(mock).asps;
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3461,6 +3603,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3468,7 +3611,9 @@
         var resp = convert.JSON.encode(buildAsps());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(arg_userKey).then(unittest.expectAsync1(((api.Asps response) {
+      res
+          .list(arg_userKey, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Asps response) {
         checkAsps(response);
       })));
     });
@@ -3479,6 +3624,7 @@
       var mock = new HttpServerMock();
       api.ChannelsResourceApi res = new api.AdminApi(mock).channels;
       var arg_request = buildChannel();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Channel.fromJson(json);
         checkChannel(obj);
@@ -3512,6 +3658,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3519,7 +3666,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.stop(arg_request).then(unittest.expectAsync1((_) {}));
+      res
+          .stop(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
   });
 
@@ -3531,6 +3680,7 @@
       var arg_request = buildChromeOsDeviceAction();
       var arg_customerId = "foo";
       var arg_resourceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ChromeOsDeviceAction.fromJson(json);
         checkChromeOsDeviceAction(obj);
@@ -3585,6 +3735,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3593,7 +3744,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .action(arg_request, arg_customerId, arg_resourceId)
+          .action(arg_request, arg_customerId, arg_resourceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -3604,6 +3756,7 @@
       var arg_customerId = "foo";
       var arg_deviceId = "foo";
       var arg_projection = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3651,6 +3804,7 @@
         }
         unittest.expect(
             queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3659,7 +3813,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_customerId, arg_deviceId, projection: arg_projection)
+          .get(arg_customerId, arg_deviceId,
+              projection: arg_projection, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ChromeOsDevice response) {
         checkChromeOsDevice(response);
       })));
@@ -3677,6 +3832,7 @@
       var arg_projection = "foo";
       var arg_query = "foo";
       var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3732,6 +3888,7 @@
         unittest.expect(queryMap["query"].first, unittest.equals(arg_query));
         unittest.expect(
             queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3747,7 +3904,8 @@
               pageToken: arg_pageToken,
               projection: arg_projection,
               query: arg_query,
-              sortOrder: arg_sortOrder)
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ChromeOsDevices response) {
         checkChromeOsDevices(response);
       })));
@@ -3760,6 +3918,7 @@
       var arg_request = buildChromeOsMoveDevicesToOu();
       var arg_customerId = "foo";
       var arg_orgUnitPath = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ChromeOsMoveDevicesToOu.fromJson(json);
         checkChromeOsMoveDevicesToOu(obj);
@@ -3807,6 +3966,7 @@
         }
         unittest.expect(
             queryMap["orgUnitPath"].first, unittest.equals(arg_orgUnitPath));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3815,7 +3975,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .moveDevicesToOu(arg_request, arg_customerId, arg_orgUnitPath)
+          .moveDevicesToOu(arg_request, arg_customerId, arg_orgUnitPath,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -3827,6 +3988,7 @@
       var arg_customerId = "foo";
       var arg_deviceId = "foo";
       var arg_projection = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ChromeOsDevice.fromJson(json);
         checkChromeOsDevice(obj);
@@ -3877,6 +4039,7 @@
         }
         unittest.expect(
             queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3886,7 +4049,7 @@
       }), true);
       res
           .patch(arg_request, arg_customerId, arg_deviceId,
-              projection: arg_projection)
+              projection: arg_projection, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ChromeOsDevice response) {
         checkChromeOsDevice(response);
       })));
@@ -3900,6 +4063,7 @@
       var arg_customerId = "foo";
       var arg_deviceId = "foo";
       var arg_projection = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ChromeOsDevice.fromJson(json);
         checkChromeOsDevice(obj);
@@ -3950,6 +4114,7 @@
         }
         unittest.expect(
             queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3959,7 +4124,7 @@
       }), true);
       res
           .update(arg_request, arg_customerId, arg_deviceId,
-              projection: arg_projection)
+              projection: arg_projection, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ChromeOsDevice response) {
         checkChromeOsDevice(response);
       })));
@@ -3971,6 +4136,7 @@
       var mock = new HttpServerMock();
       api.CustomersResourceApi res = new api.AdminApi(mock).customers;
       var arg_customerKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4007,6 +4173,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4015,7 +4182,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_customerKey)
+          .get(arg_customerKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Customer response) {
         checkCustomer(response);
       })));
@@ -4026,6 +4193,7 @@
       api.CustomersResourceApi res = new api.AdminApi(mock).customers;
       var arg_request = buildCustomer();
       var arg_customerKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Customer.fromJson(json);
         checkCustomer(obj);
@@ -4065,6 +4233,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4073,7 +4242,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_customerKey)
+          .patch(arg_request, arg_customerKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Customer response) {
         checkCustomer(response);
       })));
@@ -4084,6 +4253,7 @@
       api.CustomersResourceApi res = new api.AdminApi(mock).customers;
       var arg_request = buildCustomer();
       var arg_customerKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Customer.fromJson(json);
         checkCustomer(obj);
@@ -4123,6 +4293,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4131,7 +4302,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_customerKey)
+          .update(arg_request, arg_customerKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Customer response) {
         checkCustomer(response);
       })));
@@ -4144,6 +4315,7 @@
       api.DomainAliasesResourceApi res = new api.AdminApi(mock).domainAliases;
       var arg_customer = "foo";
       var arg_domainAliasName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4189,6 +4361,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4197,7 +4370,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_customer, arg_domainAliasName)
+          .delete(arg_customer, arg_domainAliasName, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -4206,6 +4379,7 @@
       api.DomainAliasesResourceApi res = new api.AdminApi(mock).domainAliases;
       var arg_customer = "foo";
       var arg_domainAliasName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4251,6 +4425,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4259,7 +4434,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_customer, arg_domainAliasName)
+          .get(arg_customer, arg_domainAliasName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DomainAlias response) {
         checkDomainAlias(response);
       })));
@@ -4270,6 +4445,7 @@
       api.DomainAliasesResourceApi res = new api.AdminApi(mock).domainAliases;
       var arg_request = buildDomainAlias();
       var arg_customer = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DomainAlias.fromJson(json);
         checkDomainAlias(obj);
@@ -4315,6 +4491,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4323,7 +4500,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_customer)
+          .insert(arg_request, arg_customer, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DomainAlias response) {
         checkDomainAlias(response);
       })));
@@ -4334,6 +4511,7 @@
       api.DomainAliasesResourceApi res = new api.AdminApi(mock).domainAliases;
       var arg_customer = "foo";
       var arg_parentDomainName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4378,6 +4556,7 @@
         }
         unittest.expect(queryMap["parentDomainName"].first,
             unittest.equals(arg_parentDomainName));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4386,7 +4565,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_customer, parentDomainName: arg_parentDomainName)
+          .list(arg_customer,
+              parentDomainName: arg_parentDomainName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DomainAliases response) {
         checkDomainAliases(response);
       })));
@@ -4399,6 +4579,7 @@
       api.DomainsResourceApi res = new api.AdminApi(mock).domains;
       var arg_customer = "foo";
       var arg_domainName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4444,6 +4625,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4452,7 +4634,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_customer, arg_domainName)
+          .delete(arg_customer, arg_domainName, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -4461,6 +4643,7 @@
       api.DomainsResourceApi res = new api.AdminApi(mock).domains;
       var arg_customer = "foo";
       var arg_domainName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4506,6 +4689,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4514,7 +4698,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_customer, arg_domainName)
+          .get(arg_customer, arg_domainName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Domains response) {
         checkDomains(response);
       })));
@@ -4525,6 +4709,7 @@
       api.DomainsResourceApi res = new api.AdminApi(mock).domains;
       var arg_request = buildDomains();
       var arg_customer = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Domains.fromJson(json);
         checkDomains(obj);
@@ -4570,6 +4755,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4578,7 +4764,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_customer)
+          .insert(arg_request, arg_customer, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Domains response) {
         checkDomains(response);
       })));
@@ -4588,6 +4774,7 @@
       var mock = new HttpServerMock();
       api.DomainsResourceApi res = new api.AdminApi(mock).domains;
       var arg_customer = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4630,6 +4817,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4638,7 +4826,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_customer)
+          .list(arg_customer, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Domains2 response) {
         checkDomains2(response);
       })));
@@ -4650,6 +4838,7 @@
       var mock = new HttpServerMock();
       api.GroupsResourceApi res = new api.AdminApi(mock).groups;
       var arg_groupKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4686,6 +4875,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4693,13 +4883,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_groupKey).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_groupKey, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
       var mock = new HttpServerMock();
       api.GroupsResourceApi res = new api.AdminApi(mock).groups;
       var arg_groupKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4736,6 +4929,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4743,7 +4937,9 @@
         var resp = convert.JSON.encode(buildGroup());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_groupKey).then(unittest.expectAsync1(((api.Group response) {
+      res
+          .get(arg_groupKey, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Group response) {
         checkGroup(response);
       })));
     });
@@ -4752,6 +4948,7 @@
       var mock = new HttpServerMock();
       api.GroupsResourceApi res = new api.AdminApi(mock).groups;
       var arg_request = buildGroup();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Group.fromJson(json);
         checkGroup(obj);
@@ -4788,6 +4985,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4795,7 +4993,9 @@
         var resp = convert.JSON.encode(buildGroup());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.insert(arg_request).then(unittest.expectAsync1(((api.Group response) {
+      res
+          .insert(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Group response) {
         checkGroup(response);
       })));
     });
@@ -4808,6 +5008,7 @@
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4850,6 +5051,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(
             queryMap["userKey"].first, unittest.equals(arg_userKey));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4863,7 +5065,8 @@
               domain: arg_domain,
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
-              userKey: arg_userKey)
+              userKey: arg_userKey,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Groups response) {
         checkGroups(response);
       })));
@@ -4874,6 +5077,7 @@
       api.GroupsResourceApi res = new api.AdminApi(mock).groups;
       var arg_request = buildGroup();
       var arg_groupKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Group.fromJson(json);
         checkGroup(obj);
@@ -4913,6 +5117,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4921,7 +5126,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_groupKey)
+          .patch(arg_request, arg_groupKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Group response) {
         checkGroup(response);
       })));
@@ -4932,6 +5137,7 @@
       api.GroupsResourceApi res = new api.AdminApi(mock).groups;
       var arg_request = buildGroup();
       var arg_groupKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Group.fromJson(json);
         checkGroup(obj);
@@ -4971,6 +5177,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4979,7 +5186,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_groupKey)
+          .update(arg_request, arg_groupKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Group response) {
         checkGroup(response);
       })));
@@ -4992,6 +5199,7 @@
       api.GroupsAliasesResourceApi res = new api.AdminApi(mock).groups.aliases;
       var arg_groupKey = "foo";
       var arg_alias = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5037,6 +5245,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5044,7 +5253,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_groupKey, arg_alias).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_groupKey, arg_alias, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--insert", () {
@@ -5052,6 +5263,7 @@
       api.GroupsAliasesResourceApi res = new api.AdminApi(mock).groups.aliases;
       var arg_request = buildAlias();
       var arg_groupKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Alias.fromJson(json);
         checkAlias(obj);
@@ -5097,6 +5309,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5105,7 +5318,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_groupKey)
+          .insert(arg_request, arg_groupKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Alias response) {
         checkAlias(response);
       })));
@@ -5115,6 +5328,7 @@
       var mock = new HttpServerMock();
       api.GroupsAliasesResourceApi res = new api.AdminApi(mock).groups.aliases;
       var arg_groupKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5157,6 +5371,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5165,7 +5380,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_groupKey)
+          .list(arg_groupKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Aliases response) {
         checkAliases(response);
       })));
@@ -5178,6 +5393,7 @@
       api.MembersResourceApi res = new api.AdminApi(mock).members;
       var arg_groupKey = "foo";
       var arg_memberKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5223,6 +5439,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5231,7 +5448,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_groupKey, arg_memberKey)
+          .delete(arg_groupKey, arg_memberKey, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -5240,6 +5457,7 @@
       api.MembersResourceApi res = new api.AdminApi(mock).members;
       var arg_groupKey = "foo";
       var arg_memberKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5285,6 +5503,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5293,7 +5512,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_groupKey, arg_memberKey)
+          .get(arg_groupKey, arg_memberKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Member response) {
         checkMember(response);
       })));
@@ -5304,6 +5523,7 @@
       api.MembersResourceApi res = new api.AdminApi(mock).members;
       var arg_request = buildMember();
       var arg_groupKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Member.fromJson(json);
         checkMember(obj);
@@ -5349,6 +5569,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5357,7 +5578,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_groupKey)
+          .insert(arg_request, arg_groupKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Member response) {
         checkMember(response);
       })));
@@ -5370,6 +5591,7 @@
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
       var arg_roles = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5417,6 +5639,7 @@
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(queryMap["roles"].first, unittest.equals(arg_roles));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5428,7 +5651,8 @@
           .list(arg_groupKey,
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
-              roles: arg_roles)
+              roles: arg_roles,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Members response) {
         checkMembers(response);
       })));
@@ -5440,6 +5664,7 @@
       var arg_request = buildMember();
       var arg_groupKey = "foo";
       var arg_memberKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Member.fromJson(json);
         checkMember(obj);
@@ -5488,6 +5713,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5496,7 +5722,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_groupKey, arg_memberKey)
+          .patch(arg_request, arg_groupKey, arg_memberKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Member response) {
         checkMember(response);
       })));
@@ -5508,6 +5734,7 @@
       var arg_request = buildMember();
       var arg_groupKey = "foo";
       var arg_memberKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Member.fromJson(json);
         checkMember(obj);
@@ -5556,6 +5783,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5564,7 +5792,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_groupKey, arg_memberKey)
+          .update(arg_request, arg_groupKey, arg_memberKey,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Member response) {
         checkMember(response);
       })));
@@ -5578,6 +5807,7 @@
       var arg_request = buildMobileDeviceAction();
       var arg_customerId = "foo";
       var arg_resourceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.MobileDeviceAction.fromJson(json);
         checkMobileDeviceAction(obj);
@@ -5632,6 +5862,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5640,7 +5871,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .action(arg_request, arg_customerId, arg_resourceId)
+          .action(arg_request, arg_customerId, arg_resourceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -5649,6 +5881,7 @@
       api.MobiledevicesResourceApi res = new api.AdminApi(mock).mobiledevices;
       var arg_customerId = "foo";
       var arg_resourceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5694,6 +5927,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5702,7 +5936,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_customerId, arg_resourceId)
+          .delete(arg_customerId, arg_resourceId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -5712,6 +5946,7 @@
       var arg_customerId = "foo";
       var arg_resourceId = "foo";
       var arg_projection = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5759,6 +5994,7 @@
         }
         unittest.expect(
             queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5767,7 +6003,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_customerId, arg_resourceId, projection: arg_projection)
+          .get(arg_customerId, arg_resourceId,
+              projection: arg_projection, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.MobileDevice response) {
         checkMobileDevice(response);
       })));
@@ -5783,6 +6020,7 @@
       var arg_projection = "foo";
       var arg_query = "foo";
       var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5836,6 +6074,7 @@
         unittest.expect(queryMap["query"].first, unittest.equals(arg_query));
         unittest.expect(
             queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5850,7 +6089,8 @@
               pageToken: arg_pageToken,
               projection: arg_projection,
               query: arg_query,
-              sortOrder: arg_sortOrder)
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.MobileDevices response) {
         checkMobileDevices(response);
       })));
@@ -5863,6 +6103,7 @@
       api.NotificationsResourceApi res = new api.AdminApi(mock).notifications;
       var arg_customer = "foo";
       var arg_notificationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5908,6 +6149,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5916,7 +6158,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_customer, arg_notificationId)
+          .delete(arg_customer, arg_notificationId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -5925,6 +6167,7 @@
       api.NotificationsResourceApi res = new api.AdminApi(mock).notifications;
       var arg_customer = "foo";
       var arg_notificationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5970,6 +6213,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5978,7 +6222,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_customer, arg_notificationId)
+          .get(arg_customer, arg_notificationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Notification response) {
         checkNotification(response);
       })));
@@ -5991,6 +6235,7 @@
       var arg_language = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6039,6 +6284,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6050,7 +6296,8 @@
           .list(arg_customer,
               language: arg_language,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Notifications response) {
         checkNotifications(response);
       })));
@@ -6062,6 +6309,7 @@
       var arg_request = buildNotification();
       var arg_customer = "foo";
       var arg_notificationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Notification.fromJson(json);
         checkNotification(obj);
@@ -6110,6 +6358,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6118,7 +6367,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_customer, arg_notificationId)
+          .patch(arg_request, arg_customer, arg_notificationId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Notification response) {
         checkNotification(response);
       })));
@@ -6130,6 +6380,7 @@
       var arg_request = buildNotification();
       var arg_customer = "foo";
       var arg_notificationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Notification.fromJson(json);
         checkNotification(obj);
@@ -6178,6 +6429,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6186,7 +6438,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_customer, arg_notificationId)
+          .update(arg_request, arg_customer, arg_notificationId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Notification response) {
         checkNotification(response);
       })));
@@ -6198,7 +6451,8 @@
       var mock = new HttpServerMock();
       api.OrgunitsResourceApi res = new api.AdminApi(mock).orgunits;
       var arg_customerId = "foo";
-      var arg_orgUnitPath = buildUnnamed888();
+      var arg_orgUnitPath = buildUnnamed875();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6248,6 +6502,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6256,7 +6511,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_customerId, arg_orgUnitPath)
+          .delete(arg_customerId, arg_orgUnitPath, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -6264,7 +6519,8 @@
       var mock = new HttpServerMock();
       api.OrgunitsResourceApi res = new api.AdminApi(mock).orgunits;
       var arg_customerId = "foo";
-      var arg_orgUnitPath = buildUnnamed889();
+      var arg_orgUnitPath = buildUnnamed876();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6314,6 +6570,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6322,7 +6579,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_customerId, arg_orgUnitPath)
+          .get(arg_customerId, arg_orgUnitPath, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OrgUnit response) {
         checkOrgUnit(response);
       })));
@@ -6333,6 +6590,7 @@
       api.OrgunitsResourceApi res = new api.AdminApi(mock).orgunits;
       var arg_request = buildOrgUnit();
       var arg_customerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.OrgUnit.fromJson(json);
         checkOrgUnit(obj);
@@ -6378,6 +6636,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6386,7 +6645,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_customerId)
+          .insert(arg_request, arg_customerId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OrgUnit response) {
         checkOrgUnit(response);
       })));
@@ -6398,6 +6657,7 @@
       var arg_customerId = "foo";
       var arg_orgUnitPath = "foo";
       var arg_type = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6443,6 +6703,7 @@
         unittest.expect(
             queryMap["orgUnitPath"].first, unittest.equals(arg_orgUnitPath));
         unittest.expect(queryMap["type"].first, unittest.equals(arg_type));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6451,7 +6712,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_customerId, orgUnitPath: arg_orgUnitPath, type: arg_type)
+          .list(arg_customerId,
+              orgUnitPath: arg_orgUnitPath,
+              type: arg_type,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OrgUnits response) {
         checkOrgUnits(response);
       })));
@@ -6462,7 +6726,8 @@
       api.OrgunitsResourceApi res = new api.AdminApi(mock).orgunits;
       var arg_request = buildOrgUnit();
       var arg_customerId = "foo";
-      var arg_orgUnitPath = buildUnnamed890();
+      var arg_orgUnitPath = buildUnnamed877();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.OrgUnit.fromJson(json);
         checkOrgUnit(obj);
@@ -6515,6 +6780,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6523,7 +6789,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_customerId, arg_orgUnitPath)
+          .patch(arg_request, arg_customerId, arg_orgUnitPath,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OrgUnit response) {
         checkOrgUnit(response);
       })));
@@ -6534,7 +6801,8 @@
       api.OrgunitsResourceApi res = new api.AdminApi(mock).orgunits;
       var arg_request = buildOrgUnit();
       var arg_customerId = "foo";
-      var arg_orgUnitPath = buildUnnamed891();
+      var arg_orgUnitPath = buildUnnamed878();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.OrgUnit.fromJson(json);
         checkOrgUnit(obj);
@@ -6587,6 +6855,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6595,7 +6864,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_customerId, arg_orgUnitPath)
+          .update(arg_request, arg_customerId, arg_orgUnitPath,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OrgUnit response) {
         checkOrgUnit(response);
       })));
@@ -6607,6 +6877,7 @@
       var mock = new HttpServerMock();
       api.PrivilegesResourceApi res = new api.AdminApi(mock).privileges;
       var arg_customer = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6649,6 +6920,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6657,13 +6929,121 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_customer)
+          .list(arg_customer, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Privileges response) {
         checkPrivileges(response);
       })));
     });
   });
 
+  unittest.group("resource-ResolvedAppAccessSettingsResourceApi", () {
+    unittest.test("method--GetSettings", () {
+      var mock = new HttpServerMock();
+      api.ResolvedAppAccessSettingsResourceApi res =
+          new api.AdminApi(mock).resolvedAppAccessSettings;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("admin/directory/v1/"));
+        pathOffset += 19;
+        unittest.expect(path.substring(pathOffset, pathOffset + 25),
+            unittest.equals("resolvedappaccesssettings"));
+        pathOffset += 25;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAppAccessCollections());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .GetSettings($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AppAccessCollections response) {
+        checkAppAccessCollections(response);
+      })));
+    });
+
+    unittest.test("method--ListTrustedApps", () {
+      var mock = new HttpServerMock();
+      api.ResolvedAppAccessSettingsResourceApi res =
+          new api.AdminApi(mock).resolvedAppAccessSettings;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("admin/directory/v1/"));
+        pathOffset += 19;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("trustedapps"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTrustedApps());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .ListTrustedApps($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TrustedApps response) {
+        checkTrustedApps(response);
+      })));
+    });
+  });
+
   unittest.group("resource-ResourcesCalendarsResourceApi", () {
     unittest.test("method--delete", () {
       var mock = new HttpServerMock();
@@ -6671,6 +7051,7 @@
           new api.AdminApi(mock).resources.calendars;
       var arg_customer = "foo";
       var arg_calendarResourceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6716,6 +7097,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6724,7 +7106,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_customer, arg_calendarResourceId)
+          .delete(arg_customer, arg_calendarResourceId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -6734,6 +7116,7 @@
           new api.AdminApi(mock).resources.calendars;
       var arg_customer = "foo";
       var arg_calendarResourceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6779,6 +7162,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6787,7 +7171,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_customer, arg_calendarResourceId)
+          .get(arg_customer, arg_calendarResourceId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CalendarResource response) {
         checkCalendarResource(response);
       })));
@@ -6799,6 +7183,7 @@
           new api.AdminApi(mock).resources.calendars;
       var arg_request = buildCalendarResource();
       var arg_customer = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CalendarResource.fromJson(json);
         checkCalendarResource(obj);
@@ -6844,6 +7229,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6852,7 +7238,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_customer)
+          .insert(arg_request, arg_customer, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CalendarResource response) {
         checkCalendarResource(response);
       })));
@@ -6865,6 +7251,7 @@
       var arg_customer = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6911,6 +7298,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6920,7 +7308,9 @@
       }), true);
       res
           .list(arg_customer,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CalendarResources response) {
         checkCalendarResources(response);
       })));
@@ -6933,6 +7323,7 @@
       var arg_request = buildCalendarResource();
       var arg_customer = "foo";
       var arg_calendarResourceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CalendarResource.fromJson(json);
         checkCalendarResource(obj);
@@ -6981,6 +7372,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6989,7 +7381,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_customer, arg_calendarResourceId)
+          .patch(arg_request, arg_customer, arg_calendarResourceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CalendarResource response) {
         checkCalendarResource(response);
       })));
@@ -7002,6 +7395,7 @@
       var arg_request = buildCalendarResource();
       var arg_customer = "foo";
       var arg_calendarResourceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CalendarResource.fromJson(json);
         checkCalendarResource(obj);
@@ -7050,6 +7444,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7058,7 +7453,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_customer, arg_calendarResourceId)
+          .update(arg_request, arg_customer, arg_calendarResourceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CalendarResource response) {
         checkCalendarResource(response);
       })));
@@ -7072,6 +7468,7 @@
           new api.AdminApi(mock).roleAssignments;
       var arg_customer = "foo";
       var arg_roleAssignmentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7117,6 +7514,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7125,7 +7523,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_customer, arg_roleAssignmentId)
+          .delete(arg_customer, arg_roleAssignmentId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -7135,6 +7533,7 @@
           new api.AdminApi(mock).roleAssignments;
       var arg_customer = "foo";
       var arg_roleAssignmentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7180,6 +7579,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7188,7 +7588,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_customer, arg_roleAssignmentId)
+          .get(arg_customer, arg_roleAssignmentId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RoleAssignment response) {
         checkRoleAssignment(response);
       })));
@@ -7200,6 +7600,7 @@
           new api.AdminApi(mock).roleAssignments;
       var arg_request = buildRoleAssignment();
       var arg_customer = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RoleAssignment.fromJson(json);
         checkRoleAssignment(obj);
@@ -7245,6 +7646,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7253,7 +7655,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_customer)
+          .insert(arg_request, arg_customer, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RoleAssignment response) {
         checkRoleAssignment(response);
       })));
@@ -7268,6 +7670,7 @@
       var arg_pageToken = "foo";
       var arg_roleId = "foo";
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7317,6 +7720,7 @@
         unittest.expect(queryMap["roleId"].first, unittest.equals(arg_roleId));
         unittest.expect(
             queryMap["userKey"].first, unittest.equals(arg_userKey));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7329,7 +7733,8 @@
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
               roleId: arg_roleId,
-              userKey: arg_userKey)
+              userKey: arg_userKey,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RoleAssignments response) {
         checkRoleAssignments(response);
       })));
@@ -7342,6 +7747,7 @@
       api.RolesResourceApi res = new api.AdminApi(mock).roles;
       var arg_customer = "foo";
       var arg_roleId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7387,6 +7793,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7394,7 +7801,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_customer, arg_roleId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_customer, arg_roleId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -7402,6 +7811,7 @@
       api.RolesResourceApi res = new api.AdminApi(mock).roles;
       var arg_customer = "foo";
       var arg_roleId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7447,6 +7857,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7455,7 +7866,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_customer, arg_roleId)
+          .get(arg_customer, arg_roleId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Role response) {
         checkRole(response);
       })));
@@ -7466,6 +7877,7 @@
       api.RolesResourceApi res = new api.AdminApi(mock).roles;
       var arg_request = buildRole();
       var arg_customer = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Role.fromJson(json);
         checkRole(obj);
@@ -7511,6 +7923,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7519,7 +7932,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_customer)
+          .insert(arg_request, arg_customer, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Role response) {
         checkRole(response);
       })));
@@ -7531,6 +7944,7 @@
       var arg_customer = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7577,6 +7991,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7586,7 +8001,9 @@
       }), true);
       res
           .list(arg_customer,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Roles response) {
         checkRoles(response);
       })));
@@ -7598,6 +8015,7 @@
       var arg_request = buildRole();
       var arg_customer = "foo";
       var arg_roleId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Role.fromJson(json);
         checkRole(obj);
@@ -7646,6 +8064,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7654,7 +8073,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_customer, arg_roleId)
+          .patch(arg_request, arg_customer, arg_roleId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Role response) {
         checkRole(response);
       })));
@@ -7666,6 +8085,7 @@
       var arg_request = buildRole();
       var arg_customer = "foo";
       var arg_roleId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Role.fromJson(json);
         checkRole(obj);
@@ -7714,6 +8134,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7722,7 +8143,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_customer, arg_roleId)
+          .update(arg_request, arg_customer, arg_roleId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Role response) {
         checkRole(response);
       })));
@@ -7735,6 +8156,7 @@
       api.SchemasResourceApi res = new api.AdminApi(mock).schemas;
       var arg_customerId = "foo";
       var arg_schemaKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7780,6 +8202,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7788,7 +8211,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_customerId, arg_schemaKey)
+          .delete(arg_customerId, arg_schemaKey, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -7797,6 +8220,7 @@
       api.SchemasResourceApi res = new api.AdminApi(mock).schemas;
       var arg_customerId = "foo";
       var arg_schemaKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7842,6 +8266,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7850,7 +8275,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_customerId, arg_schemaKey)
+          .get(arg_customerId, arg_schemaKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Schema response) {
         checkSchema(response);
       })));
@@ -7861,6 +8286,7 @@
       api.SchemasResourceApi res = new api.AdminApi(mock).schemas;
       var arg_request = buildSchema();
       var arg_customerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Schema.fromJson(json);
         checkSchema(obj);
@@ -7906,6 +8332,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7914,7 +8341,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_customerId)
+          .insert(arg_request, arg_customerId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Schema response) {
         checkSchema(response);
       })));
@@ -7924,6 +8351,7 @@
       var mock = new HttpServerMock();
       api.SchemasResourceApi res = new api.AdminApi(mock).schemas;
       var arg_customerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7966,6 +8394,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7974,7 +8403,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_customerId)
+          .list(arg_customerId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Schemas response) {
         checkSchemas(response);
       })));
@@ -7986,6 +8415,7 @@
       var arg_request = buildSchema();
       var arg_customerId = "foo";
       var arg_schemaKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Schema.fromJson(json);
         checkSchema(obj);
@@ -8034,6 +8464,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8042,7 +8473,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_customerId, arg_schemaKey)
+          .patch(arg_request, arg_customerId, arg_schemaKey,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Schema response) {
         checkSchema(response);
       })));
@@ -8054,6 +8486,7 @@
       var arg_request = buildSchema();
       var arg_customerId = "foo";
       var arg_schemaKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Schema.fromJson(json);
         checkSchema(obj);
@@ -8102,6 +8535,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8110,7 +8544,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_customerId, arg_schemaKey)
+          .update(arg_request, arg_customerId, arg_schemaKey,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Schema response) {
         checkSchema(response);
       })));
@@ -8123,6 +8558,7 @@
       api.TokensResourceApi res = new api.AdminApi(mock).tokens;
       var arg_userKey = "foo";
       var arg_clientId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8168,6 +8604,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8175,7 +8612,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_userKey, arg_clientId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_userKey, arg_clientId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -8183,6 +8622,7 @@
       api.TokensResourceApi res = new api.AdminApi(mock).tokens;
       var arg_userKey = "foo";
       var arg_clientId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8228,6 +8668,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8236,7 +8677,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_userKey, arg_clientId)
+          .get(arg_userKey, arg_clientId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Token response) {
         checkToken(response);
       })));
@@ -8246,6 +8687,7 @@
       var mock = new HttpServerMock();
       api.TokensResourceApi res = new api.AdminApi(mock).tokens;
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8288,6 +8730,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8295,7 +8738,9 @@
         var resp = convert.JSON.encode(buildTokens());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(arg_userKey).then(unittest.expectAsync1(((api.Tokens response) {
+      res
+          .list(arg_userKey, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Tokens response) {
         checkTokens(response);
       })));
     });
@@ -8306,6 +8751,7 @@
       var mock = new HttpServerMock();
       api.UsersResourceApi res = new api.AdminApi(mock).users;
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8342,6 +8788,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8349,7 +8796,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_userKey).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_userKey, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -8359,6 +8808,7 @@
       var arg_customFieldMask = "foo";
       var arg_projection = "foo";
       var arg_viewType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8401,6 +8851,7 @@
             queryMap["projection"].first, unittest.equals(arg_projection));
         unittest.expect(
             queryMap["viewType"].first, unittest.equals(arg_viewType));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8412,7 +8863,8 @@
           .get(arg_userKey,
               customFieldMask: arg_customFieldMask,
               projection: arg_projection,
-              viewType: arg_viewType)
+              viewType: arg_viewType,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.User response) {
         checkUser(response);
       })));
@@ -8422,6 +8874,7 @@
       var mock = new HttpServerMock();
       api.UsersResourceApi res = new api.AdminApi(mock).users;
       var arg_request = buildUser();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.User.fromJson(json);
         checkUser(obj);
@@ -8458,6 +8911,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8465,7 +8919,9 @@
         var resp = convert.JSON.encode(buildUser());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.insert(arg_request).then(unittest.expectAsync1(((api.User response) {
+      res
+          .insert(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.User response) {
         checkUser(response);
       })));
     });
@@ -8485,6 +8941,7 @@
       var arg_showDeleted = "foo";
       var arg_sortOrder = "foo";
       var arg_viewType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8539,6 +8996,7 @@
             queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
         unittest.expect(
             queryMap["viewType"].first, unittest.equals(arg_viewType));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8559,7 +9017,8 @@
               query: arg_query,
               showDeleted: arg_showDeleted,
               sortOrder: arg_sortOrder,
-              viewType: arg_viewType)
+              viewType: arg_viewType,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Users response) {
         checkUsers(response);
       })));
@@ -8570,6 +9029,7 @@
       api.UsersResourceApi res = new api.AdminApi(mock).users;
       var arg_request = buildUserMakeAdmin();
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UserMakeAdmin.fromJson(json);
         checkUserMakeAdmin(obj);
@@ -8615,6 +9075,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8623,7 +9084,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .makeAdmin(arg_request, arg_userKey)
+          .makeAdmin(arg_request, arg_userKey, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -8632,6 +9093,7 @@
       api.UsersResourceApi res = new api.AdminApi(mock).users;
       var arg_request = buildUser();
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.User.fromJson(json);
         checkUser(obj);
@@ -8671,6 +9133,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8679,7 +9142,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_userKey)
+          .patch(arg_request, arg_userKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.User response) {
         checkUser(response);
       })));
@@ -8690,6 +9153,7 @@
       api.UsersResourceApi res = new api.AdminApi(mock).users;
       var arg_request = buildUserUndelete();
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UserUndelete.fromJson(json);
         checkUserUndelete(obj);
@@ -8735,6 +9199,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8743,7 +9208,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .undelete(arg_request, arg_userKey)
+          .undelete(arg_request, arg_userKey, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -8752,6 +9217,7 @@
       api.UsersResourceApi res = new api.AdminApi(mock).users;
       var arg_request = buildUser();
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.User.fromJson(json);
         checkUser(obj);
@@ -8791,6 +9257,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8799,7 +9266,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_userKey)
+          .update(arg_request, arg_userKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.User response) {
         checkUser(response);
       })));
@@ -8821,6 +9288,7 @@
       var arg_showDeleted = "foo";
       var arg_sortOrder = "foo";
       var arg_viewType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Channel.fromJson(json);
         checkChannel(obj);
@@ -8878,6 +9346,7 @@
             queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
         unittest.expect(
             queryMap["viewType"].first, unittest.equals(arg_viewType));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8898,7 +9367,8 @@
               query: arg_query,
               showDeleted: arg_showDeleted,
               sortOrder: arg_sortOrder,
-              viewType: arg_viewType)
+              viewType: arg_viewType,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Channel response) {
         checkChannel(response);
       })));
@@ -8911,6 +9381,7 @@
       api.UsersAliasesResourceApi res = new api.AdminApi(mock).users.aliases;
       var arg_userKey = "foo";
       var arg_alias = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8956,6 +9427,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8963,7 +9435,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_userKey, arg_alias).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_userKey, arg_alias, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--insert", () {
@@ -8971,6 +9445,7 @@
       api.UsersAliasesResourceApi res = new api.AdminApi(mock).users.aliases;
       var arg_request = buildAlias();
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Alias.fromJson(json);
         checkAlias(obj);
@@ -9016,6 +9491,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9024,7 +9500,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_userKey)
+          .insert(arg_request, arg_userKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Alias response) {
         checkAlias(response);
       })));
@@ -9035,6 +9511,7 @@
       api.UsersAliasesResourceApi res = new api.AdminApi(mock).users.aliases;
       var arg_userKey = "foo";
       var arg_event = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9078,6 +9555,7 @@
           }
         }
         unittest.expect(queryMap["event"].first, unittest.equals(arg_event));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9086,7 +9564,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_userKey, event: arg_event)
+          .list(arg_userKey, event: arg_event, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Aliases response) {
         checkAliases(response);
       })));
@@ -9098,6 +9576,7 @@
       var arg_request = buildChannel();
       var arg_userKey = "foo";
       var arg_event = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Channel.fromJson(json);
         checkChannel(obj);
@@ -9144,6 +9623,7 @@
           }
         }
         unittest.expect(queryMap["event"].first, unittest.equals(arg_event));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9152,7 +9632,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .watch(arg_request, arg_userKey, event: arg_event)
+          .watch(arg_request, arg_userKey,
+              event: arg_event, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Channel response) {
         checkChannel(response);
       })));
@@ -9164,6 +9645,7 @@
       var mock = new HttpServerMock();
       api.UsersPhotosResourceApi res = new api.AdminApi(mock).users.photos;
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9206,6 +9688,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9213,13 +9696,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_userKey).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_userKey, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
       var mock = new HttpServerMock();
       api.UsersPhotosResourceApi res = new api.AdminApi(mock).users.photos;
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9262,6 +9748,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9270,7 +9757,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_userKey)
+          .get(arg_userKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UserPhoto response) {
         checkUserPhoto(response);
       })));
@@ -9281,6 +9768,7 @@
       api.UsersPhotosResourceApi res = new api.AdminApi(mock).users.photos;
       var arg_request = buildUserPhoto();
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UserPhoto.fromJson(json);
         checkUserPhoto(obj);
@@ -9326,6 +9814,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9334,7 +9823,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_userKey)
+          .patch(arg_request, arg_userKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UserPhoto response) {
         checkUserPhoto(response);
       })));
@@ -9345,6 +9834,7 @@
       api.UsersPhotosResourceApi res = new api.AdminApi(mock).users.photos;
       var arg_request = buildUserPhoto();
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UserPhoto.fromJson(json);
         checkUserPhoto(obj);
@@ -9390,6 +9880,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9398,7 +9889,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_userKey)
+          .update(arg_request, arg_userKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UserPhoto response) {
         checkUserPhoto(response);
       })));
@@ -9411,6 +9902,7 @@
       api.VerificationCodesResourceApi res =
           new api.AdminApi(mock).verificationCodes;
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9453,6 +9945,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9460,7 +9953,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.generate(arg_userKey).then(unittest.expectAsync1((_) {}));
+      res
+          .generate(arg_userKey, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--invalidate", () {
@@ -9468,6 +9963,7 @@
       api.VerificationCodesResourceApi res =
           new api.AdminApi(mock).verificationCodes;
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9510,6 +10006,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9517,7 +10014,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.invalidate(arg_userKey).then(unittest.expectAsync1((_) {}));
+      res
+          .invalidate(arg_userKey, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--list", () {
@@ -9525,6 +10024,7 @@
       api.VerificationCodesResourceApi res =
           new api.AdminApi(mock).verificationCodes;
       var arg_userKey = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9567,6 +10067,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9575,7 +10076,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_userKey)
+          .list(arg_userKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.VerificationCodes response) {
         checkVerificationCodes(response);
       })));
diff --git a/generated/googleapis/test/admin/reports_v1_test.dart b/generated/googleapis/test/admin/reports_v1_test.dart
index 2ee1426..100f8c8 100644
--- a/generated/googleapis/test/admin/reports_v1_test.dart
+++ b/generated/googleapis/test/admin/reports_v1_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed727() {
+buildUnnamed712() {
   var o = new core.List<api.Activity>();
   o.add(buildActivity());
   o.add(buildActivity());
   return o;
 }
 
-checkUnnamed727(core.List<api.Activity> o) {
+checkUnnamed712(core.List<api.Activity> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkActivity(o[0]);
   checkActivity(o[1]);
@@ -69,7 +69,7 @@
   buildCounterActivities++;
   if (buildCounterActivities < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed727();
+    o.items = buildUnnamed712();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -81,7 +81,7 @@
   buildCounterActivities++;
   if (buildCounterActivities < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed727(o.items);
+    checkUnnamed712(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -113,27 +113,27 @@
   buildCounterActivityActor--;
 }
 
-buildUnnamed728() {
+buildUnnamed713() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed728(core.List<core.String> o) {
+checkUnnamed713(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed729() {
+buildUnnamed714() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed729(core.List<core.String> o) {
+checkUnnamed714(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -146,8 +146,8 @@
   if (buildCounterActivityEventsParameters < 3) {
     o.boolValue = true;
     o.intValue = "foo";
-    o.multiIntValue = buildUnnamed728();
-    o.multiValue = buildUnnamed729();
+    o.multiIntValue = buildUnnamed713();
+    o.multiValue = buildUnnamed714();
     o.name = "foo";
     o.value = "foo";
   }
@@ -160,22 +160,22 @@
   if (buildCounterActivityEventsParameters < 3) {
     unittest.expect(o.boolValue, unittest.isTrue);
     unittest.expect(o.intValue, unittest.equals('foo'));
-    checkUnnamed728(o.multiIntValue);
-    checkUnnamed729(o.multiValue);
+    checkUnnamed713(o.multiIntValue);
+    checkUnnamed714(o.multiValue);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.value, unittest.equals('foo'));
   }
   buildCounterActivityEventsParameters--;
 }
 
-buildUnnamed730() {
+buildUnnamed715() {
   var o = new core.List<api.ActivityEventsParameters>();
   o.add(buildActivityEventsParameters());
   o.add(buildActivityEventsParameters());
   return o;
 }
 
-checkUnnamed730(core.List<api.ActivityEventsParameters> o) {
+checkUnnamed715(core.List<api.ActivityEventsParameters> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkActivityEventsParameters(o[0]);
   checkActivityEventsParameters(o[1]);
@@ -187,7 +187,7 @@
   buildCounterActivityEvents++;
   if (buildCounterActivityEvents < 3) {
     o.name = "foo";
-    o.parameters = buildUnnamed730();
+    o.parameters = buildUnnamed715();
     o.type = "foo";
   }
   buildCounterActivityEvents--;
@@ -198,20 +198,20 @@
   buildCounterActivityEvents++;
   if (buildCounterActivityEvents < 3) {
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed730(o.parameters);
+    checkUnnamed715(o.parameters);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterActivityEvents--;
 }
 
-buildUnnamed731() {
+buildUnnamed716() {
   var o = new core.List<api.ActivityEvents>();
   o.add(buildActivityEvents());
   o.add(buildActivityEvents());
   return o;
 }
 
-checkUnnamed731(core.List<api.ActivityEvents> o) {
+checkUnnamed716(core.List<api.ActivityEvents> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkActivityEvents(o[0]);
   checkActivityEvents(o[1]);
@@ -250,7 +250,7 @@
   if (buildCounterActivity < 3) {
     o.actor = buildActivityActor();
     o.etag = "foo";
-    o.events = buildUnnamed731();
+    o.events = buildUnnamed716();
     o.id = buildActivityId();
     o.ipAddress = "foo";
     o.kind = "foo";
@@ -265,7 +265,7 @@
   if (buildCounterActivity < 3) {
     checkActivityActor(o.actor);
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed731(o.events);
+    checkUnnamed716(o.events);
     checkActivityId(o.id);
     unittest.expect(o.ipAddress, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
@@ -274,14 +274,14 @@
   buildCounterActivity--;
 }
 
-buildUnnamed732() {
+buildUnnamed717() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed732(core.Map<core.String, core.String> o) {
+checkUnnamed717(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -296,7 +296,7 @@
     o.expiration = "foo";
     o.id = "foo";
     o.kind = "foo";
-    o.params = buildUnnamed732();
+    o.params = buildUnnamed717();
     o.payload = true;
     o.resourceId = "foo";
     o.resourceUri = "foo";
@@ -314,7 +314,7 @@
     unittest.expect(o.expiration, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed732(o.params);
+    checkUnnamed717(o.params);
     unittest.expect(o.payload, unittest.isTrue);
     unittest.expect(o.resourceId, unittest.equals('foo'));
     unittest.expect(o.resourceUri, unittest.equals('foo'));
@@ -349,7 +349,7 @@
   buildCounterUsageReportEntity--;
 }
 
-buildUnnamed733() {
+buildUnnamed718() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -364,7 +364,7 @@
   return o;
 }
 
-checkUnnamed733(core.Map<core.String, core.Object> o) {
+checkUnnamed718(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -378,17 +378,17 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed734() {
+buildUnnamed719() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed733());
-  o.add(buildUnnamed733());
+  o.add(buildUnnamed718());
+  o.add(buildUnnamed718());
   return o;
 }
 
-checkUnnamed734(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed719(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed733(o[0]);
-  checkUnnamed733(o[1]);
+  checkUnnamed718(o[0]);
+  checkUnnamed718(o[1]);
 }
 
 core.int buildCounterUsageReportParameters = 0;
@@ -399,7 +399,7 @@
     o.boolValue = true;
     o.datetimeValue = core.DateTime.parse("2002-02-27T14:01:02");
     o.intValue = "foo";
-    o.msgValue = buildUnnamed734();
+    o.msgValue = buildUnnamed719();
     o.name = "foo";
     o.stringValue = "foo";
   }
@@ -414,21 +414,21 @@
     unittest.expect(o.datetimeValue,
         unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
     unittest.expect(o.intValue, unittest.equals('foo'));
-    checkUnnamed734(o.msgValue);
+    checkUnnamed719(o.msgValue);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.stringValue, unittest.equals('foo'));
   }
   buildCounterUsageReportParameters--;
 }
 
-buildUnnamed735() {
+buildUnnamed720() {
   var o = new core.List<api.UsageReportParameters>();
   o.add(buildUsageReportParameters());
   o.add(buildUsageReportParameters());
   return o;
 }
 
-checkUnnamed735(core.List<api.UsageReportParameters> o) {
+checkUnnamed720(core.List<api.UsageReportParameters> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUsageReportParameters(o[0]);
   checkUsageReportParameters(o[1]);
@@ -443,7 +443,7 @@
     o.entity = buildUsageReportEntity();
     o.etag = "foo";
     o.kind = "foo";
-    o.parameters = buildUnnamed735();
+    o.parameters = buildUnnamed720();
   }
   buildCounterUsageReport--;
   return o;
@@ -456,19 +456,19 @@
     checkUsageReportEntity(o.entity);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed735(o.parameters);
+    checkUnnamed720(o.parameters);
   }
   buildCounterUsageReport--;
 }
 
-buildUnnamed736() {
+buildUnnamed721() {
   var o = new core.List<api.UsageReport>();
   o.add(buildUsageReport());
   o.add(buildUsageReport());
   return o;
 }
 
-checkUnnamed736(core.List<api.UsageReport> o) {
+checkUnnamed721(core.List<api.UsageReport> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUsageReport(o[0]);
   checkUsageReport(o[1]);
@@ -495,14 +495,14 @@
   buildCounterUsageReportsWarningsData--;
 }
 
-buildUnnamed737() {
+buildUnnamed722() {
   var o = new core.List<api.UsageReportsWarningsData>();
   o.add(buildUsageReportsWarningsData());
   o.add(buildUsageReportsWarningsData());
   return o;
 }
 
-checkUnnamed737(core.List<api.UsageReportsWarningsData> o) {
+checkUnnamed722(core.List<api.UsageReportsWarningsData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUsageReportsWarningsData(o[0]);
   checkUsageReportsWarningsData(o[1]);
@@ -514,7 +514,7 @@
   buildCounterUsageReportsWarnings++;
   if (buildCounterUsageReportsWarnings < 3) {
     o.code = "foo";
-    o.data = buildUnnamed737();
+    o.data = buildUnnamed722();
     o.message = "foo";
   }
   buildCounterUsageReportsWarnings--;
@@ -525,20 +525,20 @@
   buildCounterUsageReportsWarnings++;
   if (buildCounterUsageReportsWarnings < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed737(o.data);
+    checkUnnamed722(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterUsageReportsWarnings--;
 }
 
-buildUnnamed738() {
+buildUnnamed723() {
   var o = new core.List<api.UsageReportsWarnings>();
   o.add(buildUsageReportsWarnings());
   o.add(buildUsageReportsWarnings());
   return o;
 }
 
-checkUnnamed738(core.List<api.UsageReportsWarnings> o) {
+checkUnnamed723(core.List<api.UsageReportsWarnings> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUsageReportsWarnings(o[0]);
   checkUsageReportsWarnings(o[1]);
@@ -552,8 +552,8 @@
     o.etag = "foo";
     o.kind = "foo";
     o.nextPageToken = "foo";
-    o.usageReports = buildUnnamed736();
-    o.warnings = buildUnnamed738();
+    o.usageReports = buildUnnamed721();
+    o.warnings = buildUnnamed723();
   }
   buildCounterUsageReports--;
   return o;
@@ -565,8 +565,8 @@
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed736(o.usageReports);
-    checkUnnamed738(o.warnings);
+    checkUnnamed721(o.usageReports);
+    checkUnnamed723(o.warnings);
   }
   buildCounterUsageReports--;
 }
@@ -690,6 +690,7 @@
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
       var arg_startTime = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -751,6 +752,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(
             queryMap["startTime"].first, unittest.equals(arg_startTime));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -767,7 +769,8 @@
               filters: arg_filters,
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
-              startTime: arg_startTime)
+              startTime: arg_startTime,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Activities response) {
         checkActivities(response);
       })));
@@ -787,6 +790,7 @@
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
       var arg_startTime = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Channel.fromJson(json);
         checkChannel(obj);
@@ -857,6 +861,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(
             queryMap["startTime"].first, unittest.equals(arg_startTime));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -873,7 +878,8 @@
               filters: arg_filters,
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
-              startTime: arg_startTime)
+              startTime: arg_startTime,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Channel response) {
         checkChannel(response);
       })));
@@ -885,6 +891,7 @@
       var mock = new HttpServerMock();
       api.ChannelsResourceApi res = new api.AdminApi(mock).channels;
       var arg_request = buildChannel();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Channel.fromJson(json);
         checkChannel(obj);
@@ -918,6 +925,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -925,7 +933,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.stop(arg_request).then(unittest.expectAsync1((_) {}));
+      res
+          .stop(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
   });
 
@@ -938,6 +948,7 @@
       var arg_customerId = "foo";
       var arg_pageToken = "foo";
       var arg_parameters = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -980,6 +991,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(
             queryMap["parameters"].first, unittest.equals(arg_parameters));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -991,7 +1003,8 @@
           .get(arg_date,
               customerId: arg_customerId,
               pageToken: arg_pageToken,
-              parameters: arg_parameters)
+              parameters: arg_parameters,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UsageReports response) {
         checkUsageReports(response);
       })));
@@ -1010,6 +1023,7 @@
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
       var arg_parameters = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1065,6 +1079,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(
             queryMap["parameters"].first, unittest.equals(arg_parameters));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1078,7 +1093,8 @@
               filters: arg_filters,
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
-              parameters: arg_parameters)
+              parameters: arg_parameters,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UsageReports response) {
         checkUsageReports(response);
       })));
diff --git a/generated/googleapis/test/adsense/v1_4_test.dart b/generated/googleapis/test/adsense/v1_4_test.dart
new file mode 100644
index 0000000..e722110
--- /dev/null
+++ b/generated/googleapis/test/adsense/v1_4_test.dart
@@ -0,0 +1,4269 @@
+library googleapis.adsense.v1_4.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/adsense/v1_4.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+buildUnnamed1953() {
+  var o = new core.List<api.Account>();
+  o.add(buildAccount());
+  o.add(buildAccount());
+  return o;
+}
+
+checkUnnamed1953(core.List<api.Account> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccount(o[0]);
+  checkAccount(o[1]);
+}
+
+core.int buildCounterAccount = 0;
+buildAccount() {
+  var o = new api.Account();
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    o.creationTime = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.premium = true;
+    o.subAccounts = buildUnnamed1953();
+    o.timezone = "foo";
+  }
+  buildCounterAccount--;
+  return o;
+}
+
+checkAccount(api.Account o) {
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    unittest.expect(o.creationTime, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.premium, unittest.isTrue);
+    checkUnnamed1953(o.subAccounts);
+    unittest.expect(o.timezone, unittest.equals('foo'));
+  }
+  buildCounterAccount--;
+}
+
+buildUnnamed1954() {
+  var o = new core.List<api.Account>();
+  o.add(buildAccount());
+  o.add(buildAccount());
+  return o;
+}
+
+checkUnnamed1954(core.List<api.Account> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccount(o[0]);
+  checkAccount(o[1]);
+}
+
+core.int buildCounterAccounts = 0;
+buildAccounts() {
+  var o = new api.Accounts();
+  buildCounterAccounts++;
+  if (buildCounterAccounts < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1954();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterAccounts--;
+  return o;
+}
+
+checkAccounts(api.Accounts o) {
+  buildCounterAccounts++;
+  if (buildCounterAccounts < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1954(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterAccounts--;
+}
+
+core.int buildCounterAdClient = 0;
+buildAdClient() {
+  var o = new api.AdClient();
+  buildCounterAdClient++;
+  if (buildCounterAdClient < 3) {
+    o.arcOptIn = true;
+    o.id = "foo";
+    o.kind = "foo";
+    o.productCode = "foo";
+    o.supportsReporting = true;
+  }
+  buildCounterAdClient--;
+  return o;
+}
+
+checkAdClient(api.AdClient o) {
+  buildCounterAdClient++;
+  if (buildCounterAdClient < 3) {
+    unittest.expect(o.arcOptIn, unittest.isTrue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.productCode, unittest.equals('foo'));
+    unittest.expect(o.supportsReporting, unittest.isTrue);
+  }
+  buildCounterAdClient--;
+}
+
+buildUnnamed1955() {
+  var o = new core.List<api.AdClient>();
+  o.add(buildAdClient());
+  o.add(buildAdClient());
+  return o;
+}
+
+checkUnnamed1955(core.List<api.AdClient> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAdClient(o[0]);
+  checkAdClient(o[1]);
+}
+
+core.int buildCounterAdClients = 0;
+buildAdClients() {
+  var o = new api.AdClients();
+  buildCounterAdClients++;
+  if (buildCounterAdClients < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1955();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterAdClients--;
+  return o;
+}
+
+checkAdClients(api.AdClients o) {
+  buildCounterAdClients++;
+  if (buildCounterAdClients < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1955(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterAdClients--;
+}
+
+core.int buildCounterAdCode = 0;
+buildAdCode() {
+  var o = new api.AdCode();
+  buildCounterAdCode++;
+  if (buildCounterAdCode < 3) {
+    o.adCode = "foo";
+    o.kind = "foo";
+  }
+  buildCounterAdCode--;
+  return o;
+}
+
+checkAdCode(api.AdCode o) {
+  buildCounterAdCode++;
+  if (buildCounterAdCode < 3) {
+    unittest.expect(o.adCode, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAdCode--;
+}
+
+core.int buildCounterAdStyleColors = 0;
+buildAdStyleColors() {
+  var o = new api.AdStyleColors();
+  buildCounterAdStyleColors++;
+  if (buildCounterAdStyleColors < 3) {
+    o.background = "foo";
+    o.border = "foo";
+    o.text = "foo";
+    o.title = "foo";
+    o.url = "foo";
+  }
+  buildCounterAdStyleColors--;
+  return o;
+}
+
+checkAdStyleColors(api.AdStyleColors o) {
+  buildCounterAdStyleColors++;
+  if (buildCounterAdStyleColors < 3) {
+    unittest.expect(o.background, unittest.equals('foo'));
+    unittest.expect(o.border, unittest.equals('foo'));
+    unittest.expect(o.text, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterAdStyleColors--;
+}
+
+core.int buildCounterAdStyleFont = 0;
+buildAdStyleFont() {
+  var o = new api.AdStyleFont();
+  buildCounterAdStyleFont++;
+  if (buildCounterAdStyleFont < 3) {
+    o.family = "foo";
+    o.size = "foo";
+  }
+  buildCounterAdStyleFont--;
+  return o;
+}
+
+checkAdStyleFont(api.AdStyleFont o) {
+  buildCounterAdStyleFont++;
+  if (buildCounterAdStyleFont < 3) {
+    unittest.expect(o.family, unittest.equals('foo'));
+    unittest.expect(o.size, unittest.equals('foo'));
+  }
+  buildCounterAdStyleFont--;
+}
+
+core.int buildCounterAdStyle = 0;
+buildAdStyle() {
+  var o = new api.AdStyle();
+  buildCounterAdStyle++;
+  if (buildCounterAdStyle < 3) {
+    o.colors = buildAdStyleColors();
+    o.corners = "foo";
+    o.font = buildAdStyleFont();
+    o.kind = "foo";
+  }
+  buildCounterAdStyle--;
+  return o;
+}
+
+checkAdStyle(api.AdStyle o) {
+  buildCounterAdStyle++;
+  if (buildCounterAdStyle < 3) {
+    checkAdStyleColors(o.colors);
+    unittest.expect(o.corners, unittest.equals('foo'));
+    checkAdStyleFont(o.font);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAdStyle--;
+}
+
+core.int buildCounterAdUnitContentAdsSettingsBackupOption = 0;
+buildAdUnitContentAdsSettingsBackupOption() {
+  var o = new api.AdUnitContentAdsSettingsBackupOption();
+  buildCounterAdUnitContentAdsSettingsBackupOption++;
+  if (buildCounterAdUnitContentAdsSettingsBackupOption < 3) {
+    o.color = "foo";
+    o.type = "foo";
+    o.url = "foo";
+  }
+  buildCounterAdUnitContentAdsSettingsBackupOption--;
+  return o;
+}
+
+checkAdUnitContentAdsSettingsBackupOption(
+    api.AdUnitContentAdsSettingsBackupOption o) {
+  buildCounterAdUnitContentAdsSettingsBackupOption++;
+  if (buildCounterAdUnitContentAdsSettingsBackupOption < 3) {
+    unittest.expect(o.color, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterAdUnitContentAdsSettingsBackupOption--;
+}
+
+core.int buildCounterAdUnitContentAdsSettings = 0;
+buildAdUnitContentAdsSettings() {
+  var o = new api.AdUnitContentAdsSettings();
+  buildCounterAdUnitContentAdsSettings++;
+  if (buildCounterAdUnitContentAdsSettings < 3) {
+    o.backupOption = buildAdUnitContentAdsSettingsBackupOption();
+    o.size = "foo";
+    o.type = "foo";
+  }
+  buildCounterAdUnitContentAdsSettings--;
+  return o;
+}
+
+checkAdUnitContentAdsSettings(api.AdUnitContentAdsSettings o) {
+  buildCounterAdUnitContentAdsSettings++;
+  if (buildCounterAdUnitContentAdsSettings < 3) {
+    checkAdUnitContentAdsSettingsBackupOption(o.backupOption);
+    unittest.expect(o.size, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterAdUnitContentAdsSettings--;
+}
+
+core.int buildCounterAdUnitFeedAdsSettings = 0;
+buildAdUnitFeedAdsSettings() {
+  var o = new api.AdUnitFeedAdsSettings();
+  buildCounterAdUnitFeedAdsSettings++;
+  if (buildCounterAdUnitFeedAdsSettings < 3) {
+    o.adPosition = "foo";
+    o.frequency = 42;
+    o.minimumWordCount = 42;
+    o.type = "foo";
+  }
+  buildCounterAdUnitFeedAdsSettings--;
+  return o;
+}
+
+checkAdUnitFeedAdsSettings(api.AdUnitFeedAdsSettings o) {
+  buildCounterAdUnitFeedAdsSettings++;
+  if (buildCounterAdUnitFeedAdsSettings < 3) {
+    unittest.expect(o.adPosition, unittest.equals('foo'));
+    unittest.expect(o.frequency, unittest.equals(42));
+    unittest.expect(o.minimumWordCount, unittest.equals(42));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterAdUnitFeedAdsSettings--;
+}
+
+core.int buildCounterAdUnitMobileContentAdsSettings = 0;
+buildAdUnitMobileContentAdsSettings() {
+  var o = new api.AdUnitMobileContentAdsSettings();
+  buildCounterAdUnitMobileContentAdsSettings++;
+  if (buildCounterAdUnitMobileContentAdsSettings < 3) {
+    o.markupLanguage = "foo";
+    o.scriptingLanguage = "foo";
+    o.size = "foo";
+    o.type = "foo";
+  }
+  buildCounterAdUnitMobileContentAdsSettings--;
+  return o;
+}
+
+checkAdUnitMobileContentAdsSettings(api.AdUnitMobileContentAdsSettings o) {
+  buildCounterAdUnitMobileContentAdsSettings++;
+  if (buildCounterAdUnitMobileContentAdsSettings < 3) {
+    unittest.expect(o.markupLanguage, unittest.equals('foo'));
+    unittest.expect(o.scriptingLanguage, unittest.equals('foo'));
+    unittest.expect(o.size, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterAdUnitMobileContentAdsSettings--;
+}
+
+core.int buildCounterAdUnit = 0;
+buildAdUnit() {
+  var o = new api.AdUnit();
+  buildCounterAdUnit++;
+  if (buildCounterAdUnit < 3) {
+    o.code = "foo";
+    o.contentAdsSettings = buildAdUnitContentAdsSettings();
+    o.customStyle = buildAdStyle();
+    o.feedAdsSettings = buildAdUnitFeedAdsSettings();
+    o.id = "foo";
+    o.kind = "foo";
+    o.mobileContentAdsSettings = buildAdUnitMobileContentAdsSettings();
+    o.name = "foo";
+    o.savedStyleId = "foo";
+    o.status = "foo";
+  }
+  buildCounterAdUnit--;
+  return o;
+}
+
+checkAdUnit(api.AdUnit o) {
+  buildCounterAdUnit++;
+  if (buildCounterAdUnit < 3) {
+    unittest.expect(o.code, unittest.equals('foo'));
+    checkAdUnitContentAdsSettings(o.contentAdsSettings);
+    checkAdStyle(o.customStyle);
+    checkAdUnitFeedAdsSettings(o.feedAdsSettings);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkAdUnitMobileContentAdsSettings(o.mobileContentAdsSettings);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.savedStyleId, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+  }
+  buildCounterAdUnit--;
+}
+
+buildUnnamed1956() {
+  var o = new core.List<api.AdUnit>();
+  o.add(buildAdUnit());
+  o.add(buildAdUnit());
+  return o;
+}
+
+checkUnnamed1956(core.List<api.AdUnit> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAdUnit(o[0]);
+  checkAdUnit(o[1]);
+}
+
+core.int buildCounterAdUnits = 0;
+buildAdUnits() {
+  var o = new api.AdUnits();
+  buildCounterAdUnits++;
+  if (buildCounterAdUnits < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1956();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterAdUnits--;
+  return o;
+}
+
+checkAdUnits(api.AdUnits o) {
+  buildCounterAdUnits++;
+  if (buildCounterAdUnits < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1956(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterAdUnits--;
+}
+
+buildUnnamed1957() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1957(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAdsenseReportsGenerateResponseHeaders = 0;
+buildAdsenseReportsGenerateResponseHeaders() {
+  var o = new api.AdsenseReportsGenerateResponseHeaders();
+  buildCounterAdsenseReportsGenerateResponseHeaders++;
+  if (buildCounterAdsenseReportsGenerateResponseHeaders < 3) {
+    o.currency = "foo";
+    o.name = "foo";
+    o.type = "foo";
+  }
+  buildCounterAdsenseReportsGenerateResponseHeaders--;
+  return o;
+}
+
+checkAdsenseReportsGenerateResponseHeaders(
+    api.AdsenseReportsGenerateResponseHeaders o) {
+  buildCounterAdsenseReportsGenerateResponseHeaders++;
+  if (buildCounterAdsenseReportsGenerateResponseHeaders < 3) {
+    unittest.expect(o.currency, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterAdsenseReportsGenerateResponseHeaders--;
+}
+
+buildUnnamed1958() {
+  var o = new core.List<api.AdsenseReportsGenerateResponseHeaders>();
+  o.add(buildAdsenseReportsGenerateResponseHeaders());
+  o.add(buildAdsenseReportsGenerateResponseHeaders());
+  return o;
+}
+
+checkUnnamed1958(core.List<api.AdsenseReportsGenerateResponseHeaders> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAdsenseReportsGenerateResponseHeaders(o[0]);
+  checkAdsenseReportsGenerateResponseHeaders(o[1]);
+}
+
+buildUnnamed1959() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1959(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1960() {
+  var o = new core.List<core.List<core.String>>();
+  o.add(buildUnnamed1959());
+  o.add(buildUnnamed1959());
+  return o;
+}
+
+checkUnnamed1960(core.List<core.List<core.String>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed1959(o[0]);
+  checkUnnamed1959(o[1]);
+}
+
+buildUnnamed1961() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1961(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1962() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1962(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAdsenseReportsGenerateResponse = 0;
+buildAdsenseReportsGenerateResponse() {
+  var o = new api.AdsenseReportsGenerateResponse();
+  buildCounterAdsenseReportsGenerateResponse++;
+  if (buildCounterAdsenseReportsGenerateResponse < 3) {
+    o.averages = buildUnnamed1957();
+    o.endDate = "foo";
+    o.headers = buildUnnamed1958();
+    o.kind = "foo";
+    o.rows = buildUnnamed1960();
+    o.startDate = "foo";
+    o.totalMatchedRows = "foo";
+    o.totals = buildUnnamed1961();
+    o.warnings = buildUnnamed1962();
+  }
+  buildCounterAdsenseReportsGenerateResponse--;
+  return o;
+}
+
+checkAdsenseReportsGenerateResponse(api.AdsenseReportsGenerateResponse o) {
+  buildCounterAdsenseReportsGenerateResponse++;
+  if (buildCounterAdsenseReportsGenerateResponse < 3) {
+    checkUnnamed1957(o.averages);
+    unittest.expect(o.endDate, unittest.equals('foo'));
+    checkUnnamed1958(o.headers);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed1960(o.rows);
+    unittest.expect(o.startDate, unittest.equals('foo'));
+    unittest.expect(o.totalMatchedRows, unittest.equals('foo'));
+    checkUnnamed1961(o.totals);
+    checkUnnamed1962(o.warnings);
+  }
+  buildCounterAdsenseReportsGenerateResponse--;
+}
+
+core.int buildCounterAlert = 0;
+buildAlert() {
+  var o = new api.Alert();
+  buildCounterAlert++;
+  if (buildCounterAlert < 3) {
+    o.id = "foo";
+    o.isDismissible = true;
+    o.kind = "foo";
+    o.message = "foo";
+    o.severity = "foo";
+    o.type = "foo";
+  }
+  buildCounterAlert--;
+  return o;
+}
+
+checkAlert(api.Alert o) {
+  buildCounterAlert++;
+  if (buildCounterAlert < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.isDismissible, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.message, unittest.equals('foo'));
+    unittest.expect(o.severity, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterAlert--;
+}
+
+buildUnnamed1963() {
+  var o = new core.List<api.Alert>();
+  o.add(buildAlert());
+  o.add(buildAlert());
+  return o;
+}
+
+checkUnnamed1963(core.List<api.Alert> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAlert(o[0]);
+  checkAlert(o[1]);
+}
+
+core.int buildCounterAlerts = 0;
+buildAlerts() {
+  var o = new api.Alerts();
+  buildCounterAlerts++;
+  if (buildCounterAlerts < 3) {
+    o.items = buildUnnamed1963();
+    o.kind = "foo";
+  }
+  buildCounterAlerts--;
+  return o;
+}
+
+checkAlerts(api.Alerts o) {
+  buildCounterAlerts++;
+  if (buildCounterAlerts < 3) {
+    checkUnnamed1963(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAlerts--;
+}
+
+core.int buildCounterCustomChannelTargetingInfo = 0;
+buildCustomChannelTargetingInfo() {
+  var o = new api.CustomChannelTargetingInfo();
+  buildCounterCustomChannelTargetingInfo++;
+  if (buildCounterCustomChannelTargetingInfo < 3) {
+    o.adsAppearOn = "foo";
+    o.description = "foo";
+    o.location = "foo";
+    o.siteLanguage = "foo";
+  }
+  buildCounterCustomChannelTargetingInfo--;
+  return o;
+}
+
+checkCustomChannelTargetingInfo(api.CustomChannelTargetingInfo o) {
+  buildCounterCustomChannelTargetingInfo++;
+  if (buildCounterCustomChannelTargetingInfo < 3) {
+    unittest.expect(o.adsAppearOn, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    unittest.expect(o.siteLanguage, unittest.equals('foo'));
+  }
+  buildCounterCustomChannelTargetingInfo--;
+}
+
+core.int buildCounterCustomChannel = 0;
+buildCustomChannel() {
+  var o = new api.CustomChannel();
+  buildCounterCustomChannel++;
+  if (buildCounterCustomChannel < 3) {
+    o.code = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.targetingInfo = buildCustomChannelTargetingInfo();
+  }
+  buildCounterCustomChannel--;
+  return o;
+}
+
+checkCustomChannel(api.CustomChannel o) {
+  buildCounterCustomChannel++;
+  if (buildCounterCustomChannel < 3) {
+    unittest.expect(o.code, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkCustomChannelTargetingInfo(o.targetingInfo);
+  }
+  buildCounterCustomChannel--;
+}
+
+buildUnnamed1964() {
+  var o = new core.List<api.CustomChannel>();
+  o.add(buildCustomChannel());
+  o.add(buildCustomChannel());
+  return o;
+}
+
+checkUnnamed1964(core.List<api.CustomChannel> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCustomChannel(o[0]);
+  checkCustomChannel(o[1]);
+}
+
+core.int buildCounterCustomChannels = 0;
+buildCustomChannels() {
+  var o = new api.CustomChannels();
+  buildCounterCustomChannels++;
+  if (buildCounterCustomChannels < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1964();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterCustomChannels--;
+  return o;
+}
+
+checkCustomChannels(api.CustomChannels o) {
+  buildCounterCustomChannels++;
+  if (buildCounterCustomChannels < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1964(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterCustomChannels--;
+}
+
+buildUnnamed1965() {
+  var o = new core.List<api.ReportingMetadataEntry>();
+  o.add(buildReportingMetadataEntry());
+  o.add(buildReportingMetadataEntry());
+  return o;
+}
+
+checkUnnamed1965(core.List<api.ReportingMetadataEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkReportingMetadataEntry(o[0]);
+  checkReportingMetadataEntry(o[1]);
+}
+
+core.int buildCounterMetadata = 0;
+buildMetadata() {
+  var o = new api.Metadata();
+  buildCounterMetadata++;
+  if (buildCounterMetadata < 3) {
+    o.items = buildUnnamed1965();
+    o.kind = "foo";
+  }
+  buildCounterMetadata--;
+  return o;
+}
+
+checkMetadata(api.Metadata o) {
+  buildCounterMetadata++;
+  if (buildCounterMetadata < 3) {
+    checkUnnamed1965(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterMetadata--;
+}
+
+core.int buildCounterPayment = 0;
+buildPayment() {
+  var o = new api.Payment();
+  buildCounterPayment++;
+  if (buildCounterPayment < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.paymentAmount = "foo";
+    o.paymentAmountCurrencyCode = "foo";
+    o.paymentDate = "foo";
+  }
+  buildCounterPayment--;
+  return o;
+}
+
+checkPayment(api.Payment o) {
+  buildCounterPayment++;
+  if (buildCounterPayment < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.paymentAmount, unittest.equals('foo'));
+    unittest.expect(o.paymentAmountCurrencyCode, unittest.equals('foo'));
+    unittest.expect(o.paymentDate, unittest.equals('foo'));
+  }
+  buildCounterPayment--;
+}
+
+buildUnnamed1966() {
+  var o = new core.List<api.Payment>();
+  o.add(buildPayment());
+  o.add(buildPayment());
+  return o;
+}
+
+checkUnnamed1966(core.List<api.Payment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPayment(o[0]);
+  checkPayment(o[1]);
+}
+
+core.int buildCounterPayments = 0;
+buildPayments() {
+  var o = new api.Payments();
+  buildCounterPayments++;
+  if (buildCounterPayments < 3) {
+    o.items = buildUnnamed1966();
+    o.kind = "foo";
+  }
+  buildCounterPayments--;
+  return o;
+}
+
+checkPayments(api.Payments o) {
+  buildCounterPayments++;
+  if (buildCounterPayments < 3) {
+    checkUnnamed1966(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterPayments--;
+}
+
+buildUnnamed1967() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1967(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1968() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1968(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1969() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1969(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1970() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1970(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1971() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1971(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterReportingMetadataEntry = 0;
+buildReportingMetadataEntry() {
+  var o = new api.ReportingMetadataEntry();
+  buildCounterReportingMetadataEntry++;
+  if (buildCounterReportingMetadataEntry < 3) {
+    o.compatibleDimensions = buildUnnamed1967();
+    o.compatibleMetrics = buildUnnamed1968();
+    o.id = "foo";
+    o.kind = "foo";
+    o.requiredDimensions = buildUnnamed1969();
+    o.requiredMetrics = buildUnnamed1970();
+    o.supportedProducts = buildUnnamed1971();
+  }
+  buildCounterReportingMetadataEntry--;
+  return o;
+}
+
+checkReportingMetadataEntry(api.ReportingMetadataEntry o) {
+  buildCounterReportingMetadataEntry++;
+  if (buildCounterReportingMetadataEntry < 3) {
+    checkUnnamed1967(o.compatibleDimensions);
+    checkUnnamed1968(o.compatibleMetrics);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed1969(o.requiredDimensions);
+    checkUnnamed1970(o.requiredMetrics);
+    checkUnnamed1971(o.supportedProducts);
+  }
+  buildCounterReportingMetadataEntry--;
+}
+
+core.int buildCounterSavedAdStyle = 0;
+buildSavedAdStyle() {
+  var o = new api.SavedAdStyle();
+  buildCounterSavedAdStyle++;
+  if (buildCounterSavedAdStyle < 3) {
+    o.adStyle = buildAdStyle();
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterSavedAdStyle--;
+  return o;
+}
+
+checkSavedAdStyle(api.SavedAdStyle o) {
+  buildCounterSavedAdStyle++;
+  if (buildCounterSavedAdStyle < 3) {
+    checkAdStyle(o.adStyle);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterSavedAdStyle--;
+}
+
+buildUnnamed1972() {
+  var o = new core.List<api.SavedAdStyle>();
+  o.add(buildSavedAdStyle());
+  o.add(buildSavedAdStyle());
+  return o;
+}
+
+checkUnnamed1972(core.List<api.SavedAdStyle> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSavedAdStyle(o[0]);
+  checkSavedAdStyle(o[1]);
+}
+
+core.int buildCounterSavedAdStyles = 0;
+buildSavedAdStyles() {
+  var o = new api.SavedAdStyles();
+  buildCounterSavedAdStyles++;
+  if (buildCounterSavedAdStyles < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1972();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterSavedAdStyles--;
+  return o;
+}
+
+checkSavedAdStyles(api.SavedAdStyles o) {
+  buildCounterSavedAdStyles++;
+  if (buildCounterSavedAdStyles < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1972(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterSavedAdStyles--;
+}
+
+core.int buildCounterSavedReport = 0;
+buildSavedReport() {
+  var o = new api.SavedReport();
+  buildCounterSavedReport++;
+  if (buildCounterSavedReport < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterSavedReport--;
+  return o;
+}
+
+checkSavedReport(api.SavedReport o) {
+  buildCounterSavedReport++;
+  if (buildCounterSavedReport < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterSavedReport--;
+}
+
+buildUnnamed1973() {
+  var o = new core.List<api.SavedReport>();
+  o.add(buildSavedReport());
+  o.add(buildSavedReport());
+  return o;
+}
+
+checkUnnamed1973(core.List<api.SavedReport> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSavedReport(o[0]);
+  checkSavedReport(o[1]);
+}
+
+core.int buildCounterSavedReports = 0;
+buildSavedReports() {
+  var o = new api.SavedReports();
+  buildCounterSavedReports++;
+  if (buildCounterSavedReports < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1973();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterSavedReports--;
+  return o;
+}
+
+checkSavedReports(api.SavedReports o) {
+  buildCounterSavedReports++;
+  if (buildCounterSavedReports < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1973(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterSavedReports--;
+}
+
+core.int buildCounterUrlChannel = 0;
+buildUrlChannel() {
+  var o = new api.UrlChannel();
+  buildCounterUrlChannel++;
+  if (buildCounterUrlChannel < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.urlPattern = "foo";
+  }
+  buildCounterUrlChannel--;
+  return o;
+}
+
+checkUrlChannel(api.UrlChannel o) {
+  buildCounterUrlChannel++;
+  if (buildCounterUrlChannel < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.urlPattern, unittest.equals('foo'));
+  }
+  buildCounterUrlChannel--;
+}
+
+buildUnnamed1974() {
+  var o = new core.List<api.UrlChannel>();
+  o.add(buildUrlChannel());
+  o.add(buildUrlChannel());
+  return o;
+}
+
+checkUnnamed1974(core.List<api.UrlChannel> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUrlChannel(o[0]);
+  checkUrlChannel(o[1]);
+}
+
+core.int buildCounterUrlChannels = 0;
+buildUrlChannels() {
+  var o = new api.UrlChannels();
+  buildCounterUrlChannels++;
+  if (buildCounterUrlChannels < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1974();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterUrlChannels--;
+  return o;
+}
+
+checkUrlChannels(api.UrlChannels o) {
+  buildCounterUrlChannels++;
+  if (buildCounterUrlChannels < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1974(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterUrlChannels--;
+}
+
+buildUnnamed1975() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1975(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1976() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1976(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1977() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1977(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1978() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1978(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1979() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1979(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1980() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1980(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1981() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1981(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1982() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1982(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1983() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1983(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-Account", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccount();
+      var od = new api.Account.fromJson(o.toJson());
+      checkAccount(od);
+    });
+  });
+
+  unittest.group("obj-schema-Accounts", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccounts();
+      var od = new api.Accounts.fromJson(o.toJson());
+      checkAccounts(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdClient", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdClient();
+      var od = new api.AdClient.fromJson(o.toJson());
+      checkAdClient(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdClients", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdClients();
+      var od = new api.AdClients.fromJson(o.toJson());
+      checkAdClients(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdCode", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdCode();
+      var od = new api.AdCode.fromJson(o.toJson());
+      checkAdCode(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdStyleColors", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdStyleColors();
+      var od = new api.AdStyleColors.fromJson(o.toJson());
+      checkAdStyleColors(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdStyleFont", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdStyleFont();
+      var od = new api.AdStyleFont.fromJson(o.toJson());
+      checkAdStyleFont(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdStyle", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdStyle();
+      var od = new api.AdStyle.fromJson(o.toJson());
+      checkAdStyle(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdUnitContentAdsSettingsBackupOption", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdUnitContentAdsSettingsBackupOption();
+      var od =
+          new api.AdUnitContentAdsSettingsBackupOption.fromJson(o.toJson());
+      checkAdUnitContentAdsSettingsBackupOption(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdUnitContentAdsSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdUnitContentAdsSettings();
+      var od = new api.AdUnitContentAdsSettings.fromJson(o.toJson());
+      checkAdUnitContentAdsSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdUnitFeedAdsSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdUnitFeedAdsSettings();
+      var od = new api.AdUnitFeedAdsSettings.fromJson(o.toJson());
+      checkAdUnitFeedAdsSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdUnitMobileContentAdsSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdUnitMobileContentAdsSettings();
+      var od = new api.AdUnitMobileContentAdsSettings.fromJson(o.toJson());
+      checkAdUnitMobileContentAdsSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdUnit", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdUnit();
+      var od = new api.AdUnit.fromJson(o.toJson());
+      checkAdUnit(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdUnits", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdUnits();
+      var od = new api.AdUnits.fromJson(o.toJson());
+      checkAdUnits(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdsenseReportsGenerateResponseHeaders", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdsenseReportsGenerateResponseHeaders();
+      var od =
+          new api.AdsenseReportsGenerateResponseHeaders.fromJson(o.toJson());
+      checkAdsenseReportsGenerateResponseHeaders(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdsenseReportsGenerateResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdsenseReportsGenerateResponse();
+      var od = new api.AdsenseReportsGenerateResponse.fromJson(o.toJson());
+      checkAdsenseReportsGenerateResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Alert", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAlert();
+      var od = new api.Alert.fromJson(o.toJson());
+      checkAlert(od);
+    });
+  });
+
+  unittest.group("obj-schema-Alerts", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAlerts();
+      var od = new api.Alerts.fromJson(o.toJson());
+      checkAlerts(od);
+    });
+  });
+
+  unittest.group("obj-schema-CustomChannelTargetingInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCustomChannelTargetingInfo();
+      var od = new api.CustomChannelTargetingInfo.fromJson(o.toJson());
+      checkCustomChannelTargetingInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-CustomChannel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCustomChannel();
+      var od = new api.CustomChannel.fromJson(o.toJson());
+      checkCustomChannel(od);
+    });
+  });
+
+  unittest.group("obj-schema-CustomChannels", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCustomChannels();
+      var od = new api.CustomChannels.fromJson(o.toJson());
+      checkCustomChannels(od);
+    });
+  });
+
+  unittest.group("obj-schema-Metadata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMetadata();
+      var od = new api.Metadata.fromJson(o.toJson());
+      checkMetadata(od);
+    });
+  });
+
+  unittest.group("obj-schema-Payment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPayment();
+      var od = new api.Payment.fromJson(o.toJson());
+      checkPayment(od);
+    });
+  });
+
+  unittest.group("obj-schema-Payments", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPayments();
+      var od = new api.Payments.fromJson(o.toJson());
+      checkPayments(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportingMetadataEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportingMetadataEntry();
+      var od = new api.ReportingMetadataEntry.fromJson(o.toJson());
+      checkReportingMetadataEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-SavedAdStyle", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSavedAdStyle();
+      var od = new api.SavedAdStyle.fromJson(o.toJson());
+      checkSavedAdStyle(od);
+    });
+  });
+
+  unittest.group("obj-schema-SavedAdStyles", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSavedAdStyles();
+      var od = new api.SavedAdStyles.fromJson(o.toJson());
+      checkSavedAdStyles(od);
+    });
+  });
+
+  unittest.group("obj-schema-SavedReport", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSavedReport();
+      var od = new api.SavedReport.fromJson(o.toJson());
+      checkSavedReport(od);
+    });
+  });
+
+  unittest.group("obj-schema-SavedReports", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSavedReports();
+      var od = new api.SavedReports.fromJson(o.toJson());
+      checkSavedReports(od);
+    });
+  });
+
+  unittest.group("obj-schema-UrlChannel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUrlChannel();
+      var od = new api.UrlChannel.fromJson(o.toJson());
+      checkUrlChannel(od);
+    });
+  });
+
+  unittest.group("obj-schema-UrlChannels", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUrlChannels();
+      var od = new api.UrlChannels.fromJson(o.toJson());
+      checkUrlChannels(od);
+    });
+  });
+
+  unittest.group("resource-AccountsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.AdsenseApi(mock).accounts;
+      var arg_accountId = "foo";
+      var arg_tree = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["tree"].first, unittest.equals("$arg_tree"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, tree: arg_tree, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.AdsenseApi(mock).accounts;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("accounts"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccounts());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Accounts response) {
+        checkAccounts(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsAdclientsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsAdclientsResourceApi res =
+          new api.AdsenseApi(mock).accounts.adclients;
+      var arg_accountId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/adclients"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdClients());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdClients response) {
+        checkAdClients(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsAdunitsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsAdunitsResourceApi res =
+          new api.AdsenseApi(mock).accounts.adunits;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_adUnitId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/adunits/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/adunits/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_adUnitId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdUnit());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_adClientId, arg_adUnitId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdUnit response) {
+        checkAdUnit(response);
+      })));
+    });
+
+    unittest.test("method--getAdCode", () {
+      var mock = new HttpServerMock();
+      api.AccountsAdunitsResourceApi res =
+          new api.AdsenseApi(mock).accounts.adunits;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_adUnitId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/adunits/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/adunits/"));
+        pathOffset += 9;
+        index = path.indexOf("/adcode", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adUnitId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/adcode"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdCode());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getAdCode(arg_accountId, arg_adClientId, arg_adUnitId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdCode response) {
+        checkAdCode(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsAdunitsResourceApi res =
+          new api.AdsenseApi(mock).accounts.adunits;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_includeInactive = true;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/adunits", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/adunits"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeInactive"].first,
+            unittest.equals("$arg_includeInactive"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdUnits());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_adClientId,
+              includeInactive: arg_includeInactive,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdUnits response) {
+        checkAdUnits(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsAdunitsCustomchannelsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsAdunitsCustomchannelsResourceApi res =
+          new api.AdsenseApi(mock).accounts.adunits.customchannels;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_adUnitId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/adunits/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/adunits/"));
+        pathOffset += 9;
+        index = path.indexOf("/customchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adUnitId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/customchannels"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannels());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_adClientId, arg_adUnitId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannels response) {
+        checkCustomChannels(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsAlertsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsAlertsResourceApi res =
+          new api.AdsenseApi(mock).accounts.alerts;
+      var arg_accountId = "foo";
+      var arg_alertId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/alerts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/alerts/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_alertId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_accountId, arg_alertId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsAlertsResourceApi res =
+          new api.AdsenseApi(mock).accounts.alerts;
+      var arg_accountId = "foo";
+      var arg_locale = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/alerts", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/alerts"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAlerts());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, locale: arg_locale, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Alerts response) {
+        checkAlerts(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsCustomchannelsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsCustomchannelsResourceApi res =
+          new api.AdsenseApi(mock).accounts.customchannels;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_customChannelId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/customchannels/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/customchannels/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_customChannelId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_adClientId, arg_customChannelId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannel response) {
+        checkCustomChannel(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsCustomchannelsResourceApi res =
+          new api.AdsenseApi(mock).accounts.customchannels;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/customchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/customchannels"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannels());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_adClientId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannels response) {
+        checkCustomChannels(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsCustomchannelsAdunitsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsCustomchannelsAdunitsResourceApi res =
+          new api.AdsenseApi(mock).accounts.customchannels.adunits;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_customChannelId = "foo";
+      var arg_includeInactive = true;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/customchannels/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/customchannels/"));
+        pathOffset += 16;
+        index = path.indexOf("/adunits", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_customChannelId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/adunits"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeInactive"].first,
+            unittest.equals("$arg_includeInactive"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdUnits());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_adClientId, arg_customChannelId,
+              includeInactive: arg_includeInactive,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdUnits response) {
+        checkAdUnits(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsPaymentsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsPaymentsResourceApi res =
+          new api.AdsenseApi(mock).accounts.payments;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/payments", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/payments"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPayments());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Payments response) {
+        checkPayments(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsReportsResourceApi", () {
+    unittest.test("method--generate", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.AccountsReportsResourceApi res =
+          new api.AdsenseApi(mock).accounts.reports;
+      var arg_accountId = "foo";
+      var arg_startDate = "foo";
+      var arg_endDate = "foo";
+      var arg_currency = "foo";
+      var arg_dimension = buildUnnamed1975();
+      var arg_filter = buildUnnamed1976();
+      var arg_locale = "foo";
+      var arg_maxResults = 42;
+      var arg_metric = buildUnnamed1977();
+      var arg_sort = buildUnnamed1978();
+      var arg_startIndex = 42;
+      var arg_useTimezoneReporting = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/reports", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/reports"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["startDate"].first, unittest.equals(arg_startDate));
+        unittest.expect(
+            queryMap["endDate"].first, unittest.equals(arg_endDate));
+        unittest.expect(
+            queryMap["currency"].first, unittest.equals(arg_currency));
+        unittest.expect(queryMap["dimension"], unittest.equals(arg_dimension));
+        unittest.expect(queryMap["filter"], unittest.equals(arg_filter));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["metric"], unittest.equals(arg_metric));
+        unittest.expect(queryMap["sort"], unittest.equals(arg_sort));
+        unittest.expect(core.int.parse(queryMap["startIndex"].first),
+            unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["useTimezoneReporting"].first,
+            unittest.equals("$arg_useTimezoneReporting"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdsenseReportsGenerateResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .generate(arg_accountId, arg_startDate, arg_endDate,
+              currency: arg_currency,
+              dimension: arg_dimension,
+              filter: arg_filter,
+              locale: arg_locale,
+              maxResults: arg_maxResults,
+              metric: arg_metric,
+              sort: arg_sort,
+              startIndex: arg_startIndex,
+              useTimezoneReporting: arg_useTimezoneReporting,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.AdsenseReportsGenerateResponse response) {
+        checkAdsenseReportsGenerateResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsReportsSavedResourceApi", () {
+    unittest.test("method--generate", () {
+      var mock = new HttpServerMock();
+      api.AccountsReportsSavedResourceApi res =
+          new api.AdsenseApi(mock).accounts.reports.saved;
+      var arg_accountId = "foo";
+      var arg_savedReportId = "foo";
+      var arg_locale = "foo";
+      var arg_maxResults = 42;
+      var arg_startIndex = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/reports/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/reports/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_savedReportId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(core.int.parse(queryMap["startIndex"].first),
+            unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdsenseReportsGenerateResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .generate(arg_accountId, arg_savedReportId,
+              locale: arg_locale,
+              maxResults: arg_maxResults,
+              startIndex: arg_startIndex,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.AdsenseReportsGenerateResponse response) {
+        checkAdsenseReportsGenerateResponse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsReportsSavedResourceApi res =
+          new api.AdsenseApi(mock).accounts.reports.saved;
+      var arg_accountId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/reports/saved", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/reports/saved"));
+        pathOffset += 14;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSavedReports());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SavedReports response) {
+        checkSavedReports(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsSavedadstylesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsSavedadstylesResourceApi res =
+          new api.AdsenseApi(mock).accounts.savedadstyles;
+      var arg_accountId = "foo";
+      var arg_savedAdStyleId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/savedadstyles/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/savedadstyles/"));
+        pathOffset += 15;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_savedAdStyleId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSavedAdStyle());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_savedAdStyleId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SavedAdStyle response) {
+        checkSavedAdStyle(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsSavedadstylesResourceApi res =
+          new api.AdsenseApi(mock).accounts.savedadstyles;
+      var arg_accountId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/savedadstyles", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/savedadstyles"));
+        pathOffset += 14;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSavedAdStyles());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SavedAdStyles response) {
+        checkSavedAdStyles(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsUrlchannelsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsUrlchannelsResourceApi res =
+          new api.AdsenseApi(mock).accounts.urlchannels;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/urlchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/urlchannels"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUrlChannels());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_adClientId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UrlChannels response) {
+        checkUrlChannels(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AdclientsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AdclientsResourceApi res = new api.AdsenseApi(mock).adclients;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("adclients"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdClients());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdClients response) {
+        checkAdClients(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AdunitsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AdunitsResourceApi res = new api.AdsenseApi(mock).adunits;
+      var arg_adClientId = "foo";
+      var arg_adUnitId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/adunits/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/adunits/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_adUnitId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdUnit());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_adClientId, arg_adUnitId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdUnit response) {
+        checkAdUnit(response);
+      })));
+    });
+
+    unittest.test("method--getAdCode", () {
+      var mock = new HttpServerMock();
+      api.AdunitsResourceApi res = new api.AdsenseApi(mock).adunits;
+      var arg_adClientId = "foo";
+      var arg_adUnitId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/adunits/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/adunits/"));
+        pathOffset += 9;
+        index = path.indexOf("/adcode", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adUnitId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/adcode"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdCode());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getAdCode(arg_adClientId, arg_adUnitId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdCode response) {
+        checkAdCode(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AdunitsResourceApi res = new api.AdsenseApi(mock).adunits;
+      var arg_adClientId = "foo";
+      var arg_includeInactive = true;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/adunits", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/adunits"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeInactive"].first,
+            unittest.equals("$arg_includeInactive"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdUnits());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_adClientId,
+              includeInactive: arg_includeInactive,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdUnits response) {
+        checkAdUnits(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AdunitsCustomchannelsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AdunitsCustomchannelsResourceApi res =
+          new api.AdsenseApi(mock).adunits.customchannels;
+      var arg_adClientId = "foo";
+      var arg_adUnitId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/adunits/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/adunits/"));
+        pathOffset += 9;
+        index = path.indexOf("/customchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adUnitId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/customchannels"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannels());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_adClientId, arg_adUnitId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannels response) {
+        checkCustomChannels(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AlertsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AlertsResourceApi res = new api.AdsenseApi(mock).alerts;
+      var arg_alertId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("alerts/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_alertId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_alertId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AlertsResourceApi res = new api.AdsenseApi(mock).alerts;
+      var arg_locale = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("alerts"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAlerts());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(locale: arg_locale, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Alerts response) {
+        checkAlerts(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CustomchannelsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CustomchannelsResourceApi res =
+          new api.AdsenseApi(mock).customchannels;
+      var arg_adClientId = "foo";
+      var arg_customChannelId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/customchannels/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/customchannels/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_customChannelId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_adClientId, arg_customChannelId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannel response) {
+        checkCustomChannel(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CustomchannelsResourceApi res =
+          new api.AdsenseApi(mock).customchannels;
+      var arg_adClientId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/customchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/customchannels"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannels());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_adClientId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannels response) {
+        checkCustomChannels(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CustomchannelsAdunitsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CustomchannelsAdunitsResourceApi res =
+          new api.AdsenseApi(mock).customchannels.adunits;
+      var arg_adClientId = "foo";
+      var arg_customChannelId = "foo";
+      var arg_includeInactive = true;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/customchannels/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/customchannels/"));
+        pathOffset += 16;
+        index = path.indexOf("/adunits", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_customChannelId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/adunits"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeInactive"].first,
+            unittest.equals("$arg_includeInactive"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdUnits());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_adClientId, arg_customChannelId,
+              includeInactive: arg_includeInactive,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdUnits response) {
+        checkAdUnits(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-MetadataDimensionsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.MetadataDimensionsResourceApi res =
+          new api.AdsenseApi(mock).metadata.dimensions;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("metadata/dimensions"));
+        pathOffset += 19;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMetadata());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Metadata response) {
+        checkMetadata(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-MetadataMetricsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.MetadataMetricsResourceApi res =
+          new api.AdsenseApi(mock).metadata.metrics;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("metadata/metrics"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMetadata());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Metadata response) {
+        checkMetadata(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PaymentsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PaymentsResourceApi res = new api.AdsenseApi(mock).payments;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("payments"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPayments());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Payments response) {
+        checkPayments(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ReportsResourceApi", () {
+    unittest.test("method--generate", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.ReportsResourceApi res = new api.AdsenseApi(mock).reports;
+      var arg_startDate = "foo";
+      var arg_endDate = "foo";
+      var arg_accountId = buildUnnamed1979();
+      var arg_currency = "foo";
+      var arg_dimension = buildUnnamed1980();
+      var arg_filter = buildUnnamed1981();
+      var arg_locale = "foo";
+      var arg_maxResults = 42;
+      var arg_metric = buildUnnamed1982();
+      var arg_sort = buildUnnamed1983();
+      var arg_startIndex = 42;
+      var arg_useTimezoneReporting = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("reports"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["startDate"].first, unittest.equals(arg_startDate));
+        unittest.expect(
+            queryMap["endDate"].first, unittest.equals(arg_endDate));
+        unittest.expect(queryMap["accountId"], unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["currency"].first, unittest.equals(arg_currency));
+        unittest.expect(queryMap["dimension"], unittest.equals(arg_dimension));
+        unittest.expect(queryMap["filter"], unittest.equals(arg_filter));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["metric"], unittest.equals(arg_metric));
+        unittest.expect(queryMap["sort"], unittest.equals(arg_sort));
+        unittest.expect(core.int.parse(queryMap["startIndex"].first),
+            unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["useTimezoneReporting"].first,
+            unittest.equals("$arg_useTimezoneReporting"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdsenseReportsGenerateResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .generate(arg_startDate, arg_endDate,
+              accountId: arg_accountId,
+              currency: arg_currency,
+              dimension: arg_dimension,
+              filter: arg_filter,
+              locale: arg_locale,
+              maxResults: arg_maxResults,
+              metric: arg_metric,
+              sort: arg_sort,
+              startIndex: arg_startIndex,
+              useTimezoneReporting: arg_useTimezoneReporting,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.AdsenseReportsGenerateResponse response) {
+        checkAdsenseReportsGenerateResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ReportsSavedResourceApi", () {
+    unittest.test("method--generate", () {
+      var mock = new HttpServerMock();
+      api.ReportsSavedResourceApi res = new api.AdsenseApi(mock).reports.saved;
+      var arg_savedReportId = "foo";
+      var arg_locale = "foo";
+      var arg_maxResults = 42;
+      var arg_startIndex = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("reports/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_savedReportId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(core.int.parse(queryMap["startIndex"].first),
+            unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdsenseReportsGenerateResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .generate(arg_savedReportId,
+              locale: arg_locale,
+              maxResults: arg_maxResults,
+              startIndex: arg_startIndex,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.AdsenseReportsGenerateResponse response) {
+        checkAdsenseReportsGenerateResponse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ReportsSavedResourceApi res = new api.AdsenseApi(mock).reports.saved;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("reports/saved"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSavedReports());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SavedReports response) {
+        checkSavedReports(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-SavedadstylesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.SavedadstylesResourceApi res = new api.AdsenseApi(mock).savedadstyles;
+      var arg_savedAdStyleId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("savedadstyles/"));
+        pathOffset += 14;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_savedAdStyleId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSavedAdStyle());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_savedAdStyleId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SavedAdStyle response) {
+        checkSavedAdStyle(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.SavedadstylesResourceApi res = new api.AdsenseApi(mock).savedadstyles;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("savedadstyles"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSavedAdStyles());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SavedAdStyles response) {
+        checkSavedAdStyles(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UrlchannelsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UrlchannelsResourceApi res = new api.AdsenseApi(mock).urlchannels;
+      var arg_adClientId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("adsense/v1.4/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/urlchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/urlchannels"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUrlChannels());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_adClientId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UrlChannels response) {
+        checkUrlChannels(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/adsensehost/v4_1_test.dart b/generated/googleapis/test/adsensehost/v4_1_test.dart
new file mode 100644
index 0000000..c8dd8df
--- /dev/null
+++ b/generated/googleapis/test/adsensehost/v4_1_test.dart
@@ -0,0 +1,2888 @@
+library googleapis.adsensehost.v4_1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/adsensehost/v4_1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAccount = 0;
+buildAccount() {
+  var o = new api.Account();
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.status = "foo";
+  }
+  buildCounterAccount--;
+  return o;
+}
+
+checkAccount(api.Account o) {
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+  }
+  buildCounterAccount--;
+}
+
+buildUnnamed2766() {
+  var o = new core.List<api.Account>();
+  o.add(buildAccount());
+  o.add(buildAccount());
+  return o;
+}
+
+checkUnnamed2766(core.List<api.Account> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccount(o[0]);
+  checkAccount(o[1]);
+}
+
+core.int buildCounterAccounts = 0;
+buildAccounts() {
+  var o = new api.Accounts();
+  buildCounterAccounts++;
+  if (buildCounterAccounts < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed2766();
+    o.kind = "foo";
+  }
+  buildCounterAccounts--;
+  return o;
+}
+
+checkAccounts(api.Accounts o) {
+  buildCounterAccounts++;
+  if (buildCounterAccounts < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed2766(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAccounts--;
+}
+
+core.int buildCounterAdClient = 0;
+buildAdClient() {
+  var o = new api.AdClient();
+  buildCounterAdClient++;
+  if (buildCounterAdClient < 3) {
+    o.arcOptIn = true;
+    o.id = "foo";
+    o.kind = "foo";
+    o.productCode = "foo";
+    o.supportsReporting = true;
+  }
+  buildCounterAdClient--;
+  return o;
+}
+
+checkAdClient(api.AdClient o) {
+  buildCounterAdClient++;
+  if (buildCounterAdClient < 3) {
+    unittest.expect(o.arcOptIn, unittest.isTrue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.productCode, unittest.equals('foo'));
+    unittest.expect(o.supportsReporting, unittest.isTrue);
+  }
+  buildCounterAdClient--;
+}
+
+buildUnnamed2767() {
+  var o = new core.List<api.AdClient>();
+  o.add(buildAdClient());
+  o.add(buildAdClient());
+  return o;
+}
+
+checkUnnamed2767(core.List<api.AdClient> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAdClient(o[0]);
+  checkAdClient(o[1]);
+}
+
+core.int buildCounterAdClients = 0;
+buildAdClients() {
+  var o = new api.AdClients();
+  buildCounterAdClients++;
+  if (buildCounterAdClients < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed2767();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterAdClients--;
+  return o;
+}
+
+checkAdClients(api.AdClients o) {
+  buildCounterAdClients++;
+  if (buildCounterAdClients < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed2767(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterAdClients--;
+}
+
+core.int buildCounterAdCode = 0;
+buildAdCode() {
+  var o = new api.AdCode();
+  buildCounterAdCode++;
+  if (buildCounterAdCode < 3) {
+    o.adCode = "foo";
+    o.kind = "foo";
+  }
+  buildCounterAdCode--;
+  return o;
+}
+
+checkAdCode(api.AdCode o) {
+  buildCounterAdCode++;
+  if (buildCounterAdCode < 3) {
+    unittest.expect(o.adCode, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAdCode--;
+}
+
+core.int buildCounterAdStyleColors = 0;
+buildAdStyleColors() {
+  var o = new api.AdStyleColors();
+  buildCounterAdStyleColors++;
+  if (buildCounterAdStyleColors < 3) {
+    o.background = "foo";
+    o.border = "foo";
+    o.text = "foo";
+    o.title = "foo";
+    o.url = "foo";
+  }
+  buildCounterAdStyleColors--;
+  return o;
+}
+
+checkAdStyleColors(api.AdStyleColors o) {
+  buildCounterAdStyleColors++;
+  if (buildCounterAdStyleColors < 3) {
+    unittest.expect(o.background, unittest.equals('foo'));
+    unittest.expect(o.border, unittest.equals('foo'));
+    unittest.expect(o.text, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterAdStyleColors--;
+}
+
+core.int buildCounterAdStyleFont = 0;
+buildAdStyleFont() {
+  var o = new api.AdStyleFont();
+  buildCounterAdStyleFont++;
+  if (buildCounterAdStyleFont < 3) {
+    o.family = "foo";
+    o.size = "foo";
+  }
+  buildCounterAdStyleFont--;
+  return o;
+}
+
+checkAdStyleFont(api.AdStyleFont o) {
+  buildCounterAdStyleFont++;
+  if (buildCounterAdStyleFont < 3) {
+    unittest.expect(o.family, unittest.equals('foo'));
+    unittest.expect(o.size, unittest.equals('foo'));
+  }
+  buildCounterAdStyleFont--;
+}
+
+core.int buildCounterAdStyle = 0;
+buildAdStyle() {
+  var o = new api.AdStyle();
+  buildCounterAdStyle++;
+  if (buildCounterAdStyle < 3) {
+    o.colors = buildAdStyleColors();
+    o.corners = "foo";
+    o.font = buildAdStyleFont();
+    o.kind = "foo";
+  }
+  buildCounterAdStyle--;
+  return o;
+}
+
+checkAdStyle(api.AdStyle o) {
+  buildCounterAdStyle++;
+  if (buildCounterAdStyle < 3) {
+    checkAdStyleColors(o.colors);
+    unittest.expect(o.corners, unittest.equals('foo'));
+    checkAdStyleFont(o.font);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAdStyle--;
+}
+
+core.int buildCounterAdUnitContentAdsSettingsBackupOption = 0;
+buildAdUnitContentAdsSettingsBackupOption() {
+  var o = new api.AdUnitContentAdsSettingsBackupOption();
+  buildCounterAdUnitContentAdsSettingsBackupOption++;
+  if (buildCounterAdUnitContentAdsSettingsBackupOption < 3) {
+    o.color = "foo";
+    o.type = "foo";
+    o.url = "foo";
+  }
+  buildCounterAdUnitContentAdsSettingsBackupOption--;
+  return o;
+}
+
+checkAdUnitContentAdsSettingsBackupOption(
+    api.AdUnitContentAdsSettingsBackupOption o) {
+  buildCounterAdUnitContentAdsSettingsBackupOption++;
+  if (buildCounterAdUnitContentAdsSettingsBackupOption < 3) {
+    unittest.expect(o.color, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterAdUnitContentAdsSettingsBackupOption--;
+}
+
+core.int buildCounterAdUnitContentAdsSettings = 0;
+buildAdUnitContentAdsSettings() {
+  var o = new api.AdUnitContentAdsSettings();
+  buildCounterAdUnitContentAdsSettings++;
+  if (buildCounterAdUnitContentAdsSettings < 3) {
+    o.backupOption = buildAdUnitContentAdsSettingsBackupOption();
+    o.size = "foo";
+    o.type = "foo";
+  }
+  buildCounterAdUnitContentAdsSettings--;
+  return o;
+}
+
+checkAdUnitContentAdsSettings(api.AdUnitContentAdsSettings o) {
+  buildCounterAdUnitContentAdsSettings++;
+  if (buildCounterAdUnitContentAdsSettings < 3) {
+    checkAdUnitContentAdsSettingsBackupOption(o.backupOption);
+    unittest.expect(o.size, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterAdUnitContentAdsSettings--;
+}
+
+core.int buildCounterAdUnitMobileContentAdsSettings = 0;
+buildAdUnitMobileContentAdsSettings() {
+  var o = new api.AdUnitMobileContentAdsSettings();
+  buildCounterAdUnitMobileContentAdsSettings++;
+  if (buildCounterAdUnitMobileContentAdsSettings < 3) {
+    o.markupLanguage = "foo";
+    o.scriptingLanguage = "foo";
+    o.size = "foo";
+    o.type = "foo";
+  }
+  buildCounterAdUnitMobileContentAdsSettings--;
+  return o;
+}
+
+checkAdUnitMobileContentAdsSettings(api.AdUnitMobileContentAdsSettings o) {
+  buildCounterAdUnitMobileContentAdsSettings++;
+  if (buildCounterAdUnitMobileContentAdsSettings < 3) {
+    unittest.expect(o.markupLanguage, unittest.equals('foo'));
+    unittest.expect(o.scriptingLanguage, unittest.equals('foo'));
+    unittest.expect(o.size, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterAdUnitMobileContentAdsSettings--;
+}
+
+core.int buildCounterAdUnit = 0;
+buildAdUnit() {
+  var o = new api.AdUnit();
+  buildCounterAdUnit++;
+  if (buildCounterAdUnit < 3) {
+    o.code = "foo";
+    o.contentAdsSettings = buildAdUnitContentAdsSettings();
+    o.customStyle = buildAdStyle();
+    o.id = "foo";
+    o.kind = "foo";
+    o.mobileContentAdsSettings = buildAdUnitMobileContentAdsSettings();
+    o.name = "foo";
+    o.status = "foo";
+  }
+  buildCounterAdUnit--;
+  return o;
+}
+
+checkAdUnit(api.AdUnit o) {
+  buildCounterAdUnit++;
+  if (buildCounterAdUnit < 3) {
+    unittest.expect(o.code, unittest.equals('foo'));
+    checkAdUnitContentAdsSettings(o.contentAdsSettings);
+    checkAdStyle(o.customStyle);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkAdUnitMobileContentAdsSettings(o.mobileContentAdsSettings);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+  }
+  buildCounterAdUnit--;
+}
+
+buildUnnamed2768() {
+  var o = new core.List<api.AdUnit>();
+  o.add(buildAdUnit());
+  o.add(buildAdUnit());
+  return o;
+}
+
+checkUnnamed2768(core.List<api.AdUnit> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAdUnit(o[0]);
+  checkAdUnit(o[1]);
+}
+
+core.int buildCounterAdUnits = 0;
+buildAdUnits() {
+  var o = new api.AdUnits();
+  buildCounterAdUnits++;
+  if (buildCounterAdUnits < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed2768();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterAdUnits--;
+  return o;
+}
+
+checkAdUnits(api.AdUnits o) {
+  buildCounterAdUnits++;
+  if (buildCounterAdUnits < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed2768(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterAdUnits--;
+}
+
+buildUnnamed2769() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2769(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAssociationSession = 0;
+buildAssociationSession() {
+  var o = new api.AssociationSession();
+  buildCounterAssociationSession++;
+  if (buildCounterAssociationSession < 3) {
+    o.accountId = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.productCodes = buildUnnamed2769();
+    o.redirectUrl = "foo";
+    o.status = "foo";
+    o.userLocale = "foo";
+    o.websiteLocale = "foo";
+    o.websiteUrl = "foo";
+  }
+  buildCounterAssociationSession--;
+  return o;
+}
+
+checkAssociationSession(api.AssociationSession o) {
+  buildCounterAssociationSession++;
+  if (buildCounterAssociationSession < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2769(o.productCodes);
+    unittest.expect(o.redirectUrl, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(o.userLocale, unittest.equals('foo'));
+    unittest.expect(o.websiteLocale, unittest.equals('foo'));
+    unittest.expect(o.websiteUrl, unittest.equals('foo'));
+  }
+  buildCounterAssociationSession--;
+}
+
+core.int buildCounterCustomChannel = 0;
+buildCustomChannel() {
+  var o = new api.CustomChannel();
+  buildCounterCustomChannel++;
+  if (buildCounterCustomChannel < 3) {
+    o.code = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterCustomChannel--;
+  return o;
+}
+
+checkCustomChannel(api.CustomChannel o) {
+  buildCounterCustomChannel++;
+  if (buildCounterCustomChannel < 3) {
+    unittest.expect(o.code, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterCustomChannel--;
+}
+
+buildUnnamed2770() {
+  var o = new core.List<api.CustomChannel>();
+  o.add(buildCustomChannel());
+  o.add(buildCustomChannel());
+  return o;
+}
+
+checkUnnamed2770(core.List<api.CustomChannel> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCustomChannel(o[0]);
+  checkCustomChannel(o[1]);
+}
+
+core.int buildCounterCustomChannels = 0;
+buildCustomChannels() {
+  var o = new api.CustomChannels();
+  buildCounterCustomChannels++;
+  if (buildCounterCustomChannels < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed2770();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterCustomChannels--;
+  return o;
+}
+
+checkCustomChannels(api.CustomChannels o) {
+  buildCounterCustomChannels++;
+  if (buildCounterCustomChannels < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed2770(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterCustomChannels--;
+}
+
+buildUnnamed2771() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2771(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterReportHeaders = 0;
+buildReportHeaders() {
+  var o = new api.ReportHeaders();
+  buildCounterReportHeaders++;
+  if (buildCounterReportHeaders < 3) {
+    o.currency = "foo";
+    o.name = "foo";
+    o.type = "foo";
+  }
+  buildCounterReportHeaders--;
+  return o;
+}
+
+checkReportHeaders(api.ReportHeaders o) {
+  buildCounterReportHeaders++;
+  if (buildCounterReportHeaders < 3) {
+    unittest.expect(o.currency, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterReportHeaders--;
+}
+
+buildUnnamed2772() {
+  var o = new core.List<api.ReportHeaders>();
+  o.add(buildReportHeaders());
+  o.add(buildReportHeaders());
+  return o;
+}
+
+checkUnnamed2772(core.List<api.ReportHeaders> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkReportHeaders(o[0]);
+  checkReportHeaders(o[1]);
+}
+
+buildUnnamed2773() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2773(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2774() {
+  var o = new core.List<core.List<core.String>>();
+  o.add(buildUnnamed2773());
+  o.add(buildUnnamed2773());
+  return o;
+}
+
+checkUnnamed2774(core.List<core.List<core.String>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed2773(o[0]);
+  checkUnnamed2773(o[1]);
+}
+
+buildUnnamed2775() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2775(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2776() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2776(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterReport = 0;
+buildReport() {
+  var o = new api.Report();
+  buildCounterReport++;
+  if (buildCounterReport < 3) {
+    o.averages = buildUnnamed2771();
+    o.headers = buildUnnamed2772();
+    o.kind = "foo";
+    o.rows = buildUnnamed2774();
+    o.totalMatchedRows = "foo";
+    o.totals = buildUnnamed2775();
+    o.warnings = buildUnnamed2776();
+  }
+  buildCounterReport--;
+  return o;
+}
+
+checkReport(api.Report o) {
+  buildCounterReport++;
+  if (buildCounterReport < 3) {
+    checkUnnamed2771(o.averages);
+    checkUnnamed2772(o.headers);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2774(o.rows);
+    unittest.expect(o.totalMatchedRows, unittest.equals('foo'));
+    checkUnnamed2775(o.totals);
+    checkUnnamed2776(o.warnings);
+  }
+  buildCounterReport--;
+}
+
+core.int buildCounterUrlChannel = 0;
+buildUrlChannel() {
+  var o = new api.UrlChannel();
+  buildCounterUrlChannel++;
+  if (buildCounterUrlChannel < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.urlPattern = "foo";
+  }
+  buildCounterUrlChannel--;
+  return o;
+}
+
+checkUrlChannel(api.UrlChannel o) {
+  buildCounterUrlChannel++;
+  if (buildCounterUrlChannel < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.urlPattern, unittest.equals('foo'));
+  }
+  buildCounterUrlChannel--;
+}
+
+buildUnnamed2777() {
+  var o = new core.List<api.UrlChannel>();
+  o.add(buildUrlChannel());
+  o.add(buildUrlChannel());
+  return o;
+}
+
+checkUnnamed2777(core.List<api.UrlChannel> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUrlChannel(o[0]);
+  checkUrlChannel(o[1]);
+}
+
+core.int buildCounterUrlChannels = 0;
+buildUrlChannels() {
+  var o = new api.UrlChannels();
+  buildCounterUrlChannels++;
+  if (buildCounterUrlChannels < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed2777();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterUrlChannels--;
+  return o;
+}
+
+checkUrlChannels(api.UrlChannels o) {
+  buildCounterUrlChannels++;
+  if (buildCounterUrlChannels < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed2777(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterUrlChannels--;
+}
+
+buildUnnamed2778() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2778(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2779() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2779(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2780() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2780(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2781() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2781(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2782() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2782(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2783() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2783(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2784() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2784(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2785() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2785(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2786() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2786(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2787() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2787(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2788() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2788(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-Account", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccount();
+      var od = new api.Account.fromJson(o.toJson());
+      checkAccount(od);
+    });
+  });
+
+  unittest.group("obj-schema-Accounts", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccounts();
+      var od = new api.Accounts.fromJson(o.toJson());
+      checkAccounts(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdClient", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdClient();
+      var od = new api.AdClient.fromJson(o.toJson());
+      checkAdClient(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdClients", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdClients();
+      var od = new api.AdClients.fromJson(o.toJson());
+      checkAdClients(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdCode", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdCode();
+      var od = new api.AdCode.fromJson(o.toJson());
+      checkAdCode(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdStyleColors", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdStyleColors();
+      var od = new api.AdStyleColors.fromJson(o.toJson());
+      checkAdStyleColors(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdStyleFont", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdStyleFont();
+      var od = new api.AdStyleFont.fromJson(o.toJson());
+      checkAdStyleFont(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdStyle", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdStyle();
+      var od = new api.AdStyle.fromJson(o.toJson());
+      checkAdStyle(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdUnitContentAdsSettingsBackupOption", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdUnitContentAdsSettingsBackupOption();
+      var od =
+          new api.AdUnitContentAdsSettingsBackupOption.fromJson(o.toJson());
+      checkAdUnitContentAdsSettingsBackupOption(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdUnitContentAdsSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdUnitContentAdsSettings();
+      var od = new api.AdUnitContentAdsSettings.fromJson(o.toJson());
+      checkAdUnitContentAdsSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdUnitMobileContentAdsSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdUnitMobileContentAdsSettings();
+      var od = new api.AdUnitMobileContentAdsSettings.fromJson(o.toJson());
+      checkAdUnitMobileContentAdsSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdUnit", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdUnit();
+      var od = new api.AdUnit.fromJson(o.toJson());
+      checkAdUnit(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdUnits", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdUnits();
+      var od = new api.AdUnits.fromJson(o.toJson());
+      checkAdUnits(od);
+    });
+  });
+
+  unittest.group("obj-schema-AssociationSession", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAssociationSession();
+      var od = new api.AssociationSession.fromJson(o.toJson());
+      checkAssociationSession(od);
+    });
+  });
+
+  unittest.group("obj-schema-CustomChannel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCustomChannel();
+      var od = new api.CustomChannel.fromJson(o.toJson());
+      checkCustomChannel(od);
+    });
+  });
+
+  unittest.group("obj-schema-CustomChannels", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCustomChannels();
+      var od = new api.CustomChannels.fromJson(o.toJson());
+      checkCustomChannels(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportHeaders", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportHeaders();
+      var od = new api.ReportHeaders.fromJson(o.toJson());
+      checkReportHeaders(od);
+    });
+  });
+
+  unittest.group("obj-schema-Report", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReport();
+      var od = new api.Report.fromJson(o.toJson());
+      checkReport(od);
+    });
+  });
+
+  unittest.group("obj-schema-UrlChannel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUrlChannel();
+      var od = new api.UrlChannel.fromJson(o.toJson());
+      checkUrlChannel(od);
+    });
+  });
+
+  unittest.group("obj-schema-UrlChannels", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUrlChannels();
+      var od = new api.UrlChannels.fromJson(o.toJson());
+      checkUrlChannels(od);
+    });
+  });
+
+  unittest.group("resource-AccountsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.AdsensehostApi(mock).accounts;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.AdsensehostApi(mock).accounts;
+      var arg_filterAdClientId = buildUnnamed2778();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("accounts"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["filterAdClientId"],
+            unittest.equals(arg_filterAdClientId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccounts());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_filterAdClientId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Accounts response) {
+        checkAccounts(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsAdclientsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsAdclientsResourceApi res =
+          new api.AdsensehostApi(mock).accounts.adclients;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdClient());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_adClientId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdClient response) {
+        checkAdClient(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsAdclientsResourceApi res =
+          new api.AdsensehostApi(mock).accounts.adclients;
+      var arg_accountId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/adclients"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdClients());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdClients response) {
+        checkAdClients(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsAdunitsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsAdunitsResourceApi res =
+          new api.AdsensehostApi(mock).accounts.adunits;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_adUnitId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/adunits/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/adunits/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_adUnitId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdUnit());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_accountId, arg_adClientId, arg_adUnitId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdUnit response) {
+        checkAdUnit(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsAdunitsResourceApi res =
+          new api.AdsensehostApi(mock).accounts.adunits;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_adUnitId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/adunits/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/adunits/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_adUnitId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdUnit());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_adClientId, arg_adUnitId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdUnit response) {
+        checkAdUnit(response);
+      })));
+    });
+
+    unittest.test("method--getAdCode", () {
+      var mock = new HttpServerMock();
+      api.AccountsAdunitsResourceApi res =
+          new api.AdsensehostApi(mock).accounts.adunits;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_adUnitId = "foo";
+      var arg_hostCustomChannelId = buildUnnamed2779();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/adunits/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/adunits/"));
+        pathOffset += 9;
+        index = path.indexOf("/adcode", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adUnitId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/adcode"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["hostCustomChannelId"],
+            unittest.equals(arg_hostCustomChannelId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdCode());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getAdCode(arg_accountId, arg_adClientId, arg_adUnitId,
+              hostCustomChannelId: arg_hostCustomChannelId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdCode response) {
+        checkAdCode(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.AccountsAdunitsResourceApi res =
+          new api.AdsensehostApi(mock).accounts.adunits;
+      var arg_request = buildAdUnit();
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AdUnit.fromJson(json);
+        checkAdUnit(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/adunits", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/adunits"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdUnit());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_accountId, arg_adClientId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdUnit response) {
+        checkAdUnit(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsAdunitsResourceApi res =
+          new api.AdsensehostApi(mock).accounts.adunits;
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_includeInactive = true;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/adunits", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/adunits"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeInactive"].first,
+            unittest.equals("$arg_includeInactive"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdUnits());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_adClientId,
+              includeInactive: arg_includeInactive,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdUnits response) {
+        checkAdUnits(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.AccountsAdunitsResourceApi res =
+          new api.AdsensehostApi(mock).accounts.adunits;
+      var arg_request = buildAdUnit();
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_adUnitId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AdUnit.fromJson(json);
+        checkAdUnit(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/adunits", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/adunits"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["adUnitId"].first, unittest.equals(arg_adUnitId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdUnit());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_accountId, arg_adClientId, arg_adUnitId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdUnit response) {
+        checkAdUnit(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsAdunitsResourceApi res =
+          new api.AdsensehostApi(mock).accounts.adunits;
+      var arg_request = buildAdUnit();
+      var arg_accountId = "foo";
+      var arg_adClientId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AdUnit.fromJson(json);
+        checkAdUnit(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/adclients/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/adclients/"));
+        pathOffset += 11;
+        index = path.indexOf("/adunits", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/adunits"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdUnit());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_accountId, arg_adClientId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdUnit response) {
+        checkAdUnit(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsReportsResourceApi", () {
+    unittest.test("method--generate", () {
+      var mock = new HttpServerMock();
+      api.AccountsReportsResourceApi res =
+          new api.AdsensehostApi(mock).accounts.reports;
+      var arg_accountId = "foo";
+      var arg_startDate = "foo";
+      var arg_endDate = "foo";
+      var arg_dimension = buildUnnamed2780();
+      var arg_filter = buildUnnamed2781();
+      var arg_locale = "foo";
+      var arg_maxResults = 42;
+      var arg_metric = buildUnnamed2782();
+      var arg_sort = buildUnnamed2783();
+      var arg_startIndex = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/reports", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/reports"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["startDate"].first, unittest.equals(arg_startDate));
+        unittest.expect(
+            queryMap["endDate"].first, unittest.equals(arg_endDate));
+        unittest.expect(queryMap["dimension"], unittest.equals(arg_dimension));
+        unittest.expect(queryMap["filter"], unittest.equals(arg_filter));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["metric"], unittest.equals(arg_metric));
+        unittest.expect(queryMap["sort"], unittest.equals(arg_sort));
+        unittest.expect(core.int.parse(queryMap["startIndex"].first),
+            unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildReport());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .generate(arg_accountId, arg_startDate, arg_endDate,
+              dimension: arg_dimension,
+              filter: arg_filter,
+              locale: arg_locale,
+              maxResults: arg_maxResults,
+              metric: arg_metric,
+              sort: arg_sort,
+              startIndex: arg_startIndex,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Report response) {
+        checkReport(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AdclientsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AdclientsResourceApi res = new api.AdsensehostApi(mock).adclients;
+      var arg_adClientId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdClient());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_adClientId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdClient response) {
+        checkAdClient(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AdclientsResourceApi res = new api.AdsensehostApi(mock).adclients;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("adclients"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdClients());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdClients response) {
+        checkAdClients(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AssociationsessionsResourceApi", () {
+    unittest.test("method--start", () {
+      var mock = new HttpServerMock();
+      api.AssociationsessionsResourceApi res =
+          new api.AdsensehostApi(mock).associationsessions;
+      var arg_productCode = buildUnnamed2784();
+      var arg_websiteUrl = "foo";
+      var arg_userLocale = "foo";
+      var arg_websiteLocale = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 25),
+            unittest.equals("associationsessions/start"));
+        pathOffset += 25;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["productCode"], unittest.equals(arg_productCode));
+        unittest.expect(
+            queryMap["websiteUrl"].first, unittest.equals(arg_websiteUrl));
+        unittest.expect(
+            queryMap["userLocale"].first, unittest.equals(arg_userLocale));
+        unittest.expect(queryMap["websiteLocale"].first,
+            unittest.equals(arg_websiteLocale));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAssociationSession());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .start(arg_productCode, arg_websiteUrl,
+              userLocale: arg_userLocale,
+              websiteLocale: arg_websiteLocale,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AssociationSession response) {
+        checkAssociationSession(response);
+      })));
+    });
+
+    unittest.test("method--verify", () {
+      var mock = new HttpServerMock();
+      api.AssociationsessionsResourceApi res =
+          new api.AdsensehostApi(mock).associationsessions;
+      var arg_token = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 26),
+            unittest.equals("associationsessions/verify"));
+        pathOffset += 26;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["token"].first, unittest.equals(arg_token));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAssociationSession());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .verify(arg_token, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AssociationSession response) {
+        checkAssociationSession(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CustomchannelsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.CustomchannelsResourceApi res =
+          new api.AdsensehostApi(mock).customchannels;
+      var arg_adClientId = "foo";
+      var arg_customChannelId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/customchannels/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/customchannels/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_customChannelId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_adClientId, arg_customChannelId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannel response) {
+        checkCustomChannel(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CustomchannelsResourceApi res =
+          new api.AdsensehostApi(mock).customchannels;
+      var arg_adClientId = "foo";
+      var arg_customChannelId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/customchannels/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/customchannels/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_customChannelId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_adClientId, arg_customChannelId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannel response) {
+        checkCustomChannel(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.CustomchannelsResourceApi res =
+          new api.AdsensehostApi(mock).customchannels;
+      var arg_request = buildCustomChannel();
+      var arg_adClientId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CustomChannel.fromJson(json);
+        checkCustomChannel(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/customchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/customchannels"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_adClientId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannel response) {
+        checkCustomChannel(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CustomchannelsResourceApi res =
+          new api.AdsensehostApi(mock).customchannels;
+      var arg_adClientId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/customchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/customchannels"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannels());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_adClientId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannels response) {
+        checkCustomChannels(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.CustomchannelsResourceApi res =
+          new api.AdsensehostApi(mock).customchannels;
+      var arg_request = buildCustomChannel();
+      var arg_adClientId = "foo";
+      var arg_customChannelId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CustomChannel.fromJson(json);
+        checkCustomChannel(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/customchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/customchannels"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["customChannelId"].first,
+            unittest.equals(arg_customChannelId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_adClientId, arg_customChannelId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannel response) {
+        checkCustomChannel(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.CustomchannelsResourceApi res =
+          new api.AdsensehostApi(mock).customchannels;
+      var arg_request = buildCustomChannel();
+      var arg_adClientId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CustomChannel.fromJson(json);
+        checkCustomChannel(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/customchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/customchannels"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCustomChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_adClientId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CustomChannel response) {
+        checkCustomChannel(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ReportsResourceApi", () {
+    unittest.test("method--generate", () {
+      var mock = new HttpServerMock();
+      api.ReportsResourceApi res = new api.AdsensehostApi(mock).reports;
+      var arg_startDate = "foo";
+      var arg_endDate = "foo";
+      var arg_dimension = buildUnnamed2785();
+      var arg_filter = buildUnnamed2786();
+      var arg_locale = "foo";
+      var arg_maxResults = 42;
+      var arg_metric = buildUnnamed2787();
+      var arg_sort = buildUnnamed2788();
+      var arg_startIndex = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("reports"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["startDate"].first, unittest.equals(arg_startDate));
+        unittest.expect(
+            queryMap["endDate"].first, unittest.equals(arg_endDate));
+        unittest.expect(queryMap["dimension"], unittest.equals(arg_dimension));
+        unittest.expect(queryMap["filter"], unittest.equals(arg_filter));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["metric"], unittest.equals(arg_metric));
+        unittest.expect(queryMap["sort"], unittest.equals(arg_sort));
+        unittest.expect(core.int.parse(queryMap["startIndex"].first),
+            unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildReport());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .generate(arg_startDate, arg_endDate,
+              dimension: arg_dimension,
+              filter: arg_filter,
+              locale: arg_locale,
+              maxResults: arg_maxResults,
+              metric: arg_metric,
+              sort: arg_sort,
+              startIndex: arg_startIndex,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Report response) {
+        checkReport(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UrlchannelsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.UrlchannelsResourceApi res = new api.AdsensehostApi(mock).urlchannels;
+      var arg_adClientId = "foo";
+      var arg_urlChannelId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/urlchannels/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/urlchannels/"));
+        pathOffset += 13;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_urlChannelId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUrlChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_adClientId, arg_urlChannelId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UrlChannel response) {
+        checkUrlChannel(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.UrlchannelsResourceApi res = new api.AdsensehostApi(mock).urlchannels;
+      var arg_request = buildUrlChannel();
+      var arg_adClientId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UrlChannel.fromJson(json);
+        checkUrlChannel(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/urlchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/urlchannels"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUrlChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_adClientId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UrlChannel response) {
+        checkUrlChannel(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UrlchannelsResourceApi res = new api.AdsensehostApi(mock).urlchannels;
+      var arg_adClientId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("adsensehost/v4.1/"));
+        pathOffset += 17;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("adclients/"));
+        pathOffset += 10;
+        index = path.indexOf("/urlchannels", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_adClientId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/urlchannels"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUrlChannels());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_adClientId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UrlChannels response) {
+        checkUrlChannels(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/analytics/v3_test.dart b/generated/googleapis/test/analytics/v3_test.dart
index 52281d0..b343b79 100644
--- a/generated/googleapis/test/analytics/v3_test.dart
+++ b/generated/googleapis/test/analytics/v3_test.dart
@@ -71,14 +71,14 @@
   buildCounterAccountChildLink--;
 }
 
-buildUnnamed1046() {
+buildUnnamed1033() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1046(core.List<core.String> o) {
+checkUnnamed1033(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -89,7 +89,7 @@
   var o = new api.AccountPermissions();
   buildCounterAccountPermissions++;
   if (buildCounterAccountPermissions < 3) {
-    o.effective = buildUnnamed1046();
+    o.effective = buildUnnamed1033();
   }
   buildCounterAccountPermissions--;
   return o;
@@ -98,7 +98,7 @@
 checkAccountPermissions(api.AccountPermissions o) {
   buildCounterAccountPermissions++;
   if (buildCounterAccountPermissions < 3) {
-    checkUnnamed1046(o.effective);
+    checkUnnamed1033(o.effective);
   }
   buildCounterAccountPermissions--;
 }
@@ -165,14 +165,14 @@
   buildCounterAccountRef--;
 }
 
-buildUnnamed1047() {
+buildUnnamed1034() {
   var o = new core.List<api.AccountSummary>();
   o.add(buildAccountSummary());
   o.add(buildAccountSummary());
   return o;
 }
 
-checkUnnamed1047(core.List<api.AccountSummary> o) {
+checkUnnamed1034(core.List<api.AccountSummary> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAccountSummary(o[0]);
   checkAccountSummary(o[1]);
@@ -183,7 +183,7 @@
   var o = new api.AccountSummaries();
   buildCounterAccountSummaries++;
   if (buildCounterAccountSummaries < 3) {
-    o.items = buildUnnamed1047();
+    o.items = buildUnnamed1034();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -199,7 +199,7 @@
 checkAccountSummaries(api.AccountSummaries o) {
   buildCounterAccountSummaries++;
   if (buildCounterAccountSummaries < 3) {
-    checkUnnamed1047(o.items);
+    checkUnnamed1034(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -211,14 +211,14 @@
   buildCounterAccountSummaries--;
 }
 
-buildUnnamed1048() {
+buildUnnamed1035() {
   var o = new core.List<api.WebPropertySummary>();
   o.add(buildWebPropertySummary());
   o.add(buildWebPropertySummary());
   return o;
 }
 
-checkUnnamed1048(core.List<api.WebPropertySummary> o) {
+checkUnnamed1035(core.List<api.WebPropertySummary> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWebPropertySummary(o[0]);
   checkWebPropertySummary(o[1]);
@@ -233,7 +233,7 @@
     o.kind = "foo";
     o.name = "foo";
     o.starred = true;
-    o.webProperties = buildUnnamed1048();
+    o.webProperties = buildUnnamed1035();
   }
   buildCounterAccountSummary--;
   return o;
@@ -246,7 +246,7 @@
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.starred, unittest.isTrue);
-    checkUnnamed1048(o.webProperties);
+    checkUnnamed1035(o.webProperties);
   }
   buildCounterAccountSummary--;
 }
@@ -280,14 +280,14 @@
   buildCounterAccountTicket--;
 }
 
-buildUnnamed1049() {
+buildUnnamed1036() {
   var o = new core.List<api.Account>();
   o.add(buildAccount());
   o.add(buildAccount());
   return o;
 }
 
-checkUnnamed1049(core.List<api.Account> o) {
+checkUnnamed1036(core.List<api.Account> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAccount(o[0]);
   checkAccount(o[1]);
@@ -298,7 +298,7 @@
   var o = new api.Accounts();
   buildCounterAccounts++;
   if (buildCounterAccounts < 3) {
-    o.items = buildUnnamed1049();
+    o.items = buildUnnamed1036();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -314,7 +314,7 @@
 checkAccounts(api.Accounts o) {
   buildCounterAccounts++;
   if (buildCounterAccounts < 3) {
-    checkUnnamed1049(o.items);
+    checkUnnamed1036(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -349,14 +349,14 @@
   buildCounterAdWordsAccount--;
 }
 
-buildUnnamed1050() {
+buildUnnamed1037() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1050(core.List<core.String> o) {
+checkUnnamed1037(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -367,7 +367,7 @@
   var o = new api.AnalyticsDataimportDeleteUploadDataRequest();
   buildCounterAnalyticsDataimportDeleteUploadDataRequest++;
   if (buildCounterAnalyticsDataimportDeleteUploadDataRequest < 3) {
-    o.customDataImportUids = buildUnnamed1050();
+    o.customDataImportUids = buildUnnamed1037();
   }
   buildCounterAnalyticsDataimportDeleteUploadDataRequest--;
   return o;
@@ -377,19 +377,19 @@
     api.AnalyticsDataimportDeleteUploadDataRequest o) {
   buildCounterAnalyticsDataimportDeleteUploadDataRequest++;
   if (buildCounterAnalyticsDataimportDeleteUploadDataRequest < 3) {
-    checkUnnamed1050(o.customDataImportUids);
+    checkUnnamed1037(o.customDataImportUids);
   }
   buildCounterAnalyticsDataimportDeleteUploadDataRequest--;
 }
 
-buildUnnamed1051() {
+buildUnnamed1038() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1051(core.Map<core.String, core.String> o) {
+checkUnnamed1038(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -400,7 +400,7 @@
   var o = new api.Column();
   buildCounterColumn++;
   if (buildCounterColumn < 3) {
-    o.attributes = buildUnnamed1051();
+    o.attributes = buildUnnamed1038();
     o.id = "foo";
     o.kind = "foo";
   }
@@ -411,34 +411,34 @@
 checkColumn(api.Column o) {
   buildCounterColumn++;
   if (buildCounterColumn < 3) {
-    checkUnnamed1051(o.attributes);
+    checkUnnamed1038(o.attributes);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterColumn--;
 }
 
-buildUnnamed1052() {
+buildUnnamed1039() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1052(core.List<core.String> o) {
+checkUnnamed1039(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1053() {
+buildUnnamed1040() {
   var o = new core.List<api.Column>();
   o.add(buildColumn());
   o.add(buildColumn());
   return o;
 }
 
-checkUnnamed1053(core.List<api.Column> o) {
+checkUnnamed1040(core.List<api.Column> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkColumn(o[0]);
   checkColumn(o[1]);
@@ -449,9 +449,9 @@
   var o = new api.Columns();
   buildCounterColumns++;
   if (buildCounterColumns < 3) {
-    o.attributeNames = buildUnnamed1052();
+    o.attributeNames = buildUnnamed1039();
     o.etag = "foo";
-    o.items = buildUnnamed1053();
+    o.items = buildUnnamed1040();
     o.kind = "foo";
     o.totalResults = 42;
   }
@@ -462,9 +462,9 @@
 checkColumns(api.Columns o) {
   buildCounterColumns++;
   if (buildCounterColumns < 3) {
-    checkUnnamed1052(o.attributeNames);
+    checkUnnamed1039(o.attributeNames);
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed1053(o.items);
+    checkUnnamed1040(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.totalResults, unittest.equals(42));
   }
@@ -513,27 +513,27 @@
   buildCounterCustomDataSourceParentLink--;
 }
 
-buildUnnamed1054() {
+buildUnnamed1041() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1054(core.List<core.String> o) {
+checkUnnamed1041(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1055() {
+buildUnnamed1042() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1055(core.List<core.String> o) {
+checkUnnamed1042(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -553,8 +553,8 @@
     o.kind = "foo";
     o.name = "foo";
     o.parentLink = buildCustomDataSourceParentLink();
-    o.profilesLinked = buildUnnamed1054();
-    o.schema = buildUnnamed1055();
+    o.profilesLinked = buildUnnamed1041();
+    o.schema = buildUnnamed1042();
     o.selfLink = "foo";
     o.type = "foo";
     o.updated = core.DateTime.parse("2002-02-27T14:01:02");
@@ -578,8 +578,8 @@
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     checkCustomDataSourceParentLink(o.parentLink);
-    checkUnnamed1054(o.profilesLinked);
-    checkUnnamed1055(o.schema);
+    checkUnnamed1041(o.profilesLinked);
+    checkUnnamed1042(o.schema);
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
     unittest.expect(
@@ -590,14 +590,14 @@
   buildCounterCustomDataSource--;
 }
 
-buildUnnamed1056() {
+buildUnnamed1043() {
   var o = new core.List<api.CustomDataSource>();
   o.add(buildCustomDataSource());
   o.add(buildCustomDataSource());
   return o;
 }
 
-checkUnnamed1056(core.List<api.CustomDataSource> o) {
+checkUnnamed1043(core.List<api.CustomDataSource> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCustomDataSource(o[0]);
   checkCustomDataSource(o[1]);
@@ -608,7 +608,7 @@
   var o = new api.CustomDataSources();
   buildCounterCustomDataSources++;
   if (buildCounterCustomDataSources < 3) {
-    o.items = buildUnnamed1056();
+    o.items = buildUnnamed1043();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -624,7 +624,7 @@
 checkCustomDataSources(api.CustomDataSources o) {
   buildCounterCustomDataSources++;
   if (buildCounterCustomDataSources < 3) {
-    checkUnnamed1056(o.items);
+    checkUnnamed1043(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -700,14 +700,14 @@
   buildCounterCustomDimension--;
 }
 
-buildUnnamed1057() {
+buildUnnamed1044() {
   var o = new core.List<api.CustomDimension>();
   o.add(buildCustomDimension());
   o.add(buildCustomDimension());
   return o;
 }
 
-checkUnnamed1057(core.List<api.CustomDimension> o) {
+checkUnnamed1044(core.List<api.CustomDimension> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCustomDimension(o[0]);
   checkCustomDimension(o[1]);
@@ -718,7 +718,7 @@
   var o = new api.CustomDimensions();
   buildCounterCustomDimensions++;
   if (buildCounterCustomDimensions < 3) {
-    o.items = buildUnnamed1057();
+    o.items = buildUnnamed1044();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -734,7 +734,7 @@
 checkCustomDimensions(api.CustomDimensions o) {
   buildCounterCustomDimensions++;
   if (buildCounterCustomDimensions < 3) {
-    checkUnnamed1057(o.items);
+    checkUnnamed1044(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -816,14 +816,14 @@
   buildCounterCustomMetric--;
 }
 
-buildUnnamed1058() {
+buildUnnamed1045() {
   var o = new core.List<api.CustomMetric>();
   o.add(buildCustomMetric());
   o.add(buildCustomMetric());
   return o;
 }
 
-checkUnnamed1058(core.List<api.CustomMetric> o) {
+checkUnnamed1045(core.List<api.CustomMetric> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCustomMetric(o[0]);
   checkCustomMetric(o[1]);
@@ -834,7 +834,7 @@
   var o = new api.CustomMetrics();
   buildCounterCustomMetrics++;
   if (buildCounterCustomMetrics < 3) {
-    o.items = buildUnnamed1058();
+    o.items = buildUnnamed1045();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -850,7 +850,7 @@
 checkCustomMetrics(api.CustomMetrics o) {
   buildCounterCustomMetrics++;
   if (buildCounterCustomMetrics < 3) {
-    checkUnnamed1058(o.items);
+    checkUnnamed1045(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -862,14 +862,14 @@
   buildCounterCustomMetrics--;
 }
 
-buildUnnamed1059() {
+buildUnnamed1046() {
   var o = new core.List<api.AdWordsAccount>();
   o.add(buildAdWordsAccount());
   o.add(buildAdWordsAccount());
   return o;
 }
 
-checkUnnamed1059(core.List<api.AdWordsAccount> o) {
+checkUnnamed1046(core.List<api.AdWordsAccount> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAdWordsAccount(o[0]);
   checkAdWordsAccount(o[1]);
@@ -894,14 +894,14 @@
   buildCounterEntityAdWordsLinkEntity--;
 }
 
-buildUnnamed1060() {
+buildUnnamed1047() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1060(core.List<core.String> o) {
+checkUnnamed1047(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -912,12 +912,12 @@
   var o = new api.EntityAdWordsLink();
   buildCounterEntityAdWordsLink++;
   if (buildCounterEntityAdWordsLink < 3) {
-    o.adWordsAccounts = buildUnnamed1059();
+    o.adWordsAccounts = buildUnnamed1046();
     o.entity = buildEntityAdWordsLinkEntity();
     o.id = "foo";
     o.kind = "foo";
     o.name = "foo";
-    o.profileIds = buildUnnamed1060();
+    o.profileIds = buildUnnamed1047();
     o.selfLink = "foo";
   }
   buildCounterEntityAdWordsLink--;
@@ -927,25 +927,25 @@
 checkEntityAdWordsLink(api.EntityAdWordsLink o) {
   buildCounterEntityAdWordsLink++;
   if (buildCounterEntityAdWordsLink < 3) {
-    checkUnnamed1059(o.adWordsAccounts);
+    checkUnnamed1046(o.adWordsAccounts);
     checkEntityAdWordsLinkEntity(o.entity);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1060(o.profileIds);
+    checkUnnamed1047(o.profileIds);
     unittest.expect(o.selfLink, unittest.equals('foo'));
   }
   buildCounterEntityAdWordsLink--;
 }
 
-buildUnnamed1061() {
+buildUnnamed1048() {
   var o = new core.List<api.EntityAdWordsLink>();
   o.add(buildEntityAdWordsLink());
   o.add(buildEntityAdWordsLink());
   return o;
 }
 
-checkUnnamed1061(core.List<api.EntityAdWordsLink> o) {
+checkUnnamed1048(core.List<api.EntityAdWordsLink> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntityAdWordsLink(o[0]);
   checkEntityAdWordsLink(o[1]);
@@ -956,7 +956,7 @@
   var o = new api.EntityAdWordsLinks();
   buildCounterEntityAdWordsLinks++;
   if (buildCounterEntityAdWordsLinks < 3) {
-    o.items = buildUnnamed1061();
+    o.items = buildUnnamed1048();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -971,7 +971,7 @@
 checkEntityAdWordsLinks(api.EntityAdWordsLinks o) {
   buildCounterEntityAdWordsLinks++;
   if (buildCounterEntityAdWordsLinks < 3) {
-    checkUnnamed1061(o.items);
+    checkUnnamed1048(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -1005,27 +1005,27 @@
   buildCounterEntityUserLinkEntity--;
 }
 
-buildUnnamed1062() {
+buildUnnamed1049() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1062(core.List<core.String> o) {
+checkUnnamed1049(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1063() {
+buildUnnamed1050() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1063(core.List<core.String> o) {
+checkUnnamed1050(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1036,8 +1036,8 @@
   var o = new api.EntityUserLinkPermissions();
   buildCounterEntityUserLinkPermissions++;
   if (buildCounterEntityUserLinkPermissions < 3) {
-    o.effective = buildUnnamed1062();
-    o.local = buildUnnamed1063();
+    o.effective = buildUnnamed1049();
+    o.local = buildUnnamed1050();
   }
   buildCounterEntityUserLinkPermissions--;
   return o;
@@ -1046,8 +1046,8 @@
 checkEntityUserLinkPermissions(api.EntityUserLinkPermissions o) {
   buildCounterEntityUserLinkPermissions++;
   if (buildCounterEntityUserLinkPermissions < 3) {
-    checkUnnamed1062(o.effective);
-    checkUnnamed1063(o.local);
+    checkUnnamed1049(o.effective);
+    checkUnnamed1050(o.local);
   }
   buildCounterEntityUserLinkPermissions--;
 }
@@ -1081,14 +1081,14 @@
   buildCounterEntityUserLink--;
 }
 
-buildUnnamed1064() {
+buildUnnamed1051() {
   var o = new core.List<api.EntityUserLink>();
   o.add(buildEntityUserLink());
   o.add(buildEntityUserLink());
   return o;
 }
 
-checkUnnamed1064(core.List<api.EntityUserLink> o) {
+checkUnnamed1051(core.List<api.EntityUserLink> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntityUserLink(o[0]);
   checkEntityUserLink(o[1]);
@@ -1099,7 +1099,7 @@
   var o = new api.EntityUserLinks();
   buildCounterEntityUserLinks++;
   if (buildCounterEntityUserLinks < 3) {
-    o.items = buildUnnamed1064();
+    o.items = buildUnnamed1051();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -1114,7 +1114,7 @@
 checkEntityUserLinks(api.EntityUserLinks o) {
   buildCounterEntityUserLinks++;
   if (buildCounterEntityUserLinks < 3) {
-    checkUnnamed1064(o.items);
+    checkUnnamed1051(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -1173,14 +1173,14 @@
   buildCounterExperimentVariations--;
 }
 
-buildUnnamed1065() {
+buildUnnamed1052() {
   var o = new core.List<api.ExperimentVariations>();
   o.add(buildExperimentVariations());
   o.add(buildExperimentVariations());
   return o;
 }
 
-checkUnnamed1065(core.List<api.ExperimentVariations> o) {
+checkUnnamed1052(core.List<api.ExperimentVariations> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkExperimentVariations(o[0]);
   checkExperimentVariations(o[1]);
@@ -1215,7 +1215,7 @@
     o.status = "foo";
     o.trafficCoverage = 42.0;
     o.updated = core.DateTime.parse("2002-02-27T14:01:02");
-    o.variations = buildUnnamed1065();
+    o.variations = buildUnnamed1052();
     o.webPropertyId = "foo";
     o.winnerConfidenceLevel = 42.0;
     o.winnerFound = true;
@@ -1255,7 +1255,7 @@
     unittest.expect(o.trafficCoverage, unittest.equals(42.0));
     unittest.expect(
         o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
-    checkUnnamed1065(o.variations);
+    checkUnnamed1052(o.variations);
     unittest.expect(o.webPropertyId, unittest.equals('foo'));
     unittest.expect(o.winnerConfidenceLevel, unittest.equals(42.0));
     unittest.expect(o.winnerFound, unittest.isTrue);
@@ -1263,14 +1263,14 @@
   buildCounterExperiment--;
 }
 
-buildUnnamed1066() {
+buildUnnamed1053() {
   var o = new core.List<api.Experiment>();
   o.add(buildExperiment());
   o.add(buildExperiment());
   return o;
 }
 
-checkUnnamed1066(core.List<api.Experiment> o) {
+checkUnnamed1053(core.List<api.Experiment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkExperiment(o[0]);
   checkExperiment(o[1]);
@@ -1281,7 +1281,7 @@
   var o = new api.Experiments();
   buildCounterExperiments++;
   if (buildCounterExperiments < 3) {
-    o.items = buildUnnamed1066();
+    o.items = buildUnnamed1053();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -1297,7 +1297,7 @@
 checkExperiments(api.Experiments o) {
   buildCounterExperiments++;
   if (buildCounterExperiments < 3) {
-    checkUnnamed1066(o.items);
+    checkUnnamed1053(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -1547,14 +1547,14 @@
   buildCounterFilterRef--;
 }
 
-buildUnnamed1067() {
+buildUnnamed1054() {
   var o = new core.List<api.Filter>();
   o.add(buildFilter());
   o.add(buildFilter());
   return o;
 }
 
-checkUnnamed1067(core.List<api.Filter> o) {
+checkUnnamed1054(core.List<api.Filter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFilter(o[0]);
   checkFilter(o[1]);
@@ -1565,7 +1565,7 @@
   var o = new api.Filters();
   buildCounterFilters++;
   if (buildCounterFilters < 3) {
-    o.items = buildUnnamed1067();
+    o.items = buildUnnamed1054();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -1581,7 +1581,7 @@
 checkFilters(api.Filters o) {
   buildCounterFilters++;
   if (buildCounterFilters < 3) {
-    checkUnnamed1067(o.items);
+    checkUnnamed1054(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -1616,14 +1616,14 @@
   buildCounterGaDataColumnHeaders--;
 }
 
-buildUnnamed1068() {
+buildUnnamed1055() {
   var o = new core.List<api.GaDataColumnHeaders>();
   o.add(buildGaDataColumnHeaders());
   o.add(buildGaDataColumnHeaders());
   return o;
 }
 
-checkUnnamed1068(core.List<api.GaDataColumnHeaders> o) {
+checkUnnamed1055(core.List<api.GaDataColumnHeaders> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGaDataColumnHeaders(o[0]);
   checkGaDataColumnHeaders(o[1]);
@@ -1652,14 +1652,14 @@
   buildCounterGaDataDataTableCols--;
 }
 
-buildUnnamed1069() {
+buildUnnamed1056() {
   var o = new core.List<api.GaDataDataTableCols>();
   o.add(buildGaDataDataTableCols());
   o.add(buildGaDataDataTableCols());
   return o;
 }
 
-checkUnnamed1069(core.List<api.GaDataDataTableCols> o) {
+checkUnnamed1056(core.List<api.GaDataDataTableCols> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGaDataDataTableCols(o[0]);
   checkGaDataDataTableCols(o[1]);
@@ -1684,14 +1684,14 @@
   buildCounterGaDataDataTableRowsC--;
 }
 
-buildUnnamed1070() {
+buildUnnamed1057() {
   var o = new core.List<api.GaDataDataTableRowsC>();
   o.add(buildGaDataDataTableRowsC());
   o.add(buildGaDataDataTableRowsC());
   return o;
 }
 
-checkUnnamed1070(core.List<api.GaDataDataTableRowsC> o) {
+checkUnnamed1057(core.List<api.GaDataDataTableRowsC> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGaDataDataTableRowsC(o[0]);
   checkGaDataDataTableRowsC(o[1]);
@@ -1702,7 +1702,7 @@
   var o = new api.GaDataDataTableRows();
   buildCounterGaDataDataTableRows++;
   if (buildCounterGaDataDataTableRows < 3) {
-    o.c = buildUnnamed1070();
+    o.c = buildUnnamed1057();
   }
   buildCounterGaDataDataTableRows--;
   return o;
@@ -1711,19 +1711,19 @@
 checkGaDataDataTableRows(api.GaDataDataTableRows o) {
   buildCounterGaDataDataTableRows++;
   if (buildCounterGaDataDataTableRows < 3) {
-    checkUnnamed1070(o.c);
+    checkUnnamed1057(o.c);
   }
   buildCounterGaDataDataTableRows--;
 }
 
-buildUnnamed1071() {
+buildUnnamed1058() {
   var o = new core.List<api.GaDataDataTableRows>();
   o.add(buildGaDataDataTableRows());
   o.add(buildGaDataDataTableRows());
   return o;
 }
 
-checkUnnamed1071(core.List<api.GaDataDataTableRows> o) {
+checkUnnamed1058(core.List<api.GaDataDataTableRows> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGaDataDataTableRows(o[0]);
   checkGaDataDataTableRows(o[1]);
@@ -1734,8 +1734,8 @@
   var o = new api.GaDataDataTable();
   buildCounterGaDataDataTable++;
   if (buildCounterGaDataDataTable < 3) {
-    o.cols = buildUnnamed1069();
-    o.rows = buildUnnamed1071();
+    o.cols = buildUnnamed1056();
+    o.rows = buildUnnamed1058();
   }
   buildCounterGaDataDataTable--;
   return o;
@@ -1744,8 +1744,8 @@
 checkGaDataDataTable(api.GaDataDataTable o) {
   buildCounterGaDataDataTable++;
   if (buildCounterGaDataDataTable < 3) {
-    checkUnnamed1069(o.cols);
-    checkUnnamed1071(o.rows);
+    checkUnnamed1056(o.cols);
+    checkUnnamed1058(o.rows);
   }
   buildCounterGaDataDataTable--;
 }
@@ -1779,27 +1779,27 @@
   buildCounterGaDataProfileInfo--;
 }
 
-buildUnnamed1072() {
+buildUnnamed1059() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1072(core.List<core.String> o) {
+checkUnnamed1059(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1073() {
+buildUnnamed1060() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1073(core.List<core.String> o) {
+checkUnnamed1060(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1815,10 +1815,10 @@
     o.filters = "foo";
     o.ids = "foo";
     o.max_results = 42;
-    o.metrics = buildUnnamed1072();
+    o.metrics = buildUnnamed1059();
     o.samplingLevel = "foo";
     o.segment = "foo";
-    o.sort = buildUnnamed1073();
+    o.sort = buildUnnamed1060();
     o.start_date = "foo";
     o.start_index = 42;
   }
@@ -1834,50 +1834,50 @@
     unittest.expect(o.filters, unittest.equals('foo'));
     unittest.expect(o.ids, unittest.equals('foo'));
     unittest.expect(o.max_results, unittest.equals(42));
-    checkUnnamed1072(o.metrics);
+    checkUnnamed1059(o.metrics);
     unittest.expect(o.samplingLevel, unittest.equals('foo'));
     unittest.expect(o.segment, unittest.equals('foo'));
-    checkUnnamed1073(o.sort);
+    checkUnnamed1060(o.sort);
     unittest.expect(o.start_date, unittest.equals('foo'));
     unittest.expect(o.start_index, unittest.equals(42));
   }
   buildCounterGaDataQuery--;
 }
 
-buildUnnamed1074() {
+buildUnnamed1061() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1074(core.List<core.String> o) {
+checkUnnamed1061(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1075() {
+buildUnnamed1062() {
   var o = new core.List<core.List<core.String>>();
-  o.add(buildUnnamed1074());
-  o.add(buildUnnamed1074());
+  o.add(buildUnnamed1061());
+  o.add(buildUnnamed1061());
   return o;
 }
 
-checkUnnamed1075(core.List<core.List<core.String>> o) {
+checkUnnamed1062(core.List<core.List<core.String>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1074(o[0]);
-  checkUnnamed1074(o[1]);
+  checkUnnamed1061(o[0]);
+  checkUnnamed1061(o[1]);
 }
 
-buildUnnamed1076() {
+buildUnnamed1063() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1076(core.Map<core.String, core.String> o) {
+checkUnnamed1063(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1888,7 +1888,7 @@
   var o = new api.GaData();
   buildCounterGaData++;
   if (buildCounterGaData < 3) {
-    o.columnHeaders = buildUnnamed1068();
+    o.columnHeaders = buildUnnamed1055();
     o.containsSampledData = true;
     o.dataLastRefreshed = "foo";
     o.dataTable = buildGaDataDataTable();
@@ -1899,12 +1899,12 @@
     o.previousLink = "foo";
     o.profileInfo = buildGaDataProfileInfo();
     o.query = buildGaDataQuery();
-    o.rows = buildUnnamed1075();
+    o.rows = buildUnnamed1062();
     o.sampleSize = "foo";
     o.sampleSpace = "foo";
     o.selfLink = "foo";
     o.totalResults = 42;
-    o.totalsForAllResults = buildUnnamed1076();
+    o.totalsForAllResults = buildUnnamed1063();
   }
   buildCounterGaData--;
   return o;
@@ -1913,7 +1913,7 @@
 checkGaData(api.GaData o) {
   buildCounterGaData++;
   if (buildCounterGaData < 3) {
-    checkUnnamed1068(o.columnHeaders);
+    checkUnnamed1055(o.columnHeaders);
     unittest.expect(o.containsSampledData, unittest.isTrue);
     unittest.expect(o.dataLastRefreshed, unittest.equals('foo'));
     checkGaDataDataTable(o.dataTable);
@@ -1924,12 +1924,12 @@
     unittest.expect(o.previousLink, unittest.equals('foo'));
     checkGaDataProfileInfo(o.profileInfo);
     checkGaDataQuery(o.query);
-    checkUnnamed1075(o.rows);
+    checkUnnamed1062(o.rows);
     unittest.expect(o.sampleSize, unittest.equals('foo'));
     unittest.expect(o.sampleSpace, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.totalResults, unittest.equals(42));
-    checkUnnamed1076(o.totalsForAllResults);
+    checkUnnamed1063(o.totalsForAllResults);
   }
   buildCounterGaData--;
 }
@@ -1961,14 +1961,14 @@
   buildCounterGoalEventDetailsEventConditions--;
 }
 
-buildUnnamed1077() {
+buildUnnamed1064() {
   var o = new core.List<api.GoalEventDetailsEventConditions>();
   o.add(buildGoalEventDetailsEventConditions());
   o.add(buildGoalEventDetailsEventConditions());
   return o;
 }
 
-checkUnnamed1077(core.List<api.GoalEventDetailsEventConditions> o) {
+checkUnnamed1064(core.List<api.GoalEventDetailsEventConditions> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoalEventDetailsEventConditions(o[0]);
   checkGoalEventDetailsEventConditions(o[1]);
@@ -1979,7 +1979,7 @@
   var o = new api.GoalEventDetails();
   buildCounterGoalEventDetails++;
   if (buildCounterGoalEventDetails < 3) {
-    o.eventConditions = buildUnnamed1077();
+    o.eventConditions = buildUnnamed1064();
     o.useEventValue = true;
   }
   buildCounterGoalEventDetails--;
@@ -1989,7 +1989,7 @@
 checkGoalEventDetails(api.GoalEventDetails o) {
   buildCounterGoalEventDetails++;
   if (buildCounterGoalEventDetails < 3) {
-    checkUnnamed1077(o.eventConditions);
+    checkUnnamed1064(o.eventConditions);
     unittest.expect(o.useEventValue, unittest.isTrue);
   }
   buildCounterGoalEventDetails--;
@@ -2039,14 +2039,14 @@
   buildCounterGoalUrlDestinationDetailsSteps--;
 }
 
-buildUnnamed1078() {
+buildUnnamed1065() {
   var o = new core.List<api.GoalUrlDestinationDetailsSteps>();
   o.add(buildGoalUrlDestinationDetailsSteps());
   o.add(buildGoalUrlDestinationDetailsSteps());
   return o;
 }
 
-checkUnnamed1078(core.List<api.GoalUrlDestinationDetailsSteps> o) {
+checkUnnamed1065(core.List<api.GoalUrlDestinationDetailsSteps> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoalUrlDestinationDetailsSteps(o[0]);
   checkGoalUrlDestinationDetailsSteps(o[1]);
@@ -2060,7 +2060,7 @@
     o.caseSensitive = true;
     o.firstStepRequired = true;
     o.matchType = "foo";
-    o.steps = buildUnnamed1078();
+    o.steps = buildUnnamed1065();
     o.url = "foo";
   }
   buildCounterGoalUrlDestinationDetails--;
@@ -2073,7 +2073,7 @@
     unittest.expect(o.caseSensitive, unittest.isTrue);
     unittest.expect(o.firstStepRequired, unittest.isTrue);
     unittest.expect(o.matchType, unittest.equals('foo'));
-    checkUnnamed1078(o.steps);
+    checkUnnamed1065(o.steps);
     unittest.expect(o.url, unittest.equals('foo'));
   }
   buildCounterGoalUrlDestinationDetails--;
@@ -2176,14 +2176,14 @@
   buildCounterGoal--;
 }
 
-buildUnnamed1079() {
+buildUnnamed1066() {
   var o = new core.List<api.Goal>();
   o.add(buildGoal());
   o.add(buildGoal());
   return o;
 }
 
-checkUnnamed1079(core.List<api.Goal> o) {
+checkUnnamed1066(core.List<api.Goal> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoal(o[0]);
   checkGoal(o[1]);
@@ -2194,7 +2194,7 @@
   var o = new api.Goals();
   buildCounterGoals++;
   if (buildCounterGoals < 3) {
-    o.items = buildUnnamed1079();
+    o.items = buildUnnamed1066();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -2210,7 +2210,7 @@
 checkGoals(api.Goals o) {
   buildCounterGoals++;
   if (buildCounterGoals < 3) {
-    checkUnnamed1079(o.items);
+    checkUnnamed1066(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -2309,14 +2309,14 @@
   buildCounterMcfDataColumnHeaders--;
 }
 
-buildUnnamed1080() {
+buildUnnamed1067() {
   var o = new core.List<api.McfDataColumnHeaders>();
   o.add(buildMcfDataColumnHeaders());
   o.add(buildMcfDataColumnHeaders());
   return o;
 }
 
-checkUnnamed1080(core.List<api.McfDataColumnHeaders> o) {
+checkUnnamed1067(core.List<api.McfDataColumnHeaders> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMcfDataColumnHeaders(o[0]);
   checkMcfDataColumnHeaders(o[1]);
@@ -2351,27 +2351,27 @@
   buildCounterMcfDataProfileInfo--;
 }
 
-buildUnnamed1081() {
+buildUnnamed1068() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1081(core.List<core.String> o) {
+checkUnnamed1068(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1082() {
+buildUnnamed1069() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1082(core.List<core.String> o) {
+checkUnnamed1069(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2387,10 +2387,10 @@
     o.filters = "foo";
     o.ids = "foo";
     o.max_results = 42;
-    o.metrics = buildUnnamed1081();
+    o.metrics = buildUnnamed1068();
     o.samplingLevel = "foo";
     o.segment = "foo";
-    o.sort = buildUnnamed1082();
+    o.sort = buildUnnamed1069();
     o.start_date = "foo";
     o.start_index = 42;
   }
@@ -2406,10 +2406,10 @@
     unittest.expect(o.filters, unittest.equals('foo'));
     unittest.expect(o.ids, unittest.equals('foo'));
     unittest.expect(o.max_results, unittest.equals(42));
-    checkUnnamed1081(o.metrics);
+    checkUnnamed1068(o.metrics);
     unittest.expect(o.samplingLevel, unittest.equals('foo'));
     unittest.expect(o.segment, unittest.equals('foo'));
-    checkUnnamed1082(o.sort);
+    checkUnnamed1069(o.sort);
     unittest.expect(o.start_date, unittest.equals('foo'));
     unittest.expect(o.start_index, unittest.equals(42));
   }
@@ -2437,14 +2437,14 @@
   buildCounterMcfDataRowsConversionPathValue--;
 }
 
-buildUnnamed1083() {
+buildUnnamed1070() {
   var o = new core.List<api.McfDataRowsConversionPathValue>();
   o.add(buildMcfDataRowsConversionPathValue());
   o.add(buildMcfDataRowsConversionPathValue());
   return o;
 }
 
-checkUnnamed1083(core.List<api.McfDataRowsConversionPathValue> o) {
+checkUnnamed1070(core.List<api.McfDataRowsConversionPathValue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMcfDataRowsConversionPathValue(o[0]);
   checkMcfDataRowsConversionPathValue(o[1]);
@@ -2455,7 +2455,7 @@
   var o = new api.McfDataRows();
   buildCounterMcfDataRows++;
   if (buildCounterMcfDataRows < 3) {
-    o.conversionPathValue = buildUnnamed1083();
+    o.conversionPathValue = buildUnnamed1070();
     o.primitiveValue = "foo";
   }
   buildCounterMcfDataRows--;
@@ -2465,46 +2465,46 @@
 checkMcfDataRows(api.McfDataRows o) {
   buildCounterMcfDataRows++;
   if (buildCounterMcfDataRows < 3) {
-    checkUnnamed1083(o.conversionPathValue);
+    checkUnnamed1070(o.conversionPathValue);
     unittest.expect(o.primitiveValue, unittest.equals('foo'));
   }
   buildCounterMcfDataRows--;
 }
 
-buildUnnamed1084() {
+buildUnnamed1071() {
   var o = new core.List<api.McfDataRows>();
   o.add(buildMcfDataRows());
   o.add(buildMcfDataRows());
   return o;
 }
 
-checkUnnamed1084(core.List<api.McfDataRows> o) {
+checkUnnamed1071(core.List<api.McfDataRows> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMcfDataRows(o[0]);
   checkMcfDataRows(o[1]);
 }
 
-buildUnnamed1085() {
+buildUnnamed1072() {
   var o = new core.List<core.List<api.McfDataRows>>();
-  o.add(buildUnnamed1084());
-  o.add(buildUnnamed1084());
+  o.add(buildUnnamed1071());
+  o.add(buildUnnamed1071());
   return o;
 }
 
-checkUnnamed1085(core.List<core.List<api.McfDataRows>> o) {
+checkUnnamed1072(core.List<core.List<api.McfDataRows>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1084(o[0]);
-  checkUnnamed1084(o[1]);
+  checkUnnamed1071(o[0]);
+  checkUnnamed1071(o[1]);
 }
 
-buildUnnamed1086() {
+buildUnnamed1073() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1086(core.Map<core.String, core.String> o) {
+checkUnnamed1073(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -2515,7 +2515,7 @@
   var o = new api.McfData();
   buildCounterMcfData++;
   if (buildCounterMcfData < 3) {
-    o.columnHeaders = buildUnnamed1080();
+    o.columnHeaders = buildUnnamed1067();
     o.containsSampledData = true;
     o.id = "foo";
     o.itemsPerPage = 42;
@@ -2524,12 +2524,12 @@
     o.previousLink = "foo";
     o.profileInfo = buildMcfDataProfileInfo();
     o.query = buildMcfDataQuery();
-    o.rows = buildUnnamed1085();
+    o.rows = buildUnnamed1072();
     o.sampleSize = "foo";
     o.sampleSpace = "foo";
     o.selfLink = "foo";
     o.totalResults = 42;
-    o.totalsForAllResults = buildUnnamed1086();
+    o.totalsForAllResults = buildUnnamed1073();
   }
   buildCounterMcfData--;
   return o;
@@ -2538,7 +2538,7 @@
 checkMcfData(api.McfData o) {
   buildCounterMcfData++;
   if (buildCounterMcfData < 3) {
-    checkUnnamed1080(o.columnHeaders);
+    checkUnnamed1067(o.columnHeaders);
     unittest.expect(o.containsSampledData, unittest.isTrue);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.itemsPerPage, unittest.equals(42));
@@ -2547,12 +2547,12 @@
     unittest.expect(o.previousLink, unittest.equals('foo'));
     checkMcfDataProfileInfo(o.profileInfo);
     checkMcfDataQuery(o.query);
-    checkUnnamed1085(o.rows);
+    checkUnnamed1072(o.rows);
     unittest.expect(o.sampleSize, unittest.equals('foo'));
     unittest.expect(o.sampleSpace, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.totalResults, unittest.equals(42));
-    checkUnnamed1086(o.totalsForAllResults);
+    checkUnnamed1073(o.totalsForAllResults);
   }
   buildCounterMcfData--;
 }
@@ -2599,14 +2599,14 @@
   buildCounterProfileParentLink--;
 }
 
-buildUnnamed1087() {
+buildUnnamed1074() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1087(core.List<core.String> o) {
+checkUnnamed1074(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2617,7 +2617,7 @@
   var o = new api.ProfilePermissions();
   buildCounterProfilePermissions++;
   if (buildCounterProfilePermissions < 3) {
-    o.effective = buildUnnamed1087();
+    o.effective = buildUnnamed1074();
   }
   buildCounterProfilePermissions--;
   return o;
@@ -2626,7 +2626,7 @@
 checkProfilePermissions(api.ProfilePermissions o) {
   buildCounterProfilePermissions++;
   if (buildCounterProfilePermissions < 3) {
-    checkUnnamed1087(o.effective);
+    checkUnnamed1074(o.effective);
   }
   buildCounterProfilePermissions--;
 }
@@ -2731,14 +2731,14 @@
   buildCounterProfileFilterLink--;
 }
 
-buildUnnamed1088() {
+buildUnnamed1075() {
   var o = new core.List<api.ProfileFilterLink>();
   o.add(buildProfileFilterLink());
   o.add(buildProfileFilterLink());
   return o;
 }
 
-checkUnnamed1088(core.List<api.ProfileFilterLink> o) {
+checkUnnamed1075(core.List<api.ProfileFilterLink> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProfileFilterLink(o[0]);
   checkProfileFilterLink(o[1]);
@@ -2749,7 +2749,7 @@
   var o = new api.ProfileFilterLinks();
   buildCounterProfileFilterLinks++;
   if (buildCounterProfileFilterLinks < 3) {
-    o.items = buildUnnamed1088();
+    o.items = buildUnnamed1075();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -2765,7 +2765,7 @@
 checkProfileFilterLinks(api.ProfileFilterLinks o) {
   buildCounterProfileFilterLinks++;
   if (buildCounterProfileFilterLinks < 3) {
-    checkUnnamed1088(o.items);
+    checkUnnamed1075(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -2835,14 +2835,14 @@
   buildCounterProfileSummary--;
 }
 
-buildUnnamed1089() {
+buildUnnamed1076() {
   var o = new core.List<api.Profile>();
   o.add(buildProfile());
   o.add(buildProfile());
   return o;
 }
 
-checkUnnamed1089(core.List<api.Profile> o) {
+checkUnnamed1076(core.List<api.Profile> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProfile(o[0]);
   checkProfile(o[1]);
@@ -2853,7 +2853,7 @@
   var o = new api.Profiles();
   buildCounterProfiles++;
   if (buildCounterProfiles < 3) {
-    o.items = buildUnnamed1089();
+    o.items = buildUnnamed1076();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -2869,7 +2869,7 @@
 checkProfiles(api.Profiles o) {
   buildCounterProfiles++;
   if (buildCounterProfiles < 3) {
-    checkUnnamed1089(o.items);
+    checkUnnamed1076(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -2904,14 +2904,14 @@
   buildCounterRealtimeDataColumnHeaders--;
 }
 
-buildUnnamed1090() {
+buildUnnamed1077() {
   var o = new core.List<api.RealtimeDataColumnHeaders>();
   o.add(buildRealtimeDataColumnHeaders());
   o.add(buildRealtimeDataColumnHeaders());
   return o;
 }
 
-checkUnnamed1090(core.List<api.RealtimeDataColumnHeaders> o) {
+checkUnnamed1077(core.List<api.RealtimeDataColumnHeaders> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRealtimeDataColumnHeaders(o[0]);
   checkRealtimeDataColumnHeaders(o[1]);
@@ -2946,27 +2946,27 @@
   buildCounterRealtimeDataProfileInfo--;
 }
 
-buildUnnamed1091() {
+buildUnnamed1078() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1091(core.List<core.String> o) {
+checkUnnamed1078(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1092() {
+buildUnnamed1079() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1092(core.List<core.String> o) {
+checkUnnamed1079(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2981,8 +2981,8 @@
     o.filters = "foo";
     o.ids = "foo";
     o.max_results = 42;
-    o.metrics = buildUnnamed1091();
-    o.sort = buildUnnamed1092();
+    o.metrics = buildUnnamed1078();
+    o.sort = buildUnnamed1079();
   }
   buildCounterRealtimeDataQuery--;
   return o;
@@ -2995,46 +2995,46 @@
     unittest.expect(o.filters, unittest.equals('foo'));
     unittest.expect(o.ids, unittest.equals('foo'));
     unittest.expect(o.max_results, unittest.equals(42));
-    checkUnnamed1091(o.metrics);
-    checkUnnamed1092(o.sort);
+    checkUnnamed1078(o.metrics);
+    checkUnnamed1079(o.sort);
   }
   buildCounterRealtimeDataQuery--;
 }
 
-buildUnnamed1093() {
+buildUnnamed1080() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1093(core.List<core.String> o) {
+checkUnnamed1080(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1094() {
+buildUnnamed1081() {
   var o = new core.List<core.List<core.String>>();
-  o.add(buildUnnamed1093());
-  o.add(buildUnnamed1093());
+  o.add(buildUnnamed1080());
+  o.add(buildUnnamed1080());
   return o;
 }
 
-checkUnnamed1094(core.List<core.List<core.String>> o) {
+checkUnnamed1081(core.List<core.List<core.String>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1093(o[0]);
-  checkUnnamed1093(o[1]);
+  checkUnnamed1080(o[0]);
+  checkUnnamed1080(o[1]);
 }
 
-buildUnnamed1095() {
+buildUnnamed1082() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1095(core.Map<core.String, core.String> o) {
+checkUnnamed1082(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -3045,15 +3045,15 @@
   var o = new api.RealtimeData();
   buildCounterRealtimeData++;
   if (buildCounterRealtimeData < 3) {
-    o.columnHeaders = buildUnnamed1090();
+    o.columnHeaders = buildUnnamed1077();
     o.id = "foo";
     o.kind = "foo";
     o.profileInfo = buildRealtimeDataProfileInfo();
     o.query = buildRealtimeDataQuery();
-    o.rows = buildUnnamed1094();
+    o.rows = buildUnnamed1081();
     o.selfLink = "foo";
     o.totalResults = 42;
-    o.totalsForAllResults = buildUnnamed1095();
+    o.totalsForAllResults = buildUnnamed1082();
   }
   buildCounterRealtimeData--;
   return o;
@@ -3062,15 +3062,15 @@
 checkRealtimeData(api.RealtimeData o) {
   buildCounterRealtimeData++;
   if (buildCounterRealtimeData < 3) {
-    checkUnnamed1090(o.columnHeaders);
+    checkUnnamed1077(o.columnHeaders);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     checkRealtimeDataProfileInfo(o.profileInfo);
     checkRealtimeDataQuery(o.query);
-    checkUnnamed1094(o.rows);
+    checkUnnamed1081(o.rows);
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.totalResults, unittest.equals(42));
-    checkUnnamed1095(o.totalsForAllResults);
+    checkUnnamed1082(o.totalsForAllResults);
   }
   buildCounterRealtimeData--;
 }
@@ -3095,27 +3095,27 @@
   buildCounterRemarketingAudienceAudienceDefinition--;
 }
 
-buildUnnamed1096() {
+buildUnnamed1083() {
   var o = new core.List<api.LinkedForeignAccount>();
   o.add(buildLinkedForeignAccount());
   o.add(buildLinkedForeignAccount());
   return o;
 }
 
-checkUnnamed1096(core.List<api.LinkedForeignAccount> o) {
+checkUnnamed1083(core.List<api.LinkedForeignAccount> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLinkedForeignAccount(o[0]);
   checkLinkedForeignAccount(o[1]);
 }
 
-buildUnnamed1097() {
+buildUnnamed1084() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1097(core.List<core.String> o) {
+checkUnnamed1084(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -3185,8 +3185,8 @@
     o.id = "foo";
     o.internalWebPropertyId = "foo";
     o.kind = "foo";
-    o.linkedAdAccounts = buildUnnamed1096();
-    o.linkedViews = buildUnnamed1097();
+    o.linkedAdAccounts = buildUnnamed1083();
+    o.linkedViews = buildUnnamed1084();
     o.name = "foo";
     o.stateBasedAudienceDefinition =
         buildRemarketingAudienceStateBasedAudienceDefinition();
@@ -3209,8 +3209,8 @@
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.internalWebPropertyId, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed1096(o.linkedAdAccounts);
-    checkUnnamed1097(o.linkedViews);
+    checkUnnamed1083(o.linkedAdAccounts);
+    checkUnnamed1084(o.linkedViews);
     unittest.expect(o.name, unittest.equals('foo'));
     checkRemarketingAudienceStateBasedAudienceDefinition(
         o.stateBasedAudienceDefinition);
@@ -3221,14 +3221,14 @@
   buildCounterRemarketingAudience--;
 }
 
-buildUnnamed1098() {
+buildUnnamed1085() {
   var o = new core.List<api.RemarketingAudience>();
   o.add(buildRemarketingAudience());
   o.add(buildRemarketingAudience());
   return o;
 }
 
-checkUnnamed1098(core.List<api.RemarketingAudience> o) {
+checkUnnamed1085(core.List<api.RemarketingAudience> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRemarketingAudience(o[0]);
   checkRemarketingAudience(o[1]);
@@ -3239,7 +3239,7 @@
   var o = new api.RemarketingAudiences();
   buildCounterRemarketingAudiences++;
   if (buildCounterRemarketingAudiences < 3) {
-    o.items = buildUnnamed1098();
+    o.items = buildUnnamed1085();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -3255,7 +3255,7 @@
 checkRemarketingAudiences(api.RemarketingAudiences o) {
   buildCounterRemarketingAudiences++;
   if (buildCounterRemarketingAudiences < 3) {
-    checkUnnamed1098(o.items);
+    checkUnnamed1085(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -3304,14 +3304,14 @@
   buildCounterSegment--;
 }
 
-buildUnnamed1099() {
+buildUnnamed1086() {
   var o = new core.List<api.Segment>();
   o.add(buildSegment());
   o.add(buildSegment());
   return o;
 }
 
-checkUnnamed1099(core.List<api.Segment> o) {
+checkUnnamed1086(core.List<api.Segment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSegment(o[0]);
   checkSegment(o[1]);
@@ -3322,7 +3322,7 @@
   var o = new api.Segments();
   buildCounterSegments++;
   if (buildCounterSegments < 3) {
-    o.items = buildUnnamed1099();
+    o.items = buildUnnamed1086();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -3338,7 +3338,7 @@
 checkSegments(api.Segments o) {
   buildCounterSegments++;
   if (buildCounterSegments < 3) {
-    checkUnnamed1099(o.items);
+    checkUnnamed1086(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -3451,14 +3451,14 @@
   buildCounterUnsampledReport--;
 }
 
-buildUnnamed1100() {
+buildUnnamed1087() {
   var o = new core.List<api.UnsampledReport>();
   o.add(buildUnsampledReport());
   o.add(buildUnsampledReport());
   return o;
 }
 
-checkUnnamed1100(core.List<api.UnsampledReport> o) {
+checkUnnamed1087(core.List<api.UnsampledReport> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUnsampledReport(o[0]);
   checkUnsampledReport(o[1]);
@@ -3469,7 +3469,7 @@
   var o = new api.UnsampledReports();
   buildCounterUnsampledReports++;
   if (buildCounterUnsampledReports < 3) {
-    o.items = buildUnnamed1100();
+    o.items = buildUnnamed1087();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -3485,7 +3485,7 @@
 checkUnsampledReports(api.UnsampledReports o) {
   buildCounterUnsampledReports++;
   if (buildCounterUnsampledReports < 3) {
-    checkUnnamed1100(o.items);
+    checkUnnamed1087(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -3497,14 +3497,14 @@
   buildCounterUnsampledReports--;
 }
 
-buildUnnamed1101() {
+buildUnnamed1088() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1101(core.List<core.String> o) {
+checkUnnamed1088(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -3517,7 +3517,7 @@
   if (buildCounterUpload < 3) {
     o.accountId = "foo";
     o.customDataSourceId = "foo";
-    o.errors = buildUnnamed1101();
+    o.errors = buildUnnamed1088();
     o.id = "foo";
     o.kind = "foo";
     o.status = "foo";
@@ -3532,7 +3532,7 @@
   if (buildCounterUpload < 3) {
     unittest.expect(o.accountId, unittest.equals('foo'));
     unittest.expect(o.customDataSourceId, unittest.equals('foo'));
-    checkUnnamed1101(o.errors);
+    checkUnnamed1088(o.errors);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals('foo'));
@@ -3542,14 +3542,14 @@
   buildCounterUpload--;
 }
 
-buildUnnamed1102() {
+buildUnnamed1089() {
   var o = new core.List<api.Upload>();
   o.add(buildUpload());
   o.add(buildUpload());
   return o;
 }
 
-checkUnnamed1102(core.List<api.Upload> o) {
+checkUnnamed1089(core.List<api.Upload> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUpload(o[0]);
   checkUpload(o[1]);
@@ -3560,7 +3560,7 @@
   var o = new api.Uploads();
   buildCounterUploads++;
   if (buildCounterUploads < 3) {
-    o.items = buildUnnamed1102();
+    o.items = buildUnnamed1089();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -3575,7 +3575,7 @@
 checkUploads(api.Uploads o) {
   buildCounterUploads++;
   if (buildCounterUploads < 3) {
-    checkUnnamed1102(o.items);
+    checkUnnamed1089(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -3638,14 +3638,14 @@
   buildCounterWebPropertyRef--;
 }
 
-buildUnnamed1103() {
+buildUnnamed1090() {
   var o = new core.List<api.ProfileSummary>();
   o.add(buildProfileSummary());
   o.add(buildProfileSummary());
   return o;
 }
 
-checkUnnamed1103(core.List<api.ProfileSummary> o) {
+checkUnnamed1090(core.List<api.ProfileSummary> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProfileSummary(o[0]);
   checkProfileSummary(o[1]);
@@ -3661,7 +3661,7 @@
     o.kind = "foo";
     o.level = "foo";
     o.name = "foo";
-    o.profiles = buildUnnamed1103();
+    o.profiles = buildUnnamed1090();
     o.starred = true;
     o.websiteUrl = "foo";
   }
@@ -3677,21 +3677,21 @@
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.level, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1103(o.profiles);
+    checkUnnamed1090(o.profiles);
     unittest.expect(o.starred, unittest.isTrue);
     unittest.expect(o.websiteUrl, unittest.equals('foo'));
   }
   buildCounterWebPropertySummary--;
 }
 
-buildUnnamed1104() {
+buildUnnamed1091() {
   var o = new core.List<api.Webproperty>();
   o.add(buildWebproperty());
   o.add(buildWebproperty());
   return o;
 }
 
-checkUnnamed1104(core.List<api.Webproperty> o) {
+checkUnnamed1091(core.List<api.Webproperty> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWebproperty(o[0]);
   checkWebproperty(o[1]);
@@ -3702,7 +3702,7 @@
   var o = new api.Webproperties();
   buildCounterWebproperties++;
   if (buildCounterWebproperties < 3) {
-    o.items = buildUnnamed1104();
+    o.items = buildUnnamed1091();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextLink = "foo";
@@ -3718,7 +3718,7 @@
 checkWebproperties(api.Webproperties o) {
   buildCounterWebproperties++;
   if (buildCounterWebproperties < 3) {
-    checkUnnamed1104(o.items);
+    checkUnnamed1091(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
@@ -3772,14 +3772,14 @@
   buildCounterWebpropertyParentLink--;
 }
 
-buildUnnamed1105() {
+buildUnnamed1092() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1105(core.List<core.String> o) {
+checkUnnamed1092(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -3790,7 +3790,7 @@
   var o = new api.WebpropertyPermissions();
   buildCounterWebpropertyPermissions++;
   if (buildCounterWebpropertyPermissions < 3) {
-    o.effective = buildUnnamed1105();
+    o.effective = buildUnnamed1092();
   }
   buildCounterWebpropertyPermissions--;
   return o;
@@ -3799,7 +3799,7 @@
 checkWebpropertyPermissions(api.WebpropertyPermissions o) {
   buildCounterWebpropertyPermissions++;
   if (buildCounterWebpropertyPermissions < 3) {
-    checkUnnamed1105(o.effective);
+    checkUnnamed1092(o.effective);
   }
   buildCounterWebpropertyPermissions--;
 }
@@ -4693,6 +4693,7 @@
       var arg_segment = "foo";
       var arg_sort = "foo";
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4749,6 +4750,7 @@
         unittest.expect(queryMap["sort"].first, unittest.equals(arg_sort));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4766,7 +4768,8 @@
               samplingLevel: arg_samplingLevel,
               segment: arg_segment,
               sort: arg_sort,
-              start_index: arg_start_index)
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GaData response) {
         checkGaData(response);
       })));
@@ -4787,6 +4790,7 @@
       var arg_samplingLevel = "foo";
       var arg_sort = "foo";
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4838,6 +4842,7 @@
         unittest.expect(queryMap["sort"].first, unittest.equals(arg_sort));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4852,7 +4857,8 @@
               max_results: arg_max_results,
               samplingLevel: arg_samplingLevel,
               sort: arg_sort,
-              start_index: arg_start_index)
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.McfData response) {
         checkMcfData(response);
       })));
@@ -4870,6 +4876,7 @@
       var arg_filters = "foo";
       var arg_max_results = 42;
       var arg_sort = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4913,6 +4920,7 @@
         unittest.expect(core.int.parse(queryMap["max-results"].first),
             unittest.equals(arg_max_results));
         unittest.expect(queryMap["sort"].first, unittest.equals(arg_sort));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4925,7 +4933,8 @@
               dimensions: arg_dimensions,
               filters: arg_filters,
               max_results: arg_max_results,
-              sort: arg_sort)
+              sort: arg_sort,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RealtimeData response) {
         checkRealtimeData(response);
       })));
@@ -4939,6 +4948,7 @@
           new api.AnalyticsApi(mock).management.accountSummaries;
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4976,6 +4986,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4984,7 +4995,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(max_results: arg_max_results, start_index: arg_start_index)
+          .list(
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AccountSummaries response) {
         checkAccountSummaries(response);
       })));
@@ -4998,6 +5012,7 @@
           new api.AnalyticsApi(mock).management.accountUserLinks;
       var arg_accountId = "foo";
       var arg_linkId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5043,6 +5058,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5050,7 +5066,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_accountId, arg_linkId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_accountId, arg_linkId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--insert", () {
@@ -5059,6 +5077,7 @@
           new api.AnalyticsApi(mock).management.accountUserLinks;
       var arg_request = buildEntityUserLink();
       var arg_accountId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EntityUserLink.fromJson(json);
         checkEntityUserLink(obj);
@@ -5104,6 +5123,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5112,7 +5132,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_accountId)
+          .insert(arg_request, arg_accountId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntityUserLink response) {
         checkEntityUserLink(response);
       })));
@@ -5125,6 +5145,7 @@
       var arg_accountId = "foo";
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5171,6 +5192,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5180,7 +5202,9 @@
       }), true);
       res
           .list(arg_accountId,
-              max_results: arg_max_results, start_index: arg_start_index)
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntityUserLinks response) {
         checkEntityUserLinks(response);
       })));
@@ -5193,6 +5217,7 @@
       var arg_request = buildEntityUserLink();
       var arg_accountId = "foo";
       var arg_linkId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EntityUserLink.fromJson(json);
         checkEntityUserLink(obj);
@@ -5241,6 +5266,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5249,7 +5275,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_accountId, arg_linkId)
+          .update(arg_request, arg_accountId, arg_linkId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntityUserLink response) {
         checkEntityUserLink(response);
       })));
@@ -5263,6 +5289,7 @@
           new api.AnalyticsApi(mock).management.accounts;
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5300,6 +5327,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5308,7 +5336,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(max_results: arg_max_results, start_index: arg_start_index)
+          .list(
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Accounts response) {
         checkAccounts(response);
       })));
@@ -5324,6 +5355,7 @@
       var arg_webPropertyId = "foo";
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5379,6 +5411,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5388,7 +5421,9 @@
       }), true);
       res
           .list(arg_accountId, arg_webPropertyId,
-              max_results: arg_max_results, start_index: arg_start_index)
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CustomDataSources response) {
         checkCustomDataSources(response);
       })));
@@ -5403,6 +5438,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_customDimensionId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5457,6 +5493,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5465,7 +5502,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_accountId, arg_webPropertyId, arg_customDimensionId)
+          .get(arg_accountId, arg_webPropertyId, arg_customDimensionId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CustomDimension response) {
         checkCustomDimension(response);
       })));
@@ -5478,6 +5516,7 @@
       var arg_request = buildCustomDimension();
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CustomDimension.fromJson(json);
         checkCustomDimension(obj);
@@ -5532,6 +5571,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5540,7 +5580,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_accountId, arg_webPropertyId)
+          .insert(arg_request, arg_accountId, arg_webPropertyId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CustomDimension response) {
         checkCustomDimension(response);
       })));
@@ -5554,6 +5595,7 @@
       var arg_webPropertyId = "foo";
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5609,6 +5651,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5618,7 +5661,9 @@
       }), true);
       res
           .list(arg_accountId, arg_webPropertyId,
-              max_results: arg_max_results, start_index: arg_start_index)
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CustomDimensions response) {
         checkCustomDimensions(response);
       })));
@@ -5633,6 +5678,7 @@
       var arg_webPropertyId = "foo";
       var arg_customDimensionId = "foo";
       var arg_ignoreCustomDataSourceLinks = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CustomDimension.fromJson(json);
         checkCustomDimension(obj);
@@ -5692,6 +5738,7 @@
         }
         unittest.expect(queryMap["ignoreCustomDataSourceLinks"].first,
             unittest.equals("$arg_ignoreCustomDataSourceLinks"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5702,7 +5749,8 @@
       res
           .patch(arg_request, arg_accountId, arg_webPropertyId,
               arg_customDimensionId,
-              ignoreCustomDataSourceLinks: arg_ignoreCustomDataSourceLinks)
+              ignoreCustomDataSourceLinks: arg_ignoreCustomDataSourceLinks,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CustomDimension response) {
         checkCustomDimension(response);
       })));
@@ -5717,6 +5765,7 @@
       var arg_webPropertyId = "foo";
       var arg_customDimensionId = "foo";
       var arg_ignoreCustomDataSourceLinks = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CustomDimension.fromJson(json);
         checkCustomDimension(obj);
@@ -5776,6 +5825,7 @@
         }
         unittest.expect(queryMap["ignoreCustomDataSourceLinks"].first,
             unittest.equals("$arg_ignoreCustomDataSourceLinks"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5786,7 +5836,8 @@
       res
           .update(arg_request, arg_accountId, arg_webPropertyId,
               arg_customDimensionId,
-              ignoreCustomDataSourceLinks: arg_ignoreCustomDataSourceLinks)
+              ignoreCustomDataSourceLinks: arg_ignoreCustomDataSourceLinks,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CustomDimension response) {
         checkCustomDimension(response);
       })));
@@ -5801,6 +5852,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_customMetricId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5855,6 +5907,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5863,7 +5916,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_accountId, arg_webPropertyId, arg_customMetricId)
+          .get(arg_accountId, arg_webPropertyId, arg_customMetricId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CustomMetric response) {
         checkCustomMetric(response);
       })));
@@ -5876,6 +5930,7 @@
       var arg_request = buildCustomMetric();
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CustomMetric.fromJson(json);
         checkCustomMetric(obj);
@@ -5930,6 +5985,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5938,7 +5994,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_accountId, arg_webPropertyId)
+          .insert(arg_request, arg_accountId, arg_webPropertyId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CustomMetric response) {
         checkCustomMetric(response);
       })));
@@ -5952,6 +6009,7 @@
       var arg_webPropertyId = "foo";
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6007,6 +6065,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6016,7 +6075,9 @@
       }), true);
       res
           .list(arg_accountId, arg_webPropertyId,
-              max_results: arg_max_results, start_index: arg_start_index)
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CustomMetrics response) {
         checkCustomMetrics(response);
       })));
@@ -6031,6 +6092,7 @@
       var arg_webPropertyId = "foo";
       var arg_customMetricId = "foo";
       var arg_ignoreCustomDataSourceLinks = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CustomMetric.fromJson(json);
         checkCustomMetric(obj);
@@ -6090,6 +6152,7 @@
         }
         unittest.expect(queryMap["ignoreCustomDataSourceLinks"].first,
             unittest.equals("$arg_ignoreCustomDataSourceLinks"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6100,7 +6163,8 @@
       res
           .patch(
               arg_request, arg_accountId, arg_webPropertyId, arg_customMetricId,
-              ignoreCustomDataSourceLinks: arg_ignoreCustomDataSourceLinks)
+              ignoreCustomDataSourceLinks: arg_ignoreCustomDataSourceLinks,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CustomMetric response) {
         checkCustomMetric(response);
       })));
@@ -6115,6 +6179,7 @@
       var arg_webPropertyId = "foo";
       var arg_customMetricId = "foo";
       var arg_ignoreCustomDataSourceLinks = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CustomMetric.fromJson(json);
         checkCustomMetric(obj);
@@ -6174,6 +6239,7 @@
         }
         unittest.expect(queryMap["ignoreCustomDataSourceLinks"].first,
             unittest.equals("$arg_ignoreCustomDataSourceLinks"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6184,7 +6250,8 @@
       res
           .update(
               arg_request, arg_accountId, arg_webPropertyId, arg_customMetricId,
-              ignoreCustomDataSourceLinks: arg_ignoreCustomDataSourceLinks)
+              ignoreCustomDataSourceLinks: arg_ignoreCustomDataSourceLinks,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CustomMetric response) {
         checkCustomMetric(response);
       })));
@@ -6200,6 +6267,7 @@
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
       var arg_experimentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6263,6 +6331,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6272,7 +6341,8 @@
       }), true);
       res
           .delete(
-              arg_accountId, arg_webPropertyId, arg_profileId, arg_experimentId)
+              arg_accountId, arg_webPropertyId, arg_profileId, arg_experimentId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -6284,6 +6354,7 @@
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
       var arg_experimentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6347,6 +6418,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6356,7 +6428,8 @@
       }), true);
       res
           .get(
-              arg_accountId, arg_webPropertyId, arg_profileId, arg_experimentId)
+              arg_accountId, arg_webPropertyId, arg_profileId, arg_experimentId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Experiment response) {
         checkExperiment(response);
       })));
@@ -6370,6 +6443,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Experiment.fromJson(json);
         checkExperiment(obj);
@@ -6433,6 +6507,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6441,7 +6516,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_accountId, arg_webPropertyId, arg_profileId)
+          .insert(arg_request, arg_accountId, arg_webPropertyId, arg_profileId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Experiment response) {
         checkExperiment(response);
       })));
@@ -6456,6 +6532,7 @@
       var arg_profileId = "foo";
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6520,6 +6597,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6529,7 +6607,9 @@
       }), true);
       res
           .list(arg_accountId, arg_webPropertyId, arg_profileId,
-              max_results: arg_max_results, start_index: arg_start_index)
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Experiments response) {
         checkExperiments(response);
       })));
@@ -6544,6 +6624,7 @@
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
       var arg_experimentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Experiment.fromJson(json);
         checkExperiment(obj);
@@ -6610,6 +6691,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6619,7 +6701,8 @@
       }), true);
       res
           .patch(arg_request, arg_accountId, arg_webPropertyId, arg_profileId,
-              arg_experimentId)
+              arg_experimentId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Experiment response) {
         checkExperiment(response);
       })));
@@ -6634,6 +6717,7 @@
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
       var arg_experimentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Experiment.fromJson(json);
         checkExperiment(obj);
@@ -6700,6 +6784,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6709,7 +6794,8 @@
       }), true);
       res
           .update(arg_request, arg_accountId, arg_webPropertyId, arg_profileId,
-              arg_experimentId)
+              arg_experimentId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Experiment response) {
         checkExperiment(response);
       })));
@@ -6723,6 +6809,7 @@
           new api.AnalyticsApi(mock).management.filters;
       var arg_accountId = "foo";
       var arg_filterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6768,6 +6855,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6776,7 +6864,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_accountId, arg_filterId)
+          .delete(arg_accountId, arg_filterId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Filter response) {
         checkFilter(response);
       })));
@@ -6788,6 +6876,7 @@
           new api.AnalyticsApi(mock).management.filters;
       var arg_accountId = "foo";
       var arg_filterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6833,6 +6922,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6841,7 +6931,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_accountId, arg_filterId)
+          .get(arg_accountId, arg_filterId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Filter response) {
         checkFilter(response);
       })));
@@ -6853,6 +6943,7 @@
           new api.AnalyticsApi(mock).management.filters;
       var arg_request = buildFilter();
       var arg_accountId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Filter.fromJson(json);
         checkFilter(obj);
@@ -6898,6 +6989,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6906,7 +6998,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_accountId)
+          .insert(arg_request, arg_accountId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Filter response) {
         checkFilter(response);
       })));
@@ -6919,6 +7011,7 @@
       var arg_accountId = "foo";
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6965,6 +7058,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6974,7 +7068,9 @@
       }), true);
       res
           .list(arg_accountId,
-              max_results: arg_max_results, start_index: arg_start_index)
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Filters response) {
         checkFilters(response);
       })));
@@ -6987,6 +7083,7 @@
       var arg_request = buildFilter();
       var arg_accountId = "foo";
       var arg_filterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Filter.fromJson(json);
         checkFilter(obj);
@@ -7035,6 +7132,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7043,7 +7141,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_accountId, arg_filterId)
+          .patch(arg_request, arg_accountId, arg_filterId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Filter response) {
         checkFilter(response);
       })));
@@ -7056,6 +7154,7 @@
       var arg_request = buildFilter();
       var arg_accountId = "foo";
       var arg_filterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Filter.fromJson(json);
         checkFilter(obj);
@@ -7104,6 +7203,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7112,7 +7212,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_accountId, arg_filterId)
+          .update(arg_request, arg_accountId, arg_filterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Filter response) {
         checkFilter(response);
       })));
@@ -7128,6 +7229,7 @@
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
       var arg_goalId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7191,6 +7293,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7199,7 +7302,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_accountId, arg_webPropertyId, arg_profileId, arg_goalId)
+          .get(arg_accountId, arg_webPropertyId, arg_profileId, arg_goalId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Goal response) {
         checkGoal(response);
       })));
@@ -7213,6 +7317,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Goal.fromJson(json);
         checkGoal(obj);
@@ -7276,6 +7381,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7284,7 +7390,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_accountId, arg_webPropertyId, arg_profileId)
+          .insert(arg_request, arg_accountId, arg_webPropertyId, arg_profileId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Goal response) {
         checkGoal(response);
       })));
@@ -7299,6 +7406,7 @@
       var arg_profileId = "foo";
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7363,6 +7471,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7372,7 +7481,9 @@
       }), true);
       res
           .list(arg_accountId, arg_webPropertyId, arg_profileId,
-              max_results: arg_max_results, start_index: arg_start_index)
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Goals response) {
         checkGoals(response);
       })));
@@ -7387,6 +7498,7 @@
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
       var arg_goalId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Goal.fromJson(json);
         checkGoal(obj);
@@ -7453,6 +7565,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7462,7 +7575,8 @@
       }), true);
       res
           .patch(arg_request, arg_accountId, arg_webPropertyId, arg_profileId,
-              arg_goalId)
+              arg_goalId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Goal response) {
         checkGoal(response);
       })));
@@ -7477,6 +7591,7 @@
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
       var arg_goalId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Goal.fromJson(json);
         checkGoal(obj);
@@ -7543,6 +7658,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7552,7 +7668,8 @@
       }), true);
       res
           .update(arg_request, arg_accountId, arg_webPropertyId, arg_profileId,
-              arg_goalId)
+              arg_goalId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Goal response) {
         checkGoal(response);
       })));
@@ -7568,6 +7685,7 @@
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
       var arg_linkId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7631,6 +7749,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7639,7 +7758,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_accountId, arg_webPropertyId, arg_profileId, arg_linkId)
+          .delete(arg_accountId, arg_webPropertyId, arg_profileId, arg_linkId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -7651,6 +7771,7 @@
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
       var arg_linkId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7714,6 +7835,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7722,7 +7844,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_accountId, arg_webPropertyId, arg_profileId, arg_linkId)
+          .get(arg_accountId, arg_webPropertyId, arg_profileId, arg_linkId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ProfileFilterLink response) {
         checkProfileFilterLink(response);
       })));
@@ -7736,6 +7859,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ProfileFilterLink.fromJson(json);
         checkProfileFilterLink(obj);
@@ -7799,6 +7923,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7807,7 +7932,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_accountId, arg_webPropertyId, arg_profileId)
+          .insert(arg_request, arg_accountId, arg_webPropertyId, arg_profileId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ProfileFilterLink response) {
         checkProfileFilterLink(response);
       })));
@@ -7822,6 +7948,7 @@
       var arg_profileId = "foo";
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7886,6 +8013,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7895,7 +8023,9 @@
       }), true);
       res
           .list(arg_accountId, arg_webPropertyId, arg_profileId,
-              max_results: arg_max_results, start_index: arg_start_index)
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ProfileFilterLinks response) {
         checkProfileFilterLinks(response);
       })));
@@ -7910,6 +8040,7 @@
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
       var arg_linkId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ProfileFilterLink.fromJson(json);
         checkProfileFilterLink(obj);
@@ -7976,6 +8107,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7985,7 +8117,8 @@
       }), true);
       res
           .patch(arg_request, arg_accountId, arg_webPropertyId, arg_profileId,
-              arg_linkId)
+              arg_linkId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ProfileFilterLink response) {
         checkProfileFilterLink(response);
       })));
@@ -8000,6 +8133,7 @@
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
       var arg_linkId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ProfileFilterLink.fromJson(json);
         checkProfileFilterLink(obj);
@@ -8066,6 +8200,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8075,7 +8210,8 @@
       }), true);
       res
           .update(arg_request, arg_accountId, arg_webPropertyId, arg_profileId,
-              arg_linkId)
+              arg_linkId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ProfileFilterLink response) {
         checkProfileFilterLink(response);
       })));
@@ -8091,6 +8227,7 @@
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
       var arg_linkId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8154,6 +8291,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8162,7 +8300,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_accountId, arg_webPropertyId, arg_profileId, arg_linkId)
+          .delete(arg_accountId, arg_webPropertyId, arg_profileId, arg_linkId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -8174,6 +8313,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EntityUserLink.fromJson(json);
         checkEntityUserLink(obj);
@@ -8237,6 +8377,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8245,7 +8386,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_accountId, arg_webPropertyId, arg_profileId)
+          .insert(arg_request, arg_accountId, arg_webPropertyId, arg_profileId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntityUserLink response) {
         checkEntityUserLink(response);
       })));
@@ -8260,6 +8402,7 @@
       var arg_profileId = "foo";
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8324,6 +8467,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8333,7 +8477,9 @@
       }), true);
       res
           .list(arg_accountId, arg_webPropertyId, arg_profileId,
-              max_results: arg_max_results, start_index: arg_start_index)
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntityUserLinks response) {
         checkEntityUserLinks(response);
       })));
@@ -8348,6 +8494,7 @@
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
       var arg_linkId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EntityUserLink.fromJson(json);
         checkEntityUserLink(obj);
@@ -8414,6 +8561,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8423,7 +8571,8 @@
       }), true);
       res
           .update(arg_request, arg_accountId, arg_webPropertyId, arg_profileId,
-              arg_linkId)
+              arg_linkId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntityUserLink response) {
         checkEntityUserLink(response);
       })));
@@ -8438,6 +8587,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8492,6 +8642,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8500,7 +8651,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_accountId, arg_webPropertyId, arg_profileId)
+          .delete(arg_accountId, arg_webPropertyId, arg_profileId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -8511,6 +8663,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8565,6 +8718,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8573,7 +8727,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_accountId, arg_webPropertyId, arg_profileId)
+          .get(arg_accountId, arg_webPropertyId, arg_profileId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Profile response) {
         checkProfile(response);
       })));
@@ -8586,6 +8741,7 @@
       var arg_request = buildProfile();
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Profile.fromJson(json);
         checkProfile(obj);
@@ -8640,6 +8796,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8648,7 +8805,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_accountId, arg_webPropertyId)
+          .insert(arg_request, arg_accountId, arg_webPropertyId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Profile response) {
         checkProfile(response);
       })));
@@ -8662,6 +8820,7 @@
       var arg_webPropertyId = "foo";
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8717,6 +8876,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8726,7 +8886,9 @@
       }), true);
       res
           .list(arg_accountId, arg_webPropertyId,
-              max_results: arg_max_results, start_index: arg_start_index)
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Profiles response) {
         checkProfiles(response);
       })));
@@ -8740,6 +8902,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Profile.fromJson(json);
         checkProfile(obj);
@@ -8797,6 +8960,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8805,7 +8969,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_accountId, arg_webPropertyId, arg_profileId)
+          .patch(arg_request, arg_accountId, arg_webPropertyId, arg_profileId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Profile response) {
         checkProfile(response);
       })));
@@ -8819,6 +8984,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Profile.fromJson(json);
         checkProfile(obj);
@@ -8876,6 +9042,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8884,7 +9051,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_accountId, arg_webPropertyId, arg_profileId)
+          .update(arg_request, arg_accountId, arg_webPropertyId, arg_profileId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Profile response) {
         checkProfile(response);
       })));
@@ -8899,6 +9067,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_remarketingAudienceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8953,6 +9122,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8961,7 +9131,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_accountId, arg_webPropertyId, arg_remarketingAudienceId)
+          .delete(arg_accountId, arg_webPropertyId, arg_remarketingAudienceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -8972,6 +9143,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_remarketingAudienceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9026,6 +9198,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9034,7 +9207,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_accountId, arg_webPropertyId, arg_remarketingAudienceId)
+          .get(arg_accountId, arg_webPropertyId, arg_remarketingAudienceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RemarketingAudience response) {
         checkRemarketingAudience(response);
       })));
@@ -9047,6 +9221,7 @@
       var arg_request = buildRemarketingAudience();
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RemarketingAudience.fromJson(json);
         checkRemarketingAudience(obj);
@@ -9101,6 +9276,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9109,7 +9285,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_accountId, arg_webPropertyId)
+          .insert(arg_request, arg_accountId, arg_webPropertyId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RemarketingAudience response) {
         checkRemarketingAudience(response);
       })));
@@ -9124,6 +9301,7 @@
       var arg_max_results = 42;
       var arg_start_index = 42;
       var arg_type = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9180,6 +9358,7 @@
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
         unittest.expect(queryMap["type"].first, unittest.equals(arg_type));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9191,7 +9370,8 @@
           .list(arg_accountId, arg_webPropertyId,
               max_results: arg_max_results,
               start_index: arg_start_index,
-              type: arg_type)
+              type: arg_type,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RemarketingAudiences response) {
         checkRemarketingAudiences(response);
       })));
@@ -9205,6 +9385,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_remarketingAudienceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RemarketingAudience.fromJson(json);
         checkRemarketingAudience(obj);
@@ -9262,6 +9443,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9271,7 +9453,8 @@
       }), true);
       res
           .patch(arg_request, arg_accountId, arg_webPropertyId,
-              arg_remarketingAudienceId)
+              arg_remarketingAudienceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RemarketingAudience response) {
         checkRemarketingAudience(response);
       })));
@@ -9285,6 +9468,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_remarketingAudienceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RemarketingAudience.fromJson(json);
         checkRemarketingAudience(obj);
@@ -9342,6 +9526,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9351,7 +9536,8 @@
       }), true);
       res
           .update(arg_request, arg_accountId, arg_webPropertyId,
-              arg_remarketingAudienceId)
+              arg_remarketingAudienceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RemarketingAudience response) {
         checkRemarketingAudience(response);
       })));
@@ -9365,6 +9551,7 @@
           new api.AnalyticsApi(mock).management.segments;
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9402,6 +9589,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9410,7 +9598,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(max_results: arg_max_results, start_index: arg_start_index)
+          .list(
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Segments response) {
         checkSegments(response);
       })));
@@ -9426,6 +9617,7 @@
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
       var arg_unsampledReportId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9489,6 +9681,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9498,7 +9691,8 @@
       }), true);
       res
           .delete(arg_accountId, arg_webPropertyId, arg_profileId,
-              arg_unsampledReportId)
+              arg_unsampledReportId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -9510,6 +9704,7 @@
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
       var arg_unsampledReportId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9573,6 +9768,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9582,7 +9778,8 @@
       }), true);
       res
           .get(arg_accountId, arg_webPropertyId, arg_profileId,
-              arg_unsampledReportId)
+              arg_unsampledReportId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UnsampledReport response) {
         checkUnsampledReport(response);
       })));
@@ -9596,6 +9793,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_profileId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UnsampledReport.fromJson(json);
         checkUnsampledReport(obj);
@@ -9659,6 +9857,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9667,7 +9866,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_accountId, arg_webPropertyId, arg_profileId)
+          .insert(arg_request, arg_accountId, arg_webPropertyId, arg_profileId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UnsampledReport response) {
         checkUnsampledReport(response);
       })));
@@ -9682,6 +9882,7 @@
       var arg_profileId = "foo";
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9746,6 +9947,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9755,7 +9957,9 @@
       }), true);
       res
           .list(arg_accountId, arg_webPropertyId, arg_profileId,
-              max_results: arg_max_results, start_index: arg_start_index)
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UnsampledReports response) {
         checkUnsampledReports(response);
       })));
@@ -9771,6 +9975,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_customDataSourceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.AnalyticsDataimportDeleteUploadDataRequest.fromJson(json);
@@ -9835,6 +10040,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9844,7 +10050,8 @@
       }), true);
       res
           .deleteUploadData(arg_request, arg_accountId, arg_webPropertyId,
-              arg_customDataSourceId)
+              arg_customDataSourceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -9856,6 +10063,7 @@
       var arg_webPropertyId = "foo";
       var arg_customDataSourceId = "foo";
       var arg_uploadId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9919,6 +10127,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9928,7 +10137,8 @@
       }), true);
       res
           .get(arg_accountId, arg_webPropertyId, arg_customDataSourceId,
-              arg_uploadId)
+              arg_uploadId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Upload response) {
         checkUpload(response);
       })));
@@ -9943,6 +10153,7 @@
       var arg_customDataSourceId = "foo";
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10007,6 +10218,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10016,7 +10228,9 @@
       }), true);
       res
           .list(arg_accountId, arg_webPropertyId, arg_customDataSourceId,
-              max_results: arg_max_results, start_index: arg_start_index)
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Uploads response) {
         checkUploads(response);
       })));
@@ -10032,6 +10246,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_customDataSourceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10092,6 +10307,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10100,7 +10316,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .uploadData(arg_accountId, arg_webPropertyId, arg_customDataSourceId)
+          .uploadData(arg_accountId, arg_webPropertyId, arg_customDataSourceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Upload response) {
         checkUpload(response);
       })));
@@ -10115,6 +10332,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_webPropertyAdWordsLinkId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10170,6 +10388,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10179,7 +10398,8 @@
       }), true);
       res
           .delete(
-              arg_accountId, arg_webPropertyId, arg_webPropertyAdWordsLinkId)
+              arg_accountId, arg_webPropertyId, arg_webPropertyAdWordsLinkId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -10190,6 +10410,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_webPropertyAdWordsLinkId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10245,6 +10466,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10253,7 +10475,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_accountId, arg_webPropertyId, arg_webPropertyAdWordsLinkId)
+          .get(arg_accountId, arg_webPropertyId, arg_webPropertyAdWordsLinkId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntityAdWordsLink response) {
         checkEntityAdWordsLink(response);
       })));
@@ -10266,6 +10489,7 @@
       var arg_request = buildEntityAdWordsLink();
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EntityAdWordsLink.fromJson(json);
         checkEntityAdWordsLink(obj);
@@ -10320,6 +10544,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10328,7 +10553,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_accountId, arg_webPropertyId)
+          .insert(arg_request, arg_accountId, arg_webPropertyId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntityAdWordsLink response) {
         checkEntityAdWordsLink(response);
       })));
@@ -10342,6 +10568,7 @@
       var arg_webPropertyId = "foo";
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10397,6 +10624,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10406,7 +10634,9 @@
       }), true);
       res
           .list(arg_accountId, arg_webPropertyId,
-              max_results: arg_max_results, start_index: arg_start_index)
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntityAdWordsLinks response) {
         checkEntityAdWordsLinks(response);
       })));
@@ -10420,6 +10650,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_webPropertyAdWordsLinkId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EntityAdWordsLink.fromJson(json);
         checkEntityAdWordsLink(obj);
@@ -10478,6 +10709,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10487,7 +10719,8 @@
       }), true);
       res
           .patch(arg_request, arg_accountId, arg_webPropertyId,
-              arg_webPropertyAdWordsLinkId)
+              arg_webPropertyAdWordsLinkId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntityAdWordsLink response) {
         checkEntityAdWordsLink(response);
       })));
@@ -10501,6 +10734,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_webPropertyAdWordsLinkId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EntityAdWordsLink.fromJson(json);
         checkEntityAdWordsLink(obj);
@@ -10559,6 +10793,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10568,7 +10803,8 @@
       }), true);
       res
           .update(arg_request, arg_accountId, arg_webPropertyId,
-              arg_webPropertyAdWordsLinkId)
+              arg_webPropertyAdWordsLinkId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntityAdWordsLink response) {
         checkEntityAdWordsLink(response);
       })));
@@ -10582,6 +10818,7 @@
           new api.AnalyticsApi(mock).management.webproperties;
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10627,6 +10864,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10635,7 +10873,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_accountId, arg_webPropertyId)
+          .get(arg_accountId, arg_webPropertyId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Webproperty response) {
         checkWebproperty(response);
       })));
@@ -10647,6 +10885,7 @@
           new api.AnalyticsApi(mock).management.webproperties;
       var arg_request = buildWebproperty();
       var arg_accountId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Webproperty.fromJson(json);
         checkWebproperty(obj);
@@ -10692,6 +10931,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10700,7 +10940,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_accountId)
+          .insert(arg_request, arg_accountId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Webproperty response) {
         checkWebproperty(response);
       })));
@@ -10713,6 +10953,7 @@
       var arg_accountId = "foo";
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10759,6 +11000,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10768,7 +11010,9 @@
       }), true);
       res
           .list(arg_accountId,
-              max_results: arg_max_results, start_index: arg_start_index)
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Webproperties response) {
         checkWebproperties(response);
       })));
@@ -10781,6 +11025,7 @@
       var arg_request = buildWebproperty();
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Webproperty.fromJson(json);
         checkWebproperty(obj);
@@ -10829,6 +11074,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10837,7 +11083,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_accountId, arg_webPropertyId)
+          .patch(arg_request, arg_accountId, arg_webPropertyId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Webproperty response) {
         checkWebproperty(response);
       })));
@@ -10850,6 +11097,7 @@
       var arg_request = buildWebproperty();
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Webproperty.fromJson(json);
         checkWebproperty(obj);
@@ -10898,6 +11146,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10906,7 +11155,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_accountId, arg_webPropertyId)
+          .update(arg_request, arg_accountId, arg_webPropertyId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Webproperty response) {
         checkWebproperty(response);
       })));
@@ -10921,6 +11171,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_linkId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10975,6 +11226,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10983,7 +11235,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_accountId, arg_webPropertyId, arg_linkId)
+          .delete(arg_accountId, arg_webPropertyId, arg_linkId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -10994,6 +11247,7 @@
       var arg_request = buildEntityUserLink();
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EntityUserLink.fromJson(json);
         checkEntityUserLink(obj);
@@ -11048,6 +11302,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11056,7 +11311,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_accountId, arg_webPropertyId)
+          .insert(arg_request, arg_accountId, arg_webPropertyId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntityUserLink response) {
         checkEntityUserLink(response);
       })));
@@ -11070,6 +11326,7 @@
       var arg_webPropertyId = "foo";
       var arg_max_results = 42;
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -11125,6 +11382,7 @@
             unittest.equals(arg_max_results));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11134,7 +11392,9 @@
       }), true);
       res
           .list(arg_accountId, arg_webPropertyId,
-              max_results: arg_max_results, start_index: arg_start_index)
+              max_results: arg_max_results,
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntityUserLinks response) {
         checkEntityUserLinks(response);
       })));
@@ -11148,6 +11408,7 @@
       var arg_accountId = "foo";
       var arg_webPropertyId = "foo";
       var arg_linkId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EntityUserLink.fromJson(json);
         checkEntityUserLink(obj);
@@ -11205,6 +11466,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11213,7 +11475,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_accountId, arg_webPropertyId, arg_linkId)
+          .update(arg_request, arg_accountId, arg_webPropertyId, arg_linkId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntityUserLink response) {
         checkEntityUserLink(response);
       })));
@@ -11226,6 +11489,7 @@
       api.MetadataColumnsResourceApi res =
           new api.AnalyticsApi(mock).metadata.columns;
       var arg_reportType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -11268,6 +11532,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11276,7 +11541,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_reportType)
+          .list(arg_reportType, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Columns response) {
         checkColumns(response);
       })));
@@ -11288,6 +11553,7 @@
       var mock = new HttpServerMock();
       api.ProvisioningResourceApi res = new api.AnalyticsApi(mock).provisioning;
       var arg_request = buildAccountTicket();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AccountTicket.fromJson(json);
         checkAccountTicket(obj);
@@ -11324,6 +11590,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11332,7 +11599,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .createAccountTicket(arg_request)
+          .createAccountTicket(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AccountTicket response) {
         checkAccountTicket(response);
       })));
diff --git a/generated/googleapis/test/analyticsreporting/v4_test.dart b/generated/googleapis/test/analyticsreporting/v4_test.dart
index 8eeeaeb..3fda7e8 100644
--- a/generated/googleapis/test/analyticsreporting/v4_test.dart
+++ b/generated/googleapis/test/analyticsreporting/v4_test.dart
@@ -73,14 +73,14 @@
   buildCounterCohort--;
 }
 
-buildUnnamed209() {
+buildUnnamed193() {
   var o = new core.List<api.Cohort>();
   o.add(buildCohort());
   o.add(buildCohort());
   return o;
 }
 
-checkUnnamed209(core.List<api.Cohort> o) {
+checkUnnamed193(core.List<api.Cohort> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCohort(o[0]);
   checkCohort(o[1]);
@@ -91,7 +91,7 @@
   var o = new api.CohortGroup();
   buildCounterCohortGroup++;
   if (buildCounterCohortGroup < 3) {
-    o.cohorts = buildUnnamed209();
+    o.cohorts = buildUnnamed193();
     o.lifetimeValue = true;
   }
   buildCounterCohortGroup--;
@@ -101,20 +101,20 @@
 checkCohortGroup(api.CohortGroup o) {
   buildCounterCohortGroup++;
   if (buildCounterCohortGroup < 3) {
-    checkUnnamed209(o.cohorts);
+    checkUnnamed193(o.cohorts);
     unittest.expect(o.lifetimeValue, unittest.isTrue);
   }
   buildCounterCohortGroup--;
 }
 
-buildUnnamed210() {
+buildUnnamed194() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed210(core.List<core.String> o) {
+checkUnnamed194(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -125,7 +125,7 @@
   var o = new api.ColumnHeader();
   buildCounterColumnHeader++;
   if (buildCounterColumnHeader < 3) {
-    o.dimensions = buildUnnamed210();
+    o.dimensions = buildUnnamed194();
     o.metricHeader = buildMetricHeader();
   }
   buildCounterColumnHeader--;
@@ -135,7 +135,7 @@
 checkColumnHeader(api.ColumnHeader o) {
   buildCounterColumnHeader++;
   if (buildCounterColumnHeader < 3) {
-    checkUnnamed210(o.dimensions);
+    checkUnnamed194(o.dimensions);
     checkMetricHeader(o.metricHeader);
   }
   buildCounterColumnHeader--;
@@ -162,27 +162,27 @@
   buildCounterDateRange--;
 }
 
-buildUnnamed211() {
+buildUnnamed195() {
   var o = new core.List<api.PivotValueRegion>();
   o.add(buildPivotValueRegion());
   o.add(buildPivotValueRegion());
   return o;
 }
 
-checkUnnamed211(core.List<api.PivotValueRegion> o) {
+checkUnnamed195(core.List<api.PivotValueRegion> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPivotValueRegion(o[0]);
   checkPivotValueRegion(o[1]);
 }
 
-buildUnnamed212() {
+buildUnnamed196() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed212(core.List<core.String> o) {
+checkUnnamed196(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -193,8 +193,8 @@
   var o = new api.DateRangeValues();
   buildCounterDateRangeValues++;
   if (buildCounterDateRangeValues < 3) {
-    o.pivotValueRegions = buildUnnamed211();
-    o.values = buildUnnamed212();
+    o.pivotValueRegions = buildUnnamed195();
+    o.values = buildUnnamed196();
   }
   buildCounterDateRangeValues--;
   return o;
@@ -203,20 +203,20 @@
 checkDateRangeValues(api.DateRangeValues o) {
   buildCounterDateRangeValues++;
   if (buildCounterDateRangeValues < 3) {
-    checkUnnamed211(o.pivotValueRegions);
-    checkUnnamed212(o.values);
+    checkUnnamed195(o.pivotValueRegions);
+    checkUnnamed196(o.values);
   }
   buildCounterDateRangeValues--;
 }
 
-buildUnnamed213() {
+buildUnnamed197() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed213(core.List<core.String> o) {
+checkUnnamed197(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -227,7 +227,7 @@
   var o = new api.Dimension();
   buildCounterDimension++;
   if (buildCounterDimension < 3) {
-    o.histogramBuckets = buildUnnamed213();
+    o.histogramBuckets = buildUnnamed197();
     o.name = "foo";
   }
   buildCounterDimension--;
@@ -237,20 +237,20 @@
 checkDimension(api.Dimension o) {
   buildCounterDimension++;
   if (buildCounterDimension < 3) {
-    checkUnnamed213(o.histogramBuckets);
+    checkUnnamed197(o.histogramBuckets);
     unittest.expect(o.name, unittest.equals('foo'));
   }
   buildCounterDimension--;
 }
 
-buildUnnamed214() {
+buildUnnamed198() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed214(core.List<core.String> o) {
+checkUnnamed198(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -263,7 +263,7 @@
   if (buildCounterDimensionFilter < 3) {
     o.caseSensitive = true;
     o.dimensionName = "foo";
-    o.expressions = buildUnnamed214();
+    o.expressions = buildUnnamed198();
     o.not = true;
     o.operator = "foo";
   }
@@ -276,21 +276,21 @@
   if (buildCounterDimensionFilter < 3) {
     unittest.expect(o.caseSensitive, unittest.isTrue);
     unittest.expect(o.dimensionName, unittest.equals('foo'));
-    checkUnnamed214(o.expressions);
+    checkUnnamed198(o.expressions);
     unittest.expect(o.not, unittest.isTrue);
     unittest.expect(o.operator, unittest.equals('foo'));
   }
   buildCounterDimensionFilter--;
 }
 
-buildUnnamed215() {
+buildUnnamed199() {
   var o = new core.List<api.DimensionFilter>();
   o.add(buildDimensionFilter());
   o.add(buildDimensionFilter());
   return o;
 }
 
-checkUnnamed215(core.List<api.DimensionFilter> o) {
+checkUnnamed199(core.List<api.DimensionFilter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDimensionFilter(o[0]);
   checkDimensionFilter(o[1]);
@@ -301,7 +301,7 @@
   var o = new api.DimensionFilterClause();
   buildCounterDimensionFilterClause++;
   if (buildCounterDimensionFilterClause < 3) {
-    o.filters = buildUnnamed215();
+    o.filters = buildUnnamed199();
     o.operator = "foo";
   }
   buildCounterDimensionFilterClause--;
@@ -311,7 +311,7 @@
 checkDimensionFilterClause(api.DimensionFilterClause o) {
   buildCounterDimensionFilterClause++;
   if (buildCounterDimensionFilterClause < 3) {
-    checkUnnamed215(o.filters);
+    checkUnnamed199(o.filters);
     unittest.expect(o.operator, unittest.equals('foo'));
   }
   buildCounterDimensionFilterClause--;
@@ -340,14 +340,14 @@
   buildCounterDynamicSegment--;
 }
 
-buildUnnamed216() {
+buildUnnamed200() {
   var o = new core.List<api.ReportRequest>();
   o.add(buildReportRequest());
   o.add(buildReportRequest());
   return o;
 }
 
-checkUnnamed216(core.List<api.ReportRequest> o) {
+checkUnnamed200(core.List<api.ReportRequest> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReportRequest(o[0]);
   checkReportRequest(o[1]);
@@ -358,7 +358,7 @@
   var o = new api.GetReportsRequest();
   buildCounterGetReportsRequest++;
   if (buildCounterGetReportsRequest < 3) {
-    o.reportRequests = buildUnnamed216();
+    o.reportRequests = buildUnnamed200();
   }
   buildCounterGetReportsRequest--;
   return o;
@@ -367,19 +367,19 @@
 checkGetReportsRequest(api.GetReportsRequest o) {
   buildCounterGetReportsRequest++;
   if (buildCounterGetReportsRequest < 3) {
-    checkUnnamed216(o.reportRequests);
+    checkUnnamed200(o.reportRequests);
   }
   buildCounterGetReportsRequest--;
 }
 
-buildUnnamed217() {
+buildUnnamed201() {
   var o = new core.List<api.Report>();
   o.add(buildReport());
   o.add(buildReport());
   return o;
 }
 
-checkUnnamed217(core.List<api.Report> o) {
+checkUnnamed201(core.List<api.Report> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReport(o[0]);
   checkReport(o[1]);
@@ -390,7 +390,7 @@
   var o = new api.GetReportsResponse();
   buildCounterGetReportsResponse++;
   if (buildCounterGetReportsResponse < 3) {
-    o.reports = buildUnnamed217();
+    o.reports = buildUnnamed201();
   }
   buildCounterGetReportsResponse--;
   return o;
@@ -399,7 +399,7 @@
 checkGetReportsResponse(api.GetReportsResponse o) {
   buildCounterGetReportsResponse++;
   if (buildCounterGetReportsResponse < 3) {
-    checkUnnamed217(o.reports);
+    checkUnnamed201(o.reports);
   }
   buildCounterGetReportsResponse--;
 }
@@ -452,14 +452,14 @@
   buildCounterMetricFilter--;
 }
 
-buildUnnamed218() {
+buildUnnamed202() {
   var o = new core.List<api.MetricFilter>();
   o.add(buildMetricFilter());
   o.add(buildMetricFilter());
   return o;
 }
 
-checkUnnamed218(core.List<api.MetricFilter> o) {
+checkUnnamed202(core.List<api.MetricFilter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricFilter(o[0]);
   checkMetricFilter(o[1]);
@@ -470,7 +470,7 @@
   var o = new api.MetricFilterClause();
   buildCounterMetricFilterClause++;
   if (buildCounterMetricFilterClause < 3) {
-    o.filters = buildUnnamed218();
+    o.filters = buildUnnamed202();
     o.operator = "foo";
   }
   buildCounterMetricFilterClause--;
@@ -480,33 +480,33 @@
 checkMetricFilterClause(api.MetricFilterClause o) {
   buildCounterMetricFilterClause++;
   if (buildCounterMetricFilterClause < 3) {
-    checkUnnamed218(o.filters);
+    checkUnnamed202(o.filters);
     unittest.expect(o.operator, unittest.equals('foo'));
   }
   buildCounterMetricFilterClause--;
 }
 
-buildUnnamed219() {
+buildUnnamed203() {
   var o = new core.List<api.MetricHeaderEntry>();
   o.add(buildMetricHeaderEntry());
   o.add(buildMetricHeaderEntry());
   return o;
 }
 
-checkUnnamed219(core.List<api.MetricHeaderEntry> o) {
+checkUnnamed203(core.List<api.MetricHeaderEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricHeaderEntry(o[0]);
   checkMetricHeaderEntry(o[1]);
 }
 
-buildUnnamed220() {
+buildUnnamed204() {
   var o = new core.List<api.PivotHeader>();
   o.add(buildPivotHeader());
   o.add(buildPivotHeader());
   return o;
 }
 
-checkUnnamed220(core.List<api.PivotHeader> o) {
+checkUnnamed204(core.List<api.PivotHeader> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPivotHeader(o[0]);
   checkPivotHeader(o[1]);
@@ -517,8 +517,8 @@
   var o = new api.MetricHeader();
   buildCounterMetricHeader++;
   if (buildCounterMetricHeader < 3) {
-    o.metricHeaderEntries = buildUnnamed219();
-    o.pivotHeaders = buildUnnamed220();
+    o.metricHeaderEntries = buildUnnamed203();
+    o.pivotHeaders = buildUnnamed204();
   }
   buildCounterMetricHeader--;
   return o;
@@ -527,8 +527,8 @@
 checkMetricHeader(api.MetricHeader o) {
   buildCounterMetricHeader++;
   if (buildCounterMetricHeader < 3) {
-    checkUnnamed219(o.metricHeaderEntries);
-    checkUnnamed220(o.pivotHeaders);
+    checkUnnamed203(o.metricHeaderEntries);
+    checkUnnamed204(o.pivotHeaders);
   }
   buildCounterMetricHeader--;
 }
@@ -554,14 +554,14 @@
   buildCounterMetricHeaderEntry--;
 }
 
-buildUnnamed221() {
+buildUnnamed205() {
   var o = new core.List<api.SegmentFilterClause>();
   o.add(buildSegmentFilterClause());
   o.add(buildSegmentFilterClause());
   return o;
 }
 
-checkUnnamed221(core.List<api.SegmentFilterClause> o) {
+checkUnnamed205(core.List<api.SegmentFilterClause> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSegmentFilterClause(o[0]);
   checkSegmentFilterClause(o[1]);
@@ -572,7 +572,7 @@
   var o = new api.OrFiltersForSegment();
   buildCounterOrFiltersForSegment++;
   if (buildCounterOrFiltersForSegment < 3) {
-    o.segmentFilterClauses = buildUnnamed221();
+    o.segmentFilterClauses = buildUnnamed205();
   }
   buildCounterOrFiltersForSegment--;
   return o;
@@ -581,7 +581,7 @@
 checkOrFiltersForSegment(api.OrFiltersForSegment o) {
   buildCounterOrFiltersForSegment++;
   if (buildCounterOrFiltersForSegment < 3) {
-    checkUnnamed221(o.segmentFilterClauses);
+    checkUnnamed205(o.segmentFilterClauses);
   }
   buildCounterOrFiltersForSegment--;
 }
@@ -609,40 +609,40 @@
   buildCounterOrderBy--;
 }
 
-buildUnnamed222() {
+buildUnnamed206() {
   var o = new core.List<api.DimensionFilterClause>();
   o.add(buildDimensionFilterClause());
   o.add(buildDimensionFilterClause());
   return o;
 }
 
-checkUnnamed222(core.List<api.DimensionFilterClause> o) {
+checkUnnamed206(core.List<api.DimensionFilterClause> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDimensionFilterClause(o[0]);
   checkDimensionFilterClause(o[1]);
 }
 
-buildUnnamed223() {
+buildUnnamed207() {
   var o = new core.List<api.Dimension>();
   o.add(buildDimension());
   o.add(buildDimension());
   return o;
 }
 
-checkUnnamed223(core.List<api.Dimension> o) {
+checkUnnamed207(core.List<api.Dimension> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDimension(o[0]);
   checkDimension(o[1]);
 }
 
-buildUnnamed224() {
+buildUnnamed208() {
   var o = new core.List<api.Metric>();
   o.add(buildMetric());
   o.add(buildMetric());
   return o;
 }
 
-checkUnnamed224(core.List<api.Metric> o) {
+checkUnnamed208(core.List<api.Metric> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetric(o[0]);
   checkMetric(o[1]);
@@ -653,10 +653,10 @@
   var o = new api.Pivot();
   buildCounterPivot++;
   if (buildCounterPivot < 3) {
-    o.dimensionFilterClauses = buildUnnamed222();
-    o.dimensions = buildUnnamed223();
+    o.dimensionFilterClauses = buildUnnamed206();
+    o.dimensions = buildUnnamed207();
     o.maxGroupCount = 42;
-    o.metrics = buildUnnamed224();
+    o.metrics = buildUnnamed208();
     o.startGroup = 42;
   }
   buildCounterPivot--;
@@ -666,23 +666,23 @@
 checkPivot(api.Pivot o) {
   buildCounterPivot++;
   if (buildCounterPivot < 3) {
-    checkUnnamed222(o.dimensionFilterClauses);
-    checkUnnamed223(o.dimensions);
+    checkUnnamed206(o.dimensionFilterClauses);
+    checkUnnamed207(o.dimensions);
     unittest.expect(o.maxGroupCount, unittest.equals(42));
-    checkUnnamed224(o.metrics);
+    checkUnnamed208(o.metrics);
     unittest.expect(o.startGroup, unittest.equals(42));
   }
   buildCounterPivot--;
 }
 
-buildUnnamed225() {
+buildUnnamed209() {
   var o = new core.List<api.PivotHeaderEntry>();
   o.add(buildPivotHeaderEntry());
   o.add(buildPivotHeaderEntry());
   return o;
 }
 
-checkUnnamed225(core.List<api.PivotHeaderEntry> o) {
+checkUnnamed209(core.List<api.PivotHeaderEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPivotHeaderEntry(o[0]);
   checkPivotHeaderEntry(o[1]);
@@ -693,7 +693,7 @@
   var o = new api.PivotHeader();
   buildCounterPivotHeader++;
   if (buildCounterPivotHeader < 3) {
-    o.pivotHeaderEntries = buildUnnamed225();
+    o.pivotHeaderEntries = buildUnnamed209();
     o.totalPivotGroupsCount = 42;
   }
   buildCounterPivotHeader--;
@@ -703,33 +703,33 @@
 checkPivotHeader(api.PivotHeader o) {
   buildCounterPivotHeader++;
   if (buildCounterPivotHeader < 3) {
-    checkUnnamed225(o.pivotHeaderEntries);
+    checkUnnamed209(o.pivotHeaderEntries);
     unittest.expect(o.totalPivotGroupsCount, unittest.equals(42));
   }
   buildCounterPivotHeader--;
 }
 
-buildUnnamed226() {
+buildUnnamed210() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed226(core.List<core.String> o) {
+checkUnnamed210(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed227() {
+buildUnnamed211() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed227(core.List<core.String> o) {
+checkUnnamed211(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -740,8 +740,8 @@
   var o = new api.PivotHeaderEntry();
   buildCounterPivotHeaderEntry++;
   if (buildCounterPivotHeaderEntry < 3) {
-    o.dimensionNames = buildUnnamed226();
-    o.dimensionValues = buildUnnamed227();
+    o.dimensionNames = buildUnnamed210();
+    o.dimensionValues = buildUnnamed211();
     o.metric = buildMetricHeaderEntry();
   }
   buildCounterPivotHeaderEntry--;
@@ -751,21 +751,21 @@
 checkPivotHeaderEntry(api.PivotHeaderEntry o) {
   buildCounterPivotHeaderEntry++;
   if (buildCounterPivotHeaderEntry < 3) {
-    checkUnnamed226(o.dimensionNames);
-    checkUnnamed227(o.dimensionValues);
+    checkUnnamed210(o.dimensionNames);
+    checkUnnamed211(o.dimensionValues);
     checkMetricHeaderEntry(o.metric);
   }
   buildCounterPivotHeaderEntry--;
 }
 
-buildUnnamed228() {
+buildUnnamed212() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed228(core.List<core.String> o) {
+checkUnnamed212(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -776,7 +776,7 @@
   var o = new api.PivotValueRegion();
   buildCounterPivotValueRegion++;
   if (buildCounterPivotValueRegion < 3) {
-    o.values = buildUnnamed228();
+    o.values = buildUnnamed212();
   }
   buildCounterPivotValueRegion--;
   return o;
@@ -785,7 +785,7 @@
 checkPivotValueRegion(api.PivotValueRegion o) {
   buildCounterPivotValueRegion++;
   if (buildCounterPivotValueRegion < 3) {
-    checkUnnamed228(o.values);
+    checkUnnamed212(o.values);
   }
   buildCounterPivotValueRegion--;
 }
@@ -813,79 +813,79 @@
   buildCounterReport--;
 }
 
-buildUnnamed229() {
+buildUnnamed213() {
   var o = new core.List<api.DateRangeValues>();
   o.add(buildDateRangeValues());
   o.add(buildDateRangeValues());
   return o;
 }
 
-checkUnnamed229(core.List<api.DateRangeValues> o) {
+checkUnnamed213(core.List<api.DateRangeValues> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDateRangeValues(o[0]);
   checkDateRangeValues(o[1]);
 }
 
-buildUnnamed230() {
+buildUnnamed214() {
   var o = new core.List<api.DateRangeValues>();
   o.add(buildDateRangeValues());
   o.add(buildDateRangeValues());
   return o;
 }
 
-checkUnnamed230(core.List<api.DateRangeValues> o) {
+checkUnnamed214(core.List<api.DateRangeValues> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDateRangeValues(o[0]);
   checkDateRangeValues(o[1]);
 }
 
-buildUnnamed231() {
+buildUnnamed215() {
   var o = new core.List<api.ReportRow>();
   o.add(buildReportRow());
   o.add(buildReportRow());
   return o;
 }
 
-checkUnnamed231(core.List<api.ReportRow> o) {
+checkUnnamed215(core.List<api.ReportRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReportRow(o[0]);
   checkReportRow(o[1]);
 }
 
-buildUnnamed232() {
+buildUnnamed216() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed232(core.List<core.String> o) {
+checkUnnamed216(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed233() {
+buildUnnamed217() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed233(core.List<core.String> o) {
+checkUnnamed217(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed234() {
+buildUnnamed218() {
   var o = new core.List<api.DateRangeValues>();
   o.add(buildDateRangeValues());
   o.add(buildDateRangeValues());
   return o;
 }
 
-checkUnnamed234(core.List<api.DateRangeValues> o) {
+checkUnnamed218(core.List<api.DateRangeValues> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDateRangeValues(o[0]);
   checkDateRangeValues(o[1]);
@@ -898,13 +898,13 @@
   if (buildCounterReportData < 3) {
     o.dataLastRefreshed = "foo";
     o.isDataGolden = true;
-    o.maximums = buildUnnamed229();
-    o.minimums = buildUnnamed230();
+    o.maximums = buildUnnamed213();
+    o.minimums = buildUnnamed214();
     o.rowCount = 42;
-    o.rows = buildUnnamed231();
-    o.samplesReadCounts = buildUnnamed232();
-    o.samplingSpaceSizes = buildUnnamed233();
-    o.totals = buildUnnamed234();
+    o.rows = buildUnnamed215();
+    o.samplesReadCounts = buildUnnamed216();
+    o.samplingSpaceSizes = buildUnnamed217();
+    o.totals = buildUnnamed218();
   }
   buildCounterReportData--;
   return o;
@@ -915,116 +915,116 @@
   if (buildCounterReportData < 3) {
     unittest.expect(o.dataLastRefreshed, unittest.equals('foo'));
     unittest.expect(o.isDataGolden, unittest.isTrue);
-    checkUnnamed229(o.maximums);
-    checkUnnamed230(o.minimums);
+    checkUnnamed213(o.maximums);
+    checkUnnamed214(o.minimums);
     unittest.expect(o.rowCount, unittest.equals(42));
-    checkUnnamed231(o.rows);
-    checkUnnamed232(o.samplesReadCounts);
-    checkUnnamed233(o.samplingSpaceSizes);
-    checkUnnamed234(o.totals);
+    checkUnnamed215(o.rows);
+    checkUnnamed216(o.samplesReadCounts);
+    checkUnnamed217(o.samplingSpaceSizes);
+    checkUnnamed218(o.totals);
   }
   buildCounterReportData--;
 }
 
-buildUnnamed235() {
+buildUnnamed219() {
   var o = new core.List<api.DateRange>();
   o.add(buildDateRange());
   o.add(buildDateRange());
   return o;
 }
 
-checkUnnamed235(core.List<api.DateRange> o) {
+checkUnnamed219(core.List<api.DateRange> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDateRange(o[0]);
   checkDateRange(o[1]);
 }
 
-buildUnnamed236() {
+buildUnnamed220() {
   var o = new core.List<api.DimensionFilterClause>();
   o.add(buildDimensionFilterClause());
   o.add(buildDimensionFilterClause());
   return o;
 }
 
-checkUnnamed236(core.List<api.DimensionFilterClause> o) {
+checkUnnamed220(core.List<api.DimensionFilterClause> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDimensionFilterClause(o[0]);
   checkDimensionFilterClause(o[1]);
 }
 
-buildUnnamed237() {
+buildUnnamed221() {
   var o = new core.List<api.Dimension>();
   o.add(buildDimension());
   o.add(buildDimension());
   return o;
 }
 
-checkUnnamed237(core.List<api.Dimension> o) {
+checkUnnamed221(core.List<api.Dimension> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDimension(o[0]);
   checkDimension(o[1]);
 }
 
-buildUnnamed238() {
+buildUnnamed222() {
   var o = new core.List<api.MetricFilterClause>();
   o.add(buildMetricFilterClause());
   o.add(buildMetricFilterClause());
   return o;
 }
 
-checkUnnamed238(core.List<api.MetricFilterClause> o) {
+checkUnnamed222(core.List<api.MetricFilterClause> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricFilterClause(o[0]);
   checkMetricFilterClause(o[1]);
 }
 
-buildUnnamed239() {
+buildUnnamed223() {
   var o = new core.List<api.Metric>();
   o.add(buildMetric());
   o.add(buildMetric());
   return o;
 }
 
-checkUnnamed239(core.List<api.Metric> o) {
+checkUnnamed223(core.List<api.Metric> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetric(o[0]);
   checkMetric(o[1]);
 }
 
-buildUnnamed240() {
+buildUnnamed224() {
   var o = new core.List<api.OrderBy>();
   o.add(buildOrderBy());
   o.add(buildOrderBy());
   return o;
 }
 
-checkUnnamed240(core.List<api.OrderBy> o) {
+checkUnnamed224(core.List<api.OrderBy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOrderBy(o[0]);
   checkOrderBy(o[1]);
 }
 
-buildUnnamed241() {
+buildUnnamed225() {
   var o = new core.List<api.Pivot>();
   o.add(buildPivot());
   o.add(buildPivot());
   return o;
 }
 
-checkUnnamed241(core.List<api.Pivot> o) {
+checkUnnamed225(core.List<api.Pivot> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPivot(o[0]);
   checkPivot(o[1]);
 }
 
-buildUnnamed242() {
+buildUnnamed226() {
   var o = new core.List<api.Segment>();
   o.add(buildSegment());
   o.add(buildSegment());
   return o;
 }
 
-checkUnnamed242(core.List<api.Segment> o) {
+checkUnnamed226(core.List<api.Segment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSegment(o[0]);
   checkSegment(o[1]);
@@ -1036,21 +1036,21 @@
   buildCounterReportRequest++;
   if (buildCounterReportRequest < 3) {
     o.cohortGroup = buildCohortGroup();
-    o.dateRanges = buildUnnamed235();
-    o.dimensionFilterClauses = buildUnnamed236();
-    o.dimensions = buildUnnamed237();
+    o.dateRanges = buildUnnamed219();
+    o.dimensionFilterClauses = buildUnnamed220();
+    o.dimensions = buildUnnamed221();
     o.filtersExpression = "foo";
     o.hideTotals = true;
     o.hideValueRanges = true;
     o.includeEmptyRows = true;
-    o.metricFilterClauses = buildUnnamed238();
-    o.metrics = buildUnnamed239();
-    o.orderBys = buildUnnamed240();
+    o.metricFilterClauses = buildUnnamed222();
+    o.metrics = buildUnnamed223();
+    o.orderBys = buildUnnamed224();
     o.pageSize = 42;
     o.pageToken = "foo";
-    o.pivots = buildUnnamed241();
+    o.pivots = buildUnnamed225();
     o.samplingLevel = "foo";
-    o.segments = buildUnnamed242();
+    o.segments = buildUnnamed226();
     o.viewId = "foo";
   }
   buildCounterReportRequest--;
@@ -1061,47 +1061,47 @@
   buildCounterReportRequest++;
   if (buildCounterReportRequest < 3) {
     checkCohortGroup(o.cohortGroup);
-    checkUnnamed235(o.dateRanges);
-    checkUnnamed236(o.dimensionFilterClauses);
-    checkUnnamed237(o.dimensions);
+    checkUnnamed219(o.dateRanges);
+    checkUnnamed220(o.dimensionFilterClauses);
+    checkUnnamed221(o.dimensions);
     unittest.expect(o.filtersExpression, unittest.equals('foo'));
     unittest.expect(o.hideTotals, unittest.isTrue);
     unittest.expect(o.hideValueRanges, unittest.isTrue);
     unittest.expect(o.includeEmptyRows, unittest.isTrue);
-    checkUnnamed238(o.metricFilterClauses);
-    checkUnnamed239(o.metrics);
-    checkUnnamed240(o.orderBys);
+    checkUnnamed222(o.metricFilterClauses);
+    checkUnnamed223(o.metrics);
+    checkUnnamed224(o.orderBys);
     unittest.expect(o.pageSize, unittest.equals(42));
     unittest.expect(o.pageToken, unittest.equals('foo'));
-    checkUnnamed241(o.pivots);
+    checkUnnamed225(o.pivots);
     unittest.expect(o.samplingLevel, unittest.equals('foo'));
-    checkUnnamed242(o.segments);
+    checkUnnamed226(o.segments);
     unittest.expect(o.viewId, unittest.equals('foo'));
   }
   buildCounterReportRequest--;
 }
 
-buildUnnamed243() {
+buildUnnamed227() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed243(core.List<core.String> o) {
+checkUnnamed227(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed244() {
+buildUnnamed228() {
   var o = new core.List<api.DateRangeValues>();
   o.add(buildDateRangeValues());
   o.add(buildDateRangeValues());
   return o;
 }
 
-checkUnnamed244(core.List<api.DateRangeValues> o) {
+checkUnnamed228(core.List<api.DateRangeValues> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDateRangeValues(o[0]);
   checkDateRangeValues(o[1]);
@@ -1112,8 +1112,8 @@
   var o = new api.ReportRow();
   buildCounterReportRow++;
   if (buildCounterReportRow < 3) {
-    o.dimensions = buildUnnamed243();
-    o.metrics = buildUnnamed244();
+    o.dimensions = buildUnnamed227();
+    o.metrics = buildUnnamed228();
   }
   buildCounterReportRow--;
   return o;
@@ -1122,8 +1122,8 @@
 checkReportRow(api.ReportRow o) {
   buildCounterReportRow++;
   if (buildCounterReportRow < 3) {
-    checkUnnamed243(o.dimensions);
-    checkUnnamed244(o.metrics);
+    checkUnnamed227(o.dimensions);
+    checkUnnamed228(o.metrics);
   }
   buildCounterReportRow--;
 }
@@ -1149,14 +1149,14 @@
   buildCounterSegment--;
 }
 
-buildUnnamed245() {
+buildUnnamed229() {
   var o = new core.List<api.SegmentFilter>();
   o.add(buildSegmentFilter());
   o.add(buildSegmentFilter());
   return o;
 }
 
-checkUnnamed245(core.List<api.SegmentFilter> o) {
+checkUnnamed229(core.List<api.SegmentFilter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSegmentFilter(o[0]);
   checkSegmentFilter(o[1]);
@@ -1167,7 +1167,7 @@
   var o = new api.SegmentDefinition();
   buildCounterSegmentDefinition++;
   if (buildCounterSegmentDefinition < 3) {
-    o.segmentFilters = buildUnnamed245();
+    o.segmentFilters = buildUnnamed229();
   }
   buildCounterSegmentDefinition--;
   return o;
@@ -1176,19 +1176,19 @@
 checkSegmentDefinition(api.SegmentDefinition o) {
   buildCounterSegmentDefinition++;
   if (buildCounterSegmentDefinition < 3) {
-    checkUnnamed245(o.segmentFilters);
+    checkUnnamed229(o.segmentFilters);
   }
   buildCounterSegmentDefinition--;
 }
 
-buildUnnamed246() {
+buildUnnamed230() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed246(core.List<core.String> o) {
+checkUnnamed230(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1201,7 +1201,7 @@
   if (buildCounterSegmentDimensionFilter < 3) {
     o.caseSensitive = true;
     o.dimensionName = "foo";
-    o.expressions = buildUnnamed246();
+    o.expressions = buildUnnamed230();
     o.maxComparisonValue = "foo";
     o.minComparisonValue = "foo";
     o.operator = "foo";
@@ -1215,7 +1215,7 @@
   if (buildCounterSegmentDimensionFilter < 3) {
     unittest.expect(o.caseSensitive, unittest.isTrue);
     unittest.expect(o.dimensionName, unittest.equals('foo'));
-    checkUnnamed246(o.expressions);
+    checkUnnamed230(o.expressions);
     unittest.expect(o.maxComparisonValue, unittest.equals('foo'));
     unittest.expect(o.minComparisonValue, unittest.equals('foo'));
     unittest.expect(o.operator, unittest.equals('foo'));
@@ -1296,14 +1296,14 @@
   buildCounterSegmentMetricFilter--;
 }
 
-buildUnnamed247() {
+buildUnnamed231() {
   var o = new core.List<api.OrFiltersForSegment>();
   o.add(buildOrFiltersForSegment());
   o.add(buildOrFiltersForSegment());
   return o;
 }
 
-checkUnnamed247(core.List<api.OrFiltersForSegment> o) {
+checkUnnamed231(core.List<api.OrFiltersForSegment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOrFiltersForSegment(o[0]);
   checkOrFiltersForSegment(o[1]);
@@ -1315,7 +1315,7 @@
   buildCounterSegmentSequenceStep++;
   if (buildCounterSegmentSequenceStep < 3) {
     o.matchType = "foo";
-    o.orFiltersForSegment = buildUnnamed247();
+    o.orFiltersForSegment = buildUnnamed231();
   }
   buildCounterSegmentSequenceStep--;
   return o;
@@ -1325,19 +1325,19 @@
   buildCounterSegmentSequenceStep++;
   if (buildCounterSegmentSequenceStep < 3) {
     unittest.expect(o.matchType, unittest.equals('foo'));
-    checkUnnamed247(o.orFiltersForSegment);
+    checkUnnamed231(o.orFiltersForSegment);
   }
   buildCounterSegmentSequenceStep--;
 }
 
-buildUnnamed248() {
+buildUnnamed232() {
   var o = new core.List<api.SegmentSequenceStep>();
   o.add(buildSegmentSequenceStep());
   o.add(buildSegmentSequenceStep());
   return o;
 }
 
-checkUnnamed248(core.List<api.SegmentSequenceStep> o) {
+checkUnnamed232(core.List<api.SegmentSequenceStep> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSegmentSequenceStep(o[0]);
   checkSegmentSequenceStep(o[1]);
@@ -1349,7 +1349,7 @@
   buildCounterSequenceSegment++;
   if (buildCounterSequenceSegment < 3) {
     o.firstStepShouldMatchFirstHit = true;
-    o.segmentSequenceSteps = buildUnnamed248();
+    o.segmentSequenceSteps = buildUnnamed232();
   }
   buildCounterSequenceSegment--;
   return o;
@@ -1359,19 +1359,19 @@
   buildCounterSequenceSegment++;
   if (buildCounterSequenceSegment < 3) {
     unittest.expect(o.firstStepShouldMatchFirstHit, unittest.isTrue);
-    checkUnnamed248(o.segmentSequenceSteps);
+    checkUnnamed232(o.segmentSequenceSteps);
   }
   buildCounterSequenceSegment--;
 }
 
-buildUnnamed249() {
+buildUnnamed233() {
   var o = new core.List<api.OrFiltersForSegment>();
   o.add(buildOrFiltersForSegment());
   o.add(buildOrFiltersForSegment());
   return o;
 }
 
-checkUnnamed249(core.List<api.OrFiltersForSegment> o) {
+checkUnnamed233(core.List<api.OrFiltersForSegment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOrFiltersForSegment(o[0]);
   checkOrFiltersForSegment(o[1]);
@@ -1382,7 +1382,7 @@
   var o = new api.SimpleSegment();
   buildCounterSimpleSegment++;
   if (buildCounterSimpleSegment < 3) {
-    o.orFiltersForSegment = buildUnnamed249();
+    o.orFiltersForSegment = buildUnnamed233();
   }
   buildCounterSimpleSegment--;
   return o;
@@ -1391,7 +1391,7 @@
 checkSimpleSegment(api.SimpleSegment o) {
   buildCounterSimpleSegment++;
   if (buildCounterSimpleSegment < 3) {
-    checkUnnamed249(o.orFiltersForSegment);
+    checkUnnamed233(o.orFiltersForSegment);
   }
   buildCounterSimpleSegment--;
 }
@@ -1682,6 +1682,7 @@
       var mock = new HttpServerMock();
       api.ReportsResourceApi res = new api.AnalyticsreportingApi(mock).reports;
       var arg_request = buildGetReportsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetReportsRequest.fromJson(json);
         checkGetReportsRequest(obj);
@@ -1715,6 +1716,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1723,7 +1725,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .batchGet(arg_request)
+          .batchGet(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GetReportsResponse response) {
         checkGetReportsResponse(response);
       })));
diff --git a/generated/googleapis/test/androiddeviceprovisioning/v1_test.dart b/generated/googleapis/test/androiddeviceprovisioning/v1_test.dart
index 26a7b06..8a06a11 100644
--- a/generated/googleapis/test/androiddeviceprovisioning/v1_test.dart
+++ b/generated/googleapis/test/androiddeviceprovisioning/v1_test.dart
@@ -94,14 +94,14 @@
   buildCounterClaimDeviceResponse--;
 }
 
-buildUnnamed47() {
+buildUnnamed28() {
   var o = new core.List<api.PartnerClaim>();
   o.add(buildPartnerClaim());
   o.add(buildPartnerClaim());
   return o;
 }
 
-checkUnnamed47(core.List<api.PartnerClaim> o) {
+checkUnnamed28(core.List<api.PartnerClaim> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPartnerClaim(o[0]);
   checkPartnerClaim(o[1]);
@@ -112,7 +112,7 @@
   var o = new api.ClaimDevicesRequest();
   buildCounterClaimDevicesRequest++;
   if (buildCounterClaimDevicesRequest < 3) {
-    o.claims = buildUnnamed47();
+    o.claims = buildUnnamed28();
   }
   buildCounterClaimDevicesRequest--;
   return o;
@@ -121,32 +121,32 @@
 checkClaimDevicesRequest(api.ClaimDevicesRequest o) {
   buildCounterClaimDevicesRequest++;
   if (buildCounterClaimDevicesRequest < 3) {
-    checkUnnamed47(o.claims);
+    checkUnnamed28(o.claims);
   }
   buildCounterClaimDevicesRequest--;
 }
 
-buildUnnamed48() {
+buildUnnamed29() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed48(core.List<core.String> o) {
+checkUnnamed29(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed49() {
+buildUnnamed30() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed49(core.List<core.String> o) {
+checkUnnamed30(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -157,11 +157,11 @@
   var o = new api.Company();
   buildCounterCompany++;
   if (buildCounterCompany < 3) {
-    o.adminEmails = buildUnnamed48();
+    o.adminEmails = buildUnnamed29();
     o.companyId = "foo";
     o.companyName = "foo";
     o.name = "foo";
-    o.ownerEmails = buildUnnamed49();
+    o.ownerEmails = buildUnnamed30();
   }
   buildCounterCompany--;
   return o;
@@ -170,11 +170,11 @@
 checkCompany(api.Company o) {
   buildCounterCompany++;
   if (buildCounterCompany < 3) {
-    checkUnnamed48(o.adminEmails);
+    checkUnnamed29(o.adminEmails);
     unittest.expect(o.companyId, unittest.equals('foo'));
     unittest.expect(o.companyName, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed49(o.ownerEmails);
+    checkUnnamed30(o.ownerEmails);
   }
   buildCounterCompany--;
 }
@@ -198,14 +198,14 @@
   buildCounterCreateCustomerRequest--;
 }
 
-buildUnnamed50() {
+buildUnnamed31() {
   var o = new core.List<api.DeviceClaim>();
   o.add(buildDeviceClaim());
   o.add(buildDeviceClaim());
   return o;
 }
 
-checkUnnamed50(core.List<api.DeviceClaim> o) {
+checkUnnamed31(core.List<api.DeviceClaim> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDeviceClaim(o[0]);
   checkDeviceClaim(o[1]);
@@ -216,7 +216,7 @@
   var o = new api.Device();
   buildCounterDevice++;
   if (buildCounterDevice < 3) {
-    o.claims = buildUnnamed50();
+    o.claims = buildUnnamed31();
     o.configuration = "foo";
     o.deviceId = "foo";
     o.deviceIdentifier = buildDeviceIdentifier();
@@ -230,7 +230,7 @@
 checkDevice(api.Device o) {
   buildCounterDevice++;
   if (buildCounterDevice < 3) {
-    checkUnnamed50(o.claims);
+    checkUnnamed31(o.claims);
     unittest.expect(o.configuration, unittest.equals('foo'));
     unittest.expect(o.deviceId, unittest.equals('foo'));
     checkDeviceIdentifier(o.deviceIdentifier);
@@ -286,14 +286,14 @@
   buildCounterDeviceIdentifier--;
 }
 
-buildUnnamed51() {
+buildUnnamed32() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed51(core.Map<core.String, core.String> o) {
+checkUnnamed32(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -304,7 +304,7 @@
   var o = new api.DeviceMetadata();
   buildCounterDeviceMetadata++;
   if (buildCounterDeviceMetadata < 3) {
-    o.entries = buildUnnamed51();
+    o.entries = buildUnnamed32();
   }
   buildCounterDeviceMetadata--;
   return o;
@@ -313,7 +313,7 @@
 checkDeviceMetadata(api.DeviceMetadata o) {
   buildCounterDeviceMetadata++;
   if (buildCounterDeviceMetadata < 3) {
-    checkUnnamed51(o.entries);
+    checkUnnamed32(o.entries);
   }
   buildCounterDeviceMetadata--;
 }
@@ -342,14 +342,14 @@
   buildCounterDevicesLongRunningOperationMetadata--;
 }
 
-buildUnnamed52() {
+buildUnnamed33() {
   var o = new core.List<api.OperationPerDevice>();
   o.add(buildOperationPerDevice());
   o.add(buildOperationPerDevice());
   return o;
 }
 
-checkUnnamed52(core.List<api.OperationPerDevice> o) {
+checkUnnamed33(core.List<api.OperationPerDevice> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationPerDevice(o[0]);
   checkOperationPerDevice(o[1]);
@@ -360,7 +360,7 @@
   var o = new api.DevicesLongRunningOperationResponse();
   buildCounterDevicesLongRunningOperationResponse++;
   if (buildCounterDevicesLongRunningOperationResponse < 3) {
-    o.perDeviceStatus = buildUnnamed52();
+    o.perDeviceStatus = buildUnnamed33();
     o.successCount = 42;
   }
   buildCounterDevicesLongRunningOperationResponse--;
@@ -371,7 +371,7 @@
     api.DevicesLongRunningOperationResponse o) {
   buildCounterDevicesLongRunningOperationResponse++;
   if (buildCounterDevicesLongRunningOperationResponse < 3) {
-    checkUnnamed52(o.perDeviceStatus);
+    checkUnnamed33(o.perDeviceStatus);
     unittest.expect(o.successCount, unittest.equals(42));
   }
   buildCounterDevicesLongRunningOperationResponse--;
@@ -416,14 +416,14 @@
   buildCounterFindDevicesByDeviceIdentifierRequest--;
 }
 
-buildUnnamed53() {
+buildUnnamed34() {
   var o = new core.List<api.Device>();
   o.add(buildDevice());
   o.add(buildDevice());
   return o;
 }
 
-checkUnnamed53(core.List<api.Device> o) {
+checkUnnamed34(core.List<api.Device> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDevice(o[0]);
   checkDevice(o[1]);
@@ -434,7 +434,7 @@
   var o = new api.FindDevicesByDeviceIdentifierResponse();
   buildCounterFindDevicesByDeviceIdentifierResponse++;
   if (buildCounterFindDevicesByDeviceIdentifierResponse < 3) {
-    o.devices = buildUnnamed53();
+    o.devices = buildUnnamed34();
     o.nextPageToken = "foo";
   }
   buildCounterFindDevicesByDeviceIdentifierResponse--;
@@ -445,20 +445,20 @@
     api.FindDevicesByDeviceIdentifierResponse o) {
   buildCounterFindDevicesByDeviceIdentifierResponse++;
   if (buildCounterFindDevicesByDeviceIdentifierResponse < 3) {
-    checkUnnamed53(o.devices);
+    checkUnnamed34(o.devices);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterFindDevicesByDeviceIdentifierResponse--;
 }
 
-buildUnnamed54() {
+buildUnnamed35() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed54(core.List<core.String> o) {
+checkUnnamed35(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -469,7 +469,7 @@
   var o = new api.FindDevicesByOwnerRequest();
   buildCounterFindDevicesByOwnerRequest++;
   if (buildCounterFindDevicesByOwnerRequest < 3) {
-    o.customerId = buildUnnamed54();
+    o.customerId = buildUnnamed35();
     o.limit = "foo";
     o.pageToken = "foo";
     o.sectionType = "foo";
@@ -481,7 +481,7 @@
 checkFindDevicesByOwnerRequest(api.FindDevicesByOwnerRequest o) {
   buildCounterFindDevicesByOwnerRequest++;
   if (buildCounterFindDevicesByOwnerRequest < 3) {
-    checkUnnamed54(o.customerId);
+    checkUnnamed35(o.customerId);
     unittest.expect(o.limit, unittest.equals('foo'));
     unittest.expect(o.pageToken, unittest.equals('foo'));
     unittest.expect(o.sectionType, unittest.equals('foo'));
@@ -489,14 +489,14 @@
   buildCounterFindDevicesByOwnerRequest--;
 }
 
-buildUnnamed55() {
+buildUnnamed36() {
   var o = new core.List<api.Device>();
   o.add(buildDevice());
   o.add(buildDevice());
   return o;
 }
 
-checkUnnamed55(core.List<api.Device> o) {
+checkUnnamed36(core.List<api.Device> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDevice(o[0]);
   checkDevice(o[1]);
@@ -507,7 +507,7 @@
   var o = new api.FindDevicesByOwnerResponse();
   buildCounterFindDevicesByOwnerResponse++;
   if (buildCounterFindDevicesByOwnerResponse < 3) {
-    o.devices = buildUnnamed55();
+    o.devices = buildUnnamed36();
     o.nextPageToken = "foo";
   }
   buildCounterFindDevicesByOwnerResponse--;
@@ -517,20 +517,20 @@
 checkFindDevicesByOwnerResponse(api.FindDevicesByOwnerResponse o) {
   buildCounterFindDevicesByOwnerResponse++;
   if (buildCounterFindDevicesByOwnerResponse < 3) {
-    checkUnnamed55(o.devices);
+    checkUnnamed36(o.devices);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterFindDevicesByOwnerResponse--;
 }
 
-buildUnnamed56() {
+buildUnnamed37() {
   var o = new core.List<api.Company>();
   o.add(buildCompany());
   o.add(buildCompany());
   return o;
 }
 
-checkUnnamed56(core.List<api.Company> o) {
+checkUnnamed37(core.List<api.Company> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCompany(o[0]);
   checkCompany(o[1]);
@@ -541,7 +541,7 @@
   var o = new api.ListCustomersResponse();
   buildCounterListCustomersResponse++;
   if (buildCounterListCustomersResponse < 3) {
-    o.customers = buildUnnamed56();
+    o.customers = buildUnnamed37();
   }
   buildCounterListCustomersResponse--;
   return o;
@@ -550,12 +550,12 @@
 checkListCustomersResponse(api.ListCustomersResponse o) {
   buildCounterListCustomersResponse++;
   if (buildCounterListCustomersResponse < 3) {
-    checkUnnamed56(o.customers);
+    checkUnnamed37(o.customers);
   }
   buildCounterListCustomersResponse--;
 }
 
-buildUnnamed57() {
+buildUnnamed38() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -570,7 +570,7 @@
   return o;
 }
 
-checkUnnamed57(core.Map<core.String, core.Object> o) {
+checkUnnamed38(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -584,7 +584,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed58() {
+buildUnnamed39() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -599,7 +599,7 @@
   return o;
 }
 
-checkUnnamed58(core.Map<core.String, core.Object> o) {
+checkUnnamed39(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -620,9 +620,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed57();
+    o.metadata = buildUnnamed38();
     o.name = "foo";
-    o.response = buildUnnamed58();
+    o.response = buildUnnamed39();
   }
   buildCounterOperation--;
   return o;
@@ -633,9 +633,9 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed57(o.metadata);
+    checkUnnamed38(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed58(o.response);
+    checkUnnamed39(o.response);
   }
   buildCounterOperation--;
 }
@@ -738,7 +738,7 @@
   buildCounterPerDeviceStatusInBatch--;
 }
 
-buildUnnamed59() {
+buildUnnamed40() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -753,7 +753,7 @@
   return o;
 }
 
-checkUnnamed59(core.Map<core.String, core.Object> o) {
+checkUnnamed40(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -767,17 +767,17 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed60() {
+buildUnnamed41() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed59());
-  o.add(buildUnnamed59());
+  o.add(buildUnnamed40());
+  o.add(buildUnnamed40());
   return o;
 }
 
-checkUnnamed60(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed41(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed59(o[0]);
-  checkUnnamed59(o[1]);
+  checkUnnamed40(o[0]);
+  checkUnnamed40(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -786,7 +786,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed60();
+    o.details = buildUnnamed41();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -797,7 +797,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed60(o.details);
+    checkUnnamed41(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -826,14 +826,14 @@
   buildCounterUnclaimDeviceRequest--;
 }
 
-buildUnnamed61() {
+buildUnnamed42() {
   var o = new core.List<api.PartnerUnclaim>();
   o.add(buildPartnerUnclaim());
   o.add(buildPartnerUnclaim());
   return o;
 }
 
-checkUnnamed61(core.List<api.PartnerUnclaim> o) {
+checkUnnamed42(core.List<api.PartnerUnclaim> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPartnerUnclaim(o[0]);
   checkPartnerUnclaim(o[1]);
@@ -844,7 +844,7 @@
   var o = new api.UnclaimDevicesRequest();
   buildCounterUnclaimDevicesRequest++;
   if (buildCounterUnclaimDevicesRequest < 3) {
-    o.unclaims = buildUnnamed61();
+    o.unclaims = buildUnnamed42();
   }
   buildCounterUnclaimDevicesRequest--;
   return o;
@@ -853,19 +853,19 @@
 checkUnclaimDevicesRequest(api.UnclaimDevicesRequest o) {
   buildCounterUnclaimDevicesRequest++;
   if (buildCounterUnclaimDevicesRequest < 3) {
-    checkUnnamed61(o.unclaims);
+    checkUnnamed42(o.unclaims);
   }
   buildCounterUnclaimDevicesRequest--;
 }
 
-buildUnnamed62() {
+buildUnnamed43() {
   var o = new core.List<api.UpdateMetadataArguments>();
   o.add(buildUpdateMetadataArguments());
   o.add(buildUpdateMetadataArguments());
   return o;
 }
 
-checkUnnamed62(core.List<api.UpdateMetadataArguments> o) {
+checkUnnamed43(core.List<api.UpdateMetadataArguments> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUpdateMetadataArguments(o[0]);
   checkUpdateMetadataArguments(o[1]);
@@ -876,7 +876,7 @@
   var o = new api.UpdateDeviceMetadataInBatchRequest();
   buildCounterUpdateDeviceMetadataInBatchRequest++;
   if (buildCounterUpdateDeviceMetadataInBatchRequest < 3) {
-    o.updates = buildUnnamed62();
+    o.updates = buildUnnamed43();
   }
   buildCounterUpdateDeviceMetadataInBatchRequest--;
   return o;
@@ -886,7 +886,7 @@
     api.UpdateDeviceMetadataInBatchRequest o) {
   buildCounterUpdateDeviceMetadataInBatchRequest++;
   if (buildCounterUpdateDeviceMetadataInBatchRequest < 3) {
-    checkUnnamed62(o.updates);
+    checkUnnamed43(o.updates);
   }
   buildCounterUpdateDeviceMetadataInBatchRequest--;
 }
@@ -1166,6 +1166,7 @@
       api.OperationsResourceApi res =
           new api.AndroiddeviceprovisioningApi(mock).operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1197,6 +1198,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1204,7 +1206,9 @@
         var resp = convert.JSON.encode(buildOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Operation response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
     });
@@ -1217,6 +1221,7 @@
           new api.AndroiddeviceprovisioningApi(mock).partners.customers;
       var arg_request = buildCreateCustomerRequest();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CreateCustomerRequest.fromJson(json);
         checkCreateCustomerRequest(obj);
@@ -1251,6 +1256,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1259,7 +1265,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent)
+          .create(arg_request, arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Company response) {
         checkCompany(response);
       })));
@@ -1270,6 +1276,7 @@
       api.PartnersCustomersResourceApi res =
           new api.AndroiddeviceprovisioningApi(mock).partners.customers;
       var arg_partnerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1301,6 +1308,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1309,7 +1317,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_partnerId)
+          .list(arg_partnerId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListCustomersResponse response) {
         checkListCustomersResponse(response);
       })));
@@ -1323,6 +1331,7 @@
           new api.AndroiddeviceprovisioningApi(mock).partners.devices;
       var arg_request = buildClaimDeviceRequest();
       var arg_partnerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ClaimDeviceRequest.fromJson(json);
         checkClaimDeviceRequest(obj);
@@ -1357,6 +1366,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1365,7 +1375,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .claim(arg_request, arg_partnerId)
+          .claim(arg_request, arg_partnerId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ClaimDeviceResponse response) {
         checkClaimDeviceResponse(response);
       })));
@@ -1377,6 +1387,7 @@
           new api.AndroiddeviceprovisioningApi(mock).partners.devices;
       var arg_request = buildClaimDevicesRequest();
       var arg_partnerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ClaimDevicesRequest.fromJson(json);
         checkClaimDevicesRequest(obj);
@@ -1411,6 +1422,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1419,7 +1431,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .claimAsync(arg_request, arg_partnerId)
+          .claimAsync(arg_request, arg_partnerId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1431,6 +1443,7 @@
           new api.AndroiddeviceprovisioningApi(mock).partners.devices;
       var arg_request = buildFindDevicesByDeviceIdentifierRequest();
       var arg_partnerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.FindDevicesByDeviceIdentifierRequest.fromJson(json);
         checkFindDevicesByDeviceIdentifierRequest(obj);
@@ -1465,6 +1478,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1473,8 +1487,10 @@
             convert.JSON.encode(buildFindDevicesByDeviceIdentifierResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.findByIdentifier(arg_request, arg_partnerId).then(unittest
-          .expectAsync1(((api.FindDevicesByDeviceIdentifierResponse response) {
+      res
+          .findByIdentifier(arg_request, arg_partnerId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.FindDevicesByDeviceIdentifierResponse response) {
         checkFindDevicesByDeviceIdentifierResponse(response);
       })));
     });
@@ -1485,6 +1501,7 @@
           new api.AndroiddeviceprovisioningApi(mock).partners.devices;
       var arg_request = buildFindDevicesByOwnerRequest();
       var arg_partnerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.FindDevicesByOwnerRequest.fromJson(json);
         checkFindDevicesByOwnerRequest(obj);
@@ -1519,6 +1536,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1526,7 +1544,7 @@
         var resp = convert.JSON.encode(buildFindDevicesByOwnerResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.findByOwner(arg_request, arg_partnerId).then(
+      res.findByOwner(arg_request, arg_partnerId, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.FindDevicesByOwnerResponse response) {
         checkFindDevicesByOwnerResponse(response);
       })));
@@ -1537,6 +1555,7 @@
       api.PartnersDevicesResourceApi res =
           new api.AndroiddeviceprovisioningApi(mock).partners.devices;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1568,6 +1587,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1575,7 +1595,9 @@
         var resp = convert.JSON.encode(buildDevice());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Device response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Device response) {
         checkDevice(response);
       })));
     });
@@ -1587,6 +1609,7 @@
       var arg_request = buildUpdateDeviceMetadataRequest();
       var arg_metadataOwnerId = "foo";
       var arg_deviceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UpdateDeviceMetadataRequest.fromJson(json);
         checkUpdateDeviceMetadataRequest(obj);
@@ -1621,6 +1644,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1629,7 +1653,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .metadata(arg_request, arg_metadataOwnerId, arg_deviceId)
+          .metadata(arg_request, arg_metadataOwnerId, arg_deviceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DeviceMetadata response) {
         checkDeviceMetadata(response);
       })));
@@ -1641,6 +1666,7 @@
           new api.AndroiddeviceprovisioningApi(mock).partners.devices;
       var arg_request = buildUnclaimDeviceRequest();
       var arg_partnerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UnclaimDeviceRequest.fromJson(json);
         checkUnclaimDeviceRequest(obj);
@@ -1675,6 +1701,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1683,7 +1710,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .unclaim(arg_request, arg_partnerId)
+          .unclaim(arg_request, arg_partnerId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1695,6 +1722,7 @@
           new api.AndroiddeviceprovisioningApi(mock).partners.devices;
       var arg_request = buildUnclaimDevicesRequest();
       var arg_partnerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UnclaimDevicesRequest.fromJson(json);
         checkUnclaimDevicesRequest(obj);
@@ -1729,6 +1757,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1737,7 +1766,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .unclaimAsync(arg_request, arg_partnerId)
+          .unclaimAsync(arg_request, arg_partnerId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1749,6 +1778,7 @@
           new api.AndroiddeviceprovisioningApi(mock).partners.devices;
       var arg_request = buildUpdateDeviceMetadataInBatchRequest();
       var arg_partnerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UpdateDeviceMetadataInBatchRequest.fromJson(json);
         checkUpdateDeviceMetadataInBatchRequest(obj);
@@ -1783,6 +1813,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1791,7 +1822,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .updateMetadataAsync(arg_request, arg_partnerId)
+          .updateMetadataAsync(arg_request, arg_partnerId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
diff --git a/generated/googleapis/test/androidenterprise/v1_test.dart b/generated/googleapis/test/androidenterprise/v1_test.dart
index f6dda09..87296be 100644
--- a/generated/googleapis/test/androidenterprise/v1_test.dart
+++ b/generated/googleapis/test/androidenterprise/v1_test.dart
@@ -90,14 +90,14 @@
   buildCounterAdministratorWebToken--;
 }
 
-buildUnnamed2204() {
+buildUnnamed2202() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2204(core.List<core.String> o) {
+checkUnnamed2202(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -110,7 +110,7 @@
   if (buildCounterAdministratorWebTokenSpec < 3) {
     o.kind = "foo";
     o.parent = "foo";
-    o.permission = buildUnnamed2204();
+    o.permission = buildUnnamed2202();
   }
   buildCounterAdministratorWebTokenSpec--;
   return o;
@@ -121,7 +121,7 @@
   if (buildCounterAdministratorWebTokenSpec < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.parent, unittest.equals('foo'));
-    checkUnnamed2204(o.permission);
+    checkUnnamed2202(o.permission);
   }
   buildCounterAdministratorWebTokenSpec--;
 }
@@ -147,14 +147,14 @@
   buildCounterAndroidDevicePolicyConfig--;
 }
 
-buildUnnamed2205() {
+buildUnnamed2203() {
   var o = new core.List<api.AppRestrictionsSchemaRestriction>();
   o.add(buildAppRestrictionsSchemaRestriction());
   o.add(buildAppRestrictionsSchemaRestriction());
   return o;
 }
 
-checkUnnamed2205(core.List<api.AppRestrictionsSchemaRestriction> o) {
+checkUnnamed2203(core.List<api.AppRestrictionsSchemaRestriction> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAppRestrictionsSchemaRestriction(o[0]);
   checkAppRestrictionsSchemaRestriction(o[1]);
@@ -166,7 +166,7 @@
   buildCounterAppRestrictionsSchema++;
   if (buildCounterAppRestrictionsSchema < 3) {
     o.kind = "foo";
-    o.restrictions = buildUnnamed2205();
+    o.restrictions = buildUnnamed2203();
   }
   buildCounterAppRestrictionsSchema--;
   return o;
@@ -176,7 +176,7 @@
   buildCounterAppRestrictionsSchema++;
   if (buildCounterAppRestrictionsSchema < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2205(o.restrictions);
+    checkUnnamed2203(o.restrictions);
   }
   buildCounterAppRestrictionsSchema--;
 }
@@ -200,19 +200,78 @@
   buildCounterAppRestrictionsSchemaChangeEvent--;
 }
 
-buildUnnamed2206() {
+buildUnnamed2204() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2206(core.List<core.String> o) {
+checkUnnamed2204(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
+buildUnnamed2205() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2205(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2206() {
+  var o = new core.List<api.AppRestrictionsSchemaRestriction>();
+  o.add(buildAppRestrictionsSchemaRestriction());
+  o.add(buildAppRestrictionsSchemaRestriction());
+  return o;
+}
+
+checkUnnamed2206(core.List<api.AppRestrictionsSchemaRestriction> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAppRestrictionsSchemaRestriction(o[0]);
+  checkAppRestrictionsSchemaRestriction(o[1]);
+}
+
+core.int buildCounterAppRestrictionsSchemaRestriction = 0;
+buildAppRestrictionsSchemaRestriction() {
+  var o = new api.AppRestrictionsSchemaRestriction();
+  buildCounterAppRestrictionsSchemaRestriction++;
+  if (buildCounterAppRestrictionsSchemaRestriction < 3) {
+    o.defaultValue = buildAppRestrictionsSchemaRestrictionRestrictionValue();
+    o.description = "foo";
+    o.entry = buildUnnamed2204();
+    o.entryValue = buildUnnamed2205();
+    o.key = "foo";
+    o.nestedRestriction = buildUnnamed2206();
+    o.restrictionType = "foo";
+    o.title = "foo";
+  }
+  buildCounterAppRestrictionsSchemaRestriction--;
+  return o;
+}
+
+checkAppRestrictionsSchemaRestriction(api.AppRestrictionsSchemaRestriction o) {
+  buildCounterAppRestrictionsSchemaRestriction++;
+  if (buildCounterAppRestrictionsSchemaRestriction < 3) {
+    checkAppRestrictionsSchemaRestrictionRestrictionValue(o.defaultValue);
+    unittest.expect(o.description, unittest.equals('foo'));
+    checkUnnamed2204(o.entry);
+    checkUnnamed2205(o.entryValue);
+    unittest.expect(o.key, unittest.equals('foo'));
+    checkUnnamed2206(o.nestedRestriction);
+    unittest.expect(o.restrictionType, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterAppRestrictionsSchemaRestriction--;
+}
+
 buildUnnamed2207() {
   var o = new core.List<core.String>();
   o.add("foo");
@@ -226,65 +285,6 @@
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2208() {
-  var o = new core.List<api.AppRestrictionsSchemaRestriction>();
-  o.add(buildAppRestrictionsSchemaRestriction());
-  o.add(buildAppRestrictionsSchemaRestriction());
-  return o;
-}
-
-checkUnnamed2208(core.List<api.AppRestrictionsSchemaRestriction> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkAppRestrictionsSchemaRestriction(o[0]);
-  checkAppRestrictionsSchemaRestriction(o[1]);
-}
-
-core.int buildCounterAppRestrictionsSchemaRestriction = 0;
-buildAppRestrictionsSchemaRestriction() {
-  var o = new api.AppRestrictionsSchemaRestriction();
-  buildCounterAppRestrictionsSchemaRestriction++;
-  if (buildCounterAppRestrictionsSchemaRestriction < 3) {
-    o.defaultValue = buildAppRestrictionsSchemaRestrictionRestrictionValue();
-    o.description = "foo";
-    o.entry = buildUnnamed2206();
-    o.entryValue = buildUnnamed2207();
-    o.key = "foo";
-    o.nestedRestriction = buildUnnamed2208();
-    o.restrictionType = "foo";
-    o.title = "foo";
-  }
-  buildCounterAppRestrictionsSchemaRestriction--;
-  return o;
-}
-
-checkAppRestrictionsSchemaRestriction(api.AppRestrictionsSchemaRestriction o) {
-  buildCounterAppRestrictionsSchemaRestriction++;
-  if (buildCounterAppRestrictionsSchemaRestriction < 3) {
-    checkAppRestrictionsSchemaRestrictionRestrictionValue(o.defaultValue);
-    unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed2206(o.entry);
-    checkUnnamed2207(o.entryValue);
-    unittest.expect(o.key, unittest.equals('foo'));
-    checkUnnamed2208(o.nestedRestriction);
-    unittest.expect(o.restrictionType, unittest.equals('foo'));
-    unittest.expect(o.title, unittest.equals('foo'));
-  }
-  buildCounterAppRestrictionsSchemaRestriction--;
-}
-
-buildUnnamed2209() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed2209(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
 core.int buildCounterAppRestrictionsSchemaRestrictionRestrictionValue = 0;
 buildAppRestrictionsSchemaRestrictionRestrictionValue() {
   var o = new api.AppRestrictionsSchemaRestrictionRestrictionValue();
@@ -293,7 +293,7 @@
     o.type = "foo";
     o.valueBool = true;
     o.valueInteger = 42;
-    o.valueMultiselect = buildUnnamed2209();
+    o.valueMultiselect = buildUnnamed2207();
     o.valueString = "foo";
   }
   buildCounterAppRestrictionsSchemaRestrictionRestrictionValue--;
@@ -307,7 +307,7 @@
     unittest.expect(o.type, unittest.equals('foo'));
     unittest.expect(o.valueBool, unittest.isTrue);
     unittest.expect(o.valueInteger, unittest.equals(42));
-    checkUnnamed2209(o.valueMultiselect);
+    checkUnnamed2207(o.valueMultiselect);
     unittest.expect(o.valueString, unittest.equals('foo'));
   }
   buildCounterAppRestrictionsSchemaRestrictionRestrictionValue--;
@@ -441,14 +441,14 @@
   buildCounterDeviceState--;
 }
 
-buildUnnamed2210() {
+buildUnnamed2208() {
   var o = new core.List<api.Device>();
   o.add(buildDevice());
   o.add(buildDevice());
   return o;
 }
 
-checkUnnamed2210(core.List<api.Device> o) {
+checkUnnamed2208(core.List<api.Device> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDevice(o[0]);
   checkDevice(o[1]);
@@ -459,7 +459,7 @@
   var o = new api.DevicesListResponse();
   buildCounterDevicesListResponse++;
   if (buildCounterDevicesListResponse < 3) {
-    o.device = buildUnnamed2210();
+    o.device = buildUnnamed2208();
     o.kind = "foo";
   }
   buildCounterDevicesListResponse--;
@@ -469,20 +469,20 @@
 checkDevicesListResponse(api.DevicesListResponse o) {
   buildCounterDevicesListResponse++;
   if (buildCounterDevicesListResponse < 3) {
-    checkUnnamed2210(o.device);
+    checkUnnamed2208(o.device);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterDevicesListResponse--;
 }
 
-buildUnnamed2211() {
+buildUnnamed2209() {
   var o = new core.List<api.Administrator>();
   o.add(buildAdministrator());
   o.add(buildAdministrator());
   return o;
 }
 
-checkUnnamed2211(core.List<api.Administrator> o) {
+checkUnnamed2209(core.List<api.Administrator> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAdministrator(o[0]);
   checkAdministrator(o[1]);
@@ -493,7 +493,7 @@
   var o = new api.Enterprise();
   buildCounterEnterprise++;
   if (buildCounterEnterprise < 3) {
-    o.administrator = buildUnnamed2211();
+    o.administrator = buildUnnamed2209();
     o.id = "foo";
     o.kind = "foo";
     o.name = "foo";
@@ -506,7 +506,7 @@
 checkEnterprise(api.Enterprise o) {
   buildCounterEnterprise++;
   if (buildCounterEnterprise < 3) {
-    checkUnnamed2211(o.administrator);
+    checkUnnamed2209(o.administrator);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
@@ -536,14 +536,14 @@
   buildCounterEnterpriseAccount--;
 }
 
-buildUnnamed2212() {
+buildUnnamed2210() {
   var o = new core.List<api.Enterprise>();
   o.add(buildEnterprise());
   o.add(buildEnterprise());
   return o;
 }
 
-checkUnnamed2212(core.List<api.Enterprise> o) {
+checkUnnamed2210(core.List<api.Enterprise> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEnterprise(o[0]);
   checkEnterprise(o[1]);
@@ -554,7 +554,7 @@
   var o = new api.EnterprisesListResponse();
   buildCounterEnterprisesListResponse++;
   if (buildCounterEnterprisesListResponse < 3) {
-    o.enterprise = buildUnnamed2212();
+    o.enterprise = buildUnnamed2210();
     o.kind = "foo";
   }
   buildCounterEnterprisesListResponse--;
@@ -564,7 +564,7 @@
 checkEnterprisesListResponse(api.EnterprisesListResponse o) {
   buildCounterEnterprisesListResponse++;
   if (buildCounterEnterprisesListResponse < 3) {
-    checkUnnamed2212(o.enterprise);
+    checkUnnamed2210(o.enterprise);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterEnterprisesListResponse--;
@@ -615,14 +615,14 @@
   buildCounterEntitlement--;
 }
 
-buildUnnamed2213() {
+buildUnnamed2211() {
   var o = new core.List<api.Entitlement>();
   o.add(buildEntitlement());
   o.add(buildEntitlement());
   return o;
 }
 
-checkUnnamed2213(core.List<api.Entitlement> o) {
+checkUnnamed2211(core.List<api.Entitlement> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntitlement(o[0]);
   checkEntitlement(o[1]);
@@ -633,7 +633,7 @@
   var o = new api.EntitlementsListResponse();
   buildCounterEntitlementsListResponse++;
   if (buildCounterEntitlementsListResponse < 3) {
-    o.entitlement = buildUnnamed2213();
+    o.entitlement = buildUnnamed2211();
     o.kind = "foo";
   }
   buildCounterEntitlementsListResponse--;
@@ -643,7 +643,7 @@
 checkEntitlementsListResponse(api.EntitlementsListResponse o) {
   buildCounterEntitlementsListResponse++;
   if (buildCounterEntitlementsListResponse < 3) {
-    checkUnnamed2213(o.entitlement);
+    checkUnnamed2211(o.entitlement);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterEntitlementsListResponse--;
@@ -680,14 +680,14 @@
   buildCounterGroupLicense--;
 }
 
-buildUnnamed2214() {
+buildUnnamed2212() {
   var o = new core.List<api.User>();
   o.add(buildUser());
   o.add(buildUser());
   return o;
 }
 
-checkUnnamed2214(core.List<api.User> o) {
+checkUnnamed2212(core.List<api.User> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUser(o[0]);
   checkUser(o[1]);
@@ -699,7 +699,7 @@
   buildCounterGroupLicenseUsersListResponse++;
   if (buildCounterGroupLicenseUsersListResponse < 3) {
     o.kind = "foo";
-    o.user = buildUnnamed2214();
+    o.user = buildUnnamed2212();
   }
   buildCounterGroupLicenseUsersListResponse--;
   return o;
@@ -709,19 +709,19 @@
   buildCounterGroupLicenseUsersListResponse++;
   if (buildCounterGroupLicenseUsersListResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2214(o.user);
+    checkUnnamed2212(o.user);
   }
   buildCounterGroupLicenseUsersListResponse--;
 }
 
-buildUnnamed2215() {
+buildUnnamed2213() {
   var o = new core.List<api.GroupLicense>();
   o.add(buildGroupLicense());
   o.add(buildGroupLicense());
   return o;
 }
 
-checkUnnamed2215(core.List<api.GroupLicense> o) {
+checkUnnamed2213(core.List<api.GroupLicense> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGroupLicense(o[0]);
   checkGroupLicense(o[1]);
@@ -732,7 +732,7 @@
   var o = new api.GroupLicensesListResponse();
   buildCounterGroupLicensesListResponse++;
   if (buildCounterGroupLicensesListResponse < 3) {
-    o.groupLicense = buildUnnamed2215();
+    o.groupLicense = buildUnnamed2213();
     o.kind = "foo";
   }
   buildCounterGroupLicensesListResponse--;
@@ -742,7 +742,7 @@
 checkGroupLicensesListResponse(api.GroupLicensesListResponse o) {
   buildCounterGroupLicensesListResponse++;
   if (buildCounterGroupLicensesListResponse < 3) {
-    checkUnnamed2215(o.groupLicense);
+    checkUnnamed2213(o.groupLicense);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterGroupLicensesListResponse--;
@@ -800,14 +800,14 @@
   buildCounterInstallFailureEvent--;
 }
 
-buildUnnamed2216() {
+buildUnnamed2214() {
   var o = new core.List<api.Install>();
   o.add(buildInstall());
   o.add(buildInstall());
   return o;
 }
 
-checkUnnamed2216(core.List<api.Install> o) {
+checkUnnamed2214(core.List<api.Install> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstall(o[0]);
   checkInstall(o[1]);
@@ -818,7 +818,7 @@
   var o = new api.InstallsListResponse();
   buildCounterInstallsListResponse++;
   if (buildCounterInstallsListResponse < 3) {
-    o.install = buildUnnamed2216();
+    o.install = buildUnnamed2214();
     o.kind = "foo";
   }
   buildCounterInstallsListResponse--;
@@ -828,7 +828,7 @@
 checkInstallsListResponse(api.InstallsListResponse o) {
   buildCounterInstallsListResponse++;
   if (buildCounterInstallsListResponse < 3) {
-    checkUnnamed2216(o.install);
+    checkUnnamed2214(o.install);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterInstallsListResponse--;
@@ -855,14 +855,14 @@
   buildCounterLocalizedText--;
 }
 
-buildUnnamed2217() {
+buildUnnamed2215() {
   var o = new core.List<api.ManagedProperty>();
   o.add(buildManagedProperty());
   o.add(buildManagedProperty());
   return o;
 }
 
-checkUnnamed2217(core.List<api.ManagedProperty> o) {
+checkUnnamed2215(core.List<api.ManagedProperty> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkManagedProperty(o[0]);
   checkManagedProperty(o[1]);
@@ -874,7 +874,7 @@
   buildCounterManagedConfiguration++;
   if (buildCounterManagedConfiguration < 3) {
     o.kind = "foo";
-    o.managedProperty = buildUnnamed2217();
+    o.managedProperty = buildUnnamed2215();
     o.productId = "foo";
   }
   buildCounterManagedConfiguration--;
@@ -885,20 +885,20 @@
   buildCounterManagedConfiguration++;
   if (buildCounterManagedConfiguration < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2217(o.managedProperty);
+    checkUnnamed2215(o.managedProperty);
     unittest.expect(o.productId, unittest.equals('foo'));
   }
   buildCounterManagedConfiguration--;
 }
 
-buildUnnamed2218() {
+buildUnnamed2216() {
   var o = new core.List<api.ManagedConfiguration>();
   o.add(buildManagedConfiguration());
   o.add(buildManagedConfiguration());
   return o;
 }
 
-checkUnnamed2218(core.List<api.ManagedConfiguration> o) {
+checkUnnamed2216(core.List<api.ManagedConfiguration> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkManagedConfiguration(o[0]);
   checkManagedConfiguration(o[1]);
@@ -910,7 +910,7 @@
   buildCounterManagedConfigurationsForDeviceListResponse++;
   if (buildCounterManagedConfigurationsForDeviceListResponse < 3) {
     o.kind = "foo";
-    o.managedConfigurationForDevice = buildUnnamed2218();
+    o.managedConfigurationForDevice = buildUnnamed2216();
   }
   buildCounterManagedConfigurationsForDeviceListResponse--;
   return o;
@@ -921,19 +921,19 @@
   buildCounterManagedConfigurationsForDeviceListResponse++;
   if (buildCounterManagedConfigurationsForDeviceListResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2218(o.managedConfigurationForDevice);
+    checkUnnamed2216(o.managedConfigurationForDevice);
   }
   buildCounterManagedConfigurationsForDeviceListResponse--;
 }
 
-buildUnnamed2219() {
+buildUnnamed2217() {
   var o = new core.List<api.ManagedConfiguration>();
   o.add(buildManagedConfiguration());
   o.add(buildManagedConfiguration());
   return o;
 }
 
-checkUnnamed2219(core.List<api.ManagedConfiguration> o) {
+checkUnnamed2217(core.List<api.ManagedConfiguration> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkManagedConfiguration(o[0]);
   checkManagedConfiguration(o[1]);
@@ -945,7 +945,7 @@
   buildCounterManagedConfigurationsForUserListResponse++;
   if (buildCounterManagedConfigurationsForUserListResponse < 3) {
     o.kind = "foo";
-    o.managedConfigurationForUser = buildUnnamed2219();
+    o.managedConfigurationForUser = buildUnnamed2217();
   }
   buildCounterManagedConfigurationsForUserListResponse--;
   return o;
@@ -956,32 +956,32 @@
   buildCounterManagedConfigurationsForUserListResponse++;
   if (buildCounterManagedConfigurationsForUserListResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2219(o.managedConfigurationForUser);
+    checkUnnamed2217(o.managedConfigurationForUser);
   }
   buildCounterManagedConfigurationsForUserListResponse--;
 }
 
-buildUnnamed2220() {
+buildUnnamed2218() {
   var o = new core.List<api.ManagedPropertyBundle>();
   o.add(buildManagedPropertyBundle());
   o.add(buildManagedPropertyBundle());
   return o;
 }
 
-checkUnnamed2220(core.List<api.ManagedPropertyBundle> o) {
+checkUnnamed2218(core.List<api.ManagedPropertyBundle> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkManagedPropertyBundle(o[0]);
   checkManagedPropertyBundle(o[1]);
 }
 
-buildUnnamed2221() {
+buildUnnamed2219() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2221(core.List<core.String> o) {
+checkUnnamed2219(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -995,10 +995,10 @@
     o.key = "foo";
     o.valueBool = true;
     o.valueBundle = buildManagedPropertyBundle();
-    o.valueBundleArray = buildUnnamed2220();
+    o.valueBundleArray = buildUnnamed2218();
     o.valueInteger = 42;
     o.valueString = "foo";
-    o.valueStringArray = buildUnnamed2221();
+    o.valueStringArray = buildUnnamed2219();
   }
   buildCounterManagedProperty--;
   return o;
@@ -1010,22 +1010,22 @@
     unittest.expect(o.key, unittest.equals('foo'));
     unittest.expect(o.valueBool, unittest.isTrue);
     checkManagedPropertyBundle(o.valueBundle);
-    checkUnnamed2220(o.valueBundleArray);
+    checkUnnamed2218(o.valueBundleArray);
     unittest.expect(o.valueInteger, unittest.equals(42));
     unittest.expect(o.valueString, unittest.equals('foo'));
-    checkUnnamed2221(o.valueStringArray);
+    checkUnnamed2219(o.valueStringArray);
   }
   buildCounterManagedProperty--;
 }
 
-buildUnnamed2222() {
+buildUnnamed2220() {
   var o = new core.List<api.ManagedProperty>();
   o.add(buildManagedProperty());
   o.add(buildManagedProperty());
   return o;
 }
 
-checkUnnamed2222(core.List<api.ManagedProperty> o) {
+checkUnnamed2220(core.List<api.ManagedProperty> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkManagedProperty(o[0]);
   checkManagedProperty(o[1]);
@@ -1036,7 +1036,7 @@
   var o = new api.ManagedPropertyBundle();
   buildCounterManagedPropertyBundle++;
   if (buildCounterManagedPropertyBundle < 3) {
-    o.managedProperty = buildUnnamed2222();
+    o.managedProperty = buildUnnamed2220();
   }
   buildCounterManagedPropertyBundle--;
   return o;
@@ -1045,7 +1045,7 @@
 checkManagedPropertyBundle(api.ManagedPropertyBundle o) {
   buildCounterManagedPropertyBundle++;
   if (buildCounterManagedPropertyBundle < 3) {
-    checkUnnamed2222(o.managedProperty);
+    checkUnnamed2220(o.managedProperty);
   }
   buildCounterManagedPropertyBundle--;
 }
@@ -1073,27 +1073,27 @@
   buildCounterNewDeviceEvent--;
 }
 
-buildUnnamed2223() {
+buildUnnamed2221() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2223(core.List<core.String> o) {
+checkUnnamed2221(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2224() {
+buildUnnamed2222() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2224(core.List<core.String> o) {
+checkUnnamed2222(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1104,9 +1104,9 @@
   var o = new api.NewPermissionsEvent();
   buildCounterNewPermissionsEvent++;
   if (buildCounterNewPermissionsEvent < 3) {
-    o.approvedPermissions = buildUnnamed2223();
+    o.approvedPermissions = buildUnnamed2221();
     o.productId = "foo";
-    o.requestedPermissions = buildUnnamed2224();
+    o.requestedPermissions = buildUnnamed2222();
   }
   buildCounterNewPermissionsEvent--;
   return o;
@@ -1115,9 +1115,9 @@
 checkNewPermissionsEvent(api.NewPermissionsEvent o) {
   buildCounterNewPermissionsEvent++;
   if (buildCounterNewPermissionsEvent < 3) {
-    checkUnnamed2223(o.approvedPermissions);
+    checkUnnamed2221(o.approvedPermissions);
     unittest.expect(o.productId, unittest.equals('foo'));
-    checkUnnamed2224(o.requestedPermissions);
+    checkUnnamed2222(o.requestedPermissions);
   }
   buildCounterNewPermissionsEvent--;
 }
@@ -1160,14 +1160,14 @@
   buildCounterNotification--;
 }
 
-buildUnnamed2225() {
+buildUnnamed2223() {
   var o = new core.List<api.Notification>();
   o.add(buildNotification());
   o.add(buildNotification());
   return o;
 }
 
-checkUnnamed2225(core.List<api.Notification> o) {
+checkUnnamed2223(core.List<api.Notification> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkNotification(o[0]);
   checkNotification(o[1]);
@@ -1179,7 +1179,7 @@
   buildCounterNotificationSet++;
   if (buildCounterNotificationSet < 3) {
     o.kind = "foo";
-    o.notification = buildUnnamed2225();
+    o.notification = buildUnnamed2223();
     o.notificationSetId = "foo";
   }
   buildCounterNotificationSet--;
@@ -1190,7 +1190,7 @@
   buildCounterNotificationSet++;
   if (buildCounterNotificationSet < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2225(o.notification);
+    checkUnnamed2223(o.notification);
     unittest.expect(o.notificationSetId, unittest.equals('foo'));
   }
   buildCounterNotificationSet--;
@@ -1244,27 +1244,27 @@
   buildCounterPermission--;
 }
 
-buildUnnamed2226() {
+buildUnnamed2224() {
   var o = new core.List<api.AppVersion>();
   o.add(buildAppVersion());
   o.add(buildAppVersion());
   return o;
 }
 
-checkUnnamed2226(core.List<api.AppVersion> o) {
+checkUnnamed2224(core.List<api.AppVersion> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAppVersion(o[0]);
   checkAppVersion(o[1]);
 }
 
-buildUnnamed2227() {
+buildUnnamed2225() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2227(core.List<core.String> o) {
+checkUnnamed2225(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1275,9 +1275,9 @@
   var o = new api.Product();
   buildCounterProduct++;
   if (buildCounterProduct < 3) {
-    o.appVersion = buildUnnamed2226();
+    o.appVersion = buildUnnamed2224();
     o.authorName = "foo";
-    o.availableTracks = buildUnnamed2227();
+    o.availableTracks = buildUnnamed2225();
     o.detailsUrl = "foo";
     o.distributionChannel = "foo";
     o.iconUrl = "foo";
@@ -1297,9 +1297,9 @@
 checkProduct(api.Product o) {
   buildCounterProduct++;
   if (buildCounterProduct < 3) {
-    checkUnnamed2226(o.appVersion);
+    checkUnnamed2224(o.appVersion);
     unittest.expect(o.authorName, unittest.equals('foo'));
-    checkUnnamed2227(o.availableTracks);
+    checkUnnamed2225(o.availableTracks);
     unittest.expect(o.detailsUrl, unittest.equals('foo'));
     unittest.expect(o.distributionChannel, unittest.equals('foo'));
     unittest.expect(o.iconUrl, unittest.equals('foo'));
@@ -1378,14 +1378,14 @@
   buildCounterProductPermission--;
 }
 
-buildUnnamed2228() {
+buildUnnamed2226() {
   var o = new core.List<api.ProductPermission>();
   o.add(buildProductPermission());
   o.add(buildProductPermission());
   return o;
 }
 
-checkUnnamed2228(core.List<api.ProductPermission> o) {
+checkUnnamed2226(core.List<api.ProductPermission> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProductPermission(o[0]);
   checkProductPermission(o[1]);
@@ -1397,7 +1397,7 @@
   buildCounterProductPermissions++;
   if (buildCounterProductPermissions < 3) {
     o.kind = "foo";
-    o.permission = buildUnnamed2228();
+    o.permission = buildUnnamed2226();
     o.productId = "foo";
   }
   buildCounterProductPermissions--;
@@ -1408,33 +1408,33 @@
   buildCounterProductPermissions++;
   if (buildCounterProductPermissions < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2228(o.permission);
+    checkUnnamed2226(o.permission);
     unittest.expect(o.productId, unittest.equals('foo'));
   }
   buildCounterProductPermissions--;
 }
 
-buildUnnamed2229() {
+buildUnnamed2227() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2229(core.List<core.String> o) {
+checkUnnamed2227(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2230() {
+buildUnnamed2228() {
   var o = new core.List<api.ProductVisibility>();
   o.add(buildProductVisibility());
   o.add(buildProductVisibility());
   return o;
 }
 
-checkUnnamed2230(core.List<api.ProductVisibility> o) {
+checkUnnamed2228(core.List<api.ProductVisibility> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProductVisibility(o[0]);
   checkProductVisibility(o[1]);
@@ -1446,9 +1446,9 @@
   buildCounterProductSet++;
   if (buildCounterProductSet < 3) {
     o.kind = "foo";
-    o.productId = buildUnnamed2229();
+    o.productId = buildUnnamed2227();
     o.productSetBehavior = "foo";
-    o.productVisibility = buildUnnamed2230();
+    o.productVisibility = buildUnnamed2228();
   }
   buildCounterProductSet--;
   return o;
@@ -1458,9 +1458,9 @@
   buildCounterProductSet++;
   if (buildCounterProductSet < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2229(o.productId);
+    checkUnnamed2227(o.productId);
     unittest.expect(o.productSetBehavior, unittest.equals('foo'));
-    checkUnnamed2230(o.productVisibility);
+    checkUnnamed2228(o.productVisibility);
   }
   buildCounterProductSet--;
 }
@@ -1486,14 +1486,14 @@
   buildCounterProductSigningCertificate--;
 }
 
-buildUnnamed2231() {
+buildUnnamed2229() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2231(core.List<core.String> o) {
+checkUnnamed2229(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1505,7 +1505,7 @@
   buildCounterProductVisibility++;
   if (buildCounterProductVisibility < 3) {
     o.productId = "foo";
-    o.tracks = buildUnnamed2231();
+    o.tracks = buildUnnamed2229();
   }
   buildCounterProductVisibility--;
   return o;
@@ -1515,7 +1515,7 @@
   buildCounterProductVisibility++;
   if (buildCounterProductVisibility < 3) {
     unittest.expect(o.productId, unittest.equals('foo'));
-    checkUnnamed2231(o.tracks);
+    checkUnnamed2229(o.tracks);
   }
   buildCounterProductVisibility--;
 }
@@ -1561,14 +1561,14 @@
   buildCounterProductsGenerateApprovalUrlResponse--;
 }
 
-buildUnnamed2232() {
+buildUnnamed2230() {
   var o = new core.List<api.Product>();
   o.add(buildProduct());
   o.add(buildProduct());
   return o;
 }
 
-checkUnnamed2232(core.List<api.Product> o) {
+checkUnnamed2230(core.List<api.Product> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProduct(o[0]);
   checkProduct(o[1]);
@@ -1581,7 +1581,7 @@
   if (buildCounterProductsListResponse < 3) {
     o.kind = "foo";
     o.pageInfo = buildPageInfo();
-    o.product = buildUnnamed2232();
+    o.product = buildUnnamed2230();
     o.tokenPagination = buildTokenPagination();
   }
   buildCounterProductsListResponse--;
@@ -1593,7 +1593,7 @@
   if (buildCounterProductsListResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
-    checkUnnamed2232(o.product);
+    checkUnnamed2230(o.product);
     checkTokenPagination(o.tokenPagination);
   }
   buildCounterProductsListResponse--;
@@ -1649,14 +1649,14 @@
   buildCounterServiceAccountKey--;
 }
 
-buildUnnamed2233() {
+buildUnnamed2231() {
   var o = new core.List<api.ServiceAccountKey>();
   o.add(buildServiceAccountKey());
   o.add(buildServiceAccountKey());
   return o;
 }
 
-checkUnnamed2233(core.List<api.ServiceAccountKey> o) {
+checkUnnamed2231(core.List<api.ServiceAccountKey> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkServiceAccountKey(o[0]);
   checkServiceAccountKey(o[1]);
@@ -1667,7 +1667,7 @@
   var o = new api.ServiceAccountKeysListResponse();
   buildCounterServiceAccountKeysListResponse++;
   if (buildCounterServiceAccountKeysListResponse < 3) {
-    o.serviceAccountKey = buildUnnamed2233();
+    o.serviceAccountKey = buildUnnamed2231();
   }
   buildCounterServiceAccountKeysListResponse--;
   return o;
@@ -1676,7 +1676,7 @@
 checkServiceAccountKeysListResponse(api.ServiceAccountKeysListResponse o) {
   buildCounterServiceAccountKeysListResponse++;
   if (buildCounterServiceAccountKeysListResponse < 3) {
-    checkUnnamed2233(o.serviceAccountKey);
+    checkUnnamed2231(o.serviceAccountKey);
   }
   buildCounterServiceAccountKeysListResponse--;
 }
@@ -1704,27 +1704,27 @@
   buildCounterSignupInfo--;
 }
 
-buildUnnamed2234() {
+buildUnnamed2232() {
   var o = new core.List<api.LocalizedText>();
   o.add(buildLocalizedText());
   o.add(buildLocalizedText());
   return o;
 }
 
-checkUnnamed2234(core.List<api.LocalizedText> o) {
+checkUnnamed2232(core.List<api.LocalizedText> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocalizedText(o[0]);
   checkLocalizedText(o[1]);
 }
 
-buildUnnamed2235() {
+buildUnnamed2233() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2235(core.List<core.String> o) {
+checkUnnamed2233(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1737,9 +1737,9 @@
   if (buildCounterStoreCluster < 3) {
     o.id = "foo";
     o.kind = "foo";
-    o.name = buildUnnamed2234();
+    o.name = buildUnnamed2232();
     o.orderInPage = "foo";
-    o.productId = buildUnnamed2235();
+    o.productId = buildUnnamed2233();
   }
   buildCounterStoreCluster--;
   return o;
@@ -1750,9 +1750,9 @@
   if (buildCounterStoreCluster < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2234(o.name);
+    checkUnnamed2232(o.name);
     unittest.expect(o.orderInPage, unittest.equals('foo'));
-    checkUnnamed2235(o.productId);
+    checkUnnamed2233(o.productId);
   }
   buildCounterStoreCluster--;
 }
@@ -1780,14 +1780,14 @@
   buildCounterStoreLayout--;
 }
 
-buildUnnamed2236() {
+buildUnnamed2234() {
   var o = new core.List<api.StoreCluster>();
   o.add(buildStoreCluster());
   o.add(buildStoreCluster());
   return o;
 }
 
-checkUnnamed2236(core.List<api.StoreCluster> o) {
+checkUnnamed2234(core.List<api.StoreCluster> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStoreCluster(o[0]);
   checkStoreCluster(o[1]);
@@ -1798,7 +1798,7 @@
   var o = new api.StoreLayoutClustersListResponse();
   buildCounterStoreLayoutClustersListResponse++;
   if (buildCounterStoreLayoutClustersListResponse < 3) {
-    o.cluster = buildUnnamed2236();
+    o.cluster = buildUnnamed2234();
     o.kind = "foo";
   }
   buildCounterStoreLayoutClustersListResponse--;
@@ -1808,20 +1808,20 @@
 checkStoreLayoutClustersListResponse(api.StoreLayoutClustersListResponse o) {
   buildCounterStoreLayoutClustersListResponse++;
   if (buildCounterStoreLayoutClustersListResponse < 3) {
-    checkUnnamed2236(o.cluster);
+    checkUnnamed2234(o.cluster);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterStoreLayoutClustersListResponse--;
 }
 
-buildUnnamed2237() {
+buildUnnamed2235() {
   var o = new core.List<api.StorePage>();
   o.add(buildStorePage());
   o.add(buildStorePage());
   return o;
 }
 
-checkUnnamed2237(core.List<api.StorePage> o) {
+checkUnnamed2235(core.List<api.StorePage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStorePage(o[0]);
   checkStorePage(o[1]);
@@ -1833,7 +1833,7 @@
   buildCounterStoreLayoutPagesListResponse++;
   if (buildCounterStoreLayoutPagesListResponse < 3) {
     o.kind = "foo";
-    o.page = buildUnnamed2237();
+    o.page = buildUnnamed2235();
   }
   buildCounterStoreLayoutPagesListResponse--;
   return o;
@@ -1843,32 +1843,32 @@
   buildCounterStoreLayoutPagesListResponse++;
   if (buildCounterStoreLayoutPagesListResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2237(o.page);
+    checkUnnamed2235(o.page);
   }
   buildCounterStoreLayoutPagesListResponse--;
 }
 
-buildUnnamed2238() {
+buildUnnamed2236() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2238(core.List<core.String> o) {
+checkUnnamed2236(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2239() {
+buildUnnamed2237() {
   var o = new core.List<api.LocalizedText>();
   o.add(buildLocalizedText());
   o.add(buildLocalizedText());
   return o;
 }
 
-checkUnnamed2239(core.List<api.LocalizedText> o) {
+checkUnnamed2237(core.List<api.LocalizedText> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocalizedText(o[0]);
   checkLocalizedText(o[1]);
@@ -1881,8 +1881,8 @@
   if (buildCounterStorePage < 3) {
     o.id = "foo";
     o.kind = "foo";
-    o.link = buildUnnamed2238();
-    o.name = buildUnnamed2239();
+    o.link = buildUnnamed2236();
+    o.name = buildUnnamed2237();
   }
   buildCounterStorePage--;
   return o;
@@ -1893,8 +1893,8 @@
   if (buildCounterStorePage < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2238(o.link);
-    checkUnnamed2239(o.name);
+    checkUnnamed2236(o.link);
+    checkUnnamed2237(o.name);
   }
   buildCounterStorePage--;
 }
@@ -1974,14 +1974,14 @@
   buildCounterUserToken--;
 }
 
-buildUnnamed2240() {
+buildUnnamed2238() {
   var o = new core.List<api.User>();
   o.add(buildUser());
   o.add(buildUser());
   return o;
 }
 
-checkUnnamed2240(core.List<api.User> o) {
+checkUnnamed2238(core.List<api.User> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUser(o[0]);
   checkUser(o[1]);
@@ -1993,7 +1993,7 @@
   buildCounterUsersListResponse++;
   if (buildCounterUsersListResponse < 3) {
     o.kind = "foo";
-    o.user = buildUnnamed2240();
+    o.user = buildUnnamed2238();
   }
   buildCounterUsersListResponse--;
   return o;
@@ -2003,7 +2003,7 @@
   buildCounterUsersListResponse++;
   if (buildCounterUsersListResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2240(o.user);
+    checkUnnamed2238(o.user);
   }
   buildCounterUsersListResponse--;
 }
@@ -2526,6 +2526,7 @@
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
       var arg_deviceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2580,6 +2581,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2588,7 +2590,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_enterpriseId, arg_userId, arg_deviceId)
+          .get(arg_enterpriseId, arg_userId, arg_deviceId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Device response) {
         checkDevice(response);
       })));
@@ -2600,6 +2602,7 @@
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
       var arg_deviceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2660,6 +2663,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2668,7 +2672,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getState(arg_enterpriseId, arg_userId, arg_deviceId)
+          .getState(arg_enterpriseId, arg_userId, arg_deviceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DeviceState response) {
         checkDeviceState(response);
       })));
@@ -2679,6 +2684,7 @@
       api.DevicesResourceApi res = new api.AndroidenterpriseApi(mock).devices;
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2730,6 +2736,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2738,7 +2745,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_enterpriseId, arg_userId)
+          .list(arg_enterpriseId, arg_userId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DevicesListResponse response) {
         checkDevicesListResponse(response);
       })));
@@ -2751,6 +2758,7 @@
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
       var arg_deviceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DeviceState.fromJson(json);
         checkDeviceState(obj);
@@ -2814,6 +2822,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2822,7 +2831,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setState(arg_request, arg_enterpriseId, arg_userId, arg_deviceId)
+          .setState(arg_request, arg_enterpriseId, arg_userId, arg_deviceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DeviceState response) {
         checkDeviceState(response);
       })));
@@ -2835,6 +2845,7 @@
       api.EnterprisesResourceApi res =
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_notificationSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2870,6 +2881,7 @@
         }
         unittest.expect(queryMap["notificationSetId"].first,
             unittest.equals(arg_notificationSetId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2878,7 +2890,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .acknowledgeNotificationSet(notificationSetId: arg_notificationSetId)
+          .acknowledgeNotificationSet(
+              notificationSetId: arg_notificationSetId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -2888,6 +2901,7 @@
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_completionToken = "foo";
       var arg_enterpriseToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2925,6 +2939,7 @@
             unittest.equals(arg_completionToken));
         unittest.expect(queryMap["enterpriseToken"].first,
             unittest.equals(arg_enterpriseToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2935,7 +2950,8 @@
       res
           .completeSignup(
               completionToken: arg_completionToken,
-              enterpriseToken: arg_enterpriseToken)
+              enterpriseToken: arg_enterpriseToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Enterprise response) {
         checkEnterprise(response);
       })));
@@ -2947,6 +2963,7 @@
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_request = buildAdministratorWebTokenSpec();
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AdministratorWebTokenSpec.fromJson(json);
         checkAdministratorWebTokenSpec(obj);
@@ -2992,6 +3009,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3000,7 +3018,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .createWebToken(arg_request, arg_enterpriseId)
+          .createWebToken(arg_request, arg_enterpriseId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AdministratorWebToken response) {
         checkAdministratorWebToken(response);
       })));
@@ -3011,6 +3029,7 @@
       api.EnterprisesResourceApi res =
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3047,6 +3066,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3054,7 +3074,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_enterpriseId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_enterpriseId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--enroll", () {
@@ -3063,6 +3085,7 @@
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_request = buildEnterprise();
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Enterprise.fromJson(json);
         checkEnterprise(obj);
@@ -3100,6 +3123,7 @@
           }
         }
         unittest.expect(queryMap["token"].first, unittest.equals(arg_token));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3108,7 +3132,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .enroll(arg_request, arg_token)
+          .enroll(arg_request, arg_token, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Enterprise response) {
         checkEnterprise(response);
       })));
@@ -3119,6 +3143,7 @@
       api.EnterprisesResourceApi res =
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_callbackUrl = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3154,6 +3179,7 @@
         }
         unittest.expect(
             queryMap["callbackUrl"].first, unittest.equals(arg_callbackUrl));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3162,7 +3188,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .generateSignupUrl(callbackUrl: arg_callbackUrl)
+          .generateSignupUrl(callbackUrl: arg_callbackUrl, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SignupInfo response) {
         checkSignupInfo(response);
       })));
@@ -3173,6 +3199,7 @@
       api.EnterprisesResourceApi res =
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3209,6 +3236,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3217,7 +3245,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_enterpriseId)
+          .get(arg_enterpriseId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Enterprise response) {
         checkEnterprise(response);
       })));
@@ -3228,6 +3256,7 @@
       api.EnterprisesResourceApi res =
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3270,6 +3299,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3277,8 +3307,10 @@
         var resp = convert.JSON.encode(buildAndroidDevicePolicyConfig());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.getAndroidDevicePolicyConfig(arg_enterpriseId).then(
-          unittest.expectAsync1(((api.AndroidDevicePolicyConfig response) {
+      res
+          .getAndroidDevicePolicyConfig(arg_enterpriseId, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.AndroidDevicePolicyConfig response) {
         checkAndroidDevicePolicyConfig(response);
       })));
     });
@@ -3289,6 +3321,7 @@
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_enterpriseId = "foo";
       var arg_keyType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3333,6 +3366,7 @@
         }
         unittest.expect(
             queryMap["keyType"].first, unittest.equals(arg_keyType));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3341,7 +3375,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getServiceAccount(arg_enterpriseId, keyType: arg_keyType)
+          .getServiceAccount(arg_enterpriseId,
+              keyType: arg_keyType, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ServiceAccount response) {
         checkServiceAccount(response);
       })));
@@ -3352,6 +3387,7 @@
       api.EnterprisesResourceApi res =
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3394,6 +3430,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3402,7 +3439,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getStoreLayout(arg_enterpriseId)
+          .getStoreLayout(arg_enterpriseId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StoreLayout response) {
         checkStoreLayout(response);
       })));
@@ -3414,6 +3451,7 @@
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_request = buildEnterprise();
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Enterprise.fromJson(json);
         checkEnterprise(obj);
@@ -3451,6 +3489,7 @@
           }
         }
         unittest.expect(queryMap["token"].first, unittest.equals(arg_token));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3459,7 +3498,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_token)
+          .insert(arg_request, arg_token, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Enterprise response) {
         checkEnterprise(response);
       })));
@@ -3470,6 +3509,7 @@
       api.EnterprisesResourceApi res =
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_domain = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3504,6 +3544,7 @@
           }
         }
         unittest.expect(queryMap["domain"].first, unittest.equals(arg_domain));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3512,7 +3553,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_domain)
+          .list(arg_domain, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EnterprisesListResponse response) {
         checkEnterprisesListResponse(response);
       })));
@@ -3523,6 +3564,7 @@
       api.EnterprisesResourceApi res =
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_requestMode = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3558,6 +3600,7 @@
         }
         unittest.expect(
             queryMap["requestMode"].first, unittest.equals(arg_requestMode));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3566,7 +3609,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .pullNotificationSet(requestMode: arg_requestMode)
+          .pullNotificationSet(
+              requestMode: arg_requestMode, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.NotificationSet response) {
         checkNotificationSet(response);
       })));
@@ -3577,6 +3621,7 @@
       api.EnterprisesResourceApi res =
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3619,6 +3664,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3627,8 +3673,9 @@
             .encode(buildEnterprisesSendTestPushNotificationResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.sendTestPushNotification(arg_enterpriseId).then(unittest.expectAsync1(
-          ((api.EnterprisesSendTestPushNotificationResponse response) {
+      res.sendTestPushNotification(arg_enterpriseId, $fields: arg_$fields).then(
+          unittest.expectAsync1(
+              ((api.EnterprisesSendTestPushNotificationResponse response) {
         checkEnterprisesSendTestPushNotificationResponse(response);
       })));
     });
@@ -3639,6 +3686,7 @@
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_request = buildEnterpriseAccount();
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EnterpriseAccount.fromJson(json);
         checkEnterpriseAccount(obj);
@@ -3684,6 +3732,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3692,7 +3741,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setAccount(arg_request, arg_enterpriseId)
+          .setAccount(arg_request, arg_enterpriseId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EnterpriseAccount response) {
         checkEnterpriseAccount(response);
       })));
@@ -3704,6 +3753,7 @@
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_request = buildAndroidDevicePolicyConfig();
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AndroidDevicePolicyConfig.fromJson(json);
         checkAndroidDevicePolicyConfig(obj);
@@ -3749,6 +3799,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3756,8 +3807,11 @@
         var resp = convert.JSON.encode(buildAndroidDevicePolicyConfig());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.setAndroidDevicePolicyConfig(arg_request, arg_enterpriseId).then(
-          unittest.expectAsync1(((api.AndroidDevicePolicyConfig response) {
+      res
+          .setAndroidDevicePolicyConfig(arg_request, arg_enterpriseId,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.AndroidDevicePolicyConfig response) {
         checkAndroidDevicePolicyConfig(response);
       })));
     });
@@ -3768,6 +3822,7 @@
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_request = buildStoreLayout();
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StoreLayout.fromJson(json);
         checkStoreLayout(obj);
@@ -3813,6 +3868,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3821,7 +3877,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setStoreLayout(arg_request, arg_enterpriseId)
+          .setStoreLayout(arg_request, arg_enterpriseId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StoreLayout response) {
         checkStoreLayout(response);
       })));
@@ -3832,6 +3888,7 @@
       api.EnterprisesResourceApi res =
           new api.AndroidenterpriseApi(mock).enterprises;
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3874,6 +3931,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3881,7 +3939,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.unenroll(arg_enterpriseId).then(unittest.expectAsync1((_) {}));
+      res
+          .unenroll(arg_enterpriseId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
   });
 
@@ -3893,6 +3953,7 @@
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
       var arg_entitlementId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3947,6 +4008,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3955,7 +4017,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_enterpriseId, arg_userId, arg_entitlementId)
+          .delete(arg_enterpriseId, arg_userId, arg_entitlementId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -3966,6 +4029,7 @@
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
       var arg_entitlementId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4020,6 +4084,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4028,7 +4093,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_enterpriseId, arg_userId, arg_entitlementId)
+          .get(arg_enterpriseId, arg_userId, arg_entitlementId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Entitlement response) {
         checkEntitlement(response);
       })));
@@ -4040,6 +4106,7 @@
           new api.AndroidenterpriseApi(mock).entitlements;
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4091,6 +4158,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4099,7 +4167,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_enterpriseId, arg_userId)
+          .list(arg_enterpriseId, arg_userId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntitlementsListResponse response) {
         checkEntitlementsListResponse(response);
       })));
@@ -4114,6 +4182,7 @@
       var arg_userId = "foo";
       var arg_entitlementId = "foo";
       var arg_install = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Entitlement.fromJson(json);
         checkEntitlement(obj);
@@ -4173,6 +4242,7 @@
         }
         unittest.expect(
             queryMap["install"].first, unittest.equals("$arg_install"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4182,7 +4252,7 @@
       }), true);
       res
           .patch(arg_request, arg_enterpriseId, arg_userId, arg_entitlementId,
-              install: arg_install)
+              install: arg_install, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Entitlement response) {
         checkEntitlement(response);
       })));
@@ -4197,6 +4267,7 @@
       var arg_userId = "foo";
       var arg_entitlementId = "foo";
       var arg_install = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Entitlement.fromJson(json);
         checkEntitlement(obj);
@@ -4256,6 +4327,7 @@
         }
         unittest.expect(
             queryMap["install"].first, unittest.equals("$arg_install"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4265,7 +4337,7 @@
       }), true);
       res
           .update(arg_request, arg_enterpriseId, arg_userId, arg_entitlementId,
-              install: arg_install)
+              install: arg_install, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Entitlement response) {
         checkEntitlement(response);
       })));
@@ -4279,6 +4351,7 @@
           new api.AndroidenterpriseApi(mock).grouplicenses;
       var arg_enterpriseId = "foo";
       var arg_groupLicenseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4324,6 +4397,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4332,7 +4406,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_enterpriseId, arg_groupLicenseId)
+          .get(arg_enterpriseId, arg_groupLicenseId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GroupLicense response) {
         checkGroupLicense(response);
       })));
@@ -4343,6 +4417,7 @@
       api.GrouplicensesResourceApi res =
           new api.AndroidenterpriseApi(mock).grouplicenses;
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4385,6 +4460,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4392,7 +4468,7 @@
         var resp = convert.JSON.encode(buildGroupLicensesListResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(arg_enterpriseId).then(
+      res.list(arg_enterpriseId, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.GroupLicensesListResponse response) {
         checkGroupLicensesListResponse(response);
       })));
@@ -4406,6 +4482,7 @@
           new api.AndroidenterpriseApi(mock).grouplicenseusers;
       var arg_enterpriseId = "foo";
       var arg_groupLicenseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4457,6 +4534,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4464,7 +4542,7 @@
         var resp = convert.JSON.encode(buildGroupLicenseUsersListResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(arg_enterpriseId, arg_groupLicenseId).then(
+      res.list(arg_enterpriseId, arg_groupLicenseId, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.GroupLicenseUsersListResponse response) {
         checkGroupLicenseUsersListResponse(response);
       })));
@@ -4479,6 +4557,7 @@
       var arg_userId = "foo";
       var arg_deviceId = "foo";
       var arg_installId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4542,6 +4621,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4550,7 +4630,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_enterpriseId, arg_userId, arg_deviceId, arg_installId)
+          .delete(arg_enterpriseId, arg_userId, arg_deviceId, arg_installId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -4561,6 +4642,7 @@
       var arg_userId = "foo";
       var arg_deviceId = "foo";
       var arg_installId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4624,6 +4706,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4632,7 +4715,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_enterpriseId, arg_userId, arg_deviceId, arg_installId)
+          .get(arg_enterpriseId, arg_userId, arg_deviceId, arg_installId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Install response) {
         checkInstall(response);
       })));
@@ -4644,6 +4728,7 @@
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
       var arg_deviceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4704,6 +4789,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4712,7 +4798,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_enterpriseId, arg_userId, arg_deviceId)
+          .list(arg_enterpriseId, arg_userId, arg_deviceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstallsListResponse response) {
         checkInstallsListResponse(response);
       })));
@@ -4726,6 +4813,7 @@
       var arg_userId = "foo";
       var arg_deviceId = "foo";
       var arg_installId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Install.fromJson(json);
         checkInstall(obj);
@@ -4792,6 +4880,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4801,7 +4890,8 @@
       }), true);
       res
           .patch(arg_request, arg_enterpriseId, arg_userId, arg_deviceId,
-              arg_installId)
+              arg_installId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Install response) {
         checkInstall(response);
       })));
@@ -4815,6 +4905,7 @@
       var arg_userId = "foo";
       var arg_deviceId = "foo";
       var arg_installId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Install.fromJson(json);
         checkInstall(obj);
@@ -4881,6 +4972,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4890,7 +4982,8 @@
       }), true);
       res
           .update(arg_request, arg_enterpriseId, arg_userId, arg_deviceId,
-              arg_installId)
+              arg_installId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Install response) {
         checkInstall(response);
       })));
@@ -4906,6 +4999,7 @@
       var arg_userId = "foo";
       var arg_deviceId = "foo";
       var arg_managedConfigurationForDeviceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4970,6 +5064,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4979,7 +5074,8 @@
       }), true);
       res
           .delete(arg_enterpriseId, arg_userId, arg_deviceId,
-              arg_managedConfigurationForDeviceId)
+              arg_managedConfigurationForDeviceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -4991,6 +5087,7 @@
       var arg_userId = "foo";
       var arg_deviceId = "foo";
       var arg_managedConfigurationForDeviceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5055,6 +5152,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5064,7 +5162,8 @@
       }), true);
       res
           .get(arg_enterpriseId, arg_userId, arg_deviceId,
-              arg_managedConfigurationForDeviceId)
+              arg_managedConfigurationForDeviceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ManagedConfiguration response) {
         checkManagedConfiguration(response);
       })));
@@ -5077,6 +5176,7 @@
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
       var arg_deviceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5137,6 +5237,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5145,8 +5246,10 @@
             .encode(buildManagedConfigurationsForDeviceListResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(arg_enterpriseId, arg_userId, arg_deviceId).then(unittest
-          .expectAsync1(
+      res
+          .list(arg_enterpriseId, arg_userId, arg_deviceId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
               ((api.ManagedConfigurationsForDeviceListResponse response) {
         checkManagedConfigurationsForDeviceListResponse(response);
       })));
@@ -5161,6 +5264,7 @@
       var arg_userId = "foo";
       var arg_deviceId = "foo";
       var arg_managedConfigurationForDeviceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ManagedConfiguration.fromJson(json);
         checkManagedConfiguration(obj);
@@ -5228,6 +5332,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5237,7 +5342,8 @@
       }), true);
       res
           .patch(arg_request, arg_enterpriseId, arg_userId, arg_deviceId,
-              arg_managedConfigurationForDeviceId)
+              arg_managedConfigurationForDeviceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ManagedConfiguration response) {
         checkManagedConfiguration(response);
       })));
@@ -5252,6 +5358,7 @@
       var arg_userId = "foo";
       var arg_deviceId = "foo";
       var arg_managedConfigurationForDeviceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ManagedConfiguration.fromJson(json);
         checkManagedConfiguration(obj);
@@ -5319,6 +5426,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5328,7 +5436,8 @@
       }), true);
       res
           .update(arg_request, arg_enterpriseId, arg_userId, arg_deviceId,
-              arg_managedConfigurationForDeviceId)
+              arg_managedConfigurationForDeviceId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ManagedConfiguration response) {
         checkManagedConfiguration(response);
       })));
@@ -5343,6 +5452,7 @@
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
       var arg_managedConfigurationForUserId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5398,6 +5508,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5407,7 +5518,8 @@
       }), true);
       res
           .delete(
-              arg_enterpriseId, arg_userId, arg_managedConfigurationForUserId)
+              arg_enterpriseId, arg_userId, arg_managedConfigurationForUserId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -5418,6 +5530,7 @@
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
       var arg_managedConfigurationForUserId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5473,6 +5586,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5481,7 +5595,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_enterpriseId, arg_userId, arg_managedConfigurationForUserId)
+          .get(arg_enterpriseId, arg_userId, arg_managedConfigurationForUserId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ManagedConfiguration response) {
         checkManagedConfiguration(response);
       })));
@@ -5493,6 +5608,7 @@
           new api.AndroidenterpriseApi(mock).managedconfigurationsforuser;
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5544,6 +5660,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5552,8 +5669,9 @@
             .encode(buildManagedConfigurationsForUserListResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(arg_enterpriseId, arg_userId).then(unittest.expectAsync1(
-          ((api.ManagedConfigurationsForUserListResponse response) {
+      res.list(arg_enterpriseId, arg_userId, $fields: arg_$fields).then(unittest
+          .expectAsync1(
+              ((api.ManagedConfigurationsForUserListResponse response) {
         checkManagedConfigurationsForUserListResponse(response);
       })));
     });
@@ -5566,6 +5684,7 @@
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
       var arg_managedConfigurationForUserId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ManagedConfiguration.fromJson(json);
         checkManagedConfiguration(obj);
@@ -5624,6 +5743,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5633,7 +5753,8 @@
       }), true);
       res
           .patch(arg_request, arg_enterpriseId, arg_userId,
-              arg_managedConfigurationForUserId)
+              arg_managedConfigurationForUserId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ManagedConfiguration response) {
         checkManagedConfiguration(response);
       })));
@@ -5647,6 +5768,7 @@
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
       var arg_managedConfigurationForUserId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ManagedConfiguration.fromJson(json);
         checkManagedConfiguration(obj);
@@ -5705,6 +5827,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5714,7 +5837,8 @@
       }), true);
       res
           .update(arg_request, arg_enterpriseId, arg_userId,
-              arg_managedConfigurationForUserId)
+              arg_managedConfigurationForUserId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ManagedConfiguration response) {
         checkManagedConfiguration(response);
       })));
@@ -5728,6 +5852,7 @@
           new api.AndroidenterpriseApi(mock).permissions;
       var arg_permissionId = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5766,6 +5891,7 @@
         }
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5774,7 +5900,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_permissionId, language: arg_language)
+          .get(arg_permissionId, language: arg_language, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Permission response) {
         checkPermission(response);
       })));
@@ -5788,6 +5914,7 @@
       var arg_request = buildProductsApproveRequest();
       var arg_enterpriseId = "foo";
       var arg_productId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ProductsApproveRequest.fromJson(json);
         checkProductsApproveRequest(obj);
@@ -5842,6 +5969,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5850,7 +5978,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .approve(arg_request, arg_enterpriseId, arg_productId)
+          .approve(arg_request, arg_enterpriseId, arg_productId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -5860,6 +5989,7 @@
       var arg_enterpriseId = "foo";
       var arg_productId = "foo";
       var arg_languageCode = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5913,6 +6043,7 @@
         }
         unittest.expect(
             queryMap["languageCode"].first, unittest.equals(arg_languageCode));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5923,7 +6054,7 @@
       }), true);
       res
           .generateApprovalUrl(arg_enterpriseId, arg_productId,
-              languageCode: arg_languageCode)
+              languageCode: arg_languageCode, $fields: arg_$fields)
           .then(unittest.expectAsync1(
               ((api.ProductsGenerateApprovalUrlResponse response) {
         checkProductsGenerateApprovalUrlResponse(response);
@@ -5936,6 +6067,7 @@
       var arg_enterpriseId = "foo";
       var arg_productId = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5983,6 +6115,7 @@
         }
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5991,7 +6124,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_enterpriseId, arg_productId, language: arg_language)
+          .get(arg_enterpriseId, arg_productId,
+              language: arg_language, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Product response) {
         checkProduct(response);
       })));
@@ -6003,6 +6137,7 @@
       var arg_enterpriseId = "foo";
       var arg_productId = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6056,6 +6191,7 @@
         }
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6065,7 +6201,7 @@
       }), true);
       res
           .getAppRestrictionsSchema(arg_enterpriseId, arg_productId,
-              language: arg_language)
+              language: arg_language, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AppRestrictionsSchema response) {
         checkAppRestrictionsSchema(response);
       })));
@@ -6076,6 +6212,7 @@
       api.ProductsResourceApi res = new api.AndroidenterpriseApi(mock).products;
       var arg_enterpriseId = "foo";
       var arg_productId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6127,6 +6264,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6135,7 +6273,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getPermissions(arg_enterpriseId, arg_productId)
+          .getPermissions(arg_enterpriseId, arg_productId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ProductPermissions response) {
         checkProductPermissions(response);
       })));
@@ -6150,6 +6288,7 @@
       var arg_maxResults = 42;
       var arg_query = "foo";
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6200,6 +6339,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(queryMap["query"].first, unittest.equals(arg_query));
         unittest.expect(queryMap["token"].first, unittest.equals(arg_token));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6213,7 +6353,8 @@
               language: arg_language,
               maxResults: arg_maxResults,
               query: arg_query,
-              token: arg_token)
+              token: arg_token,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ProductsListResponse response) {
         checkProductsListResponse(response);
       })));
@@ -6224,6 +6365,7 @@
       api.ProductsResourceApi res = new api.AndroidenterpriseApi(mock).products;
       var arg_enterpriseId = "foo";
       var arg_productId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6275,6 +6417,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6283,7 +6426,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .unapprove(arg_enterpriseId, arg_productId)
+          .unapprove(arg_enterpriseId, arg_productId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
   });
@@ -6295,6 +6438,7 @@
           new api.AndroidenterpriseApi(mock).serviceaccountkeys;
       var arg_enterpriseId = "foo";
       var arg_keyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6340,6 +6484,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6348,7 +6493,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_enterpriseId, arg_keyId)
+          .delete(arg_enterpriseId, arg_keyId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -6358,6 +6503,7 @@
           new api.AndroidenterpriseApi(mock).serviceaccountkeys;
       var arg_request = buildServiceAccountKey();
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ServiceAccountKey.fromJson(json);
         checkServiceAccountKey(obj);
@@ -6403,6 +6549,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6411,7 +6558,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_enterpriseId)
+          .insert(arg_request, arg_enterpriseId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ServiceAccountKey response) {
         checkServiceAccountKey(response);
       })));
@@ -6422,6 +6569,7 @@
       api.ServiceaccountkeysResourceApi res =
           new api.AndroidenterpriseApi(mock).serviceaccountkeys;
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6464,6 +6612,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6471,7 +6620,7 @@
         var resp = convert.JSON.encode(buildServiceAccountKeysListResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(arg_enterpriseId).then(
+      res.list(arg_enterpriseId, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.ServiceAccountKeysListResponse response) {
         checkServiceAccountKeysListResponse(response);
       })));
@@ -6486,6 +6635,7 @@
       var arg_enterpriseId = "foo";
       var arg_pageId = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6540,6 +6690,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6548,7 +6699,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_enterpriseId, arg_pageId, arg_clusterId)
+          .delete(arg_enterpriseId, arg_pageId, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -6559,6 +6711,7 @@
       var arg_enterpriseId = "foo";
       var arg_pageId = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6613,6 +6766,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6621,7 +6775,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_enterpriseId, arg_pageId, arg_clusterId)
+          .get(arg_enterpriseId, arg_pageId, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StoreCluster response) {
         checkStoreCluster(response);
       })));
@@ -6634,6 +6789,7 @@
       var arg_request = buildStoreCluster();
       var arg_enterpriseId = "foo";
       var arg_pageId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StoreCluster.fromJson(json);
         checkStoreCluster(obj);
@@ -6688,6 +6844,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6696,7 +6853,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_enterpriseId, arg_pageId)
+          .insert(arg_request, arg_enterpriseId, arg_pageId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StoreCluster response) {
         checkStoreCluster(response);
       })));
@@ -6708,6 +6866,7 @@
           new api.AndroidenterpriseApi(mock).storelayoutclusters;
       var arg_enterpriseId = "foo";
       var arg_pageId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6759,6 +6918,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6766,7 +6926,7 @@
         var resp = convert.JSON.encode(buildStoreLayoutClustersListResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(arg_enterpriseId, arg_pageId).then(unittest
+      res.list(arg_enterpriseId, arg_pageId, $fields: arg_$fields).then(unittest
           .expectAsync1(((api.StoreLayoutClustersListResponse response) {
         checkStoreLayoutClustersListResponse(response);
       })));
@@ -6780,6 +6940,7 @@
       var arg_enterpriseId = "foo";
       var arg_pageId = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StoreCluster.fromJson(json);
         checkStoreCluster(obj);
@@ -6837,6 +6998,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6845,7 +7007,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_enterpriseId, arg_pageId, arg_clusterId)
+          .patch(arg_request, arg_enterpriseId, arg_pageId, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StoreCluster response) {
         checkStoreCluster(response);
       })));
@@ -6859,6 +7022,7 @@
       var arg_enterpriseId = "foo";
       var arg_pageId = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StoreCluster.fromJson(json);
         checkStoreCluster(obj);
@@ -6916,6 +7080,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6924,7 +7089,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_enterpriseId, arg_pageId, arg_clusterId)
+          .update(arg_request, arg_enterpriseId, arg_pageId, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StoreCluster response) {
         checkStoreCluster(response);
       })));
@@ -6938,6 +7104,7 @@
           new api.AndroidenterpriseApi(mock).storelayoutpages;
       var arg_enterpriseId = "foo";
       var arg_pageId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6983,6 +7150,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6991,7 +7159,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_enterpriseId, arg_pageId)
+          .delete(arg_enterpriseId, arg_pageId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -7001,6 +7169,7 @@
           new api.AndroidenterpriseApi(mock).storelayoutpages;
       var arg_enterpriseId = "foo";
       var arg_pageId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7046,6 +7215,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7054,7 +7224,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_enterpriseId, arg_pageId)
+          .get(arg_enterpriseId, arg_pageId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StorePage response) {
         checkStorePage(response);
       })));
@@ -7066,6 +7236,7 @@
           new api.AndroidenterpriseApi(mock).storelayoutpages;
       var arg_request = buildStorePage();
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StorePage.fromJson(json);
         checkStorePage(obj);
@@ -7111,6 +7282,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7119,7 +7291,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_enterpriseId)
+          .insert(arg_request, arg_enterpriseId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StorePage response) {
         checkStorePage(response);
       })));
@@ -7130,6 +7302,7 @@
       api.StorelayoutpagesResourceApi res =
           new api.AndroidenterpriseApi(mock).storelayoutpages;
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7172,6 +7345,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7179,7 +7353,7 @@
         var resp = convert.JSON.encode(buildStoreLayoutPagesListResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(arg_enterpriseId).then(
+      res.list(arg_enterpriseId, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.StoreLayoutPagesListResponse response) {
         checkStoreLayoutPagesListResponse(response);
       })));
@@ -7192,6 +7366,7 @@
       var arg_request = buildStorePage();
       var arg_enterpriseId = "foo";
       var arg_pageId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StorePage.fromJson(json);
         checkStorePage(obj);
@@ -7240,6 +7415,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7248,7 +7424,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_enterpriseId, arg_pageId)
+          .patch(arg_request, arg_enterpriseId, arg_pageId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StorePage response) {
         checkStorePage(response);
       })));
@@ -7261,6 +7438,7 @@
       var arg_request = buildStorePage();
       var arg_enterpriseId = "foo";
       var arg_pageId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StorePage.fromJson(json);
         checkStorePage(obj);
@@ -7309,6 +7487,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7317,7 +7496,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_enterpriseId, arg_pageId)
+          .update(arg_request, arg_enterpriseId, arg_pageId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StorePage response) {
         checkStorePage(response);
       })));
@@ -7330,6 +7510,7 @@
       api.UsersResourceApi res = new api.AndroidenterpriseApi(mock).users;
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7375,6 +7556,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7383,7 +7565,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_enterpriseId, arg_userId)
+          .delete(arg_enterpriseId, arg_userId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -7392,6 +7574,7 @@
       api.UsersResourceApi res = new api.AndroidenterpriseApi(mock).users;
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7443,6 +7626,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7451,7 +7635,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .generateAuthenticationToken(arg_enterpriseId, arg_userId)
+          .generateAuthenticationToken(arg_enterpriseId, arg_userId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AuthenticationToken response) {
         checkAuthenticationToken(response);
       })));
@@ -7462,6 +7647,7 @@
       api.UsersResourceApi res = new api.AndroidenterpriseApi(mock).users;
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7513,6 +7699,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7521,7 +7708,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .generateToken(arg_enterpriseId, arg_userId)
+          .generateToken(arg_enterpriseId, arg_userId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UserToken response) {
         checkUserToken(response);
       })));
@@ -7532,6 +7719,7 @@
       api.UsersResourceApi res = new api.AndroidenterpriseApi(mock).users;
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7577,6 +7765,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7585,7 +7774,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_enterpriseId, arg_userId)
+          .get(arg_enterpriseId, arg_userId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.User response) {
         checkUser(response);
       })));
@@ -7596,6 +7785,7 @@
       api.UsersResourceApi res = new api.AndroidenterpriseApi(mock).users;
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7647,6 +7837,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7655,7 +7846,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getAvailableProductSet(arg_enterpriseId, arg_userId)
+          .getAvailableProductSet(arg_enterpriseId, arg_userId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ProductSet response) {
         checkProductSet(response);
       })));
@@ -7666,6 +7858,7 @@
       api.UsersResourceApi res = new api.AndroidenterpriseApi(mock).users;
       var arg_request = buildUser();
       var arg_enterpriseId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.User.fromJson(json);
         checkUser(obj);
@@ -7711,6 +7904,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7719,7 +7913,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_enterpriseId)
+          .insert(arg_request, arg_enterpriseId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.User response) {
         checkUser(response);
       })));
@@ -7730,6 +7924,7 @@
       api.UsersResourceApi res = new api.AndroidenterpriseApi(mock).users;
       var arg_enterpriseId = "foo";
       var arg_email = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7773,6 +7968,7 @@
           }
         }
         unittest.expect(queryMap["email"].first, unittest.equals(arg_email));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7781,7 +7977,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_enterpriseId, arg_email)
+          .list(arg_enterpriseId, arg_email, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UsersListResponse response) {
         checkUsersListResponse(response);
       })));
@@ -7793,6 +7989,7 @@
       var arg_request = buildUser();
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.User.fromJson(json);
         checkUser(obj);
@@ -7841,6 +8038,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7849,7 +8047,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_enterpriseId, arg_userId)
+          .patch(arg_request, arg_enterpriseId, arg_userId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.User response) {
         checkUser(response);
       })));
@@ -7860,6 +8059,7 @@
       api.UsersResourceApi res = new api.AndroidenterpriseApi(mock).users;
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7911,6 +8111,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7919,7 +8120,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .revokeToken(arg_enterpriseId, arg_userId)
+          .revokeToken(arg_enterpriseId, arg_userId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -7929,6 +8130,7 @@
       var arg_request = buildProductSet();
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ProductSet.fromJson(json);
         checkProductSet(obj);
@@ -7983,6 +8185,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7991,7 +8194,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setAvailableProductSet(arg_request, arg_enterpriseId, arg_userId)
+          .setAvailableProductSet(arg_request, arg_enterpriseId, arg_userId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ProductSet response) {
         checkProductSet(response);
       })));
@@ -8003,6 +8207,7 @@
       var arg_request = buildUser();
       var arg_enterpriseId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.User.fromJson(json);
         checkUser(obj);
@@ -8051,6 +8256,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8059,7 +8265,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_enterpriseId, arg_userId)
+          .update(arg_request, arg_enterpriseId, arg_userId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.User response) {
         checkUser(response);
       })));
diff --git a/generated/googleapis/test/androidmanagement/v1_test.dart b/generated/googleapis/test/androidmanagement/v1_test.dart
index 291ec60..19d6ed6 100644
--- a/generated/googleapis/test/androidmanagement/v1_test.dart
+++ b/generated/googleapis/test/androidmanagement/v1_test.dart
@@ -69,27 +69,27 @@
   buildCounterApiLevelCondition--;
 }
 
-buildUnnamed1606() {
+buildUnnamed1598() {
   var o = new core.List<api.ManagedProperty>();
   o.add(buildManagedProperty());
   o.add(buildManagedProperty());
   return o;
 }
 
-checkUnnamed1606(core.List<api.ManagedProperty> o) {
+checkUnnamed1598(core.List<api.ManagedProperty> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkManagedProperty(o[0]);
   checkManagedProperty(o[1]);
 }
 
-buildUnnamed1607() {
+buildUnnamed1599() {
   var o = new core.List<api.ApplicationPermission>();
   o.add(buildApplicationPermission());
   o.add(buildApplicationPermission());
   return o;
 }
 
-checkUnnamed1607(core.List<api.ApplicationPermission> o) {
+checkUnnamed1599(core.List<api.ApplicationPermission> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApplicationPermission(o[0]);
   checkApplicationPermission(o[1]);
@@ -100,9 +100,9 @@
   var o = new api.Application();
   buildCounterApplication++;
   if (buildCounterApplication < 3) {
-    o.managedProperties = buildUnnamed1606();
+    o.managedProperties = buildUnnamed1598();
     o.name = "foo";
-    o.permissions = buildUnnamed1607();
+    o.permissions = buildUnnamed1599();
     o.title = "foo";
   }
   buildCounterApplication--;
@@ -112,9 +112,9 @@
 checkApplication(api.Application o) {
   buildCounterApplication++;
   if (buildCounterApplication < 3) {
-    checkUnnamed1606(o.managedProperties);
+    checkUnnamed1598(o.managedProperties);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1607(o.permissions);
+    checkUnnamed1599(o.permissions);
     unittest.expect(o.title, unittest.equals('foo'));
   }
   buildCounterApplication--;
@@ -143,7 +143,7 @@
   buildCounterApplicationPermission--;
 }
 
-buildUnnamed1608() {
+buildUnnamed1600() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -158,7 +158,7 @@
   return o;
 }
 
-checkUnnamed1608(core.Map<core.String, core.Object> o) {
+checkUnnamed1600(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -172,14 +172,14 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1609() {
+buildUnnamed1601() {
   var o = new core.List<api.PermissionGrant>();
   o.add(buildPermissionGrant());
   o.add(buildPermissionGrant());
   return o;
 }
 
-checkUnnamed1609(core.List<api.PermissionGrant> o) {
+checkUnnamed1601(core.List<api.PermissionGrant> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPermissionGrant(o[0]);
   checkPermissionGrant(o[1]);
@@ -193,9 +193,9 @@
     o.defaultPermissionPolicy = "foo";
     o.installType = "foo";
     o.lockTaskAllowed = true;
-    o.managedConfiguration = buildUnnamed1608();
+    o.managedConfiguration = buildUnnamed1600();
     o.packageName = "foo";
-    o.permissionGrants = buildUnnamed1609();
+    o.permissionGrants = buildUnnamed1601();
   }
   buildCounterApplicationPolicy--;
   return o;
@@ -207,21 +207,21 @@
     unittest.expect(o.defaultPermissionPolicy, unittest.equals('foo'));
     unittest.expect(o.installType, unittest.equals('foo'));
     unittest.expect(o.lockTaskAllowed, unittest.isTrue);
-    checkUnnamed1608(o.managedConfiguration);
+    checkUnnamed1600(o.managedConfiguration);
     unittest.expect(o.packageName, unittest.equals('foo'));
-    checkUnnamed1609(o.permissionGrants);
+    checkUnnamed1601(o.permissionGrants);
   }
   buildCounterApplicationPolicy--;
 }
 
-buildUnnamed1610() {
+buildUnnamed1602() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1610(core.List<core.String> o) {
+checkUnnamed1602(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -235,7 +235,7 @@
     o.createTime = "foo";
     o.duration = "foo";
     o.newPassword = "foo";
-    o.resetPasswordFlags = buildUnnamed1610();
+    o.resetPasswordFlags = buildUnnamed1602();
     o.type = "foo";
   }
   buildCounterCommand--;
@@ -248,7 +248,7 @@
     unittest.expect(o.createTime, unittest.equals('foo'));
     unittest.expect(o.duration, unittest.equals('foo'));
     unittest.expect(o.newPassword, unittest.equals('foo'));
-    checkUnnamed1610(o.resetPasswordFlags);
+    checkUnnamed1602(o.resetPasswordFlags);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterCommand--;
@@ -277,79 +277,79 @@
   buildCounterComplianceRule--;
 }
 
-buildUnnamed1611() {
+buildUnnamed1603() {
   var o = new core.List<api.Display>();
   o.add(buildDisplay());
   o.add(buildDisplay());
   return o;
 }
 
-checkUnnamed1611(core.List<api.Display> o) {
+checkUnnamed1603(core.List<api.Display> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDisplay(o[0]);
   checkDisplay(o[1]);
 }
 
-buildUnnamed1612() {
+buildUnnamed1604() {
   var o = new core.List<api.HardwareStatus>();
   o.add(buildHardwareStatus());
   o.add(buildHardwareStatus());
   return o;
 }
 
-checkUnnamed1612(core.List<api.HardwareStatus> o) {
+checkUnnamed1604(core.List<api.HardwareStatus> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHardwareStatus(o[0]);
   checkHardwareStatus(o[1]);
 }
 
-buildUnnamed1613() {
+buildUnnamed1605() {
   var o = new core.List<api.MemoryEvent>();
   o.add(buildMemoryEvent());
   o.add(buildMemoryEvent());
   return o;
 }
 
-checkUnnamed1613(core.List<api.MemoryEvent> o) {
+checkUnnamed1605(core.List<api.MemoryEvent> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMemoryEvent(o[0]);
   checkMemoryEvent(o[1]);
 }
 
-buildUnnamed1614() {
+buildUnnamed1606() {
   var o = new core.List<api.NonComplianceDetail>();
   o.add(buildNonComplianceDetail());
   o.add(buildNonComplianceDetail());
   return o;
 }
 
-checkUnnamed1614(core.List<api.NonComplianceDetail> o) {
+checkUnnamed1606(core.List<api.NonComplianceDetail> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkNonComplianceDetail(o[0]);
   checkNonComplianceDetail(o[1]);
 }
 
-buildUnnamed1615() {
+buildUnnamed1607() {
   var o = new core.List<api.PowerManagementEvent>();
   o.add(buildPowerManagementEvent());
   o.add(buildPowerManagementEvent());
   return o;
 }
 
-checkUnnamed1615(core.List<api.PowerManagementEvent> o) {
+checkUnnamed1607(core.List<api.PowerManagementEvent> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPowerManagementEvent(o[0]);
   checkPowerManagementEvent(o[1]);
 }
 
-buildUnnamed1616() {
+buildUnnamed1608() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1616(core.List<core.String> o) {
+checkUnnamed1608(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -365,24 +365,24 @@
     o.appliedPolicyVersion = "foo";
     o.appliedState = "foo";
     o.disabledReason = buildUserFacingMessage();
-    o.displays = buildUnnamed1611();
+    o.displays = buildUnnamed1603();
     o.enrollmentTime = "foo";
     o.enrollmentTokenData = "foo";
     o.enrollmentTokenName = "foo";
     o.hardwareInfo = buildHardwareInfo();
-    o.hardwareStatusSamples = buildUnnamed1612();
+    o.hardwareStatusSamples = buildUnnamed1604();
     o.lastPolicyComplianceReportTime = "foo";
     o.lastPolicySyncTime = "foo";
     o.lastStatusReportTime = "foo";
-    o.memoryEvents = buildUnnamed1613();
+    o.memoryEvents = buildUnnamed1605();
     o.memoryInfo = buildMemoryInfo();
     o.name = "foo";
     o.networkInfo = buildNetworkInfo();
-    o.nonComplianceDetails = buildUnnamed1614();
+    o.nonComplianceDetails = buildUnnamed1606();
     o.policyCompliant = true;
     o.policyName = "foo";
-    o.powerManagementEvents = buildUnnamed1615();
-    o.previousDeviceNames = buildUnnamed1616();
+    o.powerManagementEvents = buildUnnamed1607();
+    o.previousDeviceNames = buildUnnamed1608();
     o.softwareInfo = buildSoftwareInfo();
     o.state = "foo";
     o.userName = "foo";
@@ -399,24 +399,24 @@
     unittest.expect(o.appliedPolicyVersion, unittest.equals('foo'));
     unittest.expect(o.appliedState, unittest.equals('foo'));
     checkUserFacingMessage(o.disabledReason);
-    checkUnnamed1611(o.displays);
+    checkUnnamed1603(o.displays);
     unittest.expect(o.enrollmentTime, unittest.equals('foo'));
     unittest.expect(o.enrollmentTokenData, unittest.equals('foo'));
     unittest.expect(o.enrollmentTokenName, unittest.equals('foo'));
     checkHardwareInfo(o.hardwareInfo);
-    checkUnnamed1612(o.hardwareStatusSamples);
+    checkUnnamed1604(o.hardwareStatusSamples);
     unittest.expect(o.lastPolicyComplianceReportTime, unittest.equals('foo'));
     unittest.expect(o.lastPolicySyncTime, unittest.equals('foo'));
     unittest.expect(o.lastStatusReportTime, unittest.equals('foo'));
-    checkUnnamed1613(o.memoryEvents);
+    checkUnnamed1605(o.memoryEvents);
     checkMemoryInfo(o.memoryInfo);
     unittest.expect(o.name, unittest.equals('foo'));
     checkNetworkInfo(o.networkInfo);
-    checkUnnamed1614(o.nonComplianceDetails);
+    checkUnnamed1606(o.nonComplianceDetails);
     unittest.expect(o.policyCompliant, unittest.isTrue);
     unittest.expect(o.policyName, unittest.equals('foo'));
-    checkUnnamed1615(o.powerManagementEvents);
-    checkUnnamed1616(o.previousDeviceNames);
+    checkUnnamed1607(o.powerManagementEvents);
+    checkUnnamed1608(o.previousDeviceNames);
     checkSoftwareInfo(o.softwareInfo);
     unittest.expect(o.state, unittest.equals('foo'));
     unittest.expect(o.userName, unittest.equals('foo'));
@@ -501,14 +501,14 @@
   buildCounterEnrollmentToken--;
 }
 
-buildUnnamed1617() {
+buildUnnamed1609() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1617(core.List<core.String> o) {
+checkUnnamed1609(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -520,7 +520,7 @@
   buildCounterEnterprise++;
   if (buildCounterEnterprise < 3) {
     o.appAutoApprovalEnabled = true;
-    o.enabledNotificationTypes = buildUnnamed1617();
+    o.enabledNotificationTypes = buildUnnamed1609();
     o.enterpriseDisplayName = "foo";
     o.logo = buildExternalData();
     o.name = "foo";
@@ -535,7 +535,7 @@
   buildCounterEnterprise++;
   if (buildCounterEnterprise < 3) {
     unittest.expect(o.appAutoApprovalEnabled, unittest.isTrue);
-    checkUnnamed1617(o.enabledNotificationTypes);
+    checkUnnamed1609(o.enabledNotificationTypes);
     unittest.expect(o.enterpriseDisplayName, unittest.equals('foo'));
     checkExternalData(o.logo);
     unittest.expect(o.name, unittest.equals('foo'));
@@ -566,6 +566,155 @@
   buildCounterExternalData--;
 }
 
+buildUnnamed1610() {
+  var o = new core.List<core.double>();
+  o.add(42.0);
+  o.add(42.0);
+  return o;
+}
+
+checkUnnamed1610(core.List<core.double> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42.0));
+  unittest.expect(o[1], unittest.equals(42.0));
+}
+
+buildUnnamed1611() {
+  var o = new core.List<core.double>();
+  o.add(42.0);
+  o.add(42.0);
+  return o;
+}
+
+checkUnnamed1611(core.List<core.double> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42.0));
+  unittest.expect(o[1], unittest.equals(42.0));
+}
+
+buildUnnamed1612() {
+  var o = new core.List<core.double>();
+  o.add(42.0);
+  o.add(42.0);
+  return o;
+}
+
+checkUnnamed1612(core.List<core.double> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42.0));
+  unittest.expect(o[1], unittest.equals(42.0));
+}
+
+buildUnnamed1613() {
+  var o = new core.List<core.double>();
+  o.add(42.0);
+  o.add(42.0);
+  return o;
+}
+
+checkUnnamed1613(core.List<core.double> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42.0));
+  unittest.expect(o[1], unittest.equals(42.0));
+}
+
+buildUnnamed1614() {
+  var o = new core.List<core.double>();
+  o.add(42.0);
+  o.add(42.0);
+  return o;
+}
+
+checkUnnamed1614(core.List<core.double> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42.0));
+  unittest.expect(o[1], unittest.equals(42.0));
+}
+
+buildUnnamed1615() {
+  var o = new core.List<core.double>();
+  o.add(42.0);
+  o.add(42.0);
+  return o;
+}
+
+checkUnnamed1615(core.List<core.double> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42.0));
+  unittest.expect(o[1], unittest.equals(42.0));
+}
+
+buildUnnamed1616() {
+  var o = new core.List<core.double>();
+  o.add(42.0);
+  o.add(42.0);
+  return o;
+}
+
+checkUnnamed1616(core.List<core.double> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42.0));
+  unittest.expect(o[1], unittest.equals(42.0));
+}
+
+buildUnnamed1617() {
+  var o = new core.List<core.double>();
+  o.add(42.0);
+  o.add(42.0);
+  return o;
+}
+
+checkUnnamed1617(core.List<core.double> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42.0));
+  unittest.expect(o[1], unittest.equals(42.0));
+}
+
+core.int buildCounterHardwareInfo = 0;
+buildHardwareInfo() {
+  var o = new api.HardwareInfo();
+  buildCounterHardwareInfo++;
+  if (buildCounterHardwareInfo < 3) {
+    o.batteryShutdownTemperatures = buildUnnamed1610();
+    o.batteryThrottlingTemperatures = buildUnnamed1611();
+    o.brand = "foo";
+    o.cpuShutdownTemperatures = buildUnnamed1612();
+    o.cpuThrottlingTemperatures = buildUnnamed1613();
+    o.deviceBasebandVersion = "foo";
+    o.gpuShutdownTemperatures = buildUnnamed1614();
+    o.gpuThrottlingTemperatures = buildUnnamed1615();
+    o.hardware = "foo";
+    o.manufacturer = "foo";
+    o.model = "foo";
+    o.serialNumber = "foo";
+    o.skinShutdownTemperatures = buildUnnamed1616();
+    o.skinThrottlingTemperatures = buildUnnamed1617();
+  }
+  buildCounterHardwareInfo--;
+  return o;
+}
+
+checkHardwareInfo(api.HardwareInfo o) {
+  buildCounterHardwareInfo++;
+  if (buildCounterHardwareInfo < 3) {
+    checkUnnamed1610(o.batteryShutdownTemperatures);
+    checkUnnamed1611(o.batteryThrottlingTemperatures);
+    unittest.expect(o.brand, unittest.equals('foo'));
+    checkUnnamed1612(o.cpuShutdownTemperatures);
+    checkUnnamed1613(o.cpuThrottlingTemperatures);
+    unittest.expect(o.deviceBasebandVersion, unittest.equals('foo'));
+    checkUnnamed1614(o.gpuShutdownTemperatures);
+    checkUnnamed1615(o.gpuThrottlingTemperatures);
+    unittest.expect(o.hardware, unittest.equals('foo'));
+    unittest.expect(o.manufacturer, unittest.equals('foo'));
+    unittest.expect(o.model, unittest.equals('foo'));
+    unittest.expect(o.serialNumber, unittest.equals('foo'));
+    checkUnnamed1616(o.skinShutdownTemperatures);
+    checkUnnamed1617(o.skinThrottlingTemperatures);
+  }
+  buildCounterHardwareInfo--;
+}
+
 buildUnnamed1618() {
   var o = new core.List<core.double>();
   o.add(42.0);
@@ -644,167 +793,18 @@
   unittest.expect(o[1], unittest.equals(42.0));
 }
 
-buildUnnamed1624() {
-  var o = new core.List<core.double>();
-  o.add(42.0);
-  o.add(42.0);
-  return o;
-}
-
-checkUnnamed1624(core.List<core.double> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals(42.0));
-  unittest.expect(o[1], unittest.equals(42.0));
-}
-
-buildUnnamed1625() {
-  var o = new core.List<core.double>();
-  o.add(42.0);
-  o.add(42.0);
-  return o;
-}
-
-checkUnnamed1625(core.List<core.double> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals(42.0));
-  unittest.expect(o[1], unittest.equals(42.0));
-}
-
-core.int buildCounterHardwareInfo = 0;
-buildHardwareInfo() {
-  var o = new api.HardwareInfo();
-  buildCounterHardwareInfo++;
-  if (buildCounterHardwareInfo < 3) {
-    o.batteryShutdownTemperatures = buildUnnamed1618();
-    o.batteryThrottlingTemperatures = buildUnnamed1619();
-    o.brand = "foo";
-    o.cpuShutdownTemperatures = buildUnnamed1620();
-    o.cpuThrottlingTemperatures = buildUnnamed1621();
-    o.deviceBasebandVersion = "foo";
-    o.gpuShutdownTemperatures = buildUnnamed1622();
-    o.gpuThrottlingTemperatures = buildUnnamed1623();
-    o.hardware = "foo";
-    o.manufacturer = "foo";
-    o.model = "foo";
-    o.serialNumber = "foo";
-    o.skinShutdownTemperatures = buildUnnamed1624();
-    o.skinThrottlingTemperatures = buildUnnamed1625();
-  }
-  buildCounterHardwareInfo--;
-  return o;
-}
-
-checkHardwareInfo(api.HardwareInfo o) {
-  buildCounterHardwareInfo++;
-  if (buildCounterHardwareInfo < 3) {
-    checkUnnamed1618(o.batteryShutdownTemperatures);
-    checkUnnamed1619(o.batteryThrottlingTemperatures);
-    unittest.expect(o.brand, unittest.equals('foo'));
-    checkUnnamed1620(o.cpuShutdownTemperatures);
-    checkUnnamed1621(o.cpuThrottlingTemperatures);
-    unittest.expect(o.deviceBasebandVersion, unittest.equals('foo'));
-    checkUnnamed1622(o.gpuShutdownTemperatures);
-    checkUnnamed1623(o.gpuThrottlingTemperatures);
-    unittest.expect(o.hardware, unittest.equals('foo'));
-    unittest.expect(o.manufacturer, unittest.equals('foo'));
-    unittest.expect(o.model, unittest.equals('foo'));
-    unittest.expect(o.serialNumber, unittest.equals('foo'));
-    checkUnnamed1624(o.skinShutdownTemperatures);
-    checkUnnamed1625(o.skinThrottlingTemperatures);
-  }
-  buildCounterHardwareInfo--;
-}
-
-buildUnnamed1626() {
-  var o = new core.List<core.double>();
-  o.add(42.0);
-  o.add(42.0);
-  return o;
-}
-
-checkUnnamed1626(core.List<core.double> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals(42.0));
-  unittest.expect(o[1], unittest.equals(42.0));
-}
-
-buildUnnamed1627() {
-  var o = new core.List<core.double>();
-  o.add(42.0);
-  o.add(42.0);
-  return o;
-}
-
-checkUnnamed1627(core.List<core.double> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals(42.0));
-  unittest.expect(o[1], unittest.equals(42.0));
-}
-
-buildUnnamed1628() {
-  var o = new core.List<core.double>();
-  o.add(42.0);
-  o.add(42.0);
-  return o;
-}
-
-checkUnnamed1628(core.List<core.double> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals(42.0));
-  unittest.expect(o[1], unittest.equals(42.0));
-}
-
-buildUnnamed1629() {
-  var o = new core.List<core.double>();
-  o.add(42.0);
-  o.add(42.0);
-  return o;
-}
-
-checkUnnamed1629(core.List<core.double> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals(42.0));
-  unittest.expect(o[1], unittest.equals(42.0));
-}
-
-buildUnnamed1630() {
-  var o = new core.List<core.double>();
-  o.add(42.0);
-  o.add(42.0);
-  return o;
-}
-
-checkUnnamed1630(core.List<core.double> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals(42.0));
-  unittest.expect(o[1], unittest.equals(42.0));
-}
-
-buildUnnamed1631() {
-  var o = new core.List<core.double>();
-  o.add(42.0);
-  o.add(42.0);
-  return o;
-}
-
-checkUnnamed1631(core.List<core.double> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals(42.0));
-  unittest.expect(o[1], unittest.equals(42.0));
-}
-
 core.int buildCounterHardwareStatus = 0;
 buildHardwareStatus() {
   var o = new api.HardwareStatus();
   buildCounterHardwareStatus++;
   if (buildCounterHardwareStatus < 3) {
-    o.batteryTemperatures = buildUnnamed1626();
-    o.cpuTemperatures = buildUnnamed1627();
-    o.cpuUsages = buildUnnamed1628();
+    o.batteryTemperatures = buildUnnamed1618();
+    o.cpuTemperatures = buildUnnamed1619();
+    o.cpuUsages = buildUnnamed1620();
     o.createTime = "foo";
-    o.fanSpeeds = buildUnnamed1629();
-    o.gpuTemperatures = buildUnnamed1630();
-    o.skinTemperatures = buildUnnamed1631();
+    o.fanSpeeds = buildUnnamed1621();
+    o.gpuTemperatures = buildUnnamed1622();
+    o.skinTemperatures = buildUnnamed1623();
   }
   buildCounterHardwareStatus--;
   return o;
@@ -813,25 +813,25 @@
 checkHardwareStatus(api.HardwareStatus o) {
   buildCounterHardwareStatus++;
   if (buildCounterHardwareStatus < 3) {
-    checkUnnamed1626(o.batteryTemperatures);
-    checkUnnamed1627(o.cpuTemperatures);
-    checkUnnamed1628(o.cpuUsages);
+    checkUnnamed1618(o.batteryTemperatures);
+    checkUnnamed1619(o.cpuTemperatures);
+    checkUnnamed1620(o.cpuUsages);
     unittest.expect(o.createTime, unittest.equals('foo'));
-    checkUnnamed1629(o.fanSpeeds);
-    checkUnnamed1630(o.gpuTemperatures);
-    checkUnnamed1631(o.skinTemperatures);
+    checkUnnamed1621(o.fanSpeeds);
+    checkUnnamed1622(o.gpuTemperatures);
+    checkUnnamed1623(o.skinTemperatures);
   }
   buildCounterHardwareStatus--;
 }
 
-buildUnnamed1632() {
+buildUnnamed1624() {
   var o = new core.List<api.Device>();
   o.add(buildDevice());
   o.add(buildDevice());
   return o;
 }
 
-checkUnnamed1632(core.List<api.Device> o) {
+checkUnnamed1624(core.List<api.Device> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDevice(o[0]);
   checkDevice(o[1]);
@@ -842,7 +842,7 @@
   var o = new api.ListDevicesResponse();
   buildCounterListDevicesResponse++;
   if (buildCounterListDevicesResponse < 3) {
-    o.devices = buildUnnamed1632();
+    o.devices = buildUnnamed1624();
     o.nextPageToken = "foo";
   }
   buildCounterListDevicesResponse--;
@@ -852,20 +852,20 @@
 checkListDevicesResponse(api.ListDevicesResponse o) {
   buildCounterListDevicesResponse++;
   if (buildCounterListDevicesResponse < 3) {
-    checkUnnamed1632(o.devices);
+    checkUnnamed1624(o.devices);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListDevicesResponse--;
 }
 
-buildUnnamed1633() {
+buildUnnamed1625() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed1633(core.List<api.Operation> o) {
+checkUnnamed1625(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -877,7 +877,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed1633();
+    o.operations = buildUnnamed1625();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -887,19 +887,19 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1633(o.operations);
+    checkUnnamed1625(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
 
-buildUnnamed1634() {
+buildUnnamed1626() {
   var o = new core.List<api.Policy>();
   o.add(buildPolicy());
   o.add(buildPolicy());
   return o;
 }
 
-checkUnnamed1634(core.List<api.Policy> o) {
+checkUnnamed1626(core.List<api.Policy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPolicy(o[0]);
   checkPolicy(o[1]);
@@ -911,7 +911,7 @@
   buildCounterListPoliciesResponse++;
   if (buildCounterListPoliciesResponse < 3) {
     o.nextPageToken = "foo";
-    o.policies = buildUnnamed1634();
+    o.policies = buildUnnamed1626();
   }
   buildCounterListPoliciesResponse--;
   return o;
@@ -921,32 +921,32 @@
   buildCounterListPoliciesResponse++;
   if (buildCounterListPoliciesResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1634(o.policies);
+    checkUnnamed1626(o.policies);
   }
   buildCounterListPoliciesResponse--;
 }
 
-buildUnnamed1635() {
+buildUnnamed1627() {
   var o = new core.List<api.ManagedPropertyEntry>();
   o.add(buildManagedPropertyEntry());
   o.add(buildManagedPropertyEntry());
   return o;
 }
 
-checkUnnamed1635(core.List<api.ManagedPropertyEntry> o) {
+checkUnnamed1627(core.List<api.ManagedPropertyEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkManagedPropertyEntry(o[0]);
   checkManagedPropertyEntry(o[1]);
 }
 
-buildUnnamed1636() {
+buildUnnamed1628() {
   var o = new core.List<api.ManagedProperty>();
   o.add(buildManagedProperty());
   o.add(buildManagedProperty());
   return o;
 }
 
-checkUnnamed1636(core.List<api.ManagedProperty> o) {
+checkUnnamed1628(core.List<api.ManagedProperty> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkManagedProperty(o[0]);
   checkManagedProperty(o[1]);
@@ -963,9 +963,9 @@
       'string': 'foo'
     };
     o.description = "foo";
-    o.entries = buildUnnamed1635();
+    o.entries = buildUnnamed1627();
     o.key = "foo";
-    o.nestedProperties = buildUnnamed1636();
+    o.nestedProperties = buildUnnamed1628();
     o.title = "foo";
     o.type = "foo";
   }
@@ -982,9 +982,9 @@
     unittest.expect(casted3["bool"], unittest.equals(true));
     unittest.expect(casted3["string"], unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed1635(o.entries);
+    checkUnnamed1627(o.entries);
     unittest.expect(o.key, unittest.equals('foo'));
-    checkUnnamed1636(o.nestedProperties);
+    checkUnnamed1628(o.nestedProperties);
     unittest.expect(o.title, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
   }
@@ -1139,7 +1139,7 @@
   buildCounterNonComplianceDetailCondition--;
 }
 
-buildUnnamed1637() {
+buildUnnamed1629() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1154,7 +1154,7 @@
   return o;
 }
 
-checkUnnamed1637(core.Map<core.String, core.Object> o) {
+checkUnnamed1629(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -1168,7 +1168,7 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1638() {
+buildUnnamed1630() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1183,7 +1183,7 @@
   return o;
 }
 
-checkUnnamed1638(core.Map<core.String, core.Object> o) {
+checkUnnamed1630(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted7 = (o["x"]) as core.Map;
   unittest.expect(casted7, unittest.hasLength(3));
@@ -1204,9 +1204,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed1637();
+    o.metadata = buildUnnamed1629();
     o.name = "foo";
-    o.response = buildUnnamed1638();
+    o.response = buildUnnamed1630();
   }
   buildCounterOperation--;
   return o;
@@ -1217,9 +1217,9 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed1637(o.metadata);
+    checkUnnamed1629(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1638(o.response);
+    checkUnnamed1630(o.response);
   }
   buildCounterOperation--;
 }
@@ -1284,27 +1284,27 @@
   buildCounterPermissionGrant--;
 }
 
-buildUnnamed1639() {
+buildUnnamed1631() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1639(core.List<core.String> o) {
+checkUnnamed1631(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1640() {
+buildUnnamed1632() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1640(core.List<core.String> o) {
+checkUnnamed1632(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1315,8 +1315,8 @@
   var o = new api.PersistentPreferredActivity();
   buildCounterPersistentPreferredActivity++;
   if (buildCounterPersistentPreferredActivity < 3) {
-    o.actions = buildUnnamed1639();
-    o.categories = buildUnnamed1640();
+    o.actions = buildUnnamed1631();
+    o.categories = buildUnnamed1632();
     o.receiverActivity = "foo";
   }
   buildCounterPersistentPreferredActivity--;
@@ -1326,53 +1326,53 @@
 checkPersistentPreferredActivity(api.PersistentPreferredActivity o) {
   buildCounterPersistentPreferredActivity++;
   if (buildCounterPersistentPreferredActivity < 3) {
-    checkUnnamed1639(o.actions);
-    checkUnnamed1640(o.categories);
+    checkUnnamed1631(o.actions);
+    checkUnnamed1632(o.categories);
     unittest.expect(o.receiverActivity, unittest.equals('foo'));
   }
   buildCounterPersistentPreferredActivity--;
 }
 
-buildUnnamed1641() {
+buildUnnamed1633() {
   var o = new core.List<api.ApplicationPolicy>();
   o.add(buildApplicationPolicy());
   o.add(buildApplicationPolicy());
   return o;
 }
 
-checkUnnamed1641(core.List<api.ApplicationPolicy> o) {
+checkUnnamed1633(core.List<api.ApplicationPolicy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApplicationPolicy(o[0]);
   checkApplicationPolicy(o[1]);
 }
 
-buildUnnamed1642() {
+buildUnnamed1634() {
   var o = new core.List<api.ComplianceRule>();
   o.add(buildComplianceRule());
   o.add(buildComplianceRule());
   return o;
 }
 
-checkUnnamed1642(core.List<api.ComplianceRule> o) {
+checkUnnamed1634(core.List<api.ComplianceRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkComplianceRule(o[0]);
   checkComplianceRule(o[1]);
 }
 
-buildUnnamed1643() {
+buildUnnamed1635() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1643(core.List<core.String> o) {
+checkUnnamed1635(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1644() {
+buildUnnamed1636() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1387,7 +1387,7 @@
   return o;
 }
 
-checkUnnamed1644(core.Map<core.String, core.Object> o) {
+checkUnnamed1636(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted9 = (o["x"]) as core.Map;
   unittest.expect(casted9, unittest.hasLength(3));
@@ -1401,27 +1401,27 @@
   unittest.expect(casted10["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1645() {
+buildUnnamed1637() {
   var o = new core.List<api.PersistentPreferredActivity>();
   o.add(buildPersistentPreferredActivity());
   o.add(buildPersistentPreferredActivity());
   return o;
 }
 
-checkUnnamed1645(core.List<api.PersistentPreferredActivity> o) {
+checkUnnamed1637(core.List<api.PersistentPreferredActivity> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPersistentPreferredActivity(o[0]);
   checkPersistentPreferredActivity(o[1]);
 }
 
-buildUnnamed1646() {
+buildUnnamed1638() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1646(core.List<core.String> o) {
+checkUnnamed1638(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1434,15 +1434,15 @@
   if (buildCounterPolicy < 3) {
     o.addUserDisabled = true;
     o.adjustVolumeDisabled = true;
-    o.applications = buildUnnamed1641();
+    o.applications = buildUnnamed1633();
     o.autoTimeRequired = true;
     o.blockApplicationsEnabled = true;
     o.cameraDisabled = true;
-    o.complianceRules = buildUnnamed1642();
+    o.complianceRules = buildUnnamed1634();
     o.debuggingFeaturesAllowed = true;
     o.defaultPermissionPolicy = "foo";
     o.factoryResetDisabled = true;
-    o.frpAdminEmails = buildUnnamed1643();
+    o.frpAdminEmails = buildUnnamed1635();
     o.funDisabled = true;
     o.installUnknownSourcesAllowed = true;
     o.keyguardDisabled = true;
@@ -1450,15 +1450,15 @@
     o.modifyAccountsDisabled = true;
     o.name = "foo";
     o.networkEscapeHatchEnabled = true;
-    o.openNetworkConfiguration = buildUnnamed1644();
+    o.openNetworkConfiguration = buildUnnamed1636();
     o.passwordRequirements = buildPasswordRequirements();
-    o.persistentPreferredActivities = buildUnnamed1645();
+    o.persistentPreferredActivities = buildUnnamed1637();
     o.removeUserDisabled = true;
     o.safeBootDisabled = true;
     o.screenCaptureDisabled = true;
     o.statusBarDisabled = true;
     o.statusReportingSettings = buildStatusReportingSettings();
-    o.stayOnPluggedModes = buildUnnamed1646();
+    o.stayOnPluggedModes = buildUnnamed1638();
     o.systemUpdate = buildSystemUpdate();
     o.unmuteMicrophoneDisabled = true;
     o.version = "foo";
@@ -1474,15 +1474,15 @@
   if (buildCounterPolicy < 3) {
     unittest.expect(o.addUserDisabled, unittest.isTrue);
     unittest.expect(o.adjustVolumeDisabled, unittest.isTrue);
-    checkUnnamed1641(o.applications);
+    checkUnnamed1633(o.applications);
     unittest.expect(o.autoTimeRequired, unittest.isTrue);
     unittest.expect(o.blockApplicationsEnabled, unittest.isTrue);
     unittest.expect(o.cameraDisabled, unittest.isTrue);
-    checkUnnamed1642(o.complianceRules);
+    checkUnnamed1634(o.complianceRules);
     unittest.expect(o.debuggingFeaturesAllowed, unittest.isTrue);
     unittest.expect(o.defaultPermissionPolicy, unittest.equals('foo'));
     unittest.expect(o.factoryResetDisabled, unittest.isTrue);
-    checkUnnamed1643(o.frpAdminEmails);
+    checkUnnamed1635(o.frpAdminEmails);
     unittest.expect(o.funDisabled, unittest.isTrue);
     unittest.expect(o.installUnknownSourcesAllowed, unittest.isTrue);
     unittest.expect(o.keyguardDisabled, unittest.isTrue);
@@ -1490,15 +1490,15 @@
     unittest.expect(o.modifyAccountsDisabled, unittest.isTrue);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.networkEscapeHatchEnabled, unittest.isTrue);
-    checkUnnamed1644(o.openNetworkConfiguration);
+    checkUnnamed1636(o.openNetworkConfiguration);
     checkPasswordRequirements(o.passwordRequirements);
-    checkUnnamed1645(o.persistentPreferredActivities);
+    checkUnnamed1637(o.persistentPreferredActivities);
     unittest.expect(o.removeUserDisabled, unittest.isTrue);
     unittest.expect(o.safeBootDisabled, unittest.isTrue);
     unittest.expect(o.screenCaptureDisabled, unittest.isTrue);
     unittest.expect(o.statusBarDisabled, unittest.isTrue);
     checkStatusReportingSettings(o.statusReportingSettings);
-    checkUnnamed1646(o.stayOnPluggedModes);
+    checkUnnamed1638(o.stayOnPluggedModes);
     checkSystemUpdate(o.systemUpdate);
     unittest.expect(o.unmuteMicrophoneDisabled, unittest.isTrue);
     unittest.expect(o.version, unittest.equals('foo'));
@@ -1581,7 +1581,7 @@
   buildCounterSoftwareInfo--;
 }
 
-buildUnnamed1647() {
+buildUnnamed1639() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1596,7 +1596,7 @@
   return o;
 }
 
-checkUnnamed1647(core.Map<core.String, core.Object> o) {
+checkUnnamed1639(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted11 = (o["x"]) as core.Map;
   unittest.expect(casted11, unittest.hasLength(3));
@@ -1610,17 +1610,17 @@
   unittest.expect(casted12["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1648() {
+buildUnnamed1640() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed1647());
-  o.add(buildUnnamed1647());
+  o.add(buildUnnamed1639());
+  o.add(buildUnnamed1639());
   return o;
 }
 
-checkUnnamed1648(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed1640(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1647(o[0]);
-  checkUnnamed1647(o[1]);
+  checkUnnamed1639(o[0]);
+  checkUnnamed1639(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -1629,7 +1629,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed1648();
+    o.details = buildUnnamed1640();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -1640,7 +1640,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed1648(o.details);
+    checkUnnamed1640(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -1698,14 +1698,14 @@
   buildCounterSystemUpdate--;
 }
 
-buildUnnamed1649() {
+buildUnnamed1641() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1649(core.Map<core.String, core.String> o) {
+checkUnnamed1641(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1717,7 +1717,7 @@
   buildCounterUserFacingMessage++;
   if (buildCounterUserFacingMessage < 3) {
     o.defaultMessage = "foo";
-    o.localizedMessages = buildUnnamed1649();
+    o.localizedMessages = buildUnnamed1641();
   }
   buildCounterUserFacingMessage--;
   return o;
@@ -1727,19 +1727,19 @@
   buildCounterUserFacingMessage++;
   if (buildCounterUserFacingMessage < 3) {
     unittest.expect(o.defaultMessage, unittest.equals('foo'));
-    checkUnnamed1649(o.localizedMessages);
+    checkUnnamed1641(o.localizedMessages);
   }
   buildCounterUserFacingMessage--;
 }
 
-buildUnnamed1650() {
+buildUnnamed1642() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1650(core.List<core.String> o) {
+checkUnnamed1642(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1752,7 +1752,7 @@
   if (buildCounterWebToken < 3) {
     o.name = "foo";
     o.parentFrameUrl = "foo";
-    o.permissions = buildUnnamed1650();
+    o.permissions = buildUnnamed1642();
     o.value = "foo";
   }
   buildCounterWebToken--;
@@ -1764,7 +1764,7 @@
   if (buildCounterWebToken < 3) {
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.parentFrameUrl, unittest.equals('foo'));
-    checkUnnamed1650(o.permissions);
+    checkUnnamed1642(o.permissions);
     unittest.expect(o.value, unittest.equals('foo'));
   }
   buildCounterWebToken--;
@@ -2076,6 +2076,7 @@
       var arg_signupUrlName = "foo";
       var arg_enterpriseToken = "foo";
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Enterprise.fromJson(json);
         checkEnterprise(obj);
@@ -2115,6 +2116,7 @@
             unittest.equals(arg_enterpriseToken));
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2126,7 +2128,8 @@
           .create(arg_request,
               signupUrlName: arg_signupUrlName,
               enterpriseToken: arg_enterpriseToken,
-              projectId: arg_projectId)
+              projectId: arg_projectId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Enterprise response) {
         checkEnterprise(response);
       })));
@@ -2137,6 +2140,7 @@
       api.EnterprisesResourceApi res =
           new api.AndroidmanagementApi(mock).enterprises;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2168,6 +2172,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2175,7 +2180,9 @@
         var resp = convert.JSON.encode(buildEnterprise());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Enterprise response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Enterprise response) {
         checkEnterprise(response);
       })));
     });
@@ -2187,6 +2194,7 @@
       var arg_request = buildEnterprise();
       var arg_name = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Enterprise.fromJson(json);
         checkEnterprise(obj);
@@ -2223,6 +2231,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2231,7 +2240,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_name, updateMask: arg_updateMask)
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Enterprise response) {
         checkEnterprise(response);
       })));
@@ -2245,6 +2255,7 @@
           new api.AndroidmanagementApi(mock).enterprises.applications;
       var arg_name = "foo";
       var arg_languageCode = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2278,6 +2289,7 @@
         }
         unittest.expect(
             queryMap["languageCode"].first, unittest.equals(arg_languageCode));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2286,7 +2298,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name, languageCode: arg_languageCode)
+          .get(arg_name, languageCode: arg_languageCode, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Application response) {
         checkApplication(response);
       })));
@@ -2299,6 +2311,7 @@
       api.EnterprisesDevicesResourceApi res =
           new api.AndroidmanagementApi(mock).enterprises.devices;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2330,6 +2343,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2337,7 +2351,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -2347,6 +2363,7 @@
       api.EnterprisesDevicesResourceApi res =
           new api.AndroidmanagementApi(mock).enterprises.devices;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2378,6 +2395,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2385,7 +2403,9 @@
         var resp = convert.JSON.encode(buildDevice());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Device response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Device response) {
         checkDevice(response);
       })));
     });
@@ -2396,6 +2416,7 @@
           new api.AndroidmanagementApi(mock).enterprises.devices;
       var arg_request = buildCommand();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Command.fromJson(json);
         checkCommand(obj);
@@ -2430,6 +2451,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2438,7 +2460,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .issueCommand(arg_request, arg_name)
+          .issueCommand(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2451,6 +2473,7 @@
       var arg_parent = "foo";
       var arg_pageSize = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2486,6 +2509,7 @@
             unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2494,7 +2518,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageSize: arg_pageSize, pageToken: arg_pageToken)
+          .list(arg_parent,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListDevicesResponse response) {
         checkListDevicesResponse(response);
       })));
@@ -2507,6 +2534,7 @@
       var arg_request = buildDevice();
       var arg_name = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Device.fromJson(json);
         checkDevice(obj);
@@ -2543,6 +2571,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2551,7 +2580,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_name, updateMask: arg_updateMask)
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Device response) {
         checkDevice(response);
       })));
@@ -2564,6 +2594,7 @@
       api.EnterprisesDevicesOperationsResourceApi res =
           new api.AndroidmanagementApi(mock).enterprises.devices.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2595,6 +2626,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2602,7 +2634,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.cancel(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .cancel(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -2612,6 +2646,7 @@
       api.EnterprisesDevicesOperationsResourceApi res =
           new api.AndroidmanagementApi(mock).enterprises.devices.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2643,6 +2678,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2650,7 +2686,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -2660,6 +2698,7 @@
       api.EnterprisesDevicesOperationsResourceApi res =
           new api.AndroidmanagementApi(mock).enterprises.devices.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2691,6 +2730,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2698,7 +2738,9 @@
         var resp = convert.JSON.encode(buildOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Operation response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
     });
@@ -2711,6 +2753,7 @@
       var arg_pageSize = 42;
       var arg_filter = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2747,6 +2790,7 @@
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2758,7 +2802,8 @@
           .list(arg_name,
               pageSize: arg_pageSize,
               filter: arg_filter,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
@@ -2772,6 +2817,7 @@
           new api.AndroidmanagementApi(mock).enterprises.enrollmentTokens;
       var arg_request = buildEnrollmentToken();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EnrollmentToken.fromJson(json);
         checkEnrollmentToken(obj);
@@ -2806,6 +2852,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2814,7 +2861,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent)
+          .create(arg_request, arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EnrollmentToken response) {
         checkEnrollmentToken(response);
       })));
@@ -2825,6 +2872,7 @@
       api.EnterprisesEnrollmentTokensResourceApi res =
           new api.AndroidmanagementApi(mock).enterprises.enrollmentTokens;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2856,6 +2904,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2863,7 +2912,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -2875,6 +2926,7 @@
       api.EnterprisesPoliciesResourceApi res =
           new api.AndroidmanagementApi(mock).enterprises.policies;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2906,6 +2958,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2913,7 +2966,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -2923,6 +2978,7 @@
       api.EnterprisesPoliciesResourceApi res =
           new api.AndroidmanagementApi(mock).enterprises.policies;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2954,6 +3010,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2961,7 +3018,9 @@
         var resp = convert.JSON.encode(buildPolicy());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Policy response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
     });
@@ -2973,6 +3032,7 @@
       var arg_parent = "foo";
       var arg_pageSize = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3008,6 +3068,7 @@
             unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3016,7 +3077,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageSize: arg_pageSize, pageToken: arg_pageToken)
+          .list(arg_parent,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListPoliciesResponse response) {
         checkListPoliciesResponse(response);
       })));
@@ -3029,6 +3093,7 @@
       var arg_request = buildPolicy();
       var arg_name = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Policy.fromJson(json);
         checkPolicy(obj);
@@ -3065,6 +3130,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3073,7 +3139,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_name, updateMask: arg_updateMask)
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -3087,6 +3154,7 @@
           new api.AndroidmanagementApi(mock).enterprises.webTokens;
       var arg_request = buildWebToken();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.WebToken.fromJson(json);
         checkWebToken(obj);
@@ -3121,6 +3189,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3129,7 +3198,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent)
+          .create(arg_request, arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.WebToken response) {
         checkWebToken(response);
       })));
@@ -3143,6 +3212,7 @@
           new api.AndroidmanagementApi(mock).signupUrls;
       var arg_callbackUrl = "foo";
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3177,6 +3247,7 @@
             queryMap["callbackUrl"].first, unittest.equals(arg_callbackUrl));
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3185,7 +3256,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(callbackUrl: arg_callbackUrl, projectId: arg_projectId)
+          .create(
+              callbackUrl: arg_callbackUrl,
+              projectId: arg_projectId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SignupUrl response) {
         checkSignupUrl(response);
       })));
diff --git a/generated/googleapis/test/androidpublisher/v2_test.dart b/generated/googleapis/test/androidpublisher/v2_test.dart
index 63971c9..7d891f9 100644
--- a/generated/googleapis/test/androidpublisher/v2_test.dart
+++ b/generated/googleapis/test/androidpublisher/v2_test.dart
@@ -113,14 +113,14 @@
   buildCounterApkListing--;
 }
 
-buildUnnamed2639() {
+buildUnnamed2654() {
   var o = new core.List<api.ApkListing>();
   o.add(buildApkListing());
   o.add(buildApkListing());
   return o;
 }
 
-checkUnnamed2639(core.List<api.ApkListing> o) {
+checkUnnamed2654(core.List<api.ApkListing> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApkListing(o[0]);
   checkApkListing(o[1]);
@@ -132,7 +132,7 @@
   buildCounterApkListingsListResponse++;
   if (buildCounterApkListingsListResponse < 3) {
     o.kind = "foo";
-    o.listings = buildUnnamed2639();
+    o.listings = buildUnnamed2654();
   }
   buildCounterApkListingsListResponse--;
   return o;
@@ -142,7 +142,7 @@
   buildCounterApkListingsListResponse++;
   if (buildCounterApkListingsListResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2639(o.listings);
+    checkUnnamed2654(o.listings);
   }
   buildCounterApkListingsListResponse--;
 }
@@ -185,14 +185,14 @@
   buildCounterApksAddExternallyHostedResponse--;
 }
 
-buildUnnamed2640() {
+buildUnnamed2655() {
   var o = new core.List<api.Apk>();
   o.add(buildApk());
   o.add(buildApk());
   return o;
 }
 
-checkUnnamed2640(core.List<api.Apk> o) {
+checkUnnamed2655(core.List<api.Apk> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApk(o[0]);
   checkApk(o[1]);
@@ -203,7 +203,7 @@
   var o = new api.ApksListResponse();
   buildCounterApksListResponse++;
   if (buildCounterApksListResponse < 3) {
-    o.apks = buildUnnamed2640();
+    o.apks = buildUnnamed2655();
     o.kind = "foo";
   }
   buildCounterApksListResponse--;
@@ -213,7 +213,7 @@
 checkApksListResponse(api.ApksListResponse o) {
   buildCounterApksListResponse++;
   if (buildCounterApksListResponse < 3) {
-    checkUnnamed2640(o.apks);
+    checkUnnamed2655(o.apks);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterApksListResponse--;
@@ -409,14 +409,14 @@
   buildCounterEntitlement--;
 }
 
-buildUnnamed2641() {
+buildUnnamed2656() {
   var o = new core.List<api.Entitlement>();
   o.add(buildEntitlement());
   o.add(buildEntitlement());
   return o;
 }
 
-checkUnnamed2641(core.List<api.Entitlement> o) {
+checkUnnamed2656(core.List<api.Entitlement> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntitlement(o[0]);
   checkEntitlement(o[1]);
@@ -428,7 +428,7 @@
   buildCounterEntitlementsListResponse++;
   if (buildCounterEntitlementsListResponse < 3) {
     o.pageInfo = buildPageInfo();
-    o.resources = buildUnnamed2641();
+    o.resources = buildUnnamed2656();
     o.tokenPagination = buildTokenPagination();
   }
   buildCounterEntitlementsListResponse--;
@@ -439,7 +439,7 @@
   buildCounterEntitlementsListResponse++;
   if (buildCounterEntitlementsListResponse < 3) {
     checkPageInfo(o.pageInfo);
-    checkUnnamed2641(o.resources);
+    checkUnnamed2656(o.resources);
     checkTokenPagination(o.tokenPagination);
   }
   buildCounterEntitlementsListResponse--;
@@ -485,53 +485,53 @@
   buildCounterExpansionFilesUploadResponse--;
 }
 
-buildUnnamed2642() {
+buildUnnamed2657() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2642(core.List<core.String> o) {
+checkUnnamed2657(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2643() {
+buildUnnamed2658() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2643(core.List<core.String> o) {
+checkUnnamed2658(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2644() {
+buildUnnamed2659() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2644(core.List<core.String> o) {
+checkUnnamed2659(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2645() {
+buildUnnamed2660() {
   var o = new core.List<api.ExternallyHostedApkUsesPermission>();
   o.add(buildExternallyHostedApkUsesPermission());
   o.add(buildExternallyHostedApkUsesPermission());
   return o;
 }
 
-checkUnnamed2645(core.List<api.ExternallyHostedApkUsesPermission> o) {
+checkUnnamed2660(core.List<api.ExternallyHostedApkUsesPermission> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkExternallyHostedApkUsesPermission(o[0]);
   checkExternallyHostedApkUsesPermission(o[1]);
@@ -543,7 +543,7 @@
   buildCounterExternallyHostedApk++;
   if (buildCounterExternallyHostedApk < 3) {
     o.applicationLabel = "foo";
-    o.certificateBase64s = buildUnnamed2642();
+    o.certificateBase64s = buildUnnamed2657();
     o.externallyHostedUrl = "foo";
     o.fileSha1Base64 = "foo";
     o.fileSha256Base64 = "foo";
@@ -551,10 +551,10 @@
     o.iconBase64 = "foo";
     o.maximumSdk = 42;
     o.minimumSdk = 42;
-    o.nativeCodes = buildUnnamed2643();
+    o.nativeCodes = buildUnnamed2658();
     o.packageName = "foo";
-    o.usesFeatures = buildUnnamed2644();
-    o.usesPermissions = buildUnnamed2645();
+    o.usesFeatures = buildUnnamed2659();
+    o.usesPermissions = buildUnnamed2660();
     o.versionCode = 42;
     o.versionName = "foo";
   }
@@ -566,7 +566,7 @@
   buildCounterExternallyHostedApk++;
   if (buildCounterExternallyHostedApk < 3) {
     unittest.expect(o.applicationLabel, unittest.equals('foo'));
-    checkUnnamed2642(o.certificateBase64s);
+    checkUnnamed2657(o.certificateBase64s);
     unittest.expect(o.externallyHostedUrl, unittest.equals('foo'));
     unittest.expect(o.fileSha1Base64, unittest.equals('foo'));
     unittest.expect(o.fileSha256Base64, unittest.equals('foo'));
@@ -574,10 +574,10 @@
     unittest.expect(o.iconBase64, unittest.equals('foo'));
     unittest.expect(o.maximumSdk, unittest.equals(42));
     unittest.expect(o.minimumSdk, unittest.equals(42));
-    checkUnnamed2643(o.nativeCodes);
+    checkUnnamed2658(o.nativeCodes);
     unittest.expect(o.packageName, unittest.equals('foo'));
-    checkUnnamed2644(o.usesFeatures);
-    checkUnnamed2645(o.usesPermissions);
+    checkUnnamed2659(o.usesFeatures);
+    checkUnnamed2660(o.usesPermissions);
     unittest.expect(o.versionCode, unittest.equals(42));
     unittest.expect(o.versionName, unittest.equals('foo'));
   }
@@ -629,14 +629,14 @@
   buildCounterImage--;
 }
 
-buildUnnamed2646() {
+buildUnnamed2661() {
   var o = new core.List<api.Image>();
   o.add(buildImage());
   o.add(buildImage());
   return o;
 }
 
-checkUnnamed2646(core.List<api.Image> o) {
+checkUnnamed2661(core.List<api.Image> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkImage(o[0]);
   checkImage(o[1]);
@@ -647,7 +647,7 @@
   var o = new api.ImagesDeleteAllResponse();
   buildCounterImagesDeleteAllResponse++;
   if (buildCounterImagesDeleteAllResponse < 3) {
-    o.deleted = buildUnnamed2646();
+    o.deleted = buildUnnamed2661();
   }
   buildCounterImagesDeleteAllResponse--;
   return o;
@@ -656,19 +656,19 @@
 checkImagesDeleteAllResponse(api.ImagesDeleteAllResponse o) {
   buildCounterImagesDeleteAllResponse++;
   if (buildCounterImagesDeleteAllResponse < 3) {
-    checkUnnamed2646(o.deleted);
+    checkUnnamed2661(o.deleted);
   }
   buildCounterImagesDeleteAllResponse--;
 }
 
-buildUnnamed2647() {
+buildUnnamed2662() {
   var o = new core.List<api.Image>();
   o.add(buildImage());
   o.add(buildImage());
   return o;
 }
 
-checkUnnamed2647(core.List<api.Image> o) {
+checkUnnamed2662(core.List<api.Image> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkImage(o[0]);
   checkImage(o[1]);
@@ -679,7 +679,7 @@
   var o = new api.ImagesListResponse();
   buildCounterImagesListResponse++;
   if (buildCounterImagesListResponse < 3) {
-    o.images = buildUnnamed2647();
+    o.images = buildUnnamed2662();
   }
   buildCounterImagesListResponse--;
   return o;
@@ -688,7 +688,7 @@
 checkImagesListResponse(api.ImagesListResponse o) {
   buildCounterImagesListResponse++;
   if (buildCounterImagesListResponse < 3) {
-    checkUnnamed2647(o.images);
+    checkUnnamed2662(o.images);
   }
   buildCounterImagesListResponse--;
 }
@@ -712,27 +712,27 @@
   buildCounterImagesUploadResponse--;
 }
 
-buildUnnamed2648() {
+buildUnnamed2663() {
   var o = new core.Map<core.String, api.InAppProductListing>();
   o["x"] = buildInAppProductListing();
   o["y"] = buildInAppProductListing();
   return o;
 }
 
-checkUnnamed2648(core.Map<core.String, api.InAppProductListing> o) {
+checkUnnamed2663(core.Map<core.String, api.InAppProductListing> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInAppProductListing(o["x"]);
   checkInAppProductListing(o["y"]);
 }
 
-buildUnnamed2649() {
+buildUnnamed2664() {
   var o = new core.Map<core.String, api.Price>();
   o["x"] = buildPrice();
   o["y"] = buildPrice();
   return o;
 }
 
-checkUnnamed2649(core.Map<core.String, api.Price> o) {
+checkUnnamed2664(core.Map<core.String, api.Price> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPrice(o["x"]);
   checkPrice(o["y"]);
@@ -745,9 +745,9 @@
   if (buildCounterInAppProduct < 3) {
     o.defaultLanguage = "foo";
     o.defaultPrice = buildPrice();
-    o.listings = buildUnnamed2648();
+    o.listings = buildUnnamed2663();
     o.packageName = "foo";
-    o.prices = buildUnnamed2649();
+    o.prices = buildUnnamed2664();
     o.purchaseType = "foo";
     o.season = buildSeason();
     o.sku = "foo";
@@ -764,9 +764,9 @@
   if (buildCounterInAppProduct < 3) {
     unittest.expect(o.defaultLanguage, unittest.equals('foo'));
     checkPrice(o.defaultPrice);
-    checkUnnamed2648(o.listings);
+    checkUnnamed2663(o.listings);
     unittest.expect(o.packageName, unittest.equals('foo'));
-    checkUnnamed2649(o.prices);
+    checkUnnamed2664(o.prices);
     unittest.expect(o.purchaseType, unittest.equals('foo'));
     checkSeason(o.season);
     unittest.expect(o.sku, unittest.equals('foo'));
@@ -798,14 +798,14 @@
   buildCounterInAppProductListing--;
 }
 
-buildUnnamed2650() {
+buildUnnamed2665() {
   var o = new core.List<api.InappproductsBatchRequestEntry>();
   o.add(buildInappproductsBatchRequestEntry());
   o.add(buildInappproductsBatchRequestEntry());
   return o;
 }
 
-checkUnnamed2650(core.List<api.InappproductsBatchRequestEntry> o) {
+checkUnnamed2665(core.List<api.InappproductsBatchRequestEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInappproductsBatchRequestEntry(o[0]);
   checkInappproductsBatchRequestEntry(o[1]);
@@ -816,7 +816,7 @@
   var o = new api.InappproductsBatchRequest();
   buildCounterInappproductsBatchRequest++;
   if (buildCounterInappproductsBatchRequest < 3) {
-    o.entrys = buildUnnamed2650();
+    o.entrys = buildUnnamed2665();
   }
   buildCounterInappproductsBatchRequest--;
   return o;
@@ -825,7 +825,7 @@
 checkInappproductsBatchRequest(api.InappproductsBatchRequest o) {
   buildCounterInappproductsBatchRequest++;
   if (buildCounterInappproductsBatchRequest < 3) {
-    checkUnnamed2650(o.entrys);
+    checkUnnamed2665(o.entrys);
   }
   buildCounterInappproductsBatchRequest--;
 }
@@ -855,14 +855,14 @@
   buildCounterInappproductsBatchRequestEntry--;
 }
 
-buildUnnamed2651() {
+buildUnnamed2666() {
   var o = new core.List<api.InappproductsBatchResponseEntry>();
   o.add(buildInappproductsBatchResponseEntry());
   o.add(buildInappproductsBatchResponseEntry());
   return o;
 }
 
-checkUnnamed2651(core.List<api.InappproductsBatchResponseEntry> o) {
+checkUnnamed2666(core.List<api.InappproductsBatchResponseEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInappproductsBatchResponseEntry(o[0]);
   checkInappproductsBatchResponseEntry(o[1]);
@@ -873,7 +873,7 @@
   var o = new api.InappproductsBatchResponse();
   buildCounterInappproductsBatchResponse++;
   if (buildCounterInappproductsBatchResponse < 3) {
-    o.entrys = buildUnnamed2651();
+    o.entrys = buildUnnamed2666();
     o.kind = "foo";
   }
   buildCounterInappproductsBatchResponse--;
@@ -883,7 +883,7 @@
 checkInappproductsBatchResponse(api.InappproductsBatchResponse o) {
   buildCounterInappproductsBatchResponse++;
   if (buildCounterInappproductsBatchResponse < 3) {
-    checkUnnamed2651(o.entrys);
+    checkUnnamed2666(o.entrys);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterInappproductsBatchResponse--;
@@ -950,14 +950,14 @@
   buildCounterInappproductsInsertResponse--;
 }
 
-buildUnnamed2652() {
+buildUnnamed2667() {
   var o = new core.List<api.InAppProduct>();
   o.add(buildInAppProduct());
   o.add(buildInAppProduct());
   return o;
 }
 
-checkUnnamed2652(core.List<api.InAppProduct> o) {
+checkUnnamed2667(core.List<api.InAppProduct> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInAppProduct(o[0]);
   checkInAppProduct(o[1]);
@@ -968,7 +968,7 @@
   var o = new api.InappproductsListResponse();
   buildCounterInappproductsListResponse++;
   if (buildCounterInappproductsListResponse < 3) {
-    o.inappproduct = buildUnnamed2652();
+    o.inappproduct = buildUnnamed2667();
     o.kind = "foo";
     o.pageInfo = buildPageInfo();
     o.tokenPagination = buildTokenPagination();
@@ -980,7 +980,7 @@
 checkInappproductsListResponse(api.InappproductsListResponse o) {
   buildCounterInappproductsListResponse++;
   if (buildCounterInappproductsListResponse < 3) {
-    checkUnnamed2652(o.inappproduct);
+    checkUnnamed2667(o.inappproduct);
     unittest.expect(o.kind, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
     checkTokenPagination(o.tokenPagination);
@@ -1053,14 +1053,14 @@
   buildCounterListing--;
 }
 
-buildUnnamed2653() {
+buildUnnamed2668() {
   var o = new core.List<api.Listing>();
   o.add(buildListing());
   o.add(buildListing());
   return o;
 }
 
-checkUnnamed2653(core.List<api.Listing> o) {
+checkUnnamed2668(core.List<api.Listing> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkListing(o[0]);
   checkListing(o[1]);
@@ -1072,7 +1072,7 @@
   buildCounterListingsListResponse++;
   if (buildCounterListingsListResponse < 3) {
     o.kind = "foo";
-    o.listings = buildUnnamed2653();
+    o.listings = buildUnnamed2668();
   }
   buildCounterListingsListResponse--;
   return o;
@@ -1082,7 +1082,7 @@
   buildCounterListingsListResponse++;
   if (buildCounterListingsListResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2653(o.listings);
+    checkUnnamed2668(o.listings);
   }
   buildCounterListingsListResponse--;
 }
@@ -1202,14 +1202,14 @@
   buildCounterProrate--;
 }
 
-buildUnnamed2654() {
+buildUnnamed2669() {
   var o = new core.List<api.Comment>();
   o.add(buildComment());
   o.add(buildComment());
   return o;
 }
 
-checkUnnamed2654(core.List<api.Comment> o) {
+checkUnnamed2669(core.List<api.Comment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkComment(o[0]);
   checkComment(o[1]);
@@ -1221,7 +1221,7 @@
   buildCounterReview++;
   if (buildCounterReview < 3) {
     o.authorName = "foo";
-    o.comments = buildUnnamed2654();
+    o.comments = buildUnnamed2669();
     o.reviewId = "foo";
   }
   buildCounterReview--;
@@ -1232,7 +1232,7 @@
   buildCounterReview++;
   if (buildCounterReview < 3) {
     unittest.expect(o.authorName, unittest.equals('foo'));
-    checkUnnamed2654(o.comments);
+    checkUnnamed2669(o.comments);
     unittest.expect(o.reviewId, unittest.equals('foo'));
   }
   buildCounterReview--;
@@ -1259,14 +1259,14 @@
   buildCounterReviewReplyResult--;
 }
 
-buildUnnamed2655() {
+buildUnnamed2670() {
   var o = new core.List<api.Review>();
   o.add(buildReview());
   o.add(buildReview());
   return o;
 }
 
-checkUnnamed2655(core.List<api.Review> o) {
+checkUnnamed2670(core.List<api.Review> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReview(o[0]);
   checkReview(o[1]);
@@ -1278,7 +1278,7 @@
   buildCounterReviewsListResponse++;
   if (buildCounterReviewsListResponse < 3) {
     o.pageInfo = buildPageInfo();
-    o.reviews = buildUnnamed2655();
+    o.reviews = buildUnnamed2670();
     o.tokenPagination = buildTokenPagination();
   }
   buildCounterReviewsListResponse--;
@@ -1289,7 +1289,7 @@
   buildCounterReviewsListResponse++;
   if (buildCounterReviewsListResponse < 3) {
     checkPageInfo(o.pageInfo);
-    checkUnnamed2655(o.reviews);
+    checkUnnamed2670(o.reviews);
     checkTokenPagination(o.tokenPagination);
   }
   buildCounterReviewsListResponse--;
@@ -1333,14 +1333,14 @@
   buildCounterReviewsReplyResponse--;
 }
 
-buildUnnamed2656() {
+buildUnnamed2671() {
   var o = new core.List<api.Prorate>();
   o.add(buildProrate());
   o.add(buildProrate());
   return o;
 }
 
-checkUnnamed2656(core.List<api.Prorate> o) {
+checkUnnamed2671(core.List<api.Prorate> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProrate(o[0]);
   checkProrate(o[1]);
@@ -1352,7 +1352,7 @@
   buildCounterSeason++;
   if (buildCounterSeason < 3) {
     o.end = buildMonthDay();
-    o.prorations = buildUnnamed2656();
+    o.prorations = buildUnnamed2671();
     o.start = buildMonthDay();
   }
   buildCounterSeason--;
@@ -1363,7 +1363,7 @@
   buildCounterSeason++;
   if (buildCounterSeason < 3) {
     checkMonthDay(o.end);
-    checkUnnamed2656(o.prorations);
+    checkUnnamed2671(o.prorations);
     checkMonthDay(o.start);
   }
   buildCounterSeason--;
@@ -1471,27 +1471,27 @@
   buildCounterSubscriptionPurchasesDeferResponse--;
 }
 
-buildUnnamed2657() {
+buildUnnamed2672() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2657(core.List<core.String> o) {
+checkUnnamed2672(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2658() {
+buildUnnamed2673() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2658(core.List<core.String> o) {
+checkUnnamed2673(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1502,8 +1502,8 @@
   var o = new api.Testers();
   buildCounterTesters++;
   if (buildCounterTesters < 3) {
-    o.googleGroups = buildUnnamed2657();
-    o.googlePlusCommunities = buildUnnamed2658();
+    o.googleGroups = buildUnnamed2672();
+    o.googlePlusCommunities = buildUnnamed2673();
   }
   buildCounterTesters--;
   return o;
@@ -1512,8 +1512,8 @@
 checkTesters(api.Testers o) {
   buildCounterTesters++;
   if (buildCounterTesters < 3) {
-    checkUnnamed2657(o.googleGroups);
-    checkUnnamed2658(o.googlePlusCommunities);
+    checkUnnamed2672(o.googleGroups);
+    checkUnnamed2673(o.googlePlusCommunities);
   }
   buildCounterTesters--;
 }
@@ -1560,14 +1560,14 @@
   buildCounterTokenPagination--;
 }
 
-buildUnnamed2659() {
+buildUnnamed2674() {
   var o = new core.List<core.int>();
   o.add(42);
   o.add(42);
   return o;
 }
 
-checkUnnamed2659(core.List<core.int> o) {
+checkUnnamed2674(core.List<core.int> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42));
   unittest.expect(o[1], unittest.equals(42));
@@ -1580,7 +1580,7 @@
   if (buildCounterTrack < 3) {
     o.track = "foo";
     o.userFraction = 42.0;
-    o.versionCodes = buildUnnamed2659();
+    o.versionCodes = buildUnnamed2674();
   }
   buildCounterTrack--;
   return o;
@@ -1591,19 +1591,19 @@
   if (buildCounterTrack < 3) {
     unittest.expect(o.track, unittest.equals('foo'));
     unittest.expect(o.userFraction, unittest.equals(42.0));
-    checkUnnamed2659(o.versionCodes);
+    checkUnnamed2674(o.versionCodes);
   }
   buildCounterTrack--;
 }
 
-buildUnnamed2660() {
+buildUnnamed2675() {
   var o = new core.List<api.Track>();
   o.add(buildTrack());
   o.add(buildTrack());
   return o;
 }
 
-checkUnnamed2660(core.List<api.Track> o) {
+checkUnnamed2675(core.List<api.Track> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTrack(o[0]);
   checkTrack(o[1]);
@@ -1615,7 +1615,7 @@
   buildCounterTracksListResponse++;
   if (buildCounterTracksListResponse < 3) {
     o.kind = "foo";
-    o.tracks = buildUnnamed2660();
+    o.tracks = buildUnnamed2675();
   }
   buildCounterTracksListResponse--;
   return o;
@@ -1625,7 +1625,7 @@
   buildCounterTracksListResponse++;
   if (buildCounterTracksListResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2660(o.tracks);
+    checkUnnamed2675(o.tracks);
   }
   buildCounterTracksListResponse--;
 }
@@ -1696,14 +1696,14 @@
   buildCounterVoidedPurchase--;
 }
 
-buildUnnamed2661() {
+buildUnnamed2676() {
   var o = new core.List<api.VoidedPurchase>();
   o.add(buildVoidedPurchase());
   o.add(buildVoidedPurchase());
   return o;
 }
 
-checkUnnamed2661(core.List<api.VoidedPurchase> o) {
+checkUnnamed2676(core.List<api.VoidedPurchase> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVoidedPurchase(o[0]);
   checkVoidedPurchase(o[1]);
@@ -1716,7 +1716,7 @@
   if (buildCounterVoidedPurchasesListResponse < 3) {
     o.pageInfo = buildPageInfo();
     o.tokenPagination = buildTokenPagination();
-    o.voidedPurchases = buildUnnamed2661();
+    o.voidedPurchases = buildUnnamed2676();
   }
   buildCounterVoidedPurchasesListResponse--;
   return o;
@@ -1727,7 +1727,7 @@
   if (buildCounterVoidedPurchasesListResponse < 3) {
     checkPageInfo(o.pageInfo);
     checkTokenPagination(o.tokenPagination);
-    checkUnnamed2661(o.voidedPurchases);
+    checkUnnamed2676(o.voidedPurchases);
   }
   buildCounterVoidedPurchasesListResponse--;
 }
@@ -2219,6 +2219,7 @@
       api.EditsResourceApi res = new api.AndroidpublisherApi(mock).edits;
       var arg_packageName = "foo";
       var arg_editId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2246,6 +2247,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2254,7 +2256,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .commit(arg_packageName, arg_editId)
+          .commit(arg_packageName, arg_editId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AppEdit response) {
         checkAppEdit(response);
       })));
@@ -2265,6 +2267,7 @@
       api.EditsResourceApi res = new api.AndroidpublisherApi(mock).edits;
       var arg_packageName = "foo";
       var arg_editId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2292,6 +2295,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2300,7 +2304,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_packageName, arg_editId)
+          .delete(arg_packageName, arg_editId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -2309,6 +2313,7 @@
       api.EditsResourceApi res = new api.AndroidpublisherApi(mock).edits;
       var arg_packageName = "foo";
       var arg_editId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2336,6 +2341,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2344,7 +2350,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_packageName, arg_editId)
+          .get(arg_packageName, arg_editId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AppEdit response) {
         checkAppEdit(response);
       })));
@@ -2355,6 +2361,7 @@
       api.EditsResourceApi res = new api.AndroidpublisherApi(mock).edits;
       var arg_request = buildAppEdit();
       var arg_packageName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AppEdit.fromJson(json);
         checkAppEdit(obj);
@@ -2385,6 +2392,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2393,7 +2401,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_packageName)
+          .insert(arg_request, arg_packageName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AppEdit response) {
         checkAppEdit(response);
       })));
@@ -2404,6 +2412,7 @@
       api.EditsResourceApi res = new api.AndroidpublisherApi(mock).edits;
       var arg_packageName = "foo";
       var arg_editId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2431,6 +2440,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2439,7 +2449,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .validate(arg_packageName, arg_editId)
+          .validate(arg_packageName, arg_editId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AppEdit response) {
         checkAppEdit(response);
       })));
@@ -2455,6 +2465,7 @@
       var arg_editId = "foo";
       var arg_apkVersionCode = 42;
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2482,6 +2493,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2490,7 +2502,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_packageName, arg_editId, arg_apkVersionCode, arg_language)
+          .delete(arg_packageName, arg_editId, arg_apkVersionCode, arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -2501,6 +2514,7 @@
       var arg_packageName = "foo";
       var arg_editId = "foo";
       var arg_apkVersionCode = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2528,6 +2542,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2536,7 +2551,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .deleteall(arg_packageName, arg_editId, arg_apkVersionCode)
+          .deleteall(arg_packageName, arg_editId, arg_apkVersionCode,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -2548,6 +2564,7 @@
       var arg_editId = "foo";
       var arg_apkVersionCode = 42;
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2575,6 +2592,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2583,7 +2601,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_packageName, arg_editId, arg_apkVersionCode, arg_language)
+          .get(arg_packageName, arg_editId, arg_apkVersionCode, arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ApkListing response) {
         checkApkListing(response);
       })));
@@ -2596,6 +2615,7 @@
       var arg_packageName = "foo";
       var arg_editId = "foo";
       var arg_apkVersionCode = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2623,6 +2643,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2631,7 +2652,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_packageName, arg_editId, arg_apkVersionCode)
+          .list(arg_packageName, arg_editId, arg_apkVersionCode,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ApkListingsListResponse response) {
         checkApkListingsListResponse(response);
       })));
@@ -2646,6 +2668,7 @@
       var arg_editId = "foo";
       var arg_apkVersionCode = 42;
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ApkListing.fromJson(json);
         checkApkListing(obj);
@@ -2676,6 +2699,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2685,7 +2709,8 @@
       }), true);
       res
           .patch(arg_request, arg_packageName, arg_editId, arg_apkVersionCode,
-              arg_language)
+              arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ApkListing response) {
         checkApkListing(response);
       })));
@@ -2700,6 +2725,7 @@
       var arg_editId = "foo";
       var arg_apkVersionCode = 42;
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ApkListing.fromJson(json);
         checkApkListing(obj);
@@ -2730,6 +2756,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2739,7 +2766,8 @@
       }), true);
       res
           .update(arg_request, arg_packageName, arg_editId, arg_apkVersionCode,
-              arg_language)
+              arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ApkListing response) {
         checkApkListing(response);
       })));
@@ -2754,6 +2782,7 @@
       var arg_request = buildApksAddExternallyHostedRequest();
       var arg_packageName = "foo";
       var arg_editId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ApksAddExternallyHostedRequest.fromJson(json);
         checkApksAddExternallyHostedRequest(obj);
@@ -2784,6 +2813,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2791,8 +2821,10 @@
         var resp = convert.JSON.encode(buildApksAddExternallyHostedResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.addexternallyhosted(arg_request, arg_packageName, arg_editId).then(
-          unittest
+      res
+          .addexternallyhosted(arg_request, arg_packageName, arg_editId,
+              $fields: arg_$fields)
+          .then(unittest
               .expectAsync1(((api.ApksAddExternallyHostedResponse response) {
         checkApksAddExternallyHostedResponse(response);
       })));
@@ -2804,6 +2836,7 @@
           new api.AndroidpublisherApi(mock).edits.apks;
       var arg_packageName = "foo";
       var arg_editId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2831,6 +2864,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2839,7 +2873,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_packageName, arg_editId)
+          .list(arg_packageName, arg_editId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ApksListResponse response) {
         checkApksListResponse(response);
       })));
@@ -2854,6 +2888,7 @@
           new api.AndroidpublisherApi(mock).edits.apks;
       var arg_packageName = "foo";
       var arg_editId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2881,6 +2916,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2889,7 +2925,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .upload(arg_packageName, arg_editId)
+          .upload(arg_packageName, arg_editId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Apk response) {
         checkApk(response);
       })));
@@ -2908,6 +2944,7 @@
       var arg_editId = "foo";
       var arg_apkVersionCode = 42;
       var arg_deobfuscationFileType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2935,6 +2972,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2944,7 +2982,7 @@
       }), true);
       res
           .upload(arg_packageName, arg_editId, arg_apkVersionCode,
-              arg_deobfuscationFileType)
+              arg_deobfuscationFileType, $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.DeobfuscationFilesUploadResponse response) {
         checkDeobfuscationFilesUploadResponse(response);
@@ -2959,6 +2997,7 @@
           new api.AndroidpublisherApi(mock).edits.details;
       var arg_packageName = "foo";
       var arg_editId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2986,6 +3025,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2994,7 +3034,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_packageName, arg_editId)
+          .get(arg_packageName, arg_editId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AppDetails response) {
         checkAppDetails(response);
       })));
@@ -3007,6 +3047,7 @@
       var arg_request = buildAppDetails();
       var arg_packageName = "foo";
       var arg_editId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AppDetails.fromJson(json);
         checkAppDetails(obj);
@@ -3037,6 +3078,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3045,7 +3087,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_packageName, arg_editId)
+          .patch(arg_request, arg_packageName, arg_editId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AppDetails response) {
         checkAppDetails(response);
       })));
@@ -3058,6 +3100,7 @@
       var arg_request = buildAppDetails();
       var arg_packageName = "foo";
       var arg_editId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AppDetails.fromJson(json);
         checkAppDetails(obj);
@@ -3088,6 +3131,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3096,7 +3140,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_packageName, arg_editId)
+          .update(arg_request, arg_packageName, arg_editId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AppDetails response) {
         checkAppDetails(response);
       })));
@@ -3112,6 +3157,7 @@
       var arg_editId = "foo";
       var arg_apkVersionCode = 42;
       var arg_expansionFileType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3139,6 +3185,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3148,7 +3195,8 @@
       }), true);
       res
           .get(arg_packageName, arg_editId, arg_apkVersionCode,
-              arg_expansionFileType)
+              arg_expansionFileType,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ExpansionFile response) {
         checkExpansionFile(response);
       })));
@@ -3163,6 +3211,7 @@
       var arg_editId = "foo";
       var arg_apkVersionCode = 42;
       var arg_expansionFileType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ExpansionFile.fromJson(json);
         checkExpansionFile(obj);
@@ -3193,6 +3242,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3202,7 +3252,8 @@
       }), true);
       res
           .patch(arg_request, arg_packageName, arg_editId, arg_apkVersionCode,
-              arg_expansionFileType)
+              arg_expansionFileType,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ExpansionFile response) {
         checkExpansionFile(response);
       })));
@@ -3217,6 +3268,7 @@
       var arg_editId = "foo";
       var arg_apkVersionCode = 42;
       var arg_expansionFileType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ExpansionFile.fromJson(json);
         checkExpansionFile(obj);
@@ -3247,6 +3299,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3256,7 +3309,8 @@
       }), true);
       res
           .update(arg_request, arg_packageName, arg_editId, arg_apkVersionCode,
-              arg_expansionFileType)
+              arg_expansionFileType,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ExpansionFile response) {
         checkExpansionFile(response);
       })));
@@ -3273,6 +3327,7 @@
       var arg_editId = "foo";
       var arg_apkVersionCode = 42;
       var arg_expansionFileType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3300,6 +3355,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3309,7 +3365,7 @@
       }), true);
       res
           .upload(arg_packageName, arg_editId, arg_apkVersionCode,
-              arg_expansionFileType)
+              arg_expansionFileType, $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ExpansionFilesUploadResponse response) {
         checkExpansionFilesUploadResponse(response);
@@ -3327,6 +3383,7 @@
       var arg_language = "foo";
       var arg_imageType = "foo";
       var arg_imageId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3354,6 +3411,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3363,7 +3421,8 @@
       }), true);
       res
           .delete(arg_packageName, arg_editId, arg_language, arg_imageType,
-              arg_imageId)
+              arg_imageId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -3375,6 +3434,7 @@
       var arg_editId = "foo";
       var arg_language = "foo";
       var arg_imageType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3402,6 +3462,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3410,7 +3471,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .deleteall(arg_packageName, arg_editId, arg_language, arg_imageType)
+          .deleteall(arg_packageName, arg_editId, arg_language, arg_imageType,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ImagesDeleteAllResponse response) {
         checkImagesDeleteAllResponse(response);
       })));
@@ -3424,6 +3486,7 @@
       var arg_editId = "foo";
       var arg_language = "foo";
       var arg_imageType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3451,6 +3514,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3459,7 +3523,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_packageName, arg_editId, arg_language, arg_imageType)
+          .list(arg_packageName, arg_editId, arg_language, arg_imageType,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ImagesListResponse response) {
         checkImagesListResponse(response);
       })));
@@ -3476,6 +3541,7 @@
       var arg_editId = "foo";
       var arg_language = "foo";
       var arg_imageType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3503,6 +3569,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3511,7 +3578,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .upload(arg_packageName, arg_editId, arg_language, arg_imageType)
+          .upload(arg_packageName, arg_editId, arg_language, arg_imageType,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ImagesUploadResponse response) {
         checkImagesUploadResponse(response);
       })));
@@ -3526,6 +3594,7 @@
       var arg_packageName = "foo";
       var arg_editId = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3553,6 +3622,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3561,7 +3631,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_packageName, arg_editId, arg_language)
+          .delete(arg_packageName, arg_editId, arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -3571,6 +3642,7 @@
           new api.AndroidpublisherApi(mock).edits.listings;
       var arg_packageName = "foo";
       var arg_editId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3598,6 +3670,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3606,7 +3679,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .deleteall(arg_packageName, arg_editId)
+          .deleteall(arg_packageName, arg_editId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -3617,6 +3690,7 @@
       var arg_packageName = "foo";
       var arg_editId = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3644,6 +3718,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3652,7 +3727,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_packageName, arg_editId, arg_language)
+          .get(arg_packageName, arg_editId, arg_language, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Listing response) {
         checkListing(response);
       })));
@@ -3664,6 +3739,7 @@
           new api.AndroidpublisherApi(mock).edits.listings;
       var arg_packageName = "foo";
       var arg_editId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3691,6 +3767,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3699,7 +3776,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_packageName, arg_editId)
+          .list(arg_packageName, arg_editId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListingsListResponse response) {
         checkListingsListResponse(response);
       })));
@@ -3713,6 +3790,7 @@
       var arg_packageName = "foo";
       var arg_editId = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Listing.fromJson(json);
         checkListing(obj);
@@ -3743,6 +3821,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3751,7 +3830,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_packageName, arg_editId, arg_language)
+          .patch(arg_request, arg_packageName, arg_editId, arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Listing response) {
         checkListing(response);
       })));
@@ -3765,6 +3845,7 @@
       var arg_packageName = "foo";
       var arg_editId = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Listing.fromJson(json);
         checkListing(obj);
@@ -3795,6 +3876,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3803,7 +3885,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_packageName, arg_editId, arg_language)
+          .update(arg_request, arg_packageName, arg_editId, arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Listing response) {
         checkListing(response);
       })));
@@ -3818,6 +3901,7 @@
       var arg_packageName = "foo";
       var arg_editId = "foo";
       var arg_track = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3845,6 +3929,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3853,7 +3938,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_packageName, arg_editId, arg_track)
+          .get(arg_packageName, arg_editId, arg_track, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Testers response) {
         checkTesters(response);
       })));
@@ -3867,6 +3952,7 @@
       var arg_packageName = "foo";
       var arg_editId = "foo";
       var arg_track = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Testers.fromJson(json);
         checkTesters(obj);
@@ -3897,6 +3983,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3905,7 +3992,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_packageName, arg_editId, arg_track)
+          .patch(arg_request, arg_packageName, arg_editId, arg_track,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Testers response) {
         checkTesters(response);
       })));
@@ -3919,6 +4007,7 @@
       var arg_packageName = "foo";
       var arg_editId = "foo";
       var arg_track = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Testers.fromJson(json);
         checkTesters(obj);
@@ -3949,6 +4038,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3957,7 +4047,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_packageName, arg_editId, arg_track)
+          .update(arg_request, arg_packageName, arg_editId, arg_track,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Testers response) {
         checkTesters(response);
       })));
@@ -3972,6 +4063,7 @@
       var arg_packageName = "foo";
       var arg_editId = "foo";
       var arg_track = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3999,6 +4091,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4007,7 +4100,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_packageName, arg_editId, arg_track)
+          .get(arg_packageName, arg_editId, arg_track, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Track response) {
         checkTrack(response);
       })));
@@ -4019,6 +4112,7 @@
           new api.AndroidpublisherApi(mock).edits.tracks;
       var arg_packageName = "foo";
       var arg_editId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4046,6 +4140,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4054,7 +4149,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_packageName, arg_editId)
+          .list(arg_packageName, arg_editId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TracksListResponse response) {
         checkTracksListResponse(response);
       })));
@@ -4068,6 +4163,7 @@
       var arg_packageName = "foo";
       var arg_editId = "foo";
       var arg_track = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Track.fromJson(json);
         checkTrack(obj);
@@ -4098,6 +4194,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4106,7 +4203,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_packageName, arg_editId, arg_track)
+          .patch(arg_request, arg_packageName, arg_editId, arg_track,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Track response) {
         checkTrack(response);
       })));
@@ -4120,6 +4218,7 @@
       var arg_packageName = "foo";
       var arg_editId = "foo";
       var arg_track = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Track.fromJson(json);
         checkTrack(obj);
@@ -4150,6 +4249,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4158,7 +4258,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_packageName, arg_editId, arg_track)
+          .update(arg_request, arg_packageName, arg_editId, arg_track,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Track response) {
         checkTrack(response);
       })));
@@ -4175,6 +4276,7 @@
       var arg_productId = "foo";
       var arg_startIndex = 42;
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4209,6 +4311,7 @@
         unittest.expect(core.int.parse(queryMap["startIndex"].first),
             unittest.equals(arg_startIndex));
         unittest.expect(queryMap["token"].first, unittest.equals(arg_token));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4221,7 +4324,8 @@
               maxResults: arg_maxResults,
               productId: arg_productId,
               startIndex: arg_startIndex,
-              token: arg_token)
+              token: arg_token,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EntitlementsListResponse response) {
         checkEntitlementsListResponse(response);
       })));
@@ -4234,6 +4338,7 @@
       api.InappproductsResourceApi res =
           new api.AndroidpublisherApi(mock).inappproducts;
       var arg_request = buildInappproductsBatchRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InappproductsBatchRequest.fromJson(json);
         checkInappproductsBatchRequest(obj);
@@ -4270,6 +4375,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4277,7 +4383,7 @@
         var resp = convert.JSON.encode(buildInappproductsBatchResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.batch(arg_request).then(
+      res.batch(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.InappproductsBatchResponse response) {
         checkInappproductsBatchResponse(response);
       })));
@@ -4289,6 +4395,7 @@
           new api.AndroidpublisherApi(mock).inappproducts;
       var arg_packageName = "foo";
       var arg_sku = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4316,6 +4423,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4323,7 +4431,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_packageName, arg_sku).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_packageName, arg_sku, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -4332,6 +4442,7 @@
           new api.AndroidpublisherApi(mock).inappproducts;
       var arg_packageName = "foo";
       var arg_sku = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4359,6 +4470,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4367,7 +4479,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_packageName, arg_sku)
+          .get(arg_packageName, arg_sku, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InAppProduct response) {
         checkInAppProduct(response);
       })));
@@ -4380,6 +4492,7 @@
       var arg_request = buildInAppProduct();
       var arg_packageName = "foo";
       var arg_autoConvertMissingPrices = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InAppProduct.fromJson(json);
         checkInAppProduct(obj);
@@ -4412,6 +4525,7 @@
         }
         unittest.expect(queryMap["autoConvertMissingPrices"].first,
             unittest.equals("$arg_autoConvertMissingPrices"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4421,7 +4535,8 @@
       }), true);
       res
           .insert(arg_request, arg_packageName,
-              autoConvertMissingPrices: arg_autoConvertMissingPrices)
+              autoConvertMissingPrices: arg_autoConvertMissingPrices,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InAppProduct response) {
         checkInAppProduct(response);
       })));
@@ -4435,6 +4550,7 @@
       var arg_maxResults = 42;
       var arg_startIndex = 42;
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4467,6 +4583,7 @@
         unittest.expect(core.int.parse(queryMap["startIndex"].first),
             unittest.equals(arg_startIndex));
         unittest.expect(queryMap["token"].first, unittest.equals(arg_token));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4478,7 +4595,8 @@
           .list(arg_packageName,
               maxResults: arg_maxResults,
               startIndex: arg_startIndex,
-              token: arg_token)
+              token: arg_token,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.InappproductsListResponse response) {
         checkInappproductsListResponse(response);
@@ -4493,6 +4611,7 @@
       var arg_packageName = "foo";
       var arg_sku = "foo";
       var arg_autoConvertMissingPrices = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InAppProduct.fromJson(json);
         checkInAppProduct(obj);
@@ -4525,6 +4644,7 @@
         }
         unittest.expect(queryMap["autoConvertMissingPrices"].first,
             unittest.equals("$arg_autoConvertMissingPrices"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4534,7 +4654,8 @@
       }), true);
       res
           .patch(arg_request, arg_packageName, arg_sku,
-              autoConvertMissingPrices: arg_autoConvertMissingPrices)
+              autoConvertMissingPrices: arg_autoConvertMissingPrices,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InAppProduct response) {
         checkInAppProduct(response);
       })));
@@ -4548,6 +4669,7 @@
       var arg_packageName = "foo";
       var arg_sku = "foo";
       var arg_autoConvertMissingPrices = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InAppProduct.fromJson(json);
         checkInAppProduct(obj);
@@ -4580,6 +4702,7 @@
         }
         unittest.expect(queryMap["autoConvertMissingPrices"].first,
             unittest.equals("$arg_autoConvertMissingPrices"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4589,7 +4712,8 @@
       }), true);
       res
           .update(arg_request, arg_packageName, arg_sku,
-              autoConvertMissingPrices: arg_autoConvertMissingPrices)
+              autoConvertMissingPrices: arg_autoConvertMissingPrices,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InAppProduct response) {
         checkInAppProduct(response);
       })));
@@ -4604,6 +4728,7 @@
       var arg_packageName = "foo";
       var arg_productId = "foo";
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4631,6 +4756,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4639,7 +4765,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_packageName, arg_productId, arg_token)
+          .get(arg_packageName, arg_productId, arg_token, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ProductPurchase response) {
         checkProductPurchase(response);
       })));
@@ -4654,6 +4780,7 @@
       var arg_packageName = "foo";
       var arg_subscriptionId = "foo";
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4681,6 +4808,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4689,7 +4817,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .cancel(arg_packageName, arg_subscriptionId, arg_token)
+          .cancel(arg_packageName, arg_subscriptionId, arg_token,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -4701,6 +4830,7 @@
       var arg_packageName = "foo";
       var arg_subscriptionId = "foo";
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SubscriptionPurchasesDeferRequest.fromJson(json);
         checkSubscriptionPurchasesDeferRequest(obj);
@@ -4731,6 +4861,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4740,7 +4871,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .defer(arg_request, arg_packageName, arg_subscriptionId, arg_token)
+          .defer(arg_request, arg_packageName, arg_subscriptionId, arg_token,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.SubscriptionPurchasesDeferResponse response) {
         checkSubscriptionPurchasesDeferResponse(response);
@@ -4754,6 +4886,7 @@
       var arg_packageName = "foo";
       var arg_subscriptionId = "foo";
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4781,6 +4914,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4789,7 +4923,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_packageName, arg_subscriptionId, arg_token)
+          .get(arg_packageName, arg_subscriptionId, arg_token,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SubscriptionPurchase response) {
         checkSubscriptionPurchase(response);
       })));
@@ -4802,6 +4937,7 @@
       var arg_packageName = "foo";
       var arg_subscriptionId = "foo";
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4829,6 +4965,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4837,7 +4974,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .refund(arg_packageName, arg_subscriptionId, arg_token)
+          .refund(arg_packageName, arg_subscriptionId, arg_token,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -4848,6 +4986,7 @@
       var arg_packageName = "foo";
       var arg_subscriptionId = "foo";
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4875,6 +5014,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4883,7 +5023,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .revoke(arg_packageName, arg_subscriptionId, arg_token)
+          .revoke(arg_packageName, arg_subscriptionId, arg_token,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
   });
@@ -4899,6 +5040,7 @@
       var arg_startIndex = 42;
       var arg_startTime = "foo";
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4935,6 +5077,7 @@
         unittest.expect(
             queryMap["startTime"].first, unittest.equals(arg_startTime));
         unittest.expect(queryMap["token"].first, unittest.equals(arg_token));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4948,7 +5091,8 @@
               maxResults: arg_maxResults,
               startIndex: arg_startIndex,
               startTime: arg_startTime,
-              token: arg_token)
+              token: arg_token,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.VoidedPurchasesListResponse response) {
         checkVoidedPurchasesListResponse(response);
@@ -4963,6 +5107,7 @@
       var arg_packageName = "foo";
       var arg_reviewId = "foo";
       var arg_translationLanguage = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4992,6 +5137,7 @@
         }
         unittest.expect(queryMap["translationLanguage"].first,
             unittest.equals(arg_translationLanguage));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5001,7 +5147,8 @@
       }), true);
       res
           .get(arg_packageName, arg_reviewId,
-              translationLanguage: arg_translationLanguage)
+              translationLanguage: arg_translationLanguage,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Review response) {
         checkReview(response);
       })));
@@ -5015,6 +5162,7 @@
       var arg_startIndex = 42;
       var arg_token = "foo";
       var arg_translationLanguage = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5049,6 +5197,7 @@
         unittest.expect(queryMap["token"].first, unittest.equals(arg_token));
         unittest.expect(queryMap["translationLanguage"].first,
             unittest.equals(arg_translationLanguage));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5061,7 +5210,8 @@
               maxResults: arg_maxResults,
               startIndex: arg_startIndex,
               token: arg_token,
-              translationLanguage: arg_translationLanguage)
+              translationLanguage: arg_translationLanguage,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ReviewsListResponse response) {
         checkReviewsListResponse(response);
       })));
@@ -5073,6 +5223,7 @@
       var arg_request = buildReviewsReplyRequest();
       var arg_packageName = "foo";
       var arg_reviewId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ReviewsReplyRequest.fromJson(json);
         checkReviewsReplyRequest(obj);
@@ -5103,6 +5254,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5111,7 +5263,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .reply(arg_request, arg_packageName, arg_reviewId)
+          .reply(arg_request, arg_packageName, arg_reviewId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ReviewsReplyResponse response) {
         checkReviewsReplyResponse(response);
       })));
diff --git a/generated/googleapis/test/appengine/v1_test.dart b/generated/googleapis/test/appengine/v1_test.dart
index bfa5b88..3dac2eb 100644
--- a/generated/googleapis/test/appengine/v1_test.dart
+++ b/generated/googleapis/test/appengine/v1_test.dart
@@ -96,14 +96,14 @@
   buildCounterApiEndpointHandler--;
 }
 
-buildUnnamed2794() {
+buildUnnamed2809() {
   var o = new core.List<api.UrlDispatchRule>();
   o.add(buildUrlDispatchRule());
   o.add(buildUrlDispatchRule());
   return o;
 }
 
-checkUnnamed2794(core.List<api.UrlDispatchRule> o) {
+checkUnnamed2809(core.List<api.UrlDispatchRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUrlDispatchRule(o[0]);
   checkUrlDispatchRule(o[1]);
@@ -119,7 +119,7 @@
     o.defaultBucket = "foo";
     o.defaultCookieExpiration = "foo";
     o.defaultHostname = "foo";
-    o.dispatchRules = buildUnnamed2794();
+    o.dispatchRules = buildUnnamed2809();
     o.featureSettings = buildFeatureSettings();
     o.gcrDomain = "foo";
     o.iap = buildIdentityAwareProxy();
@@ -140,7 +140,7 @@
     unittest.expect(o.defaultBucket, unittest.equals('foo'));
     unittest.expect(o.defaultCookieExpiration, unittest.equals('foo'));
     unittest.expect(o.defaultHostname, unittest.equals('foo'));
-    checkUnnamed2794(o.dispatchRules);
+    checkUnnamed2809(o.dispatchRules);
     checkFeatureSettings(o.featureSettings);
     unittest.expect(o.gcrDomain, unittest.equals('foo'));
     checkIdentityAwareProxy(o.iap);
@@ -152,27 +152,27 @@
   buildCounterApplication--;
 }
 
-buildUnnamed2795() {
+buildUnnamed2810() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2795(core.List<core.String> o) {
+checkUnnamed2810(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2796() {
+buildUnnamed2811() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2796(core.List<core.String> o) {
+checkUnnamed2811(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -186,11 +186,11 @@
     o.certificateRawData = buildCertificateRawData();
     o.displayName = "foo";
     o.domainMappingsCount = 42;
-    o.domainNames = buildUnnamed2795();
+    o.domainNames = buildUnnamed2810();
     o.expireTime = "foo";
     o.id = "foo";
     o.name = "foo";
-    o.visibleDomainMappings = buildUnnamed2796();
+    o.visibleDomainMappings = buildUnnamed2811();
   }
   buildCounterAuthorizedCertificate--;
   return o;
@@ -202,11 +202,11 @@
     checkCertificateRawData(o.certificateRawData);
     unittest.expect(o.displayName, unittest.equals('foo'));
     unittest.expect(o.domainMappingsCount, unittest.equals(42));
-    checkUnnamed2795(o.domainNames);
+    checkUnnamed2810(o.domainNames);
     unittest.expect(o.expireTime, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2796(o.visibleDomainMappings);
+    checkUnnamed2811(o.visibleDomainMappings);
   }
   buildCounterAuthorizedCertificate--;
 }
@@ -294,14 +294,14 @@
   buildCounterBasicScaling--;
 }
 
-buildUnnamed2797() {
+buildUnnamed2812() {
   var o = new core.List<api.FirewallRule>();
   o.add(buildFirewallRule());
   o.add(buildFirewallRule());
   return o;
 }
 
-checkUnnamed2797(core.List<api.FirewallRule> o) {
+checkUnnamed2812(core.List<api.FirewallRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFirewallRule(o[0]);
   checkFirewallRule(o[1]);
@@ -312,7 +312,7 @@
   var o = new api.BatchUpdateIngressRulesRequest();
   buildCounterBatchUpdateIngressRulesRequest++;
   if (buildCounterBatchUpdateIngressRulesRequest < 3) {
-    o.ingressRules = buildUnnamed2797();
+    o.ingressRules = buildUnnamed2812();
   }
   buildCounterBatchUpdateIngressRulesRequest--;
   return o;
@@ -321,19 +321,19 @@
 checkBatchUpdateIngressRulesRequest(api.BatchUpdateIngressRulesRequest o) {
   buildCounterBatchUpdateIngressRulesRequest++;
   if (buildCounterBatchUpdateIngressRulesRequest < 3) {
-    checkUnnamed2797(o.ingressRules);
+    checkUnnamed2812(o.ingressRules);
   }
   buildCounterBatchUpdateIngressRulesRequest--;
 }
 
-buildUnnamed2798() {
+buildUnnamed2813() {
   var o = new core.List<api.FirewallRule>();
   o.add(buildFirewallRule());
   o.add(buildFirewallRule());
   return o;
 }
 
-checkUnnamed2798(core.List<api.FirewallRule> o) {
+checkUnnamed2813(core.List<api.FirewallRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFirewallRule(o[0]);
   checkFirewallRule(o[1]);
@@ -344,7 +344,7 @@
   var o = new api.BatchUpdateIngressRulesResponse();
   buildCounterBatchUpdateIngressRulesResponse++;
   if (buildCounterBatchUpdateIngressRulesResponse < 3) {
-    o.ingressRules = buildUnnamed2798();
+    o.ingressRules = buildUnnamed2813();
   }
   buildCounterBatchUpdateIngressRulesResponse--;
   return o;
@@ -353,7 +353,7 @@
 checkBatchUpdateIngressRulesResponse(api.BatchUpdateIngressRulesResponse o) {
   buildCounterBatchUpdateIngressRulesResponse++;
   if (buildCounterBatchUpdateIngressRulesResponse < 3) {
-    checkUnnamed2798(o.ingressRules);
+    checkUnnamed2813(o.ingressRules);
   }
   buildCounterBatchUpdateIngressRulesResponse--;
 }
@@ -438,14 +438,14 @@
   buildCounterDebugInstanceRequest--;
 }
 
-buildUnnamed2799() {
+buildUnnamed2814() {
   var o = new core.Map<core.String, api.FileInfo>();
   o["x"] = buildFileInfo();
   o["y"] = buildFileInfo();
   return o;
 }
 
-checkUnnamed2799(core.Map<core.String, api.FileInfo> o) {
+checkUnnamed2814(core.Map<core.String, api.FileInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFileInfo(o["x"]);
   checkFileInfo(o["y"]);
@@ -457,7 +457,7 @@
   buildCounterDeployment++;
   if (buildCounterDeployment < 3) {
     o.container = buildContainerInfo();
-    o.files = buildUnnamed2799();
+    o.files = buildUnnamed2814();
     o.zip = buildZipInfo();
   }
   buildCounterDeployment--;
@@ -468,7 +468,7 @@
   buildCounterDeployment++;
   if (buildCounterDeployment < 3) {
     checkContainerInfo(o.container);
-    checkUnnamed2799(o.files);
+    checkUnnamed2814(o.files);
     checkZipInfo(o.zip);
   }
   buildCounterDeployment--;
@@ -499,14 +499,14 @@
   buildCounterDiskUtilization--;
 }
 
-buildUnnamed2800() {
+buildUnnamed2815() {
   var o = new core.List<api.ResourceRecord>();
   o.add(buildResourceRecord());
   o.add(buildResourceRecord());
   return o;
 }
 
-checkUnnamed2800(core.List<api.ResourceRecord> o) {
+checkUnnamed2815(core.List<api.ResourceRecord> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceRecord(o[0]);
   checkResourceRecord(o[1]);
@@ -519,7 +519,7 @@
   if (buildCounterDomainMapping < 3) {
     o.id = "foo";
     o.name = "foo";
-    o.resourceRecords = buildUnnamed2800();
+    o.resourceRecords = buildUnnamed2815();
     o.sslSettings = buildSslSettings();
   }
   buildCounterDomainMapping--;
@@ -531,7 +531,7 @@
   if (buildCounterDomainMapping < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2800(o.resourceRecords);
+    checkUnnamed2815(o.resourceRecords);
     checkSslSettings(o.sslSettings);
   }
   buildCounterDomainMapping--;
@@ -789,14 +789,14 @@
   buildCounterLibrary--;
 }
 
-buildUnnamed2801() {
+buildUnnamed2816() {
   var o = new core.List<api.AuthorizedCertificate>();
   o.add(buildAuthorizedCertificate());
   o.add(buildAuthorizedCertificate());
   return o;
 }
 
-checkUnnamed2801(core.List<api.AuthorizedCertificate> o) {
+checkUnnamed2816(core.List<api.AuthorizedCertificate> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuthorizedCertificate(o[0]);
   checkAuthorizedCertificate(o[1]);
@@ -807,7 +807,7 @@
   var o = new api.ListAuthorizedCertificatesResponse();
   buildCounterListAuthorizedCertificatesResponse++;
   if (buildCounterListAuthorizedCertificatesResponse < 3) {
-    o.certificates = buildUnnamed2801();
+    o.certificates = buildUnnamed2816();
     o.nextPageToken = "foo";
   }
   buildCounterListAuthorizedCertificatesResponse--;
@@ -818,20 +818,20 @@
     api.ListAuthorizedCertificatesResponse o) {
   buildCounterListAuthorizedCertificatesResponse++;
   if (buildCounterListAuthorizedCertificatesResponse < 3) {
-    checkUnnamed2801(o.certificates);
+    checkUnnamed2816(o.certificates);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListAuthorizedCertificatesResponse--;
 }
 
-buildUnnamed2802() {
+buildUnnamed2817() {
   var o = new core.List<api.AuthorizedDomain>();
   o.add(buildAuthorizedDomain());
   o.add(buildAuthorizedDomain());
   return o;
 }
 
-checkUnnamed2802(core.List<api.AuthorizedDomain> o) {
+checkUnnamed2817(core.List<api.AuthorizedDomain> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuthorizedDomain(o[0]);
   checkAuthorizedDomain(o[1]);
@@ -842,7 +842,7 @@
   var o = new api.ListAuthorizedDomainsResponse();
   buildCounterListAuthorizedDomainsResponse++;
   if (buildCounterListAuthorizedDomainsResponse < 3) {
-    o.domains = buildUnnamed2802();
+    o.domains = buildUnnamed2817();
     o.nextPageToken = "foo";
   }
   buildCounterListAuthorizedDomainsResponse--;
@@ -852,20 +852,20 @@
 checkListAuthorizedDomainsResponse(api.ListAuthorizedDomainsResponse o) {
   buildCounterListAuthorizedDomainsResponse++;
   if (buildCounterListAuthorizedDomainsResponse < 3) {
-    checkUnnamed2802(o.domains);
+    checkUnnamed2817(o.domains);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListAuthorizedDomainsResponse--;
 }
 
-buildUnnamed2803() {
+buildUnnamed2818() {
   var o = new core.List<api.DomainMapping>();
   o.add(buildDomainMapping());
   o.add(buildDomainMapping());
   return o;
 }
 
-checkUnnamed2803(core.List<api.DomainMapping> o) {
+checkUnnamed2818(core.List<api.DomainMapping> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDomainMapping(o[0]);
   checkDomainMapping(o[1]);
@@ -876,7 +876,7 @@
   var o = new api.ListDomainMappingsResponse();
   buildCounterListDomainMappingsResponse++;
   if (buildCounterListDomainMappingsResponse < 3) {
-    o.domainMappings = buildUnnamed2803();
+    o.domainMappings = buildUnnamed2818();
     o.nextPageToken = "foo";
   }
   buildCounterListDomainMappingsResponse--;
@@ -886,20 +886,20 @@
 checkListDomainMappingsResponse(api.ListDomainMappingsResponse o) {
   buildCounterListDomainMappingsResponse++;
   if (buildCounterListDomainMappingsResponse < 3) {
-    checkUnnamed2803(o.domainMappings);
+    checkUnnamed2818(o.domainMappings);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListDomainMappingsResponse--;
 }
 
-buildUnnamed2804() {
+buildUnnamed2819() {
   var o = new core.List<api.FirewallRule>();
   o.add(buildFirewallRule());
   o.add(buildFirewallRule());
   return o;
 }
 
-checkUnnamed2804(core.List<api.FirewallRule> o) {
+checkUnnamed2819(core.List<api.FirewallRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFirewallRule(o[0]);
   checkFirewallRule(o[1]);
@@ -910,7 +910,7 @@
   var o = new api.ListIngressRulesResponse();
   buildCounterListIngressRulesResponse++;
   if (buildCounterListIngressRulesResponse < 3) {
-    o.ingressRules = buildUnnamed2804();
+    o.ingressRules = buildUnnamed2819();
     o.nextPageToken = "foo";
   }
   buildCounterListIngressRulesResponse--;
@@ -920,20 +920,20 @@
 checkListIngressRulesResponse(api.ListIngressRulesResponse o) {
   buildCounterListIngressRulesResponse++;
   if (buildCounterListIngressRulesResponse < 3) {
-    checkUnnamed2804(o.ingressRules);
+    checkUnnamed2819(o.ingressRules);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListIngressRulesResponse--;
 }
 
-buildUnnamed2805() {
+buildUnnamed2820() {
   var o = new core.List<api.Instance>();
   o.add(buildInstance());
   o.add(buildInstance());
   return o;
 }
 
-checkUnnamed2805(core.List<api.Instance> o) {
+checkUnnamed2820(core.List<api.Instance> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstance(o[0]);
   checkInstance(o[1]);
@@ -944,7 +944,7 @@
   var o = new api.ListInstancesResponse();
   buildCounterListInstancesResponse++;
   if (buildCounterListInstancesResponse < 3) {
-    o.instances = buildUnnamed2805();
+    o.instances = buildUnnamed2820();
     o.nextPageToken = "foo";
   }
   buildCounterListInstancesResponse--;
@@ -954,20 +954,20 @@
 checkListInstancesResponse(api.ListInstancesResponse o) {
   buildCounterListInstancesResponse++;
   if (buildCounterListInstancesResponse < 3) {
-    checkUnnamed2805(o.instances);
+    checkUnnamed2820(o.instances);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListInstancesResponse--;
 }
 
-buildUnnamed2806() {
+buildUnnamed2821() {
   var o = new core.List<api.Location>();
   o.add(buildLocation());
   o.add(buildLocation());
   return o;
 }
 
-checkUnnamed2806(core.List<api.Location> o) {
+checkUnnamed2821(core.List<api.Location> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocation(o[0]);
   checkLocation(o[1]);
@@ -978,7 +978,7 @@
   var o = new api.ListLocationsResponse();
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    o.locations = buildUnnamed2806();
+    o.locations = buildUnnamed2821();
     o.nextPageToken = "foo";
   }
   buildCounterListLocationsResponse--;
@@ -988,20 +988,20 @@
 checkListLocationsResponse(api.ListLocationsResponse o) {
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    checkUnnamed2806(o.locations);
+    checkUnnamed2821(o.locations);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListLocationsResponse--;
 }
 
-buildUnnamed2807() {
+buildUnnamed2822() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed2807(core.List<api.Operation> o) {
+checkUnnamed2822(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -1013,7 +1013,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed2807();
+    o.operations = buildUnnamed2822();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -1023,19 +1023,19 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2807(o.operations);
+    checkUnnamed2822(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
 
-buildUnnamed2808() {
+buildUnnamed2823() {
   var o = new core.List<api.Service>();
   o.add(buildService());
   o.add(buildService());
   return o;
 }
 
-checkUnnamed2808(core.List<api.Service> o) {
+checkUnnamed2823(core.List<api.Service> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkService(o[0]);
   checkService(o[1]);
@@ -1047,7 +1047,7 @@
   buildCounterListServicesResponse++;
   if (buildCounterListServicesResponse < 3) {
     o.nextPageToken = "foo";
-    o.services = buildUnnamed2808();
+    o.services = buildUnnamed2823();
   }
   buildCounterListServicesResponse--;
   return o;
@@ -1057,19 +1057,19 @@
   buildCounterListServicesResponse++;
   if (buildCounterListServicesResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2808(o.services);
+    checkUnnamed2823(o.services);
   }
   buildCounterListServicesResponse--;
 }
 
-buildUnnamed2809() {
+buildUnnamed2824() {
   var o = new core.List<api.Version>();
   o.add(buildVersion());
   o.add(buildVersion());
   return o;
 }
 
-checkUnnamed2809(core.List<api.Version> o) {
+checkUnnamed2824(core.List<api.Version> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVersion(o[0]);
   checkVersion(o[1]);
@@ -1081,7 +1081,7 @@
   buildCounterListVersionsResponse++;
   if (buildCounterListVersionsResponse < 3) {
     o.nextPageToken = "foo";
-    o.versions = buildUnnamed2809();
+    o.versions = buildUnnamed2824();
   }
   buildCounterListVersionsResponse--;
   return o;
@@ -1091,7 +1091,7 @@
   buildCounterListVersionsResponse++;
   if (buildCounterListVersionsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2809(o.versions);
+    checkUnnamed2824(o.versions);
   }
   buildCounterListVersionsResponse--;
 }
@@ -1127,20 +1127,20 @@
   buildCounterLivenessCheck--;
 }
 
-buildUnnamed2810() {
+buildUnnamed2825() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed2810(core.Map<core.String, core.String> o) {
+checkUnnamed2825(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed2811() {
+buildUnnamed2826() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1155,7 +1155,7 @@
   return o;
 }
 
-checkUnnamed2811(core.Map<core.String, core.Object> o) {
+checkUnnamed2826(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -1174,9 +1174,9 @@
   var o = new api.Location();
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
-    o.labels = buildUnnamed2810();
+    o.labels = buildUnnamed2825();
     o.locationId = "foo";
-    o.metadata = buildUnnamed2811();
+    o.metadata = buildUnnamed2826();
     o.name = "foo";
   }
   buildCounterLocation--;
@@ -1186,9 +1186,9 @@
 checkLocation(api.Location o) {
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
-    checkUnnamed2810(o.labels);
+    checkUnnamed2825(o.labels);
     unittest.expect(o.locationId, unittest.equals('foo'));
-    checkUnnamed2811(o.metadata);
+    checkUnnamed2826(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
   }
   buildCounterLocation--;
@@ -1234,14 +1234,14 @@
   buildCounterManualScaling--;
 }
 
-buildUnnamed2812() {
+buildUnnamed2827() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2812(core.List<core.String> o) {
+checkUnnamed2827(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1252,7 +1252,7 @@
   var o = new api.Network();
   buildCounterNetwork++;
   if (buildCounterNetwork < 3) {
-    o.forwardedPorts = buildUnnamed2812();
+    o.forwardedPorts = buildUnnamed2827();
     o.instanceTag = "foo";
     o.name = "foo";
     o.subnetworkName = "foo";
@@ -1264,7 +1264,7 @@
 checkNetwork(api.Network o) {
   buildCounterNetwork++;
   if (buildCounterNetwork < 3) {
-    checkUnnamed2812(o.forwardedPorts);
+    checkUnnamed2827(o.forwardedPorts);
     unittest.expect(o.instanceTag, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.subnetworkName, unittest.equals('foo'));
@@ -1297,7 +1297,7 @@
   buildCounterNetworkUtilization--;
 }
 
-buildUnnamed2813() {
+buildUnnamed2828() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1312,7 +1312,7 @@
   return o;
 }
 
-checkUnnamed2813(core.Map<core.String, core.Object> o) {
+checkUnnamed2828(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -1326,7 +1326,7 @@
   unittest.expect(casted4["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2814() {
+buildUnnamed2829() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1341,7 +1341,7 @@
   return o;
 }
 
-checkUnnamed2814(core.Map<core.String, core.Object> o) {
+checkUnnamed2829(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -1362,9 +1362,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed2813();
+    o.metadata = buildUnnamed2828();
     o.name = "foo";
-    o.response = buildUnnamed2814();
+    o.response = buildUnnamed2829();
   }
   buildCounterOperation--;
   return o;
@@ -1375,9 +1375,9 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed2813(o.metadata);
+    checkUnnamed2828(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2814(o.response);
+    checkUnnamed2829(o.response);
   }
   buildCounterOperation--;
 }
@@ -1438,14 +1438,14 @@
   buildCounterOperationMetadataExperimental--;
 }
 
-buildUnnamed2815() {
+buildUnnamed2830() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2815(core.List<core.String> o) {
+checkUnnamed2830(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1462,7 +1462,7 @@
     o.method = "foo";
     o.target = "foo";
     o.user = "foo";
-    o.warning = buildUnnamed2815();
+    o.warning = buildUnnamed2830();
   }
   buildCounterOperationMetadataV1--;
   return o;
@@ -1477,19 +1477,19 @@
     unittest.expect(o.method, unittest.equals('foo'));
     unittest.expect(o.target, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed2815(o.warning);
+    checkUnnamed2830(o.warning);
   }
   buildCounterOperationMetadataV1--;
 }
 
-buildUnnamed2816() {
+buildUnnamed2831() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2816(core.List<core.String> o) {
+checkUnnamed2831(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1506,7 +1506,7 @@
     o.method = "foo";
     o.target = "foo";
     o.user = "foo";
-    o.warning = buildUnnamed2816();
+    o.warning = buildUnnamed2831();
   }
   buildCounterOperationMetadataV1Alpha--;
   return o;
@@ -1521,19 +1521,19 @@
     unittest.expect(o.method, unittest.equals('foo'));
     unittest.expect(o.target, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed2816(o.warning);
+    checkUnnamed2831(o.warning);
   }
   buildCounterOperationMetadataV1Alpha--;
 }
 
-buildUnnamed2817() {
+buildUnnamed2832() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2817(core.List<core.String> o) {
+checkUnnamed2832(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1550,7 +1550,7 @@
     o.method = "foo";
     o.target = "foo";
     o.user = "foo";
-    o.warning = buildUnnamed2817();
+    o.warning = buildUnnamed2832();
   }
   buildCounterOperationMetadataV1Beta--;
   return o;
@@ -1565,7 +1565,7 @@
     unittest.expect(o.method, unittest.equals('foo'));
     unittest.expect(o.target, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed2817(o.warning);
+    checkUnnamed2832(o.warning);
   }
   buildCounterOperationMetadataV1Beta--;
 }
@@ -1687,14 +1687,14 @@
   buildCounterResourceRecord--;
 }
 
-buildUnnamed2818() {
+buildUnnamed2833() {
   var o = new core.List<api.Volume>();
   o.add(buildVolume());
   o.add(buildVolume());
   return o;
 }
 
-checkUnnamed2818(core.List<api.Volume> o) {
+checkUnnamed2833(core.List<api.Volume> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVolume(o[0]);
   checkVolume(o[1]);
@@ -1708,7 +1708,7 @@
     o.cpu = 42.0;
     o.diskGb = 42.0;
     o.memoryGb = 42.0;
-    o.volumes = buildUnnamed2818();
+    o.volumes = buildUnnamed2833();
   }
   buildCounterResources--;
   return o;
@@ -1720,7 +1720,7 @@
     unittest.expect(o.cpu, unittest.equals(42.0));
     unittest.expect(o.diskGb, unittest.equals(42.0));
     unittest.expect(o.memoryGb, unittest.equals(42.0));
-    checkUnnamed2818(o.volumes);
+    checkUnnamed2833(o.volumes);
   }
   buildCounterResources--;
 }
@@ -1786,14 +1786,14 @@
   buildCounterSslSettings--;
 }
 
-buildUnnamed2819() {
+buildUnnamed2834() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed2819(core.Map<core.String, core.String> o) {
+checkUnnamed2834(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1806,7 +1806,7 @@
   if (buildCounterStaticFilesHandler < 3) {
     o.applicationReadable = true;
     o.expiration = "foo";
-    o.httpHeaders = buildUnnamed2819();
+    o.httpHeaders = buildUnnamed2834();
     o.mimeType = "foo";
     o.path = "foo";
     o.requireMatchingFile = true;
@@ -1821,7 +1821,7 @@
   if (buildCounterStaticFilesHandler < 3) {
     unittest.expect(o.applicationReadable, unittest.isTrue);
     unittest.expect(o.expiration, unittest.equals('foo'));
-    checkUnnamed2819(o.httpHeaders);
+    checkUnnamed2834(o.httpHeaders);
     unittest.expect(o.mimeType, unittest.equals('foo'));
     unittest.expect(o.path, unittest.equals('foo'));
     unittest.expect(o.requireMatchingFile, unittest.isTrue);
@@ -1830,7 +1830,7 @@
   buildCounterStaticFilesHandler--;
 }
 
-buildUnnamed2820() {
+buildUnnamed2835() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1845,7 +1845,7 @@
   return o;
 }
 
-checkUnnamed2820(core.Map<core.String, core.Object> o) {
+checkUnnamed2835(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted7 = (o["x"]) as core.Map;
   unittest.expect(casted7, unittest.hasLength(3));
@@ -1859,17 +1859,17 @@
   unittest.expect(casted8["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2821() {
+buildUnnamed2836() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed2820());
-  o.add(buildUnnamed2820());
+  o.add(buildUnnamed2835());
+  o.add(buildUnnamed2835());
   return o;
 }
 
-checkUnnamed2821(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed2836(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2820(o[0]);
-  checkUnnamed2820(o[1]);
+  checkUnnamed2835(o[0]);
+  checkUnnamed2835(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -1878,7 +1878,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed2821();
+    o.details = buildUnnamed2836();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -1889,20 +1889,20 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed2821(o.details);
+    checkUnnamed2836(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
 }
 
-buildUnnamed2822() {
+buildUnnamed2837() {
   var o = new core.Map<core.String, core.double>();
   o["x"] = 42.0;
   o["y"] = 42.0;
   return o;
 }
 
-checkUnnamed2822(core.Map<core.String, core.double> o) {
+checkUnnamed2837(core.Map<core.String, core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals(42.0));
   unittest.expect(o["y"], unittest.equals(42.0));
@@ -1913,7 +1913,7 @@
   var o = new api.TrafficSplit();
   buildCounterTrafficSplit++;
   if (buildCounterTrafficSplit < 3) {
-    o.allocations = buildUnnamed2822();
+    o.allocations = buildUnnamed2837();
     o.shardBy = "foo";
   }
   buildCounterTrafficSplit--;
@@ -1923,7 +1923,7 @@
 checkTrafficSplit(api.TrafficSplit o) {
   buildCounterTrafficSplit++;
   if (buildCounterTrafficSplit < 3) {
-    checkUnnamed2822(o.allocations);
+    checkUnnamed2837(o.allocations);
     unittest.expect(o.shardBy, unittest.equals('foo'));
   }
   buildCounterTrafficSplit--;
@@ -1985,79 +1985,79 @@
   buildCounterUrlMap--;
 }
 
-buildUnnamed2823() {
+buildUnnamed2838() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed2823(core.Map<core.String, core.String> o) {
+checkUnnamed2838(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed2824() {
+buildUnnamed2839() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed2824(core.Map<core.String, core.String> o) {
+checkUnnamed2839(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed2825() {
+buildUnnamed2840() {
   var o = new core.List<api.ErrorHandler>();
   o.add(buildErrorHandler());
   o.add(buildErrorHandler());
   return o;
 }
 
-checkUnnamed2825(core.List<api.ErrorHandler> o) {
+checkUnnamed2840(core.List<api.ErrorHandler> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkErrorHandler(o[0]);
   checkErrorHandler(o[1]);
 }
 
-buildUnnamed2826() {
+buildUnnamed2841() {
   var o = new core.List<api.UrlMap>();
   o.add(buildUrlMap());
   o.add(buildUrlMap());
   return o;
 }
 
-checkUnnamed2826(core.List<api.UrlMap> o) {
+checkUnnamed2841(core.List<api.UrlMap> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUrlMap(o[0]);
   checkUrlMap(o[1]);
 }
 
-buildUnnamed2827() {
+buildUnnamed2842() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2827(core.List<core.String> o) {
+checkUnnamed2842(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2828() {
+buildUnnamed2843() {
   var o = new core.List<api.Library>();
   o.add(buildLibrary());
   o.add(buildLibrary());
   return o;
 }
 
-checkUnnamed2828(core.List<api.Library> o) {
+checkUnnamed2843(core.List<api.Library> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLibrary(o[0]);
   checkLibrary(o[1]);
@@ -2071,7 +2071,7 @@
     o.apiConfig = buildApiConfigHandler();
     o.automaticScaling = buildAutomaticScaling();
     o.basicScaling = buildBasicScaling();
-    o.betaSettings = buildUnnamed2823();
+    o.betaSettings = buildUnnamed2838();
     o.createTime = "foo";
     o.createdBy = "foo";
     o.defaultExpiration = "foo";
@@ -2079,14 +2079,14 @@
     o.diskUsageBytes = "foo";
     o.endpointsApiService = buildEndpointsApiService();
     o.env = "foo";
-    o.envVariables = buildUnnamed2824();
-    o.errorHandlers = buildUnnamed2825();
-    o.handlers = buildUnnamed2826();
+    o.envVariables = buildUnnamed2839();
+    o.errorHandlers = buildUnnamed2840();
+    o.handlers = buildUnnamed2841();
     o.healthCheck = buildHealthCheck();
     o.id = "foo";
-    o.inboundServices = buildUnnamed2827();
+    o.inboundServices = buildUnnamed2842();
     o.instanceClass = "foo";
-    o.libraries = buildUnnamed2828();
+    o.libraries = buildUnnamed2843();
     o.livenessCheck = buildLivenessCheck();
     o.manualScaling = buildManualScaling();
     o.name = "foo";
@@ -2111,7 +2111,7 @@
     checkApiConfigHandler(o.apiConfig);
     checkAutomaticScaling(o.automaticScaling);
     checkBasicScaling(o.basicScaling);
-    checkUnnamed2823(o.betaSettings);
+    checkUnnamed2838(o.betaSettings);
     unittest.expect(o.createTime, unittest.equals('foo'));
     unittest.expect(o.createdBy, unittest.equals('foo'));
     unittest.expect(o.defaultExpiration, unittest.equals('foo'));
@@ -2119,14 +2119,14 @@
     unittest.expect(o.diskUsageBytes, unittest.equals('foo'));
     checkEndpointsApiService(o.endpointsApiService);
     unittest.expect(o.env, unittest.equals('foo'));
-    checkUnnamed2824(o.envVariables);
-    checkUnnamed2825(o.errorHandlers);
-    checkUnnamed2826(o.handlers);
+    checkUnnamed2839(o.envVariables);
+    checkUnnamed2840(o.errorHandlers);
+    checkUnnamed2841(o.handlers);
     checkHealthCheck(o.healthCheck);
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2827(o.inboundServices);
+    checkUnnamed2842(o.inboundServices);
     unittest.expect(o.instanceClass, unittest.equals('foo'));
-    checkUnnamed2828(o.libraries);
+    checkUnnamed2843(o.libraries);
     checkLivenessCheck(o.livenessCheck);
     checkManualScaling(o.manualScaling);
     unittest.expect(o.name, unittest.equals('foo'));
@@ -2706,6 +2706,7 @@
       var mock = new HttpServerMock();
       api.AppsResourceApi res = new api.AppengineApi(mock).apps;
       var arg_request = buildApplication();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Application.fromJson(json);
         checkApplication(obj);
@@ -2739,6 +2740,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2747,7 +2749,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request)
+          .create(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2757,6 +2759,7 @@
       var mock = new HttpServerMock();
       api.AppsResourceApi res = new api.AppengineApi(mock).apps;
       var arg_appsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2790,6 +2793,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2798,7 +2802,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId)
+          .get(arg_appsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Application response) {
         checkApplication(response);
       })));
@@ -2810,6 +2814,7 @@
       var arg_request = buildApplication();
       var arg_appsId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Application.fromJson(json);
         checkApplication(obj);
@@ -2848,6 +2853,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2856,7 +2862,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_appsId, updateMask: arg_updateMask)
+          .patch(arg_request, arg_appsId,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2867,6 +2874,7 @@
       api.AppsResourceApi res = new api.AppengineApi(mock).apps;
       var arg_request = buildRepairApplicationRequest();
       var arg_appsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RepairApplicationRequest.fromJson(json);
         checkRepairApplicationRequest(obj);
@@ -2909,6 +2917,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2917,7 +2926,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .repair(arg_request, arg_appsId)
+          .repair(arg_request, arg_appsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2931,6 +2940,7 @@
           new api.AppengineApi(mock).apps.authorizedCertificates;
       var arg_request = buildAuthorizedCertificate();
       var arg_appsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AuthorizedCertificate.fromJson(json);
         checkAuthorizedCertificate(obj);
@@ -2973,6 +2983,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2981,7 +2992,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_appsId)
+          .create(arg_request, arg_appsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AuthorizedCertificate response) {
         checkAuthorizedCertificate(response);
       })));
@@ -2993,6 +3004,7 @@
           new api.AppengineApi(mock).apps.authorizedCertificates;
       var arg_appsId = "foo";
       var arg_authorizedCertificatesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3036,6 +3048,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3044,7 +3057,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_authorizedCertificatesId)
+          .delete(arg_appsId, arg_authorizedCertificatesId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -3057,6 +3071,7 @@
       var arg_appsId = "foo";
       var arg_authorizedCertificatesId = "foo";
       var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3101,6 +3116,7 @@
           }
         }
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3109,7 +3125,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_authorizedCertificatesId, view: arg_view)
+          .get(arg_appsId, arg_authorizedCertificatesId,
+              view: arg_view, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AuthorizedCertificate response) {
         checkAuthorizedCertificate(response);
       })));
@@ -3120,9 +3137,10 @@
       api.AppsAuthorizedCertificatesResourceApi res =
           new api.AppengineApi(mock).apps.authorizedCertificates;
       var arg_appsId = "foo";
+      var arg_view = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
-      var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3162,11 +3180,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
-        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3177,7 +3196,10 @@
       }), true);
       res
           .list(arg_appsId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize, view: arg_view)
+              view: arg_view,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListAuthorizedCertificatesResponse response) {
         checkListAuthorizedCertificatesResponse(response);
@@ -3192,6 +3214,7 @@
       var arg_appsId = "foo";
       var arg_authorizedCertificatesId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AuthorizedCertificate.fromJson(json);
         checkAuthorizedCertificate(obj);
@@ -3240,6 +3263,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3249,7 +3273,7 @@
       }), true);
       res
           .patch(arg_request, arg_appsId, arg_authorizedCertificatesId,
-              updateMask: arg_updateMask)
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AuthorizedCertificate response) {
         checkAuthorizedCertificate(response);
       })));
@@ -3264,6 +3288,7 @@
       var arg_appsId = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3307,6 +3332,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3315,7 +3341,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_appsId, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_appsId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListAuthorizedDomainsResponse response) {
         checkListAuthorizedDomainsResponse(response);
@@ -3330,6 +3359,7 @@
           new api.AppengineApi(mock).apps.domainMappings;
       var arg_request = buildDomainMapping();
       var arg_appsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DomainMapping.fromJson(json);
         checkDomainMapping(obj);
@@ -3372,6 +3402,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3380,7 +3411,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_appsId)
+          .create(arg_request, arg_appsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3392,6 +3423,7 @@
           new api.AppengineApi(mock).apps.domainMappings;
       var arg_appsId = "foo";
       var arg_domainMappingsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3434,6 +3466,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3442,7 +3475,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_domainMappingsId)
+          .delete(arg_appsId, arg_domainMappingsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3454,6 +3487,7 @@
           new api.AppengineApi(mock).apps.domainMappings;
       var arg_appsId = "foo";
       var arg_domainMappingsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3496,6 +3530,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3504,7 +3539,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_domainMappingsId)
+          .get(arg_appsId, arg_domainMappingsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DomainMapping response) {
         checkDomainMapping(response);
       })));
@@ -3517,6 +3552,7 @@
       var arg_appsId = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3560,6 +3596,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3568,7 +3605,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_appsId, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_appsId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.ListDomainMappingsResponse response) {
         checkListDomainMappingsResponse(response);
@@ -3583,6 +3623,7 @@
       var arg_appsId = "foo";
       var arg_domainMappingsId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DomainMapping.fromJson(json);
         checkDomainMapping(obj);
@@ -3630,6 +3671,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3639,7 +3681,7 @@
       }), true);
       res
           .patch(arg_request, arg_appsId, arg_domainMappingsId,
-              updateMask: arg_updateMask)
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3653,6 +3695,7 @@
           new api.AppengineApi(mock).apps.firewall.ingressRules;
       var arg_request = buildBatchUpdateIngressRulesRequest();
       var arg_appsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BatchUpdateIngressRulesRequest.fromJson(json);
         checkBatchUpdateIngressRulesRequest(obj);
@@ -3695,6 +3738,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3702,8 +3746,9 @@
         var resp = convert.JSON.encode(buildBatchUpdateIngressRulesResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.batchUpdate(arg_request, arg_appsId).then(unittest
-          .expectAsync1(((api.BatchUpdateIngressRulesResponse response) {
+      res.batchUpdate(arg_request, arg_appsId, $fields: arg_$fields).then(
+          unittest
+              .expectAsync1(((api.BatchUpdateIngressRulesResponse response) {
         checkBatchUpdateIngressRulesResponse(response);
       })));
     });
@@ -3714,6 +3759,7 @@
           new api.AppengineApi(mock).apps.firewall.ingressRules;
       var arg_request = buildFirewallRule();
       var arg_appsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.FirewallRule.fromJson(json);
         checkFirewallRule(obj);
@@ -3756,6 +3802,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3764,7 +3811,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_appsId)
+          .create(arg_request, arg_appsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.FirewallRule response) {
         checkFirewallRule(response);
       })));
@@ -3776,6 +3823,7 @@
           new api.AppengineApi(mock).apps.firewall.ingressRules;
       var arg_appsId = "foo";
       var arg_ingressRulesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3818,6 +3866,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3826,7 +3875,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_ingressRulesId)
+          .delete(arg_appsId, arg_ingressRulesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -3838,6 +3887,7 @@
           new api.AppengineApi(mock).apps.firewall.ingressRules;
       var arg_appsId = "foo";
       var arg_ingressRulesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3880,6 +3930,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3888,7 +3939,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_ingressRulesId)
+          .get(arg_appsId, arg_ingressRulesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.FirewallRule response) {
         checkFirewallRule(response);
       })));
@@ -3902,6 +3953,7 @@
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_matchingAddress = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3947,6 +3999,7 @@
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["matchingAddress"].first,
             unittest.equals(arg_matchingAddress));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3958,7 +4011,8 @@
           .list(arg_appsId,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              matchingAddress: arg_matchingAddress)
+              matchingAddress: arg_matchingAddress,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListIngressRulesResponse response) {
         checkListIngressRulesResponse(response);
       })));
@@ -3972,6 +4026,7 @@
       var arg_appsId = "foo";
       var arg_ingressRulesId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.FirewallRule.fromJson(json);
         checkFirewallRule(obj);
@@ -4019,6 +4074,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4028,7 +4084,7 @@
       }), true);
       res
           .patch(arg_request, arg_appsId, arg_ingressRulesId,
-              updateMask: arg_updateMask)
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.FirewallRule response) {
         checkFirewallRule(response);
       })));
@@ -4042,6 +4098,7 @@
           new api.AppengineApi(mock).apps.locations;
       var arg_appsId = "foo";
       var arg_locationsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4084,6 +4141,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4092,7 +4150,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_locationsId)
+          .get(arg_appsId, arg_locationsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Location response) {
         checkLocation(response);
       })));
@@ -4103,9 +4161,10 @@
       api.AppsLocationsResourceApi res =
           new api.AppengineApi(mock).apps.locations;
       var arg_appsId = "foo";
-      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4145,11 +4204,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4159,9 +4219,10 @@
       }), true);
       res
           .list(arg_appsId,
-              filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              filter: arg_filter,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLocationsResponse response) {
         checkListLocationsResponse(response);
       })));
@@ -4175,6 +4236,7 @@
           new api.AppengineApi(mock).apps.operations;
       var arg_appsId = "foo";
       var arg_operationsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4217,6 +4279,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4225,7 +4288,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_operationsId)
+          .get(arg_appsId, arg_operationsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4236,9 +4299,10 @@
       api.AppsOperationsResourceApi res =
           new api.AppengineApi(mock).apps.operations;
       var arg_appsId = "foo";
+      var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_filter = "foo";
-      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4278,11 +4342,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4292,9 +4357,10 @@
       }), true);
       res
           .list(arg_appsId,
+              pageToken: arg_pageToken,
               pageSize: arg_pageSize,
               filter: arg_filter,
-              pageToken: arg_pageToken)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
@@ -4308,6 +4374,7 @@
           new api.AppengineApi(mock).apps.services;
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4350,6 +4417,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4358,7 +4426,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_servicesId)
+          .delete(arg_appsId, arg_servicesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4370,6 +4438,7 @@
           new api.AppengineApi(mock).apps.services;
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4412,6 +4481,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4420,7 +4490,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_servicesId)
+          .get(arg_appsId, arg_servicesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Service response) {
         checkService(response);
       })));
@@ -4431,8 +4501,9 @@
       api.AppsServicesResourceApi res =
           new api.AppengineApi(mock).apps.services;
       var arg_appsId = "foo";
-      var arg_pageSize = 42;
       var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4472,10 +4543,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(core.int.parse(queryMap["pageSize"].first),
-            unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4484,7 +4556,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_appsId, pageSize: arg_pageSize, pageToken: arg_pageToken)
+          .list(arg_appsId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListServicesResponse response) {
         checkListServicesResponse(response);
       })));
@@ -4499,6 +4574,7 @@
       var arg_servicesId = "foo";
       var arg_updateMask = "foo";
       var arg_migrateTraffic = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Service.fromJson(json);
         checkService(obj);
@@ -4548,6 +4624,7 @@
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
         unittest.expect(queryMap["migrateTraffic"].first,
             unittest.equals("$arg_migrateTraffic"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4557,7 +4634,9 @@
       }), true);
       res
           .patch(arg_request, arg_appsId, arg_servicesId,
-              updateMask: arg_updateMask, migrateTraffic: arg_migrateTraffic)
+              updateMask: arg_updateMask,
+              migrateTraffic: arg_migrateTraffic,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4572,6 +4651,7 @@
       var arg_request = buildVersion();
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Version.fromJson(json);
         checkVersion(obj);
@@ -4623,6 +4703,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4631,7 +4712,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_appsId, arg_servicesId)
+          .create(arg_request, arg_appsId, arg_servicesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4644,6 +4725,7 @@
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4695,6 +4777,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4703,7 +4786,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_servicesId, arg_versionsId)
+          .delete(arg_appsId, arg_servicesId, arg_versionsId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4717,6 +4801,7 @@
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
       var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4769,6 +4854,7 @@
           }
         }
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4777,7 +4863,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_servicesId, arg_versionsId, view: arg_view)
+          .get(arg_appsId, arg_servicesId, arg_versionsId,
+              view: arg_view, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Version response) {
         checkVersion(response);
       })));
@@ -4792,6 +4879,7 @@
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4845,6 +4933,7 @@
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4854,7 +4943,10 @@
       }), true);
       res
           .list(arg_appsId, arg_servicesId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize, view: arg_view)
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              view: arg_view,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListVersionsResponse response) {
         checkListVersionsResponse(response);
       })));
@@ -4869,6 +4961,7 @@
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Version.fromJson(json);
         checkVersion(obj);
@@ -4925,6 +5018,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4934,7 +5028,7 @@
       }), true);
       res
           .patch(arg_request, arg_appsId, arg_servicesId, arg_versionsId,
-              updateMask: arg_updateMask)
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4951,6 +5045,7 @@
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
       var arg_instancesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DebugInstanceRequest.fromJson(json);
         checkDebugInstanceRequest(obj);
@@ -5020,6 +5115,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5029,7 +5125,8 @@
       }), true);
       res
           .debug(arg_request, arg_appsId, arg_servicesId, arg_versionsId,
-              arg_instancesId)
+              arg_instancesId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -5043,6 +5140,7 @@
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
       var arg_instancesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5103,6 +5201,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5111,7 +5210,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_servicesId, arg_versionsId, arg_instancesId)
+          .delete(arg_appsId, arg_servicesId, arg_versionsId, arg_instancesId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -5125,6 +5225,7 @@
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
       var arg_instancesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5185,6 +5286,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5193,7 +5295,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_servicesId, arg_versionsId, arg_instancesId)
+          .get(arg_appsId, arg_servicesId, arg_versionsId, arg_instancesId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Instance response) {
         checkInstance(response);
       })));
@@ -5208,6 +5311,7 @@
       var arg_versionsId = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5269,6 +5373,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5278,7 +5383,9 @@
       }), true);
       res
           .list(arg_appsId, arg_servicesId, arg_versionsId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListInstancesResponse response) {
         checkListInstancesResponse(response);
       })));
diff --git a/generated/googleapis/test/appsactivity/v1_test.dart b/generated/googleapis/test/appsactivity/v1_test.dart
index f4adc98..b832764 100644
--- a/generated/googleapis/test/appsactivity/v1_test.dart
+++ b/generated/googleapis/test/appsactivity/v1_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed1143() {
+buildUnnamed1130() {
   var o = new core.List<api.Event>();
   o.add(buildEvent());
   o.add(buildEvent());
   return o;
 }
 
-checkUnnamed1143(core.List<api.Event> o) {
+checkUnnamed1130(core.List<api.Event> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEvent(o[0]);
   checkEvent(o[1]);
@@ -69,7 +69,7 @@
   buildCounterActivity++;
   if (buildCounterActivity < 3) {
     o.combinedEvent = buildEvent();
-    o.singleEvents = buildUnnamed1143();
+    o.singleEvents = buildUnnamed1130();
   }
   buildCounterActivity--;
   return o;
@@ -79,32 +79,32 @@
   buildCounterActivity++;
   if (buildCounterActivity < 3) {
     checkEvent(o.combinedEvent);
-    checkUnnamed1143(o.singleEvents);
+    checkUnnamed1130(o.singleEvents);
   }
   buildCounterActivity--;
 }
 
-buildUnnamed1144() {
+buildUnnamed1131() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1144(core.List<core.String> o) {
+checkUnnamed1131(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1145() {
+buildUnnamed1132() {
   var o = new core.List<api.PermissionChange>();
   o.add(buildPermissionChange());
   o.add(buildPermissionChange());
   return o;
 }
 
-checkUnnamed1145(core.List<api.PermissionChange> o) {
+checkUnnamed1132(core.List<api.PermissionChange> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPermissionChange(o[0]);
   checkPermissionChange(o[1]);
@@ -115,11 +115,11 @@
   var o = new api.Event();
   buildCounterEvent++;
   if (buildCounterEvent < 3) {
-    o.additionalEventTypes = buildUnnamed1144();
+    o.additionalEventTypes = buildUnnamed1131();
     o.eventTimeMillis = "foo";
     o.fromUserDeletion = true;
     o.move = buildMove();
-    o.permissionChanges = buildUnnamed1145();
+    o.permissionChanges = buildUnnamed1132();
     o.primaryEventType = "foo";
     o.rename = buildRename();
     o.target = buildTarget();
@@ -132,11 +132,11 @@
 checkEvent(api.Event o) {
   buildCounterEvent++;
   if (buildCounterEvent < 3) {
-    checkUnnamed1144(o.additionalEventTypes);
+    checkUnnamed1131(o.additionalEventTypes);
     unittest.expect(o.eventTimeMillis, unittest.equals('foo'));
     unittest.expect(o.fromUserDeletion, unittest.isTrue);
     checkMove(o.move);
-    checkUnnamed1145(o.permissionChanges);
+    checkUnnamed1132(o.permissionChanges);
     unittest.expect(o.primaryEventType, unittest.equals('foo'));
     checkRename(o.rename);
     checkTarget(o.target);
@@ -145,14 +145,14 @@
   buildCounterEvent--;
 }
 
-buildUnnamed1146() {
+buildUnnamed1133() {
   var o = new core.List<api.Activity>();
   o.add(buildActivity());
   o.add(buildActivity());
   return o;
 }
 
-checkUnnamed1146(core.List<api.Activity> o) {
+checkUnnamed1133(core.List<api.Activity> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkActivity(o[0]);
   checkActivity(o[1]);
@@ -163,7 +163,7 @@
   var o = new api.ListActivitiesResponse();
   buildCounterListActivitiesResponse++;
   if (buildCounterListActivitiesResponse < 3) {
-    o.activities = buildUnnamed1146();
+    o.activities = buildUnnamed1133();
     o.nextPageToken = "foo";
   }
   buildCounterListActivitiesResponse--;
@@ -173,33 +173,33 @@
 checkListActivitiesResponse(api.ListActivitiesResponse o) {
   buildCounterListActivitiesResponse++;
   if (buildCounterListActivitiesResponse < 3) {
-    checkUnnamed1146(o.activities);
+    checkUnnamed1133(o.activities);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListActivitiesResponse--;
 }
 
-buildUnnamed1147() {
+buildUnnamed1134() {
   var o = new core.List<api.Parent>();
   o.add(buildParent());
   o.add(buildParent());
   return o;
 }
 
-checkUnnamed1147(core.List<api.Parent> o) {
+checkUnnamed1134(core.List<api.Parent> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkParent(o[0]);
   checkParent(o[1]);
 }
 
-buildUnnamed1148() {
+buildUnnamed1135() {
   var o = new core.List<api.Parent>();
   o.add(buildParent());
   o.add(buildParent());
   return o;
 }
 
-checkUnnamed1148(core.List<api.Parent> o) {
+checkUnnamed1135(core.List<api.Parent> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkParent(o[0]);
   checkParent(o[1]);
@@ -210,8 +210,8 @@
   var o = new api.Move();
   buildCounterMove++;
   if (buildCounterMove < 3) {
-    o.addedParents = buildUnnamed1147();
-    o.removedParents = buildUnnamed1148();
+    o.addedParents = buildUnnamed1134();
+    o.removedParents = buildUnnamed1135();
   }
   buildCounterMove--;
   return o;
@@ -220,8 +220,8 @@
 checkMove(api.Move o) {
   buildCounterMove++;
   if (buildCounterMove < 3) {
-    checkUnnamed1147(o.addedParents);
-    checkUnnamed1148(o.removedParents);
+    checkUnnamed1134(o.addedParents);
+    checkUnnamed1135(o.removedParents);
   }
   buildCounterMove--;
 }
@@ -278,27 +278,27 @@
   buildCounterPermission--;
 }
 
-buildUnnamed1149() {
+buildUnnamed1136() {
   var o = new core.List<api.Permission>();
   o.add(buildPermission());
   o.add(buildPermission());
   return o;
 }
 
-checkUnnamed1149(core.List<api.Permission> o) {
+checkUnnamed1136(core.List<api.Permission> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPermission(o[0]);
   checkPermission(o[1]);
 }
 
-buildUnnamed1150() {
+buildUnnamed1137() {
   var o = new core.List<api.Permission>();
   o.add(buildPermission());
   o.add(buildPermission());
   return o;
 }
 
-checkUnnamed1150(core.List<api.Permission> o) {
+checkUnnamed1137(core.List<api.Permission> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPermission(o[0]);
   checkPermission(o[1]);
@@ -309,8 +309,8 @@
   var o = new api.PermissionChange();
   buildCounterPermissionChange++;
   if (buildCounterPermissionChange < 3) {
-    o.addedPermissions = buildUnnamed1149();
-    o.removedPermissions = buildUnnamed1150();
+    o.addedPermissions = buildUnnamed1136();
+    o.removedPermissions = buildUnnamed1137();
   }
   buildCounterPermissionChange--;
   return o;
@@ -319,8 +319,8 @@
 checkPermissionChange(api.PermissionChange o) {
   buildCounterPermissionChange++;
   if (buildCounterPermissionChange < 3) {
-    checkUnnamed1149(o.addedPermissions);
-    checkUnnamed1150(o.removedPermissions);
+    checkUnnamed1136(o.addedPermissions);
+    checkUnnamed1137(o.removedPermissions);
   }
   buildCounterPermissionChange--;
 }
@@ -515,6 +515,7 @@
       var arg_pageToken = "foo";
       var arg_source = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -560,6 +561,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
         unittest.expect(queryMap["userId"].first, unittest.equals(arg_userId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -575,7 +577,8 @@
               pageSize: arg_pageSize,
               pageToken: arg_pageToken,
               source: arg_source,
-              userId: arg_userId)
+              userId: arg_userId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListActivitiesResponse response) {
         checkListActivitiesResponse(response);
       })));
diff --git a/generated/googleapis/test/appstate/v1_test.dart b/generated/googleapis/test/appstate/v1_test.dart
index 722202c..819ad97 100644
--- a/generated/googleapis/test/appstate/v1_test.dart
+++ b/generated/googleapis/test/appstate/v1_test.dart
@@ -75,14 +75,14 @@
   buildCounterGetResponse--;
 }
 
-buildUnnamed2628() {
+buildUnnamed2643() {
   var o = new core.List<api.GetResponse>();
   o.add(buildGetResponse());
   o.add(buildGetResponse());
   return o;
 }
 
-checkUnnamed2628(core.List<api.GetResponse> o) {
+checkUnnamed2643(core.List<api.GetResponse> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGetResponse(o[0]);
   checkGetResponse(o[1]);
@@ -93,7 +93,7 @@
   var o = new api.ListResponse();
   buildCounterListResponse++;
   if (buildCounterListResponse < 3) {
-    o.items = buildUnnamed2628();
+    o.items = buildUnnamed2643();
     o.kind = "foo";
     o.maximumKeyCount = 42;
   }
@@ -104,7 +104,7 @@
 checkListResponse(api.ListResponse o) {
   buildCounterListResponse++;
   if (buildCounterListResponse < 3) {
-    checkUnnamed2628(o.items);
+    checkUnnamed2643(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.maximumKeyCount, unittest.equals(42));
   }
@@ -194,6 +194,7 @@
       api.StatesResourceApi res = new api.AppstateApi(mock).states;
       var arg_stateKey = 42;
       var arg_currentDataVersion = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -238,6 +239,7 @@
         }
         unittest.expect(queryMap["currentDataVersion"].first,
             unittest.equals(arg_currentDataVersion));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -246,7 +248,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .clear(arg_stateKey, currentDataVersion: arg_currentDataVersion)
+          .clear(arg_stateKey,
+              currentDataVersion: arg_currentDataVersion, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.WriteResult response) {
         checkWriteResult(response);
       })));
@@ -256,6 +259,7 @@
       var mock = new HttpServerMock();
       api.StatesResourceApi res = new api.AppstateApi(mock).states;
       var arg_stateKey = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -292,6 +296,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -299,13 +304,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_stateKey).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_stateKey, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
       var mock = new HttpServerMock();
       api.StatesResourceApi res = new api.AppstateApi(mock).states;
       var arg_stateKey = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -342,6 +350,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -350,7 +359,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_stateKey)
+          .get(arg_stateKey, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GetResponse response) {
         checkGetResponse(response);
       })));
@@ -360,6 +369,7 @@
       var mock = new HttpServerMock();
       api.StatesResourceApi res = new api.AppstateApi(mock).states;
       var arg_includeData = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -395,6 +405,7 @@
         }
         unittest.expect(
             queryMap["includeData"].first, unittest.equals("$arg_includeData"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -403,7 +414,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(includeData: arg_includeData)
+          .list(includeData: arg_includeData, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListResponse response) {
         checkListResponse(response);
       })));
@@ -415,6 +426,7 @@
       var arg_request = buildUpdateRequest();
       var arg_stateKey = 42;
       var arg_currentStateVersion = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UpdateRequest.fromJson(json);
         checkUpdateRequest(obj);
@@ -456,6 +468,7 @@
         }
         unittest.expect(queryMap["currentStateVersion"].first,
             unittest.equals(arg_currentStateVersion));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -465,7 +478,8 @@
       }), true);
       res
           .update(arg_request, arg_stateKey,
-              currentStateVersion: arg_currentStateVersion)
+              currentStateVersion: arg_currentStateVersion,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.WriteResult response) {
         checkWriteResult(response);
       })));
diff --git a/generated/googleapis/test/bigquery/v2_test.dart b/generated/googleapis/test/bigquery/v2_test.dart
new file mode 100644
index 0000000..ac3ebe0
--- /dev/null
+++ b/generated/googleapis/test/bigquery/v2_test.dart
@@ -0,0 +1,4507 @@
+library googleapis.bigquery.v2.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/bigquery/v2.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterBigtableColumn = 0;
+buildBigtableColumn() {
+  var o = new api.BigtableColumn();
+  buildCounterBigtableColumn++;
+  if (buildCounterBigtableColumn < 3) {
+    o.encoding = "foo";
+    o.fieldName = "foo";
+    o.onlyReadLatest = true;
+    o.qualifierEncoded = "foo";
+    o.qualifierString = "foo";
+    o.type = "foo";
+  }
+  buildCounterBigtableColumn--;
+  return o;
+}
+
+checkBigtableColumn(api.BigtableColumn o) {
+  buildCounterBigtableColumn++;
+  if (buildCounterBigtableColumn < 3) {
+    unittest.expect(o.encoding, unittest.equals('foo'));
+    unittest.expect(o.fieldName, unittest.equals('foo'));
+    unittest.expect(o.onlyReadLatest, unittest.isTrue);
+    unittest.expect(o.qualifierEncoded, unittest.equals('foo'));
+    unittest.expect(o.qualifierString, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterBigtableColumn--;
+}
+
+buildUnnamed2883() {
+  var o = new core.List<api.BigtableColumn>();
+  o.add(buildBigtableColumn());
+  o.add(buildBigtableColumn());
+  return o;
+}
+
+checkUnnamed2883(core.List<api.BigtableColumn> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBigtableColumn(o[0]);
+  checkBigtableColumn(o[1]);
+}
+
+core.int buildCounterBigtableColumnFamily = 0;
+buildBigtableColumnFamily() {
+  var o = new api.BigtableColumnFamily();
+  buildCounterBigtableColumnFamily++;
+  if (buildCounterBigtableColumnFamily < 3) {
+    o.columns = buildUnnamed2883();
+    o.encoding = "foo";
+    o.familyId = "foo";
+    o.onlyReadLatest = true;
+    o.type = "foo";
+  }
+  buildCounterBigtableColumnFamily--;
+  return o;
+}
+
+checkBigtableColumnFamily(api.BigtableColumnFamily o) {
+  buildCounterBigtableColumnFamily++;
+  if (buildCounterBigtableColumnFamily < 3) {
+    checkUnnamed2883(o.columns);
+    unittest.expect(o.encoding, unittest.equals('foo'));
+    unittest.expect(o.familyId, unittest.equals('foo'));
+    unittest.expect(o.onlyReadLatest, unittest.isTrue);
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterBigtableColumnFamily--;
+}
+
+buildUnnamed2884() {
+  var o = new core.List<api.BigtableColumnFamily>();
+  o.add(buildBigtableColumnFamily());
+  o.add(buildBigtableColumnFamily());
+  return o;
+}
+
+checkUnnamed2884(core.List<api.BigtableColumnFamily> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBigtableColumnFamily(o[0]);
+  checkBigtableColumnFamily(o[1]);
+}
+
+core.int buildCounterBigtableOptions = 0;
+buildBigtableOptions() {
+  var o = new api.BigtableOptions();
+  buildCounterBigtableOptions++;
+  if (buildCounterBigtableOptions < 3) {
+    o.columnFamilies = buildUnnamed2884();
+    o.ignoreUnspecifiedColumnFamilies = true;
+    o.readRowkeyAsString = true;
+  }
+  buildCounterBigtableOptions--;
+  return o;
+}
+
+checkBigtableOptions(api.BigtableOptions o) {
+  buildCounterBigtableOptions++;
+  if (buildCounterBigtableOptions < 3) {
+    checkUnnamed2884(o.columnFamilies);
+    unittest.expect(o.ignoreUnspecifiedColumnFamilies, unittest.isTrue);
+    unittest.expect(o.readRowkeyAsString, unittest.isTrue);
+  }
+  buildCounterBigtableOptions--;
+}
+
+core.int buildCounterCsvOptions = 0;
+buildCsvOptions() {
+  var o = new api.CsvOptions();
+  buildCounterCsvOptions++;
+  if (buildCounterCsvOptions < 3) {
+    o.allowJaggedRows = true;
+    o.allowQuotedNewlines = true;
+    o.encoding = "foo";
+    o.fieldDelimiter = "foo";
+    o.quote = "foo";
+    o.skipLeadingRows = "foo";
+  }
+  buildCounterCsvOptions--;
+  return o;
+}
+
+checkCsvOptions(api.CsvOptions o) {
+  buildCounterCsvOptions++;
+  if (buildCounterCsvOptions < 3) {
+    unittest.expect(o.allowJaggedRows, unittest.isTrue);
+    unittest.expect(o.allowQuotedNewlines, unittest.isTrue);
+    unittest.expect(o.encoding, unittest.equals('foo'));
+    unittest.expect(o.fieldDelimiter, unittest.equals('foo'));
+    unittest.expect(o.quote, unittest.equals('foo'));
+    unittest.expect(o.skipLeadingRows, unittest.equals('foo'));
+  }
+  buildCounterCsvOptions--;
+}
+
+core.int buildCounterDatasetAccess = 0;
+buildDatasetAccess() {
+  var o = new api.DatasetAccess();
+  buildCounterDatasetAccess++;
+  if (buildCounterDatasetAccess < 3) {
+    o.domain = "foo";
+    o.groupByEmail = "foo";
+    o.role = "foo";
+    o.specialGroup = "foo";
+    o.userByEmail = "foo";
+    o.view = buildTableReference();
+  }
+  buildCounterDatasetAccess--;
+  return o;
+}
+
+checkDatasetAccess(api.DatasetAccess o) {
+  buildCounterDatasetAccess++;
+  if (buildCounterDatasetAccess < 3) {
+    unittest.expect(o.domain, unittest.equals('foo'));
+    unittest.expect(o.groupByEmail, unittest.equals('foo'));
+    unittest.expect(o.role, unittest.equals('foo'));
+    unittest.expect(o.specialGroup, unittest.equals('foo'));
+    unittest.expect(o.userByEmail, unittest.equals('foo'));
+    checkTableReference(o.view);
+  }
+  buildCounterDatasetAccess--;
+}
+
+buildUnnamed2885() {
+  var o = new core.List<api.DatasetAccess>();
+  o.add(buildDatasetAccess());
+  o.add(buildDatasetAccess());
+  return o;
+}
+
+checkUnnamed2885(core.List<api.DatasetAccess> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDatasetAccess(o[0]);
+  checkDatasetAccess(o[1]);
+}
+
+buildUnnamed2886() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed2886(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterDataset = 0;
+buildDataset() {
+  var o = new api.Dataset();
+  buildCounterDataset++;
+  if (buildCounterDataset < 3) {
+    o.access = buildUnnamed2885();
+    o.creationTime = "foo";
+    o.datasetReference = buildDatasetReference();
+    o.defaultTableExpirationMs = "foo";
+    o.description = "foo";
+    o.etag = "foo";
+    o.friendlyName = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.labels = buildUnnamed2886();
+    o.lastModifiedTime = "foo";
+    o.location = "foo";
+    o.selfLink = "foo";
+  }
+  buildCounterDataset--;
+  return o;
+}
+
+checkDataset(api.Dataset o) {
+  buildCounterDataset++;
+  if (buildCounterDataset < 3) {
+    checkUnnamed2885(o.access);
+    unittest.expect(o.creationTime, unittest.equals('foo'));
+    checkDatasetReference(o.datasetReference);
+    unittest.expect(o.defaultTableExpirationMs, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.friendlyName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2886(o.labels);
+    unittest.expect(o.lastModifiedTime, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+  }
+  buildCounterDataset--;
+}
+
+buildUnnamed2887() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed2887(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterDatasetListDatasets = 0;
+buildDatasetListDatasets() {
+  var o = new api.DatasetListDatasets();
+  buildCounterDatasetListDatasets++;
+  if (buildCounterDatasetListDatasets < 3) {
+    o.datasetReference = buildDatasetReference();
+    o.friendlyName = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.labels = buildUnnamed2887();
+  }
+  buildCounterDatasetListDatasets--;
+  return o;
+}
+
+checkDatasetListDatasets(api.DatasetListDatasets o) {
+  buildCounterDatasetListDatasets++;
+  if (buildCounterDatasetListDatasets < 3) {
+    checkDatasetReference(o.datasetReference);
+    unittest.expect(o.friendlyName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2887(o.labels);
+  }
+  buildCounterDatasetListDatasets--;
+}
+
+buildUnnamed2888() {
+  var o = new core.List<api.DatasetListDatasets>();
+  o.add(buildDatasetListDatasets());
+  o.add(buildDatasetListDatasets());
+  return o;
+}
+
+checkUnnamed2888(core.List<api.DatasetListDatasets> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDatasetListDatasets(o[0]);
+  checkDatasetListDatasets(o[1]);
+}
+
+core.int buildCounterDatasetList = 0;
+buildDatasetList() {
+  var o = new api.DatasetList();
+  buildCounterDatasetList++;
+  if (buildCounterDatasetList < 3) {
+    o.datasets = buildUnnamed2888();
+    o.etag = "foo";
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterDatasetList--;
+  return o;
+}
+
+checkDatasetList(api.DatasetList o) {
+  buildCounterDatasetList++;
+  if (buildCounterDatasetList < 3) {
+    checkUnnamed2888(o.datasets);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterDatasetList--;
+}
+
+core.int buildCounterDatasetReference = 0;
+buildDatasetReference() {
+  var o = new api.DatasetReference();
+  buildCounterDatasetReference++;
+  if (buildCounterDatasetReference < 3) {
+    o.datasetId = "foo";
+    o.projectId = "foo";
+  }
+  buildCounterDatasetReference--;
+  return o;
+}
+
+checkDatasetReference(api.DatasetReference o) {
+  buildCounterDatasetReference++;
+  if (buildCounterDatasetReference < 3) {
+    unittest.expect(o.datasetId, unittest.equals('foo'));
+    unittest.expect(o.projectId, unittest.equals('foo'));
+  }
+  buildCounterDatasetReference--;
+}
+
+core.int buildCounterEncryptionConfiguration = 0;
+buildEncryptionConfiguration() {
+  var o = new api.EncryptionConfiguration();
+  buildCounterEncryptionConfiguration++;
+  if (buildCounterEncryptionConfiguration < 3) {
+    o.kmsKeyName = "foo";
+  }
+  buildCounterEncryptionConfiguration--;
+  return o;
+}
+
+checkEncryptionConfiguration(api.EncryptionConfiguration o) {
+  buildCounterEncryptionConfiguration++;
+  if (buildCounterEncryptionConfiguration < 3) {
+    unittest.expect(o.kmsKeyName, unittest.equals('foo'));
+  }
+  buildCounterEncryptionConfiguration--;
+}
+
+core.int buildCounterErrorProto = 0;
+buildErrorProto() {
+  var o = new api.ErrorProto();
+  buildCounterErrorProto++;
+  if (buildCounterErrorProto < 3) {
+    o.debugInfo = "foo";
+    o.location = "foo";
+    o.message = "foo";
+    o.reason = "foo";
+  }
+  buildCounterErrorProto--;
+  return o;
+}
+
+checkErrorProto(api.ErrorProto o) {
+  buildCounterErrorProto++;
+  if (buildCounterErrorProto < 3) {
+    unittest.expect(o.debugInfo, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    unittest.expect(o.message, unittest.equals('foo'));
+    unittest.expect(o.reason, unittest.equals('foo'));
+  }
+  buildCounterErrorProto--;
+}
+
+buildUnnamed2889() {
+  var o = new core.List<api.ExplainQueryStep>();
+  o.add(buildExplainQueryStep());
+  o.add(buildExplainQueryStep());
+  return o;
+}
+
+checkUnnamed2889(core.List<api.ExplainQueryStep> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkExplainQueryStep(o[0]);
+  checkExplainQueryStep(o[1]);
+}
+
+core.int buildCounterExplainQueryStage = 0;
+buildExplainQueryStage() {
+  var o = new api.ExplainQueryStage();
+  buildCounterExplainQueryStage++;
+  if (buildCounterExplainQueryStage < 3) {
+    o.computeMsAvg = "foo";
+    o.computeMsMax = "foo";
+    o.computeRatioAvg = 42.0;
+    o.computeRatioMax = 42.0;
+    o.id = "foo";
+    o.name = "foo";
+    o.readMsAvg = "foo";
+    o.readMsMax = "foo";
+    o.readRatioAvg = 42.0;
+    o.readRatioMax = 42.0;
+    o.recordsRead = "foo";
+    o.recordsWritten = "foo";
+    o.shuffleOutputBytes = "foo";
+    o.shuffleOutputBytesSpilled = "foo";
+    o.status = "foo";
+    o.steps = buildUnnamed2889();
+    o.waitMsAvg = "foo";
+    o.waitMsMax = "foo";
+    o.waitRatioAvg = 42.0;
+    o.waitRatioMax = 42.0;
+    o.writeMsAvg = "foo";
+    o.writeMsMax = "foo";
+    o.writeRatioAvg = 42.0;
+    o.writeRatioMax = 42.0;
+  }
+  buildCounterExplainQueryStage--;
+  return o;
+}
+
+checkExplainQueryStage(api.ExplainQueryStage o) {
+  buildCounterExplainQueryStage++;
+  if (buildCounterExplainQueryStage < 3) {
+    unittest.expect(o.computeMsAvg, unittest.equals('foo'));
+    unittest.expect(o.computeMsMax, unittest.equals('foo'));
+    unittest.expect(o.computeRatioAvg, unittest.equals(42.0));
+    unittest.expect(o.computeRatioMax, unittest.equals(42.0));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.readMsAvg, unittest.equals('foo'));
+    unittest.expect(o.readMsMax, unittest.equals('foo'));
+    unittest.expect(o.readRatioAvg, unittest.equals(42.0));
+    unittest.expect(o.readRatioMax, unittest.equals(42.0));
+    unittest.expect(o.recordsRead, unittest.equals('foo'));
+    unittest.expect(o.recordsWritten, unittest.equals('foo'));
+    unittest.expect(o.shuffleOutputBytes, unittest.equals('foo'));
+    unittest.expect(o.shuffleOutputBytesSpilled, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+    checkUnnamed2889(o.steps);
+    unittest.expect(o.waitMsAvg, unittest.equals('foo'));
+    unittest.expect(o.waitMsMax, unittest.equals('foo'));
+    unittest.expect(o.waitRatioAvg, unittest.equals(42.0));
+    unittest.expect(o.waitRatioMax, unittest.equals(42.0));
+    unittest.expect(o.writeMsAvg, unittest.equals('foo'));
+    unittest.expect(o.writeMsMax, unittest.equals('foo'));
+    unittest.expect(o.writeRatioAvg, unittest.equals(42.0));
+    unittest.expect(o.writeRatioMax, unittest.equals(42.0));
+  }
+  buildCounterExplainQueryStage--;
+}
+
+buildUnnamed2890() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2890(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterExplainQueryStep = 0;
+buildExplainQueryStep() {
+  var o = new api.ExplainQueryStep();
+  buildCounterExplainQueryStep++;
+  if (buildCounterExplainQueryStep < 3) {
+    o.kind = "foo";
+    o.substeps = buildUnnamed2890();
+  }
+  buildCounterExplainQueryStep--;
+  return o;
+}
+
+checkExplainQueryStep(api.ExplainQueryStep o) {
+  buildCounterExplainQueryStep++;
+  if (buildCounterExplainQueryStep < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2890(o.substeps);
+  }
+  buildCounterExplainQueryStep--;
+}
+
+buildUnnamed2891() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2891(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterExternalDataConfiguration = 0;
+buildExternalDataConfiguration() {
+  var o = new api.ExternalDataConfiguration();
+  buildCounterExternalDataConfiguration++;
+  if (buildCounterExternalDataConfiguration < 3) {
+    o.autodetect = true;
+    o.bigtableOptions = buildBigtableOptions();
+    o.compression = "foo";
+    o.csvOptions = buildCsvOptions();
+    o.googleSheetsOptions = buildGoogleSheetsOptions();
+    o.ignoreUnknownValues = true;
+    o.maxBadRecords = 42;
+    o.schema = buildTableSchema();
+    o.sourceFormat = "foo";
+    o.sourceUris = buildUnnamed2891();
+  }
+  buildCounterExternalDataConfiguration--;
+  return o;
+}
+
+checkExternalDataConfiguration(api.ExternalDataConfiguration o) {
+  buildCounterExternalDataConfiguration++;
+  if (buildCounterExternalDataConfiguration < 3) {
+    unittest.expect(o.autodetect, unittest.isTrue);
+    checkBigtableOptions(o.bigtableOptions);
+    unittest.expect(o.compression, unittest.equals('foo'));
+    checkCsvOptions(o.csvOptions);
+    checkGoogleSheetsOptions(o.googleSheetsOptions);
+    unittest.expect(o.ignoreUnknownValues, unittest.isTrue);
+    unittest.expect(o.maxBadRecords, unittest.equals(42));
+    checkTableSchema(o.schema);
+    unittest.expect(o.sourceFormat, unittest.equals('foo'));
+    checkUnnamed2891(o.sourceUris);
+  }
+  buildCounterExternalDataConfiguration--;
+}
+
+buildUnnamed2892() {
+  var o = new core.List<api.ErrorProto>();
+  o.add(buildErrorProto());
+  o.add(buildErrorProto());
+  return o;
+}
+
+checkUnnamed2892(core.List<api.ErrorProto> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkErrorProto(o[0]);
+  checkErrorProto(o[1]);
+}
+
+buildUnnamed2893() {
+  var o = new core.List<api.TableRow>();
+  o.add(buildTableRow());
+  o.add(buildTableRow());
+  return o;
+}
+
+checkUnnamed2893(core.List<api.TableRow> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTableRow(o[0]);
+  checkTableRow(o[1]);
+}
+
+core.int buildCounterGetQueryResultsResponse = 0;
+buildGetQueryResultsResponse() {
+  var o = new api.GetQueryResultsResponse();
+  buildCounterGetQueryResultsResponse++;
+  if (buildCounterGetQueryResultsResponse < 3) {
+    o.cacheHit = true;
+    o.errors = buildUnnamed2892();
+    o.etag = "foo";
+    o.jobComplete = true;
+    o.jobReference = buildJobReference();
+    o.kind = "foo";
+    o.numDmlAffectedRows = "foo";
+    o.pageToken = "foo";
+    o.rows = buildUnnamed2893();
+    o.schema = buildTableSchema();
+    o.totalBytesProcessed = "foo";
+    o.totalRows = "foo";
+  }
+  buildCounterGetQueryResultsResponse--;
+  return o;
+}
+
+checkGetQueryResultsResponse(api.GetQueryResultsResponse o) {
+  buildCounterGetQueryResultsResponse++;
+  if (buildCounterGetQueryResultsResponse < 3) {
+    unittest.expect(o.cacheHit, unittest.isTrue);
+    checkUnnamed2892(o.errors);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.jobComplete, unittest.isTrue);
+    checkJobReference(o.jobReference);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.numDmlAffectedRows, unittest.equals('foo'));
+    unittest.expect(o.pageToken, unittest.equals('foo'));
+    checkUnnamed2893(o.rows);
+    checkTableSchema(o.schema);
+    unittest.expect(o.totalBytesProcessed, unittest.equals('foo'));
+    unittest.expect(o.totalRows, unittest.equals('foo'));
+  }
+  buildCounterGetQueryResultsResponse--;
+}
+
+core.int buildCounterGetServiceAccountResponse = 0;
+buildGetServiceAccountResponse() {
+  var o = new api.GetServiceAccountResponse();
+  buildCounterGetServiceAccountResponse++;
+  if (buildCounterGetServiceAccountResponse < 3) {
+    o.email = "foo";
+    o.kind = "foo";
+  }
+  buildCounterGetServiceAccountResponse--;
+  return o;
+}
+
+checkGetServiceAccountResponse(api.GetServiceAccountResponse o) {
+  buildCounterGetServiceAccountResponse++;
+  if (buildCounterGetServiceAccountResponse < 3) {
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterGetServiceAccountResponse--;
+}
+
+core.int buildCounterGoogleSheetsOptions = 0;
+buildGoogleSheetsOptions() {
+  var o = new api.GoogleSheetsOptions();
+  buildCounterGoogleSheetsOptions++;
+  if (buildCounterGoogleSheetsOptions < 3) {
+    o.skipLeadingRows = "foo";
+  }
+  buildCounterGoogleSheetsOptions--;
+  return o;
+}
+
+checkGoogleSheetsOptions(api.GoogleSheetsOptions o) {
+  buildCounterGoogleSheetsOptions++;
+  if (buildCounterGoogleSheetsOptions < 3) {
+    unittest.expect(o.skipLeadingRows, unittest.equals('foo'));
+  }
+  buildCounterGoogleSheetsOptions--;
+}
+
+core.int buildCounterJob = 0;
+buildJob() {
+  var o = new api.Job();
+  buildCounterJob++;
+  if (buildCounterJob < 3) {
+    o.configuration = buildJobConfiguration();
+    o.etag = "foo";
+    o.id = "foo";
+    o.jobReference = buildJobReference();
+    o.kind = "foo";
+    o.selfLink = "foo";
+    o.statistics = buildJobStatistics();
+    o.status = buildJobStatus();
+    o.userEmail = "foo";
+  }
+  buildCounterJob--;
+  return o;
+}
+
+checkJob(api.Job o) {
+  buildCounterJob++;
+  if (buildCounterJob < 3) {
+    checkJobConfiguration(o.configuration);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkJobReference(o.jobReference);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    checkJobStatistics(o.statistics);
+    checkJobStatus(o.status);
+    unittest.expect(o.userEmail, unittest.equals('foo'));
+  }
+  buildCounterJob--;
+}
+
+core.int buildCounterJobCancelResponse = 0;
+buildJobCancelResponse() {
+  var o = new api.JobCancelResponse();
+  buildCounterJobCancelResponse++;
+  if (buildCounterJobCancelResponse < 3) {
+    o.job = buildJob();
+    o.kind = "foo";
+  }
+  buildCounterJobCancelResponse--;
+  return o;
+}
+
+checkJobCancelResponse(api.JobCancelResponse o) {
+  buildCounterJobCancelResponse++;
+  if (buildCounterJobCancelResponse < 3) {
+    checkJob(o.job);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterJobCancelResponse--;
+}
+
+buildUnnamed2894() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed2894(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterJobConfiguration = 0;
+buildJobConfiguration() {
+  var o = new api.JobConfiguration();
+  buildCounterJobConfiguration++;
+  if (buildCounterJobConfiguration < 3) {
+    o.copy = buildJobConfigurationTableCopy();
+    o.dryRun = true;
+    o.extract = buildJobConfigurationExtract();
+    o.labels = buildUnnamed2894();
+    o.load = buildJobConfigurationLoad();
+    o.query = buildJobConfigurationQuery();
+  }
+  buildCounterJobConfiguration--;
+  return o;
+}
+
+checkJobConfiguration(api.JobConfiguration o) {
+  buildCounterJobConfiguration++;
+  if (buildCounterJobConfiguration < 3) {
+    checkJobConfigurationTableCopy(o.copy);
+    unittest.expect(o.dryRun, unittest.isTrue);
+    checkJobConfigurationExtract(o.extract);
+    checkUnnamed2894(o.labels);
+    checkJobConfigurationLoad(o.load);
+    checkJobConfigurationQuery(o.query);
+  }
+  buildCounterJobConfiguration--;
+}
+
+buildUnnamed2895() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2895(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterJobConfigurationExtract = 0;
+buildJobConfigurationExtract() {
+  var o = new api.JobConfigurationExtract();
+  buildCounterJobConfigurationExtract++;
+  if (buildCounterJobConfigurationExtract < 3) {
+    o.compression = "foo";
+    o.destinationFormat = "foo";
+    o.destinationUri = "foo";
+    o.destinationUris = buildUnnamed2895();
+    o.fieldDelimiter = "foo";
+    o.printHeader = true;
+    o.sourceTable = buildTableReference();
+  }
+  buildCounterJobConfigurationExtract--;
+  return o;
+}
+
+checkJobConfigurationExtract(api.JobConfigurationExtract o) {
+  buildCounterJobConfigurationExtract++;
+  if (buildCounterJobConfigurationExtract < 3) {
+    unittest.expect(o.compression, unittest.equals('foo'));
+    unittest.expect(o.destinationFormat, unittest.equals('foo'));
+    unittest.expect(o.destinationUri, unittest.equals('foo'));
+    checkUnnamed2895(o.destinationUris);
+    unittest.expect(o.fieldDelimiter, unittest.equals('foo'));
+    unittest.expect(o.printHeader, unittest.isTrue);
+    checkTableReference(o.sourceTable);
+  }
+  buildCounterJobConfigurationExtract--;
+}
+
+buildUnnamed2896() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2896(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2897() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2897(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2898() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2898(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterJobConfigurationLoad = 0;
+buildJobConfigurationLoad() {
+  var o = new api.JobConfigurationLoad();
+  buildCounterJobConfigurationLoad++;
+  if (buildCounterJobConfigurationLoad < 3) {
+    o.allowJaggedRows = true;
+    o.allowQuotedNewlines = true;
+    o.autodetect = true;
+    o.createDisposition = "foo";
+    o.destinationEncryptionConfiguration = buildEncryptionConfiguration();
+    o.destinationTable = buildTableReference();
+    o.encoding = "foo";
+    o.fieldDelimiter = "foo";
+    o.ignoreUnknownValues = true;
+    o.maxBadRecords = 42;
+    o.nullMarker = "foo";
+    o.projectionFields = buildUnnamed2896();
+    o.quote = "foo";
+    o.schema = buildTableSchema();
+    o.schemaInline = "foo";
+    o.schemaInlineFormat = "foo";
+    o.schemaUpdateOptions = buildUnnamed2897();
+    o.skipLeadingRows = 42;
+    o.sourceFormat = "foo";
+    o.sourceUris = buildUnnamed2898();
+    o.timePartitioning = buildTimePartitioning();
+    o.writeDisposition = "foo";
+  }
+  buildCounterJobConfigurationLoad--;
+  return o;
+}
+
+checkJobConfigurationLoad(api.JobConfigurationLoad o) {
+  buildCounterJobConfigurationLoad++;
+  if (buildCounterJobConfigurationLoad < 3) {
+    unittest.expect(o.allowJaggedRows, unittest.isTrue);
+    unittest.expect(o.allowQuotedNewlines, unittest.isTrue);
+    unittest.expect(o.autodetect, unittest.isTrue);
+    unittest.expect(o.createDisposition, unittest.equals('foo'));
+    checkEncryptionConfiguration(o.destinationEncryptionConfiguration);
+    checkTableReference(o.destinationTable);
+    unittest.expect(o.encoding, unittest.equals('foo'));
+    unittest.expect(o.fieldDelimiter, unittest.equals('foo'));
+    unittest.expect(o.ignoreUnknownValues, unittest.isTrue);
+    unittest.expect(o.maxBadRecords, unittest.equals(42));
+    unittest.expect(o.nullMarker, unittest.equals('foo'));
+    checkUnnamed2896(o.projectionFields);
+    unittest.expect(o.quote, unittest.equals('foo'));
+    checkTableSchema(o.schema);
+    unittest.expect(o.schemaInline, unittest.equals('foo'));
+    unittest.expect(o.schemaInlineFormat, unittest.equals('foo'));
+    checkUnnamed2897(o.schemaUpdateOptions);
+    unittest.expect(o.skipLeadingRows, unittest.equals(42));
+    unittest.expect(o.sourceFormat, unittest.equals('foo'));
+    checkUnnamed2898(o.sourceUris);
+    checkTimePartitioning(o.timePartitioning);
+    unittest.expect(o.writeDisposition, unittest.equals('foo'));
+  }
+  buildCounterJobConfigurationLoad--;
+}
+
+buildUnnamed2899() {
+  var o = new core.List<api.QueryParameter>();
+  o.add(buildQueryParameter());
+  o.add(buildQueryParameter());
+  return o;
+}
+
+checkUnnamed2899(core.List<api.QueryParameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkQueryParameter(o[0]);
+  checkQueryParameter(o[1]);
+}
+
+buildUnnamed2900() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2900(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2901() {
+  var o = new core.Map<core.String, api.ExternalDataConfiguration>();
+  o["x"] = buildExternalDataConfiguration();
+  o["y"] = buildExternalDataConfiguration();
+  return o;
+}
+
+checkUnnamed2901(core.Map<core.String, api.ExternalDataConfiguration> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkExternalDataConfiguration(o["x"]);
+  checkExternalDataConfiguration(o["y"]);
+}
+
+buildUnnamed2902() {
+  var o = new core.List<api.UserDefinedFunctionResource>();
+  o.add(buildUserDefinedFunctionResource());
+  o.add(buildUserDefinedFunctionResource());
+  return o;
+}
+
+checkUnnamed2902(core.List<api.UserDefinedFunctionResource> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUserDefinedFunctionResource(o[0]);
+  checkUserDefinedFunctionResource(o[1]);
+}
+
+core.int buildCounterJobConfigurationQuery = 0;
+buildJobConfigurationQuery() {
+  var o = new api.JobConfigurationQuery();
+  buildCounterJobConfigurationQuery++;
+  if (buildCounterJobConfigurationQuery < 3) {
+    o.allowLargeResults = true;
+    o.createDisposition = "foo";
+    o.defaultDataset = buildDatasetReference();
+    o.destinationEncryptionConfiguration = buildEncryptionConfiguration();
+    o.destinationTable = buildTableReference();
+    o.flattenResults = true;
+    o.maximumBillingTier = 42;
+    o.maximumBytesBilled = "foo";
+    o.parameterMode = "foo";
+    o.preserveNulls = true;
+    o.priority = "foo";
+    o.query = "foo";
+    o.queryParameters = buildUnnamed2899();
+    o.schemaUpdateOptions = buildUnnamed2900();
+    o.tableDefinitions = buildUnnamed2901();
+    o.timePartitioning = buildTimePartitioning();
+    o.useLegacySql = true;
+    o.useQueryCache = true;
+    o.userDefinedFunctionResources = buildUnnamed2902();
+    o.writeDisposition = "foo";
+  }
+  buildCounterJobConfigurationQuery--;
+  return o;
+}
+
+checkJobConfigurationQuery(api.JobConfigurationQuery o) {
+  buildCounterJobConfigurationQuery++;
+  if (buildCounterJobConfigurationQuery < 3) {
+    unittest.expect(o.allowLargeResults, unittest.isTrue);
+    unittest.expect(o.createDisposition, unittest.equals('foo'));
+    checkDatasetReference(o.defaultDataset);
+    checkEncryptionConfiguration(o.destinationEncryptionConfiguration);
+    checkTableReference(o.destinationTable);
+    unittest.expect(o.flattenResults, unittest.isTrue);
+    unittest.expect(o.maximumBillingTier, unittest.equals(42));
+    unittest.expect(o.maximumBytesBilled, unittest.equals('foo'));
+    unittest.expect(o.parameterMode, unittest.equals('foo'));
+    unittest.expect(o.preserveNulls, unittest.isTrue);
+    unittest.expect(o.priority, unittest.equals('foo'));
+    unittest.expect(o.query, unittest.equals('foo'));
+    checkUnnamed2899(o.queryParameters);
+    checkUnnamed2900(o.schemaUpdateOptions);
+    checkUnnamed2901(o.tableDefinitions);
+    checkTimePartitioning(o.timePartitioning);
+    unittest.expect(o.useLegacySql, unittest.isTrue);
+    unittest.expect(o.useQueryCache, unittest.isTrue);
+    checkUnnamed2902(o.userDefinedFunctionResources);
+    unittest.expect(o.writeDisposition, unittest.equals('foo'));
+  }
+  buildCounterJobConfigurationQuery--;
+}
+
+buildUnnamed2903() {
+  var o = new core.List<api.TableReference>();
+  o.add(buildTableReference());
+  o.add(buildTableReference());
+  return o;
+}
+
+checkUnnamed2903(core.List<api.TableReference> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTableReference(o[0]);
+  checkTableReference(o[1]);
+}
+
+core.int buildCounterJobConfigurationTableCopy = 0;
+buildJobConfigurationTableCopy() {
+  var o = new api.JobConfigurationTableCopy();
+  buildCounterJobConfigurationTableCopy++;
+  if (buildCounterJobConfigurationTableCopy < 3) {
+    o.createDisposition = "foo";
+    o.destinationEncryptionConfiguration = buildEncryptionConfiguration();
+    o.destinationTable = buildTableReference();
+    o.sourceTable = buildTableReference();
+    o.sourceTables = buildUnnamed2903();
+    o.writeDisposition = "foo";
+  }
+  buildCounterJobConfigurationTableCopy--;
+  return o;
+}
+
+checkJobConfigurationTableCopy(api.JobConfigurationTableCopy o) {
+  buildCounterJobConfigurationTableCopy++;
+  if (buildCounterJobConfigurationTableCopy < 3) {
+    unittest.expect(o.createDisposition, unittest.equals('foo'));
+    checkEncryptionConfiguration(o.destinationEncryptionConfiguration);
+    checkTableReference(o.destinationTable);
+    checkTableReference(o.sourceTable);
+    checkUnnamed2903(o.sourceTables);
+    unittest.expect(o.writeDisposition, unittest.equals('foo'));
+  }
+  buildCounterJobConfigurationTableCopy--;
+}
+
+core.int buildCounterJobListJobs = 0;
+buildJobListJobs() {
+  var o = new api.JobListJobs();
+  buildCounterJobListJobs++;
+  if (buildCounterJobListJobs < 3) {
+    o.configuration = buildJobConfiguration();
+    o.errorResult = buildErrorProto();
+    o.id = "foo";
+    o.jobReference = buildJobReference();
+    o.kind = "foo";
+    o.state = "foo";
+    o.statistics = buildJobStatistics();
+    o.status = buildJobStatus();
+    o.userEmail = "foo";
+  }
+  buildCounterJobListJobs--;
+  return o;
+}
+
+checkJobListJobs(api.JobListJobs o) {
+  buildCounterJobListJobs++;
+  if (buildCounterJobListJobs < 3) {
+    checkJobConfiguration(o.configuration);
+    checkErrorProto(o.errorResult);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkJobReference(o.jobReference);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.state, unittest.equals('foo'));
+    checkJobStatistics(o.statistics);
+    checkJobStatus(o.status);
+    unittest.expect(o.userEmail, unittest.equals('foo'));
+  }
+  buildCounterJobListJobs--;
+}
+
+buildUnnamed2904() {
+  var o = new core.List<api.JobListJobs>();
+  o.add(buildJobListJobs());
+  o.add(buildJobListJobs());
+  return o;
+}
+
+checkUnnamed2904(core.List<api.JobListJobs> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkJobListJobs(o[0]);
+  checkJobListJobs(o[1]);
+}
+
+core.int buildCounterJobList = 0;
+buildJobList() {
+  var o = new api.JobList();
+  buildCounterJobList++;
+  if (buildCounterJobList < 3) {
+    o.etag = "foo";
+    o.jobs = buildUnnamed2904();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterJobList--;
+  return o;
+}
+
+checkJobList(api.JobList o) {
+  buildCounterJobList++;
+  if (buildCounterJobList < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed2904(o.jobs);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterJobList--;
+}
+
+core.int buildCounterJobReference = 0;
+buildJobReference() {
+  var o = new api.JobReference();
+  buildCounterJobReference++;
+  if (buildCounterJobReference < 3) {
+    o.jobId = "foo";
+    o.projectId = "foo";
+  }
+  buildCounterJobReference--;
+  return o;
+}
+
+checkJobReference(api.JobReference o) {
+  buildCounterJobReference++;
+  if (buildCounterJobReference < 3) {
+    unittest.expect(o.jobId, unittest.equals('foo'));
+    unittest.expect(o.projectId, unittest.equals('foo'));
+  }
+  buildCounterJobReference--;
+}
+
+core.int buildCounterJobStatistics = 0;
+buildJobStatistics() {
+  var o = new api.JobStatistics();
+  buildCounterJobStatistics++;
+  if (buildCounterJobStatistics < 3) {
+    o.creationTime = "foo";
+    o.endTime = "foo";
+    o.extract = buildJobStatistics4();
+    o.load = buildJobStatistics3();
+    o.query = buildJobStatistics2();
+    o.startTime = "foo";
+    o.totalBytesProcessed = "foo";
+  }
+  buildCounterJobStatistics--;
+  return o;
+}
+
+checkJobStatistics(api.JobStatistics o) {
+  buildCounterJobStatistics++;
+  if (buildCounterJobStatistics < 3) {
+    unittest.expect(o.creationTime, unittest.equals('foo'));
+    unittest.expect(o.endTime, unittest.equals('foo'));
+    checkJobStatistics4(o.extract);
+    checkJobStatistics3(o.load);
+    checkJobStatistics2(o.query);
+    unittest.expect(o.startTime, unittest.equals('foo'));
+    unittest.expect(o.totalBytesProcessed, unittest.equals('foo'));
+  }
+  buildCounterJobStatistics--;
+}
+
+buildUnnamed2905() {
+  var o = new core.List<api.ExplainQueryStage>();
+  o.add(buildExplainQueryStage());
+  o.add(buildExplainQueryStage());
+  return o;
+}
+
+checkUnnamed2905(core.List<api.ExplainQueryStage> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkExplainQueryStage(o[0]);
+  checkExplainQueryStage(o[1]);
+}
+
+buildUnnamed2906() {
+  var o = new core.List<api.TableReference>();
+  o.add(buildTableReference());
+  o.add(buildTableReference());
+  return o;
+}
+
+checkUnnamed2906(core.List<api.TableReference> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTableReference(o[0]);
+  checkTableReference(o[1]);
+}
+
+buildUnnamed2907() {
+  var o = new core.List<api.QueryParameter>();
+  o.add(buildQueryParameter());
+  o.add(buildQueryParameter());
+  return o;
+}
+
+checkUnnamed2907(core.List<api.QueryParameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkQueryParameter(o[0]);
+  checkQueryParameter(o[1]);
+}
+
+core.int buildCounterJobStatistics2 = 0;
+buildJobStatistics2() {
+  var o = new api.JobStatistics2();
+  buildCounterJobStatistics2++;
+  if (buildCounterJobStatistics2 < 3) {
+    o.billingTier = 42;
+    o.cacheHit = true;
+    o.numDmlAffectedRows = "foo";
+    o.queryPlan = buildUnnamed2905();
+    o.referencedTables = buildUnnamed2906();
+    o.schema = buildTableSchema();
+    o.statementType = "foo";
+    o.totalBytesBilled = "foo";
+    o.totalBytesProcessed = "foo";
+    o.totalSlotMs = "foo";
+    o.undeclaredQueryParameters = buildUnnamed2907();
+  }
+  buildCounterJobStatistics2--;
+  return o;
+}
+
+checkJobStatistics2(api.JobStatistics2 o) {
+  buildCounterJobStatistics2++;
+  if (buildCounterJobStatistics2 < 3) {
+    unittest.expect(o.billingTier, unittest.equals(42));
+    unittest.expect(o.cacheHit, unittest.isTrue);
+    unittest.expect(o.numDmlAffectedRows, unittest.equals('foo'));
+    checkUnnamed2905(o.queryPlan);
+    checkUnnamed2906(o.referencedTables);
+    checkTableSchema(o.schema);
+    unittest.expect(o.statementType, unittest.equals('foo'));
+    unittest.expect(o.totalBytesBilled, unittest.equals('foo'));
+    unittest.expect(o.totalBytesProcessed, unittest.equals('foo'));
+    unittest.expect(o.totalSlotMs, unittest.equals('foo'));
+    checkUnnamed2907(o.undeclaredQueryParameters);
+  }
+  buildCounterJobStatistics2--;
+}
+
+core.int buildCounterJobStatistics3 = 0;
+buildJobStatistics3() {
+  var o = new api.JobStatistics3();
+  buildCounterJobStatistics3++;
+  if (buildCounterJobStatistics3 < 3) {
+    o.badRecords = "foo";
+    o.inputFileBytes = "foo";
+    o.inputFiles = "foo";
+    o.outputBytes = "foo";
+    o.outputRows = "foo";
+  }
+  buildCounterJobStatistics3--;
+  return o;
+}
+
+checkJobStatistics3(api.JobStatistics3 o) {
+  buildCounterJobStatistics3++;
+  if (buildCounterJobStatistics3 < 3) {
+    unittest.expect(o.badRecords, unittest.equals('foo'));
+    unittest.expect(o.inputFileBytes, unittest.equals('foo'));
+    unittest.expect(o.inputFiles, unittest.equals('foo'));
+    unittest.expect(o.outputBytes, unittest.equals('foo'));
+    unittest.expect(o.outputRows, unittest.equals('foo'));
+  }
+  buildCounterJobStatistics3--;
+}
+
+buildUnnamed2908() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2908(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterJobStatistics4 = 0;
+buildJobStatistics4() {
+  var o = new api.JobStatistics4();
+  buildCounterJobStatistics4++;
+  if (buildCounterJobStatistics4 < 3) {
+    o.destinationUriFileCounts = buildUnnamed2908();
+  }
+  buildCounterJobStatistics4--;
+  return o;
+}
+
+checkJobStatistics4(api.JobStatistics4 o) {
+  buildCounterJobStatistics4++;
+  if (buildCounterJobStatistics4 < 3) {
+    checkUnnamed2908(o.destinationUriFileCounts);
+  }
+  buildCounterJobStatistics4--;
+}
+
+buildUnnamed2909() {
+  var o = new core.List<api.ErrorProto>();
+  o.add(buildErrorProto());
+  o.add(buildErrorProto());
+  return o;
+}
+
+checkUnnamed2909(core.List<api.ErrorProto> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkErrorProto(o[0]);
+  checkErrorProto(o[1]);
+}
+
+core.int buildCounterJobStatus = 0;
+buildJobStatus() {
+  var o = new api.JobStatus();
+  buildCounterJobStatus++;
+  if (buildCounterJobStatus < 3) {
+    o.errorResult = buildErrorProto();
+    o.errors = buildUnnamed2909();
+    o.state = "foo";
+  }
+  buildCounterJobStatus--;
+  return o;
+}
+
+checkJobStatus(api.JobStatus o) {
+  buildCounterJobStatus++;
+  if (buildCounterJobStatus < 3) {
+    checkErrorProto(o.errorResult);
+    checkUnnamed2909(o.errors);
+    unittest.expect(o.state, unittest.equals('foo'));
+  }
+  buildCounterJobStatus--;
+}
+
+buildJsonObject() {
+  var o = new api.JsonObject();
+  o["a"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["b"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkJsonObject(api.JsonObject o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o["a"]) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(casted1["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted1["bool"], unittest.equals(true));
+  unittest.expect(casted1["string"], unittest.equals('foo'));
+  var casted2 = (o["b"]) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(casted2["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted2["bool"], unittest.equals(true));
+  unittest.expect(casted2["string"], unittest.equals('foo'));
+}
+
+core.int buildCounterProjectListProjects = 0;
+buildProjectListProjects() {
+  var o = new api.ProjectListProjects();
+  buildCounterProjectListProjects++;
+  if (buildCounterProjectListProjects < 3) {
+    o.friendlyName = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.numericId = "foo";
+    o.projectReference = buildProjectReference();
+  }
+  buildCounterProjectListProjects--;
+  return o;
+}
+
+checkProjectListProjects(api.ProjectListProjects o) {
+  buildCounterProjectListProjects++;
+  if (buildCounterProjectListProjects < 3) {
+    unittest.expect(o.friendlyName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.numericId, unittest.equals('foo'));
+    checkProjectReference(o.projectReference);
+  }
+  buildCounterProjectListProjects--;
+}
+
+buildUnnamed2910() {
+  var o = new core.List<api.ProjectListProjects>();
+  o.add(buildProjectListProjects());
+  o.add(buildProjectListProjects());
+  return o;
+}
+
+checkUnnamed2910(core.List<api.ProjectListProjects> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProjectListProjects(o[0]);
+  checkProjectListProjects(o[1]);
+}
+
+core.int buildCounterProjectList = 0;
+buildProjectList() {
+  var o = new api.ProjectList();
+  buildCounterProjectList++;
+  if (buildCounterProjectList < 3) {
+    o.etag = "foo";
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.projects = buildUnnamed2910();
+    o.totalItems = 42;
+  }
+  buildCounterProjectList--;
+  return o;
+}
+
+checkProjectList(api.ProjectList o) {
+  buildCounterProjectList++;
+  if (buildCounterProjectList < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed2910(o.projects);
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterProjectList--;
+}
+
+core.int buildCounterProjectReference = 0;
+buildProjectReference() {
+  var o = new api.ProjectReference();
+  buildCounterProjectReference++;
+  if (buildCounterProjectReference < 3) {
+    o.projectId = "foo";
+  }
+  buildCounterProjectReference--;
+  return o;
+}
+
+checkProjectReference(api.ProjectReference o) {
+  buildCounterProjectReference++;
+  if (buildCounterProjectReference < 3) {
+    unittest.expect(o.projectId, unittest.equals('foo'));
+  }
+  buildCounterProjectReference--;
+}
+
+core.int buildCounterQueryParameter = 0;
+buildQueryParameter() {
+  var o = new api.QueryParameter();
+  buildCounterQueryParameter++;
+  if (buildCounterQueryParameter < 3) {
+    o.name = "foo";
+    o.parameterType = buildQueryParameterType();
+    o.parameterValue = buildQueryParameterValue();
+  }
+  buildCounterQueryParameter--;
+  return o;
+}
+
+checkQueryParameter(api.QueryParameter o) {
+  buildCounterQueryParameter++;
+  if (buildCounterQueryParameter < 3) {
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkQueryParameterType(o.parameterType);
+    checkQueryParameterValue(o.parameterValue);
+  }
+  buildCounterQueryParameter--;
+}
+
+core.int buildCounterQueryParameterTypeStructTypes = 0;
+buildQueryParameterTypeStructTypes() {
+  var o = new api.QueryParameterTypeStructTypes();
+  buildCounterQueryParameterTypeStructTypes++;
+  if (buildCounterQueryParameterTypeStructTypes < 3) {
+    o.description = "foo";
+    o.name = "foo";
+    o.type = buildQueryParameterType();
+  }
+  buildCounterQueryParameterTypeStructTypes--;
+  return o;
+}
+
+checkQueryParameterTypeStructTypes(api.QueryParameterTypeStructTypes o) {
+  buildCounterQueryParameterTypeStructTypes++;
+  if (buildCounterQueryParameterTypeStructTypes < 3) {
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkQueryParameterType(o.type);
+  }
+  buildCounterQueryParameterTypeStructTypes--;
+}
+
+buildUnnamed2911() {
+  var o = new core.List<api.QueryParameterTypeStructTypes>();
+  o.add(buildQueryParameterTypeStructTypes());
+  o.add(buildQueryParameterTypeStructTypes());
+  return o;
+}
+
+checkUnnamed2911(core.List<api.QueryParameterTypeStructTypes> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkQueryParameterTypeStructTypes(o[0]);
+  checkQueryParameterTypeStructTypes(o[1]);
+}
+
+core.int buildCounterQueryParameterType = 0;
+buildQueryParameterType() {
+  var o = new api.QueryParameterType();
+  buildCounterQueryParameterType++;
+  if (buildCounterQueryParameterType < 3) {
+    o.arrayType = buildQueryParameterType();
+    o.structTypes = buildUnnamed2911();
+    o.type = "foo";
+  }
+  buildCounterQueryParameterType--;
+  return o;
+}
+
+checkQueryParameterType(api.QueryParameterType o) {
+  buildCounterQueryParameterType++;
+  if (buildCounterQueryParameterType < 3) {
+    checkQueryParameterType(o.arrayType);
+    checkUnnamed2911(o.structTypes);
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterQueryParameterType--;
+}
+
+buildUnnamed2912() {
+  var o = new core.List<api.QueryParameterValue>();
+  o.add(buildQueryParameterValue());
+  o.add(buildQueryParameterValue());
+  return o;
+}
+
+checkUnnamed2912(core.List<api.QueryParameterValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkQueryParameterValue(o[0]);
+  checkQueryParameterValue(o[1]);
+}
+
+buildUnnamed2913() {
+  var o = new core.Map<core.String, api.QueryParameterValue>();
+  o["x"] = buildQueryParameterValue();
+  o["y"] = buildQueryParameterValue();
+  return o;
+}
+
+checkUnnamed2913(core.Map<core.String, api.QueryParameterValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkQueryParameterValue(o["x"]);
+  checkQueryParameterValue(o["y"]);
+}
+
+core.int buildCounterQueryParameterValue = 0;
+buildQueryParameterValue() {
+  var o = new api.QueryParameterValue();
+  buildCounterQueryParameterValue++;
+  if (buildCounterQueryParameterValue < 3) {
+    o.arrayValues = buildUnnamed2912();
+    o.structValues = buildUnnamed2913();
+    o.value = "foo";
+  }
+  buildCounterQueryParameterValue--;
+  return o;
+}
+
+checkQueryParameterValue(api.QueryParameterValue o) {
+  buildCounterQueryParameterValue++;
+  if (buildCounterQueryParameterValue < 3) {
+    checkUnnamed2912(o.arrayValues);
+    checkUnnamed2913(o.structValues);
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterQueryParameterValue--;
+}
+
+buildUnnamed2914() {
+  var o = new core.List<api.QueryParameter>();
+  o.add(buildQueryParameter());
+  o.add(buildQueryParameter());
+  return o;
+}
+
+checkUnnamed2914(core.List<api.QueryParameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkQueryParameter(o[0]);
+  checkQueryParameter(o[1]);
+}
+
+core.int buildCounterQueryRequest = 0;
+buildQueryRequest() {
+  var o = new api.QueryRequest();
+  buildCounterQueryRequest++;
+  if (buildCounterQueryRequest < 3) {
+    o.defaultDataset = buildDatasetReference();
+    o.dryRun = true;
+    o.kind = "foo";
+    o.maxResults = 42;
+    o.parameterMode = "foo";
+    o.preserveNulls = true;
+    o.query = "foo";
+    o.queryParameters = buildUnnamed2914();
+    o.timeoutMs = 42;
+    o.useLegacySql = true;
+    o.useQueryCache = true;
+  }
+  buildCounterQueryRequest--;
+  return o;
+}
+
+checkQueryRequest(api.QueryRequest o) {
+  buildCounterQueryRequest++;
+  if (buildCounterQueryRequest < 3) {
+    checkDatasetReference(o.defaultDataset);
+    unittest.expect(o.dryRun, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.maxResults, unittest.equals(42));
+    unittest.expect(o.parameterMode, unittest.equals('foo'));
+    unittest.expect(o.preserveNulls, unittest.isTrue);
+    unittest.expect(o.query, unittest.equals('foo'));
+    checkUnnamed2914(o.queryParameters);
+    unittest.expect(o.timeoutMs, unittest.equals(42));
+    unittest.expect(o.useLegacySql, unittest.isTrue);
+    unittest.expect(o.useQueryCache, unittest.isTrue);
+  }
+  buildCounterQueryRequest--;
+}
+
+buildUnnamed2915() {
+  var o = new core.List<api.ErrorProto>();
+  o.add(buildErrorProto());
+  o.add(buildErrorProto());
+  return o;
+}
+
+checkUnnamed2915(core.List<api.ErrorProto> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkErrorProto(o[0]);
+  checkErrorProto(o[1]);
+}
+
+buildUnnamed2916() {
+  var o = new core.List<api.TableRow>();
+  o.add(buildTableRow());
+  o.add(buildTableRow());
+  return o;
+}
+
+checkUnnamed2916(core.List<api.TableRow> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTableRow(o[0]);
+  checkTableRow(o[1]);
+}
+
+core.int buildCounterQueryResponse = 0;
+buildQueryResponse() {
+  var o = new api.QueryResponse();
+  buildCounterQueryResponse++;
+  if (buildCounterQueryResponse < 3) {
+    o.cacheHit = true;
+    o.errors = buildUnnamed2915();
+    o.jobComplete = true;
+    o.jobReference = buildJobReference();
+    o.kind = "foo";
+    o.numDmlAffectedRows = "foo";
+    o.pageToken = "foo";
+    o.rows = buildUnnamed2916();
+    o.schema = buildTableSchema();
+    o.totalBytesProcessed = "foo";
+    o.totalRows = "foo";
+  }
+  buildCounterQueryResponse--;
+  return o;
+}
+
+checkQueryResponse(api.QueryResponse o) {
+  buildCounterQueryResponse++;
+  if (buildCounterQueryResponse < 3) {
+    unittest.expect(o.cacheHit, unittest.isTrue);
+    checkUnnamed2915(o.errors);
+    unittest.expect(o.jobComplete, unittest.isTrue);
+    checkJobReference(o.jobReference);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.numDmlAffectedRows, unittest.equals('foo'));
+    unittest.expect(o.pageToken, unittest.equals('foo'));
+    checkUnnamed2916(o.rows);
+    checkTableSchema(o.schema);
+    unittest.expect(o.totalBytesProcessed, unittest.equals('foo'));
+    unittest.expect(o.totalRows, unittest.equals('foo'));
+  }
+  buildCounterQueryResponse--;
+}
+
+core.int buildCounterStreamingbuffer = 0;
+buildStreamingbuffer() {
+  var o = new api.Streamingbuffer();
+  buildCounterStreamingbuffer++;
+  if (buildCounterStreamingbuffer < 3) {
+    o.estimatedBytes = "foo";
+    o.estimatedRows = "foo";
+    o.oldestEntryTime = "foo";
+  }
+  buildCounterStreamingbuffer--;
+  return o;
+}
+
+checkStreamingbuffer(api.Streamingbuffer o) {
+  buildCounterStreamingbuffer++;
+  if (buildCounterStreamingbuffer < 3) {
+    unittest.expect(o.estimatedBytes, unittest.equals('foo'));
+    unittest.expect(o.estimatedRows, unittest.equals('foo'));
+    unittest.expect(o.oldestEntryTime, unittest.equals('foo'));
+  }
+  buildCounterStreamingbuffer--;
+}
+
+buildUnnamed2917() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed2917(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterTable = 0;
+buildTable() {
+  var o = new api.Table();
+  buildCounterTable++;
+  if (buildCounterTable < 3) {
+    o.creationTime = "foo";
+    o.description = "foo";
+    o.encryptionConfiguration = buildEncryptionConfiguration();
+    o.etag = "foo";
+    o.expirationTime = "foo";
+    o.externalDataConfiguration = buildExternalDataConfiguration();
+    o.friendlyName = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.labels = buildUnnamed2917();
+    o.lastModifiedTime = "foo";
+    o.location = "foo";
+    o.numBytes = "foo";
+    o.numLongTermBytes = "foo";
+    o.numRows = "foo";
+    o.schema = buildTableSchema();
+    o.selfLink = "foo";
+    o.streamingBuffer = buildStreamingbuffer();
+    o.tableReference = buildTableReference();
+    o.timePartitioning = buildTimePartitioning();
+    o.type = "foo";
+    o.view = buildViewDefinition();
+  }
+  buildCounterTable--;
+  return o;
+}
+
+checkTable(api.Table o) {
+  buildCounterTable++;
+  if (buildCounterTable < 3) {
+    unittest.expect(o.creationTime, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    checkEncryptionConfiguration(o.encryptionConfiguration);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.expirationTime, unittest.equals('foo'));
+    checkExternalDataConfiguration(o.externalDataConfiguration);
+    unittest.expect(o.friendlyName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2917(o.labels);
+    unittest.expect(o.lastModifiedTime, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    unittest.expect(o.numBytes, unittest.equals('foo'));
+    unittest.expect(o.numLongTermBytes, unittest.equals('foo'));
+    unittest.expect(o.numRows, unittest.equals('foo'));
+    checkTableSchema(o.schema);
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    checkStreamingbuffer(o.streamingBuffer);
+    checkTableReference(o.tableReference);
+    checkTimePartitioning(o.timePartitioning);
+    unittest.expect(o.type, unittest.equals('foo'));
+    checkViewDefinition(o.view);
+  }
+  buildCounterTable--;
+}
+
+core.int buildCounterTableCell = 0;
+buildTableCell() {
+  var o = new api.TableCell();
+  buildCounterTableCell++;
+  if (buildCounterTableCell < 3) {
+    o.v = {
+      'list': [1, 2, 3],
+      'bool': true,
+      'string': 'foo'
+    };
+  }
+  buildCounterTableCell--;
+  return o;
+}
+
+checkTableCell(api.TableCell o) {
+  buildCounterTableCell++;
+  if (buildCounterTableCell < 3) {
+    var casted3 = (o.v) as core.Map;
+    unittest.expect(casted3, unittest.hasLength(3));
+    unittest.expect(casted3["list"], unittest.equals([1, 2, 3]));
+    unittest.expect(casted3["bool"], unittest.equals(true));
+    unittest.expect(casted3["string"], unittest.equals('foo'));
+  }
+  buildCounterTableCell--;
+}
+
+core.int buildCounterTableDataInsertAllRequestRows = 0;
+buildTableDataInsertAllRequestRows() {
+  var o = new api.TableDataInsertAllRequestRows();
+  buildCounterTableDataInsertAllRequestRows++;
+  if (buildCounterTableDataInsertAllRequestRows < 3) {
+    o.insertId = "foo";
+    o.json = buildJsonObject();
+  }
+  buildCounterTableDataInsertAllRequestRows--;
+  return o;
+}
+
+checkTableDataInsertAllRequestRows(api.TableDataInsertAllRequestRows o) {
+  buildCounterTableDataInsertAllRequestRows++;
+  if (buildCounterTableDataInsertAllRequestRows < 3) {
+    unittest.expect(o.insertId, unittest.equals('foo'));
+    checkJsonObject(o.json);
+  }
+  buildCounterTableDataInsertAllRequestRows--;
+}
+
+buildUnnamed2918() {
+  var o = new core.List<api.TableDataInsertAllRequestRows>();
+  o.add(buildTableDataInsertAllRequestRows());
+  o.add(buildTableDataInsertAllRequestRows());
+  return o;
+}
+
+checkUnnamed2918(core.List<api.TableDataInsertAllRequestRows> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTableDataInsertAllRequestRows(o[0]);
+  checkTableDataInsertAllRequestRows(o[1]);
+}
+
+core.int buildCounterTableDataInsertAllRequest = 0;
+buildTableDataInsertAllRequest() {
+  var o = new api.TableDataInsertAllRequest();
+  buildCounterTableDataInsertAllRequest++;
+  if (buildCounterTableDataInsertAllRequest < 3) {
+    o.ignoreUnknownValues = true;
+    o.kind = "foo";
+    o.rows = buildUnnamed2918();
+    o.skipInvalidRows = true;
+    o.templateSuffix = "foo";
+  }
+  buildCounterTableDataInsertAllRequest--;
+  return o;
+}
+
+checkTableDataInsertAllRequest(api.TableDataInsertAllRequest o) {
+  buildCounterTableDataInsertAllRequest++;
+  if (buildCounterTableDataInsertAllRequest < 3) {
+    unittest.expect(o.ignoreUnknownValues, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2918(o.rows);
+    unittest.expect(o.skipInvalidRows, unittest.isTrue);
+    unittest.expect(o.templateSuffix, unittest.equals('foo'));
+  }
+  buildCounterTableDataInsertAllRequest--;
+}
+
+buildUnnamed2919() {
+  var o = new core.List<api.ErrorProto>();
+  o.add(buildErrorProto());
+  o.add(buildErrorProto());
+  return o;
+}
+
+checkUnnamed2919(core.List<api.ErrorProto> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkErrorProto(o[0]);
+  checkErrorProto(o[1]);
+}
+
+core.int buildCounterTableDataInsertAllResponseInsertErrors = 0;
+buildTableDataInsertAllResponseInsertErrors() {
+  var o = new api.TableDataInsertAllResponseInsertErrors();
+  buildCounterTableDataInsertAllResponseInsertErrors++;
+  if (buildCounterTableDataInsertAllResponseInsertErrors < 3) {
+    o.errors = buildUnnamed2919();
+    o.index = 42;
+  }
+  buildCounterTableDataInsertAllResponseInsertErrors--;
+  return o;
+}
+
+checkTableDataInsertAllResponseInsertErrors(
+    api.TableDataInsertAllResponseInsertErrors o) {
+  buildCounterTableDataInsertAllResponseInsertErrors++;
+  if (buildCounterTableDataInsertAllResponseInsertErrors < 3) {
+    checkUnnamed2919(o.errors);
+    unittest.expect(o.index, unittest.equals(42));
+  }
+  buildCounterTableDataInsertAllResponseInsertErrors--;
+}
+
+buildUnnamed2920() {
+  var o = new core.List<api.TableDataInsertAllResponseInsertErrors>();
+  o.add(buildTableDataInsertAllResponseInsertErrors());
+  o.add(buildTableDataInsertAllResponseInsertErrors());
+  return o;
+}
+
+checkUnnamed2920(core.List<api.TableDataInsertAllResponseInsertErrors> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTableDataInsertAllResponseInsertErrors(o[0]);
+  checkTableDataInsertAllResponseInsertErrors(o[1]);
+}
+
+core.int buildCounterTableDataInsertAllResponse = 0;
+buildTableDataInsertAllResponse() {
+  var o = new api.TableDataInsertAllResponse();
+  buildCounterTableDataInsertAllResponse++;
+  if (buildCounterTableDataInsertAllResponse < 3) {
+    o.insertErrors = buildUnnamed2920();
+    o.kind = "foo";
+  }
+  buildCounterTableDataInsertAllResponse--;
+  return o;
+}
+
+checkTableDataInsertAllResponse(api.TableDataInsertAllResponse o) {
+  buildCounterTableDataInsertAllResponse++;
+  if (buildCounterTableDataInsertAllResponse < 3) {
+    checkUnnamed2920(o.insertErrors);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterTableDataInsertAllResponse--;
+}
+
+buildUnnamed2921() {
+  var o = new core.List<api.TableRow>();
+  o.add(buildTableRow());
+  o.add(buildTableRow());
+  return o;
+}
+
+checkUnnamed2921(core.List<api.TableRow> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTableRow(o[0]);
+  checkTableRow(o[1]);
+}
+
+core.int buildCounterTableDataList = 0;
+buildTableDataList() {
+  var o = new api.TableDataList();
+  buildCounterTableDataList++;
+  if (buildCounterTableDataList < 3) {
+    o.etag = "foo";
+    o.kind = "foo";
+    o.pageToken = "foo";
+    o.rows = buildUnnamed2921();
+    o.totalRows = "foo";
+  }
+  buildCounterTableDataList--;
+  return o;
+}
+
+checkTableDataList(api.TableDataList o) {
+  buildCounterTableDataList++;
+  if (buildCounterTableDataList < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.pageToken, unittest.equals('foo'));
+    checkUnnamed2921(o.rows);
+    unittest.expect(o.totalRows, unittest.equals('foo'));
+  }
+  buildCounterTableDataList--;
+}
+
+buildUnnamed2922() {
+  var o = new core.List<api.TableFieldSchema>();
+  o.add(buildTableFieldSchema());
+  o.add(buildTableFieldSchema());
+  return o;
+}
+
+checkUnnamed2922(core.List<api.TableFieldSchema> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTableFieldSchema(o[0]);
+  checkTableFieldSchema(o[1]);
+}
+
+core.int buildCounterTableFieldSchema = 0;
+buildTableFieldSchema() {
+  var o = new api.TableFieldSchema();
+  buildCounterTableFieldSchema++;
+  if (buildCounterTableFieldSchema < 3) {
+    o.description = "foo";
+    o.fields = buildUnnamed2922();
+    o.mode = "foo";
+    o.name = "foo";
+    o.type = "foo";
+  }
+  buildCounterTableFieldSchema--;
+  return o;
+}
+
+checkTableFieldSchema(api.TableFieldSchema o) {
+  buildCounterTableFieldSchema++;
+  if (buildCounterTableFieldSchema < 3) {
+    unittest.expect(o.description, unittest.equals('foo'));
+    checkUnnamed2922(o.fields);
+    unittest.expect(o.mode, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterTableFieldSchema--;
+}
+
+buildUnnamed2923() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed2923(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterTableListTablesView = 0;
+buildTableListTablesView() {
+  var o = new api.TableListTablesView();
+  buildCounterTableListTablesView++;
+  if (buildCounterTableListTablesView < 3) {
+    o.useLegacySql = true;
+  }
+  buildCounterTableListTablesView--;
+  return o;
+}
+
+checkTableListTablesView(api.TableListTablesView o) {
+  buildCounterTableListTablesView++;
+  if (buildCounterTableListTablesView < 3) {
+    unittest.expect(o.useLegacySql, unittest.isTrue);
+  }
+  buildCounterTableListTablesView--;
+}
+
+core.int buildCounterTableListTables = 0;
+buildTableListTables() {
+  var o = new api.TableListTables();
+  buildCounterTableListTables++;
+  if (buildCounterTableListTables < 3) {
+    o.creationTime = "foo";
+    o.expirationTime = "foo";
+    o.friendlyName = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.labels = buildUnnamed2923();
+    o.tableReference = buildTableReference();
+    o.timePartitioning = buildTimePartitioning();
+    o.type = "foo";
+    o.view = buildTableListTablesView();
+  }
+  buildCounterTableListTables--;
+  return o;
+}
+
+checkTableListTables(api.TableListTables o) {
+  buildCounterTableListTables++;
+  if (buildCounterTableListTables < 3) {
+    unittest.expect(o.creationTime, unittest.equals('foo'));
+    unittest.expect(o.expirationTime, unittest.equals('foo'));
+    unittest.expect(o.friendlyName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2923(o.labels);
+    checkTableReference(o.tableReference);
+    checkTimePartitioning(o.timePartitioning);
+    unittest.expect(o.type, unittest.equals('foo'));
+    checkTableListTablesView(o.view);
+  }
+  buildCounterTableListTables--;
+}
+
+buildUnnamed2924() {
+  var o = new core.List<api.TableListTables>();
+  o.add(buildTableListTables());
+  o.add(buildTableListTables());
+  return o;
+}
+
+checkUnnamed2924(core.List<api.TableListTables> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTableListTables(o[0]);
+  checkTableListTables(o[1]);
+}
+
+core.int buildCounterTableList = 0;
+buildTableList() {
+  var o = new api.TableList();
+  buildCounterTableList++;
+  if (buildCounterTableList < 3) {
+    o.etag = "foo";
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.tables = buildUnnamed2924();
+    o.totalItems = 42;
+  }
+  buildCounterTableList--;
+  return o;
+}
+
+checkTableList(api.TableList o) {
+  buildCounterTableList++;
+  if (buildCounterTableList < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed2924(o.tables);
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterTableList--;
+}
+
+core.int buildCounterTableReference = 0;
+buildTableReference() {
+  var o = new api.TableReference();
+  buildCounterTableReference++;
+  if (buildCounterTableReference < 3) {
+    o.datasetId = "foo";
+    o.projectId = "foo";
+    o.tableId = "foo";
+  }
+  buildCounterTableReference--;
+  return o;
+}
+
+checkTableReference(api.TableReference o) {
+  buildCounterTableReference++;
+  if (buildCounterTableReference < 3) {
+    unittest.expect(o.datasetId, unittest.equals('foo'));
+    unittest.expect(o.projectId, unittest.equals('foo'));
+    unittest.expect(o.tableId, unittest.equals('foo'));
+  }
+  buildCounterTableReference--;
+}
+
+buildUnnamed2925() {
+  var o = new core.List<api.TableCell>();
+  o.add(buildTableCell());
+  o.add(buildTableCell());
+  return o;
+}
+
+checkUnnamed2925(core.List<api.TableCell> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTableCell(o[0]);
+  checkTableCell(o[1]);
+}
+
+core.int buildCounterTableRow = 0;
+buildTableRow() {
+  var o = new api.TableRow();
+  buildCounterTableRow++;
+  if (buildCounterTableRow < 3) {
+    o.f = buildUnnamed2925();
+  }
+  buildCounterTableRow--;
+  return o;
+}
+
+checkTableRow(api.TableRow o) {
+  buildCounterTableRow++;
+  if (buildCounterTableRow < 3) {
+    checkUnnamed2925(o.f);
+  }
+  buildCounterTableRow--;
+}
+
+buildUnnamed2926() {
+  var o = new core.List<api.TableFieldSchema>();
+  o.add(buildTableFieldSchema());
+  o.add(buildTableFieldSchema());
+  return o;
+}
+
+checkUnnamed2926(core.List<api.TableFieldSchema> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTableFieldSchema(o[0]);
+  checkTableFieldSchema(o[1]);
+}
+
+core.int buildCounterTableSchema = 0;
+buildTableSchema() {
+  var o = new api.TableSchema();
+  buildCounterTableSchema++;
+  if (buildCounterTableSchema < 3) {
+    o.fields = buildUnnamed2926();
+  }
+  buildCounterTableSchema--;
+  return o;
+}
+
+checkTableSchema(api.TableSchema o) {
+  buildCounterTableSchema++;
+  if (buildCounterTableSchema < 3) {
+    checkUnnamed2926(o.fields);
+  }
+  buildCounterTableSchema--;
+}
+
+core.int buildCounterTimePartitioning = 0;
+buildTimePartitioning() {
+  var o = new api.TimePartitioning();
+  buildCounterTimePartitioning++;
+  if (buildCounterTimePartitioning < 3) {
+    o.expirationMs = "foo";
+    o.field = "foo";
+    o.type = "foo";
+  }
+  buildCounterTimePartitioning--;
+  return o;
+}
+
+checkTimePartitioning(api.TimePartitioning o) {
+  buildCounterTimePartitioning++;
+  if (buildCounterTimePartitioning < 3) {
+    unittest.expect(o.expirationMs, unittest.equals('foo'));
+    unittest.expect(o.field, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterTimePartitioning--;
+}
+
+core.int buildCounterUserDefinedFunctionResource = 0;
+buildUserDefinedFunctionResource() {
+  var o = new api.UserDefinedFunctionResource();
+  buildCounterUserDefinedFunctionResource++;
+  if (buildCounterUserDefinedFunctionResource < 3) {
+    o.inlineCode = "foo";
+    o.resourceUri = "foo";
+  }
+  buildCounterUserDefinedFunctionResource--;
+  return o;
+}
+
+checkUserDefinedFunctionResource(api.UserDefinedFunctionResource o) {
+  buildCounterUserDefinedFunctionResource++;
+  if (buildCounterUserDefinedFunctionResource < 3) {
+    unittest.expect(o.inlineCode, unittest.equals('foo'));
+    unittest.expect(o.resourceUri, unittest.equals('foo'));
+  }
+  buildCounterUserDefinedFunctionResource--;
+}
+
+buildUnnamed2927() {
+  var o = new core.List<api.UserDefinedFunctionResource>();
+  o.add(buildUserDefinedFunctionResource());
+  o.add(buildUserDefinedFunctionResource());
+  return o;
+}
+
+checkUnnamed2927(core.List<api.UserDefinedFunctionResource> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUserDefinedFunctionResource(o[0]);
+  checkUserDefinedFunctionResource(o[1]);
+}
+
+core.int buildCounterViewDefinition = 0;
+buildViewDefinition() {
+  var o = new api.ViewDefinition();
+  buildCounterViewDefinition++;
+  if (buildCounterViewDefinition < 3) {
+    o.query = "foo";
+    o.useLegacySql = true;
+    o.userDefinedFunctionResources = buildUnnamed2927();
+  }
+  buildCounterViewDefinition--;
+  return o;
+}
+
+checkViewDefinition(api.ViewDefinition o) {
+  buildCounterViewDefinition++;
+  if (buildCounterViewDefinition < 3) {
+    unittest.expect(o.query, unittest.equals('foo'));
+    unittest.expect(o.useLegacySql, unittest.isTrue);
+    checkUnnamed2927(o.userDefinedFunctionResources);
+  }
+  buildCounterViewDefinition--;
+}
+
+buildUnnamed2928() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2928(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-BigtableColumn", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBigtableColumn();
+      var od = new api.BigtableColumn.fromJson(o.toJson());
+      checkBigtableColumn(od);
+    });
+  });
+
+  unittest.group("obj-schema-BigtableColumnFamily", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBigtableColumnFamily();
+      var od = new api.BigtableColumnFamily.fromJson(o.toJson());
+      checkBigtableColumnFamily(od);
+    });
+  });
+
+  unittest.group("obj-schema-BigtableOptions", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBigtableOptions();
+      var od = new api.BigtableOptions.fromJson(o.toJson());
+      checkBigtableOptions(od);
+    });
+  });
+
+  unittest.group("obj-schema-CsvOptions", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCsvOptions();
+      var od = new api.CsvOptions.fromJson(o.toJson());
+      checkCsvOptions(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatasetAccess", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatasetAccess();
+      var od = new api.DatasetAccess.fromJson(o.toJson());
+      checkDatasetAccess(od);
+    });
+  });
+
+  unittest.group("obj-schema-Dataset", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDataset();
+      var od = new api.Dataset.fromJson(o.toJson());
+      checkDataset(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatasetListDatasets", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatasetListDatasets();
+      var od = new api.DatasetListDatasets.fromJson(o.toJson());
+      checkDatasetListDatasets(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatasetList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatasetList();
+      var od = new api.DatasetList.fromJson(o.toJson());
+      checkDatasetList(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatasetReference", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatasetReference();
+      var od = new api.DatasetReference.fromJson(o.toJson());
+      checkDatasetReference(od);
+    });
+  });
+
+  unittest.group("obj-schema-EncryptionConfiguration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEncryptionConfiguration();
+      var od = new api.EncryptionConfiguration.fromJson(o.toJson());
+      checkEncryptionConfiguration(od);
+    });
+  });
+
+  unittest.group("obj-schema-ErrorProto", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildErrorProto();
+      var od = new api.ErrorProto.fromJson(o.toJson());
+      checkErrorProto(od);
+    });
+  });
+
+  unittest.group("obj-schema-ExplainQueryStage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildExplainQueryStage();
+      var od = new api.ExplainQueryStage.fromJson(o.toJson());
+      checkExplainQueryStage(od);
+    });
+  });
+
+  unittest.group("obj-schema-ExplainQueryStep", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildExplainQueryStep();
+      var od = new api.ExplainQueryStep.fromJson(o.toJson());
+      checkExplainQueryStep(od);
+    });
+  });
+
+  unittest.group("obj-schema-ExternalDataConfiguration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildExternalDataConfiguration();
+      var od = new api.ExternalDataConfiguration.fromJson(o.toJson());
+      checkExternalDataConfiguration(od);
+    });
+  });
+
+  unittest.group("obj-schema-GetQueryResultsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGetQueryResultsResponse();
+      var od = new api.GetQueryResultsResponse.fromJson(o.toJson());
+      checkGetQueryResultsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-GetServiceAccountResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGetServiceAccountResponse();
+      var od = new api.GetServiceAccountResponse.fromJson(o.toJson());
+      checkGetServiceAccountResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-GoogleSheetsOptions", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGoogleSheetsOptions();
+      var od = new api.GoogleSheetsOptions.fromJson(o.toJson());
+      checkGoogleSheetsOptions(od);
+    });
+  });
+
+  unittest.group("obj-schema-Job", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJob();
+      var od = new api.Job.fromJson(o.toJson());
+      checkJob(od);
+    });
+  });
+
+  unittest.group("obj-schema-JobCancelResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJobCancelResponse();
+      var od = new api.JobCancelResponse.fromJson(o.toJson());
+      checkJobCancelResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-JobConfiguration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJobConfiguration();
+      var od = new api.JobConfiguration.fromJson(o.toJson());
+      checkJobConfiguration(od);
+    });
+  });
+
+  unittest.group("obj-schema-JobConfigurationExtract", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJobConfigurationExtract();
+      var od = new api.JobConfigurationExtract.fromJson(o.toJson());
+      checkJobConfigurationExtract(od);
+    });
+  });
+
+  unittest.group("obj-schema-JobConfigurationLoad", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJobConfigurationLoad();
+      var od = new api.JobConfigurationLoad.fromJson(o.toJson());
+      checkJobConfigurationLoad(od);
+    });
+  });
+
+  unittest.group("obj-schema-JobConfigurationQuery", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJobConfigurationQuery();
+      var od = new api.JobConfigurationQuery.fromJson(o.toJson());
+      checkJobConfigurationQuery(od);
+    });
+  });
+
+  unittest.group("obj-schema-JobConfigurationTableCopy", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJobConfigurationTableCopy();
+      var od = new api.JobConfigurationTableCopy.fromJson(o.toJson());
+      checkJobConfigurationTableCopy(od);
+    });
+  });
+
+  unittest.group("obj-schema-JobListJobs", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJobListJobs();
+      var od = new api.JobListJobs.fromJson(o.toJson());
+      checkJobListJobs(od);
+    });
+  });
+
+  unittest.group("obj-schema-JobList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJobList();
+      var od = new api.JobList.fromJson(o.toJson());
+      checkJobList(od);
+    });
+  });
+
+  unittest.group("obj-schema-JobReference", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJobReference();
+      var od = new api.JobReference.fromJson(o.toJson());
+      checkJobReference(od);
+    });
+  });
+
+  unittest.group("obj-schema-JobStatistics", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJobStatistics();
+      var od = new api.JobStatistics.fromJson(o.toJson());
+      checkJobStatistics(od);
+    });
+  });
+
+  unittest.group("obj-schema-JobStatistics2", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJobStatistics2();
+      var od = new api.JobStatistics2.fromJson(o.toJson());
+      checkJobStatistics2(od);
+    });
+  });
+
+  unittest.group("obj-schema-JobStatistics3", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJobStatistics3();
+      var od = new api.JobStatistics3.fromJson(o.toJson());
+      checkJobStatistics3(od);
+    });
+  });
+
+  unittest.group("obj-schema-JobStatistics4", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJobStatistics4();
+      var od = new api.JobStatistics4.fromJson(o.toJson());
+      checkJobStatistics4(od);
+    });
+  });
+
+  unittest.group("obj-schema-JobStatus", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJobStatus();
+      var od = new api.JobStatus.fromJson(o.toJson());
+      checkJobStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-JsonObject", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildJsonObject();
+      var od = new api.JsonObject.fromJson(o.toJson());
+      checkJsonObject(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProjectListProjects", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProjectListProjects();
+      var od = new api.ProjectListProjects.fromJson(o.toJson());
+      checkProjectListProjects(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProjectList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProjectList();
+      var od = new api.ProjectList.fromJson(o.toJson());
+      checkProjectList(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProjectReference", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProjectReference();
+      var od = new api.ProjectReference.fromJson(o.toJson());
+      checkProjectReference(od);
+    });
+  });
+
+  unittest.group("obj-schema-QueryParameter", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildQueryParameter();
+      var od = new api.QueryParameter.fromJson(o.toJson());
+      checkQueryParameter(od);
+    });
+  });
+
+  unittest.group("obj-schema-QueryParameterTypeStructTypes", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildQueryParameterTypeStructTypes();
+      var od = new api.QueryParameterTypeStructTypes.fromJson(o.toJson());
+      checkQueryParameterTypeStructTypes(od);
+    });
+  });
+
+  unittest.group("obj-schema-QueryParameterType", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildQueryParameterType();
+      var od = new api.QueryParameterType.fromJson(o.toJson());
+      checkQueryParameterType(od);
+    });
+  });
+
+  unittest.group("obj-schema-QueryParameterValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildQueryParameterValue();
+      var od = new api.QueryParameterValue.fromJson(o.toJson());
+      checkQueryParameterValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-QueryRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildQueryRequest();
+      var od = new api.QueryRequest.fromJson(o.toJson());
+      checkQueryRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-QueryResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildQueryResponse();
+      var od = new api.QueryResponse.fromJson(o.toJson());
+      checkQueryResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Streamingbuffer", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStreamingbuffer();
+      var od = new api.Streamingbuffer.fromJson(o.toJson());
+      checkStreamingbuffer(od);
+    });
+  });
+
+  unittest.group("obj-schema-Table", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTable();
+      var od = new api.Table.fromJson(o.toJson());
+      checkTable(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableCell", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableCell();
+      var od = new api.TableCell.fromJson(o.toJson());
+      checkTableCell(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableDataInsertAllRequestRows", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableDataInsertAllRequestRows();
+      var od = new api.TableDataInsertAllRequestRows.fromJson(o.toJson());
+      checkTableDataInsertAllRequestRows(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableDataInsertAllRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableDataInsertAllRequest();
+      var od = new api.TableDataInsertAllRequest.fromJson(o.toJson());
+      checkTableDataInsertAllRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableDataInsertAllResponseInsertErrors", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableDataInsertAllResponseInsertErrors();
+      var od =
+          new api.TableDataInsertAllResponseInsertErrors.fromJson(o.toJson());
+      checkTableDataInsertAllResponseInsertErrors(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableDataInsertAllResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableDataInsertAllResponse();
+      var od = new api.TableDataInsertAllResponse.fromJson(o.toJson());
+      checkTableDataInsertAllResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableDataList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableDataList();
+      var od = new api.TableDataList.fromJson(o.toJson());
+      checkTableDataList(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableFieldSchema", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableFieldSchema();
+      var od = new api.TableFieldSchema.fromJson(o.toJson());
+      checkTableFieldSchema(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableListTablesView", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableListTablesView();
+      var od = new api.TableListTablesView.fromJson(o.toJson());
+      checkTableListTablesView(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableListTables", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableListTables();
+      var od = new api.TableListTables.fromJson(o.toJson());
+      checkTableListTables(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableList();
+      var od = new api.TableList.fromJson(o.toJson());
+      checkTableList(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableReference", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableReference();
+      var od = new api.TableReference.fromJson(o.toJson());
+      checkTableReference(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableRow", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableRow();
+      var od = new api.TableRow.fromJson(o.toJson());
+      checkTableRow(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableSchema", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableSchema();
+      var od = new api.TableSchema.fromJson(o.toJson());
+      checkTableSchema(od);
+    });
+  });
+
+  unittest.group("obj-schema-TimePartitioning", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTimePartitioning();
+      var od = new api.TimePartitioning.fromJson(o.toJson());
+      checkTimePartitioning(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserDefinedFunctionResource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserDefinedFunctionResource();
+      var od = new api.UserDefinedFunctionResource.fromJson(o.toJson());
+      checkUserDefinedFunctionResource(od);
+    });
+  });
+
+  unittest.group("obj-schema-ViewDefinition", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildViewDefinition();
+      var od = new api.ViewDefinition.fromJson(o.toJson());
+      checkViewDefinition(od);
+    });
+  });
+
+  unittest.group("resource-DatasetsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.DatasetsResourceApi res = new api.BigqueryApi(mock).datasets;
+      var arg_projectId = "foo";
+      var arg_datasetId = "foo";
+      var arg_deleteContents = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/datasets/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/datasets/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_datasetId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["deleteContents"].first,
+            unittest.equals("$arg_deleteContents"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_projectId, arg_datasetId,
+              deleteContents: arg_deleteContents, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.DatasetsResourceApi res = new api.BigqueryApi(mock).datasets;
+      var arg_projectId = "foo";
+      var arg_datasetId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/datasets/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/datasets/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_datasetId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDataset());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_projectId, arg_datasetId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Dataset response) {
+        checkDataset(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.DatasetsResourceApi res = new api.BigqueryApi(mock).datasets;
+      var arg_request = buildDataset();
+      var arg_projectId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Dataset.fromJson(json);
+        checkDataset(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/datasets", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/datasets"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDataset());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_projectId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Dataset response) {
+        checkDataset(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.DatasetsResourceApi res = new api.BigqueryApi(mock).datasets;
+      var arg_projectId = "foo";
+      var arg_all = true;
+      var arg_filter = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/datasets", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/datasets"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["all"].first, unittest.equals("$arg_all"));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDatasetList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_projectId,
+              all: arg_all,
+              filter: arg_filter,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DatasetList response) {
+        checkDatasetList(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.DatasetsResourceApi res = new api.BigqueryApi(mock).datasets;
+      var arg_request = buildDataset();
+      var arg_projectId = "foo";
+      var arg_datasetId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Dataset.fromJson(json);
+        checkDataset(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/datasets/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/datasets/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_datasetId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDataset());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_projectId, arg_datasetId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Dataset response) {
+        checkDataset(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.DatasetsResourceApi res = new api.BigqueryApi(mock).datasets;
+      var arg_request = buildDataset();
+      var arg_projectId = "foo";
+      var arg_datasetId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Dataset.fromJson(json);
+        checkDataset(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/datasets/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/datasets/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_datasetId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDataset());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_projectId, arg_datasetId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Dataset response) {
+        checkDataset(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-JobsResourceApi", () {
+    unittest.test("method--cancel", () {
+      var mock = new HttpServerMock();
+      api.JobsResourceApi res = new api.BigqueryApi(mock).jobs;
+      var arg_projectId = "foo";
+      var arg_jobId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/jobs/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/jobs/"));
+        pathOffset += 6;
+        index = path.indexOf("/cancel", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_jobId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/cancel"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildJobCancelResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .cancel(arg_projectId, arg_jobId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.JobCancelResponse response) {
+        checkJobCancelResponse(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.JobsResourceApi res = new api.BigqueryApi(mock).jobs;
+      var arg_projectId = "foo";
+      var arg_jobId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/jobs/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/jobs/"));
+        pathOffset += 6;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_jobId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildJob());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_projectId, arg_jobId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Job response) {
+        checkJob(response);
+      })));
+    });
+
+    unittest.test("method--getQueryResults", () {
+      var mock = new HttpServerMock();
+      api.JobsResourceApi res = new api.BigqueryApi(mock).jobs;
+      var arg_projectId = "foo";
+      var arg_jobId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_startIndex = "foo";
+      var arg_timeoutMs = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/queries/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/queries/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_jobId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["startIndex"].first, unittest.equals(arg_startIndex));
+        unittest.expect(core.int.parse(queryMap["timeoutMs"].first),
+            unittest.equals(arg_timeoutMs));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGetQueryResultsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getQueryResults(arg_projectId, arg_jobId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              startIndex: arg_startIndex,
+              timeoutMs: arg_timeoutMs,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.GetQueryResultsResponse response) {
+        checkGetQueryResultsResponse(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.JobsResourceApi res = new api.BigqueryApi(mock).jobs;
+      var arg_request = buildJob();
+      var arg_projectId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Job.fromJson(json);
+        checkJob(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/jobs", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/jobs"));
+        pathOffset += 5;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildJob());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_projectId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Job response) {
+        checkJob(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.JobsResourceApi res = new api.BigqueryApi(mock).jobs;
+      var arg_projectId = "foo";
+      var arg_allUsers = true;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_projection = "foo";
+      var arg_stateFilter = buildUnnamed2928();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/jobs", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/jobs"));
+        pathOffset += 5;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["allUsers"].first, unittest.equals("$arg_allUsers"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(
+            queryMap["stateFilter"], unittest.equals(arg_stateFilter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildJobList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_projectId,
+              allUsers: arg_allUsers,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              projection: arg_projection,
+              stateFilter: arg_stateFilter,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.JobList response) {
+        checkJobList(response);
+      })));
+    });
+
+    unittest.test("method--query", () {
+      var mock = new HttpServerMock();
+      api.JobsResourceApi res = new api.BigqueryApi(mock).jobs;
+      var arg_request = buildQueryRequest();
+      var arg_projectId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.QueryRequest.fromJson(json);
+        checkQueryRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/queries", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/queries"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildQueryResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .query(arg_request, arg_projectId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.QueryResponse response) {
+        checkQueryResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsResourceApi", () {
+    unittest.test("method--getServiceAccount", () {
+      var mock = new HttpServerMock();
+      api.ProjectsResourceApi res = new api.BigqueryApi(mock).projects;
+      var arg_projectId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/serviceAccount", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/serviceAccount"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGetServiceAccountResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.getServiceAccount(arg_projectId, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.GetServiceAccountResponse response) {
+        checkGetServiceAccountResponse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsResourceApi res = new api.BigqueryApi(mock).projects;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("projects"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProjectList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ProjectList response) {
+        checkProjectList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-TabledataResourceApi", () {
+    unittest.test("method--insertAll", () {
+      var mock = new HttpServerMock();
+      api.TabledataResourceApi res = new api.BigqueryApi(mock).tabledata;
+      var arg_request = buildTableDataInsertAllRequest();
+      var arg_projectId = "foo";
+      var arg_datasetId = "foo";
+      var arg_tableId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.TableDataInsertAllRequest.fromJson(json);
+        checkTableDataInsertAllRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/datasets/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/datasets/"));
+        pathOffset += 10;
+        index = path.indexOf("/tables/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_datasetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/tables/"));
+        pathOffset += 8;
+        index = path.indexOf("/insertAll", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_tableId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/insertAll"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTableDataInsertAllResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insertAll(arg_request, arg_projectId, arg_datasetId, arg_tableId,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TableDataInsertAllResponse response) {
+        checkTableDataInsertAllResponse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.TabledataResourceApi res = new api.BigqueryApi(mock).tabledata;
+      var arg_projectId = "foo";
+      var arg_datasetId = "foo";
+      var arg_tableId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_selectedFields = "foo";
+      var arg_startIndex = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/datasets/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/datasets/"));
+        pathOffset += 10;
+        index = path.indexOf("/tables/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_datasetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/tables/"));
+        pathOffset += 8;
+        index = path.indexOf("/data", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_tableId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/data"));
+        pathOffset += 5;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["selectedFields"].first,
+            unittest.equals(arg_selectedFields));
+        unittest.expect(
+            queryMap["startIndex"].first, unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTableDataList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_projectId, arg_datasetId, arg_tableId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              selectedFields: arg_selectedFields,
+              startIndex: arg_startIndex,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TableDataList response) {
+        checkTableDataList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-TablesResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.TablesResourceApi res = new api.BigqueryApi(mock).tables;
+      var arg_projectId = "foo";
+      var arg_datasetId = "foo";
+      var arg_tableId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/datasets/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/datasets/"));
+        pathOffset += 10;
+        index = path.indexOf("/tables/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_datasetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/tables/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_tableId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_projectId, arg_datasetId, arg_tableId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.TablesResourceApi res = new api.BigqueryApi(mock).tables;
+      var arg_projectId = "foo";
+      var arg_datasetId = "foo";
+      var arg_tableId = "foo";
+      var arg_selectedFields = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/datasets/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/datasets/"));
+        pathOffset += 10;
+        index = path.indexOf("/tables/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_datasetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/tables/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_tableId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["selectedFields"].first,
+            unittest.equals(arg_selectedFields));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTable());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_projectId, arg_datasetId, arg_tableId,
+              selectedFields: arg_selectedFields, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Table response) {
+        checkTable(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.TablesResourceApi res = new api.BigqueryApi(mock).tables;
+      var arg_request = buildTable();
+      var arg_projectId = "foo";
+      var arg_datasetId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Table.fromJson(json);
+        checkTable(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/datasets/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/datasets/"));
+        pathOffset += 10;
+        index = path.indexOf("/tables", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_datasetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/tables"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTable());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_projectId, arg_datasetId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Table response) {
+        checkTable(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.TablesResourceApi res = new api.BigqueryApi(mock).tables;
+      var arg_projectId = "foo";
+      var arg_datasetId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/datasets/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/datasets/"));
+        pathOffset += 10;
+        index = path.indexOf("/tables", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_datasetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/tables"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTableList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_projectId, arg_datasetId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TableList response) {
+        checkTableList(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.TablesResourceApi res = new api.BigqueryApi(mock).tables;
+      var arg_request = buildTable();
+      var arg_projectId = "foo";
+      var arg_datasetId = "foo";
+      var arg_tableId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Table.fromJson(json);
+        checkTable(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/datasets/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/datasets/"));
+        pathOffset += 10;
+        index = path.indexOf("/tables/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_datasetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/tables/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_tableId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTable());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_projectId, arg_datasetId, arg_tableId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Table response) {
+        checkTable(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.TablesResourceApi res = new api.BigqueryApi(mock).tables;
+      var arg_request = buildTable();
+      var arg_projectId = "foo";
+      var arg_datasetId = "foo";
+      var arg_tableId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Table.fromJson(json);
+        checkTable(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("bigquery/v2/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/datasets/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/datasets/"));
+        pathOffset += 10;
+        index = path.indexOf("/tables/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_datasetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/tables/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_tableId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTable());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_projectId, arg_datasetId, arg_tableId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Table response) {
+        checkTable(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/bigquerydatatransfer/v1_test.dart b/generated/googleapis/test/bigquerydatatransfer/v1_test.dart
new file mode 100644
index 0000000..0087686
--- /dev/null
+++ b/generated/googleapis/test/bigquerydatatransfer/v1_test.dart
@@ -0,0 +1,2606 @@
+library googleapis.bigquerydatatransfer.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/bigquerydatatransfer/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterCheckValidCredsRequest = 0;
+buildCheckValidCredsRequest() {
+  var o = new api.CheckValidCredsRequest();
+  buildCounterCheckValidCredsRequest++;
+  if (buildCounterCheckValidCredsRequest < 3) {}
+  buildCounterCheckValidCredsRequest--;
+  return o;
+}
+
+checkCheckValidCredsRequest(api.CheckValidCredsRequest o) {
+  buildCounterCheckValidCredsRequest++;
+  if (buildCounterCheckValidCredsRequest < 3) {}
+  buildCounterCheckValidCredsRequest--;
+}
+
+core.int buildCounterCheckValidCredsResponse = 0;
+buildCheckValidCredsResponse() {
+  var o = new api.CheckValidCredsResponse();
+  buildCounterCheckValidCredsResponse++;
+  if (buildCounterCheckValidCredsResponse < 3) {
+    o.hasValidCreds = true;
+  }
+  buildCounterCheckValidCredsResponse--;
+  return o;
+}
+
+checkCheckValidCredsResponse(api.CheckValidCredsResponse o) {
+  buildCounterCheckValidCredsResponse++;
+  if (buildCounterCheckValidCredsResponse < 3) {
+    unittest.expect(o.hasValidCreds, unittest.isTrue);
+  }
+  buildCounterCheckValidCredsResponse--;
+}
+
+buildUnnamed679() {
+  var o = new core.List<api.DataSourceParameter>();
+  o.add(buildDataSourceParameter());
+  o.add(buildDataSourceParameter());
+  return o;
+}
+
+checkUnnamed679(core.List<api.DataSourceParameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataSourceParameter(o[0]);
+  checkDataSourceParameter(o[1]);
+}
+
+buildUnnamed680() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed680(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterDataSource = 0;
+buildDataSource() {
+  var o = new api.DataSource();
+  buildCounterDataSource++;
+  if (buildCounterDataSource < 3) {
+    o.authorizationType = "foo";
+    o.clientId = "foo";
+    o.dataRefreshType = "foo";
+    o.dataSourceId = "foo";
+    o.defaultDataRefreshWindowDays = 42;
+    o.defaultSchedule = "foo";
+    o.description = "foo";
+    o.displayName = "foo";
+    o.helpUrl = "foo";
+    o.manualRunsDisabled = true;
+    o.minimumScheduleInterval = "foo";
+    o.name = "foo";
+    o.parameters = buildUnnamed679();
+    o.scopes = buildUnnamed680();
+    o.supportsCustomSchedule = true;
+    o.supportsMultipleTransfers = true;
+    o.transferType = "foo";
+    o.updateDeadlineSeconds = 42;
+  }
+  buildCounterDataSource--;
+  return o;
+}
+
+checkDataSource(api.DataSource o) {
+  buildCounterDataSource++;
+  if (buildCounterDataSource < 3) {
+    unittest.expect(o.authorizationType, unittest.equals('foo'));
+    unittest.expect(o.clientId, unittest.equals('foo'));
+    unittest.expect(o.dataRefreshType, unittest.equals('foo'));
+    unittest.expect(o.dataSourceId, unittest.equals('foo'));
+    unittest.expect(o.defaultDataRefreshWindowDays, unittest.equals(42));
+    unittest.expect(o.defaultSchedule, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.helpUrl, unittest.equals('foo'));
+    unittest.expect(o.manualRunsDisabled, unittest.isTrue);
+    unittest.expect(o.minimumScheduleInterval, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed679(o.parameters);
+    checkUnnamed680(o.scopes);
+    unittest.expect(o.supportsCustomSchedule, unittest.isTrue);
+    unittest.expect(o.supportsMultipleTransfers, unittest.isTrue);
+    unittest.expect(o.transferType, unittest.equals('foo'));
+    unittest.expect(o.updateDeadlineSeconds, unittest.equals(42));
+  }
+  buildCounterDataSource--;
+}
+
+buildUnnamed681() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed681(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed682() {
+  var o = new core.List<api.DataSourceParameter>();
+  o.add(buildDataSourceParameter());
+  o.add(buildDataSourceParameter());
+  return o;
+}
+
+checkUnnamed682(core.List<api.DataSourceParameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataSourceParameter(o[0]);
+  checkDataSourceParameter(o[1]);
+}
+
+core.int buildCounterDataSourceParameter = 0;
+buildDataSourceParameter() {
+  var o = new api.DataSourceParameter();
+  buildCounterDataSourceParameter++;
+  if (buildCounterDataSourceParameter < 3) {
+    o.allowedValues = buildUnnamed681();
+    o.description = "foo";
+    o.displayName = "foo";
+    o.fields = buildUnnamed682();
+    o.immutable = true;
+    o.maxValue = 42.0;
+    o.minValue = 42.0;
+    o.paramId = "foo";
+    o.recurse = true;
+    o.repeated = true;
+    o.required = true;
+    o.type = "foo";
+    o.validationDescription = "foo";
+    o.validationHelpUrl = "foo";
+    o.validationRegex = "foo";
+  }
+  buildCounterDataSourceParameter--;
+  return o;
+}
+
+checkDataSourceParameter(api.DataSourceParameter o) {
+  buildCounterDataSourceParameter++;
+  if (buildCounterDataSourceParameter < 3) {
+    checkUnnamed681(o.allowedValues);
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    checkUnnamed682(o.fields);
+    unittest.expect(o.immutable, unittest.isTrue);
+    unittest.expect(o.maxValue, unittest.equals(42.0));
+    unittest.expect(o.minValue, unittest.equals(42.0));
+    unittest.expect(o.paramId, unittest.equals('foo'));
+    unittest.expect(o.recurse, unittest.isTrue);
+    unittest.expect(o.repeated, unittest.isTrue);
+    unittest.expect(o.required, unittest.isTrue);
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.validationDescription, unittest.equals('foo'));
+    unittest.expect(o.validationHelpUrl, unittest.equals('foo'));
+    unittest.expect(o.validationRegex, unittest.equals('foo'));
+  }
+  buildCounterDataSourceParameter--;
+}
+
+core.int buildCounterEmpty = 0;
+buildEmpty() {
+  var o = new api.Empty();
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+  return o;
+}
+
+checkEmpty(api.Empty o) {
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+}
+
+buildUnnamed683() {
+  var o = new core.List<api.DataSource>();
+  o.add(buildDataSource());
+  o.add(buildDataSource());
+  return o;
+}
+
+checkUnnamed683(core.List<api.DataSource> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataSource(o[0]);
+  checkDataSource(o[1]);
+}
+
+core.int buildCounterListDataSourcesResponse = 0;
+buildListDataSourcesResponse() {
+  var o = new api.ListDataSourcesResponse();
+  buildCounterListDataSourcesResponse++;
+  if (buildCounterListDataSourcesResponse < 3) {
+    o.dataSources = buildUnnamed683();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListDataSourcesResponse--;
+  return o;
+}
+
+checkListDataSourcesResponse(api.ListDataSourcesResponse o) {
+  buildCounterListDataSourcesResponse++;
+  if (buildCounterListDataSourcesResponse < 3) {
+    checkUnnamed683(o.dataSources);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListDataSourcesResponse--;
+}
+
+buildUnnamed684() {
+  var o = new core.List<api.Location>();
+  o.add(buildLocation());
+  o.add(buildLocation());
+  return o;
+}
+
+checkUnnamed684(core.List<api.Location> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLocation(o[0]);
+  checkLocation(o[1]);
+}
+
+core.int buildCounterListLocationsResponse = 0;
+buildListLocationsResponse() {
+  var o = new api.ListLocationsResponse();
+  buildCounterListLocationsResponse++;
+  if (buildCounterListLocationsResponse < 3) {
+    o.locations = buildUnnamed684();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListLocationsResponse--;
+  return o;
+}
+
+checkListLocationsResponse(api.ListLocationsResponse o) {
+  buildCounterListLocationsResponse++;
+  if (buildCounterListLocationsResponse < 3) {
+    checkUnnamed684(o.locations);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListLocationsResponse--;
+}
+
+buildUnnamed685() {
+  var o = new core.List<api.TransferConfig>();
+  o.add(buildTransferConfig());
+  o.add(buildTransferConfig());
+  return o;
+}
+
+checkUnnamed685(core.List<api.TransferConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTransferConfig(o[0]);
+  checkTransferConfig(o[1]);
+}
+
+core.int buildCounterListTransferConfigsResponse = 0;
+buildListTransferConfigsResponse() {
+  var o = new api.ListTransferConfigsResponse();
+  buildCounterListTransferConfigsResponse++;
+  if (buildCounterListTransferConfigsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.transferConfigs = buildUnnamed685();
+  }
+  buildCounterListTransferConfigsResponse--;
+  return o;
+}
+
+checkListTransferConfigsResponse(api.ListTransferConfigsResponse o) {
+  buildCounterListTransferConfigsResponse++;
+  if (buildCounterListTransferConfigsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed685(o.transferConfigs);
+  }
+  buildCounterListTransferConfigsResponse--;
+}
+
+buildUnnamed686() {
+  var o = new core.List<api.TransferMessage>();
+  o.add(buildTransferMessage());
+  o.add(buildTransferMessage());
+  return o;
+}
+
+checkUnnamed686(core.List<api.TransferMessage> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTransferMessage(o[0]);
+  checkTransferMessage(o[1]);
+}
+
+core.int buildCounterListTransferLogsResponse = 0;
+buildListTransferLogsResponse() {
+  var o = new api.ListTransferLogsResponse();
+  buildCounterListTransferLogsResponse++;
+  if (buildCounterListTransferLogsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.transferMessages = buildUnnamed686();
+  }
+  buildCounterListTransferLogsResponse--;
+  return o;
+}
+
+checkListTransferLogsResponse(api.ListTransferLogsResponse o) {
+  buildCounterListTransferLogsResponse++;
+  if (buildCounterListTransferLogsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed686(o.transferMessages);
+  }
+  buildCounterListTransferLogsResponse--;
+}
+
+buildUnnamed687() {
+  var o = new core.List<api.TransferRun>();
+  o.add(buildTransferRun());
+  o.add(buildTransferRun());
+  return o;
+}
+
+checkUnnamed687(core.List<api.TransferRun> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTransferRun(o[0]);
+  checkTransferRun(o[1]);
+}
+
+core.int buildCounterListTransferRunsResponse = 0;
+buildListTransferRunsResponse() {
+  var o = new api.ListTransferRunsResponse();
+  buildCounterListTransferRunsResponse++;
+  if (buildCounterListTransferRunsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.transferRuns = buildUnnamed687();
+  }
+  buildCounterListTransferRunsResponse--;
+  return o;
+}
+
+checkListTransferRunsResponse(api.ListTransferRunsResponse o) {
+  buildCounterListTransferRunsResponse++;
+  if (buildCounterListTransferRunsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed687(o.transferRuns);
+  }
+  buildCounterListTransferRunsResponse--;
+}
+
+buildUnnamed688() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed688(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+buildUnnamed689() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed689(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o["x"]) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(casted1["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted1["bool"], unittest.equals(true));
+  unittest.expect(casted1["string"], unittest.equals('foo'));
+  var casted2 = (o["y"]) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(casted2["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted2["bool"], unittest.equals(true));
+  unittest.expect(casted2["string"], unittest.equals('foo'));
+}
+
+core.int buildCounterLocation = 0;
+buildLocation() {
+  var o = new api.Location();
+  buildCounterLocation++;
+  if (buildCounterLocation < 3) {
+    o.labels = buildUnnamed688();
+    o.locationId = "foo";
+    o.metadata = buildUnnamed689();
+    o.name = "foo";
+  }
+  buildCounterLocation--;
+  return o;
+}
+
+checkLocation(api.Location o) {
+  buildCounterLocation++;
+  if (buildCounterLocation < 3) {
+    checkUnnamed688(o.labels);
+    unittest.expect(o.locationId, unittest.equals('foo'));
+    checkUnnamed689(o.metadata);
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterLocation--;
+}
+
+core.int buildCounterScheduleTransferRunsRequest = 0;
+buildScheduleTransferRunsRequest() {
+  var o = new api.ScheduleTransferRunsRequest();
+  buildCounterScheduleTransferRunsRequest++;
+  if (buildCounterScheduleTransferRunsRequest < 3) {
+    o.endTime = "foo";
+    o.startTime = "foo";
+  }
+  buildCounterScheduleTransferRunsRequest--;
+  return o;
+}
+
+checkScheduleTransferRunsRequest(api.ScheduleTransferRunsRequest o) {
+  buildCounterScheduleTransferRunsRequest++;
+  if (buildCounterScheduleTransferRunsRequest < 3) {
+    unittest.expect(o.endTime, unittest.equals('foo'));
+    unittest.expect(o.startTime, unittest.equals('foo'));
+  }
+  buildCounterScheduleTransferRunsRequest--;
+}
+
+buildUnnamed690() {
+  var o = new core.List<api.TransferRun>();
+  o.add(buildTransferRun());
+  o.add(buildTransferRun());
+  return o;
+}
+
+checkUnnamed690(core.List<api.TransferRun> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTransferRun(o[0]);
+  checkTransferRun(o[1]);
+}
+
+core.int buildCounterScheduleTransferRunsResponse = 0;
+buildScheduleTransferRunsResponse() {
+  var o = new api.ScheduleTransferRunsResponse();
+  buildCounterScheduleTransferRunsResponse++;
+  if (buildCounterScheduleTransferRunsResponse < 3) {
+    o.runs = buildUnnamed690();
+  }
+  buildCounterScheduleTransferRunsResponse--;
+  return o;
+}
+
+checkScheduleTransferRunsResponse(api.ScheduleTransferRunsResponse o) {
+  buildCounterScheduleTransferRunsResponse++;
+  if (buildCounterScheduleTransferRunsResponse < 3) {
+    checkUnnamed690(o.runs);
+  }
+  buildCounterScheduleTransferRunsResponse--;
+}
+
+buildUnnamed691() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed691(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted3 = (o["x"]) as core.Map;
+  unittest.expect(casted3, unittest.hasLength(3));
+  unittest.expect(casted3["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted3["bool"], unittest.equals(true));
+  unittest.expect(casted3["string"], unittest.equals('foo'));
+  var casted4 = (o["y"]) as core.Map;
+  unittest.expect(casted4, unittest.hasLength(3));
+  unittest.expect(casted4["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted4["bool"], unittest.equals(true));
+  unittest.expect(casted4["string"], unittest.equals('foo'));
+}
+
+core.int buildCounterTransferConfig = 0;
+buildTransferConfig() {
+  var o = new api.TransferConfig();
+  buildCounterTransferConfig++;
+  if (buildCounterTransferConfig < 3) {
+    o.dataRefreshWindowDays = 42;
+    o.dataSourceId = "foo";
+    o.datasetRegion = "foo";
+    o.destinationDatasetId = "foo";
+    o.disabled = true;
+    o.displayName = "foo";
+    o.name = "foo";
+    o.nextRunTime = "foo";
+    o.params = buildUnnamed691();
+    o.schedule = "foo";
+    o.state = "foo";
+    o.updateTime = "foo";
+    o.userId = "foo";
+  }
+  buildCounterTransferConfig--;
+  return o;
+}
+
+checkTransferConfig(api.TransferConfig o) {
+  buildCounterTransferConfig++;
+  if (buildCounterTransferConfig < 3) {
+    unittest.expect(o.dataRefreshWindowDays, unittest.equals(42));
+    unittest.expect(o.dataSourceId, unittest.equals('foo'));
+    unittest.expect(o.datasetRegion, unittest.equals('foo'));
+    unittest.expect(o.destinationDatasetId, unittest.equals('foo'));
+    unittest.expect(o.disabled, unittest.isTrue);
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.nextRunTime, unittest.equals('foo'));
+    checkUnnamed691(o.params);
+    unittest.expect(o.schedule, unittest.equals('foo'));
+    unittest.expect(o.state, unittest.equals('foo'));
+    unittest.expect(o.updateTime, unittest.equals('foo'));
+    unittest.expect(o.userId, unittest.equals('foo'));
+  }
+  buildCounterTransferConfig--;
+}
+
+core.int buildCounterTransferMessage = 0;
+buildTransferMessage() {
+  var o = new api.TransferMessage();
+  buildCounterTransferMessage++;
+  if (buildCounterTransferMessage < 3) {
+    o.messageText = "foo";
+    o.messageTime = "foo";
+    o.severity = "foo";
+  }
+  buildCounterTransferMessage--;
+  return o;
+}
+
+checkTransferMessage(api.TransferMessage o) {
+  buildCounterTransferMessage++;
+  if (buildCounterTransferMessage < 3) {
+    unittest.expect(o.messageText, unittest.equals('foo'));
+    unittest.expect(o.messageTime, unittest.equals('foo'));
+    unittest.expect(o.severity, unittest.equals('foo'));
+  }
+  buildCounterTransferMessage--;
+}
+
+buildUnnamed692() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed692(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted5 = (o["x"]) as core.Map;
+  unittest.expect(casted5, unittest.hasLength(3));
+  unittest.expect(casted5["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted5["bool"], unittest.equals(true));
+  unittest.expect(casted5["string"], unittest.equals('foo'));
+  var casted6 = (o["y"]) as core.Map;
+  unittest.expect(casted6, unittest.hasLength(3));
+  unittest.expect(casted6["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted6["bool"], unittest.equals(true));
+  unittest.expect(casted6["string"], unittest.equals('foo'));
+}
+
+core.int buildCounterTransferRun = 0;
+buildTransferRun() {
+  var o = new api.TransferRun();
+  buildCounterTransferRun++;
+  if (buildCounterTransferRun < 3) {
+    o.dataSourceId = "foo";
+    o.datasetRegion = "foo";
+    o.destinationDatasetId = "foo";
+    o.endTime = "foo";
+    o.name = "foo";
+    o.params = buildUnnamed692();
+    o.runTime = "foo";
+    o.schedule = "foo";
+    o.scheduleTime = "foo";
+    o.startTime = "foo";
+    o.state = "foo";
+    o.updateTime = "foo";
+    o.userId = "foo";
+  }
+  buildCounterTransferRun--;
+  return o;
+}
+
+checkTransferRun(api.TransferRun o) {
+  buildCounterTransferRun++;
+  if (buildCounterTransferRun < 3) {
+    unittest.expect(o.dataSourceId, unittest.equals('foo'));
+    unittest.expect(o.datasetRegion, unittest.equals('foo'));
+    unittest.expect(o.destinationDatasetId, unittest.equals('foo'));
+    unittest.expect(o.endTime, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed692(o.params);
+    unittest.expect(o.runTime, unittest.equals('foo'));
+    unittest.expect(o.schedule, unittest.equals('foo'));
+    unittest.expect(o.scheduleTime, unittest.equals('foo'));
+    unittest.expect(o.startTime, unittest.equals('foo'));
+    unittest.expect(o.state, unittest.equals('foo'));
+    unittest.expect(o.updateTime, unittest.equals('foo'));
+    unittest.expect(o.userId, unittest.equals('foo'));
+  }
+  buildCounterTransferRun--;
+}
+
+buildUnnamed693() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed693(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed694() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed694(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed695() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed695(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed696() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed696(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed697() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed697(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed698() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed698(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-CheckValidCredsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCheckValidCredsRequest();
+      var od = new api.CheckValidCredsRequest.fromJson(o.toJson());
+      checkCheckValidCredsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-CheckValidCredsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCheckValidCredsResponse();
+      var od = new api.CheckValidCredsResponse.fromJson(o.toJson());
+      checkCheckValidCredsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-DataSource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDataSource();
+      var od = new api.DataSource.fromJson(o.toJson());
+      checkDataSource(od);
+    });
+  });
+
+  unittest.group("obj-schema-DataSourceParameter", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDataSourceParameter();
+      var od = new api.DataSourceParameter.fromJson(o.toJson());
+      checkDataSourceParameter(od);
+    });
+  });
+
+  unittest.group("obj-schema-Empty", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEmpty();
+      var od = new api.Empty.fromJson(o.toJson());
+      checkEmpty(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListDataSourcesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListDataSourcesResponse();
+      var od = new api.ListDataSourcesResponse.fromJson(o.toJson());
+      checkListDataSourcesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListLocationsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListLocationsResponse();
+      var od = new api.ListLocationsResponse.fromJson(o.toJson());
+      checkListLocationsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListTransferConfigsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListTransferConfigsResponse();
+      var od = new api.ListTransferConfigsResponse.fromJson(o.toJson());
+      checkListTransferConfigsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListTransferLogsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListTransferLogsResponse();
+      var od = new api.ListTransferLogsResponse.fromJson(o.toJson());
+      checkListTransferLogsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListTransferRunsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListTransferRunsResponse();
+      var od = new api.ListTransferRunsResponse.fromJson(o.toJson());
+      checkListTransferRunsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Location", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLocation();
+      var od = new api.Location.fromJson(o.toJson());
+      checkLocation(od);
+    });
+  });
+
+  unittest.group("obj-schema-ScheduleTransferRunsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildScheduleTransferRunsRequest();
+      var od = new api.ScheduleTransferRunsRequest.fromJson(o.toJson());
+      checkScheduleTransferRunsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ScheduleTransferRunsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildScheduleTransferRunsResponse();
+      var od = new api.ScheduleTransferRunsResponse.fromJson(o.toJson());
+      checkScheduleTransferRunsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-TransferConfig", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTransferConfig();
+      var od = new api.TransferConfig.fromJson(o.toJson());
+      checkTransferConfig(od);
+    });
+  });
+
+  unittest.group("obj-schema-TransferMessage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTransferMessage();
+      var od = new api.TransferMessage.fromJson(o.toJson());
+      checkTransferMessage(od);
+    });
+  });
+
+  unittest.group("obj-schema-TransferRun", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTransferRun();
+      var od = new api.TransferRun.fromJson(o.toJson());
+      checkTransferRun(od);
+    });
+  });
+
+  unittest.group("resource-ProjectsDataSourcesResourceApi", () {
+    unittest.test("method--checkValidCreds", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDataSourcesResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.dataSources;
+      var arg_request = buildCheckValidCredsRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CheckValidCredsRequest.fromJson(json);
+        checkCheckValidCredsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCheckValidCredsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .checkValidCreds(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CheckValidCredsResponse response) {
+        checkCheckValidCredsResponse(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDataSourcesResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.dataSources;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDataSource());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DataSource response) {
+        checkDataSource(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDataSourcesResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.dataSources;
+      var arg_parent = "foo";
+      var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListDataSourcesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListDataSourcesResponse response) {
+        checkListDataSourcesResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsLocationsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.locations;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLocation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Location response) {
+        checkLocation(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.locations;
+      var arg_name = "foo";
+      var arg_filter = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListLocationsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_name,
+              filter: arg_filter,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListLocationsResponse response) {
+        checkListLocationsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsLocationsDataSourcesResourceApi", () {
+    unittest.test("method--checkValidCreds", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsDataSourcesResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.locations.dataSources;
+      var arg_request = buildCheckValidCredsRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CheckValidCredsRequest.fromJson(json);
+        checkCheckValidCredsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCheckValidCredsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .checkValidCreds(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CheckValidCredsResponse response) {
+        checkCheckValidCredsResponse(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsDataSourcesResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.locations.dataSources;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDataSource());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DataSource response) {
+        checkDataSource(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsDataSourcesResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.locations.dataSources;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListDataSourcesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListDataSourcesResponse response) {
+        checkListDataSourcesResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsLocationsTransferConfigsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsTransferConfigsResourceApi res =
+          new api.BigquerydatatransferApi(mock)
+              .projects
+              .locations
+              .transferConfigs;
+      var arg_request = buildTransferConfig();
+      var arg_parent = "foo";
+      var arg_authorizationCode = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.TransferConfig.fromJson(json);
+        checkTransferConfig(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["authorizationCode"].first,
+            unittest.equals(arg_authorizationCode));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTransferConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent,
+              authorizationCode: arg_authorizationCode, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TransferConfig response) {
+        checkTransferConfig(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsTransferConfigsResourceApi res =
+          new api.BigquerydatatransferApi(mock)
+              .projects
+              .locations
+              .transferConfigs;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsTransferConfigsResourceApi res =
+          new api.BigquerydatatransferApi(mock)
+              .projects
+              .locations
+              .transferConfigs;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTransferConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TransferConfig response) {
+        checkTransferConfig(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsTransferConfigsResourceApi res =
+          new api.BigquerydatatransferApi(mock)
+              .projects
+              .locations
+              .transferConfigs;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_dataSourceIds = buildUnnamed693();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["dataSourceIds"], unittest.equals(arg_dataSourceIds));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListTransferConfigsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              dataSourceIds: arg_dataSourceIds,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListTransferConfigsResponse response) {
+        checkListTransferConfigsResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsTransferConfigsResourceApi res =
+          new api.BigquerydatatransferApi(mock)
+              .projects
+              .locations
+              .transferConfigs;
+      var arg_request = buildTransferConfig();
+      var arg_name = "foo";
+      var arg_authorizationCode = "foo";
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.TransferConfig.fromJson(json);
+        checkTransferConfig(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["authorizationCode"].first,
+            unittest.equals(arg_authorizationCode));
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTransferConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_name,
+              authorizationCode: arg_authorizationCode,
+              updateMask: arg_updateMask,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TransferConfig response) {
+        checkTransferConfig(response);
+      })));
+    });
+
+    unittest.test("method--scheduleRuns", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsTransferConfigsResourceApi res =
+          new api.BigquerydatatransferApi(mock)
+              .projects
+              .locations
+              .transferConfigs;
+      var arg_request = buildScheduleTransferRunsRequest();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ScheduleTransferRunsRequest.fromJson(json);
+        checkScheduleTransferRunsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildScheduleTransferRunsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.scheduleRuns(arg_request, arg_parent, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.ScheduleTransferRunsResponse response) {
+        checkScheduleTransferRunsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsLocationsTransferConfigsRunsResourceApi",
+      () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsTransferConfigsRunsResourceApi res =
+          new api.BigquerydatatransferApi(mock)
+              .projects
+              .locations
+              .transferConfigs
+              .runs;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsTransferConfigsRunsResourceApi res =
+          new api.BigquerydatatransferApi(mock)
+              .projects
+              .locations
+              .transferConfigs
+              .runs;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTransferRun());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TransferRun response) {
+        checkTransferRun(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsTransferConfigsRunsResourceApi res =
+          new api.BigquerydatatransferApi(mock)
+              .projects
+              .locations
+              .transferConfigs
+              .runs;
+      var arg_parent = "foo";
+      var arg_pageSize = 42;
+      var arg_states = buildUnnamed694();
+      var arg_runAttempt = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["states"], unittest.equals(arg_states));
+        unittest.expect(
+            queryMap["runAttempt"].first, unittest.equals(arg_runAttempt));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListTransferRunsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              pageSize: arg_pageSize,
+              states: arg_states,
+              runAttempt: arg_runAttempt,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListTransferRunsResponse response) {
+        checkListTransferRunsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group(
+      "resource-ProjectsLocationsTransferConfigsRunsTransferLogsResourceApi",
+      () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsTransferConfigsRunsTransferLogsResourceApi res =
+          new api.BigquerydatatransferApi(mock)
+              .projects
+              .locations
+              .transferConfigs
+              .runs
+              .transferLogs;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_messageTypes = buildUnnamed695();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["messageTypes"], unittest.equals(arg_messageTypes));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListTransferLogsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              messageTypes: arg_messageTypes,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListTransferLogsResponse response) {
+        checkListTransferLogsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsTransferConfigsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsTransferConfigsResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.transferConfigs;
+      var arg_request = buildTransferConfig();
+      var arg_parent = "foo";
+      var arg_authorizationCode = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.TransferConfig.fromJson(json);
+        checkTransferConfig(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["authorizationCode"].first,
+            unittest.equals(arg_authorizationCode));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTransferConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent,
+              authorizationCode: arg_authorizationCode, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TransferConfig response) {
+        checkTransferConfig(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsTransferConfigsResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.transferConfigs;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsTransferConfigsResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.transferConfigs;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTransferConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TransferConfig response) {
+        checkTransferConfig(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsTransferConfigsResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.transferConfigs;
+      var arg_parent = "foo";
+      var arg_pageSize = 42;
+      var arg_dataSourceIds = buildUnnamed696();
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["dataSourceIds"], unittest.equals(arg_dataSourceIds));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListTransferConfigsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              pageSize: arg_pageSize,
+              dataSourceIds: arg_dataSourceIds,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListTransferConfigsResponse response) {
+        checkListTransferConfigsResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ProjectsTransferConfigsResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.transferConfigs;
+      var arg_request = buildTransferConfig();
+      var arg_name = "foo";
+      var arg_updateMask = "foo";
+      var arg_authorizationCode = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.TransferConfig.fromJson(json);
+        checkTransferConfig(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["authorizationCode"].first,
+            unittest.equals(arg_authorizationCode));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTransferConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask,
+              authorizationCode: arg_authorizationCode,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TransferConfig response) {
+        checkTransferConfig(response);
+      })));
+    });
+
+    unittest.test("method--scheduleRuns", () {
+      var mock = new HttpServerMock();
+      api.ProjectsTransferConfigsResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.transferConfigs;
+      var arg_request = buildScheduleTransferRunsRequest();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ScheduleTransferRunsRequest.fromJson(json);
+        checkScheduleTransferRunsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildScheduleTransferRunsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.scheduleRuns(arg_request, arg_parent, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.ScheduleTransferRunsResponse response) {
+        checkScheduleTransferRunsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsTransferConfigsRunsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsTransferConfigsRunsResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.transferConfigs.runs;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsTransferConfigsRunsResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.transferConfigs.runs;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTransferRun());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TransferRun response) {
+        checkTransferRun(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsTransferConfigsRunsResourceApi res =
+          new api.BigquerydatatransferApi(mock).projects.transferConfigs.runs;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_states = buildUnnamed697();
+      var arg_runAttempt = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["states"], unittest.equals(arg_states));
+        unittest.expect(
+            queryMap["runAttempt"].first, unittest.equals(arg_runAttempt));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListTransferRunsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              states: arg_states,
+              runAttempt: arg_runAttempt,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListTransferRunsResponse response) {
+        checkListTransferRunsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsTransferConfigsRunsTransferLogsResourceApi",
+      () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsTransferConfigsRunsTransferLogsResourceApi res =
+          new api.BigquerydatatransferApi(mock)
+              .projects
+              .transferConfigs
+              .runs
+              .transferLogs;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_messageTypes = buildUnnamed698();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["messageTypes"], unittest.equals(arg_messageTypes));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListTransferLogsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              messageTypes: arg_messageTypes,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListTransferLogsResponse response) {
+        checkListTransferLogsResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/blogger/v3_test.dart b/generated/googleapis/test/blogger/v3_test.dart
new file mode 100644
index 0000000..2655155
--- /dev/null
+++ b/generated/googleapis/test/blogger/v3_test.dart
@@ -0,0 +1,4031 @@
+library googleapis.blogger.v3.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/blogger/v3.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterBlogLocale = 0;
+buildBlogLocale() {
+  var o = new api.BlogLocale();
+  buildCounterBlogLocale++;
+  if (buildCounterBlogLocale < 3) {
+    o.country = "foo";
+    o.language = "foo";
+    o.variant = "foo";
+  }
+  buildCounterBlogLocale--;
+  return o;
+}
+
+checkBlogLocale(api.BlogLocale o) {
+  buildCounterBlogLocale++;
+  if (buildCounterBlogLocale < 3) {
+    unittest.expect(o.country, unittest.equals('foo'));
+    unittest.expect(o.language, unittest.equals('foo'));
+    unittest.expect(o.variant, unittest.equals('foo'));
+  }
+  buildCounterBlogLocale--;
+}
+
+core.int buildCounterBlogPages = 0;
+buildBlogPages() {
+  var o = new api.BlogPages();
+  buildCounterBlogPages++;
+  if (buildCounterBlogPages < 3) {
+    o.selfLink = "foo";
+    o.totalItems = 42;
+  }
+  buildCounterBlogPages--;
+  return o;
+}
+
+checkBlogPages(api.BlogPages o) {
+  buildCounterBlogPages++;
+  if (buildCounterBlogPages < 3) {
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterBlogPages--;
+}
+
+buildUnnamed1314() {
+  var o = new core.List<api.Post>();
+  o.add(buildPost());
+  o.add(buildPost());
+  return o;
+}
+
+checkUnnamed1314(core.List<api.Post> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPost(o[0]);
+  checkPost(o[1]);
+}
+
+core.int buildCounterBlogPosts = 0;
+buildBlogPosts() {
+  var o = new api.BlogPosts();
+  buildCounterBlogPosts++;
+  if (buildCounterBlogPosts < 3) {
+    o.items = buildUnnamed1314();
+    o.selfLink = "foo";
+    o.totalItems = 42;
+  }
+  buildCounterBlogPosts--;
+  return o;
+}
+
+checkBlogPosts(api.BlogPosts o) {
+  buildCounterBlogPosts++;
+  if (buildCounterBlogPosts < 3) {
+    checkUnnamed1314(o.items);
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterBlogPosts--;
+}
+
+core.int buildCounterBlog = 0;
+buildBlog() {
+  var o = new api.Blog();
+  buildCounterBlog++;
+  if (buildCounterBlog < 3) {
+    o.customMetaData = "foo";
+    o.description = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.locale = buildBlogLocale();
+    o.name = "foo";
+    o.pages = buildBlogPages();
+    o.posts = buildBlogPosts();
+    o.published = core.DateTime.parse("2002-02-27T14:01:02");
+    o.selfLink = "foo";
+    o.status = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.url = "foo";
+  }
+  buildCounterBlog--;
+  return o;
+}
+
+checkBlog(api.Blog o) {
+  buildCounterBlog++;
+  if (buildCounterBlog < 3) {
+    unittest.expect(o.customMetaData, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkBlogLocale(o.locale);
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkBlogPages(o.pages);
+    checkBlogPosts(o.posts);
+    unittest.expect(o.published,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterBlog--;
+}
+
+buildUnnamed1315() {
+  var o = new core.List<api.BlogUserInfo>();
+  o.add(buildBlogUserInfo());
+  o.add(buildBlogUserInfo());
+  return o;
+}
+
+checkUnnamed1315(core.List<api.BlogUserInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBlogUserInfo(o[0]);
+  checkBlogUserInfo(o[1]);
+}
+
+buildUnnamed1316() {
+  var o = new core.List<api.Blog>();
+  o.add(buildBlog());
+  o.add(buildBlog());
+  return o;
+}
+
+checkUnnamed1316(core.List<api.Blog> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBlog(o[0]);
+  checkBlog(o[1]);
+}
+
+core.int buildCounterBlogList = 0;
+buildBlogList() {
+  var o = new api.BlogList();
+  buildCounterBlogList++;
+  if (buildCounterBlogList < 3) {
+    o.blogUserInfos = buildUnnamed1315();
+    o.items = buildUnnamed1316();
+    o.kind = "foo";
+  }
+  buildCounterBlogList--;
+  return o;
+}
+
+checkBlogList(api.BlogList o) {
+  buildCounterBlogList++;
+  if (buildCounterBlogList < 3) {
+    checkUnnamed1315(o.blogUserInfos);
+    checkUnnamed1316(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterBlogList--;
+}
+
+core.int buildCounterBlogPerUserInfo = 0;
+buildBlogPerUserInfo() {
+  var o = new api.BlogPerUserInfo();
+  buildCounterBlogPerUserInfo++;
+  if (buildCounterBlogPerUserInfo < 3) {
+    o.blogId = "foo";
+    o.hasAdminAccess = true;
+    o.kind = "foo";
+    o.photosAlbumKey = "foo";
+    o.role = "foo";
+    o.userId = "foo";
+  }
+  buildCounterBlogPerUserInfo--;
+  return o;
+}
+
+checkBlogPerUserInfo(api.BlogPerUserInfo o) {
+  buildCounterBlogPerUserInfo++;
+  if (buildCounterBlogPerUserInfo < 3) {
+    unittest.expect(o.blogId, unittest.equals('foo'));
+    unittest.expect(o.hasAdminAccess, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.photosAlbumKey, unittest.equals('foo'));
+    unittest.expect(o.role, unittest.equals('foo'));
+    unittest.expect(o.userId, unittest.equals('foo'));
+  }
+  buildCounterBlogPerUserInfo--;
+}
+
+core.int buildCounterBlogUserInfo = 0;
+buildBlogUserInfo() {
+  var o = new api.BlogUserInfo();
+  buildCounterBlogUserInfo++;
+  if (buildCounterBlogUserInfo < 3) {
+    o.blog = buildBlog();
+    o.blogUserInfo = buildBlogPerUserInfo();
+    o.kind = "foo";
+  }
+  buildCounterBlogUserInfo--;
+  return o;
+}
+
+checkBlogUserInfo(api.BlogUserInfo o) {
+  buildCounterBlogUserInfo++;
+  if (buildCounterBlogUserInfo < 3) {
+    checkBlog(o.blog);
+    checkBlogPerUserInfo(o.blogUserInfo);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterBlogUserInfo--;
+}
+
+core.int buildCounterCommentAuthorImage = 0;
+buildCommentAuthorImage() {
+  var o = new api.CommentAuthorImage();
+  buildCounterCommentAuthorImage++;
+  if (buildCounterCommentAuthorImage < 3) {
+    o.url = "foo";
+  }
+  buildCounterCommentAuthorImage--;
+  return o;
+}
+
+checkCommentAuthorImage(api.CommentAuthorImage o) {
+  buildCounterCommentAuthorImage++;
+  if (buildCounterCommentAuthorImage < 3) {
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterCommentAuthorImage--;
+}
+
+core.int buildCounterCommentAuthor = 0;
+buildCommentAuthor() {
+  var o = new api.CommentAuthor();
+  buildCounterCommentAuthor++;
+  if (buildCounterCommentAuthor < 3) {
+    o.displayName = "foo";
+    o.id = "foo";
+    o.image = buildCommentAuthorImage();
+    o.url = "foo";
+  }
+  buildCounterCommentAuthor--;
+  return o;
+}
+
+checkCommentAuthor(api.CommentAuthor o) {
+  buildCounterCommentAuthor++;
+  if (buildCounterCommentAuthor < 3) {
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkCommentAuthorImage(o.image);
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterCommentAuthor--;
+}
+
+core.int buildCounterCommentBlog = 0;
+buildCommentBlog() {
+  var o = new api.CommentBlog();
+  buildCounterCommentBlog++;
+  if (buildCounterCommentBlog < 3) {
+    o.id = "foo";
+  }
+  buildCounterCommentBlog--;
+  return o;
+}
+
+checkCommentBlog(api.CommentBlog o) {
+  buildCounterCommentBlog++;
+  if (buildCounterCommentBlog < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+  }
+  buildCounterCommentBlog--;
+}
+
+core.int buildCounterCommentInReplyTo = 0;
+buildCommentInReplyTo() {
+  var o = new api.CommentInReplyTo();
+  buildCounterCommentInReplyTo++;
+  if (buildCounterCommentInReplyTo < 3) {
+    o.id = "foo";
+  }
+  buildCounterCommentInReplyTo--;
+  return o;
+}
+
+checkCommentInReplyTo(api.CommentInReplyTo o) {
+  buildCounterCommentInReplyTo++;
+  if (buildCounterCommentInReplyTo < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+  }
+  buildCounterCommentInReplyTo--;
+}
+
+core.int buildCounterCommentPost = 0;
+buildCommentPost() {
+  var o = new api.CommentPost();
+  buildCounterCommentPost++;
+  if (buildCounterCommentPost < 3) {
+    o.id = "foo";
+  }
+  buildCounterCommentPost--;
+  return o;
+}
+
+checkCommentPost(api.CommentPost o) {
+  buildCounterCommentPost++;
+  if (buildCounterCommentPost < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+  }
+  buildCounterCommentPost--;
+}
+
+core.int buildCounterComment = 0;
+buildComment() {
+  var o = new api.Comment();
+  buildCounterComment++;
+  if (buildCounterComment < 3) {
+    o.author = buildCommentAuthor();
+    o.blog = buildCommentBlog();
+    o.content = "foo";
+    o.id = "foo";
+    o.inReplyTo = buildCommentInReplyTo();
+    o.kind = "foo";
+    o.post = buildCommentPost();
+    o.published = core.DateTime.parse("2002-02-27T14:01:02");
+    o.selfLink = "foo";
+    o.status = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+  }
+  buildCounterComment--;
+  return o;
+}
+
+checkComment(api.Comment o) {
+  buildCounterComment++;
+  if (buildCounterComment < 3) {
+    checkCommentAuthor(o.author);
+    checkCommentBlog(o.blog);
+    unittest.expect(o.content, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkCommentInReplyTo(o.inReplyTo);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkCommentPost(o.post);
+    unittest.expect(o.published,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+  }
+  buildCounterComment--;
+}
+
+buildUnnamed1317() {
+  var o = new core.List<api.Comment>();
+  o.add(buildComment());
+  o.add(buildComment());
+  return o;
+}
+
+checkUnnamed1317(core.List<api.Comment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkComment(o[0]);
+  checkComment(o[1]);
+}
+
+core.int buildCounterCommentList = 0;
+buildCommentList() {
+  var o = new api.CommentList();
+  buildCounterCommentList++;
+  if (buildCounterCommentList < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1317();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.prevPageToken = "foo";
+  }
+  buildCounterCommentList--;
+  return o;
+}
+
+checkCommentList(api.CommentList o) {
+  buildCounterCommentList++;
+  if (buildCounterCommentList < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1317(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.prevPageToken, unittest.equals('foo'));
+  }
+  buildCounterCommentList--;
+}
+
+core.int buildCounterPageAuthorImage = 0;
+buildPageAuthorImage() {
+  var o = new api.PageAuthorImage();
+  buildCounterPageAuthorImage++;
+  if (buildCounterPageAuthorImage < 3) {
+    o.url = "foo";
+  }
+  buildCounterPageAuthorImage--;
+  return o;
+}
+
+checkPageAuthorImage(api.PageAuthorImage o) {
+  buildCounterPageAuthorImage++;
+  if (buildCounterPageAuthorImage < 3) {
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterPageAuthorImage--;
+}
+
+core.int buildCounterPageAuthor = 0;
+buildPageAuthor() {
+  var o = new api.PageAuthor();
+  buildCounterPageAuthor++;
+  if (buildCounterPageAuthor < 3) {
+    o.displayName = "foo";
+    o.id = "foo";
+    o.image = buildPageAuthorImage();
+    o.url = "foo";
+  }
+  buildCounterPageAuthor--;
+  return o;
+}
+
+checkPageAuthor(api.PageAuthor o) {
+  buildCounterPageAuthor++;
+  if (buildCounterPageAuthor < 3) {
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkPageAuthorImage(o.image);
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterPageAuthor--;
+}
+
+core.int buildCounterPageBlog = 0;
+buildPageBlog() {
+  var o = new api.PageBlog();
+  buildCounterPageBlog++;
+  if (buildCounterPageBlog < 3) {
+    o.id = "foo";
+  }
+  buildCounterPageBlog--;
+  return o;
+}
+
+checkPageBlog(api.PageBlog o) {
+  buildCounterPageBlog++;
+  if (buildCounterPageBlog < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+  }
+  buildCounterPageBlog--;
+}
+
+core.int buildCounterPage = 0;
+buildPage() {
+  var o = new api.Page();
+  buildCounterPage++;
+  if (buildCounterPage < 3) {
+    o.author = buildPageAuthor();
+    o.blog = buildPageBlog();
+    o.content = "foo";
+    o.etag = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.published = core.DateTime.parse("2002-02-27T14:01:02");
+    o.selfLink = "foo";
+    o.status = "foo";
+    o.title = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.url = "foo";
+  }
+  buildCounterPage--;
+  return o;
+}
+
+checkPage(api.Page o) {
+  buildCounterPage++;
+  if (buildCounterPage < 3) {
+    checkPageAuthor(o.author);
+    checkPageBlog(o.blog);
+    unittest.expect(o.content, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.published,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterPage--;
+}
+
+buildUnnamed1318() {
+  var o = new core.List<api.Page>();
+  o.add(buildPage());
+  o.add(buildPage());
+  return o;
+}
+
+checkUnnamed1318(core.List<api.Page> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPage(o[0]);
+  checkPage(o[1]);
+}
+
+core.int buildCounterPageList = 0;
+buildPageList() {
+  var o = new api.PageList();
+  buildCounterPageList++;
+  if (buildCounterPageList < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1318();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterPageList--;
+  return o;
+}
+
+checkPageList(api.PageList o) {
+  buildCounterPageList++;
+  if (buildCounterPageList < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1318(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterPageList--;
+}
+
+core.int buildCounterPageviewsCounts = 0;
+buildPageviewsCounts() {
+  var o = new api.PageviewsCounts();
+  buildCounterPageviewsCounts++;
+  if (buildCounterPageviewsCounts < 3) {
+    o.count = "foo";
+    o.timeRange = "foo";
+  }
+  buildCounterPageviewsCounts--;
+  return o;
+}
+
+checkPageviewsCounts(api.PageviewsCounts o) {
+  buildCounterPageviewsCounts++;
+  if (buildCounterPageviewsCounts < 3) {
+    unittest.expect(o.count, unittest.equals('foo'));
+    unittest.expect(o.timeRange, unittest.equals('foo'));
+  }
+  buildCounterPageviewsCounts--;
+}
+
+buildUnnamed1319() {
+  var o = new core.List<api.PageviewsCounts>();
+  o.add(buildPageviewsCounts());
+  o.add(buildPageviewsCounts());
+  return o;
+}
+
+checkUnnamed1319(core.List<api.PageviewsCounts> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPageviewsCounts(o[0]);
+  checkPageviewsCounts(o[1]);
+}
+
+core.int buildCounterPageviews = 0;
+buildPageviews() {
+  var o = new api.Pageviews();
+  buildCounterPageviews++;
+  if (buildCounterPageviews < 3) {
+    o.blogId = "foo";
+    o.counts = buildUnnamed1319();
+    o.kind = "foo";
+  }
+  buildCounterPageviews--;
+  return o;
+}
+
+checkPageviews(api.Pageviews o) {
+  buildCounterPageviews++;
+  if (buildCounterPageviews < 3) {
+    unittest.expect(o.blogId, unittest.equals('foo'));
+    checkUnnamed1319(o.counts);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterPageviews--;
+}
+
+core.int buildCounterPostAuthorImage = 0;
+buildPostAuthorImage() {
+  var o = new api.PostAuthorImage();
+  buildCounterPostAuthorImage++;
+  if (buildCounterPostAuthorImage < 3) {
+    o.url = "foo";
+  }
+  buildCounterPostAuthorImage--;
+  return o;
+}
+
+checkPostAuthorImage(api.PostAuthorImage o) {
+  buildCounterPostAuthorImage++;
+  if (buildCounterPostAuthorImage < 3) {
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterPostAuthorImage--;
+}
+
+core.int buildCounterPostAuthor = 0;
+buildPostAuthor() {
+  var o = new api.PostAuthor();
+  buildCounterPostAuthor++;
+  if (buildCounterPostAuthor < 3) {
+    o.displayName = "foo";
+    o.id = "foo";
+    o.image = buildPostAuthorImage();
+    o.url = "foo";
+  }
+  buildCounterPostAuthor--;
+  return o;
+}
+
+checkPostAuthor(api.PostAuthor o) {
+  buildCounterPostAuthor++;
+  if (buildCounterPostAuthor < 3) {
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkPostAuthorImage(o.image);
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterPostAuthor--;
+}
+
+core.int buildCounterPostBlog = 0;
+buildPostBlog() {
+  var o = new api.PostBlog();
+  buildCounterPostBlog++;
+  if (buildCounterPostBlog < 3) {
+    o.id = "foo";
+  }
+  buildCounterPostBlog--;
+  return o;
+}
+
+checkPostBlog(api.PostBlog o) {
+  buildCounterPostBlog++;
+  if (buildCounterPostBlog < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+  }
+  buildCounterPostBlog--;
+}
+
+core.int buildCounterPostImages = 0;
+buildPostImages() {
+  var o = new api.PostImages();
+  buildCounterPostImages++;
+  if (buildCounterPostImages < 3) {
+    o.url = "foo";
+  }
+  buildCounterPostImages--;
+  return o;
+}
+
+checkPostImages(api.PostImages o) {
+  buildCounterPostImages++;
+  if (buildCounterPostImages < 3) {
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterPostImages--;
+}
+
+buildUnnamed1320() {
+  var o = new core.List<api.PostImages>();
+  o.add(buildPostImages());
+  o.add(buildPostImages());
+  return o;
+}
+
+checkUnnamed1320(core.List<api.PostImages> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPostImages(o[0]);
+  checkPostImages(o[1]);
+}
+
+buildUnnamed1321() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1321(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPostLocation = 0;
+buildPostLocation() {
+  var o = new api.PostLocation();
+  buildCounterPostLocation++;
+  if (buildCounterPostLocation < 3) {
+    o.lat = 42.0;
+    o.lng = 42.0;
+    o.name = "foo";
+    o.span = "foo";
+  }
+  buildCounterPostLocation--;
+  return o;
+}
+
+checkPostLocation(api.PostLocation o) {
+  buildCounterPostLocation++;
+  if (buildCounterPostLocation < 3) {
+    unittest.expect(o.lat, unittest.equals(42.0));
+    unittest.expect(o.lng, unittest.equals(42.0));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.span, unittest.equals('foo'));
+  }
+  buildCounterPostLocation--;
+}
+
+buildUnnamed1322() {
+  var o = new core.List<api.Comment>();
+  o.add(buildComment());
+  o.add(buildComment());
+  return o;
+}
+
+checkUnnamed1322(core.List<api.Comment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkComment(o[0]);
+  checkComment(o[1]);
+}
+
+core.int buildCounterPostReplies = 0;
+buildPostReplies() {
+  var o = new api.PostReplies();
+  buildCounterPostReplies++;
+  if (buildCounterPostReplies < 3) {
+    o.items = buildUnnamed1322();
+    o.selfLink = "foo";
+    o.totalItems = "foo";
+  }
+  buildCounterPostReplies--;
+  return o;
+}
+
+checkPostReplies(api.PostReplies o) {
+  buildCounterPostReplies++;
+  if (buildCounterPostReplies < 3) {
+    checkUnnamed1322(o.items);
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals('foo'));
+  }
+  buildCounterPostReplies--;
+}
+
+core.int buildCounterPost = 0;
+buildPost() {
+  var o = new api.Post();
+  buildCounterPost++;
+  if (buildCounterPost < 3) {
+    o.author = buildPostAuthor();
+    o.blog = buildPostBlog();
+    o.content = "foo";
+    o.customMetaData = "foo";
+    o.etag = "foo";
+    o.id = "foo";
+    o.images = buildUnnamed1320();
+    o.kind = "foo";
+    o.labels = buildUnnamed1321();
+    o.location = buildPostLocation();
+    o.published = core.DateTime.parse("2002-02-27T14:01:02");
+    o.readerComments = "foo";
+    o.replies = buildPostReplies();
+    o.selfLink = "foo";
+    o.status = "foo";
+    o.title = "foo";
+    o.titleLink = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.url = "foo";
+  }
+  buildCounterPost--;
+  return o;
+}
+
+checkPost(api.Post o) {
+  buildCounterPost++;
+  if (buildCounterPost < 3) {
+    checkPostAuthor(o.author);
+    checkPostBlog(o.blog);
+    unittest.expect(o.content, unittest.equals('foo'));
+    unittest.expect(o.customMetaData, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed1320(o.images);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed1321(o.labels);
+    checkPostLocation(o.location);
+    unittest.expect(o.published,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.readerComments, unittest.equals('foo'));
+    checkPostReplies(o.replies);
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.titleLink, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterPost--;
+}
+
+buildUnnamed1323() {
+  var o = new core.List<api.Post>();
+  o.add(buildPost());
+  o.add(buildPost());
+  return o;
+}
+
+checkUnnamed1323(core.List<api.Post> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPost(o[0]);
+  checkPost(o[1]);
+}
+
+core.int buildCounterPostList = 0;
+buildPostList() {
+  var o = new api.PostList();
+  buildCounterPostList++;
+  if (buildCounterPostList < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1323();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterPostList--;
+  return o;
+}
+
+checkPostList(api.PostList o) {
+  buildCounterPostList++;
+  if (buildCounterPostList < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1323(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterPostList--;
+}
+
+core.int buildCounterPostPerUserInfo = 0;
+buildPostPerUserInfo() {
+  var o = new api.PostPerUserInfo();
+  buildCounterPostPerUserInfo++;
+  if (buildCounterPostPerUserInfo < 3) {
+    o.blogId = "foo";
+    o.hasEditAccess = true;
+    o.kind = "foo";
+    o.postId = "foo";
+    o.userId = "foo";
+  }
+  buildCounterPostPerUserInfo--;
+  return o;
+}
+
+checkPostPerUserInfo(api.PostPerUserInfo o) {
+  buildCounterPostPerUserInfo++;
+  if (buildCounterPostPerUserInfo < 3) {
+    unittest.expect(o.blogId, unittest.equals('foo'));
+    unittest.expect(o.hasEditAccess, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.postId, unittest.equals('foo'));
+    unittest.expect(o.userId, unittest.equals('foo'));
+  }
+  buildCounterPostPerUserInfo--;
+}
+
+core.int buildCounterPostUserInfo = 0;
+buildPostUserInfo() {
+  var o = new api.PostUserInfo();
+  buildCounterPostUserInfo++;
+  if (buildCounterPostUserInfo < 3) {
+    o.kind = "foo";
+    o.post = buildPost();
+    o.postUserInfo = buildPostPerUserInfo();
+  }
+  buildCounterPostUserInfo--;
+  return o;
+}
+
+checkPostUserInfo(api.PostUserInfo o) {
+  buildCounterPostUserInfo++;
+  if (buildCounterPostUserInfo < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkPost(o.post);
+    checkPostPerUserInfo(o.postUserInfo);
+  }
+  buildCounterPostUserInfo--;
+}
+
+buildUnnamed1324() {
+  var o = new core.List<api.PostUserInfo>();
+  o.add(buildPostUserInfo());
+  o.add(buildPostUserInfo());
+  return o;
+}
+
+checkUnnamed1324(core.List<api.PostUserInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPostUserInfo(o[0]);
+  checkPostUserInfo(o[1]);
+}
+
+core.int buildCounterPostUserInfosList = 0;
+buildPostUserInfosList() {
+  var o = new api.PostUserInfosList();
+  buildCounterPostUserInfosList++;
+  if (buildCounterPostUserInfosList < 3) {
+    o.items = buildUnnamed1324();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterPostUserInfosList--;
+  return o;
+}
+
+checkPostUserInfosList(api.PostUserInfosList o) {
+  buildCounterPostUserInfosList++;
+  if (buildCounterPostUserInfosList < 3) {
+    checkUnnamed1324(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterPostUserInfosList--;
+}
+
+core.int buildCounterUserBlogs = 0;
+buildUserBlogs() {
+  var o = new api.UserBlogs();
+  buildCounterUserBlogs++;
+  if (buildCounterUserBlogs < 3) {
+    o.selfLink = "foo";
+  }
+  buildCounterUserBlogs--;
+  return o;
+}
+
+checkUserBlogs(api.UserBlogs o) {
+  buildCounterUserBlogs++;
+  if (buildCounterUserBlogs < 3) {
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+  }
+  buildCounterUserBlogs--;
+}
+
+core.int buildCounterUserLocale = 0;
+buildUserLocale() {
+  var o = new api.UserLocale();
+  buildCounterUserLocale++;
+  if (buildCounterUserLocale < 3) {
+    o.country = "foo";
+    o.language = "foo";
+    o.variant = "foo";
+  }
+  buildCounterUserLocale--;
+  return o;
+}
+
+checkUserLocale(api.UserLocale o) {
+  buildCounterUserLocale++;
+  if (buildCounterUserLocale < 3) {
+    unittest.expect(o.country, unittest.equals('foo'));
+    unittest.expect(o.language, unittest.equals('foo'));
+    unittest.expect(o.variant, unittest.equals('foo'));
+  }
+  buildCounterUserLocale--;
+}
+
+core.int buildCounterUser = 0;
+buildUser() {
+  var o = new api.User();
+  buildCounterUser++;
+  if (buildCounterUser < 3) {
+    o.about = "foo";
+    o.blogs = buildUserBlogs();
+    o.created = core.DateTime.parse("2002-02-27T14:01:02");
+    o.displayName = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.locale = buildUserLocale();
+    o.selfLink = "foo";
+    o.url = "foo";
+  }
+  buildCounterUser--;
+  return o;
+}
+
+checkUser(api.User o) {
+  buildCounterUser++;
+  if (buildCounterUser < 3) {
+    unittest.expect(o.about, unittest.equals('foo'));
+    checkUserBlogs(o.blogs);
+    unittest.expect(
+        o.created, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUserLocale(o.locale);
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterUser--;
+}
+
+buildUnnamed1325() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1325(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1326() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1326(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1327() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1327(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1328() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1328(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1329() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1329(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1330() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1330(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1331() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1331(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1332() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1332(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-BlogLocale", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBlogLocale();
+      var od = new api.BlogLocale.fromJson(o.toJson());
+      checkBlogLocale(od);
+    });
+  });
+
+  unittest.group("obj-schema-BlogPages", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBlogPages();
+      var od = new api.BlogPages.fromJson(o.toJson());
+      checkBlogPages(od);
+    });
+  });
+
+  unittest.group("obj-schema-BlogPosts", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBlogPosts();
+      var od = new api.BlogPosts.fromJson(o.toJson());
+      checkBlogPosts(od);
+    });
+  });
+
+  unittest.group("obj-schema-Blog", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBlog();
+      var od = new api.Blog.fromJson(o.toJson());
+      checkBlog(od);
+    });
+  });
+
+  unittest.group("obj-schema-BlogList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBlogList();
+      var od = new api.BlogList.fromJson(o.toJson());
+      checkBlogList(od);
+    });
+  });
+
+  unittest.group("obj-schema-BlogPerUserInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBlogPerUserInfo();
+      var od = new api.BlogPerUserInfo.fromJson(o.toJson());
+      checkBlogPerUserInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-BlogUserInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBlogUserInfo();
+      var od = new api.BlogUserInfo.fromJson(o.toJson());
+      checkBlogUserInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommentAuthorImage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommentAuthorImage();
+      var od = new api.CommentAuthorImage.fromJson(o.toJson());
+      checkCommentAuthorImage(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommentAuthor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommentAuthor();
+      var od = new api.CommentAuthor.fromJson(o.toJson());
+      checkCommentAuthor(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommentBlog", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommentBlog();
+      var od = new api.CommentBlog.fromJson(o.toJson());
+      checkCommentBlog(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommentInReplyTo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommentInReplyTo();
+      var od = new api.CommentInReplyTo.fromJson(o.toJson());
+      checkCommentInReplyTo(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommentPost", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommentPost();
+      var od = new api.CommentPost.fromJson(o.toJson());
+      checkCommentPost(od);
+    });
+  });
+
+  unittest.group("obj-schema-Comment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildComment();
+      var od = new api.Comment.fromJson(o.toJson());
+      checkComment(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommentList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommentList();
+      var od = new api.CommentList.fromJson(o.toJson());
+      checkCommentList(od);
+    });
+  });
+
+  unittest.group("obj-schema-PageAuthorImage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPageAuthorImage();
+      var od = new api.PageAuthorImage.fromJson(o.toJson());
+      checkPageAuthorImage(od);
+    });
+  });
+
+  unittest.group("obj-schema-PageAuthor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPageAuthor();
+      var od = new api.PageAuthor.fromJson(o.toJson());
+      checkPageAuthor(od);
+    });
+  });
+
+  unittest.group("obj-schema-PageBlog", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPageBlog();
+      var od = new api.PageBlog.fromJson(o.toJson());
+      checkPageBlog(od);
+    });
+  });
+
+  unittest.group("obj-schema-Page", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPage();
+      var od = new api.Page.fromJson(o.toJson());
+      checkPage(od);
+    });
+  });
+
+  unittest.group("obj-schema-PageList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPageList();
+      var od = new api.PageList.fromJson(o.toJson());
+      checkPageList(od);
+    });
+  });
+
+  unittest.group("obj-schema-PageviewsCounts", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPageviewsCounts();
+      var od = new api.PageviewsCounts.fromJson(o.toJson());
+      checkPageviewsCounts(od);
+    });
+  });
+
+  unittest.group("obj-schema-Pageviews", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPageviews();
+      var od = new api.Pageviews.fromJson(o.toJson());
+      checkPageviews(od);
+    });
+  });
+
+  unittest.group("obj-schema-PostAuthorImage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPostAuthorImage();
+      var od = new api.PostAuthorImage.fromJson(o.toJson());
+      checkPostAuthorImage(od);
+    });
+  });
+
+  unittest.group("obj-schema-PostAuthor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPostAuthor();
+      var od = new api.PostAuthor.fromJson(o.toJson());
+      checkPostAuthor(od);
+    });
+  });
+
+  unittest.group("obj-schema-PostBlog", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPostBlog();
+      var od = new api.PostBlog.fromJson(o.toJson());
+      checkPostBlog(od);
+    });
+  });
+
+  unittest.group("obj-schema-PostImages", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPostImages();
+      var od = new api.PostImages.fromJson(o.toJson());
+      checkPostImages(od);
+    });
+  });
+
+  unittest.group("obj-schema-PostLocation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPostLocation();
+      var od = new api.PostLocation.fromJson(o.toJson());
+      checkPostLocation(od);
+    });
+  });
+
+  unittest.group("obj-schema-PostReplies", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPostReplies();
+      var od = new api.PostReplies.fromJson(o.toJson());
+      checkPostReplies(od);
+    });
+  });
+
+  unittest.group("obj-schema-Post", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPost();
+      var od = new api.Post.fromJson(o.toJson());
+      checkPost(od);
+    });
+  });
+
+  unittest.group("obj-schema-PostList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPostList();
+      var od = new api.PostList.fromJson(o.toJson());
+      checkPostList(od);
+    });
+  });
+
+  unittest.group("obj-schema-PostPerUserInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPostPerUserInfo();
+      var od = new api.PostPerUserInfo.fromJson(o.toJson());
+      checkPostPerUserInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-PostUserInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPostUserInfo();
+      var od = new api.PostUserInfo.fromJson(o.toJson());
+      checkPostUserInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-PostUserInfosList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPostUserInfosList();
+      var od = new api.PostUserInfosList.fromJson(o.toJson());
+      checkPostUserInfosList(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserBlogs", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserBlogs();
+      var od = new api.UserBlogs.fromJson(o.toJson());
+      checkUserBlogs(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserLocale", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserLocale();
+      var od = new api.UserLocale.fromJson(o.toJson());
+      checkUserLocale(od);
+    });
+  });
+
+  unittest.group("obj-schema-User", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUser();
+      var od = new api.User.fromJson(o.toJson());
+      checkUser(od);
+    });
+  });
+
+  unittest.group("resource-BlogUserInfosResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.BlogUserInfosResourceApi res = new api.BloggerApi(mock).blogUserInfos;
+      var arg_userId = "foo";
+      var arg_blogId = "foo";
+      var arg_maxPosts = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("users/"));
+        pathOffset += 6;
+        index = path.indexOf("/blogs/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/blogs/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxPosts"].first),
+            unittest.equals(arg_maxPosts));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBlogUserInfo());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, arg_blogId,
+              maxPosts: arg_maxPosts, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BlogUserInfo response) {
+        checkBlogUserInfo(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BlogsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.BlogsResourceApi res = new api.BloggerApi(mock).blogs;
+      var arg_blogId = "foo";
+      var arg_maxPosts = 42;
+      var arg_view = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxPosts"].first),
+            unittest.equals(arg_maxPosts));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBlog());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_blogId,
+              maxPosts: arg_maxPosts, view: arg_view, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Blog response) {
+        checkBlog(response);
+      })));
+    });
+
+    unittest.test("method--getByUrl", () {
+      var mock = new HttpServerMock();
+      api.BlogsResourceApi res = new api.BloggerApi(mock).blogs;
+      var arg_url = "foo";
+      var arg_view = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogs/byurl"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["url"].first, unittest.equals(arg_url));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBlog());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getByUrl(arg_url, view: arg_view, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Blog response) {
+        checkBlog(response);
+      })));
+    });
+
+    unittest.test("method--listByUser", () {
+      var mock = new HttpServerMock();
+      api.BlogsResourceApi res = new api.BloggerApi(mock).blogs;
+      var arg_userId = "foo";
+      var arg_fetchUserInfo = true;
+      var arg_role = buildUnnamed1325();
+      var arg_status = buildUnnamed1326();
+      var arg_view = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("users/"));
+        pathOffset += 6;
+        index = path.indexOf("/blogs", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/blogs"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fetchUserInfo"].first,
+            unittest.equals("$arg_fetchUserInfo"));
+        unittest.expect(queryMap["role"], unittest.equals(arg_role));
+        unittest.expect(queryMap["status"], unittest.equals(arg_status));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBlogList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .listByUser(arg_userId,
+              fetchUserInfo: arg_fetchUserInfo,
+              role: arg_role,
+              status: arg_status,
+              view: arg_view,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BlogList response) {
+        checkBlogList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CommentsResourceApi", () {
+    unittest.test("method--approve", () {
+      var mock = new HttpServerMock();
+      api.CommentsResourceApi res = new api.BloggerApi(mock).comments;
+      var arg_blogId = "foo";
+      var arg_postId = "foo";
+      var arg_commentId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/posts/"));
+        pathOffset += 7;
+        index = path.indexOf("/comments/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_postId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/comments/"));
+        pathOffset += 10;
+        index = path.indexOf("/approve", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_commentId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/approve"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildComment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .approve(arg_blogId, arg_postId, arg_commentId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Comment response) {
+        checkComment(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.CommentsResourceApi res = new api.BloggerApi(mock).comments;
+      var arg_blogId = "foo";
+      var arg_postId = "foo";
+      var arg_commentId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/posts/"));
+        pathOffset += 7;
+        index = path.indexOf("/comments/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_postId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/comments/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_commentId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_blogId, arg_postId, arg_commentId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CommentsResourceApi res = new api.BloggerApi(mock).comments;
+      var arg_blogId = "foo";
+      var arg_postId = "foo";
+      var arg_commentId = "foo";
+      var arg_view = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/posts/"));
+        pathOffset += 7;
+        index = path.indexOf("/comments/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_postId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/comments/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_commentId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildComment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_blogId, arg_postId, arg_commentId,
+              view: arg_view, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Comment response) {
+        checkComment(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CommentsResourceApi res = new api.BloggerApi(mock).comments;
+      var arg_blogId = "foo";
+      var arg_postId = "foo";
+      var arg_endDate = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_fetchBodies = true;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_startDate = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_status = buildUnnamed1327();
+      var arg_view = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/posts/"));
+        pathOffset += 7;
+        index = path.indexOf("/comments", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_postId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/comments"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.DateTime.parse(queryMap["endDate"].first),
+            unittest.equals(arg_endDate));
+        unittest.expect(
+            queryMap["fetchBodies"].first, unittest.equals("$arg_fetchBodies"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.DateTime.parse(queryMap["startDate"].first),
+            unittest.equals(arg_startDate));
+        unittest.expect(queryMap["status"], unittest.equals(arg_status));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCommentList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_blogId, arg_postId,
+              endDate: arg_endDate,
+              fetchBodies: arg_fetchBodies,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              startDate: arg_startDate,
+              status: arg_status,
+              view: arg_view,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CommentList response) {
+        checkCommentList(response);
+      })));
+    });
+
+    unittest.test("method--listByBlog", () {
+      var mock = new HttpServerMock();
+      api.CommentsResourceApi res = new api.BloggerApi(mock).comments;
+      var arg_blogId = "foo";
+      var arg_endDate = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_fetchBodies = true;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_startDate = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_status = buildUnnamed1328();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/comments", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/comments"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.DateTime.parse(queryMap["endDate"].first),
+            unittest.equals(arg_endDate));
+        unittest.expect(
+            queryMap["fetchBodies"].first, unittest.equals("$arg_fetchBodies"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.DateTime.parse(queryMap["startDate"].first),
+            unittest.equals(arg_startDate));
+        unittest.expect(queryMap["status"], unittest.equals(arg_status));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCommentList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .listByBlog(arg_blogId,
+              endDate: arg_endDate,
+              fetchBodies: arg_fetchBodies,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              startDate: arg_startDate,
+              status: arg_status,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CommentList response) {
+        checkCommentList(response);
+      })));
+    });
+
+    unittest.test("method--markAsSpam", () {
+      var mock = new HttpServerMock();
+      api.CommentsResourceApi res = new api.BloggerApi(mock).comments;
+      var arg_blogId = "foo";
+      var arg_postId = "foo";
+      var arg_commentId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/posts/"));
+        pathOffset += 7;
+        index = path.indexOf("/comments/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_postId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/comments/"));
+        pathOffset += 10;
+        index = path.indexOf("/spam", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_commentId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/spam"));
+        pathOffset += 5;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildComment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .markAsSpam(arg_blogId, arg_postId, arg_commentId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Comment response) {
+        checkComment(response);
+      })));
+    });
+
+    unittest.test("method--removeContent", () {
+      var mock = new HttpServerMock();
+      api.CommentsResourceApi res = new api.BloggerApi(mock).comments;
+      var arg_blogId = "foo";
+      var arg_postId = "foo";
+      var arg_commentId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/posts/"));
+        pathOffset += 7;
+        index = path.indexOf("/comments/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_postId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/comments/"));
+        pathOffset += 10;
+        index = path.indexOf("/removecontent", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_commentId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/removecontent"));
+        pathOffset += 14;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildComment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .removeContent(arg_blogId, arg_postId, arg_commentId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Comment response) {
+        checkComment(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PageViewsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PageViewsResourceApi res = new api.BloggerApi(mock).pageViews;
+      var arg_blogId = "foo";
+      var arg_range = buildUnnamed1329();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/pageviews", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/pageviews"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["range"], unittest.equals(arg_range));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPageviews());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_blogId, range: arg_range, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Pageviews response) {
+        checkPageviews(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PagesResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.PagesResourceApi res = new api.BloggerApi(mock).pages;
+      var arg_blogId = "foo";
+      var arg_pageId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/pages/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/pages/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_pageId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_blogId, arg_pageId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PagesResourceApi res = new api.BloggerApi(mock).pages;
+      var arg_blogId = "foo";
+      var arg_pageId = "foo";
+      var arg_view = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/pages/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/pages/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_pageId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_blogId, arg_pageId, view: arg_view, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Page response) {
+        checkPage(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.PagesResourceApi res = new api.BloggerApi(mock).pages;
+      var arg_request = buildPage();
+      var arg_blogId = "foo";
+      var arg_isDraft = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Page.fromJson(json);
+        checkPage(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/pages", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/pages"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["isDraft"].first, unittest.equals("$arg_isDraft"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_blogId,
+              isDraft: arg_isDraft, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Page response) {
+        checkPage(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PagesResourceApi res = new api.BloggerApi(mock).pages;
+      var arg_blogId = "foo";
+      var arg_fetchBodies = true;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_status = buildUnnamed1330();
+      var arg_view = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/pages", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/pages"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fetchBodies"].first, unittest.equals("$arg_fetchBodies"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["status"], unittest.equals(arg_status));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPageList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_blogId,
+              fetchBodies: arg_fetchBodies,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              status: arg_status,
+              view: arg_view,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PageList response) {
+        checkPageList(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.PagesResourceApi res = new api.BloggerApi(mock).pages;
+      var arg_request = buildPage();
+      var arg_blogId = "foo";
+      var arg_pageId = "foo";
+      var arg_publish_1 = true;
+      var arg_revert_1 = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Page.fromJson(json);
+        checkPage(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/pages/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/pages/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_pageId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["publish"].first, unittest.equals("$arg_publish_1"));
+        unittest.expect(
+            queryMap["revert"].first, unittest.equals("$arg_revert_1"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_blogId, arg_pageId,
+              publish_1: arg_publish_1,
+              revert_1: arg_revert_1,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Page response) {
+        checkPage(response);
+      })));
+    });
+
+    unittest.test("method--publish", () {
+      var mock = new HttpServerMock();
+      api.PagesResourceApi res = new api.BloggerApi(mock).pages;
+      var arg_blogId = "foo";
+      var arg_pageId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/pages/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/pages/"));
+        pathOffset += 7;
+        index = path.indexOf("/publish", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_pageId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/publish"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .publish(arg_blogId, arg_pageId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Page response) {
+        checkPage(response);
+      })));
+    });
+
+    unittest.test("method--revert", () {
+      var mock = new HttpServerMock();
+      api.PagesResourceApi res = new api.BloggerApi(mock).pages;
+      var arg_blogId = "foo";
+      var arg_pageId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/pages/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/pages/"));
+        pathOffset += 7;
+        index = path.indexOf("/revert", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_pageId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/revert"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .revert(arg_blogId, arg_pageId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Page response) {
+        checkPage(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.PagesResourceApi res = new api.BloggerApi(mock).pages;
+      var arg_request = buildPage();
+      var arg_blogId = "foo";
+      var arg_pageId = "foo";
+      var arg_publish_1 = true;
+      var arg_revert_1 = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Page.fromJson(json);
+        checkPage(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/pages/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/pages/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_pageId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["publish"].first, unittest.equals("$arg_publish_1"));
+        unittest.expect(
+            queryMap["revert"].first, unittest.equals("$arg_revert_1"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_blogId, arg_pageId,
+              publish_1: arg_publish_1,
+              revert_1: arg_revert_1,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Page response) {
+        checkPage(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PostUserInfosResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PostUserInfosResourceApi res = new api.BloggerApi(mock).postUserInfos;
+      var arg_userId = "foo";
+      var arg_blogId = "foo";
+      var arg_postId = "foo";
+      var arg_maxComments = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("users/"));
+        pathOffset += 6;
+        index = path.indexOf("/blogs/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/blogs/"));
+        pathOffset += 7;
+        index = path.indexOf("/posts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/posts/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_postId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxComments"].first),
+            unittest.equals(arg_maxComments));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPostUserInfo());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, arg_blogId, arg_postId,
+              maxComments: arg_maxComments, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PostUserInfo response) {
+        checkPostUserInfo(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PostUserInfosResourceApi res = new api.BloggerApi(mock).postUserInfos;
+      var arg_userId = "foo";
+      var arg_blogId = "foo";
+      var arg_endDate = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_fetchBodies = true;
+      var arg_labels = "foo";
+      var arg_maxResults = 42;
+      var arg_orderBy = "foo";
+      var arg_pageToken = "foo";
+      var arg_startDate = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_status = buildUnnamed1331();
+      var arg_view = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("users/"));
+        pathOffset += 6;
+        index = path.indexOf("/blogs/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/blogs/"));
+        pathOffset += 7;
+        index = path.indexOf("/posts", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/posts"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.DateTime.parse(queryMap["endDate"].first),
+            unittest.equals(arg_endDate));
+        unittest.expect(
+            queryMap["fetchBodies"].first, unittest.equals("$arg_fetchBodies"));
+        unittest.expect(queryMap["labels"].first, unittest.equals(arg_labels));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.DateTime.parse(queryMap["startDate"].first),
+            unittest.equals(arg_startDate));
+        unittest.expect(queryMap["status"], unittest.equals(arg_status));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPostUserInfosList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId, arg_blogId,
+              endDate: arg_endDate,
+              fetchBodies: arg_fetchBodies,
+              labels: arg_labels,
+              maxResults: arg_maxResults,
+              orderBy: arg_orderBy,
+              pageToken: arg_pageToken,
+              startDate: arg_startDate,
+              status: arg_status,
+              view: arg_view,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PostUserInfosList response) {
+        checkPostUserInfosList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PostsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.PostsResourceApi res = new api.BloggerApi(mock).posts;
+      var arg_blogId = "foo";
+      var arg_postId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/posts/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_postId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_blogId, arg_postId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PostsResourceApi res = new api.BloggerApi(mock).posts;
+      var arg_blogId = "foo";
+      var arg_postId = "foo";
+      var arg_fetchBody = true;
+      var arg_fetchImages = true;
+      var arg_maxComments = 42;
+      var arg_view = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/posts/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_postId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fetchBody"].first, unittest.equals("$arg_fetchBody"));
+        unittest.expect(
+            queryMap["fetchImages"].first, unittest.equals("$arg_fetchImages"));
+        unittest.expect(core.int.parse(queryMap["maxComments"].first),
+            unittest.equals(arg_maxComments));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPost());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_blogId, arg_postId,
+              fetchBody: arg_fetchBody,
+              fetchImages: arg_fetchImages,
+              maxComments: arg_maxComments,
+              view: arg_view,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Post response) {
+        checkPost(response);
+      })));
+    });
+
+    unittest.test("method--getByPath", () {
+      var mock = new HttpServerMock();
+      api.PostsResourceApi res = new api.BloggerApi(mock).posts;
+      var arg_blogId = "foo";
+      var arg_path = "foo";
+      var arg_maxComments = 42;
+      var arg_view = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts/bypath", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/posts/bypath"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["path"].first, unittest.equals(arg_path));
+        unittest.expect(core.int.parse(queryMap["maxComments"].first),
+            unittest.equals(arg_maxComments));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPost());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getByPath(arg_blogId, arg_path,
+              maxComments: arg_maxComments,
+              view: arg_view,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Post response) {
+        checkPost(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.PostsResourceApi res = new api.BloggerApi(mock).posts;
+      var arg_request = buildPost();
+      var arg_blogId = "foo";
+      var arg_fetchBody = true;
+      var arg_fetchImages = true;
+      var arg_isDraft = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Post.fromJson(json);
+        checkPost(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/posts"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fetchBody"].first, unittest.equals("$arg_fetchBody"));
+        unittest.expect(
+            queryMap["fetchImages"].first, unittest.equals("$arg_fetchImages"));
+        unittest.expect(
+            queryMap["isDraft"].first, unittest.equals("$arg_isDraft"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPost());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_blogId,
+              fetchBody: arg_fetchBody,
+              fetchImages: arg_fetchImages,
+              isDraft: arg_isDraft,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Post response) {
+        checkPost(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PostsResourceApi res = new api.BloggerApi(mock).posts;
+      var arg_blogId = "foo";
+      var arg_endDate = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_fetchBodies = true;
+      var arg_fetchImages = true;
+      var arg_labels = "foo";
+      var arg_maxResults = 42;
+      var arg_orderBy = "foo";
+      var arg_pageToken = "foo";
+      var arg_startDate = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_status = buildUnnamed1332();
+      var arg_view = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/posts"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.DateTime.parse(queryMap["endDate"].first),
+            unittest.equals(arg_endDate));
+        unittest.expect(
+            queryMap["fetchBodies"].first, unittest.equals("$arg_fetchBodies"));
+        unittest.expect(
+            queryMap["fetchImages"].first, unittest.equals("$arg_fetchImages"));
+        unittest.expect(queryMap["labels"].first, unittest.equals(arg_labels));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.DateTime.parse(queryMap["startDate"].first),
+            unittest.equals(arg_startDate));
+        unittest.expect(queryMap["status"], unittest.equals(arg_status));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPostList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_blogId,
+              endDate: arg_endDate,
+              fetchBodies: arg_fetchBodies,
+              fetchImages: arg_fetchImages,
+              labels: arg_labels,
+              maxResults: arg_maxResults,
+              orderBy: arg_orderBy,
+              pageToken: arg_pageToken,
+              startDate: arg_startDate,
+              status: arg_status,
+              view: arg_view,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PostList response) {
+        checkPostList(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.PostsResourceApi res = new api.BloggerApi(mock).posts;
+      var arg_request = buildPost();
+      var arg_blogId = "foo";
+      var arg_postId = "foo";
+      var arg_fetchBody = true;
+      var arg_fetchImages = true;
+      var arg_maxComments = 42;
+      var arg_publish_1 = true;
+      var arg_revert_1 = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Post.fromJson(json);
+        checkPost(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/posts/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_postId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fetchBody"].first, unittest.equals("$arg_fetchBody"));
+        unittest.expect(
+            queryMap["fetchImages"].first, unittest.equals("$arg_fetchImages"));
+        unittest.expect(core.int.parse(queryMap["maxComments"].first),
+            unittest.equals(arg_maxComments));
+        unittest.expect(
+            queryMap["publish"].first, unittest.equals("$arg_publish_1"));
+        unittest.expect(
+            queryMap["revert"].first, unittest.equals("$arg_revert_1"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPost());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_blogId, arg_postId,
+              fetchBody: arg_fetchBody,
+              fetchImages: arg_fetchImages,
+              maxComments: arg_maxComments,
+              publish_1: arg_publish_1,
+              revert_1: arg_revert_1,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Post response) {
+        checkPost(response);
+      })));
+    });
+
+    unittest.test("method--publish", () {
+      var mock = new HttpServerMock();
+      api.PostsResourceApi res = new api.BloggerApi(mock).posts;
+      var arg_blogId = "foo";
+      var arg_postId = "foo";
+      var arg_publishDate = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/posts/"));
+        pathOffset += 7;
+        index = path.indexOf("/publish", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_postId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/publish"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.DateTime.parse(queryMap["publishDate"].first),
+            unittest.equals(arg_publishDate));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPost());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .publish(arg_blogId, arg_postId,
+              publishDate: arg_publishDate, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Post response) {
+        checkPost(response);
+      })));
+    });
+
+    unittest.test("method--revert", () {
+      var mock = new HttpServerMock();
+      api.PostsResourceApi res = new api.BloggerApi(mock).posts;
+      var arg_blogId = "foo";
+      var arg_postId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/posts/"));
+        pathOffset += 7;
+        index = path.indexOf("/revert", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_postId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/revert"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPost());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .revert(arg_blogId, arg_postId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Post response) {
+        checkPost(response);
+      })));
+    });
+
+    unittest.test("method--search", () {
+      var mock = new HttpServerMock();
+      api.PostsResourceApi res = new api.BloggerApi(mock).posts;
+      var arg_blogId = "foo";
+      var arg_q = "foo";
+      var arg_fetchBodies = true;
+      var arg_orderBy = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts/search", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/posts/search"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["q"].first, unittest.equals(arg_q));
+        unittest.expect(
+            queryMap["fetchBodies"].first, unittest.equals("$arg_fetchBodies"));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPostList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .search(arg_blogId, arg_q,
+              fetchBodies: arg_fetchBodies,
+              orderBy: arg_orderBy,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PostList response) {
+        checkPostList(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.PostsResourceApi res = new api.BloggerApi(mock).posts;
+      var arg_request = buildPost();
+      var arg_blogId = "foo";
+      var arg_postId = "foo";
+      var arg_fetchBody = true;
+      var arg_fetchImages = true;
+      var arg_maxComments = 42;
+      var arg_publish_1 = true;
+      var arg_revert_1 = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Post.fromJson(json);
+        checkPost(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("blogs/"));
+        pathOffset += 6;
+        index = path.indexOf("/posts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_blogId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/posts/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_postId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fetchBody"].first, unittest.equals("$arg_fetchBody"));
+        unittest.expect(
+            queryMap["fetchImages"].first, unittest.equals("$arg_fetchImages"));
+        unittest.expect(core.int.parse(queryMap["maxComments"].first),
+            unittest.equals(arg_maxComments));
+        unittest.expect(
+            queryMap["publish"].first, unittest.equals("$arg_publish_1"));
+        unittest.expect(
+            queryMap["revert"].first, unittest.equals("$arg_revert_1"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPost());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_blogId, arg_postId,
+              fetchBody: arg_fetchBody,
+              fetchImages: arg_fetchImages,
+              maxComments: arg_maxComments,
+              publish_1: arg_publish_1,
+              revert_1: arg_revert_1,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Post response) {
+        checkPost(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UsersResourceApi res = new api.BloggerApi(mock).users;
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("blogger/v3/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("users/"));
+        pathOffset += 6;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUser());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.User response) {
+        checkUser(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/books/v1_test.dart b/generated/googleapis/test/books/v1_test.dart
new file mode 100644
index 0000000..ef692e1
--- /dev/null
+++ b/generated/googleapis/test/books/v1_test.dart
@@ -0,0 +1,7724 @@
+library googleapis.books.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/books/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAnnotationClientVersionRanges = 0;
+buildAnnotationClientVersionRanges() {
+  var o = new api.AnnotationClientVersionRanges();
+  buildCounterAnnotationClientVersionRanges++;
+  if (buildCounterAnnotationClientVersionRanges < 3) {
+    o.cfiRange = buildBooksAnnotationsRange();
+    o.contentVersion = "foo";
+    o.gbImageRange = buildBooksAnnotationsRange();
+    o.gbTextRange = buildBooksAnnotationsRange();
+    o.imageCfiRange = buildBooksAnnotationsRange();
+  }
+  buildCounterAnnotationClientVersionRanges--;
+  return o;
+}
+
+checkAnnotationClientVersionRanges(api.AnnotationClientVersionRanges o) {
+  buildCounterAnnotationClientVersionRanges++;
+  if (buildCounterAnnotationClientVersionRanges < 3) {
+    checkBooksAnnotationsRange(o.cfiRange);
+    unittest.expect(o.contentVersion, unittest.equals('foo'));
+    checkBooksAnnotationsRange(o.gbImageRange);
+    checkBooksAnnotationsRange(o.gbTextRange);
+    checkBooksAnnotationsRange(o.imageCfiRange);
+  }
+  buildCounterAnnotationClientVersionRanges--;
+}
+
+core.int buildCounterAnnotationCurrentVersionRanges = 0;
+buildAnnotationCurrentVersionRanges() {
+  var o = new api.AnnotationCurrentVersionRanges();
+  buildCounterAnnotationCurrentVersionRanges++;
+  if (buildCounterAnnotationCurrentVersionRanges < 3) {
+    o.cfiRange = buildBooksAnnotationsRange();
+    o.contentVersion = "foo";
+    o.gbImageRange = buildBooksAnnotationsRange();
+    o.gbTextRange = buildBooksAnnotationsRange();
+    o.imageCfiRange = buildBooksAnnotationsRange();
+  }
+  buildCounterAnnotationCurrentVersionRanges--;
+  return o;
+}
+
+checkAnnotationCurrentVersionRanges(api.AnnotationCurrentVersionRanges o) {
+  buildCounterAnnotationCurrentVersionRanges++;
+  if (buildCounterAnnotationCurrentVersionRanges < 3) {
+    checkBooksAnnotationsRange(o.cfiRange);
+    unittest.expect(o.contentVersion, unittest.equals('foo'));
+    checkBooksAnnotationsRange(o.gbImageRange);
+    checkBooksAnnotationsRange(o.gbTextRange);
+    checkBooksAnnotationsRange(o.imageCfiRange);
+  }
+  buildCounterAnnotationCurrentVersionRanges--;
+}
+
+core.int buildCounterAnnotationLayerSummary = 0;
+buildAnnotationLayerSummary() {
+  var o = new api.AnnotationLayerSummary();
+  buildCounterAnnotationLayerSummary++;
+  if (buildCounterAnnotationLayerSummary < 3) {
+    o.allowedCharacterCount = 42;
+    o.limitType = "foo";
+    o.remainingCharacterCount = 42;
+  }
+  buildCounterAnnotationLayerSummary--;
+  return o;
+}
+
+checkAnnotationLayerSummary(api.AnnotationLayerSummary o) {
+  buildCounterAnnotationLayerSummary++;
+  if (buildCounterAnnotationLayerSummary < 3) {
+    unittest.expect(o.allowedCharacterCount, unittest.equals(42));
+    unittest.expect(o.limitType, unittest.equals('foo'));
+    unittest.expect(o.remainingCharacterCount, unittest.equals(42));
+  }
+  buildCounterAnnotationLayerSummary--;
+}
+
+buildUnnamed933() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed933(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAnnotation = 0;
+buildAnnotation() {
+  var o = new api.Annotation();
+  buildCounterAnnotation++;
+  if (buildCounterAnnotation < 3) {
+    o.afterSelectedText = "foo";
+    o.beforeSelectedText = "foo";
+    o.clientVersionRanges = buildAnnotationClientVersionRanges();
+    o.created = core.DateTime.parse("2002-02-27T14:01:02");
+    o.currentVersionRanges = buildAnnotationCurrentVersionRanges();
+    o.data = "foo";
+    o.deleted = true;
+    o.highlightStyle = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.layerId = "foo";
+    o.layerSummary = buildAnnotationLayerSummary();
+    o.pageIds = buildUnnamed933();
+    o.selectedText = "foo";
+    o.selfLink = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.volumeId = "foo";
+  }
+  buildCounterAnnotation--;
+  return o;
+}
+
+checkAnnotation(api.Annotation o) {
+  buildCounterAnnotation++;
+  if (buildCounterAnnotation < 3) {
+    unittest.expect(o.afterSelectedText, unittest.equals('foo'));
+    unittest.expect(o.beforeSelectedText, unittest.equals('foo'));
+    checkAnnotationClientVersionRanges(o.clientVersionRanges);
+    unittest.expect(
+        o.created, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    checkAnnotationCurrentVersionRanges(o.currentVersionRanges);
+    unittest.expect(o.data, unittest.equals('foo'));
+    unittest.expect(o.deleted, unittest.isTrue);
+    unittest.expect(o.highlightStyle, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.layerId, unittest.equals('foo'));
+    checkAnnotationLayerSummary(o.layerSummary);
+    checkUnnamed933(o.pageIds);
+    unittest.expect(o.selectedText, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.volumeId, unittest.equals('foo'));
+  }
+  buildCounterAnnotation--;
+}
+
+core.int buildCounterAnnotationdata = 0;
+buildAnnotationdata() {
+  var o = new api.Annotationdata();
+  buildCounterAnnotationdata++;
+  if (buildCounterAnnotationdata < 3) {
+    o.annotationType = "foo";
+    o.data = {
+      'list': [1, 2, 3],
+      'bool': true,
+      'string': 'foo'
+    };
+    o.encodedData = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.layerId = "foo";
+    o.selfLink = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.volumeId = "foo";
+  }
+  buildCounterAnnotationdata--;
+  return o;
+}
+
+checkAnnotationdata(api.Annotationdata o) {
+  buildCounterAnnotationdata++;
+  if (buildCounterAnnotationdata < 3) {
+    unittest.expect(o.annotationType, unittest.equals('foo'));
+    var casted1 = (o.data) as core.Map;
+    unittest.expect(casted1, unittest.hasLength(3));
+    unittest.expect(casted1["list"], unittest.equals([1, 2, 3]));
+    unittest.expect(casted1["bool"], unittest.equals(true));
+    unittest.expect(casted1["string"], unittest.equals('foo'));
+    unittest.expect(o.encodedData, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.layerId, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.volumeId, unittest.equals('foo'));
+  }
+  buildCounterAnnotationdata--;
+}
+
+buildUnnamed934() {
+  var o = new core.List<api.Annotation>();
+  o.add(buildAnnotation());
+  o.add(buildAnnotation());
+  return o;
+}
+
+checkUnnamed934(core.List<api.Annotation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAnnotation(o[0]);
+  checkAnnotation(o[1]);
+}
+
+core.int buildCounterAnnotations = 0;
+buildAnnotations() {
+  var o = new api.Annotations();
+  buildCounterAnnotations++;
+  if (buildCounterAnnotations < 3) {
+    o.items = buildUnnamed934();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.totalItems = 42;
+  }
+  buildCounterAnnotations--;
+  return o;
+}
+
+checkAnnotations(api.Annotations o) {
+  buildCounterAnnotations++;
+  if (buildCounterAnnotations < 3) {
+    checkUnnamed934(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterAnnotations--;
+}
+
+core.int buildCounterAnnotationsSummaryLayers = 0;
+buildAnnotationsSummaryLayers() {
+  var o = new api.AnnotationsSummaryLayers();
+  buildCounterAnnotationsSummaryLayers++;
+  if (buildCounterAnnotationsSummaryLayers < 3) {
+    o.allowedCharacterCount = 42;
+    o.layerId = "foo";
+    o.limitType = "foo";
+    o.remainingCharacterCount = 42;
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+  }
+  buildCounterAnnotationsSummaryLayers--;
+  return o;
+}
+
+checkAnnotationsSummaryLayers(api.AnnotationsSummaryLayers o) {
+  buildCounterAnnotationsSummaryLayers++;
+  if (buildCounterAnnotationsSummaryLayers < 3) {
+    unittest.expect(o.allowedCharacterCount, unittest.equals(42));
+    unittest.expect(o.layerId, unittest.equals('foo'));
+    unittest.expect(o.limitType, unittest.equals('foo'));
+    unittest.expect(o.remainingCharacterCount, unittest.equals(42));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+  }
+  buildCounterAnnotationsSummaryLayers--;
+}
+
+buildUnnamed935() {
+  var o = new core.List<api.AnnotationsSummaryLayers>();
+  o.add(buildAnnotationsSummaryLayers());
+  o.add(buildAnnotationsSummaryLayers());
+  return o;
+}
+
+checkUnnamed935(core.List<api.AnnotationsSummaryLayers> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAnnotationsSummaryLayers(o[0]);
+  checkAnnotationsSummaryLayers(o[1]);
+}
+
+core.int buildCounterAnnotationsSummary = 0;
+buildAnnotationsSummary() {
+  var o = new api.AnnotationsSummary();
+  buildCounterAnnotationsSummary++;
+  if (buildCounterAnnotationsSummary < 3) {
+    o.kind = "foo";
+    o.layers = buildUnnamed935();
+  }
+  buildCounterAnnotationsSummary--;
+  return o;
+}
+
+checkAnnotationsSummary(api.AnnotationsSummary o) {
+  buildCounterAnnotationsSummary++;
+  if (buildCounterAnnotationsSummary < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed935(o.layers);
+  }
+  buildCounterAnnotationsSummary--;
+}
+
+buildUnnamed936() {
+  var o = new core.List<api.Annotationdata>();
+  o.add(buildAnnotationdata());
+  o.add(buildAnnotationdata());
+  return o;
+}
+
+checkUnnamed936(core.List<api.Annotationdata> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAnnotationdata(o[0]);
+  checkAnnotationdata(o[1]);
+}
+
+core.int buildCounterAnnotationsdata = 0;
+buildAnnotationsdata() {
+  var o = new api.Annotationsdata();
+  buildCounterAnnotationsdata++;
+  if (buildCounterAnnotationsdata < 3) {
+    o.items = buildUnnamed936();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.totalItems = 42;
+  }
+  buildCounterAnnotationsdata--;
+  return o;
+}
+
+checkAnnotationsdata(api.Annotationsdata o) {
+  buildCounterAnnotationsdata++;
+  if (buildCounterAnnotationsdata < 3) {
+    checkUnnamed936(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterAnnotationsdata--;
+}
+
+core.int buildCounterBooksAnnotationsRange = 0;
+buildBooksAnnotationsRange() {
+  var o = new api.BooksAnnotationsRange();
+  buildCounterBooksAnnotationsRange++;
+  if (buildCounterBooksAnnotationsRange < 3) {
+    o.endOffset = "foo";
+    o.endPosition = "foo";
+    o.startOffset = "foo";
+    o.startPosition = "foo";
+  }
+  buildCounterBooksAnnotationsRange--;
+  return o;
+}
+
+checkBooksAnnotationsRange(api.BooksAnnotationsRange o) {
+  buildCounterBooksAnnotationsRange++;
+  if (buildCounterBooksAnnotationsRange < 3) {
+    unittest.expect(o.endOffset, unittest.equals('foo'));
+    unittest.expect(o.endPosition, unittest.equals('foo'));
+    unittest.expect(o.startOffset, unittest.equals('foo'));
+    unittest.expect(o.startPosition, unittest.equals('foo'));
+  }
+  buildCounterBooksAnnotationsRange--;
+}
+
+core.int buildCounterBooksCloudloadingResource = 0;
+buildBooksCloudloadingResource() {
+  var o = new api.BooksCloudloadingResource();
+  buildCounterBooksCloudloadingResource++;
+  if (buildCounterBooksCloudloadingResource < 3) {
+    o.author = "foo";
+    o.processingState = "foo";
+    o.title = "foo";
+    o.volumeId = "foo";
+  }
+  buildCounterBooksCloudloadingResource--;
+  return o;
+}
+
+checkBooksCloudloadingResource(api.BooksCloudloadingResource o) {
+  buildCounterBooksCloudloadingResource++;
+  if (buildCounterBooksCloudloadingResource < 3) {
+    unittest.expect(o.author, unittest.equals('foo'));
+    unittest.expect(o.processingState, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.volumeId, unittest.equals('foo'));
+  }
+  buildCounterBooksCloudloadingResource--;
+}
+
+core.int buildCounterBooksVolumesRecommendedRateResponse = 0;
+buildBooksVolumesRecommendedRateResponse() {
+  var o = new api.BooksVolumesRecommendedRateResponse();
+  buildCounterBooksVolumesRecommendedRateResponse++;
+  if (buildCounterBooksVolumesRecommendedRateResponse < 3) {
+    o.consistencyToken = "foo";
+  }
+  buildCounterBooksVolumesRecommendedRateResponse--;
+  return o;
+}
+
+checkBooksVolumesRecommendedRateResponse(
+    api.BooksVolumesRecommendedRateResponse o) {
+  buildCounterBooksVolumesRecommendedRateResponse++;
+  if (buildCounterBooksVolumesRecommendedRateResponse < 3) {
+    unittest.expect(o.consistencyToken, unittest.equals('foo'));
+  }
+  buildCounterBooksVolumesRecommendedRateResponse--;
+}
+
+core.int buildCounterBookshelf = 0;
+buildBookshelf() {
+  var o = new api.Bookshelf();
+  buildCounterBookshelf++;
+  if (buildCounterBookshelf < 3) {
+    o.access = "foo";
+    o.created = core.DateTime.parse("2002-02-27T14:01:02");
+    o.description = "foo";
+    o.id = 42;
+    o.kind = "foo";
+    o.selfLink = "foo";
+    o.title = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.volumeCount = 42;
+    o.volumesLastUpdated = core.DateTime.parse("2002-02-27T14:01:02");
+  }
+  buildCounterBookshelf--;
+  return o;
+}
+
+checkBookshelf(api.Bookshelf o) {
+  buildCounterBookshelf++;
+  if (buildCounterBookshelf < 3) {
+    unittest.expect(o.access, unittest.equals('foo'));
+    unittest.expect(
+        o.created, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals(42));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.volumeCount, unittest.equals(42));
+    unittest.expect(o.volumesLastUpdated,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+  }
+  buildCounterBookshelf--;
+}
+
+buildUnnamed937() {
+  var o = new core.List<api.Bookshelf>();
+  o.add(buildBookshelf());
+  o.add(buildBookshelf());
+  return o;
+}
+
+checkUnnamed937(core.List<api.Bookshelf> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBookshelf(o[0]);
+  checkBookshelf(o[1]);
+}
+
+core.int buildCounterBookshelves = 0;
+buildBookshelves() {
+  var o = new api.Bookshelves();
+  buildCounterBookshelves++;
+  if (buildCounterBookshelves < 3) {
+    o.items = buildUnnamed937();
+    o.kind = "foo";
+  }
+  buildCounterBookshelves--;
+  return o;
+}
+
+checkBookshelves(api.Bookshelves o) {
+  buildCounterBookshelves++;
+  if (buildCounterBookshelves < 3) {
+    checkUnnamed937(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterBookshelves--;
+}
+
+core.int buildCounterCategoryItems = 0;
+buildCategoryItems() {
+  var o = new api.CategoryItems();
+  buildCounterCategoryItems++;
+  if (buildCounterCategoryItems < 3) {
+    o.badgeUrl = "foo";
+    o.categoryId = "foo";
+    o.name = "foo";
+  }
+  buildCounterCategoryItems--;
+  return o;
+}
+
+checkCategoryItems(api.CategoryItems o) {
+  buildCounterCategoryItems++;
+  if (buildCounterCategoryItems < 3) {
+    unittest.expect(o.badgeUrl, unittest.equals('foo'));
+    unittest.expect(o.categoryId, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterCategoryItems--;
+}
+
+buildUnnamed938() {
+  var o = new core.List<api.CategoryItems>();
+  o.add(buildCategoryItems());
+  o.add(buildCategoryItems());
+  return o;
+}
+
+checkUnnamed938(core.List<api.CategoryItems> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCategoryItems(o[0]);
+  checkCategoryItems(o[1]);
+}
+
+core.int buildCounterCategory = 0;
+buildCategory() {
+  var o = new api.Category();
+  buildCounterCategory++;
+  if (buildCounterCategory < 3) {
+    o.items = buildUnnamed938();
+    o.kind = "foo";
+  }
+  buildCounterCategory--;
+  return o;
+}
+
+checkCategory(api.Category o) {
+  buildCounterCategory++;
+  if (buildCounterCategory < 3) {
+    checkUnnamed938(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterCategory--;
+}
+
+core.int buildCounterConcurrentAccessRestriction = 0;
+buildConcurrentAccessRestriction() {
+  var o = new api.ConcurrentAccessRestriction();
+  buildCounterConcurrentAccessRestriction++;
+  if (buildCounterConcurrentAccessRestriction < 3) {
+    o.deviceAllowed = true;
+    o.kind = "foo";
+    o.maxConcurrentDevices = 42;
+    o.message = "foo";
+    o.nonce = "foo";
+    o.reasonCode = "foo";
+    o.restricted = true;
+    o.signature = "foo";
+    o.source = "foo";
+    o.timeWindowSeconds = 42;
+    o.volumeId = "foo";
+  }
+  buildCounterConcurrentAccessRestriction--;
+  return o;
+}
+
+checkConcurrentAccessRestriction(api.ConcurrentAccessRestriction o) {
+  buildCounterConcurrentAccessRestriction++;
+  if (buildCounterConcurrentAccessRestriction < 3) {
+    unittest.expect(o.deviceAllowed, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.maxConcurrentDevices, unittest.equals(42));
+    unittest.expect(o.message, unittest.equals('foo'));
+    unittest.expect(o.nonce, unittest.equals('foo'));
+    unittest.expect(o.reasonCode, unittest.equals('foo'));
+    unittest.expect(o.restricted, unittest.isTrue);
+    unittest.expect(o.signature, unittest.equals('foo'));
+    unittest.expect(o.source, unittest.equals('foo'));
+    unittest.expect(o.timeWindowSeconds, unittest.equals(42));
+    unittest.expect(o.volumeId, unittest.equals('foo'));
+  }
+  buildCounterConcurrentAccessRestriction--;
+}
+
+core.int buildCounterDictlayerdataCommon = 0;
+buildDictlayerdataCommon() {
+  var o = new api.DictlayerdataCommon();
+  buildCounterDictlayerdataCommon++;
+  if (buildCounterDictlayerdataCommon < 3) {
+    o.title = "foo";
+  }
+  buildCounterDictlayerdataCommon--;
+  return o;
+}
+
+checkDictlayerdataCommon(api.DictlayerdataCommon o) {
+  buildCounterDictlayerdataCommon++;
+  if (buildCounterDictlayerdataCommon < 3) {
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterDictlayerdataCommon--;
+}
+
+core.int buildCounterDictlayerdataDictSource = 0;
+buildDictlayerdataDictSource() {
+  var o = new api.DictlayerdataDictSource();
+  buildCounterDictlayerdataDictSource++;
+  if (buildCounterDictlayerdataDictSource < 3) {
+    o.attribution = "foo";
+    o.url = "foo";
+  }
+  buildCounterDictlayerdataDictSource--;
+  return o;
+}
+
+checkDictlayerdataDictSource(api.DictlayerdataDictSource o) {
+  buildCounterDictlayerdataDictSource++;
+  if (buildCounterDictlayerdataDictSource < 3) {
+    unittest.expect(o.attribution, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterDictlayerdataDictSource--;
+}
+
+core.int buildCounterDictlayerdataDictWordsDerivativesSource = 0;
+buildDictlayerdataDictWordsDerivativesSource() {
+  var o = new api.DictlayerdataDictWordsDerivativesSource();
+  buildCounterDictlayerdataDictWordsDerivativesSource++;
+  if (buildCounterDictlayerdataDictWordsDerivativesSource < 3) {
+    o.attribution = "foo";
+    o.url = "foo";
+  }
+  buildCounterDictlayerdataDictWordsDerivativesSource--;
+  return o;
+}
+
+checkDictlayerdataDictWordsDerivativesSource(
+    api.DictlayerdataDictWordsDerivativesSource o) {
+  buildCounterDictlayerdataDictWordsDerivativesSource++;
+  if (buildCounterDictlayerdataDictWordsDerivativesSource < 3) {
+    unittest.expect(o.attribution, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterDictlayerdataDictWordsDerivativesSource--;
+}
+
+core.int buildCounterDictlayerdataDictWordsDerivatives = 0;
+buildDictlayerdataDictWordsDerivatives() {
+  var o = new api.DictlayerdataDictWordsDerivatives();
+  buildCounterDictlayerdataDictWordsDerivatives++;
+  if (buildCounterDictlayerdataDictWordsDerivatives < 3) {
+    o.source = buildDictlayerdataDictWordsDerivativesSource();
+    o.text = "foo";
+  }
+  buildCounterDictlayerdataDictWordsDerivatives--;
+  return o;
+}
+
+checkDictlayerdataDictWordsDerivatives(
+    api.DictlayerdataDictWordsDerivatives o) {
+  buildCounterDictlayerdataDictWordsDerivatives++;
+  if (buildCounterDictlayerdataDictWordsDerivatives < 3) {
+    checkDictlayerdataDictWordsDerivativesSource(o.source);
+    unittest.expect(o.text, unittest.equals('foo'));
+  }
+  buildCounterDictlayerdataDictWordsDerivatives--;
+}
+
+buildUnnamed939() {
+  var o = new core.List<api.DictlayerdataDictWordsDerivatives>();
+  o.add(buildDictlayerdataDictWordsDerivatives());
+  o.add(buildDictlayerdataDictWordsDerivatives());
+  return o;
+}
+
+checkUnnamed939(core.List<api.DictlayerdataDictWordsDerivatives> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDictlayerdataDictWordsDerivatives(o[0]);
+  checkDictlayerdataDictWordsDerivatives(o[1]);
+}
+
+core.int buildCounterDictlayerdataDictWordsExamplesSource = 0;
+buildDictlayerdataDictWordsExamplesSource() {
+  var o = new api.DictlayerdataDictWordsExamplesSource();
+  buildCounterDictlayerdataDictWordsExamplesSource++;
+  if (buildCounterDictlayerdataDictWordsExamplesSource < 3) {
+    o.attribution = "foo";
+    o.url = "foo";
+  }
+  buildCounterDictlayerdataDictWordsExamplesSource--;
+  return o;
+}
+
+checkDictlayerdataDictWordsExamplesSource(
+    api.DictlayerdataDictWordsExamplesSource o) {
+  buildCounterDictlayerdataDictWordsExamplesSource++;
+  if (buildCounterDictlayerdataDictWordsExamplesSource < 3) {
+    unittest.expect(o.attribution, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterDictlayerdataDictWordsExamplesSource--;
+}
+
+core.int buildCounterDictlayerdataDictWordsExamples = 0;
+buildDictlayerdataDictWordsExamples() {
+  var o = new api.DictlayerdataDictWordsExamples();
+  buildCounterDictlayerdataDictWordsExamples++;
+  if (buildCounterDictlayerdataDictWordsExamples < 3) {
+    o.source = buildDictlayerdataDictWordsExamplesSource();
+    o.text = "foo";
+  }
+  buildCounterDictlayerdataDictWordsExamples--;
+  return o;
+}
+
+checkDictlayerdataDictWordsExamples(api.DictlayerdataDictWordsExamples o) {
+  buildCounterDictlayerdataDictWordsExamples++;
+  if (buildCounterDictlayerdataDictWordsExamples < 3) {
+    checkDictlayerdataDictWordsExamplesSource(o.source);
+    unittest.expect(o.text, unittest.equals('foo'));
+  }
+  buildCounterDictlayerdataDictWordsExamples--;
+}
+
+buildUnnamed940() {
+  var o = new core.List<api.DictlayerdataDictWordsExamples>();
+  o.add(buildDictlayerdataDictWordsExamples());
+  o.add(buildDictlayerdataDictWordsExamples());
+  return o;
+}
+
+checkUnnamed940(core.List<api.DictlayerdataDictWordsExamples> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDictlayerdataDictWordsExamples(o[0]);
+  checkDictlayerdataDictWordsExamples(o[1]);
+}
+
+core.int buildCounterDictlayerdataDictWordsSensesConjugations = 0;
+buildDictlayerdataDictWordsSensesConjugations() {
+  var o = new api.DictlayerdataDictWordsSensesConjugations();
+  buildCounterDictlayerdataDictWordsSensesConjugations++;
+  if (buildCounterDictlayerdataDictWordsSensesConjugations < 3) {
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterDictlayerdataDictWordsSensesConjugations--;
+  return o;
+}
+
+checkDictlayerdataDictWordsSensesConjugations(
+    api.DictlayerdataDictWordsSensesConjugations o) {
+  buildCounterDictlayerdataDictWordsSensesConjugations++;
+  if (buildCounterDictlayerdataDictWordsSensesConjugations < 3) {
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterDictlayerdataDictWordsSensesConjugations--;
+}
+
+buildUnnamed941() {
+  var o = new core.List<api.DictlayerdataDictWordsSensesConjugations>();
+  o.add(buildDictlayerdataDictWordsSensesConjugations());
+  o.add(buildDictlayerdataDictWordsSensesConjugations());
+  return o;
+}
+
+checkUnnamed941(core.List<api.DictlayerdataDictWordsSensesConjugations> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDictlayerdataDictWordsSensesConjugations(o[0]);
+  checkDictlayerdataDictWordsSensesConjugations(o[1]);
+}
+
+core.int buildCounterDictlayerdataDictWordsSensesDefinitionsExamplesSource = 0;
+buildDictlayerdataDictWordsSensesDefinitionsExamplesSource() {
+  var o = new api.DictlayerdataDictWordsSensesDefinitionsExamplesSource();
+  buildCounterDictlayerdataDictWordsSensesDefinitionsExamplesSource++;
+  if (buildCounterDictlayerdataDictWordsSensesDefinitionsExamplesSource < 3) {
+    o.attribution = "foo";
+    o.url = "foo";
+  }
+  buildCounterDictlayerdataDictWordsSensesDefinitionsExamplesSource--;
+  return o;
+}
+
+checkDictlayerdataDictWordsSensesDefinitionsExamplesSource(
+    api.DictlayerdataDictWordsSensesDefinitionsExamplesSource o) {
+  buildCounterDictlayerdataDictWordsSensesDefinitionsExamplesSource++;
+  if (buildCounterDictlayerdataDictWordsSensesDefinitionsExamplesSource < 3) {
+    unittest.expect(o.attribution, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterDictlayerdataDictWordsSensesDefinitionsExamplesSource--;
+}
+
+core.int buildCounterDictlayerdataDictWordsSensesDefinitionsExamples = 0;
+buildDictlayerdataDictWordsSensesDefinitionsExamples() {
+  var o = new api.DictlayerdataDictWordsSensesDefinitionsExamples();
+  buildCounterDictlayerdataDictWordsSensesDefinitionsExamples++;
+  if (buildCounterDictlayerdataDictWordsSensesDefinitionsExamples < 3) {
+    o.source = buildDictlayerdataDictWordsSensesDefinitionsExamplesSource();
+    o.text = "foo";
+  }
+  buildCounterDictlayerdataDictWordsSensesDefinitionsExamples--;
+  return o;
+}
+
+checkDictlayerdataDictWordsSensesDefinitionsExamples(
+    api.DictlayerdataDictWordsSensesDefinitionsExamples o) {
+  buildCounterDictlayerdataDictWordsSensesDefinitionsExamples++;
+  if (buildCounterDictlayerdataDictWordsSensesDefinitionsExamples < 3) {
+    checkDictlayerdataDictWordsSensesDefinitionsExamplesSource(o.source);
+    unittest.expect(o.text, unittest.equals('foo'));
+  }
+  buildCounterDictlayerdataDictWordsSensesDefinitionsExamples--;
+}
+
+buildUnnamed942() {
+  var o = new core.List<api.DictlayerdataDictWordsSensesDefinitionsExamples>();
+  o.add(buildDictlayerdataDictWordsSensesDefinitionsExamples());
+  o.add(buildDictlayerdataDictWordsSensesDefinitionsExamples());
+  return o;
+}
+
+checkUnnamed942(
+    core.List<api.DictlayerdataDictWordsSensesDefinitionsExamples> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDictlayerdataDictWordsSensesDefinitionsExamples(o[0]);
+  checkDictlayerdataDictWordsSensesDefinitionsExamples(o[1]);
+}
+
+core.int buildCounterDictlayerdataDictWordsSensesDefinitions = 0;
+buildDictlayerdataDictWordsSensesDefinitions() {
+  var o = new api.DictlayerdataDictWordsSensesDefinitions();
+  buildCounterDictlayerdataDictWordsSensesDefinitions++;
+  if (buildCounterDictlayerdataDictWordsSensesDefinitions < 3) {
+    o.definition = "foo";
+    o.examples = buildUnnamed942();
+  }
+  buildCounterDictlayerdataDictWordsSensesDefinitions--;
+  return o;
+}
+
+checkDictlayerdataDictWordsSensesDefinitions(
+    api.DictlayerdataDictWordsSensesDefinitions o) {
+  buildCounterDictlayerdataDictWordsSensesDefinitions++;
+  if (buildCounterDictlayerdataDictWordsSensesDefinitions < 3) {
+    unittest.expect(o.definition, unittest.equals('foo'));
+    checkUnnamed942(o.examples);
+  }
+  buildCounterDictlayerdataDictWordsSensesDefinitions--;
+}
+
+buildUnnamed943() {
+  var o = new core.List<api.DictlayerdataDictWordsSensesDefinitions>();
+  o.add(buildDictlayerdataDictWordsSensesDefinitions());
+  o.add(buildDictlayerdataDictWordsSensesDefinitions());
+  return o;
+}
+
+checkUnnamed943(core.List<api.DictlayerdataDictWordsSensesDefinitions> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDictlayerdataDictWordsSensesDefinitions(o[0]);
+  checkDictlayerdataDictWordsSensesDefinitions(o[1]);
+}
+
+core.int buildCounterDictlayerdataDictWordsSensesSource = 0;
+buildDictlayerdataDictWordsSensesSource() {
+  var o = new api.DictlayerdataDictWordsSensesSource();
+  buildCounterDictlayerdataDictWordsSensesSource++;
+  if (buildCounterDictlayerdataDictWordsSensesSource < 3) {
+    o.attribution = "foo";
+    o.url = "foo";
+  }
+  buildCounterDictlayerdataDictWordsSensesSource--;
+  return o;
+}
+
+checkDictlayerdataDictWordsSensesSource(
+    api.DictlayerdataDictWordsSensesSource o) {
+  buildCounterDictlayerdataDictWordsSensesSource++;
+  if (buildCounterDictlayerdataDictWordsSensesSource < 3) {
+    unittest.expect(o.attribution, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterDictlayerdataDictWordsSensesSource--;
+}
+
+core.int buildCounterDictlayerdataDictWordsSensesSynonymsSource = 0;
+buildDictlayerdataDictWordsSensesSynonymsSource() {
+  var o = new api.DictlayerdataDictWordsSensesSynonymsSource();
+  buildCounterDictlayerdataDictWordsSensesSynonymsSource++;
+  if (buildCounterDictlayerdataDictWordsSensesSynonymsSource < 3) {
+    o.attribution = "foo";
+    o.url = "foo";
+  }
+  buildCounterDictlayerdataDictWordsSensesSynonymsSource--;
+  return o;
+}
+
+checkDictlayerdataDictWordsSensesSynonymsSource(
+    api.DictlayerdataDictWordsSensesSynonymsSource o) {
+  buildCounterDictlayerdataDictWordsSensesSynonymsSource++;
+  if (buildCounterDictlayerdataDictWordsSensesSynonymsSource < 3) {
+    unittest.expect(o.attribution, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterDictlayerdataDictWordsSensesSynonymsSource--;
+}
+
+core.int buildCounterDictlayerdataDictWordsSensesSynonyms = 0;
+buildDictlayerdataDictWordsSensesSynonyms() {
+  var o = new api.DictlayerdataDictWordsSensesSynonyms();
+  buildCounterDictlayerdataDictWordsSensesSynonyms++;
+  if (buildCounterDictlayerdataDictWordsSensesSynonyms < 3) {
+    o.source = buildDictlayerdataDictWordsSensesSynonymsSource();
+    o.text = "foo";
+  }
+  buildCounterDictlayerdataDictWordsSensesSynonyms--;
+  return o;
+}
+
+checkDictlayerdataDictWordsSensesSynonyms(
+    api.DictlayerdataDictWordsSensesSynonyms o) {
+  buildCounterDictlayerdataDictWordsSensesSynonyms++;
+  if (buildCounterDictlayerdataDictWordsSensesSynonyms < 3) {
+    checkDictlayerdataDictWordsSensesSynonymsSource(o.source);
+    unittest.expect(o.text, unittest.equals('foo'));
+  }
+  buildCounterDictlayerdataDictWordsSensesSynonyms--;
+}
+
+buildUnnamed944() {
+  var o = new core.List<api.DictlayerdataDictWordsSensesSynonyms>();
+  o.add(buildDictlayerdataDictWordsSensesSynonyms());
+  o.add(buildDictlayerdataDictWordsSensesSynonyms());
+  return o;
+}
+
+checkUnnamed944(core.List<api.DictlayerdataDictWordsSensesSynonyms> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDictlayerdataDictWordsSensesSynonyms(o[0]);
+  checkDictlayerdataDictWordsSensesSynonyms(o[1]);
+}
+
+core.int buildCounterDictlayerdataDictWordsSenses = 0;
+buildDictlayerdataDictWordsSenses() {
+  var o = new api.DictlayerdataDictWordsSenses();
+  buildCounterDictlayerdataDictWordsSenses++;
+  if (buildCounterDictlayerdataDictWordsSenses < 3) {
+    o.conjugations = buildUnnamed941();
+    o.definitions = buildUnnamed943();
+    o.partOfSpeech = "foo";
+    o.pronunciation = "foo";
+    o.pronunciationUrl = "foo";
+    o.source = buildDictlayerdataDictWordsSensesSource();
+    o.syllabification = "foo";
+    o.synonyms = buildUnnamed944();
+  }
+  buildCounterDictlayerdataDictWordsSenses--;
+  return o;
+}
+
+checkDictlayerdataDictWordsSenses(api.DictlayerdataDictWordsSenses o) {
+  buildCounterDictlayerdataDictWordsSenses++;
+  if (buildCounterDictlayerdataDictWordsSenses < 3) {
+    checkUnnamed941(o.conjugations);
+    checkUnnamed943(o.definitions);
+    unittest.expect(o.partOfSpeech, unittest.equals('foo'));
+    unittest.expect(o.pronunciation, unittest.equals('foo'));
+    unittest.expect(o.pronunciationUrl, unittest.equals('foo'));
+    checkDictlayerdataDictWordsSensesSource(o.source);
+    unittest.expect(o.syllabification, unittest.equals('foo'));
+    checkUnnamed944(o.synonyms);
+  }
+  buildCounterDictlayerdataDictWordsSenses--;
+}
+
+buildUnnamed945() {
+  var o = new core.List<api.DictlayerdataDictWordsSenses>();
+  o.add(buildDictlayerdataDictWordsSenses());
+  o.add(buildDictlayerdataDictWordsSenses());
+  return o;
+}
+
+checkUnnamed945(core.List<api.DictlayerdataDictWordsSenses> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDictlayerdataDictWordsSenses(o[0]);
+  checkDictlayerdataDictWordsSenses(o[1]);
+}
+
+core.int buildCounterDictlayerdataDictWordsSource = 0;
+buildDictlayerdataDictWordsSource() {
+  var o = new api.DictlayerdataDictWordsSource();
+  buildCounterDictlayerdataDictWordsSource++;
+  if (buildCounterDictlayerdataDictWordsSource < 3) {
+    o.attribution = "foo";
+    o.url = "foo";
+  }
+  buildCounterDictlayerdataDictWordsSource--;
+  return o;
+}
+
+checkDictlayerdataDictWordsSource(api.DictlayerdataDictWordsSource o) {
+  buildCounterDictlayerdataDictWordsSource++;
+  if (buildCounterDictlayerdataDictWordsSource < 3) {
+    unittest.expect(o.attribution, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterDictlayerdataDictWordsSource--;
+}
+
+core.int buildCounterDictlayerdataDictWords = 0;
+buildDictlayerdataDictWords() {
+  var o = new api.DictlayerdataDictWords();
+  buildCounterDictlayerdataDictWords++;
+  if (buildCounterDictlayerdataDictWords < 3) {
+    o.derivatives = buildUnnamed939();
+    o.examples = buildUnnamed940();
+    o.senses = buildUnnamed945();
+    o.source = buildDictlayerdataDictWordsSource();
+  }
+  buildCounterDictlayerdataDictWords--;
+  return o;
+}
+
+checkDictlayerdataDictWords(api.DictlayerdataDictWords o) {
+  buildCounterDictlayerdataDictWords++;
+  if (buildCounterDictlayerdataDictWords < 3) {
+    checkUnnamed939(o.derivatives);
+    checkUnnamed940(o.examples);
+    checkUnnamed945(o.senses);
+    checkDictlayerdataDictWordsSource(o.source);
+  }
+  buildCounterDictlayerdataDictWords--;
+}
+
+buildUnnamed946() {
+  var o = new core.List<api.DictlayerdataDictWords>();
+  o.add(buildDictlayerdataDictWords());
+  o.add(buildDictlayerdataDictWords());
+  return o;
+}
+
+checkUnnamed946(core.List<api.DictlayerdataDictWords> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDictlayerdataDictWords(o[0]);
+  checkDictlayerdataDictWords(o[1]);
+}
+
+core.int buildCounterDictlayerdataDict = 0;
+buildDictlayerdataDict() {
+  var o = new api.DictlayerdataDict();
+  buildCounterDictlayerdataDict++;
+  if (buildCounterDictlayerdataDict < 3) {
+    o.source = buildDictlayerdataDictSource();
+    o.words = buildUnnamed946();
+  }
+  buildCounterDictlayerdataDict--;
+  return o;
+}
+
+checkDictlayerdataDict(api.DictlayerdataDict o) {
+  buildCounterDictlayerdataDict++;
+  if (buildCounterDictlayerdataDict < 3) {
+    checkDictlayerdataDictSource(o.source);
+    checkUnnamed946(o.words);
+  }
+  buildCounterDictlayerdataDict--;
+}
+
+core.int buildCounterDictlayerdata = 0;
+buildDictlayerdata() {
+  var o = new api.Dictlayerdata();
+  buildCounterDictlayerdata++;
+  if (buildCounterDictlayerdata < 3) {
+    o.common = buildDictlayerdataCommon();
+    o.dict = buildDictlayerdataDict();
+    o.kind = "foo";
+  }
+  buildCounterDictlayerdata--;
+  return o;
+}
+
+checkDictlayerdata(api.Dictlayerdata o) {
+  buildCounterDictlayerdata++;
+  if (buildCounterDictlayerdata < 3) {
+    checkDictlayerdataCommon(o.common);
+    checkDictlayerdataDict(o.dict);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterDictlayerdata--;
+}
+
+core.int buildCounterDiscoveryclustersClustersBannerWithContentContainer = 0;
+buildDiscoveryclustersClustersBannerWithContentContainer() {
+  var o = new api.DiscoveryclustersClustersBannerWithContentContainer();
+  buildCounterDiscoveryclustersClustersBannerWithContentContainer++;
+  if (buildCounterDiscoveryclustersClustersBannerWithContentContainer < 3) {
+    o.fillColorArgb = "foo";
+    o.imageUrl = "foo";
+    o.maskColorArgb = "foo";
+    o.moreButtonText = "foo";
+    o.moreButtonUrl = "foo";
+    o.textColorArgb = "foo";
+  }
+  buildCounterDiscoveryclustersClustersBannerWithContentContainer--;
+  return o;
+}
+
+checkDiscoveryclustersClustersBannerWithContentContainer(
+    api.DiscoveryclustersClustersBannerWithContentContainer o) {
+  buildCounterDiscoveryclustersClustersBannerWithContentContainer++;
+  if (buildCounterDiscoveryclustersClustersBannerWithContentContainer < 3) {
+    unittest.expect(o.fillColorArgb, unittest.equals('foo'));
+    unittest.expect(o.imageUrl, unittest.equals('foo'));
+    unittest.expect(o.maskColorArgb, unittest.equals('foo'));
+    unittest.expect(o.moreButtonText, unittest.equals('foo'));
+    unittest.expect(o.moreButtonUrl, unittest.equals('foo'));
+    unittest.expect(o.textColorArgb, unittest.equals('foo'));
+  }
+  buildCounterDiscoveryclustersClustersBannerWithContentContainer--;
+}
+
+buildUnnamed947() {
+  var o = new core.List<api.Volume>();
+  o.add(buildVolume());
+  o.add(buildVolume());
+  return o;
+}
+
+checkUnnamed947(core.List<api.Volume> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVolume(o[0]);
+  checkVolume(o[1]);
+}
+
+core.int buildCounterDiscoveryclustersClusters = 0;
+buildDiscoveryclustersClusters() {
+  var o = new api.DiscoveryclustersClusters();
+  buildCounterDiscoveryclustersClusters++;
+  if (buildCounterDiscoveryclustersClusters < 3) {
+    o.bannerWithContentContainer =
+        buildDiscoveryclustersClustersBannerWithContentContainer();
+    o.subTitle = "foo";
+    o.title = "foo";
+    o.totalVolumes = 42;
+    o.uid = "foo";
+    o.volumes = buildUnnamed947();
+  }
+  buildCounterDiscoveryclustersClusters--;
+  return o;
+}
+
+checkDiscoveryclustersClusters(api.DiscoveryclustersClusters o) {
+  buildCounterDiscoveryclustersClusters++;
+  if (buildCounterDiscoveryclustersClusters < 3) {
+    checkDiscoveryclustersClustersBannerWithContentContainer(
+        o.bannerWithContentContainer);
+    unittest.expect(o.subTitle, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.totalVolumes, unittest.equals(42));
+    unittest.expect(o.uid, unittest.equals('foo'));
+    checkUnnamed947(o.volumes);
+  }
+  buildCounterDiscoveryclustersClusters--;
+}
+
+buildUnnamed948() {
+  var o = new core.List<api.DiscoveryclustersClusters>();
+  o.add(buildDiscoveryclustersClusters());
+  o.add(buildDiscoveryclustersClusters());
+  return o;
+}
+
+checkUnnamed948(core.List<api.DiscoveryclustersClusters> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDiscoveryclustersClusters(o[0]);
+  checkDiscoveryclustersClusters(o[1]);
+}
+
+core.int buildCounterDiscoveryclusters = 0;
+buildDiscoveryclusters() {
+  var o = new api.Discoveryclusters();
+  buildCounterDiscoveryclusters++;
+  if (buildCounterDiscoveryclusters < 3) {
+    o.clusters = buildUnnamed948();
+    o.kind = "foo";
+    o.totalClusters = 42;
+  }
+  buildCounterDiscoveryclusters--;
+  return o;
+}
+
+checkDiscoveryclusters(api.Discoveryclusters o) {
+  buildCounterDiscoveryclusters++;
+  if (buildCounterDiscoveryclusters < 3) {
+    checkUnnamed948(o.clusters);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.totalClusters, unittest.equals(42));
+  }
+  buildCounterDiscoveryclusters--;
+}
+
+core.int buildCounterDownloadAccessRestriction = 0;
+buildDownloadAccessRestriction() {
+  var o = new api.DownloadAccessRestriction();
+  buildCounterDownloadAccessRestriction++;
+  if (buildCounterDownloadAccessRestriction < 3) {
+    o.deviceAllowed = true;
+    o.downloadsAcquired = 42;
+    o.justAcquired = true;
+    o.kind = "foo";
+    o.maxDownloadDevices = 42;
+    o.message = "foo";
+    o.nonce = "foo";
+    o.reasonCode = "foo";
+    o.restricted = true;
+    o.signature = "foo";
+    o.source = "foo";
+    o.volumeId = "foo";
+  }
+  buildCounterDownloadAccessRestriction--;
+  return o;
+}
+
+checkDownloadAccessRestriction(api.DownloadAccessRestriction o) {
+  buildCounterDownloadAccessRestriction++;
+  if (buildCounterDownloadAccessRestriction < 3) {
+    unittest.expect(o.deviceAllowed, unittest.isTrue);
+    unittest.expect(o.downloadsAcquired, unittest.equals(42));
+    unittest.expect(o.justAcquired, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.maxDownloadDevices, unittest.equals(42));
+    unittest.expect(o.message, unittest.equals('foo'));
+    unittest.expect(o.nonce, unittest.equals('foo'));
+    unittest.expect(o.reasonCode, unittest.equals('foo'));
+    unittest.expect(o.restricted, unittest.isTrue);
+    unittest.expect(o.signature, unittest.equals('foo'));
+    unittest.expect(o.source, unittest.equals('foo'));
+    unittest.expect(o.volumeId, unittest.equals('foo'));
+  }
+  buildCounterDownloadAccessRestriction--;
+}
+
+buildUnnamed949() {
+  var o = new core.List<api.DownloadAccessRestriction>();
+  o.add(buildDownloadAccessRestriction());
+  o.add(buildDownloadAccessRestriction());
+  return o;
+}
+
+checkUnnamed949(core.List<api.DownloadAccessRestriction> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDownloadAccessRestriction(o[0]);
+  checkDownloadAccessRestriction(o[1]);
+}
+
+core.int buildCounterDownloadAccesses = 0;
+buildDownloadAccesses() {
+  var o = new api.DownloadAccesses();
+  buildCounterDownloadAccesses++;
+  if (buildCounterDownloadAccesses < 3) {
+    o.downloadAccessList = buildUnnamed949();
+    o.kind = "foo";
+  }
+  buildCounterDownloadAccesses--;
+  return o;
+}
+
+checkDownloadAccesses(api.DownloadAccesses o) {
+  buildCounterDownloadAccesses++;
+  if (buildCounterDownloadAccesses < 3) {
+    checkUnnamed949(o.downloadAccessList);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterDownloadAccesses--;
+}
+
+core.int buildCounterGeolayerdataCommon = 0;
+buildGeolayerdataCommon() {
+  var o = new api.GeolayerdataCommon();
+  buildCounterGeolayerdataCommon++;
+  if (buildCounterGeolayerdataCommon < 3) {
+    o.lang = "foo";
+    o.previewImageUrl = "foo";
+    o.snippet = "foo";
+    o.snippetUrl = "foo";
+    o.title = "foo";
+  }
+  buildCounterGeolayerdataCommon--;
+  return o;
+}
+
+checkGeolayerdataCommon(api.GeolayerdataCommon o) {
+  buildCounterGeolayerdataCommon++;
+  if (buildCounterGeolayerdataCommon < 3) {
+    unittest.expect(o.lang, unittest.equals('foo'));
+    unittest.expect(o.previewImageUrl, unittest.equals('foo'));
+    unittest.expect(o.snippet, unittest.equals('foo'));
+    unittest.expect(o.snippetUrl, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterGeolayerdataCommon--;
+}
+
+core.int buildCounterGeolayerdataGeoBoundary = 0;
+buildGeolayerdataGeoBoundary() {
+  var o = new api.GeolayerdataGeoBoundary();
+  buildCounterGeolayerdataGeoBoundary++;
+  if (buildCounterGeolayerdataGeoBoundary < 3) {
+    o.latitude = 42;
+    o.longitude = 42;
+  }
+  buildCounterGeolayerdataGeoBoundary--;
+  return o;
+}
+
+checkGeolayerdataGeoBoundary(api.GeolayerdataGeoBoundary o) {
+  buildCounterGeolayerdataGeoBoundary++;
+  if (buildCounterGeolayerdataGeoBoundary < 3) {
+    unittest.expect(o.latitude, unittest.equals(42));
+    unittest.expect(o.longitude, unittest.equals(42));
+  }
+  buildCounterGeolayerdataGeoBoundary--;
+}
+
+buildUnnamed950() {
+  var o = new core.List<api.GeolayerdataGeoBoundary>();
+  o.add(buildGeolayerdataGeoBoundary());
+  o.add(buildGeolayerdataGeoBoundary());
+  return o;
+}
+
+checkUnnamed950(core.List<api.GeolayerdataGeoBoundary> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGeolayerdataGeoBoundary(o[0]);
+  checkGeolayerdataGeoBoundary(o[1]);
+}
+
+buildUnnamed951() {
+  var o = new core.List<core.List<api.GeolayerdataGeoBoundary>>();
+  o.add(buildUnnamed950());
+  o.add(buildUnnamed950());
+  return o;
+}
+
+checkUnnamed951(core.List<core.List<api.GeolayerdataGeoBoundary>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed950(o[0]);
+  checkUnnamed950(o[1]);
+}
+
+core.int buildCounterGeolayerdataGeoViewportHi = 0;
+buildGeolayerdataGeoViewportHi() {
+  var o = new api.GeolayerdataGeoViewportHi();
+  buildCounterGeolayerdataGeoViewportHi++;
+  if (buildCounterGeolayerdataGeoViewportHi < 3) {
+    o.latitude = 42.0;
+    o.longitude = 42.0;
+  }
+  buildCounterGeolayerdataGeoViewportHi--;
+  return o;
+}
+
+checkGeolayerdataGeoViewportHi(api.GeolayerdataGeoViewportHi o) {
+  buildCounterGeolayerdataGeoViewportHi++;
+  if (buildCounterGeolayerdataGeoViewportHi < 3) {
+    unittest.expect(o.latitude, unittest.equals(42.0));
+    unittest.expect(o.longitude, unittest.equals(42.0));
+  }
+  buildCounterGeolayerdataGeoViewportHi--;
+}
+
+core.int buildCounterGeolayerdataGeoViewportLo = 0;
+buildGeolayerdataGeoViewportLo() {
+  var o = new api.GeolayerdataGeoViewportLo();
+  buildCounterGeolayerdataGeoViewportLo++;
+  if (buildCounterGeolayerdataGeoViewportLo < 3) {
+    o.latitude = 42.0;
+    o.longitude = 42.0;
+  }
+  buildCounterGeolayerdataGeoViewportLo--;
+  return o;
+}
+
+checkGeolayerdataGeoViewportLo(api.GeolayerdataGeoViewportLo o) {
+  buildCounterGeolayerdataGeoViewportLo++;
+  if (buildCounterGeolayerdataGeoViewportLo < 3) {
+    unittest.expect(o.latitude, unittest.equals(42.0));
+    unittest.expect(o.longitude, unittest.equals(42.0));
+  }
+  buildCounterGeolayerdataGeoViewportLo--;
+}
+
+core.int buildCounterGeolayerdataGeoViewport = 0;
+buildGeolayerdataGeoViewport() {
+  var o = new api.GeolayerdataGeoViewport();
+  buildCounterGeolayerdataGeoViewport++;
+  if (buildCounterGeolayerdataGeoViewport < 3) {
+    o.hi = buildGeolayerdataGeoViewportHi();
+    o.lo = buildGeolayerdataGeoViewportLo();
+  }
+  buildCounterGeolayerdataGeoViewport--;
+  return o;
+}
+
+checkGeolayerdataGeoViewport(api.GeolayerdataGeoViewport o) {
+  buildCounterGeolayerdataGeoViewport++;
+  if (buildCounterGeolayerdataGeoViewport < 3) {
+    checkGeolayerdataGeoViewportHi(o.hi);
+    checkGeolayerdataGeoViewportLo(o.lo);
+  }
+  buildCounterGeolayerdataGeoViewport--;
+}
+
+core.int buildCounterGeolayerdataGeo = 0;
+buildGeolayerdataGeo() {
+  var o = new api.GeolayerdataGeo();
+  buildCounterGeolayerdataGeo++;
+  if (buildCounterGeolayerdataGeo < 3) {
+    o.boundary = buildUnnamed951();
+    o.cachePolicy = "foo";
+    o.countryCode = "foo";
+    o.latitude = 42.0;
+    o.longitude = 42.0;
+    o.mapType = "foo";
+    o.viewport = buildGeolayerdataGeoViewport();
+    o.zoom = 42;
+  }
+  buildCounterGeolayerdataGeo--;
+  return o;
+}
+
+checkGeolayerdataGeo(api.GeolayerdataGeo o) {
+  buildCounterGeolayerdataGeo++;
+  if (buildCounterGeolayerdataGeo < 3) {
+    checkUnnamed951(o.boundary);
+    unittest.expect(o.cachePolicy, unittest.equals('foo'));
+    unittest.expect(o.countryCode, unittest.equals('foo'));
+    unittest.expect(o.latitude, unittest.equals(42.0));
+    unittest.expect(o.longitude, unittest.equals(42.0));
+    unittest.expect(o.mapType, unittest.equals('foo'));
+    checkGeolayerdataGeoViewport(o.viewport);
+    unittest.expect(o.zoom, unittest.equals(42));
+  }
+  buildCounterGeolayerdataGeo--;
+}
+
+core.int buildCounterGeolayerdata = 0;
+buildGeolayerdata() {
+  var o = new api.Geolayerdata();
+  buildCounterGeolayerdata++;
+  if (buildCounterGeolayerdata < 3) {
+    o.common = buildGeolayerdataCommon();
+    o.geo = buildGeolayerdataGeo();
+    o.kind = "foo";
+  }
+  buildCounterGeolayerdata--;
+  return o;
+}
+
+checkGeolayerdata(api.Geolayerdata o) {
+  buildCounterGeolayerdata++;
+  if (buildCounterGeolayerdata < 3) {
+    checkGeolayerdataCommon(o.common);
+    checkGeolayerdataGeo(o.geo);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterGeolayerdata--;
+}
+
+buildUnnamed952() {
+  var o = new core.List<api.Layersummary>();
+  o.add(buildLayersummary());
+  o.add(buildLayersummary());
+  return o;
+}
+
+checkUnnamed952(core.List<api.Layersummary> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLayersummary(o[0]);
+  checkLayersummary(o[1]);
+}
+
+core.int buildCounterLayersummaries = 0;
+buildLayersummaries() {
+  var o = new api.Layersummaries();
+  buildCounterLayersummaries++;
+  if (buildCounterLayersummaries < 3) {
+    o.items = buildUnnamed952();
+    o.kind = "foo";
+    o.totalItems = 42;
+  }
+  buildCounterLayersummaries--;
+  return o;
+}
+
+checkLayersummaries(api.Layersummaries o) {
+  buildCounterLayersummaries++;
+  if (buildCounterLayersummaries < 3) {
+    checkUnnamed952(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterLayersummaries--;
+}
+
+buildUnnamed953() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed953(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterLayersummary = 0;
+buildLayersummary() {
+  var o = new api.Layersummary();
+  buildCounterLayersummary++;
+  if (buildCounterLayersummary < 3) {
+    o.annotationCount = 42;
+    o.annotationTypes = buildUnnamed953();
+    o.annotationsDataLink = "foo";
+    o.annotationsLink = "foo";
+    o.contentVersion = "foo";
+    o.dataCount = 42;
+    o.id = "foo";
+    o.kind = "foo";
+    o.layerId = "foo";
+    o.selfLink = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.volumeAnnotationsVersion = "foo";
+    o.volumeId = "foo";
+  }
+  buildCounterLayersummary--;
+  return o;
+}
+
+checkLayersummary(api.Layersummary o) {
+  buildCounterLayersummary++;
+  if (buildCounterLayersummary < 3) {
+    unittest.expect(o.annotationCount, unittest.equals(42));
+    checkUnnamed953(o.annotationTypes);
+    unittest.expect(o.annotationsDataLink, unittest.equals('foo'));
+    unittest.expect(o.annotationsLink, unittest.equals('foo'));
+    unittest.expect(o.contentVersion, unittest.equals('foo'));
+    unittest.expect(o.dataCount, unittest.equals(42));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.layerId, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.volumeAnnotationsVersion, unittest.equals('foo'));
+    unittest.expect(o.volumeId, unittest.equals('foo'));
+  }
+  buildCounterLayersummary--;
+}
+
+core.int buildCounterMetadataItems = 0;
+buildMetadataItems() {
+  var o = new api.MetadataItems();
+  buildCounterMetadataItems++;
+  if (buildCounterMetadataItems < 3) {
+    o.downloadUrl = "foo";
+    o.encryptedKey = "foo";
+    o.language = "foo";
+    o.size = "foo";
+    o.version = "foo";
+  }
+  buildCounterMetadataItems--;
+  return o;
+}
+
+checkMetadataItems(api.MetadataItems o) {
+  buildCounterMetadataItems++;
+  if (buildCounterMetadataItems < 3) {
+    unittest.expect(o.downloadUrl, unittest.equals('foo'));
+    unittest.expect(o.encryptedKey, unittest.equals('foo'));
+    unittest.expect(o.language, unittest.equals('foo'));
+    unittest.expect(o.size, unittest.equals('foo'));
+    unittest.expect(o.version, unittest.equals('foo'));
+  }
+  buildCounterMetadataItems--;
+}
+
+buildUnnamed954() {
+  var o = new core.List<api.MetadataItems>();
+  o.add(buildMetadataItems());
+  o.add(buildMetadataItems());
+  return o;
+}
+
+checkUnnamed954(core.List<api.MetadataItems> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetadataItems(o[0]);
+  checkMetadataItems(o[1]);
+}
+
+core.int buildCounterMetadata = 0;
+buildMetadata() {
+  var o = new api.Metadata();
+  buildCounterMetadata++;
+  if (buildCounterMetadata < 3) {
+    o.items = buildUnnamed954();
+    o.kind = "foo";
+  }
+  buildCounterMetadata--;
+  return o;
+}
+
+checkMetadata(api.Metadata o) {
+  buildCounterMetadata++;
+  if (buildCounterMetadata < 3) {
+    checkUnnamed954(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterMetadata--;
+}
+
+buildUnnamed955() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed955(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterNotification = 0;
+buildNotification() {
+  var o = new api.Notification();
+  buildCounterNotification++;
+  if (buildCounterNotification < 3) {
+    o.body = "foo";
+    o.crmExperimentIds = buildUnnamed955();
+    o.docId = "foo";
+    o.docType = "foo";
+    o.dontShowNotification = true;
+    o.iconUrl = "foo";
+    o.kind = "foo";
+    o.notificationGroup = "foo";
+    o.notificationType = "foo";
+    o.pcampaignId = "foo";
+    o.reason = "foo";
+    o.showNotificationSettingsAction = true;
+    o.targetUrl = "foo";
+    o.title = "foo";
+  }
+  buildCounterNotification--;
+  return o;
+}
+
+checkNotification(api.Notification o) {
+  buildCounterNotification++;
+  if (buildCounterNotification < 3) {
+    unittest.expect(o.body, unittest.equals('foo'));
+    checkUnnamed955(o.crmExperimentIds);
+    unittest.expect(o.docId, unittest.equals('foo'));
+    unittest.expect(o.docType, unittest.equals('foo'));
+    unittest.expect(o.dontShowNotification, unittest.isTrue);
+    unittest.expect(o.iconUrl, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.notificationGroup, unittest.equals('foo'));
+    unittest.expect(o.notificationType, unittest.equals('foo'));
+    unittest.expect(o.pcampaignId, unittest.equals('foo'));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.showNotificationSettingsAction, unittest.isTrue);
+    unittest.expect(o.targetUrl, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterNotification--;
+}
+
+core.int buildCounterOffersItemsItems = 0;
+buildOffersItemsItems() {
+  var o = new api.OffersItemsItems();
+  buildCounterOffersItemsItems++;
+  if (buildCounterOffersItemsItems < 3) {
+    o.author = "foo";
+    o.canonicalVolumeLink = "foo";
+    o.coverUrl = "foo";
+    o.description = "foo";
+    o.title = "foo";
+    o.volumeId = "foo";
+  }
+  buildCounterOffersItemsItems--;
+  return o;
+}
+
+checkOffersItemsItems(api.OffersItemsItems o) {
+  buildCounterOffersItemsItems++;
+  if (buildCounterOffersItemsItems < 3) {
+    unittest.expect(o.author, unittest.equals('foo'));
+    unittest.expect(o.canonicalVolumeLink, unittest.equals('foo'));
+    unittest.expect(o.coverUrl, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.volumeId, unittest.equals('foo'));
+  }
+  buildCounterOffersItemsItems--;
+}
+
+buildUnnamed956() {
+  var o = new core.List<api.OffersItemsItems>();
+  o.add(buildOffersItemsItems());
+  o.add(buildOffersItemsItems());
+  return o;
+}
+
+checkUnnamed956(core.List<api.OffersItemsItems> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOffersItemsItems(o[0]);
+  checkOffersItemsItems(o[1]);
+}
+
+core.int buildCounterOffersItems = 0;
+buildOffersItems() {
+  var o = new api.OffersItems();
+  buildCounterOffersItems++;
+  if (buildCounterOffersItems < 3) {
+    o.artUrl = "foo";
+    o.gservicesKey = "foo";
+    o.id = "foo";
+    o.items = buildUnnamed956();
+  }
+  buildCounterOffersItems--;
+  return o;
+}
+
+checkOffersItems(api.OffersItems o) {
+  buildCounterOffersItems++;
+  if (buildCounterOffersItems < 3) {
+    unittest.expect(o.artUrl, unittest.equals('foo'));
+    unittest.expect(o.gservicesKey, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed956(o.items);
+  }
+  buildCounterOffersItems--;
+}
+
+buildUnnamed957() {
+  var o = new core.List<api.OffersItems>();
+  o.add(buildOffersItems());
+  o.add(buildOffersItems());
+  return o;
+}
+
+checkUnnamed957(core.List<api.OffersItems> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOffersItems(o[0]);
+  checkOffersItems(o[1]);
+}
+
+core.int buildCounterOffers = 0;
+buildOffers() {
+  var o = new api.Offers();
+  buildCounterOffers++;
+  if (buildCounterOffers < 3) {
+    o.items = buildUnnamed957();
+    o.kind = "foo";
+  }
+  buildCounterOffers--;
+  return o;
+}
+
+checkOffers(api.Offers o) {
+  buildCounterOffers++;
+  if (buildCounterOffers < 3) {
+    checkUnnamed957(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOffers--;
+}
+
+core.int buildCounterReadingPosition = 0;
+buildReadingPosition() {
+  var o = new api.ReadingPosition();
+  buildCounterReadingPosition++;
+  if (buildCounterReadingPosition < 3) {
+    o.epubCfiPosition = "foo";
+    o.gbImagePosition = "foo";
+    o.gbTextPosition = "foo";
+    o.kind = "foo";
+    o.pdfPosition = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.volumeId = "foo";
+  }
+  buildCounterReadingPosition--;
+  return o;
+}
+
+checkReadingPosition(api.ReadingPosition o) {
+  buildCounterReadingPosition++;
+  if (buildCounterReadingPosition < 3) {
+    unittest.expect(o.epubCfiPosition, unittest.equals('foo'));
+    unittest.expect(o.gbImagePosition, unittest.equals('foo'));
+    unittest.expect(o.gbTextPosition, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.pdfPosition, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.volumeId, unittest.equals('foo'));
+  }
+  buildCounterReadingPosition--;
+}
+
+core.int buildCounterRequestAccess = 0;
+buildRequestAccess() {
+  var o = new api.RequestAccess();
+  buildCounterRequestAccess++;
+  if (buildCounterRequestAccess < 3) {
+    o.concurrentAccess = buildConcurrentAccessRestriction();
+    o.downloadAccess = buildDownloadAccessRestriction();
+    o.kind = "foo";
+  }
+  buildCounterRequestAccess--;
+  return o;
+}
+
+checkRequestAccess(api.RequestAccess o) {
+  buildCounterRequestAccess++;
+  if (buildCounterRequestAccess < 3) {
+    checkConcurrentAccessRestriction(o.concurrentAccess);
+    checkDownloadAccessRestriction(o.downloadAccess);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterRequestAccess--;
+}
+
+core.int buildCounterReviewAuthor = 0;
+buildReviewAuthor() {
+  var o = new api.ReviewAuthor();
+  buildCounterReviewAuthor++;
+  if (buildCounterReviewAuthor < 3) {
+    o.displayName = "foo";
+  }
+  buildCounterReviewAuthor--;
+  return o;
+}
+
+checkReviewAuthor(api.ReviewAuthor o) {
+  buildCounterReviewAuthor++;
+  if (buildCounterReviewAuthor < 3) {
+    unittest.expect(o.displayName, unittest.equals('foo'));
+  }
+  buildCounterReviewAuthor--;
+}
+
+core.int buildCounterReviewSource = 0;
+buildReviewSource() {
+  var o = new api.ReviewSource();
+  buildCounterReviewSource++;
+  if (buildCounterReviewSource < 3) {
+    o.description = "foo";
+    o.extraDescription = "foo";
+    o.url = "foo";
+  }
+  buildCounterReviewSource--;
+  return o;
+}
+
+checkReviewSource(api.ReviewSource o) {
+  buildCounterReviewSource++;
+  if (buildCounterReviewSource < 3) {
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.extraDescription, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterReviewSource--;
+}
+
+core.int buildCounterReview = 0;
+buildReview() {
+  var o = new api.Review();
+  buildCounterReview++;
+  if (buildCounterReview < 3) {
+    o.author = buildReviewAuthor();
+    o.content = "foo";
+    o.date = "foo";
+    o.fullTextUrl = "foo";
+    o.kind = "foo";
+    o.rating = "foo";
+    o.source = buildReviewSource();
+    o.title = "foo";
+    o.type = "foo";
+    o.volumeId = "foo";
+  }
+  buildCounterReview--;
+  return o;
+}
+
+checkReview(api.Review o) {
+  buildCounterReview++;
+  if (buildCounterReview < 3) {
+    checkReviewAuthor(o.author);
+    unittest.expect(o.content, unittest.equals('foo'));
+    unittest.expect(o.date, unittest.equals('foo'));
+    unittest.expect(o.fullTextUrl, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.rating, unittest.equals('foo'));
+    checkReviewSource(o.source);
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.volumeId, unittest.equals('foo'));
+  }
+  buildCounterReview--;
+}
+
+core.int buildCounterSeriesSeries = 0;
+buildSeriesSeries() {
+  var o = new api.SeriesSeries();
+  buildCounterSeriesSeries++;
+  if (buildCounterSeriesSeries < 3) {
+    o.bannerImageUrl = "foo";
+    o.imageUrl = "foo";
+    o.seriesId = "foo";
+    o.seriesType = "foo";
+    o.title = "foo";
+  }
+  buildCounterSeriesSeries--;
+  return o;
+}
+
+checkSeriesSeries(api.SeriesSeries o) {
+  buildCounterSeriesSeries++;
+  if (buildCounterSeriesSeries < 3) {
+    unittest.expect(o.bannerImageUrl, unittest.equals('foo'));
+    unittest.expect(o.imageUrl, unittest.equals('foo'));
+    unittest.expect(o.seriesId, unittest.equals('foo'));
+    unittest.expect(o.seriesType, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterSeriesSeries--;
+}
+
+buildUnnamed958() {
+  var o = new core.List<api.SeriesSeries>();
+  o.add(buildSeriesSeries());
+  o.add(buildSeriesSeries());
+  return o;
+}
+
+checkUnnamed958(core.List<api.SeriesSeries> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSeriesSeries(o[0]);
+  checkSeriesSeries(o[1]);
+}
+
+core.int buildCounterSeries = 0;
+buildSeries() {
+  var o = new api.Series();
+  buildCounterSeries++;
+  if (buildCounterSeries < 3) {
+    o.kind = "foo";
+    o.series = buildUnnamed958();
+  }
+  buildCounterSeries--;
+  return o;
+}
+
+checkSeries(api.Series o) {
+  buildCounterSeries++;
+  if (buildCounterSeries < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed958(o.series);
+  }
+  buildCounterSeries--;
+}
+
+buildUnnamed959() {
+  var o = new core.List<api.Volume>();
+  o.add(buildVolume());
+  o.add(buildVolume());
+  return o;
+}
+
+checkUnnamed959(core.List<api.Volume> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVolume(o[0]);
+  checkVolume(o[1]);
+}
+
+core.int buildCounterSeriesmembership = 0;
+buildSeriesmembership() {
+  var o = new api.Seriesmembership();
+  buildCounterSeriesmembership++;
+  if (buildCounterSeriesmembership < 3) {
+    o.kind = "foo";
+    o.member = buildUnnamed959();
+    o.nextPageToken = "foo";
+  }
+  buildCounterSeriesmembership--;
+  return o;
+}
+
+checkSeriesmembership(api.Seriesmembership o) {
+  buildCounterSeriesmembership++;
+  if (buildCounterSeriesmembership < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed959(o.member);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterSeriesmembership--;
+}
+
+core.int buildCounterUsersettingsNotesExport = 0;
+buildUsersettingsNotesExport() {
+  var o = new api.UsersettingsNotesExport();
+  buildCounterUsersettingsNotesExport++;
+  if (buildCounterUsersettingsNotesExport < 3) {
+    o.folderName = "foo";
+    o.isEnabled = true;
+  }
+  buildCounterUsersettingsNotesExport--;
+  return o;
+}
+
+checkUsersettingsNotesExport(api.UsersettingsNotesExport o) {
+  buildCounterUsersettingsNotesExport++;
+  if (buildCounterUsersettingsNotesExport < 3) {
+    unittest.expect(o.folderName, unittest.equals('foo'));
+    unittest.expect(o.isEnabled, unittest.isTrue);
+  }
+  buildCounterUsersettingsNotesExport--;
+}
+
+core.int buildCounterUsersettingsNotificationMoreFromAuthors = 0;
+buildUsersettingsNotificationMoreFromAuthors() {
+  var o = new api.UsersettingsNotificationMoreFromAuthors();
+  buildCounterUsersettingsNotificationMoreFromAuthors++;
+  if (buildCounterUsersettingsNotificationMoreFromAuthors < 3) {
+    o.optedState = "foo";
+  }
+  buildCounterUsersettingsNotificationMoreFromAuthors--;
+  return o;
+}
+
+checkUsersettingsNotificationMoreFromAuthors(
+    api.UsersettingsNotificationMoreFromAuthors o) {
+  buildCounterUsersettingsNotificationMoreFromAuthors++;
+  if (buildCounterUsersettingsNotificationMoreFromAuthors < 3) {
+    unittest.expect(o.optedState, unittest.equals('foo'));
+  }
+  buildCounterUsersettingsNotificationMoreFromAuthors--;
+}
+
+core.int buildCounterUsersettingsNotificationMoreFromSeries = 0;
+buildUsersettingsNotificationMoreFromSeries() {
+  var o = new api.UsersettingsNotificationMoreFromSeries();
+  buildCounterUsersettingsNotificationMoreFromSeries++;
+  if (buildCounterUsersettingsNotificationMoreFromSeries < 3) {
+    o.optedState = "foo";
+  }
+  buildCounterUsersettingsNotificationMoreFromSeries--;
+  return o;
+}
+
+checkUsersettingsNotificationMoreFromSeries(
+    api.UsersettingsNotificationMoreFromSeries o) {
+  buildCounterUsersettingsNotificationMoreFromSeries++;
+  if (buildCounterUsersettingsNotificationMoreFromSeries < 3) {
+    unittest.expect(o.optedState, unittest.equals('foo'));
+  }
+  buildCounterUsersettingsNotificationMoreFromSeries--;
+}
+
+core.int buildCounterUsersettingsNotificationRewardExpirations = 0;
+buildUsersettingsNotificationRewardExpirations() {
+  var o = new api.UsersettingsNotificationRewardExpirations();
+  buildCounterUsersettingsNotificationRewardExpirations++;
+  if (buildCounterUsersettingsNotificationRewardExpirations < 3) {
+    o.optedState = "foo";
+  }
+  buildCounterUsersettingsNotificationRewardExpirations--;
+  return o;
+}
+
+checkUsersettingsNotificationRewardExpirations(
+    api.UsersettingsNotificationRewardExpirations o) {
+  buildCounterUsersettingsNotificationRewardExpirations++;
+  if (buildCounterUsersettingsNotificationRewardExpirations < 3) {
+    unittest.expect(o.optedState, unittest.equals('foo'));
+  }
+  buildCounterUsersettingsNotificationRewardExpirations--;
+}
+
+core.int buildCounterUsersettingsNotification = 0;
+buildUsersettingsNotification() {
+  var o = new api.UsersettingsNotification();
+  buildCounterUsersettingsNotification++;
+  if (buildCounterUsersettingsNotification < 3) {
+    o.moreFromAuthors = buildUsersettingsNotificationMoreFromAuthors();
+    o.moreFromSeries = buildUsersettingsNotificationMoreFromSeries();
+    o.rewardExpirations = buildUsersettingsNotificationRewardExpirations();
+  }
+  buildCounterUsersettingsNotification--;
+  return o;
+}
+
+checkUsersettingsNotification(api.UsersettingsNotification o) {
+  buildCounterUsersettingsNotification++;
+  if (buildCounterUsersettingsNotification < 3) {
+    checkUsersettingsNotificationMoreFromAuthors(o.moreFromAuthors);
+    checkUsersettingsNotificationMoreFromSeries(o.moreFromSeries);
+    checkUsersettingsNotificationRewardExpirations(o.rewardExpirations);
+  }
+  buildCounterUsersettingsNotification--;
+}
+
+core.int buildCounterUsersettings = 0;
+buildUsersettings() {
+  var o = new api.Usersettings();
+  buildCounterUsersettings++;
+  if (buildCounterUsersettings < 3) {
+    o.kind = "foo";
+    o.notesExport = buildUsersettingsNotesExport();
+    o.notification = buildUsersettingsNotification();
+  }
+  buildCounterUsersettings--;
+  return o;
+}
+
+checkUsersettings(api.Usersettings o) {
+  buildCounterUsersettings++;
+  if (buildCounterUsersettings < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUsersettingsNotesExport(o.notesExport);
+    checkUsersettingsNotification(o.notification);
+  }
+  buildCounterUsersettings--;
+}
+
+core.int buildCounterVolumeAccessInfoEpub = 0;
+buildVolumeAccessInfoEpub() {
+  var o = new api.VolumeAccessInfoEpub();
+  buildCounterVolumeAccessInfoEpub++;
+  if (buildCounterVolumeAccessInfoEpub < 3) {
+    o.acsTokenLink = "foo";
+    o.downloadLink = "foo";
+    o.isAvailable = true;
+  }
+  buildCounterVolumeAccessInfoEpub--;
+  return o;
+}
+
+checkVolumeAccessInfoEpub(api.VolumeAccessInfoEpub o) {
+  buildCounterVolumeAccessInfoEpub++;
+  if (buildCounterVolumeAccessInfoEpub < 3) {
+    unittest.expect(o.acsTokenLink, unittest.equals('foo'));
+    unittest.expect(o.downloadLink, unittest.equals('foo'));
+    unittest.expect(o.isAvailable, unittest.isTrue);
+  }
+  buildCounterVolumeAccessInfoEpub--;
+}
+
+core.int buildCounterVolumeAccessInfoPdf = 0;
+buildVolumeAccessInfoPdf() {
+  var o = new api.VolumeAccessInfoPdf();
+  buildCounterVolumeAccessInfoPdf++;
+  if (buildCounterVolumeAccessInfoPdf < 3) {
+    o.acsTokenLink = "foo";
+    o.downloadLink = "foo";
+    o.isAvailable = true;
+  }
+  buildCounterVolumeAccessInfoPdf--;
+  return o;
+}
+
+checkVolumeAccessInfoPdf(api.VolumeAccessInfoPdf o) {
+  buildCounterVolumeAccessInfoPdf++;
+  if (buildCounterVolumeAccessInfoPdf < 3) {
+    unittest.expect(o.acsTokenLink, unittest.equals('foo'));
+    unittest.expect(o.downloadLink, unittest.equals('foo'));
+    unittest.expect(o.isAvailable, unittest.isTrue);
+  }
+  buildCounterVolumeAccessInfoPdf--;
+}
+
+core.int buildCounterVolumeAccessInfo = 0;
+buildVolumeAccessInfo() {
+  var o = new api.VolumeAccessInfo();
+  buildCounterVolumeAccessInfo++;
+  if (buildCounterVolumeAccessInfo < 3) {
+    o.accessViewStatus = "foo";
+    o.country = "foo";
+    o.downloadAccess = buildDownloadAccessRestriction();
+    o.driveImportedContentLink = "foo";
+    o.embeddable = true;
+    o.epub = buildVolumeAccessInfoEpub();
+    o.explicitOfflineLicenseManagement = true;
+    o.pdf = buildVolumeAccessInfoPdf();
+    o.publicDomain = true;
+    o.quoteSharingAllowed = true;
+    o.textToSpeechPermission = "foo";
+    o.viewOrderUrl = "foo";
+    o.viewability = "foo";
+    o.webReaderLink = "foo";
+  }
+  buildCounterVolumeAccessInfo--;
+  return o;
+}
+
+checkVolumeAccessInfo(api.VolumeAccessInfo o) {
+  buildCounterVolumeAccessInfo++;
+  if (buildCounterVolumeAccessInfo < 3) {
+    unittest.expect(o.accessViewStatus, unittest.equals('foo'));
+    unittest.expect(o.country, unittest.equals('foo'));
+    checkDownloadAccessRestriction(o.downloadAccess);
+    unittest.expect(o.driveImportedContentLink, unittest.equals('foo'));
+    unittest.expect(o.embeddable, unittest.isTrue);
+    checkVolumeAccessInfoEpub(o.epub);
+    unittest.expect(o.explicitOfflineLicenseManagement, unittest.isTrue);
+    checkVolumeAccessInfoPdf(o.pdf);
+    unittest.expect(o.publicDomain, unittest.isTrue);
+    unittest.expect(o.quoteSharingAllowed, unittest.isTrue);
+    unittest.expect(o.textToSpeechPermission, unittest.equals('foo'));
+    unittest.expect(o.viewOrderUrl, unittest.equals('foo'));
+    unittest.expect(o.viewability, unittest.equals('foo'));
+    unittest.expect(o.webReaderLink, unittest.equals('foo'));
+  }
+  buildCounterVolumeAccessInfo--;
+}
+
+core.int buildCounterVolumeLayerInfoLayers = 0;
+buildVolumeLayerInfoLayers() {
+  var o = new api.VolumeLayerInfoLayers();
+  buildCounterVolumeLayerInfoLayers++;
+  if (buildCounterVolumeLayerInfoLayers < 3) {
+    o.layerId = "foo";
+    o.volumeAnnotationsVersion = "foo";
+  }
+  buildCounterVolumeLayerInfoLayers--;
+  return o;
+}
+
+checkVolumeLayerInfoLayers(api.VolumeLayerInfoLayers o) {
+  buildCounterVolumeLayerInfoLayers++;
+  if (buildCounterVolumeLayerInfoLayers < 3) {
+    unittest.expect(o.layerId, unittest.equals('foo'));
+    unittest.expect(o.volumeAnnotationsVersion, unittest.equals('foo'));
+  }
+  buildCounterVolumeLayerInfoLayers--;
+}
+
+buildUnnamed960() {
+  var o = new core.List<api.VolumeLayerInfoLayers>();
+  o.add(buildVolumeLayerInfoLayers());
+  o.add(buildVolumeLayerInfoLayers());
+  return o;
+}
+
+checkUnnamed960(core.List<api.VolumeLayerInfoLayers> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVolumeLayerInfoLayers(o[0]);
+  checkVolumeLayerInfoLayers(o[1]);
+}
+
+core.int buildCounterVolumeLayerInfo = 0;
+buildVolumeLayerInfo() {
+  var o = new api.VolumeLayerInfo();
+  buildCounterVolumeLayerInfo++;
+  if (buildCounterVolumeLayerInfo < 3) {
+    o.layers = buildUnnamed960();
+  }
+  buildCounterVolumeLayerInfo--;
+  return o;
+}
+
+checkVolumeLayerInfo(api.VolumeLayerInfo o) {
+  buildCounterVolumeLayerInfo++;
+  if (buildCounterVolumeLayerInfo < 3) {
+    checkUnnamed960(o.layers);
+  }
+  buildCounterVolumeLayerInfo--;
+}
+
+core.int buildCounterVolumeRecommendedInfo = 0;
+buildVolumeRecommendedInfo() {
+  var o = new api.VolumeRecommendedInfo();
+  buildCounterVolumeRecommendedInfo++;
+  if (buildCounterVolumeRecommendedInfo < 3) {
+    o.explanation = "foo";
+  }
+  buildCounterVolumeRecommendedInfo--;
+  return o;
+}
+
+checkVolumeRecommendedInfo(api.VolumeRecommendedInfo o) {
+  buildCounterVolumeRecommendedInfo++;
+  if (buildCounterVolumeRecommendedInfo < 3) {
+    unittest.expect(o.explanation, unittest.equals('foo'));
+  }
+  buildCounterVolumeRecommendedInfo--;
+}
+
+core.int buildCounterVolumeSaleInfoListPrice = 0;
+buildVolumeSaleInfoListPrice() {
+  var o = new api.VolumeSaleInfoListPrice();
+  buildCounterVolumeSaleInfoListPrice++;
+  if (buildCounterVolumeSaleInfoListPrice < 3) {
+    o.amount = 42.0;
+    o.currencyCode = "foo";
+  }
+  buildCounterVolumeSaleInfoListPrice--;
+  return o;
+}
+
+checkVolumeSaleInfoListPrice(api.VolumeSaleInfoListPrice o) {
+  buildCounterVolumeSaleInfoListPrice++;
+  if (buildCounterVolumeSaleInfoListPrice < 3) {
+    unittest.expect(o.amount, unittest.equals(42.0));
+    unittest.expect(o.currencyCode, unittest.equals('foo'));
+  }
+  buildCounterVolumeSaleInfoListPrice--;
+}
+
+core.int buildCounterVolumeSaleInfoOffersListPrice = 0;
+buildVolumeSaleInfoOffersListPrice() {
+  var o = new api.VolumeSaleInfoOffersListPrice();
+  buildCounterVolumeSaleInfoOffersListPrice++;
+  if (buildCounterVolumeSaleInfoOffersListPrice < 3) {
+    o.amountInMicros = 42.0;
+    o.currencyCode = "foo";
+  }
+  buildCounterVolumeSaleInfoOffersListPrice--;
+  return o;
+}
+
+checkVolumeSaleInfoOffersListPrice(api.VolumeSaleInfoOffersListPrice o) {
+  buildCounterVolumeSaleInfoOffersListPrice++;
+  if (buildCounterVolumeSaleInfoOffersListPrice < 3) {
+    unittest.expect(o.amountInMicros, unittest.equals(42.0));
+    unittest.expect(o.currencyCode, unittest.equals('foo'));
+  }
+  buildCounterVolumeSaleInfoOffersListPrice--;
+}
+
+core.int buildCounterVolumeSaleInfoOffersRentalDuration = 0;
+buildVolumeSaleInfoOffersRentalDuration() {
+  var o = new api.VolumeSaleInfoOffersRentalDuration();
+  buildCounterVolumeSaleInfoOffersRentalDuration++;
+  if (buildCounterVolumeSaleInfoOffersRentalDuration < 3) {
+    o.count = 42.0;
+    o.unit = "foo";
+  }
+  buildCounterVolumeSaleInfoOffersRentalDuration--;
+  return o;
+}
+
+checkVolumeSaleInfoOffersRentalDuration(
+    api.VolumeSaleInfoOffersRentalDuration o) {
+  buildCounterVolumeSaleInfoOffersRentalDuration++;
+  if (buildCounterVolumeSaleInfoOffersRentalDuration < 3) {
+    unittest.expect(o.count, unittest.equals(42.0));
+    unittest.expect(o.unit, unittest.equals('foo'));
+  }
+  buildCounterVolumeSaleInfoOffersRentalDuration--;
+}
+
+core.int buildCounterVolumeSaleInfoOffersRetailPrice = 0;
+buildVolumeSaleInfoOffersRetailPrice() {
+  var o = new api.VolumeSaleInfoOffersRetailPrice();
+  buildCounterVolumeSaleInfoOffersRetailPrice++;
+  if (buildCounterVolumeSaleInfoOffersRetailPrice < 3) {
+    o.amountInMicros = 42.0;
+    o.currencyCode = "foo";
+  }
+  buildCounterVolumeSaleInfoOffersRetailPrice--;
+  return o;
+}
+
+checkVolumeSaleInfoOffersRetailPrice(api.VolumeSaleInfoOffersRetailPrice o) {
+  buildCounterVolumeSaleInfoOffersRetailPrice++;
+  if (buildCounterVolumeSaleInfoOffersRetailPrice < 3) {
+    unittest.expect(o.amountInMicros, unittest.equals(42.0));
+    unittest.expect(o.currencyCode, unittest.equals('foo'));
+  }
+  buildCounterVolumeSaleInfoOffersRetailPrice--;
+}
+
+core.int buildCounterVolumeSaleInfoOffers = 0;
+buildVolumeSaleInfoOffers() {
+  var o = new api.VolumeSaleInfoOffers();
+  buildCounterVolumeSaleInfoOffers++;
+  if (buildCounterVolumeSaleInfoOffers < 3) {
+    o.finskyOfferType = 42;
+    o.giftable = true;
+    o.listPrice = buildVolumeSaleInfoOffersListPrice();
+    o.rentalDuration = buildVolumeSaleInfoOffersRentalDuration();
+    o.retailPrice = buildVolumeSaleInfoOffersRetailPrice();
+  }
+  buildCounterVolumeSaleInfoOffers--;
+  return o;
+}
+
+checkVolumeSaleInfoOffers(api.VolumeSaleInfoOffers o) {
+  buildCounterVolumeSaleInfoOffers++;
+  if (buildCounterVolumeSaleInfoOffers < 3) {
+    unittest.expect(o.finskyOfferType, unittest.equals(42));
+    unittest.expect(o.giftable, unittest.isTrue);
+    checkVolumeSaleInfoOffersListPrice(o.listPrice);
+    checkVolumeSaleInfoOffersRentalDuration(o.rentalDuration);
+    checkVolumeSaleInfoOffersRetailPrice(o.retailPrice);
+  }
+  buildCounterVolumeSaleInfoOffers--;
+}
+
+buildUnnamed961() {
+  var o = new core.List<api.VolumeSaleInfoOffers>();
+  o.add(buildVolumeSaleInfoOffers());
+  o.add(buildVolumeSaleInfoOffers());
+  return o;
+}
+
+checkUnnamed961(core.List<api.VolumeSaleInfoOffers> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVolumeSaleInfoOffers(o[0]);
+  checkVolumeSaleInfoOffers(o[1]);
+}
+
+core.int buildCounterVolumeSaleInfoRetailPrice = 0;
+buildVolumeSaleInfoRetailPrice() {
+  var o = new api.VolumeSaleInfoRetailPrice();
+  buildCounterVolumeSaleInfoRetailPrice++;
+  if (buildCounterVolumeSaleInfoRetailPrice < 3) {
+    o.amount = 42.0;
+    o.currencyCode = "foo";
+  }
+  buildCounterVolumeSaleInfoRetailPrice--;
+  return o;
+}
+
+checkVolumeSaleInfoRetailPrice(api.VolumeSaleInfoRetailPrice o) {
+  buildCounterVolumeSaleInfoRetailPrice++;
+  if (buildCounterVolumeSaleInfoRetailPrice < 3) {
+    unittest.expect(o.amount, unittest.equals(42.0));
+    unittest.expect(o.currencyCode, unittest.equals('foo'));
+  }
+  buildCounterVolumeSaleInfoRetailPrice--;
+}
+
+core.int buildCounterVolumeSaleInfo = 0;
+buildVolumeSaleInfo() {
+  var o = new api.VolumeSaleInfo();
+  buildCounterVolumeSaleInfo++;
+  if (buildCounterVolumeSaleInfo < 3) {
+    o.buyLink = "foo";
+    o.country = "foo";
+    o.isEbook = true;
+    o.listPrice = buildVolumeSaleInfoListPrice();
+    o.offers = buildUnnamed961();
+    o.onSaleDate = core.DateTime.parse("2002-02-27T14:01:02");
+    o.retailPrice = buildVolumeSaleInfoRetailPrice();
+    o.saleability = "foo";
+  }
+  buildCounterVolumeSaleInfo--;
+  return o;
+}
+
+checkVolumeSaleInfo(api.VolumeSaleInfo o) {
+  buildCounterVolumeSaleInfo++;
+  if (buildCounterVolumeSaleInfo < 3) {
+    unittest.expect(o.buyLink, unittest.equals('foo'));
+    unittest.expect(o.country, unittest.equals('foo'));
+    unittest.expect(o.isEbook, unittest.isTrue);
+    checkVolumeSaleInfoListPrice(o.listPrice);
+    checkUnnamed961(o.offers);
+    unittest.expect(o.onSaleDate,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    checkVolumeSaleInfoRetailPrice(o.retailPrice);
+    unittest.expect(o.saleability, unittest.equals('foo'));
+  }
+  buildCounterVolumeSaleInfo--;
+}
+
+core.int buildCounterVolumeSearchInfo = 0;
+buildVolumeSearchInfo() {
+  var o = new api.VolumeSearchInfo();
+  buildCounterVolumeSearchInfo++;
+  if (buildCounterVolumeSearchInfo < 3) {
+    o.textSnippet = "foo";
+  }
+  buildCounterVolumeSearchInfo--;
+  return o;
+}
+
+checkVolumeSearchInfo(api.VolumeSearchInfo o) {
+  buildCounterVolumeSearchInfo++;
+  if (buildCounterVolumeSearchInfo < 3) {
+    unittest.expect(o.textSnippet, unittest.equals('foo'));
+  }
+  buildCounterVolumeSearchInfo--;
+}
+
+core.int buildCounterVolumeUserInfoCopy = 0;
+buildVolumeUserInfoCopy() {
+  var o = new api.VolumeUserInfoCopy();
+  buildCounterVolumeUserInfoCopy++;
+  if (buildCounterVolumeUserInfoCopy < 3) {
+    o.allowedCharacterCount = 42;
+    o.limitType = "foo";
+    o.remainingCharacterCount = 42;
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+  }
+  buildCounterVolumeUserInfoCopy--;
+  return o;
+}
+
+checkVolumeUserInfoCopy(api.VolumeUserInfoCopy o) {
+  buildCounterVolumeUserInfoCopy++;
+  if (buildCounterVolumeUserInfoCopy < 3) {
+    unittest.expect(o.allowedCharacterCount, unittest.equals(42));
+    unittest.expect(o.limitType, unittest.equals('foo'));
+    unittest.expect(o.remainingCharacterCount, unittest.equals(42));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+  }
+  buildCounterVolumeUserInfoCopy--;
+}
+
+core.int buildCounterVolumeUserInfoFamilySharing = 0;
+buildVolumeUserInfoFamilySharing() {
+  var o = new api.VolumeUserInfoFamilySharing();
+  buildCounterVolumeUserInfoFamilySharing++;
+  if (buildCounterVolumeUserInfoFamilySharing < 3) {
+    o.familyRole = "foo";
+    o.isSharingAllowed = true;
+    o.isSharingDisabledByFop = true;
+  }
+  buildCounterVolumeUserInfoFamilySharing--;
+  return o;
+}
+
+checkVolumeUserInfoFamilySharing(api.VolumeUserInfoFamilySharing o) {
+  buildCounterVolumeUserInfoFamilySharing++;
+  if (buildCounterVolumeUserInfoFamilySharing < 3) {
+    unittest.expect(o.familyRole, unittest.equals('foo'));
+    unittest.expect(o.isSharingAllowed, unittest.isTrue);
+    unittest.expect(o.isSharingDisabledByFop, unittest.isTrue);
+  }
+  buildCounterVolumeUserInfoFamilySharing--;
+}
+
+core.int buildCounterVolumeUserInfoRentalPeriod = 0;
+buildVolumeUserInfoRentalPeriod() {
+  var o = new api.VolumeUserInfoRentalPeriod();
+  buildCounterVolumeUserInfoRentalPeriod++;
+  if (buildCounterVolumeUserInfoRentalPeriod < 3) {
+    o.endUtcSec = "foo";
+    o.startUtcSec = "foo";
+  }
+  buildCounterVolumeUserInfoRentalPeriod--;
+  return o;
+}
+
+checkVolumeUserInfoRentalPeriod(api.VolumeUserInfoRentalPeriod o) {
+  buildCounterVolumeUserInfoRentalPeriod++;
+  if (buildCounterVolumeUserInfoRentalPeriod < 3) {
+    unittest.expect(o.endUtcSec, unittest.equals('foo'));
+    unittest.expect(o.startUtcSec, unittest.equals('foo'));
+  }
+  buildCounterVolumeUserInfoRentalPeriod--;
+}
+
+core.int buildCounterVolumeUserInfoUserUploadedVolumeInfo = 0;
+buildVolumeUserInfoUserUploadedVolumeInfo() {
+  var o = new api.VolumeUserInfoUserUploadedVolumeInfo();
+  buildCounterVolumeUserInfoUserUploadedVolumeInfo++;
+  if (buildCounterVolumeUserInfoUserUploadedVolumeInfo < 3) {
+    o.processingState = "foo";
+  }
+  buildCounterVolumeUserInfoUserUploadedVolumeInfo--;
+  return o;
+}
+
+checkVolumeUserInfoUserUploadedVolumeInfo(
+    api.VolumeUserInfoUserUploadedVolumeInfo o) {
+  buildCounterVolumeUserInfoUserUploadedVolumeInfo++;
+  if (buildCounterVolumeUserInfoUserUploadedVolumeInfo < 3) {
+    unittest.expect(o.processingState, unittest.equals('foo'));
+  }
+  buildCounterVolumeUserInfoUserUploadedVolumeInfo--;
+}
+
+core.int buildCounterVolumeUserInfo = 0;
+buildVolumeUserInfo() {
+  var o = new api.VolumeUserInfo();
+  buildCounterVolumeUserInfo++;
+  if (buildCounterVolumeUserInfo < 3) {
+    o.acquiredTime = core.DateTime.parse("2002-02-27T14:01:02");
+    o.acquisitionType = 42;
+    o.copy = buildVolumeUserInfoCopy();
+    o.entitlementType = 42;
+    o.familySharing = buildVolumeUserInfoFamilySharing();
+    o.isFamilySharedFromUser = true;
+    o.isFamilySharedToUser = true;
+    o.isFamilySharingAllowed = true;
+    o.isFamilySharingDisabledByFop = true;
+    o.isInMyBooks = true;
+    o.isPreordered = true;
+    o.isPurchased = true;
+    o.isUploaded = true;
+    o.readingPosition = buildReadingPosition();
+    o.rentalPeriod = buildVolumeUserInfoRentalPeriod();
+    o.rentalState = "foo";
+    o.review = buildReview();
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.userUploadedVolumeInfo = buildVolumeUserInfoUserUploadedVolumeInfo();
+  }
+  buildCounterVolumeUserInfo--;
+  return o;
+}
+
+checkVolumeUserInfo(api.VolumeUserInfo o) {
+  buildCounterVolumeUserInfo++;
+  if (buildCounterVolumeUserInfo < 3) {
+    unittest.expect(o.acquiredTime,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.acquisitionType, unittest.equals(42));
+    checkVolumeUserInfoCopy(o.copy);
+    unittest.expect(o.entitlementType, unittest.equals(42));
+    checkVolumeUserInfoFamilySharing(o.familySharing);
+    unittest.expect(o.isFamilySharedFromUser, unittest.isTrue);
+    unittest.expect(o.isFamilySharedToUser, unittest.isTrue);
+    unittest.expect(o.isFamilySharingAllowed, unittest.isTrue);
+    unittest.expect(o.isFamilySharingDisabledByFop, unittest.isTrue);
+    unittest.expect(o.isInMyBooks, unittest.isTrue);
+    unittest.expect(o.isPreordered, unittest.isTrue);
+    unittest.expect(o.isPurchased, unittest.isTrue);
+    unittest.expect(o.isUploaded, unittest.isTrue);
+    checkReadingPosition(o.readingPosition);
+    checkVolumeUserInfoRentalPeriod(o.rentalPeriod);
+    unittest.expect(o.rentalState, unittest.equals('foo'));
+    checkReview(o.review);
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    checkVolumeUserInfoUserUploadedVolumeInfo(o.userUploadedVolumeInfo);
+  }
+  buildCounterVolumeUserInfo--;
+}
+
+buildUnnamed962() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed962(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed963() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed963(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterVolumeVolumeInfoDimensions = 0;
+buildVolumeVolumeInfoDimensions() {
+  var o = new api.VolumeVolumeInfoDimensions();
+  buildCounterVolumeVolumeInfoDimensions++;
+  if (buildCounterVolumeVolumeInfoDimensions < 3) {
+    o.height = "foo";
+    o.thickness = "foo";
+    o.width = "foo";
+  }
+  buildCounterVolumeVolumeInfoDimensions--;
+  return o;
+}
+
+checkVolumeVolumeInfoDimensions(api.VolumeVolumeInfoDimensions o) {
+  buildCounterVolumeVolumeInfoDimensions++;
+  if (buildCounterVolumeVolumeInfoDimensions < 3) {
+    unittest.expect(o.height, unittest.equals('foo'));
+    unittest.expect(o.thickness, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals('foo'));
+  }
+  buildCounterVolumeVolumeInfoDimensions--;
+}
+
+core.int buildCounterVolumeVolumeInfoImageLinks = 0;
+buildVolumeVolumeInfoImageLinks() {
+  var o = new api.VolumeVolumeInfoImageLinks();
+  buildCounterVolumeVolumeInfoImageLinks++;
+  if (buildCounterVolumeVolumeInfoImageLinks < 3) {
+    o.extraLarge = "foo";
+    o.large = "foo";
+    o.medium = "foo";
+    o.small = "foo";
+    o.smallThumbnail = "foo";
+    o.thumbnail = "foo";
+  }
+  buildCounterVolumeVolumeInfoImageLinks--;
+  return o;
+}
+
+checkVolumeVolumeInfoImageLinks(api.VolumeVolumeInfoImageLinks o) {
+  buildCounterVolumeVolumeInfoImageLinks++;
+  if (buildCounterVolumeVolumeInfoImageLinks < 3) {
+    unittest.expect(o.extraLarge, unittest.equals('foo'));
+    unittest.expect(o.large, unittest.equals('foo'));
+    unittest.expect(o.medium, unittest.equals('foo'));
+    unittest.expect(o.small, unittest.equals('foo'));
+    unittest.expect(o.smallThumbnail, unittest.equals('foo'));
+    unittest.expect(o.thumbnail, unittest.equals('foo'));
+  }
+  buildCounterVolumeVolumeInfoImageLinks--;
+}
+
+core.int buildCounterVolumeVolumeInfoIndustryIdentifiers = 0;
+buildVolumeVolumeInfoIndustryIdentifiers() {
+  var o = new api.VolumeVolumeInfoIndustryIdentifiers();
+  buildCounterVolumeVolumeInfoIndustryIdentifiers++;
+  if (buildCounterVolumeVolumeInfoIndustryIdentifiers < 3) {
+    o.identifier = "foo";
+    o.type = "foo";
+  }
+  buildCounterVolumeVolumeInfoIndustryIdentifiers--;
+  return o;
+}
+
+checkVolumeVolumeInfoIndustryIdentifiers(
+    api.VolumeVolumeInfoIndustryIdentifiers o) {
+  buildCounterVolumeVolumeInfoIndustryIdentifiers++;
+  if (buildCounterVolumeVolumeInfoIndustryIdentifiers < 3) {
+    unittest.expect(o.identifier, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterVolumeVolumeInfoIndustryIdentifiers--;
+}
+
+buildUnnamed964() {
+  var o = new core.List<api.VolumeVolumeInfoIndustryIdentifiers>();
+  o.add(buildVolumeVolumeInfoIndustryIdentifiers());
+  o.add(buildVolumeVolumeInfoIndustryIdentifiers());
+  return o;
+}
+
+checkUnnamed964(core.List<api.VolumeVolumeInfoIndustryIdentifiers> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVolumeVolumeInfoIndustryIdentifiers(o[0]);
+  checkVolumeVolumeInfoIndustryIdentifiers(o[1]);
+}
+
+core.int buildCounterVolumeVolumeInfoPanelizationSummary = 0;
+buildVolumeVolumeInfoPanelizationSummary() {
+  var o = new api.VolumeVolumeInfoPanelizationSummary();
+  buildCounterVolumeVolumeInfoPanelizationSummary++;
+  if (buildCounterVolumeVolumeInfoPanelizationSummary < 3) {
+    o.containsEpubBubbles = true;
+    o.containsImageBubbles = true;
+    o.epubBubbleVersion = "foo";
+    o.imageBubbleVersion = "foo";
+  }
+  buildCounterVolumeVolumeInfoPanelizationSummary--;
+  return o;
+}
+
+checkVolumeVolumeInfoPanelizationSummary(
+    api.VolumeVolumeInfoPanelizationSummary o) {
+  buildCounterVolumeVolumeInfoPanelizationSummary++;
+  if (buildCounterVolumeVolumeInfoPanelizationSummary < 3) {
+    unittest.expect(o.containsEpubBubbles, unittest.isTrue);
+    unittest.expect(o.containsImageBubbles, unittest.isTrue);
+    unittest.expect(o.epubBubbleVersion, unittest.equals('foo'));
+    unittest.expect(o.imageBubbleVersion, unittest.equals('foo'));
+  }
+  buildCounterVolumeVolumeInfoPanelizationSummary--;
+}
+
+core.int buildCounterVolumeVolumeInfo = 0;
+buildVolumeVolumeInfo() {
+  var o = new api.VolumeVolumeInfo();
+  buildCounterVolumeVolumeInfo++;
+  if (buildCounterVolumeVolumeInfo < 3) {
+    o.allowAnonLogging = true;
+    o.authors = buildUnnamed962();
+    o.averageRating = 42.0;
+    o.canonicalVolumeLink = "foo";
+    o.categories = buildUnnamed963();
+    o.contentVersion = "foo";
+    o.description = "foo";
+    o.dimensions = buildVolumeVolumeInfoDimensions();
+    o.imageLinks = buildVolumeVolumeInfoImageLinks();
+    o.industryIdentifiers = buildUnnamed964();
+    o.infoLink = "foo";
+    o.language = "foo";
+    o.mainCategory = "foo";
+    o.maturityRating = "foo";
+    o.pageCount = 42;
+    o.panelizationSummary = buildVolumeVolumeInfoPanelizationSummary();
+    o.previewLink = "foo";
+    o.printType = "foo";
+    o.printedPageCount = 42;
+    o.publishedDate = "foo";
+    o.publisher = "foo";
+    o.ratingsCount = 42;
+    o.readingModes = {
+      'list': [1, 2, 3],
+      'bool': true,
+      'string': 'foo'
+    };
+    o.samplePageCount = 42;
+    o.seriesInfo = buildVolumeseriesinfo();
+    o.subtitle = "foo";
+    o.title = "foo";
+  }
+  buildCounterVolumeVolumeInfo--;
+  return o;
+}
+
+checkVolumeVolumeInfo(api.VolumeVolumeInfo o) {
+  buildCounterVolumeVolumeInfo++;
+  if (buildCounterVolumeVolumeInfo < 3) {
+    unittest.expect(o.allowAnonLogging, unittest.isTrue);
+    checkUnnamed962(o.authors);
+    unittest.expect(o.averageRating, unittest.equals(42.0));
+    unittest.expect(o.canonicalVolumeLink, unittest.equals('foo'));
+    checkUnnamed963(o.categories);
+    unittest.expect(o.contentVersion, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    checkVolumeVolumeInfoDimensions(o.dimensions);
+    checkVolumeVolumeInfoImageLinks(o.imageLinks);
+    checkUnnamed964(o.industryIdentifiers);
+    unittest.expect(o.infoLink, unittest.equals('foo'));
+    unittest.expect(o.language, unittest.equals('foo'));
+    unittest.expect(o.mainCategory, unittest.equals('foo'));
+    unittest.expect(o.maturityRating, unittest.equals('foo'));
+    unittest.expect(o.pageCount, unittest.equals(42));
+    checkVolumeVolumeInfoPanelizationSummary(o.panelizationSummary);
+    unittest.expect(o.previewLink, unittest.equals('foo'));
+    unittest.expect(o.printType, unittest.equals('foo'));
+    unittest.expect(o.printedPageCount, unittest.equals(42));
+    unittest.expect(o.publishedDate, unittest.equals('foo'));
+    unittest.expect(o.publisher, unittest.equals('foo'));
+    unittest.expect(o.ratingsCount, unittest.equals(42));
+    var casted2 = (o.readingModes) as core.Map;
+    unittest.expect(casted2, unittest.hasLength(3));
+    unittest.expect(casted2["list"], unittest.equals([1, 2, 3]));
+    unittest.expect(casted2["bool"], unittest.equals(true));
+    unittest.expect(casted2["string"], unittest.equals('foo'));
+    unittest.expect(o.samplePageCount, unittest.equals(42));
+    checkVolumeseriesinfo(o.seriesInfo);
+    unittest.expect(o.subtitle, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterVolumeVolumeInfo--;
+}
+
+core.int buildCounterVolume = 0;
+buildVolume() {
+  var o = new api.Volume();
+  buildCounterVolume++;
+  if (buildCounterVolume < 3) {
+    o.accessInfo = buildVolumeAccessInfo();
+    o.etag = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.layerInfo = buildVolumeLayerInfo();
+    o.recommendedInfo = buildVolumeRecommendedInfo();
+    o.saleInfo = buildVolumeSaleInfo();
+    o.searchInfo = buildVolumeSearchInfo();
+    o.selfLink = "foo";
+    o.userInfo = buildVolumeUserInfo();
+    o.volumeInfo = buildVolumeVolumeInfo();
+  }
+  buildCounterVolume--;
+  return o;
+}
+
+checkVolume(api.Volume o) {
+  buildCounterVolume++;
+  if (buildCounterVolume < 3) {
+    checkVolumeAccessInfo(o.accessInfo);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkVolumeLayerInfo(o.layerInfo);
+    checkVolumeRecommendedInfo(o.recommendedInfo);
+    checkVolumeSaleInfo(o.saleInfo);
+    checkVolumeSearchInfo(o.searchInfo);
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    checkVolumeUserInfo(o.userInfo);
+    checkVolumeVolumeInfo(o.volumeInfo);
+  }
+  buildCounterVolume--;
+}
+
+buildUnnamed965() {
+  var o = new core.List<api.Volume>();
+  o.add(buildVolume());
+  o.add(buildVolume());
+  return o;
+}
+
+checkUnnamed965(core.List<api.Volume> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVolume(o[0]);
+  checkVolume(o[1]);
+}
+
+core.int buildCounterVolume2 = 0;
+buildVolume2() {
+  var o = new api.Volume2();
+  buildCounterVolume2++;
+  if (buildCounterVolume2 < 3) {
+    o.items = buildUnnamed965();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterVolume2--;
+  return o;
+}
+
+checkVolume2(api.Volume2 o) {
+  buildCounterVolume2++;
+  if (buildCounterVolume2 < 3) {
+    checkUnnamed965(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterVolume2--;
+}
+
+core.int buildCounterVolumeannotationContentRanges = 0;
+buildVolumeannotationContentRanges() {
+  var o = new api.VolumeannotationContentRanges();
+  buildCounterVolumeannotationContentRanges++;
+  if (buildCounterVolumeannotationContentRanges < 3) {
+    o.cfiRange = buildBooksAnnotationsRange();
+    o.contentVersion = "foo";
+    o.gbImageRange = buildBooksAnnotationsRange();
+    o.gbTextRange = buildBooksAnnotationsRange();
+  }
+  buildCounterVolumeannotationContentRanges--;
+  return o;
+}
+
+checkVolumeannotationContentRanges(api.VolumeannotationContentRanges o) {
+  buildCounterVolumeannotationContentRanges++;
+  if (buildCounterVolumeannotationContentRanges < 3) {
+    checkBooksAnnotationsRange(o.cfiRange);
+    unittest.expect(o.contentVersion, unittest.equals('foo'));
+    checkBooksAnnotationsRange(o.gbImageRange);
+    checkBooksAnnotationsRange(o.gbTextRange);
+  }
+  buildCounterVolumeannotationContentRanges--;
+}
+
+buildUnnamed966() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed966(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterVolumeannotation = 0;
+buildVolumeannotation() {
+  var o = new api.Volumeannotation();
+  buildCounterVolumeannotation++;
+  if (buildCounterVolumeannotation < 3) {
+    o.annotationDataId = "foo";
+    o.annotationDataLink = "foo";
+    o.annotationType = "foo";
+    o.contentRanges = buildVolumeannotationContentRanges();
+    o.data = "foo";
+    o.deleted = true;
+    o.id = "foo";
+    o.kind = "foo";
+    o.layerId = "foo";
+    o.pageIds = buildUnnamed966();
+    o.selectedText = "foo";
+    o.selfLink = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.volumeId = "foo";
+  }
+  buildCounterVolumeannotation--;
+  return o;
+}
+
+checkVolumeannotation(api.Volumeannotation o) {
+  buildCounterVolumeannotation++;
+  if (buildCounterVolumeannotation < 3) {
+    unittest.expect(o.annotationDataId, unittest.equals('foo'));
+    unittest.expect(o.annotationDataLink, unittest.equals('foo'));
+    unittest.expect(o.annotationType, unittest.equals('foo'));
+    checkVolumeannotationContentRanges(o.contentRanges);
+    unittest.expect(o.data, unittest.equals('foo'));
+    unittest.expect(o.deleted, unittest.isTrue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.layerId, unittest.equals('foo'));
+    checkUnnamed966(o.pageIds);
+    unittest.expect(o.selectedText, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.volumeId, unittest.equals('foo'));
+  }
+  buildCounterVolumeannotation--;
+}
+
+buildUnnamed967() {
+  var o = new core.List<api.Volumeannotation>();
+  o.add(buildVolumeannotation());
+  o.add(buildVolumeannotation());
+  return o;
+}
+
+checkUnnamed967(core.List<api.Volumeannotation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVolumeannotation(o[0]);
+  checkVolumeannotation(o[1]);
+}
+
+core.int buildCounterVolumeannotations = 0;
+buildVolumeannotations() {
+  var o = new api.Volumeannotations();
+  buildCounterVolumeannotations++;
+  if (buildCounterVolumeannotations < 3) {
+    o.items = buildUnnamed967();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.totalItems = 42;
+    o.version = "foo";
+  }
+  buildCounterVolumeannotations--;
+  return o;
+}
+
+checkVolumeannotations(api.Volumeannotations o) {
+  buildCounterVolumeannotations++;
+  if (buildCounterVolumeannotations < 3) {
+    checkUnnamed967(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals(42));
+    unittest.expect(o.version, unittest.equals('foo'));
+  }
+  buildCounterVolumeannotations--;
+}
+
+buildUnnamed968() {
+  var o = new core.List<api.Volume>();
+  o.add(buildVolume());
+  o.add(buildVolume());
+  return o;
+}
+
+checkUnnamed968(core.List<api.Volume> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVolume(o[0]);
+  checkVolume(o[1]);
+}
+
+core.int buildCounterVolumes = 0;
+buildVolumes() {
+  var o = new api.Volumes();
+  buildCounterVolumes++;
+  if (buildCounterVolumes < 3) {
+    o.items = buildUnnamed968();
+    o.kind = "foo";
+    o.totalItems = 42;
+  }
+  buildCounterVolumes--;
+  return o;
+}
+
+checkVolumes(api.Volumes o) {
+  buildCounterVolumes++;
+  if (buildCounterVolumes < 3) {
+    checkUnnamed968(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterVolumes--;
+}
+
+core.int buildCounterVolumeseriesinfoVolumeSeriesIssue = 0;
+buildVolumeseriesinfoVolumeSeriesIssue() {
+  var o = new api.VolumeseriesinfoVolumeSeriesIssue();
+  buildCounterVolumeseriesinfoVolumeSeriesIssue++;
+  if (buildCounterVolumeseriesinfoVolumeSeriesIssue < 3) {
+    o.issueDisplayNumber = "foo";
+    o.issueOrderNumber = 42;
+  }
+  buildCounterVolumeseriesinfoVolumeSeriesIssue--;
+  return o;
+}
+
+checkVolumeseriesinfoVolumeSeriesIssue(
+    api.VolumeseriesinfoVolumeSeriesIssue o) {
+  buildCounterVolumeseriesinfoVolumeSeriesIssue++;
+  if (buildCounterVolumeseriesinfoVolumeSeriesIssue < 3) {
+    unittest.expect(o.issueDisplayNumber, unittest.equals('foo'));
+    unittest.expect(o.issueOrderNumber, unittest.equals(42));
+  }
+  buildCounterVolumeseriesinfoVolumeSeriesIssue--;
+}
+
+buildUnnamed969() {
+  var o = new core.List<api.VolumeseriesinfoVolumeSeriesIssue>();
+  o.add(buildVolumeseriesinfoVolumeSeriesIssue());
+  o.add(buildVolumeseriesinfoVolumeSeriesIssue());
+  return o;
+}
+
+checkUnnamed969(core.List<api.VolumeseriesinfoVolumeSeriesIssue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVolumeseriesinfoVolumeSeriesIssue(o[0]);
+  checkVolumeseriesinfoVolumeSeriesIssue(o[1]);
+}
+
+core.int buildCounterVolumeseriesinfoVolumeSeries = 0;
+buildVolumeseriesinfoVolumeSeries() {
+  var o = new api.VolumeseriesinfoVolumeSeries();
+  buildCounterVolumeseriesinfoVolumeSeries++;
+  if (buildCounterVolumeseriesinfoVolumeSeries < 3) {
+    o.issue = buildUnnamed969();
+    o.orderNumber = 42;
+    o.seriesBookType = "foo";
+    o.seriesId = "foo";
+  }
+  buildCounterVolumeseriesinfoVolumeSeries--;
+  return o;
+}
+
+checkVolumeseriesinfoVolumeSeries(api.VolumeseriesinfoVolumeSeries o) {
+  buildCounterVolumeseriesinfoVolumeSeries++;
+  if (buildCounterVolumeseriesinfoVolumeSeries < 3) {
+    checkUnnamed969(o.issue);
+    unittest.expect(o.orderNumber, unittest.equals(42));
+    unittest.expect(o.seriesBookType, unittest.equals('foo'));
+    unittest.expect(o.seriesId, unittest.equals('foo'));
+  }
+  buildCounterVolumeseriesinfoVolumeSeries--;
+}
+
+buildUnnamed970() {
+  var o = new core.List<api.VolumeseriesinfoVolumeSeries>();
+  o.add(buildVolumeseriesinfoVolumeSeries());
+  o.add(buildVolumeseriesinfoVolumeSeries());
+  return o;
+}
+
+checkUnnamed970(core.List<api.VolumeseriesinfoVolumeSeries> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVolumeseriesinfoVolumeSeries(o[0]);
+  checkVolumeseriesinfoVolumeSeries(o[1]);
+}
+
+core.int buildCounterVolumeseriesinfo = 0;
+buildVolumeseriesinfo() {
+  var o = new api.Volumeseriesinfo();
+  buildCounterVolumeseriesinfo++;
+  if (buildCounterVolumeseriesinfo < 3) {
+    o.bookDisplayNumber = "foo";
+    o.kind = "foo";
+    o.shortSeriesBookTitle = "foo";
+    o.volumeSeries = buildUnnamed970();
+  }
+  buildCounterVolumeseriesinfo--;
+  return o;
+}
+
+checkVolumeseriesinfo(api.Volumeseriesinfo o) {
+  buildCounterVolumeseriesinfo++;
+  if (buildCounterVolumeseriesinfo < 3) {
+    unittest.expect(o.bookDisplayNumber, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.shortSeriesBookTitle, unittest.equals('foo'));
+    checkUnnamed970(o.volumeSeries);
+  }
+  buildCounterVolumeseriesinfo--;
+}
+
+buildUnnamed971() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed971(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed972() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed972(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed973() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed973(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed974() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed974(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed975() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed975(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed976() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed976(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed977() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed977(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed978() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed978(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed979() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed979(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed980() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed980(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed981() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed981(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed982() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed982(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-AnnotationClientVersionRanges", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAnnotationClientVersionRanges();
+      var od = new api.AnnotationClientVersionRanges.fromJson(o.toJson());
+      checkAnnotationClientVersionRanges(od);
+    });
+  });
+
+  unittest.group("obj-schema-AnnotationCurrentVersionRanges", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAnnotationCurrentVersionRanges();
+      var od = new api.AnnotationCurrentVersionRanges.fromJson(o.toJson());
+      checkAnnotationCurrentVersionRanges(od);
+    });
+  });
+
+  unittest.group("obj-schema-AnnotationLayerSummary", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAnnotationLayerSummary();
+      var od = new api.AnnotationLayerSummary.fromJson(o.toJson());
+      checkAnnotationLayerSummary(od);
+    });
+  });
+
+  unittest.group("obj-schema-Annotation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAnnotation();
+      var od = new api.Annotation.fromJson(o.toJson());
+      checkAnnotation(od);
+    });
+  });
+
+  unittest.group("obj-schema-Annotationdata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAnnotationdata();
+      var od = new api.Annotationdata.fromJson(o.toJson());
+      checkAnnotationdata(od);
+    });
+  });
+
+  unittest.group("obj-schema-Annotations", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAnnotations();
+      var od = new api.Annotations.fromJson(o.toJson());
+      checkAnnotations(od);
+    });
+  });
+
+  unittest.group("obj-schema-AnnotationsSummaryLayers", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAnnotationsSummaryLayers();
+      var od = new api.AnnotationsSummaryLayers.fromJson(o.toJson());
+      checkAnnotationsSummaryLayers(od);
+    });
+  });
+
+  unittest.group("obj-schema-AnnotationsSummary", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAnnotationsSummary();
+      var od = new api.AnnotationsSummary.fromJson(o.toJson());
+      checkAnnotationsSummary(od);
+    });
+  });
+
+  unittest.group("obj-schema-Annotationsdata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAnnotationsdata();
+      var od = new api.Annotationsdata.fromJson(o.toJson());
+      checkAnnotationsdata(od);
+    });
+  });
+
+  unittest.group("obj-schema-BooksAnnotationsRange", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBooksAnnotationsRange();
+      var od = new api.BooksAnnotationsRange.fromJson(o.toJson());
+      checkBooksAnnotationsRange(od);
+    });
+  });
+
+  unittest.group("obj-schema-BooksCloudloadingResource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBooksCloudloadingResource();
+      var od = new api.BooksCloudloadingResource.fromJson(o.toJson());
+      checkBooksCloudloadingResource(od);
+    });
+  });
+
+  unittest.group("obj-schema-BooksVolumesRecommendedRateResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBooksVolumesRecommendedRateResponse();
+      var od = new api.BooksVolumesRecommendedRateResponse.fromJson(o.toJson());
+      checkBooksVolumesRecommendedRateResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Bookshelf", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBookshelf();
+      var od = new api.Bookshelf.fromJson(o.toJson());
+      checkBookshelf(od);
+    });
+  });
+
+  unittest.group("obj-schema-Bookshelves", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBookshelves();
+      var od = new api.Bookshelves.fromJson(o.toJson());
+      checkBookshelves(od);
+    });
+  });
+
+  unittest.group("obj-schema-CategoryItems", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCategoryItems();
+      var od = new api.CategoryItems.fromJson(o.toJson());
+      checkCategoryItems(od);
+    });
+  });
+
+  unittest.group("obj-schema-Category", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCategory();
+      var od = new api.Category.fromJson(o.toJson());
+      checkCategory(od);
+    });
+  });
+
+  unittest.group("obj-schema-ConcurrentAccessRestriction", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildConcurrentAccessRestriction();
+      var od = new api.ConcurrentAccessRestriction.fromJson(o.toJson());
+      checkConcurrentAccessRestriction(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataCommon", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataCommon();
+      var od = new api.DictlayerdataCommon.fromJson(o.toJson());
+      checkDictlayerdataCommon(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataDictSource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDictSource();
+      var od = new api.DictlayerdataDictSource.fromJson(o.toJson());
+      checkDictlayerdataDictSource(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataDictWordsDerivativesSource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDictWordsDerivativesSource();
+      var od =
+          new api.DictlayerdataDictWordsDerivativesSource.fromJson(o.toJson());
+      checkDictlayerdataDictWordsDerivativesSource(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataDictWordsDerivatives", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDictWordsDerivatives();
+      var od = new api.DictlayerdataDictWordsDerivatives.fromJson(o.toJson());
+      checkDictlayerdataDictWordsDerivatives(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataDictWordsExamplesSource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDictWordsExamplesSource();
+      var od =
+          new api.DictlayerdataDictWordsExamplesSource.fromJson(o.toJson());
+      checkDictlayerdataDictWordsExamplesSource(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataDictWordsExamples", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDictWordsExamples();
+      var od = new api.DictlayerdataDictWordsExamples.fromJson(o.toJson());
+      checkDictlayerdataDictWordsExamples(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataDictWordsSensesConjugations", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDictWordsSensesConjugations();
+      var od =
+          new api.DictlayerdataDictWordsSensesConjugations.fromJson(o.toJson());
+      checkDictlayerdataDictWordsSensesConjugations(od);
+    });
+  });
+
+  unittest.group(
+      "obj-schema-DictlayerdataDictWordsSensesDefinitionsExamplesSource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDictWordsSensesDefinitionsExamplesSource();
+      var od = new api
+              .DictlayerdataDictWordsSensesDefinitionsExamplesSource.fromJson(
+          o.toJson());
+      checkDictlayerdataDictWordsSensesDefinitionsExamplesSource(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataDictWordsSensesDefinitionsExamples",
+      () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDictWordsSensesDefinitionsExamples();
+      var od = new api.DictlayerdataDictWordsSensesDefinitionsExamples.fromJson(
+          o.toJson());
+      checkDictlayerdataDictWordsSensesDefinitionsExamples(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataDictWordsSensesDefinitions", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDictWordsSensesDefinitions();
+      var od =
+          new api.DictlayerdataDictWordsSensesDefinitions.fromJson(o.toJson());
+      checkDictlayerdataDictWordsSensesDefinitions(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataDictWordsSensesSource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDictWordsSensesSource();
+      var od = new api.DictlayerdataDictWordsSensesSource.fromJson(o.toJson());
+      checkDictlayerdataDictWordsSensesSource(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataDictWordsSensesSynonymsSource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDictWordsSensesSynonymsSource();
+      var od = new api.DictlayerdataDictWordsSensesSynonymsSource.fromJson(
+          o.toJson());
+      checkDictlayerdataDictWordsSensesSynonymsSource(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataDictWordsSensesSynonyms", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDictWordsSensesSynonyms();
+      var od =
+          new api.DictlayerdataDictWordsSensesSynonyms.fromJson(o.toJson());
+      checkDictlayerdataDictWordsSensesSynonyms(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataDictWordsSenses", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDictWordsSenses();
+      var od = new api.DictlayerdataDictWordsSenses.fromJson(o.toJson());
+      checkDictlayerdataDictWordsSenses(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataDictWordsSource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDictWordsSource();
+      var od = new api.DictlayerdataDictWordsSource.fromJson(o.toJson());
+      checkDictlayerdataDictWordsSource(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataDictWords", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDictWords();
+      var od = new api.DictlayerdataDictWords.fromJson(o.toJson());
+      checkDictlayerdataDictWords(od);
+    });
+  });
+
+  unittest.group("obj-schema-DictlayerdataDict", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdataDict();
+      var od = new api.DictlayerdataDict.fromJson(o.toJson());
+      checkDictlayerdataDict(od);
+    });
+  });
+
+  unittest.group("obj-schema-Dictlayerdata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDictlayerdata();
+      var od = new api.Dictlayerdata.fromJson(o.toJson());
+      checkDictlayerdata(od);
+    });
+  });
+
+  unittest.group(
+      "obj-schema-DiscoveryclustersClustersBannerWithContentContainer", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDiscoveryclustersClustersBannerWithContentContainer();
+      var od =
+          new api.DiscoveryclustersClustersBannerWithContentContainer.fromJson(
+              o.toJson());
+      checkDiscoveryclustersClustersBannerWithContentContainer(od);
+    });
+  });
+
+  unittest.group("obj-schema-DiscoveryclustersClusters", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDiscoveryclustersClusters();
+      var od = new api.DiscoveryclustersClusters.fromJson(o.toJson());
+      checkDiscoveryclustersClusters(od);
+    });
+  });
+
+  unittest.group("obj-schema-Discoveryclusters", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDiscoveryclusters();
+      var od = new api.Discoveryclusters.fromJson(o.toJson());
+      checkDiscoveryclusters(od);
+    });
+  });
+
+  unittest.group("obj-schema-DownloadAccessRestriction", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDownloadAccessRestriction();
+      var od = new api.DownloadAccessRestriction.fromJson(o.toJson());
+      checkDownloadAccessRestriction(od);
+    });
+  });
+
+  unittest.group("obj-schema-DownloadAccesses", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDownloadAccesses();
+      var od = new api.DownloadAccesses.fromJson(o.toJson());
+      checkDownloadAccesses(od);
+    });
+  });
+
+  unittest.group("obj-schema-GeolayerdataCommon", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGeolayerdataCommon();
+      var od = new api.GeolayerdataCommon.fromJson(o.toJson());
+      checkGeolayerdataCommon(od);
+    });
+  });
+
+  unittest.group("obj-schema-GeolayerdataGeoBoundary", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGeolayerdataGeoBoundary();
+      var od = new api.GeolayerdataGeoBoundary.fromJson(o.toJson());
+      checkGeolayerdataGeoBoundary(od);
+    });
+  });
+
+  unittest.group("obj-schema-GeolayerdataGeoViewportHi", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGeolayerdataGeoViewportHi();
+      var od = new api.GeolayerdataGeoViewportHi.fromJson(o.toJson());
+      checkGeolayerdataGeoViewportHi(od);
+    });
+  });
+
+  unittest.group("obj-schema-GeolayerdataGeoViewportLo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGeolayerdataGeoViewportLo();
+      var od = new api.GeolayerdataGeoViewportLo.fromJson(o.toJson());
+      checkGeolayerdataGeoViewportLo(od);
+    });
+  });
+
+  unittest.group("obj-schema-GeolayerdataGeoViewport", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGeolayerdataGeoViewport();
+      var od = new api.GeolayerdataGeoViewport.fromJson(o.toJson());
+      checkGeolayerdataGeoViewport(od);
+    });
+  });
+
+  unittest.group("obj-schema-GeolayerdataGeo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGeolayerdataGeo();
+      var od = new api.GeolayerdataGeo.fromJson(o.toJson());
+      checkGeolayerdataGeo(od);
+    });
+  });
+
+  unittest.group("obj-schema-Geolayerdata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGeolayerdata();
+      var od = new api.Geolayerdata.fromJson(o.toJson());
+      checkGeolayerdata(od);
+    });
+  });
+
+  unittest.group("obj-schema-Layersummaries", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLayersummaries();
+      var od = new api.Layersummaries.fromJson(o.toJson());
+      checkLayersummaries(od);
+    });
+  });
+
+  unittest.group("obj-schema-Layersummary", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLayersummary();
+      var od = new api.Layersummary.fromJson(o.toJson());
+      checkLayersummary(od);
+    });
+  });
+
+  unittest.group("obj-schema-MetadataItems", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMetadataItems();
+      var od = new api.MetadataItems.fromJson(o.toJson());
+      checkMetadataItems(od);
+    });
+  });
+
+  unittest.group("obj-schema-Metadata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMetadata();
+      var od = new api.Metadata.fromJson(o.toJson());
+      checkMetadata(od);
+    });
+  });
+
+  unittest.group("obj-schema-Notification", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildNotification();
+      var od = new api.Notification.fromJson(o.toJson());
+      checkNotification(od);
+    });
+  });
+
+  unittest.group("obj-schema-OffersItemsItems", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOffersItemsItems();
+      var od = new api.OffersItemsItems.fromJson(o.toJson());
+      checkOffersItemsItems(od);
+    });
+  });
+
+  unittest.group("obj-schema-OffersItems", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOffersItems();
+      var od = new api.OffersItems.fromJson(o.toJson());
+      checkOffersItems(od);
+    });
+  });
+
+  unittest.group("obj-schema-Offers", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOffers();
+      var od = new api.Offers.fromJson(o.toJson());
+      checkOffers(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReadingPosition", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReadingPosition();
+      var od = new api.ReadingPosition.fromJson(o.toJson());
+      checkReadingPosition(od);
+    });
+  });
+
+  unittest.group("obj-schema-RequestAccess", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRequestAccess();
+      var od = new api.RequestAccess.fromJson(o.toJson());
+      checkRequestAccess(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReviewAuthor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReviewAuthor();
+      var od = new api.ReviewAuthor.fromJson(o.toJson());
+      checkReviewAuthor(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReviewSource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReviewSource();
+      var od = new api.ReviewSource.fromJson(o.toJson());
+      checkReviewSource(od);
+    });
+  });
+
+  unittest.group("obj-schema-Review", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReview();
+      var od = new api.Review.fromJson(o.toJson());
+      checkReview(od);
+    });
+  });
+
+  unittest.group("obj-schema-SeriesSeries", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSeriesSeries();
+      var od = new api.SeriesSeries.fromJson(o.toJson());
+      checkSeriesSeries(od);
+    });
+  });
+
+  unittest.group("obj-schema-Series", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSeries();
+      var od = new api.Series.fromJson(o.toJson());
+      checkSeries(od);
+    });
+  });
+
+  unittest.group("obj-schema-Seriesmembership", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSeriesmembership();
+      var od = new api.Seriesmembership.fromJson(o.toJson());
+      checkSeriesmembership(od);
+    });
+  });
+
+  unittest.group("obj-schema-UsersettingsNotesExport", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUsersettingsNotesExport();
+      var od = new api.UsersettingsNotesExport.fromJson(o.toJson());
+      checkUsersettingsNotesExport(od);
+    });
+  });
+
+  unittest.group("obj-schema-UsersettingsNotificationMoreFromAuthors", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUsersettingsNotificationMoreFromAuthors();
+      var od =
+          new api.UsersettingsNotificationMoreFromAuthors.fromJson(o.toJson());
+      checkUsersettingsNotificationMoreFromAuthors(od);
+    });
+  });
+
+  unittest.group("obj-schema-UsersettingsNotificationMoreFromSeries", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUsersettingsNotificationMoreFromSeries();
+      var od =
+          new api.UsersettingsNotificationMoreFromSeries.fromJson(o.toJson());
+      checkUsersettingsNotificationMoreFromSeries(od);
+    });
+  });
+
+  unittest.group("obj-schema-UsersettingsNotificationRewardExpirations", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUsersettingsNotificationRewardExpirations();
+      var od = new api.UsersettingsNotificationRewardExpirations.fromJson(
+          o.toJson());
+      checkUsersettingsNotificationRewardExpirations(od);
+    });
+  });
+
+  unittest.group("obj-schema-UsersettingsNotification", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUsersettingsNotification();
+      var od = new api.UsersettingsNotification.fromJson(o.toJson());
+      checkUsersettingsNotification(od);
+    });
+  });
+
+  unittest.group("obj-schema-Usersettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUsersettings();
+      var od = new api.Usersettings.fromJson(o.toJson());
+      checkUsersettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeAccessInfoEpub", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeAccessInfoEpub();
+      var od = new api.VolumeAccessInfoEpub.fromJson(o.toJson());
+      checkVolumeAccessInfoEpub(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeAccessInfoPdf", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeAccessInfoPdf();
+      var od = new api.VolumeAccessInfoPdf.fromJson(o.toJson());
+      checkVolumeAccessInfoPdf(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeAccessInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeAccessInfo();
+      var od = new api.VolumeAccessInfo.fromJson(o.toJson());
+      checkVolumeAccessInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeLayerInfoLayers", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeLayerInfoLayers();
+      var od = new api.VolumeLayerInfoLayers.fromJson(o.toJson());
+      checkVolumeLayerInfoLayers(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeLayerInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeLayerInfo();
+      var od = new api.VolumeLayerInfo.fromJson(o.toJson());
+      checkVolumeLayerInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeRecommendedInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeRecommendedInfo();
+      var od = new api.VolumeRecommendedInfo.fromJson(o.toJson());
+      checkVolumeRecommendedInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeSaleInfoListPrice", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeSaleInfoListPrice();
+      var od = new api.VolumeSaleInfoListPrice.fromJson(o.toJson());
+      checkVolumeSaleInfoListPrice(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeSaleInfoOffersListPrice", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeSaleInfoOffersListPrice();
+      var od = new api.VolumeSaleInfoOffersListPrice.fromJson(o.toJson());
+      checkVolumeSaleInfoOffersListPrice(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeSaleInfoOffersRentalDuration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeSaleInfoOffersRentalDuration();
+      var od = new api.VolumeSaleInfoOffersRentalDuration.fromJson(o.toJson());
+      checkVolumeSaleInfoOffersRentalDuration(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeSaleInfoOffersRetailPrice", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeSaleInfoOffersRetailPrice();
+      var od = new api.VolumeSaleInfoOffersRetailPrice.fromJson(o.toJson());
+      checkVolumeSaleInfoOffersRetailPrice(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeSaleInfoOffers", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeSaleInfoOffers();
+      var od = new api.VolumeSaleInfoOffers.fromJson(o.toJson());
+      checkVolumeSaleInfoOffers(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeSaleInfoRetailPrice", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeSaleInfoRetailPrice();
+      var od = new api.VolumeSaleInfoRetailPrice.fromJson(o.toJson());
+      checkVolumeSaleInfoRetailPrice(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeSaleInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeSaleInfo();
+      var od = new api.VolumeSaleInfo.fromJson(o.toJson());
+      checkVolumeSaleInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeSearchInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeSearchInfo();
+      var od = new api.VolumeSearchInfo.fromJson(o.toJson());
+      checkVolumeSearchInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeUserInfoCopy", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeUserInfoCopy();
+      var od = new api.VolumeUserInfoCopy.fromJson(o.toJson());
+      checkVolumeUserInfoCopy(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeUserInfoFamilySharing", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeUserInfoFamilySharing();
+      var od = new api.VolumeUserInfoFamilySharing.fromJson(o.toJson());
+      checkVolumeUserInfoFamilySharing(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeUserInfoRentalPeriod", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeUserInfoRentalPeriod();
+      var od = new api.VolumeUserInfoRentalPeriod.fromJson(o.toJson());
+      checkVolumeUserInfoRentalPeriod(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeUserInfoUserUploadedVolumeInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeUserInfoUserUploadedVolumeInfo();
+      var od =
+          new api.VolumeUserInfoUserUploadedVolumeInfo.fromJson(o.toJson());
+      checkVolumeUserInfoUserUploadedVolumeInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeUserInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeUserInfo();
+      var od = new api.VolumeUserInfo.fromJson(o.toJson());
+      checkVolumeUserInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeVolumeInfoDimensions", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeVolumeInfoDimensions();
+      var od = new api.VolumeVolumeInfoDimensions.fromJson(o.toJson());
+      checkVolumeVolumeInfoDimensions(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeVolumeInfoImageLinks", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeVolumeInfoImageLinks();
+      var od = new api.VolumeVolumeInfoImageLinks.fromJson(o.toJson());
+      checkVolumeVolumeInfoImageLinks(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeVolumeInfoIndustryIdentifiers", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeVolumeInfoIndustryIdentifiers();
+      var od = new api.VolumeVolumeInfoIndustryIdentifiers.fromJson(o.toJson());
+      checkVolumeVolumeInfoIndustryIdentifiers(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeVolumeInfoPanelizationSummary", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeVolumeInfoPanelizationSummary();
+      var od = new api.VolumeVolumeInfoPanelizationSummary.fromJson(o.toJson());
+      checkVolumeVolumeInfoPanelizationSummary(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeVolumeInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeVolumeInfo();
+      var od = new api.VolumeVolumeInfo.fromJson(o.toJson());
+      checkVolumeVolumeInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-Volume", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolume();
+      var od = new api.Volume.fromJson(o.toJson());
+      checkVolume(od);
+    });
+  });
+
+  unittest.group("obj-schema-Volume2", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolume2();
+      var od = new api.Volume2.fromJson(o.toJson());
+      checkVolume2(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeannotationContentRanges", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeannotationContentRanges();
+      var od = new api.VolumeannotationContentRanges.fromJson(o.toJson());
+      checkVolumeannotationContentRanges(od);
+    });
+  });
+
+  unittest.group("obj-schema-Volumeannotation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeannotation();
+      var od = new api.Volumeannotation.fromJson(o.toJson());
+      checkVolumeannotation(od);
+    });
+  });
+
+  unittest.group("obj-schema-Volumeannotations", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeannotations();
+      var od = new api.Volumeannotations.fromJson(o.toJson());
+      checkVolumeannotations(od);
+    });
+  });
+
+  unittest.group("obj-schema-Volumes", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumes();
+      var od = new api.Volumes.fromJson(o.toJson());
+      checkVolumes(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeseriesinfoVolumeSeriesIssue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeseriesinfoVolumeSeriesIssue();
+      var od = new api.VolumeseriesinfoVolumeSeriesIssue.fromJson(o.toJson());
+      checkVolumeseriesinfoVolumeSeriesIssue(od);
+    });
+  });
+
+  unittest.group("obj-schema-VolumeseriesinfoVolumeSeries", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeseriesinfoVolumeSeries();
+      var od = new api.VolumeseriesinfoVolumeSeries.fromJson(o.toJson());
+      checkVolumeseriesinfoVolumeSeries(od);
+    });
+  });
+
+  unittest.group("obj-schema-Volumeseriesinfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVolumeseriesinfo();
+      var od = new api.Volumeseriesinfo.fromJson(o.toJson());
+      checkVolumeseriesinfo(od);
+    });
+  });
+
+  unittest.group("resource-BookshelvesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.BookshelvesResourceApi res = new api.BooksApi(mock).bookshelves;
+      var arg_userId = "foo";
+      var arg_shelf = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("users/"));
+        pathOffset += 6;
+        index = path.indexOf("/bookshelves/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/bookshelves/"));
+        pathOffset += 13;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_shelf"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBookshelf());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, arg_shelf, source: arg_source, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Bookshelf response) {
+        checkBookshelf(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BookshelvesResourceApi res = new api.BooksApi(mock).bookshelves;
+      var arg_userId = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("users/"));
+        pathOffset += 6;
+        index = path.indexOf("/bookshelves", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/bookshelves"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBookshelves());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId, source: arg_source, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Bookshelves response) {
+        checkBookshelves(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BookshelvesVolumesResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BookshelvesVolumesResourceApi res =
+          new api.BooksApi(mock).bookshelves.volumes;
+      var arg_userId = "foo";
+      var arg_shelf = "foo";
+      var arg_maxResults = 42;
+      var arg_showPreorders = true;
+      var arg_source = "foo";
+      var arg_startIndex = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("users/"));
+        pathOffset += 6;
+        index = path.indexOf("/bookshelves/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/bookshelves/"));
+        pathOffset += 13;
+        index = path.indexOf("/volumes", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_shelf"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/volumes"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["showPreorders"].first,
+            unittest.equals("$arg_showPreorders"));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(core.int.parse(queryMap["startIndex"].first),
+            unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVolumes());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId, arg_shelf,
+              maxResults: arg_maxResults,
+              showPreorders: arg_showPreorders,
+              source: arg_source,
+              startIndex: arg_startIndex,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Volumes response) {
+        checkVolumes(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CloudloadingResourceApi", () {
+    unittest.test("method--addBook", () {
+      var mock = new HttpServerMock();
+      api.CloudloadingResourceApi res = new api.BooksApi(mock).cloudloading;
+      var arg_driveDocumentId = "foo";
+      var arg_mimeType = "foo";
+      var arg_name = "foo";
+      var arg_uploadClientToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("cloudloading/addBook"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["drive_document_id"].first,
+            unittest.equals(arg_driveDocumentId));
+        unittest.expect(
+            queryMap["mime_type"].first, unittest.equals(arg_mimeType));
+        unittest.expect(queryMap["name"].first, unittest.equals(arg_name));
+        unittest.expect(queryMap["upload_client_token"].first,
+            unittest.equals(arg_uploadClientToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBooksCloudloadingResource());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .addBook(
+              driveDocumentId: arg_driveDocumentId,
+              mimeType: arg_mimeType,
+              name: arg_name,
+              uploadClientToken: arg_uploadClientToken,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.BooksCloudloadingResource response) {
+        checkBooksCloudloadingResource(response);
+      })));
+    });
+
+    unittest.test("method--deleteBook", () {
+      var mock = new HttpServerMock();
+      api.CloudloadingResourceApi res = new api.BooksApi(mock).cloudloading;
+      var arg_volumeId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 23),
+            unittest.equals("cloudloading/deleteBook"));
+        pathOffset += 23;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["volumeId"].first, unittest.equals(arg_volumeId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .deleteBook(arg_volumeId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--updateBook", () {
+      var mock = new HttpServerMock();
+      api.CloudloadingResourceApi res = new api.BooksApi(mock).cloudloading;
+      var arg_request = buildBooksCloudloadingResource();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BooksCloudloadingResource.fromJson(json);
+        checkBooksCloudloadingResource(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 23),
+            unittest.equals("cloudloading/updateBook"));
+        pathOffset += 23;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBooksCloudloadingResource());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.updateBook(arg_request, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.BooksCloudloadingResource response) {
+        checkBooksCloudloadingResource(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-DictionaryResourceApi", () {
+    unittest.test("method--listOfflineMetadata", () {
+      var mock = new HttpServerMock();
+      api.DictionaryResourceApi res = new api.BooksApi(mock).dictionary;
+      var arg_cpksver = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 30),
+            unittest.equals("dictionary/listOfflineMetadata"));
+        pathOffset += 30;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["cpksver"].first, unittest.equals(arg_cpksver));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMetadata());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .listOfflineMetadata(arg_cpksver, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Metadata response) {
+        checkMetadata(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-LayersResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.LayersResourceApi res = new api.BooksApi(mock).layers;
+      var arg_volumeId = "foo";
+      var arg_summaryId = "foo";
+      var arg_contentVersion = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("volumes/"));
+        pathOffset += 8;
+        index = path.indexOf("/layersummary/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_volumeId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/layersummary/"));
+        pathOffset += 14;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_summaryId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["contentVersion"].first,
+            unittest.equals(arg_contentVersion));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLayersummary());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_volumeId, arg_summaryId,
+              contentVersion: arg_contentVersion,
+              source: arg_source,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Layersummary response) {
+        checkLayersummary(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.LayersResourceApi res = new api.BooksApi(mock).layers;
+      var arg_volumeId = "foo";
+      var arg_contentVersion = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("volumes/"));
+        pathOffset += 8;
+        index = path.indexOf("/layersummary", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_volumeId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/layersummary"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["contentVersion"].first,
+            unittest.equals(arg_contentVersion));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLayersummaries());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_volumeId,
+              contentVersion: arg_contentVersion,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              source: arg_source,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Layersummaries response) {
+        checkLayersummaries(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-LayersAnnotationDataResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.LayersAnnotationDataResourceApi res =
+          new api.BooksApi(mock).layers.annotationData;
+      var arg_volumeId = "foo";
+      var arg_layerId = "foo";
+      var arg_annotationDataId = "foo";
+      var arg_contentVersion = "foo";
+      var arg_allowWebDefinitions = true;
+      var arg_h = 42;
+      var arg_locale = "foo";
+      var arg_scale = 42;
+      var arg_source = "foo";
+      var arg_w = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("volumes/"));
+        pathOffset += 8;
+        index = path.indexOf("/layers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_volumeId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/layers/"));
+        pathOffset += 8;
+        index = path.indexOf("/data/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_layerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/data/"));
+        pathOffset += 6;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_annotationDataId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["contentVersion"].first,
+            unittest.equals(arg_contentVersion));
+        unittest.expect(queryMap["allowWebDefinitions"].first,
+            unittest.equals("$arg_allowWebDefinitions"));
+        unittest.expect(
+            core.int.parse(queryMap["h"].first), unittest.equals(arg_h));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(core.int.parse(queryMap["scale"].first),
+            unittest.equals(arg_scale));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(
+            core.int.parse(queryMap["w"].first), unittest.equals(arg_w));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAnnotationdata());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_volumeId, arg_layerId, arg_annotationDataId,
+              arg_contentVersion,
+              allowWebDefinitions: arg_allowWebDefinitions,
+              h: arg_h,
+              locale: arg_locale,
+              scale: arg_scale,
+              source: arg_source,
+              w: arg_w,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Annotationdata response) {
+        checkAnnotationdata(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.LayersAnnotationDataResourceApi res =
+          new api.BooksApi(mock).layers.annotationData;
+      var arg_volumeId = "foo";
+      var arg_layerId = "foo";
+      var arg_contentVersion = "foo";
+      var arg_annotationDataId = buildUnnamed971();
+      var arg_h = 42;
+      var arg_locale = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_scale = 42;
+      var arg_source = "foo";
+      var arg_updatedMax = "foo";
+      var arg_updatedMin = "foo";
+      var arg_w = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("volumes/"));
+        pathOffset += 8;
+        index = path.indexOf("/layers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_volumeId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/layers/"));
+        pathOffset += 8;
+        index = path.indexOf("/data", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_layerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/data"));
+        pathOffset += 5;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["contentVersion"].first,
+            unittest.equals(arg_contentVersion));
+        unittest.expect(queryMap["annotationDataId"],
+            unittest.equals(arg_annotationDataId));
+        unittest.expect(
+            core.int.parse(queryMap["h"].first), unittest.equals(arg_h));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["scale"].first),
+            unittest.equals(arg_scale));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(
+            queryMap["updatedMax"].first, unittest.equals(arg_updatedMax));
+        unittest.expect(
+            queryMap["updatedMin"].first, unittest.equals(arg_updatedMin));
+        unittest.expect(
+            core.int.parse(queryMap["w"].first), unittest.equals(arg_w));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAnnotationsdata());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_volumeId, arg_layerId, arg_contentVersion,
+              annotationDataId: arg_annotationDataId,
+              h: arg_h,
+              locale: arg_locale,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              scale: arg_scale,
+              source: arg_source,
+              updatedMax: arg_updatedMax,
+              updatedMin: arg_updatedMin,
+              w: arg_w,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Annotationsdata response) {
+        checkAnnotationsdata(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-LayersVolumeAnnotationsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.LayersVolumeAnnotationsResourceApi res =
+          new api.BooksApi(mock).layers.volumeAnnotations;
+      var arg_volumeId = "foo";
+      var arg_layerId = "foo";
+      var arg_annotationId = "foo";
+      var arg_locale = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("volumes/"));
+        pathOffset += 8;
+        index = path.indexOf("/layers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_volumeId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/layers/"));
+        pathOffset += 8;
+        index = path.indexOf("/annotations/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_layerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/annotations/"));
+        pathOffset += 13;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_annotationId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVolumeannotation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_volumeId, arg_layerId, arg_annotationId,
+              locale: arg_locale, source: arg_source, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Volumeannotation response) {
+        checkVolumeannotation(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.LayersVolumeAnnotationsResourceApi res =
+          new api.BooksApi(mock).layers.volumeAnnotations;
+      var arg_volumeId = "foo";
+      var arg_layerId = "foo";
+      var arg_contentVersion = "foo";
+      var arg_endOffset = "foo";
+      var arg_endPosition = "foo";
+      var arg_locale = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_showDeleted = true;
+      var arg_source = "foo";
+      var arg_startOffset = "foo";
+      var arg_startPosition = "foo";
+      var arg_updatedMax = "foo";
+      var arg_updatedMin = "foo";
+      var arg_volumeAnnotationsVersion = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("volumes/"));
+        pathOffset += 8;
+        index = path.indexOf("/layers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_volumeId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/layers/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_layerId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["contentVersion"].first,
+            unittest.equals(arg_contentVersion));
+        unittest.expect(
+            queryMap["endOffset"].first, unittest.equals(arg_endOffset));
+        unittest.expect(
+            queryMap["endPosition"].first, unittest.equals(arg_endPosition));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["showDeleted"].first, unittest.equals("$arg_showDeleted"));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(
+            queryMap["startOffset"].first, unittest.equals(arg_startOffset));
+        unittest.expect(queryMap["startPosition"].first,
+            unittest.equals(arg_startPosition));
+        unittest.expect(
+            queryMap["updatedMax"].first, unittest.equals(arg_updatedMax));
+        unittest.expect(
+            queryMap["updatedMin"].first, unittest.equals(arg_updatedMin));
+        unittest.expect(queryMap["volumeAnnotationsVersion"].first,
+            unittest.equals(arg_volumeAnnotationsVersion));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVolumeannotations());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_volumeId, arg_layerId, arg_contentVersion,
+              endOffset: arg_endOffset,
+              endPosition: arg_endPosition,
+              locale: arg_locale,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              showDeleted: arg_showDeleted,
+              source: arg_source,
+              startOffset: arg_startOffset,
+              startPosition: arg_startPosition,
+              updatedMax: arg_updatedMax,
+              updatedMin: arg_updatedMin,
+              volumeAnnotationsVersion: arg_volumeAnnotationsVersion,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Volumeannotations response) {
+        checkVolumeannotations(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-MyconfigResourceApi", () {
+    unittest.test("method--getUserSettings", () {
+      var mock = new HttpServerMock();
+      api.MyconfigResourceApi res = new api.BooksApi(mock).myconfig;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 24),
+            unittest.equals("myconfig/getUserSettings"));
+        pathOffset += 24;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUsersettings());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getUserSettings($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Usersettings response) {
+        checkUsersettings(response);
+      })));
+    });
+
+    unittest.test("method--releaseDownloadAccess", () {
+      var mock = new HttpServerMock();
+      api.MyconfigResourceApi res = new api.BooksApi(mock).myconfig;
+      var arg_volumeIds = buildUnnamed972();
+      var arg_cpksver = "foo";
+      var arg_locale = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 30),
+            unittest.equals("myconfig/releaseDownloadAccess"));
+        pathOffset += 30;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["volumeIds"], unittest.equals(arg_volumeIds));
+        unittest.expect(
+            queryMap["cpksver"].first, unittest.equals(arg_cpksver));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDownloadAccesses());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .releaseDownloadAccess(arg_volumeIds, arg_cpksver,
+              locale: arg_locale, source: arg_source, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DownloadAccesses response) {
+        checkDownloadAccesses(response);
+      })));
+    });
+
+    unittest.test("method--requestAccess", () {
+      var mock = new HttpServerMock();
+      api.MyconfigResourceApi res = new api.BooksApi(mock).myconfig;
+      var arg_source = "foo";
+      var arg_volumeId = "foo";
+      var arg_nonce = "foo";
+      var arg_cpksver = "foo";
+      var arg_licenseTypes = "foo";
+      var arg_locale = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("myconfig/requestAccess"));
+        pathOffset += 22;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(
+            queryMap["volumeId"].first, unittest.equals(arg_volumeId));
+        unittest.expect(queryMap["nonce"].first, unittest.equals(arg_nonce));
+        unittest.expect(
+            queryMap["cpksver"].first, unittest.equals(arg_cpksver));
+        unittest.expect(
+            queryMap["licenseTypes"].first, unittest.equals(arg_licenseTypes));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRequestAccess());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .requestAccess(arg_source, arg_volumeId, arg_nonce, arg_cpksver,
+              licenseTypes: arg_licenseTypes,
+              locale: arg_locale,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RequestAccess response) {
+        checkRequestAccess(response);
+      })));
+    });
+
+    unittest.test("method--syncVolumeLicenses", () {
+      var mock = new HttpServerMock();
+      api.MyconfigResourceApi res = new api.BooksApi(mock).myconfig;
+      var arg_source = "foo";
+      var arg_nonce = "foo";
+      var arg_cpksver = "foo";
+      var arg_features = buildUnnamed973();
+      var arg_includeNonComicsSeries = true;
+      var arg_locale = "foo";
+      var arg_showPreorders = true;
+      var arg_volumeIds = buildUnnamed974();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 27),
+            unittest.equals("myconfig/syncVolumeLicenses"));
+        pathOffset += 27;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["nonce"].first, unittest.equals(arg_nonce));
+        unittest.expect(
+            queryMap["cpksver"].first, unittest.equals(arg_cpksver));
+        unittest.expect(queryMap["features"], unittest.equals(arg_features));
+        unittest.expect(queryMap["includeNonComicsSeries"].first,
+            unittest.equals("$arg_includeNonComicsSeries"));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["showPreorders"].first,
+            unittest.equals("$arg_showPreorders"));
+        unittest.expect(queryMap["volumeIds"], unittest.equals(arg_volumeIds));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVolumes());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .syncVolumeLicenses(arg_source, arg_nonce, arg_cpksver,
+              features: arg_features,
+              includeNonComicsSeries: arg_includeNonComicsSeries,
+              locale: arg_locale,
+              showPreorders: arg_showPreorders,
+              volumeIds: arg_volumeIds,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Volumes response) {
+        checkVolumes(response);
+      })));
+    });
+
+    unittest.test("method--updateUserSettings", () {
+      var mock = new HttpServerMock();
+      api.MyconfigResourceApi res = new api.BooksApi(mock).myconfig;
+      var arg_request = buildUsersettings();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Usersettings.fromJson(json);
+        checkUsersettings(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 27),
+            unittest.equals("myconfig/updateUserSettings"));
+        pathOffset += 27;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUsersettings());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .updateUserSettings(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Usersettings response) {
+        checkUsersettings(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-MylibraryAnnotationsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.MylibraryAnnotationsResourceApi res =
+          new api.BooksApi(mock).mylibrary.annotations;
+      var arg_annotationId = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("mylibrary/annotations/"));
+        pathOffset += 22;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_annotationId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_annotationId, source: arg_source, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.MylibraryAnnotationsResourceApi res =
+          new api.BooksApi(mock).mylibrary.annotations;
+      var arg_request = buildAnnotation();
+      var arg_annotationId = "foo";
+      var arg_country = "foo";
+      var arg_showOnlySummaryInResponse = true;
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Annotation.fromJson(json);
+        checkAnnotation(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("mylibrary/annotations"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["annotationId"].first, unittest.equals(arg_annotationId));
+        unittest.expect(
+            queryMap["country"].first, unittest.equals(arg_country));
+        unittest.expect(queryMap["showOnlySummaryInResponse"].first,
+            unittest.equals("$arg_showOnlySummaryInResponse"));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAnnotation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request,
+              annotationId: arg_annotationId,
+              country: arg_country,
+              showOnlySummaryInResponse: arg_showOnlySummaryInResponse,
+              source: arg_source,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Annotation response) {
+        checkAnnotation(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.MylibraryAnnotationsResourceApi res =
+          new api.BooksApi(mock).mylibrary.annotations;
+      var arg_contentVersion = "foo";
+      var arg_layerId = "foo";
+      var arg_layerIds = buildUnnamed975();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_showDeleted = true;
+      var arg_source = "foo";
+      var arg_updatedMax = "foo";
+      var arg_updatedMin = "foo";
+      var arg_volumeId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("mylibrary/annotations"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["contentVersion"].first,
+            unittest.equals(arg_contentVersion));
+        unittest.expect(
+            queryMap["layerId"].first, unittest.equals(arg_layerId));
+        unittest.expect(queryMap["layerIds"], unittest.equals(arg_layerIds));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["showDeleted"].first, unittest.equals("$arg_showDeleted"));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(
+            queryMap["updatedMax"].first, unittest.equals(arg_updatedMax));
+        unittest.expect(
+            queryMap["updatedMin"].first, unittest.equals(arg_updatedMin));
+        unittest.expect(
+            queryMap["volumeId"].first, unittest.equals(arg_volumeId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAnnotations());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              contentVersion: arg_contentVersion,
+              layerId: arg_layerId,
+              layerIds: arg_layerIds,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              showDeleted: arg_showDeleted,
+              source: arg_source,
+              updatedMax: arg_updatedMax,
+              updatedMin: arg_updatedMin,
+              volumeId: arg_volumeId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Annotations response) {
+        checkAnnotations(response);
+      })));
+    });
+
+    unittest.test("method--summary", () {
+      var mock = new HttpServerMock();
+      api.MylibraryAnnotationsResourceApi res =
+          new api.BooksApi(mock).mylibrary.annotations;
+      var arg_layerIds = buildUnnamed976();
+      var arg_volumeId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 29),
+            unittest.equals("mylibrary/annotations/summary"));
+        pathOffset += 29;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["layerIds"], unittest.equals(arg_layerIds));
+        unittest.expect(
+            queryMap["volumeId"].first, unittest.equals(arg_volumeId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAnnotationsSummary());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .summary(arg_layerIds, arg_volumeId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AnnotationsSummary response) {
+        checkAnnotationsSummary(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.MylibraryAnnotationsResourceApi res =
+          new api.BooksApi(mock).mylibrary.annotations;
+      var arg_request = buildAnnotation();
+      var arg_annotationId = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Annotation.fromJson(json);
+        checkAnnotation(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("mylibrary/annotations/"));
+        pathOffset += 22;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_annotationId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAnnotation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_annotationId,
+              source: arg_source, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Annotation response) {
+        checkAnnotation(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-MylibraryBookshelvesResourceApi", () {
+    unittest.test("method--addVolume", () {
+      var mock = new HttpServerMock();
+      api.MylibraryBookshelvesResourceApi res =
+          new api.BooksApi(mock).mylibrary.bookshelves;
+      var arg_shelf = "foo";
+      var arg_volumeId = "foo";
+      var arg_reason = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("mylibrary/bookshelves/"));
+        pathOffset += 22;
+        index = path.indexOf("/addVolume", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_shelf"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/addVolume"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["volumeId"].first, unittest.equals(arg_volumeId));
+        unittest.expect(queryMap["reason"].first, unittest.equals(arg_reason));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .addVolume(arg_shelf, arg_volumeId,
+              reason: arg_reason, source: arg_source, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--clearVolumes", () {
+      var mock = new HttpServerMock();
+      api.MylibraryBookshelvesResourceApi res =
+          new api.BooksApi(mock).mylibrary.bookshelves;
+      var arg_shelf = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("mylibrary/bookshelves/"));
+        pathOffset += 22;
+        index = path.indexOf("/clearVolumes", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_shelf"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/clearVolumes"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .clearVolumes(arg_shelf, source: arg_source, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.MylibraryBookshelvesResourceApi res =
+          new api.BooksApi(mock).mylibrary.bookshelves;
+      var arg_shelf = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("mylibrary/bookshelves/"));
+        pathOffset += 22;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_shelf"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBookshelf());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_shelf, source: arg_source, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Bookshelf response) {
+        checkBookshelf(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.MylibraryBookshelvesResourceApi res =
+          new api.BooksApi(mock).mylibrary.bookshelves;
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("mylibrary/bookshelves"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBookshelves());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(source: arg_source, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Bookshelves response) {
+        checkBookshelves(response);
+      })));
+    });
+
+    unittest.test("method--moveVolume", () {
+      var mock = new HttpServerMock();
+      api.MylibraryBookshelvesResourceApi res =
+          new api.BooksApi(mock).mylibrary.bookshelves;
+      var arg_shelf = "foo";
+      var arg_volumeId = "foo";
+      var arg_volumePosition = 42;
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("mylibrary/bookshelves/"));
+        pathOffset += 22;
+        index = path.indexOf("/moveVolume", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_shelf"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/moveVolume"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["volumeId"].first, unittest.equals(arg_volumeId));
+        unittest.expect(core.int.parse(queryMap["volumePosition"].first),
+            unittest.equals(arg_volumePosition));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .moveVolume(arg_shelf, arg_volumeId, arg_volumePosition,
+              source: arg_source, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--removeVolume", () {
+      var mock = new HttpServerMock();
+      api.MylibraryBookshelvesResourceApi res =
+          new api.BooksApi(mock).mylibrary.bookshelves;
+      var arg_shelf = "foo";
+      var arg_volumeId = "foo";
+      var arg_reason = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("mylibrary/bookshelves/"));
+        pathOffset += 22;
+        index = path.indexOf("/removeVolume", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_shelf"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/removeVolume"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["volumeId"].first, unittest.equals(arg_volumeId));
+        unittest.expect(queryMap["reason"].first, unittest.equals(arg_reason));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .removeVolume(arg_shelf, arg_volumeId,
+              reason: arg_reason, source: arg_source, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+  });
+
+  unittest.group("resource-MylibraryBookshelvesVolumesResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.MylibraryBookshelvesVolumesResourceApi res =
+          new api.BooksApi(mock).mylibrary.bookshelves.volumes;
+      var arg_shelf = "foo";
+      var arg_country = "foo";
+      var arg_maxResults = 42;
+      var arg_projection = "foo";
+      var arg_q = "foo";
+      var arg_showPreorders = true;
+      var arg_source = "foo";
+      var arg_startIndex = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("mylibrary/bookshelves/"));
+        pathOffset += 22;
+        index = path.indexOf("/volumes", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_shelf"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/volumes"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["country"].first, unittest.equals(arg_country));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(queryMap["q"].first, unittest.equals(arg_q));
+        unittest.expect(queryMap["showPreorders"].first,
+            unittest.equals("$arg_showPreorders"));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(core.int.parse(queryMap["startIndex"].first),
+            unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVolumes());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_shelf,
+              country: arg_country,
+              maxResults: arg_maxResults,
+              projection: arg_projection,
+              q: arg_q,
+              showPreorders: arg_showPreorders,
+              source: arg_source,
+              startIndex: arg_startIndex,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Volumes response) {
+        checkVolumes(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-MylibraryReadingpositionsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.MylibraryReadingpositionsResourceApi res =
+          new api.BooksApi(mock).mylibrary.readingpositions;
+      var arg_volumeId = "foo";
+      var arg_contentVersion = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 27),
+            unittest.equals("mylibrary/readingpositions/"));
+        pathOffset += 27;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_volumeId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["contentVersion"].first,
+            unittest.equals(arg_contentVersion));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildReadingPosition());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_volumeId,
+              contentVersion: arg_contentVersion,
+              source: arg_source,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ReadingPosition response) {
+        checkReadingPosition(response);
+      })));
+    });
+
+    unittest.test("method--setPosition", () {
+      var mock = new HttpServerMock();
+      api.MylibraryReadingpositionsResourceApi res =
+          new api.BooksApi(mock).mylibrary.readingpositions;
+      var arg_volumeId = "foo";
+      var arg_timestamp = "foo";
+      var arg_position = "foo";
+      var arg_action = "foo";
+      var arg_contentVersion = "foo";
+      var arg_deviceCookie = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 27),
+            unittest.equals("mylibrary/readingpositions/"));
+        pathOffset += 27;
+        index = path.indexOf("/setPosition", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_volumeId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/setPosition"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["timestamp"].first, unittest.equals(arg_timestamp));
+        unittest.expect(
+            queryMap["position"].first, unittest.equals(arg_position));
+        unittest.expect(queryMap["action"].first, unittest.equals(arg_action));
+        unittest.expect(queryMap["contentVersion"].first,
+            unittest.equals(arg_contentVersion));
+        unittest.expect(
+            queryMap["deviceCookie"].first, unittest.equals(arg_deviceCookie));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .setPosition(arg_volumeId, arg_timestamp, arg_position,
+              action: arg_action,
+              contentVersion: arg_contentVersion,
+              deviceCookie: arg_deviceCookie,
+              source: arg_source,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+  });
+
+  unittest.group("resource-NotificationResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.NotificationResourceApi res = new api.BooksApi(mock).notification;
+      var arg_notificationId = "foo";
+      var arg_locale = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("notification/get"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["notification_id"].first,
+            unittest.equals(arg_notificationId));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildNotification());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_notificationId,
+              locale: arg_locale, source: arg_source, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Notification response) {
+        checkNotification(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-OnboardingResourceApi", () {
+    unittest.test("method--listCategories", () {
+      var mock = new HttpServerMock();
+      api.OnboardingResourceApi res = new api.BooksApi(mock).onboarding;
+      var arg_locale = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 25),
+            unittest.equals("onboarding/listCategories"));
+        pathOffset += 25;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCategory());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .listCategories(locale: arg_locale, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Category response) {
+        checkCategory(response);
+      })));
+    });
+
+    unittest.test("method--listCategoryVolumes", () {
+      var mock = new HttpServerMock();
+      api.OnboardingResourceApi res = new api.BooksApi(mock).onboarding;
+      var arg_categoryId = buildUnnamed977();
+      var arg_locale = "foo";
+      var arg_maxAllowedMaturityRating = "foo";
+      var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 30),
+            unittest.equals("onboarding/listCategoryVolumes"));
+        pathOffset += 30;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["categoryId"], unittest.equals(arg_categoryId));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["maxAllowedMaturityRating"].first,
+            unittest.equals(arg_maxAllowedMaturityRating));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVolume2());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .listCategoryVolumes(
+              categoryId: arg_categoryId,
+              locale: arg_locale,
+              maxAllowedMaturityRating: arg_maxAllowedMaturityRating,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Volume2 response) {
+        checkVolume2(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PersonalizedstreamResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PersonalizedstreamResourceApi res =
+          new api.BooksApi(mock).personalizedstream;
+      var arg_locale = "foo";
+      var arg_maxAllowedMaturityRating = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("personalizedstream/get"));
+        pathOffset += 22;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["maxAllowedMaturityRating"].first,
+            unittest.equals(arg_maxAllowedMaturityRating));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDiscoveryclusters());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(
+              locale: arg_locale,
+              maxAllowedMaturityRating: arg_maxAllowedMaturityRating,
+              source: arg_source,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Discoveryclusters response) {
+        checkDiscoveryclusters(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PromoofferResourceApi", () {
+    unittest.test("method--accept", () {
+      var mock = new HttpServerMock();
+      api.PromoofferResourceApi res = new api.BooksApi(mock).promooffer;
+      var arg_androidId = "foo";
+      var arg_device = "foo";
+      var arg_manufacturer = "foo";
+      var arg_model = "foo";
+      var arg_offerId = "foo";
+      var arg_product = "foo";
+      var arg_serial = "foo";
+      var arg_volumeId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("promooffer/accept"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["androidId"].first, unittest.equals(arg_androidId));
+        unittest.expect(queryMap["device"].first, unittest.equals(arg_device));
+        unittest.expect(
+            queryMap["manufacturer"].first, unittest.equals(arg_manufacturer));
+        unittest.expect(queryMap["model"].first, unittest.equals(arg_model));
+        unittest.expect(
+            queryMap["offerId"].first, unittest.equals(arg_offerId));
+        unittest.expect(
+            queryMap["product"].first, unittest.equals(arg_product));
+        unittest.expect(queryMap["serial"].first, unittest.equals(arg_serial));
+        unittest.expect(
+            queryMap["volumeId"].first, unittest.equals(arg_volumeId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .accept(
+              androidId: arg_androidId,
+              device: arg_device,
+              manufacturer: arg_manufacturer,
+              model: arg_model,
+              offerId: arg_offerId,
+              product: arg_product,
+              serial: arg_serial,
+              volumeId: arg_volumeId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--dismiss", () {
+      var mock = new HttpServerMock();
+      api.PromoofferResourceApi res = new api.BooksApi(mock).promooffer;
+      var arg_androidId = "foo";
+      var arg_device = "foo";
+      var arg_manufacturer = "foo";
+      var arg_model = "foo";
+      var arg_offerId = "foo";
+      var arg_product = "foo";
+      var arg_serial = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("promooffer/dismiss"));
+        pathOffset += 18;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["androidId"].first, unittest.equals(arg_androidId));
+        unittest.expect(queryMap["device"].first, unittest.equals(arg_device));
+        unittest.expect(
+            queryMap["manufacturer"].first, unittest.equals(arg_manufacturer));
+        unittest.expect(queryMap["model"].first, unittest.equals(arg_model));
+        unittest.expect(
+            queryMap["offerId"].first, unittest.equals(arg_offerId));
+        unittest.expect(
+            queryMap["product"].first, unittest.equals(arg_product));
+        unittest.expect(queryMap["serial"].first, unittest.equals(arg_serial));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .dismiss(
+              androidId: arg_androidId,
+              device: arg_device,
+              manufacturer: arg_manufacturer,
+              model: arg_model,
+              offerId: arg_offerId,
+              product: arg_product,
+              serial: arg_serial,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PromoofferResourceApi res = new api.BooksApi(mock).promooffer;
+      var arg_androidId = "foo";
+      var arg_device = "foo";
+      var arg_manufacturer = "foo";
+      var arg_model = "foo";
+      var arg_product = "foo";
+      var arg_serial = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("promooffer/get"));
+        pathOffset += 14;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["androidId"].first, unittest.equals(arg_androidId));
+        unittest.expect(queryMap["device"].first, unittest.equals(arg_device));
+        unittest.expect(
+            queryMap["manufacturer"].first, unittest.equals(arg_manufacturer));
+        unittest.expect(queryMap["model"].first, unittest.equals(arg_model));
+        unittest.expect(
+            queryMap["product"].first, unittest.equals(arg_product));
+        unittest.expect(queryMap["serial"].first, unittest.equals(arg_serial));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOffers());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(
+              androidId: arg_androidId,
+              device: arg_device,
+              manufacturer: arg_manufacturer,
+              model: arg_model,
+              product: arg_product,
+              serial: arg_serial,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Offers response) {
+        checkOffers(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-SeriesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.SeriesResourceApi res = new api.BooksApi(mock).series;
+      var arg_seriesId = buildUnnamed978();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("series/get"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["series_id"], unittest.equals(arg_seriesId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSeries());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_seriesId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Series response) {
+        checkSeries(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-SeriesMembershipResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.SeriesMembershipResourceApi res =
+          new api.BooksApi(mock).series.membership;
+      var arg_seriesId = "foo";
+      var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("series/membership/get"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["series_id"].first, unittest.equals(arg_seriesId));
+        unittest.expect(core.int.parse(queryMap["page_size"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["page_token"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSeriesmembership());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_seriesId,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Seriesmembership response) {
+        checkSeriesmembership(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-VolumesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.VolumesResourceApi res = new api.BooksApi(mock).volumes;
+      var arg_volumeId = "foo";
+      var arg_country = "foo";
+      var arg_includeNonComicsSeries = true;
+      var arg_partner = "foo";
+      var arg_projection = "foo";
+      var arg_source = "foo";
+      var arg_userLibraryConsistentRead = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("volumes/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_volumeId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["country"].first, unittest.equals(arg_country));
+        unittest.expect(queryMap["includeNonComicsSeries"].first,
+            unittest.equals("$arg_includeNonComicsSeries"));
+        unittest.expect(
+            queryMap["partner"].first, unittest.equals(arg_partner));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["user_library_consistent_read"].first,
+            unittest.equals("$arg_userLibraryConsistentRead"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVolume());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_volumeId,
+              country: arg_country,
+              includeNonComicsSeries: arg_includeNonComicsSeries,
+              partner: arg_partner,
+              projection: arg_projection,
+              source: arg_source,
+              userLibraryConsistentRead: arg_userLibraryConsistentRead,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Volume response) {
+        checkVolume(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.VolumesResourceApi res = new api.BooksApi(mock).volumes;
+      var arg_q = "foo";
+      var arg_download = "foo";
+      var arg_filter = "foo";
+      var arg_langRestrict = "foo";
+      var arg_libraryRestrict = "foo";
+      var arg_maxAllowedMaturityRating = "foo";
+      var arg_maxResults = 42;
+      var arg_orderBy = "foo";
+      var arg_partner = "foo";
+      var arg_printType = "foo";
+      var arg_projection = "foo";
+      var arg_showPreorders = true;
+      var arg_source = "foo";
+      var arg_startIndex = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("volumes"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["q"].first, unittest.equals(arg_q));
+        unittest.expect(
+            queryMap["download"].first, unittest.equals(arg_download));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(
+            queryMap["langRestrict"].first, unittest.equals(arg_langRestrict));
+        unittest.expect(queryMap["libraryRestrict"].first,
+            unittest.equals(arg_libraryRestrict));
+        unittest.expect(queryMap["maxAllowedMaturityRating"].first,
+            unittest.equals(arg_maxAllowedMaturityRating));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["partner"].first, unittest.equals(arg_partner));
+        unittest.expect(
+            queryMap["printType"].first, unittest.equals(arg_printType));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(queryMap["showPreorders"].first,
+            unittest.equals("$arg_showPreorders"));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(core.int.parse(queryMap["startIndex"].first),
+            unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVolumes());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_q,
+              download: arg_download,
+              filter: arg_filter,
+              langRestrict: arg_langRestrict,
+              libraryRestrict: arg_libraryRestrict,
+              maxAllowedMaturityRating: arg_maxAllowedMaturityRating,
+              maxResults: arg_maxResults,
+              orderBy: arg_orderBy,
+              partner: arg_partner,
+              printType: arg_printType,
+              projection: arg_projection,
+              showPreorders: arg_showPreorders,
+              source: arg_source,
+              startIndex: arg_startIndex,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Volumes response) {
+        checkVolumes(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-VolumesAssociatedResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.VolumesAssociatedResourceApi res =
+          new api.BooksApi(mock).volumes.associated;
+      var arg_volumeId = "foo";
+      var arg_association = "foo";
+      var arg_locale = "foo";
+      var arg_maxAllowedMaturityRating = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("volumes/"));
+        pathOffset += 8;
+        index = path.indexOf("/associated", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_volumeId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/associated"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["association"].first, unittest.equals(arg_association));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["maxAllowedMaturityRating"].first,
+            unittest.equals(arg_maxAllowedMaturityRating));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVolumes());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_volumeId,
+              association: arg_association,
+              locale: arg_locale,
+              maxAllowedMaturityRating: arg_maxAllowedMaturityRating,
+              source: arg_source,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Volumes response) {
+        checkVolumes(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-VolumesMybooksResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.VolumesMybooksResourceApi res =
+          new api.BooksApi(mock).volumes.mybooks;
+      var arg_acquireMethod = buildUnnamed979();
+      var arg_country = "foo";
+      var arg_locale = "foo";
+      var arg_maxResults = 42;
+      var arg_processingState = buildUnnamed980();
+      var arg_source = "foo";
+      var arg_startIndex = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("volumes/mybooks"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["acquireMethod"], unittest.equals(arg_acquireMethod));
+        unittest.expect(
+            queryMap["country"].first, unittest.equals(arg_country));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["processingState"], unittest.equals(arg_processingState));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(core.int.parse(queryMap["startIndex"].first),
+            unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVolumes());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              acquireMethod: arg_acquireMethod,
+              country: arg_country,
+              locale: arg_locale,
+              maxResults: arg_maxResults,
+              processingState: arg_processingState,
+              source: arg_source,
+              startIndex: arg_startIndex,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Volumes response) {
+        checkVolumes(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-VolumesRecommendedResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.VolumesRecommendedResourceApi res =
+          new api.BooksApi(mock).volumes.recommended;
+      var arg_locale = "foo";
+      var arg_maxAllowedMaturityRating = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("volumes/recommended"));
+        pathOffset += 19;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["maxAllowedMaturityRating"].first,
+            unittest.equals(arg_maxAllowedMaturityRating));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVolumes());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              locale: arg_locale,
+              maxAllowedMaturityRating: arg_maxAllowedMaturityRating,
+              source: arg_source,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Volumes response) {
+        checkVolumes(response);
+      })));
+    });
+
+    unittest.test("method--rate", () {
+      var mock = new HttpServerMock();
+      api.VolumesRecommendedResourceApi res =
+          new api.BooksApi(mock).volumes.recommended;
+      var arg_rating = "foo";
+      var arg_volumeId = "foo";
+      var arg_locale = "foo";
+      var arg_source = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 24),
+            unittest.equals("volumes/recommended/rate"));
+        pathOffset += 24;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["rating"].first, unittest.equals(arg_rating));
+        unittest.expect(
+            queryMap["volumeId"].first, unittest.equals(arg_volumeId));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildBooksVolumesRecommendedRateResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .rate(arg_rating, arg_volumeId,
+              locale: arg_locale, source: arg_source, $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.BooksVolumesRecommendedRateResponse response) {
+        checkBooksVolumesRecommendedRateResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-VolumesUseruploadedResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.VolumesUseruploadedResourceApi res =
+          new api.BooksApi(mock).volumes.useruploaded;
+      var arg_locale = "foo";
+      var arg_maxResults = 42;
+      var arg_processingState = buildUnnamed981();
+      var arg_source = "foo";
+      var arg_startIndex = 42;
+      var arg_volumeId = buildUnnamed982();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("books/v1/"));
+        pathOffset += 9;
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("volumes/useruploaded"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["processingState"], unittest.equals(arg_processingState));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(core.int.parse(queryMap["startIndex"].first),
+            unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["volumeId"], unittest.equals(arg_volumeId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVolumes());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              locale: arg_locale,
+              maxResults: arg_maxResults,
+              processingState: arg_processingState,
+              source: arg_source,
+              startIndex: arg_startIndex,
+              volumeId: arg_volumeId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Volumes response) {
+        checkVolumes(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/calendar/v3_test.dart b/generated/googleapis/test/calendar/v3_test.dart
new file mode 100644
index 0000000..dc12a60
--- /dev/null
+++ b/generated/googleapis/test/calendar/v3_test.dart
@@ -0,0 +1,4262 @@
+library googleapis.calendar.v3.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/calendar/v3.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+buildUnnamed1145() {
+  var o = new core.List<api.AclRule>();
+  o.add(buildAclRule());
+  o.add(buildAclRule());
+  return o;
+}
+
+checkUnnamed1145(core.List<api.AclRule> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAclRule(o[0]);
+  checkAclRule(o[1]);
+}
+
+core.int buildCounterAcl = 0;
+buildAcl() {
+  var o = new api.Acl();
+  buildCounterAcl++;
+  if (buildCounterAcl < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1145();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.nextSyncToken = "foo";
+  }
+  buildCounterAcl--;
+  return o;
+}
+
+checkAcl(api.Acl o) {
+  buildCounterAcl++;
+  if (buildCounterAcl < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1145(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.nextSyncToken, unittest.equals('foo'));
+  }
+  buildCounterAcl--;
+}
+
+core.int buildCounterAclRuleScope = 0;
+buildAclRuleScope() {
+  var o = new api.AclRuleScope();
+  buildCounterAclRuleScope++;
+  if (buildCounterAclRuleScope < 3) {
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterAclRuleScope--;
+  return o;
+}
+
+checkAclRuleScope(api.AclRuleScope o) {
+  buildCounterAclRuleScope++;
+  if (buildCounterAclRuleScope < 3) {
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterAclRuleScope--;
+}
+
+core.int buildCounterAclRule = 0;
+buildAclRule() {
+  var o = new api.AclRule();
+  buildCounterAclRule++;
+  if (buildCounterAclRule < 3) {
+    o.etag = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.role = "foo";
+    o.scope = buildAclRuleScope();
+  }
+  buildCounterAclRule--;
+  return o;
+}
+
+checkAclRule(api.AclRule o) {
+  buildCounterAclRule++;
+  if (buildCounterAclRule < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.role, unittest.equals('foo'));
+    checkAclRuleScope(o.scope);
+  }
+  buildCounterAclRule--;
+}
+
+core.int buildCounterCalendar = 0;
+buildCalendar() {
+  var o = new api.Calendar();
+  buildCounterCalendar++;
+  if (buildCounterCalendar < 3) {
+    o.description = "foo";
+    o.etag = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.location = "foo";
+    o.summary = "foo";
+    o.timeZone = "foo";
+  }
+  buildCounterCalendar--;
+  return o;
+}
+
+checkCalendar(api.Calendar o) {
+  buildCounterCalendar++;
+  if (buildCounterCalendar < 3) {
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    unittest.expect(o.summary, unittest.equals('foo'));
+    unittest.expect(o.timeZone, unittest.equals('foo'));
+  }
+  buildCounterCalendar--;
+}
+
+buildUnnamed1146() {
+  var o = new core.List<api.CalendarListEntry>();
+  o.add(buildCalendarListEntry());
+  o.add(buildCalendarListEntry());
+  return o;
+}
+
+checkUnnamed1146(core.List<api.CalendarListEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCalendarListEntry(o[0]);
+  checkCalendarListEntry(o[1]);
+}
+
+core.int buildCounterCalendarList = 0;
+buildCalendarList() {
+  var o = new api.CalendarList();
+  buildCounterCalendarList++;
+  if (buildCounterCalendarList < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1146();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.nextSyncToken = "foo";
+  }
+  buildCounterCalendarList--;
+  return o;
+}
+
+checkCalendarList(api.CalendarList o) {
+  buildCounterCalendarList++;
+  if (buildCounterCalendarList < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1146(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.nextSyncToken, unittest.equals('foo'));
+  }
+  buildCounterCalendarList--;
+}
+
+buildUnnamed1147() {
+  var o = new core.List<api.EventReminder>();
+  o.add(buildEventReminder());
+  o.add(buildEventReminder());
+  return o;
+}
+
+checkUnnamed1147(core.List<api.EventReminder> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEventReminder(o[0]);
+  checkEventReminder(o[1]);
+}
+
+buildUnnamed1148() {
+  var o = new core.List<api.CalendarNotification>();
+  o.add(buildCalendarNotification());
+  o.add(buildCalendarNotification());
+  return o;
+}
+
+checkUnnamed1148(core.List<api.CalendarNotification> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCalendarNotification(o[0]);
+  checkCalendarNotification(o[1]);
+}
+
+core.int buildCounterCalendarListEntryNotificationSettings = 0;
+buildCalendarListEntryNotificationSettings() {
+  var o = new api.CalendarListEntryNotificationSettings();
+  buildCounterCalendarListEntryNotificationSettings++;
+  if (buildCounterCalendarListEntryNotificationSettings < 3) {
+    o.notifications = buildUnnamed1148();
+  }
+  buildCounterCalendarListEntryNotificationSettings--;
+  return o;
+}
+
+checkCalendarListEntryNotificationSettings(
+    api.CalendarListEntryNotificationSettings o) {
+  buildCounterCalendarListEntryNotificationSettings++;
+  if (buildCounterCalendarListEntryNotificationSettings < 3) {
+    checkUnnamed1148(o.notifications);
+  }
+  buildCounterCalendarListEntryNotificationSettings--;
+}
+
+core.int buildCounterCalendarListEntry = 0;
+buildCalendarListEntry() {
+  var o = new api.CalendarListEntry();
+  buildCounterCalendarListEntry++;
+  if (buildCounterCalendarListEntry < 3) {
+    o.accessRole = "foo";
+    o.backgroundColor = "foo";
+    o.colorId = "foo";
+    o.defaultReminders = buildUnnamed1147();
+    o.deleted = true;
+    o.description = "foo";
+    o.etag = "foo";
+    o.foregroundColor = "foo";
+    o.hidden = true;
+    o.id = "foo";
+    o.kind = "foo";
+    o.location = "foo";
+    o.notificationSettings = buildCalendarListEntryNotificationSettings();
+    o.primary = true;
+    o.selected = true;
+    o.summary = "foo";
+    o.summaryOverride = "foo";
+    o.timeZone = "foo";
+  }
+  buildCounterCalendarListEntry--;
+  return o;
+}
+
+checkCalendarListEntry(api.CalendarListEntry o) {
+  buildCounterCalendarListEntry++;
+  if (buildCounterCalendarListEntry < 3) {
+    unittest.expect(o.accessRole, unittest.equals('foo'));
+    unittest.expect(o.backgroundColor, unittest.equals('foo'));
+    unittest.expect(o.colorId, unittest.equals('foo'));
+    checkUnnamed1147(o.defaultReminders);
+    unittest.expect(o.deleted, unittest.isTrue);
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.foregroundColor, unittest.equals('foo'));
+    unittest.expect(o.hidden, unittest.isTrue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    checkCalendarListEntryNotificationSettings(o.notificationSettings);
+    unittest.expect(o.primary, unittest.isTrue);
+    unittest.expect(o.selected, unittest.isTrue);
+    unittest.expect(o.summary, unittest.equals('foo'));
+    unittest.expect(o.summaryOverride, unittest.equals('foo'));
+    unittest.expect(o.timeZone, unittest.equals('foo'));
+  }
+  buildCounterCalendarListEntry--;
+}
+
+core.int buildCounterCalendarNotification = 0;
+buildCalendarNotification() {
+  var o = new api.CalendarNotification();
+  buildCounterCalendarNotification++;
+  if (buildCounterCalendarNotification < 3) {
+    o.method = "foo";
+    o.type = "foo";
+  }
+  buildCounterCalendarNotification--;
+  return o;
+}
+
+checkCalendarNotification(api.CalendarNotification o) {
+  buildCounterCalendarNotification++;
+  if (buildCounterCalendarNotification < 3) {
+    unittest.expect(o.method, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterCalendarNotification--;
+}
+
+buildUnnamed1149() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed1149(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterChannel = 0;
+buildChannel() {
+  var o = new api.Channel();
+  buildCounterChannel++;
+  if (buildCounterChannel < 3) {
+    o.address = "foo";
+    o.expiration = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.params = buildUnnamed1149();
+    o.payload = true;
+    o.resourceId = "foo";
+    o.resourceUri = "foo";
+    o.token = "foo";
+    o.type = "foo";
+  }
+  buildCounterChannel--;
+  return o;
+}
+
+checkChannel(api.Channel o) {
+  buildCounterChannel++;
+  if (buildCounterChannel < 3) {
+    unittest.expect(o.address, unittest.equals('foo'));
+    unittest.expect(o.expiration, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed1149(o.params);
+    unittest.expect(o.payload, unittest.isTrue);
+    unittest.expect(o.resourceId, unittest.equals('foo'));
+    unittest.expect(o.resourceUri, unittest.equals('foo'));
+    unittest.expect(o.token, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterChannel--;
+}
+
+core.int buildCounterColorDefinition = 0;
+buildColorDefinition() {
+  var o = new api.ColorDefinition();
+  buildCounterColorDefinition++;
+  if (buildCounterColorDefinition < 3) {
+    o.background = "foo";
+    o.foreground = "foo";
+  }
+  buildCounterColorDefinition--;
+  return o;
+}
+
+checkColorDefinition(api.ColorDefinition o) {
+  buildCounterColorDefinition++;
+  if (buildCounterColorDefinition < 3) {
+    unittest.expect(o.background, unittest.equals('foo'));
+    unittest.expect(o.foreground, unittest.equals('foo'));
+  }
+  buildCounterColorDefinition--;
+}
+
+buildUnnamed1150() {
+  var o = new core.Map<core.String, api.ColorDefinition>();
+  o["x"] = buildColorDefinition();
+  o["y"] = buildColorDefinition();
+  return o;
+}
+
+checkUnnamed1150(core.Map<core.String, api.ColorDefinition> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkColorDefinition(o["x"]);
+  checkColorDefinition(o["y"]);
+}
+
+buildUnnamed1151() {
+  var o = new core.Map<core.String, api.ColorDefinition>();
+  o["x"] = buildColorDefinition();
+  o["y"] = buildColorDefinition();
+  return o;
+}
+
+checkUnnamed1151(core.Map<core.String, api.ColorDefinition> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkColorDefinition(o["x"]);
+  checkColorDefinition(o["y"]);
+}
+
+core.int buildCounterColors = 0;
+buildColors() {
+  var o = new api.Colors();
+  buildCounterColors++;
+  if (buildCounterColors < 3) {
+    o.calendar = buildUnnamed1150();
+    o.event = buildUnnamed1151();
+    o.kind = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+  }
+  buildCounterColors--;
+  return o;
+}
+
+checkColors(api.Colors o) {
+  buildCounterColors++;
+  if (buildCounterColors < 3) {
+    checkUnnamed1150(o.calendar);
+    checkUnnamed1151(o.event);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+  }
+  buildCounterColors--;
+}
+
+core.int buildCounterError = 0;
+buildError() {
+  var o = new api.Error();
+  buildCounterError++;
+  if (buildCounterError < 3) {
+    o.domain = "foo";
+    o.reason = "foo";
+  }
+  buildCounterError--;
+  return o;
+}
+
+checkError(api.Error o) {
+  buildCounterError++;
+  if (buildCounterError < 3) {
+    unittest.expect(o.domain, unittest.equals('foo'));
+    unittest.expect(o.reason, unittest.equals('foo'));
+  }
+  buildCounterError--;
+}
+
+buildUnnamed1152() {
+  var o = new core.List<api.EventAttachment>();
+  o.add(buildEventAttachment());
+  o.add(buildEventAttachment());
+  return o;
+}
+
+checkUnnamed1152(core.List<api.EventAttachment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEventAttachment(o[0]);
+  checkEventAttachment(o[1]);
+}
+
+buildUnnamed1153() {
+  var o = new core.List<api.EventAttendee>();
+  o.add(buildEventAttendee());
+  o.add(buildEventAttendee());
+  return o;
+}
+
+checkUnnamed1153(core.List<api.EventAttendee> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEventAttendee(o[0]);
+  checkEventAttendee(o[1]);
+}
+
+core.int buildCounterEventCreator = 0;
+buildEventCreator() {
+  var o = new api.EventCreator();
+  buildCounterEventCreator++;
+  if (buildCounterEventCreator < 3) {
+    o.displayName = "foo";
+    o.email = "foo";
+    o.id = "foo";
+    o.self = true;
+  }
+  buildCounterEventCreator--;
+  return o;
+}
+
+checkEventCreator(api.EventCreator o) {
+  buildCounterEventCreator++;
+  if (buildCounterEventCreator < 3) {
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.self, unittest.isTrue);
+  }
+  buildCounterEventCreator--;
+}
+
+buildUnnamed1154() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed1154(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+buildUnnamed1155() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed1155(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterEventExtendedProperties = 0;
+buildEventExtendedProperties() {
+  var o = new api.EventExtendedProperties();
+  buildCounterEventExtendedProperties++;
+  if (buildCounterEventExtendedProperties < 3) {
+    o.private = buildUnnamed1154();
+    o.shared = buildUnnamed1155();
+  }
+  buildCounterEventExtendedProperties--;
+  return o;
+}
+
+checkEventExtendedProperties(api.EventExtendedProperties o) {
+  buildCounterEventExtendedProperties++;
+  if (buildCounterEventExtendedProperties < 3) {
+    checkUnnamed1154(o.private);
+    checkUnnamed1155(o.shared);
+  }
+  buildCounterEventExtendedProperties--;
+}
+
+buildUnnamed1156() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed1156(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterEventGadget = 0;
+buildEventGadget() {
+  var o = new api.EventGadget();
+  buildCounterEventGadget++;
+  if (buildCounterEventGadget < 3) {
+    o.display = "foo";
+    o.height = 42;
+    o.iconLink = "foo";
+    o.link = "foo";
+    o.preferences = buildUnnamed1156();
+    o.title = "foo";
+    o.type = "foo";
+    o.width = 42;
+  }
+  buildCounterEventGadget--;
+  return o;
+}
+
+checkEventGadget(api.EventGadget o) {
+  buildCounterEventGadget++;
+  if (buildCounterEventGadget < 3) {
+    unittest.expect(o.display, unittest.equals('foo'));
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.iconLink, unittest.equals('foo'));
+    unittest.expect(o.link, unittest.equals('foo'));
+    checkUnnamed1156(o.preferences);
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterEventGadget--;
+}
+
+core.int buildCounterEventOrganizer = 0;
+buildEventOrganizer() {
+  var o = new api.EventOrganizer();
+  buildCounterEventOrganizer++;
+  if (buildCounterEventOrganizer < 3) {
+    o.displayName = "foo";
+    o.email = "foo";
+    o.id = "foo";
+    o.self = true;
+  }
+  buildCounterEventOrganizer--;
+  return o;
+}
+
+checkEventOrganizer(api.EventOrganizer o) {
+  buildCounterEventOrganizer++;
+  if (buildCounterEventOrganizer < 3) {
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.self, unittest.isTrue);
+  }
+  buildCounterEventOrganizer--;
+}
+
+buildUnnamed1157() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1157(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1158() {
+  var o = new core.List<api.EventReminder>();
+  o.add(buildEventReminder());
+  o.add(buildEventReminder());
+  return o;
+}
+
+checkUnnamed1158(core.List<api.EventReminder> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEventReminder(o[0]);
+  checkEventReminder(o[1]);
+}
+
+core.int buildCounterEventReminders = 0;
+buildEventReminders() {
+  var o = new api.EventReminders();
+  buildCounterEventReminders++;
+  if (buildCounterEventReminders < 3) {
+    o.overrides = buildUnnamed1158();
+    o.useDefault = true;
+  }
+  buildCounterEventReminders--;
+  return o;
+}
+
+checkEventReminders(api.EventReminders o) {
+  buildCounterEventReminders++;
+  if (buildCounterEventReminders < 3) {
+    checkUnnamed1158(o.overrides);
+    unittest.expect(o.useDefault, unittest.isTrue);
+  }
+  buildCounterEventReminders--;
+}
+
+core.int buildCounterEventSource = 0;
+buildEventSource() {
+  var o = new api.EventSource();
+  buildCounterEventSource++;
+  if (buildCounterEventSource < 3) {
+    o.title = "foo";
+    o.url = "foo";
+  }
+  buildCounterEventSource--;
+  return o;
+}
+
+checkEventSource(api.EventSource o) {
+  buildCounterEventSource++;
+  if (buildCounterEventSource < 3) {
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterEventSource--;
+}
+
+core.int buildCounterEvent = 0;
+buildEvent() {
+  var o = new api.Event();
+  buildCounterEvent++;
+  if (buildCounterEvent < 3) {
+    o.anyoneCanAddSelf = true;
+    o.attachments = buildUnnamed1152();
+    o.attendees = buildUnnamed1153();
+    o.attendeesOmitted = true;
+    o.colorId = "foo";
+    o.created = core.DateTime.parse("2002-02-27T14:01:02");
+    o.creator = buildEventCreator();
+    o.description = "foo";
+    o.end = buildEventDateTime();
+    o.endTimeUnspecified = true;
+    o.etag = "foo";
+    o.extendedProperties = buildEventExtendedProperties();
+    o.gadget = buildEventGadget();
+    o.guestsCanInviteOthers = true;
+    o.guestsCanModify = true;
+    o.guestsCanSeeOtherGuests = true;
+    o.hangoutLink = "foo";
+    o.htmlLink = "foo";
+    o.iCalUID = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.location = "foo";
+    o.locked = true;
+    o.organizer = buildEventOrganizer();
+    o.originalStartTime = buildEventDateTime();
+    o.privateCopy = true;
+    o.recurrence = buildUnnamed1157();
+    o.recurringEventId = "foo";
+    o.reminders = buildEventReminders();
+    o.sequence = 42;
+    o.source = buildEventSource();
+    o.start = buildEventDateTime();
+    o.status = "foo";
+    o.summary = "foo";
+    o.transparency = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.visibility = "foo";
+  }
+  buildCounterEvent--;
+  return o;
+}
+
+checkEvent(api.Event o) {
+  buildCounterEvent++;
+  if (buildCounterEvent < 3) {
+    unittest.expect(o.anyoneCanAddSelf, unittest.isTrue);
+    checkUnnamed1152(o.attachments);
+    checkUnnamed1153(o.attendees);
+    unittest.expect(o.attendeesOmitted, unittest.isTrue);
+    unittest.expect(o.colorId, unittest.equals('foo'));
+    unittest.expect(
+        o.created, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    checkEventCreator(o.creator);
+    unittest.expect(o.description, unittest.equals('foo'));
+    checkEventDateTime(o.end);
+    unittest.expect(o.endTimeUnspecified, unittest.isTrue);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkEventExtendedProperties(o.extendedProperties);
+    checkEventGadget(o.gadget);
+    unittest.expect(o.guestsCanInviteOthers, unittest.isTrue);
+    unittest.expect(o.guestsCanModify, unittest.isTrue);
+    unittest.expect(o.guestsCanSeeOtherGuests, unittest.isTrue);
+    unittest.expect(o.hangoutLink, unittest.equals('foo'));
+    unittest.expect(o.htmlLink, unittest.equals('foo'));
+    unittest.expect(o.iCalUID, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    unittest.expect(o.locked, unittest.isTrue);
+    checkEventOrganizer(o.organizer);
+    checkEventDateTime(o.originalStartTime);
+    unittest.expect(o.privateCopy, unittest.isTrue);
+    checkUnnamed1157(o.recurrence);
+    unittest.expect(o.recurringEventId, unittest.equals('foo'));
+    checkEventReminders(o.reminders);
+    unittest.expect(o.sequence, unittest.equals(42));
+    checkEventSource(o.source);
+    checkEventDateTime(o.start);
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(o.summary, unittest.equals('foo'));
+    unittest.expect(o.transparency, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.visibility, unittest.equals('foo'));
+  }
+  buildCounterEvent--;
+}
+
+core.int buildCounterEventAttachment = 0;
+buildEventAttachment() {
+  var o = new api.EventAttachment();
+  buildCounterEventAttachment++;
+  if (buildCounterEventAttachment < 3) {
+    o.fileId = "foo";
+    o.fileUrl = "foo";
+    o.iconLink = "foo";
+    o.mimeType = "foo";
+    o.title = "foo";
+  }
+  buildCounterEventAttachment--;
+  return o;
+}
+
+checkEventAttachment(api.EventAttachment o) {
+  buildCounterEventAttachment++;
+  if (buildCounterEventAttachment < 3) {
+    unittest.expect(o.fileId, unittest.equals('foo'));
+    unittest.expect(o.fileUrl, unittest.equals('foo'));
+    unittest.expect(o.iconLink, unittest.equals('foo'));
+    unittest.expect(o.mimeType, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterEventAttachment--;
+}
+
+core.int buildCounterEventAttendee = 0;
+buildEventAttendee() {
+  var o = new api.EventAttendee();
+  buildCounterEventAttendee++;
+  if (buildCounterEventAttendee < 3) {
+    o.additionalGuests = 42;
+    o.comment = "foo";
+    o.displayName = "foo";
+    o.email = "foo";
+    o.id = "foo";
+    o.optional = true;
+    o.organizer = true;
+    o.resource = true;
+    o.responseStatus = "foo";
+    o.self = true;
+  }
+  buildCounterEventAttendee--;
+  return o;
+}
+
+checkEventAttendee(api.EventAttendee o) {
+  buildCounterEventAttendee++;
+  if (buildCounterEventAttendee < 3) {
+    unittest.expect(o.additionalGuests, unittest.equals(42));
+    unittest.expect(o.comment, unittest.equals('foo'));
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.optional, unittest.isTrue);
+    unittest.expect(o.organizer, unittest.isTrue);
+    unittest.expect(o.resource, unittest.isTrue);
+    unittest.expect(o.responseStatus, unittest.equals('foo'));
+    unittest.expect(o.self, unittest.isTrue);
+  }
+  buildCounterEventAttendee--;
+}
+
+core.int buildCounterEventDateTime = 0;
+buildEventDateTime() {
+  var o = new api.EventDateTime();
+  buildCounterEventDateTime++;
+  if (buildCounterEventDateTime < 3) {
+    o.date = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.dateTime = core.DateTime.parse("2002-02-27T14:01:02");
+    o.timeZone = "foo";
+  }
+  buildCounterEventDateTime--;
+  return o;
+}
+
+checkEventDateTime(api.EventDateTime o) {
+  buildCounterEventDateTime++;
+  if (buildCounterEventDateTime < 3) {
+    unittest.expect(
+        o.date, unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    unittest.expect(o.dateTime,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.timeZone, unittest.equals('foo'));
+  }
+  buildCounterEventDateTime--;
+}
+
+core.int buildCounterEventReminder = 0;
+buildEventReminder() {
+  var o = new api.EventReminder();
+  buildCounterEventReminder++;
+  if (buildCounterEventReminder < 3) {
+    o.method = "foo";
+    o.minutes = 42;
+  }
+  buildCounterEventReminder--;
+  return o;
+}
+
+checkEventReminder(api.EventReminder o) {
+  buildCounterEventReminder++;
+  if (buildCounterEventReminder < 3) {
+    unittest.expect(o.method, unittest.equals('foo'));
+    unittest.expect(o.minutes, unittest.equals(42));
+  }
+  buildCounterEventReminder--;
+}
+
+buildUnnamed1159() {
+  var o = new core.List<api.EventReminder>();
+  o.add(buildEventReminder());
+  o.add(buildEventReminder());
+  return o;
+}
+
+checkUnnamed1159(core.List<api.EventReminder> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEventReminder(o[0]);
+  checkEventReminder(o[1]);
+}
+
+buildUnnamed1160() {
+  var o = new core.List<api.Event>();
+  o.add(buildEvent());
+  o.add(buildEvent());
+  return o;
+}
+
+checkUnnamed1160(core.List<api.Event> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEvent(o[0]);
+  checkEvent(o[1]);
+}
+
+core.int buildCounterEvents = 0;
+buildEvents() {
+  var o = new api.Events();
+  buildCounterEvents++;
+  if (buildCounterEvents < 3) {
+    o.accessRole = "foo";
+    o.defaultReminders = buildUnnamed1159();
+    o.description = "foo";
+    o.etag = "foo";
+    o.items = buildUnnamed1160();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.nextSyncToken = "foo";
+    o.summary = "foo";
+    o.timeZone = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+  }
+  buildCounterEvents--;
+  return o;
+}
+
+checkEvents(api.Events o) {
+  buildCounterEvents++;
+  if (buildCounterEvents < 3) {
+    unittest.expect(o.accessRole, unittest.equals('foo'));
+    checkUnnamed1159(o.defaultReminders);
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1160(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.nextSyncToken, unittest.equals('foo'));
+    unittest.expect(o.summary, unittest.equals('foo'));
+    unittest.expect(o.timeZone, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+  }
+  buildCounterEvents--;
+}
+
+buildUnnamed1161() {
+  var o = new core.List<api.TimePeriod>();
+  o.add(buildTimePeriod());
+  o.add(buildTimePeriod());
+  return o;
+}
+
+checkUnnamed1161(core.List<api.TimePeriod> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTimePeriod(o[0]);
+  checkTimePeriod(o[1]);
+}
+
+buildUnnamed1162() {
+  var o = new core.List<api.Error>();
+  o.add(buildError());
+  o.add(buildError());
+  return o;
+}
+
+checkUnnamed1162(core.List<api.Error> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkError(o[0]);
+  checkError(o[1]);
+}
+
+core.int buildCounterFreeBusyCalendar = 0;
+buildFreeBusyCalendar() {
+  var o = new api.FreeBusyCalendar();
+  buildCounterFreeBusyCalendar++;
+  if (buildCounterFreeBusyCalendar < 3) {
+    o.busy = buildUnnamed1161();
+    o.errors = buildUnnamed1162();
+  }
+  buildCounterFreeBusyCalendar--;
+  return o;
+}
+
+checkFreeBusyCalendar(api.FreeBusyCalendar o) {
+  buildCounterFreeBusyCalendar++;
+  if (buildCounterFreeBusyCalendar < 3) {
+    checkUnnamed1161(o.busy);
+    checkUnnamed1162(o.errors);
+  }
+  buildCounterFreeBusyCalendar--;
+}
+
+buildUnnamed1163() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1163(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1164() {
+  var o = new core.List<api.Error>();
+  o.add(buildError());
+  o.add(buildError());
+  return o;
+}
+
+checkUnnamed1164(core.List<api.Error> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkError(o[0]);
+  checkError(o[1]);
+}
+
+core.int buildCounterFreeBusyGroup = 0;
+buildFreeBusyGroup() {
+  var o = new api.FreeBusyGroup();
+  buildCounterFreeBusyGroup++;
+  if (buildCounterFreeBusyGroup < 3) {
+    o.calendars = buildUnnamed1163();
+    o.errors = buildUnnamed1164();
+  }
+  buildCounterFreeBusyGroup--;
+  return o;
+}
+
+checkFreeBusyGroup(api.FreeBusyGroup o) {
+  buildCounterFreeBusyGroup++;
+  if (buildCounterFreeBusyGroup < 3) {
+    checkUnnamed1163(o.calendars);
+    checkUnnamed1164(o.errors);
+  }
+  buildCounterFreeBusyGroup--;
+}
+
+buildUnnamed1165() {
+  var o = new core.List<api.FreeBusyRequestItem>();
+  o.add(buildFreeBusyRequestItem());
+  o.add(buildFreeBusyRequestItem());
+  return o;
+}
+
+checkUnnamed1165(core.List<api.FreeBusyRequestItem> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFreeBusyRequestItem(o[0]);
+  checkFreeBusyRequestItem(o[1]);
+}
+
+core.int buildCounterFreeBusyRequest = 0;
+buildFreeBusyRequest() {
+  var o = new api.FreeBusyRequest();
+  buildCounterFreeBusyRequest++;
+  if (buildCounterFreeBusyRequest < 3) {
+    o.calendarExpansionMax = 42;
+    o.groupExpansionMax = 42;
+    o.items = buildUnnamed1165();
+    o.timeMax = core.DateTime.parse("2002-02-27T14:01:02");
+    o.timeMin = core.DateTime.parse("2002-02-27T14:01:02");
+    o.timeZone = "foo";
+  }
+  buildCounterFreeBusyRequest--;
+  return o;
+}
+
+checkFreeBusyRequest(api.FreeBusyRequest o) {
+  buildCounterFreeBusyRequest++;
+  if (buildCounterFreeBusyRequest < 3) {
+    unittest.expect(o.calendarExpansionMax, unittest.equals(42));
+    unittest.expect(o.groupExpansionMax, unittest.equals(42));
+    checkUnnamed1165(o.items);
+    unittest.expect(
+        o.timeMax, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(
+        o.timeMin, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.timeZone, unittest.equals('foo'));
+  }
+  buildCounterFreeBusyRequest--;
+}
+
+core.int buildCounterFreeBusyRequestItem = 0;
+buildFreeBusyRequestItem() {
+  var o = new api.FreeBusyRequestItem();
+  buildCounterFreeBusyRequestItem++;
+  if (buildCounterFreeBusyRequestItem < 3) {
+    o.id = "foo";
+  }
+  buildCounterFreeBusyRequestItem--;
+  return o;
+}
+
+checkFreeBusyRequestItem(api.FreeBusyRequestItem o) {
+  buildCounterFreeBusyRequestItem++;
+  if (buildCounterFreeBusyRequestItem < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+  }
+  buildCounterFreeBusyRequestItem--;
+}
+
+buildUnnamed1166() {
+  var o = new core.Map<core.String, api.FreeBusyCalendar>();
+  o["x"] = buildFreeBusyCalendar();
+  o["y"] = buildFreeBusyCalendar();
+  return o;
+}
+
+checkUnnamed1166(core.Map<core.String, api.FreeBusyCalendar> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFreeBusyCalendar(o["x"]);
+  checkFreeBusyCalendar(o["y"]);
+}
+
+buildUnnamed1167() {
+  var o = new core.Map<core.String, api.FreeBusyGroup>();
+  o["x"] = buildFreeBusyGroup();
+  o["y"] = buildFreeBusyGroup();
+  return o;
+}
+
+checkUnnamed1167(core.Map<core.String, api.FreeBusyGroup> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFreeBusyGroup(o["x"]);
+  checkFreeBusyGroup(o["y"]);
+}
+
+core.int buildCounterFreeBusyResponse = 0;
+buildFreeBusyResponse() {
+  var o = new api.FreeBusyResponse();
+  buildCounterFreeBusyResponse++;
+  if (buildCounterFreeBusyResponse < 3) {
+    o.calendars = buildUnnamed1166();
+    o.groups = buildUnnamed1167();
+    o.kind = "foo";
+    o.timeMax = core.DateTime.parse("2002-02-27T14:01:02");
+    o.timeMin = core.DateTime.parse("2002-02-27T14:01:02");
+  }
+  buildCounterFreeBusyResponse--;
+  return o;
+}
+
+checkFreeBusyResponse(api.FreeBusyResponse o) {
+  buildCounterFreeBusyResponse++;
+  if (buildCounterFreeBusyResponse < 3) {
+    checkUnnamed1166(o.calendars);
+    checkUnnamed1167(o.groups);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(
+        o.timeMax, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(
+        o.timeMin, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+  }
+  buildCounterFreeBusyResponse--;
+}
+
+core.int buildCounterSetting = 0;
+buildSetting() {
+  var o = new api.Setting();
+  buildCounterSetting++;
+  if (buildCounterSetting < 3) {
+    o.etag = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.value = "foo";
+  }
+  buildCounterSetting--;
+  return o;
+}
+
+checkSetting(api.Setting o) {
+  buildCounterSetting++;
+  if (buildCounterSetting < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterSetting--;
+}
+
+buildUnnamed1168() {
+  var o = new core.List<api.Setting>();
+  o.add(buildSetting());
+  o.add(buildSetting());
+  return o;
+}
+
+checkUnnamed1168(core.List<api.Setting> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSetting(o[0]);
+  checkSetting(o[1]);
+}
+
+core.int buildCounterSettings = 0;
+buildSettings() {
+  var o = new api.Settings();
+  buildCounterSettings++;
+  if (buildCounterSettings < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1168();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.nextSyncToken = "foo";
+  }
+  buildCounterSettings--;
+  return o;
+}
+
+checkSettings(api.Settings o) {
+  buildCounterSettings++;
+  if (buildCounterSettings < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1168(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.nextSyncToken, unittest.equals('foo'));
+  }
+  buildCounterSettings--;
+}
+
+core.int buildCounterTimePeriod = 0;
+buildTimePeriod() {
+  var o = new api.TimePeriod();
+  buildCounterTimePeriod++;
+  if (buildCounterTimePeriod < 3) {
+    o.end = core.DateTime.parse("2002-02-27T14:01:02");
+    o.start = core.DateTime.parse("2002-02-27T14:01:02");
+  }
+  buildCounterTimePeriod--;
+  return o;
+}
+
+checkTimePeriod(api.TimePeriod o) {
+  buildCounterTimePeriod++;
+  if (buildCounterTimePeriod < 3) {
+    unittest.expect(
+        o.end, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(
+        o.start, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+  }
+  buildCounterTimePeriod--;
+}
+
+buildUnnamed1169() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1169(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1170() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1170(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1171() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1171(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1172() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1172(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-Acl", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAcl();
+      var od = new api.Acl.fromJson(o.toJson());
+      checkAcl(od);
+    });
+  });
+
+  unittest.group("obj-schema-AclRuleScope", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAclRuleScope();
+      var od = new api.AclRuleScope.fromJson(o.toJson());
+      checkAclRuleScope(od);
+    });
+  });
+
+  unittest.group("obj-schema-AclRule", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAclRule();
+      var od = new api.AclRule.fromJson(o.toJson());
+      checkAclRule(od);
+    });
+  });
+
+  unittest.group("obj-schema-Calendar", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCalendar();
+      var od = new api.Calendar.fromJson(o.toJson());
+      checkCalendar(od);
+    });
+  });
+
+  unittest.group("obj-schema-CalendarList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCalendarList();
+      var od = new api.CalendarList.fromJson(o.toJson());
+      checkCalendarList(od);
+    });
+  });
+
+  unittest.group("obj-schema-CalendarListEntryNotificationSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCalendarListEntryNotificationSettings();
+      var od =
+          new api.CalendarListEntryNotificationSettings.fromJson(o.toJson());
+      checkCalendarListEntryNotificationSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-CalendarListEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCalendarListEntry();
+      var od = new api.CalendarListEntry.fromJson(o.toJson());
+      checkCalendarListEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-CalendarNotification", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCalendarNotification();
+      var od = new api.CalendarNotification.fromJson(o.toJson());
+      checkCalendarNotification(od);
+    });
+  });
+
+  unittest.group("obj-schema-Channel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildChannel();
+      var od = new api.Channel.fromJson(o.toJson());
+      checkChannel(od);
+    });
+  });
+
+  unittest.group("obj-schema-ColorDefinition", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildColorDefinition();
+      var od = new api.ColorDefinition.fromJson(o.toJson());
+      checkColorDefinition(od);
+    });
+  });
+
+  unittest.group("obj-schema-Colors", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildColors();
+      var od = new api.Colors.fromJson(o.toJson());
+      checkColors(od);
+    });
+  });
+
+  unittest.group("obj-schema-Error", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildError();
+      var od = new api.Error.fromJson(o.toJson());
+      checkError(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventCreator", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventCreator();
+      var od = new api.EventCreator.fromJson(o.toJson());
+      checkEventCreator(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventExtendedProperties", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventExtendedProperties();
+      var od = new api.EventExtendedProperties.fromJson(o.toJson());
+      checkEventExtendedProperties(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventGadget", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventGadget();
+      var od = new api.EventGadget.fromJson(o.toJson());
+      checkEventGadget(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventOrganizer", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventOrganizer();
+      var od = new api.EventOrganizer.fromJson(o.toJson());
+      checkEventOrganizer(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventReminders", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventReminders();
+      var od = new api.EventReminders.fromJson(o.toJson());
+      checkEventReminders(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventSource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventSource();
+      var od = new api.EventSource.fromJson(o.toJson());
+      checkEventSource(od);
+    });
+  });
+
+  unittest.group("obj-schema-Event", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEvent();
+      var od = new api.Event.fromJson(o.toJson());
+      checkEvent(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventAttachment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventAttachment();
+      var od = new api.EventAttachment.fromJson(o.toJson());
+      checkEventAttachment(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventAttendee", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventAttendee();
+      var od = new api.EventAttendee.fromJson(o.toJson());
+      checkEventAttendee(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventDateTime", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventDateTime();
+      var od = new api.EventDateTime.fromJson(o.toJson());
+      checkEventDateTime(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventReminder", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventReminder();
+      var od = new api.EventReminder.fromJson(o.toJson());
+      checkEventReminder(od);
+    });
+  });
+
+  unittest.group("obj-schema-Events", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEvents();
+      var od = new api.Events.fromJson(o.toJson());
+      checkEvents(od);
+    });
+  });
+
+  unittest.group("obj-schema-FreeBusyCalendar", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFreeBusyCalendar();
+      var od = new api.FreeBusyCalendar.fromJson(o.toJson());
+      checkFreeBusyCalendar(od);
+    });
+  });
+
+  unittest.group("obj-schema-FreeBusyGroup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFreeBusyGroup();
+      var od = new api.FreeBusyGroup.fromJson(o.toJson());
+      checkFreeBusyGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-FreeBusyRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFreeBusyRequest();
+      var od = new api.FreeBusyRequest.fromJson(o.toJson());
+      checkFreeBusyRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-FreeBusyRequestItem", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFreeBusyRequestItem();
+      var od = new api.FreeBusyRequestItem.fromJson(o.toJson());
+      checkFreeBusyRequestItem(od);
+    });
+  });
+
+  unittest.group("obj-schema-FreeBusyResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFreeBusyResponse();
+      var od = new api.FreeBusyResponse.fromJson(o.toJson());
+      checkFreeBusyResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Setting", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSetting();
+      var od = new api.Setting.fromJson(o.toJson());
+      checkSetting(od);
+    });
+  });
+
+  unittest.group("obj-schema-Settings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSettings();
+      var od = new api.Settings.fromJson(o.toJson());
+      checkSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-TimePeriod", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTimePeriod();
+      var od = new api.TimePeriod.fromJson(o.toJson());
+      checkTimePeriod(od);
+    });
+  });
+
+  unittest.group("resource-AclResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AclResourceApi res = new api.CalendarApi(mock).acl;
+      var arg_calendarId = "foo";
+      var arg_ruleId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/acl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/acl/"));
+        pathOffset += 5;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_ruleId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_calendarId, arg_ruleId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AclResourceApi res = new api.CalendarApi(mock).acl;
+      var arg_calendarId = "foo";
+      var arg_ruleId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/acl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/acl/"));
+        pathOffset += 5;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_ruleId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAclRule());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_calendarId, arg_ruleId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AclRule response) {
+        checkAclRule(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.AclResourceApi res = new api.CalendarApi(mock).acl;
+      var arg_request = buildAclRule();
+      var arg_calendarId = "foo";
+      var arg_sendNotifications = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AclRule.fromJson(json);
+        checkAclRule(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/acl", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 4),
+            unittest.equals("/acl"));
+        pathOffset += 4;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["sendNotifications"].first,
+            unittest.equals("$arg_sendNotifications"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAclRule());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_calendarId,
+              sendNotifications: arg_sendNotifications, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AclRule response) {
+        checkAclRule(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AclResourceApi res = new api.CalendarApi(mock).acl;
+      var arg_calendarId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_showDeleted = true;
+      var arg_syncToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/acl", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 4),
+            unittest.equals("/acl"));
+        pathOffset += 4;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["showDeleted"].first, unittest.equals("$arg_showDeleted"));
+        unittest.expect(
+            queryMap["syncToken"].first, unittest.equals(arg_syncToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAcl());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_calendarId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              showDeleted: arg_showDeleted,
+              syncToken: arg_syncToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Acl response) {
+        checkAcl(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.AclResourceApi res = new api.CalendarApi(mock).acl;
+      var arg_request = buildAclRule();
+      var arg_calendarId = "foo";
+      var arg_ruleId = "foo";
+      var arg_sendNotifications = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AclRule.fromJson(json);
+        checkAclRule(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/acl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/acl/"));
+        pathOffset += 5;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_ruleId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["sendNotifications"].first,
+            unittest.equals("$arg_sendNotifications"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAclRule());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_calendarId, arg_ruleId,
+              sendNotifications: arg_sendNotifications, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AclRule response) {
+        checkAclRule(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AclResourceApi res = new api.CalendarApi(mock).acl;
+      var arg_request = buildAclRule();
+      var arg_calendarId = "foo";
+      var arg_ruleId = "foo";
+      var arg_sendNotifications = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AclRule.fromJson(json);
+        checkAclRule(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/acl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/acl/"));
+        pathOffset += 5;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_ruleId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["sendNotifications"].first,
+            unittest.equals("$arg_sendNotifications"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAclRule());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_calendarId, arg_ruleId,
+              sendNotifications: arg_sendNotifications, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AclRule response) {
+        checkAclRule(response);
+      })));
+    });
+
+    unittest.test("method--watch", () {
+      var mock = new HttpServerMock();
+      api.AclResourceApi res = new api.CalendarApi(mock).acl;
+      var arg_request = buildChannel();
+      var arg_calendarId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_showDeleted = true;
+      var arg_syncToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Channel.fromJson(json);
+        checkChannel(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/acl/watch", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/acl/watch"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["showDeleted"].first, unittest.equals("$arg_showDeleted"));
+        unittest.expect(
+            queryMap["syncToken"].first, unittest.equals(arg_syncToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .watch(arg_request, arg_calendarId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              showDeleted: arg_showDeleted,
+              syncToken: arg_syncToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Channel response) {
+        checkChannel(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CalendarListResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.CalendarListResourceApi res = new api.CalendarApi(mock).calendarList;
+      var arg_calendarId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("users/me/calendarList/"));
+        pathOffset += 22;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_calendarId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CalendarListResourceApi res = new api.CalendarApi(mock).calendarList;
+      var arg_calendarId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("users/me/calendarList/"));
+        pathOffset += 22;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCalendarListEntry());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_calendarId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CalendarListEntry response) {
+        checkCalendarListEntry(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.CalendarListResourceApi res = new api.CalendarApi(mock).calendarList;
+      var arg_request = buildCalendarListEntry();
+      var arg_colorRgbFormat = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CalendarListEntry.fromJson(json);
+        checkCalendarListEntry(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("users/me/calendarList"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["colorRgbFormat"].first,
+            unittest.equals("$arg_colorRgbFormat"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCalendarListEntry());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request,
+              colorRgbFormat: arg_colorRgbFormat, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CalendarListEntry response) {
+        checkCalendarListEntry(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CalendarListResourceApi res = new api.CalendarApi(mock).calendarList;
+      var arg_maxResults = 42;
+      var arg_minAccessRole = "foo";
+      var arg_pageToken = "foo";
+      var arg_showDeleted = true;
+      var arg_showHidden = true;
+      var arg_syncToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("users/me/calendarList"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["minAccessRole"].first,
+            unittest.equals(arg_minAccessRole));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["showDeleted"].first, unittest.equals("$arg_showDeleted"));
+        unittest.expect(
+            queryMap["showHidden"].first, unittest.equals("$arg_showHidden"));
+        unittest.expect(
+            queryMap["syncToken"].first, unittest.equals(arg_syncToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCalendarList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              maxResults: arg_maxResults,
+              minAccessRole: arg_minAccessRole,
+              pageToken: arg_pageToken,
+              showDeleted: arg_showDeleted,
+              showHidden: arg_showHidden,
+              syncToken: arg_syncToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CalendarList response) {
+        checkCalendarList(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.CalendarListResourceApi res = new api.CalendarApi(mock).calendarList;
+      var arg_request = buildCalendarListEntry();
+      var arg_calendarId = "foo";
+      var arg_colorRgbFormat = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CalendarListEntry.fromJson(json);
+        checkCalendarListEntry(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("users/me/calendarList/"));
+        pathOffset += 22;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["colorRgbFormat"].first,
+            unittest.equals("$arg_colorRgbFormat"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCalendarListEntry());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_calendarId,
+              colorRgbFormat: arg_colorRgbFormat, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CalendarListEntry response) {
+        checkCalendarListEntry(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.CalendarListResourceApi res = new api.CalendarApi(mock).calendarList;
+      var arg_request = buildCalendarListEntry();
+      var arg_calendarId = "foo";
+      var arg_colorRgbFormat = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CalendarListEntry.fromJson(json);
+        checkCalendarListEntry(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("users/me/calendarList/"));
+        pathOffset += 22;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["colorRgbFormat"].first,
+            unittest.equals("$arg_colorRgbFormat"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCalendarListEntry());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_calendarId,
+              colorRgbFormat: arg_colorRgbFormat, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CalendarListEntry response) {
+        checkCalendarListEntry(response);
+      })));
+    });
+
+    unittest.test("method--watch", () {
+      var mock = new HttpServerMock();
+      api.CalendarListResourceApi res = new api.CalendarApi(mock).calendarList;
+      var arg_request = buildChannel();
+      var arg_maxResults = 42;
+      var arg_minAccessRole = "foo";
+      var arg_pageToken = "foo";
+      var arg_showDeleted = true;
+      var arg_showHidden = true;
+      var arg_syncToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Channel.fromJson(json);
+        checkChannel(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 27),
+            unittest.equals("users/me/calendarList/watch"));
+        pathOffset += 27;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["minAccessRole"].first,
+            unittest.equals(arg_minAccessRole));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["showDeleted"].first, unittest.equals("$arg_showDeleted"));
+        unittest.expect(
+            queryMap["showHidden"].first, unittest.equals("$arg_showHidden"));
+        unittest.expect(
+            queryMap["syncToken"].first, unittest.equals(arg_syncToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .watch(arg_request,
+              maxResults: arg_maxResults,
+              minAccessRole: arg_minAccessRole,
+              pageToken: arg_pageToken,
+              showDeleted: arg_showDeleted,
+              showHidden: arg_showHidden,
+              syncToken: arg_syncToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Channel response) {
+        checkChannel(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CalendarsResourceApi", () {
+    unittest.test("method--clear", () {
+      var mock = new HttpServerMock();
+      api.CalendarsResourceApi res = new api.CalendarApi(mock).calendars;
+      var arg_calendarId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/clear", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/clear"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .clear(arg_calendarId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.CalendarsResourceApi res = new api.CalendarApi(mock).calendars;
+      var arg_calendarId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_calendarId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CalendarsResourceApi res = new api.CalendarApi(mock).calendars;
+      var arg_calendarId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCalendar());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_calendarId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Calendar response) {
+        checkCalendar(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.CalendarsResourceApi res = new api.CalendarApi(mock).calendars;
+      var arg_request = buildCalendar();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Calendar.fromJson(json);
+        checkCalendar(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("calendars"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCalendar());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Calendar response) {
+        checkCalendar(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.CalendarsResourceApi res = new api.CalendarApi(mock).calendars;
+      var arg_request = buildCalendar();
+      var arg_calendarId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Calendar.fromJson(json);
+        checkCalendar(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCalendar());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_calendarId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Calendar response) {
+        checkCalendar(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.CalendarsResourceApi res = new api.CalendarApi(mock).calendars;
+      var arg_request = buildCalendar();
+      var arg_calendarId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Calendar.fromJson(json);
+        checkCalendar(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCalendar());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_calendarId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Calendar response) {
+        checkCalendar(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ChannelsResourceApi", () {
+    unittest.test("method--stop", () {
+      var mock = new HttpServerMock();
+      api.ChannelsResourceApi res = new api.CalendarApi(mock).channels;
+      var arg_request = buildChannel();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Channel.fromJson(json);
+        checkChannel(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("channels/stop"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .stop(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+  });
+
+  unittest.group("resource-ColorsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ColorsResourceApi res = new api.CalendarApi(mock).colors;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("colors"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildColors());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Colors response) {
+        checkColors(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-EventsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.EventsResourceApi res = new api.CalendarApi(mock).events;
+      var arg_calendarId = "foo";
+      var arg_eventId = "foo";
+      var arg_sendNotifications = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/events/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/events/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_eventId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["sendNotifications"].first,
+            unittest.equals("$arg_sendNotifications"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_calendarId, arg_eventId,
+              sendNotifications: arg_sendNotifications, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.EventsResourceApi res = new api.CalendarApi(mock).events;
+      var arg_calendarId = "foo";
+      var arg_eventId = "foo";
+      var arg_alwaysIncludeEmail = true;
+      var arg_maxAttendees = 42;
+      var arg_timeZone = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/events/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/events/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_eventId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["alwaysIncludeEmail"].first,
+            unittest.equals("$arg_alwaysIncludeEmail"));
+        unittest.expect(core.int.parse(queryMap["maxAttendees"].first),
+            unittest.equals(arg_maxAttendees));
+        unittest.expect(
+            queryMap["timeZone"].first, unittest.equals(arg_timeZone));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEvent());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_calendarId, arg_eventId,
+              alwaysIncludeEmail: arg_alwaysIncludeEmail,
+              maxAttendees: arg_maxAttendees,
+              timeZone: arg_timeZone,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Event response) {
+        checkEvent(response);
+      })));
+    });
+
+    unittest.test("method--import", () {
+      var mock = new HttpServerMock();
+      api.EventsResourceApi res = new api.CalendarApi(mock).events;
+      var arg_request = buildEvent();
+      var arg_calendarId = "foo";
+      var arg_supportsAttachments = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Event.fromJson(json);
+        checkEvent(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/events/import", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/events/import"));
+        pathOffset += 14;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["supportsAttachments"].first,
+            unittest.equals("$arg_supportsAttachments"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEvent());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .import(arg_request, arg_calendarId,
+              supportsAttachments: arg_supportsAttachments,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Event response) {
+        checkEvent(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.EventsResourceApi res = new api.CalendarApi(mock).events;
+      var arg_request = buildEvent();
+      var arg_calendarId = "foo";
+      var arg_maxAttendees = 42;
+      var arg_sendNotifications = true;
+      var arg_supportsAttachments = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Event.fromJson(json);
+        checkEvent(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/events", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/events"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxAttendees"].first),
+            unittest.equals(arg_maxAttendees));
+        unittest.expect(queryMap["sendNotifications"].first,
+            unittest.equals("$arg_sendNotifications"));
+        unittest.expect(queryMap["supportsAttachments"].first,
+            unittest.equals("$arg_supportsAttachments"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEvent());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_calendarId,
+              maxAttendees: arg_maxAttendees,
+              sendNotifications: arg_sendNotifications,
+              supportsAttachments: arg_supportsAttachments,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Event response) {
+        checkEvent(response);
+      })));
+    });
+
+    unittest.test("method--instances", () {
+      var mock = new HttpServerMock();
+      api.EventsResourceApi res = new api.CalendarApi(mock).events;
+      var arg_calendarId = "foo";
+      var arg_eventId = "foo";
+      var arg_alwaysIncludeEmail = true;
+      var arg_maxAttendees = 42;
+      var arg_maxResults = 42;
+      var arg_originalStart = "foo";
+      var arg_pageToken = "foo";
+      var arg_showDeleted = true;
+      var arg_timeMax = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_timeMin = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_timeZone = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/events/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/events/"));
+        pathOffset += 8;
+        index = path.indexOf("/instances", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_eventId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/instances"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["alwaysIncludeEmail"].first,
+            unittest.equals("$arg_alwaysIncludeEmail"));
+        unittest.expect(core.int.parse(queryMap["maxAttendees"].first),
+            unittest.equals(arg_maxAttendees));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["originalStart"].first,
+            unittest.equals(arg_originalStart));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["showDeleted"].first, unittest.equals("$arg_showDeleted"));
+        unittest.expect(core.DateTime.parse(queryMap["timeMax"].first),
+            unittest.equals(arg_timeMax));
+        unittest.expect(core.DateTime.parse(queryMap["timeMin"].first),
+            unittest.equals(arg_timeMin));
+        unittest.expect(
+            queryMap["timeZone"].first, unittest.equals(arg_timeZone));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEvents());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .instances(arg_calendarId, arg_eventId,
+              alwaysIncludeEmail: arg_alwaysIncludeEmail,
+              maxAttendees: arg_maxAttendees,
+              maxResults: arg_maxResults,
+              originalStart: arg_originalStart,
+              pageToken: arg_pageToken,
+              showDeleted: arg_showDeleted,
+              timeMax: arg_timeMax,
+              timeMin: arg_timeMin,
+              timeZone: arg_timeZone,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Events response) {
+        checkEvents(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.EventsResourceApi res = new api.CalendarApi(mock).events;
+      var arg_calendarId = "foo";
+      var arg_alwaysIncludeEmail = true;
+      var arg_iCalUID = "foo";
+      var arg_maxAttendees = 42;
+      var arg_maxResults = 42;
+      var arg_orderBy = "foo";
+      var arg_pageToken = "foo";
+      var arg_privateExtendedProperty = buildUnnamed1169();
+      var arg_q = "foo";
+      var arg_sharedExtendedProperty = buildUnnamed1170();
+      var arg_showDeleted = true;
+      var arg_showHiddenInvitations = true;
+      var arg_singleEvents = true;
+      var arg_syncToken = "foo";
+      var arg_timeMax = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_timeMin = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_timeZone = "foo";
+      var arg_updatedMin = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/events", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/events"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["alwaysIncludeEmail"].first,
+            unittest.equals("$arg_alwaysIncludeEmail"));
+        unittest.expect(
+            queryMap["iCalUID"].first, unittest.equals(arg_iCalUID));
+        unittest.expect(core.int.parse(queryMap["maxAttendees"].first),
+            unittest.equals(arg_maxAttendees));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["privateExtendedProperty"],
+            unittest.equals(arg_privateExtendedProperty));
+        unittest.expect(queryMap["q"].first, unittest.equals(arg_q));
+        unittest.expect(queryMap["sharedExtendedProperty"],
+            unittest.equals(arg_sharedExtendedProperty));
+        unittest.expect(
+            queryMap["showDeleted"].first, unittest.equals("$arg_showDeleted"));
+        unittest.expect(queryMap["showHiddenInvitations"].first,
+            unittest.equals("$arg_showHiddenInvitations"));
+        unittest.expect(queryMap["singleEvents"].first,
+            unittest.equals("$arg_singleEvents"));
+        unittest.expect(
+            queryMap["syncToken"].first, unittest.equals(arg_syncToken));
+        unittest.expect(core.DateTime.parse(queryMap["timeMax"].first),
+            unittest.equals(arg_timeMax));
+        unittest.expect(core.DateTime.parse(queryMap["timeMin"].first),
+            unittest.equals(arg_timeMin));
+        unittest.expect(
+            queryMap["timeZone"].first, unittest.equals(arg_timeZone));
+        unittest.expect(core.DateTime.parse(queryMap["updatedMin"].first),
+            unittest.equals(arg_updatedMin));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEvents());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_calendarId,
+              alwaysIncludeEmail: arg_alwaysIncludeEmail,
+              iCalUID: arg_iCalUID,
+              maxAttendees: arg_maxAttendees,
+              maxResults: arg_maxResults,
+              orderBy: arg_orderBy,
+              pageToken: arg_pageToken,
+              privateExtendedProperty: arg_privateExtendedProperty,
+              q: arg_q,
+              sharedExtendedProperty: arg_sharedExtendedProperty,
+              showDeleted: arg_showDeleted,
+              showHiddenInvitations: arg_showHiddenInvitations,
+              singleEvents: arg_singleEvents,
+              syncToken: arg_syncToken,
+              timeMax: arg_timeMax,
+              timeMin: arg_timeMin,
+              timeZone: arg_timeZone,
+              updatedMin: arg_updatedMin,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Events response) {
+        checkEvents(response);
+      })));
+    });
+
+    unittest.test("method--move", () {
+      var mock = new HttpServerMock();
+      api.EventsResourceApi res = new api.CalendarApi(mock).events;
+      var arg_calendarId = "foo";
+      var arg_eventId = "foo";
+      var arg_destination = "foo";
+      var arg_sendNotifications = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/events/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/events/"));
+        pathOffset += 8;
+        index = path.indexOf("/move", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_eventId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/move"));
+        pathOffset += 5;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["destination"].first, unittest.equals(arg_destination));
+        unittest.expect(queryMap["sendNotifications"].first,
+            unittest.equals("$arg_sendNotifications"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEvent());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .move(arg_calendarId, arg_eventId, arg_destination,
+              sendNotifications: arg_sendNotifications, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Event response) {
+        checkEvent(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.EventsResourceApi res = new api.CalendarApi(mock).events;
+      var arg_request = buildEvent();
+      var arg_calendarId = "foo";
+      var arg_eventId = "foo";
+      var arg_alwaysIncludeEmail = true;
+      var arg_maxAttendees = 42;
+      var arg_sendNotifications = true;
+      var arg_supportsAttachments = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Event.fromJson(json);
+        checkEvent(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/events/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/events/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_eventId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["alwaysIncludeEmail"].first,
+            unittest.equals("$arg_alwaysIncludeEmail"));
+        unittest.expect(core.int.parse(queryMap["maxAttendees"].first),
+            unittest.equals(arg_maxAttendees));
+        unittest.expect(queryMap["sendNotifications"].first,
+            unittest.equals("$arg_sendNotifications"));
+        unittest.expect(queryMap["supportsAttachments"].first,
+            unittest.equals("$arg_supportsAttachments"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEvent());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_calendarId, arg_eventId,
+              alwaysIncludeEmail: arg_alwaysIncludeEmail,
+              maxAttendees: arg_maxAttendees,
+              sendNotifications: arg_sendNotifications,
+              supportsAttachments: arg_supportsAttachments,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Event response) {
+        checkEvent(response);
+      })));
+    });
+
+    unittest.test("method--quickAdd", () {
+      var mock = new HttpServerMock();
+      api.EventsResourceApi res = new api.CalendarApi(mock).events;
+      var arg_calendarId = "foo";
+      var arg_text = "foo";
+      var arg_sendNotifications = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/events/quickAdd", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/events/quickAdd"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["text"].first, unittest.equals(arg_text));
+        unittest.expect(queryMap["sendNotifications"].first,
+            unittest.equals("$arg_sendNotifications"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEvent());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .quickAdd(arg_calendarId, arg_text,
+              sendNotifications: arg_sendNotifications, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Event response) {
+        checkEvent(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.EventsResourceApi res = new api.CalendarApi(mock).events;
+      var arg_request = buildEvent();
+      var arg_calendarId = "foo";
+      var arg_eventId = "foo";
+      var arg_alwaysIncludeEmail = true;
+      var arg_maxAttendees = 42;
+      var arg_sendNotifications = true;
+      var arg_supportsAttachments = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Event.fromJson(json);
+        checkEvent(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/events/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/events/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_eventId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["alwaysIncludeEmail"].first,
+            unittest.equals("$arg_alwaysIncludeEmail"));
+        unittest.expect(core.int.parse(queryMap["maxAttendees"].first),
+            unittest.equals(arg_maxAttendees));
+        unittest.expect(queryMap["sendNotifications"].first,
+            unittest.equals("$arg_sendNotifications"));
+        unittest.expect(queryMap["supportsAttachments"].first,
+            unittest.equals("$arg_supportsAttachments"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEvent());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_calendarId, arg_eventId,
+              alwaysIncludeEmail: arg_alwaysIncludeEmail,
+              maxAttendees: arg_maxAttendees,
+              sendNotifications: arg_sendNotifications,
+              supportsAttachments: arg_supportsAttachments,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Event response) {
+        checkEvent(response);
+      })));
+    });
+
+    unittest.test("method--watch", () {
+      var mock = new HttpServerMock();
+      api.EventsResourceApi res = new api.CalendarApi(mock).events;
+      var arg_request = buildChannel();
+      var arg_calendarId = "foo";
+      var arg_alwaysIncludeEmail = true;
+      var arg_iCalUID = "foo";
+      var arg_maxAttendees = 42;
+      var arg_maxResults = 42;
+      var arg_orderBy = "foo";
+      var arg_pageToken = "foo";
+      var arg_privateExtendedProperty = buildUnnamed1171();
+      var arg_q = "foo";
+      var arg_sharedExtendedProperty = buildUnnamed1172();
+      var arg_showDeleted = true;
+      var arg_showHiddenInvitations = true;
+      var arg_singleEvents = true;
+      var arg_syncToken = "foo";
+      var arg_timeMax = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_timeMin = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_timeZone = "foo";
+      var arg_updatedMin = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Channel.fromJson(json);
+        checkChannel(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("calendars/"));
+        pathOffset += 10;
+        index = path.indexOf("/events/watch", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_calendarId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/events/watch"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["alwaysIncludeEmail"].first,
+            unittest.equals("$arg_alwaysIncludeEmail"));
+        unittest.expect(
+            queryMap["iCalUID"].first, unittest.equals(arg_iCalUID));
+        unittest.expect(core.int.parse(queryMap["maxAttendees"].first),
+            unittest.equals(arg_maxAttendees));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["privateExtendedProperty"],
+            unittest.equals(arg_privateExtendedProperty));
+        unittest.expect(queryMap["q"].first, unittest.equals(arg_q));
+        unittest.expect(queryMap["sharedExtendedProperty"],
+            unittest.equals(arg_sharedExtendedProperty));
+        unittest.expect(
+            queryMap["showDeleted"].first, unittest.equals("$arg_showDeleted"));
+        unittest.expect(queryMap["showHiddenInvitations"].first,
+            unittest.equals("$arg_showHiddenInvitations"));
+        unittest.expect(queryMap["singleEvents"].first,
+            unittest.equals("$arg_singleEvents"));
+        unittest.expect(
+            queryMap["syncToken"].first, unittest.equals(arg_syncToken));
+        unittest.expect(core.DateTime.parse(queryMap["timeMax"].first),
+            unittest.equals(arg_timeMax));
+        unittest.expect(core.DateTime.parse(queryMap["timeMin"].first),
+            unittest.equals(arg_timeMin));
+        unittest.expect(
+            queryMap["timeZone"].first, unittest.equals(arg_timeZone));
+        unittest.expect(core.DateTime.parse(queryMap["updatedMin"].first),
+            unittest.equals(arg_updatedMin));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .watch(arg_request, arg_calendarId,
+              alwaysIncludeEmail: arg_alwaysIncludeEmail,
+              iCalUID: arg_iCalUID,
+              maxAttendees: arg_maxAttendees,
+              maxResults: arg_maxResults,
+              orderBy: arg_orderBy,
+              pageToken: arg_pageToken,
+              privateExtendedProperty: arg_privateExtendedProperty,
+              q: arg_q,
+              sharedExtendedProperty: arg_sharedExtendedProperty,
+              showDeleted: arg_showDeleted,
+              showHiddenInvitations: arg_showHiddenInvitations,
+              singleEvents: arg_singleEvents,
+              syncToken: arg_syncToken,
+              timeMax: arg_timeMax,
+              timeMin: arg_timeMin,
+              timeZone: arg_timeZone,
+              updatedMin: arg_updatedMin,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Channel response) {
+        checkChannel(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-FreebusyResourceApi", () {
+    unittest.test("method--query", () {
+      var mock = new HttpServerMock();
+      api.FreebusyResourceApi res = new api.CalendarApi(mock).freebusy;
+      var arg_request = buildFreeBusyRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.FreeBusyRequest.fromJson(json);
+        checkFreeBusyRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("freeBusy"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFreeBusyResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .query(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FreeBusyResponse response) {
+        checkFreeBusyResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-SettingsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.SettingsResourceApi res = new api.CalendarApi(mock).settings;
+      var arg_setting = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("users/me/settings/"));
+        pathOffset += 18;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_setting"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSetting());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_setting, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Setting response) {
+        checkSetting(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.SettingsResourceApi res = new api.CalendarApi(mock).settings;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_syncToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("users/me/settings"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["syncToken"].first, unittest.equals(arg_syncToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSettings());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              syncToken: arg_syncToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Settings response) {
+        checkSettings(response);
+      })));
+    });
+
+    unittest.test("method--watch", () {
+      var mock = new HttpServerMock();
+      api.SettingsResourceApi res = new api.CalendarApi(mock).settings;
+      var arg_request = buildChannel();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_syncToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Channel.fromJson(json);
+        checkChannel(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("calendar/v3/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 23),
+            unittest.equals("users/me/settings/watch"));
+        pathOffset += 23;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["syncToken"].first, unittest.equals(arg_syncToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .watch(arg_request,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              syncToken: arg_syncToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Channel response) {
+        checkChannel(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/civicinfo/v2_test.dart b/generated/googleapis/test/civicinfo/v2_test.dart
new file mode 100644
index 0000000..4e6910f
--- /dev/null
+++ b/generated/googleapis/test/civicinfo/v2_test.dart
@@ -0,0 +1,1979 @@
+library googleapis.civicinfo.v2.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/civicinfo/v2.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+buildUnnamed2601() {
+  var o = new core.List<api.Source>();
+  o.add(buildSource());
+  o.add(buildSource());
+  return o;
+}
+
+checkUnnamed2601(core.List<api.Source> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSource(o[0]);
+  checkSource(o[1]);
+}
+
+core.int buildCounterAdministrationRegion = 0;
+buildAdministrationRegion() {
+  var o = new api.AdministrationRegion();
+  buildCounterAdministrationRegion++;
+  if (buildCounterAdministrationRegion < 3) {
+    o.electionAdministrationBody = buildAdministrativeBody();
+    o.id = "foo";
+    o.localJurisdiction = buildAdministrationRegion();
+    o.name = "foo";
+    o.sources = buildUnnamed2601();
+  }
+  buildCounterAdministrationRegion--;
+  return o;
+}
+
+checkAdministrationRegion(api.AdministrationRegion o) {
+  buildCounterAdministrationRegion++;
+  if (buildCounterAdministrationRegion < 3) {
+    checkAdministrativeBody(o.electionAdministrationBody);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkAdministrationRegion(o.localJurisdiction);
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed2601(o.sources);
+  }
+  buildCounterAdministrationRegion--;
+}
+
+buildUnnamed2602() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2602(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2603() {
+  var o = new core.List<api.ElectionOfficial>();
+  o.add(buildElectionOfficial());
+  o.add(buildElectionOfficial());
+  return o;
+}
+
+checkUnnamed2603(core.List<api.ElectionOfficial> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkElectionOfficial(o[0]);
+  checkElectionOfficial(o[1]);
+}
+
+buildUnnamed2604() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2604(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAdministrativeBody = 0;
+buildAdministrativeBody() {
+  var o = new api.AdministrativeBody();
+  buildCounterAdministrativeBody++;
+  if (buildCounterAdministrativeBody < 3) {
+    o.absenteeVotingInfoUrl = "foo";
+    o.addressLines = buildUnnamed2602();
+    o.ballotInfoUrl = "foo";
+    o.correspondenceAddress = buildSimpleAddressType();
+    o.electionInfoUrl = "foo";
+    o.electionOfficials = buildUnnamed2603();
+    o.electionRegistrationConfirmationUrl = "foo";
+    o.electionRegistrationUrl = "foo";
+    o.electionRulesUrl = "foo";
+    o.hoursOfOperation = "foo";
+    o.name = "foo";
+    o.physicalAddress = buildSimpleAddressType();
+    o.voterServices = buildUnnamed2604();
+    o.votingLocationFinderUrl = "foo";
+  }
+  buildCounterAdministrativeBody--;
+  return o;
+}
+
+checkAdministrativeBody(api.AdministrativeBody o) {
+  buildCounterAdministrativeBody++;
+  if (buildCounterAdministrativeBody < 3) {
+    unittest.expect(o.absenteeVotingInfoUrl, unittest.equals('foo'));
+    checkUnnamed2602(o.addressLines);
+    unittest.expect(o.ballotInfoUrl, unittest.equals('foo'));
+    checkSimpleAddressType(o.correspondenceAddress);
+    unittest.expect(o.electionInfoUrl, unittest.equals('foo'));
+    checkUnnamed2603(o.electionOfficials);
+    unittest.expect(
+        o.electionRegistrationConfirmationUrl, unittest.equals('foo'));
+    unittest.expect(o.electionRegistrationUrl, unittest.equals('foo'));
+    unittest.expect(o.electionRulesUrl, unittest.equals('foo'));
+    unittest.expect(o.hoursOfOperation, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkSimpleAddressType(o.physicalAddress);
+    checkUnnamed2604(o.voterServices);
+    unittest.expect(o.votingLocationFinderUrl, unittest.equals('foo'));
+  }
+  buildCounterAdministrativeBody--;
+}
+
+buildUnnamed2605() {
+  var o = new core.List<api.Channel>();
+  o.add(buildChannel());
+  o.add(buildChannel());
+  return o;
+}
+
+checkUnnamed2605(core.List<api.Channel> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkChannel(o[0]);
+  checkChannel(o[1]);
+}
+
+core.int buildCounterCandidate = 0;
+buildCandidate() {
+  var o = new api.Candidate();
+  buildCounterCandidate++;
+  if (buildCounterCandidate < 3) {
+    o.candidateUrl = "foo";
+    o.channels = buildUnnamed2605();
+    o.email = "foo";
+    o.name = "foo";
+    o.orderOnBallot = "foo";
+    o.party = "foo";
+    o.phone = "foo";
+    o.photoUrl = "foo";
+  }
+  buildCounterCandidate--;
+  return o;
+}
+
+checkCandidate(api.Candidate o) {
+  buildCounterCandidate++;
+  if (buildCounterCandidate < 3) {
+    unittest.expect(o.candidateUrl, unittest.equals('foo'));
+    checkUnnamed2605(o.channels);
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.orderOnBallot, unittest.equals('foo'));
+    unittest.expect(o.party, unittest.equals('foo'));
+    unittest.expect(o.phone, unittest.equals('foo'));
+    unittest.expect(o.photoUrl, unittest.equals('foo'));
+  }
+  buildCounterCandidate--;
+}
+
+core.int buildCounterChannel = 0;
+buildChannel() {
+  var o = new api.Channel();
+  buildCounterChannel++;
+  if (buildCounterChannel < 3) {
+    o.id = "foo";
+    o.type = "foo";
+  }
+  buildCounterChannel--;
+  return o;
+}
+
+checkChannel(api.Channel o) {
+  buildCounterChannel++;
+  if (buildCounterChannel < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterChannel--;
+}
+
+buildUnnamed2606() {
+  var o = new core.List<api.Candidate>();
+  o.add(buildCandidate());
+  o.add(buildCandidate());
+  return o;
+}
+
+checkUnnamed2606(core.List<api.Candidate> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCandidate(o[0]);
+  checkCandidate(o[1]);
+}
+
+buildUnnamed2607() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2607(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2608() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2608(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2609() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2609(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2610() {
+  var o = new core.List<api.Source>();
+  o.add(buildSource());
+  o.add(buildSource());
+  return o;
+}
+
+checkUnnamed2610(core.List<api.Source> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSource(o[0]);
+  checkSource(o[1]);
+}
+
+core.int buildCounterContest = 0;
+buildContest() {
+  var o = new api.Contest();
+  buildCounterContest++;
+  if (buildCounterContest < 3) {
+    o.ballotPlacement = "foo";
+    o.candidates = buildUnnamed2606();
+    o.district = buildElectoralDistrict();
+    o.electorateSpecifications = "foo";
+    o.id = "foo";
+    o.level = buildUnnamed2607();
+    o.numberElected = "foo";
+    o.numberVotingFor = "foo";
+    o.office = "foo";
+    o.primaryParty = "foo";
+    o.referendumBallotResponses = buildUnnamed2608();
+    o.referendumBrief = "foo";
+    o.referendumConStatement = "foo";
+    o.referendumEffectOfAbstain = "foo";
+    o.referendumPassageThreshold = "foo";
+    o.referendumProStatement = "foo";
+    o.referendumSubtitle = "foo";
+    o.referendumText = "foo";
+    o.referendumTitle = "foo";
+    o.referendumUrl = "foo";
+    o.roles = buildUnnamed2609();
+    o.sources = buildUnnamed2610();
+    o.special = "foo";
+    o.type = "foo";
+  }
+  buildCounterContest--;
+  return o;
+}
+
+checkContest(api.Contest o) {
+  buildCounterContest++;
+  if (buildCounterContest < 3) {
+    unittest.expect(o.ballotPlacement, unittest.equals('foo'));
+    checkUnnamed2606(o.candidates);
+    checkElectoralDistrict(o.district);
+    unittest.expect(o.electorateSpecifications, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed2607(o.level);
+    unittest.expect(o.numberElected, unittest.equals('foo'));
+    unittest.expect(o.numberVotingFor, unittest.equals('foo'));
+    unittest.expect(o.office, unittest.equals('foo'));
+    unittest.expect(o.primaryParty, unittest.equals('foo'));
+    checkUnnamed2608(o.referendumBallotResponses);
+    unittest.expect(o.referendumBrief, unittest.equals('foo'));
+    unittest.expect(o.referendumConStatement, unittest.equals('foo'));
+    unittest.expect(o.referendumEffectOfAbstain, unittest.equals('foo'));
+    unittest.expect(o.referendumPassageThreshold, unittest.equals('foo'));
+    unittest.expect(o.referendumProStatement, unittest.equals('foo'));
+    unittest.expect(o.referendumSubtitle, unittest.equals('foo'));
+    unittest.expect(o.referendumText, unittest.equals('foo'));
+    unittest.expect(o.referendumTitle, unittest.equals('foo'));
+    unittest.expect(o.referendumUrl, unittest.equals('foo'));
+    checkUnnamed2609(o.roles);
+    checkUnnamed2610(o.sources);
+    unittest.expect(o.special, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterContest--;
+}
+
+core.int buildCounterContextParams = 0;
+buildContextParams() {
+  var o = new api.ContextParams();
+  buildCounterContextParams++;
+  if (buildCounterContextParams < 3) {
+    o.clientProfile = "foo";
+  }
+  buildCounterContextParams--;
+  return o;
+}
+
+checkContextParams(api.ContextParams o) {
+  buildCounterContextParams++;
+  if (buildCounterContextParams < 3) {
+    unittest.expect(o.clientProfile, unittest.equals('foo'));
+  }
+  buildCounterContextParams--;
+}
+
+core.int buildCounterDivisionRepresentativeInfoRequest = 0;
+buildDivisionRepresentativeInfoRequest() {
+  var o = new api.DivisionRepresentativeInfoRequest();
+  buildCounterDivisionRepresentativeInfoRequest++;
+  if (buildCounterDivisionRepresentativeInfoRequest < 3) {
+    o.contextParams = buildContextParams();
+  }
+  buildCounterDivisionRepresentativeInfoRequest--;
+  return o;
+}
+
+checkDivisionRepresentativeInfoRequest(
+    api.DivisionRepresentativeInfoRequest o) {
+  buildCounterDivisionRepresentativeInfoRequest++;
+  if (buildCounterDivisionRepresentativeInfoRequest < 3) {
+    checkContextParams(o.contextParams);
+  }
+  buildCounterDivisionRepresentativeInfoRequest--;
+}
+
+core.int buildCounterDivisionSearchRequest = 0;
+buildDivisionSearchRequest() {
+  var o = new api.DivisionSearchRequest();
+  buildCounterDivisionSearchRequest++;
+  if (buildCounterDivisionSearchRequest < 3) {
+    o.contextParams = buildContextParams();
+  }
+  buildCounterDivisionSearchRequest--;
+  return o;
+}
+
+checkDivisionSearchRequest(api.DivisionSearchRequest o) {
+  buildCounterDivisionSearchRequest++;
+  if (buildCounterDivisionSearchRequest < 3) {
+    checkContextParams(o.contextParams);
+  }
+  buildCounterDivisionSearchRequest--;
+}
+
+buildUnnamed2611() {
+  var o = new core.List<api.DivisionSearchResult>();
+  o.add(buildDivisionSearchResult());
+  o.add(buildDivisionSearchResult());
+  return o;
+}
+
+checkUnnamed2611(core.List<api.DivisionSearchResult> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDivisionSearchResult(o[0]);
+  checkDivisionSearchResult(o[1]);
+}
+
+core.int buildCounterDivisionSearchResponse = 0;
+buildDivisionSearchResponse() {
+  var o = new api.DivisionSearchResponse();
+  buildCounterDivisionSearchResponse++;
+  if (buildCounterDivisionSearchResponse < 3) {
+    o.kind = "foo";
+    o.results = buildUnnamed2611();
+  }
+  buildCounterDivisionSearchResponse--;
+  return o;
+}
+
+checkDivisionSearchResponse(api.DivisionSearchResponse o) {
+  buildCounterDivisionSearchResponse++;
+  if (buildCounterDivisionSearchResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2611(o.results);
+  }
+  buildCounterDivisionSearchResponse--;
+}
+
+buildUnnamed2612() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2612(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterDivisionSearchResult = 0;
+buildDivisionSearchResult() {
+  var o = new api.DivisionSearchResult();
+  buildCounterDivisionSearchResult++;
+  if (buildCounterDivisionSearchResult < 3) {
+    o.aliases = buildUnnamed2612();
+    o.name = "foo";
+    o.ocdId = "foo";
+  }
+  buildCounterDivisionSearchResult--;
+  return o;
+}
+
+checkDivisionSearchResult(api.DivisionSearchResult o) {
+  buildCounterDivisionSearchResult++;
+  if (buildCounterDivisionSearchResult < 3) {
+    checkUnnamed2612(o.aliases);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.ocdId, unittest.equals('foo'));
+  }
+  buildCounterDivisionSearchResult--;
+}
+
+core.int buildCounterElection = 0;
+buildElection() {
+  var o = new api.Election();
+  buildCounterElection++;
+  if (buildCounterElection < 3) {
+    o.electionDay = "foo";
+    o.id = "foo";
+    o.name = "foo";
+    o.ocdDivisionId = "foo";
+  }
+  buildCounterElection--;
+  return o;
+}
+
+checkElection(api.Election o) {
+  buildCounterElection++;
+  if (buildCounterElection < 3) {
+    unittest.expect(o.electionDay, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.ocdDivisionId, unittest.equals('foo'));
+  }
+  buildCounterElection--;
+}
+
+core.int buildCounterElectionOfficial = 0;
+buildElectionOfficial() {
+  var o = new api.ElectionOfficial();
+  buildCounterElectionOfficial++;
+  if (buildCounterElectionOfficial < 3) {
+    o.emailAddress = "foo";
+    o.faxNumber = "foo";
+    o.name = "foo";
+    o.officePhoneNumber = "foo";
+    o.title = "foo";
+  }
+  buildCounterElectionOfficial--;
+  return o;
+}
+
+checkElectionOfficial(api.ElectionOfficial o) {
+  buildCounterElectionOfficial++;
+  if (buildCounterElectionOfficial < 3) {
+    unittest.expect(o.emailAddress, unittest.equals('foo'));
+    unittest.expect(o.faxNumber, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.officePhoneNumber, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterElectionOfficial--;
+}
+
+core.int buildCounterElectionsQueryRequest = 0;
+buildElectionsQueryRequest() {
+  var o = new api.ElectionsQueryRequest();
+  buildCounterElectionsQueryRequest++;
+  if (buildCounterElectionsQueryRequest < 3) {
+    o.contextParams = buildContextParams();
+  }
+  buildCounterElectionsQueryRequest--;
+  return o;
+}
+
+checkElectionsQueryRequest(api.ElectionsQueryRequest o) {
+  buildCounterElectionsQueryRequest++;
+  if (buildCounterElectionsQueryRequest < 3) {
+    checkContextParams(o.contextParams);
+  }
+  buildCounterElectionsQueryRequest--;
+}
+
+buildUnnamed2613() {
+  var o = new core.List<api.Election>();
+  o.add(buildElection());
+  o.add(buildElection());
+  return o;
+}
+
+checkUnnamed2613(core.List<api.Election> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkElection(o[0]);
+  checkElection(o[1]);
+}
+
+core.int buildCounterElectionsQueryResponse = 0;
+buildElectionsQueryResponse() {
+  var o = new api.ElectionsQueryResponse();
+  buildCounterElectionsQueryResponse++;
+  if (buildCounterElectionsQueryResponse < 3) {
+    o.elections = buildUnnamed2613();
+    o.kind = "foo";
+  }
+  buildCounterElectionsQueryResponse--;
+  return o;
+}
+
+checkElectionsQueryResponse(api.ElectionsQueryResponse o) {
+  buildCounterElectionsQueryResponse++;
+  if (buildCounterElectionsQueryResponse < 3) {
+    checkUnnamed2613(o.elections);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterElectionsQueryResponse--;
+}
+
+core.int buildCounterElectoralDistrict = 0;
+buildElectoralDistrict() {
+  var o = new api.ElectoralDistrict();
+  buildCounterElectoralDistrict++;
+  if (buildCounterElectoralDistrict < 3) {
+    o.id = "foo";
+    o.kgForeignKey = "foo";
+    o.name = "foo";
+    o.scope = "foo";
+  }
+  buildCounterElectoralDistrict--;
+  return o;
+}
+
+checkElectoralDistrict(api.ElectoralDistrict o) {
+  buildCounterElectoralDistrict++;
+  if (buildCounterElectoralDistrict < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kgForeignKey, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.scope, unittest.equals('foo'));
+  }
+  buildCounterElectoralDistrict--;
+}
+
+buildUnnamed2614() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2614(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2615() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed2615(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+core.int buildCounterGeographicDivision = 0;
+buildGeographicDivision() {
+  var o = new api.GeographicDivision();
+  buildCounterGeographicDivision++;
+  if (buildCounterGeographicDivision < 3) {
+    o.alsoKnownAs = buildUnnamed2614();
+    o.name = "foo";
+    o.officeIndices = buildUnnamed2615();
+  }
+  buildCounterGeographicDivision--;
+  return o;
+}
+
+checkGeographicDivision(api.GeographicDivision o) {
+  buildCounterGeographicDivision++;
+  if (buildCounterGeographicDivision < 3) {
+    checkUnnamed2614(o.alsoKnownAs);
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed2615(o.officeIndices);
+  }
+  buildCounterGeographicDivision--;
+}
+
+buildUnnamed2616() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2616(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2617() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed2617(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+buildUnnamed2618() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2618(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2619() {
+  var o = new core.List<api.Source>();
+  o.add(buildSource());
+  o.add(buildSource());
+  return o;
+}
+
+checkUnnamed2619(core.List<api.Source> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSource(o[0]);
+  checkSource(o[1]);
+}
+
+core.int buildCounterOffice = 0;
+buildOffice() {
+  var o = new api.Office();
+  buildCounterOffice++;
+  if (buildCounterOffice < 3) {
+    o.divisionId = "foo";
+    o.levels = buildUnnamed2616();
+    o.name = "foo";
+    o.officialIndices = buildUnnamed2617();
+    o.roles = buildUnnamed2618();
+    o.sources = buildUnnamed2619();
+  }
+  buildCounterOffice--;
+  return o;
+}
+
+checkOffice(api.Office o) {
+  buildCounterOffice++;
+  if (buildCounterOffice < 3) {
+    unittest.expect(o.divisionId, unittest.equals('foo'));
+    checkUnnamed2616(o.levels);
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed2617(o.officialIndices);
+    checkUnnamed2618(o.roles);
+    checkUnnamed2619(o.sources);
+  }
+  buildCounterOffice--;
+}
+
+buildUnnamed2620() {
+  var o = new core.List<api.SimpleAddressType>();
+  o.add(buildSimpleAddressType());
+  o.add(buildSimpleAddressType());
+  return o;
+}
+
+checkUnnamed2620(core.List<api.SimpleAddressType> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSimpleAddressType(o[0]);
+  checkSimpleAddressType(o[1]);
+}
+
+buildUnnamed2621() {
+  var o = new core.List<api.Channel>();
+  o.add(buildChannel());
+  o.add(buildChannel());
+  return o;
+}
+
+checkUnnamed2621(core.List<api.Channel> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkChannel(o[0]);
+  checkChannel(o[1]);
+}
+
+buildUnnamed2622() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2622(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2623() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2623(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2624() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2624(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterOfficial = 0;
+buildOfficial() {
+  var o = new api.Official();
+  buildCounterOfficial++;
+  if (buildCounterOfficial < 3) {
+    o.address = buildUnnamed2620();
+    o.channels = buildUnnamed2621();
+    o.emails = buildUnnamed2622();
+    o.name = "foo";
+    o.party = "foo";
+    o.phones = buildUnnamed2623();
+    o.photoUrl = "foo";
+    o.urls = buildUnnamed2624();
+  }
+  buildCounterOfficial--;
+  return o;
+}
+
+checkOfficial(api.Official o) {
+  buildCounterOfficial++;
+  if (buildCounterOfficial < 3) {
+    checkUnnamed2620(o.address);
+    checkUnnamed2621(o.channels);
+    checkUnnamed2622(o.emails);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.party, unittest.equals('foo'));
+    checkUnnamed2623(o.phones);
+    unittest.expect(o.photoUrl, unittest.equals('foo'));
+    checkUnnamed2624(o.urls);
+  }
+  buildCounterOfficial--;
+}
+
+buildUnnamed2625() {
+  var o = new core.List<api.Source>();
+  o.add(buildSource());
+  o.add(buildSource());
+  return o;
+}
+
+checkUnnamed2625(core.List<api.Source> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSource(o[0]);
+  checkSource(o[1]);
+}
+
+core.int buildCounterPollingLocation = 0;
+buildPollingLocation() {
+  var o = new api.PollingLocation();
+  buildCounterPollingLocation++;
+  if (buildCounterPollingLocation < 3) {
+    o.address = buildSimpleAddressType();
+    o.endDate = "foo";
+    o.id = "foo";
+    o.name = "foo";
+    o.notes = "foo";
+    o.pollingHours = "foo";
+    o.sources = buildUnnamed2625();
+    o.startDate = "foo";
+    o.voterServices = "foo";
+  }
+  buildCounterPollingLocation--;
+  return o;
+}
+
+checkPollingLocation(api.PollingLocation o) {
+  buildCounterPollingLocation++;
+  if (buildCounterPollingLocation < 3) {
+    checkSimpleAddressType(o.address);
+    unittest.expect(o.endDate, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    unittest.expect(o.pollingHours, unittest.equals('foo'));
+    checkUnnamed2625(o.sources);
+    unittest.expect(o.startDate, unittest.equals('foo'));
+    unittest.expect(o.voterServices, unittest.equals('foo'));
+  }
+  buildCounterPollingLocation--;
+}
+
+buildUnnamed2626() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2626(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPostalAddress = 0;
+buildPostalAddress() {
+  var o = new api.PostalAddress();
+  buildCounterPostalAddress++;
+  if (buildCounterPostalAddress < 3) {
+    o.addressLines = buildUnnamed2626();
+    o.administrativeAreaName = "foo";
+    o.countryName = "foo";
+    o.countryNameCode = "foo";
+    o.dependentLocalityName = "foo";
+    o.dependentThoroughfareLeadingType = "foo";
+    o.dependentThoroughfareName = "foo";
+    o.dependentThoroughfarePostDirection = "foo";
+    o.dependentThoroughfarePreDirection = "foo";
+    o.dependentThoroughfareTrailingType = "foo";
+    o.dependentThoroughfaresConnector = "foo";
+    o.dependentThoroughfaresIndicator = "foo";
+    o.dependentThoroughfaresType = "foo";
+    o.firmName = "foo";
+    o.isDisputed = true;
+    o.languageCode = "foo";
+    o.localityName = "foo";
+    o.postBoxNumber = "foo";
+    o.postalCodeNumber = "foo";
+    o.postalCodeNumberExtension = "foo";
+    o.premiseName = "foo";
+    o.recipientName = "foo";
+    o.sortingCode = "foo";
+    o.subAdministrativeAreaName = "foo";
+    o.subPremiseName = "foo";
+    o.thoroughfareLeadingType = "foo";
+    o.thoroughfareName = "foo";
+    o.thoroughfareNumber = "foo";
+    o.thoroughfarePostDirection = "foo";
+    o.thoroughfarePreDirection = "foo";
+    o.thoroughfareTrailingType = "foo";
+  }
+  buildCounterPostalAddress--;
+  return o;
+}
+
+checkPostalAddress(api.PostalAddress o) {
+  buildCounterPostalAddress++;
+  if (buildCounterPostalAddress < 3) {
+    checkUnnamed2626(o.addressLines);
+    unittest.expect(o.administrativeAreaName, unittest.equals('foo'));
+    unittest.expect(o.countryName, unittest.equals('foo'));
+    unittest.expect(o.countryNameCode, unittest.equals('foo'));
+    unittest.expect(o.dependentLocalityName, unittest.equals('foo'));
+    unittest.expect(o.dependentThoroughfareLeadingType, unittest.equals('foo'));
+    unittest.expect(o.dependentThoroughfareName, unittest.equals('foo'));
+    unittest.expect(
+        o.dependentThoroughfarePostDirection, unittest.equals('foo'));
+    unittest.expect(
+        o.dependentThoroughfarePreDirection, unittest.equals('foo'));
+    unittest.expect(
+        o.dependentThoroughfareTrailingType, unittest.equals('foo'));
+    unittest.expect(o.dependentThoroughfaresConnector, unittest.equals('foo'));
+    unittest.expect(o.dependentThoroughfaresIndicator, unittest.equals('foo'));
+    unittest.expect(o.dependentThoroughfaresType, unittest.equals('foo'));
+    unittest.expect(o.firmName, unittest.equals('foo'));
+    unittest.expect(o.isDisputed, unittest.isTrue);
+    unittest.expect(o.languageCode, unittest.equals('foo'));
+    unittest.expect(o.localityName, unittest.equals('foo'));
+    unittest.expect(o.postBoxNumber, unittest.equals('foo'));
+    unittest.expect(o.postalCodeNumber, unittest.equals('foo'));
+    unittest.expect(o.postalCodeNumberExtension, unittest.equals('foo'));
+    unittest.expect(o.premiseName, unittest.equals('foo'));
+    unittest.expect(o.recipientName, unittest.equals('foo'));
+    unittest.expect(o.sortingCode, unittest.equals('foo'));
+    unittest.expect(o.subAdministrativeAreaName, unittest.equals('foo'));
+    unittest.expect(o.subPremiseName, unittest.equals('foo'));
+    unittest.expect(o.thoroughfareLeadingType, unittest.equals('foo'));
+    unittest.expect(o.thoroughfareName, unittest.equals('foo'));
+    unittest.expect(o.thoroughfareNumber, unittest.equals('foo'));
+    unittest.expect(o.thoroughfarePostDirection, unittest.equals('foo'));
+    unittest.expect(o.thoroughfarePreDirection, unittest.equals('foo'));
+    unittest.expect(o.thoroughfareTrailingType, unittest.equals('foo'));
+  }
+  buildCounterPostalAddress--;
+}
+
+buildUnnamed2627() {
+  var o = new core.Map<core.String, api.GeographicDivision>();
+  o["x"] = buildGeographicDivision();
+  o["y"] = buildGeographicDivision();
+  return o;
+}
+
+checkUnnamed2627(core.Map<core.String, api.GeographicDivision> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGeographicDivision(o["x"]);
+  checkGeographicDivision(o["y"]);
+}
+
+buildUnnamed2628() {
+  var o = new core.List<api.Office>();
+  o.add(buildOffice());
+  o.add(buildOffice());
+  return o;
+}
+
+checkUnnamed2628(core.List<api.Office> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOffice(o[0]);
+  checkOffice(o[1]);
+}
+
+buildUnnamed2629() {
+  var o = new core.List<api.Official>();
+  o.add(buildOfficial());
+  o.add(buildOfficial());
+  return o;
+}
+
+checkUnnamed2629(core.List<api.Official> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOfficial(o[0]);
+  checkOfficial(o[1]);
+}
+
+core.int buildCounterRepresentativeInfoData = 0;
+buildRepresentativeInfoData() {
+  var o = new api.RepresentativeInfoData();
+  buildCounterRepresentativeInfoData++;
+  if (buildCounterRepresentativeInfoData < 3) {
+    o.divisions = buildUnnamed2627();
+    o.offices = buildUnnamed2628();
+    o.officials = buildUnnamed2629();
+  }
+  buildCounterRepresentativeInfoData--;
+  return o;
+}
+
+checkRepresentativeInfoData(api.RepresentativeInfoData o) {
+  buildCounterRepresentativeInfoData++;
+  if (buildCounterRepresentativeInfoData < 3) {
+    checkUnnamed2627(o.divisions);
+    checkUnnamed2628(o.offices);
+    checkUnnamed2629(o.officials);
+  }
+  buildCounterRepresentativeInfoData--;
+}
+
+core.int buildCounterRepresentativeInfoRequest = 0;
+buildRepresentativeInfoRequest() {
+  var o = new api.RepresentativeInfoRequest();
+  buildCounterRepresentativeInfoRequest++;
+  if (buildCounterRepresentativeInfoRequest < 3) {
+    o.contextParams = buildContextParams();
+  }
+  buildCounterRepresentativeInfoRequest--;
+  return o;
+}
+
+checkRepresentativeInfoRequest(api.RepresentativeInfoRequest o) {
+  buildCounterRepresentativeInfoRequest++;
+  if (buildCounterRepresentativeInfoRequest < 3) {
+    checkContextParams(o.contextParams);
+  }
+  buildCounterRepresentativeInfoRequest--;
+}
+
+buildUnnamed2630() {
+  var o = new core.Map<core.String, api.GeographicDivision>();
+  o["x"] = buildGeographicDivision();
+  o["y"] = buildGeographicDivision();
+  return o;
+}
+
+checkUnnamed2630(core.Map<core.String, api.GeographicDivision> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGeographicDivision(o["x"]);
+  checkGeographicDivision(o["y"]);
+}
+
+buildUnnamed2631() {
+  var o = new core.List<api.Office>();
+  o.add(buildOffice());
+  o.add(buildOffice());
+  return o;
+}
+
+checkUnnamed2631(core.List<api.Office> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOffice(o[0]);
+  checkOffice(o[1]);
+}
+
+buildUnnamed2632() {
+  var o = new core.List<api.Official>();
+  o.add(buildOfficial());
+  o.add(buildOfficial());
+  return o;
+}
+
+checkUnnamed2632(core.List<api.Official> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOfficial(o[0]);
+  checkOfficial(o[1]);
+}
+
+core.int buildCounterRepresentativeInfoResponse = 0;
+buildRepresentativeInfoResponse() {
+  var o = new api.RepresentativeInfoResponse();
+  buildCounterRepresentativeInfoResponse++;
+  if (buildCounterRepresentativeInfoResponse < 3) {
+    o.divisions = buildUnnamed2630();
+    o.kind = "foo";
+    o.normalizedInput = buildSimpleAddressType();
+    o.offices = buildUnnamed2631();
+    o.officials = buildUnnamed2632();
+  }
+  buildCounterRepresentativeInfoResponse--;
+  return o;
+}
+
+checkRepresentativeInfoResponse(api.RepresentativeInfoResponse o) {
+  buildCounterRepresentativeInfoResponse++;
+  if (buildCounterRepresentativeInfoResponse < 3) {
+    checkUnnamed2630(o.divisions);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkSimpleAddressType(o.normalizedInput);
+    checkUnnamed2631(o.offices);
+    checkUnnamed2632(o.officials);
+  }
+  buildCounterRepresentativeInfoResponse--;
+}
+
+core.int buildCounterSimpleAddressType = 0;
+buildSimpleAddressType() {
+  var o = new api.SimpleAddressType();
+  buildCounterSimpleAddressType++;
+  if (buildCounterSimpleAddressType < 3) {
+    o.city = "foo";
+    o.line1 = "foo";
+    o.line2 = "foo";
+    o.line3 = "foo";
+    o.locationName = "foo";
+    o.state = "foo";
+    o.zip = "foo";
+  }
+  buildCounterSimpleAddressType--;
+  return o;
+}
+
+checkSimpleAddressType(api.SimpleAddressType o) {
+  buildCounterSimpleAddressType++;
+  if (buildCounterSimpleAddressType < 3) {
+    unittest.expect(o.city, unittest.equals('foo'));
+    unittest.expect(o.line1, unittest.equals('foo'));
+    unittest.expect(o.line2, unittest.equals('foo'));
+    unittest.expect(o.line3, unittest.equals('foo'));
+    unittest.expect(o.locationName, unittest.equals('foo'));
+    unittest.expect(o.state, unittest.equals('foo'));
+    unittest.expect(o.zip, unittest.equals('foo'));
+  }
+  buildCounterSimpleAddressType--;
+}
+
+core.int buildCounterSource = 0;
+buildSource() {
+  var o = new api.Source();
+  buildCounterSource++;
+  if (buildCounterSource < 3) {
+    o.name = "foo";
+    o.official = true;
+  }
+  buildCounterSource--;
+  return o;
+}
+
+checkSource(api.Source o) {
+  buildCounterSource++;
+  if (buildCounterSource < 3) {
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.official, unittest.isTrue);
+  }
+  buildCounterSource--;
+}
+
+core.int buildCounterVoterInfoRequest = 0;
+buildVoterInfoRequest() {
+  var o = new api.VoterInfoRequest();
+  buildCounterVoterInfoRequest++;
+  if (buildCounterVoterInfoRequest < 3) {
+    o.contextParams = buildContextParams();
+    o.voterInfoSegmentResult = buildVoterInfoSegmentResult();
+  }
+  buildCounterVoterInfoRequest--;
+  return o;
+}
+
+checkVoterInfoRequest(api.VoterInfoRequest o) {
+  buildCounterVoterInfoRequest++;
+  if (buildCounterVoterInfoRequest < 3) {
+    checkContextParams(o.contextParams);
+    checkVoterInfoSegmentResult(o.voterInfoSegmentResult);
+  }
+  buildCounterVoterInfoRequest--;
+}
+
+buildUnnamed2633() {
+  var o = new core.List<api.Contest>();
+  o.add(buildContest());
+  o.add(buildContest());
+  return o;
+}
+
+checkUnnamed2633(core.List<api.Contest> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContest(o[0]);
+  checkContest(o[1]);
+}
+
+buildUnnamed2634() {
+  var o = new core.List<api.PollingLocation>();
+  o.add(buildPollingLocation());
+  o.add(buildPollingLocation());
+  return o;
+}
+
+checkUnnamed2634(core.List<api.PollingLocation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPollingLocation(o[0]);
+  checkPollingLocation(o[1]);
+}
+
+buildUnnamed2635() {
+  var o = new core.List<api.PollingLocation>();
+  o.add(buildPollingLocation());
+  o.add(buildPollingLocation());
+  return o;
+}
+
+checkUnnamed2635(core.List<api.PollingLocation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPollingLocation(o[0]);
+  checkPollingLocation(o[1]);
+}
+
+buildUnnamed2636() {
+  var o = new core.List<api.Election>();
+  o.add(buildElection());
+  o.add(buildElection());
+  return o;
+}
+
+checkUnnamed2636(core.List<api.Election> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkElection(o[0]);
+  checkElection(o[1]);
+}
+
+buildUnnamed2637() {
+  var o = new core.List<api.PollingLocation>();
+  o.add(buildPollingLocation());
+  o.add(buildPollingLocation());
+  return o;
+}
+
+checkUnnamed2637(core.List<api.PollingLocation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPollingLocation(o[0]);
+  checkPollingLocation(o[1]);
+}
+
+buildUnnamed2638() {
+  var o = new core.List<api.AdministrationRegion>();
+  o.add(buildAdministrationRegion());
+  o.add(buildAdministrationRegion());
+  return o;
+}
+
+checkUnnamed2638(core.List<api.AdministrationRegion> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAdministrationRegion(o[0]);
+  checkAdministrationRegion(o[1]);
+}
+
+core.int buildCounterVoterInfoResponse = 0;
+buildVoterInfoResponse() {
+  var o = new api.VoterInfoResponse();
+  buildCounterVoterInfoResponse++;
+  if (buildCounterVoterInfoResponse < 3) {
+    o.contests = buildUnnamed2633();
+    o.dropOffLocations = buildUnnamed2634();
+    o.earlyVoteSites = buildUnnamed2635();
+    o.election = buildElection();
+    o.kind = "foo";
+    o.mailOnly = true;
+    o.normalizedInput = buildSimpleAddressType();
+    o.otherElections = buildUnnamed2636();
+    o.pollingLocations = buildUnnamed2637();
+    o.precinctId = "foo";
+    o.state = buildUnnamed2638();
+  }
+  buildCounterVoterInfoResponse--;
+  return o;
+}
+
+checkVoterInfoResponse(api.VoterInfoResponse o) {
+  buildCounterVoterInfoResponse++;
+  if (buildCounterVoterInfoResponse < 3) {
+    checkUnnamed2633(o.contests);
+    checkUnnamed2634(o.dropOffLocations);
+    checkUnnamed2635(o.earlyVoteSites);
+    checkElection(o.election);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.mailOnly, unittest.isTrue);
+    checkSimpleAddressType(o.normalizedInput);
+    checkUnnamed2636(o.otherElections);
+    checkUnnamed2637(o.pollingLocations);
+    unittest.expect(o.precinctId, unittest.equals('foo'));
+    checkUnnamed2638(o.state);
+  }
+  buildCounterVoterInfoResponse--;
+}
+
+core.int buildCounterVoterInfoSegmentResult = 0;
+buildVoterInfoSegmentResult() {
+  var o = new api.VoterInfoSegmentResult();
+  buildCounterVoterInfoSegmentResult++;
+  if (buildCounterVoterInfoSegmentResult < 3) {
+    o.generatedMillis = "foo";
+    o.postalAddress = buildPostalAddress();
+    o.request = buildVoterInfoRequest();
+    o.response = buildVoterInfoResponse();
+  }
+  buildCounterVoterInfoSegmentResult--;
+  return o;
+}
+
+checkVoterInfoSegmentResult(api.VoterInfoSegmentResult o) {
+  buildCounterVoterInfoSegmentResult++;
+  if (buildCounterVoterInfoSegmentResult < 3) {
+    unittest.expect(o.generatedMillis, unittest.equals('foo'));
+    checkPostalAddress(o.postalAddress);
+    checkVoterInfoRequest(o.request);
+    checkVoterInfoResponse(o.response);
+  }
+  buildCounterVoterInfoSegmentResult--;
+}
+
+buildUnnamed2639() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2639(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2640() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2640(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2641() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2641(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2642() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2642(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-AdministrationRegion", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdministrationRegion();
+      var od = new api.AdministrationRegion.fromJson(o.toJson());
+      checkAdministrationRegion(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdministrativeBody", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdministrativeBody();
+      var od = new api.AdministrativeBody.fromJson(o.toJson());
+      checkAdministrativeBody(od);
+    });
+  });
+
+  unittest.group("obj-schema-Candidate", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCandidate();
+      var od = new api.Candidate.fromJson(o.toJson());
+      checkCandidate(od);
+    });
+  });
+
+  unittest.group("obj-schema-Channel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildChannel();
+      var od = new api.Channel.fromJson(o.toJson());
+      checkChannel(od);
+    });
+  });
+
+  unittest.group("obj-schema-Contest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContest();
+      var od = new api.Contest.fromJson(o.toJson());
+      checkContest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ContextParams", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContextParams();
+      var od = new api.ContextParams.fromJson(o.toJson());
+      checkContextParams(od);
+    });
+  });
+
+  unittest.group("obj-schema-DivisionRepresentativeInfoRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDivisionRepresentativeInfoRequest();
+      var od = new api.DivisionRepresentativeInfoRequest.fromJson(o.toJson());
+      checkDivisionRepresentativeInfoRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DivisionSearchRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDivisionSearchRequest();
+      var od = new api.DivisionSearchRequest.fromJson(o.toJson());
+      checkDivisionSearchRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DivisionSearchResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDivisionSearchResponse();
+      var od = new api.DivisionSearchResponse.fromJson(o.toJson());
+      checkDivisionSearchResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-DivisionSearchResult", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDivisionSearchResult();
+      var od = new api.DivisionSearchResult.fromJson(o.toJson());
+      checkDivisionSearchResult(od);
+    });
+  });
+
+  unittest.group("obj-schema-Election", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildElection();
+      var od = new api.Election.fromJson(o.toJson());
+      checkElection(od);
+    });
+  });
+
+  unittest.group("obj-schema-ElectionOfficial", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildElectionOfficial();
+      var od = new api.ElectionOfficial.fromJson(o.toJson());
+      checkElectionOfficial(od);
+    });
+  });
+
+  unittest.group("obj-schema-ElectionsQueryRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildElectionsQueryRequest();
+      var od = new api.ElectionsQueryRequest.fromJson(o.toJson());
+      checkElectionsQueryRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ElectionsQueryResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildElectionsQueryResponse();
+      var od = new api.ElectionsQueryResponse.fromJson(o.toJson());
+      checkElectionsQueryResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ElectoralDistrict", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildElectoralDistrict();
+      var od = new api.ElectoralDistrict.fromJson(o.toJson());
+      checkElectoralDistrict(od);
+    });
+  });
+
+  unittest.group("obj-schema-GeographicDivision", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGeographicDivision();
+      var od = new api.GeographicDivision.fromJson(o.toJson());
+      checkGeographicDivision(od);
+    });
+  });
+
+  unittest.group("obj-schema-Office", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOffice();
+      var od = new api.Office.fromJson(o.toJson());
+      checkOffice(od);
+    });
+  });
+
+  unittest.group("obj-schema-Official", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOfficial();
+      var od = new api.Official.fromJson(o.toJson());
+      checkOfficial(od);
+    });
+  });
+
+  unittest.group("obj-schema-PollingLocation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPollingLocation();
+      var od = new api.PollingLocation.fromJson(o.toJson());
+      checkPollingLocation(od);
+    });
+  });
+
+  unittest.group("obj-schema-PostalAddress", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPostalAddress();
+      var od = new api.PostalAddress.fromJson(o.toJson());
+      checkPostalAddress(od);
+    });
+  });
+
+  unittest.group("obj-schema-RepresentativeInfoData", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRepresentativeInfoData();
+      var od = new api.RepresentativeInfoData.fromJson(o.toJson());
+      checkRepresentativeInfoData(od);
+    });
+  });
+
+  unittest.group("obj-schema-RepresentativeInfoRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRepresentativeInfoRequest();
+      var od = new api.RepresentativeInfoRequest.fromJson(o.toJson());
+      checkRepresentativeInfoRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-RepresentativeInfoResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRepresentativeInfoResponse();
+      var od = new api.RepresentativeInfoResponse.fromJson(o.toJson());
+      checkRepresentativeInfoResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-SimpleAddressType", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSimpleAddressType();
+      var od = new api.SimpleAddressType.fromJson(o.toJson());
+      checkSimpleAddressType(od);
+    });
+  });
+
+  unittest.group("obj-schema-Source", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSource();
+      var od = new api.Source.fromJson(o.toJson());
+      checkSource(od);
+    });
+  });
+
+  unittest.group("obj-schema-VoterInfoRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVoterInfoRequest();
+      var od = new api.VoterInfoRequest.fromJson(o.toJson());
+      checkVoterInfoRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-VoterInfoResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVoterInfoResponse();
+      var od = new api.VoterInfoResponse.fromJson(o.toJson());
+      checkVoterInfoResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-VoterInfoSegmentResult", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVoterInfoSegmentResult();
+      var od = new api.VoterInfoSegmentResult.fromJson(o.toJson());
+      checkVoterInfoSegmentResult(od);
+    });
+  });
+
+  unittest.group("resource-DivisionsResourceApi", () {
+    unittest.test("method--search", () {
+      var mock = new HttpServerMock();
+      api.DivisionsResourceApi res = new api.CivicinfoApi(mock).divisions;
+      var arg_request = buildDivisionSearchRequest();
+      var arg_query = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.DivisionSearchRequest.fromJson(json);
+        checkDivisionSearchRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("civicinfo/v2/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("divisions"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["query"].first, unittest.equals(arg_query));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDivisionSearchResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .search(arg_request, query: arg_query, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DivisionSearchResponse response) {
+        checkDivisionSearchResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ElectionsResourceApi", () {
+    unittest.test("method--electionQuery", () {
+      var mock = new HttpServerMock();
+      api.ElectionsResourceApi res = new api.CivicinfoApi(mock).elections;
+      var arg_request = buildElectionsQueryRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ElectionsQueryRequest.fromJson(json);
+        checkElectionsQueryRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("civicinfo/v2/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("elections"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildElectionsQueryResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .electionQuery(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ElectionsQueryResponse response) {
+        checkElectionsQueryResponse(response);
+      })));
+    });
+
+    unittest.test("method--voterInfoQuery", () {
+      var mock = new HttpServerMock();
+      api.ElectionsResourceApi res = new api.CivicinfoApi(mock).elections;
+      var arg_request = buildVoterInfoRequest();
+      var arg_address = "foo";
+      var arg_electionId = "foo";
+      var arg_officialOnly = true;
+      var arg_returnAllAvailableData = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.VoterInfoRequest.fromJson(json);
+        checkVoterInfoRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("civicinfo/v2/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("voterinfo"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["address"].first, unittest.equals(arg_address));
+        unittest.expect(
+            queryMap["electionId"].first, unittest.equals(arg_electionId));
+        unittest.expect(queryMap["officialOnly"].first,
+            unittest.equals("$arg_officialOnly"));
+        unittest.expect(queryMap["returnAllAvailableData"].first,
+            unittest.equals("$arg_returnAllAvailableData"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVoterInfoResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .voterInfoQuery(arg_request, arg_address,
+              electionId: arg_electionId,
+              officialOnly: arg_officialOnly,
+              returnAllAvailableData: arg_returnAllAvailableData,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.VoterInfoResponse response) {
+        checkVoterInfoResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-RepresentativesResourceApi", () {
+    unittest.test("method--representativeInfoByAddress", () {
+      var mock = new HttpServerMock();
+      api.RepresentativesResourceApi res =
+          new api.CivicinfoApi(mock).representatives;
+      var arg_request = buildRepresentativeInfoRequest();
+      var arg_address = "foo";
+      var arg_includeOffices = true;
+      var arg_levels = buildUnnamed2639();
+      var arg_roles = buildUnnamed2640();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.RepresentativeInfoRequest.fromJson(json);
+        checkRepresentativeInfoRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("civicinfo/v2/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("representatives"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["address"].first, unittest.equals(arg_address));
+        unittest.expect(queryMap["includeOffices"].first,
+            unittest.equals("$arg_includeOffices"));
+        unittest.expect(queryMap["levels"], unittest.equals(arg_levels));
+        unittest.expect(queryMap["roles"], unittest.equals(arg_roles));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRepresentativeInfoResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .representativeInfoByAddress(arg_request,
+              address: arg_address,
+              includeOffices: arg_includeOffices,
+              levels: arg_levels,
+              roles: arg_roles,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.RepresentativeInfoResponse response) {
+        checkRepresentativeInfoResponse(response);
+      })));
+    });
+
+    unittest.test("method--representativeInfoByDivision", () {
+      var mock = new HttpServerMock();
+      api.RepresentativesResourceApi res =
+          new api.CivicinfoApi(mock).representatives;
+      var arg_request = buildDivisionRepresentativeInfoRequest();
+      var arg_ocdId = "foo";
+      var arg_levels = buildUnnamed2641();
+      var arg_recursive = true;
+      var arg_roles = buildUnnamed2642();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.DivisionRepresentativeInfoRequest.fromJson(json);
+        checkDivisionRepresentativeInfoRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("civicinfo/v2/"));
+        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("representatives/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_ocdId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["levels"], unittest.equals(arg_levels));
+        unittest.expect(
+            queryMap["recursive"].first, unittest.equals("$arg_recursive"));
+        unittest.expect(queryMap["roles"], unittest.equals(arg_roles));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRepresentativeInfoData());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .representativeInfoByDivision(arg_request, arg_ocdId,
+              levels: arg_levels,
+              recursive: arg_recursive,
+              roles: arg_roles,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RepresentativeInfoData response) {
+        checkRepresentativeInfoData(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/classroom/v1_test.dart b/generated/googleapis/test/classroom/v1_test.dart
new file mode 100644
index 0000000..045d9db
--- /dev/null
+++ b/generated/googleapis/test/classroom/v1_test.dart
@@ -0,0 +1,5615 @@
+library googleapis.classroom.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/classroom/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+buildUnnamed791() {
+  var o = new core.List<api.Material>();
+  o.add(buildMaterial());
+  o.add(buildMaterial());
+  return o;
+}
+
+checkUnnamed791(core.List<api.Material> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMaterial(o[0]);
+  checkMaterial(o[1]);
+}
+
+core.int buildCounterAnnouncement = 0;
+buildAnnouncement() {
+  var o = new api.Announcement();
+  buildCounterAnnouncement++;
+  if (buildCounterAnnouncement < 3) {
+    o.alternateLink = "foo";
+    o.assigneeMode = "foo";
+    o.courseId = "foo";
+    o.creationTime = "foo";
+    o.creatorUserId = "foo";
+    o.id = "foo";
+    o.individualStudentsOptions = buildIndividualStudentsOptions();
+    o.materials = buildUnnamed791();
+    o.scheduledTime = "foo";
+    o.state = "foo";
+    o.text = "foo";
+    o.updateTime = "foo";
+  }
+  buildCounterAnnouncement--;
+  return o;
+}
+
+checkAnnouncement(api.Announcement o) {
+  buildCounterAnnouncement++;
+  if (buildCounterAnnouncement < 3) {
+    unittest.expect(o.alternateLink, unittest.equals('foo'));
+    unittest.expect(o.assigneeMode, unittest.equals('foo'));
+    unittest.expect(o.courseId, unittest.equals('foo'));
+    unittest.expect(o.creationTime, unittest.equals('foo'));
+    unittest.expect(o.creatorUserId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkIndividualStudentsOptions(o.individualStudentsOptions);
+    checkUnnamed791(o.materials);
+    unittest.expect(o.scheduledTime, unittest.equals('foo'));
+    unittest.expect(o.state, unittest.equals('foo'));
+    unittest.expect(o.text, unittest.equals('foo'));
+    unittest.expect(o.updateTime, unittest.equals('foo'));
+  }
+  buildCounterAnnouncement--;
+}
+
+core.int buildCounterAssignment = 0;
+buildAssignment() {
+  var o = new api.Assignment();
+  buildCounterAssignment++;
+  if (buildCounterAssignment < 3) {
+    o.studentWorkFolder = buildDriveFolder();
+  }
+  buildCounterAssignment--;
+  return o;
+}
+
+checkAssignment(api.Assignment o) {
+  buildCounterAssignment++;
+  if (buildCounterAssignment < 3) {
+    checkDriveFolder(o.studentWorkFolder);
+  }
+  buildCounterAssignment--;
+}
+
+buildUnnamed792() {
+  var o = new core.List<api.Attachment>();
+  o.add(buildAttachment());
+  o.add(buildAttachment());
+  return o;
+}
+
+checkUnnamed792(core.List<api.Attachment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAttachment(o[0]);
+  checkAttachment(o[1]);
+}
+
+core.int buildCounterAssignmentSubmission = 0;
+buildAssignmentSubmission() {
+  var o = new api.AssignmentSubmission();
+  buildCounterAssignmentSubmission++;
+  if (buildCounterAssignmentSubmission < 3) {
+    o.attachments = buildUnnamed792();
+  }
+  buildCounterAssignmentSubmission--;
+  return o;
+}
+
+checkAssignmentSubmission(api.AssignmentSubmission o) {
+  buildCounterAssignmentSubmission++;
+  if (buildCounterAssignmentSubmission < 3) {
+    checkUnnamed792(o.attachments);
+  }
+  buildCounterAssignmentSubmission--;
+}
+
+core.int buildCounterAttachment = 0;
+buildAttachment() {
+  var o = new api.Attachment();
+  buildCounterAttachment++;
+  if (buildCounterAttachment < 3) {
+    o.driveFile = buildDriveFile();
+    o.form = buildForm();
+    o.link = buildLink();
+    o.youTubeVideo = buildYouTubeVideo();
+  }
+  buildCounterAttachment--;
+  return o;
+}
+
+checkAttachment(api.Attachment o) {
+  buildCounterAttachment++;
+  if (buildCounterAttachment < 3) {
+    checkDriveFile(o.driveFile);
+    checkForm(o.form);
+    checkLink(o.link);
+    checkYouTubeVideo(o.youTubeVideo);
+  }
+  buildCounterAttachment--;
+}
+
+core.int buildCounterCloudPubsubTopic = 0;
+buildCloudPubsubTopic() {
+  var o = new api.CloudPubsubTopic();
+  buildCounterCloudPubsubTopic++;
+  if (buildCounterCloudPubsubTopic < 3) {
+    o.topicName = "foo";
+  }
+  buildCounterCloudPubsubTopic--;
+  return o;
+}
+
+checkCloudPubsubTopic(api.CloudPubsubTopic o) {
+  buildCounterCloudPubsubTopic++;
+  if (buildCounterCloudPubsubTopic < 3) {
+    unittest.expect(o.topicName, unittest.equals('foo'));
+  }
+  buildCounterCloudPubsubTopic--;
+}
+
+buildUnnamed793() {
+  var o = new core.List<api.CourseMaterialSet>();
+  o.add(buildCourseMaterialSet());
+  o.add(buildCourseMaterialSet());
+  return o;
+}
+
+checkUnnamed793(core.List<api.CourseMaterialSet> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCourseMaterialSet(o[0]);
+  checkCourseMaterialSet(o[1]);
+}
+
+core.int buildCounterCourse = 0;
+buildCourse() {
+  var o = new api.Course();
+  buildCounterCourse++;
+  if (buildCounterCourse < 3) {
+    o.alternateLink = "foo";
+    o.calendarId = "foo";
+    o.courseGroupEmail = "foo";
+    o.courseMaterialSets = buildUnnamed793();
+    o.courseState = "foo";
+    o.creationTime = "foo";
+    o.description = "foo";
+    o.descriptionHeading = "foo";
+    o.enrollmentCode = "foo";
+    o.guardiansEnabled = true;
+    o.id = "foo";
+    o.name = "foo";
+    o.ownerId = "foo";
+    o.room = "foo";
+    o.section = "foo";
+    o.teacherFolder = buildDriveFolder();
+    o.teacherGroupEmail = "foo";
+    o.updateTime = "foo";
+  }
+  buildCounterCourse--;
+  return o;
+}
+
+checkCourse(api.Course o) {
+  buildCounterCourse++;
+  if (buildCounterCourse < 3) {
+    unittest.expect(o.alternateLink, unittest.equals('foo'));
+    unittest.expect(o.calendarId, unittest.equals('foo'));
+    unittest.expect(o.courseGroupEmail, unittest.equals('foo'));
+    checkUnnamed793(o.courseMaterialSets);
+    unittest.expect(o.courseState, unittest.equals('foo'));
+    unittest.expect(o.creationTime, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.descriptionHeading, unittest.equals('foo'));
+    unittest.expect(o.enrollmentCode, unittest.equals('foo'));
+    unittest.expect(o.guardiansEnabled, unittest.isTrue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.ownerId, unittest.equals('foo'));
+    unittest.expect(o.room, unittest.equals('foo'));
+    unittest.expect(o.section, unittest.equals('foo'));
+    checkDriveFolder(o.teacherFolder);
+    unittest.expect(o.teacherGroupEmail, unittest.equals('foo'));
+    unittest.expect(o.updateTime, unittest.equals('foo'));
+  }
+  buildCounterCourse--;
+}
+
+core.int buildCounterCourseAlias = 0;
+buildCourseAlias() {
+  var o = new api.CourseAlias();
+  buildCounterCourseAlias++;
+  if (buildCounterCourseAlias < 3) {
+    o.alias = "foo";
+  }
+  buildCounterCourseAlias--;
+  return o;
+}
+
+checkCourseAlias(api.CourseAlias o) {
+  buildCounterCourseAlias++;
+  if (buildCounterCourseAlias < 3) {
+    unittest.expect(o.alias, unittest.equals('foo'));
+  }
+  buildCounterCourseAlias--;
+}
+
+core.int buildCounterCourseMaterial = 0;
+buildCourseMaterial() {
+  var o = new api.CourseMaterial();
+  buildCounterCourseMaterial++;
+  if (buildCounterCourseMaterial < 3) {
+    o.driveFile = buildDriveFile();
+    o.form = buildForm();
+    o.link = buildLink();
+    o.youTubeVideo = buildYouTubeVideo();
+  }
+  buildCounterCourseMaterial--;
+  return o;
+}
+
+checkCourseMaterial(api.CourseMaterial o) {
+  buildCounterCourseMaterial++;
+  if (buildCounterCourseMaterial < 3) {
+    checkDriveFile(o.driveFile);
+    checkForm(o.form);
+    checkLink(o.link);
+    checkYouTubeVideo(o.youTubeVideo);
+  }
+  buildCounterCourseMaterial--;
+}
+
+buildUnnamed794() {
+  var o = new core.List<api.CourseMaterial>();
+  o.add(buildCourseMaterial());
+  o.add(buildCourseMaterial());
+  return o;
+}
+
+checkUnnamed794(core.List<api.CourseMaterial> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCourseMaterial(o[0]);
+  checkCourseMaterial(o[1]);
+}
+
+core.int buildCounterCourseMaterialSet = 0;
+buildCourseMaterialSet() {
+  var o = new api.CourseMaterialSet();
+  buildCounterCourseMaterialSet++;
+  if (buildCounterCourseMaterialSet < 3) {
+    o.materials = buildUnnamed794();
+    o.title = "foo";
+  }
+  buildCounterCourseMaterialSet--;
+  return o;
+}
+
+checkCourseMaterialSet(api.CourseMaterialSet o) {
+  buildCounterCourseMaterialSet++;
+  if (buildCounterCourseMaterialSet < 3) {
+    checkUnnamed794(o.materials);
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterCourseMaterialSet--;
+}
+
+core.int buildCounterCourseRosterChangesInfo = 0;
+buildCourseRosterChangesInfo() {
+  var o = new api.CourseRosterChangesInfo();
+  buildCounterCourseRosterChangesInfo++;
+  if (buildCounterCourseRosterChangesInfo < 3) {
+    o.courseId = "foo";
+  }
+  buildCounterCourseRosterChangesInfo--;
+  return o;
+}
+
+checkCourseRosterChangesInfo(api.CourseRosterChangesInfo o) {
+  buildCounterCourseRosterChangesInfo++;
+  if (buildCounterCourseRosterChangesInfo < 3) {
+    unittest.expect(o.courseId, unittest.equals('foo'));
+  }
+  buildCounterCourseRosterChangesInfo--;
+}
+
+buildUnnamed795() {
+  var o = new core.List<api.Material>();
+  o.add(buildMaterial());
+  o.add(buildMaterial());
+  return o;
+}
+
+checkUnnamed795(core.List<api.Material> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMaterial(o[0]);
+  checkMaterial(o[1]);
+}
+
+core.int buildCounterCourseWork = 0;
+buildCourseWork() {
+  var o = new api.CourseWork();
+  buildCounterCourseWork++;
+  if (buildCounterCourseWork < 3) {
+    o.alternateLink = "foo";
+    o.assigneeMode = "foo";
+    o.assignment = buildAssignment();
+    o.associatedWithDeveloper = true;
+    o.courseId = "foo";
+    o.creationTime = "foo";
+    o.creatorUserId = "foo";
+    o.description = "foo";
+    o.dueDate = buildDate();
+    o.dueTime = buildTimeOfDay();
+    o.id = "foo";
+    o.individualStudentsOptions = buildIndividualStudentsOptions();
+    o.materials = buildUnnamed795();
+    o.maxPoints = 42.0;
+    o.multipleChoiceQuestion = buildMultipleChoiceQuestion();
+    o.scheduledTime = "foo";
+    o.state = "foo";
+    o.submissionModificationMode = "foo";
+    o.title = "foo";
+    o.updateTime = "foo";
+    o.workType = "foo";
+  }
+  buildCounterCourseWork--;
+  return o;
+}
+
+checkCourseWork(api.CourseWork o) {
+  buildCounterCourseWork++;
+  if (buildCounterCourseWork < 3) {
+    unittest.expect(o.alternateLink, unittest.equals('foo'));
+    unittest.expect(o.assigneeMode, unittest.equals('foo'));
+    checkAssignment(o.assignment);
+    unittest.expect(o.associatedWithDeveloper, unittest.isTrue);
+    unittest.expect(o.courseId, unittest.equals('foo'));
+    unittest.expect(o.creationTime, unittest.equals('foo'));
+    unittest.expect(o.creatorUserId, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    checkDate(o.dueDate);
+    checkTimeOfDay(o.dueTime);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkIndividualStudentsOptions(o.individualStudentsOptions);
+    checkUnnamed795(o.materials);
+    unittest.expect(o.maxPoints, unittest.equals(42.0));
+    checkMultipleChoiceQuestion(o.multipleChoiceQuestion);
+    unittest.expect(o.scheduledTime, unittest.equals('foo'));
+    unittest.expect(o.state, unittest.equals('foo'));
+    unittest.expect(o.submissionModificationMode, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.updateTime, unittest.equals('foo'));
+    unittest.expect(o.workType, unittest.equals('foo'));
+  }
+  buildCounterCourseWork--;
+}
+
+core.int buildCounterDate = 0;
+buildDate() {
+  var o = new api.Date();
+  buildCounterDate++;
+  if (buildCounterDate < 3) {
+    o.day = 42;
+    o.month = 42;
+    o.year = 42;
+  }
+  buildCounterDate--;
+  return o;
+}
+
+checkDate(api.Date o) {
+  buildCounterDate++;
+  if (buildCounterDate < 3) {
+    unittest.expect(o.day, unittest.equals(42));
+    unittest.expect(o.month, unittest.equals(42));
+    unittest.expect(o.year, unittest.equals(42));
+  }
+  buildCounterDate--;
+}
+
+core.int buildCounterDriveFile = 0;
+buildDriveFile() {
+  var o = new api.DriveFile();
+  buildCounterDriveFile++;
+  if (buildCounterDriveFile < 3) {
+    o.alternateLink = "foo";
+    o.id = "foo";
+    o.thumbnailUrl = "foo";
+    o.title = "foo";
+  }
+  buildCounterDriveFile--;
+  return o;
+}
+
+checkDriveFile(api.DriveFile o) {
+  buildCounterDriveFile++;
+  if (buildCounterDriveFile < 3) {
+    unittest.expect(o.alternateLink, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.thumbnailUrl, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterDriveFile--;
+}
+
+core.int buildCounterDriveFolder = 0;
+buildDriveFolder() {
+  var o = new api.DriveFolder();
+  buildCounterDriveFolder++;
+  if (buildCounterDriveFolder < 3) {
+    o.alternateLink = "foo";
+    o.id = "foo";
+    o.title = "foo";
+  }
+  buildCounterDriveFolder--;
+  return o;
+}
+
+checkDriveFolder(api.DriveFolder o) {
+  buildCounterDriveFolder++;
+  if (buildCounterDriveFolder < 3) {
+    unittest.expect(o.alternateLink, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterDriveFolder--;
+}
+
+core.int buildCounterEmpty = 0;
+buildEmpty() {
+  var o = new api.Empty();
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+  return o;
+}
+
+checkEmpty(api.Empty o) {
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+}
+
+core.int buildCounterFeed = 0;
+buildFeed() {
+  var o = new api.Feed();
+  buildCounterFeed++;
+  if (buildCounterFeed < 3) {
+    o.courseRosterChangesInfo = buildCourseRosterChangesInfo();
+    o.feedType = "foo";
+  }
+  buildCounterFeed--;
+  return o;
+}
+
+checkFeed(api.Feed o) {
+  buildCounterFeed++;
+  if (buildCounterFeed < 3) {
+    checkCourseRosterChangesInfo(o.courseRosterChangesInfo);
+    unittest.expect(o.feedType, unittest.equals('foo'));
+  }
+  buildCounterFeed--;
+}
+
+core.int buildCounterForm = 0;
+buildForm() {
+  var o = new api.Form();
+  buildCounterForm++;
+  if (buildCounterForm < 3) {
+    o.formUrl = "foo";
+    o.responseUrl = "foo";
+    o.thumbnailUrl = "foo";
+    o.title = "foo";
+  }
+  buildCounterForm--;
+  return o;
+}
+
+checkForm(api.Form o) {
+  buildCounterForm++;
+  if (buildCounterForm < 3) {
+    unittest.expect(o.formUrl, unittest.equals('foo'));
+    unittest.expect(o.responseUrl, unittest.equals('foo'));
+    unittest.expect(o.thumbnailUrl, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterForm--;
+}
+
+core.int buildCounterGlobalPermission = 0;
+buildGlobalPermission() {
+  var o = new api.GlobalPermission();
+  buildCounterGlobalPermission++;
+  if (buildCounterGlobalPermission < 3) {
+    o.permission = "foo";
+  }
+  buildCounterGlobalPermission--;
+  return o;
+}
+
+checkGlobalPermission(api.GlobalPermission o) {
+  buildCounterGlobalPermission++;
+  if (buildCounterGlobalPermission < 3) {
+    unittest.expect(o.permission, unittest.equals('foo'));
+  }
+  buildCounterGlobalPermission--;
+}
+
+core.int buildCounterGradeHistory = 0;
+buildGradeHistory() {
+  var o = new api.GradeHistory();
+  buildCounterGradeHistory++;
+  if (buildCounterGradeHistory < 3) {
+    o.actorUserId = "foo";
+    o.gradeChangeType = "foo";
+    o.gradeTimestamp = "foo";
+    o.maxPoints = 42.0;
+    o.pointsEarned = 42.0;
+  }
+  buildCounterGradeHistory--;
+  return o;
+}
+
+checkGradeHistory(api.GradeHistory o) {
+  buildCounterGradeHistory++;
+  if (buildCounterGradeHistory < 3) {
+    unittest.expect(o.actorUserId, unittest.equals('foo'));
+    unittest.expect(o.gradeChangeType, unittest.equals('foo'));
+    unittest.expect(o.gradeTimestamp, unittest.equals('foo'));
+    unittest.expect(o.maxPoints, unittest.equals(42.0));
+    unittest.expect(o.pointsEarned, unittest.equals(42.0));
+  }
+  buildCounterGradeHistory--;
+}
+
+core.int buildCounterGuardian = 0;
+buildGuardian() {
+  var o = new api.Guardian();
+  buildCounterGuardian++;
+  if (buildCounterGuardian < 3) {
+    o.guardianId = "foo";
+    o.guardianProfile = buildUserProfile();
+    o.invitedEmailAddress = "foo";
+    o.studentId = "foo";
+  }
+  buildCounterGuardian--;
+  return o;
+}
+
+checkGuardian(api.Guardian o) {
+  buildCounterGuardian++;
+  if (buildCounterGuardian < 3) {
+    unittest.expect(o.guardianId, unittest.equals('foo'));
+    checkUserProfile(o.guardianProfile);
+    unittest.expect(o.invitedEmailAddress, unittest.equals('foo'));
+    unittest.expect(o.studentId, unittest.equals('foo'));
+  }
+  buildCounterGuardian--;
+}
+
+core.int buildCounterGuardianInvitation = 0;
+buildGuardianInvitation() {
+  var o = new api.GuardianInvitation();
+  buildCounterGuardianInvitation++;
+  if (buildCounterGuardianInvitation < 3) {
+    o.creationTime = "foo";
+    o.invitationId = "foo";
+    o.invitedEmailAddress = "foo";
+    o.state = "foo";
+    o.studentId = "foo";
+  }
+  buildCounterGuardianInvitation--;
+  return o;
+}
+
+checkGuardianInvitation(api.GuardianInvitation o) {
+  buildCounterGuardianInvitation++;
+  if (buildCounterGuardianInvitation < 3) {
+    unittest.expect(o.creationTime, unittest.equals('foo'));
+    unittest.expect(o.invitationId, unittest.equals('foo'));
+    unittest.expect(o.invitedEmailAddress, unittest.equals('foo'));
+    unittest.expect(o.state, unittest.equals('foo'));
+    unittest.expect(o.studentId, unittest.equals('foo'));
+  }
+  buildCounterGuardianInvitation--;
+}
+
+buildUnnamed796() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed796(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterIndividualStudentsOptions = 0;
+buildIndividualStudentsOptions() {
+  var o = new api.IndividualStudentsOptions();
+  buildCounterIndividualStudentsOptions++;
+  if (buildCounterIndividualStudentsOptions < 3) {
+    o.studentIds = buildUnnamed796();
+  }
+  buildCounterIndividualStudentsOptions--;
+  return o;
+}
+
+checkIndividualStudentsOptions(api.IndividualStudentsOptions o) {
+  buildCounterIndividualStudentsOptions++;
+  if (buildCounterIndividualStudentsOptions < 3) {
+    checkUnnamed796(o.studentIds);
+  }
+  buildCounterIndividualStudentsOptions--;
+}
+
+core.int buildCounterInvitation = 0;
+buildInvitation() {
+  var o = new api.Invitation();
+  buildCounterInvitation++;
+  if (buildCounterInvitation < 3) {
+    o.courseId = "foo";
+    o.id = "foo";
+    o.role = "foo";
+    o.userId = "foo";
+  }
+  buildCounterInvitation--;
+  return o;
+}
+
+checkInvitation(api.Invitation o) {
+  buildCounterInvitation++;
+  if (buildCounterInvitation < 3) {
+    unittest.expect(o.courseId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.role, unittest.equals('foo'));
+    unittest.expect(o.userId, unittest.equals('foo'));
+  }
+  buildCounterInvitation--;
+}
+
+core.int buildCounterLink = 0;
+buildLink() {
+  var o = new api.Link();
+  buildCounterLink++;
+  if (buildCounterLink < 3) {
+    o.thumbnailUrl = "foo";
+    o.title = "foo";
+    o.url = "foo";
+  }
+  buildCounterLink--;
+  return o;
+}
+
+checkLink(api.Link o) {
+  buildCounterLink++;
+  if (buildCounterLink < 3) {
+    unittest.expect(o.thumbnailUrl, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterLink--;
+}
+
+buildUnnamed797() {
+  var o = new core.List<api.Announcement>();
+  o.add(buildAnnouncement());
+  o.add(buildAnnouncement());
+  return o;
+}
+
+checkUnnamed797(core.List<api.Announcement> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAnnouncement(o[0]);
+  checkAnnouncement(o[1]);
+}
+
+core.int buildCounterListAnnouncementsResponse = 0;
+buildListAnnouncementsResponse() {
+  var o = new api.ListAnnouncementsResponse();
+  buildCounterListAnnouncementsResponse++;
+  if (buildCounterListAnnouncementsResponse < 3) {
+    o.announcements = buildUnnamed797();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListAnnouncementsResponse--;
+  return o;
+}
+
+checkListAnnouncementsResponse(api.ListAnnouncementsResponse o) {
+  buildCounterListAnnouncementsResponse++;
+  if (buildCounterListAnnouncementsResponse < 3) {
+    checkUnnamed797(o.announcements);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListAnnouncementsResponse--;
+}
+
+buildUnnamed798() {
+  var o = new core.List<api.CourseAlias>();
+  o.add(buildCourseAlias());
+  o.add(buildCourseAlias());
+  return o;
+}
+
+checkUnnamed798(core.List<api.CourseAlias> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCourseAlias(o[0]);
+  checkCourseAlias(o[1]);
+}
+
+core.int buildCounterListCourseAliasesResponse = 0;
+buildListCourseAliasesResponse() {
+  var o = new api.ListCourseAliasesResponse();
+  buildCounterListCourseAliasesResponse++;
+  if (buildCounterListCourseAliasesResponse < 3) {
+    o.aliases = buildUnnamed798();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListCourseAliasesResponse--;
+  return o;
+}
+
+checkListCourseAliasesResponse(api.ListCourseAliasesResponse o) {
+  buildCounterListCourseAliasesResponse++;
+  if (buildCounterListCourseAliasesResponse < 3) {
+    checkUnnamed798(o.aliases);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListCourseAliasesResponse--;
+}
+
+buildUnnamed799() {
+  var o = new core.List<api.CourseWork>();
+  o.add(buildCourseWork());
+  o.add(buildCourseWork());
+  return o;
+}
+
+checkUnnamed799(core.List<api.CourseWork> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCourseWork(o[0]);
+  checkCourseWork(o[1]);
+}
+
+core.int buildCounterListCourseWorkResponse = 0;
+buildListCourseWorkResponse() {
+  var o = new api.ListCourseWorkResponse();
+  buildCounterListCourseWorkResponse++;
+  if (buildCounterListCourseWorkResponse < 3) {
+    o.courseWork = buildUnnamed799();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListCourseWorkResponse--;
+  return o;
+}
+
+checkListCourseWorkResponse(api.ListCourseWorkResponse o) {
+  buildCounterListCourseWorkResponse++;
+  if (buildCounterListCourseWorkResponse < 3) {
+    checkUnnamed799(o.courseWork);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListCourseWorkResponse--;
+}
+
+buildUnnamed800() {
+  var o = new core.List<api.Course>();
+  o.add(buildCourse());
+  o.add(buildCourse());
+  return o;
+}
+
+checkUnnamed800(core.List<api.Course> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCourse(o[0]);
+  checkCourse(o[1]);
+}
+
+core.int buildCounterListCoursesResponse = 0;
+buildListCoursesResponse() {
+  var o = new api.ListCoursesResponse();
+  buildCounterListCoursesResponse++;
+  if (buildCounterListCoursesResponse < 3) {
+    o.courses = buildUnnamed800();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListCoursesResponse--;
+  return o;
+}
+
+checkListCoursesResponse(api.ListCoursesResponse o) {
+  buildCounterListCoursesResponse++;
+  if (buildCounterListCoursesResponse < 3) {
+    checkUnnamed800(o.courses);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListCoursesResponse--;
+}
+
+buildUnnamed801() {
+  var o = new core.List<api.GuardianInvitation>();
+  o.add(buildGuardianInvitation());
+  o.add(buildGuardianInvitation());
+  return o;
+}
+
+checkUnnamed801(core.List<api.GuardianInvitation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGuardianInvitation(o[0]);
+  checkGuardianInvitation(o[1]);
+}
+
+core.int buildCounterListGuardianInvitationsResponse = 0;
+buildListGuardianInvitationsResponse() {
+  var o = new api.ListGuardianInvitationsResponse();
+  buildCounterListGuardianInvitationsResponse++;
+  if (buildCounterListGuardianInvitationsResponse < 3) {
+    o.guardianInvitations = buildUnnamed801();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListGuardianInvitationsResponse--;
+  return o;
+}
+
+checkListGuardianInvitationsResponse(api.ListGuardianInvitationsResponse o) {
+  buildCounterListGuardianInvitationsResponse++;
+  if (buildCounterListGuardianInvitationsResponse < 3) {
+    checkUnnamed801(o.guardianInvitations);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListGuardianInvitationsResponse--;
+}
+
+buildUnnamed802() {
+  var o = new core.List<api.Guardian>();
+  o.add(buildGuardian());
+  o.add(buildGuardian());
+  return o;
+}
+
+checkUnnamed802(core.List<api.Guardian> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGuardian(o[0]);
+  checkGuardian(o[1]);
+}
+
+core.int buildCounterListGuardiansResponse = 0;
+buildListGuardiansResponse() {
+  var o = new api.ListGuardiansResponse();
+  buildCounterListGuardiansResponse++;
+  if (buildCounterListGuardiansResponse < 3) {
+    o.guardians = buildUnnamed802();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListGuardiansResponse--;
+  return o;
+}
+
+checkListGuardiansResponse(api.ListGuardiansResponse o) {
+  buildCounterListGuardiansResponse++;
+  if (buildCounterListGuardiansResponse < 3) {
+    checkUnnamed802(o.guardians);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListGuardiansResponse--;
+}
+
+buildUnnamed803() {
+  var o = new core.List<api.Invitation>();
+  o.add(buildInvitation());
+  o.add(buildInvitation());
+  return o;
+}
+
+checkUnnamed803(core.List<api.Invitation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInvitation(o[0]);
+  checkInvitation(o[1]);
+}
+
+core.int buildCounterListInvitationsResponse = 0;
+buildListInvitationsResponse() {
+  var o = new api.ListInvitationsResponse();
+  buildCounterListInvitationsResponse++;
+  if (buildCounterListInvitationsResponse < 3) {
+    o.invitations = buildUnnamed803();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListInvitationsResponse--;
+  return o;
+}
+
+checkListInvitationsResponse(api.ListInvitationsResponse o) {
+  buildCounterListInvitationsResponse++;
+  if (buildCounterListInvitationsResponse < 3) {
+    checkUnnamed803(o.invitations);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListInvitationsResponse--;
+}
+
+buildUnnamed804() {
+  var o = new core.List<api.StudentSubmission>();
+  o.add(buildStudentSubmission());
+  o.add(buildStudentSubmission());
+  return o;
+}
+
+checkUnnamed804(core.List<api.StudentSubmission> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkStudentSubmission(o[0]);
+  checkStudentSubmission(o[1]);
+}
+
+core.int buildCounterListStudentSubmissionsResponse = 0;
+buildListStudentSubmissionsResponse() {
+  var o = new api.ListStudentSubmissionsResponse();
+  buildCounterListStudentSubmissionsResponse++;
+  if (buildCounterListStudentSubmissionsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.studentSubmissions = buildUnnamed804();
+  }
+  buildCounterListStudentSubmissionsResponse--;
+  return o;
+}
+
+checkListStudentSubmissionsResponse(api.ListStudentSubmissionsResponse o) {
+  buildCounterListStudentSubmissionsResponse++;
+  if (buildCounterListStudentSubmissionsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed804(o.studentSubmissions);
+  }
+  buildCounterListStudentSubmissionsResponse--;
+}
+
+buildUnnamed805() {
+  var o = new core.List<api.Student>();
+  o.add(buildStudent());
+  o.add(buildStudent());
+  return o;
+}
+
+checkUnnamed805(core.List<api.Student> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkStudent(o[0]);
+  checkStudent(o[1]);
+}
+
+core.int buildCounterListStudentsResponse = 0;
+buildListStudentsResponse() {
+  var o = new api.ListStudentsResponse();
+  buildCounterListStudentsResponse++;
+  if (buildCounterListStudentsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.students = buildUnnamed805();
+  }
+  buildCounterListStudentsResponse--;
+  return o;
+}
+
+checkListStudentsResponse(api.ListStudentsResponse o) {
+  buildCounterListStudentsResponse++;
+  if (buildCounterListStudentsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed805(o.students);
+  }
+  buildCounterListStudentsResponse--;
+}
+
+buildUnnamed806() {
+  var o = new core.List<api.Teacher>();
+  o.add(buildTeacher());
+  o.add(buildTeacher());
+  return o;
+}
+
+checkUnnamed806(core.List<api.Teacher> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTeacher(o[0]);
+  checkTeacher(o[1]);
+}
+
+core.int buildCounterListTeachersResponse = 0;
+buildListTeachersResponse() {
+  var o = new api.ListTeachersResponse();
+  buildCounterListTeachersResponse++;
+  if (buildCounterListTeachersResponse < 3) {
+    o.nextPageToken = "foo";
+    o.teachers = buildUnnamed806();
+  }
+  buildCounterListTeachersResponse--;
+  return o;
+}
+
+checkListTeachersResponse(api.ListTeachersResponse o) {
+  buildCounterListTeachersResponse++;
+  if (buildCounterListTeachersResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed806(o.teachers);
+  }
+  buildCounterListTeachersResponse--;
+}
+
+core.int buildCounterMaterial = 0;
+buildMaterial() {
+  var o = new api.Material();
+  buildCounterMaterial++;
+  if (buildCounterMaterial < 3) {
+    o.driveFile = buildSharedDriveFile();
+    o.form = buildForm();
+    o.link = buildLink();
+    o.youtubeVideo = buildYouTubeVideo();
+  }
+  buildCounterMaterial--;
+  return o;
+}
+
+checkMaterial(api.Material o) {
+  buildCounterMaterial++;
+  if (buildCounterMaterial < 3) {
+    checkSharedDriveFile(o.driveFile);
+    checkForm(o.form);
+    checkLink(o.link);
+    checkYouTubeVideo(o.youtubeVideo);
+  }
+  buildCounterMaterial--;
+}
+
+core.int buildCounterModifyAnnouncementAssigneesRequest = 0;
+buildModifyAnnouncementAssigneesRequest() {
+  var o = new api.ModifyAnnouncementAssigneesRequest();
+  buildCounterModifyAnnouncementAssigneesRequest++;
+  if (buildCounterModifyAnnouncementAssigneesRequest < 3) {
+    o.assigneeMode = "foo";
+    o.modifyIndividualStudentsOptions = buildModifyIndividualStudentsOptions();
+  }
+  buildCounterModifyAnnouncementAssigneesRequest--;
+  return o;
+}
+
+checkModifyAnnouncementAssigneesRequest(
+    api.ModifyAnnouncementAssigneesRequest o) {
+  buildCounterModifyAnnouncementAssigneesRequest++;
+  if (buildCounterModifyAnnouncementAssigneesRequest < 3) {
+    unittest.expect(o.assigneeMode, unittest.equals('foo'));
+    checkModifyIndividualStudentsOptions(o.modifyIndividualStudentsOptions);
+  }
+  buildCounterModifyAnnouncementAssigneesRequest--;
+}
+
+buildUnnamed807() {
+  var o = new core.List<api.Attachment>();
+  o.add(buildAttachment());
+  o.add(buildAttachment());
+  return o;
+}
+
+checkUnnamed807(core.List<api.Attachment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAttachment(o[0]);
+  checkAttachment(o[1]);
+}
+
+core.int buildCounterModifyAttachmentsRequest = 0;
+buildModifyAttachmentsRequest() {
+  var o = new api.ModifyAttachmentsRequest();
+  buildCounterModifyAttachmentsRequest++;
+  if (buildCounterModifyAttachmentsRequest < 3) {
+    o.addAttachments = buildUnnamed807();
+  }
+  buildCounterModifyAttachmentsRequest--;
+  return o;
+}
+
+checkModifyAttachmentsRequest(api.ModifyAttachmentsRequest o) {
+  buildCounterModifyAttachmentsRequest++;
+  if (buildCounterModifyAttachmentsRequest < 3) {
+    checkUnnamed807(o.addAttachments);
+  }
+  buildCounterModifyAttachmentsRequest--;
+}
+
+core.int buildCounterModifyCourseWorkAssigneesRequest = 0;
+buildModifyCourseWorkAssigneesRequest() {
+  var o = new api.ModifyCourseWorkAssigneesRequest();
+  buildCounterModifyCourseWorkAssigneesRequest++;
+  if (buildCounterModifyCourseWorkAssigneesRequest < 3) {
+    o.assigneeMode = "foo";
+    o.modifyIndividualStudentsOptions = buildModifyIndividualStudentsOptions();
+  }
+  buildCounterModifyCourseWorkAssigneesRequest--;
+  return o;
+}
+
+checkModifyCourseWorkAssigneesRequest(api.ModifyCourseWorkAssigneesRequest o) {
+  buildCounterModifyCourseWorkAssigneesRequest++;
+  if (buildCounterModifyCourseWorkAssigneesRequest < 3) {
+    unittest.expect(o.assigneeMode, unittest.equals('foo'));
+    checkModifyIndividualStudentsOptions(o.modifyIndividualStudentsOptions);
+  }
+  buildCounterModifyCourseWorkAssigneesRequest--;
+}
+
+buildUnnamed808() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed808(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed809() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed809(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterModifyIndividualStudentsOptions = 0;
+buildModifyIndividualStudentsOptions() {
+  var o = new api.ModifyIndividualStudentsOptions();
+  buildCounterModifyIndividualStudentsOptions++;
+  if (buildCounterModifyIndividualStudentsOptions < 3) {
+    o.addStudentIds = buildUnnamed808();
+    o.removeStudentIds = buildUnnamed809();
+  }
+  buildCounterModifyIndividualStudentsOptions--;
+  return o;
+}
+
+checkModifyIndividualStudentsOptions(api.ModifyIndividualStudentsOptions o) {
+  buildCounterModifyIndividualStudentsOptions++;
+  if (buildCounterModifyIndividualStudentsOptions < 3) {
+    checkUnnamed808(o.addStudentIds);
+    checkUnnamed809(o.removeStudentIds);
+  }
+  buildCounterModifyIndividualStudentsOptions--;
+}
+
+buildUnnamed810() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed810(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterMultipleChoiceQuestion = 0;
+buildMultipleChoiceQuestion() {
+  var o = new api.MultipleChoiceQuestion();
+  buildCounterMultipleChoiceQuestion++;
+  if (buildCounterMultipleChoiceQuestion < 3) {
+    o.choices = buildUnnamed810();
+  }
+  buildCounterMultipleChoiceQuestion--;
+  return o;
+}
+
+checkMultipleChoiceQuestion(api.MultipleChoiceQuestion o) {
+  buildCounterMultipleChoiceQuestion++;
+  if (buildCounterMultipleChoiceQuestion < 3) {
+    checkUnnamed810(o.choices);
+  }
+  buildCounterMultipleChoiceQuestion--;
+}
+
+core.int buildCounterMultipleChoiceSubmission = 0;
+buildMultipleChoiceSubmission() {
+  var o = new api.MultipleChoiceSubmission();
+  buildCounterMultipleChoiceSubmission++;
+  if (buildCounterMultipleChoiceSubmission < 3) {
+    o.answer = "foo";
+  }
+  buildCounterMultipleChoiceSubmission--;
+  return o;
+}
+
+checkMultipleChoiceSubmission(api.MultipleChoiceSubmission o) {
+  buildCounterMultipleChoiceSubmission++;
+  if (buildCounterMultipleChoiceSubmission < 3) {
+    unittest.expect(o.answer, unittest.equals('foo'));
+  }
+  buildCounterMultipleChoiceSubmission--;
+}
+
+core.int buildCounterName = 0;
+buildName() {
+  var o = new api.Name();
+  buildCounterName++;
+  if (buildCounterName < 3) {
+    o.familyName = "foo";
+    o.fullName = "foo";
+    o.givenName = "foo";
+  }
+  buildCounterName--;
+  return o;
+}
+
+checkName(api.Name o) {
+  buildCounterName++;
+  if (buildCounterName < 3) {
+    unittest.expect(o.familyName, unittest.equals('foo'));
+    unittest.expect(o.fullName, unittest.equals('foo'));
+    unittest.expect(o.givenName, unittest.equals('foo'));
+  }
+  buildCounterName--;
+}
+
+core.int buildCounterReclaimStudentSubmissionRequest = 0;
+buildReclaimStudentSubmissionRequest() {
+  var o = new api.ReclaimStudentSubmissionRequest();
+  buildCounterReclaimStudentSubmissionRequest++;
+  if (buildCounterReclaimStudentSubmissionRequest < 3) {}
+  buildCounterReclaimStudentSubmissionRequest--;
+  return o;
+}
+
+checkReclaimStudentSubmissionRequest(api.ReclaimStudentSubmissionRequest o) {
+  buildCounterReclaimStudentSubmissionRequest++;
+  if (buildCounterReclaimStudentSubmissionRequest < 3) {}
+  buildCounterReclaimStudentSubmissionRequest--;
+}
+
+core.int buildCounterRegistration = 0;
+buildRegistration() {
+  var o = new api.Registration();
+  buildCounterRegistration++;
+  if (buildCounterRegistration < 3) {
+    o.cloudPubsubTopic = buildCloudPubsubTopic();
+    o.expiryTime = "foo";
+    o.feed = buildFeed();
+    o.registrationId = "foo";
+  }
+  buildCounterRegistration--;
+  return o;
+}
+
+checkRegistration(api.Registration o) {
+  buildCounterRegistration++;
+  if (buildCounterRegistration < 3) {
+    checkCloudPubsubTopic(o.cloudPubsubTopic);
+    unittest.expect(o.expiryTime, unittest.equals('foo'));
+    checkFeed(o.feed);
+    unittest.expect(o.registrationId, unittest.equals('foo'));
+  }
+  buildCounterRegistration--;
+}
+
+core.int buildCounterReturnStudentSubmissionRequest = 0;
+buildReturnStudentSubmissionRequest() {
+  var o = new api.ReturnStudentSubmissionRequest();
+  buildCounterReturnStudentSubmissionRequest++;
+  if (buildCounterReturnStudentSubmissionRequest < 3) {}
+  buildCounterReturnStudentSubmissionRequest--;
+  return o;
+}
+
+checkReturnStudentSubmissionRequest(api.ReturnStudentSubmissionRequest o) {
+  buildCounterReturnStudentSubmissionRequest++;
+  if (buildCounterReturnStudentSubmissionRequest < 3) {}
+  buildCounterReturnStudentSubmissionRequest--;
+}
+
+core.int buildCounterSharedDriveFile = 0;
+buildSharedDriveFile() {
+  var o = new api.SharedDriveFile();
+  buildCounterSharedDriveFile++;
+  if (buildCounterSharedDriveFile < 3) {
+    o.driveFile = buildDriveFile();
+    o.shareMode = "foo";
+  }
+  buildCounterSharedDriveFile--;
+  return o;
+}
+
+checkSharedDriveFile(api.SharedDriveFile o) {
+  buildCounterSharedDriveFile++;
+  if (buildCounterSharedDriveFile < 3) {
+    checkDriveFile(o.driveFile);
+    unittest.expect(o.shareMode, unittest.equals('foo'));
+  }
+  buildCounterSharedDriveFile--;
+}
+
+core.int buildCounterShortAnswerSubmission = 0;
+buildShortAnswerSubmission() {
+  var o = new api.ShortAnswerSubmission();
+  buildCounterShortAnswerSubmission++;
+  if (buildCounterShortAnswerSubmission < 3) {
+    o.answer = "foo";
+  }
+  buildCounterShortAnswerSubmission--;
+  return o;
+}
+
+checkShortAnswerSubmission(api.ShortAnswerSubmission o) {
+  buildCounterShortAnswerSubmission++;
+  if (buildCounterShortAnswerSubmission < 3) {
+    unittest.expect(o.answer, unittest.equals('foo'));
+  }
+  buildCounterShortAnswerSubmission--;
+}
+
+core.int buildCounterStateHistory = 0;
+buildStateHistory() {
+  var o = new api.StateHistory();
+  buildCounterStateHistory++;
+  if (buildCounterStateHistory < 3) {
+    o.actorUserId = "foo";
+    o.state = "foo";
+    o.stateTimestamp = "foo";
+  }
+  buildCounterStateHistory--;
+  return o;
+}
+
+checkStateHistory(api.StateHistory o) {
+  buildCounterStateHistory++;
+  if (buildCounterStateHistory < 3) {
+    unittest.expect(o.actorUserId, unittest.equals('foo'));
+    unittest.expect(o.state, unittest.equals('foo'));
+    unittest.expect(o.stateTimestamp, unittest.equals('foo'));
+  }
+  buildCounterStateHistory--;
+}
+
+core.int buildCounterStudent = 0;
+buildStudent() {
+  var o = new api.Student();
+  buildCounterStudent++;
+  if (buildCounterStudent < 3) {
+    o.courseId = "foo";
+    o.profile = buildUserProfile();
+    o.studentWorkFolder = buildDriveFolder();
+    o.userId = "foo";
+  }
+  buildCounterStudent--;
+  return o;
+}
+
+checkStudent(api.Student o) {
+  buildCounterStudent++;
+  if (buildCounterStudent < 3) {
+    unittest.expect(o.courseId, unittest.equals('foo'));
+    checkUserProfile(o.profile);
+    checkDriveFolder(o.studentWorkFolder);
+    unittest.expect(o.userId, unittest.equals('foo'));
+  }
+  buildCounterStudent--;
+}
+
+buildUnnamed811() {
+  var o = new core.List<api.SubmissionHistory>();
+  o.add(buildSubmissionHistory());
+  o.add(buildSubmissionHistory());
+  return o;
+}
+
+checkUnnamed811(core.List<api.SubmissionHistory> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSubmissionHistory(o[0]);
+  checkSubmissionHistory(o[1]);
+}
+
+core.int buildCounterStudentSubmission = 0;
+buildStudentSubmission() {
+  var o = new api.StudentSubmission();
+  buildCounterStudentSubmission++;
+  if (buildCounterStudentSubmission < 3) {
+    o.alternateLink = "foo";
+    o.assignedGrade = 42.0;
+    o.assignmentSubmission = buildAssignmentSubmission();
+    o.associatedWithDeveloper = true;
+    o.courseId = "foo";
+    o.courseWorkId = "foo";
+    o.courseWorkType = "foo";
+    o.creationTime = "foo";
+    o.draftGrade = 42.0;
+    o.id = "foo";
+    o.late = true;
+    o.multipleChoiceSubmission = buildMultipleChoiceSubmission();
+    o.shortAnswerSubmission = buildShortAnswerSubmission();
+    o.state = "foo";
+    o.submissionHistory = buildUnnamed811();
+    o.updateTime = "foo";
+    o.userId = "foo";
+  }
+  buildCounterStudentSubmission--;
+  return o;
+}
+
+checkStudentSubmission(api.StudentSubmission o) {
+  buildCounterStudentSubmission++;
+  if (buildCounterStudentSubmission < 3) {
+    unittest.expect(o.alternateLink, unittest.equals('foo'));
+    unittest.expect(o.assignedGrade, unittest.equals(42.0));
+    checkAssignmentSubmission(o.assignmentSubmission);
+    unittest.expect(o.associatedWithDeveloper, unittest.isTrue);
+    unittest.expect(o.courseId, unittest.equals('foo'));
+    unittest.expect(o.courseWorkId, unittest.equals('foo'));
+    unittest.expect(o.courseWorkType, unittest.equals('foo'));
+    unittest.expect(o.creationTime, unittest.equals('foo'));
+    unittest.expect(o.draftGrade, unittest.equals(42.0));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.late, unittest.isTrue);
+    checkMultipleChoiceSubmission(o.multipleChoiceSubmission);
+    checkShortAnswerSubmission(o.shortAnswerSubmission);
+    unittest.expect(o.state, unittest.equals('foo'));
+    checkUnnamed811(o.submissionHistory);
+    unittest.expect(o.updateTime, unittest.equals('foo'));
+    unittest.expect(o.userId, unittest.equals('foo'));
+  }
+  buildCounterStudentSubmission--;
+}
+
+core.int buildCounterSubmissionHistory = 0;
+buildSubmissionHistory() {
+  var o = new api.SubmissionHistory();
+  buildCounterSubmissionHistory++;
+  if (buildCounterSubmissionHistory < 3) {
+    o.gradeHistory = buildGradeHistory();
+    o.stateHistory = buildStateHistory();
+  }
+  buildCounterSubmissionHistory--;
+  return o;
+}
+
+checkSubmissionHistory(api.SubmissionHistory o) {
+  buildCounterSubmissionHistory++;
+  if (buildCounterSubmissionHistory < 3) {
+    checkGradeHistory(o.gradeHistory);
+    checkStateHistory(o.stateHistory);
+  }
+  buildCounterSubmissionHistory--;
+}
+
+core.int buildCounterTeacher = 0;
+buildTeacher() {
+  var o = new api.Teacher();
+  buildCounterTeacher++;
+  if (buildCounterTeacher < 3) {
+    o.courseId = "foo";
+    o.profile = buildUserProfile();
+    o.userId = "foo";
+  }
+  buildCounterTeacher--;
+  return o;
+}
+
+checkTeacher(api.Teacher o) {
+  buildCounterTeacher++;
+  if (buildCounterTeacher < 3) {
+    unittest.expect(o.courseId, unittest.equals('foo'));
+    checkUserProfile(o.profile);
+    unittest.expect(o.userId, unittest.equals('foo'));
+  }
+  buildCounterTeacher--;
+}
+
+core.int buildCounterTimeOfDay = 0;
+buildTimeOfDay() {
+  var o = new api.TimeOfDay();
+  buildCounterTimeOfDay++;
+  if (buildCounterTimeOfDay < 3) {
+    o.hours = 42;
+    o.minutes = 42;
+    o.nanos = 42;
+    o.seconds = 42;
+  }
+  buildCounterTimeOfDay--;
+  return o;
+}
+
+checkTimeOfDay(api.TimeOfDay o) {
+  buildCounterTimeOfDay++;
+  if (buildCounterTimeOfDay < 3) {
+    unittest.expect(o.hours, unittest.equals(42));
+    unittest.expect(o.minutes, unittest.equals(42));
+    unittest.expect(o.nanos, unittest.equals(42));
+    unittest.expect(o.seconds, unittest.equals(42));
+  }
+  buildCounterTimeOfDay--;
+}
+
+core.int buildCounterTurnInStudentSubmissionRequest = 0;
+buildTurnInStudentSubmissionRequest() {
+  var o = new api.TurnInStudentSubmissionRequest();
+  buildCounterTurnInStudentSubmissionRequest++;
+  if (buildCounterTurnInStudentSubmissionRequest < 3) {}
+  buildCounterTurnInStudentSubmissionRequest--;
+  return o;
+}
+
+checkTurnInStudentSubmissionRequest(api.TurnInStudentSubmissionRequest o) {
+  buildCounterTurnInStudentSubmissionRequest++;
+  if (buildCounterTurnInStudentSubmissionRequest < 3) {}
+  buildCounterTurnInStudentSubmissionRequest--;
+}
+
+buildUnnamed812() {
+  var o = new core.List<api.GlobalPermission>();
+  o.add(buildGlobalPermission());
+  o.add(buildGlobalPermission());
+  return o;
+}
+
+checkUnnamed812(core.List<api.GlobalPermission> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGlobalPermission(o[0]);
+  checkGlobalPermission(o[1]);
+}
+
+core.int buildCounterUserProfile = 0;
+buildUserProfile() {
+  var o = new api.UserProfile();
+  buildCounterUserProfile++;
+  if (buildCounterUserProfile < 3) {
+    o.emailAddress = "foo";
+    o.id = "foo";
+    o.name = buildName();
+    o.permissions = buildUnnamed812();
+    o.photoUrl = "foo";
+    o.verifiedTeacher = true;
+  }
+  buildCounterUserProfile--;
+  return o;
+}
+
+checkUserProfile(api.UserProfile o) {
+  buildCounterUserProfile++;
+  if (buildCounterUserProfile < 3) {
+    unittest.expect(o.emailAddress, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkName(o.name);
+    checkUnnamed812(o.permissions);
+    unittest.expect(o.photoUrl, unittest.equals('foo'));
+    unittest.expect(o.verifiedTeacher, unittest.isTrue);
+  }
+  buildCounterUserProfile--;
+}
+
+core.int buildCounterYouTubeVideo = 0;
+buildYouTubeVideo() {
+  var o = new api.YouTubeVideo();
+  buildCounterYouTubeVideo++;
+  if (buildCounterYouTubeVideo < 3) {
+    o.alternateLink = "foo";
+    o.id = "foo";
+    o.thumbnailUrl = "foo";
+    o.title = "foo";
+  }
+  buildCounterYouTubeVideo--;
+  return o;
+}
+
+checkYouTubeVideo(api.YouTubeVideo o) {
+  buildCounterYouTubeVideo++;
+  if (buildCounterYouTubeVideo < 3) {
+    unittest.expect(o.alternateLink, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.thumbnailUrl, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterYouTubeVideo--;
+}
+
+buildUnnamed813() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed813(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed814() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed814(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed815() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed815(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed816() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed816(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed817() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed817(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-Announcement", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAnnouncement();
+      var od = new api.Announcement.fromJson(o.toJson());
+      checkAnnouncement(od);
+    });
+  });
+
+  unittest.group("obj-schema-Assignment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAssignment();
+      var od = new api.Assignment.fromJson(o.toJson());
+      checkAssignment(od);
+    });
+  });
+
+  unittest.group("obj-schema-AssignmentSubmission", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAssignmentSubmission();
+      var od = new api.AssignmentSubmission.fromJson(o.toJson());
+      checkAssignmentSubmission(od);
+    });
+  });
+
+  unittest.group("obj-schema-Attachment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAttachment();
+      var od = new api.Attachment.fromJson(o.toJson());
+      checkAttachment(od);
+    });
+  });
+
+  unittest.group("obj-schema-CloudPubsubTopic", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCloudPubsubTopic();
+      var od = new api.CloudPubsubTopic.fromJson(o.toJson());
+      checkCloudPubsubTopic(od);
+    });
+  });
+
+  unittest.group("obj-schema-Course", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCourse();
+      var od = new api.Course.fromJson(o.toJson());
+      checkCourse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CourseAlias", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCourseAlias();
+      var od = new api.CourseAlias.fromJson(o.toJson());
+      checkCourseAlias(od);
+    });
+  });
+
+  unittest.group("obj-schema-CourseMaterial", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCourseMaterial();
+      var od = new api.CourseMaterial.fromJson(o.toJson());
+      checkCourseMaterial(od);
+    });
+  });
+
+  unittest.group("obj-schema-CourseMaterialSet", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCourseMaterialSet();
+      var od = new api.CourseMaterialSet.fromJson(o.toJson());
+      checkCourseMaterialSet(od);
+    });
+  });
+
+  unittest.group("obj-schema-CourseRosterChangesInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCourseRosterChangesInfo();
+      var od = new api.CourseRosterChangesInfo.fromJson(o.toJson());
+      checkCourseRosterChangesInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-CourseWork", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCourseWork();
+      var od = new api.CourseWork.fromJson(o.toJson());
+      checkCourseWork(od);
+    });
+  });
+
+  unittest.group("obj-schema-Date", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDate();
+      var od = new api.Date.fromJson(o.toJson());
+      checkDate(od);
+    });
+  });
+
+  unittest.group("obj-schema-DriveFile", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDriveFile();
+      var od = new api.DriveFile.fromJson(o.toJson());
+      checkDriveFile(od);
+    });
+  });
+
+  unittest.group("obj-schema-DriveFolder", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDriveFolder();
+      var od = new api.DriveFolder.fromJson(o.toJson());
+      checkDriveFolder(od);
+    });
+  });
+
+  unittest.group("obj-schema-Empty", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEmpty();
+      var od = new api.Empty.fromJson(o.toJson());
+      checkEmpty(od);
+    });
+  });
+
+  unittest.group("obj-schema-Feed", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFeed();
+      var od = new api.Feed.fromJson(o.toJson());
+      checkFeed(od);
+    });
+  });
+
+  unittest.group("obj-schema-Form", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildForm();
+      var od = new api.Form.fromJson(o.toJson());
+      checkForm(od);
+    });
+  });
+
+  unittest.group("obj-schema-GlobalPermission", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGlobalPermission();
+      var od = new api.GlobalPermission.fromJson(o.toJson());
+      checkGlobalPermission(od);
+    });
+  });
+
+  unittest.group("obj-schema-GradeHistory", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGradeHistory();
+      var od = new api.GradeHistory.fromJson(o.toJson());
+      checkGradeHistory(od);
+    });
+  });
+
+  unittest.group("obj-schema-Guardian", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGuardian();
+      var od = new api.Guardian.fromJson(o.toJson());
+      checkGuardian(od);
+    });
+  });
+
+  unittest.group("obj-schema-GuardianInvitation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGuardianInvitation();
+      var od = new api.GuardianInvitation.fromJson(o.toJson());
+      checkGuardianInvitation(od);
+    });
+  });
+
+  unittest.group("obj-schema-IndividualStudentsOptions", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildIndividualStudentsOptions();
+      var od = new api.IndividualStudentsOptions.fromJson(o.toJson());
+      checkIndividualStudentsOptions(od);
+    });
+  });
+
+  unittest.group("obj-schema-Invitation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInvitation();
+      var od = new api.Invitation.fromJson(o.toJson());
+      checkInvitation(od);
+    });
+  });
+
+  unittest.group("obj-schema-Link", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLink();
+      var od = new api.Link.fromJson(o.toJson());
+      checkLink(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListAnnouncementsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListAnnouncementsResponse();
+      var od = new api.ListAnnouncementsResponse.fromJson(o.toJson());
+      checkListAnnouncementsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListCourseAliasesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListCourseAliasesResponse();
+      var od = new api.ListCourseAliasesResponse.fromJson(o.toJson());
+      checkListCourseAliasesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListCourseWorkResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListCourseWorkResponse();
+      var od = new api.ListCourseWorkResponse.fromJson(o.toJson());
+      checkListCourseWorkResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListCoursesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListCoursesResponse();
+      var od = new api.ListCoursesResponse.fromJson(o.toJson());
+      checkListCoursesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListGuardianInvitationsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListGuardianInvitationsResponse();
+      var od = new api.ListGuardianInvitationsResponse.fromJson(o.toJson());
+      checkListGuardianInvitationsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListGuardiansResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListGuardiansResponse();
+      var od = new api.ListGuardiansResponse.fromJson(o.toJson());
+      checkListGuardiansResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListInvitationsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListInvitationsResponse();
+      var od = new api.ListInvitationsResponse.fromJson(o.toJson());
+      checkListInvitationsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListStudentSubmissionsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListStudentSubmissionsResponse();
+      var od = new api.ListStudentSubmissionsResponse.fromJson(o.toJson());
+      checkListStudentSubmissionsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListStudentsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListStudentsResponse();
+      var od = new api.ListStudentsResponse.fromJson(o.toJson());
+      checkListStudentsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListTeachersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListTeachersResponse();
+      var od = new api.ListTeachersResponse.fromJson(o.toJson());
+      checkListTeachersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Material", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMaterial();
+      var od = new api.Material.fromJson(o.toJson());
+      checkMaterial(od);
+    });
+  });
+
+  unittest.group("obj-schema-ModifyAnnouncementAssigneesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildModifyAnnouncementAssigneesRequest();
+      var od = new api.ModifyAnnouncementAssigneesRequest.fromJson(o.toJson());
+      checkModifyAnnouncementAssigneesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ModifyAttachmentsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildModifyAttachmentsRequest();
+      var od = new api.ModifyAttachmentsRequest.fromJson(o.toJson());
+      checkModifyAttachmentsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ModifyCourseWorkAssigneesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildModifyCourseWorkAssigneesRequest();
+      var od = new api.ModifyCourseWorkAssigneesRequest.fromJson(o.toJson());
+      checkModifyCourseWorkAssigneesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ModifyIndividualStudentsOptions", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildModifyIndividualStudentsOptions();
+      var od = new api.ModifyIndividualStudentsOptions.fromJson(o.toJson());
+      checkModifyIndividualStudentsOptions(od);
+    });
+  });
+
+  unittest.group("obj-schema-MultipleChoiceQuestion", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMultipleChoiceQuestion();
+      var od = new api.MultipleChoiceQuestion.fromJson(o.toJson());
+      checkMultipleChoiceQuestion(od);
+    });
+  });
+
+  unittest.group("obj-schema-MultipleChoiceSubmission", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMultipleChoiceSubmission();
+      var od = new api.MultipleChoiceSubmission.fromJson(o.toJson());
+      checkMultipleChoiceSubmission(od);
+    });
+  });
+
+  unittest.group("obj-schema-Name", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildName();
+      var od = new api.Name.fromJson(o.toJson());
+      checkName(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReclaimStudentSubmissionRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReclaimStudentSubmissionRequest();
+      var od = new api.ReclaimStudentSubmissionRequest.fromJson(o.toJson());
+      checkReclaimStudentSubmissionRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Registration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRegistration();
+      var od = new api.Registration.fromJson(o.toJson());
+      checkRegistration(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReturnStudentSubmissionRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReturnStudentSubmissionRequest();
+      var od = new api.ReturnStudentSubmissionRequest.fromJson(o.toJson());
+      checkReturnStudentSubmissionRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-SharedDriveFile", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSharedDriveFile();
+      var od = new api.SharedDriveFile.fromJson(o.toJson());
+      checkSharedDriveFile(od);
+    });
+  });
+
+  unittest.group("obj-schema-ShortAnswerSubmission", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildShortAnswerSubmission();
+      var od = new api.ShortAnswerSubmission.fromJson(o.toJson());
+      checkShortAnswerSubmission(od);
+    });
+  });
+
+  unittest.group("obj-schema-StateHistory", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStateHistory();
+      var od = new api.StateHistory.fromJson(o.toJson());
+      checkStateHistory(od);
+    });
+  });
+
+  unittest.group("obj-schema-Student", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStudent();
+      var od = new api.Student.fromJson(o.toJson());
+      checkStudent(od);
+    });
+  });
+
+  unittest.group("obj-schema-StudentSubmission", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStudentSubmission();
+      var od = new api.StudentSubmission.fromJson(o.toJson());
+      checkStudentSubmission(od);
+    });
+  });
+
+  unittest.group("obj-schema-SubmissionHistory", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSubmissionHistory();
+      var od = new api.SubmissionHistory.fromJson(o.toJson());
+      checkSubmissionHistory(od);
+    });
+  });
+
+  unittest.group("obj-schema-Teacher", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTeacher();
+      var od = new api.Teacher.fromJson(o.toJson());
+      checkTeacher(od);
+    });
+  });
+
+  unittest.group("obj-schema-TimeOfDay", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTimeOfDay();
+      var od = new api.TimeOfDay.fromJson(o.toJson());
+      checkTimeOfDay(od);
+    });
+  });
+
+  unittest.group("obj-schema-TurnInStudentSubmissionRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTurnInStudentSubmissionRequest();
+      var od = new api.TurnInStudentSubmissionRequest.fromJson(o.toJson());
+      checkTurnInStudentSubmissionRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserProfile", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserProfile();
+      var od = new api.UserProfile.fromJson(o.toJson());
+      checkUserProfile(od);
+    });
+  });
+
+  unittest.group("obj-schema-YouTubeVideo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildYouTubeVideo();
+      var od = new api.YouTubeVideo.fromJson(o.toJson());
+      checkYouTubeVideo(od);
+    });
+  });
+
+  unittest.group("resource-CoursesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.CoursesResourceApi res = new api.ClassroomApi(mock).courses;
+      var arg_request = buildCourse();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Course.fromJson(json);
+        checkCourse(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("v1/courses"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCourse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Course response) {
+        checkCourse(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.CoursesResourceApi res = new api.ClassroomApi(mock).courses;
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CoursesResourceApi res = new api.ClassroomApi(mock).courses;
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCourse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Course response) {
+        checkCourse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CoursesResourceApi res = new api.ClassroomApi(mock).courses;
+      var arg_studentId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_courseStates = buildUnnamed813();
+      var arg_teacherId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("v1/courses"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["studentId"].first, unittest.equals(arg_studentId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["courseStates"], unittest.equals(arg_courseStates));
+        unittest.expect(
+            queryMap["teacherId"].first, unittest.equals(arg_teacherId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListCoursesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              studentId: arg_studentId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              courseStates: arg_courseStates,
+              teacherId: arg_teacherId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListCoursesResponse response) {
+        checkListCoursesResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.CoursesResourceApi res = new api.ClassroomApi(mock).courses;
+      var arg_request = buildCourse();
+      var arg_id = "foo";
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Course.fromJson(json);
+        checkCourse(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCourse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_id,
+              updateMask: arg_updateMask, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Course response) {
+        checkCourse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.CoursesResourceApi res = new api.ClassroomApi(mock).courses;
+      var arg_request = buildCourse();
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Course.fromJson(json);
+        checkCourse(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCourse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Course response) {
+        checkCourse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CoursesAliasesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.CoursesAliasesResourceApi res =
+          new api.ClassroomApi(mock).courses.aliases;
+      var arg_request = buildCourseAlias();
+      var arg_courseId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CourseAlias.fromJson(json);
+        checkCourseAlias(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/aliases", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/aliases"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCourseAlias());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_courseId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CourseAlias response) {
+        checkCourseAlias(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.CoursesAliasesResourceApi res =
+          new api.ClassroomApi(mock).courses.aliases;
+      var arg_courseId = "foo";
+      var arg_alias = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/aliases/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/aliases/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_alias"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_courseId, arg_alias, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CoursesAliasesResourceApi res =
+          new api.ClassroomApi(mock).courses.aliases;
+      var arg_courseId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/aliases", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/aliases"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListCourseAliasesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_courseId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.ListCourseAliasesResponse response) {
+        checkListCourseAliasesResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CoursesAnnouncementsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.CoursesAnnouncementsResourceApi res =
+          new api.ClassroomApi(mock).courses.announcements;
+      var arg_request = buildAnnouncement();
+      var arg_courseId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Announcement.fromJson(json);
+        checkAnnouncement(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/announcements", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/announcements"));
+        pathOffset += 14;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAnnouncement());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_courseId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Announcement response) {
+        checkAnnouncement(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.CoursesAnnouncementsResourceApi res =
+          new api.ClassroomApi(mock).courses.announcements;
+      var arg_courseId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/announcements/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/announcements/"));
+        pathOffset += 15;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_courseId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CoursesAnnouncementsResourceApi res =
+          new api.ClassroomApi(mock).courses.announcements;
+      var arg_courseId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/announcements/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/announcements/"));
+        pathOffset += 15;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAnnouncement());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_courseId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Announcement response) {
+        checkAnnouncement(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CoursesAnnouncementsResourceApi res =
+          new api.ClassroomApi(mock).courses.announcements;
+      var arg_courseId = "foo";
+      var arg_pageToken = "foo";
+      var arg_orderBy = "foo";
+      var arg_pageSize = 42;
+      var arg_announcementStates = buildUnnamed814();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/announcements", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/announcements"));
+        pathOffset += 14;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["announcementStates"],
+            unittest.equals(arg_announcementStates));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListAnnouncementsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_courseId,
+              pageToken: arg_pageToken,
+              orderBy: arg_orderBy,
+              pageSize: arg_pageSize,
+              announcementStates: arg_announcementStates,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.ListAnnouncementsResponse response) {
+        checkListAnnouncementsResponse(response);
+      })));
+    });
+
+    unittest.test("method--modifyAssignees", () {
+      var mock = new HttpServerMock();
+      api.CoursesAnnouncementsResourceApi res =
+          new api.ClassroomApi(mock).courses.announcements;
+      var arg_request = buildModifyAnnouncementAssigneesRequest();
+      var arg_courseId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ModifyAnnouncementAssigneesRequest.fromJson(json);
+        checkModifyAnnouncementAssigneesRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/announcements/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/announcements/"));
+        pathOffset += 15;
+        index = path.indexOf(":modifyAssignees", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals(":modifyAssignees"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAnnouncement());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .modifyAssignees(arg_request, arg_courseId, arg_id,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Announcement response) {
+        checkAnnouncement(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.CoursesAnnouncementsResourceApi res =
+          new api.ClassroomApi(mock).courses.announcements;
+      var arg_request = buildAnnouncement();
+      var arg_courseId = "foo";
+      var arg_id = "foo";
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Announcement.fromJson(json);
+        checkAnnouncement(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/announcements/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/announcements/"));
+        pathOffset += 15;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAnnouncement());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_courseId, arg_id,
+              updateMask: arg_updateMask, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Announcement response) {
+        checkAnnouncement(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CoursesCourseWorkResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.CoursesCourseWorkResourceApi res =
+          new api.ClassroomApi(mock).courses.courseWork;
+      var arg_request = buildCourseWork();
+      var arg_courseId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CourseWork.fromJson(json);
+        checkCourseWork(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/courseWork", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/courseWork"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCourseWork());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_courseId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CourseWork response) {
+        checkCourseWork(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.CoursesCourseWorkResourceApi res =
+          new api.ClassroomApi(mock).courses.courseWork;
+      var arg_courseId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/courseWork/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/courseWork/"));
+        pathOffset += 12;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_courseId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CoursesCourseWorkResourceApi res =
+          new api.ClassroomApi(mock).courses.courseWork;
+      var arg_courseId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/courseWork/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/courseWork/"));
+        pathOffset += 12;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCourseWork());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_courseId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CourseWork response) {
+        checkCourseWork(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CoursesCourseWorkResourceApi res =
+          new api.ClassroomApi(mock).courses.courseWork;
+      var arg_courseId = "foo";
+      var arg_pageToken = "foo";
+      var arg_orderBy = "foo";
+      var arg_pageSize = 42;
+      var arg_courseWorkStates = buildUnnamed815();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/courseWork", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/courseWork"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["courseWorkStates"],
+            unittest.equals(arg_courseWorkStates));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListCourseWorkResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_courseId,
+              pageToken: arg_pageToken,
+              orderBy: arg_orderBy,
+              pageSize: arg_pageSize,
+              courseWorkStates: arg_courseWorkStates,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListCourseWorkResponse response) {
+        checkListCourseWorkResponse(response);
+      })));
+    });
+
+    unittest.test("method--modifyAssignees", () {
+      var mock = new HttpServerMock();
+      api.CoursesCourseWorkResourceApi res =
+          new api.ClassroomApi(mock).courses.courseWork;
+      var arg_request = buildModifyCourseWorkAssigneesRequest();
+      var arg_courseId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ModifyCourseWorkAssigneesRequest.fromJson(json);
+        checkModifyCourseWorkAssigneesRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/courseWork/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/courseWork/"));
+        pathOffset += 12;
+        index = path.indexOf(":modifyAssignees", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals(":modifyAssignees"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCourseWork());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .modifyAssignees(arg_request, arg_courseId, arg_id,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CourseWork response) {
+        checkCourseWork(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.CoursesCourseWorkResourceApi res =
+          new api.ClassroomApi(mock).courses.courseWork;
+      var arg_request = buildCourseWork();
+      var arg_courseId = "foo";
+      var arg_id = "foo";
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CourseWork.fromJson(json);
+        checkCourseWork(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/courseWork/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/courseWork/"));
+        pathOffset += 12;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCourseWork());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_courseId, arg_id,
+              updateMask: arg_updateMask, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CourseWork response) {
+        checkCourseWork(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CoursesCourseWorkStudentSubmissionsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CoursesCourseWorkStudentSubmissionsResourceApi res =
+          new api.ClassroomApi(mock).courses.courseWork.studentSubmissions;
+      var arg_courseId = "foo";
+      var arg_courseWorkId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/courseWork/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/courseWork/"));
+        pathOffset += 12;
+        index = path.indexOf("/studentSubmissions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseWorkId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/studentSubmissions/"));
+        pathOffset += 20;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildStudentSubmission());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_courseId, arg_courseWorkId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.StudentSubmission response) {
+        checkStudentSubmission(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CoursesCourseWorkStudentSubmissionsResourceApi res =
+          new api.ClassroomApi(mock).courses.courseWork.studentSubmissions;
+      var arg_courseId = "foo";
+      var arg_courseWorkId = "foo";
+      var arg_userId = "foo";
+      var arg_late = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_states = buildUnnamed816();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/courseWork/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/courseWork/"));
+        pathOffset += 12;
+        index = path.indexOf("/studentSubmissions", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseWorkId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("/studentSubmissions"));
+        pathOffset += 19;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["userId"].first, unittest.equals(arg_userId));
+        unittest.expect(queryMap["late"].first, unittest.equals(arg_late));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["states"], unittest.equals(arg_states));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListStudentSubmissionsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_courseId, arg_courseWorkId,
+              userId: arg_userId,
+              late: arg_late,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              states: arg_states,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListStudentSubmissionsResponse response) {
+        checkListStudentSubmissionsResponse(response);
+      })));
+    });
+
+    unittest.test("method--modifyAttachments", () {
+      var mock = new HttpServerMock();
+      api.CoursesCourseWorkStudentSubmissionsResourceApi res =
+          new api.ClassroomApi(mock).courses.courseWork.studentSubmissions;
+      var arg_request = buildModifyAttachmentsRequest();
+      var arg_courseId = "foo";
+      var arg_courseWorkId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ModifyAttachmentsRequest.fromJson(json);
+        checkModifyAttachmentsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/courseWork/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/courseWork/"));
+        pathOffset += 12;
+        index = path.indexOf("/studentSubmissions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseWorkId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/studentSubmissions/"));
+        pathOffset += 20;
+        index = path.indexOf(":modifyAttachments", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals(":modifyAttachments"));
+        pathOffset += 18;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildStudentSubmission());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .modifyAttachments(
+              arg_request, arg_courseId, arg_courseWorkId, arg_id,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.StudentSubmission response) {
+        checkStudentSubmission(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.CoursesCourseWorkStudentSubmissionsResourceApi res =
+          new api.ClassroomApi(mock).courses.courseWork.studentSubmissions;
+      var arg_request = buildStudentSubmission();
+      var arg_courseId = "foo";
+      var arg_courseWorkId = "foo";
+      var arg_id = "foo";
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.StudentSubmission.fromJson(json);
+        checkStudentSubmission(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/courseWork/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/courseWork/"));
+        pathOffset += 12;
+        index = path.indexOf("/studentSubmissions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseWorkId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/studentSubmissions/"));
+        pathOffset += 20;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildStudentSubmission());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_courseId, arg_courseWorkId, arg_id,
+              updateMask: arg_updateMask, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.StudentSubmission response) {
+        checkStudentSubmission(response);
+      })));
+    });
+
+    unittest.test("method--reclaim", () {
+      var mock = new HttpServerMock();
+      api.CoursesCourseWorkStudentSubmissionsResourceApi res =
+          new api.ClassroomApi(mock).courses.courseWork.studentSubmissions;
+      var arg_request = buildReclaimStudentSubmissionRequest();
+      var arg_courseId = "foo";
+      var arg_courseWorkId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ReclaimStudentSubmissionRequest.fromJson(json);
+        checkReclaimStudentSubmissionRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/courseWork/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/courseWork/"));
+        pathOffset += 12;
+        index = path.indexOf("/studentSubmissions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseWorkId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/studentSubmissions/"));
+        pathOffset += 20;
+        index = path.indexOf(":reclaim", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals(":reclaim"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .reclaim(arg_request, arg_courseId, arg_courseWorkId, arg_id,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--return_", () {
+      var mock = new HttpServerMock();
+      api.CoursesCourseWorkStudentSubmissionsResourceApi res =
+          new api.ClassroomApi(mock).courses.courseWork.studentSubmissions;
+      var arg_request = buildReturnStudentSubmissionRequest();
+      var arg_courseId = "foo";
+      var arg_courseWorkId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ReturnStudentSubmissionRequest.fromJson(json);
+        checkReturnStudentSubmissionRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/courseWork/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/courseWork/"));
+        pathOffset += 12;
+        index = path.indexOf("/studentSubmissions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseWorkId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/studentSubmissions/"));
+        pathOffset += 20;
+        index = path.indexOf(":return", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals(":return"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .return_(arg_request, arg_courseId, arg_courseWorkId, arg_id,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--turnIn", () {
+      var mock = new HttpServerMock();
+      api.CoursesCourseWorkStudentSubmissionsResourceApi res =
+          new api.ClassroomApi(mock).courses.courseWork.studentSubmissions;
+      var arg_request = buildTurnInStudentSubmissionRequest();
+      var arg_courseId = "foo";
+      var arg_courseWorkId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.TurnInStudentSubmissionRequest.fromJson(json);
+        checkTurnInStudentSubmissionRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/courseWork/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/courseWork/"));
+        pathOffset += 12;
+        index = path.indexOf("/studentSubmissions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseWorkId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/studentSubmissions/"));
+        pathOffset += 20;
+        index = path.indexOf(":turnIn", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals(":turnIn"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .turnIn(arg_request, arg_courseId, arg_courseWorkId, arg_id,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CoursesStudentsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.CoursesStudentsResourceApi res =
+          new api.ClassroomApi(mock).courses.students;
+      var arg_request = buildStudent();
+      var arg_courseId = "foo";
+      var arg_enrollmentCode = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Student.fromJson(json);
+        checkStudent(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/students", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/students"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["enrollmentCode"].first,
+            unittest.equals(arg_enrollmentCode));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildStudent());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_courseId,
+              enrollmentCode: arg_enrollmentCode, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Student response) {
+        checkStudent(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.CoursesStudentsResourceApi res =
+          new api.ClassroomApi(mock).courses.students;
+      var arg_courseId = "foo";
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/students/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/students/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_courseId, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CoursesStudentsResourceApi res =
+          new api.ClassroomApi(mock).courses.students;
+      var arg_courseId = "foo";
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/students/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/students/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildStudent());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_courseId, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Student response) {
+        checkStudent(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CoursesStudentsResourceApi res =
+          new api.ClassroomApi(mock).courses.students;
+      var arg_courseId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/students", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/students"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListStudentsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_courseId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListStudentsResponse response) {
+        checkListStudentsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CoursesTeachersResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.CoursesTeachersResourceApi res =
+          new api.ClassroomApi(mock).courses.teachers;
+      var arg_request = buildTeacher();
+      var arg_courseId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Teacher.fromJson(json);
+        checkTeacher(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/teachers", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/teachers"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTeacher());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_courseId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Teacher response) {
+        checkTeacher(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.CoursesTeachersResourceApi res =
+          new api.ClassroomApi(mock).courses.teachers;
+      var arg_courseId = "foo";
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/teachers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/teachers/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_courseId, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CoursesTeachersResourceApi res =
+          new api.ClassroomApi(mock).courses.teachers;
+      var arg_courseId = "foo";
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/teachers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/teachers/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTeacher());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_courseId, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Teacher response) {
+        checkTeacher(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CoursesTeachersResourceApi res =
+          new api.ClassroomApi(mock).courses.teachers;
+      var arg_courseId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("v1/courses/"));
+        pathOffset += 11;
+        index = path.indexOf("/teachers", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_courseId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/teachers"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListTeachersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_courseId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListTeachersResponse response) {
+        checkListTeachersResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-InvitationsResourceApi", () {
+    unittest.test("method--accept", () {
+      var mock = new HttpServerMock();
+      api.InvitationsResourceApi res = new api.ClassroomApi(mock).invitations;
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("v1/invitations/"));
+        pathOffset += 15;
+        index = path.indexOf(":accept", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals(":accept"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .accept(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.InvitationsResourceApi res = new api.ClassroomApi(mock).invitations;
+      var arg_request = buildInvitation();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Invitation.fromJson(json);
+        checkInvitation(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("v1/invitations"));
+        pathOffset += 14;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildInvitation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Invitation response) {
+        checkInvitation(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.InvitationsResourceApi res = new api.ClassroomApi(mock).invitations;
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("v1/invitations/"));
+        pathOffset += 15;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.InvitationsResourceApi res = new api.ClassroomApi(mock).invitations;
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("v1/invitations/"));
+        pathOffset += 15;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildInvitation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Invitation response) {
+        checkInvitation(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.InvitationsResourceApi res = new api.ClassroomApi(mock).invitations;
+      var arg_pageToken = "foo";
+      var arg_userId = "foo";
+      var arg_pageSize = 42;
+      var arg_courseId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("v1/invitations"));
+        pathOffset += 14;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["userId"].first, unittest.equals(arg_userId));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["courseId"].first, unittest.equals(arg_courseId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListInvitationsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              pageToken: arg_pageToken,
+              userId: arg_userId,
+              pageSize: arg_pageSize,
+              courseId: arg_courseId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListInvitationsResponse response) {
+        checkListInvitationsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-RegistrationsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.RegistrationsResourceApi res =
+          new api.ClassroomApi(mock).registrations;
+      var arg_request = buildRegistration();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Registration.fromJson(json);
+        checkRegistration(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v1/registrations"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRegistration());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Registration response) {
+        checkRegistration(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.RegistrationsResourceApi res =
+          new api.ClassroomApi(mock).registrations;
+      var arg_registrationId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("v1/registrations/"));
+        pathOffset += 17;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_registrationId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_registrationId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UserProfilesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UserProfilesResourceApi res = new api.ClassroomApi(mock).userProfiles;
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v1/userProfiles/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserProfile());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserProfile response) {
+        checkUserProfile(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UserProfilesGuardianInvitationsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.UserProfilesGuardianInvitationsResourceApi res =
+          new api.ClassroomApi(mock).userProfiles.guardianInvitations;
+      var arg_request = buildGuardianInvitation();
+      var arg_studentId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.GuardianInvitation.fromJson(json);
+        checkGuardianInvitation(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v1/userProfiles/"));
+        pathOffset += 16;
+        index = path.indexOf("/guardianInvitations", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_studentId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/guardianInvitations"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGuardianInvitation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_studentId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.GuardianInvitation response) {
+        checkGuardianInvitation(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UserProfilesGuardianInvitationsResourceApi res =
+          new api.ClassroomApi(mock).userProfiles.guardianInvitations;
+      var arg_studentId = "foo";
+      var arg_invitationId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v1/userProfiles/"));
+        pathOffset += 16;
+        index = path.indexOf("/guardianInvitations/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_studentId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/guardianInvitations/"));
+        pathOffset += 21;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_invitationId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGuardianInvitation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_studentId, arg_invitationId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.GuardianInvitation response) {
+        checkGuardianInvitation(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UserProfilesGuardianInvitationsResourceApi res =
+          new api.ClassroomApi(mock).userProfiles.guardianInvitations;
+      var arg_studentId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_states = buildUnnamed817();
+      var arg_invitedEmailAddress = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v1/userProfiles/"));
+        pathOffset += 16;
+        index = path.indexOf("/guardianInvitations", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_studentId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/guardianInvitations"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["states"], unittest.equals(arg_states));
+        unittest.expect(queryMap["invitedEmailAddress"].first,
+            unittest.equals(arg_invitedEmailAddress));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListGuardianInvitationsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_studentId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              states: arg_states,
+              invitedEmailAddress: arg_invitedEmailAddress,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListGuardianInvitationsResponse response) {
+        checkListGuardianInvitationsResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.UserProfilesGuardianInvitationsResourceApi res =
+          new api.ClassroomApi(mock).userProfiles.guardianInvitations;
+      var arg_request = buildGuardianInvitation();
+      var arg_studentId = "foo";
+      var arg_invitationId = "foo";
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.GuardianInvitation.fromJson(json);
+        checkGuardianInvitation(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v1/userProfiles/"));
+        pathOffset += 16;
+        index = path.indexOf("/guardianInvitations/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_studentId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/guardianInvitations/"));
+        pathOffset += 21;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_invitationId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGuardianInvitation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_studentId, arg_invitationId,
+              updateMask: arg_updateMask, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.GuardianInvitation response) {
+        checkGuardianInvitation(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UserProfilesGuardiansResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.UserProfilesGuardiansResourceApi res =
+          new api.ClassroomApi(mock).userProfiles.guardians;
+      var arg_studentId = "foo";
+      var arg_guardianId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v1/userProfiles/"));
+        pathOffset += 16;
+        index = path.indexOf("/guardians/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_studentId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/guardians/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_guardianId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_studentId, arg_guardianId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UserProfilesGuardiansResourceApi res =
+          new api.ClassroomApi(mock).userProfiles.guardians;
+      var arg_studentId = "foo";
+      var arg_guardianId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v1/userProfiles/"));
+        pathOffset += 16;
+        index = path.indexOf("/guardians/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_studentId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/guardians/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_guardianId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGuardian());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_studentId, arg_guardianId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Guardian response) {
+        checkGuardian(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UserProfilesGuardiansResourceApi res =
+          new api.ClassroomApi(mock).userProfiles.guardians;
+      var arg_studentId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_invitedEmailAddress = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v1/userProfiles/"));
+        pathOffset += 16;
+        index = path.indexOf("/guardians", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_studentId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/guardians"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["invitedEmailAddress"].first,
+            unittest.equals(arg_invitedEmailAddress));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListGuardiansResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_studentId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              invitedEmailAddress: arg_invitedEmailAddress,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListGuardiansResponse response) {
+        checkListGuardiansResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/cloudbilling/v1_test.dart b/generated/googleapis/test/cloudbilling/v1_test.dart
index 3423610..de876e6 100644
--- a/generated/googleapis/test/cloudbilling/v1_test.dart
+++ b/generated/googleapis/test/cloudbilling/v1_test.dart
@@ -121,14 +121,14 @@
   buildCounterCategory--;
 }
 
-buildUnnamed63() {
+buildUnnamed44() {
   var o = new core.List<api.BillingAccount>();
   o.add(buildBillingAccount());
   o.add(buildBillingAccount());
   return o;
 }
 
-checkUnnamed63(core.List<api.BillingAccount> o) {
+checkUnnamed44(core.List<api.BillingAccount> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBillingAccount(o[0]);
   checkBillingAccount(o[1]);
@@ -139,7 +139,7 @@
   var o = new api.ListBillingAccountsResponse();
   buildCounterListBillingAccountsResponse++;
   if (buildCounterListBillingAccountsResponse < 3) {
-    o.billingAccounts = buildUnnamed63();
+    o.billingAccounts = buildUnnamed44();
     o.nextPageToken = "foo";
   }
   buildCounterListBillingAccountsResponse--;
@@ -149,20 +149,20 @@
 checkListBillingAccountsResponse(api.ListBillingAccountsResponse o) {
   buildCounterListBillingAccountsResponse++;
   if (buildCounterListBillingAccountsResponse < 3) {
-    checkUnnamed63(o.billingAccounts);
+    checkUnnamed44(o.billingAccounts);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListBillingAccountsResponse--;
 }
 
-buildUnnamed64() {
+buildUnnamed45() {
   var o = new core.List<api.ProjectBillingInfo>();
   o.add(buildProjectBillingInfo());
   o.add(buildProjectBillingInfo());
   return o;
 }
 
-checkUnnamed64(core.List<api.ProjectBillingInfo> o) {
+checkUnnamed45(core.List<api.ProjectBillingInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProjectBillingInfo(o[0]);
   checkProjectBillingInfo(o[1]);
@@ -174,7 +174,7 @@
   buildCounterListProjectBillingInfoResponse++;
   if (buildCounterListProjectBillingInfoResponse < 3) {
     o.nextPageToken = "foo";
-    o.projectBillingInfo = buildUnnamed64();
+    o.projectBillingInfo = buildUnnamed45();
   }
   buildCounterListProjectBillingInfoResponse--;
   return o;
@@ -184,19 +184,19 @@
   buildCounterListProjectBillingInfoResponse++;
   if (buildCounterListProjectBillingInfoResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed64(o.projectBillingInfo);
+    checkUnnamed45(o.projectBillingInfo);
   }
   buildCounterListProjectBillingInfoResponse--;
 }
 
-buildUnnamed65() {
+buildUnnamed46() {
   var o = new core.List<api.Service>();
   o.add(buildService());
   o.add(buildService());
   return o;
 }
 
-checkUnnamed65(core.List<api.Service> o) {
+checkUnnamed46(core.List<api.Service> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkService(o[0]);
   checkService(o[1]);
@@ -208,7 +208,7 @@
   buildCounterListServicesResponse++;
   if (buildCounterListServicesResponse < 3) {
     o.nextPageToken = "foo";
-    o.services = buildUnnamed65();
+    o.services = buildUnnamed46();
   }
   buildCounterListServicesResponse--;
   return o;
@@ -218,19 +218,19 @@
   buildCounterListServicesResponse++;
   if (buildCounterListServicesResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed65(o.services);
+    checkUnnamed46(o.services);
   }
   buildCounterListServicesResponse--;
 }
 
-buildUnnamed66() {
+buildUnnamed47() {
   var o = new core.List<api.Sku>();
   o.add(buildSku());
   o.add(buildSku());
   return o;
 }
 
-checkUnnamed66(core.List<api.Sku> o) {
+checkUnnamed47(core.List<api.Sku> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSku(o[0]);
   checkSku(o[1]);
@@ -242,7 +242,7 @@
   buildCounterListSkusResponse++;
   if (buildCounterListSkusResponse < 3) {
     o.nextPageToken = "foo";
-    o.skus = buildUnnamed66();
+    o.skus = buildUnnamed47();
   }
   buildCounterListSkusResponse--;
   return o;
@@ -252,7 +252,7 @@
   buildCounterListSkusResponse++;
   if (buildCounterListSkusResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed66(o.skus);
+    checkUnnamed47(o.skus);
   }
   buildCounterListSkusResponse--;
 }
@@ -280,14 +280,14 @@
   buildCounterMoney--;
 }
 
-buildUnnamed67() {
+buildUnnamed48() {
   var o = new core.List<api.TierRate>();
   o.add(buildTierRate());
   o.add(buildTierRate());
   return o;
 }
 
-checkUnnamed67(core.List<api.TierRate> o) {
+checkUnnamed48(core.List<api.TierRate> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTierRate(o[0]);
   checkTierRate(o[1]);
@@ -302,7 +302,7 @@
     o.baseUnitConversionFactor = 42.0;
     o.baseUnitDescription = "foo";
     o.displayQuantity = 42.0;
-    o.tieredRates = buildUnnamed67();
+    o.tieredRates = buildUnnamed48();
     o.usageUnit = "foo";
     o.usageUnitDescription = "foo";
   }
@@ -317,7 +317,7 @@
     unittest.expect(o.baseUnitConversionFactor, unittest.equals(42.0));
     unittest.expect(o.baseUnitDescription, unittest.equals('foo'));
     unittest.expect(o.displayQuantity, unittest.equals(42.0));
-    checkUnnamed67(o.tieredRates);
+    checkUnnamed48(o.tieredRates);
     unittest.expect(o.usageUnit, unittest.equals('foo'));
     unittest.expect(o.usageUnitDescription, unittest.equals('foo'));
   }
@@ -399,27 +399,27 @@
   buildCounterService--;
 }
 
-buildUnnamed68() {
+buildUnnamed49() {
   var o = new core.List<api.PricingInfo>();
   o.add(buildPricingInfo());
   o.add(buildPricingInfo());
   return o;
 }
 
-checkUnnamed68(core.List<api.PricingInfo> o) {
+checkUnnamed49(core.List<api.PricingInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPricingInfo(o[0]);
   checkPricingInfo(o[1]);
 }
 
-buildUnnamed69() {
+buildUnnamed50() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed69(core.List<core.String> o) {
+checkUnnamed50(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -433,9 +433,9 @@
     o.category = buildCategory();
     o.description = "foo";
     o.name = "foo";
-    o.pricingInfo = buildUnnamed68();
+    o.pricingInfo = buildUnnamed49();
     o.serviceProviderName = "foo";
-    o.serviceRegions = buildUnnamed69();
+    o.serviceRegions = buildUnnamed50();
     o.skuId = "foo";
   }
   buildCounterSku--;
@@ -448,9 +448,9 @@
     checkCategory(o.category);
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed68(o.pricingInfo);
+    checkUnnamed49(o.pricingInfo);
     unittest.expect(o.serviceProviderName, unittest.equals('foo'));
-    checkUnnamed69(o.serviceRegions);
+    checkUnnamed50(o.serviceRegions);
     unittest.expect(o.skuId, unittest.equals('foo'));
   }
   buildCounterSku--;
@@ -596,6 +596,7 @@
       api.BillingAccountsResourceApi res =
           new api.CloudbillingApi(mock).billingAccounts;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -627,6 +628,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -635,7 +637,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name)
+          .get(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BillingAccount response) {
         checkBillingAccount(response);
       })));
@@ -647,6 +649,7 @@
           new api.CloudbillingApi(mock).billingAccounts;
       var arg_pageSize = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -681,6 +684,7 @@
             unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -688,8 +692,13 @@
         var resp = convert.JSON.encode(buildListBillingAccountsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(pageSize: arg_pageSize, pageToken: arg_pageToken).then(
-          unittest.expectAsync1(((api.ListBillingAccountsResponse response) {
+      res
+          .list(
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListBillingAccountsResponse response) {
         checkListBillingAccountsResponse(response);
       })));
     });
@@ -703,6 +712,7 @@
       var arg_name = "foo";
       var arg_pageSize = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -738,6 +748,7 @@
             unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -745,8 +756,13 @@
         var resp = convert.JSON.encode(buildListProjectBillingInfoResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(arg_name, pageSize: arg_pageSize, pageToken: arg_pageToken).then(
-          unittest.expectAsync1(((api.ListProjectBillingInfoResponse response) {
+      res
+          .list(arg_name,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListProjectBillingInfoResponse response) {
         checkListProjectBillingInfoResponse(response);
       })));
     });
@@ -757,6 +773,7 @@
       var mock = new HttpServerMock();
       api.ProjectsResourceApi res = new api.CloudbillingApi(mock).projects;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -788,6 +805,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -796,7 +814,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getBillingInfo(arg_name)
+          .getBillingInfo(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ProjectBillingInfo response) {
         checkProjectBillingInfo(response);
       })));
@@ -807,6 +825,7 @@
       api.ProjectsResourceApi res = new api.CloudbillingApi(mock).projects;
       var arg_request = buildProjectBillingInfo();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ProjectBillingInfo.fromJson(json);
         checkProjectBillingInfo(obj);
@@ -841,6 +860,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -849,7 +869,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .updateBillingInfo(arg_request, arg_name)
+          .updateBillingInfo(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ProjectBillingInfo response) {
         checkProjectBillingInfo(response);
       })));
@@ -862,6 +882,7 @@
       api.ServicesResourceApi res = new api.CloudbillingApi(mock).services;
       var arg_pageSize = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -896,6 +917,7 @@
             unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -904,7 +926,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(pageSize: arg_pageSize, pageToken: arg_pageToken)
+          .list(
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListServicesResponse response) {
         checkListServicesResponse(response);
       })));
@@ -922,6 +947,7 @@
       var arg_pageSize = 42;
       var arg_startTime = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -963,6 +989,7 @@
             queryMap["startTime"].first, unittest.equals(arg_startTime));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -976,7 +1003,8 @@
               endTime: arg_endTime,
               pageSize: arg_pageSize,
               startTime: arg_startTime,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListSkusResponse response) {
         checkListSkusResponse(response);
       })));
diff --git a/generated/googleapis/test/cloudbuild/v1_test.dart b/generated/googleapis/test/cloudbuild/v1_test.dart
index 8d6cf99..bf14c5c 100644
--- a/generated/googleapis/test/cloudbuild/v1_test.dart
+++ b/generated/googleapis/test/cloudbuild/v1_test.dart
@@ -50,66 +50,66 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed1459() {
+buildUnnamed1446() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1459(core.List<core.String> o) {
+checkUnnamed1446(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1460() {
+buildUnnamed1447() {
   var o = new core.List<api.Secret>();
   o.add(buildSecret());
   o.add(buildSecret());
   return o;
 }
 
-checkUnnamed1460(core.List<api.Secret> o) {
+checkUnnamed1447(core.List<api.Secret> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSecret(o[0]);
   checkSecret(o[1]);
 }
 
-buildUnnamed1461() {
+buildUnnamed1448() {
   var o = new core.List<api.BuildStep>();
   o.add(buildBuildStep());
   o.add(buildBuildStep());
   return o;
 }
 
-checkUnnamed1461(core.List<api.BuildStep> o) {
+checkUnnamed1448(core.List<api.BuildStep> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBuildStep(o[0]);
   checkBuildStep(o[1]);
 }
 
-buildUnnamed1462() {
+buildUnnamed1449() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1462(core.Map<core.String, core.String> o) {
+checkUnnamed1449(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed1463() {
+buildUnnamed1450() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1463(core.List<core.String> o) {
+checkUnnamed1450(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -124,21 +124,21 @@
     o.createTime = "foo";
     o.finishTime = "foo";
     o.id = "foo";
-    o.images = buildUnnamed1459();
+    o.images = buildUnnamed1446();
     o.logUrl = "foo";
     o.logsBucket = "foo";
     o.options = buildBuildOptions();
     o.projectId = "foo";
     o.results = buildResults();
-    o.secrets = buildUnnamed1460();
+    o.secrets = buildUnnamed1447();
     o.source = buildSource();
     o.sourceProvenance = buildSourceProvenance();
     o.startTime = "foo";
     o.status = "foo";
     o.statusDetail = "foo";
-    o.steps = buildUnnamed1461();
-    o.substitutions = buildUnnamed1462();
-    o.tags = buildUnnamed1463();
+    o.steps = buildUnnamed1448();
+    o.substitutions = buildUnnamed1449();
+    o.tags = buildUnnamed1450();
     o.timeout = "foo";
   }
   buildCounterBuild--;
@@ -152,21 +152,21 @@
     unittest.expect(o.createTime, unittest.equals('foo'));
     unittest.expect(o.finishTime, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed1459(o.images);
+    checkUnnamed1446(o.images);
     unittest.expect(o.logUrl, unittest.equals('foo'));
     unittest.expect(o.logsBucket, unittest.equals('foo'));
     checkBuildOptions(o.options);
     unittest.expect(o.projectId, unittest.equals('foo'));
     checkResults(o.results);
-    checkUnnamed1460(o.secrets);
+    checkUnnamed1447(o.secrets);
     checkSource(o.source);
     checkSourceProvenance(o.sourceProvenance);
     unittest.expect(o.startTime, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals('foo'));
     unittest.expect(o.statusDetail, unittest.equals('foo'));
-    checkUnnamed1461(o.steps);
-    checkUnnamed1462(o.substitutions);
-    checkUnnamed1463(o.tags);
+    checkUnnamed1448(o.steps);
+    checkUnnamed1449(o.substitutions);
+    checkUnnamed1450(o.tags);
     unittest.expect(o.timeout, unittest.equals('foo'));
   }
   buildCounterBuild--;
@@ -191,14 +191,14 @@
   buildCounterBuildOperationMetadata--;
 }
 
-buildUnnamed1464() {
+buildUnnamed1451() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1464(core.List<core.String> o) {
+checkUnnamed1451(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -210,7 +210,7 @@
   buildCounterBuildOptions++;
   if (buildCounterBuildOptions < 3) {
     o.requestedVerifyOption = "foo";
-    o.sourceProvenanceHash = buildUnnamed1464();
+    o.sourceProvenanceHash = buildUnnamed1451();
     o.substitutionOption = "foo";
   }
   buildCounterBuildOptions--;
@@ -221,72 +221,72 @@
   buildCounterBuildOptions++;
   if (buildCounterBuildOptions < 3) {
     unittest.expect(o.requestedVerifyOption, unittest.equals('foo'));
-    checkUnnamed1464(o.sourceProvenanceHash);
+    checkUnnamed1451(o.sourceProvenanceHash);
     unittest.expect(o.substitutionOption, unittest.equals('foo'));
   }
   buildCounterBuildOptions--;
 }
 
-buildUnnamed1465() {
+buildUnnamed1452() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1465(core.List<core.String> o) {
+checkUnnamed1452(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1466() {
+buildUnnamed1453() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1466(core.List<core.String> o) {
+checkUnnamed1453(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1467() {
+buildUnnamed1454() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1467(core.List<core.String> o) {
+checkUnnamed1454(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1468() {
+buildUnnamed1455() {
   var o = new core.List<api.Volume>();
   o.add(buildVolume());
   o.add(buildVolume());
   return o;
 }
 
-checkUnnamed1468(core.List<api.Volume> o) {
+checkUnnamed1455(core.List<api.Volume> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVolume(o[0]);
   checkVolume(o[1]);
 }
 
-buildUnnamed1469() {
+buildUnnamed1456() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1469(core.List<core.String> o) {
+checkUnnamed1456(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -297,15 +297,15 @@
   var o = new api.BuildStep();
   buildCounterBuildStep++;
   if (buildCounterBuildStep < 3) {
-    o.args = buildUnnamed1465();
+    o.args = buildUnnamed1452();
     o.dir = "foo";
     o.entrypoint = "foo";
-    o.env = buildUnnamed1466();
+    o.env = buildUnnamed1453();
     o.id = "foo";
     o.name = "foo";
-    o.secretEnv = buildUnnamed1467();
-    o.volumes = buildUnnamed1468();
-    o.waitFor = buildUnnamed1469();
+    o.secretEnv = buildUnnamed1454();
+    o.volumes = buildUnnamed1455();
+    o.waitFor = buildUnnamed1456();
   }
   buildCounterBuildStep--;
   return o;
@@ -314,27 +314,27 @@
 checkBuildStep(api.BuildStep o) {
   buildCounterBuildStep++;
   if (buildCounterBuildStep < 3) {
-    checkUnnamed1465(o.args);
+    checkUnnamed1452(o.args);
     unittest.expect(o.dir, unittest.equals('foo'));
     unittest.expect(o.entrypoint, unittest.equals('foo'));
-    checkUnnamed1466(o.env);
+    checkUnnamed1453(o.env);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1467(o.secretEnv);
-    checkUnnamed1468(o.volumes);
-    checkUnnamed1469(o.waitFor);
+    checkUnnamed1454(o.secretEnv);
+    checkUnnamed1455(o.volumes);
+    checkUnnamed1456(o.waitFor);
   }
   buildCounterBuildStep--;
 }
 
-buildUnnamed1470() {
+buildUnnamed1457() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1470(core.Map<core.String, core.String> o) {
+checkUnnamed1457(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -351,7 +351,7 @@
     o.disabled = true;
     o.filename = "foo";
     o.id = "foo";
-    o.substitutions = buildUnnamed1470();
+    o.substitutions = buildUnnamed1457();
     o.triggerTemplate = buildRepoSource();
   }
   buildCounterBuildTrigger--;
@@ -367,7 +367,7 @@
     unittest.expect(o.disabled, unittest.isTrue);
     unittest.expect(o.filename, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed1470(o.substitutions);
+    checkUnnamed1457(o.substitutions);
     checkRepoSource(o.triggerTemplate);
   }
   buildCounterBuildTrigger--;
@@ -439,14 +439,14 @@
   buildCounterEmpty--;
 }
 
-buildUnnamed1471() {
+buildUnnamed1458() {
   var o = new core.List<api.Hash>();
   o.add(buildHash());
   o.add(buildHash());
   return o;
 }
 
-checkUnnamed1471(core.List<api.Hash> o) {
+checkUnnamed1458(core.List<api.Hash> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHash(o[0]);
   checkHash(o[1]);
@@ -457,7 +457,7 @@
   var o = new api.FileHashes();
   buildCounterFileHashes++;
   if (buildCounterFileHashes < 3) {
-    o.fileHash = buildUnnamed1471();
+    o.fileHash = buildUnnamed1458();
   }
   buildCounterFileHashes--;
   return o;
@@ -466,7 +466,7 @@
 checkFileHashes(api.FileHashes o) {
   buildCounterFileHashes++;
   if (buildCounterFileHashes < 3) {
-    checkUnnamed1471(o.fileHash);
+    checkUnnamed1458(o.fileHash);
   }
   buildCounterFileHashes--;
 }
@@ -492,14 +492,14 @@
   buildCounterHash--;
 }
 
-buildUnnamed1472() {
+buildUnnamed1459() {
   var o = new core.List<api.BuildTrigger>();
   o.add(buildBuildTrigger());
   o.add(buildBuildTrigger());
   return o;
 }
 
-checkUnnamed1472(core.List<api.BuildTrigger> o) {
+checkUnnamed1459(core.List<api.BuildTrigger> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBuildTrigger(o[0]);
   checkBuildTrigger(o[1]);
@@ -510,7 +510,7 @@
   var o = new api.ListBuildTriggersResponse();
   buildCounterListBuildTriggersResponse++;
   if (buildCounterListBuildTriggersResponse < 3) {
-    o.triggers = buildUnnamed1472();
+    o.triggers = buildUnnamed1459();
   }
   buildCounterListBuildTriggersResponse--;
   return o;
@@ -519,19 +519,19 @@
 checkListBuildTriggersResponse(api.ListBuildTriggersResponse o) {
   buildCounterListBuildTriggersResponse++;
   if (buildCounterListBuildTriggersResponse < 3) {
-    checkUnnamed1472(o.triggers);
+    checkUnnamed1459(o.triggers);
   }
   buildCounterListBuildTriggersResponse--;
 }
 
-buildUnnamed1473() {
+buildUnnamed1460() {
   var o = new core.List<api.Build>();
   o.add(buildBuild());
   o.add(buildBuild());
   return o;
 }
 
-checkUnnamed1473(core.List<api.Build> o) {
+checkUnnamed1460(core.List<api.Build> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBuild(o[0]);
   checkBuild(o[1]);
@@ -542,7 +542,7 @@
   var o = new api.ListBuildsResponse();
   buildCounterListBuildsResponse++;
   if (buildCounterListBuildsResponse < 3) {
-    o.builds = buildUnnamed1473();
+    o.builds = buildUnnamed1460();
     o.nextPageToken = "foo";
   }
   buildCounterListBuildsResponse--;
@@ -552,20 +552,20 @@
 checkListBuildsResponse(api.ListBuildsResponse o) {
   buildCounterListBuildsResponse++;
   if (buildCounterListBuildsResponse < 3) {
-    checkUnnamed1473(o.builds);
+    checkUnnamed1460(o.builds);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListBuildsResponse--;
 }
 
-buildUnnamed1474() {
+buildUnnamed1461() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed1474(core.List<api.Operation> o) {
+checkUnnamed1461(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -577,7 +577,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed1474();
+    o.operations = buildUnnamed1461();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -587,12 +587,12 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1474(o.operations);
+    checkUnnamed1461(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
 
-buildUnnamed1475() {
+buildUnnamed1462() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -607,7 +607,7 @@
   return o;
 }
 
-checkUnnamed1475(core.Map<core.String, core.Object> o) {
+checkUnnamed1462(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -621,7 +621,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1476() {
+buildUnnamed1463() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -636,7 +636,7 @@
   return o;
 }
 
-checkUnnamed1476(core.Map<core.String, core.Object> o) {
+checkUnnamed1463(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -657,9 +657,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed1475();
+    o.metadata = buildUnnamed1462();
     o.name = "foo";
-    o.response = buildUnnamed1476();
+    o.response = buildUnnamed1463();
   }
   buildCounterOperation--;
   return o;
@@ -670,9 +670,9 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed1475(o.metadata);
+    checkUnnamed1462(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1476(o.response);
+    checkUnnamed1463(o.response);
   }
   buildCounterOperation--;
 }
@@ -704,27 +704,27 @@
   buildCounterRepoSource--;
 }
 
-buildUnnamed1477() {
+buildUnnamed1464() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1477(core.List<core.String> o) {
+checkUnnamed1464(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1478() {
+buildUnnamed1465() {
   var o = new core.List<api.BuiltImage>();
   o.add(buildBuiltImage());
   o.add(buildBuiltImage());
   return o;
 }
 
-checkUnnamed1478(core.List<api.BuiltImage> o) {
+checkUnnamed1465(core.List<api.BuiltImage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBuiltImage(o[0]);
   checkBuiltImage(o[1]);
@@ -735,8 +735,8 @@
   var o = new api.Results();
   buildCounterResults++;
   if (buildCounterResults < 3) {
-    o.buildStepImages = buildUnnamed1477();
-    o.images = buildUnnamed1478();
+    o.buildStepImages = buildUnnamed1464();
+    o.images = buildUnnamed1465();
   }
   buildCounterResults--;
   return o;
@@ -745,20 +745,20 @@
 checkResults(api.Results o) {
   buildCounterResults++;
   if (buildCounterResults < 3) {
-    checkUnnamed1477(o.buildStepImages);
-    checkUnnamed1478(o.images);
+    checkUnnamed1464(o.buildStepImages);
+    checkUnnamed1465(o.images);
   }
   buildCounterResults--;
 }
 
-buildUnnamed1479() {
+buildUnnamed1466() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1479(core.Map<core.String, core.String> o) {
+checkUnnamed1466(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -770,7 +770,7 @@
   buildCounterSecret++;
   if (buildCounterSecret < 3) {
     o.kmsKeyName = "foo";
-    o.secretEnv = buildUnnamed1479();
+    o.secretEnv = buildUnnamed1466();
   }
   buildCounterSecret--;
   return o;
@@ -780,7 +780,7 @@
   buildCounterSecret++;
   if (buildCounterSecret < 3) {
     unittest.expect(o.kmsKeyName, unittest.equals('foo'));
-    checkUnnamed1479(o.secretEnv);
+    checkUnnamed1466(o.secretEnv);
   }
   buildCounterSecret--;
 }
@@ -806,14 +806,14 @@
   buildCounterSource--;
 }
 
-buildUnnamed1480() {
+buildUnnamed1467() {
   var o = new core.Map<core.String, api.FileHashes>();
   o["x"] = buildFileHashes();
   o["y"] = buildFileHashes();
   return o;
 }
 
-checkUnnamed1480(core.Map<core.String, api.FileHashes> o) {
+checkUnnamed1467(core.Map<core.String, api.FileHashes> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFileHashes(o["x"]);
   checkFileHashes(o["y"]);
@@ -824,7 +824,7 @@
   var o = new api.SourceProvenance();
   buildCounterSourceProvenance++;
   if (buildCounterSourceProvenance < 3) {
-    o.fileHashes = buildUnnamed1480();
+    o.fileHashes = buildUnnamed1467();
     o.resolvedRepoSource = buildRepoSource();
     o.resolvedStorageSource = buildStorageSource();
   }
@@ -835,14 +835,14 @@
 checkSourceProvenance(api.SourceProvenance o) {
   buildCounterSourceProvenance++;
   if (buildCounterSourceProvenance < 3) {
-    checkUnnamed1480(o.fileHashes);
+    checkUnnamed1467(o.fileHashes);
     checkRepoSource(o.resolvedRepoSource);
     checkStorageSource(o.resolvedStorageSource);
   }
   buildCounterSourceProvenance--;
 }
 
-buildUnnamed1481() {
+buildUnnamed1468() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -857,7 +857,7 @@
   return o;
 }
 
-checkUnnamed1481(core.Map<core.String, core.Object> o) {
+checkUnnamed1468(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -871,17 +871,17 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1482() {
+buildUnnamed1469() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed1481());
-  o.add(buildUnnamed1481());
+  o.add(buildUnnamed1468());
+  o.add(buildUnnamed1468());
   return o;
 }
 
-checkUnnamed1482(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed1469(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1481(o[0]);
-  checkUnnamed1481(o[1]);
+  checkUnnamed1468(o[0]);
+  checkUnnamed1468(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -890,7 +890,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed1482();
+    o.details = buildUnnamed1469();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -901,7 +901,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed1482(o.details);
+    checkUnnamed1469(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -1142,6 +1142,7 @@
       api.OperationsResourceApi res = new api.CloudbuildApi(mock).operations;
       var arg_request = buildCancelOperationRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CancelOperationRequest.fromJson(json);
         checkCancelOperationRequest(obj);
@@ -1176,6 +1177,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1184,7 +1186,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .cancel(arg_request, arg_name)
+          .cancel(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1194,6 +1196,7 @@
       var mock = new HttpServerMock();
       api.OperationsResourceApi res = new api.CloudbuildApi(mock).operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1225,6 +1228,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1232,7 +1236,9 @@
         var resp = convert.JSON.encode(buildOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Operation response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
     });
@@ -1241,9 +1247,10 @@
       var mock = new HttpServerMock();
       api.OperationsResourceApi res = new api.CloudbuildApi(mock).operations;
       var arg_name = "foo";
-      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1275,11 +1282,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1289,9 +1297,10 @@
       }), true);
       res
           .list(arg_name,
-              filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              filter: arg_filter,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
@@ -1306,6 +1315,7 @@
       var arg_request = buildCancelBuildRequest();
       var arg_projectId = "foo";
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CancelBuildRequest.fromJson(json);
         checkCancelBuildRequest(obj);
@@ -1357,6 +1367,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1365,7 +1376,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .cancel(arg_request, arg_projectId, arg_id)
+          .cancel(arg_request, arg_projectId, arg_id, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Build response) {
         checkBuild(response);
       })));
@@ -1377,6 +1388,7 @@
           new api.CloudbuildApi(mock).projects.builds;
       var arg_request = buildBuild();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Build.fromJson(json);
         checkBuild(obj);
@@ -1419,6 +1431,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1427,7 +1440,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_projectId)
+          .create(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1439,6 +1452,7 @@
           new api.CloudbuildApi(mock).projects.builds;
       var arg_projectId = "foo";
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1481,6 +1495,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1489,7 +1504,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_projectId, arg_id)
+          .get(arg_projectId, arg_id, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Build response) {
         checkBuild(response);
       })));
@@ -1500,9 +1515,10 @@
       api.ProjectsBuildsResourceApi res =
           new api.CloudbuildApi(mock).projects.builds;
       var arg_projectId = "foo";
+      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
-      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1542,11 +1558,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1556,9 +1573,10 @@
       }), true);
       res
           .list(arg_projectId,
+              filter: arg_filter,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              filter: arg_filter)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListBuildsResponse response) {
         checkListBuildsResponse(response);
       })));
@@ -1572,6 +1590,7 @@
           new api.CloudbuildApi(mock).projects.triggers;
       var arg_request = buildBuildTrigger();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BuildTrigger.fromJson(json);
         checkBuildTrigger(obj);
@@ -1614,6 +1633,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1622,7 +1642,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_projectId)
+          .create(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BuildTrigger response) {
         checkBuildTrigger(response);
       })));
@@ -1634,6 +1654,7 @@
           new api.CloudbuildApi(mock).projects.triggers;
       var arg_projectId = "foo";
       var arg_triggerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1676,6 +1697,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1684,7 +1706,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_projectId, arg_triggerId)
+          .delete(arg_projectId, arg_triggerId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1696,6 +1718,7 @@
           new api.CloudbuildApi(mock).projects.triggers;
       var arg_projectId = "foo";
       var arg_triggerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1738,6 +1761,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1746,7 +1770,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_projectId, arg_triggerId)
+          .get(arg_projectId, arg_triggerId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BuildTrigger response) {
         checkBuildTrigger(response);
       })));
@@ -1757,6 +1781,7 @@
       api.ProjectsTriggersResourceApi res =
           new api.CloudbuildApi(mock).projects.triggers;
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1796,6 +1821,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1803,7 +1829,7 @@
         var resp = convert.JSON.encode(buildListBuildTriggersResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(arg_projectId).then(
+      res.list(arg_projectId, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.ListBuildTriggersResponse response) {
         checkListBuildTriggersResponse(response);
       })));
@@ -1816,6 +1842,7 @@
       var arg_request = buildBuildTrigger();
       var arg_projectId = "foo";
       var arg_triggerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BuildTrigger.fromJson(json);
         checkBuildTrigger(obj);
@@ -1861,6 +1888,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1869,7 +1897,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_projectId, arg_triggerId)
+          .patch(arg_request, arg_projectId, arg_triggerId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BuildTrigger response) {
         checkBuildTrigger(response);
       })));
diff --git a/generated/googleapis/test/clouddebugger/v2_test.dart b/generated/googleapis/test/clouddebugger/v2_test.dart
index 3a5aa7f..6b2c27f 100644
--- a/generated/googleapis/test/clouddebugger/v2_test.dart
+++ b/generated/googleapis/test/clouddebugger/v2_test.dart
@@ -71,66 +71,66 @@
   buildCounterAliasContext--;
 }
 
-buildUnnamed930() {
+buildUnnamed917() {
   var o = new core.List<api.Variable>();
   o.add(buildVariable());
   o.add(buildVariable());
   return o;
 }
 
-checkUnnamed930(core.List<api.Variable> o) {
+checkUnnamed917(core.List<api.Variable> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVariable(o[0]);
   checkVariable(o[1]);
 }
 
-buildUnnamed931() {
+buildUnnamed918() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed931(core.List<core.String> o) {
+checkUnnamed918(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed932() {
+buildUnnamed919() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed932(core.Map<core.String, core.String> o) {
+checkUnnamed919(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed933() {
+buildUnnamed920() {
   var o = new core.List<api.StackFrame>();
   o.add(buildStackFrame());
   o.add(buildStackFrame());
   return o;
 }
 
-checkUnnamed933(core.List<api.StackFrame> o) {
+checkUnnamed920(core.List<api.StackFrame> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStackFrame(o[0]);
   checkStackFrame(o[1]);
 }
 
-buildUnnamed934() {
+buildUnnamed921() {
   var o = new core.List<api.Variable>();
   o.add(buildVariable());
   o.add(buildVariable());
   return o;
 }
 
-checkUnnamed934(core.List<api.Variable> o) {
+checkUnnamed921(core.List<api.Variable> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVariable(o[0]);
   checkVariable(o[1]);
@@ -144,19 +144,19 @@
     o.action = "foo";
     o.condition = "foo";
     o.createTime = "foo";
-    o.evaluatedExpressions = buildUnnamed930();
-    o.expressions = buildUnnamed931();
+    o.evaluatedExpressions = buildUnnamed917();
+    o.expressions = buildUnnamed918();
     o.finalTime = "foo";
     o.id = "foo";
     o.isFinalState = true;
-    o.labels = buildUnnamed932();
+    o.labels = buildUnnamed919();
     o.location = buildSourceLocation();
     o.logLevel = "foo";
     o.logMessageFormat = "foo";
-    o.stackFrames = buildUnnamed933();
+    o.stackFrames = buildUnnamed920();
     o.status = buildStatusMessage();
     o.userEmail = "foo";
-    o.variableTable = buildUnnamed934();
+    o.variableTable = buildUnnamed921();
   }
   buildCounterBreakpoint--;
   return o;
@@ -168,19 +168,19 @@
     unittest.expect(o.action, unittest.equals('foo'));
     unittest.expect(o.condition, unittest.equals('foo'));
     unittest.expect(o.createTime, unittest.equals('foo'));
-    checkUnnamed930(o.evaluatedExpressions);
-    checkUnnamed931(o.expressions);
+    checkUnnamed917(o.evaluatedExpressions);
+    checkUnnamed918(o.expressions);
     unittest.expect(o.finalTime, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.isFinalState, unittest.isTrue);
-    checkUnnamed932(o.labels);
+    checkUnnamed919(o.labels);
     checkSourceLocation(o.location);
     unittest.expect(o.logLevel, unittest.equals('foo'));
     unittest.expect(o.logMessageFormat, unittest.equals('foo'));
-    checkUnnamed933(o.stackFrames);
+    checkUnnamed920(o.stackFrames);
     checkStatusMessage(o.status);
     unittest.expect(o.userEmail, unittest.equals('foo'));
-    checkUnnamed934(o.variableTable);
+    checkUnnamed921(o.variableTable);
   }
   buildCounterBreakpoint--;
 }
@@ -252,40 +252,40 @@
   buildCounterCloudWorkspaceSourceContext--;
 }
 
-buildUnnamed935() {
+buildUnnamed922() {
   var o = new core.List<api.ExtendedSourceContext>();
   o.add(buildExtendedSourceContext());
   o.add(buildExtendedSourceContext());
   return o;
 }
 
-checkUnnamed935(core.List<api.ExtendedSourceContext> o) {
+checkUnnamed922(core.List<api.ExtendedSourceContext> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkExtendedSourceContext(o[0]);
   checkExtendedSourceContext(o[1]);
 }
 
-buildUnnamed936() {
+buildUnnamed923() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed936(core.Map<core.String, core.String> o) {
+checkUnnamed923(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed937() {
+buildUnnamed924() {
   var o = new core.List<api.SourceContext>();
   o.add(buildSourceContext());
   o.add(buildSourceContext());
   return o;
 }
 
-checkUnnamed937(core.List<api.SourceContext> o) {
+checkUnnamed924(core.List<api.SourceContext> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSourceContext(o[0]);
   checkSourceContext(o[1]);
@@ -298,13 +298,13 @@
   if (buildCounterDebuggee < 3) {
     o.agentVersion = "foo";
     o.description = "foo";
-    o.extSourceContexts = buildUnnamed935();
+    o.extSourceContexts = buildUnnamed922();
     o.id = "foo";
     o.isDisabled = true;
     o.isInactive = true;
-    o.labels = buildUnnamed936();
+    o.labels = buildUnnamed923();
     o.project = "foo";
-    o.sourceContexts = buildUnnamed937();
+    o.sourceContexts = buildUnnamed924();
     o.status = buildStatusMessage();
     o.uniquifier = "foo";
   }
@@ -317,13 +317,13 @@
   if (buildCounterDebuggee < 3) {
     unittest.expect(o.agentVersion, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed935(o.extSourceContexts);
+    checkUnnamed922(o.extSourceContexts);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.isDisabled, unittest.isTrue);
     unittest.expect(o.isInactive, unittest.isTrue);
-    checkUnnamed936(o.labels);
+    checkUnnamed923(o.labels);
     unittest.expect(o.project, unittest.equals('foo'));
-    checkUnnamed937(o.sourceContexts);
+    checkUnnamed924(o.sourceContexts);
     checkStatusMessage(o.status);
     unittest.expect(o.uniquifier, unittest.equals('foo'));
   }
@@ -345,14 +345,14 @@
   buildCounterEmpty--;
 }
 
-buildUnnamed938() {
+buildUnnamed925() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed938(core.Map<core.String, core.String> o) {
+checkUnnamed925(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -364,7 +364,7 @@
   buildCounterExtendedSourceContext++;
   if (buildCounterExtendedSourceContext < 3) {
     o.context = buildSourceContext();
-    o.labels = buildUnnamed938();
+    o.labels = buildUnnamed925();
   }
   buildCounterExtendedSourceContext--;
   return o;
@@ -374,19 +374,19 @@
   buildCounterExtendedSourceContext++;
   if (buildCounterExtendedSourceContext < 3) {
     checkSourceContext(o.context);
-    checkUnnamed938(o.labels);
+    checkUnnamed925(o.labels);
   }
   buildCounterExtendedSourceContext--;
 }
 
-buildUnnamed939() {
+buildUnnamed926() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed939(core.List<core.String> o) {
+checkUnnamed926(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -398,7 +398,7 @@
   buildCounterFormatMessage++;
   if (buildCounterFormatMessage < 3) {
     o.format = "foo";
-    o.parameters = buildUnnamed939();
+    o.parameters = buildUnnamed926();
   }
   buildCounterFormatMessage--;
   return o;
@@ -408,7 +408,7 @@
   buildCounterFormatMessage++;
   if (buildCounterFormatMessage < 3) {
     unittest.expect(o.format, unittest.equals('foo'));
-    checkUnnamed939(o.parameters);
+    checkUnnamed926(o.parameters);
   }
   buildCounterFormatMessage--;
 }
@@ -480,14 +480,14 @@
   buildCounterGitSourceContext--;
 }
 
-buildUnnamed940() {
+buildUnnamed927() {
   var o = new core.List<api.Breakpoint>();
   o.add(buildBreakpoint());
   o.add(buildBreakpoint());
   return o;
 }
 
-checkUnnamed940(core.List<api.Breakpoint> o) {
+checkUnnamed927(core.List<api.Breakpoint> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBreakpoint(o[0]);
   checkBreakpoint(o[1]);
@@ -498,7 +498,7 @@
   var o = new api.ListActiveBreakpointsResponse();
   buildCounterListActiveBreakpointsResponse++;
   if (buildCounterListActiveBreakpointsResponse < 3) {
-    o.breakpoints = buildUnnamed940();
+    o.breakpoints = buildUnnamed927();
     o.nextWaitToken = "foo";
     o.waitExpired = true;
   }
@@ -509,21 +509,21 @@
 checkListActiveBreakpointsResponse(api.ListActiveBreakpointsResponse o) {
   buildCounterListActiveBreakpointsResponse++;
   if (buildCounterListActiveBreakpointsResponse < 3) {
-    checkUnnamed940(o.breakpoints);
+    checkUnnamed927(o.breakpoints);
     unittest.expect(o.nextWaitToken, unittest.equals('foo'));
     unittest.expect(o.waitExpired, unittest.isTrue);
   }
   buildCounterListActiveBreakpointsResponse--;
 }
 
-buildUnnamed941() {
+buildUnnamed928() {
   var o = new core.List<api.Breakpoint>();
   o.add(buildBreakpoint());
   o.add(buildBreakpoint());
   return o;
 }
 
-checkUnnamed941(core.List<api.Breakpoint> o) {
+checkUnnamed928(core.List<api.Breakpoint> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBreakpoint(o[0]);
   checkBreakpoint(o[1]);
@@ -534,7 +534,7 @@
   var o = new api.ListBreakpointsResponse();
   buildCounterListBreakpointsResponse++;
   if (buildCounterListBreakpointsResponse < 3) {
-    o.breakpoints = buildUnnamed941();
+    o.breakpoints = buildUnnamed928();
     o.nextWaitToken = "foo";
   }
   buildCounterListBreakpointsResponse--;
@@ -544,20 +544,20 @@
 checkListBreakpointsResponse(api.ListBreakpointsResponse o) {
   buildCounterListBreakpointsResponse++;
   if (buildCounterListBreakpointsResponse < 3) {
-    checkUnnamed941(o.breakpoints);
+    checkUnnamed928(o.breakpoints);
     unittest.expect(o.nextWaitToken, unittest.equals('foo'));
   }
   buildCounterListBreakpointsResponse--;
 }
 
-buildUnnamed942() {
+buildUnnamed929() {
   var o = new core.List<api.Debuggee>();
   o.add(buildDebuggee());
   o.add(buildDebuggee());
   return o;
 }
 
-checkUnnamed942(core.List<api.Debuggee> o) {
+checkUnnamed929(core.List<api.Debuggee> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDebuggee(o[0]);
   checkDebuggee(o[1]);
@@ -568,7 +568,7 @@
   var o = new api.ListDebuggeesResponse();
   buildCounterListDebuggeesResponse++;
   if (buildCounterListDebuggeesResponse < 3) {
-    o.debuggees = buildUnnamed942();
+    o.debuggees = buildUnnamed929();
   }
   buildCounterListDebuggeesResponse--;
   return o;
@@ -577,7 +577,7 @@
 checkListDebuggeesResponse(api.ListDebuggeesResponse o) {
   buildCounterListDebuggeesResponse++;
   if (buildCounterListDebuggeesResponse < 3) {
-    checkUnnamed942(o.debuggees);
+    checkUnnamed929(o.debuggees);
   }
   buildCounterListDebuggeesResponse--;
 }
@@ -727,27 +727,27 @@
   buildCounterSourceLocation--;
 }
 
-buildUnnamed943() {
+buildUnnamed930() {
   var o = new core.List<api.Variable>();
   o.add(buildVariable());
   o.add(buildVariable());
   return o;
 }
 
-checkUnnamed943(core.List<api.Variable> o) {
+checkUnnamed930(core.List<api.Variable> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVariable(o[0]);
   checkVariable(o[1]);
 }
 
-buildUnnamed944() {
+buildUnnamed931() {
   var o = new core.List<api.Variable>();
   o.add(buildVariable());
   o.add(buildVariable());
   return o;
 }
 
-checkUnnamed944(core.List<api.Variable> o) {
+checkUnnamed931(core.List<api.Variable> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVariable(o[0]);
   checkVariable(o[1]);
@@ -758,9 +758,9 @@
   var o = new api.StackFrame();
   buildCounterStackFrame++;
   if (buildCounterStackFrame < 3) {
-    o.arguments = buildUnnamed943();
+    o.arguments = buildUnnamed930();
     o.function = "foo";
-    o.locals = buildUnnamed944();
+    o.locals = buildUnnamed931();
     o.location = buildSourceLocation();
   }
   buildCounterStackFrame--;
@@ -770,9 +770,9 @@
 checkStackFrame(api.StackFrame o) {
   buildCounterStackFrame++;
   if (buildCounterStackFrame < 3) {
-    checkUnnamed943(o.arguments);
+    checkUnnamed930(o.arguments);
     unittest.expect(o.function, unittest.equals('foo'));
-    checkUnnamed944(o.locals);
+    checkUnnamed931(o.locals);
     checkSourceLocation(o.location);
   }
   buildCounterStackFrame--;
@@ -835,14 +835,14 @@
   buildCounterUpdateActiveBreakpointResponse--;
 }
 
-buildUnnamed945() {
+buildUnnamed932() {
   var o = new core.List<api.Variable>();
   o.add(buildVariable());
   o.add(buildVariable());
   return o;
 }
 
-checkUnnamed945(core.List<api.Variable> o) {
+checkUnnamed932(core.List<api.Variable> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVariable(o[0]);
   checkVariable(o[1]);
@@ -853,7 +853,7 @@
   var o = new api.Variable();
   buildCounterVariable++;
   if (buildCounterVariable < 3) {
-    o.members = buildUnnamed945();
+    o.members = buildUnnamed932();
     o.name = "foo";
     o.status = buildStatusMessage();
     o.type = "foo";
@@ -867,7 +867,7 @@
 checkVariable(api.Variable o) {
   buildCounterVariable++;
   if (buildCounterVariable < 3) {
-    checkUnnamed945(o.members);
+    checkUnnamed932(o.members);
     unittest.expect(o.name, unittest.equals('foo'));
     checkStatusMessage(o.status);
     unittest.expect(o.type, unittest.equals('foo'));
@@ -1100,6 +1100,7 @@
       api.ControllerDebuggeesResourceApi res =
           new api.ClouddebuggerApi(mock).controller.debuggees;
       var arg_request = buildRegisterDebuggeeRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RegisterDebuggeeRequest.fromJson(json);
         checkRegisterDebuggeeRequest(obj);
@@ -1133,6 +1134,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1141,7 +1143,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .register(arg_request)
+          .register(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RegisterDebuggeeResponse response) {
         checkRegisterDebuggeeResponse(response);
       })));
@@ -1156,6 +1158,7 @@
       var arg_debuggeeId = "foo";
       var arg_successOnTimeout = true;
       var arg_waitToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1199,6 +1202,7 @@
             unittest.equals("$arg_successOnTimeout"));
         unittest.expect(
             queryMap["waitToken"].first, unittest.equals(arg_waitToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1208,7 +1212,9 @@
       }), true);
       res
           .list(arg_debuggeeId,
-              successOnTimeout: arg_successOnTimeout, waitToken: arg_waitToken)
+              successOnTimeout: arg_successOnTimeout,
+              waitToken: arg_waitToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListActiveBreakpointsResponse response) {
         checkListActiveBreakpointsResponse(response);
@@ -1222,6 +1228,7 @@
       var arg_request = buildUpdateActiveBreakpointRequest();
       var arg_debuggeeId = "foo";
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UpdateActiveBreakpointRequest.fromJson(json);
         checkUpdateActiveBreakpointRequest(obj);
@@ -1267,6 +1274,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1274,8 +1282,10 @@
         var resp = convert.JSON.encode(buildUpdateActiveBreakpointResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.update(arg_request, arg_debuggeeId, arg_id).then(
-          unittest.expectAsync1(((api.UpdateActiveBreakpointResponse response) {
+      res
+          .update(arg_request, arg_debuggeeId, arg_id, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.UpdateActiveBreakpointResponse response) {
         checkUpdateActiveBreakpointResponse(response);
       })));
     });
@@ -1286,9 +1296,10 @@
       var mock = new HttpServerMock();
       api.DebuggerDebuggeesResourceApi res =
           new api.ClouddebuggerApi(mock).debugger.debuggees;
-      var arg_includeInactive = true;
       var arg_project = "foo";
       var arg_clientVersion = "foo";
+      var arg_includeInactive = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1319,12 +1330,13 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(queryMap["includeInactive"].first,
-            unittest.equals("$arg_includeInactive"));
         unittest.expect(
             queryMap["project"].first, unittest.equals(arg_project));
         unittest.expect(queryMap["clientVersion"].first,
             unittest.equals(arg_clientVersion));
+        unittest.expect(queryMap["includeInactive"].first,
+            unittest.equals("$arg_includeInactive"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1334,9 +1346,10 @@
       }), true);
       res
           .list(
-              includeInactive: arg_includeInactive,
               project: arg_project,
-              clientVersion: arg_clientVersion)
+              clientVersion: arg_clientVersion,
+              includeInactive: arg_includeInactive,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListDebuggeesResponse response) {
         checkListDebuggeesResponse(response);
       })));
@@ -1351,6 +1364,7 @@
       var arg_debuggeeId = "foo";
       var arg_breakpointId = "foo";
       var arg_clientVersion = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1395,6 +1409,7 @@
         }
         unittest.expect(queryMap["clientVersion"].first,
             unittest.equals(arg_clientVersion));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1404,7 +1419,7 @@
       }), true);
       res
           .delete(arg_debuggeeId, arg_breakpointId,
-              clientVersion: arg_clientVersion)
+              clientVersion: arg_clientVersion, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1417,6 +1432,7 @@
       var arg_debuggeeId = "foo";
       var arg_breakpointId = "foo";
       var arg_clientVersion = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1461,6 +1477,7 @@
         }
         unittest.expect(queryMap["clientVersion"].first,
             unittest.equals(arg_clientVersion));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1470,7 +1487,7 @@
       }), true);
       res
           .get(arg_debuggeeId, arg_breakpointId,
-              clientVersion: arg_clientVersion)
+              clientVersion: arg_clientVersion, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GetBreakpointResponse response) {
         checkGetBreakpointResponse(response);
       })));
@@ -1485,8 +1502,9 @@
       var arg_waitToken = "foo";
       var arg_clientVersion = "foo";
       var arg_action_value = "foo";
-      var arg_includeInactive = true;
       var arg_includeAllUsers = true;
+      var arg_includeInactive = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1534,10 +1552,11 @@
             unittest.equals(arg_clientVersion));
         unittest.expect(
             queryMap["action.value"].first, unittest.equals(arg_action_value));
-        unittest.expect(queryMap["includeInactive"].first,
-            unittest.equals("$arg_includeInactive"));
         unittest.expect(queryMap["includeAllUsers"].first,
             unittest.equals("$arg_includeAllUsers"));
+        unittest.expect(queryMap["includeInactive"].first,
+            unittest.equals("$arg_includeInactive"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1551,8 +1570,9 @@
               waitToken: arg_waitToken,
               clientVersion: arg_clientVersion,
               action_value: arg_action_value,
+              includeAllUsers: arg_includeAllUsers,
               includeInactive: arg_includeInactive,
-              includeAllUsers: arg_includeAllUsers)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListBreakpointsResponse response) {
         checkListBreakpointsResponse(response);
       })));
@@ -1565,6 +1585,7 @@
       var arg_request = buildBreakpoint();
       var arg_debuggeeId = "foo";
       var arg_clientVersion = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Breakpoint.fromJson(json);
         checkBreakpoint(obj);
@@ -1609,6 +1630,7 @@
         }
         unittest.expect(queryMap["clientVersion"].first,
             unittest.equals(arg_clientVersion));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1617,7 +1639,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .set(arg_request, arg_debuggeeId, clientVersion: arg_clientVersion)
+          .set(arg_request, arg_debuggeeId,
+              clientVersion: arg_clientVersion, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SetBreakpointResponse response) {
         checkSetBreakpointResponse(response);
       })));
diff --git a/generated/googleapis/test/cloudfunctions/v1_test.dart b/generated/googleapis/test/cloudfunctions/v1_test.dart
index 50f9367..4a6398b 100644
--- a/generated/googleapis/test/cloudfunctions/v1_test.dart
+++ b/generated/googleapis/test/cloudfunctions/v1_test.dart
@@ -50,14 +50,285 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed141() {
+core.int buildCounterCallFunctionRequest = 0;
+buildCallFunctionRequest() {
+  var o = new api.CallFunctionRequest();
+  buildCounterCallFunctionRequest++;
+  if (buildCounterCallFunctionRequest < 3) {
+    o.data = "foo";
+  }
+  buildCounterCallFunctionRequest--;
+  return o;
+}
+
+checkCallFunctionRequest(api.CallFunctionRequest o) {
+  buildCounterCallFunctionRequest++;
+  if (buildCounterCallFunctionRequest < 3) {
+    unittest.expect(o.data, unittest.equals('foo'));
+  }
+  buildCounterCallFunctionRequest--;
+}
+
+core.int buildCounterCallFunctionResponse = 0;
+buildCallFunctionResponse() {
+  var o = new api.CallFunctionResponse();
+  buildCounterCallFunctionResponse++;
+  if (buildCounterCallFunctionResponse < 3) {
+    o.error = "foo";
+    o.executionId = "foo";
+    o.result = "foo";
+  }
+  buildCounterCallFunctionResponse--;
+  return o;
+}
+
+checkCallFunctionResponse(api.CallFunctionResponse o) {
+  buildCounterCallFunctionResponse++;
+  if (buildCounterCallFunctionResponse < 3) {
+    unittest.expect(o.error, unittest.equals('foo'));
+    unittest.expect(o.executionId, unittest.equals('foo'));
+    unittest.expect(o.result, unittest.equals('foo'));
+  }
+  buildCounterCallFunctionResponse--;
+}
+
+buildUnnamed122() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed122(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterCloudFunction = 0;
+buildCloudFunction() {
+  var o = new api.CloudFunction();
+  buildCounterCloudFunction++;
+  if (buildCounterCloudFunction < 3) {
+    o.availableMemoryMb = 42;
+    o.description = "foo";
+    o.entryPoint = "foo";
+    o.eventTrigger = buildEventTrigger();
+    o.httpsTrigger = buildHttpsTrigger();
+    o.labels = buildUnnamed122();
+    o.name = "foo";
+    o.serviceAccountEmail = "foo";
+    o.sourceArchiveUrl = "foo";
+    o.sourceRepository = buildSourceRepository();
+    o.sourceUploadUrl = "foo";
+    o.status = "foo";
+    o.timeout = "foo";
+    o.updateTime = "foo";
+    o.versionId = "foo";
+  }
+  buildCounterCloudFunction--;
+  return o;
+}
+
+checkCloudFunction(api.CloudFunction o) {
+  buildCounterCloudFunction++;
+  if (buildCounterCloudFunction < 3) {
+    unittest.expect(o.availableMemoryMb, unittest.equals(42));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.entryPoint, unittest.equals('foo'));
+    checkEventTrigger(o.eventTrigger);
+    checkHttpsTrigger(o.httpsTrigger);
+    checkUnnamed122(o.labels);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.serviceAccountEmail, unittest.equals('foo'));
+    unittest.expect(o.sourceArchiveUrl, unittest.equals('foo'));
+    checkSourceRepository(o.sourceRepository);
+    unittest.expect(o.sourceUploadUrl, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(o.timeout, unittest.equals('foo'));
+    unittest.expect(o.updateTime, unittest.equals('foo'));
+    unittest.expect(o.versionId, unittest.equals('foo'));
+  }
+  buildCounterCloudFunction--;
+}
+
+core.int buildCounterEventTrigger = 0;
+buildEventTrigger() {
+  var o = new api.EventTrigger();
+  buildCounterEventTrigger++;
+  if (buildCounterEventTrigger < 3) {
+    o.eventType = "foo";
+    o.failurePolicy = buildFailurePolicy();
+    o.resource = "foo";
+    o.service = "foo";
+  }
+  buildCounterEventTrigger--;
+  return o;
+}
+
+checkEventTrigger(api.EventTrigger o) {
+  buildCounterEventTrigger++;
+  if (buildCounterEventTrigger < 3) {
+    unittest.expect(o.eventType, unittest.equals('foo'));
+    checkFailurePolicy(o.failurePolicy);
+    unittest.expect(o.resource, unittest.equals('foo'));
+    unittest.expect(o.service, unittest.equals('foo'));
+  }
+  buildCounterEventTrigger--;
+}
+
+core.int buildCounterFailurePolicy = 0;
+buildFailurePolicy() {
+  var o = new api.FailurePolicy();
+  buildCounterFailurePolicy++;
+  if (buildCounterFailurePolicy < 3) {
+    o.retry = buildRetry();
+  }
+  buildCounterFailurePolicy--;
+  return o;
+}
+
+checkFailurePolicy(api.FailurePolicy o) {
+  buildCounterFailurePolicy++;
+  if (buildCounterFailurePolicy < 3) {
+    checkRetry(o.retry);
+  }
+  buildCounterFailurePolicy--;
+}
+
+core.int buildCounterGenerateDownloadUrlRequest = 0;
+buildGenerateDownloadUrlRequest() {
+  var o = new api.GenerateDownloadUrlRequest();
+  buildCounterGenerateDownloadUrlRequest++;
+  if (buildCounterGenerateDownloadUrlRequest < 3) {
+    o.versionId = "foo";
+  }
+  buildCounterGenerateDownloadUrlRequest--;
+  return o;
+}
+
+checkGenerateDownloadUrlRequest(api.GenerateDownloadUrlRequest o) {
+  buildCounterGenerateDownloadUrlRequest++;
+  if (buildCounterGenerateDownloadUrlRequest < 3) {
+    unittest.expect(o.versionId, unittest.equals('foo'));
+  }
+  buildCounterGenerateDownloadUrlRequest--;
+}
+
+core.int buildCounterGenerateDownloadUrlResponse = 0;
+buildGenerateDownloadUrlResponse() {
+  var o = new api.GenerateDownloadUrlResponse();
+  buildCounterGenerateDownloadUrlResponse++;
+  if (buildCounterGenerateDownloadUrlResponse < 3) {
+    o.downloadUrl = "foo";
+  }
+  buildCounterGenerateDownloadUrlResponse--;
+  return o;
+}
+
+checkGenerateDownloadUrlResponse(api.GenerateDownloadUrlResponse o) {
+  buildCounterGenerateDownloadUrlResponse++;
+  if (buildCounterGenerateDownloadUrlResponse < 3) {
+    unittest.expect(o.downloadUrl, unittest.equals('foo'));
+  }
+  buildCounterGenerateDownloadUrlResponse--;
+}
+
+core.int buildCounterGenerateUploadUrlRequest = 0;
+buildGenerateUploadUrlRequest() {
+  var o = new api.GenerateUploadUrlRequest();
+  buildCounterGenerateUploadUrlRequest++;
+  if (buildCounterGenerateUploadUrlRequest < 3) {}
+  buildCounterGenerateUploadUrlRequest--;
+  return o;
+}
+
+checkGenerateUploadUrlRequest(api.GenerateUploadUrlRequest o) {
+  buildCounterGenerateUploadUrlRequest++;
+  if (buildCounterGenerateUploadUrlRequest < 3) {}
+  buildCounterGenerateUploadUrlRequest--;
+}
+
+core.int buildCounterGenerateUploadUrlResponse = 0;
+buildGenerateUploadUrlResponse() {
+  var o = new api.GenerateUploadUrlResponse();
+  buildCounterGenerateUploadUrlResponse++;
+  if (buildCounterGenerateUploadUrlResponse < 3) {
+    o.uploadUrl = "foo";
+  }
+  buildCounterGenerateUploadUrlResponse--;
+  return o;
+}
+
+checkGenerateUploadUrlResponse(api.GenerateUploadUrlResponse o) {
+  buildCounterGenerateUploadUrlResponse++;
+  if (buildCounterGenerateUploadUrlResponse < 3) {
+    unittest.expect(o.uploadUrl, unittest.equals('foo'));
+  }
+  buildCounterGenerateUploadUrlResponse--;
+}
+
+core.int buildCounterHttpsTrigger = 0;
+buildHttpsTrigger() {
+  var o = new api.HttpsTrigger();
+  buildCounterHttpsTrigger++;
+  if (buildCounterHttpsTrigger < 3) {
+    o.url = "foo";
+  }
+  buildCounterHttpsTrigger--;
+  return o;
+}
+
+checkHttpsTrigger(api.HttpsTrigger o) {
+  buildCounterHttpsTrigger++;
+  if (buildCounterHttpsTrigger < 3) {
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterHttpsTrigger--;
+}
+
+buildUnnamed123() {
+  var o = new core.List<api.CloudFunction>();
+  o.add(buildCloudFunction());
+  o.add(buildCloudFunction());
+  return o;
+}
+
+checkUnnamed123(core.List<api.CloudFunction> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCloudFunction(o[0]);
+  checkCloudFunction(o[1]);
+}
+
+core.int buildCounterListFunctionsResponse = 0;
+buildListFunctionsResponse() {
+  var o = new api.ListFunctionsResponse();
+  buildCounterListFunctionsResponse++;
+  if (buildCounterListFunctionsResponse < 3) {
+    o.functions = buildUnnamed123();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListFunctionsResponse--;
+  return o;
+}
+
+checkListFunctionsResponse(api.ListFunctionsResponse o) {
+  buildCounterListFunctionsResponse++;
+  if (buildCounterListFunctionsResponse < 3) {
+    checkUnnamed123(o.functions);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListFunctionsResponse--;
+}
+
+buildUnnamed124() {
   var o = new core.List<api.Location>();
   o.add(buildLocation());
   o.add(buildLocation());
   return o;
 }
 
-checkUnnamed141(core.List<api.Location> o) {
+checkUnnamed124(core.List<api.Location> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocation(o[0]);
   checkLocation(o[1]);
@@ -68,7 +339,7 @@
   var o = new api.ListLocationsResponse();
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    o.locations = buildUnnamed141();
+    o.locations = buildUnnamed124();
     o.nextPageToken = "foo";
   }
   buildCounterListLocationsResponse--;
@@ -78,20 +349,20 @@
 checkListLocationsResponse(api.ListLocationsResponse o) {
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    checkUnnamed141(o.locations);
+    checkUnnamed124(o.locations);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListLocationsResponse--;
 }
 
-buildUnnamed142() {
+buildUnnamed125() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed142(core.List<api.Operation> o) {
+checkUnnamed125(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -103,7 +374,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed142();
+    o.operations = buildUnnamed125();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -113,25 +384,25 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed142(o.operations);
+    checkUnnamed125(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
 
-buildUnnamed143() {
+buildUnnamed126() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed143(core.Map<core.String, core.String> o) {
+checkUnnamed126(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed144() {
+buildUnnamed127() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -146,7 +417,7 @@
   return o;
 }
 
-checkUnnamed144(core.Map<core.String, core.Object> o) {
+checkUnnamed127(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -165,9 +436,9 @@
   var o = new api.Location();
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
-    o.labels = buildUnnamed143();
+    o.labels = buildUnnamed126();
     o.locationId = "foo";
-    o.metadata = buildUnnamed144();
+    o.metadata = buildUnnamed127();
     o.name = "foo";
   }
   buildCounterLocation--;
@@ -177,15 +448,15 @@
 checkLocation(api.Location o) {
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
-    checkUnnamed143(o.labels);
+    checkUnnamed126(o.labels);
     unittest.expect(o.locationId, unittest.equals('foo'));
-    checkUnnamed144(o.metadata);
+    checkUnnamed127(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
   }
   buildCounterLocation--;
 }
 
-buildUnnamed145() {
+buildUnnamed128() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -200,7 +471,7 @@
   return o;
 }
 
-checkUnnamed145(core.Map<core.String, core.Object> o) {
+checkUnnamed128(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -214,7 +485,7 @@
   unittest.expect(casted4["string"], unittest.equals('foo'));
 }
 
-buildUnnamed146() {
+buildUnnamed129() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -229,7 +500,7 @@
   return o;
 }
 
-checkUnnamed146(core.Map<core.String, core.Object> o) {
+checkUnnamed129(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -250,9 +521,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed145();
+    o.metadata = buildUnnamed128();
     o.name = "foo";
-    o.response = buildUnnamed146();
+    o.response = buildUnnamed129();
   }
   buildCounterOperation--;
   return o;
@@ -263,14 +534,14 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed145(o.metadata);
+    checkUnnamed128(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed146(o.response);
+    checkUnnamed129(o.response);
   }
   buildCounterOperation--;
 }
 
-buildUnnamed147() {
+buildUnnamed130() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -285,7 +556,7 @@
   return o;
 }
 
-checkUnnamed147(core.Map<core.String, core.Object> o) {
+checkUnnamed130(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted7 = (o["x"]) as core.Map;
   unittest.expect(casted7, unittest.hasLength(3));
@@ -299,32 +570,32 @@
   unittest.expect(casted8["string"], unittest.equals('foo'));
 }
 
-core.int buildCounterOperationMetadataV1Beta2 = 0;
-buildOperationMetadataV1Beta2() {
-  var o = new api.OperationMetadataV1Beta2();
-  buildCounterOperationMetadataV1Beta2++;
-  if (buildCounterOperationMetadataV1Beta2 < 3) {
-    o.request = buildUnnamed147();
+core.int buildCounterOperationMetadataV1 = 0;
+buildOperationMetadataV1() {
+  var o = new api.OperationMetadataV1();
+  buildCounterOperationMetadataV1++;
+  if (buildCounterOperationMetadataV1 < 3) {
+    o.request = buildUnnamed130();
     o.target = "foo";
     o.type = "foo";
     o.versionId = "foo";
   }
-  buildCounterOperationMetadataV1Beta2--;
+  buildCounterOperationMetadataV1--;
   return o;
 }
 
-checkOperationMetadataV1Beta2(api.OperationMetadataV1Beta2 o) {
-  buildCounterOperationMetadataV1Beta2++;
-  if (buildCounterOperationMetadataV1Beta2 < 3) {
-    checkUnnamed147(o.request);
+checkOperationMetadataV1(api.OperationMetadataV1 o) {
+  buildCounterOperationMetadataV1++;
+  if (buildCounterOperationMetadataV1 < 3) {
+    checkUnnamed130(o.request);
     unittest.expect(o.target, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
     unittest.expect(o.versionId, unittest.equals('foo'));
   }
-  buildCounterOperationMetadataV1Beta2--;
+  buildCounterOperationMetadataV1--;
 }
 
-buildUnnamed148() {
+buildUnnamed131() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -339,7 +610,7 @@
   return o;
 }
 
-checkUnnamed148(core.Map<core.String, core.Object> o) {
+checkUnnamed131(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted9 = (o["x"]) as core.Map;
   unittest.expect(casted9, unittest.hasLength(3));
@@ -353,17 +624,107 @@
   unittest.expect(casted10["string"], unittest.equals('foo'));
 }
 
-buildUnnamed149() {
-  var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed148());
-  o.add(buildUnnamed148());
+core.int buildCounterOperationMetadataV1Beta2 = 0;
+buildOperationMetadataV1Beta2() {
+  var o = new api.OperationMetadataV1Beta2();
+  buildCounterOperationMetadataV1Beta2++;
+  if (buildCounterOperationMetadataV1Beta2 < 3) {
+    o.request = buildUnnamed131();
+    o.target = "foo";
+    o.type = "foo";
+    o.versionId = "foo";
+  }
+  buildCounterOperationMetadataV1Beta2--;
   return o;
 }
 
-checkUnnamed149(core.List<core.Map<core.String, core.Object>> o) {
+checkOperationMetadataV1Beta2(api.OperationMetadataV1Beta2 o) {
+  buildCounterOperationMetadataV1Beta2++;
+  if (buildCounterOperationMetadataV1Beta2 < 3) {
+    checkUnnamed131(o.request);
+    unittest.expect(o.target, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.versionId, unittest.equals('foo'));
+  }
+  buildCounterOperationMetadataV1Beta2--;
+}
+
+core.int buildCounterRetry = 0;
+buildRetry() {
+  var o = new api.Retry();
+  buildCounterRetry++;
+  if (buildCounterRetry < 3) {}
+  buildCounterRetry--;
+  return o;
+}
+
+checkRetry(api.Retry o) {
+  buildCounterRetry++;
+  if (buildCounterRetry < 3) {}
+  buildCounterRetry--;
+}
+
+core.int buildCounterSourceRepository = 0;
+buildSourceRepository() {
+  var o = new api.SourceRepository();
+  buildCounterSourceRepository++;
+  if (buildCounterSourceRepository < 3) {
+    o.deployedUrl = "foo";
+    o.url = "foo";
+  }
+  buildCounterSourceRepository--;
+  return o;
+}
+
+checkSourceRepository(api.SourceRepository o) {
+  buildCounterSourceRepository++;
+  if (buildCounterSourceRepository < 3) {
+    unittest.expect(o.deployedUrl, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterSourceRepository--;
+}
+
+buildUnnamed132() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed132(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed148(o[0]);
-  checkUnnamed148(o[1]);
+  var casted11 = (o["x"]) as core.Map;
+  unittest.expect(casted11, unittest.hasLength(3));
+  unittest.expect(casted11["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted11["bool"], unittest.equals(true));
+  unittest.expect(casted11["string"], unittest.equals('foo'));
+  var casted12 = (o["y"]) as core.Map;
+  unittest.expect(casted12, unittest.hasLength(3));
+  unittest.expect(casted12["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted12["bool"], unittest.equals(true));
+  unittest.expect(casted12["string"], unittest.equals('foo'));
+}
+
+buildUnnamed133() {
+  var o = new core.List<core.Map<core.String, core.Object>>();
+  o.add(buildUnnamed132());
+  o.add(buildUnnamed132());
+  return o;
+}
+
+checkUnnamed133(core.List<core.Map<core.String, core.Object>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed132(o[0]);
+  checkUnnamed132(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -372,7 +733,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed149();
+    o.details = buildUnnamed133();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -383,13 +744,101 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed149(o.details);
+    checkUnnamed133(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
 }
 
 main() {
+  unittest.group("obj-schema-CallFunctionRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCallFunctionRequest();
+      var od = new api.CallFunctionRequest.fromJson(o.toJson());
+      checkCallFunctionRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-CallFunctionResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCallFunctionResponse();
+      var od = new api.CallFunctionResponse.fromJson(o.toJson());
+      checkCallFunctionResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CloudFunction", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCloudFunction();
+      var od = new api.CloudFunction.fromJson(o.toJson());
+      checkCloudFunction(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventTrigger", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventTrigger();
+      var od = new api.EventTrigger.fromJson(o.toJson());
+      checkEventTrigger(od);
+    });
+  });
+
+  unittest.group("obj-schema-FailurePolicy", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFailurePolicy();
+      var od = new api.FailurePolicy.fromJson(o.toJson());
+      checkFailurePolicy(od);
+    });
+  });
+
+  unittest.group("obj-schema-GenerateDownloadUrlRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGenerateDownloadUrlRequest();
+      var od = new api.GenerateDownloadUrlRequest.fromJson(o.toJson());
+      checkGenerateDownloadUrlRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-GenerateDownloadUrlResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGenerateDownloadUrlResponse();
+      var od = new api.GenerateDownloadUrlResponse.fromJson(o.toJson());
+      checkGenerateDownloadUrlResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-GenerateUploadUrlRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGenerateUploadUrlRequest();
+      var od = new api.GenerateUploadUrlRequest.fromJson(o.toJson());
+      checkGenerateUploadUrlRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-GenerateUploadUrlResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGenerateUploadUrlResponse();
+      var od = new api.GenerateUploadUrlResponse.fromJson(o.toJson());
+      checkGenerateUploadUrlResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-HttpsTrigger", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildHttpsTrigger();
+      var od = new api.HttpsTrigger.fromJson(o.toJson());
+      checkHttpsTrigger(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListFunctionsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListFunctionsResponse();
+      var od = new api.ListFunctionsResponse.fromJson(o.toJson());
+      checkListFunctionsResponse(od);
+    });
+  });
+
   unittest.group("obj-schema-ListLocationsResponse", () {
     unittest.test("to-json--from-json", () {
       var o = buildListLocationsResponse();
@@ -422,6 +871,14 @@
     });
   });
 
+  unittest.group("obj-schema-OperationMetadataV1", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOperationMetadataV1();
+      var od = new api.OperationMetadataV1.fromJson(o.toJson());
+      checkOperationMetadataV1(od);
+    });
+  });
+
   unittest.group("obj-schema-OperationMetadataV1Beta2", () {
     unittest.test("to-json--from-json", () {
       var o = buildOperationMetadataV1Beta2();
@@ -430,6 +887,22 @@
     });
   });
 
+  unittest.group("obj-schema-Retry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRetry();
+      var od = new api.Retry.fromJson(o.toJson());
+      checkRetry(od);
+    });
+  });
+
+  unittest.group("obj-schema-SourceRepository", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSourceRepository();
+      var od = new api.SourceRepository.fromJson(o.toJson());
+      checkSourceRepository(od);
+    });
+  });
+
   unittest.group("obj-schema-Status", () {
     unittest.test("to-json--from-json", () {
       var o = buildStatus();
@@ -444,6 +917,7 @@
       api.OperationsResourceApi res =
           new api.CloudfunctionsApi(mock).operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -475,6 +949,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -482,7 +957,9 @@
         var resp = convert.JSON.encode(buildOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Operation response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
     });
@@ -491,10 +968,11 @@
       var mock = new HttpServerMock();
       api.OperationsResourceApi res =
           new api.CloudfunctionsApi(mock).operations;
+      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_name = "foo";
       var arg_pageSize = 42;
-      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -525,12 +1003,13 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(queryMap["name"].first, unittest.equals(arg_name));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -540,10 +1019,11 @@
       }), true);
       res
           .list(
+              filter: arg_filter,
               pageToken: arg_pageToken,
               name: arg_name,
               pageSize: arg_pageSize,
-              filter: arg_filter)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
@@ -556,9 +1036,10 @@
       api.ProjectsLocationsResourceApi res =
           new api.CloudfunctionsApi(mock).projects.locations;
       var arg_name = "foo";
-      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -590,11 +1071,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -604,12 +1086,462 @@
       }), true);
       res
           .list(arg_name,
-              filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              filter: arg_filter,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLocationsResponse response) {
         checkListLocationsResponse(response);
       })));
     });
   });
+
+  unittest.group("resource-ProjectsLocationsFunctionsResourceApi", () {
+    unittest.test("method--call", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsFunctionsResourceApi res =
+          new api.CloudfunctionsApi(mock).projects.locations.functions;
+      var arg_request = buildCallFunctionRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CallFunctionRequest.fromJson(json);
+        checkCallFunctionRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCallFunctionResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .call(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CallFunctionResponse response) {
+        checkCallFunctionResponse(response);
+      })));
+    });
+
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsFunctionsResourceApi res =
+          new api.CloudfunctionsApi(mock).projects.locations.functions;
+      var arg_request = buildCloudFunction();
+      var arg_location = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CloudFunction.fromJson(json);
+        checkCloudFunction(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOperation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_location, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
+        checkOperation(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsFunctionsResourceApi res =
+          new api.CloudfunctionsApi(mock).projects.locations.functions;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOperation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
+        checkOperation(response);
+      })));
+    });
+
+    unittest.test("method--generateDownloadUrl", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsFunctionsResourceApi res =
+          new api.CloudfunctionsApi(mock).projects.locations.functions;
+      var arg_request = buildGenerateDownloadUrlRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.GenerateDownloadUrlRequest.fromJson(json);
+        checkGenerateDownloadUrlRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGenerateDownloadUrlResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.generateDownloadUrl(arg_request, arg_name, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.GenerateDownloadUrlResponse response) {
+        checkGenerateDownloadUrlResponse(response);
+      })));
+    });
+
+    unittest.test("method--generateUploadUrl", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsFunctionsResourceApi res =
+          new api.CloudfunctionsApi(mock).projects.locations.functions;
+      var arg_request = buildGenerateUploadUrlRequest();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.GenerateUploadUrlRequest.fromJson(json);
+        checkGenerateUploadUrlRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGenerateUploadUrlResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.generateUploadUrl(arg_request, arg_parent, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.GenerateUploadUrlResponse response) {
+        checkGenerateUploadUrlResponse(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsFunctionsResourceApi res =
+          new api.CloudfunctionsApi(mock).projects.locations.functions;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCloudFunction());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CloudFunction response) {
+        checkCloudFunction(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsFunctionsResourceApi res =
+          new api.CloudfunctionsApi(mock).projects.locations.functions;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListFunctionsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListFunctionsResponse response) {
+        checkListFunctionsResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsFunctionsResourceApi res =
+          new api.CloudfunctionsApi(mock).projects.locations.functions;
+      var arg_request = buildCloudFunction();
+      var arg_name = "foo";
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CloudFunction.fromJson(json);
+        checkCloudFunction(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOperation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
+        checkOperation(response);
+      })));
+    });
+  });
 }
diff --git a/generated/googleapis/test/cloudiot/v1_test.dart b/generated/googleapis/test/cloudiot/v1_test.dart
new file mode 100644
index 0000000..8f6978b
--- /dev/null
+++ b/generated/googleapis/test/cloudiot/v1_test.dart
@@ -0,0 +1,2138 @@
+library googleapis.cloudiot.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/cloudiot/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+buildUnnamed259() {
+  var o = new core.List<api.AuditLogConfig>();
+  o.add(buildAuditLogConfig());
+  o.add(buildAuditLogConfig());
+  return o;
+}
+
+checkUnnamed259(core.List<api.AuditLogConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAuditLogConfig(o[0]);
+  checkAuditLogConfig(o[1]);
+}
+
+buildUnnamed260() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed260(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAuditConfig = 0;
+buildAuditConfig() {
+  var o = new api.AuditConfig();
+  buildCounterAuditConfig++;
+  if (buildCounterAuditConfig < 3) {
+    o.auditLogConfigs = buildUnnamed259();
+    o.exemptedMembers = buildUnnamed260();
+    o.service = "foo";
+  }
+  buildCounterAuditConfig--;
+  return o;
+}
+
+checkAuditConfig(api.AuditConfig o) {
+  buildCounterAuditConfig++;
+  if (buildCounterAuditConfig < 3) {
+    checkUnnamed259(o.auditLogConfigs);
+    checkUnnamed260(o.exemptedMembers);
+    unittest.expect(o.service, unittest.equals('foo'));
+  }
+  buildCounterAuditConfig--;
+}
+
+buildUnnamed261() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed261(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAuditLogConfig = 0;
+buildAuditLogConfig() {
+  var o = new api.AuditLogConfig();
+  buildCounterAuditLogConfig++;
+  if (buildCounterAuditLogConfig < 3) {
+    o.exemptedMembers = buildUnnamed261();
+    o.logType = "foo";
+  }
+  buildCounterAuditLogConfig--;
+  return o;
+}
+
+checkAuditLogConfig(api.AuditLogConfig o) {
+  buildCounterAuditLogConfig++;
+  if (buildCounterAuditLogConfig < 3) {
+    checkUnnamed261(o.exemptedMembers);
+    unittest.expect(o.logType, unittest.equals('foo'));
+  }
+  buildCounterAuditLogConfig--;
+}
+
+buildUnnamed262() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed262(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBinding = 0;
+buildBinding() {
+  var o = new api.Binding();
+  buildCounterBinding++;
+  if (buildCounterBinding < 3) {
+    o.condition = buildExpr();
+    o.members = buildUnnamed262();
+    o.role = "foo";
+  }
+  buildCounterBinding--;
+  return o;
+}
+
+checkBinding(api.Binding o) {
+  buildCounterBinding++;
+  if (buildCounterBinding < 3) {
+    checkExpr(o.condition);
+    checkUnnamed262(o.members);
+    unittest.expect(o.role, unittest.equals('foo'));
+  }
+  buildCounterBinding--;
+}
+
+buildUnnamed263() {
+  var o = new core.List<api.DeviceCredential>();
+  o.add(buildDeviceCredential());
+  o.add(buildDeviceCredential());
+  return o;
+}
+
+checkUnnamed263(core.List<api.DeviceCredential> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDeviceCredential(o[0]);
+  checkDeviceCredential(o[1]);
+}
+
+buildUnnamed264() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed264(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterDevice = 0;
+buildDevice() {
+  var o = new api.Device();
+  buildCounterDevice++;
+  if (buildCounterDevice < 3) {
+    o.blocked = true;
+    o.config = buildDeviceConfig();
+    o.credentials = buildUnnamed263();
+    o.id = "foo";
+    o.lastConfigAckTime = "foo";
+    o.lastConfigSendTime = "foo";
+    o.lastErrorStatus = buildStatus();
+    o.lastErrorTime = "foo";
+    o.lastEventTime = "foo";
+    o.lastHeartbeatTime = "foo";
+    o.lastStateTime = "foo";
+    o.metadata = buildUnnamed264();
+    o.name = "foo";
+    o.numId = "foo";
+    o.state = buildDeviceState();
+  }
+  buildCounterDevice--;
+  return o;
+}
+
+checkDevice(api.Device o) {
+  buildCounterDevice++;
+  if (buildCounterDevice < 3) {
+    unittest.expect(o.blocked, unittest.isTrue);
+    checkDeviceConfig(o.config);
+    checkUnnamed263(o.credentials);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.lastConfigAckTime, unittest.equals('foo'));
+    unittest.expect(o.lastConfigSendTime, unittest.equals('foo'));
+    checkStatus(o.lastErrorStatus);
+    unittest.expect(o.lastErrorTime, unittest.equals('foo'));
+    unittest.expect(o.lastEventTime, unittest.equals('foo'));
+    unittest.expect(o.lastHeartbeatTime, unittest.equals('foo'));
+    unittest.expect(o.lastStateTime, unittest.equals('foo'));
+    checkUnnamed264(o.metadata);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.numId, unittest.equals('foo'));
+    checkDeviceState(o.state);
+  }
+  buildCounterDevice--;
+}
+
+core.int buildCounterDeviceConfig = 0;
+buildDeviceConfig() {
+  var o = new api.DeviceConfig();
+  buildCounterDeviceConfig++;
+  if (buildCounterDeviceConfig < 3) {
+    o.binaryData = "foo";
+    o.cloudUpdateTime = "foo";
+    o.deviceAckTime = "foo";
+    o.version = "foo";
+  }
+  buildCounterDeviceConfig--;
+  return o;
+}
+
+checkDeviceConfig(api.DeviceConfig o) {
+  buildCounterDeviceConfig++;
+  if (buildCounterDeviceConfig < 3) {
+    unittest.expect(o.binaryData, unittest.equals('foo'));
+    unittest.expect(o.cloudUpdateTime, unittest.equals('foo'));
+    unittest.expect(o.deviceAckTime, unittest.equals('foo'));
+    unittest.expect(o.version, unittest.equals('foo'));
+  }
+  buildCounterDeviceConfig--;
+}
+
+core.int buildCounterDeviceCredential = 0;
+buildDeviceCredential() {
+  var o = new api.DeviceCredential();
+  buildCounterDeviceCredential++;
+  if (buildCounterDeviceCredential < 3) {
+    o.expirationTime = "foo";
+    o.publicKey = buildPublicKeyCredential();
+  }
+  buildCounterDeviceCredential--;
+  return o;
+}
+
+checkDeviceCredential(api.DeviceCredential o) {
+  buildCounterDeviceCredential++;
+  if (buildCounterDeviceCredential < 3) {
+    unittest.expect(o.expirationTime, unittest.equals('foo'));
+    checkPublicKeyCredential(o.publicKey);
+  }
+  buildCounterDeviceCredential--;
+}
+
+buildUnnamed265() {
+  var o = new core.List<api.RegistryCredential>();
+  o.add(buildRegistryCredential());
+  o.add(buildRegistryCredential());
+  return o;
+}
+
+checkUnnamed265(core.List<api.RegistryCredential> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRegistryCredential(o[0]);
+  checkRegistryCredential(o[1]);
+}
+
+buildUnnamed266() {
+  var o = new core.List<api.EventNotificationConfig>();
+  o.add(buildEventNotificationConfig());
+  o.add(buildEventNotificationConfig());
+  return o;
+}
+
+checkUnnamed266(core.List<api.EventNotificationConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEventNotificationConfig(o[0]);
+  checkEventNotificationConfig(o[1]);
+}
+
+core.int buildCounterDeviceRegistry = 0;
+buildDeviceRegistry() {
+  var o = new api.DeviceRegistry();
+  buildCounterDeviceRegistry++;
+  if (buildCounterDeviceRegistry < 3) {
+    o.credentials = buildUnnamed265();
+    o.eventNotificationConfigs = buildUnnamed266();
+    o.httpConfig = buildHttpConfig();
+    o.id = "foo";
+    o.mqttConfig = buildMqttConfig();
+    o.name = "foo";
+    o.stateNotificationConfig = buildStateNotificationConfig();
+  }
+  buildCounterDeviceRegistry--;
+  return o;
+}
+
+checkDeviceRegistry(api.DeviceRegistry o) {
+  buildCounterDeviceRegistry++;
+  if (buildCounterDeviceRegistry < 3) {
+    checkUnnamed265(o.credentials);
+    checkUnnamed266(o.eventNotificationConfigs);
+    checkHttpConfig(o.httpConfig);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkMqttConfig(o.mqttConfig);
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkStateNotificationConfig(o.stateNotificationConfig);
+  }
+  buildCounterDeviceRegistry--;
+}
+
+core.int buildCounterDeviceState = 0;
+buildDeviceState() {
+  var o = new api.DeviceState();
+  buildCounterDeviceState++;
+  if (buildCounterDeviceState < 3) {
+    o.binaryData = "foo";
+    o.updateTime = "foo";
+  }
+  buildCounterDeviceState--;
+  return o;
+}
+
+checkDeviceState(api.DeviceState o) {
+  buildCounterDeviceState++;
+  if (buildCounterDeviceState < 3) {
+    unittest.expect(o.binaryData, unittest.equals('foo'));
+    unittest.expect(o.updateTime, unittest.equals('foo'));
+  }
+  buildCounterDeviceState--;
+}
+
+core.int buildCounterEmpty = 0;
+buildEmpty() {
+  var o = new api.Empty();
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+  return o;
+}
+
+checkEmpty(api.Empty o) {
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+}
+
+core.int buildCounterEventNotificationConfig = 0;
+buildEventNotificationConfig() {
+  var o = new api.EventNotificationConfig();
+  buildCounterEventNotificationConfig++;
+  if (buildCounterEventNotificationConfig < 3) {
+    o.pubsubTopicName = "foo";
+  }
+  buildCounterEventNotificationConfig--;
+  return o;
+}
+
+checkEventNotificationConfig(api.EventNotificationConfig o) {
+  buildCounterEventNotificationConfig++;
+  if (buildCounterEventNotificationConfig < 3) {
+    unittest.expect(o.pubsubTopicName, unittest.equals('foo'));
+  }
+  buildCounterEventNotificationConfig--;
+}
+
+core.int buildCounterExpr = 0;
+buildExpr() {
+  var o = new api.Expr();
+  buildCounterExpr++;
+  if (buildCounterExpr < 3) {
+    o.description = "foo";
+    o.expression = "foo";
+    o.location = "foo";
+    o.title = "foo";
+  }
+  buildCounterExpr--;
+  return o;
+}
+
+checkExpr(api.Expr o) {
+  buildCounterExpr++;
+  if (buildCounterExpr < 3) {
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.expression, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterExpr--;
+}
+
+core.int buildCounterGetIamPolicyRequest = 0;
+buildGetIamPolicyRequest() {
+  var o = new api.GetIamPolicyRequest();
+  buildCounterGetIamPolicyRequest++;
+  if (buildCounterGetIamPolicyRequest < 3) {}
+  buildCounterGetIamPolicyRequest--;
+  return o;
+}
+
+checkGetIamPolicyRequest(api.GetIamPolicyRequest o) {
+  buildCounterGetIamPolicyRequest++;
+  if (buildCounterGetIamPolicyRequest < 3) {}
+  buildCounterGetIamPolicyRequest--;
+}
+
+core.int buildCounterHttpConfig = 0;
+buildHttpConfig() {
+  var o = new api.HttpConfig();
+  buildCounterHttpConfig++;
+  if (buildCounterHttpConfig < 3) {
+    o.httpEnabledState = "foo";
+  }
+  buildCounterHttpConfig--;
+  return o;
+}
+
+checkHttpConfig(api.HttpConfig o) {
+  buildCounterHttpConfig++;
+  if (buildCounterHttpConfig < 3) {
+    unittest.expect(o.httpEnabledState, unittest.equals('foo'));
+  }
+  buildCounterHttpConfig--;
+}
+
+buildUnnamed267() {
+  var o = new core.List<api.DeviceConfig>();
+  o.add(buildDeviceConfig());
+  o.add(buildDeviceConfig());
+  return o;
+}
+
+checkUnnamed267(core.List<api.DeviceConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDeviceConfig(o[0]);
+  checkDeviceConfig(o[1]);
+}
+
+core.int buildCounterListDeviceConfigVersionsResponse = 0;
+buildListDeviceConfigVersionsResponse() {
+  var o = new api.ListDeviceConfigVersionsResponse();
+  buildCounterListDeviceConfigVersionsResponse++;
+  if (buildCounterListDeviceConfigVersionsResponse < 3) {
+    o.deviceConfigs = buildUnnamed267();
+  }
+  buildCounterListDeviceConfigVersionsResponse--;
+  return o;
+}
+
+checkListDeviceConfigVersionsResponse(api.ListDeviceConfigVersionsResponse o) {
+  buildCounterListDeviceConfigVersionsResponse++;
+  if (buildCounterListDeviceConfigVersionsResponse < 3) {
+    checkUnnamed267(o.deviceConfigs);
+  }
+  buildCounterListDeviceConfigVersionsResponse--;
+}
+
+buildUnnamed268() {
+  var o = new core.List<api.DeviceRegistry>();
+  o.add(buildDeviceRegistry());
+  o.add(buildDeviceRegistry());
+  return o;
+}
+
+checkUnnamed268(core.List<api.DeviceRegistry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDeviceRegistry(o[0]);
+  checkDeviceRegistry(o[1]);
+}
+
+core.int buildCounterListDeviceRegistriesResponse = 0;
+buildListDeviceRegistriesResponse() {
+  var o = new api.ListDeviceRegistriesResponse();
+  buildCounterListDeviceRegistriesResponse++;
+  if (buildCounterListDeviceRegistriesResponse < 3) {
+    o.deviceRegistries = buildUnnamed268();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListDeviceRegistriesResponse--;
+  return o;
+}
+
+checkListDeviceRegistriesResponse(api.ListDeviceRegistriesResponse o) {
+  buildCounterListDeviceRegistriesResponse++;
+  if (buildCounterListDeviceRegistriesResponse < 3) {
+    checkUnnamed268(o.deviceRegistries);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListDeviceRegistriesResponse--;
+}
+
+buildUnnamed269() {
+  var o = new core.List<api.DeviceState>();
+  o.add(buildDeviceState());
+  o.add(buildDeviceState());
+  return o;
+}
+
+checkUnnamed269(core.List<api.DeviceState> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDeviceState(o[0]);
+  checkDeviceState(o[1]);
+}
+
+core.int buildCounterListDeviceStatesResponse = 0;
+buildListDeviceStatesResponse() {
+  var o = new api.ListDeviceStatesResponse();
+  buildCounterListDeviceStatesResponse++;
+  if (buildCounterListDeviceStatesResponse < 3) {
+    o.deviceStates = buildUnnamed269();
+  }
+  buildCounterListDeviceStatesResponse--;
+  return o;
+}
+
+checkListDeviceStatesResponse(api.ListDeviceStatesResponse o) {
+  buildCounterListDeviceStatesResponse++;
+  if (buildCounterListDeviceStatesResponse < 3) {
+    checkUnnamed269(o.deviceStates);
+  }
+  buildCounterListDeviceStatesResponse--;
+}
+
+buildUnnamed270() {
+  var o = new core.List<api.Device>();
+  o.add(buildDevice());
+  o.add(buildDevice());
+  return o;
+}
+
+checkUnnamed270(core.List<api.Device> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDevice(o[0]);
+  checkDevice(o[1]);
+}
+
+core.int buildCounterListDevicesResponse = 0;
+buildListDevicesResponse() {
+  var o = new api.ListDevicesResponse();
+  buildCounterListDevicesResponse++;
+  if (buildCounterListDevicesResponse < 3) {
+    o.devices = buildUnnamed270();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListDevicesResponse--;
+  return o;
+}
+
+checkListDevicesResponse(api.ListDevicesResponse o) {
+  buildCounterListDevicesResponse++;
+  if (buildCounterListDevicesResponse < 3) {
+    checkUnnamed270(o.devices);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListDevicesResponse--;
+}
+
+core.int buildCounterModifyCloudToDeviceConfigRequest = 0;
+buildModifyCloudToDeviceConfigRequest() {
+  var o = new api.ModifyCloudToDeviceConfigRequest();
+  buildCounterModifyCloudToDeviceConfigRequest++;
+  if (buildCounterModifyCloudToDeviceConfigRequest < 3) {
+    o.binaryData = "foo";
+    o.versionToUpdate = "foo";
+  }
+  buildCounterModifyCloudToDeviceConfigRequest--;
+  return o;
+}
+
+checkModifyCloudToDeviceConfigRequest(api.ModifyCloudToDeviceConfigRequest o) {
+  buildCounterModifyCloudToDeviceConfigRequest++;
+  if (buildCounterModifyCloudToDeviceConfigRequest < 3) {
+    unittest.expect(o.binaryData, unittest.equals('foo'));
+    unittest.expect(o.versionToUpdate, unittest.equals('foo'));
+  }
+  buildCounterModifyCloudToDeviceConfigRequest--;
+}
+
+core.int buildCounterMqttConfig = 0;
+buildMqttConfig() {
+  var o = new api.MqttConfig();
+  buildCounterMqttConfig++;
+  if (buildCounterMqttConfig < 3) {
+    o.mqttEnabledState = "foo";
+  }
+  buildCounterMqttConfig--;
+  return o;
+}
+
+checkMqttConfig(api.MqttConfig o) {
+  buildCounterMqttConfig++;
+  if (buildCounterMqttConfig < 3) {
+    unittest.expect(o.mqttEnabledState, unittest.equals('foo'));
+  }
+  buildCounterMqttConfig--;
+}
+
+buildUnnamed271() {
+  var o = new core.List<api.AuditConfig>();
+  o.add(buildAuditConfig());
+  o.add(buildAuditConfig());
+  return o;
+}
+
+checkUnnamed271(core.List<api.AuditConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAuditConfig(o[0]);
+  checkAuditConfig(o[1]);
+}
+
+buildUnnamed272() {
+  var o = new core.List<api.Binding>();
+  o.add(buildBinding());
+  o.add(buildBinding());
+  return o;
+}
+
+checkUnnamed272(core.List<api.Binding> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBinding(o[0]);
+  checkBinding(o[1]);
+}
+
+core.int buildCounterPolicy = 0;
+buildPolicy() {
+  var o = new api.Policy();
+  buildCounterPolicy++;
+  if (buildCounterPolicy < 3) {
+    o.auditConfigs = buildUnnamed271();
+    o.bindings = buildUnnamed272();
+    o.etag = "foo";
+    o.iamOwned = true;
+    o.version = 42;
+  }
+  buildCounterPolicy--;
+  return o;
+}
+
+checkPolicy(api.Policy o) {
+  buildCounterPolicy++;
+  if (buildCounterPolicy < 3) {
+    checkUnnamed271(o.auditConfigs);
+    checkUnnamed272(o.bindings);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.iamOwned, unittest.isTrue);
+    unittest.expect(o.version, unittest.equals(42));
+  }
+  buildCounterPolicy--;
+}
+
+core.int buildCounterPublicKeyCertificate = 0;
+buildPublicKeyCertificate() {
+  var o = new api.PublicKeyCertificate();
+  buildCounterPublicKeyCertificate++;
+  if (buildCounterPublicKeyCertificate < 3) {
+    o.certificate = "foo";
+    o.format = "foo";
+    o.x509Details = buildX509CertificateDetails();
+  }
+  buildCounterPublicKeyCertificate--;
+  return o;
+}
+
+checkPublicKeyCertificate(api.PublicKeyCertificate o) {
+  buildCounterPublicKeyCertificate++;
+  if (buildCounterPublicKeyCertificate < 3) {
+    unittest.expect(o.certificate, unittest.equals('foo'));
+    unittest.expect(o.format, unittest.equals('foo'));
+    checkX509CertificateDetails(o.x509Details);
+  }
+  buildCounterPublicKeyCertificate--;
+}
+
+core.int buildCounterPublicKeyCredential = 0;
+buildPublicKeyCredential() {
+  var o = new api.PublicKeyCredential();
+  buildCounterPublicKeyCredential++;
+  if (buildCounterPublicKeyCredential < 3) {
+    o.format = "foo";
+    o.key = "foo";
+  }
+  buildCounterPublicKeyCredential--;
+  return o;
+}
+
+checkPublicKeyCredential(api.PublicKeyCredential o) {
+  buildCounterPublicKeyCredential++;
+  if (buildCounterPublicKeyCredential < 3) {
+    unittest.expect(o.format, unittest.equals('foo'));
+    unittest.expect(o.key, unittest.equals('foo'));
+  }
+  buildCounterPublicKeyCredential--;
+}
+
+core.int buildCounterRegistryCredential = 0;
+buildRegistryCredential() {
+  var o = new api.RegistryCredential();
+  buildCounterRegistryCredential++;
+  if (buildCounterRegistryCredential < 3) {
+    o.publicKeyCertificate = buildPublicKeyCertificate();
+  }
+  buildCounterRegistryCredential--;
+  return o;
+}
+
+checkRegistryCredential(api.RegistryCredential o) {
+  buildCounterRegistryCredential++;
+  if (buildCounterRegistryCredential < 3) {
+    checkPublicKeyCertificate(o.publicKeyCertificate);
+  }
+  buildCounterRegistryCredential--;
+}
+
+core.int buildCounterSetIamPolicyRequest = 0;
+buildSetIamPolicyRequest() {
+  var o = new api.SetIamPolicyRequest();
+  buildCounterSetIamPolicyRequest++;
+  if (buildCounterSetIamPolicyRequest < 3) {
+    o.policy = buildPolicy();
+    o.updateMask = "foo";
+  }
+  buildCounterSetIamPolicyRequest--;
+  return o;
+}
+
+checkSetIamPolicyRequest(api.SetIamPolicyRequest o) {
+  buildCounterSetIamPolicyRequest++;
+  if (buildCounterSetIamPolicyRequest < 3) {
+    checkPolicy(o.policy);
+    unittest.expect(o.updateMask, unittest.equals('foo'));
+  }
+  buildCounterSetIamPolicyRequest--;
+}
+
+core.int buildCounterStateNotificationConfig = 0;
+buildStateNotificationConfig() {
+  var o = new api.StateNotificationConfig();
+  buildCounterStateNotificationConfig++;
+  if (buildCounterStateNotificationConfig < 3) {
+    o.pubsubTopicName = "foo";
+  }
+  buildCounterStateNotificationConfig--;
+  return o;
+}
+
+checkStateNotificationConfig(api.StateNotificationConfig o) {
+  buildCounterStateNotificationConfig++;
+  if (buildCounterStateNotificationConfig < 3) {
+    unittest.expect(o.pubsubTopicName, unittest.equals('foo'));
+  }
+  buildCounterStateNotificationConfig--;
+}
+
+buildUnnamed273() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed273(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o["x"]) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(casted1["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted1["bool"], unittest.equals(true));
+  unittest.expect(casted1["string"], unittest.equals('foo'));
+  var casted2 = (o["y"]) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(casted2["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted2["bool"], unittest.equals(true));
+  unittest.expect(casted2["string"], unittest.equals('foo'));
+}
+
+buildUnnamed274() {
+  var o = new core.List<core.Map<core.String, core.Object>>();
+  o.add(buildUnnamed273());
+  o.add(buildUnnamed273());
+  return o;
+}
+
+checkUnnamed274(core.List<core.Map<core.String, core.Object>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed273(o[0]);
+  checkUnnamed273(o[1]);
+}
+
+core.int buildCounterStatus = 0;
+buildStatus() {
+  var o = new api.Status();
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    o.code = 42;
+    o.details = buildUnnamed274();
+    o.message = "foo";
+  }
+  buildCounterStatus--;
+  return o;
+}
+
+checkStatus(api.Status o) {
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    unittest.expect(o.code, unittest.equals(42));
+    checkUnnamed274(o.details);
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterStatus--;
+}
+
+buildUnnamed275() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed275(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterTestIamPermissionsRequest = 0;
+buildTestIamPermissionsRequest() {
+  var o = new api.TestIamPermissionsRequest();
+  buildCounterTestIamPermissionsRequest++;
+  if (buildCounterTestIamPermissionsRequest < 3) {
+    o.permissions = buildUnnamed275();
+  }
+  buildCounterTestIamPermissionsRequest--;
+  return o;
+}
+
+checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
+  buildCounterTestIamPermissionsRequest++;
+  if (buildCounterTestIamPermissionsRequest < 3) {
+    checkUnnamed275(o.permissions);
+  }
+  buildCounterTestIamPermissionsRequest--;
+}
+
+buildUnnamed276() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed276(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterTestIamPermissionsResponse = 0;
+buildTestIamPermissionsResponse() {
+  var o = new api.TestIamPermissionsResponse();
+  buildCounterTestIamPermissionsResponse++;
+  if (buildCounterTestIamPermissionsResponse < 3) {
+    o.permissions = buildUnnamed276();
+  }
+  buildCounterTestIamPermissionsResponse--;
+  return o;
+}
+
+checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
+  buildCounterTestIamPermissionsResponse++;
+  if (buildCounterTestIamPermissionsResponse < 3) {
+    checkUnnamed276(o.permissions);
+  }
+  buildCounterTestIamPermissionsResponse--;
+}
+
+core.int buildCounterX509CertificateDetails = 0;
+buildX509CertificateDetails() {
+  var o = new api.X509CertificateDetails();
+  buildCounterX509CertificateDetails++;
+  if (buildCounterX509CertificateDetails < 3) {
+    o.expiryTime = "foo";
+    o.issuer = "foo";
+    o.publicKeyType = "foo";
+    o.signatureAlgorithm = "foo";
+    o.startTime = "foo";
+    o.subject = "foo";
+  }
+  buildCounterX509CertificateDetails--;
+  return o;
+}
+
+checkX509CertificateDetails(api.X509CertificateDetails o) {
+  buildCounterX509CertificateDetails++;
+  if (buildCounterX509CertificateDetails < 3) {
+    unittest.expect(o.expiryTime, unittest.equals('foo'));
+    unittest.expect(o.issuer, unittest.equals('foo'));
+    unittest.expect(o.publicKeyType, unittest.equals('foo'));
+    unittest.expect(o.signatureAlgorithm, unittest.equals('foo'));
+    unittest.expect(o.startTime, unittest.equals('foo'));
+    unittest.expect(o.subject, unittest.equals('foo'));
+  }
+  buildCounterX509CertificateDetails--;
+}
+
+buildUnnamed277() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed277(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed278() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed278(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-AuditConfig", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAuditConfig();
+      var od = new api.AuditConfig.fromJson(o.toJson());
+      checkAuditConfig(od);
+    });
+  });
+
+  unittest.group("obj-schema-AuditLogConfig", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAuditLogConfig();
+      var od = new api.AuditLogConfig.fromJson(o.toJson());
+      checkAuditLogConfig(od);
+    });
+  });
+
+  unittest.group("obj-schema-Binding", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBinding();
+      var od = new api.Binding.fromJson(o.toJson());
+      checkBinding(od);
+    });
+  });
+
+  unittest.group("obj-schema-Device", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDevice();
+      var od = new api.Device.fromJson(o.toJson());
+      checkDevice(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeviceConfig", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeviceConfig();
+      var od = new api.DeviceConfig.fromJson(o.toJson());
+      checkDeviceConfig(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeviceCredential", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeviceCredential();
+      var od = new api.DeviceCredential.fromJson(o.toJson());
+      checkDeviceCredential(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeviceRegistry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeviceRegistry();
+      var od = new api.DeviceRegistry.fromJson(o.toJson());
+      checkDeviceRegistry(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeviceState", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeviceState();
+      var od = new api.DeviceState.fromJson(o.toJson());
+      checkDeviceState(od);
+    });
+  });
+
+  unittest.group("obj-schema-Empty", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEmpty();
+      var od = new api.Empty.fromJson(o.toJson());
+      checkEmpty(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventNotificationConfig", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventNotificationConfig();
+      var od = new api.EventNotificationConfig.fromJson(o.toJson());
+      checkEventNotificationConfig(od);
+    });
+  });
+
+  unittest.group("obj-schema-Expr", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildExpr();
+      var od = new api.Expr.fromJson(o.toJson());
+      checkExpr(od);
+    });
+  });
+
+  unittest.group("obj-schema-GetIamPolicyRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGetIamPolicyRequest();
+      var od = new api.GetIamPolicyRequest.fromJson(o.toJson());
+      checkGetIamPolicyRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-HttpConfig", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildHttpConfig();
+      var od = new api.HttpConfig.fromJson(o.toJson());
+      checkHttpConfig(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListDeviceConfigVersionsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListDeviceConfigVersionsResponse();
+      var od = new api.ListDeviceConfigVersionsResponse.fromJson(o.toJson());
+      checkListDeviceConfigVersionsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListDeviceRegistriesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListDeviceRegistriesResponse();
+      var od = new api.ListDeviceRegistriesResponse.fromJson(o.toJson());
+      checkListDeviceRegistriesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListDeviceStatesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListDeviceStatesResponse();
+      var od = new api.ListDeviceStatesResponse.fromJson(o.toJson());
+      checkListDeviceStatesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListDevicesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListDevicesResponse();
+      var od = new api.ListDevicesResponse.fromJson(o.toJson());
+      checkListDevicesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ModifyCloudToDeviceConfigRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildModifyCloudToDeviceConfigRequest();
+      var od = new api.ModifyCloudToDeviceConfigRequest.fromJson(o.toJson());
+      checkModifyCloudToDeviceConfigRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-MqttConfig", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMqttConfig();
+      var od = new api.MqttConfig.fromJson(o.toJson());
+      checkMqttConfig(od);
+    });
+  });
+
+  unittest.group("obj-schema-Policy", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPolicy();
+      var od = new api.Policy.fromJson(o.toJson());
+      checkPolicy(od);
+    });
+  });
+
+  unittest.group("obj-schema-PublicKeyCertificate", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPublicKeyCertificate();
+      var od = new api.PublicKeyCertificate.fromJson(o.toJson());
+      checkPublicKeyCertificate(od);
+    });
+  });
+
+  unittest.group("obj-schema-PublicKeyCredential", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPublicKeyCredential();
+      var od = new api.PublicKeyCredential.fromJson(o.toJson());
+      checkPublicKeyCredential(od);
+    });
+  });
+
+  unittest.group("obj-schema-RegistryCredential", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRegistryCredential();
+      var od = new api.RegistryCredential.fromJson(o.toJson());
+      checkRegistryCredential(od);
+    });
+  });
+
+  unittest.group("obj-schema-SetIamPolicyRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSetIamPolicyRequest();
+      var od = new api.SetIamPolicyRequest.fromJson(o.toJson());
+      checkSetIamPolicyRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-StateNotificationConfig", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStateNotificationConfig();
+      var od = new api.StateNotificationConfig.fromJson(o.toJson());
+      checkStateNotificationConfig(od);
+    });
+  });
+
+  unittest.group("obj-schema-Status", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStatus();
+      var od = new api.Status.fromJson(o.toJson());
+      checkStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestIamPermissionsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestIamPermissionsRequest();
+      var od = new api.TestIamPermissionsRequest.fromJson(o.toJson());
+      checkTestIamPermissionsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestIamPermissionsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestIamPermissionsResponse();
+      var od = new api.TestIamPermissionsResponse.fromJson(o.toJson());
+      checkTestIamPermissionsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-X509CertificateDetails", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildX509CertificateDetails();
+      var od = new api.X509CertificateDetails.fromJson(o.toJson());
+      checkX509CertificateDetails(od);
+    });
+  });
+
+  unittest.group("resource-ProjectsLocationsRegistriesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesResourceApi res =
+          new api.CloudiotApi(mock).projects.locations.registries;
+      var arg_request = buildDeviceRegistry();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.DeviceRegistry.fromJson(json);
+        checkDeviceRegistry(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDeviceRegistry());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DeviceRegistry response) {
+        checkDeviceRegistry(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesResourceApi res =
+          new api.CloudiotApi(mock).projects.locations.registries;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesResourceApi res =
+          new api.CloudiotApi(mock).projects.locations.registries;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDeviceRegistry());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DeviceRegistry response) {
+        checkDeviceRegistry(response);
+      })));
+    });
+
+    unittest.test("method--getIamPolicy", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesResourceApi res =
+          new api.CloudiotApi(mock).projects.locations.registries;
+      var arg_request = buildGetIamPolicyRequest();
+      var arg_resource = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.GetIamPolicyRequest.fromJson(json);
+        checkGetIamPolicyRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPolicy());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Policy response) {
+        checkPolicy(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesResourceApi res =
+          new api.CloudiotApi(mock).projects.locations.registries;
+      var arg_parent = "foo";
+      var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListDeviceRegistriesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListDeviceRegistriesResponse response) {
+        checkListDeviceRegistriesResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesResourceApi res =
+          new api.CloudiotApi(mock).projects.locations.registries;
+      var arg_request = buildDeviceRegistry();
+      var arg_name = "foo";
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.DeviceRegistry.fromJson(json);
+        checkDeviceRegistry(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDeviceRegistry());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DeviceRegistry response) {
+        checkDeviceRegistry(response);
+      })));
+    });
+
+    unittest.test("method--setIamPolicy", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesResourceApi res =
+          new api.CloudiotApi(mock).projects.locations.registries;
+      var arg_request = buildSetIamPolicyRequest();
+      var arg_resource = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.SetIamPolicyRequest.fromJson(json);
+        checkSetIamPolicyRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPolicy());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Policy response) {
+        checkPolicy(response);
+      })));
+    });
+
+    unittest.test("method--testIamPermissions", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesResourceApi res =
+          new api.CloudiotApi(mock).projects.locations.registries;
+      var arg_request = buildTestIamPermissionsRequest();
+      var arg_resource = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.TestIamPermissionsRequest.fromJson(json);
+        checkTestIamPermissionsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+        checkTestIamPermissionsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsLocationsRegistriesDevicesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesDevicesResourceApi res =
+          new api.CloudiotApi(mock).projects.locations.registries.devices;
+      var arg_request = buildDevice();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Device.fromJson(json);
+        checkDevice(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDevice());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Device response) {
+        checkDevice(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesDevicesResourceApi res =
+          new api.CloudiotApi(mock).projects.locations.registries.devices;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesDevicesResourceApi res =
+          new api.CloudiotApi(mock).projects.locations.registries.devices;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDevice());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Device response) {
+        checkDevice(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesDevicesResourceApi res =
+          new api.CloudiotApi(mock).projects.locations.registries.devices;
+      var arg_parent = "foo";
+      var arg_deviceNumIds = buildUnnamed277();
+      var arg_pageToken = "foo";
+      var arg_fieldMask = "foo";
+      var arg_pageSize = 42;
+      var arg_deviceIds = buildUnnamed278();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["deviceNumIds"], unittest.equals(arg_deviceNumIds));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["fieldMask"].first, unittest.equals(arg_fieldMask));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["deviceIds"], unittest.equals(arg_deviceIds));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListDevicesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              deviceNumIds: arg_deviceNumIds,
+              pageToken: arg_pageToken,
+              fieldMask: arg_fieldMask,
+              pageSize: arg_pageSize,
+              deviceIds: arg_deviceIds,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListDevicesResponse response) {
+        checkListDevicesResponse(response);
+      })));
+    });
+
+    unittest.test("method--modifyCloudToDeviceConfig", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesDevicesResourceApi res =
+          new api.CloudiotApi(mock).projects.locations.registries.devices;
+      var arg_request = buildModifyCloudToDeviceConfigRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ModifyCloudToDeviceConfigRequest.fromJson(json);
+        checkModifyCloudToDeviceConfigRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDeviceConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .modifyCloudToDeviceConfig(arg_request, arg_name,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DeviceConfig response) {
+        checkDeviceConfig(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesDevicesResourceApi res =
+          new api.CloudiotApi(mock).projects.locations.registries.devices;
+      var arg_request = buildDevice();
+      var arg_name = "foo";
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Device.fromJson(json);
+        checkDevice(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDevice());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Device response) {
+        checkDevice(response);
+      })));
+    });
+  });
+
+  unittest.group(
+      "resource-ProjectsLocationsRegistriesDevicesConfigVersionsResourceApi",
+      () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesDevicesConfigVersionsResourceApi res =
+          new api.CloudiotApi(mock)
+              .projects
+              .locations
+              .registries
+              .devices
+              .configVersions;
+      var arg_name = "foo";
+      var arg_numVersions = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["numVersions"].first),
+            unittest.equals(arg_numVersions));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListDeviceConfigVersionsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_name, numVersions: arg_numVersions, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListDeviceConfigVersionsResponse response) {
+        checkListDeviceConfigVersionsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsLocationsRegistriesDevicesStatesResourceApi",
+      () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsRegistriesDevicesStatesResourceApi res =
+          new api.CloudiotApi(mock)
+              .projects
+              .locations
+              .registries
+              .devices
+              .states;
+      var arg_name = "foo";
+      var arg_numStates = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["numStates"].first),
+            unittest.equals(arg_numStates));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListDeviceStatesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_name, numStates: arg_numStates, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListDeviceStatesResponse response) {
+        checkListDeviceStatesResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/cloudkms/v1_test.dart b/generated/googleapis/test/cloudkms/v1_test.dart
index de56a0c..1e98689 100644
--- a/generated/googleapis/test/cloudkms/v1_test.dart
+++ b/generated/googleapis/test/cloudkms/v1_test.dart
@@ -50,27 +50,27 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed1433() {
+buildUnnamed1420() {
   var o = new core.List<api.AuditLogConfig>();
   o.add(buildAuditLogConfig());
   o.add(buildAuditLogConfig());
   return o;
 }
 
-checkUnnamed1433(core.List<api.AuditLogConfig> o) {
+checkUnnamed1420(core.List<api.AuditLogConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditLogConfig(o[0]);
   checkAuditLogConfig(o[1]);
 }
 
-buildUnnamed1434() {
+buildUnnamed1421() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1434(core.List<core.String> o) {
+checkUnnamed1421(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -81,8 +81,8 @@
   var o = new api.AuditConfig();
   buildCounterAuditConfig++;
   if (buildCounterAuditConfig < 3) {
-    o.auditLogConfigs = buildUnnamed1433();
-    o.exemptedMembers = buildUnnamed1434();
+    o.auditLogConfigs = buildUnnamed1420();
+    o.exemptedMembers = buildUnnamed1421();
     o.service = "foo";
   }
   buildCounterAuditConfig--;
@@ -92,21 +92,21 @@
 checkAuditConfig(api.AuditConfig o) {
   buildCounterAuditConfig++;
   if (buildCounterAuditConfig < 3) {
-    checkUnnamed1433(o.auditLogConfigs);
-    checkUnnamed1434(o.exemptedMembers);
+    checkUnnamed1420(o.auditLogConfigs);
+    checkUnnamed1421(o.exemptedMembers);
     unittest.expect(o.service, unittest.equals('foo'));
   }
   buildCounterAuditConfig--;
 }
 
-buildUnnamed1435() {
+buildUnnamed1422() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1435(core.List<core.String> o) {
+checkUnnamed1422(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -117,7 +117,7 @@
   var o = new api.AuditLogConfig();
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    o.exemptedMembers = buildUnnamed1435();
+    o.exemptedMembers = buildUnnamed1422();
     o.logType = "foo";
   }
   buildCounterAuditLogConfig--;
@@ -127,20 +127,20 @@
 checkAuditLogConfig(api.AuditLogConfig o) {
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    checkUnnamed1435(o.exemptedMembers);
+    checkUnnamed1422(o.exemptedMembers);
     unittest.expect(o.logType, unittest.equals('foo'));
   }
   buildCounterAuditLogConfig--;
 }
 
-buildUnnamed1436() {
+buildUnnamed1423() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1436(core.List<core.String> o) {
+checkUnnamed1423(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -152,7 +152,7 @@
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
     o.condition = buildExpr();
-    o.members = buildUnnamed1436();
+    o.members = buildUnnamed1423();
     o.role = "foo";
   }
   buildCounterBinding--;
@@ -163,20 +163,20 @@
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
     checkExpr(o.condition);
-    checkUnnamed1436(o.members);
+    checkUnnamed1423(o.members);
     unittest.expect(o.role, unittest.equals('foo'));
   }
   buildCounterBinding--;
 }
 
-buildUnnamed1437() {
+buildUnnamed1424() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1437(core.Map<core.String, core.String> o) {
+checkUnnamed1424(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -188,7 +188,7 @@
   buildCounterCryptoKey++;
   if (buildCounterCryptoKey < 3) {
     o.createTime = "foo";
-    o.labels = buildUnnamed1437();
+    o.labels = buildUnnamed1424();
     o.name = "foo";
     o.nextRotationTime = "foo";
     o.primary = buildCryptoKeyVersion();
@@ -203,7 +203,7 @@
   buildCounterCryptoKey++;
   if (buildCounterCryptoKey < 3) {
     unittest.expect(o.createTime, unittest.equals('foo'));
-    checkUnnamed1437(o.labels);
+    checkUnnamed1424(o.labels);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.nextRotationTime, unittest.equals('foo'));
     checkCryptoKeyVersion(o.primary);
@@ -383,14 +383,14 @@
   buildCounterKeyRing--;
 }
 
-buildUnnamed1438() {
+buildUnnamed1425() {
   var o = new core.List<api.CryptoKeyVersion>();
   o.add(buildCryptoKeyVersion());
   o.add(buildCryptoKeyVersion());
   return o;
 }
 
-checkUnnamed1438(core.List<api.CryptoKeyVersion> o) {
+checkUnnamed1425(core.List<api.CryptoKeyVersion> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCryptoKeyVersion(o[0]);
   checkCryptoKeyVersion(o[1]);
@@ -401,7 +401,7 @@
   var o = new api.ListCryptoKeyVersionsResponse();
   buildCounterListCryptoKeyVersionsResponse++;
   if (buildCounterListCryptoKeyVersionsResponse < 3) {
-    o.cryptoKeyVersions = buildUnnamed1438();
+    o.cryptoKeyVersions = buildUnnamed1425();
     o.nextPageToken = "foo";
     o.totalSize = 42;
   }
@@ -412,21 +412,21 @@
 checkListCryptoKeyVersionsResponse(api.ListCryptoKeyVersionsResponse o) {
   buildCounterListCryptoKeyVersionsResponse++;
   if (buildCounterListCryptoKeyVersionsResponse < 3) {
-    checkUnnamed1438(o.cryptoKeyVersions);
+    checkUnnamed1425(o.cryptoKeyVersions);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.totalSize, unittest.equals(42));
   }
   buildCounterListCryptoKeyVersionsResponse--;
 }
 
-buildUnnamed1439() {
+buildUnnamed1426() {
   var o = new core.List<api.CryptoKey>();
   o.add(buildCryptoKey());
   o.add(buildCryptoKey());
   return o;
 }
 
-checkUnnamed1439(core.List<api.CryptoKey> o) {
+checkUnnamed1426(core.List<api.CryptoKey> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCryptoKey(o[0]);
   checkCryptoKey(o[1]);
@@ -437,7 +437,7 @@
   var o = new api.ListCryptoKeysResponse();
   buildCounterListCryptoKeysResponse++;
   if (buildCounterListCryptoKeysResponse < 3) {
-    o.cryptoKeys = buildUnnamed1439();
+    o.cryptoKeys = buildUnnamed1426();
     o.nextPageToken = "foo";
     o.totalSize = 42;
   }
@@ -448,21 +448,21 @@
 checkListCryptoKeysResponse(api.ListCryptoKeysResponse o) {
   buildCounterListCryptoKeysResponse++;
   if (buildCounterListCryptoKeysResponse < 3) {
-    checkUnnamed1439(o.cryptoKeys);
+    checkUnnamed1426(o.cryptoKeys);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.totalSize, unittest.equals(42));
   }
   buildCounterListCryptoKeysResponse--;
 }
 
-buildUnnamed1440() {
+buildUnnamed1427() {
   var o = new core.List<api.KeyRing>();
   o.add(buildKeyRing());
   o.add(buildKeyRing());
   return o;
 }
 
-checkUnnamed1440(core.List<api.KeyRing> o) {
+checkUnnamed1427(core.List<api.KeyRing> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkKeyRing(o[0]);
   checkKeyRing(o[1]);
@@ -473,7 +473,7 @@
   var o = new api.ListKeyRingsResponse();
   buildCounterListKeyRingsResponse++;
   if (buildCounterListKeyRingsResponse < 3) {
-    o.keyRings = buildUnnamed1440();
+    o.keyRings = buildUnnamed1427();
     o.nextPageToken = "foo";
     o.totalSize = 42;
   }
@@ -484,21 +484,21 @@
 checkListKeyRingsResponse(api.ListKeyRingsResponse o) {
   buildCounterListKeyRingsResponse++;
   if (buildCounterListKeyRingsResponse < 3) {
-    checkUnnamed1440(o.keyRings);
+    checkUnnamed1427(o.keyRings);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.totalSize, unittest.equals(42));
   }
   buildCounterListKeyRingsResponse--;
 }
 
-buildUnnamed1441() {
+buildUnnamed1428() {
   var o = new core.List<api.Location>();
   o.add(buildLocation());
   o.add(buildLocation());
   return o;
 }
 
-checkUnnamed1441(core.List<api.Location> o) {
+checkUnnamed1428(core.List<api.Location> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocation(o[0]);
   checkLocation(o[1]);
@@ -509,7 +509,7 @@
   var o = new api.ListLocationsResponse();
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    o.locations = buildUnnamed1441();
+    o.locations = buildUnnamed1428();
     o.nextPageToken = "foo";
   }
   buildCounterListLocationsResponse--;
@@ -519,26 +519,26 @@
 checkListLocationsResponse(api.ListLocationsResponse o) {
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    checkUnnamed1441(o.locations);
+    checkUnnamed1428(o.locations);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListLocationsResponse--;
 }
 
-buildUnnamed1442() {
+buildUnnamed1429() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1442(core.Map<core.String, core.String> o) {
+checkUnnamed1429(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed1443() {
+buildUnnamed1430() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -553,7 +553,7 @@
   return o;
 }
 
-checkUnnamed1443(core.Map<core.String, core.Object> o) {
+checkUnnamed1430(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -572,9 +572,9 @@
   var o = new api.Location();
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
-    o.labels = buildUnnamed1442();
+    o.labels = buildUnnamed1429();
     o.locationId = "foo";
-    o.metadata = buildUnnamed1443();
+    o.metadata = buildUnnamed1430();
     o.name = "foo";
   }
   buildCounterLocation--;
@@ -584,35 +584,35 @@
 checkLocation(api.Location o) {
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
-    checkUnnamed1442(o.labels);
+    checkUnnamed1429(o.labels);
     unittest.expect(o.locationId, unittest.equals('foo'));
-    checkUnnamed1443(o.metadata);
+    checkUnnamed1430(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
   }
   buildCounterLocation--;
 }
 
-buildUnnamed1444() {
+buildUnnamed1431() {
   var o = new core.List<api.AuditConfig>();
   o.add(buildAuditConfig());
   o.add(buildAuditConfig());
   return o;
 }
 
-checkUnnamed1444(core.List<api.AuditConfig> o) {
+checkUnnamed1431(core.List<api.AuditConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditConfig(o[0]);
   checkAuditConfig(o[1]);
 }
 
-buildUnnamed1445() {
+buildUnnamed1432() {
   var o = new core.List<api.Binding>();
   o.add(buildBinding());
   o.add(buildBinding());
   return o;
 }
 
-checkUnnamed1445(core.List<api.Binding> o) {
+checkUnnamed1432(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -623,8 +623,8 @@
   var o = new api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.auditConfigs = buildUnnamed1444();
-    o.bindings = buildUnnamed1445();
+    o.auditConfigs = buildUnnamed1431();
+    o.bindings = buildUnnamed1432();
     o.etag = "foo";
     o.iamOwned = true;
     o.version = 42;
@@ -636,8 +636,8 @@
 checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed1444(o.auditConfigs);
-    checkUnnamed1445(o.bindings);
+    checkUnnamed1431(o.auditConfigs);
+    checkUnnamed1432(o.bindings);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.iamOwned, unittest.isTrue);
     unittest.expect(o.version, unittest.equals(42));
@@ -681,14 +681,14 @@
   buildCounterSetIamPolicyRequest--;
 }
 
-buildUnnamed1446() {
+buildUnnamed1433() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1446(core.List<core.String> o) {
+checkUnnamed1433(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -699,7 +699,7 @@
   var o = new api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed1446();
+    o.permissions = buildUnnamed1433();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -708,19 +708,19 @@
 checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed1446(o.permissions);
+    checkUnnamed1433(o.permissions);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-buildUnnamed1447() {
+buildUnnamed1434() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1447(core.List<core.String> o) {
+checkUnnamed1434(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -731,7 +731,7 @@
   var o = new api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed1447();
+    o.permissions = buildUnnamed1434();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -740,7 +740,7 @@
 checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed1447(o.permissions);
+    checkUnnamed1434(o.permissions);
   }
   buildCounterTestIamPermissionsResponse--;
 }
@@ -957,6 +957,7 @@
       api.ProjectsLocationsResourceApi res =
           new api.CloudkmsApi(mock).projects.locations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -988,6 +989,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -995,7 +997,9 @@
         var resp = convert.JSON.encode(buildLocation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Location response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Location response) {
         checkLocation(response);
       })));
     });
@@ -1005,9 +1009,10 @@
       api.ProjectsLocationsResourceApi res =
           new api.CloudkmsApi(mock).projects.locations;
       var arg_name = "foo";
+      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
-      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1039,11 +1044,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1053,9 +1059,10 @@
       }), true);
       res
           .list(arg_name,
+              filter: arg_filter,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              filter: arg_filter)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLocationsResponse response) {
         checkListLocationsResponse(response);
       })));
@@ -1070,6 +1077,7 @@
       var arg_request = buildKeyRing();
       var arg_parent = "foo";
       var arg_keyRingId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.KeyRing.fromJson(json);
         checkKeyRing(obj);
@@ -1106,6 +1114,7 @@
         }
         unittest.expect(
             queryMap["keyRingId"].first, unittest.equals(arg_keyRingId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1114,7 +1123,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent, keyRingId: arg_keyRingId)
+          .create(arg_request, arg_parent,
+              keyRingId: arg_keyRingId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.KeyRing response) {
         checkKeyRing(response);
       })));
@@ -1125,6 +1135,7 @@
       api.ProjectsLocationsKeyRingsResourceApi res =
           new api.CloudkmsApi(mock).projects.locations.keyRings;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1156,6 +1167,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1163,7 +1175,9 @@
         var resp = convert.JSON.encode(buildKeyRing());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.KeyRing response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.KeyRing response) {
         checkKeyRing(response);
       })));
     });
@@ -1173,6 +1187,7 @@
       api.ProjectsLocationsKeyRingsResourceApi res =
           new api.CloudkmsApi(mock).projects.locations.keyRings;
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1204,6 +1219,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1212,7 +1228,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_resource)
+          .getIamPolicy(arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1225,6 +1241,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1260,6 +1277,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1268,7 +1286,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListKeyRingsResponse response) {
         checkListKeyRingsResponse(response);
       })));
@@ -1280,6 +1301,7 @@
           new api.CloudkmsApi(mock).projects.locations.keyRings;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -1314,6 +1336,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1322,7 +1345,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1334,6 +1357,7 @@
           new api.CloudkmsApi(mock).projects.locations.keyRings;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -1368,6 +1392,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1375,8 +1400,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -1390,6 +1417,7 @@
       var arg_request = buildCryptoKey();
       var arg_parent = "foo";
       var arg_cryptoKeyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CryptoKey.fromJson(json);
         checkCryptoKey(obj);
@@ -1426,6 +1454,7 @@
         }
         unittest.expect(
             queryMap["cryptoKeyId"].first, unittest.equals(arg_cryptoKeyId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1434,7 +1463,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent, cryptoKeyId: arg_cryptoKeyId)
+          .create(arg_request, arg_parent,
+              cryptoKeyId: arg_cryptoKeyId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CryptoKey response) {
         checkCryptoKey(response);
       })));
@@ -1446,6 +1476,7 @@
           new api.CloudkmsApi(mock).projects.locations.keyRings.cryptoKeys;
       var arg_request = buildDecryptRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DecryptRequest.fromJson(json);
         checkDecryptRequest(obj);
@@ -1480,6 +1511,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1488,7 +1520,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .decrypt(arg_request, arg_name)
+          .decrypt(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DecryptResponse response) {
         checkDecryptResponse(response);
       })));
@@ -1500,6 +1532,7 @@
           new api.CloudkmsApi(mock).projects.locations.keyRings.cryptoKeys;
       var arg_request = buildEncryptRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EncryptRequest.fromJson(json);
         checkEncryptRequest(obj);
@@ -1534,6 +1567,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1542,7 +1576,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .encrypt(arg_request, arg_name)
+          .encrypt(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EncryptResponse response) {
         checkEncryptResponse(response);
       })));
@@ -1553,6 +1587,7 @@
       api.ProjectsLocationsKeyRingsCryptoKeysResourceApi res =
           new api.CloudkmsApi(mock).projects.locations.keyRings.cryptoKeys;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1584,6 +1619,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1591,7 +1627,9 @@
         var resp = convert.JSON.encode(buildCryptoKey());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.CryptoKey response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CryptoKey response) {
         checkCryptoKey(response);
       })));
     });
@@ -1601,6 +1639,7 @@
       api.ProjectsLocationsKeyRingsCryptoKeysResourceApi res =
           new api.CloudkmsApi(mock).projects.locations.keyRings.cryptoKeys;
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1632,6 +1671,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1640,7 +1680,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_resource)
+          .getIamPolicy(arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1653,6 +1693,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1688,6 +1729,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1696,7 +1738,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListCryptoKeysResponse response) {
         checkListCryptoKeysResponse(response);
       })));
@@ -1709,6 +1754,7 @@
       var arg_request = buildCryptoKey();
       var arg_name = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CryptoKey.fromJson(json);
         checkCryptoKey(obj);
@@ -1745,6 +1791,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1753,7 +1800,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_name, updateMask: arg_updateMask)
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CryptoKey response) {
         checkCryptoKey(response);
       })));
@@ -1765,6 +1813,7 @@
           new api.CloudkmsApi(mock).projects.locations.keyRings.cryptoKeys;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -1799,6 +1848,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1807,7 +1857,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1819,6 +1869,7 @@
           new api.CloudkmsApi(mock).projects.locations.keyRings.cryptoKeys;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -1853,6 +1904,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1860,8 +1912,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -1872,6 +1926,7 @@
           new api.CloudkmsApi(mock).projects.locations.keyRings.cryptoKeys;
       var arg_request = buildUpdateCryptoKeyPrimaryVersionRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UpdateCryptoKeyPrimaryVersionRequest.fromJson(json);
         checkUpdateCryptoKeyPrimaryVersionRequest(obj);
@@ -1906,6 +1961,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1914,7 +1970,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .updatePrimaryVersion(arg_request, arg_name)
+          .updatePrimaryVersion(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CryptoKey response) {
         checkCryptoKey(response);
       })));
@@ -1935,6 +1991,7 @@
               .cryptoKeyVersions;
       var arg_request = buildCryptoKeyVersion();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CryptoKeyVersion.fromJson(json);
         checkCryptoKeyVersion(obj);
@@ -1969,6 +2026,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1977,7 +2035,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent)
+          .create(arg_request, arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CryptoKeyVersion response) {
         checkCryptoKeyVersion(response);
       })));
@@ -1994,6 +2052,7 @@
               .cryptoKeyVersions;
       var arg_request = buildDestroyCryptoKeyVersionRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DestroyCryptoKeyVersionRequest.fromJson(json);
         checkDestroyCryptoKeyVersionRequest(obj);
@@ -2028,6 +2087,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2036,7 +2096,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .destroy(arg_request, arg_name)
+          .destroy(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CryptoKeyVersion response) {
         checkCryptoKeyVersion(response);
       })));
@@ -2052,6 +2112,7 @@
               .cryptoKeys
               .cryptoKeyVersions;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2083,6 +2144,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2091,7 +2153,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name)
+          .get(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CryptoKeyVersion response) {
         checkCryptoKeyVersion(response);
       })));
@@ -2109,6 +2171,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2144,6 +2207,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2152,7 +2216,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListCryptoKeyVersionsResponse response) {
         checkListCryptoKeyVersionsResponse(response);
@@ -2171,6 +2238,7 @@
       var arg_request = buildCryptoKeyVersion();
       var arg_name = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CryptoKeyVersion.fromJson(json);
         checkCryptoKeyVersion(obj);
@@ -2207,6 +2275,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2215,7 +2284,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_name, updateMask: arg_updateMask)
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CryptoKeyVersion response) {
         checkCryptoKeyVersion(response);
       })));
@@ -2232,6 +2302,7 @@
               .cryptoKeyVersions;
       var arg_request = buildRestoreCryptoKeyVersionRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RestoreCryptoKeyVersionRequest.fromJson(json);
         checkRestoreCryptoKeyVersionRequest(obj);
@@ -2266,6 +2337,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2274,7 +2346,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .restore(arg_request, arg_name)
+          .restore(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CryptoKeyVersion response) {
         checkCryptoKeyVersion(response);
       })));
diff --git a/generated/googleapis/test/cloudresourcemanager/v1_test.dart b/generated/googleapis/test/cloudresourcemanager/v1_test.dart
index 250aae4..5a9e68a 100644
--- a/generated/googleapis/test/cloudresourcemanager/v1_test.dart
+++ b/generated/googleapis/test/cloudresourcemanager/v1_test.dart
@@ -69,14 +69,14 @@
   buildCounterAncestor--;
 }
 
-buildUnnamed1896() {
+buildUnnamed1894() {
   var o = new core.List<api.AuditLogConfig>();
   o.add(buildAuditLogConfig());
   o.add(buildAuditLogConfig());
   return o;
 }
 
-checkUnnamed1896(core.List<api.AuditLogConfig> o) {
+checkUnnamed1894(core.List<api.AuditLogConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditLogConfig(o[0]);
   checkAuditLogConfig(o[1]);
@@ -87,7 +87,7 @@
   var o = new api.AuditConfig();
   buildCounterAuditConfig++;
   if (buildCounterAuditConfig < 3) {
-    o.auditLogConfigs = buildUnnamed1896();
+    o.auditLogConfigs = buildUnnamed1894();
     o.service = "foo";
   }
   buildCounterAuditConfig--;
@@ -97,20 +97,20 @@
 checkAuditConfig(api.AuditConfig o) {
   buildCounterAuditConfig++;
   if (buildCounterAuditConfig < 3) {
-    checkUnnamed1896(o.auditLogConfigs);
+    checkUnnamed1894(o.auditLogConfigs);
     unittest.expect(o.service, unittest.equals('foo'));
   }
   buildCounterAuditConfig--;
 }
 
-buildUnnamed1897() {
+buildUnnamed1895() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1897(core.List<core.String> o) {
+checkUnnamed1895(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -121,7 +121,7 @@
   var o = new api.AuditLogConfig();
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    o.exemptedMembers = buildUnnamed1897();
+    o.exemptedMembers = buildUnnamed1895();
     o.logType = "foo";
   }
   buildCounterAuditLogConfig--;
@@ -131,20 +131,20 @@
 checkAuditLogConfig(api.AuditLogConfig o) {
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    checkUnnamed1897(o.exemptedMembers);
+    checkUnnamed1895(o.exemptedMembers);
     unittest.expect(o.logType, unittest.equals('foo'));
   }
   buildCounterAuditLogConfig--;
 }
 
-buildUnnamed1898() {
+buildUnnamed1896() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1898(core.List<core.String> o) {
+checkUnnamed1896(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -155,7 +155,7 @@
   var o = new api.Binding();
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    o.members = buildUnnamed1898();
+    o.members = buildUnnamed1896();
     o.role = "foo";
   }
   buildCounterBinding--;
@@ -165,7 +165,7 @@
 checkBinding(api.Binding o) {
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    checkUnnamed1898(o.members);
+    checkUnnamed1896(o.members);
     unittest.expect(o.role, unittest.equals('foo'));
   }
   buildCounterBinding--;
@@ -331,14 +331,14 @@
   buildCounterGetAncestryRequest--;
 }
 
-buildUnnamed1899() {
+buildUnnamed1897() {
   var o = new core.List<api.Ancestor>();
   o.add(buildAncestor());
   o.add(buildAncestor());
   return o;
 }
 
-checkUnnamed1899(core.List<api.Ancestor> o) {
+checkUnnamed1897(core.List<api.Ancestor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAncestor(o[0]);
   checkAncestor(o[1]);
@@ -349,7 +349,7 @@
   var o = new api.GetAncestryResponse();
   buildCounterGetAncestryResponse++;
   if (buildCounterGetAncestryResponse < 3) {
-    o.ancestor = buildUnnamed1899();
+    o.ancestor = buildUnnamed1897();
   }
   buildCounterGetAncestryResponse--;
   return o;
@@ -358,7 +358,7 @@
 checkGetAncestryResponse(api.GetAncestryResponse o) {
   buildCounterGetAncestryResponse++;
   if (buildCounterGetAncestryResponse < 3) {
-    checkUnnamed1899(o.ancestor);
+    checkUnnamed1897(o.ancestor);
   }
   buildCounterGetAncestryResponse--;
 }
@@ -416,14 +416,14 @@
   buildCounterGetOrgPolicyRequest--;
 }
 
-buildUnnamed1900() {
+buildUnnamed1898() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1900(core.List<core.String> o) {
+checkUnnamed1898(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -439,7 +439,7 @@
     o.origin = "foo";
     o.parent = "foo";
     o.reason = "foo";
-    o.restrictions = buildUnnamed1900();
+    o.restrictions = buildUnnamed1898();
   }
   buildCounterLien--;
   return o;
@@ -453,7 +453,7 @@
     unittest.expect(o.origin, unittest.equals('foo'));
     unittest.expect(o.parent, unittest.equals('foo'));
     unittest.expect(o.reason, unittest.equals('foo'));
-    checkUnnamed1900(o.restrictions);
+    checkUnnamed1898(o.restrictions);
   }
   buildCounterLien--;
 }
@@ -480,14 +480,14 @@
   buildCounterListAvailableOrgPolicyConstraintsRequest--;
 }
 
-buildUnnamed1901() {
+buildUnnamed1899() {
   var o = new core.List<api.Constraint>();
   o.add(buildConstraint());
   o.add(buildConstraint());
   return o;
 }
 
-checkUnnamed1901(core.List<api.Constraint> o) {
+checkUnnamed1899(core.List<api.Constraint> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkConstraint(o[0]);
   checkConstraint(o[1]);
@@ -498,7 +498,7 @@
   var o = new api.ListAvailableOrgPolicyConstraintsResponse();
   buildCounterListAvailableOrgPolicyConstraintsResponse++;
   if (buildCounterListAvailableOrgPolicyConstraintsResponse < 3) {
-    o.constraints = buildUnnamed1901();
+    o.constraints = buildUnnamed1899();
     o.nextPageToken = "foo";
   }
   buildCounterListAvailableOrgPolicyConstraintsResponse--;
@@ -509,7 +509,7 @@
     api.ListAvailableOrgPolicyConstraintsResponse o) {
   buildCounterListAvailableOrgPolicyConstraintsResponse++;
   if (buildCounterListAvailableOrgPolicyConstraintsResponse < 3) {
-    checkUnnamed1901(o.constraints);
+    checkUnnamed1899(o.constraints);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListAvailableOrgPolicyConstraintsResponse--;
@@ -534,14 +534,14 @@
   buildCounterListConstraint--;
 }
 
-buildUnnamed1902() {
+buildUnnamed1900() {
   var o = new core.List<api.Lien>();
   o.add(buildLien());
   o.add(buildLien());
   return o;
 }
 
-checkUnnamed1902(core.List<api.Lien> o) {
+checkUnnamed1900(core.List<api.Lien> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLien(o[0]);
   checkLien(o[1]);
@@ -552,7 +552,7 @@
   var o = new api.ListLiensResponse();
   buildCounterListLiensResponse++;
   if (buildCounterListLiensResponse < 3) {
-    o.liens = buildUnnamed1902();
+    o.liens = buildUnnamed1900();
     o.nextPageToken = "foo";
   }
   buildCounterListLiensResponse--;
@@ -562,7 +562,7 @@
 checkListLiensResponse(api.ListLiensResponse o) {
   buildCounterListLiensResponse++;
   if (buildCounterListLiensResponse < 3) {
-    checkUnnamed1902(o.liens);
+    checkUnnamed1900(o.liens);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListLiensResponse--;
@@ -589,14 +589,14 @@
   buildCounterListOrgPoliciesRequest--;
 }
 
-buildUnnamed1903() {
+buildUnnamed1901() {
   var o = new core.List<api.OrgPolicy>();
   o.add(buildOrgPolicy());
   o.add(buildOrgPolicy());
   return o;
 }
 
-checkUnnamed1903(core.List<api.OrgPolicy> o) {
+checkUnnamed1901(core.List<api.OrgPolicy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOrgPolicy(o[0]);
   checkOrgPolicy(o[1]);
@@ -608,7 +608,7 @@
   buildCounterListOrgPoliciesResponse++;
   if (buildCounterListOrgPoliciesResponse < 3) {
     o.nextPageToken = "foo";
-    o.policies = buildUnnamed1903();
+    o.policies = buildUnnamed1901();
   }
   buildCounterListOrgPoliciesResponse--;
   return o;
@@ -618,32 +618,32 @@
   buildCounterListOrgPoliciesResponse++;
   if (buildCounterListOrgPoliciesResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1903(o.policies);
+    checkUnnamed1901(o.policies);
   }
   buildCounterListOrgPoliciesResponse--;
 }
 
-buildUnnamed1904() {
+buildUnnamed1902() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1904(core.List<core.String> o) {
+checkUnnamed1902(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1905() {
+buildUnnamed1903() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1905(core.List<core.String> o) {
+checkUnnamed1903(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -655,8 +655,8 @@
   buildCounterListPolicy++;
   if (buildCounterListPolicy < 3) {
     o.allValues = "foo";
-    o.allowedValues = buildUnnamed1904();
-    o.deniedValues = buildUnnamed1905();
+    o.allowedValues = buildUnnamed1902();
+    o.deniedValues = buildUnnamed1903();
     o.inheritFromParent = true;
     o.suggestedValue = "foo";
   }
@@ -668,22 +668,22 @@
   buildCounterListPolicy++;
   if (buildCounterListPolicy < 3) {
     unittest.expect(o.allValues, unittest.equals('foo'));
-    checkUnnamed1904(o.allowedValues);
-    checkUnnamed1905(o.deniedValues);
+    checkUnnamed1902(o.allowedValues);
+    checkUnnamed1903(o.deniedValues);
     unittest.expect(o.inheritFromParent, unittest.isTrue);
     unittest.expect(o.suggestedValue, unittest.equals('foo'));
   }
   buildCounterListPolicy--;
 }
 
-buildUnnamed1906() {
+buildUnnamed1904() {
   var o = new core.List<api.Project>();
   o.add(buildProject());
   o.add(buildProject());
   return o;
 }
 
-checkUnnamed1906(core.List<api.Project> o) {
+checkUnnamed1904(core.List<api.Project> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProject(o[0]);
   checkProject(o[1]);
@@ -695,7 +695,7 @@
   buildCounterListProjectsResponse++;
   if (buildCounterListProjectsResponse < 3) {
     o.nextPageToken = "foo";
-    o.projects = buildUnnamed1906();
+    o.projects = buildUnnamed1904();
   }
   buildCounterListProjectsResponse--;
   return o;
@@ -705,12 +705,12 @@
   buildCounterListProjectsResponse++;
   if (buildCounterListProjectsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1906(o.projects);
+    checkUnnamed1904(o.projects);
   }
   buildCounterListProjectsResponse--;
 }
 
-buildUnnamed1907() {
+buildUnnamed1905() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -725,7 +725,7 @@
   return o;
 }
 
-checkUnnamed1907(core.Map<core.String, core.Object> o) {
+checkUnnamed1905(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -739,7 +739,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1908() {
+buildUnnamed1906() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -754,7 +754,7 @@
   return o;
 }
 
-checkUnnamed1908(core.Map<core.String, core.Object> o) {
+checkUnnamed1906(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -775,9 +775,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed1907();
+    o.metadata = buildUnnamed1905();
     o.name = "foo";
-    o.response = buildUnnamed1908();
+    o.response = buildUnnamed1906();
   }
   buildCounterOperation--;
   return o;
@@ -788,9 +788,9 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed1907(o.metadata);
+    checkUnnamed1905(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1908(o.response);
+    checkUnnamed1906(o.response);
   }
   buildCounterOperation--;
 }
@@ -872,27 +872,27 @@
   buildCounterOrganizationOwner--;
 }
 
-buildUnnamed1909() {
+buildUnnamed1907() {
   var o = new core.List<api.AuditConfig>();
   o.add(buildAuditConfig());
   o.add(buildAuditConfig());
   return o;
 }
 
-checkUnnamed1909(core.List<api.AuditConfig> o) {
+checkUnnamed1907(core.List<api.AuditConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditConfig(o[0]);
   checkAuditConfig(o[1]);
 }
 
-buildUnnamed1910() {
+buildUnnamed1908() {
   var o = new core.List<api.Binding>();
   o.add(buildBinding());
   o.add(buildBinding());
   return o;
 }
 
-checkUnnamed1910(core.List<api.Binding> o) {
+checkUnnamed1908(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -903,8 +903,8 @@
   var o = new api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.auditConfigs = buildUnnamed1909();
-    o.bindings = buildUnnamed1910();
+    o.auditConfigs = buildUnnamed1907();
+    o.bindings = buildUnnamed1908();
     o.etag = "foo";
     o.version = 42;
   }
@@ -915,22 +915,22 @@
 checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed1909(o.auditConfigs);
-    checkUnnamed1910(o.bindings);
+    checkUnnamed1907(o.auditConfigs);
+    checkUnnamed1908(o.bindings);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.version, unittest.equals(42));
   }
   buildCounterPolicy--;
 }
 
-buildUnnamed1911() {
+buildUnnamed1909() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1911(core.Map<core.String, core.String> o) {
+checkUnnamed1909(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -942,7 +942,7 @@
   buildCounterProject++;
   if (buildCounterProject < 3) {
     o.createTime = "foo";
-    o.labels = buildUnnamed1911();
+    o.labels = buildUnnamed1909();
     o.lifecycleState = "foo";
     o.name = "foo";
     o.parent = buildResourceId();
@@ -957,7 +957,7 @@
   buildCounterProject++;
   if (buildCounterProject < 3) {
     unittest.expect(o.createTime, unittest.equals('foo'));
-    checkUnnamed1911(o.labels);
+    checkUnnamed1909(o.labels);
     unittest.expect(o.lifecycleState, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     checkResourceId(o.parent);
@@ -1049,14 +1049,14 @@
   buildCounterSearchOrganizationsRequest--;
 }
 
-buildUnnamed1912() {
+buildUnnamed1910() {
   var o = new core.List<api.Organization>();
   o.add(buildOrganization());
   o.add(buildOrganization());
   return o;
 }
 
-checkUnnamed1912(core.List<api.Organization> o) {
+checkUnnamed1910(core.List<api.Organization> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOrganization(o[0]);
   checkOrganization(o[1]);
@@ -1068,7 +1068,7 @@
   buildCounterSearchOrganizationsResponse++;
   if (buildCounterSearchOrganizationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.organizations = buildUnnamed1912();
+    o.organizations = buildUnnamed1910();
   }
   buildCounterSearchOrganizationsResponse--;
   return o;
@@ -1078,7 +1078,7 @@
   buildCounterSearchOrganizationsResponse++;
   if (buildCounterSearchOrganizationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1912(o.organizations);
+    checkUnnamed1910(o.organizations);
   }
   buildCounterSearchOrganizationsResponse--;
 }
@@ -1123,7 +1123,7 @@
   buildCounterSetOrgPolicyRequest--;
 }
 
-buildUnnamed1913() {
+buildUnnamed1911() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1138,7 +1138,7 @@
   return o;
 }
 
-checkUnnamed1913(core.Map<core.String, core.Object> o) {
+checkUnnamed1911(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -1152,17 +1152,17 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1914() {
+buildUnnamed1912() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed1913());
-  o.add(buildUnnamed1913());
+  o.add(buildUnnamed1911());
+  o.add(buildUnnamed1911());
   return o;
 }
 
-checkUnnamed1914(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed1912(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1913(o[0]);
-  checkUnnamed1913(o[1]);
+  checkUnnamed1911(o[0]);
+  checkUnnamed1911(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -1171,7 +1171,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed1914();
+    o.details = buildUnnamed1912();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -1182,20 +1182,20 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed1914(o.details);
+    checkUnnamed1912(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
 }
 
-buildUnnamed1915() {
+buildUnnamed1913() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1915(core.List<core.String> o) {
+checkUnnamed1913(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1206,7 +1206,7 @@
   var o = new api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed1915();
+    o.permissions = buildUnnamed1913();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -1215,19 +1215,19 @@
 checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed1915(o.permissions);
+    checkUnnamed1913(o.permissions);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-buildUnnamed1916() {
+buildUnnamed1914() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1916(core.List<core.String> o) {
+checkUnnamed1914(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1238,7 +1238,7 @@
   var o = new api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed1916();
+    o.permissions = buildUnnamed1914();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -1247,7 +1247,7 @@
 checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed1916(o.permissions);
+    checkUnnamed1914(o.permissions);
   }
   buildCounterTestIamPermissionsResponse--;
 }
@@ -1613,6 +1613,7 @@
           new api.CloudresourcemanagerApi(mock).folders;
       var arg_request = buildClearOrgPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ClearOrgPolicyRequest.fromJson(json);
         checkClearOrgPolicyRequest(obj);
@@ -1647,6 +1648,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1655,7 +1657,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .clearOrgPolicy(arg_request, arg_resource)
+          .clearOrgPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1667,6 +1669,7 @@
           new api.CloudresourcemanagerApi(mock).folders;
       var arg_request = buildGetEffectiveOrgPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetEffectiveOrgPolicyRequest.fromJson(json);
         checkGetEffectiveOrgPolicyRequest(obj);
@@ -1701,6 +1704,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1709,7 +1713,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getEffectiveOrgPolicy(arg_request, arg_resource)
+          .getEffectiveOrgPolicy(arg_request, arg_resource,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OrgPolicy response) {
         checkOrgPolicy(response);
       })));
@@ -1721,6 +1726,7 @@
           new api.CloudresourcemanagerApi(mock).folders;
       var arg_request = buildGetOrgPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetOrgPolicyRequest.fromJson(json);
         checkGetOrgPolicyRequest(obj);
@@ -1755,6 +1761,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1763,7 +1770,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getOrgPolicy(arg_request, arg_resource)
+          .getOrgPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OrgPolicy response) {
         checkOrgPolicy(response);
       })));
@@ -1775,6 +1782,7 @@
           new api.CloudresourcemanagerApi(mock).folders;
       var arg_request = buildListAvailableOrgPolicyConstraintsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.ListAvailableOrgPolicyConstraintsRequest.fromJson(json);
@@ -1810,6 +1818,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1818,8 +1827,10 @@
             .encode(buildListAvailableOrgPolicyConstraintsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.listAvailableOrgPolicyConstraints(arg_request, arg_resource).then(
-          unittest.expectAsync1(
+      res
+          .listAvailableOrgPolicyConstraints(arg_request, arg_resource,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
               ((api.ListAvailableOrgPolicyConstraintsResponse response) {
         checkListAvailableOrgPolicyConstraintsResponse(response);
       })));
@@ -1831,6 +1842,7 @@
           new api.CloudresourcemanagerApi(mock).folders;
       var arg_request = buildListOrgPoliciesRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ListOrgPoliciesRequest.fromJson(json);
         checkListOrgPoliciesRequest(obj);
@@ -1865,6 +1877,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1873,7 +1886,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .listOrgPolicies(arg_request, arg_resource)
+          .listOrgPolicies(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOrgPoliciesResponse response) {
         checkListOrgPoliciesResponse(response);
       })));
@@ -1885,6 +1898,7 @@
           new api.CloudresourcemanagerApi(mock).folders;
       var arg_request = buildSetOrgPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetOrgPolicyRequest.fromJson(json);
         checkSetOrgPolicyRequest(obj);
@@ -1919,6 +1933,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1927,7 +1942,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setOrgPolicy(arg_request, arg_resource)
+          .setOrgPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OrgPolicy response) {
         checkOrgPolicy(response);
       })));
@@ -1939,6 +1954,7 @@
       var mock = new HttpServerMock();
       api.LiensResourceApi res = new api.CloudresourcemanagerApi(mock).liens;
       var arg_request = buildLien();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Lien.fromJson(json);
         checkLien(obj);
@@ -1972,6 +1988,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1979,7 +1996,9 @@
         var resp = convert.JSON.encode(buildLien());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.create(arg_request).then(unittest.expectAsync1(((api.Lien response) {
+      res
+          .create(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Lien response) {
         checkLien(response);
       })));
     });
@@ -1988,6 +2007,7 @@
       var mock = new HttpServerMock();
       api.LiensResourceApi res = new api.CloudresourcemanagerApi(mock).liens;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2019,6 +2039,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2026,7 +2047,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -2037,6 +2060,7 @@
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2072,6 +2096,7 @@
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["parent"].first, unittest.equals(arg_parent));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2083,7 +2108,8 @@
           .list(
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              parent: arg_parent)
+              parent: arg_parent,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLiensResponse response) {
         checkListLiensResponse(response);
       })));
@@ -2096,6 +2122,7 @@
       api.OperationsResourceApi res =
           new api.CloudresourcemanagerApi(mock).operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2127,6 +2154,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2134,7 +2162,9 @@
         var resp = convert.JSON.encode(buildOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Operation response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
     });
@@ -2147,6 +2177,7 @@
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_request = buildClearOrgPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ClearOrgPolicyRequest.fromJson(json);
         checkClearOrgPolicyRequest(obj);
@@ -2181,6 +2212,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2189,7 +2221,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .clearOrgPolicy(arg_request, arg_resource)
+          .clearOrgPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -2200,6 +2232,7 @@
       api.OrganizationsResourceApi res =
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2231,6 +2264,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2239,7 +2273,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name)
+          .get(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Organization response) {
         checkOrganization(response);
       })));
@@ -2251,6 +2285,7 @@
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_request = buildGetEffectiveOrgPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetEffectiveOrgPolicyRequest.fromJson(json);
         checkGetEffectiveOrgPolicyRequest(obj);
@@ -2285,6 +2320,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2293,7 +2329,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getEffectiveOrgPolicy(arg_request, arg_resource)
+          .getEffectiveOrgPolicy(arg_request, arg_resource,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OrgPolicy response) {
         checkOrgPolicy(response);
       })));
@@ -2305,6 +2342,7 @@
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_request = buildGetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetIamPolicyRequest.fromJson(json);
         checkGetIamPolicyRequest(obj);
@@ -2339,6 +2377,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2347,7 +2386,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_request, arg_resource)
+          .getIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -2359,6 +2398,7 @@
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_request = buildGetOrgPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetOrgPolicyRequest.fromJson(json);
         checkGetOrgPolicyRequest(obj);
@@ -2393,6 +2433,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2401,7 +2442,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getOrgPolicy(arg_request, arg_resource)
+          .getOrgPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OrgPolicy response) {
         checkOrgPolicy(response);
       })));
@@ -2413,6 +2454,7 @@
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_request = buildListAvailableOrgPolicyConstraintsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.ListAvailableOrgPolicyConstraintsRequest.fromJson(json);
@@ -2448,6 +2490,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2456,8 +2499,10 @@
             .encode(buildListAvailableOrgPolicyConstraintsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.listAvailableOrgPolicyConstraints(arg_request, arg_resource).then(
-          unittest.expectAsync1(
+      res
+          .listAvailableOrgPolicyConstraints(arg_request, arg_resource,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
               ((api.ListAvailableOrgPolicyConstraintsResponse response) {
         checkListAvailableOrgPolicyConstraintsResponse(response);
       })));
@@ -2469,6 +2514,7 @@
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_request = buildListOrgPoliciesRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ListOrgPoliciesRequest.fromJson(json);
         checkListOrgPoliciesRequest(obj);
@@ -2503,6 +2549,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2511,7 +2558,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .listOrgPolicies(arg_request, arg_resource)
+          .listOrgPolicies(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOrgPoliciesResponse response) {
         checkListOrgPoliciesResponse(response);
       })));
@@ -2522,6 +2569,7 @@
       api.OrganizationsResourceApi res =
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_request = buildSearchOrganizationsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SearchOrganizationsRequest.fromJson(json);
         checkSearchOrganizationsRequest(obj);
@@ -2555,6 +2603,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2562,7 +2611,7 @@
         var resp = convert.JSON.encode(buildSearchOrganizationsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.search(arg_request).then(
+      res.search(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.SearchOrganizationsResponse response) {
         checkSearchOrganizationsResponse(response);
       })));
@@ -2574,6 +2623,7 @@
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -2608,6 +2658,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2616,7 +2667,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -2628,6 +2679,7 @@
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_request = buildSetOrgPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetOrgPolicyRequest.fromJson(json);
         checkSetOrgPolicyRequest(obj);
@@ -2662,6 +2714,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2670,7 +2723,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setOrgPolicy(arg_request, arg_resource)
+          .setOrgPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OrgPolicy response) {
         checkOrgPolicy(response);
       })));
@@ -2682,6 +2735,7 @@
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -2716,6 +2770,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2723,8 +2778,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -2737,6 +2794,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildClearOrgPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ClearOrgPolicyRequest.fromJson(json);
         checkClearOrgPolicyRequest(obj);
@@ -2771,6 +2829,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2779,7 +2838,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .clearOrgPolicy(arg_request, arg_resource)
+          .clearOrgPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -2790,6 +2849,7 @@
       api.ProjectsResourceApi res =
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildProject();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Project.fromJson(json);
         checkProject(obj);
@@ -2823,6 +2883,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2831,7 +2892,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request)
+          .create(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2842,6 +2903,7 @@
       api.ProjectsResourceApi res =
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2875,6 +2937,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2883,7 +2946,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_projectId)
+          .delete(arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -2894,6 +2957,7 @@
       api.ProjectsResourceApi res =
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2927,6 +2991,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2935,7 +3000,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_projectId)
+          .get(arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Project response) {
         checkProject(response);
       })));
@@ -2947,6 +3012,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildGetAncestryRequest();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetAncestryRequest.fromJson(json);
         checkGetAncestryRequest(obj);
@@ -2989,6 +3055,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2997,7 +3064,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getAncestry(arg_request, arg_projectId)
+          .getAncestry(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GetAncestryResponse response) {
         checkGetAncestryResponse(response);
       })));
@@ -3009,6 +3076,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildGetEffectiveOrgPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetEffectiveOrgPolicyRequest.fromJson(json);
         checkGetEffectiveOrgPolicyRequest(obj);
@@ -3043,6 +3111,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3051,7 +3120,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getEffectiveOrgPolicy(arg_request, arg_resource)
+          .getEffectiveOrgPolicy(arg_request, arg_resource,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OrgPolicy response) {
         checkOrgPolicy(response);
       })));
@@ -3063,6 +3133,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildGetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetIamPolicyRequest.fromJson(json);
         checkGetIamPolicyRequest(obj);
@@ -3105,6 +3176,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3113,7 +3185,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_request, arg_resource)
+          .getIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -3125,6 +3197,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildGetOrgPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetOrgPolicyRequest.fromJson(json);
         checkGetOrgPolicyRequest(obj);
@@ -3159,6 +3232,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3167,7 +3241,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getOrgPolicy(arg_request, arg_resource)
+          .getOrgPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OrgPolicy response) {
         checkOrgPolicy(response);
       })));
@@ -3177,9 +3251,10 @@
       var mock = new HttpServerMock();
       api.ProjectsResourceApi res =
           new api.CloudresourcemanagerApi(mock).projects;
-      var arg_pageSize = 42;
       var arg_filter = "foo";
       var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3210,11 +3285,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(core.int.parse(queryMap["pageSize"].first),
-            unittest.equals(arg_pageSize));
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3224,9 +3300,10 @@
       }), true);
       res
           .list(
-              pageSize: arg_pageSize,
               filter: arg_filter,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListProjectsResponse response) {
         checkListProjectsResponse(response);
       })));
@@ -3238,6 +3315,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildListAvailableOrgPolicyConstraintsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.ListAvailableOrgPolicyConstraintsRequest.fromJson(json);
@@ -3273,6 +3351,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3281,8 +3360,10 @@
             .encode(buildListAvailableOrgPolicyConstraintsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.listAvailableOrgPolicyConstraints(arg_request, arg_resource).then(
-          unittest.expectAsync1(
+      res
+          .listAvailableOrgPolicyConstraints(arg_request, arg_resource,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
               ((api.ListAvailableOrgPolicyConstraintsResponse response) {
         checkListAvailableOrgPolicyConstraintsResponse(response);
       })));
@@ -3294,6 +3375,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildListOrgPoliciesRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ListOrgPoliciesRequest.fromJson(json);
         checkListOrgPoliciesRequest(obj);
@@ -3328,6 +3410,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3336,7 +3419,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .listOrgPolicies(arg_request, arg_resource)
+          .listOrgPolicies(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOrgPoliciesResponse response) {
         checkListOrgPoliciesResponse(response);
       })));
@@ -3348,6 +3431,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -3390,6 +3474,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3398,7 +3483,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -3410,6 +3495,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildSetOrgPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetOrgPolicyRequest.fromJson(json);
         checkSetOrgPolicyRequest(obj);
@@ -3444,6 +3530,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3452,7 +3539,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setOrgPolicy(arg_request, arg_resource)
+          .setOrgPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OrgPolicy response) {
         checkOrgPolicy(response);
       })));
@@ -3464,6 +3551,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -3506,6 +3594,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3513,8 +3602,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -3525,6 +3616,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildUndeleteProjectRequest();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UndeleteProjectRequest.fromJson(json);
         checkUndeleteProjectRequest(obj);
@@ -3567,6 +3659,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3575,7 +3668,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .undelete(arg_request, arg_projectId)
+          .undelete(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -3587,6 +3680,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildProject();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Project.fromJson(json);
         checkProject(obj);
@@ -3623,6 +3717,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3631,7 +3726,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_projectId)
+          .update(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Project response) {
         checkProject(response);
       })));
diff --git a/generated/googleapis/test/cloudresourcemanager/v2beta1_test.dart b/generated/googleapis/test/cloudresourcemanager/v2beta1_test.dart
index 0a10999..4dc6bda 100644
--- a/generated/googleapis/test/cloudresourcemanager/v2beta1_test.dart
+++ b/generated/googleapis/test/cloudresourcemanager/v2beta1_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed83() {
+buildUnnamed64() {
   var o = new core.List<api.AuditLogConfig>();
   o.add(buildAuditLogConfig());
   o.add(buildAuditLogConfig());
   return o;
 }
 
-checkUnnamed83(core.List<api.AuditLogConfig> o) {
+checkUnnamed64(core.List<api.AuditLogConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditLogConfig(o[0]);
   checkAuditLogConfig(o[1]);
@@ -68,7 +68,7 @@
   var o = new api.AuditConfig();
   buildCounterAuditConfig++;
   if (buildCounterAuditConfig < 3) {
-    o.auditLogConfigs = buildUnnamed83();
+    o.auditLogConfigs = buildUnnamed64();
     o.service = "foo";
   }
   buildCounterAuditConfig--;
@@ -78,20 +78,20 @@
 checkAuditConfig(api.AuditConfig o) {
   buildCounterAuditConfig++;
   if (buildCounterAuditConfig < 3) {
-    checkUnnamed83(o.auditLogConfigs);
+    checkUnnamed64(o.auditLogConfigs);
     unittest.expect(o.service, unittest.equals('foo'));
   }
   buildCounterAuditConfig--;
 }
 
-buildUnnamed84() {
+buildUnnamed65() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed84(core.List<core.String> o) {
+checkUnnamed65(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -102,7 +102,7 @@
   var o = new api.AuditLogConfig();
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    o.exemptedMembers = buildUnnamed84();
+    o.exemptedMembers = buildUnnamed65();
     o.logType = "foo";
   }
   buildCounterAuditLogConfig--;
@@ -112,20 +112,20 @@
 checkAuditLogConfig(api.AuditLogConfig o) {
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    checkUnnamed84(o.exemptedMembers);
+    checkUnnamed65(o.exemptedMembers);
     unittest.expect(o.logType, unittest.equals('foo'));
   }
   buildCounterAuditLogConfig--;
 }
 
-buildUnnamed85() {
+buildUnnamed66() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed85(core.List<core.String> o) {
+checkUnnamed66(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -136,7 +136,7 @@
   var o = new api.Binding();
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    o.members = buildUnnamed85();
+    o.members = buildUnnamed66();
     o.role = "foo";
   }
   buildCounterBinding--;
@@ -146,7 +146,7 @@
 checkBinding(api.Binding o) {
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    checkUnnamed85(o.members);
+    checkUnnamed66(o.members);
     unittest.expect(o.role, unittest.equals('foo'));
   }
   buildCounterBinding--;
@@ -238,14 +238,14 @@
   buildCounterGetIamPolicyRequest--;
 }
 
-buildUnnamed86() {
+buildUnnamed67() {
   var o = new core.List<api.Folder>();
   o.add(buildFolder());
   o.add(buildFolder());
   return o;
 }
 
-checkUnnamed86(core.List<api.Folder> o) {
+checkUnnamed67(core.List<api.Folder> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFolder(o[0]);
   checkFolder(o[1]);
@@ -256,7 +256,7 @@
   var o = new api.ListFoldersResponse();
   buildCounterListFoldersResponse++;
   if (buildCounterListFoldersResponse < 3) {
-    o.folders = buildUnnamed86();
+    o.folders = buildUnnamed67();
     o.nextPageToken = "foo";
   }
   buildCounterListFoldersResponse--;
@@ -266,7 +266,7 @@
 checkListFoldersResponse(api.ListFoldersResponse o) {
   buildCounterListFoldersResponse++;
   if (buildCounterListFoldersResponse < 3) {
-    checkUnnamed86(o.folders);
+    checkUnnamed67(o.folders);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListFoldersResponse--;
@@ -291,7 +291,7 @@
   buildCounterMoveFolderRequest--;
 }
 
-buildUnnamed87() {
+buildUnnamed68() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -306,7 +306,7 @@
   return o;
 }
 
-checkUnnamed87(core.Map<core.String, core.Object> o) {
+checkUnnamed68(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -320,7 +320,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed88() {
+buildUnnamed69() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -335,7 +335,7 @@
   return o;
 }
 
-checkUnnamed88(core.Map<core.String, core.Object> o) {
+checkUnnamed69(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -356,9 +356,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed87();
+    o.metadata = buildUnnamed68();
     o.name = "foo";
-    o.response = buildUnnamed88();
+    o.response = buildUnnamed69();
   }
   buildCounterOperation--;
   return o;
@@ -369,34 +369,34 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed87(o.metadata);
+    checkUnnamed68(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed88(o.response);
+    checkUnnamed69(o.response);
   }
   buildCounterOperation--;
 }
 
-buildUnnamed89() {
+buildUnnamed70() {
   var o = new core.List<api.AuditConfig>();
   o.add(buildAuditConfig());
   o.add(buildAuditConfig());
   return o;
 }
 
-checkUnnamed89(core.List<api.AuditConfig> o) {
+checkUnnamed70(core.List<api.AuditConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditConfig(o[0]);
   checkAuditConfig(o[1]);
 }
 
-buildUnnamed90() {
+buildUnnamed71() {
   var o = new core.List<api.Binding>();
   o.add(buildBinding());
   o.add(buildBinding());
   return o;
 }
 
-checkUnnamed90(core.List<api.Binding> o) {
+checkUnnamed71(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -407,8 +407,8 @@
   var o = new api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.auditConfigs = buildUnnamed89();
-    o.bindings = buildUnnamed90();
+    o.auditConfigs = buildUnnamed70();
+    o.bindings = buildUnnamed71();
     o.etag = "foo";
     o.version = 42;
   }
@@ -419,8 +419,8 @@
 checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed89(o.auditConfigs);
-    checkUnnamed90(o.bindings);
+    checkUnnamed70(o.auditConfigs);
+    checkUnnamed71(o.bindings);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.version, unittest.equals(42));
   }
@@ -473,14 +473,14 @@
   buildCounterSearchFoldersRequest--;
 }
 
-buildUnnamed91() {
+buildUnnamed72() {
   var o = new core.List<api.Folder>();
   o.add(buildFolder());
   o.add(buildFolder());
   return o;
 }
 
-checkUnnamed91(core.List<api.Folder> o) {
+checkUnnamed72(core.List<api.Folder> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFolder(o[0]);
   checkFolder(o[1]);
@@ -491,7 +491,7 @@
   var o = new api.SearchFoldersResponse();
   buildCounterSearchFoldersResponse++;
   if (buildCounterSearchFoldersResponse < 3) {
-    o.folders = buildUnnamed91();
+    o.folders = buildUnnamed72();
     o.nextPageToken = "foo";
   }
   buildCounterSearchFoldersResponse--;
@@ -501,7 +501,7 @@
 checkSearchFoldersResponse(api.SearchFoldersResponse o) {
   buildCounterSearchFoldersResponse++;
   if (buildCounterSearchFoldersResponse < 3) {
-    checkUnnamed91(o.folders);
+    checkUnnamed72(o.folders);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterSearchFoldersResponse--;
@@ -528,7 +528,7 @@
   buildCounterSetIamPolicyRequest--;
 }
 
-buildUnnamed92() {
+buildUnnamed73() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -543,7 +543,7 @@
   return o;
 }
 
-checkUnnamed92(core.Map<core.String, core.Object> o) {
+checkUnnamed73(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -557,17 +557,17 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed93() {
+buildUnnamed74() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed92());
-  o.add(buildUnnamed92());
+  o.add(buildUnnamed73());
+  o.add(buildUnnamed73());
   return o;
 }
 
-checkUnnamed93(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed74(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed92(o[0]);
-  checkUnnamed92(o[1]);
+  checkUnnamed73(o[0]);
+  checkUnnamed73(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -576,7 +576,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed93();
+    o.details = buildUnnamed74();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -587,20 +587,20 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed93(o.details);
+    checkUnnamed74(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
 }
 
-buildUnnamed94() {
+buildUnnamed75() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed94(core.List<core.String> o) {
+checkUnnamed75(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -611,7 +611,7 @@
   var o = new api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed94();
+    o.permissions = buildUnnamed75();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -620,19 +620,19 @@
 checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed94(o.permissions);
+    checkUnnamed75(o.permissions);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-buildUnnamed95() {
+buildUnnamed76() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed95(core.List<core.String> o) {
+checkUnnamed76(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -643,7 +643,7 @@
   var o = new api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed95();
+    o.permissions = buildUnnamed76();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -652,7 +652,7 @@
 checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed95(o.permissions);
+    checkUnnamed76(o.permissions);
   }
   buildCounterTestIamPermissionsResponse--;
 }
@@ -832,6 +832,7 @@
           new api.CloudresourcemanagerApi(mock).folders;
       var arg_request = buildFolder();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Folder.fromJson(json);
         checkFolder(obj);
@@ -866,6 +867,7 @@
           }
         }
         unittest.expect(queryMap["parent"].first, unittest.equals(arg_parent));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -874,7 +876,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, parent: arg_parent)
+          .create(arg_request, parent: arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -885,6 +887,7 @@
       api.FoldersResourceApi res =
           new api.CloudresourcemanagerApi(mock).folders;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -916,6 +919,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -923,7 +927,9 @@
         var resp = convert.JSON.encode(buildFolder());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Folder response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Folder response) {
         checkFolder(response);
       })));
     });
@@ -933,6 +939,7 @@
       api.FoldersResourceApi res =
           new api.CloudresourcemanagerApi(mock).folders;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -964,6 +971,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -971,7 +979,9 @@
         var resp = convert.JSON.encode(buildFolder());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Folder response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Folder response) {
         checkFolder(response);
       })));
     });
@@ -982,6 +992,7 @@
           new api.CloudresourcemanagerApi(mock).folders;
       var arg_request = buildGetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetIamPolicyRequest.fromJson(json);
         checkGetIamPolicyRequest(obj);
@@ -1016,6 +1027,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1024,7 +1036,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_request, arg_resource)
+          .getIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1038,6 +1050,7 @@
       var arg_pageSize = 42;
       var arg_parent = "foo";
       var arg_showDeleted = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1075,6 +1088,7 @@
         unittest.expect(queryMap["parent"].first, unittest.equals(arg_parent));
         unittest.expect(
             queryMap["showDeleted"].first, unittest.equals("$arg_showDeleted"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1087,7 +1101,8 @@
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
               parent: arg_parent,
-              showDeleted: arg_showDeleted)
+              showDeleted: arg_showDeleted,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListFoldersResponse response) {
         checkListFoldersResponse(response);
       })));
@@ -1099,6 +1114,7 @@
           new api.CloudresourcemanagerApi(mock).folders;
       var arg_request = buildMoveFolderRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.MoveFolderRequest.fromJson(json);
         checkMoveFolderRequest(obj);
@@ -1133,6 +1149,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1141,7 +1158,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .move(arg_request, arg_name)
+          .move(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1154,6 +1171,7 @@
       var arg_request = buildFolder();
       var arg_name = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Folder.fromJson(json);
         checkFolder(obj);
@@ -1190,6 +1208,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1198,7 +1217,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_name, updateMask: arg_updateMask)
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Folder response) {
         checkFolder(response);
       })));
@@ -1209,6 +1229,7 @@
       api.FoldersResourceApi res =
           new api.CloudresourcemanagerApi(mock).folders;
       var arg_request = buildSearchFoldersRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SearchFoldersRequest.fromJson(json);
         checkSearchFoldersRequest(obj);
@@ -1242,6 +1263,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1250,7 +1272,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .search(arg_request)
+          .search(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SearchFoldersResponse response) {
         checkSearchFoldersResponse(response);
       })));
@@ -1262,6 +1284,7 @@
           new api.CloudresourcemanagerApi(mock).folders;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -1296,6 +1319,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1304,7 +1328,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1316,6 +1340,7 @@
           new api.CloudresourcemanagerApi(mock).folders;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -1350,6 +1375,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1357,8 +1383,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -1369,6 +1397,7 @@
           new api.CloudresourcemanagerApi(mock).folders;
       var arg_request = buildUndeleteFolderRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UndeleteFolderRequest.fromJson(json);
         checkUndeleteFolderRequest(obj);
@@ -1403,6 +1432,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1411,7 +1441,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .undelete(arg_request, arg_name)
+          .undelete(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Folder response) {
         checkFolder(response);
       })));
diff --git a/generated/googleapis/test/cloudtrace/v1_test.dart b/generated/googleapis/test/cloudtrace/v1_test.dart
index 2c4a141..9208f3a 100644
--- a/generated/googleapis/test/cloudtrace/v1_test.dart
+++ b/generated/googleapis/test/cloudtrace/v1_test.dart
@@ -65,14 +65,14 @@
   buildCounterEmpty--;
 }
 
-buildUnnamed205() {
+buildUnnamed189() {
   var o = new core.List<api.Trace>();
   o.add(buildTrace());
   o.add(buildTrace());
   return o;
 }
 
-checkUnnamed205(core.List<api.Trace> o) {
+checkUnnamed189(core.List<api.Trace> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTrace(o[0]);
   checkTrace(o[1]);
@@ -84,7 +84,7 @@
   buildCounterListTracesResponse++;
   if (buildCounterListTracesResponse < 3) {
     o.nextPageToken = "foo";
-    o.traces = buildUnnamed205();
+    o.traces = buildUnnamed189();
   }
   buildCounterListTracesResponse--;
   return o;
@@ -94,19 +94,19 @@
   buildCounterListTracesResponse++;
   if (buildCounterListTracesResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed205(o.traces);
+    checkUnnamed189(o.traces);
   }
   buildCounterListTracesResponse--;
 }
 
-buildUnnamed206() {
+buildUnnamed190() {
   var o = new core.List<api.TraceSpan>();
   o.add(buildTraceSpan());
   o.add(buildTraceSpan());
   return o;
 }
 
-checkUnnamed206(core.List<api.TraceSpan> o) {
+checkUnnamed190(core.List<api.TraceSpan> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTraceSpan(o[0]);
   checkTraceSpan(o[1]);
@@ -118,7 +118,7 @@
   buildCounterTrace++;
   if (buildCounterTrace < 3) {
     o.projectId = "foo";
-    o.spans = buildUnnamed206();
+    o.spans = buildUnnamed190();
     o.traceId = "foo";
   }
   buildCounterTrace--;
@@ -129,20 +129,20 @@
   buildCounterTrace++;
   if (buildCounterTrace < 3) {
     unittest.expect(o.projectId, unittest.equals('foo'));
-    checkUnnamed206(o.spans);
+    checkUnnamed190(o.spans);
     unittest.expect(o.traceId, unittest.equals('foo'));
   }
   buildCounterTrace--;
 }
 
-buildUnnamed207() {
+buildUnnamed191() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed207(core.Map<core.String, core.String> o) {
+checkUnnamed191(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -155,7 +155,7 @@
   if (buildCounterTraceSpan < 3) {
     o.endTime = "foo";
     o.kind = "foo";
-    o.labels = buildUnnamed207();
+    o.labels = buildUnnamed191();
     o.name = "foo";
     o.parentSpanId = "foo";
     o.spanId = "foo";
@@ -170,7 +170,7 @@
   if (buildCounterTraceSpan < 3) {
     unittest.expect(o.endTime, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed207(o.labels);
+    checkUnnamed191(o.labels);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.parentSpanId, unittest.equals('foo'));
     unittest.expect(o.spanId, unittest.equals('foo'));
@@ -179,14 +179,14 @@
   buildCounterTraceSpan--;
 }
 
-buildUnnamed208() {
+buildUnnamed192() {
   var o = new core.List<api.Trace>();
   o.add(buildTrace());
   o.add(buildTrace());
   return o;
 }
 
-checkUnnamed208(core.List<api.Trace> o) {
+checkUnnamed192(core.List<api.Trace> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTrace(o[0]);
   checkTrace(o[1]);
@@ -197,7 +197,7 @@
   var o = new api.Traces();
   buildCounterTraces++;
   if (buildCounterTraces < 3) {
-    o.traces = buildUnnamed208();
+    o.traces = buildUnnamed192();
   }
   buildCounterTraces--;
   return o;
@@ -206,7 +206,7 @@
 checkTraces(api.Traces o) {
   buildCounterTraces++;
   if (buildCounterTraces < 3) {
-    checkUnnamed208(o.traces);
+    checkUnnamed192(o.traces);
   }
   buildCounterTraces--;
 }
@@ -258,6 +258,7 @@
       api.ProjectsResourceApi res = new api.CloudtraceApi(mock).projects;
       var arg_request = buildTraces();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Traces.fromJson(json);
         checkTraces(obj);
@@ -300,6 +301,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -308,7 +310,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patchTraces(arg_request, arg_projectId)
+          .patchTraces(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -322,6 +324,7 @@
           new api.CloudtraceApi(mock).projects.traces;
       var arg_projectId = "foo";
       var arg_traceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -364,6 +367,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -372,7 +376,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_projectId, arg_traceId)
+          .get(arg_projectId, arg_traceId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Trace response) {
         checkTrace(response);
       })));
@@ -383,13 +387,14 @@
       api.ProjectsTracesResourceApi res =
           new api.CloudtraceApi(mock).projects.traces;
       var arg_projectId = "foo";
-      var arg_pageToken = "foo";
-      var arg_startTime = "foo";
       var arg_pageSize = 42;
       var arg_view = "foo";
       var arg_orderBy = "foo";
       var arg_filter = "foo";
       var arg_endTime = "foo";
+      var arg_pageToken = "foo";
+      var arg_startTime = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -429,10 +434,6 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
-        unittest.expect(
-            queryMap["startTime"].first, unittest.equals(arg_startTime));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
@@ -441,6 +442,11 @@
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["endTime"].first, unittest.equals(arg_endTime));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["startTime"].first, unittest.equals(arg_startTime));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -450,13 +456,14 @@
       }), true);
       res
           .list(arg_projectId,
-              pageToken: arg_pageToken,
-              startTime: arg_startTime,
               pageSize: arg_pageSize,
               view: arg_view,
               orderBy: arg_orderBy,
               filter: arg_filter,
-              endTime: arg_endTime)
+              endTime: arg_endTime,
+              pageToken: arg_pageToken,
+              startTime: arg_startTime,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListTracesResponse response) {
         checkListTracesResponse(response);
       })));
diff --git a/generated/googleapis/test/cloudtrace/v2_test.dart b/generated/googleapis/test/cloudtrace/v2_test.dart
index 0384eec..f80e906 100644
--- a/generated/googleapis/test/cloudtrace/v2_test.dart
+++ b/generated/googleapis/test/cloudtrace/v2_test.dart
@@ -94,14 +94,14 @@
   buildCounterAttributeValue--;
 }
 
-buildUnnamed1151() {
+buildUnnamed1138() {
   var o = new core.Map<core.String, api.AttributeValue>();
   o["x"] = buildAttributeValue();
   o["y"] = buildAttributeValue();
   return o;
 }
 
-checkUnnamed1151(core.Map<core.String, api.AttributeValue> o) {
+checkUnnamed1138(core.Map<core.String, api.AttributeValue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAttributeValue(o["x"]);
   checkAttributeValue(o["y"]);
@@ -112,7 +112,7 @@
   var o = new api.Attributes();
   buildCounterAttributes++;
   if (buildCounterAttributes < 3) {
-    o.attributeMap = buildUnnamed1151();
+    o.attributeMap = buildUnnamed1138();
     o.droppedAttributesCount = 42;
   }
   buildCounterAttributes--;
@@ -122,20 +122,20 @@
 checkAttributes(api.Attributes o) {
   buildCounterAttributes++;
   if (buildCounterAttributes < 3) {
-    checkUnnamed1151(o.attributeMap);
+    checkUnnamed1138(o.attributeMap);
     unittest.expect(o.droppedAttributesCount, unittest.equals(42));
   }
   buildCounterAttributes--;
 }
 
-buildUnnamed1152() {
+buildUnnamed1139() {
   var o = new core.List<api.Span>();
   o.add(buildSpan());
   o.add(buildSpan());
   return o;
 }
 
-checkUnnamed1152(core.List<api.Span> o) {
+checkUnnamed1139(core.List<api.Span> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSpan(o[0]);
   checkSpan(o[1]);
@@ -146,7 +146,7 @@
   var o = new api.BatchWriteSpansRequest();
   buildCounterBatchWriteSpansRequest++;
   if (buildCounterBatchWriteSpansRequest < 3) {
-    o.spans = buildUnnamed1152();
+    o.spans = buildUnnamed1139();
   }
   buildCounterBatchWriteSpansRequest--;
   return o;
@@ -155,7 +155,7 @@
 checkBatchWriteSpansRequest(api.BatchWriteSpansRequest o) {
   buildCounterBatchWriteSpansRequest++;
   if (buildCounterBatchWriteSpansRequest < 3) {
-    checkUnnamed1152(o.spans);
+    checkUnnamed1139(o.spans);
   }
   buildCounterBatchWriteSpansRequest--;
 }
@@ -200,14 +200,14 @@
   buildCounterLink--;
 }
 
-buildUnnamed1153() {
+buildUnnamed1140() {
   var o = new core.List<api.Link>();
   o.add(buildLink());
   o.add(buildLink());
   return o;
 }
 
-checkUnnamed1153(core.List<api.Link> o) {
+checkUnnamed1140(core.List<api.Link> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLink(o[0]);
   checkLink(o[1]);
@@ -219,7 +219,7 @@
   buildCounterLinks++;
   if (buildCounterLinks < 3) {
     o.droppedLinksCount = 42;
-    o.link = buildUnnamed1153();
+    o.link = buildUnnamed1140();
   }
   buildCounterLinks--;
   return o;
@@ -229,11 +229,36 @@
   buildCounterLinks++;
   if (buildCounterLinks < 3) {
     unittest.expect(o.droppedLinksCount, unittest.equals(42));
-    checkUnnamed1153(o.link);
+    checkUnnamed1140(o.link);
   }
   buildCounterLinks--;
 }
 
+core.int buildCounterMessageEvent = 0;
+buildMessageEvent() {
+  var o = new api.MessageEvent();
+  buildCounterMessageEvent++;
+  if (buildCounterMessageEvent < 3) {
+    o.compressedSizeBytes = "foo";
+    o.id = "foo";
+    o.type = "foo";
+    o.uncompressedSizeBytes = "foo";
+  }
+  buildCounterMessageEvent--;
+  return o;
+}
+
+checkMessageEvent(api.MessageEvent o) {
+  buildCounterMessageEvent++;
+  if (buildCounterMessageEvent < 3) {
+    unittest.expect(o.compressedSizeBytes, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.uncompressedSizeBytes, unittest.equals('foo'));
+  }
+  buildCounterMessageEvent--;
+}
+
 core.int buildCounterModule = 0;
 buildModule() {
   var o = new api.Module();
@@ -255,33 +280,6 @@
   buildCounterModule--;
 }
 
-core.int buildCounterNetworkEvent = 0;
-buildNetworkEvent() {
-  var o = new api.NetworkEvent();
-  buildCounterNetworkEvent++;
-  if (buildCounterNetworkEvent < 3) {
-    o.compressedMessageSize = "foo";
-    o.messageId = "foo";
-    o.time = "foo";
-    o.type = "foo";
-    o.uncompressedMessageSize = "foo";
-  }
-  buildCounterNetworkEvent--;
-  return o;
-}
-
-checkNetworkEvent(api.NetworkEvent o) {
-  buildCounterNetworkEvent++;
-  if (buildCounterNetworkEvent < 3) {
-    unittest.expect(o.compressedMessageSize, unittest.equals('foo'));
-    unittest.expect(o.messageId, unittest.equals('foo'));
-    unittest.expect(o.time, unittest.equals('foo'));
-    unittest.expect(o.type, unittest.equals('foo'));
-    unittest.expect(o.uncompressedMessageSize, unittest.equals('foo'));
-  }
-  buildCounterNetworkEvent--;
-}
-
 core.int buildCounterSpan = 0;
 buildSpan() {
   var o = new api.Span();
@@ -356,14 +354,14 @@
   buildCounterStackFrame--;
 }
 
-buildUnnamed1154() {
+buildUnnamed1141() {
   var o = new core.List<api.StackFrame>();
   o.add(buildStackFrame());
   o.add(buildStackFrame());
   return o;
 }
 
-checkUnnamed1154(core.List<api.StackFrame> o) {
+checkUnnamed1141(core.List<api.StackFrame> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStackFrame(o[0]);
   checkStackFrame(o[1]);
@@ -375,7 +373,7 @@
   buildCounterStackFrames++;
   if (buildCounterStackFrames < 3) {
     o.droppedFramesCount = 42;
-    o.frame = buildUnnamed1154();
+    o.frame = buildUnnamed1141();
   }
   buildCounterStackFrames--;
   return o;
@@ -385,7 +383,7 @@
   buildCounterStackFrames++;
   if (buildCounterStackFrames < 3) {
     unittest.expect(o.droppedFramesCount, unittest.equals(42));
-    checkUnnamed1154(o.frame);
+    checkUnnamed1141(o.frame);
   }
   buildCounterStackFrames--;
 }
@@ -411,7 +409,7 @@
   buildCounterStackTrace--;
 }
 
-buildUnnamed1155() {
+buildUnnamed1142() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -426,7 +424,7 @@
   return o;
 }
 
-checkUnnamed1155(core.Map<core.String, core.Object> o) {
+checkUnnamed1142(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -440,17 +438,17 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1156() {
+buildUnnamed1143() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed1155());
-  o.add(buildUnnamed1155());
+  o.add(buildUnnamed1142());
+  o.add(buildUnnamed1142());
   return o;
 }
 
-checkUnnamed1156(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed1143(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1155(o[0]);
-  checkUnnamed1155(o[1]);
+  checkUnnamed1142(o[0]);
+  checkUnnamed1142(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -459,7 +457,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed1156();
+    o.details = buildUnnamed1143();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -470,7 +468,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed1156(o.details);
+    checkUnnamed1143(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -482,7 +480,7 @@
   buildCounterTimeEvent++;
   if (buildCounterTimeEvent < 3) {
     o.annotation = buildAnnotation();
-    o.networkEvent = buildNetworkEvent();
+    o.messageEvent = buildMessageEvent();
     o.time = "foo";
   }
   buildCounterTimeEvent--;
@@ -493,20 +491,20 @@
   buildCounterTimeEvent++;
   if (buildCounterTimeEvent < 3) {
     checkAnnotation(o.annotation);
-    checkNetworkEvent(o.networkEvent);
+    checkMessageEvent(o.messageEvent);
     unittest.expect(o.time, unittest.equals('foo'));
   }
   buildCounterTimeEvent--;
 }
 
-buildUnnamed1157() {
+buildUnnamed1144() {
   var o = new core.List<api.TimeEvent>();
   o.add(buildTimeEvent());
   o.add(buildTimeEvent());
   return o;
 }
 
-checkUnnamed1157(core.List<api.TimeEvent> o) {
+checkUnnamed1144(core.List<api.TimeEvent> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTimeEvent(o[0]);
   checkTimeEvent(o[1]);
@@ -518,8 +516,8 @@
   buildCounterTimeEvents++;
   if (buildCounterTimeEvents < 3) {
     o.droppedAnnotationsCount = 42;
-    o.droppedNetworkEventsCount = 42;
-    o.timeEvent = buildUnnamed1157();
+    o.droppedMessageEventsCount = 42;
+    o.timeEvent = buildUnnamed1144();
   }
   buildCounterTimeEvents--;
   return o;
@@ -529,8 +527,8 @@
   buildCounterTimeEvents++;
   if (buildCounterTimeEvents < 3) {
     unittest.expect(o.droppedAnnotationsCount, unittest.equals(42));
-    unittest.expect(o.droppedNetworkEventsCount, unittest.equals(42));
-    checkUnnamed1157(o.timeEvent);
+    unittest.expect(o.droppedMessageEventsCount, unittest.equals(42));
+    checkUnnamed1144(o.timeEvent);
   }
   buildCounterTimeEvents--;
 }
@@ -613,6 +611,14 @@
     });
   });
 
+  unittest.group("obj-schema-MessageEvent", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMessageEvent();
+      var od = new api.MessageEvent.fromJson(o.toJson());
+      checkMessageEvent(od);
+    });
+  });
+
   unittest.group("obj-schema-Module", () {
     unittest.test("to-json--from-json", () {
       var o = buildModule();
@@ -621,14 +627,6 @@
     });
   });
 
-  unittest.group("obj-schema-NetworkEvent", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildNetworkEvent();
-      var od = new api.NetworkEvent.fromJson(o.toJson());
-      checkNetworkEvent(od);
-    });
-  });
-
   unittest.group("obj-schema-Span", () {
     unittest.test("to-json--from-json", () {
       var o = buildSpan();
@@ -700,6 +698,7 @@
           new api.CloudtraceApi(mock).projects.traces;
       var arg_request = buildBatchWriteSpansRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BatchWriteSpansRequest.fromJson(json);
         checkBatchWriteSpansRequest(obj);
@@ -734,6 +733,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -742,7 +742,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .batchWrite(arg_request, arg_name)
+          .batchWrite(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -756,6 +756,7 @@
           new api.CloudtraceApi(mock).projects.traces.spans;
       var arg_request = buildSpan();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Span.fromJson(json);
         checkSpan(obj);
@@ -790,6 +791,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -798,7 +800,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_name)
+          .create(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Span response) {
         checkSpan(response);
       })));
diff --git a/generated/googleapis/test/compute/v1_test.dart b/generated/googleapis/test/compute/v1_test.dart
index 97476eb..5211e23 100644
--- a/generated/googleapis/test/compute/v1_test.dart
+++ b/generated/googleapis/test/compute/v1_test.dart
@@ -106,14 +106,14 @@
   buildCounterAcceleratorType--;
 }
 
-buildUnnamed2288() {
+buildUnnamed2286() {
   var o = new core.Map<core.String, api.AcceleratorTypesScopedList>();
   o["x"] = buildAcceleratorTypesScopedList();
   o["y"] = buildAcceleratorTypesScopedList();
   return o;
 }
 
-checkUnnamed2288(core.Map<core.String, api.AcceleratorTypesScopedList> o) {
+checkUnnamed2286(core.Map<core.String, api.AcceleratorTypesScopedList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAcceleratorTypesScopedList(o["x"]);
   checkAcceleratorTypesScopedList(o["y"]);
@@ -141,14 +141,14 @@
   buildCounterAcceleratorTypeAggregatedListWarningData--;
 }
 
-buildUnnamed2289() {
+buildUnnamed2287() {
   var o = new core.List<api.AcceleratorTypeAggregatedListWarningData>();
   o.add(buildAcceleratorTypeAggregatedListWarningData());
   o.add(buildAcceleratorTypeAggregatedListWarningData());
   return o;
 }
 
-checkUnnamed2289(core.List<api.AcceleratorTypeAggregatedListWarningData> o) {
+checkUnnamed2287(core.List<api.AcceleratorTypeAggregatedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAcceleratorTypeAggregatedListWarningData(o[0]);
   checkAcceleratorTypeAggregatedListWarningData(o[1]);
@@ -160,7 +160,7 @@
   buildCounterAcceleratorTypeAggregatedListWarning++;
   if (buildCounterAcceleratorTypeAggregatedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2289();
+    o.data = buildUnnamed2287();
     o.message = "foo";
   }
   buildCounterAcceleratorTypeAggregatedListWarning--;
@@ -172,7 +172,7 @@
   buildCounterAcceleratorTypeAggregatedListWarning++;
   if (buildCounterAcceleratorTypeAggregatedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2289(o.data);
+    checkUnnamed2287(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterAcceleratorTypeAggregatedListWarning--;
@@ -184,7 +184,7 @@
   buildCounterAcceleratorTypeAggregatedList++;
   if (buildCounterAcceleratorTypeAggregatedList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2288();
+    o.items = buildUnnamed2286();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -198,7 +198,7 @@
   buildCounterAcceleratorTypeAggregatedList++;
   if (buildCounterAcceleratorTypeAggregatedList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2288(o.items);
+    checkUnnamed2286(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -207,14 +207,14 @@
   buildCounterAcceleratorTypeAggregatedList--;
 }
 
-buildUnnamed2290() {
+buildUnnamed2288() {
   var o = new core.List<api.AcceleratorType>();
   o.add(buildAcceleratorType());
   o.add(buildAcceleratorType());
   return o;
 }
 
-checkUnnamed2290(core.List<api.AcceleratorType> o) {
+checkUnnamed2288(core.List<api.AcceleratorType> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAcceleratorType(o[0]);
   checkAcceleratorType(o[1]);
@@ -241,14 +241,14 @@
   buildCounterAcceleratorTypeListWarningData--;
 }
 
-buildUnnamed2291() {
+buildUnnamed2289() {
   var o = new core.List<api.AcceleratorTypeListWarningData>();
   o.add(buildAcceleratorTypeListWarningData());
   o.add(buildAcceleratorTypeListWarningData());
   return o;
 }
 
-checkUnnamed2291(core.List<api.AcceleratorTypeListWarningData> o) {
+checkUnnamed2289(core.List<api.AcceleratorTypeListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAcceleratorTypeListWarningData(o[0]);
   checkAcceleratorTypeListWarningData(o[1]);
@@ -260,7 +260,7 @@
   buildCounterAcceleratorTypeListWarning++;
   if (buildCounterAcceleratorTypeListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2291();
+    o.data = buildUnnamed2289();
     o.message = "foo";
   }
   buildCounterAcceleratorTypeListWarning--;
@@ -271,7 +271,7 @@
   buildCounterAcceleratorTypeListWarning++;
   if (buildCounterAcceleratorTypeListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2291(o.data);
+    checkUnnamed2289(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterAcceleratorTypeListWarning--;
@@ -283,7 +283,7 @@
   buildCounterAcceleratorTypeList++;
   if (buildCounterAcceleratorTypeList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2290();
+    o.items = buildUnnamed2288();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -297,7 +297,7 @@
   buildCounterAcceleratorTypeList++;
   if (buildCounterAcceleratorTypeList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2290(o.items);
+    checkUnnamed2288(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -306,14 +306,14 @@
   buildCounterAcceleratorTypeList--;
 }
 
-buildUnnamed2292() {
+buildUnnamed2290() {
   var o = new core.List<api.AcceleratorType>();
   o.add(buildAcceleratorType());
   o.add(buildAcceleratorType());
   return o;
 }
 
-checkUnnamed2292(core.List<api.AcceleratorType> o) {
+checkUnnamed2290(core.List<api.AcceleratorType> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAcceleratorType(o[0]);
   checkAcceleratorType(o[1]);
@@ -341,14 +341,14 @@
   buildCounterAcceleratorTypesScopedListWarningData--;
 }
 
-buildUnnamed2293() {
+buildUnnamed2291() {
   var o = new core.List<api.AcceleratorTypesScopedListWarningData>();
   o.add(buildAcceleratorTypesScopedListWarningData());
   o.add(buildAcceleratorTypesScopedListWarningData());
   return o;
 }
 
-checkUnnamed2293(core.List<api.AcceleratorTypesScopedListWarningData> o) {
+checkUnnamed2291(core.List<api.AcceleratorTypesScopedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAcceleratorTypesScopedListWarningData(o[0]);
   checkAcceleratorTypesScopedListWarningData(o[1]);
@@ -360,7 +360,7 @@
   buildCounterAcceleratorTypesScopedListWarning++;
   if (buildCounterAcceleratorTypesScopedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2293();
+    o.data = buildUnnamed2291();
     o.message = "foo";
   }
   buildCounterAcceleratorTypesScopedListWarning--;
@@ -372,7 +372,7 @@
   buildCounterAcceleratorTypesScopedListWarning++;
   if (buildCounterAcceleratorTypesScopedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2293(o.data);
+    checkUnnamed2291(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterAcceleratorTypesScopedListWarning--;
@@ -383,7 +383,7 @@
   var o = new api.AcceleratorTypesScopedList();
   buildCounterAcceleratorTypesScopedList++;
   if (buildCounterAcceleratorTypesScopedList < 3) {
-    o.acceleratorTypes = buildUnnamed2292();
+    o.acceleratorTypes = buildUnnamed2290();
     o.warning = buildAcceleratorTypesScopedListWarning();
   }
   buildCounterAcceleratorTypesScopedList--;
@@ -393,7 +393,7 @@
 checkAcceleratorTypesScopedList(api.AcceleratorTypesScopedList o) {
   buildCounterAcceleratorTypesScopedList++;
   if (buildCounterAcceleratorTypesScopedList < 3) {
-    checkUnnamed2292(o.acceleratorTypes);
+    checkUnnamed2290(o.acceleratorTypes);
     checkAcceleratorTypesScopedListWarning(o.warning);
   }
   buildCounterAcceleratorTypesScopedList--;
@@ -424,14 +424,14 @@
   buildCounterAccessConfig--;
 }
 
-buildUnnamed2294() {
+buildUnnamed2292() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2294(core.List<core.String> o) {
+checkUnnamed2292(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -454,7 +454,7 @@
     o.selfLink = "foo";
     o.status = "foo";
     o.subnetwork = "foo";
-    o.users = buildUnnamed2294();
+    o.users = buildUnnamed2292();
   }
   buildCounterAddress--;
   return o;
@@ -475,19 +475,19 @@
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals('foo'));
     unittest.expect(o.subnetwork, unittest.equals('foo'));
-    checkUnnamed2294(o.users);
+    checkUnnamed2292(o.users);
   }
   buildCounterAddress--;
 }
 
-buildUnnamed2295() {
+buildUnnamed2293() {
   var o = new core.Map<core.String, api.AddressesScopedList>();
   o["x"] = buildAddressesScopedList();
   o["y"] = buildAddressesScopedList();
   return o;
 }
 
-checkUnnamed2295(core.Map<core.String, api.AddressesScopedList> o) {
+checkUnnamed2293(core.Map<core.String, api.AddressesScopedList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAddressesScopedList(o["x"]);
   checkAddressesScopedList(o["y"]);
@@ -514,14 +514,14 @@
   buildCounterAddressAggregatedListWarningData--;
 }
 
-buildUnnamed2296() {
+buildUnnamed2294() {
   var o = new core.List<api.AddressAggregatedListWarningData>();
   o.add(buildAddressAggregatedListWarningData());
   o.add(buildAddressAggregatedListWarningData());
   return o;
 }
 
-checkUnnamed2296(core.List<api.AddressAggregatedListWarningData> o) {
+checkUnnamed2294(core.List<api.AddressAggregatedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAddressAggregatedListWarningData(o[0]);
   checkAddressAggregatedListWarningData(o[1]);
@@ -533,7 +533,7 @@
   buildCounterAddressAggregatedListWarning++;
   if (buildCounterAddressAggregatedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2296();
+    o.data = buildUnnamed2294();
     o.message = "foo";
   }
   buildCounterAddressAggregatedListWarning--;
@@ -544,7 +544,7 @@
   buildCounterAddressAggregatedListWarning++;
   if (buildCounterAddressAggregatedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2296(o.data);
+    checkUnnamed2294(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterAddressAggregatedListWarning--;
@@ -556,7 +556,7 @@
   buildCounterAddressAggregatedList++;
   if (buildCounterAddressAggregatedList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2295();
+    o.items = buildUnnamed2293();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -570,7 +570,7 @@
   buildCounterAddressAggregatedList++;
   if (buildCounterAddressAggregatedList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2295(o.items);
+    checkUnnamed2293(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -579,14 +579,14 @@
   buildCounterAddressAggregatedList--;
 }
 
-buildUnnamed2297() {
+buildUnnamed2295() {
   var o = new core.List<api.Address>();
   o.add(buildAddress());
   o.add(buildAddress());
   return o;
 }
 
-checkUnnamed2297(core.List<api.Address> o) {
+checkUnnamed2295(core.List<api.Address> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAddress(o[0]);
   checkAddress(o[1]);
@@ -613,14 +613,14 @@
   buildCounterAddressListWarningData--;
 }
 
-buildUnnamed2298() {
+buildUnnamed2296() {
   var o = new core.List<api.AddressListWarningData>();
   o.add(buildAddressListWarningData());
   o.add(buildAddressListWarningData());
   return o;
 }
 
-checkUnnamed2298(core.List<api.AddressListWarningData> o) {
+checkUnnamed2296(core.List<api.AddressListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAddressListWarningData(o[0]);
   checkAddressListWarningData(o[1]);
@@ -632,7 +632,7 @@
   buildCounterAddressListWarning++;
   if (buildCounterAddressListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2298();
+    o.data = buildUnnamed2296();
     o.message = "foo";
   }
   buildCounterAddressListWarning--;
@@ -643,7 +643,7 @@
   buildCounterAddressListWarning++;
   if (buildCounterAddressListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2298(o.data);
+    checkUnnamed2296(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterAddressListWarning--;
@@ -655,7 +655,7 @@
   buildCounterAddressList++;
   if (buildCounterAddressList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2297();
+    o.items = buildUnnamed2295();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -669,7 +669,7 @@
   buildCounterAddressList++;
   if (buildCounterAddressList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2297(o.items);
+    checkUnnamed2295(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -678,14 +678,14 @@
   buildCounterAddressList--;
 }
 
-buildUnnamed2299() {
+buildUnnamed2297() {
   var o = new core.List<api.Address>();
   o.add(buildAddress());
   o.add(buildAddress());
   return o;
 }
 
-checkUnnamed2299(core.List<api.Address> o) {
+checkUnnamed2297(core.List<api.Address> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAddress(o[0]);
   checkAddress(o[1]);
@@ -712,14 +712,14 @@
   buildCounterAddressesScopedListWarningData--;
 }
 
-buildUnnamed2300() {
+buildUnnamed2298() {
   var o = new core.List<api.AddressesScopedListWarningData>();
   o.add(buildAddressesScopedListWarningData());
   o.add(buildAddressesScopedListWarningData());
   return o;
 }
 
-checkUnnamed2300(core.List<api.AddressesScopedListWarningData> o) {
+checkUnnamed2298(core.List<api.AddressesScopedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAddressesScopedListWarningData(o[0]);
   checkAddressesScopedListWarningData(o[1]);
@@ -731,7 +731,7 @@
   buildCounterAddressesScopedListWarning++;
   if (buildCounterAddressesScopedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2300();
+    o.data = buildUnnamed2298();
     o.message = "foo";
   }
   buildCounterAddressesScopedListWarning--;
@@ -742,7 +742,7 @@
   buildCounterAddressesScopedListWarning++;
   if (buildCounterAddressesScopedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2300(o.data);
+    checkUnnamed2298(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterAddressesScopedListWarning--;
@@ -753,7 +753,7 @@
   var o = new api.AddressesScopedList();
   buildCounterAddressesScopedList++;
   if (buildCounterAddressesScopedList < 3) {
-    o.addresses = buildUnnamed2299();
+    o.addresses = buildUnnamed2297();
     o.warning = buildAddressesScopedListWarning();
   }
   buildCounterAddressesScopedList--;
@@ -763,7 +763,7 @@
 checkAddressesScopedList(api.AddressesScopedList o) {
   buildCounterAddressesScopedList++;
   if (buildCounterAddressesScopedList < 3) {
-    checkUnnamed2299(o.addresses);
+    checkUnnamed2297(o.addresses);
     checkAddressesScopedListWarning(o.warning);
   }
   buildCounterAddressesScopedList--;
@@ -790,14 +790,14 @@
   buildCounterAliasIpRange--;
 }
 
-buildUnnamed2301() {
+buildUnnamed2299() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2301(core.List<core.String> o) {
+checkUnnamed2299(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -816,7 +816,7 @@
     o.initializeParams = buildAttachedDiskInitializeParams();
     o.interface = "foo";
     o.kind = "foo";
-    o.licenses = buildUnnamed2301();
+    o.licenses = buildUnnamed2299();
     o.mode = "foo";
     o.source = "foo";
     o.type = "foo";
@@ -836,7 +836,7 @@
     checkAttachedDiskInitializeParams(o.initializeParams);
     unittest.expect(o.interface, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2301(o.licenses);
+    checkUnnamed2299(o.licenses);
     unittest.expect(o.mode, unittest.equals('foo'));
     unittest.expect(o.source, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
@@ -871,14 +871,14 @@
   buildCounterAttachedDiskInitializeParams--;
 }
 
-buildUnnamed2302() {
+buildUnnamed2300() {
   var o = new core.List<api.AutoscalerStatusDetails>();
   o.add(buildAutoscalerStatusDetails());
   o.add(buildAutoscalerStatusDetails());
   return o;
 }
 
-checkUnnamed2302(core.List<api.AutoscalerStatusDetails> o) {
+checkUnnamed2300(core.List<api.AutoscalerStatusDetails> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAutoscalerStatusDetails(o[0]);
   checkAutoscalerStatusDetails(o[1]);
@@ -898,7 +898,7 @@
     o.region = "foo";
     o.selfLink = "foo";
     o.status = "foo";
-    o.statusDetails = buildUnnamed2302();
+    o.statusDetails = buildUnnamed2300();
     o.target = "foo";
     o.zone = "foo";
   }
@@ -918,21 +918,21 @@
     unittest.expect(o.region, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals('foo'));
-    checkUnnamed2302(o.statusDetails);
+    checkUnnamed2300(o.statusDetails);
     unittest.expect(o.target, unittest.equals('foo'));
     unittest.expect(o.zone, unittest.equals('foo'));
   }
   buildCounterAutoscaler--;
 }
 
-buildUnnamed2303() {
+buildUnnamed2301() {
   var o = new core.Map<core.String, api.AutoscalersScopedList>();
   o["x"] = buildAutoscalersScopedList();
   o["y"] = buildAutoscalersScopedList();
   return o;
 }
 
-checkUnnamed2303(core.Map<core.String, api.AutoscalersScopedList> o) {
+checkUnnamed2301(core.Map<core.String, api.AutoscalersScopedList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAutoscalersScopedList(o["x"]);
   checkAutoscalersScopedList(o["y"]);
@@ -960,14 +960,14 @@
   buildCounterAutoscalerAggregatedListWarningData--;
 }
 
-buildUnnamed2304() {
+buildUnnamed2302() {
   var o = new core.List<api.AutoscalerAggregatedListWarningData>();
   o.add(buildAutoscalerAggregatedListWarningData());
   o.add(buildAutoscalerAggregatedListWarningData());
   return o;
 }
 
-checkUnnamed2304(core.List<api.AutoscalerAggregatedListWarningData> o) {
+checkUnnamed2302(core.List<api.AutoscalerAggregatedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAutoscalerAggregatedListWarningData(o[0]);
   checkAutoscalerAggregatedListWarningData(o[1]);
@@ -979,7 +979,7 @@
   buildCounterAutoscalerAggregatedListWarning++;
   if (buildCounterAutoscalerAggregatedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2304();
+    o.data = buildUnnamed2302();
     o.message = "foo";
   }
   buildCounterAutoscalerAggregatedListWarning--;
@@ -990,7 +990,7 @@
   buildCounterAutoscalerAggregatedListWarning++;
   if (buildCounterAutoscalerAggregatedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2304(o.data);
+    checkUnnamed2302(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterAutoscalerAggregatedListWarning--;
@@ -1002,7 +1002,7 @@
   buildCounterAutoscalerAggregatedList++;
   if (buildCounterAutoscalerAggregatedList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2303();
+    o.items = buildUnnamed2301();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -1016,7 +1016,7 @@
   buildCounterAutoscalerAggregatedList++;
   if (buildCounterAutoscalerAggregatedList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2303(o.items);
+    checkUnnamed2301(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -1025,14 +1025,14 @@
   buildCounterAutoscalerAggregatedList--;
 }
 
-buildUnnamed2305() {
+buildUnnamed2303() {
   var o = new core.List<api.Autoscaler>();
   o.add(buildAutoscaler());
   o.add(buildAutoscaler());
   return o;
 }
 
-checkUnnamed2305(core.List<api.Autoscaler> o) {
+checkUnnamed2303(core.List<api.Autoscaler> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAutoscaler(o[0]);
   checkAutoscaler(o[1]);
@@ -1059,14 +1059,14 @@
   buildCounterAutoscalerListWarningData--;
 }
 
-buildUnnamed2306() {
+buildUnnamed2304() {
   var o = new core.List<api.AutoscalerListWarningData>();
   o.add(buildAutoscalerListWarningData());
   o.add(buildAutoscalerListWarningData());
   return o;
 }
 
-checkUnnamed2306(core.List<api.AutoscalerListWarningData> o) {
+checkUnnamed2304(core.List<api.AutoscalerListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAutoscalerListWarningData(o[0]);
   checkAutoscalerListWarningData(o[1]);
@@ -1078,7 +1078,7 @@
   buildCounterAutoscalerListWarning++;
   if (buildCounterAutoscalerListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2306();
+    o.data = buildUnnamed2304();
     o.message = "foo";
   }
   buildCounterAutoscalerListWarning--;
@@ -1089,7 +1089,7 @@
   buildCounterAutoscalerListWarning++;
   if (buildCounterAutoscalerListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2306(o.data);
+    checkUnnamed2304(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterAutoscalerListWarning--;
@@ -1101,7 +1101,7 @@
   buildCounterAutoscalerList++;
   if (buildCounterAutoscalerList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2305();
+    o.items = buildUnnamed2303();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -1115,7 +1115,7 @@
   buildCounterAutoscalerList++;
   if (buildCounterAutoscalerList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2305(o.items);
+    checkUnnamed2303(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -1145,14 +1145,14 @@
   buildCounterAutoscalerStatusDetails--;
 }
 
-buildUnnamed2307() {
+buildUnnamed2305() {
   var o = new core.List<api.Autoscaler>();
   o.add(buildAutoscaler());
   o.add(buildAutoscaler());
   return o;
 }
 
-checkUnnamed2307(core.List<api.Autoscaler> o) {
+checkUnnamed2305(core.List<api.Autoscaler> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAutoscaler(o[0]);
   checkAutoscaler(o[1]);
@@ -1179,14 +1179,14 @@
   buildCounterAutoscalersScopedListWarningData--;
 }
 
-buildUnnamed2308() {
+buildUnnamed2306() {
   var o = new core.List<api.AutoscalersScopedListWarningData>();
   o.add(buildAutoscalersScopedListWarningData());
   o.add(buildAutoscalersScopedListWarningData());
   return o;
 }
 
-checkUnnamed2308(core.List<api.AutoscalersScopedListWarningData> o) {
+checkUnnamed2306(core.List<api.AutoscalersScopedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAutoscalersScopedListWarningData(o[0]);
   checkAutoscalersScopedListWarningData(o[1]);
@@ -1198,7 +1198,7 @@
   buildCounterAutoscalersScopedListWarning++;
   if (buildCounterAutoscalersScopedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2308();
+    o.data = buildUnnamed2306();
     o.message = "foo";
   }
   buildCounterAutoscalersScopedListWarning--;
@@ -1209,7 +1209,7 @@
   buildCounterAutoscalersScopedListWarning++;
   if (buildCounterAutoscalersScopedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2308(o.data);
+    checkUnnamed2306(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterAutoscalersScopedListWarning--;
@@ -1220,7 +1220,7 @@
   var o = new api.AutoscalersScopedList();
   buildCounterAutoscalersScopedList++;
   if (buildCounterAutoscalersScopedList < 3) {
-    o.autoscalers = buildUnnamed2307();
+    o.autoscalers = buildUnnamed2305();
     o.warning = buildAutoscalersScopedListWarning();
   }
   buildCounterAutoscalersScopedList--;
@@ -1230,20 +1230,20 @@
 checkAutoscalersScopedList(api.AutoscalersScopedList o) {
   buildCounterAutoscalersScopedList++;
   if (buildCounterAutoscalersScopedList < 3) {
-    checkUnnamed2307(o.autoscalers);
+    checkUnnamed2305(o.autoscalers);
     checkAutoscalersScopedListWarning(o.warning);
   }
   buildCounterAutoscalersScopedList--;
 }
 
-buildUnnamed2309() {
+buildUnnamed2307() {
   var o = new core.List<api.AutoscalingPolicyCustomMetricUtilization>();
   o.add(buildAutoscalingPolicyCustomMetricUtilization());
   o.add(buildAutoscalingPolicyCustomMetricUtilization());
   return o;
 }
 
-checkUnnamed2309(core.List<api.AutoscalingPolicyCustomMetricUtilization> o) {
+checkUnnamed2307(core.List<api.AutoscalingPolicyCustomMetricUtilization> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAutoscalingPolicyCustomMetricUtilization(o[0]);
   checkAutoscalingPolicyCustomMetricUtilization(o[1]);
@@ -1256,7 +1256,7 @@
   if (buildCounterAutoscalingPolicy < 3) {
     o.coolDownPeriodSec = 42;
     o.cpuUtilization = buildAutoscalingPolicyCpuUtilization();
-    o.customMetricUtilizations = buildUnnamed2309();
+    o.customMetricUtilizations = buildUnnamed2307();
     o.loadBalancingUtilization =
         buildAutoscalingPolicyLoadBalancingUtilization();
     o.maxNumReplicas = 42;
@@ -1271,7 +1271,7 @@
   if (buildCounterAutoscalingPolicy < 3) {
     unittest.expect(o.coolDownPeriodSec, unittest.equals(42));
     checkAutoscalingPolicyCpuUtilization(o.cpuUtilization);
-    checkUnnamed2309(o.customMetricUtilizations);
+    checkUnnamed2307(o.customMetricUtilizations);
     checkAutoscalingPolicyLoadBalancingUtilization(o.loadBalancingUtilization);
     unittest.expect(o.maxNumReplicas, unittest.equals(42));
     unittest.expect(o.minNumReplicas, unittest.equals(42));
@@ -1410,14 +1410,14 @@
   buildCounterBackendBucket--;
 }
 
-buildUnnamed2310() {
+buildUnnamed2308() {
   var o = new core.List<api.BackendBucket>();
   o.add(buildBackendBucket());
   o.add(buildBackendBucket());
   return o;
 }
 
-checkUnnamed2310(core.List<api.BackendBucket> o) {
+checkUnnamed2308(core.List<api.BackendBucket> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBackendBucket(o[0]);
   checkBackendBucket(o[1]);
@@ -1444,14 +1444,14 @@
   buildCounterBackendBucketListWarningData--;
 }
 
-buildUnnamed2311() {
+buildUnnamed2309() {
   var o = new core.List<api.BackendBucketListWarningData>();
   o.add(buildBackendBucketListWarningData());
   o.add(buildBackendBucketListWarningData());
   return o;
 }
 
-checkUnnamed2311(core.List<api.BackendBucketListWarningData> o) {
+checkUnnamed2309(core.List<api.BackendBucketListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBackendBucketListWarningData(o[0]);
   checkBackendBucketListWarningData(o[1]);
@@ -1463,7 +1463,7 @@
   buildCounterBackendBucketListWarning++;
   if (buildCounterBackendBucketListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2311();
+    o.data = buildUnnamed2309();
     o.message = "foo";
   }
   buildCounterBackendBucketListWarning--;
@@ -1474,7 +1474,7 @@
   buildCounterBackendBucketListWarning++;
   if (buildCounterBackendBucketListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2311(o.data);
+    checkUnnamed2309(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterBackendBucketListWarning--;
@@ -1486,7 +1486,7 @@
   buildCounterBackendBucketList++;
   if (buildCounterBackendBucketList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2310();
+    o.items = buildUnnamed2308();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -1500,7 +1500,7 @@
   buildCounterBackendBucketList++;
   if (buildCounterBackendBucketList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2310(o.items);
+    checkUnnamed2308(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -1509,27 +1509,27 @@
   buildCounterBackendBucketList--;
 }
 
-buildUnnamed2312() {
+buildUnnamed2310() {
   var o = new core.List<api.Backend>();
   o.add(buildBackend());
   o.add(buildBackend());
   return o;
 }
 
-checkUnnamed2312(core.List<api.Backend> o) {
+checkUnnamed2310(core.List<api.Backend> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBackend(o[0]);
   checkBackend(o[1]);
 }
 
-buildUnnamed2313() {
+buildUnnamed2311() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2313(core.List<core.String> o) {
+checkUnnamed2311(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1541,14 +1541,14 @@
   buildCounterBackendService++;
   if (buildCounterBackendService < 3) {
     o.affinityCookieTtlSec = 42;
-    o.backends = buildUnnamed2312();
+    o.backends = buildUnnamed2310();
     o.cdnPolicy = buildBackendServiceCdnPolicy();
     o.connectionDraining = buildConnectionDraining();
     o.creationTimestamp = "foo";
     o.description = "foo";
     o.enableCDN = true;
     o.fingerprint = "foo";
-    o.healthChecks = buildUnnamed2313();
+    o.healthChecks = buildUnnamed2311();
     o.iap = buildBackendServiceIAP();
     o.id = "foo";
     o.kind = "foo";
@@ -1570,14 +1570,14 @@
   buildCounterBackendService++;
   if (buildCounterBackendService < 3) {
     unittest.expect(o.affinityCookieTtlSec, unittest.equals(42));
-    checkUnnamed2312(o.backends);
+    checkUnnamed2310(o.backends);
     checkBackendServiceCdnPolicy(o.cdnPolicy);
     checkConnectionDraining(o.connectionDraining);
     unittest.expect(o.creationTimestamp, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.enableCDN, unittest.isTrue);
     unittest.expect(o.fingerprint, unittest.equals('foo'));
-    checkUnnamed2313(o.healthChecks);
+    checkUnnamed2311(o.healthChecks);
     checkBackendServiceIAP(o.iap);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
@@ -1594,14 +1594,14 @@
   buildCounterBackendService--;
 }
 
-buildUnnamed2314() {
+buildUnnamed2312() {
   var o = new core.Map<core.String, api.BackendServicesScopedList>();
   o["x"] = buildBackendServicesScopedList();
   o["y"] = buildBackendServicesScopedList();
   return o;
 }
 
-checkUnnamed2314(core.Map<core.String, api.BackendServicesScopedList> o) {
+checkUnnamed2312(core.Map<core.String, api.BackendServicesScopedList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBackendServicesScopedList(o["x"]);
   checkBackendServicesScopedList(o["y"]);
@@ -1629,14 +1629,14 @@
   buildCounterBackendServiceAggregatedListWarningData--;
 }
 
-buildUnnamed2315() {
+buildUnnamed2313() {
   var o = new core.List<api.BackendServiceAggregatedListWarningData>();
   o.add(buildBackendServiceAggregatedListWarningData());
   o.add(buildBackendServiceAggregatedListWarningData());
   return o;
 }
 
-checkUnnamed2315(core.List<api.BackendServiceAggregatedListWarningData> o) {
+checkUnnamed2313(core.List<api.BackendServiceAggregatedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBackendServiceAggregatedListWarningData(o[0]);
   checkBackendServiceAggregatedListWarningData(o[1]);
@@ -1648,7 +1648,7 @@
   buildCounterBackendServiceAggregatedListWarning++;
   if (buildCounterBackendServiceAggregatedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2315();
+    o.data = buildUnnamed2313();
     o.message = "foo";
   }
   buildCounterBackendServiceAggregatedListWarning--;
@@ -1660,7 +1660,7 @@
   buildCounterBackendServiceAggregatedListWarning++;
   if (buildCounterBackendServiceAggregatedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2315(o.data);
+    checkUnnamed2313(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterBackendServiceAggregatedListWarning--;
@@ -1672,7 +1672,7 @@
   buildCounterBackendServiceAggregatedList++;
   if (buildCounterBackendServiceAggregatedList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2314();
+    o.items = buildUnnamed2312();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -1686,7 +1686,7 @@
   buildCounterBackendServiceAggregatedList++;
   if (buildCounterBackendServiceAggregatedList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2314(o.items);
+    checkUnnamed2312(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -1714,14 +1714,14 @@
   buildCounterBackendServiceCdnPolicy--;
 }
 
-buildUnnamed2316() {
+buildUnnamed2314() {
   var o = new core.List<api.HealthStatus>();
   o.add(buildHealthStatus());
   o.add(buildHealthStatus());
   return o;
 }
 
-checkUnnamed2316(core.List<api.HealthStatus> o) {
+checkUnnamed2314(core.List<api.HealthStatus> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHealthStatus(o[0]);
   checkHealthStatus(o[1]);
@@ -1732,7 +1732,7 @@
   var o = new api.BackendServiceGroupHealth();
   buildCounterBackendServiceGroupHealth++;
   if (buildCounterBackendServiceGroupHealth < 3) {
-    o.healthStatus = buildUnnamed2316();
+    o.healthStatus = buildUnnamed2314();
     o.kind = "foo";
   }
   buildCounterBackendServiceGroupHealth--;
@@ -1742,7 +1742,7 @@
 checkBackendServiceGroupHealth(api.BackendServiceGroupHealth o) {
   buildCounterBackendServiceGroupHealth++;
   if (buildCounterBackendServiceGroupHealth < 3) {
-    checkUnnamed2316(o.healthStatus);
+    checkUnnamed2314(o.healthStatus);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterBackendServiceGroupHealth--;
@@ -1773,14 +1773,14 @@
   buildCounterBackendServiceIAP--;
 }
 
-buildUnnamed2317() {
+buildUnnamed2315() {
   var o = new core.List<api.BackendService>();
   o.add(buildBackendService());
   o.add(buildBackendService());
   return o;
 }
 
-checkUnnamed2317(core.List<api.BackendService> o) {
+checkUnnamed2315(core.List<api.BackendService> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBackendService(o[0]);
   checkBackendService(o[1]);
@@ -1807,14 +1807,14 @@
   buildCounterBackendServiceListWarningData--;
 }
 
-buildUnnamed2318() {
+buildUnnamed2316() {
   var o = new core.List<api.BackendServiceListWarningData>();
   o.add(buildBackendServiceListWarningData());
   o.add(buildBackendServiceListWarningData());
   return o;
 }
 
-checkUnnamed2318(core.List<api.BackendServiceListWarningData> o) {
+checkUnnamed2316(core.List<api.BackendServiceListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBackendServiceListWarningData(o[0]);
   checkBackendServiceListWarningData(o[1]);
@@ -1826,7 +1826,7 @@
   buildCounterBackendServiceListWarning++;
   if (buildCounterBackendServiceListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2318();
+    o.data = buildUnnamed2316();
     o.message = "foo";
   }
   buildCounterBackendServiceListWarning--;
@@ -1837,7 +1837,7 @@
   buildCounterBackendServiceListWarning++;
   if (buildCounterBackendServiceListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2318(o.data);
+    checkUnnamed2316(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterBackendServiceListWarning--;
@@ -1849,7 +1849,7 @@
   buildCounterBackendServiceList++;
   if (buildCounterBackendServiceList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2317();
+    o.items = buildUnnamed2315();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -1863,7 +1863,7 @@
   buildCounterBackendServiceList++;
   if (buildCounterBackendServiceList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2317(o.items);
+    checkUnnamed2315(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -1872,14 +1872,14 @@
   buildCounterBackendServiceList--;
 }
 
-buildUnnamed2319() {
+buildUnnamed2317() {
   var o = new core.List<api.BackendService>();
   o.add(buildBackendService());
   o.add(buildBackendService());
   return o;
 }
 
-checkUnnamed2319(core.List<api.BackendService> o) {
+checkUnnamed2317(core.List<api.BackendService> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBackendService(o[0]);
   checkBackendService(o[1]);
@@ -1907,14 +1907,14 @@
   buildCounterBackendServicesScopedListWarningData--;
 }
 
-buildUnnamed2320() {
+buildUnnamed2318() {
   var o = new core.List<api.BackendServicesScopedListWarningData>();
   o.add(buildBackendServicesScopedListWarningData());
   o.add(buildBackendServicesScopedListWarningData());
   return o;
 }
 
-checkUnnamed2320(core.List<api.BackendServicesScopedListWarningData> o) {
+checkUnnamed2318(core.List<api.BackendServicesScopedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBackendServicesScopedListWarningData(o[0]);
   checkBackendServicesScopedListWarningData(o[1]);
@@ -1926,7 +1926,7 @@
   buildCounterBackendServicesScopedListWarning++;
   if (buildCounterBackendServicesScopedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2320();
+    o.data = buildUnnamed2318();
     o.message = "foo";
   }
   buildCounterBackendServicesScopedListWarning--;
@@ -1937,7 +1937,7 @@
   buildCounterBackendServicesScopedListWarning++;
   if (buildCounterBackendServicesScopedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2320(o.data);
+    checkUnnamed2318(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterBackendServicesScopedListWarning--;
@@ -1948,7 +1948,7 @@
   var o = new api.BackendServicesScopedList();
   buildCounterBackendServicesScopedList++;
   if (buildCounterBackendServicesScopedList < 3) {
-    o.backendServices = buildUnnamed2319();
+    o.backendServices = buildUnnamed2317();
     o.warning = buildBackendServicesScopedListWarning();
   }
   buildCounterBackendServicesScopedList--;
@@ -1958,7 +1958,7 @@
 checkBackendServicesScopedList(api.BackendServicesScopedList o) {
   buildCounterBackendServicesScopedList++;
   if (buildCounterBackendServicesScopedList < 3) {
-    checkUnnamed2319(o.backendServices);
+    checkUnnamed2317(o.backendServices);
     checkBackendServicesScopedListWarning(o.warning);
   }
   buildCounterBackendServicesScopedList--;
@@ -1985,27 +1985,27 @@
   buildCounterCacheInvalidationRule--;
 }
 
-buildUnnamed2321() {
+buildUnnamed2319() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2321(core.List<core.String> o) {
+checkUnnamed2319(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2322() {
+buildUnnamed2320() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2322(core.List<core.String> o) {
+checkUnnamed2320(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2019,8 +2019,8 @@
     o.includeHost = true;
     o.includeProtocol = true;
     o.includeQueryString = true;
-    o.queryStringBlacklist = buildUnnamed2321();
-    o.queryStringWhitelist = buildUnnamed2322();
+    o.queryStringBlacklist = buildUnnamed2319();
+    o.queryStringWhitelist = buildUnnamed2320();
   }
   buildCounterCacheKeyPolicy--;
   return o;
@@ -2032,20 +2032,20 @@
     unittest.expect(o.includeHost, unittest.isTrue);
     unittest.expect(o.includeProtocol, unittest.isTrue);
     unittest.expect(o.includeQueryString, unittest.isTrue);
-    checkUnnamed2321(o.queryStringBlacklist);
-    checkUnnamed2322(o.queryStringWhitelist);
+    checkUnnamed2319(o.queryStringBlacklist);
+    checkUnnamed2320(o.queryStringWhitelist);
   }
   buildCounterCacheKeyPolicy--;
 }
 
-buildUnnamed2323() {
+buildUnnamed2321() {
   var o = new core.List<api.ResourceCommitment>();
   o.add(buildResourceCommitment());
   o.add(buildResourceCommitment());
   return o;
 }
 
-checkUnnamed2323(core.List<api.ResourceCommitment> o) {
+checkUnnamed2321(core.List<api.ResourceCommitment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceCommitment(o[0]);
   checkResourceCommitment(o[1]);
@@ -2064,7 +2064,7 @@
     o.name = "foo";
     o.plan = "foo";
     o.region = "foo";
-    o.resources = buildUnnamed2323();
+    o.resources = buildUnnamed2321();
     o.selfLink = "foo";
     o.startTimestamp = "foo";
     o.status = "foo";
@@ -2085,7 +2085,7 @@
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.plan, unittest.equals('foo'));
     unittest.expect(o.region, unittest.equals('foo'));
-    checkUnnamed2323(o.resources);
+    checkUnnamed2321(o.resources);
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.startTimestamp, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals('foo'));
@@ -2094,14 +2094,14 @@
   buildCounterCommitment--;
 }
 
-buildUnnamed2324() {
+buildUnnamed2322() {
   var o = new core.Map<core.String, api.CommitmentsScopedList>();
   o["x"] = buildCommitmentsScopedList();
   o["y"] = buildCommitmentsScopedList();
   return o;
 }
 
-checkUnnamed2324(core.Map<core.String, api.CommitmentsScopedList> o) {
+checkUnnamed2322(core.Map<core.String, api.CommitmentsScopedList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCommitmentsScopedList(o["x"]);
   checkCommitmentsScopedList(o["y"]);
@@ -2129,14 +2129,14 @@
   buildCounterCommitmentAggregatedListWarningData--;
 }
 
-buildUnnamed2325() {
+buildUnnamed2323() {
   var o = new core.List<api.CommitmentAggregatedListWarningData>();
   o.add(buildCommitmentAggregatedListWarningData());
   o.add(buildCommitmentAggregatedListWarningData());
   return o;
 }
 
-checkUnnamed2325(core.List<api.CommitmentAggregatedListWarningData> o) {
+checkUnnamed2323(core.List<api.CommitmentAggregatedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCommitmentAggregatedListWarningData(o[0]);
   checkCommitmentAggregatedListWarningData(o[1]);
@@ -2148,7 +2148,7 @@
   buildCounterCommitmentAggregatedListWarning++;
   if (buildCounterCommitmentAggregatedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2325();
+    o.data = buildUnnamed2323();
     o.message = "foo";
   }
   buildCounterCommitmentAggregatedListWarning--;
@@ -2159,7 +2159,7 @@
   buildCounterCommitmentAggregatedListWarning++;
   if (buildCounterCommitmentAggregatedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2325(o.data);
+    checkUnnamed2323(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterCommitmentAggregatedListWarning--;
@@ -2171,7 +2171,7 @@
   buildCounterCommitmentAggregatedList++;
   if (buildCounterCommitmentAggregatedList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2324();
+    o.items = buildUnnamed2322();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -2185,7 +2185,7 @@
   buildCounterCommitmentAggregatedList++;
   if (buildCounterCommitmentAggregatedList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2324(o.items);
+    checkUnnamed2322(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -2194,14 +2194,14 @@
   buildCounterCommitmentAggregatedList--;
 }
 
-buildUnnamed2326() {
+buildUnnamed2324() {
   var o = new core.List<api.Commitment>();
   o.add(buildCommitment());
   o.add(buildCommitment());
   return o;
 }
 
-checkUnnamed2326(core.List<api.Commitment> o) {
+checkUnnamed2324(core.List<api.Commitment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCommitment(o[0]);
   checkCommitment(o[1]);
@@ -2228,14 +2228,14 @@
   buildCounterCommitmentListWarningData--;
 }
 
-buildUnnamed2327() {
+buildUnnamed2325() {
   var o = new core.List<api.CommitmentListWarningData>();
   o.add(buildCommitmentListWarningData());
   o.add(buildCommitmentListWarningData());
   return o;
 }
 
-checkUnnamed2327(core.List<api.CommitmentListWarningData> o) {
+checkUnnamed2325(core.List<api.CommitmentListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCommitmentListWarningData(o[0]);
   checkCommitmentListWarningData(o[1]);
@@ -2247,7 +2247,7 @@
   buildCounterCommitmentListWarning++;
   if (buildCounterCommitmentListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2327();
+    o.data = buildUnnamed2325();
     o.message = "foo";
   }
   buildCounterCommitmentListWarning--;
@@ -2258,7 +2258,7 @@
   buildCounterCommitmentListWarning++;
   if (buildCounterCommitmentListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2327(o.data);
+    checkUnnamed2325(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterCommitmentListWarning--;
@@ -2270,7 +2270,7 @@
   buildCounterCommitmentList++;
   if (buildCounterCommitmentList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2326();
+    o.items = buildUnnamed2324();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -2284,7 +2284,7 @@
   buildCounterCommitmentList++;
   if (buildCounterCommitmentList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2326(o.items);
+    checkUnnamed2324(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -2293,14 +2293,14 @@
   buildCounterCommitmentList--;
 }
 
-buildUnnamed2328() {
+buildUnnamed2326() {
   var o = new core.List<api.Commitment>();
   o.add(buildCommitment());
   o.add(buildCommitment());
   return o;
 }
 
-checkUnnamed2328(core.List<api.Commitment> o) {
+checkUnnamed2326(core.List<api.Commitment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCommitment(o[0]);
   checkCommitment(o[1]);
@@ -2327,14 +2327,14 @@
   buildCounterCommitmentsScopedListWarningData--;
 }
 
-buildUnnamed2329() {
+buildUnnamed2327() {
   var o = new core.List<api.CommitmentsScopedListWarningData>();
   o.add(buildCommitmentsScopedListWarningData());
   o.add(buildCommitmentsScopedListWarningData());
   return o;
 }
 
-checkUnnamed2329(core.List<api.CommitmentsScopedListWarningData> o) {
+checkUnnamed2327(core.List<api.CommitmentsScopedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCommitmentsScopedListWarningData(o[0]);
   checkCommitmentsScopedListWarningData(o[1]);
@@ -2346,7 +2346,7 @@
   buildCounterCommitmentsScopedListWarning++;
   if (buildCounterCommitmentsScopedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2329();
+    o.data = buildUnnamed2327();
     o.message = "foo";
   }
   buildCounterCommitmentsScopedListWarning--;
@@ -2357,7 +2357,7 @@
   buildCounterCommitmentsScopedListWarning++;
   if (buildCounterCommitmentsScopedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2329(o.data);
+    checkUnnamed2327(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterCommitmentsScopedListWarning--;
@@ -2368,7 +2368,7 @@
   var o = new api.CommitmentsScopedList();
   buildCounterCommitmentsScopedList++;
   if (buildCounterCommitmentsScopedList < 3) {
-    o.commitments = buildUnnamed2328();
+    o.commitments = buildUnnamed2326();
     o.warning = buildCommitmentsScopedListWarning();
   }
   buildCounterCommitmentsScopedList--;
@@ -2378,7 +2378,7 @@
 checkCommitmentsScopedList(api.CommitmentsScopedList o) {
   buildCounterCommitmentsScopedList++;
   if (buildCounterCommitmentsScopedList < 3) {
-    checkUnnamed2328(o.commitments);
+    checkUnnamed2326(o.commitments);
     checkCommitmentsScopedListWarning(o.warning);
   }
   buildCounterCommitmentsScopedList--;
@@ -2473,40 +2473,40 @@
   buildCounterDeprecationStatus--;
 }
 
-buildUnnamed2330() {
+buildUnnamed2328() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed2330(core.Map<core.String, core.String> o) {
+checkUnnamed2328(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed2331() {
+buildUnnamed2329() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2331(core.List<core.String> o) {
+checkUnnamed2329(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2332() {
+buildUnnamed2330() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2332(core.List<core.String> o) {
+checkUnnamed2330(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2523,10 +2523,10 @@
     o.id = "foo";
     o.kind = "foo";
     o.labelFingerprint = "foo";
-    o.labels = buildUnnamed2330();
+    o.labels = buildUnnamed2328();
     o.lastAttachTimestamp = "foo";
     o.lastDetachTimestamp = "foo";
-    o.licenses = buildUnnamed2331();
+    o.licenses = buildUnnamed2329();
     o.name = "foo";
     o.options = "foo";
     o.selfLink = "foo";
@@ -2539,7 +2539,7 @@
     o.sourceSnapshotId = "foo";
     o.status = "foo";
     o.type = "foo";
-    o.users = buildUnnamed2332();
+    o.users = buildUnnamed2330();
     o.zone = "foo";
   }
   buildCounterDisk--;
@@ -2555,10 +2555,10 @@
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.labelFingerprint, unittest.equals('foo'));
-    checkUnnamed2330(o.labels);
+    checkUnnamed2328(o.labels);
     unittest.expect(o.lastAttachTimestamp, unittest.equals('foo'));
     unittest.expect(o.lastDetachTimestamp, unittest.equals('foo'));
-    checkUnnamed2331(o.licenses);
+    checkUnnamed2329(o.licenses);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.options, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -2571,20 +2571,20 @@
     unittest.expect(o.sourceSnapshotId, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
-    checkUnnamed2332(o.users);
+    checkUnnamed2330(o.users);
     unittest.expect(o.zone, unittest.equals('foo'));
   }
   buildCounterDisk--;
 }
 
-buildUnnamed2333() {
+buildUnnamed2331() {
   var o = new core.Map<core.String, api.DisksScopedList>();
   o["x"] = buildDisksScopedList();
   o["y"] = buildDisksScopedList();
   return o;
 }
 
-checkUnnamed2333(core.Map<core.String, api.DisksScopedList> o) {
+checkUnnamed2331(core.Map<core.String, api.DisksScopedList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDisksScopedList(o["x"]);
   checkDisksScopedList(o["y"]);
@@ -2611,14 +2611,14 @@
   buildCounterDiskAggregatedListWarningData--;
 }
 
-buildUnnamed2334() {
+buildUnnamed2332() {
   var o = new core.List<api.DiskAggregatedListWarningData>();
   o.add(buildDiskAggregatedListWarningData());
   o.add(buildDiskAggregatedListWarningData());
   return o;
 }
 
-checkUnnamed2334(core.List<api.DiskAggregatedListWarningData> o) {
+checkUnnamed2332(core.List<api.DiskAggregatedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDiskAggregatedListWarningData(o[0]);
   checkDiskAggregatedListWarningData(o[1]);
@@ -2630,7 +2630,7 @@
   buildCounterDiskAggregatedListWarning++;
   if (buildCounterDiskAggregatedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2334();
+    o.data = buildUnnamed2332();
     o.message = "foo";
   }
   buildCounterDiskAggregatedListWarning--;
@@ -2641,7 +2641,7 @@
   buildCounterDiskAggregatedListWarning++;
   if (buildCounterDiskAggregatedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2334(o.data);
+    checkUnnamed2332(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterDiskAggregatedListWarning--;
@@ -2653,7 +2653,7 @@
   buildCounterDiskAggregatedList++;
   if (buildCounterDiskAggregatedList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2333();
+    o.items = buildUnnamed2331();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -2667,7 +2667,7 @@
   buildCounterDiskAggregatedList++;
   if (buildCounterDiskAggregatedList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2333(o.items);
+    checkUnnamed2331(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -2676,14 +2676,14 @@
   buildCounterDiskAggregatedList--;
 }
 
-buildUnnamed2335() {
+buildUnnamed2333() {
   var o = new core.List<api.Disk>();
   o.add(buildDisk());
   o.add(buildDisk());
   return o;
 }
 
-checkUnnamed2335(core.List<api.Disk> o) {
+checkUnnamed2333(core.List<api.Disk> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDisk(o[0]);
   checkDisk(o[1]);
@@ -2710,14 +2710,14 @@
   buildCounterDiskListWarningData--;
 }
 
-buildUnnamed2336() {
+buildUnnamed2334() {
   var o = new core.List<api.DiskListWarningData>();
   o.add(buildDiskListWarningData());
   o.add(buildDiskListWarningData());
   return o;
 }
 
-checkUnnamed2336(core.List<api.DiskListWarningData> o) {
+checkUnnamed2334(core.List<api.DiskListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDiskListWarningData(o[0]);
   checkDiskListWarningData(o[1]);
@@ -2729,7 +2729,7 @@
   buildCounterDiskListWarning++;
   if (buildCounterDiskListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2336();
+    o.data = buildUnnamed2334();
     o.message = "foo";
   }
   buildCounterDiskListWarning--;
@@ -2740,7 +2740,7 @@
   buildCounterDiskListWarning++;
   if (buildCounterDiskListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2336(o.data);
+    checkUnnamed2334(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterDiskListWarning--;
@@ -2752,7 +2752,7 @@
   buildCounterDiskList++;
   if (buildCounterDiskList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2335();
+    o.items = buildUnnamed2333();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -2766,7 +2766,7 @@
   buildCounterDiskList++;
   if (buildCounterDiskList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2335(o.items);
+    checkUnnamed2333(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -2833,14 +2833,14 @@
   buildCounterDiskType--;
 }
 
-buildUnnamed2337() {
+buildUnnamed2335() {
   var o = new core.Map<core.String, api.DiskTypesScopedList>();
   o["x"] = buildDiskTypesScopedList();
   o["y"] = buildDiskTypesScopedList();
   return o;
 }
 
-checkUnnamed2337(core.Map<core.String, api.DiskTypesScopedList> o) {
+checkUnnamed2335(core.Map<core.String, api.DiskTypesScopedList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDiskTypesScopedList(o["x"]);
   checkDiskTypesScopedList(o["y"]);
@@ -2868,14 +2868,14 @@
   buildCounterDiskTypeAggregatedListWarningData--;
 }
 
-buildUnnamed2338() {
+buildUnnamed2336() {
   var o = new core.List<api.DiskTypeAggregatedListWarningData>();
   o.add(buildDiskTypeAggregatedListWarningData());
   o.add(buildDiskTypeAggregatedListWarningData());
   return o;
 }
 
-checkUnnamed2338(core.List<api.DiskTypeAggregatedListWarningData> o) {
+checkUnnamed2336(core.List<api.DiskTypeAggregatedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDiskTypeAggregatedListWarningData(o[0]);
   checkDiskTypeAggregatedListWarningData(o[1]);
@@ -2887,7 +2887,7 @@
   buildCounterDiskTypeAggregatedListWarning++;
   if (buildCounterDiskTypeAggregatedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2338();
+    o.data = buildUnnamed2336();
     o.message = "foo";
   }
   buildCounterDiskTypeAggregatedListWarning--;
@@ -2898,7 +2898,7 @@
   buildCounterDiskTypeAggregatedListWarning++;
   if (buildCounterDiskTypeAggregatedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2338(o.data);
+    checkUnnamed2336(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterDiskTypeAggregatedListWarning--;
@@ -2910,7 +2910,7 @@
   buildCounterDiskTypeAggregatedList++;
   if (buildCounterDiskTypeAggregatedList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2337();
+    o.items = buildUnnamed2335();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -2924,7 +2924,7 @@
   buildCounterDiskTypeAggregatedList++;
   if (buildCounterDiskTypeAggregatedList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2337(o.items);
+    checkUnnamed2335(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -2933,14 +2933,14 @@
   buildCounterDiskTypeAggregatedList--;
 }
 
-buildUnnamed2339() {
+buildUnnamed2337() {
   var o = new core.List<api.DiskType>();
   o.add(buildDiskType());
   o.add(buildDiskType());
   return o;
 }
 
-checkUnnamed2339(core.List<api.DiskType> o) {
+checkUnnamed2337(core.List<api.DiskType> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDiskType(o[0]);
   checkDiskType(o[1]);
@@ -2967,14 +2967,14 @@
   buildCounterDiskTypeListWarningData--;
 }
 
-buildUnnamed2340() {
+buildUnnamed2338() {
   var o = new core.List<api.DiskTypeListWarningData>();
   o.add(buildDiskTypeListWarningData());
   o.add(buildDiskTypeListWarningData());
   return o;
 }
 
-checkUnnamed2340(core.List<api.DiskTypeListWarningData> o) {
+checkUnnamed2338(core.List<api.DiskTypeListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDiskTypeListWarningData(o[0]);
   checkDiskTypeListWarningData(o[1]);
@@ -2986,7 +2986,7 @@
   buildCounterDiskTypeListWarning++;
   if (buildCounterDiskTypeListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2340();
+    o.data = buildUnnamed2338();
     o.message = "foo";
   }
   buildCounterDiskTypeListWarning--;
@@ -2997,7 +2997,7 @@
   buildCounterDiskTypeListWarning++;
   if (buildCounterDiskTypeListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2340(o.data);
+    checkUnnamed2338(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterDiskTypeListWarning--;
@@ -3009,7 +3009,7 @@
   buildCounterDiskTypeList++;
   if (buildCounterDiskTypeList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2339();
+    o.items = buildUnnamed2337();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -3023,7 +3023,7 @@
   buildCounterDiskTypeList++;
   if (buildCounterDiskTypeList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2339(o.items);
+    checkUnnamed2337(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -3032,14 +3032,14 @@
   buildCounterDiskTypeList--;
 }
 
-buildUnnamed2341() {
+buildUnnamed2339() {
   var o = new core.List<api.DiskType>();
   o.add(buildDiskType());
   o.add(buildDiskType());
   return o;
 }
 
-checkUnnamed2341(core.List<api.DiskType> o) {
+checkUnnamed2339(core.List<api.DiskType> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDiskType(o[0]);
   checkDiskType(o[1]);
@@ -3066,14 +3066,14 @@
   buildCounterDiskTypesScopedListWarningData--;
 }
 
-buildUnnamed2342() {
+buildUnnamed2340() {
   var o = new core.List<api.DiskTypesScopedListWarningData>();
   o.add(buildDiskTypesScopedListWarningData());
   o.add(buildDiskTypesScopedListWarningData());
   return o;
 }
 
-checkUnnamed2342(core.List<api.DiskTypesScopedListWarningData> o) {
+checkUnnamed2340(core.List<api.DiskTypesScopedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDiskTypesScopedListWarningData(o[0]);
   checkDiskTypesScopedListWarningData(o[1]);
@@ -3085,7 +3085,7 @@
   buildCounterDiskTypesScopedListWarning++;
   if (buildCounterDiskTypesScopedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2342();
+    o.data = buildUnnamed2340();
     o.message = "foo";
   }
   buildCounterDiskTypesScopedListWarning--;
@@ -3096,7 +3096,7 @@
   buildCounterDiskTypesScopedListWarning++;
   if (buildCounterDiskTypesScopedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2342(o.data);
+    checkUnnamed2340(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterDiskTypesScopedListWarning--;
@@ -3107,7 +3107,7 @@
   var o = new api.DiskTypesScopedList();
   buildCounterDiskTypesScopedList++;
   if (buildCounterDiskTypesScopedList < 3) {
-    o.diskTypes = buildUnnamed2341();
+    o.diskTypes = buildUnnamed2339();
     o.warning = buildDiskTypesScopedListWarning();
   }
   buildCounterDiskTypesScopedList--;
@@ -3117,7 +3117,7 @@
 checkDiskTypesScopedList(api.DiskTypesScopedList o) {
   buildCounterDiskTypesScopedList++;
   if (buildCounterDiskTypesScopedList < 3) {
-    checkUnnamed2341(o.diskTypes);
+    checkUnnamed2339(o.diskTypes);
     checkDiskTypesScopedListWarning(o.warning);
   }
   buildCounterDiskTypesScopedList--;
@@ -3142,14 +3142,14 @@
   buildCounterDisksResizeRequest--;
 }
 
-buildUnnamed2343() {
+buildUnnamed2341() {
   var o = new core.List<api.Disk>();
   o.add(buildDisk());
   o.add(buildDisk());
   return o;
 }
 
-checkUnnamed2343(core.List<api.Disk> o) {
+checkUnnamed2341(core.List<api.Disk> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDisk(o[0]);
   checkDisk(o[1]);
@@ -3176,14 +3176,14 @@
   buildCounterDisksScopedListWarningData--;
 }
 
-buildUnnamed2344() {
+buildUnnamed2342() {
   var o = new core.List<api.DisksScopedListWarningData>();
   o.add(buildDisksScopedListWarningData());
   o.add(buildDisksScopedListWarningData());
   return o;
 }
 
-checkUnnamed2344(core.List<api.DisksScopedListWarningData> o) {
+checkUnnamed2342(core.List<api.DisksScopedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDisksScopedListWarningData(o[0]);
   checkDisksScopedListWarningData(o[1]);
@@ -3195,7 +3195,7 @@
   buildCounterDisksScopedListWarning++;
   if (buildCounterDisksScopedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2344();
+    o.data = buildUnnamed2342();
     o.message = "foo";
   }
   buildCounterDisksScopedListWarning--;
@@ -3206,7 +3206,7 @@
   buildCounterDisksScopedListWarning++;
   if (buildCounterDisksScopedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2344(o.data);
+    checkUnnamed2342(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterDisksScopedListWarning--;
@@ -3217,7 +3217,7 @@
   var o = new api.DisksScopedList();
   buildCounterDisksScopedList++;
   if (buildCounterDisksScopedList < 3) {
-    o.disks = buildUnnamed2343();
+    o.disks = buildUnnamed2341();
     o.warning = buildDisksScopedListWarning();
   }
   buildCounterDisksScopedList--;
@@ -3227,12 +3227,59 @@
 checkDisksScopedList(api.DisksScopedList o) {
   buildCounterDisksScopedList++;
   if (buildCounterDisksScopedList < 3) {
-    checkUnnamed2343(o.disks);
+    checkUnnamed2341(o.disks);
     checkDisksScopedListWarning(o.warning);
   }
   buildCounterDisksScopedList--;
 }
 
+buildUnnamed2343() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2343(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterFirewallAllowed = 0;
+buildFirewallAllowed() {
+  var o = new api.FirewallAllowed();
+  buildCounterFirewallAllowed++;
+  if (buildCounterFirewallAllowed < 3) {
+    o.IPProtocol = "foo";
+    o.ports = buildUnnamed2343();
+  }
+  buildCounterFirewallAllowed--;
+  return o;
+}
+
+checkFirewallAllowed(api.FirewallAllowed o) {
+  buildCounterFirewallAllowed++;
+  if (buildCounterFirewallAllowed < 3) {
+    unittest.expect(o.IPProtocol, unittest.equals('foo'));
+    checkUnnamed2343(o.ports);
+  }
+  buildCounterFirewallAllowed--;
+}
+
+buildUnnamed2344() {
+  var o = new core.List<api.FirewallAllowed>();
+  o.add(buildFirewallAllowed());
+  o.add(buildFirewallAllowed());
+  return o;
+}
+
+checkUnnamed2344(core.List<api.FirewallAllowed> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFirewallAllowed(o[0]);
+  checkFirewallAllowed(o[1]);
+}
+
 buildUnnamed2345() {
   var o = new core.List<core.String>();
   o.add("foo");
@@ -3246,38 +3293,38 @@
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-core.int buildCounterFirewallAllowed = 0;
-buildFirewallAllowed() {
-  var o = new api.FirewallAllowed();
-  buildCounterFirewallAllowed++;
-  if (buildCounterFirewallAllowed < 3) {
+core.int buildCounterFirewallDenied = 0;
+buildFirewallDenied() {
+  var o = new api.FirewallDenied();
+  buildCounterFirewallDenied++;
+  if (buildCounterFirewallDenied < 3) {
     o.IPProtocol = "foo";
     o.ports = buildUnnamed2345();
   }
-  buildCounterFirewallAllowed--;
+  buildCounterFirewallDenied--;
   return o;
 }
 
-checkFirewallAllowed(api.FirewallAllowed o) {
-  buildCounterFirewallAllowed++;
-  if (buildCounterFirewallAllowed < 3) {
+checkFirewallDenied(api.FirewallDenied o) {
+  buildCounterFirewallDenied++;
+  if (buildCounterFirewallDenied < 3) {
     unittest.expect(o.IPProtocol, unittest.equals('foo'));
     checkUnnamed2345(o.ports);
   }
-  buildCounterFirewallAllowed--;
+  buildCounterFirewallDenied--;
 }
 
 buildUnnamed2346() {
-  var o = new core.List<api.FirewallAllowed>();
-  o.add(buildFirewallAllowed());
-  o.add(buildFirewallAllowed());
+  var o = new core.List<api.FirewallDenied>();
+  o.add(buildFirewallDenied());
+  o.add(buildFirewallDenied());
   return o;
 }
 
-checkUnnamed2346(core.List<api.FirewallAllowed> o) {
+checkUnnamed2346(core.List<api.FirewallDenied> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkFirewallAllowed(o[0]);
-  checkFirewallAllowed(o[1]);
+  checkFirewallDenied(o[0]);
+  checkFirewallDenied(o[1]);
 }
 
 buildUnnamed2347() {
@@ -3293,38 +3340,17 @@
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-core.int buildCounterFirewallDenied = 0;
-buildFirewallDenied() {
-  var o = new api.FirewallDenied();
-  buildCounterFirewallDenied++;
-  if (buildCounterFirewallDenied < 3) {
-    o.IPProtocol = "foo";
-    o.ports = buildUnnamed2347();
-  }
-  buildCounterFirewallDenied--;
-  return o;
-}
-
-checkFirewallDenied(api.FirewallDenied o) {
-  buildCounterFirewallDenied++;
-  if (buildCounterFirewallDenied < 3) {
-    unittest.expect(o.IPProtocol, unittest.equals('foo'));
-    checkUnnamed2347(o.ports);
-  }
-  buildCounterFirewallDenied--;
-}
-
 buildUnnamed2348() {
-  var o = new core.List<api.FirewallDenied>();
-  o.add(buildFirewallDenied());
-  o.add(buildFirewallDenied());
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
   return o;
 }
 
-checkUnnamed2348(core.List<api.FirewallDenied> o) {
+checkUnnamed2348(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkFirewallDenied(o[0]);
-  checkFirewallDenied(o[1]);
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
 }
 
 buildUnnamed2349() {
@@ -3384,11 +3410,11 @@
   var o = new api.Firewall();
   buildCounterFirewall++;
   if (buildCounterFirewall < 3) {
-    o.allowed = buildUnnamed2346();
+    o.allowed = buildUnnamed2344();
     o.creationTimestamp = "foo";
-    o.denied = buildUnnamed2348();
+    o.denied = buildUnnamed2346();
     o.description = "foo";
-    o.destinationRanges = buildUnnamed2349();
+    o.destinationRanges = buildUnnamed2347();
     o.direction = "foo";
     o.id = "foo";
     o.kind = "foo";
@@ -3396,8 +3422,10 @@
     o.network = "foo";
     o.priority = 42;
     o.selfLink = "foo";
-    o.sourceRanges = buildUnnamed2350();
-    o.sourceTags = buildUnnamed2351();
+    o.sourceRanges = buildUnnamed2348();
+    o.sourceServiceAccounts = buildUnnamed2349();
+    o.sourceTags = buildUnnamed2350();
+    o.targetServiceAccounts = buildUnnamed2351();
     o.targetTags = buildUnnamed2352();
   }
   buildCounterFirewall--;
@@ -3407,11 +3435,11 @@
 checkFirewall(api.Firewall o) {
   buildCounterFirewall++;
   if (buildCounterFirewall < 3) {
-    checkUnnamed2346(o.allowed);
+    checkUnnamed2344(o.allowed);
     unittest.expect(o.creationTimestamp, unittest.equals('foo'));
-    checkUnnamed2348(o.denied);
+    checkUnnamed2346(o.denied);
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed2349(o.destinationRanges);
+    checkUnnamed2347(o.destinationRanges);
     unittest.expect(o.direction, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
@@ -3419,8 +3447,10 @@
     unittest.expect(o.network, unittest.equals('foo'));
     unittest.expect(o.priority, unittest.equals(42));
     unittest.expect(o.selfLink, unittest.equals('foo'));
-    checkUnnamed2350(o.sourceRanges);
-    checkUnnamed2351(o.sourceTags);
+    checkUnnamed2348(o.sourceRanges);
+    checkUnnamed2349(o.sourceServiceAccounts);
+    checkUnnamed2350(o.sourceTags);
+    checkUnnamed2351(o.targetServiceAccounts);
     checkUnnamed2352(o.targetTags);
   }
   buildCounterFirewall--;
@@ -4797,6 +4827,7 @@
     o.canIpForward = true;
     o.cpuPlatform = "foo";
     o.creationTimestamp = "foo";
+    o.deletionProtection = true;
     o.description = "foo";
     o.disks = buildUnnamed2375();
     o.guestAccelerators = buildUnnamed2376();
@@ -4828,6 +4859,7 @@
     unittest.expect(o.canIpForward, unittest.isTrue);
     unittest.expect(o.cpuPlatform, unittest.equals('foo'));
     unittest.expect(o.creationTimestamp, unittest.equals('foo'));
+    unittest.expect(o.deletionProtection, unittest.isTrue);
     unittest.expect(o.description, unittest.equals('foo'));
     checkUnnamed2375(o.disks);
     checkUnnamed2376(o.guestAccelerators);
@@ -6790,6 +6822,818 @@
   buildCounterInstancesStartWithEncryptionKeyRequest--;
 }
 
+buildUnnamed2423() {
+  var o = new core.List<api.InterconnectCircuitInfo>();
+  o.add(buildInterconnectCircuitInfo());
+  o.add(buildInterconnectCircuitInfo());
+  return o;
+}
+
+checkUnnamed2423(core.List<api.InterconnectCircuitInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInterconnectCircuitInfo(o[0]);
+  checkInterconnectCircuitInfo(o[1]);
+}
+
+buildUnnamed2424() {
+  var o = new core.List<api.InterconnectOutageNotification>();
+  o.add(buildInterconnectOutageNotification());
+  o.add(buildInterconnectOutageNotification());
+  return o;
+}
+
+checkUnnamed2424(core.List<api.InterconnectOutageNotification> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInterconnectOutageNotification(o[0]);
+  checkInterconnectOutageNotification(o[1]);
+}
+
+buildUnnamed2425() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2425(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterInterconnect = 0;
+buildInterconnect() {
+  var o = new api.Interconnect();
+  buildCounterInterconnect++;
+  if (buildCounterInterconnect < 3) {
+    o.adminEnabled = true;
+    o.circuitInfos = buildUnnamed2423();
+    o.creationTimestamp = "foo";
+    o.customerName = "foo";
+    o.description = "foo";
+    o.expectedOutages = buildUnnamed2424();
+    o.googleIpAddress = "foo";
+    o.googleReferenceId = "foo";
+    o.id = "foo";
+    o.interconnectAttachments = buildUnnamed2425();
+    o.interconnectType = "foo";
+    o.kind = "foo";
+    o.linkType = "foo";
+    o.location = "foo";
+    o.name = "foo";
+    o.nocContactEmail = "foo";
+    o.operationalStatus = "foo";
+    o.peerIpAddress = "foo";
+    o.provisionedLinkCount = 42;
+    o.requestedLinkCount = 42;
+    o.selfLink = "foo";
+  }
+  buildCounterInterconnect--;
+  return o;
+}
+
+checkInterconnect(api.Interconnect o) {
+  buildCounterInterconnect++;
+  if (buildCounterInterconnect < 3) {
+    unittest.expect(o.adminEnabled, unittest.isTrue);
+    checkUnnamed2423(o.circuitInfos);
+    unittest.expect(o.creationTimestamp, unittest.equals('foo'));
+    unittest.expect(o.customerName, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    checkUnnamed2424(o.expectedOutages);
+    unittest.expect(o.googleIpAddress, unittest.equals('foo'));
+    unittest.expect(o.googleReferenceId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed2425(o.interconnectAttachments);
+    unittest.expect(o.interconnectType, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.linkType, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.nocContactEmail, unittest.equals('foo'));
+    unittest.expect(o.operationalStatus, unittest.equals('foo'));
+    unittest.expect(o.peerIpAddress, unittest.equals('foo'));
+    unittest.expect(o.provisionedLinkCount, unittest.equals(42));
+    unittest.expect(o.requestedLinkCount, unittest.equals(42));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+  }
+  buildCounterInterconnect--;
+}
+
+core.int buildCounterInterconnectAttachment = 0;
+buildInterconnectAttachment() {
+  var o = new api.InterconnectAttachment();
+  buildCounterInterconnectAttachment++;
+  if (buildCounterInterconnectAttachment < 3) {
+    o.cloudRouterIpAddress = "foo";
+    o.creationTimestamp = "foo";
+    o.customerRouterIpAddress = "foo";
+    o.description = "foo";
+    o.googleReferenceId = "foo";
+    o.id = "foo";
+    o.interconnect = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.operationalStatus = "foo";
+    o.privateInterconnectInfo = buildInterconnectAttachmentPrivateInfo();
+    o.region = "foo";
+    o.router = "foo";
+    o.selfLink = "foo";
+  }
+  buildCounterInterconnectAttachment--;
+  return o;
+}
+
+checkInterconnectAttachment(api.InterconnectAttachment o) {
+  buildCounterInterconnectAttachment++;
+  if (buildCounterInterconnectAttachment < 3) {
+    unittest.expect(o.cloudRouterIpAddress, unittest.equals('foo'));
+    unittest.expect(o.creationTimestamp, unittest.equals('foo'));
+    unittest.expect(o.customerRouterIpAddress, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.googleReferenceId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.interconnect, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.operationalStatus, unittest.equals('foo'));
+    checkInterconnectAttachmentPrivateInfo(o.privateInterconnectInfo);
+    unittest.expect(o.region, unittest.equals('foo'));
+    unittest.expect(o.router, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+  }
+  buildCounterInterconnectAttachment--;
+}
+
+buildUnnamed2426() {
+  var o = new core.Map<core.String, api.InterconnectAttachmentsScopedList>();
+  o["x"] = buildInterconnectAttachmentsScopedList();
+  o["y"] = buildInterconnectAttachmentsScopedList();
+  return o;
+}
+
+checkUnnamed2426(
+    core.Map<core.String, api.InterconnectAttachmentsScopedList> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInterconnectAttachmentsScopedList(o["x"]);
+  checkInterconnectAttachmentsScopedList(o["y"]);
+}
+
+core.int buildCounterInterconnectAttachmentAggregatedListWarningData = 0;
+buildInterconnectAttachmentAggregatedListWarningData() {
+  var o = new api.InterconnectAttachmentAggregatedListWarningData();
+  buildCounterInterconnectAttachmentAggregatedListWarningData++;
+  if (buildCounterInterconnectAttachmentAggregatedListWarningData < 3) {
+    o.key = "foo";
+    o.value = "foo";
+  }
+  buildCounterInterconnectAttachmentAggregatedListWarningData--;
+  return o;
+}
+
+checkInterconnectAttachmentAggregatedListWarningData(
+    api.InterconnectAttachmentAggregatedListWarningData o) {
+  buildCounterInterconnectAttachmentAggregatedListWarningData++;
+  if (buildCounterInterconnectAttachmentAggregatedListWarningData < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterInterconnectAttachmentAggregatedListWarningData--;
+}
+
+buildUnnamed2427() {
+  var o = new core.List<api.InterconnectAttachmentAggregatedListWarningData>();
+  o.add(buildInterconnectAttachmentAggregatedListWarningData());
+  o.add(buildInterconnectAttachmentAggregatedListWarningData());
+  return o;
+}
+
+checkUnnamed2427(
+    core.List<api.InterconnectAttachmentAggregatedListWarningData> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInterconnectAttachmentAggregatedListWarningData(o[0]);
+  checkInterconnectAttachmentAggregatedListWarningData(o[1]);
+}
+
+core.int buildCounterInterconnectAttachmentAggregatedListWarning = 0;
+buildInterconnectAttachmentAggregatedListWarning() {
+  var o = new api.InterconnectAttachmentAggregatedListWarning();
+  buildCounterInterconnectAttachmentAggregatedListWarning++;
+  if (buildCounterInterconnectAttachmentAggregatedListWarning < 3) {
+    o.code = "foo";
+    o.data = buildUnnamed2427();
+    o.message = "foo";
+  }
+  buildCounterInterconnectAttachmentAggregatedListWarning--;
+  return o;
+}
+
+checkInterconnectAttachmentAggregatedListWarning(
+    api.InterconnectAttachmentAggregatedListWarning o) {
+  buildCounterInterconnectAttachmentAggregatedListWarning++;
+  if (buildCounterInterconnectAttachmentAggregatedListWarning < 3) {
+    unittest.expect(o.code, unittest.equals('foo'));
+    checkUnnamed2427(o.data);
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterInterconnectAttachmentAggregatedListWarning--;
+}
+
+core.int buildCounterInterconnectAttachmentAggregatedList = 0;
+buildInterconnectAttachmentAggregatedList() {
+  var o = new api.InterconnectAttachmentAggregatedList();
+  buildCounterInterconnectAttachmentAggregatedList++;
+  if (buildCounterInterconnectAttachmentAggregatedList < 3) {
+    o.id = "foo";
+    o.items = buildUnnamed2426();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.selfLink = "foo";
+    o.warning = buildInterconnectAttachmentAggregatedListWarning();
+  }
+  buildCounterInterconnectAttachmentAggregatedList--;
+  return o;
+}
+
+checkInterconnectAttachmentAggregatedList(
+    api.InterconnectAttachmentAggregatedList o) {
+  buildCounterInterconnectAttachmentAggregatedList++;
+  if (buildCounterInterconnectAttachmentAggregatedList < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed2426(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    checkInterconnectAttachmentAggregatedListWarning(o.warning);
+  }
+  buildCounterInterconnectAttachmentAggregatedList--;
+}
+
+buildUnnamed2428() {
+  var o = new core.List<api.InterconnectAttachment>();
+  o.add(buildInterconnectAttachment());
+  o.add(buildInterconnectAttachment());
+  return o;
+}
+
+checkUnnamed2428(core.List<api.InterconnectAttachment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInterconnectAttachment(o[0]);
+  checkInterconnectAttachment(o[1]);
+}
+
+core.int buildCounterInterconnectAttachmentListWarningData = 0;
+buildInterconnectAttachmentListWarningData() {
+  var o = new api.InterconnectAttachmentListWarningData();
+  buildCounterInterconnectAttachmentListWarningData++;
+  if (buildCounterInterconnectAttachmentListWarningData < 3) {
+    o.key = "foo";
+    o.value = "foo";
+  }
+  buildCounterInterconnectAttachmentListWarningData--;
+  return o;
+}
+
+checkInterconnectAttachmentListWarningData(
+    api.InterconnectAttachmentListWarningData o) {
+  buildCounterInterconnectAttachmentListWarningData++;
+  if (buildCounterInterconnectAttachmentListWarningData < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterInterconnectAttachmentListWarningData--;
+}
+
+buildUnnamed2429() {
+  var o = new core.List<api.InterconnectAttachmentListWarningData>();
+  o.add(buildInterconnectAttachmentListWarningData());
+  o.add(buildInterconnectAttachmentListWarningData());
+  return o;
+}
+
+checkUnnamed2429(core.List<api.InterconnectAttachmentListWarningData> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInterconnectAttachmentListWarningData(o[0]);
+  checkInterconnectAttachmentListWarningData(o[1]);
+}
+
+core.int buildCounterInterconnectAttachmentListWarning = 0;
+buildInterconnectAttachmentListWarning() {
+  var o = new api.InterconnectAttachmentListWarning();
+  buildCounterInterconnectAttachmentListWarning++;
+  if (buildCounterInterconnectAttachmentListWarning < 3) {
+    o.code = "foo";
+    o.data = buildUnnamed2429();
+    o.message = "foo";
+  }
+  buildCounterInterconnectAttachmentListWarning--;
+  return o;
+}
+
+checkInterconnectAttachmentListWarning(
+    api.InterconnectAttachmentListWarning o) {
+  buildCounterInterconnectAttachmentListWarning++;
+  if (buildCounterInterconnectAttachmentListWarning < 3) {
+    unittest.expect(o.code, unittest.equals('foo'));
+    checkUnnamed2429(o.data);
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterInterconnectAttachmentListWarning--;
+}
+
+core.int buildCounterInterconnectAttachmentList = 0;
+buildInterconnectAttachmentList() {
+  var o = new api.InterconnectAttachmentList();
+  buildCounterInterconnectAttachmentList++;
+  if (buildCounterInterconnectAttachmentList < 3) {
+    o.id = "foo";
+    o.items = buildUnnamed2428();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.selfLink = "foo";
+    o.warning = buildInterconnectAttachmentListWarning();
+  }
+  buildCounterInterconnectAttachmentList--;
+  return o;
+}
+
+checkInterconnectAttachmentList(api.InterconnectAttachmentList o) {
+  buildCounterInterconnectAttachmentList++;
+  if (buildCounterInterconnectAttachmentList < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed2428(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    checkInterconnectAttachmentListWarning(o.warning);
+  }
+  buildCounterInterconnectAttachmentList--;
+}
+
+core.int buildCounterInterconnectAttachmentPrivateInfo = 0;
+buildInterconnectAttachmentPrivateInfo() {
+  var o = new api.InterconnectAttachmentPrivateInfo();
+  buildCounterInterconnectAttachmentPrivateInfo++;
+  if (buildCounterInterconnectAttachmentPrivateInfo < 3) {
+    o.tag8021q = 42;
+  }
+  buildCounterInterconnectAttachmentPrivateInfo--;
+  return o;
+}
+
+checkInterconnectAttachmentPrivateInfo(
+    api.InterconnectAttachmentPrivateInfo o) {
+  buildCounterInterconnectAttachmentPrivateInfo++;
+  if (buildCounterInterconnectAttachmentPrivateInfo < 3) {
+    unittest.expect(o.tag8021q, unittest.equals(42));
+  }
+  buildCounterInterconnectAttachmentPrivateInfo--;
+}
+
+buildUnnamed2430() {
+  var o = new core.List<api.InterconnectAttachment>();
+  o.add(buildInterconnectAttachment());
+  o.add(buildInterconnectAttachment());
+  return o;
+}
+
+checkUnnamed2430(core.List<api.InterconnectAttachment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInterconnectAttachment(o[0]);
+  checkInterconnectAttachment(o[1]);
+}
+
+core.int buildCounterInterconnectAttachmentsScopedListWarningData = 0;
+buildInterconnectAttachmentsScopedListWarningData() {
+  var o = new api.InterconnectAttachmentsScopedListWarningData();
+  buildCounterInterconnectAttachmentsScopedListWarningData++;
+  if (buildCounterInterconnectAttachmentsScopedListWarningData < 3) {
+    o.key = "foo";
+    o.value = "foo";
+  }
+  buildCounterInterconnectAttachmentsScopedListWarningData--;
+  return o;
+}
+
+checkInterconnectAttachmentsScopedListWarningData(
+    api.InterconnectAttachmentsScopedListWarningData o) {
+  buildCounterInterconnectAttachmentsScopedListWarningData++;
+  if (buildCounterInterconnectAttachmentsScopedListWarningData < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterInterconnectAttachmentsScopedListWarningData--;
+}
+
+buildUnnamed2431() {
+  var o = new core.List<api.InterconnectAttachmentsScopedListWarningData>();
+  o.add(buildInterconnectAttachmentsScopedListWarningData());
+  o.add(buildInterconnectAttachmentsScopedListWarningData());
+  return o;
+}
+
+checkUnnamed2431(
+    core.List<api.InterconnectAttachmentsScopedListWarningData> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInterconnectAttachmentsScopedListWarningData(o[0]);
+  checkInterconnectAttachmentsScopedListWarningData(o[1]);
+}
+
+core.int buildCounterInterconnectAttachmentsScopedListWarning = 0;
+buildInterconnectAttachmentsScopedListWarning() {
+  var o = new api.InterconnectAttachmentsScopedListWarning();
+  buildCounterInterconnectAttachmentsScopedListWarning++;
+  if (buildCounterInterconnectAttachmentsScopedListWarning < 3) {
+    o.code = "foo";
+    o.data = buildUnnamed2431();
+    o.message = "foo";
+  }
+  buildCounterInterconnectAttachmentsScopedListWarning--;
+  return o;
+}
+
+checkInterconnectAttachmentsScopedListWarning(
+    api.InterconnectAttachmentsScopedListWarning o) {
+  buildCounterInterconnectAttachmentsScopedListWarning++;
+  if (buildCounterInterconnectAttachmentsScopedListWarning < 3) {
+    unittest.expect(o.code, unittest.equals('foo'));
+    checkUnnamed2431(o.data);
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterInterconnectAttachmentsScopedListWarning--;
+}
+
+core.int buildCounterInterconnectAttachmentsScopedList = 0;
+buildInterconnectAttachmentsScopedList() {
+  var o = new api.InterconnectAttachmentsScopedList();
+  buildCounterInterconnectAttachmentsScopedList++;
+  if (buildCounterInterconnectAttachmentsScopedList < 3) {
+    o.interconnectAttachments = buildUnnamed2430();
+    o.warning = buildInterconnectAttachmentsScopedListWarning();
+  }
+  buildCounterInterconnectAttachmentsScopedList--;
+  return o;
+}
+
+checkInterconnectAttachmentsScopedList(
+    api.InterconnectAttachmentsScopedList o) {
+  buildCounterInterconnectAttachmentsScopedList++;
+  if (buildCounterInterconnectAttachmentsScopedList < 3) {
+    checkUnnamed2430(o.interconnectAttachments);
+    checkInterconnectAttachmentsScopedListWarning(o.warning);
+  }
+  buildCounterInterconnectAttachmentsScopedList--;
+}
+
+core.int buildCounterInterconnectCircuitInfo = 0;
+buildInterconnectCircuitInfo() {
+  var o = new api.InterconnectCircuitInfo();
+  buildCounterInterconnectCircuitInfo++;
+  if (buildCounterInterconnectCircuitInfo < 3) {
+    o.customerDemarcId = "foo";
+    o.googleCircuitId = "foo";
+    o.googleDemarcId = "foo";
+  }
+  buildCounterInterconnectCircuitInfo--;
+  return o;
+}
+
+checkInterconnectCircuitInfo(api.InterconnectCircuitInfo o) {
+  buildCounterInterconnectCircuitInfo++;
+  if (buildCounterInterconnectCircuitInfo < 3) {
+    unittest.expect(o.customerDemarcId, unittest.equals('foo'));
+    unittest.expect(o.googleCircuitId, unittest.equals('foo'));
+    unittest.expect(o.googleDemarcId, unittest.equals('foo'));
+  }
+  buildCounterInterconnectCircuitInfo--;
+}
+
+buildUnnamed2432() {
+  var o = new core.List<api.Interconnect>();
+  o.add(buildInterconnect());
+  o.add(buildInterconnect());
+  return o;
+}
+
+checkUnnamed2432(core.List<api.Interconnect> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInterconnect(o[0]);
+  checkInterconnect(o[1]);
+}
+
+core.int buildCounterInterconnectListWarningData = 0;
+buildInterconnectListWarningData() {
+  var o = new api.InterconnectListWarningData();
+  buildCounterInterconnectListWarningData++;
+  if (buildCounterInterconnectListWarningData < 3) {
+    o.key = "foo";
+    o.value = "foo";
+  }
+  buildCounterInterconnectListWarningData--;
+  return o;
+}
+
+checkInterconnectListWarningData(api.InterconnectListWarningData o) {
+  buildCounterInterconnectListWarningData++;
+  if (buildCounterInterconnectListWarningData < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterInterconnectListWarningData--;
+}
+
+buildUnnamed2433() {
+  var o = new core.List<api.InterconnectListWarningData>();
+  o.add(buildInterconnectListWarningData());
+  o.add(buildInterconnectListWarningData());
+  return o;
+}
+
+checkUnnamed2433(core.List<api.InterconnectListWarningData> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInterconnectListWarningData(o[0]);
+  checkInterconnectListWarningData(o[1]);
+}
+
+core.int buildCounterInterconnectListWarning = 0;
+buildInterconnectListWarning() {
+  var o = new api.InterconnectListWarning();
+  buildCounterInterconnectListWarning++;
+  if (buildCounterInterconnectListWarning < 3) {
+    o.code = "foo";
+    o.data = buildUnnamed2433();
+    o.message = "foo";
+  }
+  buildCounterInterconnectListWarning--;
+  return o;
+}
+
+checkInterconnectListWarning(api.InterconnectListWarning o) {
+  buildCounterInterconnectListWarning++;
+  if (buildCounterInterconnectListWarning < 3) {
+    unittest.expect(o.code, unittest.equals('foo'));
+    checkUnnamed2433(o.data);
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterInterconnectListWarning--;
+}
+
+core.int buildCounterInterconnectList = 0;
+buildInterconnectList() {
+  var o = new api.InterconnectList();
+  buildCounterInterconnectList++;
+  if (buildCounterInterconnectList < 3) {
+    o.id = "foo";
+    o.items = buildUnnamed2432();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.selfLink = "foo";
+    o.warning = buildInterconnectListWarning();
+  }
+  buildCounterInterconnectList--;
+  return o;
+}
+
+checkInterconnectList(api.InterconnectList o) {
+  buildCounterInterconnectList++;
+  if (buildCounterInterconnectList < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed2432(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    checkInterconnectListWarning(o.warning);
+  }
+  buildCounterInterconnectList--;
+}
+
+buildUnnamed2434() {
+  var o = new core.List<api.InterconnectLocationRegionInfo>();
+  o.add(buildInterconnectLocationRegionInfo());
+  o.add(buildInterconnectLocationRegionInfo());
+  return o;
+}
+
+checkUnnamed2434(core.List<api.InterconnectLocationRegionInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInterconnectLocationRegionInfo(o[0]);
+  checkInterconnectLocationRegionInfo(o[1]);
+}
+
+core.int buildCounterInterconnectLocation = 0;
+buildInterconnectLocation() {
+  var o = new api.InterconnectLocation();
+  buildCounterInterconnectLocation++;
+  if (buildCounterInterconnectLocation < 3) {
+    o.address = "foo";
+    o.availabilityZone = "foo";
+    o.city = "foo";
+    o.continent = "foo";
+    o.creationTimestamp = "foo";
+    o.description = "foo";
+    o.facilityProvider = "foo";
+    o.facilityProviderFacilityId = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.peeringdbFacilityId = "foo";
+    o.regionInfos = buildUnnamed2434();
+    o.selfLink = "foo";
+  }
+  buildCounterInterconnectLocation--;
+  return o;
+}
+
+checkInterconnectLocation(api.InterconnectLocation o) {
+  buildCounterInterconnectLocation++;
+  if (buildCounterInterconnectLocation < 3) {
+    unittest.expect(o.address, unittest.equals('foo'));
+    unittest.expect(o.availabilityZone, unittest.equals('foo'));
+    unittest.expect(o.city, unittest.equals('foo'));
+    unittest.expect(o.continent, unittest.equals('foo'));
+    unittest.expect(o.creationTimestamp, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.facilityProvider, unittest.equals('foo'));
+    unittest.expect(o.facilityProviderFacilityId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.peeringdbFacilityId, unittest.equals('foo'));
+    checkUnnamed2434(o.regionInfos);
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+  }
+  buildCounterInterconnectLocation--;
+}
+
+buildUnnamed2435() {
+  var o = new core.List<api.InterconnectLocation>();
+  o.add(buildInterconnectLocation());
+  o.add(buildInterconnectLocation());
+  return o;
+}
+
+checkUnnamed2435(core.List<api.InterconnectLocation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInterconnectLocation(o[0]);
+  checkInterconnectLocation(o[1]);
+}
+
+core.int buildCounterInterconnectLocationListWarningData = 0;
+buildInterconnectLocationListWarningData() {
+  var o = new api.InterconnectLocationListWarningData();
+  buildCounterInterconnectLocationListWarningData++;
+  if (buildCounterInterconnectLocationListWarningData < 3) {
+    o.key = "foo";
+    o.value = "foo";
+  }
+  buildCounterInterconnectLocationListWarningData--;
+  return o;
+}
+
+checkInterconnectLocationListWarningData(
+    api.InterconnectLocationListWarningData o) {
+  buildCounterInterconnectLocationListWarningData++;
+  if (buildCounterInterconnectLocationListWarningData < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterInterconnectLocationListWarningData--;
+}
+
+buildUnnamed2436() {
+  var o = new core.List<api.InterconnectLocationListWarningData>();
+  o.add(buildInterconnectLocationListWarningData());
+  o.add(buildInterconnectLocationListWarningData());
+  return o;
+}
+
+checkUnnamed2436(core.List<api.InterconnectLocationListWarningData> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInterconnectLocationListWarningData(o[0]);
+  checkInterconnectLocationListWarningData(o[1]);
+}
+
+core.int buildCounterInterconnectLocationListWarning = 0;
+buildInterconnectLocationListWarning() {
+  var o = new api.InterconnectLocationListWarning();
+  buildCounterInterconnectLocationListWarning++;
+  if (buildCounterInterconnectLocationListWarning < 3) {
+    o.code = "foo";
+    o.data = buildUnnamed2436();
+    o.message = "foo";
+  }
+  buildCounterInterconnectLocationListWarning--;
+  return o;
+}
+
+checkInterconnectLocationListWarning(api.InterconnectLocationListWarning o) {
+  buildCounterInterconnectLocationListWarning++;
+  if (buildCounterInterconnectLocationListWarning < 3) {
+    unittest.expect(o.code, unittest.equals('foo'));
+    checkUnnamed2436(o.data);
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterInterconnectLocationListWarning--;
+}
+
+core.int buildCounterInterconnectLocationList = 0;
+buildInterconnectLocationList() {
+  var o = new api.InterconnectLocationList();
+  buildCounterInterconnectLocationList++;
+  if (buildCounterInterconnectLocationList < 3) {
+    o.id = "foo";
+    o.items = buildUnnamed2435();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.selfLink = "foo";
+    o.warning = buildInterconnectLocationListWarning();
+  }
+  buildCounterInterconnectLocationList--;
+  return o;
+}
+
+checkInterconnectLocationList(api.InterconnectLocationList o) {
+  buildCounterInterconnectLocationList++;
+  if (buildCounterInterconnectLocationList < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed2435(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    checkInterconnectLocationListWarning(o.warning);
+  }
+  buildCounterInterconnectLocationList--;
+}
+
+core.int buildCounterInterconnectLocationRegionInfo = 0;
+buildInterconnectLocationRegionInfo() {
+  var o = new api.InterconnectLocationRegionInfo();
+  buildCounterInterconnectLocationRegionInfo++;
+  if (buildCounterInterconnectLocationRegionInfo < 3) {
+    o.expectedRttMs = "foo";
+    o.locationPresence = "foo";
+    o.region = "foo";
+  }
+  buildCounterInterconnectLocationRegionInfo--;
+  return o;
+}
+
+checkInterconnectLocationRegionInfo(api.InterconnectLocationRegionInfo o) {
+  buildCounterInterconnectLocationRegionInfo++;
+  if (buildCounterInterconnectLocationRegionInfo < 3) {
+    unittest.expect(o.expectedRttMs, unittest.equals('foo'));
+    unittest.expect(o.locationPresence, unittest.equals('foo'));
+    unittest.expect(o.region, unittest.equals('foo'));
+  }
+  buildCounterInterconnectLocationRegionInfo--;
+}
+
+buildUnnamed2437() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2437(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterInterconnectOutageNotification = 0;
+buildInterconnectOutageNotification() {
+  var o = new api.InterconnectOutageNotification();
+  buildCounterInterconnectOutageNotification++;
+  if (buildCounterInterconnectOutageNotification < 3) {
+    o.affectedCircuits = buildUnnamed2437();
+    o.description = "foo";
+    o.endTime = "foo";
+    o.issueType = "foo";
+    o.name = "foo";
+    o.source = "foo";
+    o.startTime = "foo";
+    o.state = "foo";
+  }
+  buildCounterInterconnectOutageNotification--;
+  return o;
+}
+
+checkInterconnectOutageNotification(api.InterconnectOutageNotification o) {
+  buildCounterInterconnectOutageNotification++;
+  if (buildCounterInterconnectOutageNotification < 3) {
+    checkUnnamed2437(o.affectedCircuits);
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.endTime, unittest.equals('foo'));
+    unittest.expect(o.issueType, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.source, unittest.equals('foo'));
+    unittest.expect(o.startTime, unittest.equals('foo'));
+    unittest.expect(o.state, unittest.equals('foo'));
+  }
+  buildCounterInterconnectOutageNotification--;
+}
+
 core.int buildCounterLicense = 0;
 buildLicense() {
   var o = new api.License();
@@ -6834,14 +7678,14 @@
   buildCounterMachineTypeScratchDisks--;
 }
 
-buildUnnamed2423() {
+buildUnnamed2438() {
   var o = new core.List<api.MachineTypeScratchDisks>();
   o.add(buildMachineTypeScratchDisks());
   o.add(buildMachineTypeScratchDisks());
   return o;
 }
 
-checkUnnamed2423(core.List<api.MachineTypeScratchDisks> o) {
+checkUnnamed2438(core.List<api.MachineTypeScratchDisks> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMachineTypeScratchDisks(o[0]);
   checkMachineTypeScratchDisks(o[1]);
@@ -6864,7 +7708,7 @@
     o.maximumPersistentDisksSizeGb = "foo";
     o.memoryMb = 42;
     o.name = "foo";
-    o.scratchDisks = buildUnnamed2423();
+    o.scratchDisks = buildUnnamed2438();
     o.selfLink = "foo";
     o.zone = "foo";
   }
@@ -6887,21 +7731,21 @@
     unittest.expect(o.maximumPersistentDisksSizeGb, unittest.equals('foo'));
     unittest.expect(o.memoryMb, unittest.equals(42));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2423(o.scratchDisks);
+    checkUnnamed2438(o.scratchDisks);
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.zone, unittest.equals('foo'));
   }
   buildCounterMachineType--;
 }
 
-buildUnnamed2424() {
+buildUnnamed2439() {
   var o = new core.Map<core.String, api.MachineTypesScopedList>();
   o["x"] = buildMachineTypesScopedList();
   o["y"] = buildMachineTypesScopedList();
   return o;
 }
 
-checkUnnamed2424(core.Map<core.String, api.MachineTypesScopedList> o) {
+checkUnnamed2439(core.Map<core.String, api.MachineTypesScopedList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMachineTypesScopedList(o["x"]);
   checkMachineTypesScopedList(o["y"]);
@@ -6929,14 +7773,14 @@
   buildCounterMachineTypeAggregatedListWarningData--;
 }
 
-buildUnnamed2425() {
+buildUnnamed2440() {
   var o = new core.List<api.MachineTypeAggregatedListWarningData>();
   o.add(buildMachineTypeAggregatedListWarningData());
   o.add(buildMachineTypeAggregatedListWarningData());
   return o;
 }
 
-checkUnnamed2425(core.List<api.MachineTypeAggregatedListWarningData> o) {
+checkUnnamed2440(core.List<api.MachineTypeAggregatedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMachineTypeAggregatedListWarningData(o[0]);
   checkMachineTypeAggregatedListWarningData(o[1]);
@@ -6948,7 +7792,7 @@
   buildCounterMachineTypeAggregatedListWarning++;
   if (buildCounterMachineTypeAggregatedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2425();
+    o.data = buildUnnamed2440();
     o.message = "foo";
   }
   buildCounterMachineTypeAggregatedListWarning--;
@@ -6959,7 +7803,7 @@
   buildCounterMachineTypeAggregatedListWarning++;
   if (buildCounterMachineTypeAggregatedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2425(o.data);
+    checkUnnamed2440(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterMachineTypeAggregatedListWarning--;
@@ -6971,7 +7815,7 @@
   buildCounterMachineTypeAggregatedList++;
   if (buildCounterMachineTypeAggregatedList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2424();
+    o.items = buildUnnamed2439();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -6985,7 +7829,7 @@
   buildCounterMachineTypeAggregatedList++;
   if (buildCounterMachineTypeAggregatedList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2424(o.items);
+    checkUnnamed2439(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -6994,14 +7838,14 @@
   buildCounterMachineTypeAggregatedList--;
 }
 
-buildUnnamed2426() {
+buildUnnamed2441() {
   var o = new core.List<api.MachineType>();
   o.add(buildMachineType());
   o.add(buildMachineType());
   return o;
 }
 
-checkUnnamed2426(core.List<api.MachineType> o) {
+checkUnnamed2441(core.List<api.MachineType> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMachineType(o[0]);
   checkMachineType(o[1]);
@@ -7028,14 +7872,14 @@
   buildCounterMachineTypeListWarningData--;
 }
 
-buildUnnamed2427() {
+buildUnnamed2442() {
   var o = new core.List<api.MachineTypeListWarningData>();
   o.add(buildMachineTypeListWarningData());
   o.add(buildMachineTypeListWarningData());
   return o;
 }
 
-checkUnnamed2427(core.List<api.MachineTypeListWarningData> o) {
+checkUnnamed2442(core.List<api.MachineTypeListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMachineTypeListWarningData(o[0]);
   checkMachineTypeListWarningData(o[1]);
@@ -7047,7 +7891,7 @@
   buildCounterMachineTypeListWarning++;
   if (buildCounterMachineTypeListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2427();
+    o.data = buildUnnamed2442();
     o.message = "foo";
   }
   buildCounterMachineTypeListWarning--;
@@ -7058,7 +7902,7 @@
   buildCounterMachineTypeListWarning++;
   if (buildCounterMachineTypeListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2427(o.data);
+    checkUnnamed2442(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterMachineTypeListWarning--;
@@ -7070,7 +7914,7 @@
   buildCounterMachineTypeList++;
   if (buildCounterMachineTypeList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2426();
+    o.items = buildUnnamed2441();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -7084,7 +7928,7 @@
   buildCounterMachineTypeList++;
   if (buildCounterMachineTypeList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2426(o.items);
+    checkUnnamed2441(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -7093,14 +7937,14 @@
   buildCounterMachineTypeList--;
 }
 
-buildUnnamed2428() {
+buildUnnamed2443() {
   var o = new core.List<api.MachineType>();
   o.add(buildMachineType());
   o.add(buildMachineType());
   return o;
 }
 
-checkUnnamed2428(core.List<api.MachineType> o) {
+checkUnnamed2443(core.List<api.MachineType> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMachineType(o[0]);
   checkMachineType(o[1]);
@@ -7128,14 +7972,14 @@
   buildCounterMachineTypesScopedListWarningData--;
 }
 
-buildUnnamed2429() {
+buildUnnamed2444() {
   var o = new core.List<api.MachineTypesScopedListWarningData>();
   o.add(buildMachineTypesScopedListWarningData());
   o.add(buildMachineTypesScopedListWarningData());
   return o;
 }
 
-checkUnnamed2429(core.List<api.MachineTypesScopedListWarningData> o) {
+checkUnnamed2444(core.List<api.MachineTypesScopedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMachineTypesScopedListWarningData(o[0]);
   checkMachineTypesScopedListWarningData(o[1]);
@@ -7147,7 +7991,7 @@
   buildCounterMachineTypesScopedListWarning++;
   if (buildCounterMachineTypesScopedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2429();
+    o.data = buildUnnamed2444();
     o.message = "foo";
   }
   buildCounterMachineTypesScopedListWarning--;
@@ -7158,7 +8002,7 @@
   buildCounterMachineTypesScopedListWarning++;
   if (buildCounterMachineTypesScopedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2429(o.data);
+    checkUnnamed2444(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterMachineTypesScopedListWarning--;
@@ -7169,7 +8013,7 @@
   var o = new api.MachineTypesScopedList();
   buildCounterMachineTypesScopedList++;
   if (buildCounterMachineTypesScopedList < 3) {
-    o.machineTypes = buildUnnamed2428();
+    o.machineTypes = buildUnnamed2443();
     o.warning = buildMachineTypesScopedListWarning();
   }
   buildCounterMachineTypesScopedList--;
@@ -7179,7 +8023,7 @@
 checkMachineTypesScopedList(api.MachineTypesScopedList o) {
   buildCounterMachineTypesScopedList++;
   if (buildCounterMachineTypesScopedList < 3) {
-    checkUnnamed2428(o.machineTypes);
+    checkUnnamed2443(o.machineTypes);
     checkMachineTypesScopedListWarning(o.warning);
   }
   buildCounterMachineTypesScopedList--;
@@ -7236,14 +8080,14 @@
   buildCounterManagedInstanceLastAttemptErrorsErrors--;
 }
 
-buildUnnamed2430() {
+buildUnnamed2445() {
   var o = new core.List<api.ManagedInstanceLastAttemptErrorsErrors>();
   o.add(buildManagedInstanceLastAttemptErrorsErrors());
   o.add(buildManagedInstanceLastAttemptErrorsErrors());
   return o;
 }
 
-checkUnnamed2430(core.List<api.ManagedInstanceLastAttemptErrorsErrors> o) {
+checkUnnamed2445(core.List<api.ManagedInstanceLastAttemptErrorsErrors> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkManagedInstanceLastAttemptErrorsErrors(o[0]);
   checkManagedInstanceLastAttemptErrorsErrors(o[1]);
@@ -7254,7 +8098,7 @@
   var o = new api.ManagedInstanceLastAttemptErrors();
   buildCounterManagedInstanceLastAttemptErrors++;
   if (buildCounterManagedInstanceLastAttemptErrors < 3) {
-    o.errors = buildUnnamed2430();
+    o.errors = buildUnnamed2445();
   }
   buildCounterManagedInstanceLastAttemptErrors--;
   return o;
@@ -7263,7 +8107,7 @@
 checkManagedInstanceLastAttemptErrors(api.ManagedInstanceLastAttemptErrors o) {
   buildCounterManagedInstanceLastAttemptErrors++;
   if (buildCounterManagedInstanceLastAttemptErrors < 3) {
-    checkUnnamed2430(o.errors);
+    checkUnnamed2445(o.errors);
   }
   buildCounterManagedInstanceLastAttemptErrors--;
 }
@@ -7308,14 +8152,14 @@
   buildCounterMetadataItems--;
 }
 
-buildUnnamed2431() {
+buildUnnamed2446() {
   var o = new core.List<api.MetadataItems>();
   o.add(buildMetadataItems());
   o.add(buildMetadataItems());
   return o;
 }
 
-checkUnnamed2431(core.List<api.MetadataItems> o) {
+checkUnnamed2446(core.List<api.MetadataItems> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetadataItems(o[0]);
   checkMetadataItems(o[1]);
@@ -7327,7 +8171,7 @@
   buildCounterMetadata++;
   if (buildCounterMetadata < 3) {
     o.fingerprint = "foo";
-    o.items = buildUnnamed2431();
+    o.items = buildUnnamed2446();
     o.kind = "foo";
   }
   buildCounterMetadata--;
@@ -7338,7 +8182,7 @@
   buildCounterMetadata++;
   if (buildCounterMetadata < 3) {
     unittest.expect(o.fingerprint, unittest.equals('foo'));
-    checkUnnamed2431(o.items);
+    checkUnnamed2446(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterMetadata--;
@@ -7365,27 +8209,27 @@
   buildCounterNamedPort--;
 }
 
-buildUnnamed2432() {
+buildUnnamed2447() {
   var o = new core.List<api.NetworkPeering>();
   o.add(buildNetworkPeering());
   o.add(buildNetworkPeering());
   return o;
 }
 
-checkUnnamed2432(core.List<api.NetworkPeering> o) {
+checkUnnamed2447(core.List<api.NetworkPeering> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkNetworkPeering(o[0]);
   checkNetworkPeering(o[1]);
 }
 
-buildUnnamed2433() {
+buildUnnamed2448() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2433(core.List<core.String> o) {
+checkUnnamed2448(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -7404,10 +8248,10 @@
     o.id = "foo";
     o.kind = "foo";
     o.name = "foo";
-    o.peerings = buildUnnamed2432();
+    o.peerings = buildUnnamed2447();
     o.routingConfig = buildNetworkRoutingConfig();
     o.selfLink = "foo";
-    o.subnetworks = buildUnnamed2433();
+    o.subnetworks = buildUnnamed2448();
   }
   buildCounterNetwork--;
   return o;
@@ -7424,35 +8268,35 @@
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2432(o.peerings);
+    checkUnnamed2447(o.peerings);
     checkNetworkRoutingConfig(o.routingConfig);
     unittest.expect(o.selfLink, unittest.equals('foo'));
-    checkUnnamed2433(o.subnetworks);
+    checkUnnamed2448(o.subnetworks);
   }
   buildCounterNetwork--;
 }
 
-buildUnnamed2434() {
+buildUnnamed2449() {
   var o = new core.List<api.AccessConfig>();
   o.add(buildAccessConfig());
   o.add(buildAccessConfig());
   return o;
 }
 
-checkUnnamed2434(core.List<api.AccessConfig> o) {
+checkUnnamed2449(core.List<api.AccessConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAccessConfig(o[0]);
   checkAccessConfig(o[1]);
 }
 
-buildUnnamed2435() {
+buildUnnamed2450() {
   var o = new core.List<api.AliasIpRange>();
   o.add(buildAliasIpRange());
   o.add(buildAliasIpRange());
   return o;
 }
 
-checkUnnamed2435(core.List<api.AliasIpRange> o) {
+checkUnnamed2450(core.List<api.AliasIpRange> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAliasIpRange(o[0]);
   checkAliasIpRange(o[1]);
@@ -7463,8 +8307,8 @@
   var o = new api.NetworkInterface();
   buildCounterNetworkInterface++;
   if (buildCounterNetworkInterface < 3) {
-    o.accessConfigs = buildUnnamed2434();
-    o.aliasIpRanges = buildUnnamed2435();
+    o.accessConfigs = buildUnnamed2449();
+    o.aliasIpRanges = buildUnnamed2450();
     o.kind = "foo";
     o.name = "foo";
     o.network = "foo";
@@ -7478,8 +8322,8 @@
 checkNetworkInterface(api.NetworkInterface o) {
   buildCounterNetworkInterface++;
   if (buildCounterNetworkInterface < 3) {
-    checkUnnamed2434(o.accessConfigs);
-    checkUnnamed2435(o.aliasIpRanges);
+    checkUnnamed2449(o.accessConfigs);
+    checkUnnamed2450(o.aliasIpRanges);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.network, unittest.equals('foo'));
@@ -7489,14 +8333,14 @@
   buildCounterNetworkInterface--;
 }
 
-buildUnnamed2436() {
+buildUnnamed2451() {
   var o = new core.List<api.Network>();
   o.add(buildNetwork());
   o.add(buildNetwork());
   return o;
 }
 
-checkUnnamed2436(core.List<api.Network> o) {
+checkUnnamed2451(core.List<api.Network> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkNetwork(o[0]);
   checkNetwork(o[1]);
@@ -7523,14 +8367,14 @@
   buildCounterNetworkListWarningData--;
 }
 
-buildUnnamed2437() {
+buildUnnamed2452() {
   var o = new core.List<api.NetworkListWarningData>();
   o.add(buildNetworkListWarningData());
   o.add(buildNetworkListWarningData());
   return o;
 }
 
-checkUnnamed2437(core.List<api.NetworkListWarningData> o) {
+checkUnnamed2452(core.List<api.NetworkListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkNetworkListWarningData(o[0]);
   checkNetworkListWarningData(o[1]);
@@ -7542,7 +8386,7 @@
   buildCounterNetworkListWarning++;
   if (buildCounterNetworkListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2437();
+    o.data = buildUnnamed2452();
     o.message = "foo";
   }
   buildCounterNetworkListWarning--;
@@ -7553,7 +8397,7 @@
   buildCounterNetworkListWarning++;
   if (buildCounterNetworkListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2437(o.data);
+    checkUnnamed2452(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterNetworkListWarning--;
@@ -7565,7 +8409,7 @@
   buildCounterNetworkList++;
   if (buildCounterNetworkList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2436();
+    o.items = buildUnnamed2451();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -7579,7 +8423,7 @@
   buildCounterNetworkList++;
   if (buildCounterNetworkList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2436(o.items);
+    checkUnnamed2451(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -7699,14 +8543,14 @@
   buildCounterOperationErrorErrors--;
 }
 
-buildUnnamed2438() {
+buildUnnamed2453() {
   var o = new core.List<api.OperationErrorErrors>();
   o.add(buildOperationErrorErrors());
   o.add(buildOperationErrorErrors());
   return o;
 }
 
-checkUnnamed2438(core.List<api.OperationErrorErrors> o) {
+checkUnnamed2453(core.List<api.OperationErrorErrors> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationErrorErrors(o[0]);
   checkOperationErrorErrors(o[1]);
@@ -7717,7 +8561,7 @@
   var o = new api.OperationError();
   buildCounterOperationError++;
   if (buildCounterOperationError < 3) {
-    o.errors = buildUnnamed2438();
+    o.errors = buildUnnamed2453();
   }
   buildCounterOperationError--;
   return o;
@@ -7726,7 +8570,7 @@
 checkOperationError(api.OperationError o) {
   buildCounterOperationError++;
   if (buildCounterOperationError < 3) {
-    checkUnnamed2438(o.errors);
+    checkUnnamed2453(o.errors);
   }
   buildCounterOperationError--;
 }
@@ -7752,14 +8596,14 @@
   buildCounterOperationWarningsData--;
 }
 
-buildUnnamed2439() {
+buildUnnamed2454() {
   var o = new core.List<api.OperationWarningsData>();
   o.add(buildOperationWarningsData());
   o.add(buildOperationWarningsData());
   return o;
 }
 
-checkUnnamed2439(core.List<api.OperationWarningsData> o) {
+checkUnnamed2454(core.List<api.OperationWarningsData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationWarningsData(o[0]);
   checkOperationWarningsData(o[1]);
@@ -7771,7 +8615,7 @@
   buildCounterOperationWarnings++;
   if (buildCounterOperationWarnings < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2439();
+    o.data = buildUnnamed2454();
     o.message = "foo";
   }
   buildCounterOperationWarnings--;
@@ -7782,20 +8626,20 @@
   buildCounterOperationWarnings++;
   if (buildCounterOperationWarnings < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2439(o.data);
+    checkUnnamed2454(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterOperationWarnings--;
 }
 
-buildUnnamed2440() {
+buildUnnamed2455() {
   var o = new core.List<api.OperationWarnings>();
   o.add(buildOperationWarnings());
   o.add(buildOperationWarnings());
   return o;
 }
 
-checkUnnamed2440(core.List<api.OperationWarnings> o) {
+checkUnnamed2455(core.List<api.OperationWarnings> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationWarnings(o[0]);
   checkOperationWarnings(o[1]);
@@ -7827,7 +8671,7 @@
     o.targetId = "foo";
     o.targetLink = "foo";
     o.user = "foo";
-    o.warnings = buildUnnamed2440();
+    o.warnings = buildUnnamed2455();
     o.zone = "foo";
   }
   buildCounterOperation--;
@@ -7858,20 +8702,20 @@
     unittest.expect(o.targetId, unittest.equals('foo'));
     unittest.expect(o.targetLink, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed2440(o.warnings);
+    checkUnnamed2455(o.warnings);
     unittest.expect(o.zone, unittest.equals('foo'));
   }
   buildCounterOperation--;
 }
 
-buildUnnamed2441() {
+buildUnnamed2456() {
   var o = new core.Map<core.String, api.OperationsScopedList>();
   o["x"] = buildOperationsScopedList();
   o["y"] = buildOperationsScopedList();
   return o;
 }
 
-checkUnnamed2441(core.Map<core.String, api.OperationsScopedList> o) {
+checkUnnamed2456(core.Map<core.String, api.OperationsScopedList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationsScopedList(o["x"]);
   checkOperationsScopedList(o["y"]);
@@ -7899,14 +8743,14 @@
   buildCounterOperationAggregatedListWarningData--;
 }
 
-buildUnnamed2442() {
+buildUnnamed2457() {
   var o = new core.List<api.OperationAggregatedListWarningData>();
   o.add(buildOperationAggregatedListWarningData());
   o.add(buildOperationAggregatedListWarningData());
   return o;
 }
 
-checkUnnamed2442(core.List<api.OperationAggregatedListWarningData> o) {
+checkUnnamed2457(core.List<api.OperationAggregatedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationAggregatedListWarningData(o[0]);
   checkOperationAggregatedListWarningData(o[1]);
@@ -7918,7 +8762,7 @@
   buildCounterOperationAggregatedListWarning++;
   if (buildCounterOperationAggregatedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2442();
+    o.data = buildUnnamed2457();
     o.message = "foo";
   }
   buildCounterOperationAggregatedListWarning--;
@@ -7929,7 +8773,7 @@
   buildCounterOperationAggregatedListWarning++;
   if (buildCounterOperationAggregatedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2442(o.data);
+    checkUnnamed2457(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterOperationAggregatedListWarning--;
@@ -7941,7 +8785,7 @@
   buildCounterOperationAggregatedList++;
   if (buildCounterOperationAggregatedList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2441();
+    o.items = buildUnnamed2456();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -7955,7 +8799,7 @@
   buildCounterOperationAggregatedList++;
   if (buildCounterOperationAggregatedList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2441(o.items);
+    checkUnnamed2456(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -7964,14 +8808,14 @@
   buildCounterOperationAggregatedList--;
 }
 
-buildUnnamed2443() {
+buildUnnamed2458() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed2443(core.List<api.Operation> o) {
+checkUnnamed2458(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -7998,14 +8842,14 @@
   buildCounterOperationListWarningData--;
 }
 
-buildUnnamed2444() {
+buildUnnamed2459() {
   var o = new core.List<api.OperationListWarningData>();
   o.add(buildOperationListWarningData());
   o.add(buildOperationListWarningData());
   return o;
 }
 
-checkUnnamed2444(core.List<api.OperationListWarningData> o) {
+checkUnnamed2459(core.List<api.OperationListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationListWarningData(o[0]);
   checkOperationListWarningData(o[1]);
@@ -8017,7 +8861,7 @@
   buildCounterOperationListWarning++;
   if (buildCounterOperationListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2444();
+    o.data = buildUnnamed2459();
     o.message = "foo";
   }
   buildCounterOperationListWarning--;
@@ -8028,7 +8872,7 @@
   buildCounterOperationListWarning++;
   if (buildCounterOperationListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2444(o.data);
+    checkUnnamed2459(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterOperationListWarning--;
@@ -8040,7 +8884,7 @@
   buildCounterOperationList++;
   if (buildCounterOperationList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2443();
+    o.items = buildUnnamed2458();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -8054,7 +8898,7 @@
   buildCounterOperationList++;
   if (buildCounterOperationList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2443(o.items);
+    checkUnnamed2458(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -8063,14 +8907,14 @@
   buildCounterOperationList--;
 }
 
-buildUnnamed2445() {
+buildUnnamed2460() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed2445(core.List<api.Operation> o) {
+checkUnnamed2460(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -8097,14 +8941,14 @@
   buildCounterOperationsScopedListWarningData--;
 }
 
-buildUnnamed2446() {
+buildUnnamed2461() {
   var o = new core.List<api.OperationsScopedListWarningData>();
   o.add(buildOperationsScopedListWarningData());
   o.add(buildOperationsScopedListWarningData());
   return o;
 }
 
-checkUnnamed2446(core.List<api.OperationsScopedListWarningData> o) {
+checkUnnamed2461(core.List<api.OperationsScopedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationsScopedListWarningData(o[0]);
   checkOperationsScopedListWarningData(o[1]);
@@ -8116,7 +8960,7 @@
   buildCounterOperationsScopedListWarning++;
   if (buildCounterOperationsScopedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2446();
+    o.data = buildUnnamed2461();
     o.message = "foo";
   }
   buildCounterOperationsScopedListWarning--;
@@ -8127,7 +8971,7 @@
   buildCounterOperationsScopedListWarning++;
   if (buildCounterOperationsScopedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2446(o.data);
+    checkUnnamed2461(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterOperationsScopedListWarning--;
@@ -8138,7 +8982,7 @@
   var o = new api.OperationsScopedList();
   buildCounterOperationsScopedList++;
   if (buildCounterOperationsScopedList < 3) {
-    o.operations = buildUnnamed2445();
+    o.operations = buildUnnamed2460();
     o.warning = buildOperationsScopedListWarning();
   }
   buildCounterOperationsScopedList--;
@@ -8148,20 +8992,20 @@
 checkOperationsScopedList(api.OperationsScopedList o) {
   buildCounterOperationsScopedList++;
   if (buildCounterOperationsScopedList < 3) {
-    checkUnnamed2445(o.operations);
+    checkUnnamed2460(o.operations);
     checkOperationsScopedListWarning(o.warning);
   }
   buildCounterOperationsScopedList--;
 }
 
-buildUnnamed2447() {
+buildUnnamed2462() {
   var o = new core.List<api.PathRule>();
   o.add(buildPathRule());
   o.add(buildPathRule());
   return o;
 }
 
-checkUnnamed2447(core.List<api.PathRule> o) {
+checkUnnamed2462(core.List<api.PathRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPathRule(o[0]);
   checkPathRule(o[1]);
@@ -8175,7 +9019,7 @@
     o.defaultService = "foo";
     o.description = "foo";
     o.name = "foo";
-    o.pathRules = buildUnnamed2447();
+    o.pathRules = buildUnnamed2462();
   }
   buildCounterPathMatcher--;
   return o;
@@ -8187,19 +9031,19 @@
     unittest.expect(o.defaultService, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2447(o.pathRules);
+    checkUnnamed2462(o.pathRules);
   }
   buildCounterPathMatcher--;
 }
 
-buildUnnamed2448() {
+buildUnnamed2463() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2448(core.List<core.String> o) {
+checkUnnamed2463(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -8210,7 +9054,7 @@
   var o = new api.PathRule();
   buildCounterPathRule++;
   if (buildCounterPathRule < 3) {
-    o.paths = buildUnnamed2448();
+    o.paths = buildUnnamed2463();
     o.service = "foo";
   }
   buildCounterPathRule--;
@@ -8220,33 +9064,33 @@
 checkPathRule(api.PathRule o) {
   buildCounterPathRule++;
   if (buildCounterPathRule < 3) {
-    checkUnnamed2448(o.paths);
+    checkUnnamed2463(o.paths);
     unittest.expect(o.service, unittest.equals('foo'));
   }
   buildCounterPathRule--;
 }
 
-buildUnnamed2449() {
+buildUnnamed2464() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2449(core.List<core.String> o) {
+checkUnnamed2464(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2450() {
+buildUnnamed2465() {
   var o = new core.List<api.Quota>();
   o.add(buildQuota());
   o.add(buildQuota());
   return o;
 }
 
-checkUnnamed2450(core.List<api.Quota> o) {
+checkUnnamed2465(core.List<api.Quota> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQuota(o[0]);
   checkQuota(o[1]);
@@ -8261,11 +9105,11 @@
     o.creationTimestamp = "foo";
     o.defaultServiceAccount = "foo";
     o.description = "foo";
-    o.enabledFeatures = buildUnnamed2449();
+    o.enabledFeatures = buildUnnamed2464();
     o.id = "foo";
     o.kind = "foo";
     o.name = "foo";
-    o.quotas = buildUnnamed2450();
+    o.quotas = buildUnnamed2465();
     o.selfLink = "foo";
     o.usageExportLocation = buildUsageExportLocation();
     o.xpnProjectStatus = "foo";
@@ -8281,11 +9125,11 @@
     unittest.expect(o.creationTimestamp, unittest.equals('foo'));
     unittest.expect(o.defaultServiceAccount, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed2449(o.enabledFeatures);
+    checkUnnamed2464(o.enabledFeatures);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2450(o.quotas);
+    checkUnnamed2465(o.quotas);
     unittest.expect(o.selfLink, unittest.equals('foo'));
     checkUsageExportLocation(o.usageExportLocation);
     unittest.expect(o.xpnProjectStatus, unittest.equals('foo'));
@@ -8332,14 +9176,14 @@
   buildCounterProjectsEnableXpnResourceRequest--;
 }
 
-buildUnnamed2451() {
+buildUnnamed2466() {
   var o = new core.List<api.XpnResourceId>();
   o.add(buildXpnResourceId());
   o.add(buildXpnResourceId());
   return o;
 }
 
-checkUnnamed2451(core.List<api.XpnResourceId> o) {
+checkUnnamed2466(core.List<api.XpnResourceId> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkXpnResourceId(o[0]);
   checkXpnResourceId(o[1]);
@@ -8352,7 +9196,7 @@
   if (buildCounterProjectsGetXpnResources < 3) {
     o.kind = "foo";
     o.nextPageToken = "foo";
-    o.resources = buildUnnamed2451();
+    o.resources = buildUnnamed2466();
   }
   buildCounterProjectsGetXpnResources--;
   return o;
@@ -8363,7 +9207,7 @@
   if (buildCounterProjectsGetXpnResources < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2451(o.resources);
+    checkUnnamed2466(o.resources);
   }
   buildCounterProjectsGetXpnResources--;
 }
@@ -8410,27 +9254,27 @@
   buildCounterQuota--;
 }
 
-buildUnnamed2452() {
+buildUnnamed2467() {
   var o = new core.List<api.Quota>();
   o.add(buildQuota());
   o.add(buildQuota());
   return o;
 }
 
-checkUnnamed2452(core.List<api.Quota> o) {
+checkUnnamed2467(core.List<api.Quota> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQuota(o[0]);
   checkQuota(o[1]);
 }
 
-buildUnnamed2453() {
+buildUnnamed2468() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2453(core.List<core.String> o) {
+checkUnnamed2468(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -8447,10 +9291,10 @@
     o.id = "foo";
     o.kind = "foo";
     o.name = "foo";
-    o.quotas = buildUnnamed2452();
+    o.quotas = buildUnnamed2467();
     o.selfLink = "foo";
     o.status = "foo";
-    o.zones = buildUnnamed2453();
+    o.zones = buildUnnamed2468();
   }
   buildCounterRegion--;
   return o;
@@ -8465,22 +9309,22 @@
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2452(o.quotas);
+    checkUnnamed2467(o.quotas);
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals('foo'));
-    checkUnnamed2453(o.zones);
+    checkUnnamed2468(o.zones);
   }
   buildCounterRegion--;
 }
 
-buildUnnamed2454() {
+buildUnnamed2469() {
   var o = new core.List<api.Autoscaler>();
   o.add(buildAutoscaler());
   o.add(buildAutoscaler());
   return o;
 }
 
-checkUnnamed2454(core.List<api.Autoscaler> o) {
+checkUnnamed2469(core.List<api.Autoscaler> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAutoscaler(o[0]);
   checkAutoscaler(o[1]);
@@ -8507,14 +9351,14 @@
   buildCounterRegionAutoscalerListWarningData--;
 }
 
-buildUnnamed2455() {
+buildUnnamed2470() {
   var o = new core.List<api.RegionAutoscalerListWarningData>();
   o.add(buildRegionAutoscalerListWarningData());
   o.add(buildRegionAutoscalerListWarningData());
   return o;
 }
 
-checkUnnamed2455(core.List<api.RegionAutoscalerListWarningData> o) {
+checkUnnamed2470(core.List<api.RegionAutoscalerListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRegionAutoscalerListWarningData(o[0]);
   checkRegionAutoscalerListWarningData(o[1]);
@@ -8526,7 +9370,7 @@
   buildCounterRegionAutoscalerListWarning++;
   if (buildCounterRegionAutoscalerListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2455();
+    o.data = buildUnnamed2470();
     o.message = "foo";
   }
   buildCounterRegionAutoscalerListWarning--;
@@ -8537,7 +9381,7 @@
   buildCounterRegionAutoscalerListWarning++;
   if (buildCounterRegionAutoscalerListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2455(o.data);
+    checkUnnamed2470(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterRegionAutoscalerListWarning--;
@@ -8549,7 +9393,7 @@
   buildCounterRegionAutoscalerList++;
   if (buildCounterRegionAutoscalerList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2454();
+    o.items = buildUnnamed2469();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -8563,7 +9407,7 @@
   buildCounterRegionAutoscalerList++;
   if (buildCounterRegionAutoscalerList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2454(o.items);
+    checkUnnamed2469(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -8572,14 +9416,14 @@
   buildCounterRegionAutoscalerList--;
 }
 
-buildUnnamed2456() {
+buildUnnamed2471() {
   var o = new core.List<api.InstanceGroup>();
   o.add(buildInstanceGroup());
   o.add(buildInstanceGroup());
   return o;
 }
 
-checkUnnamed2456(core.List<api.InstanceGroup> o) {
+checkUnnamed2471(core.List<api.InstanceGroup> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstanceGroup(o[0]);
   checkInstanceGroup(o[1]);
@@ -8607,14 +9451,14 @@
   buildCounterRegionInstanceGroupListWarningData--;
 }
 
-buildUnnamed2457() {
+buildUnnamed2472() {
   var o = new core.List<api.RegionInstanceGroupListWarningData>();
   o.add(buildRegionInstanceGroupListWarningData());
   o.add(buildRegionInstanceGroupListWarningData());
   return o;
 }
 
-checkUnnamed2457(core.List<api.RegionInstanceGroupListWarningData> o) {
+checkUnnamed2472(core.List<api.RegionInstanceGroupListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRegionInstanceGroupListWarningData(o[0]);
   checkRegionInstanceGroupListWarningData(o[1]);
@@ -8626,7 +9470,7 @@
   buildCounterRegionInstanceGroupListWarning++;
   if (buildCounterRegionInstanceGroupListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2457();
+    o.data = buildUnnamed2472();
     o.message = "foo";
   }
   buildCounterRegionInstanceGroupListWarning--;
@@ -8637,7 +9481,7 @@
   buildCounterRegionInstanceGroupListWarning++;
   if (buildCounterRegionInstanceGroupListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2457(o.data);
+    checkUnnamed2472(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterRegionInstanceGroupListWarning--;
@@ -8649,7 +9493,7 @@
   buildCounterRegionInstanceGroupList++;
   if (buildCounterRegionInstanceGroupList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2456();
+    o.items = buildUnnamed2471();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -8663,7 +9507,7 @@
   buildCounterRegionInstanceGroupList++;
   if (buildCounterRegionInstanceGroupList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2456(o.items);
+    checkUnnamed2471(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -8672,14 +9516,14 @@
   buildCounterRegionInstanceGroupList--;
 }
 
-buildUnnamed2458() {
+buildUnnamed2473() {
   var o = new core.List<api.InstanceGroupManager>();
   o.add(buildInstanceGroupManager());
   o.add(buildInstanceGroupManager());
   return o;
 }
 
-checkUnnamed2458(core.List<api.InstanceGroupManager> o) {
+checkUnnamed2473(core.List<api.InstanceGroupManager> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstanceGroupManager(o[0]);
   checkInstanceGroupManager(o[1]);
@@ -8707,14 +9551,14 @@
   buildCounterRegionInstanceGroupManagerListWarningData--;
 }
 
-buildUnnamed2459() {
+buildUnnamed2474() {
   var o = new core.List<api.RegionInstanceGroupManagerListWarningData>();
   o.add(buildRegionInstanceGroupManagerListWarningData());
   o.add(buildRegionInstanceGroupManagerListWarningData());
   return o;
 }
 
-checkUnnamed2459(core.List<api.RegionInstanceGroupManagerListWarningData> o) {
+checkUnnamed2474(core.List<api.RegionInstanceGroupManagerListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRegionInstanceGroupManagerListWarningData(o[0]);
   checkRegionInstanceGroupManagerListWarningData(o[1]);
@@ -8726,7 +9570,7 @@
   buildCounterRegionInstanceGroupManagerListWarning++;
   if (buildCounterRegionInstanceGroupManagerListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2459();
+    o.data = buildUnnamed2474();
     o.message = "foo";
   }
   buildCounterRegionInstanceGroupManagerListWarning--;
@@ -8738,7 +9582,7 @@
   buildCounterRegionInstanceGroupManagerListWarning++;
   if (buildCounterRegionInstanceGroupManagerListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2459(o.data);
+    checkUnnamed2474(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterRegionInstanceGroupManagerListWarning--;
@@ -8750,7 +9594,7 @@
   buildCounterRegionInstanceGroupManagerList++;
   if (buildCounterRegionInstanceGroupManagerList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2458();
+    o.items = buildUnnamed2473();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -8764,7 +9608,7 @@
   buildCounterRegionInstanceGroupManagerList++;
   if (buildCounterRegionInstanceGroupManagerList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2458(o.items);
+    checkUnnamed2473(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -8773,14 +9617,14 @@
   buildCounterRegionInstanceGroupManagerList--;
 }
 
-buildUnnamed2460() {
+buildUnnamed2475() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2460(core.List<core.String> o) {
+checkUnnamed2475(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -8791,7 +9635,7 @@
   var o = new api.RegionInstanceGroupManagersAbandonInstancesRequest();
   buildCounterRegionInstanceGroupManagersAbandonInstancesRequest++;
   if (buildCounterRegionInstanceGroupManagersAbandonInstancesRequest < 3) {
-    o.instances = buildUnnamed2460();
+    o.instances = buildUnnamed2475();
   }
   buildCounterRegionInstanceGroupManagersAbandonInstancesRequest--;
   return o;
@@ -8801,19 +9645,19 @@
     api.RegionInstanceGroupManagersAbandonInstancesRequest o) {
   buildCounterRegionInstanceGroupManagersAbandonInstancesRequest++;
   if (buildCounterRegionInstanceGroupManagersAbandonInstancesRequest < 3) {
-    checkUnnamed2460(o.instances);
+    checkUnnamed2475(o.instances);
   }
   buildCounterRegionInstanceGroupManagersAbandonInstancesRequest--;
 }
 
-buildUnnamed2461() {
+buildUnnamed2476() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2461(core.List<core.String> o) {
+checkUnnamed2476(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -8824,7 +9668,7 @@
   var o = new api.RegionInstanceGroupManagersDeleteInstancesRequest();
   buildCounterRegionInstanceGroupManagersDeleteInstancesRequest++;
   if (buildCounterRegionInstanceGroupManagersDeleteInstancesRequest < 3) {
-    o.instances = buildUnnamed2461();
+    o.instances = buildUnnamed2476();
   }
   buildCounterRegionInstanceGroupManagersDeleteInstancesRequest--;
   return o;
@@ -8834,19 +9678,19 @@
     api.RegionInstanceGroupManagersDeleteInstancesRequest o) {
   buildCounterRegionInstanceGroupManagersDeleteInstancesRequest++;
   if (buildCounterRegionInstanceGroupManagersDeleteInstancesRequest < 3) {
-    checkUnnamed2461(o.instances);
+    checkUnnamed2476(o.instances);
   }
   buildCounterRegionInstanceGroupManagersDeleteInstancesRequest--;
 }
 
-buildUnnamed2462() {
+buildUnnamed2477() {
   var o = new core.List<api.ManagedInstance>();
   o.add(buildManagedInstance());
   o.add(buildManagedInstance());
   return o;
 }
 
-checkUnnamed2462(core.List<api.ManagedInstance> o) {
+checkUnnamed2477(core.List<api.ManagedInstance> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkManagedInstance(o[0]);
   checkManagedInstance(o[1]);
@@ -8857,7 +9701,7 @@
   var o = new api.RegionInstanceGroupManagersListInstancesResponse();
   buildCounterRegionInstanceGroupManagersListInstancesResponse++;
   if (buildCounterRegionInstanceGroupManagersListInstancesResponse < 3) {
-    o.managedInstances = buildUnnamed2462();
+    o.managedInstances = buildUnnamed2477();
   }
   buildCounterRegionInstanceGroupManagersListInstancesResponse--;
   return o;
@@ -8867,19 +9711,19 @@
     api.RegionInstanceGroupManagersListInstancesResponse o) {
   buildCounterRegionInstanceGroupManagersListInstancesResponse++;
   if (buildCounterRegionInstanceGroupManagersListInstancesResponse < 3) {
-    checkUnnamed2462(o.managedInstances);
+    checkUnnamed2477(o.managedInstances);
   }
   buildCounterRegionInstanceGroupManagersListInstancesResponse--;
 }
 
-buildUnnamed2463() {
+buildUnnamed2478() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2463(core.List<core.String> o) {
+checkUnnamed2478(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -8890,7 +9734,7 @@
   var o = new api.RegionInstanceGroupManagersRecreateRequest();
   buildCounterRegionInstanceGroupManagersRecreateRequest++;
   if (buildCounterRegionInstanceGroupManagersRecreateRequest < 3) {
-    o.instances = buildUnnamed2463();
+    o.instances = buildUnnamed2478();
   }
   buildCounterRegionInstanceGroupManagersRecreateRequest--;
   return o;
@@ -8900,19 +9744,19 @@
     api.RegionInstanceGroupManagersRecreateRequest o) {
   buildCounterRegionInstanceGroupManagersRecreateRequest++;
   if (buildCounterRegionInstanceGroupManagersRecreateRequest < 3) {
-    checkUnnamed2463(o.instances);
+    checkUnnamed2478(o.instances);
   }
   buildCounterRegionInstanceGroupManagersRecreateRequest--;
 }
 
-buildUnnamed2464() {
+buildUnnamed2479() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2464(core.List<core.String> o) {
+checkUnnamed2479(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -8924,7 +9768,7 @@
   buildCounterRegionInstanceGroupManagersSetTargetPoolsRequest++;
   if (buildCounterRegionInstanceGroupManagersSetTargetPoolsRequest < 3) {
     o.fingerprint = "foo";
-    o.targetPools = buildUnnamed2464();
+    o.targetPools = buildUnnamed2479();
   }
   buildCounterRegionInstanceGroupManagersSetTargetPoolsRequest--;
   return o;
@@ -8935,7 +9779,7 @@
   buildCounterRegionInstanceGroupManagersSetTargetPoolsRequest++;
   if (buildCounterRegionInstanceGroupManagersSetTargetPoolsRequest < 3) {
     unittest.expect(o.fingerprint, unittest.equals('foo'));
-    checkUnnamed2464(o.targetPools);
+    checkUnnamed2479(o.targetPools);
   }
   buildCounterRegionInstanceGroupManagersSetTargetPoolsRequest--;
 }
@@ -8960,14 +9804,14 @@
   buildCounterRegionInstanceGroupManagersSetTemplateRequest--;
 }
 
-buildUnnamed2465() {
+buildUnnamed2480() {
   var o = new core.List<api.InstanceWithNamedPorts>();
   o.add(buildInstanceWithNamedPorts());
   o.add(buildInstanceWithNamedPorts());
   return o;
 }
 
-checkUnnamed2465(core.List<api.InstanceWithNamedPorts> o) {
+checkUnnamed2480(core.List<api.InstanceWithNamedPorts> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstanceWithNamedPorts(o[0]);
   checkInstanceWithNamedPorts(o[1]);
@@ -8995,14 +9839,14 @@
   buildCounterRegionInstanceGroupsListInstancesWarningData--;
 }
 
-buildUnnamed2466() {
+buildUnnamed2481() {
   var o = new core.List<api.RegionInstanceGroupsListInstancesWarningData>();
   o.add(buildRegionInstanceGroupsListInstancesWarningData());
   o.add(buildRegionInstanceGroupsListInstancesWarningData());
   return o;
 }
 
-checkUnnamed2466(
+checkUnnamed2481(
     core.List<api.RegionInstanceGroupsListInstancesWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRegionInstanceGroupsListInstancesWarningData(o[0]);
@@ -9015,7 +9859,7 @@
   buildCounterRegionInstanceGroupsListInstancesWarning++;
   if (buildCounterRegionInstanceGroupsListInstancesWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2466();
+    o.data = buildUnnamed2481();
     o.message = "foo";
   }
   buildCounterRegionInstanceGroupsListInstancesWarning--;
@@ -9027,7 +9871,7 @@
   buildCounterRegionInstanceGroupsListInstancesWarning++;
   if (buildCounterRegionInstanceGroupsListInstancesWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2466(o.data);
+    checkUnnamed2481(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterRegionInstanceGroupsListInstancesWarning--;
@@ -9039,7 +9883,7 @@
   buildCounterRegionInstanceGroupsListInstances++;
   if (buildCounterRegionInstanceGroupsListInstances < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2465();
+    o.items = buildUnnamed2480();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -9054,7 +9898,7 @@
   buildCounterRegionInstanceGroupsListInstances++;
   if (buildCounterRegionInstanceGroupsListInstances < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2465(o.items);
+    checkUnnamed2480(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -9085,14 +9929,14 @@
   buildCounterRegionInstanceGroupsListInstancesRequest--;
 }
 
-buildUnnamed2467() {
+buildUnnamed2482() {
   var o = new core.List<api.NamedPort>();
   o.add(buildNamedPort());
   o.add(buildNamedPort());
   return o;
 }
 
-checkUnnamed2467(core.List<api.NamedPort> o) {
+checkUnnamed2482(core.List<api.NamedPort> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkNamedPort(o[0]);
   checkNamedPort(o[1]);
@@ -9104,7 +9948,7 @@
   buildCounterRegionInstanceGroupsSetNamedPortsRequest++;
   if (buildCounterRegionInstanceGroupsSetNamedPortsRequest < 3) {
     o.fingerprint = "foo";
-    o.namedPorts = buildUnnamed2467();
+    o.namedPorts = buildUnnamed2482();
   }
   buildCounterRegionInstanceGroupsSetNamedPortsRequest--;
   return o;
@@ -9115,19 +9959,19 @@
   buildCounterRegionInstanceGroupsSetNamedPortsRequest++;
   if (buildCounterRegionInstanceGroupsSetNamedPortsRequest < 3) {
     unittest.expect(o.fingerprint, unittest.equals('foo'));
-    checkUnnamed2467(o.namedPorts);
+    checkUnnamed2482(o.namedPorts);
   }
   buildCounterRegionInstanceGroupsSetNamedPortsRequest--;
 }
 
-buildUnnamed2468() {
+buildUnnamed2483() {
   var o = new core.List<api.Region>();
   o.add(buildRegion());
   o.add(buildRegion());
   return o;
 }
 
-checkUnnamed2468(core.List<api.Region> o) {
+checkUnnamed2483(core.List<api.Region> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRegion(o[0]);
   checkRegion(o[1]);
@@ -9154,14 +9998,14 @@
   buildCounterRegionListWarningData--;
 }
 
-buildUnnamed2469() {
+buildUnnamed2484() {
   var o = new core.List<api.RegionListWarningData>();
   o.add(buildRegionListWarningData());
   o.add(buildRegionListWarningData());
   return o;
 }
 
-checkUnnamed2469(core.List<api.RegionListWarningData> o) {
+checkUnnamed2484(core.List<api.RegionListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRegionListWarningData(o[0]);
   checkRegionListWarningData(o[1]);
@@ -9173,7 +10017,7 @@
   buildCounterRegionListWarning++;
   if (buildCounterRegionListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2469();
+    o.data = buildUnnamed2484();
     o.message = "foo";
   }
   buildCounterRegionListWarning--;
@@ -9184,7 +10028,7 @@
   buildCounterRegionListWarning++;
   if (buildCounterRegionListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2469(o.data);
+    checkUnnamed2484(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterRegionListWarning--;
@@ -9196,7 +10040,7 @@
   buildCounterRegionList++;
   if (buildCounterRegionList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2468();
+    o.items = buildUnnamed2483();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -9210,7 +10054,7 @@
   buildCounterRegionList++;
   if (buildCounterRegionList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2468(o.items);
+    checkUnnamed2483(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -9259,14 +10103,14 @@
   buildCounterResourceGroupReference--;
 }
 
-buildUnnamed2470() {
+buildUnnamed2485() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2470(core.List<core.String> o) {
+checkUnnamed2485(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -9293,14 +10137,14 @@
   buildCounterRouteWarningsData--;
 }
 
-buildUnnamed2471() {
+buildUnnamed2486() {
   var o = new core.List<api.RouteWarningsData>();
   o.add(buildRouteWarningsData());
   o.add(buildRouteWarningsData());
   return o;
 }
 
-checkUnnamed2471(core.List<api.RouteWarningsData> o) {
+checkUnnamed2486(core.List<api.RouteWarningsData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRouteWarningsData(o[0]);
   checkRouteWarningsData(o[1]);
@@ -9312,7 +10156,7 @@
   buildCounterRouteWarnings++;
   if (buildCounterRouteWarnings < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2471();
+    o.data = buildUnnamed2486();
     o.message = "foo";
   }
   buildCounterRouteWarnings--;
@@ -9323,20 +10167,20 @@
   buildCounterRouteWarnings++;
   if (buildCounterRouteWarnings < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2471(o.data);
+    checkUnnamed2486(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterRouteWarnings--;
 }
 
-buildUnnamed2472() {
+buildUnnamed2487() {
   var o = new core.List<api.RouteWarnings>();
   o.add(buildRouteWarnings());
   o.add(buildRouteWarnings());
   return o;
 }
 
-checkUnnamed2472(core.List<api.RouteWarnings> o) {
+checkUnnamed2487(core.List<api.RouteWarnings> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRouteWarnings(o[0]);
   checkRouteWarnings(o[1]);
@@ -9362,8 +10206,8 @@
     o.nextHopVpnTunnel = "foo";
     o.priority = 42;
     o.selfLink = "foo";
-    o.tags = buildUnnamed2470();
-    o.warnings = buildUnnamed2472();
+    o.tags = buildUnnamed2485();
+    o.warnings = buildUnnamed2487();
   }
   buildCounterRoute--;
   return o;
@@ -9387,20 +10231,20 @@
     unittest.expect(o.nextHopVpnTunnel, unittest.equals('foo'));
     unittest.expect(o.priority, unittest.equals(42));
     unittest.expect(o.selfLink, unittest.equals('foo'));
-    checkUnnamed2470(o.tags);
-    checkUnnamed2472(o.warnings);
+    checkUnnamed2485(o.tags);
+    checkUnnamed2487(o.warnings);
   }
   buildCounterRoute--;
 }
 
-buildUnnamed2473() {
+buildUnnamed2488() {
   var o = new core.List<api.Route>();
   o.add(buildRoute());
   o.add(buildRoute());
   return o;
 }
 
-checkUnnamed2473(core.List<api.Route> o) {
+checkUnnamed2488(core.List<api.Route> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRoute(o[0]);
   checkRoute(o[1]);
@@ -9427,14 +10271,14 @@
   buildCounterRouteListWarningData--;
 }
 
-buildUnnamed2474() {
+buildUnnamed2489() {
   var o = new core.List<api.RouteListWarningData>();
   o.add(buildRouteListWarningData());
   o.add(buildRouteListWarningData());
   return o;
 }
 
-checkUnnamed2474(core.List<api.RouteListWarningData> o) {
+checkUnnamed2489(core.List<api.RouteListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRouteListWarningData(o[0]);
   checkRouteListWarningData(o[1]);
@@ -9446,7 +10290,7 @@
   buildCounterRouteListWarning++;
   if (buildCounterRouteListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2474();
+    o.data = buildUnnamed2489();
     o.message = "foo";
   }
   buildCounterRouteListWarning--;
@@ -9457,7 +10301,7 @@
   buildCounterRouteListWarning++;
   if (buildCounterRouteListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2474(o.data);
+    checkUnnamed2489(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterRouteListWarning--;
@@ -9469,7 +10313,7 @@
   buildCounterRouteList++;
   if (buildCounterRouteList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2473();
+    o.items = buildUnnamed2488();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -9483,7 +10327,7 @@
   buildCounterRouteList++;
   if (buildCounterRouteList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2473(o.items);
+    checkUnnamed2488(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -9492,27 +10336,27 @@
   buildCounterRouteList--;
 }
 
-buildUnnamed2475() {
+buildUnnamed2490() {
   var o = new core.List<api.RouterBgpPeer>();
   o.add(buildRouterBgpPeer());
   o.add(buildRouterBgpPeer());
   return o;
 }
 
-checkUnnamed2475(core.List<api.RouterBgpPeer> o) {
+checkUnnamed2490(core.List<api.RouterBgpPeer> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRouterBgpPeer(o[0]);
   checkRouterBgpPeer(o[1]);
 }
 
-buildUnnamed2476() {
+buildUnnamed2491() {
   var o = new core.List<api.RouterInterface>();
   o.add(buildRouterInterface());
   o.add(buildRouterInterface());
   return o;
 }
 
-checkUnnamed2476(core.List<api.RouterInterface> o) {
+checkUnnamed2491(core.List<api.RouterInterface> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRouterInterface(o[0]);
   checkRouterInterface(o[1]);
@@ -9524,11 +10368,11 @@
   buildCounterRouter++;
   if (buildCounterRouter < 3) {
     o.bgp = buildRouterBgp();
-    o.bgpPeers = buildUnnamed2475();
+    o.bgpPeers = buildUnnamed2490();
     o.creationTimestamp = "foo";
     o.description = "foo";
     o.id = "foo";
-    o.interfaces = buildUnnamed2476();
+    o.interfaces = buildUnnamed2491();
     o.kind = "foo";
     o.name = "foo";
     o.network = "foo";
@@ -9543,11 +10387,11 @@
   buildCounterRouter++;
   if (buildCounterRouter < 3) {
     checkRouterBgp(o.bgp);
-    checkUnnamed2475(o.bgpPeers);
+    checkUnnamed2490(o.bgpPeers);
     unittest.expect(o.creationTimestamp, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2476(o.interfaces);
+    checkUnnamed2491(o.interfaces);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.network, unittest.equals('foo'));
@@ -9557,14 +10401,14 @@
   buildCounterRouter--;
 }
 
-buildUnnamed2477() {
+buildUnnamed2492() {
   var o = new core.Map<core.String, api.RoutersScopedList>();
   o["x"] = buildRoutersScopedList();
   o["y"] = buildRoutersScopedList();
   return o;
 }
 
-checkUnnamed2477(core.Map<core.String, api.RoutersScopedList> o) {
+checkUnnamed2492(core.Map<core.String, api.RoutersScopedList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRoutersScopedList(o["x"]);
   checkRoutersScopedList(o["y"]);
@@ -9591,14 +10435,14 @@
   buildCounterRouterAggregatedListWarningData--;
 }
 
-buildUnnamed2478() {
+buildUnnamed2493() {
   var o = new core.List<api.RouterAggregatedListWarningData>();
   o.add(buildRouterAggregatedListWarningData());
   o.add(buildRouterAggregatedListWarningData());
   return o;
 }
 
-checkUnnamed2478(core.List<api.RouterAggregatedListWarningData> o) {
+checkUnnamed2493(core.List<api.RouterAggregatedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRouterAggregatedListWarningData(o[0]);
   checkRouterAggregatedListWarningData(o[1]);
@@ -9610,7 +10454,7 @@
   buildCounterRouterAggregatedListWarning++;
   if (buildCounterRouterAggregatedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2478();
+    o.data = buildUnnamed2493();
     o.message = "foo";
   }
   buildCounterRouterAggregatedListWarning--;
@@ -9621,7 +10465,7 @@
   buildCounterRouterAggregatedListWarning++;
   if (buildCounterRouterAggregatedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2478(o.data);
+    checkUnnamed2493(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterRouterAggregatedListWarning--;
@@ -9633,7 +10477,7 @@
   buildCounterRouterAggregatedList++;
   if (buildCounterRouterAggregatedList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2477();
+    o.items = buildUnnamed2492();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -9647,7 +10491,7 @@
   buildCounterRouterAggregatedList++;
   if (buildCounterRouterAggregatedList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2477(o.items);
+    checkUnnamed2492(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -9710,6 +10554,7 @@
   buildCounterRouterInterface++;
   if (buildCounterRouterInterface < 3) {
     o.ipRange = "foo";
+    o.linkedInterconnectAttachment = "foo";
     o.linkedVpnTunnel = "foo";
     o.name = "foo";
   }
@@ -9721,20 +10566,21 @@
   buildCounterRouterInterface++;
   if (buildCounterRouterInterface < 3) {
     unittest.expect(o.ipRange, unittest.equals('foo'));
+    unittest.expect(o.linkedInterconnectAttachment, unittest.equals('foo'));
     unittest.expect(o.linkedVpnTunnel, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
   }
   buildCounterRouterInterface--;
 }
 
-buildUnnamed2479() {
+buildUnnamed2494() {
   var o = new core.List<api.Router>();
   o.add(buildRouter());
   o.add(buildRouter());
   return o;
 }
 
-checkUnnamed2479(core.List<api.Router> o) {
+checkUnnamed2494(core.List<api.Router> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRouter(o[0]);
   checkRouter(o[1]);
@@ -9761,14 +10607,14 @@
   buildCounterRouterListWarningData--;
 }
 
-buildUnnamed2480() {
+buildUnnamed2495() {
   var o = new core.List<api.RouterListWarningData>();
   o.add(buildRouterListWarningData());
   o.add(buildRouterListWarningData());
   return o;
 }
 
-checkUnnamed2480(core.List<api.RouterListWarningData> o) {
+checkUnnamed2495(core.List<api.RouterListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRouterListWarningData(o[0]);
   checkRouterListWarningData(o[1]);
@@ -9780,7 +10626,7 @@
   buildCounterRouterListWarning++;
   if (buildCounterRouterListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2480();
+    o.data = buildUnnamed2495();
     o.message = "foo";
   }
   buildCounterRouterListWarning--;
@@ -9791,7 +10637,7 @@
   buildCounterRouterListWarning++;
   if (buildCounterRouterListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2480(o.data);
+    checkUnnamed2495(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterRouterListWarning--;
@@ -9803,7 +10649,7 @@
   buildCounterRouterList++;
   if (buildCounterRouterList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2479();
+    o.items = buildUnnamed2494();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -9817,7 +10663,7 @@
   buildCounterRouterList++;
   if (buildCounterRouterList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2479(o.items);
+    checkUnnamed2494(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -9826,40 +10672,40 @@
   buildCounterRouterList--;
 }
 
-buildUnnamed2481() {
+buildUnnamed2496() {
   var o = new core.List<api.Route>();
   o.add(buildRoute());
   o.add(buildRoute());
   return o;
 }
 
-checkUnnamed2481(core.List<api.Route> o) {
+checkUnnamed2496(core.List<api.Route> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRoute(o[0]);
   checkRoute(o[1]);
 }
 
-buildUnnamed2482() {
+buildUnnamed2497() {
   var o = new core.List<api.Route>();
   o.add(buildRoute());
   o.add(buildRoute());
   return o;
 }
 
-checkUnnamed2482(core.List<api.Route> o) {
+checkUnnamed2497(core.List<api.Route> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRoute(o[0]);
   checkRoute(o[1]);
 }
 
-buildUnnamed2483() {
+buildUnnamed2498() {
   var o = new core.List<api.RouterStatusBgpPeerStatus>();
   o.add(buildRouterStatusBgpPeerStatus());
   o.add(buildRouterStatusBgpPeerStatus());
   return o;
 }
 
-checkUnnamed2483(core.List<api.RouterStatusBgpPeerStatus> o) {
+checkUnnamed2498(core.List<api.RouterStatusBgpPeerStatus> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRouterStatusBgpPeerStatus(o[0]);
   checkRouterStatusBgpPeerStatus(o[1]);
@@ -9870,9 +10716,9 @@
   var o = new api.RouterStatus();
   buildCounterRouterStatus++;
   if (buildCounterRouterStatus < 3) {
-    o.bestRoutes = buildUnnamed2481();
-    o.bestRoutesForRouter = buildUnnamed2482();
-    o.bgpPeerStatus = buildUnnamed2483();
+    o.bestRoutes = buildUnnamed2496();
+    o.bestRoutesForRouter = buildUnnamed2497();
+    o.bgpPeerStatus = buildUnnamed2498();
     o.network = "foo";
   }
   buildCounterRouterStatus--;
@@ -9882,22 +10728,22 @@
 checkRouterStatus(api.RouterStatus o) {
   buildCounterRouterStatus++;
   if (buildCounterRouterStatus < 3) {
-    checkUnnamed2481(o.bestRoutes);
-    checkUnnamed2482(o.bestRoutesForRouter);
-    checkUnnamed2483(o.bgpPeerStatus);
+    checkUnnamed2496(o.bestRoutes);
+    checkUnnamed2497(o.bestRoutesForRouter);
+    checkUnnamed2498(o.bgpPeerStatus);
     unittest.expect(o.network, unittest.equals('foo'));
   }
   buildCounterRouterStatus--;
 }
 
-buildUnnamed2484() {
+buildUnnamed2499() {
   var o = new core.List<api.Route>();
   o.add(buildRoute());
   o.add(buildRoute());
   return o;
 }
 
-checkUnnamed2484(core.List<api.Route> o) {
+checkUnnamed2499(core.List<api.Route> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRoute(o[0]);
   checkRoute(o[1]);
@@ -9908,7 +10754,7 @@
   var o = new api.RouterStatusBgpPeerStatus();
   buildCounterRouterStatusBgpPeerStatus++;
   if (buildCounterRouterStatusBgpPeerStatus < 3) {
-    o.advertisedRoutes = buildUnnamed2484();
+    o.advertisedRoutes = buildUnnamed2499();
     o.ipAddress = "foo";
     o.linkedVpnTunnel = "foo";
     o.name = "foo";
@@ -9926,7 +10772,7 @@
 checkRouterStatusBgpPeerStatus(api.RouterStatusBgpPeerStatus o) {
   buildCounterRouterStatusBgpPeerStatus++;
   if (buildCounterRouterStatusBgpPeerStatus < 3) {
-    checkUnnamed2484(o.advertisedRoutes);
+    checkUnnamed2499(o.advertisedRoutes);
     unittest.expect(o.ipAddress, unittest.equals('foo'));
     unittest.expect(o.linkedVpnTunnel, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
@@ -9980,14 +10826,14 @@
   buildCounterRoutersPreviewResponse--;
 }
 
-buildUnnamed2485() {
+buildUnnamed2500() {
   var o = new core.List<api.Router>();
   o.add(buildRouter());
   o.add(buildRouter());
   return o;
 }
 
-checkUnnamed2485(core.List<api.Router> o) {
+checkUnnamed2500(core.List<api.Router> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRouter(o[0]);
   checkRouter(o[1]);
@@ -10014,14 +10860,14 @@
   buildCounterRoutersScopedListWarningData--;
 }
 
-buildUnnamed2486() {
+buildUnnamed2501() {
   var o = new core.List<api.RoutersScopedListWarningData>();
   o.add(buildRoutersScopedListWarningData());
   o.add(buildRoutersScopedListWarningData());
   return o;
 }
 
-checkUnnamed2486(core.List<api.RoutersScopedListWarningData> o) {
+checkUnnamed2501(core.List<api.RoutersScopedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRoutersScopedListWarningData(o[0]);
   checkRoutersScopedListWarningData(o[1]);
@@ -10033,7 +10879,7 @@
   buildCounterRoutersScopedListWarning++;
   if (buildCounterRoutersScopedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2486();
+    o.data = buildUnnamed2501();
     o.message = "foo";
   }
   buildCounterRoutersScopedListWarning--;
@@ -10044,7 +10890,7 @@
   buildCounterRoutersScopedListWarning++;
   if (buildCounterRoutersScopedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2486(o.data);
+    checkUnnamed2501(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterRoutersScopedListWarning--;
@@ -10055,7 +10901,7 @@
   var o = new api.RoutersScopedList();
   buildCounterRoutersScopedList++;
   if (buildCounterRoutersScopedList < 3) {
-    o.routers = buildUnnamed2485();
+    o.routers = buildUnnamed2500();
     o.warning = buildRoutersScopedListWarning();
   }
   buildCounterRoutersScopedList--;
@@ -10065,7 +10911,7 @@
 checkRoutersScopedList(api.RoutersScopedList o) {
   buildCounterRoutersScopedList++;
   if (buildCounterRoutersScopedList < 3) {
-    checkUnnamed2485(o.routers);
+    checkUnnamed2500(o.routers);
     checkRoutersScopedListWarning(o.warning);
   }
   buildCounterRoutersScopedList--;
@@ -10148,14 +10994,14 @@
   buildCounterSerialPortOutput--;
 }
 
-buildUnnamed2487() {
+buildUnnamed2502() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2487(core.List<core.String> o) {
+checkUnnamed2502(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -10167,7 +11013,7 @@
   buildCounterServiceAccount++;
   if (buildCounterServiceAccount < 3) {
     o.email = "foo";
-    o.scopes = buildUnnamed2487();
+    o.scopes = buildUnnamed2502();
   }
   buildCounterServiceAccount--;
   return o;
@@ -10177,32 +11023,32 @@
   buildCounterServiceAccount++;
   if (buildCounterServiceAccount < 3) {
     unittest.expect(o.email, unittest.equals('foo'));
-    checkUnnamed2487(o.scopes);
+    checkUnnamed2502(o.scopes);
   }
   buildCounterServiceAccount--;
 }
 
-buildUnnamed2488() {
+buildUnnamed2503() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed2488(core.Map<core.String, core.String> o) {
+checkUnnamed2503(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed2489() {
+buildUnnamed2504() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2489(core.List<core.String> o) {
+checkUnnamed2504(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -10219,8 +11065,8 @@
     o.id = "foo";
     o.kind = "foo";
     o.labelFingerprint = "foo";
-    o.labels = buildUnnamed2488();
-    o.licenses = buildUnnamed2489();
+    o.labels = buildUnnamed2503();
+    o.licenses = buildUnnamed2504();
     o.name = "foo";
     o.selfLink = "foo";
     o.snapshotEncryptionKey = buildCustomerEncryptionKey();
@@ -10244,8 +11090,8 @@
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.labelFingerprint, unittest.equals('foo'));
-    checkUnnamed2488(o.labels);
-    checkUnnamed2489(o.licenses);
+    checkUnnamed2503(o.labels);
+    checkUnnamed2504(o.licenses);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
     checkCustomerEncryptionKey(o.snapshotEncryptionKey);
@@ -10259,14 +11105,14 @@
   buildCounterSnapshot--;
 }
 
-buildUnnamed2490() {
+buildUnnamed2505() {
   var o = new core.List<api.Snapshot>();
   o.add(buildSnapshot());
   o.add(buildSnapshot());
   return o;
 }
 
-checkUnnamed2490(core.List<api.Snapshot> o) {
+checkUnnamed2505(core.List<api.Snapshot> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSnapshot(o[0]);
   checkSnapshot(o[1]);
@@ -10293,14 +11139,14 @@
   buildCounterSnapshotListWarningData--;
 }
 
-buildUnnamed2491() {
+buildUnnamed2506() {
   var o = new core.List<api.SnapshotListWarningData>();
   o.add(buildSnapshotListWarningData());
   o.add(buildSnapshotListWarningData());
   return o;
 }
 
-checkUnnamed2491(core.List<api.SnapshotListWarningData> o) {
+checkUnnamed2506(core.List<api.SnapshotListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSnapshotListWarningData(o[0]);
   checkSnapshotListWarningData(o[1]);
@@ -10312,7 +11158,7 @@
   buildCounterSnapshotListWarning++;
   if (buildCounterSnapshotListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2491();
+    o.data = buildUnnamed2506();
     o.message = "foo";
   }
   buildCounterSnapshotListWarning--;
@@ -10323,7 +11169,7 @@
   buildCounterSnapshotListWarning++;
   if (buildCounterSnapshotListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2491(o.data);
+    checkUnnamed2506(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterSnapshotListWarning--;
@@ -10335,7 +11181,7 @@
   buildCounterSnapshotList++;
   if (buildCounterSnapshotList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2490();
+    o.items = buildUnnamed2505();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -10349,7 +11195,7 @@
   buildCounterSnapshotList++;
   if (buildCounterSnapshotList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2490(o.items);
+    checkUnnamed2505(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -10391,14 +11237,14 @@
   buildCounterSslCertificate--;
 }
 
-buildUnnamed2492() {
+buildUnnamed2507() {
   var o = new core.List<api.SslCertificate>();
   o.add(buildSslCertificate());
   o.add(buildSslCertificate());
   return o;
 }
 
-checkUnnamed2492(core.List<api.SslCertificate> o) {
+checkUnnamed2507(core.List<api.SslCertificate> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSslCertificate(o[0]);
   checkSslCertificate(o[1]);
@@ -10425,14 +11271,14 @@
   buildCounterSslCertificateListWarningData--;
 }
 
-buildUnnamed2493() {
+buildUnnamed2508() {
   var o = new core.List<api.SslCertificateListWarningData>();
   o.add(buildSslCertificateListWarningData());
   o.add(buildSslCertificateListWarningData());
   return o;
 }
 
-checkUnnamed2493(core.List<api.SslCertificateListWarningData> o) {
+checkUnnamed2508(core.List<api.SslCertificateListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSslCertificateListWarningData(o[0]);
   checkSslCertificateListWarningData(o[1]);
@@ -10444,7 +11290,7 @@
   buildCounterSslCertificateListWarning++;
   if (buildCounterSslCertificateListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2493();
+    o.data = buildUnnamed2508();
     o.message = "foo";
   }
   buildCounterSslCertificateListWarning--;
@@ -10455,7 +11301,7 @@
   buildCounterSslCertificateListWarning++;
   if (buildCounterSslCertificateListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2493(o.data);
+    checkUnnamed2508(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterSslCertificateListWarning--;
@@ -10467,7 +11313,7 @@
   buildCounterSslCertificateList++;
   if (buildCounterSslCertificateList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2492();
+    o.items = buildUnnamed2507();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -10481,7 +11327,7 @@
   buildCounterSslCertificateList++;
   if (buildCounterSslCertificateList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2492(o.items);
+    checkUnnamed2507(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -10490,14 +11336,14 @@
   buildCounterSslCertificateList--;
 }
 
-buildUnnamed2494() {
+buildUnnamed2509() {
   var o = new core.List<api.SubnetworkSecondaryRange>();
   o.add(buildSubnetworkSecondaryRange());
   o.add(buildSubnetworkSecondaryRange());
   return o;
 }
 
-checkUnnamed2494(core.List<api.SubnetworkSecondaryRange> o) {
+checkUnnamed2509(core.List<api.SubnetworkSecondaryRange> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSubnetworkSecondaryRange(o[0]);
   checkSubnetworkSecondaryRange(o[1]);
@@ -10518,7 +11364,7 @@
     o.network = "foo";
     o.privateIpGoogleAccess = true;
     o.region = "foo";
-    o.secondaryIpRanges = buildUnnamed2494();
+    o.secondaryIpRanges = buildUnnamed2509();
     o.selfLink = "foo";
   }
   buildCounterSubnetwork--;
@@ -10538,20 +11384,20 @@
     unittest.expect(o.network, unittest.equals('foo'));
     unittest.expect(o.privateIpGoogleAccess, unittest.isTrue);
     unittest.expect(o.region, unittest.equals('foo'));
-    checkUnnamed2494(o.secondaryIpRanges);
+    checkUnnamed2509(o.secondaryIpRanges);
     unittest.expect(o.selfLink, unittest.equals('foo'));
   }
   buildCounterSubnetwork--;
 }
 
-buildUnnamed2495() {
+buildUnnamed2510() {
   var o = new core.Map<core.String, api.SubnetworksScopedList>();
   o["x"] = buildSubnetworksScopedList();
   o["y"] = buildSubnetworksScopedList();
   return o;
 }
 
-checkUnnamed2495(core.Map<core.String, api.SubnetworksScopedList> o) {
+checkUnnamed2510(core.Map<core.String, api.SubnetworksScopedList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSubnetworksScopedList(o["x"]);
   checkSubnetworksScopedList(o["y"]);
@@ -10579,14 +11425,14 @@
   buildCounterSubnetworkAggregatedListWarningData--;
 }
 
-buildUnnamed2496() {
+buildUnnamed2511() {
   var o = new core.List<api.SubnetworkAggregatedListWarningData>();
   o.add(buildSubnetworkAggregatedListWarningData());
   o.add(buildSubnetworkAggregatedListWarningData());
   return o;
 }
 
-checkUnnamed2496(core.List<api.SubnetworkAggregatedListWarningData> o) {
+checkUnnamed2511(core.List<api.SubnetworkAggregatedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSubnetworkAggregatedListWarningData(o[0]);
   checkSubnetworkAggregatedListWarningData(o[1]);
@@ -10598,7 +11444,7 @@
   buildCounterSubnetworkAggregatedListWarning++;
   if (buildCounterSubnetworkAggregatedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2496();
+    o.data = buildUnnamed2511();
     o.message = "foo";
   }
   buildCounterSubnetworkAggregatedListWarning--;
@@ -10609,7 +11455,7 @@
   buildCounterSubnetworkAggregatedListWarning++;
   if (buildCounterSubnetworkAggregatedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2496(o.data);
+    checkUnnamed2511(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterSubnetworkAggregatedListWarning--;
@@ -10621,7 +11467,7 @@
   buildCounterSubnetworkAggregatedList++;
   if (buildCounterSubnetworkAggregatedList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2495();
+    o.items = buildUnnamed2510();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -10635,7 +11481,7 @@
   buildCounterSubnetworkAggregatedList++;
   if (buildCounterSubnetworkAggregatedList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2495(o.items);
+    checkUnnamed2510(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -10644,14 +11490,14 @@
   buildCounterSubnetworkAggregatedList--;
 }
 
-buildUnnamed2497() {
+buildUnnamed2512() {
   var o = new core.List<api.Subnetwork>();
   o.add(buildSubnetwork());
   o.add(buildSubnetwork());
   return o;
 }
 
-checkUnnamed2497(core.List<api.Subnetwork> o) {
+checkUnnamed2512(core.List<api.Subnetwork> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSubnetwork(o[0]);
   checkSubnetwork(o[1]);
@@ -10678,14 +11524,14 @@
   buildCounterSubnetworkListWarningData--;
 }
 
-buildUnnamed2498() {
+buildUnnamed2513() {
   var o = new core.List<api.SubnetworkListWarningData>();
   o.add(buildSubnetworkListWarningData());
   o.add(buildSubnetworkListWarningData());
   return o;
 }
 
-checkUnnamed2498(core.List<api.SubnetworkListWarningData> o) {
+checkUnnamed2513(core.List<api.SubnetworkListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSubnetworkListWarningData(o[0]);
   checkSubnetworkListWarningData(o[1]);
@@ -10697,7 +11543,7 @@
   buildCounterSubnetworkListWarning++;
   if (buildCounterSubnetworkListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2498();
+    o.data = buildUnnamed2513();
     o.message = "foo";
   }
   buildCounterSubnetworkListWarning--;
@@ -10708,7 +11554,7 @@
   buildCounterSubnetworkListWarning++;
   if (buildCounterSubnetworkListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2498(o.data);
+    checkUnnamed2513(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterSubnetworkListWarning--;
@@ -10720,7 +11566,7 @@
   buildCounterSubnetworkList++;
   if (buildCounterSubnetworkList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2497();
+    o.items = buildUnnamed2512();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -10734,7 +11580,7 @@
   buildCounterSubnetworkList++;
   if (buildCounterSubnetworkList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2497(o.items);
+    checkUnnamed2512(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -10784,14 +11630,14 @@
   buildCounterSubnetworksExpandIpCidrRangeRequest--;
 }
 
-buildUnnamed2499() {
+buildUnnamed2514() {
   var o = new core.List<api.Subnetwork>();
   o.add(buildSubnetwork());
   o.add(buildSubnetwork());
   return o;
 }
 
-checkUnnamed2499(core.List<api.Subnetwork> o) {
+checkUnnamed2514(core.List<api.Subnetwork> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSubnetwork(o[0]);
   checkSubnetwork(o[1]);
@@ -10818,14 +11664,14 @@
   buildCounterSubnetworksScopedListWarningData--;
 }
 
-buildUnnamed2500() {
+buildUnnamed2515() {
   var o = new core.List<api.SubnetworksScopedListWarningData>();
   o.add(buildSubnetworksScopedListWarningData());
   o.add(buildSubnetworksScopedListWarningData());
   return o;
 }
 
-checkUnnamed2500(core.List<api.SubnetworksScopedListWarningData> o) {
+checkUnnamed2515(core.List<api.SubnetworksScopedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSubnetworksScopedListWarningData(o[0]);
   checkSubnetworksScopedListWarningData(o[1]);
@@ -10837,7 +11683,7 @@
   buildCounterSubnetworksScopedListWarning++;
   if (buildCounterSubnetworksScopedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2500();
+    o.data = buildUnnamed2515();
     o.message = "foo";
   }
   buildCounterSubnetworksScopedListWarning--;
@@ -10848,7 +11694,7 @@
   buildCounterSubnetworksScopedListWarning++;
   if (buildCounterSubnetworksScopedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2500(o.data);
+    checkUnnamed2515(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterSubnetworksScopedListWarning--;
@@ -10859,7 +11705,7 @@
   var o = new api.SubnetworksScopedList();
   buildCounterSubnetworksScopedList++;
   if (buildCounterSubnetworksScopedList < 3) {
-    o.subnetworks = buildUnnamed2499();
+    o.subnetworks = buildUnnamed2514();
     o.warning = buildSubnetworksScopedListWarning();
   }
   buildCounterSubnetworksScopedList--;
@@ -10869,7 +11715,7 @@
 checkSubnetworksScopedList(api.SubnetworksScopedList o) {
   buildCounterSubnetworksScopedList++;
   if (buildCounterSubnetworksScopedList < 3) {
-    checkUnnamed2499(o.subnetworks);
+    checkUnnamed2514(o.subnetworks);
     checkSubnetworksScopedListWarning(o.warning);
   }
   buildCounterSubnetworksScopedList--;
@@ -10922,14 +11768,14 @@
   buildCounterTCPHealthCheck--;
 }
 
-buildUnnamed2501() {
+buildUnnamed2516() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2501(core.List<core.String> o) {
+checkUnnamed2516(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -10941,7 +11787,7 @@
   buildCounterTags++;
   if (buildCounterTags < 3) {
     o.fingerprint = "foo";
-    o.items = buildUnnamed2501();
+    o.items = buildUnnamed2516();
   }
   buildCounterTags--;
   return o;
@@ -10951,7 +11797,7 @@
   buildCounterTags++;
   if (buildCounterTags < 3) {
     unittest.expect(o.fingerprint, unittest.equals('foo'));
-    checkUnnamed2501(o.items);
+    checkUnnamed2516(o.items);
   }
   buildCounterTags--;
 }
@@ -10987,14 +11833,14 @@
   buildCounterTargetHttpProxy--;
 }
 
-buildUnnamed2502() {
+buildUnnamed2517() {
   var o = new core.List<api.TargetHttpProxy>();
   o.add(buildTargetHttpProxy());
   o.add(buildTargetHttpProxy());
   return o;
 }
 
-checkUnnamed2502(core.List<api.TargetHttpProxy> o) {
+checkUnnamed2517(core.List<api.TargetHttpProxy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetHttpProxy(o[0]);
   checkTargetHttpProxy(o[1]);
@@ -11021,14 +11867,14 @@
   buildCounterTargetHttpProxyListWarningData--;
 }
 
-buildUnnamed2503() {
+buildUnnamed2518() {
   var o = new core.List<api.TargetHttpProxyListWarningData>();
   o.add(buildTargetHttpProxyListWarningData());
   o.add(buildTargetHttpProxyListWarningData());
   return o;
 }
 
-checkUnnamed2503(core.List<api.TargetHttpProxyListWarningData> o) {
+checkUnnamed2518(core.List<api.TargetHttpProxyListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetHttpProxyListWarningData(o[0]);
   checkTargetHttpProxyListWarningData(o[1]);
@@ -11040,7 +11886,7 @@
   buildCounterTargetHttpProxyListWarning++;
   if (buildCounterTargetHttpProxyListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2503();
+    o.data = buildUnnamed2518();
     o.message = "foo";
   }
   buildCounterTargetHttpProxyListWarning--;
@@ -11051,7 +11897,7 @@
   buildCounterTargetHttpProxyListWarning++;
   if (buildCounterTargetHttpProxyListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2503(o.data);
+    checkUnnamed2518(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterTargetHttpProxyListWarning--;
@@ -11063,7 +11909,7 @@
   buildCounterTargetHttpProxyList++;
   if (buildCounterTargetHttpProxyList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2502();
+    o.items = buildUnnamed2517();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -11077,7 +11923,7 @@
   buildCounterTargetHttpProxyList++;
   if (buildCounterTargetHttpProxyList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2502(o.items);
+    checkUnnamed2517(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -11086,14 +11932,14 @@
   buildCounterTargetHttpProxyList--;
 }
 
-buildUnnamed2504() {
+buildUnnamed2519() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2504(core.List<core.String> o) {
+checkUnnamed2519(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -11104,7 +11950,7 @@
   var o = new api.TargetHttpsProxiesSetSslCertificatesRequest();
   buildCounterTargetHttpsProxiesSetSslCertificatesRequest++;
   if (buildCounterTargetHttpsProxiesSetSslCertificatesRequest < 3) {
-    o.sslCertificates = buildUnnamed2504();
+    o.sslCertificates = buildUnnamed2519();
   }
   buildCounterTargetHttpsProxiesSetSslCertificatesRequest--;
   return o;
@@ -11114,19 +11960,19 @@
     api.TargetHttpsProxiesSetSslCertificatesRequest o) {
   buildCounterTargetHttpsProxiesSetSslCertificatesRequest++;
   if (buildCounterTargetHttpsProxiesSetSslCertificatesRequest < 3) {
-    checkUnnamed2504(o.sslCertificates);
+    checkUnnamed2519(o.sslCertificates);
   }
   buildCounterTargetHttpsProxiesSetSslCertificatesRequest--;
 }
 
-buildUnnamed2505() {
+buildUnnamed2520() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2505(core.List<core.String> o) {
+checkUnnamed2520(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -11143,7 +11989,7 @@
     o.kind = "foo";
     o.name = "foo";
     o.selfLink = "foo";
-    o.sslCertificates = buildUnnamed2505();
+    o.sslCertificates = buildUnnamed2520();
     o.urlMap = "foo";
   }
   buildCounterTargetHttpsProxy--;
@@ -11159,20 +12005,20 @@
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
-    checkUnnamed2505(o.sslCertificates);
+    checkUnnamed2520(o.sslCertificates);
     unittest.expect(o.urlMap, unittest.equals('foo'));
   }
   buildCounterTargetHttpsProxy--;
 }
 
-buildUnnamed2506() {
+buildUnnamed2521() {
   var o = new core.List<api.TargetHttpsProxy>();
   o.add(buildTargetHttpsProxy());
   o.add(buildTargetHttpsProxy());
   return o;
 }
 
-checkUnnamed2506(core.List<api.TargetHttpsProxy> o) {
+checkUnnamed2521(core.List<api.TargetHttpsProxy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetHttpsProxy(o[0]);
   checkTargetHttpsProxy(o[1]);
@@ -11199,14 +12045,14 @@
   buildCounterTargetHttpsProxyListWarningData--;
 }
 
-buildUnnamed2507() {
+buildUnnamed2522() {
   var o = new core.List<api.TargetHttpsProxyListWarningData>();
   o.add(buildTargetHttpsProxyListWarningData());
   o.add(buildTargetHttpsProxyListWarningData());
   return o;
 }
 
-checkUnnamed2507(core.List<api.TargetHttpsProxyListWarningData> o) {
+checkUnnamed2522(core.List<api.TargetHttpsProxyListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetHttpsProxyListWarningData(o[0]);
   checkTargetHttpsProxyListWarningData(o[1]);
@@ -11218,7 +12064,7 @@
   buildCounterTargetHttpsProxyListWarning++;
   if (buildCounterTargetHttpsProxyListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2507();
+    o.data = buildUnnamed2522();
     o.message = "foo";
   }
   buildCounterTargetHttpsProxyListWarning--;
@@ -11229,7 +12075,7 @@
   buildCounterTargetHttpsProxyListWarning++;
   if (buildCounterTargetHttpsProxyListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2507(o.data);
+    checkUnnamed2522(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterTargetHttpsProxyListWarning--;
@@ -11241,7 +12087,7 @@
   buildCounterTargetHttpsProxyList++;
   if (buildCounterTargetHttpsProxyList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2506();
+    o.items = buildUnnamed2521();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -11255,7 +12101,7 @@
   buildCounterTargetHttpsProxyList++;
   if (buildCounterTargetHttpsProxyList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2506(o.items);
+    checkUnnamed2521(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -11299,14 +12145,14 @@
   buildCounterTargetInstance--;
 }
 
-buildUnnamed2508() {
+buildUnnamed2523() {
   var o = new core.Map<core.String, api.TargetInstancesScopedList>();
   o["x"] = buildTargetInstancesScopedList();
   o["y"] = buildTargetInstancesScopedList();
   return o;
 }
 
-checkUnnamed2508(core.Map<core.String, api.TargetInstancesScopedList> o) {
+checkUnnamed2523(core.Map<core.String, api.TargetInstancesScopedList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetInstancesScopedList(o["x"]);
   checkTargetInstancesScopedList(o["y"]);
@@ -11334,14 +12180,14 @@
   buildCounterTargetInstanceAggregatedListWarningData--;
 }
 
-buildUnnamed2509() {
+buildUnnamed2524() {
   var o = new core.List<api.TargetInstanceAggregatedListWarningData>();
   o.add(buildTargetInstanceAggregatedListWarningData());
   o.add(buildTargetInstanceAggregatedListWarningData());
   return o;
 }
 
-checkUnnamed2509(core.List<api.TargetInstanceAggregatedListWarningData> o) {
+checkUnnamed2524(core.List<api.TargetInstanceAggregatedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetInstanceAggregatedListWarningData(o[0]);
   checkTargetInstanceAggregatedListWarningData(o[1]);
@@ -11353,7 +12199,7 @@
   buildCounterTargetInstanceAggregatedListWarning++;
   if (buildCounterTargetInstanceAggregatedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2509();
+    o.data = buildUnnamed2524();
     o.message = "foo";
   }
   buildCounterTargetInstanceAggregatedListWarning--;
@@ -11365,7 +12211,7 @@
   buildCounterTargetInstanceAggregatedListWarning++;
   if (buildCounterTargetInstanceAggregatedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2509(o.data);
+    checkUnnamed2524(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterTargetInstanceAggregatedListWarning--;
@@ -11377,7 +12223,7 @@
   buildCounterTargetInstanceAggregatedList++;
   if (buildCounterTargetInstanceAggregatedList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2508();
+    o.items = buildUnnamed2523();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -11391,7 +12237,7 @@
   buildCounterTargetInstanceAggregatedList++;
   if (buildCounterTargetInstanceAggregatedList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2508(o.items);
+    checkUnnamed2523(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -11400,14 +12246,14 @@
   buildCounterTargetInstanceAggregatedList--;
 }
 
-buildUnnamed2510() {
+buildUnnamed2525() {
   var o = new core.List<api.TargetInstance>();
   o.add(buildTargetInstance());
   o.add(buildTargetInstance());
   return o;
 }
 
-checkUnnamed2510(core.List<api.TargetInstance> o) {
+checkUnnamed2525(core.List<api.TargetInstance> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetInstance(o[0]);
   checkTargetInstance(o[1]);
@@ -11434,14 +12280,14 @@
   buildCounterTargetInstanceListWarningData--;
 }
 
-buildUnnamed2511() {
+buildUnnamed2526() {
   var o = new core.List<api.TargetInstanceListWarningData>();
   o.add(buildTargetInstanceListWarningData());
   o.add(buildTargetInstanceListWarningData());
   return o;
 }
 
-checkUnnamed2511(core.List<api.TargetInstanceListWarningData> o) {
+checkUnnamed2526(core.List<api.TargetInstanceListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetInstanceListWarningData(o[0]);
   checkTargetInstanceListWarningData(o[1]);
@@ -11453,7 +12299,7 @@
   buildCounterTargetInstanceListWarning++;
   if (buildCounterTargetInstanceListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2511();
+    o.data = buildUnnamed2526();
     o.message = "foo";
   }
   buildCounterTargetInstanceListWarning--;
@@ -11464,7 +12310,7 @@
   buildCounterTargetInstanceListWarning++;
   if (buildCounterTargetInstanceListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2511(o.data);
+    checkUnnamed2526(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterTargetInstanceListWarning--;
@@ -11476,7 +12322,7 @@
   buildCounterTargetInstanceList++;
   if (buildCounterTargetInstanceList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2510();
+    o.items = buildUnnamed2525();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -11490,7 +12336,7 @@
   buildCounterTargetInstanceList++;
   if (buildCounterTargetInstanceList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2510(o.items);
+    checkUnnamed2525(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -11499,14 +12345,14 @@
   buildCounterTargetInstanceList--;
 }
 
-buildUnnamed2512() {
+buildUnnamed2527() {
   var o = new core.List<api.TargetInstance>();
   o.add(buildTargetInstance());
   o.add(buildTargetInstance());
   return o;
 }
 
-checkUnnamed2512(core.List<api.TargetInstance> o) {
+checkUnnamed2527(core.List<api.TargetInstance> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetInstance(o[0]);
   checkTargetInstance(o[1]);
@@ -11534,14 +12380,14 @@
   buildCounterTargetInstancesScopedListWarningData--;
 }
 
-buildUnnamed2513() {
+buildUnnamed2528() {
   var o = new core.List<api.TargetInstancesScopedListWarningData>();
   o.add(buildTargetInstancesScopedListWarningData());
   o.add(buildTargetInstancesScopedListWarningData());
   return o;
 }
 
-checkUnnamed2513(core.List<api.TargetInstancesScopedListWarningData> o) {
+checkUnnamed2528(core.List<api.TargetInstancesScopedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetInstancesScopedListWarningData(o[0]);
   checkTargetInstancesScopedListWarningData(o[1]);
@@ -11553,7 +12399,7 @@
   buildCounterTargetInstancesScopedListWarning++;
   if (buildCounterTargetInstancesScopedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2513();
+    o.data = buildUnnamed2528();
     o.message = "foo";
   }
   buildCounterTargetInstancesScopedListWarning--;
@@ -11564,7 +12410,7 @@
   buildCounterTargetInstancesScopedListWarning++;
   if (buildCounterTargetInstancesScopedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2513(o.data);
+    checkUnnamed2528(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterTargetInstancesScopedListWarning--;
@@ -11575,7 +12421,7 @@
   var o = new api.TargetInstancesScopedList();
   buildCounterTargetInstancesScopedList++;
   if (buildCounterTargetInstancesScopedList < 3) {
-    o.targetInstances = buildUnnamed2512();
+    o.targetInstances = buildUnnamed2527();
     o.warning = buildTargetInstancesScopedListWarning();
   }
   buildCounterTargetInstancesScopedList--;
@@ -11585,33 +12431,33 @@
 checkTargetInstancesScopedList(api.TargetInstancesScopedList o) {
   buildCounterTargetInstancesScopedList++;
   if (buildCounterTargetInstancesScopedList < 3) {
-    checkUnnamed2512(o.targetInstances);
+    checkUnnamed2527(o.targetInstances);
     checkTargetInstancesScopedListWarning(o.warning);
   }
   buildCounterTargetInstancesScopedList--;
 }
 
-buildUnnamed2514() {
+buildUnnamed2529() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2514(core.List<core.String> o) {
+checkUnnamed2529(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2515() {
+buildUnnamed2530() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2515(core.List<core.String> o) {
+checkUnnamed2530(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -11626,9 +12472,9 @@
     o.creationTimestamp = "foo";
     o.description = "foo";
     o.failoverRatio = 42.0;
-    o.healthChecks = buildUnnamed2514();
+    o.healthChecks = buildUnnamed2529();
     o.id = "foo";
-    o.instances = buildUnnamed2515();
+    o.instances = buildUnnamed2530();
     o.kind = "foo";
     o.name = "foo";
     o.region = "foo";
@@ -11646,9 +12492,9 @@
     unittest.expect(o.creationTimestamp, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.failoverRatio, unittest.equals(42.0));
-    checkUnnamed2514(o.healthChecks);
+    checkUnnamed2529(o.healthChecks);
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2515(o.instances);
+    checkUnnamed2530(o.instances);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.region, unittest.equals('foo'));
@@ -11658,14 +12504,14 @@
   buildCounterTargetPool--;
 }
 
-buildUnnamed2516() {
+buildUnnamed2531() {
   var o = new core.Map<core.String, api.TargetPoolsScopedList>();
   o["x"] = buildTargetPoolsScopedList();
   o["y"] = buildTargetPoolsScopedList();
   return o;
 }
 
-checkUnnamed2516(core.Map<core.String, api.TargetPoolsScopedList> o) {
+checkUnnamed2531(core.Map<core.String, api.TargetPoolsScopedList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetPoolsScopedList(o["x"]);
   checkTargetPoolsScopedList(o["y"]);
@@ -11693,14 +12539,14 @@
   buildCounterTargetPoolAggregatedListWarningData--;
 }
 
-buildUnnamed2517() {
+buildUnnamed2532() {
   var o = new core.List<api.TargetPoolAggregatedListWarningData>();
   o.add(buildTargetPoolAggregatedListWarningData());
   o.add(buildTargetPoolAggregatedListWarningData());
   return o;
 }
 
-checkUnnamed2517(core.List<api.TargetPoolAggregatedListWarningData> o) {
+checkUnnamed2532(core.List<api.TargetPoolAggregatedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetPoolAggregatedListWarningData(o[0]);
   checkTargetPoolAggregatedListWarningData(o[1]);
@@ -11712,7 +12558,7 @@
   buildCounterTargetPoolAggregatedListWarning++;
   if (buildCounterTargetPoolAggregatedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2517();
+    o.data = buildUnnamed2532();
     o.message = "foo";
   }
   buildCounterTargetPoolAggregatedListWarning--;
@@ -11723,7 +12569,7 @@
   buildCounterTargetPoolAggregatedListWarning++;
   if (buildCounterTargetPoolAggregatedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2517(o.data);
+    checkUnnamed2532(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterTargetPoolAggregatedListWarning--;
@@ -11735,7 +12581,7 @@
   buildCounterTargetPoolAggregatedList++;
   if (buildCounterTargetPoolAggregatedList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2516();
+    o.items = buildUnnamed2531();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -11749,7 +12595,7 @@
   buildCounterTargetPoolAggregatedList++;
   if (buildCounterTargetPoolAggregatedList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2516(o.items);
+    checkUnnamed2531(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -11758,14 +12604,14 @@
   buildCounterTargetPoolAggregatedList--;
 }
 
-buildUnnamed2518() {
+buildUnnamed2533() {
   var o = new core.List<api.HealthStatus>();
   o.add(buildHealthStatus());
   o.add(buildHealthStatus());
   return o;
 }
 
-checkUnnamed2518(core.List<api.HealthStatus> o) {
+checkUnnamed2533(core.List<api.HealthStatus> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHealthStatus(o[0]);
   checkHealthStatus(o[1]);
@@ -11776,7 +12622,7 @@
   var o = new api.TargetPoolInstanceHealth();
   buildCounterTargetPoolInstanceHealth++;
   if (buildCounterTargetPoolInstanceHealth < 3) {
-    o.healthStatus = buildUnnamed2518();
+    o.healthStatus = buildUnnamed2533();
     o.kind = "foo";
   }
   buildCounterTargetPoolInstanceHealth--;
@@ -11786,20 +12632,20 @@
 checkTargetPoolInstanceHealth(api.TargetPoolInstanceHealth o) {
   buildCounterTargetPoolInstanceHealth++;
   if (buildCounterTargetPoolInstanceHealth < 3) {
-    checkUnnamed2518(o.healthStatus);
+    checkUnnamed2533(o.healthStatus);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterTargetPoolInstanceHealth--;
 }
 
-buildUnnamed2519() {
+buildUnnamed2534() {
   var o = new core.List<api.TargetPool>();
   o.add(buildTargetPool());
   o.add(buildTargetPool());
   return o;
 }
 
-checkUnnamed2519(core.List<api.TargetPool> o) {
+checkUnnamed2534(core.List<api.TargetPool> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetPool(o[0]);
   checkTargetPool(o[1]);
@@ -11826,14 +12672,14 @@
   buildCounterTargetPoolListWarningData--;
 }
 
-buildUnnamed2520() {
+buildUnnamed2535() {
   var o = new core.List<api.TargetPoolListWarningData>();
   o.add(buildTargetPoolListWarningData());
   o.add(buildTargetPoolListWarningData());
   return o;
 }
 
-checkUnnamed2520(core.List<api.TargetPoolListWarningData> o) {
+checkUnnamed2535(core.List<api.TargetPoolListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetPoolListWarningData(o[0]);
   checkTargetPoolListWarningData(o[1]);
@@ -11845,7 +12691,7 @@
   buildCounterTargetPoolListWarning++;
   if (buildCounterTargetPoolListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2520();
+    o.data = buildUnnamed2535();
     o.message = "foo";
   }
   buildCounterTargetPoolListWarning--;
@@ -11856,7 +12702,7 @@
   buildCounterTargetPoolListWarning++;
   if (buildCounterTargetPoolListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2520(o.data);
+    checkUnnamed2535(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterTargetPoolListWarning--;
@@ -11868,7 +12714,7 @@
   buildCounterTargetPoolList++;
   if (buildCounterTargetPoolList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2519();
+    o.items = buildUnnamed2534();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -11882,7 +12728,7 @@
   buildCounterTargetPoolList++;
   if (buildCounterTargetPoolList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2519(o.items);
+    checkUnnamed2534(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -11891,14 +12737,14 @@
   buildCounterTargetPoolList--;
 }
 
-buildUnnamed2521() {
+buildUnnamed2536() {
   var o = new core.List<api.HealthCheckReference>();
   o.add(buildHealthCheckReference());
   o.add(buildHealthCheckReference());
   return o;
 }
 
-checkUnnamed2521(core.List<api.HealthCheckReference> o) {
+checkUnnamed2536(core.List<api.HealthCheckReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHealthCheckReference(o[0]);
   checkHealthCheckReference(o[1]);
@@ -11909,7 +12755,7 @@
   var o = new api.TargetPoolsAddHealthCheckRequest();
   buildCounterTargetPoolsAddHealthCheckRequest++;
   if (buildCounterTargetPoolsAddHealthCheckRequest < 3) {
-    o.healthChecks = buildUnnamed2521();
+    o.healthChecks = buildUnnamed2536();
   }
   buildCounterTargetPoolsAddHealthCheckRequest--;
   return o;
@@ -11918,19 +12764,19 @@
 checkTargetPoolsAddHealthCheckRequest(api.TargetPoolsAddHealthCheckRequest o) {
   buildCounterTargetPoolsAddHealthCheckRequest++;
   if (buildCounterTargetPoolsAddHealthCheckRequest < 3) {
-    checkUnnamed2521(o.healthChecks);
+    checkUnnamed2536(o.healthChecks);
   }
   buildCounterTargetPoolsAddHealthCheckRequest--;
 }
 
-buildUnnamed2522() {
+buildUnnamed2537() {
   var o = new core.List<api.InstanceReference>();
   o.add(buildInstanceReference());
   o.add(buildInstanceReference());
   return o;
 }
 
-checkUnnamed2522(core.List<api.InstanceReference> o) {
+checkUnnamed2537(core.List<api.InstanceReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstanceReference(o[0]);
   checkInstanceReference(o[1]);
@@ -11941,7 +12787,7 @@
   var o = new api.TargetPoolsAddInstanceRequest();
   buildCounterTargetPoolsAddInstanceRequest++;
   if (buildCounterTargetPoolsAddInstanceRequest < 3) {
-    o.instances = buildUnnamed2522();
+    o.instances = buildUnnamed2537();
   }
   buildCounterTargetPoolsAddInstanceRequest--;
   return o;
@@ -11950,19 +12796,19 @@
 checkTargetPoolsAddInstanceRequest(api.TargetPoolsAddInstanceRequest o) {
   buildCounterTargetPoolsAddInstanceRequest++;
   if (buildCounterTargetPoolsAddInstanceRequest < 3) {
-    checkUnnamed2522(o.instances);
+    checkUnnamed2537(o.instances);
   }
   buildCounterTargetPoolsAddInstanceRequest--;
 }
 
-buildUnnamed2523() {
+buildUnnamed2538() {
   var o = new core.List<api.HealthCheckReference>();
   o.add(buildHealthCheckReference());
   o.add(buildHealthCheckReference());
   return o;
 }
 
-checkUnnamed2523(core.List<api.HealthCheckReference> o) {
+checkUnnamed2538(core.List<api.HealthCheckReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHealthCheckReference(o[0]);
   checkHealthCheckReference(o[1]);
@@ -11973,7 +12819,7 @@
   var o = new api.TargetPoolsRemoveHealthCheckRequest();
   buildCounterTargetPoolsRemoveHealthCheckRequest++;
   if (buildCounterTargetPoolsRemoveHealthCheckRequest < 3) {
-    o.healthChecks = buildUnnamed2523();
+    o.healthChecks = buildUnnamed2538();
   }
   buildCounterTargetPoolsRemoveHealthCheckRequest--;
   return o;
@@ -11983,19 +12829,19 @@
     api.TargetPoolsRemoveHealthCheckRequest o) {
   buildCounterTargetPoolsRemoveHealthCheckRequest++;
   if (buildCounterTargetPoolsRemoveHealthCheckRequest < 3) {
-    checkUnnamed2523(o.healthChecks);
+    checkUnnamed2538(o.healthChecks);
   }
   buildCounterTargetPoolsRemoveHealthCheckRequest--;
 }
 
-buildUnnamed2524() {
+buildUnnamed2539() {
   var o = new core.List<api.InstanceReference>();
   o.add(buildInstanceReference());
   o.add(buildInstanceReference());
   return o;
 }
 
-checkUnnamed2524(core.List<api.InstanceReference> o) {
+checkUnnamed2539(core.List<api.InstanceReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstanceReference(o[0]);
   checkInstanceReference(o[1]);
@@ -12006,7 +12852,7 @@
   var o = new api.TargetPoolsRemoveInstanceRequest();
   buildCounterTargetPoolsRemoveInstanceRequest++;
   if (buildCounterTargetPoolsRemoveInstanceRequest < 3) {
-    o.instances = buildUnnamed2524();
+    o.instances = buildUnnamed2539();
   }
   buildCounterTargetPoolsRemoveInstanceRequest--;
   return o;
@@ -12015,19 +12861,19 @@
 checkTargetPoolsRemoveInstanceRequest(api.TargetPoolsRemoveInstanceRequest o) {
   buildCounterTargetPoolsRemoveInstanceRequest++;
   if (buildCounterTargetPoolsRemoveInstanceRequest < 3) {
-    checkUnnamed2524(o.instances);
+    checkUnnamed2539(o.instances);
   }
   buildCounterTargetPoolsRemoveInstanceRequest--;
 }
 
-buildUnnamed2525() {
+buildUnnamed2540() {
   var o = new core.List<api.TargetPool>();
   o.add(buildTargetPool());
   o.add(buildTargetPool());
   return o;
 }
 
-checkUnnamed2525(core.List<api.TargetPool> o) {
+checkUnnamed2540(core.List<api.TargetPool> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetPool(o[0]);
   checkTargetPool(o[1]);
@@ -12054,14 +12900,14 @@
   buildCounterTargetPoolsScopedListWarningData--;
 }
 
-buildUnnamed2526() {
+buildUnnamed2541() {
   var o = new core.List<api.TargetPoolsScopedListWarningData>();
   o.add(buildTargetPoolsScopedListWarningData());
   o.add(buildTargetPoolsScopedListWarningData());
   return o;
 }
 
-checkUnnamed2526(core.List<api.TargetPoolsScopedListWarningData> o) {
+checkUnnamed2541(core.List<api.TargetPoolsScopedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetPoolsScopedListWarningData(o[0]);
   checkTargetPoolsScopedListWarningData(o[1]);
@@ -12073,7 +12919,7 @@
   buildCounterTargetPoolsScopedListWarning++;
   if (buildCounterTargetPoolsScopedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2526();
+    o.data = buildUnnamed2541();
     o.message = "foo";
   }
   buildCounterTargetPoolsScopedListWarning--;
@@ -12084,7 +12930,7 @@
   buildCounterTargetPoolsScopedListWarning++;
   if (buildCounterTargetPoolsScopedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2526(o.data);
+    checkUnnamed2541(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterTargetPoolsScopedListWarning--;
@@ -12095,7 +12941,7 @@
   var o = new api.TargetPoolsScopedList();
   buildCounterTargetPoolsScopedList++;
   if (buildCounterTargetPoolsScopedList < 3) {
-    o.targetPools = buildUnnamed2525();
+    o.targetPools = buildUnnamed2540();
     o.warning = buildTargetPoolsScopedListWarning();
   }
   buildCounterTargetPoolsScopedList--;
@@ -12105,7 +12951,7 @@
 checkTargetPoolsScopedList(api.TargetPoolsScopedList o) {
   buildCounterTargetPoolsScopedList++;
   if (buildCounterTargetPoolsScopedList < 3) {
-    checkUnnamed2525(o.targetPools);
+    checkUnnamed2540(o.targetPools);
     checkTargetPoolsScopedListWarning(o.warning);
   }
   buildCounterTargetPoolsScopedList--;
@@ -12170,14 +13016,14 @@
   buildCounterTargetSslProxiesSetProxyHeaderRequest--;
 }
 
-buildUnnamed2527() {
+buildUnnamed2542() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2527(core.List<core.String> o) {
+checkUnnamed2542(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -12188,7 +13034,7 @@
   var o = new api.TargetSslProxiesSetSslCertificatesRequest();
   buildCounterTargetSslProxiesSetSslCertificatesRequest++;
   if (buildCounterTargetSslProxiesSetSslCertificatesRequest < 3) {
-    o.sslCertificates = buildUnnamed2527();
+    o.sslCertificates = buildUnnamed2542();
   }
   buildCounterTargetSslProxiesSetSslCertificatesRequest--;
   return o;
@@ -12198,19 +13044,19 @@
     api.TargetSslProxiesSetSslCertificatesRequest o) {
   buildCounterTargetSslProxiesSetSslCertificatesRequest++;
   if (buildCounterTargetSslProxiesSetSslCertificatesRequest < 3) {
-    checkUnnamed2527(o.sslCertificates);
+    checkUnnamed2542(o.sslCertificates);
   }
   buildCounterTargetSslProxiesSetSslCertificatesRequest--;
 }
 
-buildUnnamed2528() {
+buildUnnamed2543() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2528(core.List<core.String> o) {
+checkUnnamed2543(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -12229,7 +13075,7 @@
     o.proxyHeader = "foo";
     o.selfLink = "foo";
     o.service = "foo";
-    o.sslCertificates = buildUnnamed2528();
+    o.sslCertificates = buildUnnamed2543();
   }
   buildCounterTargetSslProxy--;
   return o;
@@ -12246,19 +13092,19 @@
     unittest.expect(o.proxyHeader, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.service, unittest.equals('foo'));
-    checkUnnamed2528(o.sslCertificates);
+    checkUnnamed2543(o.sslCertificates);
   }
   buildCounterTargetSslProxy--;
 }
 
-buildUnnamed2529() {
+buildUnnamed2544() {
   var o = new core.List<api.TargetSslProxy>();
   o.add(buildTargetSslProxy());
   o.add(buildTargetSslProxy());
   return o;
 }
 
-checkUnnamed2529(core.List<api.TargetSslProxy> o) {
+checkUnnamed2544(core.List<api.TargetSslProxy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetSslProxy(o[0]);
   checkTargetSslProxy(o[1]);
@@ -12285,14 +13131,14 @@
   buildCounterTargetSslProxyListWarningData--;
 }
 
-buildUnnamed2530() {
+buildUnnamed2545() {
   var o = new core.List<api.TargetSslProxyListWarningData>();
   o.add(buildTargetSslProxyListWarningData());
   o.add(buildTargetSslProxyListWarningData());
   return o;
 }
 
-checkUnnamed2530(core.List<api.TargetSslProxyListWarningData> o) {
+checkUnnamed2545(core.List<api.TargetSslProxyListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetSslProxyListWarningData(o[0]);
   checkTargetSslProxyListWarningData(o[1]);
@@ -12304,7 +13150,7 @@
   buildCounterTargetSslProxyListWarning++;
   if (buildCounterTargetSslProxyListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2530();
+    o.data = buildUnnamed2545();
     o.message = "foo";
   }
   buildCounterTargetSslProxyListWarning--;
@@ -12315,7 +13161,7 @@
   buildCounterTargetSslProxyListWarning++;
   if (buildCounterTargetSslProxyListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2530(o.data);
+    checkUnnamed2545(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterTargetSslProxyListWarning--;
@@ -12327,7 +13173,7 @@
   buildCounterTargetSslProxyList++;
   if (buildCounterTargetSslProxyList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2529();
+    o.items = buildUnnamed2544();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -12341,7 +13187,7 @@
   buildCounterTargetSslProxyList++;
   if (buildCounterTargetSslProxyList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2529(o.items);
+    checkUnnamed2544(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -12423,14 +13269,14 @@
   buildCounterTargetTcpProxy--;
 }
 
-buildUnnamed2531() {
+buildUnnamed2546() {
   var o = new core.List<api.TargetTcpProxy>();
   o.add(buildTargetTcpProxy());
   o.add(buildTargetTcpProxy());
   return o;
 }
 
-checkUnnamed2531(core.List<api.TargetTcpProxy> o) {
+checkUnnamed2546(core.List<api.TargetTcpProxy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetTcpProxy(o[0]);
   checkTargetTcpProxy(o[1]);
@@ -12457,14 +13303,14 @@
   buildCounterTargetTcpProxyListWarningData--;
 }
 
-buildUnnamed2532() {
+buildUnnamed2547() {
   var o = new core.List<api.TargetTcpProxyListWarningData>();
   o.add(buildTargetTcpProxyListWarningData());
   o.add(buildTargetTcpProxyListWarningData());
   return o;
 }
 
-checkUnnamed2532(core.List<api.TargetTcpProxyListWarningData> o) {
+checkUnnamed2547(core.List<api.TargetTcpProxyListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetTcpProxyListWarningData(o[0]);
   checkTargetTcpProxyListWarningData(o[1]);
@@ -12476,7 +13322,7 @@
   buildCounterTargetTcpProxyListWarning++;
   if (buildCounterTargetTcpProxyListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2532();
+    o.data = buildUnnamed2547();
     o.message = "foo";
   }
   buildCounterTargetTcpProxyListWarning--;
@@ -12487,7 +13333,7 @@
   buildCounterTargetTcpProxyListWarning++;
   if (buildCounterTargetTcpProxyListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2532(o.data);
+    checkUnnamed2547(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterTargetTcpProxyListWarning--;
@@ -12499,7 +13345,7 @@
   buildCounterTargetTcpProxyList++;
   if (buildCounterTargetTcpProxyList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2531();
+    o.items = buildUnnamed2546();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -12513,7 +13359,7 @@
   buildCounterTargetTcpProxyList++;
   if (buildCounterTargetTcpProxyList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2531(o.items);
+    checkUnnamed2546(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -12522,27 +13368,27 @@
   buildCounterTargetTcpProxyList--;
 }
 
-buildUnnamed2533() {
+buildUnnamed2548() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2533(core.List<core.String> o) {
+checkUnnamed2548(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2534() {
+buildUnnamed2549() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2534(core.List<core.String> o) {
+checkUnnamed2549(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -12555,7 +13401,7 @@
   if (buildCounterTargetVpnGateway < 3) {
     o.creationTimestamp = "foo";
     o.description = "foo";
-    o.forwardingRules = buildUnnamed2533();
+    o.forwardingRules = buildUnnamed2548();
     o.id = "foo";
     o.kind = "foo";
     o.name = "foo";
@@ -12563,7 +13409,7 @@
     o.region = "foo";
     o.selfLink = "foo";
     o.status = "foo";
-    o.tunnels = buildUnnamed2534();
+    o.tunnels = buildUnnamed2549();
   }
   buildCounterTargetVpnGateway--;
   return o;
@@ -12574,7 +13420,7 @@
   if (buildCounterTargetVpnGateway < 3) {
     unittest.expect(o.creationTimestamp, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed2533(o.forwardingRules);
+    checkUnnamed2548(o.forwardingRules);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
@@ -12582,19 +13428,19 @@
     unittest.expect(o.region, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals('foo'));
-    checkUnnamed2534(o.tunnels);
+    checkUnnamed2549(o.tunnels);
   }
   buildCounterTargetVpnGateway--;
 }
 
-buildUnnamed2535() {
+buildUnnamed2550() {
   var o = new core.Map<core.String, api.TargetVpnGatewaysScopedList>();
   o["x"] = buildTargetVpnGatewaysScopedList();
   o["y"] = buildTargetVpnGatewaysScopedList();
   return o;
 }
 
-checkUnnamed2535(core.Map<core.String, api.TargetVpnGatewaysScopedList> o) {
+checkUnnamed2550(core.Map<core.String, api.TargetVpnGatewaysScopedList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetVpnGatewaysScopedList(o["x"]);
   checkTargetVpnGatewaysScopedList(o["y"]);
@@ -12622,14 +13468,14 @@
   buildCounterTargetVpnGatewayAggregatedListWarningData--;
 }
 
-buildUnnamed2536() {
+buildUnnamed2551() {
   var o = new core.List<api.TargetVpnGatewayAggregatedListWarningData>();
   o.add(buildTargetVpnGatewayAggregatedListWarningData());
   o.add(buildTargetVpnGatewayAggregatedListWarningData());
   return o;
 }
 
-checkUnnamed2536(core.List<api.TargetVpnGatewayAggregatedListWarningData> o) {
+checkUnnamed2551(core.List<api.TargetVpnGatewayAggregatedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetVpnGatewayAggregatedListWarningData(o[0]);
   checkTargetVpnGatewayAggregatedListWarningData(o[1]);
@@ -12641,7 +13487,7 @@
   buildCounterTargetVpnGatewayAggregatedListWarning++;
   if (buildCounterTargetVpnGatewayAggregatedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2536();
+    o.data = buildUnnamed2551();
     o.message = "foo";
   }
   buildCounterTargetVpnGatewayAggregatedListWarning--;
@@ -12653,7 +13499,7 @@
   buildCounterTargetVpnGatewayAggregatedListWarning++;
   if (buildCounterTargetVpnGatewayAggregatedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2536(o.data);
+    checkUnnamed2551(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterTargetVpnGatewayAggregatedListWarning--;
@@ -12665,7 +13511,7 @@
   buildCounterTargetVpnGatewayAggregatedList++;
   if (buildCounterTargetVpnGatewayAggregatedList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2535();
+    o.items = buildUnnamed2550();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -12679,7 +13525,7 @@
   buildCounterTargetVpnGatewayAggregatedList++;
   if (buildCounterTargetVpnGatewayAggregatedList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2535(o.items);
+    checkUnnamed2550(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -12688,14 +13534,14 @@
   buildCounterTargetVpnGatewayAggregatedList--;
 }
 
-buildUnnamed2537() {
+buildUnnamed2552() {
   var o = new core.List<api.TargetVpnGateway>();
   o.add(buildTargetVpnGateway());
   o.add(buildTargetVpnGateway());
   return o;
 }
 
-checkUnnamed2537(core.List<api.TargetVpnGateway> o) {
+checkUnnamed2552(core.List<api.TargetVpnGateway> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetVpnGateway(o[0]);
   checkTargetVpnGateway(o[1]);
@@ -12722,14 +13568,14 @@
   buildCounterTargetVpnGatewayListWarningData--;
 }
 
-buildUnnamed2538() {
+buildUnnamed2553() {
   var o = new core.List<api.TargetVpnGatewayListWarningData>();
   o.add(buildTargetVpnGatewayListWarningData());
   o.add(buildTargetVpnGatewayListWarningData());
   return o;
 }
 
-checkUnnamed2538(core.List<api.TargetVpnGatewayListWarningData> o) {
+checkUnnamed2553(core.List<api.TargetVpnGatewayListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetVpnGatewayListWarningData(o[0]);
   checkTargetVpnGatewayListWarningData(o[1]);
@@ -12741,7 +13587,7 @@
   buildCounterTargetVpnGatewayListWarning++;
   if (buildCounterTargetVpnGatewayListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2538();
+    o.data = buildUnnamed2553();
     o.message = "foo";
   }
   buildCounterTargetVpnGatewayListWarning--;
@@ -12752,7 +13598,7 @@
   buildCounterTargetVpnGatewayListWarning++;
   if (buildCounterTargetVpnGatewayListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2538(o.data);
+    checkUnnamed2553(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterTargetVpnGatewayListWarning--;
@@ -12764,7 +13610,7 @@
   buildCounterTargetVpnGatewayList++;
   if (buildCounterTargetVpnGatewayList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2537();
+    o.items = buildUnnamed2552();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -12778,7 +13624,7 @@
   buildCounterTargetVpnGatewayList++;
   if (buildCounterTargetVpnGatewayList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2537(o.items);
+    checkUnnamed2552(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -12787,14 +13633,14 @@
   buildCounterTargetVpnGatewayList--;
 }
 
-buildUnnamed2539() {
+buildUnnamed2554() {
   var o = new core.List<api.TargetVpnGateway>();
   o.add(buildTargetVpnGateway());
   o.add(buildTargetVpnGateway());
   return o;
 }
 
-checkUnnamed2539(core.List<api.TargetVpnGateway> o) {
+checkUnnamed2554(core.List<api.TargetVpnGateway> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetVpnGateway(o[0]);
   checkTargetVpnGateway(o[1]);
@@ -12822,14 +13668,14 @@
   buildCounterTargetVpnGatewaysScopedListWarningData--;
 }
 
-buildUnnamed2540() {
+buildUnnamed2555() {
   var o = new core.List<api.TargetVpnGatewaysScopedListWarningData>();
   o.add(buildTargetVpnGatewaysScopedListWarningData());
   o.add(buildTargetVpnGatewaysScopedListWarningData());
   return o;
 }
 
-checkUnnamed2540(core.List<api.TargetVpnGatewaysScopedListWarningData> o) {
+checkUnnamed2555(core.List<api.TargetVpnGatewaysScopedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetVpnGatewaysScopedListWarningData(o[0]);
   checkTargetVpnGatewaysScopedListWarningData(o[1]);
@@ -12841,7 +13687,7 @@
   buildCounterTargetVpnGatewaysScopedListWarning++;
   if (buildCounterTargetVpnGatewaysScopedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2540();
+    o.data = buildUnnamed2555();
     o.message = "foo";
   }
   buildCounterTargetVpnGatewaysScopedListWarning--;
@@ -12853,7 +13699,7 @@
   buildCounterTargetVpnGatewaysScopedListWarning++;
   if (buildCounterTargetVpnGatewaysScopedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2540(o.data);
+    checkUnnamed2555(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterTargetVpnGatewaysScopedListWarning--;
@@ -12864,7 +13710,7 @@
   var o = new api.TargetVpnGatewaysScopedList();
   buildCounterTargetVpnGatewaysScopedList++;
   if (buildCounterTargetVpnGatewaysScopedList < 3) {
-    o.targetVpnGateways = buildUnnamed2539();
+    o.targetVpnGateways = buildUnnamed2554();
     o.warning = buildTargetVpnGatewaysScopedListWarning();
   }
   buildCounterTargetVpnGatewaysScopedList--;
@@ -12874,7 +13720,7 @@
 checkTargetVpnGatewaysScopedList(api.TargetVpnGatewaysScopedList o) {
   buildCounterTargetVpnGatewaysScopedList++;
   if (buildCounterTargetVpnGatewaysScopedList < 3) {
-    checkUnnamed2539(o.targetVpnGateways);
+    checkUnnamed2554(o.targetVpnGateways);
     checkTargetVpnGatewaysScopedListWarning(o.warning);
   }
   buildCounterTargetVpnGatewaysScopedList--;
@@ -12905,40 +13751,40 @@
   buildCounterTestFailure--;
 }
 
-buildUnnamed2541() {
+buildUnnamed2556() {
   var o = new core.List<api.HostRule>();
   o.add(buildHostRule());
   o.add(buildHostRule());
   return o;
 }
 
-checkUnnamed2541(core.List<api.HostRule> o) {
+checkUnnamed2556(core.List<api.HostRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHostRule(o[0]);
   checkHostRule(o[1]);
 }
 
-buildUnnamed2542() {
+buildUnnamed2557() {
   var o = new core.List<api.PathMatcher>();
   o.add(buildPathMatcher());
   o.add(buildPathMatcher());
   return o;
 }
 
-checkUnnamed2542(core.List<api.PathMatcher> o) {
+checkUnnamed2557(core.List<api.PathMatcher> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPathMatcher(o[0]);
   checkPathMatcher(o[1]);
 }
 
-buildUnnamed2543() {
+buildUnnamed2558() {
   var o = new core.List<api.UrlMapTest>();
   o.add(buildUrlMapTest());
   o.add(buildUrlMapTest());
   return o;
 }
 
-checkUnnamed2543(core.List<api.UrlMapTest> o) {
+checkUnnamed2558(core.List<api.UrlMapTest> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUrlMapTest(o[0]);
   checkUrlMapTest(o[1]);
@@ -12953,13 +13799,13 @@
     o.defaultService = "foo";
     o.description = "foo";
     o.fingerprint = "foo";
-    o.hostRules = buildUnnamed2541();
+    o.hostRules = buildUnnamed2556();
     o.id = "foo";
     o.kind = "foo";
     o.name = "foo";
-    o.pathMatchers = buildUnnamed2542();
+    o.pathMatchers = buildUnnamed2557();
     o.selfLink = "foo";
-    o.tests = buildUnnamed2543();
+    o.tests = buildUnnamed2558();
   }
   buildCounterUrlMap--;
   return o;
@@ -12972,25 +13818,25 @@
     unittest.expect(o.defaultService, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.fingerprint, unittest.equals('foo'));
-    checkUnnamed2541(o.hostRules);
+    checkUnnamed2556(o.hostRules);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2542(o.pathMatchers);
+    checkUnnamed2557(o.pathMatchers);
     unittest.expect(o.selfLink, unittest.equals('foo'));
-    checkUnnamed2543(o.tests);
+    checkUnnamed2558(o.tests);
   }
   buildCounterUrlMap--;
 }
 
-buildUnnamed2544() {
+buildUnnamed2559() {
   var o = new core.List<api.UrlMap>();
   o.add(buildUrlMap());
   o.add(buildUrlMap());
   return o;
 }
 
-checkUnnamed2544(core.List<api.UrlMap> o) {
+checkUnnamed2559(core.List<api.UrlMap> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUrlMap(o[0]);
   checkUrlMap(o[1]);
@@ -13017,14 +13863,14 @@
   buildCounterUrlMapListWarningData--;
 }
 
-buildUnnamed2545() {
+buildUnnamed2560() {
   var o = new core.List<api.UrlMapListWarningData>();
   o.add(buildUrlMapListWarningData());
   o.add(buildUrlMapListWarningData());
   return o;
 }
 
-checkUnnamed2545(core.List<api.UrlMapListWarningData> o) {
+checkUnnamed2560(core.List<api.UrlMapListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUrlMapListWarningData(o[0]);
   checkUrlMapListWarningData(o[1]);
@@ -13036,7 +13882,7 @@
   buildCounterUrlMapListWarning++;
   if (buildCounterUrlMapListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2545();
+    o.data = buildUnnamed2560();
     o.message = "foo";
   }
   buildCounterUrlMapListWarning--;
@@ -13047,7 +13893,7 @@
   buildCounterUrlMapListWarning++;
   if (buildCounterUrlMapListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2545(o.data);
+    checkUnnamed2560(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterUrlMapListWarning--;
@@ -13059,7 +13905,7 @@
   buildCounterUrlMapList++;
   if (buildCounterUrlMapList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2544();
+    o.items = buildUnnamed2559();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -13073,7 +13919,7 @@
   buildCounterUrlMapList++;
   if (buildCounterUrlMapList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2544(o.items);
+    checkUnnamed2559(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -13126,27 +13972,27 @@
   buildCounterUrlMapTest--;
 }
 
-buildUnnamed2546() {
+buildUnnamed2561() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2546(core.List<core.String> o) {
+checkUnnamed2561(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2547() {
+buildUnnamed2562() {
   var o = new core.List<api.TestFailure>();
   o.add(buildTestFailure());
   o.add(buildTestFailure());
   return o;
 }
 
-checkUnnamed2547(core.List<api.TestFailure> o) {
+checkUnnamed2562(core.List<api.TestFailure> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTestFailure(o[0]);
   checkTestFailure(o[1]);
@@ -13157,9 +14003,9 @@
   var o = new api.UrlMapValidationResult();
   buildCounterUrlMapValidationResult++;
   if (buildCounterUrlMapValidationResult < 3) {
-    o.loadErrors = buildUnnamed2546();
+    o.loadErrors = buildUnnamed2561();
     o.loadSucceeded = true;
-    o.testFailures = buildUnnamed2547();
+    o.testFailures = buildUnnamed2562();
     o.testPassed = true;
   }
   buildCounterUrlMapValidationResult--;
@@ -13169,9 +14015,9 @@
 checkUrlMapValidationResult(api.UrlMapValidationResult o) {
   buildCounterUrlMapValidationResult++;
   if (buildCounterUrlMapValidationResult < 3) {
-    checkUnnamed2546(o.loadErrors);
+    checkUnnamed2561(o.loadErrors);
     unittest.expect(o.loadSucceeded, unittest.isTrue);
-    checkUnnamed2547(o.testFailures);
+    checkUnnamed2562(o.testFailures);
     unittest.expect(o.testPassed, unittest.isTrue);
   }
   buildCounterUrlMapValidationResult--;
@@ -13236,27 +14082,27 @@
   buildCounterUsageExportLocation--;
 }
 
-buildUnnamed2548() {
+buildUnnamed2563() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2548(core.List<core.String> o) {
+checkUnnamed2563(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2549() {
+buildUnnamed2564() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2549(core.List<core.String> o) {
+checkUnnamed2564(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -13273,11 +14119,11 @@
     o.id = "foo";
     o.ikeVersion = 42;
     o.kind = "foo";
-    o.localTrafficSelector = buildUnnamed2548();
+    o.localTrafficSelector = buildUnnamed2563();
     o.name = "foo";
     o.peerIp = "foo";
     o.region = "foo";
-    o.remoteTrafficSelector = buildUnnamed2549();
+    o.remoteTrafficSelector = buildUnnamed2564();
     o.router = "foo";
     o.selfLink = "foo";
     o.sharedSecret = "foo";
@@ -13298,11 +14144,11 @@
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.ikeVersion, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2548(o.localTrafficSelector);
+    checkUnnamed2563(o.localTrafficSelector);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.peerIp, unittest.equals('foo'));
     unittest.expect(o.region, unittest.equals('foo'));
-    checkUnnamed2549(o.remoteTrafficSelector);
+    checkUnnamed2564(o.remoteTrafficSelector);
     unittest.expect(o.router, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.sharedSecret, unittest.equals('foo'));
@@ -13313,14 +14159,14 @@
   buildCounterVpnTunnel--;
 }
 
-buildUnnamed2550() {
+buildUnnamed2565() {
   var o = new core.Map<core.String, api.VpnTunnelsScopedList>();
   o["x"] = buildVpnTunnelsScopedList();
   o["y"] = buildVpnTunnelsScopedList();
   return o;
 }
 
-checkUnnamed2550(core.Map<core.String, api.VpnTunnelsScopedList> o) {
+checkUnnamed2565(core.Map<core.String, api.VpnTunnelsScopedList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVpnTunnelsScopedList(o["x"]);
   checkVpnTunnelsScopedList(o["y"]);
@@ -13348,14 +14194,14 @@
   buildCounterVpnTunnelAggregatedListWarningData--;
 }
 
-buildUnnamed2551() {
+buildUnnamed2566() {
   var o = new core.List<api.VpnTunnelAggregatedListWarningData>();
   o.add(buildVpnTunnelAggregatedListWarningData());
   o.add(buildVpnTunnelAggregatedListWarningData());
   return o;
 }
 
-checkUnnamed2551(core.List<api.VpnTunnelAggregatedListWarningData> o) {
+checkUnnamed2566(core.List<api.VpnTunnelAggregatedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVpnTunnelAggregatedListWarningData(o[0]);
   checkVpnTunnelAggregatedListWarningData(o[1]);
@@ -13367,7 +14213,7 @@
   buildCounterVpnTunnelAggregatedListWarning++;
   if (buildCounterVpnTunnelAggregatedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2551();
+    o.data = buildUnnamed2566();
     o.message = "foo";
   }
   buildCounterVpnTunnelAggregatedListWarning--;
@@ -13378,7 +14224,7 @@
   buildCounterVpnTunnelAggregatedListWarning++;
   if (buildCounterVpnTunnelAggregatedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2551(o.data);
+    checkUnnamed2566(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterVpnTunnelAggregatedListWarning--;
@@ -13390,7 +14236,7 @@
   buildCounterVpnTunnelAggregatedList++;
   if (buildCounterVpnTunnelAggregatedList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2550();
+    o.items = buildUnnamed2565();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -13404,7 +14250,7 @@
   buildCounterVpnTunnelAggregatedList++;
   if (buildCounterVpnTunnelAggregatedList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2550(o.items);
+    checkUnnamed2565(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -13413,14 +14259,14 @@
   buildCounterVpnTunnelAggregatedList--;
 }
 
-buildUnnamed2552() {
+buildUnnamed2567() {
   var o = new core.List<api.VpnTunnel>();
   o.add(buildVpnTunnel());
   o.add(buildVpnTunnel());
   return o;
 }
 
-checkUnnamed2552(core.List<api.VpnTunnel> o) {
+checkUnnamed2567(core.List<api.VpnTunnel> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVpnTunnel(o[0]);
   checkVpnTunnel(o[1]);
@@ -13447,14 +14293,14 @@
   buildCounterVpnTunnelListWarningData--;
 }
 
-buildUnnamed2553() {
+buildUnnamed2568() {
   var o = new core.List<api.VpnTunnelListWarningData>();
   o.add(buildVpnTunnelListWarningData());
   o.add(buildVpnTunnelListWarningData());
   return o;
 }
 
-checkUnnamed2553(core.List<api.VpnTunnelListWarningData> o) {
+checkUnnamed2568(core.List<api.VpnTunnelListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVpnTunnelListWarningData(o[0]);
   checkVpnTunnelListWarningData(o[1]);
@@ -13466,7 +14312,7 @@
   buildCounterVpnTunnelListWarning++;
   if (buildCounterVpnTunnelListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2553();
+    o.data = buildUnnamed2568();
     o.message = "foo";
   }
   buildCounterVpnTunnelListWarning--;
@@ -13477,7 +14323,7 @@
   buildCounterVpnTunnelListWarning++;
   if (buildCounterVpnTunnelListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2553(o.data);
+    checkUnnamed2568(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterVpnTunnelListWarning--;
@@ -13489,7 +14335,7 @@
   buildCounterVpnTunnelList++;
   if (buildCounterVpnTunnelList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2552();
+    o.items = buildUnnamed2567();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -13503,7 +14349,7 @@
   buildCounterVpnTunnelList++;
   if (buildCounterVpnTunnelList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2552(o.items);
+    checkUnnamed2567(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -13512,14 +14358,14 @@
   buildCounterVpnTunnelList--;
 }
 
-buildUnnamed2554() {
+buildUnnamed2569() {
   var o = new core.List<api.VpnTunnel>();
   o.add(buildVpnTunnel());
   o.add(buildVpnTunnel());
   return o;
 }
 
-checkUnnamed2554(core.List<api.VpnTunnel> o) {
+checkUnnamed2569(core.List<api.VpnTunnel> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVpnTunnel(o[0]);
   checkVpnTunnel(o[1]);
@@ -13546,14 +14392,14 @@
   buildCounterVpnTunnelsScopedListWarningData--;
 }
 
-buildUnnamed2555() {
+buildUnnamed2570() {
   var o = new core.List<api.VpnTunnelsScopedListWarningData>();
   o.add(buildVpnTunnelsScopedListWarningData());
   o.add(buildVpnTunnelsScopedListWarningData());
   return o;
 }
 
-checkUnnamed2555(core.List<api.VpnTunnelsScopedListWarningData> o) {
+checkUnnamed2570(core.List<api.VpnTunnelsScopedListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVpnTunnelsScopedListWarningData(o[0]);
   checkVpnTunnelsScopedListWarningData(o[1]);
@@ -13565,7 +14411,7 @@
   buildCounterVpnTunnelsScopedListWarning++;
   if (buildCounterVpnTunnelsScopedListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2555();
+    o.data = buildUnnamed2570();
     o.message = "foo";
   }
   buildCounterVpnTunnelsScopedListWarning--;
@@ -13576,7 +14422,7 @@
   buildCounterVpnTunnelsScopedListWarning++;
   if (buildCounterVpnTunnelsScopedListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2555(o.data);
+    checkUnnamed2570(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterVpnTunnelsScopedListWarning--;
@@ -13587,7 +14433,7 @@
   var o = new api.VpnTunnelsScopedList();
   buildCounterVpnTunnelsScopedList++;
   if (buildCounterVpnTunnelsScopedList < 3) {
-    o.vpnTunnels = buildUnnamed2554();
+    o.vpnTunnels = buildUnnamed2569();
     o.warning = buildVpnTunnelsScopedListWarning();
   }
   buildCounterVpnTunnelsScopedList--;
@@ -13597,20 +14443,20 @@
 checkVpnTunnelsScopedList(api.VpnTunnelsScopedList o) {
   buildCounterVpnTunnelsScopedList++;
   if (buildCounterVpnTunnelsScopedList < 3) {
-    checkUnnamed2554(o.vpnTunnels);
+    checkUnnamed2569(o.vpnTunnels);
     checkVpnTunnelsScopedListWarning(o.warning);
   }
   buildCounterVpnTunnelsScopedList--;
 }
 
-buildUnnamed2556() {
+buildUnnamed2571() {
   var o = new core.List<api.Project>();
   o.add(buildProject());
   o.add(buildProject());
   return o;
 }
 
-checkUnnamed2556(core.List<api.Project> o) {
+checkUnnamed2571(core.List<api.Project> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProject(o[0]);
   checkProject(o[1]);
@@ -13637,14 +14483,14 @@
   buildCounterXpnHostListWarningData--;
 }
 
-buildUnnamed2557() {
+buildUnnamed2572() {
   var o = new core.List<api.XpnHostListWarningData>();
   o.add(buildXpnHostListWarningData());
   o.add(buildXpnHostListWarningData());
   return o;
 }
 
-checkUnnamed2557(core.List<api.XpnHostListWarningData> o) {
+checkUnnamed2572(core.List<api.XpnHostListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkXpnHostListWarningData(o[0]);
   checkXpnHostListWarningData(o[1]);
@@ -13656,7 +14502,7 @@
   buildCounterXpnHostListWarning++;
   if (buildCounterXpnHostListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2557();
+    o.data = buildUnnamed2572();
     o.message = "foo";
   }
   buildCounterXpnHostListWarning--;
@@ -13667,7 +14513,7 @@
   buildCounterXpnHostListWarning++;
   if (buildCounterXpnHostListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2557(o.data);
+    checkUnnamed2572(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterXpnHostListWarning--;
@@ -13679,7 +14525,7 @@
   buildCounterXpnHostList++;
   if (buildCounterXpnHostList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2556();
+    o.items = buildUnnamed2571();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -13693,7 +14539,7 @@
   buildCounterXpnHostList++;
   if (buildCounterXpnHostList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2556(o.items);
+    checkUnnamed2571(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -13723,14 +14569,14 @@
   buildCounterXpnResourceId--;
 }
 
-buildUnnamed2558() {
+buildUnnamed2573() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2558(core.List<core.String> o) {
+checkUnnamed2573(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -13741,7 +14587,7 @@
   var o = new api.Zone();
   buildCounterZone++;
   if (buildCounterZone < 3) {
-    o.availableCpuPlatforms = buildUnnamed2558();
+    o.availableCpuPlatforms = buildUnnamed2573();
     o.creationTimestamp = "foo";
     o.deprecated = buildDeprecationStatus();
     o.description = "foo";
@@ -13759,7 +14605,7 @@
 checkZone(api.Zone o) {
   buildCounterZone++;
   if (buildCounterZone < 3) {
-    checkUnnamed2558(o.availableCpuPlatforms);
+    checkUnnamed2573(o.availableCpuPlatforms);
     unittest.expect(o.creationTimestamp, unittest.equals('foo'));
     checkDeprecationStatus(o.deprecated);
     unittest.expect(o.description, unittest.equals('foo'));
@@ -13773,14 +14619,14 @@
   buildCounterZone--;
 }
 
-buildUnnamed2559() {
+buildUnnamed2574() {
   var o = new core.List<api.Zone>();
   o.add(buildZone());
   o.add(buildZone());
   return o;
 }
 
-checkUnnamed2559(core.List<api.Zone> o) {
+checkUnnamed2574(core.List<api.Zone> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkZone(o[0]);
   checkZone(o[1]);
@@ -13807,14 +14653,14 @@
   buildCounterZoneListWarningData--;
 }
 
-buildUnnamed2560() {
+buildUnnamed2575() {
   var o = new core.List<api.ZoneListWarningData>();
   o.add(buildZoneListWarningData());
   o.add(buildZoneListWarningData());
   return o;
 }
 
-checkUnnamed2560(core.List<api.ZoneListWarningData> o) {
+checkUnnamed2575(core.List<api.ZoneListWarningData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkZoneListWarningData(o[0]);
   checkZoneListWarningData(o[1]);
@@ -13826,7 +14672,7 @@
   buildCounterZoneListWarning++;
   if (buildCounterZoneListWarning < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2560();
+    o.data = buildUnnamed2575();
     o.message = "foo";
   }
   buildCounterZoneListWarning--;
@@ -13837,7 +14683,7 @@
   buildCounterZoneListWarning++;
   if (buildCounterZoneListWarning < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2560(o.data);
+    checkUnnamed2575(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterZoneListWarning--;
@@ -13849,7 +14695,7 @@
   buildCounterZoneList++;
   if (buildCounterZoneList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed2559();
+    o.items = buildUnnamed2574();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -13863,7 +14709,7 @@
   buildCounterZoneList++;
   if (buildCounterZoneList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2559(o.items);
+    checkUnnamed2574(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -13872,14 +14718,14 @@
   buildCounterZoneList--;
 }
 
-buildUnnamed2561() {
+buildUnnamed2576() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed2561(core.Map<core.String, core.String> o) {
+checkUnnamed2576(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -13891,7 +14737,7 @@
   buildCounterZoneSetLabelsRequest++;
   if (buildCounterZoneSetLabelsRequest < 3) {
     o.labelFingerprint = "foo";
-    o.labels = buildUnnamed2561();
+    o.labels = buildUnnamed2576();
   }
   buildCounterZoneSetLabelsRequest--;
   return o;
@@ -13901,7 +14747,7 @@
   buildCounterZoneSetLabelsRequest++;
   if (buildCounterZoneSetLabelsRequest < 3) {
     unittest.expect(o.labelFingerprint, unittest.equals('foo'));
-    checkUnnamed2561(o.labels);
+    checkUnnamed2576(o.labels);
   }
   buildCounterZoneSetLabelsRequest--;
 }
@@ -15487,6 +16333,189 @@
     });
   });
 
+  unittest.group("obj-schema-Interconnect", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnect();
+      var od = new api.Interconnect.fromJson(o.toJson());
+      checkInterconnect(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectAttachment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectAttachment();
+      var od = new api.InterconnectAttachment.fromJson(o.toJson());
+      checkInterconnectAttachment(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectAttachmentAggregatedListWarningData",
+      () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectAttachmentAggregatedListWarningData();
+      var od = new api.InterconnectAttachmentAggregatedListWarningData.fromJson(
+          o.toJson());
+      checkInterconnectAttachmentAggregatedListWarningData(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectAttachmentAggregatedListWarning", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectAttachmentAggregatedListWarning();
+      var od = new api.InterconnectAttachmentAggregatedListWarning.fromJson(
+          o.toJson());
+      checkInterconnectAttachmentAggregatedListWarning(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectAttachmentAggregatedList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectAttachmentAggregatedList();
+      var od =
+          new api.InterconnectAttachmentAggregatedList.fromJson(o.toJson());
+      checkInterconnectAttachmentAggregatedList(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectAttachmentListWarningData", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectAttachmentListWarningData();
+      var od =
+          new api.InterconnectAttachmentListWarningData.fromJson(o.toJson());
+      checkInterconnectAttachmentListWarningData(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectAttachmentListWarning", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectAttachmentListWarning();
+      var od = new api.InterconnectAttachmentListWarning.fromJson(o.toJson());
+      checkInterconnectAttachmentListWarning(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectAttachmentList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectAttachmentList();
+      var od = new api.InterconnectAttachmentList.fromJson(o.toJson());
+      checkInterconnectAttachmentList(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectAttachmentPrivateInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectAttachmentPrivateInfo();
+      var od = new api.InterconnectAttachmentPrivateInfo.fromJson(o.toJson());
+      checkInterconnectAttachmentPrivateInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectAttachmentsScopedListWarningData", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectAttachmentsScopedListWarningData();
+      var od = new api.InterconnectAttachmentsScopedListWarningData.fromJson(
+          o.toJson());
+      checkInterconnectAttachmentsScopedListWarningData(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectAttachmentsScopedListWarning", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectAttachmentsScopedListWarning();
+      var od =
+          new api.InterconnectAttachmentsScopedListWarning.fromJson(o.toJson());
+      checkInterconnectAttachmentsScopedListWarning(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectAttachmentsScopedList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectAttachmentsScopedList();
+      var od = new api.InterconnectAttachmentsScopedList.fromJson(o.toJson());
+      checkInterconnectAttachmentsScopedList(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectCircuitInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectCircuitInfo();
+      var od = new api.InterconnectCircuitInfo.fromJson(o.toJson());
+      checkInterconnectCircuitInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectListWarningData", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectListWarningData();
+      var od = new api.InterconnectListWarningData.fromJson(o.toJson());
+      checkInterconnectListWarningData(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectListWarning", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectListWarning();
+      var od = new api.InterconnectListWarning.fromJson(o.toJson());
+      checkInterconnectListWarning(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectList();
+      var od = new api.InterconnectList.fromJson(o.toJson());
+      checkInterconnectList(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectLocation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectLocation();
+      var od = new api.InterconnectLocation.fromJson(o.toJson());
+      checkInterconnectLocation(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectLocationListWarningData", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectLocationListWarningData();
+      var od = new api.InterconnectLocationListWarningData.fromJson(o.toJson());
+      checkInterconnectLocationListWarningData(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectLocationListWarning", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectLocationListWarning();
+      var od = new api.InterconnectLocationListWarning.fromJson(o.toJson());
+      checkInterconnectLocationListWarning(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectLocationList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectLocationList();
+      var od = new api.InterconnectLocationList.fromJson(o.toJson());
+      checkInterconnectLocationList(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectLocationRegionInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectLocationRegionInfo();
+      var od = new api.InterconnectLocationRegionInfo.fromJson(o.toJson());
+      checkInterconnectLocationRegionInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterconnectOutageNotification", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterconnectOutageNotification();
+      var od = new api.InterconnectOutageNotification.fromJson(o.toJson());
+      checkInterconnectOutageNotification(od);
+    });
+  });
+
   unittest.group("obj-schema-License", () {
     unittest.test("to-json--from-json", () {
       var o = buildLicense();
@@ -17244,6 +18273,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -17278,6 +18308,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -17290,7 +18321,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.AcceleratorTypeAggregatedList response) {
         checkAcceleratorTypeAggregatedList(response);
@@ -17304,6 +18336,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_acceleratorType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -17331,6 +18364,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -17339,7 +18373,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_acceleratorType)
+          .get(arg_project, arg_zone, arg_acceleratorType, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AcceleratorType response) {
         checkAcceleratorType(response);
       })));
@@ -17355,6 +18389,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -17389,6 +18424,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -17401,7 +18437,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AcceleratorTypeList response) {
         checkAcceleratorTypeList(response);
       })));
@@ -17417,6 +18454,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -17451,6 +18489,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -17463,7 +18502,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AddressAggregatedList response) {
         checkAddressAggregatedList(response);
       })));
@@ -17476,6 +18516,7 @@
       var arg_region = "foo";
       var arg_address = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -17505,6 +18546,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -17514,7 +18556,7 @@
       }), true);
       res
           .delete(arg_project, arg_region, arg_address,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -17526,6 +18568,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_address = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -17553,6 +18596,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -17561,7 +18605,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_region, arg_address)
+          .get(arg_project, arg_region, arg_address, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Address response) {
         checkAddress(response);
       })));
@@ -17574,6 +18618,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Address.fromJson(json);
         checkAddress(obj);
@@ -17606,6 +18651,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -17615,7 +18661,7 @@
       }), true);
       res
           .insert(arg_request, arg_project, arg_region,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -17630,6 +18676,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -17664,6 +18711,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -17676,7 +18724,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AddressList response) {
         checkAddressList(response);
       })));
@@ -17692,6 +18741,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -17726,6 +18776,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -17738,7 +18789,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AutoscalerAggregatedList response) {
         checkAutoscalerAggregatedList(response);
       })));
@@ -17751,6 +18803,7 @@
       var arg_zone = "foo";
       var arg_autoscaler = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -17780,6 +18833,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -17789,7 +18843,7 @@
       }), true);
       res
           .delete(arg_project, arg_zone, arg_autoscaler,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -17801,6 +18855,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_autoscaler = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -17828,6 +18883,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -17836,7 +18892,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_autoscaler)
+          .get(arg_project, arg_zone, arg_autoscaler, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Autoscaler response) {
         checkAutoscaler(response);
       })));
@@ -17849,6 +18905,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Autoscaler.fromJson(json);
         checkAutoscaler(obj);
@@ -17881,6 +18938,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -17889,7 +18947,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, arg_zone, requestId: arg_requestId)
+          .insert(arg_request, arg_project, arg_zone,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -17904,6 +18963,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -17938,6 +18998,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -17950,7 +19011,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AutoscalerList response) {
         checkAutoscalerList(response);
       })));
@@ -17964,6 +19026,7 @@
       var arg_zone = "foo";
       var arg_autoscaler = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Autoscaler.fromJson(json);
         checkAutoscaler(obj);
@@ -17998,6 +19061,7 @@
             queryMap["autoscaler"].first, unittest.equals(arg_autoscaler));
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18007,7 +19071,9 @@
       }), true);
       res
           .patch(arg_request, arg_project, arg_zone,
-              autoscaler: arg_autoscaler, requestId: arg_requestId)
+              autoscaler: arg_autoscaler,
+              requestId: arg_requestId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -18021,6 +19087,7 @@
       var arg_zone = "foo";
       var arg_autoscaler = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Autoscaler.fromJson(json);
         checkAutoscaler(obj);
@@ -18055,6 +19122,7 @@
             queryMap["autoscaler"].first, unittest.equals(arg_autoscaler));
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18064,7 +19132,9 @@
       }), true);
       res
           .update(arg_request, arg_project, arg_zone,
-              autoscaler: arg_autoscaler, requestId: arg_requestId)
+              autoscaler: arg_autoscaler,
+              requestId: arg_requestId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -18079,6 +19149,7 @@
       var arg_project = "foo";
       var arg_backendBucket = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -18108,6 +19179,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18116,7 +19188,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_backendBucket, requestId: arg_requestId)
+          .delete(arg_project, arg_backendBucket,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -18128,6 +19201,7 @@
           new api.ComputeApi(mock).backendBuckets;
       var arg_project = "foo";
       var arg_backendBucket = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -18155,6 +19229,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18163,7 +19238,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_backendBucket)
+          .get(arg_project, arg_backendBucket, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BackendBucket response) {
         checkBackendBucket(response);
       })));
@@ -18176,6 +19251,7 @@
       var arg_request = buildBackendBucket();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BackendBucket.fromJson(json);
         checkBackendBucket(obj);
@@ -18208,6 +19284,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18216,7 +19293,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -18231,6 +19309,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -18265,6 +19344,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18277,7 +19357,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BackendBucketList response) {
         checkBackendBucketList(response);
       })));
@@ -18291,6 +19372,7 @@
       var arg_project = "foo";
       var arg_backendBucket = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BackendBucket.fromJson(json);
         checkBackendBucket(obj);
@@ -18323,6 +19405,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18332,7 +19415,7 @@
       }), true);
       res
           .patch(arg_request, arg_project, arg_backendBucket,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -18346,6 +19429,7 @@
       var arg_project = "foo";
       var arg_backendBucket = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BackendBucket.fromJson(json);
         checkBackendBucket(obj);
@@ -18378,6 +19462,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18387,7 +19472,7 @@
       }), true);
       res
           .update(arg_request, arg_project, arg_backendBucket,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -18404,6 +19489,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -18438,6 +19524,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18450,7 +19537,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.BackendServiceAggregatedList response) {
         checkBackendServiceAggregatedList(response);
@@ -18464,6 +19552,7 @@
       var arg_project = "foo";
       var arg_backendService = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -18493,6 +19582,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18501,7 +19591,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_backendService, requestId: arg_requestId)
+          .delete(arg_project, arg_backendService,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -18513,6 +19604,7 @@
           new api.ComputeApi(mock).backendServices;
       var arg_project = "foo";
       var arg_backendService = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -18540,6 +19632,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18548,7 +19641,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_backendService)
+          .get(arg_project, arg_backendService, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BackendService response) {
         checkBackendService(response);
       })));
@@ -18561,6 +19654,7 @@
       var arg_request = buildResourceGroupReference();
       var arg_project = "foo";
       var arg_backendService = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ResourceGroupReference.fromJson(json);
         checkResourceGroupReference(obj);
@@ -18591,6 +19685,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18598,8 +19693,11 @@
         var resp = convert.JSON.encode(buildBackendServiceGroupHealth());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.getHealth(arg_request, arg_project, arg_backendService).then(
-          unittest.expectAsync1(((api.BackendServiceGroupHealth response) {
+      res
+          .getHealth(arg_request, arg_project, arg_backendService,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.BackendServiceGroupHealth response) {
         checkBackendServiceGroupHealth(response);
       })));
     });
@@ -18611,6 +19709,7 @@
       var arg_request = buildBackendService();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BackendService.fromJson(json);
         checkBackendService(obj);
@@ -18643,6 +19742,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18651,7 +19751,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -18666,6 +19767,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -18700,6 +19802,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18712,7 +19815,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BackendServiceList response) {
         checkBackendServiceList(response);
       })));
@@ -18726,6 +19830,7 @@
       var arg_project = "foo";
       var arg_backendService = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BackendService.fromJson(json);
         checkBackendService(obj);
@@ -18758,6 +19863,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18767,7 +19873,7 @@
       }), true);
       res
           .patch(arg_request, arg_project, arg_backendService,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -18781,6 +19887,7 @@
       var arg_project = "foo";
       var arg_backendService = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BackendService.fromJson(json);
         checkBackendService(obj);
@@ -18813,6 +19920,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18822,7 +19930,7 @@
       }), true);
       res
           .update(arg_request, arg_project, arg_backendService,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -18838,6 +19946,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -18872,6 +19981,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18884,7 +19994,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DiskTypeAggregatedList response) {
         checkDiskTypeAggregatedList(response);
       })));
@@ -18896,6 +20007,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_diskType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -18923,6 +20035,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18931,7 +20044,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_diskType)
+          .get(arg_project, arg_zone, arg_diskType, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DiskType response) {
         checkDiskType(response);
       })));
@@ -18946,6 +20059,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -18980,6 +20094,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -18992,7 +20107,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DiskTypeList response) {
         checkDiskTypeList(response);
       })));
@@ -19008,6 +20124,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -19042,6 +20159,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19054,7 +20172,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DiskAggregatedList response) {
         checkDiskAggregatedList(response);
       })));
@@ -19069,6 +20188,7 @@
       var arg_disk = "foo";
       var arg_guestFlush = true;
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Snapshot.fromJson(json);
         checkSnapshot(obj);
@@ -19103,6 +20223,7 @@
             queryMap["guestFlush"].first, unittest.equals("$arg_guestFlush"));
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19112,7 +20233,9 @@
       }), true);
       res
           .createSnapshot(arg_request, arg_project, arg_zone, arg_disk,
-              guestFlush: arg_guestFlush, requestId: arg_requestId)
+              guestFlush: arg_guestFlush,
+              requestId: arg_requestId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -19125,6 +20248,7 @@
       var arg_zone = "foo";
       var arg_disk = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -19154,6 +20278,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19162,7 +20287,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_zone, arg_disk, requestId: arg_requestId)
+          .delete(arg_project, arg_zone, arg_disk,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -19174,6 +20300,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_disk = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -19201,6 +20328,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19209,7 +20337,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_disk)
+          .get(arg_project, arg_zone, arg_disk, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Disk response) {
         checkDisk(response);
       })));
@@ -19223,6 +20351,7 @@
       var arg_zone = "foo";
       var arg_requestId = "foo";
       var arg_sourceImage = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Disk.fromJson(json);
         checkDisk(obj);
@@ -19257,6 +20386,7 @@
             queryMap["requestId"].first, unittest.equals(arg_requestId));
         unittest.expect(
             queryMap["sourceImage"].first, unittest.equals(arg_sourceImage));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19266,7 +20396,9 @@
       }), true);
       res
           .insert(arg_request, arg_project, arg_zone,
-              requestId: arg_requestId, sourceImage: arg_sourceImage)
+              requestId: arg_requestId,
+              sourceImage: arg_sourceImage,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -19281,6 +20413,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -19315,6 +20448,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19327,7 +20461,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DiskList response) {
         checkDiskList(response);
       })));
@@ -19341,6 +20476,7 @@
       var arg_zone = "foo";
       var arg_disk = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DisksResizeRequest.fromJson(json);
         checkDisksResizeRequest(obj);
@@ -19373,6 +20509,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19382,7 +20519,7 @@
       }), true);
       res
           .resize(arg_request, arg_project, arg_zone, arg_disk,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -19396,6 +20533,7 @@
       var arg_zone = "foo";
       var arg_resource = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ZoneSetLabelsRequest.fromJson(json);
         checkZoneSetLabelsRequest(obj);
@@ -19428,6 +20566,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19437,7 +20576,7 @@
       }), true);
       res
           .setLabels(arg_request, arg_project, arg_zone, arg_resource,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -19451,6 +20590,7 @@
       var arg_project = "foo";
       var arg_firewall = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -19480,6 +20620,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19488,7 +20629,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_firewall, requestId: arg_requestId)
+          .delete(arg_project, arg_firewall,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -19499,6 +20641,7 @@
       api.FirewallsResourceApi res = new api.ComputeApi(mock).firewalls;
       var arg_project = "foo";
       var arg_firewall = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -19526,6 +20669,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19534,7 +20678,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_firewall)
+          .get(arg_project, arg_firewall, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Firewall response) {
         checkFirewall(response);
       })));
@@ -19546,6 +20690,7 @@
       var arg_request = buildFirewall();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Firewall.fromJson(json);
         checkFirewall(obj);
@@ -19578,6 +20723,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19586,7 +20732,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -19600,6 +20747,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -19634,6 +20782,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19646,7 +20795,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.FirewallList response) {
         checkFirewallList(response);
       })));
@@ -19659,6 +20809,7 @@
       var arg_project = "foo";
       var arg_firewall = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Firewall.fromJson(json);
         checkFirewall(obj);
@@ -19691,6 +20842,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19700,7 +20852,7 @@
       }), true);
       res
           .patch(arg_request, arg_project, arg_firewall,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -19713,6 +20865,7 @@
       var arg_project = "foo";
       var arg_firewall = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Firewall.fromJson(json);
         checkFirewall(obj);
@@ -19745,6 +20898,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19754,7 +20908,7 @@
       }), true);
       res
           .update(arg_request, arg_project, arg_firewall,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -19771,6 +20925,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -19805,6 +20960,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19817,7 +20973,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ForwardingRuleAggregatedList response) {
         checkForwardingRuleAggregatedList(response);
@@ -19832,6 +20989,7 @@
       var arg_region = "foo";
       var arg_forwardingRule = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -19861,6 +21019,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19870,7 +21029,7 @@
       }), true);
       res
           .delete(arg_project, arg_region, arg_forwardingRule,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -19883,6 +21042,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_forwardingRule = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -19910,6 +21070,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19918,7 +21079,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_region, arg_forwardingRule)
+          .get(arg_project, arg_region, arg_forwardingRule,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ForwardingRule response) {
         checkForwardingRule(response);
       })));
@@ -19932,6 +21094,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ForwardingRule.fromJson(json);
         checkForwardingRule(obj);
@@ -19964,6 +21127,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -19973,7 +21137,7 @@
       }), true);
       res
           .insert(arg_request, arg_project, arg_region,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -19989,6 +21153,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -20023,6 +21188,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20035,7 +21201,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ForwardingRuleList response) {
         checkForwardingRuleList(response);
       })));
@@ -20050,6 +21217,7 @@
       var arg_region = "foo";
       var arg_forwardingRule = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetReference.fromJson(json);
         checkTargetReference(obj);
@@ -20082,6 +21250,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20091,7 +21260,7 @@
       }), true);
       res
           .setTarget(arg_request, arg_project, arg_region, arg_forwardingRule,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -20106,6 +21275,7 @@
       var arg_project = "foo";
       var arg_address = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -20135,6 +21305,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20143,7 +21314,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_address, requestId: arg_requestId)
+          .delete(arg_project, arg_address,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -20155,6 +21327,7 @@
           new api.ComputeApi(mock).globalAddresses;
       var arg_project = "foo";
       var arg_address = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -20182,6 +21355,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20190,7 +21364,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_address)
+          .get(arg_project, arg_address, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Address response) {
         checkAddress(response);
       })));
@@ -20203,6 +21377,7 @@
       var arg_request = buildAddress();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Address.fromJson(json);
         checkAddress(obj);
@@ -20235,6 +21410,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20243,7 +21419,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -20258,6 +21435,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -20292,6 +21470,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20304,7 +21483,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AddressList response) {
         checkAddressList(response);
       })));
@@ -20319,6 +21499,7 @@
       var arg_project = "foo";
       var arg_forwardingRule = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -20348,6 +21529,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20356,7 +21538,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_forwardingRule, requestId: arg_requestId)
+          .delete(arg_project, arg_forwardingRule,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -20368,6 +21551,7 @@
           new api.ComputeApi(mock).globalForwardingRules;
       var arg_project = "foo";
       var arg_forwardingRule = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -20395,6 +21579,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20403,7 +21588,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_forwardingRule)
+          .get(arg_project, arg_forwardingRule, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ForwardingRule response) {
         checkForwardingRule(response);
       })));
@@ -20416,6 +21601,7 @@
       var arg_request = buildForwardingRule();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ForwardingRule.fromJson(json);
         checkForwardingRule(obj);
@@ -20448,6 +21634,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20456,7 +21643,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -20471,6 +21659,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -20505,6 +21694,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20517,7 +21707,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ForwardingRuleList response) {
         checkForwardingRuleList(response);
       })));
@@ -20531,6 +21722,7 @@
       var arg_project = "foo";
       var arg_forwardingRule = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetReference.fromJson(json);
         checkTargetReference(obj);
@@ -20563,6 +21755,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20572,7 +21765,7 @@
       }), true);
       res
           .setTarget(arg_request, arg_project, arg_forwardingRule,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -20589,6 +21782,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -20623,6 +21817,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20635,7 +21830,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OperationAggregatedList response) {
         checkOperationAggregatedList(response);
       })));
@@ -20647,6 +21843,7 @@
           new api.ComputeApi(mock).globalOperations;
       var arg_project = "foo";
       var arg_operation = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -20674,6 +21871,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20682,7 +21880,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_operation)
+          .delete(arg_project, arg_operation, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -20692,6 +21890,7 @@
           new api.ComputeApi(mock).globalOperations;
       var arg_project = "foo";
       var arg_operation = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -20719,6 +21918,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20727,7 +21927,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_operation)
+          .get(arg_project, arg_operation, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -20742,6 +21942,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -20776,6 +21977,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20788,7 +21990,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OperationList response) {
         checkOperationList(response);
       })));
@@ -20802,6 +22005,7 @@
       var arg_project = "foo";
       var arg_healthCheck = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -20831,6 +22035,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20839,7 +22044,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_healthCheck, requestId: arg_requestId)
+          .delete(arg_project, arg_healthCheck,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -20850,6 +22056,7 @@
       api.HealthChecksResourceApi res = new api.ComputeApi(mock).healthChecks;
       var arg_project = "foo";
       var arg_healthCheck = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -20877,6 +22084,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20885,7 +22093,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_healthCheck)
+          .get(arg_project, arg_healthCheck, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.HealthCheck response) {
         checkHealthCheck(response);
       })));
@@ -20897,6 +22105,7 @@
       var arg_request = buildHealthCheck();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.HealthCheck.fromJson(json);
         checkHealthCheck(obj);
@@ -20929,6 +22138,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20937,7 +22147,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -20951,6 +22162,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -20985,6 +22197,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -20997,7 +22210,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.HealthCheckList response) {
         checkHealthCheckList(response);
       })));
@@ -21010,6 +22224,7 @@
       var arg_project = "foo";
       var arg_healthCheck = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.HealthCheck.fromJson(json);
         checkHealthCheck(obj);
@@ -21042,6 +22257,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21051,7 +22267,7 @@
       }), true);
       res
           .patch(arg_request, arg_project, arg_healthCheck,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -21064,6 +22280,7 @@
       var arg_project = "foo";
       var arg_healthCheck = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.HealthCheck.fromJson(json);
         checkHealthCheck(obj);
@@ -21096,6 +22313,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21105,7 +22323,7 @@
       }), true);
       res
           .update(arg_request, arg_project, arg_healthCheck,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -21120,6 +22338,7 @@
       var arg_project = "foo";
       var arg_httpHealthCheck = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -21149,6 +22368,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21157,7 +22377,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_httpHealthCheck, requestId: arg_requestId)
+          .delete(arg_project, arg_httpHealthCheck,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -21169,6 +22390,7 @@
           new api.ComputeApi(mock).httpHealthChecks;
       var arg_project = "foo";
       var arg_httpHealthCheck = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -21196,6 +22418,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21204,7 +22427,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_httpHealthCheck)
+          .get(arg_project, arg_httpHealthCheck, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.HttpHealthCheck response) {
         checkHttpHealthCheck(response);
       })));
@@ -21217,6 +22440,7 @@
       var arg_request = buildHttpHealthCheck();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.HttpHealthCheck.fromJson(json);
         checkHttpHealthCheck(obj);
@@ -21249,6 +22473,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21257,7 +22482,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -21272,6 +22498,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -21306,6 +22533,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21318,7 +22546,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.HttpHealthCheckList response) {
         checkHttpHealthCheckList(response);
       })));
@@ -21332,6 +22561,7 @@
       var arg_project = "foo";
       var arg_httpHealthCheck = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.HttpHealthCheck.fromJson(json);
         checkHttpHealthCheck(obj);
@@ -21364,6 +22594,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21373,7 +22604,7 @@
       }), true);
       res
           .patch(arg_request, arg_project, arg_httpHealthCheck,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -21387,6 +22618,7 @@
       var arg_project = "foo";
       var arg_httpHealthCheck = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.HttpHealthCheck.fromJson(json);
         checkHttpHealthCheck(obj);
@@ -21419,6 +22651,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21428,7 +22661,7 @@
       }), true);
       res
           .update(arg_request, arg_project, arg_httpHealthCheck,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -21443,6 +22676,7 @@
       var arg_project = "foo";
       var arg_httpsHealthCheck = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -21472,6 +22706,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21480,7 +22715,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_httpsHealthCheck, requestId: arg_requestId)
+          .delete(arg_project, arg_httpsHealthCheck,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -21492,6 +22728,7 @@
           new api.ComputeApi(mock).httpsHealthChecks;
       var arg_project = "foo";
       var arg_httpsHealthCheck = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -21519,6 +22756,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21527,7 +22765,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_httpsHealthCheck)
+          .get(arg_project, arg_httpsHealthCheck, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.HttpsHealthCheck response) {
         checkHttpsHealthCheck(response);
       })));
@@ -21540,6 +22778,7 @@
       var arg_request = buildHttpsHealthCheck();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.HttpsHealthCheck.fromJson(json);
         checkHttpsHealthCheck(obj);
@@ -21572,6 +22811,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21580,7 +22820,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -21595,6 +22836,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -21629,6 +22871,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21641,7 +22884,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.HttpsHealthCheckList response) {
         checkHttpsHealthCheckList(response);
       })));
@@ -21655,6 +22899,7 @@
       var arg_project = "foo";
       var arg_httpsHealthCheck = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.HttpsHealthCheck.fromJson(json);
         checkHttpsHealthCheck(obj);
@@ -21687,6 +22932,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21696,7 +22942,7 @@
       }), true);
       res
           .patch(arg_request, arg_project, arg_httpsHealthCheck,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -21710,6 +22956,7 @@
       var arg_project = "foo";
       var arg_httpsHealthCheck = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.HttpsHealthCheck.fromJson(json);
         checkHttpsHealthCheck(obj);
@@ -21742,6 +22989,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21751,7 +22999,7 @@
       }), true);
       res
           .update(arg_request, arg_project, arg_httpsHealthCheck,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -21765,6 +23013,7 @@
       var arg_project = "foo";
       var arg_image = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -21794,6 +23043,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21802,7 +23052,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_image, requestId: arg_requestId)
+          .delete(arg_project, arg_image,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -21815,6 +23066,7 @@
       var arg_project = "foo";
       var arg_image = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DeprecationStatus.fromJson(json);
         checkDeprecationStatus(obj);
@@ -21847,6 +23099,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21856,7 +23109,7 @@
       }), true);
       res
           .deprecate(arg_request, arg_project, arg_image,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -21867,6 +23120,7 @@
       api.ImagesResourceApi res = new api.ComputeApi(mock).images;
       var arg_project = "foo";
       var arg_image = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -21894,6 +23148,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21902,7 +23157,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_image)
+          .get(arg_project, arg_image, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Image response) {
         checkImage(response);
       })));
@@ -21913,6 +23168,7 @@
       api.ImagesResourceApi res = new api.ComputeApi(mock).images;
       var arg_project = "foo";
       var arg_family = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -21940,6 +23196,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -21948,7 +23205,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getFromFamily(arg_project, arg_family)
+          .getFromFamily(arg_project, arg_family, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Image response) {
         checkImage(response);
       })));
@@ -21961,6 +23218,7 @@
       var arg_project = "foo";
       var arg_forceCreate = true;
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Image.fromJson(json);
         checkImage(obj);
@@ -21995,6 +23253,7 @@
             queryMap["forceCreate"].first, unittest.equals("$arg_forceCreate"));
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22004,7 +23263,9 @@
       }), true);
       res
           .insert(arg_request, arg_project,
-              forceCreate: arg_forceCreate, requestId: arg_requestId)
+              forceCreate: arg_forceCreate,
+              requestId: arg_requestId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -22018,6 +23279,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -22052,6 +23314,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22064,7 +23327,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ImageList response) {
         checkImageList(response);
       })));
@@ -22076,6 +23340,7 @@
       var arg_request = buildGlobalSetLabelsRequest();
       var arg_project = "foo";
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GlobalSetLabelsRequest.fromJson(json);
         checkGlobalSetLabelsRequest(obj);
@@ -22106,6 +23371,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22114,7 +23380,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setLabels(arg_request, arg_project, arg_resource)
+          .setLabels(arg_request, arg_project, arg_resource,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -22131,6 +23398,7 @@
       var arg_zone = "foo";
       var arg_instanceGroupManager = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.InstanceGroupManagersAbandonInstancesRequest.fromJson(json);
@@ -22164,6 +23432,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22174,7 +23443,7 @@
       res
           .abandonInstances(
               arg_request, arg_project, arg_zone, arg_instanceGroupManager,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -22189,6 +23458,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -22223,6 +23493,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22236,7 +23507,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.InstanceGroupManagerAggregatedList response) {
         checkInstanceGroupManagerAggregatedList(response);
@@ -22251,6 +23523,7 @@
       var arg_zone = "foo";
       var arg_instanceGroupManager = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -22280,6 +23553,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22289,7 +23563,7 @@
       }), true);
       res
           .delete(arg_project, arg_zone, arg_instanceGroupManager,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -22304,6 +23578,7 @@
       var arg_zone = "foo";
       var arg_instanceGroupManager = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.InstanceGroupManagersDeleteInstancesRequest.fromJson(json);
@@ -22337,6 +23612,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22347,7 +23623,7 @@
       res
           .deleteInstances(
               arg_request, arg_project, arg_zone, arg_instanceGroupManager,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -22360,6 +23636,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_instanceGroupManager = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -22387,6 +23664,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22395,7 +23673,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_instanceGroupManager)
+          .get(arg_project, arg_zone, arg_instanceGroupManager,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstanceGroupManager response) {
         checkInstanceGroupManager(response);
       })));
@@ -22409,6 +23688,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstanceGroupManager.fromJson(json);
         checkInstanceGroupManager(obj);
@@ -22441,6 +23721,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22449,7 +23730,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, arg_zone, requestId: arg_requestId)
+          .insert(arg_request, arg_project, arg_zone,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -22465,6 +23747,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -22499,6 +23782,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22511,7 +23795,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstanceGroupManagerList response) {
         checkInstanceGroupManagerList(response);
       })));
@@ -22528,6 +23813,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -22562,6 +23848,7 @@
             queryMap["order_by"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22575,7 +23862,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(
               ((api.InstanceGroupManagersListManagedInstancesResponse
                   response) {
@@ -22592,6 +23880,7 @@
       var arg_zone = "foo";
       var arg_instanceGroupManager = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.InstanceGroupManagersRecreateInstancesRequest.fromJson(
@@ -22626,6 +23915,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22636,7 +23926,7 @@
       res
           .recreateInstances(
               arg_request, arg_project, arg_zone, arg_instanceGroupManager,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -22651,6 +23941,7 @@
       var arg_instanceGroupManager = "foo";
       var arg_size = 42;
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -22682,6 +23973,7 @@
             core.int.parse(queryMap["size"].first), unittest.equals(arg_size));
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22691,7 +23983,7 @@
       }), true);
       res
           .resize(arg_project, arg_zone, arg_instanceGroupManager, arg_size,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -22706,6 +23998,7 @@
       var arg_zone = "foo";
       var arg_instanceGroupManager = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.InstanceGroupManagersSetInstanceTemplateRequest.fromJson(
@@ -22740,6 +24033,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22750,7 +24044,7 @@
       res
           .setInstanceTemplate(
               arg_request, arg_project, arg_zone, arg_instanceGroupManager,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -22765,6 +24059,7 @@
       var arg_zone = "foo";
       var arg_instanceGroupManager = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.InstanceGroupManagersSetTargetPoolsRequest.fromJson(json);
@@ -22798,6 +24093,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22808,7 +24104,7 @@
       res
           .setTargetPools(
               arg_request, arg_project, arg_zone, arg_instanceGroupManager,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -22825,6 +24121,7 @@
       var arg_zone = "foo";
       var arg_instanceGroup = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstanceGroupsAddInstancesRequest.fromJson(json);
         checkInstanceGroupsAddInstancesRequest(obj);
@@ -22857,6 +24154,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22866,7 +24164,7 @@
       }), true);
       res
           .addInstances(arg_request, arg_project, arg_zone, arg_instanceGroup,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -22881,6 +24179,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -22915,6 +24214,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22927,7 +24227,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.InstanceGroupAggregatedList response) {
         checkInstanceGroupAggregatedList(response);
@@ -22942,6 +24243,7 @@
       var arg_zone = "foo";
       var arg_instanceGroup = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -22971,6 +24273,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -22980,7 +24283,7 @@
       }), true);
       res
           .delete(arg_project, arg_zone, arg_instanceGroup,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -22993,6 +24296,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_instanceGroup = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -23020,6 +24324,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23028,7 +24333,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_instanceGroup)
+          .get(arg_project, arg_zone, arg_instanceGroup, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstanceGroup response) {
         checkInstanceGroup(response);
       })));
@@ -23042,6 +24347,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstanceGroup.fromJson(json);
         checkInstanceGroup(obj);
@@ -23074,6 +24380,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23082,7 +24389,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, arg_zone, requestId: arg_requestId)
+          .insert(arg_request, arg_project, arg_zone,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -23098,6 +24406,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -23132,6 +24441,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23144,7 +24454,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstanceGroupList response) {
         checkInstanceGroupList(response);
       })));
@@ -23162,6 +24473,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstanceGroupsListInstancesRequest.fromJson(json);
         checkInstanceGroupsListInstancesRequest(obj);
@@ -23199,6 +24511,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23211,7 +24524,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.InstanceGroupsListInstances response) {
         checkInstanceGroupsListInstances(response);
@@ -23227,6 +24541,7 @@
       var arg_zone = "foo";
       var arg_instanceGroup = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstanceGroupsRemoveInstancesRequest.fromJson(json);
         checkInstanceGroupsRemoveInstancesRequest(obj);
@@ -23259,6 +24574,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23269,7 +24585,7 @@
       res
           .removeInstances(
               arg_request, arg_project, arg_zone, arg_instanceGroup,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -23284,6 +24600,7 @@
       var arg_zone = "foo";
       var arg_instanceGroup = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstanceGroupsSetNamedPortsRequest.fromJson(json);
         checkInstanceGroupsSetNamedPortsRequest(obj);
@@ -23316,6 +24633,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23325,7 +24643,7 @@
       }), true);
       res
           .setNamedPorts(arg_request, arg_project, arg_zone, arg_instanceGroup,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -23340,6 +24658,7 @@
       var arg_project = "foo";
       var arg_instanceTemplate = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -23369,6 +24688,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23377,7 +24697,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_instanceTemplate, requestId: arg_requestId)
+          .delete(arg_project, arg_instanceTemplate,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -23389,6 +24710,7 @@
           new api.ComputeApi(mock).instanceTemplates;
       var arg_project = "foo";
       var arg_instanceTemplate = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -23416,6 +24738,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23424,7 +24747,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_instanceTemplate)
+          .get(arg_project, arg_instanceTemplate, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstanceTemplate response) {
         checkInstanceTemplate(response);
       })));
@@ -23437,6 +24760,7 @@
       var arg_request = buildInstanceTemplate();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstanceTemplate.fromJson(json);
         checkInstanceTemplate(obj);
@@ -23469,6 +24793,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23477,7 +24802,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -23492,6 +24818,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -23526,6 +24853,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23538,7 +24866,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstanceTemplateList response) {
         checkInstanceTemplateList(response);
       })));
@@ -23555,6 +24884,7 @@
       var arg_instance = "foo";
       var arg_networkInterface = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AccessConfig.fromJson(json);
         checkAccessConfig(obj);
@@ -23589,6 +24919,7 @@
             unittest.equals(arg_networkInterface));
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23599,7 +24930,7 @@
       res
           .addAccessConfig(arg_request, arg_project, arg_zone, arg_instance,
               arg_networkInterface,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -23613,6 +24944,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -23647,6 +24979,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23659,7 +24992,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstanceAggregatedList response) {
         checkInstanceAggregatedList(response);
       })));
@@ -23673,6 +25007,7 @@
       var arg_zone = "foo";
       var arg_instance = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AttachedDisk.fromJson(json);
         checkAttachedDisk(obj);
@@ -23705,6 +25040,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23714,7 +25050,7 @@
       }), true);
       res
           .attachDisk(arg_request, arg_project, arg_zone, arg_instance,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -23727,6 +25063,7 @@
       var arg_zone = "foo";
       var arg_instance = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -23756,6 +25093,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23764,7 +25102,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_zone, arg_instance, requestId: arg_requestId)
+          .delete(arg_project, arg_zone, arg_instance,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -23779,6 +25118,7 @@
       var arg_accessConfig = "foo";
       var arg_networkInterface = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -23812,6 +25152,7 @@
             unittest.equals(arg_networkInterface));
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23822,7 +25163,7 @@
       res
           .deleteAccessConfig(arg_project, arg_zone, arg_instance,
               arg_accessConfig, arg_networkInterface,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -23836,6 +25177,7 @@
       var arg_instance = "foo";
       var arg_deviceName = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -23867,6 +25209,7 @@
             queryMap["deviceName"].first, unittest.equals(arg_deviceName));
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23876,7 +25219,7 @@
       }), true);
       res
           .detachDisk(arg_project, arg_zone, arg_instance, arg_deviceName,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -23888,6 +25231,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -23915,6 +25259,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23923,7 +25268,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_instance)
+          .get(arg_project, arg_zone, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Instance response) {
         checkInstance(response);
       })));
@@ -23937,6 +25282,7 @@
       var arg_instance = "foo";
       var arg_port = 42;
       var arg_start_1 = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -23967,6 +25313,7 @@
         unittest.expect(
             core.int.parse(queryMap["port"].first), unittest.equals(arg_port));
         unittest.expect(queryMap["start"].first, unittest.equals(arg_start_1));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -23976,7 +25323,7 @@
       }), true);
       res
           .getSerialPortOutput(arg_project, arg_zone, arg_instance,
-              port: arg_port, start_1: arg_start_1)
+              port: arg_port, start_1: arg_start_1, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SerialPortOutput response) {
         checkSerialPortOutput(response);
       })));
@@ -23989,6 +25336,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Instance.fromJson(json);
         checkInstance(obj);
@@ -24021,6 +25369,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24029,7 +25378,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, arg_zone, requestId: arg_requestId)
+          .insert(arg_request, arg_project, arg_zone,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -24044,6 +25394,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -24078,6 +25429,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24090,7 +25442,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstanceList response) {
         checkInstanceList(response);
       })));
@@ -24103,6 +25456,7 @@
       var arg_zone = "foo";
       var arg_instance = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -24132,6 +25486,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24140,7 +25495,66 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .reset(arg_project, arg_zone, arg_instance, requestId: arg_requestId)
+          .reset(arg_project, arg_zone, arg_instance,
+              requestId: arg_requestId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
+        checkOperation(response);
+      })));
+    });
+
+    unittest.test("method--setDeletionProtection", () {
+      var mock = new HttpServerMock();
+      api.InstancesResourceApi res = new api.ComputeApi(mock).instances;
+      var arg_project = "foo";
+      var arg_zone = "foo";
+      var arg_resource = "foo";
+      var arg_deletionProtection = true;
+      var arg_requestId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["deletionProtection"].first,
+            unittest.equals("$arg_deletionProtection"));
+        unittest.expect(
+            queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOperation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .setDeletionProtection(arg_project, arg_zone, arg_resource,
+              deletionProtection: arg_deletionProtection,
+              requestId: arg_requestId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -24155,6 +25569,7 @@
       var arg_autoDelete = true;
       var arg_deviceName = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -24188,6 +25603,7 @@
             queryMap["deviceName"].first, unittest.equals(arg_deviceName));
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24198,7 +25614,7 @@
       res
           .setDiskAutoDelete(arg_project, arg_zone, arg_instance,
               arg_autoDelete, arg_deviceName,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -24212,6 +25628,7 @@
       var arg_zone = "foo";
       var arg_instance = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstancesSetLabelsRequest.fromJson(json);
         checkInstancesSetLabelsRequest(obj);
@@ -24244,6 +25661,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24253,7 +25671,7 @@
       }), true);
       res
           .setLabels(arg_request, arg_project, arg_zone, arg_instance,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -24267,6 +25685,7 @@
       var arg_zone = "foo";
       var arg_instance = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstancesSetMachineResourcesRequest.fromJson(json);
         checkInstancesSetMachineResourcesRequest(obj);
@@ -24299,6 +25718,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24308,7 +25728,7 @@
       }), true);
       res
           .setMachineResources(arg_request, arg_project, arg_zone, arg_instance,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -24322,6 +25742,7 @@
       var arg_zone = "foo";
       var arg_instance = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstancesSetMachineTypeRequest.fromJson(json);
         checkInstancesSetMachineTypeRequest(obj);
@@ -24354,6 +25775,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24363,7 +25785,7 @@
       }), true);
       res
           .setMachineType(arg_request, arg_project, arg_zone, arg_instance,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -24377,6 +25799,7 @@
       var arg_zone = "foo";
       var arg_instance = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Metadata.fromJson(json);
         checkMetadata(obj);
@@ -24409,6 +25832,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24418,7 +25842,7 @@
       }), true);
       res
           .setMetadata(arg_request, arg_project, arg_zone, arg_instance,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -24432,6 +25856,7 @@
       var arg_zone = "foo";
       var arg_instance = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstancesSetMinCpuPlatformRequest.fromJson(json);
         checkInstancesSetMinCpuPlatformRequest(obj);
@@ -24464,6 +25889,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24473,7 +25899,7 @@
       }), true);
       res
           .setMinCpuPlatform(arg_request, arg_project, arg_zone, arg_instance,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -24487,6 +25913,7 @@
       var arg_zone = "foo";
       var arg_instance = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Scheduling.fromJson(json);
         checkScheduling(obj);
@@ -24519,6 +25946,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24528,7 +25956,7 @@
       }), true);
       res
           .setScheduling(arg_request, arg_project, arg_zone, arg_instance,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -24542,6 +25970,7 @@
       var arg_zone = "foo";
       var arg_instance = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstancesSetServiceAccountRequest.fromJson(json);
         checkInstancesSetServiceAccountRequest(obj);
@@ -24574,6 +26003,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24583,7 +26013,7 @@
       }), true);
       res
           .setServiceAccount(arg_request, arg_project, arg_zone, arg_instance,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -24597,6 +26027,7 @@
       var arg_zone = "foo";
       var arg_instance = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Tags.fromJson(json);
         checkTags(obj);
@@ -24629,6 +26060,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24638,7 +26070,7 @@
       }), true);
       res
           .setTags(arg_request, arg_project, arg_zone, arg_instance,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -24651,6 +26083,7 @@
       var arg_zone = "foo";
       var arg_instance = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -24680,6 +26113,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24688,7 +26122,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .start(arg_project, arg_zone, arg_instance, requestId: arg_requestId)
+          .start(arg_project, arg_zone, arg_instance,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -24702,6 +26137,7 @@
       var arg_zone = "foo";
       var arg_instance = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstancesStartWithEncryptionKeyRequest.fromJson(json);
         checkInstancesStartWithEncryptionKeyRequest(obj);
@@ -24734,6 +26170,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24744,7 +26181,7 @@
       res
           .startWithEncryptionKey(
               arg_request, arg_project, arg_zone, arg_instance,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -24757,6 +26194,7 @@
       var arg_zone = "foo";
       var arg_instance = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -24786,6 +26224,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24794,19 +26233,25 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .stop(arg_project, arg_zone, arg_instance, requestId: arg_requestId)
+          .stop(arg_project, arg_zone, arg_instance,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
     });
   });
 
-  unittest.group("resource-LicensesResourceApi", () {
-    unittest.test("method--get", () {
+  unittest.group("resource-InterconnectAttachmentsResourceApi", () {
+    unittest.test("method--aggregatedList", () {
       var mock = new HttpServerMock();
-      api.LicensesResourceApi res = new api.ComputeApi(mock).licenses;
+      api.InterconnectAttachmentsResourceApi res =
+          new api.ComputeApi(mock).interconnectAttachments;
       var arg_project = "foo";
-      var arg_license = "foo";
+      var arg_filter = "foo";
+      var arg_maxResults = 42;
+      var arg_orderBy = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -24834,6 +26279,690 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildInterconnectAttachmentAggregatedList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .aggregatedList(arg_project,
+              filter: arg_filter,
+              maxResults: arg_maxResults,
+              orderBy: arg_orderBy,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.InterconnectAttachmentAggregatedList response) {
+        checkInterconnectAttachmentAggregatedList(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.InterconnectAttachmentsResourceApi res =
+          new api.ComputeApi(mock).interconnectAttachments;
+      var arg_project = "foo";
+      var arg_region = "foo";
+      var arg_interconnectAttachment = "foo";
+      var arg_requestId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOperation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_project, arg_region, arg_interconnectAttachment,
+              requestId: arg_requestId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
+        checkOperation(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.InterconnectAttachmentsResourceApi res =
+          new api.ComputeApi(mock).interconnectAttachments;
+      var arg_project = "foo";
+      var arg_region = "foo";
+      var arg_interconnectAttachment = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildInterconnectAttachment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_project, arg_region, arg_interconnectAttachment,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.InterconnectAttachment response) {
+        checkInterconnectAttachment(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.InterconnectAttachmentsResourceApi res =
+          new api.ComputeApi(mock).interconnectAttachments;
+      var arg_request = buildInterconnectAttachment();
+      var arg_project = "foo";
+      var arg_region = "foo";
+      var arg_requestId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.InterconnectAttachment.fromJson(json);
+        checkInterconnectAttachment(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOperation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_project, arg_region,
+              requestId: arg_requestId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
+        checkOperation(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.InterconnectAttachmentsResourceApi res =
+          new api.ComputeApi(mock).interconnectAttachments;
+      var arg_project = "foo";
+      var arg_region = "foo";
+      var arg_filter = "foo";
+      var arg_maxResults = 42;
+      var arg_orderBy = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildInterconnectAttachmentList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_project, arg_region,
+              filter: arg_filter,
+              maxResults: arg_maxResults,
+              orderBy: arg_orderBy,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.InterconnectAttachmentList response) {
+        checkInterconnectAttachmentList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-InterconnectLocationsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.InterconnectLocationsResourceApi res =
+          new api.ComputeApi(mock).interconnectLocations;
+      var arg_project = "foo";
+      var arg_interconnectLocation = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildInterconnectLocation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_project, arg_interconnectLocation, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.InterconnectLocation response) {
+        checkInterconnectLocation(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.InterconnectLocationsResourceApi res =
+          new api.ComputeApi(mock).interconnectLocations;
+      var arg_project = "foo";
+      var arg_filter = "foo";
+      var arg_maxResults = 42;
+      var arg_orderBy = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildInterconnectLocationList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_project,
+              filter: arg_filter,
+              maxResults: arg_maxResults,
+              orderBy: arg_orderBy,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.InterconnectLocationList response) {
+        checkInterconnectLocationList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-InterconnectsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.InterconnectsResourceApi res = new api.ComputeApi(mock).interconnects;
+      var arg_project = "foo";
+      var arg_interconnect = "foo";
+      var arg_requestId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOperation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_project, arg_interconnect,
+              requestId: arg_requestId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
+        checkOperation(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.InterconnectsResourceApi res = new api.ComputeApi(mock).interconnects;
+      var arg_project = "foo";
+      var arg_interconnect = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildInterconnect());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_project, arg_interconnect, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Interconnect response) {
+        checkInterconnect(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.InterconnectsResourceApi res = new api.ComputeApi(mock).interconnects;
+      var arg_request = buildInterconnect();
+      var arg_project = "foo";
+      var arg_requestId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Interconnect.fromJson(json);
+        checkInterconnect(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOperation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
+        checkOperation(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.InterconnectsResourceApi res = new api.ComputeApi(mock).interconnects;
+      var arg_project = "foo";
+      var arg_filter = "foo";
+      var arg_maxResults = 42;
+      var arg_orderBy = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildInterconnectList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_project,
+              filter: arg_filter,
+              maxResults: arg_maxResults,
+              orderBy: arg_orderBy,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.InterconnectList response) {
+        checkInterconnectList(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.InterconnectsResourceApi res = new api.ComputeApi(mock).interconnects;
+      var arg_request = buildInterconnect();
+      var arg_project = "foo";
+      var arg_interconnect = "foo";
+      var arg_requestId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Interconnect.fromJson(json);
+        checkInterconnect(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOperation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_project, arg_interconnect,
+              requestId: arg_requestId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
+        checkOperation(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-LicensesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.LicensesResourceApi res = new api.ComputeApi(mock).licenses;
+      var arg_project = "foo";
+      var arg_license = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24842,7 +26971,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_license)
+          .get(arg_project, arg_license, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.License response) {
         checkLicense(response);
       })));
@@ -24858,6 +26987,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -24892,6 +27022,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24904,7 +27035,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.MachineTypeAggregatedList response) {
         checkMachineTypeAggregatedList(response);
@@ -24917,6 +27049,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_machineType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -24944,6 +27077,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -24952,7 +27086,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_machineType)
+          .get(arg_project, arg_zone, arg_machineType, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.MachineType response) {
         checkMachineType(response);
       })));
@@ -24967,6 +27101,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -25001,6 +27136,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25013,7 +27149,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.MachineTypeList response) {
         checkMachineTypeList(response);
       })));
@@ -25028,6 +27165,7 @@
       var arg_project = "foo";
       var arg_network = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.NetworksAddPeeringRequest.fromJson(json);
         checkNetworksAddPeeringRequest(obj);
@@ -25060,6 +27198,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25069,7 +27208,7 @@
       }), true);
       res
           .addPeering(arg_request, arg_project, arg_network,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -25081,6 +27220,7 @@
       var arg_project = "foo";
       var arg_network = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -25110,6 +27250,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25118,7 +27259,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_network, requestId: arg_requestId)
+          .delete(arg_project, arg_network,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -25129,6 +27271,7 @@
       api.NetworksResourceApi res = new api.ComputeApi(mock).networks;
       var arg_project = "foo";
       var arg_network = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -25156,6 +27299,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25164,7 +27308,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_network)
+          .get(arg_project, arg_network, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Network response) {
         checkNetwork(response);
       })));
@@ -25176,6 +27320,7 @@
       var arg_request = buildNetwork();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Network.fromJson(json);
         checkNetwork(obj);
@@ -25208,6 +27353,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25216,7 +27362,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -25230,6 +27377,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -25264,6 +27412,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25276,7 +27425,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.NetworkList response) {
         checkNetworkList(response);
       })));
@@ -25289,6 +27439,7 @@
       var arg_project = "foo";
       var arg_network = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Network.fromJson(json);
         checkNetwork(obj);
@@ -25321,6 +27472,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25330,7 +27482,7 @@
       }), true);
       res
           .patch(arg_request, arg_project, arg_network,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -25343,6 +27495,7 @@
       var arg_project = "foo";
       var arg_network = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.NetworksRemovePeeringRequest.fromJson(json);
         checkNetworksRemovePeeringRequest(obj);
@@ -25375,6 +27528,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25384,7 +27538,7 @@
       }), true);
       res
           .removePeering(arg_request, arg_project, arg_network,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -25396,6 +27550,7 @@
       var arg_project = "foo";
       var arg_network = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -25425,6 +27580,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25434,7 +27590,7 @@
       }), true);
       res
           .switchToCustomMode(arg_project, arg_network,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -25447,6 +27603,7 @@
       api.ProjectsResourceApi res = new api.ComputeApi(mock).projects;
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -25476,6 +27633,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25484,7 +27642,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .disableXpnHost(arg_project, requestId: arg_requestId)
+          .disableXpnHost(arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -25496,6 +27655,7 @@
       var arg_request = buildProjectsDisableXpnResourceRequest();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ProjectsDisableXpnResourceRequest.fromJson(json);
         checkProjectsDisableXpnResourceRequest(obj);
@@ -25528,6 +27688,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25537,7 +27698,7 @@
       }), true);
       res
           .disableXpnResource(arg_request, arg_project,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -25548,6 +27709,7 @@
       api.ProjectsResourceApi res = new api.ComputeApi(mock).projects;
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -25577,6 +27739,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25585,7 +27748,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .enableXpnHost(arg_project, requestId: arg_requestId)
+          .enableXpnHost(arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -25597,6 +27761,7 @@
       var arg_request = buildProjectsEnableXpnResourceRequest();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ProjectsEnableXpnResourceRequest.fromJson(json);
         checkProjectsEnableXpnResourceRequest(obj);
@@ -25629,6 +27794,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25637,7 +27803,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .enableXpnResource(arg_request, arg_project, requestId: arg_requestId)
+          .enableXpnResource(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -25647,6 +27814,7 @@
       var mock = new HttpServerMock();
       api.ProjectsResourceApi res = new api.ComputeApi(mock).projects;
       var arg_project = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -25674,49 +27842,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-
-        var h = {
-          "content-type": "application/json; charset=utf-8",
-        };
-        var resp = convert.JSON.encode(buildProject());
-        return new async.Future.value(stringResponse(200, h, resp));
-      }), true);
-      res.get(arg_project).then(unittest.expectAsync1(((api.Project response) {
-        checkProject(response);
-      })));
-    });
-
-    unittest.test("method--getXpnHost", () {
-      var mock = new HttpServerMock();
-      api.ProjectsResourceApi res = new api.ComputeApi(mock).projects;
-      var arg_project = "foo";
-      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
-        var path = (req.url).path;
-        var pathOffset = 0;
-        var index;
-        var subPart;
-        unittest.expect(
-            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
-        pathOffset += 1;
-
-        var query = (req.url).query;
-        var queryOffset = 0;
-        var queryMap = {};
-        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
-        parseBool(n) {
-          if (n == "true") return true;
-          if (n == "false") return false;
-          if (n == null) return null;
-          throw new core.ArgumentError("Invalid boolean: $n");
-        }
-
-        if (query.length > 0) {
-          for (var part in query.split("&")) {
-            var keyvalue = part.split("=");
-            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
-                core.Uri.decodeQueryComponent(keyvalue[1]));
-          }
-        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25725,7 +27851,54 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getXpnHost(arg_project)
+          .get(arg_project, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Project response) {
+        checkProject(response);
+      })));
+    });
+
+    unittest.test("method--getXpnHost", () {
+      var mock = new HttpServerMock();
+      api.ProjectsResourceApi res = new api.ComputeApi(mock).projects;
+      var arg_project = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProject());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getXpnHost(arg_project, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Project response) {
         checkProject(response);
       })));
@@ -25739,6 +27912,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -25773,6 +27947,7 @@
             queryMap["order_by"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25785,7 +27960,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ProjectsGetXpnResources response) {
         checkProjectsGetXpnResources(response);
       })));
@@ -25800,6 +27976,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ProjectsListXpnHostsRequest.fromJson(json);
         checkProjectsListXpnHostsRequest(obj);
@@ -25837,6 +28014,7 @@
             queryMap["order_by"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25849,7 +28027,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.XpnHostList response) {
         checkXpnHostList(response);
       })));
@@ -25861,6 +28040,7 @@
       var arg_request = buildDiskMoveRequest();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DiskMoveRequest.fromJson(json);
         checkDiskMoveRequest(obj);
@@ -25893,6 +28073,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25901,7 +28082,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .moveDisk(arg_request, arg_project, requestId: arg_requestId)
+          .moveDisk(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -25913,6 +28095,7 @@
       var arg_request = buildInstanceMoveRequest();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstanceMoveRequest.fromJson(json);
         checkInstanceMoveRequest(obj);
@@ -25945,6 +28128,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -25953,7 +28137,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .moveInstance(arg_request, arg_project, requestId: arg_requestId)
+          .moveInstance(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -25965,6 +28150,7 @@
       var arg_request = buildMetadata();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Metadata.fromJson(json);
         checkMetadata(obj);
@@ -25997,6 +28183,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26006,7 +28193,7 @@
       }), true);
       res
           .setCommonInstanceMetadata(arg_request, arg_project,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -26018,6 +28205,7 @@
       var arg_request = buildUsageExportLocation();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UsageExportLocation.fromJson(json);
         checkUsageExportLocation(obj);
@@ -26050,6 +28238,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26059,7 +28248,7 @@
       }), true);
       res
           .setUsageExportBucket(arg_request, arg_project,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -26075,6 +28264,7 @@
       var arg_region = "foo";
       var arg_autoscaler = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -26104,6 +28294,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26113,7 +28304,7 @@
       }), true);
       res
           .delete(arg_project, arg_region, arg_autoscaler,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -26126,6 +28317,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_autoscaler = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -26153,6 +28345,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26161,7 +28354,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_region, arg_autoscaler)
+          .get(arg_project, arg_region, arg_autoscaler, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Autoscaler response) {
         checkAutoscaler(response);
       })));
@@ -26175,6 +28368,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Autoscaler.fromJson(json);
         checkAutoscaler(obj);
@@ -26207,6 +28401,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26216,7 +28411,7 @@
       }), true);
       res
           .insert(arg_request, arg_project, arg_region,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -26232,6 +28427,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -26266,6 +28462,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26278,7 +28475,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RegionAutoscalerList response) {
         checkRegionAutoscalerList(response);
       })));
@@ -26293,6 +28491,7 @@
       var arg_region = "foo";
       var arg_autoscaler = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Autoscaler.fromJson(json);
         checkAutoscaler(obj);
@@ -26327,6 +28526,7 @@
             queryMap["autoscaler"].first, unittest.equals(arg_autoscaler));
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26336,7 +28536,9 @@
       }), true);
       res
           .patch(arg_request, arg_project, arg_region,
-              autoscaler: arg_autoscaler, requestId: arg_requestId)
+              autoscaler: arg_autoscaler,
+              requestId: arg_requestId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -26351,6 +28553,7 @@
       var arg_region = "foo";
       var arg_autoscaler = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Autoscaler.fromJson(json);
         checkAutoscaler(obj);
@@ -26385,6 +28588,7 @@
             queryMap["autoscaler"].first, unittest.equals(arg_autoscaler));
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26394,7 +28598,9 @@
       }), true);
       res
           .update(arg_request, arg_project, arg_region,
-              autoscaler: arg_autoscaler, requestId: arg_requestId)
+              autoscaler: arg_autoscaler,
+              requestId: arg_requestId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -26410,6 +28616,7 @@
       var arg_region = "foo";
       var arg_backendService = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -26439,6 +28646,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26448,7 +28656,7 @@
       }), true);
       res
           .delete(arg_project, arg_region, arg_backendService,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -26461,6 +28669,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_backendService = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -26488,6 +28697,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26496,7 +28706,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_region, arg_backendService)
+          .get(arg_project, arg_region, arg_backendService,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BackendService response) {
         checkBackendService(response);
       })));
@@ -26510,6 +28721,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_backendService = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ResourceGroupReference.fromJson(json);
         checkResourceGroupReference(obj);
@@ -26540,6 +28752,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26548,7 +28761,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getHealth(arg_request, arg_project, arg_region, arg_backendService)
+          .getHealth(arg_request, arg_project, arg_region, arg_backendService,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.BackendServiceGroupHealth response) {
         checkBackendServiceGroupHealth(response);
@@ -26563,6 +28777,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BackendService.fromJson(json);
         checkBackendService(obj);
@@ -26595,6 +28810,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26604,7 +28820,7 @@
       }), true);
       res
           .insert(arg_request, arg_project, arg_region,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -26620,6 +28836,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -26654,6 +28871,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26666,7 +28884,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BackendServiceList response) {
         checkBackendServiceList(response);
       })));
@@ -26681,6 +28900,7 @@
       var arg_region = "foo";
       var arg_backendService = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BackendService.fromJson(json);
         checkBackendService(obj);
@@ -26713,6 +28933,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26722,7 +28943,7 @@
       }), true);
       res
           .patch(arg_request, arg_project, arg_region, arg_backendService,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -26737,6 +28958,7 @@
       var arg_region = "foo";
       var arg_backendService = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BackendService.fromJson(json);
         checkBackendService(obj);
@@ -26769,6 +28991,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26778,7 +29001,7 @@
       }), true);
       res
           .update(arg_request, arg_project, arg_region, arg_backendService,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -26795,6 +29018,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -26829,6 +29053,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26841,7 +29066,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CommitmentAggregatedList response) {
         checkCommitmentAggregatedList(response);
       })));
@@ -26854,6 +29080,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_commitment = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -26881,6 +29108,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26889,7 +29117,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_region, arg_commitment)
+          .get(arg_project, arg_region, arg_commitment, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Commitment response) {
         checkCommitment(response);
       })));
@@ -26903,6 +29131,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Commitment.fromJson(json);
         checkCommitment(obj);
@@ -26935,6 +29164,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -26944,7 +29174,7 @@
       }), true);
       res
           .insert(arg_request, arg_project, arg_region,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -26960,6 +29190,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -26994,6 +29225,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27006,7 +29238,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CommitmentList response) {
         checkCommitmentList(response);
       })));
@@ -27024,6 +29257,7 @@
       var arg_region = "foo";
       var arg_instanceGroupManager = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.RegionInstanceGroupManagersAbandonInstancesRequest.fromJson(
@@ -27058,6 +29292,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27068,7 +29303,7 @@
       res
           .abandonInstances(
               arg_request, arg_project, arg_region, arg_instanceGroupManager,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -27082,6 +29317,7 @@
       var arg_region = "foo";
       var arg_instanceGroupManager = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -27111,6 +29347,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27120,7 +29357,7 @@
       }), true);
       res
           .delete(arg_project, arg_region, arg_instanceGroupManager,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -27136,6 +29373,7 @@
       var arg_region = "foo";
       var arg_instanceGroupManager = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.RegionInstanceGroupManagersDeleteInstancesRequest.fromJson(
@@ -27170,6 +29408,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27180,7 +29419,7 @@
       res
           .deleteInstances(
               arg_request, arg_project, arg_region, arg_instanceGroupManager,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -27193,6 +29432,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_instanceGroupManager = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -27220,6 +29460,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27228,7 +29469,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_region, arg_instanceGroupManager)
+          .get(arg_project, arg_region, arg_instanceGroupManager,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstanceGroupManager response) {
         checkInstanceGroupManager(response);
       })));
@@ -27242,6 +29484,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstanceGroupManager.fromJson(json);
         checkInstanceGroupManager(obj);
@@ -27274,6 +29517,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27283,7 +29527,7 @@
       }), true);
       res
           .insert(arg_request, arg_project, arg_region,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -27299,6 +29543,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -27333,6 +29578,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27345,7 +29591,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.RegionInstanceGroupManagerList response) {
         checkRegionInstanceGroupManagerList(response);
@@ -27363,6 +29610,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -27397,6 +29645,7 @@
             queryMap["order_by"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27411,7 +29660,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(
               ((api.RegionInstanceGroupManagersListInstancesResponse response) {
         checkRegionInstanceGroupManagersListInstancesResponse(response);
@@ -27427,6 +29677,7 @@
       var arg_region = "foo";
       var arg_instanceGroupManager = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.RegionInstanceGroupManagersRecreateRequest.fromJson(json);
@@ -27460,6 +29711,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27470,7 +29722,7 @@
       res
           .recreateInstances(
               arg_request, arg_project, arg_region, arg_instanceGroupManager,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -27485,6 +29737,7 @@
       var arg_instanceGroupManager = "foo";
       var arg_size = 42;
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -27516,6 +29769,7 @@
             core.int.parse(queryMap["size"].first), unittest.equals(arg_size));
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27525,7 +29779,7 @@
       }), true);
       res
           .resize(arg_project, arg_region, arg_instanceGroupManager, arg_size,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -27540,6 +29794,7 @@
       var arg_region = "foo";
       var arg_instanceGroupManager = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.RegionInstanceGroupManagersSetTemplateRequest.fromJson(
@@ -27574,6 +29829,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27584,7 +29840,7 @@
       res
           .setInstanceTemplate(
               arg_request, arg_project, arg_region, arg_instanceGroupManager,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -27599,6 +29855,7 @@
       var arg_region = "foo";
       var arg_instanceGroupManager = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.RegionInstanceGroupManagersSetTargetPoolsRequest.fromJson(
@@ -27633,6 +29890,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27643,7 +29901,7 @@
       res
           .setTargetPools(
               arg_request, arg_project, arg_region, arg_instanceGroupManager,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -27658,6 +29916,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_instanceGroup = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -27685,6 +29944,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27693,7 +29953,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_region, arg_instanceGroup)
+          .get(arg_project, arg_region, arg_instanceGroup, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstanceGroup response) {
         checkInstanceGroup(response);
       })));
@@ -27709,6 +29969,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -27743,6 +30004,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27755,7 +30017,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RegionInstanceGroupList response) {
         checkRegionInstanceGroupList(response);
       })));
@@ -27773,6 +30036,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.RegionInstanceGroupsListInstancesRequest.fromJson(json);
@@ -27811,6 +30075,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27825,7 +30090,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.RegionInstanceGroupsListInstances response) {
         checkRegionInstanceGroupsListInstances(response);
@@ -27841,6 +30107,7 @@
       var arg_region = "foo";
       var arg_instanceGroup = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.RegionInstanceGroupsSetNamedPortsRequest.fromJson(json);
@@ -27874,6 +30141,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27884,7 +30152,7 @@
       res
           .setNamedPorts(
               arg_request, arg_project, arg_region, arg_instanceGroup,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -27899,6 +30167,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_operation = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -27926,6 +30195,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27934,7 +30204,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_region, arg_operation)
+          .delete(arg_project, arg_region, arg_operation, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -27945,6 +30215,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_operation = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -27972,6 +30243,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -27980,7 +30252,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_region, arg_operation)
+          .get(arg_project, arg_region, arg_operation, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -27996,6 +30268,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -28030,6 +30303,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28042,7 +30316,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OperationList response) {
         checkOperationList(response);
       })));
@@ -28055,6 +30330,7 @@
       api.RegionsResourceApi res = new api.ComputeApi(mock).regions;
       var arg_project = "foo";
       var arg_region = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -28082,6 +30358,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28090,7 +30367,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_region)
+          .get(arg_project, arg_region, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Region response) {
         checkRegion(response);
       })));
@@ -28104,6 +30381,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -28138,6 +30416,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28150,7 +30429,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RegionList response) {
         checkRegionList(response);
       })));
@@ -28166,6 +30446,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -28200,6 +30481,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28212,7 +30494,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RouterAggregatedList response) {
         checkRouterAggregatedList(response);
       })));
@@ -28225,6 +30508,7 @@
       var arg_region = "foo";
       var arg_router = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -28254,6 +30538,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28262,7 +30547,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_region, arg_router, requestId: arg_requestId)
+          .delete(arg_project, arg_region, arg_router,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -28274,6 +30560,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_router = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -28301,6 +30588,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28309,7 +30597,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_region, arg_router)
+          .get(arg_project, arg_region, arg_router, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Router response) {
         checkRouter(response);
       })));
@@ -28321,6 +30609,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_router = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -28348,6 +30637,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28356,7 +30646,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getRouterStatus(arg_project, arg_region, arg_router)
+          .getRouterStatus(arg_project, arg_region, arg_router,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RouterStatusResponse response) {
         checkRouterStatusResponse(response);
       })));
@@ -28369,6 +30660,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Router.fromJson(json);
         checkRouter(obj);
@@ -28401,6 +30693,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28410,7 +30703,7 @@
       }), true);
       res
           .insert(arg_request, arg_project, arg_region,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -28425,6 +30718,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -28459,6 +30753,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28471,7 +30766,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RouterList response) {
         checkRouterList(response);
       })));
@@ -28485,6 +30781,7 @@
       var arg_region = "foo";
       var arg_router = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Router.fromJson(json);
         checkRouter(obj);
@@ -28517,6 +30814,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28526,7 +30824,7 @@
       }), true);
       res
           .patch(arg_request, arg_project, arg_region, arg_router,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -28539,6 +30837,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_router = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Router.fromJson(json);
         checkRouter(obj);
@@ -28569,6 +30868,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28577,7 +30877,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .preview(arg_request, arg_project, arg_region, arg_router)
+          .preview(arg_request, arg_project, arg_region, arg_router,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RoutersPreviewResponse response) {
         checkRoutersPreviewResponse(response);
       })));
@@ -28591,6 +30892,7 @@
       var arg_region = "foo";
       var arg_router = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Router.fromJson(json);
         checkRouter(obj);
@@ -28623,6 +30925,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28632,7 +30935,7 @@
       }), true);
       res
           .update(arg_request, arg_project, arg_region, arg_router,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -28646,6 +30949,7 @@
       var arg_project = "foo";
       var arg_route = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -28675,6 +30979,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28683,7 +30988,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_route, requestId: arg_requestId)
+          .delete(arg_project, arg_route,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -28694,6 +31000,7 @@
       api.RoutesResourceApi res = new api.ComputeApi(mock).routes;
       var arg_project = "foo";
       var arg_route = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -28721,6 +31028,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28729,7 +31037,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_route)
+          .get(arg_project, arg_route, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Route response) {
         checkRoute(response);
       })));
@@ -28741,6 +31049,7 @@
       var arg_request = buildRoute();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Route.fromJson(json);
         checkRoute(obj);
@@ -28773,6 +31082,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28781,7 +31091,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -28795,6 +31106,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -28829,6 +31141,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28841,7 +31154,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RouteList response) {
         checkRouteList(response);
       })));
@@ -28855,6 +31169,7 @@
       var arg_project = "foo";
       var arg_snapshot = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -28884,6 +31199,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28892,7 +31208,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_snapshot, requestId: arg_requestId)
+          .delete(arg_project, arg_snapshot,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -28903,6 +31220,7 @@
       api.SnapshotsResourceApi res = new api.ComputeApi(mock).snapshots;
       var arg_project = "foo";
       var arg_snapshot = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -28930,6 +31248,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28938,7 +31257,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_snapshot)
+          .get(arg_project, arg_snapshot, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Snapshot response) {
         checkSnapshot(response);
       })));
@@ -28952,6 +31271,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -28986,6 +31306,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -28998,7 +31319,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SnapshotList response) {
         checkSnapshotList(response);
       })));
@@ -29010,6 +31332,7 @@
       var arg_request = buildGlobalSetLabelsRequest();
       var arg_project = "foo";
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GlobalSetLabelsRequest.fromJson(json);
         checkGlobalSetLabelsRequest(obj);
@@ -29040,6 +31363,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29048,7 +31372,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setLabels(arg_request, arg_project, arg_resource)
+          .setLabels(arg_request, arg_project, arg_resource,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -29063,6 +31388,7 @@
       var arg_project = "foo";
       var arg_sslCertificate = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -29092,6 +31418,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29100,7 +31427,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_sslCertificate, requestId: arg_requestId)
+          .delete(arg_project, arg_sslCertificate,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -29112,6 +31440,7 @@
           new api.ComputeApi(mock).sslCertificates;
       var arg_project = "foo";
       var arg_sslCertificate = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -29139,6 +31468,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29147,7 +31477,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_sslCertificate)
+          .get(arg_project, arg_sslCertificate, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SslCertificate response) {
         checkSslCertificate(response);
       })));
@@ -29160,6 +31490,7 @@
       var arg_request = buildSslCertificate();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SslCertificate.fromJson(json);
         checkSslCertificate(obj);
@@ -29192,6 +31523,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29200,7 +31532,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -29215,6 +31548,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -29249,6 +31583,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29261,7 +31596,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SslCertificateList response) {
         checkSslCertificateList(response);
       })));
@@ -29277,6 +31613,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -29311,6 +31648,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29323,7 +31661,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SubnetworkAggregatedList response) {
         checkSubnetworkAggregatedList(response);
       })));
@@ -29336,6 +31675,7 @@
       var arg_region = "foo";
       var arg_subnetwork = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -29365,6 +31705,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29374,7 +31715,7 @@
       }), true);
       res
           .delete(arg_project, arg_region, arg_subnetwork,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -29388,6 +31729,7 @@
       var arg_region = "foo";
       var arg_subnetwork = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SubnetworksExpandIpCidrRangeRequest.fromJson(json);
         checkSubnetworksExpandIpCidrRangeRequest(obj);
@@ -29420,6 +31762,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29430,7 +31773,7 @@
       res
           .expandIpCidrRange(
               arg_request, arg_project, arg_region, arg_subnetwork,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -29442,6 +31785,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_subnetwork = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -29469,6 +31813,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29477,7 +31822,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_region, arg_subnetwork)
+          .get(arg_project, arg_region, arg_subnetwork, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subnetwork response) {
         checkSubnetwork(response);
       })));
@@ -29490,6 +31835,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Subnetwork.fromJson(json);
         checkSubnetwork(obj);
@@ -29522,6 +31868,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29531,7 +31878,7 @@
       }), true);
       res
           .insert(arg_request, arg_project, arg_region,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -29546,6 +31893,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -29580,6 +31928,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29592,7 +31941,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SubnetworkList response) {
         checkSubnetworkList(response);
       })));
@@ -29606,6 +31956,7 @@
       var arg_region = "foo";
       var arg_subnetwork = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.SubnetworksSetPrivateIpGoogleAccessRequest.fromJson(json);
@@ -29639,6 +31990,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29649,7 +32001,7 @@
       res
           .setPrivateIpGoogleAccess(
               arg_request, arg_project, arg_region, arg_subnetwork,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -29664,6 +32016,7 @@
       var arg_project = "foo";
       var arg_targetHttpProxy = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -29693,6 +32046,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29701,7 +32055,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_targetHttpProxy, requestId: arg_requestId)
+          .delete(arg_project, arg_targetHttpProxy,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -29713,6 +32068,7 @@
           new api.ComputeApi(mock).targetHttpProxies;
       var arg_project = "foo";
       var arg_targetHttpProxy = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -29740,6 +32096,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29748,7 +32105,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_targetHttpProxy)
+          .get(arg_project, arg_targetHttpProxy, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetHttpProxy response) {
         checkTargetHttpProxy(response);
       })));
@@ -29761,6 +32118,7 @@
       var arg_request = buildTargetHttpProxy();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetHttpProxy.fromJson(json);
         checkTargetHttpProxy(obj);
@@ -29793,6 +32151,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29801,7 +32160,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -29816,6 +32176,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -29850,6 +32211,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29862,7 +32224,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetHttpProxyList response) {
         checkTargetHttpProxyList(response);
       })));
@@ -29876,6 +32239,7 @@
       var arg_project = "foo";
       var arg_targetHttpProxy = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UrlMapReference.fromJson(json);
         checkUrlMapReference(obj);
@@ -29908,6 +32272,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29917,7 +32282,7 @@
       }), true);
       res
           .setUrlMap(arg_request, arg_project, arg_targetHttpProxy,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -29932,6 +32297,7 @@
       var arg_project = "foo";
       var arg_targetHttpsProxy = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -29961,6 +32327,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -29969,7 +32336,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_targetHttpsProxy, requestId: arg_requestId)
+          .delete(arg_project, arg_targetHttpsProxy,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -29981,6 +32349,7 @@
           new api.ComputeApi(mock).targetHttpsProxies;
       var arg_project = "foo";
       var arg_targetHttpsProxy = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -30008,6 +32377,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30016,7 +32386,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_targetHttpsProxy)
+          .get(arg_project, arg_targetHttpsProxy, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetHttpsProxy response) {
         checkTargetHttpsProxy(response);
       })));
@@ -30029,6 +32399,7 @@
       var arg_request = buildTargetHttpsProxy();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetHttpsProxy.fromJson(json);
         checkTargetHttpsProxy(obj);
@@ -30061,6 +32432,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30069,7 +32441,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -30084,6 +32457,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -30118,6 +32492,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30130,7 +32505,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetHttpsProxyList response) {
         checkTargetHttpsProxyList(response);
       })));
@@ -30144,6 +32520,7 @@
       var arg_project = "foo";
       var arg_targetHttpsProxy = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.TargetHttpsProxiesSetSslCertificatesRequest.fromJson(json);
@@ -30177,6 +32554,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30186,7 +32564,7 @@
       }), true);
       res
           .setSslCertificates(arg_request, arg_project, arg_targetHttpsProxy,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -30200,6 +32578,7 @@
       var arg_project = "foo";
       var arg_targetHttpsProxy = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UrlMapReference.fromJson(json);
         checkUrlMapReference(obj);
@@ -30232,6 +32611,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30241,7 +32621,7 @@
       }), true);
       res
           .setUrlMap(arg_request, arg_project, arg_targetHttpsProxy,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -30258,6 +32638,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -30292,6 +32673,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30304,7 +32686,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.TargetInstanceAggregatedList response) {
         checkTargetInstanceAggregatedList(response);
@@ -30319,6 +32702,7 @@
       var arg_zone = "foo";
       var arg_targetInstance = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -30348,6 +32732,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30357,7 +32742,7 @@
       }), true);
       res
           .delete(arg_project, arg_zone, arg_targetInstance,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -30370,6 +32755,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_targetInstance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -30397,6 +32783,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30405,7 +32792,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_targetInstance)
+          .get(arg_project, arg_zone, arg_targetInstance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetInstance response) {
         checkTargetInstance(response);
       })));
@@ -30419,6 +32806,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetInstance.fromJson(json);
         checkTargetInstance(obj);
@@ -30451,6 +32839,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30459,7 +32848,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, arg_zone, requestId: arg_requestId)
+          .insert(arg_request, arg_project, arg_zone,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -30475,6 +32865,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -30509,6 +32900,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30521,7 +32913,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetInstanceList response) {
         checkTargetInstanceList(response);
       })));
@@ -30537,6 +32930,7 @@
       var arg_region = "foo";
       var arg_targetPool = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetPoolsAddHealthCheckRequest.fromJson(json);
         checkTargetPoolsAddHealthCheckRequest(obj);
@@ -30569,6 +32963,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30578,7 +32973,7 @@
       }), true);
       res
           .addHealthCheck(arg_request, arg_project, arg_region, arg_targetPool,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -30592,6 +32987,7 @@
       var arg_region = "foo";
       var arg_targetPool = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetPoolsAddInstanceRequest.fromJson(json);
         checkTargetPoolsAddInstanceRequest(obj);
@@ -30624,6 +33020,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30633,7 +33030,7 @@
       }), true);
       res
           .addInstance(arg_request, arg_project, arg_region, arg_targetPool,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -30647,6 +33044,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -30681,6 +33079,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30693,7 +33092,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetPoolAggregatedList response) {
         checkTargetPoolAggregatedList(response);
       })));
@@ -30706,6 +33106,7 @@
       var arg_region = "foo";
       var arg_targetPool = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -30735,6 +33136,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30744,7 +33146,7 @@
       }), true);
       res
           .delete(arg_project, arg_region, arg_targetPool,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -30756,6 +33158,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_targetPool = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -30783,6 +33186,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30791,7 +33195,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_region, arg_targetPool)
+          .get(arg_project, arg_region, arg_targetPool, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetPool response) {
         checkTargetPool(response);
       })));
@@ -30804,6 +33208,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_targetPool = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstanceReference.fromJson(json);
         checkInstanceReference(obj);
@@ -30834,6 +33239,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30842,7 +33248,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getHealth(arg_request, arg_project, arg_region, arg_targetPool)
+          .getHealth(arg_request, arg_project, arg_region, arg_targetPool,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetPoolInstanceHealth response) {
         checkTargetPoolInstanceHealth(response);
       })));
@@ -30855,6 +33262,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetPool.fromJson(json);
         checkTargetPool(obj);
@@ -30887,6 +33295,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30896,7 +33305,7 @@
       }), true);
       res
           .insert(arg_request, arg_project, arg_region,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -30911,6 +33320,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -30945,6 +33355,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -30957,7 +33368,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetPoolList response) {
         checkTargetPoolList(response);
       })));
@@ -30971,6 +33383,7 @@
       var arg_region = "foo";
       var arg_targetPool = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetPoolsRemoveHealthCheckRequest.fromJson(json);
         checkTargetPoolsRemoveHealthCheckRequest(obj);
@@ -31003,6 +33416,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31013,7 +33427,7 @@
       res
           .removeHealthCheck(
               arg_request, arg_project, arg_region, arg_targetPool,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -31027,6 +33441,7 @@
       var arg_region = "foo";
       var arg_targetPool = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetPoolsRemoveInstanceRequest.fromJson(json);
         checkTargetPoolsRemoveInstanceRequest(obj);
@@ -31059,6 +33474,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31068,7 +33484,7 @@
       }), true);
       res
           .removeInstance(arg_request, arg_project, arg_region, arg_targetPool,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -31083,6 +33499,7 @@
       var arg_targetPool = "foo";
       var arg_failoverRatio = 42.0;
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetReference.fromJson(json);
         checkTargetReference(obj);
@@ -31117,6 +33534,7 @@
             unittest.equals(arg_failoverRatio));
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31126,7 +33544,9 @@
       }), true);
       res
           .setBackup(arg_request, arg_project, arg_region, arg_targetPool,
-              failoverRatio: arg_failoverRatio, requestId: arg_requestId)
+              failoverRatio: arg_failoverRatio,
+              requestId: arg_requestId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -31141,6 +33561,7 @@
       var arg_project = "foo";
       var arg_targetSslProxy = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -31170,6 +33591,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31178,7 +33600,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_targetSslProxy, requestId: arg_requestId)
+          .delete(arg_project, arg_targetSslProxy,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -31190,6 +33613,7 @@
           new api.ComputeApi(mock).targetSslProxies;
       var arg_project = "foo";
       var arg_targetSslProxy = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -31217,6 +33641,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31225,7 +33650,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_targetSslProxy)
+          .get(arg_project, arg_targetSslProxy, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetSslProxy response) {
         checkTargetSslProxy(response);
       })));
@@ -31238,6 +33663,7 @@
       var arg_request = buildTargetSslProxy();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetSslProxy.fromJson(json);
         checkTargetSslProxy(obj);
@@ -31270,6 +33696,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31278,7 +33705,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -31293,6 +33721,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -31327,6 +33756,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31339,7 +33769,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetSslProxyList response) {
         checkTargetSslProxyList(response);
       })));
@@ -31353,6 +33784,7 @@
       var arg_project = "foo";
       var arg_targetSslProxy = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.TargetSslProxiesSetBackendServiceRequest.fromJson(json);
@@ -31386,6 +33818,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31395,7 +33828,7 @@
       }), true);
       res
           .setBackendService(arg_request, arg_project, arg_targetSslProxy,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -31409,6 +33842,7 @@
       var arg_project = "foo";
       var arg_targetSslProxy = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetSslProxiesSetProxyHeaderRequest.fromJson(json);
         checkTargetSslProxiesSetProxyHeaderRequest(obj);
@@ -31441,6 +33875,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31450,7 +33885,7 @@
       }), true);
       res
           .setProxyHeader(arg_request, arg_project, arg_targetSslProxy,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -31464,6 +33899,7 @@
       var arg_project = "foo";
       var arg_targetSslProxy = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.TargetSslProxiesSetSslCertificatesRequest.fromJson(json);
@@ -31497,6 +33933,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31506,7 +33943,7 @@
       }), true);
       res
           .setSslCertificates(arg_request, arg_project, arg_targetSslProxy,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -31521,6 +33958,7 @@
       var arg_project = "foo";
       var arg_targetTcpProxy = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -31550,6 +33988,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31558,7 +33997,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_targetTcpProxy, requestId: arg_requestId)
+          .delete(arg_project, arg_targetTcpProxy,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -31570,6 +34010,7 @@
           new api.ComputeApi(mock).targetTcpProxies;
       var arg_project = "foo";
       var arg_targetTcpProxy = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -31597,6 +34038,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31605,7 +34047,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_targetTcpProxy)
+          .get(arg_project, arg_targetTcpProxy, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetTcpProxy response) {
         checkTargetTcpProxy(response);
       })));
@@ -31618,6 +34060,7 @@
       var arg_request = buildTargetTcpProxy();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetTcpProxy.fromJson(json);
         checkTargetTcpProxy(obj);
@@ -31650,6 +34093,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31658,7 +34102,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -31673,6 +34118,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -31707,6 +34153,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31719,7 +34166,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetTcpProxyList response) {
         checkTargetTcpProxyList(response);
       })));
@@ -31733,6 +34181,7 @@
       var arg_project = "foo";
       var arg_targetTcpProxy = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.TargetTcpProxiesSetBackendServiceRequest.fromJson(json);
@@ -31766,6 +34215,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31775,7 +34225,7 @@
       }), true);
       res
           .setBackendService(arg_request, arg_project, arg_targetTcpProxy,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -31789,6 +34239,7 @@
       var arg_project = "foo";
       var arg_targetTcpProxy = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetTcpProxiesSetProxyHeaderRequest.fromJson(json);
         checkTargetTcpProxiesSetProxyHeaderRequest(obj);
@@ -31821,6 +34272,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31830,7 +34282,7 @@
       }), true);
       res
           .setProxyHeader(arg_request, arg_project, arg_targetTcpProxy,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -31847,6 +34299,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -31881,6 +34334,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31893,7 +34347,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.TargetVpnGatewayAggregatedList response) {
         checkTargetVpnGatewayAggregatedList(response);
@@ -31908,6 +34363,7 @@
       var arg_region = "foo";
       var arg_targetVpnGateway = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -31937,6 +34393,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31946,7 +34403,7 @@
       }), true);
       res
           .delete(arg_project, arg_region, arg_targetVpnGateway,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -31959,6 +34416,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_targetVpnGateway = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -31986,6 +34444,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -31994,7 +34453,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_region, arg_targetVpnGateway)
+          .get(arg_project, arg_region, arg_targetVpnGateway,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetVpnGateway response) {
         checkTargetVpnGateway(response);
       })));
@@ -32008,6 +34468,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TargetVpnGateway.fromJson(json);
         checkTargetVpnGateway(obj);
@@ -32040,6 +34501,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32049,7 +34511,7 @@
       }), true);
       res
           .insert(arg_request, arg_project, arg_region,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -32065,6 +34527,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -32099,6 +34562,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32111,7 +34575,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TargetVpnGatewayList response) {
         checkTargetVpnGatewayList(response);
       })));
@@ -32125,6 +34590,7 @@
       var arg_project = "foo";
       var arg_urlMap = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -32154,6 +34620,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32162,7 +34629,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_urlMap, requestId: arg_requestId)
+          .delete(arg_project, arg_urlMap,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -32173,6 +34641,7 @@
       api.UrlMapsResourceApi res = new api.ComputeApi(mock).urlMaps;
       var arg_project = "foo";
       var arg_urlMap = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -32200,6 +34669,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32208,7 +34678,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_urlMap)
+          .get(arg_project, arg_urlMap, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UrlMap response) {
         checkUrlMap(response);
       })));
@@ -32220,6 +34690,7 @@
       var arg_request = buildUrlMap();
       var arg_project = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UrlMap.fromJson(json);
         checkUrlMap(obj);
@@ -32252,6 +34723,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32260,7 +34732,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, requestId: arg_requestId)
+          .insert(arg_request, arg_project,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -32273,6 +34746,7 @@
       var arg_project = "foo";
       var arg_urlMap = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CacheInvalidationRule.fromJson(json);
         checkCacheInvalidationRule(obj);
@@ -32305,6 +34779,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32314,7 +34789,7 @@
       }), true);
       res
           .invalidateCache(arg_request, arg_project, arg_urlMap,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -32328,6 +34803,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -32362,6 +34838,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32374,7 +34851,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UrlMapList response) {
         checkUrlMapList(response);
       })));
@@ -32387,6 +34865,7 @@
       var arg_project = "foo";
       var arg_urlMap = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UrlMap.fromJson(json);
         checkUrlMap(obj);
@@ -32419,6 +34898,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32427,7 +34907,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_project, arg_urlMap, requestId: arg_requestId)
+          .patch(arg_request, arg_project, arg_urlMap,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -32440,6 +34921,7 @@
       var arg_project = "foo";
       var arg_urlMap = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UrlMap.fromJson(json);
         checkUrlMap(obj);
@@ -32472,6 +34954,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32481,7 +34964,7 @@
       }), true);
       res
           .update(arg_request, arg_project, arg_urlMap,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -32493,6 +34976,7 @@
       var arg_request = buildUrlMapsValidateRequest();
       var arg_project = "foo";
       var arg_urlMap = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UrlMapsValidateRequest.fromJson(json);
         checkUrlMapsValidateRequest(obj);
@@ -32523,6 +35007,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32531,7 +35016,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .validate(arg_request, arg_project, arg_urlMap)
+          .validate(arg_request, arg_project, arg_urlMap, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UrlMapsValidateResponse response) {
         checkUrlMapsValidateResponse(response);
       })));
@@ -32547,6 +35032,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -32581,6 +35067,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32593,7 +35080,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.VpnTunnelAggregatedList response) {
         checkVpnTunnelAggregatedList(response);
       })));
@@ -32606,6 +35094,7 @@
       var arg_region = "foo";
       var arg_vpnTunnel = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -32635,6 +35124,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32644,7 +35134,7 @@
       }), true);
       res
           .delete(arg_project, arg_region, arg_vpnTunnel,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -32656,6 +35146,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_vpnTunnel = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -32683,6 +35174,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32691,7 +35183,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_region, arg_vpnTunnel)
+          .get(arg_project, arg_region, arg_vpnTunnel, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.VpnTunnel response) {
         checkVpnTunnel(response);
       })));
@@ -32704,6 +35196,7 @@
       var arg_project = "foo";
       var arg_region = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.VpnTunnel.fromJson(json);
         checkVpnTunnel(obj);
@@ -32736,6 +35229,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32745,7 +35239,7 @@
       }), true);
       res
           .insert(arg_request, arg_project, arg_region,
-              requestId: arg_requestId)
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -32760,6 +35254,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -32794,6 +35289,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32806,7 +35302,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.VpnTunnelList response) {
         checkVpnTunnelList(response);
       })));
@@ -32821,6 +35318,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_operation = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -32848,6 +35346,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32856,7 +35355,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_zone, arg_operation)
+          .delete(arg_project, arg_zone, arg_operation, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -32867,6 +35366,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_operation = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -32894,6 +35394,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32902,7 +35403,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_operation)
+          .get(arg_project, arg_zone, arg_operation, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -32918,6 +35419,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -32952,6 +35454,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -32964,7 +35467,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OperationList response) {
         checkOperationList(response);
       })));
@@ -32977,6 +35481,7 @@
       api.ZonesResourceApi res = new api.ComputeApi(mock).zones;
       var arg_project = "foo";
       var arg_zone = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -33004,6 +35509,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -33012,7 +35518,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone)
+          .get(arg_project, arg_zone, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Zone response) {
         checkZone(response);
       })));
@@ -33026,6 +35532,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -33060,6 +35567,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -33072,7 +35580,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ZoneList response) {
         checkZoneList(response);
       })));
diff --git a/generated/googleapis/test/consumersurveys/v2_test.dart b/generated/googleapis/test/consumersurveys/v2_test.dart
index c7e41c6..6505a10 100644
--- a/generated/googleapis/test/consumersurveys/v2_test.dart
+++ b/generated/googleapis/test/consumersurveys/v2_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed70() {
+buildUnnamed51() {
   var o = new core.List<api.FieldMask>();
   o.add(buildFieldMask());
   o.add(buildFieldMask());
   return o;
 }
 
-checkUnnamed70(core.List<api.FieldMask> o) {
+checkUnnamed51(core.List<api.FieldMask> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFieldMask(o[0]);
   checkFieldMask(o[1]);
@@ -68,7 +68,7 @@
   var o = new api.FieldMask();
   buildCounterFieldMask++;
   if (buildCounterFieldMask < 3) {
-    o.fields = buildUnnamed70();
+    o.fields = buildUnnamed51();
     o.id = 42;
   }
   buildCounterFieldMask--;
@@ -78,20 +78,20 @@
 checkFieldMask(api.FieldMask o) {
   buildCounterFieldMask++;
   if (buildCounterFieldMask < 3) {
-    checkUnnamed70(o.fields);
+    checkUnnamed51(o.fields);
     unittest.expect(o.id, unittest.equals(42));
   }
   buildCounterFieldMask--;
 }
 
-buildUnnamed71() {
+buildUnnamed52() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed71(core.List<core.String> o) {
+checkUnnamed52(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -107,7 +107,7 @@
     o.language = "foo";
     o.mobileAppPanelId = "foo";
     o.name = "foo";
-    o.owners = buildUnnamed71();
+    o.owners = buildUnnamed52();
   }
   buildCounterMobileAppPanel--;
   return o;
@@ -121,19 +121,19 @@
     unittest.expect(o.language, unittest.equals('foo'));
     unittest.expect(o.mobileAppPanelId, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed71(o.owners);
+    checkUnnamed52(o.owners);
   }
   buildCounterMobileAppPanel--;
 }
 
-buildUnnamed72() {
+buildUnnamed53() {
   var o = new core.List<api.MobileAppPanel>();
   o.add(buildMobileAppPanel());
   o.add(buildMobileAppPanel());
   return o;
 }
 
-checkUnnamed72(core.List<api.MobileAppPanel> o) {
+checkUnnamed53(core.List<api.MobileAppPanel> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMobileAppPanel(o[0]);
   checkMobileAppPanel(o[1]);
@@ -146,7 +146,7 @@
   if (buildCounterMobileAppPanelsListResponse < 3) {
     o.pageInfo = buildPageInfo();
     o.requestId = "foo";
-    o.resources = buildUnnamed72();
+    o.resources = buildUnnamed53();
     o.tokenPagination = buildTokenPagination();
   }
   buildCounterMobileAppPanelsListResponse--;
@@ -158,7 +158,7 @@
   if (buildCounterMobileAppPanelsListResponse < 3) {
     checkPageInfo(o.pageInfo);
     unittest.expect(o.requestId, unittest.equals('foo'));
-    checkUnnamed72(o.resources);
+    checkUnnamed53(o.resources);
     checkTokenPagination(o.tokenPagination);
   }
   buildCounterMobileAppPanelsListResponse--;
@@ -206,14 +206,14 @@
   buildCounterResultsGetRequest--;
 }
 
-buildUnnamed73() {
+buildUnnamed54() {
   var o = new core.List<api.FieldMask>();
   o.add(buildFieldMask());
   o.add(buildFieldMask());
   return o;
 }
 
-checkUnnamed73(core.List<api.FieldMask> o) {
+checkUnnamed54(core.List<api.FieldMask> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFieldMask(o[0]);
   checkFieldMask(o[1]);
@@ -224,7 +224,7 @@
   var o = new api.ResultsMask();
   buildCounterResultsMask++;
   if (buildCounterResultsMask < 3) {
-    o.fields = buildUnnamed73();
+    o.fields = buildUnnamed54();
     o.projection = "foo";
   }
   buildCounterResultsMask--;
@@ -234,33 +234,33 @@
 checkResultsMask(api.ResultsMask o) {
   buildCounterResultsMask++;
   if (buildCounterResultsMask < 3) {
-    checkUnnamed73(o.fields);
+    checkUnnamed54(o.fields);
     unittest.expect(o.projection, unittest.equals('foo'));
   }
   buildCounterResultsMask--;
 }
 
-buildUnnamed74() {
+buildUnnamed55() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed74(core.List<core.String> o) {
+checkUnnamed55(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed75() {
+buildUnnamed56() {
   var o = new core.List<api.SurveyQuestion>();
   o.add(buildSurveyQuestion());
   o.add(buildSurveyQuestion());
   return o;
 }
 
-checkUnnamed75(core.List<api.SurveyQuestion> o) {
+checkUnnamed56(core.List<api.SurveyQuestion> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSurveyQuestion(o[0]);
   checkSurveyQuestion(o[1]);
@@ -275,8 +275,8 @@
     o.cost = buildSurveyCost();
     o.customerData = "foo";
     o.description = "foo";
-    o.owners = buildUnnamed74();
-    o.questions = buildUnnamed75();
+    o.owners = buildUnnamed55();
+    o.questions = buildUnnamed56();
     o.rejectionReason = buildSurveyRejection();
     o.state = "foo";
     o.surveyUrlId = "foo";
@@ -294,8 +294,8 @@
     checkSurveyCost(o.cost);
     unittest.expect(o.customerData, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed74(o.owners);
-    checkUnnamed75(o.questions);
+    checkUnnamed55(o.owners);
+    checkUnnamed56(o.questions);
     checkSurveyRejection(o.rejectionReason);
     unittest.expect(o.state, unittest.equals('foo'));
     unittest.expect(o.surveyUrlId, unittest.equals('foo'));
@@ -305,27 +305,27 @@
   buildCounterSurvey--;
 }
 
-buildUnnamed76() {
+buildUnnamed57() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed76(core.List<core.String> o) {
+checkUnnamed57(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed77() {
+buildUnnamed58() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed77(core.List<core.String> o) {
+checkUnnamed58(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -336,11 +336,11 @@
   var o = new api.SurveyAudience();
   buildCounterSurveyAudience++;
   if (buildCounterSurveyAudience < 3) {
-    o.ages = buildUnnamed76();
+    o.ages = buildUnnamed57();
     o.country = "foo";
     o.countrySubdivision = "foo";
     o.gender = "foo";
-    o.languages = buildUnnamed77();
+    o.languages = buildUnnamed58();
     o.mobileAppPanelId = "foo";
     o.populationSource = "foo";
   }
@@ -351,11 +351,11 @@
 checkSurveyAudience(api.SurveyAudience o) {
   buildCounterSurveyAudience++;
   if (buildCounterSurveyAudience < 3) {
-    checkUnnamed76(o.ages);
+    checkUnnamed57(o.ages);
     unittest.expect(o.country, unittest.equals('foo'));
     unittest.expect(o.countrySubdivision, unittest.equals('foo'));
     unittest.expect(o.gender, unittest.equals('foo'));
-    checkUnnamed77(o.languages);
+    checkUnnamed58(o.languages);
     unittest.expect(o.mobileAppPanelId, unittest.equals('foo'));
     unittest.expect(o.populationSource, unittest.equals('foo'));
   }
@@ -387,53 +387,53 @@
   buildCounterSurveyCost--;
 }
 
-buildUnnamed78() {
+buildUnnamed59() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed78(core.List<core.String> o) {
+checkUnnamed59(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed79() {
+buildUnnamed60() {
   var o = new core.List<api.SurveyQuestionImage>();
   o.add(buildSurveyQuestionImage());
   o.add(buildSurveyQuestionImage());
   return o;
 }
 
-checkUnnamed79(core.List<api.SurveyQuestionImage> o) {
+checkUnnamed60(core.List<api.SurveyQuestionImage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSurveyQuestionImage(o[0]);
   checkSurveyQuestionImage(o[1]);
 }
 
-buildUnnamed80() {
+buildUnnamed61() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed80(core.List<core.String> o) {
+checkUnnamed61(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed81() {
+buildUnnamed62() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed81(core.List<core.String> o) {
+checkUnnamed62(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -445,20 +445,20 @@
   buildCounterSurveyQuestion++;
   if (buildCounterSurveyQuestion < 3) {
     o.answerOrder = "foo";
-    o.answers = buildUnnamed78();
+    o.answers = buildUnnamed59();
     o.hasOther = true;
     o.highValueLabel = "foo";
-    o.images = buildUnnamed79();
+    o.images = buildUnnamed60();
     o.lastAnswerPositionPinned = true;
     o.lowValueLabel = "foo";
     o.mustPickSuggestion = true;
     o.numStars = "foo";
     o.openTextPlaceholder = "foo";
-    o.openTextSuggestions = buildUnnamed80();
+    o.openTextSuggestions = buildUnnamed61();
     o.question = "foo";
     o.sentimentText = "foo";
     o.singleLineResponse = true;
-    o.thresholdAnswers = buildUnnamed81();
+    o.thresholdAnswers = buildUnnamed62();
     o.type = "foo";
     o.unitOfMeasurementLabel = "foo";
     o.videoId = "foo";
@@ -471,20 +471,20 @@
   buildCounterSurveyQuestion++;
   if (buildCounterSurveyQuestion < 3) {
     unittest.expect(o.answerOrder, unittest.equals('foo'));
-    checkUnnamed78(o.answers);
+    checkUnnamed59(o.answers);
     unittest.expect(o.hasOther, unittest.isTrue);
     unittest.expect(o.highValueLabel, unittest.equals('foo'));
-    checkUnnamed79(o.images);
+    checkUnnamed60(o.images);
     unittest.expect(o.lastAnswerPositionPinned, unittest.isTrue);
     unittest.expect(o.lowValueLabel, unittest.equals('foo'));
     unittest.expect(o.mustPickSuggestion, unittest.isTrue);
     unittest.expect(o.numStars, unittest.equals('foo'));
     unittest.expect(o.openTextPlaceholder, unittest.equals('foo'));
-    checkUnnamed80(o.openTextSuggestions);
+    checkUnnamed61(o.openTextSuggestions);
     unittest.expect(o.question, unittest.equals('foo'));
     unittest.expect(o.sentimentText, unittest.equals('foo'));
     unittest.expect(o.singleLineResponse, unittest.isTrue);
-    checkUnnamed81(o.thresholdAnswers);
+    checkUnnamed62(o.thresholdAnswers);
     unittest.expect(o.type, unittest.equals('foo'));
     unittest.expect(o.unitOfMeasurementLabel, unittest.equals('foo'));
     unittest.expect(o.videoId, unittest.equals('foo'));
@@ -576,14 +576,14 @@
   buildCounterSurveysDeleteResponse--;
 }
 
-buildUnnamed82() {
+buildUnnamed63() {
   var o = new core.List<api.Survey>();
   o.add(buildSurvey());
   o.add(buildSurvey());
   return o;
 }
 
-checkUnnamed82(core.List<api.Survey> o) {
+checkUnnamed63(core.List<api.Survey> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSurvey(o[0]);
   checkSurvey(o[1]);
@@ -596,7 +596,7 @@
   if (buildCounterSurveysListResponse < 3) {
     o.pageInfo = buildPageInfo();
     o.requestId = "foo";
-    o.resources = buildUnnamed82();
+    o.resources = buildUnnamed63();
     o.tokenPagination = buildTokenPagination();
   }
   buildCounterSurveysListResponse--;
@@ -608,7 +608,7 @@
   if (buildCounterSurveysListResponse < 3) {
     checkPageInfo(o.pageInfo);
     unittest.expect(o.requestId, unittest.equals('foo'));
-    checkUnnamed82(o.resources);
+    checkUnnamed63(o.resources);
     checkTokenPagination(o.tokenPagination);
   }
   buildCounterSurveysListResponse--;
@@ -851,6 +851,7 @@
       api.MobileapppanelsResourceApi res =
           new api.ConsumersurveysApi(mock).mobileapppanels;
       var arg_panelId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -887,6 +888,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -895,7 +897,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_panelId)
+          .get(arg_panelId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.MobileAppPanel response) {
         checkMobileAppPanel(response);
       })));
@@ -908,6 +910,7 @@
       var arg_maxResults = 42;
       var arg_startIndex = 42;
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -946,6 +949,7 @@
         unittest.expect(core.int.parse(queryMap["startIndex"].first),
             unittest.equals(arg_startIndex));
         unittest.expect(queryMap["token"].first, unittest.equals(arg_token));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -957,7 +961,8 @@
           .list(
               maxResults: arg_maxResults,
               startIndex: arg_startIndex,
-              token: arg_token)
+              token: arg_token,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.MobileAppPanelsListResponse response) {
         checkMobileAppPanelsListResponse(response);
@@ -970,6 +975,7 @@
           new api.ConsumersurveysApi(mock).mobileapppanels;
       var arg_request = buildMobileAppPanel();
       var arg_panelId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.MobileAppPanel.fromJson(json);
         checkMobileAppPanel(obj);
@@ -1009,6 +1015,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1017,7 +1024,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_panelId)
+          .update(arg_request, arg_panelId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.MobileAppPanel response) {
         checkMobileAppPanel(response);
       })));
@@ -1033,6 +1040,7 @@
       api.ResultsResourceApi res = new api.ConsumersurveysApi(mock).results;
       var arg_request = buildResultsGetRequest();
       var arg_surveyUrlId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ResultsGetRequest.fromJson(json);
         checkResultsGetRequest(obj);
@@ -1078,6 +1086,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1086,7 +1095,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_request, arg_surveyUrlId)
+          .get(arg_request, arg_surveyUrlId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SurveyResults response) {
         checkSurveyResults(response);
       })));
@@ -1098,6 +1107,7 @@
       var mock = new HttpServerMock();
       api.SurveysResourceApi res = new api.ConsumersurveysApi(mock).surveys;
       var arg_surveyUrlId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1134,6 +1144,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1142,7 +1153,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_surveyUrlId)
+          .delete(arg_surveyUrlId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SurveysDeleteResponse response) {
         checkSurveysDeleteResponse(response);
       })));
@@ -1152,6 +1163,7 @@
       var mock = new HttpServerMock();
       api.SurveysResourceApi res = new api.ConsumersurveysApi(mock).surveys;
       var arg_surveyUrlId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1188,6 +1200,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1196,7 +1209,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_surveyUrlId)
+          .get(arg_surveyUrlId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Survey response) {
         checkSurvey(response);
       })));
@@ -1206,6 +1219,7 @@
       var mock = new HttpServerMock();
       api.SurveysResourceApi res = new api.ConsumersurveysApi(mock).surveys;
       var arg_request = buildSurvey();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Survey.fromJson(json);
         checkSurvey(obj);
@@ -1242,6 +1256,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1250,7 +1265,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request)
+          .insert(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Survey response) {
         checkSurvey(response);
       })));
@@ -1262,6 +1277,7 @@
       var arg_maxResults = 42;
       var arg_startIndex = 42;
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1300,6 +1316,7 @@
         unittest.expect(core.int.parse(queryMap["startIndex"].first),
             unittest.equals(arg_startIndex));
         unittest.expect(queryMap["token"].first, unittest.equals(arg_token));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1311,7 +1328,8 @@
           .list(
               maxResults: arg_maxResults,
               startIndex: arg_startIndex,
-              token: arg_token)
+              token: arg_token,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SurveysListResponse response) {
         checkSurveysListResponse(response);
       })));
@@ -1322,6 +1340,7 @@
       api.SurveysResourceApi res = new api.ConsumersurveysApi(mock).surveys;
       var arg_request = buildSurveysStartRequest();
       var arg_resourceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SurveysStartRequest.fromJson(json);
         checkSurveysStartRequest(obj);
@@ -1367,6 +1386,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1375,7 +1395,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .start(arg_request, arg_resourceId)
+          .start(arg_request, arg_resourceId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SurveysStartResponse response) {
         checkSurveysStartResponse(response);
       })));
@@ -1385,6 +1405,7 @@
       var mock = new HttpServerMock();
       api.SurveysResourceApi res = new api.ConsumersurveysApi(mock).surveys;
       var arg_resourceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1427,6 +1448,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1435,7 +1457,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .stop(arg_resourceId)
+          .stop(arg_resourceId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SurveysStopResponse response) {
         checkSurveysStopResponse(response);
       })));
@@ -1446,6 +1468,7 @@
       api.SurveysResourceApi res = new api.ConsumersurveysApi(mock).surveys;
       var arg_request = buildSurvey();
       var arg_surveyUrlId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Survey.fromJson(json);
         checkSurvey(obj);
@@ -1485,6 +1508,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1493,7 +1517,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_surveyUrlId)
+          .update(arg_request, arg_surveyUrlId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Survey response) {
         checkSurvey(response);
       })));
diff --git a/generated/googleapis/test/container/v1_test.dart b/generated/googleapis/test/container/v1_test.dart
index e0fb542..a7ac0c6 100644
--- a/generated/googleapis/test/container/v1_test.dart
+++ b/generated/googleapis/test/container/v1_test.dart
@@ -172,53 +172,53 @@
   buildCounterClientCertificateConfig--;
 }
 
+buildUnnamed1915() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1915(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1916() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1916(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
 buildUnnamed1917() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed1917(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed1918() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed1918(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed1919() {
   var o = new core.List<api.NodePool>();
   o.add(buildNodePool());
   o.add(buildNodePool());
   return o;
 }
 
-checkUnnamed1919(core.List<api.NodePool> o) {
+checkUnnamed1917(core.List<api.NodePool> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkNodePool(o[0]);
   checkNodePool(o[1]);
 }
 
-buildUnnamed1920() {
+buildUnnamed1918() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1920(core.Map<core.String, core.String> o) {
+checkUnnamed1918(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -241,11 +241,11 @@
     o.expireTime = "foo";
     o.initialClusterVersion = "foo";
     o.initialNodeCount = 42;
-    o.instanceGroupUrls = buildUnnamed1917();
+    o.instanceGroupUrls = buildUnnamed1915();
     o.ipAllocationPolicy = buildIPAllocationPolicy();
     o.labelFingerprint = "foo";
     o.legacyAbac = buildLegacyAbac();
-    o.locations = buildUnnamed1918();
+    o.locations = buildUnnamed1916();
     o.loggingService = "foo";
     o.maintenancePolicy = buildMaintenancePolicy();
     o.masterAuth = buildMasterAuth();
@@ -256,8 +256,8 @@
     o.networkPolicy = buildNetworkPolicy();
     o.nodeConfig = buildNodeConfig();
     o.nodeIpv4CidrSize = 42;
-    o.nodePools = buildUnnamed1919();
-    o.resourceLabels = buildUnnamed1920();
+    o.nodePools = buildUnnamed1917();
+    o.resourceLabels = buildUnnamed1918();
     o.selfLink = "foo";
     o.servicesIpv4Cidr = "foo";
     o.status = "foo";
@@ -284,11 +284,11 @@
     unittest.expect(o.expireTime, unittest.equals('foo'));
     unittest.expect(o.initialClusterVersion, unittest.equals('foo'));
     unittest.expect(o.initialNodeCount, unittest.equals(42));
-    checkUnnamed1917(o.instanceGroupUrls);
+    checkUnnamed1915(o.instanceGroupUrls);
     checkIPAllocationPolicy(o.ipAllocationPolicy);
     unittest.expect(o.labelFingerprint, unittest.equals('foo'));
     checkLegacyAbac(o.legacyAbac);
-    checkUnnamed1918(o.locations);
+    checkUnnamed1916(o.locations);
     unittest.expect(o.loggingService, unittest.equals('foo'));
     checkMaintenancePolicy(o.maintenancePolicy);
     checkMasterAuth(o.masterAuth);
@@ -299,8 +299,8 @@
     checkNetworkPolicy(o.networkPolicy);
     checkNodeConfig(o.nodeConfig);
     unittest.expect(o.nodeIpv4CidrSize, unittest.equals(42));
-    checkUnnamed1919(o.nodePools);
-    checkUnnamed1920(o.resourceLabels);
+    checkUnnamed1917(o.nodePools);
+    checkUnnamed1918(o.resourceLabels);
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.servicesIpv4Cidr, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals('foo'));
@@ -311,14 +311,14 @@
   buildCounterCluster--;
 }
 
-buildUnnamed1921() {
+buildUnnamed1919() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1921(core.List<core.String> o) {
+checkUnnamed1919(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -331,7 +331,7 @@
   if (buildCounterClusterUpdate < 3) {
     o.desiredAddonsConfig = buildAddonsConfig();
     o.desiredImageType = "foo";
-    o.desiredLocations = buildUnnamed1921();
+    o.desiredLocations = buildUnnamed1919();
     o.desiredMasterAuthorizedNetworksConfig =
         buildMasterAuthorizedNetworksConfig();
     o.desiredMasterVersion = "foo";
@@ -349,7 +349,7 @@
   if (buildCounterClusterUpdate < 3) {
     checkAddonsConfig(o.desiredAddonsConfig);
     unittest.expect(o.desiredImageType, unittest.equals('foo'));
-    checkUnnamed1921(o.desiredLocations);
+    checkUnnamed1919(o.desiredLocations);
     checkMasterAuthorizedNetworksConfig(
         o.desiredMasterAuthorizedNetworksConfig);
     unittest.expect(o.desiredMasterVersion, unittest.equals('foo'));
@@ -565,19 +565,85 @@
   buildCounterLegacyAbac--;
 }
 
-buildUnnamed1922() {
+buildUnnamed1920() {
   var o = new core.List<api.Cluster>();
   o.add(buildCluster());
   o.add(buildCluster());
   return o;
 }
 
-checkUnnamed1922(core.List<api.Cluster> o) {
+checkUnnamed1920(core.List<api.Cluster> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCluster(o[0]);
   checkCluster(o[1]);
 }
 
+buildUnnamed1921() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1921(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterListClustersResponse = 0;
+buildListClustersResponse() {
+  var o = new api.ListClustersResponse();
+  buildCounterListClustersResponse++;
+  if (buildCounterListClustersResponse < 3) {
+    o.clusters = buildUnnamed1920();
+    o.missingZones = buildUnnamed1921();
+  }
+  buildCounterListClustersResponse--;
+  return o;
+}
+
+checkListClustersResponse(api.ListClustersResponse o) {
+  buildCounterListClustersResponse++;
+  if (buildCounterListClustersResponse < 3) {
+    checkUnnamed1920(o.clusters);
+    checkUnnamed1921(o.missingZones);
+  }
+  buildCounterListClustersResponse--;
+}
+
+buildUnnamed1922() {
+  var o = new core.List<api.NodePool>();
+  o.add(buildNodePool());
+  o.add(buildNodePool());
+  return o;
+}
+
+checkUnnamed1922(core.List<api.NodePool> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkNodePool(o[0]);
+  checkNodePool(o[1]);
+}
+
+core.int buildCounterListNodePoolsResponse = 0;
+buildListNodePoolsResponse() {
+  var o = new api.ListNodePoolsResponse();
+  buildCounterListNodePoolsResponse++;
+  if (buildCounterListNodePoolsResponse < 3) {
+    o.nodePools = buildUnnamed1922();
+  }
+  buildCounterListNodePoolsResponse--;
+  return o;
+}
+
+checkListNodePoolsResponse(api.ListNodePoolsResponse o) {
+  buildCounterListNodePoolsResponse++;
+  if (buildCounterListNodePoolsResponse < 3) {
+    checkUnnamed1922(o.nodePools);
+  }
+  buildCounterListNodePoolsResponse--;
+}
+
 buildUnnamed1923() {
   var o = new core.List<core.String>();
   o.add("foo");
@@ -591,80 +657,14 @@
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-core.int buildCounterListClustersResponse = 0;
-buildListClustersResponse() {
-  var o = new api.ListClustersResponse();
-  buildCounterListClustersResponse++;
-  if (buildCounterListClustersResponse < 3) {
-    o.clusters = buildUnnamed1922();
-    o.missingZones = buildUnnamed1923();
-  }
-  buildCounterListClustersResponse--;
-  return o;
-}
-
-checkListClustersResponse(api.ListClustersResponse o) {
-  buildCounterListClustersResponse++;
-  if (buildCounterListClustersResponse < 3) {
-    checkUnnamed1922(o.clusters);
-    checkUnnamed1923(o.missingZones);
-  }
-  buildCounterListClustersResponse--;
-}
-
 buildUnnamed1924() {
-  var o = new core.List<api.NodePool>();
-  o.add(buildNodePool());
-  o.add(buildNodePool());
-  return o;
-}
-
-checkUnnamed1924(core.List<api.NodePool> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkNodePool(o[0]);
-  checkNodePool(o[1]);
-}
-
-core.int buildCounterListNodePoolsResponse = 0;
-buildListNodePoolsResponse() {
-  var o = new api.ListNodePoolsResponse();
-  buildCounterListNodePoolsResponse++;
-  if (buildCounterListNodePoolsResponse < 3) {
-    o.nodePools = buildUnnamed1924();
-  }
-  buildCounterListNodePoolsResponse--;
-  return o;
-}
-
-checkListNodePoolsResponse(api.ListNodePoolsResponse o) {
-  buildCounterListNodePoolsResponse++;
-  if (buildCounterListNodePoolsResponse < 3) {
-    checkUnnamed1924(o.nodePools);
-  }
-  buildCounterListNodePoolsResponse--;
-}
-
-buildUnnamed1925() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed1925(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed1926() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed1926(core.List<api.Operation> o) {
+checkUnnamed1924(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -675,8 +675,8 @@
   var o = new api.ListOperationsResponse();
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
-    o.missingZones = buildUnnamed1925();
-    o.operations = buildUnnamed1926();
+    o.missingZones = buildUnnamed1923();
+    o.operations = buildUnnamed1924();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -685,8 +685,8 @@
 checkListOperationsResponse(api.ListOperationsResponse o) {
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
-    checkUnnamed1925(o.missingZones);
-    checkUnnamed1926(o.operations);
+    checkUnnamed1923(o.missingZones);
+    checkUnnamed1924(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
@@ -758,14 +758,14 @@
   buildCounterMasterAuth--;
 }
 
-buildUnnamed1927() {
+buildUnnamed1925() {
   var o = new core.List<api.CidrBlock>();
   o.add(buildCidrBlock());
   o.add(buildCidrBlock());
   return o;
 }
 
-checkUnnamed1927(core.List<api.CidrBlock> o) {
+checkUnnamed1925(core.List<api.CidrBlock> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCidrBlock(o[0]);
   checkCidrBlock(o[1]);
@@ -776,7 +776,7 @@
   var o = new api.MasterAuthorizedNetworksConfig();
   buildCounterMasterAuthorizedNetworksConfig++;
   if (buildCounterMasterAuthorizedNetworksConfig < 3) {
-    o.cidrBlocks = buildUnnamed1927();
+    o.cidrBlocks = buildUnnamed1925();
     o.enabled = true;
   }
   buildCounterMasterAuthorizedNetworksConfig--;
@@ -786,7 +786,7 @@
 checkMasterAuthorizedNetworksConfig(api.MasterAuthorizedNetworksConfig o) {
   buildCounterMasterAuthorizedNetworksConfig++;
   if (buildCounterMasterAuthorizedNetworksConfig < 3) {
-    checkUnnamed1927(o.cidrBlocks);
+    checkUnnamed1925(o.cidrBlocks);
     unittest.expect(o.enabled, unittest.isTrue);
   }
   buildCounterMasterAuthorizedNetworksConfig--;
@@ -832,66 +832,66 @@
   buildCounterNetworkPolicyConfig--;
 }
 
-buildUnnamed1928() {
+buildUnnamed1926() {
   var o = new core.List<api.AcceleratorConfig>();
   o.add(buildAcceleratorConfig());
   o.add(buildAcceleratorConfig());
   return o;
 }
 
-checkUnnamed1928(core.List<api.AcceleratorConfig> o) {
+checkUnnamed1926(core.List<api.AcceleratorConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAcceleratorConfig(o[0]);
   checkAcceleratorConfig(o[1]);
 }
 
+buildUnnamed1927() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed1927(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+buildUnnamed1928() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed1928(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
 buildUnnamed1929() {
-  var o = new core.Map<core.String, core.String>();
-  o["x"] = "foo";
-  o["y"] = "foo";
-  return o;
-}
-
-checkUnnamed1929(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o["x"], unittest.equals('foo'));
-  unittest.expect(o["y"], unittest.equals('foo'));
-}
-
-buildUnnamed1930() {
-  var o = new core.Map<core.String, core.String>();
-  o["x"] = "foo";
-  o["y"] = "foo";
-  return o;
-}
-
-checkUnnamed1930(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o["x"], unittest.equals('foo'));
-  unittest.expect(o["y"], unittest.equals('foo'));
-}
-
-buildUnnamed1931() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1931(core.List<core.String> o) {
+checkUnnamed1929(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1932() {
+buildUnnamed1930() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1932(core.List<core.String> o) {
+checkUnnamed1930(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -902,18 +902,18 @@
   var o = new api.NodeConfig();
   buildCounterNodeConfig++;
   if (buildCounterNodeConfig < 3) {
-    o.accelerators = buildUnnamed1928();
+    o.accelerators = buildUnnamed1926();
     o.diskSizeGb = 42;
     o.imageType = "foo";
-    o.labels = buildUnnamed1929();
+    o.labels = buildUnnamed1927();
     o.localSsdCount = 42;
     o.machineType = "foo";
-    o.metadata = buildUnnamed1930();
+    o.metadata = buildUnnamed1928();
     o.minCpuPlatform = "foo";
-    o.oauthScopes = buildUnnamed1931();
+    o.oauthScopes = buildUnnamed1929();
     o.preemptible = true;
     o.serviceAccount = "foo";
-    o.tags = buildUnnamed1932();
+    o.tags = buildUnnamed1930();
   }
   buildCounterNodeConfig--;
   return o;
@@ -922,18 +922,18 @@
 checkNodeConfig(api.NodeConfig o) {
   buildCounterNodeConfig++;
   if (buildCounterNodeConfig < 3) {
-    checkUnnamed1928(o.accelerators);
+    checkUnnamed1926(o.accelerators);
     unittest.expect(o.diskSizeGb, unittest.equals(42));
     unittest.expect(o.imageType, unittest.equals('foo'));
-    checkUnnamed1929(o.labels);
+    checkUnnamed1927(o.labels);
     unittest.expect(o.localSsdCount, unittest.equals(42));
     unittest.expect(o.machineType, unittest.equals('foo'));
-    checkUnnamed1930(o.metadata);
+    checkUnnamed1928(o.metadata);
     unittest.expect(o.minCpuPlatform, unittest.equals('foo'));
-    checkUnnamed1931(o.oauthScopes);
+    checkUnnamed1929(o.oauthScopes);
     unittest.expect(o.preemptible, unittest.isTrue);
     unittest.expect(o.serviceAccount, unittest.equals('foo'));
-    checkUnnamed1932(o.tags);
+    checkUnnamed1930(o.tags);
   }
   buildCounterNodeConfig--;
 }
@@ -961,14 +961,14 @@
   buildCounterNodeManagement--;
 }
 
-buildUnnamed1933() {
+buildUnnamed1931() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1933(core.List<core.String> o) {
+checkUnnamed1931(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -982,7 +982,7 @@
     o.autoscaling = buildNodePoolAutoscaling();
     o.config = buildNodeConfig();
     o.initialNodeCount = 42;
-    o.instanceGroupUrls = buildUnnamed1933();
+    o.instanceGroupUrls = buildUnnamed1931();
     o.management = buildNodeManagement();
     o.name = "foo";
     o.selfLink = "foo";
@@ -1000,7 +1000,7 @@
     checkNodePoolAutoscaling(o.autoscaling);
     checkNodeConfig(o.config);
     unittest.expect(o.initialNodeCount, unittest.equals(42));
-    checkUnnamed1933(o.instanceGroupUrls);
+    checkUnnamed1931(o.instanceGroupUrls);
     checkNodeManagement(o.management);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -1086,6 +1086,32 @@
   buildCounterRollbackNodePoolUpgradeRequest--;
 }
 
+buildUnnamed1932() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1932(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1933() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1933(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
 buildUnnamed1934() {
   var o = new core.List<core.String>();
   o.add("foo");
@@ -1099,32 +1125,6 @@
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1935() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed1935(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed1936() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed1936(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
 core.int buildCounterServerConfig = 0;
 buildServerConfig() {
   var o = new api.ServerConfig();
@@ -1132,9 +1132,9 @@
   if (buildCounterServerConfig < 3) {
     o.defaultClusterVersion = "foo";
     o.defaultImageType = "foo";
-    o.validImageTypes = buildUnnamed1934();
-    o.validMasterVersions = buildUnnamed1935();
-    o.validNodeVersions = buildUnnamed1936();
+    o.validImageTypes = buildUnnamed1932();
+    o.validMasterVersions = buildUnnamed1933();
+    o.validNodeVersions = buildUnnamed1934();
   }
   buildCounterServerConfig--;
   return o;
@@ -1145,9 +1145,9 @@
   if (buildCounterServerConfig < 3) {
     unittest.expect(o.defaultClusterVersion, unittest.equals('foo'));
     unittest.expect(o.defaultImageType, unittest.equals('foo'));
-    checkUnnamed1934(o.validImageTypes);
-    checkUnnamed1935(o.validMasterVersions);
-    checkUnnamed1936(o.validNodeVersions);
+    checkUnnamed1932(o.validImageTypes);
+    checkUnnamed1933(o.validMasterVersions);
+    checkUnnamed1934(o.validNodeVersions);
   }
   buildCounterServerConfig--;
 }
@@ -1171,14 +1171,14 @@
   buildCounterSetAddonsConfigRequest--;
 }
 
-buildUnnamed1937() {
+buildUnnamed1935() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1937(core.Map<core.String, core.String> o) {
+checkUnnamed1935(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1190,7 +1190,7 @@
   buildCounterSetLabelsRequest++;
   if (buildCounterSetLabelsRequest < 3) {
     o.labelFingerprint = "foo";
-    o.resourceLabels = buildUnnamed1937();
+    o.resourceLabels = buildUnnamed1935();
   }
   buildCounterSetLabelsRequest--;
   return o;
@@ -1200,7 +1200,7 @@
   buildCounterSetLabelsRequest++;
   if (buildCounterSetLabelsRequest < 3) {
     unittest.expect(o.labelFingerprint, unittest.equals('foo'));
-    checkUnnamed1937(o.resourceLabels);
+    checkUnnamed1935(o.resourceLabels);
   }
   buildCounterSetLabelsRequest--;
 }
@@ -1224,14 +1224,14 @@
   buildCounterSetLegacyAbacRequest--;
 }
 
-buildUnnamed1938() {
+buildUnnamed1936() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1938(core.List<core.String> o) {
+checkUnnamed1936(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1242,7 +1242,7 @@
   var o = new api.SetLocationsRequest();
   buildCounterSetLocationsRequest++;
   if (buildCounterSetLocationsRequest < 3) {
-    o.locations = buildUnnamed1938();
+    o.locations = buildUnnamed1936();
   }
   buildCounterSetLocationsRequest--;
   return o;
@@ -1251,7 +1251,7 @@
 checkSetLocationsRequest(api.SetLocationsRequest o) {
   buildCounterSetLocationsRequest++;
   if (buildCounterSetLocationsRequest < 3) {
-    checkUnnamed1938(o.locations);
+    checkUnnamed1936(o.locations);
   }
   buildCounterSetLocationsRequest--;
 }
@@ -1892,6 +1892,7 @@
           new api.ContainerApi(mock).projects.zones;
       var arg_projectId = "foo";
       var arg_zone = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1940,6 +1941,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1948,7 +1950,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getServerconfig(arg_projectId, arg_zone)
+          .getServerconfig(arg_projectId, arg_zone, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ServerConfig response) {
         checkServerConfig(response);
       })));
@@ -1964,6 +1966,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetAddonsConfigRequest.fromJson(json);
         checkSetAddonsConfigRequest(obj);
@@ -2024,6 +2027,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2032,7 +2036,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .addons(arg_request, arg_projectId, arg_zone, arg_clusterId)
+          .addons(arg_request, arg_projectId, arg_zone, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2046,6 +2051,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CompleteIPRotationRequest.fromJson(json);
         checkCompleteIPRotationRequest(obj);
@@ -2106,6 +2112,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2115,7 +2122,8 @@
       }), true);
       res
           .completeIpRotation(
-              arg_request, arg_projectId, arg_zone, arg_clusterId)
+              arg_request, arg_projectId, arg_zone, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2128,6 +2136,7 @@
       var arg_request = buildCreateClusterRequest();
       var arg_projectId = "foo";
       var arg_zone = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CreateClusterRequest.fromJson(json);
         checkCreateClusterRequest(obj);
@@ -2179,6 +2188,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2187,7 +2197,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_projectId, arg_zone)
+          .create(arg_request, arg_projectId, arg_zone, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2200,6 +2210,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2251,6 +2262,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2259,7 +2271,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_projectId, arg_zone, arg_clusterId)
+          .delete(arg_projectId, arg_zone, arg_clusterId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2272,6 +2284,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2323,6 +2336,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2331,7 +2345,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_projectId, arg_zone, arg_clusterId)
+          .get(arg_projectId, arg_zone, arg_clusterId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Cluster response) {
         checkCluster(response);
       })));
@@ -2345,6 +2359,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetLegacyAbacRequest.fromJson(json);
         checkSetLegacyAbacRequest(obj);
@@ -2405,6 +2420,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2413,7 +2429,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .legacyAbac(arg_request, arg_projectId, arg_zone, arg_clusterId)
+          .legacyAbac(arg_request, arg_projectId, arg_zone, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2425,6 +2442,7 @@
           new api.ContainerApi(mock).projects.zones.clusters;
       var arg_projectId = "foo";
       var arg_zone = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2473,6 +2491,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2481,7 +2500,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_projectId, arg_zone)
+          .list(arg_projectId, arg_zone, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListClustersResponse response) {
         checkListClustersResponse(response);
       })));
@@ -2495,6 +2514,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetLocationsRequest.fromJson(json);
         checkSetLocationsRequest(obj);
@@ -2555,6 +2575,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2563,7 +2584,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .locations(arg_request, arg_projectId, arg_zone, arg_clusterId)
+          .locations(arg_request, arg_projectId, arg_zone, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2577,6 +2599,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetLoggingServiceRequest.fromJson(json);
         checkSetLoggingServiceRequest(obj);
@@ -2637,6 +2660,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2645,7 +2669,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .logging(arg_request, arg_projectId, arg_zone, arg_clusterId)
+          .logging(arg_request, arg_projectId, arg_zone, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2659,6 +2684,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UpdateMasterRequest.fromJson(json);
         checkUpdateMasterRequest(obj);
@@ -2719,6 +2745,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2727,7 +2754,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .master(arg_request, arg_projectId, arg_zone, arg_clusterId)
+          .master(arg_request, arg_projectId, arg_zone, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2741,6 +2769,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetMonitoringServiceRequest.fromJson(json);
         checkSetMonitoringServiceRequest(obj);
@@ -2801,6 +2830,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2809,7 +2839,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .monitoring(arg_request, arg_projectId, arg_zone, arg_clusterId)
+          .monitoring(arg_request, arg_projectId, arg_zone, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2823,6 +2854,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetLabelsRequest.fromJson(json);
         checkSetLabelsRequest(obj);
@@ -2883,6 +2915,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2891,7 +2924,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .resourceLabels(arg_request, arg_projectId, arg_zone, arg_clusterId)
+          .resourceLabels(arg_request, arg_projectId, arg_zone, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2905,6 +2939,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetMaintenancePolicyRequest.fromJson(json);
         checkSetMaintenancePolicyRequest(obj);
@@ -2965,6 +3000,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2974,7 +3010,8 @@
       }), true);
       res
           .setMaintenancePolicy(
-              arg_request, arg_projectId, arg_zone, arg_clusterId)
+              arg_request, arg_projectId, arg_zone, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2988,6 +3025,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetMasterAuthRequest.fromJson(json);
         checkSetMasterAuthRequest(obj);
@@ -3048,6 +3086,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3056,7 +3095,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setMasterAuth(arg_request, arg_projectId, arg_zone, arg_clusterId)
+          .setMasterAuth(arg_request, arg_projectId, arg_zone, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3070,6 +3110,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetNetworkPolicyRequest.fromJson(json);
         checkSetNetworkPolicyRequest(obj);
@@ -3130,6 +3171,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3138,7 +3180,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setNetworkPolicy(arg_request, arg_projectId, arg_zone, arg_clusterId)
+          .setNetworkPolicy(arg_request, arg_projectId, arg_zone, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3152,6 +3195,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StartIPRotationRequest.fromJson(json);
         checkStartIPRotationRequest(obj);
@@ -3212,6 +3256,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3220,7 +3265,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .startIpRotation(arg_request, arg_projectId, arg_zone, arg_clusterId)
+          .startIpRotation(arg_request, arg_projectId, arg_zone, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3234,6 +3280,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UpdateClusterRequest.fromJson(json);
         checkUpdateClusterRequest(obj);
@@ -3288,6 +3335,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3296,7 +3344,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_projectId, arg_zone, arg_clusterId)
+          .update(arg_request, arg_projectId, arg_zone, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3313,6 +3362,7 @@
       var arg_zone = "foo";
       var arg_clusterId = "foo";
       var arg_nodePoolId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetNodePoolAutoscalingRequest.fromJson(json);
         checkSetNodePoolAutoscalingRequest(obj);
@@ -3382,6 +3432,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3391,7 +3442,8 @@
       }), true);
       res
           .autoscaling(arg_request, arg_projectId, arg_zone, arg_clusterId,
-              arg_nodePoolId)
+              arg_nodePoolId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3405,6 +3457,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CreateNodePoolRequest.fromJson(json);
         checkCreateNodePoolRequest(obj);
@@ -3465,6 +3518,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3473,7 +3527,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_projectId, arg_zone, arg_clusterId)
+          .create(arg_request, arg_projectId, arg_zone, arg_clusterId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3487,6 +3542,7 @@
       var arg_zone = "foo";
       var arg_clusterId = "foo";
       var arg_nodePoolId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3547,6 +3603,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3555,7 +3612,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_projectId, arg_zone, arg_clusterId, arg_nodePoolId)
+          .delete(arg_projectId, arg_zone, arg_clusterId, arg_nodePoolId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3569,6 +3627,7 @@
       var arg_zone = "foo";
       var arg_clusterId = "foo";
       var arg_nodePoolId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3629,6 +3688,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3637,7 +3697,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_projectId, arg_zone, arg_clusterId, arg_nodePoolId)
+          .get(arg_projectId, arg_zone, arg_clusterId, arg_nodePoolId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.NodePool response) {
         checkNodePool(response);
       })));
@@ -3650,6 +3711,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_clusterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3707,6 +3769,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3715,7 +3778,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_projectId, arg_zone, arg_clusterId)
+          .list(arg_projectId, arg_zone, arg_clusterId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListNodePoolsResponse response) {
         checkListNodePoolsResponse(response);
       })));
@@ -3730,6 +3793,7 @@
       var arg_zone = "foo";
       var arg_clusterId = "foo";
       var arg_nodePoolId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RollbackNodePoolUpgradeRequest.fromJson(json);
         checkRollbackNodePoolUpgradeRequest(obj);
@@ -3799,6 +3863,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3808,7 +3873,8 @@
       }), true);
       res
           .rollback(arg_request, arg_projectId, arg_zone, arg_clusterId,
-              arg_nodePoolId)
+              arg_nodePoolId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3823,6 +3889,7 @@
       var arg_zone = "foo";
       var arg_clusterId = "foo";
       var arg_nodePoolId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetNodePoolManagementRequest.fromJson(json);
         checkSetNodePoolManagementRequest(obj);
@@ -3892,6 +3959,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3901,7 +3969,8 @@
       }), true);
       res
           .setManagement(arg_request, arg_projectId, arg_zone, arg_clusterId,
-              arg_nodePoolId)
+              arg_nodePoolId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3916,6 +3985,7 @@
       var arg_zone = "foo";
       var arg_clusterId = "foo";
       var arg_nodePoolId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetNodePoolSizeRequest.fromJson(json);
         checkSetNodePoolSizeRequest(obj);
@@ -3985,6 +4055,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3994,7 +4065,8 @@
       }), true);
       res
           .setSize(arg_request, arg_projectId, arg_zone, arg_clusterId,
-              arg_nodePoolId)
+              arg_nodePoolId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4009,6 +4081,7 @@
       var arg_zone = "foo";
       var arg_clusterId = "foo";
       var arg_nodePoolId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UpdateNodePoolRequest.fromJson(json);
         checkUpdateNodePoolRequest(obj);
@@ -4078,6 +4151,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4087,7 +4161,8 @@
       }), true);
       res
           .update(arg_request, arg_projectId, arg_zone, arg_clusterId,
-              arg_nodePoolId)
+              arg_nodePoolId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4103,6 +4178,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_operationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CancelOperationRequest.fromJson(json);
         checkCancelOperationRequest(obj);
@@ -4163,6 +4239,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4171,7 +4248,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .cancel(arg_request, arg_projectId, arg_zone, arg_operationId)
+          .cancel(arg_request, arg_projectId, arg_zone, arg_operationId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -4184,6 +4262,7 @@
       var arg_projectId = "foo";
       var arg_zone = "foo";
       var arg_operationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4235,6 +4314,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4243,7 +4323,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_projectId, arg_zone, arg_operationId)
+          .get(arg_projectId, arg_zone, arg_operationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4255,6 +4335,7 @@
           new api.ContainerApi(mock).projects.zones.operations;
       var arg_projectId = "foo";
       var arg_zone = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4303,6 +4384,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4311,7 +4393,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_projectId, arg_zone)
+          .list(arg_projectId, arg_zone, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
diff --git a/generated/googleapis/test/content/v2_test.dart b/generated/googleapis/test/content/v2_test.dart
new file mode 100644
index 0000000..0024e48
--- /dev/null
+++ b/generated/googleapis/test/content/v2_test.dart
@@ -0,0 +1,9963 @@
+library googleapis.content.v2.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/content/v2.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+buildUnnamed333() {
+  var o = new core.List<api.AccountAdwordsLink>();
+  o.add(buildAccountAdwordsLink());
+  o.add(buildAccountAdwordsLink());
+  return o;
+}
+
+checkUnnamed333(core.List<api.AccountAdwordsLink> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountAdwordsLink(o[0]);
+  checkAccountAdwordsLink(o[1]);
+}
+
+buildUnnamed334() {
+  var o = new core.List<api.AccountUser>();
+  o.add(buildAccountUser());
+  o.add(buildAccountUser());
+  return o;
+}
+
+checkUnnamed334(core.List<api.AccountUser> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountUser(o[0]);
+  checkAccountUser(o[1]);
+}
+
+buildUnnamed335() {
+  var o = new core.List<api.AccountYouTubeChannelLink>();
+  o.add(buildAccountYouTubeChannelLink());
+  o.add(buildAccountYouTubeChannelLink());
+  return o;
+}
+
+checkUnnamed335(core.List<api.AccountYouTubeChannelLink> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountYouTubeChannelLink(o[0]);
+  checkAccountYouTubeChannelLink(o[1]);
+}
+
+core.int buildCounterAccount = 0;
+buildAccount() {
+  var o = new api.Account();
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    o.adultContent = true;
+    o.adwordsLinks = buildUnnamed333();
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.reviewsUrl = "foo";
+    o.sellerId = "foo";
+    o.users = buildUnnamed334();
+    o.websiteUrl = "foo";
+    o.youtubeChannelLinks = buildUnnamed335();
+  }
+  buildCounterAccount--;
+  return o;
+}
+
+checkAccount(api.Account o) {
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    unittest.expect(o.adultContent, unittest.isTrue);
+    checkUnnamed333(o.adwordsLinks);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.reviewsUrl, unittest.equals('foo'));
+    unittest.expect(o.sellerId, unittest.equals('foo'));
+    checkUnnamed334(o.users);
+    unittest.expect(o.websiteUrl, unittest.equals('foo'));
+    checkUnnamed335(o.youtubeChannelLinks);
+  }
+  buildCounterAccount--;
+}
+
+core.int buildCounterAccountAdwordsLink = 0;
+buildAccountAdwordsLink() {
+  var o = new api.AccountAdwordsLink();
+  buildCounterAccountAdwordsLink++;
+  if (buildCounterAccountAdwordsLink < 3) {
+    o.adwordsId = "foo";
+    o.status = "foo";
+  }
+  buildCounterAccountAdwordsLink--;
+  return o;
+}
+
+checkAccountAdwordsLink(api.AccountAdwordsLink o) {
+  buildCounterAccountAdwordsLink++;
+  if (buildCounterAccountAdwordsLink < 3) {
+    unittest.expect(o.adwordsId, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+  }
+  buildCounterAccountAdwordsLink--;
+}
+
+core.int buildCounterAccountIdentifier = 0;
+buildAccountIdentifier() {
+  var o = new api.AccountIdentifier();
+  buildCounterAccountIdentifier++;
+  if (buildCounterAccountIdentifier < 3) {
+    o.aggregatorId = "foo";
+    o.merchantId = "foo";
+  }
+  buildCounterAccountIdentifier--;
+  return o;
+}
+
+checkAccountIdentifier(api.AccountIdentifier o) {
+  buildCounterAccountIdentifier++;
+  if (buildCounterAccountIdentifier < 3) {
+    unittest.expect(o.aggregatorId, unittest.equals('foo'));
+    unittest.expect(o.merchantId, unittest.equals('foo'));
+  }
+  buildCounterAccountIdentifier--;
+}
+
+buildUnnamed336() {
+  var o = new core.List<api.AccountStatusAccountLevelIssue>();
+  o.add(buildAccountStatusAccountLevelIssue());
+  o.add(buildAccountStatusAccountLevelIssue());
+  return o;
+}
+
+checkUnnamed336(core.List<api.AccountStatusAccountLevelIssue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountStatusAccountLevelIssue(o[0]);
+  checkAccountStatusAccountLevelIssue(o[1]);
+}
+
+buildUnnamed337() {
+  var o = new core.List<api.AccountStatusDataQualityIssue>();
+  o.add(buildAccountStatusDataQualityIssue());
+  o.add(buildAccountStatusDataQualityIssue());
+  return o;
+}
+
+checkUnnamed337(core.List<api.AccountStatusDataQualityIssue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountStatusDataQualityIssue(o[0]);
+  checkAccountStatusDataQualityIssue(o[1]);
+}
+
+core.int buildCounterAccountStatus = 0;
+buildAccountStatus() {
+  var o = new api.AccountStatus();
+  buildCounterAccountStatus++;
+  if (buildCounterAccountStatus < 3) {
+    o.accountId = "foo";
+    o.accountLevelIssues = buildUnnamed336();
+    o.dataQualityIssues = buildUnnamed337();
+    o.kind = "foo";
+    o.websiteClaimed = true;
+  }
+  buildCounterAccountStatus--;
+  return o;
+}
+
+checkAccountStatus(api.AccountStatus o) {
+  buildCounterAccountStatus++;
+  if (buildCounterAccountStatus < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkUnnamed336(o.accountLevelIssues);
+    checkUnnamed337(o.dataQualityIssues);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.websiteClaimed, unittest.isTrue);
+  }
+  buildCounterAccountStatus--;
+}
+
+core.int buildCounterAccountStatusAccountLevelIssue = 0;
+buildAccountStatusAccountLevelIssue() {
+  var o = new api.AccountStatusAccountLevelIssue();
+  buildCounterAccountStatusAccountLevelIssue++;
+  if (buildCounterAccountStatusAccountLevelIssue < 3) {
+    o.country = "foo";
+    o.detail = "foo";
+    o.id = "foo";
+    o.severity = "foo";
+    o.title = "foo";
+  }
+  buildCounterAccountStatusAccountLevelIssue--;
+  return o;
+}
+
+checkAccountStatusAccountLevelIssue(api.AccountStatusAccountLevelIssue o) {
+  buildCounterAccountStatusAccountLevelIssue++;
+  if (buildCounterAccountStatusAccountLevelIssue < 3) {
+    unittest.expect(o.country, unittest.equals('foo'));
+    unittest.expect(o.detail, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.severity, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterAccountStatusAccountLevelIssue--;
+}
+
+buildUnnamed338() {
+  var o = new core.List<api.AccountStatusExampleItem>();
+  o.add(buildAccountStatusExampleItem());
+  o.add(buildAccountStatusExampleItem());
+  return o;
+}
+
+checkUnnamed338(core.List<api.AccountStatusExampleItem> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountStatusExampleItem(o[0]);
+  checkAccountStatusExampleItem(o[1]);
+}
+
+core.int buildCounterAccountStatusDataQualityIssue = 0;
+buildAccountStatusDataQualityIssue() {
+  var o = new api.AccountStatusDataQualityIssue();
+  buildCounterAccountStatusDataQualityIssue++;
+  if (buildCounterAccountStatusDataQualityIssue < 3) {
+    o.country = "foo";
+    o.detail = "foo";
+    o.displayedValue = "foo";
+    o.exampleItems = buildUnnamed338();
+    o.id = "foo";
+    o.lastChecked = "foo";
+    o.location = "foo";
+    o.numItems = 42;
+    o.severity = "foo";
+    o.submittedValue = "foo";
+  }
+  buildCounterAccountStatusDataQualityIssue--;
+  return o;
+}
+
+checkAccountStatusDataQualityIssue(api.AccountStatusDataQualityIssue o) {
+  buildCounterAccountStatusDataQualityIssue++;
+  if (buildCounterAccountStatusDataQualityIssue < 3) {
+    unittest.expect(o.country, unittest.equals('foo'));
+    unittest.expect(o.detail, unittest.equals('foo'));
+    unittest.expect(o.displayedValue, unittest.equals('foo'));
+    checkUnnamed338(o.exampleItems);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.lastChecked, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    unittest.expect(o.numItems, unittest.equals(42));
+    unittest.expect(o.severity, unittest.equals('foo'));
+    unittest.expect(o.submittedValue, unittest.equals('foo'));
+  }
+  buildCounterAccountStatusDataQualityIssue--;
+}
+
+core.int buildCounterAccountStatusExampleItem = 0;
+buildAccountStatusExampleItem() {
+  var o = new api.AccountStatusExampleItem();
+  buildCounterAccountStatusExampleItem++;
+  if (buildCounterAccountStatusExampleItem < 3) {
+    o.itemId = "foo";
+    o.link = "foo";
+    o.submittedValue = "foo";
+    o.title = "foo";
+    o.valueOnLandingPage = "foo";
+  }
+  buildCounterAccountStatusExampleItem--;
+  return o;
+}
+
+checkAccountStatusExampleItem(api.AccountStatusExampleItem o) {
+  buildCounterAccountStatusExampleItem++;
+  if (buildCounterAccountStatusExampleItem < 3) {
+    unittest.expect(o.itemId, unittest.equals('foo'));
+    unittest.expect(o.link, unittest.equals('foo'));
+    unittest.expect(o.submittedValue, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.valueOnLandingPage, unittest.equals('foo'));
+  }
+  buildCounterAccountStatusExampleItem--;
+}
+
+buildUnnamed339() {
+  var o = new core.List<api.AccountTaxTaxRule>();
+  o.add(buildAccountTaxTaxRule());
+  o.add(buildAccountTaxTaxRule());
+  return o;
+}
+
+checkUnnamed339(core.List<api.AccountTaxTaxRule> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountTaxTaxRule(o[0]);
+  checkAccountTaxTaxRule(o[1]);
+}
+
+core.int buildCounterAccountTax = 0;
+buildAccountTax() {
+  var o = new api.AccountTax();
+  buildCounterAccountTax++;
+  if (buildCounterAccountTax < 3) {
+    o.accountId = "foo";
+    o.kind = "foo";
+    o.rules = buildUnnamed339();
+  }
+  buildCounterAccountTax--;
+  return o;
+}
+
+checkAccountTax(api.AccountTax o) {
+  buildCounterAccountTax++;
+  if (buildCounterAccountTax < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed339(o.rules);
+  }
+  buildCounterAccountTax--;
+}
+
+core.int buildCounterAccountTaxTaxRule = 0;
+buildAccountTaxTaxRule() {
+  var o = new api.AccountTaxTaxRule();
+  buildCounterAccountTaxTaxRule++;
+  if (buildCounterAccountTaxTaxRule < 3) {
+    o.country = "foo";
+    o.locationId = "foo";
+    o.ratePercent = "foo";
+    o.shippingTaxed = true;
+    o.useGlobalRate = true;
+  }
+  buildCounterAccountTaxTaxRule--;
+  return o;
+}
+
+checkAccountTaxTaxRule(api.AccountTaxTaxRule o) {
+  buildCounterAccountTaxTaxRule++;
+  if (buildCounterAccountTaxTaxRule < 3) {
+    unittest.expect(o.country, unittest.equals('foo'));
+    unittest.expect(o.locationId, unittest.equals('foo'));
+    unittest.expect(o.ratePercent, unittest.equals('foo'));
+    unittest.expect(o.shippingTaxed, unittest.isTrue);
+    unittest.expect(o.useGlobalRate, unittest.isTrue);
+  }
+  buildCounterAccountTaxTaxRule--;
+}
+
+core.int buildCounterAccountUser = 0;
+buildAccountUser() {
+  var o = new api.AccountUser();
+  buildCounterAccountUser++;
+  if (buildCounterAccountUser < 3) {
+    o.admin = true;
+    o.emailAddress = "foo";
+  }
+  buildCounterAccountUser--;
+  return o;
+}
+
+checkAccountUser(api.AccountUser o) {
+  buildCounterAccountUser++;
+  if (buildCounterAccountUser < 3) {
+    unittest.expect(o.admin, unittest.isTrue);
+    unittest.expect(o.emailAddress, unittest.equals('foo'));
+  }
+  buildCounterAccountUser--;
+}
+
+core.int buildCounterAccountYouTubeChannelLink = 0;
+buildAccountYouTubeChannelLink() {
+  var o = new api.AccountYouTubeChannelLink();
+  buildCounterAccountYouTubeChannelLink++;
+  if (buildCounterAccountYouTubeChannelLink < 3) {
+    o.channelId = "foo";
+    o.status = "foo";
+  }
+  buildCounterAccountYouTubeChannelLink--;
+  return o;
+}
+
+checkAccountYouTubeChannelLink(api.AccountYouTubeChannelLink o) {
+  buildCounterAccountYouTubeChannelLink++;
+  if (buildCounterAccountYouTubeChannelLink < 3) {
+    unittest.expect(o.channelId, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+  }
+  buildCounterAccountYouTubeChannelLink--;
+}
+
+buildUnnamed340() {
+  var o = new core.List<api.AccountIdentifier>();
+  o.add(buildAccountIdentifier());
+  o.add(buildAccountIdentifier());
+  return o;
+}
+
+checkUnnamed340(core.List<api.AccountIdentifier> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountIdentifier(o[0]);
+  checkAccountIdentifier(o[1]);
+}
+
+core.int buildCounterAccountsAuthInfoResponse = 0;
+buildAccountsAuthInfoResponse() {
+  var o = new api.AccountsAuthInfoResponse();
+  buildCounterAccountsAuthInfoResponse++;
+  if (buildCounterAccountsAuthInfoResponse < 3) {
+    o.accountIdentifiers = buildUnnamed340();
+    o.kind = "foo";
+  }
+  buildCounterAccountsAuthInfoResponse--;
+  return o;
+}
+
+checkAccountsAuthInfoResponse(api.AccountsAuthInfoResponse o) {
+  buildCounterAccountsAuthInfoResponse++;
+  if (buildCounterAccountsAuthInfoResponse < 3) {
+    checkUnnamed340(o.accountIdentifiers);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAccountsAuthInfoResponse--;
+}
+
+core.int buildCounterAccountsClaimWebsiteResponse = 0;
+buildAccountsClaimWebsiteResponse() {
+  var o = new api.AccountsClaimWebsiteResponse();
+  buildCounterAccountsClaimWebsiteResponse++;
+  if (buildCounterAccountsClaimWebsiteResponse < 3) {
+    o.kind = "foo";
+  }
+  buildCounterAccountsClaimWebsiteResponse--;
+  return o;
+}
+
+checkAccountsClaimWebsiteResponse(api.AccountsClaimWebsiteResponse o) {
+  buildCounterAccountsClaimWebsiteResponse++;
+  if (buildCounterAccountsClaimWebsiteResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAccountsClaimWebsiteResponse--;
+}
+
+buildUnnamed341() {
+  var o = new core.List<api.AccountsCustomBatchRequestEntry>();
+  o.add(buildAccountsCustomBatchRequestEntry());
+  o.add(buildAccountsCustomBatchRequestEntry());
+  return o;
+}
+
+checkUnnamed341(core.List<api.AccountsCustomBatchRequestEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountsCustomBatchRequestEntry(o[0]);
+  checkAccountsCustomBatchRequestEntry(o[1]);
+}
+
+core.int buildCounterAccountsCustomBatchRequest = 0;
+buildAccountsCustomBatchRequest() {
+  var o = new api.AccountsCustomBatchRequest();
+  buildCounterAccountsCustomBatchRequest++;
+  if (buildCounterAccountsCustomBatchRequest < 3) {
+    o.entries = buildUnnamed341();
+  }
+  buildCounterAccountsCustomBatchRequest--;
+  return o;
+}
+
+checkAccountsCustomBatchRequest(api.AccountsCustomBatchRequest o) {
+  buildCounterAccountsCustomBatchRequest++;
+  if (buildCounterAccountsCustomBatchRequest < 3) {
+    checkUnnamed341(o.entries);
+  }
+  buildCounterAccountsCustomBatchRequest--;
+}
+
+core.int buildCounterAccountsCustomBatchRequestEntry = 0;
+buildAccountsCustomBatchRequestEntry() {
+  var o = new api.AccountsCustomBatchRequestEntry();
+  buildCounterAccountsCustomBatchRequestEntry++;
+  if (buildCounterAccountsCustomBatchRequestEntry < 3) {
+    o.account = buildAccount();
+    o.accountId = "foo";
+    o.batchId = 42;
+    o.force = true;
+    o.merchantId = "foo";
+    o.method = "foo";
+    o.overwrite = true;
+  }
+  buildCounterAccountsCustomBatchRequestEntry--;
+  return o;
+}
+
+checkAccountsCustomBatchRequestEntry(api.AccountsCustomBatchRequestEntry o) {
+  buildCounterAccountsCustomBatchRequestEntry++;
+  if (buildCounterAccountsCustomBatchRequestEntry < 3) {
+    checkAccount(o.account);
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.batchId, unittest.equals(42));
+    unittest.expect(o.force, unittest.isTrue);
+    unittest.expect(o.merchantId, unittest.equals('foo'));
+    unittest.expect(o.method, unittest.equals('foo'));
+    unittest.expect(o.overwrite, unittest.isTrue);
+  }
+  buildCounterAccountsCustomBatchRequestEntry--;
+}
+
+buildUnnamed342() {
+  var o = new core.List<api.AccountsCustomBatchResponseEntry>();
+  o.add(buildAccountsCustomBatchResponseEntry());
+  o.add(buildAccountsCustomBatchResponseEntry());
+  return o;
+}
+
+checkUnnamed342(core.List<api.AccountsCustomBatchResponseEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountsCustomBatchResponseEntry(o[0]);
+  checkAccountsCustomBatchResponseEntry(o[1]);
+}
+
+core.int buildCounterAccountsCustomBatchResponse = 0;
+buildAccountsCustomBatchResponse() {
+  var o = new api.AccountsCustomBatchResponse();
+  buildCounterAccountsCustomBatchResponse++;
+  if (buildCounterAccountsCustomBatchResponse < 3) {
+    o.entries = buildUnnamed342();
+    o.kind = "foo";
+  }
+  buildCounterAccountsCustomBatchResponse--;
+  return o;
+}
+
+checkAccountsCustomBatchResponse(api.AccountsCustomBatchResponse o) {
+  buildCounterAccountsCustomBatchResponse++;
+  if (buildCounterAccountsCustomBatchResponse < 3) {
+    checkUnnamed342(o.entries);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAccountsCustomBatchResponse--;
+}
+
+core.int buildCounterAccountsCustomBatchResponseEntry = 0;
+buildAccountsCustomBatchResponseEntry() {
+  var o = new api.AccountsCustomBatchResponseEntry();
+  buildCounterAccountsCustomBatchResponseEntry++;
+  if (buildCounterAccountsCustomBatchResponseEntry < 3) {
+    o.account = buildAccount();
+    o.batchId = 42;
+    o.errors = buildErrors();
+    o.kind = "foo";
+  }
+  buildCounterAccountsCustomBatchResponseEntry--;
+  return o;
+}
+
+checkAccountsCustomBatchResponseEntry(api.AccountsCustomBatchResponseEntry o) {
+  buildCounterAccountsCustomBatchResponseEntry++;
+  if (buildCounterAccountsCustomBatchResponseEntry < 3) {
+    checkAccount(o.account);
+    unittest.expect(o.batchId, unittest.equals(42));
+    checkErrors(o.errors);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAccountsCustomBatchResponseEntry--;
+}
+
+buildUnnamed343() {
+  var o = new core.List<api.Account>();
+  o.add(buildAccount());
+  o.add(buildAccount());
+  return o;
+}
+
+checkUnnamed343(core.List<api.Account> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccount(o[0]);
+  checkAccount(o[1]);
+}
+
+core.int buildCounterAccountsListResponse = 0;
+buildAccountsListResponse() {
+  var o = new api.AccountsListResponse();
+  buildCounterAccountsListResponse++;
+  if (buildCounterAccountsListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.resources = buildUnnamed343();
+  }
+  buildCounterAccountsListResponse--;
+  return o;
+}
+
+checkAccountsListResponse(api.AccountsListResponse o) {
+  buildCounterAccountsListResponse++;
+  if (buildCounterAccountsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed343(o.resources);
+  }
+  buildCounterAccountsListResponse--;
+}
+
+buildUnnamed344() {
+  var o = new core.List<api.AccountstatusesCustomBatchRequestEntry>();
+  o.add(buildAccountstatusesCustomBatchRequestEntry());
+  o.add(buildAccountstatusesCustomBatchRequestEntry());
+  return o;
+}
+
+checkUnnamed344(core.List<api.AccountstatusesCustomBatchRequestEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountstatusesCustomBatchRequestEntry(o[0]);
+  checkAccountstatusesCustomBatchRequestEntry(o[1]);
+}
+
+core.int buildCounterAccountstatusesCustomBatchRequest = 0;
+buildAccountstatusesCustomBatchRequest() {
+  var o = new api.AccountstatusesCustomBatchRequest();
+  buildCounterAccountstatusesCustomBatchRequest++;
+  if (buildCounterAccountstatusesCustomBatchRequest < 3) {
+    o.entries = buildUnnamed344();
+  }
+  buildCounterAccountstatusesCustomBatchRequest--;
+  return o;
+}
+
+checkAccountstatusesCustomBatchRequest(
+    api.AccountstatusesCustomBatchRequest o) {
+  buildCounterAccountstatusesCustomBatchRequest++;
+  if (buildCounterAccountstatusesCustomBatchRequest < 3) {
+    checkUnnamed344(o.entries);
+  }
+  buildCounterAccountstatusesCustomBatchRequest--;
+}
+
+core.int buildCounterAccountstatusesCustomBatchRequestEntry = 0;
+buildAccountstatusesCustomBatchRequestEntry() {
+  var o = new api.AccountstatusesCustomBatchRequestEntry();
+  buildCounterAccountstatusesCustomBatchRequestEntry++;
+  if (buildCounterAccountstatusesCustomBatchRequestEntry < 3) {
+    o.accountId = "foo";
+    o.batchId = 42;
+    o.merchantId = "foo";
+    o.method = "foo";
+  }
+  buildCounterAccountstatusesCustomBatchRequestEntry--;
+  return o;
+}
+
+checkAccountstatusesCustomBatchRequestEntry(
+    api.AccountstatusesCustomBatchRequestEntry o) {
+  buildCounterAccountstatusesCustomBatchRequestEntry++;
+  if (buildCounterAccountstatusesCustomBatchRequestEntry < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.batchId, unittest.equals(42));
+    unittest.expect(o.merchantId, unittest.equals('foo'));
+    unittest.expect(o.method, unittest.equals('foo'));
+  }
+  buildCounterAccountstatusesCustomBatchRequestEntry--;
+}
+
+buildUnnamed345() {
+  var o = new core.List<api.AccountstatusesCustomBatchResponseEntry>();
+  o.add(buildAccountstatusesCustomBatchResponseEntry());
+  o.add(buildAccountstatusesCustomBatchResponseEntry());
+  return o;
+}
+
+checkUnnamed345(core.List<api.AccountstatusesCustomBatchResponseEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountstatusesCustomBatchResponseEntry(o[0]);
+  checkAccountstatusesCustomBatchResponseEntry(o[1]);
+}
+
+core.int buildCounterAccountstatusesCustomBatchResponse = 0;
+buildAccountstatusesCustomBatchResponse() {
+  var o = new api.AccountstatusesCustomBatchResponse();
+  buildCounterAccountstatusesCustomBatchResponse++;
+  if (buildCounterAccountstatusesCustomBatchResponse < 3) {
+    o.entries = buildUnnamed345();
+    o.kind = "foo";
+  }
+  buildCounterAccountstatusesCustomBatchResponse--;
+  return o;
+}
+
+checkAccountstatusesCustomBatchResponse(
+    api.AccountstatusesCustomBatchResponse o) {
+  buildCounterAccountstatusesCustomBatchResponse++;
+  if (buildCounterAccountstatusesCustomBatchResponse < 3) {
+    checkUnnamed345(o.entries);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAccountstatusesCustomBatchResponse--;
+}
+
+core.int buildCounterAccountstatusesCustomBatchResponseEntry = 0;
+buildAccountstatusesCustomBatchResponseEntry() {
+  var o = new api.AccountstatusesCustomBatchResponseEntry();
+  buildCounterAccountstatusesCustomBatchResponseEntry++;
+  if (buildCounterAccountstatusesCustomBatchResponseEntry < 3) {
+    o.accountStatus = buildAccountStatus();
+    o.batchId = 42;
+    o.errors = buildErrors();
+  }
+  buildCounterAccountstatusesCustomBatchResponseEntry--;
+  return o;
+}
+
+checkAccountstatusesCustomBatchResponseEntry(
+    api.AccountstatusesCustomBatchResponseEntry o) {
+  buildCounterAccountstatusesCustomBatchResponseEntry++;
+  if (buildCounterAccountstatusesCustomBatchResponseEntry < 3) {
+    checkAccountStatus(o.accountStatus);
+    unittest.expect(o.batchId, unittest.equals(42));
+    checkErrors(o.errors);
+  }
+  buildCounterAccountstatusesCustomBatchResponseEntry--;
+}
+
+buildUnnamed346() {
+  var o = new core.List<api.AccountStatus>();
+  o.add(buildAccountStatus());
+  o.add(buildAccountStatus());
+  return o;
+}
+
+checkUnnamed346(core.List<api.AccountStatus> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountStatus(o[0]);
+  checkAccountStatus(o[1]);
+}
+
+core.int buildCounterAccountstatusesListResponse = 0;
+buildAccountstatusesListResponse() {
+  var o = new api.AccountstatusesListResponse();
+  buildCounterAccountstatusesListResponse++;
+  if (buildCounterAccountstatusesListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.resources = buildUnnamed346();
+  }
+  buildCounterAccountstatusesListResponse--;
+  return o;
+}
+
+checkAccountstatusesListResponse(api.AccountstatusesListResponse o) {
+  buildCounterAccountstatusesListResponse++;
+  if (buildCounterAccountstatusesListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed346(o.resources);
+  }
+  buildCounterAccountstatusesListResponse--;
+}
+
+buildUnnamed347() {
+  var o = new core.List<api.AccounttaxCustomBatchRequestEntry>();
+  o.add(buildAccounttaxCustomBatchRequestEntry());
+  o.add(buildAccounttaxCustomBatchRequestEntry());
+  return o;
+}
+
+checkUnnamed347(core.List<api.AccounttaxCustomBatchRequestEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccounttaxCustomBatchRequestEntry(o[0]);
+  checkAccounttaxCustomBatchRequestEntry(o[1]);
+}
+
+core.int buildCounterAccounttaxCustomBatchRequest = 0;
+buildAccounttaxCustomBatchRequest() {
+  var o = new api.AccounttaxCustomBatchRequest();
+  buildCounterAccounttaxCustomBatchRequest++;
+  if (buildCounterAccounttaxCustomBatchRequest < 3) {
+    o.entries = buildUnnamed347();
+  }
+  buildCounterAccounttaxCustomBatchRequest--;
+  return o;
+}
+
+checkAccounttaxCustomBatchRequest(api.AccounttaxCustomBatchRequest o) {
+  buildCounterAccounttaxCustomBatchRequest++;
+  if (buildCounterAccounttaxCustomBatchRequest < 3) {
+    checkUnnamed347(o.entries);
+  }
+  buildCounterAccounttaxCustomBatchRequest--;
+}
+
+core.int buildCounterAccounttaxCustomBatchRequestEntry = 0;
+buildAccounttaxCustomBatchRequestEntry() {
+  var o = new api.AccounttaxCustomBatchRequestEntry();
+  buildCounterAccounttaxCustomBatchRequestEntry++;
+  if (buildCounterAccounttaxCustomBatchRequestEntry < 3) {
+    o.accountId = "foo";
+    o.accountTax = buildAccountTax();
+    o.batchId = 42;
+    o.merchantId = "foo";
+    o.method = "foo";
+  }
+  buildCounterAccounttaxCustomBatchRequestEntry--;
+  return o;
+}
+
+checkAccounttaxCustomBatchRequestEntry(
+    api.AccounttaxCustomBatchRequestEntry o) {
+  buildCounterAccounttaxCustomBatchRequestEntry++;
+  if (buildCounterAccounttaxCustomBatchRequestEntry < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkAccountTax(o.accountTax);
+    unittest.expect(o.batchId, unittest.equals(42));
+    unittest.expect(o.merchantId, unittest.equals('foo'));
+    unittest.expect(o.method, unittest.equals('foo'));
+  }
+  buildCounterAccounttaxCustomBatchRequestEntry--;
+}
+
+buildUnnamed348() {
+  var o = new core.List<api.AccounttaxCustomBatchResponseEntry>();
+  o.add(buildAccounttaxCustomBatchResponseEntry());
+  o.add(buildAccounttaxCustomBatchResponseEntry());
+  return o;
+}
+
+checkUnnamed348(core.List<api.AccounttaxCustomBatchResponseEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccounttaxCustomBatchResponseEntry(o[0]);
+  checkAccounttaxCustomBatchResponseEntry(o[1]);
+}
+
+core.int buildCounterAccounttaxCustomBatchResponse = 0;
+buildAccounttaxCustomBatchResponse() {
+  var o = new api.AccounttaxCustomBatchResponse();
+  buildCounterAccounttaxCustomBatchResponse++;
+  if (buildCounterAccounttaxCustomBatchResponse < 3) {
+    o.entries = buildUnnamed348();
+    o.kind = "foo";
+  }
+  buildCounterAccounttaxCustomBatchResponse--;
+  return o;
+}
+
+checkAccounttaxCustomBatchResponse(api.AccounttaxCustomBatchResponse o) {
+  buildCounterAccounttaxCustomBatchResponse++;
+  if (buildCounterAccounttaxCustomBatchResponse < 3) {
+    checkUnnamed348(o.entries);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAccounttaxCustomBatchResponse--;
+}
+
+core.int buildCounterAccounttaxCustomBatchResponseEntry = 0;
+buildAccounttaxCustomBatchResponseEntry() {
+  var o = new api.AccounttaxCustomBatchResponseEntry();
+  buildCounterAccounttaxCustomBatchResponseEntry++;
+  if (buildCounterAccounttaxCustomBatchResponseEntry < 3) {
+    o.accountTax = buildAccountTax();
+    o.batchId = 42;
+    o.errors = buildErrors();
+    o.kind = "foo";
+  }
+  buildCounterAccounttaxCustomBatchResponseEntry--;
+  return o;
+}
+
+checkAccounttaxCustomBatchResponseEntry(
+    api.AccounttaxCustomBatchResponseEntry o) {
+  buildCounterAccounttaxCustomBatchResponseEntry++;
+  if (buildCounterAccounttaxCustomBatchResponseEntry < 3) {
+    checkAccountTax(o.accountTax);
+    unittest.expect(o.batchId, unittest.equals(42));
+    checkErrors(o.errors);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAccounttaxCustomBatchResponseEntry--;
+}
+
+buildUnnamed349() {
+  var o = new core.List<api.AccountTax>();
+  o.add(buildAccountTax());
+  o.add(buildAccountTax());
+  return o;
+}
+
+checkUnnamed349(core.List<api.AccountTax> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountTax(o[0]);
+  checkAccountTax(o[1]);
+}
+
+core.int buildCounterAccounttaxListResponse = 0;
+buildAccounttaxListResponse() {
+  var o = new api.AccounttaxListResponse();
+  buildCounterAccounttaxListResponse++;
+  if (buildCounterAccounttaxListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.resources = buildUnnamed349();
+  }
+  buildCounterAccounttaxListResponse--;
+  return o;
+}
+
+checkAccounttaxListResponse(api.AccounttaxListResponse o) {
+  buildCounterAccounttaxListResponse++;
+  if (buildCounterAccounttaxListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed349(o.resources);
+  }
+  buildCounterAccounttaxListResponse--;
+}
+
+core.int buildCounterCarrierRate = 0;
+buildCarrierRate() {
+  var o = new api.CarrierRate();
+  buildCounterCarrierRate++;
+  if (buildCounterCarrierRate < 3) {
+    o.carrierName = "foo";
+    o.carrierService = "foo";
+    o.flatAdjustment = buildPrice();
+    o.name = "foo";
+    o.originPostalCode = "foo";
+    o.percentageAdjustment = "foo";
+  }
+  buildCounterCarrierRate--;
+  return o;
+}
+
+checkCarrierRate(api.CarrierRate o) {
+  buildCounterCarrierRate++;
+  if (buildCounterCarrierRate < 3) {
+    unittest.expect(o.carrierName, unittest.equals('foo'));
+    unittest.expect(o.carrierService, unittest.equals('foo'));
+    checkPrice(o.flatAdjustment);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.originPostalCode, unittest.equals('foo'));
+    unittest.expect(o.percentageAdjustment, unittest.equals('foo'));
+  }
+  buildCounterCarrierRate--;
+}
+
+buildUnnamed350() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed350(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterCarriersCarrier = 0;
+buildCarriersCarrier() {
+  var o = new api.CarriersCarrier();
+  buildCounterCarriersCarrier++;
+  if (buildCounterCarriersCarrier < 3) {
+    o.country = "foo";
+    o.name = "foo";
+    o.services = buildUnnamed350();
+  }
+  buildCounterCarriersCarrier--;
+  return o;
+}
+
+checkCarriersCarrier(api.CarriersCarrier o) {
+  buildCounterCarriersCarrier++;
+  if (buildCounterCarriersCarrier < 3) {
+    unittest.expect(o.country, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed350(o.services);
+  }
+  buildCounterCarriersCarrier--;
+}
+
+buildUnnamed351() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed351(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed352() {
+  var o = new core.List<api.DatafeedTarget>();
+  o.add(buildDatafeedTarget());
+  o.add(buildDatafeedTarget());
+  return o;
+}
+
+checkUnnamed352(core.List<api.DatafeedTarget> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDatafeedTarget(o[0]);
+  checkDatafeedTarget(o[1]);
+}
+
+core.int buildCounterDatafeed = 0;
+buildDatafeed() {
+  var o = new api.Datafeed();
+  buildCounterDatafeed++;
+  if (buildCounterDatafeed < 3) {
+    o.attributeLanguage = "foo";
+    o.contentLanguage = "foo";
+    o.contentType = "foo";
+    o.fetchSchedule = buildDatafeedFetchSchedule();
+    o.fileName = "foo";
+    o.format = buildDatafeedFormat();
+    o.id = "foo";
+    o.intendedDestinations = buildUnnamed351();
+    o.kind = "foo";
+    o.name = "foo";
+    o.targetCountry = "foo";
+    o.targets = buildUnnamed352();
+  }
+  buildCounterDatafeed--;
+  return o;
+}
+
+checkDatafeed(api.Datafeed o) {
+  buildCounterDatafeed++;
+  if (buildCounterDatafeed < 3) {
+    unittest.expect(o.attributeLanguage, unittest.equals('foo'));
+    unittest.expect(o.contentLanguage, unittest.equals('foo'));
+    unittest.expect(o.contentType, unittest.equals('foo'));
+    checkDatafeedFetchSchedule(o.fetchSchedule);
+    unittest.expect(o.fileName, unittest.equals('foo'));
+    checkDatafeedFormat(o.format);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed351(o.intendedDestinations);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.targetCountry, unittest.equals('foo'));
+    checkUnnamed352(o.targets);
+  }
+  buildCounterDatafeed--;
+}
+
+core.int buildCounterDatafeedFetchSchedule = 0;
+buildDatafeedFetchSchedule() {
+  var o = new api.DatafeedFetchSchedule();
+  buildCounterDatafeedFetchSchedule++;
+  if (buildCounterDatafeedFetchSchedule < 3) {
+    o.dayOfMonth = 42;
+    o.fetchUrl = "foo";
+    o.hour = 42;
+    o.minuteOfHour = 42;
+    o.password = "foo";
+    o.paused = true;
+    o.timeZone = "foo";
+    o.username = "foo";
+    o.weekday = "foo";
+  }
+  buildCounterDatafeedFetchSchedule--;
+  return o;
+}
+
+checkDatafeedFetchSchedule(api.DatafeedFetchSchedule o) {
+  buildCounterDatafeedFetchSchedule++;
+  if (buildCounterDatafeedFetchSchedule < 3) {
+    unittest.expect(o.dayOfMonth, unittest.equals(42));
+    unittest.expect(o.fetchUrl, unittest.equals('foo'));
+    unittest.expect(o.hour, unittest.equals(42));
+    unittest.expect(o.minuteOfHour, unittest.equals(42));
+    unittest.expect(o.password, unittest.equals('foo'));
+    unittest.expect(o.paused, unittest.isTrue);
+    unittest.expect(o.timeZone, unittest.equals('foo'));
+    unittest.expect(o.username, unittest.equals('foo'));
+    unittest.expect(o.weekday, unittest.equals('foo'));
+  }
+  buildCounterDatafeedFetchSchedule--;
+}
+
+core.int buildCounterDatafeedFormat = 0;
+buildDatafeedFormat() {
+  var o = new api.DatafeedFormat();
+  buildCounterDatafeedFormat++;
+  if (buildCounterDatafeedFormat < 3) {
+    o.columnDelimiter = "foo";
+    o.fileEncoding = "foo";
+    o.quotingMode = "foo";
+  }
+  buildCounterDatafeedFormat--;
+  return o;
+}
+
+checkDatafeedFormat(api.DatafeedFormat o) {
+  buildCounterDatafeedFormat++;
+  if (buildCounterDatafeedFormat < 3) {
+    unittest.expect(o.columnDelimiter, unittest.equals('foo'));
+    unittest.expect(o.fileEncoding, unittest.equals('foo'));
+    unittest.expect(o.quotingMode, unittest.equals('foo'));
+  }
+  buildCounterDatafeedFormat--;
+}
+
+buildUnnamed353() {
+  var o = new core.List<api.DatafeedStatusError>();
+  o.add(buildDatafeedStatusError());
+  o.add(buildDatafeedStatusError());
+  return o;
+}
+
+checkUnnamed353(core.List<api.DatafeedStatusError> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDatafeedStatusError(o[0]);
+  checkDatafeedStatusError(o[1]);
+}
+
+buildUnnamed354() {
+  var o = new core.List<api.DatafeedStatusError>();
+  o.add(buildDatafeedStatusError());
+  o.add(buildDatafeedStatusError());
+  return o;
+}
+
+checkUnnamed354(core.List<api.DatafeedStatusError> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDatafeedStatusError(o[0]);
+  checkDatafeedStatusError(o[1]);
+}
+
+core.int buildCounterDatafeedStatus = 0;
+buildDatafeedStatus() {
+  var o = new api.DatafeedStatus();
+  buildCounterDatafeedStatus++;
+  if (buildCounterDatafeedStatus < 3) {
+    o.country = "foo";
+    o.datafeedId = "foo";
+    o.errors = buildUnnamed353();
+    o.itemsTotal = "foo";
+    o.itemsValid = "foo";
+    o.kind = "foo";
+    o.language = "foo";
+    o.lastUploadDate = "foo";
+    o.processingStatus = "foo";
+    o.warnings = buildUnnamed354();
+  }
+  buildCounterDatafeedStatus--;
+  return o;
+}
+
+checkDatafeedStatus(api.DatafeedStatus o) {
+  buildCounterDatafeedStatus++;
+  if (buildCounterDatafeedStatus < 3) {
+    unittest.expect(o.country, unittest.equals('foo'));
+    unittest.expect(o.datafeedId, unittest.equals('foo'));
+    checkUnnamed353(o.errors);
+    unittest.expect(o.itemsTotal, unittest.equals('foo'));
+    unittest.expect(o.itemsValid, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.language, unittest.equals('foo'));
+    unittest.expect(o.lastUploadDate, unittest.equals('foo'));
+    unittest.expect(o.processingStatus, unittest.equals('foo'));
+    checkUnnamed354(o.warnings);
+  }
+  buildCounterDatafeedStatus--;
+}
+
+buildUnnamed355() {
+  var o = new core.List<api.DatafeedStatusExample>();
+  o.add(buildDatafeedStatusExample());
+  o.add(buildDatafeedStatusExample());
+  return o;
+}
+
+checkUnnamed355(core.List<api.DatafeedStatusExample> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDatafeedStatusExample(o[0]);
+  checkDatafeedStatusExample(o[1]);
+}
+
+core.int buildCounterDatafeedStatusError = 0;
+buildDatafeedStatusError() {
+  var o = new api.DatafeedStatusError();
+  buildCounterDatafeedStatusError++;
+  if (buildCounterDatafeedStatusError < 3) {
+    o.code = "foo";
+    o.count = "foo";
+    o.examples = buildUnnamed355();
+    o.message = "foo";
+  }
+  buildCounterDatafeedStatusError--;
+  return o;
+}
+
+checkDatafeedStatusError(api.DatafeedStatusError o) {
+  buildCounterDatafeedStatusError++;
+  if (buildCounterDatafeedStatusError < 3) {
+    unittest.expect(o.code, unittest.equals('foo'));
+    unittest.expect(o.count, unittest.equals('foo'));
+    checkUnnamed355(o.examples);
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterDatafeedStatusError--;
+}
+
+core.int buildCounterDatafeedStatusExample = 0;
+buildDatafeedStatusExample() {
+  var o = new api.DatafeedStatusExample();
+  buildCounterDatafeedStatusExample++;
+  if (buildCounterDatafeedStatusExample < 3) {
+    o.itemId = "foo";
+    o.lineNumber = "foo";
+    o.value = "foo";
+  }
+  buildCounterDatafeedStatusExample--;
+  return o;
+}
+
+checkDatafeedStatusExample(api.DatafeedStatusExample o) {
+  buildCounterDatafeedStatusExample++;
+  if (buildCounterDatafeedStatusExample < 3) {
+    unittest.expect(o.itemId, unittest.equals('foo'));
+    unittest.expect(o.lineNumber, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterDatafeedStatusExample--;
+}
+
+buildUnnamed356() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed356(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed357() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed357(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterDatafeedTarget = 0;
+buildDatafeedTarget() {
+  var o = new api.DatafeedTarget();
+  buildCounterDatafeedTarget++;
+  if (buildCounterDatafeedTarget < 3) {
+    o.country = "foo";
+    o.excludedDestinations = buildUnnamed356();
+    o.includedDestinations = buildUnnamed357();
+    o.language = "foo";
+  }
+  buildCounterDatafeedTarget--;
+  return o;
+}
+
+checkDatafeedTarget(api.DatafeedTarget o) {
+  buildCounterDatafeedTarget++;
+  if (buildCounterDatafeedTarget < 3) {
+    unittest.expect(o.country, unittest.equals('foo'));
+    checkUnnamed356(o.excludedDestinations);
+    checkUnnamed357(o.includedDestinations);
+    unittest.expect(o.language, unittest.equals('foo'));
+  }
+  buildCounterDatafeedTarget--;
+}
+
+buildUnnamed358() {
+  var o = new core.List<api.DatafeedsCustomBatchRequestEntry>();
+  o.add(buildDatafeedsCustomBatchRequestEntry());
+  o.add(buildDatafeedsCustomBatchRequestEntry());
+  return o;
+}
+
+checkUnnamed358(core.List<api.DatafeedsCustomBatchRequestEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDatafeedsCustomBatchRequestEntry(o[0]);
+  checkDatafeedsCustomBatchRequestEntry(o[1]);
+}
+
+core.int buildCounterDatafeedsCustomBatchRequest = 0;
+buildDatafeedsCustomBatchRequest() {
+  var o = new api.DatafeedsCustomBatchRequest();
+  buildCounterDatafeedsCustomBatchRequest++;
+  if (buildCounterDatafeedsCustomBatchRequest < 3) {
+    o.entries = buildUnnamed358();
+  }
+  buildCounterDatafeedsCustomBatchRequest--;
+  return o;
+}
+
+checkDatafeedsCustomBatchRequest(api.DatafeedsCustomBatchRequest o) {
+  buildCounterDatafeedsCustomBatchRequest++;
+  if (buildCounterDatafeedsCustomBatchRequest < 3) {
+    checkUnnamed358(o.entries);
+  }
+  buildCounterDatafeedsCustomBatchRequest--;
+}
+
+core.int buildCounterDatafeedsCustomBatchRequestEntry = 0;
+buildDatafeedsCustomBatchRequestEntry() {
+  var o = new api.DatafeedsCustomBatchRequestEntry();
+  buildCounterDatafeedsCustomBatchRequestEntry++;
+  if (buildCounterDatafeedsCustomBatchRequestEntry < 3) {
+    o.batchId = 42;
+    o.datafeed = buildDatafeed();
+    o.datafeedId = "foo";
+    o.merchantId = "foo";
+    o.method = "foo";
+  }
+  buildCounterDatafeedsCustomBatchRequestEntry--;
+  return o;
+}
+
+checkDatafeedsCustomBatchRequestEntry(api.DatafeedsCustomBatchRequestEntry o) {
+  buildCounterDatafeedsCustomBatchRequestEntry++;
+  if (buildCounterDatafeedsCustomBatchRequestEntry < 3) {
+    unittest.expect(o.batchId, unittest.equals(42));
+    checkDatafeed(o.datafeed);
+    unittest.expect(o.datafeedId, unittest.equals('foo'));
+    unittest.expect(o.merchantId, unittest.equals('foo'));
+    unittest.expect(o.method, unittest.equals('foo'));
+  }
+  buildCounterDatafeedsCustomBatchRequestEntry--;
+}
+
+buildUnnamed359() {
+  var o = new core.List<api.DatafeedsCustomBatchResponseEntry>();
+  o.add(buildDatafeedsCustomBatchResponseEntry());
+  o.add(buildDatafeedsCustomBatchResponseEntry());
+  return o;
+}
+
+checkUnnamed359(core.List<api.DatafeedsCustomBatchResponseEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDatafeedsCustomBatchResponseEntry(o[0]);
+  checkDatafeedsCustomBatchResponseEntry(o[1]);
+}
+
+core.int buildCounterDatafeedsCustomBatchResponse = 0;
+buildDatafeedsCustomBatchResponse() {
+  var o = new api.DatafeedsCustomBatchResponse();
+  buildCounterDatafeedsCustomBatchResponse++;
+  if (buildCounterDatafeedsCustomBatchResponse < 3) {
+    o.entries = buildUnnamed359();
+    o.kind = "foo";
+  }
+  buildCounterDatafeedsCustomBatchResponse--;
+  return o;
+}
+
+checkDatafeedsCustomBatchResponse(api.DatafeedsCustomBatchResponse o) {
+  buildCounterDatafeedsCustomBatchResponse++;
+  if (buildCounterDatafeedsCustomBatchResponse < 3) {
+    checkUnnamed359(o.entries);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterDatafeedsCustomBatchResponse--;
+}
+
+core.int buildCounterDatafeedsCustomBatchResponseEntry = 0;
+buildDatafeedsCustomBatchResponseEntry() {
+  var o = new api.DatafeedsCustomBatchResponseEntry();
+  buildCounterDatafeedsCustomBatchResponseEntry++;
+  if (buildCounterDatafeedsCustomBatchResponseEntry < 3) {
+    o.batchId = 42;
+    o.datafeed = buildDatafeed();
+    o.errors = buildErrors();
+  }
+  buildCounterDatafeedsCustomBatchResponseEntry--;
+  return o;
+}
+
+checkDatafeedsCustomBatchResponseEntry(
+    api.DatafeedsCustomBatchResponseEntry o) {
+  buildCounterDatafeedsCustomBatchResponseEntry++;
+  if (buildCounterDatafeedsCustomBatchResponseEntry < 3) {
+    unittest.expect(o.batchId, unittest.equals(42));
+    checkDatafeed(o.datafeed);
+    checkErrors(o.errors);
+  }
+  buildCounterDatafeedsCustomBatchResponseEntry--;
+}
+
+buildUnnamed360() {
+  var o = new core.List<api.Datafeed>();
+  o.add(buildDatafeed());
+  o.add(buildDatafeed());
+  return o;
+}
+
+checkUnnamed360(core.List<api.Datafeed> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDatafeed(o[0]);
+  checkDatafeed(o[1]);
+}
+
+core.int buildCounterDatafeedsListResponse = 0;
+buildDatafeedsListResponse() {
+  var o = new api.DatafeedsListResponse();
+  buildCounterDatafeedsListResponse++;
+  if (buildCounterDatafeedsListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.resources = buildUnnamed360();
+  }
+  buildCounterDatafeedsListResponse--;
+  return o;
+}
+
+checkDatafeedsListResponse(api.DatafeedsListResponse o) {
+  buildCounterDatafeedsListResponse++;
+  if (buildCounterDatafeedsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed360(o.resources);
+  }
+  buildCounterDatafeedsListResponse--;
+}
+
+buildUnnamed361() {
+  var o = new core.List<api.DatafeedstatusesCustomBatchRequestEntry>();
+  o.add(buildDatafeedstatusesCustomBatchRequestEntry());
+  o.add(buildDatafeedstatusesCustomBatchRequestEntry());
+  return o;
+}
+
+checkUnnamed361(core.List<api.DatafeedstatusesCustomBatchRequestEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDatafeedstatusesCustomBatchRequestEntry(o[0]);
+  checkDatafeedstatusesCustomBatchRequestEntry(o[1]);
+}
+
+core.int buildCounterDatafeedstatusesCustomBatchRequest = 0;
+buildDatafeedstatusesCustomBatchRequest() {
+  var o = new api.DatafeedstatusesCustomBatchRequest();
+  buildCounterDatafeedstatusesCustomBatchRequest++;
+  if (buildCounterDatafeedstatusesCustomBatchRequest < 3) {
+    o.entries = buildUnnamed361();
+  }
+  buildCounterDatafeedstatusesCustomBatchRequest--;
+  return o;
+}
+
+checkDatafeedstatusesCustomBatchRequest(
+    api.DatafeedstatusesCustomBatchRequest o) {
+  buildCounterDatafeedstatusesCustomBatchRequest++;
+  if (buildCounterDatafeedstatusesCustomBatchRequest < 3) {
+    checkUnnamed361(o.entries);
+  }
+  buildCounterDatafeedstatusesCustomBatchRequest--;
+}
+
+core.int buildCounterDatafeedstatusesCustomBatchRequestEntry = 0;
+buildDatafeedstatusesCustomBatchRequestEntry() {
+  var o = new api.DatafeedstatusesCustomBatchRequestEntry();
+  buildCounterDatafeedstatusesCustomBatchRequestEntry++;
+  if (buildCounterDatafeedstatusesCustomBatchRequestEntry < 3) {
+    o.batchId = 42;
+    o.country = "foo";
+    o.datafeedId = "foo";
+    o.language = "foo";
+    o.merchantId = "foo";
+    o.method = "foo";
+  }
+  buildCounterDatafeedstatusesCustomBatchRequestEntry--;
+  return o;
+}
+
+checkDatafeedstatusesCustomBatchRequestEntry(
+    api.DatafeedstatusesCustomBatchRequestEntry o) {
+  buildCounterDatafeedstatusesCustomBatchRequestEntry++;
+  if (buildCounterDatafeedstatusesCustomBatchRequestEntry < 3) {
+    unittest.expect(o.batchId, unittest.equals(42));
+    unittest.expect(o.country, unittest.equals('foo'));
+    unittest.expect(o.datafeedId, unittest.equals('foo'));
+    unittest.expect(o.language, unittest.equals('foo'));
+    unittest.expect(o.merchantId, unittest.equals('foo'));
+    unittest.expect(o.method, unittest.equals('foo'));
+  }
+  buildCounterDatafeedstatusesCustomBatchRequestEntry--;
+}
+
+buildUnnamed362() {
+  var o = new core.List<api.DatafeedstatusesCustomBatchResponseEntry>();
+  o.add(buildDatafeedstatusesCustomBatchResponseEntry());
+  o.add(buildDatafeedstatusesCustomBatchResponseEntry());
+  return o;
+}
+
+checkUnnamed362(core.List<api.DatafeedstatusesCustomBatchResponseEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDatafeedstatusesCustomBatchResponseEntry(o[0]);
+  checkDatafeedstatusesCustomBatchResponseEntry(o[1]);
+}
+
+core.int buildCounterDatafeedstatusesCustomBatchResponse = 0;
+buildDatafeedstatusesCustomBatchResponse() {
+  var o = new api.DatafeedstatusesCustomBatchResponse();
+  buildCounterDatafeedstatusesCustomBatchResponse++;
+  if (buildCounterDatafeedstatusesCustomBatchResponse < 3) {
+    o.entries = buildUnnamed362();
+    o.kind = "foo";
+  }
+  buildCounterDatafeedstatusesCustomBatchResponse--;
+  return o;
+}
+
+checkDatafeedstatusesCustomBatchResponse(
+    api.DatafeedstatusesCustomBatchResponse o) {
+  buildCounterDatafeedstatusesCustomBatchResponse++;
+  if (buildCounterDatafeedstatusesCustomBatchResponse < 3) {
+    checkUnnamed362(o.entries);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterDatafeedstatusesCustomBatchResponse--;
+}
+
+core.int buildCounterDatafeedstatusesCustomBatchResponseEntry = 0;
+buildDatafeedstatusesCustomBatchResponseEntry() {
+  var o = new api.DatafeedstatusesCustomBatchResponseEntry();
+  buildCounterDatafeedstatusesCustomBatchResponseEntry++;
+  if (buildCounterDatafeedstatusesCustomBatchResponseEntry < 3) {
+    o.batchId = 42;
+    o.datafeedStatus = buildDatafeedStatus();
+    o.errors = buildErrors();
+  }
+  buildCounterDatafeedstatusesCustomBatchResponseEntry--;
+  return o;
+}
+
+checkDatafeedstatusesCustomBatchResponseEntry(
+    api.DatafeedstatusesCustomBatchResponseEntry o) {
+  buildCounterDatafeedstatusesCustomBatchResponseEntry++;
+  if (buildCounterDatafeedstatusesCustomBatchResponseEntry < 3) {
+    unittest.expect(o.batchId, unittest.equals(42));
+    checkDatafeedStatus(o.datafeedStatus);
+    checkErrors(o.errors);
+  }
+  buildCounterDatafeedstatusesCustomBatchResponseEntry--;
+}
+
+buildUnnamed363() {
+  var o = new core.List<api.DatafeedStatus>();
+  o.add(buildDatafeedStatus());
+  o.add(buildDatafeedStatus());
+  return o;
+}
+
+checkUnnamed363(core.List<api.DatafeedStatus> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDatafeedStatus(o[0]);
+  checkDatafeedStatus(o[1]);
+}
+
+core.int buildCounterDatafeedstatusesListResponse = 0;
+buildDatafeedstatusesListResponse() {
+  var o = new api.DatafeedstatusesListResponse();
+  buildCounterDatafeedstatusesListResponse++;
+  if (buildCounterDatafeedstatusesListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.resources = buildUnnamed363();
+  }
+  buildCounterDatafeedstatusesListResponse--;
+  return o;
+}
+
+checkDatafeedstatusesListResponse(api.DatafeedstatusesListResponse o) {
+  buildCounterDatafeedstatusesListResponse++;
+  if (buildCounterDatafeedstatusesListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed363(o.resources);
+  }
+  buildCounterDatafeedstatusesListResponse--;
+}
+
+core.int buildCounterDeliveryTime = 0;
+buildDeliveryTime() {
+  var o = new api.DeliveryTime();
+  buildCounterDeliveryTime++;
+  if (buildCounterDeliveryTime < 3) {
+    o.maxTransitTimeInDays = 42;
+    o.minTransitTimeInDays = 42;
+  }
+  buildCounterDeliveryTime--;
+  return o;
+}
+
+checkDeliveryTime(api.DeliveryTime o) {
+  buildCounterDeliveryTime++;
+  if (buildCounterDeliveryTime < 3) {
+    unittest.expect(o.maxTransitTimeInDays, unittest.equals(42));
+    unittest.expect(o.minTransitTimeInDays, unittest.equals(42));
+  }
+  buildCounterDeliveryTime--;
+}
+
+core.int buildCounterError = 0;
+buildError() {
+  var o = new api.Error();
+  buildCounterError++;
+  if (buildCounterError < 3) {
+    o.domain = "foo";
+    o.message = "foo";
+    o.reason = "foo";
+  }
+  buildCounterError--;
+  return o;
+}
+
+checkError(api.Error o) {
+  buildCounterError++;
+  if (buildCounterError < 3) {
+    unittest.expect(o.domain, unittest.equals('foo'));
+    unittest.expect(o.message, unittest.equals('foo'));
+    unittest.expect(o.reason, unittest.equals('foo'));
+  }
+  buildCounterError--;
+}
+
+buildUnnamed364() {
+  var o = new core.List<api.Error>();
+  o.add(buildError());
+  o.add(buildError());
+  return o;
+}
+
+checkUnnamed364(core.List<api.Error> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkError(o[0]);
+  checkError(o[1]);
+}
+
+core.int buildCounterErrors = 0;
+buildErrors() {
+  var o = new api.Errors();
+  buildCounterErrors++;
+  if (buildCounterErrors < 3) {
+    o.code = 42;
+    o.errors = buildUnnamed364();
+    o.message = "foo";
+  }
+  buildCounterErrors--;
+  return o;
+}
+
+checkErrors(api.Errors o) {
+  buildCounterErrors++;
+  if (buildCounterErrors < 3) {
+    unittest.expect(o.code, unittest.equals(42));
+    checkUnnamed364(o.errors);
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterErrors--;
+}
+
+buildUnnamed365() {
+  var o = new core.List<api.LocationIdSet>();
+  o.add(buildLocationIdSet());
+  o.add(buildLocationIdSet());
+  return o;
+}
+
+checkUnnamed365(core.List<api.LocationIdSet> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLocationIdSet(o[0]);
+  checkLocationIdSet(o[1]);
+}
+
+buildUnnamed366() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed366(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed367() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed367(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed368() {
+  var o = new core.List<api.Price>();
+  o.add(buildPrice());
+  o.add(buildPrice());
+  return o;
+}
+
+checkUnnamed368(core.List<api.Price> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPrice(o[0]);
+  checkPrice(o[1]);
+}
+
+buildUnnamed369() {
+  var o = new core.List<api.Weight>();
+  o.add(buildWeight());
+  o.add(buildWeight());
+  return o;
+}
+
+checkUnnamed369(core.List<api.Weight> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkWeight(o[0]);
+  checkWeight(o[1]);
+}
+
+core.int buildCounterHeaders = 0;
+buildHeaders() {
+  var o = new api.Headers();
+  buildCounterHeaders++;
+  if (buildCounterHeaders < 3) {
+    o.locations = buildUnnamed365();
+    o.numberOfItems = buildUnnamed366();
+    o.postalCodeGroupNames = buildUnnamed367();
+    o.prices = buildUnnamed368();
+    o.weights = buildUnnamed369();
+  }
+  buildCounterHeaders--;
+  return o;
+}
+
+checkHeaders(api.Headers o) {
+  buildCounterHeaders++;
+  if (buildCounterHeaders < 3) {
+    checkUnnamed365(o.locations);
+    checkUnnamed366(o.numberOfItems);
+    checkUnnamed367(o.postalCodeGroupNames);
+    checkUnnamed368(o.prices);
+    checkUnnamed369(o.weights);
+  }
+  buildCounterHeaders--;
+}
+
+core.int buildCounterInstallment = 0;
+buildInstallment() {
+  var o = new api.Installment();
+  buildCounterInstallment++;
+  if (buildCounterInstallment < 3) {
+    o.amount = buildPrice();
+    o.months = "foo";
+  }
+  buildCounterInstallment--;
+  return o;
+}
+
+checkInstallment(api.Installment o) {
+  buildCounterInstallment++;
+  if (buildCounterInstallment < 3) {
+    checkPrice(o.amount);
+    unittest.expect(o.months, unittest.equals('foo'));
+  }
+  buildCounterInstallment--;
+}
+
+core.int buildCounterInventory = 0;
+buildInventory() {
+  var o = new api.Inventory();
+  buildCounterInventory++;
+  if (buildCounterInventory < 3) {
+    o.availability = "foo";
+    o.installment = buildInstallment();
+    o.kind = "foo";
+    o.loyaltyPoints = buildLoyaltyPoints();
+    o.pickup = buildInventoryPickup();
+    o.price = buildPrice();
+    o.quantity = 42;
+    o.salePrice = buildPrice();
+    o.salePriceEffectiveDate = "foo";
+    o.sellOnGoogleQuantity = 42;
+  }
+  buildCounterInventory--;
+  return o;
+}
+
+checkInventory(api.Inventory o) {
+  buildCounterInventory++;
+  if (buildCounterInventory < 3) {
+    unittest.expect(o.availability, unittest.equals('foo'));
+    checkInstallment(o.installment);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkLoyaltyPoints(o.loyaltyPoints);
+    checkInventoryPickup(o.pickup);
+    checkPrice(o.price);
+    unittest.expect(o.quantity, unittest.equals(42));
+    checkPrice(o.salePrice);
+    unittest.expect(o.salePriceEffectiveDate, unittest.equals('foo'));
+    unittest.expect(o.sellOnGoogleQuantity, unittest.equals(42));
+  }
+  buildCounterInventory--;
+}
+
+buildUnnamed370() {
+  var o = new core.List<api.InventoryCustomBatchRequestEntry>();
+  o.add(buildInventoryCustomBatchRequestEntry());
+  o.add(buildInventoryCustomBatchRequestEntry());
+  return o;
+}
+
+checkUnnamed370(core.List<api.InventoryCustomBatchRequestEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInventoryCustomBatchRequestEntry(o[0]);
+  checkInventoryCustomBatchRequestEntry(o[1]);
+}
+
+core.int buildCounterInventoryCustomBatchRequest = 0;
+buildInventoryCustomBatchRequest() {
+  var o = new api.InventoryCustomBatchRequest();
+  buildCounterInventoryCustomBatchRequest++;
+  if (buildCounterInventoryCustomBatchRequest < 3) {
+    o.entries = buildUnnamed370();
+  }
+  buildCounterInventoryCustomBatchRequest--;
+  return o;
+}
+
+checkInventoryCustomBatchRequest(api.InventoryCustomBatchRequest o) {
+  buildCounterInventoryCustomBatchRequest++;
+  if (buildCounterInventoryCustomBatchRequest < 3) {
+    checkUnnamed370(o.entries);
+  }
+  buildCounterInventoryCustomBatchRequest--;
+}
+
+core.int buildCounterInventoryCustomBatchRequestEntry = 0;
+buildInventoryCustomBatchRequestEntry() {
+  var o = new api.InventoryCustomBatchRequestEntry();
+  buildCounterInventoryCustomBatchRequestEntry++;
+  if (buildCounterInventoryCustomBatchRequestEntry < 3) {
+    o.batchId = 42;
+    o.inventory = buildInventory();
+    o.merchantId = "foo";
+    o.productId = "foo";
+    o.storeCode = "foo";
+  }
+  buildCounterInventoryCustomBatchRequestEntry--;
+  return o;
+}
+
+checkInventoryCustomBatchRequestEntry(api.InventoryCustomBatchRequestEntry o) {
+  buildCounterInventoryCustomBatchRequestEntry++;
+  if (buildCounterInventoryCustomBatchRequestEntry < 3) {
+    unittest.expect(o.batchId, unittest.equals(42));
+    checkInventory(o.inventory);
+    unittest.expect(o.merchantId, unittest.equals('foo'));
+    unittest.expect(o.productId, unittest.equals('foo'));
+    unittest.expect(o.storeCode, unittest.equals('foo'));
+  }
+  buildCounterInventoryCustomBatchRequestEntry--;
+}
+
+buildUnnamed371() {
+  var o = new core.List<api.InventoryCustomBatchResponseEntry>();
+  o.add(buildInventoryCustomBatchResponseEntry());
+  o.add(buildInventoryCustomBatchResponseEntry());
+  return o;
+}
+
+checkUnnamed371(core.List<api.InventoryCustomBatchResponseEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInventoryCustomBatchResponseEntry(o[0]);
+  checkInventoryCustomBatchResponseEntry(o[1]);
+}
+
+core.int buildCounterInventoryCustomBatchResponse = 0;
+buildInventoryCustomBatchResponse() {
+  var o = new api.InventoryCustomBatchResponse();
+  buildCounterInventoryCustomBatchResponse++;
+  if (buildCounterInventoryCustomBatchResponse < 3) {
+    o.entries = buildUnnamed371();
+    o.kind = "foo";
+  }
+  buildCounterInventoryCustomBatchResponse--;
+  return o;
+}
+
+checkInventoryCustomBatchResponse(api.InventoryCustomBatchResponse o) {
+  buildCounterInventoryCustomBatchResponse++;
+  if (buildCounterInventoryCustomBatchResponse < 3) {
+    checkUnnamed371(o.entries);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterInventoryCustomBatchResponse--;
+}
+
+core.int buildCounterInventoryCustomBatchResponseEntry = 0;
+buildInventoryCustomBatchResponseEntry() {
+  var o = new api.InventoryCustomBatchResponseEntry();
+  buildCounterInventoryCustomBatchResponseEntry++;
+  if (buildCounterInventoryCustomBatchResponseEntry < 3) {
+    o.batchId = 42;
+    o.errors = buildErrors();
+    o.kind = "foo";
+  }
+  buildCounterInventoryCustomBatchResponseEntry--;
+  return o;
+}
+
+checkInventoryCustomBatchResponseEntry(
+    api.InventoryCustomBatchResponseEntry o) {
+  buildCounterInventoryCustomBatchResponseEntry++;
+  if (buildCounterInventoryCustomBatchResponseEntry < 3) {
+    unittest.expect(o.batchId, unittest.equals(42));
+    checkErrors(o.errors);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterInventoryCustomBatchResponseEntry--;
+}
+
+core.int buildCounterInventoryPickup = 0;
+buildInventoryPickup() {
+  var o = new api.InventoryPickup();
+  buildCounterInventoryPickup++;
+  if (buildCounterInventoryPickup < 3) {
+    o.pickupMethod = "foo";
+    o.pickupSla = "foo";
+  }
+  buildCounterInventoryPickup--;
+  return o;
+}
+
+checkInventoryPickup(api.InventoryPickup o) {
+  buildCounterInventoryPickup++;
+  if (buildCounterInventoryPickup < 3) {
+    unittest.expect(o.pickupMethod, unittest.equals('foo'));
+    unittest.expect(o.pickupSla, unittest.equals('foo'));
+  }
+  buildCounterInventoryPickup--;
+}
+
+core.int buildCounterInventorySetRequest = 0;
+buildInventorySetRequest() {
+  var o = new api.InventorySetRequest();
+  buildCounterInventorySetRequest++;
+  if (buildCounterInventorySetRequest < 3) {
+    o.availability = "foo";
+    o.installment = buildInstallment();
+    o.loyaltyPoints = buildLoyaltyPoints();
+    o.pickup = buildInventoryPickup();
+    o.price = buildPrice();
+    o.quantity = 42;
+    o.salePrice = buildPrice();
+    o.salePriceEffectiveDate = "foo";
+    o.sellOnGoogleQuantity = 42;
+  }
+  buildCounterInventorySetRequest--;
+  return o;
+}
+
+checkInventorySetRequest(api.InventorySetRequest o) {
+  buildCounterInventorySetRequest++;
+  if (buildCounterInventorySetRequest < 3) {
+    unittest.expect(o.availability, unittest.equals('foo'));
+    checkInstallment(o.installment);
+    checkLoyaltyPoints(o.loyaltyPoints);
+    checkInventoryPickup(o.pickup);
+    checkPrice(o.price);
+    unittest.expect(o.quantity, unittest.equals(42));
+    checkPrice(o.salePrice);
+    unittest.expect(o.salePriceEffectiveDate, unittest.equals('foo'));
+    unittest.expect(o.sellOnGoogleQuantity, unittest.equals(42));
+  }
+  buildCounterInventorySetRequest--;
+}
+
+core.int buildCounterInventorySetResponse = 0;
+buildInventorySetResponse() {
+  var o = new api.InventorySetResponse();
+  buildCounterInventorySetResponse++;
+  if (buildCounterInventorySetResponse < 3) {
+    o.kind = "foo";
+  }
+  buildCounterInventorySetResponse--;
+  return o;
+}
+
+checkInventorySetResponse(api.InventorySetResponse o) {
+  buildCounterInventorySetResponse++;
+  if (buildCounterInventorySetResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterInventorySetResponse--;
+}
+
+buildUnnamed372() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed372(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterLocationIdSet = 0;
+buildLocationIdSet() {
+  var o = new api.LocationIdSet();
+  buildCounterLocationIdSet++;
+  if (buildCounterLocationIdSet < 3) {
+    o.locationIds = buildUnnamed372();
+  }
+  buildCounterLocationIdSet--;
+  return o;
+}
+
+checkLocationIdSet(api.LocationIdSet o) {
+  buildCounterLocationIdSet++;
+  if (buildCounterLocationIdSet < 3) {
+    checkUnnamed372(o.locationIds);
+  }
+  buildCounterLocationIdSet--;
+}
+
+core.int buildCounterLoyaltyPoints = 0;
+buildLoyaltyPoints() {
+  var o = new api.LoyaltyPoints();
+  buildCounterLoyaltyPoints++;
+  if (buildCounterLoyaltyPoints < 3) {
+    o.name = "foo";
+    o.pointsValue = "foo";
+    o.ratio = 42.0;
+  }
+  buildCounterLoyaltyPoints--;
+  return o;
+}
+
+checkLoyaltyPoints(api.LoyaltyPoints o) {
+  buildCounterLoyaltyPoints++;
+  if (buildCounterLoyaltyPoints < 3) {
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.pointsValue, unittest.equals('foo'));
+    unittest.expect(o.ratio, unittest.equals(42.0));
+  }
+  buildCounterLoyaltyPoints--;
+}
+
+buildUnnamed373() {
+  var o = new core.List<api.OrderLineItem>();
+  o.add(buildOrderLineItem());
+  o.add(buildOrderLineItem());
+  return o;
+}
+
+checkUnnamed373(core.List<api.OrderLineItem> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderLineItem(o[0]);
+  checkOrderLineItem(o[1]);
+}
+
+buildUnnamed374() {
+  var o = new core.List<api.OrderPromotion>();
+  o.add(buildOrderPromotion());
+  o.add(buildOrderPromotion());
+  return o;
+}
+
+checkUnnamed374(core.List<api.OrderPromotion> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderPromotion(o[0]);
+  checkOrderPromotion(o[1]);
+}
+
+buildUnnamed375() {
+  var o = new core.List<api.OrderRefund>();
+  o.add(buildOrderRefund());
+  o.add(buildOrderRefund());
+  return o;
+}
+
+checkUnnamed375(core.List<api.OrderRefund> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderRefund(o[0]);
+  checkOrderRefund(o[1]);
+}
+
+buildUnnamed376() {
+  var o = new core.List<api.OrderShipment>();
+  o.add(buildOrderShipment());
+  o.add(buildOrderShipment());
+  return o;
+}
+
+checkUnnamed376(core.List<api.OrderShipment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderShipment(o[0]);
+  checkOrderShipment(o[1]);
+}
+
+core.int buildCounterOrder = 0;
+buildOrder() {
+  var o = new api.Order();
+  buildCounterOrder++;
+  if (buildCounterOrder < 3) {
+    o.acknowledged = true;
+    o.channelType = "foo";
+    o.customer = buildOrderCustomer();
+    o.deliveryDetails = buildOrderDeliveryDetails();
+    o.id = "foo";
+    o.kind = "foo";
+    o.lineItems = buildUnnamed373();
+    o.merchantId = "foo";
+    o.merchantOrderId = "foo";
+    o.netAmount = buildPrice();
+    o.paymentMethod = buildOrderPaymentMethod();
+    o.paymentStatus = "foo";
+    o.placedDate = "foo";
+    o.promotions = buildUnnamed374();
+    o.refunds = buildUnnamed375();
+    o.shipments = buildUnnamed376();
+    o.shippingCost = buildPrice();
+    o.shippingCostTax = buildPrice();
+    o.shippingOption = "foo";
+    o.status = "foo";
+  }
+  buildCounterOrder--;
+  return o;
+}
+
+checkOrder(api.Order o) {
+  buildCounterOrder++;
+  if (buildCounterOrder < 3) {
+    unittest.expect(o.acknowledged, unittest.isTrue);
+    unittest.expect(o.channelType, unittest.equals('foo'));
+    checkOrderCustomer(o.customer);
+    checkOrderDeliveryDetails(o.deliveryDetails);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed373(o.lineItems);
+    unittest.expect(o.merchantId, unittest.equals('foo'));
+    unittest.expect(o.merchantOrderId, unittest.equals('foo'));
+    checkPrice(o.netAmount);
+    checkOrderPaymentMethod(o.paymentMethod);
+    unittest.expect(o.paymentStatus, unittest.equals('foo'));
+    unittest.expect(o.placedDate, unittest.equals('foo'));
+    checkUnnamed374(o.promotions);
+    checkUnnamed375(o.refunds);
+    checkUnnamed376(o.shipments);
+    checkPrice(o.shippingCost);
+    checkPrice(o.shippingCostTax);
+    unittest.expect(o.shippingOption, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+  }
+  buildCounterOrder--;
+}
+
+buildUnnamed377() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed377(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed378() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed378(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterOrderAddress = 0;
+buildOrderAddress() {
+  var o = new api.OrderAddress();
+  buildCounterOrderAddress++;
+  if (buildCounterOrderAddress < 3) {
+    o.country = "foo";
+    o.fullAddress = buildUnnamed377();
+    o.isPostOfficeBox = true;
+    o.locality = "foo";
+    o.postalCode = "foo";
+    o.recipientName = "foo";
+    o.region = "foo";
+    o.streetAddress = buildUnnamed378();
+  }
+  buildCounterOrderAddress--;
+  return o;
+}
+
+checkOrderAddress(api.OrderAddress o) {
+  buildCounterOrderAddress++;
+  if (buildCounterOrderAddress < 3) {
+    unittest.expect(o.country, unittest.equals('foo'));
+    checkUnnamed377(o.fullAddress);
+    unittest.expect(o.isPostOfficeBox, unittest.isTrue);
+    unittest.expect(o.locality, unittest.equals('foo'));
+    unittest.expect(o.postalCode, unittest.equals('foo'));
+    unittest.expect(o.recipientName, unittest.equals('foo'));
+    unittest.expect(o.region, unittest.equals('foo'));
+    checkUnnamed378(o.streetAddress);
+  }
+  buildCounterOrderAddress--;
+}
+
+core.int buildCounterOrderCancellation = 0;
+buildOrderCancellation() {
+  var o = new api.OrderCancellation();
+  buildCounterOrderCancellation++;
+  if (buildCounterOrderCancellation < 3) {
+    o.actor = "foo";
+    o.creationDate = "foo";
+    o.quantity = 42;
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrderCancellation--;
+  return o;
+}
+
+checkOrderCancellation(api.OrderCancellation o) {
+  buildCounterOrderCancellation++;
+  if (buildCounterOrderCancellation < 3) {
+    unittest.expect(o.actor, unittest.equals('foo'));
+    unittest.expect(o.creationDate, unittest.equals('foo'));
+    unittest.expect(o.quantity, unittest.equals(42));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrderCancellation--;
+}
+
+core.int buildCounterOrderCustomer = 0;
+buildOrderCustomer() {
+  var o = new api.OrderCustomer();
+  buildCounterOrderCustomer++;
+  if (buildCounterOrderCustomer < 3) {
+    o.email = "foo";
+    o.explicitMarketingPreference = true;
+    o.fullName = "foo";
+  }
+  buildCounterOrderCustomer--;
+  return o;
+}
+
+checkOrderCustomer(api.OrderCustomer o) {
+  buildCounterOrderCustomer++;
+  if (buildCounterOrderCustomer < 3) {
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.explicitMarketingPreference, unittest.isTrue);
+    unittest.expect(o.fullName, unittest.equals('foo'));
+  }
+  buildCounterOrderCustomer--;
+}
+
+core.int buildCounterOrderDeliveryDetails = 0;
+buildOrderDeliveryDetails() {
+  var o = new api.OrderDeliveryDetails();
+  buildCounterOrderDeliveryDetails++;
+  if (buildCounterOrderDeliveryDetails < 3) {
+    o.address = buildOrderAddress();
+    o.phoneNumber = "foo";
+  }
+  buildCounterOrderDeliveryDetails--;
+  return o;
+}
+
+checkOrderDeliveryDetails(api.OrderDeliveryDetails o) {
+  buildCounterOrderDeliveryDetails++;
+  if (buildCounterOrderDeliveryDetails < 3) {
+    checkOrderAddress(o.address);
+    unittest.expect(o.phoneNumber, unittest.equals('foo'));
+  }
+  buildCounterOrderDeliveryDetails--;
+}
+
+buildUnnamed379() {
+  var o = new core.List<api.OrderCancellation>();
+  o.add(buildOrderCancellation());
+  o.add(buildOrderCancellation());
+  return o;
+}
+
+checkUnnamed379(core.List<api.OrderCancellation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderCancellation(o[0]);
+  checkOrderCancellation(o[1]);
+}
+
+buildUnnamed380() {
+  var o = new core.List<api.OrderReturn>();
+  o.add(buildOrderReturn());
+  o.add(buildOrderReturn());
+  return o;
+}
+
+checkUnnamed380(core.List<api.OrderReturn> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderReturn(o[0]);
+  checkOrderReturn(o[1]);
+}
+
+core.int buildCounterOrderLineItem = 0;
+buildOrderLineItem() {
+  var o = new api.OrderLineItem();
+  buildCounterOrderLineItem++;
+  if (buildCounterOrderLineItem < 3) {
+    o.cancellations = buildUnnamed379();
+    o.channelType = "foo";
+    o.id = "foo";
+    o.price = buildPrice();
+    o.product = buildOrderLineItemProduct();
+    o.quantityCanceled = 42;
+    o.quantityDelivered = 42;
+    o.quantityOrdered = 42;
+    o.quantityPending = 42;
+    o.quantityReturned = 42;
+    o.quantityShipped = 42;
+    o.returnInfo = buildOrderLineItemReturnInfo();
+    o.returns = buildUnnamed380();
+    o.shippingDetails = buildOrderLineItemShippingDetails();
+    o.tax = buildPrice();
+  }
+  buildCounterOrderLineItem--;
+  return o;
+}
+
+checkOrderLineItem(api.OrderLineItem o) {
+  buildCounterOrderLineItem++;
+  if (buildCounterOrderLineItem < 3) {
+    checkUnnamed379(o.cancellations);
+    unittest.expect(o.channelType, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkPrice(o.price);
+    checkOrderLineItemProduct(o.product);
+    unittest.expect(o.quantityCanceled, unittest.equals(42));
+    unittest.expect(o.quantityDelivered, unittest.equals(42));
+    unittest.expect(o.quantityOrdered, unittest.equals(42));
+    unittest.expect(o.quantityPending, unittest.equals(42));
+    unittest.expect(o.quantityReturned, unittest.equals(42));
+    unittest.expect(o.quantityShipped, unittest.equals(42));
+    checkOrderLineItemReturnInfo(o.returnInfo);
+    checkUnnamed380(o.returns);
+    checkOrderLineItemShippingDetails(o.shippingDetails);
+    checkPrice(o.tax);
+  }
+  buildCounterOrderLineItem--;
+}
+
+buildUnnamed381() {
+  var o = new core.List<api.OrderLineItemProductVariantAttribute>();
+  o.add(buildOrderLineItemProductVariantAttribute());
+  o.add(buildOrderLineItemProductVariantAttribute());
+  return o;
+}
+
+checkUnnamed381(core.List<api.OrderLineItemProductVariantAttribute> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderLineItemProductVariantAttribute(o[0]);
+  checkOrderLineItemProductVariantAttribute(o[1]);
+}
+
+core.int buildCounterOrderLineItemProduct = 0;
+buildOrderLineItemProduct() {
+  var o = new api.OrderLineItemProduct();
+  buildCounterOrderLineItemProduct++;
+  if (buildCounterOrderLineItemProduct < 3) {
+    o.brand = "foo";
+    o.channel = "foo";
+    o.condition = "foo";
+    o.contentLanguage = "foo";
+    o.gtin = "foo";
+    o.id = "foo";
+    o.imageLink = "foo";
+    o.itemGroupId = "foo";
+    o.mpn = "foo";
+    o.offerId = "foo";
+    o.price = buildPrice();
+    o.shownImage = "foo";
+    o.targetCountry = "foo";
+    o.title = "foo";
+    o.variantAttributes = buildUnnamed381();
+  }
+  buildCounterOrderLineItemProduct--;
+  return o;
+}
+
+checkOrderLineItemProduct(api.OrderLineItemProduct o) {
+  buildCounterOrderLineItemProduct++;
+  if (buildCounterOrderLineItemProduct < 3) {
+    unittest.expect(o.brand, unittest.equals('foo'));
+    unittest.expect(o.channel, unittest.equals('foo'));
+    unittest.expect(o.condition, unittest.equals('foo'));
+    unittest.expect(o.contentLanguage, unittest.equals('foo'));
+    unittest.expect(o.gtin, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.imageLink, unittest.equals('foo'));
+    unittest.expect(o.itemGroupId, unittest.equals('foo'));
+    unittest.expect(o.mpn, unittest.equals('foo'));
+    unittest.expect(o.offerId, unittest.equals('foo'));
+    checkPrice(o.price);
+    unittest.expect(o.shownImage, unittest.equals('foo'));
+    unittest.expect(o.targetCountry, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    checkUnnamed381(o.variantAttributes);
+  }
+  buildCounterOrderLineItemProduct--;
+}
+
+core.int buildCounterOrderLineItemProductVariantAttribute = 0;
+buildOrderLineItemProductVariantAttribute() {
+  var o = new api.OrderLineItemProductVariantAttribute();
+  buildCounterOrderLineItemProductVariantAttribute++;
+  if (buildCounterOrderLineItemProductVariantAttribute < 3) {
+    o.dimension = "foo";
+    o.value = "foo";
+  }
+  buildCounterOrderLineItemProductVariantAttribute--;
+  return o;
+}
+
+checkOrderLineItemProductVariantAttribute(
+    api.OrderLineItemProductVariantAttribute o) {
+  buildCounterOrderLineItemProductVariantAttribute++;
+  if (buildCounterOrderLineItemProductVariantAttribute < 3) {
+    unittest.expect(o.dimension, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterOrderLineItemProductVariantAttribute--;
+}
+
+core.int buildCounterOrderLineItemReturnInfo = 0;
+buildOrderLineItemReturnInfo() {
+  var o = new api.OrderLineItemReturnInfo();
+  buildCounterOrderLineItemReturnInfo++;
+  if (buildCounterOrderLineItemReturnInfo < 3) {
+    o.daysToReturn = 42;
+    o.isReturnable = true;
+    o.policyUrl = "foo";
+  }
+  buildCounterOrderLineItemReturnInfo--;
+  return o;
+}
+
+checkOrderLineItemReturnInfo(api.OrderLineItemReturnInfo o) {
+  buildCounterOrderLineItemReturnInfo++;
+  if (buildCounterOrderLineItemReturnInfo < 3) {
+    unittest.expect(o.daysToReturn, unittest.equals(42));
+    unittest.expect(o.isReturnable, unittest.isTrue);
+    unittest.expect(o.policyUrl, unittest.equals('foo'));
+  }
+  buildCounterOrderLineItemReturnInfo--;
+}
+
+core.int buildCounterOrderLineItemShippingDetails = 0;
+buildOrderLineItemShippingDetails() {
+  var o = new api.OrderLineItemShippingDetails();
+  buildCounterOrderLineItemShippingDetails++;
+  if (buildCounterOrderLineItemShippingDetails < 3) {
+    o.deliverByDate = "foo";
+    o.method = buildOrderLineItemShippingDetailsMethod();
+    o.shipByDate = "foo";
+  }
+  buildCounterOrderLineItemShippingDetails--;
+  return o;
+}
+
+checkOrderLineItemShippingDetails(api.OrderLineItemShippingDetails o) {
+  buildCounterOrderLineItemShippingDetails++;
+  if (buildCounterOrderLineItemShippingDetails < 3) {
+    unittest.expect(o.deliverByDate, unittest.equals('foo'));
+    checkOrderLineItemShippingDetailsMethod(o.method);
+    unittest.expect(o.shipByDate, unittest.equals('foo'));
+  }
+  buildCounterOrderLineItemShippingDetails--;
+}
+
+core.int buildCounterOrderLineItemShippingDetailsMethod = 0;
+buildOrderLineItemShippingDetailsMethod() {
+  var o = new api.OrderLineItemShippingDetailsMethod();
+  buildCounterOrderLineItemShippingDetailsMethod++;
+  if (buildCounterOrderLineItemShippingDetailsMethod < 3) {
+    o.carrier = "foo";
+    o.maxDaysInTransit = 42;
+    o.methodName = "foo";
+    o.minDaysInTransit = 42;
+  }
+  buildCounterOrderLineItemShippingDetailsMethod--;
+  return o;
+}
+
+checkOrderLineItemShippingDetailsMethod(
+    api.OrderLineItemShippingDetailsMethod o) {
+  buildCounterOrderLineItemShippingDetailsMethod++;
+  if (buildCounterOrderLineItemShippingDetailsMethod < 3) {
+    unittest.expect(o.carrier, unittest.equals('foo'));
+    unittest.expect(o.maxDaysInTransit, unittest.equals(42));
+    unittest.expect(o.methodName, unittest.equals('foo'));
+    unittest.expect(o.minDaysInTransit, unittest.equals(42));
+  }
+  buildCounterOrderLineItemShippingDetailsMethod--;
+}
+
+core.int buildCounterOrderPaymentMethod = 0;
+buildOrderPaymentMethod() {
+  var o = new api.OrderPaymentMethod();
+  buildCounterOrderPaymentMethod++;
+  if (buildCounterOrderPaymentMethod < 3) {
+    o.billingAddress = buildOrderAddress();
+    o.expirationMonth = 42;
+    o.expirationYear = 42;
+    o.lastFourDigits = "foo";
+    o.phoneNumber = "foo";
+    o.type = "foo";
+  }
+  buildCounterOrderPaymentMethod--;
+  return o;
+}
+
+checkOrderPaymentMethod(api.OrderPaymentMethod o) {
+  buildCounterOrderPaymentMethod++;
+  if (buildCounterOrderPaymentMethod < 3) {
+    checkOrderAddress(o.billingAddress);
+    unittest.expect(o.expirationMonth, unittest.equals(42));
+    unittest.expect(o.expirationYear, unittest.equals(42));
+    unittest.expect(o.lastFourDigits, unittest.equals('foo'));
+    unittest.expect(o.phoneNumber, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterOrderPaymentMethod--;
+}
+
+buildUnnamed382() {
+  var o = new core.List<api.OrderPromotionBenefit>();
+  o.add(buildOrderPromotionBenefit());
+  o.add(buildOrderPromotionBenefit());
+  return o;
+}
+
+checkUnnamed382(core.List<api.OrderPromotionBenefit> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderPromotionBenefit(o[0]);
+  checkOrderPromotionBenefit(o[1]);
+}
+
+core.int buildCounterOrderPromotion = 0;
+buildOrderPromotion() {
+  var o = new api.OrderPromotion();
+  buildCounterOrderPromotion++;
+  if (buildCounterOrderPromotion < 3) {
+    o.benefits = buildUnnamed382();
+    o.effectiveDates = "foo";
+    o.genericRedemptionCode = "foo";
+    o.id = "foo";
+    o.longTitle = "foo";
+    o.productApplicability = "foo";
+    o.redemptionChannel = "foo";
+  }
+  buildCounterOrderPromotion--;
+  return o;
+}
+
+checkOrderPromotion(api.OrderPromotion o) {
+  buildCounterOrderPromotion++;
+  if (buildCounterOrderPromotion < 3) {
+    checkUnnamed382(o.benefits);
+    unittest.expect(o.effectiveDates, unittest.equals('foo'));
+    unittest.expect(o.genericRedemptionCode, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.longTitle, unittest.equals('foo'));
+    unittest.expect(o.productApplicability, unittest.equals('foo'));
+    unittest.expect(o.redemptionChannel, unittest.equals('foo'));
+  }
+  buildCounterOrderPromotion--;
+}
+
+buildUnnamed383() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed383(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterOrderPromotionBenefit = 0;
+buildOrderPromotionBenefit() {
+  var o = new api.OrderPromotionBenefit();
+  buildCounterOrderPromotionBenefit++;
+  if (buildCounterOrderPromotionBenefit < 3) {
+    o.discount = buildPrice();
+    o.offerIds = buildUnnamed383();
+    o.subType = "foo";
+    o.taxImpact = buildPrice();
+    o.type = "foo";
+  }
+  buildCounterOrderPromotionBenefit--;
+  return o;
+}
+
+checkOrderPromotionBenefit(api.OrderPromotionBenefit o) {
+  buildCounterOrderPromotionBenefit++;
+  if (buildCounterOrderPromotionBenefit < 3) {
+    checkPrice(o.discount);
+    checkUnnamed383(o.offerIds);
+    unittest.expect(o.subType, unittest.equals('foo'));
+    checkPrice(o.taxImpact);
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterOrderPromotionBenefit--;
+}
+
+core.int buildCounterOrderRefund = 0;
+buildOrderRefund() {
+  var o = new api.OrderRefund();
+  buildCounterOrderRefund++;
+  if (buildCounterOrderRefund < 3) {
+    o.actor = "foo";
+    o.amount = buildPrice();
+    o.creationDate = "foo";
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrderRefund--;
+  return o;
+}
+
+checkOrderRefund(api.OrderRefund o) {
+  buildCounterOrderRefund++;
+  if (buildCounterOrderRefund < 3) {
+    unittest.expect(o.actor, unittest.equals('foo'));
+    checkPrice(o.amount);
+    unittest.expect(o.creationDate, unittest.equals('foo'));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrderRefund--;
+}
+
+core.int buildCounterOrderReturn = 0;
+buildOrderReturn() {
+  var o = new api.OrderReturn();
+  buildCounterOrderReturn++;
+  if (buildCounterOrderReturn < 3) {
+    o.actor = "foo";
+    o.creationDate = "foo";
+    o.quantity = 42;
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrderReturn--;
+  return o;
+}
+
+checkOrderReturn(api.OrderReturn o) {
+  buildCounterOrderReturn++;
+  if (buildCounterOrderReturn < 3) {
+    unittest.expect(o.actor, unittest.equals('foo'));
+    unittest.expect(o.creationDate, unittest.equals('foo'));
+    unittest.expect(o.quantity, unittest.equals(42));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrderReturn--;
+}
+
+buildUnnamed384() {
+  var o = new core.List<api.OrderShipmentLineItemShipment>();
+  o.add(buildOrderShipmentLineItemShipment());
+  o.add(buildOrderShipmentLineItemShipment());
+  return o;
+}
+
+checkUnnamed384(core.List<api.OrderShipmentLineItemShipment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderShipmentLineItemShipment(o[0]);
+  checkOrderShipmentLineItemShipment(o[1]);
+}
+
+core.int buildCounterOrderShipment = 0;
+buildOrderShipment() {
+  var o = new api.OrderShipment();
+  buildCounterOrderShipment++;
+  if (buildCounterOrderShipment < 3) {
+    o.carrier = "foo";
+    o.creationDate = "foo";
+    o.deliveryDate = "foo";
+    o.id = "foo";
+    o.lineItems = buildUnnamed384();
+    o.status = "foo";
+    o.trackingId = "foo";
+  }
+  buildCounterOrderShipment--;
+  return o;
+}
+
+checkOrderShipment(api.OrderShipment o) {
+  buildCounterOrderShipment++;
+  if (buildCounterOrderShipment < 3) {
+    unittest.expect(o.carrier, unittest.equals('foo'));
+    unittest.expect(o.creationDate, unittest.equals('foo'));
+    unittest.expect(o.deliveryDate, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed384(o.lineItems);
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(o.trackingId, unittest.equals('foo'));
+  }
+  buildCounterOrderShipment--;
+}
+
+core.int buildCounterOrderShipmentLineItemShipment = 0;
+buildOrderShipmentLineItemShipment() {
+  var o = new api.OrderShipmentLineItemShipment();
+  buildCounterOrderShipmentLineItemShipment++;
+  if (buildCounterOrderShipmentLineItemShipment < 3) {
+    o.lineItemId = "foo";
+    o.quantity = 42;
+  }
+  buildCounterOrderShipmentLineItemShipment--;
+  return o;
+}
+
+checkOrderShipmentLineItemShipment(api.OrderShipmentLineItemShipment o) {
+  buildCounterOrderShipmentLineItemShipment++;
+  if (buildCounterOrderShipmentLineItemShipment < 3) {
+    unittest.expect(o.lineItemId, unittest.equals('foo'));
+    unittest.expect(o.quantity, unittest.equals(42));
+  }
+  buildCounterOrderShipmentLineItemShipment--;
+}
+
+core.int buildCounterOrdersAcknowledgeRequest = 0;
+buildOrdersAcknowledgeRequest() {
+  var o = new api.OrdersAcknowledgeRequest();
+  buildCounterOrdersAcknowledgeRequest++;
+  if (buildCounterOrdersAcknowledgeRequest < 3) {
+    o.operationId = "foo";
+  }
+  buildCounterOrdersAcknowledgeRequest--;
+  return o;
+}
+
+checkOrdersAcknowledgeRequest(api.OrdersAcknowledgeRequest o) {
+  buildCounterOrdersAcknowledgeRequest++;
+  if (buildCounterOrdersAcknowledgeRequest < 3) {
+    unittest.expect(o.operationId, unittest.equals('foo'));
+  }
+  buildCounterOrdersAcknowledgeRequest--;
+}
+
+core.int buildCounterOrdersAcknowledgeResponse = 0;
+buildOrdersAcknowledgeResponse() {
+  var o = new api.OrdersAcknowledgeResponse();
+  buildCounterOrdersAcknowledgeResponse++;
+  if (buildCounterOrdersAcknowledgeResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersAcknowledgeResponse--;
+  return o;
+}
+
+checkOrdersAcknowledgeResponse(api.OrdersAcknowledgeResponse o) {
+  buildCounterOrdersAcknowledgeResponse++;
+  if (buildCounterOrdersAcknowledgeResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersAcknowledgeResponse--;
+}
+
+core.int buildCounterOrdersAdvanceTestOrderResponse = 0;
+buildOrdersAdvanceTestOrderResponse() {
+  var o = new api.OrdersAdvanceTestOrderResponse();
+  buildCounterOrdersAdvanceTestOrderResponse++;
+  if (buildCounterOrdersAdvanceTestOrderResponse < 3) {
+    o.kind = "foo";
+  }
+  buildCounterOrdersAdvanceTestOrderResponse--;
+  return o;
+}
+
+checkOrdersAdvanceTestOrderResponse(api.OrdersAdvanceTestOrderResponse o) {
+  buildCounterOrdersAdvanceTestOrderResponse++;
+  if (buildCounterOrdersAdvanceTestOrderResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersAdvanceTestOrderResponse--;
+}
+
+core.int buildCounterOrdersCancelLineItemRequest = 0;
+buildOrdersCancelLineItemRequest() {
+  var o = new api.OrdersCancelLineItemRequest();
+  buildCounterOrdersCancelLineItemRequest++;
+  if (buildCounterOrdersCancelLineItemRequest < 3) {
+    o.amount = buildPrice();
+    o.lineItemId = "foo";
+    o.operationId = "foo";
+    o.quantity = 42;
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersCancelLineItemRequest--;
+  return o;
+}
+
+checkOrdersCancelLineItemRequest(api.OrdersCancelLineItemRequest o) {
+  buildCounterOrdersCancelLineItemRequest++;
+  if (buildCounterOrdersCancelLineItemRequest < 3) {
+    checkPrice(o.amount);
+    unittest.expect(o.lineItemId, unittest.equals('foo'));
+    unittest.expect(o.operationId, unittest.equals('foo'));
+    unittest.expect(o.quantity, unittest.equals(42));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersCancelLineItemRequest--;
+}
+
+core.int buildCounterOrdersCancelLineItemResponse = 0;
+buildOrdersCancelLineItemResponse() {
+  var o = new api.OrdersCancelLineItemResponse();
+  buildCounterOrdersCancelLineItemResponse++;
+  if (buildCounterOrdersCancelLineItemResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersCancelLineItemResponse--;
+  return o;
+}
+
+checkOrdersCancelLineItemResponse(api.OrdersCancelLineItemResponse o) {
+  buildCounterOrdersCancelLineItemResponse++;
+  if (buildCounterOrdersCancelLineItemResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersCancelLineItemResponse--;
+}
+
+core.int buildCounterOrdersCancelRequest = 0;
+buildOrdersCancelRequest() {
+  var o = new api.OrdersCancelRequest();
+  buildCounterOrdersCancelRequest++;
+  if (buildCounterOrdersCancelRequest < 3) {
+    o.operationId = "foo";
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersCancelRequest--;
+  return o;
+}
+
+checkOrdersCancelRequest(api.OrdersCancelRequest o) {
+  buildCounterOrdersCancelRequest++;
+  if (buildCounterOrdersCancelRequest < 3) {
+    unittest.expect(o.operationId, unittest.equals('foo'));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersCancelRequest--;
+}
+
+core.int buildCounterOrdersCancelResponse = 0;
+buildOrdersCancelResponse() {
+  var o = new api.OrdersCancelResponse();
+  buildCounterOrdersCancelResponse++;
+  if (buildCounterOrdersCancelResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersCancelResponse--;
+  return o;
+}
+
+checkOrdersCancelResponse(api.OrdersCancelResponse o) {
+  buildCounterOrdersCancelResponse++;
+  if (buildCounterOrdersCancelResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersCancelResponse--;
+}
+
+core.int buildCounterOrdersCreateTestOrderRequest = 0;
+buildOrdersCreateTestOrderRequest() {
+  var o = new api.OrdersCreateTestOrderRequest();
+  buildCounterOrdersCreateTestOrderRequest++;
+  if (buildCounterOrdersCreateTestOrderRequest < 3) {
+    o.templateName = "foo";
+    o.testOrder = buildTestOrder();
+  }
+  buildCounterOrdersCreateTestOrderRequest--;
+  return o;
+}
+
+checkOrdersCreateTestOrderRequest(api.OrdersCreateTestOrderRequest o) {
+  buildCounterOrdersCreateTestOrderRequest++;
+  if (buildCounterOrdersCreateTestOrderRequest < 3) {
+    unittest.expect(o.templateName, unittest.equals('foo'));
+    checkTestOrder(o.testOrder);
+  }
+  buildCounterOrdersCreateTestOrderRequest--;
+}
+
+core.int buildCounterOrdersCreateTestOrderResponse = 0;
+buildOrdersCreateTestOrderResponse() {
+  var o = new api.OrdersCreateTestOrderResponse();
+  buildCounterOrdersCreateTestOrderResponse++;
+  if (buildCounterOrdersCreateTestOrderResponse < 3) {
+    o.kind = "foo";
+    o.orderId = "foo";
+  }
+  buildCounterOrdersCreateTestOrderResponse--;
+  return o;
+}
+
+checkOrdersCreateTestOrderResponse(api.OrdersCreateTestOrderResponse o) {
+  buildCounterOrdersCreateTestOrderResponse++;
+  if (buildCounterOrdersCreateTestOrderResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.orderId, unittest.equals('foo'));
+  }
+  buildCounterOrdersCreateTestOrderResponse--;
+}
+
+buildUnnamed385() {
+  var o = new core.List<api.OrdersCustomBatchRequestEntry>();
+  o.add(buildOrdersCustomBatchRequestEntry());
+  o.add(buildOrdersCustomBatchRequestEntry());
+  return o;
+}
+
+checkUnnamed385(core.List<api.OrdersCustomBatchRequestEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrdersCustomBatchRequestEntry(o[0]);
+  checkOrdersCustomBatchRequestEntry(o[1]);
+}
+
+core.int buildCounterOrdersCustomBatchRequest = 0;
+buildOrdersCustomBatchRequest() {
+  var o = new api.OrdersCustomBatchRequest();
+  buildCounterOrdersCustomBatchRequest++;
+  if (buildCounterOrdersCustomBatchRequest < 3) {
+    o.entries = buildUnnamed385();
+  }
+  buildCounterOrdersCustomBatchRequest--;
+  return o;
+}
+
+checkOrdersCustomBatchRequest(api.OrdersCustomBatchRequest o) {
+  buildCounterOrdersCustomBatchRequest++;
+  if (buildCounterOrdersCustomBatchRequest < 3) {
+    checkUnnamed385(o.entries);
+  }
+  buildCounterOrdersCustomBatchRequest--;
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntry = 0;
+buildOrdersCustomBatchRequestEntry() {
+  var o = new api.OrdersCustomBatchRequestEntry();
+  buildCounterOrdersCustomBatchRequestEntry++;
+  if (buildCounterOrdersCustomBatchRequestEntry < 3) {
+    o.batchId = 42;
+    o.cancel = buildOrdersCustomBatchRequestEntryCancel();
+    o.cancelLineItem = buildOrdersCustomBatchRequestEntryCancelLineItem();
+    o.merchantId = "foo";
+    o.merchantOrderId = "foo";
+    o.method = "foo";
+    o.operationId = "foo";
+    o.orderId = "foo";
+    o.refund = buildOrdersCustomBatchRequestEntryRefund();
+    o.returnLineItem = buildOrdersCustomBatchRequestEntryReturnLineItem();
+    o.shipLineItems = buildOrdersCustomBatchRequestEntryShipLineItems();
+    o.updateShipment = buildOrdersCustomBatchRequestEntryUpdateShipment();
+  }
+  buildCounterOrdersCustomBatchRequestEntry--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntry(api.OrdersCustomBatchRequestEntry o) {
+  buildCounterOrdersCustomBatchRequestEntry++;
+  if (buildCounterOrdersCustomBatchRequestEntry < 3) {
+    unittest.expect(o.batchId, unittest.equals(42));
+    checkOrdersCustomBatchRequestEntryCancel(o.cancel);
+    checkOrdersCustomBatchRequestEntryCancelLineItem(o.cancelLineItem);
+    unittest.expect(o.merchantId, unittest.equals('foo'));
+    unittest.expect(o.merchantOrderId, unittest.equals('foo'));
+    unittest.expect(o.method, unittest.equals('foo'));
+    unittest.expect(o.operationId, unittest.equals('foo'));
+    unittest.expect(o.orderId, unittest.equals('foo'));
+    checkOrdersCustomBatchRequestEntryRefund(o.refund);
+    checkOrdersCustomBatchRequestEntryReturnLineItem(o.returnLineItem);
+    checkOrdersCustomBatchRequestEntryShipLineItems(o.shipLineItems);
+    checkOrdersCustomBatchRequestEntryUpdateShipment(o.updateShipment);
+  }
+  buildCounterOrdersCustomBatchRequestEntry--;
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntryCancel = 0;
+buildOrdersCustomBatchRequestEntryCancel() {
+  var o = new api.OrdersCustomBatchRequestEntryCancel();
+  buildCounterOrdersCustomBatchRequestEntryCancel++;
+  if (buildCounterOrdersCustomBatchRequestEntryCancel < 3) {
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersCustomBatchRequestEntryCancel--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntryCancel(
+    api.OrdersCustomBatchRequestEntryCancel o) {
+  buildCounterOrdersCustomBatchRequestEntryCancel++;
+  if (buildCounterOrdersCustomBatchRequestEntryCancel < 3) {
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchRequestEntryCancel--;
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntryCancelLineItem = 0;
+buildOrdersCustomBatchRequestEntryCancelLineItem() {
+  var o = new api.OrdersCustomBatchRequestEntryCancelLineItem();
+  buildCounterOrdersCustomBatchRequestEntryCancelLineItem++;
+  if (buildCounterOrdersCustomBatchRequestEntryCancelLineItem < 3) {
+    o.amount = buildPrice();
+    o.lineItemId = "foo";
+    o.quantity = 42;
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersCustomBatchRequestEntryCancelLineItem--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntryCancelLineItem(
+    api.OrdersCustomBatchRequestEntryCancelLineItem o) {
+  buildCounterOrdersCustomBatchRequestEntryCancelLineItem++;
+  if (buildCounterOrdersCustomBatchRequestEntryCancelLineItem < 3) {
+    checkPrice(o.amount);
+    unittest.expect(o.lineItemId, unittest.equals('foo'));
+    unittest.expect(o.quantity, unittest.equals(42));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchRequestEntryCancelLineItem--;
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntryRefund = 0;
+buildOrdersCustomBatchRequestEntryRefund() {
+  var o = new api.OrdersCustomBatchRequestEntryRefund();
+  buildCounterOrdersCustomBatchRequestEntryRefund++;
+  if (buildCounterOrdersCustomBatchRequestEntryRefund < 3) {
+    o.amount = buildPrice();
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersCustomBatchRequestEntryRefund--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntryRefund(
+    api.OrdersCustomBatchRequestEntryRefund o) {
+  buildCounterOrdersCustomBatchRequestEntryRefund++;
+  if (buildCounterOrdersCustomBatchRequestEntryRefund < 3) {
+    checkPrice(o.amount);
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchRequestEntryRefund--;
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntryReturnLineItem = 0;
+buildOrdersCustomBatchRequestEntryReturnLineItem() {
+  var o = new api.OrdersCustomBatchRequestEntryReturnLineItem();
+  buildCounterOrdersCustomBatchRequestEntryReturnLineItem++;
+  if (buildCounterOrdersCustomBatchRequestEntryReturnLineItem < 3) {
+    o.lineItemId = "foo";
+    o.quantity = 42;
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersCustomBatchRequestEntryReturnLineItem--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntryReturnLineItem(
+    api.OrdersCustomBatchRequestEntryReturnLineItem o) {
+  buildCounterOrdersCustomBatchRequestEntryReturnLineItem++;
+  if (buildCounterOrdersCustomBatchRequestEntryReturnLineItem < 3) {
+    unittest.expect(o.lineItemId, unittest.equals('foo'));
+    unittest.expect(o.quantity, unittest.equals(42));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchRequestEntryReturnLineItem--;
+}
+
+buildUnnamed386() {
+  var o = new core.List<api.OrderShipmentLineItemShipment>();
+  o.add(buildOrderShipmentLineItemShipment());
+  o.add(buildOrderShipmentLineItemShipment());
+  return o;
+}
+
+checkUnnamed386(core.List<api.OrderShipmentLineItemShipment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderShipmentLineItemShipment(o[0]);
+  checkOrderShipmentLineItemShipment(o[1]);
+}
+
+buildUnnamed387() {
+  var o = new core
+      .List<api.OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo>();
+  o.add(buildOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo());
+  o.add(buildOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo());
+  return o;
+}
+
+checkUnnamed387(
+    core.List<api.OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo(o[0]);
+  checkOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo(o[1]);
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntryShipLineItems = 0;
+buildOrdersCustomBatchRequestEntryShipLineItems() {
+  var o = new api.OrdersCustomBatchRequestEntryShipLineItems();
+  buildCounterOrdersCustomBatchRequestEntryShipLineItems++;
+  if (buildCounterOrdersCustomBatchRequestEntryShipLineItems < 3) {
+    o.carrier = "foo";
+    o.lineItems = buildUnnamed386();
+    o.shipmentId = "foo";
+    o.shipmentInfos = buildUnnamed387();
+    o.trackingId = "foo";
+  }
+  buildCounterOrdersCustomBatchRequestEntryShipLineItems--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntryShipLineItems(
+    api.OrdersCustomBatchRequestEntryShipLineItems o) {
+  buildCounterOrdersCustomBatchRequestEntryShipLineItems++;
+  if (buildCounterOrdersCustomBatchRequestEntryShipLineItems < 3) {
+    unittest.expect(o.carrier, unittest.equals('foo'));
+    checkUnnamed386(o.lineItems);
+    unittest.expect(o.shipmentId, unittest.equals('foo'));
+    checkUnnamed387(o.shipmentInfos);
+    unittest.expect(o.trackingId, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchRequestEntryShipLineItems--;
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo = 0;
+buildOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo() {
+  var o = new api.OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo();
+  buildCounterOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo++;
+  if (buildCounterOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo < 3) {
+    o.carrier = "foo";
+    o.shipmentId = "foo";
+    o.trackingId = "foo";
+  }
+  buildCounterOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo(
+    api.OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo o) {
+  buildCounterOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo++;
+  if (buildCounterOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo < 3) {
+    unittest.expect(o.carrier, unittest.equals('foo'));
+    unittest.expect(o.shipmentId, unittest.equals('foo'));
+    unittest.expect(o.trackingId, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo--;
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntryUpdateShipment = 0;
+buildOrdersCustomBatchRequestEntryUpdateShipment() {
+  var o = new api.OrdersCustomBatchRequestEntryUpdateShipment();
+  buildCounterOrdersCustomBatchRequestEntryUpdateShipment++;
+  if (buildCounterOrdersCustomBatchRequestEntryUpdateShipment < 3) {
+    o.carrier = "foo";
+    o.shipmentId = "foo";
+    o.status = "foo";
+    o.trackingId = "foo";
+  }
+  buildCounterOrdersCustomBatchRequestEntryUpdateShipment--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntryUpdateShipment(
+    api.OrdersCustomBatchRequestEntryUpdateShipment o) {
+  buildCounterOrdersCustomBatchRequestEntryUpdateShipment++;
+  if (buildCounterOrdersCustomBatchRequestEntryUpdateShipment < 3) {
+    unittest.expect(o.carrier, unittest.equals('foo'));
+    unittest.expect(o.shipmentId, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(o.trackingId, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchRequestEntryUpdateShipment--;
+}
+
+buildUnnamed388() {
+  var o = new core.List<api.OrdersCustomBatchResponseEntry>();
+  o.add(buildOrdersCustomBatchResponseEntry());
+  o.add(buildOrdersCustomBatchResponseEntry());
+  return o;
+}
+
+checkUnnamed388(core.List<api.OrdersCustomBatchResponseEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrdersCustomBatchResponseEntry(o[0]);
+  checkOrdersCustomBatchResponseEntry(o[1]);
+}
+
+core.int buildCounterOrdersCustomBatchResponse = 0;
+buildOrdersCustomBatchResponse() {
+  var o = new api.OrdersCustomBatchResponse();
+  buildCounterOrdersCustomBatchResponse++;
+  if (buildCounterOrdersCustomBatchResponse < 3) {
+    o.entries = buildUnnamed388();
+    o.kind = "foo";
+  }
+  buildCounterOrdersCustomBatchResponse--;
+  return o;
+}
+
+checkOrdersCustomBatchResponse(api.OrdersCustomBatchResponse o) {
+  buildCounterOrdersCustomBatchResponse++;
+  if (buildCounterOrdersCustomBatchResponse < 3) {
+    checkUnnamed388(o.entries);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchResponse--;
+}
+
+core.int buildCounterOrdersCustomBatchResponseEntry = 0;
+buildOrdersCustomBatchResponseEntry() {
+  var o = new api.OrdersCustomBatchResponseEntry();
+  buildCounterOrdersCustomBatchResponseEntry++;
+  if (buildCounterOrdersCustomBatchResponseEntry < 3) {
+    o.batchId = 42;
+    o.errors = buildErrors();
+    o.executionStatus = "foo";
+    o.kind = "foo";
+    o.order = buildOrder();
+  }
+  buildCounterOrdersCustomBatchResponseEntry--;
+  return o;
+}
+
+checkOrdersCustomBatchResponseEntry(api.OrdersCustomBatchResponseEntry o) {
+  buildCounterOrdersCustomBatchResponseEntry++;
+  if (buildCounterOrdersCustomBatchResponseEntry < 3) {
+    unittest.expect(o.batchId, unittest.equals(42));
+    checkErrors(o.errors);
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkOrder(o.order);
+  }
+  buildCounterOrdersCustomBatchResponseEntry--;
+}
+
+core.int buildCounterOrdersGetByMerchantOrderIdResponse = 0;
+buildOrdersGetByMerchantOrderIdResponse() {
+  var o = new api.OrdersGetByMerchantOrderIdResponse();
+  buildCounterOrdersGetByMerchantOrderIdResponse++;
+  if (buildCounterOrdersGetByMerchantOrderIdResponse < 3) {
+    o.kind = "foo";
+    o.order = buildOrder();
+  }
+  buildCounterOrdersGetByMerchantOrderIdResponse--;
+  return o;
+}
+
+checkOrdersGetByMerchantOrderIdResponse(
+    api.OrdersGetByMerchantOrderIdResponse o) {
+  buildCounterOrdersGetByMerchantOrderIdResponse++;
+  if (buildCounterOrdersGetByMerchantOrderIdResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkOrder(o.order);
+  }
+  buildCounterOrdersGetByMerchantOrderIdResponse--;
+}
+
+core.int buildCounterOrdersGetTestOrderTemplateResponse = 0;
+buildOrdersGetTestOrderTemplateResponse() {
+  var o = new api.OrdersGetTestOrderTemplateResponse();
+  buildCounterOrdersGetTestOrderTemplateResponse++;
+  if (buildCounterOrdersGetTestOrderTemplateResponse < 3) {
+    o.kind = "foo";
+    o.template = buildTestOrder();
+  }
+  buildCounterOrdersGetTestOrderTemplateResponse--;
+  return o;
+}
+
+checkOrdersGetTestOrderTemplateResponse(
+    api.OrdersGetTestOrderTemplateResponse o) {
+  buildCounterOrdersGetTestOrderTemplateResponse++;
+  if (buildCounterOrdersGetTestOrderTemplateResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkTestOrder(o.template);
+  }
+  buildCounterOrdersGetTestOrderTemplateResponse--;
+}
+
+buildUnnamed389() {
+  var o = new core.List<api.Order>();
+  o.add(buildOrder());
+  o.add(buildOrder());
+  return o;
+}
+
+checkUnnamed389(core.List<api.Order> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrder(o[0]);
+  checkOrder(o[1]);
+}
+
+core.int buildCounterOrdersListResponse = 0;
+buildOrdersListResponse() {
+  var o = new api.OrdersListResponse();
+  buildCounterOrdersListResponse++;
+  if (buildCounterOrdersListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.resources = buildUnnamed389();
+  }
+  buildCounterOrdersListResponse--;
+  return o;
+}
+
+checkOrdersListResponse(api.OrdersListResponse o) {
+  buildCounterOrdersListResponse++;
+  if (buildCounterOrdersListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed389(o.resources);
+  }
+  buildCounterOrdersListResponse--;
+}
+
+core.int buildCounterOrdersRefundRequest = 0;
+buildOrdersRefundRequest() {
+  var o = new api.OrdersRefundRequest();
+  buildCounterOrdersRefundRequest++;
+  if (buildCounterOrdersRefundRequest < 3) {
+    o.amount = buildPrice();
+    o.operationId = "foo";
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersRefundRequest--;
+  return o;
+}
+
+checkOrdersRefundRequest(api.OrdersRefundRequest o) {
+  buildCounterOrdersRefundRequest++;
+  if (buildCounterOrdersRefundRequest < 3) {
+    checkPrice(o.amount);
+    unittest.expect(o.operationId, unittest.equals('foo'));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersRefundRequest--;
+}
+
+core.int buildCounterOrdersRefundResponse = 0;
+buildOrdersRefundResponse() {
+  var o = new api.OrdersRefundResponse();
+  buildCounterOrdersRefundResponse++;
+  if (buildCounterOrdersRefundResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersRefundResponse--;
+  return o;
+}
+
+checkOrdersRefundResponse(api.OrdersRefundResponse o) {
+  buildCounterOrdersRefundResponse++;
+  if (buildCounterOrdersRefundResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersRefundResponse--;
+}
+
+core.int buildCounterOrdersReturnLineItemRequest = 0;
+buildOrdersReturnLineItemRequest() {
+  var o = new api.OrdersReturnLineItemRequest();
+  buildCounterOrdersReturnLineItemRequest++;
+  if (buildCounterOrdersReturnLineItemRequest < 3) {
+    o.lineItemId = "foo";
+    o.operationId = "foo";
+    o.quantity = 42;
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersReturnLineItemRequest--;
+  return o;
+}
+
+checkOrdersReturnLineItemRequest(api.OrdersReturnLineItemRequest o) {
+  buildCounterOrdersReturnLineItemRequest++;
+  if (buildCounterOrdersReturnLineItemRequest < 3) {
+    unittest.expect(o.lineItemId, unittest.equals('foo'));
+    unittest.expect(o.operationId, unittest.equals('foo'));
+    unittest.expect(o.quantity, unittest.equals(42));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersReturnLineItemRequest--;
+}
+
+core.int buildCounterOrdersReturnLineItemResponse = 0;
+buildOrdersReturnLineItemResponse() {
+  var o = new api.OrdersReturnLineItemResponse();
+  buildCounterOrdersReturnLineItemResponse++;
+  if (buildCounterOrdersReturnLineItemResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersReturnLineItemResponse--;
+  return o;
+}
+
+checkOrdersReturnLineItemResponse(api.OrdersReturnLineItemResponse o) {
+  buildCounterOrdersReturnLineItemResponse++;
+  if (buildCounterOrdersReturnLineItemResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersReturnLineItemResponse--;
+}
+
+buildUnnamed390() {
+  var o = new core.List<api.OrderShipmentLineItemShipment>();
+  o.add(buildOrderShipmentLineItemShipment());
+  o.add(buildOrderShipmentLineItemShipment());
+  return o;
+}
+
+checkUnnamed390(core.List<api.OrderShipmentLineItemShipment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderShipmentLineItemShipment(o[0]);
+  checkOrderShipmentLineItemShipment(o[1]);
+}
+
+buildUnnamed391() {
+  var o = new core
+      .List<api.OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo>();
+  o.add(buildOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo());
+  o.add(buildOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo());
+  return o;
+}
+
+checkUnnamed391(
+    core.List<api.OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo(o[0]);
+  checkOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo(o[1]);
+}
+
+core.int buildCounterOrdersShipLineItemsRequest = 0;
+buildOrdersShipLineItemsRequest() {
+  var o = new api.OrdersShipLineItemsRequest();
+  buildCounterOrdersShipLineItemsRequest++;
+  if (buildCounterOrdersShipLineItemsRequest < 3) {
+    o.carrier = "foo";
+    o.lineItems = buildUnnamed390();
+    o.operationId = "foo";
+    o.shipmentId = "foo";
+    o.shipmentInfos = buildUnnamed391();
+    o.trackingId = "foo";
+  }
+  buildCounterOrdersShipLineItemsRequest--;
+  return o;
+}
+
+checkOrdersShipLineItemsRequest(api.OrdersShipLineItemsRequest o) {
+  buildCounterOrdersShipLineItemsRequest++;
+  if (buildCounterOrdersShipLineItemsRequest < 3) {
+    unittest.expect(o.carrier, unittest.equals('foo'));
+    checkUnnamed390(o.lineItems);
+    unittest.expect(o.operationId, unittest.equals('foo'));
+    unittest.expect(o.shipmentId, unittest.equals('foo'));
+    checkUnnamed391(o.shipmentInfos);
+    unittest.expect(o.trackingId, unittest.equals('foo'));
+  }
+  buildCounterOrdersShipLineItemsRequest--;
+}
+
+core.int buildCounterOrdersShipLineItemsResponse = 0;
+buildOrdersShipLineItemsResponse() {
+  var o = new api.OrdersShipLineItemsResponse();
+  buildCounterOrdersShipLineItemsResponse++;
+  if (buildCounterOrdersShipLineItemsResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersShipLineItemsResponse--;
+  return o;
+}
+
+checkOrdersShipLineItemsResponse(api.OrdersShipLineItemsResponse o) {
+  buildCounterOrdersShipLineItemsResponse++;
+  if (buildCounterOrdersShipLineItemsResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersShipLineItemsResponse--;
+}
+
+core.int buildCounterOrdersUpdateMerchantOrderIdRequest = 0;
+buildOrdersUpdateMerchantOrderIdRequest() {
+  var o = new api.OrdersUpdateMerchantOrderIdRequest();
+  buildCounterOrdersUpdateMerchantOrderIdRequest++;
+  if (buildCounterOrdersUpdateMerchantOrderIdRequest < 3) {
+    o.merchantOrderId = "foo";
+    o.operationId = "foo";
+  }
+  buildCounterOrdersUpdateMerchantOrderIdRequest--;
+  return o;
+}
+
+checkOrdersUpdateMerchantOrderIdRequest(
+    api.OrdersUpdateMerchantOrderIdRequest o) {
+  buildCounterOrdersUpdateMerchantOrderIdRequest++;
+  if (buildCounterOrdersUpdateMerchantOrderIdRequest < 3) {
+    unittest.expect(o.merchantOrderId, unittest.equals('foo'));
+    unittest.expect(o.operationId, unittest.equals('foo'));
+  }
+  buildCounterOrdersUpdateMerchantOrderIdRequest--;
+}
+
+core.int buildCounterOrdersUpdateMerchantOrderIdResponse = 0;
+buildOrdersUpdateMerchantOrderIdResponse() {
+  var o = new api.OrdersUpdateMerchantOrderIdResponse();
+  buildCounterOrdersUpdateMerchantOrderIdResponse++;
+  if (buildCounterOrdersUpdateMerchantOrderIdResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersUpdateMerchantOrderIdResponse--;
+  return o;
+}
+
+checkOrdersUpdateMerchantOrderIdResponse(
+    api.OrdersUpdateMerchantOrderIdResponse o) {
+  buildCounterOrdersUpdateMerchantOrderIdResponse++;
+  if (buildCounterOrdersUpdateMerchantOrderIdResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersUpdateMerchantOrderIdResponse--;
+}
+
+core.int buildCounterOrdersUpdateShipmentRequest = 0;
+buildOrdersUpdateShipmentRequest() {
+  var o = new api.OrdersUpdateShipmentRequest();
+  buildCounterOrdersUpdateShipmentRequest++;
+  if (buildCounterOrdersUpdateShipmentRequest < 3) {
+    o.carrier = "foo";
+    o.operationId = "foo";
+    o.shipmentId = "foo";
+    o.status = "foo";
+    o.trackingId = "foo";
+  }
+  buildCounterOrdersUpdateShipmentRequest--;
+  return o;
+}
+
+checkOrdersUpdateShipmentRequest(api.OrdersUpdateShipmentRequest o) {
+  buildCounterOrdersUpdateShipmentRequest++;
+  if (buildCounterOrdersUpdateShipmentRequest < 3) {
+    unittest.expect(o.carrier, unittest.equals('foo'));
+    unittest.expect(o.operationId, unittest.equals('foo'));
+    unittest.expect(o.shipmentId, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(o.trackingId, unittest.equals('foo'));
+  }
+  buildCounterOrdersUpdateShipmentRequest--;
+}
+
+core.int buildCounterOrdersUpdateShipmentResponse = 0;
+buildOrdersUpdateShipmentResponse() {
+  var o = new api.OrdersUpdateShipmentResponse();
+  buildCounterOrdersUpdateShipmentResponse++;
+  if (buildCounterOrdersUpdateShipmentResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersUpdateShipmentResponse--;
+  return o;
+}
+
+checkOrdersUpdateShipmentResponse(api.OrdersUpdateShipmentResponse o) {
+  buildCounterOrdersUpdateShipmentResponse++;
+  if (buildCounterOrdersUpdateShipmentResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersUpdateShipmentResponse--;
+}
+
+buildUnnamed392() {
+  var o = new core.List<api.PostalCodeRange>();
+  o.add(buildPostalCodeRange());
+  o.add(buildPostalCodeRange());
+  return o;
+}
+
+checkUnnamed392(core.List<api.PostalCodeRange> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPostalCodeRange(o[0]);
+  checkPostalCodeRange(o[1]);
+}
+
+core.int buildCounterPostalCodeGroup = 0;
+buildPostalCodeGroup() {
+  var o = new api.PostalCodeGroup();
+  buildCounterPostalCodeGroup++;
+  if (buildCounterPostalCodeGroup < 3) {
+    o.country = "foo";
+    o.name = "foo";
+    o.postalCodeRanges = buildUnnamed392();
+  }
+  buildCounterPostalCodeGroup--;
+  return o;
+}
+
+checkPostalCodeGroup(api.PostalCodeGroup o) {
+  buildCounterPostalCodeGroup++;
+  if (buildCounterPostalCodeGroup < 3) {
+    unittest.expect(o.country, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed392(o.postalCodeRanges);
+  }
+  buildCounterPostalCodeGroup--;
+}
+
+core.int buildCounterPostalCodeRange = 0;
+buildPostalCodeRange() {
+  var o = new api.PostalCodeRange();
+  buildCounterPostalCodeRange++;
+  if (buildCounterPostalCodeRange < 3) {
+    o.postalCodeRangeBegin = "foo";
+    o.postalCodeRangeEnd = "foo";
+  }
+  buildCounterPostalCodeRange--;
+  return o;
+}
+
+checkPostalCodeRange(api.PostalCodeRange o) {
+  buildCounterPostalCodeRange++;
+  if (buildCounterPostalCodeRange < 3) {
+    unittest.expect(o.postalCodeRangeBegin, unittest.equals('foo'));
+    unittest.expect(o.postalCodeRangeEnd, unittest.equals('foo'));
+  }
+  buildCounterPostalCodeRange--;
+}
+
+core.int buildCounterPrice = 0;
+buildPrice() {
+  var o = new api.Price();
+  buildCounterPrice++;
+  if (buildCounterPrice < 3) {
+    o.currency = "foo";
+    o.value = "foo";
+  }
+  buildCounterPrice--;
+  return o;
+}
+
+checkPrice(api.Price o) {
+  buildCounterPrice++;
+  if (buildCounterPrice < 3) {
+    unittest.expect(o.currency, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterPrice--;
+}
+
+buildUnnamed393() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed393(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed394() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed394(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed395() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed395(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed396() {
+  var o = new core.List<api.ProductAspect>();
+  o.add(buildProductAspect());
+  o.add(buildProductAspect());
+  return o;
+}
+
+checkUnnamed396(core.List<api.ProductAspect> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProductAspect(o[0]);
+  checkProductAspect(o[1]);
+}
+
+buildUnnamed397() {
+  var o = new core.List<api.ProductCustomAttribute>();
+  o.add(buildProductCustomAttribute());
+  o.add(buildProductCustomAttribute());
+  return o;
+}
+
+checkUnnamed397(core.List<api.ProductCustomAttribute> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProductCustomAttribute(o[0]);
+  checkProductCustomAttribute(o[1]);
+}
+
+buildUnnamed398() {
+  var o = new core.List<api.ProductCustomGroup>();
+  o.add(buildProductCustomGroup());
+  o.add(buildProductCustomGroup());
+  return o;
+}
+
+checkUnnamed398(core.List<api.ProductCustomGroup> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProductCustomGroup(o[0]);
+  checkProductCustomGroup(o[1]);
+}
+
+buildUnnamed399() {
+  var o = new core.List<api.ProductDestination>();
+  o.add(buildProductDestination());
+  o.add(buildProductDestination());
+  return o;
+}
+
+checkUnnamed399(core.List<api.ProductDestination> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProductDestination(o[0]);
+  checkProductDestination(o[1]);
+}
+
+buildUnnamed400() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed400(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed401() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed401(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed402() {
+  var o = new core.List<api.ProductShipping>();
+  o.add(buildProductShipping());
+  o.add(buildProductShipping());
+  return o;
+}
+
+checkUnnamed402(core.List<api.ProductShipping> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProductShipping(o[0]);
+  checkProductShipping(o[1]);
+}
+
+buildUnnamed403() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed403(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed404() {
+  var o = new core.List<api.ProductTax>();
+  o.add(buildProductTax());
+  o.add(buildProductTax());
+  return o;
+}
+
+checkUnnamed404(core.List<api.ProductTax> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProductTax(o[0]);
+  checkProductTax(o[1]);
+}
+
+buildUnnamed405() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed405(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed406() {
+  var o = new core.List<api.Error>();
+  o.add(buildError());
+  o.add(buildError());
+  return o;
+}
+
+checkUnnamed406(core.List<api.Error> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkError(o[0]);
+  checkError(o[1]);
+}
+
+core.int buildCounterProduct = 0;
+buildProduct() {
+  var o = new api.Product();
+  buildCounterProduct++;
+  if (buildCounterProduct < 3) {
+    o.additionalImageLinks = buildUnnamed393();
+    o.additionalProductTypes = buildUnnamed394();
+    o.adult = true;
+    o.adwordsGrouping = "foo";
+    o.adwordsLabels = buildUnnamed395();
+    o.adwordsRedirect = "foo";
+    o.ageGroup = "foo";
+    o.aspects = buildUnnamed396();
+    o.availability = "foo";
+    o.availabilityDate = "foo";
+    o.brand = "foo";
+    o.channel = "foo";
+    o.color = "foo";
+    o.condition = "foo";
+    o.contentLanguage = "foo";
+    o.customAttributes = buildUnnamed397();
+    o.customGroups = buildUnnamed398();
+    o.customLabel0 = "foo";
+    o.customLabel1 = "foo";
+    o.customLabel2 = "foo";
+    o.customLabel3 = "foo";
+    o.customLabel4 = "foo";
+    o.description = "foo";
+    o.destinations = buildUnnamed399();
+    o.displayAdsId = "foo";
+    o.displayAdsLink = "foo";
+    o.displayAdsSimilarIds = buildUnnamed400();
+    o.displayAdsTitle = "foo";
+    o.displayAdsValue = 42.0;
+    o.energyEfficiencyClass = "foo";
+    o.expirationDate = "foo";
+    o.gender = "foo";
+    o.googleProductCategory = "foo";
+    o.gtin = "foo";
+    o.id = "foo";
+    o.identifierExists = true;
+    o.imageLink = "foo";
+    o.installment = buildInstallment();
+    o.isBundle = true;
+    o.itemGroupId = "foo";
+    o.kind = "foo";
+    o.link = "foo";
+    o.loyaltyPoints = buildLoyaltyPoints();
+    o.material = "foo";
+    o.maxHandlingTime = "foo";
+    o.minHandlingTime = "foo";
+    o.mobileLink = "foo";
+    o.mpn = "foo";
+    o.multipack = "foo";
+    o.offerId = "foo";
+    o.onlineOnly = true;
+    o.pattern = "foo";
+    o.price = buildPrice();
+    o.productType = "foo";
+    o.promotionIds = buildUnnamed401();
+    o.salePrice = buildPrice();
+    o.salePriceEffectiveDate = "foo";
+    o.sellOnGoogleQuantity = "foo";
+    o.shipping = buildUnnamed402();
+    o.shippingHeight = buildProductShippingDimension();
+    o.shippingLabel = "foo";
+    o.shippingLength = buildProductShippingDimension();
+    o.shippingWeight = buildProductShippingWeight();
+    o.shippingWidth = buildProductShippingDimension();
+    o.sizeSystem = "foo";
+    o.sizeType = "foo";
+    o.sizes = buildUnnamed403();
+    o.targetCountry = "foo";
+    o.taxes = buildUnnamed404();
+    o.title = "foo";
+    o.unitPricingBaseMeasure = buildProductUnitPricingBaseMeasure();
+    o.unitPricingMeasure = buildProductUnitPricingMeasure();
+    o.validatedDestinations = buildUnnamed405();
+    o.warnings = buildUnnamed406();
+  }
+  buildCounterProduct--;
+  return o;
+}
+
+checkProduct(api.Product o) {
+  buildCounterProduct++;
+  if (buildCounterProduct < 3) {
+    checkUnnamed393(o.additionalImageLinks);
+    checkUnnamed394(o.additionalProductTypes);
+    unittest.expect(o.adult, unittest.isTrue);
+    unittest.expect(o.adwordsGrouping, unittest.equals('foo'));
+    checkUnnamed395(o.adwordsLabels);
+    unittest.expect(o.adwordsRedirect, unittest.equals('foo'));
+    unittest.expect(o.ageGroup, unittest.equals('foo'));
+    checkUnnamed396(o.aspects);
+    unittest.expect(o.availability, unittest.equals('foo'));
+    unittest.expect(o.availabilityDate, unittest.equals('foo'));
+    unittest.expect(o.brand, unittest.equals('foo'));
+    unittest.expect(o.channel, unittest.equals('foo'));
+    unittest.expect(o.color, unittest.equals('foo'));
+    unittest.expect(o.condition, unittest.equals('foo'));
+    unittest.expect(o.contentLanguage, unittest.equals('foo'));
+    checkUnnamed397(o.customAttributes);
+    checkUnnamed398(o.customGroups);
+    unittest.expect(o.customLabel0, unittest.equals('foo'));
+    unittest.expect(o.customLabel1, unittest.equals('foo'));
+    unittest.expect(o.customLabel2, unittest.equals('foo'));
+    unittest.expect(o.customLabel3, unittest.equals('foo'));
+    unittest.expect(o.customLabel4, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    checkUnnamed399(o.destinations);
+    unittest.expect(o.displayAdsId, unittest.equals('foo'));
+    unittest.expect(o.displayAdsLink, unittest.equals('foo'));
+    checkUnnamed400(o.displayAdsSimilarIds);
+    unittest.expect(o.displayAdsTitle, unittest.equals('foo'));
+    unittest.expect(o.displayAdsValue, unittest.equals(42.0));
+    unittest.expect(o.energyEfficiencyClass, unittest.equals('foo'));
+    unittest.expect(o.expirationDate, unittest.equals('foo'));
+    unittest.expect(o.gender, unittest.equals('foo'));
+    unittest.expect(o.googleProductCategory, unittest.equals('foo'));
+    unittest.expect(o.gtin, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.identifierExists, unittest.isTrue);
+    unittest.expect(o.imageLink, unittest.equals('foo'));
+    checkInstallment(o.installment);
+    unittest.expect(o.isBundle, unittest.isTrue);
+    unittest.expect(o.itemGroupId, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.link, unittest.equals('foo'));
+    checkLoyaltyPoints(o.loyaltyPoints);
+    unittest.expect(o.material, unittest.equals('foo'));
+    unittest.expect(o.maxHandlingTime, unittest.equals('foo'));
+    unittest.expect(o.minHandlingTime, unittest.equals('foo'));
+    unittest.expect(o.mobileLink, unittest.equals('foo'));
+    unittest.expect(o.mpn, unittest.equals('foo'));
+    unittest.expect(o.multipack, unittest.equals('foo'));
+    unittest.expect(o.offerId, unittest.equals('foo'));
+    unittest.expect(o.onlineOnly, unittest.isTrue);
+    unittest.expect(o.pattern, unittest.equals('foo'));
+    checkPrice(o.price);
+    unittest.expect(o.productType, unittest.equals('foo'));
+    checkUnnamed401(o.promotionIds);
+    checkPrice(o.salePrice);
+    unittest.expect(o.salePriceEffectiveDate, unittest.equals('foo'));
+    unittest.expect(o.sellOnGoogleQuantity, unittest.equals('foo'));
+    checkUnnamed402(o.shipping);
+    checkProductShippingDimension(o.shippingHeight);
+    unittest.expect(o.shippingLabel, unittest.equals('foo'));
+    checkProductShippingDimension(o.shippingLength);
+    checkProductShippingWeight(o.shippingWeight);
+    checkProductShippingDimension(o.shippingWidth);
+    unittest.expect(o.sizeSystem, unittest.equals('foo'));
+    unittest.expect(o.sizeType, unittest.equals('foo'));
+    checkUnnamed403(o.sizes);
+    unittest.expect(o.targetCountry, unittest.equals('foo'));
+    checkUnnamed404(o.taxes);
+    unittest.expect(o.title, unittest.equals('foo'));
+    checkProductUnitPricingBaseMeasure(o.unitPricingBaseMeasure);
+    checkProductUnitPricingMeasure(o.unitPricingMeasure);
+    checkUnnamed405(o.validatedDestinations);
+    checkUnnamed406(o.warnings);
+  }
+  buildCounterProduct--;
+}
+
+core.int buildCounterProductAspect = 0;
+buildProductAspect() {
+  var o = new api.ProductAspect();
+  buildCounterProductAspect++;
+  if (buildCounterProductAspect < 3) {
+    o.aspectName = "foo";
+    o.destinationName = "foo";
+    o.intention = "foo";
+  }
+  buildCounterProductAspect--;
+  return o;
+}
+
+checkProductAspect(api.ProductAspect o) {
+  buildCounterProductAspect++;
+  if (buildCounterProductAspect < 3) {
+    unittest.expect(o.aspectName, unittest.equals('foo'));
+    unittest.expect(o.destinationName, unittest.equals('foo'));
+    unittest.expect(o.intention, unittest.equals('foo'));
+  }
+  buildCounterProductAspect--;
+}
+
+core.int buildCounterProductCustomAttribute = 0;
+buildProductCustomAttribute() {
+  var o = new api.ProductCustomAttribute();
+  buildCounterProductCustomAttribute++;
+  if (buildCounterProductCustomAttribute < 3) {
+    o.name = "foo";
+    o.type = "foo";
+    o.unit = "foo";
+    o.value = "foo";
+  }
+  buildCounterProductCustomAttribute--;
+  return o;
+}
+
+checkProductCustomAttribute(api.ProductCustomAttribute o) {
+  buildCounterProductCustomAttribute++;
+  if (buildCounterProductCustomAttribute < 3) {
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.unit, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterProductCustomAttribute--;
+}
+
+buildUnnamed407() {
+  var o = new core.List<api.ProductCustomAttribute>();
+  o.add(buildProductCustomAttribute());
+  o.add(buildProductCustomAttribute());
+  return o;
+}
+
+checkUnnamed407(core.List<api.ProductCustomAttribute> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProductCustomAttribute(o[0]);
+  checkProductCustomAttribute(o[1]);
+}
+
+core.int buildCounterProductCustomGroup = 0;
+buildProductCustomGroup() {
+  var o = new api.ProductCustomGroup();
+  buildCounterProductCustomGroup++;
+  if (buildCounterProductCustomGroup < 3) {
+    o.attributes = buildUnnamed407();
+    o.name = "foo";
+  }
+  buildCounterProductCustomGroup--;
+  return o;
+}
+
+checkProductCustomGroup(api.ProductCustomGroup o) {
+  buildCounterProductCustomGroup++;
+  if (buildCounterProductCustomGroup < 3) {
+    checkUnnamed407(o.attributes);
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterProductCustomGroup--;
+}
+
+core.int buildCounterProductDestination = 0;
+buildProductDestination() {
+  var o = new api.ProductDestination();
+  buildCounterProductDestination++;
+  if (buildCounterProductDestination < 3) {
+    o.destinationName = "foo";
+    o.intention = "foo";
+  }
+  buildCounterProductDestination--;
+  return o;
+}
+
+checkProductDestination(api.ProductDestination o) {
+  buildCounterProductDestination++;
+  if (buildCounterProductDestination < 3) {
+    unittest.expect(o.destinationName, unittest.equals('foo'));
+    unittest.expect(o.intention, unittest.equals('foo'));
+  }
+  buildCounterProductDestination--;
+}
+
+core.int buildCounterProductShipping = 0;
+buildProductShipping() {
+  var o = new api.ProductShipping();
+  buildCounterProductShipping++;
+  if (buildCounterProductShipping < 3) {
+    o.country = "foo";
+    o.locationGroupName = "foo";
+    o.locationId = "foo";
+    o.postalCode = "foo";
+    o.price = buildPrice();
+    o.region = "foo";
+    o.service = "foo";
+  }
+  buildCounterProductShipping--;
+  return o;
+}
+
+checkProductShipping(api.ProductShipping o) {
+  buildCounterProductShipping++;
+  if (buildCounterProductShipping < 3) {
+    unittest.expect(o.country, unittest.equals('foo'));
+    unittest.expect(o.locationGroupName, unittest.equals('foo'));
+    unittest.expect(o.locationId, unittest.equals('foo'));
+    unittest.expect(o.postalCode, unittest.equals('foo'));
+    checkPrice(o.price);
+    unittest.expect(o.region, unittest.equals('foo'));
+    unittest.expect(o.service, unittest.equals('foo'));
+  }
+  buildCounterProductShipping--;
+}
+
+core.int buildCounterProductShippingDimension = 0;
+buildProductShippingDimension() {
+  var o = new api.ProductShippingDimension();
+  buildCounterProductShippingDimension++;
+  if (buildCounterProductShippingDimension < 3) {
+    o.unit = "foo";
+    o.value = 42.0;
+  }
+  buildCounterProductShippingDimension--;
+  return o;
+}
+
+checkProductShippingDimension(api.ProductShippingDimension o) {
+  buildCounterProductShippingDimension++;
+  if (buildCounterProductShippingDimension < 3) {
+    unittest.expect(o.unit, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals(42.0));
+  }
+  buildCounterProductShippingDimension--;
+}
+
+core.int buildCounterProductShippingWeight = 0;
+buildProductShippingWeight() {
+  var o = new api.ProductShippingWeight();
+  buildCounterProductShippingWeight++;
+  if (buildCounterProductShippingWeight < 3) {
+    o.unit = "foo";
+    o.value = 42.0;
+  }
+  buildCounterProductShippingWeight--;
+  return o;
+}
+
+checkProductShippingWeight(api.ProductShippingWeight o) {
+  buildCounterProductShippingWeight++;
+  if (buildCounterProductShippingWeight < 3) {
+    unittest.expect(o.unit, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals(42.0));
+  }
+  buildCounterProductShippingWeight--;
+}
+
+buildUnnamed408() {
+  var o = new core.List<api.ProductStatusDataQualityIssue>();
+  o.add(buildProductStatusDataQualityIssue());
+  o.add(buildProductStatusDataQualityIssue());
+  return o;
+}
+
+checkUnnamed408(core.List<api.ProductStatusDataQualityIssue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProductStatusDataQualityIssue(o[0]);
+  checkProductStatusDataQualityIssue(o[1]);
+}
+
+buildUnnamed409() {
+  var o = new core.List<api.ProductStatusDestinationStatus>();
+  o.add(buildProductStatusDestinationStatus());
+  o.add(buildProductStatusDestinationStatus());
+  return o;
+}
+
+checkUnnamed409(core.List<api.ProductStatusDestinationStatus> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProductStatusDestinationStatus(o[0]);
+  checkProductStatusDestinationStatus(o[1]);
+}
+
+core.int buildCounterProductStatus = 0;
+buildProductStatus() {
+  var o = new api.ProductStatus();
+  buildCounterProductStatus++;
+  if (buildCounterProductStatus < 3) {
+    o.creationDate = "foo";
+    o.dataQualityIssues = buildUnnamed408();
+    o.destinationStatuses = buildUnnamed409();
+    o.googleExpirationDate = "foo";
+    o.kind = "foo";
+    o.lastUpdateDate = "foo";
+    o.link = "foo";
+    o.product = buildProduct();
+    o.productId = "foo";
+    o.title = "foo";
+  }
+  buildCounterProductStatus--;
+  return o;
+}
+
+checkProductStatus(api.ProductStatus o) {
+  buildCounterProductStatus++;
+  if (buildCounterProductStatus < 3) {
+    unittest.expect(o.creationDate, unittest.equals('foo'));
+    checkUnnamed408(o.dataQualityIssues);
+    checkUnnamed409(o.destinationStatuses);
+    unittest.expect(o.googleExpirationDate, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.lastUpdateDate, unittest.equals('foo'));
+    unittest.expect(o.link, unittest.equals('foo'));
+    checkProduct(o.product);
+    unittest.expect(o.productId, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterProductStatus--;
+}
+
+core.int buildCounterProductStatusDataQualityIssue = 0;
+buildProductStatusDataQualityIssue() {
+  var o = new api.ProductStatusDataQualityIssue();
+  buildCounterProductStatusDataQualityIssue++;
+  if (buildCounterProductStatusDataQualityIssue < 3) {
+    o.detail = "foo";
+    o.fetchStatus = "foo";
+    o.id = "foo";
+    o.location = "foo";
+    o.severity = "foo";
+    o.timestamp = "foo";
+    o.valueOnLandingPage = "foo";
+    o.valueProvided = "foo";
+  }
+  buildCounterProductStatusDataQualityIssue--;
+  return o;
+}
+
+checkProductStatusDataQualityIssue(api.ProductStatusDataQualityIssue o) {
+  buildCounterProductStatusDataQualityIssue++;
+  if (buildCounterProductStatusDataQualityIssue < 3) {
+    unittest.expect(o.detail, unittest.equals('foo'));
+    unittest.expect(o.fetchStatus, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    unittest.expect(o.severity, unittest.equals('foo'));
+    unittest.expect(o.timestamp, unittest.equals('foo'));
+    unittest.expect(o.valueOnLandingPage, unittest.equals('foo'));
+    unittest.expect(o.valueProvided, unittest.equals('foo'));
+  }
+  buildCounterProductStatusDataQualityIssue--;
+}
+
+core.int buildCounterProductStatusDestinationStatus = 0;
+buildProductStatusDestinationStatus() {
+  var o = new api.ProductStatusDestinationStatus();
+  buildCounterProductStatusDestinationStatus++;
+  if (buildCounterProductStatusDestinationStatus < 3) {
+    o.approvalStatus = "foo";
+    o.destination = "foo";
+    o.intention = "foo";
+  }
+  buildCounterProductStatusDestinationStatus--;
+  return o;
+}
+
+checkProductStatusDestinationStatus(api.ProductStatusDestinationStatus o) {
+  buildCounterProductStatusDestinationStatus++;
+  if (buildCounterProductStatusDestinationStatus < 3) {
+    unittest.expect(o.approvalStatus, unittest.equals('foo'));
+    unittest.expect(o.destination, unittest.equals('foo'));
+    unittest.expect(o.intention, unittest.equals('foo'));
+  }
+  buildCounterProductStatusDestinationStatus--;
+}
+
+core.int buildCounterProductTax = 0;
+buildProductTax() {
+  var o = new api.ProductTax();
+  buildCounterProductTax++;
+  if (buildCounterProductTax < 3) {
+    o.country = "foo";
+    o.locationId = "foo";
+    o.postalCode = "foo";
+    o.rate = 42.0;
+    o.region = "foo";
+    o.taxShip = true;
+  }
+  buildCounterProductTax--;
+  return o;
+}
+
+checkProductTax(api.ProductTax o) {
+  buildCounterProductTax++;
+  if (buildCounterProductTax < 3) {
+    unittest.expect(o.country, unittest.equals('foo'));
+    unittest.expect(o.locationId, unittest.equals('foo'));
+    unittest.expect(o.postalCode, unittest.equals('foo'));
+    unittest.expect(o.rate, unittest.equals(42.0));
+    unittest.expect(o.region, unittest.equals('foo'));
+    unittest.expect(o.taxShip, unittest.isTrue);
+  }
+  buildCounterProductTax--;
+}
+
+core.int buildCounterProductUnitPricingBaseMeasure = 0;
+buildProductUnitPricingBaseMeasure() {
+  var o = new api.ProductUnitPricingBaseMeasure();
+  buildCounterProductUnitPricingBaseMeasure++;
+  if (buildCounterProductUnitPricingBaseMeasure < 3) {
+    o.unit = "foo";
+    o.value = "foo";
+  }
+  buildCounterProductUnitPricingBaseMeasure--;
+  return o;
+}
+
+checkProductUnitPricingBaseMeasure(api.ProductUnitPricingBaseMeasure o) {
+  buildCounterProductUnitPricingBaseMeasure++;
+  if (buildCounterProductUnitPricingBaseMeasure < 3) {
+    unittest.expect(o.unit, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterProductUnitPricingBaseMeasure--;
+}
+
+core.int buildCounterProductUnitPricingMeasure = 0;
+buildProductUnitPricingMeasure() {
+  var o = new api.ProductUnitPricingMeasure();
+  buildCounterProductUnitPricingMeasure++;
+  if (buildCounterProductUnitPricingMeasure < 3) {
+    o.unit = "foo";
+    o.value = 42.0;
+  }
+  buildCounterProductUnitPricingMeasure--;
+  return o;
+}
+
+checkProductUnitPricingMeasure(api.ProductUnitPricingMeasure o) {
+  buildCounterProductUnitPricingMeasure++;
+  if (buildCounterProductUnitPricingMeasure < 3) {
+    unittest.expect(o.unit, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals(42.0));
+  }
+  buildCounterProductUnitPricingMeasure--;
+}
+
+buildUnnamed410() {
+  var o = new core.List<api.ProductsCustomBatchRequestEntry>();
+  o.add(buildProductsCustomBatchRequestEntry());
+  o.add(buildProductsCustomBatchRequestEntry());
+  return o;
+}
+
+checkUnnamed410(core.List<api.ProductsCustomBatchRequestEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProductsCustomBatchRequestEntry(o[0]);
+  checkProductsCustomBatchRequestEntry(o[1]);
+}
+
+core.int buildCounterProductsCustomBatchRequest = 0;
+buildProductsCustomBatchRequest() {
+  var o = new api.ProductsCustomBatchRequest();
+  buildCounterProductsCustomBatchRequest++;
+  if (buildCounterProductsCustomBatchRequest < 3) {
+    o.entries = buildUnnamed410();
+  }
+  buildCounterProductsCustomBatchRequest--;
+  return o;
+}
+
+checkProductsCustomBatchRequest(api.ProductsCustomBatchRequest o) {
+  buildCounterProductsCustomBatchRequest++;
+  if (buildCounterProductsCustomBatchRequest < 3) {
+    checkUnnamed410(o.entries);
+  }
+  buildCounterProductsCustomBatchRequest--;
+}
+
+core.int buildCounterProductsCustomBatchRequestEntry = 0;
+buildProductsCustomBatchRequestEntry() {
+  var o = new api.ProductsCustomBatchRequestEntry();
+  buildCounterProductsCustomBatchRequestEntry++;
+  if (buildCounterProductsCustomBatchRequestEntry < 3) {
+    o.batchId = 42;
+    o.merchantId = "foo";
+    o.method = "foo";
+    o.product = buildProduct();
+    o.productId = "foo";
+  }
+  buildCounterProductsCustomBatchRequestEntry--;
+  return o;
+}
+
+checkProductsCustomBatchRequestEntry(api.ProductsCustomBatchRequestEntry o) {
+  buildCounterProductsCustomBatchRequestEntry++;
+  if (buildCounterProductsCustomBatchRequestEntry < 3) {
+    unittest.expect(o.batchId, unittest.equals(42));
+    unittest.expect(o.merchantId, unittest.equals('foo'));
+    unittest.expect(o.method, unittest.equals('foo'));
+    checkProduct(o.product);
+    unittest.expect(o.productId, unittest.equals('foo'));
+  }
+  buildCounterProductsCustomBatchRequestEntry--;
+}
+
+buildUnnamed411() {
+  var o = new core.List<api.ProductsCustomBatchResponseEntry>();
+  o.add(buildProductsCustomBatchResponseEntry());
+  o.add(buildProductsCustomBatchResponseEntry());
+  return o;
+}
+
+checkUnnamed411(core.List<api.ProductsCustomBatchResponseEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProductsCustomBatchResponseEntry(o[0]);
+  checkProductsCustomBatchResponseEntry(o[1]);
+}
+
+core.int buildCounterProductsCustomBatchResponse = 0;
+buildProductsCustomBatchResponse() {
+  var o = new api.ProductsCustomBatchResponse();
+  buildCounterProductsCustomBatchResponse++;
+  if (buildCounterProductsCustomBatchResponse < 3) {
+    o.entries = buildUnnamed411();
+    o.kind = "foo";
+  }
+  buildCounterProductsCustomBatchResponse--;
+  return o;
+}
+
+checkProductsCustomBatchResponse(api.ProductsCustomBatchResponse o) {
+  buildCounterProductsCustomBatchResponse++;
+  if (buildCounterProductsCustomBatchResponse < 3) {
+    checkUnnamed411(o.entries);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterProductsCustomBatchResponse--;
+}
+
+core.int buildCounterProductsCustomBatchResponseEntry = 0;
+buildProductsCustomBatchResponseEntry() {
+  var o = new api.ProductsCustomBatchResponseEntry();
+  buildCounterProductsCustomBatchResponseEntry++;
+  if (buildCounterProductsCustomBatchResponseEntry < 3) {
+    o.batchId = 42;
+    o.errors = buildErrors();
+    o.kind = "foo";
+    o.product = buildProduct();
+  }
+  buildCounterProductsCustomBatchResponseEntry--;
+  return o;
+}
+
+checkProductsCustomBatchResponseEntry(api.ProductsCustomBatchResponseEntry o) {
+  buildCounterProductsCustomBatchResponseEntry++;
+  if (buildCounterProductsCustomBatchResponseEntry < 3) {
+    unittest.expect(o.batchId, unittest.equals(42));
+    checkErrors(o.errors);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkProduct(o.product);
+  }
+  buildCounterProductsCustomBatchResponseEntry--;
+}
+
+buildUnnamed412() {
+  var o = new core.List<api.Product>();
+  o.add(buildProduct());
+  o.add(buildProduct());
+  return o;
+}
+
+checkUnnamed412(core.List<api.Product> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProduct(o[0]);
+  checkProduct(o[1]);
+}
+
+core.int buildCounterProductsListResponse = 0;
+buildProductsListResponse() {
+  var o = new api.ProductsListResponse();
+  buildCounterProductsListResponse++;
+  if (buildCounterProductsListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.resources = buildUnnamed412();
+  }
+  buildCounterProductsListResponse--;
+  return o;
+}
+
+checkProductsListResponse(api.ProductsListResponse o) {
+  buildCounterProductsListResponse++;
+  if (buildCounterProductsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed412(o.resources);
+  }
+  buildCounterProductsListResponse--;
+}
+
+buildUnnamed413() {
+  var o = new core.List<api.ProductstatusesCustomBatchRequestEntry>();
+  o.add(buildProductstatusesCustomBatchRequestEntry());
+  o.add(buildProductstatusesCustomBatchRequestEntry());
+  return o;
+}
+
+checkUnnamed413(core.List<api.ProductstatusesCustomBatchRequestEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProductstatusesCustomBatchRequestEntry(o[0]);
+  checkProductstatusesCustomBatchRequestEntry(o[1]);
+}
+
+core.int buildCounterProductstatusesCustomBatchRequest = 0;
+buildProductstatusesCustomBatchRequest() {
+  var o = new api.ProductstatusesCustomBatchRequest();
+  buildCounterProductstatusesCustomBatchRequest++;
+  if (buildCounterProductstatusesCustomBatchRequest < 3) {
+    o.entries = buildUnnamed413();
+  }
+  buildCounterProductstatusesCustomBatchRequest--;
+  return o;
+}
+
+checkProductstatusesCustomBatchRequest(
+    api.ProductstatusesCustomBatchRequest o) {
+  buildCounterProductstatusesCustomBatchRequest++;
+  if (buildCounterProductstatusesCustomBatchRequest < 3) {
+    checkUnnamed413(o.entries);
+  }
+  buildCounterProductstatusesCustomBatchRequest--;
+}
+
+core.int buildCounterProductstatusesCustomBatchRequestEntry = 0;
+buildProductstatusesCustomBatchRequestEntry() {
+  var o = new api.ProductstatusesCustomBatchRequestEntry();
+  buildCounterProductstatusesCustomBatchRequestEntry++;
+  if (buildCounterProductstatusesCustomBatchRequestEntry < 3) {
+    o.batchId = 42;
+    o.includeAttributes = true;
+    o.merchantId = "foo";
+    o.method = "foo";
+    o.productId = "foo";
+  }
+  buildCounterProductstatusesCustomBatchRequestEntry--;
+  return o;
+}
+
+checkProductstatusesCustomBatchRequestEntry(
+    api.ProductstatusesCustomBatchRequestEntry o) {
+  buildCounterProductstatusesCustomBatchRequestEntry++;
+  if (buildCounterProductstatusesCustomBatchRequestEntry < 3) {
+    unittest.expect(o.batchId, unittest.equals(42));
+    unittest.expect(o.includeAttributes, unittest.isTrue);
+    unittest.expect(o.merchantId, unittest.equals('foo'));
+    unittest.expect(o.method, unittest.equals('foo'));
+    unittest.expect(o.productId, unittest.equals('foo'));
+  }
+  buildCounterProductstatusesCustomBatchRequestEntry--;
+}
+
+buildUnnamed414() {
+  var o = new core.List<api.ProductstatusesCustomBatchResponseEntry>();
+  o.add(buildProductstatusesCustomBatchResponseEntry());
+  o.add(buildProductstatusesCustomBatchResponseEntry());
+  return o;
+}
+
+checkUnnamed414(core.List<api.ProductstatusesCustomBatchResponseEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProductstatusesCustomBatchResponseEntry(o[0]);
+  checkProductstatusesCustomBatchResponseEntry(o[1]);
+}
+
+core.int buildCounterProductstatusesCustomBatchResponse = 0;
+buildProductstatusesCustomBatchResponse() {
+  var o = new api.ProductstatusesCustomBatchResponse();
+  buildCounterProductstatusesCustomBatchResponse++;
+  if (buildCounterProductstatusesCustomBatchResponse < 3) {
+    o.entries = buildUnnamed414();
+    o.kind = "foo";
+  }
+  buildCounterProductstatusesCustomBatchResponse--;
+  return o;
+}
+
+checkProductstatusesCustomBatchResponse(
+    api.ProductstatusesCustomBatchResponse o) {
+  buildCounterProductstatusesCustomBatchResponse++;
+  if (buildCounterProductstatusesCustomBatchResponse < 3) {
+    checkUnnamed414(o.entries);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterProductstatusesCustomBatchResponse--;
+}
+
+core.int buildCounterProductstatusesCustomBatchResponseEntry = 0;
+buildProductstatusesCustomBatchResponseEntry() {
+  var o = new api.ProductstatusesCustomBatchResponseEntry();
+  buildCounterProductstatusesCustomBatchResponseEntry++;
+  if (buildCounterProductstatusesCustomBatchResponseEntry < 3) {
+    o.batchId = 42;
+    o.errors = buildErrors();
+    o.kind = "foo";
+    o.productStatus = buildProductStatus();
+  }
+  buildCounterProductstatusesCustomBatchResponseEntry--;
+  return o;
+}
+
+checkProductstatusesCustomBatchResponseEntry(
+    api.ProductstatusesCustomBatchResponseEntry o) {
+  buildCounterProductstatusesCustomBatchResponseEntry++;
+  if (buildCounterProductstatusesCustomBatchResponseEntry < 3) {
+    unittest.expect(o.batchId, unittest.equals(42));
+    checkErrors(o.errors);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkProductStatus(o.productStatus);
+  }
+  buildCounterProductstatusesCustomBatchResponseEntry--;
+}
+
+buildUnnamed415() {
+  var o = new core.List<api.ProductStatus>();
+  o.add(buildProductStatus());
+  o.add(buildProductStatus());
+  return o;
+}
+
+checkUnnamed415(core.List<api.ProductStatus> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProductStatus(o[0]);
+  checkProductStatus(o[1]);
+}
+
+core.int buildCounterProductstatusesListResponse = 0;
+buildProductstatusesListResponse() {
+  var o = new api.ProductstatusesListResponse();
+  buildCounterProductstatusesListResponse++;
+  if (buildCounterProductstatusesListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.resources = buildUnnamed415();
+  }
+  buildCounterProductstatusesListResponse--;
+  return o;
+}
+
+checkProductstatusesListResponse(api.ProductstatusesListResponse o) {
+  buildCounterProductstatusesListResponse++;
+  if (buildCounterProductstatusesListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed415(o.resources);
+  }
+  buildCounterProductstatusesListResponse--;
+}
+
+buildUnnamed416() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed416(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed417() {
+  var o = new core.List<api.CarrierRate>();
+  o.add(buildCarrierRate());
+  o.add(buildCarrierRate());
+  return o;
+}
+
+checkUnnamed417(core.List<api.CarrierRate> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCarrierRate(o[0]);
+  checkCarrierRate(o[1]);
+}
+
+buildUnnamed418() {
+  var o = new core.List<api.Table>();
+  o.add(buildTable());
+  o.add(buildTable());
+  return o;
+}
+
+checkUnnamed418(core.List<api.Table> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTable(o[0]);
+  checkTable(o[1]);
+}
+
+core.int buildCounterRateGroup = 0;
+buildRateGroup() {
+  var o = new api.RateGroup();
+  buildCounterRateGroup++;
+  if (buildCounterRateGroup < 3) {
+    o.applicableShippingLabels = buildUnnamed416();
+    o.carrierRates = buildUnnamed417();
+    o.mainTable = buildTable();
+    o.singleValue = buildValue();
+    o.subtables = buildUnnamed418();
+  }
+  buildCounterRateGroup--;
+  return o;
+}
+
+checkRateGroup(api.RateGroup o) {
+  buildCounterRateGroup++;
+  if (buildCounterRateGroup < 3) {
+    checkUnnamed416(o.applicableShippingLabels);
+    checkUnnamed417(o.carrierRates);
+    checkTable(o.mainTable);
+    checkValue(o.singleValue);
+    checkUnnamed418(o.subtables);
+  }
+  buildCounterRateGroup--;
+}
+
+buildUnnamed419() {
+  var o = new core.List<api.Value>();
+  o.add(buildValue());
+  o.add(buildValue());
+  return o;
+}
+
+checkUnnamed419(core.List<api.Value> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkValue(o[0]);
+  checkValue(o[1]);
+}
+
+core.int buildCounterRow = 0;
+buildRow() {
+  var o = new api.Row();
+  buildCounterRow++;
+  if (buildCounterRow < 3) {
+    o.cells = buildUnnamed419();
+  }
+  buildCounterRow--;
+  return o;
+}
+
+checkRow(api.Row o) {
+  buildCounterRow++;
+  if (buildCounterRow < 3) {
+    checkUnnamed419(o.cells);
+  }
+  buildCounterRow--;
+}
+
+buildUnnamed420() {
+  var o = new core.List<api.RateGroup>();
+  o.add(buildRateGroup());
+  o.add(buildRateGroup());
+  return o;
+}
+
+checkUnnamed420(core.List<api.RateGroup> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRateGroup(o[0]);
+  checkRateGroup(o[1]);
+}
+
+core.int buildCounterService = 0;
+buildService() {
+  var o = new api.Service();
+  buildCounterService++;
+  if (buildCounterService < 3) {
+    o.active = true;
+    o.currency = "foo";
+    o.deliveryCountry = "foo";
+    o.deliveryTime = buildDeliveryTime();
+    o.minimumOrderValue = buildPrice();
+    o.name = "foo";
+    o.rateGroups = buildUnnamed420();
+  }
+  buildCounterService--;
+  return o;
+}
+
+checkService(api.Service o) {
+  buildCounterService++;
+  if (buildCounterService < 3) {
+    unittest.expect(o.active, unittest.isTrue);
+    unittest.expect(o.currency, unittest.equals('foo'));
+    unittest.expect(o.deliveryCountry, unittest.equals('foo'));
+    checkDeliveryTime(o.deliveryTime);
+    checkPrice(o.minimumOrderValue);
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed420(o.rateGroups);
+  }
+  buildCounterService--;
+}
+
+buildUnnamed421() {
+  var o = new core.List<api.PostalCodeGroup>();
+  o.add(buildPostalCodeGroup());
+  o.add(buildPostalCodeGroup());
+  return o;
+}
+
+checkUnnamed421(core.List<api.PostalCodeGroup> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPostalCodeGroup(o[0]);
+  checkPostalCodeGroup(o[1]);
+}
+
+buildUnnamed422() {
+  var o = new core.List<api.Service>();
+  o.add(buildService());
+  o.add(buildService());
+  return o;
+}
+
+checkUnnamed422(core.List<api.Service> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkService(o[0]);
+  checkService(o[1]);
+}
+
+core.int buildCounterShippingSettings = 0;
+buildShippingSettings() {
+  var o = new api.ShippingSettings();
+  buildCounterShippingSettings++;
+  if (buildCounterShippingSettings < 3) {
+    o.accountId = "foo";
+    o.postalCodeGroups = buildUnnamed421();
+    o.services = buildUnnamed422();
+  }
+  buildCounterShippingSettings--;
+  return o;
+}
+
+checkShippingSettings(api.ShippingSettings o) {
+  buildCounterShippingSettings++;
+  if (buildCounterShippingSettings < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkUnnamed421(o.postalCodeGroups);
+    checkUnnamed422(o.services);
+  }
+  buildCounterShippingSettings--;
+}
+
+buildUnnamed423() {
+  var o = new core.List<api.ShippingsettingsCustomBatchRequestEntry>();
+  o.add(buildShippingsettingsCustomBatchRequestEntry());
+  o.add(buildShippingsettingsCustomBatchRequestEntry());
+  return o;
+}
+
+checkUnnamed423(core.List<api.ShippingsettingsCustomBatchRequestEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkShippingsettingsCustomBatchRequestEntry(o[0]);
+  checkShippingsettingsCustomBatchRequestEntry(o[1]);
+}
+
+core.int buildCounterShippingsettingsCustomBatchRequest = 0;
+buildShippingsettingsCustomBatchRequest() {
+  var o = new api.ShippingsettingsCustomBatchRequest();
+  buildCounterShippingsettingsCustomBatchRequest++;
+  if (buildCounterShippingsettingsCustomBatchRequest < 3) {
+    o.entries = buildUnnamed423();
+  }
+  buildCounterShippingsettingsCustomBatchRequest--;
+  return o;
+}
+
+checkShippingsettingsCustomBatchRequest(
+    api.ShippingsettingsCustomBatchRequest o) {
+  buildCounterShippingsettingsCustomBatchRequest++;
+  if (buildCounterShippingsettingsCustomBatchRequest < 3) {
+    checkUnnamed423(o.entries);
+  }
+  buildCounterShippingsettingsCustomBatchRequest--;
+}
+
+core.int buildCounterShippingsettingsCustomBatchRequestEntry = 0;
+buildShippingsettingsCustomBatchRequestEntry() {
+  var o = new api.ShippingsettingsCustomBatchRequestEntry();
+  buildCounterShippingsettingsCustomBatchRequestEntry++;
+  if (buildCounterShippingsettingsCustomBatchRequestEntry < 3) {
+    o.accountId = "foo";
+    o.batchId = 42;
+    o.merchantId = "foo";
+    o.method = "foo";
+    o.shippingSettings = buildShippingSettings();
+  }
+  buildCounterShippingsettingsCustomBatchRequestEntry--;
+  return o;
+}
+
+checkShippingsettingsCustomBatchRequestEntry(
+    api.ShippingsettingsCustomBatchRequestEntry o) {
+  buildCounterShippingsettingsCustomBatchRequestEntry++;
+  if (buildCounterShippingsettingsCustomBatchRequestEntry < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.batchId, unittest.equals(42));
+    unittest.expect(o.merchantId, unittest.equals('foo'));
+    unittest.expect(o.method, unittest.equals('foo'));
+    checkShippingSettings(o.shippingSettings);
+  }
+  buildCounterShippingsettingsCustomBatchRequestEntry--;
+}
+
+buildUnnamed424() {
+  var o = new core.List<api.ShippingsettingsCustomBatchResponseEntry>();
+  o.add(buildShippingsettingsCustomBatchResponseEntry());
+  o.add(buildShippingsettingsCustomBatchResponseEntry());
+  return o;
+}
+
+checkUnnamed424(core.List<api.ShippingsettingsCustomBatchResponseEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkShippingsettingsCustomBatchResponseEntry(o[0]);
+  checkShippingsettingsCustomBatchResponseEntry(o[1]);
+}
+
+core.int buildCounterShippingsettingsCustomBatchResponse = 0;
+buildShippingsettingsCustomBatchResponse() {
+  var o = new api.ShippingsettingsCustomBatchResponse();
+  buildCounterShippingsettingsCustomBatchResponse++;
+  if (buildCounterShippingsettingsCustomBatchResponse < 3) {
+    o.entries = buildUnnamed424();
+    o.kind = "foo";
+  }
+  buildCounterShippingsettingsCustomBatchResponse--;
+  return o;
+}
+
+checkShippingsettingsCustomBatchResponse(
+    api.ShippingsettingsCustomBatchResponse o) {
+  buildCounterShippingsettingsCustomBatchResponse++;
+  if (buildCounterShippingsettingsCustomBatchResponse < 3) {
+    checkUnnamed424(o.entries);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterShippingsettingsCustomBatchResponse--;
+}
+
+core.int buildCounterShippingsettingsCustomBatchResponseEntry = 0;
+buildShippingsettingsCustomBatchResponseEntry() {
+  var o = new api.ShippingsettingsCustomBatchResponseEntry();
+  buildCounterShippingsettingsCustomBatchResponseEntry++;
+  if (buildCounterShippingsettingsCustomBatchResponseEntry < 3) {
+    o.batchId = 42;
+    o.errors = buildErrors();
+    o.kind = "foo";
+    o.shippingSettings = buildShippingSettings();
+  }
+  buildCounterShippingsettingsCustomBatchResponseEntry--;
+  return o;
+}
+
+checkShippingsettingsCustomBatchResponseEntry(
+    api.ShippingsettingsCustomBatchResponseEntry o) {
+  buildCounterShippingsettingsCustomBatchResponseEntry++;
+  if (buildCounterShippingsettingsCustomBatchResponseEntry < 3) {
+    unittest.expect(o.batchId, unittest.equals(42));
+    checkErrors(o.errors);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkShippingSettings(o.shippingSettings);
+  }
+  buildCounterShippingsettingsCustomBatchResponseEntry--;
+}
+
+buildUnnamed425() {
+  var o = new core.List<api.CarriersCarrier>();
+  o.add(buildCarriersCarrier());
+  o.add(buildCarriersCarrier());
+  return o;
+}
+
+checkUnnamed425(core.List<api.CarriersCarrier> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCarriersCarrier(o[0]);
+  checkCarriersCarrier(o[1]);
+}
+
+core.int buildCounterShippingsettingsGetSupportedCarriersResponse = 0;
+buildShippingsettingsGetSupportedCarriersResponse() {
+  var o = new api.ShippingsettingsGetSupportedCarriersResponse();
+  buildCounterShippingsettingsGetSupportedCarriersResponse++;
+  if (buildCounterShippingsettingsGetSupportedCarriersResponse < 3) {
+    o.carriers = buildUnnamed425();
+    o.kind = "foo";
+  }
+  buildCounterShippingsettingsGetSupportedCarriersResponse--;
+  return o;
+}
+
+checkShippingsettingsGetSupportedCarriersResponse(
+    api.ShippingsettingsGetSupportedCarriersResponse o) {
+  buildCounterShippingsettingsGetSupportedCarriersResponse++;
+  if (buildCounterShippingsettingsGetSupportedCarriersResponse < 3) {
+    checkUnnamed425(o.carriers);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterShippingsettingsGetSupportedCarriersResponse--;
+}
+
+buildUnnamed426() {
+  var o = new core.List<api.ShippingSettings>();
+  o.add(buildShippingSettings());
+  o.add(buildShippingSettings());
+  return o;
+}
+
+checkUnnamed426(core.List<api.ShippingSettings> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkShippingSettings(o[0]);
+  checkShippingSettings(o[1]);
+}
+
+core.int buildCounterShippingsettingsListResponse = 0;
+buildShippingsettingsListResponse() {
+  var o = new api.ShippingsettingsListResponse();
+  buildCounterShippingsettingsListResponse++;
+  if (buildCounterShippingsettingsListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.resources = buildUnnamed426();
+  }
+  buildCounterShippingsettingsListResponse--;
+  return o;
+}
+
+checkShippingsettingsListResponse(api.ShippingsettingsListResponse o) {
+  buildCounterShippingsettingsListResponse++;
+  if (buildCounterShippingsettingsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed426(o.resources);
+  }
+  buildCounterShippingsettingsListResponse--;
+}
+
+buildUnnamed427() {
+  var o = new core.List<api.Row>();
+  o.add(buildRow());
+  o.add(buildRow());
+  return o;
+}
+
+checkUnnamed427(core.List<api.Row> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRow(o[0]);
+  checkRow(o[1]);
+}
+
+core.int buildCounterTable = 0;
+buildTable() {
+  var o = new api.Table();
+  buildCounterTable++;
+  if (buildCounterTable < 3) {
+    o.columnHeaders = buildHeaders();
+    o.name = "foo";
+    o.rowHeaders = buildHeaders();
+    o.rows = buildUnnamed427();
+  }
+  buildCounterTable--;
+  return o;
+}
+
+checkTable(api.Table o) {
+  buildCounterTable++;
+  if (buildCounterTable < 3) {
+    checkHeaders(o.columnHeaders);
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkHeaders(o.rowHeaders);
+    checkUnnamed427(o.rows);
+  }
+  buildCounterTable--;
+}
+
+buildUnnamed428() {
+  var o = new core.List<api.TestOrderLineItem>();
+  o.add(buildTestOrderLineItem());
+  o.add(buildTestOrderLineItem());
+  return o;
+}
+
+checkUnnamed428(core.List<api.TestOrderLineItem> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTestOrderLineItem(o[0]);
+  checkTestOrderLineItem(o[1]);
+}
+
+buildUnnamed429() {
+  var o = new core.List<api.OrderPromotion>();
+  o.add(buildOrderPromotion());
+  o.add(buildOrderPromotion());
+  return o;
+}
+
+checkUnnamed429(core.List<api.OrderPromotion> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderPromotion(o[0]);
+  checkOrderPromotion(o[1]);
+}
+
+core.int buildCounterTestOrder = 0;
+buildTestOrder() {
+  var o = new api.TestOrder();
+  buildCounterTestOrder++;
+  if (buildCounterTestOrder < 3) {
+    o.customer = buildTestOrderCustomer();
+    o.kind = "foo";
+    o.lineItems = buildUnnamed428();
+    o.paymentMethod = buildTestOrderPaymentMethod();
+    o.predefinedDeliveryAddress = "foo";
+    o.promotions = buildUnnamed429();
+    o.shippingCost = buildPrice();
+    o.shippingCostTax = buildPrice();
+    o.shippingOption = "foo";
+  }
+  buildCounterTestOrder--;
+  return o;
+}
+
+checkTestOrder(api.TestOrder o) {
+  buildCounterTestOrder++;
+  if (buildCounterTestOrder < 3) {
+    checkTestOrderCustomer(o.customer);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed428(o.lineItems);
+    checkTestOrderPaymentMethod(o.paymentMethod);
+    unittest.expect(o.predefinedDeliveryAddress, unittest.equals('foo'));
+    checkUnnamed429(o.promotions);
+    checkPrice(o.shippingCost);
+    checkPrice(o.shippingCostTax);
+    unittest.expect(o.shippingOption, unittest.equals('foo'));
+  }
+  buildCounterTestOrder--;
+}
+
+core.int buildCounterTestOrderCustomer = 0;
+buildTestOrderCustomer() {
+  var o = new api.TestOrderCustomer();
+  buildCounterTestOrderCustomer++;
+  if (buildCounterTestOrderCustomer < 3) {
+    o.email = "foo";
+    o.explicitMarketingPreference = true;
+    o.fullName = "foo";
+  }
+  buildCounterTestOrderCustomer--;
+  return o;
+}
+
+checkTestOrderCustomer(api.TestOrderCustomer o) {
+  buildCounterTestOrderCustomer++;
+  if (buildCounterTestOrderCustomer < 3) {
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.explicitMarketingPreference, unittest.isTrue);
+    unittest.expect(o.fullName, unittest.equals('foo'));
+  }
+  buildCounterTestOrderCustomer--;
+}
+
+core.int buildCounterTestOrderLineItem = 0;
+buildTestOrderLineItem() {
+  var o = new api.TestOrderLineItem();
+  buildCounterTestOrderLineItem++;
+  if (buildCounterTestOrderLineItem < 3) {
+    o.product = buildTestOrderLineItemProduct();
+    o.quantityOrdered = 42;
+    o.returnInfo = buildOrderLineItemReturnInfo();
+    o.shippingDetails = buildOrderLineItemShippingDetails();
+    o.unitTax = buildPrice();
+  }
+  buildCounterTestOrderLineItem--;
+  return o;
+}
+
+checkTestOrderLineItem(api.TestOrderLineItem o) {
+  buildCounterTestOrderLineItem++;
+  if (buildCounterTestOrderLineItem < 3) {
+    checkTestOrderLineItemProduct(o.product);
+    unittest.expect(o.quantityOrdered, unittest.equals(42));
+    checkOrderLineItemReturnInfo(o.returnInfo);
+    checkOrderLineItemShippingDetails(o.shippingDetails);
+    checkPrice(o.unitTax);
+  }
+  buildCounterTestOrderLineItem--;
+}
+
+buildUnnamed430() {
+  var o = new core.List<api.OrderLineItemProductVariantAttribute>();
+  o.add(buildOrderLineItemProductVariantAttribute());
+  o.add(buildOrderLineItemProductVariantAttribute());
+  return o;
+}
+
+checkUnnamed430(core.List<api.OrderLineItemProductVariantAttribute> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderLineItemProductVariantAttribute(o[0]);
+  checkOrderLineItemProductVariantAttribute(o[1]);
+}
+
+core.int buildCounterTestOrderLineItemProduct = 0;
+buildTestOrderLineItemProduct() {
+  var o = new api.TestOrderLineItemProduct();
+  buildCounterTestOrderLineItemProduct++;
+  if (buildCounterTestOrderLineItemProduct < 3) {
+    o.brand = "foo";
+    o.channel = "foo";
+    o.condition = "foo";
+    o.contentLanguage = "foo";
+    o.gtin = "foo";
+    o.imageLink = "foo";
+    o.itemGroupId = "foo";
+    o.mpn = "foo";
+    o.offerId = "foo";
+    o.price = buildPrice();
+    o.targetCountry = "foo";
+    o.title = "foo";
+    o.variantAttributes = buildUnnamed430();
+  }
+  buildCounterTestOrderLineItemProduct--;
+  return o;
+}
+
+checkTestOrderLineItemProduct(api.TestOrderLineItemProduct o) {
+  buildCounterTestOrderLineItemProduct++;
+  if (buildCounterTestOrderLineItemProduct < 3) {
+    unittest.expect(o.brand, unittest.equals('foo'));
+    unittest.expect(o.channel, unittest.equals('foo'));
+    unittest.expect(o.condition, unittest.equals('foo'));
+    unittest.expect(o.contentLanguage, unittest.equals('foo'));
+    unittest.expect(o.gtin, unittest.equals('foo'));
+    unittest.expect(o.imageLink, unittest.equals('foo'));
+    unittest.expect(o.itemGroupId, unittest.equals('foo'));
+    unittest.expect(o.mpn, unittest.equals('foo'));
+    unittest.expect(o.offerId, unittest.equals('foo'));
+    checkPrice(o.price);
+    unittest.expect(o.targetCountry, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    checkUnnamed430(o.variantAttributes);
+  }
+  buildCounterTestOrderLineItemProduct--;
+}
+
+core.int buildCounterTestOrderPaymentMethod = 0;
+buildTestOrderPaymentMethod() {
+  var o = new api.TestOrderPaymentMethod();
+  buildCounterTestOrderPaymentMethod++;
+  if (buildCounterTestOrderPaymentMethod < 3) {
+    o.expirationMonth = 42;
+    o.expirationYear = 42;
+    o.lastFourDigits = "foo";
+    o.predefinedBillingAddress = "foo";
+    o.type = "foo";
+  }
+  buildCounterTestOrderPaymentMethod--;
+  return o;
+}
+
+checkTestOrderPaymentMethod(api.TestOrderPaymentMethod o) {
+  buildCounterTestOrderPaymentMethod++;
+  if (buildCounterTestOrderPaymentMethod < 3) {
+    unittest.expect(o.expirationMonth, unittest.equals(42));
+    unittest.expect(o.expirationYear, unittest.equals(42));
+    unittest.expect(o.lastFourDigits, unittest.equals('foo'));
+    unittest.expect(o.predefinedBillingAddress, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterTestOrderPaymentMethod--;
+}
+
+core.int buildCounterValue = 0;
+buildValue() {
+  var o = new api.Value();
+  buildCounterValue++;
+  if (buildCounterValue < 3) {
+    o.carrierRateName = "foo";
+    o.flatRate = buildPrice();
+    o.noShipping = true;
+    o.pricePercentage = "foo";
+    o.subtableName = "foo";
+  }
+  buildCounterValue--;
+  return o;
+}
+
+checkValue(api.Value o) {
+  buildCounterValue++;
+  if (buildCounterValue < 3) {
+    unittest.expect(o.carrierRateName, unittest.equals('foo'));
+    checkPrice(o.flatRate);
+    unittest.expect(o.noShipping, unittest.isTrue);
+    unittest.expect(o.pricePercentage, unittest.equals('foo'));
+    unittest.expect(o.subtableName, unittest.equals('foo'));
+  }
+  buildCounterValue--;
+}
+
+core.int buildCounterWeight = 0;
+buildWeight() {
+  var o = new api.Weight();
+  buildCounterWeight++;
+  if (buildCounterWeight < 3) {
+    o.unit = "foo";
+    o.value = "foo";
+  }
+  buildCounterWeight--;
+  return o;
+}
+
+checkWeight(api.Weight o) {
+  buildCounterWeight++;
+  if (buildCounterWeight < 3) {
+    unittest.expect(o.unit, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterWeight--;
+}
+
+buildUnnamed431() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed431(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-Account", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccount();
+      var od = new api.Account.fromJson(o.toJson());
+      checkAccount(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountAdwordsLink", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountAdwordsLink();
+      var od = new api.AccountAdwordsLink.fromJson(o.toJson());
+      checkAccountAdwordsLink(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountIdentifier", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountIdentifier();
+      var od = new api.AccountIdentifier.fromJson(o.toJson());
+      checkAccountIdentifier(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountStatus", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountStatus();
+      var od = new api.AccountStatus.fromJson(o.toJson());
+      checkAccountStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountStatusAccountLevelIssue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountStatusAccountLevelIssue();
+      var od = new api.AccountStatusAccountLevelIssue.fromJson(o.toJson());
+      checkAccountStatusAccountLevelIssue(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountStatusDataQualityIssue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountStatusDataQualityIssue();
+      var od = new api.AccountStatusDataQualityIssue.fromJson(o.toJson());
+      checkAccountStatusDataQualityIssue(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountStatusExampleItem", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountStatusExampleItem();
+      var od = new api.AccountStatusExampleItem.fromJson(o.toJson());
+      checkAccountStatusExampleItem(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountTax", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountTax();
+      var od = new api.AccountTax.fromJson(o.toJson());
+      checkAccountTax(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountTaxTaxRule", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountTaxTaxRule();
+      var od = new api.AccountTaxTaxRule.fromJson(o.toJson());
+      checkAccountTaxTaxRule(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountUser", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountUser();
+      var od = new api.AccountUser.fromJson(o.toJson());
+      checkAccountUser(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountYouTubeChannelLink", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountYouTubeChannelLink();
+      var od = new api.AccountYouTubeChannelLink.fromJson(o.toJson());
+      checkAccountYouTubeChannelLink(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountsAuthInfoResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountsAuthInfoResponse();
+      var od = new api.AccountsAuthInfoResponse.fromJson(o.toJson());
+      checkAccountsAuthInfoResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountsClaimWebsiteResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountsClaimWebsiteResponse();
+      var od = new api.AccountsClaimWebsiteResponse.fromJson(o.toJson());
+      checkAccountsClaimWebsiteResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountsCustomBatchRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountsCustomBatchRequest();
+      var od = new api.AccountsCustomBatchRequest.fromJson(o.toJson());
+      checkAccountsCustomBatchRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountsCustomBatchRequestEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountsCustomBatchRequestEntry();
+      var od = new api.AccountsCustomBatchRequestEntry.fromJson(o.toJson());
+      checkAccountsCustomBatchRequestEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountsCustomBatchResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountsCustomBatchResponse();
+      var od = new api.AccountsCustomBatchResponse.fromJson(o.toJson());
+      checkAccountsCustomBatchResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountsCustomBatchResponseEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountsCustomBatchResponseEntry();
+      var od = new api.AccountsCustomBatchResponseEntry.fromJson(o.toJson());
+      checkAccountsCustomBatchResponseEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountsListResponse();
+      var od = new api.AccountsListResponse.fromJson(o.toJson());
+      checkAccountsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountstatusesCustomBatchRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountstatusesCustomBatchRequest();
+      var od = new api.AccountstatusesCustomBatchRequest.fromJson(o.toJson());
+      checkAccountstatusesCustomBatchRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountstatusesCustomBatchRequestEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountstatusesCustomBatchRequestEntry();
+      var od =
+          new api.AccountstatusesCustomBatchRequestEntry.fromJson(o.toJson());
+      checkAccountstatusesCustomBatchRequestEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountstatusesCustomBatchResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountstatusesCustomBatchResponse();
+      var od = new api.AccountstatusesCustomBatchResponse.fromJson(o.toJson());
+      checkAccountstatusesCustomBatchResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountstatusesCustomBatchResponseEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountstatusesCustomBatchResponseEntry();
+      var od =
+          new api.AccountstatusesCustomBatchResponseEntry.fromJson(o.toJson());
+      checkAccountstatusesCustomBatchResponseEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountstatusesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountstatusesListResponse();
+      var od = new api.AccountstatusesListResponse.fromJson(o.toJson());
+      checkAccountstatusesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccounttaxCustomBatchRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccounttaxCustomBatchRequest();
+      var od = new api.AccounttaxCustomBatchRequest.fromJson(o.toJson());
+      checkAccounttaxCustomBatchRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccounttaxCustomBatchRequestEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccounttaxCustomBatchRequestEntry();
+      var od = new api.AccounttaxCustomBatchRequestEntry.fromJson(o.toJson());
+      checkAccounttaxCustomBatchRequestEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccounttaxCustomBatchResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccounttaxCustomBatchResponse();
+      var od = new api.AccounttaxCustomBatchResponse.fromJson(o.toJson());
+      checkAccounttaxCustomBatchResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccounttaxCustomBatchResponseEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccounttaxCustomBatchResponseEntry();
+      var od = new api.AccounttaxCustomBatchResponseEntry.fromJson(o.toJson());
+      checkAccounttaxCustomBatchResponseEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccounttaxListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccounttaxListResponse();
+      var od = new api.AccounttaxListResponse.fromJson(o.toJson());
+      checkAccounttaxListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CarrierRate", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCarrierRate();
+      var od = new api.CarrierRate.fromJson(o.toJson());
+      checkCarrierRate(od);
+    });
+  });
+
+  unittest.group("obj-schema-CarriersCarrier", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCarriersCarrier();
+      var od = new api.CarriersCarrier.fromJson(o.toJson());
+      checkCarriersCarrier(od);
+    });
+  });
+
+  unittest.group("obj-schema-Datafeed", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeed();
+      var od = new api.Datafeed.fromJson(o.toJson());
+      checkDatafeed(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedFetchSchedule", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedFetchSchedule();
+      var od = new api.DatafeedFetchSchedule.fromJson(o.toJson());
+      checkDatafeedFetchSchedule(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedFormat", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedFormat();
+      var od = new api.DatafeedFormat.fromJson(o.toJson());
+      checkDatafeedFormat(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedStatus", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedStatus();
+      var od = new api.DatafeedStatus.fromJson(o.toJson());
+      checkDatafeedStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedStatusError", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedStatusError();
+      var od = new api.DatafeedStatusError.fromJson(o.toJson());
+      checkDatafeedStatusError(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedStatusExample", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedStatusExample();
+      var od = new api.DatafeedStatusExample.fromJson(o.toJson());
+      checkDatafeedStatusExample(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedTarget", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedTarget();
+      var od = new api.DatafeedTarget.fromJson(o.toJson());
+      checkDatafeedTarget(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedsCustomBatchRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedsCustomBatchRequest();
+      var od = new api.DatafeedsCustomBatchRequest.fromJson(o.toJson());
+      checkDatafeedsCustomBatchRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedsCustomBatchRequestEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedsCustomBatchRequestEntry();
+      var od = new api.DatafeedsCustomBatchRequestEntry.fromJson(o.toJson());
+      checkDatafeedsCustomBatchRequestEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedsCustomBatchResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedsCustomBatchResponse();
+      var od = new api.DatafeedsCustomBatchResponse.fromJson(o.toJson());
+      checkDatafeedsCustomBatchResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedsCustomBatchResponseEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedsCustomBatchResponseEntry();
+      var od = new api.DatafeedsCustomBatchResponseEntry.fromJson(o.toJson());
+      checkDatafeedsCustomBatchResponseEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedsListResponse();
+      var od = new api.DatafeedsListResponse.fromJson(o.toJson());
+      checkDatafeedsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedstatusesCustomBatchRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedstatusesCustomBatchRequest();
+      var od = new api.DatafeedstatusesCustomBatchRequest.fromJson(o.toJson());
+      checkDatafeedstatusesCustomBatchRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedstatusesCustomBatchRequestEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedstatusesCustomBatchRequestEntry();
+      var od =
+          new api.DatafeedstatusesCustomBatchRequestEntry.fromJson(o.toJson());
+      checkDatafeedstatusesCustomBatchRequestEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedstatusesCustomBatchResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedstatusesCustomBatchResponse();
+      var od = new api.DatafeedstatusesCustomBatchResponse.fromJson(o.toJson());
+      checkDatafeedstatusesCustomBatchResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedstatusesCustomBatchResponseEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedstatusesCustomBatchResponseEntry();
+      var od =
+          new api.DatafeedstatusesCustomBatchResponseEntry.fromJson(o.toJson());
+      checkDatafeedstatusesCustomBatchResponseEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-DatafeedstatusesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDatafeedstatusesListResponse();
+      var od = new api.DatafeedstatusesListResponse.fromJson(o.toJson());
+      checkDatafeedstatusesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeliveryTime", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeliveryTime();
+      var od = new api.DeliveryTime.fromJson(o.toJson());
+      checkDeliveryTime(od);
+    });
+  });
+
+  unittest.group("obj-schema-Error", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildError();
+      var od = new api.Error.fromJson(o.toJson());
+      checkError(od);
+    });
+  });
+
+  unittest.group("obj-schema-Errors", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildErrors();
+      var od = new api.Errors.fromJson(o.toJson());
+      checkErrors(od);
+    });
+  });
+
+  unittest.group("obj-schema-Headers", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildHeaders();
+      var od = new api.Headers.fromJson(o.toJson());
+      checkHeaders(od);
+    });
+  });
+
+  unittest.group("obj-schema-Installment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInstallment();
+      var od = new api.Installment.fromJson(o.toJson());
+      checkInstallment(od);
+    });
+  });
+
+  unittest.group("obj-schema-Inventory", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInventory();
+      var od = new api.Inventory.fromJson(o.toJson());
+      checkInventory(od);
+    });
+  });
+
+  unittest.group("obj-schema-InventoryCustomBatchRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInventoryCustomBatchRequest();
+      var od = new api.InventoryCustomBatchRequest.fromJson(o.toJson());
+      checkInventoryCustomBatchRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-InventoryCustomBatchRequestEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInventoryCustomBatchRequestEntry();
+      var od = new api.InventoryCustomBatchRequestEntry.fromJson(o.toJson());
+      checkInventoryCustomBatchRequestEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-InventoryCustomBatchResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInventoryCustomBatchResponse();
+      var od = new api.InventoryCustomBatchResponse.fromJson(o.toJson());
+      checkInventoryCustomBatchResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-InventoryCustomBatchResponseEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInventoryCustomBatchResponseEntry();
+      var od = new api.InventoryCustomBatchResponseEntry.fromJson(o.toJson());
+      checkInventoryCustomBatchResponseEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-InventoryPickup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInventoryPickup();
+      var od = new api.InventoryPickup.fromJson(o.toJson());
+      checkInventoryPickup(od);
+    });
+  });
+
+  unittest.group("obj-schema-InventorySetRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInventorySetRequest();
+      var od = new api.InventorySetRequest.fromJson(o.toJson());
+      checkInventorySetRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-InventorySetResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInventorySetResponse();
+      var od = new api.InventorySetResponse.fromJson(o.toJson());
+      checkInventorySetResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-LocationIdSet", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLocationIdSet();
+      var od = new api.LocationIdSet.fromJson(o.toJson());
+      checkLocationIdSet(od);
+    });
+  });
+
+  unittest.group("obj-schema-LoyaltyPoints", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLoyaltyPoints();
+      var od = new api.LoyaltyPoints.fromJson(o.toJson());
+      checkLoyaltyPoints(od);
+    });
+  });
+
+  unittest.group("obj-schema-Order", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrder();
+      var od = new api.Order.fromJson(o.toJson());
+      checkOrder(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderAddress", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderAddress();
+      var od = new api.OrderAddress.fromJson(o.toJson());
+      checkOrderAddress(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderCancellation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderCancellation();
+      var od = new api.OrderCancellation.fromJson(o.toJson());
+      checkOrderCancellation(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderCustomer", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderCustomer();
+      var od = new api.OrderCustomer.fromJson(o.toJson());
+      checkOrderCustomer(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderDeliveryDetails", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderDeliveryDetails();
+      var od = new api.OrderDeliveryDetails.fromJson(o.toJson());
+      checkOrderDeliveryDetails(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderLineItem", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderLineItem();
+      var od = new api.OrderLineItem.fromJson(o.toJson());
+      checkOrderLineItem(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderLineItemProduct", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderLineItemProduct();
+      var od = new api.OrderLineItemProduct.fromJson(o.toJson());
+      checkOrderLineItemProduct(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderLineItemProductVariantAttribute", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderLineItemProductVariantAttribute();
+      var od =
+          new api.OrderLineItemProductVariantAttribute.fromJson(o.toJson());
+      checkOrderLineItemProductVariantAttribute(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderLineItemReturnInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderLineItemReturnInfo();
+      var od = new api.OrderLineItemReturnInfo.fromJson(o.toJson());
+      checkOrderLineItemReturnInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderLineItemShippingDetails", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderLineItemShippingDetails();
+      var od = new api.OrderLineItemShippingDetails.fromJson(o.toJson());
+      checkOrderLineItemShippingDetails(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderLineItemShippingDetailsMethod", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderLineItemShippingDetailsMethod();
+      var od = new api.OrderLineItemShippingDetailsMethod.fromJson(o.toJson());
+      checkOrderLineItemShippingDetailsMethod(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderPaymentMethod", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderPaymentMethod();
+      var od = new api.OrderPaymentMethod.fromJson(o.toJson());
+      checkOrderPaymentMethod(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderPromotion", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderPromotion();
+      var od = new api.OrderPromotion.fromJson(o.toJson());
+      checkOrderPromotion(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderPromotionBenefit", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderPromotionBenefit();
+      var od = new api.OrderPromotionBenefit.fromJson(o.toJson());
+      checkOrderPromotionBenefit(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderRefund", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderRefund();
+      var od = new api.OrderRefund.fromJson(o.toJson());
+      checkOrderRefund(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderReturn", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderReturn();
+      var od = new api.OrderReturn.fromJson(o.toJson());
+      checkOrderReturn(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderShipment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderShipment();
+      var od = new api.OrderShipment.fromJson(o.toJson());
+      checkOrderShipment(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderShipmentLineItemShipment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderShipmentLineItemShipment();
+      var od = new api.OrderShipmentLineItemShipment.fromJson(o.toJson());
+      checkOrderShipmentLineItemShipment(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersAcknowledgeRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersAcknowledgeRequest();
+      var od = new api.OrdersAcknowledgeRequest.fromJson(o.toJson());
+      checkOrdersAcknowledgeRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersAcknowledgeResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersAcknowledgeResponse();
+      var od = new api.OrdersAcknowledgeResponse.fromJson(o.toJson());
+      checkOrdersAcknowledgeResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersAdvanceTestOrderResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersAdvanceTestOrderResponse();
+      var od = new api.OrdersAdvanceTestOrderResponse.fromJson(o.toJson());
+      checkOrdersAdvanceTestOrderResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCancelLineItemRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCancelLineItemRequest();
+      var od = new api.OrdersCancelLineItemRequest.fromJson(o.toJson());
+      checkOrdersCancelLineItemRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCancelLineItemResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCancelLineItemResponse();
+      var od = new api.OrdersCancelLineItemResponse.fromJson(o.toJson());
+      checkOrdersCancelLineItemResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCancelRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCancelRequest();
+      var od = new api.OrdersCancelRequest.fromJson(o.toJson());
+      checkOrdersCancelRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCancelResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCancelResponse();
+      var od = new api.OrdersCancelResponse.fromJson(o.toJson());
+      checkOrdersCancelResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCreateTestOrderRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCreateTestOrderRequest();
+      var od = new api.OrdersCreateTestOrderRequest.fromJson(o.toJson());
+      checkOrdersCreateTestOrderRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCreateTestOrderResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCreateTestOrderResponse();
+      var od = new api.OrdersCreateTestOrderResponse.fromJson(o.toJson());
+      checkOrdersCreateTestOrderResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequest();
+      var od = new api.OrdersCustomBatchRequest.fromJson(o.toJson());
+      checkOrdersCustomBatchRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequestEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntry();
+      var od = new api.OrdersCustomBatchRequestEntry.fromJson(o.toJson());
+      checkOrdersCustomBatchRequestEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequestEntryCancel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntryCancel();
+      var od = new api.OrdersCustomBatchRequestEntryCancel.fromJson(o.toJson());
+      checkOrdersCustomBatchRequestEntryCancel(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequestEntryCancelLineItem", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntryCancelLineItem();
+      var od = new api.OrdersCustomBatchRequestEntryCancelLineItem.fromJson(
+          o.toJson());
+      checkOrdersCustomBatchRequestEntryCancelLineItem(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequestEntryRefund", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntryRefund();
+      var od = new api.OrdersCustomBatchRequestEntryRefund.fromJson(o.toJson());
+      checkOrdersCustomBatchRequestEntryRefund(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequestEntryReturnLineItem", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntryReturnLineItem();
+      var od = new api.OrdersCustomBatchRequestEntryReturnLineItem.fromJson(
+          o.toJson());
+      checkOrdersCustomBatchRequestEntryReturnLineItem(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequestEntryShipLineItems", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntryShipLineItems();
+      var od = new api.OrdersCustomBatchRequestEntryShipLineItems.fromJson(
+          o.toJson());
+      checkOrdersCustomBatchRequestEntryShipLineItems(od);
+    });
+  });
+
+  unittest.group(
+      "obj-schema-OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo();
+      var od = new api
+              .OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo.fromJson(
+          o.toJson());
+      checkOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequestEntryUpdateShipment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntryUpdateShipment();
+      var od = new api.OrdersCustomBatchRequestEntryUpdateShipment.fromJson(
+          o.toJson());
+      checkOrdersCustomBatchRequestEntryUpdateShipment(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchResponse();
+      var od = new api.OrdersCustomBatchResponse.fromJson(o.toJson());
+      checkOrdersCustomBatchResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchResponseEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchResponseEntry();
+      var od = new api.OrdersCustomBatchResponseEntry.fromJson(o.toJson());
+      checkOrdersCustomBatchResponseEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersGetByMerchantOrderIdResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersGetByMerchantOrderIdResponse();
+      var od = new api.OrdersGetByMerchantOrderIdResponse.fromJson(o.toJson());
+      checkOrdersGetByMerchantOrderIdResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersGetTestOrderTemplateResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersGetTestOrderTemplateResponse();
+      var od = new api.OrdersGetTestOrderTemplateResponse.fromJson(o.toJson());
+      checkOrdersGetTestOrderTemplateResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersListResponse();
+      var od = new api.OrdersListResponse.fromJson(o.toJson());
+      checkOrdersListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersRefundRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersRefundRequest();
+      var od = new api.OrdersRefundRequest.fromJson(o.toJson());
+      checkOrdersRefundRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersRefundResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersRefundResponse();
+      var od = new api.OrdersRefundResponse.fromJson(o.toJson());
+      checkOrdersRefundResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersReturnLineItemRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersReturnLineItemRequest();
+      var od = new api.OrdersReturnLineItemRequest.fromJson(o.toJson());
+      checkOrdersReturnLineItemRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersReturnLineItemResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersReturnLineItemResponse();
+      var od = new api.OrdersReturnLineItemResponse.fromJson(o.toJson());
+      checkOrdersReturnLineItemResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersShipLineItemsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersShipLineItemsRequest();
+      var od = new api.OrdersShipLineItemsRequest.fromJson(o.toJson());
+      checkOrdersShipLineItemsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersShipLineItemsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersShipLineItemsResponse();
+      var od = new api.OrdersShipLineItemsResponse.fromJson(o.toJson());
+      checkOrdersShipLineItemsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersUpdateMerchantOrderIdRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersUpdateMerchantOrderIdRequest();
+      var od = new api.OrdersUpdateMerchantOrderIdRequest.fromJson(o.toJson());
+      checkOrdersUpdateMerchantOrderIdRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersUpdateMerchantOrderIdResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersUpdateMerchantOrderIdResponse();
+      var od = new api.OrdersUpdateMerchantOrderIdResponse.fromJson(o.toJson());
+      checkOrdersUpdateMerchantOrderIdResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersUpdateShipmentRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersUpdateShipmentRequest();
+      var od = new api.OrdersUpdateShipmentRequest.fromJson(o.toJson());
+      checkOrdersUpdateShipmentRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersUpdateShipmentResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersUpdateShipmentResponse();
+      var od = new api.OrdersUpdateShipmentResponse.fromJson(o.toJson());
+      checkOrdersUpdateShipmentResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-PostalCodeGroup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPostalCodeGroup();
+      var od = new api.PostalCodeGroup.fromJson(o.toJson());
+      checkPostalCodeGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-PostalCodeRange", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPostalCodeRange();
+      var od = new api.PostalCodeRange.fromJson(o.toJson());
+      checkPostalCodeRange(od);
+    });
+  });
+
+  unittest.group("obj-schema-Price", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPrice();
+      var od = new api.Price.fromJson(o.toJson());
+      checkPrice(od);
+    });
+  });
+
+  unittest.group("obj-schema-Product", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProduct();
+      var od = new api.Product.fromJson(o.toJson());
+      checkProduct(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductAspect", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductAspect();
+      var od = new api.ProductAspect.fromJson(o.toJson());
+      checkProductAspect(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductCustomAttribute", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductCustomAttribute();
+      var od = new api.ProductCustomAttribute.fromJson(o.toJson());
+      checkProductCustomAttribute(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductCustomGroup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductCustomGroup();
+      var od = new api.ProductCustomGroup.fromJson(o.toJson());
+      checkProductCustomGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductDestination", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductDestination();
+      var od = new api.ProductDestination.fromJson(o.toJson());
+      checkProductDestination(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductShipping", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductShipping();
+      var od = new api.ProductShipping.fromJson(o.toJson());
+      checkProductShipping(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductShippingDimension", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductShippingDimension();
+      var od = new api.ProductShippingDimension.fromJson(o.toJson());
+      checkProductShippingDimension(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductShippingWeight", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductShippingWeight();
+      var od = new api.ProductShippingWeight.fromJson(o.toJson());
+      checkProductShippingWeight(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductStatus", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductStatus();
+      var od = new api.ProductStatus.fromJson(o.toJson());
+      checkProductStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductStatusDataQualityIssue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductStatusDataQualityIssue();
+      var od = new api.ProductStatusDataQualityIssue.fromJson(o.toJson());
+      checkProductStatusDataQualityIssue(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductStatusDestinationStatus", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductStatusDestinationStatus();
+      var od = new api.ProductStatusDestinationStatus.fromJson(o.toJson());
+      checkProductStatusDestinationStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductTax", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductTax();
+      var od = new api.ProductTax.fromJson(o.toJson());
+      checkProductTax(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductUnitPricingBaseMeasure", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductUnitPricingBaseMeasure();
+      var od = new api.ProductUnitPricingBaseMeasure.fromJson(o.toJson());
+      checkProductUnitPricingBaseMeasure(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductUnitPricingMeasure", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductUnitPricingMeasure();
+      var od = new api.ProductUnitPricingMeasure.fromJson(o.toJson());
+      checkProductUnitPricingMeasure(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductsCustomBatchRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductsCustomBatchRequest();
+      var od = new api.ProductsCustomBatchRequest.fromJson(o.toJson());
+      checkProductsCustomBatchRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductsCustomBatchRequestEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductsCustomBatchRequestEntry();
+      var od = new api.ProductsCustomBatchRequestEntry.fromJson(o.toJson());
+      checkProductsCustomBatchRequestEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductsCustomBatchResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductsCustomBatchResponse();
+      var od = new api.ProductsCustomBatchResponse.fromJson(o.toJson());
+      checkProductsCustomBatchResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductsCustomBatchResponseEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductsCustomBatchResponseEntry();
+      var od = new api.ProductsCustomBatchResponseEntry.fromJson(o.toJson());
+      checkProductsCustomBatchResponseEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductsListResponse();
+      var od = new api.ProductsListResponse.fromJson(o.toJson());
+      checkProductsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductstatusesCustomBatchRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductstatusesCustomBatchRequest();
+      var od = new api.ProductstatusesCustomBatchRequest.fromJson(o.toJson());
+      checkProductstatusesCustomBatchRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductstatusesCustomBatchRequestEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductstatusesCustomBatchRequestEntry();
+      var od =
+          new api.ProductstatusesCustomBatchRequestEntry.fromJson(o.toJson());
+      checkProductstatusesCustomBatchRequestEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductstatusesCustomBatchResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductstatusesCustomBatchResponse();
+      var od = new api.ProductstatusesCustomBatchResponse.fromJson(o.toJson());
+      checkProductstatusesCustomBatchResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductstatusesCustomBatchResponseEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductstatusesCustomBatchResponseEntry();
+      var od =
+          new api.ProductstatusesCustomBatchResponseEntry.fromJson(o.toJson());
+      checkProductstatusesCustomBatchResponseEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProductstatusesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProductstatusesListResponse();
+      var od = new api.ProductstatusesListResponse.fromJson(o.toJson());
+      checkProductstatusesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-RateGroup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRateGroup();
+      var od = new api.RateGroup.fromJson(o.toJson());
+      checkRateGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-Row", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRow();
+      var od = new api.Row.fromJson(o.toJson());
+      checkRow(od);
+    });
+  });
+
+  unittest.group("obj-schema-Service", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildService();
+      var od = new api.Service.fromJson(o.toJson());
+      checkService(od);
+    });
+  });
+
+  unittest.group("obj-schema-ShippingSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildShippingSettings();
+      var od = new api.ShippingSettings.fromJson(o.toJson());
+      checkShippingSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-ShippingsettingsCustomBatchRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildShippingsettingsCustomBatchRequest();
+      var od = new api.ShippingsettingsCustomBatchRequest.fromJson(o.toJson());
+      checkShippingsettingsCustomBatchRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ShippingsettingsCustomBatchRequestEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildShippingsettingsCustomBatchRequestEntry();
+      var od =
+          new api.ShippingsettingsCustomBatchRequestEntry.fromJson(o.toJson());
+      checkShippingsettingsCustomBatchRequestEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-ShippingsettingsCustomBatchResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildShippingsettingsCustomBatchResponse();
+      var od = new api.ShippingsettingsCustomBatchResponse.fromJson(o.toJson());
+      checkShippingsettingsCustomBatchResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ShippingsettingsCustomBatchResponseEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildShippingsettingsCustomBatchResponseEntry();
+      var od =
+          new api.ShippingsettingsCustomBatchResponseEntry.fromJson(o.toJson());
+      checkShippingsettingsCustomBatchResponseEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-ShippingsettingsGetSupportedCarriersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildShippingsettingsGetSupportedCarriersResponse();
+      var od = new api.ShippingsettingsGetSupportedCarriersResponse.fromJson(
+          o.toJson());
+      checkShippingsettingsGetSupportedCarriersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ShippingsettingsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildShippingsettingsListResponse();
+      var od = new api.ShippingsettingsListResponse.fromJson(o.toJson());
+      checkShippingsettingsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Table", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTable();
+      var od = new api.Table.fromJson(o.toJson());
+      checkTable(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestOrder", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestOrder();
+      var od = new api.TestOrder.fromJson(o.toJson());
+      checkTestOrder(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestOrderCustomer", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestOrderCustomer();
+      var od = new api.TestOrderCustomer.fromJson(o.toJson());
+      checkTestOrderCustomer(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestOrderLineItem", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestOrderLineItem();
+      var od = new api.TestOrderLineItem.fromJson(o.toJson());
+      checkTestOrderLineItem(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestOrderLineItemProduct", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestOrderLineItemProduct();
+      var od = new api.TestOrderLineItemProduct.fromJson(o.toJson());
+      checkTestOrderLineItemProduct(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestOrderPaymentMethod", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestOrderPaymentMethod();
+      var od = new api.TestOrderPaymentMethod.fromJson(o.toJson());
+      checkTestOrderPaymentMethod(od);
+    });
+  });
+
+  unittest.group("obj-schema-Value", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildValue();
+      var od = new api.Value.fromJson(o.toJson());
+      checkValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-Weight", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildWeight();
+      var od = new api.Weight.fromJson(o.toJson());
+      checkWeight(od);
+    });
+  });
+
+  unittest.group("resource-AccountsResourceApi", () {
+    unittest.test("method--authinfo", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.ContentApi(mock).accounts;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("content/v2/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("accounts/authinfo"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountsAuthInfoResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .authinfo($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountsAuthInfoResponse response) {
+        checkAccountsAuthInfoResponse(response);
+      })));
+    });
+
+    unittest.test("method--claimwebsite", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.ContentApi(mock).accounts;
+      var arg_merchantId = "foo";
+      var arg_accountId = "foo";
+      var arg_overwrite = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["overwrite"].first, unittest.equals("$arg_overwrite"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountsClaimWebsiteResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .claimwebsite(arg_merchantId, arg_accountId,
+              overwrite: arg_overwrite, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.AccountsClaimWebsiteResponse response) {
+        checkAccountsClaimWebsiteResponse(response);
+      })));
+    });
+
+    unittest.test("method--custombatch", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.ContentApi(mock).accounts;
+      var arg_request = buildAccountsCustomBatchRequest();
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AccountsCustomBatchRequest.fromJson(json);
+        checkAccountsCustomBatchRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("content/v2/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("accounts/batch"));
+        pathOffset += 14;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountsCustomBatchResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .custombatch(arg_request, dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.AccountsCustomBatchResponse response) {
+        checkAccountsCustomBatchResponse(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.ContentApi(mock).accounts;
+      var arg_merchantId = "foo";
+      var arg_accountId = "foo";
+      var arg_dryRun = true;
+      var arg_force = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["force"].first, unittest.equals("$arg_force"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_merchantId, arg_accountId,
+              dryRun: arg_dryRun, force: arg_force, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.ContentApi(mock).accounts;
+      var arg_merchantId = "foo";
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_merchantId, arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.ContentApi(mock).accounts;
+      var arg_request = buildAccount();
+      var arg_merchantId = "foo";
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Account.fromJson(json);
+        checkAccount(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_merchantId,
+              dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.ContentApi(mock).accounts;
+      var arg_merchantId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_merchantId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountsListResponse response) {
+        checkAccountsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.ContentApi(mock).accounts;
+      var arg_request = buildAccount();
+      var arg_merchantId = "foo";
+      var arg_accountId = "foo";
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Account.fromJson(json);
+        checkAccount(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_merchantId, arg_accountId,
+              dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.ContentApi(mock).accounts;
+      var arg_request = buildAccount();
+      var arg_merchantId = "foo";
+      var arg_accountId = "foo";
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Account.fromJson(json);
+        checkAccount(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_merchantId, arg_accountId,
+              dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountstatusesResourceApi", () {
+    unittest.test("method--custombatch", () {
+      var mock = new HttpServerMock();
+      api.AccountstatusesResourceApi res =
+          new api.ContentApi(mock).accountstatuses;
+      var arg_request = buildAccountstatusesCustomBatchRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AccountstatusesCustomBatchRequest.fromJson(json);
+        checkAccountstatusesCustomBatchRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("content/v2/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("accountstatuses/batch"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildAccountstatusesCustomBatchResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.custombatch(arg_request, $fields: arg_$fields).then(unittest
+          .expectAsync1(((api.AccountstatusesCustomBatchResponse response) {
+        checkAccountstatusesCustomBatchResponse(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountstatusesResourceApi res =
+          new api.ContentApi(mock).accountstatuses;
+      var arg_merchantId = "foo";
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountStatus());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_merchantId, arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountStatus response) {
+        checkAccountStatus(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountstatusesResourceApi res =
+          new api.ContentApi(mock).accountstatuses;
+      var arg_merchantId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountstatusesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_merchantId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.AccountstatusesListResponse response) {
+        checkAccountstatusesListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccounttaxResourceApi", () {
+    unittest.test("method--custombatch", () {
+      var mock = new HttpServerMock();
+      api.AccounttaxResourceApi res = new api.ContentApi(mock).accounttax;
+      var arg_request = buildAccounttaxCustomBatchRequest();
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AccounttaxCustomBatchRequest.fromJson(json);
+        checkAccounttaxCustomBatchRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("content/v2/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("accounttax/batch"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccounttaxCustomBatchResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .custombatch(arg_request, dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.AccounttaxCustomBatchResponse response) {
+        checkAccounttaxCustomBatchResponse(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccounttaxResourceApi res = new api.ContentApi(mock).accounttax;
+      var arg_merchantId = "foo";
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountTax());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_merchantId, arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountTax response) {
+        checkAccountTax(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccounttaxResourceApi res = new api.ContentApi(mock).accounttax;
+      var arg_merchantId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccounttaxListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_merchantId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccounttaxListResponse response) {
+        checkAccounttaxListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.AccounttaxResourceApi res = new api.ContentApi(mock).accounttax;
+      var arg_request = buildAccountTax();
+      var arg_merchantId = "foo";
+      var arg_accountId = "foo";
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AccountTax.fromJson(json);
+        checkAccountTax(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountTax());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_merchantId, arg_accountId,
+              dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountTax response) {
+        checkAccountTax(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccounttaxResourceApi res = new api.ContentApi(mock).accounttax;
+      var arg_request = buildAccountTax();
+      var arg_merchantId = "foo";
+      var arg_accountId = "foo";
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AccountTax.fromJson(json);
+        checkAccountTax(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountTax());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_merchantId, arg_accountId,
+              dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountTax response) {
+        checkAccountTax(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-DatafeedsResourceApi", () {
+    unittest.test("method--custombatch", () {
+      var mock = new HttpServerMock();
+      api.DatafeedsResourceApi res = new api.ContentApi(mock).datafeeds;
+      var arg_request = buildDatafeedsCustomBatchRequest();
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.DatafeedsCustomBatchRequest.fromJson(json);
+        checkDatafeedsCustomBatchRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("content/v2/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("datafeeds/batch"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDatafeedsCustomBatchResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .custombatch(arg_request, dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.DatafeedsCustomBatchResponse response) {
+        checkDatafeedsCustomBatchResponse(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.DatafeedsResourceApi res = new api.ContentApi(mock).datafeeds;
+      var arg_merchantId = "foo";
+      var arg_datafeedId = "foo";
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_merchantId, arg_datafeedId,
+              dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.DatafeedsResourceApi res = new api.ContentApi(mock).datafeeds;
+      var arg_merchantId = "foo";
+      var arg_datafeedId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDatafeed());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_merchantId, arg_datafeedId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Datafeed response) {
+        checkDatafeed(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.DatafeedsResourceApi res = new api.ContentApi(mock).datafeeds;
+      var arg_request = buildDatafeed();
+      var arg_merchantId = "foo";
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Datafeed.fromJson(json);
+        checkDatafeed(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDatafeed());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_merchantId,
+              dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Datafeed response) {
+        checkDatafeed(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.DatafeedsResourceApi res = new api.ContentApi(mock).datafeeds;
+      var arg_merchantId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDatafeedsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_merchantId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DatafeedsListResponse response) {
+        checkDatafeedsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.DatafeedsResourceApi res = new api.ContentApi(mock).datafeeds;
+      var arg_request = buildDatafeed();
+      var arg_merchantId = "foo";
+      var arg_datafeedId = "foo";
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Datafeed.fromJson(json);
+        checkDatafeed(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDatafeed());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_merchantId, arg_datafeedId,
+              dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Datafeed response) {
+        checkDatafeed(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.DatafeedsResourceApi res = new api.ContentApi(mock).datafeeds;
+      var arg_request = buildDatafeed();
+      var arg_merchantId = "foo";
+      var arg_datafeedId = "foo";
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Datafeed.fromJson(json);
+        checkDatafeed(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDatafeed());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_merchantId, arg_datafeedId,
+              dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Datafeed response) {
+        checkDatafeed(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-DatafeedstatusesResourceApi", () {
+    unittest.test("method--custombatch", () {
+      var mock = new HttpServerMock();
+      api.DatafeedstatusesResourceApi res =
+          new api.ContentApi(mock).datafeedstatuses;
+      var arg_request = buildDatafeedstatusesCustomBatchRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.DatafeedstatusesCustomBatchRequest.fromJson(json);
+        checkDatafeedstatusesCustomBatchRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("content/v2/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("datafeedstatuses/batch"));
+        pathOffset += 22;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildDatafeedstatusesCustomBatchResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.custombatch(arg_request, $fields: arg_$fields).then(unittest
+          .expectAsync1(((api.DatafeedstatusesCustomBatchResponse response) {
+        checkDatafeedstatusesCustomBatchResponse(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.DatafeedstatusesResourceApi res =
+          new api.ContentApi(mock).datafeedstatuses;
+      var arg_merchantId = "foo";
+      var arg_datafeedId = "foo";
+      var arg_country = "foo";
+      var arg_language = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["country"].first, unittest.equals(arg_country));
+        unittest.expect(
+            queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDatafeedStatus());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_merchantId, arg_datafeedId,
+              country: arg_country,
+              language: arg_language,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DatafeedStatus response) {
+        checkDatafeedStatus(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.DatafeedstatusesResourceApi res =
+          new api.ContentApi(mock).datafeedstatuses;
+      var arg_merchantId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDatafeedstatusesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_merchantId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.DatafeedstatusesListResponse response) {
+        checkDatafeedstatusesListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-InventoryResourceApi", () {
+    unittest.test("method--custombatch", () {
+      var mock = new HttpServerMock();
+      api.InventoryResourceApi res = new api.ContentApi(mock).inventory;
+      var arg_request = buildInventoryCustomBatchRequest();
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.InventoryCustomBatchRequest.fromJson(json);
+        checkInventoryCustomBatchRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("content/v2/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("inventory/batch"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildInventoryCustomBatchResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .custombatch(arg_request, dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.InventoryCustomBatchResponse response) {
+        checkInventoryCustomBatchResponse(response);
+      })));
+    });
+
+    unittest.test("method--set", () {
+      var mock = new HttpServerMock();
+      api.InventoryResourceApi res = new api.ContentApi(mock).inventory;
+      var arg_request = buildInventorySetRequest();
+      var arg_merchantId = "foo";
+      var arg_storeCode = "foo";
+      var arg_productId = "foo";
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.InventorySetRequest.fromJson(json);
+        checkInventorySetRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildInventorySetResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .set(arg_request, arg_merchantId, arg_storeCode, arg_productId,
+              dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.InventorySetResponse response) {
+        checkInventorySetResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-OrdersResourceApi", () {
+    unittest.test("method--acknowledge", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersAcknowledgeRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersAcknowledgeRequest.fromJson(json);
+        checkOrdersAcknowledgeRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersAcknowledgeResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .acknowledge(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.OrdersAcknowledgeResponse response) {
+        checkOrdersAcknowledgeResponse(response);
+      })));
+    });
+
+    unittest.test("method--advancetestorder", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersAdvanceTestOrderResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .advancetestorder(arg_merchantId, arg_orderId, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersAdvanceTestOrderResponse response) {
+        checkOrdersAdvanceTestOrderResponse(response);
+      })));
+    });
+
+    unittest.test("method--cancel", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersCancelRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersCancelRequest.fromJson(json);
+        checkOrdersCancelRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersCancelResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .cancel(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.OrdersCancelResponse response) {
+        checkOrdersCancelResponse(response);
+      })));
+    });
+
+    unittest.test("method--cancellineitem", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersCancelLineItemRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersCancelLineItemRequest.fromJson(json);
+        checkOrdersCancelLineItemRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersCancelLineItemResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .cancellineitem(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersCancelLineItemResponse response) {
+        checkOrdersCancelLineItemResponse(response);
+      })));
+    });
+
+    unittest.test("method--createtestorder", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersCreateTestOrderRequest();
+      var arg_merchantId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersCreateTestOrderRequest.fromJson(json);
+        checkOrdersCreateTestOrderRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersCreateTestOrderResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .createtestorder(arg_request, arg_merchantId, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersCreateTestOrderResponse response) {
+        checkOrdersCreateTestOrderResponse(response);
+      })));
+    });
+
+    unittest.test("method--custombatch", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersCustomBatchRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersCustomBatchRequest.fromJson(json);
+        checkOrdersCustomBatchRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("content/v2/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("orders/batch"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersCustomBatchResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.custombatch(arg_request, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.OrdersCustomBatchResponse response) {
+        checkOrdersCustomBatchResponse(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrder());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_merchantId, arg_orderId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Order response) {
+        checkOrder(response);
+      })));
+    });
+
+    unittest.test("method--getbymerchantorderid", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_merchantId = "foo";
+      var arg_merchantOrderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildOrdersGetByMerchantOrderIdResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getbymerchantorderid(arg_merchantId, arg_merchantOrderId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersGetByMerchantOrderIdResponse response) {
+        checkOrdersGetByMerchantOrderIdResponse(response);
+      })));
+    });
+
+    unittest.test("method--gettestordertemplate", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_merchantId = "foo";
+      var arg_templateName = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildOrdersGetTestOrderTemplateResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .gettestordertemplate(arg_merchantId, arg_templateName,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersGetTestOrderTemplateResponse response) {
+        checkOrdersGetTestOrderTemplateResponse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_merchantId = "foo";
+      var arg_acknowledged = true;
+      var arg_maxResults = 42;
+      var arg_orderBy = "foo";
+      var arg_pageToken = "foo";
+      var arg_placedDateEnd = "foo";
+      var arg_placedDateStart = "foo";
+      var arg_statuses = buildUnnamed431();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["acknowledged"].first,
+            unittest.equals("$arg_acknowledged"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["placedDateEnd"].first,
+            unittest.equals(arg_placedDateEnd));
+        unittest.expect(queryMap["placedDateStart"].first,
+            unittest.equals(arg_placedDateStart));
+        unittest.expect(queryMap["statuses"], unittest.equals(arg_statuses));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_merchantId,
+              acknowledged: arg_acknowledged,
+              maxResults: arg_maxResults,
+              orderBy: arg_orderBy,
+              pageToken: arg_pageToken,
+              placedDateEnd: arg_placedDateEnd,
+              placedDateStart: arg_placedDateStart,
+              statuses: arg_statuses,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.OrdersListResponse response) {
+        checkOrdersListResponse(response);
+      })));
+    });
+
+    unittest.test("method--refund", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersRefundRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersRefundRequest.fromJson(json);
+        checkOrdersRefundRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersRefundResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .refund(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.OrdersRefundResponse response) {
+        checkOrdersRefundResponse(response);
+      })));
+    });
+
+    unittest.test("method--returnlineitem", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersReturnLineItemRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersReturnLineItemRequest.fromJson(json);
+        checkOrdersReturnLineItemRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersReturnLineItemResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .returnlineitem(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersReturnLineItemResponse response) {
+        checkOrdersReturnLineItemResponse(response);
+      })));
+    });
+
+    unittest.test("method--shiplineitems", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersShipLineItemsRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersShipLineItemsRequest.fromJson(json);
+        checkOrdersShipLineItemsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersShipLineItemsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .shiplineitems(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersShipLineItemsResponse response) {
+        checkOrdersShipLineItemsResponse(response);
+      })));
+    });
+
+    unittest.test("method--updatemerchantorderid", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersUpdateMerchantOrderIdRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersUpdateMerchantOrderIdRequest.fromJson(json);
+        checkOrdersUpdateMerchantOrderIdRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildOrdersUpdateMerchantOrderIdResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .updatemerchantorderid(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.OrdersUpdateMerchantOrderIdResponse response) {
+        checkOrdersUpdateMerchantOrderIdResponse(response);
+      })));
+    });
+
+    unittest.test("method--updateshipment", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersUpdateShipmentRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersUpdateShipmentRequest.fromJson(json);
+        checkOrdersUpdateShipmentRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersUpdateShipmentResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .updateshipment(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersUpdateShipmentResponse response) {
+        checkOrdersUpdateShipmentResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProductsResourceApi", () {
+    unittest.test("method--custombatch", () {
+      var mock = new HttpServerMock();
+      api.ProductsResourceApi res = new api.ContentApi(mock).products;
+      var arg_request = buildProductsCustomBatchRequest();
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ProductsCustomBatchRequest.fromJson(json);
+        checkProductsCustomBatchRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("content/v2/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("products/batch"));
+        pathOffset += 14;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProductsCustomBatchResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .custombatch(arg_request, dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ProductsCustomBatchResponse response) {
+        checkProductsCustomBatchResponse(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProductsResourceApi res = new api.ContentApi(mock).products;
+      var arg_merchantId = "foo";
+      var arg_productId = "foo";
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_merchantId, arg_productId,
+              dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProductsResourceApi res = new api.ContentApi(mock).products;
+      var arg_merchantId = "foo";
+      var arg_productId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProduct());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_merchantId, arg_productId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Product response) {
+        checkProduct(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.ProductsResourceApi res = new api.ContentApi(mock).products;
+      var arg_request = buildProduct();
+      var arg_merchantId = "foo";
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Product.fromJson(json);
+        checkProduct(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProduct());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_merchantId,
+              dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Product response) {
+        checkProduct(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProductsResourceApi res = new api.ContentApi(mock).products;
+      var arg_merchantId = "foo";
+      var arg_includeInvalidInsertedItems = true;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeInvalidInsertedItems"].first,
+            unittest.equals("$arg_includeInvalidInsertedItems"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProductsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_merchantId,
+              includeInvalidInsertedItems: arg_includeInvalidInsertedItems,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ProductsListResponse response) {
+        checkProductsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProductstatusesResourceApi", () {
+    unittest.test("method--custombatch", () {
+      var mock = new HttpServerMock();
+      api.ProductstatusesResourceApi res =
+          new api.ContentApi(mock).productstatuses;
+      var arg_request = buildProductstatusesCustomBatchRequest();
+      var arg_includeAttributes = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ProductstatusesCustomBatchRequest.fromJson(json);
+        checkProductstatusesCustomBatchRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("content/v2/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("productstatuses/batch"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeAttributes"].first,
+            unittest.equals("$arg_includeAttributes"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildProductstatusesCustomBatchResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .custombatch(arg_request,
+              includeAttributes: arg_includeAttributes, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ProductstatusesCustomBatchResponse response) {
+        checkProductstatusesCustomBatchResponse(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProductstatusesResourceApi res =
+          new api.ContentApi(mock).productstatuses;
+      var arg_merchantId = "foo";
+      var arg_productId = "foo";
+      var arg_includeAttributes = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeAttributes"].first,
+            unittest.equals("$arg_includeAttributes"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProductStatus());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_merchantId, arg_productId,
+              includeAttributes: arg_includeAttributes, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ProductStatus response) {
+        checkProductStatus(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProductstatusesResourceApi res =
+          new api.ContentApi(mock).productstatuses;
+      var arg_merchantId = "foo";
+      var arg_includeAttributes = true;
+      var arg_includeInvalidInsertedItems = true;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeAttributes"].first,
+            unittest.equals("$arg_includeAttributes"));
+        unittest.expect(queryMap["includeInvalidInsertedItems"].first,
+            unittest.equals("$arg_includeInvalidInsertedItems"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProductstatusesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_merchantId,
+              includeAttributes: arg_includeAttributes,
+              includeInvalidInsertedItems: arg_includeInvalidInsertedItems,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ProductstatusesListResponse response) {
+        checkProductstatusesListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ShippingsettingsResourceApi", () {
+    unittest.test("method--custombatch", () {
+      var mock = new HttpServerMock();
+      api.ShippingsettingsResourceApi res =
+          new api.ContentApi(mock).shippingsettings;
+      var arg_request = buildShippingsettingsCustomBatchRequest();
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ShippingsettingsCustomBatchRequest.fromJson(json);
+        checkShippingsettingsCustomBatchRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("content/v2/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("shippingsettings/batch"));
+        pathOffset += 22;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildShippingsettingsCustomBatchResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .custombatch(arg_request, dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.ShippingsettingsCustomBatchResponse response) {
+        checkShippingsettingsCustomBatchResponse(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ShippingsettingsResourceApi res =
+          new api.ContentApi(mock).shippingsettings;
+      var arg_merchantId = "foo";
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildShippingSettings());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_merchantId, arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ShippingSettings response) {
+        checkShippingSettings(response);
+      })));
+    });
+
+    unittest.test("method--getsupportedcarriers", () {
+      var mock = new HttpServerMock();
+      api.ShippingsettingsResourceApi res =
+          new api.ContentApi(mock).shippingsettings;
+      var arg_merchantId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON
+            .encode(buildShippingsettingsGetSupportedCarriersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.getsupportedcarriers(arg_merchantId, $fields: arg_$fields).then(
+          unittest.expectAsync1(
+              ((api.ShippingsettingsGetSupportedCarriersResponse response) {
+        checkShippingsettingsGetSupportedCarriersResponse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ShippingsettingsResourceApi res =
+          new api.ContentApi(mock).shippingsettings;
+      var arg_merchantId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildShippingsettingsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_merchantId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ShippingsettingsListResponse response) {
+        checkShippingsettingsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ShippingsettingsResourceApi res =
+          new api.ContentApi(mock).shippingsettings;
+      var arg_request = buildShippingSettings();
+      var arg_merchantId = "foo";
+      var arg_accountId = "foo";
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ShippingSettings.fromJson(json);
+        checkShippingSettings(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildShippingSettings());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_merchantId, arg_accountId,
+              dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ShippingSettings response) {
+        checkShippingSettings(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.ShippingsettingsResourceApi res =
+          new api.ContentApi(mock).shippingsettings;
+      var arg_request = buildShippingSettings();
+      var arg_merchantId = "foo";
+      var arg_accountId = "foo";
+      var arg_dryRun = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ShippingSettings.fromJson(json);
+        checkShippingSettings(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dryRun"].first, unittest.equals("$arg_dryRun"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildShippingSettings());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_merchantId, arg_accountId,
+              dryRun: arg_dryRun, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ShippingSettings response) {
+        checkShippingSettings(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/content/v2sandbox_test.dart b/generated/googleapis/test/content/v2sandbox_test.dart
new file mode 100644
index 0000000..adde633
--- /dev/null
+++ b/generated/googleapis/test/content/v2sandbox_test.dart
@@ -0,0 +1,3211 @@
+library googleapis.content.v2sandbox.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/content/v2sandbox.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterError = 0;
+buildError() {
+  var o = new api.Error();
+  buildCounterError++;
+  if (buildCounterError < 3) {
+    o.domain = "foo";
+    o.message = "foo";
+    o.reason = "foo";
+  }
+  buildCounterError--;
+  return o;
+}
+
+checkError(api.Error o) {
+  buildCounterError++;
+  if (buildCounterError < 3) {
+    unittest.expect(o.domain, unittest.equals('foo'));
+    unittest.expect(o.message, unittest.equals('foo'));
+    unittest.expect(o.reason, unittest.equals('foo'));
+  }
+  buildCounterError--;
+}
+
+buildUnnamed1543() {
+  var o = new core.List<api.Error>();
+  o.add(buildError());
+  o.add(buildError());
+  return o;
+}
+
+checkUnnamed1543(core.List<api.Error> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkError(o[0]);
+  checkError(o[1]);
+}
+
+core.int buildCounterErrors = 0;
+buildErrors() {
+  var o = new api.Errors();
+  buildCounterErrors++;
+  if (buildCounterErrors < 3) {
+    o.code = 42;
+    o.errors = buildUnnamed1543();
+    o.message = "foo";
+  }
+  buildCounterErrors--;
+  return o;
+}
+
+checkErrors(api.Errors o) {
+  buildCounterErrors++;
+  if (buildCounterErrors < 3) {
+    unittest.expect(o.code, unittest.equals(42));
+    checkUnnamed1543(o.errors);
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterErrors--;
+}
+
+buildUnnamed1544() {
+  var o = new core.List<api.OrderLineItem>();
+  o.add(buildOrderLineItem());
+  o.add(buildOrderLineItem());
+  return o;
+}
+
+checkUnnamed1544(core.List<api.OrderLineItem> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderLineItem(o[0]);
+  checkOrderLineItem(o[1]);
+}
+
+buildUnnamed1545() {
+  var o = new core.List<api.OrderPromotion>();
+  o.add(buildOrderPromotion());
+  o.add(buildOrderPromotion());
+  return o;
+}
+
+checkUnnamed1545(core.List<api.OrderPromotion> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderPromotion(o[0]);
+  checkOrderPromotion(o[1]);
+}
+
+buildUnnamed1546() {
+  var o = new core.List<api.OrderRefund>();
+  o.add(buildOrderRefund());
+  o.add(buildOrderRefund());
+  return o;
+}
+
+checkUnnamed1546(core.List<api.OrderRefund> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderRefund(o[0]);
+  checkOrderRefund(o[1]);
+}
+
+buildUnnamed1547() {
+  var o = new core.List<api.OrderShipment>();
+  o.add(buildOrderShipment());
+  o.add(buildOrderShipment());
+  return o;
+}
+
+checkUnnamed1547(core.List<api.OrderShipment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderShipment(o[0]);
+  checkOrderShipment(o[1]);
+}
+
+core.int buildCounterOrder = 0;
+buildOrder() {
+  var o = new api.Order();
+  buildCounterOrder++;
+  if (buildCounterOrder < 3) {
+    o.acknowledged = true;
+    o.channelType = "foo";
+    o.customer = buildOrderCustomer();
+    o.deliveryDetails = buildOrderDeliveryDetails();
+    o.id = "foo";
+    o.kind = "foo";
+    o.lineItems = buildUnnamed1544();
+    o.merchantId = "foo";
+    o.merchantOrderId = "foo";
+    o.netAmount = buildPrice();
+    o.paymentMethod = buildOrderPaymentMethod();
+    o.paymentStatus = "foo";
+    o.placedDate = "foo";
+    o.promotions = buildUnnamed1545();
+    o.refunds = buildUnnamed1546();
+    o.shipments = buildUnnamed1547();
+    o.shippingCost = buildPrice();
+    o.shippingCostTax = buildPrice();
+    o.shippingOption = "foo";
+    o.status = "foo";
+  }
+  buildCounterOrder--;
+  return o;
+}
+
+checkOrder(api.Order o) {
+  buildCounterOrder++;
+  if (buildCounterOrder < 3) {
+    unittest.expect(o.acknowledged, unittest.isTrue);
+    unittest.expect(o.channelType, unittest.equals('foo'));
+    checkOrderCustomer(o.customer);
+    checkOrderDeliveryDetails(o.deliveryDetails);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed1544(o.lineItems);
+    unittest.expect(o.merchantId, unittest.equals('foo'));
+    unittest.expect(o.merchantOrderId, unittest.equals('foo'));
+    checkPrice(o.netAmount);
+    checkOrderPaymentMethod(o.paymentMethod);
+    unittest.expect(o.paymentStatus, unittest.equals('foo'));
+    unittest.expect(o.placedDate, unittest.equals('foo'));
+    checkUnnamed1545(o.promotions);
+    checkUnnamed1546(o.refunds);
+    checkUnnamed1547(o.shipments);
+    checkPrice(o.shippingCost);
+    checkPrice(o.shippingCostTax);
+    unittest.expect(o.shippingOption, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+  }
+  buildCounterOrder--;
+}
+
+buildUnnamed1548() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1548(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1549() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1549(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterOrderAddress = 0;
+buildOrderAddress() {
+  var o = new api.OrderAddress();
+  buildCounterOrderAddress++;
+  if (buildCounterOrderAddress < 3) {
+    o.country = "foo";
+    o.fullAddress = buildUnnamed1548();
+    o.isPostOfficeBox = true;
+    o.locality = "foo";
+    o.postalCode = "foo";
+    o.recipientName = "foo";
+    o.region = "foo";
+    o.streetAddress = buildUnnamed1549();
+  }
+  buildCounterOrderAddress--;
+  return o;
+}
+
+checkOrderAddress(api.OrderAddress o) {
+  buildCounterOrderAddress++;
+  if (buildCounterOrderAddress < 3) {
+    unittest.expect(o.country, unittest.equals('foo'));
+    checkUnnamed1548(o.fullAddress);
+    unittest.expect(o.isPostOfficeBox, unittest.isTrue);
+    unittest.expect(o.locality, unittest.equals('foo'));
+    unittest.expect(o.postalCode, unittest.equals('foo'));
+    unittest.expect(o.recipientName, unittest.equals('foo'));
+    unittest.expect(o.region, unittest.equals('foo'));
+    checkUnnamed1549(o.streetAddress);
+  }
+  buildCounterOrderAddress--;
+}
+
+core.int buildCounterOrderCancellation = 0;
+buildOrderCancellation() {
+  var o = new api.OrderCancellation();
+  buildCounterOrderCancellation++;
+  if (buildCounterOrderCancellation < 3) {
+    o.actor = "foo";
+    o.creationDate = "foo";
+    o.quantity = 42;
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrderCancellation--;
+  return o;
+}
+
+checkOrderCancellation(api.OrderCancellation o) {
+  buildCounterOrderCancellation++;
+  if (buildCounterOrderCancellation < 3) {
+    unittest.expect(o.actor, unittest.equals('foo'));
+    unittest.expect(o.creationDate, unittest.equals('foo'));
+    unittest.expect(o.quantity, unittest.equals(42));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrderCancellation--;
+}
+
+core.int buildCounterOrderCustomer = 0;
+buildOrderCustomer() {
+  var o = new api.OrderCustomer();
+  buildCounterOrderCustomer++;
+  if (buildCounterOrderCustomer < 3) {
+    o.email = "foo";
+    o.explicitMarketingPreference = true;
+    o.fullName = "foo";
+  }
+  buildCounterOrderCustomer--;
+  return o;
+}
+
+checkOrderCustomer(api.OrderCustomer o) {
+  buildCounterOrderCustomer++;
+  if (buildCounterOrderCustomer < 3) {
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.explicitMarketingPreference, unittest.isTrue);
+    unittest.expect(o.fullName, unittest.equals('foo'));
+  }
+  buildCounterOrderCustomer--;
+}
+
+core.int buildCounterOrderDeliveryDetails = 0;
+buildOrderDeliveryDetails() {
+  var o = new api.OrderDeliveryDetails();
+  buildCounterOrderDeliveryDetails++;
+  if (buildCounterOrderDeliveryDetails < 3) {
+    o.address = buildOrderAddress();
+    o.phoneNumber = "foo";
+  }
+  buildCounterOrderDeliveryDetails--;
+  return o;
+}
+
+checkOrderDeliveryDetails(api.OrderDeliveryDetails o) {
+  buildCounterOrderDeliveryDetails++;
+  if (buildCounterOrderDeliveryDetails < 3) {
+    checkOrderAddress(o.address);
+    unittest.expect(o.phoneNumber, unittest.equals('foo'));
+  }
+  buildCounterOrderDeliveryDetails--;
+}
+
+buildUnnamed1550() {
+  var o = new core.List<api.OrderCancellation>();
+  o.add(buildOrderCancellation());
+  o.add(buildOrderCancellation());
+  return o;
+}
+
+checkUnnamed1550(core.List<api.OrderCancellation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderCancellation(o[0]);
+  checkOrderCancellation(o[1]);
+}
+
+buildUnnamed1551() {
+  var o = new core.List<api.OrderReturn>();
+  o.add(buildOrderReturn());
+  o.add(buildOrderReturn());
+  return o;
+}
+
+checkUnnamed1551(core.List<api.OrderReturn> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderReturn(o[0]);
+  checkOrderReturn(o[1]);
+}
+
+core.int buildCounterOrderLineItem = 0;
+buildOrderLineItem() {
+  var o = new api.OrderLineItem();
+  buildCounterOrderLineItem++;
+  if (buildCounterOrderLineItem < 3) {
+    o.cancellations = buildUnnamed1550();
+    o.channelType = "foo";
+    o.id = "foo";
+    o.price = buildPrice();
+    o.product = buildOrderLineItemProduct();
+    o.quantityCanceled = 42;
+    o.quantityDelivered = 42;
+    o.quantityOrdered = 42;
+    o.quantityPending = 42;
+    o.quantityReturned = 42;
+    o.quantityShipped = 42;
+    o.returnInfo = buildOrderLineItemReturnInfo();
+    o.returns = buildUnnamed1551();
+    o.shippingDetails = buildOrderLineItemShippingDetails();
+    o.tax = buildPrice();
+  }
+  buildCounterOrderLineItem--;
+  return o;
+}
+
+checkOrderLineItem(api.OrderLineItem o) {
+  buildCounterOrderLineItem++;
+  if (buildCounterOrderLineItem < 3) {
+    checkUnnamed1550(o.cancellations);
+    unittest.expect(o.channelType, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkPrice(o.price);
+    checkOrderLineItemProduct(o.product);
+    unittest.expect(o.quantityCanceled, unittest.equals(42));
+    unittest.expect(o.quantityDelivered, unittest.equals(42));
+    unittest.expect(o.quantityOrdered, unittest.equals(42));
+    unittest.expect(o.quantityPending, unittest.equals(42));
+    unittest.expect(o.quantityReturned, unittest.equals(42));
+    unittest.expect(o.quantityShipped, unittest.equals(42));
+    checkOrderLineItemReturnInfo(o.returnInfo);
+    checkUnnamed1551(o.returns);
+    checkOrderLineItemShippingDetails(o.shippingDetails);
+    checkPrice(o.tax);
+  }
+  buildCounterOrderLineItem--;
+}
+
+buildUnnamed1552() {
+  var o = new core.List<api.OrderLineItemProductVariantAttribute>();
+  o.add(buildOrderLineItemProductVariantAttribute());
+  o.add(buildOrderLineItemProductVariantAttribute());
+  return o;
+}
+
+checkUnnamed1552(core.List<api.OrderLineItemProductVariantAttribute> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderLineItemProductVariantAttribute(o[0]);
+  checkOrderLineItemProductVariantAttribute(o[1]);
+}
+
+core.int buildCounterOrderLineItemProduct = 0;
+buildOrderLineItemProduct() {
+  var o = new api.OrderLineItemProduct();
+  buildCounterOrderLineItemProduct++;
+  if (buildCounterOrderLineItemProduct < 3) {
+    o.brand = "foo";
+    o.channel = "foo";
+    o.condition = "foo";
+    o.contentLanguage = "foo";
+    o.gtin = "foo";
+    o.id = "foo";
+    o.imageLink = "foo";
+    o.itemGroupId = "foo";
+    o.mpn = "foo";
+    o.offerId = "foo";
+    o.price = buildPrice();
+    o.shownImage = "foo";
+    o.targetCountry = "foo";
+    o.title = "foo";
+    o.variantAttributes = buildUnnamed1552();
+  }
+  buildCounterOrderLineItemProduct--;
+  return o;
+}
+
+checkOrderLineItemProduct(api.OrderLineItemProduct o) {
+  buildCounterOrderLineItemProduct++;
+  if (buildCounterOrderLineItemProduct < 3) {
+    unittest.expect(o.brand, unittest.equals('foo'));
+    unittest.expect(o.channel, unittest.equals('foo'));
+    unittest.expect(o.condition, unittest.equals('foo'));
+    unittest.expect(o.contentLanguage, unittest.equals('foo'));
+    unittest.expect(o.gtin, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.imageLink, unittest.equals('foo'));
+    unittest.expect(o.itemGroupId, unittest.equals('foo'));
+    unittest.expect(o.mpn, unittest.equals('foo'));
+    unittest.expect(o.offerId, unittest.equals('foo'));
+    checkPrice(o.price);
+    unittest.expect(o.shownImage, unittest.equals('foo'));
+    unittest.expect(o.targetCountry, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    checkUnnamed1552(o.variantAttributes);
+  }
+  buildCounterOrderLineItemProduct--;
+}
+
+core.int buildCounterOrderLineItemProductVariantAttribute = 0;
+buildOrderLineItemProductVariantAttribute() {
+  var o = new api.OrderLineItemProductVariantAttribute();
+  buildCounterOrderLineItemProductVariantAttribute++;
+  if (buildCounterOrderLineItemProductVariantAttribute < 3) {
+    o.dimension = "foo";
+    o.value = "foo";
+  }
+  buildCounterOrderLineItemProductVariantAttribute--;
+  return o;
+}
+
+checkOrderLineItemProductVariantAttribute(
+    api.OrderLineItemProductVariantAttribute o) {
+  buildCounterOrderLineItemProductVariantAttribute++;
+  if (buildCounterOrderLineItemProductVariantAttribute < 3) {
+    unittest.expect(o.dimension, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterOrderLineItemProductVariantAttribute--;
+}
+
+core.int buildCounterOrderLineItemReturnInfo = 0;
+buildOrderLineItemReturnInfo() {
+  var o = new api.OrderLineItemReturnInfo();
+  buildCounterOrderLineItemReturnInfo++;
+  if (buildCounterOrderLineItemReturnInfo < 3) {
+    o.daysToReturn = 42;
+    o.isReturnable = true;
+    o.policyUrl = "foo";
+  }
+  buildCounterOrderLineItemReturnInfo--;
+  return o;
+}
+
+checkOrderLineItemReturnInfo(api.OrderLineItemReturnInfo o) {
+  buildCounterOrderLineItemReturnInfo++;
+  if (buildCounterOrderLineItemReturnInfo < 3) {
+    unittest.expect(o.daysToReturn, unittest.equals(42));
+    unittest.expect(o.isReturnable, unittest.isTrue);
+    unittest.expect(o.policyUrl, unittest.equals('foo'));
+  }
+  buildCounterOrderLineItemReturnInfo--;
+}
+
+core.int buildCounterOrderLineItemShippingDetails = 0;
+buildOrderLineItemShippingDetails() {
+  var o = new api.OrderLineItemShippingDetails();
+  buildCounterOrderLineItemShippingDetails++;
+  if (buildCounterOrderLineItemShippingDetails < 3) {
+    o.deliverByDate = "foo";
+    o.method = buildOrderLineItemShippingDetailsMethod();
+    o.shipByDate = "foo";
+  }
+  buildCounterOrderLineItemShippingDetails--;
+  return o;
+}
+
+checkOrderLineItemShippingDetails(api.OrderLineItemShippingDetails o) {
+  buildCounterOrderLineItemShippingDetails++;
+  if (buildCounterOrderLineItemShippingDetails < 3) {
+    unittest.expect(o.deliverByDate, unittest.equals('foo'));
+    checkOrderLineItemShippingDetailsMethod(o.method);
+    unittest.expect(o.shipByDate, unittest.equals('foo'));
+  }
+  buildCounterOrderLineItemShippingDetails--;
+}
+
+core.int buildCounterOrderLineItemShippingDetailsMethod = 0;
+buildOrderLineItemShippingDetailsMethod() {
+  var o = new api.OrderLineItemShippingDetailsMethod();
+  buildCounterOrderLineItemShippingDetailsMethod++;
+  if (buildCounterOrderLineItemShippingDetailsMethod < 3) {
+    o.carrier = "foo";
+    o.maxDaysInTransit = 42;
+    o.methodName = "foo";
+    o.minDaysInTransit = 42;
+  }
+  buildCounterOrderLineItemShippingDetailsMethod--;
+  return o;
+}
+
+checkOrderLineItemShippingDetailsMethod(
+    api.OrderLineItemShippingDetailsMethod o) {
+  buildCounterOrderLineItemShippingDetailsMethod++;
+  if (buildCounterOrderLineItemShippingDetailsMethod < 3) {
+    unittest.expect(o.carrier, unittest.equals('foo'));
+    unittest.expect(o.maxDaysInTransit, unittest.equals(42));
+    unittest.expect(o.methodName, unittest.equals('foo'));
+    unittest.expect(o.minDaysInTransit, unittest.equals(42));
+  }
+  buildCounterOrderLineItemShippingDetailsMethod--;
+}
+
+core.int buildCounterOrderPaymentMethod = 0;
+buildOrderPaymentMethod() {
+  var o = new api.OrderPaymentMethod();
+  buildCounterOrderPaymentMethod++;
+  if (buildCounterOrderPaymentMethod < 3) {
+    o.billingAddress = buildOrderAddress();
+    o.expirationMonth = 42;
+    o.expirationYear = 42;
+    o.lastFourDigits = "foo";
+    o.phoneNumber = "foo";
+    o.type = "foo";
+  }
+  buildCounterOrderPaymentMethod--;
+  return o;
+}
+
+checkOrderPaymentMethod(api.OrderPaymentMethod o) {
+  buildCounterOrderPaymentMethod++;
+  if (buildCounterOrderPaymentMethod < 3) {
+    checkOrderAddress(o.billingAddress);
+    unittest.expect(o.expirationMonth, unittest.equals(42));
+    unittest.expect(o.expirationYear, unittest.equals(42));
+    unittest.expect(o.lastFourDigits, unittest.equals('foo'));
+    unittest.expect(o.phoneNumber, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterOrderPaymentMethod--;
+}
+
+buildUnnamed1553() {
+  var o = new core.List<api.OrderPromotionBenefit>();
+  o.add(buildOrderPromotionBenefit());
+  o.add(buildOrderPromotionBenefit());
+  return o;
+}
+
+checkUnnamed1553(core.List<api.OrderPromotionBenefit> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderPromotionBenefit(o[0]);
+  checkOrderPromotionBenefit(o[1]);
+}
+
+core.int buildCounterOrderPromotion = 0;
+buildOrderPromotion() {
+  var o = new api.OrderPromotion();
+  buildCounterOrderPromotion++;
+  if (buildCounterOrderPromotion < 3) {
+    o.benefits = buildUnnamed1553();
+    o.effectiveDates = "foo";
+    o.genericRedemptionCode = "foo";
+    o.id = "foo";
+    o.longTitle = "foo";
+    o.productApplicability = "foo";
+    o.redemptionChannel = "foo";
+  }
+  buildCounterOrderPromotion--;
+  return o;
+}
+
+checkOrderPromotion(api.OrderPromotion o) {
+  buildCounterOrderPromotion++;
+  if (buildCounterOrderPromotion < 3) {
+    checkUnnamed1553(o.benefits);
+    unittest.expect(o.effectiveDates, unittest.equals('foo'));
+    unittest.expect(o.genericRedemptionCode, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.longTitle, unittest.equals('foo'));
+    unittest.expect(o.productApplicability, unittest.equals('foo'));
+    unittest.expect(o.redemptionChannel, unittest.equals('foo'));
+  }
+  buildCounterOrderPromotion--;
+}
+
+buildUnnamed1554() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1554(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterOrderPromotionBenefit = 0;
+buildOrderPromotionBenefit() {
+  var o = new api.OrderPromotionBenefit();
+  buildCounterOrderPromotionBenefit++;
+  if (buildCounterOrderPromotionBenefit < 3) {
+    o.discount = buildPrice();
+    o.offerIds = buildUnnamed1554();
+    o.subType = "foo";
+    o.taxImpact = buildPrice();
+    o.type = "foo";
+  }
+  buildCounterOrderPromotionBenefit--;
+  return o;
+}
+
+checkOrderPromotionBenefit(api.OrderPromotionBenefit o) {
+  buildCounterOrderPromotionBenefit++;
+  if (buildCounterOrderPromotionBenefit < 3) {
+    checkPrice(o.discount);
+    checkUnnamed1554(o.offerIds);
+    unittest.expect(o.subType, unittest.equals('foo'));
+    checkPrice(o.taxImpact);
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterOrderPromotionBenefit--;
+}
+
+core.int buildCounterOrderRefund = 0;
+buildOrderRefund() {
+  var o = new api.OrderRefund();
+  buildCounterOrderRefund++;
+  if (buildCounterOrderRefund < 3) {
+    o.actor = "foo";
+    o.amount = buildPrice();
+    o.creationDate = "foo";
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrderRefund--;
+  return o;
+}
+
+checkOrderRefund(api.OrderRefund o) {
+  buildCounterOrderRefund++;
+  if (buildCounterOrderRefund < 3) {
+    unittest.expect(o.actor, unittest.equals('foo'));
+    checkPrice(o.amount);
+    unittest.expect(o.creationDate, unittest.equals('foo'));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrderRefund--;
+}
+
+core.int buildCounterOrderReturn = 0;
+buildOrderReturn() {
+  var o = new api.OrderReturn();
+  buildCounterOrderReturn++;
+  if (buildCounterOrderReturn < 3) {
+    o.actor = "foo";
+    o.creationDate = "foo";
+    o.quantity = 42;
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrderReturn--;
+  return o;
+}
+
+checkOrderReturn(api.OrderReturn o) {
+  buildCounterOrderReturn++;
+  if (buildCounterOrderReturn < 3) {
+    unittest.expect(o.actor, unittest.equals('foo'));
+    unittest.expect(o.creationDate, unittest.equals('foo'));
+    unittest.expect(o.quantity, unittest.equals(42));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrderReturn--;
+}
+
+buildUnnamed1555() {
+  var o = new core.List<api.OrderShipmentLineItemShipment>();
+  o.add(buildOrderShipmentLineItemShipment());
+  o.add(buildOrderShipmentLineItemShipment());
+  return o;
+}
+
+checkUnnamed1555(core.List<api.OrderShipmentLineItemShipment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderShipmentLineItemShipment(o[0]);
+  checkOrderShipmentLineItemShipment(o[1]);
+}
+
+core.int buildCounterOrderShipment = 0;
+buildOrderShipment() {
+  var o = new api.OrderShipment();
+  buildCounterOrderShipment++;
+  if (buildCounterOrderShipment < 3) {
+    o.carrier = "foo";
+    o.creationDate = "foo";
+    o.deliveryDate = "foo";
+    o.id = "foo";
+    o.lineItems = buildUnnamed1555();
+    o.status = "foo";
+    o.trackingId = "foo";
+  }
+  buildCounterOrderShipment--;
+  return o;
+}
+
+checkOrderShipment(api.OrderShipment o) {
+  buildCounterOrderShipment++;
+  if (buildCounterOrderShipment < 3) {
+    unittest.expect(o.carrier, unittest.equals('foo'));
+    unittest.expect(o.creationDate, unittest.equals('foo'));
+    unittest.expect(o.deliveryDate, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed1555(o.lineItems);
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(o.trackingId, unittest.equals('foo'));
+  }
+  buildCounterOrderShipment--;
+}
+
+core.int buildCounterOrderShipmentLineItemShipment = 0;
+buildOrderShipmentLineItemShipment() {
+  var o = new api.OrderShipmentLineItemShipment();
+  buildCounterOrderShipmentLineItemShipment++;
+  if (buildCounterOrderShipmentLineItemShipment < 3) {
+    o.lineItemId = "foo";
+    o.quantity = 42;
+  }
+  buildCounterOrderShipmentLineItemShipment--;
+  return o;
+}
+
+checkOrderShipmentLineItemShipment(api.OrderShipmentLineItemShipment o) {
+  buildCounterOrderShipmentLineItemShipment++;
+  if (buildCounterOrderShipmentLineItemShipment < 3) {
+    unittest.expect(o.lineItemId, unittest.equals('foo'));
+    unittest.expect(o.quantity, unittest.equals(42));
+  }
+  buildCounterOrderShipmentLineItemShipment--;
+}
+
+core.int buildCounterOrdersAcknowledgeRequest = 0;
+buildOrdersAcknowledgeRequest() {
+  var o = new api.OrdersAcknowledgeRequest();
+  buildCounterOrdersAcknowledgeRequest++;
+  if (buildCounterOrdersAcknowledgeRequest < 3) {
+    o.operationId = "foo";
+  }
+  buildCounterOrdersAcknowledgeRequest--;
+  return o;
+}
+
+checkOrdersAcknowledgeRequest(api.OrdersAcknowledgeRequest o) {
+  buildCounterOrdersAcknowledgeRequest++;
+  if (buildCounterOrdersAcknowledgeRequest < 3) {
+    unittest.expect(o.operationId, unittest.equals('foo'));
+  }
+  buildCounterOrdersAcknowledgeRequest--;
+}
+
+core.int buildCounterOrdersAcknowledgeResponse = 0;
+buildOrdersAcknowledgeResponse() {
+  var o = new api.OrdersAcknowledgeResponse();
+  buildCounterOrdersAcknowledgeResponse++;
+  if (buildCounterOrdersAcknowledgeResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersAcknowledgeResponse--;
+  return o;
+}
+
+checkOrdersAcknowledgeResponse(api.OrdersAcknowledgeResponse o) {
+  buildCounterOrdersAcknowledgeResponse++;
+  if (buildCounterOrdersAcknowledgeResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersAcknowledgeResponse--;
+}
+
+core.int buildCounterOrdersAdvanceTestOrderResponse = 0;
+buildOrdersAdvanceTestOrderResponse() {
+  var o = new api.OrdersAdvanceTestOrderResponse();
+  buildCounterOrdersAdvanceTestOrderResponse++;
+  if (buildCounterOrdersAdvanceTestOrderResponse < 3) {
+    o.kind = "foo";
+  }
+  buildCounterOrdersAdvanceTestOrderResponse--;
+  return o;
+}
+
+checkOrdersAdvanceTestOrderResponse(api.OrdersAdvanceTestOrderResponse o) {
+  buildCounterOrdersAdvanceTestOrderResponse++;
+  if (buildCounterOrdersAdvanceTestOrderResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersAdvanceTestOrderResponse--;
+}
+
+core.int buildCounterOrdersCancelLineItemRequest = 0;
+buildOrdersCancelLineItemRequest() {
+  var o = new api.OrdersCancelLineItemRequest();
+  buildCounterOrdersCancelLineItemRequest++;
+  if (buildCounterOrdersCancelLineItemRequest < 3) {
+    o.amount = buildPrice();
+    o.lineItemId = "foo";
+    o.operationId = "foo";
+    o.quantity = 42;
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersCancelLineItemRequest--;
+  return o;
+}
+
+checkOrdersCancelLineItemRequest(api.OrdersCancelLineItemRequest o) {
+  buildCounterOrdersCancelLineItemRequest++;
+  if (buildCounterOrdersCancelLineItemRequest < 3) {
+    checkPrice(o.amount);
+    unittest.expect(o.lineItemId, unittest.equals('foo'));
+    unittest.expect(o.operationId, unittest.equals('foo'));
+    unittest.expect(o.quantity, unittest.equals(42));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersCancelLineItemRequest--;
+}
+
+core.int buildCounterOrdersCancelLineItemResponse = 0;
+buildOrdersCancelLineItemResponse() {
+  var o = new api.OrdersCancelLineItemResponse();
+  buildCounterOrdersCancelLineItemResponse++;
+  if (buildCounterOrdersCancelLineItemResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersCancelLineItemResponse--;
+  return o;
+}
+
+checkOrdersCancelLineItemResponse(api.OrdersCancelLineItemResponse o) {
+  buildCounterOrdersCancelLineItemResponse++;
+  if (buildCounterOrdersCancelLineItemResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersCancelLineItemResponse--;
+}
+
+core.int buildCounterOrdersCancelRequest = 0;
+buildOrdersCancelRequest() {
+  var o = new api.OrdersCancelRequest();
+  buildCounterOrdersCancelRequest++;
+  if (buildCounterOrdersCancelRequest < 3) {
+    o.operationId = "foo";
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersCancelRequest--;
+  return o;
+}
+
+checkOrdersCancelRequest(api.OrdersCancelRequest o) {
+  buildCounterOrdersCancelRequest++;
+  if (buildCounterOrdersCancelRequest < 3) {
+    unittest.expect(o.operationId, unittest.equals('foo'));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersCancelRequest--;
+}
+
+core.int buildCounterOrdersCancelResponse = 0;
+buildOrdersCancelResponse() {
+  var o = new api.OrdersCancelResponse();
+  buildCounterOrdersCancelResponse++;
+  if (buildCounterOrdersCancelResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersCancelResponse--;
+  return o;
+}
+
+checkOrdersCancelResponse(api.OrdersCancelResponse o) {
+  buildCounterOrdersCancelResponse++;
+  if (buildCounterOrdersCancelResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersCancelResponse--;
+}
+
+core.int buildCounterOrdersCreateTestOrderRequest = 0;
+buildOrdersCreateTestOrderRequest() {
+  var o = new api.OrdersCreateTestOrderRequest();
+  buildCounterOrdersCreateTestOrderRequest++;
+  if (buildCounterOrdersCreateTestOrderRequest < 3) {
+    o.templateName = "foo";
+    o.testOrder = buildTestOrder();
+  }
+  buildCounterOrdersCreateTestOrderRequest--;
+  return o;
+}
+
+checkOrdersCreateTestOrderRequest(api.OrdersCreateTestOrderRequest o) {
+  buildCounterOrdersCreateTestOrderRequest++;
+  if (buildCounterOrdersCreateTestOrderRequest < 3) {
+    unittest.expect(o.templateName, unittest.equals('foo'));
+    checkTestOrder(o.testOrder);
+  }
+  buildCounterOrdersCreateTestOrderRequest--;
+}
+
+core.int buildCounterOrdersCreateTestOrderResponse = 0;
+buildOrdersCreateTestOrderResponse() {
+  var o = new api.OrdersCreateTestOrderResponse();
+  buildCounterOrdersCreateTestOrderResponse++;
+  if (buildCounterOrdersCreateTestOrderResponse < 3) {
+    o.kind = "foo";
+    o.orderId = "foo";
+  }
+  buildCounterOrdersCreateTestOrderResponse--;
+  return o;
+}
+
+checkOrdersCreateTestOrderResponse(api.OrdersCreateTestOrderResponse o) {
+  buildCounterOrdersCreateTestOrderResponse++;
+  if (buildCounterOrdersCreateTestOrderResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.orderId, unittest.equals('foo'));
+  }
+  buildCounterOrdersCreateTestOrderResponse--;
+}
+
+buildUnnamed1556() {
+  var o = new core.List<api.OrdersCustomBatchRequestEntry>();
+  o.add(buildOrdersCustomBatchRequestEntry());
+  o.add(buildOrdersCustomBatchRequestEntry());
+  return o;
+}
+
+checkUnnamed1556(core.List<api.OrdersCustomBatchRequestEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrdersCustomBatchRequestEntry(o[0]);
+  checkOrdersCustomBatchRequestEntry(o[1]);
+}
+
+core.int buildCounterOrdersCustomBatchRequest = 0;
+buildOrdersCustomBatchRequest() {
+  var o = new api.OrdersCustomBatchRequest();
+  buildCounterOrdersCustomBatchRequest++;
+  if (buildCounterOrdersCustomBatchRequest < 3) {
+    o.entries = buildUnnamed1556();
+  }
+  buildCounterOrdersCustomBatchRequest--;
+  return o;
+}
+
+checkOrdersCustomBatchRequest(api.OrdersCustomBatchRequest o) {
+  buildCounterOrdersCustomBatchRequest++;
+  if (buildCounterOrdersCustomBatchRequest < 3) {
+    checkUnnamed1556(o.entries);
+  }
+  buildCounterOrdersCustomBatchRequest--;
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntry = 0;
+buildOrdersCustomBatchRequestEntry() {
+  var o = new api.OrdersCustomBatchRequestEntry();
+  buildCounterOrdersCustomBatchRequestEntry++;
+  if (buildCounterOrdersCustomBatchRequestEntry < 3) {
+    o.batchId = 42;
+    o.cancel = buildOrdersCustomBatchRequestEntryCancel();
+    o.cancelLineItem = buildOrdersCustomBatchRequestEntryCancelLineItem();
+    o.merchantId = "foo";
+    o.merchantOrderId = "foo";
+    o.method = "foo";
+    o.operationId = "foo";
+    o.orderId = "foo";
+    o.refund = buildOrdersCustomBatchRequestEntryRefund();
+    o.returnLineItem = buildOrdersCustomBatchRequestEntryReturnLineItem();
+    o.shipLineItems = buildOrdersCustomBatchRequestEntryShipLineItems();
+    o.updateShipment = buildOrdersCustomBatchRequestEntryUpdateShipment();
+  }
+  buildCounterOrdersCustomBatchRequestEntry--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntry(api.OrdersCustomBatchRequestEntry o) {
+  buildCounterOrdersCustomBatchRequestEntry++;
+  if (buildCounterOrdersCustomBatchRequestEntry < 3) {
+    unittest.expect(o.batchId, unittest.equals(42));
+    checkOrdersCustomBatchRequestEntryCancel(o.cancel);
+    checkOrdersCustomBatchRequestEntryCancelLineItem(o.cancelLineItem);
+    unittest.expect(o.merchantId, unittest.equals('foo'));
+    unittest.expect(o.merchantOrderId, unittest.equals('foo'));
+    unittest.expect(o.method, unittest.equals('foo'));
+    unittest.expect(o.operationId, unittest.equals('foo'));
+    unittest.expect(o.orderId, unittest.equals('foo'));
+    checkOrdersCustomBatchRequestEntryRefund(o.refund);
+    checkOrdersCustomBatchRequestEntryReturnLineItem(o.returnLineItem);
+    checkOrdersCustomBatchRequestEntryShipLineItems(o.shipLineItems);
+    checkOrdersCustomBatchRequestEntryUpdateShipment(o.updateShipment);
+  }
+  buildCounterOrdersCustomBatchRequestEntry--;
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntryCancel = 0;
+buildOrdersCustomBatchRequestEntryCancel() {
+  var o = new api.OrdersCustomBatchRequestEntryCancel();
+  buildCounterOrdersCustomBatchRequestEntryCancel++;
+  if (buildCounterOrdersCustomBatchRequestEntryCancel < 3) {
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersCustomBatchRequestEntryCancel--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntryCancel(
+    api.OrdersCustomBatchRequestEntryCancel o) {
+  buildCounterOrdersCustomBatchRequestEntryCancel++;
+  if (buildCounterOrdersCustomBatchRequestEntryCancel < 3) {
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchRequestEntryCancel--;
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntryCancelLineItem = 0;
+buildOrdersCustomBatchRequestEntryCancelLineItem() {
+  var o = new api.OrdersCustomBatchRequestEntryCancelLineItem();
+  buildCounterOrdersCustomBatchRequestEntryCancelLineItem++;
+  if (buildCounterOrdersCustomBatchRequestEntryCancelLineItem < 3) {
+    o.amount = buildPrice();
+    o.lineItemId = "foo";
+    o.quantity = 42;
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersCustomBatchRequestEntryCancelLineItem--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntryCancelLineItem(
+    api.OrdersCustomBatchRequestEntryCancelLineItem o) {
+  buildCounterOrdersCustomBatchRequestEntryCancelLineItem++;
+  if (buildCounterOrdersCustomBatchRequestEntryCancelLineItem < 3) {
+    checkPrice(o.amount);
+    unittest.expect(o.lineItemId, unittest.equals('foo'));
+    unittest.expect(o.quantity, unittest.equals(42));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchRequestEntryCancelLineItem--;
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntryRefund = 0;
+buildOrdersCustomBatchRequestEntryRefund() {
+  var o = new api.OrdersCustomBatchRequestEntryRefund();
+  buildCounterOrdersCustomBatchRequestEntryRefund++;
+  if (buildCounterOrdersCustomBatchRequestEntryRefund < 3) {
+    o.amount = buildPrice();
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersCustomBatchRequestEntryRefund--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntryRefund(
+    api.OrdersCustomBatchRequestEntryRefund o) {
+  buildCounterOrdersCustomBatchRequestEntryRefund++;
+  if (buildCounterOrdersCustomBatchRequestEntryRefund < 3) {
+    checkPrice(o.amount);
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchRequestEntryRefund--;
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntryReturnLineItem = 0;
+buildOrdersCustomBatchRequestEntryReturnLineItem() {
+  var o = new api.OrdersCustomBatchRequestEntryReturnLineItem();
+  buildCounterOrdersCustomBatchRequestEntryReturnLineItem++;
+  if (buildCounterOrdersCustomBatchRequestEntryReturnLineItem < 3) {
+    o.lineItemId = "foo";
+    o.quantity = 42;
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersCustomBatchRequestEntryReturnLineItem--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntryReturnLineItem(
+    api.OrdersCustomBatchRequestEntryReturnLineItem o) {
+  buildCounterOrdersCustomBatchRequestEntryReturnLineItem++;
+  if (buildCounterOrdersCustomBatchRequestEntryReturnLineItem < 3) {
+    unittest.expect(o.lineItemId, unittest.equals('foo'));
+    unittest.expect(o.quantity, unittest.equals(42));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchRequestEntryReturnLineItem--;
+}
+
+buildUnnamed1557() {
+  var o = new core.List<api.OrderShipmentLineItemShipment>();
+  o.add(buildOrderShipmentLineItemShipment());
+  o.add(buildOrderShipmentLineItemShipment());
+  return o;
+}
+
+checkUnnamed1557(core.List<api.OrderShipmentLineItemShipment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderShipmentLineItemShipment(o[0]);
+  checkOrderShipmentLineItemShipment(o[1]);
+}
+
+buildUnnamed1558() {
+  var o = new core
+      .List<api.OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo>();
+  o.add(buildOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo());
+  o.add(buildOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo());
+  return o;
+}
+
+checkUnnamed1558(
+    core.List<api.OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo(o[0]);
+  checkOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo(o[1]);
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntryShipLineItems = 0;
+buildOrdersCustomBatchRequestEntryShipLineItems() {
+  var o = new api.OrdersCustomBatchRequestEntryShipLineItems();
+  buildCounterOrdersCustomBatchRequestEntryShipLineItems++;
+  if (buildCounterOrdersCustomBatchRequestEntryShipLineItems < 3) {
+    o.carrier = "foo";
+    o.lineItems = buildUnnamed1557();
+    o.shipmentId = "foo";
+    o.shipmentInfos = buildUnnamed1558();
+    o.trackingId = "foo";
+  }
+  buildCounterOrdersCustomBatchRequestEntryShipLineItems--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntryShipLineItems(
+    api.OrdersCustomBatchRequestEntryShipLineItems o) {
+  buildCounterOrdersCustomBatchRequestEntryShipLineItems++;
+  if (buildCounterOrdersCustomBatchRequestEntryShipLineItems < 3) {
+    unittest.expect(o.carrier, unittest.equals('foo'));
+    checkUnnamed1557(o.lineItems);
+    unittest.expect(o.shipmentId, unittest.equals('foo'));
+    checkUnnamed1558(o.shipmentInfos);
+    unittest.expect(o.trackingId, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchRequestEntryShipLineItems--;
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo = 0;
+buildOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo() {
+  var o = new api.OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo();
+  buildCounterOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo++;
+  if (buildCounterOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo < 3) {
+    o.carrier = "foo";
+    o.shipmentId = "foo";
+    o.trackingId = "foo";
+  }
+  buildCounterOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo(
+    api.OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo o) {
+  buildCounterOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo++;
+  if (buildCounterOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo < 3) {
+    unittest.expect(o.carrier, unittest.equals('foo'));
+    unittest.expect(o.shipmentId, unittest.equals('foo'));
+    unittest.expect(o.trackingId, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo--;
+}
+
+core.int buildCounterOrdersCustomBatchRequestEntryUpdateShipment = 0;
+buildOrdersCustomBatchRequestEntryUpdateShipment() {
+  var o = new api.OrdersCustomBatchRequestEntryUpdateShipment();
+  buildCounterOrdersCustomBatchRequestEntryUpdateShipment++;
+  if (buildCounterOrdersCustomBatchRequestEntryUpdateShipment < 3) {
+    o.carrier = "foo";
+    o.shipmentId = "foo";
+    o.status = "foo";
+    o.trackingId = "foo";
+  }
+  buildCounterOrdersCustomBatchRequestEntryUpdateShipment--;
+  return o;
+}
+
+checkOrdersCustomBatchRequestEntryUpdateShipment(
+    api.OrdersCustomBatchRequestEntryUpdateShipment o) {
+  buildCounterOrdersCustomBatchRequestEntryUpdateShipment++;
+  if (buildCounterOrdersCustomBatchRequestEntryUpdateShipment < 3) {
+    unittest.expect(o.carrier, unittest.equals('foo'));
+    unittest.expect(o.shipmentId, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(o.trackingId, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchRequestEntryUpdateShipment--;
+}
+
+buildUnnamed1559() {
+  var o = new core.List<api.OrdersCustomBatchResponseEntry>();
+  o.add(buildOrdersCustomBatchResponseEntry());
+  o.add(buildOrdersCustomBatchResponseEntry());
+  return o;
+}
+
+checkUnnamed1559(core.List<api.OrdersCustomBatchResponseEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrdersCustomBatchResponseEntry(o[0]);
+  checkOrdersCustomBatchResponseEntry(o[1]);
+}
+
+core.int buildCounterOrdersCustomBatchResponse = 0;
+buildOrdersCustomBatchResponse() {
+  var o = new api.OrdersCustomBatchResponse();
+  buildCounterOrdersCustomBatchResponse++;
+  if (buildCounterOrdersCustomBatchResponse < 3) {
+    o.entries = buildUnnamed1559();
+    o.kind = "foo";
+  }
+  buildCounterOrdersCustomBatchResponse--;
+  return o;
+}
+
+checkOrdersCustomBatchResponse(api.OrdersCustomBatchResponse o) {
+  buildCounterOrdersCustomBatchResponse++;
+  if (buildCounterOrdersCustomBatchResponse < 3) {
+    checkUnnamed1559(o.entries);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersCustomBatchResponse--;
+}
+
+core.int buildCounterOrdersCustomBatchResponseEntry = 0;
+buildOrdersCustomBatchResponseEntry() {
+  var o = new api.OrdersCustomBatchResponseEntry();
+  buildCounterOrdersCustomBatchResponseEntry++;
+  if (buildCounterOrdersCustomBatchResponseEntry < 3) {
+    o.batchId = 42;
+    o.errors = buildErrors();
+    o.executionStatus = "foo";
+    o.kind = "foo";
+    o.order = buildOrder();
+  }
+  buildCounterOrdersCustomBatchResponseEntry--;
+  return o;
+}
+
+checkOrdersCustomBatchResponseEntry(api.OrdersCustomBatchResponseEntry o) {
+  buildCounterOrdersCustomBatchResponseEntry++;
+  if (buildCounterOrdersCustomBatchResponseEntry < 3) {
+    unittest.expect(o.batchId, unittest.equals(42));
+    checkErrors(o.errors);
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkOrder(o.order);
+  }
+  buildCounterOrdersCustomBatchResponseEntry--;
+}
+
+core.int buildCounterOrdersGetByMerchantOrderIdResponse = 0;
+buildOrdersGetByMerchantOrderIdResponse() {
+  var o = new api.OrdersGetByMerchantOrderIdResponse();
+  buildCounterOrdersGetByMerchantOrderIdResponse++;
+  if (buildCounterOrdersGetByMerchantOrderIdResponse < 3) {
+    o.kind = "foo";
+    o.order = buildOrder();
+  }
+  buildCounterOrdersGetByMerchantOrderIdResponse--;
+  return o;
+}
+
+checkOrdersGetByMerchantOrderIdResponse(
+    api.OrdersGetByMerchantOrderIdResponse o) {
+  buildCounterOrdersGetByMerchantOrderIdResponse++;
+  if (buildCounterOrdersGetByMerchantOrderIdResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkOrder(o.order);
+  }
+  buildCounterOrdersGetByMerchantOrderIdResponse--;
+}
+
+core.int buildCounterOrdersGetTestOrderTemplateResponse = 0;
+buildOrdersGetTestOrderTemplateResponse() {
+  var o = new api.OrdersGetTestOrderTemplateResponse();
+  buildCounterOrdersGetTestOrderTemplateResponse++;
+  if (buildCounterOrdersGetTestOrderTemplateResponse < 3) {
+    o.kind = "foo";
+    o.template = buildTestOrder();
+  }
+  buildCounterOrdersGetTestOrderTemplateResponse--;
+  return o;
+}
+
+checkOrdersGetTestOrderTemplateResponse(
+    api.OrdersGetTestOrderTemplateResponse o) {
+  buildCounterOrdersGetTestOrderTemplateResponse++;
+  if (buildCounterOrdersGetTestOrderTemplateResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkTestOrder(o.template);
+  }
+  buildCounterOrdersGetTestOrderTemplateResponse--;
+}
+
+buildUnnamed1560() {
+  var o = new core.List<api.Order>();
+  o.add(buildOrder());
+  o.add(buildOrder());
+  return o;
+}
+
+checkUnnamed1560(core.List<api.Order> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrder(o[0]);
+  checkOrder(o[1]);
+}
+
+core.int buildCounterOrdersListResponse = 0;
+buildOrdersListResponse() {
+  var o = new api.OrdersListResponse();
+  buildCounterOrdersListResponse++;
+  if (buildCounterOrdersListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.resources = buildUnnamed1560();
+  }
+  buildCounterOrdersListResponse--;
+  return o;
+}
+
+checkOrdersListResponse(api.OrdersListResponse o) {
+  buildCounterOrdersListResponse++;
+  if (buildCounterOrdersListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1560(o.resources);
+  }
+  buildCounterOrdersListResponse--;
+}
+
+core.int buildCounterOrdersRefundRequest = 0;
+buildOrdersRefundRequest() {
+  var o = new api.OrdersRefundRequest();
+  buildCounterOrdersRefundRequest++;
+  if (buildCounterOrdersRefundRequest < 3) {
+    o.amount = buildPrice();
+    o.operationId = "foo";
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersRefundRequest--;
+  return o;
+}
+
+checkOrdersRefundRequest(api.OrdersRefundRequest o) {
+  buildCounterOrdersRefundRequest++;
+  if (buildCounterOrdersRefundRequest < 3) {
+    checkPrice(o.amount);
+    unittest.expect(o.operationId, unittest.equals('foo'));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersRefundRequest--;
+}
+
+core.int buildCounterOrdersRefundResponse = 0;
+buildOrdersRefundResponse() {
+  var o = new api.OrdersRefundResponse();
+  buildCounterOrdersRefundResponse++;
+  if (buildCounterOrdersRefundResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersRefundResponse--;
+  return o;
+}
+
+checkOrdersRefundResponse(api.OrdersRefundResponse o) {
+  buildCounterOrdersRefundResponse++;
+  if (buildCounterOrdersRefundResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersRefundResponse--;
+}
+
+core.int buildCounterOrdersReturnLineItemRequest = 0;
+buildOrdersReturnLineItemRequest() {
+  var o = new api.OrdersReturnLineItemRequest();
+  buildCounterOrdersReturnLineItemRequest++;
+  if (buildCounterOrdersReturnLineItemRequest < 3) {
+    o.lineItemId = "foo";
+    o.operationId = "foo";
+    o.quantity = 42;
+    o.reason = "foo";
+    o.reasonText = "foo";
+  }
+  buildCounterOrdersReturnLineItemRequest--;
+  return o;
+}
+
+checkOrdersReturnLineItemRequest(api.OrdersReturnLineItemRequest o) {
+  buildCounterOrdersReturnLineItemRequest++;
+  if (buildCounterOrdersReturnLineItemRequest < 3) {
+    unittest.expect(o.lineItemId, unittest.equals('foo'));
+    unittest.expect(o.operationId, unittest.equals('foo'));
+    unittest.expect(o.quantity, unittest.equals(42));
+    unittest.expect(o.reason, unittest.equals('foo'));
+    unittest.expect(o.reasonText, unittest.equals('foo'));
+  }
+  buildCounterOrdersReturnLineItemRequest--;
+}
+
+core.int buildCounterOrdersReturnLineItemResponse = 0;
+buildOrdersReturnLineItemResponse() {
+  var o = new api.OrdersReturnLineItemResponse();
+  buildCounterOrdersReturnLineItemResponse++;
+  if (buildCounterOrdersReturnLineItemResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersReturnLineItemResponse--;
+  return o;
+}
+
+checkOrdersReturnLineItemResponse(api.OrdersReturnLineItemResponse o) {
+  buildCounterOrdersReturnLineItemResponse++;
+  if (buildCounterOrdersReturnLineItemResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersReturnLineItemResponse--;
+}
+
+buildUnnamed1561() {
+  var o = new core.List<api.OrderShipmentLineItemShipment>();
+  o.add(buildOrderShipmentLineItemShipment());
+  o.add(buildOrderShipmentLineItemShipment());
+  return o;
+}
+
+checkUnnamed1561(core.List<api.OrderShipmentLineItemShipment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderShipmentLineItemShipment(o[0]);
+  checkOrderShipmentLineItemShipment(o[1]);
+}
+
+buildUnnamed1562() {
+  var o = new core
+      .List<api.OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo>();
+  o.add(buildOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo());
+  o.add(buildOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo());
+  return o;
+}
+
+checkUnnamed1562(
+    core.List<api.OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo(o[0]);
+  checkOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo(o[1]);
+}
+
+core.int buildCounterOrdersShipLineItemsRequest = 0;
+buildOrdersShipLineItemsRequest() {
+  var o = new api.OrdersShipLineItemsRequest();
+  buildCounterOrdersShipLineItemsRequest++;
+  if (buildCounterOrdersShipLineItemsRequest < 3) {
+    o.carrier = "foo";
+    o.lineItems = buildUnnamed1561();
+    o.operationId = "foo";
+    o.shipmentId = "foo";
+    o.shipmentInfos = buildUnnamed1562();
+    o.trackingId = "foo";
+  }
+  buildCounterOrdersShipLineItemsRequest--;
+  return o;
+}
+
+checkOrdersShipLineItemsRequest(api.OrdersShipLineItemsRequest o) {
+  buildCounterOrdersShipLineItemsRequest++;
+  if (buildCounterOrdersShipLineItemsRequest < 3) {
+    unittest.expect(o.carrier, unittest.equals('foo'));
+    checkUnnamed1561(o.lineItems);
+    unittest.expect(o.operationId, unittest.equals('foo'));
+    unittest.expect(o.shipmentId, unittest.equals('foo'));
+    checkUnnamed1562(o.shipmentInfos);
+    unittest.expect(o.trackingId, unittest.equals('foo'));
+  }
+  buildCounterOrdersShipLineItemsRequest--;
+}
+
+core.int buildCounterOrdersShipLineItemsResponse = 0;
+buildOrdersShipLineItemsResponse() {
+  var o = new api.OrdersShipLineItemsResponse();
+  buildCounterOrdersShipLineItemsResponse++;
+  if (buildCounterOrdersShipLineItemsResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersShipLineItemsResponse--;
+  return o;
+}
+
+checkOrdersShipLineItemsResponse(api.OrdersShipLineItemsResponse o) {
+  buildCounterOrdersShipLineItemsResponse++;
+  if (buildCounterOrdersShipLineItemsResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersShipLineItemsResponse--;
+}
+
+core.int buildCounterOrdersUpdateMerchantOrderIdRequest = 0;
+buildOrdersUpdateMerchantOrderIdRequest() {
+  var o = new api.OrdersUpdateMerchantOrderIdRequest();
+  buildCounterOrdersUpdateMerchantOrderIdRequest++;
+  if (buildCounterOrdersUpdateMerchantOrderIdRequest < 3) {
+    o.merchantOrderId = "foo";
+    o.operationId = "foo";
+  }
+  buildCounterOrdersUpdateMerchantOrderIdRequest--;
+  return o;
+}
+
+checkOrdersUpdateMerchantOrderIdRequest(
+    api.OrdersUpdateMerchantOrderIdRequest o) {
+  buildCounterOrdersUpdateMerchantOrderIdRequest++;
+  if (buildCounterOrdersUpdateMerchantOrderIdRequest < 3) {
+    unittest.expect(o.merchantOrderId, unittest.equals('foo'));
+    unittest.expect(o.operationId, unittest.equals('foo'));
+  }
+  buildCounterOrdersUpdateMerchantOrderIdRequest--;
+}
+
+core.int buildCounterOrdersUpdateMerchantOrderIdResponse = 0;
+buildOrdersUpdateMerchantOrderIdResponse() {
+  var o = new api.OrdersUpdateMerchantOrderIdResponse();
+  buildCounterOrdersUpdateMerchantOrderIdResponse++;
+  if (buildCounterOrdersUpdateMerchantOrderIdResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersUpdateMerchantOrderIdResponse--;
+  return o;
+}
+
+checkOrdersUpdateMerchantOrderIdResponse(
+    api.OrdersUpdateMerchantOrderIdResponse o) {
+  buildCounterOrdersUpdateMerchantOrderIdResponse++;
+  if (buildCounterOrdersUpdateMerchantOrderIdResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersUpdateMerchantOrderIdResponse--;
+}
+
+core.int buildCounterOrdersUpdateShipmentRequest = 0;
+buildOrdersUpdateShipmentRequest() {
+  var o = new api.OrdersUpdateShipmentRequest();
+  buildCounterOrdersUpdateShipmentRequest++;
+  if (buildCounterOrdersUpdateShipmentRequest < 3) {
+    o.carrier = "foo";
+    o.operationId = "foo";
+    o.shipmentId = "foo";
+    o.status = "foo";
+    o.trackingId = "foo";
+  }
+  buildCounterOrdersUpdateShipmentRequest--;
+  return o;
+}
+
+checkOrdersUpdateShipmentRequest(api.OrdersUpdateShipmentRequest o) {
+  buildCounterOrdersUpdateShipmentRequest++;
+  if (buildCounterOrdersUpdateShipmentRequest < 3) {
+    unittest.expect(o.carrier, unittest.equals('foo'));
+    unittest.expect(o.operationId, unittest.equals('foo'));
+    unittest.expect(o.shipmentId, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(o.trackingId, unittest.equals('foo'));
+  }
+  buildCounterOrdersUpdateShipmentRequest--;
+}
+
+core.int buildCounterOrdersUpdateShipmentResponse = 0;
+buildOrdersUpdateShipmentResponse() {
+  var o = new api.OrdersUpdateShipmentResponse();
+  buildCounterOrdersUpdateShipmentResponse++;
+  if (buildCounterOrdersUpdateShipmentResponse < 3) {
+    o.executionStatus = "foo";
+    o.kind = "foo";
+  }
+  buildCounterOrdersUpdateShipmentResponse--;
+  return o;
+}
+
+checkOrdersUpdateShipmentResponse(api.OrdersUpdateShipmentResponse o) {
+  buildCounterOrdersUpdateShipmentResponse++;
+  if (buildCounterOrdersUpdateShipmentResponse < 3) {
+    unittest.expect(o.executionStatus, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterOrdersUpdateShipmentResponse--;
+}
+
+core.int buildCounterPrice = 0;
+buildPrice() {
+  var o = new api.Price();
+  buildCounterPrice++;
+  if (buildCounterPrice < 3) {
+    o.currency = "foo";
+    o.value = "foo";
+  }
+  buildCounterPrice--;
+  return o;
+}
+
+checkPrice(api.Price o) {
+  buildCounterPrice++;
+  if (buildCounterPrice < 3) {
+    unittest.expect(o.currency, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterPrice--;
+}
+
+buildUnnamed1563() {
+  var o = new core.List<api.TestOrderLineItem>();
+  o.add(buildTestOrderLineItem());
+  o.add(buildTestOrderLineItem());
+  return o;
+}
+
+checkUnnamed1563(core.List<api.TestOrderLineItem> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTestOrderLineItem(o[0]);
+  checkTestOrderLineItem(o[1]);
+}
+
+buildUnnamed1564() {
+  var o = new core.List<api.OrderPromotion>();
+  o.add(buildOrderPromotion());
+  o.add(buildOrderPromotion());
+  return o;
+}
+
+checkUnnamed1564(core.List<api.OrderPromotion> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderPromotion(o[0]);
+  checkOrderPromotion(o[1]);
+}
+
+core.int buildCounterTestOrder = 0;
+buildTestOrder() {
+  var o = new api.TestOrder();
+  buildCounterTestOrder++;
+  if (buildCounterTestOrder < 3) {
+    o.customer = buildTestOrderCustomer();
+    o.kind = "foo";
+    o.lineItems = buildUnnamed1563();
+    o.paymentMethod = buildTestOrderPaymentMethod();
+    o.predefinedDeliveryAddress = "foo";
+    o.promotions = buildUnnamed1564();
+    o.shippingCost = buildPrice();
+    o.shippingCostTax = buildPrice();
+    o.shippingOption = "foo";
+  }
+  buildCounterTestOrder--;
+  return o;
+}
+
+checkTestOrder(api.TestOrder o) {
+  buildCounterTestOrder++;
+  if (buildCounterTestOrder < 3) {
+    checkTestOrderCustomer(o.customer);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed1563(o.lineItems);
+    checkTestOrderPaymentMethod(o.paymentMethod);
+    unittest.expect(o.predefinedDeliveryAddress, unittest.equals('foo'));
+    checkUnnamed1564(o.promotions);
+    checkPrice(o.shippingCost);
+    checkPrice(o.shippingCostTax);
+    unittest.expect(o.shippingOption, unittest.equals('foo'));
+  }
+  buildCounterTestOrder--;
+}
+
+core.int buildCounterTestOrderCustomer = 0;
+buildTestOrderCustomer() {
+  var o = new api.TestOrderCustomer();
+  buildCounterTestOrderCustomer++;
+  if (buildCounterTestOrderCustomer < 3) {
+    o.email = "foo";
+    o.explicitMarketingPreference = true;
+    o.fullName = "foo";
+  }
+  buildCounterTestOrderCustomer--;
+  return o;
+}
+
+checkTestOrderCustomer(api.TestOrderCustomer o) {
+  buildCounterTestOrderCustomer++;
+  if (buildCounterTestOrderCustomer < 3) {
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.explicitMarketingPreference, unittest.isTrue);
+    unittest.expect(o.fullName, unittest.equals('foo'));
+  }
+  buildCounterTestOrderCustomer--;
+}
+
+core.int buildCounterTestOrderLineItem = 0;
+buildTestOrderLineItem() {
+  var o = new api.TestOrderLineItem();
+  buildCounterTestOrderLineItem++;
+  if (buildCounterTestOrderLineItem < 3) {
+    o.product = buildTestOrderLineItemProduct();
+    o.quantityOrdered = 42;
+    o.returnInfo = buildOrderLineItemReturnInfo();
+    o.shippingDetails = buildOrderLineItemShippingDetails();
+    o.unitTax = buildPrice();
+  }
+  buildCounterTestOrderLineItem--;
+  return o;
+}
+
+checkTestOrderLineItem(api.TestOrderLineItem o) {
+  buildCounterTestOrderLineItem++;
+  if (buildCounterTestOrderLineItem < 3) {
+    checkTestOrderLineItemProduct(o.product);
+    unittest.expect(o.quantityOrdered, unittest.equals(42));
+    checkOrderLineItemReturnInfo(o.returnInfo);
+    checkOrderLineItemShippingDetails(o.shippingDetails);
+    checkPrice(o.unitTax);
+  }
+  buildCounterTestOrderLineItem--;
+}
+
+buildUnnamed1565() {
+  var o = new core.List<api.OrderLineItemProductVariantAttribute>();
+  o.add(buildOrderLineItemProductVariantAttribute());
+  o.add(buildOrderLineItemProductVariantAttribute());
+  return o;
+}
+
+checkUnnamed1565(core.List<api.OrderLineItemProductVariantAttribute> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderLineItemProductVariantAttribute(o[0]);
+  checkOrderLineItemProductVariantAttribute(o[1]);
+}
+
+core.int buildCounterTestOrderLineItemProduct = 0;
+buildTestOrderLineItemProduct() {
+  var o = new api.TestOrderLineItemProduct();
+  buildCounterTestOrderLineItemProduct++;
+  if (buildCounterTestOrderLineItemProduct < 3) {
+    o.brand = "foo";
+    o.channel = "foo";
+    o.condition = "foo";
+    o.contentLanguage = "foo";
+    o.gtin = "foo";
+    o.imageLink = "foo";
+    o.itemGroupId = "foo";
+    o.mpn = "foo";
+    o.offerId = "foo";
+    o.price = buildPrice();
+    o.targetCountry = "foo";
+    o.title = "foo";
+    o.variantAttributes = buildUnnamed1565();
+  }
+  buildCounterTestOrderLineItemProduct--;
+  return o;
+}
+
+checkTestOrderLineItemProduct(api.TestOrderLineItemProduct o) {
+  buildCounterTestOrderLineItemProduct++;
+  if (buildCounterTestOrderLineItemProduct < 3) {
+    unittest.expect(o.brand, unittest.equals('foo'));
+    unittest.expect(o.channel, unittest.equals('foo'));
+    unittest.expect(o.condition, unittest.equals('foo'));
+    unittest.expect(o.contentLanguage, unittest.equals('foo'));
+    unittest.expect(o.gtin, unittest.equals('foo'));
+    unittest.expect(o.imageLink, unittest.equals('foo'));
+    unittest.expect(o.itemGroupId, unittest.equals('foo'));
+    unittest.expect(o.mpn, unittest.equals('foo'));
+    unittest.expect(o.offerId, unittest.equals('foo'));
+    checkPrice(o.price);
+    unittest.expect(o.targetCountry, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    checkUnnamed1565(o.variantAttributes);
+  }
+  buildCounterTestOrderLineItemProduct--;
+}
+
+core.int buildCounterTestOrderPaymentMethod = 0;
+buildTestOrderPaymentMethod() {
+  var o = new api.TestOrderPaymentMethod();
+  buildCounterTestOrderPaymentMethod++;
+  if (buildCounterTestOrderPaymentMethod < 3) {
+    o.expirationMonth = 42;
+    o.expirationYear = 42;
+    o.lastFourDigits = "foo";
+    o.predefinedBillingAddress = "foo";
+    o.type = "foo";
+  }
+  buildCounterTestOrderPaymentMethod--;
+  return o;
+}
+
+checkTestOrderPaymentMethod(api.TestOrderPaymentMethod o) {
+  buildCounterTestOrderPaymentMethod++;
+  if (buildCounterTestOrderPaymentMethod < 3) {
+    unittest.expect(o.expirationMonth, unittest.equals(42));
+    unittest.expect(o.expirationYear, unittest.equals(42));
+    unittest.expect(o.lastFourDigits, unittest.equals('foo'));
+    unittest.expect(o.predefinedBillingAddress, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterTestOrderPaymentMethod--;
+}
+
+buildUnnamed1566() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1566(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-Error", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildError();
+      var od = new api.Error.fromJson(o.toJson());
+      checkError(od);
+    });
+  });
+
+  unittest.group("obj-schema-Errors", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildErrors();
+      var od = new api.Errors.fromJson(o.toJson());
+      checkErrors(od);
+    });
+  });
+
+  unittest.group("obj-schema-Order", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrder();
+      var od = new api.Order.fromJson(o.toJson());
+      checkOrder(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderAddress", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderAddress();
+      var od = new api.OrderAddress.fromJson(o.toJson());
+      checkOrderAddress(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderCancellation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderCancellation();
+      var od = new api.OrderCancellation.fromJson(o.toJson());
+      checkOrderCancellation(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderCustomer", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderCustomer();
+      var od = new api.OrderCustomer.fromJson(o.toJson());
+      checkOrderCustomer(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderDeliveryDetails", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderDeliveryDetails();
+      var od = new api.OrderDeliveryDetails.fromJson(o.toJson());
+      checkOrderDeliveryDetails(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderLineItem", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderLineItem();
+      var od = new api.OrderLineItem.fromJson(o.toJson());
+      checkOrderLineItem(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderLineItemProduct", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderLineItemProduct();
+      var od = new api.OrderLineItemProduct.fromJson(o.toJson());
+      checkOrderLineItemProduct(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderLineItemProductVariantAttribute", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderLineItemProductVariantAttribute();
+      var od =
+          new api.OrderLineItemProductVariantAttribute.fromJson(o.toJson());
+      checkOrderLineItemProductVariantAttribute(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderLineItemReturnInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderLineItemReturnInfo();
+      var od = new api.OrderLineItemReturnInfo.fromJson(o.toJson());
+      checkOrderLineItemReturnInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderLineItemShippingDetails", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderLineItemShippingDetails();
+      var od = new api.OrderLineItemShippingDetails.fromJson(o.toJson());
+      checkOrderLineItemShippingDetails(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderLineItemShippingDetailsMethod", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderLineItemShippingDetailsMethod();
+      var od = new api.OrderLineItemShippingDetailsMethod.fromJson(o.toJson());
+      checkOrderLineItemShippingDetailsMethod(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderPaymentMethod", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderPaymentMethod();
+      var od = new api.OrderPaymentMethod.fromJson(o.toJson());
+      checkOrderPaymentMethod(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderPromotion", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderPromotion();
+      var od = new api.OrderPromotion.fromJson(o.toJson());
+      checkOrderPromotion(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderPromotionBenefit", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderPromotionBenefit();
+      var od = new api.OrderPromotionBenefit.fromJson(o.toJson());
+      checkOrderPromotionBenefit(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderRefund", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderRefund();
+      var od = new api.OrderRefund.fromJson(o.toJson());
+      checkOrderRefund(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderReturn", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderReturn();
+      var od = new api.OrderReturn.fromJson(o.toJson());
+      checkOrderReturn(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderShipment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderShipment();
+      var od = new api.OrderShipment.fromJson(o.toJson());
+      checkOrderShipment(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderShipmentLineItemShipment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderShipmentLineItemShipment();
+      var od = new api.OrderShipmentLineItemShipment.fromJson(o.toJson());
+      checkOrderShipmentLineItemShipment(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersAcknowledgeRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersAcknowledgeRequest();
+      var od = new api.OrdersAcknowledgeRequest.fromJson(o.toJson());
+      checkOrdersAcknowledgeRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersAcknowledgeResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersAcknowledgeResponse();
+      var od = new api.OrdersAcknowledgeResponse.fromJson(o.toJson());
+      checkOrdersAcknowledgeResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersAdvanceTestOrderResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersAdvanceTestOrderResponse();
+      var od = new api.OrdersAdvanceTestOrderResponse.fromJson(o.toJson());
+      checkOrdersAdvanceTestOrderResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCancelLineItemRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCancelLineItemRequest();
+      var od = new api.OrdersCancelLineItemRequest.fromJson(o.toJson());
+      checkOrdersCancelLineItemRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCancelLineItemResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCancelLineItemResponse();
+      var od = new api.OrdersCancelLineItemResponse.fromJson(o.toJson());
+      checkOrdersCancelLineItemResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCancelRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCancelRequest();
+      var od = new api.OrdersCancelRequest.fromJson(o.toJson());
+      checkOrdersCancelRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCancelResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCancelResponse();
+      var od = new api.OrdersCancelResponse.fromJson(o.toJson());
+      checkOrdersCancelResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCreateTestOrderRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCreateTestOrderRequest();
+      var od = new api.OrdersCreateTestOrderRequest.fromJson(o.toJson());
+      checkOrdersCreateTestOrderRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCreateTestOrderResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCreateTestOrderResponse();
+      var od = new api.OrdersCreateTestOrderResponse.fromJson(o.toJson());
+      checkOrdersCreateTestOrderResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequest();
+      var od = new api.OrdersCustomBatchRequest.fromJson(o.toJson());
+      checkOrdersCustomBatchRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequestEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntry();
+      var od = new api.OrdersCustomBatchRequestEntry.fromJson(o.toJson());
+      checkOrdersCustomBatchRequestEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequestEntryCancel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntryCancel();
+      var od = new api.OrdersCustomBatchRequestEntryCancel.fromJson(o.toJson());
+      checkOrdersCustomBatchRequestEntryCancel(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequestEntryCancelLineItem", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntryCancelLineItem();
+      var od = new api.OrdersCustomBatchRequestEntryCancelLineItem.fromJson(
+          o.toJson());
+      checkOrdersCustomBatchRequestEntryCancelLineItem(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequestEntryRefund", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntryRefund();
+      var od = new api.OrdersCustomBatchRequestEntryRefund.fromJson(o.toJson());
+      checkOrdersCustomBatchRequestEntryRefund(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequestEntryReturnLineItem", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntryReturnLineItem();
+      var od = new api.OrdersCustomBatchRequestEntryReturnLineItem.fromJson(
+          o.toJson());
+      checkOrdersCustomBatchRequestEntryReturnLineItem(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequestEntryShipLineItems", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntryShipLineItems();
+      var od = new api.OrdersCustomBatchRequestEntryShipLineItems.fromJson(
+          o.toJson());
+      checkOrdersCustomBatchRequestEntryShipLineItems(od);
+    });
+  });
+
+  unittest.group(
+      "obj-schema-OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo();
+      var od = new api
+              .OrdersCustomBatchRequestEntryShipLineItemsShipmentInfo.fromJson(
+          o.toJson());
+      checkOrdersCustomBatchRequestEntryShipLineItemsShipmentInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchRequestEntryUpdateShipment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchRequestEntryUpdateShipment();
+      var od = new api.OrdersCustomBatchRequestEntryUpdateShipment.fromJson(
+          o.toJson());
+      checkOrdersCustomBatchRequestEntryUpdateShipment(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchResponse();
+      var od = new api.OrdersCustomBatchResponse.fromJson(o.toJson());
+      checkOrdersCustomBatchResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersCustomBatchResponseEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersCustomBatchResponseEntry();
+      var od = new api.OrdersCustomBatchResponseEntry.fromJson(o.toJson());
+      checkOrdersCustomBatchResponseEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersGetByMerchantOrderIdResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersGetByMerchantOrderIdResponse();
+      var od = new api.OrdersGetByMerchantOrderIdResponse.fromJson(o.toJson());
+      checkOrdersGetByMerchantOrderIdResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersGetTestOrderTemplateResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersGetTestOrderTemplateResponse();
+      var od = new api.OrdersGetTestOrderTemplateResponse.fromJson(o.toJson());
+      checkOrdersGetTestOrderTemplateResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersListResponse();
+      var od = new api.OrdersListResponse.fromJson(o.toJson());
+      checkOrdersListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersRefundRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersRefundRequest();
+      var od = new api.OrdersRefundRequest.fromJson(o.toJson());
+      checkOrdersRefundRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersRefundResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersRefundResponse();
+      var od = new api.OrdersRefundResponse.fromJson(o.toJson());
+      checkOrdersRefundResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersReturnLineItemRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersReturnLineItemRequest();
+      var od = new api.OrdersReturnLineItemRequest.fromJson(o.toJson());
+      checkOrdersReturnLineItemRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersReturnLineItemResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersReturnLineItemResponse();
+      var od = new api.OrdersReturnLineItemResponse.fromJson(o.toJson());
+      checkOrdersReturnLineItemResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersShipLineItemsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersShipLineItemsRequest();
+      var od = new api.OrdersShipLineItemsRequest.fromJson(o.toJson());
+      checkOrdersShipLineItemsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersShipLineItemsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersShipLineItemsResponse();
+      var od = new api.OrdersShipLineItemsResponse.fromJson(o.toJson());
+      checkOrdersShipLineItemsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersUpdateMerchantOrderIdRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersUpdateMerchantOrderIdRequest();
+      var od = new api.OrdersUpdateMerchantOrderIdRequest.fromJson(o.toJson());
+      checkOrdersUpdateMerchantOrderIdRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersUpdateMerchantOrderIdResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersUpdateMerchantOrderIdResponse();
+      var od = new api.OrdersUpdateMerchantOrderIdResponse.fromJson(o.toJson());
+      checkOrdersUpdateMerchantOrderIdResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersUpdateShipmentRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersUpdateShipmentRequest();
+      var od = new api.OrdersUpdateShipmentRequest.fromJson(o.toJson());
+      checkOrdersUpdateShipmentRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersUpdateShipmentResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersUpdateShipmentResponse();
+      var od = new api.OrdersUpdateShipmentResponse.fromJson(o.toJson());
+      checkOrdersUpdateShipmentResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Price", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPrice();
+      var od = new api.Price.fromJson(o.toJson());
+      checkPrice(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestOrder", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestOrder();
+      var od = new api.TestOrder.fromJson(o.toJson());
+      checkTestOrder(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestOrderCustomer", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestOrderCustomer();
+      var od = new api.TestOrderCustomer.fromJson(o.toJson());
+      checkTestOrderCustomer(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestOrderLineItem", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestOrderLineItem();
+      var od = new api.TestOrderLineItem.fromJson(o.toJson());
+      checkTestOrderLineItem(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestOrderLineItemProduct", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestOrderLineItemProduct();
+      var od = new api.TestOrderLineItemProduct.fromJson(o.toJson());
+      checkTestOrderLineItemProduct(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestOrderPaymentMethod", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestOrderPaymentMethod();
+      var od = new api.TestOrderPaymentMethod.fromJson(o.toJson());
+      checkTestOrderPaymentMethod(od);
+    });
+  });
+
+  unittest.group("resource-OrdersResourceApi", () {
+    unittest.test("method--acknowledge", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersAcknowledgeRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersAcknowledgeRequest.fromJson(json);
+        checkOrdersAcknowledgeRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersAcknowledgeResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .acknowledge(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.OrdersAcknowledgeResponse response) {
+        checkOrdersAcknowledgeResponse(response);
+      })));
+    });
+
+    unittest.test("method--advancetestorder", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersAdvanceTestOrderResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .advancetestorder(arg_merchantId, arg_orderId, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersAdvanceTestOrderResponse response) {
+        checkOrdersAdvanceTestOrderResponse(response);
+      })));
+    });
+
+    unittest.test("method--cancel", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersCancelRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersCancelRequest.fromJson(json);
+        checkOrdersCancelRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersCancelResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .cancel(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.OrdersCancelResponse response) {
+        checkOrdersCancelResponse(response);
+      })));
+    });
+
+    unittest.test("method--cancellineitem", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersCancelLineItemRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersCancelLineItemRequest.fromJson(json);
+        checkOrdersCancelLineItemRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersCancelLineItemResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .cancellineitem(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersCancelLineItemResponse response) {
+        checkOrdersCancelLineItemResponse(response);
+      })));
+    });
+
+    unittest.test("method--createtestorder", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersCreateTestOrderRequest();
+      var arg_merchantId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersCreateTestOrderRequest.fromJson(json);
+        checkOrdersCreateTestOrderRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersCreateTestOrderResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .createtestorder(arg_request, arg_merchantId, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersCreateTestOrderResponse response) {
+        checkOrdersCreateTestOrderResponse(response);
+      })));
+    });
+
+    unittest.test("method--custombatch", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersCustomBatchRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersCustomBatchRequest.fromJson(json);
+        checkOrdersCustomBatchRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("content/v2sandbox/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("orders/batch"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersCustomBatchResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.custombatch(arg_request, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.OrdersCustomBatchResponse response) {
+        checkOrdersCustomBatchResponse(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrder());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_merchantId, arg_orderId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Order response) {
+        checkOrder(response);
+      })));
+    });
+
+    unittest.test("method--getbymerchantorderid", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_merchantId = "foo";
+      var arg_merchantOrderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildOrdersGetByMerchantOrderIdResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getbymerchantorderid(arg_merchantId, arg_merchantOrderId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersGetByMerchantOrderIdResponse response) {
+        checkOrdersGetByMerchantOrderIdResponse(response);
+      })));
+    });
+
+    unittest.test("method--gettestordertemplate", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_merchantId = "foo";
+      var arg_templateName = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildOrdersGetTestOrderTemplateResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .gettestordertemplate(arg_merchantId, arg_templateName,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersGetTestOrderTemplateResponse response) {
+        checkOrdersGetTestOrderTemplateResponse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_merchantId = "foo";
+      var arg_acknowledged = true;
+      var arg_maxResults = 42;
+      var arg_orderBy = "foo";
+      var arg_pageToken = "foo";
+      var arg_placedDateEnd = "foo";
+      var arg_placedDateStart = "foo";
+      var arg_statuses = buildUnnamed1566();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["acknowledged"].first,
+            unittest.equals("$arg_acknowledged"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["placedDateEnd"].first,
+            unittest.equals(arg_placedDateEnd));
+        unittest.expect(queryMap["placedDateStart"].first,
+            unittest.equals(arg_placedDateStart));
+        unittest.expect(queryMap["statuses"], unittest.equals(arg_statuses));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_merchantId,
+              acknowledged: arg_acknowledged,
+              maxResults: arg_maxResults,
+              orderBy: arg_orderBy,
+              pageToken: arg_pageToken,
+              placedDateEnd: arg_placedDateEnd,
+              placedDateStart: arg_placedDateStart,
+              statuses: arg_statuses,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.OrdersListResponse response) {
+        checkOrdersListResponse(response);
+      })));
+    });
+
+    unittest.test("method--refund", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersRefundRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersRefundRequest.fromJson(json);
+        checkOrdersRefundRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersRefundResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .refund(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.OrdersRefundResponse response) {
+        checkOrdersRefundResponse(response);
+      })));
+    });
+
+    unittest.test("method--returnlineitem", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersReturnLineItemRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersReturnLineItemRequest.fromJson(json);
+        checkOrdersReturnLineItemRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersReturnLineItemResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .returnlineitem(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersReturnLineItemResponse response) {
+        checkOrdersReturnLineItemResponse(response);
+      })));
+    });
+
+    unittest.test("method--shiplineitems", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersShipLineItemsRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersShipLineItemsRequest.fromJson(json);
+        checkOrdersShipLineItemsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersShipLineItemsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .shiplineitems(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersShipLineItemsResponse response) {
+        checkOrdersShipLineItemsResponse(response);
+      })));
+    });
+
+    unittest.test("method--updatemerchantorderid", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersUpdateMerchantOrderIdRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersUpdateMerchantOrderIdRequest.fromJson(json);
+        checkOrdersUpdateMerchantOrderIdRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildOrdersUpdateMerchantOrderIdResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .updatemerchantorderid(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.OrdersUpdateMerchantOrderIdResponse response) {
+        checkOrdersUpdateMerchantOrderIdResponse(response);
+      })));
+    });
+
+    unittest.test("method--updateshipment", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.ContentApi(mock).orders;
+      var arg_request = buildOrdersUpdateShipmentRequest();
+      var arg_merchantId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.OrdersUpdateShipmentRequest.fromJson(json);
+        checkOrdersUpdateShipmentRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersUpdateShipmentResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .updateshipment(arg_request, arg_merchantId, arg_orderId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.OrdersUpdateShipmentResponse response) {
+        checkOrdersUpdateShipmentResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/customsearch/v1_test.dart b/generated/googleapis/test/customsearch/v1_test.dart
index 6293956..029d36a 100644
--- a/generated/googleapis/test/customsearch/v1_test.dart
+++ b/generated/googleapis/test/customsearch/v1_test.dart
@@ -73,30 +73,30 @@
   buildCounterContextFacets--;
 }
 
-buildUnnamed318() {
+buildUnnamed302() {
   var o = new core.List<api.ContextFacets>();
   o.add(buildContextFacets());
   o.add(buildContextFacets());
   return o;
 }
 
-checkUnnamed318(core.List<api.ContextFacets> o) {
+checkUnnamed302(core.List<api.ContextFacets> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkContextFacets(o[0]);
   checkContextFacets(o[1]);
 }
 
-buildUnnamed319() {
+buildUnnamed303() {
   var o = new core.List<core.List<api.ContextFacets>>();
-  o.add(buildUnnamed318());
-  o.add(buildUnnamed318());
+  o.add(buildUnnamed302());
+  o.add(buildUnnamed302());
   return o;
 }
 
-checkUnnamed319(core.List<core.List<api.ContextFacets>> o) {
+checkUnnamed303(core.List<core.List<api.ContextFacets>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed318(o[0]);
-  checkUnnamed318(o[1]);
+  checkUnnamed302(o[0]);
+  checkUnnamed302(o[1]);
 }
 
 core.int buildCounterContext = 0;
@@ -104,7 +104,7 @@
   var o = new api.Context();
   buildCounterContext++;
   if (buildCounterContext < 3) {
-    o.facets = buildUnnamed319();
+    o.facets = buildUnnamed303();
     o.title = "foo";
   }
   buildCounterContext--;
@@ -114,7 +114,7 @@
 checkContext(api.Context o) {
   buildCounterContext++;
   if (buildCounterContext < 3) {
-    checkUnnamed319(o.facets);
+    checkUnnamed303(o.facets);
     unittest.expect(o.title, unittest.equals('foo'));
   }
   buildCounterContext--;
@@ -145,14 +145,14 @@
   buildCounterPromotionBodyLines--;
 }
 
-buildUnnamed320() {
+buildUnnamed304() {
   var o = new core.List<api.PromotionBodyLines>();
   o.add(buildPromotionBodyLines());
   o.add(buildPromotionBodyLines());
   return o;
 }
 
-checkUnnamed320(core.List<api.PromotionBodyLines> o) {
+checkUnnamed304(core.List<api.PromotionBodyLines> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPromotionBodyLines(o[0]);
   checkPromotionBodyLines(o[1]);
@@ -186,7 +186,7 @@
   var o = new api.Promotion();
   buildCounterPromotion++;
   if (buildCounterPromotion < 3) {
-    o.bodyLines = buildUnnamed320();
+    o.bodyLines = buildUnnamed304();
     o.displayLink = "foo";
     o.htmlTitle = "foo";
     o.image = buildPromotionImage();
@@ -200,7 +200,7 @@
 checkPromotion(api.Promotion o) {
   buildCounterPromotion++;
   if (buildCounterPromotion < 3) {
-    checkUnnamed320(o.bodyLines);
+    checkUnnamed304(o.bodyLines);
     unittest.expect(o.displayLink, unittest.equals('foo'));
     unittest.expect(o.htmlTitle, unittest.equals('foo'));
     checkPromotionImage(o.image);
@@ -353,20 +353,20 @@
   buildCounterResultLabels--;
 }
 
-buildUnnamed321() {
+buildUnnamed305() {
   var o = new core.List<api.ResultLabels>();
   o.add(buildResultLabels());
   o.add(buildResultLabels());
   return o;
 }
 
-checkUnnamed321(core.List<api.ResultLabels> o) {
+checkUnnamed305(core.List<api.ResultLabels> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResultLabels(o[0]);
   checkResultLabels(o[1]);
 }
 
-buildUnnamed322() {
+buildUnnamed306() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -381,7 +381,7 @@
   return o;
 }
 
-checkUnnamed322(core.Map<core.String, core.Object> o) {
+checkUnnamed306(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -395,32 +395,32 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed323() {
+buildUnnamed307() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed322());
-  o.add(buildUnnamed322());
+  o.add(buildUnnamed306());
+  o.add(buildUnnamed306());
   return o;
 }
 
-checkUnnamed323(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed307(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed322(o[0]);
-  checkUnnamed322(o[1]);
+  checkUnnamed306(o[0]);
+  checkUnnamed306(o[1]);
 }
 
-buildUnnamed324() {
+buildUnnamed308() {
   var o = new core
       .Map<core.String, core.List<core.Map<core.String, core.Object>>>();
-  o["x"] = buildUnnamed323();
-  o["y"] = buildUnnamed323();
+  o["x"] = buildUnnamed307();
+  o["y"] = buildUnnamed307();
   return o;
 }
 
-checkUnnamed324(
+checkUnnamed308(
     core.Map<core.String, core.List<core.Map<core.String, core.Object>>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed323(o["x"]);
-  checkUnnamed323(o["y"]);
+  checkUnnamed307(o["x"]);
+  checkUnnamed307(o["y"]);
 }
 
 core.int buildCounterResult = 0;
@@ -437,10 +437,10 @@
     o.htmlTitle = "foo";
     o.image = buildResultImage();
     o.kind = "foo";
-    o.labels = buildUnnamed321();
+    o.labels = buildUnnamed305();
     o.link = "foo";
     o.mime = "foo";
-    o.pagemap = buildUnnamed324();
+    o.pagemap = buildUnnamed308();
     o.snippet = "foo";
     o.title = "foo";
   }
@@ -460,66 +460,66 @@
     unittest.expect(o.htmlTitle, unittest.equals('foo'));
     checkResultImage(o.image);
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed321(o.labels);
+    checkUnnamed305(o.labels);
     unittest.expect(o.link, unittest.equals('foo'));
     unittest.expect(o.mime, unittest.equals('foo'));
-    checkUnnamed324(o.pagemap);
+    checkUnnamed308(o.pagemap);
     unittest.expect(o.snippet, unittest.equals('foo'));
     unittest.expect(o.title, unittest.equals('foo'));
   }
   buildCounterResult--;
 }
 
-buildUnnamed325() {
+buildUnnamed309() {
   var o = new core.List<api.Result>();
   o.add(buildResult());
   o.add(buildResult());
   return o;
 }
 
-checkUnnamed325(core.List<api.Result> o) {
+checkUnnamed309(core.List<api.Result> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResult(o[0]);
   checkResult(o[1]);
 }
 
-buildUnnamed326() {
+buildUnnamed310() {
   var o = new core.List<api.Promotion>();
   o.add(buildPromotion());
   o.add(buildPromotion());
   return o;
 }
 
-checkUnnamed326(core.List<api.Promotion> o) {
+checkUnnamed310(core.List<api.Promotion> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPromotion(o[0]);
   checkPromotion(o[1]);
 }
 
-buildUnnamed327() {
+buildUnnamed311() {
   var o = new core.List<api.Query>();
   o.add(buildQuery());
   o.add(buildQuery());
   return o;
 }
 
-checkUnnamed327(core.List<api.Query> o) {
+checkUnnamed311(core.List<api.Query> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQuery(o[0]);
   checkQuery(o[1]);
 }
 
-buildUnnamed328() {
+buildUnnamed312() {
   var o = new core.Map<core.String, core.List<api.Query>>();
-  o["x"] = buildUnnamed327();
-  o["y"] = buildUnnamed327();
+  o["x"] = buildUnnamed311();
+  o["y"] = buildUnnamed311();
   return o;
 }
 
-checkUnnamed328(core.Map<core.String, core.List<api.Query>> o) {
+checkUnnamed312(core.Map<core.String, core.List<api.Query>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed327(o["x"]);
-  checkUnnamed327(o["y"]);
+  checkUnnamed311(o["x"]);
+  checkUnnamed311(o["y"]);
 }
 
 core.int buildCounterSearchSearchInformation = 0;
@@ -595,10 +595,10 @@
   buildCounterSearch++;
   if (buildCounterSearch < 3) {
     o.context = buildContext();
-    o.items = buildUnnamed325();
+    o.items = buildUnnamed309();
     o.kind = "foo";
-    o.promotions = buildUnnamed326();
-    o.queries = buildUnnamed328();
+    o.promotions = buildUnnamed310();
+    o.queries = buildUnnamed312();
     o.searchInformation = buildSearchSearchInformation();
     o.spelling = buildSearchSpelling();
     o.url = buildSearchUrl();
@@ -611,10 +611,10 @@
   buildCounterSearch++;
   if (buildCounterSearch < 3) {
     checkContext(o.context);
-    checkUnnamed325(o.items);
+    checkUnnamed309(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed326(o.promotions);
-    checkUnnamed328(o.queries);
+    checkUnnamed310(o.promotions);
+    checkUnnamed312(o.queries);
     checkSearchSearchInformation(o.searchInformation);
     checkSearchSpelling(o.spelling);
     checkSearchUrl(o.url);
@@ -762,6 +762,7 @@
       var arg_siteSearchFilter = "foo";
       var arg_sort = "foo";
       var arg_start = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -845,6 +846,7 @@
         unittest.expect(queryMap["sort"].first, unittest.equals(arg_sort));
         unittest.expect(core.int.parse(queryMap["start"].first),
             unittest.equals(arg_start));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -883,7 +885,8 @@
               siteSearch: arg_siteSearch,
               siteSearchFilter: arg_siteSearchFilter,
               sort: arg_sort,
-              start: arg_start)
+              start: arg_start,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Search response) {
         checkSearch(response);
       })));
diff --git a/generated/googleapis/test/dataproc/v1_test.dart b/generated/googleapis/test/dataproc/v1_test.dart
index 401cd16..040429f 100644
--- a/generated/googleapis/test/dataproc/v1_test.dart
+++ b/generated/googleapis/test/dataproc/v1_test.dart
@@ -86,27 +86,27 @@
   buildCounterCancelJobRequest--;
 }
 
-buildUnnamed549() {
+buildUnnamed533() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed549(core.Map<core.String, core.String> o) {
+checkUnnamed533(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed550() {
+buildUnnamed534() {
   var o = new core.List<api.ClusterStatus>();
   o.add(buildClusterStatus());
   o.add(buildClusterStatus());
   return o;
 }
 
-checkUnnamed550(core.List<api.ClusterStatus> o) {
+checkUnnamed534(core.List<api.ClusterStatus> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkClusterStatus(o[0]);
   checkClusterStatus(o[1]);
@@ -120,11 +120,11 @@
     o.clusterName = "foo";
     o.clusterUuid = "foo";
     o.config = buildClusterConfig();
-    o.labels = buildUnnamed549();
+    o.labels = buildUnnamed533();
     o.metrics = buildClusterMetrics();
     o.projectId = "foo";
     o.status = buildClusterStatus();
-    o.statusHistory = buildUnnamed550();
+    o.statusHistory = buildUnnamed534();
   }
   buildCounterCluster--;
   return o;
@@ -136,23 +136,23 @@
     unittest.expect(o.clusterName, unittest.equals('foo'));
     unittest.expect(o.clusterUuid, unittest.equals('foo'));
     checkClusterConfig(o.config);
-    checkUnnamed549(o.labels);
+    checkUnnamed533(o.labels);
     checkClusterMetrics(o.metrics);
     unittest.expect(o.projectId, unittest.equals('foo'));
     checkClusterStatus(o.status);
-    checkUnnamed550(o.statusHistory);
+    checkUnnamed534(o.statusHistory);
   }
   buildCounterCluster--;
 }
 
-buildUnnamed551() {
+buildUnnamed535() {
   var o = new core.List<api.NodeInitializationAction>();
   o.add(buildNodeInitializationAction());
   o.add(buildNodeInitializationAction());
   return o;
 }
 
-checkUnnamed551(core.List<api.NodeInitializationAction> o) {
+checkUnnamed535(core.List<api.NodeInitializationAction> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkNodeInitializationAction(o[0]);
   checkNodeInitializationAction(o[1]);
@@ -165,7 +165,7 @@
   if (buildCounterClusterConfig < 3) {
     o.configBucket = "foo";
     o.gceClusterConfig = buildGceClusterConfig();
-    o.initializationActions = buildUnnamed551();
+    o.initializationActions = buildUnnamed535();
     o.masterConfig = buildInstanceGroupConfig();
     o.secondaryWorkerConfig = buildInstanceGroupConfig();
     o.softwareConfig = buildSoftwareConfig();
@@ -180,7 +180,7 @@
   if (buildCounterClusterConfig < 3) {
     unittest.expect(o.configBucket, unittest.equals('foo'));
     checkGceClusterConfig(o.gceClusterConfig);
-    checkUnnamed551(o.initializationActions);
+    checkUnnamed535(o.initializationActions);
     checkInstanceGroupConfig(o.masterConfig);
     checkInstanceGroupConfig(o.secondaryWorkerConfig);
     checkSoftwareConfig(o.softwareConfig);
@@ -189,27 +189,27 @@
   buildCounterClusterConfig--;
 }
 
-buildUnnamed552() {
+buildUnnamed536() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed552(core.Map<core.String, core.String> o) {
+checkUnnamed536(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed553() {
+buildUnnamed537() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed553(core.Map<core.String, core.String> o) {
+checkUnnamed537(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -220,8 +220,8 @@
   var o = new api.ClusterMetrics();
   buildCounterClusterMetrics++;
   if (buildCounterClusterMetrics < 3) {
-    o.hdfsMetrics = buildUnnamed552();
-    o.yarnMetrics = buildUnnamed553();
+    o.hdfsMetrics = buildUnnamed536();
+    o.yarnMetrics = buildUnnamed537();
   }
   buildCounterClusterMetrics--;
   return o;
@@ -230,46 +230,46 @@
 checkClusterMetrics(api.ClusterMetrics o) {
   buildCounterClusterMetrics++;
   if (buildCounterClusterMetrics < 3) {
-    checkUnnamed552(o.hdfsMetrics);
-    checkUnnamed553(o.yarnMetrics);
+    checkUnnamed536(o.hdfsMetrics);
+    checkUnnamed537(o.yarnMetrics);
   }
   buildCounterClusterMetrics--;
 }
 
-buildUnnamed554() {
+buildUnnamed538() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed554(core.Map<core.String, core.String> o) {
+checkUnnamed538(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed555() {
+buildUnnamed539() {
   var o = new core.List<api.ClusterOperationStatus>();
   o.add(buildClusterOperationStatus());
   o.add(buildClusterOperationStatus());
   return o;
 }
 
-checkUnnamed555(core.List<api.ClusterOperationStatus> o) {
+checkUnnamed539(core.List<api.ClusterOperationStatus> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkClusterOperationStatus(o[0]);
   checkClusterOperationStatus(o[1]);
 }
 
-buildUnnamed556() {
+buildUnnamed540() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed556(core.List<core.String> o) {
+checkUnnamed540(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -283,11 +283,11 @@
     o.clusterName = "foo";
     o.clusterUuid = "foo";
     o.description = "foo";
-    o.labels = buildUnnamed554();
+    o.labels = buildUnnamed538();
     o.operationType = "foo";
     o.status = buildClusterOperationStatus();
-    o.statusHistory = buildUnnamed555();
-    o.warnings = buildUnnamed556();
+    o.statusHistory = buildUnnamed539();
+    o.warnings = buildUnnamed540();
   }
   buildCounterClusterOperationMetadata--;
   return o;
@@ -299,11 +299,11 @@
     unittest.expect(o.clusterName, unittest.equals('foo'));
     unittest.expect(o.clusterUuid, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed554(o.labels);
+    checkUnnamed538(o.labels);
     unittest.expect(o.operationType, unittest.equals('foo'));
     checkClusterOperationStatus(o.status);
-    checkUnnamed555(o.statusHistory);
-    checkUnnamed556(o.warnings);
+    checkUnnamed539(o.statusHistory);
+    checkUnnamed540(o.warnings);
   }
   buildCounterClusterOperationMetadata--;
 }
@@ -428,40 +428,40 @@
   buildCounterEmpty--;
 }
 
-buildUnnamed557() {
+buildUnnamed541() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed557(core.Map<core.String, core.String> o) {
+checkUnnamed541(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed558() {
+buildUnnamed542() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed558(core.List<core.String> o) {
+checkUnnamed542(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed559() {
+buildUnnamed543() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed559(core.List<core.String> o) {
+checkUnnamed543(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -473,12 +473,12 @@
   buildCounterGceClusterConfig++;
   if (buildCounterGceClusterConfig < 3) {
     o.internalIpOnly = true;
-    o.metadata = buildUnnamed557();
+    o.metadata = buildUnnamed541();
     o.networkUri = "foo";
     o.serviceAccount = "foo";
-    o.serviceAccountScopes = buildUnnamed558();
+    o.serviceAccountScopes = buildUnnamed542();
     o.subnetworkUri = "foo";
-    o.tags = buildUnnamed559();
+    o.tags = buildUnnamed543();
     o.zoneUri = "foo";
   }
   buildCounterGceClusterConfig--;
@@ -489,77 +489,77 @@
   buildCounterGceClusterConfig++;
   if (buildCounterGceClusterConfig < 3) {
     unittest.expect(o.internalIpOnly, unittest.isTrue);
-    checkUnnamed557(o.metadata);
+    checkUnnamed541(o.metadata);
     unittest.expect(o.networkUri, unittest.equals('foo'));
     unittest.expect(o.serviceAccount, unittest.equals('foo'));
-    checkUnnamed558(o.serviceAccountScopes);
+    checkUnnamed542(o.serviceAccountScopes);
     unittest.expect(o.subnetworkUri, unittest.equals('foo'));
-    checkUnnamed559(o.tags);
+    checkUnnamed543(o.tags);
     unittest.expect(o.zoneUri, unittest.equals('foo'));
   }
   buildCounterGceClusterConfig--;
 }
 
-buildUnnamed560() {
+buildUnnamed544() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed560(core.List<core.String> o) {
+checkUnnamed544(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed561() {
+buildUnnamed545() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed561(core.List<core.String> o) {
+checkUnnamed545(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed562() {
+buildUnnamed546() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed562(core.List<core.String> o) {
+checkUnnamed546(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed563() {
+buildUnnamed547() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed563(core.List<core.String> o) {
+checkUnnamed547(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed564() {
+buildUnnamed548() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed564(core.Map<core.String, core.String> o) {
+checkUnnamed548(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -570,14 +570,14 @@
   var o = new api.HadoopJob();
   buildCounterHadoopJob++;
   if (buildCounterHadoopJob < 3) {
-    o.archiveUris = buildUnnamed560();
-    o.args = buildUnnamed561();
-    o.fileUris = buildUnnamed562();
-    o.jarFileUris = buildUnnamed563();
+    o.archiveUris = buildUnnamed544();
+    o.args = buildUnnamed545();
+    o.fileUris = buildUnnamed546();
+    o.jarFileUris = buildUnnamed547();
     o.loggingConfig = buildLoggingConfig();
     o.mainClass = "foo";
     o.mainJarFileUri = "foo";
-    o.properties = buildUnnamed564();
+    o.properties = buildUnnamed548();
   }
   buildCounterHadoopJob--;
   return o;
@@ -586,52 +586,52 @@
 checkHadoopJob(api.HadoopJob o) {
   buildCounterHadoopJob++;
   if (buildCounterHadoopJob < 3) {
-    checkUnnamed560(o.archiveUris);
-    checkUnnamed561(o.args);
-    checkUnnamed562(o.fileUris);
-    checkUnnamed563(o.jarFileUris);
+    checkUnnamed544(o.archiveUris);
+    checkUnnamed545(o.args);
+    checkUnnamed546(o.fileUris);
+    checkUnnamed547(o.jarFileUris);
     checkLoggingConfig(o.loggingConfig);
     unittest.expect(o.mainClass, unittest.equals('foo'));
     unittest.expect(o.mainJarFileUri, unittest.equals('foo'));
-    checkUnnamed564(o.properties);
+    checkUnnamed548(o.properties);
   }
   buildCounterHadoopJob--;
 }
 
-buildUnnamed565() {
+buildUnnamed549() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed565(core.List<core.String> o) {
+checkUnnamed549(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed566() {
+buildUnnamed550() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed566(core.Map<core.String, core.String> o) {
+checkUnnamed550(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed567() {
+buildUnnamed551() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed567(core.Map<core.String, core.String> o) {
+checkUnnamed551(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -643,11 +643,11 @@
   buildCounterHiveJob++;
   if (buildCounterHiveJob < 3) {
     o.continueOnFailure = true;
-    o.jarFileUris = buildUnnamed565();
-    o.properties = buildUnnamed566();
+    o.jarFileUris = buildUnnamed549();
+    o.properties = buildUnnamed550();
     o.queryFileUri = "foo";
     o.queryList = buildQueryList();
-    o.scriptVariables = buildUnnamed567();
+    o.scriptVariables = buildUnnamed551();
   }
   buildCounterHiveJob--;
   return o;
@@ -657,36 +657,36 @@
   buildCounterHiveJob++;
   if (buildCounterHiveJob < 3) {
     unittest.expect(o.continueOnFailure, unittest.isTrue);
-    checkUnnamed565(o.jarFileUris);
-    checkUnnamed566(o.properties);
+    checkUnnamed549(o.jarFileUris);
+    checkUnnamed550(o.properties);
     unittest.expect(o.queryFileUri, unittest.equals('foo'));
     checkQueryList(o.queryList);
-    checkUnnamed567(o.scriptVariables);
+    checkUnnamed551(o.scriptVariables);
   }
   buildCounterHiveJob--;
 }
 
-buildUnnamed568() {
+buildUnnamed552() {
   var o = new core.List<api.AcceleratorConfig>();
   o.add(buildAcceleratorConfig());
   o.add(buildAcceleratorConfig());
   return o;
 }
 
-checkUnnamed568(core.List<api.AcceleratorConfig> o) {
+checkUnnamed552(core.List<api.AcceleratorConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAcceleratorConfig(o[0]);
   checkAcceleratorConfig(o[1]);
 }
 
-buildUnnamed569() {
+buildUnnamed553() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed569(core.List<core.String> o) {
+checkUnnamed553(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -697,10 +697,10 @@
   var o = new api.InstanceGroupConfig();
   buildCounterInstanceGroupConfig++;
   if (buildCounterInstanceGroupConfig < 3) {
-    o.accelerators = buildUnnamed568();
+    o.accelerators = buildUnnamed552();
     o.diskConfig = buildDiskConfig();
     o.imageUri = "foo";
-    o.instanceNames = buildUnnamed569();
+    o.instanceNames = buildUnnamed553();
     o.isPreemptible = true;
     o.machineTypeUri = "foo";
     o.managedGroupConfig = buildManagedGroupConfig();
@@ -713,10 +713,10 @@
 checkInstanceGroupConfig(api.InstanceGroupConfig o) {
   buildCounterInstanceGroupConfig++;
   if (buildCounterInstanceGroupConfig < 3) {
-    checkUnnamed568(o.accelerators);
+    checkUnnamed552(o.accelerators);
     checkDiskConfig(o.diskConfig);
     unittest.expect(o.imageUri, unittest.equals('foo'));
-    checkUnnamed569(o.instanceNames);
+    checkUnnamed553(o.instanceNames);
     unittest.expect(o.isPreemptible, unittest.isTrue);
     unittest.expect(o.machineTypeUri, unittest.equals('foo'));
     checkManagedGroupConfig(o.managedGroupConfig);
@@ -725,40 +725,40 @@
   buildCounterInstanceGroupConfig--;
 }
 
-buildUnnamed570() {
+buildUnnamed554() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed570(core.Map<core.String, core.String> o) {
+checkUnnamed554(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed571() {
+buildUnnamed555() {
   var o = new core.List<api.JobStatus>();
   o.add(buildJobStatus());
   o.add(buildJobStatus());
   return o;
 }
 
-checkUnnamed571(core.List<api.JobStatus> o) {
+checkUnnamed555(core.List<api.JobStatus> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJobStatus(o[0]);
   checkJobStatus(o[1]);
 }
 
-buildUnnamed572() {
+buildUnnamed556() {
   var o = new core.List<api.YarnApplication>();
   o.add(buildYarnApplication());
   o.add(buildYarnApplication());
   return o;
 }
 
-checkUnnamed572(core.List<api.YarnApplication> o) {
+checkUnnamed556(core.List<api.YarnApplication> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkYarnApplication(o[0]);
   checkYarnApplication(o[1]);
@@ -773,7 +773,7 @@
     o.driverOutputResourceUri = "foo";
     o.hadoopJob = buildHadoopJob();
     o.hiveJob = buildHiveJob();
-    o.labels = buildUnnamed570();
+    o.labels = buildUnnamed554();
     o.pigJob = buildPigJob();
     o.placement = buildJobPlacement();
     o.pysparkJob = buildPySparkJob();
@@ -782,8 +782,8 @@
     o.sparkJob = buildSparkJob();
     o.sparkSqlJob = buildSparkSqlJob();
     o.status = buildJobStatus();
-    o.statusHistory = buildUnnamed571();
-    o.yarnApplications = buildUnnamed572();
+    o.statusHistory = buildUnnamed555();
+    o.yarnApplications = buildUnnamed556();
   }
   buildCounterJob--;
   return o;
@@ -796,7 +796,7 @@
     unittest.expect(o.driverOutputResourceUri, unittest.equals('foo'));
     checkHadoopJob(o.hadoopJob);
     checkHiveJob(o.hiveJob);
-    checkUnnamed570(o.labels);
+    checkUnnamed554(o.labels);
     checkPigJob(o.pigJob);
     checkJobPlacement(o.placement);
     checkPySparkJob(o.pysparkJob);
@@ -805,8 +805,8 @@
     checkSparkJob(o.sparkJob);
     checkSparkSqlJob(o.sparkSqlJob);
     checkJobStatus(o.status);
-    checkUnnamed571(o.statusHistory);
-    checkUnnamed572(o.yarnApplications);
+    checkUnnamed555(o.statusHistory);
+    checkUnnamed556(o.yarnApplications);
   }
   buildCounterJob--;
 }
@@ -897,14 +897,14 @@
   buildCounterJobStatus--;
 }
 
-buildUnnamed573() {
+buildUnnamed557() {
   var o = new core.List<api.Cluster>();
   o.add(buildCluster());
   o.add(buildCluster());
   return o;
 }
 
-checkUnnamed573(core.List<api.Cluster> o) {
+checkUnnamed557(core.List<api.Cluster> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCluster(o[0]);
   checkCluster(o[1]);
@@ -915,7 +915,7 @@
   var o = new api.ListClustersResponse();
   buildCounterListClustersResponse++;
   if (buildCounterListClustersResponse < 3) {
-    o.clusters = buildUnnamed573();
+    o.clusters = buildUnnamed557();
     o.nextPageToken = "foo";
   }
   buildCounterListClustersResponse--;
@@ -925,20 +925,20 @@
 checkListClustersResponse(api.ListClustersResponse o) {
   buildCounterListClustersResponse++;
   if (buildCounterListClustersResponse < 3) {
-    checkUnnamed573(o.clusters);
+    checkUnnamed557(o.clusters);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListClustersResponse--;
 }
 
-buildUnnamed574() {
+buildUnnamed558() {
   var o = new core.List<api.Job>();
   o.add(buildJob());
   o.add(buildJob());
   return o;
 }
 
-checkUnnamed574(core.List<api.Job> o) {
+checkUnnamed558(core.List<api.Job> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJob(o[0]);
   checkJob(o[1]);
@@ -949,7 +949,7 @@
   var o = new api.ListJobsResponse();
   buildCounterListJobsResponse++;
   if (buildCounterListJobsResponse < 3) {
-    o.jobs = buildUnnamed574();
+    o.jobs = buildUnnamed558();
     o.nextPageToken = "foo";
   }
   buildCounterListJobsResponse--;
@@ -959,20 +959,20 @@
 checkListJobsResponse(api.ListJobsResponse o) {
   buildCounterListJobsResponse++;
   if (buildCounterListJobsResponse < 3) {
-    checkUnnamed574(o.jobs);
+    checkUnnamed558(o.jobs);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListJobsResponse--;
 }
 
-buildUnnamed575() {
+buildUnnamed559() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed575(core.List<api.Operation> o) {
+checkUnnamed559(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -984,7 +984,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed575();
+    o.operations = buildUnnamed559();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -994,19 +994,19 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed575(o.operations);
+    checkUnnamed559(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
 
-buildUnnamed576() {
+buildUnnamed560() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed576(core.Map<core.String, core.String> o) {
+checkUnnamed560(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1017,7 +1017,7 @@
   var o = new api.LoggingConfig();
   buildCounterLoggingConfig++;
   if (buildCounterLoggingConfig < 3) {
-    o.driverLogLevels = buildUnnamed576();
+    o.driverLogLevels = buildUnnamed560();
   }
   buildCounterLoggingConfig--;
   return o;
@@ -1026,7 +1026,7 @@
 checkLoggingConfig(api.LoggingConfig o) {
   buildCounterLoggingConfig++;
   if (buildCounterLoggingConfig < 3) {
-    checkUnnamed576(o.driverLogLevels);
+    checkUnnamed560(o.driverLogLevels);
   }
   buildCounterLoggingConfig--;
 }
@@ -1073,7 +1073,7 @@
   buildCounterNodeInitializationAction--;
 }
 
-buildUnnamed577() {
+buildUnnamed561() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1088,7 +1088,7 @@
   return o;
 }
 
-checkUnnamed577(core.Map<core.String, core.Object> o) {
+checkUnnamed561(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -1102,7 +1102,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed578() {
+buildUnnamed562() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1117,7 +1117,7 @@
   return o;
 }
 
-checkUnnamed578(core.Map<core.String, core.Object> o) {
+checkUnnamed562(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -1138,9 +1138,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed577();
+    o.metadata = buildUnnamed561();
     o.name = "foo";
-    o.response = buildUnnamed578();
+    o.response = buildUnnamed562();
   }
   buildCounterOperation--;
   return o;
@@ -1151,13 +1151,358 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed577(o.metadata);
+    checkUnnamed561(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed578(o.response);
+    checkUnnamed562(o.response);
   }
   buildCounterOperation--;
 }
 
+buildUnnamed563() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed563(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed564() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed564(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+buildUnnamed565() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed565(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterPigJob = 0;
+buildPigJob() {
+  var o = new api.PigJob();
+  buildCounterPigJob++;
+  if (buildCounterPigJob < 3) {
+    o.continueOnFailure = true;
+    o.jarFileUris = buildUnnamed563();
+    o.loggingConfig = buildLoggingConfig();
+    o.properties = buildUnnamed564();
+    o.queryFileUri = "foo";
+    o.queryList = buildQueryList();
+    o.scriptVariables = buildUnnamed565();
+  }
+  buildCounterPigJob--;
+  return o;
+}
+
+checkPigJob(api.PigJob o) {
+  buildCounterPigJob++;
+  if (buildCounterPigJob < 3) {
+    unittest.expect(o.continueOnFailure, unittest.isTrue);
+    checkUnnamed563(o.jarFileUris);
+    checkLoggingConfig(o.loggingConfig);
+    checkUnnamed564(o.properties);
+    unittest.expect(o.queryFileUri, unittest.equals('foo'));
+    checkQueryList(o.queryList);
+    checkUnnamed565(o.scriptVariables);
+  }
+  buildCounterPigJob--;
+}
+
+buildUnnamed566() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed566(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed567() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed567(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed568() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed568(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed569() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed569(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed570() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed570(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+buildUnnamed571() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed571(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPySparkJob = 0;
+buildPySparkJob() {
+  var o = new api.PySparkJob();
+  buildCounterPySparkJob++;
+  if (buildCounterPySparkJob < 3) {
+    o.archiveUris = buildUnnamed566();
+    o.args = buildUnnamed567();
+    o.fileUris = buildUnnamed568();
+    o.jarFileUris = buildUnnamed569();
+    o.loggingConfig = buildLoggingConfig();
+    o.mainPythonFileUri = "foo";
+    o.properties = buildUnnamed570();
+    o.pythonFileUris = buildUnnamed571();
+  }
+  buildCounterPySparkJob--;
+  return o;
+}
+
+checkPySparkJob(api.PySparkJob o) {
+  buildCounterPySparkJob++;
+  if (buildCounterPySparkJob < 3) {
+    checkUnnamed566(o.archiveUris);
+    checkUnnamed567(o.args);
+    checkUnnamed568(o.fileUris);
+    checkUnnamed569(o.jarFileUris);
+    checkLoggingConfig(o.loggingConfig);
+    unittest.expect(o.mainPythonFileUri, unittest.equals('foo'));
+    checkUnnamed570(o.properties);
+    checkUnnamed571(o.pythonFileUris);
+  }
+  buildCounterPySparkJob--;
+}
+
+buildUnnamed572() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed572(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterQueryList = 0;
+buildQueryList() {
+  var o = new api.QueryList();
+  buildCounterQueryList++;
+  if (buildCounterQueryList < 3) {
+    o.queries = buildUnnamed572();
+  }
+  buildCounterQueryList--;
+  return o;
+}
+
+checkQueryList(api.QueryList o) {
+  buildCounterQueryList++;
+  if (buildCounterQueryList < 3) {
+    checkUnnamed572(o.queries);
+  }
+  buildCounterQueryList--;
+}
+
+buildUnnamed573() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed573(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterSoftwareConfig = 0;
+buildSoftwareConfig() {
+  var o = new api.SoftwareConfig();
+  buildCounterSoftwareConfig++;
+  if (buildCounterSoftwareConfig < 3) {
+    o.imageVersion = "foo";
+    o.properties = buildUnnamed573();
+  }
+  buildCounterSoftwareConfig--;
+  return o;
+}
+
+checkSoftwareConfig(api.SoftwareConfig o) {
+  buildCounterSoftwareConfig++;
+  if (buildCounterSoftwareConfig < 3) {
+    unittest.expect(o.imageVersion, unittest.equals('foo'));
+    checkUnnamed573(o.properties);
+  }
+  buildCounterSoftwareConfig--;
+}
+
+buildUnnamed574() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed574(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed575() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed575(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed576() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed576(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed577() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed577(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed578() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed578(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterSparkJob = 0;
+buildSparkJob() {
+  var o = new api.SparkJob();
+  buildCounterSparkJob++;
+  if (buildCounterSparkJob < 3) {
+    o.archiveUris = buildUnnamed574();
+    o.args = buildUnnamed575();
+    o.fileUris = buildUnnamed576();
+    o.jarFileUris = buildUnnamed577();
+    o.loggingConfig = buildLoggingConfig();
+    o.mainClass = "foo";
+    o.mainJarFileUri = "foo";
+    o.properties = buildUnnamed578();
+  }
+  buildCounterSparkJob--;
+  return o;
+}
+
+checkSparkJob(api.SparkJob o) {
+  buildCounterSparkJob++;
+  if (buildCounterSparkJob < 3) {
+    checkUnnamed574(o.archiveUris);
+    checkUnnamed575(o.args);
+    checkUnnamed576(o.fileUris);
+    checkUnnamed577(o.jarFileUris);
+    checkLoggingConfig(o.loggingConfig);
+    unittest.expect(o.mainClass, unittest.equals('foo'));
+    unittest.expect(o.mainJarFileUri, unittest.equals('foo'));
+    checkUnnamed578(o.properties);
+  }
+  buildCounterSparkJob--;
+}
+
 buildUnnamed579() {
   var o = new core.List<core.String>();
   o.add("foo");
@@ -1197,12 +1542,11 @@
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-core.int buildCounterPigJob = 0;
-buildPigJob() {
-  var o = new api.PigJob();
-  buildCounterPigJob++;
-  if (buildCounterPigJob < 3) {
-    o.continueOnFailure = true;
+core.int buildCounterSparkSqlJob = 0;
+buildSparkSqlJob() {
+  var o = new api.SparkSqlJob();
+  buildCounterSparkSqlJob++;
+  if (buildCounterSparkSqlJob < 3) {
     o.jarFileUris = buildUnnamed579();
     o.loggingConfig = buildLoggingConfig();
     o.properties = buildUnnamed580();
@@ -1210,350 +1554,6 @@
     o.queryList = buildQueryList();
     o.scriptVariables = buildUnnamed581();
   }
-  buildCounterPigJob--;
-  return o;
-}
-
-checkPigJob(api.PigJob o) {
-  buildCounterPigJob++;
-  if (buildCounterPigJob < 3) {
-    unittest.expect(o.continueOnFailure, unittest.isTrue);
-    checkUnnamed579(o.jarFileUris);
-    checkLoggingConfig(o.loggingConfig);
-    checkUnnamed580(o.properties);
-    unittest.expect(o.queryFileUri, unittest.equals('foo'));
-    checkQueryList(o.queryList);
-    checkUnnamed581(o.scriptVariables);
-  }
-  buildCounterPigJob--;
-}
-
-buildUnnamed582() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed582(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed583() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed583(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed584() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed584(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed585() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed585(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed586() {
-  var o = new core.Map<core.String, core.String>();
-  o["x"] = "foo";
-  o["y"] = "foo";
-  return o;
-}
-
-checkUnnamed586(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o["x"], unittest.equals('foo'));
-  unittest.expect(o["y"], unittest.equals('foo'));
-}
-
-buildUnnamed587() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed587(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-core.int buildCounterPySparkJob = 0;
-buildPySparkJob() {
-  var o = new api.PySparkJob();
-  buildCounterPySparkJob++;
-  if (buildCounterPySparkJob < 3) {
-    o.archiveUris = buildUnnamed582();
-    o.args = buildUnnamed583();
-    o.fileUris = buildUnnamed584();
-    o.jarFileUris = buildUnnamed585();
-    o.loggingConfig = buildLoggingConfig();
-    o.mainPythonFileUri = "foo";
-    o.properties = buildUnnamed586();
-    o.pythonFileUris = buildUnnamed587();
-  }
-  buildCounterPySparkJob--;
-  return o;
-}
-
-checkPySparkJob(api.PySparkJob o) {
-  buildCounterPySparkJob++;
-  if (buildCounterPySparkJob < 3) {
-    checkUnnamed582(o.archiveUris);
-    checkUnnamed583(o.args);
-    checkUnnamed584(o.fileUris);
-    checkUnnamed585(o.jarFileUris);
-    checkLoggingConfig(o.loggingConfig);
-    unittest.expect(o.mainPythonFileUri, unittest.equals('foo'));
-    checkUnnamed586(o.properties);
-    checkUnnamed587(o.pythonFileUris);
-  }
-  buildCounterPySparkJob--;
-}
-
-buildUnnamed588() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed588(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-core.int buildCounterQueryList = 0;
-buildQueryList() {
-  var o = new api.QueryList();
-  buildCounterQueryList++;
-  if (buildCounterQueryList < 3) {
-    o.queries = buildUnnamed588();
-  }
-  buildCounterQueryList--;
-  return o;
-}
-
-checkQueryList(api.QueryList o) {
-  buildCounterQueryList++;
-  if (buildCounterQueryList < 3) {
-    checkUnnamed588(o.queries);
-  }
-  buildCounterQueryList--;
-}
-
-buildUnnamed589() {
-  var o = new core.Map<core.String, core.String>();
-  o["x"] = "foo";
-  o["y"] = "foo";
-  return o;
-}
-
-checkUnnamed589(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o["x"], unittest.equals('foo'));
-  unittest.expect(o["y"], unittest.equals('foo'));
-}
-
-core.int buildCounterSoftwareConfig = 0;
-buildSoftwareConfig() {
-  var o = new api.SoftwareConfig();
-  buildCounterSoftwareConfig++;
-  if (buildCounterSoftwareConfig < 3) {
-    o.imageVersion = "foo";
-    o.properties = buildUnnamed589();
-  }
-  buildCounterSoftwareConfig--;
-  return o;
-}
-
-checkSoftwareConfig(api.SoftwareConfig o) {
-  buildCounterSoftwareConfig++;
-  if (buildCounterSoftwareConfig < 3) {
-    unittest.expect(o.imageVersion, unittest.equals('foo'));
-    checkUnnamed589(o.properties);
-  }
-  buildCounterSoftwareConfig--;
-}
-
-buildUnnamed590() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed590(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed591() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed591(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed592() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed592(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed593() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed593(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed594() {
-  var o = new core.Map<core.String, core.String>();
-  o["x"] = "foo";
-  o["y"] = "foo";
-  return o;
-}
-
-checkUnnamed594(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o["x"], unittest.equals('foo'));
-  unittest.expect(o["y"], unittest.equals('foo'));
-}
-
-core.int buildCounterSparkJob = 0;
-buildSparkJob() {
-  var o = new api.SparkJob();
-  buildCounterSparkJob++;
-  if (buildCounterSparkJob < 3) {
-    o.archiveUris = buildUnnamed590();
-    o.args = buildUnnamed591();
-    o.fileUris = buildUnnamed592();
-    o.jarFileUris = buildUnnamed593();
-    o.loggingConfig = buildLoggingConfig();
-    o.mainClass = "foo";
-    o.mainJarFileUri = "foo";
-    o.properties = buildUnnamed594();
-  }
-  buildCounterSparkJob--;
-  return o;
-}
-
-checkSparkJob(api.SparkJob o) {
-  buildCounterSparkJob++;
-  if (buildCounterSparkJob < 3) {
-    checkUnnamed590(o.archiveUris);
-    checkUnnamed591(o.args);
-    checkUnnamed592(o.fileUris);
-    checkUnnamed593(o.jarFileUris);
-    checkLoggingConfig(o.loggingConfig);
-    unittest.expect(o.mainClass, unittest.equals('foo'));
-    unittest.expect(o.mainJarFileUri, unittest.equals('foo'));
-    checkUnnamed594(o.properties);
-  }
-  buildCounterSparkJob--;
-}
-
-buildUnnamed595() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed595(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed596() {
-  var o = new core.Map<core.String, core.String>();
-  o["x"] = "foo";
-  o["y"] = "foo";
-  return o;
-}
-
-checkUnnamed596(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o["x"], unittest.equals('foo'));
-  unittest.expect(o["y"], unittest.equals('foo'));
-}
-
-buildUnnamed597() {
-  var o = new core.Map<core.String, core.String>();
-  o["x"] = "foo";
-  o["y"] = "foo";
-  return o;
-}
-
-checkUnnamed597(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o["x"], unittest.equals('foo'));
-  unittest.expect(o["y"], unittest.equals('foo'));
-}
-
-core.int buildCounterSparkSqlJob = 0;
-buildSparkSqlJob() {
-  var o = new api.SparkSqlJob();
-  buildCounterSparkSqlJob++;
-  if (buildCounterSparkSqlJob < 3) {
-    o.jarFileUris = buildUnnamed595();
-    o.loggingConfig = buildLoggingConfig();
-    o.properties = buildUnnamed596();
-    o.queryFileUri = "foo";
-    o.queryList = buildQueryList();
-    o.scriptVariables = buildUnnamed597();
-  }
   buildCounterSparkSqlJob--;
   return o;
 }
@@ -1561,17 +1561,17 @@
 checkSparkSqlJob(api.SparkSqlJob o) {
   buildCounterSparkSqlJob++;
   if (buildCounterSparkSqlJob < 3) {
-    checkUnnamed595(o.jarFileUris);
+    checkUnnamed579(o.jarFileUris);
     checkLoggingConfig(o.loggingConfig);
-    checkUnnamed596(o.properties);
+    checkUnnamed580(o.properties);
     unittest.expect(o.queryFileUri, unittest.equals('foo'));
     checkQueryList(o.queryList);
-    checkUnnamed597(o.scriptVariables);
+    checkUnnamed581(o.scriptVariables);
   }
   buildCounterSparkSqlJob--;
 }
 
-buildUnnamed598() {
+buildUnnamed582() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1586,7 +1586,7 @@
   return o;
 }
 
-checkUnnamed598(core.Map<core.String, core.Object> o) {
+checkUnnamed582(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -1600,17 +1600,17 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed599() {
+buildUnnamed583() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed598());
-  o.add(buildUnnamed598());
+  o.add(buildUnnamed582());
+  o.add(buildUnnamed582());
   return o;
 }
 
-checkUnnamed599(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed583(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed598(o[0]);
-  checkUnnamed598(o[1]);
+  checkUnnamed582(o[0]);
+  checkUnnamed582(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -1619,7 +1619,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed599();
+    o.details = buildUnnamed583();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -1630,7 +1630,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed599(o.details);
+    checkUnnamed583(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -1985,6 +1985,7 @@
       var arg_request = buildCluster();
       var arg_projectId = "foo";
       var arg_region = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Cluster.fromJson(json);
         checkCluster(obj);
@@ -2036,6 +2037,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2044,7 +2046,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_projectId, arg_region)
+          .create(arg_request, arg_projectId, arg_region, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2057,6 +2059,7 @@
       var arg_projectId = "foo";
       var arg_region = "foo";
       var arg_clusterName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2108,6 +2111,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2116,7 +2120,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_projectId, arg_region, arg_clusterName)
+          .delete(arg_projectId, arg_region, arg_clusterName,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2130,6 +2135,7 @@
       var arg_projectId = "foo";
       var arg_region = "foo";
       var arg_clusterName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DiagnoseClusterRequest.fromJson(json);
         checkDiagnoseClusterRequest(obj);
@@ -2190,6 +2196,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2198,7 +2205,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .diagnose(arg_request, arg_projectId, arg_region, arg_clusterName)
+          .diagnose(arg_request, arg_projectId, arg_region, arg_clusterName,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2211,6 +2219,7 @@
       var arg_projectId = "foo";
       var arg_region = "foo";
       var arg_clusterName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2262,6 +2271,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2270,7 +2280,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_projectId, arg_region, arg_clusterName)
+          .get(arg_projectId, arg_region, arg_clusterName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Cluster response) {
         checkCluster(response);
       })));
@@ -2282,9 +2292,10 @@
           new api.DataprocApi(mock).projects.regions.clusters;
       var arg_projectId = "foo";
       var arg_region = "foo";
+      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
-      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2333,11 +2344,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2347,9 +2359,10 @@
       }), true);
       res
           .list(arg_projectId, arg_region,
+              filter: arg_filter,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              filter: arg_filter)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListClustersResponse response) {
         checkListClustersResponse(response);
       })));
@@ -2364,6 +2377,7 @@
       var arg_region = "foo";
       var arg_clusterName = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Cluster.fromJson(json);
         checkCluster(obj);
@@ -2420,6 +2434,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2429,7 +2444,7 @@
       }), true);
       res
           .patch(arg_request, arg_projectId, arg_region, arg_clusterName,
-              updateMask: arg_updateMask)
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2445,6 +2460,7 @@
       var arg_projectId = "foo";
       var arg_region = "foo";
       var arg_jobId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CancelJobRequest.fromJson(json);
         checkCancelJobRequest(obj);
@@ -2505,6 +2521,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2513,7 +2530,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .cancel(arg_request, arg_projectId, arg_region, arg_jobId)
+          .cancel(arg_request, arg_projectId, arg_region, arg_jobId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Job response) {
         checkJob(response);
       })));
@@ -2526,6 +2544,7 @@
       var arg_projectId = "foo";
       var arg_region = "foo";
       var arg_jobId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2577,6 +2596,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2585,7 +2605,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_projectId, arg_region, arg_jobId)
+          .delete(arg_projectId, arg_region, arg_jobId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -2598,6 +2618,7 @@
       var arg_projectId = "foo";
       var arg_region = "foo";
       var arg_jobId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2649,6 +2670,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2657,7 +2679,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_projectId, arg_region, arg_jobId)
+          .get(arg_projectId, arg_region, arg_jobId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Job response) {
         checkJob(response);
       })));
@@ -2669,11 +2691,12 @@
           new api.DataprocApi(mock).projects.regions.jobs;
       var arg_projectId = "foo";
       var arg_region = "foo";
+      var arg_filter = "foo";
+      var arg_jobStateMatcher = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_clusterName = "foo";
-      var arg_filter = "foo";
-      var arg_jobStateMatcher = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2722,15 +2745,16 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["jobStateMatcher"].first,
+            unittest.equals(arg_jobStateMatcher));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["clusterName"].first, unittest.equals(arg_clusterName));
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
-        unittest.expect(queryMap["jobStateMatcher"].first,
-            unittest.equals(arg_jobStateMatcher));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2740,11 +2764,12 @@
       }), true);
       res
           .list(arg_projectId, arg_region,
+              filter: arg_filter,
+              jobStateMatcher: arg_jobStateMatcher,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
               clusterName: arg_clusterName,
-              filter: arg_filter,
-              jobStateMatcher: arg_jobStateMatcher)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListJobsResponse response) {
         checkListJobsResponse(response);
       })));
@@ -2759,6 +2784,7 @@
       var arg_region = "foo";
       var arg_jobId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Job.fromJson(json);
         checkJob(obj);
@@ -2815,6 +2841,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2824,7 +2851,7 @@
       }), true);
       res
           .patch(arg_request, arg_projectId, arg_region, arg_jobId,
-              updateMask: arg_updateMask)
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Job response) {
         checkJob(response);
       })));
@@ -2837,6 +2864,7 @@
       var arg_request = buildSubmitJobRequest();
       var arg_projectId = "foo";
       var arg_region = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SubmitJobRequest.fromJson(json);
         checkSubmitJobRequest(obj);
@@ -2888,6 +2916,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2896,7 +2925,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .submit(arg_request, arg_projectId, arg_region)
+          .submit(arg_request, arg_projectId, arg_region, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Job response) {
         checkJob(response);
       })));
@@ -2909,6 +2938,7 @@
       api.ProjectsRegionsOperationsResourceApi res =
           new api.DataprocApi(mock).projects.regions.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2940,6 +2970,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2947,7 +2978,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.cancel(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .cancel(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -2957,6 +2990,7 @@
       api.ProjectsRegionsOperationsResourceApi res =
           new api.DataprocApi(mock).projects.regions.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2988,6 +3022,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2995,7 +3030,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -3005,6 +3042,7 @@
       api.ProjectsRegionsOperationsResourceApi res =
           new api.DataprocApi(mock).projects.regions.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3036,6 +3074,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3043,7 +3082,9 @@
         var resp = convert.JSON.encode(buildOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Operation response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
     });
@@ -3056,6 +3097,7 @@
       var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3092,6 +3134,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3103,7 +3146,8 @@
           .list(arg_name,
               filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
diff --git a/generated/googleapis/test/datastore/v1_test.dart b/generated/googleapis/test/datastore/v1_test.dart
index b2f801b..fadcacc 100644
--- a/generated/googleapis/test/datastore/v1_test.dart
+++ b/generated/googleapis/test/datastore/v1_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed667() {
+buildUnnamed651() {
   var o = new core.List<api.Key>();
   o.add(buildKey());
   o.add(buildKey());
   return o;
 }
 
-checkUnnamed667(core.List<api.Key> o) {
+checkUnnamed651(core.List<api.Key> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkKey(o[0]);
   checkKey(o[1]);
@@ -68,7 +68,7 @@
   var o = new api.AllocateIdsRequest();
   buildCounterAllocateIdsRequest++;
   if (buildCounterAllocateIdsRequest < 3) {
-    o.keys = buildUnnamed667();
+    o.keys = buildUnnamed651();
   }
   buildCounterAllocateIdsRequest--;
   return o;
@@ -77,19 +77,19 @@
 checkAllocateIdsRequest(api.AllocateIdsRequest o) {
   buildCounterAllocateIdsRequest++;
   if (buildCounterAllocateIdsRequest < 3) {
-    checkUnnamed667(o.keys);
+    checkUnnamed651(o.keys);
   }
   buildCounterAllocateIdsRequest--;
 }
 
-buildUnnamed668() {
+buildUnnamed652() {
   var o = new core.List<api.Key>();
   o.add(buildKey());
   o.add(buildKey());
   return o;
 }
 
-checkUnnamed668(core.List<api.Key> o) {
+checkUnnamed652(core.List<api.Key> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkKey(o[0]);
   checkKey(o[1]);
@@ -100,7 +100,7 @@
   var o = new api.AllocateIdsResponse();
   buildCounterAllocateIdsResponse++;
   if (buildCounterAllocateIdsResponse < 3) {
-    o.keys = buildUnnamed668();
+    o.keys = buildUnnamed652();
   }
   buildCounterAllocateIdsResponse--;
   return o;
@@ -109,19 +109,19 @@
 checkAllocateIdsResponse(api.AllocateIdsResponse o) {
   buildCounterAllocateIdsResponse++;
   if (buildCounterAllocateIdsResponse < 3) {
-    checkUnnamed668(o.keys);
+    checkUnnamed652(o.keys);
   }
   buildCounterAllocateIdsResponse--;
 }
 
-buildUnnamed669() {
+buildUnnamed653() {
   var o = new core.List<api.Value>();
   o.add(buildValue());
   o.add(buildValue());
   return o;
 }
 
-checkUnnamed669(core.List<api.Value> o) {
+checkUnnamed653(core.List<api.Value> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkValue(o[0]);
   checkValue(o[1]);
@@ -132,7 +132,7 @@
   var o = new api.ArrayValue();
   buildCounterArrayValue++;
   if (buildCounterArrayValue < 3) {
-    o.values = buildUnnamed669();
+    o.values = buildUnnamed653();
   }
   buildCounterArrayValue--;
   return o;
@@ -141,7 +141,7 @@
 checkArrayValue(api.ArrayValue o) {
   buildCounterArrayValue++;
   if (buildCounterArrayValue < 3) {
-    checkUnnamed669(o.values);
+    checkUnnamed653(o.values);
   }
   buildCounterArrayValue--;
 }
@@ -184,14 +184,14 @@
   buildCounterBeginTransactionResponse--;
 }
 
-buildUnnamed670() {
+buildUnnamed654() {
   var o = new core.List<api.Mutation>();
   o.add(buildMutation());
   o.add(buildMutation());
   return o;
 }
 
-checkUnnamed670(core.List<api.Mutation> o) {
+checkUnnamed654(core.List<api.Mutation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMutation(o[0]);
   checkMutation(o[1]);
@@ -203,7 +203,7 @@
   buildCounterCommitRequest++;
   if (buildCounterCommitRequest < 3) {
     o.mode = "foo";
-    o.mutations = buildUnnamed670();
+    o.mutations = buildUnnamed654();
     o.transaction = "foo";
   }
   buildCounterCommitRequest--;
@@ -214,20 +214,20 @@
   buildCounterCommitRequest++;
   if (buildCounterCommitRequest < 3) {
     unittest.expect(o.mode, unittest.equals('foo'));
-    checkUnnamed670(o.mutations);
+    checkUnnamed654(o.mutations);
     unittest.expect(o.transaction, unittest.equals('foo'));
   }
   buildCounterCommitRequest--;
 }
 
-buildUnnamed671() {
+buildUnnamed655() {
   var o = new core.List<api.MutationResult>();
   o.add(buildMutationResult());
   o.add(buildMutationResult());
   return o;
 }
 
-checkUnnamed671(core.List<api.MutationResult> o) {
+checkUnnamed655(core.List<api.MutationResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMutationResult(o[0]);
   checkMutationResult(o[1]);
@@ -239,7 +239,7 @@
   buildCounterCommitResponse++;
   if (buildCounterCommitResponse < 3) {
     o.indexUpdates = 42;
-    o.mutationResults = buildUnnamed671();
+    o.mutationResults = buildUnnamed655();
   }
   buildCounterCommitResponse--;
   return o;
@@ -249,19 +249,19 @@
   buildCounterCommitResponse++;
   if (buildCounterCommitResponse < 3) {
     unittest.expect(o.indexUpdates, unittest.equals(42));
-    checkUnnamed671(o.mutationResults);
+    checkUnnamed655(o.mutationResults);
   }
   buildCounterCommitResponse--;
 }
 
-buildUnnamed672() {
+buildUnnamed656() {
   var o = new core.List<api.Filter>();
   o.add(buildFilter());
   o.add(buildFilter());
   return o;
 }
 
-checkUnnamed672(core.List<api.Filter> o) {
+checkUnnamed656(core.List<api.Filter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFilter(o[0]);
   checkFilter(o[1]);
@@ -272,7 +272,7 @@
   var o = new api.CompositeFilter();
   buildCounterCompositeFilter++;
   if (buildCounterCompositeFilter < 3) {
-    o.filters = buildUnnamed672();
+    o.filters = buildUnnamed656();
     o.op = "foo";
   }
   buildCounterCompositeFilter--;
@@ -282,7 +282,7 @@
 checkCompositeFilter(api.CompositeFilter o) {
   buildCounterCompositeFilter++;
   if (buildCounterCompositeFilter < 3) {
-    checkUnnamed672(o.filters);
+    checkUnnamed656(o.filters);
     unittest.expect(o.op, unittest.equals('foo'));
   }
   buildCounterCompositeFilter--;
@@ -303,14 +303,14 @@
   buildCounterEmpty--;
 }
 
-buildUnnamed673() {
+buildUnnamed657() {
   var o = new core.Map<core.String, api.Value>();
   o["x"] = buildValue();
   o["y"] = buildValue();
   return o;
 }
 
-checkUnnamed673(core.Map<core.String, api.Value> o) {
+checkUnnamed657(core.Map<core.String, api.Value> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkValue(o["x"]);
   checkValue(o["y"]);
@@ -322,7 +322,7 @@
   buildCounterEntity++;
   if (buildCounterEntity < 3) {
     o.key = buildKey();
-    o.properties = buildUnnamed673();
+    o.properties = buildUnnamed657();
   }
   buildCounterEntity--;
   return o;
@@ -332,7 +332,7 @@
   buildCounterEntity++;
   if (buildCounterEntity < 3) {
     checkKey(o.key);
-    checkUnnamed673(o.properties);
+    checkUnnamed657(o.properties);
   }
   buildCounterEntity--;
 }
@@ -381,14 +381,14 @@
   buildCounterFilter--;
 }
 
-buildUnnamed674() {
+buildUnnamed658() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed674(core.Map<core.String, core.String> o) {
+checkUnnamed658(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -400,7 +400,7 @@
   buildCounterGoogleDatastoreAdminV1beta1CommonMetadata++;
   if (buildCounterGoogleDatastoreAdminV1beta1CommonMetadata < 3) {
     o.endTime = "foo";
-    o.labels = buildUnnamed674();
+    o.labels = buildUnnamed658();
     o.operationType = "foo";
     o.startTime = "foo";
     o.state = "foo";
@@ -414,7 +414,7 @@
   buildCounterGoogleDatastoreAdminV1beta1CommonMetadata++;
   if (buildCounterGoogleDatastoreAdminV1beta1CommonMetadata < 3) {
     unittest.expect(o.endTime, unittest.equals('foo'));
-    checkUnnamed674(o.labels);
+    checkUnnamed658(o.labels);
     unittest.expect(o.operationType, unittest.equals('foo'));
     unittest.expect(o.startTime, unittest.equals('foo'));
     unittest.expect(o.state, unittest.equals('foo'));
@@ -422,27 +422,27 @@
   buildCounterGoogleDatastoreAdminV1beta1CommonMetadata--;
 }
 
-buildUnnamed675() {
+buildUnnamed659() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed675(core.List<core.String> o) {
+checkUnnamed659(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed676() {
+buildUnnamed660() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed676(core.List<core.String> o) {
+checkUnnamed660(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -453,8 +453,8 @@
   var o = new api.GoogleDatastoreAdminV1beta1EntityFilter();
   buildCounterGoogleDatastoreAdminV1beta1EntityFilter++;
   if (buildCounterGoogleDatastoreAdminV1beta1EntityFilter < 3) {
-    o.kinds = buildUnnamed675();
-    o.namespaceIds = buildUnnamed676();
+    o.kinds = buildUnnamed659();
+    o.namespaceIds = buildUnnamed660();
   }
   buildCounterGoogleDatastoreAdminV1beta1EntityFilter--;
   return o;
@@ -464,8 +464,8 @@
     api.GoogleDatastoreAdminV1beta1EntityFilter o) {
   buildCounterGoogleDatastoreAdminV1beta1EntityFilter++;
   if (buildCounterGoogleDatastoreAdminV1beta1EntityFilter < 3) {
-    checkUnnamed675(o.kinds);
-    checkUnnamed676(o.namespaceIds);
+    checkUnnamed659(o.kinds);
+    checkUnnamed660(o.namespaceIds);
   }
   buildCounterGoogleDatastoreAdminV1beta1EntityFilter--;
 }
@@ -568,14 +568,14 @@
   buildCounterGoogleDatastoreAdminV1beta1Progress--;
 }
 
-buildUnnamed677() {
+buildUnnamed661() {
   var o = new core.List<api.GoogleLongrunningOperation>();
   o.add(buildGoogleLongrunningOperation());
   o.add(buildGoogleLongrunningOperation());
   return o;
 }
 
-checkUnnamed677(core.List<api.GoogleLongrunningOperation> o) {
+checkUnnamed661(core.List<api.GoogleLongrunningOperation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleLongrunningOperation(o[0]);
   checkGoogleLongrunningOperation(o[1]);
@@ -587,7 +587,7 @@
   buildCounterGoogleLongrunningListOperationsResponse++;
   if (buildCounterGoogleLongrunningListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed677();
+    o.operations = buildUnnamed661();
   }
   buildCounterGoogleLongrunningListOperationsResponse--;
   return o;
@@ -598,12 +598,12 @@
   buildCounterGoogleLongrunningListOperationsResponse++;
   if (buildCounterGoogleLongrunningListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed677(o.operations);
+    checkUnnamed661(o.operations);
   }
   buildCounterGoogleLongrunningListOperationsResponse--;
 }
 
-buildUnnamed678() {
+buildUnnamed662() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -618,7 +618,7 @@
   return o;
 }
 
-checkUnnamed678(core.Map<core.String, core.Object> o) {
+checkUnnamed662(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -632,7 +632,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed679() {
+buildUnnamed663() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -647,7 +647,7 @@
   return o;
 }
 
-checkUnnamed679(core.Map<core.String, core.Object> o) {
+checkUnnamed663(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -668,9 +668,9 @@
   if (buildCounterGoogleLongrunningOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed678();
+    o.metadata = buildUnnamed662();
     o.name = "foo";
-    o.response = buildUnnamed679();
+    o.response = buildUnnamed663();
   }
   buildCounterGoogleLongrunningOperation--;
   return o;
@@ -681,34 +681,34 @@
   if (buildCounterGoogleLongrunningOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed678(o.metadata);
+    checkUnnamed662(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed679(o.response);
+    checkUnnamed663(o.response);
   }
   buildCounterGoogleLongrunningOperation--;
 }
 
-buildUnnamed680() {
+buildUnnamed664() {
   var o = new core.Map<core.String, api.GqlQueryParameter>();
   o["x"] = buildGqlQueryParameter();
   o["y"] = buildGqlQueryParameter();
   return o;
 }
 
-checkUnnamed680(core.Map<core.String, api.GqlQueryParameter> o) {
+checkUnnamed664(core.Map<core.String, api.GqlQueryParameter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGqlQueryParameter(o["x"]);
   checkGqlQueryParameter(o["y"]);
 }
 
-buildUnnamed681() {
+buildUnnamed665() {
   var o = new core.List<api.GqlQueryParameter>();
   o.add(buildGqlQueryParameter());
   o.add(buildGqlQueryParameter());
   return o;
 }
 
-checkUnnamed681(core.List<api.GqlQueryParameter> o) {
+checkUnnamed665(core.List<api.GqlQueryParameter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGqlQueryParameter(o[0]);
   checkGqlQueryParameter(o[1]);
@@ -720,8 +720,8 @@
   buildCounterGqlQuery++;
   if (buildCounterGqlQuery < 3) {
     o.allowLiterals = true;
-    o.namedBindings = buildUnnamed680();
-    o.positionalBindings = buildUnnamed681();
+    o.namedBindings = buildUnnamed664();
+    o.positionalBindings = buildUnnamed665();
     o.queryString = "foo";
   }
   buildCounterGqlQuery--;
@@ -732,8 +732,8 @@
   buildCounterGqlQuery++;
   if (buildCounterGqlQuery < 3) {
     unittest.expect(o.allowLiterals, unittest.isTrue);
-    checkUnnamed680(o.namedBindings);
-    checkUnnamed681(o.positionalBindings);
+    checkUnnamed664(o.namedBindings);
+    checkUnnamed665(o.positionalBindings);
     unittest.expect(o.queryString, unittest.equals('foo'));
   }
   buildCounterGqlQuery--;
@@ -760,14 +760,14 @@
   buildCounterGqlQueryParameter--;
 }
 
-buildUnnamed682() {
+buildUnnamed666() {
   var o = new core.List<api.PathElement>();
   o.add(buildPathElement());
   o.add(buildPathElement());
   return o;
 }
 
-checkUnnamed682(core.List<api.PathElement> o) {
+checkUnnamed666(core.List<api.PathElement> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPathElement(o[0]);
   checkPathElement(o[1]);
@@ -779,7 +779,7 @@
   buildCounterKey++;
   if (buildCounterKey < 3) {
     o.partitionId = buildPartitionId();
-    o.path = buildUnnamed682();
+    o.path = buildUnnamed666();
   }
   buildCounterKey--;
   return o;
@@ -789,7 +789,7 @@
   buildCounterKey++;
   if (buildCounterKey < 3) {
     checkPartitionId(o.partitionId);
-    checkUnnamed682(o.path);
+    checkUnnamed666(o.path);
   }
   buildCounterKey--;
 }
@@ -834,14 +834,14 @@
   buildCounterLatLng--;
 }
 
-buildUnnamed683() {
+buildUnnamed667() {
   var o = new core.List<api.Key>();
   o.add(buildKey());
   o.add(buildKey());
   return o;
 }
 
-checkUnnamed683(core.List<api.Key> o) {
+checkUnnamed667(core.List<api.Key> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkKey(o[0]);
   checkKey(o[1]);
@@ -852,7 +852,7 @@
   var o = new api.LookupRequest();
   buildCounterLookupRequest++;
   if (buildCounterLookupRequest < 3) {
-    o.keys = buildUnnamed683();
+    o.keys = buildUnnamed667();
     o.readOptions = buildReadOptions();
   }
   buildCounterLookupRequest--;
@@ -862,46 +862,46 @@
 checkLookupRequest(api.LookupRequest o) {
   buildCounterLookupRequest++;
   if (buildCounterLookupRequest < 3) {
-    checkUnnamed683(o.keys);
+    checkUnnamed667(o.keys);
     checkReadOptions(o.readOptions);
   }
   buildCounterLookupRequest--;
 }
 
-buildUnnamed684() {
+buildUnnamed668() {
   var o = new core.List<api.Key>();
   o.add(buildKey());
   o.add(buildKey());
   return o;
 }
 
-checkUnnamed684(core.List<api.Key> o) {
+checkUnnamed668(core.List<api.Key> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkKey(o[0]);
   checkKey(o[1]);
 }
 
-buildUnnamed685() {
+buildUnnamed669() {
   var o = new core.List<api.EntityResult>();
   o.add(buildEntityResult());
   o.add(buildEntityResult());
   return o;
 }
 
-checkUnnamed685(core.List<api.EntityResult> o) {
+checkUnnamed669(core.List<api.EntityResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntityResult(o[0]);
   checkEntityResult(o[1]);
 }
 
-buildUnnamed686() {
+buildUnnamed670() {
   var o = new core.List<api.EntityResult>();
   o.add(buildEntityResult());
   o.add(buildEntityResult());
   return o;
 }
 
-checkUnnamed686(core.List<api.EntityResult> o) {
+checkUnnamed670(core.List<api.EntityResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntityResult(o[0]);
   checkEntityResult(o[1]);
@@ -912,9 +912,9 @@
   var o = new api.LookupResponse();
   buildCounterLookupResponse++;
   if (buildCounterLookupResponse < 3) {
-    o.deferred = buildUnnamed684();
-    o.found = buildUnnamed685();
-    o.missing = buildUnnamed686();
+    o.deferred = buildUnnamed668();
+    o.found = buildUnnamed669();
+    o.missing = buildUnnamed670();
   }
   buildCounterLookupResponse--;
   return o;
@@ -923,9 +923,9 @@
 checkLookupResponse(api.LookupResponse o) {
   buildCounterLookupResponse++;
   if (buildCounterLookupResponse < 3) {
-    checkUnnamed684(o.deferred);
-    checkUnnamed685(o.found);
-    checkUnnamed686(o.missing);
+    checkUnnamed668(o.deferred);
+    checkUnnamed669(o.found);
+    checkUnnamed670(o.missing);
   }
   buildCounterLookupResponse--;
 }
@@ -1106,53 +1106,53 @@
   buildCounterPropertyReference--;
 }
 
-buildUnnamed687() {
+buildUnnamed671() {
   var o = new core.List<api.PropertyReference>();
   o.add(buildPropertyReference());
   o.add(buildPropertyReference());
   return o;
 }
 
-checkUnnamed687(core.List<api.PropertyReference> o) {
+checkUnnamed671(core.List<api.PropertyReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPropertyReference(o[0]);
   checkPropertyReference(o[1]);
 }
 
-buildUnnamed688() {
+buildUnnamed672() {
   var o = new core.List<api.KindExpression>();
   o.add(buildKindExpression());
   o.add(buildKindExpression());
   return o;
 }
 
-checkUnnamed688(core.List<api.KindExpression> o) {
+checkUnnamed672(core.List<api.KindExpression> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkKindExpression(o[0]);
   checkKindExpression(o[1]);
 }
 
-buildUnnamed689() {
+buildUnnamed673() {
   var o = new core.List<api.PropertyOrder>();
   o.add(buildPropertyOrder());
   o.add(buildPropertyOrder());
   return o;
 }
 
-checkUnnamed689(core.List<api.PropertyOrder> o) {
+checkUnnamed673(core.List<api.PropertyOrder> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPropertyOrder(o[0]);
   checkPropertyOrder(o[1]);
 }
 
-buildUnnamed690() {
+buildUnnamed674() {
   var o = new core.List<api.Projection>();
   o.add(buildProjection());
   o.add(buildProjection());
   return o;
 }
 
-checkUnnamed690(core.List<api.Projection> o) {
+checkUnnamed674(core.List<api.Projection> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProjection(o[0]);
   checkProjection(o[1]);
@@ -1163,14 +1163,14 @@
   var o = new api.Query();
   buildCounterQuery++;
   if (buildCounterQuery < 3) {
-    o.distinctOn = buildUnnamed687();
+    o.distinctOn = buildUnnamed671();
     o.endCursor = "foo";
     o.filter = buildFilter();
-    o.kind = buildUnnamed688();
+    o.kind = buildUnnamed672();
     o.limit = 42;
     o.offset = 42;
-    o.order = buildUnnamed689();
-    o.projection = buildUnnamed690();
+    o.order = buildUnnamed673();
+    o.projection = buildUnnamed674();
     o.startCursor = "foo";
   }
   buildCounterQuery--;
@@ -1180,27 +1180,27 @@
 checkQuery(api.Query o) {
   buildCounterQuery++;
   if (buildCounterQuery < 3) {
-    checkUnnamed687(o.distinctOn);
+    checkUnnamed671(o.distinctOn);
     unittest.expect(o.endCursor, unittest.equals('foo'));
     checkFilter(o.filter);
-    checkUnnamed688(o.kind);
+    checkUnnamed672(o.kind);
     unittest.expect(o.limit, unittest.equals(42));
     unittest.expect(o.offset, unittest.equals(42));
-    checkUnnamed689(o.order);
-    checkUnnamed690(o.projection);
+    checkUnnamed673(o.order);
+    checkUnnamed674(o.projection);
     unittest.expect(o.startCursor, unittest.equals('foo'));
   }
   buildCounterQuery--;
 }
 
-buildUnnamed691() {
+buildUnnamed675() {
   var o = new core.List<api.EntityResult>();
   o.add(buildEntityResult());
   o.add(buildEntityResult());
   return o;
 }
 
-checkUnnamed691(core.List<api.EntityResult> o) {
+checkUnnamed675(core.List<api.EntityResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntityResult(o[0]);
   checkEntityResult(o[1]);
@@ -1213,7 +1213,7 @@
   if (buildCounterQueryResultBatch < 3) {
     o.endCursor = "foo";
     o.entityResultType = "foo";
-    o.entityResults = buildUnnamed691();
+    o.entityResults = buildUnnamed675();
     o.moreResults = "foo";
     o.skippedCursor = "foo";
     o.skippedResults = 42;
@@ -1228,7 +1228,7 @@
   if (buildCounterQueryResultBatch < 3) {
     unittest.expect(o.endCursor, unittest.equals('foo'));
     unittest.expect(o.entityResultType, unittest.equals('foo'));
-    checkUnnamed691(o.entityResults);
+    checkUnnamed675(o.entityResults);
     unittest.expect(o.moreResults, unittest.equals('foo'));
     unittest.expect(o.skippedCursor, unittest.equals('foo'));
     unittest.expect(o.skippedResults, unittest.equals(42));
@@ -1292,6 +1292,55 @@
   buildCounterReadWrite--;
 }
 
+buildUnnamed676() {
+  var o = new core.List<api.Key>();
+  o.add(buildKey());
+  o.add(buildKey());
+  return o;
+}
+
+checkUnnamed676(core.List<api.Key> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkKey(o[0]);
+  checkKey(o[1]);
+}
+
+core.int buildCounterReserveIdsRequest = 0;
+buildReserveIdsRequest() {
+  var o = new api.ReserveIdsRequest();
+  buildCounterReserveIdsRequest++;
+  if (buildCounterReserveIdsRequest < 3) {
+    o.databaseId = "foo";
+    o.keys = buildUnnamed676();
+  }
+  buildCounterReserveIdsRequest--;
+  return o;
+}
+
+checkReserveIdsRequest(api.ReserveIdsRequest o) {
+  buildCounterReserveIdsRequest++;
+  if (buildCounterReserveIdsRequest < 3) {
+    unittest.expect(o.databaseId, unittest.equals('foo'));
+    checkUnnamed676(o.keys);
+  }
+  buildCounterReserveIdsRequest--;
+}
+
+core.int buildCounterReserveIdsResponse = 0;
+buildReserveIdsResponse() {
+  var o = new api.ReserveIdsResponse();
+  buildCounterReserveIdsResponse++;
+  if (buildCounterReserveIdsResponse < 3) {}
+  buildCounterReserveIdsResponse--;
+  return o;
+}
+
+checkReserveIdsResponse(api.ReserveIdsResponse o) {
+  buildCounterReserveIdsResponse++;
+  if (buildCounterReserveIdsResponse < 3) {}
+  buildCounterReserveIdsResponse--;
+}
+
 core.int buildCounterRollbackRequest = 0;
 buildRollbackRequest() {
   var o = new api.RollbackRequest();
@@ -1372,7 +1421,7 @@
   buildCounterRunQueryResponse--;
 }
 
-buildUnnamed692() {
+buildUnnamed677() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1387,7 +1436,7 @@
   return o;
 }
 
-checkUnnamed692(core.Map<core.String, core.Object> o) {
+checkUnnamed677(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -1401,17 +1450,17 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed693() {
+buildUnnamed678() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed692());
-  o.add(buildUnnamed692());
+  o.add(buildUnnamed677());
+  o.add(buildUnnamed677());
   return o;
 }
 
-checkUnnamed693(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed678(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed692(o[0]);
-  checkUnnamed692(o[1]);
+  checkUnnamed677(o[0]);
+  checkUnnamed677(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -1420,7 +1469,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed693();
+    o.details = buildUnnamed678();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -1431,7 +1480,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed693(o.details);
+    checkUnnamed678(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -1834,6 +1883,22 @@
     });
   });
 
+  unittest.group("obj-schema-ReserveIdsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReserveIdsRequest();
+      var od = new api.ReserveIdsRequest.fromJson(o.toJson());
+      checkReserveIdsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReserveIdsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReserveIdsResponse();
+      var od = new api.ReserveIdsResponse.fromJson(o.toJson());
+      checkReserveIdsResponse(od);
+    });
+  });
+
   unittest.group("obj-schema-RollbackRequest", () {
     unittest.test("to-json--from-json", () {
       var o = buildRollbackRequest();
@@ -1896,6 +1961,7 @@
       api.ProjectsResourceApi res = new api.DatastoreApi(mock).projects;
       var arg_request = buildAllocateIdsRequest();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AllocateIdsRequest.fromJson(json);
         checkAllocateIdsRequest(obj);
@@ -1938,6 +2004,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1946,7 +2013,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .allocateIds(arg_request, arg_projectId)
+          .allocateIds(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AllocateIdsResponse response) {
         checkAllocateIdsResponse(response);
       })));
@@ -1957,6 +2024,7 @@
       api.ProjectsResourceApi res = new api.DatastoreApi(mock).projects;
       var arg_request = buildBeginTransactionRequest();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BeginTransactionRequest.fromJson(json);
         checkBeginTransactionRequest(obj);
@@ -1999,6 +2067,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2007,7 +2076,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .beginTransaction(arg_request, arg_projectId)
+          .beginTransaction(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BeginTransactionResponse response) {
         checkBeginTransactionResponse(response);
       })));
@@ -2018,6 +2087,7 @@
       api.ProjectsResourceApi res = new api.DatastoreApi(mock).projects;
       var arg_request = buildCommitRequest();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CommitRequest.fromJson(json);
         checkCommitRequest(obj);
@@ -2060,6 +2130,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2068,7 +2139,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .commit(arg_request, arg_projectId)
+          .commit(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CommitResponse response) {
         checkCommitResponse(response);
       })));
@@ -2079,6 +2150,7 @@
       api.ProjectsResourceApi res = new api.DatastoreApi(mock).projects;
       var arg_request = buildLookupRequest();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LookupRequest.fromJson(json);
         checkLookupRequest(obj);
@@ -2121,6 +2193,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2129,17 +2202,81 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .lookup(arg_request, arg_projectId)
+          .lookup(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LookupResponse response) {
         checkLookupResponse(response);
       })));
     });
 
+    unittest.test("method--reserveIds", () {
+      var mock = new HttpServerMock();
+      api.ProjectsResourceApi res = new api.DatastoreApi(mock).projects;
+      var arg_request = buildReserveIdsRequest();
+      var arg_projectId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ReserveIdsRequest.fromJson(json);
+        checkReserveIdsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("v1/projects/"));
+        pathOffset += 12;
+        index = path.indexOf(":reserveIds", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals(":reserveIds"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildReserveIdsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .reserveIds(arg_request, arg_projectId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ReserveIdsResponse response) {
+        checkReserveIdsResponse(response);
+      })));
+    });
+
     unittest.test("method--rollback", () {
       var mock = new HttpServerMock();
       api.ProjectsResourceApi res = new api.DatastoreApi(mock).projects;
       var arg_request = buildRollbackRequest();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RollbackRequest.fromJson(json);
         checkRollbackRequest(obj);
@@ -2182,6 +2319,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2190,7 +2328,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .rollback(arg_request, arg_projectId)
+          .rollback(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RollbackResponse response) {
         checkRollbackResponse(response);
       })));
@@ -2201,6 +2339,7 @@
       api.ProjectsResourceApi res = new api.DatastoreApi(mock).projects;
       var arg_request = buildRunQueryRequest();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RunQueryRequest.fromJson(json);
         checkRunQueryRequest(obj);
@@ -2243,6 +2382,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2251,7 +2391,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .runQuery(arg_request, arg_projectId)
+          .runQuery(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RunQueryResponse response) {
         checkRunQueryResponse(response);
       })));
@@ -2264,6 +2404,7 @@
       api.ProjectsOperationsResourceApi res =
           new api.DatastoreApi(mock).projects.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2295,6 +2436,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2302,7 +2444,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.cancel(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .cancel(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -2312,6 +2456,7 @@
       api.ProjectsOperationsResourceApi res =
           new api.DatastoreApi(mock).projects.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2343,6 +2488,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2350,7 +2496,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -2360,6 +2508,7 @@
       api.ProjectsOperationsResourceApi res =
           new api.DatastoreApi(mock).projects.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2391,6 +2540,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2398,7 +2548,7 @@
         var resp = convert.JSON.encode(buildGoogleLongrunningOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(
+      res.get(arg_name, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.GoogleLongrunningOperation response) {
         checkGoogleLongrunningOperation(response);
       })));
@@ -2409,9 +2559,10 @@
       api.ProjectsOperationsResourceApi res =
           new api.DatastoreApi(mock).projects.operations;
       var arg_name = "foo";
+      var arg_pageSize = 42;
       var arg_filter = "foo";
       var arg_pageToken = "foo";
-      var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2443,11 +2594,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
-        unittest.expect(core.int.parse(queryMap["pageSize"].first),
-            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2458,9 +2610,10 @@
       }), true);
       res
           .list(arg_name,
+              pageSize: arg_pageSize,
               filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(
               ((api.GoogleLongrunningListOperationsResponse response) {
         checkGoogleLongrunningListOperationsResponse(response);
diff --git a/generated/googleapis/test/deploymentmanager/v2_test.dart b/generated/googleapis/test/deploymentmanager/v2_test.dart
index bb0c0cd..976701e 100644
--- a/generated/googleapis/test/deploymentmanager/v2_test.dart
+++ b/generated/googleapis/test/deploymentmanager/v2_test.dart
@@ -50,27 +50,27 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed2243() {
+buildUnnamed2241() {
   var o = new core.List<api.AuditLogConfig>();
   o.add(buildAuditLogConfig());
   o.add(buildAuditLogConfig());
   return o;
 }
 
-checkUnnamed2243(core.List<api.AuditLogConfig> o) {
+checkUnnamed2241(core.List<api.AuditLogConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditLogConfig(o[0]);
   checkAuditLogConfig(o[1]);
 }
 
-buildUnnamed2244() {
+buildUnnamed2242() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2244(core.List<core.String> o) {
+checkUnnamed2242(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -81,8 +81,8 @@
   var o = new api.AuditConfig();
   buildCounterAuditConfig++;
   if (buildCounterAuditConfig < 3) {
-    o.auditLogConfigs = buildUnnamed2243();
-    o.exemptedMembers = buildUnnamed2244();
+    o.auditLogConfigs = buildUnnamed2241();
+    o.exemptedMembers = buildUnnamed2242();
     o.service = "foo";
   }
   buildCounterAuditConfig--;
@@ -92,21 +92,21 @@
 checkAuditConfig(api.AuditConfig o) {
   buildCounterAuditConfig++;
   if (buildCounterAuditConfig < 3) {
-    checkUnnamed2243(o.auditLogConfigs);
-    checkUnnamed2244(o.exemptedMembers);
+    checkUnnamed2241(o.auditLogConfigs);
+    checkUnnamed2242(o.exemptedMembers);
     unittest.expect(o.service, unittest.equals('foo'));
   }
   buildCounterAuditConfig--;
 }
 
-buildUnnamed2245() {
+buildUnnamed2243() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2245(core.List<core.String> o) {
+checkUnnamed2243(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -117,7 +117,7 @@
   var o = new api.AuditLogConfig();
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    o.exemptedMembers = buildUnnamed2245();
+    o.exemptedMembers = buildUnnamed2243();
     o.logType = "foo";
   }
   buildCounterAuditLogConfig--;
@@ -127,7 +127,7 @@
 checkAuditLogConfig(api.AuditLogConfig o) {
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    checkUnnamed2245(o.exemptedMembers);
+    checkUnnamed2243(o.exemptedMembers);
     unittest.expect(o.logType, unittest.equals('foo'));
   }
   buildCounterAuditLogConfig--;
@@ -152,14 +152,14 @@
   buildCounterAuthorizationLoggingOptions--;
 }
 
-buildUnnamed2246() {
+buildUnnamed2244() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2246(core.List<core.String> o) {
+checkUnnamed2244(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -171,7 +171,7 @@
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
     o.condition = buildExpr();
-    o.members = buildUnnamed2246();
+    o.members = buildUnnamed2244();
     o.role = "foo";
   }
   buildCounterBinding--;
@@ -182,20 +182,20 @@
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
     checkExpr(o.condition);
-    checkUnnamed2246(o.members);
+    checkUnnamed2244(o.members);
     unittest.expect(o.role, unittest.equals('foo'));
   }
   buildCounterBinding--;
 }
 
-buildUnnamed2247() {
+buildUnnamed2245() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2247(core.List<core.String> o) {
+checkUnnamed2245(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -211,7 +211,7 @@
     o.svc = "foo";
     o.sys = "foo";
     o.value = "foo";
-    o.values = buildUnnamed2247();
+    o.values = buildUnnamed2245();
   }
   buildCounterCondition--;
   return o;
@@ -225,7 +225,7 @@
     unittest.expect(o.svc, unittest.equals('foo'));
     unittest.expect(o.sys, unittest.equals('foo'));
     unittest.expect(o.value, unittest.equals('foo'));
-    checkUnnamed2247(o.values);
+    checkUnnamed2245(o.values);
   }
   buildCounterCondition--;
 }
@@ -249,14 +249,14 @@
   buildCounterConfigFile--;
 }
 
-buildUnnamed2248() {
+buildUnnamed2246() {
   var o = new core.List<api.DeploymentLabelEntry>();
   o.add(buildDeploymentLabelEntry());
   o.add(buildDeploymentLabelEntry());
   return o;
 }
 
-checkUnnamed2248(core.List<api.DeploymentLabelEntry> o) {
+checkUnnamed2246(core.List<api.DeploymentLabelEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDeploymentLabelEntry(o[0]);
   checkDeploymentLabelEntry(o[1]);
@@ -271,7 +271,7 @@
     o.fingerprint = "foo";
     o.id = "foo";
     o.insertTime = "foo";
-    o.labels = buildUnnamed2248();
+    o.labels = buildUnnamed2246();
     o.manifest = "foo";
     o.name = "foo";
     o.operation = buildOperation();
@@ -290,7 +290,7 @@
     unittest.expect(o.fingerprint, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.insertTime, unittest.equals('foo'));
-    checkUnnamed2248(o.labels);
+    checkUnnamed2246(o.labels);
     unittest.expect(o.manifest, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     checkOperation(o.operation);
@@ -322,14 +322,14 @@
   buildCounterDeploymentLabelEntry--;
 }
 
-buildUnnamed2249() {
+buildUnnamed2247() {
   var o = new core.List<api.DeploymentUpdateLabelEntry>();
   o.add(buildDeploymentUpdateLabelEntry());
   o.add(buildDeploymentUpdateLabelEntry());
   return o;
 }
 
-checkUnnamed2249(core.List<api.DeploymentUpdateLabelEntry> o) {
+checkUnnamed2247(core.List<api.DeploymentUpdateLabelEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDeploymentUpdateLabelEntry(o[0]);
   checkDeploymentUpdateLabelEntry(o[1]);
@@ -341,7 +341,7 @@
   buildCounterDeploymentUpdate++;
   if (buildCounterDeploymentUpdate < 3) {
     o.description = "foo";
-    o.labels = buildUnnamed2249();
+    o.labels = buildUnnamed2247();
     o.manifest = "foo";
   }
   buildCounterDeploymentUpdate--;
@@ -352,7 +352,7 @@
   buildCounterDeploymentUpdate++;
   if (buildCounterDeploymentUpdate < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed2249(o.labels);
+    checkUnnamed2247(o.labels);
     unittest.expect(o.manifest, unittest.equals('foo'));
   }
   buildCounterDeploymentUpdate--;
@@ -398,14 +398,14 @@
   buildCounterDeploymentsCancelPreviewRequest--;
 }
 
-buildUnnamed2250() {
+buildUnnamed2248() {
   var o = new core.List<api.Deployment>();
   o.add(buildDeployment());
   o.add(buildDeployment());
   return o;
 }
 
-checkUnnamed2250(core.List<api.Deployment> o) {
+checkUnnamed2248(core.List<api.Deployment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDeployment(o[0]);
   checkDeployment(o[1]);
@@ -416,7 +416,7 @@
   var o = new api.DeploymentsListResponse();
   buildCounterDeploymentsListResponse++;
   if (buildCounterDeploymentsListResponse < 3) {
-    o.deployments = buildUnnamed2250();
+    o.deployments = buildUnnamed2248();
     o.nextPageToken = "foo";
   }
   buildCounterDeploymentsListResponse--;
@@ -426,7 +426,7 @@
 checkDeploymentsListResponse(api.DeploymentsListResponse o) {
   buildCounterDeploymentsListResponse++;
   if (buildCounterDeploymentsListResponse < 3) {
-    checkUnnamed2250(o.deployments);
+    checkUnnamed2248(o.deployments);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterDeploymentsListResponse--;
@@ -581,14 +581,14 @@
   buildCounterLogConfigDataAccessOptions--;
 }
 
-buildUnnamed2251() {
+buildUnnamed2249() {
   var o = new core.List<api.ImportFile>();
   o.add(buildImportFile());
   o.add(buildImportFile());
   return o;
 }
 
-checkUnnamed2251(core.List<api.ImportFile> o) {
+checkUnnamed2249(core.List<api.ImportFile> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkImportFile(o[0]);
   checkImportFile(o[1]);
@@ -602,7 +602,7 @@
     o.config = buildConfigFile();
     o.expandedConfig = "foo";
     o.id = "foo";
-    o.imports = buildUnnamed2251();
+    o.imports = buildUnnamed2249();
     o.insertTime = "foo";
     o.layout = "foo";
     o.name = "foo";
@@ -618,7 +618,7 @@
     checkConfigFile(o.config);
     unittest.expect(o.expandedConfig, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2251(o.imports);
+    checkUnnamed2249(o.imports);
     unittest.expect(o.insertTime, unittest.equals('foo'));
     unittest.expect(o.layout, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
@@ -627,14 +627,14 @@
   buildCounterManifest--;
 }
 
-buildUnnamed2252() {
+buildUnnamed2250() {
   var o = new core.List<api.Manifest>();
   o.add(buildManifest());
   o.add(buildManifest());
   return o;
 }
 
-checkUnnamed2252(core.List<api.Manifest> o) {
+checkUnnamed2250(core.List<api.Manifest> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkManifest(o[0]);
   checkManifest(o[1]);
@@ -645,7 +645,7 @@
   var o = new api.ManifestsListResponse();
   buildCounterManifestsListResponse++;
   if (buildCounterManifestsListResponse < 3) {
-    o.manifests = buildUnnamed2252();
+    o.manifests = buildUnnamed2250();
     o.nextPageToken = "foo";
   }
   buildCounterManifestsListResponse--;
@@ -655,7 +655,7 @@
 checkManifestsListResponse(api.ManifestsListResponse o) {
   buildCounterManifestsListResponse++;
   if (buildCounterManifestsListResponse < 3) {
-    checkUnnamed2252(o.manifests);
+    checkUnnamed2250(o.manifests);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterManifestsListResponse--;
@@ -684,14 +684,14 @@
   buildCounterOperationErrorErrors--;
 }
 
-buildUnnamed2253() {
+buildUnnamed2251() {
   var o = new core.List<api.OperationErrorErrors>();
   o.add(buildOperationErrorErrors());
   o.add(buildOperationErrorErrors());
   return o;
 }
 
-checkUnnamed2253(core.List<api.OperationErrorErrors> o) {
+checkUnnamed2251(core.List<api.OperationErrorErrors> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationErrorErrors(o[0]);
   checkOperationErrorErrors(o[1]);
@@ -702,7 +702,7 @@
   var o = new api.OperationError();
   buildCounterOperationError++;
   if (buildCounterOperationError < 3) {
-    o.errors = buildUnnamed2253();
+    o.errors = buildUnnamed2251();
   }
   buildCounterOperationError--;
   return o;
@@ -711,7 +711,7 @@
 checkOperationError(api.OperationError o) {
   buildCounterOperationError++;
   if (buildCounterOperationError < 3) {
-    checkUnnamed2253(o.errors);
+    checkUnnamed2251(o.errors);
   }
   buildCounterOperationError--;
 }
@@ -737,14 +737,14 @@
   buildCounterOperationWarningsData--;
 }
 
-buildUnnamed2254() {
+buildUnnamed2252() {
   var o = new core.List<api.OperationWarningsData>();
   o.add(buildOperationWarningsData());
   o.add(buildOperationWarningsData());
   return o;
 }
 
-checkUnnamed2254(core.List<api.OperationWarningsData> o) {
+checkUnnamed2252(core.List<api.OperationWarningsData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationWarningsData(o[0]);
   checkOperationWarningsData(o[1]);
@@ -756,7 +756,7 @@
   buildCounterOperationWarnings++;
   if (buildCounterOperationWarnings < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2254();
+    o.data = buildUnnamed2252();
     o.message = "foo";
   }
   buildCounterOperationWarnings--;
@@ -767,20 +767,20 @@
   buildCounterOperationWarnings++;
   if (buildCounterOperationWarnings < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2254(o.data);
+    checkUnnamed2252(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterOperationWarnings--;
 }
 
-buildUnnamed2255() {
+buildUnnamed2253() {
   var o = new core.List<api.OperationWarnings>();
   o.add(buildOperationWarnings());
   o.add(buildOperationWarnings());
   return o;
 }
 
-checkUnnamed2255(core.List<api.OperationWarnings> o) {
+checkUnnamed2253(core.List<api.OperationWarnings> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationWarnings(o[0]);
   checkOperationWarnings(o[1]);
@@ -812,7 +812,7 @@
     o.targetId = "foo";
     o.targetLink = "foo";
     o.user = "foo";
-    o.warnings = buildUnnamed2255();
+    o.warnings = buildUnnamed2253();
     o.zone = "foo";
   }
   buildCounterOperation--;
@@ -843,20 +843,20 @@
     unittest.expect(o.targetId, unittest.equals('foo'));
     unittest.expect(o.targetLink, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed2255(o.warnings);
+    checkUnnamed2253(o.warnings);
     unittest.expect(o.zone, unittest.equals('foo'));
   }
   buildCounterOperation--;
 }
 
-buildUnnamed2256() {
+buildUnnamed2254() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed2256(core.List<api.Operation> o) {
+checkUnnamed2254(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -868,7 +868,7 @@
   buildCounterOperationsListResponse++;
   if (buildCounterOperationsListResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed2256();
+    o.operations = buildUnnamed2254();
   }
   buildCounterOperationsListResponse--;
   return o;
@@ -878,45 +878,45 @@
   buildCounterOperationsListResponse++;
   if (buildCounterOperationsListResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2256(o.operations);
+    checkUnnamed2254(o.operations);
   }
   buildCounterOperationsListResponse--;
 }
 
-buildUnnamed2257() {
+buildUnnamed2255() {
   var o = new core.List<api.AuditConfig>();
   o.add(buildAuditConfig());
   o.add(buildAuditConfig());
   return o;
 }
 
-checkUnnamed2257(core.List<api.AuditConfig> o) {
+checkUnnamed2255(core.List<api.AuditConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditConfig(o[0]);
   checkAuditConfig(o[1]);
 }
 
-buildUnnamed2258() {
+buildUnnamed2256() {
   var o = new core.List<api.Binding>();
   o.add(buildBinding());
   o.add(buildBinding());
   return o;
 }
 
-checkUnnamed2258(core.List<api.Binding> o) {
+checkUnnamed2256(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
 }
 
-buildUnnamed2259() {
+buildUnnamed2257() {
   var o = new core.List<api.Rule>();
   o.add(buildRule());
   o.add(buildRule());
   return o;
 }
 
-checkUnnamed2259(core.List<api.Rule> o) {
+checkUnnamed2257(core.List<api.Rule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRule(o[0]);
   checkRule(o[1]);
@@ -927,11 +927,11 @@
   var o = new api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.auditConfigs = buildUnnamed2257();
-    o.bindings = buildUnnamed2258();
+    o.auditConfigs = buildUnnamed2255();
+    o.bindings = buildUnnamed2256();
     o.etag = "foo";
     o.iamOwned = true;
-    o.rules = buildUnnamed2259();
+    o.rules = buildUnnamed2257();
     o.version = 42;
   }
   buildCounterPolicy--;
@@ -941,11 +941,11 @@
 checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed2257(o.auditConfigs);
-    checkUnnamed2258(o.bindings);
+    checkUnnamed2255(o.auditConfigs);
+    checkUnnamed2256(o.bindings);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.iamOwned, unittest.isTrue);
-    checkUnnamed2259(o.rules);
+    checkUnnamed2257(o.rules);
     unittest.expect(o.version, unittest.equals(42));
   }
   buildCounterPolicy--;
@@ -972,14 +972,14 @@
   buildCounterResourceWarningsData--;
 }
 
-buildUnnamed2260() {
+buildUnnamed2258() {
   var o = new core.List<api.ResourceWarningsData>();
   o.add(buildResourceWarningsData());
   o.add(buildResourceWarningsData());
   return o;
 }
 
-checkUnnamed2260(core.List<api.ResourceWarningsData> o) {
+checkUnnamed2258(core.List<api.ResourceWarningsData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceWarningsData(o[0]);
   checkResourceWarningsData(o[1]);
@@ -991,7 +991,7 @@
   buildCounterResourceWarnings++;
   if (buildCounterResourceWarnings < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2260();
+    o.data = buildUnnamed2258();
     o.message = "foo";
   }
   buildCounterResourceWarnings--;
@@ -1002,20 +1002,20 @@
   buildCounterResourceWarnings++;
   if (buildCounterResourceWarnings < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2260(o.data);
+    checkUnnamed2258(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterResourceWarnings--;
 }
 
-buildUnnamed2261() {
+buildUnnamed2259() {
   var o = new core.List<api.ResourceWarnings>();
   o.add(buildResourceWarnings());
   o.add(buildResourceWarnings());
   return o;
 }
 
-checkUnnamed2261(core.List<api.ResourceWarnings> o) {
+checkUnnamed2259(core.List<api.ResourceWarnings> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceWarnings(o[0]);
   checkResourceWarnings(o[1]);
@@ -1037,7 +1037,7 @@
     o.update = buildResourceUpdate();
     o.updateTime = "foo";
     o.url = "foo";
-    o.warnings = buildUnnamed2261();
+    o.warnings = buildUnnamed2259();
   }
   buildCounterResource--;
   return o;
@@ -1057,7 +1057,7 @@
     checkResourceUpdate(o.update);
     unittest.expect(o.updateTime, unittest.equals('foo'));
     unittest.expect(o.url, unittest.equals('foo'));
-    checkUnnamed2261(o.warnings);
+    checkUnnamed2259(o.warnings);
   }
   buildCounterResource--;
 }
@@ -1104,14 +1104,14 @@
   buildCounterResourceUpdateErrorErrors--;
 }
 
-buildUnnamed2262() {
+buildUnnamed2260() {
   var o = new core.List<api.ResourceUpdateErrorErrors>();
   o.add(buildResourceUpdateErrorErrors());
   o.add(buildResourceUpdateErrorErrors());
   return o;
 }
 
-checkUnnamed2262(core.List<api.ResourceUpdateErrorErrors> o) {
+checkUnnamed2260(core.List<api.ResourceUpdateErrorErrors> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceUpdateErrorErrors(o[0]);
   checkResourceUpdateErrorErrors(o[1]);
@@ -1122,7 +1122,7 @@
   var o = new api.ResourceUpdateError();
   buildCounterResourceUpdateError++;
   if (buildCounterResourceUpdateError < 3) {
-    o.errors = buildUnnamed2262();
+    o.errors = buildUnnamed2260();
   }
   buildCounterResourceUpdateError--;
   return o;
@@ -1131,7 +1131,7 @@
 checkResourceUpdateError(api.ResourceUpdateError o) {
   buildCounterResourceUpdateError++;
   if (buildCounterResourceUpdateError < 3) {
-    checkUnnamed2262(o.errors);
+    checkUnnamed2260(o.errors);
   }
   buildCounterResourceUpdateError--;
 }
@@ -1157,14 +1157,14 @@
   buildCounterResourceUpdateWarningsData--;
 }
 
-buildUnnamed2263() {
+buildUnnamed2261() {
   var o = new core.List<api.ResourceUpdateWarningsData>();
   o.add(buildResourceUpdateWarningsData());
   o.add(buildResourceUpdateWarningsData());
   return o;
 }
 
-checkUnnamed2263(core.List<api.ResourceUpdateWarningsData> o) {
+checkUnnamed2261(core.List<api.ResourceUpdateWarningsData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceUpdateWarningsData(o[0]);
   checkResourceUpdateWarningsData(o[1]);
@@ -1176,7 +1176,7 @@
   buildCounterResourceUpdateWarnings++;
   if (buildCounterResourceUpdateWarnings < 3) {
     o.code = "foo";
-    o.data = buildUnnamed2263();
+    o.data = buildUnnamed2261();
     o.message = "foo";
   }
   buildCounterResourceUpdateWarnings--;
@@ -1187,20 +1187,20 @@
   buildCounterResourceUpdateWarnings++;
   if (buildCounterResourceUpdateWarnings < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed2263(o.data);
+    checkUnnamed2261(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterResourceUpdateWarnings--;
 }
 
-buildUnnamed2264() {
+buildUnnamed2262() {
   var o = new core.List<api.ResourceUpdateWarnings>();
   o.add(buildResourceUpdateWarnings());
   o.add(buildResourceUpdateWarnings());
   return o;
 }
 
-checkUnnamed2264(core.List<api.ResourceUpdateWarnings> o) {
+checkUnnamed2262(core.List<api.ResourceUpdateWarnings> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceUpdateWarnings(o[0]);
   checkResourceUpdateWarnings(o[1]);
@@ -1218,7 +1218,7 @@
     o.manifest = "foo";
     o.properties = "foo";
     o.state = "foo";
-    o.warnings = buildUnnamed2264();
+    o.warnings = buildUnnamed2262();
   }
   buildCounterResourceUpdate--;
   return o;
@@ -1234,19 +1234,19 @@
     unittest.expect(o.manifest, unittest.equals('foo'));
     unittest.expect(o.properties, unittest.equals('foo'));
     unittest.expect(o.state, unittest.equals('foo'));
-    checkUnnamed2264(o.warnings);
+    checkUnnamed2262(o.warnings);
   }
   buildCounterResourceUpdate--;
 }
 
-buildUnnamed2265() {
+buildUnnamed2263() {
   var o = new core.List<api.Resource>();
   o.add(buildResource());
   o.add(buildResource());
   return o;
 }
 
-checkUnnamed2265(core.List<api.Resource> o) {
+checkUnnamed2263(core.List<api.Resource> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResource(o[0]);
   checkResource(o[1]);
@@ -1258,7 +1258,7 @@
   buildCounterResourcesListResponse++;
   if (buildCounterResourcesListResponse < 3) {
     o.nextPageToken = "foo";
-    o.resources = buildUnnamed2265();
+    o.resources = buildUnnamed2263();
   }
   buildCounterResourcesListResponse--;
   return o;
@@ -1268,24 +1268,50 @@
   buildCounterResourcesListResponse++;
   if (buildCounterResourcesListResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2265(o.resources);
+    checkUnnamed2263(o.resources);
   }
   buildCounterResourcesListResponse--;
 }
 
-buildUnnamed2266() {
+buildUnnamed2264() {
   var o = new core.List<api.Condition>();
   o.add(buildCondition());
   o.add(buildCondition());
   return o;
 }
 
-checkUnnamed2266(core.List<api.Condition> o) {
+checkUnnamed2264(core.List<api.Condition> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCondition(o[0]);
   checkCondition(o[1]);
 }
 
+buildUnnamed2265() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2265(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2266() {
+  var o = new core.List<api.LogConfig>();
+  o.add(buildLogConfig());
+  o.add(buildLogConfig());
+  return o;
+}
+
+checkUnnamed2266(core.List<api.LogConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLogConfig(o[0]);
+  checkLogConfig(o[1]);
+}
+
 buildUnnamed2267() {
   var o = new core.List<core.String>();
   o.add("foo");
@@ -1300,31 +1326,83 @@
 }
 
 buildUnnamed2268() {
-  var o = new core.List<api.LogConfig>();
-  o.add(buildLogConfig());
-  o.add(buildLogConfig());
-  return o;
-}
-
-checkUnnamed2268(core.List<api.LogConfig> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkLogConfig(o[0]);
-  checkLogConfig(o[1]);
-}
-
-buildUnnamed2269() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2269(core.List<core.String> o) {
+checkUnnamed2268(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
+core.int buildCounterRule = 0;
+buildRule() {
+  var o = new api.Rule();
+  buildCounterRule++;
+  if (buildCounterRule < 3) {
+    o.action = "foo";
+    o.conditions = buildUnnamed2264();
+    o.description = "foo";
+    o.ins = buildUnnamed2265();
+    o.logConfigs = buildUnnamed2266();
+    o.notIns = buildUnnamed2267();
+    o.permissions = buildUnnamed2268();
+  }
+  buildCounterRule--;
+  return o;
+}
+
+checkRule(api.Rule o) {
+  buildCounterRule++;
+  if (buildCounterRule < 3) {
+    unittest.expect(o.action, unittest.equals('foo'));
+    checkUnnamed2264(o.conditions);
+    unittest.expect(o.description, unittest.equals('foo'));
+    checkUnnamed2265(o.ins);
+    checkUnnamed2266(o.logConfigs);
+    checkUnnamed2267(o.notIns);
+    checkUnnamed2268(o.permissions);
+  }
+  buildCounterRule--;
+}
+
+buildUnnamed2269() {
+  var o = new core.List<api.ImportFile>();
+  o.add(buildImportFile());
+  o.add(buildImportFile());
+  return o;
+}
+
+checkUnnamed2269(core.List<api.ImportFile> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkImportFile(o[0]);
+  checkImportFile(o[1]);
+}
+
+core.int buildCounterTargetConfiguration = 0;
+buildTargetConfiguration() {
+  var o = new api.TargetConfiguration();
+  buildCounterTargetConfiguration++;
+  if (buildCounterTargetConfiguration < 3) {
+    o.config = buildConfigFile();
+    o.imports = buildUnnamed2269();
+  }
+  buildCounterTargetConfiguration--;
+  return o;
+}
+
+checkTargetConfiguration(api.TargetConfiguration o) {
+  buildCounterTargetConfiguration++;
+  if (buildCounterTargetConfiguration < 3) {
+    checkConfigFile(o.config);
+    checkUnnamed2269(o.imports);
+  }
+  buildCounterTargetConfiguration--;
+}
+
 buildUnnamed2270() {
   var o = new core.List<core.String>();
   o.add("foo");
@@ -1338,90 +1416,12 @@
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-core.int buildCounterRule = 0;
-buildRule() {
-  var o = new api.Rule();
-  buildCounterRule++;
-  if (buildCounterRule < 3) {
-    o.action = "foo";
-    o.conditions = buildUnnamed2266();
-    o.description = "foo";
-    o.ins = buildUnnamed2267();
-    o.logConfigs = buildUnnamed2268();
-    o.notIns = buildUnnamed2269();
-    o.permissions = buildUnnamed2270();
-  }
-  buildCounterRule--;
-  return o;
-}
-
-checkRule(api.Rule o) {
-  buildCounterRule++;
-  if (buildCounterRule < 3) {
-    unittest.expect(o.action, unittest.equals('foo'));
-    checkUnnamed2266(o.conditions);
-    unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed2267(o.ins);
-    checkUnnamed2268(o.logConfigs);
-    checkUnnamed2269(o.notIns);
-    checkUnnamed2270(o.permissions);
-  }
-  buildCounterRule--;
-}
-
-buildUnnamed2271() {
-  var o = new core.List<api.ImportFile>();
-  o.add(buildImportFile());
-  o.add(buildImportFile());
-  return o;
-}
-
-checkUnnamed2271(core.List<api.ImportFile> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkImportFile(o[0]);
-  checkImportFile(o[1]);
-}
-
-core.int buildCounterTargetConfiguration = 0;
-buildTargetConfiguration() {
-  var o = new api.TargetConfiguration();
-  buildCounterTargetConfiguration++;
-  if (buildCounterTargetConfiguration < 3) {
-    o.config = buildConfigFile();
-    o.imports = buildUnnamed2271();
-  }
-  buildCounterTargetConfiguration--;
-  return o;
-}
-
-checkTargetConfiguration(api.TargetConfiguration o) {
-  buildCounterTargetConfiguration++;
-  if (buildCounterTargetConfiguration < 3) {
-    checkConfigFile(o.config);
-    checkUnnamed2271(o.imports);
-  }
-  buildCounterTargetConfiguration--;
-}
-
-buildUnnamed2272() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed2272(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
 core.int buildCounterTestPermissionsRequest = 0;
 buildTestPermissionsRequest() {
   var o = new api.TestPermissionsRequest();
   buildCounterTestPermissionsRequest++;
   if (buildCounterTestPermissionsRequest < 3) {
-    o.permissions = buildUnnamed2272();
+    o.permissions = buildUnnamed2270();
   }
   buildCounterTestPermissionsRequest--;
   return o;
@@ -1430,19 +1430,19 @@
 checkTestPermissionsRequest(api.TestPermissionsRequest o) {
   buildCounterTestPermissionsRequest++;
   if (buildCounterTestPermissionsRequest < 3) {
-    checkUnnamed2272(o.permissions);
+    checkUnnamed2270(o.permissions);
   }
   buildCounterTestPermissionsRequest--;
 }
 
-buildUnnamed2273() {
+buildUnnamed2271() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2273(core.List<core.String> o) {
+checkUnnamed2271(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1453,7 +1453,7 @@
   var o = new api.TestPermissionsResponse();
   buildCounterTestPermissionsResponse++;
   if (buildCounterTestPermissionsResponse < 3) {
-    o.permissions = buildUnnamed2273();
+    o.permissions = buildUnnamed2271();
   }
   buildCounterTestPermissionsResponse--;
   return o;
@@ -1462,7 +1462,7 @@
 checkTestPermissionsResponse(api.TestPermissionsResponse o) {
   buildCounterTestPermissionsResponse++;
   if (buildCounterTestPermissionsResponse < 3) {
-    checkUnnamed2273(o.permissions);
+    checkUnnamed2271(o.permissions);
   }
   buildCounterTestPermissionsResponse--;
 }
@@ -1494,14 +1494,14 @@
   buildCounterType--;
 }
 
-buildUnnamed2274() {
+buildUnnamed2272() {
   var o = new core.List<api.Type>();
   o.add(buildType());
   o.add(buildType());
   return o;
 }
 
-checkUnnamed2274(core.List<api.Type> o) {
+checkUnnamed2272(core.List<api.Type> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkType(o[0]);
   checkType(o[1]);
@@ -1513,7 +1513,7 @@
   buildCounterTypesListResponse++;
   if (buildCounterTypesListResponse < 3) {
     o.nextPageToken = "foo";
-    o.types = buildUnnamed2274();
+    o.types = buildUnnamed2272();
   }
   buildCounterTypesListResponse--;
   return o;
@@ -1523,7 +1523,7 @@
   buildCounterTypesListResponse++;
   if (buildCounterTypesListResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2274(o.types);
+    checkUnnamed2272(o.types);
   }
   buildCounterTypesListResponse--;
 }
@@ -1889,6 +1889,7 @@
       var arg_request = buildDeploymentsCancelPreviewRequest();
       var arg_project = "foo";
       var arg_deployment = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DeploymentsCancelPreviewRequest.fromJson(json);
         checkDeploymentsCancelPreviewRequest(obj);
@@ -1919,6 +1920,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1927,7 +1929,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .cancelPreview(arg_request, arg_project, arg_deployment)
+          .cancelPreview(arg_request, arg_project, arg_deployment,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1940,6 +1943,7 @@
       var arg_project = "foo";
       var arg_deployment = "foo";
       var arg_deletePolicy = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1969,6 +1973,7 @@
         }
         unittest.expect(
             queryMap["deletePolicy"].first, unittest.equals(arg_deletePolicy));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1977,7 +1982,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_deployment, deletePolicy: arg_deletePolicy)
+          .delete(arg_project, arg_deployment,
+              deletePolicy: arg_deletePolicy, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1989,6 +1995,7 @@
           new api.DeploymentmanagerApi(mock).deployments;
       var arg_project = "foo";
       var arg_deployment = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2016,6 +2023,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2024,7 +2032,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_deployment)
+          .get(arg_project, arg_deployment, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Deployment response) {
         checkDeployment(response);
       })));
@@ -2036,6 +2044,7 @@
           new api.DeploymentmanagerApi(mock).deployments;
       var arg_project = "foo";
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2063,6 +2072,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2071,7 +2081,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_project, arg_resource)
+          .getIamPolicy(arg_project, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -2084,6 +2094,7 @@
       var arg_request = buildDeployment();
       var arg_project = "foo";
       var arg_preview = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Deployment.fromJson(json);
         checkDeployment(obj);
@@ -2116,6 +2127,7 @@
         }
         unittest.expect(
             queryMap["preview"].first, unittest.equals("$arg_preview"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2124,7 +2136,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, preview: arg_preview)
+          .insert(arg_request, arg_project,
+              preview: arg_preview, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2139,6 +2152,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2173,6 +2187,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2185,7 +2200,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DeploymentsListResponse response) {
         checkDeploymentsListResponse(response);
       })));
@@ -2201,6 +2217,7 @@
       var arg_createPolicy = "foo";
       var arg_deletePolicy = "foo";
       var arg_preview = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Deployment.fromJson(json);
         checkDeployment(obj);
@@ -2237,6 +2254,7 @@
             queryMap["deletePolicy"].first, unittest.equals(arg_deletePolicy));
         unittest.expect(
             queryMap["preview"].first, unittest.equals("$arg_preview"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2248,7 +2266,8 @@
           .patch(arg_request, arg_project, arg_deployment,
               createPolicy: arg_createPolicy,
               deletePolicy: arg_deletePolicy,
-              preview: arg_preview)
+              preview: arg_preview,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2261,6 +2280,7 @@
       var arg_request = buildPolicy();
       var arg_project = "foo";
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Policy.fromJson(json);
         checkPolicy(obj);
@@ -2291,6 +2311,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2299,7 +2320,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_project, arg_resource)
+          .setIamPolicy(arg_request, arg_project, arg_resource,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -2312,6 +2334,7 @@
       var arg_request = buildDeploymentsStopRequest();
       var arg_project = "foo";
       var arg_deployment = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DeploymentsStopRequest.fromJson(json);
         checkDeploymentsStopRequest(obj);
@@ -2342,6 +2365,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2350,7 +2374,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .stop(arg_request, arg_project, arg_deployment)
+          .stop(arg_request, arg_project, arg_deployment, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2363,6 +2387,7 @@
       var arg_request = buildTestPermissionsRequest();
       var arg_project = "foo";
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestPermissionsRequest.fromJson(json);
         checkTestPermissionsRequest(obj);
@@ -2393,6 +2418,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2401,7 +2427,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .testIamPermissions(arg_request, arg_project, arg_resource)
+          .testIamPermissions(arg_request, arg_project, arg_resource,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TestPermissionsResponse response) {
         checkTestPermissionsResponse(response);
       })));
@@ -2417,6 +2444,7 @@
       var arg_createPolicy = "foo";
       var arg_deletePolicy = "foo";
       var arg_preview = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Deployment.fromJson(json);
         checkDeployment(obj);
@@ -2453,6 +2481,7 @@
             queryMap["deletePolicy"].first, unittest.equals(arg_deletePolicy));
         unittest.expect(
             queryMap["preview"].first, unittest.equals("$arg_preview"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2464,7 +2493,8 @@
           .update(arg_request, arg_project, arg_deployment,
               createPolicy: arg_createPolicy,
               deletePolicy: arg_deletePolicy,
-              preview: arg_preview)
+              preview: arg_preview,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2479,6 +2509,7 @@
       var arg_project = "foo";
       var arg_deployment = "foo";
       var arg_manifest = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2506,6 +2537,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2514,7 +2546,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_deployment, arg_manifest)
+          .get(arg_project, arg_deployment, arg_manifest, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Manifest response) {
         checkManifest(response);
       })));
@@ -2530,6 +2562,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2564,6 +2597,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2576,7 +2610,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ManifestsListResponse response) {
         checkManifestsListResponse(response);
       })));
@@ -2590,6 +2625,7 @@
           new api.DeploymentmanagerApi(mock).operations;
       var arg_project = "foo";
       var arg_operation = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2617,6 +2653,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2625,7 +2662,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_operation)
+          .get(arg_project, arg_operation, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2640,6 +2677,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2674,6 +2712,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2686,7 +2725,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OperationsListResponse response) {
         checkOperationsListResponse(response);
       })));
@@ -2701,6 +2741,7 @@
       var arg_project = "foo";
       var arg_deployment = "foo";
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2728,6 +2769,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2736,7 +2778,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_deployment, arg_resource)
+          .get(arg_project, arg_deployment, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Resource response) {
         checkResource(response);
       })));
@@ -2752,6 +2794,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2786,6 +2829,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2798,7 +2842,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ResourcesListResponse response) {
         checkResourcesListResponse(response);
       })));
@@ -2814,6 +2859,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2848,6 +2894,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2860,7 +2907,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TypesListResponse response) {
         checkTypesListResponse(response);
       })));
diff --git a/generated/googleapis/test/dfareporting/v2_8_test.dart b/generated/googleapis/test/dfareporting/v2_8_test.dart
new file mode 100644
index 0000000..4f27d36
--- /dev/null
+++ b/generated/googleapis/test/dfareporting/v2_8_test.dart
@@ -0,0 +1,27086 @@
+library googleapis.dfareporting.v2_8.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/dfareporting/v2_8.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+buildUnnamed2929() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2929(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2930() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2930(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAccount = 0;
+buildAccount() {
+  var o = new api.Account();
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    o.accountPermissionIds = buildUnnamed2929();
+    o.accountProfile = "foo";
+    o.active = true;
+    o.activeAdsLimitTier = "foo";
+    o.activeViewOptOut = true;
+    o.availablePermissionIds = buildUnnamed2930();
+    o.countryId = "foo";
+    o.currencyId = "foo";
+    o.defaultCreativeSizeId = "foo";
+    o.description = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.locale = "foo";
+    o.maximumImageSize = "foo";
+    o.name = "foo";
+    o.nielsenOcrEnabled = true;
+    o.reportsConfiguration = buildReportsConfiguration();
+    o.shareReportsWithTwitter = true;
+    o.teaserSizeLimit = "foo";
+  }
+  buildCounterAccount--;
+  return o;
+}
+
+checkAccount(api.Account o) {
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    checkUnnamed2929(o.accountPermissionIds);
+    unittest.expect(o.accountProfile, unittest.equals('foo'));
+    unittest.expect(o.active, unittest.isTrue);
+    unittest.expect(o.activeAdsLimitTier, unittest.equals('foo'));
+    unittest.expect(o.activeViewOptOut, unittest.isTrue);
+    checkUnnamed2930(o.availablePermissionIds);
+    unittest.expect(o.countryId, unittest.equals('foo'));
+    unittest.expect(o.currencyId, unittest.equals('foo'));
+    unittest.expect(o.defaultCreativeSizeId, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.locale, unittest.equals('foo'));
+    unittest.expect(o.maximumImageSize, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.nielsenOcrEnabled, unittest.isTrue);
+    checkReportsConfiguration(o.reportsConfiguration);
+    unittest.expect(o.shareReportsWithTwitter, unittest.isTrue);
+    unittest.expect(o.teaserSizeLimit, unittest.equals('foo'));
+  }
+  buildCounterAccount--;
+}
+
+core.int buildCounterAccountActiveAdSummary = 0;
+buildAccountActiveAdSummary() {
+  var o = new api.AccountActiveAdSummary();
+  buildCounterAccountActiveAdSummary++;
+  if (buildCounterAccountActiveAdSummary < 3) {
+    o.accountId = "foo";
+    o.activeAds = "foo";
+    o.activeAdsLimitTier = "foo";
+    o.availableAds = "foo";
+    o.kind = "foo";
+  }
+  buildCounterAccountActiveAdSummary--;
+  return o;
+}
+
+checkAccountActiveAdSummary(api.AccountActiveAdSummary o) {
+  buildCounterAccountActiveAdSummary++;
+  if (buildCounterAccountActiveAdSummary < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.activeAds, unittest.equals('foo'));
+    unittest.expect(o.activeAdsLimitTier, unittest.equals('foo'));
+    unittest.expect(o.availableAds, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAccountActiveAdSummary--;
+}
+
+buildUnnamed2931() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2931(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAccountPermission = 0;
+buildAccountPermission() {
+  var o = new api.AccountPermission();
+  buildCounterAccountPermission++;
+  if (buildCounterAccountPermission < 3) {
+    o.accountProfiles = buildUnnamed2931();
+    o.id = "foo";
+    o.kind = "foo";
+    o.level = "foo";
+    o.name = "foo";
+    o.permissionGroupId = "foo";
+  }
+  buildCounterAccountPermission--;
+  return o;
+}
+
+checkAccountPermission(api.AccountPermission o) {
+  buildCounterAccountPermission++;
+  if (buildCounterAccountPermission < 3) {
+    checkUnnamed2931(o.accountProfiles);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.level, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.permissionGroupId, unittest.equals('foo'));
+  }
+  buildCounterAccountPermission--;
+}
+
+core.int buildCounterAccountPermissionGroup = 0;
+buildAccountPermissionGroup() {
+  var o = new api.AccountPermissionGroup();
+  buildCounterAccountPermissionGroup++;
+  if (buildCounterAccountPermissionGroup < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterAccountPermissionGroup--;
+  return o;
+}
+
+checkAccountPermissionGroup(api.AccountPermissionGroup o) {
+  buildCounterAccountPermissionGroup++;
+  if (buildCounterAccountPermissionGroup < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterAccountPermissionGroup--;
+}
+
+buildUnnamed2932() {
+  var o = new core.List<api.AccountPermissionGroup>();
+  o.add(buildAccountPermissionGroup());
+  o.add(buildAccountPermissionGroup());
+  return o;
+}
+
+checkUnnamed2932(core.List<api.AccountPermissionGroup> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountPermissionGroup(o[0]);
+  checkAccountPermissionGroup(o[1]);
+}
+
+core.int buildCounterAccountPermissionGroupsListResponse = 0;
+buildAccountPermissionGroupsListResponse() {
+  var o = new api.AccountPermissionGroupsListResponse();
+  buildCounterAccountPermissionGroupsListResponse++;
+  if (buildCounterAccountPermissionGroupsListResponse < 3) {
+    o.accountPermissionGroups = buildUnnamed2932();
+    o.kind = "foo";
+  }
+  buildCounterAccountPermissionGroupsListResponse--;
+  return o;
+}
+
+checkAccountPermissionGroupsListResponse(
+    api.AccountPermissionGroupsListResponse o) {
+  buildCounterAccountPermissionGroupsListResponse++;
+  if (buildCounterAccountPermissionGroupsListResponse < 3) {
+    checkUnnamed2932(o.accountPermissionGroups);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAccountPermissionGroupsListResponse--;
+}
+
+buildUnnamed2933() {
+  var o = new core.List<api.AccountPermission>();
+  o.add(buildAccountPermission());
+  o.add(buildAccountPermission());
+  return o;
+}
+
+checkUnnamed2933(core.List<api.AccountPermission> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountPermission(o[0]);
+  checkAccountPermission(o[1]);
+}
+
+core.int buildCounterAccountPermissionsListResponse = 0;
+buildAccountPermissionsListResponse() {
+  var o = new api.AccountPermissionsListResponse();
+  buildCounterAccountPermissionsListResponse++;
+  if (buildCounterAccountPermissionsListResponse < 3) {
+    o.accountPermissions = buildUnnamed2933();
+    o.kind = "foo";
+  }
+  buildCounterAccountPermissionsListResponse--;
+  return o;
+}
+
+checkAccountPermissionsListResponse(api.AccountPermissionsListResponse o) {
+  buildCounterAccountPermissionsListResponse++;
+  if (buildCounterAccountPermissionsListResponse < 3) {
+    checkUnnamed2933(o.accountPermissions);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAccountPermissionsListResponse--;
+}
+
+core.int buildCounterAccountUserProfile = 0;
+buildAccountUserProfile() {
+  var o = new api.AccountUserProfile();
+  buildCounterAccountUserProfile++;
+  if (buildCounterAccountUserProfile < 3) {
+    o.accountId = "foo";
+    o.active = true;
+    o.advertiserFilter = buildObjectFilter();
+    o.campaignFilter = buildObjectFilter();
+    o.comments = "foo";
+    o.email = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.locale = "foo";
+    o.name = "foo";
+    o.siteFilter = buildObjectFilter();
+    o.subaccountId = "foo";
+    o.traffickerType = "foo";
+    o.userAccessType = "foo";
+    o.userRoleFilter = buildObjectFilter();
+    o.userRoleId = "foo";
+  }
+  buildCounterAccountUserProfile--;
+  return o;
+}
+
+checkAccountUserProfile(api.AccountUserProfile o) {
+  buildCounterAccountUserProfile++;
+  if (buildCounterAccountUserProfile < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.active, unittest.isTrue);
+    checkObjectFilter(o.advertiserFilter);
+    checkObjectFilter(o.campaignFilter);
+    unittest.expect(o.comments, unittest.equals('foo'));
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.locale, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkObjectFilter(o.siteFilter);
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    unittest.expect(o.traffickerType, unittest.equals('foo'));
+    unittest.expect(o.userAccessType, unittest.equals('foo'));
+    checkObjectFilter(o.userRoleFilter);
+    unittest.expect(o.userRoleId, unittest.equals('foo'));
+  }
+  buildCounterAccountUserProfile--;
+}
+
+buildUnnamed2934() {
+  var o = new core.List<api.AccountUserProfile>();
+  o.add(buildAccountUserProfile());
+  o.add(buildAccountUserProfile());
+  return o;
+}
+
+checkUnnamed2934(core.List<api.AccountUserProfile> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccountUserProfile(o[0]);
+  checkAccountUserProfile(o[1]);
+}
+
+core.int buildCounterAccountUserProfilesListResponse = 0;
+buildAccountUserProfilesListResponse() {
+  var o = new api.AccountUserProfilesListResponse();
+  buildCounterAccountUserProfilesListResponse++;
+  if (buildCounterAccountUserProfilesListResponse < 3) {
+    o.accountUserProfiles = buildUnnamed2934();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterAccountUserProfilesListResponse--;
+  return o;
+}
+
+checkAccountUserProfilesListResponse(api.AccountUserProfilesListResponse o) {
+  buildCounterAccountUserProfilesListResponse++;
+  if (buildCounterAccountUserProfilesListResponse < 3) {
+    checkUnnamed2934(o.accountUserProfiles);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterAccountUserProfilesListResponse--;
+}
+
+buildUnnamed2935() {
+  var o = new core.List<api.Account>();
+  o.add(buildAccount());
+  o.add(buildAccount());
+  return o;
+}
+
+checkUnnamed2935(core.List<api.Account> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccount(o[0]);
+  checkAccount(o[1]);
+}
+
+core.int buildCounterAccountsListResponse = 0;
+buildAccountsListResponse() {
+  var o = new api.AccountsListResponse();
+  buildCounterAccountsListResponse++;
+  if (buildCounterAccountsListResponse < 3) {
+    o.accounts = buildUnnamed2935();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterAccountsListResponse--;
+  return o;
+}
+
+checkAccountsListResponse(api.AccountsListResponse o) {
+  buildCounterAccountsListResponse++;
+  if (buildCounterAccountsListResponse < 3) {
+    checkUnnamed2935(o.accounts);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterAccountsListResponse--;
+}
+
+buildUnnamed2936() {
+  var o = new core.List<api.DimensionValue>();
+  o.add(buildDimensionValue());
+  o.add(buildDimensionValue());
+  return o;
+}
+
+checkUnnamed2936(core.List<api.DimensionValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimensionValue(o[0]);
+  checkDimensionValue(o[1]);
+}
+
+buildUnnamed2937() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2937(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterActivities = 0;
+buildActivities() {
+  var o = new api.Activities();
+  buildCounterActivities++;
+  if (buildCounterActivities < 3) {
+    o.filters = buildUnnamed2936();
+    o.kind = "foo";
+    o.metricNames = buildUnnamed2937();
+  }
+  buildCounterActivities--;
+  return o;
+}
+
+checkActivities(api.Activities o) {
+  buildCounterActivities++;
+  if (buildCounterActivities < 3) {
+    checkUnnamed2936(o.filters);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2937(o.metricNames);
+  }
+  buildCounterActivities--;
+}
+
+buildUnnamed2938() {
+  var o = new core.List<api.CreativeGroupAssignment>();
+  o.add(buildCreativeGroupAssignment());
+  o.add(buildCreativeGroupAssignment());
+  return o;
+}
+
+checkUnnamed2938(core.List<api.CreativeGroupAssignment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeGroupAssignment(o[0]);
+  checkCreativeGroupAssignment(o[1]);
+}
+
+buildUnnamed2939() {
+  var o = new core.List<api.EventTagOverride>();
+  o.add(buildEventTagOverride());
+  o.add(buildEventTagOverride());
+  return o;
+}
+
+checkUnnamed2939(core.List<api.EventTagOverride> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEventTagOverride(o[0]);
+  checkEventTagOverride(o[1]);
+}
+
+buildUnnamed2940() {
+  var o = new core.List<api.PlacementAssignment>();
+  o.add(buildPlacementAssignment());
+  o.add(buildPlacementAssignment());
+  return o;
+}
+
+checkUnnamed2940(core.List<api.PlacementAssignment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPlacementAssignment(o[0]);
+  checkPlacementAssignment(o[1]);
+}
+
+core.int buildCounterAd = 0;
+buildAd() {
+  var o = new api.Ad();
+  buildCounterAd++;
+  if (buildCounterAd < 3) {
+    o.accountId = "foo";
+    o.active = true;
+    o.advertiserId = "foo";
+    o.advertiserIdDimensionValue = buildDimensionValue();
+    o.archived = true;
+    o.audienceSegmentId = "foo";
+    o.campaignId = "foo";
+    o.campaignIdDimensionValue = buildDimensionValue();
+    o.clickThroughUrl = buildClickThroughUrl();
+    o.clickThroughUrlSuffixProperties = buildClickThroughUrlSuffixProperties();
+    o.comments = "foo";
+    o.compatibility = "foo";
+    o.createInfo = buildLastModifiedInfo();
+    o.creativeGroupAssignments = buildUnnamed2938();
+    o.creativeRotation = buildCreativeRotation();
+    o.dayPartTargeting = buildDayPartTargeting();
+    o.defaultClickThroughEventTagProperties =
+        buildDefaultClickThroughEventTagProperties();
+    o.deliverySchedule = buildDeliverySchedule();
+    o.dynamicClickTracker = true;
+    o.endTime = core.DateTime.parse("2002-02-27T14:01:02");
+    o.eventTagOverrides = buildUnnamed2939();
+    o.geoTargeting = buildGeoTargeting();
+    o.id = "foo";
+    o.idDimensionValue = buildDimensionValue();
+    o.keyValueTargetingExpression = buildKeyValueTargetingExpression();
+    o.kind = "foo";
+    o.languageTargeting = buildLanguageTargeting();
+    o.lastModifiedInfo = buildLastModifiedInfo();
+    o.name = "foo";
+    o.placementAssignments = buildUnnamed2940();
+    o.remarketingListExpression = buildListTargetingExpression();
+    o.size = buildSize();
+    o.sslCompliant = true;
+    o.sslRequired = true;
+    o.startTime = core.DateTime.parse("2002-02-27T14:01:02");
+    o.subaccountId = "foo";
+    o.targetingTemplateId = "foo";
+    o.technologyTargeting = buildTechnologyTargeting();
+    o.type = "foo";
+  }
+  buildCounterAd--;
+  return o;
+}
+
+checkAd(api.Ad o) {
+  buildCounterAd++;
+  if (buildCounterAd < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.active, unittest.isTrue);
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    checkDimensionValue(o.advertiserIdDimensionValue);
+    unittest.expect(o.archived, unittest.isTrue);
+    unittest.expect(o.audienceSegmentId, unittest.equals('foo'));
+    unittest.expect(o.campaignId, unittest.equals('foo'));
+    checkDimensionValue(o.campaignIdDimensionValue);
+    checkClickThroughUrl(o.clickThroughUrl);
+    checkClickThroughUrlSuffixProperties(o.clickThroughUrlSuffixProperties);
+    unittest.expect(o.comments, unittest.equals('foo'));
+    unittest.expect(o.compatibility, unittest.equals('foo'));
+    checkLastModifiedInfo(o.createInfo);
+    checkUnnamed2938(o.creativeGroupAssignments);
+    checkCreativeRotation(o.creativeRotation);
+    checkDayPartTargeting(o.dayPartTargeting);
+    checkDefaultClickThroughEventTagProperties(
+        o.defaultClickThroughEventTagProperties);
+    checkDeliverySchedule(o.deliverySchedule);
+    unittest.expect(o.dynamicClickTracker, unittest.isTrue);
+    unittest.expect(
+        o.endTime, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    checkUnnamed2939(o.eventTagOverrides);
+    checkGeoTargeting(o.geoTargeting);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkDimensionValue(o.idDimensionValue);
+    checkKeyValueTargetingExpression(o.keyValueTargetingExpression);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkLanguageTargeting(o.languageTargeting);
+    checkLastModifiedInfo(o.lastModifiedInfo);
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed2940(o.placementAssignments);
+    checkListTargetingExpression(o.remarketingListExpression);
+    checkSize(o.size);
+    unittest.expect(o.sslCompliant, unittest.isTrue);
+    unittest.expect(o.sslRequired, unittest.isTrue);
+    unittest.expect(o.startTime,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    unittest.expect(o.targetingTemplateId, unittest.equals('foo'));
+    checkTechnologyTargeting(o.technologyTargeting);
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterAd--;
+}
+
+core.int buildCounterAdBlockingConfiguration = 0;
+buildAdBlockingConfiguration() {
+  var o = new api.AdBlockingConfiguration();
+  buildCounterAdBlockingConfiguration++;
+  if (buildCounterAdBlockingConfiguration < 3) {
+    o.clickThroughUrl = "foo";
+    o.creativeBundleId = "foo";
+    o.enabled = true;
+    o.overrideClickThroughUrl = true;
+  }
+  buildCounterAdBlockingConfiguration--;
+  return o;
+}
+
+checkAdBlockingConfiguration(api.AdBlockingConfiguration o) {
+  buildCounterAdBlockingConfiguration++;
+  if (buildCounterAdBlockingConfiguration < 3) {
+    unittest.expect(o.clickThroughUrl, unittest.equals('foo'));
+    unittest.expect(o.creativeBundleId, unittest.equals('foo'));
+    unittest.expect(o.enabled, unittest.isTrue);
+    unittest.expect(o.overrideClickThroughUrl, unittest.isTrue);
+  }
+  buildCounterAdBlockingConfiguration--;
+}
+
+core.int buildCounterAdSlot = 0;
+buildAdSlot() {
+  var o = new api.AdSlot();
+  buildCounterAdSlot++;
+  if (buildCounterAdSlot < 3) {
+    o.comment = "foo";
+    o.compatibility = "foo";
+    o.height = "foo";
+    o.linkedPlacementId = "foo";
+    o.name = "foo";
+    o.paymentSourceType = "foo";
+    o.primary = true;
+    o.width = "foo";
+  }
+  buildCounterAdSlot--;
+  return o;
+}
+
+checkAdSlot(api.AdSlot o) {
+  buildCounterAdSlot++;
+  if (buildCounterAdSlot < 3) {
+    unittest.expect(o.comment, unittest.equals('foo'));
+    unittest.expect(o.compatibility, unittest.equals('foo'));
+    unittest.expect(o.height, unittest.equals('foo'));
+    unittest.expect(o.linkedPlacementId, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.paymentSourceType, unittest.equals('foo'));
+    unittest.expect(o.primary, unittest.isTrue);
+    unittest.expect(o.width, unittest.equals('foo'));
+  }
+  buildCounterAdSlot--;
+}
+
+buildUnnamed2941() {
+  var o = new core.List<api.Ad>();
+  o.add(buildAd());
+  o.add(buildAd());
+  return o;
+}
+
+checkUnnamed2941(core.List<api.Ad> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAd(o[0]);
+  checkAd(o[1]);
+}
+
+core.int buildCounterAdsListResponse = 0;
+buildAdsListResponse() {
+  var o = new api.AdsListResponse();
+  buildCounterAdsListResponse++;
+  if (buildCounterAdsListResponse < 3) {
+    o.ads = buildUnnamed2941();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterAdsListResponse--;
+  return o;
+}
+
+checkAdsListResponse(api.AdsListResponse o) {
+  buildCounterAdsListResponse++;
+  if (buildCounterAdsListResponse < 3) {
+    checkUnnamed2941(o.ads);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterAdsListResponse--;
+}
+
+core.int buildCounterAdvertiser = 0;
+buildAdvertiser() {
+  var o = new api.Advertiser();
+  buildCounterAdvertiser++;
+  if (buildCounterAdvertiser < 3) {
+    o.accountId = "foo";
+    o.advertiserGroupId = "foo";
+    o.clickThroughUrlSuffix = "foo";
+    o.defaultClickThroughEventTagId = "foo";
+    o.defaultEmail = "foo";
+    o.floodlightConfigurationId = "foo";
+    o.floodlightConfigurationIdDimensionValue = buildDimensionValue();
+    o.id = "foo";
+    o.idDimensionValue = buildDimensionValue();
+    o.kind = "foo";
+    o.name = "foo";
+    o.originalFloodlightConfigurationId = "foo";
+    o.status = "foo";
+    o.subaccountId = "foo";
+    o.suspended = true;
+  }
+  buildCounterAdvertiser--;
+  return o;
+}
+
+checkAdvertiser(api.Advertiser o) {
+  buildCounterAdvertiser++;
+  if (buildCounterAdvertiser < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.advertiserGroupId, unittest.equals('foo'));
+    unittest.expect(o.clickThroughUrlSuffix, unittest.equals('foo'));
+    unittest.expect(o.defaultClickThroughEventTagId, unittest.equals('foo'));
+    unittest.expect(o.defaultEmail, unittest.equals('foo'));
+    unittest.expect(o.floodlightConfigurationId, unittest.equals('foo'));
+    checkDimensionValue(o.floodlightConfigurationIdDimensionValue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkDimensionValue(o.idDimensionValue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(
+        o.originalFloodlightConfigurationId, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    unittest.expect(o.suspended, unittest.isTrue);
+  }
+  buildCounterAdvertiser--;
+}
+
+core.int buildCounterAdvertiserGroup = 0;
+buildAdvertiserGroup() {
+  var o = new api.AdvertiserGroup();
+  buildCounterAdvertiserGroup++;
+  if (buildCounterAdvertiserGroup < 3) {
+    o.accountId = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterAdvertiserGroup--;
+  return o;
+}
+
+checkAdvertiserGroup(api.AdvertiserGroup o) {
+  buildCounterAdvertiserGroup++;
+  if (buildCounterAdvertiserGroup < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterAdvertiserGroup--;
+}
+
+buildUnnamed2942() {
+  var o = new core.List<api.AdvertiserGroup>();
+  o.add(buildAdvertiserGroup());
+  o.add(buildAdvertiserGroup());
+  return o;
+}
+
+checkUnnamed2942(core.List<api.AdvertiserGroup> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAdvertiserGroup(o[0]);
+  checkAdvertiserGroup(o[1]);
+}
+
+core.int buildCounterAdvertiserGroupsListResponse = 0;
+buildAdvertiserGroupsListResponse() {
+  var o = new api.AdvertiserGroupsListResponse();
+  buildCounterAdvertiserGroupsListResponse++;
+  if (buildCounterAdvertiserGroupsListResponse < 3) {
+    o.advertiserGroups = buildUnnamed2942();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterAdvertiserGroupsListResponse--;
+  return o;
+}
+
+checkAdvertiserGroupsListResponse(api.AdvertiserGroupsListResponse o) {
+  buildCounterAdvertiserGroupsListResponse++;
+  if (buildCounterAdvertiserGroupsListResponse < 3) {
+    checkUnnamed2942(o.advertiserGroups);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterAdvertiserGroupsListResponse--;
+}
+
+buildUnnamed2943() {
+  var o = new core.List<api.Advertiser>();
+  o.add(buildAdvertiser());
+  o.add(buildAdvertiser());
+  return o;
+}
+
+checkUnnamed2943(core.List<api.Advertiser> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAdvertiser(o[0]);
+  checkAdvertiser(o[1]);
+}
+
+core.int buildCounterAdvertisersListResponse = 0;
+buildAdvertisersListResponse() {
+  var o = new api.AdvertisersListResponse();
+  buildCounterAdvertisersListResponse++;
+  if (buildCounterAdvertisersListResponse < 3) {
+    o.advertisers = buildUnnamed2943();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterAdvertisersListResponse--;
+  return o;
+}
+
+checkAdvertisersListResponse(api.AdvertisersListResponse o) {
+  buildCounterAdvertisersListResponse++;
+  if (buildCounterAdvertisersListResponse < 3) {
+    checkUnnamed2943(o.advertisers);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterAdvertisersListResponse--;
+}
+
+core.int buildCounterAudienceSegment = 0;
+buildAudienceSegment() {
+  var o = new api.AudienceSegment();
+  buildCounterAudienceSegment++;
+  if (buildCounterAudienceSegment < 3) {
+    o.allocation = 42;
+    o.id = "foo";
+    o.name = "foo";
+  }
+  buildCounterAudienceSegment--;
+  return o;
+}
+
+checkAudienceSegment(api.AudienceSegment o) {
+  buildCounterAudienceSegment++;
+  if (buildCounterAudienceSegment < 3) {
+    unittest.expect(o.allocation, unittest.equals(42));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterAudienceSegment--;
+}
+
+buildUnnamed2944() {
+  var o = new core.List<api.AudienceSegment>();
+  o.add(buildAudienceSegment());
+  o.add(buildAudienceSegment());
+  return o;
+}
+
+checkUnnamed2944(core.List<api.AudienceSegment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAudienceSegment(o[0]);
+  checkAudienceSegment(o[1]);
+}
+
+core.int buildCounterAudienceSegmentGroup = 0;
+buildAudienceSegmentGroup() {
+  var o = new api.AudienceSegmentGroup();
+  buildCounterAudienceSegmentGroup++;
+  if (buildCounterAudienceSegmentGroup < 3) {
+    o.audienceSegments = buildUnnamed2944();
+    o.id = "foo";
+    o.name = "foo";
+  }
+  buildCounterAudienceSegmentGroup--;
+  return o;
+}
+
+checkAudienceSegmentGroup(api.AudienceSegmentGroup o) {
+  buildCounterAudienceSegmentGroup++;
+  if (buildCounterAudienceSegmentGroup < 3) {
+    checkUnnamed2944(o.audienceSegments);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterAudienceSegmentGroup--;
+}
+
+core.int buildCounterBrowser = 0;
+buildBrowser() {
+  var o = new api.Browser();
+  buildCounterBrowser++;
+  if (buildCounterBrowser < 3) {
+    o.browserVersionId = "foo";
+    o.dartId = "foo";
+    o.kind = "foo";
+    o.majorVersion = "foo";
+    o.minorVersion = "foo";
+    o.name = "foo";
+  }
+  buildCounterBrowser--;
+  return o;
+}
+
+checkBrowser(api.Browser o) {
+  buildCounterBrowser++;
+  if (buildCounterBrowser < 3) {
+    unittest.expect(o.browserVersionId, unittest.equals('foo'));
+    unittest.expect(o.dartId, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.majorVersion, unittest.equals('foo'));
+    unittest.expect(o.minorVersion, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterBrowser--;
+}
+
+buildUnnamed2945() {
+  var o = new core.List<api.Browser>();
+  o.add(buildBrowser());
+  o.add(buildBrowser());
+  return o;
+}
+
+checkUnnamed2945(core.List<api.Browser> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBrowser(o[0]);
+  checkBrowser(o[1]);
+}
+
+core.int buildCounterBrowsersListResponse = 0;
+buildBrowsersListResponse() {
+  var o = new api.BrowsersListResponse();
+  buildCounterBrowsersListResponse++;
+  if (buildCounterBrowsersListResponse < 3) {
+    o.browsers = buildUnnamed2945();
+    o.kind = "foo";
+  }
+  buildCounterBrowsersListResponse--;
+  return o;
+}
+
+checkBrowsersListResponse(api.BrowsersListResponse o) {
+  buildCounterBrowsersListResponse++;
+  if (buildCounterBrowsersListResponse < 3) {
+    checkUnnamed2945(o.browsers);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterBrowsersListResponse--;
+}
+
+buildUnnamed2946() {
+  var o = new core.List<api.CreativeOptimizationConfiguration>();
+  o.add(buildCreativeOptimizationConfiguration());
+  o.add(buildCreativeOptimizationConfiguration());
+  return o;
+}
+
+checkUnnamed2946(core.List<api.CreativeOptimizationConfiguration> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeOptimizationConfiguration(o[0]);
+  checkCreativeOptimizationConfiguration(o[1]);
+}
+
+buildUnnamed2947() {
+  var o = new core.List<api.AudienceSegmentGroup>();
+  o.add(buildAudienceSegmentGroup());
+  o.add(buildAudienceSegmentGroup());
+  return o;
+}
+
+checkUnnamed2947(core.List<api.AudienceSegmentGroup> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAudienceSegmentGroup(o[0]);
+  checkAudienceSegmentGroup(o[1]);
+}
+
+buildUnnamed2948() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2948(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2949() {
+  var o = new core.List<api.EventTagOverride>();
+  o.add(buildEventTagOverride());
+  o.add(buildEventTagOverride());
+  return o;
+}
+
+checkUnnamed2949(core.List<api.EventTagOverride> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEventTagOverride(o[0]);
+  checkEventTagOverride(o[1]);
+}
+
+buildUnnamed2950() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2950(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterCampaign = 0;
+buildCampaign() {
+  var o = new api.Campaign();
+  buildCounterCampaign++;
+  if (buildCounterCampaign < 3) {
+    o.accountId = "foo";
+    o.adBlockingConfiguration = buildAdBlockingConfiguration();
+    o.additionalCreativeOptimizationConfigurations = buildUnnamed2946();
+    o.advertiserGroupId = "foo";
+    o.advertiserId = "foo";
+    o.advertiserIdDimensionValue = buildDimensionValue();
+    o.archived = true;
+    o.audienceSegmentGroups = buildUnnamed2947();
+    o.billingInvoiceCode = "foo";
+    o.clickThroughUrlSuffixProperties = buildClickThroughUrlSuffixProperties();
+    o.comment = "foo";
+    o.createInfo = buildLastModifiedInfo();
+    o.creativeGroupIds = buildUnnamed2948();
+    o.creativeOptimizationConfiguration =
+        buildCreativeOptimizationConfiguration();
+    o.defaultClickThroughEventTagProperties =
+        buildDefaultClickThroughEventTagProperties();
+    o.endDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.eventTagOverrides = buildUnnamed2949();
+    o.externalId = "foo";
+    o.id = "foo";
+    o.idDimensionValue = buildDimensionValue();
+    o.kind = "foo";
+    o.lastModifiedInfo = buildLastModifiedInfo();
+    o.lookbackConfiguration = buildLookbackConfiguration();
+    o.name = "foo";
+    o.nielsenOcrEnabled = true;
+    o.startDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.subaccountId = "foo";
+    o.traffickerEmails = buildUnnamed2950();
+  }
+  buildCounterCampaign--;
+  return o;
+}
+
+checkCampaign(api.Campaign o) {
+  buildCounterCampaign++;
+  if (buildCounterCampaign < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkAdBlockingConfiguration(o.adBlockingConfiguration);
+    checkUnnamed2946(o.additionalCreativeOptimizationConfigurations);
+    unittest.expect(o.advertiserGroupId, unittest.equals('foo'));
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    checkDimensionValue(o.advertiserIdDimensionValue);
+    unittest.expect(o.archived, unittest.isTrue);
+    checkUnnamed2947(o.audienceSegmentGroups);
+    unittest.expect(o.billingInvoiceCode, unittest.equals('foo'));
+    checkClickThroughUrlSuffixProperties(o.clickThroughUrlSuffixProperties);
+    unittest.expect(o.comment, unittest.equals('foo'));
+    checkLastModifiedInfo(o.createInfo);
+    checkUnnamed2948(o.creativeGroupIds);
+    checkCreativeOptimizationConfiguration(o.creativeOptimizationConfiguration);
+    checkDefaultClickThroughEventTagProperties(
+        o.defaultClickThroughEventTagProperties);
+    unittest.expect(
+        o.endDate, unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    checkUnnamed2949(o.eventTagOverrides);
+    unittest.expect(o.externalId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkDimensionValue(o.idDimensionValue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkLastModifiedInfo(o.lastModifiedInfo);
+    checkLookbackConfiguration(o.lookbackConfiguration);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.nielsenOcrEnabled, unittest.isTrue);
+    unittest.expect(o.startDate,
+        unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    checkUnnamed2950(o.traffickerEmails);
+  }
+  buildCounterCampaign--;
+}
+
+core.int buildCounterCampaignCreativeAssociation = 0;
+buildCampaignCreativeAssociation() {
+  var o = new api.CampaignCreativeAssociation();
+  buildCounterCampaignCreativeAssociation++;
+  if (buildCounterCampaignCreativeAssociation < 3) {
+    o.creativeId = "foo";
+    o.kind = "foo";
+  }
+  buildCounterCampaignCreativeAssociation--;
+  return o;
+}
+
+checkCampaignCreativeAssociation(api.CampaignCreativeAssociation o) {
+  buildCounterCampaignCreativeAssociation++;
+  if (buildCounterCampaignCreativeAssociation < 3) {
+    unittest.expect(o.creativeId, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterCampaignCreativeAssociation--;
+}
+
+buildUnnamed2951() {
+  var o = new core.List<api.CampaignCreativeAssociation>();
+  o.add(buildCampaignCreativeAssociation());
+  o.add(buildCampaignCreativeAssociation());
+  return o;
+}
+
+checkUnnamed2951(core.List<api.CampaignCreativeAssociation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCampaignCreativeAssociation(o[0]);
+  checkCampaignCreativeAssociation(o[1]);
+}
+
+core.int buildCounterCampaignCreativeAssociationsListResponse = 0;
+buildCampaignCreativeAssociationsListResponse() {
+  var o = new api.CampaignCreativeAssociationsListResponse();
+  buildCounterCampaignCreativeAssociationsListResponse++;
+  if (buildCounterCampaignCreativeAssociationsListResponse < 3) {
+    o.campaignCreativeAssociations = buildUnnamed2951();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterCampaignCreativeAssociationsListResponse--;
+  return o;
+}
+
+checkCampaignCreativeAssociationsListResponse(
+    api.CampaignCreativeAssociationsListResponse o) {
+  buildCounterCampaignCreativeAssociationsListResponse++;
+  if (buildCounterCampaignCreativeAssociationsListResponse < 3) {
+    checkUnnamed2951(o.campaignCreativeAssociations);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterCampaignCreativeAssociationsListResponse--;
+}
+
+buildUnnamed2952() {
+  var o = new core.List<api.Campaign>();
+  o.add(buildCampaign());
+  o.add(buildCampaign());
+  return o;
+}
+
+checkUnnamed2952(core.List<api.Campaign> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCampaign(o[0]);
+  checkCampaign(o[1]);
+}
+
+core.int buildCounterCampaignsListResponse = 0;
+buildCampaignsListResponse() {
+  var o = new api.CampaignsListResponse();
+  buildCounterCampaignsListResponse++;
+  if (buildCounterCampaignsListResponse < 3) {
+    o.campaigns = buildUnnamed2952();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterCampaignsListResponse--;
+  return o;
+}
+
+checkCampaignsListResponse(api.CampaignsListResponse o) {
+  buildCounterCampaignsListResponse++;
+  if (buildCounterCampaignsListResponse < 3) {
+    checkUnnamed2952(o.campaigns);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterCampaignsListResponse--;
+}
+
+core.int buildCounterChangeLog = 0;
+buildChangeLog() {
+  var o = new api.ChangeLog();
+  buildCounterChangeLog++;
+  if (buildCounterChangeLog < 3) {
+    o.accountId = "foo";
+    o.action = "foo";
+    o.changeTime = core.DateTime.parse("2002-02-27T14:01:02");
+    o.fieldName = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.newValue = "foo";
+    o.objectId = "foo";
+    o.objectType = "foo";
+    o.oldValue = "foo";
+    o.subaccountId = "foo";
+    o.transactionId = "foo";
+    o.userProfileId = "foo";
+    o.userProfileName = "foo";
+  }
+  buildCounterChangeLog--;
+  return o;
+}
+
+checkChangeLog(api.ChangeLog o) {
+  buildCounterChangeLog++;
+  if (buildCounterChangeLog < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.action, unittest.equals('foo'));
+    unittest.expect(o.changeTime,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.fieldName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.newValue, unittest.equals('foo'));
+    unittest.expect(o.objectId, unittest.equals('foo'));
+    unittest.expect(o.objectType, unittest.equals('foo'));
+    unittest.expect(o.oldValue, unittest.equals('foo'));
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    unittest.expect(o.transactionId, unittest.equals('foo'));
+    unittest.expect(o.userProfileId, unittest.equals('foo'));
+    unittest.expect(o.userProfileName, unittest.equals('foo'));
+  }
+  buildCounterChangeLog--;
+}
+
+buildUnnamed2953() {
+  var o = new core.List<api.ChangeLog>();
+  o.add(buildChangeLog());
+  o.add(buildChangeLog());
+  return o;
+}
+
+checkUnnamed2953(core.List<api.ChangeLog> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkChangeLog(o[0]);
+  checkChangeLog(o[1]);
+}
+
+core.int buildCounterChangeLogsListResponse = 0;
+buildChangeLogsListResponse() {
+  var o = new api.ChangeLogsListResponse();
+  buildCounterChangeLogsListResponse++;
+  if (buildCounterChangeLogsListResponse < 3) {
+    o.changeLogs = buildUnnamed2953();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterChangeLogsListResponse--;
+  return o;
+}
+
+checkChangeLogsListResponse(api.ChangeLogsListResponse o) {
+  buildCounterChangeLogsListResponse++;
+  if (buildCounterChangeLogsListResponse < 3) {
+    checkUnnamed2953(o.changeLogs);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterChangeLogsListResponse--;
+}
+
+buildUnnamed2954() {
+  var o = new core.List<api.City>();
+  o.add(buildCity());
+  o.add(buildCity());
+  return o;
+}
+
+checkUnnamed2954(core.List<api.City> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCity(o[0]);
+  checkCity(o[1]);
+}
+
+core.int buildCounterCitiesListResponse = 0;
+buildCitiesListResponse() {
+  var o = new api.CitiesListResponse();
+  buildCounterCitiesListResponse++;
+  if (buildCounterCitiesListResponse < 3) {
+    o.cities = buildUnnamed2954();
+    o.kind = "foo";
+  }
+  buildCounterCitiesListResponse--;
+  return o;
+}
+
+checkCitiesListResponse(api.CitiesListResponse o) {
+  buildCounterCitiesListResponse++;
+  if (buildCounterCitiesListResponse < 3) {
+    checkUnnamed2954(o.cities);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterCitiesListResponse--;
+}
+
+core.int buildCounterCity = 0;
+buildCity() {
+  var o = new api.City();
+  buildCounterCity++;
+  if (buildCounterCity < 3) {
+    o.countryCode = "foo";
+    o.countryDartId = "foo";
+    o.dartId = "foo";
+    o.kind = "foo";
+    o.metroCode = "foo";
+    o.metroDmaId = "foo";
+    o.name = "foo";
+    o.regionCode = "foo";
+    o.regionDartId = "foo";
+  }
+  buildCounterCity--;
+  return o;
+}
+
+checkCity(api.City o) {
+  buildCounterCity++;
+  if (buildCounterCity < 3) {
+    unittest.expect(o.countryCode, unittest.equals('foo'));
+    unittest.expect(o.countryDartId, unittest.equals('foo'));
+    unittest.expect(o.dartId, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.metroCode, unittest.equals('foo'));
+    unittest.expect(o.metroDmaId, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.regionCode, unittest.equals('foo'));
+    unittest.expect(o.regionDartId, unittest.equals('foo'));
+  }
+  buildCounterCity--;
+}
+
+core.int buildCounterClickTag = 0;
+buildClickTag() {
+  var o = new api.ClickTag();
+  buildCounterClickTag++;
+  if (buildCounterClickTag < 3) {
+    o.eventName = "foo";
+    o.name = "foo";
+    o.value = "foo";
+  }
+  buildCounterClickTag--;
+  return o;
+}
+
+checkClickTag(api.ClickTag o) {
+  buildCounterClickTag++;
+  if (buildCounterClickTag < 3) {
+    unittest.expect(o.eventName, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterClickTag--;
+}
+
+core.int buildCounterClickThroughUrl = 0;
+buildClickThroughUrl() {
+  var o = new api.ClickThroughUrl();
+  buildCounterClickThroughUrl++;
+  if (buildCounterClickThroughUrl < 3) {
+    o.computedClickThroughUrl = "foo";
+    o.customClickThroughUrl = "foo";
+    o.defaultLandingPage = true;
+    o.landingPageId = "foo";
+  }
+  buildCounterClickThroughUrl--;
+  return o;
+}
+
+checkClickThroughUrl(api.ClickThroughUrl o) {
+  buildCounterClickThroughUrl++;
+  if (buildCounterClickThroughUrl < 3) {
+    unittest.expect(o.computedClickThroughUrl, unittest.equals('foo'));
+    unittest.expect(o.customClickThroughUrl, unittest.equals('foo'));
+    unittest.expect(o.defaultLandingPage, unittest.isTrue);
+    unittest.expect(o.landingPageId, unittest.equals('foo'));
+  }
+  buildCounterClickThroughUrl--;
+}
+
+core.int buildCounterClickThroughUrlSuffixProperties = 0;
+buildClickThroughUrlSuffixProperties() {
+  var o = new api.ClickThroughUrlSuffixProperties();
+  buildCounterClickThroughUrlSuffixProperties++;
+  if (buildCounterClickThroughUrlSuffixProperties < 3) {
+    o.clickThroughUrlSuffix = "foo";
+    o.overrideInheritedSuffix = true;
+  }
+  buildCounterClickThroughUrlSuffixProperties--;
+  return o;
+}
+
+checkClickThroughUrlSuffixProperties(api.ClickThroughUrlSuffixProperties o) {
+  buildCounterClickThroughUrlSuffixProperties++;
+  if (buildCounterClickThroughUrlSuffixProperties < 3) {
+    unittest.expect(o.clickThroughUrlSuffix, unittest.equals('foo'));
+    unittest.expect(o.overrideInheritedSuffix, unittest.isTrue);
+  }
+  buildCounterClickThroughUrlSuffixProperties--;
+}
+
+core.int buildCounterCompanionClickThroughOverride = 0;
+buildCompanionClickThroughOverride() {
+  var o = new api.CompanionClickThroughOverride();
+  buildCounterCompanionClickThroughOverride++;
+  if (buildCounterCompanionClickThroughOverride < 3) {
+    o.clickThroughUrl = buildClickThroughUrl();
+    o.creativeId = "foo";
+  }
+  buildCounterCompanionClickThroughOverride--;
+  return o;
+}
+
+checkCompanionClickThroughOverride(api.CompanionClickThroughOverride o) {
+  buildCounterCompanionClickThroughOverride++;
+  if (buildCounterCompanionClickThroughOverride < 3) {
+    checkClickThroughUrl(o.clickThroughUrl);
+    unittest.expect(o.creativeId, unittest.equals('foo'));
+  }
+  buildCounterCompanionClickThroughOverride--;
+}
+
+buildUnnamed2955() {
+  var o = new core.List<api.Size>();
+  o.add(buildSize());
+  o.add(buildSize());
+  return o;
+}
+
+checkUnnamed2955(core.List<api.Size> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSize(o[0]);
+  checkSize(o[1]);
+}
+
+core.int buildCounterCompanionSetting = 0;
+buildCompanionSetting() {
+  var o = new api.CompanionSetting();
+  buildCounterCompanionSetting++;
+  if (buildCounterCompanionSetting < 3) {
+    o.companionsDisabled = true;
+    o.enabledSizes = buildUnnamed2955();
+    o.imageOnly = true;
+    o.kind = "foo";
+  }
+  buildCounterCompanionSetting--;
+  return o;
+}
+
+checkCompanionSetting(api.CompanionSetting o) {
+  buildCounterCompanionSetting++;
+  if (buildCounterCompanionSetting < 3) {
+    unittest.expect(o.companionsDisabled, unittest.isTrue);
+    checkUnnamed2955(o.enabledSizes);
+    unittest.expect(o.imageOnly, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterCompanionSetting--;
+}
+
+core.int buildCounterCompatibleFields = 0;
+buildCompatibleFields() {
+  var o = new api.CompatibleFields();
+  buildCounterCompatibleFields++;
+  if (buildCounterCompatibleFields < 3) {
+    o.crossDimensionReachReportCompatibleFields =
+        buildCrossDimensionReachReportCompatibleFields();
+    o.floodlightReportCompatibleFields =
+        buildFloodlightReportCompatibleFields();
+    o.kind = "foo";
+    o.pathToConversionReportCompatibleFields =
+        buildPathToConversionReportCompatibleFields();
+    o.reachReportCompatibleFields = buildReachReportCompatibleFields();
+    o.reportCompatibleFields = buildReportCompatibleFields();
+  }
+  buildCounterCompatibleFields--;
+  return o;
+}
+
+checkCompatibleFields(api.CompatibleFields o) {
+  buildCounterCompatibleFields++;
+  if (buildCounterCompatibleFields < 3) {
+    checkCrossDimensionReachReportCompatibleFields(
+        o.crossDimensionReachReportCompatibleFields);
+    checkFloodlightReportCompatibleFields(o.floodlightReportCompatibleFields);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkPathToConversionReportCompatibleFields(
+        o.pathToConversionReportCompatibleFields);
+    checkReachReportCompatibleFields(o.reachReportCompatibleFields);
+    checkReportCompatibleFields(o.reportCompatibleFields);
+  }
+  buildCounterCompatibleFields--;
+}
+
+core.int buildCounterConnectionType = 0;
+buildConnectionType() {
+  var o = new api.ConnectionType();
+  buildCounterConnectionType++;
+  if (buildCounterConnectionType < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterConnectionType--;
+  return o;
+}
+
+checkConnectionType(api.ConnectionType o) {
+  buildCounterConnectionType++;
+  if (buildCounterConnectionType < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterConnectionType--;
+}
+
+buildUnnamed2956() {
+  var o = new core.List<api.ConnectionType>();
+  o.add(buildConnectionType());
+  o.add(buildConnectionType());
+  return o;
+}
+
+checkUnnamed2956(core.List<api.ConnectionType> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkConnectionType(o[0]);
+  checkConnectionType(o[1]);
+}
+
+core.int buildCounterConnectionTypesListResponse = 0;
+buildConnectionTypesListResponse() {
+  var o = new api.ConnectionTypesListResponse();
+  buildCounterConnectionTypesListResponse++;
+  if (buildCounterConnectionTypesListResponse < 3) {
+    o.connectionTypes = buildUnnamed2956();
+    o.kind = "foo";
+  }
+  buildCounterConnectionTypesListResponse--;
+  return o;
+}
+
+checkConnectionTypesListResponse(api.ConnectionTypesListResponse o) {
+  buildCounterConnectionTypesListResponse++;
+  if (buildCounterConnectionTypesListResponse < 3) {
+    checkUnnamed2956(o.connectionTypes);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterConnectionTypesListResponse--;
+}
+
+buildUnnamed2957() {
+  var o = new core.List<api.ContentCategory>();
+  o.add(buildContentCategory());
+  o.add(buildContentCategory());
+  return o;
+}
+
+checkUnnamed2957(core.List<api.ContentCategory> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContentCategory(o[0]);
+  checkContentCategory(o[1]);
+}
+
+core.int buildCounterContentCategoriesListResponse = 0;
+buildContentCategoriesListResponse() {
+  var o = new api.ContentCategoriesListResponse();
+  buildCounterContentCategoriesListResponse++;
+  if (buildCounterContentCategoriesListResponse < 3) {
+    o.contentCategories = buildUnnamed2957();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterContentCategoriesListResponse--;
+  return o;
+}
+
+checkContentCategoriesListResponse(api.ContentCategoriesListResponse o) {
+  buildCounterContentCategoriesListResponse++;
+  if (buildCounterContentCategoriesListResponse < 3) {
+    checkUnnamed2957(o.contentCategories);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterContentCategoriesListResponse--;
+}
+
+core.int buildCounterContentCategory = 0;
+buildContentCategory() {
+  var o = new api.ContentCategory();
+  buildCounterContentCategory++;
+  if (buildCounterContentCategory < 3) {
+    o.accountId = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterContentCategory--;
+  return o;
+}
+
+checkContentCategory(api.ContentCategory o) {
+  buildCounterContentCategory++;
+  if (buildCounterContentCategory < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterContentCategory--;
+}
+
+buildUnnamed2958() {
+  var o = new core.List<api.CustomFloodlightVariable>();
+  o.add(buildCustomFloodlightVariable());
+  o.add(buildCustomFloodlightVariable());
+  return o;
+}
+
+checkUnnamed2958(core.List<api.CustomFloodlightVariable> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCustomFloodlightVariable(o[0]);
+  checkCustomFloodlightVariable(o[1]);
+}
+
+buildUnnamed2959() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2959(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterConversion = 0;
+buildConversion() {
+  var o = new api.Conversion();
+  buildCounterConversion++;
+  if (buildCounterConversion < 3) {
+    o.childDirectedTreatment = true;
+    o.customVariables = buildUnnamed2958();
+    o.encryptedUserId = "foo";
+    o.encryptedUserIdCandidates = buildUnnamed2959();
+    o.floodlightActivityId = "foo";
+    o.floodlightConfigurationId = "foo";
+    o.gclid = "foo";
+    o.kind = "foo";
+    o.limitAdTracking = true;
+    o.mobileDeviceId = "foo";
+    o.ordinal = "foo";
+    o.quantity = "foo";
+    o.timestampMicros = "foo";
+    o.value = 42.0;
+  }
+  buildCounterConversion--;
+  return o;
+}
+
+checkConversion(api.Conversion o) {
+  buildCounterConversion++;
+  if (buildCounterConversion < 3) {
+    unittest.expect(o.childDirectedTreatment, unittest.isTrue);
+    checkUnnamed2958(o.customVariables);
+    unittest.expect(o.encryptedUserId, unittest.equals('foo'));
+    checkUnnamed2959(o.encryptedUserIdCandidates);
+    unittest.expect(o.floodlightActivityId, unittest.equals('foo'));
+    unittest.expect(o.floodlightConfigurationId, unittest.equals('foo'));
+    unittest.expect(o.gclid, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.limitAdTracking, unittest.isTrue);
+    unittest.expect(o.mobileDeviceId, unittest.equals('foo'));
+    unittest.expect(o.ordinal, unittest.equals('foo'));
+    unittest.expect(o.quantity, unittest.equals('foo'));
+    unittest.expect(o.timestampMicros, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals(42.0));
+  }
+  buildCounterConversion--;
+}
+
+core.int buildCounterConversionError = 0;
+buildConversionError() {
+  var o = new api.ConversionError();
+  buildCounterConversionError++;
+  if (buildCounterConversionError < 3) {
+    o.code = "foo";
+    o.kind = "foo";
+    o.message = "foo";
+  }
+  buildCounterConversionError--;
+  return o;
+}
+
+checkConversionError(api.ConversionError o) {
+  buildCounterConversionError++;
+  if (buildCounterConversionError < 3) {
+    unittest.expect(o.code, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterConversionError--;
+}
+
+buildUnnamed2960() {
+  var o = new core.List<api.ConversionError>();
+  o.add(buildConversionError());
+  o.add(buildConversionError());
+  return o;
+}
+
+checkUnnamed2960(core.List<api.ConversionError> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkConversionError(o[0]);
+  checkConversionError(o[1]);
+}
+
+core.int buildCounterConversionStatus = 0;
+buildConversionStatus() {
+  var o = new api.ConversionStatus();
+  buildCounterConversionStatus++;
+  if (buildCounterConversionStatus < 3) {
+    o.conversion = buildConversion();
+    o.errors = buildUnnamed2960();
+    o.kind = "foo";
+  }
+  buildCounterConversionStatus--;
+  return o;
+}
+
+checkConversionStatus(api.ConversionStatus o) {
+  buildCounterConversionStatus++;
+  if (buildCounterConversionStatus < 3) {
+    checkConversion(o.conversion);
+    checkUnnamed2960(o.errors);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterConversionStatus--;
+}
+
+buildUnnamed2961() {
+  var o = new core.List<api.Conversion>();
+  o.add(buildConversion());
+  o.add(buildConversion());
+  return o;
+}
+
+checkUnnamed2961(core.List<api.Conversion> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkConversion(o[0]);
+  checkConversion(o[1]);
+}
+
+core.int buildCounterConversionsBatchInsertRequest = 0;
+buildConversionsBatchInsertRequest() {
+  var o = new api.ConversionsBatchInsertRequest();
+  buildCounterConversionsBatchInsertRequest++;
+  if (buildCounterConversionsBatchInsertRequest < 3) {
+    o.conversions = buildUnnamed2961();
+    o.encryptionInfo = buildEncryptionInfo();
+    o.kind = "foo";
+  }
+  buildCounterConversionsBatchInsertRequest--;
+  return o;
+}
+
+checkConversionsBatchInsertRequest(api.ConversionsBatchInsertRequest o) {
+  buildCounterConversionsBatchInsertRequest++;
+  if (buildCounterConversionsBatchInsertRequest < 3) {
+    checkUnnamed2961(o.conversions);
+    checkEncryptionInfo(o.encryptionInfo);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterConversionsBatchInsertRequest--;
+}
+
+buildUnnamed2962() {
+  var o = new core.List<api.ConversionStatus>();
+  o.add(buildConversionStatus());
+  o.add(buildConversionStatus());
+  return o;
+}
+
+checkUnnamed2962(core.List<api.ConversionStatus> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkConversionStatus(o[0]);
+  checkConversionStatus(o[1]);
+}
+
+core.int buildCounterConversionsBatchInsertResponse = 0;
+buildConversionsBatchInsertResponse() {
+  var o = new api.ConversionsBatchInsertResponse();
+  buildCounterConversionsBatchInsertResponse++;
+  if (buildCounterConversionsBatchInsertResponse < 3) {
+    o.hasFailures = true;
+    o.kind = "foo";
+    o.status = buildUnnamed2962();
+  }
+  buildCounterConversionsBatchInsertResponse--;
+  return o;
+}
+
+checkConversionsBatchInsertResponse(api.ConversionsBatchInsertResponse o) {
+  buildCounterConversionsBatchInsertResponse++;
+  if (buildCounterConversionsBatchInsertResponse < 3) {
+    unittest.expect(o.hasFailures, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2962(o.status);
+  }
+  buildCounterConversionsBatchInsertResponse--;
+}
+
+buildUnnamed2963() {
+  var o = new core.List<api.Conversion>();
+  o.add(buildConversion());
+  o.add(buildConversion());
+  return o;
+}
+
+checkUnnamed2963(core.List<api.Conversion> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkConversion(o[0]);
+  checkConversion(o[1]);
+}
+
+core.int buildCounterConversionsBatchUpdateRequest = 0;
+buildConversionsBatchUpdateRequest() {
+  var o = new api.ConversionsBatchUpdateRequest();
+  buildCounterConversionsBatchUpdateRequest++;
+  if (buildCounterConversionsBatchUpdateRequest < 3) {
+    o.conversions = buildUnnamed2963();
+    o.encryptionInfo = buildEncryptionInfo();
+    o.kind = "foo";
+  }
+  buildCounterConversionsBatchUpdateRequest--;
+  return o;
+}
+
+checkConversionsBatchUpdateRequest(api.ConversionsBatchUpdateRequest o) {
+  buildCounterConversionsBatchUpdateRequest++;
+  if (buildCounterConversionsBatchUpdateRequest < 3) {
+    checkUnnamed2963(o.conversions);
+    checkEncryptionInfo(o.encryptionInfo);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterConversionsBatchUpdateRequest--;
+}
+
+buildUnnamed2964() {
+  var o = new core.List<api.ConversionStatus>();
+  o.add(buildConversionStatus());
+  o.add(buildConversionStatus());
+  return o;
+}
+
+checkUnnamed2964(core.List<api.ConversionStatus> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkConversionStatus(o[0]);
+  checkConversionStatus(o[1]);
+}
+
+core.int buildCounterConversionsBatchUpdateResponse = 0;
+buildConversionsBatchUpdateResponse() {
+  var o = new api.ConversionsBatchUpdateResponse();
+  buildCounterConversionsBatchUpdateResponse++;
+  if (buildCounterConversionsBatchUpdateResponse < 3) {
+    o.hasFailures = true;
+    o.kind = "foo";
+    o.status = buildUnnamed2964();
+  }
+  buildCounterConversionsBatchUpdateResponse--;
+  return o;
+}
+
+checkConversionsBatchUpdateResponse(api.ConversionsBatchUpdateResponse o) {
+  buildCounterConversionsBatchUpdateResponse++;
+  if (buildCounterConversionsBatchUpdateResponse < 3) {
+    unittest.expect(o.hasFailures, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2964(o.status);
+  }
+  buildCounterConversionsBatchUpdateResponse--;
+}
+
+buildUnnamed2965() {
+  var o = new core.List<api.Country>();
+  o.add(buildCountry());
+  o.add(buildCountry());
+  return o;
+}
+
+checkUnnamed2965(core.List<api.Country> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCountry(o[0]);
+  checkCountry(o[1]);
+}
+
+core.int buildCounterCountriesListResponse = 0;
+buildCountriesListResponse() {
+  var o = new api.CountriesListResponse();
+  buildCounterCountriesListResponse++;
+  if (buildCounterCountriesListResponse < 3) {
+    o.countries = buildUnnamed2965();
+    o.kind = "foo";
+  }
+  buildCounterCountriesListResponse--;
+  return o;
+}
+
+checkCountriesListResponse(api.CountriesListResponse o) {
+  buildCounterCountriesListResponse++;
+  if (buildCounterCountriesListResponse < 3) {
+    checkUnnamed2965(o.countries);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterCountriesListResponse--;
+}
+
+core.int buildCounterCountry = 0;
+buildCountry() {
+  var o = new api.Country();
+  buildCounterCountry++;
+  if (buildCounterCountry < 3) {
+    o.countryCode = "foo";
+    o.dartId = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.sslEnabled = true;
+  }
+  buildCounterCountry--;
+  return o;
+}
+
+checkCountry(api.Country o) {
+  buildCounterCountry++;
+  if (buildCounterCountry < 3) {
+    unittest.expect(o.countryCode, unittest.equals('foo'));
+    unittest.expect(o.dartId, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.sslEnabled, unittest.isTrue);
+  }
+  buildCounterCountry--;
+}
+
+buildUnnamed2966() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2966(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2967() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2967(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2968() {
+  var o = new core.List<api.ClickTag>();
+  o.add(buildClickTag());
+  o.add(buildClickTag());
+  return o;
+}
+
+checkUnnamed2968(core.List<api.ClickTag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkClickTag(o[0]);
+  checkClickTag(o[1]);
+}
+
+buildUnnamed2969() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2969(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2970() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2970(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2971() {
+  var o = new core.List<api.CreativeCustomEvent>();
+  o.add(buildCreativeCustomEvent());
+  o.add(buildCreativeCustomEvent());
+  return o;
+}
+
+checkUnnamed2971(core.List<api.CreativeCustomEvent> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeCustomEvent(o[0]);
+  checkCreativeCustomEvent(o[1]);
+}
+
+buildUnnamed2972() {
+  var o = new core.List<api.CreativeAsset>();
+  o.add(buildCreativeAsset());
+  o.add(buildCreativeAsset());
+  return o;
+}
+
+checkUnnamed2972(core.List<api.CreativeAsset> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeAsset(o[0]);
+  checkCreativeAsset(o[1]);
+}
+
+buildUnnamed2973() {
+  var o = new core.List<api.CreativeFieldAssignment>();
+  o.add(buildCreativeFieldAssignment());
+  o.add(buildCreativeFieldAssignment());
+  return o;
+}
+
+checkUnnamed2973(core.List<api.CreativeFieldAssignment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeFieldAssignment(o[0]);
+  checkCreativeFieldAssignment(o[1]);
+}
+
+buildUnnamed2974() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2974(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2975() {
+  var o = new core.List<api.CreativeCustomEvent>();
+  o.add(buildCreativeCustomEvent());
+  o.add(buildCreativeCustomEvent());
+  return o;
+}
+
+checkUnnamed2975(core.List<api.CreativeCustomEvent> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeCustomEvent(o[0]);
+  checkCreativeCustomEvent(o[1]);
+}
+
+buildUnnamed2976() {
+  var o = new core.List<api.ThirdPartyTrackingUrl>();
+  o.add(buildThirdPartyTrackingUrl());
+  o.add(buildThirdPartyTrackingUrl());
+  return o;
+}
+
+checkUnnamed2976(core.List<api.ThirdPartyTrackingUrl> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkThirdPartyTrackingUrl(o[0]);
+  checkThirdPartyTrackingUrl(o[1]);
+}
+
+buildUnnamed2977() {
+  var o = new core.List<api.CreativeCustomEvent>();
+  o.add(buildCreativeCustomEvent());
+  o.add(buildCreativeCustomEvent());
+  return o;
+}
+
+checkUnnamed2977(core.List<api.CreativeCustomEvent> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeCustomEvent(o[0]);
+  checkCreativeCustomEvent(o[1]);
+}
+
+core.int buildCounterCreative = 0;
+buildCreative() {
+  var o = new api.Creative();
+  buildCounterCreative++;
+  if (buildCounterCreative < 3) {
+    o.accountId = "foo";
+    o.active = true;
+    o.adParameters = "foo";
+    o.adTagKeys = buildUnnamed2966();
+    o.advertiserId = "foo";
+    o.allowScriptAccess = true;
+    o.archived = true;
+    o.artworkType = "foo";
+    o.authoringSource = "foo";
+    o.authoringTool = "foo";
+    o.autoAdvanceImages = true;
+    o.backgroundColor = "foo";
+    o.backupImageClickThroughUrl = "foo";
+    o.backupImageFeatures = buildUnnamed2967();
+    o.backupImageReportingLabel = "foo";
+    o.backupImageTargetWindow = buildTargetWindow();
+    o.clickTags = buildUnnamed2968();
+    o.commercialId = "foo";
+    o.companionCreatives = buildUnnamed2969();
+    o.compatibility = buildUnnamed2970();
+    o.convertFlashToHtml5 = true;
+    o.counterCustomEvents = buildUnnamed2971();
+    o.creativeAssetSelection = buildCreativeAssetSelection();
+    o.creativeAssets = buildUnnamed2972();
+    o.creativeFieldAssignments = buildUnnamed2973();
+    o.customKeyValues = buildUnnamed2974();
+    o.dynamicAssetSelection = true;
+    o.exitCustomEvents = buildUnnamed2975();
+    o.fsCommand = buildFsCommand();
+    o.htmlCode = "foo";
+    o.htmlCodeLocked = true;
+    o.id = "foo";
+    o.idDimensionValue = buildDimensionValue();
+    o.kind = "foo";
+    o.lastModifiedInfo = buildLastModifiedInfo();
+    o.latestTraffickedCreativeId = "foo";
+    o.name = "foo";
+    o.overrideCss = "foo";
+    o.progressOffset = buildVideoOffset();
+    o.redirectUrl = "foo";
+    o.renderingId = "foo";
+    o.renderingIdDimensionValue = buildDimensionValue();
+    o.requiredFlashPluginVersion = "foo";
+    o.requiredFlashVersion = 42;
+    o.size = buildSize();
+    o.skipOffset = buildVideoOffset();
+    o.skippable = true;
+    o.sslCompliant = true;
+    o.sslOverride = true;
+    o.studioAdvertiserId = "foo";
+    o.studioCreativeId = "foo";
+    o.studioTraffickedCreativeId = "foo";
+    o.subaccountId = "foo";
+    o.thirdPartyBackupImageImpressionsUrl = "foo";
+    o.thirdPartyRichMediaImpressionsUrl = "foo";
+    o.thirdPartyUrls = buildUnnamed2976();
+    o.timerCustomEvents = buildUnnamed2977();
+    o.totalFileSize = "foo";
+    o.type = "foo";
+    o.universalAdId = buildUniversalAdId();
+    o.version = 42;
+    o.videoDescription = "foo";
+    o.videoDuration = 42.0;
+  }
+  buildCounterCreative--;
+  return o;
+}
+
+checkCreative(api.Creative o) {
+  buildCounterCreative++;
+  if (buildCounterCreative < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.active, unittest.isTrue);
+    unittest.expect(o.adParameters, unittest.equals('foo'));
+    checkUnnamed2966(o.adTagKeys);
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    unittest.expect(o.allowScriptAccess, unittest.isTrue);
+    unittest.expect(o.archived, unittest.isTrue);
+    unittest.expect(o.artworkType, unittest.equals('foo'));
+    unittest.expect(o.authoringSource, unittest.equals('foo'));
+    unittest.expect(o.authoringTool, unittest.equals('foo'));
+    unittest.expect(o.autoAdvanceImages, unittest.isTrue);
+    unittest.expect(o.backgroundColor, unittest.equals('foo'));
+    unittest.expect(o.backupImageClickThroughUrl, unittest.equals('foo'));
+    checkUnnamed2967(o.backupImageFeatures);
+    unittest.expect(o.backupImageReportingLabel, unittest.equals('foo'));
+    checkTargetWindow(o.backupImageTargetWindow);
+    checkUnnamed2968(o.clickTags);
+    unittest.expect(o.commercialId, unittest.equals('foo'));
+    checkUnnamed2969(o.companionCreatives);
+    checkUnnamed2970(o.compatibility);
+    unittest.expect(o.convertFlashToHtml5, unittest.isTrue);
+    checkUnnamed2971(o.counterCustomEvents);
+    checkCreativeAssetSelection(o.creativeAssetSelection);
+    checkUnnamed2972(o.creativeAssets);
+    checkUnnamed2973(o.creativeFieldAssignments);
+    checkUnnamed2974(o.customKeyValues);
+    unittest.expect(o.dynamicAssetSelection, unittest.isTrue);
+    checkUnnamed2975(o.exitCustomEvents);
+    checkFsCommand(o.fsCommand);
+    unittest.expect(o.htmlCode, unittest.equals('foo'));
+    unittest.expect(o.htmlCodeLocked, unittest.isTrue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkDimensionValue(o.idDimensionValue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkLastModifiedInfo(o.lastModifiedInfo);
+    unittest.expect(o.latestTraffickedCreativeId, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.overrideCss, unittest.equals('foo'));
+    checkVideoOffset(o.progressOffset);
+    unittest.expect(o.redirectUrl, unittest.equals('foo'));
+    unittest.expect(o.renderingId, unittest.equals('foo'));
+    checkDimensionValue(o.renderingIdDimensionValue);
+    unittest.expect(o.requiredFlashPluginVersion, unittest.equals('foo'));
+    unittest.expect(o.requiredFlashVersion, unittest.equals(42));
+    checkSize(o.size);
+    checkVideoOffset(o.skipOffset);
+    unittest.expect(o.skippable, unittest.isTrue);
+    unittest.expect(o.sslCompliant, unittest.isTrue);
+    unittest.expect(o.sslOverride, unittest.isTrue);
+    unittest.expect(o.studioAdvertiserId, unittest.equals('foo'));
+    unittest.expect(o.studioCreativeId, unittest.equals('foo'));
+    unittest.expect(o.studioTraffickedCreativeId, unittest.equals('foo'));
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    unittest.expect(
+        o.thirdPartyBackupImageImpressionsUrl, unittest.equals('foo'));
+    unittest.expect(
+        o.thirdPartyRichMediaImpressionsUrl, unittest.equals('foo'));
+    checkUnnamed2976(o.thirdPartyUrls);
+    checkUnnamed2977(o.timerCustomEvents);
+    unittest.expect(o.totalFileSize, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    checkUniversalAdId(o.universalAdId);
+    unittest.expect(o.version, unittest.equals(42));
+    unittest.expect(o.videoDescription, unittest.equals('foo'));
+    unittest.expect(o.videoDuration, unittest.equals(42.0));
+  }
+  buildCounterCreative--;
+}
+
+buildUnnamed2978() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2978(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2979() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2979(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterCreativeAsset = 0;
+buildCreativeAsset() {
+  var o = new api.CreativeAsset();
+  buildCounterCreativeAsset++;
+  if (buildCounterCreativeAsset < 3) {
+    o.actionScript3 = true;
+    o.active = true;
+    o.alignment = "foo";
+    o.artworkType = "foo";
+    o.assetIdentifier = buildCreativeAssetId();
+    o.backupImageExit = buildCreativeCustomEvent();
+    o.bitRate = 42;
+    o.childAssetType = "foo";
+    o.collapsedSize = buildSize();
+    o.companionCreativeIds = buildUnnamed2978();
+    o.customStartTimeValue = 42;
+    o.detectedFeatures = buildUnnamed2979();
+    o.displayType = "foo";
+    o.duration = 42;
+    o.durationType = "foo";
+    o.expandedDimension = buildSize();
+    o.fileSize = "foo";
+    o.flashVersion = 42;
+    o.hideFlashObjects = true;
+    o.hideSelectionBoxes = true;
+    o.horizontallyLocked = true;
+    o.id = "foo";
+    o.idDimensionValue = buildDimensionValue();
+    o.mimeType = "foo";
+    o.offset = buildOffsetPosition();
+    o.originalBackup = true;
+    o.position = buildOffsetPosition();
+    o.positionLeftUnit = "foo";
+    o.positionTopUnit = "foo";
+    o.progressiveServingUrl = "foo";
+    o.pushdown = true;
+    o.pushdownDuration = 42.0;
+    o.role = "foo";
+    o.size = buildSize();
+    o.sslCompliant = true;
+    o.startTimeType = "foo";
+    o.streamingServingUrl = "foo";
+    o.transparency = true;
+    o.verticallyLocked = true;
+    o.videoDuration = 42.0;
+    o.windowMode = "foo";
+    o.zIndex = 42;
+    o.zipFilename = "foo";
+    o.zipFilesize = "foo";
+  }
+  buildCounterCreativeAsset--;
+  return o;
+}
+
+checkCreativeAsset(api.CreativeAsset o) {
+  buildCounterCreativeAsset++;
+  if (buildCounterCreativeAsset < 3) {
+    unittest.expect(o.actionScript3, unittest.isTrue);
+    unittest.expect(o.active, unittest.isTrue);
+    unittest.expect(o.alignment, unittest.equals('foo'));
+    unittest.expect(o.artworkType, unittest.equals('foo'));
+    checkCreativeAssetId(o.assetIdentifier);
+    checkCreativeCustomEvent(o.backupImageExit);
+    unittest.expect(o.bitRate, unittest.equals(42));
+    unittest.expect(o.childAssetType, unittest.equals('foo'));
+    checkSize(o.collapsedSize);
+    checkUnnamed2978(o.companionCreativeIds);
+    unittest.expect(o.customStartTimeValue, unittest.equals(42));
+    checkUnnamed2979(o.detectedFeatures);
+    unittest.expect(o.displayType, unittest.equals('foo'));
+    unittest.expect(o.duration, unittest.equals(42));
+    unittest.expect(o.durationType, unittest.equals('foo'));
+    checkSize(o.expandedDimension);
+    unittest.expect(o.fileSize, unittest.equals('foo'));
+    unittest.expect(o.flashVersion, unittest.equals(42));
+    unittest.expect(o.hideFlashObjects, unittest.isTrue);
+    unittest.expect(o.hideSelectionBoxes, unittest.isTrue);
+    unittest.expect(o.horizontallyLocked, unittest.isTrue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkDimensionValue(o.idDimensionValue);
+    unittest.expect(o.mimeType, unittest.equals('foo'));
+    checkOffsetPosition(o.offset);
+    unittest.expect(o.originalBackup, unittest.isTrue);
+    checkOffsetPosition(o.position);
+    unittest.expect(o.positionLeftUnit, unittest.equals('foo'));
+    unittest.expect(o.positionTopUnit, unittest.equals('foo'));
+    unittest.expect(o.progressiveServingUrl, unittest.equals('foo'));
+    unittest.expect(o.pushdown, unittest.isTrue);
+    unittest.expect(o.pushdownDuration, unittest.equals(42.0));
+    unittest.expect(o.role, unittest.equals('foo'));
+    checkSize(o.size);
+    unittest.expect(o.sslCompliant, unittest.isTrue);
+    unittest.expect(o.startTimeType, unittest.equals('foo'));
+    unittest.expect(o.streamingServingUrl, unittest.equals('foo'));
+    unittest.expect(o.transparency, unittest.isTrue);
+    unittest.expect(o.verticallyLocked, unittest.isTrue);
+    unittest.expect(o.videoDuration, unittest.equals(42.0));
+    unittest.expect(o.windowMode, unittest.equals('foo'));
+    unittest.expect(o.zIndex, unittest.equals(42));
+    unittest.expect(o.zipFilename, unittest.equals('foo'));
+    unittest.expect(o.zipFilesize, unittest.equals('foo'));
+  }
+  buildCounterCreativeAsset--;
+}
+
+core.int buildCounterCreativeAssetId = 0;
+buildCreativeAssetId() {
+  var o = new api.CreativeAssetId();
+  buildCounterCreativeAssetId++;
+  if (buildCounterCreativeAssetId < 3) {
+    o.name = "foo";
+    o.type = "foo";
+  }
+  buildCounterCreativeAssetId--;
+  return o;
+}
+
+checkCreativeAssetId(api.CreativeAssetId o) {
+  buildCounterCreativeAssetId++;
+  if (buildCounterCreativeAssetId < 3) {
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterCreativeAssetId--;
+}
+
+buildUnnamed2980() {
+  var o = new core.List<api.ClickTag>();
+  o.add(buildClickTag());
+  o.add(buildClickTag());
+  return o;
+}
+
+checkUnnamed2980(core.List<api.ClickTag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkClickTag(o[0]);
+  checkClickTag(o[1]);
+}
+
+buildUnnamed2981() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2981(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2982() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2982(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterCreativeAssetMetadata = 0;
+buildCreativeAssetMetadata() {
+  var o = new api.CreativeAssetMetadata();
+  buildCounterCreativeAssetMetadata++;
+  if (buildCounterCreativeAssetMetadata < 3) {
+    o.assetIdentifier = buildCreativeAssetId();
+    o.clickTags = buildUnnamed2980();
+    o.detectedFeatures = buildUnnamed2981();
+    o.id = "foo";
+    o.idDimensionValue = buildDimensionValue();
+    o.kind = "foo";
+    o.warnedValidationRules = buildUnnamed2982();
+  }
+  buildCounterCreativeAssetMetadata--;
+  return o;
+}
+
+checkCreativeAssetMetadata(api.CreativeAssetMetadata o) {
+  buildCounterCreativeAssetMetadata++;
+  if (buildCounterCreativeAssetMetadata < 3) {
+    checkCreativeAssetId(o.assetIdentifier);
+    checkUnnamed2980(o.clickTags);
+    checkUnnamed2981(o.detectedFeatures);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkDimensionValue(o.idDimensionValue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2982(o.warnedValidationRules);
+  }
+  buildCounterCreativeAssetMetadata--;
+}
+
+buildUnnamed2983() {
+  var o = new core.List<api.Rule>();
+  o.add(buildRule());
+  o.add(buildRule());
+  return o;
+}
+
+checkUnnamed2983(core.List<api.Rule> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRule(o[0]);
+  checkRule(o[1]);
+}
+
+core.int buildCounterCreativeAssetSelection = 0;
+buildCreativeAssetSelection() {
+  var o = new api.CreativeAssetSelection();
+  buildCounterCreativeAssetSelection++;
+  if (buildCounterCreativeAssetSelection < 3) {
+    o.defaultAssetId = "foo";
+    o.rules = buildUnnamed2983();
+  }
+  buildCounterCreativeAssetSelection--;
+  return o;
+}
+
+checkCreativeAssetSelection(api.CreativeAssetSelection o) {
+  buildCounterCreativeAssetSelection++;
+  if (buildCounterCreativeAssetSelection < 3) {
+    unittest.expect(o.defaultAssetId, unittest.equals('foo'));
+    checkUnnamed2983(o.rules);
+  }
+  buildCounterCreativeAssetSelection--;
+}
+
+buildUnnamed2984() {
+  var o = new core.List<api.CompanionClickThroughOverride>();
+  o.add(buildCompanionClickThroughOverride());
+  o.add(buildCompanionClickThroughOverride());
+  return o;
+}
+
+checkUnnamed2984(core.List<api.CompanionClickThroughOverride> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCompanionClickThroughOverride(o[0]);
+  checkCompanionClickThroughOverride(o[1]);
+}
+
+buildUnnamed2985() {
+  var o = new core.List<api.CreativeGroupAssignment>();
+  o.add(buildCreativeGroupAssignment());
+  o.add(buildCreativeGroupAssignment());
+  return o;
+}
+
+checkUnnamed2985(core.List<api.CreativeGroupAssignment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeGroupAssignment(o[0]);
+  checkCreativeGroupAssignment(o[1]);
+}
+
+buildUnnamed2986() {
+  var o = new core.List<api.RichMediaExitOverride>();
+  o.add(buildRichMediaExitOverride());
+  o.add(buildRichMediaExitOverride());
+  return o;
+}
+
+checkUnnamed2986(core.List<api.RichMediaExitOverride> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRichMediaExitOverride(o[0]);
+  checkRichMediaExitOverride(o[1]);
+}
+
+core.int buildCounterCreativeAssignment = 0;
+buildCreativeAssignment() {
+  var o = new api.CreativeAssignment();
+  buildCounterCreativeAssignment++;
+  if (buildCounterCreativeAssignment < 3) {
+    o.active = true;
+    o.applyEventTags = true;
+    o.clickThroughUrl = buildClickThroughUrl();
+    o.companionCreativeOverrides = buildUnnamed2984();
+    o.creativeGroupAssignments = buildUnnamed2985();
+    o.creativeId = "foo";
+    o.creativeIdDimensionValue = buildDimensionValue();
+    o.endTime = core.DateTime.parse("2002-02-27T14:01:02");
+    o.richMediaExitOverrides = buildUnnamed2986();
+    o.sequence = 42;
+    o.sslCompliant = true;
+    o.startTime = core.DateTime.parse("2002-02-27T14:01:02");
+    o.weight = 42;
+  }
+  buildCounterCreativeAssignment--;
+  return o;
+}
+
+checkCreativeAssignment(api.CreativeAssignment o) {
+  buildCounterCreativeAssignment++;
+  if (buildCounterCreativeAssignment < 3) {
+    unittest.expect(o.active, unittest.isTrue);
+    unittest.expect(o.applyEventTags, unittest.isTrue);
+    checkClickThroughUrl(o.clickThroughUrl);
+    checkUnnamed2984(o.companionCreativeOverrides);
+    checkUnnamed2985(o.creativeGroupAssignments);
+    unittest.expect(o.creativeId, unittest.equals('foo'));
+    checkDimensionValue(o.creativeIdDimensionValue);
+    unittest.expect(
+        o.endTime, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    checkUnnamed2986(o.richMediaExitOverrides);
+    unittest.expect(o.sequence, unittest.equals(42));
+    unittest.expect(o.sslCompliant, unittest.isTrue);
+    unittest.expect(o.startTime,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.weight, unittest.equals(42));
+  }
+  buildCounterCreativeAssignment--;
+}
+
+core.int buildCounterCreativeCustomEvent = 0;
+buildCreativeCustomEvent() {
+  var o = new api.CreativeCustomEvent();
+  buildCounterCreativeCustomEvent++;
+  if (buildCounterCreativeCustomEvent < 3) {
+    o.advertiserCustomEventId = "foo";
+    o.advertiserCustomEventName = "foo";
+    o.advertiserCustomEventType = "foo";
+    o.artworkLabel = "foo";
+    o.artworkType = "foo";
+    o.exitUrl = "foo";
+    o.id = "foo";
+    o.popupWindowProperties = buildPopupWindowProperties();
+    o.targetType = "foo";
+    o.videoReportingId = "foo";
+  }
+  buildCounterCreativeCustomEvent--;
+  return o;
+}
+
+checkCreativeCustomEvent(api.CreativeCustomEvent o) {
+  buildCounterCreativeCustomEvent++;
+  if (buildCounterCreativeCustomEvent < 3) {
+    unittest.expect(o.advertiserCustomEventId, unittest.equals('foo'));
+    unittest.expect(o.advertiserCustomEventName, unittest.equals('foo'));
+    unittest.expect(o.advertiserCustomEventType, unittest.equals('foo'));
+    unittest.expect(o.artworkLabel, unittest.equals('foo'));
+    unittest.expect(o.artworkType, unittest.equals('foo'));
+    unittest.expect(o.exitUrl, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkPopupWindowProperties(o.popupWindowProperties);
+    unittest.expect(o.targetType, unittest.equals('foo'));
+    unittest.expect(o.videoReportingId, unittest.equals('foo'));
+  }
+  buildCounterCreativeCustomEvent--;
+}
+
+core.int buildCounterCreativeField = 0;
+buildCreativeField() {
+  var o = new api.CreativeField();
+  buildCounterCreativeField++;
+  if (buildCounterCreativeField < 3) {
+    o.accountId = "foo";
+    o.advertiserId = "foo";
+    o.advertiserIdDimensionValue = buildDimensionValue();
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.subaccountId = "foo";
+  }
+  buildCounterCreativeField--;
+  return o;
+}
+
+checkCreativeField(api.CreativeField o) {
+  buildCounterCreativeField++;
+  if (buildCounterCreativeField < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    checkDimensionValue(o.advertiserIdDimensionValue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+  }
+  buildCounterCreativeField--;
+}
+
+core.int buildCounterCreativeFieldAssignment = 0;
+buildCreativeFieldAssignment() {
+  var o = new api.CreativeFieldAssignment();
+  buildCounterCreativeFieldAssignment++;
+  if (buildCounterCreativeFieldAssignment < 3) {
+    o.creativeFieldId = "foo";
+    o.creativeFieldValueId = "foo";
+  }
+  buildCounterCreativeFieldAssignment--;
+  return o;
+}
+
+checkCreativeFieldAssignment(api.CreativeFieldAssignment o) {
+  buildCounterCreativeFieldAssignment++;
+  if (buildCounterCreativeFieldAssignment < 3) {
+    unittest.expect(o.creativeFieldId, unittest.equals('foo'));
+    unittest.expect(o.creativeFieldValueId, unittest.equals('foo'));
+  }
+  buildCounterCreativeFieldAssignment--;
+}
+
+core.int buildCounterCreativeFieldValue = 0;
+buildCreativeFieldValue() {
+  var o = new api.CreativeFieldValue();
+  buildCounterCreativeFieldValue++;
+  if (buildCounterCreativeFieldValue < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.value = "foo";
+  }
+  buildCounterCreativeFieldValue--;
+  return o;
+}
+
+checkCreativeFieldValue(api.CreativeFieldValue o) {
+  buildCounterCreativeFieldValue++;
+  if (buildCounterCreativeFieldValue < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterCreativeFieldValue--;
+}
+
+buildUnnamed2987() {
+  var o = new core.List<api.CreativeFieldValue>();
+  o.add(buildCreativeFieldValue());
+  o.add(buildCreativeFieldValue());
+  return o;
+}
+
+checkUnnamed2987(core.List<api.CreativeFieldValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeFieldValue(o[0]);
+  checkCreativeFieldValue(o[1]);
+}
+
+core.int buildCounterCreativeFieldValuesListResponse = 0;
+buildCreativeFieldValuesListResponse() {
+  var o = new api.CreativeFieldValuesListResponse();
+  buildCounterCreativeFieldValuesListResponse++;
+  if (buildCounterCreativeFieldValuesListResponse < 3) {
+    o.creativeFieldValues = buildUnnamed2987();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterCreativeFieldValuesListResponse--;
+  return o;
+}
+
+checkCreativeFieldValuesListResponse(api.CreativeFieldValuesListResponse o) {
+  buildCounterCreativeFieldValuesListResponse++;
+  if (buildCounterCreativeFieldValuesListResponse < 3) {
+    checkUnnamed2987(o.creativeFieldValues);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterCreativeFieldValuesListResponse--;
+}
+
+buildUnnamed2988() {
+  var o = new core.List<api.CreativeField>();
+  o.add(buildCreativeField());
+  o.add(buildCreativeField());
+  return o;
+}
+
+checkUnnamed2988(core.List<api.CreativeField> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeField(o[0]);
+  checkCreativeField(o[1]);
+}
+
+core.int buildCounterCreativeFieldsListResponse = 0;
+buildCreativeFieldsListResponse() {
+  var o = new api.CreativeFieldsListResponse();
+  buildCounterCreativeFieldsListResponse++;
+  if (buildCounterCreativeFieldsListResponse < 3) {
+    o.creativeFields = buildUnnamed2988();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterCreativeFieldsListResponse--;
+  return o;
+}
+
+checkCreativeFieldsListResponse(api.CreativeFieldsListResponse o) {
+  buildCounterCreativeFieldsListResponse++;
+  if (buildCounterCreativeFieldsListResponse < 3) {
+    checkUnnamed2988(o.creativeFields);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterCreativeFieldsListResponse--;
+}
+
+core.int buildCounterCreativeGroup = 0;
+buildCreativeGroup() {
+  var o = new api.CreativeGroup();
+  buildCounterCreativeGroup++;
+  if (buildCounterCreativeGroup < 3) {
+    o.accountId = "foo";
+    o.advertiserId = "foo";
+    o.advertiserIdDimensionValue = buildDimensionValue();
+    o.groupNumber = 42;
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.subaccountId = "foo";
+  }
+  buildCounterCreativeGroup--;
+  return o;
+}
+
+checkCreativeGroup(api.CreativeGroup o) {
+  buildCounterCreativeGroup++;
+  if (buildCounterCreativeGroup < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    checkDimensionValue(o.advertiserIdDimensionValue);
+    unittest.expect(o.groupNumber, unittest.equals(42));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+  }
+  buildCounterCreativeGroup--;
+}
+
+core.int buildCounterCreativeGroupAssignment = 0;
+buildCreativeGroupAssignment() {
+  var o = new api.CreativeGroupAssignment();
+  buildCounterCreativeGroupAssignment++;
+  if (buildCounterCreativeGroupAssignment < 3) {
+    o.creativeGroupId = "foo";
+    o.creativeGroupNumber = "foo";
+  }
+  buildCounterCreativeGroupAssignment--;
+  return o;
+}
+
+checkCreativeGroupAssignment(api.CreativeGroupAssignment o) {
+  buildCounterCreativeGroupAssignment++;
+  if (buildCounterCreativeGroupAssignment < 3) {
+    unittest.expect(o.creativeGroupId, unittest.equals('foo'));
+    unittest.expect(o.creativeGroupNumber, unittest.equals('foo'));
+  }
+  buildCounterCreativeGroupAssignment--;
+}
+
+buildUnnamed2989() {
+  var o = new core.List<api.CreativeGroup>();
+  o.add(buildCreativeGroup());
+  o.add(buildCreativeGroup());
+  return o;
+}
+
+checkUnnamed2989(core.List<api.CreativeGroup> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeGroup(o[0]);
+  checkCreativeGroup(o[1]);
+}
+
+core.int buildCounterCreativeGroupsListResponse = 0;
+buildCreativeGroupsListResponse() {
+  var o = new api.CreativeGroupsListResponse();
+  buildCounterCreativeGroupsListResponse++;
+  if (buildCounterCreativeGroupsListResponse < 3) {
+    o.creativeGroups = buildUnnamed2989();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterCreativeGroupsListResponse--;
+  return o;
+}
+
+checkCreativeGroupsListResponse(api.CreativeGroupsListResponse o) {
+  buildCounterCreativeGroupsListResponse++;
+  if (buildCounterCreativeGroupsListResponse < 3) {
+    checkUnnamed2989(o.creativeGroups);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterCreativeGroupsListResponse--;
+}
+
+buildUnnamed2990() {
+  var o = new core.List<api.OptimizationActivity>();
+  o.add(buildOptimizationActivity());
+  o.add(buildOptimizationActivity());
+  return o;
+}
+
+checkUnnamed2990(core.List<api.OptimizationActivity> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOptimizationActivity(o[0]);
+  checkOptimizationActivity(o[1]);
+}
+
+core.int buildCounterCreativeOptimizationConfiguration = 0;
+buildCreativeOptimizationConfiguration() {
+  var o = new api.CreativeOptimizationConfiguration();
+  buildCounterCreativeOptimizationConfiguration++;
+  if (buildCounterCreativeOptimizationConfiguration < 3) {
+    o.id = "foo";
+    o.name = "foo";
+    o.optimizationActivitys = buildUnnamed2990();
+    o.optimizationModel = "foo";
+  }
+  buildCounterCreativeOptimizationConfiguration--;
+  return o;
+}
+
+checkCreativeOptimizationConfiguration(
+    api.CreativeOptimizationConfiguration o) {
+  buildCounterCreativeOptimizationConfiguration++;
+  if (buildCounterCreativeOptimizationConfiguration < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed2990(o.optimizationActivitys);
+    unittest.expect(o.optimizationModel, unittest.equals('foo'));
+  }
+  buildCounterCreativeOptimizationConfiguration--;
+}
+
+buildUnnamed2991() {
+  var o = new core.List<api.CreativeAssignment>();
+  o.add(buildCreativeAssignment());
+  o.add(buildCreativeAssignment());
+  return o;
+}
+
+checkUnnamed2991(core.List<api.CreativeAssignment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreativeAssignment(o[0]);
+  checkCreativeAssignment(o[1]);
+}
+
+core.int buildCounterCreativeRotation = 0;
+buildCreativeRotation() {
+  var o = new api.CreativeRotation();
+  buildCounterCreativeRotation++;
+  if (buildCounterCreativeRotation < 3) {
+    o.creativeAssignments = buildUnnamed2991();
+    o.creativeOptimizationConfigurationId = "foo";
+    o.type = "foo";
+    o.weightCalculationStrategy = "foo";
+  }
+  buildCounterCreativeRotation--;
+  return o;
+}
+
+checkCreativeRotation(api.CreativeRotation o) {
+  buildCounterCreativeRotation++;
+  if (buildCounterCreativeRotation < 3) {
+    checkUnnamed2991(o.creativeAssignments);
+    unittest.expect(
+        o.creativeOptimizationConfigurationId, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.weightCalculationStrategy, unittest.equals('foo'));
+  }
+  buildCounterCreativeRotation--;
+}
+
+core.int buildCounterCreativeSettings = 0;
+buildCreativeSettings() {
+  var o = new api.CreativeSettings();
+  buildCounterCreativeSettings++;
+  if (buildCounterCreativeSettings < 3) {
+    o.iFrameFooter = "foo";
+    o.iFrameHeader = "foo";
+  }
+  buildCounterCreativeSettings--;
+  return o;
+}
+
+checkCreativeSettings(api.CreativeSettings o) {
+  buildCounterCreativeSettings++;
+  if (buildCounterCreativeSettings < 3) {
+    unittest.expect(o.iFrameFooter, unittest.equals('foo'));
+    unittest.expect(o.iFrameHeader, unittest.equals('foo'));
+  }
+  buildCounterCreativeSettings--;
+}
+
+buildUnnamed2992() {
+  var o = new core.List<api.Creative>();
+  o.add(buildCreative());
+  o.add(buildCreative());
+  return o;
+}
+
+checkUnnamed2992(core.List<api.Creative> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCreative(o[0]);
+  checkCreative(o[1]);
+}
+
+core.int buildCounterCreativesListResponse = 0;
+buildCreativesListResponse() {
+  var o = new api.CreativesListResponse();
+  buildCounterCreativesListResponse++;
+  if (buildCounterCreativesListResponse < 3) {
+    o.creatives = buildUnnamed2992();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterCreativesListResponse--;
+  return o;
+}
+
+checkCreativesListResponse(api.CreativesListResponse o) {
+  buildCounterCreativesListResponse++;
+  if (buildCounterCreativesListResponse < 3) {
+    checkUnnamed2992(o.creatives);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterCreativesListResponse--;
+}
+
+buildUnnamed2993() {
+  var o = new core.List<api.Dimension>();
+  o.add(buildDimension());
+  o.add(buildDimension());
+  return o;
+}
+
+checkUnnamed2993(core.List<api.Dimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimension(o[0]);
+  checkDimension(o[1]);
+}
+
+buildUnnamed2994() {
+  var o = new core.List<api.Dimension>();
+  o.add(buildDimension());
+  o.add(buildDimension());
+  return o;
+}
+
+checkUnnamed2994(core.List<api.Dimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimension(o[0]);
+  checkDimension(o[1]);
+}
+
+buildUnnamed2995() {
+  var o = new core.List<api.Metric>();
+  o.add(buildMetric());
+  o.add(buildMetric());
+  return o;
+}
+
+checkUnnamed2995(core.List<api.Metric> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetric(o[0]);
+  checkMetric(o[1]);
+}
+
+buildUnnamed2996() {
+  var o = new core.List<api.Metric>();
+  o.add(buildMetric());
+  o.add(buildMetric());
+  return o;
+}
+
+checkUnnamed2996(core.List<api.Metric> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetric(o[0]);
+  checkMetric(o[1]);
+}
+
+core.int buildCounterCrossDimensionReachReportCompatibleFields = 0;
+buildCrossDimensionReachReportCompatibleFields() {
+  var o = new api.CrossDimensionReachReportCompatibleFields();
+  buildCounterCrossDimensionReachReportCompatibleFields++;
+  if (buildCounterCrossDimensionReachReportCompatibleFields < 3) {
+    o.breakdown = buildUnnamed2993();
+    o.dimensionFilters = buildUnnamed2994();
+    o.kind = "foo";
+    o.metrics = buildUnnamed2995();
+    o.overlapMetrics = buildUnnamed2996();
+  }
+  buildCounterCrossDimensionReachReportCompatibleFields--;
+  return o;
+}
+
+checkCrossDimensionReachReportCompatibleFields(
+    api.CrossDimensionReachReportCompatibleFields o) {
+  buildCounterCrossDimensionReachReportCompatibleFields++;
+  if (buildCounterCrossDimensionReachReportCompatibleFields < 3) {
+    checkUnnamed2993(o.breakdown);
+    checkUnnamed2994(o.dimensionFilters);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed2995(o.metrics);
+    checkUnnamed2996(o.overlapMetrics);
+  }
+  buildCounterCrossDimensionReachReportCompatibleFields--;
+}
+
+core.int buildCounterCustomFloodlightVariable = 0;
+buildCustomFloodlightVariable() {
+  var o = new api.CustomFloodlightVariable();
+  buildCounterCustomFloodlightVariable++;
+  if (buildCounterCustomFloodlightVariable < 3) {
+    o.kind = "foo";
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterCustomFloodlightVariable--;
+  return o;
+}
+
+checkCustomFloodlightVariable(api.CustomFloodlightVariable o) {
+  buildCounterCustomFloodlightVariable++;
+  if (buildCounterCustomFloodlightVariable < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterCustomFloodlightVariable--;
+}
+
+buildUnnamed2997() {
+  var o = new core.List<api.DimensionValue>();
+  o.add(buildDimensionValue());
+  o.add(buildDimensionValue());
+  return o;
+}
+
+checkUnnamed2997(core.List<api.DimensionValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimensionValue(o[0]);
+  checkDimensionValue(o[1]);
+}
+
+core.int buildCounterCustomRichMediaEvents = 0;
+buildCustomRichMediaEvents() {
+  var o = new api.CustomRichMediaEvents();
+  buildCounterCustomRichMediaEvents++;
+  if (buildCounterCustomRichMediaEvents < 3) {
+    o.filteredEventIds = buildUnnamed2997();
+    o.kind = "foo";
+  }
+  buildCounterCustomRichMediaEvents--;
+  return o;
+}
+
+checkCustomRichMediaEvents(api.CustomRichMediaEvents o) {
+  buildCounterCustomRichMediaEvents++;
+  if (buildCounterCustomRichMediaEvents < 3) {
+    checkUnnamed2997(o.filteredEventIds);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterCustomRichMediaEvents--;
+}
+
+core.int buildCounterDateRange = 0;
+buildDateRange() {
+  var o = new api.DateRange();
+  buildCounterDateRange++;
+  if (buildCounterDateRange < 3) {
+    o.endDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.kind = "foo";
+    o.relativeDateRange = "foo";
+    o.startDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+  }
+  buildCounterDateRange--;
+  return o;
+}
+
+checkDateRange(api.DateRange o) {
+  buildCounterDateRange++;
+  if (buildCounterDateRange < 3) {
+    unittest.expect(
+        o.endDate, unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.relativeDateRange, unittest.equals('foo'));
+    unittest.expect(o.startDate,
+        unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+  }
+  buildCounterDateRange--;
+}
+
+buildUnnamed2998() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2998(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2999() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed2999(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+core.int buildCounterDayPartTargeting = 0;
+buildDayPartTargeting() {
+  var o = new api.DayPartTargeting();
+  buildCounterDayPartTargeting++;
+  if (buildCounterDayPartTargeting < 3) {
+    o.daysOfWeek = buildUnnamed2998();
+    o.hoursOfDay = buildUnnamed2999();
+    o.userLocalTime = true;
+  }
+  buildCounterDayPartTargeting--;
+  return o;
+}
+
+checkDayPartTargeting(api.DayPartTargeting o) {
+  buildCounterDayPartTargeting++;
+  if (buildCounterDayPartTargeting < 3) {
+    checkUnnamed2998(o.daysOfWeek);
+    checkUnnamed2999(o.hoursOfDay);
+    unittest.expect(o.userLocalTime, unittest.isTrue);
+  }
+  buildCounterDayPartTargeting--;
+}
+
+core.int buildCounterDefaultClickThroughEventTagProperties = 0;
+buildDefaultClickThroughEventTagProperties() {
+  var o = new api.DefaultClickThroughEventTagProperties();
+  buildCounterDefaultClickThroughEventTagProperties++;
+  if (buildCounterDefaultClickThroughEventTagProperties < 3) {
+    o.defaultClickThroughEventTagId = "foo";
+    o.overrideInheritedEventTag = true;
+  }
+  buildCounterDefaultClickThroughEventTagProperties--;
+  return o;
+}
+
+checkDefaultClickThroughEventTagProperties(
+    api.DefaultClickThroughEventTagProperties o) {
+  buildCounterDefaultClickThroughEventTagProperties++;
+  if (buildCounterDefaultClickThroughEventTagProperties < 3) {
+    unittest.expect(o.defaultClickThroughEventTagId, unittest.equals('foo'));
+    unittest.expect(o.overrideInheritedEventTag, unittest.isTrue);
+  }
+  buildCounterDefaultClickThroughEventTagProperties--;
+}
+
+core.int buildCounterDeliverySchedule = 0;
+buildDeliverySchedule() {
+  var o = new api.DeliverySchedule();
+  buildCounterDeliverySchedule++;
+  if (buildCounterDeliverySchedule < 3) {
+    o.frequencyCap = buildFrequencyCap();
+    o.hardCutoff = true;
+    o.impressionRatio = "foo";
+    o.priority = "foo";
+  }
+  buildCounterDeliverySchedule--;
+  return o;
+}
+
+checkDeliverySchedule(api.DeliverySchedule o) {
+  buildCounterDeliverySchedule++;
+  if (buildCounterDeliverySchedule < 3) {
+    checkFrequencyCap(o.frequencyCap);
+    unittest.expect(o.hardCutoff, unittest.isTrue);
+    unittest.expect(o.impressionRatio, unittest.equals('foo'));
+    unittest.expect(o.priority, unittest.equals('foo'));
+  }
+  buildCounterDeliverySchedule--;
+}
+
+core.int buildCounterDfpSettings = 0;
+buildDfpSettings() {
+  var o = new api.DfpSettings();
+  buildCounterDfpSettings++;
+  if (buildCounterDfpSettings < 3) {
+    o.dfpNetworkCode = "foo";
+    o.dfpNetworkName = "foo";
+    o.programmaticPlacementAccepted = true;
+    o.pubPaidPlacementAccepted = true;
+    o.publisherPortalOnly = true;
+  }
+  buildCounterDfpSettings--;
+  return o;
+}
+
+checkDfpSettings(api.DfpSettings o) {
+  buildCounterDfpSettings++;
+  if (buildCounterDfpSettings < 3) {
+    unittest.expect(o.dfpNetworkCode, unittest.equals('foo'));
+    unittest.expect(o.dfpNetworkName, unittest.equals('foo'));
+    unittest.expect(o.programmaticPlacementAccepted, unittest.isTrue);
+    unittest.expect(o.pubPaidPlacementAccepted, unittest.isTrue);
+    unittest.expect(o.publisherPortalOnly, unittest.isTrue);
+  }
+  buildCounterDfpSettings--;
+}
+
+core.int buildCounterDimension = 0;
+buildDimension() {
+  var o = new api.Dimension();
+  buildCounterDimension++;
+  if (buildCounterDimension < 3) {
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterDimension--;
+  return o;
+}
+
+checkDimension(api.Dimension o) {
+  buildCounterDimension++;
+  if (buildCounterDimension < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterDimension--;
+}
+
+core.int buildCounterDimensionFilter = 0;
+buildDimensionFilter() {
+  var o = new api.DimensionFilter();
+  buildCounterDimensionFilter++;
+  if (buildCounterDimensionFilter < 3) {
+    o.dimensionName = "foo";
+    o.kind = "foo";
+    o.value = "foo";
+  }
+  buildCounterDimensionFilter--;
+  return o;
+}
+
+checkDimensionFilter(api.DimensionFilter o) {
+  buildCounterDimensionFilter++;
+  if (buildCounterDimensionFilter < 3) {
+    unittest.expect(o.dimensionName, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterDimensionFilter--;
+}
+
+core.int buildCounterDimensionValue = 0;
+buildDimensionValue() {
+  var o = new api.DimensionValue();
+  buildCounterDimensionValue++;
+  if (buildCounterDimensionValue < 3) {
+    o.dimensionName = "foo";
+    o.etag = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.matchType = "foo";
+    o.value = "foo";
+  }
+  buildCounterDimensionValue--;
+  return o;
+}
+
+checkDimensionValue(api.DimensionValue o) {
+  buildCounterDimensionValue++;
+  if (buildCounterDimensionValue < 3) {
+    unittest.expect(o.dimensionName, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.matchType, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterDimensionValue--;
+}
+
+buildUnnamed3000() {
+  var o = new core.List<api.DimensionValue>();
+  o.add(buildDimensionValue());
+  o.add(buildDimensionValue());
+  return o;
+}
+
+checkUnnamed3000(core.List<api.DimensionValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimensionValue(o[0]);
+  checkDimensionValue(o[1]);
+}
+
+core.int buildCounterDimensionValueList = 0;
+buildDimensionValueList() {
+  var o = new api.DimensionValueList();
+  buildCounterDimensionValueList++;
+  if (buildCounterDimensionValueList < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed3000();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterDimensionValueList--;
+  return o;
+}
+
+checkDimensionValueList(api.DimensionValueList o) {
+  buildCounterDimensionValueList++;
+  if (buildCounterDimensionValueList < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed3000(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterDimensionValueList--;
+}
+
+buildUnnamed3001() {
+  var o = new core.List<api.DimensionFilter>();
+  o.add(buildDimensionFilter());
+  o.add(buildDimensionFilter());
+  return o;
+}
+
+checkUnnamed3001(core.List<api.DimensionFilter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimensionFilter(o[0]);
+  checkDimensionFilter(o[1]);
+}
+
+core.int buildCounterDimensionValueRequest = 0;
+buildDimensionValueRequest() {
+  var o = new api.DimensionValueRequest();
+  buildCounterDimensionValueRequest++;
+  if (buildCounterDimensionValueRequest < 3) {
+    o.dimensionName = "foo";
+    o.endDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.filters = buildUnnamed3001();
+    o.kind = "foo";
+    o.startDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+  }
+  buildCounterDimensionValueRequest--;
+  return o;
+}
+
+checkDimensionValueRequest(api.DimensionValueRequest o) {
+  buildCounterDimensionValueRequest++;
+  if (buildCounterDimensionValueRequest < 3) {
+    unittest.expect(o.dimensionName, unittest.equals('foo'));
+    unittest.expect(
+        o.endDate, unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    checkUnnamed3001(o.filters);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.startDate,
+        unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+  }
+  buildCounterDimensionValueRequest--;
+}
+
+buildUnnamed3002() {
+  var o = new core.List<api.DirectorySiteContactAssignment>();
+  o.add(buildDirectorySiteContactAssignment());
+  o.add(buildDirectorySiteContactAssignment());
+  return o;
+}
+
+checkUnnamed3002(core.List<api.DirectorySiteContactAssignment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDirectorySiteContactAssignment(o[0]);
+  checkDirectorySiteContactAssignment(o[1]);
+}
+
+buildUnnamed3003() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3003(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3004() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3004(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterDirectorySite = 0;
+buildDirectorySite() {
+  var o = new api.DirectorySite();
+  buildCounterDirectorySite++;
+  if (buildCounterDirectorySite < 3) {
+    o.active = true;
+    o.contactAssignments = buildUnnamed3002();
+    o.countryId = "foo";
+    o.currencyId = "foo";
+    o.description = "foo";
+    o.id = "foo";
+    o.idDimensionValue = buildDimensionValue();
+    o.inpageTagFormats = buildUnnamed3003();
+    o.interstitialTagFormats = buildUnnamed3004();
+    o.kind = "foo";
+    o.name = "foo";
+    o.parentId = "foo";
+    o.settings = buildDirectorySiteSettings();
+    o.url = "foo";
+  }
+  buildCounterDirectorySite--;
+  return o;
+}
+
+checkDirectorySite(api.DirectorySite o) {
+  buildCounterDirectorySite++;
+  if (buildCounterDirectorySite < 3) {
+    unittest.expect(o.active, unittest.isTrue);
+    checkUnnamed3002(o.contactAssignments);
+    unittest.expect(o.countryId, unittest.equals('foo'));
+    unittest.expect(o.currencyId, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkDimensionValue(o.idDimensionValue);
+    checkUnnamed3003(o.inpageTagFormats);
+    checkUnnamed3004(o.interstitialTagFormats);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.parentId, unittest.equals('foo'));
+    checkDirectorySiteSettings(o.settings);
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterDirectorySite--;
+}
+
+core.int buildCounterDirectorySiteContact = 0;
+buildDirectorySiteContact() {
+  var o = new api.DirectorySiteContact();
+  buildCounterDirectorySiteContact++;
+  if (buildCounterDirectorySiteContact < 3) {
+    o.address = "foo";
+    o.email = "foo";
+    o.firstName = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.lastName = "foo";
+    o.phone = "foo";
+    o.role = "foo";
+    o.title = "foo";
+    o.type = "foo";
+  }
+  buildCounterDirectorySiteContact--;
+  return o;
+}
+
+checkDirectorySiteContact(api.DirectorySiteContact o) {
+  buildCounterDirectorySiteContact++;
+  if (buildCounterDirectorySiteContact < 3) {
+    unittest.expect(o.address, unittest.equals('foo'));
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.firstName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.lastName, unittest.equals('foo'));
+    unittest.expect(o.phone, unittest.equals('foo'));
+    unittest.expect(o.role, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterDirectorySiteContact--;
+}
+
+core.int buildCounterDirectorySiteContactAssignment = 0;
+buildDirectorySiteContactAssignment() {
+  var o = new api.DirectorySiteContactAssignment();
+  buildCounterDirectorySiteContactAssignment++;
+  if (buildCounterDirectorySiteContactAssignment < 3) {
+    o.contactId = "foo";
+    o.visibility = "foo";
+  }
+  buildCounterDirectorySiteContactAssignment--;
+  return o;
+}
+
+checkDirectorySiteContactAssignment(api.DirectorySiteContactAssignment o) {
+  buildCounterDirectorySiteContactAssignment++;
+  if (buildCounterDirectorySiteContactAssignment < 3) {
+    unittest.expect(o.contactId, unittest.equals('foo'));
+    unittest.expect(o.visibility, unittest.equals('foo'));
+  }
+  buildCounterDirectorySiteContactAssignment--;
+}
+
+buildUnnamed3005() {
+  var o = new core.List<api.DirectorySiteContact>();
+  o.add(buildDirectorySiteContact());
+  o.add(buildDirectorySiteContact());
+  return o;
+}
+
+checkUnnamed3005(core.List<api.DirectorySiteContact> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDirectorySiteContact(o[0]);
+  checkDirectorySiteContact(o[1]);
+}
+
+core.int buildCounterDirectorySiteContactsListResponse = 0;
+buildDirectorySiteContactsListResponse() {
+  var o = new api.DirectorySiteContactsListResponse();
+  buildCounterDirectorySiteContactsListResponse++;
+  if (buildCounterDirectorySiteContactsListResponse < 3) {
+    o.directorySiteContacts = buildUnnamed3005();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterDirectorySiteContactsListResponse--;
+  return o;
+}
+
+checkDirectorySiteContactsListResponse(
+    api.DirectorySiteContactsListResponse o) {
+  buildCounterDirectorySiteContactsListResponse++;
+  if (buildCounterDirectorySiteContactsListResponse < 3) {
+    checkUnnamed3005(o.directorySiteContacts);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterDirectorySiteContactsListResponse--;
+}
+
+core.int buildCounterDirectorySiteSettings = 0;
+buildDirectorySiteSettings() {
+  var o = new api.DirectorySiteSettings();
+  buildCounterDirectorySiteSettings++;
+  if (buildCounterDirectorySiteSettings < 3) {
+    o.activeViewOptOut = true;
+    o.dfpSettings = buildDfpSettings();
+    o.instreamVideoPlacementAccepted = true;
+    o.interstitialPlacementAccepted = true;
+    o.nielsenOcrOptOut = true;
+    o.verificationTagOptOut = true;
+    o.videoActiveViewOptOut = true;
+  }
+  buildCounterDirectorySiteSettings--;
+  return o;
+}
+
+checkDirectorySiteSettings(api.DirectorySiteSettings o) {
+  buildCounterDirectorySiteSettings++;
+  if (buildCounterDirectorySiteSettings < 3) {
+    unittest.expect(o.activeViewOptOut, unittest.isTrue);
+    checkDfpSettings(o.dfpSettings);
+    unittest.expect(o.instreamVideoPlacementAccepted, unittest.isTrue);
+    unittest.expect(o.interstitialPlacementAccepted, unittest.isTrue);
+    unittest.expect(o.nielsenOcrOptOut, unittest.isTrue);
+    unittest.expect(o.verificationTagOptOut, unittest.isTrue);
+    unittest.expect(o.videoActiveViewOptOut, unittest.isTrue);
+  }
+  buildCounterDirectorySiteSettings--;
+}
+
+buildUnnamed3006() {
+  var o = new core.List<api.DirectorySite>();
+  o.add(buildDirectorySite());
+  o.add(buildDirectorySite());
+  return o;
+}
+
+checkUnnamed3006(core.List<api.DirectorySite> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDirectorySite(o[0]);
+  checkDirectorySite(o[1]);
+}
+
+core.int buildCounterDirectorySitesListResponse = 0;
+buildDirectorySitesListResponse() {
+  var o = new api.DirectorySitesListResponse();
+  buildCounterDirectorySitesListResponse++;
+  if (buildCounterDirectorySitesListResponse < 3) {
+    o.directorySites = buildUnnamed3006();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterDirectorySitesListResponse--;
+  return o;
+}
+
+checkDirectorySitesListResponse(api.DirectorySitesListResponse o) {
+  buildCounterDirectorySitesListResponse++;
+  if (buildCounterDirectorySitesListResponse < 3) {
+    checkUnnamed3006(o.directorySites);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterDirectorySitesListResponse--;
+}
+
+core.int buildCounterDynamicTargetingKey = 0;
+buildDynamicTargetingKey() {
+  var o = new api.DynamicTargetingKey();
+  buildCounterDynamicTargetingKey++;
+  if (buildCounterDynamicTargetingKey < 3) {
+    o.kind = "foo";
+    o.name = "foo";
+    o.objectId = "foo";
+    o.objectType = "foo";
+  }
+  buildCounterDynamicTargetingKey--;
+  return o;
+}
+
+checkDynamicTargetingKey(api.DynamicTargetingKey o) {
+  buildCounterDynamicTargetingKey++;
+  if (buildCounterDynamicTargetingKey < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.objectId, unittest.equals('foo'));
+    unittest.expect(o.objectType, unittest.equals('foo'));
+  }
+  buildCounterDynamicTargetingKey--;
+}
+
+buildUnnamed3007() {
+  var o = new core.List<api.DynamicTargetingKey>();
+  o.add(buildDynamicTargetingKey());
+  o.add(buildDynamicTargetingKey());
+  return o;
+}
+
+checkUnnamed3007(core.List<api.DynamicTargetingKey> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDynamicTargetingKey(o[0]);
+  checkDynamicTargetingKey(o[1]);
+}
+
+core.int buildCounterDynamicTargetingKeysListResponse = 0;
+buildDynamicTargetingKeysListResponse() {
+  var o = new api.DynamicTargetingKeysListResponse();
+  buildCounterDynamicTargetingKeysListResponse++;
+  if (buildCounterDynamicTargetingKeysListResponse < 3) {
+    o.dynamicTargetingKeys = buildUnnamed3007();
+    o.kind = "foo";
+  }
+  buildCounterDynamicTargetingKeysListResponse--;
+  return o;
+}
+
+checkDynamicTargetingKeysListResponse(api.DynamicTargetingKeysListResponse o) {
+  buildCounterDynamicTargetingKeysListResponse++;
+  if (buildCounterDynamicTargetingKeysListResponse < 3) {
+    checkUnnamed3007(o.dynamicTargetingKeys);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterDynamicTargetingKeysListResponse--;
+}
+
+core.int buildCounterEncryptionInfo = 0;
+buildEncryptionInfo() {
+  var o = new api.EncryptionInfo();
+  buildCounterEncryptionInfo++;
+  if (buildCounterEncryptionInfo < 3) {
+    o.encryptionEntityId = "foo";
+    o.encryptionEntityType = "foo";
+    o.encryptionSource = "foo";
+    o.kind = "foo";
+  }
+  buildCounterEncryptionInfo--;
+  return o;
+}
+
+checkEncryptionInfo(api.EncryptionInfo o) {
+  buildCounterEncryptionInfo++;
+  if (buildCounterEncryptionInfo < 3) {
+    unittest.expect(o.encryptionEntityId, unittest.equals('foo'));
+    unittest.expect(o.encryptionEntityType, unittest.equals('foo'));
+    unittest.expect(o.encryptionSource, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterEncryptionInfo--;
+}
+
+buildUnnamed3008() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3008(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterEventTag = 0;
+buildEventTag() {
+  var o = new api.EventTag();
+  buildCounterEventTag++;
+  if (buildCounterEventTag < 3) {
+    o.accountId = "foo";
+    o.advertiserId = "foo";
+    o.advertiserIdDimensionValue = buildDimensionValue();
+    o.campaignId = "foo";
+    o.campaignIdDimensionValue = buildDimensionValue();
+    o.enabledByDefault = true;
+    o.excludeFromAdxRequests = true;
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.siteFilterType = "foo";
+    o.siteIds = buildUnnamed3008();
+    o.sslCompliant = true;
+    o.status = "foo";
+    o.subaccountId = "foo";
+    o.type = "foo";
+    o.url = "foo";
+    o.urlEscapeLevels = 42;
+  }
+  buildCounterEventTag--;
+  return o;
+}
+
+checkEventTag(api.EventTag o) {
+  buildCounterEventTag++;
+  if (buildCounterEventTag < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    checkDimensionValue(o.advertiserIdDimensionValue);
+    unittest.expect(o.campaignId, unittest.equals('foo'));
+    checkDimensionValue(o.campaignIdDimensionValue);
+    unittest.expect(o.enabledByDefault, unittest.isTrue);
+    unittest.expect(o.excludeFromAdxRequests, unittest.isTrue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.siteFilterType, unittest.equals('foo'));
+    checkUnnamed3008(o.siteIds);
+    unittest.expect(o.sslCompliant, unittest.isTrue);
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.urlEscapeLevels, unittest.equals(42));
+  }
+  buildCounterEventTag--;
+}
+
+core.int buildCounterEventTagOverride = 0;
+buildEventTagOverride() {
+  var o = new api.EventTagOverride();
+  buildCounterEventTagOverride++;
+  if (buildCounterEventTagOverride < 3) {
+    o.enabled = true;
+    o.id = "foo";
+  }
+  buildCounterEventTagOverride--;
+  return o;
+}
+
+checkEventTagOverride(api.EventTagOverride o) {
+  buildCounterEventTagOverride++;
+  if (buildCounterEventTagOverride < 3) {
+    unittest.expect(o.enabled, unittest.isTrue);
+    unittest.expect(o.id, unittest.equals('foo'));
+  }
+  buildCounterEventTagOverride--;
+}
+
+buildUnnamed3009() {
+  var o = new core.List<api.EventTag>();
+  o.add(buildEventTag());
+  o.add(buildEventTag());
+  return o;
+}
+
+checkUnnamed3009(core.List<api.EventTag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEventTag(o[0]);
+  checkEventTag(o[1]);
+}
+
+core.int buildCounterEventTagsListResponse = 0;
+buildEventTagsListResponse() {
+  var o = new api.EventTagsListResponse();
+  buildCounterEventTagsListResponse++;
+  if (buildCounterEventTagsListResponse < 3) {
+    o.eventTags = buildUnnamed3009();
+    o.kind = "foo";
+  }
+  buildCounterEventTagsListResponse--;
+  return o;
+}
+
+checkEventTagsListResponse(api.EventTagsListResponse o) {
+  buildCounterEventTagsListResponse++;
+  if (buildCounterEventTagsListResponse < 3) {
+    checkUnnamed3009(o.eventTags);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterEventTagsListResponse--;
+}
+
+core.int buildCounterFileUrls = 0;
+buildFileUrls() {
+  var o = new api.FileUrls();
+  buildCounterFileUrls++;
+  if (buildCounterFileUrls < 3) {
+    o.apiUrl = "foo";
+    o.browserUrl = "foo";
+  }
+  buildCounterFileUrls--;
+  return o;
+}
+
+checkFileUrls(api.FileUrls o) {
+  buildCounterFileUrls++;
+  if (buildCounterFileUrls < 3) {
+    unittest.expect(o.apiUrl, unittest.equals('foo'));
+    unittest.expect(o.browserUrl, unittest.equals('foo'));
+  }
+  buildCounterFileUrls--;
+}
+
+core.int buildCounterFile = 0;
+buildFile() {
+  var o = new api.File();
+  buildCounterFile++;
+  if (buildCounterFile < 3) {
+    o.dateRange = buildDateRange();
+    o.etag = "foo";
+    o.fileName = "foo";
+    o.format = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.lastModifiedTime = "foo";
+    o.reportId = "foo";
+    o.status = "foo";
+    o.urls = buildFileUrls();
+  }
+  buildCounterFile--;
+  return o;
+}
+
+checkFile(api.File o) {
+  buildCounterFile++;
+  if (buildCounterFile < 3) {
+    checkDateRange(o.dateRange);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.fileName, unittest.equals('foo'));
+    unittest.expect(o.format, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.lastModifiedTime, unittest.equals('foo'));
+    unittest.expect(o.reportId, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+    checkFileUrls(o.urls);
+  }
+  buildCounterFile--;
+}
+
+buildUnnamed3010() {
+  var o = new core.List<api.File>();
+  o.add(buildFile());
+  o.add(buildFile());
+  return o;
+}
+
+checkUnnamed3010(core.List<api.File> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFile(o[0]);
+  checkFile(o[1]);
+}
+
+core.int buildCounterFileList = 0;
+buildFileList() {
+  var o = new api.FileList();
+  buildCounterFileList++;
+  if (buildCounterFileList < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed3010();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterFileList--;
+  return o;
+}
+
+checkFileList(api.FileList o) {
+  buildCounterFileList++;
+  if (buildCounterFileList < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed3010(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterFileList--;
+}
+
+core.int buildCounterFlight = 0;
+buildFlight() {
+  var o = new api.Flight();
+  buildCounterFlight++;
+  if (buildCounterFlight < 3) {
+    o.endDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.rateOrCost = "foo";
+    o.startDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.units = "foo";
+  }
+  buildCounterFlight--;
+  return o;
+}
+
+checkFlight(api.Flight o) {
+  buildCounterFlight++;
+  if (buildCounterFlight < 3) {
+    unittest.expect(
+        o.endDate, unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    unittest.expect(o.rateOrCost, unittest.equals('foo'));
+    unittest.expect(o.startDate,
+        unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    unittest.expect(o.units, unittest.equals('foo'));
+  }
+  buildCounterFlight--;
+}
+
+core.int buildCounterFloodlightActivitiesGenerateTagResponse = 0;
+buildFloodlightActivitiesGenerateTagResponse() {
+  var o = new api.FloodlightActivitiesGenerateTagResponse();
+  buildCounterFloodlightActivitiesGenerateTagResponse++;
+  if (buildCounterFloodlightActivitiesGenerateTagResponse < 3) {
+    o.floodlightActivityTag = "foo";
+    o.kind = "foo";
+  }
+  buildCounterFloodlightActivitiesGenerateTagResponse--;
+  return o;
+}
+
+checkFloodlightActivitiesGenerateTagResponse(
+    api.FloodlightActivitiesGenerateTagResponse o) {
+  buildCounterFloodlightActivitiesGenerateTagResponse++;
+  if (buildCounterFloodlightActivitiesGenerateTagResponse < 3) {
+    unittest.expect(o.floodlightActivityTag, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterFloodlightActivitiesGenerateTagResponse--;
+}
+
+buildUnnamed3011() {
+  var o = new core.List<api.FloodlightActivity>();
+  o.add(buildFloodlightActivity());
+  o.add(buildFloodlightActivity());
+  return o;
+}
+
+checkUnnamed3011(core.List<api.FloodlightActivity> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFloodlightActivity(o[0]);
+  checkFloodlightActivity(o[1]);
+}
+
+core.int buildCounterFloodlightActivitiesListResponse = 0;
+buildFloodlightActivitiesListResponse() {
+  var o = new api.FloodlightActivitiesListResponse();
+  buildCounterFloodlightActivitiesListResponse++;
+  if (buildCounterFloodlightActivitiesListResponse < 3) {
+    o.floodlightActivities = buildUnnamed3011();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterFloodlightActivitiesListResponse--;
+  return o;
+}
+
+checkFloodlightActivitiesListResponse(api.FloodlightActivitiesListResponse o) {
+  buildCounterFloodlightActivitiesListResponse++;
+  if (buildCounterFloodlightActivitiesListResponse < 3) {
+    checkUnnamed3011(o.floodlightActivities);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterFloodlightActivitiesListResponse--;
+}
+
+buildUnnamed3012() {
+  var o = new core.List<api.FloodlightActivityDynamicTag>();
+  o.add(buildFloodlightActivityDynamicTag());
+  o.add(buildFloodlightActivityDynamicTag());
+  return o;
+}
+
+checkUnnamed3012(core.List<api.FloodlightActivityDynamicTag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFloodlightActivityDynamicTag(o[0]);
+  checkFloodlightActivityDynamicTag(o[1]);
+}
+
+buildUnnamed3013() {
+  var o = new core.List<api.FloodlightActivityPublisherDynamicTag>();
+  o.add(buildFloodlightActivityPublisherDynamicTag());
+  o.add(buildFloodlightActivityPublisherDynamicTag());
+  return o;
+}
+
+checkUnnamed3013(core.List<api.FloodlightActivityPublisherDynamicTag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFloodlightActivityPublisherDynamicTag(o[0]);
+  checkFloodlightActivityPublisherDynamicTag(o[1]);
+}
+
+buildUnnamed3014() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3014(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterFloodlightActivity = 0;
+buildFloodlightActivity() {
+  var o = new api.FloodlightActivity();
+  buildCounterFloodlightActivity++;
+  if (buildCounterFloodlightActivity < 3) {
+    o.accountId = "foo";
+    o.advertiserId = "foo";
+    o.advertiserIdDimensionValue = buildDimensionValue();
+    o.cacheBustingType = "foo";
+    o.countingMethod = "foo";
+    o.defaultTags = buildUnnamed3012();
+    o.expectedUrl = "foo";
+    o.floodlightActivityGroupId = "foo";
+    o.floodlightActivityGroupName = "foo";
+    o.floodlightActivityGroupTagString = "foo";
+    o.floodlightActivityGroupType = "foo";
+    o.floodlightConfigurationId = "foo";
+    o.floodlightConfigurationIdDimensionValue = buildDimensionValue();
+    o.hidden = true;
+    o.id = "foo";
+    o.idDimensionValue = buildDimensionValue();
+    o.imageTagEnabled = true;
+    o.kind = "foo";
+    o.name = "foo";
+    o.notes = "foo";
+    o.publisherTags = buildUnnamed3013();
+    o.secure = true;
+    o.sslCompliant = true;
+    o.sslRequired = true;
+    o.subaccountId = "foo";
+    o.tagFormat = "foo";
+    o.tagString = "foo";
+    o.userDefinedVariableTypes = buildUnnamed3014();
+  }
+  buildCounterFloodlightActivity--;
+  return o;
+}
+
+checkFloodlightActivity(api.FloodlightActivity o) {
+  buildCounterFloodlightActivity++;
+  if (buildCounterFloodlightActivity < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    checkDimensionValue(o.advertiserIdDimensionValue);
+    unittest.expect(o.cacheBustingType, unittest.equals('foo'));
+    unittest.expect(o.countingMethod, unittest.equals('foo'));
+    checkUnnamed3012(o.defaultTags);
+    unittest.expect(o.expectedUrl, unittest.equals('foo'));
+    unittest.expect(o.floodlightActivityGroupId, unittest.equals('foo'));
+    unittest.expect(o.floodlightActivityGroupName, unittest.equals('foo'));
+    unittest.expect(o.floodlightActivityGroupTagString, unittest.equals('foo'));
+    unittest.expect(o.floodlightActivityGroupType, unittest.equals('foo'));
+    unittest.expect(o.floodlightConfigurationId, unittest.equals('foo'));
+    checkDimensionValue(o.floodlightConfigurationIdDimensionValue);
+    unittest.expect(o.hidden, unittest.isTrue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkDimensionValue(o.idDimensionValue);
+    unittest.expect(o.imageTagEnabled, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    checkUnnamed3013(o.publisherTags);
+    unittest.expect(o.secure, unittest.isTrue);
+    unittest.expect(o.sslCompliant, unittest.isTrue);
+    unittest.expect(o.sslRequired, unittest.isTrue);
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    unittest.expect(o.tagFormat, unittest.equals('foo'));
+    unittest.expect(o.tagString, unittest.equals('foo'));
+    checkUnnamed3014(o.userDefinedVariableTypes);
+  }
+  buildCounterFloodlightActivity--;
+}
+
+core.int buildCounterFloodlightActivityDynamicTag = 0;
+buildFloodlightActivityDynamicTag() {
+  var o = new api.FloodlightActivityDynamicTag();
+  buildCounterFloodlightActivityDynamicTag++;
+  if (buildCounterFloodlightActivityDynamicTag < 3) {
+    o.id = "foo";
+    o.name = "foo";
+    o.tag = "foo";
+  }
+  buildCounterFloodlightActivityDynamicTag--;
+  return o;
+}
+
+checkFloodlightActivityDynamicTag(api.FloodlightActivityDynamicTag o) {
+  buildCounterFloodlightActivityDynamicTag++;
+  if (buildCounterFloodlightActivityDynamicTag < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.tag, unittest.equals('foo'));
+  }
+  buildCounterFloodlightActivityDynamicTag--;
+}
+
+core.int buildCounterFloodlightActivityGroup = 0;
+buildFloodlightActivityGroup() {
+  var o = new api.FloodlightActivityGroup();
+  buildCounterFloodlightActivityGroup++;
+  if (buildCounterFloodlightActivityGroup < 3) {
+    o.accountId = "foo";
+    o.advertiserId = "foo";
+    o.advertiserIdDimensionValue = buildDimensionValue();
+    o.floodlightConfigurationId = "foo";
+    o.floodlightConfigurationIdDimensionValue = buildDimensionValue();
+    o.id = "foo";
+    o.idDimensionValue = buildDimensionValue();
+    o.kind = "foo";
+    o.name = "foo";
+    o.subaccountId = "foo";
+    o.tagString = "foo";
+    o.type = "foo";
+  }
+  buildCounterFloodlightActivityGroup--;
+  return o;
+}
+
+checkFloodlightActivityGroup(api.FloodlightActivityGroup o) {
+  buildCounterFloodlightActivityGroup++;
+  if (buildCounterFloodlightActivityGroup < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    checkDimensionValue(o.advertiserIdDimensionValue);
+    unittest.expect(o.floodlightConfigurationId, unittest.equals('foo'));
+    checkDimensionValue(o.floodlightConfigurationIdDimensionValue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkDimensionValue(o.idDimensionValue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    unittest.expect(o.tagString, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterFloodlightActivityGroup--;
+}
+
+buildUnnamed3015() {
+  var o = new core.List<api.FloodlightActivityGroup>();
+  o.add(buildFloodlightActivityGroup());
+  o.add(buildFloodlightActivityGroup());
+  return o;
+}
+
+checkUnnamed3015(core.List<api.FloodlightActivityGroup> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFloodlightActivityGroup(o[0]);
+  checkFloodlightActivityGroup(o[1]);
+}
+
+core.int buildCounterFloodlightActivityGroupsListResponse = 0;
+buildFloodlightActivityGroupsListResponse() {
+  var o = new api.FloodlightActivityGroupsListResponse();
+  buildCounterFloodlightActivityGroupsListResponse++;
+  if (buildCounterFloodlightActivityGroupsListResponse < 3) {
+    o.floodlightActivityGroups = buildUnnamed3015();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterFloodlightActivityGroupsListResponse--;
+  return o;
+}
+
+checkFloodlightActivityGroupsListResponse(
+    api.FloodlightActivityGroupsListResponse o) {
+  buildCounterFloodlightActivityGroupsListResponse++;
+  if (buildCounterFloodlightActivityGroupsListResponse < 3) {
+    checkUnnamed3015(o.floodlightActivityGroups);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterFloodlightActivityGroupsListResponse--;
+}
+
+core.int buildCounterFloodlightActivityPublisherDynamicTag = 0;
+buildFloodlightActivityPublisherDynamicTag() {
+  var o = new api.FloodlightActivityPublisherDynamicTag();
+  buildCounterFloodlightActivityPublisherDynamicTag++;
+  if (buildCounterFloodlightActivityPublisherDynamicTag < 3) {
+    o.clickThrough = true;
+    o.directorySiteId = "foo";
+    o.dynamicTag = buildFloodlightActivityDynamicTag();
+    o.siteId = "foo";
+    o.siteIdDimensionValue = buildDimensionValue();
+    o.viewThrough = true;
+  }
+  buildCounterFloodlightActivityPublisherDynamicTag--;
+  return o;
+}
+
+checkFloodlightActivityPublisherDynamicTag(
+    api.FloodlightActivityPublisherDynamicTag o) {
+  buildCounterFloodlightActivityPublisherDynamicTag++;
+  if (buildCounterFloodlightActivityPublisherDynamicTag < 3) {
+    unittest.expect(o.clickThrough, unittest.isTrue);
+    unittest.expect(o.directorySiteId, unittest.equals('foo'));
+    checkFloodlightActivityDynamicTag(o.dynamicTag);
+    unittest.expect(o.siteId, unittest.equals('foo'));
+    checkDimensionValue(o.siteIdDimensionValue);
+    unittest.expect(o.viewThrough, unittest.isTrue);
+  }
+  buildCounterFloodlightActivityPublisherDynamicTag--;
+}
+
+buildUnnamed3016() {
+  var o = new core.List<api.ThirdPartyAuthenticationToken>();
+  o.add(buildThirdPartyAuthenticationToken());
+  o.add(buildThirdPartyAuthenticationToken());
+  return o;
+}
+
+checkUnnamed3016(core.List<api.ThirdPartyAuthenticationToken> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkThirdPartyAuthenticationToken(o[0]);
+  checkThirdPartyAuthenticationToken(o[1]);
+}
+
+buildUnnamed3017() {
+  var o = new core.List<api.UserDefinedVariableConfiguration>();
+  o.add(buildUserDefinedVariableConfiguration());
+  o.add(buildUserDefinedVariableConfiguration());
+  return o;
+}
+
+checkUnnamed3017(core.List<api.UserDefinedVariableConfiguration> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUserDefinedVariableConfiguration(o[0]);
+  checkUserDefinedVariableConfiguration(o[1]);
+}
+
+core.int buildCounterFloodlightConfiguration = 0;
+buildFloodlightConfiguration() {
+  var o = new api.FloodlightConfiguration();
+  buildCounterFloodlightConfiguration++;
+  if (buildCounterFloodlightConfiguration < 3) {
+    o.accountId = "foo";
+    o.advertiserId = "foo";
+    o.advertiserIdDimensionValue = buildDimensionValue();
+    o.analyticsDataSharingEnabled = true;
+    o.exposureToConversionEnabled = true;
+    o.firstDayOfWeek = "foo";
+    o.id = "foo";
+    o.idDimensionValue = buildDimensionValue();
+    o.inAppAttributionTrackingEnabled = true;
+    o.kind = "foo";
+    o.lookbackConfiguration = buildLookbackConfiguration();
+    o.naturalSearchConversionAttributionOption = "foo";
+    o.omnitureSettings = buildOmnitureSettings();
+    o.subaccountId = "foo";
+    o.tagSettings = buildTagSettings();
+    o.thirdPartyAuthenticationTokens = buildUnnamed3016();
+    o.userDefinedVariableConfigurations = buildUnnamed3017();
+  }
+  buildCounterFloodlightConfiguration--;
+  return o;
+}
+
+checkFloodlightConfiguration(api.FloodlightConfiguration o) {
+  buildCounterFloodlightConfiguration++;
+  if (buildCounterFloodlightConfiguration < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    checkDimensionValue(o.advertiserIdDimensionValue);
+    unittest.expect(o.analyticsDataSharingEnabled, unittest.isTrue);
+    unittest.expect(o.exposureToConversionEnabled, unittest.isTrue);
+    unittest.expect(o.firstDayOfWeek, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkDimensionValue(o.idDimensionValue);
+    unittest.expect(o.inAppAttributionTrackingEnabled, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkLookbackConfiguration(o.lookbackConfiguration);
+    unittest.expect(
+        o.naturalSearchConversionAttributionOption, unittest.equals('foo'));
+    checkOmnitureSettings(o.omnitureSettings);
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    checkTagSettings(o.tagSettings);
+    checkUnnamed3016(o.thirdPartyAuthenticationTokens);
+    checkUnnamed3017(o.userDefinedVariableConfigurations);
+  }
+  buildCounterFloodlightConfiguration--;
+}
+
+buildUnnamed3018() {
+  var o = new core.List<api.FloodlightConfiguration>();
+  o.add(buildFloodlightConfiguration());
+  o.add(buildFloodlightConfiguration());
+  return o;
+}
+
+checkUnnamed3018(core.List<api.FloodlightConfiguration> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFloodlightConfiguration(o[0]);
+  checkFloodlightConfiguration(o[1]);
+}
+
+core.int buildCounterFloodlightConfigurationsListResponse = 0;
+buildFloodlightConfigurationsListResponse() {
+  var o = new api.FloodlightConfigurationsListResponse();
+  buildCounterFloodlightConfigurationsListResponse++;
+  if (buildCounterFloodlightConfigurationsListResponse < 3) {
+    o.floodlightConfigurations = buildUnnamed3018();
+    o.kind = "foo";
+  }
+  buildCounterFloodlightConfigurationsListResponse--;
+  return o;
+}
+
+checkFloodlightConfigurationsListResponse(
+    api.FloodlightConfigurationsListResponse o) {
+  buildCounterFloodlightConfigurationsListResponse++;
+  if (buildCounterFloodlightConfigurationsListResponse < 3) {
+    checkUnnamed3018(o.floodlightConfigurations);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterFloodlightConfigurationsListResponse--;
+}
+
+buildUnnamed3019() {
+  var o = new core.List<api.Dimension>();
+  o.add(buildDimension());
+  o.add(buildDimension());
+  return o;
+}
+
+checkUnnamed3019(core.List<api.Dimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimension(o[0]);
+  checkDimension(o[1]);
+}
+
+buildUnnamed3020() {
+  var o = new core.List<api.Dimension>();
+  o.add(buildDimension());
+  o.add(buildDimension());
+  return o;
+}
+
+checkUnnamed3020(core.List<api.Dimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimension(o[0]);
+  checkDimension(o[1]);
+}
+
+buildUnnamed3021() {
+  var o = new core.List<api.Metric>();
+  o.add(buildMetric());
+  o.add(buildMetric());
+  return o;
+}
+
+checkUnnamed3021(core.List<api.Metric> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetric(o[0]);
+  checkMetric(o[1]);
+}
+
+core.int buildCounterFloodlightReportCompatibleFields = 0;
+buildFloodlightReportCompatibleFields() {
+  var o = new api.FloodlightReportCompatibleFields();
+  buildCounterFloodlightReportCompatibleFields++;
+  if (buildCounterFloodlightReportCompatibleFields < 3) {
+    o.dimensionFilters = buildUnnamed3019();
+    o.dimensions = buildUnnamed3020();
+    o.kind = "foo";
+    o.metrics = buildUnnamed3021();
+  }
+  buildCounterFloodlightReportCompatibleFields--;
+  return o;
+}
+
+checkFloodlightReportCompatibleFields(api.FloodlightReportCompatibleFields o) {
+  buildCounterFloodlightReportCompatibleFields++;
+  if (buildCounterFloodlightReportCompatibleFields < 3) {
+    checkUnnamed3019(o.dimensionFilters);
+    checkUnnamed3020(o.dimensions);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3021(o.metrics);
+  }
+  buildCounterFloodlightReportCompatibleFields--;
+}
+
+core.int buildCounterFrequencyCap = 0;
+buildFrequencyCap() {
+  var o = new api.FrequencyCap();
+  buildCounterFrequencyCap++;
+  if (buildCounterFrequencyCap < 3) {
+    o.duration = "foo";
+    o.impressions = "foo";
+  }
+  buildCounterFrequencyCap--;
+  return o;
+}
+
+checkFrequencyCap(api.FrequencyCap o) {
+  buildCounterFrequencyCap++;
+  if (buildCounterFrequencyCap < 3) {
+    unittest.expect(o.duration, unittest.equals('foo'));
+    unittest.expect(o.impressions, unittest.equals('foo'));
+  }
+  buildCounterFrequencyCap--;
+}
+
+core.int buildCounterFsCommand = 0;
+buildFsCommand() {
+  var o = new api.FsCommand();
+  buildCounterFsCommand++;
+  if (buildCounterFsCommand < 3) {
+    o.left = 42;
+    o.positionOption = "foo";
+    o.top = 42;
+    o.windowHeight = 42;
+    o.windowWidth = 42;
+  }
+  buildCounterFsCommand--;
+  return o;
+}
+
+checkFsCommand(api.FsCommand o) {
+  buildCounterFsCommand++;
+  if (buildCounterFsCommand < 3) {
+    unittest.expect(o.left, unittest.equals(42));
+    unittest.expect(o.positionOption, unittest.equals('foo'));
+    unittest.expect(o.top, unittest.equals(42));
+    unittest.expect(o.windowHeight, unittest.equals(42));
+    unittest.expect(o.windowWidth, unittest.equals(42));
+  }
+  buildCounterFsCommand--;
+}
+
+buildUnnamed3022() {
+  var o = new core.List<api.City>();
+  o.add(buildCity());
+  o.add(buildCity());
+  return o;
+}
+
+checkUnnamed3022(core.List<api.City> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCity(o[0]);
+  checkCity(o[1]);
+}
+
+buildUnnamed3023() {
+  var o = new core.List<api.Country>();
+  o.add(buildCountry());
+  o.add(buildCountry());
+  return o;
+}
+
+checkUnnamed3023(core.List<api.Country> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCountry(o[0]);
+  checkCountry(o[1]);
+}
+
+buildUnnamed3024() {
+  var o = new core.List<api.Metro>();
+  o.add(buildMetro());
+  o.add(buildMetro());
+  return o;
+}
+
+checkUnnamed3024(core.List<api.Metro> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetro(o[0]);
+  checkMetro(o[1]);
+}
+
+buildUnnamed3025() {
+  var o = new core.List<api.PostalCode>();
+  o.add(buildPostalCode());
+  o.add(buildPostalCode());
+  return o;
+}
+
+checkUnnamed3025(core.List<api.PostalCode> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPostalCode(o[0]);
+  checkPostalCode(o[1]);
+}
+
+buildUnnamed3026() {
+  var o = new core.List<api.Region>();
+  o.add(buildRegion());
+  o.add(buildRegion());
+  return o;
+}
+
+checkUnnamed3026(core.List<api.Region> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRegion(o[0]);
+  checkRegion(o[1]);
+}
+
+core.int buildCounterGeoTargeting = 0;
+buildGeoTargeting() {
+  var o = new api.GeoTargeting();
+  buildCounterGeoTargeting++;
+  if (buildCounterGeoTargeting < 3) {
+    o.cities = buildUnnamed3022();
+    o.countries = buildUnnamed3023();
+    o.excludeCountries = true;
+    o.metros = buildUnnamed3024();
+    o.postalCodes = buildUnnamed3025();
+    o.regions = buildUnnamed3026();
+  }
+  buildCounterGeoTargeting--;
+  return o;
+}
+
+checkGeoTargeting(api.GeoTargeting o) {
+  buildCounterGeoTargeting++;
+  if (buildCounterGeoTargeting < 3) {
+    checkUnnamed3022(o.cities);
+    checkUnnamed3023(o.countries);
+    unittest.expect(o.excludeCountries, unittest.isTrue);
+    checkUnnamed3024(o.metros);
+    checkUnnamed3025(o.postalCodes);
+    checkUnnamed3026(o.regions);
+  }
+  buildCounterGeoTargeting--;
+}
+
+buildUnnamed3027() {
+  var o = new core.List<api.AdSlot>();
+  o.add(buildAdSlot());
+  o.add(buildAdSlot());
+  return o;
+}
+
+checkUnnamed3027(core.List<api.AdSlot> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAdSlot(o[0]);
+  checkAdSlot(o[1]);
+}
+
+core.int buildCounterInventoryItem = 0;
+buildInventoryItem() {
+  var o = new api.InventoryItem();
+  buildCounterInventoryItem++;
+  if (buildCounterInventoryItem < 3) {
+    o.accountId = "foo";
+    o.adSlots = buildUnnamed3027();
+    o.advertiserId = "foo";
+    o.contentCategoryId = "foo";
+    o.estimatedClickThroughRate = "foo";
+    o.estimatedConversionRate = "foo";
+    o.id = "foo";
+    o.inPlan = true;
+    o.kind = "foo";
+    o.lastModifiedInfo = buildLastModifiedInfo();
+    o.name = "foo";
+    o.negotiationChannelId = "foo";
+    o.orderId = "foo";
+    o.placementStrategyId = "foo";
+    o.pricing = buildPricing();
+    o.projectId = "foo";
+    o.rfpId = "foo";
+    o.siteId = "foo";
+    o.subaccountId = "foo";
+    o.type = "foo";
+  }
+  buildCounterInventoryItem--;
+  return o;
+}
+
+checkInventoryItem(api.InventoryItem o) {
+  buildCounterInventoryItem++;
+  if (buildCounterInventoryItem < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkUnnamed3027(o.adSlots);
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    unittest.expect(o.contentCategoryId, unittest.equals('foo'));
+    unittest.expect(o.estimatedClickThroughRate, unittest.equals('foo'));
+    unittest.expect(o.estimatedConversionRate, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.inPlan, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkLastModifiedInfo(o.lastModifiedInfo);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.negotiationChannelId, unittest.equals('foo'));
+    unittest.expect(o.orderId, unittest.equals('foo'));
+    unittest.expect(o.placementStrategyId, unittest.equals('foo'));
+    checkPricing(o.pricing);
+    unittest.expect(o.projectId, unittest.equals('foo'));
+    unittest.expect(o.rfpId, unittest.equals('foo'));
+    unittest.expect(o.siteId, unittest.equals('foo'));
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterInventoryItem--;
+}
+
+buildUnnamed3028() {
+  var o = new core.List<api.InventoryItem>();
+  o.add(buildInventoryItem());
+  o.add(buildInventoryItem());
+  return o;
+}
+
+checkUnnamed3028(core.List<api.InventoryItem> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInventoryItem(o[0]);
+  checkInventoryItem(o[1]);
+}
+
+core.int buildCounterInventoryItemsListResponse = 0;
+buildInventoryItemsListResponse() {
+  var o = new api.InventoryItemsListResponse();
+  buildCounterInventoryItemsListResponse++;
+  if (buildCounterInventoryItemsListResponse < 3) {
+    o.inventoryItems = buildUnnamed3028();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterInventoryItemsListResponse--;
+  return o;
+}
+
+checkInventoryItemsListResponse(api.InventoryItemsListResponse o) {
+  buildCounterInventoryItemsListResponse++;
+  if (buildCounterInventoryItemsListResponse < 3) {
+    checkUnnamed3028(o.inventoryItems);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterInventoryItemsListResponse--;
+}
+
+core.int buildCounterKeyValueTargetingExpression = 0;
+buildKeyValueTargetingExpression() {
+  var o = new api.KeyValueTargetingExpression();
+  buildCounterKeyValueTargetingExpression++;
+  if (buildCounterKeyValueTargetingExpression < 3) {
+    o.expression = "foo";
+  }
+  buildCounterKeyValueTargetingExpression--;
+  return o;
+}
+
+checkKeyValueTargetingExpression(api.KeyValueTargetingExpression o) {
+  buildCounterKeyValueTargetingExpression++;
+  if (buildCounterKeyValueTargetingExpression < 3) {
+    unittest.expect(o.expression, unittest.equals('foo'));
+  }
+  buildCounterKeyValueTargetingExpression--;
+}
+
+core.int buildCounterLandingPage = 0;
+buildLandingPage() {
+  var o = new api.LandingPage();
+  buildCounterLandingPage++;
+  if (buildCounterLandingPage < 3) {
+    o.default_ = true;
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.url = "foo";
+  }
+  buildCounterLandingPage--;
+  return o;
+}
+
+checkLandingPage(api.LandingPage o) {
+  buildCounterLandingPage++;
+  if (buildCounterLandingPage < 3) {
+    unittest.expect(o.default_, unittest.isTrue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterLandingPage--;
+}
+
+buildUnnamed3029() {
+  var o = new core.List<api.LandingPage>();
+  o.add(buildLandingPage());
+  o.add(buildLandingPage());
+  return o;
+}
+
+checkUnnamed3029(core.List<api.LandingPage> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLandingPage(o[0]);
+  checkLandingPage(o[1]);
+}
+
+core.int buildCounterLandingPagesListResponse = 0;
+buildLandingPagesListResponse() {
+  var o = new api.LandingPagesListResponse();
+  buildCounterLandingPagesListResponse++;
+  if (buildCounterLandingPagesListResponse < 3) {
+    o.kind = "foo";
+    o.landingPages = buildUnnamed3029();
+  }
+  buildCounterLandingPagesListResponse--;
+  return o;
+}
+
+checkLandingPagesListResponse(api.LandingPagesListResponse o) {
+  buildCounterLandingPagesListResponse++;
+  if (buildCounterLandingPagesListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3029(o.landingPages);
+  }
+  buildCounterLandingPagesListResponse--;
+}
+
+core.int buildCounterLanguage = 0;
+buildLanguage() {
+  var o = new api.Language();
+  buildCounterLanguage++;
+  if (buildCounterLanguage < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.languageCode = "foo";
+    o.name = "foo";
+  }
+  buildCounterLanguage--;
+  return o;
+}
+
+checkLanguage(api.Language o) {
+  buildCounterLanguage++;
+  if (buildCounterLanguage < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.languageCode, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterLanguage--;
+}
+
+buildUnnamed3030() {
+  var o = new core.List<api.Language>();
+  o.add(buildLanguage());
+  o.add(buildLanguage());
+  return o;
+}
+
+checkUnnamed3030(core.List<api.Language> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLanguage(o[0]);
+  checkLanguage(o[1]);
+}
+
+core.int buildCounterLanguageTargeting = 0;
+buildLanguageTargeting() {
+  var o = new api.LanguageTargeting();
+  buildCounterLanguageTargeting++;
+  if (buildCounterLanguageTargeting < 3) {
+    o.languages = buildUnnamed3030();
+  }
+  buildCounterLanguageTargeting--;
+  return o;
+}
+
+checkLanguageTargeting(api.LanguageTargeting o) {
+  buildCounterLanguageTargeting++;
+  if (buildCounterLanguageTargeting < 3) {
+    checkUnnamed3030(o.languages);
+  }
+  buildCounterLanguageTargeting--;
+}
+
+buildUnnamed3031() {
+  var o = new core.List<api.Language>();
+  o.add(buildLanguage());
+  o.add(buildLanguage());
+  return o;
+}
+
+checkUnnamed3031(core.List<api.Language> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLanguage(o[0]);
+  checkLanguage(o[1]);
+}
+
+core.int buildCounterLanguagesListResponse = 0;
+buildLanguagesListResponse() {
+  var o = new api.LanguagesListResponse();
+  buildCounterLanguagesListResponse++;
+  if (buildCounterLanguagesListResponse < 3) {
+    o.kind = "foo";
+    o.languages = buildUnnamed3031();
+  }
+  buildCounterLanguagesListResponse--;
+  return o;
+}
+
+checkLanguagesListResponse(api.LanguagesListResponse o) {
+  buildCounterLanguagesListResponse++;
+  if (buildCounterLanguagesListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3031(o.languages);
+  }
+  buildCounterLanguagesListResponse--;
+}
+
+core.int buildCounterLastModifiedInfo = 0;
+buildLastModifiedInfo() {
+  var o = new api.LastModifiedInfo();
+  buildCounterLastModifiedInfo++;
+  if (buildCounterLastModifiedInfo < 3) {
+    o.time = "foo";
+  }
+  buildCounterLastModifiedInfo--;
+  return o;
+}
+
+checkLastModifiedInfo(api.LastModifiedInfo o) {
+  buildCounterLastModifiedInfo++;
+  if (buildCounterLastModifiedInfo < 3) {
+    unittest.expect(o.time, unittest.equals('foo'));
+  }
+  buildCounterLastModifiedInfo--;
+}
+
+buildUnnamed3032() {
+  var o = new core.List<api.ListPopulationTerm>();
+  o.add(buildListPopulationTerm());
+  o.add(buildListPopulationTerm());
+  return o;
+}
+
+checkUnnamed3032(core.List<api.ListPopulationTerm> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkListPopulationTerm(o[0]);
+  checkListPopulationTerm(o[1]);
+}
+
+core.int buildCounterListPopulationClause = 0;
+buildListPopulationClause() {
+  var o = new api.ListPopulationClause();
+  buildCounterListPopulationClause++;
+  if (buildCounterListPopulationClause < 3) {
+    o.terms = buildUnnamed3032();
+  }
+  buildCounterListPopulationClause--;
+  return o;
+}
+
+checkListPopulationClause(api.ListPopulationClause o) {
+  buildCounterListPopulationClause++;
+  if (buildCounterListPopulationClause < 3) {
+    checkUnnamed3032(o.terms);
+  }
+  buildCounterListPopulationClause--;
+}
+
+buildUnnamed3033() {
+  var o = new core.List<api.ListPopulationClause>();
+  o.add(buildListPopulationClause());
+  o.add(buildListPopulationClause());
+  return o;
+}
+
+checkUnnamed3033(core.List<api.ListPopulationClause> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkListPopulationClause(o[0]);
+  checkListPopulationClause(o[1]);
+}
+
+core.int buildCounterListPopulationRule = 0;
+buildListPopulationRule() {
+  var o = new api.ListPopulationRule();
+  buildCounterListPopulationRule++;
+  if (buildCounterListPopulationRule < 3) {
+    o.floodlightActivityId = "foo";
+    o.floodlightActivityName = "foo";
+    o.listPopulationClauses = buildUnnamed3033();
+  }
+  buildCounterListPopulationRule--;
+  return o;
+}
+
+checkListPopulationRule(api.ListPopulationRule o) {
+  buildCounterListPopulationRule++;
+  if (buildCounterListPopulationRule < 3) {
+    unittest.expect(o.floodlightActivityId, unittest.equals('foo'));
+    unittest.expect(o.floodlightActivityName, unittest.equals('foo'));
+    checkUnnamed3033(o.listPopulationClauses);
+  }
+  buildCounterListPopulationRule--;
+}
+
+core.int buildCounterListPopulationTerm = 0;
+buildListPopulationTerm() {
+  var o = new api.ListPopulationTerm();
+  buildCounterListPopulationTerm++;
+  if (buildCounterListPopulationTerm < 3) {
+    o.contains = true;
+    o.negation = true;
+    o.operator = "foo";
+    o.remarketingListId = "foo";
+    o.type = "foo";
+    o.value = "foo";
+    o.variableFriendlyName = "foo";
+    o.variableName = "foo";
+  }
+  buildCounterListPopulationTerm--;
+  return o;
+}
+
+checkListPopulationTerm(api.ListPopulationTerm o) {
+  buildCounterListPopulationTerm++;
+  if (buildCounterListPopulationTerm < 3) {
+    unittest.expect(o.contains, unittest.isTrue);
+    unittest.expect(o.negation, unittest.isTrue);
+    unittest.expect(o.operator, unittest.equals('foo'));
+    unittest.expect(o.remarketingListId, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+    unittest.expect(o.variableFriendlyName, unittest.equals('foo'));
+    unittest.expect(o.variableName, unittest.equals('foo'));
+  }
+  buildCounterListPopulationTerm--;
+}
+
+core.int buildCounterListTargetingExpression = 0;
+buildListTargetingExpression() {
+  var o = new api.ListTargetingExpression();
+  buildCounterListTargetingExpression++;
+  if (buildCounterListTargetingExpression < 3) {
+    o.expression = "foo";
+  }
+  buildCounterListTargetingExpression--;
+  return o;
+}
+
+checkListTargetingExpression(api.ListTargetingExpression o) {
+  buildCounterListTargetingExpression++;
+  if (buildCounterListTargetingExpression < 3) {
+    unittest.expect(o.expression, unittest.equals('foo'));
+  }
+  buildCounterListTargetingExpression--;
+}
+
+core.int buildCounterLookbackConfiguration = 0;
+buildLookbackConfiguration() {
+  var o = new api.LookbackConfiguration();
+  buildCounterLookbackConfiguration++;
+  if (buildCounterLookbackConfiguration < 3) {
+    o.clickDuration = 42;
+    o.postImpressionActivitiesDuration = 42;
+  }
+  buildCounterLookbackConfiguration--;
+  return o;
+}
+
+checkLookbackConfiguration(api.LookbackConfiguration o) {
+  buildCounterLookbackConfiguration++;
+  if (buildCounterLookbackConfiguration < 3) {
+    unittest.expect(o.clickDuration, unittest.equals(42));
+    unittest.expect(o.postImpressionActivitiesDuration, unittest.equals(42));
+  }
+  buildCounterLookbackConfiguration--;
+}
+
+core.int buildCounterMetric = 0;
+buildMetric() {
+  var o = new api.Metric();
+  buildCounterMetric++;
+  if (buildCounterMetric < 3) {
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterMetric--;
+  return o;
+}
+
+checkMetric(api.Metric o) {
+  buildCounterMetric++;
+  if (buildCounterMetric < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterMetric--;
+}
+
+core.int buildCounterMetro = 0;
+buildMetro() {
+  var o = new api.Metro();
+  buildCounterMetro++;
+  if (buildCounterMetro < 3) {
+    o.countryCode = "foo";
+    o.countryDartId = "foo";
+    o.dartId = "foo";
+    o.dmaId = "foo";
+    o.kind = "foo";
+    o.metroCode = "foo";
+    o.name = "foo";
+  }
+  buildCounterMetro--;
+  return o;
+}
+
+checkMetro(api.Metro o) {
+  buildCounterMetro++;
+  if (buildCounterMetro < 3) {
+    unittest.expect(o.countryCode, unittest.equals('foo'));
+    unittest.expect(o.countryDartId, unittest.equals('foo'));
+    unittest.expect(o.dartId, unittest.equals('foo'));
+    unittest.expect(o.dmaId, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.metroCode, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterMetro--;
+}
+
+buildUnnamed3034() {
+  var o = new core.List<api.Metro>();
+  o.add(buildMetro());
+  o.add(buildMetro());
+  return o;
+}
+
+checkUnnamed3034(core.List<api.Metro> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetro(o[0]);
+  checkMetro(o[1]);
+}
+
+core.int buildCounterMetrosListResponse = 0;
+buildMetrosListResponse() {
+  var o = new api.MetrosListResponse();
+  buildCounterMetrosListResponse++;
+  if (buildCounterMetrosListResponse < 3) {
+    o.kind = "foo";
+    o.metros = buildUnnamed3034();
+  }
+  buildCounterMetrosListResponse--;
+  return o;
+}
+
+checkMetrosListResponse(api.MetrosListResponse o) {
+  buildCounterMetrosListResponse++;
+  if (buildCounterMetrosListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3034(o.metros);
+  }
+  buildCounterMetrosListResponse--;
+}
+
+core.int buildCounterMobileCarrier = 0;
+buildMobileCarrier() {
+  var o = new api.MobileCarrier();
+  buildCounterMobileCarrier++;
+  if (buildCounterMobileCarrier < 3) {
+    o.countryCode = "foo";
+    o.countryDartId = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterMobileCarrier--;
+  return o;
+}
+
+checkMobileCarrier(api.MobileCarrier o) {
+  buildCounterMobileCarrier++;
+  if (buildCounterMobileCarrier < 3) {
+    unittest.expect(o.countryCode, unittest.equals('foo'));
+    unittest.expect(o.countryDartId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterMobileCarrier--;
+}
+
+buildUnnamed3035() {
+  var o = new core.List<api.MobileCarrier>();
+  o.add(buildMobileCarrier());
+  o.add(buildMobileCarrier());
+  return o;
+}
+
+checkUnnamed3035(core.List<api.MobileCarrier> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMobileCarrier(o[0]);
+  checkMobileCarrier(o[1]);
+}
+
+core.int buildCounterMobileCarriersListResponse = 0;
+buildMobileCarriersListResponse() {
+  var o = new api.MobileCarriersListResponse();
+  buildCounterMobileCarriersListResponse++;
+  if (buildCounterMobileCarriersListResponse < 3) {
+    o.kind = "foo";
+    o.mobileCarriers = buildUnnamed3035();
+  }
+  buildCounterMobileCarriersListResponse--;
+  return o;
+}
+
+checkMobileCarriersListResponse(api.MobileCarriersListResponse o) {
+  buildCounterMobileCarriersListResponse++;
+  if (buildCounterMobileCarriersListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3035(o.mobileCarriers);
+  }
+  buildCounterMobileCarriersListResponse--;
+}
+
+buildUnnamed3036() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3036(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterObjectFilter = 0;
+buildObjectFilter() {
+  var o = new api.ObjectFilter();
+  buildCounterObjectFilter++;
+  if (buildCounterObjectFilter < 3) {
+    o.kind = "foo";
+    o.objectIds = buildUnnamed3036();
+    o.status = "foo";
+  }
+  buildCounterObjectFilter--;
+  return o;
+}
+
+checkObjectFilter(api.ObjectFilter o) {
+  buildCounterObjectFilter++;
+  if (buildCounterObjectFilter < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3036(o.objectIds);
+    unittest.expect(o.status, unittest.equals('foo'));
+  }
+  buildCounterObjectFilter--;
+}
+
+core.int buildCounterOffsetPosition = 0;
+buildOffsetPosition() {
+  var o = new api.OffsetPosition();
+  buildCounterOffsetPosition++;
+  if (buildCounterOffsetPosition < 3) {
+    o.left = 42;
+    o.top = 42;
+  }
+  buildCounterOffsetPosition--;
+  return o;
+}
+
+checkOffsetPosition(api.OffsetPosition o) {
+  buildCounterOffsetPosition++;
+  if (buildCounterOffsetPosition < 3) {
+    unittest.expect(o.left, unittest.equals(42));
+    unittest.expect(o.top, unittest.equals(42));
+  }
+  buildCounterOffsetPosition--;
+}
+
+core.int buildCounterOmnitureSettings = 0;
+buildOmnitureSettings() {
+  var o = new api.OmnitureSettings();
+  buildCounterOmnitureSettings++;
+  if (buildCounterOmnitureSettings < 3) {
+    o.omnitureCostDataEnabled = true;
+    o.omnitureIntegrationEnabled = true;
+  }
+  buildCounterOmnitureSettings--;
+  return o;
+}
+
+checkOmnitureSettings(api.OmnitureSettings o) {
+  buildCounterOmnitureSettings++;
+  if (buildCounterOmnitureSettings < 3) {
+    unittest.expect(o.omnitureCostDataEnabled, unittest.isTrue);
+    unittest.expect(o.omnitureIntegrationEnabled, unittest.isTrue);
+  }
+  buildCounterOmnitureSettings--;
+}
+
+core.int buildCounterOperatingSystem = 0;
+buildOperatingSystem() {
+  var o = new api.OperatingSystem();
+  buildCounterOperatingSystem++;
+  if (buildCounterOperatingSystem < 3) {
+    o.dartId = "foo";
+    o.desktop = true;
+    o.kind = "foo";
+    o.mobile = true;
+    o.name = "foo";
+  }
+  buildCounterOperatingSystem--;
+  return o;
+}
+
+checkOperatingSystem(api.OperatingSystem o) {
+  buildCounterOperatingSystem++;
+  if (buildCounterOperatingSystem < 3) {
+    unittest.expect(o.dartId, unittest.equals('foo'));
+    unittest.expect(o.desktop, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.mobile, unittest.isTrue);
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterOperatingSystem--;
+}
+
+core.int buildCounterOperatingSystemVersion = 0;
+buildOperatingSystemVersion() {
+  var o = new api.OperatingSystemVersion();
+  buildCounterOperatingSystemVersion++;
+  if (buildCounterOperatingSystemVersion < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.majorVersion = "foo";
+    o.minorVersion = "foo";
+    o.name = "foo";
+    o.operatingSystem = buildOperatingSystem();
+  }
+  buildCounterOperatingSystemVersion--;
+  return o;
+}
+
+checkOperatingSystemVersion(api.OperatingSystemVersion o) {
+  buildCounterOperatingSystemVersion++;
+  if (buildCounterOperatingSystemVersion < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.majorVersion, unittest.equals('foo'));
+    unittest.expect(o.minorVersion, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkOperatingSystem(o.operatingSystem);
+  }
+  buildCounterOperatingSystemVersion--;
+}
+
+buildUnnamed3037() {
+  var o = new core.List<api.OperatingSystemVersion>();
+  o.add(buildOperatingSystemVersion());
+  o.add(buildOperatingSystemVersion());
+  return o;
+}
+
+checkUnnamed3037(core.List<api.OperatingSystemVersion> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOperatingSystemVersion(o[0]);
+  checkOperatingSystemVersion(o[1]);
+}
+
+core.int buildCounterOperatingSystemVersionsListResponse = 0;
+buildOperatingSystemVersionsListResponse() {
+  var o = new api.OperatingSystemVersionsListResponse();
+  buildCounterOperatingSystemVersionsListResponse++;
+  if (buildCounterOperatingSystemVersionsListResponse < 3) {
+    o.kind = "foo";
+    o.operatingSystemVersions = buildUnnamed3037();
+  }
+  buildCounterOperatingSystemVersionsListResponse--;
+  return o;
+}
+
+checkOperatingSystemVersionsListResponse(
+    api.OperatingSystemVersionsListResponse o) {
+  buildCounterOperatingSystemVersionsListResponse++;
+  if (buildCounterOperatingSystemVersionsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3037(o.operatingSystemVersions);
+  }
+  buildCounterOperatingSystemVersionsListResponse--;
+}
+
+buildUnnamed3038() {
+  var o = new core.List<api.OperatingSystem>();
+  o.add(buildOperatingSystem());
+  o.add(buildOperatingSystem());
+  return o;
+}
+
+checkUnnamed3038(core.List<api.OperatingSystem> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOperatingSystem(o[0]);
+  checkOperatingSystem(o[1]);
+}
+
+core.int buildCounterOperatingSystemsListResponse = 0;
+buildOperatingSystemsListResponse() {
+  var o = new api.OperatingSystemsListResponse();
+  buildCounterOperatingSystemsListResponse++;
+  if (buildCounterOperatingSystemsListResponse < 3) {
+    o.kind = "foo";
+    o.operatingSystems = buildUnnamed3038();
+  }
+  buildCounterOperatingSystemsListResponse--;
+  return o;
+}
+
+checkOperatingSystemsListResponse(api.OperatingSystemsListResponse o) {
+  buildCounterOperatingSystemsListResponse++;
+  if (buildCounterOperatingSystemsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3038(o.operatingSystems);
+  }
+  buildCounterOperatingSystemsListResponse--;
+}
+
+core.int buildCounterOptimizationActivity = 0;
+buildOptimizationActivity() {
+  var o = new api.OptimizationActivity();
+  buildCounterOptimizationActivity++;
+  if (buildCounterOptimizationActivity < 3) {
+    o.floodlightActivityId = "foo";
+    o.floodlightActivityIdDimensionValue = buildDimensionValue();
+    o.weight = 42;
+  }
+  buildCounterOptimizationActivity--;
+  return o;
+}
+
+checkOptimizationActivity(api.OptimizationActivity o) {
+  buildCounterOptimizationActivity++;
+  if (buildCounterOptimizationActivity < 3) {
+    unittest.expect(o.floodlightActivityId, unittest.equals('foo'));
+    checkDimensionValue(o.floodlightActivityIdDimensionValue);
+    unittest.expect(o.weight, unittest.equals(42));
+  }
+  buildCounterOptimizationActivity--;
+}
+
+buildUnnamed3039() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3039(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3040() {
+  var o = new core.List<api.OrderContact>();
+  o.add(buildOrderContact());
+  o.add(buildOrderContact());
+  return o;
+}
+
+checkUnnamed3040(core.List<api.OrderContact> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderContact(o[0]);
+  checkOrderContact(o[1]);
+}
+
+buildUnnamed3041() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3041(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3042() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3042(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterOrder = 0;
+buildOrder() {
+  var o = new api.Order();
+  buildCounterOrder++;
+  if (buildCounterOrder < 3) {
+    o.accountId = "foo";
+    o.advertiserId = "foo";
+    o.approverUserProfileIds = buildUnnamed3039();
+    o.buyerInvoiceId = "foo";
+    o.buyerOrganizationName = "foo";
+    o.comments = "foo";
+    o.contacts = buildUnnamed3040();
+    o.id = "foo";
+    o.kind = "foo";
+    o.lastModifiedInfo = buildLastModifiedInfo();
+    o.name = "foo";
+    o.notes = "foo";
+    o.planningTermId = "foo";
+    o.projectId = "foo";
+    o.sellerOrderId = "foo";
+    o.sellerOrganizationName = "foo";
+    o.siteId = buildUnnamed3041();
+    o.siteNames = buildUnnamed3042();
+    o.subaccountId = "foo";
+    o.termsAndConditions = "foo";
+  }
+  buildCounterOrder--;
+  return o;
+}
+
+checkOrder(api.Order o) {
+  buildCounterOrder++;
+  if (buildCounterOrder < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    checkUnnamed3039(o.approverUserProfileIds);
+    unittest.expect(o.buyerInvoiceId, unittest.equals('foo'));
+    unittest.expect(o.buyerOrganizationName, unittest.equals('foo'));
+    unittest.expect(o.comments, unittest.equals('foo'));
+    checkUnnamed3040(o.contacts);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkLastModifiedInfo(o.lastModifiedInfo);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    unittest.expect(o.planningTermId, unittest.equals('foo'));
+    unittest.expect(o.projectId, unittest.equals('foo'));
+    unittest.expect(o.sellerOrderId, unittest.equals('foo'));
+    unittest.expect(o.sellerOrganizationName, unittest.equals('foo'));
+    checkUnnamed3041(o.siteId);
+    checkUnnamed3042(o.siteNames);
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    unittest.expect(o.termsAndConditions, unittest.equals('foo'));
+  }
+  buildCounterOrder--;
+}
+
+core.int buildCounterOrderContact = 0;
+buildOrderContact() {
+  var o = new api.OrderContact();
+  buildCounterOrderContact++;
+  if (buildCounterOrderContact < 3) {
+    o.contactInfo = "foo";
+    o.contactName = "foo";
+    o.contactTitle = "foo";
+    o.contactType = "foo";
+    o.signatureUserProfileId = "foo";
+  }
+  buildCounterOrderContact--;
+  return o;
+}
+
+checkOrderContact(api.OrderContact o) {
+  buildCounterOrderContact++;
+  if (buildCounterOrderContact < 3) {
+    unittest.expect(o.contactInfo, unittest.equals('foo'));
+    unittest.expect(o.contactName, unittest.equals('foo'));
+    unittest.expect(o.contactTitle, unittest.equals('foo'));
+    unittest.expect(o.contactType, unittest.equals('foo'));
+    unittest.expect(o.signatureUserProfileId, unittest.equals('foo'));
+  }
+  buildCounterOrderContact--;
+}
+
+buildUnnamed3043() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3043(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3044() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3044(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterOrderDocument = 0;
+buildOrderDocument() {
+  var o = new api.OrderDocument();
+  buildCounterOrderDocument++;
+  if (buildCounterOrderDocument < 3) {
+    o.accountId = "foo";
+    o.advertiserId = "foo";
+    o.amendedOrderDocumentId = "foo";
+    o.approvedByUserProfileIds = buildUnnamed3043();
+    o.cancelled = true;
+    o.createdInfo = buildLastModifiedInfo();
+    o.effectiveDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.id = "foo";
+    o.kind = "foo";
+    o.lastSentRecipients = buildUnnamed3044();
+    o.lastSentTime = core.DateTime.parse("2002-02-27T14:01:02");
+    o.orderId = "foo";
+    o.projectId = "foo";
+    o.signed = true;
+    o.subaccountId = "foo";
+    o.title = "foo";
+    o.type = "foo";
+  }
+  buildCounterOrderDocument--;
+  return o;
+}
+
+checkOrderDocument(api.OrderDocument o) {
+  buildCounterOrderDocument++;
+  if (buildCounterOrderDocument < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    unittest.expect(o.amendedOrderDocumentId, unittest.equals('foo'));
+    checkUnnamed3043(o.approvedByUserProfileIds);
+    unittest.expect(o.cancelled, unittest.isTrue);
+    checkLastModifiedInfo(o.createdInfo);
+    unittest.expect(o.effectiveDate,
+        unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3044(o.lastSentRecipients);
+    unittest.expect(o.lastSentTime,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.orderId, unittest.equals('foo'));
+    unittest.expect(o.projectId, unittest.equals('foo'));
+    unittest.expect(o.signed, unittest.isTrue);
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterOrderDocument--;
+}
+
+buildUnnamed3045() {
+  var o = new core.List<api.OrderDocument>();
+  o.add(buildOrderDocument());
+  o.add(buildOrderDocument());
+  return o;
+}
+
+checkUnnamed3045(core.List<api.OrderDocument> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrderDocument(o[0]);
+  checkOrderDocument(o[1]);
+}
+
+core.int buildCounterOrderDocumentsListResponse = 0;
+buildOrderDocumentsListResponse() {
+  var o = new api.OrderDocumentsListResponse();
+  buildCounterOrderDocumentsListResponse++;
+  if (buildCounterOrderDocumentsListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.orderDocuments = buildUnnamed3045();
+  }
+  buildCounterOrderDocumentsListResponse--;
+  return o;
+}
+
+checkOrderDocumentsListResponse(api.OrderDocumentsListResponse o) {
+  buildCounterOrderDocumentsListResponse++;
+  if (buildCounterOrderDocumentsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3045(o.orderDocuments);
+  }
+  buildCounterOrderDocumentsListResponse--;
+}
+
+buildUnnamed3046() {
+  var o = new core.List<api.Order>();
+  o.add(buildOrder());
+  o.add(buildOrder());
+  return o;
+}
+
+checkUnnamed3046(core.List<api.Order> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrder(o[0]);
+  checkOrder(o[1]);
+}
+
+core.int buildCounterOrdersListResponse = 0;
+buildOrdersListResponse() {
+  var o = new api.OrdersListResponse();
+  buildCounterOrdersListResponse++;
+  if (buildCounterOrdersListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.orders = buildUnnamed3046();
+  }
+  buildCounterOrdersListResponse--;
+  return o;
+}
+
+checkOrdersListResponse(api.OrdersListResponse o) {
+  buildCounterOrdersListResponse++;
+  if (buildCounterOrdersListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3046(o.orders);
+  }
+  buildCounterOrdersListResponse--;
+}
+
+buildUnnamed3047() {
+  var o = new core.List<api.Dimension>();
+  o.add(buildDimension());
+  o.add(buildDimension());
+  return o;
+}
+
+checkUnnamed3047(core.List<api.Dimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimension(o[0]);
+  checkDimension(o[1]);
+}
+
+buildUnnamed3048() {
+  var o = new core.List<api.Dimension>();
+  o.add(buildDimension());
+  o.add(buildDimension());
+  return o;
+}
+
+checkUnnamed3048(core.List<api.Dimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimension(o[0]);
+  checkDimension(o[1]);
+}
+
+buildUnnamed3049() {
+  var o = new core.List<api.Metric>();
+  o.add(buildMetric());
+  o.add(buildMetric());
+  return o;
+}
+
+checkUnnamed3049(core.List<api.Metric> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetric(o[0]);
+  checkMetric(o[1]);
+}
+
+buildUnnamed3050() {
+  var o = new core.List<api.Dimension>();
+  o.add(buildDimension());
+  o.add(buildDimension());
+  return o;
+}
+
+checkUnnamed3050(core.List<api.Dimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimension(o[0]);
+  checkDimension(o[1]);
+}
+
+core.int buildCounterPathToConversionReportCompatibleFields = 0;
+buildPathToConversionReportCompatibleFields() {
+  var o = new api.PathToConversionReportCompatibleFields();
+  buildCounterPathToConversionReportCompatibleFields++;
+  if (buildCounterPathToConversionReportCompatibleFields < 3) {
+    o.conversionDimensions = buildUnnamed3047();
+    o.customFloodlightVariables = buildUnnamed3048();
+    o.kind = "foo";
+    o.metrics = buildUnnamed3049();
+    o.perInteractionDimensions = buildUnnamed3050();
+  }
+  buildCounterPathToConversionReportCompatibleFields--;
+  return o;
+}
+
+checkPathToConversionReportCompatibleFields(
+    api.PathToConversionReportCompatibleFields o) {
+  buildCounterPathToConversionReportCompatibleFields++;
+  if (buildCounterPathToConversionReportCompatibleFields < 3) {
+    checkUnnamed3047(o.conversionDimensions);
+    checkUnnamed3048(o.customFloodlightVariables);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3049(o.metrics);
+    checkUnnamed3050(o.perInteractionDimensions);
+  }
+  buildCounterPathToConversionReportCompatibleFields--;
+}
+
+buildUnnamed3051() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3051(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPlacement = 0;
+buildPlacement() {
+  var o = new api.Placement();
+  buildCounterPlacement++;
+  if (buildCounterPlacement < 3) {
+    o.accountId = "foo";
+    o.adBlockingOptOut = true;
+    o.advertiserId = "foo";
+    o.advertiserIdDimensionValue = buildDimensionValue();
+    o.archived = true;
+    o.campaignId = "foo";
+    o.campaignIdDimensionValue = buildDimensionValue();
+    o.comment = "foo";
+    o.compatibility = "foo";
+    o.contentCategoryId = "foo";
+    o.createInfo = buildLastModifiedInfo();
+    o.directorySiteId = "foo";
+    o.directorySiteIdDimensionValue = buildDimensionValue();
+    o.externalId = "foo";
+    o.id = "foo";
+    o.idDimensionValue = buildDimensionValue();
+    o.keyName = "foo";
+    o.kind = "foo";
+    o.lastModifiedInfo = buildLastModifiedInfo();
+    o.lookbackConfiguration = buildLookbackConfiguration();
+    o.name = "foo";
+    o.paymentApproved = true;
+    o.paymentSource = "foo";
+    o.placementGroupId = "foo";
+    o.placementGroupIdDimensionValue = buildDimensionValue();
+    o.placementStrategyId = "foo";
+    o.pricingSchedule = buildPricingSchedule();
+    o.primary = true;
+    o.publisherUpdateInfo = buildLastModifiedInfo();
+    o.siteId = "foo";
+    o.siteIdDimensionValue = buildDimensionValue();
+    o.size = buildSize();
+    o.sslRequired = true;
+    o.status = "foo";
+    o.subaccountId = "foo";
+    o.tagFormats = buildUnnamed3051();
+    o.tagSetting = buildTagSetting();
+    o.videoActiveViewOptOut = true;
+    o.videoSettings = buildVideoSettings();
+    o.vpaidAdapterChoice = "foo";
+  }
+  buildCounterPlacement--;
+  return o;
+}
+
+checkPlacement(api.Placement o) {
+  buildCounterPlacement++;
+  if (buildCounterPlacement < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.adBlockingOptOut, unittest.isTrue);
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    checkDimensionValue(o.advertiserIdDimensionValue);
+    unittest.expect(o.archived, unittest.isTrue);
+    unittest.expect(o.campaignId, unittest.equals('foo'));
+    checkDimensionValue(o.campaignIdDimensionValue);
+    unittest.expect(o.comment, unittest.equals('foo'));
+    unittest.expect(o.compatibility, unittest.equals('foo'));
+    unittest.expect(o.contentCategoryId, unittest.equals('foo'));
+    checkLastModifiedInfo(o.createInfo);
+    unittest.expect(o.directorySiteId, unittest.equals('foo'));
+    checkDimensionValue(o.directorySiteIdDimensionValue);
+    unittest.expect(o.externalId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkDimensionValue(o.idDimensionValue);
+    unittest.expect(o.keyName, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkLastModifiedInfo(o.lastModifiedInfo);
+    checkLookbackConfiguration(o.lookbackConfiguration);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.paymentApproved, unittest.isTrue);
+    unittest.expect(o.paymentSource, unittest.equals('foo'));
+    unittest.expect(o.placementGroupId, unittest.equals('foo'));
+    checkDimensionValue(o.placementGroupIdDimensionValue);
+    unittest.expect(o.placementStrategyId, unittest.equals('foo'));
+    checkPricingSchedule(o.pricingSchedule);
+    unittest.expect(o.primary, unittest.isTrue);
+    checkLastModifiedInfo(o.publisherUpdateInfo);
+    unittest.expect(o.siteId, unittest.equals('foo'));
+    checkDimensionValue(o.siteIdDimensionValue);
+    checkSize(o.size);
+    unittest.expect(o.sslRequired, unittest.isTrue);
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    checkUnnamed3051(o.tagFormats);
+    checkTagSetting(o.tagSetting);
+    unittest.expect(o.videoActiveViewOptOut, unittest.isTrue);
+    checkVideoSettings(o.videoSettings);
+    unittest.expect(o.vpaidAdapterChoice, unittest.equals('foo'));
+  }
+  buildCounterPlacement--;
+}
+
+core.int buildCounterPlacementAssignment = 0;
+buildPlacementAssignment() {
+  var o = new api.PlacementAssignment();
+  buildCounterPlacementAssignment++;
+  if (buildCounterPlacementAssignment < 3) {
+    o.active = true;
+    o.placementId = "foo";
+    o.placementIdDimensionValue = buildDimensionValue();
+    o.sslRequired = true;
+  }
+  buildCounterPlacementAssignment--;
+  return o;
+}
+
+checkPlacementAssignment(api.PlacementAssignment o) {
+  buildCounterPlacementAssignment++;
+  if (buildCounterPlacementAssignment < 3) {
+    unittest.expect(o.active, unittest.isTrue);
+    unittest.expect(o.placementId, unittest.equals('foo'));
+    checkDimensionValue(o.placementIdDimensionValue);
+    unittest.expect(o.sslRequired, unittest.isTrue);
+  }
+  buildCounterPlacementAssignment--;
+}
+
+buildUnnamed3052() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3052(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPlacementGroup = 0;
+buildPlacementGroup() {
+  var o = new api.PlacementGroup();
+  buildCounterPlacementGroup++;
+  if (buildCounterPlacementGroup < 3) {
+    o.accountId = "foo";
+    o.advertiserId = "foo";
+    o.advertiserIdDimensionValue = buildDimensionValue();
+    o.archived = true;
+    o.campaignId = "foo";
+    o.campaignIdDimensionValue = buildDimensionValue();
+    o.childPlacementIds = buildUnnamed3052();
+    o.comment = "foo";
+    o.contentCategoryId = "foo";
+    o.createInfo = buildLastModifiedInfo();
+    o.directorySiteId = "foo";
+    o.directorySiteIdDimensionValue = buildDimensionValue();
+    o.externalId = "foo";
+    o.id = "foo";
+    o.idDimensionValue = buildDimensionValue();
+    o.kind = "foo";
+    o.lastModifiedInfo = buildLastModifiedInfo();
+    o.name = "foo";
+    o.placementGroupType = "foo";
+    o.placementStrategyId = "foo";
+    o.pricingSchedule = buildPricingSchedule();
+    o.primaryPlacementId = "foo";
+    o.primaryPlacementIdDimensionValue = buildDimensionValue();
+    o.siteId = "foo";
+    o.siteIdDimensionValue = buildDimensionValue();
+    o.subaccountId = "foo";
+  }
+  buildCounterPlacementGroup--;
+  return o;
+}
+
+checkPlacementGroup(api.PlacementGroup o) {
+  buildCounterPlacementGroup++;
+  if (buildCounterPlacementGroup < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    checkDimensionValue(o.advertiserIdDimensionValue);
+    unittest.expect(o.archived, unittest.isTrue);
+    unittest.expect(o.campaignId, unittest.equals('foo'));
+    checkDimensionValue(o.campaignIdDimensionValue);
+    checkUnnamed3052(o.childPlacementIds);
+    unittest.expect(o.comment, unittest.equals('foo'));
+    unittest.expect(o.contentCategoryId, unittest.equals('foo'));
+    checkLastModifiedInfo(o.createInfo);
+    unittest.expect(o.directorySiteId, unittest.equals('foo'));
+    checkDimensionValue(o.directorySiteIdDimensionValue);
+    unittest.expect(o.externalId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkDimensionValue(o.idDimensionValue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkLastModifiedInfo(o.lastModifiedInfo);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.placementGroupType, unittest.equals('foo'));
+    unittest.expect(o.placementStrategyId, unittest.equals('foo'));
+    checkPricingSchedule(o.pricingSchedule);
+    unittest.expect(o.primaryPlacementId, unittest.equals('foo'));
+    checkDimensionValue(o.primaryPlacementIdDimensionValue);
+    unittest.expect(o.siteId, unittest.equals('foo'));
+    checkDimensionValue(o.siteIdDimensionValue);
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+  }
+  buildCounterPlacementGroup--;
+}
+
+buildUnnamed3053() {
+  var o = new core.List<api.PlacementGroup>();
+  o.add(buildPlacementGroup());
+  o.add(buildPlacementGroup());
+  return o;
+}
+
+checkUnnamed3053(core.List<api.PlacementGroup> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPlacementGroup(o[0]);
+  checkPlacementGroup(o[1]);
+}
+
+core.int buildCounterPlacementGroupsListResponse = 0;
+buildPlacementGroupsListResponse() {
+  var o = new api.PlacementGroupsListResponse();
+  buildCounterPlacementGroupsListResponse++;
+  if (buildCounterPlacementGroupsListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.placementGroups = buildUnnamed3053();
+  }
+  buildCounterPlacementGroupsListResponse--;
+  return o;
+}
+
+checkPlacementGroupsListResponse(api.PlacementGroupsListResponse o) {
+  buildCounterPlacementGroupsListResponse++;
+  if (buildCounterPlacementGroupsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3053(o.placementGroups);
+  }
+  buildCounterPlacementGroupsListResponse--;
+}
+
+buildUnnamed3054() {
+  var o = new core.List<api.PlacementStrategy>();
+  o.add(buildPlacementStrategy());
+  o.add(buildPlacementStrategy());
+  return o;
+}
+
+checkUnnamed3054(core.List<api.PlacementStrategy> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPlacementStrategy(o[0]);
+  checkPlacementStrategy(o[1]);
+}
+
+core.int buildCounterPlacementStrategiesListResponse = 0;
+buildPlacementStrategiesListResponse() {
+  var o = new api.PlacementStrategiesListResponse();
+  buildCounterPlacementStrategiesListResponse++;
+  if (buildCounterPlacementStrategiesListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.placementStrategies = buildUnnamed3054();
+  }
+  buildCounterPlacementStrategiesListResponse--;
+  return o;
+}
+
+checkPlacementStrategiesListResponse(api.PlacementStrategiesListResponse o) {
+  buildCounterPlacementStrategiesListResponse++;
+  if (buildCounterPlacementStrategiesListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3054(o.placementStrategies);
+  }
+  buildCounterPlacementStrategiesListResponse--;
+}
+
+core.int buildCounterPlacementStrategy = 0;
+buildPlacementStrategy() {
+  var o = new api.PlacementStrategy();
+  buildCounterPlacementStrategy++;
+  if (buildCounterPlacementStrategy < 3) {
+    o.accountId = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterPlacementStrategy--;
+  return o;
+}
+
+checkPlacementStrategy(api.PlacementStrategy o) {
+  buildCounterPlacementStrategy++;
+  if (buildCounterPlacementStrategy < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterPlacementStrategy--;
+}
+
+buildUnnamed3055() {
+  var o = new core.List<api.TagData>();
+  o.add(buildTagData());
+  o.add(buildTagData());
+  return o;
+}
+
+checkUnnamed3055(core.List<api.TagData> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTagData(o[0]);
+  checkTagData(o[1]);
+}
+
+core.int buildCounterPlacementTag = 0;
+buildPlacementTag() {
+  var o = new api.PlacementTag();
+  buildCounterPlacementTag++;
+  if (buildCounterPlacementTag < 3) {
+    o.placementId = "foo";
+    o.tagDatas = buildUnnamed3055();
+  }
+  buildCounterPlacementTag--;
+  return o;
+}
+
+checkPlacementTag(api.PlacementTag o) {
+  buildCounterPlacementTag++;
+  if (buildCounterPlacementTag < 3) {
+    unittest.expect(o.placementId, unittest.equals('foo'));
+    checkUnnamed3055(o.tagDatas);
+  }
+  buildCounterPlacementTag--;
+}
+
+buildUnnamed3056() {
+  var o = new core.List<api.PlacementTag>();
+  o.add(buildPlacementTag());
+  o.add(buildPlacementTag());
+  return o;
+}
+
+checkUnnamed3056(core.List<api.PlacementTag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPlacementTag(o[0]);
+  checkPlacementTag(o[1]);
+}
+
+core.int buildCounterPlacementsGenerateTagsResponse = 0;
+buildPlacementsGenerateTagsResponse() {
+  var o = new api.PlacementsGenerateTagsResponse();
+  buildCounterPlacementsGenerateTagsResponse++;
+  if (buildCounterPlacementsGenerateTagsResponse < 3) {
+    o.kind = "foo";
+    o.placementTags = buildUnnamed3056();
+  }
+  buildCounterPlacementsGenerateTagsResponse--;
+  return o;
+}
+
+checkPlacementsGenerateTagsResponse(api.PlacementsGenerateTagsResponse o) {
+  buildCounterPlacementsGenerateTagsResponse++;
+  if (buildCounterPlacementsGenerateTagsResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3056(o.placementTags);
+  }
+  buildCounterPlacementsGenerateTagsResponse--;
+}
+
+buildUnnamed3057() {
+  var o = new core.List<api.Placement>();
+  o.add(buildPlacement());
+  o.add(buildPlacement());
+  return o;
+}
+
+checkUnnamed3057(core.List<api.Placement> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPlacement(o[0]);
+  checkPlacement(o[1]);
+}
+
+core.int buildCounterPlacementsListResponse = 0;
+buildPlacementsListResponse() {
+  var o = new api.PlacementsListResponse();
+  buildCounterPlacementsListResponse++;
+  if (buildCounterPlacementsListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.placements = buildUnnamed3057();
+  }
+  buildCounterPlacementsListResponse--;
+  return o;
+}
+
+checkPlacementsListResponse(api.PlacementsListResponse o) {
+  buildCounterPlacementsListResponse++;
+  if (buildCounterPlacementsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3057(o.placements);
+  }
+  buildCounterPlacementsListResponse--;
+}
+
+core.int buildCounterPlatformType = 0;
+buildPlatformType() {
+  var o = new api.PlatformType();
+  buildCounterPlatformType++;
+  if (buildCounterPlatformType < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterPlatformType--;
+  return o;
+}
+
+checkPlatformType(api.PlatformType o) {
+  buildCounterPlatformType++;
+  if (buildCounterPlatformType < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterPlatformType--;
+}
+
+buildUnnamed3058() {
+  var o = new core.List<api.PlatformType>();
+  o.add(buildPlatformType());
+  o.add(buildPlatformType());
+  return o;
+}
+
+checkUnnamed3058(core.List<api.PlatformType> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPlatformType(o[0]);
+  checkPlatformType(o[1]);
+}
+
+core.int buildCounterPlatformTypesListResponse = 0;
+buildPlatformTypesListResponse() {
+  var o = new api.PlatformTypesListResponse();
+  buildCounterPlatformTypesListResponse++;
+  if (buildCounterPlatformTypesListResponse < 3) {
+    o.kind = "foo";
+    o.platformTypes = buildUnnamed3058();
+  }
+  buildCounterPlatformTypesListResponse--;
+  return o;
+}
+
+checkPlatformTypesListResponse(api.PlatformTypesListResponse o) {
+  buildCounterPlatformTypesListResponse++;
+  if (buildCounterPlatformTypesListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3058(o.platformTypes);
+  }
+  buildCounterPlatformTypesListResponse--;
+}
+
+core.int buildCounterPopupWindowProperties = 0;
+buildPopupWindowProperties() {
+  var o = new api.PopupWindowProperties();
+  buildCounterPopupWindowProperties++;
+  if (buildCounterPopupWindowProperties < 3) {
+    o.dimension = buildSize();
+    o.offset = buildOffsetPosition();
+    o.positionType = "foo";
+    o.showAddressBar = true;
+    o.showMenuBar = true;
+    o.showScrollBar = true;
+    o.showStatusBar = true;
+    o.showToolBar = true;
+    o.title = "foo";
+  }
+  buildCounterPopupWindowProperties--;
+  return o;
+}
+
+checkPopupWindowProperties(api.PopupWindowProperties o) {
+  buildCounterPopupWindowProperties++;
+  if (buildCounterPopupWindowProperties < 3) {
+    checkSize(o.dimension);
+    checkOffsetPosition(o.offset);
+    unittest.expect(o.positionType, unittest.equals('foo'));
+    unittest.expect(o.showAddressBar, unittest.isTrue);
+    unittest.expect(o.showMenuBar, unittest.isTrue);
+    unittest.expect(o.showScrollBar, unittest.isTrue);
+    unittest.expect(o.showStatusBar, unittest.isTrue);
+    unittest.expect(o.showToolBar, unittest.isTrue);
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterPopupWindowProperties--;
+}
+
+core.int buildCounterPostalCode = 0;
+buildPostalCode() {
+  var o = new api.PostalCode();
+  buildCounterPostalCode++;
+  if (buildCounterPostalCode < 3) {
+    o.code = "foo";
+    o.countryCode = "foo";
+    o.countryDartId = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+  }
+  buildCounterPostalCode--;
+  return o;
+}
+
+checkPostalCode(api.PostalCode o) {
+  buildCounterPostalCode++;
+  if (buildCounterPostalCode < 3) {
+    unittest.expect(o.code, unittest.equals('foo'));
+    unittest.expect(o.countryCode, unittest.equals('foo'));
+    unittest.expect(o.countryDartId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterPostalCode--;
+}
+
+buildUnnamed3059() {
+  var o = new core.List<api.PostalCode>();
+  o.add(buildPostalCode());
+  o.add(buildPostalCode());
+  return o;
+}
+
+checkUnnamed3059(core.List<api.PostalCode> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPostalCode(o[0]);
+  checkPostalCode(o[1]);
+}
+
+core.int buildCounterPostalCodesListResponse = 0;
+buildPostalCodesListResponse() {
+  var o = new api.PostalCodesListResponse();
+  buildCounterPostalCodesListResponse++;
+  if (buildCounterPostalCodesListResponse < 3) {
+    o.kind = "foo";
+    o.postalCodes = buildUnnamed3059();
+  }
+  buildCounterPostalCodesListResponse--;
+  return o;
+}
+
+checkPostalCodesListResponse(api.PostalCodesListResponse o) {
+  buildCounterPostalCodesListResponse++;
+  if (buildCounterPostalCodesListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3059(o.postalCodes);
+  }
+  buildCounterPostalCodesListResponse--;
+}
+
+buildUnnamed3060() {
+  var o = new core.List<api.Flight>();
+  o.add(buildFlight());
+  o.add(buildFlight());
+  return o;
+}
+
+checkUnnamed3060(core.List<api.Flight> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFlight(o[0]);
+  checkFlight(o[1]);
+}
+
+core.int buildCounterPricing = 0;
+buildPricing() {
+  var o = new api.Pricing();
+  buildCounterPricing++;
+  if (buildCounterPricing < 3) {
+    o.capCostType = "foo";
+    o.endDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.flights = buildUnnamed3060();
+    o.groupType = "foo";
+    o.pricingType = "foo";
+    o.startDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+  }
+  buildCounterPricing--;
+  return o;
+}
+
+checkPricing(api.Pricing o) {
+  buildCounterPricing++;
+  if (buildCounterPricing < 3) {
+    unittest.expect(o.capCostType, unittest.equals('foo'));
+    unittest.expect(
+        o.endDate, unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    checkUnnamed3060(o.flights);
+    unittest.expect(o.groupType, unittest.equals('foo'));
+    unittest.expect(o.pricingType, unittest.equals('foo'));
+    unittest.expect(o.startDate,
+        unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+  }
+  buildCounterPricing--;
+}
+
+buildUnnamed3061() {
+  var o = new core.List<api.PricingSchedulePricingPeriod>();
+  o.add(buildPricingSchedulePricingPeriod());
+  o.add(buildPricingSchedulePricingPeriod());
+  return o;
+}
+
+checkUnnamed3061(core.List<api.PricingSchedulePricingPeriod> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPricingSchedulePricingPeriod(o[0]);
+  checkPricingSchedulePricingPeriod(o[1]);
+}
+
+core.int buildCounterPricingSchedule = 0;
+buildPricingSchedule() {
+  var o = new api.PricingSchedule();
+  buildCounterPricingSchedule++;
+  if (buildCounterPricingSchedule < 3) {
+    o.capCostOption = "foo";
+    o.disregardOverdelivery = true;
+    o.endDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.flighted = true;
+    o.floodlightActivityId = "foo";
+    o.pricingPeriods = buildUnnamed3061();
+    o.pricingType = "foo";
+    o.startDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.testingStartDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+  }
+  buildCounterPricingSchedule--;
+  return o;
+}
+
+checkPricingSchedule(api.PricingSchedule o) {
+  buildCounterPricingSchedule++;
+  if (buildCounterPricingSchedule < 3) {
+    unittest.expect(o.capCostOption, unittest.equals('foo'));
+    unittest.expect(o.disregardOverdelivery, unittest.isTrue);
+    unittest.expect(
+        o.endDate, unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    unittest.expect(o.flighted, unittest.isTrue);
+    unittest.expect(o.floodlightActivityId, unittest.equals('foo'));
+    checkUnnamed3061(o.pricingPeriods);
+    unittest.expect(o.pricingType, unittest.equals('foo'));
+    unittest.expect(o.startDate,
+        unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    unittest.expect(o.testingStartDate,
+        unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+  }
+  buildCounterPricingSchedule--;
+}
+
+core.int buildCounterPricingSchedulePricingPeriod = 0;
+buildPricingSchedulePricingPeriod() {
+  var o = new api.PricingSchedulePricingPeriod();
+  buildCounterPricingSchedulePricingPeriod++;
+  if (buildCounterPricingSchedulePricingPeriod < 3) {
+    o.endDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.pricingComment = "foo";
+    o.rateOrCostNanos = "foo";
+    o.startDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.units = "foo";
+  }
+  buildCounterPricingSchedulePricingPeriod--;
+  return o;
+}
+
+checkPricingSchedulePricingPeriod(api.PricingSchedulePricingPeriod o) {
+  buildCounterPricingSchedulePricingPeriod++;
+  if (buildCounterPricingSchedulePricingPeriod < 3) {
+    unittest.expect(
+        o.endDate, unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    unittest.expect(o.pricingComment, unittest.equals('foo'));
+    unittest.expect(o.rateOrCostNanos, unittest.equals('foo'));
+    unittest.expect(o.startDate,
+        unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    unittest.expect(o.units, unittest.equals('foo'));
+  }
+  buildCounterPricingSchedulePricingPeriod--;
+}
+
+core.int buildCounterProject = 0;
+buildProject() {
+  var o = new api.Project();
+  buildCounterProject++;
+  if (buildCounterProject < 3) {
+    o.accountId = "foo";
+    o.advertiserId = "foo";
+    o.audienceAgeGroup = "foo";
+    o.audienceGender = "foo";
+    o.budget = "foo";
+    o.clientBillingCode = "foo";
+    o.clientName = "foo";
+    o.endDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.id = "foo";
+    o.kind = "foo";
+    o.lastModifiedInfo = buildLastModifiedInfo();
+    o.name = "foo";
+    o.overview = "foo";
+    o.startDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.subaccountId = "foo";
+    o.targetClicks = "foo";
+    o.targetConversions = "foo";
+    o.targetCpaNanos = "foo";
+    o.targetCpcNanos = "foo";
+    o.targetCpmActiveViewNanos = "foo";
+    o.targetCpmNanos = "foo";
+    o.targetImpressions = "foo";
+  }
+  buildCounterProject--;
+  return o;
+}
+
+checkProject(api.Project o) {
+  buildCounterProject++;
+  if (buildCounterProject < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    unittest.expect(o.audienceAgeGroup, unittest.equals('foo'));
+    unittest.expect(o.audienceGender, unittest.equals('foo'));
+    unittest.expect(o.budget, unittest.equals('foo'));
+    unittest.expect(o.clientBillingCode, unittest.equals('foo'));
+    unittest.expect(o.clientName, unittest.equals('foo'));
+    unittest.expect(
+        o.endDate, unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkLastModifiedInfo(o.lastModifiedInfo);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.overview, unittest.equals('foo'));
+    unittest.expect(o.startDate,
+        unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    unittest.expect(o.targetClicks, unittest.equals('foo'));
+    unittest.expect(o.targetConversions, unittest.equals('foo'));
+    unittest.expect(o.targetCpaNanos, unittest.equals('foo'));
+    unittest.expect(o.targetCpcNanos, unittest.equals('foo'));
+    unittest.expect(o.targetCpmActiveViewNanos, unittest.equals('foo'));
+    unittest.expect(o.targetCpmNanos, unittest.equals('foo'));
+    unittest.expect(o.targetImpressions, unittest.equals('foo'));
+  }
+  buildCounterProject--;
+}
+
+buildUnnamed3062() {
+  var o = new core.List<api.Project>();
+  o.add(buildProject());
+  o.add(buildProject());
+  return o;
+}
+
+checkUnnamed3062(core.List<api.Project> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProject(o[0]);
+  checkProject(o[1]);
+}
+
+core.int buildCounterProjectsListResponse = 0;
+buildProjectsListResponse() {
+  var o = new api.ProjectsListResponse();
+  buildCounterProjectsListResponse++;
+  if (buildCounterProjectsListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.projects = buildUnnamed3062();
+  }
+  buildCounterProjectsListResponse--;
+  return o;
+}
+
+checkProjectsListResponse(api.ProjectsListResponse o) {
+  buildCounterProjectsListResponse++;
+  if (buildCounterProjectsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3062(o.projects);
+  }
+  buildCounterProjectsListResponse--;
+}
+
+buildUnnamed3063() {
+  var o = new core.List<api.Dimension>();
+  o.add(buildDimension());
+  o.add(buildDimension());
+  return o;
+}
+
+checkUnnamed3063(core.List<api.Dimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimension(o[0]);
+  checkDimension(o[1]);
+}
+
+buildUnnamed3064() {
+  var o = new core.List<api.Dimension>();
+  o.add(buildDimension());
+  o.add(buildDimension());
+  return o;
+}
+
+checkUnnamed3064(core.List<api.Dimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimension(o[0]);
+  checkDimension(o[1]);
+}
+
+buildUnnamed3065() {
+  var o = new core.List<api.Metric>();
+  o.add(buildMetric());
+  o.add(buildMetric());
+  return o;
+}
+
+checkUnnamed3065(core.List<api.Metric> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetric(o[0]);
+  checkMetric(o[1]);
+}
+
+buildUnnamed3066() {
+  var o = new core.List<api.Metric>();
+  o.add(buildMetric());
+  o.add(buildMetric());
+  return o;
+}
+
+checkUnnamed3066(core.List<api.Metric> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetric(o[0]);
+  checkMetric(o[1]);
+}
+
+buildUnnamed3067() {
+  var o = new core.List<api.Metric>();
+  o.add(buildMetric());
+  o.add(buildMetric());
+  return o;
+}
+
+checkUnnamed3067(core.List<api.Metric> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetric(o[0]);
+  checkMetric(o[1]);
+}
+
+core.int buildCounterReachReportCompatibleFields = 0;
+buildReachReportCompatibleFields() {
+  var o = new api.ReachReportCompatibleFields();
+  buildCounterReachReportCompatibleFields++;
+  if (buildCounterReachReportCompatibleFields < 3) {
+    o.dimensionFilters = buildUnnamed3063();
+    o.dimensions = buildUnnamed3064();
+    o.kind = "foo";
+    o.metrics = buildUnnamed3065();
+    o.pivotedActivityMetrics = buildUnnamed3066();
+    o.reachByFrequencyMetrics = buildUnnamed3067();
+  }
+  buildCounterReachReportCompatibleFields--;
+  return o;
+}
+
+checkReachReportCompatibleFields(api.ReachReportCompatibleFields o) {
+  buildCounterReachReportCompatibleFields++;
+  if (buildCounterReachReportCompatibleFields < 3) {
+    checkUnnamed3063(o.dimensionFilters);
+    checkUnnamed3064(o.dimensions);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3065(o.metrics);
+    checkUnnamed3066(o.pivotedActivityMetrics);
+    checkUnnamed3067(o.reachByFrequencyMetrics);
+  }
+  buildCounterReachReportCompatibleFields--;
+}
+
+core.int buildCounterRecipient = 0;
+buildRecipient() {
+  var o = new api.Recipient();
+  buildCounterRecipient++;
+  if (buildCounterRecipient < 3) {
+    o.deliveryType = "foo";
+    o.email = "foo";
+    o.kind = "foo";
+  }
+  buildCounterRecipient--;
+  return o;
+}
+
+checkRecipient(api.Recipient o) {
+  buildCounterRecipient++;
+  if (buildCounterRecipient < 3) {
+    unittest.expect(o.deliveryType, unittest.equals('foo'));
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterRecipient--;
+}
+
+core.int buildCounterRegion = 0;
+buildRegion() {
+  var o = new api.Region();
+  buildCounterRegion++;
+  if (buildCounterRegion < 3) {
+    o.countryCode = "foo";
+    o.countryDartId = "foo";
+    o.dartId = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.regionCode = "foo";
+  }
+  buildCounterRegion--;
+  return o;
+}
+
+checkRegion(api.Region o) {
+  buildCounterRegion++;
+  if (buildCounterRegion < 3) {
+    unittest.expect(o.countryCode, unittest.equals('foo'));
+    unittest.expect(o.countryDartId, unittest.equals('foo'));
+    unittest.expect(o.dartId, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.regionCode, unittest.equals('foo'));
+  }
+  buildCounterRegion--;
+}
+
+buildUnnamed3068() {
+  var o = new core.List<api.Region>();
+  o.add(buildRegion());
+  o.add(buildRegion());
+  return o;
+}
+
+checkUnnamed3068(core.List<api.Region> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRegion(o[0]);
+  checkRegion(o[1]);
+}
+
+core.int buildCounterRegionsListResponse = 0;
+buildRegionsListResponse() {
+  var o = new api.RegionsListResponse();
+  buildCounterRegionsListResponse++;
+  if (buildCounterRegionsListResponse < 3) {
+    o.kind = "foo";
+    o.regions = buildUnnamed3068();
+  }
+  buildCounterRegionsListResponse--;
+  return o;
+}
+
+checkRegionsListResponse(api.RegionsListResponse o) {
+  buildCounterRegionsListResponse++;
+  if (buildCounterRegionsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3068(o.regions);
+  }
+  buildCounterRegionsListResponse--;
+}
+
+core.int buildCounterRemarketingList = 0;
+buildRemarketingList() {
+  var o = new api.RemarketingList();
+  buildCounterRemarketingList++;
+  if (buildCounterRemarketingList < 3) {
+    o.accountId = "foo";
+    o.active = true;
+    o.advertiserId = "foo";
+    o.advertiserIdDimensionValue = buildDimensionValue();
+    o.description = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.lifeSpan = "foo";
+    o.listPopulationRule = buildListPopulationRule();
+    o.listSize = "foo";
+    o.listSource = "foo";
+    o.name = "foo";
+    o.subaccountId = "foo";
+  }
+  buildCounterRemarketingList--;
+  return o;
+}
+
+checkRemarketingList(api.RemarketingList o) {
+  buildCounterRemarketingList++;
+  if (buildCounterRemarketingList < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.active, unittest.isTrue);
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    checkDimensionValue(o.advertiserIdDimensionValue);
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.lifeSpan, unittest.equals('foo'));
+    checkListPopulationRule(o.listPopulationRule);
+    unittest.expect(o.listSize, unittest.equals('foo'));
+    unittest.expect(o.listSource, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+  }
+  buildCounterRemarketingList--;
+}
+
+buildUnnamed3069() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3069(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3070() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3070(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterRemarketingListShare = 0;
+buildRemarketingListShare() {
+  var o = new api.RemarketingListShare();
+  buildCounterRemarketingListShare++;
+  if (buildCounterRemarketingListShare < 3) {
+    o.kind = "foo";
+    o.remarketingListId = "foo";
+    o.sharedAccountIds = buildUnnamed3069();
+    o.sharedAdvertiserIds = buildUnnamed3070();
+  }
+  buildCounterRemarketingListShare--;
+  return o;
+}
+
+checkRemarketingListShare(api.RemarketingListShare o) {
+  buildCounterRemarketingListShare++;
+  if (buildCounterRemarketingListShare < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.remarketingListId, unittest.equals('foo'));
+    checkUnnamed3069(o.sharedAccountIds);
+    checkUnnamed3070(o.sharedAdvertiserIds);
+  }
+  buildCounterRemarketingListShare--;
+}
+
+buildUnnamed3071() {
+  var o = new core.List<api.RemarketingList>();
+  o.add(buildRemarketingList());
+  o.add(buildRemarketingList());
+  return o;
+}
+
+checkUnnamed3071(core.List<api.RemarketingList> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRemarketingList(o[0]);
+  checkRemarketingList(o[1]);
+}
+
+core.int buildCounterRemarketingListsListResponse = 0;
+buildRemarketingListsListResponse() {
+  var o = new api.RemarketingListsListResponse();
+  buildCounterRemarketingListsListResponse++;
+  if (buildCounterRemarketingListsListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.remarketingLists = buildUnnamed3071();
+  }
+  buildCounterRemarketingListsListResponse--;
+  return o;
+}
+
+checkRemarketingListsListResponse(api.RemarketingListsListResponse o) {
+  buildCounterRemarketingListsListResponse++;
+  if (buildCounterRemarketingListsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3071(o.remarketingLists);
+  }
+  buildCounterRemarketingListsListResponse--;
+}
+
+buildUnnamed3072() {
+  var o = new core.List<api.DimensionValue>();
+  o.add(buildDimensionValue());
+  o.add(buildDimensionValue());
+  return o;
+}
+
+checkUnnamed3072(core.List<api.DimensionValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimensionValue(o[0]);
+  checkDimensionValue(o[1]);
+}
+
+buildUnnamed3073() {
+  var o = new core.List<api.SortedDimension>();
+  o.add(buildSortedDimension());
+  o.add(buildSortedDimension());
+  return o;
+}
+
+checkUnnamed3073(core.List<api.SortedDimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSortedDimension(o[0]);
+  checkSortedDimension(o[1]);
+}
+
+buildUnnamed3074() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3074(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterReportCriteria = 0;
+buildReportCriteria() {
+  var o = new api.ReportCriteria();
+  buildCounterReportCriteria++;
+  if (buildCounterReportCriteria < 3) {
+    o.activities = buildActivities();
+    o.customRichMediaEvents = buildCustomRichMediaEvents();
+    o.dateRange = buildDateRange();
+    o.dimensionFilters = buildUnnamed3072();
+    o.dimensions = buildUnnamed3073();
+    o.metricNames = buildUnnamed3074();
+  }
+  buildCounterReportCriteria--;
+  return o;
+}
+
+checkReportCriteria(api.ReportCriteria o) {
+  buildCounterReportCriteria++;
+  if (buildCounterReportCriteria < 3) {
+    checkActivities(o.activities);
+    checkCustomRichMediaEvents(o.customRichMediaEvents);
+    checkDateRange(o.dateRange);
+    checkUnnamed3072(o.dimensionFilters);
+    checkUnnamed3073(o.dimensions);
+    checkUnnamed3074(o.metricNames);
+  }
+  buildCounterReportCriteria--;
+}
+
+buildUnnamed3075() {
+  var o = new core.List<api.SortedDimension>();
+  o.add(buildSortedDimension());
+  o.add(buildSortedDimension());
+  return o;
+}
+
+checkUnnamed3075(core.List<api.SortedDimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSortedDimension(o[0]);
+  checkSortedDimension(o[1]);
+}
+
+buildUnnamed3076() {
+  var o = new core.List<api.DimensionValue>();
+  o.add(buildDimensionValue());
+  o.add(buildDimensionValue());
+  return o;
+}
+
+checkUnnamed3076(core.List<api.DimensionValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimensionValue(o[0]);
+  checkDimensionValue(o[1]);
+}
+
+buildUnnamed3077() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3077(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3078() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3078(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterReportCrossDimensionReachCriteria = 0;
+buildReportCrossDimensionReachCriteria() {
+  var o = new api.ReportCrossDimensionReachCriteria();
+  buildCounterReportCrossDimensionReachCriteria++;
+  if (buildCounterReportCrossDimensionReachCriteria < 3) {
+    o.breakdown = buildUnnamed3075();
+    o.dateRange = buildDateRange();
+    o.dimension = "foo";
+    o.dimensionFilters = buildUnnamed3076();
+    o.metricNames = buildUnnamed3077();
+    o.overlapMetricNames = buildUnnamed3078();
+    o.pivoted = true;
+  }
+  buildCounterReportCrossDimensionReachCriteria--;
+  return o;
+}
+
+checkReportCrossDimensionReachCriteria(
+    api.ReportCrossDimensionReachCriteria o) {
+  buildCounterReportCrossDimensionReachCriteria++;
+  if (buildCounterReportCrossDimensionReachCriteria < 3) {
+    checkUnnamed3075(o.breakdown);
+    checkDateRange(o.dateRange);
+    unittest.expect(o.dimension, unittest.equals('foo'));
+    checkUnnamed3076(o.dimensionFilters);
+    checkUnnamed3077(o.metricNames);
+    checkUnnamed3078(o.overlapMetricNames);
+    unittest.expect(o.pivoted, unittest.isTrue);
+  }
+  buildCounterReportCrossDimensionReachCriteria--;
+}
+
+buildUnnamed3079() {
+  var o = new core.List<api.Recipient>();
+  o.add(buildRecipient());
+  o.add(buildRecipient());
+  return o;
+}
+
+checkUnnamed3079(core.List<api.Recipient> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRecipient(o[0]);
+  checkRecipient(o[1]);
+}
+
+core.int buildCounterReportDelivery = 0;
+buildReportDelivery() {
+  var o = new api.ReportDelivery();
+  buildCounterReportDelivery++;
+  if (buildCounterReportDelivery < 3) {
+    o.emailOwner = true;
+    o.emailOwnerDeliveryType = "foo";
+    o.message = "foo";
+    o.recipients = buildUnnamed3079();
+  }
+  buildCounterReportDelivery--;
+  return o;
+}
+
+checkReportDelivery(api.ReportDelivery o) {
+  buildCounterReportDelivery++;
+  if (buildCounterReportDelivery < 3) {
+    unittest.expect(o.emailOwner, unittest.isTrue);
+    unittest.expect(o.emailOwnerDeliveryType, unittest.equals('foo'));
+    unittest.expect(o.message, unittest.equals('foo'));
+    checkUnnamed3079(o.recipients);
+  }
+  buildCounterReportDelivery--;
+}
+
+buildUnnamed3080() {
+  var o = new core.List<api.DimensionValue>();
+  o.add(buildDimensionValue());
+  o.add(buildDimensionValue());
+  return o;
+}
+
+checkUnnamed3080(core.List<api.DimensionValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimensionValue(o[0]);
+  checkDimensionValue(o[1]);
+}
+
+buildUnnamed3081() {
+  var o = new core.List<api.DimensionValue>();
+  o.add(buildDimensionValue());
+  o.add(buildDimensionValue());
+  return o;
+}
+
+checkUnnamed3081(core.List<api.DimensionValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimensionValue(o[0]);
+  checkDimensionValue(o[1]);
+}
+
+buildUnnamed3082() {
+  var o = new core.List<api.SortedDimension>();
+  o.add(buildSortedDimension());
+  o.add(buildSortedDimension());
+  return o;
+}
+
+checkUnnamed3082(core.List<api.SortedDimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSortedDimension(o[0]);
+  checkSortedDimension(o[1]);
+}
+
+buildUnnamed3083() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3083(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterReportFloodlightCriteriaReportProperties = 0;
+buildReportFloodlightCriteriaReportProperties() {
+  var o = new api.ReportFloodlightCriteriaReportProperties();
+  buildCounterReportFloodlightCriteriaReportProperties++;
+  if (buildCounterReportFloodlightCriteriaReportProperties < 3) {
+    o.includeAttributedIPConversions = true;
+    o.includeUnattributedCookieConversions = true;
+    o.includeUnattributedIPConversions = true;
+  }
+  buildCounterReportFloodlightCriteriaReportProperties--;
+  return o;
+}
+
+checkReportFloodlightCriteriaReportProperties(
+    api.ReportFloodlightCriteriaReportProperties o) {
+  buildCounterReportFloodlightCriteriaReportProperties++;
+  if (buildCounterReportFloodlightCriteriaReportProperties < 3) {
+    unittest.expect(o.includeAttributedIPConversions, unittest.isTrue);
+    unittest.expect(o.includeUnattributedCookieConversions, unittest.isTrue);
+    unittest.expect(o.includeUnattributedIPConversions, unittest.isTrue);
+  }
+  buildCounterReportFloodlightCriteriaReportProperties--;
+}
+
+core.int buildCounterReportFloodlightCriteria = 0;
+buildReportFloodlightCriteria() {
+  var o = new api.ReportFloodlightCriteria();
+  buildCounterReportFloodlightCriteria++;
+  if (buildCounterReportFloodlightCriteria < 3) {
+    o.customRichMediaEvents = buildUnnamed3080();
+    o.dateRange = buildDateRange();
+    o.dimensionFilters = buildUnnamed3081();
+    o.dimensions = buildUnnamed3082();
+    o.floodlightConfigId = buildDimensionValue();
+    o.metricNames = buildUnnamed3083();
+    o.reportProperties = buildReportFloodlightCriteriaReportProperties();
+  }
+  buildCounterReportFloodlightCriteria--;
+  return o;
+}
+
+checkReportFloodlightCriteria(api.ReportFloodlightCriteria o) {
+  buildCounterReportFloodlightCriteria++;
+  if (buildCounterReportFloodlightCriteria < 3) {
+    checkUnnamed3080(o.customRichMediaEvents);
+    checkDateRange(o.dateRange);
+    checkUnnamed3081(o.dimensionFilters);
+    checkUnnamed3082(o.dimensions);
+    checkDimensionValue(o.floodlightConfigId);
+    checkUnnamed3083(o.metricNames);
+    checkReportFloodlightCriteriaReportProperties(o.reportProperties);
+  }
+  buildCounterReportFloodlightCriteria--;
+}
+
+buildUnnamed3084() {
+  var o = new core.List<api.DimensionValue>();
+  o.add(buildDimensionValue());
+  o.add(buildDimensionValue());
+  return o;
+}
+
+checkUnnamed3084(core.List<api.DimensionValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimensionValue(o[0]);
+  checkDimensionValue(o[1]);
+}
+
+buildUnnamed3085() {
+  var o = new core.List<api.SortedDimension>();
+  o.add(buildSortedDimension());
+  o.add(buildSortedDimension());
+  return o;
+}
+
+checkUnnamed3085(core.List<api.SortedDimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSortedDimension(o[0]);
+  checkSortedDimension(o[1]);
+}
+
+buildUnnamed3086() {
+  var o = new core.List<api.SortedDimension>();
+  o.add(buildSortedDimension());
+  o.add(buildSortedDimension());
+  return o;
+}
+
+checkUnnamed3086(core.List<api.SortedDimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSortedDimension(o[0]);
+  checkSortedDimension(o[1]);
+}
+
+buildUnnamed3087() {
+  var o = new core.List<api.DimensionValue>();
+  o.add(buildDimensionValue());
+  o.add(buildDimensionValue());
+  return o;
+}
+
+checkUnnamed3087(core.List<api.DimensionValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimensionValue(o[0]);
+  checkDimensionValue(o[1]);
+}
+
+buildUnnamed3088() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3088(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3089() {
+  var o = new core.List<api.SortedDimension>();
+  o.add(buildSortedDimension());
+  o.add(buildSortedDimension());
+  return o;
+}
+
+checkUnnamed3089(core.List<api.SortedDimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSortedDimension(o[0]);
+  checkSortedDimension(o[1]);
+}
+
+core.int buildCounterReportPathToConversionCriteriaReportProperties = 0;
+buildReportPathToConversionCriteriaReportProperties() {
+  var o = new api.ReportPathToConversionCriteriaReportProperties();
+  buildCounterReportPathToConversionCriteriaReportProperties++;
+  if (buildCounterReportPathToConversionCriteriaReportProperties < 3) {
+    o.clicksLookbackWindow = 42;
+    o.impressionsLookbackWindow = 42;
+    o.includeAttributedIPConversions = true;
+    o.includeUnattributedCookieConversions = true;
+    o.includeUnattributedIPConversions = true;
+    o.maximumClickInteractions = 42;
+    o.maximumImpressionInteractions = 42;
+    o.maximumInteractionGap = 42;
+    o.pivotOnInteractionPath = true;
+  }
+  buildCounterReportPathToConversionCriteriaReportProperties--;
+  return o;
+}
+
+checkReportPathToConversionCriteriaReportProperties(
+    api.ReportPathToConversionCriteriaReportProperties o) {
+  buildCounterReportPathToConversionCriteriaReportProperties++;
+  if (buildCounterReportPathToConversionCriteriaReportProperties < 3) {
+    unittest.expect(o.clicksLookbackWindow, unittest.equals(42));
+    unittest.expect(o.impressionsLookbackWindow, unittest.equals(42));
+    unittest.expect(o.includeAttributedIPConversions, unittest.isTrue);
+    unittest.expect(o.includeUnattributedCookieConversions, unittest.isTrue);
+    unittest.expect(o.includeUnattributedIPConversions, unittest.isTrue);
+    unittest.expect(o.maximumClickInteractions, unittest.equals(42));
+    unittest.expect(o.maximumImpressionInteractions, unittest.equals(42));
+    unittest.expect(o.maximumInteractionGap, unittest.equals(42));
+    unittest.expect(o.pivotOnInteractionPath, unittest.isTrue);
+  }
+  buildCounterReportPathToConversionCriteriaReportProperties--;
+}
+
+core.int buildCounterReportPathToConversionCriteria = 0;
+buildReportPathToConversionCriteria() {
+  var o = new api.ReportPathToConversionCriteria();
+  buildCounterReportPathToConversionCriteria++;
+  if (buildCounterReportPathToConversionCriteria < 3) {
+    o.activityFilters = buildUnnamed3084();
+    o.conversionDimensions = buildUnnamed3085();
+    o.customFloodlightVariables = buildUnnamed3086();
+    o.customRichMediaEvents = buildUnnamed3087();
+    o.dateRange = buildDateRange();
+    o.floodlightConfigId = buildDimensionValue();
+    o.metricNames = buildUnnamed3088();
+    o.perInteractionDimensions = buildUnnamed3089();
+    o.reportProperties = buildReportPathToConversionCriteriaReportProperties();
+  }
+  buildCounterReportPathToConversionCriteria--;
+  return o;
+}
+
+checkReportPathToConversionCriteria(api.ReportPathToConversionCriteria o) {
+  buildCounterReportPathToConversionCriteria++;
+  if (buildCounterReportPathToConversionCriteria < 3) {
+    checkUnnamed3084(o.activityFilters);
+    checkUnnamed3085(o.conversionDimensions);
+    checkUnnamed3086(o.customFloodlightVariables);
+    checkUnnamed3087(o.customRichMediaEvents);
+    checkDateRange(o.dateRange);
+    checkDimensionValue(o.floodlightConfigId);
+    checkUnnamed3088(o.metricNames);
+    checkUnnamed3089(o.perInteractionDimensions);
+    checkReportPathToConversionCriteriaReportProperties(o.reportProperties);
+  }
+  buildCounterReportPathToConversionCriteria--;
+}
+
+buildUnnamed3090() {
+  var o = new core.List<api.DimensionValue>();
+  o.add(buildDimensionValue());
+  o.add(buildDimensionValue());
+  return o;
+}
+
+checkUnnamed3090(core.List<api.DimensionValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimensionValue(o[0]);
+  checkDimensionValue(o[1]);
+}
+
+buildUnnamed3091() {
+  var o = new core.List<api.SortedDimension>();
+  o.add(buildSortedDimension());
+  o.add(buildSortedDimension());
+  return o;
+}
+
+checkUnnamed3091(core.List<api.SortedDimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSortedDimension(o[0]);
+  checkSortedDimension(o[1]);
+}
+
+buildUnnamed3092() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3092(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3093() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3093(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterReportReachCriteria = 0;
+buildReportReachCriteria() {
+  var o = new api.ReportReachCriteria();
+  buildCounterReportReachCriteria++;
+  if (buildCounterReportReachCriteria < 3) {
+    o.activities = buildActivities();
+    o.customRichMediaEvents = buildCustomRichMediaEvents();
+    o.dateRange = buildDateRange();
+    o.dimensionFilters = buildUnnamed3090();
+    o.dimensions = buildUnnamed3091();
+    o.enableAllDimensionCombinations = true;
+    o.metricNames = buildUnnamed3092();
+    o.reachByFrequencyMetricNames = buildUnnamed3093();
+  }
+  buildCounterReportReachCriteria--;
+  return o;
+}
+
+checkReportReachCriteria(api.ReportReachCriteria o) {
+  buildCounterReportReachCriteria++;
+  if (buildCounterReportReachCriteria < 3) {
+    checkActivities(o.activities);
+    checkCustomRichMediaEvents(o.customRichMediaEvents);
+    checkDateRange(o.dateRange);
+    checkUnnamed3090(o.dimensionFilters);
+    checkUnnamed3091(o.dimensions);
+    unittest.expect(o.enableAllDimensionCombinations, unittest.isTrue);
+    checkUnnamed3092(o.metricNames);
+    checkUnnamed3093(o.reachByFrequencyMetricNames);
+  }
+  buildCounterReportReachCriteria--;
+}
+
+buildUnnamed3094() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3094(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterReportSchedule = 0;
+buildReportSchedule() {
+  var o = new api.ReportSchedule();
+  buildCounterReportSchedule++;
+  if (buildCounterReportSchedule < 3) {
+    o.active = true;
+    o.every = 42;
+    o.expirationDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.repeats = "foo";
+    o.repeatsOnWeekDays = buildUnnamed3094();
+    o.runsOnDayOfMonth = "foo";
+    o.startDate = core.DateTime.parse("2002-02-27T14:01:02Z");
+  }
+  buildCounterReportSchedule--;
+  return o;
+}
+
+checkReportSchedule(api.ReportSchedule o) {
+  buildCounterReportSchedule++;
+  if (buildCounterReportSchedule < 3) {
+    unittest.expect(o.active, unittest.isTrue);
+    unittest.expect(o.every, unittest.equals(42));
+    unittest.expect(o.expirationDate,
+        unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    unittest.expect(o.repeats, unittest.equals('foo'));
+    checkUnnamed3094(o.repeatsOnWeekDays);
+    unittest.expect(o.runsOnDayOfMonth, unittest.equals('foo'));
+    unittest.expect(o.startDate,
+        unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+  }
+  buildCounterReportSchedule--;
+}
+
+core.int buildCounterReport = 0;
+buildReport() {
+  var o = new api.Report();
+  buildCounterReport++;
+  if (buildCounterReport < 3) {
+    o.accountId = "foo";
+    o.criteria = buildReportCriteria();
+    o.crossDimensionReachCriteria = buildReportCrossDimensionReachCriteria();
+    o.delivery = buildReportDelivery();
+    o.etag = "foo";
+    o.fileName = "foo";
+    o.floodlightCriteria = buildReportFloodlightCriteria();
+    o.format = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.lastModifiedTime = "foo";
+    o.name = "foo";
+    o.ownerProfileId = "foo";
+    o.pathToConversionCriteria = buildReportPathToConversionCriteria();
+    o.reachCriteria = buildReportReachCriteria();
+    o.schedule = buildReportSchedule();
+    o.subAccountId = "foo";
+    o.type = "foo";
+  }
+  buildCounterReport--;
+  return o;
+}
+
+checkReport(api.Report o) {
+  buildCounterReport++;
+  if (buildCounterReport < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkReportCriteria(o.criteria);
+    checkReportCrossDimensionReachCriteria(o.crossDimensionReachCriteria);
+    checkReportDelivery(o.delivery);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.fileName, unittest.equals('foo'));
+    checkReportFloodlightCriteria(o.floodlightCriteria);
+    unittest.expect(o.format, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.lastModifiedTime, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.ownerProfileId, unittest.equals('foo'));
+    checkReportPathToConversionCriteria(o.pathToConversionCriteria);
+    checkReportReachCriteria(o.reachCriteria);
+    checkReportSchedule(o.schedule);
+    unittest.expect(o.subAccountId, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterReport--;
+}
+
+buildUnnamed3095() {
+  var o = new core.List<api.Dimension>();
+  o.add(buildDimension());
+  o.add(buildDimension());
+  return o;
+}
+
+checkUnnamed3095(core.List<api.Dimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimension(o[0]);
+  checkDimension(o[1]);
+}
+
+buildUnnamed3096() {
+  var o = new core.List<api.Dimension>();
+  o.add(buildDimension());
+  o.add(buildDimension());
+  return o;
+}
+
+checkUnnamed3096(core.List<api.Dimension> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimension(o[0]);
+  checkDimension(o[1]);
+}
+
+buildUnnamed3097() {
+  var o = new core.List<api.Metric>();
+  o.add(buildMetric());
+  o.add(buildMetric());
+  return o;
+}
+
+checkUnnamed3097(core.List<api.Metric> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetric(o[0]);
+  checkMetric(o[1]);
+}
+
+buildUnnamed3098() {
+  var o = new core.List<api.Metric>();
+  o.add(buildMetric());
+  o.add(buildMetric());
+  return o;
+}
+
+checkUnnamed3098(core.List<api.Metric> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetric(o[0]);
+  checkMetric(o[1]);
+}
+
+core.int buildCounterReportCompatibleFields = 0;
+buildReportCompatibleFields() {
+  var o = new api.ReportCompatibleFields();
+  buildCounterReportCompatibleFields++;
+  if (buildCounterReportCompatibleFields < 3) {
+    o.dimensionFilters = buildUnnamed3095();
+    o.dimensions = buildUnnamed3096();
+    o.kind = "foo";
+    o.metrics = buildUnnamed3097();
+    o.pivotedActivityMetrics = buildUnnamed3098();
+  }
+  buildCounterReportCompatibleFields--;
+  return o;
+}
+
+checkReportCompatibleFields(api.ReportCompatibleFields o) {
+  buildCounterReportCompatibleFields++;
+  if (buildCounterReportCompatibleFields < 3) {
+    checkUnnamed3095(o.dimensionFilters);
+    checkUnnamed3096(o.dimensions);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3097(o.metrics);
+    checkUnnamed3098(o.pivotedActivityMetrics);
+  }
+  buildCounterReportCompatibleFields--;
+}
+
+buildUnnamed3099() {
+  var o = new core.List<api.Report>();
+  o.add(buildReport());
+  o.add(buildReport());
+  return o;
+}
+
+checkUnnamed3099(core.List<api.Report> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkReport(o[0]);
+  checkReport(o[1]);
+}
+
+core.int buildCounterReportList = 0;
+buildReportList() {
+  var o = new api.ReportList();
+  buildCounterReportList++;
+  if (buildCounterReportList < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed3099();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterReportList--;
+  return o;
+}
+
+checkReportList(api.ReportList o) {
+  buildCounterReportList++;
+  if (buildCounterReportList < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed3099(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterReportList--;
+}
+
+core.int buildCounterReportsConfiguration = 0;
+buildReportsConfiguration() {
+  var o = new api.ReportsConfiguration();
+  buildCounterReportsConfiguration++;
+  if (buildCounterReportsConfiguration < 3) {
+    o.exposureToConversionEnabled = true;
+    o.lookbackConfiguration = buildLookbackConfiguration();
+    o.reportGenerationTimeZoneId = "foo";
+  }
+  buildCounterReportsConfiguration--;
+  return o;
+}
+
+checkReportsConfiguration(api.ReportsConfiguration o) {
+  buildCounterReportsConfiguration++;
+  if (buildCounterReportsConfiguration < 3) {
+    unittest.expect(o.exposureToConversionEnabled, unittest.isTrue);
+    checkLookbackConfiguration(o.lookbackConfiguration);
+    unittest.expect(o.reportGenerationTimeZoneId, unittest.equals('foo'));
+  }
+  buildCounterReportsConfiguration--;
+}
+
+core.int buildCounterRichMediaExitOverride = 0;
+buildRichMediaExitOverride() {
+  var o = new api.RichMediaExitOverride();
+  buildCounterRichMediaExitOverride++;
+  if (buildCounterRichMediaExitOverride < 3) {
+    o.clickThroughUrl = buildClickThroughUrl();
+    o.enabled = true;
+    o.exitId = "foo";
+  }
+  buildCounterRichMediaExitOverride--;
+  return o;
+}
+
+checkRichMediaExitOverride(api.RichMediaExitOverride o) {
+  buildCounterRichMediaExitOverride++;
+  if (buildCounterRichMediaExitOverride < 3) {
+    checkClickThroughUrl(o.clickThroughUrl);
+    unittest.expect(o.enabled, unittest.isTrue);
+    unittest.expect(o.exitId, unittest.equals('foo'));
+  }
+  buildCounterRichMediaExitOverride--;
+}
+
+core.int buildCounterRule = 0;
+buildRule() {
+  var o = new api.Rule();
+  buildCounterRule++;
+  if (buildCounterRule < 3) {
+    o.assetId = "foo";
+    o.name = "foo";
+    o.targetingTemplateId = "foo";
+  }
+  buildCounterRule--;
+  return o;
+}
+
+checkRule(api.Rule o) {
+  buildCounterRule++;
+  if (buildCounterRule < 3) {
+    unittest.expect(o.assetId, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.targetingTemplateId, unittest.equals('foo'));
+  }
+  buildCounterRule--;
+}
+
+buildUnnamed3100() {
+  var o = new core.List<api.SiteContact>();
+  o.add(buildSiteContact());
+  o.add(buildSiteContact());
+  return o;
+}
+
+checkUnnamed3100(core.List<api.SiteContact> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSiteContact(o[0]);
+  checkSiteContact(o[1]);
+}
+
+core.int buildCounterSite = 0;
+buildSite() {
+  var o = new api.Site();
+  buildCounterSite++;
+  if (buildCounterSite < 3) {
+    o.accountId = "foo";
+    o.approved = true;
+    o.directorySiteId = "foo";
+    o.directorySiteIdDimensionValue = buildDimensionValue();
+    o.id = "foo";
+    o.idDimensionValue = buildDimensionValue();
+    o.keyName = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.siteContacts = buildUnnamed3100();
+    o.siteSettings = buildSiteSettings();
+    o.subaccountId = "foo";
+  }
+  buildCounterSite--;
+  return o;
+}
+
+checkSite(api.Site o) {
+  buildCounterSite++;
+  if (buildCounterSite < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.approved, unittest.isTrue);
+    unittest.expect(o.directorySiteId, unittest.equals('foo'));
+    checkDimensionValue(o.directorySiteIdDimensionValue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkDimensionValue(o.idDimensionValue);
+    unittest.expect(o.keyName, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed3100(o.siteContacts);
+    checkSiteSettings(o.siteSettings);
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+  }
+  buildCounterSite--;
+}
+
+core.int buildCounterSiteContact = 0;
+buildSiteContact() {
+  var o = new api.SiteContact();
+  buildCounterSiteContact++;
+  if (buildCounterSiteContact < 3) {
+    o.address = "foo";
+    o.contactType = "foo";
+    o.email = "foo";
+    o.firstName = "foo";
+    o.id = "foo";
+    o.lastName = "foo";
+    o.phone = "foo";
+    o.title = "foo";
+  }
+  buildCounterSiteContact--;
+  return o;
+}
+
+checkSiteContact(api.SiteContact o) {
+  buildCounterSiteContact++;
+  if (buildCounterSiteContact < 3) {
+    unittest.expect(o.address, unittest.equals('foo'));
+    unittest.expect(o.contactType, unittest.equals('foo'));
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.firstName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.lastName, unittest.equals('foo'));
+    unittest.expect(o.phone, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterSiteContact--;
+}
+
+core.int buildCounterSiteSettings = 0;
+buildSiteSettings() {
+  var o = new api.SiteSettings();
+  buildCounterSiteSettings++;
+  if (buildCounterSiteSettings < 3) {
+    o.activeViewOptOut = true;
+    o.adBlockingOptOut = true;
+    o.creativeSettings = buildCreativeSettings();
+    o.disableNewCookie = true;
+    o.lookbackConfiguration = buildLookbackConfiguration();
+    o.tagSetting = buildTagSetting();
+    o.videoActiveViewOptOutTemplate = true;
+    o.vpaidAdapterChoiceTemplate = "foo";
+  }
+  buildCounterSiteSettings--;
+  return o;
+}
+
+checkSiteSettings(api.SiteSettings o) {
+  buildCounterSiteSettings++;
+  if (buildCounterSiteSettings < 3) {
+    unittest.expect(o.activeViewOptOut, unittest.isTrue);
+    unittest.expect(o.adBlockingOptOut, unittest.isTrue);
+    checkCreativeSettings(o.creativeSettings);
+    unittest.expect(o.disableNewCookie, unittest.isTrue);
+    checkLookbackConfiguration(o.lookbackConfiguration);
+    checkTagSetting(o.tagSetting);
+    unittest.expect(o.videoActiveViewOptOutTemplate, unittest.isTrue);
+    unittest.expect(o.vpaidAdapterChoiceTemplate, unittest.equals('foo'));
+  }
+  buildCounterSiteSettings--;
+}
+
+buildUnnamed3101() {
+  var o = new core.List<api.Site>();
+  o.add(buildSite());
+  o.add(buildSite());
+  return o;
+}
+
+checkUnnamed3101(core.List<api.Site> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSite(o[0]);
+  checkSite(o[1]);
+}
+
+core.int buildCounterSitesListResponse = 0;
+buildSitesListResponse() {
+  var o = new api.SitesListResponse();
+  buildCounterSitesListResponse++;
+  if (buildCounterSitesListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.sites = buildUnnamed3101();
+  }
+  buildCounterSitesListResponse--;
+  return o;
+}
+
+checkSitesListResponse(api.SitesListResponse o) {
+  buildCounterSitesListResponse++;
+  if (buildCounterSitesListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3101(o.sites);
+  }
+  buildCounterSitesListResponse--;
+}
+
+core.int buildCounterSize = 0;
+buildSize() {
+  var o = new api.Size();
+  buildCounterSize++;
+  if (buildCounterSize < 3) {
+    o.height = 42;
+    o.iab = true;
+    o.id = "foo";
+    o.kind = "foo";
+    o.width = 42;
+  }
+  buildCounterSize--;
+  return o;
+}
+
+checkSize(api.Size o) {
+  buildCounterSize++;
+  if (buildCounterSize < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.iab, unittest.isTrue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterSize--;
+}
+
+buildUnnamed3102() {
+  var o = new core.List<api.Size>();
+  o.add(buildSize());
+  o.add(buildSize());
+  return o;
+}
+
+checkUnnamed3102(core.List<api.Size> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSize(o[0]);
+  checkSize(o[1]);
+}
+
+core.int buildCounterSizesListResponse = 0;
+buildSizesListResponse() {
+  var o = new api.SizesListResponse();
+  buildCounterSizesListResponse++;
+  if (buildCounterSizesListResponse < 3) {
+    o.kind = "foo";
+    o.sizes = buildUnnamed3102();
+  }
+  buildCounterSizesListResponse--;
+  return o;
+}
+
+checkSizesListResponse(api.SizesListResponse o) {
+  buildCounterSizesListResponse++;
+  if (buildCounterSizesListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3102(o.sizes);
+  }
+  buildCounterSizesListResponse--;
+}
+
+core.int buildCounterSkippableSetting = 0;
+buildSkippableSetting() {
+  var o = new api.SkippableSetting();
+  buildCounterSkippableSetting++;
+  if (buildCounterSkippableSetting < 3) {
+    o.kind = "foo";
+    o.progressOffset = buildVideoOffset();
+    o.skipOffset = buildVideoOffset();
+    o.skippable = true;
+  }
+  buildCounterSkippableSetting--;
+  return o;
+}
+
+checkSkippableSetting(api.SkippableSetting o) {
+  buildCounterSkippableSetting++;
+  if (buildCounterSkippableSetting < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkVideoOffset(o.progressOffset);
+    checkVideoOffset(o.skipOffset);
+    unittest.expect(o.skippable, unittest.isTrue);
+  }
+  buildCounterSkippableSetting--;
+}
+
+core.int buildCounterSortedDimension = 0;
+buildSortedDimension() {
+  var o = new api.SortedDimension();
+  buildCounterSortedDimension++;
+  if (buildCounterSortedDimension < 3) {
+    o.kind = "foo";
+    o.name = "foo";
+    o.sortOrder = "foo";
+  }
+  buildCounterSortedDimension--;
+  return o;
+}
+
+checkSortedDimension(api.SortedDimension o) {
+  buildCounterSortedDimension++;
+  if (buildCounterSortedDimension < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.sortOrder, unittest.equals('foo'));
+  }
+  buildCounterSortedDimension--;
+}
+
+buildUnnamed3103() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3103(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterSubaccount = 0;
+buildSubaccount() {
+  var o = new api.Subaccount();
+  buildCounterSubaccount++;
+  if (buildCounterSubaccount < 3) {
+    o.accountId = "foo";
+    o.availablePermissionIds = buildUnnamed3103();
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterSubaccount--;
+  return o;
+}
+
+checkSubaccount(api.Subaccount o) {
+  buildCounterSubaccount++;
+  if (buildCounterSubaccount < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkUnnamed3103(o.availablePermissionIds);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterSubaccount--;
+}
+
+buildUnnamed3104() {
+  var o = new core.List<api.Subaccount>();
+  o.add(buildSubaccount());
+  o.add(buildSubaccount());
+  return o;
+}
+
+checkUnnamed3104(core.List<api.Subaccount> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSubaccount(o[0]);
+  checkSubaccount(o[1]);
+}
+
+core.int buildCounterSubaccountsListResponse = 0;
+buildSubaccountsListResponse() {
+  var o = new api.SubaccountsListResponse();
+  buildCounterSubaccountsListResponse++;
+  if (buildCounterSubaccountsListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.subaccounts = buildUnnamed3104();
+  }
+  buildCounterSubaccountsListResponse--;
+  return o;
+}
+
+checkSubaccountsListResponse(api.SubaccountsListResponse o) {
+  buildCounterSubaccountsListResponse++;
+  if (buildCounterSubaccountsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3104(o.subaccounts);
+  }
+  buildCounterSubaccountsListResponse--;
+}
+
+core.int buildCounterTagData = 0;
+buildTagData() {
+  var o = new api.TagData();
+  buildCounterTagData++;
+  if (buildCounterTagData < 3) {
+    o.adId = "foo";
+    o.clickTag = "foo";
+    o.creativeId = "foo";
+    o.format = "foo";
+    o.impressionTag = "foo";
+  }
+  buildCounterTagData--;
+  return o;
+}
+
+checkTagData(api.TagData o) {
+  buildCounterTagData++;
+  if (buildCounterTagData < 3) {
+    unittest.expect(o.adId, unittest.equals('foo'));
+    unittest.expect(o.clickTag, unittest.equals('foo'));
+    unittest.expect(o.creativeId, unittest.equals('foo'));
+    unittest.expect(o.format, unittest.equals('foo'));
+    unittest.expect(o.impressionTag, unittest.equals('foo'));
+  }
+  buildCounterTagData--;
+}
+
+core.int buildCounterTagSetting = 0;
+buildTagSetting() {
+  var o = new api.TagSetting();
+  buildCounterTagSetting++;
+  if (buildCounterTagSetting < 3) {
+    o.additionalKeyValues = "foo";
+    o.includeClickThroughUrls = true;
+    o.includeClickTracking = true;
+    o.keywordOption = "foo";
+  }
+  buildCounterTagSetting--;
+  return o;
+}
+
+checkTagSetting(api.TagSetting o) {
+  buildCounterTagSetting++;
+  if (buildCounterTagSetting < 3) {
+    unittest.expect(o.additionalKeyValues, unittest.equals('foo'));
+    unittest.expect(o.includeClickThroughUrls, unittest.isTrue);
+    unittest.expect(o.includeClickTracking, unittest.isTrue);
+    unittest.expect(o.keywordOption, unittest.equals('foo'));
+  }
+  buildCounterTagSetting--;
+}
+
+core.int buildCounterTagSettings = 0;
+buildTagSettings() {
+  var o = new api.TagSettings();
+  buildCounterTagSettings++;
+  if (buildCounterTagSettings < 3) {
+    o.dynamicTagEnabled = true;
+    o.imageTagEnabled = true;
+  }
+  buildCounterTagSettings--;
+  return o;
+}
+
+checkTagSettings(api.TagSettings o) {
+  buildCounterTagSettings++;
+  if (buildCounterTagSettings < 3) {
+    unittest.expect(o.dynamicTagEnabled, unittest.isTrue);
+    unittest.expect(o.imageTagEnabled, unittest.isTrue);
+  }
+  buildCounterTagSettings--;
+}
+
+core.int buildCounterTargetWindow = 0;
+buildTargetWindow() {
+  var o = new api.TargetWindow();
+  buildCounterTargetWindow++;
+  if (buildCounterTargetWindow < 3) {
+    o.customHtml = "foo";
+    o.targetWindowOption = "foo";
+  }
+  buildCounterTargetWindow--;
+  return o;
+}
+
+checkTargetWindow(api.TargetWindow o) {
+  buildCounterTargetWindow++;
+  if (buildCounterTargetWindow < 3) {
+    unittest.expect(o.customHtml, unittest.equals('foo'));
+    unittest.expect(o.targetWindowOption, unittest.equals('foo'));
+  }
+  buildCounterTargetWindow--;
+}
+
+core.int buildCounterTargetableRemarketingList = 0;
+buildTargetableRemarketingList() {
+  var o = new api.TargetableRemarketingList();
+  buildCounterTargetableRemarketingList++;
+  if (buildCounterTargetableRemarketingList < 3) {
+    o.accountId = "foo";
+    o.active = true;
+    o.advertiserId = "foo";
+    o.advertiserIdDimensionValue = buildDimensionValue();
+    o.description = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.lifeSpan = "foo";
+    o.listSize = "foo";
+    o.listSource = "foo";
+    o.name = "foo";
+    o.subaccountId = "foo";
+  }
+  buildCounterTargetableRemarketingList--;
+  return o;
+}
+
+checkTargetableRemarketingList(api.TargetableRemarketingList o) {
+  buildCounterTargetableRemarketingList++;
+  if (buildCounterTargetableRemarketingList < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.active, unittest.isTrue);
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    checkDimensionValue(o.advertiserIdDimensionValue);
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.lifeSpan, unittest.equals('foo'));
+    unittest.expect(o.listSize, unittest.equals('foo'));
+    unittest.expect(o.listSource, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+  }
+  buildCounterTargetableRemarketingList--;
+}
+
+buildUnnamed3105() {
+  var o = new core.List<api.TargetableRemarketingList>();
+  o.add(buildTargetableRemarketingList());
+  o.add(buildTargetableRemarketingList());
+  return o;
+}
+
+checkUnnamed3105(core.List<api.TargetableRemarketingList> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTargetableRemarketingList(o[0]);
+  checkTargetableRemarketingList(o[1]);
+}
+
+core.int buildCounterTargetableRemarketingListsListResponse = 0;
+buildTargetableRemarketingListsListResponse() {
+  var o = new api.TargetableRemarketingListsListResponse();
+  buildCounterTargetableRemarketingListsListResponse++;
+  if (buildCounterTargetableRemarketingListsListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.targetableRemarketingLists = buildUnnamed3105();
+  }
+  buildCounterTargetableRemarketingListsListResponse--;
+  return o;
+}
+
+checkTargetableRemarketingListsListResponse(
+    api.TargetableRemarketingListsListResponse o) {
+  buildCounterTargetableRemarketingListsListResponse++;
+  if (buildCounterTargetableRemarketingListsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3105(o.targetableRemarketingLists);
+  }
+  buildCounterTargetableRemarketingListsListResponse--;
+}
+
+core.int buildCounterTargetingTemplate = 0;
+buildTargetingTemplate() {
+  var o = new api.TargetingTemplate();
+  buildCounterTargetingTemplate++;
+  if (buildCounterTargetingTemplate < 3) {
+    o.accountId = "foo";
+    o.advertiserId = "foo";
+    o.advertiserIdDimensionValue = buildDimensionValue();
+    o.dayPartTargeting = buildDayPartTargeting();
+    o.geoTargeting = buildGeoTargeting();
+    o.id = "foo";
+    o.keyValueTargetingExpression = buildKeyValueTargetingExpression();
+    o.kind = "foo";
+    o.languageTargeting = buildLanguageTargeting();
+    o.listTargetingExpression = buildListTargetingExpression();
+    o.name = "foo";
+    o.subaccountId = "foo";
+    o.technologyTargeting = buildTechnologyTargeting();
+  }
+  buildCounterTargetingTemplate--;
+  return o;
+}
+
+checkTargetingTemplate(api.TargetingTemplate o) {
+  buildCounterTargetingTemplate++;
+  if (buildCounterTargetingTemplate < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.advertiserId, unittest.equals('foo'));
+    checkDimensionValue(o.advertiserIdDimensionValue);
+    checkDayPartTargeting(o.dayPartTargeting);
+    checkGeoTargeting(o.geoTargeting);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkKeyValueTargetingExpression(o.keyValueTargetingExpression);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkLanguageTargeting(o.languageTargeting);
+    checkListTargetingExpression(o.listTargetingExpression);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+    checkTechnologyTargeting(o.technologyTargeting);
+  }
+  buildCounterTargetingTemplate--;
+}
+
+buildUnnamed3106() {
+  var o = new core.List<api.TargetingTemplate>();
+  o.add(buildTargetingTemplate());
+  o.add(buildTargetingTemplate());
+  return o;
+}
+
+checkUnnamed3106(core.List<api.TargetingTemplate> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTargetingTemplate(o[0]);
+  checkTargetingTemplate(o[1]);
+}
+
+core.int buildCounterTargetingTemplatesListResponse = 0;
+buildTargetingTemplatesListResponse() {
+  var o = new api.TargetingTemplatesListResponse();
+  buildCounterTargetingTemplatesListResponse++;
+  if (buildCounterTargetingTemplatesListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.targetingTemplates = buildUnnamed3106();
+  }
+  buildCounterTargetingTemplatesListResponse--;
+  return o;
+}
+
+checkTargetingTemplatesListResponse(api.TargetingTemplatesListResponse o) {
+  buildCounterTargetingTemplatesListResponse++;
+  if (buildCounterTargetingTemplatesListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3106(o.targetingTemplates);
+  }
+  buildCounterTargetingTemplatesListResponse--;
+}
+
+buildUnnamed3107() {
+  var o = new core.List<api.Browser>();
+  o.add(buildBrowser());
+  o.add(buildBrowser());
+  return o;
+}
+
+checkUnnamed3107(core.List<api.Browser> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBrowser(o[0]);
+  checkBrowser(o[1]);
+}
+
+buildUnnamed3108() {
+  var o = new core.List<api.ConnectionType>();
+  o.add(buildConnectionType());
+  o.add(buildConnectionType());
+  return o;
+}
+
+checkUnnamed3108(core.List<api.ConnectionType> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkConnectionType(o[0]);
+  checkConnectionType(o[1]);
+}
+
+buildUnnamed3109() {
+  var o = new core.List<api.MobileCarrier>();
+  o.add(buildMobileCarrier());
+  o.add(buildMobileCarrier());
+  return o;
+}
+
+checkUnnamed3109(core.List<api.MobileCarrier> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMobileCarrier(o[0]);
+  checkMobileCarrier(o[1]);
+}
+
+buildUnnamed3110() {
+  var o = new core.List<api.OperatingSystemVersion>();
+  o.add(buildOperatingSystemVersion());
+  o.add(buildOperatingSystemVersion());
+  return o;
+}
+
+checkUnnamed3110(core.List<api.OperatingSystemVersion> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOperatingSystemVersion(o[0]);
+  checkOperatingSystemVersion(o[1]);
+}
+
+buildUnnamed3111() {
+  var o = new core.List<api.OperatingSystem>();
+  o.add(buildOperatingSystem());
+  o.add(buildOperatingSystem());
+  return o;
+}
+
+checkUnnamed3111(core.List<api.OperatingSystem> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOperatingSystem(o[0]);
+  checkOperatingSystem(o[1]);
+}
+
+buildUnnamed3112() {
+  var o = new core.List<api.PlatformType>();
+  o.add(buildPlatformType());
+  o.add(buildPlatformType());
+  return o;
+}
+
+checkUnnamed3112(core.List<api.PlatformType> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPlatformType(o[0]);
+  checkPlatformType(o[1]);
+}
+
+core.int buildCounterTechnologyTargeting = 0;
+buildTechnologyTargeting() {
+  var o = new api.TechnologyTargeting();
+  buildCounterTechnologyTargeting++;
+  if (buildCounterTechnologyTargeting < 3) {
+    o.browsers = buildUnnamed3107();
+    o.connectionTypes = buildUnnamed3108();
+    o.mobileCarriers = buildUnnamed3109();
+    o.operatingSystemVersions = buildUnnamed3110();
+    o.operatingSystems = buildUnnamed3111();
+    o.platformTypes = buildUnnamed3112();
+  }
+  buildCounterTechnologyTargeting--;
+  return o;
+}
+
+checkTechnologyTargeting(api.TechnologyTargeting o) {
+  buildCounterTechnologyTargeting++;
+  if (buildCounterTechnologyTargeting < 3) {
+    checkUnnamed3107(o.browsers);
+    checkUnnamed3108(o.connectionTypes);
+    checkUnnamed3109(o.mobileCarriers);
+    checkUnnamed3110(o.operatingSystemVersions);
+    checkUnnamed3111(o.operatingSystems);
+    checkUnnamed3112(o.platformTypes);
+  }
+  buildCounterTechnologyTargeting--;
+}
+
+core.int buildCounterThirdPartyAuthenticationToken = 0;
+buildThirdPartyAuthenticationToken() {
+  var o = new api.ThirdPartyAuthenticationToken();
+  buildCounterThirdPartyAuthenticationToken++;
+  if (buildCounterThirdPartyAuthenticationToken < 3) {
+    o.name = "foo";
+    o.value = "foo";
+  }
+  buildCounterThirdPartyAuthenticationToken--;
+  return o;
+}
+
+checkThirdPartyAuthenticationToken(api.ThirdPartyAuthenticationToken o) {
+  buildCounterThirdPartyAuthenticationToken++;
+  if (buildCounterThirdPartyAuthenticationToken < 3) {
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterThirdPartyAuthenticationToken--;
+}
+
+core.int buildCounterThirdPartyTrackingUrl = 0;
+buildThirdPartyTrackingUrl() {
+  var o = new api.ThirdPartyTrackingUrl();
+  buildCounterThirdPartyTrackingUrl++;
+  if (buildCounterThirdPartyTrackingUrl < 3) {
+    o.thirdPartyUrlType = "foo";
+    o.url = "foo";
+  }
+  buildCounterThirdPartyTrackingUrl--;
+  return o;
+}
+
+checkThirdPartyTrackingUrl(api.ThirdPartyTrackingUrl o) {
+  buildCounterThirdPartyTrackingUrl++;
+  if (buildCounterThirdPartyTrackingUrl < 3) {
+    unittest.expect(o.thirdPartyUrlType, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterThirdPartyTrackingUrl--;
+}
+
+buildUnnamed3113() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed3113(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+core.int buildCounterTranscodeSetting = 0;
+buildTranscodeSetting() {
+  var o = new api.TranscodeSetting();
+  buildCounterTranscodeSetting++;
+  if (buildCounterTranscodeSetting < 3) {
+    o.enabledVideoFormats = buildUnnamed3113();
+    o.kind = "foo";
+  }
+  buildCounterTranscodeSetting--;
+  return o;
+}
+
+checkTranscodeSetting(api.TranscodeSetting o) {
+  buildCounterTranscodeSetting++;
+  if (buildCounterTranscodeSetting < 3) {
+    checkUnnamed3113(o.enabledVideoFormats);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterTranscodeSetting--;
+}
+
+core.int buildCounterUniversalAdId = 0;
+buildUniversalAdId() {
+  var o = new api.UniversalAdId();
+  buildCounterUniversalAdId++;
+  if (buildCounterUniversalAdId < 3) {
+    o.registry = "foo";
+    o.value = "foo";
+  }
+  buildCounterUniversalAdId--;
+  return o;
+}
+
+checkUniversalAdId(api.UniversalAdId o) {
+  buildCounterUniversalAdId++;
+  if (buildCounterUniversalAdId < 3) {
+    unittest.expect(o.registry, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterUniversalAdId--;
+}
+
+core.int buildCounterUserDefinedVariableConfiguration = 0;
+buildUserDefinedVariableConfiguration() {
+  var o = new api.UserDefinedVariableConfiguration();
+  buildCounterUserDefinedVariableConfiguration++;
+  if (buildCounterUserDefinedVariableConfiguration < 3) {
+    o.dataType = "foo";
+    o.reportName = "foo";
+    o.variableType = "foo";
+  }
+  buildCounterUserDefinedVariableConfiguration--;
+  return o;
+}
+
+checkUserDefinedVariableConfiguration(api.UserDefinedVariableConfiguration o) {
+  buildCounterUserDefinedVariableConfiguration++;
+  if (buildCounterUserDefinedVariableConfiguration < 3) {
+    unittest.expect(o.dataType, unittest.equals('foo'));
+    unittest.expect(o.reportName, unittest.equals('foo'));
+    unittest.expect(o.variableType, unittest.equals('foo'));
+  }
+  buildCounterUserDefinedVariableConfiguration--;
+}
+
+core.int buildCounterUserProfile = 0;
+buildUserProfile() {
+  var o = new api.UserProfile();
+  buildCounterUserProfile++;
+  if (buildCounterUserProfile < 3) {
+    o.accountId = "foo";
+    o.accountName = "foo";
+    o.etag = "foo";
+    o.kind = "foo";
+    o.profileId = "foo";
+    o.subAccountId = "foo";
+    o.subAccountName = "foo";
+    o.userName = "foo";
+  }
+  buildCounterUserProfile--;
+  return o;
+}
+
+checkUserProfile(api.UserProfile o) {
+  buildCounterUserProfile++;
+  if (buildCounterUserProfile < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.accountName, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.profileId, unittest.equals('foo'));
+    unittest.expect(o.subAccountId, unittest.equals('foo'));
+    unittest.expect(o.subAccountName, unittest.equals('foo'));
+    unittest.expect(o.userName, unittest.equals('foo'));
+  }
+  buildCounterUserProfile--;
+}
+
+buildUnnamed3114() {
+  var o = new core.List<api.UserProfile>();
+  o.add(buildUserProfile());
+  o.add(buildUserProfile());
+  return o;
+}
+
+checkUnnamed3114(core.List<api.UserProfile> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUserProfile(o[0]);
+  checkUserProfile(o[1]);
+}
+
+core.int buildCounterUserProfileList = 0;
+buildUserProfileList() {
+  var o = new api.UserProfileList();
+  buildCounterUserProfileList++;
+  if (buildCounterUserProfileList < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed3114();
+    o.kind = "foo";
+  }
+  buildCounterUserProfileList--;
+  return o;
+}
+
+checkUserProfileList(api.UserProfileList o) {
+  buildCounterUserProfileList++;
+  if (buildCounterUserProfileList < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed3114(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterUserProfileList--;
+}
+
+buildUnnamed3115() {
+  var o = new core.List<api.UserRolePermission>();
+  o.add(buildUserRolePermission());
+  o.add(buildUserRolePermission());
+  return o;
+}
+
+checkUnnamed3115(core.List<api.UserRolePermission> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUserRolePermission(o[0]);
+  checkUserRolePermission(o[1]);
+}
+
+core.int buildCounterUserRole = 0;
+buildUserRole() {
+  var o = new api.UserRole();
+  buildCounterUserRole++;
+  if (buildCounterUserRole < 3) {
+    o.accountId = "foo";
+    o.defaultUserRole = true;
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.parentUserRoleId = "foo";
+    o.permissions = buildUnnamed3115();
+    o.subaccountId = "foo";
+  }
+  buildCounterUserRole--;
+  return o;
+}
+
+checkUserRole(api.UserRole o) {
+  buildCounterUserRole++;
+  if (buildCounterUserRole < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.defaultUserRole, unittest.isTrue);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.parentUserRoleId, unittest.equals('foo'));
+    checkUnnamed3115(o.permissions);
+    unittest.expect(o.subaccountId, unittest.equals('foo'));
+  }
+  buildCounterUserRole--;
+}
+
+core.int buildCounterUserRolePermission = 0;
+buildUserRolePermission() {
+  var o = new api.UserRolePermission();
+  buildCounterUserRolePermission++;
+  if (buildCounterUserRolePermission < 3) {
+    o.availability = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.permissionGroupId = "foo";
+  }
+  buildCounterUserRolePermission--;
+  return o;
+}
+
+checkUserRolePermission(api.UserRolePermission o) {
+  buildCounterUserRolePermission++;
+  if (buildCounterUserRolePermission < 3) {
+    unittest.expect(o.availability, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.permissionGroupId, unittest.equals('foo'));
+  }
+  buildCounterUserRolePermission--;
+}
+
+core.int buildCounterUserRolePermissionGroup = 0;
+buildUserRolePermissionGroup() {
+  var o = new api.UserRolePermissionGroup();
+  buildCounterUserRolePermissionGroup++;
+  if (buildCounterUserRolePermissionGroup < 3) {
+    o.id = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+  }
+  buildCounterUserRolePermissionGroup--;
+  return o;
+}
+
+checkUserRolePermissionGroup(api.UserRolePermissionGroup o) {
+  buildCounterUserRolePermissionGroup++;
+  if (buildCounterUserRolePermissionGroup < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterUserRolePermissionGroup--;
+}
+
+buildUnnamed3116() {
+  var o = new core.List<api.UserRolePermissionGroup>();
+  o.add(buildUserRolePermissionGroup());
+  o.add(buildUserRolePermissionGroup());
+  return o;
+}
+
+checkUnnamed3116(core.List<api.UserRolePermissionGroup> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUserRolePermissionGroup(o[0]);
+  checkUserRolePermissionGroup(o[1]);
+}
+
+core.int buildCounterUserRolePermissionGroupsListResponse = 0;
+buildUserRolePermissionGroupsListResponse() {
+  var o = new api.UserRolePermissionGroupsListResponse();
+  buildCounterUserRolePermissionGroupsListResponse++;
+  if (buildCounterUserRolePermissionGroupsListResponse < 3) {
+    o.kind = "foo";
+    o.userRolePermissionGroups = buildUnnamed3116();
+  }
+  buildCounterUserRolePermissionGroupsListResponse--;
+  return o;
+}
+
+checkUserRolePermissionGroupsListResponse(
+    api.UserRolePermissionGroupsListResponse o) {
+  buildCounterUserRolePermissionGroupsListResponse++;
+  if (buildCounterUserRolePermissionGroupsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3116(o.userRolePermissionGroups);
+  }
+  buildCounterUserRolePermissionGroupsListResponse--;
+}
+
+buildUnnamed3117() {
+  var o = new core.List<api.UserRolePermission>();
+  o.add(buildUserRolePermission());
+  o.add(buildUserRolePermission());
+  return o;
+}
+
+checkUnnamed3117(core.List<api.UserRolePermission> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUserRolePermission(o[0]);
+  checkUserRolePermission(o[1]);
+}
+
+core.int buildCounterUserRolePermissionsListResponse = 0;
+buildUserRolePermissionsListResponse() {
+  var o = new api.UserRolePermissionsListResponse();
+  buildCounterUserRolePermissionsListResponse++;
+  if (buildCounterUserRolePermissionsListResponse < 3) {
+    o.kind = "foo";
+    o.userRolePermissions = buildUnnamed3117();
+  }
+  buildCounterUserRolePermissionsListResponse--;
+  return o;
+}
+
+checkUserRolePermissionsListResponse(api.UserRolePermissionsListResponse o) {
+  buildCounterUserRolePermissionsListResponse++;
+  if (buildCounterUserRolePermissionsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3117(o.userRolePermissions);
+  }
+  buildCounterUserRolePermissionsListResponse--;
+}
+
+buildUnnamed3118() {
+  var o = new core.List<api.UserRole>();
+  o.add(buildUserRole());
+  o.add(buildUserRole());
+  return o;
+}
+
+checkUnnamed3118(core.List<api.UserRole> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUserRole(o[0]);
+  checkUserRole(o[1]);
+}
+
+core.int buildCounterUserRolesListResponse = 0;
+buildUserRolesListResponse() {
+  var o = new api.UserRolesListResponse();
+  buildCounterUserRolesListResponse++;
+  if (buildCounterUserRolesListResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.userRoles = buildUnnamed3118();
+  }
+  buildCounterUserRolesListResponse--;
+  return o;
+}
+
+checkUserRolesListResponse(api.UserRolesListResponse o) {
+  buildCounterUserRolesListResponse++;
+  if (buildCounterUserRolesListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3118(o.userRoles);
+  }
+  buildCounterUserRolesListResponse--;
+}
+
+core.int buildCounterVideoFormat = 0;
+buildVideoFormat() {
+  var o = new api.VideoFormat();
+  buildCounterVideoFormat++;
+  if (buildCounterVideoFormat < 3) {
+    o.fileType = "foo";
+    o.id = 42;
+    o.kind = "foo";
+    o.resolution = buildSize();
+    o.targetBitRate = 42;
+  }
+  buildCounterVideoFormat--;
+  return o;
+}
+
+checkVideoFormat(api.VideoFormat o) {
+  buildCounterVideoFormat++;
+  if (buildCounterVideoFormat < 3) {
+    unittest.expect(o.fileType, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals(42));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkSize(o.resolution);
+    unittest.expect(o.targetBitRate, unittest.equals(42));
+  }
+  buildCounterVideoFormat--;
+}
+
+buildUnnamed3119() {
+  var o = new core.List<api.VideoFormat>();
+  o.add(buildVideoFormat());
+  o.add(buildVideoFormat());
+  return o;
+}
+
+checkUnnamed3119(core.List<api.VideoFormat> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVideoFormat(o[0]);
+  checkVideoFormat(o[1]);
+}
+
+core.int buildCounterVideoFormatsListResponse = 0;
+buildVideoFormatsListResponse() {
+  var o = new api.VideoFormatsListResponse();
+  buildCounterVideoFormatsListResponse++;
+  if (buildCounterVideoFormatsListResponse < 3) {
+    o.kind = "foo";
+    o.videoFormats = buildUnnamed3119();
+  }
+  buildCounterVideoFormatsListResponse--;
+  return o;
+}
+
+checkVideoFormatsListResponse(api.VideoFormatsListResponse o) {
+  buildCounterVideoFormatsListResponse++;
+  if (buildCounterVideoFormatsListResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3119(o.videoFormats);
+  }
+  buildCounterVideoFormatsListResponse--;
+}
+
+core.int buildCounterVideoOffset = 0;
+buildVideoOffset() {
+  var o = new api.VideoOffset();
+  buildCounterVideoOffset++;
+  if (buildCounterVideoOffset < 3) {
+    o.offsetPercentage = 42;
+    o.offsetSeconds = 42;
+  }
+  buildCounterVideoOffset--;
+  return o;
+}
+
+checkVideoOffset(api.VideoOffset o) {
+  buildCounterVideoOffset++;
+  if (buildCounterVideoOffset < 3) {
+    unittest.expect(o.offsetPercentage, unittest.equals(42));
+    unittest.expect(o.offsetSeconds, unittest.equals(42));
+  }
+  buildCounterVideoOffset--;
+}
+
+core.int buildCounterVideoSettings = 0;
+buildVideoSettings() {
+  var o = new api.VideoSettings();
+  buildCounterVideoSettings++;
+  if (buildCounterVideoSettings < 3) {
+    o.companionSettings = buildCompanionSetting();
+    o.kind = "foo";
+    o.skippableSettings = buildSkippableSetting();
+    o.transcodeSettings = buildTranscodeSetting();
+  }
+  buildCounterVideoSettings--;
+  return o;
+}
+
+checkVideoSettings(api.VideoSettings o) {
+  buildCounterVideoSettings++;
+  if (buildCounterVideoSettings < 3) {
+    checkCompanionSetting(o.companionSettings);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkSkippableSetting(o.skippableSettings);
+    checkTranscodeSetting(o.transcodeSettings);
+  }
+  buildCounterVideoSettings--;
+}
+
+buildUnnamed3120() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3120(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3121() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3121(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3122() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3122(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3123() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3123(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3124() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3124(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3125() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3125(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3126() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3126(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3127() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3127(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3128() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3128(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3129() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3129(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3130() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3130(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3131() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3131(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3132() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3132(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3133() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3133(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3134() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3134(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3135() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3135(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3136() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3136(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3137() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3137(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3138() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3138(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3139() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3139(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3140() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3140(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3141() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3141(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3142() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3142(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3143() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3143(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3144() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3144(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3145() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3145(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3146() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3146(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3147() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3147(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3148() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3148(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3149() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3149(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3150() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3150(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3151() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3151(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3152() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3152(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3153() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3153(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3154() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3154(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3155() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3155(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3156() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3156(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3157() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3157(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3158() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3158(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3159() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3159(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3160() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3160(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3161() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3161(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3162() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3162(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3163() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3163(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3164() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3164(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3165() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3165(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3166() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3166(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3167() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3167(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3168() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3168(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3169() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3169(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3170() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3170(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3171() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3171(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3172() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3172(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3173() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3173(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3174() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3174(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3175() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3175(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3176() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3176(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3177() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3177(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3178() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3178(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3179() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3179(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3180() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3180(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3181() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3181(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3182() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3182(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3183() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3183(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3184() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3184(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3185() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3185(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3186() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3186(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3187() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3187(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3188() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3188(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3189() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3189(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3190() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3190(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3191() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3191(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3192() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3192(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3193() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3193(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3194() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3194(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3195() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3195(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3196() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3196(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3197() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3197(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3198() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3198(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3199() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3199(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3200() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3200(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3201() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3201(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3202() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3202(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3203() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3203(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3204() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3204(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3205() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3205(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3206() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3206(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3207() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3207(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-Account", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccount();
+      var od = new api.Account.fromJson(o.toJson());
+      checkAccount(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountActiveAdSummary", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountActiveAdSummary();
+      var od = new api.AccountActiveAdSummary.fromJson(o.toJson());
+      checkAccountActiveAdSummary(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountPermission", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountPermission();
+      var od = new api.AccountPermission.fromJson(o.toJson());
+      checkAccountPermission(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountPermissionGroup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountPermissionGroup();
+      var od = new api.AccountPermissionGroup.fromJson(o.toJson());
+      checkAccountPermissionGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountPermissionGroupsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountPermissionGroupsListResponse();
+      var od = new api.AccountPermissionGroupsListResponse.fromJson(o.toJson());
+      checkAccountPermissionGroupsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountPermissionsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountPermissionsListResponse();
+      var od = new api.AccountPermissionsListResponse.fromJson(o.toJson());
+      checkAccountPermissionsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountUserProfile", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountUserProfile();
+      var od = new api.AccountUserProfile.fromJson(o.toJson());
+      checkAccountUserProfile(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountUserProfilesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountUserProfilesListResponse();
+      var od = new api.AccountUserProfilesListResponse.fromJson(o.toJson());
+      checkAccountUserProfilesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountsListResponse();
+      var od = new api.AccountsListResponse.fromJson(o.toJson());
+      checkAccountsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Activities", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivities();
+      var od = new api.Activities.fromJson(o.toJson());
+      checkActivities(od);
+    });
+  });
+
+  unittest.group("obj-schema-Ad", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAd();
+      var od = new api.Ad.fromJson(o.toJson());
+      checkAd(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdBlockingConfiguration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdBlockingConfiguration();
+      var od = new api.AdBlockingConfiguration.fromJson(o.toJson());
+      checkAdBlockingConfiguration(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdSlot", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdSlot();
+      var od = new api.AdSlot.fromJson(o.toJson());
+      checkAdSlot(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdsListResponse();
+      var od = new api.AdsListResponse.fromJson(o.toJson());
+      checkAdsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Advertiser", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdvertiser();
+      var od = new api.Advertiser.fromJson(o.toJson());
+      checkAdvertiser(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdvertiserGroup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdvertiserGroup();
+      var od = new api.AdvertiserGroup.fromJson(o.toJson());
+      checkAdvertiserGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdvertiserGroupsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdvertiserGroupsListResponse();
+      var od = new api.AdvertiserGroupsListResponse.fromJson(o.toJson());
+      checkAdvertiserGroupsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AdvertisersListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdvertisersListResponse();
+      var od = new api.AdvertisersListResponse.fromJson(o.toJson());
+      checkAdvertisersListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AudienceSegment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAudienceSegment();
+      var od = new api.AudienceSegment.fromJson(o.toJson());
+      checkAudienceSegment(od);
+    });
+  });
+
+  unittest.group("obj-schema-AudienceSegmentGroup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAudienceSegmentGroup();
+      var od = new api.AudienceSegmentGroup.fromJson(o.toJson());
+      checkAudienceSegmentGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-Browser", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBrowser();
+      var od = new api.Browser.fromJson(o.toJson());
+      checkBrowser(od);
+    });
+  });
+
+  unittest.group("obj-schema-BrowsersListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBrowsersListResponse();
+      var od = new api.BrowsersListResponse.fromJson(o.toJson());
+      checkBrowsersListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Campaign", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCampaign();
+      var od = new api.Campaign.fromJson(o.toJson());
+      checkCampaign(od);
+    });
+  });
+
+  unittest.group("obj-schema-CampaignCreativeAssociation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCampaignCreativeAssociation();
+      var od = new api.CampaignCreativeAssociation.fromJson(o.toJson());
+      checkCampaignCreativeAssociation(od);
+    });
+  });
+
+  unittest.group("obj-schema-CampaignCreativeAssociationsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCampaignCreativeAssociationsListResponse();
+      var od =
+          new api.CampaignCreativeAssociationsListResponse.fromJson(o.toJson());
+      checkCampaignCreativeAssociationsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CampaignsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCampaignsListResponse();
+      var od = new api.CampaignsListResponse.fromJson(o.toJson());
+      checkCampaignsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ChangeLog", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildChangeLog();
+      var od = new api.ChangeLog.fromJson(o.toJson());
+      checkChangeLog(od);
+    });
+  });
+
+  unittest.group("obj-schema-ChangeLogsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildChangeLogsListResponse();
+      var od = new api.ChangeLogsListResponse.fromJson(o.toJson());
+      checkChangeLogsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CitiesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCitiesListResponse();
+      var od = new api.CitiesListResponse.fromJson(o.toJson());
+      checkCitiesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-City", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCity();
+      var od = new api.City.fromJson(o.toJson());
+      checkCity(od);
+    });
+  });
+
+  unittest.group("obj-schema-ClickTag", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildClickTag();
+      var od = new api.ClickTag.fromJson(o.toJson());
+      checkClickTag(od);
+    });
+  });
+
+  unittest.group("obj-schema-ClickThroughUrl", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildClickThroughUrl();
+      var od = new api.ClickThroughUrl.fromJson(o.toJson());
+      checkClickThroughUrl(od);
+    });
+  });
+
+  unittest.group("obj-schema-ClickThroughUrlSuffixProperties", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildClickThroughUrlSuffixProperties();
+      var od = new api.ClickThroughUrlSuffixProperties.fromJson(o.toJson());
+      checkClickThroughUrlSuffixProperties(od);
+    });
+  });
+
+  unittest.group("obj-schema-CompanionClickThroughOverride", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCompanionClickThroughOverride();
+      var od = new api.CompanionClickThroughOverride.fromJson(o.toJson());
+      checkCompanionClickThroughOverride(od);
+    });
+  });
+
+  unittest.group("obj-schema-CompanionSetting", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCompanionSetting();
+      var od = new api.CompanionSetting.fromJson(o.toJson());
+      checkCompanionSetting(od);
+    });
+  });
+
+  unittest.group("obj-schema-CompatibleFields", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCompatibleFields();
+      var od = new api.CompatibleFields.fromJson(o.toJson());
+      checkCompatibleFields(od);
+    });
+  });
+
+  unittest.group("obj-schema-ConnectionType", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildConnectionType();
+      var od = new api.ConnectionType.fromJson(o.toJson());
+      checkConnectionType(od);
+    });
+  });
+
+  unittest.group("obj-schema-ConnectionTypesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildConnectionTypesListResponse();
+      var od = new api.ConnectionTypesListResponse.fromJson(o.toJson());
+      checkConnectionTypesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ContentCategoriesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContentCategoriesListResponse();
+      var od = new api.ContentCategoriesListResponse.fromJson(o.toJson());
+      checkContentCategoriesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ContentCategory", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContentCategory();
+      var od = new api.ContentCategory.fromJson(o.toJson());
+      checkContentCategory(od);
+    });
+  });
+
+  unittest.group("obj-schema-Conversion", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildConversion();
+      var od = new api.Conversion.fromJson(o.toJson());
+      checkConversion(od);
+    });
+  });
+
+  unittest.group("obj-schema-ConversionError", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildConversionError();
+      var od = new api.ConversionError.fromJson(o.toJson());
+      checkConversionError(od);
+    });
+  });
+
+  unittest.group("obj-schema-ConversionStatus", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildConversionStatus();
+      var od = new api.ConversionStatus.fromJson(o.toJson());
+      checkConversionStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-ConversionsBatchInsertRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildConversionsBatchInsertRequest();
+      var od = new api.ConversionsBatchInsertRequest.fromJson(o.toJson());
+      checkConversionsBatchInsertRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ConversionsBatchInsertResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildConversionsBatchInsertResponse();
+      var od = new api.ConversionsBatchInsertResponse.fromJson(o.toJson());
+      checkConversionsBatchInsertResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ConversionsBatchUpdateRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildConversionsBatchUpdateRequest();
+      var od = new api.ConversionsBatchUpdateRequest.fromJson(o.toJson());
+      checkConversionsBatchUpdateRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ConversionsBatchUpdateResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildConversionsBatchUpdateResponse();
+      var od = new api.ConversionsBatchUpdateResponse.fromJson(o.toJson());
+      checkConversionsBatchUpdateResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CountriesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCountriesListResponse();
+      var od = new api.CountriesListResponse.fromJson(o.toJson());
+      checkCountriesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Country", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCountry();
+      var od = new api.Country.fromJson(o.toJson());
+      checkCountry(od);
+    });
+  });
+
+  unittest.group("obj-schema-Creative", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreative();
+      var od = new api.Creative.fromJson(o.toJson());
+      checkCreative(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeAsset", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeAsset();
+      var od = new api.CreativeAsset.fromJson(o.toJson());
+      checkCreativeAsset(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeAssetId", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeAssetId();
+      var od = new api.CreativeAssetId.fromJson(o.toJson());
+      checkCreativeAssetId(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeAssetMetadata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeAssetMetadata();
+      var od = new api.CreativeAssetMetadata.fromJson(o.toJson());
+      checkCreativeAssetMetadata(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeAssetSelection", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeAssetSelection();
+      var od = new api.CreativeAssetSelection.fromJson(o.toJson());
+      checkCreativeAssetSelection(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeAssignment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeAssignment();
+      var od = new api.CreativeAssignment.fromJson(o.toJson());
+      checkCreativeAssignment(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeCustomEvent", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeCustomEvent();
+      var od = new api.CreativeCustomEvent.fromJson(o.toJson());
+      checkCreativeCustomEvent(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeField", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeField();
+      var od = new api.CreativeField.fromJson(o.toJson());
+      checkCreativeField(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeFieldAssignment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeFieldAssignment();
+      var od = new api.CreativeFieldAssignment.fromJson(o.toJson());
+      checkCreativeFieldAssignment(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeFieldValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeFieldValue();
+      var od = new api.CreativeFieldValue.fromJson(o.toJson());
+      checkCreativeFieldValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeFieldValuesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeFieldValuesListResponse();
+      var od = new api.CreativeFieldValuesListResponse.fromJson(o.toJson());
+      checkCreativeFieldValuesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeFieldsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeFieldsListResponse();
+      var od = new api.CreativeFieldsListResponse.fromJson(o.toJson());
+      checkCreativeFieldsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeGroup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeGroup();
+      var od = new api.CreativeGroup.fromJson(o.toJson());
+      checkCreativeGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeGroupAssignment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeGroupAssignment();
+      var od = new api.CreativeGroupAssignment.fromJson(o.toJson());
+      checkCreativeGroupAssignment(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeGroupsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeGroupsListResponse();
+      var od = new api.CreativeGroupsListResponse.fromJson(o.toJson());
+      checkCreativeGroupsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeOptimizationConfiguration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeOptimizationConfiguration();
+      var od = new api.CreativeOptimizationConfiguration.fromJson(o.toJson());
+      checkCreativeOptimizationConfiguration(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeRotation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeRotation();
+      var od = new api.CreativeRotation.fromJson(o.toJson());
+      checkCreativeRotation(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativeSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativeSettings();
+      var od = new api.CreativeSettings.fromJson(o.toJson());
+      checkCreativeSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreativesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreativesListResponse();
+      var od = new api.CreativesListResponse.fromJson(o.toJson());
+      checkCreativesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CrossDimensionReachReportCompatibleFields", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCrossDimensionReachReportCompatibleFields();
+      var od = new api.CrossDimensionReachReportCompatibleFields.fromJson(
+          o.toJson());
+      checkCrossDimensionReachReportCompatibleFields(od);
+    });
+  });
+
+  unittest.group("obj-schema-CustomFloodlightVariable", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCustomFloodlightVariable();
+      var od = new api.CustomFloodlightVariable.fromJson(o.toJson());
+      checkCustomFloodlightVariable(od);
+    });
+  });
+
+  unittest.group("obj-schema-CustomRichMediaEvents", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCustomRichMediaEvents();
+      var od = new api.CustomRichMediaEvents.fromJson(o.toJson());
+      checkCustomRichMediaEvents(od);
+    });
+  });
+
+  unittest.group("obj-schema-DateRange", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDateRange();
+      var od = new api.DateRange.fromJson(o.toJson());
+      checkDateRange(od);
+    });
+  });
+
+  unittest.group("obj-schema-DayPartTargeting", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDayPartTargeting();
+      var od = new api.DayPartTargeting.fromJson(o.toJson());
+      checkDayPartTargeting(od);
+    });
+  });
+
+  unittest.group("obj-schema-DefaultClickThroughEventTagProperties", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDefaultClickThroughEventTagProperties();
+      var od =
+          new api.DefaultClickThroughEventTagProperties.fromJson(o.toJson());
+      checkDefaultClickThroughEventTagProperties(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeliverySchedule", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeliverySchedule();
+      var od = new api.DeliverySchedule.fromJson(o.toJson());
+      checkDeliverySchedule(od);
+    });
+  });
+
+  unittest.group("obj-schema-DfpSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDfpSettings();
+      var od = new api.DfpSettings.fromJson(o.toJson());
+      checkDfpSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-Dimension", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDimension();
+      var od = new api.Dimension.fromJson(o.toJson());
+      checkDimension(od);
+    });
+  });
+
+  unittest.group("obj-schema-DimensionFilter", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDimensionFilter();
+      var od = new api.DimensionFilter.fromJson(o.toJson());
+      checkDimensionFilter(od);
+    });
+  });
+
+  unittest.group("obj-schema-DimensionValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDimensionValue();
+      var od = new api.DimensionValue.fromJson(o.toJson());
+      checkDimensionValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-DimensionValueList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDimensionValueList();
+      var od = new api.DimensionValueList.fromJson(o.toJson());
+      checkDimensionValueList(od);
+    });
+  });
+
+  unittest.group("obj-schema-DimensionValueRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDimensionValueRequest();
+      var od = new api.DimensionValueRequest.fromJson(o.toJson());
+      checkDimensionValueRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DirectorySite", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDirectorySite();
+      var od = new api.DirectorySite.fromJson(o.toJson());
+      checkDirectorySite(od);
+    });
+  });
+
+  unittest.group("obj-schema-DirectorySiteContact", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDirectorySiteContact();
+      var od = new api.DirectorySiteContact.fromJson(o.toJson());
+      checkDirectorySiteContact(od);
+    });
+  });
+
+  unittest.group("obj-schema-DirectorySiteContactAssignment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDirectorySiteContactAssignment();
+      var od = new api.DirectorySiteContactAssignment.fromJson(o.toJson());
+      checkDirectorySiteContactAssignment(od);
+    });
+  });
+
+  unittest.group("obj-schema-DirectorySiteContactsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDirectorySiteContactsListResponse();
+      var od = new api.DirectorySiteContactsListResponse.fromJson(o.toJson());
+      checkDirectorySiteContactsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-DirectorySiteSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDirectorySiteSettings();
+      var od = new api.DirectorySiteSettings.fromJson(o.toJson());
+      checkDirectorySiteSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-DirectorySitesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDirectorySitesListResponse();
+      var od = new api.DirectorySitesListResponse.fromJson(o.toJson());
+      checkDirectorySitesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-DynamicTargetingKey", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDynamicTargetingKey();
+      var od = new api.DynamicTargetingKey.fromJson(o.toJson());
+      checkDynamicTargetingKey(od);
+    });
+  });
+
+  unittest.group("obj-schema-DynamicTargetingKeysListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDynamicTargetingKeysListResponse();
+      var od = new api.DynamicTargetingKeysListResponse.fromJson(o.toJson());
+      checkDynamicTargetingKeysListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-EncryptionInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEncryptionInfo();
+      var od = new api.EncryptionInfo.fromJson(o.toJson());
+      checkEncryptionInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventTag", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventTag();
+      var od = new api.EventTag.fromJson(o.toJson());
+      checkEventTag(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventTagOverride", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventTagOverride();
+      var od = new api.EventTagOverride.fromJson(o.toJson());
+      checkEventTagOverride(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventTagsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventTagsListResponse();
+      var od = new api.EventTagsListResponse.fromJson(o.toJson());
+      checkEventTagsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-FileUrls", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFileUrls();
+      var od = new api.FileUrls.fromJson(o.toJson());
+      checkFileUrls(od);
+    });
+  });
+
+  unittest.group("obj-schema-File", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFile();
+      var od = new api.File.fromJson(o.toJson());
+      checkFile(od);
+    });
+  });
+
+  unittest.group("obj-schema-FileList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFileList();
+      var od = new api.FileList.fromJson(o.toJson());
+      checkFileList(od);
+    });
+  });
+
+  unittest.group("obj-schema-Flight", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFlight();
+      var od = new api.Flight.fromJson(o.toJson());
+      checkFlight(od);
+    });
+  });
+
+  unittest.group("obj-schema-FloodlightActivitiesGenerateTagResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFloodlightActivitiesGenerateTagResponse();
+      var od =
+          new api.FloodlightActivitiesGenerateTagResponse.fromJson(o.toJson());
+      checkFloodlightActivitiesGenerateTagResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-FloodlightActivitiesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFloodlightActivitiesListResponse();
+      var od = new api.FloodlightActivitiesListResponse.fromJson(o.toJson());
+      checkFloodlightActivitiesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-FloodlightActivity", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFloodlightActivity();
+      var od = new api.FloodlightActivity.fromJson(o.toJson());
+      checkFloodlightActivity(od);
+    });
+  });
+
+  unittest.group("obj-schema-FloodlightActivityDynamicTag", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFloodlightActivityDynamicTag();
+      var od = new api.FloodlightActivityDynamicTag.fromJson(o.toJson());
+      checkFloodlightActivityDynamicTag(od);
+    });
+  });
+
+  unittest.group("obj-schema-FloodlightActivityGroup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFloodlightActivityGroup();
+      var od = new api.FloodlightActivityGroup.fromJson(o.toJson());
+      checkFloodlightActivityGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-FloodlightActivityGroupsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFloodlightActivityGroupsListResponse();
+      var od =
+          new api.FloodlightActivityGroupsListResponse.fromJson(o.toJson());
+      checkFloodlightActivityGroupsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-FloodlightActivityPublisherDynamicTag", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFloodlightActivityPublisherDynamicTag();
+      var od =
+          new api.FloodlightActivityPublisherDynamicTag.fromJson(o.toJson());
+      checkFloodlightActivityPublisherDynamicTag(od);
+    });
+  });
+
+  unittest.group("obj-schema-FloodlightConfiguration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFloodlightConfiguration();
+      var od = new api.FloodlightConfiguration.fromJson(o.toJson());
+      checkFloodlightConfiguration(od);
+    });
+  });
+
+  unittest.group("obj-schema-FloodlightConfigurationsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFloodlightConfigurationsListResponse();
+      var od =
+          new api.FloodlightConfigurationsListResponse.fromJson(o.toJson());
+      checkFloodlightConfigurationsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-FloodlightReportCompatibleFields", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFloodlightReportCompatibleFields();
+      var od = new api.FloodlightReportCompatibleFields.fromJson(o.toJson());
+      checkFloodlightReportCompatibleFields(od);
+    });
+  });
+
+  unittest.group("obj-schema-FrequencyCap", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFrequencyCap();
+      var od = new api.FrequencyCap.fromJson(o.toJson());
+      checkFrequencyCap(od);
+    });
+  });
+
+  unittest.group("obj-schema-FsCommand", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFsCommand();
+      var od = new api.FsCommand.fromJson(o.toJson());
+      checkFsCommand(od);
+    });
+  });
+
+  unittest.group("obj-schema-GeoTargeting", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGeoTargeting();
+      var od = new api.GeoTargeting.fromJson(o.toJson());
+      checkGeoTargeting(od);
+    });
+  });
+
+  unittest.group("obj-schema-InventoryItem", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInventoryItem();
+      var od = new api.InventoryItem.fromJson(o.toJson());
+      checkInventoryItem(od);
+    });
+  });
+
+  unittest.group("obj-schema-InventoryItemsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInventoryItemsListResponse();
+      var od = new api.InventoryItemsListResponse.fromJson(o.toJson());
+      checkInventoryItemsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-KeyValueTargetingExpression", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildKeyValueTargetingExpression();
+      var od = new api.KeyValueTargetingExpression.fromJson(o.toJson());
+      checkKeyValueTargetingExpression(od);
+    });
+  });
+
+  unittest.group("obj-schema-LandingPage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLandingPage();
+      var od = new api.LandingPage.fromJson(o.toJson());
+      checkLandingPage(od);
+    });
+  });
+
+  unittest.group("obj-schema-LandingPagesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLandingPagesListResponse();
+      var od = new api.LandingPagesListResponse.fromJson(o.toJson());
+      checkLandingPagesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Language", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLanguage();
+      var od = new api.Language.fromJson(o.toJson());
+      checkLanguage(od);
+    });
+  });
+
+  unittest.group("obj-schema-LanguageTargeting", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLanguageTargeting();
+      var od = new api.LanguageTargeting.fromJson(o.toJson());
+      checkLanguageTargeting(od);
+    });
+  });
+
+  unittest.group("obj-schema-LanguagesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLanguagesListResponse();
+      var od = new api.LanguagesListResponse.fromJson(o.toJson());
+      checkLanguagesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-LastModifiedInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLastModifiedInfo();
+      var od = new api.LastModifiedInfo.fromJson(o.toJson());
+      checkLastModifiedInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListPopulationClause", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListPopulationClause();
+      var od = new api.ListPopulationClause.fromJson(o.toJson());
+      checkListPopulationClause(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListPopulationRule", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListPopulationRule();
+      var od = new api.ListPopulationRule.fromJson(o.toJson());
+      checkListPopulationRule(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListPopulationTerm", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListPopulationTerm();
+      var od = new api.ListPopulationTerm.fromJson(o.toJson());
+      checkListPopulationTerm(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListTargetingExpression", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListTargetingExpression();
+      var od = new api.ListTargetingExpression.fromJson(o.toJson());
+      checkListTargetingExpression(od);
+    });
+  });
+
+  unittest.group("obj-schema-LookbackConfiguration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLookbackConfiguration();
+      var od = new api.LookbackConfiguration.fromJson(o.toJson());
+      checkLookbackConfiguration(od);
+    });
+  });
+
+  unittest.group("obj-schema-Metric", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMetric();
+      var od = new api.Metric.fromJson(o.toJson());
+      checkMetric(od);
+    });
+  });
+
+  unittest.group("obj-schema-Metro", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMetro();
+      var od = new api.Metro.fromJson(o.toJson());
+      checkMetro(od);
+    });
+  });
+
+  unittest.group("obj-schema-MetrosListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMetrosListResponse();
+      var od = new api.MetrosListResponse.fromJson(o.toJson());
+      checkMetrosListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-MobileCarrier", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMobileCarrier();
+      var od = new api.MobileCarrier.fromJson(o.toJson());
+      checkMobileCarrier(od);
+    });
+  });
+
+  unittest.group("obj-schema-MobileCarriersListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMobileCarriersListResponse();
+      var od = new api.MobileCarriersListResponse.fromJson(o.toJson());
+      checkMobileCarriersListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ObjectFilter", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildObjectFilter();
+      var od = new api.ObjectFilter.fromJson(o.toJson());
+      checkObjectFilter(od);
+    });
+  });
+
+  unittest.group("obj-schema-OffsetPosition", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOffsetPosition();
+      var od = new api.OffsetPosition.fromJson(o.toJson());
+      checkOffsetPosition(od);
+    });
+  });
+
+  unittest.group("obj-schema-OmnitureSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOmnitureSettings();
+      var od = new api.OmnitureSettings.fromJson(o.toJson());
+      checkOmnitureSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-OperatingSystem", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOperatingSystem();
+      var od = new api.OperatingSystem.fromJson(o.toJson());
+      checkOperatingSystem(od);
+    });
+  });
+
+  unittest.group("obj-schema-OperatingSystemVersion", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOperatingSystemVersion();
+      var od = new api.OperatingSystemVersion.fromJson(o.toJson());
+      checkOperatingSystemVersion(od);
+    });
+  });
+
+  unittest.group("obj-schema-OperatingSystemVersionsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOperatingSystemVersionsListResponse();
+      var od = new api.OperatingSystemVersionsListResponse.fromJson(o.toJson());
+      checkOperatingSystemVersionsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OperatingSystemsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOperatingSystemsListResponse();
+      var od = new api.OperatingSystemsListResponse.fromJson(o.toJson());
+      checkOperatingSystemsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OptimizationActivity", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOptimizationActivity();
+      var od = new api.OptimizationActivity.fromJson(o.toJson());
+      checkOptimizationActivity(od);
+    });
+  });
+
+  unittest.group("obj-schema-Order", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrder();
+      var od = new api.Order.fromJson(o.toJson());
+      checkOrder(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderContact", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderContact();
+      var od = new api.OrderContact.fromJson(o.toJson());
+      checkOrderContact(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderDocument", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderDocument();
+      var od = new api.OrderDocument.fromJson(o.toJson());
+      checkOrderDocument(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrderDocumentsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrderDocumentsListResponse();
+      var od = new api.OrderDocumentsListResponse.fromJson(o.toJson());
+      checkOrderDocumentsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrdersListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrdersListResponse();
+      var od = new api.OrdersListResponse.fromJson(o.toJson());
+      checkOrdersListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-PathToConversionReportCompatibleFields", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPathToConversionReportCompatibleFields();
+      var od =
+          new api.PathToConversionReportCompatibleFields.fromJson(o.toJson());
+      checkPathToConversionReportCompatibleFields(od);
+    });
+  });
+
+  unittest.group("obj-schema-Placement", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlacement();
+      var od = new api.Placement.fromJson(o.toJson());
+      checkPlacement(od);
+    });
+  });
+
+  unittest.group("obj-schema-PlacementAssignment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlacementAssignment();
+      var od = new api.PlacementAssignment.fromJson(o.toJson());
+      checkPlacementAssignment(od);
+    });
+  });
+
+  unittest.group("obj-schema-PlacementGroup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlacementGroup();
+      var od = new api.PlacementGroup.fromJson(o.toJson());
+      checkPlacementGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-PlacementGroupsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlacementGroupsListResponse();
+      var od = new api.PlacementGroupsListResponse.fromJson(o.toJson());
+      checkPlacementGroupsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-PlacementStrategiesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlacementStrategiesListResponse();
+      var od = new api.PlacementStrategiesListResponse.fromJson(o.toJson());
+      checkPlacementStrategiesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-PlacementStrategy", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlacementStrategy();
+      var od = new api.PlacementStrategy.fromJson(o.toJson());
+      checkPlacementStrategy(od);
+    });
+  });
+
+  unittest.group("obj-schema-PlacementTag", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlacementTag();
+      var od = new api.PlacementTag.fromJson(o.toJson());
+      checkPlacementTag(od);
+    });
+  });
+
+  unittest.group("obj-schema-PlacementsGenerateTagsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlacementsGenerateTagsResponse();
+      var od = new api.PlacementsGenerateTagsResponse.fromJson(o.toJson());
+      checkPlacementsGenerateTagsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-PlacementsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlacementsListResponse();
+      var od = new api.PlacementsListResponse.fromJson(o.toJson());
+      checkPlacementsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-PlatformType", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlatformType();
+      var od = new api.PlatformType.fromJson(o.toJson());
+      checkPlatformType(od);
+    });
+  });
+
+  unittest.group("obj-schema-PlatformTypesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlatformTypesListResponse();
+      var od = new api.PlatformTypesListResponse.fromJson(o.toJson());
+      checkPlatformTypesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-PopupWindowProperties", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPopupWindowProperties();
+      var od = new api.PopupWindowProperties.fromJson(o.toJson());
+      checkPopupWindowProperties(od);
+    });
+  });
+
+  unittest.group("obj-schema-PostalCode", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPostalCode();
+      var od = new api.PostalCode.fromJson(o.toJson());
+      checkPostalCode(od);
+    });
+  });
+
+  unittest.group("obj-schema-PostalCodesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPostalCodesListResponse();
+      var od = new api.PostalCodesListResponse.fromJson(o.toJson());
+      checkPostalCodesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Pricing", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPricing();
+      var od = new api.Pricing.fromJson(o.toJson());
+      checkPricing(od);
+    });
+  });
+
+  unittest.group("obj-schema-PricingSchedule", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPricingSchedule();
+      var od = new api.PricingSchedule.fromJson(o.toJson());
+      checkPricingSchedule(od);
+    });
+  });
+
+  unittest.group("obj-schema-PricingSchedulePricingPeriod", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPricingSchedulePricingPeriod();
+      var od = new api.PricingSchedulePricingPeriod.fromJson(o.toJson());
+      checkPricingSchedulePricingPeriod(od);
+    });
+  });
+
+  unittest.group("obj-schema-Project", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProject();
+      var od = new api.Project.fromJson(o.toJson());
+      checkProject(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProjectsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProjectsListResponse();
+      var od = new api.ProjectsListResponse.fromJson(o.toJson());
+      checkProjectsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReachReportCompatibleFields", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReachReportCompatibleFields();
+      var od = new api.ReachReportCompatibleFields.fromJson(o.toJson());
+      checkReachReportCompatibleFields(od);
+    });
+  });
+
+  unittest.group("obj-schema-Recipient", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRecipient();
+      var od = new api.Recipient.fromJson(o.toJson());
+      checkRecipient(od);
+    });
+  });
+
+  unittest.group("obj-schema-Region", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRegion();
+      var od = new api.Region.fromJson(o.toJson());
+      checkRegion(od);
+    });
+  });
+
+  unittest.group("obj-schema-RegionsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRegionsListResponse();
+      var od = new api.RegionsListResponse.fromJson(o.toJson());
+      checkRegionsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-RemarketingList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRemarketingList();
+      var od = new api.RemarketingList.fromJson(o.toJson());
+      checkRemarketingList(od);
+    });
+  });
+
+  unittest.group("obj-schema-RemarketingListShare", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRemarketingListShare();
+      var od = new api.RemarketingListShare.fromJson(o.toJson());
+      checkRemarketingListShare(od);
+    });
+  });
+
+  unittest.group("obj-schema-RemarketingListsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRemarketingListsListResponse();
+      var od = new api.RemarketingListsListResponse.fromJson(o.toJson());
+      checkRemarketingListsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportCriteria", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportCriteria();
+      var od = new api.ReportCriteria.fromJson(o.toJson());
+      checkReportCriteria(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportCrossDimensionReachCriteria", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportCrossDimensionReachCriteria();
+      var od = new api.ReportCrossDimensionReachCriteria.fromJson(o.toJson());
+      checkReportCrossDimensionReachCriteria(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportDelivery", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportDelivery();
+      var od = new api.ReportDelivery.fromJson(o.toJson());
+      checkReportDelivery(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportFloodlightCriteriaReportProperties", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportFloodlightCriteriaReportProperties();
+      var od =
+          new api.ReportFloodlightCriteriaReportProperties.fromJson(o.toJson());
+      checkReportFloodlightCriteriaReportProperties(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportFloodlightCriteria", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportFloodlightCriteria();
+      var od = new api.ReportFloodlightCriteria.fromJson(o.toJson());
+      checkReportFloodlightCriteria(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportPathToConversionCriteriaReportProperties",
+      () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportPathToConversionCriteriaReportProperties();
+      var od = new api.ReportPathToConversionCriteriaReportProperties.fromJson(
+          o.toJson());
+      checkReportPathToConversionCriteriaReportProperties(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportPathToConversionCriteria", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportPathToConversionCriteria();
+      var od = new api.ReportPathToConversionCriteria.fromJson(o.toJson());
+      checkReportPathToConversionCriteria(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportReachCriteria", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportReachCriteria();
+      var od = new api.ReportReachCriteria.fromJson(o.toJson());
+      checkReportReachCriteria(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportSchedule", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportSchedule();
+      var od = new api.ReportSchedule.fromJson(o.toJson());
+      checkReportSchedule(od);
+    });
+  });
+
+  unittest.group("obj-schema-Report", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReport();
+      var od = new api.Report.fromJson(o.toJson());
+      checkReport(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportCompatibleFields", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportCompatibleFields();
+      var od = new api.ReportCompatibleFields.fromJson(o.toJson());
+      checkReportCompatibleFields(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportList();
+      var od = new api.ReportList.fromJson(o.toJson());
+      checkReportList(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportsConfiguration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportsConfiguration();
+      var od = new api.ReportsConfiguration.fromJson(o.toJson());
+      checkReportsConfiguration(od);
+    });
+  });
+
+  unittest.group("obj-schema-RichMediaExitOverride", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRichMediaExitOverride();
+      var od = new api.RichMediaExitOverride.fromJson(o.toJson());
+      checkRichMediaExitOverride(od);
+    });
+  });
+
+  unittest.group("obj-schema-Rule", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRule();
+      var od = new api.Rule.fromJson(o.toJson());
+      checkRule(od);
+    });
+  });
+
+  unittest.group("obj-schema-Site", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSite();
+      var od = new api.Site.fromJson(o.toJson());
+      checkSite(od);
+    });
+  });
+
+  unittest.group("obj-schema-SiteContact", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSiteContact();
+      var od = new api.SiteContact.fromJson(o.toJson());
+      checkSiteContact(od);
+    });
+  });
+
+  unittest.group("obj-schema-SiteSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSiteSettings();
+      var od = new api.SiteSettings.fromJson(o.toJson());
+      checkSiteSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-SitesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSitesListResponse();
+      var od = new api.SitesListResponse.fromJson(o.toJson());
+      checkSitesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Size", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSize();
+      var od = new api.Size.fromJson(o.toJson());
+      checkSize(od);
+    });
+  });
+
+  unittest.group("obj-schema-SizesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSizesListResponse();
+      var od = new api.SizesListResponse.fromJson(o.toJson());
+      checkSizesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-SkippableSetting", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSkippableSetting();
+      var od = new api.SkippableSetting.fromJson(o.toJson());
+      checkSkippableSetting(od);
+    });
+  });
+
+  unittest.group("obj-schema-SortedDimension", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSortedDimension();
+      var od = new api.SortedDimension.fromJson(o.toJson());
+      checkSortedDimension(od);
+    });
+  });
+
+  unittest.group("obj-schema-Subaccount", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSubaccount();
+      var od = new api.Subaccount.fromJson(o.toJson());
+      checkSubaccount(od);
+    });
+  });
+
+  unittest.group("obj-schema-SubaccountsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSubaccountsListResponse();
+      var od = new api.SubaccountsListResponse.fromJson(o.toJson());
+      checkSubaccountsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-TagData", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTagData();
+      var od = new api.TagData.fromJson(o.toJson());
+      checkTagData(od);
+    });
+  });
+
+  unittest.group("obj-schema-TagSetting", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTagSetting();
+      var od = new api.TagSetting.fromJson(o.toJson());
+      checkTagSetting(od);
+    });
+  });
+
+  unittest.group("obj-schema-TagSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTagSettings();
+      var od = new api.TagSettings.fromJson(o.toJson());
+      checkTagSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-TargetWindow", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTargetWindow();
+      var od = new api.TargetWindow.fromJson(o.toJson());
+      checkTargetWindow(od);
+    });
+  });
+
+  unittest.group("obj-schema-TargetableRemarketingList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTargetableRemarketingList();
+      var od = new api.TargetableRemarketingList.fromJson(o.toJson());
+      checkTargetableRemarketingList(od);
+    });
+  });
+
+  unittest.group("obj-schema-TargetableRemarketingListsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTargetableRemarketingListsListResponse();
+      var od =
+          new api.TargetableRemarketingListsListResponse.fromJson(o.toJson());
+      checkTargetableRemarketingListsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-TargetingTemplate", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTargetingTemplate();
+      var od = new api.TargetingTemplate.fromJson(o.toJson());
+      checkTargetingTemplate(od);
+    });
+  });
+
+  unittest.group("obj-schema-TargetingTemplatesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTargetingTemplatesListResponse();
+      var od = new api.TargetingTemplatesListResponse.fromJson(o.toJson());
+      checkTargetingTemplatesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-TechnologyTargeting", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTechnologyTargeting();
+      var od = new api.TechnologyTargeting.fromJson(o.toJson());
+      checkTechnologyTargeting(od);
+    });
+  });
+
+  unittest.group("obj-schema-ThirdPartyAuthenticationToken", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildThirdPartyAuthenticationToken();
+      var od = new api.ThirdPartyAuthenticationToken.fromJson(o.toJson());
+      checkThirdPartyAuthenticationToken(od);
+    });
+  });
+
+  unittest.group("obj-schema-ThirdPartyTrackingUrl", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildThirdPartyTrackingUrl();
+      var od = new api.ThirdPartyTrackingUrl.fromJson(o.toJson());
+      checkThirdPartyTrackingUrl(od);
+    });
+  });
+
+  unittest.group("obj-schema-TranscodeSetting", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTranscodeSetting();
+      var od = new api.TranscodeSetting.fromJson(o.toJson());
+      checkTranscodeSetting(od);
+    });
+  });
+
+  unittest.group("obj-schema-UniversalAdId", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUniversalAdId();
+      var od = new api.UniversalAdId.fromJson(o.toJson());
+      checkUniversalAdId(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserDefinedVariableConfiguration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserDefinedVariableConfiguration();
+      var od = new api.UserDefinedVariableConfiguration.fromJson(o.toJson());
+      checkUserDefinedVariableConfiguration(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserProfile", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserProfile();
+      var od = new api.UserProfile.fromJson(o.toJson());
+      checkUserProfile(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserProfileList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserProfileList();
+      var od = new api.UserProfileList.fromJson(o.toJson());
+      checkUserProfileList(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserRole", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserRole();
+      var od = new api.UserRole.fromJson(o.toJson());
+      checkUserRole(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserRolePermission", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserRolePermission();
+      var od = new api.UserRolePermission.fromJson(o.toJson());
+      checkUserRolePermission(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserRolePermissionGroup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserRolePermissionGroup();
+      var od = new api.UserRolePermissionGroup.fromJson(o.toJson());
+      checkUserRolePermissionGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserRolePermissionGroupsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserRolePermissionGroupsListResponse();
+      var od =
+          new api.UserRolePermissionGroupsListResponse.fromJson(o.toJson());
+      checkUserRolePermissionGroupsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserRolePermissionsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserRolePermissionsListResponse();
+      var od = new api.UserRolePermissionsListResponse.fromJson(o.toJson());
+      checkUserRolePermissionsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserRolesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserRolesListResponse();
+      var od = new api.UserRolesListResponse.fromJson(o.toJson());
+      checkUserRolesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-VideoFormat", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVideoFormat();
+      var od = new api.VideoFormat.fromJson(o.toJson());
+      checkVideoFormat(od);
+    });
+  });
+
+  unittest.group("obj-schema-VideoFormatsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVideoFormatsListResponse();
+      var od = new api.VideoFormatsListResponse.fromJson(o.toJson());
+      checkVideoFormatsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-VideoOffset", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVideoOffset();
+      var od = new api.VideoOffset.fromJson(o.toJson());
+      checkVideoOffset(od);
+    });
+  });
+
+  unittest.group("obj-schema-VideoSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVideoSettings();
+      var od = new api.VideoSettings.fromJson(o.toJson());
+      checkVideoSettings(od);
+    });
+  });
+
+  unittest.group("resource-AccountActiveAdSummariesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountActiveAdSummariesResourceApi res =
+          new api.DfareportingApi(mock).accountActiveAdSummaries;
+      var arg_profileId = "foo";
+      var arg_summaryAccountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/accountActiveAdSummaries/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 26),
+            unittest.equals("/accountActiveAdSummaries/"));
+        pathOffset += 26;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_summaryAccountId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountActiveAdSummary());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_summaryAccountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountActiveAdSummary response) {
+        checkAccountActiveAdSummary(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountPermissionGroupsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountPermissionGroupsResourceApi res =
+          new api.DfareportingApi(mock).accountPermissionGroups;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/accountPermissionGroups/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 25),
+            unittest.equals("/accountPermissionGroups/"));
+        pathOffset += 25;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountPermissionGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountPermissionGroup response) {
+        checkAccountPermissionGroup(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountPermissionGroupsResourceApi res =
+          new api.DfareportingApi(mock).accountPermissionGroups;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/accountPermissionGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 24),
+            unittest.equals("/accountPermissionGroups"));
+        pathOffset += 24;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildAccountPermissionGroupsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.list(arg_profileId, $fields: arg_$fields).then(unittest
+          .expectAsync1(((api.AccountPermissionGroupsListResponse response) {
+        checkAccountPermissionGroupsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountPermissionsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountPermissionsResourceApi res =
+          new api.DfareportingApi(mock).accountPermissions;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/accountPermissions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/accountPermissions/"));
+        pathOffset += 20;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountPermission());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountPermission response) {
+        checkAccountPermission(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountPermissionsResourceApi res =
+          new api.DfareportingApi(mock).accountPermissions;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/accountPermissions", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("/accountPermissions"));
+        pathOffset += 19;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountPermissionsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.list(arg_profileId, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.AccountPermissionsListResponse response) {
+        checkAccountPermissionsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountUserProfilesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountUserProfilesResourceApi res =
+          new api.DfareportingApi(mock).accountUserProfiles;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/accountUserProfiles/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/accountUserProfiles/"));
+        pathOffset += 21;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountUserProfile());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountUserProfile response) {
+        checkAccountUserProfile(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.AccountUserProfilesResourceApi res =
+          new api.DfareportingApi(mock).accountUserProfiles;
+      var arg_request = buildAccountUserProfile();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AccountUserProfile.fromJson(json);
+        checkAccountUserProfile(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/accountUserProfiles", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/accountUserProfiles"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountUserProfile());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountUserProfile response) {
+        checkAccountUserProfile(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountUserProfilesResourceApi res =
+          new api.DfareportingApi(mock).accountUserProfiles;
+      var arg_profileId = "foo";
+      var arg_active = true;
+      var arg_ids = buildUnnamed3120();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_subaccountId = "foo";
+      var arg_userRoleId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/accountUserProfiles", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/accountUserProfiles"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["active"].first, unittest.equals("$arg_active"));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(
+            queryMap["subaccountId"].first, unittest.equals(arg_subaccountId));
+        unittest.expect(
+            queryMap["userRoleId"].first, unittest.equals(arg_userRoleId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountUserProfilesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              active: arg_active,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              subaccountId: arg_subaccountId,
+              userRoleId: arg_userRoleId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.AccountUserProfilesListResponse response) {
+        checkAccountUserProfilesListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.AccountUserProfilesResourceApi res =
+          new api.DfareportingApi(mock).accountUserProfiles;
+      var arg_request = buildAccountUserProfile();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AccountUserProfile.fromJson(json);
+        checkAccountUserProfile(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/accountUserProfiles", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/accountUserProfiles"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountUserProfile());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountUserProfile response) {
+        checkAccountUserProfile(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountUserProfilesResourceApi res =
+          new api.DfareportingApi(mock).accountUserProfiles;
+      var arg_request = buildAccountUserProfile();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AccountUserProfile.fromJson(json);
+        checkAccountUserProfile(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/accountUserProfiles", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/accountUserProfiles"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountUserProfile());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountUserProfile response) {
+        checkAccountUserProfile(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.DfareportingApi(mock).accounts;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/accounts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/accounts/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.DfareportingApi(mock).accounts;
+      var arg_profileId = "foo";
+      var arg_active = true;
+      var arg_ids = buildUnnamed3121();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/accounts", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/accounts"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["active"].first, unittest.equals("$arg_active"));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccountsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              active: arg_active,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AccountsListResponse response) {
+        checkAccountsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.DfareportingApi(mock).accounts;
+      var arg_request = buildAccount();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Account.fromJson(json);
+        checkAccount(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/accounts", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/accounts"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.DfareportingApi(mock).accounts;
+      var arg_request = buildAccount();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Account.fromJson(json);
+        checkAccount(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/accounts", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/accounts"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AdsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AdsResourceApi res = new api.DfareportingApi(mock).ads;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/ads/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/ads/"));
+        pathOffset += 5;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAd());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Ad response) {
+        checkAd(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.AdsResourceApi res = new api.DfareportingApi(mock).ads;
+      var arg_request = buildAd();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Ad.fromJson(json);
+        checkAd(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/ads", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 4),
+            unittest.equals("/ads"));
+        pathOffset += 4;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAd());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Ad response) {
+        checkAd(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AdsResourceApi res = new api.DfareportingApi(mock).ads;
+      var arg_profileId = "foo";
+      var arg_active = true;
+      var arg_advertiserId = "foo";
+      var arg_archived = true;
+      var arg_audienceSegmentIds = buildUnnamed3122();
+      var arg_campaignIds = buildUnnamed3123();
+      var arg_compatibility = "foo";
+      var arg_creativeIds = buildUnnamed3124();
+      var arg_creativeOptimizationConfigurationIds = buildUnnamed3125();
+      var arg_dynamicClickTracker = true;
+      var arg_ids = buildUnnamed3126();
+      var arg_landingPageIds = buildUnnamed3127();
+      var arg_maxResults = 42;
+      var arg_overriddenEventTagId = "foo";
+      var arg_pageToken = "foo";
+      var arg_placementIds = buildUnnamed3128();
+      var arg_remarketingListIds = buildUnnamed3129();
+      var arg_searchString = "foo";
+      var arg_sizeIds = buildUnnamed3130();
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_sslCompliant = true;
+      var arg_sslRequired = true;
+      var arg_type = buildUnnamed3131();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/ads", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 4),
+            unittest.equals("/ads"));
+        pathOffset += 4;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["active"].first, unittest.equals("$arg_active"));
+        unittest.expect(
+            queryMap["advertiserId"].first, unittest.equals(arg_advertiserId));
+        unittest.expect(
+            queryMap["archived"].first, unittest.equals("$arg_archived"));
+        unittest.expect(queryMap["audienceSegmentIds"],
+            unittest.equals(arg_audienceSegmentIds));
+        unittest.expect(
+            queryMap["campaignIds"], unittest.equals(arg_campaignIds));
+        unittest.expect(queryMap["compatibility"].first,
+            unittest.equals(arg_compatibility));
+        unittest.expect(
+            queryMap["creativeIds"], unittest.equals(arg_creativeIds));
+        unittest.expect(queryMap["creativeOptimizationConfigurationIds"],
+            unittest.equals(arg_creativeOptimizationConfigurationIds));
+        unittest.expect(queryMap["dynamicClickTracker"].first,
+            unittest.equals("$arg_dynamicClickTracker"));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(
+            queryMap["landingPageIds"], unittest.equals(arg_landingPageIds));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["overriddenEventTagId"].first,
+            unittest.equals(arg_overriddenEventTagId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["placementIds"], unittest.equals(arg_placementIds));
+        unittest.expect(queryMap["remarketingListIds"],
+            unittest.equals(arg_remarketingListIds));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(queryMap["sizeIds"], unittest.equals(arg_sizeIds));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["sslCompliant"].first,
+            unittest.equals("$arg_sslCompliant"));
+        unittest.expect(
+            queryMap["sslRequired"].first, unittest.equals("$arg_sslRequired"));
+        unittest.expect(queryMap["type"], unittest.equals(arg_type));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              active: arg_active,
+              advertiserId: arg_advertiserId,
+              archived: arg_archived,
+              audienceSegmentIds: arg_audienceSegmentIds,
+              campaignIds: arg_campaignIds,
+              compatibility: arg_compatibility,
+              creativeIds: arg_creativeIds,
+              creativeOptimizationConfigurationIds:
+                  arg_creativeOptimizationConfigurationIds,
+              dynamicClickTracker: arg_dynamicClickTracker,
+              ids: arg_ids,
+              landingPageIds: arg_landingPageIds,
+              maxResults: arg_maxResults,
+              overriddenEventTagId: arg_overriddenEventTagId,
+              pageToken: arg_pageToken,
+              placementIds: arg_placementIds,
+              remarketingListIds: arg_remarketingListIds,
+              searchString: arg_searchString,
+              sizeIds: arg_sizeIds,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              sslCompliant: arg_sslCompliant,
+              sslRequired: arg_sslRequired,
+              type: arg_type,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdsListResponse response) {
+        checkAdsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.AdsResourceApi res = new api.DfareportingApi(mock).ads;
+      var arg_request = buildAd();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Ad.fromJson(json);
+        checkAd(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/ads", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 4),
+            unittest.equals("/ads"));
+        pathOffset += 4;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAd());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Ad response) {
+        checkAd(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AdsResourceApi res = new api.DfareportingApi(mock).ads;
+      var arg_request = buildAd();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Ad.fromJson(json);
+        checkAd(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/ads", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 4),
+            unittest.equals("/ads"));
+        pathOffset += 4;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAd());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Ad response) {
+        checkAd(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AdvertiserGroupsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AdvertiserGroupsResourceApi res =
+          new api.DfareportingApi(mock).advertiserGroups;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/advertiserGroups/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("/advertiserGroups/"));
+        pathOffset += 18;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AdvertiserGroupsResourceApi res =
+          new api.DfareportingApi(mock).advertiserGroups;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/advertiserGroups/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("/advertiserGroups/"));
+        pathOffset += 18;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdvertiserGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdvertiserGroup response) {
+        checkAdvertiserGroup(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.AdvertiserGroupsResourceApi res =
+          new api.DfareportingApi(mock).advertiserGroups;
+      var arg_request = buildAdvertiserGroup();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AdvertiserGroup.fromJson(json);
+        checkAdvertiserGroup(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/advertiserGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("/advertiserGroups"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdvertiserGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdvertiserGroup response) {
+        checkAdvertiserGroup(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AdvertiserGroupsResourceApi res =
+          new api.DfareportingApi(mock).advertiserGroups;
+      var arg_profileId = "foo";
+      var arg_ids = buildUnnamed3132();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/advertiserGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("/advertiserGroups"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdvertiserGroupsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.AdvertiserGroupsListResponse response) {
+        checkAdvertiserGroupsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.AdvertiserGroupsResourceApi res =
+          new api.DfareportingApi(mock).advertiserGroups;
+      var arg_request = buildAdvertiserGroup();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AdvertiserGroup.fromJson(json);
+        checkAdvertiserGroup(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/advertiserGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("/advertiserGroups"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdvertiserGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdvertiserGroup response) {
+        checkAdvertiserGroup(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AdvertiserGroupsResourceApi res =
+          new api.DfareportingApi(mock).advertiserGroups;
+      var arg_request = buildAdvertiserGroup();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AdvertiserGroup.fromJson(json);
+        checkAdvertiserGroup(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/advertiserGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("/advertiserGroups"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdvertiserGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdvertiserGroup response) {
+        checkAdvertiserGroup(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AdvertisersResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AdvertisersResourceApi res =
+          new api.DfareportingApi(mock).advertisers;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/advertisers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/advertisers/"));
+        pathOffset += 13;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdvertiser());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Advertiser response) {
+        checkAdvertiser(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.AdvertisersResourceApi res =
+          new api.DfareportingApi(mock).advertisers;
+      var arg_request = buildAdvertiser();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Advertiser.fromJson(json);
+        checkAdvertiser(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/advertisers", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/advertisers"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdvertiser());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Advertiser response) {
+        checkAdvertiser(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AdvertisersResourceApi res =
+          new api.DfareportingApi(mock).advertisers;
+      var arg_profileId = "foo";
+      var arg_advertiserGroupIds = buildUnnamed3133();
+      var arg_floodlightConfigurationIds = buildUnnamed3134();
+      var arg_ids = buildUnnamed3135();
+      var arg_includeAdvertisersWithoutGroupsOnly = true;
+      var arg_maxResults = 42;
+      var arg_onlyParent = true;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_status = "foo";
+      var arg_subaccountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/advertisers", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/advertisers"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["advertiserGroupIds"],
+            unittest.equals(arg_advertiserGroupIds));
+        unittest.expect(queryMap["floodlightConfigurationIds"],
+            unittest.equals(arg_floodlightConfigurationIds));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(queryMap["includeAdvertisersWithoutGroupsOnly"].first,
+            unittest.equals("$arg_includeAdvertisersWithoutGroupsOnly"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["onlyParent"].first, unittest.equals("$arg_onlyParent"));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["status"].first, unittest.equals(arg_status));
+        unittest.expect(
+            queryMap["subaccountId"].first, unittest.equals(arg_subaccountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdvertisersListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              advertiserGroupIds: arg_advertiserGroupIds,
+              floodlightConfigurationIds: arg_floodlightConfigurationIds,
+              ids: arg_ids,
+              includeAdvertisersWithoutGroupsOnly:
+                  arg_includeAdvertisersWithoutGroupsOnly,
+              maxResults: arg_maxResults,
+              onlyParent: arg_onlyParent,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              status: arg_status,
+              subaccountId: arg_subaccountId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AdvertisersListResponse response) {
+        checkAdvertisersListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.AdvertisersResourceApi res =
+          new api.DfareportingApi(mock).advertisers;
+      var arg_request = buildAdvertiser();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Advertiser.fromJson(json);
+        checkAdvertiser(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/advertisers", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/advertisers"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdvertiser());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Advertiser response) {
+        checkAdvertiser(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AdvertisersResourceApi res =
+          new api.DfareportingApi(mock).advertisers;
+      var arg_request = buildAdvertiser();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Advertiser.fromJson(json);
+        checkAdvertiser(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/advertisers", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/advertisers"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAdvertiser());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Advertiser response) {
+        checkAdvertiser(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BrowsersResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BrowsersResourceApi res = new api.DfareportingApi(mock).browsers;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/browsers", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/browsers"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBrowsersListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BrowsersListResponse response) {
+        checkBrowsersListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CampaignCreativeAssociationsResourceApi", () {
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.CampaignCreativeAssociationsResourceApi res =
+          new api.DfareportingApi(mock).campaignCreativeAssociations;
+      var arg_request = buildCampaignCreativeAssociation();
+      var arg_profileId = "foo";
+      var arg_campaignId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CampaignCreativeAssociation.fromJson(json);
+        checkCampaignCreativeAssociation(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/campaigns/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/campaigns/"));
+        pathOffset += 11;
+        index = path.indexOf("/campaignCreativeAssociations", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_campaignId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 29),
+            unittest.equals("/campaignCreativeAssociations"));
+        pathOffset += 29;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCampaignCreativeAssociation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, arg_campaignId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.CampaignCreativeAssociation response) {
+        checkCampaignCreativeAssociation(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CampaignCreativeAssociationsResourceApi res =
+          new api.DfareportingApi(mock).campaignCreativeAssociations;
+      var arg_profileId = "foo";
+      var arg_campaignId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/campaigns/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/campaigns/"));
+        pathOffset += 11;
+        index = path.indexOf("/campaignCreativeAssociations", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_campaignId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 29),
+            unittest.equals("/campaignCreativeAssociations"));
+        pathOffset += 29;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON
+            .encode(buildCampaignCreativeAssociationsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, arg_campaignId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.CampaignCreativeAssociationsListResponse response) {
+        checkCampaignCreativeAssociationsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CampaignsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CampaignsResourceApi res = new api.DfareportingApi(mock).campaigns;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/campaigns/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/campaigns/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCampaign());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Campaign response) {
+        checkCampaign(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.CampaignsResourceApi res = new api.DfareportingApi(mock).campaigns;
+      var arg_request = buildCampaign();
+      var arg_profileId = "foo";
+      var arg_defaultLandingPageName = "foo";
+      var arg_defaultLandingPageUrl = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Campaign.fromJson(json);
+        checkCampaign(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/campaigns", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/campaigns"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["defaultLandingPageName"].first,
+            unittest.equals(arg_defaultLandingPageName));
+        unittest.expect(queryMap["defaultLandingPageUrl"].first,
+            unittest.equals(arg_defaultLandingPageUrl));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCampaign());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, arg_defaultLandingPageName,
+              arg_defaultLandingPageUrl,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Campaign response) {
+        checkCampaign(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CampaignsResourceApi res = new api.DfareportingApi(mock).campaigns;
+      var arg_profileId = "foo";
+      var arg_advertiserGroupIds = buildUnnamed3136();
+      var arg_advertiserIds = buildUnnamed3137();
+      var arg_archived = true;
+      var arg_atLeastOneOptimizationActivity = true;
+      var arg_excludedIds = buildUnnamed3138();
+      var arg_ids = buildUnnamed3139();
+      var arg_maxResults = 42;
+      var arg_overriddenEventTagId = "foo";
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_subaccountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/campaigns", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/campaigns"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["advertiserGroupIds"],
+            unittest.equals(arg_advertiserGroupIds));
+        unittest.expect(
+            queryMap["advertiserIds"], unittest.equals(arg_advertiserIds));
+        unittest.expect(
+            queryMap["archived"].first, unittest.equals("$arg_archived"));
+        unittest.expect(queryMap["atLeastOneOptimizationActivity"].first,
+            unittest.equals("$arg_atLeastOneOptimizationActivity"));
+        unittest.expect(
+            queryMap["excludedIds"], unittest.equals(arg_excludedIds));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["overriddenEventTagId"].first,
+            unittest.equals(arg_overriddenEventTagId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(
+            queryMap["subaccountId"].first, unittest.equals(arg_subaccountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCampaignsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              advertiserGroupIds: arg_advertiserGroupIds,
+              advertiserIds: arg_advertiserIds,
+              archived: arg_archived,
+              atLeastOneOptimizationActivity:
+                  arg_atLeastOneOptimizationActivity,
+              excludedIds: arg_excludedIds,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              overriddenEventTagId: arg_overriddenEventTagId,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              subaccountId: arg_subaccountId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CampaignsListResponse response) {
+        checkCampaignsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.CampaignsResourceApi res = new api.DfareportingApi(mock).campaigns;
+      var arg_request = buildCampaign();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Campaign.fromJson(json);
+        checkCampaign(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/campaigns", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/campaigns"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCampaign());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Campaign response) {
+        checkCampaign(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.CampaignsResourceApi res = new api.DfareportingApi(mock).campaigns;
+      var arg_request = buildCampaign();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Campaign.fromJson(json);
+        checkCampaign(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/campaigns", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/campaigns"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCampaign());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Campaign response) {
+        checkCampaign(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ChangeLogsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ChangeLogsResourceApi res = new api.DfareportingApi(mock).changeLogs;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/changeLogs/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/changeLogs/"));
+        pathOffset += 12;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildChangeLog());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ChangeLog response) {
+        checkChangeLog(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ChangeLogsResourceApi res = new api.DfareportingApi(mock).changeLogs;
+      var arg_profileId = "foo";
+      var arg_action = "foo";
+      var arg_ids = buildUnnamed3140();
+      var arg_maxChangeTime = "foo";
+      var arg_maxResults = 42;
+      var arg_minChangeTime = "foo";
+      var arg_objectIds = buildUnnamed3141();
+      var arg_objectType = "foo";
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_userProfileIds = buildUnnamed3142();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/changeLogs", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/changeLogs"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["action"].first, unittest.equals(arg_action));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(queryMap["maxChangeTime"].first,
+            unittest.equals(arg_maxChangeTime));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["minChangeTime"].first,
+            unittest.equals(arg_minChangeTime));
+        unittest.expect(queryMap["objectIds"], unittest.equals(arg_objectIds));
+        unittest.expect(
+            queryMap["objectType"].first, unittest.equals(arg_objectType));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["userProfileIds"], unittest.equals(arg_userProfileIds));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildChangeLogsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              action: arg_action,
+              ids: arg_ids,
+              maxChangeTime: arg_maxChangeTime,
+              maxResults: arg_maxResults,
+              minChangeTime: arg_minChangeTime,
+              objectIds: arg_objectIds,
+              objectType: arg_objectType,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              userProfileIds: arg_userProfileIds,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ChangeLogsListResponse response) {
+        checkChangeLogsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CitiesResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CitiesResourceApi res = new api.DfareportingApi(mock).cities;
+      var arg_profileId = "foo";
+      var arg_countryDartIds = buildUnnamed3143();
+      var arg_dartIds = buildUnnamed3144();
+      var arg_namePrefix = "foo";
+      var arg_regionDartIds = buildUnnamed3145();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/cities", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/cities"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["countryDartIds"], unittest.equals(arg_countryDartIds));
+        unittest.expect(queryMap["dartIds"], unittest.equals(arg_dartIds));
+        unittest.expect(
+            queryMap["namePrefix"].first, unittest.equals(arg_namePrefix));
+        unittest.expect(
+            queryMap["regionDartIds"], unittest.equals(arg_regionDartIds));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCitiesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              countryDartIds: arg_countryDartIds,
+              dartIds: arg_dartIds,
+              namePrefix: arg_namePrefix,
+              regionDartIds: arg_regionDartIds,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CitiesListResponse response) {
+        checkCitiesListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ConnectionTypesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ConnectionTypesResourceApi res =
+          new api.DfareportingApi(mock).connectionTypes;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/connectionTypes/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("/connectionTypes/"));
+        pathOffset += 17;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildConnectionType());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ConnectionType response) {
+        checkConnectionType(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ConnectionTypesResourceApi res =
+          new api.DfareportingApi(mock).connectionTypes;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/connectionTypes", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/connectionTypes"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildConnectionTypesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.list(arg_profileId, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.ConnectionTypesListResponse response) {
+        checkConnectionTypesListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ContentCategoriesResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ContentCategoriesResourceApi res =
+          new api.DfareportingApi(mock).contentCategories;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/contentCategories/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("/contentCategories/"));
+        pathOffset += 19;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ContentCategoriesResourceApi res =
+          new api.DfareportingApi(mock).contentCategories;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/contentCategories/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("/contentCategories/"));
+        pathOffset += 19;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContentCategory());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContentCategory response) {
+        checkContentCategory(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.ContentCategoriesResourceApi res =
+          new api.DfareportingApi(mock).contentCategories;
+      var arg_request = buildContentCategory();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ContentCategory.fromJson(json);
+        checkContentCategory(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/contentCategories", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("/contentCategories"));
+        pathOffset += 18;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContentCategory());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContentCategory response) {
+        checkContentCategory(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ContentCategoriesResourceApi res =
+          new api.DfareportingApi(mock).contentCategories;
+      var arg_profileId = "foo";
+      var arg_ids = buildUnnamed3146();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/contentCategories", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("/contentCategories"));
+        pathOffset += 18;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContentCategoriesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ContentCategoriesListResponse response) {
+        checkContentCategoriesListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ContentCategoriesResourceApi res =
+          new api.DfareportingApi(mock).contentCategories;
+      var arg_request = buildContentCategory();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ContentCategory.fromJson(json);
+        checkContentCategory(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/contentCategories", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("/contentCategories"));
+        pathOffset += 18;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContentCategory());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContentCategory response) {
+        checkContentCategory(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.ContentCategoriesResourceApi res =
+          new api.DfareportingApi(mock).contentCategories;
+      var arg_request = buildContentCategory();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ContentCategory.fromJson(json);
+        checkContentCategory(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/contentCategories", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("/contentCategories"));
+        pathOffset += 18;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContentCategory());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContentCategory response) {
+        checkContentCategory(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ConversionsResourceApi", () {
+    unittest.test("method--batchinsert", () {
+      var mock = new HttpServerMock();
+      api.ConversionsResourceApi res =
+          new api.DfareportingApi(mock).conversions;
+      var arg_request = buildConversionsBatchInsertRequest();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ConversionsBatchInsertRequest.fromJson(json);
+        checkConversionsBatchInsertRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/conversions/batchinsert", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 24),
+            unittest.equals("/conversions/batchinsert"));
+        pathOffset += 24;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildConversionsBatchInsertResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.batchinsert(arg_request, arg_profileId, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.ConversionsBatchInsertResponse response) {
+        checkConversionsBatchInsertResponse(response);
+      })));
+    });
+
+    unittest.test("method--batchupdate", () {
+      var mock = new HttpServerMock();
+      api.ConversionsResourceApi res =
+          new api.DfareportingApi(mock).conversions;
+      var arg_request = buildConversionsBatchUpdateRequest();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ConversionsBatchUpdateRequest.fromJson(json);
+        checkConversionsBatchUpdateRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/conversions/batchupdate", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 24),
+            unittest.equals("/conversions/batchupdate"));
+        pathOffset += 24;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildConversionsBatchUpdateResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.batchupdate(arg_request, arg_profileId, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.ConversionsBatchUpdateResponse response) {
+        checkConversionsBatchUpdateResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CountriesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CountriesResourceApi res = new api.DfareportingApi(mock).countries;
+      var arg_profileId = "foo";
+      var arg_dartId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/countries/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/countries/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_dartId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCountry());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_dartId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Country response) {
+        checkCountry(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CountriesResourceApi res = new api.DfareportingApi(mock).countries;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/countries", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/countries"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCountriesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CountriesListResponse response) {
+        checkCountriesListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CreativeAssetsResourceApi", () {
+    unittest.test("method--insert", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.CreativeAssetsResourceApi res =
+          new api.DfareportingApi(mock).creativeAssets;
+      var arg_request = buildCreativeAssetMetadata();
+      var arg_profileId = "foo";
+      var arg_advertiserId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreativeAssetMetadata.fromJson(json);
+        checkCreativeAssetMetadata(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeAssets/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/creativeAssets/"));
+        pathOffset += 16;
+        index = path.indexOf("/creativeAssets", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_advertiserId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/creativeAssets"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeAssetMetadata());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, arg_advertiserId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativeAssetMetadata response) {
+        checkCreativeAssetMetadata(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CreativeFieldValuesResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.CreativeFieldValuesResourceApi res =
+          new api.DfareportingApi(mock).creativeFieldValues;
+      var arg_profileId = "foo";
+      var arg_creativeFieldId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeFields/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/creativeFields/"));
+        pathOffset += 16;
+        index = path.indexOf("/creativeFieldValues/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_creativeFieldId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/creativeFieldValues/"));
+        pathOffset += 21;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_profileId, arg_creativeFieldId, arg_id,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CreativeFieldValuesResourceApi res =
+          new api.DfareportingApi(mock).creativeFieldValues;
+      var arg_profileId = "foo";
+      var arg_creativeFieldId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeFields/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/creativeFields/"));
+        pathOffset += 16;
+        index = path.indexOf("/creativeFieldValues/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_creativeFieldId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/creativeFieldValues/"));
+        pathOffset += 21;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeFieldValue());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_creativeFieldId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativeFieldValue response) {
+        checkCreativeFieldValue(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.CreativeFieldValuesResourceApi res =
+          new api.DfareportingApi(mock).creativeFieldValues;
+      var arg_request = buildCreativeFieldValue();
+      var arg_profileId = "foo";
+      var arg_creativeFieldId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreativeFieldValue.fromJson(json);
+        checkCreativeFieldValue(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeFields/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/creativeFields/"));
+        pathOffset += 16;
+        index = path.indexOf("/creativeFieldValues", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_creativeFieldId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/creativeFieldValues"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeFieldValue());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, arg_creativeFieldId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativeFieldValue response) {
+        checkCreativeFieldValue(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CreativeFieldValuesResourceApi res =
+          new api.DfareportingApi(mock).creativeFieldValues;
+      var arg_profileId = "foo";
+      var arg_creativeFieldId = "foo";
+      var arg_ids = buildUnnamed3147();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeFields/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/creativeFields/"));
+        pathOffset += 16;
+        index = path.indexOf("/creativeFieldValues", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_creativeFieldId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/creativeFieldValues"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeFieldValuesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, arg_creativeFieldId,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.CreativeFieldValuesListResponse response) {
+        checkCreativeFieldValuesListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.CreativeFieldValuesResourceApi res =
+          new api.DfareportingApi(mock).creativeFieldValues;
+      var arg_request = buildCreativeFieldValue();
+      var arg_profileId = "foo";
+      var arg_creativeFieldId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreativeFieldValue.fromJson(json);
+        checkCreativeFieldValue(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeFields/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/creativeFields/"));
+        pathOffset += 16;
+        index = path.indexOf("/creativeFieldValues", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_creativeFieldId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/creativeFieldValues"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeFieldValue());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_creativeFieldId, arg_id,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativeFieldValue response) {
+        checkCreativeFieldValue(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.CreativeFieldValuesResourceApi res =
+          new api.DfareportingApi(mock).creativeFieldValues;
+      var arg_request = buildCreativeFieldValue();
+      var arg_profileId = "foo";
+      var arg_creativeFieldId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreativeFieldValue.fromJson(json);
+        checkCreativeFieldValue(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeFields/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/creativeFields/"));
+        pathOffset += 16;
+        index = path.indexOf("/creativeFieldValues", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_creativeFieldId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/creativeFieldValues"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeFieldValue());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, arg_creativeFieldId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativeFieldValue response) {
+        checkCreativeFieldValue(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CreativeFieldsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.CreativeFieldsResourceApi res =
+          new api.DfareportingApi(mock).creativeFields;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeFields/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/creativeFields/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CreativeFieldsResourceApi res =
+          new api.DfareportingApi(mock).creativeFields;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeFields/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/creativeFields/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeField());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativeField response) {
+        checkCreativeField(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.CreativeFieldsResourceApi res =
+          new api.DfareportingApi(mock).creativeFields;
+      var arg_request = buildCreativeField();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreativeField.fromJson(json);
+        checkCreativeField(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeFields", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/creativeFields"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeField());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativeField response) {
+        checkCreativeField(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CreativeFieldsResourceApi res =
+          new api.DfareportingApi(mock).creativeFields;
+      var arg_profileId = "foo";
+      var arg_advertiserIds = buildUnnamed3148();
+      var arg_ids = buildUnnamed3149();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeFields", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/creativeFields"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["advertiserIds"], unittest.equals(arg_advertiserIds));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeFieldsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              advertiserIds: arg_advertiserIds,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.CreativeFieldsListResponse response) {
+        checkCreativeFieldsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.CreativeFieldsResourceApi res =
+          new api.DfareportingApi(mock).creativeFields;
+      var arg_request = buildCreativeField();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreativeField.fromJson(json);
+        checkCreativeField(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeFields", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/creativeFields"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeField());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativeField response) {
+        checkCreativeField(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.CreativeFieldsResourceApi res =
+          new api.DfareportingApi(mock).creativeFields;
+      var arg_request = buildCreativeField();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreativeField.fromJson(json);
+        checkCreativeField(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeFields", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/creativeFields"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeField());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativeField response) {
+        checkCreativeField(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CreativeGroupsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CreativeGroupsResourceApi res =
+          new api.DfareportingApi(mock).creativeGroups;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeGroups/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/creativeGroups/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativeGroup response) {
+        checkCreativeGroup(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.CreativeGroupsResourceApi res =
+          new api.DfareportingApi(mock).creativeGroups;
+      var arg_request = buildCreativeGroup();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreativeGroup.fromJson(json);
+        checkCreativeGroup(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/creativeGroups"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativeGroup response) {
+        checkCreativeGroup(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CreativeGroupsResourceApi res =
+          new api.DfareportingApi(mock).creativeGroups;
+      var arg_profileId = "foo";
+      var arg_advertiserIds = buildUnnamed3150();
+      var arg_groupNumber = 42;
+      var arg_ids = buildUnnamed3151();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/creativeGroups"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["advertiserIds"], unittest.equals(arg_advertiserIds));
+        unittest.expect(core.int.parse(queryMap["groupNumber"].first),
+            unittest.equals(arg_groupNumber));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeGroupsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              advertiserIds: arg_advertiserIds,
+              groupNumber: arg_groupNumber,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.CreativeGroupsListResponse response) {
+        checkCreativeGroupsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.CreativeGroupsResourceApi res =
+          new api.DfareportingApi(mock).creativeGroups;
+      var arg_request = buildCreativeGroup();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreativeGroup.fromJson(json);
+        checkCreativeGroup(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/creativeGroups"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativeGroup response) {
+        checkCreativeGroup(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.CreativeGroupsResourceApi res =
+          new api.DfareportingApi(mock).creativeGroups;
+      var arg_request = buildCreativeGroup();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreativeGroup.fromJson(json);
+        checkCreativeGroup(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creativeGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/creativeGroups"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativeGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativeGroup response) {
+        checkCreativeGroup(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CreativesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CreativesResourceApi res = new api.DfareportingApi(mock).creatives;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creatives/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/creatives/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreative());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Creative response) {
+        checkCreative(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.CreativesResourceApi res = new api.DfareportingApi(mock).creatives;
+      var arg_request = buildCreative();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Creative.fromJson(json);
+        checkCreative(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creatives", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/creatives"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreative());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Creative response) {
+        checkCreative(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CreativesResourceApi res = new api.DfareportingApi(mock).creatives;
+      var arg_profileId = "foo";
+      var arg_active = true;
+      var arg_advertiserId = "foo";
+      var arg_archived = true;
+      var arg_campaignId = "foo";
+      var arg_companionCreativeIds = buildUnnamed3152();
+      var arg_creativeFieldIds = buildUnnamed3153();
+      var arg_ids = buildUnnamed3154();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_renderingIds = buildUnnamed3155();
+      var arg_searchString = "foo";
+      var arg_sizeIds = buildUnnamed3156();
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_studioCreativeId = "foo";
+      var arg_types = buildUnnamed3157();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creatives", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/creatives"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["active"].first, unittest.equals("$arg_active"));
+        unittest.expect(
+            queryMap["advertiserId"].first, unittest.equals(arg_advertiserId));
+        unittest.expect(
+            queryMap["archived"].first, unittest.equals("$arg_archived"));
+        unittest.expect(
+            queryMap["campaignId"].first, unittest.equals(arg_campaignId));
+        unittest.expect(queryMap["companionCreativeIds"],
+            unittest.equals(arg_companionCreativeIds));
+        unittest.expect(queryMap["creativeFieldIds"],
+            unittest.equals(arg_creativeFieldIds));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["renderingIds"], unittest.equals(arg_renderingIds));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(queryMap["sizeIds"], unittest.equals(arg_sizeIds));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["studioCreativeId"].first,
+            unittest.equals(arg_studioCreativeId));
+        unittest.expect(queryMap["types"], unittest.equals(arg_types));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreativesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              active: arg_active,
+              advertiserId: arg_advertiserId,
+              archived: arg_archived,
+              campaignId: arg_campaignId,
+              companionCreativeIds: arg_companionCreativeIds,
+              creativeFieldIds: arg_creativeFieldIds,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              renderingIds: arg_renderingIds,
+              searchString: arg_searchString,
+              sizeIds: arg_sizeIds,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              studioCreativeId: arg_studioCreativeId,
+              types: arg_types,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreativesListResponse response) {
+        checkCreativesListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.CreativesResourceApi res = new api.DfareportingApi(mock).creatives;
+      var arg_request = buildCreative();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Creative.fromJson(json);
+        checkCreative(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creatives", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/creatives"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreative());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Creative response) {
+        checkCreative(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.CreativesResourceApi res = new api.DfareportingApi(mock).creatives;
+      var arg_request = buildCreative();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Creative.fromJson(json);
+        checkCreative(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/creatives", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/creatives"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreative());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Creative response) {
+        checkCreative(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-DimensionValuesResourceApi", () {
+    unittest.test("method--query", () {
+      var mock = new HttpServerMock();
+      api.DimensionValuesResourceApi res =
+          new api.DfareportingApi(mock).dimensionValues;
+      var arg_request = buildDimensionValueRequest();
+      var arg_profileId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.DimensionValueRequest.fromJson(json);
+        checkDimensionValueRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/dimensionvalues/query", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("/dimensionvalues/query"));
+        pathOffset += 22;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDimensionValueList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .query(arg_request, arg_profileId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DimensionValueList response) {
+        checkDimensionValueList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-DirectorySiteContactsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.DirectorySiteContactsResourceApi res =
+          new api.DfareportingApi(mock).directorySiteContacts;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/directorySiteContacts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 23),
+            unittest.equals("/directorySiteContacts/"));
+        pathOffset += 23;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDirectorySiteContact());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DirectorySiteContact response) {
+        checkDirectorySiteContact(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.DirectorySiteContactsResourceApi res =
+          new api.DfareportingApi(mock).directorySiteContacts;
+      var arg_profileId = "foo";
+      var arg_directorySiteIds = buildUnnamed3158();
+      var arg_ids = buildUnnamed3159();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/directorySiteContacts", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("/directorySiteContacts"));
+        pathOffset += 22;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["directorySiteIds"],
+            unittest.equals(arg_directorySiteIds));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildDirectorySiteContactsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              directorySiteIds: arg_directorySiteIds,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.DirectorySiteContactsListResponse response) {
+        checkDirectorySiteContactsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-DirectorySitesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.DirectorySitesResourceApi res =
+          new api.DfareportingApi(mock).directorySites;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/directorySites/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/directorySites/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDirectorySite());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DirectorySite response) {
+        checkDirectorySite(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.DirectorySitesResourceApi res =
+          new api.DfareportingApi(mock).directorySites;
+      var arg_request = buildDirectorySite();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.DirectorySite.fromJson(json);
+        checkDirectorySite(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/directorySites", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/directorySites"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDirectorySite());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DirectorySite response) {
+        checkDirectorySite(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.DirectorySitesResourceApi res =
+          new api.DfareportingApi(mock).directorySites;
+      var arg_profileId = "foo";
+      var arg_acceptsInStreamVideoPlacements = true;
+      var arg_acceptsInterstitialPlacements = true;
+      var arg_acceptsPublisherPaidPlacements = true;
+      var arg_active = true;
+      var arg_countryId = "foo";
+      var arg_dfpNetworkCode = "foo";
+      var arg_ids = buildUnnamed3160();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_parentId = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/directorySites", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/directorySites"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["acceptsInStreamVideoPlacements"].first,
+            unittest.equals("$arg_acceptsInStreamVideoPlacements"));
+        unittest.expect(queryMap["acceptsInterstitialPlacements"].first,
+            unittest.equals("$arg_acceptsInterstitialPlacements"));
+        unittest.expect(queryMap["acceptsPublisherPaidPlacements"].first,
+            unittest.equals("$arg_acceptsPublisherPaidPlacements"));
+        unittest.expect(
+            queryMap["active"].first, unittest.equals("$arg_active"));
+        unittest.expect(
+            queryMap["countryId"].first, unittest.equals(arg_countryId));
+        unittest.expect(queryMap["dfpNetworkCode"].first,
+            unittest.equals(arg_dfpNetworkCode));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["parentId"].first, unittest.equals(arg_parentId));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDirectorySitesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              acceptsInStreamVideoPlacements:
+                  arg_acceptsInStreamVideoPlacements,
+              acceptsInterstitialPlacements: arg_acceptsInterstitialPlacements,
+              acceptsPublisherPaidPlacements:
+                  arg_acceptsPublisherPaidPlacements,
+              active: arg_active,
+              countryId: arg_countryId,
+              dfpNetworkCode: arg_dfpNetworkCode,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              parentId: arg_parentId,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.DirectorySitesListResponse response) {
+        checkDirectorySitesListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-DynamicTargetingKeysResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.DynamicTargetingKeysResourceApi res =
+          new api.DfareportingApi(mock).dynamicTargetingKeys;
+      var arg_profileId = "foo";
+      var arg_objectId = "foo";
+      var arg_name = "foo";
+      var arg_objectType = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/dynamicTargetingKeys/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("/dynamicTargetingKeys/"));
+        pathOffset += 22;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_objectId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["name"].first, unittest.equals(arg_name));
+        unittest.expect(
+            queryMap["objectType"].first, unittest.equals(arg_objectType));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_profileId, arg_objectId, arg_name, arg_objectType,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.DynamicTargetingKeysResourceApi res =
+          new api.DfareportingApi(mock).dynamicTargetingKeys;
+      var arg_request = buildDynamicTargetingKey();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.DynamicTargetingKey.fromJson(json);
+        checkDynamicTargetingKey(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/dynamicTargetingKeys", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/dynamicTargetingKeys"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDynamicTargetingKey());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DynamicTargetingKey response) {
+        checkDynamicTargetingKey(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.DynamicTargetingKeysResourceApi res =
+          new api.DfareportingApi(mock).dynamicTargetingKeys;
+      var arg_profileId = "foo";
+      var arg_advertiserId = "foo";
+      var arg_names = buildUnnamed3161();
+      var arg_objectId = "foo";
+      var arg_objectType = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/dynamicTargetingKeys", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/dynamicTargetingKeys"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["advertiserId"].first, unittest.equals(arg_advertiserId));
+        unittest.expect(queryMap["names"], unittest.equals(arg_names));
+        unittest.expect(
+            queryMap["objectId"].first, unittest.equals(arg_objectId));
+        unittest.expect(
+            queryMap["objectType"].first, unittest.equals(arg_objectType));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDynamicTargetingKeysListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              advertiserId: arg_advertiserId,
+              names: arg_names,
+              objectId: arg_objectId,
+              objectType: arg_objectType,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.DynamicTargetingKeysListResponse response) {
+        checkDynamicTargetingKeysListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-EventTagsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.EventTagsResourceApi res = new api.DfareportingApi(mock).eventTags;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/eventTags/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/eventTags/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.EventTagsResourceApi res = new api.DfareportingApi(mock).eventTags;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/eventTags/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/eventTags/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEventTag());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.EventTag response) {
+        checkEventTag(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.EventTagsResourceApi res = new api.DfareportingApi(mock).eventTags;
+      var arg_request = buildEventTag();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.EventTag.fromJson(json);
+        checkEventTag(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/eventTags", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/eventTags"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEventTag());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.EventTag response) {
+        checkEventTag(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.EventTagsResourceApi res = new api.DfareportingApi(mock).eventTags;
+      var arg_profileId = "foo";
+      var arg_adId = "foo";
+      var arg_advertiserId = "foo";
+      var arg_campaignId = "foo";
+      var arg_definitionsOnly = true;
+      var arg_enabled = true;
+      var arg_eventTagTypes = buildUnnamed3162();
+      var arg_ids = buildUnnamed3163();
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/eventTags", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/eventTags"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["adId"].first, unittest.equals(arg_adId));
+        unittest.expect(
+            queryMap["advertiserId"].first, unittest.equals(arg_advertiserId));
+        unittest.expect(
+            queryMap["campaignId"].first, unittest.equals(arg_campaignId));
+        unittest.expect(queryMap["definitionsOnly"].first,
+            unittest.equals("$arg_definitionsOnly"));
+        unittest.expect(
+            queryMap["enabled"].first, unittest.equals("$arg_enabled"));
+        unittest.expect(
+            queryMap["eventTagTypes"], unittest.equals(arg_eventTagTypes));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEventTagsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              adId: arg_adId,
+              advertiserId: arg_advertiserId,
+              campaignId: arg_campaignId,
+              definitionsOnly: arg_definitionsOnly,
+              enabled: arg_enabled,
+              eventTagTypes: arg_eventTagTypes,
+              ids: arg_ids,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.EventTagsListResponse response) {
+        checkEventTagsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.EventTagsResourceApi res = new api.DfareportingApi(mock).eventTags;
+      var arg_request = buildEventTag();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.EventTag.fromJson(json);
+        checkEventTag(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/eventTags", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/eventTags"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEventTag());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.EventTag response) {
+        checkEventTag(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.EventTagsResourceApi res = new api.DfareportingApi(mock).eventTags;
+      var arg_request = buildEventTag();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.EventTag.fromJson(json);
+        checkEventTag(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/eventTags", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/eventTags"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEventTag());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.EventTag response) {
+        checkEventTag(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-FilesResourceApi", () {
+    unittest.test("method--get", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.FilesResourceApi res = new api.DfareportingApi(mock).files;
+      var arg_reportId = "foo";
+      var arg_fileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("reports/"));
+        pathOffset += 8;
+        index = path.indexOf("/files/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_reportId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/files/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_fileId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFile());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_reportId, arg_fileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.File response) {
+        checkFile(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.FilesResourceApi res = new api.DfareportingApi(mock).files;
+      var arg_profileId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_scope = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/files", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/files"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["scope"].first, unittest.equals(arg_scope));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFileList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              scope: arg_scope,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FileList response) {
+        checkFileList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-FloodlightActivitiesResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.FloodlightActivitiesResourceApi res =
+          new api.DfareportingApi(mock).floodlightActivities;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightActivities/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("/floodlightActivities/"));
+        pathOffset += 22;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--generatetag", () {
+      var mock = new HttpServerMock();
+      api.FloodlightActivitiesResourceApi res =
+          new api.DfareportingApi(mock).floodlightActivities;
+      var arg_profileId = "foo";
+      var arg_floodlightActivityId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightActivities/generatetag", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 33),
+            unittest.equals("/floodlightActivities/generatetag"));
+        pathOffset += 33;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["floodlightActivityId"].first,
+            unittest.equals(arg_floodlightActivityId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildFloodlightActivitiesGenerateTagResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .generatetag(arg_profileId,
+              floodlightActivityId: arg_floodlightActivityId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.FloodlightActivitiesGenerateTagResponse response) {
+        checkFloodlightActivitiesGenerateTagResponse(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.FloodlightActivitiesResourceApi res =
+          new api.DfareportingApi(mock).floodlightActivities;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightActivities/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("/floodlightActivities/"));
+        pathOffset += 22;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFloodlightActivity());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FloodlightActivity response) {
+        checkFloodlightActivity(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.FloodlightActivitiesResourceApi res =
+          new api.DfareportingApi(mock).floodlightActivities;
+      var arg_request = buildFloodlightActivity();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.FloodlightActivity.fromJson(json);
+        checkFloodlightActivity(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightActivities", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/floodlightActivities"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFloodlightActivity());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FloodlightActivity response) {
+        checkFloodlightActivity(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.FloodlightActivitiesResourceApi res =
+          new api.DfareportingApi(mock).floodlightActivities;
+      var arg_profileId = "foo";
+      var arg_advertiserId = "foo";
+      var arg_floodlightActivityGroupIds = buildUnnamed3164();
+      var arg_floodlightActivityGroupName = "foo";
+      var arg_floodlightActivityGroupTagString = "foo";
+      var arg_floodlightActivityGroupType = "foo";
+      var arg_floodlightConfigurationId = "foo";
+      var arg_ids = buildUnnamed3165();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_tagString = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightActivities", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/floodlightActivities"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["advertiserId"].first, unittest.equals(arg_advertiserId));
+        unittest.expect(queryMap["floodlightActivityGroupIds"],
+            unittest.equals(arg_floodlightActivityGroupIds));
+        unittest.expect(queryMap["floodlightActivityGroupName"].first,
+            unittest.equals(arg_floodlightActivityGroupName));
+        unittest.expect(queryMap["floodlightActivityGroupTagString"].first,
+            unittest.equals(arg_floodlightActivityGroupTagString));
+        unittest.expect(queryMap["floodlightActivityGroupType"].first,
+            unittest.equals(arg_floodlightActivityGroupType));
+        unittest.expect(queryMap["floodlightConfigurationId"].first,
+            unittest.equals(arg_floodlightConfigurationId));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(
+            queryMap["tagString"].first, unittest.equals(arg_tagString));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFloodlightActivitiesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              advertiserId: arg_advertiserId,
+              floodlightActivityGroupIds: arg_floodlightActivityGroupIds,
+              floodlightActivityGroupName: arg_floodlightActivityGroupName,
+              floodlightActivityGroupTagString:
+                  arg_floodlightActivityGroupTagString,
+              floodlightActivityGroupType: arg_floodlightActivityGroupType,
+              floodlightConfigurationId: arg_floodlightConfigurationId,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              tagString: arg_tagString,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.FloodlightActivitiesListResponse response) {
+        checkFloodlightActivitiesListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.FloodlightActivitiesResourceApi res =
+          new api.DfareportingApi(mock).floodlightActivities;
+      var arg_request = buildFloodlightActivity();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.FloodlightActivity.fromJson(json);
+        checkFloodlightActivity(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightActivities", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/floodlightActivities"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFloodlightActivity());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FloodlightActivity response) {
+        checkFloodlightActivity(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.FloodlightActivitiesResourceApi res =
+          new api.DfareportingApi(mock).floodlightActivities;
+      var arg_request = buildFloodlightActivity();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.FloodlightActivity.fromJson(json);
+        checkFloodlightActivity(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightActivities", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/floodlightActivities"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFloodlightActivity());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FloodlightActivity response) {
+        checkFloodlightActivity(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-FloodlightActivityGroupsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.FloodlightActivityGroupsResourceApi res =
+          new api.DfareportingApi(mock).floodlightActivityGroups;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightActivityGroups/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 26),
+            unittest.equals("/floodlightActivityGroups/"));
+        pathOffset += 26;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFloodlightActivityGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FloodlightActivityGroup response) {
+        checkFloodlightActivityGroup(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.FloodlightActivityGroupsResourceApi res =
+          new api.DfareportingApi(mock).floodlightActivityGroups;
+      var arg_request = buildFloodlightActivityGroup();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.FloodlightActivityGroup.fromJson(json);
+        checkFloodlightActivityGroup(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightActivityGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 25),
+            unittest.equals("/floodlightActivityGroups"));
+        pathOffset += 25;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFloodlightActivityGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FloodlightActivityGroup response) {
+        checkFloodlightActivityGroup(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.FloodlightActivityGroupsResourceApi res =
+          new api.DfareportingApi(mock).floodlightActivityGroups;
+      var arg_profileId = "foo";
+      var arg_advertiserId = "foo";
+      var arg_floodlightConfigurationId = "foo";
+      var arg_ids = buildUnnamed3166();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_type = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightActivityGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 25),
+            unittest.equals("/floodlightActivityGroups"));
+        pathOffset += 25;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["advertiserId"].first, unittest.equals(arg_advertiserId));
+        unittest.expect(queryMap["floodlightConfigurationId"].first,
+            unittest.equals(arg_floodlightConfigurationId));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["type"].first, unittest.equals(arg_type));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildFloodlightActivityGroupsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              advertiserId: arg_advertiserId,
+              floodlightConfigurationId: arg_floodlightConfigurationId,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              type: arg_type,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.FloodlightActivityGroupsListResponse response) {
+        checkFloodlightActivityGroupsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.FloodlightActivityGroupsResourceApi res =
+          new api.DfareportingApi(mock).floodlightActivityGroups;
+      var arg_request = buildFloodlightActivityGroup();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.FloodlightActivityGroup.fromJson(json);
+        checkFloodlightActivityGroup(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightActivityGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 25),
+            unittest.equals("/floodlightActivityGroups"));
+        pathOffset += 25;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFloodlightActivityGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FloodlightActivityGroup response) {
+        checkFloodlightActivityGroup(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.FloodlightActivityGroupsResourceApi res =
+          new api.DfareportingApi(mock).floodlightActivityGroups;
+      var arg_request = buildFloodlightActivityGroup();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.FloodlightActivityGroup.fromJson(json);
+        checkFloodlightActivityGroup(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightActivityGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 25),
+            unittest.equals("/floodlightActivityGroups"));
+        pathOffset += 25;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFloodlightActivityGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FloodlightActivityGroup response) {
+        checkFloodlightActivityGroup(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-FloodlightConfigurationsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.FloodlightConfigurationsResourceApi res =
+          new api.DfareportingApi(mock).floodlightConfigurations;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightConfigurations/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 26),
+            unittest.equals("/floodlightConfigurations/"));
+        pathOffset += 26;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFloodlightConfiguration());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FloodlightConfiguration response) {
+        checkFloodlightConfiguration(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.FloodlightConfigurationsResourceApi res =
+          new api.DfareportingApi(mock).floodlightConfigurations;
+      var arg_profileId = "foo";
+      var arg_ids = buildUnnamed3167();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightConfigurations", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 25),
+            unittest.equals("/floodlightConfigurations"));
+        pathOffset += 25;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildFloodlightConfigurationsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.list(arg_profileId, ids: arg_ids, $fields: arg_$fields).then(unittest
+          .expectAsync1(((api.FloodlightConfigurationsListResponse response) {
+        checkFloodlightConfigurationsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.FloodlightConfigurationsResourceApi res =
+          new api.DfareportingApi(mock).floodlightConfigurations;
+      var arg_request = buildFloodlightConfiguration();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.FloodlightConfiguration.fromJson(json);
+        checkFloodlightConfiguration(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightConfigurations", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 25),
+            unittest.equals("/floodlightConfigurations"));
+        pathOffset += 25;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFloodlightConfiguration());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FloodlightConfiguration response) {
+        checkFloodlightConfiguration(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.FloodlightConfigurationsResourceApi res =
+          new api.DfareportingApi(mock).floodlightConfigurations;
+      var arg_request = buildFloodlightConfiguration();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.FloodlightConfiguration.fromJson(json);
+        checkFloodlightConfiguration(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/floodlightConfigurations", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 25),
+            unittest.equals("/floodlightConfigurations"));
+        pathOffset += 25;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFloodlightConfiguration());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FloodlightConfiguration response) {
+        checkFloodlightConfiguration(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-InventoryItemsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.InventoryItemsResourceApi res =
+          new api.DfareportingApi(mock).inventoryItems;
+      var arg_profileId = "foo";
+      var arg_projectId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/projects/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/projects/"));
+        pathOffset += 10;
+        index = path.indexOf("/inventoryItems/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/inventoryItems/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildInventoryItem());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_projectId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.InventoryItem response) {
+        checkInventoryItem(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.InventoryItemsResourceApi res =
+          new api.DfareportingApi(mock).inventoryItems;
+      var arg_profileId = "foo";
+      var arg_projectId = "foo";
+      var arg_ids = buildUnnamed3168();
+      var arg_inPlan = true;
+      var arg_maxResults = 42;
+      var arg_orderId = buildUnnamed3169();
+      var arg_pageToken = "foo";
+      var arg_siteId = buildUnnamed3170();
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_type = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/projects/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/projects/"));
+        pathOffset += 10;
+        index = path.indexOf("/inventoryItems", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/inventoryItems"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(
+            queryMap["inPlan"].first, unittest.equals("$arg_inPlan"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["orderId"], unittest.equals(arg_orderId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["siteId"], unittest.equals(arg_siteId));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["type"].first, unittest.equals(arg_type));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildInventoryItemsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, arg_projectId,
+              ids: arg_ids,
+              inPlan: arg_inPlan,
+              maxResults: arg_maxResults,
+              orderId: arg_orderId,
+              pageToken: arg_pageToken,
+              siteId: arg_siteId,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              type: arg_type,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.InventoryItemsListResponse response) {
+        checkInventoryItemsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-LandingPagesResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.LandingPagesResourceApi res =
+          new api.DfareportingApi(mock).landingPages;
+      var arg_profileId = "foo";
+      var arg_campaignId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/campaigns/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/campaigns/"));
+        pathOffset += 11;
+        index = path.indexOf("/landingPages/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_campaignId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/landingPages/"));
+        pathOffset += 14;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_profileId, arg_campaignId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.LandingPagesResourceApi res =
+          new api.DfareportingApi(mock).landingPages;
+      var arg_profileId = "foo";
+      var arg_campaignId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/campaigns/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/campaigns/"));
+        pathOffset += 11;
+        index = path.indexOf("/landingPages/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_campaignId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/landingPages/"));
+        pathOffset += 14;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLandingPage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_campaignId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.LandingPage response) {
+        checkLandingPage(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.LandingPagesResourceApi res =
+          new api.DfareportingApi(mock).landingPages;
+      var arg_request = buildLandingPage();
+      var arg_profileId = "foo";
+      var arg_campaignId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.LandingPage.fromJson(json);
+        checkLandingPage(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/campaigns/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/campaigns/"));
+        pathOffset += 11;
+        index = path.indexOf("/landingPages", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_campaignId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/landingPages"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLandingPage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, arg_campaignId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.LandingPage response) {
+        checkLandingPage(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.LandingPagesResourceApi res =
+          new api.DfareportingApi(mock).landingPages;
+      var arg_profileId = "foo";
+      var arg_campaignId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/campaigns/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/campaigns/"));
+        pathOffset += 11;
+        index = path.indexOf("/landingPages", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_campaignId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/landingPages"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLandingPagesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, arg_campaignId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.LandingPagesListResponse response) {
+        checkLandingPagesListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.LandingPagesResourceApi res =
+          new api.DfareportingApi(mock).landingPages;
+      var arg_request = buildLandingPage();
+      var arg_profileId = "foo";
+      var arg_campaignId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.LandingPage.fromJson(json);
+        checkLandingPage(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/campaigns/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/campaigns/"));
+        pathOffset += 11;
+        index = path.indexOf("/landingPages", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_campaignId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/landingPages"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLandingPage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_campaignId, arg_id,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.LandingPage response) {
+        checkLandingPage(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.LandingPagesResourceApi res =
+          new api.DfareportingApi(mock).landingPages;
+      var arg_request = buildLandingPage();
+      var arg_profileId = "foo";
+      var arg_campaignId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.LandingPage.fromJson(json);
+        checkLandingPage(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/campaigns/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/campaigns/"));
+        pathOffset += 11;
+        index = path.indexOf("/landingPages", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_campaignId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/landingPages"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLandingPage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, arg_campaignId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.LandingPage response) {
+        checkLandingPage(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-LanguagesResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.LanguagesResourceApi res = new api.DfareportingApi(mock).languages;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/languages", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/languages"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLanguagesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.LanguagesListResponse response) {
+        checkLanguagesListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-MetrosResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.MetrosResourceApi res = new api.DfareportingApi(mock).metros;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/metros", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/metros"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMetrosListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.MetrosListResponse response) {
+        checkMetrosListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-MobileCarriersResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.MobileCarriersResourceApi res =
+          new api.DfareportingApi(mock).mobileCarriers;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/mobileCarriers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/mobileCarriers/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMobileCarrier());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.MobileCarrier response) {
+        checkMobileCarrier(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.MobileCarriersResourceApi res =
+          new api.DfareportingApi(mock).mobileCarriers;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/mobileCarriers", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/mobileCarriers"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMobileCarriersListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.list(arg_profileId, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.MobileCarriersListResponse response) {
+        checkMobileCarriersListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-OperatingSystemVersionsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.OperatingSystemVersionsResourceApi res =
+          new api.DfareportingApi(mock).operatingSystemVersions;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/operatingSystemVersions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 25),
+            unittest.equals("/operatingSystemVersions/"));
+        pathOffset += 25;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOperatingSystemVersion());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.OperatingSystemVersion response) {
+        checkOperatingSystemVersion(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.OperatingSystemVersionsResourceApi res =
+          new api.DfareportingApi(mock).operatingSystemVersions;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/operatingSystemVersions", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 24),
+            unittest.equals("/operatingSystemVersions"));
+        pathOffset += 24;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildOperatingSystemVersionsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.list(arg_profileId, $fields: arg_$fields).then(unittest
+          .expectAsync1(((api.OperatingSystemVersionsListResponse response) {
+        checkOperatingSystemVersionsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-OperatingSystemsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.OperatingSystemsResourceApi res =
+          new api.DfareportingApi(mock).operatingSystems;
+      var arg_profileId = "foo";
+      var arg_dartId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/operatingSystems/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("/operatingSystems/"));
+        pathOffset += 18;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_dartId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOperatingSystem());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_dartId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.OperatingSystem response) {
+        checkOperatingSystem(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.OperatingSystemsResourceApi res =
+          new api.DfareportingApi(mock).operatingSystems;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/operatingSystems", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("/operatingSystems"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOperatingSystemsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.list(arg_profileId, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.OperatingSystemsListResponse response) {
+        checkOperatingSystemsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-OrderDocumentsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.OrderDocumentsResourceApi res =
+          new api.DfareportingApi(mock).orderDocuments;
+      var arg_profileId = "foo";
+      var arg_projectId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/projects/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/projects/"));
+        pathOffset += 10;
+        index = path.indexOf("/orderDocuments/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/orderDocuments/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrderDocument());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_projectId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.OrderDocument response) {
+        checkOrderDocument(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.OrderDocumentsResourceApi res =
+          new api.DfareportingApi(mock).orderDocuments;
+      var arg_profileId = "foo";
+      var arg_projectId = "foo";
+      var arg_approved = true;
+      var arg_ids = buildUnnamed3171();
+      var arg_maxResults = 42;
+      var arg_orderId = buildUnnamed3172();
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_siteId = buildUnnamed3173();
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/projects/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/projects/"));
+        pathOffset += 10;
+        index = path.indexOf("/orderDocuments", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/orderDocuments"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["approved"].first, unittest.equals("$arg_approved"));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["orderId"], unittest.equals(arg_orderId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(queryMap["siteId"], unittest.equals(arg_siteId));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrderDocumentsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, arg_projectId,
+              approved: arg_approved,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              orderId: arg_orderId,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              siteId: arg_siteId,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.OrderDocumentsListResponse response) {
+        checkOrderDocumentsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-OrdersResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.DfareportingApi(mock).orders;
+      var arg_profileId = "foo";
+      var arg_projectId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/projects/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/projects/"));
+        pathOffset += 10;
+        index = path.indexOf("/orders/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/orders/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrder());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_projectId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Order response) {
+        checkOrder(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.OrdersResourceApi res = new api.DfareportingApi(mock).orders;
+      var arg_profileId = "foo";
+      var arg_projectId = "foo";
+      var arg_ids = buildUnnamed3174();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_siteId = buildUnnamed3175();
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/projects/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/projects/"));
+        pathOffset += 10;
+        index = path.indexOf("/orders", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/orders"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(queryMap["siteId"], unittest.equals(arg_siteId));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrdersListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, arg_projectId,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              siteId: arg_siteId,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.OrdersListResponse response) {
+        checkOrdersListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PlacementGroupsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PlacementGroupsResourceApi res =
+          new api.DfareportingApi(mock).placementGroups;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placementGroups/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("/placementGroups/"));
+        pathOffset += 17;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacementGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PlacementGroup response) {
+        checkPlacementGroup(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.PlacementGroupsResourceApi res =
+          new api.DfareportingApi(mock).placementGroups;
+      var arg_request = buildPlacementGroup();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PlacementGroup.fromJson(json);
+        checkPlacementGroup(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placementGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/placementGroups"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacementGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PlacementGroup response) {
+        checkPlacementGroup(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PlacementGroupsResourceApi res =
+          new api.DfareportingApi(mock).placementGroups;
+      var arg_profileId = "foo";
+      var arg_advertiserIds = buildUnnamed3176();
+      var arg_archived = true;
+      var arg_campaignIds = buildUnnamed3177();
+      var arg_contentCategoryIds = buildUnnamed3178();
+      var arg_directorySiteIds = buildUnnamed3179();
+      var arg_ids = buildUnnamed3180();
+      var arg_maxEndDate = "foo";
+      var arg_maxResults = 42;
+      var arg_maxStartDate = "foo";
+      var arg_minEndDate = "foo";
+      var arg_minStartDate = "foo";
+      var arg_pageToken = "foo";
+      var arg_placementGroupType = "foo";
+      var arg_placementStrategyIds = buildUnnamed3181();
+      var arg_pricingTypes = buildUnnamed3182();
+      var arg_searchString = "foo";
+      var arg_siteIds = buildUnnamed3183();
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placementGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/placementGroups"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["advertiserIds"], unittest.equals(arg_advertiserIds));
+        unittest.expect(
+            queryMap["archived"].first, unittest.equals("$arg_archived"));
+        unittest.expect(
+            queryMap["campaignIds"], unittest.equals(arg_campaignIds));
+        unittest.expect(queryMap["contentCategoryIds"],
+            unittest.equals(arg_contentCategoryIds));
+        unittest.expect(queryMap["directorySiteIds"],
+            unittest.equals(arg_directorySiteIds));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(
+            queryMap["maxEndDate"].first, unittest.equals(arg_maxEndDate));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["maxStartDate"].first, unittest.equals(arg_maxStartDate));
+        unittest.expect(
+            queryMap["minEndDate"].first, unittest.equals(arg_minEndDate));
+        unittest.expect(
+            queryMap["minStartDate"].first, unittest.equals(arg_minStartDate));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["placementGroupType"].first,
+            unittest.equals(arg_placementGroupType));
+        unittest.expect(queryMap["placementStrategyIds"],
+            unittest.equals(arg_placementStrategyIds));
+        unittest.expect(
+            queryMap["pricingTypes"], unittest.equals(arg_pricingTypes));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(queryMap["siteIds"], unittest.equals(arg_siteIds));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacementGroupsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              advertiserIds: arg_advertiserIds,
+              archived: arg_archived,
+              campaignIds: arg_campaignIds,
+              contentCategoryIds: arg_contentCategoryIds,
+              directorySiteIds: arg_directorySiteIds,
+              ids: arg_ids,
+              maxEndDate: arg_maxEndDate,
+              maxResults: arg_maxResults,
+              maxStartDate: arg_maxStartDate,
+              minEndDate: arg_minEndDate,
+              minStartDate: arg_minStartDate,
+              pageToken: arg_pageToken,
+              placementGroupType: arg_placementGroupType,
+              placementStrategyIds: arg_placementStrategyIds,
+              pricingTypes: arg_pricingTypes,
+              searchString: arg_searchString,
+              siteIds: arg_siteIds,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.PlacementGroupsListResponse response) {
+        checkPlacementGroupsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.PlacementGroupsResourceApi res =
+          new api.DfareportingApi(mock).placementGroups;
+      var arg_request = buildPlacementGroup();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PlacementGroup.fromJson(json);
+        checkPlacementGroup(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placementGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/placementGroups"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacementGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PlacementGroup response) {
+        checkPlacementGroup(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.PlacementGroupsResourceApi res =
+          new api.DfareportingApi(mock).placementGroups;
+      var arg_request = buildPlacementGroup();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PlacementGroup.fromJson(json);
+        checkPlacementGroup(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placementGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/placementGroups"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacementGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PlacementGroup response) {
+        checkPlacementGroup(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PlacementStrategiesResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.PlacementStrategiesResourceApi res =
+          new api.DfareportingApi(mock).placementStrategies;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placementStrategies/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/placementStrategies/"));
+        pathOffset += 21;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PlacementStrategiesResourceApi res =
+          new api.DfareportingApi(mock).placementStrategies;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placementStrategies/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/placementStrategies/"));
+        pathOffset += 21;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacementStrategy());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PlacementStrategy response) {
+        checkPlacementStrategy(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.PlacementStrategiesResourceApi res =
+          new api.DfareportingApi(mock).placementStrategies;
+      var arg_request = buildPlacementStrategy();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PlacementStrategy.fromJson(json);
+        checkPlacementStrategy(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placementStrategies", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/placementStrategies"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacementStrategy());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PlacementStrategy response) {
+        checkPlacementStrategy(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PlacementStrategiesResourceApi res =
+          new api.DfareportingApi(mock).placementStrategies;
+      var arg_profileId = "foo";
+      var arg_ids = buildUnnamed3184();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placementStrategies", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/placementStrategies"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacementStrategiesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.PlacementStrategiesListResponse response) {
+        checkPlacementStrategiesListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.PlacementStrategiesResourceApi res =
+          new api.DfareportingApi(mock).placementStrategies;
+      var arg_request = buildPlacementStrategy();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PlacementStrategy.fromJson(json);
+        checkPlacementStrategy(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placementStrategies", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/placementStrategies"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacementStrategy());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PlacementStrategy response) {
+        checkPlacementStrategy(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.PlacementStrategiesResourceApi res =
+          new api.DfareportingApi(mock).placementStrategies;
+      var arg_request = buildPlacementStrategy();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PlacementStrategy.fromJson(json);
+        checkPlacementStrategy(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placementStrategies", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/placementStrategies"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacementStrategy());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PlacementStrategy response) {
+        checkPlacementStrategy(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PlacementsResourceApi", () {
+    unittest.test("method--generatetags", () {
+      var mock = new HttpServerMock();
+      api.PlacementsResourceApi res = new api.DfareportingApi(mock).placements;
+      var arg_profileId = "foo";
+      var arg_campaignId = "foo";
+      var arg_placementIds = buildUnnamed3185();
+      var arg_tagFormats = buildUnnamed3186();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placements/generatetags", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 24),
+            unittest.equals("/placements/generatetags"));
+        pathOffset += 24;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["campaignId"].first, unittest.equals(arg_campaignId));
+        unittest.expect(
+            queryMap["placementIds"], unittest.equals(arg_placementIds));
+        unittest.expect(
+            queryMap["tagFormats"], unittest.equals(arg_tagFormats));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacementsGenerateTagsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .generatetags(arg_profileId,
+              campaignId: arg_campaignId,
+              placementIds: arg_placementIds,
+              tagFormats: arg_tagFormats,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.PlacementsGenerateTagsResponse response) {
+        checkPlacementsGenerateTagsResponse(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PlacementsResourceApi res = new api.DfareportingApi(mock).placements;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placements/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/placements/"));
+        pathOffset += 12;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacement());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Placement response) {
+        checkPlacement(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.PlacementsResourceApi res = new api.DfareportingApi(mock).placements;
+      var arg_request = buildPlacement();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Placement.fromJson(json);
+        checkPlacement(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placements", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/placements"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacement());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Placement response) {
+        checkPlacement(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PlacementsResourceApi res = new api.DfareportingApi(mock).placements;
+      var arg_profileId = "foo";
+      var arg_advertiserIds = buildUnnamed3187();
+      var arg_archived = true;
+      var arg_campaignIds = buildUnnamed3188();
+      var arg_compatibilities = buildUnnamed3189();
+      var arg_contentCategoryIds = buildUnnamed3190();
+      var arg_directorySiteIds = buildUnnamed3191();
+      var arg_groupIds = buildUnnamed3192();
+      var arg_ids = buildUnnamed3193();
+      var arg_maxEndDate = "foo";
+      var arg_maxResults = 42;
+      var arg_maxStartDate = "foo";
+      var arg_minEndDate = "foo";
+      var arg_minStartDate = "foo";
+      var arg_pageToken = "foo";
+      var arg_paymentSource = "foo";
+      var arg_placementStrategyIds = buildUnnamed3194();
+      var arg_pricingTypes = buildUnnamed3195();
+      var arg_searchString = "foo";
+      var arg_siteIds = buildUnnamed3196();
+      var arg_sizeIds = buildUnnamed3197();
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placements", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/placements"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["advertiserIds"], unittest.equals(arg_advertiserIds));
+        unittest.expect(
+            queryMap["archived"].first, unittest.equals("$arg_archived"));
+        unittest.expect(
+            queryMap["campaignIds"], unittest.equals(arg_campaignIds));
+        unittest.expect(
+            queryMap["compatibilities"], unittest.equals(arg_compatibilities));
+        unittest.expect(queryMap["contentCategoryIds"],
+            unittest.equals(arg_contentCategoryIds));
+        unittest.expect(queryMap["directorySiteIds"],
+            unittest.equals(arg_directorySiteIds));
+        unittest.expect(queryMap["groupIds"], unittest.equals(arg_groupIds));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(
+            queryMap["maxEndDate"].first, unittest.equals(arg_maxEndDate));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["maxStartDate"].first, unittest.equals(arg_maxStartDate));
+        unittest.expect(
+            queryMap["minEndDate"].first, unittest.equals(arg_minEndDate));
+        unittest.expect(
+            queryMap["minStartDate"].first, unittest.equals(arg_minStartDate));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["paymentSource"].first,
+            unittest.equals(arg_paymentSource));
+        unittest.expect(queryMap["placementStrategyIds"],
+            unittest.equals(arg_placementStrategyIds));
+        unittest.expect(
+            queryMap["pricingTypes"], unittest.equals(arg_pricingTypes));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(queryMap["siteIds"], unittest.equals(arg_siteIds));
+        unittest.expect(queryMap["sizeIds"], unittest.equals(arg_sizeIds));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacementsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              advertiserIds: arg_advertiserIds,
+              archived: arg_archived,
+              campaignIds: arg_campaignIds,
+              compatibilities: arg_compatibilities,
+              contentCategoryIds: arg_contentCategoryIds,
+              directorySiteIds: arg_directorySiteIds,
+              groupIds: arg_groupIds,
+              ids: arg_ids,
+              maxEndDate: arg_maxEndDate,
+              maxResults: arg_maxResults,
+              maxStartDate: arg_maxStartDate,
+              minEndDate: arg_minEndDate,
+              minStartDate: arg_minStartDate,
+              pageToken: arg_pageToken,
+              paymentSource: arg_paymentSource,
+              placementStrategyIds: arg_placementStrategyIds,
+              pricingTypes: arg_pricingTypes,
+              searchString: arg_searchString,
+              siteIds: arg_siteIds,
+              sizeIds: arg_sizeIds,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PlacementsListResponse response) {
+        checkPlacementsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.PlacementsResourceApi res = new api.DfareportingApi(mock).placements;
+      var arg_request = buildPlacement();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Placement.fromJson(json);
+        checkPlacement(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placements", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/placements"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacement());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Placement response) {
+        checkPlacement(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.PlacementsResourceApi res = new api.DfareportingApi(mock).placements;
+      var arg_request = buildPlacement();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Placement.fromJson(json);
+        checkPlacement(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/placements", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/placements"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlacement());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Placement response) {
+        checkPlacement(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PlatformTypesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PlatformTypesResourceApi res =
+          new api.DfareportingApi(mock).platformTypes;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/platformTypes/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/platformTypes/"));
+        pathOffset += 15;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlatformType());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PlatformType response) {
+        checkPlatformType(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PlatformTypesResourceApi res =
+          new api.DfareportingApi(mock).platformTypes;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/platformTypes", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/platformTypes"));
+        pathOffset += 14;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPlatformTypesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.list(arg_profileId, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.PlatformTypesListResponse response) {
+        checkPlatformTypesListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PostalCodesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PostalCodesResourceApi res =
+          new api.DfareportingApi(mock).postalCodes;
+      var arg_profileId = "foo";
+      var arg_code = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/postalCodes/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/postalCodes/"));
+        pathOffset += 13;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_code"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPostalCode());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_code, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PostalCode response) {
+        checkPostalCode(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PostalCodesResourceApi res =
+          new api.DfareportingApi(mock).postalCodes;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/postalCodes", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/postalCodes"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPostalCodesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PostalCodesListResponse response) {
+        checkPostalCodesListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsResourceApi res = new api.DfareportingApi(mock).projects;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/projects/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/projects/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProject());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Project response) {
+        checkProject(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsResourceApi res = new api.DfareportingApi(mock).projects;
+      var arg_profileId = "foo";
+      var arg_advertiserIds = buildUnnamed3198();
+      var arg_ids = buildUnnamed3199();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/projects", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/projects"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["advertiserIds"], unittest.equals(arg_advertiserIds));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProjectsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              advertiserIds: arg_advertiserIds,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ProjectsListResponse response) {
+        checkProjectsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-RegionsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.RegionsResourceApi res = new api.DfareportingApi(mock).regions;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/regions", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/regions"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRegionsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RegionsListResponse response) {
+        checkRegionsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-RemarketingListSharesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.RemarketingListSharesResourceApi res =
+          new api.DfareportingApi(mock).remarketingListShares;
+      var arg_profileId = "foo";
+      var arg_remarketingListId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/remarketingListShares/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 23),
+            unittest.equals("/remarketingListShares/"));
+        pathOffset += 23;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_remarketingListId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRemarketingListShare());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_remarketingListId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RemarketingListShare response) {
+        checkRemarketingListShare(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.RemarketingListSharesResourceApi res =
+          new api.DfareportingApi(mock).remarketingListShares;
+      var arg_request = buildRemarketingListShare();
+      var arg_profileId = "foo";
+      var arg_remarketingListId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.RemarketingListShare.fromJson(json);
+        checkRemarketingListShare(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/remarketingListShares", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("/remarketingListShares"));
+        pathOffset += 22;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["remarketingListId"].first,
+            unittest.equals(arg_remarketingListId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRemarketingListShare());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_remarketingListId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RemarketingListShare response) {
+        checkRemarketingListShare(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.RemarketingListSharesResourceApi res =
+          new api.DfareportingApi(mock).remarketingListShares;
+      var arg_request = buildRemarketingListShare();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.RemarketingListShare.fromJson(json);
+        checkRemarketingListShare(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/remarketingListShares", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 22),
+            unittest.equals("/remarketingListShares"));
+        pathOffset += 22;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRemarketingListShare());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RemarketingListShare response) {
+        checkRemarketingListShare(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-RemarketingListsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.RemarketingListsResourceApi res =
+          new api.DfareportingApi(mock).remarketingLists;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/remarketingLists/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("/remarketingLists/"));
+        pathOffset += 18;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRemarketingList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RemarketingList response) {
+        checkRemarketingList(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.RemarketingListsResourceApi res =
+          new api.DfareportingApi(mock).remarketingLists;
+      var arg_request = buildRemarketingList();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.RemarketingList.fromJson(json);
+        checkRemarketingList(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/remarketingLists", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("/remarketingLists"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRemarketingList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RemarketingList response) {
+        checkRemarketingList(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.RemarketingListsResourceApi res =
+          new api.DfareportingApi(mock).remarketingLists;
+      var arg_profileId = "foo";
+      var arg_advertiserId = "foo";
+      var arg_active = true;
+      var arg_floodlightActivityId = "foo";
+      var arg_maxResults = 42;
+      var arg_name = "foo";
+      var arg_pageToken = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/remarketingLists", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("/remarketingLists"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["advertiserId"].first, unittest.equals(arg_advertiserId));
+        unittest.expect(
+            queryMap["active"].first, unittest.equals("$arg_active"));
+        unittest.expect(queryMap["floodlightActivityId"].first,
+            unittest.equals(arg_floodlightActivityId));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["name"].first, unittest.equals(arg_name));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRemarketingListsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, arg_advertiserId,
+              active: arg_active,
+              floodlightActivityId: arg_floodlightActivityId,
+              maxResults: arg_maxResults,
+              name: arg_name,
+              pageToken: arg_pageToken,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.RemarketingListsListResponse response) {
+        checkRemarketingListsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.RemarketingListsResourceApi res =
+          new api.DfareportingApi(mock).remarketingLists;
+      var arg_request = buildRemarketingList();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.RemarketingList.fromJson(json);
+        checkRemarketingList(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/remarketingLists", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("/remarketingLists"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRemarketingList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RemarketingList response) {
+        checkRemarketingList(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.RemarketingListsResourceApi res =
+          new api.DfareportingApi(mock).remarketingLists;
+      var arg_request = buildRemarketingList();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.RemarketingList.fromJson(json);
+        checkRemarketingList(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/remarketingLists", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("/remarketingLists"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRemarketingList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RemarketingList response) {
+        checkRemarketingList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ReportsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ReportsResourceApi res = new api.DfareportingApi(mock).reports;
+      var arg_profileId = "foo";
+      var arg_reportId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/reports/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/reports/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_reportId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_profileId, arg_reportId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ReportsResourceApi res = new api.DfareportingApi(mock).reports;
+      var arg_profileId = "foo";
+      var arg_reportId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/reports/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/reports/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_reportId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildReport());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_reportId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Report response) {
+        checkReport(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.ReportsResourceApi res = new api.DfareportingApi(mock).reports;
+      var arg_request = buildReport();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Report.fromJson(json);
+        checkReport(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/reports", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/reports"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildReport());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Report response) {
+        checkReport(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ReportsResourceApi res = new api.DfareportingApi(mock).reports;
+      var arg_profileId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_scope = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/reports", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/reports"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["scope"].first, unittest.equals(arg_scope));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildReportList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              scope: arg_scope,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ReportList response) {
+        checkReportList(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ReportsResourceApi res = new api.DfareportingApi(mock).reports;
+      var arg_request = buildReport();
+      var arg_profileId = "foo";
+      var arg_reportId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Report.fromJson(json);
+        checkReport(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/reports/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/reports/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_reportId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildReport());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_reportId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Report response) {
+        checkReport(response);
+      })));
+    });
+
+    unittest.test("method--run", () {
+      var mock = new HttpServerMock();
+      api.ReportsResourceApi res = new api.DfareportingApi(mock).reports;
+      var arg_profileId = "foo";
+      var arg_reportId = "foo";
+      var arg_synchronous = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/reports/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/reports/"));
+        pathOffset += 9;
+        index = path.indexOf("/run", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_reportId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 4),
+            unittest.equals("/run"));
+        pathOffset += 4;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["synchronous"].first, unittest.equals("$arg_synchronous"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFile());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .run(arg_profileId, arg_reportId,
+              synchronous: arg_synchronous, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.File response) {
+        checkFile(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.ReportsResourceApi res = new api.DfareportingApi(mock).reports;
+      var arg_request = buildReport();
+      var arg_profileId = "foo";
+      var arg_reportId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Report.fromJson(json);
+        checkReport(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/reports/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/reports/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_reportId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildReport());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, arg_reportId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Report response) {
+        checkReport(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ReportsCompatibleFieldsResourceApi", () {
+    unittest.test("method--query", () {
+      var mock = new HttpServerMock();
+      api.ReportsCompatibleFieldsResourceApi res =
+          new api.DfareportingApi(mock).reports.compatibleFields;
+      var arg_request = buildReport();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Report.fromJson(json);
+        checkReport(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/reports/compatiblefields/query", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 31),
+            unittest.equals("/reports/compatiblefields/query"));
+        pathOffset += 31;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCompatibleFields());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .query(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CompatibleFields response) {
+        checkCompatibleFields(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ReportsFilesResourceApi", () {
+    unittest.test("method--get", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.ReportsFilesResourceApi res =
+          new api.DfareportingApi(mock).reports.files;
+      var arg_profileId = "foo";
+      var arg_reportId = "foo";
+      var arg_fileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/reports/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/reports/"));
+        pathOffset += 9;
+        index = path.indexOf("/files/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_reportId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/files/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_fileId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFile());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_reportId, arg_fileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.File response) {
+        checkFile(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ReportsFilesResourceApi res =
+          new api.DfareportingApi(mock).reports.files;
+      var arg_profileId = "foo";
+      var arg_reportId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/reports/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/reports/"));
+        pathOffset += 9;
+        index = path.indexOf("/files", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_reportId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/files"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFileList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, arg_reportId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FileList response) {
+        checkFileList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-SitesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.SitesResourceApi res = new api.DfareportingApi(mock).sites;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/sites/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/sites/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSite());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Site response) {
+        checkSite(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.SitesResourceApi res = new api.DfareportingApi(mock).sites;
+      var arg_request = buildSite();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Site.fromJson(json);
+        checkSite(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/sites", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/sites"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSite());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Site response) {
+        checkSite(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.SitesResourceApi res = new api.DfareportingApi(mock).sites;
+      var arg_profileId = "foo";
+      var arg_acceptsInStreamVideoPlacements = true;
+      var arg_acceptsInterstitialPlacements = true;
+      var arg_acceptsPublisherPaidPlacements = true;
+      var arg_adWordsSite = true;
+      var arg_approved = true;
+      var arg_campaignIds = buildUnnamed3200();
+      var arg_directorySiteIds = buildUnnamed3201();
+      var arg_ids = buildUnnamed3202();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_subaccountId = "foo";
+      var arg_unmappedSite = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/sites", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/sites"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["acceptsInStreamVideoPlacements"].first,
+            unittest.equals("$arg_acceptsInStreamVideoPlacements"));
+        unittest.expect(queryMap["acceptsInterstitialPlacements"].first,
+            unittest.equals("$arg_acceptsInterstitialPlacements"));
+        unittest.expect(queryMap["acceptsPublisherPaidPlacements"].first,
+            unittest.equals("$arg_acceptsPublisherPaidPlacements"));
+        unittest.expect(
+            queryMap["adWordsSite"].first, unittest.equals("$arg_adWordsSite"));
+        unittest.expect(
+            queryMap["approved"].first, unittest.equals("$arg_approved"));
+        unittest.expect(
+            queryMap["campaignIds"], unittest.equals(arg_campaignIds));
+        unittest.expect(queryMap["directorySiteIds"],
+            unittest.equals(arg_directorySiteIds));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(
+            queryMap["subaccountId"].first, unittest.equals(arg_subaccountId));
+        unittest.expect(queryMap["unmappedSite"].first,
+            unittest.equals("$arg_unmappedSite"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSitesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              acceptsInStreamVideoPlacements:
+                  arg_acceptsInStreamVideoPlacements,
+              acceptsInterstitialPlacements: arg_acceptsInterstitialPlacements,
+              acceptsPublisherPaidPlacements:
+                  arg_acceptsPublisherPaidPlacements,
+              adWordsSite: arg_adWordsSite,
+              approved: arg_approved,
+              campaignIds: arg_campaignIds,
+              directorySiteIds: arg_directorySiteIds,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              subaccountId: arg_subaccountId,
+              unmappedSite: arg_unmappedSite,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SitesListResponse response) {
+        checkSitesListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.SitesResourceApi res = new api.DfareportingApi(mock).sites;
+      var arg_request = buildSite();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Site.fromJson(json);
+        checkSite(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/sites", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/sites"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSite());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Site response) {
+        checkSite(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.SitesResourceApi res = new api.DfareportingApi(mock).sites;
+      var arg_request = buildSite();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Site.fromJson(json);
+        checkSite(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/sites", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/sites"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSite());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Site response) {
+        checkSite(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-SizesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.SizesResourceApi res = new api.DfareportingApi(mock).sizes;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/sizes/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/sizes/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSize());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Size response) {
+        checkSize(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.SizesResourceApi res = new api.DfareportingApi(mock).sizes;
+      var arg_request = buildSize();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Size.fromJson(json);
+        checkSize(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/sizes", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/sizes"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSize());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Size response) {
+        checkSize(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.SizesResourceApi res = new api.DfareportingApi(mock).sizes;
+      var arg_profileId = "foo";
+      var arg_height = 42;
+      var arg_iabStandard = true;
+      var arg_ids = buildUnnamed3203();
+      var arg_width = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/sizes", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/sizes"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["height"].first),
+            unittest.equals(arg_height));
+        unittest.expect(
+            queryMap["iabStandard"].first, unittest.equals("$arg_iabStandard"));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["width"].first),
+            unittest.equals(arg_width));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSizesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              height: arg_height,
+              iabStandard: arg_iabStandard,
+              ids: arg_ids,
+              width: arg_width,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SizesListResponse response) {
+        checkSizesListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-SubaccountsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.SubaccountsResourceApi res =
+          new api.DfareportingApi(mock).subaccounts;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/subaccounts/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/subaccounts/"));
+        pathOffset += 13;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSubaccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Subaccount response) {
+        checkSubaccount(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.SubaccountsResourceApi res =
+          new api.DfareportingApi(mock).subaccounts;
+      var arg_request = buildSubaccount();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Subaccount.fromJson(json);
+        checkSubaccount(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/subaccounts", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/subaccounts"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSubaccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Subaccount response) {
+        checkSubaccount(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.SubaccountsResourceApi res =
+          new api.DfareportingApi(mock).subaccounts;
+      var arg_profileId = "foo";
+      var arg_ids = buildUnnamed3204();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/subaccounts", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/subaccounts"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSubaccountsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SubaccountsListResponse response) {
+        checkSubaccountsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.SubaccountsResourceApi res =
+          new api.DfareportingApi(mock).subaccounts;
+      var arg_request = buildSubaccount();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Subaccount.fromJson(json);
+        checkSubaccount(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/subaccounts", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/subaccounts"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSubaccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Subaccount response) {
+        checkSubaccount(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.SubaccountsResourceApi res =
+          new api.DfareportingApi(mock).subaccounts;
+      var arg_request = buildSubaccount();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Subaccount.fromJson(json);
+        checkSubaccount(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/subaccounts", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/subaccounts"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSubaccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Subaccount response) {
+        checkSubaccount(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-TargetableRemarketingListsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.TargetableRemarketingListsResourceApi res =
+          new api.DfareportingApi(mock).targetableRemarketingLists;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/targetableRemarketingLists/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 28),
+            unittest.equals("/targetableRemarketingLists/"));
+        pathOffset += 28;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTargetableRemarketingList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.get(arg_profileId, arg_id, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.TargetableRemarketingList response) {
+        checkTargetableRemarketingList(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.TargetableRemarketingListsResourceApi res =
+          new api.DfareportingApi(mock).targetableRemarketingLists;
+      var arg_profileId = "foo";
+      var arg_advertiserId = "foo";
+      var arg_active = true;
+      var arg_maxResults = 42;
+      var arg_name = "foo";
+      var arg_pageToken = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/targetableRemarketingLists", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 27),
+            unittest.equals("/targetableRemarketingLists"));
+        pathOffset += 27;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["advertiserId"].first, unittest.equals(arg_advertiserId));
+        unittest.expect(
+            queryMap["active"].first, unittest.equals("$arg_active"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(queryMap["name"].first, unittest.equals(arg_name));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildTargetableRemarketingListsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, arg_advertiserId,
+              active: arg_active,
+              maxResults: arg_maxResults,
+              name: arg_name,
+              pageToken: arg_pageToken,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.TargetableRemarketingListsListResponse response) {
+        checkTargetableRemarketingListsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-TargetingTemplatesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.TargetingTemplatesResourceApi res =
+          new api.DfareportingApi(mock).targetingTemplates;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/targetingTemplates/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/targetingTemplates/"));
+        pathOffset += 20;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTargetingTemplate());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TargetingTemplate response) {
+        checkTargetingTemplate(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.TargetingTemplatesResourceApi res =
+          new api.DfareportingApi(mock).targetingTemplates;
+      var arg_request = buildTargetingTemplate();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.TargetingTemplate.fromJson(json);
+        checkTargetingTemplate(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/targetingTemplates", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("/targetingTemplates"));
+        pathOffset += 19;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTargetingTemplate());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TargetingTemplate response) {
+        checkTargetingTemplate(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.TargetingTemplatesResourceApi res =
+          new api.DfareportingApi(mock).targetingTemplates;
+      var arg_profileId = "foo";
+      var arg_advertiserId = "foo";
+      var arg_ids = buildUnnamed3205();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/targetingTemplates", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("/targetingTemplates"));
+        pathOffset += 19;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["advertiserId"].first, unittest.equals(arg_advertiserId));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTargetingTemplatesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              advertiserId: arg_advertiserId,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.TargetingTemplatesListResponse response) {
+        checkTargetingTemplatesListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.TargetingTemplatesResourceApi res =
+          new api.DfareportingApi(mock).targetingTemplates;
+      var arg_request = buildTargetingTemplate();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.TargetingTemplate.fromJson(json);
+        checkTargetingTemplate(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/targetingTemplates", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("/targetingTemplates"));
+        pathOffset += 19;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTargetingTemplate());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TargetingTemplate response) {
+        checkTargetingTemplate(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.TargetingTemplatesResourceApi res =
+          new api.DfareportingApi(mock).targetingTemplates;
+      var arg_request = buildTargetingTemplate();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.TargetingTemplate.fromJson(json);
+        checkTargetingTemplate(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/targetingTemplates", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("/targetingTemplates"));
+        pathOffset += 19;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTargetingTemplate());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TargetingTemplate response) {
+        checkTargetingTemplate(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UserProfilesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UserProfilesResourceApi res =
+          new api.DfareportingApi(mock).userProfiles;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserProfile());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserProfile response) {
+        checkUserProfile(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UserProfilesResourceApi res =
+          new api.DfareportingApi(mock).userProfiles;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("userprofiles"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserProfileList());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserProfileList response) {
+        checkUserProfileList(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UserRolePermissionGroupsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UserRolePermissionGroupsResourceApi res =
+          new api.DfareportingApi(mock).userRolePermissionGroups;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/userRolePermissionGroups/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 26),
+            unittest.equals("/userRolePermissionGroups/"));
+        pathOffset += 26;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserRolePermissionGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserRolePermissionGroup response) {
+        checkUserRolePermissionGroup(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UserRolePermissionGroupsResourceApi res =
+          new api.DfareportingApi(mock).userRolePermissionGroups;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/userRolePermissionGroups", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 25),
+            unittest.equals("/userRolePermissionGroups"));
+        pathOffset += 25;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildUserRolePermissionGroupsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.list(arg_profileId, $fields: arg_$fields).then(unittest
+          .expectAsync1(((api.UserRolePermissionGroupsListResponse response) {
+        checkUserRolePermissionGroupsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UserRolePermissionsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UserRolePermissionsResourceApi res =
+          new api.DfareportingApi(mock).userRolePermissions;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/userRolePermissions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/userRolePermissions/"));
+        pathOffset += 21;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserRolePermission());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserRolePermission response) {
+        checkUserRolePermission(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UserRolePermissionsResourceApi res =
+          new api.DfareportingApi(mock).userRolePermissions;
+      var arg_profileId = "foo";
+      var arg_ids = buildUnnamed3206();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/userRolePermissions", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/userRolePermissions"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserRolePermissionsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.list(arg_profileId, ids: arg_ids, $fields: arg_$fields).then(unittest
+          .expectAsync1(((api.UserRolePermissionsListResponse response) {
+        checkUserRolePermissionsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UserRolesResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.UserRolesResourceApi res = new api.DfareportingApi(mock).userRoles;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/userRoles/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/userRoles/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UserRolesResourceApi res = new api.DfareportingApi(mock).userRoles;
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/userRoles/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/userRoles/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserRole());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserRole response) {
+        checkUserRole(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.UserRolesResourceApi res = new api.DfareportingApi(mock).userRoles;
+      var arg_request = buildUserRole();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UserRole.fromJson(json);
+        checkUserRole(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/userRoles", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/userRoles"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserRole());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserRole response) {
+        checkUserRole(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UserRolesResourceApi res = new api.DfareportingApi(mock).userRoles;
+      var arg_profileId = "foo";
+      var arg_accountUserRoleOnly = true;
+      var arg_ids = buildUnnamed3207();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_searchString = "foo";
+      var arg_sortField = "foo";
+      var arg_sortOrder = "foo";
+      var arg_subaccountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/userRoles", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/userRoles"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["accountUserRoleOnly"].first,
+            unittest.equals("$arg_accountUserRoleOnly"));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["searchString"].first, unittest.equals(arg_searchString));
+        unittest.expect(
+            queryMap["sortField"].first, unittest.equals(arg_sortField));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(
+            queryMap["subaccountId"].first, unittest.equals(arg_subaccountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserRolesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId,
+              accountUserRoleOnly: arg_accountUserRoleOnly,
+              ids: arg_ids,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              searchString: arg_searchString,
+              sortField: arg_sortField,
+              sortOrder: arg_sortOrder,
+              subaccountId: arg_subaccountId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserRolesListResponse response) {
+        checkUserRolesListResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.UserRolesResourceApi res = new api.DfareportingApi(mock).userRoles;
+      var arg_request = buildUserRole();
+      var arg_profileId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UserRole.fromJson(json);
+        checkUserRole(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/userRoles", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/userRoles"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserRole());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserRole response) {
+        checkUserRole(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.UserRolesResourceApi res = new api.DfareportingApi(mock).userRoles;
+      var arg_request = buildUserRole();
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UserRole.fromJson(json);
+        checkUserRole(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/userRoles", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/userRoles"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserRole());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserRole response) {
+        checkUserRole(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-VideoFormatsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.VideoFormatsResourceApi res =
+          new api.DfareportingApi(mock).videoFormats;
+      var arg_profileId = "foo";
+      var arg_id = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/videoFormats/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/videoFormats/"));
+        pathOffset += 14;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVideoFormat());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_profileId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.VideoFormat response) {
+        checkVideoFormat(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.VideoFormatsResourceApi res =
+          new api.DfareportingApi(mock).videoFormats;
+      var arg_profileId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("dfareporting/v2.8/"));
+        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("userprofiles/"));
+        pathOffset += 13;
+        index = path.indexOf("/videoFormats", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_profileId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/videoFormats"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVideoFormatsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_profileId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.VideoFormatsListResponse response) {
+        checkVideoFormatsListResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/discovery/v1_test.dart b/generated/googleapis/test/discovery/v1_test.dart
index ed9f2b3..5fb1c5d 100644
--- a/generated/googleapis/test/discovery/v1_test.dart
+++ b/generated/googleapis/test/discovery/v1_test.dart
@@ -71,14 +71,14 @@
   buildCounterDirectoryListItemsIcons--;
 }
 
-buildUnnamed329() {
+buildUnnamed313() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed329(core.List<core.String> o) {
+checkUnnamed313(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -96,7 +96,7 @@
     o.icons = buildDirectoryListItemsIcons();
     o.id = "foo";
     o.kind = "foo";
-    o.labels = buildUnnamed329();
+    o.labels = buildUnnamed313();
     o.name = "foo";
     o.preferred = true;
     o.title = "foo";
@@ -116,7 +116,7 @@
     checkDirectoryListItemsIcons(o.icons);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed329(o.labels);
+    checkUnnamed313(o.labels);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.preferred, unittest.isTrue);
     unittest.expect(o.title, unittest.equals('foo'));
@@ -125,14 +125,14 @@
   buildCounterDirectoryListItems--;
 }
 
-buildUnnamed330() {
+buildUnnamed314() {
   var o = new core.List<api.DirectoryListItems>();
   o.add(buildDirectoryListItems());
   o.add(buildDirectoryListItems());
   return o;
 }
 
-checkUnnamed330(core.List<api.DirectoryListItems> o) {
+checkUnnamed314(core.List<api.DirectoryListItems> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDirectoryListItems(o[0]);
   checkDirectoryListItems(o[1]);
@@ -144,7 +144,7 @@
   buildCounterDirectoryList++;
   if (buildCounterDirectoryList < 3) {
     o.discoveryVersion = "foo";
-    o.items = buildUnnamed330();
+    o.items = buildUnnamed314();
     o.kind = "foo";
   }
   buildCounterDirectoryList--;
@@ -155,20 +155,20 @@
   buildCounterDirectoryList++;
   if (buildCounterDirectoryList < 3) {
     unittest.expect(o.discoveryVersion, unittest.equals('foo'));
-    checkUnnamed330(o.items);
+    checkUnnamed314(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterDirectoryList--;
 }
 
-buildUnnamed331() {
+buildUnnamed315() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed331(core.List<core.String> o) {
+checkUnnamed315(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -179,7 +179,7 @@
   var o = new api.JsonSchemaAnnotations();
   buildCounterJsonSchemaAnnotations++;
   if (buildCounterJsonSchemaAnnotations < 3) {
-    o.required = buildUnnamed331();
+    o.required = buildUnnamed315();
   }
   buildCounterJsonSchemaAnnotations--;
   return o;
@@ -188,45 +188,45 @@
 checkJsonSchemaAnnotations(api.JsonSchemaAnnotations o) {
   buildCounterJsonSchemaAnnotations++;
   if (buildCounterJsonSchemaAnnotations < 3) {
-    checkUnnamed331(o.required);
+    checkUnnamed315(o.required);
   }
   buildCounterJsonSchemaAnnotations--;
 }
 
-buildUnnamed332() {
+buildUnnamed316() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed332(core.List<core.String> o) {
+checkUnnamed316(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed333() {
+buildUnnamed317() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed333(core.List<core.String> o) {
+checkUnnamed317(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed334() {
+buildUnnamed318() {
   var o = new core.Map<core.String, api.JsonSchema>();
   o["x"] = buildJsonSchema();
   o["y"] = buildJsonSchema();
   return o;
 }
 
-checkUnnamed334(core.Map<core.String, api.JsonSchema> o) {
+checkUnnamed318(core.Map<core.String, api.JsonSchema> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJsonSchema(o["x"]);
   checkJsonSchema(o["y"]);
@@ -253,14 +253,14 @@
   buildCounterJsonSchemaVariantMap--;
 }
 
-buildUnnamed335() {
+buildUnnamed319() {
   var o = new core.List<api.JsonSchemaVariantMap>();
   o.add(buildJsonSchemaVariantMap());
   o.add(buildJsonSchemaVariantMap());
   return o;
 }
 
-checkUnnamed335(core.List<api.JsonSchemaVariantMap> o) {
+checkUnnamed319(core.List<api.JsonSchemaVariantMap> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJsonSchemaVariantMap(o[0]);
   checkJsonSchemaVariantMap(o[1]);
@@ -272,7 +272,7 @@
   buildCounterJsonSchemaVariant++;
   if (buildCounterJsonSchemaVariant < 3) {
     o.discriminant = "foo";
-    o.map = buildUnnamed335();
+    o.map = buildUnnamed319();
   }
   buildCounterJsonSchemaVariant--;
   return o;
@@ -282,7 +282,7 @@
   buildCounterJsonSchemaVariant++;
   if (buildCounterJsonSchemaVariant < 3) {
     unittest.expect(o.discriminant, unittest.equals('foo'));
-    checkUnnamed335(o.map);
+    checkUnnamed319(o.map);
   }
   buildCounterJsonSchemaVariant--;
 }
@@ -297,8 +297,8 @@
     o.annotations = buildJsonSchemaAnnotations();
     o.default_ = "foo";
     o.description = "foo";
-    o.enum_ = buildUnnamed332();
-    o.enumDescriptions = buildUnnamed333();
+    o.enum_ = buildUnnamed316();
+    o.enumDescriptions = buildUnnamed317();
     o.format = "foo";
     o.id = "foo";
     o.items = buildJsonSchema();
@@ -306,7 +306,7 @@
     o.maximum = "foo";
     o.minimum = "foo";
     o.pattern = "foo";
-    o.properties = buildUnnamed334();
+    o.properties = buildUnnamed318();
     o.readOnly = true;
     o.repeated = true;
     o.required = true;
@@ -325,8 +325,8 @@
     checkJsonSchemaAnnotations(o.annotations);
     unittest.expect(o.default_, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed332(o.enum_);
-    checkUnnamed333(o.enumDescriptions);
+    checkUnnamed316(o.enum_);
+    checkUnnamed317(o.enumDescriptions);
     unittest.expect(o.format, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     checkJsonSchema(o.items);
@@ -334,7 +334,7 @@
     unittest.expect(o.maximum, unittest.equals('foo'));
     unittest.expect(o.minimum, unittest.equals('foo'));
     unittest.expect(o.pattern, unittest.equals('foo'));
-    checkUnnamed334(o.properties);
+    checkUnnamed318(o.properties);
     unittest.expect(o.readOnly, unittest.isTrue);
     unittest.expect(o.repeated, unittest.isTrue);
     unittest.expect(o.required, unittest.isTrue);
@@ -364,14 +364,14 @@
   buildCounterRestDescriptionAuthOauth2ScopesValue--;
 }
 
-buildUnnamed336() {
+buildUnnamed320() {
   var o = new core.Map<core.String, api.RestDescriptionAuthOauth2ScopesValue>();
   o["x"] = buildRestDescriptionAuthOauth2ScopesValue();
   o["y"] = buildRestDescriptionAuthOauth2ScopesValue();
   return o;
 }
 
-checkUnnamed336(
+checkUnnamed320(
     core.Map<core.String, api.RestDescriptionAuthOauth2ScopesValue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRestDescriptionAuthOauth2ScopesValue(o["x"]);
@@ -383,7 +383,7 @@
   var o = new api.RestDescriptionAuthOauth2();
   buildCounterRestDescriptionAuthOauth2++;
   if (buildCounterRestDescriptionAuthOauth2 < 3) {
-    o.scopes = buildUnnamed336();
+    o.scopes = buildUnnamed320();
   }
   buildCounterRestDescriptionAuthOauth2--;
   return o;
@@ -392,7 +392,7 @@
 checkRestDescriptionAuthOauth2(api.RestDescriptionAuthOauth2 o) {
   buildCounterRestDescriptionAuthOauth2++;
   if (buildCounterRestDescriptionAuthOauth2 < 3) {
-    checkUnnamed336(o.scopes);
+    checkUnnamed320(o.scopes);
   }
   buildCounterRestDescriptionAuthOauth2--;
 }
@@ -416,14 +416,14 @@
   buildCounterRestDescriptionAuth--;
 }
 
-buildUnnamed337() {
+buildUnnamed321() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed337(core.List<core.String> o) {
+checkUnnamed321(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -450,66 +450,66 @@
   buildCounterRestDescriptionIcons--;
 }
 
-buildUnnamed338() {
+buildUnnamed322() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed338(core.List<core.String> o) {
+checkUnnamed322(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed339() {
+buildUnnamed323() {
   var o = new core.Map<core.String, api.RestMethod>();
   o["x"] = buildRestMethod();
   o["y"] = buildRestMethod();
   return o;
 }
 
-checkUnnamed339(core.Map<core.String, api.RestMethod> o) {
+checkUnnamed323(core.Map<core.String, api.RestMethod> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRestMethod(o["x"]);
   checkRestMethod(o["y"]);
 }
 
-buildUnnamed340() {
+buildUnnamed324() {
   var o = new core.Map<core.String, api.JsonSchema>();
   o["x"] = buildJsonSchema();
   o["y"] = buildJsonSchema();
   return o;
 }
 
-checkUnnamed340(core.Map<core.String, api.JsonSchema> o) {
+checkUnnamed324(core.Map<core.String, api.JsonSchema> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJsonSchema(o["x"]);
   checkJsonSchema(o["y"]);
 }
 
-buildUnnamed341() {
+buildUnnamed325() {
   var o = new core.Map<core.String, api.RestResource>();
   o["x"] = buildRestResource();
   o["y"] = buildRestResource();
   return o;
 }
 
-checkUnnamed341(core.Map<core.String, api.RestResource> o) {
+checkUnnamed325(core.Map<core.String, api.RestResource> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRestResource(o["x"]);
   checkRestResource(o["y"]);
 }
 
-buildUnnamed342() {
+buildUnnamed326() {
   var o = new core.Map<core.String, api.JsonSchema>();
   o["x"] = buildJsonSchema();
   o["y"] = buildJsonSchema();
   return o;
 }
 
-checkUnnamed342(core.Map<core.String, api.JsonSchema> o) {
+checkUnnamed326(core.Map<core.String, api.JsonSchema> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJsonSchema(o["x"]);
   checkJsonSchema(o["y"]);
@@ -530,22 +530,22 @@
     o.documentationLink = "foo";
     o.etag = "foo";
     o.exponentialBackoffDefault = true;
-    o.features = buildUnnamed337();
+    o.features = buildUnnamed321();
     o.icons = buildRestDescriptionIcons();
     o.id = "foo";
     o.kind = "foo";
-    o.labels = buildUnnamed338();
-    o.methods = buildUnnamed339();
+    o.labels = buildUnnamed322();
+    o.methods = buildUnnamed323();
     o.name = "foo";
     o.ownerDomain = "foo";
     o.ownerName = "foo";
     o.packagePath = "foo";
-    o.parameters = buildUnnamed340();
+    o.parameters = buildUnnamed324();
     o.protocol = "foo";
-    o.resources = buildUnnamed341();
+    o.resources = buildUnnamed325();
     o.revision = "foo";
     o.rootUrl = "foo";
-    o.schemas = buildUnnamed342();
+    o.schemas = buildUnnamed326();
     o.servicePath = "foo";
     o.title = "foo";
     o.version = "foo";
@@ -568,22 +568,22 @@
     unittest.expect(o.documentationLink, unittest.equals('foo'));
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.exponentialBackoffDefault, unittest.isTrue);
-    checkUnnamed337(o.features);
+    checkUnnamed321(o.features);
     checkRestDescriptionIcons(o.icons);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed338(o.labels);
-    checkUnnamed339(o.methods);
+    checkUnnamed322(o.labels);
+    checkUnnamed323(o.methods);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.ownerDomain, unittest.equals('foo'));
     unittest.expect(o.ownerName, unittest.equals('foo'));
     unittest.expect(o.packagePath, unittest.equals('foo'));
-    checkUnnamed340(o.parameters);
+    checkUnnamed324(o.parameters);
     unittest.expect(o.protocol, unittest.equals('foo'));
-    checkUnnamed341(o.resources);
+    checkUnnamed325(o.resources);
     unittest.expect(o.revision, unittest.equals('foo'));
     unittest.expect(o.rootUrl, unittest.equals('foo'));
-    checkUnnamed342(o.schemas);
+    checkUnnamed326(o.schemas);
     unittest.expect(o.servicePath, unittest.equals('foo'));
     unittest.expect(o.title, unittest.equals('foo'));
     unittest.expect(o.version, unittest.equals('foo'));
@@ -592,14 +592,14 @@
   buildCounterRestDescription--;
 }
 
-buildUnnamed343() {
+buildUnnamed327() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed343(core.List<core.String> o) {
+checkUnnamed327(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -675,7 +675,7 @@
   var o = new api.RestMethodMediaUpload();
   buildCounterRestMethodMediaUpload++;
   if (buildCounterRestMethodMediaUpload < 3) {
-    o.accept = buildUnnamed343();
+    o.accept = buildUnnamed327();
     o.maxSize = "foo";
     o.protocols = buildRestMethodMediaUploadProtocols();
   }
@@ -686,34 +686,34 @@
 checkRestMethodMediaUpload(api.RestMethodMediaUpload o) {
   buildCounterRestMethodMediaUpload++;
   if (buildCounterRestMethodMediaUpload < 3) {
-    checkUnnamed343(o.accept);
+    checkUnnamed327(o.accept);
     unittest.expect(o.maxSize, unittest.equals('foo'));
     checkRestMethodMediaUploadProtocols(o.protocols);
   }
   buildCounterRestMethodMediaUpload--;
 }
 
-buildUnnamed344() {
+buildUnnamed328() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed344(core.List<core.String> o) {
+checkUnnamed328(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed345() {
+buildUnnamed329() {
   var o = new core.Map<core.String, api.JsonSchema>();
   o["x"] = buildJsonSchema();
   o["y"] = buildJsonSchema();
   return o;
 }
 
-checkUnnamed345(core.Map<core.String, api.JsonSchema> o) {
+checkUnnamed329(core.Map<core.String, api.JsonSchema> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJsonSchema(o["x"]);
   checkJsonSchema(o["y"]);
@@ -759,14 +759,14 @@
   buildCounterRestMethodResponse--;
 }
 
-buildUnnamed346() {
+buildUnnamed330() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed346(core.List<core.String> o) {
+checkUnnamed330(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -782,12 +782,12 @@
     o.httpMethod = "foo";
     o.id = "foo";
     o.mediaUpload = buildRestMethodMediaUpload();
-    o.parameterOrder = buildUnnamed344();
-    o.parameters = buildUnnamed345();
+    o.parameterOrder = buildUnnamed328();
+    o.parameters = buildUnnamed329();
     o.path = "foo";
     o.request = buildRestMethodRequest();
     o.response = buildRestMethodResponse();
-    o.scopes = buildUnnamed346();
+    o.scopes = buildUnnamed330();
     o.supportsMediaDownload = true;
     o.supportsMediaUpload = true;
     o.supportsSubscription = true;
@@ -805,12 +805,12 @@
     unittest.expect(o.httpMethod, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     checkRestMethodMediaUpload(o.mediaUpload);
-    checkUnnamed344(o.parameterOrder);
-    checkUnnamed345(o.parameters);
+    checkUnnamed328(o.parameterOrder);
+    checkUnnamed329(o.parameters);
     unittest.expect(o.path, unittest.equals('foo'));
     checkRestMethodRequest(o.request);
     checkRestMethodResponse(o.response);
-    checkUnnamed346(o.scopes);
+    checkUnnamed330(o.scopes);
     unittest.expect(o.supportsMediaDownload, unittest.isTrue);
     unittest.expect(o.supportsMediaUpload, unittest.isTrue);
     unittest.expect(o.supportsSubscription, unittest.isTrue);
@@ -819,27 +819,27 @@
   buildCounterRestMethod--;
 }
 
-buildUnnamed347() {
+buildUnnamed331() {
   var o = new core.Map<core.String, api.RestMethod>();
   o["x"] = buildRestMethod();
   o["y"] = buildRestMethod();
   return o;
 }
 
-checkUnnamed347(core.Map<core.String, api.RestMethod> o) {
+checkUnnamed331(core.Map<core.String, api.RestMethod> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRestMethod(o["x"]);
   checkRestMethod(o["y"]);
 }
 
-buildUnnamed348() {
+buildUnnamed332() {
   var o = new core.Map<core.String, api.RestResource>();
   o["x"] = buildRestResource();
   o["y"] = buildRestResource();
   return o;
 }
 
-checkUnnamed348(core.Map<core.String, api.RestResource> o) {
+checkUnnamed332(core.Map<core.String, api.RestResource> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRestResource(o["x"]);
   checkRestResource(o["y"]);
@@ -850,8 +850,8 @@
   var o = new api.RestResource();
   buildCounterRestResource++;
   if (buildCounterRestResource < 3) {
-    o.methods = buildUnnamed347();
-    o.resources = buildUnnamed348();
+    o.methods = buildUnnamed331();
+    o.resources = buildUnnamed332();
   }
   buildCounterRestResource--;
   return o;
@@ -860,8 +860,8 @@
 checkRestResource(api.RestResource o) {
   buildCounterRestResource++;
   if (buildCounterRestResource < 3) {
-    checkUnnamed347(o.methods);
-    checkUnnamed348(o.resources);
+    checkUnnamed331(o.methods);
+    checkUnnamed332(o.resources);
   }
   buildCounterRestResource--;
 }
@@ -1036,6 +1036,7 @@
       api.ApisResourceApi res = new api.DiscoveryApi(mock).apis;
       var arg_api = "foo";
       var arg_version = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1087,6 +1088,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1095,7 +1097,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getRest(arg_api, arg_version)
+          .getRest(arg_api, arg_version, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RestDescription response) {
         checkRestDescription(response);
       })));
@@ -1106,6 +1108,7 @@
       api.ApisResourceApi res = new api.DiscoveryApi(mock).apis;
       var arg_name = "foo";
       var arg_preferred = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1142,6 +1145,7 @@
         unittest.expect(queryMap["name"].first, unittest.equals(arg_name));
         unittest.expect(
             queryMap["preferred"].first, unittest.equals("$arg_preferred"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1150,7 +1154,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(name: arg_name, preferred: arg_preferred)
+          .list(name: arg_name, preferred: arg_preferred, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DirectoryList response) {
         checkDirectoryList(response);
       })));
diff --git a/generated/googleapis/test/dns/v1_test.dart b/generated/googleapis/test/dns/v1_test.dart
index 6a607fb..648bc24 100644
--- a/generated/googleapis/test/dns/v1_test.dart
+++ b/generated/googleapis/test/dns/v1_test.dart
@@ -50,27 +50,27 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed838() {
+buildUnnamed823() {
   var o = new core.List<api.ResourceRecordSet>();
   o.add(buildResourceRecordSet());
   o.add(buildResourceRecordSet());
   return o;
 }
 
-checkUnnamed838(core.List<api.ResourceRecordSet> o) {
+checkUnnamed823(core.List<api.ResourceRecordSet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceRecordSet(o[0]);
   checkResourceRecordSet(o[1]);
 }
 
-buildUnnamed839() {
+buildUnnamed824() {
   var o = new core.List<api.ResourceRecordSet>();
   o.add(buildResourceRecordSet());
   o.add(buildResourceRecordSet());
   return o;
 }
 
-checkUnnamed839(core.List<api.ResourceRecordSet> o) {
+checkUnnamed824(core.List<api.ResourceRecordSet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceRecordSet(o[0]);
   checkResourceRecordSet(o[1]);
@@ -81,8 +81,8 @@
   var o = new api.Change();
   buildCounterChange++;
   if (buildCounterChange < 3) {
-    o.additions = buildUnnamed838();
-    o.deletions = buildUnnamed839();
+    o.additions = buildUnnamed823();
+    o.deletions = buildUnnamed824();
     o.id = "foo";
     o.kind = "foo";
     o.startTime = "foo";
@@ -95,8 +95,8 @@
 checkChange(api.Change o) {
   buildCounterChange++;
   if (buildCounterChange < 3) {
-    checkUnnamed838(o.additions);
-    checkUnnamed839(o.deletions);
+    checkUnnamed823(o.additions);
+    checkUnnamed824(o.deletions);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.startTime, unittest.equals('foo'));
@@ -105,14 +105,14 @@
   buildCounterChange--;
 }
 
-buildUnnamed840() {
+buildUnnamed825() {
   var o = new core.List<api.Change>();
   o.add(buildChange());
   o.add(buildChange());
   return o;
 }
 
-checkUnnamed840(core.List<api.Change> o) {
+checkUnnamed825(core.List<api.Change> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkChange(o[0]);
   checkChange(o[1]);
@@ -123,7 +123,7 @@
   var o = new api.ChangesListResponse();
   buildCounterChangesListResponse++;
   if (buildCounterChangesListResponse < 3) {
-    o.changes = buildUnnamed840();
+    o.changes = buildUnnamed825();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -134,21 +134,21 @@
 checkChangesListResponse(api.ChangesListResponse o) {
   buildCounterChangesListResponse++;
   if (buildCounterChangesListResponse < 3) {
-    checkUnnamed840(o.changes);
+    checkUnnamed825(o.changes);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterChangesListResponse--;
 }
 
-buildUnnamed841() {
+buildUnnamed826() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed841(core.List<core.String> o) {
+checkUnnamed826(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -166,7 +166,7 @@
     o.kind = "foo";
     o.name = "foo";
     o.nameServerSet = "foo";
-    o.nameServers = buildUnnamed841();
+    o.nameServers = buildUnnamed826();
   }
   buildCounterManagedZone--;
   return o;
@@ -182,19 +182,19 @@
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.nameServerSet, unittest.equals('foo'));
-    checkUnnamed841(o.nameServers);
+    checkUnnamed826(o.nameServers);
   }
   buildCounterManagedZone--;
 }
 
-buildUnnamed842() {
+buildUnnamed827() {
   var o = new core.List<api.ManagedZone>();
   o.add(buildManagedZone());
   o.add(buildManagedZone());
   return o;
 }
 
-checkUnnamed842(core.List<api.ManagedZone> o) {
+checkUnnamed827(core.List<api.ManagedZone> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkManagedZone(o[0]);
   checkManagedZone(o[1]);
@@ -206,7 +206,7 @@
   buildCounterManagedZonesListResponse++;
   if (buildCounterManagedZonesListResponse < 3) {
     o.kind = "foo";
-    o.managedZones = buildUnnamed842();
+    o.managedZones = buildUnnamed827();
     o.nextPageToken = "foo";
   }
   buildCounterManagedZonesListResponse--;
@@ -217,7 +217,7 @@
   buildCounterManagedZonesListResponse++;
   if (buildCounterManagedZonesListResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed842(o.managedZones);
+    checkUnnamed827(o.managedZones);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterManagedZonesListResponse--;
@@ -279,14 +279,14 @@
   buildCounterQuota--;
 }
 
-buildUnnamed843() {
+buildUnnamed828() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed843(core.List<core.String> o) {
+checkUnnamed828(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -299,7 +299,7 @@
   if (buildCounterResourceRecordSet < 3) {
     o.kind = "foo";
     o.name = "foo";
-    o.rrdatas = buildUnnamed843();
+    o.rrdatas = buildUnnamed828();
     o.ttl = 42;
     o.type = "foo";
   }
@@ -312,21 +312,21 @@
   if (buildCounterResourceRecordSet < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed843(o.rrdatas);
+    checkUnnamed828(o.rrdatas);
     unittest.expect(o.ttl, unittest.equals(42));
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterResourceRecordSet--;
 }
 
-buildUnnamed844() {
+buildUnnamed829() {
   var o = new core.List<api.ResourceRecordSet>();
   o.add(buildResourceRecordSet());
   o.add(buildResourceRecordSet());
   return o;
 }
 
-checkUnnamed844(core.List<api.ResourceRecordSet> o) {
+checkUnnamed829(core.List<api.ResourceRecordSet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceRecordSet(o[0]);
   checkResourceRecordSet(o[1]);
@@ -339,7 +339,7 @@
   if (buildCounterResourceRecordSetsListResponse < 3) {
     o.kind = "foo";
     o.nextPageToken = "foo";
-    o.rrsets = buildUnnamed844();
+    o.rrsets = buildUnnamed829();
   }
   buildCounterResourceRecordSetsListResponse--;
   return o;
@@ -350,7 +350,7 @@
   if (buildCounterResourceRecordSetsListResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed844(o.rrsets);
+    checkUnnamed829(o.rrsets);
   }
   buildCounterResourceRecordSetsListResponse--;
 }
@@ -427,6 +427,7 @@
       var arg_request = buildChange();
       var arg_project = "foo";
       var arg_managedZone = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Change.fromJson(json);
         checkChange(obj);
@@ -457,6 +458,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -465,7 +467,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_project, arg_managedZone)
+          .create(arg_request, arg_project, arg_managedZone,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Change response) {
         checkChange(response);
       })));
@@ -477,6 +480,7 @@
       var arg_project = "foo";
       var arg_managedZone = "foo";
       var arg_changeId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -504,6 +508,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -512,7 +517,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_managedZone, arg_changeId)
+          .get(arg_project, arg_managedZone, arg_changeId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Change response) {
         checkChange(response);
       })));
@@ -527,6 +532,7 @@
       var arg_pageToken = "foo";
       var arg_sortBy = "foo";
       var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -561,6 +567,7 @@
         unittest.expect(queryMap["sortBy"].first, unittest.equals(arg_sortBy));
         unittest.expect(
             queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -573,7 +580,8 @@
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
               sortBy: arg_sortBy,
-              sortOrder: arg_sortOrder)
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ChangesListResponse response) {
         checkChangesListResponse(response);
       })));
@@ -586,6 +594,7 @@
       api.ManagedZonesResourceApi res = new api.DnsApi(mock).managedZones;
       var arg_request = buildManagedZone();
       var arg_project = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ManagedZone.fromJson(json);
         checkManagedZone(obj);
@@ -616,6 +625,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -624,7 +634,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_project)
+          .create(arg_request, arg_project, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ManagedZone response) {
         checkManagedZone(response);
       })));
@@ -635,6 +645,7 @@
       api.ManagedZonesResourceApi res = new api.DnsApi(mock).managedZones;
       var arg_project = "foo";
       var arg_managedZone = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -662,6 +673,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -670,7 +682,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_managedZone)
+          .delete(arg_project, arg_managedZone, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -679,6 +691,7 @@
       api.ManagedZonesResourceApi res = new api.DnsApi(mock).managedZones;
       var arg_project = "foo";
       var arg_managedZone = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -706,6 +719,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -714,7 +728,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_managedZone)
+          .get(arg_project, arg_managedZone, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ManagedZone response) {
         checkManagedZone(response);
       })));
@@ -727,6 +741,7 @@
       var arg_dnsName = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -760,6 +775,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -771,7 +787,8 @@
           .list(arg_project,
               dnsName: arg_dnsName,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ManagedZonesListResponse response) {
         checkManagedZonesListResponse(response);
       })));
@@ -783,6 +800,7 @@
       var mock = new HttpServerMock();
       api.ProjectsResourceApi res = new api.DnsApi(mock).projects;
       var arg_project = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -810,6 +828,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -817,7 +836,9 @@
         var resp = convert.JSON.encode(buildProject());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_project).then(unittest.expectAsync1(((api.Project response) {
+      res
+          .get(arg_project, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Project response) {
         checkProject(response);
       })));
     });
@@ -834,6 +855,7 @@
       var arg_name = "foo";
       var arg_pageToken = "foo";
       var arg_type = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -867,6 +889,7 @@
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(queryMap["type"].first, unittest.equals(arg_type));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -879,7 +902,8 @@
               maxResults: arg_maxResults,
               name: arg_name,
               pageToken: arg_pageToken,
-              type: arg_type)
+              type: arg_type,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ResourceRecordSetsListResponse response) {
         checkResourceRecordSetsListResponse(response);
diff --git a/generated/googleapis/test/doubleclickbidmanager/v1_test.dart b/generated/googleapis/test/doubleclickbidmanager/v1_test.dart
index e9f6216..5b3b158 100644
--- a/generated/googleapis/test/doubleclickbidmanager/v1_test.dart
+++ b/generated/googleapis/test/doubleclickbidmanager/v1_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed1301() {
+buildUnnamed1288() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1301(core.List<core.String> o) {
+checkUnnamed1288(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -69,7 +69,7 @@
   buildCounterDownloadLineItemsRequest++;
   if (buildCounterDownloadLineItemsRequest < 3) {
     o.fileSpec = "foo";
-    o.filterIds = buildUnnamed1301();
+    o.filterIds = buildUnnamed1288();
     o.filterType = "foo";
     o.format = "foo";
   }
@@ -81,7 +81,7 @@
   buildCounterDownloadLineItemsRequest++;
   if (buildCounterDownloadLineItemsRequest < 3) {
     unittest.expect(o.fileSpec, unittest.equals('foo'));
-    checkUnnamed1301(o.filterIds);
+    checkUnnamed1288(o.filterIds);
     unittest.expect(o.filterType, unittest.equals('foo'));
     unittest.expect(o.format, unittest.equals('foo'));
   }
@@ -107,27 +107,27 @@
   buildCounterDownloadLineItemsResponse--;
 }
 
-buildUnnamed1302() {
+buildUnnamed1289() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1302(core.List<core.String> o) {
+checkUnnamed1289(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1303() {
+buildUnnamed1290() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1303(core.List<core.String> o) {
+checkUnnamed1290(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -138,8 +138,8 @@
   var o = new api.DownloadRequest();
   buildCounterDownloadRequest++;
   if (buildCounterDownloadRequest < 3) {
-    o.fileTypes = buildUnnamed1302();
-    o.filterIds = buildUnnamed1303();
+    o.fileTypes = buildUnnamed1289();
+    o.filterIds = buildUnnamed1290();
     o.filterType = "foo";
     o.version = "foo";
   }
@@ -150,8 +150,8 @@
 checkDownloadRequest(api.DownloadRequest o) {
   buildCounterDownloadRequest++;
   if (buildCounterDownloadRequest < 3) {
-    checkUnnamed1302(o.fileTypes);
-    checkUnnamed1303(o.filterIds);
+    checkUnnamed1289(o.fileTypes);
+    checkUnnamed1290(o.filterIds);
     unittest.expect(o.filterType, unittest.equals('foo'));
     unittest.expect(o.version, unittest.equals('foo'));
   }
@@ -204,14 +204,14 @@
   buildCounterFilterPair--;
 }
 
-buildUnnamed1304() {
+buildUnnamed1291() {
   var o = new core.List<api.Query>();
   o.add(buildQuery());
   o.add(buildQuery());
   return o;
 }
 
-checkUnnamed1304(core.List<api.Query> o) {
+checkUnnamed1291(core.List<api.Query> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQuery(o[0]);
   checkQuery(o[1]);
@@ -223,7 +223,7 @@
   buildCounterListQueriesResponse++;
   if (buildCounterListQueriesResponse < 3) {
     o.kind = "foo";
-    o.queries = buildUnnamed1304();
+    o.queries = buildUnnamed1291();
   }
   buildCounterListQueriesResponse--;
   return o;
@@ -233,19 +233,19 @@
   buildCounterListQueriesResponse++;
   if (buildCounterListQueriesResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed1304(o.queries);
+    checkUnnamed1291(o.queries);
   }
   buildCounterListQueriesResponse--;
 }
 
-buildUnnamed1305() {
+buildUnnamed1292() {
   var o = new core.List<api.Report>();
   o.add(buildReport());
   o.add(buildReport());
   return o;
 }
 
-checkUnnamed1305(core.List<api.Report> o) {
+checkUnnamed1292(core.List<api.Report> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReport(o[0]);
   checkReport(o[1]);
@@ -257,7 +257,7 @@
   buildCounterListReportsResponse++;
   if (buildCounterListReportsResponse < 3) {
     o.kind = "foo";
-    o.reports = buildUnnamed1305();
+    o.reports = buildUnnamed1292();
   }
   buildCounterListReportsResponse--;
   return o;
@@ -267,45 +267,45 @@
   buildCounterListReportsResponse++;
   if (buildCounterListReportsResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed1305(o.reports);
+    checkUnnamed1292(o.reports);
   }
   buildCounterListReportsResponse--;
 }
 
-buildUnnamed1306() {
+buildUnnamed1293() {
   var o = new core.List<api.FilterPair>();
   o.add(buildFilterPair());
   o.add(buildFilterPair());
   return o;
 }
 
-checkUnnamed1306(core.List<api.FilterPair> o) {
+checkUnnamed1293(core.List<api.FilterPair> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFilterPair(o[0]);
   checkFilterPair(o[1]);
 }
 
-buildUnnamed1307() {
+buildUnnamed1294() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1307(core.List<core.String> o) {
+checkUnnamed1294(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1308() {
+buildUnnamed1295() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1308(core.List<core.String> o) {
+checkUnnamed1295(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -316,10 +316,10 @@
   var o = new api.Parameters();
   buildCounterParameters++;
   if (buildCounterParameters < 3) {
-    o.filters = buildUnnamed1306();
-    o.groupBys = buildUnnamed1307();
+    o.filters = buildUnnamed1293();
+    o.groupBys = buildUnnamed1294();
     o.includeInviteData = true;
-    o.metrics = buildUnnamed1308();
+    o.metrics = buildUnnamed1295();
     o.type = "foo";
   }
   buildCounterParameters--;
@@ -329,10 +329,10 @@
 checkParameters(api.Parameters o) {
   buildCounterParameters++;
   if (buildCounterParameters < 3) {
-    checkUnnamed1306(o.filters);
-    checkUnnamed1307(o.groupBys);
+    checkUnnamed1293(o.filters);
+    checkUnnamed1294(o.groupBys);
     unittest.expect(o.includeInviteData, unittest.isTrue);
-    checkUnnamed1308(o.metrics);
+    checkUnnamed1295(o.metrics);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterParameters--;
@@ -371,14 +371,14 @@
   buildCounterQuery--;
 }
 
-buildUnnamed1309() {
+buildUnnamed1296() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1309(core.List<core.String> o) {
+checkUnnamed1296(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -398,7 +398,7 @@
     o.reportCount = 42;
     o.running = true;
     o.sendNotification = true;
-    o.shareEmailAddress = buildUnnamed1309();
+    o.shareEmailAddress = buildUnnamed1296();
     o.title = "foo";
   }
   buildCounterQueryMetadata--;
@@ -418,7 +418,7 @@
     unittest.expect(o.reportCount, unittest.equals(42));
     unittest.expect(o.running, unittest.isTrue);
     unittest.expect(o.sendNotification, unittest.isTrue);
-    checkUnnamed1309(o.shareEmailAddress);
+    checkUnnamed1296(o.shareEmailAddress);
     unittest.expect(o.title, unittest.equals('foo'));
   }
   buildCounterQueryMetadata--;
@@ -562,14 +562,14 @@
   buildCounterReportStatus--;
 }
 
-buildUnnamed1310() {
+buildUnnamed1297() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1310(core.List<core.String> o) {
+checkUnnamed1297(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -583,7 +583,7 @@
     o.changed = true;
     o.entityId = "foo";
     o.entityName = "foo";
-    o.errors = buildUnnamed1310();
+    o.errors = buildUnnamed1297();
     o.persisted = true;
     o.rowNumber = 42;
   }
@@ -597,7 +597,7 @@
     unittest.expect(o.changed, unittest.isTrue);
     unittest.expect(o.entityId, unittest.equals('foo'));
     unittest.expect(o.entityName, unittest.equals('foo'));
-    checkUnnamed1310(o.errors);
+    checkUnnamed1297(o.errors);
     unittest.expect(o.persisted, unittest.isTrue);
     unittest.expect(o.rowNumber, unittest.equals(42));
   }
@@ -671,27 +671,27 @@
   buildCounterUploadLineItemsResponse--;
 }
 
-buildUnnamed1311() {
+buildUnnamed1298() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1311(core.List<core.String> o) {
+checkUnnamed1298(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1312() {
+buildUnnamed1299() {
   var o = new core.List<api.RowStatus>();
   o.add(buildRowStatus());
   o.add(buildRowStatus());
   return o;
 }
 
-checkUnnamed1312(core.List<api.RowStatus> o) {
+checkUnnamed1299(core.List<api.RowStatus> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRowStatus(o[0]);
   checkRowStatus(o[1]);
@@ -702,8 +702,8 @@
   var o = new api.UploadStatus();
   buildCounterUploadStatus++;
   if (buildCounterUploadStatus < 3) {
-    o.errors = buildUnnamed1311();
-    o.rowStatus = buildUnnamed1312();
+    o.errors = buildUnnamed1298();
+    o.rowStatus = buildUnnamed1299();
   }
   buildCounterUploadStatus--;
   return o;
@@ -712,8 +712,8 @@
 checkUploadStatus(api.UploadStatus o) {
   buildCounterUploadStatus++;
   if (buildCounterUploadStatus < 3) {
-    checkUnnamed1311(o.errors);
-    checkUnnamed1312(o.rowStatus);
+    checkUnnamed1298(o.errors);
+    checkUnnamed1299(o.rowStatus);
   }
   buildCounterUploadStatus--;
 }
@@ -893,6 +893,7 @@
       api.LineitemsResourceApi res =
           new api.DoubleclickbidmanagerApi(mock).lineitems;
       var arg_request = buildDownloadLineItemsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DownloadLineItemsRequest.fromJson(json);
         checkDownloadLineItemsRequest(obj);
@@ -929,6 +930,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -936,7 +938,7 @@
         var resp = convert.JSON.encode(buildDownloadLineItemsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.downloadlineitems(arg_request).then(
+      res.downloadlineitems(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.DownloadLineItemsResponse response) {
         checkDownloadLineItemsResponse(response);
       })));
@@ -947,6 +949,7 @@
       api.LineitemsResourceApi res =
           new api.DoubleclickbidmanagerApi(mock).lineitems;
       var arg_request = buildUploadLineItemsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UploadLineItemsRequest.fromJson(json);
         checkUploadLineItemsRequest(obj);
@@ -983,6 +986,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -991,7 +995,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .uploadlineitems(arg_request)
+          .uploadlineitems(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UploadLineItemsResponse response) {
         checkUploadLineItemsResponse(response);
       })));
@@ -1004,6 +1008,7 @@
       api.QueriesResourceApi res =
           new api.DoubleclickbidmanagerApi(mock).queries;
       var arg_request = buildQuery();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Query.fromJson(json);
         checkQuery(obj);
@@ -1040,6 +1045,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1048,7 +1054,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .createquery(arg_request)
+          .createquery(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Query response) {
         checkQuery(response);
       })));
@@ -1059,6 +1065,7 @@
       api.QueriesResourceApi res =
           new api.DoubleclickbidmanagerApi(mock).queries;
       var arg_queryId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1095,6 +1102,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1102,7 +1110,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.deletequery(arg_queryId).then(unittest.expectAsync1((_) {}));
+      res
+          .deletequery(arg_queryId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--getquery", () {
@@ -1110,6 +1120,7 @@
       api.QueriesResourceApi res =
           new api.DoubleclickbidmanagerApi(mock).queries;
       var arg_queryId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1146,6 +1157,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1154,7 +1166,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getquery(arg_queryId)
+          .getquery(arg_queryId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Query response) {
         checkQuery(response);
       })));
@@ -1164,6 +1176,7 @@
       var mock = new HttpServerMock();
       api.QueriesResourceApi res =
           new api.DoubleclickbidmanagerApi(mock).queries;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1197,6 +1210,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1205,7 +1219,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .listqueries()
+          .listqueries($fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListQueriesResponse response) {
         checkListQueriesResponse(response);
       })));
@@ -1217,6 +1231,7 @@
           new api.DoubleclickbidmanagerApi(mock).queries;
       var arg_request = buildRunQueryRequest();
       var arg_queryId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RunQueryRequest.fromJson(json);
         checkRunQueryRequest(obj);
@@ -1256,6 +1271,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1264,7 +1280,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .runquery(arg_request, arg_queryId)
+          .runquery(arg_request, arg_queryId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
   });
@@ -1275,6 +1291,7 @@
       api.ReportsResourceApi res =
           new api.DoubleclickbidmanagerApi(mock).reports;
       var arg_queryId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1317,6 +1334,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1325,7 +1343,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .listreports(arg_queryId)
+          .listreports(arg_queryId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListReportsResponse response) {
         checkListReportsResponse(response);
       })));
@@ -1337,6 +1355,7 @@
       var mock = new HttpServerMock();
       api.SdfResourceApi res = new api.DoubleclickbidmanagerApi(mock).sdf;
       var arg_request = buildDownloadRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DownloadRequest.fromJson(json);
         checkDownloadRequest(obj);
@@ -1373,6 +1392,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1381,7 +1401,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .download(arg_request)
+          .download(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DownloadResponse response) {
         checkDownloadResponse(response);
       })));
diff --git a/generated/googleapis/test/doubleclicksearch/v2_test.dart b/generated/googleapis/test/doubleclicksearch/v2_test.dart
index d1165c5..334c09f 100644
--- a/generated/googleapis/test/doubleclicksearch/v2_test.dart
+++ b/generated/googleapis/test/doubleclicksearch/v2_test.dart
@@ -79,27 +79,27 @@
   buildCounterAvailability--;
 }
 
-buildUnnamed1483() {
+buildUnnamed1470() {
   var o = new core.List<api.CustomDimension>();
   o.add(buildCustomDimension());
   o.add(buildCustomDimension());
   return o;
 }
 
-checkUnnamed1483(core.List<api.CustomDimension> o) {
+checkUnnamed1470(core.List<api.CustomDimension> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCustomDimension(o[0]);
   checkCustomDimension(o[1]);
 }
 
-buildUnnamed1484() {
+buildUnnamed1471() {
   var o = new core.List<api.CustomMetric>();
   o.add(buildCustomMetric());
   o.add(buildCustomMetric());
   return o;
 }
 
-checkUnnamed1484(core.List<api.CustomMetric> o) {
+checkUnnamed1471(core.List<api.CustomMetric> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCustomMetric(o[0]);
   checkCustomMetric(o[1]);
@@ -124,8 +124,8 @@
     o.countMillis = "foo";
     o.criterionId = "foo";
     o.currencyCode = "foo";
-    o.customDimension = buildUnnamed1483();
-    o.customMetric = buildUnnamed1484();
+    o.customDimension = buildUnnamed1470();
+    o.customMetric = buildUnnamed1471();
     o.deviceType = "foo";
     o.dsConversionId = "foo";
     o.engineAccountId = "foo";
@@ -165,8 +165,8 @@
     unittest.expect(o.countMillis, unittest.equals('foo'));
     unittest.expect(o.criterionId, unittest.equals('foo'));
     unittest.expect(o.currencyCode, unittest.equals('foo'));
-    checkUnnamed1483(o.customDimension);
-    checkUnnamed1484(o.customMetric);
+    checkUnnamed1470(o.customDimension);
+    checkUnnamed1471(o.customMetric);
     unittest.expect(o.deviceType, unittest.equals('foo'));
     unittest.expect(o.dsConversionId, unittest.equals('foo'));
     unittest.expect(o.engineAccountId, unittest.equals('foo'));
@@ -188,14 +188,14 @@
   buildCounterConversion--;
 }
 
-buildUnnamed1485() {
+buildUnnamed1472() {
   var o = new core.List<api.Conversion>();
   o.add(buildConversion());
   o.add(buildConversion());
   return o;
 }
 
-checkUnnamed1485(core.List<api.Conversion> o) {
+checkUnnamed1472(core.List<api.Conversion> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkConversion(o[0]);
   checkConversion(o[1]);
@@ -206,7 +206,7 @@
   var o = new api.ConversionList();
   buildCounterConversionList++;
   if (buildCounterConversionList < 3) {
-    o.conversion = buildUnnamed1485();
+    o.conversion = buildUnnamed1472();
     o.kind = "foo";
   }
   buildCounterConversionList--;
@@ -216,7 +216,7 @@
 checkConversionList(api.ConversionList o) {
   buildCounterConversionList++;
   if (buildCounterConversionList < 3) {
-    checkUnnamed1485(o.conversion);
+    checkUnnamed1472(o.conversion);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterConversionList--;
@@ -285,27 +285,27 @@
   buildCounterReportFiles--;
 }
 
-buildUnnamed1486() {
+buildUnnamed1473() {
   var o = new core.List<api.ReportFiles>();
   o.add(buildReportFiles());
   o.add(buildReportFiles());
   return o;
 }
 
-checkUnnamed1486(core.List<api.ReportFiles> o) {
+checkUnnamed1473(core.List<api.ReportFiles> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReportFiles(o[0]);
   checkReportFiles(o[1]);
 }
 
-buildUnnamed1487() {
+buildUnnamed1474() {
   var o = new core.List<api.ReportRow>();
   o.add(buildReportRow());
   o.add(buildReportRow());
   return o;
 }
 
-checkUnnamed1487(core.List<api.ReportRow> o) {
+checkUnnamed1474(core.List<api.ReportRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReportRow(o[0]);
   checkReportRow(o[1]);
@@ -316,13 +316,13 @@
   var o = new api.Report();
   buildCounterReport++;
   if (buildCounterReport < 3) {
-    o.files = buildUnnamed1486();
+    o.files = buildUnnamed1473();
     o.id = "foo";
     o.isReportReady = true;
     o.kind = "foo";
     o.request = buildReportRequest();
     o.rowCount = 42;
-    o.rows = buildUnnamed1487();
+    o.rows = buildUnnamed1474();
     o.statisticsCurrencyCode = "foo";
     o.statisticsTimeZone = "foo";
   }
@@ -333,13 +333,13 @@
 checkReport(api.Report o) {
   buildCounterReport++;
   if (buildCounterReport < 3) {
-    checkUnnamed1486(o.files);
+    checkUnnamed1473(o.files);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.isReportReady, unittest.isTrue);
     unittest.expect(o.kind, unittest.equals('foo'));
     checkReportRequest(o.request);
     unittest.expect(o.rowCount, unittest.equals(42));
-    checkUnnamed1487(o.rows);
+    checkUnnamed1474(o.rows);
     unittest.expect(o.statisticsCurrencyCode, unittest.equals('foo'));
     unittest.expect(o.statisticsTimeZone, unittest.equals('foo'));
   }
@@ -383,20 +383,20 @@
   buildCounterReportApiColumnSpec--;
 }
 
-buildUnnamed1488() {
+buildUnnamed1475() {
   var o = new core.List<api.ReportApiColumnSpec>();
   o.add(buildReportApiColumnSpec());
   o.add(buildReportApiColumnSpec());
   return o;
 }
 
-checkUnnamed1488(core.List<api.ReportApiColumnSpec> o) {
+checkUnnamed1475(core.List<api.ReportApiColumnSpec> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReportApiColumnSpec(o[0]);
   checkReportApiColumnSpec(o[1]);
 }
 
-buildUnnamed1489() {
+buildUnnamed1476() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -411,7 +411,7 @@
   return o;
 }
 
-checkUnnamed1489(core.List<core.Object> o) {
+checkUnnamed1476(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o[0]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -432,7 +432,7 @@
   if (buildCounterReportRequestFilters < 3) {
     o.column = buildReportApiColumnSpec();
     o.operator = "foo";
-    o.values = buildUnnamed1489();
+    o.values = buildUnnamed1476();
   }
   buildCounterReportRequestFilters--;
   return o;
@@ -443,19 +443,19 @@
   if (buildCounterReportRequestFilters < 3) {
     checkReportApiColumnSpec(o.column);
     unittest.expect(o.operator, unittest.equals('foo'));
-    checkUnnamed1489(o.values);
+    checkUnnamed1476(o.values);
   }
   buildCounterReportRequestFilters--;
 }
 
-buildUnnamed1490() {
+buildUnnamed1477() {
   var o = new core.List<api.ReportRequestFilters>();
   o.add(buildReportRequestFilters());
   o.add(buildReportRequestFilters());
   return o;
 }
 
-checkUnnamed1490(core.List<api.ReportRequestFilters> o) {
+checkUnnamed1477(core.List<api.ReportRequestFilters> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReportRequestFilters(o[0]);
   checkReportRequestFilters(o[1]);
@@ -482,14 +482,14 @@
   buildCounterReportRequestOrderBy--;
 }
 
-buildUnnamed1491() {
+buildUnnamed1478() {
   var o = new core.List<api.ReportRequestOrderBy>();
   o.add(buildReportRequestOrderBy());
   o.add(buildReportRequestOrderBy());
   return o;
 }
 
-checkUnnamed1491(core.List<api.ReportRequestOrderBy> o) {
+checkUnnamed1478(core.List<api.ReportRequestOrderBy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReportRequestOrderBy(o[0]);
   checkReportRequestOrderBy(o[1]);
@@ -559,13 +559,13 @@
   var o = new api.ReportRequest();
   buildCounterReportRequest++;
   if (buildCounterReportRequest < 3) {
-    o.columns = buildUnnamed1488();
+    o.columns = buildUnnamed1475();
     o.downloadFormat = "foo";
-    o.filters = buildUnnamed1490();
+    o.filters = buildUnnamed1477();
     o.includeDeletedEntities = true;
     o.includeRemovedEntities = true;
     o.maxRowsPerFile = 42;
-    o.orderBy = buildUnnamed1491();
+    o.orderBy = buildUnnamed1478();
     o.reportScope = buildReportRequestReportScope();
     o.reportType = "foo";
     o.rowCount = 42;
@@ -581,13 +581,13 @@
 checkReportRequest(api.ReportRequest o) {
   buildCounterReportRequest++;
   if (buildCounterReportRequest < 3) {
-    checkUnnamed1488(o.columns);
+    checkUnnamed1475(o.columns);
     unittest.expect(o.downloadFormat, unittest.equals('foo'));
-    checkUnnamed1490(o.filters);
+    checkUnnamed1477(o.filters);
     unittest.expect(o.includeDeletedEntities, unittest.isTrue);
     unittest.expect(o.includeRemovedEntities, unittest.isTrue);
     unittest.expect(o.maxRowsPerFile, unittest.equals(42));
-    checkUnnamed1491(o.orderBy);
+    checkUnnamed1478(o.orderBy);
     checkReportRequestReportScope(o.reportScope);
     unittest.expect(o.reportType, unittest.equals('foo'));
     unittest.expect(o.rowCount, unittest.equals(42));
@@ -651,14 +651,14 @@
   buildCounterSavedColumn--;
 }
 
-buildUnnamed1492() {
+buildUnnamed1479() {
   var o = new core.List<api.SavedColumn>();
   o.add(buildSavedColumn());
   o.add(buildSavedColumn());
   return o;
 }
 
-checkUnnamed1492(core.List<api.SavedColumn> o) {
+checkUnnamed1479(core.List<api.SavedColumn> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSavedColumn(o[0]);
   checkSavedColumn(o[1]);
@@ -669,7 +669,7 @@
   var o = new api.SavedColumnList();
   buildCounterSavedColumnList++;
   if (buildCounterSavedColumnList < 3) {
-    o.items = buildUnnamed1492();
+    o.items = buildUnnamed1479();
     o.kind = "foo";
   }
   buildCounterSavedColumnList--;
@@ -679,20 +679,20 @@
 checkSavedColumnList(api.SavedColumnList o) {
   buildCounterSavedColumnList++;
   if (buildCounterSavedColumnList < 3) {
-    checkUnnamed1492(o.items);
+    checkUnnamed1479(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterSavedColumnList--;
 }
 
-buildUnnamed1493() {
+buildUnnamed1480() {
   var o = new core.List<api.Availability>();
   o.add(buildAvailability());
   o.add(buildAvailability());
   return o;
 }
 
-checkUnnamed1493(core.List<api.Availability> o) {
+checkUnnamed1480(core.List<api.Availability> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAvailability(o[0]);
   checkAvailability(o[1]);
@@ -703,7 +703,7 @@
   var o = new api.UpdateAvailabilityRequest();
   buildCounterUpdateAvailabilityRequest++;
   if (buildCounterUpdateAvailabilityRequest < 3) {
-    o.availabilities = buildUnnamed1493();
+    o.availabilities = buildUnnamed1480();
   }
   buildCounterUpdateAvailabilityRequest--;
   return o;
@@ -712,19 +712,19 @@
 checkUpdateAvailabilityRequest(api.UpdateAvailabilityRequest o) {
   buildCounterUpdateAvailabilityRequest++;
   if (buildCounterUpdateAvailabilityRequest < 3) {
-    checkUnnamed1493(o.availabilities);
+    checkUnnamed1480(o.availabilities);
   }
   buildCounterUpdateAvailabilityRequest--;
 }
 
-buildUnnamed1494() {
+buildUnnamed1481() {
   var o = new core.List<api.Availability>();
   o.add(buildAvailability());
   o.add(buildAvailability());
   return o;
 }
 
-checkUnnamed1494(core.List<api.Availability> o) {
+checkUnnamed1481(core.List<api.Availability> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAvailability(o[0]);
   checkAvailability(o[1]);
@@ -735,7 +735,7 @@
   var o = new api.UpdateAvailabilityResponse();
   buildCounterUpdateAvailabilityResponse++;
   if (buildCounterUpdateAvailabilityResponse < 3) {
-    o.availabilities = buildUnnamed1494();
+    o.availabilities = buildUnnamed1481();
   }
   buildCounterUpdateAvailabilityResponse--;
   return o;
@@ -744,7 +744,7 @@
 checkUpdateAvailabilityResponse(api.UpdateAvailabilityResponse o) {
   buildCounterUpdateAvailabilityResponse++;
   if (buildCounterUpdateAvailabilityResponse < 3) {
-    checkUnnamed1494(o.availabilities);
+    checkUnnamed1481(o.availabilities);
   }
   buildCounterUpdateAvailabilityResponse--;
 }
@@ -910,6 +910,7 @@
       var arg_adId = "foo";
       var arg_campaignId = "foo";
       var arg_criterionId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -985,6 +986,7 @@
             queryMap["campaignId"].first, unittest.equals(arg_campaignId));
         unittest.expect(
             queryMap["criterionId"].first, unittest.equals(arg_criterionId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -998,7 +1000,8 @@
               adGroupId: arg_adGroupId,
               adId: arg_adId,
               campaignId: arg_campaignId,
-              criterionId: arg_criterionId)
+              criterionId: arg_criterionId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ConversionList response) {
         checkConversionList(response);
       })));
@@ -1009,6 +1012,7 @@
       api.ConversionResourceApi res =
           new api.DoubleclicksearchApi(mock).conversion;
       var arg_request = buildConversionList();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ConversionList.fromJson(json);
         checkConversionList(obj);
@@ -1045,6 +1049,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1053,7 +1058,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request)
+          .insert(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ConversionList response) {
         checkConversionList(response);
       })));
@@ -1071,6 +1076,7 @@
       var arg_rowCount = 42;
       var arg_startDate = 42;
       var arg_startRow = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ConversionList.fromJson(json);
         checkConversionList(obj);
@@ -1121,6 +1127,7 @@
             unittest.equals(arg_startDate));
         unittest.expect(core.int.parse(queryMap["startRow"].first),
             unittest.equals(arg_startRow));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1130,7 +1137,8 @@
       }), true);
       res
           .patch(arg_request, arg_advertiserId, arg_agencyId, arg_endDate,
-              arg_engineAccountId, arg_rowCount, arg_startDate, arg_startRow)
+              arg_engineAccountId, arg_rowCount, arg_startDate, arg_startRow,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ConversionList response) {
         checkConversionList(response);
       })));
@@ -1141,6 +1149,7 @@
       api.ConversionResourceApi res =
           new api.DoubleclicksearchApi(mock).conversion;
       var arg_request = buildConversionList();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ConversionList.fromJson(json);
         checkConversionList(obj);
@@ -1177,6 +1186,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1185,7 +1195,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request)
+          .update(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ConversionList response) {
         checkConversionList(response);
       })));
@@ -1196,6 +1206,7 @@
       api.ConversionResourceApi res =
           new api.DoubleclicksearchApi(mock).conversion;
       var arg_request = buildUpdateAvailabilityRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UpdateAvailabilityRequest.fromJson(json);
         checkUpdateAvailabilityRequest(obj);
@@ -1232,6 +1243,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1239,7 +1251,7 @@
         var resp = convert.JSON.encode(buildUpdateAvailabilityResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.updateAvailability(arg_request).then(
+      res.updateAvailability(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.UpdateAvailabilityResponse response) {
         checkUpdateAvailabilityResponse(response);
       })));
@@ -1251,6 +1263,7 @@
       var mock = new HttpServerMock();
       api.ReportsResourceApi res = new api.DoubleclicksearchApi(mock).reports;
       var arg_request_1 = buildReportRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ReportRequest.fromJson(json);
         checkReportRequest(obj);
@@ -1287,6 +1300,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1295,7 +1309,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .generate(arg_request_1)
+          .generate(arg_request_1, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Report response) {
         checkReport(response);
       })));
@@ -1305,6 +1319,7 @@
       var mock = new HttpServerMock();
       api.ReportsResourceApi res = new api.DoubleclicksearchApi(mock).reports;
       var arg_reportId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1341,6 +1356,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1348,7 +1364,9 @@
         var resp = convert.JSON.encode(buildReport());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_reportId).then(unittest.expectAsync1(((api.Report response) {
+      res
+          .get(arg_reportId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Report response) {
         checkReport(response);
       })));
     });
@@ -1361,6 +1379,7 @@
       api.ReportsResourceApi res = new api.DoubleclicksearchApi(mock).reports;
       var arg_reportId = "foo";
       var arg_reportFragment = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1406,6 +1425,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1414,7 +1434,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getFile(arg_reportId, arg_reportFragment)
+          .getFile(arg_reportId, arg_reportFragment, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -1422,6 +1442,7 @@
       var mock = new HttpServerMock();
       api.ReportsResourceApi res = new api.DoubleclicksearchApi(mock).reports;
       var arg_request_1 = buildReportRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ReportRequest.fromJson(json);
         checkReportRequest(obj);
@@ -1458,6 +1479,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1466,7 +1488,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .request(arg_request_1)
+          .request(arg_request_1, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Report response) {
         checkReport(response);
       })));
@@ -1480,6 +1502,7 @@
           new api.DoubleclicksearchApi(mock).savedColumns;
       var arg_agencyId = "foo";
       var arg_advertiserId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1531,6 +1554,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1539,7 +1563,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_agencyId, arg_advertiserId)
+          .list(arg_agencyId, arg_advertiserId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SavedColumnList response) {
         checkSavedColumnList(response);
       })));
diff --git a/generated/googleapis/test/drive/v2_test.dart b/generated/googleapis/test/drive/v2_test.dart
index efc879d..7ddeafb 100644
--- a/generated/googleapis/test/drive/v2_test.dart
+++ b/generated/googleapis/test/drive/v2_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed739() {
+buildUnnamed724() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed739(core.List<core.String> o) {
+checkUnnamed724(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -68,7 +68,7 @@
   var o = new api.AboutAdditionalRoleInfoRoleSets();
   buildCounterAboutAdditionalRoleInfoRoleSets++;
   if (buildCounterAboutAdditionalRoleInfoRoleSets < 3) {
-    o.additionalRoles = buildUnnamed739();
+    o.additionalRoles = buildUnnamed724();
     o.primaryRole = "foo";
   }
   buildCounterAboutAdditionalRoleInfoRoleSets--;
@@ -78,20 +78,20 @@
 checkAboutAdditionalRoleInfoRoleSets(api.AboutAdditionalRoleInfoRoleSets o) {
   buildCounterAboutAdditionalRoleInfoRoleSets++;
   if (buildCounterAboutAdditionalRoleInfoRoleSets < 3) {
-    checkUnnamed739(o.additionalRoles);
+    checkUnnamed724(o.additionalRoles);
     unittest.expect(o.primaryRole, unittest.equals('foo'));
   }
   buildCounterAboutAdditionalRoleInfoRoleSets--;
 }
 
-buildUnnamed740() {
+buildUnnamed725() {
   var o = new core.List<api.AboutAdditionalRoleInfoRoleSets>();
   o.add(buildAboutAdditionalRoleInfoRoleSets());
   o.add(buildAboutAdditionalRoleInfoRoleSets());
   return o;
 }
 
-checkUnnamed740(core.List<api.AboutAdditionalRoleInfoRoleSets> o) {
+checkUnnamed725(core.List<api.AboutAdditionalRoleInfoRoleSets> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAboutAdditionalRoleInfoRoleSets(o[0]);
   checkAboutAdditionalRoleInfoRoleSets(o[1]);
@@ -102,7 +102,7 @@
   var o = new api.AboutAdditionalRoleInfo();
   buildCounterAboutAdditionalRoleInfo++;
   if (buildCounterAboutAdditionalRoleInfo < 3) {
-    o.roleSets = buildUnnamed740();
+    o.roleSets = buildUnnamed725();
     o.type = "foo";
   }
   buildCounterAboutAdditionalRoleInfo--;
@@ -112,33 +112,33 @@
 checkAboutAdditionalRoleInfo(api.AboutAdditionalRoleInfo o) {
   buildCounterAboutAdditionalRoleInfo++;
   if (buildCounterAboutAdditionalRoleInfo < 3) {
-    checkUnnamed740(o.roleSets);
+    checkUnnamed725(o.roleSets);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterAboutAdditionalRoleInfo--;
 }
 
-buildUnnamed741() {
+buildUnnamed726() {
   var o = new core.List<api.AboutAdditionalRoleInfo>();
   o.add(buildAboutAdditionalRoleInfo());
   o.add(buildAboutAdditionalRoleInfo());
   return o;
 }
 
-checkUnnamed741(core.List<api.AboutAdditionalRoleInfo> o) {
+checkUnnamed726(core.List<api.AboutAdditionalRoleInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAboutAdditionalRoleInfo(o[0]);
   checkAboutAdditionalRoleInfo(o[1]);
 }
 
-buildUnnamed742() {
+buildUnnamed727() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed742(core.List<core.String> o) {
+checkUnnamed727(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -150,7 +150,7 @@
   buildCounterAboutExportFormats++;
   if (buildCounterAboutExportFormats < 3) {
     o.source = "foo";
-    o.targets = buildUnnamed742();
+    o.targets = buildUnnamed727();
   }
   buildCounterAboutExportFormats--;
   return o;
@@ -160,19 +160,19 @@
   buildCounterAboutExportFormats++;
   if (buildCounterAboutExportFormats < 3) {
     unittest.expect(o.source, unittest.equals('foo'));
-    checkUnnamed742(o.targets);
+    checkUnnamed727(o.targets);
   }
   buildCounterAboutExportFormats--;
 }
 
-buildUnnamed743() {
+buildUnnamed728() {
   var o = new core.List<api.AboutExportFormats>();
   o.add(buildAboutExportFormats());
   o.add(buildAboutExportFormats());
   return o;
 }
 
-checkUnnamed743(core.List<api.AboutExportFormats> o) {
+checkUnnamed728(core.List<api.AboutExportFormats> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAboutExportFormats(o[0]);
   checkAboutExportFormats(o[1]);
@@ -199,40 +199,40 @@
   buildCounterAboutFeatures--;
 }
 
-buildUnnamed744() {
+buildUnnamed729() {
   var o = new core.List<api.AboutFeatures>();
   o.add(buildAboutFeatures());
   o.add(buildAboutFeatures());
   return o;
 }
 
-checkUnnamed744(core.List<api.AboutFeatures> o) {
+checkUnnamed729(core.List<api.AboutFeatures> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAboutFeatures(o[0]);
   checkAboutFeatures(o[1]);
 }
 
-buildUnnamed745() {
+buildUnnamed730() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed745(core.List<core.String> o) {
+checkUnnamed730(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed746() {
+buildUnnamed731() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed746(core.List<core.String> o) {
+checkUnnamed731(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -244,7 +244,7 @@
   buildCounterAboutImportFormats++;
   if (buildCounterAboutImportFormats < 3) {
     o.source = "foo";
-    o.targets = buildUnnamed746();
+    o.targets = buildUnnamed731();
   }
   buildCounterAboutImportFormats--;
   return o;
@@ -254,19 +254,19 @@
   buildCounterAboutImportFormats++;
   if (buildCounterAboutImportFormats < 3) {
     unittest.expect(o.source, unittest.equals('foo'));
-    checkUnnamed746(o.targets);
+    checkUnnamed731(o.targets);
   }
   buildCounterAboutImportFormats--;
 }
 
-buildUnnamed747() {
+buildUnnamed732() {
   var o = new core.List<api.AboutImportFormats>();
   o.add(buildAboutImportFormats());
   o.add(buildAboutImportFormats());
   return o;
 }
 
-checkUnnamed747(core.List<api.AboutImportFormats> o) {
+checkUnnamed732(core.List<api.AboutImportFormats> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAboutImportFormats(o[0]);
   checkAboutImportFormats(o[1]);
@@ -293,14 +293,14 @@
   buildCounterAboutMaxUploadSizes--;
 }
 
-buildUnnamed748() {
+buildUnnamed733() {
   var o = new core.List<api.AboutMaxUploadSizes>();
   o.add(buildAboutMaxUploadSizes());
   o.add(buildAboutMaxUploadSizes());
   return o;
 }
 
-checkUnnamed748(core.List<api.AboutMaxUploadSizes> o) {
+checkUnnamed733(core.List<api.AboutMaxUploadSizes> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAboutMaxUploadSizes(o[0]);
   checkAboutMaxUploadSizes(o[1]);
@@ -327,14 +327,14 @@
   buildCounterAboutQuotaBytesByService--;
 }
 
-buildUnnamed749() {
+buildUnnamed734() {
   var o = new core.List<api.AboutQuotaBytesByService>();
   o.add(buildAboutQuotaBytesByService());
   o.add(buildAboutQuotaBytesByService());
   return o;
 }
 
-checkUnnamed749(core.List<api.AboutQuotaBytesByService> o) {
+checkUnnamed734(core.List<api.AboutQuotaBytesByService> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAboutQuotaBytesByService(o[0]);
   checkAboutQuotaBytesByService(o[1]);
@@ -363,14 +363,14 @@
   buildCounterAboutTeamDriveThemes--;
 }
 
-buildUnnamed750() {
+buildUnnamed735() {
   var o = new core.List<api.AboutTeamDriveThemes>();
   o.add(buildAboutTeamDriveThemes());
   o.add(buildAboutTeamDriveThemes());
   return o;
 }
 
-checkUnnamed750(core.List<api.AboutTeamDriveThemes> o) {
+checkUnnamed735(core.List<api.AboutTeamDriveThemes> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAboutTeamDriveThemes(o[0]);
   checkAboutTeamDriveThemes(o[1]);
@@ -381,21 +381,21 @@
   var o = new api.About();
   buildCounterAbout++;
   if (buildCounterAbout < 3) {
-    o.additionalRoleInfo = buildUnnamed741();
+    o.additionalRoleInfo = buildUnnamed726();
     o.domainSharingPolicy = "foo";
     o.etag = "foo";
-    o.exportFormats = buildUnnamed743();
-    o.features = buildUnnamed744();
-    o.folderColorPalette = buildUnnamed745();
-    o.importFormats = buildUnnamed747();
+    o.exportFormats = buildUnnamed728();
+    o.features = buildUnnamed729();
+    o.folderColorPalette = buildUnnamed730();
+    o.importFormats = buildUnnamed732();
     o.isCurrentAppInstalled = true;
     o.kind = "foo";
     o.languageCode = "foo";
     o.largestChangeId = "foo";
-    o.maxUploadSizes = buildUnnamed748();
+    o.maxUploadSizes = buildUnnamed733();
     o.name = "foo";
     o.permissionId = "foo";
-    o.quotaBytesByService = buildUnnamed749();
+    o.quotaBytesByService = buildUnnamed734();
     o.quotaBytesTotal = "foo";
     o.quotaBytesUsed = "foo";
     o.quotaBytesUsedAggregate = "foo";
@@ -404,7 +404,7 @@
     o.remainingChangeIds = "foo";
     o.rootFolderId = "foo";
     o.selfLink = "foo";
-    o.teamDriveThemes = buildUnnamed750();
+    o.teamDriveThemes = buildUnnamed735();
     o.user = buildUser();
   }
   buildCounterAbout--;
@@ -414,21 +414,21 @@
 checkAbout(api.About o) {
   buildCounterAbout++;
   if (buildCounterAbout < 3) {
-    checkUnnamed741(o.additionalRoleInfo);
+    checkUnnamed726(o.additionalRoleInfo);
     unittest.expect(o.domainSharingPolicy, unittest.equals('foo'));
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed743(o.exportFormats);
-    checkUnnamed744(o.features);
-    checkUnnamed745(o.folderColorPalette);
-    checkUnnamed747(o.importFormats);
+    checkUnnamed728(o.exportFormats);
+    checkUnnamed729(o.features);
+    checkUnnamed730(o.folderColorPalette);
+    checkUnnamed732(o.importFormats);
     unittest.expect(o.isCurrentAppInstalled, unittest.isTrue);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.languageCode, unittest.equals('foo'));
     unittest.expect(o.largestChangeId, unittest.equals('foo'));
-    checkUnnamed748(o.maxUploadSizes);
+    checkUnnamed733(o.maxUploadSizes);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.permissionId, unittest.equals('foo'));
-    checkUnnamed749(o.quotaBytesByService);
+    checkUnnamed734(o.quotaBytesByService);
     unittest.expect(o.quotaBytesTotal, unittest.equals('foo'));
     unittest.expect(o.quotaBytesUsed, unittest.equals('foo'));
     unittest.expect(o.quotaBytesUsedAggregate, unittest.equals('foo'));
@@ -437,7 +437,7 @@
     unittest.expect(o.remainingChangeIds, unittest.equals('foo'));
     unittest.expect(o.rootFolderId, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
-    checkUnnamed750(o.teamDriveThemes);
+    checkUnnamed735(o.teamDriveThemes);
     checkUser(o.user);
   }
   buildCounterAbout--;
@@ -466,66 +466,66 @@
   buildCounterAppIcons--;
 }
 
-buildUnnamed751() {
+buildUnnamed736() {
   var o = new core.List<api.AppIcons>();
   o.add(buildAppIcons());
   o.add(buildAppIcons());
   return o;
 }
 
-checkUnnamed751(core.List<api.AppIcons> o) {
+checkUnnamed736(core.List<api.AppIcons> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAppIcons(o[0]);
   checkAppIcons(o[1]);
 }
 
-buildUnnamed752() {
+buildUnnamed737() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed752(core.List<core.String> o) {
+checkUnnamed737(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed753() {
+buildUnnamed738() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed753(core.List<core.String> o) {
+checkUnnamed738(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed754() {
+buildUnnamed739() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed754(core.List<core.String> o) {
+checkUnnamed739(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed755() {
+buildUnnamed740() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed755(core.List<core.String> o) {
+checkUnnamed740(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -540,7 +540,7 @@
     o.createInFolderTemplate = "foo";
     o.createUrl = "foo";
     o.hasDriveWideScope = true;
-    o.icons = buildUnnamed751();
+    o.icons = buildUnnamed736();
     o.id = "foo";
     o.installed = true;
     o.kind = "foo";
@@ -548,12 +548,12 @@
     o.name = "foo";
     o.objectType = "foo";
     o.openUrlTemplate = "foo";
-    o.primaryFileExtensions = buildUnnamed752();
-    o.primaryMimeTypes = buildUnnamed753();
+    o.primaryFileExtensions = buildUnnamed737();
+    o.primaryMimeTypes = buildUnnamed738();
     o.productId = "foo";
     o.productUrl = "foo";
-    o.secondaryFileExtensions = buildUnnamed754();
-    o.secondaryMimeTypes = buildUnnamed755();
+    o.secondaryFileExtensions = buildUnnamed739();
+    o.secondaryMimeTypes = buildUnnamed740();
     o.shortDescription = "foo";
     o.supportsCreate = true;
     o.supportsImport = true;
@@ -572,7 +572,7 @@
     unittest.expect(o.createInFolderTemplate, unittest.equals('foo'));
     unittest.expect(o.createUrl, unittest.equals('foo'));
     unittest.expect(o.hasDriveWideScope, unittest.isTrue);
-    checkUnnamed751(o.icons);
+    checkUnnamed736(o.icons);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.installed, unittest.isTrue);
     unittest.expect(o.kind, unittest.equals('foo'));
@@ -580,12 +580,12 @@
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.objectType, unittest.equals('foo'));
     unittest.expect(o.openUrlTemplate, unittest.equals('foo'));
-    checkUnnamed752(o.primaryFileExtensions);
-    checkUnnamed753(o.primaryMimeTypes);
+    checkUnnamed737(o.primaryFileExtensions);
+    checkUnnamed738(o.primaryMimeTypes);
     unittest.expect(o.productId, unittest.equals('foo'));
     unittest.expect(o.productUrl, unittest.equals('foo'));
-    checkUnnamed754(o.secondaryFileExtensions);
-    checkUnnamed755(o.secondaryMimeTypes);
+    checkUnnamed739(o.secondaryFileExtensions);
+    checkUnnamed740(o.secondaryMimeTypes);
     unittest.expect(o.shortDescription, unittest.equals('foo'));
     unittest.expect(o.supportsCreate, unittest.isTrue);
     unittest.expect(o.supportsImport, unittest.isTrue);
@@ -596,27 +596,27 @@
   buildCounterApp--;
 }
 
-buildUnnamed756() {
+buildUnnamed741() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed756(core.List<core.String> o) {
+checkUnnamed741(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed757() {
+buildUnnamed742() {
   var o = new core.List<api.App>();
   o.add(buildApp());
   o.add(buildApp());
   return o;
 }
 
-checkUnnamed757(core.List<api.App> o) {
+checkUnnamed742(core.List<api.App> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApp(o[0]);
   checkApp(o[1]);
@@ -627,9 +627,9 @@
   var o = new api.AppList();
   buildCounterAppList++;
   if (buildCounterAppList < 3) {
-    o.defaultAppIds = buildUnnamed756();
+    o.defaultAppIds = buildUnnamed741();
     o.etag = "foo";
-    o.items = buildUnnamed757();
+    o.items = buildUnnamed742();
     o.kind = "foo";
     o.selfLink = "foo";
   }
@@ -640,9 +640,9 @@
 checkAppList(api.AppList o) {
   buildCounterAppList++;
   if (buildCounterAppList < 3) {
-    checkUnnamed756(o.defaultAppIds);
+    checkUnnamed741(o.defaultAppIds);
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed757(o.items);
+    checkUnnamed742(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
   }
@@ -687,14 +687,14 @@
   buildCounterChange--;
 }
 
-buildUnnamed758() {
+buildUnnamed743() {
   var o = new core.List<api.Change>();
   o.add(buildChange());
   o.add(buildChange());
   return o;
 }
 
-checkUnnamed758(core.List<api.Change> o) {
+checkUnnamed743(core.List<api.Change> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkChange(o[0]);
   checkChange(o[1]);
@@ -706,7 +706,7 @@
   buildCounterChangeList++;
   if (buildCounterChangeList < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed758();
+    o.items = buildUnnamed743();
     o.kind = "foo";
     o.largestChangeId = "foo";
     o.newStartPageToken = "foo";
@@ -722,7 +722,7 @@
   buildCounterChangeList++;
   if (buildCounterChangeList < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed758(o.items);
+    checkUnnamed743(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.largestChangeId, unittest.equals('foo'));
     unittest.expect(o.newStartPageToken, unittest.equals('foo'));
@@ -733,14 +733,14 @@
   buildCounterChangeList--;
 }
 
-buildUnnamed759() {
+buildUnnamed744() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed759(core.Map<core.String, core.String> o) {
+checkUnnamed744(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -755,7 +755,7 @@
     o.expiration = "foo";
     o.id = "foo";
     o.kind = "foo";
-    o.params = buildUnnamed759();
+    o.params = buildUnnamed744();
     o.payload = true;
     o.resourceId = "foo";
     o.resourceUri = "foo";
@@ -773,7 +773,7 @@
     unittest.expect(o.expiration, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed759(o.params);
+    checkUnnamed744(o.params);
     unittest.expect(o.payload, unittest.isTrue);
     unittest.expect(o.resourceId, unittest.equals('foo'));
     unittest.expect(o.resourceUri, unittest.equals('foo'));
@@ -783,14 +783,14 @@
   buildCounterChannel--;
 }
 
-buildUnnamed760() {
+buildUnnamed745() {
   var o = new core.List<api.ChildReference>();
   o.add(buildChildReference());
   o.add(buildChildReference());
   return o;
 }
 
-checkUnnamed760(core.List<api.ChildReference> o) {
+checkUnnamed745(core.List<api.ChildReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkChildReference(o[0]);
   checkChildReference(o[1]);
@@ -802,7 +802,7 @@
   buildCounterChildList++;
   if (buildCounterChildList < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed760();
+    o.items = buildUnnamed745();
     o.kind = "foo";
     o.nextLink = "foo";
     o.nextPageToken = "foo";
@@ -816,7 +816,7 @@
   buildCounterChildList++;
   if (buildCounterChildList < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed760(o.items);
+    checkUnnamed745(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
@@ -871,14 +871,14 @@
   buildCounterCommentContext--;
 }
 
-buildUnnamed761() {
+buildUnnamed746() {
   var o = new core.List<api.CommentReply>();
   o.add(buildCommentReply());
   o.add(buildCommentReply());
   return o;
 }
 
-checkUnnamed761(core.List<api.CommentReply> o) {
+checkUnnamed746(core.List<api.CommentReply> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCommentReply(o[0]);
   checkCommentReply(o[1]);
@@ -901,7 +901,7 @@
     o.htmlContent = "foo";
     o.kind = "foo";
     o.modifiedDate = core.DateTime.parse("2002-02-27T14:01:02");
-    o.replies = buildUnnamed761();
+    o.replies = buildUnnamed746();
     o.selfLink = "foo";
     o.status = "foo";
   }
@@ -926,21 +926,21 @@
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.modifiedDate,
         unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
-    checkUnnamed761(o.replies);
+    checkUnnamed746(o.replies);
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals('foo'));
   }
   buildCounterComment--;
 }
 
-buildUnnamed762() {
+buildUnnamed747() {
   var o = new core.List<api.Comment>();
   o.add(buildComment());
   o.add(buildComment());
   return o;
 }
 
-checkUnnamed762(core.List<api.Comment> o) {
+checkUnnamed747(core.List<api.Comment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkComment(o[0]);
   checkComment(o[1]);
@@ -951,7 +951,7 @@
   var o = new api.CommentList();
   buildCounterCommentList++;
   if (buildCounterCommentList < 3) {
-    o.items = buildUnnamed762();
+    o.items = buildUnnamed747();
     o.kind = "foo";
     o.nextLink = "foo";
     o.nextPageToken = "foo";
@@ -964,7 +964,7 @@
 checkCommentList(api.CommentList o) {
   buildCounterCommentList++;
   if (buildCounterCommentList < 3) {
-    checkUnnamed762(o.items);
+    checkUnnamed747(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
@@ -1010,14 +1010,14 @@
   buildCounterCommentReply--;
 }
 
-buildUnnamed763() {
+buildUnnamed748() {
   var o = new core.List<api.CommentReply>();
   o.add(buildCommentReply());
   o.add(buildCommentReply());
   return o;
 }
 
-checkUnnamed763(core.List<api.CommentReply> o) {
+checkUnnamed748(core.List<api.CommentReply> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCommentReply(o[0]);
   checkCommentReply(o[1]);
@@ -1028,7 +1028,7 @@
   var o = new api.CommentReplyList();
   buildCounterCommentReplyList++;
   if (buildCounterCommentReplyList < 3) {
-    o.items = buildUnnamed763();
+    o.items = buildUnnamed748();
     o.kind = "foo";
     o.nextLink = "foo";
     o.nextPageToken = "foo";
@@ -1041,7 +1041,7 @@
 checkCommentReplyList(api.CommentReplyList o) {
   buildCounterCommentReplyList++;
   if (buildCounterCommentReplyList < 3) {
-    checkUnnamed763(o.items);
+    checkUnnamed748(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
@@ -1101,14 +1101,14 @@
   buildCounterFileCapabilities--;
 }
 
-buildUnnamed764() {
+buildUnnamed749() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed764(core.Map<core.String, core.String> o) {
+checkUnnamed749(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1244,105 +1244,105 @@
   buildCounterFileLabels--;
 }
 
-buildUnnamed765() {
+buildUnnamed750() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed765(core.Map<core.String, core.String> o) {
+checkUnnamed750(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed766() {
+buildUnnamed751() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed766(core.List<core.String> o) {
+checkUnnamed751(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed767() {
+buildUnnamed752() {
   var o = new core.List<api.User>();
   o.add(buildUser());
   o.add(buildUser());
   return o;
 }
 
-checkUnnamed767(core.List<api.User> o) {
+checkUnnamed752(core.List<api.User> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUser(o[0]);
   checkUser(o[1]);
 }
 
-buildUnnamed768() {
+buildUnnamed753() {
   var o = new core.List<api.ParentReference>();
   o.add(buildParentReference());
   o.add(buildParentReference());
   return o;
 }
 
-checkUnnamed768(core.List<api.ParentReference> o) {
+checkUnnamed753(core.List<api.ParentReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkParentReference(o[0]);
   checkParentReference(o[1]);
 }
 
-buildUnnamed769() {
+buildUnnamed754() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed769(core.List<core.String> o) {
+checkUnnamed754(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed770() {
+buildUnnamed755() {
   var o = new core.List<api.Permission>();
   o.add(buildPermission());
   o.add(buildPermission());
   return o;
 }
 
-checkUnnamed770(core.List<api.Permission> o) {
+checkUnnamed755(core.List<api.Permission> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPermission(o[0]);
   checkPermission(o[1]);
 }
 
-buildUnnamed771() {
+buildUnnamed756() {
   var o = new core.List<api.Property>();
   o.add(buildProperty());
   o.add(buildProperty());
   return o;
 }
 
-checkUnnamed771(core.List<api.Property> o) {
+checkUnnamed756(core.List<api.Property> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProperty(o[0]);
   checkProperty(o[1]);
 }
 
-buildUnnamed772() {
+buildUnnamed757() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed772(core.List<core.String> o) {
+checkUnnamed757(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1411,7 +1411,7 @@
     o.embedLink = "foo";
     o.etag = "foo";
     o.explicitlyTrashed = true;
-    o.exportLinks = buildUnnamed764();
+    o.exportLinks = buildUnnamed749();
     o.fileExtension = "foo";
     o.fileSize = "foo";
     o.folderColorRgb = "foo";
@@ -1434,22 +1434,22 @@
     o.mimeType = "foo";
     o.modifiedByMeDate = core.DateTime.parse("2002-02-27T14:01:02");
     o.modifiedDate = core.DateTime.parse("2002-02-27T14:01:02");
-    o.openWithLinks = buildUnnamed765();
+    o.openWithLinks = buildUnnamed750();
     o.originalFilename = "foo";
     o.ownedByMe = true;
-    o.ownerNames = buildUnnamed766();
-    o.owners = buildUnnamed767();
-    o.parents = buildUnnamed768();
-    o.permissionIds = buildUnnamed769();
-    o.permissions = buildUnnamed770();
-    o.properties = buildUnnamed771();
+    o.ownerNames = buildUnnamed751();
+    o.owners = buildUnnamed752();
+    o.parents = buildUnnamed753();
+    o.permissionIds = buildUnnamed754();
+    o.permissions = buildUnnamed755();
+    o.properties = buildUnnamed756();
     o.quotaBytesUsed = "foo";
     o.selfLink = "foo";
     o.shareable = true;
     o.shared = true;
     o.sharedWithMeDate = core.DateTime.parse("2002-02-27T14:01:02");
     o.sharingUser = buildUser();
-    o.spaces = buildUnnamed772();
+    o.spaces = buildUnnamed757();
     o.teamDriveId = "foo";
     o.thumbnail = buildFileThumbnail();
     o.thumbnailLink = "foo";
@@ -1486,7 +1486,7 @@
     unittest.expect(o.embedLink, unittest.equals('foo'));
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.explicitlyTrashed, unittest.isTrue);
-    checkUnnamed764(o.exportLinks);
+    checkUnnamed749(o.exportLinks);
     unittest.expect(o.fileExtension, unittest.equals('foo'));
     unittest.expect(o.fileSize, unittest.equals('foo'));
     unittest.expect(o.folderColorRgb, unittest.equals('foo'));
@@ -1513,15 +1513,15 @@
         unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
     unittest.expect(o.modifiedDate,
         unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
-    checkUnnamed765(o.openWithLinks);
+    checkUnnamed750(o.openWithLinks);
     unittest.expect(o.originalFilename, unittest.equals('foo'));
     unittest.expect(o.ownedByMe, unittest.isTrue);
-    checkUnnamed766(o.ownerNames);
-    checkUnnamed767(o.owners);
-    checkUnnamed768(o.parents);
-    checkUnnamed769(o.permissionIds);
-    checkUnnamed770(o.permissions);
-    checkUnnamed771(o.properties);
+    checkUnnamed751(o.ownerNames);
+    checkUnnamed752(o.owners);
+    checkUnnamed753(o.parents);
+    checkUnnamed754(o.permissionIds);
+    checkUnnamed755(o.permissions);
+    checkUnnamed756(o.properties);
     unittest.expect(o.quotaBytesUsed, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.shareable, unittest.isTrue);
@@ -1529,7 +1529,7 @@
     unittest.expect(o.sharedWithMeDate,
         unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
     checkUser(o.sharingUser);
-    checkUnnamed772(o.spaces);
+    checkUnnamed757(o.spaces);
     unittest.expect(o.teamDriveId, unittest.equals('foo'));
     checkFileThumbnail(o.thumbnail);
     unittest.expect(o.thumbnailLink, unittest.equals('foo'));
@@ -1548,14 +1548,14 @@
   buildCounterFile--;
 }
 
-buildUnnamed773() {
+buildUnnamed758() {
   var o = new core.List<api.File>();
   o.add(buildFile());
   o.add(buildFile());
   return o;
 }
 
-checkUnnamed773(core.List<api.File> o) {
+checkUnnamed758(core.List<api.File> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFile(o[0]);
   checkFile(o[1]);
@@ -1568,7 +1568,7 @@
   if (buildCounterFileList < 3) {
     o.etag = "foo";
     o.incompleteSearch = true;
-    o.items = buildUnnamed773();
+    o.items = buildUnnamed758();
     o.kind = "foo";
     o.nextLink = "foo";
     o.nextPageToken = "foo";
@@ -1583,7 +1583,7 @@
   if (buildCounterFileList < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.incompleteSearch, unittest.isTrue);
-    checkUnnamed773(o.items);
+    checkUnnamed758(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
@@ -1592,14 +1592,14 @@
   buildCounterFileList--;
 }
 
-buildUnnamed774() {
+buildUnnamed759() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed774(core.List<core.String> o) {
+checkUnnamed759(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1610,7 +1610,7 @@
   var o = new api.GeneratedIds();
   buildCounterGeneratedIds++;
   if (buildCounterGeneratedIds < 3) {
-    o.ids = buildUnnamed774();
+    o.ids = buildUnnamed759();
     o.kind = "foo";
     o.space = "foo";
   }
@@ -1621,21 +1621,21 @@
 checkGeneratedIds(api.GeneratedIds o) {
   buildCounterGeneratedIds++;
   if (buildCounterGeneratedIds < 3) {
-    checkUnnamed774(o.ids);
+    checkUnnamed759(o.ids);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.space, unittest.equals('foo'));
   }
   buildCounterGeneratedIds--;
 }
 
-buildUnnamed775() {
+buildUnnamed760() {
   var o = new core.List<api.ParentReference>();
   o.add(buildParentReference());
   o.add(buildParentReference());
   return o;
 }
 
-checkUnnamed775(core.List<api.ParentReference> o) {
+checkUnnamed760(core.List<api.ParentReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkParentReference(o[0]);
   checkParentReference(o[1]);
@@ -1647,7 +1647,7 @@
   buildCounterParentList++;
   if (buildCounterParentList < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed775();
+    o.items = buildUnnamed760();
     o.kind = "foo";
     o.selfLink = "foo";
   }
@@ -1659,7 +1659,7 @@
   buildCounterParentList++;
   if (buildCounterParentList < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed775(o.items);
+    checkUnnamed760(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
   }
@@ -1693,27 +1693,27 @@
   buildCounterParentReference--;
 }
 
-buildUnnamed776() {
+buildUnnamed761() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed776(core.List<core.String> o) {
+checkUnnamed761(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed777() {
+buildUnnamed762() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed777(core.List<core.String> o) {
+checkUnnamed762(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1724,7 +1724,7 @@
   var o = new api.PermissionTeamDrivePermissionDetails();
   buildCounterPermissionTeamDrivePermissionDetails++;
   if (buildCounterPermissionTeamDrivePermissionDetails < 3) {
-    o.additionalRoles = buildUnnamed777();
+    o.additionalRoles = buildUnnamed762();
     o.inherited = true;
     o.inheritedFrom = "foo";
     o.role = "foo";
@@ -1738,7 +1738,7 @@
     api.PermissionTeamDrivePermissionDetails o) {
   buildCounterPermissionTeamDrivePermissionDetails++;
   if (buildCounterPermissionTeamDrivePermissionDetails < 3) {
-    checkUnnamed777(o.additionalRoles);
+    checkUnnamed762(o.additionalRoles);
     unittest.expect(o.inherited, unittest.isTrue);
     unittest.expect(o.inheritedFrom, unittest.equals('foo'));
     unittest.expect(o.role, unittest.equals('foo'));
@@ -1747,14 +1747,14 @@
   buildCounterPermissionTeamDrivePermissionDetails--;
 }
 
-buildUnnamed778() {
+buildUnnamed763() {
   var o = new core.List<api.PermissionTeamDrivePermissionDetails>();
   o.add(buildPermissionTeamDrivePermissionDetails());
   o.add(buildPermissionTeamDrivePermissionDetails());
   return o;
 }
 
-checkUnnamed778(core.List<api.PermissionTeamDrivePermissionDetails> o) {
+checkUnnamed763(core.List<api.PermissionTeamDrivePermissionDetails> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPermissionTeamDrivePermissionDetails(o[0]);
   checkPermissionTeamDrivePermissionDetails(o[1]);
@@ -1765,7 +1765,7 @@
   var o = new api.Permission();
   buildCounterPermission++;
   if (buildCounterPermission < 3) {
-    o.additionalRoles = buildUnnamed776();
+    o.additionalRoles = buildUnnamed761();
     o.authKey = "foo";
     o.deleted = true;
     o.domain = "foo";
@@ -1778,7 +1778,7 @@
     o.photoLink = "foo";
     o.role = "foo";
     o.selfLink = "foo";
-    o.teamDrivePermissionDetails = buildUnnamed778();
+    o.teamDrivePermissionDetails = buildUnnamed763();
     o.type = "foo";
     o.value = "foo";
     o.withLink = true;
@@ -1790,7 +1790,7 @@
 checkPermission(api.Permission o) {
   buildCounterPermission++;
   if (buildCounterPermission < 3) {
-    checkUnnamed776(o.additionalRoles);
+    checkUnnamed761(o.additionalRoles);
     unittest.expect(o.authKey, unittest.equals('foo'));
     unittest.expect(o.deleted, unittest.isTrue);
     unittest.expect(o.domain, unittest.equals('foo'));
@@ -1804,7 +1804,7 @@
     unittest.expect(o.photoLink, unittest.equals('foo'));
     unittest.expect(o.role, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
-    checkUnnamed778(o.teamDrivePermissionDetails);
+    checkUnnamed763(o.teamDrivePermissionDetails);
     unittest.expect(o.type, unittest.equals('foo'));
     unittest.expect(o.value, unittest.equals('foo'));
     unittest.expect(o.withLink, unittest.isTrue);
@@ -1833,14 +1833,14 @@
   buildCounterPermissionId--;
 }
 
-buildUnnamed779() {
+buildUnnamed764() {
   var o = new core.List<api.Permission>();
   o.add(buildPermission());
   o.add(buildPermission());
   return o;
 }
 
-checkUnnamed779(core.List<api.Permission> o) {
+checkUnnamed764(core.List<api.Permission> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPermission(o[0]);
   checkPermission(o[1]);
@@ -1852,7 +1852,7 @@
   buildCounterPermissionList++;
   if (buildCounterPermissionList < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed779();
+    o.items = buildUnnamed764();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -1865,7 +1865,7 @@
   buildCounterPermissionList++;
   if (buildCounterPermissionList < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed779(o.items);
+    checkUnnamed764(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -1902,14 +1902,14 @@
   buildCounterProperty--;
 }
 
-buildUnnamed780() {
+buildUnnamed765() {
   var o = new core.List<api.Property>();
   o.add(buildProperty());
   o.add(buildProperty());
   return o;
 }
 
-checkUnnamed780(core.List<api.Property> o) {
+checkUnnamed765(core.List<api.Property> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProperty(o[0]);
   checkProperty(o[1]);
@@ -1921,7 +1921,7 @@
   buildCounterPropertyList++;
   if (buildCounterPropertyList < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed780();
+    o.items = buildUnnamed765();
     o.kind = "foo";
     o.selfLink = "foo";
   }
@@ -1933,21 +1933,21 @@
   buildCounterPropertyList++;
   if (buildCounterPropertyList < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed780(o.items);
+    checkUnnamed765(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
   }
   buildCounterPropertyList--;
 }
 
-buildUnnamed781() {
+buildUnnamed766() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed781(core.Map<core.String, core.String> o) {
+checkUnnamed766(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1960,7 +1960,7 @@
   if (buildCounterRevision < 3) {
     o.downloadUrl = "foo";
     o.etag = "foo";
-    o.exportLinks = buildUnnamed781();
+    o.exportLinks = buildUnnamed766();
     o.fileSize = "foo";
     o.id = "foo";
     o.kind = "foo";
@@ -1986,7 +1986,7 @@
   if (buildCounterRevision < 3) {
     unittest.expect(o.downloadUrl, unittest.equals('foo'));
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed781(o.exportLinks);
+    checkUnnamed766(o.exportLinks);
     unittest.expect(o.fileSize, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
@@ -2007,14 +2007,14 @@
   buildCounterRevision--;
 }
 
-buildUnnamed782() {
+buildUnnamed767() {
   var o = new core.List<api.Revision>();
   o.add(buildRevision());
   o.add(buildRevision());
   return o;
 }
 
-checkUnnamed782(core.List<api.Revision> o) {
+checkUnnamed767(core.List<api.Revision> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRevision(o[0]);
   checkRevision(o[1]);
@@ -2026,7 +2026,7 @@
   buildCounterRevisionList++;
   if (buildCounterRevisionList < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed782();
+    o.items = buildUnnamed767();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -2039,7 +2039,7 @@
   buildCounterRevisionList++;
   if (buildCounterRevisionList < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed782(o.items);
+    checkUnnamed767(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -2171,14 +2171,14 @@
   buildCounterTeamDrive--;
 }
 
-buildUnnamed783() {
+buildUnnamed768() {
   var o = new core.List<api.TeamDrive>();
   o.add(buildTeamDrive());
   o.add(buildTeamDrive());
   return o;
 }
 
-checkUnnamed783(core.List<api.TeamDrive> o) {
+checkUnnamed768(core.List<api.TeamDrive> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTeamDrive(o[0]);
   checkTeamDrive(o[1]);
@@ -2189,7 +2189,7 @@
   var o = new api.TeamDriveList();
   buildCounterTeamDriveList++;
   if (buildCounterTeamDriveList < 3) {
-    o.items = buildUnnamed783();
+    o.items = buildUnnamed768();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -2200,7 +2200,7 @@
 checkTeamDriveList(api.TeamDriveList o) {
   buildCounterTeamDriveList++;
   if (buildCounterTeamDriveList < 3) {
-    checkUnnamed783(o.items);
+    checkUnnamed768(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -2656,6 +2656,7 @@
       var arg_includeSubscribed = true;
       var arg_maxChangeIdCount = "foo";
       var arg_startChangeId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2695,6 +2696,7 @@
             unittest.equals(arg_maxChangeIdCount));
         unittest.expect(queryMap["startChangeId"].first,
             unittest.equals(arg_startChangeId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2706,7 +2708,8 @@
           .get(
               includeSubscribed: arg_includeSubscribed,
               maxChangeIdCount: arg_maxChangeIdCount,
-              startChangeId: arg_startChangeId)
+              startChangeId: arg_startChangeId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.About response) {
         checkAbout(response);
       })));
@@ -2718,6 +2721,7 @@
       var mock = new HttpServerMock();
       api.AppsResourceApi res = new api.DriveApi(mock).apps;
       var arg_appId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2754,6 +2758,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2761,7 +2766,9 @@
         var resp = convert.JSON.encode(buildApp());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_appId).then(unittest.expectAsync1(((api.App response) {
+      res
+          .get(arg_appId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.App response) {
         checkApp(response);
       })));
     });
@@ -2772,6 +2779,7 @@
       var arg_appFilterExtensions = "foo";
       var arg_appFilterMimeTypes = "foo";
       var arg_languageCode = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2811,6 +2819,7 @@
             unittest.equals(arg_appFilterMimeTypes));
         unittest.expect(
             queryMap["languageCode"].first, unittest.equals(arg_languageCode));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2822,7 +2831,8 @@
           .list(
               appFilterExtensions: arg_appFilterExtensions,
               appFilterMimeTypes: arg_appFilterMimeTypes,
-              languageCode: arg_languageCode)
+              languageCode: arg_languageCode,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AppList response) {
         checkAppList(response);
       })));
@@ -2836,6 +2846,7 @@
       var arg_changeId = "foo";
       var arg_supportsTeamDrives = true;
       var arg_teamDriveId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2876,6 +2887,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(
             queryMap["teamDriveId"].first, unittest.equals(arg_teamDriveId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2886,7 +2898,8 @@
       res
           .get(arg_changeId,
               supportsTeamDrives: arg_supportsTeamDrives,
-              teamDriveId: arg_teamDriveId)
+              teamDriveId: arg_teamDriveId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Change response) {
         checkChange(response);
       })));
@@ -2897,6 +2910,7 @@
       api.ChangesResourceApi res = new api.DriveApi(mock).changes;
       var arg_supportsTeamDrives = true;
       var arg_teamDriveId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2934,6 +2948,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(
             queryMap["teamDriveId"].first, unittest.equals(arg_teamDriveId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2944,7 +2959,8 @@
       res
           .getStartPageToken(
               supportsTeamDrives: arg_supportsTeamDrives,
-              teamDriveId: arg_teamDriveId)
+              teamDriveId: arg_teamDriveId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StartPageToken response) {
         checkStartPageToken(response);
       })));
@@ -2963,6 +2979,7 @@
       var arg_startChangeId = "foo";
       var arg_supportsTeamDrives = true;
       var arg_teamDriveId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3015,6 +3032,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(
             queryMap["teamDriveId"].first, unittest.equals(arg_teamDriveId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3033,7 +3051,8 @@
               spaces: arg_spaces,
               startChangeId: arg_startChangeId,
               supportsTeamDrives: arg_supportsTeamDrives,
-              teamDriveId: arg_teamDriveId)
+              teamDriveId: arg_teamDriveId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ChangeList response) {
         checkChangeList(response);
       })));
@@ -3053,6 +3072,7 @@
       var arg_startChangeId = "foo";
       var arg_supportsTeamDrives = true;
       var arg_teamDriveId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Channel.fromJson(json);
         checkChannel(obj);
@@ -3108,6 +3128,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(
             queryMap["teamDriveId"].first, unittest.equals(arg_teamDriveId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3126,7 +3147,8 @@
               spaces: arg_spaces,
               startChangeId: arg_startChangeId,
               supportsTeamDrives: arg_supportsTeamDrives,
-              teamDriveId: arg_teamDriveId)
+              teamDriveId: arg_teamDriveId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Channel response) {
         checkChannel(response);
       })));
@@ -3138,6 +3160,7 @@
       var mock = new HttpServerMock();
       api.ChannelsResourceApi res = new api.DriveApi(mock).channels;
       var arg_request = buildChannel();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Channel.fromJson(json);
         checkChannel(obj);
@@ -3174,6 +3197,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3181,7 +3205,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.stop(arg_request).then(unittest.expectAsync1((_) {}));
+      res
+          .stop(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
   });
 
@@ -3191,6 +3217,7 @@
       api.ChildrenResourceApi res = new api.DriveApi(mock).children;
       var arg_folderId = "foo";
       var arg_childId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3236,6 +3263,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3243,7 +3271,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_folderId, arg_childId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_folderId, arg_childId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -3251,6 +3281,7 @@
       api.ChildrenResourceApi res = new api.DriveApi(mock).children;
       var arg_folderId = "foo";
       var arg_childId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3296,6 +3327,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3304,7 +3336,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_folderId, arg_childId)
+          .get(arg_folderId, arg_childId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ChildReference response) {
         checkChildReference(response);
       })));
@@ -3316,6 +3348,7 @@
       var arg_request = buildChildReference();
       var arg_folderId = "foo";
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ChildReference.fromJson(json);
         checkChildReference(obj);
@@ -3363,6 +3396,7 @@
         }
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3372,7 +3406,7 @@
       }), true);
       res
           .insert(arg_request, arg_folderId,
-              supportsTeamDrives: arg_supportsTeamDrives)
+              supportsTeamDrives: arg_supportsTeamDrives, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ChildReference response) {
         checkChildReference(response);
       })));
@@ -3386,6 +3420,7 @@
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
       var arg_q = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3435,6 +3470,7 @@
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(queryMap["q"].first, unittest.equals(arg_q));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3447,7 +3483,8 @@
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
               pageToken: arg_pageToken,
-              q: arg_q)
+              q: arg_q,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ChildList response) {
         checkChildList(response);
       })));
@@ -3460,6 +3497,7 @@
       api.CommentsResourceApi res = new api.DriveApi(mock).comments;
       var arg_fileId = "foo";
       var arg_commentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3505,6 +3543,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3512,7 +3551,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_fileId, arg_commentId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_fileId, arg_commentId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -3521,6 +3562,7 @@
       var arg_fileId = "foo";
       var arg_commentId = "foo";
       var arg_includeDeleted = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3568,6 +3610,7 @@
         }
         unittest.expect(queryMap["includeDeleted"].first,
             unittest.equals("$arg_includeDeleted"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3576,7 +3619,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_fileId, arg_commentId, includeDeleted: arg_includeDeleted)
+          .get(arg_fileId, arg_commentId,
+              includeDeleted: arg_includeDeleted, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Comment response) {
         checkComment(response);
       })));
@@ -3587,6 +3631,7 @@
       api.CommentsResourceApi res = new api.DriveApi(mock).comments;
       var arg_request = buildComment();
       var arg_fileId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Comment.fromJson(json);
         checkComment(obj);
@@ -3632,6 +3677,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3640,7 +3686,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_fileId)
+          .insert(arg_request, arg_fileId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Comment response) {
         checkComment(response);
       })));
@@ -3654,6 +3700,7 @@
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
       var arg_updatedMin = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3704,6 +3751,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(
             queryMap["updatedMin"].first, unittest.equals(arg_updatedMin));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3716,7 +3764,8 @@
               includeDeleted: arg_includeDeleted,
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
-              updatedMin: arg_updatedMin)
+              updatedMin: arg_updatedMin,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CommentList response) {
         checkCommentList(response);
       })));
@@ -3728,6 +3777,7 @@
       var arg_request = buildComment();
       var arg_fileId = "foo";
       var arg_commentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Comment.fromJson(json);
         checkComment(obj);
@@ -3776,6 +3826,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3784,7 +3835,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_fileId, arg_commentId)
+          .patch(arg_request, arg_fileId, arg_commentId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Comment response) {
         checkComment(response);
       })));
@@ -3796,6 +3847,7 @@
       var arg_request = buildComment();
       var arg_fileId = "foo";
       var arg_commentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Comment.fromJson(json);
         checkComment(obj);
@@ -3844,6 +3896,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3852,7 +3905,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_fileId, arg_commentId)
+          .update(arg_request, arg_fileId, arg_commentId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Comment response) {
         checkComment(response);
       })));
@@ -3873,6 +3926,7 @@
       var arg_timedTextLanguage = "foo";
       var arg_timedTextTrackName = "foo";
       var arg_visibility = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.File.fromJson(json);
         checkFile(obj);
@@ -3933,6 +3987,7 @@
             unittest.equals(arg_timedTextTrackName));
         unittest.expect(
             queryMap["visibility"].first, unittest.equals(arg_visibility));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3949,7 +4004,8 @@
               supportsTeamDrives: arg_supportsTeamDrives,
               timedTextLanguage: arg_timedTextLanguage,
               timedTextTrackName: arg_timedTextTrackName,
-              visibility: arg_visibility)
+              visibility: arg_visibility,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.File response) {
         checkFile(response);
       })));
@@ -3960,6 +4016,7 @@
       api.FilesResourceApi res = new api.DriveApi(mock).files;
       var arg_fileId = "foo";
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3998,6 +4055,7 @@
         }
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4006,13 +4064,15 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_fileId, supportsTeamDrives: arg_supportsTeamDrives)
+          .delete(arg_fileId,
+              supportsTeamDrives: arg_supportsTeamDrives, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--emptyTrash", () {
       var mock = new HttpServerMock();
       api.FilesResourceApi res = new api.DriveApi(mock).files;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4046,6 +4106,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4053,7 +4114,7 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.emptyTrash().then(unittest.expectAsync1((_) {}));
+      res.emptyTrash($fields: arg_$fields).then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--export", () {
@@ -4064,6 +4125,7 @@
       api.FilesResourceApi res = new api.DriveApi(mock).files;
       var arg_fileId = "foo";
       var arg_mimeType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4108,6 +4170,7 @@
         }
         unittest.expect(
             queryMap["mimeType"].first, unittest.equals(arg_mimeType));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4115,7 +4178,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.export(arg_fileId, arg_mimeType).then(unittest.expectAsync1((_) {}));
+      res
+          .export(arg_fileId, arg_mimeType, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--generateIds", () {
@@ -4123,6 +4188,7 @@
       api.FilesResourceApi res = new api.DriveApi(mock).files;
       var arg_maxResults = 42;
       var arg_space = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4159,6 +4225,7 @@
         unittest.expect(core.int.parse(queryMap["maxResults"].first),
             unittest.equals(arg_maxResults));
         unittest.expect(queryMap["space"].first, unittest.equals(arg_space));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4167,7 +4234,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .generateIds(maxResults: arg_maxResults, space: arg_space)
+          .generateIds(
+              maxResults: arg_maxResults,
+              space: arg_space,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GeneratedIds response) {
         checkGeneratedIds(response);
       })));
@@ -4185,6 +4255,7 @@
       var arg_revisionId = "foo";
       var arg_supportsTeamDrives = true;
       var arg_updateViewedDate = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4231,6 +4302,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(queryMap["updateViewedDate"].first,
             unittest.equals("$arg_updateViewedDate"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4244,7 +4316,8 @@
               projection: arg_projection,
               revisionId: arg_revisionId,
               supportsTeamDrives: arg_supportsTeamDrives,
-              updateViewedDate: arg_updateViewedDate)
+              updateViewedDate: arg_updateViewedDate,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.File response) {
         checkFile(response);
       })));
@@ -4266,6 +4339,7 @@
       var arg_timedTextTrackName = "foo";
       var arg_useContentAsIndexableText = true;
       var arg_visibility = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.File.fromJson(json);
         checkFile(obj);
@@ -4319,6 +4393,7 @@
             unittest.equals("$arg_useContentAsIndexableText"));
         unittest.expect(
             queryMap["visibility"].first, unittest.equals(arg_visibility));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4336,7 +4411,8 @@
               timedTextLanguage: arg_timedTextLanguage,
               timedTextTrackName: arg_timedTextTrackName,
               useContentAsIndexableText: arg_useContentAsIndexableText,
-              visibility: arg_visibility)
+              visibility: arg_visibility,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.File response) {
         checkFile(response);
       })));
@@ -4356,6 +4432,7 @@
       var arg_spaces = "foo";
       var arg_supportsTeamDrives = true;
       var arg_teamDriveId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4408,6 +4485,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(
             queryMap["teamDriveId"].first, unittest.equals(arg_teamDriveId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4427,7 +4505,8 @@
               q: arg_q,
               spaces: arg_spaces,
               supportsTeamDrives: arg_supportsTeamDrives,
-              teamDriveId: arg_teamDriveId)
+              teamDriveId: arg_teamDriveId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.FileList response) {
         checkFileList(response);
       })));
@@ -4452,6 +4531,7 @@
       var arg_timedTextTrackName = "foo";
       var arg_updateViewedDate = true;
       var arg_useContentAsIndexableText = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.File.fromJson(json);
         checkFile(obj);
@@ -4518,6 +4598,7 @@
             unittest.equals("$arg_updateViewedDate"));
         unittest.expect(queryMap["useContentAsIndexableText"].first,
             unittest.equals("$arg_useContentAsIndexableText"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4540,7 +4621,8 @@
               timedTextLanguage: arg_timedTextLanguage,
               timedTextTrackName: arg_timedTextTrackName,
               updateViewedDate: arg_updateViewedDate,
-              useContentAsIndexableText: arg_useContentAsIndexableText)
+              useContentAsIndexableText: arg_useContentAsIndexableText,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.File response) {
         checkFile(response);
       })));
@@ -4551,6 +4633,7 @@
       api.FilesResourceApi res = new api.DriveApi(mock).files;
       var arg_fileId = "foo";
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4595,6 +4678,7 @@
         }
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4603,7 +4687,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .touch(arg_fileId, supportsTeamDrives: arg_supportsTeamDrives)
+          .touch(arg_fileId,
+              supportsTeamDrives: arg_supportsTeamDrives, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.File response) {
         checkFile(response);
       })));
@@ -4614,6 +4699,7 @@
       api.FilesResourceApi res = new api.DriveApi(mock).files;
       var arg_fileId = "foo";
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4658,6 +4744,7 @@
         }
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4666,7 +4753,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .trash(arg_fileId, supportsTeamDrives: arg_supportsTeamDrives)
+          .trash(arg_fileId,
+              supportsTeamDrives: arg_supportsTeamDrives, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.File response) {
         checkFile(response);
       })));
@@ -4677,6 +4765,7 @@
       api.FilesResourceApi res = new api.DriveApi(mock).files;
       var arg_fileId = "foo";
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4721,6 +4810,7 @@
         }
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4729,7 +4819,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .untrash(arg_fileId, supportsTeamDrives: arg_supportsTeamDrives)
+          .untrash(arg_fileId,
+              supportsTeamDrives: arg_supportsTeamDrives, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.File response) {
         checkFile(response);
       })));
@@ -4757,6 +4848,7 @@
       var arg_timedTextTrackName = "foo";
       var arg_updateViewedDate = true;
       var arg_useContentAsIndexableText = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.File.fromJson(json);
         checkFile(obj);
@@ -4823,6 +4915,7 @@
             unittest.equals("$arg_updateViewedDate"));
         unittest.expect(queryMap["useContentAsIndexableText"].first,
             unittest.equals("$arg_useContentAsIndexableText"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4845,7 +4938,8 @@
               timedTextLanguage: arg_timedTextLanguage,
               timedTextTrackName: arg_timedTextTrackName,
               updateViewedDate: arg_updateViewedDate,
-              useContentAsIndexableText: arg_useContentAsIndexableText)
+              useContentAsIndexableText: arg_useContentAsIndexableText,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.File response) {
         checkFile(response);
       })));
@@ -4864,6 +4958,7 @@
       var arg_revisionId = "foo";
       var arg_supportsTeamDrives = true;
       var arg_updateViewedDate = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Channel.fromJson(json);
         checkChannel(obj);
@@ -4919,6 +5014,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(queryMap["updateViewedDate"].first,
             unittest.equals("$arg_updateViewedDate"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4932,7 +5028,8 @@
               projection: arg_projection,
               revisionId: arg_revisionId,
               supportsTeamDrives: arg_supportsTeamDrives,
-              updateViewedDate: arg_updateViewedDate)
+              updateViewedDate: arg_updateViewedDate,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Channel response) {
         checkChannel(response);
       })));
@@ -4945,6 +5042,7 @@
       api.ParentsResourceApi res = new api.DriveApi(mock).parents;
       var arg_fileId = "foo";
       var arg_parentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4990,6 +5088,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4997,7 +5096,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_fileId, arg_parentId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_fileId, arg_parentId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -5005,6 +5106,7 @@
       api.ParentsResourceApi res = new api.DriveApi(mock).parents;
       var arg_fileId = "foo";
       var arg_parentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5050,6 +5152,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5058,7 +5161,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_fileId, arg_parentId)
+          .get(arg_fileId, arg_parentId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ParentReference response) {
         checkParentReference(response);
       })));
@@ -5070,6 +5173,7 @@
       var arg_request = buildParentReference();
       var arg_fileId = "foo";
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ParentReference.fromJson(json);
         checkParentReference(obj);
@@ -5117,6 +5221,7 @@
         }
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5126,7 +5231,7 @@
       }), true);
       res
           .insert(arg_request, arg_fileId,
-              supportsTeamDrives: arg_supportsTeamDrives)
+              supportsTeamDrives: arg_supportsTeamDrives, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ParentReference response) {
         checkParentReference(response);
       })));
@@ -5136,6 +5241,7 @@
       var mock = new HttpServerMock();
       api.ParentsResourceApi res = new api.DriveApi(mock).parents;
       var arg_fileId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5178,6 +5284,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5186,7 +5293,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_fileId)
+          .list(arg_fileId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ParentList response) {
         checkParentList(response);
       })));
@@ -5200,6 +5307,7 @@
       var arg_fileId = "foo";
       var arg_permissionId = "foo";
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5247,6 +5355,7 @@
         }
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5256,7 +5365,7 @@
       }), true);
       res
           .delete(arg_fileId, arg_permissionId,
-              supportsTeamDrives: arg_supportsTeamDrives)
+              supportsTeamDrives: arg_supportsTeamDrives, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -5266,6 +5375,7 @@
       var arg_fileId = "foo";
       var arg_permissionId = "foo";
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5313,6 +5423,7 @@
         }
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5322,7 +5433,7 @@
       }), true);
       res
           .get(arg_fileId, arg_permissionId,
-              supportsTeamDrives: arg_supportsTeamDrives)
+              supportsTeamDrives: arg_supportsTeamDrives, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Permission response) {
         checkPermission(response);
       })));
@@ -5332,6 +5443,7 @@
       var mock = new HttpServerMock();
       api.PermissionsResourceApi res = new api.DriveApi(mock).permissions;
       var arg_email = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5368,6 +5480,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5376,7 +5489,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIdForEmail(arg_email)
+          .getIdForEmail(arg_email, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PermissionId response) {
         checkPermissionId(response);
       })));
@@ -5390,6 +5503,7 @@
       var arg_emailMessage = "foo";
       var arg_sendNotificationEmails = true;
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Permission.fromJson(json);
         checkPermission(obj);
@@ -5441,6 +5555,7 @@
             unittest.equals("$arg_sendNotificationEmails"));
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5452,7 +5567,8 @@
           .insert(arg_request, arg_fileId,
               emailMessage: arg_emailMessage,
               sendNotificationEmails: arg_sendNotificationEmails,
-              supportsTeamDrives: arg_supportsTeamDrives)
+              supportsTeamDrives: arg_supportsTeamDrives,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Permission response) {
         checkPermission(response);
       })));
@@ -5465,6 +5581,7 @@
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5513,6 +5630,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5524,7 +5642,8 @@
           .list(arg_fileId,
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
-              supportsTeamDrives: arg_supportsTeamDrives)
+              supportsTeamDrives: arg_supportsTeamDrives,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PermissionList response) {
         checkPermissionList(response);
       })));
@@ -5539,6 +5658,7 @@
       var arg_removeExpiration = true;
       var arg_supportsTeamDrives = true;
       var arg_transferOwnership = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Permission.fromJson(json);
         checkPermission(obj);
@@ -5593,6 +5713,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(queryMap["transferOwnership"].first,
             unittest.equals("$arg_transferOwnership"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5604,7 +5725,8 @@
           .patch(arg_request, arg_fileId, arg_permissionId,
               removeExpiration: arg_removeExpiration,
               supportsTeamDrives: arg_supportsTeamDrives,
-              transferOwnership: arg_transferOwnership)
+              transferOwnership: arg_transferOwnership,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Permission response) {
         checkPermission(response);
       })));
@@ -5619,6 +5741,7 @@
       var arg_removeExpiration = true;
       var arg_supportsTeamDrives = true;
       var arg_transferOwnership = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Permission.fromJson(json);
         checkPermission(obj);
@@ -5673,6 +5796,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(queryMap["transferOwnership"].first,
             unittest.equals("$arg_transferOwnership"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5684,7 +5808,8 @@
           .update(arg_request, arg_fileId, arg_permissionId,
               removeExpiration: arg_removeExpiration,
               supportsTeamDrives: arg_supportsTeamDrives,
-              transferOwnership: arg_transferOwnership)
+              transferOwnership: arg_transferOwnership,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Permission response) {
         checkPermission(response);
       })));
@@ -5698,6 +5823,7 @@
       var arg_fileId = "foo";
       var arg_propertyKey = "foo";
       var arg_visibility = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5745,6 +5871,7 @@
         }
         unittest.expect(
             queryMap["visibility"].first, unittest.equals(arg_visibility));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5753,7 +5880,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_fileId, arg_propertyKey, visibility: arg_visibility)
+          .delete(arg_fileId, arg_propertyKey,
+              visibility: arg_visibility, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -5763,6 +5891,7 @@
       var arg_fileId = "foo";
       var arg_propertyKey = "foo";
       var arg_visibility = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5810,6 +5939,7 @@
         }
         unittest.expect(
             queryMap["visibility"].first, unittest.equals(arg_visibility));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5818,7 +5948,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_fileId, arg_propertyKey, visibility: arg_visibility)
+          .get(arg_fileId, arg_propertyKey,
+              visibility: arg_visibility, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Property response) {
         checkProperty(response);
       })));
@@ -5829,6 +5960,7 @@
       api.PropertiesResourceApi res = new api.DriveApi(mock).properties;
       var arg_request = buildProperty();
       var arg_fileId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Property.fromJson(json);
         checkProperty(obj);
@@ -5874,6 +6006,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5882,7 +6015,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_fileId)
+          .insert(arg_request, arg_fileId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Property response) {
         checkProperty(response);
       })));
@@ -5892,6 +6025,7 @@
       var mock = new HttpServerMock();
       api.PropertiesResourceApi res = new api.DriveApi(mock).properties;
       var arg_fileId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5934,6 +6068,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5942,7 +6077,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_fileId)
+          .list(arg_fileId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PropertyList response) {
         checkPropertyList(response);
       })));
@@ -5955,6 +6090,7 @@
       var arg_fileId = "foo";
       var arg_propertyKey = "foo";
       var arg_visibility = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Property.fromJson(json);
         checkProperty(obj);
@@ -6005,6 +6141,7 @@
         }
         unittest.expect(
             queryMap["visibility"].first, unittest.equals(arg_visibility));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6014,7 +6151,7 @@
       }), true);
       res
           .patch(arg_request, arg_fileId, arg_propertyKey,
-              visibility: arg_visibility)
+              visibility: arg_visibility, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Property response) {
         checkProperty(response);
       })));
@@ -6027,6 +6164,7 @@
       var arg_fileId = "foo";
       var arg_propertyKey = "foo";
       var arg_visibility = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Property.fromJson(json);
         checkProperty(obj);
@@ -6077,6 +6215,7 @@
         }
         unittest.expect(
             queryMap["visibility"].first, unittest.equals(arg_visibility));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6086,7 +6225,7 @@
       }), true);
       res
           .update(arg_request, arg_fileId, arg_propertyKey,
-              visibility: arg_visibility)
+              visibility: arg_visibility, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Property response) {
         checkProperty(response);
       })));
@@ -6102,6 +6241,7 @@
       api.RealtimeResourceApi res = new api.DriveApi(mock).realtime;
       var arg_fileId = "foo";
       var arg_revision = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6146,6 +6286,7 @@
         }
         unittest.expect(core.int.parse(queryMap["revision"].first),
             unittest.equals(arg_revision));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6154,7 +6295,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_fileId, revision: arg_revision)
+          .get(arg_fileId, revision: arg_revision, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -6166,6 +6307,7 @@
       api.RealtimeResourceApi res = new api.DriveApi(mock).realtime;
       var arg_fileId = "foo";
       var arg_baseRevision = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6210,6 +6352,7 @@
         }
         unittest.expect(
             queryMap["baseRevision"].first, unittest.equals(arg_baseRevision));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6218,7 +6361,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_fileId, baseRevision: arg_baseRevision)
+          .update(arg_fileId,
+              baseRevision: arg_baseRevision, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
   });
@@ -6230,6 +6374,7 @@
       var arg_fileId = "foo";
       var arg_commentId = "foo";
       var arg_replyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6284,6 +6429,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6292,7 +6438,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_fileId, arg_commentId, arg_replyId)
+          .delete(arg_fileId, arg_commentId, arg_replyId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -6303,6 +6449,7 @@
       var arg_commentId = "foo";
       var arg_replyId = "foo";
       var arg_includeDeleted = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6359,6 +6506,7 @@
         }
         unittest.expect(queryMap["includeDeleted"].first,
             unittest.equals("$arg_includeDeleted"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6368,7 +6516,7 @@
       }), true);
       res
           .get(arg_fileId, arg_commentId, arg_replyId,
-              includeDeleted: arg_includeDeleted)
+              includeDeleted: arg_includeDeleted, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CommentReply response) {
         checkCommentReply(response);
       })));
@@ -6380,6 +6528,7 @@
       var arg_request = buildCommentReply();
       var arg_fileId = "foo";
       var arg_commentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CommentReply.fromJson(json);
         checkCommentReply(obj);
@@ -6434,6 +6583,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6442,7 +6592,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_fileId, arg_commentId)
+          .insert(arg_request, arg_fileId, arg_commentId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CommentReply response) {
         checkCommentReply(response);
       })));
@@ -6456,6 +6606,7 @@
       var arg_includeDeleted = true;
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6513,6 +6664,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6524,7 +6676,8 @@
           .list(arg_fileId, arg_commentId,
               includeDeleted: arg_includeDeleted,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CommentReplyList response) {
         checkCommentReplyList(response);
       })));
@@ -6537,6 +6690,7 @@
       var arg_fileId = "foo";
       var arg_commentId = "foo";
       var arg_replyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CommentReply.fromJson(json);
         checkCommentReply(obj);
@@ -6594,6 +6748,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6602,7 +6757,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_fileId, arg_commentId, arg_replyId)
+          .patch(arg_request, arg_fileId, arg_commentId, arg_replyId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CommentReply response) {
         checkCommentReply(response);
       })));
@@ -6615,6 +6771,7 @@
       var arg_fileId = "foo";
       var arg_commentId = "foo";
       var arg_replyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CommentReply.fromJson(json);
         checkCommentReply(obj);
@@ -6672,6 +6829,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6680,7 +6838,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_fileId, arg_commentId, arg_replyId)
+          .update(arg_request, arg_fileId, arg_commentId, arg_replyId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CommentReply response) {
         checkCommentReply(response);
       })));
@@ -6693,6 +6852,7 @@
       api.RevisionsResourceApi res = new api.DriveApi(mock).revisions;
       var arg_fileId = "foo";
       var arg_revisionId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6738,6 +6898,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6746,7 +6907,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_fileId, arg_revisionId)
+          .delete(arg_fileId, arg_revisionId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -6755,6 +6916,7 @@
       api.RevisionsResourceApi res = new api.DriveApi(mock).revisions;
       var arg_fileId = "foo";
       var arg_revisionId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6800,6 +6962,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6808,7 +6971,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_fileId, arg_revisionId)
+          .get(arg_fileId, arg_revisionId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Revision response) {
         checkRevision(response);
       })));
@@ -6820,6 +6983,7 @@
       var arg_fileId = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6866,6 +7030,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6875,7 +7040,9 @@
       }), true);
       res
           .list(arg_fileId,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RevisionList response) {
         checkRevisionList(response);
       })));
@@ -6887,6 +7054,7 @@
       var arg_request = buildRevision();
       var arg_fileId = "foo";
       var arg_revisionId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Revision.fromJson(json);
         checkRevision(obj);
@@ -6935,6 +7103,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6943,7 +7112,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_fileId, arg_revisionId)
+          .patch(arg_request, arg_fileId, arg_revisionId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Revision response) {
         checkRevision(response);
       })));
@@ -6955,6 +7124,7 @@
       var arg_request = buildRevision();
       var arg_fileId = "foo";
       var arg_revisionId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Revision.fromJson(json);
         checkRevision(obj);
@@ -7003,6 +7173,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7011,7 +7182,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_fileId, arg_revisionId)
+          .update(arg_request, arg_fileId, arg_revisionId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Revision response) {
         checkRevision(response);
       })));
@@ -7023,6 +7194,7 @@
       var mock = new HttpServerMock();
       api.TeamdrivesResourceApi res = new api.DriveApi(mock).teamdrives;
       var arg_teamDriveId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7059,6 +7231,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7066,13 +7239,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_teamDriveId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_teamDriveId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
       var mock = new HttpServerMock();
       api.TeamdrivesResourceApi res = new api.DriveApi(mock).teamdrives;
       var arg_teamDriveId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7109,6 +7285,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7117,7 +7294,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_teamDriveId)
+          .get(arg_teamDriveId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TeamDrive response) {
         checkTeamDrive(response);
       })));
@@ -7128,6 +7305,7 @@
       api.TeamdrivesResourceApi res = new api.DriveApi(mock).teamdrives;
       var arg_request = buildTeamDrive();
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TeamDrive.fromJson(json);
         checkTeamDrive(obj);
@@ -7166,6 +7344,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7174,7 +7353,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_requestId)
+          .insert(arg_request, arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TeamDrive response) {
         checkTeamDrive(response);
       })));
@@ -7185,6 +7364,7 @@
       api.TeamdrivesResourceApi res = new api.DriveApi(mock).teamdrives;
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7222,6 +7402,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7230,7 +7411,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(maxResults: arg_maxResults, pageToken: arg_pageToken)
+          .list(
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TeamDriveList response) {
         checkTeamDriveList(response);
       })));
@@ -7241,6 +7425,7 @@
       api.TeamdrivesResourceApi res = new api.DriveApi(mock).teamdrives;
       var arg_request = buildTeamDrive();
       var arg_teamDriveId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TeamDrive.fromJson(json);
         checkTeamDrive(obj);
@@ -7280,6 +7465,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7288,7 +7474,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_teamDriveId)
+          .update(arg_request, arg_teamDriveId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TeamDrive response) {
         checkTeamDrive(response);
       })));
diff --git a/generated/googleapis/test/drive/v3_test.dart b/generated/googleapis/test/drive/v3_test.dart
index 5486352..62d64f3 100644
--- a/generated/googleapis/test/drive/v3_test.dart
+++ b/generated/googleapis/test/drive/v3_test.dart
@@ -50,79 +50,79 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed1660() {
+buildUnnamed1652() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1660(core.List<core.String> o) {
+checkUnnamed1652(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1661() {
+buildUnnamed1653() {
   var o = new core.Map<core.String, core.List<core.String>>();
-  o["x"] = buildUnnamed1660();
-  o["y"] = buildUnnamed1660();
+  o["x"] = buildUnnamed1652();
+  o["y"] = buildUnnamed1652();
   return o;
 }
 
-checkUnnamed1661(core.Map<core.String, core.List<core.String>> o) {
+checkUnnamed1653(core.Map<core.String, core.List<core.String>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1660(o["x"]);
-  checkUnnamed1660(o["y"]);
+  checkUnnamed1652(o["x"]);
+  checkUnnamed1652(o["y"]);
 }
 
-buildUnnamed1662() {
+buildUnnamed1654() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1662(core.List<core.String> o) {
+checkUnnamed1654(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1663() {
+buildUnnamed1655() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1663(core.List<core.String> o) {
+checkUnnamed1655(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1664() {
+buildUnnamed1656() {
   var o = new core.Map<core.String, core.List<core.String>>();
-  o["x"] = buildUnnamed1663();
-  o["y"] = buildUnnamed1663();
+  o["x"] = buildUnnamed1655();
+  o["y"] = buildUnnamed1655();
   return o;
 }
 
-checkUnnamed1664(core.Map<core.String, core.List<core.String>> o) {
+checkUnnamed1656(core.Map<core.String, core.List<core.String>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1663(o["x"]);
-  checkUnnamed1663(o["y"]);
+  checkUnnamed1655(o["x"]);
+  checkUnnamed1655(o["y"]);
 }
 
-buildUnnamed1665() {
+buildUnnamed1657() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1665(core.Map<core.String, core.String> o) {
+checkUnnamed1657(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -176,14 +176,14 @@
   buildCounterAboutTeamDriveThemes--;
 }
 
-buildUnnamed1666() {
+buildUnnamed1658() {
   var o = new core.List<api.AboutTeamDriveThemes>();
   o.add(buildAboutTeamDriveThemes());
   o.add(buildAboutTeamDriveThemes());
   return o;
 }
 
-checkUnnamed1666(core.List<api.AboutTeamDriveThemes> o) {
+checkUnnamed1658(core.List<api.AboutTeamDriveThemes> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAboutTeamDriveThemes(o[0]);
   checkAboutTeamDriveThemes(o[1]);
@@ -195,14 +195,14 @@
   buildCounterAbout++;
   if (buildCounterAbout < 3) {
     o.appInstalled = true;
-    o.exportFormats = buildUnnamed1661();
-    o.folderColorPalette = buildUnnamed1662();
-    o.importFormats = buildUnnamed1664();
+    o.exportFormats = buildUnnamed1653();
+    o.folderColorPalette = buildUnnamed1654();
+    o.importFormats = buildUnnamed1656();
     o.kind = "foo";
-    o.maxImportSizes = buildUnnamed1665();
+    o.maxImportSizes = buildUnnamed1657();
     o.maxUploadSize = "foo";
     o.storageQuota = buildAboutStorageQuota();
-    o.teamDriveThemes = buildUnnamed1666();
+    o.teamDriveThemes = buildUnnamed1658();
     o.user = buildUser();
   }
   buildCounterAbout--;
@@ -213,14 +213,14 @@
   buildCounterAbout++;
   if (buildCounterAbout < 3) {
     unittest.expect(o.appInstalled, unittest.isTrue);
-    checkUnnamed1661(o.exportFormats);
-    checkUnnamed1662(o.folderColorPalette);
-    checkUnnamed1664(o.importFormats);
+    checkUnnamed1653(o.exportFormats);
+    checkUnnamed1654(o.folderColorPalette);
+    checkUnnamed1656(o.importFormats);
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed1665(o.maxImportSizes);
+    checkUnnamed1657(o.maxImportSizes);
     unittest.expect(o.maxUploadSize, unittest.equals('foo'));
     checkAboutStorageQuota(o.storageQuota);
-    checkUnnamed1666(o.teamDriveThemes);
+    checkUnnamed1658(o.teamDriveThemes);
     checkUser(o.user);
   }
   buildCounterAbout--;
@@ -260,14 +260,14 @@
   buildCounterChange--;
 }
 
-buildUnnamed1667() {
+buildUnnamed1659() {
   var o = new core.List<api.Change>();
   o.add(buildChange());
   o.add(buildChange());
   return o;
 }
 
-checkUnnamed1667(core.List<api.Change> o) {
+checkUnnamed1659(core.List<api.Change> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkChange(o[0]);
   checkChange(o[1]);
@@ -278,7 +278,7 @@
   var o = new api.ChangeList();
   buildCounterChangeList++;
   if (buildCounterChangeList < 3) {
-    o.changes = buildUnnamed1667();
+    o.changes = buildUnnamed1659();
     o.kind = "foo";
     o.newStartPageToken = "foo";
     o.nextPageToken = "foo";
@@ -290,7 +290,7 @@
 checkChangeList(api.ChangeList o) {
   buildCounterChangeList++;
   if (buildCounterChangeList < 3) {
-    checkUnnamed1667(o.changes);
+    checkUnnamed1659(o.changes);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.newStartPageToken, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
@@ -298,14 +298,14 @@
   buildCounterChangeList--;
 }
 
-buildUnnamed1668() {
+buildUnnamed1660() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1668(core.Map<core.String, core.String> o) {
+checkUnnamed1660(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -320,7 +320,7 @@
     o.expiration = "foo";
     o.id = "foo";
     o.kind = "foo";
-    o.params = buildUnnamed1668();
+    o.params = buildUnnamed1660();
     o.payload = true;
     o.resourceId = "foo";
     o.resourceUri = "foo";
@@ -338,7 +338,7 @@
     unittest.expect(o.expiration, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed1668(o.params);
+    checkUnnamed1660(o.params);
     unittest.expect(o.payload, unittest.isTrue);
     unittest.expect(o.resourceId, unittest.equals('foo'));
     unittest.expect(o.resourceUri, unittest.equals('foo'));
@@ -369,14 +369,14 @@
   buildCounterCommentQuotedFileContent--;
 }
 
-buildUnnamed1669() {
+buildUnnamed1661() {
   var o = new core.List<api.Reply>();
   o.add(buildReply());
   o.add(buildReply());
   return o;
 }
 
-checkUnnamed1669(core.List<api.Reply> o) {
+checkUnnamed1661(core.List<api.Reply> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReply(o[0]);
   checkReply(o[1]);
@@ -397,7 +397,7 @@
     o.kind = "foo";
     o.modifiedTime = core.DateTime.parse("2002-02-27T14:01:02");
     o.quotedFileContent = buildCommentQuotedFileContent();
-    o.replies = buildUnnamed1669();
+    o.replies = buildUnnamed1661();
     o.resolved = true;
   }
   buildCounterComment--;
@@ -419,20 +419,20 @@
     unittest.expect(o.modifiedTime,
         unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
     checkCommentQuotedFileContent(o.quotedFileContent);
-    checkUnnamed1669(o.replies);
+    checkUnnamed1661(o.replies);
     unittest.expect(o.resolved, unittest.isTrue);
   }
   buildCounterComment--;
 }
 
-buildUnnamed1670() {
+buildUnnamed1662() {
   var o = new core.List<api.Comment>();
   o.add(buildComment());
   o.add(buildComment());
   return o;
 }
 
-checkUnnamed1670(core.List<api.Comment> o) {
+checkUnnamed1662(core.List<api.Comment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkComment(o[0]);
   checkComment(o[1]);
@@ -443,7 +443,7 @@
   var o = new api.CommentList();
   buildCounterCommentList++;
   if (buildCounterCommentList < 3) {
-    o.comments = buildUnnamed1670();
+    o.comments = buildUnnamed1662();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -454,21 +454,21 @@
 checkCommentList(api.CommentList o) {
   buildCounterCommentList++;
   if (buildCounterCommentList < 3) {
-    checkUnnamed1670(o.comments);
+    checkUnnamed1662(o.comments);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterCommentList--;
 }
 
-buildUnnamed1671() {
+buildUnnamed1663() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1671(core.Map<core.String, core.String> o) {
+checkUnnamed1663(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -649,79 +649,79 @@
   buildCounterFileImageMediaMetadata--;
 }
 
-buildUnnamed1672() {
+buildUnnamed1664() {
   var o = new core.List<api.User>();
   o.add(buildUser());
   o.add(buildUser());
   return o;
 }
 
-checkUnnamed1672(core.List<api.User> o) {
+checkUnnamed1664(core.List<api.User> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUser(o[0]);
   checkUser(o[1]);
 }
 
-buildUnnamed1673() {
+buildUnnamed1665() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1673(core.List<core.String> o) {
+checkUnnamed1665(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1674() {
+buildUnnamed1666() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1674(core.List<core.String> o) {
+checkUnnamed1666(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1675() {
+buildUnnamed1667() {
   var o = new core.List<api.Permission>();
   o.add(buildPermission());
   o.add(buildPermission());
   return o;
 }
 
-checkUnnamed1675(core.List<api.Permission> o) {
+checkUnnamed1667(core.List<api.Permission> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPermission(o[0]);
   checkPermission(o[1]);
 }
 
-buildUnnamed1676() {
+buildUnnamed1668() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1676(core.Map<core.String, core.String> o) {
+checkUnnamed1668(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed1677() {
+buildUnnamed1669() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1677(core.List<core.String> o) {
+checkUnnamed1669(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -755,7 +755,7 @@
   var o = new api.File();
   buildCounterFile++;
   if (buildCounterFile < 3) {
-    o.appProperties = buildUnnamed1671();
+    o.appProperties = buildUnnamed1663();
     o.capabilities = buildFileCapabilities();
     o.contentHints = buildFileContentHints();
     o.createdTime = core.DateTime.parse("2002-02-27T14:01:02");
@@ -781,17 +781,17 @@
     o.name = "foo";
     o.originalFilename = "foo";
     o.ownedByMe = true;
-    o.owners = buildUnnamed1672();
-    o.parents = buildUnnamed1673();
-    o.permissionIds = buildUnnamed1674();
-    o.permissions = buildUnnamed1675();
-    o.properties = buildUnnamed1676();
+    o.owners = buildUnnamed1664();
+    o.parents = buildUnnamed1665();
+    o.permissionIds = buildUnnamed1666();
+    o.permissions = buildUnnamed1667();
+    o.properties = buildUnnamed1668();
     o.quotaBytesUsed = "foo";
     o.shared = true;
     o.sharedWithMeTime = core.DateTime.parse("2002-02-27T14:01:02");
     o.sharingUser = buildUser();
     o.size = "foo";
-    o.spaces = buildUnnamed1677();
+    o.spaces = buildUnnamed1669();
     o.starred = true;
     o.teamDriveId = "foo";
     o.thumbnailLink = "foo";
@@ -815,7 +815,7 @@
 checkFile(api.File o) {
   buildCounterFile++;
   if (buildCounterFile < 3) {
-    checkUnnamed1671(o.appProperties);
+    checkUnnamed1663(o.appProperties);
     checkFileCapabilities(o.capabilities);
     checkFileContentHints(o.contentHints);
     unittest.expect(o.createdTime,
@@ -844,18 +844,18 @@
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.originalFilename, unittest.equals('foo'));
     unittest.expect(o.ownedByMe, unittest.isTrue);
-    checkUnnamed1672(o.owners);
-    checkUnnamed1673(o.parents);
-    checkUnnamed1674(o.permissionIds);
-    checkUnnamed1675(o.permissions);
-    checkUnnamed1676(o.properties);
+    checkUnnamed1664(o.owners);
+    checkUnnamed1665(o.parents);
+    checkUnnamed1666(o.permissionIds);
+    checkUnnamed1667(o.permissions);
+    checkUnnamed1668(o.properties);
     unittest.expect(o.quotaBytesUsed, unittest.equals('foo'));
     unittest.expect(o.shared, unittest.isTrue);
     unittest.expect(o.sharedWithMeTime,
         unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
     checkUser(o.sharingUser);
     unittest.expect(o.size, unittest.equals('foo'));
-    checkUnnamed1677(o.spaces);
+    checkUnnamed1669(o.spaces);
     unittest.expect(o.starred, unittest.isTrue);
     unittest.expect(o.teamDriveId, unittest.equals('foo'));
     unittest.expect(o.thumbnailLink, unittest.equals('foo'));
@@ -877,14 +877,14 @@
   buildCounterFile--;
 }
 
-buildUnnamed1678() {
+buildUnnamed1670() {
   var o = new core.List<api.File>();
   o.add(buildFile());
   o.add(buildFile());
   return o;
 }
 
-checkUnnamed1678(core.List<api.File> o) {
+checkUnnamed1670(core.List<api.File> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFile(o[0]);
   checkFile(o[1]);
@@ -895,7 +895,7 @@
   var o = new api.FileList();
   buildCounterFileList++;
   if (buildCounterFileList < 3) {
-    o.files = buildUnnamed1678();
+    o.files = buildUnnamed1670();
     o.incompleteSearch = true;
     o.kind = "foo";
     o.nextPageToken = "foo";
@@ -907,7 +907,7 @@
 checkFileList(api.FileList o) {
   buildCounterFileList++;
   if (buildCounterFileList < 3) {
-    checkUnnamed1678(o.files);
+    checkUnnamed1670(o.files);
     unittest.expect(o.incompleteSearch, unittest.isTrue);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
@@ -915,14 +915,14 @@
   buildCounterFileList--;
 }
 
-buildUnnamed1679() {
+buildUnnamed1671() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1679(core.List<core.String> o) {
+checkUnnamed1671(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -933,7 +933,7 @@
   var o = new api.GeneratedIds();
   buildCounterGeneratedIds++;
   if (buildCounterGeneratedIds < 3) {
-    o.ids = buildUnnamed1679();
+    o.ids = buildUnnamed1671();
     o.kind = "foo";
     o.space = "foo";
   }
@@ -944,7 +944,7 @@
 checkGeneratedIds(api.GeneratedIds o) {
   buildCounterGeneratedIds++;
   if (buildCounterGeneratedIds < 3) {
-    checkUnnamed1679(o.ids);
+    checkUnnamed1671(o.ids);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.space, unittest.equals('foo'));
   }
@@ -977,14 +977,14 @@
   buildCounterPermissionTeamDrivePermissionDetails--;
 }
 
-buildUnnamed1680() {
+buildUnnamed1672() {
   var o = new core.List<api.PermissionTeamDrivePermissionDetails>();
   o.add(buildPermissionTeamDrivePermissionDetails());
   o.add(buildPermissionTeamDrivePermissionDetails());
   return o;
 }
 
-checkUnnamed1680(core.List<api.PermissionTeamDrivePermissionDetails> o) {
+checkUnnamed1672(core.List<api.PermissionTeamDrivePermissionDetails> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPermissionTeamDrivePermissionDetails(o[0]);
   checkPermissionTeamDrivePermissionDetails(o[1]);
@@ -1005,7 +1005,7 @@
     o.kind = "foo";
     o.photoLink = "foo";
     o.role = "foo";
-    o.teamDrivePermissionDetails = buildUnnamed1680();
+    o.teamDrivePermissionDetails = buildUnnamed1672();
     o.type = "foo";
   }
   buildCounterPermission--;
@@ -1026,20 +1026,20 @@
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.photoLink, unittest.equals('foo'));
     unittest.expect(o.role, unittest.equals('foo'));
-    checkUnnamed1680(o.teamDrivePermissionDetails);
+    checkUnnamed1672(o.teamDrivePermissionDetails);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterPermission--;
 }
 
-buildUnnamed1681() {
+buildUnnamed1673() {
   var o = new core.List<api.Permission>();
   o.add(buildPermission());
   o.add(buildPermission());
   return o;
 }
 
-checkUnnamed1681(core.List<api.Permission> o) {
+checkUnnamed1673(core.List<api.Permission> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPermission(o[0]);
   checkPermission(o[1]);
@@ -1052,7 +1052,7 @@
   if (buildCounterPermissionList < 3) {
     o.kind = "foo";
     o.nextPageToken = "foo";
-    o.permissions = buildUnnamed1681();
+    o.permissions = buildUnnamed1673();
   }
   buildCounterPermissionList--;
   return o;
@@ -1063,7 +1063,7 @@
   if (buildCounterPermissionList < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1681(o.permissions);
+    checkUnnamed1673(o.permissions);
   }
   buildCounterPermissionList--;
 }
@@ -1105,14 +1105,14 @@
   buildCounterReply--;
 }
 
-buildUnnamed1682() {
+buildUnnamed1674() {
   var o = new core.List<api.Reply>();
   o.add(buildReply());
   o.add(buildReply());
   return o;
 }
 
-checkUnnamed1682(core.List<api.Reply> o) {
+checkUnnamed1674(core.List<api.Reply> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReply(o[0]);
   checkReply(o[1]);
@@ -1125,7 +1125,7 @@
   if (buildCounterReplyList < 3) {
     o.kind = "foo";
     o.nextPageToken = "foo";
-    o.replies = buildUnnamed1682();
+    o.replies = buildUnnamed1674();
   }
   buildCounterReplyList--;
   return o;
@@ -1136,7 +1136,7 @@
   if (buildCounterReplyList < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1682(o.replies);
+    checkUnnamed1674(o.replies);
   }
   buildCounterReplyList--;
 }
@@ -1183,14 +1183,14 @@
   buildCounterRevision--;
 }
 
-buildUnnamed1683() {
+buildUnnamed1675() {
   var o = new core.List<api.Revision>();
   o.add(buildRevision());
   o.add(buildRevision());
   return o;
 }
 
-checkUnnamed1683(core.List<api.Revision> o) {
+checkUnnamed1675(core.List<api.Revision> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRevision(o[0]);
   checkRevision(o[1]);
@@ -1203,7 +1203,7 @@
   if (buildCounterRevisionList < 3) {
     o.kind = "foo";
     o.nextPageToken = "foo";
-    o.revisions = buildUnnamed1683();
+    o.revisions = buildUnnamed1675();
   }
   buildCounterRevisionList--;
   return o;
@@ -1214,7 +1214,7 @@
   if (buildCounterRevisionList < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1683(o.revisions);
+    checkUnnamed1675(o.revisions);
   }
   buildCounterRevisionList--;
 }
@@ -1343,14 +1343,14 @@
   buildCounterTeamDrive--;
 }
 
-buildUnnamed1684() {
+buildUnnamed1676() {
   var o = new core.List<api.TeamDrive>();
   o.add(buildTeamDrive());
   o.add(buildTeamDrive());
   return o;
 }
 
-checkUnnamed1684(core.List<api.TeamDrive> o) {
+checkUnnamed1676(core.List<api.TeamDrive> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTeamDrive(o[0]);
   checkTeamDrive(o[1]);
@@ -1363,7 +1363,7 @@
   if (buildCounterTeamDriveList < 3) {
     o.kind = "foo";
     o.nextPageToken = "foo";
-    o.teamDrives = buildUnnamed1684();
+    o.teamDrives = buildUnnamed1676();
   }
   buildCounterTeamDriveList--;
   return o;
@@ -1374,7 +1374,7 @@
   if (buildCounterTeamDriveList < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1684(o.teamDrives);
+    checkUnnamed1676(o.teamDrives);
   }
   buildCounterTeamDriveList--;
 }
@@ -1662,6 +1662,7 @@
     unittest.test("method--get", () {
       var mock = new HttpServerMock();
       api.AboutResourceApi res = new api.DriveApi(mock).about;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1695,6 +1696,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1702,7 +1704,9 @@
         var resp = convert.JSON.encode(buildAbout());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get().then(unittest.expectAsync1(((api.About response) {
+      res
+          .get($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.About response) {
         checkAbout(response);
       })));
     });
@@ -1714,6 +1718,7 @@
       api.ChangesResourceApi res = new api.DriveApi(mock).changes;
       var arg_supportsTeamDrives = true;
       var arg_teamDriveId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1751,6 +1756,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(
             queryMap["teamDriveId"].first, unittest.equals(arg_teamDriveId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1761,7 +1767,8 @@
       res
           .getStartPageToken(
               supportsTeamDrives: arg_supportsTeamDrives,
-              teamDriveId: arg_teamDriveId)
+              teamDriveId: arg_teamDriveId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StartPageToken response) {
         checkStartPageToken(response);
       })));
@@ -1779,6 +1786,7 @@
       var arg_spaces = "foo";
       var arg_supportsTeamDrives = true;
       var arg_teamDriveId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1829,6 +1837,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(
             queryMap["teamDriveId"].first, unittest.equals(arg_teamDriveId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1845,7 +1854,8 @@
               restrictToMyDrive: arg_restrictToMyDrive,
               spaces: arg_spaces,
               supportsTeamDrives: arg_supportsTeamDrives,
-              teamDriveId: arg_teamDriveId)
+              teamDriveId: arg_teamDriveId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ChangeList response) {
         checkChangeList(response);
       })));
@@ -1864,6 +1874,7 @@
       var arg_spaces = "foo";
       var arg_supportsTeamDrives = true;
       var arg_teamDriveId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Channel.fromJson(json);
         checkChannel(obj);
@@ -1917,6 +1928,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(
             queryMap["teamDriveId"].first, unittest.equals(arg_teamDriveId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1933,7 +1945,8 @@
               restrictToMyDrive: arg_restrictToMyDrive,
               spaces: arg_spaces,
               supportsTeamDrives: arg_supportsTeamDrives,
-              teamDriveId: arg_teamDriveId)
+              teamDriveId: arg_teamDriveId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Channel response) {
         checkChannel(response);
       })));
@@ -1945,6 +1958,7 @@
       var mock = new HttpServerMock();
       api.ChannelsResourceApi res = new api.DriveApi(mock).channels;
       var arg_request = buildChannel();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Channel.fromJson(json);
         checkChannel(obj);
@@ -1981,6 +1995,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1988,7 +2003,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.stop(arg_request).then(unittest.expectAsync1((_) {}));
+      res
+          .stop(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
   });
 
@@ -1998,6 +2015,7 @@
       api.CommentsResourceApi res = new api.DriveApi(mock).comments;
       var arg_request = buildComment();
       var arg_fileId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Comment.fromJson(json);
         checkComment(obj);
@@ -2043,6 +2061,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2051,7 +2070,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_fileId)
+          .create(arg_request, arg_fileId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Comment response) {
         checkComment(response);
       })));
@@ -2062,6 +2081,7 @@
       api.CommentsResourceApi res = new api.DriveApi(mock).comments;
       var arg_fileId = "foo";
       var arg_commentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2107,6 +2127,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2114,7 +2135,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_fileId, arg_commentId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_fileId, arg_commentId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -2123,6 +2146,7 @@
       var arg_fileId = "foo";
       var arg_commentId = "foo";
       var arg_includeDeleted = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2170,6 +2194,7 @@
         }
         unittest.expect(queryMap["includeDeleted"].first,
             unittest.equals("$arg_includeDeleted"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2178,7 +2203,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_fileId, arg_commentId, includeDeleted: arg_includeDeleted)
+          .get(arg_fileId, arg_commentId,
+              includeDeleted: arg_includeDeleted, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Comment response) {
         checkComment(response);
       })));
@@ -2192,6 +2218,7 @@
       var arg_pageSize = 42;
       var arg_pageToken = "foo";
       var arg_startModifiedTime = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2242,6 +2269,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(queryMap["startModifiedTime"].first,
             unittest.equals(arg_startModifiedTime));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2254,7 +2282,8 @@
               includeDeleted: arg_includeDeleted,
               pageSize: arg_pageSize,
               pageToken: arg_pageToken,
-              startModifiedTime: arg_startModifiedTime)
+              startModifiedTime: arg_startModifiedTime,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CommentList response) {
         checkCommentList(response);
       })));
@@ -2266,6 +2295,7 @@
       var arg_request = buildComment();
       var arg_fileId = "foo";
       var arg_commentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Comment.fromJson(json);
         checkComment(obj);
@@ -2314,6 +2344,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2322,7 +2353,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_fileId, arg_commentId)
+          .update(arg_request, arg_fileId, arg_commentId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Comment response) {
         checkComment(response);
       })));
@@ -2339,6 +2370,7 @@
       var arg_keepRevisionForever = true;
       var arg_ocrLanguage = "foo";
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.File.fromJson(json);
         checkFile(obj);
@@ -2392,6 +2424,7 @@
             queryMap["ocrLanguage"].first, unittest.equals(arg_ocrLanguage));
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2404,7 +2437,8 @@
               ignoreDefaultVisibility: arg_ignoreDefaultVisibility,
               keepRevisionForever: arg_keepRevisionForever,
               ocrLanguage: arg_ocrLanguage,
-              supportsTeamDrives: arg_supportsTeamDrives)
+              supportsTeamDrives: arg_supportsTeamDrives,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.File response) {
         checkFile(response);
       })));
@@ -2422,6 +2456,7 @@
       var arg_ocrLanguage = "foo";
       var arg_supportsTeamDrives = true;
       var arg_useContentAsIndexableText = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.File.fromJson(json);
         checkFile(obj);
@@ -2468,6 +2503,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(queryMap["useContentAsIndexableText"].first,
             unittest.equals("$arg_useContentAsIndexableText"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2481,7 +2517,8 @@
               keepRevisionForever: arg_keepRevisionForever,
               ocrLanguage: arg_ocrLanguage,
               supportsTeamDrives: arg_supportsTeamDrives,
-              useContentAsIndexableText: arg_useContentAsIndexableText)
+              useContentAsIndexableText: arg_useContentAsIndexableText,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.File response) {
         checkFile(response);
       })));
@@ -2492,6 +2529,7 @@
       api.FilesResourceApi res = new api.DriveApi(mock).files;
       var arg_fileId = "foo";
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2530,6 +2568,7 @@
         }
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2538,13 +2577,15 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_fileId, supportsTeamDrives: arg_supportsTeamDrives)
+          .delete(arg_fileId,
+              supportsTeamDrives: arg_supportsTeamDrives, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--emptyTrash", () {
       var mock = new HttpServerMock();
       api.FilesResourceApi res = new api.DriveApi(mock).files;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2578,6 +2619,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2585,7 +2627,7 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.emptyTrash().then(unittest.expectAsync1((_) {}));
+      res.emptyTrash($fields: arg_$fields).then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--export", () {
@@ -2596,6 +2638,7 @@
       api.FilesResourceApi res = new api.DriveApi(mock).files;
       var arg_fileId = "foo";
       var arg_mimeType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2640,6 +2683,7 @@
         }
         unittest.expect(
             queryMap["mimeType"].first, unittest.equals(arg_mimeType));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2647,7 +2691,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.export(arg_fileId, arg_mimeType).then(unittest.expectAsync1((_) {}));
+      res
+          .export(arg_fileId, arg_mimeType, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--generateIds", () {
@@ -2655,6 +2701,7 @@
       api.FilesResourceApi res = new api.DriveApi(mock).files;
       var arg_count = 42;
       var arg_space = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2691,6 +2738,7 @@
         unittest.expect(core.int.parse(queryMap["count"].first),
             unittest.equals(arg_count));
         unittest.expect(queryMap["space"].first, unittest.equals(arg_space));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2699,7 +2747,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .generateIds(count: arg_count, space: arg_space)
+          .generateIds(count: arg_count, space: arg_space, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GeneratedIds response) {
         checkGeneratedIds(response);
       })));
@@ -2714,6 +2762,7 @@
       var arg_fileId = "foo";
       var arg_acknowledgeAbuse = true;
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2754,6 +2803,7 @@
             unittest.equals("$arg_acknowledgeAbuse"));
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2764,7 +2814,8 @@
       res
           .get(arg_fileId,
               acknowledgeAbuse: arg_acknowledgeAbuse,
-              supportsTeamDrives: arg_supportsTeamDrives)
+              supportsTeamDrives: arg_supportsTeamDrives,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.File response) {
         checkFile(response);
       })));
@@ -2783,6 +2834,7 @@
       var arg_spaces = "foo";
       var arg_supportsTeamDrives = true;
       var arg_teamDriveId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2833,6 +2885,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(
             queryMap["teamDriveId"].first, unittest.equals(arg_teamDriveId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2851,7 +2904,8 @@
               q: arg_q,
               spaces: arg_spaces,
               supportsTeamDrives: arg_supportsTeamDrives,
-              teamDriveId: arg_teamDriveId)
+              teamDriveId: arg_teamDriveId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.FileList response) {
         checkFileList(response);
       })));
@@ -2871,6 +2925,7 @@
       var arg_removeParents = "foo";
       var arg_supportsTeamDrives = true;
       var arg_useContentAsIndexableText = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.File.fromJson(json);
         checkFile(obj);
@@ -2922,6 +2977,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(queryMap["useContentAsIndexableText"].first,
             unittest.equals("$arg_useContentAsIndexableText"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2936,7 +2992,8 @@
               ocrLanguage: arg_ocrLanguage,
               removeParents: arg_removeParents,
               supportsTeamDrives: arg_supportsTeamDrives,
-              useContentAsIndexableText: arg_useContentAsIndexableText)
+              useContentAsIndexableText: arg_useContentAsIndexableText,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.File response) {
         checkFile(response);
       })));
@@ -2952,6 +3009,7 @@
       var arg_fileId = "foo";
       var arg_acknowledgeAbuse = true;
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Channel.fromJson(json);
         checkChannel(obj);
@@ -3001,6 +3059,7 @@
             unittest.equals("$arg_acknowledgeAbuse"));
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3011,7 +3070,8 @@
       res
           .watch(arg_request, arg_fileId,
               acknowledgeAbuse: arg_acknowledgeAbuse,
-              supportsTeamDrives: arg_supportsTeamDrives)
+              supportsTeamDrives: arg_supportsTeamDrives,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Channel response) {
         checkChannel(response);
       })));
@@ -3028,6 +3088,7 @@
       var arg_sendNotificationEmail = true;
       var arg_supportsTeamDrives = true;
       var arg_transferOwnership = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Permission.fromJson(json);
         checkPermission(obj);
@@ -3081,6 +3142,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(queryMap["transferOwnership"].first,
             unittest.equals("$arg_transferOwnership"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3093,7 +3155,8 @@
               emailMessage: arg_emailMessage,
               sendNotificationEmail: arg_sendNotificationEmail,
               supportsTeamDrives: arg_supportsTeamDrives,
-              transferOwnership: arg_transferOwnership)
+              transferOwnership: arg_transferOwnership,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Permission response) {
         checkPermission(response);
       })));
@@ -3105,6 +3168,7 @@
       var arg_fileId = "foo";
       var arg_permissionId = "foo";
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3152,6 +3216,7 @@
         }
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3161,7 +3226,7 @@
       }), true);
       res
           .delete(arg_fileId, arg_permissionId,
-              supportsTeamDrives: arg_supportsTeamDrives)
+              supportsTeamDrives: arg_supportsTeamDrives, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -3171,6 +3236,7 @@
       var arg_fileId = "foo";
       var arg_permissionId = "foo";
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3218,6 +3284,7 @@
         }
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3227,7 +3294,7 @@
       }), true);
       res
           .get(arg_fileId, arg_permissionId,
-              supportsTeamDrives: arg_supportsTeamDrives)
+              supportsTeamDrives: arg_supportsTeamDrives, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Permission response) {
         checkPermission(response);
       })));
@@ -3240,6 +3307,7 @@
       var arg_pageSize = 42;
       var arg_pageToken = "foo";
       var arg_supportsTeamDrives = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3288,6 +3356,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(queryMap["supportsTeamDrives"].first,
             unittest.equals("$arg_supportsTeamDrives"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3299,7 +3368,8 @@
           .list(arg_fileId,
               pageSize: arg_pageSize,
               pageToken: arg_pageToken,
-              supportsTeamDrives: arg_supportsTeamDrives)
+              supportsTeamDrives: arg_supportsTeamDrives,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PermissionList response) {
         checkPermissionList(response);
       })));
@@ -3314,6 +3384,7 @@
       var arg_removeExpiration = true;
       var arg_supportsTeamDrives = true;
       var arg_transferOwnership = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Permission.fromJson(json);
         checkPermission(obj);
@@ -3368,6 +3439,7 @@
             unittest.equals("$arg_supportsTeamDrives"));
         unittest.expect(queryMap["transferOwnership"].first,
             unittest.equals("$arg_transferOwnership"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3379,7 +3451,8 @@
           .update(arg_request, arg_fileId, arg_permissionId,
               removeExpiration: arg_removeExpiration,
               supportsTeamDrives: arg_supportsTeamDrives,
-              transferOwnership: arg_transferOwnership)
+              transferOwnership: arg_transferOwnership,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Permission response) {
         checkPermission(response);
       })));
@@ -3393,6 +3466,7 @@
       var arg_request = buildReply();
       var arg_fileId = "foo";
       var arg_commentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Reply.fromJson(json);
         checkReply(obj);
@@ -3447,6 +3521,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3455,7 +3530,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_fileId, arg_commentId)
+          .create(arg_request, arg_fileId, arg_commentId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Reply response) {
         checkReply(response);
       })));
@@ -3467,6 +3542,7 @@
       var arg_fileId = "foo";
       var arg_commentId = "foo";
       var arg_replyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3521,6 +3597,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3529,7 +3606,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_fileId, arg_commentId, arg_replyId)
+          .delete(arg_fileId, arg_commentId, arg_replyId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -3540,6 +3617,7 @@
       var arg_commentId = "foo";
       var arg_replyId = "foo";
       var arg_includeDeleted = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3596,6 +3674,7 @@
         }
         unittest.expect(queryMap["includeDeleted"].first,
             unittest.equals("$arg_includeDeleted"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3605,7 +3684,7 @@
       }), true);
       res
           .get(arg_fileId, arg_commentId, arg_replyId,
-              includeDeleted: arg_includeDeleted)
+              includeDeleted: arg_includeDeleted, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Reply response) {
         checkReply(response);
       })));
@@ -3619,6 +3698,7 @@
       var arg_includeDeleted = true;
       var arg_pageSize = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3676,6 +3756,7 @@
             unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3687,7 +3768,8 @@
           .list(arg_fileId, arg_commentId,
               includeDeleted: arg_includeDeleted,
               pageSize: arg_pageSize,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ReplyList response) {
         checkReplyList(response);
       })));
@@ -3700,6 +3782,7 @@
       var arg_fileId = "foo";
       var arg_commentId = "foo";
       var arg_replyId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Reply.fromJson(json);
         checkReply(obj);
@@ -3757,6 +3840,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3765,7 +3849,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_fileId, arg_commentId, arg_replyId)
+          .update(arg_request, arg_fileId, arg_commentId, arg_replyId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Reply response) {
         checkReply(response);
       })));
@@ -3778,6 +3863,7 @@
       api.RevisionsResourceApi res = new api.DriveApi(mock).revisions;
       var arg_fileId = "foo";
       var arg_revisionId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3823,6 +3909,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3831,7 +3918,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_fileId, arg_revisionId)
+          .delete(arg_fileId, arg_revisionId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -3844,6 +3931,7 @@
       var arg_fileId = "foo";
       var arg_revisionId = "foo";
       var arg_acknowledgeAbuse = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3891,6 +3979,7 @@
         }
         unittest.expect(queryMap["acknowledgeAbuse"].first,
             unittest.equals("$arg_acknowledgeAbuse"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3900,7 +3989,7 @@
       }), true);
       res
           .get(arg_fileId, arg_revisionId,
-              acknowledgeAbuse: arg_acknowledgeAbuse)
+              acknowledgeAbuse: arg_acknowledgeAbuse, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Revision response) {
         checkRevision(response);
       })));
@@ -3912,6 +4001,7 @@
       var arg_fileId = "foo";
       var arg_pageSize = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3958,6 +4048,7 @@
             unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3966,7 +4057,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_fileId, pageSize: arg_pageSize, pageToken: arg_pageToken)
+          .list(arg_fileId,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RevisionList response) {
         checkRevisionList(response);
       })));
@@ -3978,6 +4072,7 @@
       var arg_request = buildRevision();
       var arg_fileId = "foo";
       var arg_revisionId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Revision.fromJson(json);
         checkRevision(obj);
@@ -4026,6 +4121,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4034,7 +4130,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_fileId, arg_revisionId)
+          .update(arg_request, arg_fileId, arg_revisionId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Revision response) {
         checkRevision(response);
       })));
@@ -4047,6 +4143,7 @@
       api.TeamdrivesResourceApi res = new api.DriveApi(mock).teamdrives;
       var arg_request = buildTeamDrive();
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TeamDrive.fromJson(json);
         checkTeamDrive(obj);
@@ -4085,6 +4182,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4093,7 +4191,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_requestId)
+          .create(arg_request, arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TeamDrive response) {
         checkTeamDrive(response);
       })));
@@ -4103,6 +4201,7 @@
       var mock = new HttpServerMock();
       api.TeamdrivesResourceApi res = new api.DriveApi(mock).teamdrives;
       var arg_teamDriveId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4139,6 +4238,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4146,13 +4246,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_teamDriveId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_teamDriveId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
       var mock = new HttpServerMock();
       api.TeamdrivesResourceApi res = new api.DriveApi(mock).teamdrives;
       var arg_teamDriveId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4189,6 +4292,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4197,7 +4301,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_teamDriveId)
+          .get(arg_teamDriveId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TeamDrive response) {
         checkTeamDrive(response);
       })));
@@ -4208,6 +4312,7 @@
       api.TeamdrivesResourceApi res = new api.DriveApi(mock).teamdrives;
       var arg_pageSize = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4245,6 +4350,7 @@
             unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4253,7 +4359,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(pageSize: arg_pageSize, pageToken: arg_pageToken)
+          .list(
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TeamDriveList response) {
         checkTeamDriveList(response);
       })));
@@ -4264,6 +4373,7 @@
       api.TeamdrivesResourceApi res = new api.DriveApi(mock).teamdrives;
       var arg_request = buildTeamDrive();
       var arg_teamDriveId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TeamDrive.fromJson(json);
         checkTeamDrive(obj);
@@ -4303,6 +4413,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4311,7 +4422,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_teamDriveId)
+          .update(arg_request, arg_teamDriveId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TeamDrive response) {
         checkTeamDrive(response);
       })));
diff --git a/generated/googleapis/test/firebasedynamiclinks/v1_test.dart b/generated/googleapis/test/firebasedynamiclinks/v1_test.dart
index c961af2..5c4a7a1 100644
--- a/generated/googleapis/test/firebasedynamiclinks/v1_test.dart
+++ b/generated/googleapis/test/firebasedynamiclinks/v1_test.dart
@@ -119,14 +119,14 @@
   buildCounterCreateShortDynamicLinkRequest--;
 }
 
-buildUnnamed2241() {
+buildUnnamed2239() {
   var o = new core.List<api.DynamicLinkWarning>();
   o.add(buildDynamicLinkWarning());
   o.add(buildDynamicLinkWarning());
   return o;
 }
 
-checkUnnamed2241(core.List<api.DynamicLinkWarning> o) {
+checkUnnamed2239(core.List<api.DynamicLinkWarning> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDynamicLinkWarning(o[0]);
   checkDynamicLinkWarning(o[1]);
@@ -139,7 +139,7 @@
   if (buildCounterCreateShortDynamicLinkResponse < 3) {
     o.previewLink = "foo";
     o.shortLink = "foo";
-    o.warning = buildUnnamed2241();
+    o.warning = buildUnnamed2239();
   }
   buildCounterCreateShortDynamicLinkResponse--;
   return o;
@@ -150,11 +150,30 @@
   if (buildCounterCreateShortDynamicLinkResponse < 3) {
     unittest.expect(o.previewLink, unittest.equals('foo'));
     unittest.expect(o.shortLink, unittest.equals('foo'));
-    checkUnnamed2241(o.warning);
+    checkUnnamed2239(o.warning);
   }
   buildCounterCreateShortDynamicLinkResponse--;
 }
 
+core.int buildCounterDesktopInfo = 0;
+buildDesktopInfo() {
+  var o = new api.DesktopInfo();
+  buildCounterDesktopInfo++;
+  if (buildCounterDesktopInfo < 3) {
+    o.desktopFallbackLink = "foo";
+  }
+  buildCounterDesktopInfo--;
+  return o;
+}
+
+checkDesktopInfo(api.DesktopInfo o) {
+  buildCounterDesktopInfo++;
+  if (buildCounterDesktopInfo < 3) {
+    unittest.expect(o.desktopFallbackLink, unittest.equals('foo'));
+  }
+  buildCounterDesktopInfo--;
+}
+
 core.int buildCounterDeviceInfo = 0;
 buildDeviceInfo() {
   var o = new api.DeviceInfo();
@@ -212,6 +231,7 @@
   if (buildCounterDynamicLinkInfo < 3) {
     o.analyticsInfo = buildAnalyticsInfo();
     o.androidInfo = buildAndroidInfo();
+    o.desktopInfo = buildDesktopInfo();
     o.dynamicLinkDomain = "foo";
     o.iosInfo = buildIosInfo();
     o.link = "foo";
@@ -227,6 +247,7 @@
   if (buildCounterDynamicLinkInfo < 3) {
     checkAnalyticsInfo(o.analyticsInfo);
     checkAndroidInfo(o.androidInfo);
+    checkDesktopInfo(o.desktopInfo);
     unittest.expect(o.dynamicLinkDomain, unittest.equals('foo'));
     checkIosInfo(o.iosInfo);
     unittest.expect(o.link, unittest.equals('foo'));
@@ -236,14 +257,14 @@
   buildCounterDynamicLinkInfo--;
 }
 
-buildUnnamed2242() {
+buildUnnamed2240() {
   var o = new core.List<api.DynamicLinkEventStat>();
   o.add(buildDynamicLinkEventStat());
   o.add(buildDynamicLinkEventStat());
   return o;
 }
 
-checkUnnamed2242(core.List<api.DynamicLinkEventStat> o) {
+checkUnnamed2240(core.List<api.DynamicLinkEventStat> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDynamicLinkEventStat(o[0]);
   checkDynamicLinkEventStat(o[1]);
@@ -254,7 +275,7 @@
   var o = new api.DynamicLinkStats();
   buildCounterDynamicLinkStats++;
   if (buildCounterDynamicLinkStats < 3) {
-    o.linkEventStats = buildUnnamed2242();
+    o.linkEventStats = buildUnnamed2240();
   }
   buildCounterDynamicLinkStats--;
   return o;
@@ -263,7 +284,7 @@
 checkDynamicLinkStats(api.DynamicLinkStats o) {
   buildCounterDynamicLinkStats++;
   if (buildCounterDynamicLinkStats < 3) {
-    checkUnnamed2242(o.linkEventStats);
+    checkUnnamed2240(o.linkEventStats);
   }
   buildCounterDynamicLinkStats--;
 }
@@ -546,6 +567,14 @@
     });
   });
 
+  unittest.group("obj-schema-DesktopInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDesktopInfo();
+      var od = new api.DesktopInfo.fromJson(o.toJson());
+      checkDesktopInfo(od);
+    });
+  });
+
   unittest.group("obj-schema-DeviceInfo", () {
     unittest.test("to-json--from-json", () {
       var o = buildDeviceInfo();
@@ -657,6 +686,7 @@
       api.ShortLinksResourceApi res =
           new api.FirebasedynamiclinksApi(mock).shortLinks;
       var arg_request = buildCreateShortDynamicLinkRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CreateShortDynamicLinkRequest.fromJson(json);
         checkCreateShortDynamicLinkRequest(obj);
@@ -690,6 +720,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -697,7 +728,7 @@
         var resp = convert.JSON.encode(buildCreateShortDynamicLinkResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.create(arg_request).then(
+      res.create(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.CreateShortDynamicLinkResponse response) {
         checkCreateShortDynamicLinkResponse(response);
       })));
@@ -710,6 +741,7 @@
       api.V1ResourceApi res = new api.FirebasedynamiclinksApi(mock).v1;
       var arg_dynamicLink = "foo";
       var arg_durationDays = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -751,6 +783,7 @@
         }
         unittest.expect(
             queryMap["durationDays"].first, unittest.equals(arg_durationDays));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -759,7 +792,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getLinkStats(arg_dynamicLink, durationDays: arg_durationDays)
+          .getLinkStats(arg_dynamicLink,
+              durationDays: arg_durationDays, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DynamicLinkStats response) {
         checkDynamicLinkStats(response);
       })));
@@ -769,6 +803,7 @@
       var mock = new HttpServerMock();
       api.V1ResourceApi res = new api.FirebasedynamiclinksApi(mock).v1;
       var arg_request = buildGetIosPostInstallAttributionRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetIosPostInstallAttributionRequest.fromJson(json);
         checkGetIosPostInstallAttributionRequest(obj);
@@ -802,6 +837,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -810,7 +846,7 @@
             convert.JSON.encode(buildGetIosPostInstallAttributionResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.installAttribution(arg_request).then(unittest
+      res.installAttribution(arg_request, $fields: arg_$fields).then(unittest
           .expectAsync1(((api.GetIosPostInstallAttributionResponse response) {
         checkGetIosPostInstallAttributionResponse(response);
       })));
diff --git a/generated/googleapis/test/firebaseremoteconfig/v1_test.dart b/generated/googleapis/test/firebaseremoteconfig/v1_test.dart
index d7bc4bf..ce627e9 100644
--- a/generated/googleapis/test/firebaseremoteconfig/v1_test.dart
+++ b/generated/googleapis/test/firebaseremoteconfig/v1_test.dart
@@ -50,27 +50,27 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed795() {
+buildUnnamed780() {
   var o = new core.List<api.RemoteConfigCondition>();
   o.add(buildRemoteConfigCondition());
   o.add(buildRemoteConfigCondition());
   return o;
 }
 
-checkUnnamed795(core.List<api.RemoteConfigCondition> o) {
+checkUnnamed780(core.List<api.RemoteConfigCondition> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRemoteConfigCondition(o[0]);
   checkRemoteConfigCondition(o[1]);
 }
 
-buildUnnamed796() {
+buildUnnamed781() {
   var o = new core.Map<core.String, api.RemoteConfigParameter>();
   o["x"] = buildRemoteConfigParameter();
   o["y"] = buildRemoteConfigParameter();
   return o;
 }
 
-checkUnnamed796(core.Map<core.String, api.RemoteConfigParameter> o) {
+checkUnnamed781(core.Map<core.String, api.RemoteConfigParameter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRemoteConfigParameter(o["x"]);
   checkRemoteConfigParameter(o["y"]);
@@ -81,8 +81,8 @@
   var o = new api.RemoteConfig();
   buildCounterRemoteConfig++;
   if (buildCounterRemoteConfig < 3) {
-    o.conditions = buildUnnamed795();
-    o.parameters = buildUnnamed796();
+    o.conditions = buildUnnamed780();
+    o.parameters = buildUnnamed781();
   }
   buildCounterRemoteConfig--;
   return o;
@@ -91,8 +91,8 @@
 checkRemoteConfig(api.RemoteConfig o) {
   buildCounterRemoteConfig++;
   if (buildCounterRemoteConfig < 3) {
-    checkUnnamed795(o.conditions);
-    checkUnnamed796(o.parameters);
+    checkUnnamed780(o.conditions);
+    checkUnnamed781(o.parameters);
   }
   buildCounterRemoteConfig--;
 }
@@ -120,14 +120,14 @@
   buildCounterRemoteConfigCondition--;
 }
 
-buildUnnamed797() {
+buildUnnamed782() {
   var o = new core.Map<core.String, api.RemoteConfigParameterValue>();
   o["x"] = buildRemoteConfigParameterValue();
   o["y"] = buildRemoteConfigParameterValue();
   return o;
 }
 
-checkUnnamed797(core.Map<core.String, api.RemoteConfigParameterValue> o) {
+checkUnnamed782(core.Map<core.String, api.RemoteConfigParameterValue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRemoteConfigParameterValue(o["x"]);
   checkRemoteConfigParameterValue(o["y"]);
@@ -138,7 +138,7 @@
   var o = new api.RemoteConfigParameter();
   buildCounterRemoteConfigParameter++;
   if (buildCounterRemoteConfigParameter < 3) {
-    o.conditionalValues = buildUnnamed797();
+    o.conditionalValues = buildUnnamed782();
     o.defaultValue = buildRemoteConfigParameterValue();
   }
   buildCounterRemoteConfigParameter--;
@@ -148,7 +148,7 @@
 checkRemoteConfigParameter(api.RemoteConfigParameter o) {
   buildCounterRemoteConfigParameter++;
   if (buildCounterRemoteConfigParameter < 3) {
-    checkUnnamed797(o.conditionalValues);
+    checkUnnamed782(o.conditionalValues);
     checkRemoteConfigParameterValue(o.defaultValue);
   }
   buildCounterRemoteConfigParameter--;
@@ -214,6 +214,7 @@
       api.ProjectsResourceApi res =
           new api.FirebaseremoteconfigApi(mock).projects;
       var arg_project = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -245,6 +246,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -253,7 +255,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getRemoteConfig(arg_project)
+          .getRemoteConfig(arg_project, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RemoteConfig response) {
         checkRemoteConfig(response);
       })));
@@ -266,6 +268,7 @@
       var arg_request = buildRemoteConfig();
       var arg_project = "foo";
       var arg_validateOnly = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RemoteConfig.fromJson(json);
         checkRemoteConfig(obj);
@@ -302,6 +305,7 @@
         }
         unittest.expect(queryMap["validateOnly"].first,
             unittest.equals("$arg_validateOnly"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -311,7 +315,7 @@
       }), true);
       res
           .updateRemoteConfig(arg_request, arg_project,
-              validateOnly: arg_validateOnly)
+              validateOnly: arg_validateOnly, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RemoteConfig response) {
         checkRemoteConfig(response);
       })));
diff --git a/generated/googleapis/test/firebaserules/v1_test.dart b/generated/googleapis/test/firebaserules/v1_test.dart
index a7cbb94..c3b362d 100644
--- a/generated/googleapis/test/firebaserules/v1_test.dart
+++ b/generated/googleapis/test/firebaserules/v1_test.dart
@@ -117,7 +117,7 @@
   buildCounterFile--;
 }
 
-buildUnnamed3229() {
+buildUnnamed3244() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -132,7 +132,7 @@
   return o;
 }
 
-checkUnnamed3229(core.List<core.Object> o) {
+checkUnnamed3244(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted2 = (o[0]) as core.Map;
   unittest.expect(casted2, unittest.hasLength(3));
@@ -151,7 +151,7 @@
   var o = new api.FunctionCall();
   buildCounterFunctionCall++;
   if (buildCounterFunctionCall < 3) {
-    o.args = buildUnnamed3229();
+    o.args = buildUnnamed3244();
     o.function = "foo";
   }
   buildCounterFunctionCall--;
@@ -161,20 +161,20 @@
 checkFunctionCall(api.FunctionCall o) {
   buildCounterFunctionCall++;
   if (buildCounterFunctionCall < 3) {
-    checkUnnamed3229(o.args);
+    checkUnnamed3244(o.args);
     unittest.expect(o.function, unittest.equals('foo'));
   }
   buildCounterFunctionCall--;
 }
 
-buildUnnamed3230() {
+buildUnnamed3245() {
   var o = new core.List<api.Arg>();
   o.add(buildArg());
   o.add(buildArg());
   return o;
 }
 
-checkUnnamed3230(core.List<api.Arg> o) {
+checkUnnamed3245(core.List<api.Arg> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkArg(o[0]);
   checkArg(o[1]);
@@ -185,7 +185,7 @@
   var o = new api.FunctionMock();
   buildCounterFunctionMock++;
   if (buildCounterFunctionMock < 3) {
-    o.args = buildUnnamed3230();
+    o.args = buildUnnamed3245();
     o.function = "foo";
     o.result = buildResult();
   }
@@ -196,7 +196,7 @@
 checkFunctionMock(api.FunctionMock o) {
   buildCounterFunctionMock++;
   if (buildCounterFunctionMock < 3) {
-    checkUnnamed3230(o.args);
+    checkUnnamed3245(o.args);
     unittest.expect(o.function, unittest.equals('foo'));
     checkResult(o.result);
   }
@@ -253,14 +253,14 @@
   buildCounterIssue--;
 }
 
-buildUnnamed3231() {
+buildUnnamed3246() {
   var o = new core.List<api.Release>();
   o.add(buildRelease());
   o.add(buildRelease());
   return o;
 }
 
-checkUnnamed3231(core.List<api.Release> o) {
+checkUnnamed3246(core.List<api.Release> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRelease(o[0]);
   checkRelease(o[1]);
@@ -272,7 +272,7 @@
   buildCounterListReleasesResponse++;
   if (buildCounterListReleasesResponse < 3) {
     o.nextPageToken = "foo";
-    o.releases = buildUnnamed3231();
+    o.releases = buildUnnamed3246();
   }
   buildCounterListReleasesResponse--;
   return o;
@@ -282,19 +282,19 @@
   buildCounterListReleasesResponse++;
   if (buildCounterListReleasesResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3231(o.releases);
+    checkUnnamed3246(o.releases);
   }
   buildCounterListReleasesResponse--;
 }
 
-buildUnnamed3232() {
+buildUnnamed3247() {
   var o = new core.List<api.Ruleset>();
   o.add(buildRuleset());
   o.add(buildRuleset());
   return o;
 }
 
-checkUnnamed3232(core.List<api.Ruleset> o) {
+checkUnnamed3247(core.List<api.Ruleset> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRuleset(o[0]);
   checkRuleset(o[1]);
@@ -306,7 +306,7 @@
   buildCounterListRulesetsResponse++;
   if (buildCounterListRulesetsResponse < 3) {
     o.nextPageToken = "foo";
-    o.rulesets = buildUnnamed3232();
+    o.rulesets = buildUnnamed3247();
   }
   buildCounterListRulesetsResponse--;
   return o;
@@ -316,7 +316,7 @@
   buildCounterListRulesetsResponse++;
   if (buildCounterListRulesetsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3232(o.rulesets);
+    checkUnnamed3247(o.rulesets);
   }
   buildCounterListRulesetsResponse--;
 }
@@ -398,14 +398,14 @@
   buildCounterRuleset--;
 }
 
-buildUnnamed3233() {
+buildUnnamed3248() {
   var o = new core.List<api.File>();
   o.add(buildFile());
   o.add(buildFile());
   return o;
 }
 
-checkUnnamed3233(core.List<api.File> o) {
+checkUnnamed3248(core.List<api.File> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFile(o[0]);
   checkFile(o[1]);
@@ -416,7 +416,7 @@
   var o = new api.Source();
   buildCounterSource++;
   if (buildCounterSource < 3) {
-    o.files = buildUnnamed3233();
+    o.files = buildUnnamed3248();
   }
   buildCounterSource--;
   return o;
@@ -425,7 +425,7 @@
 checkSource(api.Source o) {
   buildCounterSource++;
   if (buildCounterSource < 3) {
-    checkUnnamed3233(o.files);
+    checkUnnamed3248(o.files);
   }
   buildCounterSource--;
 }
@@ -453,14 +453,14 @@
   buildCounterSourcePosition--;
 }
 
-buildUnnamed3234() {
+buildUnnamed3249() {
   var o = new core.List<api.FunctionMock>();
   o.add(buildFunctionMock());
   o.add(buildFunctionMock());
   return o;
 }
 
-checkUnnamed3234(core.List<api.FunctionMock> o) {
+checkUnnamed3249(core.List<api.FunctionMock> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFunctionMock(o[0]);
   checkFunctionMock(o[1]);
@@ -472,7 +472,7 @@
   buildCounterTestCase++;
   if (buildCounterTestCase < 3) {
     o.expectation = "foo";
-    o.functionMocks = buildUnnamed3234();
+    o.functionMocks = buildUnnamed3249();
     o.request = {
       'list': [1, 2, 3],
       'bool': true,
@@ -492,7 +492,7 @@
   buildCounterTestCase++;
   if (buildCounterTestCase < 3) {
     unittest.expect(o.expectation, unittest.equals('foo'));
-    checkUnnamed3234(o.functionMocks);
+    checkUnnamed3249(o.functionMocks);
     var casted5 = (o.request) as core.Map;
     unittest.expect(casted5, unittest.hasLength(3));
     unittest.expect(casted5["list"], unittest.equals([1, 2, 3]));
@@ -507,27 +507,27 @@
   buildCounterTestCase--;
 }
 
-buildUnnamed3235() {
+buildUnnamed3250() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3235(core.List<core.String> o) {
+checkUnnamed3250(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3236() {
+buildUnnamed3251() {
   var o = new core.List<api.FunctionCall>();
   o.add(buildFunctionCall());
   o.add(buildFunctionCall());
   return o;
 }
 
-checkUnnamed3236(core.List<api.FunctionCall> o) {
+checkUnnamed3251(core.List<api.FunctionCall> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFunctionCall(o[0]);
   checkFunctionCall(o[1]);
@@ -538,9 +538,9 @@
   var o = new api.TestResult();
   buildCounterTestResult++;
   if (buildCounterTestResult < 3) {
-    o.debugMessages = buildUnnamed3235();
+    o.debugMessages = buildUnnamed3250();
     o.errorPosition = buildSourcePosition();
-    o.functionCalls = buildUnnamed3236();
+    o.functionCalls = buildUnnamed3251();
     o.state = "foo";
   }
   buildCounterTestResult--;
@@ -550,9 +550,9 @@
 checkTestResult(api.TestResult o) {
   buildCounterTestResult++;
   if (buildCounterTestResult < 3) {
-    checkUnnamed3235(o.debugMessages);
+    checkUnnamed3250(o.debugMessages);
     checkSourcePosition(o.errorPosition);
-    checkUnnamed3236(o.functionCalls);
+    checkUnnamed3251(o.functionCalls);
     unittest.expect(o.state, unittest.equals('foo'));
   }
   buildCounterTestResult--;
@@ -579,27 +579,27 @@
   buildCounterTestRulesetRequest--;
 }
 
-buildUnnamed3237() {
+buildUnnamed3252() {
   var o = new core.List<api.Issue>();
   o.add(buildIssue());
   o.add(buildIssue());
   return o;
 }
 
-checkUnnamed3237(core.List<api.Issue> o) {
+checkUnnamed3252(core.List<api.Issue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkIssue(o[0]);
   checkIssue(o[1]);
 }
 
-buildUnnamed3238() {
+buildUnnamed3253() {
   var o = new core.List<api.TestResult>();
   o.add(buildTestResult());
   o.add(buildTestResult());
   return o;
 }
 
-checkUnnamed3238(core.List<api.TestResult> o) {
+checkUnnamed3253(core.List<api.TestResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTestResult(o[0]);
   checkTestResult(o[1]);
@@ -610,8 +610,8 @@
   var o = new api.TestRulesetResponse();
   buildCounterTestRulesetResponse++;
   if (buildCounterTestRulesetResponse < 3) {
-    o.issues = buildUnnamed3237();
-    o.testResults = buildUnnamed3238();
+    o.issues = buildUnnamed3252();
+    o.testResults = buildUnnamed3253();
   }
   buildCounterTestRulesetResponse--;
   return o;
@@ -620,20 +620,20 @@
 checkTestRulesetResponse(api.TestRulesetResponse o) {
   buildCounterTestRulesetResponse++;
   if (buildCounterTestRulesetResponse < 3) {
-    checkUnnamed3237(o.issues);
-    checkUnnamed3238(o.testResults);
+    checkUnnamed3252(o.issues);
+    checkUnnamed3253(o.testResults);
   }
   buildCounterTestRulesetResponse--;
 }
 
-buildUnnamed3239() {
+buildUnnamed3254() {
   var o = new core.List<api.TestCase>();
   o.add(buildTestCase());
   o.add(buildTestCase());
   return o;
 }
 
-checkUnnamed3239(core.List<api.TestCase> o) {
+checkUnnamed3254(core.List<api.TestCase> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTestCase(o[0]);
   checkTestCase(o[1]);
@@ -644,7 +644,7 @@
   var o = new api.TestSuite();
   buildCounterTestSuite++;
   if (buildCounterTestSuite < 3) {
-    o.testCases = buildUnnamed3239();
+    o.testCases = buildUnnamed3254();
   }
   buildCounterTestSuite--;
   return o;
@@ -653,11 +653,32 @@
 checkTestSuite(api.TestSuite o) {
   buildCounterTestSuite++;
   if (buildCounterTestSuite < 3) {
-    checkUnnamed3239(o.testCases);
+    checkUnnamed3254(o.testCases);
   }
   buildCounterTestSuite--;
 }
 
+core.int buildCounterUpdateReleaseRequest = 0;
+buildUpdateReleaseRequest() {
+  var o = new api.UpdateReleaseRequest();
+  buildCounterUpdateReleaseRequest++;
+  if (buildCounterUpdateReleaseRequest < 3) {
+    o.release = buildRelease();
+    o.updateMask = "foo";
+  }
+  buildCounterUpdateReleaseRequest--;
+  return o;
+}
+
+checkUpdateReleaseRequest(api.UpdateReleaseRequest o) {
+  buildCounterUpdateReleaseRequest++;
+  if (buildCounterUpdateReleaseRequest < 3) {
+    checkRelease(o.release);
+    unittest.expect(o.updateMask, unittest.equals('foo'));
+  }
+  buildCounterUpdateReleaseRequest--;
+}
+
 main() {
   unittest.group("obj-schema-Arg", () {
     unittest.test("to-json--from-json", () {
@@ -811,12 +832,21 @@
     });
   });
 
+  unittest.group("obj-schema-UpdateReleaseRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateReleaseRequest();
+      var od = new api.UpdateReleaseRequest.fromJson(o.toJson());
+      checkUpdateReleaseRequest(od);
+    });
+  });
+
   unittest.group("resource-ProjectsResourceApi", () {
     unittest.test("method--test", () {
       var mock = new HttpServerMock();
       api.ProjectsResourceApi res = new api.FirebaserulesApi(mock).projects;
       var arg_request = buildTestRulesetRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestRulesetRequest.fromJson(json);
         checkTestRulesetRequest(obj);
@@ -851,6 +881,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -859,7 +890,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .test(arg_request, arg_name)
+          .test(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TestRulesetResponse response) {
         checkTestRulesetResponse(response);
       })));
@@ -873,6 +904,7 @@
           new api.FirebaserulesApi(mock).projects.releases;
       var arg_request = buildRelease();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Release.fromJson(json);
         checkRelease(obj);
@@ -907,6 +939,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -915,7 +948,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_name)
+          .create(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Release response) {
         checkRelease(response);
       })));
@@ -926,6 +959,7 @@
       api.ProjectsReleasesResourceApi res =
           new api.FirebaserulesApi(mock).projects.releases;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -957,6 +991,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -964,7 +999,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -974,6 +1011,7 @@
       api.ProjectsReleasesResourceApi res =
           new api.FirebaserulesApi(mock).projects.releases;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1005,6 +1043,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1012,7 +1051,9 @@
         var resp = convert.JSON.encode(buildRelease());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Release response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Release response) {
         checkRelease(response);
       })));
     });
@@ -1023,6 +1064,7 @@
           new api.FirebaserulesApi(mock).projects.releases;
       var arg_name = "foo";
       var arg_executableVersion = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1056,6 +1098,7 @@
         }
         unittest.expect(queryMap["executableVersion"].first,
             unittest.equals(arg_executableVersion));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1064,7 +1107,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getExecutable(arg_name, executableVersion: arg_executableVersion)
+          .getExecutable(arg_name,
+              executableVersion: arg_executableVersion, $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.GetReleaseExecutableResponse response) {
         checkGetReleaseExecutableResponse(response);
@@ -1079,6 +1123,7 @@
       var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1115,6 +1160,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1126,18 +1172,76 @@
           .list(arg_name,
               filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListReleasesResponse response) {
         checkListReleasesResponse(response);
       })));
     });
 
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ProjectsReleasesResourceApi res =
+          new api.FirebaserulesApi(mock).projects.releases;
+      var arg_request = buildUpdateReleaseRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UpdateReleaseRequest.fromJson(json);
+        checkUpdateReleaseRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRelease());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Release response) {
+        checkRelease(response);
+      })));
+    });
+
     unittest.test("method--update", () {
       var mock = new HttpServerMock();
       api.ProjectsReleasesResourceApi res =
           new api.FirebaserulesApi(mock).projects.releases;
       var arg_request = buildRelease();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Release.fromJson(json);
         checkRelease(obj);
@@ -1172,6 +1276,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1180,7 +1285,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_name)
+          .update(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Release response) {
         checkRelease(response);
       })));
@@ -1194,6 +1299,7 @@
           new api.FirebaserulesApi(mock).projects.rulesets;
       var arg_request = buildRuleset();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Ruleset.fromJson(json);
         checkRuleset(obj);
@@ -1228,6 +1334,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1236,7 +1343,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_name)
+          .create(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Ruleset response) {
         checkRuleset(response);
       })));
@@ -1247,6 +1354,7 @@
       api.ProjectsRulesetsResourceApi res =
           new api.FirebaserulesApi(mock).projects.rulesets;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1278,6 +1386,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1285,7 +1394,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -1295,6 +1406,7 @@
       api.ProjectsRulesetsResourceApi res =
           new api.FirebaserulesApi(mock).projects.rulesets;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1326,6 +1438,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1333,7 +1446,9 @@
         var resp = convert.JSON.encode(buildRuleset());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Ruleset response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Ruleset response) {
         checkRuleset(response);
       })));
     });
@@ -1343,9 +1458,10 @@
       api.ProjectsRulesetsResourceApi res =
           new api.FirebaserulesApi(mock).projects.rulesets;
       var arg_name = "foo";
+      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
-      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1377,11 +1493,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1391,9 +1508,10 @@
       }), true);
       res
           .list(arg_name,
+              filter: arg_filter,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              filter: arg_filter)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListRulesetsResponse response) {
         checkListRulesetsResponse(response);
       })));
diff --git a/generated/googleapis/test/fitness/v1_test.dart b/generated/googleapis/test/fitness/v1_test.dart
new file mode 100644
index 0000000..bfa871f
--- /dev/null
+++ b/generated/googleapis/test/fitness/v1_test.dart
@@ -0,0 +1,1741 @@
+library googleapis.fitness.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/fitness/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+buildUnnamed1984() {
+  var o = new core.List<api.Dataset>();
+  o.add(buildDataset());
+  o.add(buildDataset());
+  return o;
+}
+
+checkUnnamed1984(core.List<api.Dataset> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataset(o[0]);
+  checkDataset(o[1]);
+}
+
+core.int buildCounterAggregateBucket = 0;
+buildAggregateBucket() {
+  var o = new api.AggregateBucket();
+  buildCounterAggregateBucket++;
+  if (buildCounterAggregateBucket < 3) {
+    o.activity = 42;
+    o.dataset = buildUnnamed1984();
+    o.endTimeMillis = "foo";
+    o.session = buildSession();
+    o.startTimeMillis = "foo";
+    o.type = "foo";
+  }
+  buildCounterAggregateBucket--;
+  return o;
+}
+
+checkAggregateBucket(api.AggregateBucket o) {
+  buildCounterAggregateBucket++;
+  if (buildCounterAggregateBucket < 3) {
+    unittest.expect(o.activity, unittest.equals(42));
+    checkUnnamed1984(o.dataset);
+    unittest.expect(o.endTimeMillis, unittest.equals('foo'));
+    checkSession(o.session);
+    unittest.expect(o.startTimeMillis, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterAggregateBucket--;
+}
+
+core.int buildCounterAggregateBy = 0;
+buildAggregateBy() {
+  var o = new api.AggregateBy();
+  buildCounterAggregateBy++;
+  if (buildCounterAggregateBy < 3) {
+    o.dataSourceId = "foo";
+    o.dataTypeName = "foo";
+  }
+  buildCounterAggregateBy--;
+  return o;
+}
+
+checkAggregateBy(api.AggregateBy o) {
+  buildCounterAggregateBy++;
+  if (buildCounterAggregateBy < 3) {
+    unittest.expect(o.dataSourceId, unittest.equals('foo'));
+    unittest.expect(o.dataTypeName, unittest.equals('foo'));
+  }
+  buildCounterAggregateBy--;
+}
+
+buildUnnamed1985() {
+  var o = new core.List<api.AggregateBy>();
+  o.add(buildAggregateBy());
+  o.add(buildAggregateBy());
+  return o;
+}
+
+checkUnnamed1985(core.List<api.AggregateBy> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAggregateBy(o[0]);
+  checkAggregateBy(o[1]);
+}
+
+buildUnnamed1986() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1986(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAggregateRequest = 0;
+buildAggregateRequest() {
+  var o = new api.AggregateRequest();
+  buildCounterAggregateRequest++;
+  if (buildCounterAggregateRequest < 3) {
+    o.aggregateBy = buildUnnamed1985();
+    o.bucketByActivitySegment = buildBucketByActivity();
+    o.bucketByActivityType = buildBucketByActivity();
+    o.bucketBySession = buildBucketBySession();
+    o.bucketByTime = buildBucketByTime();
+    o.endTimeMillis = "foo";
+    o.filteredDataQualityStandard = buildUnnamed1986();
+    o.startTimeMillis = "foo";
+  }
+  buildCounterAggregateRequest--;
+  return o;
+}
+
+checkAggregateRequest(api.AggregateRequest o) {
+  buildCounterAggregateRequest++;
+  if (buildCounterAggregateRequest < 3) {
+    checkUnnamed1985(o.aggregateBy);
+    checkBucketByActivity(o.bucketByActivitySegment);
+    checkBucketByActivity(o.bucketByActivityType);
+    checkBucketBySession(o.bucketBySession);
+    checkBucketByTime(o.bucketByTime);
+    unittest.expect(o.endTimeMillis, unittest.equals('foo'));
+    checkUnnamed1986(o.filteredDataQualityStandard);
+    unittest.expect(o.startTimeMillis, unittest.equals('foo'));
+  }
+  buildCounterAggregateRequest--;
+}
+
+buildUnnamed1987() {
+  var o = new core.List<api.AggregateBucket>();
+  o.add(buildAggregateBucket());
+  o.add(buildAggregateBucket());
+  return o;
+}
+
+checkUnnamed1987(core.List<api.AggregateBucket> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAggregateBucket(o[0]);
+  checkAggregateBucket(o[1]);
+}
+
+core.int buildCounterAggregateResponse = 0;
+buildAggregateResponse() {
+  var o = new api.AggregateResponse();
+  buildCounterAggregateResponse++;
+  if (buildCounterAggregateResponse < 3) {
+    o.bucket = buildUnnamed1987();
+  }
+  buildCounterAggregateResponse--;
+  return o;
+}
+
+checkAggregateResponse(api.AggregateResponse o) {
+  buildCounterAggregateResponse++;
+  if (buildCounterAggregateResponse < 3) {
+    checkUnnamed1987(o.bucket);
+  }
+  buildCounterAggregateResponse--;
+}
+
+core.int buildCounterApplication = 0;
+buildApplication() {
+  var o = new api.Application();
+  buildCounterApplication++;
+  if (buildCounterApplication < 3) {
+    o.detailsUrl = "foo";
+    o.name = "foo";
+    o.packageName = "foo";
+    o.version = "foo";
+  }
+  buildCounterApplication--;
+  return o;
+}
+
+checkApplication(api.Application o) {
+  buildCounterApplication++;
+  if (buildCounterApplication < 3) {
+    unittest.expect(o.detailsUrl, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.packageName, unittest.equals('foo'));
+    unittest.expect(o.version, unittest.equals('foo'));
+  }
+  buildCounterApplication--;
+}
+
+core.int buildCounterBucketByActivity = 0;
+buildBucketByActivity() {
+  var o = new api.BucketByActivity();
+  buildCounterBucketByActivity++;
+  if (buildCounterBucketByActivity < 3) {
+    o.activityDataSourceId = "foo";
+    o.minDurationMillis = "foo";
+  }
+  buildCounterBucketByActivity--;
+  return o;
+}
+
+checkBucketByActivity(api.BucketByActivity o) {
+  buildCounterBucketByActivity++;
+  if (buildCounterBucketByActivity < 3) {
+    unittest.expect(o.activityDataSourceId, unittest.equals('foo'));
+    unittest.expect(o.minDurationMillis, unittest.equals('foo'));
+  }
+  buildCounterBucketByActivity--;
+}
+
+core.int buildCounterBucketBySession = 0;
+buildBucketBySession() {
+  var o = new api.BucketBySession();
+  buildCounterBucketBySession++;
+  if (buildCounterBucketBySession < 3) {
+    o.minDurationMillis = "foo";
+  }
+  buildCounterBucketBySession--;
+  return o;
+}
+
+checkBucketBySession(api.BucketBySession o) {
+  buildCounterBucketBySession++;
+  if (buildCounterBucketBySession < 3) {
+    unittest.expect(o.minDurationMillis, unittest.equals('foo'));
+  }
+  buildCounterBucketBySession--;
+}
+
+core.int buildCounterBucketByTime = 0;
+buildBucketByTime() {
+  var o = new api.BucketByTime();
+  buildCounterBucketByTime++;
+  if (buildCounterBucketByTime < 3) {
+    o.durationMillis = "foo";
+    o.period = buildBucketByTimePeriod();
+  }
+  buildCounterBucketByTime--;
+  return o;
+}
+
+checkBucketByTime(api.BucketByTime o) {
+  buildCounterBucketByTime++;
+  if (buildCounterBucketByTime < 3) {
+    unittest.expect(o.durationMillis, unittest.equals('foo'));
+    checkBucketByTimePeriod(o.period);
+  }
+  buildCounterBucketByTime--;
+}
+
+core.int buildCounterBucketByTimePeriod = 0;
+buildBucketByTimePeriod() {
+  var o = new api.BucketByTimePeriod();
+  buildCounterBucketByTimePeriod++;
+  if (buildCounterBucketByTimePeriod < 3) {
+    o.timeZoneId = "foo";
+    o.type = "foo";
+    o.value = 42;
+  }
+  buildCounterBucketByTimePeriod--;
+  return o;
+}
+
+checkBucketByTimePeriod(api.BucketByTimePeriod o) {
+  buildCounterBucketByTimePeriod++;
+  if (buildCounterBucketByTimePeriod < 3) {
+    unittest.expect(o.timeZoneId, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals(42));
+  }
+  buildCounterBucketByTimePeriod--;
+}
+
+buildUnnamed1988() {
+  var o = new core.List<api.Value>();
+  o.add(buildValue());
+  o.add(buildValue());
+  return o;
+}
+
+checkUnnamed1988(core.List<api.Value> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkValue(o[0]);
+  checkValue(o[1]);
+}
+
+core.int buildCounterDataPoint = 0;
+buildDataPoint() {
+  var o = new api.DataPoint();
+  buildCounterDataPoint++;
+  if (buildCounterDataPoint < 3) {
+    o.computationTimeMillis = "foo";
+    o.dataTypeName = "foo";
+    o.endTimeNanos = "foo";
+    o.modifiedTimeMillis = "foo";
+    o.originDataSourceId = "foo";
+    o.rawTimestampNanos = "foo";
+    o.startTimeNanos = "foo";
+    o.value = buildUnnamed1988();
+  }
+  buildCounterDataPoint--;
+  return o;
+}
+
+checkDataPoint(api.DataPoint o) {
+  buildCounterDataPoint++;
+  if (buildCounterDataPoint < 3) {
+    unittest.expect(o.computationTimeMillis, unittest.equals('foo'));
+    unittest.expect(o.dataTypeName, unittest.equals('foo'));
+    unittest.expect(o.endTimeNanos, unittest.equals('foo'));
+    unittest.expect(o.modifiedTimeMillis, unittest.equals('foo'));
+    unittest.expect(o.originDataSourceId, unittest.equals('foo'));
+    unittest.expect(o.rawTimestampNanos, unittest.equals('foo'));
+    unittest.expect(o.startTimeNanos, unittest.equals('foo'));
+    checkUnnamed1988(o.value);
+  }
+  buildCounterDataPoint--;
+}
+
+buildUnnamed1989() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1989(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterDataSource = 0;
+buildDataSource() {
+  var o = new api.DataSource();
+  buildCounterDataSource++;
+  if (buildCounterDataSource < 3) {
+    o.application = buildApplication();
+    o.dataQualityStandard = buildUnnamed1989();
+    o.dataStreamId = "foo";
+    o.dataStreamName = "foo";
+    o.dataType = buildDataType();
+    o.device = buildDevice();
+    o.name = "foo";
+    o.type = "foo";
+  }
+  buildCounterDataSource--;
+  return o;
+}
+
+checkDataSource(api.DataSource o) {
+  buildCounterDataSource++;
+  if (buildCounterDataSource < 3) {
+    checkApplication(o.application);
+    checkUnnamed1989(o.dataQualityStandard);
+    unittest.expect(o.dataStreamId, unittest.equals('foo'));
+    unittest.expect(o.dataStreamName, unittest.equals('foo'));
+    checkDataType(o.dataType);
+    checkDevice(o.device);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterDataSource--;
+}
+
+buildUnnamed1990() {
+  var o = new core.List<api.DataTypeField>();
+  o.add(buildDataTypeField());
+  o.add(buildDataTypeField());
+  return o;
+}
+
+checkUnnamed1990(core.List<api.DataTypeField> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataTypeField(o[0]);
+  checkDataTypeField(o[1]);
+}
+
+core.int buildCounterDataType = 0;
+buildDataType() {
+  var o = new api.DataType();
+  buildCounterDataType++;
+  if (buildCounterDataType < 3) {
+    o.field = buildUnnamed1990();
+    o.name = "foo";
+  }
+  buildCounterDataType--;
+  return o;
+}
+
+checkDataType(api.DataType o) {
+  buildCounterDataType++;
+  if (buildCounterDataType < 3) {
+    checkUnnamed1990(o.field);
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterDataType--;
+}
+
+core.int buildCounterDataTypeField = 0;
+buildDataTypeField() {
+  var o = new api.DataTypeField();
+  buildCounterDataTypeField++;
+  if (buildCounterDataTypeField < 3) {
+    o.format = "foo";
+    o.name = "foo";
+    o.optional = true;
+  }
+  buildCounterDataTypeField--;
+  return o;
+}
+
+checkDataTypeField(api.DataTypeField o) {
+  buildCounterDataTypeField++;
+  if (buildCounterDataTypeField < 3) {
+    unittest.expect(o.format, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.optional, unittest.isTrue);
+  }
+  buildCounterDataTypeField--;
+}
+
+buildUnnamed1991() {
+  var o = new core.List<api.DataPoint>();
+  o.add(buildDataPoint());
+  o.add(buildDataPoint());
+  return o;
+}
+
+checkUnnamed1991(core.List<api.DataPoint> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataPoint(o[0]);
+  checkDataPoint(o[1]);
+}
+
+core.int buildCounterDataset = 0;
+buildDataset() {
+  var o = new api.Dataset();
+  buildCounterDataset++;
+  if (buildCounterDataset < 3) {
+    o.dataSourceId = "foo";
+    o.maxEndTimeNs = "foo";
+    o.minStartTimeNs = "foo";
+    o.nextPageToken = "foo";
+    o.point = buildUnnamed1991();
+  }
+  buildCounterDataset--;
+  return o;
+}
+
+checkDataset(api.Dataset o) {
+  buildCounterDataset++;
+  if (buildCounterDataset < 3) {
+    unittest.expect(o.dataSourceId, unittest.equals('foo'));
+    unittest.expect(o.maxEndTimeNs, unittest.equals('foo'));
+    unittest.expect(o.minStartTimeNs, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1991(o.point);
+  }
+  buildCounterDataset--;
+}
+
+core.int buildCounterDevice = 0;
+buildDevice() {
+  var o = new api.Device();
+  buildCounterDevice++;
+  if (buildCounterDevice < 3) {
+    o.manufacturer = "foo";
+    o.model = "foo";
+    o.type = "foo";
+    o.uid = "foo";
+    o.version = "foo";
+  }
+  buildCounterDevice--;
+  return o;
+}
+
+checkDevice(api.Device o) {
+  buildCounterDevice++;
+  if (buildCounterDevice < 3) {
+    unittest.expect(o.manufacturer, unittest.equals('foo'));
+    unittest.expect(o.model, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.uid, unittest.equals('foo'));
+    unittest.expect(o.version, unittest.equals('foo'));
+  }
+  buildCounterDevice--;
+}
+
+buildUnnamed1992() {
+  var o = new core.List<api.DataPoint>();
+  o.add(buildDataPoint());
+  o.add(buildDataPoint());
+  return o;
+}
+
+checkUnnamed1992(core.List<api.DataPoint> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataPoint(o[0]);
+  checkDataPoint(o[1]);
+}
+
+buildUnnamed1993() {
+  var o = new core.List<api.DataPoint>();
+  o.add(buildDataPoint());
+  o.add(buildDataPoint());
+  return o;
+}
+
+checkUnnamed1993(core.List<api.DataPoint> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataPoint(o[0]);
+  checkDataPoint(o[1]);
+}
+
+core.int buildCounterListDataPointChangesResponse = 0;
+buildListDataPointChangesResponse() {
+  var o = new api.ListDataPointChangesResponse();
+  buildCounterListDataPointChangesResponse++;
+  if (buildCounterListDataPointChangesResponse < 3) {
+    o.dataSourceId = "foo";
+    o.deletedDataPoint = buildUnnamed1992();
+    o.insertedDataPoint = buildUnnamed1993();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListDataPointChangesResponse--;
+  return o;
+}
+
+checkListDataPointChangesResponse(api.ListDataPointChangesResponse o) {
+  buildCounterListDataPointChangesResponse++;
+  if (buildCounterListDataPointChangesResponse < 3) {
+    unittest.expect(o.dataSourceId, unittest.equals('foo'));
+    checkUnnamed1992(o.deletedDataPoint);
+    checkUnnamed1993(o.insertedDataPoint);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListDataPointChangesResponse--;
+}
+
+buildUnnamed1994() {
+  var o = new core.List<api.DataSource>();
+  o.add(buildDataSource());
+  o.add(buildDataSource());
+  return o;
+}
+
+checkUnnamed1994(core.List<api.DataSource> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataSource(o[0]);
+  checkDataSource(o[1]);
+}
+
+core.int buildCounterListDataSourcesResponse = 0;
+buildListDataSourcesResponse() {
+  var o = new api.ListDataSourcesResponse();
+  buildCounterListDataSourcesResponse++;
+  if (buildCounterListDataSourcesResponse < 3) {
+    o.dataSource = buildUnnamed1994();
+  }
+  buildCounterListDataSourcesResponse--;
+  return o;
+}
+
+checkListDataSourcesResponse(api.ListDataSourcesResponse o) {
+  buildCounterListDataSourcesResponse++;
+  if (buildCounterListDataSourcesResponse < 3) {
+    checkUnnamed1994(o.dataSource);
+  }
+  buildCounterListDataSourcesResponse--;
+}
+
+buildUnnamed1995() {
+  var o = new core.List<api.Session>();
+  o.add(buildSession());
+  o.add(buildSession());
+  return o;
+}
+
+checkUnnamed1995(core.List<api.Session> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSession(o[0]);
+  checkSession(o[1]);
+}
+
+buildUnnamed1996() {
+  var o = new core.List<api.Session>();
+  o.add(buildSession());
+  o.add(buildSession());
+  return o;
+}
+
+checkUnnamed1996(core.List<api.Session> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSession(o[0]);
+  checkSession(o[1]);
+}
+
+core.int buildCounterListSessionsResponse = 0;
+buildListSessionsResponse() {
+  var o = new api.ListSessionsResponse();
+  buildCounterListSessionsResponse++;
+  if (buildCounterListSessionsResponse < 3) {
+    o.deletedSession = buildUnnamed1995();
+    o.hasMoreData = true;
+    o.nextPageToken = "foo";
+    o.session = buildUnnamed1996();
+  }
+  buildCounterListSessionsResponse--;
+  return o;
+}
+
+checkListSessionsResponse(api.ListSessionsResponse o) {
+  buildCounterListSessionsResponse++;
+  if (buildCounterListSessionsResponse < 3) {
+    checkUnnamed1995(o.deletedSession);
+    unittest.expect(o.hasMoreData, unittest.isTrue);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1996(o.session);
+  }
+  buildCounterListSessionsResponse--;
+}
+
+core.int buildCounterMapValue = 0;
+buildMapValue() {
+  var o = new api.MapValue();
+  buildCounterMapValue++;
+  if (buildCounterMapValue < 3) {
+    o.fpVal = 42.0;
+  }
+  buildCounterMapValue--;
+  return o;
+}
+
+checkMapValue(api.MapValue o) {
+  buildCounterMapValue++;
+  if (buildCounterMapValue < 3) {
+    unittest.expect(o.fpVal, unittest.equals(42.0));
+  }
+  buildCounterMapValue--;
+}
+
+core.int buildCounterSession = 0;
+buildSession() {
+  var o = new api.Session();
+  buildCounterSession++;
+  if (buildCounterSession < 3) {
+    o.activeTimeMillis = "foo";
+    o.activityType = 42;
+    o.application = buildApplication();
+    o.description = "foo";
+    o.endTimeMillis = "foo";
+    o.id = "foo";
+    o.modifiedTimeMillis = "foo";
+    o.name = "foo";
+    o.startTimeMillis = "foo";
+  }
+  buildCounterSession--;
+  return o;
+}
+
+checkSession(api.Session o) {
+  buildCounterSession++;
+  if (buildCounterSession < 3) {
+    unittest.expect(o.activeTimeMillis, unittest.equals('foo'));
+    unittest.expect(o.activityType, unittest.equals(42));
+    checkApplication(o.application);
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.endTimeMillis, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.modifiedTimeMillis, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.startTimeMillis, unittest.equals('foo'));
+  }
+  buildCounterSession--;
+}
+
+buildUnnamed1997() {
+  var o = new core.List<api.ValueMapValEntry>();
+  o.add(buildValueMapValEntry());
+  o.add(buildValueMapValEntry());
+  return o;
+}
+
+checkUnnamed1997(core.List<api.ValueMapValEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkValueMapValEntry(o[0]);
+  checkValueMapValEntry(o[1]);
+}
+
+core.int buildCounterValue = 0;
+buildValue() {
+  var o = new api.Value();
+  buildCounterValue++;
+  if (buildCounterValue < 3) {
+    o.fpVal = 42.0;
+    o.intVal = 42;
+    o.mapVal = buildUnnamed1997();
+    o.stringVal = "foo";
+  }
+  buildCounterValue--;
+  return o;
+}
+
+checkValue(api.Value o) {
+  buildCounterValue++;
+  if (buildCounterValue < 3) {
+    unittest.expect(o.fpVal, unittest.equals(42.0));
+    unittest.expect(o.intVal, unittest.equals(42));
+    checkUnnamed1997(o.mapVal);
+    unittest.expect(o.stringVal, unittest.equals('foo'));
+  }
+  buildCounterValue--;
+}
+
+core.int buildCounterValueMapValEntry = 0;
+buildValueMapValEntry() {
+  var o = new api.ValueMapValEntry();
+  buildCounterValueMapValEntry++;
+  if (buildCounterValueMapValEntry < 3) {
+    o.key = "foo";
+    o.value = buildMapValue();
+  }
+  buildCounterValueMapValEntry--;
+  return o;
+}
+
+checkValueMapValEntry(api.ValueMapValEntry o) {
+  buildCounterValueMapValEntry++;
+  if (buildCounterValueMapValEntry < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    checkMapValue(o.value);
+  }
+  buildCounterValueMapValEntry--;
+}
+
+buildUnnamed1998() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1998(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-AggregateBucket", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAggregateBucket();
+      var od = new api.AggregateBucket.fromJson(o.toJson());
+      checkAggregateBucket(od);
+    });
+  });
+
+  unittest.group("obj-schema-AggregateBy", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAggregateBy();
+      var od = new api.AggregateBy.fromJson(o.toJson());
+      checkAggregateBy(od);
+    });
+  });
+
+  unittest.group("obj-schema-AggregateRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAggregateRequest();
+      var od = new api.AggregateRequest.fromJson(o.toJson());
+      checkAggregateRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AggregateResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAggregateResponse();
+      var od = new api.AggregateResponse.fromJson(o.toJson());
+      checkAggregateResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Application", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildApplication();
+      var od = new api.Application.fromJson(o.toJson());
+      checkApplication(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketByActivity", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketByActivity();
+      var od = new api.BucketByActivity.fromJson(o.toJson());
+      checkBucketByActivity(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketBySession", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketBySession();
+      var od = new api.BucketBySession.fromJson(o.toJson());
+      checkBucketBySession(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketByTime", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketByTime();
+      var od = new api.BucketByTime.fromJson(o.toJson());
+      checkBucketByTime(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketByTimePeriod", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketByTimePeriod();
+      var od = new api.BucketByTimePeriod.fromJson(o.toJson());
+      checkBucketByTimePeriod(od);
+    });
+  });
+
+  unittest.group("obj-schema-DataPoint", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDataPoint();
+      var od = new api.DataPoint.fromJson(o.toJson());
+      checkDataPoint(od);
+    });
+  });
+
+  unittest.group("obj-schema-DataSource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDataSource();
+      var od = new api.DataSource.fromJson(o.toJson());
+      checkDataSource(od);
+    });
+  });
+
+  unittest.group("obj-schema-DataType", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDataType();
+      var od = new api.DataType.fromJson(o.toJson());
+      checkDataType(od);
+    });
+  });
+
+  unittest.group("obj-schema-DataTypeField", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDataTypeField();
+      var od = new api.DataTypeField.fromJson(o.toJson());
+      checkDataTypeField(od);
+    });
+  });
+
+  unittest.group("obj-schema-Dataset", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDataset();
+      var od = new api.Dataset.fromJson(o.toJson());
+      checkDataset(od);
+    });
+  });
+
+  unittest.group("obj-schema-Device", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDevice();
+      var od = new api.Device.fromJson(o.toJson());
+      checkDevice(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListDataPointChangesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListDataPointChangesResponse();
+      var od = new api.ListDataPointChangesResponse.fromJson(o.toJson());
+      checkListDataPointChangesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListDataSourcesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListDataSourcesResponse();
+      var od = new api.ListDataSourcesResponse.fromJson(o.toJson());
+      checkListDataSourcesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListSessionsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListSessionsResponse();
+      var od = new api.ListSessionsResponse.fromJson(o.toJson());
+      checkListSessionsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-MapValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMapValue();
+      var od = new api.MapValue.fromJson(o.toJson());
+      checkMapValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-Session", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSession();
+      var od = new api.Session.fromJson(o.toJson());
+      checkSession(od);
+    });
+  });
+
+  unittest.group("obj-schema-Value", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildValue();
+      var od = new api.Value.fromJson(o.toJson());
+      checkValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-ValueMapValEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildValueMapValEntry();
+      var od = new api.ValueMapValEntry.fromJson(o.toJson());
+      checkValueMapValEntry(od);
+    });
+  });
+
+  unittest.group("resource-UsersDataSourcesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.UsersDataSourcesResourceApi res =
+          new api.FitnessApi(mock).users.dataSources;
+      var arg_request = buildDataSource();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.DataSource.fromJson(json);
+        checkDataSource(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDataSource());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DataSource response) {
+        checkDataSource(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.UsersDataSourcesResourceApi res =
+          new api.FitnessApi(mock).users.dataSources;
+      var arg_userId = "foo";
+      var arg_dataSourceId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDataSource());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_userId, arg_dataSourceId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DataSource response) {
+        checkDataSource(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UsersDataSourcesResourceApi res =
+          new api.FitnessApi(mock).users.dataSources;
+      var arg_userId = "foo";
+      var arg_dataSourceId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDataSource());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, arg_dataSourceId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DataSource response) {
+        checkDataSource(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UsersDataSourcesResourceApi res =
+          new api.FitnessApi(mock).users.dataSources;
+      var arg_userId = "foo";
+      var arg_dataTypeName = buildUnnamed1998();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["dataTypeName"], unittest.equals(arg_dataTypeName));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListDataSourcesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId,
+              dataTypeName: arg_dataTypeName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListDataSourcesResponse response) {
+        checkListDataSourcesResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.UsersDataSourcesResourceApi res =
+          new api.FitnessApi(mock).users.dataSources;
+      var arg_request = buildDataSource();
+      var arg_userId = "foo";
+      var arg_dataSourceId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.DataSource.fromJson(json);
+        checkDataSource(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDataSource());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_userId, arg_dataSourceId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DataSource response) {
+        checkDataSource(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.UsersDataSourcesResourceApi res =
+          new api.FitnessApi(mock).users.dataSources;
+      var arg_request = buildDataSource();
+      var arg_userId = "foo";
+      var arg_dataSourceId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.DataSource.fromJson(json);
+        checkDataSource(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDataSource());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_userId, arg_dataSourceId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DataSource response) {
+        checkDataSource(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersDataSourcesDataPointChangesResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UsersDataSourcesDataPointChangesResourceApi res =
+          new api.FitnessApi(mock).users.dataSources.dataPointChanges;
+      var arg_userId = "foo";
+      var arg_dataSourceId = "foo";
+      var arg_limit = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["limit"].first),
+            unittest.equals(arg_limit));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListDataPointChangesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId, arg_dataSourceId,
+              limit: arg_limit, pageToken: arg_pageToken, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListDataPointChangesResponse response) {
+        checkListDataPointChangesResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersDataSourcesDatasetsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.UsersDataSourcesDatasetsResourceApi res =
+          new api.FitnessApi(mock).users.dataSources.datasets;
+      var arg_userId = "foo";
+      var arg_dataSourceId = "foo";
+      var arg_datasetId = "foo";
+      var arg_currentTimeMillis = "foo";
+      var arg_modifiedTimeMillis = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["currentTimeMillis"].first,
+            unittest.equals(arg_currentTimeMillis));
+        unittest.expect(queryMap["modifiedTimeMillis"].first,
+            unittest.equals(arg_modifiedTimeMillis));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_userId, arg_dataSourceId, arg_datasetId,
+              currentTimeMillis: arg_currentTimeMillis,
+              modifiedTimeMillis: arg_modifiedTimeMillis,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UsersDataSourcesDatasetsResourceApi res =
+          new api.FitnessApi(mock).users.dataSources.datasets;
+      var arg_userId = "foo";
+      var arg_dataSourceId = "foo";
+      var arg_datasetId = "foo";
+      var arg_limit = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["limit"].first),
+            unittest.equals(arg_limit));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDataset());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, arg_dataSourceId, arg_datasetId,
+              limit: arg_limit, pageToken: arg_pageToken, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Dataset response) {
+        checkDataset(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.UsersDataSourcesDatasetsResourceApi res =
+          new api.FitnessApi(mock).users.dataSources.datasets;
+      var arg_request = buildDataset();
+      var arg_userId = "foo";
+      var arg_dataSourceId = "foo";
+      var arg_datasetId = "foo";
+      var arg_currentTimeMillis = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Dataset.fromJson(json);
+        checkDataset(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["currentTimeMillis"].first,
+            unittest.equals(arg_currentTimeMillis));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDataset());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_userId, arg_dataSourceId, arg_datasetId,
+              currentTimeMillis: arg_currentTimeMillis, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Dataset response) {
+        checkDataset(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersDatasetResourceApi", () {
+    unittest.test("method--aggregate", () {
+      var mock = new HttpServerMock();
+      api.UsersDatasetResourceApi res = new api.FitnessApi(mock).users.dataset;
+      var arg_request = buildAggregateRequest();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AggregateRequest.fromJson(json);
+        checkAggregateRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAggregateResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .aggregate(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AggregateResponse response) {
+        checkAggregateResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersSessionsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.UsersSessionsResourceApi res =
+          new api.FitnessApi(mock).users.sessions;
+      var arg_userId = "foo";
+      var arg_sessionId = "foo";
+      var arg_currentTimeMillis = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["currentTimeMillis"].first,
+            unittest.equals(arg_currentTimeMillis));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_userId, arg_sessionId,
+              currentTimeMillis: arg_currentTimeMillis, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UsersSessionsResourceApi res =
+          new api.FitnessApi(mock).users.sessions;
+      var arg_userId = "foo";
+      var arg_endTime = "foo";
+      var arg_includeDeleted = true;
+      var arg_pageToken = "foo";
+      var arg_startTime = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["endTime"].first, unittest.equals(arg_endTime));
+        unittest.expect(queryMap["includeDeleted"].first,
+            unittest.equals("$arg_includeDeleted"));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["startTime"].first, unittest.equals(arg_startTime));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListSessionsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId,
+              endTime: arg_endTime,
+              includeDeleted: arg_includeDeleted,
+              pageToken: arg_pageToken,
+              startTime: arg_startTime,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListSessionsResponse response) {
+        checkListSessionsResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.UsersSessionsResourceApi res =
+          new api.FitnessApi(mock).users.sessions;
+      var arg_request = buildSession();
+      var arg_userId = "foo";
+      var arg_sessionId = "foo";
+      var arg_currentTimeMillis = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Session.fromJson(json);
+        checkSession(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["currentTimeMillis"].first,
+            unittest.equals(arg_currentTimeMillis));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSession());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_userId, arg_sessionId,
+              currentTimeMillis: arg_currentTimeMillis, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Session response) {
+        checkSession(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/fusiontables/v1_test.dart b/generated/googleapis/test/fusiontables/v1_test.dart
index 23b037e..7d07f38 100644
--- a/generated/googleapis/test/fusiontables/v1_test.dart
+++ b/generated/googleapis/test/fusiontables/v1_test.dart
@@ -131,14 +131,14 @@
   buildCounterColumn--;
 }
 
-buildUnnamed2774() {
+buildUnnamed2789() {
   var o = new core.List<api.Column>();
   o.add(buildColumn());
   o.add(buildColumn());
   return o;
 }
 
-checkUnnamed2774(core.List<api.Column> o) {
+checkUnnamed2789(core.List<api.Column> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkColumn(o[0]);
   checkColumn(o[1]);
@@ -149,7 +149,7 @@
   var o = new api.ColumnList();
   buildCounterColumnList++;
   if (buildCounterColumnList < 3) {
-    o.items = buildUnnamed2774();
+    o.items = buildUnnamed2789();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.totalItems = 42;
@@ -161,7 +161,7 @@
 checkColumnList(api.ColumnList o) {
   buildCounterColumnList++;
   if (buildCounterColumnList < 3) {
-    checkUnnamed2774(o.items);
+    checkUnnamed2789(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.totalItems, unittest.equals(42));
@@ -169,7 +169,7 @@
   buildCounterColumnList--;
 }
 
-buildUnnamed2775() {
+buildUnnamed2790() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -184,7 +184,7 @@
   return o;
 }
 
-checkUnnamed2775(core.List<core.Object> o) {
+checkUnnamed2790(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o[0]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -203,7 +203,7 @@
   var o = new api.Geometry();
   buildCounterGeometry++;
   if (buildCounterGeometry < 3) {
-    o.geometries = buildUnnamed2775();
+    o.geometries = buildUnnamed2790();
     o.geometry = {
       'list': [1, 2, 3],
       'bool': true,
@@ -218,7 +218,7 @@
 checkGeometry(api.Geometry o) {
   buildCounterGeometry++;
   if (buildCounterGeometry < 3) {
-    checkUnnamed2775(o.geometries);
+    checkUnnamed2790(o.geometries);
     var casted3 = (o.geometry) as core.Map;
     unittest.expect(casted3, unittest.hasLength(3));
     unittest.expect(casted3["list"], unittest.equals([1, 2, 3]));
@@ -250,30 +250,30 @@
   buildCounterImport--;
 }
 
-buildUnnamed2776() {
+buildUnnamed2791() {
   var o = new core.List<core.double>();
   o.add(42.0);
   o.add(42.0);
   return o;
 }
 
-checkUnnamed2776(core.List<core.double> o) {
+checkUnnamed2791(core.List<core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42.0));
   unittest.expect(o[1], unittest.equals(42.0));
 }
 
-buildUnnamed2777() {
+buildUnnamed2792() {
   var o = new core.List<core.List<core.double>>();
-  o.add(buildUnnamed2776());
-  o.add(buildUnnamed2776());
+  o.add(buildUnnamed2791());
+  o.add(buildUnnamed2791());
   return o;
 }
 
-checkUnnamed2777(core.List<core.List<core.double>> o) {
+checkUnnamed2792(core.List<core.List<core.double>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2776(o[0]);
-  checkUnnamed2776(o[1]);
+  checkUnnamed2791(o[0]);
+  checkUnnamed2791(o[1]);
 }
 
 core.int buildCounterLine = 0;
@@ -281,7 +281,7 @@
   var o = new api.Line();
   buildCounterLine++;
   if (buildCounterLine < 3) {
-    o.coordinates = buildUnnamed2777();
+    o.coordinates = buildUnnamed2792();
     o.type = "foo";
   }
   buildCounterLine--;
@@ -291,7 +291,7 @@
 checkLine(api.Line o) {
   buildCounterLine++;
   if (buildCounterLine < 3) {
-    checkUnnamed2777(o.coordinates);
+    checkUnnamed2792(o.coordinates);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterLine--;
@@ -324,14 +324,14 @@
   buildCounterLineStyle--;
 }
 
-buildUnnamed2778() {
+buildUnnamed2793() {
   var o = new core.List<core.double>();
   o.add(42.0);
   o.add(42.0);
   return o;
 }
 
-checkUnnamed2778(core.List<core.double> o) {
+checkUnnamed2793(core.List<core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42.0));
   unittest.expect(o[1], unittest.equals(42.0));
@@ -342,7 +342,7 @@
   var o = new api.Point();
   buildCounterPoint++;
   if (buildCounterPoint < 3) {
-    o.coordinates = buildUnnamed2778();
+    o.coordinates = buildUnnamed2793();
     o.type = "foo";
   }
   buildCounterPoint--;
@@ -352,7 +352,7 @@
 checkPoint(api.Point o) {
   buildCounterPoint++;
   if (buildCounterPoint < 3) {
-    checkUnnamed2778(o.coordinates);
+    checkUnnamed2793(o.coordinates);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterPoint--;
@@ -379,43 +379,43 @@
   buildCounterPointStyle--;
 }
 
-buildUnnamed2779() {
+buildUnnamed2794() {
   var o = new core.List<core.double>();
   o.add(42.0);
   o.add(42.0);
   return o;
 }
 
-checkUnnamed2779(core.List<core.double> o) {
+checkUnnamed2794(core.List<core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42.0));
   unittest.expect(o[1], unittest.equals(42.0));
 }
 
-buildUnnamed2780() {
+buildUnnamed2795() {
   var o = new core.List<core.List<core.double>>();
-  o.add(buildUnnamed2779());
-  o.add(buildUnnamed2779());
+  o.add(buildUnnamed2794());
+  o.add(buildUnnamed2794());
   return o;
 }
 
-checkUnnamed2780(core.List<core.List<core.double>> o) {
+checkUnnamed2795(core.List<core.List<core.double>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2779(o[0]);
-  checkUnnamed2779(o[1]);
+  checkUnnamed2794(o[0]);
+  checkUnnamed2794(o[1]);
 }
 
-buildUnnamed2781() {
+buildUnnamed2796() {
   var o = new core.List<core.List<core.List<core.double>>>();
-  o.add(buildUnnamed2780());
-  o.add(buildUnnamed2780());
+  o.add(buildUnnamed2795());
+  o.add(buildUnnamed2795());
   return o;
 }
 
-checkUnnamed2781(core.List<core.List<core.List<core.double>>> o) {
+checkUnnamed2796(core.List<core.List<core.List<core.double>>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2780(o[0]);
-  checkUnnamed2780(o[1]);
+  checkUnnamed2795(o[0]);
+  checkUnnamed2795(o[1]);
 }
 
 core.int buildCounterPolygon = 0;
@@ -423,7 +423,7 @@
   var o = new api.Polygon();
   buildCounterPolygon++;
   if (buildCounterPolygon < 3) {
-    o.coordinates = buildUnnamed2781();
+    o.coordinates = buildUnnamed2796();
     o.type = "foo";
   }
   buildCounterPolygon--;
@@ -433,7 +433,7 @@
 checkPolygon(api.Polygon o) {
   buildCounterPolygon++;
   if (buildCounterPolygon < 3) {
-    checkUnnamed2781(o.coordinates);
+    checkUnnamed2796(o.coordinates);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterPolygon--;
@@ -472,20 +472,20 @@
   buildCounterPolygonStyle--;
 }
 
-buildUnnamed2782() {
+buildUnnamed2797() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2782(core.List<core.String> o) {
+checkUnnamed2797(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2783() {
+buildUnnamed2798() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -500,7 +500,7 @@
   return o;
 }
 
-checkUnnamed2783(core.List<core.Object> o) {
+checkUnnamed2798(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted4 = (o[0]) as core.Map;
   unittest.expect(casted4, unittest.hasLength(3));
@@ -514,17 +514,17 @@
   unittest.expect(casted5["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2784() {
+buildUnnamed2799() {
   var o = new core.List<core.List<core.Object>>();
-  o.add(buildUnnamed2783());
-  o.add(buildUnnamed2783());
+  o.add(buildUnnamed2798());
+  o.add(buildUnnamed2798());
   return o;
 }
 
-checkUnnamed2784(core.List<core.List<core.Object>> o) {
+checkUnnamed2799(core.List<core.List<core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2783(o[0]);
-  checkUnnamed2783(o[1]);
+  checkUnnamed2798(o[0]);
+  checkUnnamed2798(o[1]);
 }
 
 core.int buildCounterSqlresponse = 0;
@@ -532,9 +532,9 @@
   var o = new api.Sqlresponse();
   buildCounterSqlresponse++;
   if (buildCounterSqlresponse < 3) {
-    o.columns = buildUnnamed2782();
+    o.columns = buildUnnamed2797();
     o.kind = "foo";
-    o.rows = buildUnnamed2784();
+    o.rows = buildUnnamed2799();
   }
   buildCounterSqlresponse--;
   return o;
@@ -543,21 +543,21 @@
 checkSqlresponse(api.Sqlresponse o) {
   buildCounterSqlresponse++;
   if (buildCounterSqlresponse < 3) {
-    checkUnnamed2782(o.columns);
+    checkUnnamed2797(o.columns);
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2784(o.rows);
+    checkUnnamed2799(o.rows);
   }
   buildCounterSqlresponse--;
 }
 
-buildUnnamed2785() {
+buildUnnamed2800() {
   var o = new core.List<api.Bucket>();
   o.add(buildBucket());
   o.add(buildBucket());
   return o;
 }
 
-checkUnnamed2785(core.List<api.Bucket> o) {
+checkUnnamed2800(core.List<api.Bucket> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBucket(o[0]);
   checkBucket(o[1]);
@@ -584,14 +584,14 @@
   buildCounterStyleFunctionGradientColors--;
 }
 
-buildUnnamed2786() {
+buildUnnamed2801() {
   var o = new core.List<api.StyleFunctionGradientColors>();
   o.add(buildStyleFunctionGradientColors());
   o.add(buildStyleFunctionGradientColors());
   return o;
 }
 
-checkUnnamed2786(core.List<api.StyleFunctionGradientColors> o) {
+checkUnnamed2801(core.List<api.StyleFunctionGradientColors> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStyleFunctionGradientColors(o[0]);
   checkStyleFunctionGradientColors(o[1]);
@@ -602,7 +602,7 @@
   var o = new api.StyleFunctionGradient();
   buildCounterStyleFunctionGradient++;
   if (buildCounterStyleFunctionGradient < 3) {
-    o.colors = buildUnnamed2786();
+    o.colors = buildUnnamed2801();
     o.max = 42.0;
     o.min = 42.0;
   }
@@ -613,7 +613,7 @@
 checkStyleFunctionGradient(api.StyleFunctionGradient o) {
   buildCounterStyleFunctionGradient++;
   if (buildCounterStyleFunctionGradient < 3) {
-    checkUnnamed2786(o.colors);
+    checkUnnamed2801(o.colors);
     unittest.expect(o.max, unittest.equals(42.0));
     unittest.expect(o.min, unittest.equals(42.0));
   }
@@ -625,7 +625,7 @@
   var o = new api.StyleFunction();
   buildCounterStyleFunction++;
   if (buildCounterStyleFunction < 3) {
-    o.buckets = buildUnnamed2785();
+    o.buckets = buildUnnamed2800();
     o.columnName = "foo";
     o.gradient = buildStyleFunctionGradient();
     o.kind = "foo";
@@ -637,7 +637,7 @@
 checkStyleFunction(api.StyleFunction o) {
   buildCounterStyleFunction++;
   if (buildCounterStyleFunction < 3) {
-    checkUnnamed2785(o.buckets);
+    checkUnnamed2800(o.buckets);
     unittest.expect(o.columnName, unittest.equals('foo'));
     checkStyleFunctionGradient(o.gradient);
     unittest.expect(o.kind, unittest.equals('foo'));
@@ -676,14 +676,14 @@
   buildCounterStyleSetting--;
 }
 
-buildUnnamed2787() {
+buildUnnamed2802() {
   var o = new core.List<api.StyleSetting>();
   o.add(buildStyleSetting());
   o.add(buildStyleSetting());
   return o;
 }
 
-checkUnnamed2787(core.List<api.StyleSetting> o) {
+checkUnnamed2802(core.List<api.StyleSetting> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStyleSetting(o[0]);
   checkStyleSetting(o[1]);
@@ -694,7 +694,7 @@
   var o = new api.StyleSettingList();
   buildCounterStyleSettingList++;
   if (buildCounterStyleSettingList < 3) {
-    o.items = buildUnnamed2787();
+    o.items = buildUnnamed2802();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.totalItems = 42;
@@ -706,7 +706,7 @@
 checkStyleSettingList(api.StyleSettingList o) {
   buildCounterStyleSettingList++;
   if (buildCounterStyleSettingList < 3) {
-    checkUnnamed2787(o.items);
+    checkUnnamed2802(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.totalItems, unittest.equals(42));
@@ -714,27 +714,27 @@
   buildCounterStyleSettingList--;
 }
 
-buildUnnamed2788() {
+buildUnnamed2803() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2788(core.List<core.String> o) {
+checkUnnamed2803(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2789() {
+buildUnnamed2804() {
   var o = new core.List<api.Column>();
   o.add(buildColumn());
   o.add(buildColumn());
   return o;
 }
 
-checkUnnamed2789(core.List<api.Column> o) {
+checkUnnamed2804(core.List<api.Column> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkColumn(o[0]);
   checkColumn(o[1]);
@@ -747,8 +747,8 @@
   if (buildCounterTable < 3) {
     o.attribution = "foo";
     o.attributionLink = "foo";
-    o.baseTableIds = buildUnnamed2788();
-    o.columns = buildUnnamed2789();
+    o.baseTableIds = buildUnnamed2803();
+    o.columns = buildUnnamed2804();
     o.description = "foo";
     o.isExportable = true;
     o.kind = "foo";
@@ -765,8 +765,8 @@
   if (buildCounterTable < 3) {
     unittest.expect(o.attribution, unittest.equals('foo'));
     unittest.expect(o.attributionLink, unittest.equals('foo'));
-    checkUnnamed2788(o.baseTableIds);
-    checkUnnamed2789(o.columns);
+    checkUnnamed2803(o.baseTableIds);
+    checkUnnamed2804(o.columns);
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.isExportable, unittest.isTrue);
     unittest.expect(o.kind, unittest.equals('foo'));
@@ -777,14 +777,14 @@
   buildCounterTable--;
 }
 
-buildUnnamed2790() {
+buildUnnamed2805() {
   var o = new core.List<api.Table>();
   o.add(buildTable());
   o.add(buildTable());
   return o;
 }
 
-checkUnnamed2790(core.List<api.Table> o) {
+checkUnnamed2805(core.List<api.Table> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTable(o[0]);
   checkTable(o[1]);
@@ -795,7 +795,7 @@
   var o = new api.TableList();
   buildCounterTableList++;
   if (buildCounterTableList < 3) {
-    o.items = buildUnnamed2790();
+    o.items = buildUnnamed2805();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -806,7 +806,7 @@
 checkTableList(api.TableList o) {
   buildCounterTableList++;
   if (buildCounterTableList < 3) {
-    checkUnnamed2790(o.items);
+    checkUnnamed2805(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -840,14 +840,14 @@
   buildCounterTask--;
 }
 
-buildUnnamed2791() {
+buildUnnamed2806() {
   var o = new core.List<api.Task>();
   o.add(buildTask());
   o.add(buildTask());
   return o;
 }
 
-checkUnnamed2791(core.List<api.Task> o) {
+checkUnnamed2806(core.List<api.Task> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTask(o[0]);
   checkTask(o[1]);
@@ -858,7 +858,7 @@
   var o = new api.TaskList();
   buildCounterTaskList++;
   if (buildCounterTaskList < 3) {
-    o.items = buildUnnamed2791();
+    o.items = buildUnnamed2806();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.totalItems = 42;
@@ -870,7 +870,7 @@
 checkTaskList(api.TaskList o) {
   buildCounterTaskList++;
   if (buildCounterTaskList < 3) {
-    checkUnnamed2791(o.items);
+    checkUnnamed2806(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.totalItems, unittest.equals(42));
@@ -878,14 +878,14 @@
   buildCounterTaskList--;
 }
 
-buildUnnamed2792() {
+buildUnnamed2807() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2792(core.List<core.String> o) {
+checkUnnamed2807(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -896,7 +896,7 @@
   var o = new api.Template();
   buildCounterTemplate++;
   if (buildCounterTemplate < 3) {
-    o.automaticColumnNames = buildUnnamed2792();
+    o.automaticColumnNames = buildUnnamed2807();
     o.body = "foo";
     o.kind = "foo";
     o.name = "foo";
@@ -910,7 +910,7 @@
 checkTemplate(api.Template o) {
   buildCounterTemplate++;
   if (buildCounterTemplate < 3) {
-    checkUnnamed2792(o.automaticColumnNames);
+    checkUnnamed2807(o.automaticColumnNames);
     unittest.expect(o.body, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
@@ -920,14 +920,14 @@
   buildCounterTemplate--;
 }
 
-buildUnnamed2793() {
+buildUnnamed2808() {
   var o = new core.List<api.Template>();
   o.add(buildTemplate());
   o.add(buildTemplate());
   return o;
 }
 
-checkUnnamed2793(core.List<api.Template> o) {
+checkUnnamed2808(core.List<api.Template> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTemplate(o[0]);
   checkTemplate(o[1]);
@@ -938,7 +938,7 @@
   var o = new api.TemplateList();
   buildCounterTemplateList++;
   if (buildCounterTemplateList < 3) {
-    o.items = buildUnnamed2793();
+    o.items = buildUnnamed2808();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.totalItems = 42;
@@ -950,7 +950,7 @@
 checkTemplateList(api.TemplateList o) {
   buildCounterTemplateList++;
   if (buildCounterTemplateList < 3) {
-    checkUnnamed2793(o.items);
+    checkUnnamed2808(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.totalItems, unittest.equals(42));
@@ -1157,6 +1157,7 @@
       api.ColumnResourceApi res = new api.FusiontablesApi(mock).column;
       var arg_tableId = "foo";
       var arg_columnId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1202,6 +1203,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1209,7 +1211,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_tableId, arg_columnId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_tableId, arg_columnId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -1217,6 +1221,7 @@
       api.ColumnResourceApi res = new api.FusiontablesApi(mock).column;
       var arg_tableId = "foo";
       var arg_columnId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1262,6 +1267,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1270,7 +1276,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_tableId, arg_columnId)
+          .get(arg_tableId, arg_columnId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Column response) {
         checkColumn(response);
       })));
@@ -1281,6 +1287,7 @@
       api.ColumnResourceApi res = new api.FusiontablesApi(mock).column;
       var arg_request = buildColumn();
       var arg_tableId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Column.fromJson(json);
         checkColumn(obj);
@@ -1326,6 +1333,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1334,7 +1342,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_tableId)
+          .insert(arg_request, arg_tableId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Column response) {
         checkColumn(response);
       })));
@@ -1346,6 +1354,7 @@
       var arg_tableId = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1392,6 +1401,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1401,7 +1411,9 @@
       }), true);
       res
           .list(arg_tableId,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ColumnList response) {
         checkColumnList(response);
       })));
@@ -1413,6 +1425,7 @@
       var arg_request = buildColumn();
       var arg_tableId = "foo";
       var arg_columnId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Column.fromJson(json);
         checkColumn(obj);
@@ -1461,6 +1474,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1469,7 +1483,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_tableId, arg_columnId)
+          .patch(arg_request, arg_tableId, arg_columnId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Column response) {
         checkColumn(response);
       })));
@@ -1481,6 +1495,7 @@
       var arg_request = buildColumn();
       var arg_tableId = "foo";
       var arg_columnId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Column.fromJson(json);
         checkColumn(obj);
@@ -1529,6 +1544,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1537,7 +1553,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_tableId, arg_columnId)
+          .update(arg_request, arg_tableId, arg_columnId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Column response) {
         checkColumn(response);
       })));
@@ -1554,6 +1570,7 @@
       var arg_sql_1 = "foo";
       var arg_hdrs = true;
       var arg_typed = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1590,6 +1607,7 @@
         unittest.expect(queryMap["sql"].first, unittest.equals(arg_sql_1));
         unittest.expect(queryMap["hdrs"].first, unittest.equals("$arg_hdrs"));
         unittest.expect(queryMap["typed"].first, unittest.equals("$arg_typed"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1598,7 +1616,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .sql(arg_sql_1, hdrs: arg_hdrs, typed: arg_typed)
+          .sql(arg_sql_1,
+              hdrs: arg_hdrs, typed: arg_typed, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Sqlresponse response) {
         checkSqlresponse(response);
       })));
@@ -1613,6 +1632,7 @@
       var arg_sql_1 = "foo";
       var arg_hdrs = true;
       var arg_typed = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1649,6 +1669,7 @@
         unittest.expect(queryMap["sql"].first, unittest.equals(arg_sql_1));
         unittest.expect(queryMap["hdrs"].first, unittest.equals("$arg_hdrs"));
         unittest.expect(queryMap["typed"].first, unittest.equals("$arg_typed"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1657,7 +1678,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .sqlGet(arg_sql_1, hdrs: arg_hdrs, typed: arg_typed)
+          .sqlGet(arg_sql_1,
+              hdrs: arg_hdrs, typed: arg_typed, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Sqlresponse response) {
         checkSqlresponse(response);
       })));
@@ -1670,6 +1692,7 @@
       api.StyleResourceApi res = new api.FusiontablesApi(mock).style;
       var arg_tableId = "foo";
       var arg_styleId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1715,6 +1738,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1722,7 +1746,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_tableId, arg_styleId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_tableId, arg_styleId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -1730,6 +1756,7 @@
       api.StyleResourceApi res = new api.FusiontablesApi(mock).style;
       var arg_tableId = "foo";
       var arg_styleId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1775,6 +1802,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1783,7 +1811,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_tableId, arg_styleId)
+          .get(arg_tableId, arg_styleId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StyleSetting response) {
         checkStyleSetting(response);
       })));
@@ -1794,6 +1822,7 @@
       api.StyleResourceApi res = new api.FusiontablesApi(mock).style;
       var arg_request = buildStyleSetting();
       var arg_tableId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StyleSetting.fromJson(json);
         checkStyleSetting(obj);
@@ -1839,6 +1868,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1847,7 +1877,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_tableId)
+          .insert(arg_request, arg_tableId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StyleSetting response) {
         checkStyleSetting(response);
       })));
@@ -1859,6 +1889,7 @@
       var arg_tableId = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1905,6 +1936,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1914,7 +1946,9 @@
       }), true);
       res
           .list(arg_tableId,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StyleSettingList response) {
         checkStyleSettingList(response);
       })));
@@ -1926,6 +1960,7 @@
       var arg_request = buildStyleSetting();
       var arg_tableId = "foo";
       var arg_styleId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StyleSetting.fromJson(json);
         checkStyleSetting(obj);
@@ -1974,6 +2009,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1982,7 +2018,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_tableId, arg_styleId)
+          .patch(arg_request, arg_tableId, arg_styleId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StyleSetting response) {
         checkStyleSetting(response);
       })));
@@ -1994,6 +2030,7 @@
       var arg_request = buildStyleSetting();
       var arg_tableId = "foo";
       var arg_styleId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StyleSetting.fromJson(json);
         checkStyleSetting(obj);
@@ -2042,6 +2079,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2050,7 +2088,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_tableId, arg_styleId)
+          .update(arg_request, arg_tableId, arg_styleId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StyleSetting response) {
         checkStyleSetting(response);
       })));
@@ -2063,6 +2101,7 @@
       api.TableResourceApi res = new api.FusiontablesApi(mock).table;
       var arg_tableId = "foo";
       var arg_copyPresentation = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2107,6 +2146,7 @@
         }
         unittest.expect(queryMap["copyPresentation"].first,
             unittest.equals("$arg_copyPresentation"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2115,7 +2155,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .copy(arg_tableId, copyPresentation: arg_copyPresentation)
+          .copy(arg_tableId,
+              copyPresentation: arg_copyPresentation, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Table response) {
         checkTable(response);
       })));
@@ -2125,6 +2166,7 @@
       var mock = new HttpServerMock();
       api.TableResourceApi res = new api.FusiontablesApi(mock).table;
       var arg_tableId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2161,6 +2203,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2168,13 +2211,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_tableId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_tableId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
       var mock = new HttpServerMock();
       api.TableResourceApi res = new api.FusiontablesApi(mock).table;
       var arg_tableId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2211,6 +2257,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2218,7 +2265,9 @@
         var resp = convert.JSON.encode(buildTable());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_tableId).then(unittest.expectAsync1(((api.Table response) {
+      res
+          .get(arg_tableId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Table response) {
         checkTable(response);
       })));
     });
@@ -2235,6 +2284,7 @@
       var arg_endLine = 42;
       var arg_isStrict = true;
       var arg_startLine = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2287,6 +2337,7 @@
             queryMap["isStrict"].first, unittest.equals("$arg_isStrict"));
         unittest.expect(core.int.parse(queryMap["startLine"].first),
             unittest.equals(arg_startLine));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2300,7 +2351,8 @@
               encoding: arg_encoding,
               endLine: arg_endLine,
               isStrict: arg_isStrict,
-              startLine: arg_startLine)
+              startLine: arg_startLine,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Import response) {
         checkImport(response);
       })));
@@ -2315,6 +2367,7 @@
       var arg_name = "foo";
       var arg_delimiter = "foo";
       var arg_encoding = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2353,6 +2406,7 @@
             queryMap["delimiter"].first, unittest.equals(arg_delimiter));
         unittest.expect(
             queryMap["encoding"].first, unittest.equals(arg_encoding));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2362,7 +2416,9 @@
       }), true);
       res
           .importTable(arg_name,
-              delimiter: arg_delimiter, encoding: arg_encoding)
+              delimiter: arg_delimiter,
+              encoding: arg_encoding,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Table response) {
         checkTable(response);
       })));
@@ -2372,6 +2428,7 @@
       var mock = new HttpServerMock();
       api.TableResourceApi res = new api.FusiontablesApi(mock).table;
       var arg_request = buildTable();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Table.fromJson(json);
         checkTable(obj);
@@ -2408,6 +2465,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2415,7 +2473,9 @@
         var resp = convert.JSON.encode(buildTable());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.insert(arg_request).then(unittest.expectAsync1(((api.Table response) {
+      res
+          .insert(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Table response) {
         checkTable(response);
       })));
     });
@@ -2425,6 +2485,7 @@
       api.TableResourceApi res = new api.FusiontablesApi(mock).table;
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2462,6 +2523,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2470,7 +2532,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(maxResults: arg_maxResults, pageToken: arg_pageToken)
+          .list(
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TableList response) {
         checkTableList(response);
       })));
@@ -2482,6 +2547,7 @@
       var arg_request = buildTable();
       var arg_tableId = "foo";
       var arg_replaceViewDefinition = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Table.fromJson(json);
         checkTable(obj);
@@ -2523,6 +2589,7 @@
         }
         unittest.expect(queryMap["replaceViewDefinition"].first,
             unittest.equals("$arg_replaceViewDefinition"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2532,7 +2599,8 @@
       }), true);
       res
           .patch(arg_request, arg_tableId,
-              replaceViewDefinition: arg_replaceViewDefinition)
+              replaceViewDefinition: arg_replaceViewDefinition,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Table response) {
         checkTable(response);
       })));
@@ -2544,6 +2612,7 @@
       var arg_request = buildTable();
       var arg_tableId = "foo";
       var arg_replaceViewDefinition = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Table.fromJson(json);
         checkTable(obj);
@@ -2585,6 +2654,7 @@
         }
         unittest.expect(queryMap["replaceViewDefinition"].first,
             unittest.equals("$arg_replaceViewDefinition"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2594,7 +2664,8 @@
       }), true);
       res
           .update(arg_request, arg_tableId,
-              replaceViewDefinition: arg_replaceViewDefinition)
+              replaceViewDefinition: arg_replaceViewDefinition,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Table response) {
         checkTable(response);
       })));
@@ -2607,6 +2678,7 @@
       api.TaskResourceApi res = new api.FusiontablesApi(mock).task;
       var arg_tableId = "foo";
       var arg_taskId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2652,6 +2724,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2659,7 +2732,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_tableId, arg_taskId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_tableId, arg_taskId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -2667,6 +2742,7 @@
       api.TaskResourceApi res = new api.FusiontablesApi(mock).task;
       var arg_tableId = "foo";
       var arg_taskId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2712,6 +2788,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2720,7 +2797,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_tableId, arg_taskId)
+          .get(arg_tableId, arg_taskId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Task response) {
         checkTask(response);
       })));
@@ -2733,6 +2810,7 @@
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
       var arg_startIndex = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2781,6 +2859,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["startIndex"].first),
             unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2792,7 +2871,8 @@
           .list(arg_tableId,
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
-              startIndex: arg_startIndex)
+              startIndex: arg_startIndex,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TaskList response) {
         checkTaskList(response);
       })));
@@ -2805,6 +2885,7 @@
       api.TemplateResourceApi res = new api.FusiontablesApi(mock).template;
       var arg_tableId = "foo";
       var arg_templateId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2850,6 +2931,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2858,7 +2940,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_tableId, arg_templateId)
+          .delete(arg_tableId, arg_templateId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -2867,6 +2949,7 @@
       api.TemplateResourceApi res = new api.FusiontablesApi(mock).template;
       var arg_tableId = "foo";
       var arg_templateId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2912,6 +2995,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2920,7 +3004,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_tableId, arg_templateId)
+          .get(arg_tableId, arg_templateId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Template response) {
         checkTemplate(response);
       })));
@@ -2931,6 +3015,7 @@
       api.TemplateResourceApi res = new api.FusiontablesApi(mock).template;
       var arg_request = buildTemplate();
       var arg_tableId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Template.fromJson(json);
         checkTemplate(obj);
@@ -2976,6 +3061,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2984,7 +3070,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_tableId)
+          .insert(arg_request, arg_tableId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Template response) {
         checkTemplate(response);
       })));
@@ -2996,6 +3082,7 @@
       var arg_tableId = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3042,6 +3129,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3051,7 +3139,9 @@
       }), true);
       res
           .list(arg_tableId,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TemplateList response) {
         checkTemplateList(response);
       })));
@@ -3063,6 +3153,7 @@
       var arg_request = buildTemplate();
       var arg_tableId = "foo";
       var arg_templateId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Template.fromJson(json);
         checkTemplate(obj);
@@ -3111,6 +3202,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3119,7 +3211,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_tableId, arg_templateId)
+          .patch(arg_request, arg_tableId, arg_templateId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Template response) {
         checkTemplate(response);
       })));
@@ -3131,6 +3223,7 @@
       var arg_request = buildTemplate();
       var arg_tableId = "foo";
       var arg_templateId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Template.fromJson(json);
         checkTemplate(obj);
@@ -3179,6 +3272,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3187,7 +3281,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_tableId, arg_templateId)
+          .update(arg_request, arg_tableId, arg_templateId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Template response) {
         checkTemplate(response);
       })));
diff --git a/generated/googleapis/test/fusiontables/v2_test.dart b/generated/googleapis/test/fusiontables/v2_test.dart
index 9897f49..e3119e1 100644
--- a/generated/googleapis/test/fusiontables/v2_test.dart
+++ b/generated/googleapis/test/fusiontables/v2_test.dart
@@ -100,14 +100,14 @@
   buildCounterColumnBaseColumn--;
 }
 
-buildUnnamed519() {
+buildUnnamed503() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed519(core.List<core.String> o) {
+checkUnnamed503(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -128,7 +128,7 @@
     o.kind = "foo";
     o.name = "foo";
     o.type = "foo";
-    o.validValues = buildUnnamed519();
+    o.validValues = buildUnnamed503();
     o.validateData = true;
   }
   buildCounterColumn--;
@@ -148,20 +148,20 @@
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
-    checkUnnamed519(o.validValues);
+    checkUnnamed503(o.validValues);
     unittest.expect(o.validateData, unittest.isTrue);
   }
   buildCounterColumn--;
 }
 
-buildUnnamed520() {
+buildUnnamed504() {
   var o = new core.List<api.Column>();
   o.add(buildColumn());
   o.add(buildColumn());
   return o;
 }
 
-checkUnnamed520(core.List<api.Column> o) {
+checkUnnamed504(core.List<api.Column> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkColumn(o[0]);
   checkColumn(o[1]);
@@ -172,7 +172,7 @@
   var o = new api.ColumnList();
   buildCounterColumnList++;
   if (buildCounterColumnList < 3) {
-    o.items = buildUnnamed520();
+    o.items = buildUnnamed504();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.totalItems = 42;
@@ -184,7 +184,7 @@
 checkColumnList(api.ColumnList o) {
   buildCounterColumnList++;
   if (buildCounterColumnList < 3) {
-    checkUnnamed520(o.items);
+    checkUnnamed504(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.totalItems, unittest.equals(42));
@@ -192,7 +192,7 @@
   buildCounterColumnList--;
 }
 
-buildUnnamed521() {
+buildUnnamed505() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -207,7 +207,7 @@
   return o;
 }
 
-checkUnnamed521(core.List<core.Object> o) {
+checkUnnamed505(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o[0]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -226,7 +226,7 @@
   var o = new api.Geometry();
   buildCounterGeometry++;
   if (buildCounterGeometry < 3) {
-    o.geometries = buildUnnamed521();
+    o.geometries = buildUnnamed505();
     o.geometry = {
       'list': [1, 2, 3],
       'bool': true,
@@ -241,7 +241,7 @@
 checkGeometry(api.Geometry o) {
   buildCounterGeometry++;
   if (buildCounterGeometry < 3) {
-    checkUnnamed521(o.geometries);
+    checkUnnamed505(o.geometries);
     var casted3 = (o.geometry) as core.Map;
     unittest.expect(casted3, unittest.hasLength(3));
     unittest.expect(casted3["list"], unittest.equals([1, 2, 3]));
@@ -273,30 +273,30 @@
   buildCounterImport--;
 }
 
-buildUnnamed522() {
+buildUnnamed506() {
   var o = new core.List<core.double>();
   o.add(42.0);
   o.add(42.0);
   return o;
 }
 
-checkUnnamed522(core.List<core.double> o) {
+checkUnnamed506(core.List<core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42.0));
   unittest.expect(o[1], unittest.equals(42.0));
 }
 
-buildUnnamed523() {
+buildUnnamed507() {
   var o = new core.List<core.List<core.double>>();
-  o.add(buildUnnamed522());
-  o.add(buildUnnamed522());
+  o.add(buildUnnamed506());
+  o.add(buildUnnamed506());
   return o;
 }
 
-checkUnnamed523(core.List<core.List<core.double>> o) {
+checkUnnamed507(core.List<core.List<core.double>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed522(o[0]);
-  checkUnnamed522(o[1]);
+  checkUnnamed506(o[0]);
+  checkUnnamed506(o[1]);
 }
 
 core.int buildCounterLine = 0;
@@ -304,7 +304,7 @@
   var o = new api.Line();
   buildCounterLine++;
   if (buildCounterLine < 3) {
-    o.coordinates = buildUnnamed523();
+    o.coordinates = buildUnnamed507();
     o.type = "foo";
   }
   buildCounterLine--;
@@ -314,7 +314,7 @@
 checkLine(api.Line o) {
   buildCounterLine++;
   if (buildCounterLine < 3) {
-    checkUnnamed523(o.coordinates);
+    checkUnnamed507(o.coordinates);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterLine--;
@@ -347,14 +347,14 @@
   buildCounterLineStyle--;
 }
 
-buildUnnamed524() {
+buildUnnamed508() {
   var o = new core.List<core.double>();
   o.add(42.0);
   o.add(42.0);
   return o;
 }
 
-checkUnnamed524(core.List<core.double> o) {
+checkUnnamed508(core.List<core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42.0));
   unittest.expect(o[1], unittest.equals(42.0));
@@ -365,7 +365,7 @@
   var o = new api.Point();
   buildCounterPoint++;
   if (buildCounterPoint < 3) {
-    o.coordinates = buildUnnamed524();
+    o.coordinates = buildUnnamed508();
     o.type = "foo";
   }
   buildCounterPoint--;
@@ -375,7 +375,7 @@
 checkPoint(api.Point o) {
   buildCounterPoint++;
   if (buildCounterPoint < 3) {
-    checkUnnamed524(o.coordinates);
+    checkUnnamed508(o.coordinates);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterPoint--;
@@ -402,43 +402,43 @@
   buildCounterPointStyle--;
 }
 
-buildUnnamed525() {
+buildUnnamed509() {
   var o = new core.List<core.double>();
   o.add(42.0);
   o.add(42.0);
   return o;
 }
 
-checkUnnamed525(core.List<core.double> o) {
+checkUnnamed509(core.List<core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42.0));
   unittest.expect(o[1], unittest.equals(42.0));
 }
 
-buildUnnamed526() {
+buildUnnamed510() {
   var o = new core.List<core.List<core.double>>();
-  o.add(buildUnnamed525());
-  o.add(buildUnnamed525());
+  o.add(buildUnnamed509());
+  o.add(buildUnnamed509());
   return o;
 }
 
-checkUnnamed526(core.List<core.List<core.double>> o) {
+checkUnnamed510(core.List<core.List<core.double>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed525(o[0]);
-  checkUnnamed525(o[1]);
+  checkUnnamed509(o[0]);
+  checkUnnamed509(o[1]);
 }
 
-buildUnnamed527() {
+buildUnnamed511() {
   var o = new core.List<core.List<core.List<core.double>>>();
-  o.add(buildUnnamed526());
-  o.add(buildUnnamed526());
+  o.add(buildUnnamed510());
+  o.add(buildUnnamed510());
   return o;
 }
 
-checkUnnamed527(core.List<core.List<core.List<core.double>>> o) {
+checkUnnamed511(core.List<core.List<core.List<core.double>>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed526(o[0]);
-  checkUnnamed526(o[1]);
+  checkUnnamed510(o[0]);
+  checkUnnamed510(o[1]);
 }
 
 core.int buildCounterPolygon = 0;
@@ -446,7 +446,7 @@
   var o = new api.Polygon();
   buildCounterPolygon++;
   if (buildCounterPolygon < 3) {
-    o.coordinates = buildUnnamed527();
+    o.coordinates = buildUnnamed511();
     o.type = "foo";
   }
   buildCounterPolygon--;
@@ -456,7 +456,7 @@
 checkPolygon(api.Polygon o) {
   buildCounterPolygon++;
   if (buildCounterPolygon < 3) {
-    checkUnnamed527(o.coordinates);
+    checkUnnamed511(o.coordinates);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterPolygon--;
@@ -495,20 +495,20 @@
   buildCounterPolygonStyle--;
 }
 
-buildUnnamed528() {
+buildUnnamed512() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed528(core.List<core.String> o) {
+checkUnnamed512(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed529() {
+buildUnnamed513() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -523,7 +523,7 @@
   return o;
 }
 
-checkUnnamed529(core.List<core.Object> o) {
+checkUnnamed513(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted4 = (o[0]) as core.Map;
   unittest.expect(casted4, unittest.hasLength(3));
@@ -537,17 +537,17 @@
   unittest.expect(casted5["string"], unittest.equals('foo'));
 }
 
-buildUnnamed530() {
+buildUnnamed514() {
   var o = new core.List<core.List<core.Object>>();
-  o.add(buildUnnamed529());
-  o.add(buildUnnamed529());
+  o.add(buildUnnamed513());
+  o.add(buildUnnamed513());
   return o;
 }
 
-checkUnnamed530(core.List<core.List<core.Object>> o) {
+checkUnnamed514(core.List<core.List<core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed529(o[0]);
-  checkUnnamed529(o[1]);
+  checkUnnamed513(o[0]);
+  checkUnnamed513(o[1]);
 }
 
 core.int buildCounterSqlresponse = 0;
@@ -555,9 +555,9 @@
   var o = new api.Sqlresponse();
   buildCounterSqlresponse++;
   if (buildCounterSqlresponse < 3) {
-    o.columns = buildUnnamed528();
+    o.columns = buildUnnamed512();
     o.kind = "foo";
-    o.rows = buildUnnamed530();
+    o.rows = buildUnnamed514();
   }
   buildCounterSqlresponse--;
   return o;
@@ -566,21 +566,21 @@
 checkSqlresponse(api.Sqlresponse o) {
   buildCounterSqlresponse++;
   if (buildCounterSqlresponse < 3) {
-    checkUnnamed528(o.columns);
+    checkUnnamed512(o.columns);
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed530(o.rows);
+    checkUnnamed514(o.rows);
   }
   buildCounterSqlresponse--;
 }
 
-buildUnnamed531() {
+buildUnnamed515() {
   var o = new core.List<api.Bucket>();
   o.add(buildBucket());
   o.add(buildBucket());
   return o;
 }
 
-checkUnnamed531(core.List<api.Bucket> o) {
+checkUnnamed515(core.List<api.Bucket> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBucket(o[0]);
   checkBucket(o[1]);
@@ -607,14 +607,14 @@
   buildCounterStyleFunctionGradientColors--;
 }
 
-buildUnnamed532() {
+buildUnnamed516() {
   var o = new core.List<api.StyleFunctionGradientColors>();
   o.add(buildStyleFunctionGradientColors());
   o.add(buildStyleFunctionGradientColors());
   return o;
 }
 
-checkUnnamed532(core.List<api.StyleFunctionGradientColors> o) {
+checkUnnamed516(core.List<api.StyleFunctionGradientColors> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStyleFunctionGradientColors(o[0]);
   checkStyleFunctionGradientColors(o[1]);
@@ -625,7 +625,7 @@
   var o = new api.StyleFunctionGradient();
   buildCounterStyleFunctionGradient++;
   if (buildCounterStyleFunctionGradient < 3) {
-    o.colors = buildUnnamed532();
+    o.colors = buildUnnamed516();
     o.max = 42.0;
     o.min = 42.0;
   }
@@ -636,7 +636,7 @@
 checkStyleFunctionGradient(api.StyleFunctionGradient o) {
   buildCounterStyleFunctionGradient++;
   if (buildCounterStyleFunctionGradient < 3) {
-    checkUnnamed532(o.colors);
+    checkUnnamed516(o.colors);
     unittest.expect(o.max, unittest.equals(42.0));
     unittest.expect(o.min, unittest.equals(42.0));
   }
@@ -648,7 +648,7 @@
   var o = new api.StyleFunction();
   buildCounterStyleFunction++;
   if (buildCounterStyleFunction < 3) {
-    o.buckets = buildUnnamed531();
+    o.buckets = buildUnnamed515();
     o.columnName = "foo";
     o.gradient = buildStyleFunctionGradient();
     o.kind = "foo";
@@ -660,7 +660,7 @@
 checkStyleFunction(api.StyleFunction o) {
   buildCounterStyleFunction++;
   if (buildCounterStyleFunction < 3) {
-    checkUnnamed531(o.buckets);
+    checkUnnamed515(o.buckets);
     unittest.expect(o.columnName, unittest.equals('foo'));
     checkStyleFunctionGradient(o.gradient);
     unittest.expect(o.kind, unittest.equals('foo'));
@@ -699,14 +699,14 @@
   buildCounterStyleSetting--;
 }
 
-buildUnnamed533() {
+buildUnnamed517() {
   var o = new core.List<api.StyleSetting>();
   o.add(buildStyleSetting());
   o.add(buildStyleSetting());
   return o;
 }
 
-checkUnnamed533(core.List<api.StyleSetting> o) {
+checkUnnamed517(core.List<api.StyleSetting> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStyleSetting(o[0]);
   checkStyleSetting(o[1]);
@@ -717,7 +717,7 @@
   var o = new api.StyleSettingList();
   buildCounterStyleSettingList++;
   if (buildCounterStyleSettingList < 3) {
-    o.items = buildUnnamed533();
+    o.items = buildUnnamed517();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.totalItems = 42;
@@ -729,7 +729,7 @@
 checkStyleSettingList(api.StyleSettingList o) {
   buildCounterStyleSettingList++;
   if (buildCounterStyleSettingList < 3) {
-    checkUnnamed533(o.items);
+    checkUnnamed517(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.totalItems, unittest.equals(42));
@@ -737,27 +737,27 @@
   buildCounterStyleSettingList--;
 }
 
-buildUnnamed534() {
+buildUnnamed518() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed534(core.List<core.String> o) {
+checkUnnamed518(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed535() {
+buildUnnamed519() {
   var o = new core.List<api.Column>();
   o.add(buildColumn());
   o.add(buildColumn());
   return o;
 }
 
-checkUnnamed535(core.List<api.Column> o) {
+checkUnnamed519(core.List<api.Column> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkColumn(o[0]);
   checkColumn(o[1]);
@@ -770,9 +770,9 @@
   if (buildCounterTable < 3) {
     o.attribution = "foo";
     o.attributionLink = "foo";
-    o.baseTableIds = buildUnnamed534();
+    o.baseTableIds = buildUnnamed518();
     o.columnPropertiesJsonSchema = "foo";
-    o.columns = buildUnnamed535();
+    o.columns = buildUnnamed519();
     o.description = "foo";
     o.isExportable = true;
     o.kind = "foo";
@@ -791,9 +791,9 @@
   if (buildCounterTable < 3) {
     unittest.expect(o.attribution, unittest.equals('foo'));
     unittest.expect(o.attributionLink, unittest.equals('foo'));
-    checkUnnamed534(o.baseTableIds);
+    checkUnnamed518(o.baseTableIds);
     unittest.expect(o.columnPropertiesJsonSchema, unittest.equals('foo'));
-    checkUnnamed535(o.columns);
+    checkUnnamed519(o.columns);
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.isExportable, unittest.isTrue);
     unittest.expect(o.kind, unittest.equals('foo'));
@@ -806,14 +806,14 @@
   buildCounterTable--;
 }
 
-buildUnnamed536() {
+buildUnnamed520() {
   var o = new core.List<api.Table>();
   o.add(buildTable());
   o.add(buildTable());
   return o;
 }
 
-checkUnnamed536(core.List<api.Table> o) {
+checkUnnamed520(core.List<api.Table> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTable(o[0]);
   checkTable(o[1]);
@@ -824,7 +824,7 @@
   var o = new api.TableList();
   buildCounterTableList++;
   if (buildCounterTableList < 3) {
-    o.items = buildUnnamed536();
+    o.items = buildUnnamed520();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -835,7 +835,7 @@
 checkTableList(api.TableList o) {
   buildCounterTableList++;
   if (buildCounterTableList < 3) {
-    checkUnnamed536(o.items);
+    checkUnnamed520(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -869,14 +869,14 @@
   buildCounterTask--;
 }
 
-buildUnnamed537() {
+buildUnnamed521() {
   var o = new core.List<api.Task>();
   o.add(buildTask());
   o.add(buildTask());
   return o;
 }
 
-checkUnnamed537(core.List<api.Task> o) {
+checkUnnamed521(core.List<api.Task> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTask(o[0]);
   checkTask(o[1]);
@@ -887,7 +887,7 @@
   var o = new api.TaskList();
   buildCounterTaskList++;
   if (buildCounterTaskList < 3) {
-    o.items = buildUnnamed537();
+    o.items = buildUnnamed521();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.totalItems = 42;
@@ -899,7 +899,7 @@
 checkTaskList(api.TaskList o) {
   buildCounterTaskList++;
   if (buildCounterTaskList < 3) {
-    checkUnnamed537(o.items);
+    checkUnnamed521(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.totalItems, unittest.equals(42));
@@ -907,14 +907,14 @@
   buildCounterTaskList--;
 }
 
-buildUnnamed538() {
+buildUnnamed522() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed538(core.List<core.String> o) {
+checkUnnamed522(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -925,7 +925,7 @@
   var o = new api.Template();
   buildCounterTemplate++;
   if (buildCounterTemplate < 3) {
-    o.automaticColumnNames = buildUnnamed538();
+    o.automaticColumnNames = buildUnnamed522();
     o.body = "foo";
     o.kind = "foo";
     o.name = "foo";
@@ -939,7 +939,7 @@
 checkTemplate(api.Template o) {
   buildCounterTemplate++;
   if (buildCounterTemplate < 3) {
-    checkUnnamed538(o.automaticColumnNames);
+    checkUnnamed522(o.automaticColumnNames);
     unittest.expect(o.body, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
@@ -949,14 +949,14 @@
   buildCounterTemplate--;
 }
 
-buildUnnamed539() {
+buildUnnamed523() {
   var o = new core.List<api.Template>();
   o.add(buildTemplate());
   o.add(buildTemplate());
   return o;
 }
 
-checkUnnamed539(core.List<api.Template> o) {
+checkUnnamed523(core.List<api.Template> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTemplate(o[0]);
   checkTemplate(o[1]);
@@ -967,7 +967,7 @@
   var o = new api.TemplateList();
   buildCounterTemplateList++;
   if (buildCounterTemplateList < 3) {
-    o.items = buildUnnamed539();
+    o.items = buildUnnamed523();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.totalItems = 42;
@@ -979,7 +979,7 @@
 checkTemplateList(api.TemplateList o) {
   buildCounterTemplateList++;
   if (buildCounterTemplateList < 3) {
-    checkUnnamed539(o.items);
+    checkUnnamed523(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.totalItems, unittest.equals(42));
@@ -1186,6 +1186,7 @@
       api.ColumnResourceApi res = new api.FusiontablesApi(mock).column;
       var arg_tableId = "foo";
       var arg_columnId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1231,6 +1232,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1238,7 +1240,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_tableId, arg_columnId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_tableId, arg_columnId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -1246,6 +1250,7 @@
       api.ColumnResourceApi res = new api.FusiontablesApi(mock).column;
       var arg_tableId = "foo";
       var arg_columnId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1291,6 +1296,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1299,7 +1305,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_tableId, arg_columnId)
+          .get(arg_tableId, arg_columnId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Column response) {
         checkColumn(response);
       })));
@@ -1310,6 +1316,7 @@
       api.ColumnResourceApi res = new api.FusiontablesApi(mock).column;
       var arg_request = buildColumn();
       var arg_tableId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Column.fromJson(json);
         checkColumn(obj);
@@ -1355,6 +1362,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1363,7 +1371,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_tableId)
+          .insert(arg_request, arg_tableId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Column response) {
         checkColumn(response);
       })));
@@ -1375,6 +1383,7 @@
       var arg_tableId = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1421,6 +1430,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1430,7 +1440,9 @@
       }), true);
       res
           .list(arg_tableId,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ColumnList response) {
         checkColumnList(response);
       })));
@@ -1442,6 +1454,7 @@
       var arg_request = buildColumn();
       var arg_tableId = "foo";
       var arg_columnId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Column.fromJson(json);
         checkColumn(obj);
@@ -1490,6 +1503,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1498,7 +1512,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_tableId, arg_columnId)
+          .patch(arg_request, arg_tableId, arg_columnId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Column response) {
         checkColumn(response);
       })));
@@ -1510,6 +1524,7 @@
       var arg_request = buildColumn();
       var arg_tableId = "foo";
       var arg_columnId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Column.fromJson(json);
         checkColumn(obj);
@@ -1558,6 +1573,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1566,7 +1582,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_tableId, arg_columnId)
+          .update(arg_request, arg_tableId, arg_columnId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Column response) {
         checkColumn(response);
       })));
@@ -1583,6 +1599,7 @@
       var arg_sql_1 = "foo";
       var arg_hdrs = true;
       var arg_typed = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1619,6 +1636,7 @@
         unittest.expect(queryMap["sql"].first, unittest.equals(arg_sql_1));
         unittest.expect(queryMap["hdrs"].first, unittest.equals("$arg_hdrs"));
         unittest.expect(queryMap["typed"].first, unittest.equals("$arg_typed"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1627,7 +1645,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .sql(arg_sql_1, hdrs: arg_hdrs, typed: arg_typed)
+          .sql(arg_sql_1,
+              hdrs: arg_hdrs, typed: arg_typed, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Sqlresponse response) {
         checkSqlresponse(response);
       })));
@@ -1642,6 +1661,7 @@
       var arg_sql_1 = "foo";
       var arg_hdrs = true;
       var arg_typed = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1678,6 +1698,7 @@
         unittest.expect(queryMap["sql"].first, unittest.equals(arg_sql_1));
         unittest.expect(queryMap["hdrs"].first, unittest.equals("$arg_hdrs"));
         unittest.expect(queryMap["typed"].first, unittest.equals("$arg_typed"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1686,7 +1707,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .sqlGet(arg_sql_1, hdrs: arg_hdrs, typed: arg_typed)
+          .sqlGet(arg_sql_1,
+              hdrs: arg_hdrs, typed: arg_typed, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Sqlresponse response) {
         checkSqlresponse(response);
       })));
@@ -1699,6 +1721,7 @@
       api.StyleResourceApi res = new api.FusiontablesApi(mock).style;
       var arg_tableId = "foo";
       var arg_styleId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1744,6 +1767,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1751,7 +1775,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_tableId, arg_styleId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_tableId, arg_styleId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -1759,6 +1785,7 @@
       api.StyleResourceApi res = new api.FusiontablesApi(mock).style;
       var arg_tableId = "foo";
       var arg_styleId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1804,6 +1831,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1812,7 +1840,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_tableId, arg_styleId)
+          .get(arg_tableId, arg_styleId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StyleSetting response) {
         checkStyleSetting(response);
       })));
@@ -1823,6 +1851,7 @@
       api.StyleResourceApi res = new api.FusiontablesApi(mock).style;
       var arg_request = buildStyleSetting();
       var arg_tableId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StyleSetting.fromJson(json);
         checkStyleSetting(obj);
@@ -1868,6 +1897,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1876,7 +1906,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_tableId)
+          .insert(arg_request, arg_tableId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StyleSetting response) {
         checkStyleSetting(response);
       })));
@@ -1888,6 +1918,7 @@
       var arg_tableId = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1934,6 +1965,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1943,7 +1975,9 @@
       }), true);
       res
           .list(arg_tableId,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StyleSettingList response) {
         checkStyleSettingList(response);
       })));
@@ -1955,6 +1989,7 @@
       var arg_request = buildStyleSetting();
       var arg_tableId = "foo";
       var arg_styleId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StyleSetting.fromJson(json);
         checkStyleSetting(obj);
@@ -2003,6 +2038,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2011,7 +2047,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_tableId, arg_styleId)
+          .patch(arg_request, arg_tableId, arg_styleId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StyleSetting response) {
         checkStyleSetting(response);
       })));
@@ -2023,6 +2059,7 @@
       var arg_request = buildStyleSetting();
       var arg_tableId = "foo";
       var arg_styleId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StyleSetting.fromJson(json);
         checkStyleSetting(obj);
@@ -2071,6 +2108,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2079,7 +2117,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_tableId, arg_styleId)
+          .update(arg_request, arg_tableId, arg_styleId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.StyleSetting response) {
         checkStyleSetting(response);
       })));
@@ -2092,6 +2130,7 @@
       api.TableResourceApi res = new api.FusiontablesApi(mock).table;
       var arg_tableId = "foo";
       var arg_copyPresentation = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2136,6 +2175,7 @@
         }
         unittest.expect(queryMap["copyPresentation"].first,
             unittest.equals("$arg_copyPresentation"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2144,7 +2184,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .copy(arg_tableId, copyPresentation: arg_copyPresentation)
+          .copy(arg_tableId,
+              copyPresentation: arg_copyPresentation, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Table response) {
         checkTable(response);
       })));
@@ -2154,6 +2195,7 @@
       var mock = new HttpServerMock();
       api.TableResourceApi res = new api.FusiontablesApi(mock).table;
       var arg_tableId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2190,6 +2232,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2197,13 +2240,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_tableId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_tableId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
       var mock = new HttpServerMock();
       api.TableResourceApi res = new api.FusiontablesApi(mock).table;
       var arg_tableId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2240,6 +2286,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2247,7 +2294,9 @@
         var resp = convert.JSON.encode(buildTable());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_tableId).then(unittest.expectAsync1(((api.Table response) {
+      res
+          .get(arg_tableId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Table response) {
         checkTable(response);
       })));
     });
@@ -2264,6 +2313,7 @@
       var arg_endLine = 42;
       var arg_isStrict = true;
       var arg_startLine = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2316,6 +2366,7 @@
             queryMap["isStrict"].first, unittest.equals("$arg_isStrict"));
         unittest.expect(core.int.parse(queryMap["startLine"].first),
             unittest.equals(arg_startLine));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2329,7 +2380,8 @@
               encoding: arg_encoding,
               endLine: arg_endLine,
               isStrict: arg_isStrict,
-              startLine: arg_startLine)
+              startLine: arg_startLine,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Import response) {
         checkImport(response);
       })));
@@ -2344,6 +2396,7 @@
       var arg_name = "foo";
       var arg_delimiter = "foo";
       var arg_encoding = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2382,6 +2435,7 @@
             queryMap["delimiter"].first, unittest.equals(arg_delimiter));
         unittest.expect(
             queryMap["encoding"].first, unittest.equals(arg_encoding));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2391,7 +2445,9 @@
       }), true);
       res
           .importTable(arg_name,
-              delimiter: arg_delimiter, encoding: arg_encoding)
+              delimiter: arg_delimiter,
+              encoding: arg_encoding,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Table response) {
         checkTable(response);
       })));
@@ -2401,6 +2457,7 @@
       var mock = new HttpServerMock();
       api.TableResourceApi res = new api.FusiontablesApi(mock).table;
       var arg_request = buildTable();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Table.fromJson(json);
         checkTable(obj);
@@ -2437,6 +2494,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2444,7 +2502,9 @@
         var resp = convert.JSON.encode(buildTable());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.insert(arg_request).then(unittest.expectAsync1(((api.Table response) {
+      res
+          .insert(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Table response) {
         checkTable(response);
       })));
     });
@@ -2454,6 +2514,7 @@
       api.TableResourceApi res = new api.FusiontablesApi(mock).table;
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2491,6 +2552,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2499,7 +2561,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(maxResults: arg_maxResults, pageToken: arg_pageToken)
+          .list(
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TableList response) {
         checkTableList(response);
       })));
@@ -2511,6 +2576,7 @@
       var arg_request = buildTable();
       var arg_tableId = "foo";
       var arg_replaceViewDefinition = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Table.fromJson(json);
         checkTable(obj);
@@ -2552,6 +2618,7 @@
         }
         unittest.expect(queryMap["replaceViewDefinition"].first,
             unittest.equals("$arg_replaceViewDefinition"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2561,7 +2628,8 @@
       }), true);
       res
           .patch(arg_request, arg_tableId,
-              replaceViewDefinition: arg_replaceViewDefinition)
+              replaceViewDefinition: arg_replaceViewDefinition,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Table response) {
         checkTable(response);
       })));
@@ -2579,6 +2647,7 @@
       var arg_endLine = 42;
       var arg_isStrict = true;
       var arg_startLine = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2631,6 +2700,7 @@
             queryMap["isStrict"].first, unittest.equals("$arg_isStrict"));
         unittest.expect(core.int.parse(queryMap["startLine"].first),
             unittest.equals(arg_startLine));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2644,7 +2714,8 @@
               encoding: arg_encoding,
               endLine: arg_endLine,
               isStrict: arg_isStrict,
-              startLine: arg_startLine)
+              startLine: arg_startLine,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Task response) {
         checkTask(response);
       })));
@@ -2656,6 +2727,7 @@
       var arg_request = buildTable();
       var arg_tableId = "foo";
       var arg_replaceViewDefinition = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Table.fromJson(json);
         checkTable(obj);
@@ -2697,6 +2769,7 @@
         }
         unittest.expect(queryMap["replaceViewDefinition"].first,
             unittest.equals("$arg_replaceViewDefinition"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2706,7 +2779,8 @@
       }), true);
       res
           .update(arg_request, arg_tableId,
-              replaceViewDefinition: arg_replaceViewDefinition)
+              replaceViewDefinition: arg_replaceViewDefinition,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Table response) {
         checkTable(response);
       })));
@@ -2719,6 +2793,7 @@
       api.TaskResourceApi res = new api.FusiontablesApi(mock).task;
       var arg_tableId = "foo";
       var arg_taskId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2764,6 +2839,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2771,7 +2847,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_tableId, arg_taskId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_tableId, arg_taskId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -2779,6 +2857,7 @@
       api.TaskResourceApi res = new api.FusiontablesApi(mock).task;
       var arg_tableId = "foo";
       var arg_taskId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2824,6 +2903,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2832,7 +2912,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_tableId, arg_taskId)
+          .get(arg_tableId, arg_taskId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Task response) {
         checkTask(response);
       })));
@@ -2845,6 +2925,7 @@
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
       var arg_startIndex = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2893,6 +2974,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["startIndex"].first),
             unittest.equals(arg_startIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2904,7 +2986,8 @@
           .list(arg_tableId,
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
-              startIndex: arg_startIndex)
+              startIndex: arg_startIndex,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TaskList response) {
         checkTaskList(response);
       })));
@@ -2917,6 +3000,7 @@
       api.TemplateResourceApi res = new api.FusiontablesApi(mock).template;
       var arg_tableId = "foo";
       var arg_templateId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2962,6 +3046,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2970,7 +3055,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_tableId, arg_templateId)
+          .delete(arg_tableId, arg_templateId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -2979,6 +3064,7 @@
       api.TemplateResourceApi res = new api.FusiontablesApi(mock).template;
       var arg_tableId = "foo";
       var arg_templateId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3024,6 +3110,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3032,7 +3119,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_tableId, arg_templateId)
+          .get(arg_tableId, arg_templateId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Template response) {
         checkTemplate(response);
       })));
@@ -3043,6 +3130,7 @@
       api.TemplateResourceApi res = new api.FusiontablesApi(mock).template;
       var arg_request = buildTemplate();
       var arg_tableId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Template.fromJson(json);
         checkTemplate(obj);
@@ -3088,6 +3176,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3096,7 +3185,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_tableId)
+          .insert(arg_request, arg_tableId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Template response) {
         checkTemplate(response);
       })));
@@ -3108,6 +3197,7 @@
       var arg_tableId = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3154,6 +3244,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3163,7 +3254,9 @@
       }), true);
       res
           .list(arg_tableId,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TemplateList response) {
         checkTemplateList(response);
       })));
@@ -3175,6 +3268,7 @@
       var arg_request = buildTemplate();
       var arg_tableId = "foo";
       var arg_templateId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Template.fromJson(json);
         checkTemplate(obj);
@@ -3223,6 +3317,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3231,7 +3326,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_tableId, arg_templateId)
+          .patch(arg_request, arg_tableId, arg_templateId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Template response) {
         checkTemplate(response);
       })));
@@ -3243,6 +3338,7 @@
       var arg_request = buildTemplate();
       var arg_tableId = "foo";
       var arg_templateId = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Template.fromJson(json);
         checkTemplate(obj);
@@ -3291,6 +3387,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3299,7 +3396,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_tableId, arg_templateId)
+          .update(arg_request, arg_tableId, arg_templateId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Template response) {
         checkTemplate(response);
       })));
diff --git a/generated/googleapis/test/games/v1_test.dart b/generated/googleapis/test/games/v1_test.dart
index 3a35d1c..4ad0892 100644
--- a/generated/googleapis/test/games/v1_test.dart
+++ b/generated/googleapis/test/games/v1_test.dart
@@ -93,14 +93,14 @@
   buildCounterAchievementDefinition--;
 }
 
-buildUnnamed96() {
+buildUnnamed77() {
   var o = new core.List<api.AchievementDefinition>();
   o.add(buildAchievementDefinition());
   o.add(buildAchievementDefinition());
   return o;
 }
 
-checkUnnamed96(core.List<api.AchievementDefinition> o) {
+checkUnnamed77(core.List<api.AchievementDefinition> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAchievementDefinition(o[0]);
   checkAchievementDefinition(o[1]);
@@ -111,7 +111,7 @@
   var o = new api.AchievementDefinitionsListResponse();
   buildCounterAchievementDefinitionsListResponse++;
   if (buildCounterAchievementDefinitionsListResponse < 3) {
-    o.items = buildUnnamed96();
+    o.items = buildUnnamed77();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -123,7 +123,7 @@
     api.AchievementDefinitionsListResponse o) {
   buildCounterAchievementDefinitionsListResponse++;
   if (buildCounterAchievementDefinitionsListResponse < 3) {
-    checkUnnamed96(o.items);
+    checkUnnamed77(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -219,14 +219,14 @@
   buildCounterAchievementUnlockResponse--;
 }
 
-buildUnnamed97() {
+buildUnnamed78() {
   var o = new core.List<api.AchievementUpdateRequest>();
   o.add(buildAchievementUpdateRequest());
   o.add(buildAchievementUpdateRequest());
   return o;
 }
 
-checkUnnamed97(core.List<api.AchievementUpdateRequest> o) {
+checkUnnamed78(core.List<api.AchievementUpdateRequest> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAchievementUpdateRequest(o[0]);
   checkAchievementUpdateRequest(o[1]);
@@ -238,7 +238,7 @@
   buildCounterAchievementUpdateMultipleRequest++;
   if (buildCounterAchievementUpdateMultipleRequest < 3) {
     o.kind = "foo";
-    o.updates = buildUnnamed97();
+    o.updates = buildUnnamed78();
   }
   buildCounterAchievementUpdateMultipleRequest--;
   return o;
@@ -248,19 +248,19 @@
   buildCounterAchievementUpdateMultipleRequest++;
   if (buildCounterAchievementUpdateMultipleRequest < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed97(o.updates);
+    checkUnnamed78(o.updates);
   }
   buildCounterAchievementUpdateMultipleRequest--;
 }
 
-buildUnnamed98() {
+buildUnnamed79() {
   var o = new core.List<api.AchievementUpdateResponse>();
   o.add(buildAchievementUpdateResponse());
   o.add(buildAchievementUpdateResponse());
   return o;
 }
 
-checkUnnamed98(core.List<api.AchievementUpdateResponse> o) {
+checkUnnamed79(core.List<api.AchievementUpdateResponse> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAchievementUpdateResponse(o[0]);
   checkAchievementUpdateResponse(o[1]);
@@ -272,7 +272,7 @@
   buildCounterAchievementUpdateMultipleResponse++;
   if (buildCounterAchievementUpdateMultipleResponse < 3) {
     o.kind = "foo";
-    o.updatedAchievements = buildUnnamed98();
+    o.updatedAchievements = buildUnnamed79();
   }
   buildCounterAchievementUpdateMultipleResponse--;
   return o;
@@ -283,7 +283,7 @@
   buildCounterAchievementUpdateMultipleResponse++;
   if (buildCounterAchievementUpdateMultipleResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed98(o.updatedAchievements);
+    checkUnnamed79(o.updatedAchievements);
   }
   buildCounterAchievementUpdateMultipleResponse--;
 }
@@ -394,40 +394,40 @@
   buildCounterAnonymousPlayer--;
 }
 
-buildUnnamed99() {
+buildUnnamed80() {
   var o = new core.List<api.ImageAsset>();
   o.add(buildImageAsset());
   o.add(buildImageAsset());
   return o;
 }
 
-checkUnnamed99(core.List<api.ImageAsset> o) {
+checkUnnamed80(core.List<api.ImageAsset> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkImageAsset(o[0]);
   checkImageAsset(o[1]);
 }
 
-buildUnnamed100() {
+buildUnnamed81() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed100(core.List<core.String> o) {
+checkUnnamed81(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed101() {
+buildUnnamed82() {
   var o = new core.List<api.Instance>();
   o.add(buildInstance());
   o.add(buildInstance());
   return o;
 }
 
-checkUnnamed101(core.List<api.Instance> o) {
+checkUnnamed82(core.List<api.Instance> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstance(o[0]);
   checkInstance(o[1]);
@@ -439,13 +439,13 @@
   buildCounterApplication++;
   if (buildCounterApplication < 3) {
     o.achievementCount = 42;
-    o.assets = buildUnnamed99();
+    o.assets = buildUnnamed80();
     o.author = "foo";
     o.category = buildApplicationCategory();
     o.description = "foo";
-    o.enabledFeatures = buildUnnamed100();
+    o.enabledFeatures = buildUnnamed81();
     o.id = "foo";
-    o.instances = buildUnnamed101();
+    o.instances = buildUnnamed82();
     o.kind = "foo";
     o.lastUpdatedTimestamp = "foo";
     o.leaderboardCount = 42;
@@ -460,13 +460,13 @@
   buildCounterApplication++;
   if (buildCounterApplication < 3) {
     unittest.expect(o.achievementCount, unittest.equals(42));
-    checkUnnamed99(o.assets);
+    checkUnnamed80(o.assets);
     unittest.expect(o.author, unittest.equals('foo'));
     checkApplicationCategory(o.category);
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed100(o.enabledFeatures);
+    checkUnnamed81(o.enabledFeatures);
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed101(o.instances);
+    checkUnnamed82(o.instances);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.lastUpdatedTimestamp, unittest.equals('foo'));
     unittest.expect(o.leaderboardCount, unittest.equals(42));
@@ -545,14 +545,14 @@
   buildCounterCategory--;
 }
 
-buildUnnamed102() {
+buildUnnamed83() {
   var o = new core.List<api.Category>();
   o.add(buildCategory());
   o.add(buildCategory());
   return o;
 }
 
-checkUnnamed102(core.List<api.Category> o) {
+checkUnnamed83(core.List<api.Category> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCategory(o[0]);
   checkCategory(o[1]);
@@ -563,7 +563,7 @@
   var o = new api.CategoryListResponse();
   buildCounterCategoryListResponse++;
   if (buildCounterCategoryListResponse < 3) {
-    o.items = buildUnnamed102();
+    o.items = buildUnnamed83();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -574,7 +574,7 @@
 checkCategoryListResponse(api.CategoryListResponse o) {
   buildCounterCategoryListResponse++;
   if (buildCounterCategoryListResponse < 3) {
-    checkUnnamed102(o.items);
+    checkUnnamed83(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -625,14 +625,14 @@
   buildCounterEventChild--;
 }
 
-buildUnnamed103() {
+buildUnnamed84() {
   var o = new core.List<api.EventChild>();
   o.add(buildEventChild());
   o.add(buildEventChild());
   return o;
 }
 
-checkUnnamed103(core.List<api.EventChild> o) {
+checkUnnamed84(core.List<api.EventChild> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEventChild(o[0]);
   checkEventChild(o[1]);
@@ -643,7 +643,7 @@
   var o = new api.EventDefinition();
   buildCounterEventDefinition++;
   if (buildCounterEventDefinition < 3) {
-    o.childEvents = buildUnnamed103();
+    o.childEvents = buildUnnamed84();
     o.description = "foo";
     o.displayName = "foo";
     o.id = "foo";
@@ -659,7 +659,7 @@
 checkEventDefinition(api.EventDefinition o) {
   buildCounterEventDefinition++;
   if (buildCounterEventDefinition < 3) {
-    checkUnnamed103(o.childEvents);
+    checkUnnamed84(o.childEvents);
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.displayName, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
@@ -671,14 +671,14 @@
   buildCounterEventDefinition--;
 }
 
-buildUnnamed104() {
+buildUnnamed85() {
   var o = new core.List<api.EventDefinition>();
   o.add(buildEventDefinition());
   o.add(buildEventDefinition());
   return o;
 }
 
-checkUnnamed104(core.List<api.EventDefinition> o) {
+checkUnnamed85(core.List<api.EventDefinition> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEventDefinition(o[0]);
   checkEventDefinition(o[1]);
@@ -689,7 +689,7 @@
   var o = new api.EventDefinitionListResponse();
   buildCounterEventDefinitionListResponse++;
   if (buildCounterEventDefinitionListResponse < 3) {
-    o.items = buildUnnamed104();
+    o.items = buildUnnamed85();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -700,7 +700,7 @@
 checkEventDefinitionListResponse(api.EventDefinitionListResponse o) {
   buildCounterEventDefinitionListResponse++;
   if (buildCounterEventDefinitionListResponse < 3) {
-    checkUnnamed104(o.items);
+    checkUnnamed85(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -730,14 +730,14 @@
   buildCounterEventPeriodRange--;
 }
 
-buildUnnamed105() {
+buildUnnamed86() {
   var o = new core.List<api.EventUpdateRequest>();
   o.add(buildEventUpdateRequest());
   o.add(buildEventUpdateRequest());
   return o;
 }
 
-checkUnnamed105(core.List<api.EventUpdateRequest> o) {
+checkUnnamed86(core.List<api.EventUpdateRequest> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEventUpdateRequest(o[0]);
   checkEventUpdateRequest(o[1]);
@@ -750,7 +750,7 @@
   if (buildCounterEventPeriodUpdate < 3) {
     o.kind = "foo";
     o.timePeriod = buildEventPeriodRange();
-    o.updates = buildUnnamed105();
+    o.updates = buildUnnamed86();
   }
   buildCounterEventPeriodUpdate--;
   return o;
@@ -761,7 +761,7 @@
   if (buildCounterEventPeriodUpdate < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
     checkEventPeriodRange(o.timePeriod);
-    checkUnnamed105(o.updates);
+    checkUnnamed86(o.updates);
   }
   buildCounterEventPeriodUpdate--;
 }
@@ -789,14 +789,14 @@
   buildCounterEventRecordFailure--;
 }
 
-buildUnnamed106() {
+buildUnnamed87() {
   var o = new core.List<api.EventPeriodUpdate>();
   o.add(buildEventPeriodUpdate());
   o.add(buildEventPeriodUpdate());
   return o;
 }
 
-checkUnnamed106(core.List<api.EventPeriodUpdate> o) {
+checkUnnamed87(core.List<api.EventPeriodUpdate> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEventPeriodUpdate(o[0]);
   checkEventPeriodUpdate(o[1]);
@@ -810,7 +810,7 @@
     o.currentTimeMillis = "foo";
     o.kind = "foo";
     o.requestId = "foo";
-    o.timePeriods = buildUnnamed106();
+    o.timePeriods = buildUnnamed87();
   }
   buildCounterEventRecordRequest--;
   return o;
@@ -822,7 +822,7 @@
     unittest.expect(o.currentTimeMillis, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.requestId, unittest.equals('foo'));
-    checkUnnamed106(o.timePeriods);
+    checkUnnamed87(o.timePeriods);
   }
   buildCounterEventRecordRequest--;
 }
@@ -850,40 +850,40 @@
   buildCounterEventUpdateRequest--;
 }
 
-buildUnnamed107() {
+buildUnnamed88() {
   var o = new core.List<api.EventBatchRecordFailure>();
   o.add(buildEventBatchRecordFailure());
   o.add(buildEventBatchRecordFailure());
   return o;
 }
 
-checkUnnamed107(core.List<api.EventBatchRecordFailure> o) {
+checkUnnamed88(core.List<api.EventBatchRecordFailure> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEventBatchRecordFailure(o[0]);
   checkEventBatchRecordFailure(o[1]);
 }
 
-buildUnnamed108() {
+buildUnnamed89() {
   var o = new core.List<api.EventRecordFailure>();
   o.add(buildEventRecordFailure());
   o.add(buildEventRecordFailure());
   return o;
 }
 
-checkUnnamed108(core.List<api.EventRecordFailure> o) {
+checkUnnamed89(core.List<api.EventRecordFailure> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEventRecordFailure(o[0]);
   checkEventRecordFailure(o[1]);
 }
 
-buildUnnamed109() {
+buildUnnamed90() {
   var o = new core.List<api.PlayerEvent>();
   o.add(buildPlayerEvent());
   o.add(buildPlayerEvent());
   return o;
 }
 
-checkUnnamed109(core.List<api.PlayerEvent> o) {
+checkUnnamed90(core.List<api.PlayerEvent> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPlayerEvent(o[0]);
   checkPlayerEvent(o[1]);
@@ -894,10 +894,10 @@
   var o = new api.EventUpdateResponse();
   buildCounterEventUpdateResponse++;
   if (buildCounterEventUpdateResponse < 3) {
-    o.batchFailures = buildUnnamed107();
-    o.eventFailures = buildUnnamed108();
+    o.batchFailures = buildUnnamed88();
+    o.eventFailures = buildUnnamed89();
     o.kind = "foo";
-    o.playerEvents = buildUnnamed109();
+    o.playerEvents = buildUnnamed90();
   }
   buildCounterEventUpdateResponse--;
   return o;
@@ -906,10 +906,10 @@
 checkEventUpdateResponse(api.EventUpdateResponse o) {
   buildCounterEventUpdateResponse++;
   if (buildCounterEventUpdateResponse < 3) {
-    checkUnnamed107(o.batchFailures);
-    checkUnnamed108(o.eventFailures);
+    checkUnnamed88(o.batchFailures);
+    checkUnnamed89(o.eventFailures);
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed109(o.playerEvents);
+    checkUnnamed90(o.playerEvents);
   }
   buildCounterEventUpdateResponse--;
 }
@@ -1163,14 +1163,14 @@
   buildCounterLeaderboardEntry--;
 }
 
-buildUnnamed110() {
+buildUnnamed91() {
   var o = new core.List<api.Leaderboard>();
   o.add(buildLeaderboard());
   o.add(buildLeaderboard());
   return o;
 }
 
-checkUnnamed110(core.List<api.Leaderboard> o) {
+checkUnnamed91(core.List<api.Leaderboard> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLeaderboard(o[0]);
   checkLeaderboard(o[1]);
@@ -1181,7 +1181,7 @@
   var o = new api.LeaderboardListResponse();
   buildCounterLeaderboardListResponse++;
   if (buildCounterLeaderboardListResponse < 3) {
-    o.items = buildUnnamed110();
+    o.items = buildUnnamed91();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -1192,7 +1192,7 @@
 checkLeaderboardListResponse(api.LeaderboardListResponse o) {
   buildCounterLeaderboardListResponse++;
   if (buildCounterLeaderboardListResponse < 3) {
-    checkUnnamed110(o.items);
+    checkUnnamed91(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -1226,14 +1226,14 @@
   buildCounterLeaderboardScoreRank--;
 }
 
-buildUnnamed111() {
+buildUnnamed92() {
   var o = new core.List<api.LeaderboardEntry>();
   o.add(buildLeaderboardEntry());
   o.add(buildLeaderboardEntry());
   return o;
 }
 
-checkUnnamed111(core.List<api.LeaderboardEntry> o) {
+checkUnnamed92(core.List<api.LeaderboardEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLeaderboardEntry(o[0]);
   checkLeaderboardEntry(o[1]);
@@ -1244,7 +1244,7 @@
   var o = new api.LeaderboardScores();
   buildCounterLeaderboardScores++;
   if (buildCounterLeaderboardScores < 3) {
-    o.items = buildUnnamed111();
+    o.items = buildUnnamed92();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.numScores = "foo";
@@ -1258,7 +1258,7 @@
 checkLeaderboardScores(api.LeaderboardScores o) {
   buildCounterLeaderboardScores++;
   if (buildCounterLeaderboardScores < 3) {
-    checkUnnamed111(o.items);
+    checkUnnamed92(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.numScores, unittest.equals('foo'));
@@ -1268,14 +1268,14 @@
   buildCounterLeaderboardScores--;
 }
 
-buildUnnamed112() {
+buildUnnamed93() {
   var o = new core.List<api.PlayerLevel>();
   o.add(buildPlayerLevel());
   o.add(buildPlayerLevel());
   return o;
 }
 
-checkUnnamed112(core.List<api.PlayerLevel> o) {
+checkUnnamed93(core.List<api.PlayerLevel> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPlayerLevel(o[0]);
   checkPlayerLevel(o[1]);
@@ -1288,7 +1288,7 @@
   if (buildCounterMetagameConfig < 3) {
     o.currentVersion = 42;
     o.kind = "foo";
-    o.playerLevels = buildUnnamed112();
+    o.playerLevels = buildUnnamed93();
   }
   buildCounterMetagameConfig--;
   return o;
@@ -1299,7 +1299,7 @@
   if (buildCounterMetagameConfig < 3) {
     unittest.expect(o.currentVersion, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed112(o.playerLevels);
+    checkUnnamed93(o.playerLevels);
   }
   buildCounterMetagameConfig--;
 }
@@ -1536,14 +1536,14 @@
   buildCounterPlayerAchievement--;
 }
 
-buildUnnamed113() {
+buildUnnamed94() {
   var o = new core.List<api.PlayerAchievement>();
   o.add(buildPlayerAchievement());
   o.add(buildPlayerAchievement());
   return o;
 }
 
-checkUnnamed113(core.List<api.PlayerAchievement> o) {
+checkUnnamed94(core.List<api.PlayerAchievement> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPlayerAchievement(o[0]);
   checkPlayerAchievement(o[1]);
@@ -1554,7 +1554,7 @@
   var o = new api.PlayerAchievementListResponse();
   buildCounterPlayerAchievementListResponse++;
   if (buildCounterPlayerAchievementListResponse < 3) {
-    o.items = buildUnnamed113();
+    o.items = buildUnnamed94();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -1565,7 +1565,7 @@
 checkPlayerAchievementListResponse(api.PlayerAchievementListResponse o) {
   buildCounterPlayerAchievementListResponse++;
   if (buildCounterPlayerAchievementListResponse < 3) {
-    checkUnnamed113(o.items);
+    checkUnnamed94(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -1599,14 +1599,14 @@
   buildCounterPlayerEvent--;
 }
 
-buildUnnamed114() {
+buildUnnamed95() {
   var o = new core.List<api.PlayerEvent>();
   o.add(buildPlayerEvent());
   o.add(buildPlayerEvent());
   return o;
 }
 
-checkUnnamed114(core.List<api.PlayerEvent> o) {
+checkUnnamed95(core.List<api.PlayerEvent> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPlayerEvent(o[0]);
   checkPlayerEvent(o[1]);
@@ -1617,7 +1617,7 @@
   var o = new api.PlayerEventListResponse();
   buildCounterPlayerEventListResponse++;
   if (buildCounterPlayerEventListResponse < 3) {
-    o.items = buildUnnamed114();
+    o.items = buildUnnamed95();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -1628,7 +1628,7 @@
 checkPlayerEventListResponse(api.PlayerEventListResponse o) {
   buildCounterPlayerEventListResponse++;
   if (buildCounterPlayerEventListResponse < 3) {
-    checkUnnamed114(o.items);
+    checkUnnamed95(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -1697,14 +1697,14 @@
   buildCounterPlayerLeaderboardScore--;
 }
 
-buildUnnamed115() {
+buildUnnamed96() {
   var o = new core.List<api.PlayerLeaderboardScore>();
   o.add(buildPlayerLeaderboardScore());
   o.add(buildPlayerLeaderboardScore());
   return o;
 }
 
-checkUnnamed115(core.List<api.PlayerLeaderboardScore> o) {
+checkUnnamed96(core.List<api.PlayerLeaderboardScore> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPlayerLeaderboardScore(o[0]);
   checkPlayerLeaderboardScore(o[1]);
@@ -1715,7 +1715,7 @@
   var o = new api.PlayerLeaderboardScoreListResponse();
   buildCounterPlayerLeaderboardScoreListResponse++;
   if (buildCounterPlayerLeaderboardScoreListResponse < 3) {
-    o.items = buildUnnamed115();
+    o.items = buildUnnamed96();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.player = buildPlayer();
@@ -1728,7 +1728,7 @@
     api.PlayerLeaderboardScoreListResponse o) {
   buildCounterPlayerLeaderboardScoreListResponse++;
   if (buildCounterPlayerLeaderboardScoreListResponse < 3) {
-    checkUnnamed115(o.items);
+    checkUnnamed96(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPlayer(o.player);
@@ -1761,14 +1761,14 @@
   buildCounterPlayerLevel--;
 }
 
-buildUnnamed116() {
+buildUnnamed97() {
   var o = new core.List<api.Player>();
   o.add(buildPlayer());
   o.add(buildPlayer());
   return o;
 }
 
-checkUnnamed116(core.List<api.Player> o) {
+checkUnnamed97(core.List<api.Player> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPlayer(o[0]);
   checkPlayer(o[1]);
@@ -1779,7 +1779,7 @@
   var o = new api.PlayerListResponse();
   buildCounterPlayerListResponse++;
   if (buildCounterPlayerListResponse < 3) {
-    o.items = buildUnnamed116();
+    o.items = buildUnnamed97();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -1790,7 +1790,7 @@
 checkPlayerListResponse(api.PlayerListResponse o) {
   buildCounterPlayerListResponse++;
   if (buildCounterPlayerListResponse < 3) {
-    checkUnnamed116(o.items);
+    checkUnnamed97(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -1824,14 +1824,14 @@
   buildCounterPlayerScore--;
 }
 
-buildUnnamed117() {
+buildUnnamed98() {
   var o = new core.List<api.PlayerScoreResponse>();
   o.add(buildPlayerScoreResponse());
   o.add(buildPlayerScoreResponse());
   return o;
 }
 
-checkUnnamed117(core.List<api.PlayerScoreResponse> o) {
+checkUnnamed98(core.List<api.PlayerScoreResponse> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPlayerScoreResponse(o[0]);
   checkPlayerScoreResponse(o[1]);
@@ -1843,7 +1843,7 @@
   buildCounterPlayerScoreListResponse++;
   if (buildCounterPlayerScoreListResponse < 3) {
     o.kind = "foo";
-    o.submittedScores = buildUnnamed117();
+    o.submittedScores = buildUnnamed98();
   }
   buildCounterPlayerScoreListResponse--;
   return o;
@@ -1853,32 +1853,32 @@
   buildCounterPlayerScoreListResponse++;
   if (buildCounterPlayerScoreListResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed117(o.submittedScores);
+    checkUnnamed98(o.submittedScores);
   }
   buildCounterPlayerScoreListResponse--;
 }
 
-buildUnnamed118() {
+buildUnnamed99() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed118(core.List<core.String> o) {
+checkUnnamed99(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed119() {
+buildUnnamed100() {
   var o = new core.List<api.PlayerScore>();
   o.add(buildPlayerScore());
   o.add(buildPlayerScore());
   return o;
 }
 
-checkUnnamed119(core.List<api.PlayerScore> o) {
+checkUnnamed100(core.List<api.PlayerScore> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPlayerScore(o[0]);
   checkPlayerScore(o[1]);
@@ -1889,12 +1889,12 @@
   var o = new api.PlayerScoreResponse();
   buildCounterPlayerScoreResponse++;
   if (buildCounterPlayerScoreResponse < 3) {
-    o.beatenScoreTimeSpans = buildUnnamed118();
+    o.beatenScoreTimeSpans = buildUnnamed99();
     o.formattedScore = "foo";
     o.kind = "foo";
     o.leaderboardId = "foo";
     o.scoreTag = "foo";
-    o.unbeatenScores = buildUnnamed119();
+    o.unbeatenScores = buildUnnamed100();
   }
   buildCounterPlayerScoreResponse--;
   return o;
@@ -1903,24 +1903,24 @@
 checkPlayerScoreResponse(api.PlayerScoreResponse o) {
   buildCounterPlayerScoreResponse++;
   if (buildCounterPlayerScoreResponse < 3) {
-    checkUnnamed118(o.beatenScoreTimeSpans);
+    checkUnnamed99(o.beatenScoreTimeSpans);
     unittest.expect(o.formattedScore, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.leaderboardId, unittest.equals('foo'));
     unittest.expect(o.scoreTag, unittest.equals('foo'));
-    checkUnnamed119(o.unbeatenScores);
+    checkUnnamed100(o.unbeatenScores);
   }
   buildCounterPlayerScoreResponse--;
 }
 
-buildUnnamed120() {
+buildUnnamed101() {
   var o = new core.List<api.ScoreSubmission>();
   o.add(buildScoreSubmission());
   o.add(buildScoreSubmission());
   return o;
 }
 
-checkUnnamed120(core.List<api.ScoreSubmission> o) {
+checkUnnamed101(core.List<api.ScoreSubmission> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkScoreSubmission(o[0]);
   checkScoreSubmission(o[1]);
@@ -1932,7 +1932,7 @@
   buildCounterPlayerScoreSubmissionList++;
   if (buildCounterPlayerScoreSubmissionList < 3) {
     o.kind = "foo";
-    o.scores = buildUnnamed120();
+    o.scores = buildUnnamed101();
   }
   buildCounterPlayerScoreSubmissionList--;
   return o;
@@ -1942,7 +1942,7 @@
   buildCounterPlayerScoreSubmissionList++;
   if (buildCounterPlayerScoreSubmissionList < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed120(o.scores);
+    checkUnnamed101(o.scores);
   }
   buildCounterPlayerScoreSubmissionList--;
 }
@@ -2035,14 +2035,14 @@
   buildCounterPushTokenId--;
 }
 
-buildUnnamed121() {
+buildUnnamed102() {
   var o = new core.List<api.QuestMilestone>();
   o.add(buildQuestMilestone());
   o.add(buildQuestMilestone());
   return o;
 }
 
-checkUnnamed121(core.List<api.QuestMilestone> o) {
+checkUnnamed102(core.List<api.QuestMilestone> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQuestMilestone(o[0]);
   checkQuestMilestone(o[1]);
@@ -2064,7 +2064,7 @@
     o.isDefaultIconUrl = true;
     o.kind = "foo";
     o.lastUpdatedTimestampMillis = "foo";
-    o.milestones = buildUnnamed121();
+    o.milestones = buildUnnamed102();
     o.name = "foo";
     o.notifyTimestampMillis = "foo";
     o.startTimestampMillis = "foo";
@@ -2088,7 +2088,7 @@
     unittest.expect(o.isDefaultIconUrl, unittest.isTrue);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.lastUpdatedTimestampMillis, unittest.equals('foo'));
-    checkUnnamed121(o.milestones);
+    checkUnnamed102(o.milestones);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.notifyTimestampMillis, unittest.equals('foo'));
     unittest.expect(o.startTimestampMillis, unittest.equals('foo'));
@@ -2147,14 +2147,14 @@
   buildCounterQuestCriterion--;
 }
 
-buildUnnamed122() {
+buildUnnamed103() {
   var o = new core.List<api.Quest>();
   o.add(buildQuest());
   o.add(buildQuest());
   return o;
 }
 
-checkUnnamed122(core.List<api.Quest> o) {
+checkUnnamed103(core.List<api.Quest> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQuest(o[0]);
   checkQuest(o[1]);
@@ -2165,7 +2165,7 @@
   var o = new api.QuestListResponse();
   buildCounterQuestListResponse++;
   if (buildCounterQuestListResponse < 3) {
-    o.items = buildUnnamed122();
+    o.items = buildUnnamed103();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -2176,21 +2176,21 @@
 checkQuestListResponse(api.QuestListResponse o) {
   buildCounterQuestListResponse++;
   if (buildCounterQuestListResponse < 3) {
-    checkUnnamed122(o.items);
+    checkUnnamed103(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterQuestListResponse--;
 }
 
-buildUnnamed123() {
+buildUnnamed104() {
   var o = new core.List<api.QuestCriterion>();
   o.add(buildQuestCriterion());
   o.add(buildQuestCriterion());
   return o;
 }
 
-checkUnnamed123(core.List<api.QuestCriterion> o) {
+checkUnnamed104(core.List<api.QuestCriterion> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQuestCriterion(o[0]);
   checkQuestCriterion(o[1]);
@@ -2202,7 +2202,7 @@
   buildCounterQuestMilestone++;
   if (buildCounterQuestMilestone < 3) {
     o.completionRewardData = "foo";
-    o.criteria = buildUnnamed123();
+    o.criteria = buildUnnamed104();
     o.id = "foo";
     o.kind = "foo";
     o.state = "foo";
@@ -2215,7 +2215,7 @@
   buildCounterQuestMilestone++;
   if (buildCounterQuestMilestone < 3) {
     unittest.expect(o.completionRewardData, unittest.equals('foo'));
-    checkUnnamed123(o.criteria);
+    checkUnnamed104(o.criteria);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.state, unittest.equals('foo'));
@@ -2246,14 +2246,14 @@
   buildCounterRevisionCheckResponse--;
 }
 
-buildUnnamed124() {
+buildUnnamed105() {
   var o = new core.List<api.RoomParticipant>();
   o.add(buildRoomParticipant());
   o.add(buildRoomParticipant());
   return o;
 }
 
-checkUnnamed124(core.List<api.RoomParticipant> o) {
+checkUnnamed105(core.List<api.RoomParticipant> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRoomParticipant(o[0]);
   checkRoomParticipant(o[1]);
@@ -2272,7 +2272,7 @@
     o.inviterId = "foo";
     o.kind = "foo";
     o.lastUpdateDetails = buildRoomModification();
-    o.participants = buildUnnamed124();
+    o.participants = buildUnnamed105();
     o.roomId = "foo";
     o.roomStatusVersion = 42;
     o.status = "foo";
@@ -2293,7 +2293,7 @@
     unittest.expect(o.inviterId, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     checkRoomModification(o.lastUpdateDetails);
-    checkUnnamed124(o.participants);
+    checkUnnamed105(o.participants);
     unittest.expect(o.roomId, unittest.equals('foo'));
     unittest.expect(o.roomStatusVersion, unittest.equals(42));
     unittest.expect(o.status, unittest.equals('foo'));
@@ -2369,27 +2369,27 @@
   buildCounterRoomClientAddress--;
 }
 
-buildUnnamed125() {
+buildUnnamed106() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed125(core.List<core.String> o) {
+checkUnnamed106(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed126() {
+buildUnnamed107() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed126(core.List<core.String> o) {
+checkUnnamed107(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2401,9 +2401,9 @@
   buildCounterRoomCreateRequest++;
   if (buildCounterRoomCreateRequest < 3) {
     o.autoMatchingCriteria = buildRoomAutoMatchingCriteria();
-    o.capabilities = buildUnnamed125();
+    o.capabilities = buildUnnamed106();
     o.clientAddress = buildRoomClientAddress();
-    o.invitedPlayerIds = buildUnnamed126();
+    o.invitedPlayerIds = buildUnnamed107();
     o.kind = "foo";
     o.networkDiagnostics = buildNetworkDiagnostics();
     o.requestId = "foo";
@@ -2417,9 +2417,9 @@
   buildCounterRoomCreateRequest++;
   if (buildCounterRoomCreateRequest < 3) {
     checkRoomAutoMatchingCriteria(o.autoMatchingCriteria);
-    checkUnnamed125(o.capabilities);
+    checkUnnamed106(o.capabilities);
     checkRoomClientAddress(o.clientAddress);
-    checkUnnamed126(o.invitedPlayerIds);
+    checkUnnamed107(o.invitedPlayerIds);
     unittest.expect(o.kind, unittest.equals('foo'));
     checkNetworkDiagnostics(o.networkDiagnostics);
     unittest.expect(o.requestId, unittest.equals('foo'));
@@ -2428,14 +2428,14 @@
   buildCounterRoomCreateRequest--;
 }
 
-buildUnnamed127() {
+buildUnnamed108() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed127(core.List<core.String> o) {
+checkUnnamed108(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2446,7 +2446,7 @@
   var o = new api.RoomJoinRequest();
   buildCounterRoomJoinRequest++;
   if (buildCounterRoomJoinRequest < 3) {
-    o.capabilities = buildUnnamed127();
+    o.capabilities = buildUnnamed108();
     o.clientAddress = buildRoomClientAddress();
     o.kind = "foo";
     o.networkDiagnostics = buildNetworkDiagnostics();
@@ -2458,7 +2458,7 @@
 checkRoomJoinRequest(api.RoomJoinRequest o) {
   buildCounterRoomJoinRequest++;
   if (buildCounterRoomJoinRequest < 3) {
-    checkUnnamed127(o.capabilities);
+    checkUnnamed108(o.capabilities);
     checkRoomClientAddress(o.clientAddress);
     unittest.expect(o.kind, unittest.equals('foo'));
     checkNetworkDiagnostics(o.networkDiagnostics);
@@ -2466,14 +2466,14 @@
   buildCounterRoomJoinRequest--;
 }
 
-buildUnnamed128() {
+buildUnnamed109() {
   var o = new core.List<api.PeerSessionDiagnostics>();
   o.add(buildPeerSessionDiagnostics());
   o.add(buildPeerSessionDiagnostics());
   return o;
 }
 
-checkUnnamed128(core.List<api.PeerSessionDiagnostics> o) {
+checkUnnamed109(core.List<api.PeerSessionDiagnostics> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPeerSessionDiagnostics(o[0]);
   checkPeerSessionDiagnostics(o[1]);
@@ -2490,7 +2490,7 @@
     o.kind = "foo";
     o.networkOperatorCode = "foo";
     o.networkOperatorName = "foo";
-    o.peerSession = buildUnnamed128();
+    o.peerSession = buildUnnamed109();
     o.socketsUsed = true;
   }
   buildCounterRoomLeaveDiagnostics--;
@@ -2506,7 +2506,7 @@
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.networkOperatorCode, unittest.equals('foo'));
     unittest.expect(o.networkOperatorName, unittest.equals('foo'));
-    checkUnnamed128(o.peerSession);
+    checkUnnamed109(o.peerSession);
     unittest.expect(o.socketsUsed, unittest.isTrue);
   }
   buildCounterRoomLeaveDiagnostics--;
@@ -2535,14 +2535,14 @@
   buildCounterRoomLeaveRequest--;
 }
 
-buildUnnamed129() {
+buildUnnamed110() {
   var o = new core.List<api.Room>();
   o.add(buildRoom());
   o.add(buildRoom());
   return o;
 }
 
-checkUnnamed129(core.List<api.Room> o) {
+checkUnnamed110(core.List<api.Room> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRoom(o[0]);
   checkRoom(o[1]);
@@ -2553,7 +2553,7 @@
   var o = new api.RoomList();
   buildCounterRoomList++;
   if (buildCounterRoomList < 3) {
-    o.items = buildUnnamed129();
+    o.items = buildUnnamed110();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -2564,7 +2564,7 @@
 checkRoomList(api.RoomList o) {
   buildCounterRoomList++;
   if (buildCounterRoomList < 3) {
-    checkUnnamed129(o.items);
+    checkUnnamed110(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -2625,14 +2625,14 @@
   buildCounterRoomP2PStatus--;
 }
 
-buildUnnamed130() {
+buildUnnamed111() {
   var o = new core.List<api.RoomP2PStatus>();
   o.add(buildRoomP2PStatus());
   o.add(buildRoomP2PStatus());
   return o;
 }
 
-checkUnnamed130(core.List<api.RoomP2PStatus> o) {
+checkUnnamed111(core.List<api.RoomP2PStatus> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRoomP2PStatus(o[0]);
   checkRoomP2PStatus(o[1]);
@@ -2644,7 +2644,7 @@
   buildCounterRoomP2PStatuses++;
   if (buildCounterRoomP2PStatuses < 3) {
     o.kind = "foo";
-    o.updates = buildUnnamed130();
+    o.updates = buildUnnamed111();
   }
   buildCounterRoomP2PStatuses--;
   return o;
@@ -2654,19 +2654,19 @@
   buildCounterRoomP2PStatuses++;
   if (buildCounterRoomP2PStatuses < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed130(o.updates);
+    checkUnnamed111(o.updates);
   }
   buildCounterRoomP2PStatuses--;
 }
 
-buildUnnamed131() {
+buildUnnamed112() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed131(core.List<core.String> o) {
+checkUnnamed112(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2679,7 +2679,7 @@
   if (buildCounterRoomParticipant < 3) {
     o.autoMatched = true;
     o.autoMatchedPlayer = buildAnonymousPlayer();
-    o.capabilities = buildUnnamed131();
+    o.capabilities = buildUnnamed112();
     o.clientAddress = buildRoomClientAddress();
     o.connected = true;
     o.id = "foo";
@@ -2697,7 +2697,7 @@
   if (buildCounterRoomParticipant < 3) {
     unittest.expect(o.autoMatched, unittest.isTrue);
     checkAnonymousPlayer(o.autoMatchedPlayer);
-    checkUnnamed131(o.capabilities);
+    checkUnnamed112(o.capabilities);
     checkRoomClientAddress(o.clientAddress);
     unittest.expect(o.connected, unittest.isTrue);
     unittest.expect(o.id, unittest.equals('foo'));
@@ -2709,14 +2709,14 @@
   buildCounterRoomParticipant--;
 }
 
-buildUnnamed132() {
+buildUnnamed113() {
   var o = new core.List<api.RoomParticipant>();
   o.add(buildRoomParticipant());
   o.add(buildRoomParticipant());
   return o;
 }
 
-checkUnnamed132(core.List<api.RoomParticipant> o) {
+checkUnnamed113(core.List<api.RoomParticipant> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRoomParticipant(o[0]);
   checkRoomParticipant(o[1]);
@@ -2729,7 +2729,7 @@
   if (buildCounterRoomStatus < 3) {
     o.autoMatchingStatus = buildRoomAutoMatchStatus();
     o.kind = "foo";
-    o.participants = buildUnnamed132();
+    o.participants = buildUnnamed113();
     o.roomId = "foo";
     o.status = "foo";
     o.statusVersion = 42;
@@ -2743,7 +2743,7 @@
   if (buildCounterRoomStatus < 3) {
     checkRoomAutoMatchStatus(o.autoMatchingStatus);
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed132(o.participants);
+    checkUnnamed113(o.participants);
     unittest.expect(o.roomId, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals('foo'));
     unittest.expect(o.statusVersion, unittest.equals(42));
@@ -2844,14 +2844,14 @@
   buildCounterSnapshotImage--;
 }
 
-buildUnnamed133() {
+buildUnnamed114() {
   var o = new core.List<api.Snapshot>();
   o.add(buildSnapshot());
   o.add(buildSnapshot());
   return o;
 }
 
-checkUnnamed133(core.List<api.Snapshot> o) {
+checkUnnamed114(core.List<api.Snapshot> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSnapshot(o[0]);
   checkSnapshot(o[1]);
@@ -2862,7 +2862,7 @@
   var o = new api.SnapshotListResponse();
   buildCounterSnapshotListResponse++;
   if (buildCounterSnapshotListResponse < 3) {
-    o.items = buildUnnamed133();
+    o.items = buildUnnamed114();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -2873,7 +2873,7 @@
 checkSnapshotListResponse(api.SnapshotListResponse o) {
   buildCounterSnapshotListResponse++;
   if (buildCounterSnapshotListResponse < 3) {
-    checkUnnamed133(o.items);
+    checkUnnamed114(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -2905,27 +2905,27 @@
   buildCounterTurnBasedAutoMatchingCriteria--;
 }
 
-buildUnnamed134() {
+buildUnnamed115() {
   var o = new core.List<api.TurnBasedMatchParticipant>();
   o.add(buildTurnBasedMatchParticipant());
   o.add(buildTurnBasedMatchParticipant());
   return o;
 }
 
-checkUnnamed134(core.List<api.TurnBasedMatchParticipant> o) {
+checkUnnamed115(core.List<api.TurnBasedMatchParticipant> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTurnBasedMatchParticipant(o[0]);
   checkTurnBasedMatchParticipant(o[1]);
 }
 
-buildUnnamed135() {
+buildUnnamed116() {
   var o = new core.List<api.ParticipantResult>();
   o.add(buildParticipantResult());
   o.add(buildParticipantResult());
   return o;
 }
 
-checkUnnamed135(core.List<api.ParticipantResult> o) {
+checkUnnamed116(core.List<api.ParticipantResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkParticipantResult(o[0]);
   checkParticipantResult(o[1]);
@@ -2947,11 +2947,11 @@
     o.matchId = "foo";
     o.matchNumber = 42;
     o.matchVersion = 42;
-    o.participants = buildUnnamed134();
+    o.participants = buildUnnamed115();
     o.pendingParticipantId = "foo";
     o.previousMatchData = buildTurnBasedMatchData();
     o.rematchId = "foo";
-    o.results = buildUnnamed135();
+    o.results = buildUnnamed116();
     o.status = "foo";
     o.userMatchStatus = "foo";
     o.variant = 42;
@@ -2975,11 +2975,11 @@
     unittest.expect(o.matchId, unittest.equals('foo'));
     unittest.expect(o.matchNumber, unittest.equals(42));
     unittest.expect(o.matchVersion, unittest.equals(42));
-    checkUnnamed134(o.participants);
+    checkUnnamed115(o.participants);
     unittest.expect(o.pendingParticipantId, unittest.equals('foo'));
     checkTurnBasedMatchData(o.previousMatchData);
     unittest.expect(o.rematchId, unittest.equals('foo'));
-    checkUnnamed135(o.results);
+    checkUnnamed116(o.results);
     unittest.expect(o.status, unittest.equals('foo'));
     unittest.expect(o.userMatchStatus, unittest.equals('foo'));
     unittest.expect(o.variant, unittest.equals(42));
@@ -2988,14 +2988,14 @@
   buildCounterTurnBasedMatch--;
 }
 
-buildUnnamed136() {
+buildUnnamed117() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed136(core.List<core.String> o) {
+checkUnnamed117(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -3007,7 +3007,7 @@
   buildCounterTurnBasedMatchCreateRequest++;
   if (buildCounterTurnBasedMatchCreateRequest < 3) {
     o.autoMatchingCriteria = buildTurnBasedAutoMatchingCriteria();
-    o.invitedPlayerIds = buildUnnamed136();
+    o.invitedPlayerIds = buildUnnamed117();
     o.kind = "foo";
     o.requestId = "foo";
     o.variant = 42;
@@ -3020,7 +3020,7 @@
   buildCounterTurnBasedMatchCreateRequest++;
   if (buildCounterTurnBasedMatchCreateRequest < 3) {
     checkTurnBasedAutoMatchingCriteria(o.autoMatchingCriteria);
-    checkUnnamed136(o.invitedPlayerIds);
+    checkUnnamed117(o.invitedPlayerIds);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.requestId, unittest.equals('foo'));
     unittest.expect(o.variant, unittest.equals(42));
@@ -3072,14 +3072,14 @@
   buildCounterTurnBasedMatchDataRequest--;
 }
 
-buildUnnamed137() {
+buildUnnamed118() {
   var o = new core.List<api.TurnBasedMatch>();
   o.add(buildTurnBasedMatch());
   o.add(buildTurnBasedMatch());
   return o;
 }
 
-checkUnnamed137(core.List<api.TurnBasedMatch> o) {
+checkUnnamed118(core.List<api.TurnBasedMatch> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTurnBasedMatch(o[0]);
   checkTurnBasedMatch(o[1]);
@@ -3090,7 +3090,7 @@
   var o = new api.TurnBasedMatchList();
   buildCounterTurnBasedMatchList++;
   if (buildCounterTurnBasedMatchList < 3) {
-    o.items = buildUnnamed137();
+    o.items = buildUnnamed118();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -3101,7 +3101,7 @@
 checkTurnBasedMatchList(api.TurnBasedMatchList o) {
   buildCounterTurnBasedMatchList++;
   if (buildCounterTurnBasedMatchList < 3) {
-    checkUnnamed137(o.items);
+    checkUnnamed118(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -3183,14 +3183,14 @@
   buildCounterTurnBasedMatchRematch--;
 }
 
-buildUnnamed138() {
+buildUnnamed119() {
   var o = new core.List<api.ParticipantResult>();
   o.add(buildParticipantResult());
   o.add(buildParticipantResult());
   return o;
 }
 
-checkUnnamed138(core.List<api.ParticipantResult> o) {
+checkUnnamed119(core.List<api.ParticipantResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkParticipantResult(o[0]);
   checkParticipantResult(o[1]);
@@ -3204,7 +3204,7 @@
     o.data = buildTurnBasedMatchDataRequest();
     o.kind = "foo";
     o.matchVersion = 42;
-    o.results = buildUnnamed138();
+    o.results = buildUnnamed119();
   }
   buildCounterTurnBasedMatchResults--;
   return o;
@@ -3216,19 +3216,19 @@
     checkTurnBasedMatchDataRequest(o.data);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.matchVersion, unittest.equals(42));
-    checkUnnamed138(o.results);
+    checkUnnamed119(o.results);
   }
   buildCounterTurnBasedMatchResults--;
 }
 
-buildUnnamed139() {
+buildUnnamed120() {
   var o = new core.List<api.TurnBasedMatch>();
   o.add(buildTurnBasedMatch());
   o.add(buildTurnBasedMatch());
   return o;
 }
 
-checkUnnamed139(core.List<api.TurnBasedMatch> o) {
+checkUnnamed120(core.List<api.TurnBasedMatch> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTurnBasedMatch(o[0]);
   checkTurnBasedMatch(o[1]);
@@ -3239,7 +3239,7 @@
   var o = new api.TurnBasedMatchSync();
   buildCounterTurnBasedMatchSync++;
   if (buildCounterTurnBasedMatchSync < 3) {
-    o.items = buildUnnamed139();
+    o.items = buildUnnamed120();
     o.kind = "foo";
     o.moreAvailable = true;
     o.nextPageToken = "foo";
@@ -3251,7 +3251,7 @@
 checkTurnBasedMatchSync(api.TurnBasedMatchSync o) {
   buildCounterTurnBasedMatchSync++;
   if (buildCounterTurnBasedMatchSync < 3) {
-    checkUnnamed139(o.items);
+    checkUnnamed120(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.moreAvailable, unittest.isTrue);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
@@ -3259,14 +3259,14 @@
   buildCounterTurnBasedMatchSync--;
 }
 
-buildUnnamed140() {
+buildUnnamed121() {
   var o = new core.List<api.ParticipantResult>();
   o.add(buildParticipantResult());
   o.add(buildParticipantResult());
   return o;
 }
 
-checkUnnamed140(core.List<api.ParticipantResult> o) {
+checkUnnamed121(core.List<api.ParticipantResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkParticipantResult(o[0]);
   checkParticipantResult(o[1]);
@@ -3281,7 +3281,7 @@
     o.kind = "foo";
     o.matchVersion = 42;
     o.pendingParticipantId = "foo";
-    o.results = buildUnnamed140();
+    o.results = buildUnnamed121();
   }
   buildCounterTurnBasedMatchTurn--;
   return o;
@@ -3294,7 +3294,7 @@
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.matchVersion, unittest.equals(42));
     unittest.expect(o.pendingParticipantId, unittest.equals('foo'));
-    checkUnnamed140(o.results);
+    checkUnnamed121(o.results);
   }
   buildCounterTurnBasedMatchTurn--;
 }
@@ -4109,6 +4109,7 @@
       var arg_language = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4150,6 +4151,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4163,7 +4165,8 @@
               consistencyToken: arg_consistencyToken,
               language: arg_language,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.AchievementDefinitionsListResponse response) {
         checkAchievementDefinitionsListResponse(response);
@@ -4179,6 +4182,7 @@
       var arg_stepsToIncrement = 42;
       var arg_consistencyToken = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4227,6 +4231,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4236,7 +4241,9 @@
       }), true);
       res
           .increment(arg_achievementId, arg_stepsToIncrement,
-              consistencyToken: arg_consistencyToken, requestId: arg_requestId)
+              consistencyToken: arg_consistencyToken,
+              requestId: arg_requestId,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.AchievementIncrementResponse response) {
         checkAchievementIncrementResponse(response);
@@ -4252,6 +4259,7 @@
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
       var arg_state = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4303,6 +4311,7 @@
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(queryMap["state"].first, unittest.equals(arg_state));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4316,7 +4325,8 @@
               language: arg_language,
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
-              state: arg_state)
+              state: arg_state,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.PlayerAchievementListResponse response) {
         checkPlayerAchievementListResponse(response);
@@ -4328,6 +4338,7 @@
       api.AchievementsResourceApi res = new api.GamesApi(mock).achievements;
       var arg_achievementId = "foo";
       var arg_consistencyToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4372,6 +4383,7 @@
         }
         unittest.expect(queryMap["consistencyToken"].first,
             unittest.equals(arg_consistencyToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4380,7 +4392,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .reveal(arg_achievementId, consistencyToken: arg_consistencyToken)
+          .reveal(arg_achievementId,
+              consistencyToken: arg_consistencyToken, $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.AchievementRevealResponse response) {
         checkAchievementRevealResponse(response);
@@ -4393,6 +4406,7 @@
       var arg_achievementId = "foo";
       var arg_steps = 42;
       var arg_consistencyToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4439,6 +4453,7 @@
             unittest.equals(arg_steps));
         unittest.expect(queryMap["consistencyToken"].first,
             unittest.equals(arg_consistencyToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4449,7 +4464,7 @@
       }), true);
       res
           .setStepsAtLeast(arg_achievementId, arg_steps,
-              consistencyToken: arg_consistencyToken)
+              consistencyToken: arg_consistencyToken, $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.AchievementSetStepsAtLeastResponse response) {
         checkAchievementSetStepsAtLeastResponse(response);
@@ -4461,6 +4476,7 @@
       api.AchievementsResourceApi res = new api.GamesApi(mock).achievements;
       var arg_achievementId = "foo";
       var arg_consistencyToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4505,6 +4521,7 @@
         }
         unittest.expect(queryMap["consistencyToken"].first,
             unittest.equals(arg_consistencyToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4513,7 +4530,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .unlock(arg_achievementId, consistencyToken: arg_consistencyToken)
+          .unlock(arg_achievementId,
+              consistencyToken: arg_consistencyToken, $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.AchievementUnlockResponse response) {
         checkAchievementUnlockResponse(response);
@@ -4525,6 +4543,7 @@
       api.AchievementsResourceApi res = new api.GamesApi(mock).achievements;
       var arg_request = buildAchievementUpdateMultipleRequest();
       var arg_consistencyToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AchievementUpdateMultipleRequest.fromJson(json);
         checkAchievementUpdateMultipleRequest(obj);
@@ -4563,6 +4582,7 @@
         }
         unittest.expect(queryMap["consistencyToken"].first,
             unittest.equals(arg_consistencyToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4572,7 +4592,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .updateMultiple(arg_request, consistencyToken: arg_consistencyToken)
+          .updateMultiple(arg_request,
+              consistencyToken: arg_consistencyToken, $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.AchievementUpdateMultipleResponse response) {
         checkAchievementUpdateMultipleResponse(response);
@@ -4588,6 +4609,7 @@
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
       var arg_platformType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4630,6 +4652,7 @@
             queryMap["language"].first, unittest.equals(arg_language));
         unittest.expect(
             queryMap["platformType"].first, unittest.equals(arg_platformType));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4641,7 +4664,8 @@
           .get(arg_applicationId,
               consistencyToken: arg_consistencyToken,
               language: arg_language,
-              platformType: arg_platformType)
+              platformType: arg_platformType,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Application response) {
         checkApplication(response);
       })));
@@ -4651,6 +4675,7 @@
       var mock = new HttpServerMock();
       api.ApplicationsResourceApi res = new api.GamesApi(mock).applications;
       var arg_consistencyToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4686,6 +4711,7 @@
         }
         unittest.expect(queryMap["consistencyToken"].first,
             unittest.equals(arg_consistencyToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4694,7 +4720,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .played(consistencyToken: arg_consistencyToken)
+          .played(consistencyToken: arg_consistencyToken, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -4703,6 +4729,7 @@
       api.ApplicationsResourceApi res = new api.GamesApi(mock).applications;
       var arg_applicationId = "foo";
       var arg_consistencyToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4747,6 +4774,7 @@
         }
         unittest.expect(queryMap["consistencyToken"].first,
             unittest.equals(arg_consistencyToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4755,7 +4783,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .verify(arg_applicationId, consistencyToken: arg_consistencyToken)
+          .verify(arg_applicationId,
+              consistencyToken: arg_consistencyToken, $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.ApplicationVerifyResponse response) {
         checkApplicationVerifyResponse(response);
@@ -4771,6 +4800,7 @@
       var arg_language = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4812,6 +4842,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4824,7 +4855,8 @@
               consistencyToken: arg_consistencyToken,
               language: arg_language,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PlayerEventListResponse response) {
         checkPlayerEventListResponse(response);
       })));
@@ -4837,6 +4869,7 @@
       var arg_language = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4878,6 +4911,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4890,7 +4924,8 @@
               consistencyToken: arg_consistencyToken,
               language: arg_language,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.EventDefinitionListResponse response) {
         checkEventDefinitionListResponse(response);
@@ -4903,6 +4938,7 @@
       var arg_request = buildEventRecordRequest();
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EventRecordRequest.fromJson(json);
         checkEventRecordRequest(obj);
@@ -4943,6 +4979,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4952,7 +4989,9 @@
       }), true);
       res
           .record(arg_request,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EventUpdateResponse response) {
         checkEventUpdateResponse(response);
       })));
@@ -4966,6 +5005,7 @@
       var arg_leaderboardId = "foo";
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5006,6 +5046,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5015,7 +5056,9 @@
       }), true);
       res
           .get(arg_leaderboardId,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Leaderboard response) {
         checkLeaderboard(response);
       })));
@@ -5028,6 +5071,7 @@
       var arg_language = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5069,6 +5113,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5081,7 +5126,8 @@
               consistencyToken: arg_consistencyToken,
               language: arg_language,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LeaderboardListResponse response) {
         checkLeaderboardListResponse(response);
       })));
@@ -5093,6 +5139,7 @@
       var mock = new HttpServerMock();
       api.MetagameResourceApi res = new api.GamesApi(mock).metagame;
       var arg_consistencyToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5128,6 +5175,7 @@
         }
         unittest.expect(queryMap["consistencyToken"].first,
             unittest.equals(arg_consistencyToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5136,7 +5184,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getMetagameConfig(consistencyToken: arg_consistencyToken)
+          .getMetagameConfig(
+              consistencyToken: arg_consistencyToken, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.MetagameConfig response) {
         checkMetagameConfig(response);
       })));
@@ -5151,6 +5200,7 @@
       var arg_language = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5204,6 +5254,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5216,7 +5267,8 @@
               consistencyToken: arg_consistencyToken,
               language: arg_language,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CategoryListResponse response) {
         checkCategoryListResponse(response);
       })));
@@ -5230,6 +5282,7 @@
       var arg_playerId = "foo";
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5270,6 +5323,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5279,7 +5333,9 @@
       }), true);
       res
           .get(arg_playerId,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Player response) {
         checkPlayer(response);
       })));
@@ -5293,6 +5349,7 @@
       var arg_language = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5337,6 +5394,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5349,7 +5407,8 @@
               consistencyToken: arg_consistencyToken,
               language: arg_language,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PlayerListResponse response) {
         checkPlayerListResponse(response);
       })));
@@ -5362,6 +5421,7 @@
       api.PushtokensResourceApi res = new api.GamesApi(mock).pushtokens;
       var arg_request = buildPushTokenId();
       var arg_consistencyToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.PushTokenId.fromJson(json);
         checkPushTokenId(obj);
@@ -5400,6 +5460,7 @@
         }
         unittest.expect(queryMap["consistencyToken"].first,
             unittest.equals(arg_consistencyToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5408,7 +5469,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .remove(arg_request, consistencyToken: arg_consistencyToken)
+          .remove(arg_request,
+              consistencyToken: arg_consistencyToken, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -5417,6 +5479,7 @@
       api.PushtokensResourceApi res = new api.GamesApi(mock).pushtokens;
       var arg_request = buildPushToken();
       var arg_consistencyToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.PushToken.fromJson(json);
         checkPushToken(obj);
@@ -5455,6 +5518,7 @@
         }
         unittest.expect(queryMap["consistencyToken"].first,
             unittest.equals(arg_consistencyToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5463,7 +5527,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, consistencyToken: arg_consistencyToken)
+          .update(arg_request,
+              consistencyToken: arg_consistencyToken, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
   });
@@ -5477,6 +5542,7 @@
       var arg_milestoneId = "foo";
       var arg_requestId = "foo";
       var arg_consistencyToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5532,6 +5598,7 @@
             queryMap["requestId"].first, unittest.equals(arg_requestId));
         unittest.expect(queryMap["consistencyToken"].first,
             unittest.equals(arg_consistencyToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5541,7 +5608,7 @@
       }), true);
       res
           .claim(arg_questId, arg_milestoneId, arg_requestId,
-              consistencyToken: arg_consistencyToken)
+              consistencyToken: arg_consistencyToken, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
   });
@@ -5553,6 +5620,7 @@
       var arg_questId = "foo";
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5599,6 +5667,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5608,7 +5677,9 @@
       }), true);
       res
           .accept(arg_questId,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Quest response) {
         checkQuest(response);
       })));
@@ -5622,6 +5693,7 @@
       var arg_language = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5672,6 +5744,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5684,7 +5757,8 @@
               consistencyToken: arg_consistencyToken,
               language: arg_language,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.QuestListResponse response) {
         checkQuestListResponse(response);
       })));
@@ -5697,6 +5771,7 @@
       api.RevisionsResourceApi res = new api.GamesApi(mock).revisions;
       var arg_clientRevision = "foo";
       var arg_consistencyToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5734,6 +5809,7 @@
             unittest.equals(arg_clientRevision));
         unittest.expect(queryMap["consistencyToken"].first,
             unittest.equals(arg_consistencyToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5742,7 +5818,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .check(arg_clientRevision, consistencyToken: arg_consistencyToken)
+          .check(arg_clientRevision,
+              consistencyToken: arg_consistencyToken, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RevisionCheckResponse response) {
         checkRevisionCheckResponse(response);
       })));
@@ -5756,6 +5833,7 @@
       var arg_request = buildRoomCreateRequest();
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RoomCreateRequest.fromJson(json);
         checkRoomCreateRequest(obj);
@@ -5796,6 +5874,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5805,7 +5884,9 @@
       }), true);
       res
           .create(arg_request,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Room response) {
         checkRoom(response);
       })));
@@ -5817,6 +5898,7 @@
       var arg_roomId = "foo";
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5863,6 +5945,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5872,7 +5955,9 @@
       }), true);
       res
           .decline(arg_roomId,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Room response) {
         checkRoom(response);
       })));
@@ -5883,6 +5968,7 @@
       api.RoomsResourceApi res = new api.GamesApi(mock).rooms;
       var arg_roomId = "foo";
       var arg_consistencyToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5927,6 +6013,7 @@
         }
         unittest.expect(queryMap["consistencyToken"].first,
             unittest.equals(arg_consistencyToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5935,7 +6022,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .dismiss(arg_roomId, consistencyToken: arg_consistencyToken)
+          .dismiss(arg_roomId,
+              consistencyToken: arg_consistencyToken, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -5945,6 +6033,7 @@
       var arg_roomId = "foo";
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5985,6 +6074,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5994,7 +6084,9 @@
       }), true);
       res
           .get(arg_roomId,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Room response) {
         checkRoom(response);
       })));
@@ -6007,6 +6099,7 @@
       var arg_roomId = "foo";
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RoomJoinRequest.fromJson(json);
         checkRoomJoinRequest(obj);
@@ -6056,6 +6149,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6065,7 +6159,9 @@
       }), true);
       res
           .join(arg_request, arg_roomId,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Room response) {
         checkRoom(response);
       })));
@@ -6078,6 +6174,7 @@
       var arg_roomId = "foo";
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RoomLeaveRequest.fromJson(json);
         checkRoomLeaveRequest(obj);
@@ -6127,6 +6224,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6136,7 +6234,9 @@
       }), true);
       res
           .leave(arg_request, arg_roomId,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Room response) {
         checkRoom(response);
       })));
@@ -6149,6 +6249,7 @@
       var arg_language = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6190,6 +6291,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6202,7 +6304,8 @@
               consistencyToken: arg_consistencyToken,
               language: arg_language,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RoomList response) {
         checkRoomList(response);
       })));
@@ -6215,6 +6318,7 @@
       var arg_roomId = "foo";
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RoomP2PStatuses.fromJson(json);
         checkRoomP2PStatuses(obj);
@@ -6264,6 +6368,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6273,7 +6378,9 @@
       }), true);
       res
           .reportStatus(arg_request, arg_roomId,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RoomStatus response) {
         checkRoomStatus(response);
       })));
@@ -6292,6 +6399,7 @@
       var arg_language = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6356,6 +6464,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6370,7 +6479,8 @@
               includeRankType: arg_includeRankType,
               language: arg_language,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.PlayerLeaderboardScoreListResponse response) {
         checkPlayerLeaderboardScoreListResponse(response);
@@ -6387,6 +6497,7 @@
       var arg_language = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6442,6 +6553,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6454,7 +6566,8 @@
               consistencyToken: arg_consistencyToken,
               language: arg_language,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LeaderboardScores response) {
         checkLeaderboardScores(response);
       })));
@@ -6472,6 +6585,7 @@
       var arg_pageToken = "foo";
       var arg_resultsAbove = 42;
       var arg_returnTopIfAbsent = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6531,6 +6645,7 @@
             unittest.equals(arg_resultsAbove));
         unittest.expect(queryMap["returnTopIfAbsent"].first,
             unittest.equals("$arg_returnTopIfAbsent"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6545,7 +6660,8 @@
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
               resultsAbove: arg_resultsAbove,
-              returnTopIfAbsent: arg_returnTopIfAbsent)
+              returnTopIfAbsent: arg_returnTopIfAbsent,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LeaderboardScores response) {
         checkLeaderboardScores(response);
       })));
@@ -6559,6 +6675,7 @@
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
       var arg_scoreTag = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6608,6 +6725,7 @@
             queryMap["language"].first, unittest.equals(arg_language));
         unittest.expect(
             queryMap["scoreTag"].first, unittest.equals(arg_scoreTag));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6619,7 +6737,8 @@
           .submit(arg_leaderboardId, arg_score,
               consistencyToken: arg_consistencyToken,
               language: arg_language,
-              scoreTag: arg_scoreTag)
+              scoreTag: arg_scoreTag,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PlayerScoreResponse response) {
         checkPlayerScoreResponse(response);
       })));
@@ -6631,6 +6750,7 @@
       var arg_request = buildPlayerScoreSubmissionList();
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.PlayerScoreSubmissionList.fromJson(json);
         checkPlayerScoreSubmissionList(obj);
@@ -6671,6 +6791,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6680,7 +6801,9 @@
       }), true);
       res
           .submitMultiple(arg_request,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PlayerScoreListResponse response) {
         checkPlayerScoreListResponse(response);
       })));
@@ -6694,6 +6817,7 @@
       var arg_snapshotId = "foo";
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6734,6 +6858,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6743,7 +6868,9 @@
       }), true);
       res
           .get(arg_snapshotId,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Snapshot response) {
         checkSnapshot(response);
       })));
@@ -6757,6 +6884,7 @@
       var arg_language = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6807,6 +6935,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6819,7 +6948,8 @@
               consistencyToken: arg_consistencyToken,
               language: arg_language,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SnapshotListResponse response) {
         checkSnapshotListResponse(response);
       })));
@@ -6833,6 +6963,7 @@
           new api.GamesApi(mock).turnBasedMatches;
       var arg_matchId = "foo";
       var arg_consistencyToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6877,6 +7008,7 @@
         }
         unittest.expect(queryMap["consistencyToken"].first,
             unittest.equals(arg_consistencyToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6885,7 +7017,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .cancel(arg_matchId, consistencyToken: arg_consistencyToken)
+          .cancel(arg_matchId,
+              consistencyToken: arg_consistencyToken, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -6896,6 +7029,7 @@
       var arg_request = buildTurnBasedMatchCreateRequest();
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TurnBasedMatchCreateRequest.fromJson(json);
         checkTurnBasedMatchCreateRequest(obj);
@@ -6936,6 +7070,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6945,7 +7080,9 @@
       }), true);
       res
           .create(arg_request,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TurnBasedMatch response) {
         checkTurnBasedMatch(response);
       })));
@@ -6958,6 +7095,7 @@
       var arg_matchId = "foo";
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7004,6 +7142,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7013,7 +7152,9 @@
       }), true);
       res
           .decline(arg_matchId,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TurnBasedMatch response) {
         checkTurnBasedMatch(response);
       })));
@@ -7025,6 +7166,7 @@
           new api.GamesApi(mock).turnBasedMatches;
       var arg_matchId = "foo";
       var arg_consistencyToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7069,6 +7211,7 @@
         }
         unittest.expect(queryMap["consistencyToken"].first,
             unittest.equals(arg_consistencyToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7077,7 +7220,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .dismiss(arg_matchId, consistencyToken: arg_consistencyToken)
+          .dismiss(arg_matchId,
+              consistencyToken: arg_consistencyToken, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -7089,6 +7233,7 @@
       var arg_matchId = "foo";
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TurnBasedMatchResults.fromJson(json);
         checkTurnBasedMatchResults(obj);
@@ -7138,6 +7283,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7147,7 +7293,9 @@
       }), true);
       res
           .finish(arg_request, arg_matchId,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TurnBasedMatch response) {
         checkTurnBasedMatch(response);
       })));
@@ -7161,6 +7309,7 @@
       var arg_consistencyToken = "foo";
       var arg_includeMatchData = true;
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7203,6 +7352,7 @@
             unittest.equals("$arg_includeMatchData"));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7214,7 +7364,8 @@
           .get(arg_matchId,
               consistencyToken: arg_consistencyToken,
               includeMatchData: arg_includeMatchData,
-              language: arg_language)
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TurnBasedMatch response) {
         checkTurnBasedMatch(response);
       })));
@@ -7227,6 +7378,7 @@
       var arg_matchId = "foo";
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7273,6 +7425,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7282,7 +7435,9 @@
       }), true);
       res
           .join(arg_matchId,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TurnBasedMatch response) {
         checkTurnBasedMatch(response);
       })));
@@ -7295,6 +7450,7 @@
       var arg_matchId = "foo";
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7341,6 +7497,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7350,7 +7507,9 @@
       }), true);
       res
           .leave(arg_matchId,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TurnBasedMatch response) {
         checkTurnBasedMatch(response);
       })));
@@ -7365,6 +7524,7 @@
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
       var arg_pendingParticipantId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7415,6 +7575,7 @@
             queryMap["language"].first, unittest.equals(arg_language));
         unittest.expect(queryMap["pendingParticipantId"].first,
             unittest.equals(arg_pendingParticipantId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7426,7 +7587,8 @@
           .leaveTurn(arg_matchId, arg_matchVersion,
               consistencyToken: arg_consistencyToken,
               language: arg_language,
-              pendingParticipantId: arg_pendingParticipantId)
+              pendingParticipantId: arg_pendingParticipantId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TurnBasedMatch response) {
         checkTurnBasedMatch(response);
       })));
@@ -7442,6 +7604,7 @@
       var arg_maxCompletedMatches = 42;
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7487,6 +7650,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7501,7 +7665,8 @@
               language: arg_language,
               maxCompletedMatches: arg_maxCompletedMatches,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TurnBasedMatchList response) {
         checkTurnBasedMatchList(response);
       })));
@@ -7515,6 +7680,7 @@
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7563,6 +7729,7 @@
             queryMap["language"].first, unittest.equals(arg_language));
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7574,7 +7741,8 @@
           .rematch(arg_matchId,
               consistencyToken: arg_consistencyToken,
               language: arg_language,
-              requestId: arg_requestId)
+              requestId: arg_requestId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TurnBasedMatchRematch response) {
         checkTurnBasedMatchRematch(response);
       })));
@@ -7590,6 +7758,7 @@
       var arg_maxCompletedMatches = 42;
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7635,6 +7804,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7649,7 +7819,8 @@
               language: arg_language,
               maxCompletedMatches: arg_maxCompletedMatches,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TurnBasedMatchSync response) {
         checkTurnBasedMatchSync(response);
       })));
@@ -7663,6 +7834,7 @@
       var arg_matchId = "foo";
       var arg_consistencyToken = "foo";
       var arg_language = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TurnBasedMatchTurn.fromJson(json);
         checkTurnBasedMatchTurn(obj);
@@ -7712,6 +7884,7 @@
             unittest.equals(arg_consistencyToken));
         unittest.expect(
             queryMap["language"].first, unittest.equals(arg_language));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7721,7 +7894,9 @@
       }), true);
       res
           .takeTurn(arg_request, arg_matchId,
-              consistencyToken: arg_consistencyToken, language: arg_language)
+              consistencyToken: arg_consistencyToken,
+              language: arg_language,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TurnBasedMatch response) {
         checkTurnBasedMatch(response);
       })));
diff --git a/generated/googleapis/test/gamesconfiguration/v1configuration_test.dart b/generated/googleapis/test/gamesconfiguration/v1configuration_test.dart
index fe195b7..d6d1cdf 100644
--- a/generated/googleapis/test/gamesconfiguration/v1configuration_test.dart
+++ b/generated/googleapis/test/gamesconfiguration/v1configuration_test.dart
@@ -112,14 +112,14 @@
   buildCounterAchievementConfigurationDetail--;
 }
 
-buildUnnamed792() {
+buildUnnamed777() {
   var o = new core.List<api.AchievementConfiguration>();
   o.add(buildAchievementConfiguration());
   o.add(buildAchievementConfiguration());
   return o;
 }
 
-checkUnnamed792(core.List<api.AchievementConfiguration> o) {
+checkUnnamed777(core.List<api.AchievementConfiguration> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAchievementConfiguration(o[0]);
   checkAchievementConfiguration(o[1]);
@@ -130,7 +130,7 @@
   var o = new api.AchievementConfigurationListResponse();
   buildCounterAchievementConfigurationListResponse++;
   if (buildCounterAchievementConfigurationListResponse < 3) {
-    o.items = buildUnnamed792();
+    o.items = buildUnnamed777();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -142,7 +142,7 @@
     api.AchievementConfigurationListResponse o) {
   buildCounterAchievementConfigurationListResponse++;
   if (buildCounterAchievementConfigurationListResponse < 3) {
-    checkUnnamed792(o.items);
+    checkUnnamed777(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -288,14 +288,14 @@
   buildCounterLeaderboardConfigurationDetail--;
 }
 
-buildUnnamed793() {
+buildUnnamed778() {
   var o = new core.List<api.LeaderboardConfiguration>();
   o.add(buildLeaderboardConfiguration());
   o.add(buildLeaderboardConfiguration());
   return o;
 }
 
-checkUnnamed793(core.List<api.LeaderboardConfiguration> o) {
+checkUnnamed778(core.List<api.LeaderboardConfiguration> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLeaderboardConfiguration(o[0]);
   checkLeaderboardConfiguration(o[1]);
@@ -306,7 +306,7 @@
   var o = new api.LeaderboardConfigurationListResponse();
   buildCounterLeaderboardConfigurationListResponse++;
   if (buildCounterLeaderboardConfigurationListResponse < 3) {
-    o.items = buildUnnamed793();
+    o.items = buildUnnamed778();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -318,7 +318,7 @@
     api.LeaderboardConfigurationListResponse o) {
   buildCounterLeaderboardConfigurationListResponse++;
   if (buildCounterLeaderboardConfigurationListResponse < 3) {
-    checkUnnamed793(o.items);
+    checkUnnamed778(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -348,14 +348,14 @@
   buildCounterLocalizedString--;
 }
 
-buildUnnamed794() {
+buildUnnamed779() {
   var o = new core.List<api.LocalizedString>();
   o.add(buildLocalizedString());
   o.add(buildLocalizedString());
   return o;
 }
 
-checkUnnamed794(core.List<api.LocalizedString> o) {
+checkUnnamed779(core.List<api.LocalizedString> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocalizedString(o[0]);
   checkLocalizedString(o[1]);
@@ -367,7 +367,7 @@
   buildCounterLocalizedStringBundle++;
   if (buildCounterLocalizedStringBundle < 3) {
     o.kind = "foo";
-    o.translations = buildUnnamed794();
+    o.translations = buildUnnamed779();
   }
   buildCounterLocalizedStringBundle--;
   return o;
@@ -377,7 +377,7 @@
   buildCounterLocalizedStringBundle++;
   if (buildCounterLocalizedStringBundle < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed794(o.translations);
+    checkUnnamed779(o.translations);
   }
   buildCounterLocalizedStringBundle--;
 }
@@ -479,6 +479,7 @@
       api.AchievementConfigurationsResourceApi res =
           new api.GamesConfigurationApi(mock).achievementConfigurations;
       var arg_achievementId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -515,6 +516,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -522,7 +524,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_achievementId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_achievementId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -530,6 +534,7 @@
       api.AchievementConfigurationsResourceApi res =
           new api.GamesConfigurationApi(mock).achievementConfigurations;
       var arg_achievementId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -566,6 +571,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -574,7 +580,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_achievementId)
+          .get(arg_achievementId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AchievementConfiguration response) {
         checkAchievementConfiguration(response);
       })));
@@ -586,6 +592,7 @@
           new api.GamesConfigurationApi(mock).achievementConfigurations;
       var arg_request = buildAchievementConfiguration();
       var arg_applicationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AchievementConfiguration.fromJson(json);
         checkAchievementConfiguration(obj);
@@ -631,6 +638,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -639,7 +647,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_applicationId)
+          .insert(arg_request, arg_applicationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AchievementConfiguration response) {
         checkAchievementConfiguration(response);
       })));
@@ -652,6 +660,7 @@
       var arg_applicationId = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -698,6 +707,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -708,7 +718,9 @@
       }), true);
       res
           .list(arg_applicationId,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(
               ((api.AchievementConfigurationListResponse response) {
         checkAchievementConfigurationListResponse(response);
@@ -721,6 +733,7 @@
           new api.GamesConfigurationApi(mock).achievementConfigurations;
       var arg_request = buildAchievementConfiguration();
       var arg_achievementId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AchievementConfiguration.fromJson(json);
         checkAchievementConfiguration(obj);
@@ -760,6 +773,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -768,7 +782,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_achievementId)
+          .patch(arg_request, arg_achievementId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AchievementConfiguration response) {
         checkAchievementConfiguration(response);
       })));
@@ -780,6 +794,7 @@
           new api.GamesConfigurationApi(mock).achievementConfigurations;
       var arg_request = buildAchievementConfiguration();
       var arg_achievementId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AchievementConfiguration.fromJson(json);
         checkAchievementConfiguration(obj);
@@ -819,6 +834,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -827,7 +843,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_achievementId)
+          .update(arg_request, arg_achievementId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AchievementConfiguration response) {
         checkAchievementConfiguration(response);
       })));
@@ -844,6 +860,7 @@
           new api.GamesConfigurationApi(mock).imageConfigurations;
       var arg_resourceId = "foo";
       var arg_imageType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -889,6 +906,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -897,7 +915,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .upload(arg_resourceId, arg_imageType)
+          .upload(arg_resourceId, arg_imageType, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ImageConfiguration response) {
         checkImageConfiguration(response);
       })));
@@ -910,6 +928,7 @@
       api.LeaderboardConfigurationsResourceApi res =
           new api.GamesConfigurationApi(mock).leaderboardConfigurations;
       var arg_leaderboardId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -946,6 +965,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -953,7 +973,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_leaderboardId).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_leaderboardId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -961,6 +983,7 @@
       api.LeaderboardConfigurationsResourceApi res =
           new api.GamesConfigurationApi(mock).leaderboardConfigurations;
       var arg_leaderboardId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -997,6 +1020,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1005,7 +1029,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_leaderboardId)
+          .get(arg_leaderboardId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LeaderboardConfiguration response) {
         checkLeaderboardConfiguration(response);
       })));
@@ -1017,6 +1041,7 @@
           new api.GamesConfigurationApi(mock).leaderboardConfigurations;
       var arg_request = buildLeaderboardConfiguration();
       var arg_applicationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LeaderboardConfiguration.fromJson(json);
         checkLeaderboardConfiguration(obj);
@@ -1062,6 +1087,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1070,7 +1096,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_applicationId)
+          .insert(arg_request, arg_applicationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LeaderboardConfiguration response) {
         checkLeaderboardConfiguration(response);
       })));
@@ -1083,6 +1109,7 @@
       var arg_applicationId = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1129,6 +1156,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1139,7 +1167,9 @@
       }), true);
       res
           .list(arg_applicationId,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(
               ((api.LeaderboardConfigurationListResponse response) {
         checkLeaderboardConfigurationListResponse(response);
@@ -1152,6 +1182,7 @@
           new api.GamesConfigurationApi(mock).leaderboardConfigurations;
       var arg_request = buildLeaderboardConfiguration();
       var arg_leaderboardId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LeaderboardConfiguration.fromJson(json);
         checkLeaderboardConfiguration(obj);
@@ -1191,6 +1222,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1199,7 +1231,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_leaderboardId)
+          .patch(arg_request, arg_leaderboardId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LeaderboardConfiguration response) {
         checkLeaderboardConfiguration(response);
       })));
@@ -1211,6 +1243,7 @@
           new api.GamesConfigurationApi(mock).leaderboardConfigurations;
       var arg_request = buildLeaderboardConfiguration();
       var arg_leaderboardId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LeaderboardConfiguration.fromJson(json);
         checkLeaderboardConfiguration(obj);
@@ -1250,6 +1283,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1258,7 +1292,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_leaderboardId)
+          .update(arg_request, arg_leaderboardId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LeaderboardConfiguration response) {
         checkLeaderboardConfiguration(response);
       })));
diff --git a/generated/googleapis/test/gamesmanagement/v1management_test.dart b/generated/googleapis/test/gamesmanagement/v1management_test.dart
index a635a37..8d1e7fc 100644
--- a/generated/googleapis/test/gamesmanagement/v1management_test.dart
+++ b/generated/googleapis/test/gamesmanagement/v1management_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed784() {
+buildUnnamed769() {
   var o = new core.List<api.AchievementResetResponse>();
   o.add(buildAchievementResetResponse());
   o.add(buildAchievementResetResponse());
   return o;
 }
 
-checkUnnamed784(core.List<api.AchievementResetResponse> o) {
+checkUnnamed769(core.List<api.AchievementResetResponse> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAchievementResetResponse(o[0]);
   checkAchievementResetResponse(o[1]);
@@ -69,7 +69,7 @@
   buildCounterAchievementResetAllResponse++;
   if (buildCounterAchievementResetAllResponse < 3) {
     o.kind = "foo";
-    o.results = buildUnnamed784();
+    o.results = buildUnnamed769();
   }
   buildCounterAchievementResetAllResponse--;
   return o;
@@ -79,19 +79,19 @@
   buildCounterAchievementResetAllResponse++;
   if (buildCounterAchievementResetAllResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed784(o.results);
+    checkUnnamed769(o.results);
   }
   buildCounterAchievementResetAllResponse--;
 }
 
-buildUnnamed785() {
+buildUnnamed770() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed785(core.List<core.String> o) {
+checkUnnamed770(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -102,7 +102,7 @@
   var o = new api.AchievementResetMultipleForAllRequest();
   buildCounterAchievementResetMultipleForAllRequest++;
   if (buildCounterAchievementResetMultipleForAllRequest < 3) {
-    o.achievementIds = buildUnnamed785();
+    o.achievementIds = buildUnnamed770();
     o.kind = "foo";
   }
   buildCounterAchievementResetMultipleForAllRequest--;
@@ -113,7 +113,7 @@
     api.AchievementResetMultipleForAllRequest o) {
   buildCounterAchievementResetMultipleForAllRequest++;
   if (buildCounterAchievementResetMultipleForAllRequest < 3) {
-    checkUnnamed785(o.achievementIds);
+    checkUnnamed770(o.achievementIds);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterAchievementResetMultipleForAllRequest--;
@@ -144,14 +144,14 @@
   buildCounterAchievementResetResponse--;
 }
 
-buildUnnamed786() {
+buildUnnamed771() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed786(core.List<core.String> o) {
+checkUnnamed771(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -162,7 +162,7 @@
   var o = new api.EventsResetMultipleForAllRequest();
   buildCounterEventsResetMultipleForAllRequest++;
   if (buildCounterEventsResetMultipleForAllRequest < 3) {
-    o.eventIds = buildUnnamed786();
+    o.eventIds = buildUnnamed771();
     o.kind = "foo";
   }
   buildCounterEventsResetMultipleForAllRequest--;
@@ -172,7 +172,7 @@
 checkEventsResetMultipleForAllRequest(api.EventsResetMultipleForAllRequest o) {
   buildCounterEventsResetMultipleForAllRequest++;
   if (buildCounterEventsResetMultipleForAllRequest < 3) {
-    checkUnnamed786(o.eventIds);
+    checkUnnamed771(o.eventIds);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterEventsResetMultipleForAllRequest--;
@@ -271,14 +271,14 @@
   buildCounterHiddenPlayer--;
 }
 
-buildUnnamed787() {
+buildUnnamed772() {
   var o = new core.List<api.HiddenPlayer>();
   o.add(buildHiddenPlayer());
   o.add(buildHiddenPlayer());
   return o;
 }
 
-checkUnnamed787(core.List<api.HiddenPlayer> o) {
+checkUnnamed772(core.List<api.HiddenPlayer> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHiddenPlayer(o[0]);
   checkHiddenPlayer(o[1]);
@@ -289,7 +289,7 @@
   var o = new api.HiddenPlayerList();
   buildCounterHiddenPlayerList++;
   if (buildCounterHiddenPlayerList < 3) {
-    o.items = buildUnnamed787();
+    o.items = buildUnnamed772();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -300,7 +300,7 @@
 checkHiddenPlayerList(api.HiddenPlayerList o) {
   buildCounterHiddenPlayerList++;
   if (buildCounterHiddenPlayerList < 3) {
-    checkUnnamed787(o.items);
+    checkUnnamed772(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -369,14 +369,14 @@
   buildCounterPlayer--;
 }
 
-buildUnnamed788() {
+buildUnnamed773() {
   var o = new core.List<api.PlayerScoreResetResponse>();
   o.add(buildPlayerScoreResetResponse());
   o.add(buildPlayerScoreResetResponse());
   return o;
 }
 
-checkUnnamed788(core.List<api.PlayerScoreResetResponse> o) {
+checkUnnamed773(core.List<api.PlayerScoreResetResponse> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPlayerScoreResetResponse(o[0]);
   checkPlayerScoreResetResponse(o[1]);
@@ -388,7 +388,7 @@
   buildCounterPlayerScoreResetAllResponse++;
   if (buildCounterPlayerScoreResetAllResponse < 3) {
     o.kind = "foo";
-    o.results = buildUnnamed788();
+    o.results = buildUnnamed773();
   }
   buildCounterPlayerScoreResetAllResponse--;
   return o;
@@ -398,19 +398,19 @@
   buildCounterPlayerScoreResetAllResponse++;
   if (buildCounterPlayerScoreResetAllResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed788(o.results);
+    checkUnnamed773(o.results);
   }
   buildCounterPlayerScoreResetAllResponse--;
 }
 
-buildUnnamed789() {
+buildUnnamed774() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed789(core.List<core.String> o) {
+checkUnnamed774(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -423,7 +423,7 @@
   if (buildCounterPlayerScoreResetResponse < 3) {
     o.definitionId = "foo";
     o.kind = "foo";
-    o.resetScoreTimeSpans = buildUnnamed789();
+    o.resetScoreTimeSpans = buildUnnamed774();
   }
   buildCounterPlayerScoreResetResponse--;
   return o;
@@ -434,7 +434,7 @@
   if (buildCounterPlayerScoreResetResponse < 3) {
     unittest.expect(o.definitionId, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed789(o.resetScoreTimeSpans);
+    checkUnnamed774(o.resetScoreTimeSpans);
   }
   buildCounterPlayerScoreResetResponse--;
 }
@@ -460,14 +460,14 @@
   buildCounterProfileSettings--;
 }
 
-buildUnnamed790() {
+buildUnnamed775() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed790(core.List<core.String> o) {
+checkUnnamed775(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -479,7 +479,7 @@
   buildCounterQuestsResetMultipleForAllRequest++;
   if (buildCounterQuestsResetMultipleForAllRequest < 3) {
     o.kind = "foo";
-    o.questIds = buildUnnamed790();
+    o.questIds = buildUnnamed775();
   }
   buildCounterQuestsResetMultipleForAllRequest--;
   return o;
@@ -489,19 +489,19 @@
   buildCounterQuestsResetMultipleForAllRequest++;
   if (buildCounterQuestsResetMultipleForAllRequest < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed790(o.questIds);
+    checkUnnamed775(o.questIds);
   }
   buildCounterQuestsResetMultipleForAllRequest--;
 }
 
-buildUnnamed791() {
+buildUnnamed776() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed791(core.List<core.String> o) {
+checkUnnamed776(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -513,7 +513,7 @@
   buildCounterScoresResetMultipleForAllRequest++;
   if (buildCounterScoresResetMultipleForAllRequest < 3) {
     o.kind = "foo";
-    o.leaderboardIds = buildUnnamed791();
+    o.leaderboardIds = buildUnnamed776();
   }
   buildCounterScoresResetMultipleForAllRequest--;
   return o;
@@ -523,7 +523,7 @@
   buildCounterScoresResetMultipleForAllRequest++;
   if (buildCounterScoresResetMultipleForAllRequest < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed791(o.leaderboardIds);
+    checkUnnamed776(o.leaderboardIds);
   }
   buildCounterScoresResetMultipleForAllRequest--;
 }
@@ -664,6 +664,7 @@
       api.AchievementsResourceApi res =
           new api.GamesManagementApi(mock).achievements;
       var arg_achievementId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -706,6 +707,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -714,7 +716,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .reset(arg_achievementId)
+          .reset(arg_achievementId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AchievementResetResponse response) {
         checkAchievementResetResponse(response);
       })));
@@ -724,6 +726,7 @@
       var mock = new HttpServerMock();
       api.AchievementsResourceApi res =
           new api.GamesManagementApi(mock).achievements;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -757,6 +760,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -764,7 +768,7 @@
         var resp = convert.JSON.encode(buildAchievementResetAllResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.resetAll().then(
+      res.resetAll($fields: arg_$fields).then(
           unittest.expectAsync1(((api.AchievementResetAllResponse response) {
         checkAchievementResetAllResponse(response);
       })));
@@ -774,6 +778,7 @@
       var mock = new HttpServerMock();
       api.AchievementsResourceApi res =
           new api.GamesManagementApi(mock).achievements;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -807,6 +812,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -814,7 +820,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.resetAllForAllPlayers().then(unittest.expectAsync1((_) {}));
+      res
+          .resetAllForAllPlayers($fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--resetForAllPlayers", () {
@@ -822,6 +830,7 @@
       api.AchievementsResourceApi res =
           new api.GamesManagementApi(mock).achievements;
       var arg_achievementId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -864,6 +873,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -872,7 +882,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .resetForAllPlayers(arg_achievementId)
+          .resetForAllPlayers(arg_achievementId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -881,6 +891,7 @@
       api.AchievementsResourceApi res =
           new api.GamesManagementApi(mock).achievements;
       var arg_request = buildAchievementResetMultipleForAllRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AchievementResetMultipleForAllRequest.fromJson(json);
         checkAchievementResetMultipleForAllRequest(obj);
@@ -917,6 +928,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -925,7 +937,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .resetMultipleForAllPlayers(arg_request)
+          .resetMultipleForAllPlayers(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
   });
@@ -938,6 +950,7 @@
       var arg_applicationId = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -984,6 +997,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -993,7 +1007,9 @@
       }), true);
       res
           .listHidden(arg_applicationId,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.HiddenPlayerList response) {
         checkHiddenPlayerList(response);
       })));
@@ -1005,6 +1021,7 @@
       var mock = new HttpServerMock();
       api.EventsResourceApi res = new api.GamesManagementApi(mock).events;
       var arg_eventId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1047,6 +1064,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1054,12 +1072,15 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.reset(arg_eventId).then(unittest.expectAsync1((_) {}));
+      res
+          .reset(arg_eventId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--resetAll", () {
       var mock = new HttpServerMock();
       api.EventsResourceApi res = new api.GamesManagementApi(mock).events;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1093,6 +1114,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1100,12 +1122,13 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.resetAll().then(unittest.expectAsync1((_) {}));
+      res.resetAll($fields: arg_$fields).then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--resetAllForAllPlayers", () {
       var mock = new HttpServerMock();
       api.EventsResourceApi res = new api.GamesManagementApi(mock).events;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1139,6 +1162,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1146,13 +1170,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.resetAllForAllPlayers().then(unittest.expectAsync1((_) {}));
+      res
+          .resetAllForAllPlayers($fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--resetForAllPlayers", () {
       var mock = new HttpServerMock();
       api.EventsResourceApi res = new api.GamesManagementApi(mock).events;
       var arg_eventId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1195,6 +1222,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1202,13 +1230,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.resetForAllPlayers(arg_eventId).then(unittest.expectAsync1((_) {}));
+      res
+          .resetForAllPlayers(arg_eventId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--resetMultipleForAllPlayers", () {
       var mock = new HttpServerMock();
       api.EventsResourceApi res = new api.GamesManagementApi(mock).events;
       var arg_request = buildEventsResetMultipleForAllRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EventsResetMultipleForAllRequest.fromJson(json);
         checkEventsResetMultipleForAllRequest(obj);
@@ -1245,6 +1276,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1253,7 +1285,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .resetMultipleForAllPlayers(arg_request)
+          .resetMultipleForAllPlayers(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
   });
@@ -1264,6 +1296,7 @@
       api.PlayersResourceApi res = new api.GamesManagementApi(mock).players;
       var arg_applicationId = "foo";
       var arg_playerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1309,6 +1342,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1317,7 +1351,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .hide(arg_applicationId, arg_playerId)
+          .hide(arg_applicationId, arg_playerId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -1326,6 +1360,7 @@
       api.PlayersResourceApi res = new api.GamesManagementApi(mock).players;
       var arg_applicationId = "foo";
       var arg_playerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1371,6 +1406,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1379,7 +1415,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .unhide(arg_applicationId, arg_playerId)
+          .unhide(arg_applicationId, arg_playerId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
   });
@@ -1389,6 +1425,7 @@
       var mock = new HttpServerMock();
       api.QuestsResourceApi res = new api.GamesManagementApi(mock).quests;
       var arg_questId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1431,6 +1468,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1438,12 +1476,15 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.reset(arg_questId).then(unittest.expectAsync1((_) {}));
+      res
+          .reset(arg_questId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--resetAll", () {
       var mock = new HttpServerMock();
       api.QuestsResourceApi res = new api.GamesManagementApi(mock).quests;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1477,6 +1518,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1484,12 +1526,13 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.resetAll().then(unittest.expectAsync1((_) {}));
+      res.resetAll($fields: arg_$fields).then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--resetAllForAllPlayers", () {
       var mock = new HttpServerMock();
       api.QuestsResourceApi res = new api.GamesManagementApi(mock).quests;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1523,6 +1566,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1530,13 +1574,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.resetAllForAllPlayers().then(unittest.expectAsync1((_) {}));
+      res
+          .resetAllForAllPlayers($fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--resetForAllPlayers", () {
       var mock = new HttpServerMock();
       api.QuestsResourceApi res = new api.GamesManagementApi(mock).quests;
       var arg_questId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1579,6 +1626,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1586,13 +1634,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.resetForAllPlayers(arg_questId).then(unittest.expectAsync1((_) {}));
+      res
+          .resetForAllPlayers(arg_questId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--resetMultipleForAllPlayers", () {
       var mock = new HttpServerMock();
       api.QuestsResourceApi res = new api.GamesManagementApi(mock).quests;
       var arg_request = buildQuestsResetMultipleForAllRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.QuestsResetMultipleForAllRequest.fromJson(json);
         checkQuestsResetMultipleForAllRequest(obj);
@@ -1629,6 +1680,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1637,7 +1689,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .resetMultipleForAllPlayers(arg_request)
+          .resetMultipleForAllPlayers(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
   });
@@ -1646,6 +1698,7 @@
     unittest.test("method--reset", () {
       var mock = new HttpServerMock();
       api.RoomsResourceApi res = new api.GamesManagementApi(mock).rooms;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1679,6 +1732,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1686,12 +1740,13 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.reset().then(unittest.expectAsync1((_) {}));
+      res.reset($fields: arg_$fields).then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--resetForAllPlayers", () {
       var mock = new HttpServerMock();
       api.RoomsResourceApi res = new api.GamesManagementApi(mock).rooms;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1725,6 +1780,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1732,7 +1788,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.resetForAllPlayers().then(unittest.expectAsync1((_) {}));
+      res
+          .resetForAllPlayers($fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
   });
 
@@ -1741,6 +1799,7 @@
       var mock = new HttpServerMock();
       api.ScoresResourceApi res = new api.GamesManagementApi(mock).scores;
       var arg_leaderboardId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1783,6 +1842,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1791,7 +1851,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .reset(arg_leaderboardId)
+          .reset(arg_leaderboardId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PlayerScoreResetResponse response) {
         checkPlayerScoreResetResponse(response);
       })));
@@ -1800,6 +1860,7 @@
     unittest.test("method--resetAll", () {
       var mock = new HttpServerMock();
       api.ScoresResourceApi res = new api.GamesManagementApi(mock).scores;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1833,6 +1894,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1840,7 +1902,7 @@
         var resp = convert.JSON.encode(buildPlayerScoreResetAllResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.resetAll().then(
+      res.resetAll($fields: arg_$fields).then(
           unittest.expectAsync1(((api.PlayerScoreResetAllResponse response) {
         checkPlayerScoreResetAllResponse(response);
       })));
@@ -1849,6 +1911,7 @@
     unittest.test("method--resetAllForAllPlayers", () {
       var mock = new HttpServerMock();
       api.ScoresResourceApi res = new api.GamesManagementApi(mock).scores;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1882,6 +1945,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1889,13 +1953,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.resetAllForAllPlayers().then(unittest.expectAsync1((_) {}));
+      res
+          .resetAllForAllPlayers($fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--resetForAllPlayers", () {
       var mock = new HttpServerMock();
       api.ScoresResourceApi res = new api.GamesManagementApi(mock).scores;
       var arg_leaderboardId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1938,6 +2005,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1946,7 +2014,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .resetForAllPlayers(arg_leaderboardId)
+          .resetForAllPlayers(arg_leaderboardId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -1954,6 +2022,7 @@
       var mock = new HttpServerMock();
       api.ScoresResourceApi res = new api.GamesManagementApi(mock).scores;
       var arg_request = buildScoresResetMultipleForAllRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ScoresResetMultipleForAllRequest.fromJson(json);
         checkScoresResetMultipleForAllRequest(obj);
@@ -1990,6 +2059,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1998,7 +2068,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .resetMultipleForAllPlayers(arg_request)
+          .resetMultipleForAllPlayers(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
   });
@@ -2008,6 +2078,7 @@
       var mock = new HttpServerMock();
       api.TurnBasedMatchesResourceApi res =
           new api.GamesManagementApi(mock).turnBasedMatches;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2041,6 +2112,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2048,13 +2120,14 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.reset().then(unittest.expectAsync1((_) {}));
+      res.reset($fields: arg_$fields).then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--resetForAllPlayers", () {
       var mock = new HttpServerMock();
       api.TurnBasedMatchesResourceApi res =
           new api.GamesManagementApi(mock).turnBasedMatches;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2088,6 +2161,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2095,7 +2169,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.resetForAllPlayers().then(unittest.expectAsync1((_) {}));
+      res
+          .resetForAllPlayers($fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
   });
 }
diff --git a/generated/googleapis/test/genomics/v1_test.dart b/generated/googleapis/test/genomics/v1_test.dart
index 1683c13..bed3f94 100644
--- a/generated/googleapis/test/genomics/v1_test.dart
+++ b/generated/googleapis/test/genomics/v1_test.dart
@@ -50,7 +50,7 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed2662() {
+buildUnnamed2677() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -65,7 +65,7 @@
   return o;
 }
 
-checkUnnamed2662(core.List<core.Object> o) {
+checkUnnamed2677(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o[0]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -79,17 +79,17 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2663() {
+buildUnnamed2678() {
   var o = new core.Map<core.String, core.List<core.Object>>();
-  o["x"] = buildUnnamed2662();
-  o["y"] = buildUnnamed2662();
+  o["x"] = buildUnnamed2677();
+  o["y"] = buildUnnamed2677();
   return o;
 }
 
-checkUnnamed2663(core.Map<core.String, core.List<core.Object>> o) {
+checkUnnamed2678(core.Map<core.String, core.List<core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2662(o["x"]);
-  checkUnnamed2662(o["y"]);
+  checkUnnamed2677(o["x"]);
+  checkUnnamed2677(o["y"]);
 }
 
 core.int buildCounterAnnotation = 0;
@@ -100,7 +100,7 @@
     o.annotationSetId = "foo";
     o.end = "foo";
     o.id = "foo";
-    o.info = buildUnnamed2663();
+    o.info = buildUnnamed2678();
     o.name = "foo";
     o.referenceId = "foo";
     o.referenceName = "foo";
@@ -120,7 +120,7 @@
     unittest.expect(o.annotationSetId, unittest.equals('foo'));
     unittest.expect(o.end, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2663(o.info);
+    checkUnnamed2678(o.info);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.referenceId, unittest.equals('foo'));
     unittest.expect(o.referenceName, unittest.equals('foo'));
@@ -133,7 +133,7 @@
   buildCounterAnnotation--;
 }
 
-buildUnnamed2664() {
+buildUnnamed2679() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -148,7 +148,7 @@
   return o;
 }
 
-checkUnnamed2664(core.List<core.Object> o) {
+checkUnnamed2679(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o[0]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -162,17 +162,17 @@
   unittest.expect(casted4["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2665() {
+buildUnnamed2680() {
   var o = new core.Map<core.String, core.List<core.Object>>();
-  o["x"] = buildUnnamed2664();
-  o["y"] = buildUnnamed2664();
+  o["x"] = buildUnnamed2679();
+  o["y"] = buildUnnamed2679();
   return o;
 }
 
-checkUnnamed2665(core.Map<core.String, core.List<core.Object>> o) {
+checkUnnamed2680(core.Map<core.String, core.List<core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2664(o["x"]);
-  checkUnnamed2664(o["y"]);
+  checkUnnamed2679(o["x"]);
+  checkUnnamed2679(o["y"]);
 }
 
 core.int buildCounterAnnotationSet = 0;
@@ -182,7 +182,7 @@
   if (buildCounterAnnotationSet < 3) {
     o.datasetId = "foo";
     o.id = "foo";
-    o.info = buildUnnamed2665();
+    o.info = buildUnnamed2680();
     o.name = "foo";
     o.referenceSetId = "foo";
     o.sourceUri = "foo";
@@ -197,7 +197,7 @@
   if (buildCounterAnnotationSet < 3) {
     unittest.expect(o.datasetId, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2665(o.info);
+    checkUnnamed2680(o.info);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.referenceSetId, unittest.equals('foo'));
     unittest.expect(o.sourceUri, unittest.equals('foo'));
@@ -206,14 +206,14 @@
   buildCounterAnnotationSet--;
 }
 
-buildUnnamed2666() {
+buildUnnamed2681() {
   var o = new core.List<api.Annotation>();
   o.add(buildAnnotation());
   o.add(buildAnnotation());
   return o;
 }
 
-checkUnnamed2666(core.List<api.Annotation> o) {
+checkUnnamed2681(core.List<api.Annotation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAnnotation(o[0]);
   checkAnnotation(o[1]);
@@ -224,7 +224,7 @@
   var o = new api.BatchCreateAnnotationsRequest();
   buildCounterBatchCreateAnnotationsRequest++;
   if (buildCounterBatchCreateAnnotationsRequest < 3) {
-    o.annotations = buildUnnamed2666();
+    o.annotations = buildUnnamed2681();
     o.requestId = "foo";
   }
   buildCounterBatchCreateAnnotationsRequest--;
@@ -234,20 +234,20 @@
 checkBatchCreateAnnotationsRequest(api.BatchCreateAnnotationsRequest o) {
   buildCounterBatchCreateAnnotationsRequest++;
   if (buildCounterBatchCreateAnnotationsRequest < 3) {
-    checkUnnamed2666(o.annotations);
+    checkUnnamed2681(o.annotations);
     unittest.expect(o.requestId, unittest.equals('foo'));
   }
   buildCounterBatchCreateAnnotationsRequest--;
 }
 
-buildUnnamed2667() {
+buildUnnamed2682() {
   var o = new core.List<api.Entry>();
   o.add(buildEntry());
   o.add(buildEntry());
   return o;
 }
 
-checkUnnamed2667(core.List<api.Entry> o) {
+checkUnnamed2682(core.List<api.Entry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntry(o[0]);
   checkEntry(o[1]);
@@ -258,7 +258,7 @@
   var o = new api.BatchCreateAnnotationsResponse();
   buildCounterBatchCreateAnnotationsResponse++;
   if (buildCounterBatchCreateAnnotationsResponse < 3) {
-    o.entries = buildUnnamed2667();
+    o.entries = buildUnnamed2682();
   }
   buildCounterBatchCreateAnnotationsResponse--;
   return o;
@@ -267,19 +267,19 @@
 checkBatchCreateAnnotationsResponse(api.BatchCreateAnnotationsResponse o) {
   buildCounterBatchCreateAnnotationsResponse++;
   if (buildCounterBatchCreateAnnotationsResponse < 3) {
-    checkUnnamed2667(o.entries);
+    checkUnnamed2682(o.entries);
   }
   buildCounterBatchCreateAnnotationsResponse--;
 }
 
-buildUnnamed2668() {
+buildUnnamed2683() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2668(core.List<core.String> o) {
+checkUnnamed2683(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -290,7 +290,7 @@
   var o = new api.Binding();
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    o.members = buildUnnamed2668();
+    o.members = buildUnnamed2683();
     o.role = "foo";
   }
   buildCounterBinding--;
@@ -300,13 +300,13 @@
 checkBinding(api.Binding o) {
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    checkUnnamed2668(o.members);
+    checkUnnamed2683(o.members);
     unittest.expect(o.role, unittest.equals('foo'));
   }
   buildCounterBinding--;
 }
 
-buildUnnamed2669() {
+buildUnnamed2684() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -321,7 +321,7 @@
   return o;
 }
 
-checkUnnamed2669(core.List<core.Object> o) {
+checkUnnamed2684(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o[0]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -335,27 +335,27 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2670() {
+buildUnnamed2685() {
   var o = new core.Map<core.String, core.List<core.Object>>();
-  o["x"] = buildUnnamed2669();
-  o["y"] = buildUnnamed2669();
+  o["x"] = buildUnnamed2684();
+  o["y"] = buildUnnamed2684();
   return o;
 }
 
-checkUnnamed2670(core.Map<core.String, core.List<core.Object>> o) {
+checkUnnamed2685(core.Map<core.String, core.List<core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2669(o["x"]);
-  checkUnnamed2669(o["y"]);
+  checkUnnamed2684(o["x"]);
+  checkUnnamed2684(o["y"]);
 }
 
-buildUnnamed2671() {
+buildUnnamed2686() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2671(core.List<core.String> o) {
+checkUnnamed2686(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -368,10 +368,10 @@
   if (buildCounterCallSet < 3) {
     o.created = "foo";
     o.id = "foo";
-    o.info = buildUnnamed2670();
+    o.info = buildUnnamed2685();
     o.name = "foo";
     o.sampleId = "foo";
-    o.variantSetIds = buildUnnamed2671();
+    o.variantSetIds = buildUnnamed2686();
   }
   buildCounterCallSet--;
   return o;
@@ -382,10 +382,10 @@
   if (buildCounterCallSet < 3) {
     unittest.expect(o.created, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2670(o.info);
+    checkUnnamed2685(o.info);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.sampleId, unittest.equals('foo'));
-    checkUnnamed2671(o.variantSetIds);
+    checkUnnamed2686(o.variantSetIds);
   }
   buildCounterCallSet--;
 }
@@ -428,27 +428,27 @@
   buildCounterCigarUnit--;
 }
 
-buildUnnamed2672() {
+buildUnnamed2687() {
   var o = new core.List<api.ExternalId>();
   o.add(buildExternalId());
   o.add(buildExternalId());
   return o;
 }
 
-checkUnnamed2672(core.List<api.ExternalId> o) {
+checkUnnamed2687(core.List<api.ExternalId> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkExternalId(o[0]);
   checkExternalId(o[1]);
 }
 
-buildUnnamed2673() {
+buildUnnamed2688() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2673(core.List<core.String> o) {
+checkUnnamed2688(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -460,8 +460,8 @@
   buildCounterClinicalCondition++;
   if (buildCounterClinicalCondition < 3) {
     o.conceptId = "foo";
-    o.externalIds = buildUnnamed2672();
-    o.names = buildUnnamed2673();
+    o.externalIds = buildUnnamed2687();
+    o.names = buildUnnamed2688();
     o.omimId = "foo";
   }
   buildCounterClinicalCondition--;
@@ -472,8 +472,8 @@
   buildCounterClinicalCondition++;
   if (buildCounterClinicalCondition < 3) {
     unittest.expect(o.conceptId, unittest.equals('foo'));
-    checkUnnamed2672(o.externalIds);
-    checkUnnamed2673(o.names);
+    checkUnnamed2687(o.externalIds);
+    checkUnnamed2688(o.names);
     unittest.expect(o.omimId, unittest.equals('foo'));
   }
   buildCounterClinicalCondition--;
@@ -500,14 +500,14 @@
   buildCounterCodingSequence--;
 }
 
-buildUnnamed2674() {
+buildUnnamed2689() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2674(core.List<core.String> o) {
+checkUnnamed2689(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -518,7 +518,7 @@
   var o = new api.ComputeEngine();
   buildCounterComputeEngine++;
   if (buildCounterComputeEngine < 3) {
-    o.diskNames = buildUnnamed2674();
+    o.diskNames = buildUnnamed2689();
     o.instanceName = "foo";
     o.machineType = "foo";
     o.zone = "foo";
@@ -530,7 +530,7 @@
 checkComputeEngine(api.ComputeEngine o) {
   buildCounterComputeEngine++;
   if (buildCounterComputeEngine < 3) {
-    checkUnnamed2674(o.diskNames);
+    checkUnnamed2689(o.diskNames);
     unittest.expect(o.instanceName, unittest.equals('foo'));
     unittest.expect(o.machineType, unittest.equals('foo'));
     unittest.expect(o.zone, unittest.equals('foo'));
@@ -668,14 +668,14 @@
   buildCounterExperiment--;
 }
 
-buildUnnamed2675() {
+buildUnnamed2690() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2675(core.List<core.String> o) {
+checkUnnamed2690(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -688,7 +688,7 @@
   if (buildCounterExportReadGroupSetRequest < 3) {
     o.exportUri = "foo";
     o.projectId = "foo";
-    o.referenceNames = buildUnnamed2675();
+    o.referenceNames = buildUnnamed2690();
   }
   buildCounterExportReadGroupSetRequest--;
   return o;
@@ -699,19 +699,19 @@
   if (buildCounterExportReadGroupSetRequest < 3) {
     unittest.expect(o.exportUri, unittest.equals('foo'));
     unittest.expect(o.projectId, unittest.equals('foo'));
-    checkUnnamed2675(o.referenceNames);
+    checkUnnamed2690(o.referenceNames);
   }
   buildCounterExportReadGroupSetRequest--;
 }
 
-buildUnnamed2676() {
+buildUnnamed2691() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2676(core.List<core.String> o) {
+checkUnnamed2691(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -724,7 +724,7 @@
   if (buildCounterExportVariantSetRequest < 3) {
     o.bigqueryDataset = "foo";
     o.bigqueryTable = "foo";
-    o.callSetIds = buildUnnamed2676();
+    o.callSetIds = buildUnnamed2691();
     o.format = "foo";
     o.projectId = "foo";
   }
@@ -737,7 +737,7 @@
   if (buildCounterExportVariantSetRequest < 3) {
     unittest.expect(o.bigqueryDataset, unittest.equals('foo'));
     unittest.expect(o.bigqueryTable, unittest.equals('foo'));
-    checkUnnamed2676(o.callSetIds);
+    checkUnnamed2691(o.callSetIds);
     unittest.expect(o.format, unittest.equals('foo'));
     unittest.expect(o.projectId, unittest.equals('foo'));
   }
@@ -780,14 +780,14 @@
   buildCounterGetIamPolicyRequest--;
 }
 
-buildUnnamed2677() {
+buildUnnamed2692() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2677(core.List<core.String> o) {
+checkUnnamed2692(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -801,7 +801,7 @@
     o.datasetId = "foo";
     o.partitionStrategy = "foo";
     o.referenceSetId = "foo";
-    o.sourceUris = buildUnnamed2677();
+    o.sourceUris = buildUnnamed2692();
   }
   buildCounterImportReadGroupSetsRequest--;
   return o;
@@ -813,19 +813,19 @@
     unittest.expect(o.datasetId, unittest.equals('foo'));
     unittest.expect(o.partitionStrategy, unittest.equals('foo'));
     unittest.expect(o.referenceSetId, unittest.equals('foo'));
-    checkUnnamed2677(o.sourceUris);
+    checkUnnamed2692(o.sourceUris);
   }
   buildCounterImportReadGroupSetsRequest--;
 }
 
-buildUnnamed2678() {
+buildUnnamed2693() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2678(core.List<core.String> o) {
+checkUnnamed2693(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -836,7 +836,7 @@
   var o = new api.ImportReadGroupSetsResponse();
   buildCounterImportReadGroupSetsResponse++;
   if (buildCounterImportReadGroupSetsResponse < 3) {
-    o.readGroupSetIds = buildUnnamed2678();
+    o.readGroupSetIds = buildUnnamed2693();
   }
   buildCounterImportReadGroupSetsResponse--;
   return o;
@@ -845,32 +845,32 @@
 checkImportReadGroupSetsResponse(api.ImportReadGroupSetsResponse o) {
   buildCounterImportReadGroupSetsResponse++;
   if (buildCounterImportReadGroupSetsResponse < 3) {
-    checkUnnamed2678(o.readGroupSetIds);
+    checkUnnamed2693(o.readGroupSetIds);
   }
   buildCounterImportReadGroupSetsResponse--;
 }
 
-buildUnnamed2679() {
+buildUnnamed2694() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed2679(core.Map<core.String, core.String> o) {
+checkUnnamed2694(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed2680() {
+buildUnnamed2695() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2680(core.List<core.String> o) {
+checkUnnamed2695(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -882,9 +882,9 @@
   buildCounterImportVariantsRequest++;
   if (buildCounterImportVariantsRequest < 3) {
     o.format = "foo";
-    o.infoMergeConfig = buildUnnamed2679();
+    o.infoMergeConfig = buildUnnamed2694();
     o.normalizeReferenceNames = true;
-    o.sourceUris = buildUnnamed2680();
+    o.sourceUris = buildUnnamed2695();
     o.variantSetId = "foo";
   }
   buildCounterImportVariantsRequest--;
@@ -895,22 +895,22 @@
   buildCounterImportVariantsRequest++;
   if (buildCounterImportVariantsRequest < 3) {
     unittest.expect(o.format, unittest.equals('foo'));
-    checkUnnamed2679(o.infoMergeConfig);
+    checkUnnamed2694(o.infoMergeConfig);
     unittest.expect(o.normalizeReferenceNames, unittest.isTrue);
-    checkUnnamed2680(o.sourceUris);
+    checkUnnamed2695(o.sourceUris);
     unittest.expect(o.variantSetId, unittest.equals('foo'));
   }
   buildCounterImportVariantsRequest--;
 }
 
-buildUnnamed2681() {
+buildUnnamed2696() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2681(core.List<core.String> o) {
+checkUnnamed2696(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -921,7 +921,7 @@
   var o = new api.ImportVariantsResponse();
   buildCounterImportVariantsResponse++;
   if (buildCounterImportVariantsResponse < 3) {
-    o.callSetIds = buildUnnamed2681();
+    o.callSetIds = buildUnnamed2696();
   }
   buildCounterImportVariantsResponse--;
   return o;
@@ -930,19 +930,19 @@
 checkImportVariantsResponse(api.ImportVariantsResponse o) {
   buildCounterImportVariantsResponse++;
   if (buildCounterImportVariantsResponse < 3) {
-    checkUnnamed2681(o.callSetIds);
+    checkUnnamed2696(o.callSetIds);
   }
   buildCounterImportVariantsResponse--;
 }
 
-buildUnnamed2682() {
+buildUnnamed2697() {
   var o = new core.List<api.CigarUnit>();
   o.add(buildCigarUnit());
   o.add(buildCigarUnit());
   return o;
 }
 
-checkUnnamed2682(core.List<api.CigarUnit> o) {
+checkUnnamed2697(core.List<api.CigarUnit> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCigarUnit(o[0]);
   checkCigarUnit(o[1]);
@@ -953,7 +953,7 @@
   var o = new api.LinearAlignment();
   buildCounterLinearAlignment++;
   if (buildCounterLinearAlignment < 3) {
-    o.cigar = buildUnnamed2682();
+    o.cigar = buildUnnamed2697();
     o.mappingQuality = 42;
     o.position = buildPosition();
   }
@@ -964,7 +964,7 @@
 checkLinearAlignment(api.LinearAlignment o) {
   buildCounterLinearAlignment++;
   if (buildCounterLinearAlignment < 3) {
-    checkUnnamed2682(o.cigar);
+    checkUnnamed2697(o.cigar);
     unittest.expect(o.mappingQuality, unittest.equals(42));
     checkPosition(o.position);
   }
@@ -994,14 +994,14 @@
   buildCounterListBasesResponse--;
 }
 
-buildUnnamed2683() {
+buildUnnamed2698() {
   var o = new core.List<api.CoverageBucket>();
   o.add(buildCoverageBucket());
   o.add(buildCoverageBucket());
   return o;
 }
 
-checkUnnamed2683(core.List<api.CoverageBucket> o) {
+checkUnnamed2698(core.List<api.CoverageBucket> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCoverageBucket(o[0]);
   checkCoverageBucket(o[1]);
@@ -1013,7 +1013,7 @@
   buildCounterListCoverageBucketsResponse++;
   if (buildCounterListCoverageBucketsResponse < 3) {
     o.bucketWidth = "foo";
-    o.coverageBuckets = buildUnnamed2683();
+    o.coverageBuckets = buildUnnamed2698();
     o.nextPageToken = "foo";
   }
   buildCounterListCoverageBucketsResponse--;
@@ -1024,20 +1024,20 @@
   buildCounterListCoverageBucketsResponse++;
   if (buildCounterListCoverageBucketsResponse < 3) {
     unittest.expect(o.bucketWidth, unittest.equals('foo'));
-    checkUnnamed2683(o.coverageBuckets);
+    checkUnnamed2698(o.coverageBuckets);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListCoverageBucketsResponse--;
 }
 
-buildUnnamed2684() {
+buildUnnamed2699() {
   var o = new core.List<api.Dataset>();
   o.add(buildDataset());
   o.add(buildDataset());
   return o;
 }
 
-checkUnnamed2684(core.List<api.Dataset> o) {
+checkUnnamed2699(core.List<api.Dataset> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDataset(o[0]);
   checkDataset(o[1]);
@@ -1048,7 +1048,7 @@
   var o = new api.ListDatasetsResponse();
   buildCounterListDatasetsResponse++;
   if (buildCounterListDatasetsResponse < 3) {
-    o.datasets = buildUnnamed2684();
+    o.datasets = buildUnnamed2699();
     o.nextPageToken = "foo";
   }
   buildCounterListDatasetsResponse--;
@@ -1058,20 +1058,20 @@
 checkListDatasetsResponse(api.ListDatasetsResponse o) {
   buildCounterListDatasetsResponse++;
   if (buildCounterListDatasetsResponse < 3) {
-    checkUnnamed2684(o.datasets);
+    checkUnnamed2699(o.datasets);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListDatasetsResponse--;
 }
 
-buildUnnamed2685() {
+buildUnnamed2700() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed2685(core.List<api.Operation> o) {
+checkUnnamed2700(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -1083,7 +1083,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed2685();
+    o.operations = buildUnnamed2700();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -1093,32 +1093,32 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2685(o.operations);
+    checkUnnamed2700(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
 
-buildUnnamed2686() {
+buildUnnamed2701() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed2686(core.Map<core.String, core.String> o) {
+checkUnnamed2701(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed2687() {
+buildUnnamed2702() {
   var o = new core.List<api.Variant>();
   o.add(buildVariant());
   o.add(buildVariant());
   return o;
 }
 
-checkUnnamed2687(core.List<api.Variant> o) {
+checkUnnamed2702(core.List<api.Variant> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVariant(o[0]);
   checkVariant(o[1]);
@@ -1129,9 +1129,9 @@
   var o = new api.MergeVariantsRequest();
   buildCounterMergeVariantsRequest++;
   if (buildCounterMergeVariantsRequest < 3) {
-    o.infoMergeConfig = buildUnnamed2686();
+    o.infoMergeConfig = buildUnnamed2701();
     o.variantSetId = "foo";
-    o.variants = buildUnnamed2687();
+    o.variants = buildUnnamed2702();
   }
   buildCounterMergeVariantsRequest--;
   return o;
@@ -1140,14 +1140,14 @@
 checkMergeVariantsRequest(api.MergeVariantsRequest o) {
   buildCounterMergeVariantsRequest++;
   if (buildCounterMergeVariantsRequest < 3) {
-    checkUnnamed2686(o.infoMergeConfig);
+    checkUnnamed2701(o.infoMergeConfig);
     unittest.expect(o.variantSetId, unittest.equals('foo'));
-    checkUnnamed2687(o.variants);
+    checkUnnamed2702(o.variants);
   }
   buildCounterMergeVariantsRequest--;
 }
 
-buildUnnamed2688() {
+buildUnnamed2703() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1162,7 +1162,7 @@
   return o;
 }
 
-checkUnnamed2688(core.Map<core.String, core.Object> o) {
+checkUnnamed2703(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted7 = (o["x"]) as core.Map;
   unittest.expect(casted7, unittest.hasLength(3));
@@ -1176,7 +1176,7 @@
   unittest.expect(casted8["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2689() {
+buildUnnamed2704() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1191,7 +1191,7 @@
   return o;
 }
 
-checkUnnamed2689(core.Map<core.String, core.Object> o) {
+checkUnnamed2704(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted9 = (o["x"]) as core.Map;
   unittest.expect(casted9, unittest.hasLength(3));
@@ -1212,9 +1212,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed2688();
+    o.metadata = buildUnnamed2703();
     o.name = "foo";
-    o.response = buildUnnamed2689();
+    o.response = buildUnnamed2704();
   }
   buildCounterOperation--;
   return o;
@@ -1225,9 +1225,9 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed2688(o.metadata);
+    checkUnnamed2703(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2689(o.response);
+    checkUnnamed2704(o.response);
   }
   buildCounterOperation--;
 }
@@ -1255,33 +1255,33 @@
   buildCounterOperationEvent--;
 }
 
-buildUnnamed2690() {
+buildUnnamed2705() {
   var o = new core.List<api.OperationEvent>();
   o.add(buildOperationEvent());
   o.add(buildOperationEvent());
   return o;
 }
 
-checkUnnamed2690(core.List<api.OperationEvent> o) {
+checkUnnamed2705(core.List<api.OperationEvent> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationEvent(o[0]);
   checkOperationEvent(o[1]);
 }
 
-buildUnnamed2691() {
+buildUnnamed2706() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed2691(core.Map<core.String, core.String> o) {
+checkUnnamed2706(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed2692() {
+buildUnnamed2707() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1296,7 +1296,7 @@
   return o;
 }
 
-checkUnnamed2692(core.Map<core.String, core.Object> o) {
+checkUnnamed2707(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted11 = (o["x"]) as core.Map;
   unittest.expect(casted11, unittest.hasLength(3));
@@ -1310,7 +1310,7 @@
   unittest.expect(casted12["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2693() {
+buildUnnamed2708() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1325,7 +1325,7 @@
   return o;
 }
 
-checkUnnamed2693(core.Map<core.String, core.Object> o) {
+checkUnnamed2708(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted13 = (o["x"]) as core.Map;
   unittest.expect(casted13, unittest.hasLength(3));
@@ -1347,11 +1347,11 @@
     o.clientId = "foo";
     o.createTime = "foo";
     o.endTime = "foo";
-    o.events = buildUnnamed2690();
-    o.labels = buildUnnamed2691();
+    o.events = buildUnnamed2705();
+    o.labels = buildUnnamed2706();
     o.projectId = "foo";
-    o.request = buildUnnamed2692();
-    o.runtimeMetadata = buildUnnamed2693();
+    o.request = buildUnnamed2707();
+    o.runtimeMetadata = buildUnnamed2708();
     o.startTime = "foo";
   }
   buildCounterOperationMetadata--;
@@ -1364,24 +1364,24 @@
     unittest.expect(o.clientId, unittest.equals('foo'));
     unittest.expect(o.createTime, unittest.equals('foo'));
     unittest.expect(o.endTime, unittest.equals('foo'));
-    checkUnnamed2690(o.events);
-    checkUnnamed2691(o.labels);
+    checkUnnamed2705(o.events);
+    checkUnnamed2706(o.labels);
     unittest.expect(o.projectId, unittest.equals('foo'));
-    checkUnnamed2692(o.request);
-    checkUnnamed2693(o.runtimeMetadata);
+    checkUnnamed2707(o.request);
+    checkUnnamed2708(o.runtimeMetadata);
     unittest.expect(o.startTime, unittest.equals('foo'));
   }
   buildCounterOperationMetadata--;
 }
 
-buildUnnamed2694() {
+buildUnnamed2709() {
   var o = new core.List<api.Binding>();
   o.add(buildBinding());
   o.add(buildBinding());
   return o;
 }
 
-checkUnnamed2694(core.List<api.Binding> o) {
+checkUnnamed2709(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -1392,7 +1392,7 @@
   var o = new api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.bindings = buildUnnamed2694();
+    o.bindings = buildUnnamed2709();
     o.etag = "foo";
     o.version = 42;
   }
@@ -1403,7 +1403,7 @@
 checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed2694(o.bindings);
+    checkUnnamed2709(o.bindings);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.version, unittest.equals(42));
   }
@@ -1483,20 +1483,20 @@
   buildCounterRange--;
 }
 
-buildUnnamed2695() {
+buildUnnamed2710() {
   var o = new core.List<core.int>();
   o.add(42);
   o.add(42);
   return o;
 }
 
-checkUnnamed2695(core.List<core.int> o) {
+checkUnnamed2710(core.List<core.int> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42));
   unittest.expect(o[1], unittest.equals(42));
 }
 
-buildUnnamed2696() {
+buildUnnamed2711() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -1511,7 +1511,7 @@
   return o;
 }
 
-checkUnnamed2696(core.List<core.Object> o) {
+checkUnnamed2711(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted15 = (o[0]) as core.Map;
   unittest.expect(casted15, unittest.hasLength(3));
@@ -1525,17 +1525,17 @@
   unittest.expect(casted16["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2697() {
+buildUnnamed2712() {
   var o = new core.Map<core.String, core.List<core.Object>>();
-  o["x"] = buildUnnamed2696();
-  o["y"] = buildUnnamed2696();
+  o["x"] = buildUnnamed2711();
+  o["y"] = buildUnnamed2711();
   return o;
 }
 
-checkUnnamed2697(core.Map<core.String, core.List<core.Object>> o) {
+checkUnnamed2712(core.Map<core.String, core.List<core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2696(o["x"]);
-  checkUnnamed2696(o["y"]);
+  checkUnnamed2711(o["x"]);
+  checkUnnamed2711(o["y"]);
 }
 
 core.int buildCounterRead = 0;
@@ -1543,7 +1543,7 @@
   var o = new api.Read();
   buildCounterRead++;
   if (buildCounterRead < 3) {
-    o.alignedQuality = buildUnnamed2695();
+    o.alignedQuality = buildUnnamed2710();
     o.alignedSequence = "foo";
     o.alignment = buildLinearAlignment();
     o.duplicateFragment = true;
@@ -1551,7 +1551,7 @@
     o.fragmentLength = 42;
     o.fragmentName = "foo";
     o.id = "foo";
-    o.info = buildUnnamed2697();
+    o.info = buildUnnamed2712();
     o.nextMatePosition = buildPosition();
     o.numberReads = 42;
     o.properPlacement = true;
@@ -1568,7 +1568,7 @@
 checkRead(api.Read o) {
   buildCounterRead++;
   if (buildCounterRead < 3) {
-    checkUnnamed2695(o.alignedQuality);
+    checkUnnamed2710(o.alignedQuality);
     unittest.expect(o.alignedSequence, unittest.equals('foo'));
     checkLinearAlignment(o.alignment);
     unittest.expect(o.duplicateFragment, unittest.isTrue);
@@ -1576,7 +1576,7 @@
     unittest.expect(o.fragmentLength, unittest.equals(42));
     unittest.expect(o.fragmentName, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2697(o.info);
+    checkUnnamed2712(o.info);
     checkPosition(o.nextMatePosition);
     unittest.expect(o.numberReads, unittest.equals(42));
     unittest.expect(o.properPlacement, unittest.isTrue);
@@ -1589,7 +1589,7 @@
   buildCounterRead--;
 }
 
-buildUnnamed2698() {
+buildUnnamed2713() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -1604,7 +1604,7 @@
   return o;
 }
 
-checkUnnamed2698(core.List<core.Object> o) {
+checkUnnamed2713(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted17 = (o[0]) as core.Map;
   unittest.expect(casted17, unittest.hasLength(3));
@@ -1618,27 +1618,27 @@
   unittest.expect(casted18["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2699() {
+buildUnnamed2714() {
   var o = new core.Map<core.String, core.List<core.Object>>();
-  o["x"] = buildUnnamed2698();
-  o["y"] = buildUnnamed2698();
+  o["x"] = buildUnnamed2713();
+  o["y"] = buildUnnamed2713();
   return o;
 }
 
-checkUnnamed2699(core.Map<core.String, core.List<core.Object>> o) {
+checkUnnamed2714(core.Map<core.String, core.List<core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2698(o["x"]);
-  checkUnnamed2698(o["y"]);
+  checkUnnamed2713(o["x"]);
+  checkUnnamed2713(o["y"]);
 }
 
-buildUnnamed2700() {
+buildUnnamed2715() {
   var o = new core.List<api.Program>();
   o.add(buildProgram());
   o.add(buildProgram());
   return o;
 }
 
-checkUnnamed2700(core.List<api.Program> o) {
+checkUnnamed2715(core.List<api.Program> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProgram(o[0]);
   checkProgram(o[1]);
@@ -1653,10 +1653,10 @@
     o.description = "foo";
     o.experiment = buildExperiment();
     o.id = "foo";
-    o.info = buildUnnamed2699();
+    o.info = buildUnnamed2714();
     o.name = "foo";
     o.predictedInsertSize = 42;
-    o.programs = buildUnnamed2700();
+    o.programs = buildUnnamed2715();
     o.referenceSetId = "foo";
     o.sampleId = "foo";
   }
@@ -1671,17 +1671,17 @@
     unittest.expect(o.description, unittest.equals('foo'));
     checkExperiment(o.experiment);
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2699(o.info);
+    checkUnnamed2714(o.info);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.predictedInsertSize, unittest.equals(42));
-    checkUnnamed2700(o.programs);
+    checkUnnamed2715(o.programs);
     unittest.expect(o.referenceSetId, unittest.equals('foo'));
     unittest.expect(o.sampleId, unittest.equals('foo'));
   }
   buildCounterReadGroup--;
 }
 
-buildUnnamed2701() {
+buildUnnamed2716() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -1696,7 +1696,7 @@
   return o;
 }
 
-checkUnnamed2701(core.List<core.Object> o) {
+checkUnnamed2716(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted19 = (o[0]) as core.Map;
   unittest.expect(casted19, unittest.hasLength(3));
@@ -1710,27 +1710,27 @@
   unittest.expect(casted20["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2702() {
+buildUnnamed2717() {
   var o = new core.Map<core.String, core.List<core.Object>>();
-  o["x"] = buildUnnamed2701();
-  o["y"] = buildUnnamed2701();
+  o["x"] = buildUnnamed2716();
+  o["y"] = buildUnnamed2716();
   return o;
 }
 
-checkUnnamed2702(core.Map<core.String, core.List<core.Object>> o) {
+checkUnnamed2717(core.Map<core.String, core.List<core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2701(o["x"]);
-  checkUnnamed2701(o["y"]);
+  checkUnnamed2716(o["x"]);
+  checkUnnamed2716(o["y"]);
 }
 
-buildUnnamed2703() {
+buildUnnamed2718() {
   var o = new core.List<api.ReadGroup>();
   o.add(buildReadGroup());
   o.add(buildReadGroup());
   return o;
 }
 
-checkUnnamed2703(core.List<api.ReadGroup> o) {
+checkUnnamed2718(core.List<api.ReadGroup> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReadGroup(o[0]);
   checkReadGroup(o[1]);
@@ -1744,9 +1744,9 @@
     o.datasetId = "foo";
     o.filename = "foo";
     o.id = "foo";
-    o.info = buildUnnamed2702();
+    o.info = buildUnnamed2717();
     o.name = "foo";
-    o.readGroups = buildUnnamed2703();
+    o.readGroups = buildUnnamed2718();
     o.referenceSetId = "foo";
   }
   buildCounterReadGroupSet--;
@@ -1759,22 +1759,22 @@
     unittest.expect(o.datasetId, unittest.equals('foo'));
     unittest.expect(o.filename, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2702(o.info);
+    checkUnnamed2717(o.info);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2703(o.readGroups);
+    checkUnnamed2718(o.readGroups);
     unittest.expect(o.referenceSetId, unittest.equals('foo'));
   }
   buildCounterReadGroupSet--;
 }
 
-buildUnnamed2704() {
+buildUnnamed2719() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2704(core.List<core.String> o) {
+checkUnnamed2719(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1790,7 +1790,7 @@
     o.md5checksum = "foo";
     o.name = "foo";
     o.ncbiTaxonId = 42;
-    o.sourceAccessions = buildUnnamed2704();
+    o.sourceAccessions = buildUnnamed2719();
     o.sourceUri = "foo";
   }
   buildCounterReference--;
@@ -1805,7 +1805,7 @@
     unittest.expect(o.md5checksum, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.ncbiTaxonId, unittest.equals(42));
-    checkUnnamed2704(o.sourceAccessions);
+    checkUnnamed2719(o.sourceAccessions);
     unittest.expect(o.sourceUri, unittest.equals('foo'));
   }
   buildCounterReference--;
@@ -1832,27 +1832,27 @@
   buildCounterReferenceBound--;
 }
 
-buildUnnamed2705() {
+buildUnnamed2720() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2705(core.List<core.String> o) {
+checkUnnamed2720(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2706() {
+buildUnnamed2721() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2706(core.List<core.String> o) {
+checkUnnamed2721(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1868,8 +1868,8 @@
     o.id = "foo";
     o.md5checksum = "foo";
     o.ncbiTaxonId = 42;
-    o.referenceIds = buildUnnamed2705();
-    o.sourceAccessions = buildUnnamed2706();
+    o.referenceIds = buildUnnamed2720();
+    o.sourceAccessions = buildUnnamed2721();
     o.sourceUri = "foo";
   }
   buildCounterReferenceSet--;
@@ -1884,8 +1884,8 @@
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.md5checksum, unittest.equals('foo'));
     unittest.expect(o.ncbiTaxonId, unittest.equals(42));
-    checkUnnamed2705(o.referenceIds);
-    checkUnnamed2706(o.sourceAccessions);
+    checkUnnamed2720(o.referenceIds);
+    checkUnnamed2721(o.sourceAccessions);
     unittest.expect(o.sourceUri, unittest.equals('foo'));
   }
   buildCounterReferenceSet--;
@@ -1910,495 +1910,6 @@
   buildCounterRuntimeMetadata--;
 }
 
-buildUnnamed2707() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed2707(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed2708() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed2708(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-core.int buildCounterSearchAnnotationSetsRequest = 0;
-buildSearchAnnotationSetsRequest() {
-  var o = new api.SearchAnnotationSetsRequest();
-  buildCounterSearchAnnotationSetsRequest++;
-  if (buildCounterSearchAnnotationSetsRequest < 3) {
-    o.datasetIds = buildUnnamed2707();
-    o.name = "foo";
-    o.pageSize = 42;
-    o.pageToken = "foo";
-    o.referenceSetId = "foo";
-    o.types = buildUnnamed2708();
-  }
-  buildCounterSearchAnnotationSetsRequest--;
-  return o;
-}
-
-checkSearchAnnotationSetsRequest(api.SearchAnnotationSetsRequest o) {
-  buildCounterSearchAnnotationSetsRequest++;
-  if (buildCounterSearchAnnotationSetsRequest < 3) {
-    checkUnnamed2707(o.datasetIds);
-    unittest.expect(o.name, unittest.equals('foo'));
-    unittest.expect(o.pageSize, unittest.equals(42));
-    unittest.expect(o.pageToken, unittest.equals('foo'));
-    unittest.expect(o.referenceSetId, unittest.equals('foo'));
-    checkUnnamed2708(o.types);
-  }
-  buildCounterSearchAnnotationSetsRequest--;
-}
-
-buildUnnamed2709() {
-  var o = new core.List<api.AnnotationSet>();
-  o.add(buildAnnotationSet());
-  o.add(buildAnnotationSet());
-  return o;
-}
-
-checkUnnamed2709(core.List<api.AnnotationSet> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkAnnotationSet(o[0]);
-  checkAnnotationSet(o[1]);
-}
-
-core.int buildCounterSearchAnnotationSetsResponse = 0;
-buildSearchAnnotationSetsResponse() {
-  var o = new api.SearchAnnotationSetsResponse();
-  buildCounterSearchAnnotationSetsResponse++;
-  if (buildCounterSearchAnnotationSetsResponse < 3) {
-    o.annotationSets = buildUnnamed2709();
-    o.nextPageToken = "foo";
-  }
-  buildCounterSearchAnnotationSetsResponse--;
-  return o;
-}
-
-checkSearchAnnotationSetsResponse(api.SearchAnnotationSetsResponse o) {
-  buildCounterSearchAnnotationSetsResponse++;
-  if (buildCounterSearchAnnotationSetsResponse < 3) {
-    checkUnnamed2709(o.annotationSets);
-    unittest.expect(o.nextPageToken, unittest.equals('foo'));
-  }
-  buildCounterSearchAnnotationSetsResponse--;
-}
-
-buildUnnamed2710() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed2710(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-core.int buildCounterSearchAnnotationsRequest = 0;
-buildSearchAnnotationsRequest() {
-  var o = new api.SearchAnnotationsRequest();
-  buildCounterSearchAnnotationsRequest++;
-  if (buildCounterSearchAnnotationsRequest < 3) {
-    o.annotationSetIds = buildUnnamed2710();
-    o.end = "foo";
-    o.pageSize = 42;
-    o.pageToken = "foo";
-    o.referenceId = "foo";
-    o.referenceName = "foo";
-    o.start = "foo";
-  }
-  buildCounterSearchAnnotationsRequest--;
-  return o;
-}
-
-checkSearchAnnotationsRequest(api.SearchAnnotationsRequest o) {
-  buildCounterSearchAnnotationsRequest++;
-  if (buildCounterSearchAnnotationsRequest < 3) {
-    checkUnnamed2710(o.annotationSetIds);
-    unittest.expect(o.end, unittest.equals('foo'));
-    unittest.expect(o.pageSize, unittest.equals(42));
-    unittest.expect(o.pageToken, unittest.equals('foo'));
-    unittest.expect(o.referenceId, unittest.equals('foo'));
-    unittest.expect(o.referenceName, unittest.equals('foo'));
-    unittest.expect(o.start, unittest.equals('foo'));
-  }
-  buildCounterSearchAnnotationsRequest--;
-}
-
-buildUnnamed2711() {
-  var o = new core.List<api.Annotation>();
-  o.add(buildAnnotation());
-  o.add(buildAnnotation());
-  return o;
-}
-
-checkUnnamed2711(core.List<api.Annotation> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkAnnotation(o[0]);
-  checkAnnotation(o[1]);
-}
-
-core.int buildCounterSearchAnnotationsResponse = 0;
-buildSearchAnnotationsResponse() {
-  var o = new api.SearchAnnotationsResponse();
-  buildCounterSearchAnnotationsResponse++;
-  if (buildCounterSearchAnnotationsResponse < 3) {
-    o.annotations = buildUnnamed2711();
-    o.nextPageToken = "foo";
-  }
-  buildCounterSearchAnnotationsResponse--;
-  return o;
-}
-
-checkSearchAnnotationsResponse(api.SearchAnnotationsResponse o) {
-  buildCounterSearchAnnotationsResponse++;
-  if (buildCounterSearchAnnotationsResponse < 3) {
-    checkUnnamed2711(o.annotations);
-    unittest.expect(o.nextPageToken, unittest.equals('foo'));
-  }
-  buildCounterSearchAnnotationsResponse--;
-}
-
-buildUnnamed2712() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed2712(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-core.int buildCounterSearchCallSetsRequest = 0;
-buildSearchCallSetsRequest() {
-  var o = new api.SearchCallSetsRequest();
-  buildCounterSearchCallSetsRequest++;
-  if (buildCounterSearchCallSetsRequest < 3) {
-    o.name = "foo";
-    o.pageSize = 42;
-    o.pageToken = "foo";
-    o.variantSetIds = buildUnnamed2712();
-  }
-  buildCounterSearchCallSetsRequest--;
-  return o;
-}
-
-checkSearchCallSetsRequest(api.SearchCallSetsRequest o) {
-  buildCounterSearchCallSetsRequest++;
-  if (buildCounterSearchCallSetsRequest < 3) {
-    unittest.expect(o.name, unittest.equals('foo'));
-    unittest.expect(o.pageSize, unittest.equals(42));
-    unittest.expect(o.pageToken, unittest.equals('foo'));
-    checkUnnamed2712(o.variantSetIds);
-  }
-  buildCounterSearchCallSetsRequest--;
-}
-
-buildUnnamed2713() {
-  var o = new core.List<api.CallSet>();
-  o.add(buildCallSet());
-  o.add(buildCallSet());
-  return o;
-}
-
-checkUnnamed2713(core.List<api.CallSet> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkCallSet(o[0]);
-  checkCallSet(o[1]);
-}
-
-core.int buildCounterSearchCallSetsResponse = 0;
-buildSearchCallSetsResponse() {
-  var o = new api.SearchCallSetsResponse();
-  buildCounterSearchCallSetsResponse++;
-  if (buildCounterSearchCallSetsResponse < 3) {
-    o.callSets = buildUnnamed2713();
-    o.nextPageToken = "foo";
-  }
-  buildCounterSearchCallSetsResponse--;
-  return o;
-}
-
-checkSearchCallSetsResponse(api.SearchCallSetsResponse o) {
-  buildCounterSearchCallSetsResponse++;
-  if (buildCounterSearchCallSetsResponse < 3) {
-    checkUnnamed2713(o.callSets);
-    unittest.expect(o.nextPageToken, unittest.equals('foo'));
-  }
-  buildCounterSearchCallSetsResponse--;
-}
-
-buildUnnamed2714() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed2714(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-core.int buildCounterSearchReadGroupSetsRequest = 0;
-buildSearchReadGroupSetsRequest() {
-  var o = new api.SearchReadGroupSetsRequest();
-  buildCounterSearchReadGroupSetsRequest++;
-  if (buildCounterSearchReadGroupSetsRequest < 3) {
-    o.datasetIds = buildUnnamed2714();
-    o.name = "foo";
-    o.pageSize = 42;
-    o.pageToken = "foo";
-  }
-  buildCounterSearchReadGroupSetsRequest--;
-  return o;
-}
-
-checkSearchReadGroupSetsRequest(api.SearchReadGroupSetsRequest o) {
-  buildCounterSearchReadGroupSetsRequest++;
-  if (buildCounterSearchReadGroupSetsRequest < 3) {
-    checkUnnamed2714(o.datasetIds);
-    unittest.expect(o.name, unittest.equals('foo'));
-    unittest.expect(o.pageSize, unittest.equals(42));
-    unittest.expect(o.pageToken, unittest.equals('foo'));
-  }
-  buildCounterSearchReadGroupSetsRequest--;
-}
-
-buildUnnamed2715() {
-  var o = new core.List<api.ReadGroupSet>();
-  o.add(buildReadGroupSet());
-  o.add(buildReadGroupSet());
-  return o;
-}
-
-checkUnnamed2715(core.List<api.ReadGroupSet> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkReadGroupSet(o[0]);
-  checkReadGroupSet(o[1]);
-}
-
-core.int buildCounterSearchReadGroupSetsResponse = 0;
-buildSearchReadGroupSetsResponse() {
-  var o = new api.SearchReadGroupSetsResponse();
-  buildCounterSearchReadGroupSetsResponse++;
-  if (buildCounterSearchReadGroupSetsResponse < 3) {
-    o.nextPageToken = "foo";
-    o.readGroupSets = buildUnnamed2715();
-  }
-  buildCounterSearchReadGroupSetsResponse--;
-  return o;
-}
-
-checkSearchReadGroupSetsResponse(api.SearchReadGroupSetsResponse o) {
-  buildCounterSearchReadGroupSetsResponse++;
-  if (buildCounterSearchReadGroupSetsResponse < 3) {
-    unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2715(o.readGroupSets);
-  }
-  buildCounterSearchReadGroupSetsResponse--;
-}
-
-buildUnnamed2716() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed2716(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed2717() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed2717(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-core.int buildCounterSearchReadsRequest = 0;
-buildSearchReadsRequest() {
-  var o = new api.SearchReadsRequest();
-  buildCounterSearchReadsRequest++;
-  if (buildCounterSearchReadsRequest < 3) {
-    o.end = "foo";
-    o.pageSize = 42;
-    o.pageToken = "foo";
-    o.readGroupIds = buildUnnamed2716();
-    o.readGroupSetIds = buildUnnamed2717();
-    o.referenceName = "foo";
-    o.start = "foo";
-  }
-  buildCounterSearchReadsRequest--;
-  return o;
-}
-
-checkSearchReadsRequest(api.SearchReadsRequest o) {
-  buildCounterSearchReadsRequest++;
-  if (buildCounterSearchReadsRequest < 3) {
-    unittest.expect(o.end, unittest.equals('foo'));
-    unittest.expect(o.pageSize, unittest.equals(42));
-    unittest.expect(o.pageToken, unittest.equals('foo'));
-    checkUnnamed2716(o.readGroupIds);
-    checkUnnamed2717(o.readGroupSetIds);
-    unittest.expect(o.referenceName, unittest.equals('foo'));
-    unittest.expect(o.start, unittest.equals('foo'));
-  }
-  buildCounterSearchReadsRequest--;
-}
-
-buildUnnamed2718() {
-  var o = new core.List<api.Read>();
-  o.add(buildRead());
-  o.add(buildRead());
-  return o;
-}
-
-checkUnnamed2718(core.List<api.Read> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkRead(o[0]);
-  checkRead(o[1]);
-}
-
-core.int buildCounterSearchReadsResponse = 0;
-buildSearchReadsResponse() {
-  var o = new api.SearchReadsResponse();
-  buildCounterSearchReadsResponse++;
-  if (buildCounterSearchReadsResponse < 3) {
-    o.alignments = buildUnnamed2718();
-    o.nextPageToken = "foo";
-  }
-  buildCounterSearchReadsResponse--;
-  return o;
-}
-
-checkSearchReadsResponse(api.SearchReadsResponse o) {
-  buildCounterSearchReadsResponse++;
-  if (buildCounterSearchReadsResponse < 3) {
-    checkUnnamed2718(o.alignments);
-    unittest.expect(o.nextPageToken, unittest.equals('foo'));
-  }
-  buildCounterSearchReadsResponse--;
-}
-
-buildUnnamed2719() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed2719(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed2720() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed2720(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-core.int buildCounterSearchReferenceSetsRequest = 0;
-buildSearchReferenceSetsRequest() {
-  var o = new api.SearchReferenceSetsRequest();
-  buildCounterSearchReferenceSetsRequest++;
-  if (buildCounterSearchReferenceSetsRequest < 3) {
-    o.accessions = buildUnnamed2719();
-    o.assemblyId = "foo";
-    o.md5checksums = buildUnnamed2720();
-    o.pageSize = 42;
-    o.pageToken = "foo";
-  }
-  buildCounterSearchReferenceSetsRequest--;
-  return o;
-}
-
-checkSearchReferenceSetsRequest(api.SearchReferenceSetsRequest o) {
-  buildCounterSearchReferenceSetsRequest++;
-  if (buildCounterSearchReferenceSetsRequest < 3) {
-    checkUnnamed2719(o.accessions);
-    unittest.expect(o.assemblyId, unittest.equals('foo'));
-    checkUnnamed2720(o.md5checksums);
-    unittest.expect(o.pageSize, unittest.equals(42));
-    unittest.expect(o.pageToken, unittest.equals('foo'));
-  }
-  buildCounterSearchReferenceSetsRequest--;
-}
-
-buildUnnamed2721() {
-  var o = new core.List<api.ReferenceSet>();
-  o.add(buildReferenceSet());
-  o.add(buildReferenceSet());
-  return o;
-}
-
-checkUnnamed2721(core.List<api.ReferenceSet> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkReferenceSet(o[0]);
-  checkReferenceSet(o[1]);
-}
-
-core.int buildCounterSearchReferenceSetsResponse = 0;
-buildSearchReferenceSetsResponse() {
-  var o = new api.SearchReferenceSetsResponse();
-  buildCounterSearchReferenceSetsResponse++;
-  if (buildCounterSearchReferenceSetsResponse < 3) {
-    o.nextPageToken = "foo";
-    o.referenceSets = buildUnnamed2721();
-  }
-  buildCounterSearchReferenceSetsResponse--;
-  return o;
-}
-
-checkSearchReferenceSetsResponse(api.SearchReferenceSetsResponse o) {
-  buildCounterSearchReferenceSetsResponse++;
-  if (buildCounterSearchReferenceSetsResponse < 3) {
-    unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2721(o.referenceSets);
-  }
-  buildCounterSearchReferenceSetsResponse--;
-}
-
 buildUnnamed2722() {
   var o = new core.List<core.String>();
   o.add("foo");
@@ -2425,65 +1936,67 @@
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-core.int buildCounterSearchReferencesRequest = 0;
-buildSearchReferencesRequest() {
-  var o = new api.SearchReferencesRequest();
-  buildCounterSearchReferencesRequest++;
-  if (buildCounterSearchReferencesRequest < 3) {
-    o.accessions = buildUnnamed2722();
-    o.md5checksums = buildUnnamed2723();
+core.int buildCounterSearchAnnotationSetsRequest = 0;
+buildSearchAnnotationSetsRequest() {
+  var o = new api.SearchAnnotationSetsRequest();
+  buildCounterSearchAnnotationSetsRequest++;
+  if (buildCounterSearchAnnotationSetsRequest < 3) {
+    o.datasetIds = buildUnnamed2722();
+    o.name = "foo";
     o.pageSize = 42;
     o.pageToken = "foo";
     o.referenceSetId = "foo";
+    o.types = buildUnnamed2723();
   }
-  buildCounterSearchReferencesRequest--;
+  buildCounterSearchAnnotationSetsRequest--;
   return o;
 }
 
-checkSearchReferencesRequest(api.SearchReferencesRequest o) {
-  buildCounterSearchReferencesRequest++;
-  if (buildCounterSearchReferencesRequest < 3) {
-    checkUnnamed2722(o.accessions);
-    checkUnnamed2723(o.md5checksums);
+checkSearchAnnotationSetsRequest(api.SearchAnnotationSetsRequest o) {
+  buildCounterSearchAnnotationSetsRequest++;
+  if (buildCounterSearchAnnotationSetsRequest < 3) {
+    checkUnnamed2722(o.datasetIds);
+    unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.pageSize, unittest.equals(42));
     unittest.expect(o.pageToken, unittest.equals('foo'));
     unittest.expect(o.referenceSetId, unittest.equals('foo'));
+    checkUnnamed2723(o.types);
   }
-  buildCounterSearchReferencesRequest--;
+  buildCounterSearchAnnotationSetsRequest--;
 }
 
 buildUnnamed2724() {
-  var o = new core.List<api.Reference>();
-  o.add(buildReference());
-  o.add(buildReference());
+  var o = new core.List<api.AnnotationSet>();
+  o.add(buildAnnotationSet());
+  o.add(buildAnnotationSet());
   return o;
 }
 
-checkUnnamed2724(core.List<api.Reference> o) {
+checkUnnamed2724(core.List<api.AnnotationSet> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkReference(o[0]);
-  checkReference(o[1]);
+  checkAnnotationSet(o[0]);
+  checkAnnotationSet(o[1]);
 }
 
-core.int buildCounterSearchReferencesResponse = 0;
-buildSearchReferencesResponse() {
-  var o = new api.SearchReferencesResponse();
-  buildCounterSearchReferencesResponse++;
-  if (buildCounterSearchReferencesResponse < 3) {
+core.int buildCounterSearchAnnotationSetsResponse = 0;
+buildSearchAnnotationSetsResponse() {
+  var o = new api.SearchAnnotationSetsResponse();
+  buildCounterSearchAnnotationSetsResponse++;
+  if (buildCounterSearchAnnotationSetsResponse < 3) {
+    o.annotationSets = buildUnnamed2724();
     o.nextPageToken = "foo";
-    o.references = buildUnnamed2724();
   }
-  buildCounterSearchReferencesResponse--;
+  buildCounterSearchAnnotationSetsResponse--;
   return o;
 }
 
-checkSearchReferencesResponse(api.SearchReferencesResponse o) {
-  buildCounterSearchReferencesResponse++;
-  if (buildCounterSearchReferencesResponse < 3) {
+checkSearchAnnotationSetsResponse(api.SearchAnnotationSetsResponse o) {
+  buildCounterSearchAnnotationSetsResponse++;
+  if (buildCounterSearchAnnotationSetsResponse < 3) {
+    checkUnnamed2724(o.annotationSets);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2724(o.references);
   }
-  buildCounterSearchReferencesResponse--;
+  buildCounterSearchAnnotationSetsResponse--;
 }
 
 buildUnnamed2725() {
@@ -2499,61 +2012,69 @@
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-core.int buildCounterSearchVariantSetsRequest = 0;
-buildSearchVariantSetsRequest() {
-  var o = new api.SearchVariantSetsRequest();
-  buildCounterSearchVariantSetsRequest++;
-  if (buildCounterSearchVariantSetsRequest < 3) {
-    o.datasetIds = buildUnnamed2725();
+core.int buildCounterSearchAnnotationsRequest = 0;
+buildSearchAnnotationsRequest() {
+  var o = new api.SearchAnnotationsRequest();
+  buildCounterSearchAnnotationsRequest++;
+  if (buildCounterSearchAnnotationsRequest < 3) {
+    o.annotationSetIds = buildUnnamed2725();
+    o.end = "foo";
     o.pageSize = 42;
     o.pageToken = "foo";
+    o.referenceId = "foo";
+    o.referenceName = "foo";
+    o.start = "foo";
   }
-  buildCounterSearchVariantSetsRequest--;
+  buildCounterSearchAnnotationsRequest--;
   return o;
 }
 
-checkSearchVariantSetsRequest(api.SearchVariantSetsRequest o) {
-  buildCounterSearchVariantSetsRequest++;
-  if (buildCounterSearchVariantSetsRequest < 3) {
-    checkUnnamed2725(o.datasetIds);
+checkSearchAnnotationsRequest(api.SearchAnnotationsRequest o) {
+  buildCounterSearchAnnotationsRequest++;
+  if (buildCounterSearchAnnotationsRequest < 3) {
+    checkUnnamed2725(o.annotationSetIds);
+    unittest.expect(o.end, unittest.equals('foo'));
     unittest.expect(o.pageSize, unittest.equals(42));
     unittest.expect(o.pageToken, unittest.equals('foo'));
+    unittest.expect(o.referenceId, unittest.equals('foo'));
+    unittest.expect(o.referenceName, unittest.equals('foo'));
+    unittest.expect(o.start, unittest.equals('foo'));
   }
-  buildCounterSearchVariantSetsRequest--;
+  buildCounterSearchAnnotationsRequest--;
 }
 
 buildUnnamed2726() {
-  var o = new core.List<api.VariantSet>();
-  o.add(buildVariantSet());
-  o.add(buildVariantSet());
+  var o = new core.List<api.Annotation>();
+  o.add(buildAnnotation());
+  o.add(buildAnnotation());
   return o;
 }
 
-checkUnnamed2726(core.List<api.VariantSet> o) {
+checkUnnamed2726(core.List<api.Annotation> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkVariantSet(o[0]);
-  checkVariantSet(o[1]);
+  checkAnnotation(o[0]);
+  checkAnnotation(o[1]);
 }
 
-core.int buildCounterSearchVariantSetsResponse = 0;
-buildSearchVariantSetsResponse() {
-  var o = new api.SearchVariantSetsResponse();
-  buildCounterSearchVariantSetsResponse++;
-  if (buildCounterSearchVariantSetsResponse < 3) {
+core.int buildCounterSearchAnnotationsResponse = 0;
+buildSearchAnnotationsResponse() {
+  var o = new api.SearchAnnotationsResponse();
+  buildCounterSearchAnnotationsResponse++;
+  if (buildCounterSearchAnnotationsResponse < 3) {
+    o.annotations = buildUnnamed2726();
     o.nextPageToken = "foo";
-    o.variantSets = buildUnnamed2726();
   }
-  buildCounterSearchVariantSetsResponse--;
+  buildCounterSearchAnnotationsResponse--;
   return o;
 }
 
-checkSearchVariantSetsResponse(api.SearchVariantSetsResponse o) {
-  buildCounterSearchVariantSetsResponse++;
-  if (buildCounterSearchVariantSetsResponse < 3) {
+checkSearchAnnotationsResponse(api.SearchAnnotationsResponse o) {
+  buildCounterSearchAnnotationsResponse++;
+  if (buildCounterSearchAnnotationsResponse < 3) {
+    checkUnnamed2726(o.annotations);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2726(o.variantSets);
   }
-  buildCounterSearchVariantSetsResponse--;
+  buildCounterSearchAnnotationsResponse--;
 }
 
 buildUnnamed2727() {
@@ -2569,14 +2090,493 @@
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
+core.int buildCounterSearchCallSetsRequest = 0;
+buildSearchCallSetsRequest() {
+  var o = new api.SearchCallSetsRequest();
+  buildCounterSearchCallSetsRequest++;
+  if (buildCounterSearchCallSetsRequest < 3) {
+    o.name = "foo";
+    o.pageSize = 42;
+    o.pageToken = "foo";
+    o.variantSetIds = buildUnnamed2727();
+  }
+  buildCounterSearchCallSetsRequest--;
+  return o;
+}
+
+checkSearchCallSetsRequest(api.SearchCallSetsRequest o) {
+  buildCounterSearchCallSetsRequest++;
+  if (buildCounterSearchCallSetsRequest < 3) {
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.pageSize, unittest.equals(42));
+    unittest.expect(o.pageToken, unittest.equals('foo'));
+    checkUnnamed2727(o.variantSetIds);
+  }
+  buildCounterSearchCallSetsRequest--;
+}
+
 buildUnnamed2728() {
+  var o = new core.List<api.CallSet>();
+  o.add(buildCallSet());
+  o.add(buildCallSet());
+  return o;
+}
+
+checkUnnamed2728(core.List<api.CallSet> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCallSet(o[0]);
+  checkCallSet(o[1]);
+}
+
+core.int buildCounterSearchCallSetsResponse = 0;
+buildSearchCallSetsResponse() {
+  var o = new api.SearchCallSetsResponse();
+  buildCounterSearchCallSetsResponse++;
+  if (buildCounterSearchCallSetsResponse < 3) {
+    o.callSets = buildUnnamed2728();
+    o.nextPageToken = "foo";
+  }
+  buildCounterSearchCallSetsResponse--;
+  return o;
+}
+
+checkSearchCallSetsResponse(api.SearchCallSetsResponse o) {
+  buildCounterSearchCallSetsResponse++;
+  if (buildCounterSearchCallSetsResponse < 3) {
+    checkUnnamed2728(o.callSets);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterSearchCallSetsResponse--;
+}
+
+buildUnnamed2729() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2728(core.List<core.String> o) {
+checkUnnamed2729(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterSearchReadGroupSetsRequest = 0;
+buildSearchReadGroupSetsRequest() {
+  var o = new api.SearchReadGroupSetsRequest();
+  buildCounterSearchReadGroupSetsRequest++;
+  if (buildCounterSearchReadGroupSetsRequest < 3) {
+    o.datasetIds = buildUnnamed2729();
+    o.name = "foo";
+    o.pageSize = 42;
+    o.pageToken = "foo";
+  }
+  buildCounterSearchReadGroupSetsRequest--;
+  return o;
+}
+
+checkSearchReadGroupSetsRequest(api.SearchReadGroupSetsRequest o) {
+  buildCounterSearchReadGroupSetsRequest++;
+  if (buildCounterSearchReadGroupSetsRequest < 3) {
+    checkUnnamed2729(o.datasetIds);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.pageSize, unittest.equals(42));
+    unittest.expect(o.pageToken, unittest.equals('foo'));
+  }
+  buildCounterSearchReadGroupSetsRequest--;
+}
+
+buildUnnamed2730() {
+  var o = new core.List<api.ReadGroupSet>();
+  o.add(buildReadGroupSet());
+  o.add(buildReadGroupSet());
+  return o;
+}
+
+checkUnnamed2730(core.List<api.ReadGroupSet> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkReadGroupSet(o[0]);
+  checkReadGroupSet(o[1]);
+}
+
+core.int buildCounterSearchReadGroupSetsResponse = 0;
+buildSearchReadGroupSetsResponse() {
+  var o = new api.SearchReadGroupSetsResponse();
+  buildCounterSearchReadGroupSetsResponse++;
+  if (buildCounterSearchReadGroupSetsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.readGroupSets = buildUnnamed2730();
+  }
+  buildCounterSearchReadGroupSetsResponse--;
+  return o;
+}
+
+checkSearchReadGroupSetsResponse(api.SearchReadGroupSetsResponse o) {
+  buildCounterSearchReadGroupSetsResponse++;
+  if (buildCounterSearchReadGroupSetsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed2730(o.readGroupSets);
+  }
+  buildCounterSearchReadGroupSetsResponse--;
+}
+
+buildUnnamed2731() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2731(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2732() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2732(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterSearchReadsRequest = 0;
+buildSearchReadsRequest() {
+  var o = new api.SearchReadsRequest();
+  buildCounterSearchReadsRequest++;
+  if (buildCounterSearchReadsRequest < 3) {
+    o.end = "foo";
+    o.pageSize = 42;
+    o.pageToken = "foo";
+    o.readGroupIds = buildUnnamed2731();
+    o.readGroupSetIds = buildUnnamed2732();
+    o.referenceName = "foo";
+    o.start = "foo";
+  }
+  buildCounterSearchReadsRequest--;
+  return o;
+}
+
+checkSearchReadsRequest(api.SearchReadsRequest o) {
+  buildCounterSearchReadsRequest++;
+  if (buildCounterSearchReadsRequest < 3) {
+    unittest.expect(o.end, unittest.equals('foo'));
+    unittest.expect(o.pageSize, unittest.equals(42));
+    unittest.expect(o.pageToken, unittest.equals('foo'));
+    checkUnnamed2731(o.readGroupIds);
+    checkUnnamed2732(o.readGroupSetIds);
+    unittest.expect(o.referenceName, unittest.equals('foo'));
+    unittest.expect(o.start, unittest.equals('foo'));
+  }
+  buildCounterSearchReadsRequest--;
+}
+
+buildUnnamed2733() {
+  var o = new core.List<api.Read>();
+  o.add(buildRead());
+  o.add(buildRead());
+  return o;
+}
+
+checkUnnamed2733(core.List<api.Read> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRead(o[0]);
+  checkRead(o[1]);
+}
+
+core.int buildCounterSearchReadsResponse = 0;
+buildSearchReadsResponse() {
+  var o = new api.SearchReadsResponse();
+  buildCounterSearchReadsResponse++;
+  if (buildCounterSearchReadsResponse < 3) {
+    o.alignments = buildUnnamed2733();
+    o.nextPageToken = "foo";
+  }
+  buildCounterSearchReadsResponse--;
+  return o;
+}
+
+checkSearchReadsResponse(api.SearchReadsResponse o) {
+  buildCounterSearchReadsResponse++;
+  if (buildCounterSearchReadsResponse < 3) {
+    checkUnnamed2733(o.alignments);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterSearchReadsResponse--;
+}
+
+buildUnnamed2734() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2734(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2735() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2735(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterSearchReferenceSetsRequest = 0;
+buildSearchReferenceSetsRequest() {
+  var o = new api.SearchReferenceSetsRequest();
+  buildCounterSearchReferenceSetsRequest++;
+  if (buildCounterSearchReferenceSetsRequest < 3) {
+    o.accessions = buildUnnamed2734();
+    o.assemblyId = "foo";
+    o.md5checksums = buildUnnamed2735();
+    o.pageSize = 42;
+    o.pageToken = "foo";
+  }
+  buildCounterSearchReferenceSetsRequest--;
+  return o;
+}
+
+checkSearchReferenceSetsRequest(api.SearchReferenceSetsRequest o) {
+  buildCounterSearchReferenceSetsRequest++;
+  if (buildCounterSearchReferenceSetsRequest < 3) {
+    checkUnnamed2734(o.accessions);
+    unittest.expect(o.assemblyId, unittest.equals('foo'));
+    checkUnnamed2735(o.md5checksums);
+    unittest.expect(o.pageSize, unittest.equals(42));
+    unittest.expect(o.pageToken, unittest.equals('foo'));
+  }
+  buildCounterSearchReferenceSetsRequest--;
+}
+
+buildUnnamed2736() {
+  var o = new core.List<api.ReferenceSet>();
+  o.add(buildReferenceSet());
+  o.add(buildReferenceSet());
+  return o;
+}
+
+checkUnnamed2736(core.List<api.ReferenceSet> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkReferenceSet(o[0]);
+  checkReferenceSet(o[1]);
+}
+
+core.int buildCounterSearchReferenceSetsResponse = 0;
+buildSearchReferenceSetsResponse() {
+  var o = new api.SearchReferenceSetsResponse();
+  buildCounterSearchReferenceSetsResponse++;
+  if (buildCounterSearchReferenceSetsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.referenceSets = buildUnnamed2736();
+  }
+  buildCounterSearchReferenceSetsResponse--;
+  return o;
+}
+
+checkSearchReferenceSetsResponse(api.SearchReferenceSetsResponse o) {
+  buildCounterSearchReferenceSetsResponse++;
+  if (buildCounterSearchReferenceSetsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed2736(o.referenceSets);
+  }
+  buildCounterSearchReferenceSetsResponse--;
+}
+
+buildUnnamed2737() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2737(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2738() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2738(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterSearchReferencesRequest = 0;
+buildSearchReferencesRequest() {
+  var o = new api.SearchReferencesRequest();
+  buildCounterSearchReferencesRequest++;
+  if (buildCounterSearchReferencesRequest < 3) {
+    o.accessions = buildUnnamed2737();
+    o.md5checksums = buildUnnamed2738();
+    o.pageSize = 42;
+    o.pageToken = "foo";
+    o.referenceSetId = "foo";
+  }
+  buildCounterSearchReferencesRequest--;
+  return o;
+}
+
+checkSearchReferencesRequest(api.SearchReferencesRequest o) {
+  buildCounterSearchReferencesRequest++;
+  if (buildCounterSearchReferencesRequest < 3) {
+    checkUnnamed2737(o.accessions);
+    checkUnnamed2738(o.md5checksums);
+    unittest.expect(o.pageSize, unittest.equals(42));
+    unittest.expect(o.pageToken, unittest.equals('foo'));
+    unittest.expect(o.referenceSetId, unittest.equals('foo'));
+  }
+  buildCounterSearchReferencesRequest--;
+}
+
+buildUnnamed2739() {
+  var o = new core.List<api.Reference>();
+  o.add(buildReference());
+  o.add(buildReference());
+  return o;
+}
+
+checkUnnamed2739(core.List<api.Reference> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkReference(o[0]);
+  checkReference(o[1]);
+}
+
+core.int buildCounterSearchReferencesResponse = 0;
+buildSearchReferencesResponse() {
+  var o = new api.SearchReferencesResponse();
+  buildCounterSearchReferencesResponse++;
+  if (buildCounterSearchReferencesResponse < 3) {
+    o.nextPageToken = "foo";
+    o.references = buildUnnamed2739();
+  }
+  buildCounterSearchReferencesResponse--;
+  return o;
+}
+
+checkSearchReferencesResponse(api.SearchReferencesResponse o) {
+  buildCounterSearchReferencesResponse++;
+  if (buildCounterSearchReferencesResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed2739(o.references);
+  }
+  buildCounterSearchReferencesResponse--;
+}
+
+buildUnnamed2740() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2740(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterSearchVariantSetsRequest = 0;
+buildSearchVariantSetsRequest() {
+  var o = new api.SearchVariantSetsRequest();
+  buildCounterSearchVariantSetsRequest++;
+  if (buildCounterSearchVariantSetsRequest < 3) {
+    o.datasetIds = buildUnnamed2740();
+    o.pageSize = 42;
+    o.pageToken = "foo";
+  }
+  buildCounterSearchVariantSetsRequest--;
+  return o;
+}
+
+checkSearchVariantSetsRequest(api.SearchVariantSetsRequest o) {
+  buildCounterSearchVariantSetsRequest++;
+  if (buildCounterSearchVariantSetsRequest < 3) {
+    checkUnnamed2740(o.datasetIds);
+    unittest.expect(o.pageSize, unittest.equals(42));
+    unittest.expect(o.pageToken, unittest.equals('foo'));
+  }
+  buildCounterSearchVariantSetsRequest--;
+}
+
+buildUnnamed2741() {
+  var o = new core.List<api.VariantSet>();
+  o.add(buildVariantSet());
+  o.add(buildVariantSet());
+  return o;
+}
+
+checkUnnamed2741(core.List<api.VariantSet> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVariantSet(o[0]);
+  checkVariantSet(o[1]);
+}
+
+core.int buildCounterSearchVariantSetsResponse = 0;
+buildSearchVariantSetsResponse() {
+  var o = new api.SearchVariantSetsResponse();
+  buildCounterSearchVariantSetsResponse++;
+  if (buildCounterSearchVariantSetsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.variantSets = buildUnnamed2741();
+  }
+  buildCounterSearchVariantSetsResponse--;
+  return o;
+}
+
+checkSearchVariantSetsResponse(api.SearchVariantSetsResponse o) {
+  buildCounterSearchVariantSetsResponse++;
+  if (buildCounterSearchVariantSetsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed2741(o.variantSets);
+  }
+  buildCounterSearchVariantSetsResponse--;
+}
+
+buildUnnamed2742() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2742(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2743() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2743(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2587,7 +2587,7 @@
   var o = new api.SearchVariantsRequest();
   buildCounterSearchVariantsRequest++;
   if (buildCounterSearchVariantsRequest < 3) {
-    o.callSetIds = buildUnnamed2727();
+    o.callSetIds = buildUnnamed2742();
     o.end = "foo";
     o.maxCalls = 42;
     o.pageSize = 42;
@@ -2595,7 +2595,7 @@
     o.referenceName = "foo";
     o.start = "foo";
     o.variantName = "foo";
-    o.variantSetIds = buildUnnamed2728();
+    o.variantSetIds = buildUnnamed2743();
   }
   buildCounterSearchVariantsRequest--;
   return o;
@@ -2604,7 +2604,7 @@
 checkSearchVariantsRequest(api.SearchVariantsRequest o) {
   buildCounterSearchVariantsRequest++;
   if (buildCounterSearchVariantsRequest < 3) {
-    checkUnnamed2727(o.callSetIds);
+    checkUnnamed2742(o.callSetIds);
     unittest.expect(o.end, unittest.equals('foo'));
     unittest.expect(o.maxCalls, unittest.equals(42));
     unittest.expect(o.pageSize, unittest.equals(42));
@@ -2612,19 +2612,19 @@
     unittest.expect(o.referenceName, unittest.equals('foo'));
     unittest.expect(o.start, unittest.equals('foo'));
     unittest.expect(o.variantName, unittest.equals('foo'));
-    checkUnnamed2728(o.variantSetIds);
+    checkUnnamed2743(o.variantSetIds);
   }
   buildCounterSearchVariantsRequest--;
 }
 
-buildUnnamed2729() {
+buildUnnamed2744() {
   var o = new core.List<api.Variant>();
   o.add(buildVariant());
   o.add(buildVariant());
   return o;
 }
 
-checkUnnamed2729(core.List<api.Variant> o) {
+checkUnnamed2744(core.List<api.Variant> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVariant(o[0]);
   checkVariant(o[1]);
@@ -2636,7 +2636,7 @@
   buildCounterSearchVariantsResponse++;
   if (buildCounterSearchVariantsResponse < 3) {
     o.nextPageToken = "foo";
-    o.variants = buildUnnamed2729();
+    o.variants = buildUnnamed2744();
   }
   buildCounterSearchVariantsResponse--;
   return o;
@@ -2646,7 +2646,7 @@
   buildCounterSearchVariantsResponse++;
   if (buildCounterSearchVariantsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2729(o.variants);
+    checkUnnamed2744(o.variants);
   }
   buildCounterSearchVariantsResponse--;
 }
@@ -2670,7 +2670,7 @@
   buildCounterSetIamPolicyRequest--;
 }
 
-buildUnnamed2730() {
+buildUnnamed2745() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -2685,7 +2685,7 @@
   return o;
 }
 
-checkUnnamed2730(core.Map<core.String, core.Object> o) {
+checkUnnamed2745(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted21 = (o["x"]) as core.Map;
   unittest.expect(casted21, unittest.hasLength(3));
@@ -2699,17 +2699,17 @@
   unittest.expect(casted22["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2731() {
+buildUnnamed2746() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed2730());
-  o.add(buildUnnamed2730());
+  o.add(buildUnnamed2745());
+  o.add(buildUnnamed2745());
   return o;
 }
 
-checkUnnamed2731(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed2746(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2730(o[0]);
-  checkUnnamed2730(o[1]);
+  checkUnnamed2745(o[0]);
+  checkUnnamed2745(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -2718,7 +2718,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed2731();
+    o.details = buildUnnamed2746();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -2729,20 +2729,20 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed2731(o.details);
+    checkUnnamed2746(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
 }
 
-buildUnnamed2732() {
+buildUnnamed2747() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2732(core.List<core.String> o) {
+checkUnnamed2747(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2753,7 +2753,7 @@
   var o = new api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed2732();
+    o.permissions = buildUnnamed2747();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -2762,19 +2762,19 @@
 checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed2732(o.permissions);
+    checkUnnamed2747(o.permissions);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-buildUnnamed2733() {
+buildUnnamed2748() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2733(core.List<core.String> o) {
+checkUnnamed2748(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2785,7 +2785,7 @@
   var o = new api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed2733();
+    o.permissions = buildUnnamed2748();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -2794,19 +2794,19 @@
 checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed2733(o.permissions);
+    checkUnnamed2748(o.permissions);
   }
   buildCounterTestIamPermissionsResponse--;
 }
 
-buildUnnamed2734() {
+buildUnnamed2749() {
   var o = new core.List<api.Exon>();
   o.add(buildExon());
   o.add(buildExon());
   return o;
 }
 
-checkUnnamed2734(core.List<api.Exon> o) {
+checkUnnamed2749(core.List<api.Exon> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkExon(o[0]);
   checkExon(o[1]);
@@ -2818,7 +2818,7 @@
   buildCounterTranscript++;
   if (buildCounterTranscript < 3) {
     o.codingSequence = buildCodingSequence();
-    o.exons = buildUnnamed2734();
+    o.exons = buildUnnamed2749();
     o.geneId = "foo";
   }
   buildCounterTranscript--;
@@ -2829,7 +2829,7 @@
   buildCounterTranscript++;
   if (buildCounterTranscript < 3) {
     checkCodingSequence(o.codingSequence);
-    checkUnnamed2734(o.exons);
+    checkUnnamed2749(o.exons);
     unittest.expect(o.geneId, unittest.equals('foo'));
   }
   buildCounterTranscript--;
@@ -2850,46 +2850,46 @@
   buildCounterUndeleteDatasetRequest--;
 }
 
-buildUnnamed2735() {
+buildUnnamed2750() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2735(core.List<core.String> o) {
+checkUnnamed2750(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2736() {
+buildUnnamed2751() {
   var o = new core.List<api.VariantCall>();
   o.add(buildVariantCall());
   o.add(buildVariantCall());
   return o;
 }
 
-checkUnnamed2736(core.List<api.VariantCall> o) {
+checkUnnamed2751(core.List<api.VariantCall> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVariantCall(o[0]);
   checkVariantCall(o[1]);
 }
 
-buildUnnamed2737() {
+buildUnnamed2752() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2737(core.List<core.String> o) {
+checkUnnamed2752(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2738() {
+buildUnnamed2753() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -2904,7 +2904,7 @@
   return o;
 }
 
-checkUnnamed2738(core.List<core.Object> o) {
+checkUnnamed2753(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted23 = (o[0]) as core.Map;
   unittest.expect(casted23, unittest.hasLength(3));
@@ -2918,27 +2918,27 @@
   unittest.expect(casted24["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2739() {
+buildUnnamed2754() {
   var o = new core.Map<core.String, core.List<core.Object>>();
-  o["x"] = buildUnnamed2738();
-  o["y"] = buildUnnamed2738();
+  o["x"] = buildUnnamed2753();
+  o["y"] = buildUnnamed2753();
   return o;
 }
 
-checkUnnamed2739(core.Map<core.String, core.List<core.Object>> o) {
+checkUnnamed2754(core.Map<core.String, core.List<core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2738(o["x"]);
-  checkUnnamed2738(o["y"]);
+  checkUnnamed2753(o["x"]);
+  checkUnnamed2753(o["y"]);
 }
 
-buildUnnamed2740() {
+buildUnnamed2755() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2740(core.List<core.String> o) {
+checkUnnamed2755(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2949,14 +2949,14 @@
   var o = new api.Variant();
   buildCounterVariant++;
   if (buildCounterVariant < 3) {
-    o.alternateBases = buildUnnamed2735();
-    o.calls = buildUnnamed2736();
+    o.alternateBases = buildUnnamed2750();
+    o.calls = buildUnnamed2751();
     o.created = "foo";
     o.end = "foo";
-    o.filter = buildUnnamed2737();
+    o.filter = buildUnnamed2752();
     o.id = "foo";
-    o.info = buildUnnamed2739();
-    o.names = buildUnnamed2740();
+    o.info = buildUnnamed2754();
+    o.names = buildUnnamed2755();
     o.quality = 42.0;
     o.referenceBases = "foo";
     o.referenceName = "foo";
@@ -2970,14 +2970,14 @@
 checkVariant(api.Variant o) {
   buildCounterVariant++;
   if (buildCounterVariant < 3) {
-    checkUnnamed2735(o.alternateBases);
-    checkUnnamed2736(o.calls);
+    checkUnnamed2750(o.alternateBases);
+    checkUnnamed2751(o.calls);
     unittest.expect(o.created, unittest.equals('foo'));
     unittest.expect(o.end, unittest.equals('foo'));
-    checkUnnamed2737(o.filter);
+    checkUnnamed2752(o.filter);
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2739(o.info);
-    checkUnnamed2740(o.names);
+    checkUnnamed2754(o.info);
+    checkUnnamed2755(o.names);
     unittest.expect(o.quality, unittest.equals(42.0));
     unittest.expect(o.referenceBases, unittest.equals('foo'));
     unittest.expect(o.referenceName, unittest.equals('foo'));
@@ -2987,27 +2987,27 @@
   buildCounterVariant--;
 }
 
-buildUnnamed2741() {
+buildUnnamed2756() {
   var o = new core.List<api.ClinicalCondition>();
   o.add(buildClinicalCondition());
   o.add(buildClinicalCondition());
   return o;
 }
 
-checkUnnamed2741(core.List<api.ClinicalCondition> o) {
+checkUnnamed2756(core.List<api.ClinicalCondition> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkClinicalCondition(o[0]);
   checkClinicalCondition(o[1]);
 }
 
-buildUnnamed2742() {
+buildUnnamed2757() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2742(core.List<core.String> o) {
+checkUnnamed2757(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -3020,10 +3020,10 @@
   if (buildCounterVariantAnnotation < 3) {
     o.alternateBases = "foo";
     o.clinicalSignificance = "foo";
-    o.conditions = buildUnnamed2741();
+    o.conditions = buildUnnamed2756();
     o.effect = "foo";
     o.geneId = "foo";
-    o.transcriptIds = buildUnnamed2742();
+    o.transcriptIds = buildUnnamed2757();
     o.type = "foo";
   }
   buildCounterVariantAnnotation--;
@@ -3035,42 +3035,42 @@
   if (buildCounterVariantAnnotation < 3) {
     unittest.expect(o.alternateBases, unittest.equals('foo'));
     unittest.expect(o.clinicalSignificance, unittest.equals('foo'));
-    checkUnnamed2741(o.conditions);
+    checkUnnamed2756(o.conditions);
     unittest.expect(o.effect, unittest.equals('foo'));
     unittest.expect(o.geneId, unittest.equals('foo'));
-    checkUnnamed2742(o.transcriptIds);
+    checkUnnamed2757(o.transcriptIds);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterVariantAnnotation--;
 }
 
-buildUnnamed2743() {
+buildUnnamed2758() {
   var o = new core.List<core.int>();
   o.add(42);
   o.add(42);
   return o;
 }
 
-checkUnnamed2743(core.List<core.int> o) {
+checkUnnamed2758(core.List<core.int> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42));
   unittest.expect(o[1], unittest.equals(42));
 }
 
-buildUnnamed2744() {
+buildUnnamed2759() {
   var o = new core.List<core.double>();
   o.add(42.0);
   o.add(42.0);
   return o;
 }
 
-checkUnnamed2744(core.List<core.double> o) {
+checkUnnamed2759(core.List<core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42.0));
   unittest.expect(o[1], unittest.equals(42.0));
 }
 
-buildUnnamed2745() {
+buildUnnamed2760() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -3085,7 +3085,7 @@
   return o;
 }
 
-checkUnnamed2745(core.List<core.Object> o) {
+checkUnnamed2760(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted25 = (o[0]) as core.Map;
   unittest.expect(casted25, unittest.hasLength(3));
@@ -3099,17 +3099,17 @@
   unittest.expect(casted26["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2746() {
+buildUnnamed2761() {
   var o = new core.Map<core.String, core.List<core.Object>>();
-  o["x"] = buildUnnamed2745();
-  o["y"] = buildUnnamed2745();
+  o["x"] = buildUnnamed2760();
+  o["y"] = buildUnnamed2760();
   return o;
 }
 
-checkUnnamed2746(core.Map<core.String, core.List<core.Object>> o) {
+checkUnnamed2761(core.Map<core.String, core.List<core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2745(o["x"]);
-  checkUnnamed2745(o["y"]);
+  checkUnnamed2760(o["x"]);
+  checkUnnamed2760(o["y"]);
 }
 
 core.int buildCounterVariantCall = 0;
@@ -3119,9 +3119,9 @@
   if (buildCounterVariantCall < 3) {
     o.callSetId = "foo";
     o.callSetName = "foo";
-    o.genotype = buildUnnamed2743();
-    o.genotypeLikelihood = buildUnnamed2744();
-    o.info = buildUnnamed2746();
+    o.genotype = buildUnnamed2758();
+    o.genotypeLikelihood = buildUnnamed2759();
+    o.info = buildUnnamed2761();
     o.phaseset = "foo";
   }
   buildCounterVariantCall--;
@@ -3133,35 +3133,35 @@
   if (buildCounterVariantCall < 3) {
     unittest.expect(o.callSetId, unittest.equals('foo'));
     unittest.expect(o.callSetName, unittest.equals('foo'));
-    checkUnnamed2743(o.genotype);
-    checkUnnamed2744(o.genotypeLikelihood);
-    checkUnnamed2746(o.info);
+    checkUnnamed2758(o.genotype);
+    checkUnnamed2759(o.genotypeLikelihood);
+    checkUnnamed2761(o.info);
     unittest.expect(o.phaseset, unittest.equals('foo'));
   }
   buildCounterVariantCall--;
 }
 
-buildUnnamed2747() {
+buildUnnamed2762() {
   var o = new core.List<api.VariantSetMetadata>();
   o.add(buildVariantSetMetadata());
   o.add(buildVariantSetMetadata());
   return o;
 }
 
-checkUnnamed2747(core.List<api.VariantSetMetadata> o) {
+checkUnnamed2762(core.List<api.VariantSetMetadata> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVariantSetMetadata(o[0]);
   checkVariantSetMetadata(o[1]);
 }
 
-buildUnnamed2748() {
+buildUnnamed2763() {
   var o = new core.List<api.ReferenceBound>();
   o.add(buildReferenceBound());
   o.add(buildReferenceBound());
   return o;
 }
 
-checkUnnamed2748(core.List<api.ReferenceBound> o) {
+checkUnnamed2763(core.List<api.ReferenceBound> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReferenceBound(o[0]);
   checkReferenceBound(o[1]);
@@ -3175,9 +3175,9 @@
     o.datasetId = "foo";
     o.description = "foo";
     o.id = "foo";
-    o.metadata = buildUnnamed2747();
+    o.metadata = buildUnnamed2762();
     o.name = "foo";
-    o.referenceBounds = buildUnnamed2748();
+    o.referenceBounds = buildUnnamed2763();
     o.referenceSetId = "foo";
   }
   buildCounterVariantSet--;
@@ -3190,15 +3190,15 @@
     unittest.expect(o.datasetId, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2747(o.metadata);
+    checkUnnamed2762(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2748(o.referenceBounds);
+    checkUnnamed2763(o.referenceBounds);
     unittest.expect(o.referenceSetId, unittest.equals('foo'));
   }
   buildCounterVariantSet--;
 }
 
-buildUnnamed2749() {
+buildUnnamed2764() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -3213,7 +3213,7 @@
   return o;
 }
 
-checkUnnamed2749(core.List<core.Object> o) {
+checkUnnamed2764(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted27 = (o[0]) as core.Map;
   unittest.expect(casted27, unittest.hasLength(3));
@@ -3227,17 +3227,17 @@
   unittest.expect(casted28["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2750() {
+buildUnnamed2765() {
   var o = new core.Map<core.String, core.List<core.Object>>();
-  o["x"] = buildUnnamed2749();
-  o["y"] = buildUnnamed2749();
+  o["x"] = buildUnnamed2764();
+  o["y"] = buildUnnamed2764();
   return o;
 }
 
-checkUnnamed2750(core.Map<core.String, core.List<core.Object>> o) {
+checkUnnamed2765(core.Map<core.String, core.List<core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2749(o["x"]);
-  checkUnnamed2749(o["y"]);
+  checkUnnamed2764(o["x"]);
+  checkUnnamed2764(o["y"]);
 }
 
 core.int buildCounterVariantSetMetadata = 0;
@@ -3247,7 +3247,7 @@
   if (buildCounterVariantSetMetadata < 3) {
     o.description = "foo";
     o.id = "foo";
-    o.info = buildUnnamed2750();
+    o.info = buildUnnamed2765();
     o.key = "foo";
     o.number = "foo";
     o.type = "foo";
@@ -3262,7 +3262,7 @@
   if (buildCounterVariantSetMetadata < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed2750(o.info);
+    checkUnnamed2765(o.info);
     unittest.expect(o.key, unittest.equals('foo'));
     unittest.expect(o.number, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
@@ -3869,6 +3869,7 @@
       var mock = new HttpServerMock();
       api.AnnotationsResourceApi res = new api.GenomicsApi(mock).annotations;
       var arg_request = buildBatchCreateAnnotationsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BatchCreateAnnotationsRequest.fromJson(json);
         checkBatchCreateAnnotationsRequest(obj);
@@ -3902,6 +3903,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3909,7 +3911,7 @@
         var resp = convert.JSON.encode(buildBatchCreateAnnotationsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.batchCreate(arg_request).then(
+      res.batchCreate(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.BatchCreateAnnotationsResponse response) {
         checkBatchCreateAnnotationsResponse(response);
       })));
@@ -3919,6 +3921,7 @@
       var mock = new HttpServerMock();
       api.AnnotationsResourceApi res = new api.GenomicsApi(mock).annotations;
       var arg_request = buildAnnotation();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Annotation.fromJson(json);
         checkAnnotation(obj);
@@ -3952,6 +3955,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3960,7 +3964,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request)
+          .create(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Annotation response) {
         checkAnnotation(response);
       })));
@@ -3970,6 +3974,7 @@
       var mock = new HttpServerMock();
       api.AnnotationsResourceApi res = new api.GenomicsApi(mock).annotations;
       var arg_annotationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4003,6 +4008,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4011,7 +4017,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_annotationId)
+          .delete(arg_annotationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -4021,6 +4027,7 @@
       var mock = new HttpServerMock();
       api.AnnotationsResourceApi res = new api.GenomicsApi(mock).annotations;
       var arg_annotationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4054,6 +4061,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4062,7 +4070,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_annotationId)
+          .get(arg_annotationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Annotation response) {
         checkAnnotation(response);
       })));
@@ -4072,6 +4080,7 @@
       var mock = new HttpServerMock();
       api.AnnotationsResourceApi res = new api.GenomicsApi(mock).annotations;
       var arg_request = buildSearchAnnotationsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SearchAnnotationsRequest.fromJson(json);
         checkSearchAnnotationsRequest(obj);
@@ -4105,6 +4114,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4112,7 +4122,7 @@
         var resp = convert.JSON.encode(buildSearchAnnotationsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.search(arg_request).then(
+      res.search(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.SearchAnnotationsResponse response) {
         checkSearchAnnotationsResponse(response);
       })));
@@ -4124,6 +4134,7 @@
       var arg_request = buildAnnotation();
       var arg_annotationId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Annotation.fromJson(json);
         checkAnnotation(obj);
@@ -4162,6 +4173,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4170,7 +4182,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_annotationId, updateMask: arg_updateMask)
+          .update(arg_request, arg_annotationId,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Annotation response) {
         checkAnnotation(response);
       })));
@@ -4183,6 +4196,7 @@
       api.AnnotationsetsResourceApi res =
           new api.GenomicsApi(mock).annotationsets;
       var arg_request = buildAnnotationSet();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnnotationSet.fromJson(json);
         checkAnnotationSet(obj);
@@ -4216,6 +4230,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4224,7 +4239,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request)
+          .create(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AnnotationSet response) {
         checkAnnotationSet(response);
       })));
@@ -4235,6 +4250,7 @@
       api.AnnotationsetsResourceApi res =
           new api.GenomicsApi(mock).annotationsets;
       var arg_annotationSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4268,6 +4284,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4276,7 +4293,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_annotationSetId)
+          .delete(arg_annotationSetId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -4287,6 +4304,7 @@
       api.AnnotationsetsResourceApi res =
           new api.GenomicsApi(mock).annotationsets;
       var arg_annotationSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4320,6 +4338,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4328,7 +4347,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_annotationSetId)
+          .get(arg_annotationSetId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AnnotationSet response) {
         checkAnnotationSet(response);
       })));
@@ -4339,6 +4358,7 @@
       api.AnnotationsetsResourceApi res =
           new api.GenomicsApi(mock).annotationsets;
       var arg_request = buildSearchAnnotationSetsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SearchAnnotationSetsRequest.fromJson(json);
         checkSearchAnnotationSetsRequest(obj);
@@ -4372,6 +4392,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4379,7 +4400,7 @@
         var resp = convert.JSON.encode(buildSearchAnnotationSetsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.search(arg_request).then(
+      res.search(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.SearchAnnotationSetsResponse response) {
         checkSearchAnnotationSetsResponse(response);
       })));
@@ -4392,6 +4413,7 @@
       var arg_request = buildAnnotationSet();
       var arg_annotationSetId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnnotationSet.fromJson(json);
         checkAnnotationSet(obj);
@@ -4430,6 +4452,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4438,7 +4461,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_annotationSetId, updateMask: arg_updateMask)
+          .update(arg_request, arg_annotationSetId,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AnnotationSet response) {
         checkAnnotationSet(response);
       })));
@@ -4450,6 +4474,7 @@
       var mock = new HttpServerMock();
       api.CallsetsResourceApi res = new api.GenomicsApi(mock).callsets;
       var arg_request = buildCallSet();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CallSet.fromJson(json);
         checkCallSet(obj);
@@ -4483,6 +4508,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4491,7 +4517,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request)
+          .create(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CallSet response) {
         checkCallSet(response);
       })));
@@ -4501,6 +4527,7 @@
       var mock = new HttpServerMock();
       api.CallsetsResourceApi res = new api.GenomicsApi(mock).callsets;
       var arg_callSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4534,6 +4561,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4542,7 +4570,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_callSetId)
+          .delete(arg_callSetId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -4552,6 +4580,7 @@
       var mock = new HttpServerMock();
       api.CallsetsResourceApi res = new api.GenomicsApi(mock).callsets;
       var arg_callSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4585,6 +4614,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4593,7 +4623,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_callSetId)
+          .get(arg_callSetId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CallSet response) {
         checkCallSet(response);
       })));
@@ -4605,6 +4635,7 @@
       var arg_request = buildCallSet();
       var arg_callSetId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CallSet.fromJson(json);
         checkCallSet(obj);
@@ -4643,6 +4674,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4651,7 +4683,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_callSetId, updateMask: arg_updateMask)
+          .patch(arg_request, arg_callSetId,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CallSet response) {
         checkCallSet(response);
       })));
@@ -4661,6 +4694,7 @@
       var mock = new HttpServerMock();
       api.CallsetsResourceApi res = new api.GenomicsApi(mock).callsets;
       var arg_request = buildSearchCallSetsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SearchCallSetsRequest.fromJson(json);
         checkSearchCallSetsRequest(obj);
@@ -4694,6 +4728,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4702,7 +4737,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .search(arg_request)
+          .search(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SearchCallSetsResponse response) {
         checkSearchCallSetsResponse(response);
       })));
@@ -4714,6 +4749,7 @@
       var mock = new HttpServerMock();
       api.DatasetsResourceApi res = new api.GenomicsApi(mock).datasets;
       var arg_request = buildDataset();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Dataset.fromJson(json);
         checkDataset(obj);
@@ -4747,6 +4783,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4755,7 +4792,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request)
+          .create(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Dataset response) {
         checkDataset(response);
       })));
@@ -4765,6 +4802,7 @@
       var mock = new HttpServerMock();
       api.DatasetsResourceApi res = new api.GenomicsApi(mock).datasets;
       var arg_datasetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4798,6 +4836,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4806,7 +4845,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_datasetId)
+          .delete(arg_datasetId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -4816,6 +4855,7 @@
       var mock = new HttpServerMock();
       api.DatasetsResourceApi res = new api.GenomicsApi(mock).datasets;
       var arg_datasetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4849,6 +4889,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4857,7 +4898,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_datasetId)
+          .get(arg_datasetId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Dataset response) {
         checkDataset(response);
       })));
@@ -4868,6 +4909,7 @@
       api.DatasetsResourceApi res = new api.GenomicsApi(mock).datasets;
       var arg_request = buildGetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetIamPolicyRequest.fromJson(json);
         checkGetIamPolicyRequest(obj);
@@ -4902,6 +4944,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4910,7 +4953,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_request, arg_resource)
+          .getIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -4919,9 +4962,10 @@
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
       api.DatasetsResourceApi res = new api.GenomicsApi(mock).datasets;
+      var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_projectId = "foo";
-      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4952,12 +4996,13 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4967,9 +5012,10 @@
       }), true);
       res
           .list(
+              pageToken: arg_pageToken,
               pageSize: arg_pageSize,
               projectId: arg_projectId,
-              pageToken: arg_pageToken)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListDatasetsResponse response) {
         checkListDatasetsResponse(response);
       })));
@@ -4981,6 +5027,7 @@
       var arg_request = buildDataset();
       var arg_datasetId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Dataset.fromJson(json);
         checkDataset(obj);
@@ -5019,6 +5066,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5027,7 +5075,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_datasetId, updateMask: arg_updateMask)
+          .patch(arg_request, arg_datasetId,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Dataset response) {
         checkDataset(response);
       })));
@@ -5038,6 +5087,7 @@
       api.DatasetsResourceApi res = new api.GenomicsApi(mock).datasets;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -5072,6 +5122,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5080,7 +5131,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -5091,6 +5142,7 @@
       api.DatasetsResourceApi res = new api.GenomicsApi(mock).datasets;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -5125,6 +5177,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5132,8 +5185,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -5143,6 +5198,7 @@
       api.DatasetsResourceApi res = new api.GenomicsApi(mock).datasets;
       var arg_request = buildUndeleteDatasetRequest();
       var arg_datasetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UndeleteDatasetRequest.fromJson(json);
         checkUndeleteDatasetRequest(obj);
@@ -5185,6 +5241,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5193,7 +5250,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .undelete(arg_request, arg_datasetId)
+          .undelete(arg_request, arg_datasetId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Dataset response) {
         checkDataset(response);
       })));
@@ -5206,6 +5263,7 @@
       api.OperationsResourceApi res = new api.GenomicsApi(mock).operations;
       var arg_request = buildCancelOperationRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CancelOperationRequest.fromJson(json);
         checkCancelOperationRequest(obj);
@@ -5240,6 +5298,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5248,7 +5307,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .cancel(arg_request, arg_name)
+          .cancel(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -5258,6 +5317,7 @@
       var mock = new HttpServerMock();
       api.OperationsResourceApi res = new api.GenomicsApi(mock).operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5289,6 +5349,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5296,7 +5357,9 @@
         var resp = convert.JSON.encode(buildOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Operation response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
     });
@@ -5308,6 +5371,7 @@
       var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5344,6 +5408,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5355,7 +5420,8 @@
           .list(arg_name,
               filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
@@ -5368,6 +5434,7 @@
       api.ReadgroupsetsResourceApi res =
           new api.GenomicsApi(mock).readgroupsets;
       var arg_readGroupSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5401,6 +5468,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5409,7 +5477,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_readGroupSetId)
+          .delete(arg_readGroupSetId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -5421,6 +5489,7 @@
           new api.GenomicsApi(mock).readgroupsets;
       var arg_request = buildExportReadGroupSetRequest();
       var arg_readGroupSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ExportReadGroupSetRequest.fromJson(json);
         checkExportReadGroupSetRequest(obj);
@@ -5463,6 +5532,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5471,7 +5541,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .export(arg_request, arg_readGroupSetId)
+          .export(arg_request, arg_readGroupSetId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -5482,6 +5552,7 @@
       api.ReadgroupsetsResourceApi res =
           new api.GenomicsApi(mock).readgroupsets;
       var arg_readGroupSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5515,6 +5586,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5523,7 +5595,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_readGroupSetId)
+          .get(arg_readGroupSetId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ReadGroupSet response) {
         checkReadGroupSet(response);
       })));
@@ -5534,6 +5606,7 @@
       api.ReadgroupsetsResourceApi res =
           new api.GenomicsApi(mock).readgroupsets;
       var arg_request = buildImportReadGroupSetsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ImportReadGroupSetsRequest.fromJson(json);
         checkImportReadGroupSetsRequest(obj);
@@ -5567,6 +5640,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5575,7 +5649,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .import(arg_request)
+          .import(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -5588,6 +5662,7 @@
       var arg_request = buildReadGroupSet();
       var arg_readGroupSetId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ReadGroupSet.fromJson(json);
         checkReadGroupSet(obj);
@@ -5626,6 +5701,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5634,7 +5710,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_readGroupSetId, updateMask: arg_updateMask)
+          .patch(arg_request, arg_readGroupSetId,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ReadGroupSet response) {
         checkReadGroupSet(response);
       })));
@@ -5645,6 +5722,7 @@
       api.ReadgroupsetsResourceApi res =
           new api.GenomicsApi(mock).readgroupsets;
       var arg_request = buildSearchReadGroupSetsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SearchReadGroupSetsRequest.fromJson(json);
         checkSearchReadGroupSetsRequest(obj);
@@ -5678,6 +5756,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5685,7 +5764,7 @@
         var resp = convert.JSON.encode(buildSearchReadGroupSetsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.search(arg_request).then(
+      res.search(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.SearchReadGroupSetsResponse response) {
         checkSearchReadGroupSetsResponse(response);
       })));
@@ -5704,6 +5783,7 @@
       var arg_start = "foo";
       var arg_targetBucketWidth = "foo";
       var arg_referenceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5753,6 +5833,7 @@
             unittest.equals(arg_targetBucketWidth));
         unittest.expect(queryMap["referenceName"].first,
             unittest.equals(arg_referenceName));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5767,7 +5848,8 @@
               pageSize: arg_pageSize,
               start: arg_start,
               targetBucketWidth: arg_targetBucketWidth,
-              referenceName: arg_referenceName)
+              referenceName: arg_referenceName,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListCoverageBucketsResponse response) {
         checkListCoverageBucketsResponse(response);
@@ -5780,6 +5862,7 @@
       var mock = new HttpServerMock();
       api.ReadsResourceApi res = new api.GenomicsApi(mock).reads;
       var arg_request = buildSearchReadsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SearchReadsRequest.fromJson(json);
         checkSearchReadsRequest(obj);
@@ -5813,6 +5896,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5821,7 +5905,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .search(arg_request)
+          .search(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SearchReadsResponse response) {
         checkSearchReadsResponse(response);
       })));
@@ -5833,6 +5917,7 @@
       var mock = new HttpServerMock();
       api.ReferencesResourceApi res = new api.GenomicsApi(mock).references;
       var arg_referenceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5866,6 +5951,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5874,7 +5960,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_referenceId)
+          .get(arg_referenceId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Reference response) {
         checkReference(response);
       })));
@@ -5884,6 +5970,7 @@
       var mock = new HttpServerMock();
       api.ReferencesResourceApi res = new api.GenomicsApi(mock).references;
       var arg_request = buildSearchReferencesRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SearchReferencesRequest.fromJson(json);
         checkSearchReferencesRequest(obj);
@@ -5917,6 +6004,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5925,7 +6013,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .search(arg_request)
+          .search(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SearchReferencesResponse response) {
         checkSearchReferencesResponse(response);
       })));
@@ -5938,10 +6026,11 @@
       api.ReferencesBasesResourceApi res =
           new api.GenomicsApi(mock).references.bases;
       var arg_referenceId = "foo";
+      var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_start = "foo";
       var arg_end = "foo";
-      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5981,12 +6070,13 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["start"].first, unittest.equals(arg_start));
         unittest.expect(queryMap["end"].first, unittest.equals(arg_end));
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5996,10 +6086,11 @@
       }), true);
       res
           .list(arg_referenceId,
+              pageToken: arg_pageToken,
               pageSize: arg_pageSize,
               start: arg_start,
               end: arg_end,
-              pageToken: arg_pageToken)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListBasesResponse response) {
         checkListBasesResponse(response);
       })));
@@ -6012,6 +6103,7 @@
       api.ReferencesetsResourceApi res =
           new api.GenomicsApi(mock).referencesets;
       var arg_referenceSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6045,6 +6137,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6053,7 +6146,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_referenceSetId)
+          .get(arg_referenceSetId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ReferenceSet response) {
         checkReferenceSet(response);
       })));
@@ -6064,6 +6157,7 @@
       api.ReferencesetsResourceApi res =
           new api.GenomicsApi(mock).referencesets;
       var arg_request = buildSearchReferenceSetsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SearchReferenceSetsRequest.fromJson(json);
         checkSearchReferenceSetsRequest(obj);
@@ -6097,6 +6191,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6104,7 +6199,7 @@
         var resp = convert.JSON.encode(buildSearchReferenceSetsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.search(arg_request).then(
+      res.search(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.SearchReferenceSetsResponse response) {
         checkSearchReferenceSetsResponse(response);
       })));
@@ -6116,6 +6211,7 @@
       var mock = new HttpServerMock();
       api.VariantsResourceApi res = new api.GenomicsApi(mock).variants;
       var arg_request = buildVariant();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Variant.fromJson(json);
         checkVariant(obj);
@@ -6149,6 +6245,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6157,7 +6254,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request)
+          .create(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Variant response) {
         checkVariant(response);
       })));
@@ -6167,6 +6264,7 @@
       var mock = new HttpServerMock();
       api.VariantsResourceApi res = new api.GenomicsApi(mock).variants;
       var arg_variantId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6200,6 +6298,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6208,7 +6307,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_variantId)
+          .delete(arg_variantId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -6218,6 +6317,7 @@
       var mock = new HttpServerMock();
       api.VariantsResourceApi res = new api.GenomicsApi(mock).variants;
       var arg_variantId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6251,6 +6351,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6259,7 +6360,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_variantId)
+          .get(arg_variantId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Variant response) {
         checkVariant(response);
       })));
@@ -6269,6 +6370,7 @@
       var mock = new HttpServerMock();
       api.VariantsResourceApi res = new api.GenomicsApi(mock).variants;
       var arg_request = buildImportVariantsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ImportVariantsRequest.fromJson(json);
         checkImportVariantsRequest(obj);
@@ -6302,6 +6404,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6310,7 +6413,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .import(arg_request)
+          .import(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -6320,6 +6423,7 @@
       var mock = new HttpServerMock();
       api.VariantsResourceApi res = new api.GenomicsApi(mock).variants;
       var arg_request = buildMergeVariantsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.MergeVariantsRequest.fromJson(json);
         checkMergeVariantsRequest(obj);
@@ -6353,6 +6457,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6360,7 +6465,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.merge(arg_request).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .merge(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -6371,6 +6478,7 @@
       var arg_request = buildVariant();
       var arg_variantId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Variant.fromJson(json);
         checkVariant(obj);
@@ -6409,6 +6517,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6417,7 +6526,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_variantId, updateMask: arg_updateMask)
+          .patch(arg_request, arg_variantId,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Variant response) {
         checkVariant(response);
       })));
@@ -6427,6 +6537,7 @@
       var mock = new HttpServerMock();
       api.VariantsResourceApi res = new api.GenomicsApi(mock).variants;
       var arg_request = buildSearchVariantsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SearchVariantsRequest.fromJson(json);
         checkSearchVariantsRequest(obj);
@@ -6460,6 +6571,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6468,7 +6580,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .search(arg_request)
+          .search(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SearchVariantsResponse response) {
         checkSearchVariantsResponse(response);
       })));
@@ -6480,6 +6592,7 @@
       var mock = new HttpServerMock();
       api.VariantsetsResourceApi res = new api.GenomicsApi(mock).variantsets;
       var arg_request = buildVariantSet();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.VariantSet.fromJson(json);
         checkVariantSet(obj);
@@ -6513,6 +6626,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6521,7 +6635,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request)
+          .create(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.VariantSet response) {
         checkVariantSet(response);
       })));
@@ -6531,6 +6645,7 @@
       var mock = new HttpServerMock();
       api.VariantsetsResourceApi res = new api.GenomicsApi(mock).variantsets;
       var arg_variantSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6564,6 +6679,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6572,7 +6688,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_variantSetId)
+          .delete(arg_variantSetId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -6583,6 +6699,7 @@
       api.VariantsetsResourceApi res = new api.GenomicsApi(mock).variantsets;
       var arg_request = buildExportVariantSetRequest();
       var arg_variantSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ExportVariantSetRequest.fromJson(json);
         checkExportVariantSetRequest(obj);
@@ -6625,6 +6742,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6633,7 +6751,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .export(arg_request, arg_variantSetId)
+          .export(arg_request, arg_variantSetId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -6643,6 +6761,7 @@
       var mock = new HttpServerMock();
       api.VariantsetsResourceApi res = new api.GenomicsApi(mock).variantsets;
       var arg_variantSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6676,6 +6795,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6684,7 +6804,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_variantSetId)
+          .get(arg_variantSetId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.VariantSet response) {
         checkVariantSet(response);
       })));
@@ -6696,6 +6816,7 @@
       var arg_request = buildVariantSet();
       var arg_variantSetId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.VariantSet.fromJson(json);
         checkVariantSet(obj);
@@ -6734,6 +6855,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6742,7 +6864,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_variantSetId, updateMask: arg_updateMask)
+          .patch(arg_request, arg_variantSetId,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.VariantSet response) {
         checkVariantSet(response);
       })));
@@ -6752,6 +6875,7 @@
       var mock = new HttpServerMock();
       api.VariantsetsResourceApi res = new api.GenomicsApi(mock).variantsets;
       var arg_request = buildSearchVariantSetsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SearchVariantSetsRequest.fromJson(json);
         checkSearchVariantSetsRequest(obj);
@@ -6785,6 +6909,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6792,7 +6917,7 @@
         var resp = convert.JSON.encode(buildSearchVariantSetsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.search(arg_request).then(
+      res.search(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.SearchVariantSetsResponse response) {
         checkSearchVariantSetsResponse(response);
       })));
diff --git a/generated/googleapis/test/gmail/v1_test.dart b/generated/googleapis/test/gmail/v1_test.dart
new file mode 100644
index 0000000..06a6feb
--- /dev/null
+++ b/generated/googleapis/test/gmail/v1_test.dart
@@ -0,0 +1,4971 @@
+library googleapis.gmail.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/gmail/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAutoForwarding = 0;
+buildAutoForwarding() {
+  var o = new api.AutoForwarding();
+  buildCounterAutoForwarding++;
+  if (buildCounterAutoForwarding < 3) {
+    o.disposition = "foo";
+    o.emailAddress = "foo";
+    o.enabled = true;
+  }
+  buildCounterAutoForwarding--;
+  return o;
+}
+
+checkAutoForwarding(api.AutoForwarding o) {
+  buildCounterAutoForwarding++;
+  if (buildCounterAutoForwarding < 3) {
+    unittest.expect(o.disposition, unittest.equals('foo'));
+    unittest.expect(o.emailAddress, unittest.equals('foo'));
+    unittest.expect(o.enabled, unittest.isTrue);
+  }
+  buildCounterAutoForwarding--;
+}
+
+buildUnnamed153() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed153(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBatchDeleteMessagesRequest = 0;
+buildBatchDeleteMessagesRequest() {
+  var o = new api.BatchDeleteMessagesRequest();
+  buildCounterBatchDeleteMessagesRequest++;
+  if (buildCounterBatchDeleteMessagesRequest < 3) {
+    o.ids = buildUnnamed153();
+  }
+  buildCounterBatchDeleteMessagesRequest--;
+  return o;
+}
+
+checkBatchDeleteMessagesRequest(api.BatchDeleteMessagesRequest o) {
+  buildCounterBatchDeleteMessagesRequest++;
+  if (buildCounterBatchDeleteMessagesRequest < 3) {
+    checkUnnamed153(o.ids);
+  }
+  buildCounterBatchDeleteMessagesRequest--;
+}
+
+buildUnnamed154() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed154(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed155() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed155(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed156() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed156(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBatchModifyMessagesRequest = 0;
+buildBatchModifyMessagesRequest() {
+  var o = new api.BatchModifyMessagesRequest();
+  buildCounterBatchModifyMessagesRequest++;
+  if (buildCounterBatchModifyMessagesRequest < 3) {
+    o.addLabelIds = buildUnnamed154();
+    o.ids = buildUnnamed155();
+    o.removeLabelIds = buildUnnamed156();
+  }
+  buildCounterBatchModifyMessagesRequest--;
+  return o;
+}
+
+checkBatchModifyMessagesRequest(api.BatchModifyMessagesRequest o) {
+  buildCounterBatchModifyMessagesRequest++;
+  if (buildCounterBatchModifyMessagesRequest < 3) {
+    checkUnnamed154(o.addLabelIds);
+    checkUnnamed155(o.ids);
+    checkUnnamed156(o.removeLabelIds);
+  }
+  buildCounterBatchModifyMessagesRequest--;
+}
+
+core.int buildCounterDraft = 0;
+buildDraft() {
+  var o = new api.Draft();
+  buildCounterDraft++;
+  if (buildCounterDraft < 3) {
+    o.id = "foo";
+    o.message = buildMessage();
+  }
+  buildCounterDraft--;
+  return o;
+}
+
+checkDraft(api.Draft o) {
+  buildCounterDraft++;
+  if (buildCounterDraft < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkMessage(o.message);
+  }
+  buildCounterDraft--;
+}
+
+core.int buildCounterFilter = 0;
+buildFilter() {
+  var o = new api.Filter();
+  buildCounterFilter++;
+  if (buildCounterFilter < 3) {
+    o.action = buildFilterAction();
+    o.criteria = buildFilterCriteria();
+    o.id = "foo";
+  }
+  buildCounterFilter--;
+  return o;
+}
+
+checkFilter(api.Filter o) {
+  buildCounterFilter++;
+  if (buildCounterFilter < 3) {
+    checkFilterAction(o.action);
+    checkFilterCriteria(o.criteria);
+    unittest.expect(o.id, unittest.equals('foo'));
+  }
+  buildCounterFilter--;
+}
+
+buildUnnamed157() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed157(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed158() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed158(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterFilterAction = 0;
+buildFilterAction() {
+  var o = new api.FilterAction();
+  buildCounterFilterAction++;
+  if (buildCounterFilterAction < 3) {
+    o.addLabelIds = buildUnnamed157();
+    o.forward = "foo";
+    o.removeLabelIds = buildUnnamed158();
+  }
+  buildCounterFilterAction--;
+  return o;
+}
+
+checkFilterAction(api.FilterAction o) {
+  buildCounterFilterAction++;
+  if (buildCounterFilterAction < 3) {
+    checkUnnamed157(o.addLabelIds);
+    unittest.expect(o.forward, unittest.equals('foo'));
+    checkUnnamed158(o.removeLabelIds);
+  }
+  buildCounterFilterAction--;
+}
+
+core.int buildCounterFilterCriteria = 0;
+buildFilterCriteria() {
+  var o = new api.FilterCriteria();
+  buildCounterFilterCriteria++;
+  if (buildCounterFilterCriteria < 3) {
+    o.excludeChats = true;
+    o.from = "foo";
+    o.hasAttachment = true;
+    o.negatedQuery = "foo";
+    o.query = "foo";
+    o.size = 42;
+    o.sizeComparison = "foo";
+    o.subject = "foo";
+    o.to = "foo";
+  }
+  buildCounterFilterCriteria--;
+  return o;
+}
+
+checkFilterCriteria(api.FilterCriteria o) {
+  buildCounterFilterCriteria++;
+  if (buildCounterFilterCriteria < 3) {
+    unittest.expect(o.excludeChats, unittest.isTrue);
+    unittest.expect(o.from, unittest.equals('foo'));
+    unittest.expect(o.hasAttachment, unittest.isTrue);
+    unittest.expect(o.negatedQuery, unittest.equals('foo'));
+    unittest.expect(o.query, unittest.equals('foo'));
+    unittest.expect(o.size, unittest.equals(42));
+    unittest.expect(o.sizeComparison, unittest.equals('foo'));
+    unittest.expect(o.subject, unittest.equals('foo'));
+    unittest.expect(o.to, unittest.equals('foo'));
+  }
+  buildCounterFilterCriteria--;
+}
+
+core.int buildCounterForwardingAddress = 0;
+buildForwardingAddress() {
+  var o = new api.ForwardingAddress();
+  buildCounterForwardingAddress++;
+  if (buildCounterForwardingAddress < 3) {
+    o.forwardingEmail = "foo";
+    o.verificationStatus = "foo";
+  }
+  buildCounterForwardingAddress--;
+  return o;
+}
+
+checkForwardingAddress(api.ForwardingAddress o) {
+  buildCounterForwardingAddress++;
+  if (buildCounterForwardingAddress < 3) {
+    unittest.expect(o.forwardingEmail, unittest.equals('foo'));
+    unittest.expect(o.verificationStatus, unittest.equals('foo'));
+  }
+  buildCounterForwardingAddress--;
+}
+
+buildUnnamed159() {
+  var o = new core.List<api.HistoryLabelAdded>();
+  o.add(buildHistoryLabelAdded());
+  o.add(buildHistoryLabelAdded());
+  return o;
+}
+
+checkUnnamed159(core.List<api.HistoryLabelAdded> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkHistoryLabelAdded(o[0]);
+  checkHistoryLabelAdded(o[1]);
+}
+
+buildUnnamed160() {
+  var o = new core.List<api.HistoryLabelRemoved>();
+  o.add(buildHistoryLabelRemoved());
+  o.add(buildHistoryLabelRemoved());
+  return o;
+}
+
+checkUnnamed160(core.List<api.HistoryLabelRemoved> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkHistoryLabelRemoved(o[0]);
+  checkHistoryLabelRemoved(o[1]);
+}
+
+buildUnnamed161() {
+  var o = new core.List<api.Message>();
+  o.add(buildMessage());
+  o.add(buildMessage());
+  return o;
+}
+
+checkUnnamed161(core.List<api.Message> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMessage(o[0]);
+  checkMessage(o[1]);
+}
+
+buildUnnamed162() {
+  var o = new core.List<api.HistoryMessageAdded>();
+  o.add(buildHistoryMessageAdded());
+  o.add(buildHistoryMessageAdded());
+  return o;
+}
+
+checkUnnamed162(core.List<api.HistoryMessageAdded> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkHistoryMessageAdded(o[0]);
+  checkHistoryMessageAdded(o[1]);
+}
+
+buildUnnamed163() {
+  var o = new core.List<api.HistoryMessageDeleted>();
+  o.add(buildHistoryMessageDeleted());
+  o.add(buildHistoryMessageDeleted());
+  return o;
+}
+
+checkUnnamed163(core.List<api.HistoryMessageDeleted> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkHistoryMessageDeleted(o[0]);
+  checkHistoryMessageDeleted(o[1]);
+}
+
+core.int buildCounterHistory = 0;
+buildHistory() {
+  var o = new api.History();
+  buildCounterHistory++;
+  if (buildCounterHistory < 3) {
+    o.id = "foo";
+    o.labelsAdded = buildUnnamed159();
+    o.labelsRemoved = buildUnnamed160();
+    o.messages = buildUnnamed161();
+    o.messagesAdded = buildUnnamed162();
+    o.messagesDeleted = buildUnnamed163();
+  }
+  buildCounterHistory--;
+  return o;
+}
+
+checkHistory(api.History o) {
+  buildCounterHistory++;
+  if (buildCounterHistory < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed159(o.labelsAdded);
+    checkUnnamed160(o.labelsRemoved);
+    checkUnnamed161(o.messages);
+    checkUnnamed162(o.messagesAdded);
+    checkUnnamed163(o.messagesDeleted);
+  }
+  buildCounterHistory--;
+}
+
+buildUnnamed164() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed164(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterHistoryLabelAdded = 0;
+buildHistoryLabelAdded() {
+  var o = new api.HistoryLabelAdded();
+  buildCounterHistoryLabelAdded++;
+  if (buildCounterHistoryLabelAdded < 3) {
+    o.labelIds = buildUnnamed164();
+    o.message = buildMessage();
+  }
+  buildCounterHistoryLabelAdded--;
+  return o;
+}
+
+checkHistoryLabelAdded(api.HistoryLabelAdded o) {
+  buildCounterHistoryLabelAdded++;
+  if (buildCounterHistoryLabelAdded < 3) {
+    checkUnnamed164(o.labelIds);
+    checkMessage(o.message);
+  }
+  buildCounterHistoryLabelAdded--;
+}
+
+buildUnnamed165() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed165(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterHistoryLabelRemoved = 0;
+buildHistoryLabelRemoved() {
+  var o = new api.HistoryLabelRemoved();
+  buildCounterHistoryLabelRemoved++;
+  if (buildCounterHistoryLabelRemoved < 3) {
+    o.labelIds = buildUnnamed165();
+    o.message = buildMessage();
+  }
+  buildCounterHistoryLabelRemoved--;
+  return o;
+}
+
+checkHistoryLabelRemoved(api.HistoryLabelRemoved o) {
+  buildCounterHistoryLabelRemoved++;
+  if (buildCounterHistoryLabelRemoved < 3) {
+    checkUnnamed165(o.labelIds);
+    checkMessage(o.message);
+  }
+  buildCounterHistoryLabelRemoved--;
+}
+
+core.int buildCounterHistoryMessageAdded = 0;
+buildHistoryMessageAdded() {
+  var o = new api.HistoryMessageAdded();
+  buildCounterHistoryMessageAdded++;
+  if (buildCounterHistoryMessageAdded < 3) {
+    o.message = buildMessage();
+  }
+  buildCounterHistoryMessageAdded--;
+  return o;
+}
+
+checkHistoryMessageAdded(api.HistoryMessageAdded o) {
+  buildCounterHistoryMessageAdded++;
+  if (buildCounterHistoryMessageAdded < 3) {
+    checkMessage(o.message);
+  }
+  buildCounterHistoryMessageAdded--;
+}
+
+core.int buildCounterHistoryMessageDeleted = 0;
+buildHistoryMessageDeleted() {
+  var o = new api.HistoryMessageDeleted();
+  buildCounterHistoryMessageDeleted++;
+  if (buildCounterHistoryMessageDeleted < 3) {
+    o.message = buildMessage();
+  }
+  buildCounterHistoryMessageDeleted--;
+  return o;
+}
+
+checkHistoryMessageDeleted(api.HistoryMessageDeleted o) {
+  buildCounterHistoryMessageDeleted++;
+  if (buildCounterHistoryMessageDeleted < 3) {
+    checkMessage(o.message);
+  }
+  buildCounterHistoryMessageDeleted--;
+}
+
+core.int buildCounterImapSettings = 0;
+buildImapSettings() {
+  var o = new api.ImapSettings();
+  buildCounterImapSettings++;
+  if (buildCounterImapSettings < 3) {
+    o.autoExpunge = true;
+    o.enabled = true;
+    o.expungeBehavior = "foo";
+    o.maxFolderSize = 42;
+  }
+  buildCounterImapSettings--;
+  return o;
+}
+
+checkImapSettings(api.ImapSettings o) {
+  buildCounterImapSettings++;
+  if (buildCounterImapSettings < 3) {
+    unittest.expect(o.autoExpunge, unittest.isTrue);
+    unittest.expect(o.enabled, unittest.isTrue);
+    unittest.expect(o.expungeBehavior, unittest.equals('foo'));
+    unittest.expect(o.maxFolderSize, unittest.equals(42));
+  }
+  buildCounterImapSettings--;
+}
+
+core.int buildCounterLabel = 0;
+buildLabel() {
+  var o = new api.Label();
+  buildCounterLabel++;
+  if (buildCounterLabel < 3) {
+    o.id = "foo";
+    o.labelListVisibility = "foo";
+    o.messageListVisibility = "foo";
+    o.messagesTotal = 42;
+    o.messagesUnread = 42;
+    o.name = "foo";
+    o.threadsTotal = 42;
+    o.threadsUnread = 42;
+    o.type = "foo";
+  }
+  buildCounterLabel--;
+  return o;
+}
+
+checkLabel(api.Label o) {
+  buildCounterLabel++;
+  if (buildCounterLabel < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.labelListVisibility, unittest.equals('foo'));
+    unittest.expect(o.messageListVisibility, unittest.equals('foo'));
+    unittest.expect(o.messagesTotal, unittest.equals(42));
+    unittest.expect(o.messagesUnread, unittest.equals(42));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.threadsTotal, unittest.equals(42));
+    unittest.expect(o.threadsUnread, unittest.equals(42));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterLabel--;
+}
+
+buildUnnamed166() {
+  var o = new core.List<api.Draft>();
+  o.add(buildDraft());
+  o.add(buildDraft());
+  return o;
+}
+
+checkUnnamed166(core.List<api.Draft> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDraft(o[0]);
+  checkDraft(o[1]);
+}
+
+core.int buildCounterListDraftsResponse = 0;
+buildListDraftsResponse() {
+  var o = new api.ListDraftsResponse();
+  buildCounterListDraftsResponse++;
+  if (buildCounterListDraftsResponse < 3) {
+    o.drafts = buildUnnamed166();
+    o.nextPageToken = "foo";
+    o.resultSizeEstimate = 42;
+  }
+  buildCounterListDraftsResponse--;
+  return o;
+}
+
+checkListDraftsResponse(api.ListDraftsResponse o) {
+  buildCounterListDraftsResponse++;
+  if (buildCounterListDraftsResponse < 3) {
+    checkUnnamed166(o.drafts);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.resultSizeEstimate, unittest.equals(42));
+  }
+  buildCounterListDraftsResponse--;
+}
+
+buildUnnamed167() {
+  var o = new core.List<api.Filter>();
+  o.add(buildFilter());
+  o.add(buildFilter());
+  return o;
+}
+
+checkUnnamed167(core.List<api.Filter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFilter(o[0]);
+  checkFilter(o[1]);
+}
+
+core.int buildCounterListFiltersResponse = 0;
+buildListFiltersResponse() {
+  var o = new api.ListFiltersResponse();
+  buildCounterListFiltersResponse++;
+  if (buildCounterListFiltersResponse < 3) {
+    o.filter = buildUnnamed167();
+  }
+  buildCounterListFiltersResponse--;
+  return o;
+}
+
+checkListFiltersResponse(api.ListFiltersResponse o) {
+  buildCounterListFiltersResponse++;
+  if (buildCounterListFiltersResponse < 3) {
+    checkUnnamed167(o.filter);
+  }
+  buildCounterListFiltersResponse--;
+}
+
+buildUnnamed168() {
+  var o = new core.List<api.ForwardingAddress>();
+  o.add(buildForwardingAddress());
+  o.add(buildForwardingAddress());
+  return o;
+}
+
+checkUnnamed168(core.List<api.ForwardingAddress> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkForwardingAddress(o[0]);
+  checkForwardingAddress(o[1]);
+}
+
+core.int buildCounterListForwardingAddressesResponse = 0;
+buildListForwardingAddressesResponse() {
+  var o = new api.ListForwardingAddressesResponse();
+  buildCounterListForwardingAddressesResponse++;
+  if (buildCounterListForwardingAddressesResponse < 3) {
+    o.forwardingAddresses = buildUnnamed168();
+  }
+  buildCounterListForwardingAddressesResponse--;
+  return o;
+}
+
+checkListForwardingAddressesResponse(api.ListForwardingAddressesResponse o) {
+  buildCounterListForwardingAddressesResponse++;
+  if (buildCounterListForwardingAddressesResponse < 3) {
+    checkUnnamed168(o.forwardingAddresses);
+  }
+  buildCounterListForwardingAddressesResponse--;
+}
+
+buildUnnamed169() {
+  var o = new core.List<api.History>();
+  o.add(buildHistory());
+  o.add(buildHistory());
+  return o;
+}
+
+checkUnnamed169(core.List<api.History> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkHistory(o[0]);
+  checkHistory(o[1]);
+}
+
+core.int buildCounterListHistoryResponse = 0;
+buildListHistoryResponse() {
+  var o = new api.ListHistoryResponse();
+  buildCounterListHistoryResponse++;
+  if (buildCounterListHistoryResponse < 3) {
+    o.history = buildUnnamed169();
+    o.historyId = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterListHistoryResponse--;
+  return o;
+}
+
+checkListHistoryResponse(api.ListHistoryResponse o) {
+  buildCounterListHistoryResponse++;
+  if (buildCounterListHistoryResponse < 3) {
+    checkUnnamed169(o.history);
+    unittest.expect(o.historyId, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListHistoryResponse--;
+}
+
+buildUnnamed170() {
+  var o = new core.List<api.Label>();
+  o.add(buildLabel());
+  o.add(buildLabel());
+  return o;
+}
+
+checkUnnamed170(core.List<api.Label> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLabel(o[0]);
+  checkLabel(o[1]);
+}
+
+core.int buildCounterListLabelsResponse = 0;
+buildListLabelsResponse() {
+  var o = new api.ListLabelsResponse();
+  buildCounterListLabelsResponse++;
+  if (buildCounterListLabelsResponse < 3) {
+    o.labels = buildUnnamed170();
+  }
+  buildCounterListLabelsResponse--;
+  return o;
+}
+
+checkListLabelsResponse(api.ListLabelsResponse o) {
+  buildCounterListLabelsResponse++;
+  if (buildCounterListLabelsResponse < 3) {
+    checkUnnamed170(o.labels);
+  }
+  buildCounterListLabelsResponse--;
+}
+
+buildUnnamed171() {
+  var o = new core.List<api.Message>();
+  o.add(buildMessage());
+  o.add(buildMessage());
+  return o;
+}
+
+checkUnnamed171(core.List<api.Message> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMessage(o[0]);
+  checkMessage(o[1]);
+}
+
+core.int buildCounterListMessagesResponse = 0;
+buildListMessagesResponse() {
+  var o = new api.ListMessagesResponse();
+  buildCounterListMessagesResponse++;
+  if (buildCounterListMessagesResponse < 3) {
+    o.messages = buildUnnamed171();
+    o.nextPageToken = "foo";
+    o.resultSizeEstimate = 42;
+  }
+  buildCounterListMessagesResponse--;
+  return o;
+}
+
+checkListMessagesResponse(api.ListMessagesResponse o) {
+  buildCounterListMessagesResponse++;
+  if (buildCounterListMessagesResponse < 3) {
+    checkUnnamed171(o.messages);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.resultSizeEstimate, unittest.equals(42));
+  }
+  buildCounterListMessagesResponse--;
+}
+
+buildUnnamed172() {
+  var o = new core.List<api.SendAs>();
+  o.add(buildSendAs());
+  o.add(buildSendAs());
+  return o;
+}
+
+checkUnnamed172(core.List<api.SendAs> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSendAs(o[0]);
+  checkSendAs(o[1]);
+}
+
+core.int buildCounterListSendAsResponse = 0;
+buildListSendAsResponse() {
+  var o = new api.ListSendAsResponse();
+  buildCounterListSendAsResponse++;
+  if (buildCounterListSendAsResponse < 3) {
+    o.sendAs = buildUnnamed172();
+  }
+  buildCounterListSendAsResponse--;
+  return o;
+}
+
+checkListSendAsResponse(api.ListSendAsResponse o) {
+  buildCounterListSendAsResponse++;
+  if (buildCounterListSendAsResponse < 3) {
+    checkUnnamed172(o.sendAs);
+  }
+  buildCounterListSendAsResponse--;
+}
+
+buildUnnamed173() {
+  var o = new core.List<api.SmimeInfo>();
+  o.add(buildSmimeInfo());
+  o.add(buildSmimeInfo());
+  return o;
+}
+
+checkUnnamed173(core.List<api.SmimeInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSmimeInfo(o[0]);
+  checkSmimeInfo(o[1]);
+}
+
+core.int buildCounterListSmimeInfoResponse = 0;
+buildListSmimeInfoResponse() {
+  var o = new api.ListSmimeInfoResponse();
+  buildCounterListSmimeInfoResponse++;
+  if (buildCounterListSmimeInfoResponse < 3) {
+    o.smimeInfo = buildUnnamed173();
+  }
+  buildCounterListSmimeInfoResponse--;
+  return o;
+}
+
+checkListSmimeInfoResponse(api.ListSmimeInfoResponse o) {
+  buildCounterListSmimeInfoResponse++;
+  if (buildCounterListSmimeInfoResponse < 3) {
+    checkUnnamed173(o.smimeInfo);
+  }
+  buildCounterListSmimeInfoResponse--;
+}
+
+buildUnnamed174() {
+  var o = new core.List<api.Thread>();
+  o.add(buildThread());
+  o.add(buildThread());
+  return o;
+}
+
+checkUnnamed174(core.List<api.Thread> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkThread(o[0]);
+  checkThread(o[1]);
+}
+
+core.int buildCounterListThreadsResponse = 0;
+buildListThreadsResponse() {
+  var o = new api.ListThreadsResponse();
+  buildCounterListThreadsResponse++;
+  if (buildCounterListThreadsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.resultSizeEstimate = 42;
+    o.threads = buildUnnamed174();
+  }
+  buildCounterListThreadsResponse--;
+  return o;
+}
+
+checkListThreadsResponse(api.ListThreadsResponse o) {
+  buildCounterListThreadsResponse++;
+  if (buildCounterListThreadsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.resultSizeEstimate, unittest.equals(42));
+    checkUnnamed174(o.threads);
+  }
+  buildCounterListThreadsResponse--;
+}
+
+buildUnnamed175() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed175(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterMessage = 0;
+buildMessage() {
+  var o = new api.Message();
+  buildCounterMessage++;
+  if (buildCounterMessage < 3) {
+    o.historyId = "foo";
+    o.id = "foo";
+    o.internalDate = "foo";
+    o.labelIds = buildUnnamed175();
+    o.payload = buildMessagePart();
+    o.raw = "foo";
+    o.sizeEstimate = 42;
+    o.snippet = "foo";
+    o.threadId = "foo";
+  }
+  buildCounterMessage--;
+  return o;
+}
+
+checkMessage(api.Message o) {
+  buildCounterMessage++;
+  if (buildCounterMessage < 3) {
+    unittest.expect(o.historyId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.internalDate, unittest.equals('foo'));
+    checkUnnamed175(o.labelIds);
+    checkMessagePart(o.payload);
+    unittest.expect(o.raw, unittest.equals('foo'));
+    unittest.expect(o.sizeEstimate, unittest.equals(42));
+    unittest.expect(o.snippet, unittest.equals('foo'));
+    unittest.expect(o.threadId, unittest.equals('foo'));
+  }
+  buildCounterMessage--;
+}
+
+buildUnnamed176() {
+  var o = new core.List<api.MessagePartHeader>();
+  o.add(buildMessagePartHeader());
+  o.add(buildMessagePartHeader());
+  return o;
+}
+
+checkUnnamed176(core.List<api.MessagePartHeader> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMessagePartHeader(o[0]);
+  checkMessagePartHeader(o[1]);
+}
+
+buildUnnamed177() {
+  var o = new core.List<api.MessagePart>();
+  o.add(buildMessagePart());
+  o.add(buildMessagePart());
+  return o;
+}
+
+checkUnnamed177(core.List<api.MessagePart> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMessagePart(o[0]);
+  checkMessagePart(o[1]);
+}
+
+core.int buildCounterMessagePart = 0;
+buildMessagePart() {
+  var o = new api.MessagePart();
+  buildCounterMessagePart++;
+  if (buildCounterMessagePart < 3) {
+    o.body = buildMessagePartBody();
+    o.filename = "foo";
+    o.headers = buildUnnamed176();
+    o.mimeType = "foo";
+    o.partId = "foo";
+    o.parts = buildUnnamed177();
+  }
+  buildCounterMessagePart--;
+  return o;
+}
+
+checkMessagePart(api.MessagePart o) {
+  buildCounterMessagePart++;
+  if (buildCounterMessagePart < 3) {
+    checkMessagePartBody(o.body);
+    unittest.expect(o.filename, unittest.equals('foo'));
+    checkUnnamed176(o.headers);
+    unittest.expect(o.mimeType, unittest.equals('foo'));
+    unittest.expect(o.partId, unittest.equals('foo'));
+    checkUnnamed177(o.parts);
+  }
+  buildCounterMessagePart--;
+}
+
+core.int buildCounterMessagePartBody = 0;
+buildMessagePartBody() {
+  var o = new api.MessagePartBody();
+  buildCounterMessagePartBody++;
+  if (buildCounterMessagePartBody < 3) {
+    o.attachmentId = "foo";
+    o.data = "foo";
+    o.size = 42;
+  }
+  buildCounterMessagePartBody--;
+  return o;
+}
+
+checkMessagePartBody(api.MessagePartBody o) {
+  buildCounterMessagePartBody++;
+  if (buildCounterMessagePartBody < 3) {
+    unittest.expect(o.attachmentId, unittest.equals('foo'));
+    unittest.expect(o.data, unittest.equals('foo'));
+    unittest.expect(o.size, unittest.equals(42));
+  }
+  buildCounterMessagePartBody--;
+}
+
+core.int buildCounterMessagePartHeader = 0;
+buildMessagePartHeader() {
+  var o = new api.MessagePartHeader();
+  buildCounterMessagePartHeader++;
+  if (buildCounterMessagePartHeader < 3) {
+    o.name = "foo";
+    o.value = "foo";
+  }
+  buildCounterMessagePartHeader--;
+  return o;
+}
+
+checkMessagePartHeader(api.MessagePartHeader o) {
+  buildCounterMessagePartHeader++;
+  if (buildCounterMessagePartHeader < 3) {
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterMessagePartHeader--;
+}
+
+buildUnnamed178() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed178(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed179() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed179(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterModifyMessageRequest = 0;
+buildModifyMessageRequest() {
+  var o = new api.ModifyMessageRequest();
+  buildCounterModifyMessageRequest++;
+  if (buildCounterModifyMessageRequest < 3) {
+    o.addLabelIds = buildUnnamed178();
+    o.removeLabelIds = buildUnnamed179();
+  }
+  buildCounterModifyMessageRequest--;
+  return o;
+}
+
+checkModifyMessageRequest(api.ModifyMessageRequest o) {
+  buildCounterModifyMessageRequest++;
+  if (buildCounterModifyMessageRequest < 3) {
+    checkUnnamed178(o.addLabelIds);
+    checkUnnamed179(o.removeLabelIds);
+  }
+  buildCounterModifyMessageRequest--;
+}
+
+buildUnnamed180() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed180(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed181() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed181(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterModifyThreadRequest = 0;
+buildModifyThreadRequest() {
+  var o = new api.ModifyThreadRequest();
+  buildCounterModifyThreadRequest++;
+  if (buildCounterModifyThreadRequest < 3) {
+    o.addLabelIds = buildUnnamed180();
+    o.removeLabelIds = buildUnnamed181();
+  }
+  buildCounterModifyThreadRequest--;
+  return o;
+}
+
+checkModifyThreadRequest(api.ModifyThreadRequest o) {
+  buildCounterModifyThreadRequest++;
+  if (buildCounterModifyThreadRequest < 3) {
+    checkUnnamed180(o.addLabelIds);
+    checkUnnamed181(o.removeLabelIds);
+  }
+  buildCounterModifyThreadRequest--;
+}
+
+core.int buildCounterPopSettings = 0;
+buildPopSettings() {
+  var o = new api.PopSettings();
+  buildCounterPopSettings++;
+  if (buildCounterPopSettings < 3) {
+    o.accessWindow = "foo";
+    o.disposition = "foo";
+  }
+  buildCounterPopSettings--;
+  return o;
+}
+
+checkPopSettings(api.PopSettings o) {
+  buildCounterPopSettings++;
+  if (buildCounterPopSettings < 3) {
+    unittest.expect(o.accessWindow, unittest.equals('foo'));
+    unittest.expect(o.disposition, unittest.equals('foo'));
+  }
+  buildCounterPopSettings--;
+}
+
+core.int buildCounterProfile = 0;
+buildProfile() {
+  var o = new api.Profile();
+  buildCounterProfile++;
+  if (buildCounterProfile < 3) {
+    o.emailAddress = "foo";
+    o.historyId = "foo";
+    o.messagesTotal = 42;
+    o.threadsTotal = 42;
+  }
+  buildCounterProfile--;
+  return o;
+}
+
+checkProfile(api.Profile o) {
+  buildCounterProfile++;
+  if (buildCounterProfile < 3) {
+    unittest.expect(o.emailAddress, unittest.equals('foo'));
+    unittest.expect(o.historyId, unittest.equals('foo'));
+    unittest.expect(o.messagesTotal, unittest.equals(42));
+    unittest.expect(o.threadsTotal, unittest.equals(42));
+  }
+  buildCounterProfile--;
+}
+
+core.int buildCounterSendAs = 0;
+buildSendAs() {
+  var o = new api.SendAs();
+  buildCounterSendAs++;
+  if (buildCounterSendAs < 3) {
+    o.displayName = "foo";
+    o.isDefault = true;
+    o.isPrimary = true;
+    o.replyToAddress = "foo";
+    o.sendAsEmail = "foo";
+    o.signature = "foo";
+    o.smtpMsa = buildSmtpMsa();
+    o.treatAsAlias = true;
+    o.verificationStatus = "foo";
+  }
+  buildCounterSendAs--;
+  return o;
+}
+
+checkSendAs(api.SendAs o) {
+  buildCounterSendAs++;
+  if (buildCounterSendAs < 3) {
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.isDefault, unittest.isTrue);
+    unittest.expect(o.isPrimary, unittest.isTrue);
+    unittest.expect(o.replyToAddress, unittest.equals('foo'));
+    unittest.expect(o.sendAsEmail, unittest.equals('foo'));
+    unittest.expect(o.signature, unittest.equals('foo'));
+    checkSmtpMsa(o.smtpMsa);
+    unittest.expect(o.treatAsAlias, unittest.isTrue);
+    unittest.expect(o.verificationStatus, unittest.equals('foo'));
+  }
+  buildCounterSendAs--;
+}
+
+core.int buildCounterSmimeInfo = 0;
+buildSmimeInfo() {
+  var o = new api.SmimeInfo();
+  buildCounterSmimeInfo++;
+  if (buildCounterSmimeInfo < 3) {
+    o.encryptedKeyPassword = "foo";
+    o.expiration = "foo";
+    o.id = "foo";
+    o.isDefault = true;
+    o.issuerCn = "foo";
+    o.pem = "foo";
+    o.pkcs12 = "foo";
+  }
+  buildCounterSmimeInfo--;
+  return o;
+}
+
+checkSmimeInfo(api.SmimeInfo o) {
+  buildCounterSmimeInfo++;
+  if (buildCounterSmimeInfo < 3) {
+    unittest.expect(o.encryptedKeyPassword, unittest.equals('foo'));
+    unittest.expect(o.expiration, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.isDefault, unittest.isTrue);
+    unittest.expect(o.issuerCn, unittest.equals('foo'));
+    unittest.expect(o.pem, unittest.equals('foo'));
+    unittest.expect(o.pkcs12, unittest.equals('foo'));
+  }
+  buildCounterSmimeInfo--;
+}
+
+core.int buildCounterSmtpMsa = 0;
+buildSmtpMsa() {
+  var o = new api.SmtpMsa();
+  buildCounterSmtpMsa++;
+  if (buildCounterSmtpMsa < 3) {
+    o.host = "foo";
+    o.password = "foo";
+    o.port = 42;
+    o.securityMode = "foo";
+    o.username = "foo";
+  }
+  buildCounterSmtpMsa--;
+  return o;
+}
+
+checkSmtpMsa(api.SmtpMsa o) {
+  buildCounterSmtpMsa++;
+  if (buildCounterSmtpMsa < 3) {
+    unittest.expect(o.host, unittest.equals('foo'));
+    unittest.expect(o.password, unittest.equals('foo'));
+    unittest.expect(o.port, unittest.equals(42));
+    unittest.expect(o.securityMode, unittest.equals('foo'));
+    unittest.expect(o.username, unittest.equals('foo'));
+  }
+  buildCounterSmtpMsa--;
+}
+
+buildUnnamed182() {
+  var o = new core.List<api.Message>();
+  o.add(buildMessage());
+  o.add(buildMessage());
+  return o;
+}
+
+checkUnnamed182(core.List<api.Message> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMessage(o[0]);
+  checkMessage(o[1]);
+}
+
+core.int buildCounterThread = 0;
+buildThread() {
+  var o = new api.Thread();
+  buildCounterThread++;
+  if (buildCounterThread < 3) {
+    o.historyId = "foo";
+    o.id = "foo";
+    o.messages = buildUnnamed182();
+    o.snippet = "foo";
+  }
+  buildCounterThread--;
+  return o;
+}
+
+checkThread(api.Thread o) {
+  buildCounterThread++;
+  if (buildCounterThread < 3) {
+    unittest.expect(o.historyId, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed182(o.messages);
+    unittest.expect(o.snippet, unittest.equals('foo'));
+  }
+  buildCounterThread--;
+}
+
+core.int buildCounterVacationSettings = 0;
+buildVacationSettings() {
+  var o = new api.VacationSettings();
+  buildCounterVacationSettings++;
+  if (buildCounterVacationSettings < 3) {
+    o.enableAutoReply = true;
+    o.endTime = "foo";
+    o.responseBodyHtml = "foo";
+    o.responseBodyPlainText = "foo";
+    o.responseSubject = "foo";
+    o.restrictToContacts = true;
+    o.restrictToDomain = true;
+    o.startTime = "foo";
+  }
+  buildCounterVacationSettings--;
+  return o;
+}
+
+checkVacationSettings(api.VacationSettings o) {
+  buildCounterVacationSettings++;
+  if (buildCounterVacationSettings < 3) {
+    unittest.expect(o.enableAutoReply, unittest.isTrue);
+    unittest.expect(o.endTime, unittest.equals('foo'));
+    unittest.expect(o.responseBodyHtml, unittest.equals('foo'));
+    unittest.expect(o.responseBodyPlainText, unittest.equals('foo'));
+    unittest.expect(o.responseSubject, unittest.equals('foo'));
+    unittest.expect(o.restrictToContacts, unittest.isTrue);
+    unittest.expect(o.restrictToDomain, unittest.isTrue);
+    unittest.expect(o.startTime, unittest.equals('foo'));
+  }
+  buildCounterVacationSettings--;
+}
+
+buildUnnamed183() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed183(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterWatchRequest = 0;
+buildWatchRequest() {
+  var o = new api.WatchRequest();
+  buildCounterWatchRequest++;
+  if (buildCounterWatchRequest < 3) {
+    o.labelFilterAction = "foo";
+    o.labelIds = buildUnnamed183();
+    o.topicName = "foo";
+  }
+  buildCounterWatchRequest--;
+  return o;
+}
+
+checkWatchRequest(api.WatchRequest o) {
+  buildCounterWatchRequest++;
+  if (buildCounterWatchRequest < 3) {
+    unittest.expect(o.labelFilterAction, unittest.equals('foo'));
+    checkUnnamed183(o.labelIds);
+    unittest.expect(o.topicName, unittest.equals('foo'));
+  }
+  buildCounterWatchRequest--;
+}
+
+core.int buildCounterWatchResponse = 0;
+buildWatchResponse() {
+  var o = new api.WatchResponse();
+  buildCounterWatchResponse++;
+  if (buildCounterWatchResponse < 3) {
+    o.expiration = "foo";
+    o.historyId = "foo";
+  }
+  buildCounterWatchResponse--;
+  return o;
+}
+
+checkWatchResponse(api.WatchResponse o) {
+  buildCounterWatchResponse++;
+  if (buildCounterWatchResponse < 3) {
+    unittest.expect(o.expiration, unittest.equals('foo'));
+    unittest.expect(o.historyId, unittest.equals('foo'));
+  }
+  buildCounterWatchResponse--;
+}
+
+buildUnnamed184() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed184(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed185() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed185(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed186() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed186(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed187() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed187(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed188() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed188(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-AutoForwarding", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAutoForwarding();
+      var od = new api.AutoForwarding.fromJson(o.toJson());
+      checkAutoForwarding(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchDeleteMessagesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchDeleteMessagesRequest();
+      var od = new api.BatchDeleteMessagesRequest.fromJson(o.toJson());
+      checkBatchDeleteMessagesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchModifyMessagesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchModifyMessagesRequest();
+      var od = new api.BatchModifyMessagesRequest.fromJson(o.toJson());
+      checkBatchModifyMessagesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Draft", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDraft();
+      var od = new api.Draft.fromJson(o.toJson());
+      checkDraft(od);
+    });
+  });
+
+  unittest.group("obj-schema-Filter", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFilter();
+      var od = new api.Filter.fromJson(o.toJson());
+      checkFilter(od);
+    });
+  });
+
+  unittest.group("obj-schema-FilterAction", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFilterAction();
+      var od = new api.FilterAction.fromJson(o.toJson());
+      checkFilterAction(od);
+    });
+  });
+
+  unittest.group("obj-schema-FilterCriteria", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFilterCriteria();
+      var od = new api.FilterCriteria.fromJson(o.toJson());
+      checkFilterCriteria(od);
+    });
+  });
+
+  unittest.group("obj-schema-ForwardingAddress", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildForwardingAddress();
+      var od = new api.ForwardingAddress.fromJson(o.toJson());
+      checkForwardingAddress(od);
+    });
+  });
+
+  unittest.group("obj-schema-History", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildHistory();
+      var od = new api.History.fromJson(o.toJson());
+      checkHistory(od);
+    });
+  });
+
+  unittest.group("obj-schema-HistoryLabelAdded", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildHistoryLabelAdded();
+      var od = new api.HistoryLabelAdded.fromJson(o.toJson());
+      checkHistoryLabelAdded(od);
+    });
+  });
+
+  unittest.group("obj-schema-HistoryLabelRemoved", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildHistoryLabelRemoved();
+      var od = new api.HistoryLabelRemoved.fromJson(o.toJson());
+      checkHistoryLabelRemoved(od);
+    });
+  });
+
+  unittest.group("obj-schema-HistoryMessageAdded", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildHistoryMessageAdded();
+      var od = new api.HistoryMessageAdded.fromJson(o.toJson());
+      checkHistoryMessageAdded(od);
+    });
+  });
+
+  unittest.group("obj-schema-HistoryMessageDeleted", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildHistoryMessageDeleted();
+      var od = new api.HistoryMessageDeleted.fromJson(o.toJson());
+      checkHistoryMessageDeleted(od);
+    });
+  });
+
+  unittest.group("obj-schema-ImapSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildImapSettings();
+      var od = new api.ImapSettings.fromJson(o.toJson());
+      checkImapSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-Label", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLabel();
+      var od = new api.Label.fromJson(o.toJson());
+      checkLabel(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListDraftsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListDraftsResponse();
+      var od = new api.ListDraftsResponse.fromJson(o.toJson());
+      checkListDraftsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListFiltersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListFiltersResponse();
+      var od = new api.ListFiltersResponse.fromJson(o.toJson());
+      checkListFiltersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListForwardingAddressesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListForwardingAddressesResponse();
+      var od = new api.ListForwardingAddressesResponse.fromJson(o.toJson());
+      checkListForwardingAddressesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListHistoryResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListHistoryResponse();
+      var od = new api.ListHistoryResponse.fromJson(o.toJson());
+      checkListHistoryResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListLabelsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListLabelsResponse();
+      var od = new api.ListLabelsResponse.fromJson(o.toJson());
+      checkListLabelsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListMessagesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListMessagesResponse();
+      var od = new api.ListMessagesResponse.fromJson(o.toJson());
+      checkListMessagesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListSendAsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListSendAsResponse();
+      var od = new api.ListSendAsResponse.fromJson(o.toJson());
+      checkListSendAsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListSmimeInfoResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListSmimeInfoResponse();
+      var od = new api.ListSmimeInfoResponse.fromJson(o.toJson());
+      checkListSmimeInfoResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListThreadsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListThreadsResponse();
+      var od = new api.ListThreadsResponse.fromJson(o.toJson());
+      checkListThreadsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Message", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMessage();
+      var od = new api.Message.fromJson(o.toJson());
+      checkMessage(od);
+    });
+  });
+
+  unittest.group("obj-schema-MessagePart", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMessagePart();
+      var od = new api.MessagePart.fromJson(o.toJson());
+      checkMessagePart(od);
+    });
+  });
+
+  unittest.group("obj-schema-MessagePartBody", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMessagePartBody();
+      var od = new api.MessagePartBody.fromJson(o.toJson());
+      checkMessagePartBody(od);
+    });
+  });
+
+  unittest.group("obj-schema-MessagePartHeader", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMessagePartHeader();
+      var od = new api.MessagePartHeader.fromJson(o.toJson());
+      checkMessagePartHeader(od);
+    });
+  });
+
+  unittest.group("obj-schema-ModifyMessageRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildModifyMessageRequest();
+      var od = new api.ModifyMessageRequest.fromJson(o.toJson());
+      checkModifyMessageRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ModifyThreadRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildModifyThreadRequest();
+      var od = new api.ModifyThreadRequest.fromJson(o.toJson());
+      checkModifyThreadRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-PopSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPopSettings();
+      var od = new api.PopSettings.fromJson(o.toJson());
+      checkPopSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-Profile", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProfile();
+      var od = new api.Profile.fromJson(o.toJson());
+      checkProfile(od);
+    });
+  });
+
+  unittest.group("obj-schema-SendAs", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSendAs();
+      var od = new api.SendAs.fromJson(o.toJson());
+      checkSendAs(od);
+    });
+  });
+
+  unittest.group("obj-schema-SmimeInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSmimeInfo();
+      var od = new api.SmimeInfo.fromJson(o.toJson());
+      checkSmimeInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-SmtpMsa", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSmtpMsa();
+      var od = new api.SmtpMsa.fromJson(o.toJson());
+      checkSmtpMsa(od);
+    });
+  });
+
+  unittest.group("obj-schema-Thread", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildThread();
+      var od = new api.Thread.fromJson(o.toJson());
+      checkThread(od);
+    });
+  });
+
+  unittest.group("obj-schema-VacationSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVacationSettings();
+      var od = new api.VacationSettings.fromJson(o.toJson());
+      checkVacationSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-WatchRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildWatchRequest();
+      var od = new api.WatchRequest.fromJson(o.toJson());
+      checkWatchRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-WatchResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildWatchResponse();
+      var od = new api.WatchResponse.fromJson(o.toJson());
+      checkWatchResponse(od);
+    });
+  });
+
+  unittest.group("resource-UsersResourceApi", () {
+    unittest.test("method--getProfile", () {
+      var mock = new HttpServerMock();
+      api.UsersResourceApi res = new api.GmailApi(mock).users;
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProfile());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getProfile(arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Profile response) {
+        checkProfile(response);
+      })));
+    });
+
+    unittest.test("method--stop", () {
+      var mock = new HttpServerMock();
+      api.UsersResourceApi res = new api.GmailApi(mock).users;
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .stop(arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--watch", () {
+      var mock = new HttpServerMock();
+      api.UsersResourceApi res = new api.GmailApi(mock).users;
+      var arg_request = buildWatchRequest();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.WatchRequest.fromJson(json);
+        checkWatchRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildWatchResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .watch(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.WatchResponse response) {
+        checkWatchResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersDraftsResourceApi", () {
+    unittest.test("method--create", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.UsersDraftsResourceApi res = new api.GmailApi(mock).users.drafts;
+      var arg_request = buildDraft();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Draft.fromJson(json);
+        checkDraft(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDraft());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Draft response) {
+        checkDraft(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.UsersDraftsResourceApi res = new api.GmailApi(mock).users.drafts;
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UsersDraftsResourceApi res = new api.GmailApi(mock).users.drafts;
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_format = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["format"].first, unittest.equals(arg_format));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDraft());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, arg_id, format: arg_format, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Draft response) {
+        checkDraft(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UsersDraftsResourceApi res = new api.GmailApi(mock).users.drafts;
+      var arg_userId = "foo";
+      var arg_includeSpamTrash = true;
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_q = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeSpamTrash"].first,
+            unittest.equals("$arg_includeSpamTrash"));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["q"].first, unittest.equals(arg_q));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListDraftsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId,
+              includeSpamTrash: arg_includeSpamTrash,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              q: arg_q,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListDraftsResponse response) {
+        checkListDraftsResponse(response);
+      })));
+    });
+
+    unittest.test("method--send", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.UsersDraftsResourceApi res = new api.GmailApi(mock).users.drafts;
+      var arg_request = buildDraft();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Draft.fromJson(json);
+        checkDraft(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMessage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .send(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Message response) {
+        checkMessage(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.UsersDraftsResourceApi res = new api.GmailApi(mock).users.drafts;
+      var arg_request = buildDraft();
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Draft.fromJson(json);
+        checkDraft(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDraft());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Draft response) {
+        checkDraft(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersHistoryResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UsersHistoryResourceApi res = new api.GmailApi(mock).users.history;
+      var arg_userId = "foo";
+      var arg_historyTypes = buildUnnamed184();
+      var arg_labelId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_startHistoryId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["historyTypes"], unittest.equals(arg_historyTypes));
+        unittest.expect(
+            queryMap["labelId"].first, unittest.equals(arg_labelId));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["startHistoryId"].first,
+            unittest.equals(arg_startHistoryId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListHistoryResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId,
+              historyTypes: arg_historyTypes,
+              labelId: arg_labelId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              startHistoryId: arg_startHistoryId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListHistoryResponse response) {
+        checkListHistoryResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersLabelsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.UsersLabelsResourceApi res = new api.GmailApi(mock).users.labels;
+      var arg_request = buildLabel();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Label.fromJson(json);
+        checkLabel(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLabel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Label response) {
+        checkLabel(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.UsersLabelsResourceApi res = new api.GmailApi(mock).users.labels;
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UsersLabelsResourceApi res = new api.GmailApi(mock).users.labels;
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLabel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Label response) {
+        checkLabel(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UsersLabelsResourceApi res = new api.GmailApi(mock).users.labels;
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListLabelsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListLabelsResponse response) {
+        checkListLabelsResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.UsersLabelsResourceApi res = new api.GmailApi(mock).users.labels;
+      var arg_request = buildLabel();
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Label.fromJson(json);
+        checkLabel(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLabel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Label response) {
+        checkLabel(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.UsersLabelsResourceApi res = new api.GmailApi(mock).users.labels;
+      var arg_request = buildLabel();
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Label.fromJson(json);
+        checkLabel(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLabel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Label response) {
+        checkLabel(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersMessagesResourceApi", () {
+    unittest.test("method--batchDelete", () {
+      var mock = new HttpServerMock();
+      api.UsersMessagesResourceApi res = new api.GmailApi(mock).users.messages;
+      var arg_request = buildBatchDeleteMessagesRequest();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BatchDeleteMessagesRequest.fromJson(json);
+        checkBatchDeleteMessagesRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .batchDelete(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--batchModify", () {
+      var mock = new HttpServerMock();
+      api.UsersMessagesResourceApi res = new api.GmailApi(mock).users.messages;
+      var arg_request = buildBatchModifyMessagesRequest();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BatchModifyMessagesRequest.fromJson(json);
+        checkBatchModifyMessagesRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .batchModify(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.UsersMessagesResourceApi res = new api.GmailApi(mock).users.messages;
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UsersMessagesResourceApi res = new api.GmailApi(mock).users.messages;
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_format = "foo";
+      var arg_metadataHeaders = buildUnnamed185();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["format"].first, unittest.equals(arg_format));
+        unittest.expect(
+            queryMap["metadataHeaders"], unittest.equals(arg_metadataHeaders));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMessage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, arg_id,
+              format: arg_format,
+              metadataHeaders: arg_metadataHeaders,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Message response) {
+        checkMessage(response);
+      })));
+    });
+
+    unittest.test("method--import", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.UsersMessagesResourceApi res = new api.GmailApi(mock).users.messages;
+      var arg_request = buildMessage();
+      var arg_userId = "foo";
+      var arg_deleted = true;
+      var arg_internalDateSource = "foo";
+      var arg_neverMarkSpam = true;
+      var arg_processForCalendar = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Message.fromJson(json);
+        checkMessage(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["deleted"].first, unittest.equals("$arg_deleted"));
+        unittest.expect(queryMap["internalDateSource"].first,
+            unittest.equals(arg_internalDateSource));
+        unittest.expect(queryMap["neverMarkSpam"].first,
+            unittest.equals("$arg_neverMarkSpam"));
+        unittest.expect(queryMap["processForCalendar"].first,
+            unittest.equals("$arg_processForCalendar"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMessage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .import(arg_request, arg_userId,
+              deleted: arg_deleted,
+              internalDateSource: arg_internalDateSource,
+              neverMarkSpam: arg_neverMarkSpam,
+              processForCalendar: arg_processForCalendar,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Message response) {
+        checkMessage(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.UsersMessagesResourceApi res = new api.GmailApi(mock).users.messages;
+      var arg_request = buildMessage();
+      var arg_userId = "foo";
+      var arg_deleted = true;
+      var arg_internalDateSource = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Message.fromJson(json);
+        checkMessage(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["deleted"].first, unittest.equals("$arg_deleted"));
+        unittest.expect(queryMap["internalDateSource"].first,
+            unittest.equals(arg_internalDateSource));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMessage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_userId,
+              deleted: arg_deleted,
+              internalDateSource: arg_internalDateSource,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Message response) {
+        checkMessage(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UsersMessagesResourceApi res = new api.GmailApi(mock).users.messages;
+      var arg_userId = "foo";
+      var arg_includeSpamTrash = true;
+      var arg_labelIds = buildUnnamed186();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_q = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeSpamTrash"].first,
+            unittest.equals("$arg_includeSpamTrash"));
+        unittest.expect(queryMap["labelIds"], unittest.equals(arg_labelIds));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["q"].first, unittest.equals(arg_q));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListMessagesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId,
+              includeSpamTrash: arg_includeSpamTrash,
+              labelIds: arg_labelIds,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              q: arg_q,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListMessagesResponse response) {
+        checkListMessagesResponse(response);
+      })));
+    });
+
+    unittest.test("method--modify", () {
+      var mock = new HttpServerMock();
+      api.UsersMessagesResourceApi res = new api.GmailApi(mock).users.messages;
+      var arg_request = buildModifyMessageRequest();
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ModifyMessageRequest.fromJson(json);
+        checkModifyMessageRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMessage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .modify(arg_request, arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Message response) {
+        checkMessage(response);
+      })));
+    });
+
+    unittest.test("method--send", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.UsersMessagesResourceApi res = new api.GmailApi(mock).users.messages;
+      var arg_request = buildMessage();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Message.fromJson(json);
+        checkMessage(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMessage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .send(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Message response) {
+        checkMessage(response);
+      })));
+    });
+
+    unittest.test("method--trash", () {
+      var mock = new HttpServerMock();
+      api.UsersMessagesResourceApi res = new api.GmailApi(mock).users.messages;
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMessage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .trash(arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Message response) {
+        checkMessage(response);
+      })));
+    });
+
+    unittest.test("method--untrash", () {
+      var mock = new HttpServerMock();
+      api.UsersMessagesResourceApi res = new api.GmailApi(mock).users.messages;
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMessage());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .untrash(arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Message response) {
+        checkMessage(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersMessagesAttachmentsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UsersMessagesAttachmentsResourceApi res =
+          new api.GmailApi(mock).users.messages.attachments;
+      var arg_userId = "foo";
+      var arg_messageId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMessagePartBody());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, arg_messageId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.MessagePartBody response) {
+        checkMessagePartBody(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersSettingsResourceApi", () {
+    unittest.test("method--getAutoForwarding", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsResourceApi res = new api.GmailApi(mock).users.settings;
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAutoForwarding());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getAutoForwarding(arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AutoForwarding response) {
+        checkAutoForwarding(response);
+      })));
+    });
+
+    unittest.test("method--getImap", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsResourceApi res = new api.GmailApi(mock).users.settings;
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildImapSettings());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getImap(arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ImapSettings response) {
+        checkImapSettings(response);
+      })));
+    });
+
+    unittest.test("method--getPop", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsResourceApi res = new api.GmailApi(mock).users.settings;
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPopSettings());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getPop(arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PopSettings response) {
+        checkPopSettings(response);
+      })));
+    });
+
+    unittest.test("method--getVacation", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsResourceApi res = new api.GmailApi(mock).users.settings;
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVacationSettings());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getVacation(arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.VacationSettings response) {
+        checkVacationSettings(response);
+      })));
+    });
+
+    unittest.test("method--updateAutoForwarding", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsResourceApi res = new api.GmailApi(mock).users.settings;
+      var arg_request = buildAutoForwarding();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AutoForwarding.fromJson(json);
+        checkAutoForwarding(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAutoForwarding());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .updateAutoForwarding(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AutoForwarding response) {
+        checkAutoForwarding(response);
+      })));
+    });
+
+    unittest.test("method--updateImap", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsResourceApi res = new api.GmailApi(mock).users.settings;
+      var arg_request = buildImapSettings();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ImapSettings.fromJson(json);
+        checkImapSettings(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildImapSettings());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .updateImap(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ImapSettings response) {
+        checkImapSettings(response);
+      })));
+    });
+
+    unittest.test("method--updatePop", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsResourceApi res = new api.GmailApi(mock).users.settings;
+      var arg_request = buildPopSettings();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PopSettings.fromJson(json);
+        checkPopSettings(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPopSettings());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .updatePop(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PopSettings response) {
+        checkPopSettings(response);
+      })));
+    });
+
+    unittest.test("method--updateVacation", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsResourceApi res = new api.GmailApi(mock).users.settings;
+      var arg_request = buildVacationSettings();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.VacationSettings.fromJson(json);
+        checkVacationSettings(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVacationSettings());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .updateVacation(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.VacationSettings response) {
+        checkVacationSettings(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersSettingsFiltersResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsFiltersResourceApi res =
+          new api.GmailApi(mock).users.settings.filters;
+      var arg_request = buildFilter();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Filter.fromJson(json);
+        checkFilter(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFilter());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Filter response) {
+        checkFilter(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsFiltersResourceApi res =
+          new api.GmailApi(mock).users.settings.filters;
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsFiltersResourceApi res =
+          new api.GmailApi(mock).users.settings.filters;
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFilter());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Filter response) {
+        checkFilter(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsFiltersResourceApi res =
+          new api.GmailApi(mock).users.settings.filters;
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListFiltersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListFiltersResponse response) {
+        checkListFiltersResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersSettingsForwardingAddressesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsForwardingAddressesResourceApi res =
+          new api.GmailApi(mock).users.settings.forwardingAddresses;
+      var arg_request = buildForwardingAddress();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ForwardingAddress.fromJson(json);
+        checkForwardingAddress(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildForwardingAddress());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ForwardingAddress response) {
+        checkForwardingAddress(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsForwardingAddressesResourceApi res =
+          new api.GmailApi(mock).users.settings.forwardingAddresses;
+      var arg_userId = "foo";
+      var arg_forwardingEmail = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_userId, arg_forwardingEmail, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsForwardingAddressesResourceApi res =
+          new api.GmailApi(mock).users.settings.forwardingAddresses;
+      var arg_userId = "foo";
+      var arg_forwardingEmail = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildForwardingAddress());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, arg_forwardingEmail, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ForwardingAddress response) {
+        checkForwardingAddress(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsForwardingAddressesResourceApi res =
+          new api.GmailApi(mock).users.settings.forwardingAddresses;
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListForwardingAddressesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.list(arg_userId, $fields: arg_$fields).then(unittest
+          .expectAsync1(((api.ListForwardingAddressesResponse response) {
+        checkListForwardingAddressesResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersSettingsSendAsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsSendAsResourceApi res =
+          new api.GmailApi(mock).users.settings.sendAs;
+      var arg_request = buildSendAs();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.SendAs.fromJson(json);
+        checkSendAs(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSendAs());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SendAs response) {
+        checkSendAs(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsSendAsResourceApi res =
+          new api.GmailApi(mock).users.settings.sendAs;
+      var arg_userId = "foo";
+      var arg_sendAsEmail = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_userId, arg_sendAsEmail, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsSendAsResourceApi res =
+          new api.GmailApi(mock).users.settings.sendAs;
+      var arg_userId = "foo";
+      var arg_sendAsEmail = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSendAs());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, arg_sendAsEmail, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SendAs response) {
+        checkSendAs(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsSendAsResourceApi res =
+          new api.GmailApi(mock).users.settings.sendAs;
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListSendAsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListSendAsResponse response) {
+        checkListSendAsResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsSendAsResourceApi res =
+          new api.GmailApi(mock).users.settings.sendAs;
+      var arg_request = buildSendAs();
+      var arg_userId = "foo";
+      var arg_sendAsEmail = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.SendAs.fromJson(json);
+        checkSendAs(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSendAs());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_userId, arg_sendAsEmail, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SendAs response) {
+        checkSendAs(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsSendAsResourceApi res =
+          new api.GmailApi(mock).users.settings.sendAs;
+      var arg_request = buildSendAs();
+      var arg_userId = "foo";
+      var arg_sendAsEmail = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.SendAs.fromJson(json);
+        checkSendAs(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSendAs());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_userId, arg_sendAsEmail,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SendAs response) {
+        checkSendAs(response);
+      })));
+    });
+
+    unittest.test("method--verify", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsSendAsResourceApi res =
+          new api.GmailApi(mock).users.settings.sendAs;
+      var arg_userId = "foo";
+      var arg_sendAsEmail = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .verify(arg_userId, arg_sendAsEmail, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+  });
+
+  unittest.group("resource-UsersSettingsSendAsSmimeInfoResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsSendAsSmimeInfoResourceApi res =
+          new api.GmailApi(mock).users.settings.sendAs.smimeInfo;
+      var arg_userId = "foo";
+      var arg_sendAsEmail = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_userId, arg_sendAsEmail, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsSendAsSmimeInfoResourceApi res =
+          new api.GmailApi(mock).users.settings.sendAs.smimeInfo;
+      var arg_userId = "foo";
+      var arg_sendAsEmail = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSmimeInfo());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, arg_sendAsEmail, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SmimeInfo response) {
+        checkSmimeInfo(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsSendAsSmimeInfoResourceApi res =
+          new api.GmailApi(mock).users.settings.sendAs.smimeInfo;
+      var arg_request = buildSmimeInfo();
+      var arg_userId = "foo";
+      var arg_sendAsEmail = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.SmimeInfo.fromJson(json);
+        checkSmimeInfo(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSmimeInfo());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_userId, arg_sendAsEmail,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SmimeInfo response) {
+        checkSmimeInfo(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsSendAsSmimeInfoResourceApi res =
+          new api.GmailApi(mock).users.settings.sendAs.smimeInfo;
+      var arg_userId = "foo";
+      var arg_sendAsEmail = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListSmimeInfoResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId, arg_sendAsEmail, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListSmimeInfoResponse response) {
+        checkListSmimeInfoResponse(response);
+      })));
+    });
+
+    unittest.test("method--setDefault", () {
+      var mock = new HttpServerMock();
+      api.UsersSettingsSendAsSmimeInfoResourceApi res =
+          new api.GmailApi(mock).users.settings.sendAs.smimeInfo;
+      var arg_userId = "foo";
+      var arg_sendAsEmail = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .setDefault(arg_userId, arg_sendAsEmail, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+  });
+
+  unittest.group("resource-UsersThreadsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.UsersThreadsResourceApi res = new api.GmailApi(mock).users.threads;
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UsersThreadsResourceApi res = new api.GmailApi(mock).users.threads;
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_format = "foo";
+      var arg_metadataHeaders = buildUnnamed187();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["format"].first, unittest.equals(arg_format));
+        unittest.expect(
+            queryMap["metadataHeaders"], unittest.equals(arg_metadataHeaders));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildThread());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, arg_id,
+              format: arg_format,
+              metadataHeaders: arg_metadataHeaders,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Thread response) {
+        checkThread(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UsersThreadsResourceApi res = new api.GmailApi(mock).users.threads;
+      var arg_userId = "foo";
+      var arg_includeSpamTrash = true;
+      var arg_labelIds = buildUnnamed188();
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_q = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeSpamTrash"].first,
+            unittest.equals("$arg_includeSpamTrash"));
+        unittest.expect(queryMap["labelIds"], unittest.equals(arg_labelIds));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["q"].first, unittest.equals(arg_q));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListThreadsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId,
+              includeSpamTrash: arg_includeSpamTrash,
+              labelIds: arg_labelIds,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              q: arg_q,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListThreadsResponse response) {
+        checkListThreadsResponse(response);
+      })));
+    });
+
+    unittest.test("method--modify", () {
+      var mock = new HttpServerMock();
+      api.UsersThreadsResourceApi res = new api.GmailApi(mock).users.threads;
+      var arg_request = buildModifyThreadRequest();
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ModifyThreadRequest.fromJson(json);
+        checkModifyThreadRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildThread());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .modify(arg_request, arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Thread response) {
+        checkThread(response);
+      })));
+    });
+
+    unittest.test("method--trash", () {
+      var mock = new HttpServerMock();
+      api.UsersThreadsResourceApi res = new api.GmailApi(mock).users.threads;
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildThread());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .trash(arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Thread response) {
+        checkThread(response);
+      })));
+    });
+
+    unittest.test("method--untrash", () {
+      var mock = new HttpServerMock();
+      api.UsersThreadsResourceApi res = new api.GmailApi(mock).users.threads;
+      var arg_userId = "foo";
+      var arg_id = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildThread());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .untrash(arg_userId, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Thread response) {
+        checkThread(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/groupsmigration/v1_test.dart b/generated/googleapis/test/groupsmigration/v1_test.dart
index 90b9d1f..7000f72 100644
--- a/generated/googleapis/test/groupsmigration/v1_test.dart
+++ b/generated/googleapis/test/groupsmigration/v1_test.dart
@@ -88,6 +88,7 @@
       var mock = new HttpServerMock();
       api.ArchiveResourceApi res = new api.GroupsmigrationApi(mock).archive;
       var arg_groupId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -115,6 +116,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -123,7 +125,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_groupId)
+          .insert(arg_groupId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Groups response) {
         checkGroups(response);
       })));
diff --git a/generated/googleapis/test/groupssettings/v1_test.dart b/generated/googleapis/test/groupssettings/v1_test.dart
index c6302c4..674b203 100644
--- a/generated/googleapis/test/groupssettings/v1_test.dart
+++ b/generated/googleapis/test/groupssettings/v1_test.dart
@@ -144,6 +144,7 @@
       var mock = new HttpServerMock();
       api.GroupsResourceApi res = new api.GroupssettingsApi(mock).groups;
       var arg_groupUniqueId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -171,6 +172,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -179,7 +181,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_groupUniqueId)
+          .get(arg_groupUniqueId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Groups response) {
         checkGroups(response);
       })));
@@ -190,6 +192,7 @@
       api.GroupsResourceApi res = new api.GroupssettingsApi(mock).groups;
       var arg_request = buildGroups();
       var arg_groupUniqueId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Groups.fromJson(json);
         checkGroups(obj);
@@ -220,6 +223,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -228,7 +232,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_groupUniqueId)
+          .patch(arg_request, arg_groupUniqueId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Groups response) {
         checkGroups(response);
       })));
@@ -239,6 +243,7 @@
       api.GroupsResourceApi res = new api.GroupssettingsApi(mock).groups;
       var arg_request = buildGroups();
       var arg_groupUniqueId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Groups.fromJson(json);
         checkGroups(obj);
@@ -269,6 +274,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -277,7 +283,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_groupUniqueId)
+          .update(arg_request, arg_groupUniqueId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Groups response) {
         checkGroups(response);
       })));
diff --git a/generated/googleapis/test/iam/v1_test.dart b/generated/googleapis/test/iam/v1_test.dart
new file mode 100644
index 0000000..1ae3fce
--- /dev/null
+++ b/generated/googleapis/test/iam/v1_test.dart
@@ -0,0 +1,2773 @@
+library googleapis.iam.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/iam/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAuditData = 0;
+buildAuditData() {
+  var o = new api.AuditData();
+  buildCounterAuditData++;
+  if (buildCounterAuditData < 3) {
+    o.policyDelta = buildPolicyDelta();
+  }
+  buildCounterAuditData--;
+  return o;
+}
+
+checkAuditData(api.AuditData o) {
+  buildCounterAuditData++;
+  if (buildCounterAuditData < 3) {
+    checkPolicyDelta(o.policyDelta);
+  }
+  buildCounterAuditData--;
+}
+
+buildUnnamed1262() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1262(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBinding = 0;
+buildBinding() {
+  var o = new api.Binding();
+  buildCounterBinding++;
+  if (buildCounterBinding < 3) {
+    o.members = buildUnnamed1262();
+    o.role = "foo";
+  }
+  buildCounterBinding--;
+  return o;
+}
+
+checkBinding(api.Binding o) {
+  buildCounterBinding++;
+  if (buildCounterBinding < 3) {
+    checkUnnamed1262(o.members);
+    unittest.expect(o.role, unittest.equals('foo'));
+  }
+  buildCounterBinding--;
+}
+
+core.int buildCounterBindingDelta = 0;
+buildBindingDelta() {
+  var o = new api.BindingDelta();
+  buildCounterBindingDelta++;
+  if (buildCounterBindingDelta < 3) {
+    o.action = "foo";
+    o.condition = buildExpr();
+    o.member = "foo";
+    o.role = "foo";
+  }
+  buildCounterBindingDelta--;
+  return o;
+}
+
+checkBindingDelta(api.BindingDelta o) {
+  buildCounterBindingDelta++;
+  if (buildCounterBindingDelta < 3) {
+    unittest.expect(o.action, unittest.equals('foo'));
+    checkExpr(o.condition);
+    unittest.expect(o.member, unittest.equals('foo'));
+    unittest.expect(o.role, unittest.equals('foo'));
+  }
+  buildCounterBindingDelta--;
+}
+
+core.int buildCounterCreateRoleRequest = 0;
+buildCreateRoleRequest() {
+  var o = new api.CreateRoleRequest();
+  buildCounterCreateRoleRequest++;
+  if (buildCounterCreateRoleRequest < 3) {
+    o.role = buildRole();
+    o.roleId = "foo";
+  }
+  buildCounterCreateRoleRequest--;
+  return o;
+}
+
+checkCreateRoleRequest(api.CreateRoleRequest o) {
+  buildCounterCreateRoleRequest++;
+  if (buildCounterCreateRoleRequest < 3) {
+    checkRole(o.role);
+    unittest.expect(o.roleId, unittest.equals('foo'));
+  }
+  buildCounterCreateRoleRequest--;
+}
+
+core.int buildCounterCreateServiceAccountKeyRequest = 0;
+buildCreateServiceAccountKeyRequest() {
+  var o = new api.CreateServiceAccountKeyRequest();
+  buildCounterCreateServiceAccountKeyRequest++;
+  if (buildCounterCreateServiceAccountKeyRequest < 3) {
+    o.keyAlgorithm = "foo";
+    o.privateKeyType = "foo";
+  }
+  buildCounterCreateServiceAccountKeyRequest--;
+  return o;
+}
+
+checkCreateServiceAccountKeyRequest(api.CreateServiceAccountKeyRequest o) {
+  buildCounterCreateServiceAccountKeyRequest++;
+  if (buildCounterCreateServiceAccountKeyRequest < 3) {
+    unittest.expect(o.keyAlgorithm, unittest.equals('foo'));
+    unittest.expect(o.privateKeyType, unittest.equals('foo'));
+  }
+  buildCounterCreateServiceAccountKeyRequest--;
+}
+
+core.int buildCounterCreateServiceAccountRequest = 0;
+buildCreateServiceAccountRequest() {
+  var o = new api.CreateServiceAccountRequest();
+  buildCounterCreateServiceAccountRequest++;
+  if (buildCounterCreateServiceAccountRequest < 3) {
+    o.accountId = "foo";
+    o.serviceAccount = buildServiceAccount();
+  }
+  buildCounterCreateServiceAccountRequest--;
+  return o;
+}
+
+checkCreateServiceAccountRequest(api.CreateServiceAccountRequest o) {
+  buildCounterCreateServiceAccountRequest++;
+  if (buildCounterCreateServiceAccountRequest < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkServiceAccount(o.serviceAccount);
+  }
+  buildCounterCreateServiceAccountRequest--;
+}
+
+core.int buildCounterEmpty = 0;
+buildEmpty() {
+  var o = new api.Empty();
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+  return o;
+}
+
+checkEmpty(api.Empty o) {
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+}
+
+core.int buildCounterExpr = 0;
+buildExpr() {
+  var o = new api.Expr();
+  buildCounterExpr++;
+  if (buildCounterExpr < 3) {
+    o.description = "foo";
+    o.expression = "foo";
+    o.location = "foo";
+    o.title = "foo";
+  }
+  buildCounterExpr--;
+  return o;
+}
+
+checkExpr(api.Expr o) {
+  buildCounterExpr++;
+  if (buildCounterExpr < 3) {
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.expression, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterExpr--;
+}
+
+buildUnnamed1263() {
+  var o = new core.List<api.Role>();
+  o.add(buildRole());
+  o.add(buildRole());
+  return o;
+}
+
+checkUnnamed1263(core.List<api.Role> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRole(o[0]);
+  checkRole(o[1]);
+}
+
+core.int buildCounterListRolesResponse = 0;
+buildListRolesResponse() {
+  var o = new api.ListRolesResponse();
+  buildCounterListRolesResponse++;
+  if (buildCounterListRolesResponse < 3) {
+    o.nextPageToken = "foo";
+    o.roles = buildUnnamed1263();
+  }
+  buildCounterListRolesResponse--;
+  return o;
+}
+
+checkListRolesResponse(api.ListRolesResponse o) {
+  buildCounterListRolesResponse++;
+  if (buildCounterListRolesResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1263(o.roles);
+  }
+  buildCounterListRolesResponse--;
+}
+
+buildUnnamed1264() {
+  var o = new core.List<api.ServiceAccountKey>();
+  o.add(buildServiceAccountKey());
+  o.add(buildServiceAccountKey());
+  return o;
+}
+
+checkUnnamed1264(core.List<api.ServiceAccountKey> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkServiceAccountKey(o[0]);
+  checkServiceAccountKey(o[1]);
+}
+
+core.int buildCounterListServiceAccountKeysResponse = 0;
+buildListServiceAccountKeysResponse() {
+  var o = new api.ListServiceAccountKeysResponse();
+  buildCounterListServiceAccountKeysResponse++;
+  if (buildCounterListServiceAccountKeysResponse < 3) {
+    o.keys = buildUnnamed1264();
+  }
+  buildCounterListServiceAccountKeysResponse--;
+  return o;
+}
+
+checkListServiceAccountKeysResponse(api.ListServiceAccountKeysResponse o) {
+  buildCounterListServiceAccountKeysResponse++;
+  if (buildCounterListServiceAccountKeysResponse < 3) {
+    checkUnnamed1264(o.keys);
+  }
+  buildCounterListServiceAccountKeysResponse--;
+}
+
+buildUnnamed1265() {
+  var o = new core.List<api.ServiceAccount>();
+  o.add(buildServiceAccount());
+  o.add(buildServiceAccount());
+  return o;
+}
+
+checkUnnamed1265(core.List<api.ServiceAccount> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkServiceAccount(o[0]);
+  checkServiceAccount(o[1]);
+}
+
+core.int buildCounterListServiceAccountsResponse = 0;
+buildListServiceAccountsResponse() {
+  var o = new api.ListServiceAccountsResponse();
+  buildCounterListServiceAccountsResponse++;
+  if (buildCounterListServiceAccountsResponse < 3) {
+    o.accounts = buildUnnamed1265();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListServiceAccountsResponse--;
+  return o;
+}
+
+checkListServiceAccountsResponse(api.ListServiceAccountsResponse o) {
+  buildCounterListServiceAccountsResponse++;
+  if (buildCounterListServiceAccountsResponse < 3) {
+    checkUnnamed1265(o.accounts);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListServiceAccountsResponse--;
+}
+
+core.int buildCounterPermission = 0;
+buildPermission() {
+  var o = new api.Permission();
+  buildCounterPermission++;
+  if (buildCounterPermission < 3) {
+    o.customRolesSupportLevel = "foo";
+    o.description = "foo";
+    o.name = "foo";
+    o.onlyInPredefinedRoles = true;
+    o.stage = "foo";
+    o.title = "foo";
+  }
+  buildCounterPermission--;
+  return o;
+}
+
+checkPermission(api.Permission o) {
+  buildCounterPermission++;
+  if (buildCounterPermission < 3) {
+    unittest.expect(o.customRolesSupportLevel, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.onlyInPredefinedRoles, unittest.isTrue);
+    unittest.expect(o.stage, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterPermission--;
+}
+
+buildUnnamed1266() {
+  var o = new core.List<api.Binding>();
+  o.add(buildBinding());
+  o.add(buildBinding());
+  return o;
+}
+
+checkUnnamed1266(core.List<api.Binding> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBinding(o[0]);
+  checkBinding(o[1]);
+}
+
+core.int buildCounterPolicy = 0;
+buildPolicy() {
+  var o = new api.Policy();
+  buildCounterPolicy++;
+  if (buildCounterPolicy < 3) {
+    o.bindings = buildUnnamed1266();
+    o.etag = "foo";
+    o.version = 42;
+  }
+  buildCounterPolicy--;
+  return o;
+}
+
+checkPolicy(api.Policy o) {
+  buildCounterPolicy++;
+  if (buildCounterPolicy < 3) {
+    checkUnnamed1266(o.bindings);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.version, unittest.equals(42));
+  }
+  buildCounterPolicy--;
+}
+
+buildUnnamed1267() {
+  var o = new core.List<api.BindingDelta>();
+  o.add(buildBindingDelta());
+  o.add(buildBindingDelta());
+  return o;
+}
+
+checkUnnamed1267(core.List<api.BindingDelta> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBindingDelta(o[0]);
+  checkBindingDelta(o[1]);
+}
+
+core.int buildCounterPolicyDelta = 0;
+buildPolicyDelta() {
+  var o = new api.PolicyDelta();
+  buildCounterPolicyDelta++;
+  if (buildCounterPolicyDelta < 3) {
+    o.bindingDeltas = buildUnnamed1267();
+  }
+  buildCounterPolicyDelta--;
+  return o;
+}
+
+checkPolicyDelta(api.PolicyDelta o) {
+  buildCounterPolicyDelta++;
+  if (buildCounterPolicyDelta < 3) {
+    checkUnnamed1267(o.bindingDeltas);
+  }
+  buildCounterPolicyDelta--;
+}
+
+core.int buildCounterQueryGrantableRolesRequest = 0;
+buildQueryGrantableRolesRequest() {
+  var o = new api.QueryGrantableRolesRequest();
+  buildCounterQueryGrantableRolesRequest++;
+  if (buildCounterQueryGrantableRolesRequest < 3) {
+    o.fullResourceName = "foo";
+    o.pageSize = 42;
+    o.pageToken = "foo";
+    o.view = "foo";
+  }
+  buildCounterQueryGrantableRolesRequest--;
+  return o;
+}
+
+checkQueryGrantableRolesRequest(api.QueryGrantableRolesRequest o) {
+  buildCounterQueryGrantableRolesRequest++;
+  if (buildCounterQueryGrantableRolesRequest < 3) {
+    unittest.expect(o.fullResourceName, unittest.equals('foo'));
+    unittest.expect(o.pageSize, unittest.equals(42));
+    unittest.expect(o.pageToken, unittest.equals('foo'));
+    unittest.expect(o.view, unittest.equals('foo'));
+  }
+  buildCounterQueryGrantableRolesRequest--;
+}
+
+buildUnnamed1268() {
+  var o = new core.List<api.Role>();
+  o.add(buildRole());
+  o.add(buildRole());
+  return o;
+}
+
+checkUnnamed1268(core.List<api.Role> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRole(o[0]);
+  checkRole(o[1]);
+}
+
+core.int buildCounterQueryGrantableRolesResponse = 0;
+buildQueryGrantableRolesResponse() {
+  var o = new api.QueryGrantableRolesResponse();
+  buildCounterQueryGrantableRolesResponse++;
+  if (buildCounterQueryGrantableRolesResponse < 3) {
+    o.nextPageToken = "foo";
+    o.roles = buildUnnamed1268();
+  }
+  buildCounterQueryGrantableRolesResponse--;
+  return o;
+}
+
+checkQueryGrantableRolesResponse(api.QueryGrantableRolesResponse o) {
+  buildCounterQueryGrantableRolesResponse++;
+  if (buildCounterQueryGrantableRolesResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1268(o.roles);
+  }
+  buildCounterQueryGrantableRolesResponse--;
+}
+
+core.int buildCounterQueryTestablePermissionsRequest = 0;
+buildQueryTestablePermissionsRequest() {
+  var o = new api.QueryTestablePermissionsRequest();
+  buildCounterQueryTestablePermissionsRequest++;
+  if (buildCounterQueryTestablePermissionsRequest < 3) {
+    o.fullResourceName = "foo";
+    o.pageSize = 42;
+    o.pageToken = "foo";
+  }
+  buildCounterQueryTestablePermissionsRequest--;
+  return o;
+}
+
+checkQueryTestablePermissionsRequest(api.QueryTestablePermissionsRequest o) {
+  buildCounterQueryTestablePermissionsRequest++;
+  if (buildCounterQueryTestablePermissionsRequest < 3) {
+    unittest.expect(o.fullResourceName, unittest.equals('foo'));
+    unittest.expect(o.pageSize, unittest.equals(42));
+    unittest.expect(o.pageToken, unittest.equals('foo'));
+  }
+  buildCounterQueryTestablePermissionsRequest--;
+}
+
+buildUnnamed1269() {
+  var o = new core.List<api.Permission>();
+  o.add(buildPermission());
+  o.add(buildPermission());
+  return o;
+}
+
+checkUnnamed1269(core.List<api.Permission> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPermission(o[0]);
+  checkPermission(o[1]);
+}
+
+core.int buildCounterQueryTestablePermissionsResponse = 0;
+buildQueryTestablePermissionsResponse() {
+  var o = new api.QueryTestablePermissionsResponse();
+  buildCounterQueryTestablePermissionsResponse++;
+  if (buildCounterQueryTestablePermissionsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.permissions = buildUnnamed1269();
+  }
+  buildCounterQueryTestablePermissionsResponse--;
+  return o;
+}
+
+checkQueryTestablePermissionsResponse(api.QueryTestablePermissionsResponse o) {
+  buildCounterQueryTestablePermissionsResponse++;
+  if (buildCounterQueryTestablePermissionsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1269(o.permissions);
+  }
+  buildCounterQueryTestablePermissionsResponse--;
+}
+
+buildUnnamed1270() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1270(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterRole = 0;
+buildRole() {
+  var o = new api.Role();
+  buildCounterRole++;
+  if (buildCounterRole < 3) {
+    o.deleted = true;
+    o.description = "foo";
+    o.etag = "foo";
+    o.includedPermissions = buildUnnamed1270();
+    o.name = "foo";
+    o.stage = "foo";
+    o.title = "foo";
+  }
+  buildCounterRole--;
+  return o;
+}
+
+checkRole(api.Role o) {
+  buildCounterRole++;
+  if (buildCounterRole < 3) {
+    unittest.expect(o.deleted, unittest.isTrue);
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1270(o.includedPermissions);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.stage, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterRole--;
+}
+
+core.int buildCounterServiceAccount = 0;
+buildServiceAccount() {
+  var o = new api.ServiceAccount();
+  buildCounterServiceAccount++;
+  if (buildCounterServiceAccount < 3) {
+    o.displayName = "foo";
+    o.email = "foo";
+    o.etag = "foo";
+    o.name = "foo";
+    o.oauth2ClientId = "foo";
+    o.projectId = "foo";
+    o.uniqueId = "foo";
+  }
+  buildCounterServiceAccount--;
+  return o;
+}
+
+checkServiceAccount(api.ServiceAccount o) {
+  buildCounterServiceAccount++;
+  if (buildCounterServiceAccount < 3) {
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.oauth2ClientId, unittest.equals('foo'));
+    unittest.expect(o.projectId, unittest.equals('foo'));
+    unittest.expect(o.uniqueId, unittest.equals('foo'));
+  }
+  buildCounterServiceAccount--;
+}
+
+core.int buildCounterServiceAccountKey = 0;
+buildServiceAccountKey() {
+  var o = new api.ServiceAccountKey();
+  buildCounterServiceAccountKey++;
+  if (buildCounterServiceAccountKey < 3) {
+    o.keyAlgorithm = "foo";
+    o.name = "foo";
+    o.privateKeyData = "foo";
+    o.privateKeyType = "foo";
+    o.publicKeyData = "foo";
+    o.validAfterTime = "foo";
+    o.validBeforeTime = "foo";
+  }
+  buildCounterServiceAccountKey--;
+  return o;
+}
+
+checkServiceAccountKey(api.ServiceAccountKey o) {
+  buildCounterServiceAccountKey++;
+  if (buildCounterServiceAccountKey < 3) {
+    unittest.expect(o.keyAlgorithm, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.privateKeyData, unittest.equals('foo'));
+    unittest.expect(o.privateKeyType, unittest.equals('foo'));
+    unittest.expect(o.publicKeyData, unittest.equals('foo'));
+    unittest.expect(o.validAfterTime, unittest.equals('foo'));
+    unittest.expect(o.validBeforeTime, unittest.equals('foo'));
+  }
+  buildCounterServiceAccountKey--;
+}
+
+core.int buildCounterSetIamPolicyRequest = 0;
+buildSetIamPolicyRequest() {
+  var o = new api.SetIamPolicyRequest();
+  buildCounterSetIamPolicyRequest++;
+  if (buildCounterSetIamPolicyRequest < 3) {
+    o.policy = buildPolicy();
+  }
+  buildCounterSetIamPolicyRequest--;
+  return o;
+}
+
+checkSetIamPolicyRequest(api.SetIamPolicyRequest o) {
+  buildCounterSetIamPolicyRequest++;
+  if (buildCounterSetIamPolicyRequest < 3) {
+    checkPolicy(o.policy);
+  }
+  buildCounterSetIamPolicyRequest--;
+}
+
+core.int buildCounterSignBlobRequest = 0;
+buildSignBlobRequest() {
+  var o = new api.SignBlobRequest();
+  buildCounterSignBlobRequest++;
+  if (buildCounterSignBlobRequest < 3) {
+    o.bytesToSign = "foo";
+  }
+  buildCounterSignBlobRequest--;
+  return o;
+}
+
+checkSignBlobRequest(api.SignBlobRequest o) {
+  buildCounterSignBlobRequest++;
+  if (buildCounterSignBlobRequest < 3) {
+    unittest.expect(o.bytesToSign, unittest.equals('foo'));
+  }
+  buildCounterSignBlobRequest--;
+}
+
+core.int buildCounterSignBlobResponse = 0;
+buildSignBlobResponse() {
+  var o = new api.SignBlobResponse();
+  buildCounterSignBlobResponse++;
+  if (buildCounterSignBlobResponse < 3) {
+    o.keyId = "foo";
+    o.signature = "foo";
+  }
+  buildCounterSignBlobResponse--;
+  return o;
+}
+
+checkSignBlobResponse(api.SignBlobResponse o) {
+  buildCounterSignBlobResponse++;
+  if (buildCounterSignBlobResponse < 3) {
+    unittest.expect(o.keyId, unittest.equals('foo'));
+    unittest.expect(o.signature, unittest.equals('foo'));
+  }
+  buildCounterSignBlobResponse--;
+}
+
+core.int buildCounterSignJwtRequest = 0;
+buildSignJwtRequest() {
+  var o = new api.SignJwtRequest();
+  buildCounterSignJwtRequest++;
+  if (buildCounterSignJwtRequest < 3) {
+    o.payload = "foo";
+  }
+  buildCounterSignJwtRequest--;
+  return o;
+}
+
+checkSignJwtRequest(api.SignJwtRequest o) {
+  buildCounterSignJwtRequest++;
+  if (buildCounterSignJwtRequest < 3) {
+    unittest.expect(o.payload, unittest.equals('foo'));
+  }
+  buildCounterSignJwtRequest--;
+}
+
+core.int buildCounterSignJwtResponse = 0;
+buildSignJwtResponse() {
+  var o = new api.SignJwtResponse();
+  buildCounterSignJwtResponse++;
+  if (buildCounterSignJwtResponse < 3) {
+    o.keyId = "foo";
+    o.signedJwt = "foo";
+  }
+  buildCounterSignJwtResponse--;
+  return o;
+}
+
+checkSignJwtResponse(api.SignJwtResponse o) {
+  buildCounterSignJwtResponse++;
+  if (buildCounterSignJwtResponse < 3) {
+    unittest.expect(o.keyId, unittest.equals('foo'));
+    unittest.expect(o.signedJwt, unittest.equals('foo'));
+  }
+  buildCounterSignJwtResponse--;
+}
+
+buildUnnamed1271() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1271(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterTestIamPermissionsRequest = 0;
+buildTestIamPermissionsRequest() {
+  var o = new api.TestIamPermissionsRequest();
+  buildCounterTestIamPermissionsRequest++;
+  if (buildCounterTestIamPermissionsRequest < 3) {
+    o.permissions = buildUnnamed1271();
+  }
+  buildCounterTestIamPermissionsRequest--;
+  return o;
+}
+
+checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
+  buildCounterTestIamPermissionsRequest++;
+  if (buildCounterTestIamPermissionsRequest < 3) {
+    checkUnnamed1271(o.permissions);
+  }
+  buildCounterTestIamPermissionsRequest--;
+}
+
+buildUnnamed1272() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1272(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterTestIamPermissionsResponse = 0;
+buildTestIamPermissionsResponse() {
+  var o = new api.TestIamPermissionsResponse();
+  buildCounterTestIamPermissionsResponse++;
+  if (buildCounterTestIamPermissionsResponse < 3) {
+    o.permissions = buildUnnamed1272();
+  }
+  buildCounterTestIamPermissionsResponse--;
+  return o;
+}
+
+checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
+  buildCounterTestIamPermissionsResponse++;
+  if (buildCounterTestIamPermissionsResponse < 3) {
+    checkUnnamed1272(o.permissions);
+  }
+  buildCounterTestIamPermissionsResponse--;
+}
+
+core.int buildCounterUndeleteRoleRequest = 0;
+buildUndeleteRoleRequest() {
+  var o = new api.UndeleteRoleRequest();
+  buildCounterUndeleteRoleRequest++;
+  if (buildCounterUndeleteRoleRequest < 3) {
+    o.etag = "foo";
+  }
+  buildCounterUndeleteRoleRequest--;
+  return o;
+}
+
+checkUndeleteRoleRequest(api.UndeleteRoleRequest o) {
+  buildCounterUndeleteRoleRequest++;
+  if (buildCounterUndeleteRoleRequest < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+  }
+  buildCounterUndeleteRoleRequest--;
+}
+
+buildUnnamed1273() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1273(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-AuditData", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAuditData();
+      var od = new api.AuditData.fromJson(o.toJson());
+      checkAuditData(od);
+    });
+  });
+
+  unittest.group("obj-schema-Binding", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBinding();
+      var od = new api.Binding.fromJson(o.toJson());
+      checkBinding(od);
+    });
+  });
+
+  unittest.group("obj-schema-BindingDelta", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBindingDelta();
+      var od = new api.BindingDelta.fromJson(o.toJson());
+      checkBindingDelta(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateRoleRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateRoleRequest();
+      var od = new api.CreateRoleRequest.fromJson(o.toJson());
+      checkCreateRoleRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateServiceAccountKeyRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateServiceAccountKeyRequest();
+      var od = new api.CreateServiceAccountKeyRequest.fromJson(o.toJson());
+      checkCreateServiceAccountKeyRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateServiceAccountRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateServiceAccountRequest();
+      var od = new api.CreateServiceAccountRequest.fromJson(o.toJson());
+      checkCreateServiceAccountRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Empty", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEmpty();
+      var od = new api.Empty.fromJson(o.toJson());
+      checkEmpty(od);
+    });
+  });
+
+  unittest.group("obj-schema-Expr", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildExpr();
+      var od = new api.Expr.fromJson(o.toJson());
+      checkExpr(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListRolesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListRolesResponse();
+      var od = new api.ListRolesResponse.fromJson(o.toJson());
+      checkListRolesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListServiceAccountKeysResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListServiceAccountKeysResponse();
+      var od = new api.ListServiceAccountKeysResponse.fromJson(o.toJson());
+      checkListServiceAccountKeysResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListServiceAccountsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListServiceAccountsResponse();
+      var od = new api.ListServiceAccountsResponse.fromJson(o.toJson());
+      checkListServiceAccountsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Permission", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPermission();
+      var od = new api.Permission.fromJson(o.toJson());
+      checkPermission(od);
+    });
+  });
+
+  unittest.group("obj-schema-Policy", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPolicy();
+      var od = new api.Policy.fromJson(o.toJson());
+      checkPolicy(od);
+    });
+  });
+
+  unittest.group("obj-schema-PolicyDelta", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPolicyDelta();
+      var od = new api.PolicyDelta.fromJson(o.toJson());
+      checkPolicyDelta(od);
+    });
+  });
+
+  unittest.group("obj-schema-QueryGrantableRolesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildQueryGrantableRolesRequest();
+      var od = new api.QueryGrantableRolesRequest.fromJson(o.toJson());
+      checkQueryGrantableRolesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-QueryGrantableRolesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildQueryGrantableRolesResponse();
+      var od = new api.QueryGrantableRolesResponse.fromJson(o.toJson());
+      checkQueryGrantableRolesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-QueryTestablePermissionsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildQueryTestablePermissionsRequest();
+      var od = new api.QueryTestablePermissionsRequest.fromJson(o.toJson());
+      checkQueryTestablePermissionsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-QueryTestablePermissionsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildQueryTestablePermissionsResponse();
+      var od = new api.QueryTestablePermissionsResponse.fromJson(o.toJson());
+      checkQueryTestablePermissionsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Role", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRole();
+      var od = new api.Role.fromJson(o.toJson());
+      checkRole(od);
+    });
+  });
+
+  unittest.group("obj-schema-ServiceAccount", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildServiceAccount();
+      var od = new api.ServiceAccount.fromJson(o.toJson());
+      checkServiceAccount(od);
+    });
+  });
+
+  unittest.group("obj-schema-ServiceAccountKey", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildServiceAccountKey();
+      var od = new api.ServiceAccountKey.fromJson(o.toJson());
+      checkServiceAccountKey(od);
+    });
+  });
+
+  unittest.group("obj-schema-SetIamPolicyRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSetIamPolicyRequest();
+      var od = new api.SetIamPolicyRequest.fromJson(o.toJson());
+      checkSetIamPolicyRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-SignBlobRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSignBlobRequest();
+      var od = new api.SignBlobRequest.fromJson(o.toJson());
+      checkSignBlobRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-SignBlobResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSignBlobResponse();
+      var od = new api.SignBlobResponse.fromJson(o.toJson());
+      checkSignBlobResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-SignJwtRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSignJwtRequest();
+      var od = new api.SignJwtRequest.fromJson(o.toJson());
+      checkSignJwtRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-SignJwtResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSignJwtResponse();
+      var od = new api.SignJwtResponse.fromJson(o.toJson());
+      checkSignJwtResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestIamPermissionsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestIamPermissionsRequest();
+      var od = new api.TestIamPermissionsRequest.fromJson(o.toJson());
+      checkTestIamPermissionsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestIamPermissionsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestIamPermissionsResponse();
+      var od = new api.TestIamPermissionsResponse.fromJson(o.toJson());
+      checkTestIamPermissionsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-UndeleteRoleRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUndeleteRoleRequest();
+      var od = new api.UndeleteRoleRequest.fromJson(o.toJson());
+      checkUndeleteRoleRequest(od);
+    });
+  });
+
+  unittest.group("resource-OrganizationsRolesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.OrganizationsRolesResourceApi res =
+          new api.IamApi(mock).organizations.roles;
+      var arg_request = buildCreateRoleRequest();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreateRoleRequest.fromJson(json);
+        checkCreateRoleRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRole());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Role response) {
+        checkRole(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.OrganizationsRolesResourceApi res =
+          new api.IamApi(mock).organizations.roles;
+      var arg_name = "foo";
+      var arg_etag = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["etag"].first, unittest.equals(arg_etag));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRole());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, etag: arg_etag, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Role response) {
+        checkRole(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.OrganizationsRolesResourceApi res =
+          new api.IamApi(mock).organizations.roles;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRole());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Role response) {
+        checkRole(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.OrganizationsRolesResourceApi res =
+          new api.IamApi(mock).organizations.roles;
+      var arg_parent = "foo";
+      var arg_showDeleted = true;
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_view = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["showDeleted"].first, unittest.equals("$arg_showDeleted"));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListRolesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              showDeleted: arg_showDeleted,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              view: arg_view,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListRolesResponse response) {
+        checkListRolesResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.OrganizationsRolesResourceApi res =
+          new api.IamApi(mock).organizations.roles;
+      var arg_request = buildRole();
+      var arg_name = "foo";
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Role.fromJson(json);
+        checkRole(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRole());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Role response) {
+        checkRole(response);
+      })));
+    });
+
+    unittest.test("method--undelete", () {
+      var mock = new HttpServerMock();
+      api.OrganizationsRolesResourceApi res =
+          new api.IamApi(mock).organizations.roles;
+      var arg_request = buildUndeleteRoleRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UndeleteRoleRequest.fromJson(json);
+        checkUndeleteRoleRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRole());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .undelete(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Role response) {
+        checkRole(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PermissionsResourceApi", () {
+    unittest.test("method--queryTestablePermissions", () {
+      var mock = new HttpServerMock();
+      api.PermissionsResourceApi res = new api.IamApi(mock).permissions;
+      var arg_request = buildQueryTestablePermissionsRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.QueryTestablePermissionsRequest.fromJson(json);
+        checkQueryTestablePermissionsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 39),
+            unittest.equals("v1/permissions:queryTestablePermissions"));
+        pathOffset += 39;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildQueryTestablePermissionsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.queryTestablePermissions(arg_request, $fields: arg_$fields).then(
+          unittest
+              .expectAsync1(((api.QueryTestablePermissionsResponse response) {
+        checkQueryTestablePermissionsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsRolesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsRolesResourceApi res = new api.IamApi(mock).projects.roles;
+      var arg_request = buildCreateRoleRequest();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreateRoleRequest.fromJson(json);
+        checkCreateRoleRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRole());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Role response) {
+        checkRole(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsRolesResourceApi res = new api.IamApi(mock).projects.roles;
+      var arg_name = "foo";
+      var arg_etag = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["etag"].first, unittest.equals(arg_etag));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRole());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, etag: arg_etag, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Role response) {
+        checkRole(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsRolesResourceApi res = new api.IamApi(mock).projects.roles;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRole());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Role response) {
+        checkRole(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsRolesResourceApi res = new api.IamApi(mock).projects.roles;
+      var arg_parent = "foo";
+      var arg_showDeleted = true;
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_view = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["showDeleted"].first, unittest.equals("$arg_showDeleted"));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListRolesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              showDeleted: arg_showDeleted,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              view: arg_view,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListRolesResponse response) {
+        checkListRolesResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ProjectsRolesResourceApi res = new api.IamApi(mock).projects.roles;
+      var arg_request = buildRole();
+      var arg_name = "foo";
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Role.fromJson(json);
+        checkRole(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRole());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Role response) {
+        checkRole(response);
+      })));
+    });
+
+    unittest.test("method--undelete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsRolesResourceApi res = new api.IamApi(mock).projects.roles;
+      var arg_request = buildUndeleteRoleRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UndeleteRoleRequest.fromJson(json);
+        checkUndeleteRoleRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRole());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .undelete(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Role response) {
+        checkRole(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsServiceAccountsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsServiceAccountsResourceApi res =
+          new api.IamApi(mock).projects.serviceAccounts;
+      var arg_request = buildCreateServiceAccountRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreateServiceAccountRequest.fromJson(json);
+        checkCreateServiceAccountRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildServiceAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ServiceAccount response) {
+        checkServiceAccount(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsServiceAccountsResourceApi res =
+          new api.IamApi(mock).projects.serviceAccounts;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsServiceAccountsResourceApi res =
+          new api.IamApi(mock).projects.serviceAccounts;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildServiceAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ServiceAccount response) {
+        checkServiceAccount(response);
+      })));
+    });
+
+    unittest.test("method--getIamPolicy", () {
+      var mock = new HttpServerMock();
+      api.ProjectsServiceAccountsResourceApi res =
+          new api.IamApi(mock).projects.serviceAccounts;
+      var arg_resource = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPolicy());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getIamPolicy(arg_resource, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Policy response) {
+        checkPolicy(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsServiceAccountsResourceApi res =
+          new api.IamApi(mock).projects.serviceAccounts;
+      var arg_name = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListServiceAccountsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_name,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListServiceAccountsResponse response) {
+        checkListServiceAccountsResponse(response);
+      })));
+    });
+
+    unittest.test("method--setIamPolicy", () {
+      var mock = new HttpServerMock();
+      api.ProjectsServiceAccountsResourceApi res =
+          new api.IamApi(mock).projects.serviceAccounts;
+      var arg_request = buildSetIamPolicyRequest();
+      var arg_resource = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.SetIamPolicyRequest.fromJson(json);
+        checkSetIamPolicyRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPolicy());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Policy response) {
+        checkPolicy(response);
+      })));
+    });
+
+    unittest.test("method--signBlob", () {
+      var mock = new HttpServerMock();
+      api.ProjectsServiceAccountsResourceApi res =
+          new api.IamApi(mock).projects.serviceAccounts;
+      var arg_request = buildSignBlobRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.SignBlobRequest.fromJson(json);
+        checkSignBlobRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSignBlobResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .signBlob(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SignBlobResponse response) {
+        checkSignBlobResponse(response);
+      })));
+    });
+
+    unittest.test("method--signJwt", () {
+      var mock = new HttpServerMock();
+      api.ProjectsServiceAccountsResourceApi res =
+          new api.IamApi(mock).projects.serviceAccounts;
+      var arg_request = buildSignJwtRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.SignJwtRequest.fromJson(json);
+        checkSignJwtRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSignJwtResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .signJwt(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SignJwtResponse response) {
+        checkSignJwtResponse(response);
+      })));
+    });
+
+    unittest.test("method--testIamPermissions", () {
+      var mock = new HttpServerMock();
+      api.ProjectsServiceAccountsResourceApi res =
+          new api.IamApi(mock).projects.serviceAccounts;
+      var arg_request = buildTestIamPermissionsRequest();
+      var arg_resource = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.TestIamPermissionsRequest.fromJson(json);
+        checkTestIamPermissionsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+        checkTestIamPermissionsResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.ProjectsServiceAccountsResourceApi res =
+          new api.IamApi(mock).projects.serviceAccounts;
+      var arg_request = buildServiceAccount();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ServiceAccount.fromJson(json);
+        checkServiceAccount(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildServiceAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ServiceAccount response) {
+        checkServiceAccount(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsServiceAccountsKeysResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsServiceAccountsKeysResourceApi res =
+          new api.IamApi(mock).projects.serviceAccounts.keys;
+      var arg_request = buildCreateServiceAccountKeyRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreateServiceAccountKeyRequest.fromJson(json);
+        checkCreateServiceAccountKeyRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildServiceAccountKey());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ServiceAccountKey response) {
+        checkServiceAccountKey(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsServiceAccountsKeysResourceApi res =
+          new api.IamApi(mock).projects.serviceAccounts.keys;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsServiceAccountsKeysResourceApi res =
+          new api.IamApi(mock).projects.serviceAccounts.keys;
+      var arg_name = "foo";
+      var arg_publicKeyType = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["publicKeyType"].first,
+            unittest.equals(arg_publicKeyType));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildServiceAccountKey());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, publicKeyType: arg_publicKeyType, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ServiceAccountKey response) {
+        checkServiceAccountKey(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsServiceAccountsKeysResourceApi res =
+          new api.IamApi(mock).projects.serviceAccounts.keys;
+      var arg_name = "foo";
+      var arg_keyTypes = buildUnnamed1273();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["keyTypes"], unittest.equals(arg_keyTypes));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListServiceAccountKeysResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.list(arg_name, keyTypes: arg_keyTypes, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.ListServiceAccountKeysResponse response) {
+        checkListServiceAccountKeysResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-RolesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.RolesResourceApi res = new api.IamApi(mock).roles;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRole());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Role response) {
+        checkRole(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.RolesResourceApi res = new api.IamApi(mock).roles;
+      var arg_view = "foo";
+      var arg_parent = "foo";
+      var arg_showDeleted = true;
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1/roles"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["parent"].first, unittest.equals(arg_parent));
+        unittest.expect(
+            queryMap["showDeleted"].first, unittest.equals("$arg_showDeleted"));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListRolesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              view: arg_view,
+              parent: arg_parent,
+              showDeleted: arg_showDeleted,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListRolesResponse response) {
+        checkListRolesResponse(response);
+      })));
+    });
+
+    unittest.test("method--queryGrantableRoles", () {
+      var mock = new HttpServerMock();
+      api.RolesResourceApi res = new api.IamApi(mock).roles;
+      var arg_request = buildQueryGrantableRolesRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.QueryGrantableRolesRequest.fromJson(json);
+        checkQueryGrantableRolesRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 28),
+            unittest.equals("v1/roles:queryGrantableRoles"));
+        pathOffset += 28;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildQueryGrantableRolesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.queryGrantableRoles(arg_request, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.QueryGrantableRolesResponse response) {
+        checkQueryGrantableRolesResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/identitytoolkit/v3_test.dart b/generated/googleapis/test/identitytoolkit/v3_test.dart
index 34141f2..94bb15d 100644
--- a/generated/googleapis/test/identitytoolkit/v3_test.dart
+++ b/generated/googleapis/test/identitytoolkit/v3_test.dart
@@ -50,27 +50,27 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed2565() {
+buildUnnamed2580() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2565(core.List<core.String> o) {
+checkUnnamed2580(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2566() {
+buildUnnamed2581() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2566(core.List<core.String> o) {
+checkUnnamed2581(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -81,7 +81,7 @@
   var o = new api.CreateAuthUriResponse();
   buildCounterCreateAuthUriResponse++;
   if (buildCounterCreateAuthUriResponse < 3) {
-    o.allProviders = buildUnnamed2565();
+    o.allProviders = buildUnnamed2580();
     o.authUri = "foo";
     o.captchaRequired = true;
     o.forExistingProvider = true;
@@ -89,7 +89,7 @@
     o.providerId = "foo";
     o.registered = true;
     o.sessionId = "foo";
-    o.signinMethods = buildUnnamed2566();
+    o.signinMethods = buildUnnamed2581();
   }
   buildCounterCreateAuthUriResponse--;
   return o;
@@ -98,7 +98,7 @@
 checkCreateAuthUriResponse(api.CreateAuthUriResponse o) {
   buildCounterCreateAuthUriResponse++;
   if (buildCounterCreateAuthUriResponse < 3) {
-    checkUnnamed2565(o.allProviders);
+    checkUnnamed2580(o.allProviders);
     unittest.expect(o.authUri, unittest.equals('foo'));
     unittest.expect(o.captchaRequired, unittest.isTrue);
     unittest.expect(o.forExistingProvider, unittest.isTrue);
@@ -106,7 +106,7 @@
     unittest.expect(o.providerId, unittest.equals('foo'));
     unittest.expect(o.registered, unittest.isTrue);
     unittest.expect(o.sessionId, unittest.equals('foo'));
-    checkUnnamed2566(o.signinMethods);
+    checkUnnamed2581(o.signinMethods);
   }
   buildCounterCreateAuthUriResponse--;
 }
@@ -130,14 +130,14 @@
   buildCounterDeleteAccountResponse--;
 }
 
-buildUnnamed2567() {
+buildUnnamed2582() {
   var o = new core.List<api.UserInfo>();
   o.add(buildUserInfo());
   o.add(buildUserInfo());
   return o;
 }
 
-checkUnnamed2567(core.List<api.UserInfo> o) {
+checkUnnamed2582(core.List<api.UserInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUserInfo(o[0]);
   checkUserInfo(o[1]);
@@ -150,7 +150,7 @@
   if (buildCounterDownloadAccountResponse < 3) {
     o.kind = "foo";
     o.nextPageToken = "foo";
-    o.users = buildUnnamed2567();
+    o.users = buildUnnamed2582();
   }
   buildCounterDownloadAccountResponse--;
   return o;
@@ -161,7 +161,7 @@
   if (buildCounterDownloadAccountResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2567(o.users);
+    checkUnnamed2582(o.users);
   }
   buildCounterDownloadAccountResponse--;
 }
@@ -226,14 +226,14 @@
   buildCounterEmailTemplate--;
 }
 
-buildUnnamed2568() {
+buildUnnamed2583() {
   var o = new core.List<api.UserInfo>();
   o.add(buildUserInfo());
   o.add(buildUserInfo());
   return o;
 }
 
-checkUnnamed2568(core.List<api.UserInfo> o) {
+checkUnnamed2583(core.List<api.UserInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUserInfo(o[0]);
   checkUserInfo(o[1]);
@@ -245,7 +245,7 @@
   buildCounterGetAccountInfoResponse++;
   if (buildCounterGetAccountInfoResponse < 3) {
     o.kind = "foo";
-    o.users = buildUnnamed2568();
+    o.users = buildUnnamed2583();
   }
   buildCounterGetAccountInfoResponse--;
   return o;
@@ -255,7 +255,7 @@
   buildCounterGetAccountInfoResponse++;
   if (buildCounterGetAccountInfoResponse < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2568(o.users);
+    checkUnnamed2583(o.users);
   }
   buildCounterGetAccountInfoResponse--;
 }
@@ -306,14 +306,14 @@
   buildCounterGetRecaptchaParamResponse--;
 }
 
-buildUnnamed2569() {
+buildUnnamed2584() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed2569(core.Map<core.String, core.String> o) {
+checkUnnamed2584(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -329,7 +329,7 @@
     o.clientId = "foo";
     o.context = "foo";
     o.continueUri = "foo";
-    o.customParameter = buildUnnamed2569();
+    o.customParameter = buildUnnamed2584();
     o.hostedDomain = "foo";
     o.identifier = "foo";
     o.oauthConsumerKey = "foo";
@@ -352,7 +352,7 @@
     unittest.expect(o.clientId, unittest.equals('foo'));
     unittest.expect(o.context, unittest.equals('foo'));
     unittest.expect(o.continueUri, unittest.equals('foo'));
-    checkUnnamed2569(o.customParameter);
+    checkUnnamed2584(o.customParameter);
     unittest.expect(o.hostedDomain, unittest.equals('foo'));
     unittest.expect(o.identifier, unittest.equals('foo'));
     unittest.expect(o.oauthConsumerKey, unittest.equals('foo'));
@@ -439,40 +439,40 @@
   buildCounterIdentitytoolkitRelyingpartyEmailLinkSigninRequest--;
 }
 
-buildUnnamed2570() {
+buildUnnamed2585() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2570(core.List<core.String> o) {
+checkUnnamed2585(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2571() {
+buildUnnamed2586() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2571(core.List<core.String> o) {
+checkUnnamed2586(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2572() {
+buildUnnamed2587() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2572(core.List<core.String> o) {
+checkUnnamed2587(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -484,10 +484,10 @@
   buildCounterIdentitytoolkitRelyingpartyGetAccountInfoRequest++;
   if (buildCounterIdentitytoolkitRelyingpartyGetAccountInfoRequest < 3) {
     o.delegatedProjectNumber = "foo";
-    o.email = buildUnnamed2570();
+    o.email = buildUnnamed2585();
     o.idToken = "foo";
-    o.localId = buildUnnamed2571();
-    o.phoneNumber = buildUnnamed2572();
+    o.localId = buildUnnamed2586();
+    o.phoneNumber = buildUnnamed2587();
   }
   buildCounterIdentitytoolkitRelyingpartyGetAccountInfoRequest--;
   return o;
@@ -498,35 +498,35 @@
   buildCounterIdentitytoolkitRelyingpartyGetAccountInfoRequest++;
   if (buildCounterIdentitytoolkitRelyingpartyGetAccountInfoRequest < 3) {
     unittest.expect(o.delegatedProjectNumber, unittest.equals('foo'));
-    checkUnnamed2570(o.email);
+    checkUnnamed2585(o.email);
     unittest.expect(o.idToken, unittest.equals('foo'));
-    checkUnnamed2571(o.localId);
-    checkUnnamed2572(o.phoneNumber);
+    checkUnnamed2586(o.localId);
+    checkUnnamed2587(o.phoneNumber);
   }
   buildCounterIdentitytoolkitRelyingpartyGetAccountInfoRequest--;
 }
 
-buildUnnamed2573() {
+buildUnnamed2588() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2573(core.List<core.String> o) {
+checkUnnamed2588(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2574() {
+buildUnnamed2589() {
   var o = new core.List<api.IdpConfig>();
   o.add(buildIdpConfig());
   o.add(buildIdpConfig());
   return o;
 }
 
-checkUnnamed2574(core.List<api.IdpConfig> o) {
+checkUnnamed2589(core.List<api.IdpConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkIdpConfig(o[0]);
   checkIdpConfig(o[1]);
@@ -539,11 +539,11 @@
   if (buildCounterIdentitytoolkitRelyingpartyGetProjectConfigResponse < 3) {
     o.allowPasswordUser = true;
     o.apiKey = "foo";
-    o.authorizedDomains = buildUnnamed2573();
+    o.authorizedDomains = buildUnnamed2588();
     o.changeEmailTemplate = buildEmailTemplate();
     o.dynamicLinksDomain = "foo";
     o.enableAnonymousUser = true;
-    o.idpConfig = buildUnnamed2574();
+    o.idpConfig = buildUnnamed2589();
     o.legacyResetPasswordTemplate = buildEmailTemplate();
     o.projectId = "foo";
     o.resetPasswordTemplate = buildEmailTemplate();
@@ -560,11 +560,11 @@
   if (buildCounterIdentitytoolkitRelyingpartyGetProjectConfigResponse < 3) {
     unittest.expect(o.allowPasswordUser, unittest.isTrue);
     unittest.expect(o.apiKey, unittest.equals('foo'));
-    checkUnnamed2573(o.authorizedDomains);
+    checkUnnamed2588(o.authorizedDomains);
     checkEmailTemplate(o.changeEmailTemplate);
     unittest.expect(o.dynamicLinksDomain, unittest.equals('foo'));
     unittest.expect(o.enableAnonymousUser, unittest.isTrue);
-    checkUnnamed2574(o.idpConfig);
+    checkUnnamed2589(o.idpConfig);
     checkEmailTemplate(o.legacyResetPasswordTemplate);
     unittest.expect(o.projectId, unittest.equals('foo'));
     checkEmailTemplate(o.resetPasswordTemplate);
@@ -661,40 +661,40 @@
   buildCounterIdentitytoolkitRelyingpartySendVerificationCodeResponse--;
 }
 
-buildUnnamed2575() {
+buildUnnamed2590() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2575(core.List<core.String> o) {
+checkUnnamed2590(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2576() {
+buildUnnamed2591() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2576(core.List<core.String> o) {
+checkUnnamed2591(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2577() {
+buildUnnamed2592() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2577(core.List<core.String> o) {
+checkUnnamed2592(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -710,8 +710,8 @@
     o.createdAt = "foo";
     o.customAttributes = "foo";
     o.delegatedProjectNumber = "foo";
-    o.deleteAttribute = buildUnnamed2575();
-    o.deleteProvider = buildUnnamed2576();
+    o.deleteAttribute = buildUnnamed2590();
+    o.deleteProvider = buildUnnamed2591();
     o.disableUser = true;
     o.displayName = "foo";
     o.email = "foo";
@@ -724,7 +724,7 @@
     o.password = "foo";
     o.phoneNumber = "foo";
     o.photoUrl = "foo";
-    o.provider = buildUnnamed2577();
+    o.provider = buildUnnamed2592();
     o.returnSecureToken = true;
     o.upgradeToFederatedLogin = true;
     o.validSince = "foo";
@@ -742,8 +742,8 @@
     unittest.expect(o.createdAt, unittest.equals('foo'));
     unittest.expect(o.customAttributes, unittest.equals('foo'));
     unittest.expect(o.delegatedProjectNumber, unittest.equals('foo'));
-    checkUnnamed2575(o.deleteAttribute);
-    checkUnnamed2576(o.deleteProvider);
+    checkUnnamed2590(o.deleteAttribute);
+    checkUnnamed2591(o.deleteProvider);
     unittest.expect(o.disableUser, unittest.isTrue);
     unittest.expect(o.displayName, unittest.equals('foo'));
     unittest.expect(o.email, unittest.equals('foo'));
@@ -756,7 +756,7 @@
     unittest.expect(o.password, unittest.equals('foo'));
     unittest.expect(o.phoneNumber, unittest.equals('foo'));
     unittest.expect(o.photoUrl, unittest.equals('foo'));
-    checkUnnamed2577(o.provider);
+    checkUnnamed2592(o.provider);
     unittest.expect(o.returnSecureToken, unittest.isTrue);
     unittest.expect(o.upgradeToFederatedLogin, unittest.isTrue);
     unittest.expect(o.validSince, unittest.equals('foo'));
@@ -764,27 +764,27 @@
   buildCounterIdentitytoolkitRelyingpartySetAccountInfoRequest--;
 }
 
-buildUnnamed2578() {
+buildUnnamed2593() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2578(core.List<core.String> o) {
+checkUnnamed2593(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2579() {
+buildUnnamed2594() {
   var o = new core.List<api.IdpConfig>();
   o.add(buildIdpConfig());
   o.add(buildIdpConfig());
   return o;
 }
 
-checkUnnamed2579(core.List<api.IdpConfig> o) {
+checkUnnamed2594(core.List<api.IdpConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkIdpConfig(o[0]);
   checkIdpConfig(o[1]);
@@ -797,11 +797,11 @@
   if (buildCounterIdentitytoolkitRelyingpartySetProjectConfigRequest < 3) {
     o.allowPasswordUser = true;
     o.apiKey = "foo";
-    o.authorizedDomains = buildUnnamed2578();
+    o.authorizedDomains = buildUnnamed2593();
     o.changeEmailTemplate = buildEmailTemplate();
     o.delegatedProjectNumber = "foo";
     o.enableAnonymousUser = true;
-    o.idpConfig = buildUnnamed2579();
+    o.idpConfig = buildUnnamed2594();
     o.legacyResetPasswordTemplate = buildEmailTemplate();
     o.resetPasswordTemplate = buildEmailTemplate();
     o.useEmailSending = true;
@@ -817,11 +817,11 @@
   if (buildCounterIdentitytoolkitRelyingpartySetProjectConfigRequest < 3) {
     unittest.expect(o.allowPasswordUser, unittest.isTrue);
     unittest.expect(o.apiKey, unittest.equals('foo'));
-    checkUnnamed2578(o.authorizedDomains);
+    checkUnnamed2593(o.authorizedDomains);
     checkEmailTemplate(o.changeEmailTemplate);
     unittest.expect(o.delegatedProjectNumber, unittest.equals('foo'));
     unittest.expect(o.enableAnonymousUser, unittest.isTrue);
-    checkUnnamed2579(o.idpConfig);
+    checkUnnamed2594(o.idpConfig);
     checkEmailTemplate(o.legacyResetPasswordTemplate);
     checkEmailTemplate(o.resetPasswordTemplate);
     unittest.expect(o.useEmailSending, unittest.isTrue);
@@ -934,14 +934,14 @@
   buildCounterIdentitytoolkitRelyingpartySignupNewUserRequest--;
 }
 
-buildUnnamed2580() {
+buildUnnamed2595() {
   var o = new core.List<api.UserInfo>();
   o.add(buildUserInfo());
   o.add(buildUserInfo());
   return o;
 }
 
-checkUnnamed2580(core.List<api.UserInfo> o) {
+checkUnnamed2595(core.List<api.UserInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUserInfo(o[0]);
   checkUserInfo(o[1]);
@@ -965,7 +965,7 @@
     o.sanityCheck = true;
     o.signerKey = "foo";
     o.targetProjectId = "foo";
-    o.users = buildUnnamed2580();
+    o.users = buildUnnamed2595();
   }
   buildCounterIdentitytoolkitRelyingpartyUploadAccountRequest--;
   return o;
@@ -988,7 +988,7 @@
     unittest.expect(o.sanityCheck, unittest.isTrue);
     unittest.expect(o.signerKey, unittest.equals('foo'));
     unittest.expect(o.targetProjectId, unittest.equals('foo'));
-    checkUnnamed2580(o.users);
+    checkUnnamed2595(o.users);
   }
   buildCounterIdentitytoolkitRelyingpartyUploadAccountRequest--;
 }
@@ -1165,14 +1165,14 @@
   buildCounterIdentitytoolkitRelyingpartyVerifyPhoneNumberResponse--;
 }
 
-buildUnnamed2581() {
+buildUnnamed2596() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2581(core.List<core.String> o) {
+checkUnnamed2596(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1188,7 +1188,7 @@
     o.experimentPercent = 42;
     o.provider = "foo";
     o.secret = "foo";
-    o.whitelistedAudiences = buildUnnamed2581();
+    o.whitelistedAudiences = buildUnnamed2596();
   }
   buildCounterIdpConfig--;
   return o;
@@ -1202,7 +1202,7 @@
     unittest.expect(o.experimentPercent, unittest.equals(42));
     unittest.expect(o.provider, unittest.equals('foo'));
     unittest.expect(o.secret, unittest.equals('foo'));
-    checkUnnamed2581(o.whitelistedAudiences);
+    checkUnnamed2596(o.whitelistedAudiences);
   }
   buildCounterIdpConfig--;
 }
@@ -1305,14 +1305,14 @@
   buildCounterSetAccountInfoResponseProviderUserInfo--;
 }
 
-buildUnnamed2582() {
+buildUnnamed2597() {
   var o = new core.List<api.SetAccountInfoResponseProviderUserInfo>();
   o.add(buildSetAccountInfoResponseProviderUserInfo());
   o.add(buildSetAccountInfoResponseProviderUserInfo());
   return o;
 }
 
-checkUnnamed2582(core.List<api.SetAccountInfoResponseProviderUserInfo> o) {
+checkUnnamed2597(core.List<api.SetAccountInfoResponseProviderUserInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSetAccountInfoResponseProviderUserInfo(o[0]);
   checkSetAccountInfoResponseProviderUserInfo(o[1]);
@@ -1333,7 +1333,7 @@
     o.newEmail = "foo";
     o.passwordHash = "foo";
     o.photoUrl = "foo";
-    o.providerUserInfo = buildUnnamed2582();
+    o.providerUserInfo = buildUnnamed2597();
     o.refreshToken = "foo";
   }
   buildCounterSetAccountInfoResponse--;
@@ -1353,7 +1353,7 @@
     unittest.expect(o.newEmail, unittest.equals('foo'));
     unittest.expect(o.passwordHash, unittest.equals('foo'));
     unittest.expect(o.photoUrl, unittest.equals('foo'));
-    checkUnnamed2582(o.providerUserInfo);
+    checkUnnamed2597(o.providerUserInfo);
     unittest.expect(o.refreshToken, unittest.equals('foo'));
   }
   buildCounterSetAccountInfoResponse--;
@@ -1411,14 +1411,14 @@
   buildCounterUploadAccountResponseError--;
 }
 
-buildUnnamed2583() {
+buildUnnamed2598() {
   var o = new core.List<api.UploadAccountResponseError>();
   o.add(buildUploadAccountResponseError());
   o.add(buildUploadAccountResponseError());
   return o;
 }
 
-checkUnnamed2583(core.List<api.UploadAccountResponseError> o) {
+checkUnnamed2598(core.List<api.UploadAccountResponseError> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUploadAccountResponseError(o[0]);
   checkUploadAccountResponseError(o[1]);
@@ -1429,7 +1429,7 @@
   var o = new api.UploadAccountResponse();
   buildCounterUploadAccountResponse++;
   if (buildCounterUploadAccountResponse < 3) {
-    o.error = buildUnnamed2583();
+    o.error = buildUnnamed2598();
     o.kind = "foo";
   }
   buildCounterUploadAccountResponse--;
@@ -1439,7 +1439,7 @@
 checkUploadAccountResponse(api.UploadAccountResponse o) {
   buildCounterUploadAccountResponse++;
   if (buildCounterUploadAccountResponse < 3) {
-    checkUnnamed2583(o.error);
+    checkUnnamed2598(o.error);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterUploadAccountResponse--;
@@ -1478,14 +1478,14 @@
   buildCounterUserInfoProviderUserInfo--;
 }
 
-buildUnnamed2584() {
+buildUnnamed2599() {
   var o = new core.List<api.UserInfoProviderUserInfo>();
   o.add(buildUserInfoProviderUserInfo());
   o.add(buildUserInfoProviderUserInfo());
   return o;
 }
 
-checkUnnamed2584(core.List<api.UserInfoProviderUserInfo> o) {
+checkUnnamed2599(core.List<api.UserInfoProviderUserInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUserInfoProviderUserInfo(o[0]);
   checkUserInfoProviderUserInfo(o[1]);
@@ -1509,7 +1509,7 @@
     o.passwordUpdatedAt = 42.0;
     o.phoneNumber = "foo";
     o.photoUrl = "foo";
-    o.providerUserInfo = buildUnnamed2584();
+    o.providerUserInfo = buildUnnamed2599();
     o.rawPassword = "foo";
     o.salt = "foo";
     o.screenName = "foo";
@@ -1536,7 +1536,7 @@
     unittest.expect(o.passwordUpdatedAt, unittest.equals(42.0));
     unittest.expect(o.phoneNumber, unittest.equals('foo'));
     unittest.expect(o.photoUrl, unittest.equals('foo'));
-    checkUnnamed2584(o.providerUserInfo);
+    checkUnnamed2599(o.providerUserInfo);
     unittest.expect(o.rawPassword, unittest.equals('foo'));
     unittest.expect(o.salt, unittest.equals('foo'));
     unittest.expect(o.screenName, unittest.equals('foo'));
@@ -1546,14 +1546,14 @@
   buildCounterUserInfo--;
 }
 
-buildUnnamed2585() {
+buildUnnamed2600() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2585(core.List<core.String> o) {
+checkUnnamed2600(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1602,7 +1602,7 @@
     o.refreshToken = "foo";
     o.screenName = "foo";
     o.timeZone = "foo";
-    o.verifiedProvider = buildUnnamed2585();
+    o.verifiedProvider = buildUnnamed2600();
   }
   buildCounterVerifyAssertionResponse--;
   return o;
@@ -1649,7 +1649,7 @@
     unittest.expect(o.refreshToken, unittest.equals('foo'));
     unittest.expect(o.screenName, unittest.equals('foo'));
     unittest.expect(o.timeZone, unittest.equals('foo'));
-    checkUnnamed2585(o.verifiedProvider);
+    checkUnnamed2600(o.verifiedProvider);
   }
   buildCounterVerifyAssertionResponse--;
 }
@@ -2133,6 +2133,7 @@
       api.RelyingpartyResourceApi res =
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request = buildIdentitytoolkitRelyingpartyCreateAuthUriRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.IdentitytoolkitRelyingpartyCreateAuthUriRequest.fromJson(
@@ -2171,6 +2172,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2179,7 +2181,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .createAuthUri(arg_request)
+          .createAuthUri(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CreateAuthUriResponse response) {
         checkCreateAuthUriResponse(response);
       })));
@@ -2190,6 +2192,7 @@
       api.RelyingpartyResourceApi res =
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request = buildIdentitytoolkitRelyingpartyDeleteAccountRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.IdentitytoolkitRelyingpartyDeleteAccountRequest.fromJson(
@@ -2228,6 +2231,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2236,7 +2240,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .deleteAccount(arg_request)
+          .deleteAccount(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DeleteAccountResponse response) {
         checkDeleteAccountResponse(response);
       })));
@@ -2248,6 +2252,7 @@
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request =
           buildIdentitytoolkitRelyingpartyDownloadAccountRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.IdentitytoolkitRelyingpartyDownloadAccountRequest.fromJson(
@@ -2286,6 +2291,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2294,7 +2300,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .downloadAccount(arg_request)
+          .downloadAccount(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DownloadAccountResponse response) {
         checkDownloadAccountResponse(response);
       })));
@@ -2306,6 +2312,7 @@
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request =
           buildIdentitytoolkitRelyingpartyEmailLinkSigninRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.IdentitytoolkitRelyingpartyEmailLinkSigninRequest.fromJson(
@@ -2344,6 +2351,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2352,7 +2360,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .emailLinkSignin(arg_request)
+          .emailLinkSignin(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.EmailLinkSigninResponse response) {
         checkEmailLinkSigninResponse(response);
       })));
@@ -2363,6 +2371,7 @@
       api.RelyingpartyResourceApi res =
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request = buildIdentitytoolkitRelyingpartyGetAccountInfoRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.IdentitytoolkitRelyingpartyGetAccountInfoRequest.fromJson(
@@ -2401,6 +2410,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2409,7 +2419,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getAccountInfo(arg_request)
+          .getAccountInfo(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GetAccountInfoResponse response) {
         checkGetAccountInfoResponse(response);
       })));
@@ -2420,6 +2430,7 @@
       api.RelyingpartyResourceApi res =
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request = buildRelyingparty();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Relyingparty.fromJson(json);
         checkRelyingparty(obj);
@@ -2456,6 +2467,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2463,7 +2475,7 @@
         var resp = convert.JSON.encode(buildGetOobConfirmationCodeResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.getOobConfirmationCode(arg_request).then(
+      res.getOobConfirmationCode(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.GetOobConfirmationCodeResponse response) {
         checkGetOobConfirmationCodeResponse(response);
       })));
@@ -2475,6 +2487,7 @@
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_delegatedProjectNumber = "foo";
       var arg_projectNumber = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2512,6 +2525,7 @@
             unittest.equals(arg_delegatedProjectNumber));
         unittest.expect(queryMap["projectNumber"].first,
             unittest.equals(arg_projectNumber));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2523,7 +2537,8 @@
       res
           .getProjectConfig(
               delegatedProjectNumber: arg_delegatedProjectNumber,
-              projectNumber: arg_projectNumber)
+              projectNumber: arg_projectNumber,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(
               ((api.IdentitytoolkitRelyingpartyGetProjectConfigResponse
                   response) {
@@ -2535,6 +2550,7 @@
       var mock = new HttpServerMock();
       api.RelyingpartyResourceApi res =
           new api.IdentitytoolkitApi(mock).relyingparty;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2568,6 +2584,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2576,7 +2593,7 @@
             .encode(buildIdentitytoolkitRelyingpartyGetPublicKeysResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.getPublicKeys().then(unittest.expectAsync1(
+      res.getPublicKeys($fields: arg_$fields).then(unittest.expectAsync1(
           ((api.IdentitytoolkitRelyingpartyGetPublicKeysResponse response) {
         checkIdentitytoolkitRelyingpartyGetPublicKeysResponse(response);
       })));
@@ -2586,6 +2603,7 @@
       var mock = new HttpServerMock();
       api.RelyingpartyResourceApi res =
           new api.IdentitytoolkitApi(mock).relyingparty;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2619,6 +2637,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2626,7 +2645,7 @@
         var resp = convert.JSON.encode(buildGetRecaptchaParamResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.getRecaptchaParam().then(
+      res.getRecaptchaParam($fields: arg_$fields).then(
           unittest.expectAsync1(((api.GetRecaptchaParamResponse response) {
         checkGetRecaptchaParamResponse(response);
       })));
@@ -2637,6 +2656,7 @@
       api.RelyingpartyResourceApi res =
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request = buildIdentitytoolkitRelyingpartyResetPasswordRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.IdentitytoolkitRelyingpartyResetPasswordRequest.fromJson(
@@ -2675,6 +2695,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2683,7 +2704,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .resetPassword(arg_request)
+          .resetPassword(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ResetPasswordResponse response) {
         checkResetPasswordResponse(response);
       })));
@@ -2695,6 +2716,7 @@
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request =
           buildIdentitytoolkitRelyingpartySendVerificationCodeRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api
                 .IdentitytoolkitRelyingpartySendVerificationCodeRequest.fromJson(
@@ -2733,6 +2755,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2741,9 +2764,10 @@
             buildIdentitytoolkitRelyingpartySendVerificationCodeResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.sendVerificationCode(arg_request).then(unittest.expectAsync1(
-          ((api.IdentitytoolkitRelyingpartySendVerificationCodeResponse
-              response) {
+      res.sendVerificationCode(arg_request, $fields: arg_$fields).then(unittest
+          .expectAsync1(
+              ((api.IdentitytoolkitRelyingpartySendVerificationCodeResponse
+                  response) {
         checkIdentitytoolkitRelyingpartySendVerificationCodeResponse(response);
       })));
     });
@@ -2753,6 +2777,7 @@
       api.RelyingpartyResourceApi res =
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request = buildIdentitytoolkitRelyingpartySetAccountInfoRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.IdentitytoolkitRelyingpartySetAccountInfoRequest.fromJson(
@@ -2791,6 +2816,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2799,7 +2825,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setAccountInfo(arg_request)
+          .setAccountInfo(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SetAccountInfoResponse response) {
         checkSetAccountInfoResponse(response);
       })));
@@ -2811,6 +2837,7 @@
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request =
           buildIdentitytoolkitRelyingpartySetProjectConfigRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.IdentitytoolkitRelyingpartySetProjectConfigRequest.fromJson(
@@ -2849,6 +2876,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2857,8 +2885,10 @@
             .encode(buildIdentitytoolkitRelyingpartySetProjectConfigResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.setProjectConfig(arg_request).then(unittest.expectAsync1(
-          ((api.IdentitytoolkitRelyingpartySetProjectConfigResponse response) {
+      res.setProjectConfig(arg_request, $fields: arg_$fields).then(unittest
+          .expectAsync1(
+              ((api.IdentitytoolkitRelyingpartySetProjectConfigResponse
+                  response) {
         checkIdentitytoolkitRelyingpartySetProjectConfigResponse(response);
       })));
     });
@@ -2868,6 +2898,7 @@
       api.RelyingpartyResourceApi res =
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request = buildIdentitytoolkitRelyingpartySignOutUserRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.IdentitytoolkitRelyingpartySignOutUserRequest.fromJson(
@@ -2906,6 +2937,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2914,8 +2946,9 @@
             .encode(buildIdentitytoolkitRelyingpartySignOutUserResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.signOutUser(arg_request).then(unittest.expectAsync1(
-          ((api.IdentitytoolkitRelyingpartySignOutUserResponse response) {
+      res.signOutUser(arg_request, $fields: arg_$fields).then(unittest
+          .expectAsync1(
+              ((api.IdentitytoolkitRelyingpartySignOutUserResponse response) {
         checkIdentitytoolkitRelyingpartySignOutUserResponse(response);
       })));
     });
@@ -2925,6 +2958,7 @@
       api.RelyingpartyResourceApi res =
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request = buildIdentitytoolkitRelyingpartySignupNewUserRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.IdentitytoolkitRelyingpartySignupNewUserRequest.fromJson(
@@ -2963,6 +2997,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2971,7 +3006,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .signupNewUser(arg_request)
+          .signupNewUser(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SignupNewUserResponse response) {
         checkSignupNewUserResponse(response);
       })));
@@ -2982,6 +3017,7 @@
       api.RelyingpartyResourceApi res =
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request = buildIdentitytoolkitRelyingpartyUploadAccountRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.IdentitytoolkitRelyingpartyUploadAccountRequest.fromJson(
@@ -3020,6 +3056,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3028,7 +3065,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .uploadAccount(arg_request)
+          .uploadAccount(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UploadAccountResponse response) {
         checkUploadAccountResponse(response);
       })));
@@ -3040,6 +3077,7 @@
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request =
           buildIdentitytoolkitRelyingpartyVerifyAssertionRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.IdentitytoolkitRelyingpartyVerifyAssertionRequest.fromJson(
@@ -3078,6 +3116,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3086,7 +3125,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .verifyAssertion(arg_request)
+          .verifyAssertion(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.VerifyAssertionResponse response) {
         checkVerifyAssertionResponse(response);
       })));
@@ -3098,6 +3137,7 @@
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request =
           buildIdentitytoolkitRelyingpartyVerifyCustomTokenRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api
             .IdentitytoolkitRelyingpartyVerifyCustomTokenRequest.fromJson(json);
@@ -3135,6 +3175,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3142,7 +3183,7 @@
         var resp = convert.JSON.encode(buildVerifyCustomTokenResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.verifyCustomToken(arg_request).then(
+      res.verifyCustomToken(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.VerifyCustomTokenResponse response) {
         checkVerifyCustomTokenResponse(response);
       })));
@@ -3153,6 +3194,7 @@
       api.RelyingpartyResourceApi res =
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request = buildIdentitytoolkitRelyingpartyVerifyPasswordRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.IdentitytoolkitRelyingpartyVerifyPasswordRequest.fromJson(
@@ -3191,6 +3233,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3199,7 +3242,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .verifyPassword(arg_request)
+          .verifyPassword(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.VerifyPasswordResponse response) {
         checkVerifyPasswordResponse(response);
       })));
@@ -3211,6 +3254,7 @@
           new api.IdentitytoolkitApi(mock).relyingparty;
       var arg_request =
           buildIdentitytoolkitRelyingpartyVerifyPhoneNumberRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api
             .IdentitytoolkitRelyingpartyVerifyPhoneNumberRequest.fromJson(json);
@@ -3248,6 +3292,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3256,8 +3301,10 @@
             buildIdentitytoolkitRelyingpartyVerifyPhoneNumberResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.verifyPhoneNumber(arg_request).then(unittest.expectAsync1(
-          ((api.IdentitytoolkitRelyingpartyVerifyPhoneNumberResponse response) {
+      res.verifyPhoneNumber(arg_request, $fields: arg_$fields).then(unittest
+          .expectAsync1(
+              ((api.IdentitytoolkitRelyingpartyVerifyPhoneNumberResponse
+                  response) {
         checkIdentitytoolkitRelyingpartyVerifyPhoneNumberResponse(response);
       })));
     });
diff --git a/generated/googleapis/test/kgsearch/v1_test.dart b/generated/googleapis/test/kgsearch/v1_test.dart
new file mode 100644
index 0000000..27bad36
--- /dev/null
+++ b/generated/googleapis/test/kgsearch/v1_test.dart
@@ -0,0 +1,244 @@
+library googleapis.kgsearch.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/kgsearch/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+buildUnnamed1029() {
+  var o = new core.List<core.Object>();
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  return o;
+}
+
+checkUnnamed1029(core.List<core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o[0]) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(casted1["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted1["bool"], unittest.equals(true));
+  unittest.expect(casted1["string"], unittest.equals('foo'));
+  var casted2 = (o[1]) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(casted2["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted2["bool"], unittest.equals(true));
+  unittest.expect(casted2["string"], unittest.equals('foo'));
+}
+
+core.int buildCounterSearchResponse = 0;
+buildSearchResponse() {
+  var o = new api.SearchResponse();
+  buildCounterSearchResponse++;
+  if (buildCounterSearchResponse < 3) {
+    o.P_context = {
+      'list': [1, 2, 3],
+      'bool': true,
+      'string': 'foo'
+    };
+    o.P_type = {
+      'list': [1, 2, 3],
+      'bool': true,
+      'string': 'foo'
+    };
+    o.itemListElement = buildUnnamed1029();
+  }
+  buildCounterSearchResponse--;
+  return o;
+}
+
+checkSearchResponse(api.SearchResponse o) {
+  buildCounterSearchResponse++;
+  if (buildCounterSearchResponse < 3) {
+    var casted3 = (o.P_context) as core.Map;
+    unittest.expect(casted3, unittest.hasLength(3));
+    unittest.expect(casted3["list"], unittest.equals([1, 2, 3]));
+    unittest.expect(casted3["bool"], unittest.equals(true));
+    unittest.expect(casted3["string"], unittest.equals('foo'));
+    var casted4 = (o.P_type) as core.Map;
+    unittest.expect(casted4, unittest.hasLength(3));
+    unittest.expect(casted4["list"], unittest.equals([1, 2, 3]));
+    unittest.expect(casted4["bool"], unittest.equals(true));
+    unittest.expect(casted4["string"], unittest.equals('foo'));
+    checkUnnamed1029(o.itemListElement);
+  }
+  buildCounterSearchResponse--;
+}
+
+buildUnnamed1030() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1030(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1031() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1031(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1032() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1032(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-SearchResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSearchResponse();
+      var od = new api.SearchResponse.fromJson(o.toJson());
+      checkSearchResponse(od);
+    });
+  });
+
+  unittest.group("resource-EntitiesResourceApi", () {
+    unittest.test("method--search", () {
+      var mock = new HttpServerMock();
+      api.EntitiesResourceApi res = new api.KgsearchApi(mock).entities;
+      var arg_languages = buildUnnamed1030();
+      var arg_ids = buildUnnamed1031();
+      var arg_limit = 42;
+      var arg_prefix = true;
+      var arg_query = "foo";
+      var arg_types = buildUnnamed1032();
+      var arg_indent = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("v1/entities:search"));
+        pathOffset += 18;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["languages"], unittest.equals(arg_languages));
+        unittest.expect(queryMap["ids"], unittest.equals(arg_ids));
+        unittest.expect(core.int.parse(queryMap["limit"].first),
+            unittest.equals(arg_limit));
+        unittest.expect(
+            queryMap["prefix"].first, unittest.equals("$arg_prefix"));
+        unittest.expect(queryMap["query"].first, unittest.equals(arg_query));
+        unittest.expect(queryMap["types"], unittest.equals(arg_types));
+        unittest.expect(
+            queryMap["indent"].first, unittest.equals("$arg_indent"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSearchResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .search(
+              languages: arg_languages,
+              ids: arg_ids,
+              limit: arg_limit,
+              prefix: arg_prefix,
+              query: arg_query,
+              types: arg_types,
+              indent: arg_indent,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SearchResponse response) {
+        checkSearchResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/language/v1_test.dart b/generated/googleapis/test/language/v1_test.dart
index 7c9a163..78dd6d3 100644
--- a/generated/googleapis/test/language/v1_test.dart
+++ b/generated/googleapis/test/language/v1_test.dart
@@ -71,14 +71,14 @@
   buildCounterAnalyzeEntitiesRequest--;
 }
 
-buildUnnamed918() {
+buildUnnamed905() {
   var o = new core.List<api.Entity>();
   o.add(buildEntity());
   o.add(buildEntity());
   return o;
 }
 
-checkUnnamed918(core.List<api.Entity> o) {
+checkUnnamed905(core.List<api.Entity> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntity(o[0]);
   checkEntity(o[1]);
@@ -89,7 +89,7 @@
   var o = new api.AnalyzeEntitiesResponse();
   buildCounterAnalyzeEntitiesResponse++;
   if (buildCounterAnalyzeEntitiesResponse < 3) {
-    o.entities = buildUnnamed918();
+    o.entities = buildUnnamed905();
     o.language = "foo";
   }
   buildCounterAnalyzeEntitiesResponse--;
@@ -99,7 +99,7 @@
 checkAnalyzeEntitiesResponse(api.AnalyzeEntitiesResponse o) {
   buildCounterAnalyzeEntitiesResponse++;
   if (buildCounterAnalyzeEntitiesResponse < 3) {
-    checkUnnamed918(o.entities);
+    checkUnnamed905(o.entities);
     unittest.expect(o.language, unittest.equals('foo'));
   }
   buildCounterAnalyzeEntitiesResponse--;
@@ -126,14 +126,14 @@
   buildCounterAnalyzeEntitySentimentRequest--;
 }
 
-buildUnnamed919() {
+buildUnnamed906() {
   var o = new core.List<api.Entity>();
   o.add(buildEntity());
   o.add(buildEntity());
   return o;
 }
 
-checkUnnamed919(core.List<api.Entity> o) {
+checkUnnamed906(core.List<api.Entity> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntity(o[0]);
   checkEntity(o[1]);
@@ -144,7 +144,7 @@
   var o = new api.AnalyzeEntitySentimentResponse();
   buildCounterAnalyzeEntitySentimentResponse++;
   if (buildCounterAnalyzeEntitySentimentResponse < 3) {
-    o.entities = buildUnnamed919();
+    o.entities = buildUnnamed906();
     o.language = "foo";
   }
   buildCounterAnalyzeEntitySentimentResponse--;
@@ -154,7 +154,7 @@
 checkAnalyzeEntitySentimentResponse(api.AnalyzeEntitySentimentResponse o) {
   buildCounterAnalyzeEntitySentimentResponse++;
   if (buildCounterAnalyzeEntitySentimentResponse < 3) {
-    checkUnnamed919(o.entities);
+    checkUnnamed906(o.entities);
     unittest.expect(o.language, unittest.equals('foo'));
   }
   buildCounterAnalyzeEntitySentimentResponse--;
@@ -181,14 +181,14 @@
   buildCounterAnalyzeSentimentRequest--;
 }
 
-buildUnnamed920() {
+buildUnnamed907() {
   var o = new core.List<api.Sentence>();
   o.add(buildSentence());
   o.add(buildSentence());
   return o;
 }
 
-checkUnnamed920(core.List<api.Sentence> o) {
+checkUnnamed907(core.List<api.Sentence> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSentence(o[0]);
   checkSentence(o[1]);
@@ -201,7 +201,7 @@
   if (buildCounterAnalyzeSentimentResponse < 3) {
     o.documentSentiment = buildSentiment();
     o.language = "foo";
-    o.sentences = buildUnnamed920();
+    o.sentences = buildUnnamed907();
   }
   buildCounterAnalyzeSentimentResponse--;
   return o;
@@ -212,7 +212,7 @@
   if (buildCounterAnalyzeSentimentResponse < 3) {
     checkSentiment(o.documentSentiment);
     unittest.expect(o.language, unittest.equals('foo'));
-    checkUnnamed920(o.sentences);
+    checkUnnamed907(o.sentences);
   }
   buildCounterAnalyzeSentimentResponse--;
 }
@@ -238,27 +238,27 @@
   buildCounterAnalyzeSyntaxRequest--;
 }
 
-buildUnnamed921() {
+buildUnnamed908() {
   var o = new core.List<api.Sentence>();
   o.add(buildSentence());
   o.add(buildSentence());
   return o;
 }
 
-checkUnnamed921(core.List<api.Sentence> o) {
+checkUnnamed908(core.List<api.Sentence> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSentence(o[0]);
   checkSentence(o[1]);
 }
 
-buildUnnamed922() {
+buildUnnamed909() {
   var o = new core.List<api.Token>();
   o.add(buildToken());
   o.add(buildToken());
   return o;
 }
 
-checkUnnamed922(core.List<api.Token> o) {
+checkUnnamed909(core.List<api.Token> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkToken(o[0]);
   checkToken(o[1]);
@@ -270,8 +270,8 @@
   buildCounterAnalyzeSyntaxResponse++;
   if (buildCounterAnalyzeSyntaxResponse < 3) {
     o.language = "foo";
-    o.sentences = buildUnnamed921();
-    o.tokens = buildUnnamed922();
+    o.sentences = buildUnnamed908();
+    o.tokens = buildUnnamed909();
   }
   buildCounterAnalyzeSyntaxResponse--;
   return o;
@@ -281,8 +281,8 @@
   buildCounterAnalyzeSyntaxResponse++;
   if (buildCounterAnalyzeSyntaxResponse < 3) {
     unittest.expect(o.language, unittest.equals('foo'));
-    checkUnnamed921(o.sentences);
-    checkUnnamed922(o.tokens);
+    checkUnnamed908(o.sentences);
+    checkUnnamed909(o.tokens);
   }
   buildCounterAnalyzeSyntaxResponse--;
 }
@@ -310,40 +310,40 @@
   buildCounterAnnotateTextRequest--;
 }
 
-buildUnnamed923() {
+buildUnnamed910() {
   var o = new core.List<api.Entity>();
   o.add(buildEntity());
   o.add(buildEntity());
   return o;
 }
 
-checkUnnamed923(core.List<api.Entity> o) {
+checkUnnamed910(core.List<api.Entity> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntity(o[0]);
   checkEntity(o[1]);
 }
 
-buildUnnamed924() {
+buildUnnamed911() {
   var o = new core.List<api.Sentence>();
   o.add(buildSentence());
   o.add(buildSentence());
   return o;
 }
 
-checkUnnamed924(core.List<api.Sentence> o) {
+checkUnnamed911(core.List<api.Sentence> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSentence(o[0]);
   checkSentence(o[1]);
 }
 
-buildUnnamed925() {
+buildUnnamed912() {
   var o = new core.List<api.Token>();
   o.add(buildToken());
   o.add(buildToken());
   return o;
 }
 
-checkUnnamed925(core.List<api.Token> o) {
+checkUnnamed912(core.List<api.Token> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkToken(o[0]);
   checkToken(o[1]);
@@ -355,10 +355,10 @@
   buildCounterAnnotateTextResponse++;
   if (buildCounterAnnotateTextResponse < 3) {
     o.documentSentiment = buildSentiment();
-    o.entities = buildUnnamed923();
+    o.entities = buildUnnamed910();
     o.language = "foo";
-    o.sentences = buildUnnamed924();
-    o.tokens = buildUnnamed925();
+    o.sentences = buildUnnamed911();
+    o.tokens = buildUnnamed912();
   }
   buildCounterAnnotateTextResponse--;
   return o;
@@ -368,10 +368,10 @@
   buildCounterAnnotateTextResponse++;
   if (buildCounterAnnotateTextResponse < 3) {
     checkSentiment(o.documentSentiment);
-    checkUnnamed923(o.entities);
+    checkUnnamed910(o.entities);
     unittest.expect(o.language, unittest.equals('foo'));
-    checkUnnamed924(o.sentences);
-    checkUnnamed925(o.tokens);
+    checkUnnamed911(o.sentences);
+    checkUnnamed912(o.tokens);
   }
   buildCounterAnnotateTextResponse--;
 }
@@ -422,27 +422,27 @@
   buildCounterDocument--;
 }
 
-buildUnnamed926() {
+buildUnnamed913() {
   var o = new core.List<api.EntityMention>();
   o.add(buildEntityMention());
   o.add(buildEntityMention());
   return o;
 }
 
-checkUnnamed926(core.List<api.EntityMention> o) {
+checkUnnamed913(core.List<api.EntityMention> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntityMention(o[0]);
   checkEntityMention(o[1]);
 }
 
-buildUnnamed927() {
+buildUnnamed914() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed927(core.Map<core.String, core.String> o) {
+checkUnnamed914(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -453,8 +453,8 @@
   var o = new api.Entity();
   buildCounterEntity++;
   if (buildCounterEntity < 3) {
-    o.mentions = buildUnnamed926();
-    o.metadata = buildUnnamed927();
+    o.mentions = buildUnnamed913();
+    o.metadata = buildUnnamed914();
     o.name = "foo";
     o.salience = 42.0;
     o.sentiment = buildSentiment();
@@ -467,8 +467,8 @@
 checkEntity(api.Entity o) {
   buildCounterEntity++;
   if (buildCounterEntity < 3) {
-    checkUnnamed926(o.mentions);
-    checkUnnamed927(o.metadata);
+    checkUnnamed913(o.mentions);
+    checkUnnamed914(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.salience, unittest.equals(42.0));
     checkSentiment(o.sentiment);
@@ -608,7 +608,7 @@
   buildCounterSentiment--;
 }
 
-buildUnnamed928() {
+buildUnnamed915() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -623,7 +623,7 @@
   return o;
 }
 
-checkUnnamed928(core.Map<core.String, core.Object> o) {
+checkUnnamed915(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -637,17 +637,17 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed929() {
+buildUnnamed916() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed928());
-  o.add(buildUnnamed928());
+  o.add(buildUnnamed915());
+  o.add(buildUnnamed915());
   return o;
 }
 
-checkUnnamed929(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed916(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed928(o[0]);
-  checkUnnamed928(o[1]);
+  checkUnnamed915(o[0]);
+  checkUnnamed915(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -656,7 +656,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed929();
+    o.details = buildUnnamed916();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -667,7 +667,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed929(o.details);
+    checkUnnamed916(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -893,6 +893,7 @@
       var mock = new HttpServerMock();
       api.DocumentsResourceApi res = new api.LanguageApi(mock).documents;
       var arg_request = buildAnalyzeEntitiesRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnalyzeEntitiesRequest.fromJson(json);
         checkAnalyzeEntitiesRequest(obj);
@@ -926,6 +927,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -934,7 +936,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .analyzeEntities(arg_request)
+          .analyzeEntities(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AnalyzeEntitiesResponse response) {
         checkAnalyzeEntitiesResponse(response);
       })));
@@ -944,6 +946,7 @@
       var mock = new HttpServerMock();
       api.DocumentsResourceApi res = new api.LanguageApi(mock).documents;
       var arg_request = buildAnalyzeEntitySentimentRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnalyzeEntitySentimentRequest.fromJson(json);
         checkAnalyzeEntitySentimentRequest(obj);
@@ -977,6 +980,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -984,7 +988,7 @@
         var resp = convert.JSON.encode(buildAnalyzeEntitySentimentResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.analyzeEntitySentiment(arg_request).then(
+      res.analyzeEntitySentiment(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.AnalyzeEntitySentimentResponse response) {
         checkAnalyzeEntitySentimentResponse(response);
       })));
@@ -994,6 +998,7 @@
       var mock = new HttpServerMock();
       api.DocumentsResourceApi res = new api.LanguageApi(mock).documents;
       var arg_request = buildAnalyzeSentimentRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnalyzeSentimentRequest.fromJson(json);
         checkAnalyzeSentimentRequest(obj);
@@ -1027,6 +1032,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1035,7 +1041,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .analyzeSentiment(arg_request)
+          .analyzeSentiment(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AnalyzeSentimentResponse response) {
         checkAnalyzeSentimentResponse(response);
       })));
@@ -1045,6 +1051,7 @@
       var mock = new HttpServerMock();
       api.DocumentsResourceApi res = new api.LanguageApi(mock).documents;
       var arg_request = buildAnalyzeSyntaxRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnalyzeSyntaxRequest.fromJson(json);
         checkAnalyzeSyntaxRequest(obj);
@@ -1078,6 +1085,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1086,7 +1094,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .analyzeSyntax(arg_request)
+          .analyzeSyntax(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AnalyzeSyntaxResponse response) {
         checkAnalyzeSyntaxResponse(response);
       })));
@@ -1096,6 +1104,7 @@
       var mock = new HttpServerMock();
       api.DocumentsResourceApi res = new api.LanguageApi(mock).documents;
       var arg_request = buildAnnotateTextRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnnotateTextRequest.fromJson(json);
         checkAnnotateTextRequest(obj);
@@ -1129,6 +1138,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1137,7 +1147,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .annotateText(arg_request)
+          .annotateText(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AnnotateTextResponse response) {
         checkAnnotateTextResponse(response);
       })));
diff --git a/generated/googleapis/test/licensing/v1_test.dart b/generated/googleapis/test/licensing/v1_test.dart
index 76336f4..7a9b00b 100644
--- a/generated/googleapis/test/licensing/v1_test.dart
+++ b/generated/googleapis/test/licensing/v1_test.dart
@@ -102,14 +102,14 @@
   buildCounterLicenseAssignmentInsert--;
 }
 
-buildUnnamed2159() {
+buildUnnamed2157() {
   var o = new core.List<api.LicenseAssignment>();
   o.add(buildLicenseAssignment());
   o.add(buildLicenseAssignment());
   return o;
 }
 
-checkUnnamed2159(core.List<api.LicenseAssignment> o) {
+checkUnnamed2157(core.List<api.LicenseAssignment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLicenseAssignment(o[0]);
   checkLicenseAssignment(o[1]);
@@ -121,7 +121,7 @@
   buildCounterLicenseAssignmentList++;
   if (buildCounterLicenseAssignmentList < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed2159();
+    o.items = buildUnnamed2157();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -133,7 +133,7 @@
   buildCounterLicenseAssignmentList++;
   if (buildCounterLicenseAssignmentList < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed2159(o.items);
+    checkUnnamed2157(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -173,6 +173,7 @@
       var arg_productId = "foo";
       var arg_skuId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -200,6 +201,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -208,7 +210,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_productId, arg_skuId, arg_userId)
+          .delete(arg_productId, arg_skuId, arg_userId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -219,6 +221,7 @@
       var arg_productId = "foo";
       var arg_skuId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -246,6 +249,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -254,7 +258,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_productId, arg_skuId, arg_userId)
+          .get(arg_productId, arg_skuId, arg_userId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LicenseAssignment response) {
         checkLicenseAssignment(response);
       })));
@@ -267,6 +271,7 @@
       var arg_request = buildLicenseAssignmentInsert();
       var arg_productId = "foo";
       var arg_skuId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LicenseAssignmentInsert.fromJson(json);
         checkLicenseAssignmentInsert(obj);
@@ -297,6 +302,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -305,7 +311,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_productId, arg_skuId)
+          .insert(arg_request, arg_productId, arg_skuId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LicenseAssignment response) {
         checkLicenseAssignment(response);
       })));
@@ -319,6 +325,7 @@
       var arg_customerId = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -352,6 +359,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -361,7 +369,9 @@
       }), true);
       res
           .listForProduct(arg_productId, arg_customerId,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LicenseAssignmentList response) {
         checkLicenseAssignmentList(response);
       })));
@@ -376,6 +386,7 @@
       var arg_customerId = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -409,6 +420,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -418,7 +430,9 @@
       }), true);
       res
           .listForProductAndSku(arg_productId, arg_skuId, arg_customerId,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LicenseAssignmentList response) {
         checkLicenseAssignmentList(response);
       })));
@@ -432,6 +446,7 @@
       var arg_productId = "foo";
       var arg_skuId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LicenseAssignment.fromJson(json);
         checkLicenseAssignment(obj);
@@ -462,6 +477,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -470,7 +486,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_productId, arg_skuId, arg_userId)
+          .patch(arg_request, arg_productId, arg_skuId, arg_userId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LicenseAssignment response) {
         checkLicenseAssignment(response);
       })));
@@ -484,6 +501,7 @@
       var arg_productId = "foo";
       var arg_skuId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LicenseAssignment.fromJson(json);
         checkLicenseAssignment(obj);
@@ -514,6 +532,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -522,7 +541,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_productId, arg_skuId, arg_userId)
+          .update(arg_request, arg_productId, arg_skuId, arg_userId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LicenseAssignment response) {
         checkLicenseAssignment(response);
       })));
diff --git a/generated/googleapis/test/logging/v2_test.dart b/generated/googleapis/test/logging/v2_test.dart
index a16843c..76568db 100644
--- a/generated/googleapis/test/logging/v2_test.dart
+++ b/generated/googleapis/test/logging/v2_test.dart
@@ -88,14 +88,14 @@
   buildCounterEmpty--;
 }
 
-buildUnnamed250() {
+buildUnnamed234() {
   var o = new core.List<core.double>();
   o.add(42.0);
   o.add(42.0);
   return o;
 }
 
-checkUnnamed250(core.List<core.double> o) {
+checkUnnamed234(core.List<core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42.0));
   unittest.expect(o[1], unittest.equals(42.0));
@@ -106,7 +106,7 @@
   var o = new api.Explicit();
   buildCounterExplicit++;
   if (buildCounterExplicit < 3) {
-    o.bounds = buildUnnamed250();
+    o.bounds = buildUnnamed234();
   }
   buildCounterExplicit--;
   return o;
@@ -115,7 +115,7 @@
 checkExplicit(api.Explicit o) {
   buildCounterExplicit++;
   if (buildCounterExplicit < 3) {
-    checkUnnamed250(o.bounds);
+    checkUnnamed234(o.bounds);
   }
   buildCounterExplicit--;
 }
@@ -236,14 +236,14 @@
   buildCounterLinear--;
 }
 
-buildUnnamed251() {
+buildUnnamed235() {
   var o = new core.List<api.LogExclusion>();
   o.add(buildLogExclusion());
   o.add(buildLogExclusion());
   return o;
 }
 
-checkUnnamed251(core.List<api.LogExclusion> o) {
+checkUnnamed235(core.List<api.LogExclusion> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLogExclusion(o[0]);
   checkLogExclusion(o[1]);
@@ -254,7 +254,7 @@
   var o = new api.ListExclusionsResponse();
   buildCounterListExclusionsResponse++;
   if (buildCounterListExclusionsResponse < 3) {
-    o.exclusions = buildUnnamed251();
+    o.exclusions = buildUnnamed235();
     o.nextPageToken = "foo";
   }
   buildCounterListExclusionsResponse--;
@@ -264,33 +264,33 @@
 checkListExclusionsResponse(api.ListExclusionsResponse o) {
   buildCounterListExclusionsResponse++;
   if (buildCounterListExclusionsResponse < 3) {
-    checkUnnamed251(o.exclusions);
+    checkUnnamed235(o.exclusions);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListExclusionsResponse--;
 }
 
-buildUnnamed252() {
+buildUnnamed236() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed252(core.List<core.String> o) {
+checkUnnamed236(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed253() {
+buildUnnamed237() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed253(core.List<core.String> o) {
+checkUnnamed237(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -305,8 +305,8 @@
     o.orderBy = "foo";
     o.pageSize = 42;
     o.pageToken = "foo";
-    o.projectIds = buildUnnamed252();
-    o.resourceNames = buildUnnamed253();
+    o.projectIds = buildUnnamed236();
+    o.resourceNames = buildUnnamed237();
   }
   buildCounterListLogEntriesRequest--;
   return o;
@@ -319,20 +319,20 @@
     unittest.expect(o.orderBy, unittest.equals('foo'));
     unittest.expect(o.pageSize, unittest.equals(42));
     unittest.expect(o.pageToken, unittest.equals('foo'));
-    checkUnnamed252(o.projectIds);
-    checkUnnamed253(o.resourceNames);
+    checkUnnamed236(o.projectIds);
+    checkUnnamed237(o.resourceNames);
   }
   buildCounterListLogEntriesRequest--;
 }
 
-buildUnnamed254() {
+buildUnnamed238() {
   var o = new core.List<api.LogEntry>();
   o.add(buildLogEntry());
   o.add(buildLogEntry());
   return o;
 }
 
-checkUnnamed254(core.List<api.LogEntry> o) {
+checkUnnamed238(core.List<api.LogEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLogEntry(o[0]);
   checkLogEntry(o[1]);
@@ -343,7 +343,7 @@
   var o = new api.ListLogEntriesResponse();
   buildCounterListLogEntriesResponse++;
   if (buildCounterListLogEntriesResponse < 3) {
-    o.entries = buildUnnamed254();
+    o.entries = buildUnnamed238();
     o.nextPageToken = "foo";
   }
   buildCounterListLogEntriesResponse--;
@@ -353,20 +353,20 @@
 checkListLogEntriesResponse(api.ListLogEntriesResponse o) {
   buildCounterListLogEntriesResponse++;
   if (buildCounterListLogEntriesResponse < 3) {
-    checkUnnamed254(o.entries);
+    checkUnnamed238(o.entries);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListLogEntriesResponse--;
 }
 
-buildUnnamed255() {
+buildUnnamed239() {
   var o = new core.List<api.LogMetric>();
   o.add(buildLogMetric());
   o.add(buildLogMetric());
   return o;
 }
 
-checkUnnamed255(core.List<api.LogMetric> o) {
+checkUnnamed239(core.List<api.LogMetric> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLogMetric(o[0]);
   checkLogMetric(o[1]);
@@ -377,7 +377,7 @@
   var o = new api.ListLogMetricsResponse();
   buildCounterListLogMetricsResponse++;
   if (buildCounterListLogMetricsResponse < 3) {
-    o.metrics = buildUnnamed255();
+    o.metrics = buildUnnamed239();
     o.nextPageToken = "foo";
   }
   buildCounterListLogMetricsResponse--;
@@ -387,20 +387,20 @@
 checkListLogMetricsResponse(api.ListLogMetricsResponse o) {
   buildCounterListLogMetricsResponse++;
   if (buildCounterListLogMetricsResponse < 3) {
-    checkUnnamed255(o.metrics);
+    checkUnnamed239(o.metrics);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListLogMetricsResponse--;
 }
 
-buildUnnamed256() {
+buildUnnamed240() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed256(core.List<core.String> o) {
+checkUnnamed240(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -411,7 +411,7 @@
   var o = new api.ListLogsResponse();
   buildCounterListLogsResponse++;
   if (buildCounterListLogsResponse < 3) {
-    o.logNames = buildUnnamed256();
+    o.logNames = buildUnnamed240();
     o.nextPageToken = "foo";
   }
   buildCounterListLogsResponse--;
@@ -421,20 +421,20 @@
 checkListLogsResponse(api.ListLogsResponse o) {
   buildCounterListLogsResponse++;
   if (buildCounterListLogsResponse < 3) {
-    checkUnnamed256(o.logNames);
+    checkUnnamed240(o.logNames);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListLogsResponse--;
 }
 
-buildUnnamed257() {
+buildUnnamed241() {
   var o = new core.List<api.MonitoredResourceDescriptor>();
   o.add(buildMonitoredResourceDescriptor());
   o.add(buildMonitoredResourceDescriptor());
   return o;
 }
 
-checkUnnamed257(core.List<api.MonitoredResourceDescriptor> o) {
+checkUnnamed241(core.List<api.MonitoredResourceDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMonitoredResourceDescriptor(o[0]);
   checkMonitoredResourceDescriptor(o[1]);
@@ -446,7 +446,7 @@
   buildCounterListMonitoredResourceDescriptorsResponse++;
   if (buildCounterListMonitoredResourceDescriptorsResponse < 3) {
     o.nextPageToken = "foo";
-    o.resourceDescriptors = buildUnnamed257();
+    o.resourceDescriptors = buildUnnamed241();
   }
   buildCounterListMonitoredResourceDescriptorsResponse--;
   return o;
@@ -457,19 +457,19 @@
   buildCounterListMonitoredResourceDescriptorsResponse++;
   if (buildCounterListMonitoredResourceDescriptorsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed257(o.resourceDescriptors);
+    checkUnnamed241(o.resourceDescriptors);
   }
   buildCounterListMonitoredResourceDescriptorsResponse--;
 }
 
-buildUnnamed258() {
+buildUnnamed242() {
   var o = new core.List<api.LogSink>();
   o.add(buildLogSink());
   o.add(buildLogSink());
   return o;
 }
 
-checkUnnamed258(core.List<api.LogSink> o) {
+checkUnnamed242(core.List<api.LogSink> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLogSink(o[0]);
   checkLogSink(o[1]);
@@ -481,7 +481,7 @@
   buildCounterListSinksResponse++;
   if (buildCounterListSinksResponse < 3) {
     o.nextPageToken = "foo";
-    o.sinks = buildUnnamed258();
+    o.sinks = buildUnnamed242();
   }
   buildCounterListSinksResponse--;
   return o;
@@ -491,12 +491,12 @@
   buildCounterListSinksResponse++;
   if (buildCounterListSinksResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed258(o.sinks);
+    checkUnnamed242(o.sinks);
   }
   buildCounterListSinksResponse--;
 }
 
-buildUnnamed259() {
+buildUnnamed243() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -511,7 +511,7 @@
   return o;
 }
 
-checkUnnamed259(core.Map<core.String, core.Object> o) {
+checkUnnamed243(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -525,20 +525,20 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed260() {
+buildUnnamed244() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed260(core.Map<core.String, core.String> o) {
+checkUnnamed244(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed261() {
+buildUnnamed245() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -553,7 +553,7 @@
   return o;
 }
 
-checkUnnamed261(core.Map<core.String, core.Object> o) {
+checkUnnamed245(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -574,11 +574,11 @@
   if (buildCounterLogEntry < 3) {
     o.httpRequest = buildHttpRequest();
     o.insertId = "foo";
-    o.jsonPayload = buildUnnamed259();
-    o.labels = buildUnnamed260();
+    o.jsonPayload = buildUnnamed243();
+    o.labels = buildUnnamed244();
     o.logName = "foo";
     o.operation = buildLogEntryOperation();
-    o.protoPayload = buildUnnamed261();
+    o.protoPayload = buildUnnamed245();
     o.receiveTimestamp = "foo";
     o.resource = buildMonitoredResource();
     o.severity = "foo";
@@ -596,11 +596,11 @@
   if (buildCounterLogEntry < 3) {
     checkHttpRequest(o.httpRequest);
     unittest.expect(o.insertId, unittest.equals('foo'));
-    checkUnnamed259(o.jsonPayload);
-    checkUnnamed260(o.labels);
+    checkUnnamed243(o.jsonPayload);
+    checkUnnamed244(o.labels);
     unittest.expect(o.logName, unittest.equals('foo'));
     checkLogEntryOperation(o.operation);
-    checkUnnamed261(o.protoPayload);
+    checkUnnamed245(o.protoPayload);
     unittest.expect(o.receiveTimestamp, unittest.equals('foo'));
     checkMonitoredResource(o.resource);
     unittest.expect(o.severity, unittest.equals('foo'));
@@ -710,14 +710,14 @@
   buildCounterLogLine--;
 }
 
-buildUnnamed262() {
+buildUnnamed246() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed262(core.Map<core.String, core.String> o) {
+checkUnnamed246(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -731,7 +731,7 @@
     o.bucketOptions = buildBucketOptions();
     o.description = "foo";
     o.filter = "foo";
-    o.labelExtractors = buildUnnamed262();
+    o.labelExtractors = buildUnnamed246();
     o.metricDescriptor = buildMetricDescriptor();
     o.name = "foo";
     o.valueExtractor = "foo";
@@ -747,7 +747,7 @@
     checkBucketOptions(o.bucketOptions);
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.filter, unittest.equals('foo'));
-    checkUnnamed262(o.labelExtractors);
+    checkUnnamed246(o.labelExtractors);
     checkMetricDescriptor(o.metricDescriptor);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.valueExtractor, unittest.equals('foo'));
@@ -789,14 +789,14 @@
   buildCounterLogSink--;
 }
 
-buildUnnamed263() {
+buildUnnamed247() {
   var o = new core.List<api.LabelDescriptor>();
   o.add(buildLabelDescriptor());
   o.add(buildLabelDescriptor());
   return o;
 }
 
-checkUnnamed263(core.List<api.LabelDescriptor> o) {
+checkUnnamed247(core.List<api.LabelDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLabelDescriptor(o[0]);
   checkLabelDescriptor(o[1]);
@@ -809,7 +809,7 @@
   if (buildCounterMetricDescriptor < 3) {
     o.description = "foo";
     o.displayName = "foo";
-    o.labels = buildUnnamed263();
+    o.labels = buildUnnamed247();
     o.metricKind = "foo";
     o.name = "foo";
     o.type = "foo";
@@ -825,7 +825,7 @@
   if (buildCounterMetricDescriptor < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.displayName, unittest.equals('foo'));
-    checkUnnamed263(o.labels);
+    checkUnnamed247(o.labels);
     unittest.expect(o.metricKind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
@@ -835,14 +835,14 @@
   buildCounterMetricDescriptor--;
 }
 
-buildUnnamed264() {
+buildUnnamed248() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed264(core.Map<core.String, core.String> o) {
+checkUnnamed248(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -853,7 +853,7 @@
   var o = new api.MonitoredResource();
   buildCounterMonitoredResource++;
   if (buildCounterMonitoredResource < 3) {
-    o.labels = buildUnnamed264();
+    o.labels = buildUnnamed248();
     o.type = "foo";
   }
   buildCounterMonitoredResource--;
@@ -863,20 +863,20 @@
 checkMonitoredResource(api.MonitoredResource o) {
   buildCounterMonitoredResource++;
   if (buildCounterMonitoredResource < 3) {
-    checkUnnamed264(o.labels);
+    checkUnnamed248(o.labels);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterMonitoredResource--;
 }
 
-buildUnnamed265() {
+buildUnnamed249() {
   var o = new core.List<api.LabelDescriptor>();
   o.add(buildLabelDescriptor());
   o.add(buildLabelDescriptor());
   return o;
 }
 
-checkUnnamed265(core.List<api.LabelDescriptor> o) {
+checkUnnamed249(core.List<api.LabelDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLabelDescriptor(o[0]);
   checkLabelDescriptor(o[1]);
@@ -889,7 +889,7 @@
   if (buildCounterMonitoredResourceDescriptor < 3) {
     o.description = "foo";
     o.displayName = "foo";
-    o.labels = buildUnnamed265();
+    o.labels = buildUnnamed249();
     o.name = "foo";
     o.type = "foo";
   }
@@ -902,34 +902,34 @@
   if (buildCounterMonitoredResourceDescriptor < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.displayName, unittest.equals('foo'));
-    checkUnnamed265(o.labels);
+    checkUnnamed249(o.labels);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterMonitoredResourceDescriptor--;
 }
 
-buildUnnamed266() {
+buildUnnamed250() {
   var o = new core.List<api.LogLine>();
   o.add(buildLogLine());
   o.add(buildLogLine());
   return o;
 }
 
-checkUnnamed266(core.List<api.LogLine> o) {
+checkUnnamed250(core.List<api.LogLine> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLogLine(o[0]);
   checkLogLine(o[1]);
 }
 
-buildUnnamed267() {
+buildUnnamed251() {
   var o = new core.List<api.SourceReference>();
   o.add(buildSourceReference());
   o.add(buildSourceReference());
   return o;
 }
 
-checkUnnamed267(core.List<api.SourceReference> o) {
+checkUnnamed251(core.List<api.SourceReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSourceReference(o[0]);
   checkSourceReference(o[1]);
@@ -952,7 +952,7 @@
     o.instanceIndex = 42;
     o.ip = "foo";
     o.latency = "foo";
-    o.line = buildUnnamed266();
+    o.line = buildUnnamed250();
     o.megaCycles = "foo";
     o.method = "foo";
     o.moduleId = "foo";
@@ -962,7 +962,7 @@
     o.requestId = "foo";
     o.resource = "foo";
     o.responseSize = "foo";
-    o.sourceReference = buildUnnamed267();
+    o.sourceReference = buildUnnamed251();
     o.startTime = "foo";
     o.status = 42;
     o.taskName = "foo";
@@ -992,7 +992,7 @@
     unittest.expect(o.instanceIndex, unittest.equals(42));
     unittest.expect(o.ip, unittest.equals('foo'));
     unittest.expect(o.latency, unittest.equals('foo'));
-    checkUnnamed266(o.line);
+    checkUnnamed250(o.line);
     unittest.expect(o.megaCycles, unittest.equals('foo'));
     unittest.expect(o.method, unittest.equals('foo'));
     unittest.expect(o.moduleId, unittest.equals('foo'));
@@ -1002,7 +1002,7 @@
     unittest.expect(o.requestId, unittest.equals('foo'));
     unittest.expect(o.resource, unittest.equals('foo'));
     unittest.expect(o.responseSize, unittest.equals('foo'));
-    checkUnnamed267(o.sourceReference);
+    checkUnnamed251(o.sourceReference);
     unittest.expect(o.startTime, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals(42));
     unittest.expect(o.taskName, unittest.equals('foo'));
@@ -1060,27 +1060,27 @@
   buildCounterSourceReference--;
 }
 
-buildUnnamed268() {
+buildUnnamed252() {
   var o = new core.List<api.LogEntry>();
   o.add(buildLogEntry());
   o.add(buildLogEntry());
   return o;
 }
 
-checkUnnamed268(core.List<api.LogEntry> o) {
+checkUnnamed252(core.List<api.LogEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLogEntry(o[0]);
   checkLogEntry(o[1]);
 }
 
-buildUnnamed269() {
+buildUnnamed253() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed269(core.Map<core.String, core.String> o) {
+checkUnnamed253(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1091,8 +1091,8 @@
   var o = new api.WriteLogEntriesRequest();
   buildCounterWriteLogEntriesRequest++;
   if (buildCounterWriteLogEntriesRequest < 3) {
-    o.entries = buildUnnamed268();
-    o.labels = buildUnnamed269();
+    o.entries = buildUnnamed252();
+    o.labels = buildUnnamed253();
     o.logName = "foo";
     o.partialSuccess = true;
     o.resource = buildMonitoredResource();
@@ -1104,8 +1104,8 @@
 checkWriteLogEntriesRequest(api.WriteLogEntriesRequest o) {
   buildCounterWriteLogEntriesRequest++;
   if (buildCounterWriteLogEntriesRequest < 3) {
-    checkUnnamed268(o.entries);
-    checkUnnamed269(o.labels);
+    checkUnnamed252(o.entries);
+    checkUnnamed253(o.labels);
     unittest.expect(o.logName, unittest.equals('foo'));
     unittest.expect(o.partialSuccess, unittest.isTrue);
     checkMonitoredResource(o.resource);
@@ -1369,6 +1369,7 @@
           new api.LoggingApi(mock).billingAccounts.exclusions;
       var arg_request = buildLogExclusion();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogExclusion.fromJson(json);
         checkLogExclusion(obj);
@@ -1403,6 +1404,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1411,7 +1413,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent)
+          .create(arg_request, arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogExclusion response) {
         checkLogExclusion(response);
       })));
@@ -1422,6 +1424,7 @@
       api.BillingAccountsExclusionsResourceApi res =
           new api.LoggingApi(mock).billingAccounts.exclusions;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1453,6 +1456,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1460,7 +1464,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -1470,6 +1476,7 @@
       api.BillingAccountsExclusionsResourceApi res =
           new api.LoggingApi(mock).billingAccounts.exclusions;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1501,6 +1508,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1509,7 +1517,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name)
+          .get(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogExclusion response) {
         checkLogExclusion(response);
       })));
@@ -1522,6 +1530,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1557,6 +1566,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1565,7 +1575,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListExclusionsResponse response) {
         checkListExclusionsResponse(response);
       })));
@@ -1578,6 +1591,7 @@
       var arg_request = buildLogExclusion();
       var arg_name = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogExclusion.fromJson(json);
         checkLogExclusion(obj);
@@ -1614,6 +1628,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1622,7 +1637,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_name, updateMask: arg_updateMask)
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogExclusion response) {
         checkLogExclusion(response);
       })));
@@ -1635,6 +1651,7 @@
       api.BillingAccountsLogsResourceApi res =
           new api.LoggingApi(mock).billingAccounts.logs;
       var arg_logName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1666,6 +1683,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1673,7 +1691,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_logName).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_logName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -1685,6 +1705,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1720,6 +1741,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1728,7 +1750,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLogsResponse response) {
         checkListLogsResponse(response);
       })));
@@ -1743,6 +1768,7 @@
       var arg_request = buildLogSink();
       var arg_parent = "foo";
       var arg_uniqueWriterIdentity = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogSink.fromJson(json);
         checkLogSink(obj);
@@ -1779,6 +1805,7 @@
         }
         unittest.expect(queryMap["uniqueWriterIdentity"].first,
             unittest.equals("$arg_uniqueWriterIdentity"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1788,7 +1815,8 @@
       }), true);
       res
           .create(arg_request, arg_parent,
-              uniqueWriterIdentity: arg_uniqueWriterIdentity)
+              uniqueWriterIdentity: arg_uniqueWriterIdentity,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
@@ -1799,6 +1827,7 @@
       api.BillingAccountsSinksResourceApi res =
           new api.LoggingApi(mock).billingAccounts.sinks;
       var arg_sinkName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1830,6 +1859,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1838,7 +1868,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_sinkName)
+          .delete(arg_sinkName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1849,6 +1879,7 @@
       api.BillingAccountsSinksResourceApi res =
           new api.LoggingApi(mock).billingAccounts.sinks;
       var arg_sinkName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1880,6 +1911,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1887,7 +1919,9 @@
         var resp = convert.JSON.encode(buildLogSink());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_sinkName).then(unittest.expectAsync1(((api.LogSink response) {
+      res
+          .get(arg_sinkName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
     });
@@ -1899,6 +1933,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1934,6 +1969,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1942,7 +1978,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListSinksResponse response) {
         checkListSinksResponse(response);
       })));
@@ -1954,8 +1993,9 @@
           new api.LoggingApi(mock).billingAccounts.sinks;
       var arg_request = buildLogSink();
       var arg_sinkName = "foo";
-      var arg_updateMask = "foo";
       var arg_uniqueWriterIdentity = true;
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogSink.fromJson(json);
         checkLogSink(obj);
@@ -1990,10 +2030,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
         unittest.expect(queryMap["uniqueWriterIdentity"].first,
             unittest.equals("$arg_uniqueWriterIdentity"));
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2003,8 +2044,9 @@
       }), true);
       res
           .patch(arg_request, arg_sinkName,
+              uniqueWriterIdentity: arg_uniqueWriterIdentity,
               updateMask: arg_updateMask,
-              uniqueWriterIdentity: arg_uniqueWriterIdentity)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
@@ -2016,8 +2058,9 @@
           new api.LoggingApi(mock).billingAccounts.sinks;
       var arg_request = buildLogSink();
       var arg_sinkName = "foo";
-      var arg_updateMask = "foo";
       var arg_uniqueWriterIdentity = true;
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogSink.fromJson(json);
         checkLogSink(obj);
@@ -2052,10 +2095,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
         unittest.expect(queryMap["uniqueWriterIdentity"].first,
             unittest.equals("$arg_uniqueWriterIdentity"));
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2065,8 +2109,9 @@
       }), true);
       res
           .update(arg_request, arg_sinkName,
+              uniqueWriterIdentity: arg_uniqueWriterIdentity,
               updateMask: arg_updateMask,
-              uniqueWriterIdentity: arg_uniqueWriterIdentity)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
@@ -2078,6 +2123,7 @@
       var mock = new HttpServerMock();
       api.EntriesResourceApi res = new api.LoggingApi(mock).entries;
       var arg_request = buildListLogEntriesRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ListLogEntriesRequest.fromJson(json);
         checkListLogEntriesRequest(obj);
@@ -2111,6 +2157,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2119,7 +2166,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_request)
+          .list(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLogEntriesResponse response) {
         checkListLogEntriesResponse(response);
       })));
@@ -2129,6 +2176,7 @@
       var mock = new HttpServerMock();
       api.EntriesResourceApi res = new api.LoggingApi(mock).entries;
       var arg_request = buildWriteLogEntriesRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.WriteLogEntriesRequest.fromJson(json);
         checkWriteLogEntriesRequest(obj);
@@ -2162,6 +2210,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2170,7 +2219,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .write(arg_request)
+          .write(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.WriteLogEntriesResponse response) {
         checkWriteLogEntriesResponse(response);
       })));
@@ -2184,6 +2233,7 @@
           new api.LoggingApi(mock).folders.exclusions;
       var arg_request = buildLogExclusion();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogExclusion.fromJson(json);
         checkLogExclusion(obj);
@@ -2218,6 +2268,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2226,7 +2277,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent)
+          .create(arg_request, arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogExclusion response) {
         checkLogExclusion(response);
       })));
@@ -2237,6 +2288,7 @@
       api.FoldersExclusionsResourceApi res =
           new api.LoggingApi(mock).folders.exclusions;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2268,6 +2320,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2275,7 +2328,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -2285,6 +2340,7 @@
       api.FoldersExclusionsResourceApi res =
           new api.LoggingApi(mock).folders.exclusions;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2316,6 +2372,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2324,7 +2381,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name)
+          .get(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogExclusion response) {
         checkLogExclusion(response);
       })));
@@ -2337,6 +2394,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2372,6 +2430,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2380,7 +2439,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListExclusionsResponse response) {
         checkListExclusionsResponse(response);
       })));
@@ -2393,6 +2455,7 @@
       var arg_request = buildLogExclusion();
       var arg_name = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogExclusion.fromJson(json);
         checkLogExclusion(obj);
@@ -2429,6 +2492,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2437,7 +2501,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_name, updateMask: arg_updateMask)
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogExclusion response) {
         checkLogExclusion(response);
       })));
@@ -2449,6 +2514,7 @@
       var mock = new HttpServerMock();
       api.FoldersLogsResourceApi res = new api.LoggingApi(mock).folders.logs;
       var arg_logName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2480,6 +2546,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2487,7 +2554,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_logName).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_logName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -2498,6 +2567,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2533,6 +2603,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2541,7 +2612,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLogsResponse response) {
         checkListLogsResponse(response);
       })));
@@ -2555,6 +2629,7 @@
       var arg_request = buildLogSink();
       var arg_parent = "foo";
       var arg_uniqueWriterIdentity = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogSink.fromJson(json);
         checkLogSink(obj);
@@ -2591,6 +2666,7 @@
         }
         unittest.expect(queryMap["uniqueWriterIdentity"].first,
             unittest.equals("$arg_uniqueWriterIdentity"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2600,7 +2676,8 @@
       }), true);
       res
           .create(arg_request, arg_parent,
-              uniqueWriterIdentity: arg_uniqueWriterIdentity)
+              uniqueWriterIdentity: arg_uniqueWriterIdentity,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
@@ -2610,6 +2687,7 @@
       var mock = new HttpServerMock();
       api.FoldersSinksResourceApi res = new api.LoggingApi(mock).folders.sinks;
       var arg_sinkName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2641,6 +2719,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2649,7 +2728,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_sinkName)
+          .delete(arg_sinkName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -2659,6 +2738,7 @@
       var mock = new HttpServerMock();
       api.FoldersSinksResourceApi res = new api.LoggingApi(mock).folders.sinks;
       var arg_sinkName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2690,6 +2770,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2697,7 +2778,9 @@
         var resp = convert.JSON.encode(buildLogSink());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_sinkName).then(unittest.expectAsync1(((api.LogSink response) {
+      res
+          .get(arg_sinkName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
     });
@@ -2708,6 +2791,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2743,6 +2827,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2751,7 +2836,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListSinksResponse response) {
         checkListSinksResponse(response);
       })));
@@ -2762,8 +2850,9 @@
       api.FoldersSinksResourceApi res = new api.LoggingApi(mock).folders.sinks;
       var arg_request = buildLogSink();
       var arg_sinkName = "foo";
-      var arg_updateMask = "foo";
       var arg_uniqueWriterIdentity = true;
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogSink.fromJson(json);
         checkLogSink(obj);
@@ -2798,10 +2887,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
         unittest.expect(queryMap["uniqueWriterIdentity"].first,
             unittest.equals("$arg_uniqueWriterIdentity"));
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2811,8 +2901,9 @@
       }), true);
       res
           .patch(arg_request, arg_sinkName,
+              uniqueWriterIdentity: arg_uniqueWriterIdentity,
               updateMask: arg_updateMask,
-              uniqueWriterIdentity: arg_uniqueWriterIdentity)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
@@ -2823,8 +2914,9 @@
       api.FoldersSinksResourceApi res = new api.LoggingApi(mock).folders.sinks;
       var arg_request = buildLogSink();
       var arg_sinkName = "foo";
-      var arg_updateMask = "foo";
       var arg_uniqueWriterIdentity = true;
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogSink.fromJson(json);
         checkLogSink(obj);
@@ -2859,10 +2951,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
         unittest.expect(queryMap["uniqueWriterIdentity"].first,
             unittest.equals("$arg_uniqueWriterIdentity"));
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2872,8 +2965,9 @@
       }), true);
       res
           .update(arg_request, arg_sinkName,
+              uniqueWriterIdentity: arg_uniqueWriterIdentity,
               updateMask: arg_updateMask,
-              uniqueWriterIdentity: arg_uniqueWriterIdentity)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
@@ -2887,6 +2981,7 @@
           new api.LoggingApi(mock).monitoredResourceDescriptors;
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2921,6 +3016,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2929,8 +3025,12 @@
             .encode(buildListMonitoredResourceDescriptorsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(pageToken: arg_pageToken, pageSize: arg_pageSize).then(unittest
-          .expectAsync1(
+      res
+          .list(
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
               ((api.ListMonitoredResourceDescriptorsResponse response) {
         checkListMonitoredResourceDescriptorsResponse(response);
       })));
@@ -2944,6 +3044,7 @@
           new api.LoggingApi(mock).organizations.exclusions;
       var arg_request = buildLogExclusion();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogExclusion.fromJson(json);
         checkLogExclusion(obj);
@@ -2978,6 +3079,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2986,7 +3088,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent)
+          .create(arg_request, arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogExclusion response) {
         checkLogExclusion(response);
       })));
@@ -2997,6 +3099,7 @@
       api.OrganizationsExclusionsResourceApi res =
           new api.LoggingApi(mock).organizations.exclusions;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3028,6 +3131,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3035,7 +3139,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -3045,6 +3151,7 @@
       api.OrganizationsExclusionsResourceApi res =
           new api.LoggingApi(mock).organizations.exclusions;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3076,6 +3183,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3084,7 +3192,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name)
+          .get(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogExclusion response) {
         checkLogExclusion(response);
       })));
@@ -3097,6 +3205,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3132,6 +3241,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3140,7 +3250,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListExclusionsResponse response) {
         checkListExclusionsResponse(response);
       })));
@@ -3153,6 +3266,7 @@
       var arg_request = buildLogExclusion();
       var arg_name = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogExclusion.fromJson(json);
         checkLogExclusion(obj);
@@ -3189,6 +3303,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3197,7 +3312,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_name, updateMask: arg_updateMask)
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogExclusion response) {
         checkLogExclusion(response);
       })));
@@ -3210,6 +3326,7 @@
       api.OrganizationsLogsResourceApi res =
           new api.LoggingApi(mock).organizations.logs;
       var arg_logName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3241,6 +3358,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3248,7 +3366,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_logName).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_logName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -3260,6 +3380,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3295,6 +3416,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3303,7 +3425,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLogsResponse response) {
         checkListLogsResponse(response);
       })));
@@ -3318,6 +3443,7 @@
       var arg_request = buildLogSink();
       var arg_parent = "foo";
       var arg_uniqueWriterIdentity = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogSink.fromJson(json);
         checkLogSink(obj);
@@ -3354,6 +3480,7 @@
         }
         unittest.expect(queryMap["uniqueWriterIdentity"].first,
             unittest.equals("$arg_uniqueWriterIdentity"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3363,7 +3490,8 @@
       }), true);
       res
           .create(arg_request, arg_parent,
-              uniqueWriterIdentity: arg_uniqueWriterIdentity)
+              uniqueWriterIdentity: arg_uniqueWriterIdentity,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
@@ -3374,6 +3502,7 @@
       api.OrganizationsSinksResourceApi res =
           new api.LoggingApi(mock).organizations.sinks;
       var arg_sinkName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3405,6 +3534,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3413,7 +3543,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_sinkName)
+          .delete(arg_sinkName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -3424,6 +3554,7 @@
       api.OrganizationsSinksResourceApi res =
           new api.LoggingApi(mock).organizations.sinks;
       var arg_sinkName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3455,6 +3586,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3462,7 +3594,9 @@
         var resp = convert.JSON.encode(buildLogSink());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_sinkName).then(unittest.expectAsync1(((api.LogSink response) {
+      res
+          .get(arg_sinkName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
     });
@@ -3474,6 +3608,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3509,6 +3644,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3517,7 +3653,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListSinksResponse response) {
         checkListSinksResponse(response);
       })));
@@ -3529,8 +3668,9 @@
           new api.LoggingApi(mock).organizations.sinks;
       var arg_request = buildLogSink();
       var arg_sinkName = "foo";
-      var arg_updateMask = "foo";
       var arg_uniqueWriterIdentity = true;
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogSink.fromJson(json);
         checkLogSink(obj);
@@ -3565,10 +3705,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
         unittest.expect(queryMap["uniqueWriterIdentity"].first,
             unittest.equals("$arg_uniqueWriterIdentity"));
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3578,8 +3719,9 @@
       }), true);
       res
           .patch(arg_request, arg_sinkName,
+              uniqueWriterIdentity: arg_uniqueWriterIdentity,
               updateMask: arg_updateMask,
-              uniqueWriterIdentity: arg_uniqueWriterIdentity)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
@@ -3591,8 +3733,9 @@
           new api.LoggingApi(mock).organizations.sinks;
       var arg_request = buildLogSink();
       var arg_sinkName = "foo";
-      var arg_updateMask = "foo";
       var arg_uniqueWriterIdentity = true;
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogSink.fromJson(json);
         checkLogSink(obj);
@@ -3627,10 +3770,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
         unittest.expect(queryMap["uniqueWriterIdentity"].first,
             unittest.equals("$arg_uniqueWriterIdentity"));
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3640,8 +3784,9 @@
       }), true);
       res
           .update(arg_request, arg_sinkName,
+              uniqueWriterIdentity: arg_uniqueWriterIdentity,
               updateMask: arg_updateMask,
-              uniqueWriterIdentity: arg_uniqueWriterIdentity)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
@@ -3655,6 +3800,7 @@
           new api.LoggingApi(mock).projects.exclusions;
       var arg_request = buildLogExclusion();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogExclusion.fromJson(json);
         checkLogExclusion(obj);
@@ -3689,6 +3835,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3697,7 +3844,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent)
+          .create(arg_request, arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogExclusion response) {
         checkLogExclusion(response);
       })));
@@ -3708,6 +3855,7 @@
       api.ProjectsExclusionsResourceApi res =
           new api.LoggingApi(mock).projects.exclusions;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3739,6 +3887,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3746,7 +3895,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -3756,6 +3907,7 @@
       api.ProjectsExclusionsResourceApi res =
           new api.LoggingApi(mock).projects.exclusions;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3787,6 +3939,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3795,7 +3948,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name)
+          .get(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogExclusion response) {
         checkLogExclusion(response);
       })));
@@ -3808,6 +3961,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3843,6 +3997,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3851,7 +4006,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListExclusionsResponse response) {
         checkListExclusionsResponse(response);
       })));
@@ -3864,6 +4022,7 @@
       var arg_request = buildLogExclusion();
       var arg_name = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogExclusion.fromJson(json);
         checkLogExclusion(obj);
@@ -3900,6 +4059,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3908,7 +4068,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_name, updateMask: arg_updateMask)
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogExclusion response) {
         checkLogExclusion(response);
       })));
@@ -3920,6 +4081,7 @@
       var mock = new HttpServerMock();
       api.ProjectsLogsResourceApi res = new api.LoggingApi(mock).projects.logs;
       var arg_logName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3951,6 +4113,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3958,7 +4121,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_logName).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_logName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -3969,6 +4134,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4004,6 +4170,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4012,7 +4179,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLogsResponse response) {
         checkListLogsResponse(response);
       })));
@@ -4026,6 +4196,7 @@
           new api.LoggingApi(mock).projects.metrics;
       var arg_request = buildLogMetric();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogMetric.fromJson(json);
         checkLogMetric(obj);
@@ -4060,6 +4231,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4068,7 +4240,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent)
+          .create(arg_request, arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogMetric response) {
         checkLogMetric(response);
       })));
@@ -4079,6 +4251,7 @@
       api.ProjectsMetricsResourceApi res =
           new api.LoggingApi(mock).projects.metrics;
       var arg_metricName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4110,6 +4283,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4118,7 +4292,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_metricName)
+          .delete(arg_metricName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -4129,6 +4303,7 @@
       api.ProjectsMetricsResourceApi res =
           new api.LoggingApi(mock).projects.metrics;
       var arg_metricName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4160,6 +4335,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4168,7 +4344,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_metricName)
+          .get(arg_metricName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogMetric response) {
         checkLogMetric(response);
       })));
@@ -4181,6 +4357,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4216,6 +4393,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4224,7 +4402,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLogMetricsResponse response) {
         checkListLogMetricsResponse(response);
       })));
@@ -4236,6 +4417,7 @@
           new api.LoggingApi(mock).projects.metrics;
       var arg_request = buildLogMetric();
       var arg_metricName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogMetric.fromJson(json);
         checkLogMetric(obj);
@@ -4270,6 +4452,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4278,7 +4461,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_metricName)
+          .update(arg_request, arg_metricName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogMetric response) {
         checkLogMetric(response);
       })));
@@ -4293,6 +4476,7 @@
       var arg_request = buildLogSink();
       var arg_parent = "foo";
       var arg_uniqueWriterIdentity = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogSink.fromJson(json);
         checkLogSink(obj);
@@ -4329,6 +4513,7 @@
         }
         unittest.expect(queryMap["uniqueWriterIdentity"].first,
             unittest.equals("$arg_uniqueWriterIdentity"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4338,7 +4523,8 @@
       }), true);
       res
           .create(arg_request, arg_parent,
-              uniqueWriterIdentity: arg_uniqueWriterIdentity)
+              uniqueWriterIdentity: arg_uniqueWriterIdentity,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
@@ -4349,6 +4535,7 @@
       api.ProjectsSinksResourceApi res =
           new api.LoggingApi(mock).projects.sinks;
       var arg_sinkName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4380,6 +4567,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4388,7 +4576,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_sinkName)
+          .delete(arg_sinkName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -4399,6 +4587,7 @@
       api.ProjectsSinksResourceApi res =
           new api.LoggingApi(mock).projects.sinks;
       var arg_sinkName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4430,6 +4619,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4437,7 +4627,9 @@
         var resp = convert.JSON.encode(buildLogSink());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_sinkName).then(unittest.expectAsync1(((api.LogSink response) {
+      res
+          .get(arg_sinkName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
     });
@@ -4449,6 +4641,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4484,6 +4677,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4492,7 +4686,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListSinksResponse response) {
         checkListSinksResponse(response);
       })));
@@ -4504,8 +4701,9 @@
           new api.LoggingApi(mock).projects.sinks;
       var arg_request = buildLogSink();
       var arg_sinkName = "foo";
-      var arg_updateMask = "foo";
       var arg_uniqueWriterIdentity = true;
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogSink.fromJson(json);
         checkLogSink(obj);
@@ -4540,10 +4738,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
         unittest.expect(queryMap["uniqueWriterIdentity"].first,
             unittest.equals("$arg_uniqueWriterIdentity"));
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4553,8 +4752,9 @@
       }), true);
       res
           .patch(arg_request, arg_sinkName,
+              uniqueWriterIdentity: arg_uniqueWriterIdentity,
               updateMask: arg_updateMask,
-              uniqueWriterIdentity: arg_uniqueWriterIdentity)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
@@ -4566,8 +4766,9 @@
           new api.LoggingApi(mock).projects.sinks;
       var arg_request = buildLogSink();
       var arg_sinkName = "foo";
-      var arg_updateMask = "foo";
       var arg_uniqueWriterIdentity = true;
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogSink.fromJson(json);
         checkLogSink(obj);
@@ -4602,10 +4803,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
         unittest.expect(queryMap["uniqueWriterIdentity"].first,
             unittest.equals("$arg_uniqueWriterIdentity"));
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4615,8 +4817,9 @@
       }), true);
       res
           .update(arg_request, arg_sinkName,
+              uniqueWriterIdentity: arg_uniqueWriterIdentity,
               updateMask: arg_updateMask,
-              uniqueWriterIdentity: arg_uniqueWriterIdentity)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
diff --git a/generated/googleapis/test/manufacturers/v1_test.dart b/generated/googleapis/test/manufacturers/v1_test.dart
index 3f671ad..4e4898e 100644
--- a/generated/googleapis/test/manufacturers/v1_test.dart
+++ b/generated/googleapis/test/manufacturers/v1_test.dart
@@ -50,79 +50,79 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed1651() {
+buildUnnamed1643() {
   var o = new core.List<api.Image>();
   o.add(buildImage());
   o.add(buildImage());
   return o;
 }
 
-checkUnnamed1651(core.List<api.Image> o) {
+checkUnnamed1643(core.List<api.Image> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkImage(o[0]);
   checkImage(o[1]);
 }
 
-buildUnnamed1652() {
+buildUnnamed1644() {
   var o = new core.List<api.FeatureDescription>();
   o.add(buildFeatureDescription());
   o.add(buildFeatureDescription());
   return o;
 }
 
-checkUnnamed1652(core.List<api.FeatureDescription> o) {
+checkUnnamed1644(core.List<api.FeatureDescription> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFeatureDescription(o[0]);
   checkFeatureDescription(o[1]);
 }
 
-buildUnnamed1653() {
+buildUnnamed1645() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1653(core.List<core.String> o) {
+checkUnnamed1645(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1654() {
+buildUnnamed1646() {
   var o = new core.List<api.ProductDetail>();
   o.add(buildProductDetail());
   o.add(buildProductDetail());
   return o;
 }
 
-checkUnnamed1654(core.List<api.ProductDetail> o) {
+checkUnnamed1646(core.List<api.ProductDetail> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProductDetail(o[0]);
   checkProductDetail(o[1]);
 }
 
-buildUnnamed1655() {
+buildUnnamed1647() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1655(core.List<core.String> o) {
+checkUnnamed1647(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1656() {
+buildUnnamed1648() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1656(core.List<core.String> o) {
+checkUnnamed1648(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -133,7 +133,7 @@
   var o = new api.Attributes();
   buildCounterAttributes++;
   if (buildCounterAttributes < 3) {
-    o.additionalImageLink = buildUnnamed1651();
+    o.additionalImageLink = buildUnnamed1643();
     o.ageGroup = "foo";
     o.brand = "foo";
     o.capacity = buildCapacity();
@@ -141,31 +141,31 @@
     o.count = buildCount();
     o.description = "foo";
     o.disclosureDate = "foo";
-    o.featureDescription = buildUnnamed1652();
+    o.featureDescription = buildUnnamed1644();
     o.flavor = "foo";
     o.format = "foo";
     o.gender = "foo";
-    o.gtin = buildUnnamed1653();
+    o.gtin = buildUnnamed1645();
     o.imageLink = buildImage();
     o.itemGroupId = "foo";
     o.material = "foo";
     o.mpn = "foo";
     o.pattern = "foo";
-    o.productDetail = buildUnnamed1654();
+    o.productDetail = buildUnnamed1646();
     o.productLine = "foo";
     o.productName = "foo";
     o.productPageUrl = "foo";
-    o.productType = buildUnnamed1655();
+    o.productType = buildUnnamed1647();
     o.releaseDate = "foo";
     o.scent = "foo";
     o.size = "foo";
     o.sizeSystem = "foo";
     o.sizeType = "foo";
     o.suggestedRetailPrice = buildPrice();
-    o.targetAccountId = "foo";
+    o.targetClientId = "foo";
     o.theme = "foo";
     o.title = "foo";
-    o.videoLink = buildUnnamed1656();
+    o.videoLink = buildUnnamed1648();
   }
   buildCounterAttributes--;
   return o;
@@ -174,7 +174,7 @@
 checkAttributes(api.Attributes o) {
   buildCounterAttributes++;
   if (buildCounterAttributes < 3) {
-    checkUnnamed1651(o.additionalImageLink);
+    checkUnnamed1643(o.additionalImageLink);
     unittest.expect(o.ageGroup, unittest.equals('foo'));
     unittest.expect(o.brand, unittest.equals('foo'));
     checkCapacity(o.capacity);
@@ -182,31 +182,31 @@
     checkCount(o.count);
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.disclosureDate, unittest.equals('foo'));
-    checkUnnamed1652(o.featureDescription);
+    checkUnnamed1644(o.featureDescription);
     unittest.expect(o.flavor, unittest.equals('foo'));
     unittest.expect(o.format, unittest.equals('foo'));
     unittest.expect(o.gender, unittest.equals('foo'));
-    checkUnnamed1653(o.gtin);
+    checkUnnamed1645(o.gtin);
     checkImage(o.imageLink);
     unittest.expect(o.itemGroupId, unittest.equals('foo'));
     unittest.expect(o.material, unittest.equals('foo'));
     unittest.expect(o.mpn, unittest.equals('foo'));
     unittest.expect(o.pattern, unittest.equals('foo'));
-    checkUnnamed1654(o.productDetail);
+    checkUnnamed1646(o.productDetail);
     unittest.expect(o.productLine, unittest.equals('foo'));
     unittest.expect(o.productName, unittest.equals('foo'));
     unittest.expect(o.productPageUrl, unittest.equals('foo'));
-    checkUnnamed1655(o.productType);
+    checkUnnamed1647(o.productType);
     unittest.expect(o.releaseDate, unittest.equals('foo'));
     unittest.expect(o.scent, unittest.equals('foo'));
     unittest.expect(o.size, unittest.equals('foo'));
     unittest.expect(o.sizeSystem, unittest.equals('foo'));
     unittest.expect(o.sizeType, unittest.equals('foo'));
     checkPrice(o.suggestedRetailPrice);
-    unittest.expect(o.targetAccountId, unittest.equals('foo'));
+    unittest.expect(o.targetClientId, unittest.equals('foo'));
     unittest.expect(o.theme, unittest.equals('foo'));
     unittest.expect(o.title, unittest.equals('foo'));
-    checkUnnamed1656(o.videoLink);
+    checkUnnamed1648(o.videoLink);
   }
   buildCounterAttributes--;
 }
@@ -341,14 +341,14 @@
   buildCounterIssue--;
 }
 
-buildUnnamed1657() {
+buildUnnamed1649() {
   var o = new core.List<api.Product>();
   o.add(buildProduct());
   o.add(buildProduct());
   return o;
 }
 
-checkUnnamed1657(core.List<api.Product> o) {
+checkUnnamed1649(core.List<api.Product> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProduct(o[0]);
   checkProduct(o[1]);
@@ -360,7 +360,7 @@
   buildCounterListProductsResponse++;
   if (buildCounterListProductsResponse < 3) {
     o.nextPageToken = "foo";
-    o.products = buildUnnamed1657();
+    o.products = buildUnnamed1649();
   }
   buildCounterListProductsResponse--;
   return o;
@@ -370,7 +370,7 @@
   buildCounterListProductsResponse++;
   if (buildCounterListProductsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1657(o.products);
+    checkUnnamed1649(o.products);
   }
   buildCounterListProductsResponse--;
 }
@@ -396,27 +396,27 @@
   buildCounterPrice--;
 }
 
-buildUnnamed1658() {
+buildUnnamed1650() {
   var o = new core.List<api.Issue>();
   o.add(buildIssue());
   o.add(buildIssue());
   return o;
 }
 
-checkUnnamed1658(core.List<api.Issue> o) {
+checkUnnamed1650(core.List<api.Issue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkIssue(o[0]);
   checkIssue(o[1]);
 }
 
-buildUnnamed1659() {
+buildUnnamed1651() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1659(core.List<core.String> o) {
+checkUnnamed1651(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -429,8 +429,8 @@
   if (buildCounterProduct < 3) {
     o.contentLanguage = "foo";
     o.finalAttributes = buildAttributes();
-    o.issues = buildUnnamed1658();
-    o.manuallyDeletedAttributes = buildUnnamed1659();
+    o.issues = buildUnnamed1650();
+    o.manuallyDeletedAttributes = buildUnnamed1651();
     o.manuallyProvidedAttributes = buildAttributes();
     o.name = "foo";
     o.parent = "foo";
@@ -447,8 +447,8 @@
   if (buildCounterProduct < 3) {
     unittest.expect(o.contentLanguage, unittest.equals('foo'));
     checkAttributes(o.finalAttributes);
-    checkUnnamed1658(o.issues);
-    checkUnnamed1659(o.manuallyDeletedAttributes);
+    checkUnnamed1650(o.issues);
+    checkUnnamed1651(o.manuallyDeletedAttributes);
     checkAttributes(o.manuallyProvidedAttributes);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.parent, unittest.equals('foo'));
@@ -578,6 +578,7 @@
           new api.ManufacturersApi(mock).accounts.products;
       var arg_parent = "foo";
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -609,6 +610,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -617,7 +619,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_parent, arg_name)
+          .delete(arg_parent, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -629,6 +631,7 @@
           new api.ManufacturersApi(mock).accounts.products;
       var arg_parent = "foo";
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -660,6 +663,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -668,7 +672,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_parent, arg_name)
+          .get(arg_parent, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Product response) {
         checkProduct(response);
       })));
@@ -679,8 +683,9 @@
       api.AccountsProductsResourceApi res =
           new api.ManufacturersApi(mock).accounts.products;
       var arg_parent = "foo";
-      var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -712,10 +717,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -724,7 +730,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListProductsResponse response) {
         checkListProductsResponse(response);
       })));
@@ -737,6 +746,7 @@
       var arg_request = buildProduct();
       var arg_parent = "foo";
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Product.fromJson(json);
         checkProduct(obj);
@@ -771,6 +781,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -779,7 +790,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_parent, arg_name)
+          .update(arg_request, arg_parent, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Product response) {
         checkProduct(response);
       })));
diff --git a/generated/googleapis/test/mirror/v1_test.dart b/generated/googleapis/test/mirror/v1_test.dart
index ec90a38..1c2b6b9 100644
--- a/generated/googleapis/test/mirror/v1_test.dart
+++ b/generated/googleapis/test/mirror/v1_test.dart
@@ -50,40 +50,40 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed1538() {
+buildUnnamed1525() {
   var o = new core.List<api.AuthToken>();
   o.add(buildAuthToken());
   o.add(buildAuthToken());
   return o;
 }
 
-checkUnnamed1538(core.List<api.AuthToken> o) {
+checkUnnamed1525(core.List<api.AuthToken> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuthToken(o[0]);
   checkAuthToken(o[1]);
 }
 
-buildUnnamed1539() {
+buildUnnamed1526() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1539(core.List<core.String> o) {
+checkUnnamed1526(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1540() {
+buildUnnamed1527() {
   var o = new core.List<api.UserData>();
   o.add(buildUserData());
   o.add(buildUserData());
   return o;
 }
 
-checkUnnamed1540(core.List<api.UserData> o) {
+checkUnnamed1527(core.List<api.UserData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUserData(o[0]);
   checkUserData(o[1]);
@@ -94,10 +94,10 @@
   var o = new api.Account();
   buildCounterAccount++;
   if (buildCounterAccount < 3) {
-    o.authTokens = buildUnnamed1538();
-    o.features = buildUnnamed1539();
+    o.authTokens = buildUnnamed1525();
+    o.features = buildUnnamed1526();
     o.password = "foo";
-    o.userData = buildUnnamed1540();
+    o.userData = buildUnnamed1527();
   }
   buildCounterAccount--;
   return o;
@@ -106,10 +106,10 @@
 checkAccount(api.Account o) {
   buildCounterAccount++;
   if (buildCounterAccount < 3) {
-    checkUnnamed1538(o.authTokens);
-    checkUnnamed1539(o.features);
+    checkUnnamed1525(o.authTokens);
+    checkUnnamed1526(o.features);
     unittest.expect(o.password, unittest.equals('foo'));
-    checkUnnamed1540(o.userData);
+    checkUnnamed1527(o.userData);
   }
   buildCounterAccount--;
 }
@@ -139,14 +139,14 @@
   buildCounterAttachment--;
 }
 
-buildUnnamed1541() {
+buildUnnamed1528() {
   var o = new core.List<api.Attachment>();
   o.add(buildAttachment());
   o.add(buildAttachment());
   return o;
 }
 
-checkUnnamed1541(core.List<api.Attachment> o) {
+checkUnnamed1528(core.List<api.Attachment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAttachment(o[0]);
   checkAttachment(o[1]);
@@ -157,7 +157,7 @@
   var o = new api.AttachmentsListResponse();
   buildCounterAttachmentsListResponse++;
   if (buildCounterAttachmentsListResponse < 3) {
-    o.items = buildUnnamed1541();
+    o.items = buildUnnamed1528();
     o.kind = "foo";
   }
   buildCounterAttachmentsListResponse--;
@@ -167,7 +167,7 @@
 checkAttachmentsListResponse(api.AttachmentsListResponse o) {
   buildCounterAttachmentsListResponse++;
   if (buildCounterAttachmentsListResponse < 3) {
-    checkUnnamed1541(o.items);
+    checkUnnamed1528(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterAttachmentsListResponse--;
@@ -213,53 +213,53 @@
   buildCounterCommand--;
 }
 
-buildUnnamed1542() {
+buildUnnamed1529() {
   var o = new core.List<api.Command>();
   o.add(buildCommand());
   o.add(buildCommand());
   return o;
 }
 
-checkUnnamed1542(core.List<api.Command> o) {
+checkUnnamed1529(core.List<api.Command> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCommand(o[0]);
   checkCommand(o[1]);
 }
 
-buildUnnamed1543() {
+buildUnnamed1530() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1543(core.List<core.String> o) {
+checkUnnamed1530(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1544() {
+buildUnnamed1531() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1544(core.List<core.String> o) {
+checkUnnamed1531(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1545() {
+buildUnnamed1532() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1545(core.List<core.String> o) {
+checkUnnamed1532(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -270,15 +270,15 @@
   var o = new api.Contact();
   buildCounterContact++;
   if (buildCounterContact < 3) {
-    o.acceptCommands = buildUnnamed1542();
-    o.acceptTypes = buildUnnamed1543();
+    o.acceptCommands = buildUnnamed1529();
+    o.acceptTypes = buildUnnamed1530();
     o.displayName = "foo";
     o.id = "foo";
-    o.imageUrls = buildUnnamed1544();
+    o.imageUrls = buildUnnamed1531();
     o.kind = "foo";
     o.phoneNumber = "foo";
     o.priority = 42;
-    o.sharingFeatures = buildUnnamed1545();
+    o.sharingFeatures = buildUnnamed1532();
     o.source = "foo";
     o.speakableName = "foo";
     o.type = "foo";
@@ -290,15 +290,15 @@
 checkContact(api.Contact o) {
   buildCounterContact++;
   if (buildCounterContact < 3) {
-    checkUnnamed1542(o.acceptCommands);
-    checkUnnamed1543(o.acceptTypes);
+    checkUnnamed1529(o.acceptCommands);
+    checkUnnamed1530(o.acceptTypes);
     unittest.expect(o.displayName, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed1544(o.imageUrls);
+    checkUnnamed1531(o.imageUrls);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.phoneNumber, unittest.equals('foo'));
     unittest.expect(o.priority, unittest.equals(42));
-    checkUnnamed1545(o.sharingFeatures);
+    checkUnnamed1532(o.sharingFeatures);
     unittest.expect(o.source, unittest.equals('foo'));
     unittest.expect(o.speakableName, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
@@ -306,14 +306,14 @@
   buildCounterContact--;
 }
 
-buildUnnamed1546() {
+buildUnnamed1533() {
   var o = new core.List<api.Contact>();
   o.add(buildContact());
   o.add(buildContact());
   return o;
 }
 
-checkUnnamed1546(core.List<api.Contact> o) {
+checkUnnamed1533(core.List<api.Contact> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkContact(o[0]);
   checkContact(o[1]);
@@ -324,7 +324,7 @@
   var o = new api.ContactsListResponse();
   buildCounterContactsListResponse++;
   if (buildCounterContactsListResponse < 3) {
-    o.items = buildUnnamed1546();
+    o.items = buildUnnamed1533();
     o.kind = "foo";
   }
   buildCounterContactsListResponse--;
@@ -334,7 +334,7 @@
 checkContactsListResponse(api.ContactsListResponse o) {
   buildCounterContactsListResponse++;
   if (buildCounterContactsListResponse < 3) {
-    checkUnnamed1546(o.items);
+    checkUnnamed1533(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterContactsListResponse--;
@@ -374,14 +374,14 @@
   buildCounterLocation--;
 }
 
-buildUnnamed1547() {
+buildUnnamed1534() {
   var o = new core.List<api.Location>();
   o.add(buildLocation());
   o.add(buildLocation());
   return o;
 }
 
-checkUnnamed1547(core.List<api.Location> o) {
+checkUnnamed1534(core.List<api.Location> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocation(o[0]);
   checkLocation(o[1]);
@@ -392,7 +392,7 @@
   var o = new api.LocationsListResponse();
   buildCounterLocationsListResponse++;
   if (buildCounterLocationsListResponse < 3) {
-    o.items = buildUnnamed1547();
+    o.items = buildUnnamed1534();
     o.kind = "foo";
   }
   buildCounterLocationsListResponse--;
@@ -402,20 +402,20 @@
 checkLocationsListResponse(api.LocationsListResponse o) {
   buildCounterLocationsListResponse++;
   if (buildCounterLocationsListResponse < 3) {
-    checkUnnamed1547(o.items);
+    checkUnnamed1534(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterLocationsListResponse--;
 }
 
-buildUnnamed1548() {
+buildUnnamed1535() {
   var o = new core.List<api.MenuValue>();
   o.add(buildMenuValue());
   o.add(buildMenuValue());
   return o;
 }
 
-checkUnnamed1548(core.List<api.MenuValue> o) {
+checkUnnamed1535(core.List<api.MenuValue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMenuValue(o[0]);
   checkMenuValue(o[1]);
@@ -431,7 +431,7 @@
     o.id = "foo";
     o.payload = "foo";
     o.removeWhenSelected = true;
-    o.values = buildUnnamed1548();
+    o.values = buildUnnamed1535();
   }
   buildCounterMenuItem--;
   return o;
@@ -445,7 +445,7 @@
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.payload, unittest.equals('foo'));
     unittest.expect(o.removeWhenSelected, unittest.isTrue);
-    checkUnnamed1548(o.values);
+    checkUnnamed1535(o.values);
   }
   buildCounterMenuItem--;
 }
@@ -473,14 +473,14 @@
   buildCounterMenuValue--;
 }
 
-buildUnnamed1549() {
+buildUnnamed1536() {
   var o = new core.List<api.UserAction>();
   o.add(buildUserAction());
   o.add(buildUserAction());
   return o;
 }
 
-checkUnnamed1549(core.List<api.UserAction> o) {
+checkUnnamed1536(core.List<api.UserAction> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUserAction(o[0]);
   checkUserAction(o[1]);
@@ -494,7 +494,7 @@
     o.collection = "foo";
     o.itemId = "foo";
     o.operation = "foo";
-    o.userActions = buildUnnamed1549();
+    o.userActions = buildUnnamed1536();
     o.userToken = "foo";
     o.verifyToken = "foo";
   }
@@ -508,7 +508,7 @@
     unittest.expect(o.collection, unittest.equals('foo'));
     unittest.expect(o.itemId, unittest.equals('foo'));
     unittest.expect(o.operation, unittest.equals('foo'));
-    checkUnnamed1549(o.userActions);
+    checkUnnamed1536(o.userActions);
     unittest.expect(o.userToken, unittest.equals('foo'));
     unittest.expect(o.verifyToken, unittest.equals('foo'));
   }
@@ -560,14 +560,14 @@
   buildCounterSetting--;
 }
 
-buildUnnamed1550() {
+buildUnnamed1537() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1550(core.List<core.String> o) {
+checkUnnamed1537(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -583,7 +583,7 @@
     o.id = "foo";
     o.kind = "foo";
     o.notification = buildNotification();
-    o.operation = buildUnnamed1550();
+    o.operation = buildUnnamed1537();
     o.updated = core.DateTime.parse("2002-02-27T14:01:02");
     o.userToken = "foo";
     o.verifyToken = "foo";
@@ -600,7 +600,7 @@
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     checkNotification(o.notification);
-    checkUnnamed1550(o.operation);
+    checkUnnamed1537(o.operation);
     unittest.expect(
         o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
     unittest.expect(o.userToken, unittest.equals('foo'));
@@ -609,14 +609,14 @@
   buildCounterSubscription--;
 }
 
-buildUnnamed1551() {
+buildUnnamed1538() {
   var o = new core.List<api.Subscription>();
   o.add(buildSubscription());
   o.add(buildSubscription());
   return o;
 }
 
-checkUnnamed1551(core.List<api.Subscription> o) {
+checkUnnamed1538(core.List<api.Subscription> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSubscription(o[0]);
   checkSubscription(o[1]);
@@ -627,7 +627,7 @@
   var o = new api.SubscriptionsListResponse();
   buildCounterSubscriptionsListResponse++;
   if (buildCounterSubscriptionsListResponse < 3) {
-    o.items = buildUnnamed1551();
+    o.items = buildUnnamed1538();
     o.kind = "foo";
   }
   buildCounterSubscriptionsListResponse--;
@@ -637,46 +637,46 @@
 checkSubscriptionsListResponse(api.SubscriptionsListResponse o) {
   buildCounterSubscriptionsListResponse++;
   if (buildCounterSubscriptionsListResponse < 3) {
-    checkUnnamed1551(o.items);
+    checkUnnamed1538(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterSubscriptionsListResponse--;
 }
 
-buildUnnamed1552() {
+buildUnnamed1539() {
   var o = new core.List<api.Attachment>();
   o.add(buildAttachment());
   o.add(buildAttachment());
   return o;
 }
 
-checkUnnamed1552(core.List<api.Attachment> o) {
+checkUnnamed1539(core.List<api.Attachment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAttachment(o[0]);
   checkAttachment(o[1]);
 }
 
-buildUnnamed1553() {
+buildUnnamed1540() {
   var o = new core.List<api.MenuItem>();
   o.add(buildMenuItem());
   o.add(buildMenuItem());
   return o;
 }
 
-checkUnnamed1553(core.List<api.MenuItem> o) {
+checkUnnamed1540(core.List<api.MenuItem> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMenuItem(o[0]);
   checkMenuItem(o[1]);
 }
 
-buildUnnamed1554() {
+buildUnnamed1541() {
   var o = new core.List<api.Contact>();
   o.add(buildContact());
   o.add(buildContact());
   return o;
 }
 
-checkUnnamed1554(core.List<api.Contact> o) {
+checkUnnamed1541(core.List<api.Contact> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkContact(o[0]);
   checkContact(o[1]);
@@ -687,7 +687,7 @@
   var o = new api.TimelineItem();
   buildCounterTimelineItem++;
   if (buildCounterTimelineItem < 3) {
-    o.attachments = buildUnnamed1552();
+    o.attachments = buildUnnamed1539();
     o.bundleId = "foo";
     o.canonicalUrl = "foo";
     o.created = core.DateTime.parse("2002-02-27T14:01:02");
@@ -702,10 +702,10 @@
     o.isPinned = true;
     o.kind = "foo";
     o.location = buildLocation();
-    o.menuItems = buildUnnamed1553();
+    o.menuItems = buildUnnamed1540();
     o.notification = buildNotificationConfig();
     o.pinScore = 42;
-    o.recipients = buildUnnamed1554();
+    o.recipients = buildUnnamed1541();
     o.selfLink = "foo";
     o.sourceItemId = "foo";
     o.speakableText = "foo";
@@ -721,7 +721,7 @@
 checkTimelineItem(api.TimelineItem o) {
   buildCounterTimelineItem++;
   if (buildCounterTimelineItem < 3) {
-    checkUnnamed1552(o.attachments);
+    checkUnnamed1539(o.attachments);
     unittest.expect(o.bundleId, unittest.equals('foo'));
     unittest.expect(o.canonicalUrl, unittest.equals('foo'));
     unittest.expect(
@@ -738,10 +738,10 @@
     unittest.expect(o.isPinned, unittest.isTrue);
     unittest.expect(o.kind, unittest.equals('foo'));
     checkLocation(o.location);
-    checkUnnamed1553(o.menuItems);
+    checkUnnamed1540(o.menuItems);
     checkNotificationConfig(o.notification);
     unittest.expect(o.pinScore, unittest.equals(42));
-    checkUnnamed1554(o.recipients);
+    checkUnnamed1541(o.recipients);
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.sourceItemId, unittest.equals('foo'));
     unittest.expect(o.speakableText, unittest.equals('foo'));
@@ -754,14 +754,14 @@
   buildCounterTimelineItem--;
 }
 
-buildUnnamed1555() {
+buildUnnamed1542() {
   var o = new core.List<api.TimelineItem>();
   o.add(buildTimelineItem());
   o.add(buildTimelineItem());
   return o;
 }
 
-checkUnnamed1555(core.List<api.TimelineItem> o) {
+checkUnnamed1542(core.List<api.TimelineItem> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTimelineItem(o[0]);
   checkTimelineItem(o[1]);
@@ -772,7 +772,7 @@
   var o = new api.TimelineListResponse();
   buildCounterTimelineListResponse++;
   if (buildCounterTimelineListResponse < 3) {
-    o.items = buildUnnamed1555();
+    o.items = buildUnnamed1542();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -783,7 +783,7 @@
 checkTimelineListResponse(api.TimelineListResponse o) {
   buildCounterTimelineListResponse++;
   if (buildCounterTimelineListResponse < 3) {
-    checkUnnamed1555(o.items);
+    checkUnnamed1542(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -1001,6 +1001,7 @@
       var arg_userToken = "foo";
       var arg_accountType = "foo";
       var arg_accountName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Account.fromJson(json);
         checkAccount(obj);
@@ -1058,6 +1059,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1066,7 +1068,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_userToken, arg_accountType, arg_accountName)
+          .insert(arg_request, arg_userToken, arg_accountType, arg_accountName,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Account response) {
         checkAccount(response);
       })));
@@ -1078,6 +1081,7 @@
       var mock = new HttpServerMock();
       api.ContactsResourceApi res = new api.MirrorApi(mock).contacts;
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1114,6 +1118,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1121,13 +1126,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_id).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
       var mock = new HttpServerMock();
       api.ContactsResourceApi res = new api.MirrorApi(mock).contacts;
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1164,6 +1172,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1171,7 +1180,9 @@
         var resp = convert.JSON.encode(buildContact());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_id).then(unittest.expectAsync1(((api.Contact response) {
+      res
+          .get(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Contact response) {
         checkContact(response);
       })));
     });
@@ -1180,6 +1191,7 @@
       var mock = new HttpServerMock();
       api.ContactsResourceApi res = new api.MirrorApi(mock).contacts;
       var arg_request = buildContact();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Contact.fromJson(json);
         checkContact(obj);
@@ -1216,6 +1228,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1224,7 +1237,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request)
+          .insert(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Contact response) {
         checkContact(response);
       })));
@@ -1233,6 +1246,7 @@
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
       api.ContactsResourceApi res = new api.MirrorApi(mock).contacts;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1266,6 +1280,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1274,7 +1289,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list()
+          .list($fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ContactsListResponse response) {
         checkContactsListResponse(response);
       })));
@@ -1285,6 +1300,7 @@
       api.ContactsResourceApi res = new api.MirrorApi(mock).contacts;
       var arg_request = buildContact();
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Contact.fromJson(json);
         checkContact(obj);
@@ -1324,6 +1340,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1332,7 +1349,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_id)
+          .patch(arg_request, arg_id, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Contact response) {
         checkContact(response);
       })));
@@ -1343,6 +1360,7 @@
       api.ContactsResourceApi res = new api.MirrorApi(mock).contacts;
       var arg_request = buildContact();
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Contact.fromJson(json);
         checkContact(obj);
@@ -1382,6 +1400,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1390,7 +1409,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_id)
+          .update(arg_request, arg_id, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Contact response) {
         checkContact(response);
       })));
@@ -1402,6 +1421,7 @@
       var mock = new HttpServerMock();
       api.LocationsResourceApi res = new api.MirrorApi(mock).locations;
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1438,6 +1458,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1445,7 +1466,9 @@
         var resp = convert.JSON.encode(buildLocation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_id).then(unittest.expectAsync1(((api.Location response) {
+      res
+          .get(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Location response) {
         checkLocation(response);
       })));
     });
@@ -1453,6 +1476,7 @@
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
       api.LocationsResourceApi res = new api.MirrorApi(mock).locations;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1486,6 +1510,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1494,7 +1519,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list()
+          .list($fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LocationsListResponse response) {
         checkLocationsListResponse(response);
       })));
@@ -1506,6 +1531,7 @@
       var mock = new HttpServerMock();
       api.SettingsResourceApi res = new api.MirrorApi(mock).settings;
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1542,6 +1568,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1549,7 +1576,9 @@
         var resp = convert.JSON.encode(buildSetting());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_id).then(unittest.expectAsync1(((api.Setting response) {
+      res
+          .get(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Setting response) {
         checkSetting(response);
       })));
     });
@@ -1560,6 +1589,7 @@
       var mock = new HttpServerMock();
       api.SubscriptionsResourceApi res = new api.MirrorApi(mock).subscriptions;
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1596,6 +1626,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1603,13 +1634,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_id).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--insert", () {
       var mock = new HttpServerMock();
       api.SubscriptionsResourceApi res = new api.MirrorApi(mock).subscriptions;
       var arg_request = buildSubscription();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Subscription.fromJson(json);
         checkSubscription(obj);
@@ -1646,6 +1680,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1654,7 +1689,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request)
+          .insert(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscription response) {
         checkSubscription(response);
       })));
@@ -1663,6 +1698,7 @@
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
       api.SubscriptionsResourceApi res = new api.MirrorApi(mock).subscriptions;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1696,6 +1732,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1703,7 +1740,7 @@
         var resp = convert.JSON.encode(buildSubscriptionsListResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list().then(
+      res.list($fields: arg_$fields).then(
           unittest.expectAsync1(((api.SubscriptionsListResponse response) {
         checkSubscriptionsListResponse(response);
       })));
@@ -1714,6 +1751,7 @@
       api.SubscriptionsResourceApi res = new api.MirrorApi(mock).subscriptions;
       var arg_request = buildSubscription();
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Subscription.fromJson(json);
         checkSubscription(obj);
@@ -1753,6 +1791,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1761,7 +1800,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_id)
+          .update(arg_request, arg_id, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscription response) {
         checkSubscription(response);
       })));
@@ -1773,6 +1812,7 @@
       var mock = new HttpServerMock();
       api.TimelineResourceApi res = new api.MirrorApi(mock).timeline;
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1809,6 +1849,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1816,13 +1857,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_id).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
       var mock = new HttpServerMock();
       api.TimelineResourceApi res = new api.MirrorApi(mock).timeline;
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1859,6 +1903,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1866,7 +1911,9 @@
         var resp = convert.JSON.encode(buildTimelineItem());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_id).then(unittest.expectAsync1(((api.TimelineItem response) {
+      res
+          .get(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TimelineItem response) {
         checkTimelineItem(response);
       })));
     });
@@ -1878,6 +1925,7 @@
       var mock = new HttpServerMock();
       api.TimelineResourceApi res = new api.MirrorApi(mock).timeline;
       var arg_request = buildTimelineItem();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TimelineItem.fromJson(json);
         checkTimelineItem(obj);
@@ -1914,6 +1962,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1922,7 +1971,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request)
+          .insert(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TimelineItem response) {
         checkTimelineItem(response);
       })));
@@ -1938,6 +1987,7 @@
       var arg_pageToken = "foo";
       var arg_pinnedOnly = true;
       var arg_sourceItemId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1985,6 +2035,7 @@
             queryMap["pinnedOnly"].first, unittest.equals("$arg_pinnedOnly"));
         unittest.expect(
             queryMap["sourceItemId"].first, unittest.equals(arg_sourceItemId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2000,7 +2051,8 @@
               orderBy: arg_orderBy,
               pageToken: arg_pageToken,
               pinnedOnly: arg_pinnedOnly,
-              sourceItemId: arg_sourceItemId)
+              sourceItemId: arg_sourceItemId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TimelineListResponse response) {
         checkTimelineListResponse(response);
       })));
@@ -2011,6 +2063,7 @@
       api.TimelineResourceApi res = new api.MirrorApi(mock).timeline;
       var arg_request = buildTimelineItem();
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TimelineItem.fromJson(json);
         checkTimelineItem(obj);
@@ -2050,6 +2103,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2058,7 +2112,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_id)
+          .patch(arg_request, arg_id, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TimelineItem response) {
         checkTimelineItem(response);
       })));
@@ -2072,6 +2126,7 @@
       api.TimelineResourceApi res = new api.MirrorApi(mock).timeline;
       var arg_request = buildTimelineItem();
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TimelineItem.fromJson(json);
         checkTimelineItem(obj);
@@ -2111,6 +2166,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2119,7 +2175,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_id)
+          .update(arg_request, arg_id, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TimelineItem response) {
         checkTimelineItem(response);
       })));
@@ -2133,6 +2189,7 @@
           new api.MirrorApi(mock).timeline.attachments;
       var arg_itemId = "foo";
       var arg_attachmentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2178,6 +2235,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2186,7 +2244,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_itemId, arg_attachmentId)
+          .delete(arg_itemId, arg_attachmentId, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -2199,6 +2257,7 @@
           new api.MirrorApi(mock).timeline.attachments;
       var arg_itemId = "foo";
       var arg_attachmentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2244,6 +2303,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2252,7 +2312,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_itemId, arg_attachmentId)
+          .get(arg_itemId, arg_attachmentId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Attachment response) {
         checkAttachment(response);
       })));
@@ -2266,6 +2326,7 @@
       api.TimelineAttachmentsResourceApi res =
           new api.MirrorApi(mock).timeline.attachments;
       var arg_itemId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2308,6 +2369,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2316,7 +2378,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_itemId)
+          .insert(arg_itemId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Attachment response) {
         checkAttachment(response);
       })));
@@ -2327,6 +2389,7 @@
       api.TimelineAttachmentsResourceApi res =
           new api.MirrorApi(mock).timeline.attachments;
       var arg_itemId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2369,6 +2432,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2377,7 +2441,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_itemId)
+          .list(arg_itemId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AttachmentsListResponse response) {
         checkAttachmentsListResponse(response);
       })));
diff --git a/generated/googleapis/test/ml/v1_test.dart b/generated/googleapis/test/ml/v1_test.dart
index 1d432e0..bbe41ed 100644
--- a/generated/googleapis/test/ml/v1_test.dart
+++ b/generated/googleapis/test/ml/v1_test.dart
@@ -1602,6 +1602,7 @@
       var mock = new HttpServerMock();
       api.ProjectsResourceApi res = new api.MlApi(mock).projects;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1633,6 +1634,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1640,7 +1642,7 @@
         var resp = convert.JSON.encode(buildGoogleCloudMlV1GetConfigResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.getConfig(arg_name).then(unittest
+      res.getConfig(arg_name, $fields: arg_$fields).then(unittest
           .expectAsync1(((api.GoogleCloudMlV1GetConfigResponse response) {
         checkGoogleCloudMlV1GetConfigResponse(response);
       })));
@@ -1651,6 +1653,7 @@
       api.ProjectsResourceApi res = new api.MlApi(mock).projects;
       var arg_request = buildGoogleCloudMlV1PredictRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GoogleCloudMlV1PredictRequest.fromJson(json);
         checkGoogleCloudMlV1PredictRequest(obj);
@@ -1685,6 +1688,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1693,7 +1697,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .predict(arg_request, arg_name)
+          .predict(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleApiHttpBody response) {
         checkGoogleApiHttpBody(response);
       })));
@@ -1706,6 +1710,7 @@
       api.ProjectsJobsResourceApi res = new api.MlApi(mock).projects.jobs;
       var arg_request = buildGoogleCloudMlV1CancelJobRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GoogleCloudMlV1CancelJobRequest.fromJson(json);
         checkGoogleCloudMlV1CancelJobRequest(obj);
@@ -1740,6 +1745,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1748,7 +1754,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .cancel(arg_request, arg_name)
+          .cancel(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleProtobufEmpty response) {
         checkGoogleProtobufEmpty(response);
       })));
@@ -1759,6 +1765,7 @@
       api.ProjectsJobsResourceApi res = new api.MlApi(mock).projects.jobs;
       var arg_request = buildGoogleCloudMlV1Job();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GoogleCloudMlV1Job.fromJson(json);
         checkGoogleCloudMlV1Job(obj);
@@ -1793,6 +1800,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1801,7 +1809,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent)
+          .create(arg_request, arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleCloudMlV1Job response) {
         checkGoogleCloudMlV1Job(response);
       })));
@@ -1811,6 +1819,7 @@
       var mock = new HttpServerMock();
       api.ProjectsJobsResourceApi res = new api.MlApi(mock).projects.jobs;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1842,6 +1851,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1850,7 +1860,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name)
+          .get(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleCloudMlV1Job response) {
         checkGoogleCloudMlV1Job(response);
       })));
@@ -1860,6 +1870,7 @@
       var mock = new HttpServerMock();
       api.ProjectsJobsResourceApi res = new api.MlApi(mock).projects.jobs;
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1891,6 +1902,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1899,7 +1911,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_resource)
+          .getIamPolicy(arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleIamV1Policy response) {
         checkGoogleIamV1Policy(response);
       })));
@@ -1909,9 +1921,10 @@
       var mock = new HttpServerMock();
       api.ProjectsJobsResourceApi res = new api.MlApi(mock).projects.jobs;
       var arg_parent = "foo";
+      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
-      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1943,11 +1956,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1957,9 +1971,10 @@
       }), true);
       res
           .list(arg_parent,
+              filter: arg_filter,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              filter: arg_filter)
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.GoogleCloudMlV1ListJobsResponse response) {
         checkGoogleCloudMlV1ListJobsResponse(response);
@@ -1971,6 +1986,7 @@
       api.ProjectsJobsResourceApi res = new api.MlApi(mock).projects.jobs;
       var arg_request = buildGoogleIamV1SetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GoogleIamV1SetIamPolicyRequest.fromJson(json);
         checkGoogleIamV1SetIamPolicyRequest(obj);
@@ -2005,6 +2021,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2013,7 +2030,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleIamV1Policy response) {
         checkGoogleIamV1Policy(response);
       })));
@@ -2024,6 +2041,7 @@
       api.ProjectsJobsResourceApi res = new api.MlApi(mock).projects.jobs;
       var arg_request = buildGoogleIamV1TestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GoogleIamV1TestIamPermissionsRequest.fromJson(json);
         checkGoogleIamV1TestIamPermissionsRequest(obj);
@@ -2058,6 +2076,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2066,8 +2085,10 @@
             convert.JSON.encode(buildGoogleIamV1TestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(unittest
-          .expectAsync1(((api.GoogleIamV1TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.GoogleIamV1TestIamPermissionsResponse response) {
         checkGoogleIamV1TestIamPermissionsResponse(response);
       })));
     });
@@ -2079,6 +2100,7 @@
       api.ProjectsModelsResourceApi res = new api.MlApi(mock).projects.models;
       var arg_request = buildGoogleCloudMlV1Model();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GoogleCloudMlV1Model.fromJson(json);
         checkGoogleCloudMlV1Model(obj);
@@ -2113,6 +2135,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2121,7 +2144,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent)
+          .create(arg_request, arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleCloudMlV1Model response) {
         checkGoogleCloudMlV1Model(response);
       })));
@@ -2131,6 +2154,7 @@
       var mock = new HttpServerMock();
       api.ProjectsModelsResourceApi res = new api.MlApi(mock).projects.models;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2162,6 +2186,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2169,7 +2194,7 @@
         var resp = convert.JSON.encode(buildGoogleLongrunningOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(
+      res.delete(arg_name, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.GoogleLongrunningOperation response) {
         checkGoogleLongrunningOperation(response);
       })));
@@ -2179,6 +2204,7 @@
       var mock = new HttpServerMock();
       api.ProjectsModelsResourceApi res = new api.MlApi(mock).projects.models;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2210,6 +2236,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2218,7 +2245,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name)
+          .get(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleCloudMlV1Model response) {
         checkGoogleCloudMlV1Model(response);
       })));
@@ -2228,6 +2255,7 @@
       var mock = new HttpServerMock();
       api.ProjectsModelsResourceApi res = new api.MlApi(mock).projects.models;
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2259,6 +2287,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2267,7 +2296,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_resource)
+          .getIamPolicy(arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleIamV1Policy response) {
         checkGoogleIamV1Policy(response);
       })));
@@ -2277,8 +2306,9 @@
       var mock = new HttpServerMock();
       api.ProjectsModelsResourceApi res = new api.MlApi(mock).projects.models;
       var arg_parent = "foo";
-      var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2310,10 +2340,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2323,7 +2354,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.GoogleCloudMlV1ListModelsResponse response) {
         checkGoogleCloudMlV1ListModelsResponse(response);
@@ -2336,6 +2370,7 @@
       var arg_request = buildGoogleCloudMlV1Model();
       var arg_name = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GoogleCloudMlV1Model.fromJson(json);
         checkGoogleCloudMlV1Model(obj);
@@ -2372,6 +2407,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2379,8 +2415,11 @@
         var resp = convert.JSON.encode(buildGoogleLongrunningOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.patch(arg_request, arg_name, updateMask: arg_updateMask).then(
-          unittest.expectAsync1(((api.GoogleLongrunningOperation response) {
+      res
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.GoogleLongrunningOperation response) {
         checkGoogleLongrunningOperation(response);
       })));
     });
@@ -2390,6 +2429,7 @@
       api.ProjectsModelsResourceApi res = new api.MlApi(mock).projects.models;
       var arg_request = buildGoogleIamV1SetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GoogleIamV1SetIamPolicyRequest.fromJson(json);
         checkGoogleIamV1SetIamPolicyRequest(obj);
@@ -2424,6 +2464,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2432,7 +2473,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleIamV1Policy response) {
         checkGoogleIamV1Policy(response);
       })));
@@ -2443,6 +2484,7 @@
       api.ProjectsModelsResourceApi res = new api.MlApi(mock).projects.models;
       var arg_request = buildGoogleIamV1TestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GoogleIamV1TestIamPermissionsRequest.fromJson(json);
         checkGoogleIamV1TestIamPermissionsRequest(obj);
@@ -2477,6 +2519,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2485,8 +2528,10 @@
             convert.JSON.encode(buildGoogleIamV1TestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(unittest
-          .expectAsync1(((api.GoogleIamV1TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.GoogleIamV1TestIamPermissionsResponse response) {
         checkGoogleIamV1TestIamPermissionsResponse(response);
       })));
     });
@@ -2499,6 +2544,7 @@
           new api.MlApi(mock).projects.models.versions;
       var arg_request = buildGoogleCloudMlV1Version();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GoogleCloudMlV1Version.fromJson(json);
         checkGoogleCloudMlV1Version(obj);
@@ -2533,6 +2579,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2540,7 +2587,7 @@
         var resp = convert.JSON.encode(buildGoogleLongrunningOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.create(arg_request, arg_parent).then(
+      res.create(arg_request, arg_parent, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.GoogleLongrunningOperation response) {
         checkGoogleLongrunningOperation(response);
       })));
@@ -2551,6 +2598,7 @@
       api.ProjectsModelsVersionsResourceApi res =
           new api.MlApi(mock).projects.models.versions;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2582,6 +2630,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2589,7 +2638,7 @@
         var resp = convert.JSON.encode(buildGoogleLongrunningOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(
+      res.delete(arg_name, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.GoogleLongrunningOperation response) {
         checkGoogleLongrunningOperation(response);
       })));
@@ -2600,6 +2649,7 @@
       api.ProjectsModelsVersionsResourceApi res =
           new api.MlApi(mock).projects.models.versions;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2631,6 +2681,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2639,7 +2690,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name)
+          .get(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleCloudMlV1Version response) {
         checkGoogleCloudMlV1Version(response);
       })));
@@ -2652,6 +2703,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2687,6 +2739,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2696,7 +2749,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(
               ((api.GoogleCloudMlV1ListVersionsResponse response) {
         checkGoogleCloudMlV1ListVersionsResponse(response);
@@ -2710,6 +2766,7 @@
       var arg_request = buildGoogleCloudMlV1Version();
       var arg_name = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GoogleCloudMlV1Version.fromJson(json);
         checkGoogleCloudMlV1Version(obj);
@@ -2746,6 +2803,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2753,8 +2811,11 @@
         var resp = convert.JSON.encode(buildGoogleLongrunningOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.patch(arg_request, arg_name, updateMask: arg_updateMask).then(
-          unittest.expectAsync1(((api.GoogleLongrunningOperation response) {
+      res
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.GoogleLongrunningOperation response) {
         checkGoogleLongrunningOperation(response);
       })));
     });
@@ -2765,6 +2826,7 @@
           new api.MlApi(mock).projects.models.versions;
       var arg_request = buildGoogleCloudMlV1SetDefaultVersionRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.GoogleCloudMlV1SetDefaultVersionRequest.fromJson(json);
@@ -2800,6 +2862,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2808,7 +2871,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setDefault(arg_request, arg_name)
+          .setDefault(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleCloudMlV1Version response) {
         checkGoogleCloudMlV1Version(response);
       })));
@@ -2821,6 +2884,7 @@
       api.ProjectsOperationsResourceApi res =
           new api.MlApi(mock).projects.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2852,6 +2916,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2860,7 +2925,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .cancel(arg_name)
+          .cancel(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleProtobufEmpty response) {
         checkGoogleProtobufEmpty(response);
       })));
@@ -2871,6 +2936,7 @@
       api.ProjectsOperationsResourceApi res =
           new api.MlApi(mock).projects.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2902,6 +2968,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2910,7 +2977,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_name)
+          .delete(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleProtobufEmpty response) {
         checkGoogleProtobufEmpty(response);
       })));
@@ -2921,6 +2988,7 @@
       api.ProjectsOperationsResourceApi res =
           new api.MlApi(mock).projects.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2952,6 +3020,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2959,7 +3028,7 @@
         var resp = convert.JSON.encode(buildGoogleLongrunningOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(
+      res.get(arg_name, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.GoogleLongrunningOperation response) {
         checkGoogleLongrunningOperation(response);
       })));
@@ -2970,9 +3039,10 @@
       api.ProjectsOperationsResourceApi res =
           new api.MlApi(mock).projects.operations;
       var arg_name = "foo";
+      var arg_pageSize = 42;
       var arg_filter = "foo";
       var arg_pageToken = "foo";
-      var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3004,11 +3074,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
-        unittest.expect(core.int.parse(queryMap["pageSize"].first),
-            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3019,9 +3090,10 @@
       }), true);
       res
           .list(arg_name,
+              pageSize: arg_pageSize,
               filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(
               ((api.GoogleLongrunningListOperationsResponse response) {
         checkGoogleLongrunningListOperationsResponse(response);
diff --git a/generated/googleapis/test/monitoring/v3_test.dart b/generated/googleapis/test/monitoring/v3_test.dart
new file mode 100644
index 0000000..baa0d2b
--- /dev/null
+++ b/generated/googleapis/test/monitoring/v3_test.dart
@@ -0,0 +1,3124 @@
+library googleapis.monitoring.v3.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/monitoring/v3.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterBasicAuthentication = 0;
+buildBasicAuthentication() {
+  var o = new api.BasicAuthentication();
+  buildCounterBasicAuthentication++;
+  if (buildCounterBasicAuthentication < 3) {
+    o.password = "foo";
+    o.username = "foo";
+  }
+  buildCounterBasicAuthentication--;
+  return o;
+}
+
+checkBasicAuthentication(api.BasicAuthentication o) {
+  buildCounterBasicAuthentication++;
+  if (buildCounterBasicAuthentication < 3) {
+    unittest.expect(o.password, unittest.equals('foo'));
+    unittest.expect(o.username, unittest.equals('foo'));
+  }
+  buildCounterBasicAuthentication--;
+}
+
+core.int buildCounterBucketOptions = 0;
+buildBucketOptions() {
+  var o = new api.BucketOptions();
+  buildCounterBucketOptions++;
+  if (buildCounterBucketOptions < 3) {
+    o.explicitBuckets = buildExplicit();
+    o.exponentialBuckets = buildExponential();
+    o.linearBuckets = buildLinear();
+  }
+  buildCounterBucketOptions--;
+  return o;
+}
+
+checkBucketOptions(api.BucketOptions o) {
+  buildCounterBucketOptions++;
+  if (buildCounterBucketOptions < 3) {
+    checkExplicit(o.explicitBuckets);
+    checkExponential(o.exponentialBuckets);
+    checkLinear(o.linearBuckets);
+  }
+  buildCounterBucketOptions--;
+}
+
+buildUnnamed1567() {
+  var o = new core.Map<core.String, api.TypedValue>();
+  o["x"] = buildTypedValue();
+  o["y"] = buildTypedValue();
+  return o;
+}
+
+checkUnnamed1567(core.Map<core.String, api.TypedValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTypedValue(o["x"]);
+  checkTypedValue(o["y"]);
+}
+
+buildUnnamed1568() {
+  var o = new core.List<api.CollectdValue>();
+  o.add(buildCollectdValue());
+  o.add(buildCollectdValue());
+  return o;
+}
+
+checkUnnamed1568(core.List<api.CollectdValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCollectdValue(o[0]);
+  checkCollectdValue(o[1]);
+}
+
+core.int buildCounterCollectdPayload = 0;
+buildCollectdPayload() {
+  var o = new api.CollectdPayload();
+  buildCounterCollectdPayload++;
+  if (buildCounterCollectdPayload < 3) {
+    o.endTime = "foo";
+    o.metadata = buildUnnamed1567();
+    o.plugin = "foo";
+    o.pluginInstance = "foo";
+    o.startTime = "foo";
+    o.type = "foo";
+    o.typeInstance = "foo";
+    o.values = buildUnnamed1568();
+  }
+  buildCounterCollectdPayload--;
+  return o;
+}
+
+checkCollectdPayload(api.CollectdPayload o) {
+  buildCounterCollectdPayload++;
+  if (buildCounterCollectdPayload < 3) {
+    unittest.expect(o.endTime, unittest.equals('foo'));
+    checkUnnamed1567(o.metadata);
+    unittest.expect(o.plugin, unittest.equals('foo'));
+    unittest.expect(o.pluginInstance, unittest.equals('foo'));
+    unittest.expect(o.startTime, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.typeInstance, unittest.equals('foo'));
+    checkUnnamed1568(o.values);
+  }
+  buildCounterCollectdPayload--;
+}
+
+buildUnnamed1569() {
+  var o = new core.List<api.CollectdValueError>();
+  o.add(buildCollectdValueError());
+  o.add(buildCollectdValueError());
+  return o;
+}
+
+checkUnnamed1569(core.List<api.CollectdValueError> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCollectdValueError(o[0]);
+  checkCollectdValueError(o[1]);
+}
+
+core.int buildCounterCollectdPayloadError = 0;
+buildCollectdPayloadError() {
+  var o = new api.CollectdPayloadError();
+  buildCounterCollectdPayloadError++;
+  if (buildCounterCollectdPayloadError < 3) {
+    o.error = buildStatus();
+    o.index = 42;
+    o.valueErrors = buildUnnamed1569();
+  }
+  buildCounterCollectdPayloadError--;
+  return o;
+}
+
+checkCollectdPayloadError(api.CollectdPayloadError o) {
+  buildCounterCollectdPayloadError++;
+  if (buildCounterCollectdPayloadError < 3) {
+    checkStatus(o.error);
+    unittest.expect(o.index, unittest.equals(42));
+    checkUnnamed1569(o.valueErrors);
+  }
+  buildCounterCollectdPayloadError--;
+}
+
+core.int buildCounterCollectdValue = 0;
+buildCollectdValue() {
+  var o = new api.CollectdValue();
+  buildCounterCollectdValue++;
+  if (buildCounterCollectdValue < 3) {
+    o.dataSourceName = "foo";
+    o.dataSourceType = "foo";
+    o.value = buildTypedValue();
+  }
+  buildCounterCollectdValue--;
+  return o;
+}
+
+checkCollectdValue(api.CollectdValue o) {
+  buildCounterCollectdValue++;
+  if (buildCounterCollectdValue < 3) {
+    unittest.expect(o.dataSourceName, unittest.equals('foo'));
+    unittest.expect(o.dataSourceType, unittest.equals('foo'));
+    checkTypedValue(o.value);
+  }
+  buildCounterCollectdValue--;
+}
+
+core.int buildCounterCollectdValueError = 0;
+buildCollectdValueError() {
+  var o = new api.CollectdValueError();
+  buildCounterCollectdValueError++;
+  if (buildCounterCollectdValueError < 3) {
+    o.error = buildStatus();
+    o.index = 42;
+  }
+  buildCounterCollectdValueError--;
+  return o;
+}
+
+checkCollectdValueError(api.CollectdValueError o) {
+  buildCounterCollectdValueError++;
+  if (buildCounterCollectdValueError < 3) {
+    checkStatus(o.error);
+    unittest.expect(o.index, unittest.equals(42));
+  }
+  buildCounterCollectdValueError--;
+}
+
+core.int buildCounterContentMatcher = 0;
+buildContentMatcher() {
+  var o = new api.ContentMatcher();
+  buildCounterContentMatcher++;
+  if (buildCounterContentMatcher < 3) {
+    o.content = "foo";
+  }
+  buildCounterContentMatcher--;
+  return o;
+}
+
+checkContentMatcher(api.ContentMatcher o) {
+  buildCounterContentMatcher++;
+  if (buildCounterContentMatcher < 3) {
+    unittest.expect(o.content, unittest.equals('foo'));
+  }
+  buildCounterContentMatcher--;
+}
+
+buildUnnamed1570() {
+  var o = new core.List<api.CollectdPayload>();
+  o.add(buildCollectdPayload());
+  o.add(buildCollectdPayload());
+  return o;
+}
+
+checkUnnamed1570(core.List<api.CollectdPayload> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCollectdPayload(o[0]);
+  checkCollectdPayload(o[1]);
+}
+
+core.int buildCounterCreateCollectdTimeSeriesRequest = 0;
+buildCreateCollectdTimeSeriesRequest() {
+  var o = new api.CreateCollectdTimeSeriesRequest();
+  buildCounterCreateCollectdTimeSeriesRequest++;
+  if (buildCounterCreateCollectdTimeSeriesRequest < 3) {
+    o.collectdPayloads = buildUnnamed1570();
+    o.collectdVersion = "foo";
+    o.resource = buildMonitoredResource();
+  }
+  buildCounterCreateCollectdTimeSeriesRequest--;
+  return o;
+}
+
+checkCreateCollectdTimeSeriesRequest(api.CreateCollectdTimeSeriesRequest o) {
+  buildCounterCreateCollectdTimeSeriesRequest++;
+  if (buildCounterCreateCollectdTimeSeriesRequest < 3) {
+    checkUnnamed1570(o.collectdPayloads);
+    unittest.expect(o.collectdVersion, unittest.equals('foo'));
+    checkMonitoredResource(o.resource);
+  }
+  buildCounterCreateCollectdTimeSeriesRequest--;
+}
+
+buildUnnamed1571() {
+  var o = new core.List<api.CollectdPayloadError>();
+  o.add(buildCollectdPayloadError());
+  o.add(buildCollectdPayloadError());
+  return o;
+}
+
+checkUnnamed1571(core.List<api.CollectdPayloadError> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCollectdPayloadError(o[0]);
+  checkCollectdPayloadError(o[1]);
+}
+
+core.int buildCounterCreateCollectdTimeSeriesResponse = 0;
+buildCreateCollectdTimeSeriesResponse() {
+  var o = new api.CreateCollectdTimeSeriesResponse();
+  buildCounterCreateCollectdTimeSeriesResponse++;
+  if (buildCounterCreateCollectdTimeSeriesResponse < 3) {
+    o.payloadErrors = buildUnnamed1571();
+  }
+  buildCounterCreateCollectdTimeSeriesResponse--;
+  return o;
+}
+
+checkCreateCollectdTimeSeriesResponse(api.CreateCollectdTimeSeriesResponse o) {
+  buildCounterCreateCollectdTimeSeriesResponse++;
+  if (buildCounterCreateCollectdTimeSeriesResponse < 3) {
+    checkUnnamed1571(o.payloadErrors);
+  }
+  buildCounterCreateCollectdTimeSeriesResponse--;
+}
+
+buildUnnamed1572() {
+  var o = new core.List<api.TimeSeries>();
+  o.add(buildTimeSeries());
+  o.add(buildTimeSeries());
+  return o;
+}
+
+checkUnnamed1572(core.List<api.TimeSeries> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTimeSeries(o[0]);
+  checkTimeSeries(o[1]);
+}
+
+core.int buildCounterCreateTimeSeriesRequest = 0;
+buildCreateTimeSeriesRequest() {
+  var o = new api.CreateTimeSeriesRequest();
+  buildCounterCreateTimeSeriesRequest++;
+  if (buildCounterCreateTimeSeriesRequest < 3) {
+    o.timeSeries = buildUnnamed1572();
+  }
+  buildCounterCreateTimeSeriesRequest--;
+  return o;
+}
+
+checkCreateTimeSeriesRequest(api.CreateTimeSeriesRequest o) {
+  buildCounterCreateTimeSeriesRequest++;
+  if (buildCounterCreateTimeSeriesRequest < 3) {
+    checkUnnamed1572(o.timeSeries);
+  }
+  buildCounterCreateTimeSeriesRequest--;
+}
+
+buildUnnamed1573() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1573(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterDistribution = 0;
+buildDistribution() {
+  var o = new api.Distribution();
+  buildCounterDistribution++;
+  if (buildCounterDistribution < 3) {
+    o.bucketCounts = buildUnnamed1573();
+    o.bucketOptions = buildBucketOptions();
+    o.count = "foo";
+    o.mean = 42.0;
+    o.range = buildRange();
+    o.sumOfSquaredDeviation = 42.0;
+  }
+  buildCounterDistribution--;
+  return o;
+}
+
+checkDistribution(api.Distribution o) {
+  buildCounterDistribution++;
+  if (buildCounterDistribution < 3) {
+    checkUnnamed1573(o.bucketCounts);
+    checkBucketOptions(o.bucketOptions);
+    unittest.expect(o.count, unittest.equals('foo'));
+    unittest.expect(o.mean, unittest.equals(42.0));
+    checkRange(o.range);
+    unittest.expect(o.sumOfSquaredDeviation, unittest.equals(42.0));
+  }
+  buildCounterDistribution--;
+}
+
+core.int buildCounterEmpty = 0;
+buildEmpty() {
+  var o = new api.Empty();
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+  return o;
+}
+
+checkEmpty(api.Empty o) {
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+}
+
+buildUnnamed1574() {
+  var o = new core.List<core.double>();
+  o.add(42.0);
+  o.add(42.0);
+  return o;
+}
+
+checkUnnamed1574(core.List<core.double> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42.0));
+  unittest.expect(o[1], unittest.equals(42.0));
+}
+
+core.int buildCounterExplicit = 0;
+buildExplicit() {
+  var o = new api.Explicit();
+  buildCounterExplicit++;
+  if (buildCounterExplicit < 3) {
+    o.bounds = buildUnnamed1574();
+  }
+  buildCounterExplicit--;
+  return o;
+}
+
+checkExplicit(api.Explicit o) {
+  buildCounterExplicit++;
+  if (buildCounterExplicit < 3) {
+    checkUnnamed1574(o.bounds);
+  }
+  buildCounterExplicit--;
+}
+
+core.int buildCounterExponential = 0;
+buildExponential() {
+  var o = new api.Exponential();
+  buildCounterExponential++;
+  if (buildCounterExponential < 3) {
+    o.growthFactor = 42.0;
+    o.numFiniteBuckets = 42;
+    o.scale = 42.0;
+  }
+  buildCounterExponential--;
+  return o;
+}
+
+checkExponential(api.Exponential o) {
+  buildCounterExponential++;
+  if (buildCounterExponential < 3) {
+    unittest.expect(o.growthFactor, unittest.equals(42.0));
+    unittest.expect(o.numFiniteBuckets, unittest.equals(42));
+    unittest.expect(o.scale, unittest.equals(42.0));
+  }
+  buildCounterExponential--;
+}
+
+buildUnnamed1575() {
+  var o = new core.List<api.Option>();
+  o.add(buildOption());
+  o.add(buildOption());
+  return o;
+}
+
+checkUnnamed1575(core.List<api.Option> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOption(o[0]);
+  checkOption(o[1]);
+}
+
+core.int buildCounterField = 0;
+buildField() {
+  var o = new api.Field();
+  buildCounterField++;
+  if (buildCounterField < 3) {
+    o.cardinality = "foo";
+    o.defaultValue = "foo";
+    o.jsonName = "foo";
+    o.kind = "foo";
+    o.name = "foo";
+    o.number = 42;
+    o.oneofIndex = 42;
+    o.options = buildUnnamed1575();
+    o.packed = true;
+    o.typeUrl = "foo";
+  }
+  buildCounterField--;
+  return o;
+}
+
+checkField(api.Field o) {
+  buildCounterField++;
+  if (buildCounterField < 3) {
+    unittest.expect(o.cardinality, unittest.equals('foo'));
+    unittest.expect(o.defaultValue, unittest.equals('foo'));
+    unittest.expect(o.jsonName, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.number, unittest.equals(42));
+    unittest.expect(o.oneofIndex, unittest.equals(42));
+    checkUnnamed1575(o.options);
+    unittest.expect(o.packed, unittest.isTrue);
+    unittest.expect(o.typeUrl, unittest.equals('foo'));
+  }
+  buildCounterField--;
+}
+
+core.int buildCounterGroup = 0;
+buildGroup() {
+  var o = new api.Group();
+  buildCounterGroup++;
+  if (buildCounterGroup < 3) {
+    o.displayName = "foo";
+    o.filter = "foo";
+    o.isCluster = true;
+    o.name = "foo";
+    o.parentName = "foo";
+  }
+  buildCounterGroup--;
+  return o;
+}
+
+checkGroup(api.Group o) {
+  buildCounterGroup++;
+  if (buildCounterGroup < 3) {
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.filter, unittest.equals('foo'));
+    unittest.expect(o.isCluster, unittest.isTrue);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.parentName, unittest.equals('foo'));
+  }
+  buildCounterGroup--;
+}
+
+buildUnnamed1576() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed1576(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterHttpCheck = 0;
+buildHttpCheck() {
+  var o = new api.HttpCheck();
+  buildCounterHttpCheck++;
+  if (buildCounterHttpCheck < 3) {
+    o.authInfo = buildBasicAuthentication();
+    o.headers = buildUnnamed1576();
+    o.maskHeaders = true;
+    o.path = "foo";
+    o.port = 42;
+    o.useSsl = true;
+  }
+  buildCounterHttpCheck--;
+  return o;
+}
+
+checkHttpCheck(api.HttpCheck o) {
+  buildCounterHttpCheck++;
+  if (buildCounterHttpCheck < 3) {
+    checkBasicAuthentication(o.authInfo);
+    checkUnnamed1576(o.headers);
+    unittest.expect(o.maskHeaders, unittest.isTrue);
+    unittest.expect(o.path, unittest.equals('foo'));
+    unittest.expect(o.port, unittest.equals(42));
+    unittest.expect(o.useSsl, unittest.isTrue);
+  }
+  buildCounterHttpCheck--;
+}
+
+core.int buildCounterLabelDescriptor = 0;
+buildLabelDescriptor() {
+  var o = new api.LabelDescriptor();
+  buildCounterLabelDescriptor++;
+  if (buildCounterLabelDescriptor < 3) {
+    o.description = "foo";
+    o.key = "foo";
+    o.valueType = "foo";
+  }
+  buildCounterLabelDescriptor--;
+  return o;
+}
+
+checkLabelDescriptor(api.LabelDescriptor o) {
+  buildCounterLabelDescriptor++;
+  if (buildCounterLabelDescriptor < 3) {
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.key, unittest.equals('foo'));
+    unittest.expect(o.valueType, unittest.equals('foo'));
+  }
+  buildCounterLabelDescriptor--;
+}
+
+core.int buildCounterLinear = 0;
+buildLinear() {
+  var o = new api.Linear();
+  buildCounterLinear++;
+  if (buildCounterLinear < 3) {
+    o.numFiniteBuckets = 42;
+    o.offset = 42.0;
+    o.width = 42.0;
+  }
+  buildCounterLinear--;
+  return o;
+}
+
+checkLinear(api.Linear o) {
+  buildCounterLinear++;
+  if (buildCounterLinear < 3) {
+    unittest.expect(o.numFiniteBuckets, unittest.equals(42));
+    unittest.expect(o.offset, unittest.equals(42.0));
+    unittest.expect(o.width, unittest.equals(42.0));
+  }
+  buildCounterLinear--;
+}
+
+buildUnnamed1577() {
+  var o = new core.List<api.MonitoredResource>();
+  o.add(buildMonitoredResource());
+  o.add(buildMonitoredResource());
+  return o;
+}
+
+checkUnnamed1577(core.List<api.MonitoredResource> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMonitoredResource(o[0]);
+  checkMonitoredResource(o[1]);
+}
+
+core.int buildCounterListGroupMembersResponse = 0;
+buildListGroupMembersResponse() {
+  var o = new api.ListGroupMembersResponse();
+  buildCounterListGroupMembersResponse++;
+  if (buildCounterListGroupMembersResponse < 3) {
+    o.members = buildUnnamed1577();
+    o.nextPageToken = "foo";
+    o.totalSize = 42;
+  }
+  buildCounterListGroupMembersResponse--;
+  return o;
+}
+
+checkListGroupMembersResponse(api.ListGroupMembersResponse o) {
+  buildCounterListGroupMembersResponse++;
+  if (buildCounterListGroupMembersResponse < 3) {
+    checkUnnamed1577(o.members);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.totalSize, unittest.equals(42));
+  }
+  buildCounterListGroupMembersResponse--;
+}
+
+buildUnnamed1578() {
+  var o = new core.List<api.Group>();
+  o.add(buildGroup());
+  o.add(buildGroup());
+  return o;
+}
+
+checkUnnamed1578(core.List<api.Group> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGroup(o[0]);
+  checkGroup(o[1]);
+}
+
+core.int buildCounterListGroupsResponse = 0;
+buildListGroupsResponse() {
+  var o = new api.ListGroupsResponse();
+  buildCounterListGroupsResponse++;
+  if (buildCounterListGroupsResponse < 3) {
+    o.group = buildUnnamed1578();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListGroupsResponse--;
+  return o;
+}
+
+checkListGroupsResponse(api.ListGroupsResponse o) {
+  buildCounterListGroupsResponse++;
+  if (buildCounterListGroupsResponse < 3) {
+    checkUnnamed1578(o.group);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListGroupsResponse--;
+}
+
+buildUnnamed1579() {
+  var o = new core.List<api.MetricDescriptor>();
+  o.add(buildMetricDescriptor());
+  o.add(buildMetricDescriptor());
+  return o;
+}
+
+checkUnnamed1579(core.List<api.MetricDescriptor> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetricDescriptor(o[0]);
+  checkMetricDescriptor(o[1]);
+}
+
+core.int buildCounterListMetricDescriptorsResponse = 0;
+buildListMetricDescriptorsResponse() {
+  var o = new api.ListMetricDescriptorsResponse();
+  buildCounterListMetricDescriptorsResponse++;
+  if (buildCounterListMetricDescriptorsResponse < 3) {
+    o.metricDescriptors = buildUnnamed1579();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListMetricDescriptorsResponse--;
+  return o;
+}
+
+checkListMetricDescriptorsResponse(api.ListMetricDescriptorsResponse o) {
+  buildCounterListMetricDescriptorsResponse++;
+  if (buildCounterListMetricDescriptorsResponse < 3) {
+    checkUnnamed1579(o.metricDescriptors);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListMetricDescriptorsResponse--;
+}
+
+buildUnnamed1580() {
+  var o = new core.List<api.MonitoredResourceDescriptor>();
+  o.add(buildMonitoredResourceDescriptor());
+  o.add(buildMonitoredResourceDescriptor());
+  return o;
+}
+
+checkUnnamed1580(core.List<api.MonitoredResourceDescriptor> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMonitoredResourceDescriptor(o[0]);
+  checkMonitoredResourceDescriptor(o[1]);
+}
+
+core.int buildCounterListMonitoredResourceDescriptorsResponse = 0;
+buildListMonitoredResourceDescriptorsResponse() {
+  var o = new api.ListMonitoredResourceDescriptorsResponse();
+  buildCounterListMonitoredResourceDescriptorsResponse++;
+  if (buildCounterListMonitoredResourceDescriptorsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.resourceDescriptors = buildUnnamed1580();
+  }
+  buildCounterListMonitoredResourceDescriptorsResponse--;
+  return o;
+}
+
+checkListMonitoredResourceDescriptorsResponse(
+    api.ListMonitoredResourceDescriptorsResponse o) {
+  buildCounterListMonitoredResourceDescriptorsResponse++;
+  if (buildCounterListMonitoredResourceDescriptorsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1580(o.resourceDescriptors);
+  }
+  buildCounterListMonitoredResourceDescriptorsResponse--;
+}
+
+buildUnnamed1581() {
+  var o = new core.List<api.TimeSeries>();
+  o.add(buildTimeSeries());
+  o.add(buildTimeSeries());
+  return o;
+}
+
+checkUnnamed1581(core.List<api.TimeSeries> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTimeSeries(o[0]);
+  checkTimeSeries(o[1]);
+}
+
+core.int buildCounterListTimeSeriesResponse = 0;
+buildListTimeSeriesResponse() {
+  var o = new api.ListTimeSeriesResponse();
+  buildCounterListTimeSeriesResponse++;
+  if (buildCounterListTimeSeriesResponse < 3) {
+    o.nextPageToken = "foo";
+    o.timeSeries = buildUnnamed1581();
+  }
+  buildCounterListTimeSeriesResponse--;
+  return o;
+}
+
+checkListTimeSeriesResponse(api.ListTimeSeriesResponse o) {
+  buildCounterListTimeSeriesResponse++;
+  if (buildCounterListTimeSeriesResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1581(o.timeSeries);
+  }
+  buildCounterListTimeSeriesResponse--;
+}
+
+buildUnnamed1582() {
+  var o = new core.List<api.UptimeCheckConfig>();
+  o.add(buildUptimeCheckConfig());
+  o.add(buildUptimeCheckConfig());
+  return o;
+}
+
+checkUnnamed1582(core.List<api.UptimeCheckConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUptimeCheckConfig(o[0]);
+  checkUptimeCheckConfig(o[1]);
+}
+
+core.int buildCounterListUptimeCheckConfigsResponse = 0;
+buildListUptimeCheckConfigsResponse() {
+  var o = new api.ListUptimeCheckConfigsResponse();
+  buildCounterListUptimeCheckConfigsResponse++;
+  if (buildCounterListUptimeCheckConfigsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.uptimeCheckConfigs = buildUnnamed1582();
+  }
+  buildCounterListUptimeCheckConfigsResponse--;
+  return o;
+}
+
+checkListUptimeCheckConfigsResponse(api.ListUptimeCheckConfigsResponse o) {
+  buildCounterListUptimeCheckConfigsResponse++;
+  if (buildCounterListUptimeCheckConfigsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1582(o.uptimeCheckConfigs);
+  }
+  buildCounterListUptimeCheckConfigsResponse--;
+}
+
+buildUnnamed1583() {
+  var o = new core.List<api.UptimeCheckIp>();
+  o.add(buildUptimeCheckIp());
+  o.add(buildUptimeCheckIp());
+  return o;
+}
+
+checkUnnamed1583(core.List<api.UptimeCheckIp> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUptimeCheckIp(o[0]);
+  checkUptimeCheckIp(o[1]);
+}
+
+core.int buildCounterListUptimeCheckIpsResponse = 0;
+buildListUptimeCheckIpsResponse() {
+  var o = new api.ListUptimeCheckIpsResponse();
+  buildCounterListUptimeCheckIpsResponse++;
+  if (buildCounterListUptimeCheckIpsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.uptimeCheckIps = buildUnnamed1583();
+  }
+  buildCounterListUptimeCheckIpsResponse--;
+  return o;
+}
+
+checkListUptimeCheckIpsResponse(api.ListUptimeCheckIpsResponse o) {
+  buildCounterListUptimeCheckIpsResponse++;
+  if (buildCounterListUptimeCheckIpsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1583(o.uptimeCheckIps);
+  }
+  buildCounterListUptimeCheckIpsResponse--;
+}
+
+buildUnnamed1584() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed1584(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterMetric = 0;
+buildMetric() {
+  var o = new api.Metric();
+  buildCounterMetric++;
+  if (buildCounterMetric < 3) {
+    o.labels = buildUnnamed1584();
+    o.type = "foo";
+  }
+  buildCounterMetric--;
+  return o;
+}
+
+checkMetric(api.Metric o) {
+  buildCounterMetric++;
+  if (buildCounterMetric < 3) {
+    checkUnnamed1584(o.labels);
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterMetric--;
+}
+
+buildUnnamed1585() {
+  var o = new core.List<api.LabelDescriptor>();
+  o.add(buildLabelDescriptor());
+  o.add(buildLabelDescriptor());
+  return o;
+}
+
+checkUnnamed1585(core.List<api.LabelDescriptor> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLabelDescriptor(o[0]);
+  checkLabelDescriptor(o[1]);
+}
+
+core.int buildCounterMetricDescriptor = 0;
+buildMetricDescriptor() {
+  var o = new api.MetricDescriptor();
+  buildCounterMetricDescriptor++;
+  if (buildCounterMetricDescriptor < 3) {
+    o.description = "foo";
+    o.displayName = "foo";
+    o.labels = buildUnnamed1585();
+    o.metricKind = "foo";
+    o.name = "foo";
+    o.type = "foo";
+    o.unit = "foo";
+    o.valueType = "foo";
+  }
+  buildCounterMetricDescriptor--;
+  return o;
+}
+
+checkMetricDescriptor(api.MetricDescriptor o) {
+  buildCounterMetricDescriptor++;
+  if (buildCounterMetricDescriptor < 3) {
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    checkUnnamed1585(o.labels);
+    unittest.expect(o.metricKind, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.unit, unittest.equals('foo'));
+    unittest.expect(o.valueType, unittest.equals('foo'));
+  }
+  buildCounterMetricDescriptor--;
+}
+
+buildUnnamed1586() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed1586(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterMonitoredResource = 0;
+buildMonitoredResource() {
+  var o = new api.MonitoredResource();
+  buildCounterMonitoredResource++;
+  if (buildCounterMonitoredResource < 3) {
+    o.labels = buildUnnamed1586();
+    o.type = "foo";
+  }
+  buildCounterMonitoredResource--;
+  return o;
+}
+
+checkMonitoredResource(api.MonitoredResource o) {
+  buildCounterMonitoredResource++;
+  if (buildCounterMonitoredResource < 3) {
+    checkUnnamed1586(o.labels);
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterMonitoredResource--;
+}
+
+buildUnnamed1587() {
+  var o = new core.List<api.LabelDescriptor>();
+  o.add(buildLabelDescriptor());
+  o.add(buildLabelDescriptor());
+  return o;
+}
+
+checkUnnamed1587(core.List<api.LabelDescriptor> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLabelDescriptor(o[0]);
+  checkLabelDescriptor(o[1]);
+}
+
+core.int buildCounterMonitoredResourceDescriptor = 0;
+buildMonitoredResourceDescriptor() {
+  var o = new api.MonitoredResourceDescriptor();
+  buildCounterMonitoredResourceDescriptor++;
+  if (buildCounterMonitoredResourceDescriptor < 3) {
+    o.description = "foo";
+    o.displayName = "foo";
+    o.labels = buildUnnamed1587();
+    o.name = "foo";
+    o.type = "foo";
+  }
+  buildCounterMonitoredResourceDescriptor--;
+  return o;
+}
+
+checkMonitoredResourceDescriptor(api.MonitoredResourceDescriptor o) {
+  buildCounterMonitoredResourceDescriptor++;
+  if (buildCounterMonitoredResourceDescriptor < 3) {
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    checkUnnamed1587(o.labels);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterMonitoredResourceDescriptor--;
+}
+
+buildUnnamed1588() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed1588(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o["x"]) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(casted1["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted1["bool"], unittest.equals(true));
+  unittest.expect(casted1["string"], unittest.equals('foo'));
+  var casted2 = (o["y"]) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(casted2["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted2["bool"], unittest.equals(true));
+  unittest.expect(casted2["string"], unittest.equals('foo'));
+}
+
+core.int buildCounterOption = 0;
+buildOption() {
+  var o = new api.Option();
+  buildCounterOption++;
+  if (buildCounterOption < 3) {
+    o.name = "foo";
+    o.value = buildUnnamed1588();
+  }
+  buildCounterOption--;
+  return o;
+}
+
+checkOption(api.Option o) {
+  buildCounterOption++;
+  if (buildCounterOption < 3) {
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed1588(o.value);
+  }
+  buildCounterOption--;
+}
+
+core.int buildCounterPoint = 0;
+buildPoint() {
+  var o = new api.Point();
+  buildCounterPoint++;
+  if (buildCounterPoint < 3) {
+    o.interval = buildTimeInterval();
+    o.value = buildTypedValue();
+  }
+  buildCounterPoint--;
+  return o;
+}
+
+checkPoint(api.Point o) {
+  buildCounterPoint++;
+  if (buildCounterPoint < 3) {
+    checkTimeInterval(o.interval);
+    checkTypedValue(o.value);
+  }
+  buildCounterPoint--;
+}
+
+core.int buildCounterRange = 0;
+buildRange() {
+  var o = new api.Range();
+  buildCounterRange++;
+  if (buildCounterRange < 3) {
+    o.max = 42.0;
+    o.min = 42.0;
+  }
+  buildCounterRange--;
+  return o;
+}
+
+checkRange(api.Range o) {
+  buildCounterRange++;
+  if (buildCounterRange < 3) {
+    unittest.expect(o.max, unittest.equals(42.0));
+    unittest.expect(o.min, unittest.equals(42.0));
+  }
+  buildCounterRange--;
+}
+
+core.int buildCounterResourceGroup = 0;
+buildResourceGroup() {
+  var o = new api.ResourceGroup();
+  buildCounterResourceGroup++;
+  if (buildCounterResourceGroup < 3) {
+    o.groupId = "foo";
+    o.resourceType = "foo";
+  }
+  buildCounterResourceGroup--;
+  return o;
+}
+
+checkResourceGroup(api.ResourceGroup o) {
+  buildCounterResourceGroup++;
+  if (buildCounterResourceGroup < 3) {
+    unittest.expect(o.groupId, unittest.equals('foo'));
+    unittest.expect(o.resourceType, unittest.equals('foo'));
+  }
+  buildCounterResourceGroup--;
+}
+
+core.int buildCounterSourceContext = 0;
+buildSourceContext() {
+  var o = new api.SourceContext();
+  buildCounterSourceContext++;
+  if (buildCounterSourceContext < 3) {
+    o.fileName = "foo";
+  }
+  buildCounterSourceContext--;
+  return o;
+}
+
+checkSourceContext(api.SourceContext o) {
+  buildCounterSourceContext++;
+  if (buildCounterSourceContext < 3) {
+    unittest.expect(o.fileName, unittest.equals('foo'));
+  }
+  buildCounterSourceContext--;
+}
+
+buildUnnamed1589() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed1589(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted3 = (o["x"]) as core.Map;
+  unittest.expect(casted3, unittest.hasLength(3));
+  unittest.expect(casted3["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted3["bool"], unittest.equals(true));
+  unittest.expect(casted3["string"], unittest.equals('foo'));
+  var casted4 = (o["y"]) as core.Map;
+  unittest.expect(casted4, unittest.hasLength(3));
+  unittest.expect(casted4["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted4["bool"], unittest.equals(true));
+  unittest.expect(casted4["string"], unittest.equals('foo'));
+}
+
+buildUnnamed1590() {
+  var o = new core.List<core.Map<core.String, core.Object>>();
+  o.add(buildUnnamed1589());
+  o.add(buildUnnamed1589());
+  return o;
+}
+
+checkUnnamed1590(core.List<core.Map<core.String, core.Object>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed1589(o[0]);
+  checkUnnamed1589(o[1]);
+}
+
+core.int buildCounterStatus = 0;
+buildStatus() {
+  var o = new api.Status();
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    o.code = 42;
+    o.details = buildUnnamed1590();
+    o.message = "foo";
+  }
+  buildCounterStatus--;
+  return o;
+}
+
+checkStatus(api.Status o) {
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    unittest.expect(o.code, unittest.equals(42));
+    checkUnnamed1590(o.details);
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterStatus--;
+}
+
+core.int buildCounterTcpCheck = 0;
+buildTcpCheck() {
+  var o = new api.TcpCheck();
+  buildCounterTcpCheck++;
+  if (buildCounterTcpCheck < 3) {
+    o.port = 42;
+  }
+  buildCounterTcpCheck--;
+  return o;
+}
+
+checkTcpCheck(api.TcpCheck o) {
+  buildCounterTcpCheck++;
+  if (buildCounterTcpCheck < 3) {
+    unittest.expect(o.port, unittest.equals(42));
+  }
+  buildCounterTcpCheck--;
+}
+
+core.int buildCounterTimeInterval = 0;
+buildTimeInterval() {
+  var o = new api.TimeInterval();
+  buildCounterTimeInterval++;
+  if (buildCounterTimeInterval < 3) {
+    o.endTime = "foo";
+    o.startTime = "foo";
+  }
+  buildCounterTimeInterval--;
+  return o;
+}
+
+checkTimeInterval(api.TimeInterval o) {
+  buildCounterTimeInterval++;
+  if (buildCounterTimeInterval < 3) {
+    unittest.expect(o.endTime, unittest.equals('foo'));
+    unittest.expect(o.startTime, unittest.equals('foo'));
+  }
+  buildCounterTimeInterval--;
+}
+
+buildUnnamed1591() {
+  var o = new core.List<api.Point>();
+  o.add(buildPoint());
+  o.add(buildPoint());
+  return o;
+}
+
+checkUnnamed1591(core.List<api.Point> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPoint(o[0]);
+  checkPoint(o[1]);
+}
+
+core.int buildCounterTimeSeries = 0;
+buildTimeSeries() {
+  var o = new api.TimeSeries();
+  buildCounterTimeSeries++;
+  if (buildCounterTimeSeries < 3) {
+    o.metric = buildMetric();
+    o.metricKind = "foo";
+    o.points = buildUnnamed1591();
+    o.resource = buildMonitoredResource();
+    o.valueType = "foo";
+  }
+  buildCounterTimeSeries--;
+  return o;
+}
+
+checkTimeSeries(api.TimeSeries o) {
+  buildCounterTimeSeries++;
+  if (buildCounterTimeSeries < 3) {
+    checkMetric(o.metric);
+    unittest.expect(o.metricKind, unittest.equals('foo'));
+    checkUnnamed1591(o.points);
+    checkMonitoredResource(o.resource);
+    unittest.expect(o.valueType, unittest.equals('foo'));
+  }
+  buildCounterTimeSeries--;
+}
+
+buildUnnamed1592() {
+  var o = new core.List<api.Field>();
+  o.add(buildField());
+  o.add(buildField());
+  return o;
+}
+
+checkUnnamed1592(core.List<api.Field> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkField(o[0]);
+  checkField(o[1]);
+}
+
+buildUnnamed1593() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1593(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1594() {
+  var o = new core.List<api.Option>();
+  o.add(buildOption());
+  o.add(buildOption());
+  return o;
+}
+
+checkUnnamed1594(core.List<api.Option> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOption(o[0]);
+  checkOption(o[1]);
+}
+
+core.int buildCounterType = 0;
+buildType() {
+  var o = new api.Type();
+  buildCounterType++;
+  if (buildCounterType < 3) {
+    o.fields = buildUnnamed1592();
+    o.name = "foo";
+    o.oneofs = buildUnnamed1593();
+    o.options = buildUnnamed1594();
+    o.sourceContext = buildSourceContext();
+    o.syntax = "foo";
+  }
+  buildCounterType--;
+  return o;
+}
+
+checkType(api.Type o) {
+  buildCounterType++;
+  if (buildCounterType < 3) {
+    checkUnnamed1592(o.fields);
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed1593(o.oneofs);
+    checkUnnamed1594(o.options);
+    checkSourceContext(o.sourceContext);
+    unittest.expect(o.syntax, unittest.equals('foo'));
+  }
+  buildCounterType--;
+}
+
+core.int buildCounterTypedValue = 0;
+buildTypedValue() {
+  var o = new api.TypedValue();
+  buildCounterTypedValue++;
+  if (buildCounterTypedValue < 3) {
+    o.boolValue = true;
+    o.distributionValue = buildDistribution();
+    o.doubleValue = 42.0;
+    o.int64Value = "foo";
+    o.stringValue = "foo";
+  }
+  buildCounterTypedValue--;
+  return o;
+}
+
+checkTypedValue(api.TypedValue o) {
+  buildCounterTypedValue++;
+  if (buildCounterTypedValue < 3) {
+    unittest.expect(o.boolValue, unittest.isTrue);
+    checkDistribution(o.distributionValue);
+    unittest.expect(o.doubleValue, unittest.equals(42.0));
+    unittest.expect(o.int64Value, unittest.equals('foo'));
+    unittest.expect(o.stringValue, unittest.equals('foo'));
+  }
+  buildCounterTypedValue--;
+}
+
+buildUnnamed1595() {
+  var o = new core.List<api.ContentMatcher>();
+  o.add(buildContentMatcher());
+  o.add(buildContentMatcher());
+  return o;
+}
+
+checkUnnamed1595(core.List<api.ContentMatcher> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContentMatcher(o[0]);
+  checkContentMatcher(o[1]);
+}
+
+buildUnnamed1596() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1596(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterUptimeCheckConfig = 0;
+buildUptimeCheckConfig() {
+  var o = new api.UptimeCheckConfig();
+  buildCounterUptimeCheckConfig++;
+  if (buildCounterUptimeCheckConfig < 3) {
+    o.contentMatchers = buildUnnamed1595();
+    o.displayName = "foo";
+    o.httpCheck = buildHttpCheck();
+    o.monitoredResource = buildMonitoredResource();
+    o.name = "foo";
+    o.period = "foo";
+    o.resourceGroup = buildResourceGroup();
+    o.selectedRegions = buildUnnamed1596();
+    o.tcpCheck = buildTcpCheck();
+    o.timeout = "foo";
+  }
+  buildCounterUptimeCheckConfig--;
+  return o;
+}
+
+checkUptimeCheckConfig(api.UptimeCheckConfig o) {
+  buildCounterUptimeCheckConfig++;
+  if (buildCounterUptimeCheckConfig < 3) {
+    checkUnnamed1595(o.contentMatchers);
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    checkHttpCheck(o.httpCheck);
+    checkMonitoredResource(o.monitoredResource);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.period, unittest.equals('foo'));
+    checkResourceGroup(o.resourceGroup);
+    checkUnnamed1596(o.selectedRegions);
+    checkTcpCheck(o.tcpCheck);
+    unittest.expect(o.timeout, unittest.equals('foo'));
+  }
+  buildCounterUptimeCheckConfig--;
+}
+
+core.int buildCounterUptimeCheckIp = 0;
+buildUptimeCheckIp() {
+  var o = new api.UptimeCheckIp();
+  buildCounterUptimeCheckIp++;
+  if (buildCounterUptimeCheckIp < 3) {
+    o.ipAddress = "foo";
+    o.location = "foo";
+    o.region = "foo";
+  }
+  buildCounterUptimeCheckIp--;
+  return o;
+}
+
+checkUptimeCheckIp(api.UptimeCheckIp o) {
+  buildCounterUptimeCheckIp++;
+  if (buildCounterUptimeCheckIp < 3) {
+    unittest.expect(o.ipAddress, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    unittest.expect(o.region, unittest.equals('foo'));
+  }
+  buildCounterUptimeCheckIp--;
+}
+
+buildUnnamed1597() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1597(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-BasicAuthentication", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBasicAuthentication();
+      var od = new api.BasicAuthentication.fromJson(o.toJson());
+      checkBasicAuthentication(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketOptions", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketOptions();
+      var od = new api.BucketOptions.fromJson(o.toJson());
+      checkBucketOptions(od);
+    });
+  });
+
+  unittest.group("obj-schema-CollectdPayload", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCollectdPayload();
+      var od = new api.CollectdPayload.fromJson(o.toJson());
+      checkCollectdPayload(od);
+    });
+  });
+
+  unittest.group("obj-schema-CollectdPayloadError", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCollectdPayloadError();
+      var od = new api.CollectdPayloadError.fromJson(o.toJson());
+      checkCollectdPayloadError(od);
+    });
+  });
+
+  unittest.group("obj-schema-CollectdValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCollectdValue();
+      var od = new api.CollectdValue.fromJson(o.toJson());
+      checkCollectdValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-CollectdValueError", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCollectdValueError();
+      var od = new api.CollectdValueError.fromJson(o.toJson());
+      checkCollectdValueError(od);
+    });
+  });
+
+  unittest.group("obj-schema-ContentMatcher", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContentMatcher();
+      var od = new api.ContentMatcher.fromJson(o.toJson());
+      checkContentMatcher(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateCollectdTimeSeriesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateCollectdTimeSeriesRequest();
+      var od = new api.CreateCollectdTimeSeriesRequest.fromJson(o.toJson());
+      checkCreateCollectdTimeSeriesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateCollectdTimeSeriesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateCollectdTimeSeriesResponse();
+      var od = new api.CreateCollectdTimeSeriesResponse.fromJson(o.toJson());
+      checkCreateCollectdTimeSeriesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateTimeSeriesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateTimeSeriesRequest();
+      var od = new api.CreateTimeSeriesRequest.fromJson(o.toJson());
+      checkCreateTimeSeriesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Distribution", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDistribution();
+      var od = new api.Distribution.fromJson(o.toJson());
+      checkDistribution(od);
+    });
+  });
+
+  unittest.group("obj-schema-Empty", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEmpty();
+      var od = new api.Empty.fromJson(o.toJson());
+      checkEmpty(od);
+    });
+  });
+
+  unittest.group("obj-schema-Explicit", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildExplicit();
+      var od = new api.Explicit.fromJson(o.toJson());
+      checkExplicit(od);
+    });
+  });
+
+  unittest.group("obj-schema-Exponential", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildExponential();
+      var od = new api.Exponential.fromJson(o.toJson());
+      checkExponential(od);
+    });
+  });
+
+  unittest.group("obj-schema-Field", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildField();
+      var od = new api.Field.fromJson(o.toJson());
+      checkField(od);
+    });
+  });
+
+  unittest.group("obj-schema-Group", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGroup();
+      var od = new api.Group.fromJson(o.toJson());
+      checkGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-HttpCheck", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildHttpCheck();
+      var od = new api.HttpCheck.fromJson(o.toJson());
+      checkHttpCheck(od);
+    });
+  });
+
+  unittest.group("obj-schema-LabelDescriptor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLabelDescriptor();
+      var od = new api.LabelDescriptor.fromJson(o.toJson());
+      checkLabelDescriptor(od);
+    });
+  });
+
+  unittest.group("obj-schema-Linear", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLinear();
+      var od = new api.Linear.fromJson(o.toJson());
+      checkLinear(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListGroupMembersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListGroupMembersResponse();
+      var od = new api.ListGroupMembersResponse.fromJson(o.toJson());
+      checkListGroupMembersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListGroupsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListGroupsResponse();
+      var od = new api.ListGroupsResponse.fromJson(o.toJson());
+      checkListGroupsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListMetricDescriptorsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListMetricDescriptorsResponse();
+      var od = new api.ListMetricDescriptorsResponse.fromJson(o.toJson());
+      checkListMetricDescriptorsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListMonitoredResourceDescriptorsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListMonitoredResourceDescriptorsResponse();
+      var od =
+          new api.ListMonitoredResourceDescriptorsResponse.fromJson(o.toJson());
+      checkListMonitoredResourceDescriptorsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListTimeSeriesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListTimeSeriesResponse();
+      var od = new api.ListTimeSeriesResponse.fromJson(o.toJson());
+      checkListTimeSeriesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListUptimeCheckConfigsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListUptimeCheckConfigsResponse();
+      var od = new api.ListUptimeCheckConfigsResponse.fromJson(o.toJson());
+      checkListUptimeCheckConfigsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListUptimeCheckIpsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListUptimeCheckIpsResponse();
+      var od = new api.ListUptimeCheckIpsResponse.fromJson(o.toJson());
+      checkListUptimeCheckIpsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Metric", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMetric();
+      var od = new api.Metric.fromJson(o.toJson());
+      checkMetric(od);
+    });
+  });
+
+  unittest.group("obj-schema-MetricDescriptor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMetricDescriptor();
+      var od = new api.MetricDescriptor.fromJson(o.toJson());
+      checkMetricDescriptor(od);
+    });
+  });
+
+  unittest.group("obj-schema-MonitoredResource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMonitoredResource();
+      var od = new api.MonitoredResource.fromJson(o.toJson());
+      checkMonitoredResource(od);
+    });
+  });
+
+  unittest.group("obj-schema-MonitoredResourceDescriptor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMonitoredResourceDescriptor();
+      var od = new api.MonitoredResourceDescriptor.fromJson(o.toJson());
+      checkMonitoredResourceDescriptor(od);
+    });
+  });
+
+  unittest.group("obj-schema-Option", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOption();
+      var od = new api.Option.fromJson(o.toJson());
+      checkOption(od);
+    });
+  });
+
+  unittest.group("obj-schema-Point", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPoint();
+      var od = new api.Point.fromJson(o.toJson());
+      checkPoint(od);
+    });
+  });
+
+  unittest.group("obj-schema-Range", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRange();
+      var od = new api.Range.fromJson(o.toJson());
+      checkRange(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResourceGroup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResourceGroup();
+      var od = new api.ResourceGroup.fromJson(o.toJson());
+      checkResourceGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-SourceContext", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSourceContext();
+      var od = new api.SourceContext.fromJson(o.toJson());
+      checkSourceContext(od);
+    });
+  });
+
+  unittest.group("obj-schema-Status", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStatus();
+      var od = new api.Status.fromJson(o.toJson());
+      checkStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-TcpCheck", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTcpCheck();
+      var od = new api.TcpCheck.fromJson(o.toJson());
+      checkTcpCheck(od);
+    });
+  });
+
+  unittest.group("obj-schema-TimeInterval", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTimeInterval();
+      var od = new api.TimeInterval.fromJson(o.toJson());
+      checkTimeInterval(od);
+    });
+  });
+
+  unittest.group("obj-schema-TimeSeries", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTimeSeries();
+      var od = new api.TimeSeries.fromJson(o.toJson());
+      checkTimeSeries(od);
+    });
+  });
+
+  unittest.group("obj-schema-Type", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildType();
+      var od = new api.Type.fromJson(o.toJson());
+      checkType(od);
+    });
+  });
+
+  unittest.group("obj-schema-TypedValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTypedValue();
+      var od = new api.TypedValue.fromJson(o.toJson());
+      checkTypedValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-UptimeCheckConfig", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUptimeCheckConfig();
+      var od = new api.UptimeCheckConfig.fromJson(o.toJson());
+      checkUptimeCheckConfig(od);
+    });
+  });
+
+  unittest.group("obj-schema-UptimeCheckIp", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUptimeCheckIp();
+      var od = new api.UptimeCheckIp.fromJson(o.toJson());
+      checkUptimeCheckIp(od);
+    });
+  });
+
+  unittest.group("resource-ProjectsCollectdTimeSeriesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsCollectdTimeSeriesResourceApi res =
+          new api.MonitoringApi(mock).projects.collectdTimeSeries;
+      var arg_request = buildCreateCollectdTimeSeriesRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreateCollectdTimeSeriesRequest.fromJson(json);
+        checkCreateCollectdTimeSeriesRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreateCollectdTimeSeriesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.create(arg_request, arg_name, $fields: arg_$fields).then(unittest
+          .expectAsync1(((api.CreateCollectdTimeSeriesResponse response) {
+        checkCreateCollectdTimeSeriesResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsGroupsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsGroupsResourceApi res =
+          new api.MonitoringApi(mock).projects.groups;
+      var arg_request = buildGroup();
+      var arg_name = "foo";
+      var arg_validateOnly = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Group.fromJson(json);
+        checkGroup(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["validateOnly"].first,
+            unittest.equals("$arg_validateOnly"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_name,
+              validateOnly: arg_validateOnly, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Group response) {
+        checkGroup(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsGroupsResourceApi res =
+          new api.MonitoringApi(mock).projects.groups;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsGroupsResourceApi res =
+          new api.MonitoringApi(mock).projects.groups;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Group response) {
+        checkGroup(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsGroupsResourceApi res =
+          new api.MonitoringApi(mock).projects.groups;
+      var arg_name = "foo";
+      var arg_childrenOfGroup = "foo";
+      var arg_descendantsOfGroup = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_ancestorsOfGroup = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["childrenOfGroup"].first,
+            unittest.equals(arg_childrenOfGroup));
+        unittest.expect(queryMap["descendantsOfGroup"].first,
+            unittest.equals(arg_descendantsOfGroup));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["ancestorsOfGroup"].first,
+            unittest.equals(arg_ancestorsOfGroup));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListGroupsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_name,
+              childrenOfGroup: arg_childrenOfGroup,
+              descendantsOfGroup: arg_descendantsOfGroup,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              ancestorsOfGroup: arg_ancestorsOfGroup,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListGroupsResponse response) {
+        checkListGroupsResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.ProjectsGroupsResourceApi res =
+          new api.MonitoringApi(mock).projects.groups;
+      var arg_request = buildGroup();
+      var arg_name = "foo";
+      var arg_validateOnly = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Group.fromJson(json);
+        checkGroup(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["validateOnly"].first,
+            unittest.equals("$arg_validateOnly"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_name,
+              validateOnly: arg_validateOnly, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Group response) {
+        checkGroup(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsGroupsMembersResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsGroupsMembersResourceApi res =
+          new api.MonitoringApi(mock).projects.groups.members;
+      var arg_name = "foo";
+      var arg_interval_endTime = "foo";
+      var arg_filter = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_interval_startTime = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["interval.endTime"].first,
+            unittest.equals(arg_interval_endTime));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["interval.startTime"].first,
+            unittest.equals(arg_interval_startTime));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListGroupMembersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_name,
+              interval_endTime: arg_interval_endTime,
+              filter: arg_filter,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              interval_startTime: arg_interval_startTime,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListGroupMembersResponse response) {
+        checkListGroupMembersResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsMetricDescriptorsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsMetricDescriptorsResourceApi res =
+          new api.MonitoringApi(mock).projects.metricDescriptors;
+      var arg_request = buildMetricDescriptor();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.MetricDescriptor.fromJson(json);
+        checkMetricDescriptor(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMetricDescriptor());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.MetricDescriptor response) {
+        checkMetricDescriptor(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsMetricDescriptorsResourceApi res =
+          new api.MonitoringApi(mock).projects.metricDescriptors;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsMetricDescriptorsResourceApi res =
+          new api.MonitoringApi(mock).projects.metricDescriptors;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMetricDescriptor());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.MetricDescriptor response) {
+        checkMetricDescriptor(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsMetricDescriptorsResourceApi res =
+          new api.MonitoringApi(mock).projects.metricDescriptors;
+      var arg_name = "foo";
+      var arg_filter = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListMetricDescriptorsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_name,
+              filter: arg_filter,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListMetricDescriptorsResponse response) {
+        checkListMetricDescriptorsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsMonitoredResourceDescriptorsResourceApi",
+      () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsMonitoredResourceDescriptorsResourceApi res =
+          new api.MonitoringApi(mock).projects.monitoredResourceDescriptors;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMonitoredResourceDescriptor());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.get(arg_name, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.MonitoredResourceDescriptor response) {
+        checkMonitoredResourceDescriptor(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsMonitoredResourceDescriptorsResourceApi res =
+          new api.MonitoringApi(mock).projects.monitoredResourceDescriptors;
+      var arg_name = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_filter = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON
+            .encode(buildListMonitoredResourceDescriptorsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_name,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              filter: arg_filter,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.ListMonitoredResourceDescriptorsResponse response) {
+        checkListMonitoredResourceDescriptorsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsTimeSeriesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsTimeSeriesResourceApi res =
+          new api.MonitoringApi(mock).projects.timeSeries;
+      var arg_request = buildCreateTimeSeriesRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreateTimeSeriesRequest.fromJson(json);
+        checkCreateTimeSeriesRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsTimeSeriesResourceApi res =
+          new api.MonitoringApi(mock).projects.timeSeries;
+      var arg_name = "foo";
+      var arg_orderBy = "foo";
+      var arg_aggregation_crossSeriesReducer = "foo";
+      var arg_filter = "foo";
+      var arg_pageToken = "foo";
+      var arg_aggregation_perSeriesAligner = "foo";
+      var arg_interval_startTime = "foo";
+      var arg_view = "foo";
+      var arg_aggregation_groupByFields = buildUnnamed1597();
+      var arg_interval_endTime = "foo";
+      var arg_aggregation_alignmentPeriod = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(queryMap["aggregation.crossSeriesReducer"].first,
+            unittest.equals(arg_aggregation_crossSeriesReducer));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["aggregation.perSeriesAligner"].first,
+            unittest.equals(arg_aggregation_perSeriesAligner));
+        unittest.expect(queryMap["interval.startTime"].first,
+            unittest.equals(arg_interval_startTime));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["aggregation.groupByFields"],
+            unittest.equals(arg_aggregation_groupByFields));
+        unittest.expect(queryMap["interval.endTime"].first,
+            unittest.equals(arg_interval_endTime));
+        unittest.expect(queryMap["aggregation.alignmentPeriod"].first,
+            unittest.equals(arg_aggregation_alignmentPeriod));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListTimeSeriesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_name,
+              orderBy: arg_orderBy,
+              aggregation_crossSeriesReducer:
+                  arg_aggregation_crossSeriesReducer,
+              filter: arg_filter,
+              pageToken: arg_pageToken,
+              aggregation_perSeriesAligner: arg_aggregation_perSeriesAligner,
+              interval_startTime: arg_interval_startTime,
+              view: arg_view,
+              aggregation_groupByFields: arg_aggregation_groupByFields,
+              interval_endTime: arg_interval_endTime,
+              aggregation_alignmentPeriod: arg_aggregation_alignmentPeriod,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListTimeSeriesResponse response) {
+        checkListTimeSeriesResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsUptimeCheckConfigsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsUptimeCheckConfigsResourceApi res =
+          new api.MonitoringApi(mock).projects.uptimeCheckConfigs;
+      var arg_request = buildUptimeCheckConfig();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UptimeCheckConfig.fromJson(json);
+        checkUptimeCheckConfig(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUptimeCheckConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UptimeCheckConfig response) {
+        checkUptimeCheckConfig(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsUptimeCheckConfigsResourceApi res =
+          new api.MonitoringApi(mock).projects.uptimeCheckConfigs;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsUptimeCheckConfigsResourceApi res =
+          new api.MonitoringApi(mock).projects.uptimeCheckConfigs;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUptimeCheckConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UptimeCheckConfig response) {
+        checkUptimeCheckConfig(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsUptimeCheckConfigsResourceApi res =
+          new api.MonitoringApi(mock).projects.uptimeCheckConfigs;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListUptimeCheckConfigsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListUptimeCheckConfigsResponse response) {
+        checkListUptimeCheckConfigsResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ProjectsUptimeCheckConfigsResourceApi res =
+          new api.MonitoringApi(mock).projects.uptimeCheckConfigs;
+      var arg_request = buildUptimeCheckConfig();
+      var arg_name = "foo";
+      var arg_updateMask = "foo";
+      var arg_name1 = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UptimeCheckConfig.fromJson(json);
+        checkUptimeCheckConfig(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v3/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["name1"].first, unittest.equals(arg_name1));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUptimeCheckConfig());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask,
+              name1: arg_name1,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UptimeCheckConfig response) {
+        checkUptimeCheckConfig(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UptimeCheckIpsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UptimeCheckIpsResourceApi res =
+          new api.MonitoringApi(mock).uptimeCheckIps;
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("v3/uptimeCheckIps"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListUptimeCheckIpsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.ListUptimeCheckIpsResponse response) {
+        checkListUptimeCheckIpsResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/oauth2/v2_test.dart b/generated/googleapis/test/oauth2/v2_test.dart
index 34d88d1..935c32c 100644
--- a/generated/googleapis/test/oauth2/v2_test.dart
+++ b/generated/googleapis/test/oauth2/v2_test.dart
@@ -79,14 +79,14 @@
   buildCounterJwkKeys--;
 }
 
-buildUnnamed2629() {
+buildUnnamed2644() {
   var o = new core.List<api.JwkKeys>();
   o.add(buildJwkKeys());
   o.add(buildJwkKeys());
   return o;
 }
 
-checkUnnamed2629(core.List<api.JwkKeys> o) {
+checkUnnamed2644(core.List<api.JwkKeys> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJwkKeys(o[0]);
   checkJwkKeys(o[1]);
@@ -97,7 +97,7 @@
   var o = new api.Jwk();
   buildCounterJwk++;
   if (buildCounterJwk < 3) {
-    o.keys = buildUnnamed2629();
+    o.keys = buildUnnamed2644();
   }
   buildCounterJwk--;
   return o;
@@ -106,7 +106,7 @@
 checkJwk(api.Jwk o) {
   buildCounterJwk++;
   if (buildCounterJwk < 3) {
-    checkUnnamed2629(o.keys);
+    checkUnnamed2644(o.keys);
   }
   buildCounterJwk--;
 }
@@ -222,6 +222,7 @@
     unittest.test("method--getCertForOpenIdConnect", () {
       var mock = new HttpServerMock();
       api.Oauth2Api res = new api.Oauth2Api(mock);
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -252,6 +253,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -260,7 +262,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getCertForOpenIdConnect()
+          .getCertForOpenIdConnect($fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Jwk response) {
         checkJwk(response);
       })));
@@ -272,6 +274,7 @@
       var arg_accessToken = "foo";
       var arg_idToken = "foo";
       var arg_tokenHandle = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -308,6 +311,7 @@
             queryMap["id_token"].first, unittest.equals(arg_idToken));
         unittest.expect(
             queryMap["token_handle"].first, unittest.equals(arg_tokenHandle));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -319,7 +323,8 @@
           .tokeninfo(
               accessToken: arg_accessToken,
               idToken: arg_idToken,
-              tokenHandle: arg_tokenHandle)
+              tokenHandle: arg_tokenHandle,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Tokeninfo response) {
         checkTokeninfo(response);
       })));
@@ -330,6 +335,7 @@
     unittest.test("method--get", () {
       var mock = new HttpServerMock();
       api.UserinfoResourceApi res = new api.Oauth2Api(mock).userinfo;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -360,6 +366,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -367,7 +374,9 @@
         var resp = convert.JSON.encode(buildUserinfoplus());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get().then(unittest.expectAsync1(((api.Userinfoplus response) {
+      res
+          .get($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Userinfoplus response) {
         checkUserinfoplus(response);
       })));
     });
@@ -377,6 +386,7 @@
     unittest.test("method--get", () {
       var mock = new HttpServerMock();
       api.UserinfoV2MeResourceApi res = new api.Oauth2Api(mock).userinfo.v2.me;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -407,6 +417,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -414,7 +425,9 @@
         var resp = convert.JSON.encode(buildUserinfoplus());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get().then(unittest.expectAsync1(((api.Userinfoplus response) {
+      res
+          .get($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Userinfoplus response) {
         checkUserinfoplus(response);
       })));
     });
diff --git a/generated/googleapis/test/pagespeedonline/v1_test.dart b/generated/googleapis/test/pagespeedonline/v1_test.dart
new file mode 100644
index 0000000..adb1f5b
--- /dev/null
+++ b/generated/googleapis/test/pagespeedonline/v1_test.dart
@@ -0,0 +1,773 @@
+library googleapis.pagespeedonline.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/pagespeedonline/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs =
+    0;
+buildResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs() {
+  var o = new api.ResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs();
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs <
+      3) {
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs--;
+  return o;
+}
+
+checkResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs(
+    api.ResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs o) {
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs <
+      3) {
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs--;
+}
+
+buildUnnamed2645() {
+  var o = new core
+      .List<api.ResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs>();
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs());
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs());
+  return o;
+}
+
+checkUnnamed2645(
+    core.List<api.ResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs>
+        o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs(o[0]);
+  checkResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs(o[1]);
+}
+
+core.int buildCounterResultFormattedResultsRuleResultsValueUrlBlocksHeader = 0;
+buildResultFormattedResultsRuleResultsValueUrlBlocksHeader() {
+  var o = new api.ResultFormattedResultsRuleResultsValueUrlBlocksHeader();
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksHeader++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksHeader < 3) {
+    o.args = buildUnnamed2645();
+    o.format = "foo";
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksHeader--;
+  return o;
+}
+
+checkResultFormattedResultsRuleResultsValueUrlBlocksHeader(
+    api.ResultFormattedResultsRuleResultsValueUrlBlocksHeader o) {
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksHeader++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksHeader < 3) {
+    checkUnnamed2645(o.args);
+    unittest.expect(o.format, unittest.equals('foo'));
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksHeader--;
+}
+
+core.int
+    buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs =
+    0;
+buildResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs() {
+  var o =
+      new api.ResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs();
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs <
+      3) {
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs--;
+  return o;
+}
+
+checkResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs(
+    api.ResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs o) {
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs <
+      3) {
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs--;
+}
+
+buildUnnamed2646() {
+  var o = new core.List<
+      api.ResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs>();
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs());
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs());
+  return o;
+}
+
+checkUnnamed2646(
+    core.List<
+            api.ResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs>
+        o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs(o[0]);
+  checkResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs(o[1]);
+}
+
+core.int
+    buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails = 0;
+buildResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails() {
+  var o = new api.ResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails();
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails <
+      3) {
+    o.args = buildUnnamed2646();
+    o.format = "foo";
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails--;
+  return o;
+}
+
+checkResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails(
+    api.ResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails o) {
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails <
+      3) {
+    checkUnnamed2646(o.args);
+    unittest.expect(o.format, unittest.equals('foo'));
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails--;
+}
+
+buildUnnamed2647() {
+  var o = new core
+      .List<api.ResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails>();
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails());
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails());
+  return o;
+}
+
+checkUnnamed2647(
+    core.List<api.ResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails>
+        o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails(o[0]);
+  checkResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails(o[1]);
+}
+
+core.int
+    buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs =
+    0;
+buildResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs() {
+  var o =
+      new api.ResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs();
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs <
+      3) {
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs--;
+  return o;
+}
+
+checkResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs(
+    api.ResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs o) {
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs <
+      3) {
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs--;
+}
+
+buildUnnamed2648() {
+  var o = new core.List<
+      api.ResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs>();
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs());
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs());
+  return o;
+}
+
+checkUnnamed2648(
+    core.List<api.ResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs>
+        o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs(o[0]);
+  checkResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs(o[1]);
+}
+
+core.int buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult =
+    0;
+buildResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult() {
+  var o = new api.ResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult();
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult <
+      3) {
+    o.args = buildUnnamed2648();
+    o.format = "foo";
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult--;
+  return o;
+}
+
+checkResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult(
+    api.ResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult o) {
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult <
+      3) {
+    checkUnnamed2648(o.args);
+    unittest.expect(o.format, unittest.equals('foo'));
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult--;
+}
+
+core.int buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrls = 0;
+buildResultFormattedResultsRuleResultsValueUrlBlocksUrls() {
+  var o = new api.ResultFormattedResultsRuleResultsValueUrlBlocksUrls();
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrls++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrls < 3) {
+    o.details = buildUnnamed2647();
+    o.result = buildResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult();
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrls--;
+  return o;
+}
+
+checkResultFormattedResultsRuleResultsValueUrlBlocksUrls(
+    api.ResultFormattedResultsRuleResultsValueUrlBlocksUrls o) {
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrls++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrls < 3) {
+    checkUnnamed2647(o.details);
+    checkResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult(o.result);
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrls--;
+}
+
+buildUnnamed2649() {
+  var o =
+      new core.List<api.ResultFormattedResultsRuleResultsValueUrlBlocksUrls>();
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocksUrls());
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocksUrls());
+  return o;
+}
+
+checkUnnamed2649(
+    core.List<api.ResultFormattedResultsRuleResultsValueUrlBlocksUrls> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkResultFormattedResultsRuleResultsValueUrlBlocksUrls(o[0]);
+  checkResultFormattedResultsRuleResultsValueUrlBlocksUrls(o[1]);
+}
+
+core.int buildCounterResultFormattedResultsRuleResultsValueUrlBlocks = 0;
+buildResultFormattedResultsRuleResultsValueUrlBlocks() {
+  var o = new api.ResultFormattedResultsRuleResultsValueUrlBlocks();
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocks++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocks < 3) {
+    o.header = buildResultFormattedResultsRuleResultsValueUrlBlocksHeader();
+    o.urls = buildUnnamed2649();
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocks--;
+  return o;
+}
+
+checkResultFormattedResultsRuleResultsValueUrlBlocks(
+    api.ResultFormattedResultsRuleResultsValueUrlBlocks o) {
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocks++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocks < 3) {
+    checkResultFormattedResultsRuleResultsValueUrlBlocksHeader(o.header);
+    checkUnnamed2649(o.urls);
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocks--;
+}
+
+buildUnnamed2650() {
+  var o = new core.List<api.ResultFormattedResultsRuleResultsValueUrlBlocks>();
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocks());
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocks());
+  return o;
+}
+
+checkUnnamed2650(
+    core.List<api.ResultFormattedResultsRuleResultsValueUrlBlocks> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkResultFormattedResultsRuleResultsValueUrlBlocks(o[0]);
+  checkResultFormattedResultsRuleResultsValueUrlBlocks(o[1]);
+}
+
+core.int buildCounterResultFormattedResultsRuleResultsValue = 0;
+buildResultFormattedResultsRuleResultsValue() {
+  var o = new api.ResultFormattedResultsRuleResultsValue();
+  buildCounterResultFormattedResultsRuleResultsValue++;
+  if (buildCounterResultFormattedResultsRuleResultsValue < 3) {
+    o.localizedRuleName = "foo";
+    o.ruleImpact = 42.0;
+    o.urlBlocks = buildUnnamed2650();
+  }
+  buildCounterResultFormattedResultsRuleResultsValue--;
+  return o;
+}
+
+checkResultFormattedResultsRuleResultsValue(
+    api.ResultFormattedResultsRuleResultsValue o) {
+  buildCounterResultFormattedResultsRuleResultsValue++;
+  if (buildCounterResultFormattedResultsRuleResultsValue < 3) {
+    unittest.expect(o.localizedRuleName, unittest.equals('foo'));
+    unittest.expect(o.ruleImpact, unittest.equals(42.0));
+    checkUnnamed2650(o.urlBlocks);
+  }
+  buildCounterResultFormattedResultsRuleResultsValue--;
+}
+
+buildUnnamed2651() {
+  var o =
+      new core.Map<core.String, api.ResultFormattedResultsRuleResultsValue>();
+  o["x"] = buildResultFormattedResultsRuleResultsValue();
+  o["y"] = buildResultFormattedResultsRuleResultsValue();
+  return o;
+}
+
+checkUnnamed2651(
+    core.Map<core.String, api.ResultFormattedResultsRuleResultsValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkResultFormattedResultsRuleResultsValue(o["x"]);
+  checkResultFormattedResultsRuleResultsValue(o["y"]);
+}
+
+core.int buildCounterResultFormattedResults = 0;
+buildResultFormattedResults() {
+  var o = new api.ResultFormattedResults();
+  buildCounterResultFormattedResults++;
+  if (buildCounterResultFormattedResults < 3) {
+    o.locale = "foo";
+    o.ruleResults = buildUnnamed2651();
+  }
+  buildCounterResultFormattedResults--;
+  return o;
+}
+
+checkResultFormattedResults(api.ResultFormattedResults o) {
+  buildCounterResultFormattedResults++;
+  if (buildCounterResultFormattedResults < 3) {
+    unittest.expect(o.locale, unittest.equals('foo'));
+    checkUnnamed2651(o.ruleResults);
+  }
+  buildCounterResultFormattedResults--;
+}
+
+buildUnnamed2652() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2652(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterResultPageStats = 0;
+buildResultPageStats() {
+  var o = new api.ResultPageStats();
+  buildCounterResultPageStats++;
+  if (buildCounterResultPageStats < 3) {
+    o.cssResponseBytes = "foo";
+    o.flashResponseBytes = "foo";
+    o.htmlResponseBytes = "foo";
+    o.imageResponseBytes = "foo";
+    o.javascriptResponseBytes = "foo";
+    o.numberCssResources = 42;
+    o.numberHosts = 42;
+    o.numberJsResources = 42;
+    o.numberResources = 42;
+    o.numberStaticResources = 42;
+    o.otherResponseBytes = "foo";
+    o.textResponseBytes = "foo";
+    o.totalRequestBytes = "foo";
+  }
+  buildCounterResultPageStats--;
+  return o;
+}
+
+checkResultPageStats(api.ResultPageStats o) {
+  buildCounterResultPageStats++;
+  if (buildCounterResultPageStats < 3) {
+    unittest.expect(o.cssResponseBytes, unittest.equals('foo'));
+    unittest.expect(o.flashResponseBytes, unittest.equals('foo'));
+    unittest.expect(o.htmlResponseBytes, unittest.equals('foo'));
+    unittest.expect(o.imageResponseBytes, unittest.equals('foo'));
+    unittest.expect(o.javascriptResponseBytes, unittest.equals('foo'));
+    unittest.expect(o.numberCssResources, unittest.equals(42));
+    unittest.expect(o.numberHosts, unittest.equals(42));
+    unittest.expect(o.numberJsResources, unittest.equals(42));
+    unittest.expect(o.numberResources, unittest.equals(42));
+    unittest.expect(o.numberStaticResources, unittest.equals(42));
+    unittest.expect(o.otherResponseBytes, unittest.equals('foo'));
+    unittest.expect(o.textResponseBytes, unittest.equals('foo'));
+    unittest.expect(o.totalRequestBytes, unittest.equals('foo'));
+  }
+  buildCounterResultPageStats--;
+}
+
+core.int buildCounterResultScreenshot = 0;
+buildResultScreenshot() {
+  var o = new api.ResultScreenshot();
+  buildCounterResultScreenshot++;
+  if (buildCounterResultScreenshot < 3) {
+    o.data = "foo";
+    o.height = 42;
+    o.mimeType = "foo";
+    o.width = 42;
+  }
+  buildCounterResultScreenshot--;
+  return o;
+}
+
+checkResultScreenshot(api.ResultScreenshot o) {
+  buildCounterResultScreenshot++;
+  if (buildCounterResultScreenshot < 3) {
+    unittest.expect(o.data, unittest.equals('foo'));
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.mimeType, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterResultScreenshot--;
+}
+
+core.int buildCounterResultVersion = 0;
+buildResultVersion() {
+  var o = new api.ResultVersion();
+  buildCounterResultVersion++;
+  if (buildCounterResultVersion < 3) {
+    o.major = 42;
+    o.minor = 42;
+  }
+  buildCounterResultVersion--;
+  return o;
+}
+
+checkResultVersion(api.ResultVersion o) {
+  buildCounterResultVersion++;
+  if (buildCounterResultVersion < 3) {
+    unittest.expect(o.major, unittest.equals(42));
+    unittest.expect(o.minor, unittest.equals(42));
+  }
+  buildCounterResultVersion--;
+}
+
+core.int buildCounterResult = 0;
+buildResult() {
+  var o = new api.Result();
+  buildCounterResult++;
+  if (buildCounterResult < 3) {
+    o.formattedResults = buildResultFormattedResults();
+    o.id = "foo";
+    o.invalidRules = buildUnnamed2652();
+    o.kind = "foo";
+    o.pageStats = buildResultPageStats();
+    o.responseCode = 42;
+    o.score = 42;
+    o.screenshot = buildResultScreenshot();
+    o.title = "foo";
+    o.version = buildResultVersion();
+  }
+  buildCounterResult--;
+  return o;
+}
+
+checkResult(api.Result o) {
+  buildCounterResult++;
+  if (buildCounterResult < 3) {
+    checkResultFormattedResults(o.formattedResults);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed2652(o.invalidRules);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkResultPageStats(o.pageStats);
+    unittest.expect(o.responseCode, unittest.equals(42));
+    unittest.expect(o.score, unittest.equals(42));
+    checkResultScreenshot(o.screenshot);
+    unittest.expect(o.title, unittest.equals('foo'));
+    checkResultVersion(o.version);
+  }
+  buildCounterResult--;
+}
+
+buildUnnamed2653() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2653(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group(
+      "obj-schema-ResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs",
+      () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs();
+      var od = new api
+              .ResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs.fromJson(
+          o.toJson());
+      checkResultFormattedResultsRuleResultsValueUrlBlocksHeaderArgs(od);
+    });
+  });
+
+  unittest.group(
+      "obj-schema-ResultFormattedResultsRuleResultsValueUrlBlocksHeader", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultFormattedResultsRuleResultsValueUrlBlocksHeader();
+      var od = new api
+              .ResultFormattedResultsRuleResultsValueUrlBlocksHeader.fromJson(
+          o.toJson());
+      checkResultFormattedResultsRuleResultsValueUrlBlocksHeader(od);
+    });
+  });
+
+  unittest.group(
+      "obj-schema-ResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs",
+      () {
+    unittest.test("to-json--from-json", () {
+      var o =
+          buildResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs();
+      var od = new api
+              .ResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs.fromJson(
+          o.toJson());
+      checkResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetailsArgs(od);
+    });
+  });
+
+  unittest.group(
+      "obj-schema-ResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails",
+      () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails();
+      var od = new api
+              .ResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails.fromJson(
+          o.toJson());
+      checkResultFormattedResultsRuleResultsValueUrlBlocksUrlsDetails(od);
+    });
+  });
+
+  unittest.group(
+      "obj-schema-ResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs",
+      () {
+    unittest.test("to-json--from-json", () {
+      var o =
+          buildResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs();
+      var od = new api
+              .ResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs.fromJson(
+          o.toJson());
+      checkResultFormattedResultsRuleResultsValueUrlBlocksUrlsResultArgs(od);
+    });
+  });
+
+  unittest.group(
+      "obj-schema-ResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult",
+      () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult();
+      var od = new api
+              .ResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult.fromJson(
+          o.toJson());
+      checkResultFormattedResultsRuleResultsValueUrlBlocksUrlsResult(od);
+    });
+  });
+
+  unittest.group(
+      "obj-schema-ResultFormattedResultsRuleResultsValueUrlBlocksUrls", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultFormattedResultsRuleResultsValueUrlBlocksUrls();
+      var od =
+          new api.ResultFormattedResultsRuleResultsValueUrlBlocksUrls.fromJson(
+              o.toJson());
+      checkResultFormattedResultsRuleResultsValueUrlBlocksUrls(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResultFormattedResultsRuleResultsValueUrlBlocks",
+      () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultFormattedResultsRuleResultsValueUrlBlocks();
+      var od = new api.ResultFormattedResultsRuleResultsValueUrlBlocks.fromJson(
+          o.toJson());
+      checkResultFormattedResultsRuleResultsValueUrlBlocks(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResultFormattedResultsRuleResultsValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultFormattedResultsRuleResultsValue();
+      var od =
+          new api.ResultFormattedResultsRuleResultsValue.fromJson(o.toJson());
+      checkResultFormattedResultsRuleResultsValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResultFormattedResults", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultFormattedResults();
+      var od = new api.ResultFormattedResults.fromJson(o.toJson());
+      checkResultFormattedResults(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResultPageStats", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultPageStats();
+      var od = new api.ResultPageStats.fromJson(o.toJson());
+      checkResultPageStats(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResultScreenshot", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultScreenshot();
+      var od = new api.ResultScreenshot.fromJson(o.toJson());
+      checkResultScreenshot(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResultVersion", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultVersion();
+      var od = new api.ResultVersion.fromJson(o.toJson());
+      checkResultVersion(od);
+    });
+  });
+
+  unittest.group("obj-schema-Result", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResult();
+      var od = new api.Result.fromJson(o.toJson());
+      checkResult(od);
+    });
+  });
+
+  unittest.group("resource-PagespeedapiResourceApi", () {
+    unittest.test("method--runpagespeed", () {
+      var mock = new HttpServerMock();
+      api.PagespeedapiResourceApi res =
+          new api.PagespeedonlineApi(mock).pagespeedapi;
+      var arg_url = "foo";
+      var arg_filterThirdPartyResources = true;
+      var arg_locale = "foo";
+      var arg_rule = buildUnnamed2653();
+      var arg_screenshot = true;
+      var arg_strategy = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("pagespeedonline/v1/"));
+        pathOffset += 19;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("runPagespeed"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["url"].first, unittest.equals(arg_url));
+        unittest.expect(queryMap["filter_third_party_resources"].first,
+            unittest.equals("$arg_filterThirdPartyResources"));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["rule"], unittest.equals(arg_rule));
+        unittest.expect(
+            queryMap["screenshot"].first, unittest.equals("$arg_screenshot"));
+        unittest.expect(
+            queryMap["strategy"].first, unittest.equals(arg_strategy));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildResult());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .runpagespeed(arg_url,
+              filterThirdPartyResources: arg_filterThirdPartyResources,
+              locale: arg_locale,
+              rule: arg_rule,
+              screenshot: arg_screenshot,
+              strategy: arg_strategy,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Result response) {
+        checkResult(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/pagespeedonline/v2_test.dart b/generated/googleapis/test/pagespeedonline/v2_test.dart
new file mode 100644
index 0000000..8b37796
--- /dev/null
+++ b/generated/googleapis/test/pagespeedonline/v2_test.dart
@@ -0,0 +1,764 @@
+library googleapis.pagespeedonline.v2.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/pagespeedonline/v2.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterPagespeedApiFormatStringV2ArgsRects = 0;
+buildPagespeedApiFormatStringV2ArgsRects() {
+  var o = new api.PagespeedApiFormatStringV2ArgsRects();
+  buildCounterPagespeedApiFormatStringV2ArgsRects++;
+  if (buildCounterPagespeedApiFormatStringV2ArgsRects < 3) {
+    o.height = 42;
+    o.left = 42;
+    o.top = 42;
+    o.width = 42;
+  }
+  buildCounterPagespeedApiFormatStringV2ArgsRects--;
+  return o;
+}
+
+checkPagespeedApiFormatStringV2ArgsRects(
+    api.PagespeedApiFormatStringV2ArgsRects o) {
+  buildCounterPagespeedApiFormatStringV2ArgsRects++;
+  if (buildCounterPagespeedApiFormatStringV2ArgsRects < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.left, unittest.equals(42));
+    unittest.expect(o.top, unittest.equals(42));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterPagespeedApiFormatStringV2ArgsRects--;
+}
+
+buildUnnamed1274() {
+  var o = new core.List<api.PagespeedApiFormatStringV2ArgsRects>();
+  o.add(buildPagespeedApiFormatStringV2ArgsRects());
+  o.add(buildPagespeedApiFormatStringV2ArgsRects());
+  return o;
+}
+
+checkUnnamed1274(core.List<api.PagespeedApiFormatStringV2ArgsRects> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPagespeedApiFormatStringV2ArgsRects(o[0]);
+  checkPagespeedApiFormatStringV2ArgsRects(o[1]);
+}
+
+core.int buildCounterPagespeedApiFormatStringV2ArgsSecondaryRects = 0;
+buildPagespeedApiFormatStringV2ArgsSecondaryRects() {
+  var o = new api.PagespeedApiFormatStringV2ArgsSecondaryRects();
+  buildCounterPagespeedApiFormatStringV2ArgsSecondaryRects++;
+  if (buildCounterPagespeedApiFormatStringV2ArgsSecondaryRects < 3) {
+    o.height = 42;
+    o.left = 42;
+    o.top = 42;
+    o.width = 42;
+  }
+  buildCounterPagespeedApiFormatStringV2ArgsSecondaryRects--;
+  return o;
+}
+
+checkPagespeedApiFormatStringV2ArgsSecondaryRects(
+    api.PagespeedApiFormatStringV2ArgsSecondaryRects o) {
+  buildCounterPagespeedApiFormatStringV2ArgsSecondaryRects++;
+  if (buildCounterPagespeedApiFormatStringV2ArgsSecondaryRects < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.left, unittest.equals(42));
+    unittest.expect(o.top, unittest.equals(42));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterPagespeedApiFormatStringV2ArgsSecondaryRects--;
+}
+
+buildUnnamed1275() {
+  var o = new core.List<api.PagespeedApiFormatStringV2ArgsSecondaryRects>();
+  o.add(buildPagespeedApiFormatStringV2ArgsSecondaryRects());
+  o.add(buildPagespeedApiFormatStringV2ArgsSecondaryRects());
+  return o;
+}
+
+checkUnnamed1275(
+    core.List<api.PagespeedApiFormatStringV2ArgsSecondaryRects> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPagespeedApiFormatStringV2ArgsSecondaryRects(o[0]);
+  checkPagespeedApiFormatStringV2ArgsSecondaryRects(o[1]);
+}
+
+core.int buildCounterPagespeedApiFormatStringV2Args = 0;
+buildPagespeedApiFormatStringV2Args() {
+  var o = new api.PagespeedApiFormatStringV2Args();
+  buildCounterPagespeedApiFormatStringV2Args++;
+  if (buildCounterPagespeedApiFormatStringV2Args < 3) {
+    o.key = "foo";
+    o.rects = buildUnnamed1274();
+    o.secondaryRects = buildUnnamed1275();
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterPagespeedApiFormatStringV2Args--;
+  return o;
+}
+
+checkPagespeedApiFormatStringV2Args(api.PagespeedApiFormatStringV2Args o) {
+  buildCounterPagespeedApiFormatStringV2Args++;
+  if (buildCounterPagespeedApiFormatStringV2Args < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    checkUnnamed1274(o.rects);
+    checkUnnamed1275(o.secondaryRects);
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterPagespeedApiFormatStringV2Args--;
+}
+
+buildUnnamed1276() {
+  var o = new core.List<api.PagespeedApiFormatStringV2Args>();
+  o.add(buildPagespeedApiFormatStringV2Args());
+  o.add(buildPagespeedApiFormatStringV2Args());
+  return o;
+}
+
+checkUnnamed1276(core.List<api.PagespeedApiFormatStringV2Args> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPagespeedApiFormatStringV2Args(o[0]);
+  checkPagespeedApiFormatStringV2Args(o[1]);
+}
+
+core.int buildCounterPagespeedApiFormatStringV2 = 0;
+buildPagespeedApiFormatStringV2() {
+  var o = new api.PagespeedApiFormatStringV2();
+  buildCounterPagespeedApiFormatStringV2++;
+  if (buildCounterPagespeedApiFormatStringV2 < 3) {
+    o.args = buildUnnamed1276();
+    o.format = "foo";
+  }
+  buildCounterPagespeedApiFormatStringV2--;
+  return o;
+}
+
+checkPagespeedApiFormatStringV2(api.PagespeedApiFormatStringV2 o) {
+  buildCounterPagespeedApiFormatStringV2++;
+  if (buildCounterPagespeedApiFormatStringV2 < 3) {
+    checkUnnamed1276(o.args);
+    unittest.expect(o.format, unittest.equals('foo'));
+  }
+  buildCounterPagespeedApiFormatStringV2--;
+}
+
+core.int buildCounterPagespeedApiImageV2PageRect = 0;
+buildPagespeedApiImageV2PageRect() {
+  var o = new api.PagespeedApiImageV2PageRect();
+  buildCounterPagespeedApiImageV2PageRect++;
+  if (buildCounterPagespeedApiImageV2PageRect < 3) {
+    o.height = 42;
+    o.left = 42;
+    o.top = 42;
+    o.width = 42;
+  }
+  buildCounterPagespeedApiImageV2PageRect--;
+  return o;
+}
+
+checkPagespeedApiImageV2PageRect(api.PagespeedApiImageV2PageRect o) {
+  buildCounterPagespeedApiImageV2PageRect++;
+  if (buildCounterPagespeedApiImageV2PageRect < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.left, unittest.equals(42));
+    unittest.expect(o.top, unittest.equals(42));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterPagespeedApiImageV2PageRect--;
+}
+
+core.int buildCounterPagespeedApiImageV2 = 0;
+buildPagespeedApiImageV2() {
+  var o = new api.PagespeedApiImageV2();
+  buildCounterPagespeedApiImageV2++;
+  if (buildCounterPagespeedApiImageV2 < 3) {
+    o.data = "foo";
+    o.height = 42;
+    o.key = "foo";
+    o.mimeType = "foo";
+    o.pageRect = buildPagespeedApiImageV2PageRect();
+    o.width = 42;
+  }
+  buildCounterPagespeedApiImageV2--;
+  return o;
+}
+
+checkPagespeedApiImageV2(api.PagespeedApiImageV2 o) {
+  buildCounterPagespeedApiImageV2++;
+  if (buildCounterPagespeedApiImageV2 < 3) {
+    unittest.expect(o.data, unittest.equals('foo'));
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.key, unittest.equals('foo'));
+    unittest.expect(o.mimeType, unittest.equals('foo'));
+    checkPagespeedApiImageV2PageRect(o.pageRect);
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterPagespeedApiImageV2--;
+}
+
+buildUnnamed1277() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1277(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1278() {
+  var o = new core.List<api.PagespeedApiFormatStringV2>();
+  o.add(buildPagespeedApiFormatStringV2());
+  o.add(buildPagespeedApiFormatStringV2());
+  return o;
+}
+
+checkUnnamed1278(core.List<api.PagespeedApiFormatStringV2> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPagespeedApiFormatStringV2(o[0]);
+  checkPagespeedApiFormatStringV2(o[1]);
+}
+
+core.int buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrls = 0;
+buildResultFormattedResultsRuleResultsValueUrlBlocksUrls() {
+  var o = new api.ResultFormattedResultsRuleResultsValueUrlBlocksUrls();
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrls++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrls < 3) {
+    o.details = buildUnnamed1278();
+    o.result = buildPagespeedApiFormatStringV2();
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrls--;
+  return o;
+}
+
+checkResultFormattedResultsRuleResultsValueUrlBlocksUrls(
+    api.ResultFormattedResultsRuleResultsValueUrlBlocksUrls o) {
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrls++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrls < 3) {
+    checkUnnamed1278(o.details);
+    checkPagespeedApiFormatStringV2(o.result);
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocksUrls--;
+}
+
+buildUnnamed1279() {
+  var o =
+      new core.List<api.ResultFormattedResultsRuleResultsValueUrlBlocksUrls>();
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocksUrls());
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocksUrls());
+  return o;
+}
+
+checkUnnamed1279(
+    core.List<api.ResultFormattedResultsRuleResultsValueUrlBlocksUrls> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkResultFormattedResultsRuleResultsValueUrlBlocksUrls(o[0]);
+  checkResultFormattedResultsRuleResultsValueUrlBlocksUrls(o[1]);
+}
+
+core.int buildCounterResultFormattedResultsRuleResultsValueUrlBlocks = 0;
+buildResultFormattedResultsRuleResultsValueUrlBlocks() {
+  var o = new api.ResultFormattedResultsRuleResultsValueUrlBlocks();
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocks++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocks < 3) {
+    o.header = buildPagespeedApiFormatStringV2();
+    o.urls = buildUnnamed1279();
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocks--;
+  return o;
+}
+
+checkResultFormattedResultsRuleResultsValueUrlBlocks(
+    api.ResultFormattedResultsRuleResultsValueUrlBlocks o) {
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocks++;
+  if (buildCounterResultFormattedResultsRuleResultsValueUrlBlocks < 3) {
+    checkPagespeedApiFormatStringV2(o.header);
+    checkUnnamed1279(o.urls);
+  }
+  buildCounterResultFormattedResultsRuleResultsValueUrlBlocks--;
+}
+
+buildUnnamed1280() {
+  var o = new core.List<api.ResultFormattedResultsRuleResultsValueUrlBlocks>();
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocks());
+  o.add(buildResultFormattedResultsRuleResultsValueUrlBlocks());
+  return o;
+}
+
+checkUnnamed1280(
+    core.List<api.ResultFormattedResultsRuleResultsValueUrlBlocks> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkResultFormattedResultsRuleResultsValueUrlBlocks(o[0]);
+  checkResultFormattedResultsRuleResultsValueUrlBlocks(o[1]);
+}
+
+core.int buildCounterResultFormattedResultsRuleResultsValue = 0;
+buildResultFormattedResultsRuleResultsValue() {
+  var o = new api.ResultFormattedResultsRuleResultsValue();
+  buildCounterResultFormattedResultsRuleResultsValue++;
+  if (buildCounterResultFormattedResultsRuleResultsValue < 3) {
+    o.groups = buildUnnamed1277();
+    o.localizedRuleName = "foo";
+    o.ruleImpact = 42.0;
+    o.summary = buildPagespeedApiFormatStringV2();
+    o.urlBlocks = buildUnnamed1280();
+  }
+  buildCounterResultFormattedResultsRuleResultsValue--;
+  return o;
+}
+
+checkResultFormattedResultsRuleResultsValue(
+    api.ResultFormattedResultsRuleResultsValue o) {
+  buildCounterResultFormattedResultsRuleResultsValue++;
+  if (buildCounterResultFormattedResultsRuleResultsValue < 3) {
+    checkUnnamed1277(o.groups);
+    unittest.expect(o.localizedRuleName, unittest.equals('foo'));
+    unittest.expect(o.ruleImpact, unittest.equals(42.0));
+    checkPagespeedApiFormatStringV2(o.summary);
+    checkUnnamed1280(o.urlBlocks);
+  }
+  buildCounterResultFormattedResultsRuleResultsValue--;
+}
+
+buildUnnamed1281() {
+  var o =
+      new core.Map<core.String, api.ResultFormattedResultsRuleResultsValue>();
+  o["x"] = buildResultFormattedResultsRuleResultsValue();
+  o["y"] = buildResultFormattedResultsRuleResultsValue();
+  return o;
+}
+
+checkUnnamed1281(
+    core.Map<core.String, api.ResultFormattedResultsRuleResultsValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkResultFormattedResultsRuleResultsValue(o["x"]);
+  checkResultFormattedResultsRuleResultsValue(o["y"]);
+}
+
+core.int buildCounterResultFormattedResults = 0;
+buildResultFormattedResults() {
+  var o = new api.ResultFormattedResults();
+  buildCounterResultFormattedResults++;
+  if (buildCounterResultFormattedResults < 3) {
+    o.locale = "foo";
+    o.ruleResults = buildUnnamed1281();
+  }
+  buildCounterResultFormattedResults--;
+  return o;
+}
+
+checkResultFormattedResults(api.ResultFormattedResults o) {
+  buildCounterResultFormattedResults++;
+  if (buildCounterResultFormattedResults < 3) {
+    unittest.expect(o.locale, unittest.equals('foo'));
+    checkUnnamed1281(o.ruleResults);
+  }
+  buildCounterResultFormattedResults--;
+}
+
+buildUnnamed1282() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1282(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterResultPageStats = 0;
+buildResultPageStats() {
+  var o = new api.ResultPageStats();
+  buildCounterResultPageStats++;
+  if (buildCounterResultPageStats < 3) {
+    o.cssResponseBytes = "foo";
+    o.flashResponseBytes = "foo";
+    o.htmlResponseBytes = "foo";
+    o.imageResponseBytes = "foo";
+    o.javascriptResponseBytes = "foo";
+    o.numberCssResources = 42;
+    o.numberHosts = 42;
+    o.numberJsResources = 42;
+    o.numberResources = 42;
+    o.numberStaticResources = 42;
+    o.otherResponseBytes = "foo";
+    o.textResponseBytes = "foo";
+    o.totalRequestBytes = "foo";
+  }
+  buildCounterResultPageStats--;
+  return o;
+}
+
+checkResultPageStats(api.ResultPageStats o) {
+  buildCounterResultPageStats++;
+  if (buildCounterResultPageStats < 3) {
+    unittest.expect(o.cssResponseBytes, unittest.equals('foo'));
+    unittest.expect(o.flashResponseBytes, unittest.equals('foo'));
+    unittest.expect(o.htmlResponseBytes, unittest.equals('foo'));
+    unittest.expect(o.imageResponseBytes, unittest.equals('foo'));
+    unittest.expect(o.javascriptResponseBytes, unittest.equals('foo'));
+    unittest.expect(o.numberCssResources, unittest.equals(42));
+    unittest.expect(o.numberHosts, unittest.equals(42));
+    unittest.expect(o.numberJsResources, unittest.equals(42));
+    unittest.expect(o.numberResources, unittest.equals(42));
+    unittest.expect(o.numberStaticResources, unittest.equals(42));
+    unittest.expect(o.otherResponseBytes, unittest.equals('foo'));
+    unittest.expect(o.textResponseBytes, unittest.equals('foo'));
+    unittest.expect(o.totalRequestBytes, unittest.equals('foo'));
+  }
+  buildCounterResultPageStats--;
+}
+
+core.int buildCounterResultRuleGroupsValue = 0;
+buildResultRuleGroupsValue() {
+  var o = new api.ResultRuleGroupsValue();
+  buildCounterResultRuleGroupsValue++;
+  if (buildCounterResultRuleGroupsValue < 3) {
+    o.score = 42;
+  }
+  buildCounterResultRuleGroupsValue--;
+  return o;
+}
+
+checkResultRuleGroupsValue(api.ResultRuleGroupsValue o) {
+  buildCounterResultRuleGroupsValue++;
+  if (buildCounterResultRuleGroupsValue < 3) {
+    unittest.expect(o.score, unittest.equals(42));
+  }
+  buildCounterResultRuleGroupsValue--;
+}
+
+buildUnnamed1283() {
+  var o = new core.Map<core.String, api.ResultRuleGroupsValue>();
+  o["x"] = buildResultRuleGroupsValue();
+  o["y"] = buildResultRuleGroupsValue();
+  return o;
+}
+
+checkUnnamed1283(core.Map<core.String, api.ResultRuleGroupsValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkResultRuleGroupsValue(o["x"]);
+  checkResultRuleGroupsValue(o["y"]);
+}
+
+core.int buildCounterResultVersion = 0;
+buildResultVersion() {
+  var o = new api.ResultVersion();
+  buildCounterResultVersion++;
+  if (buildCounterResultVersion < 3) {
+    o.major = 42;
+    o.minor = 42;
+  }
+  buildCounterResultVersion--;
+  return o;
+}
+
+checkResultVersion(api.ResultVersion o) {
+  buildCounterResultVersion++;
+  if (buildCounterResultVersion < 3) {
+    unittest.expect(o.major, unittest.equals(42));
+    unittest.expect(o.minor, unittest.equals(42));
+  }
+  buildCounterResultVersion--;
+}
+
+core.int buildCounterResult = 0;
+buildResult() {
+  var o = new api.Result();
+  buildCounterResult++;
+  if (buildCounterResult < 3) {
+    o.formattedResults = buildResultFormattedResults();
+    o.id = "foo";
+    o.invalidRules = buildUnnamed1282();
+    o.kind = "foo";
+    o.pageStats = buildResultPageStats();
+    o.responseCode = 42;
+    o.ruleGroups = buildUnnamed1283();
+    o.screenshot = buildPagespeedApiImageV2();
+    o.title = "foo";
+    o.version = buildResultVersion();
+  }
+  buildCounterResult--;
+  return o;
+}
+
+checkResult(api.Result o) {
+  buildCounterResult++;
+  if (buildCounterResult < 3) {
+    checkResultFormattedResults(o.formattedResults);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed1282(o.invalidRules);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkResultPageStats(o.pageStats);
+    unittest.expect(o.responseCode, unittest.equals(42));
+    checkUnnamed1283(o.ruleGroups);
+    checkPagespeedApiImageV2(o.screenshot);
+    unittest.expect(o.title, unittest.equals('foo'));
+    checkResultVersion(o.version);
+  }
+  buildCounterResult--;
+}
+
+buildUnnamed1284() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1284(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-PagespeedApiFormatStringV2ArgsRects", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPagespeedApiFormatStringV2ArgsRects();
+      var od = new api.PagespeedApiFormatStringV2ArgsRects.fromJson(o.toJson());
+      checkPagespeedApiFormatStringV2ArgsRects(od);
+    });
+  });
+
+  unittest.group("obj-schema-PagespeedApiFormatStringV2ArgsSecondaryRects", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPagespeedApiFormatStringV2ArgsSecondaryRects();
+      var od = new api.PagespeedApiFormatStringV2ArgsSecondaryRects.fromJson(
+          o.toJson());
+      checkPagespeedApiFormatStringV2ArgsSecondaryRects(od);
+    });
+  });
+
+  unittest.group("obj-schema-PagespeedApiFormatStringV2Args", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPagespeedApiFormatStringV2Args();
+      var od = new api.PagespeedApiFormatStringV2Args.fromJson(o.toJson());
+      checkPagespeedApiFormatStringV2Args(od);
+    });
+  });
+
+  unittest.group("obj-schema-PagespeedApiFormatStringV2", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPagespeedApiFormatStringV2();
+      var od = new api.PagespeedApiFormatStringV2.fromJson(o.toJson());
+      checkPagespeedApiFormatStringV2(od);
+    });
+  });
+
+  unittest.group("obj-schema-PagespeedApiImageV2PageRect", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPagespeedApiImageV2PageRect();
+      var od = new api.PagespeedApiImageV2PageRect.fromJson(o.toJson());
+      checkPagespeedApiImageV2PageRect(od);
+    });
+  });
+
+  unittest.group("obj-schema-PagespeedApiImageV2", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPagespeedApiImageV2();
+      var od = new api.PagespeedApiImageV2.fromJson(o.toJson());
+      checkPagespeedApiImageV2(od);
+    });
+  });
+
+  unittest.group(
+      "obj-schema-ResultFormattedResultsRuleResultsValueUrlBlocksUrls", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultFormattedResultsRuleResultsValueUrlBlocksUrls();
+      var od =
+          new api.ResultFormattedResultsRuleResultsValueUrlBlocksUrls.fromJson(
+              o.toJson());
+      checkResultFormattedResultsRuleResultsValueUrlBlocksUrls(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResultFormattedResultsRuleResultsValueUrlBlocks",
+      () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultFormattedResultsRuleResultsValueUrlBlocks();
+      var od = new api.ResultFormattedResultsRuleResultsValueUrlBlocks.fromJson(
+          o.toJson());
+      checkResultFormattedResultsRuleResultsValueUrlBlocks(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResultFormattedResultsRuleResultsValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultFormattedResultsRuleResultsValue();
+      var od =
+          new api.ResultFormattedResultsRuleResultsValue.fromJson(o.toJson());
+      checkResultFormattedResultsRuleResultsValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResultFormattedResults", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultFormattedResults();
+      var od = new api.ResultFormattedResults.fromJson(o.toJson());
+      checkResultFormattedResults(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResultPageStats", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultPageStats();
+      var od = new api.ResultPageStats.fromJson(o.toJson());
+      checkResultPageStats(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResultRuleGroupsValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultRuleGroupsValue();
+      var od = new api.ResultRuleGroupsValue.fromJson(o.toJson());
+      checkResultRuleGroupsValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResultVersion", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultVersion();
+      var od = new api.ResultVersion.fromJson(o.toJson());
+      checkResultVersion(od);
+    });
+  });
+
+  unittest.group("obj-schema-Result", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResult();
+      var od = new api.Result.fromJson(o.toJson());
+      checkResult(od);
+    });
+  });
+
+  unittest.group("resource-PagespeedapiResourceApi", () {
+    unittest.test("method--runpagespeed", () {
+      var mock = new HttpServerMock();
+      api.PagespeedapiResourceApi res =
+          new api.PagespeedonlineApi(mock).pagespeedapi;
+      var arg_url = "foo";
+      var arg_filterThirdPartyResources = true;
+      var arg_locale = "foo";
+      var arg_rule = buildUnnamed1284();
+      var arg_screenshot = true;
+      var arg_strategy = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("pagespeedonline/v2/"));
+        pathOffset += 19;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("runPagespeed"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["url"].first, unittest.equals(arg_url));
+        unittest.expect(queryMap["filter_third_party_resources"].first,
+            unittest.equals("$arg_filterThirdPartyResources"));
+        unittest.expect(queryMap["locale"].first, unittest.equals(arg_locale));
+        unittest.expect(queryMap["rule"], unittest.equals(arg_rule));
+        unittest.expect(
+            queryMap["screenshot"].first, unittest.equals("$arg_screenshot"));
+        unittest.expect(
+            queryMap["strategy"].first, unittest.equals(arg_strategy));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildResult());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .runpagespeed(arg_url,
+              filterThirdPartyResources: arg_filterThirdPartyResources,
+              locale: arg_locale,
+              rule: arg_rule,
+              screenshot: arg_screenshot,
+              strategy: arg_strategy,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Result response) {
+        checkResult(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/partners/v2_test.dart b/generated/googleapis/test/partners/v2_test.dart
new file mode 100644
index 0000000..ffa0996
--- /dev/null
+++ b/generated/googleapis/test/partners/v2_test.dart
@@ -0,0 +1,4199 @@
+library googleapis.partners.v2.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/partners/v2.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAdWordsManagerAccountInfo = 0;
+buildAdWordsManagerAccountInfo() {
+  var o = new api.AdWordsManagerAccountInfo();
+  buildCounterAdWordsManagerAccountInfo++;
+  if (buildCounterAdWordsManagerAccountInfo < 3) {
+    o.customerName = "foo";
+    o.id = "foo";
+  }
+  buildCounterAdWordsManagerAccountInfo--;
+  return o;
+}
+
+checkAdWordsManagerAccountInfo(api.AdWordsManagerAccountInfo o) {
+  buildCounterAdWordsManagerAccountInfo++;
+  if (buildCounterAdWordsManagerAccountInfo < 3) {
+    unittest.expect(o.customerName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+  }
+  buildCounterAdWordsManagerAccountInfo--;
+}
+
+core.int buildCounterAnalytics = 0;
+buildAnalytics() {
+  var o = new api.Analytics();
+  buildCounterAnalytics++;
+  if (buildCounterAnalytics < 3) {
+    o.contacts = buildAnalyticsDataPoint();
+    o.eventDate = buildDate();
+    o.profileViews = buildAnalyticsDataPoint();
+    o.searchViews = buildAnalyticsDataPoint();
+  }
+  buildCounterAnalytics--;
+  return o;
+}
+
+checkAnalytics(api.Analytics o) {
+  buildCounterAnalytics++;
+  if (buildCounterAnalytics < 3) {
+    checkAnalyticsDataPoint(o.contacts);
+    checkDate(o.eventDate);
+    checkAnalyticsDataPoint(o.profileViews);
+    checkAnalyticsDataPoint(o.searchViews);
+  }
+  buildCounterAnalytics--;
+}
+
+buildUnnamed2004() {
+  var o = new core.List<api.LatLng>();
+  o.add(buildLatLng());
+  o.add(buildLatLng());
+  return o;
+}
+
+checkUnnamed2004(core.List<api.LatLng> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLatLng(o[0]);
+  checkLatLng(o[1]);
+}
+
+core.int buildCounterAnalyticsDataPoint = 0;
+buildAnalyticsDataPoint() {
+  var o = new api.AnalyticsDataPoint();
+  buildCounterAnalyticsDataPoint++;
+  if (buildCounterAnalyticsDataPoint < 3) {
+    o.eventCount = 42;
+    o.eventLocations = buildUnnamed2004();
+  }
+  buildCounterAnalyticsDataPoint--;
+  return o;
+}
+
+checkAnalyticsDataPoint(api.AnalyticsDataPoint o) {
+  buildCounterAnalyticsDataPoint++;
+  if (buildCounterAnalyticsDataPoint < 3) {
+    unittest.expect(o.eventCount, unittest.equals(42));
+    checkUnnamed2004(o.eventLocations);
+  }
+  buildCounterAnalyticsDataPoint--;
+}
+
+core.int buildCounterAnalyticsSummary = 0;
+buildAnalyticsSummary() {
+  var o = new api.AnalyticsSummary();
+  buildCounterAnalyticsSummary++;
+  if (buildCounterAnalyticsSummary < 3) {
+    o.contactsCount = 42;
+    o.profileViewsCount = 42;
+    o.searchViewsCount = 42;
+  }
+  buildCounterAnalyticsSummary--;
+  return o;
+}
+
+checkAnalyticsSummary(api.AnalyticsSummary o) {
+  buildCounterAnalyticsSummary++;
+  if (buildCounterAnalyticsSummary < 3) {
+    unittest.expect(o.contactsCount, unittest.equals(42));
+    unittest.expect(o.profileViewsCount, unittest.equals(42));
+    unittest.expect(o.searchViewsCount, unittest.equals(42));
+  }
+  buildCounterAnalyticsSummary--;
+}
+
+buildUnnamed2005() {
+  var o = new core.List<api.CountryOfferInfo>();
+  o.add(buildCountryOfferInfo());
+  o.add(buildCountryOfferInfo());
+  return o;
+}
+
+checkUnnamed2005(core.List<api.CountryOfferInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCountryOfferInfo(o[0]);
+  checkCountryOfferInfo(o[1]);
+}
+
+buildUnnamed2006() {
+  var o = new core.List<api.OfferCustomer>();
+  o.add(buildOfferCustomer());
+  o.add(buildOfferCustomer());
+  return o;
+}
+
+checkUnnamed2006(core.List<api.OfferCustomer> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOfferCustomer(o[0]);
+  checkOfferCustomer(o[1]);
+}
+
+core.int buildCounterAvailableOffer = 0;
+buildAvailableOffer() {
+  var o = new api.AvailableOffer();
+  buildCounterAvailableOffer++;
+  if (buildCounterAvailableOffer < 3) {
+    o.available = 42;
+    o.countryOfferInfos = buildUnnamed2005();
+    o.description = "foo";
+    o.id = "foo";
+    o.maxAccountAge = 42;
+    o.name = "foo";
+    o.offerLevel = "foo";
+    o.offerType = "foo";
+    o.qualifiedCustomer = buildUnnamed2006();
+    o.qualifiedCustomersComplete = true;
+    o.showSpecialOfferCopy = true;
+    o.terms = "foo";
+  }
+  buildCounterAvailableOffer--;
+  return o;
+}
+
+checkAvailableOffer(api.AvailableOffer o) {
+  buildCounterAvailableOffer++;
+  if (buildCounterAvailableOffer < 3) {
+    unittest.expect(o.available, unittest.equals(42));
+    checkUnnamed2005(o.countryOfferInfos);
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.maxAccountAge, unittest.equals(42));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.offerLevel, unittest.equals('foo'));
+    unittest.expect(o.offerType, unittest.equals('foo'));
+    checkUnnamed2006(o.qualifiedCustomer);
+    unittest.expect(o.qualifiedCustomersComplete, unittest.isTrue);
+    unittest.expect(o.showSpecialOfferCopy, unittest.isTrue);
+    unittest.expect(o.terms, unittest.equals('foo'));
+  }
+  buildCounterAvailableOffer--;
+}
+
+core.int buildCounterCertification = 0;
+buildCertification() {
+  var o = new api.Certification();
+  buildCounterCertification++;
+  if (buildCounterCertification < 3) {
+    o.achieved = true;
+    o.certificationType = "foo";
+    o.expiration = "foo";
+    o.lastAchieved = "foo";
+    o.warning = true;
+  }
+  buildCounterCertification--;
+  return o;
+}
+
+checkCertification(api.Certification o) {
+  buildCounterCertification++;
+  if (buildCounterCertification < 3) {
+    unittest.expect(o.achieved, unittest.isTrue);
+    unittest.expect(o.certificationType, unittest.equals('foo'));
+    unittest.expect(o.expiration, unittest.equals('foo'));
+    unittest.expect(o.lastAchieved, unittest.equals('foo'));
+    unittest.expect(o.warning, unittest.isTrue);
+  }
+  buildCounterCertification--;
+}
+
+core.int buildCounterCertificationExamStatus = 0;
+buildCertificationExamStatus() {
+  var o = new api.CertificationExamStatus();
+  buildCounterCertificationExamStatus++;
+  if (buildCounterCertificationExamStatus < 3) {
+    o.numberUsersPass = 42;
+    o.type = "foo";
+  }
+  buildCounterCertificationExamStatus--;
+  return o;
+}
+
+checkCertificationExamStatus(api.CertificationExamStatus o) {
+  buildCounterCertificationExamStatus++;
+  if (buildCounterCertificationExamStatus < 3) {
+    unittest.expect(o.numberUsersPass, unittest.equals(42));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterCertificationExamStatus--;
+}
+
+buildUnnamed2007() {
+  var o = new core.List<api.CertificationExamStatus>();
+  o.add(buildCertificationExamStatus());
+  o.add(buildCertificationExamStatus());
+  return o;
+}
+
+checkUnnamed2007(core.List<api.CertificationExamStatus> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCertificationExamStatus(o[0]);
+  checkCertificationExamStatus(o[1]);
+}
+
+core.int buildCounterCertificationStatus = 0;
+buildCertificationStatus() {
+  var o = new api.CertificationStatus();
+  buildCounterCertificationStatus++;
+  if (buildCounterCertificationStatus < 3) {
+    o.examStatuses = buildUnnamed2007();
+    o.isCertified = true;
+    o.type = "foo";
+    o.userCount = 42;
+  }
+  buildCounterCertificationStatus--;
+  return o;
+}
+
+checkCertificationStatus(api.CertificationStatus o) {
+  buildCounterCertificationStatus++;
+  if (buildCounterCertificationStatus < 3) {
+    checkUnnamed2007(o.examStatuses);
+    unittest.expect(o.isCertified, unittest.isTrue);
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.userCount, unittest.equals(42));
+  }
+  buildCounterCertificationStatus--;
+}
+
+buildUnnamed2008() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2008(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2009() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2009(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2010() {
+  var o = new core.List<api.CertificationStatus>();
+  o.add(buildCertificationStatus());
+  o.add(buildCertificationStatus());
+  return o;
+}
+
+checkUnnamed2010(core.List<api.CertificationStatus> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCertificationStatus(o[0]);
+  checkCertificationStatus(o[1]);
+}
+
+buildUnnamed2011() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2011(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2012() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2012(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2013() {
+  var o = new core.List<api.LocalizedCompanyInfo>();
+  o.add(buildLocalizedCompanyInfo());
+  o.add(buildLocalizedCompanyInfo());
+  return o;
+}
+
+checkUnnamed2013(core.List<api.LocalizedCompanyInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLocalizedCompanyInfo(o[0]);
+  checkLocalizedCompanyInfo(o[1]);
+}
+
+buildUnnamed2014() {
+  var o = new core.List<api.Location>();
+  o.add(buildLocation());
+  o.add(buildLocation());
+  return o;
+}
+
+checkUnnamed2014(core.List<api.Location> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLocation(o[0]);
+  checkLocation(o[1]);
+}
+
+buildUnnamed2015() {
+  var o = new core.List<api.Rank>();
+  o.add(buildRank());
+  o.add(buildRank());
+  return o;
+}
+
+checkUnnamed2015(core.List<api.Rank> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRank(o[0]);
+  checkRank(o[1]);
+}
+
+buildUnnamed2016() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2016(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2017() {
+  var o = new core.List<api.SpecializationStatus>();
+  o.add(buildSpecializationStatus());
+  o.add(buildSpecializationStatus());
+  return o;
+}
+
+checkUnnamed2017(core.List<api.SpecializationStatus> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSpecializationStatus(o[0]);
+  checkSpecializationStatus(o[1]);
+}
+
+core.int buildCounterCompany = 0;
+buildCompany() {
+  var o = new api.Company();
+  buildCounterCompany++;
+  if (buildCounterCompany < 3) {
+    o.additionalWebsites = buildUnnamed2008();
+    o.autoApprovalEmailDomains = buildUnnamed2009();
+    o.badgeTier = "foo";
+    o.certificationStatuses = buildUnnamed2010();
+    o.companyTypes = buildUnnamed2011();
+    o.convertedMinMonthlyBudget = buildMoney();
+    o.id = "foo";
+    o.industries = buildUnnamed2012();
+    o.localizedInfos = buildUnnamed2013();
+    o.locations = buildUnnamed2014();
+    o.name = "foo";
+    o.originalMinMonthlyBudget = buildMoney();
+    o.primaryAdwordsManagerAccountId = "foo";
+    o.primaryLanguageCode = "foo";
+    o.primaryLocation = buildLocation();
+    o.profileStatus = "foo";
+    o.publicProfile = buildPublicProfile();
+    o.ranks = buildUnnamed2015();
+    o.services = buildUnnamed2016();
+    o.specializationStatus = buildUnnamed2017();
+    o.websiteUrl = "foo";
+  }
+  buildCounterCompany--;
+  return o;
+}
+
+checkCompany(api.Company o) {
+  buildCounterCompany++;
+  if (buildCounterCompany < 3) {
+    checkUnnamed2008(o.additionalWebsites);
+    checkUnnamed2009(o.autoApprovalEmailDomains);
+    unittest.expect(o.badgeTier, unittest.equals('foo'));
+    checkUnnamed2010(o.certificationStatuses);
+    checkUnnamed2011(o.companyTypes);
+    checkMoney(o.convertedMinMonthlyBudget);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed2012(o.industries);
+    checkUnnamed2013(o.localizedInfos);
+    checkUnnamed2014(o.locations);
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkMoney(o.originalMinMonthlyBudget);
+    unittest.expect(o.primaryAdwordsManagerAccountId, unittest.equals('foo'));
+    unittest.expect(o.primaryLanguageCode, unittest.equals('foo'));
+    checkLocation(o.primaryLocation);
+    unittest.expect(o.profileStatus, unittest.equals('foo'));
+    checkPublicProfile(o.publicProfile);
+    checkUnnamed2015(o.ranks);
+    checkUnnamed2016(o.services);
+    checkUnnamed2017(o.specializationStatus);
+    unittest.expect(o.websiteUrl, unittest.equals('foo'));
+  }
+  buildCounterCompany--;
+}
+
+buildUnnamed2018() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2018(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2019() {
+  var o = new core.List<api.SpecializationStatus>();
+  o.add(buildSpecializationStatus());
+  o.add(buildSpecializationStatus());
+  return o;
+}
+
+checkUnnamed2019(core.List<api.SpecializationStatus> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSpecializationStatus(o[0]);
+  checkSpecializationStatus(o[1]);
+}
+
+core.int buildCounterCompanyRelation = 0;
+buildCompanyRelation() {
+  var o = new api.CompanyRelation();
+  buildCounterCompanyRelation++;
+  if (buildCounterCompanyRelation < 3) {
+    o.address = "foo";
+    o.badgeTier = "foo";
+    o.companyAdmin = true;
+    o.companyId = "foo";
+    o.creationTime = "foo";
+    o.internalCompanyId = "foo";
+    o.isPending = true;
+    o.logoUrl = "foo";
+    o.managerAccount = "foo";
+    o.name = "foo";
+    o.phoneNumber = "foo";
+    o.primaryAddress = buildLocation();
+    o.primaryCountryCode = "foo";
+    o.primaryLanguageCode = "foo";
+    o.resolvedTimestamp = "foo";
+    o.segment = buildUnnamed2018();
+    o.specializationStatus = buildUnnamed2019();
+    o.state = "foo";
+    o.website = "foo";
+  }
+  buildCounterCompanyRelation--;
+  return o;
+}
+
+checkCompanyRelation(api.CompanyRelation o) {
+  buildCounterCompanyRelation++;
+  if (buildCounterCompanyRelation < 3) {
+    unittest.expect(o.address, unittest.equals('foo'));
+    unittest.expect(o.badgeTier, unittest.equals('foo'));
+    unittest.expect(o.companyAdmin, unittest.isTrue);
+    unittest.expect(o.companyId, unittest.equals('foo'));
+    unittest.expect(o.creationTime, unittest.equals('foo'));
+    unittest.expect(o.internalCompanyId, unittest.equals('foo'));
+    unittest.expect(o.isPending, unittest.isTrue);
+    unittest.expect(o.logoUrl, unittest.equals('foo'));
+    unittest.expect(o.managerAccount, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.phoneNumber, unittest.equals('foo'));
+    checkLocation(o.primaryAddress);
+    unittest.expect(o.primaryCountryCode, unittest.equals('foo'));
+    unittest.expect(o.primaryLanguageCode, unittest.equals('foo'));
+    unittest.expect(o.resolvedTimestamp, unittest.equals('foo'));
+    checkUnnamed2018(o.segment);
+    checkUnnamed2019(o.specializationStatus);
+    unittest.expect(o.state, unittest.equals('foo'));
+    unittest.expect(o.website, unittest.equals('foo'));
+  }
+  buildCounterCompanyRelation--;
+}
+
+core.int buildCounterCountryOfferInfo = 0;
+buildCountryOfferInfo() {
+  var o = new api.CountryOfferInfo();
+  buildCounterCountryOfferInfo++;
+  if (buildCounterCountryOfferInfo < 3) {
+    o.getYAmount = "foo";
+    o.offerCountryCode = "foo";
+    o.offerType = "foo";
+    o.spendXAmount = "foo";
+  }
+  buildCounterCountryOfferInfo--;
+  return o;
+}
+
+checkCountryOfferInfo(api.CountryOfferInfo o) {
+  buildCounterCountryOfferInfo++;
+  if (buildCounterCountryOfferInfo < 3) {
+    unittest.expect(o.getYAmount, unittest.equals('foo'));
+    unittest.expect(o.offerCountryCode, unittest.equals('foo'));
+    unittest.expect(o.offerType, unittest.equals('foo'));
+    unittest.expect(o.spendXAmount, unittest.equals('foo'));
+  }
+  buildCounterCountryOfferInfo--;
+}
+
+core.int buildCounterCreateLeadRequest = 0;
+buildCreateLeadRequest() {
+  var o = new api.CreateLeadRequest();
+  buildCounterCreateLeadRequest++;
+  if (buildCounterCreateLeadRequest < 3) {
+    o.lead = buildLead();
+    o.recaptchaChallenge = buildRecaptchaChallenge();
+    o.requestMetadata = buildRequestMetadata();
+  }
+  buildCounterCreateLeadRequest--;
+  return o;
+}
+
+checkCreateLeadRequest(api.CreateLeadRequest o) {
+  buildCounterCreateLeadRequest++;
+  if (buildCounterCreateLeadRequest < 3) {
+    checkLead(o.lead);
+    checkRecaptchaChallenge(o.recaptchaChallenge);
+    checkRequestMetadata(o.requestMetadata);
+  }
+  buildCounterCreateLeadRequest--;
+}
+
+core.int buildCounterCreateLeadResponse = 0;
+buildCreateLeadResponse() {
+  var o = new api.CreateLeadResponse();
+  buildCounterCreateLeadResponse++;
+  if (buildCounterCreateLeadResponse < 3) {
+    o.lead = buildLead();
+    o.recaptchaStatus = "foo";
+    o.responseMetadata = buildResponseMetadata();
+  }
+  buildCounterCreateLeadResponse--;
+  return o;
+}
+
+checkCreateLeadResponse(api.CreateLeadResponse o) {
+  buildCounterCreateLeadResponse++;
+  if (buildCounterCreateLeadResponse < 3) {
+    checkLead(o.lead);
+    unittest.expect(o.recaptchaStatus, unittest.equals('foo'));
+    checkResponseMetadata(o.responseMetadata);
+  }
+  buildCounterCreateLeadResponse--;
+}
+
+core.int buildCounterDate = 0;
+buildDate() {
+  var o = new api.Date();
+  buildCounterDate++;
+  if (buildCounterDate < 3) {
+    o.day = 42;
+    o.month = 42;
+    o.year = 42;
+  }
+  buildCounterDate--;
+  return o;
+}
+
+checkDate(api.Date o) {
+  buildCounterDate++;
+  if (buildCounterDate < 3) {
+    unittest.expect(o.day, unittest.equals(42));
+    unittest.expect(o.month, unittest.equals(42));
+    unittest.expect(o.year, unittest.equals(42));
+  }
+  buildCounterDate--;
+}
+
+core.int buildCounterDebugInfo = 0;
+buildDebugInfo() {
+  var o = new api.DebugInfo();
+  buildCounterDebugInfo++;
+  if (buildCounterDebugInfo < 3) {
+    o.serverInfo = "foo";
+    o.serverTraceInfo = "foo";
+    o.serviceUrl = "foo";
+  }
+  buildCounterDebugInfo--;
+  return o;
+}
+
+checkDebugInfo(api.DebugInfo o) {
+  buildCounterDebugInfo++;
+  if (buildCounterDebugInfo < 3) {
+    unittest.expect(o.serverInfo, unittest.equals('foo'));
+    unittest.expect(o.serverTraceInfo, unittest.equals('foo'));
+    unittest.expect(o.serviceUrl, unittest.equals('foo'));
+  }
+  buildCounterDebugInfo--;
+}
+
+core.int buildCounterEmpty = 0;
+buildEmpty() {
+  var o = new api.Empty();
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+  return o;
+}
+
+checkEmpty(api.Empty o) {
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+}
+
+buildUnnamed2020() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2020(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterEventData = 0;
+buildEventData() {
+  var o = new api.EventData();
+  buildCounterEventData++;
+  if (buildCounterEventData < 3) {
+    o.key = "foo";
+    o.values = buildUnnamed2020();
+  }
+  buildCounterEventData--;
+  return o;
+}
+
+checkEventData(api.EventData o) {
+  buildCounterEventData++;
+  if (buildCounterEventData < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    checkUnnamed2020(o.values);
+  }
+  buildCounterEventData--;
+}
+
+core.int buildCounterExamStatus = 0;
+buildExamStatus() {
+  var o = new api.ExamStatus();
+  buildCounterExamStatus++;
+  if (buildCounterExamStatus < 3) {
+    o.examType = "foo";
+    o.expiration = "foo";
+    o.lastPassed = "foo";
+    o.passed = true;
+    o.taken = "foo";
+    o.warning = true;
+  }
+  buildCounterExamStatus--;
+  return o;
+}
+
+checkExamStatus(api.ExamStatus o) {
+  buildCounterExamStatus++;
+  if (buildCounterExamStatus < 3) {
+    unittest.expect(o.examType, unittest.equals('foo'));
+    unittest.expect(o.expiration, unittest.equals('foo'));
+    unittest.expect(o.lastPassed, unittest.equals('foo'));
+    unittest.expect(o.passed, unittest.isTrue);
+    unittest.expect(o.taken, unittest.equals('foo'));
+    unittest.expect(o.warning, unittest.isTrue);
+  }
+  buildCounterExamStatus--;
+}
+
+core.int buildCounterExamToken = 0;
+buildExamToken() {
+  var o = new api.ExamToken();
+  buildCounterExamToken++;
+  if (buildCounterExamToken < 3) {
+    o.examId = "foo";
+    o.examType = "foo";
+    o.token = "foo";
+  }
+  buildCounterExamToken--;
+  return o;
+}
+
+checkExamToken(api.ExamToken o) {
+  buildCounterExamToken++;
+  if (buildCounterExamToken < 3) {
+    unittest.expect(o.examId, unittest.equals('foo'));
+    unittest.expect(o.examType, unittest.equals('foo'));
+    unittest.expect(o.token, unittest.equals('foo'));
+  }
+  buildCounterExamToken--;
+}
+
+core.int buildCounterGetCompanyResponse = 0;
+buildGetCompanyResponse() {
+  var o = new api.GetCompanyResponse();
+  buildCounterGetCompanyResponse++;
+  if (buildCounterGetCompanyResponse < 3) {
+    o.company = buildCompany();
+    o.responseMetadata = buildResponseMetadata();
+  }
+  buildCounterGetCompanyResponse--;
+  return o;
+}
+
+checkGetCompanyResponse(api.GetCompanyResponse o) {
+  buildCounterGetCompanyResponse++;
+  if (buildCounterGetCompanyResponse < 3) {
+    checkCompany(o.company);
+    checkResponseMetadata(o.responseMetadata);
+  }
+  buildCounterGetCompanyResponse--;
+}
+
+core.int buildCounterGetPartnersStatusResponse = 0;
+buildGetPartnersStatusResponse() {
+  var o = new api.GetPartnersStatusResponse();
+  buildCounterGetPartnersStatusResponse++;
+  if (buildCounterGetPartnersStatusResponse < 3) {
+    o.responseMetadata = buildResponseMetadata();
+  }
+  buildCounterGetPartnersStatusResponse--;
+  return o;
+}
+
+checkGetPartnersStatusResponse(api.GetPartnersStatusResponse o) {
+  buildCounterGetPartnersStatusResponse++;
+  if (buildCounterGetPartnersStatusResponse < 3) {
+    checkResponseMetadata(o.responseMetadata);
+  }
+  buildCounterGetPartnersStatusResponse--;
+}
+
+core.int buildCounterHistoricalOffer = 0;
+buildHistoricalOffer() {
+  var o = new api.HistoricalOffer();
+  buildCounterHistoricalOffer++;
+  if (buildCounterHistoricalOffer < 3) {
+    o.adwordsUrl = "foo";
+    o.clientEmail = "foo";
+    o.clientId = "foo";
+    o.clientName = "foo";
+    o.creationTime = "foo";
+    o.expirationTime = "foo";
+    o.lastModifiedTime = "foo";
+    o.offerCode = "foo";
+    o.offerCountryCode = "foo";
+    o.offerType = "foo";
+    o.senderName = "foo";
+    o.status = "foo";
+  }
+  buildCounterHistoricalOffer--;
+  return o;
+}
+
+checkHistoricalOffer(api.HistoricalOffer o) {
+  buildCounterHistoricalOffer++;
+  if (buildCounterHistoricalOffer < 3) {
+    unittest.expect(o.adwordsUrl, unittest.equals('foo'));
+    unittest.expect(o.clientEmail, unittest.equals('foo'));
+    unittest.expect(o.clientId, unittest.equals('foo'));
+    unittest.expect(o.clientName, unittest.equals('foo'));
+    unittest.expect(o.creationTime, unittest.equals('foo'));
+    unittest.expect(o.expirationTime, unittest.equals('foo'));
+    unittest.expect(o.lastModifiedTime, unittest.equals('foo'));
+    unittest.expect(o.offerCode, unittest.equals('foo'));
+    unittest.expect(o.offerCountryCode, unittest.equals('foo'));
+    unittest.expect(o.offerType, unittest.equals('foo'));
+    unittest.expect(o.senderName, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+  }
+  buildCounterHistoricalOffer--;
+}
+
+core.int buildCounterLatLng = 0;
+buildLatLng() {
+  var o = new api.LatLng();
+  buildCounterLatLng++;
+  if (buildCounterLatLng < 3) {
+    o.latitude = 42.0;
+    o.longitude = 42.0;
+  }
+  buildCounterLatLng--;
+  return o;
+}
+
+checkLatLng(api.LatLng o) {
+  buildCounterLatLng++;
+  if (buildCounterLatLng < 3) {
+    unittest.expect(o.latitude, unittest.equals(42.0));
+    unittest.expect(o.longitude, unittest.equals(42.0));
+  }
+  buildCounterLatLng--;
+}
+
+buildUnnamed2021() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2021(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterLead = 0;
+buildLead() {
+  var o = new api.Lead();
+  buildCounterLead++;
+  if (buildCounterLead < 3) {
+    o.adwordsCustomerId = "foo";
+    o.comments = "foo";
+    o.createTime = "foo";
+    o.email = "foo";
+    o.familyName = "foo";
+    o.givenName = "foo";
+    o.gpsMotivations = buildUnnamed2021();
+    o.id = "foo";
+    o.languageCode = "foo";
+    o.marketingOptIn = true;
+    o.minMonthlyBudget = buildMoney();
+    o.phoneNumber = "foo";
+    o.state = "foo";
+    o.type = "foo";
+    o.websiteUrl = "foo";
+  }
+  buildCounterLead--;
+  return o;
+}
+
+checkLead(api.Lead o) {
+  buildCounterLead++;
+  if (buildCounterLead < 3) {
+    unittest.expect(o.adwordsCustomerId, unittest.equals('foo'));
+    unittest.expect(o.comments, unittest.equals('foo'));
+    unittest.expect(o.createTime, unittest.equals('foo'));
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.familyName, unittest.equals('foo'));
+    unittest.expect(o.givenName, unittest.equals('foo'));
+    checkUnnamed2021(o.gpsMotivations);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.languageCode, unittest.equals('foo'));
+    unittest.expect(o.marketingOptIn, unittest.isTrue);
+    checkMoney(o.minMonthlyBudget);
+    unittest.expect(o.phoneNumber, unittest.equals('foo'));
+    unittest.expect(o.state, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.websiteUrl, unittest.equals('foo'));
+  }
+  buildCounterLead--;
+}
+
+buildUnnamed2022() {
+  var o = new core.List<api.Analytics>();
+  o.add(buildAnalytics());
+  o.add(buildAnalytics());
+  return o;
+}
+
+checkUnnamed2022(core.List<api.Analytics> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAnalytics(o[0]);
+  checkAnalytics(o[1]);
+}
+
+core.int buildCounterListAnalyticsResponse = 0;
+buildListAnalyticsResponse() {
+  var o = new api.ListAnalyticsResponse();
+  buildCounterListAnalyticsResponse++;
+  if (buildCounterListAnalyticsResponse < 3) {
+    o.analytics = buildUnnamed2022();
+    o.analyticsSummary = buildAnalyticsSummary();
+    o.nextPageToken = "foo";
+    o.responseMetadata = buildResponseMetadata();
+  }
+  buildCounterListAnalyticsResponse--;
+  return o;
+}
+
+checkListAnalyticsResponse(api.ListAnalyticsResponse o) {
+  buildCounterListAnalyticsResponse++;
+  if (buildCounterListAnalyticsResponse < 3) {
+    checkUnnamed2022(o.analytics);
+    checkAnalyticsSummary(o.analyticsSummary);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkResponseMetadata(o.responseMetadata);
+  }
+  buildCounterListAnalyticsResponse--;
+}
+
+buildUnnamed2023() {
+  var o = new core.List<api.Company>();
+  o.add(buildCompany());
+  o.add(buildCompany());
+  return o;
+}
+
+checkUnnamed2023(core.List<api.Company> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCompany(o[0]);
+  checkCompany(o[1]);
+}
+
+core.int buildCounterListCompaniesResponse = 0;
+buildListCompaniesResponse() {
+  var o = new api.ListCompaniesResponse();
+  buildCounterListCompaniesResponse++;
+  if (buildCounterListCompaniesResponse < 3) {
+    o.companies = buildUnnamed2023();
+    o.nextPageToken = "foo";
+    o.responseMetadata = buildResponseMetadata();
+  }
+  buildCounterListCompaniesResponse--;
+  return o;
+}
+
+checkListCompaniesResponse(api.ListCompaniesResponse o) {
+  buildCounterListCompaniesResponse++;
+  if (buildCounterListCompaniesResponse < 3) {
+    checkUnnamed2023(o.companies);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkResponseMetadata(o.responseMetadata);
+  }
+  buildCounterListCompaniesResponse--;
+}
+
+buildUnnamed2024() {
+  var o = new core.List<api.Lead>();
+  o.add(buildLead());
+  o.add(buildLead());
+  return o;
+}
+
+checkUnnamed2024(core.List<api.Lead> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLead(o[0]);
+  checkLead(o[1]);
+}
+
+core.int buildCounterListLeadsResponse = 0;
+buildListLeadsResponse() {
+  var o = new api.ListLeadsResponse();
+  buildCounterListLeadsResponse++;
+  if (buildCounterListLeadsResponse < 3) {
+    o.leads = buildUnnamed2024();
+    o.nextPageToken = "foo";
+    o.responseMetadata = buildResponseMetadata();
+    o.totalSize = 42;
+  }
+  buildCounterListLeadsResponse--;
+  return o;
+}
+
+checkListLeadsResponse(api.ListLeadsResponse o) {
+  buildCounterListLeadsResponse++;
+  if (buildCounterListLeadsResponse < 3) {
+    checkUnnamed2024(o.leads);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkResponseMetadata(o.responseMetadata);
+    unittest.expect(o.totalSize, unittest.equals(42));
+  }
+  buildCounterListLeadsResponse--;
+}
+
+buildUnnamed2025() {
+  var o = new core.List<api.HistoricalOffer>();
+  o.add(buildHistoricalOffer());
+  o.add(buildHistoricalOffer());
+  return o;
+}
+
+checkUnnamed2025(core.List<api.HistoricalOffer> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkHistoricalOffer(o[0]);
+  checkHistoricalOffer(o[1]);
+}
+
+core.int buildCounterListOffersHistoryResponse = 0;
+buildListOffersHistoryResponse() {
+  var o = new api.ListOffersHistoryResponse();
+  buildCounterListOffersHistoryResponse++;
+  if (buildCounterListOffersHistoryResponse < 3) {
+    o.canShowEntireCompany = true;
+    o.nextPageToken = "foo";
+    o.offers = buildUnnamed2025();
+    o.responseMetadata = buildResponseMetadata();
+    o.showingEntireCompany = true;
+    o.totalResults = 42;
+  }
+  buildCounterListOffersHistoryResponse--;
+  return o;
+}
+
+checkListOffersHistoryResponse(api.ListOffersHistoryResponse o) {
+  buildCounterListOffersHistoryResponse++;
+  if (buildCounterListOffersHistoryResponse < 3) {
+    unittest.expect(o.canShowEntireCompany, unittest.isTrue);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed2025(o.offers);
+    checkResponseMetadata(o.responseMetadata);
+    unittest.expect(o.showingEntireCompany, unittest.isTrue);
+    unittest.expect(o.totalResults, unittest.equals(42));
+  }
+  buildCounterListOffersHistoryResponse--;
+}
+
+buildUnnamed2026() {
+  var o = new core.List<api.AvailableOffer>();
+  o.add(buildAvailableOffer());
+  o.add(buildAvailableOffer());
+  return o;
+}
+
+checkUnnamed2026(core.List<api.AvailableOffer> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAvailableOffer(o[0]);
+  checkAvailableOffer(o[1]);
+}
+
+core.int buildCounterListOffersResponse = 0;
+buildListOffersResponse() {
+  var o = new api.ListOffersResponse();
+  buildCounterListOffersResponse++;
+  if (buildCounterListOffersResponse < 3) {
+    o.availableOffers = buildUnnamed2026();
+    o.noOfferReason = "foo";
+    o.responseMetadata = buildResponseMetadata();
+  }
+  buildCounterListOffersResponse--;
+  return o;
+}
+
+checkListOffersResponse(api.ListOffersResponse o) {
+  buildCounterListOffersResponse++;
+  if (buildCounterListOffersResponse < 3) {
+    checkUnnamed2026(o.availableOffers);
+    unittest.expect(o.noOfferReason, unittest.equals('foo'));
+    checkResponseMetadata(o.responseMetadata);
+  }
+  buildCounterListOffersResponse--;
+}
+
+buildUnnamed2027() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2027(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterListUserStatesResponse = 0;
+buildListUserStatesResponse() {
+  var o = new api.ListUserStatesResponse();
+  buildCounterListUserStatesResponse++;
+  if (buildCounterListUserStatesResponse < 3) {
+    o.responseMetadata = buildResponseMetadata();
+    o.userStates = buildUnnamed2027();
+  }
+  buildCounterListUserStatesResponse--;
+  return o;
+}
+
+checkListUserStatesResponse(api.ListUserStatesResponse o) {
+  buildCounterListUserStatesResponse++;
+  if (buildCounterListUserStatesResponse < 3) {
+    checkResponseMetadata(o.responseMetadata);
+    checkUnnamed2027(o.userStates);
+  }
+  buildCounterListUserStatesResponse--;
+}
+
+buildUnnamed2028() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2028(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterLocalizedCompanyInfo = 0;
+buildLocalizedCompanyInfo() {
+  var o = new api.LocalizedCompanyInfo();
+  buildCounterLocalizedCompanyInfo++;
+  if (buildCounterLocalizedCompanyInfo < 3) {
+    o.countryCodes = buildUnnamed2028();
+    o.displayName = "foo";
+    o.languageCode = "foo";
+    o.overview = "foo";
+  }
+  buildCounterLocalizedCompanyInfo--;
+  return o;
+}
+
+checkLocalizedCompanyInfo(api.LocalizedCompanyInfo o) {
+  buildCounterLocalizedCompanyInfo++;
+  if (buildCounterLocalizedCompanyInfo < 3) {
+    checkUnnamed2028(o.countryCodes);
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.languageCode, unittest.equals('foo'));
+    unittest.expect(o.overview, unittest.equals('foo'));
+  }
+  buildCounterLocalizedCompanyInfo--;
+}
+
+buildUnnamed2029() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2029(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterLocation = 0;
+buildLocation() {
+  var o = new api.Location();
+  buildCounterLocation++;
+  if (buildCounterLocation < 3) {
+    o.address = "foo";
+    o.addressLine = buildUnnamed2029();
+    o.administrativeArea = "foo";
+    o.dependentLocality = "foo";
+    o.languageCode = "foo";
+    o.latLng = buildLatLng();
+    o.locality = "foo";
+    o.postalCode = "foo";
+    o.regionCode = "foo";
+    o.sortingCode = "foo";
+  }
+  buildCounterLocation--;
+  return o;
+}
+
+checkLocation(api.Location o) {
+  buildCounterLocation++;
+  if (buildCounterLocation < 3) {
+    unittest.expect(o.address, unittest.equals('foo'));
+    checkUnnamed2029(o.addressLine);
+    unittest.expect(o.administrativeArea, unittest.equals('foo'));
+    unittest.expect(o.dependentLocality, unittest.equals('foo'));
+    unittest.expect(o.languageCode, unittest.equals('foo'));
+    checkLatLng(o.latLng);
+    unittest.expect(o.locality, unittest.equals('foo'));
+    unittest.expect(o.postalCode, unittest.equals('foo'));
+    unittest.expect(o.regionCode, unittest.equals('foo'));
+    unittest.expect(o.sortingCode, unittest.equals('foo'));
+  }
+  buildCounterLocation--;
+}
+
+buildUnnamed2030() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed2030(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterLogMessageRequest = 0;
+buildLogMessageRequest() {
+  var o = new api.LogMessageRequest();
+  buildCounterLogMessageRequest++;
+  if (buildCounterLogMessageRequest < 3) {
+    o.clientInfo = buildUnnamed2030();
+    o.details = "foo";
+    o.level = "foo";
+    o.requestMetadata = buildRequestMetadata();
+  }
+  buildCounterLogMessageRequest--;
+  return o;
+}
+
+checkLogMessageRequest(api.LogMessageRequest o) {
+  buildCounterLogMessageRequest++;
+  if (buildCounterLogMessageRequest < 3) {
+    checkUnnamed2030(o.clientInfo);
+    unittest.expect(o.details, unittest.equals('foo'));
+    unittest.expect(o.level, unittest.equals('foo'));
+    checkRequestMetadata(o.requestMetadata);
+  }
+  buildCounterLogMessageRequest--;
+}
+
+core.int buildCounterLogMessageResponse = 0;
+buildLogMessageResponse() {
+  var o = new api.LogMessageResponse();
+  buildCounterLogMessageResponse++;
+  if (buildCounterLogMessageResponse < 3) {
+    o.responseMetadata = buildResponseMetadata();
+  }
+  buildCounterLogMessageResponse--;
+  return o;
+}
+
+checkLogMessageResponse(api.LogMessageResponse o) {
+  buildCounterLogMessageResponse++;
+  if (buildCounterLogMessageResponse < 3) {
+    checkResponseMetadata(o.responseMetadata);
+  }
+  buildCounterLogMessageResponse--;
+}
+
+buildUnnamed2031() {
+  var o = new core.List<api.EventData>();
+  o.add(buildEventData());
+  o.add(buildEventData());
+  return o;
+}
+
+checkUnnamed2031(core.List<api.EventData> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEventData(o[0]);
+  checkEventData(o[1]);
+}
+
+core.int buildCounterLogUserEventRequest = 0;
+buildLogUserEventRequest() {
+  var o = new api.LogUserEventRequest();
+  buildCounterLogUserEventRequest++;
+  if (buildCounterLogUserEventRequest < 3) {
+    o.eventAction = "foo";
+    o.eventCategory = "foo";
+    o.eventDatas = buildUnnamed2031();
+    o.eventScope = "foo";
+    o.lead = buildLead();
+    o.requestMetadata = buildRequestMetadata();
+    o.url = "foo";
+  }
+  buildCounterLogUserEventRequest--;
+  return o;
+}
+
+checkLogUserEventRequest(api.LogUserEventRequest o) {
+  buildCounterLogUserEventRequest++;
+  if (buildCounterLogUserEventRequest < 3) {
+    unittest.expect(o.eventAction, unittest.equals('foo'));
+    unittest.expect(o.eventCategory, unittest.equals('foo'));
+    checkUnnamed2031(o.eventDatas);
+    unittest.expect(o.eventScope, unittest.equals('foo'));
+    checkLead(o.lead);
+    checkRequestMetadata(o.requestMetadata);
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterLogUserEventRequest--;
+}
+
+core.int buildCounterLogUserEventResponse = 0;
+buildLogUserEventResponse() {
+  var o = new api.LogUserEventResponse();
+  buildCounterLogUserEventResponse++;
+  if (buildCounterLogUserEventResponse < 3) {
+    o.responseMetadata = buildResponseMetadata();
+  }
+  buildCounterLogUserEventResponse--;
+  return o;
+}
+
+checkLogUserEventResponse(api.LogUserEventResponse o) {
+  buildCounterLogUserEventResponse++;
+  if (buildCounterLogUserEventResponse < 3) {
+    checkResponseMetadata(o.responseMetadata);
+  }
+  buildCounterLogUserEventResponse--;
+}
+
+core.int buildCounterMoney = 0;
+buildMoney() {
+  var o = new api.Money();
+  buildCounterMoney++;
+  if (buildCounterMoney < 3) {
+    o.currencyCode = "foo";
+    o.nanos = 42;
+    o.units = "foo";
+  }
+  buildCounterMoney--;
+  return o;
+}
+
+checkMoney(api.Money o) {
+  buildCounterMoney++;
+  if (buildCounterMoney < 3) {
+    unittest.expect(o.currencyCode, unittest.equals('foo'));
+    unittest.expect(o.nanos, unittest.equals(42));
+    unittest.expect(o.units, unittest.equals('foo'));
+  }
+  buildCounterMoney--;
+}
+
+core.int buildCounterOfferCustomer = 0;
+buildOfferCustomer() {
+  var o = new api.OfferCustomer();
+  buildCounterOfferCustomer++;
+  if (buildCounterOfferCustomer < 3) {
+    o.adwordsUrl = "foo";
+    o.countryCode = "foo";
+    o.creationTime = "foo";
+    o.eligibilityDaysLeft = 42;
+    o.externalCid = "foo";
+    o.getYAmount = "foo";
+    o.name = "foo";
+    o.offerType = "foo";
+    o.spendXAmount = "foo";
+  }
+  buildCounterOfferCustomer--;
+  return o;
+}
+
+checkOfferCustomer(api.OfferCustomer o) {
+  buildCounterOfferCustomer++;
+  if (buildCounterOfferCustomer < 3) {
+    unittest.expect(o.adwordsUrl, unittest.equals('foo'));
+    unittest.expect(o.countryCode, unittest.equals('foo'));
+    unittest.expect(o.creationTime, unittest.equals('foo'));
+    unittest.expect(o.eligibilityDaysLeft, unittest.equals(42));
+    unittest.expect(o.externalCid, unittest.equals('foo'));
+    unittest.expect(o.getYAmount, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.offerType, unittest.equals('foo'));
+    unittest.expect(o.spendXAmount, unittest.equals('foo'));
+  }
+  buildCounterOfferCustomer--;
+}
+
+core.int buildCounterOptIns = 0;
+buildOptIns() {
+  var o = new api.OptIns();
+  buildCounterOptIns++;
+  if (buildCounterOptIns < 3) {
+    o.marketComm = true;
+    o.performanceSuggestions = true;
+    o.phoneContact = true;
+    o.physicalMail = true;
+    o.specialOffers = true;
+  }
+  buildCounterOptIns--;
+  return o;
+}
+
+checkOptIns(api.OptIns o) {
+  buildCounterOptIns++;
+  if (buildCounterOptIns < 3) {
+    unittest.expect(o.marketComm, unittest.isTrue);
+    unittest.expect(o.performanceSuggestions, unittest.isTrue);
+    unittest.expect(o.phoneContact, unittest.isTrue);
+    unittest.expect(o.physicalMail, unittest.isTrue);
+    unittest.expect(o.specialOffers, unittest.isTrue);
+  }
+  buildCounterOptIns--;
+}
+
+core.int buildCounterPublicProfile = 0;
+buildPublicProfile() {
+  var o = new api.PublicProfile();
+  buildCounterPublicProfile++;
+  if (buildCounterPublicProfile < 3) {
+    o.displayImageUrl = "foo";
+    o.displayName = "foo";
+    o.id = "foo";
+    o.profileImage = "foo";
+    o.url = "foo";
+  }
+  buildCounterPublicProfile--;
+  return o;
+}
+
+checkPublicProfile(api.PublicProfile o) {
+  buildCounterPublicProfile++;
+  if (buildCounterPublicProfile < 3) {
+    unittest.expect(o.displayImageUrl, unittest.equals('foo'));
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.profileImage, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterPublicProfile--;
+}
+
+core.int buildCounterRank = 0;
+buildRank() {
+  var o = new api.Rank();
+  buildCounterRank++;
+  if (buildCounterRank < 3) {
+    o.type = "foo";
+    o.value = 42.0;
+  }
+  buildCounterRank--;
+  return o;
+}
+
+checkRank(api.Rank o) {
+  buildCounterRank++;
+  if (buildCounterRank < 3) {
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals(42.0));
+  }
+  buildCounterRank--;
+}
+
+core.int buildCounterRecaptchaChallenge = 0;
+buildRecaptchaChallenge() {
+  var o = new api.RecaptchaChallenge();
+  buildCounterRecaptchaChallenge++;
+  if (buildCounterRecaptchaChallenge < 3) {
+    o.id = "foo";
+    o.response = "foo";
+  }
+  buildCounterRecaptchaChallenge--;
+  return o;
+}
+
+checkRecaptchaChallenge(api.RecaptchaChallenge o) {
+  buildCounterRecaptchaChallenge++;
+  if (buildCounterRecaptchaChallenge < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.response, unittest.equals('foo'));
+  }
+  buildCounterRecaptchaChallenge--;
+}
+
+buildUnnamed2032() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2032(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterRequestMetadata = 0;
+buildRequestMetadata() {
+  var o = new api.RequestMetadata();
+  buildCounterRequestMetadata++;
+  if (buildCounterRequestMetadata < 3) {
+    o.experimentIds = buildUnnamed2032();
+    o.locale = "foo";
+    o.partnersSessionId = "foo";
+    o.trafficSource = buildTrafficSource();
+    o.userOverrides = buildUserOverrides();
+  }
+  buildCounterRequestMetadata--;
+  return o;
+}
+
+checkRequestMetadata(api.RequestMetadata o) {
+  buildCounterRequestMetadata++;
+  if (buildCounterRequestMetadata < 3) {
+    checkUnnamed2032(o.experimentIds);
+    unittest.expect(o.locale, unittest.equals('foo'));
+    unittest.expect(o.partnersSessionId, unittest.equals('foo'));
+    checkTrafficSource(o.trafficSource);
+    checkUserOverrides(o.userOverrides);
+  }
+  buildCounterRequestMetadata--;
+}
+
+core.int buildCounterResponseMetadata = 0;
+buildResponseMetadata() {
+  var o = new api.ResponseMetadata();
+  buildCounterResponseMetadata++;
+  if (buildCounterResponseMetadata < 3) {
+    o.debugInfo = buildDebugInfo();
+  }
+  buildCounterResponseMetadata--;
+  return o;
+}
+
+checkResponseMetadata(api.ResponseMetadata o) {
+  buildCounterResponseMetadata++;
+  if (buildCounterResponseMetadata < 3) {
+    checkDebugInfo(o.debugInfo);
+  }
+  buildCounterResponseMetadata--;
+}
+
+core.int buildCounterSpecializationStatus = 0;
+buildSpecializationStatus() {
+  var o = new api.SpecializationStatus();
+  buildCounterSpecializationStatus++;
+  if (buildCounterSpecializationStatus < 3) {
+    o.badgeSpecialization = "foo";
+    o.badgeSpecializationState = "foo";
+  }
+  buildCounterSpecializationStatus--;
+  return o;
+}
+
+checkSpecializationStatus(api.SpecializationStatus o) {
+  buildCounterSpecializationStatus++;
+  if (buildCounterSpecializationStatus < 3) {
+    unittest.expect(o.badgeSpecialization, unittest.equals('foo'));
+    unittest.expect(o.badgeSpecializationState, unittest.equals('foo'));
+  }
+  buildCounterSpecializationStatus--;
+}
+
+core.int buildCounterTrafficSource = 0;
+buildTrafficSource() {
+  var o = new api.TrafficSource();
+  buildCounterTrafficSource++;
+  if (buildCounterTrafficSource < 3) {
+    o.trafficSourceId = "foo";
+    o.trafficSubId = "foo";
+  }
+  buildCounterTrafficSource--;
+  return o;
+}
+
+checkTrafficSource(api.TrafficSource o) {
+  buildCounterTrafficSource++;
+  if (buildCounterTrafficSource < 3) {
+    unittest.expect(o.trafficSourceId, unittest.equals('foo'));
+    unittest.expect(o.trafficSubId, unittest.equals('foo'));
+  }
+  buildCounterTrafficSource--;
+}
+
+buildUnnamed2033() {
+  var o = new core.List<api.AdWordsManagerAccountInfo>();
+  o.add(buildAdWordsManagerAccountInfo());
+  o.add(buildAdWordsManagerAccountInfo());
+  return o;
+}
+
+checkUnnamed2033(core.List<api.AdWordsManagerAccountInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAdWordsManagerAccountInfo(o[0]);
+  checkAdWordsManagerAccountInfo(o[1]);
+}
+
+buildUnnamed2034() {
+  var o = new core.List<api.Certification>();
+  o.add(buildCertification());
+  o.add(buildCertification());
+  return o;
+}
+
+checkUnnamed2034(core.List<api.Certification> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCertification(o[0]);
+  checkCertification(o[1]);
+}
+
+buildUnnamed2035() {
+  var o = new core.List<api.ExamStatus>();
+  o.add(buildExamStatus());
+  o.add(buildExamStatus());
+  return o;
+}
+
+checkUnnamed2035(core.List<api.ExamStatus> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkExamStatus(o[0]);
+  checkExamStatus(o[1]);
+}
+
+buildUnnamed2036() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2036(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterUser = 0;
+buildUser() {
+  var o = new api.User();
+  buildCounterUser++;
+  if (buildCounterUser < 3) {
+    o.availableAdwordsManagerAccounts = buildUnnamed2033();
+    o.certificationStatus = buildUnnamed2034();
+    o.company = buildCompanyRelation();
+    o.companyVerificationEmail = "foo";
+    o.examStatus = buildUnnamed2035();
+    o.id = "foo";
+    o.internalId = "foo";
+    o.lastAccessTime = "foo";
+    o.primaryEmails = buildUnnamed2036();
+    o.profile = buildUserProfile();
+    o.publicProfile = buildPublicProfile();
+  }
+  buildCounterUser--;
+  return o;
+}
+
+checkUser(api.User o) {
+  buildCounterUser++;
+  if (buildCounterUser < 3) {
+    checkUnnamed2033(o.availableAdwordsManagerAccounts);
+    checkUnnamed2034(o.certificationStatus);
+    checkCompanyRelation(o.company);
+    unittest.expect(o.companyVerificationEmail, unittest.equals('foo'));
+    checkUnnamed2035(o.examStatus);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.internalId, unittest.equals('foo'));
+    unittest.expect(o.lastAccessTime, unittest.equals('foo'));
+    checkUnnamed2036(o.primaryEmails);
+    checkUserProfile(o.profile);
+    checkPublicProfile(o.publicProfile);
+  }
+  buildCounterUser--;
+}
+
+core.int buildCounterUserOverrides = 0;
+buildUserOverrides() {
+  var o = new api.UserOverrides();
+  buildCounterUserOverrides++;
+  if (buildCounterUserOverrides < 3) {
+    o.ipAddress = "foo";
+    o.userId = "foo";
+  }
+  buildCounterUserOverrides--;
+  return o;
+}
+
+checkUserOverrides(api.UserOverrides o) {
+  buildCounterUserOverrides++;
+  if (buildCounterUserOverrides < 3) {
+    unittest.expect(o.ipAddress, unittest.equals('foo'));
+    unittest.expect(o.userId, unittest.equals('foo'));
+  }
+  buildCounterUserOverrides--;
+}
+
+buildUnnamed2037() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2037(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2038() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2038(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2039() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2039(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2040() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2040(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2041() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2041(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterUserProfile = 0;
+buildUserProfile() {
+  var o = new api.UserProfile();
+  buildCounterUserProfile++;
+  if (buildCounterUserProfile < 3) {
+    o.address = buildLocation();
+    o.adwordsManagerAccount = "foo";
+    o.channels = buildUnnamed2037();
+    o.emailAddress = "foo";
+    o.emailOptIns = buildOptIns();
+    o.familyName = "foo";
+    o.givenName = "foo";
+    o.industries = buildUnnamed2038();
+    o.jobFunctions = buildUnnamed2039();
+    o.languages = buildUnnamed2040();
+    o.markets = buildUnnamed2041();
+    o.migrateToAfa = true;
+    o.phoneNumber = "foo";
+    o.primaryCountryCode = "foo";
+    o.profilePublic = true;
+  }
+  buildCounterUserProfile--;
+  return o;
+}
+
+checkUserProfile(api.UserProfile o) {
+  buildCounterUserProfile++;
+  if (buildCounterUserProfile < 3) {
+    checkLocation(o.address);
+    unittest.expect(o.adwordsManagerAccount, unittest.equals('foo'));
+    checkUnnamed2037(o.channels);
+    unittest.expect(o.emailAddress, unittest.equals('foo'));
+    checkOptIns(o.emailOptIns);
+    unittest.expect(o.familyName, unittest.equals('foo'));
+    unittest.expect(o.givenName, unittest.equals('foo'));
+    checkUnnamed2038(o.industries);
+    checkUnnamed2039(o.jobFunctions);
+    checkUnnamed2040(o.languages);
+    checkUnnamed2041(o.markets);
+    unittest.expect(o.migrateToAfa, unittest.isTrue);
+    unittest.expect(o.phoneNumber, unittest.equals('foo'));
+    unittest.expect(o.primaryCountryCode, unittest.equals('foo'));
+    unittest.expect(o.profilePublic, unittest.isTrue);
+  }
+  buildCounterUserProfile--;
+}
+
+buildUnnamed2042() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2042(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2043() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2043(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2044() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2044(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2045() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2045(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2046() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2046(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2047() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2047(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2048() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2048(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2049() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2049(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2050() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2050(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2051() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2051(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2052() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2052(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2053() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2053(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2054() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2054(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2055() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2055(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2056() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2056(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2057() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2057(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2058() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2058(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2059() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2059(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2060() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2060(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2061() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2061(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-AdWordsManagerAccountInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAdWordsManagerAccountInfo();
+      var od = new api.AdWordsManagerAccountInfo.fromJson(o.toJson());
+      checkAdWordsManagerAccountInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-Analytics", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAnalytics();
+      var od = new api.Analytics.fromJson(o.toJson());
+      checkAnalytics(od);
+    });
+  });
+
+  unittest.group("obj-schema-AnalyticsDataPoint", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAnalyticsDataPoint();
+      var od = new api.AnalyticsDataPoint.fromJson(o.toJson());
+      checkAnalyticsDataPoint(od);
+    });
+  });
+
+  unittest.group("obj-schema-AnalyticsSummary", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAnalyticsSummary();
+      var od = new api.AnalyticsSummary.fromJson(o.toJson());
+      checkAnalyticsSummary(od);
+    });
+  });
+
+  unittest.group("obj-schema-AvailableOffer", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAvailableOffer();
+      var od = new api.AvailableOffer.fromJson(o.toJson());
+      checkAvailableOffer(od);
+    });
+  });
+
+  unittest.group("obj-schema-Certification", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCertification();
+      var od = new api.Certification.fromJson(o.toJson());
+      checkCertification(od);
+    });
+  });
+
+  unittest.group("obj-schema-CertificationExamStatus", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCertificationExamStatus();
+      var od = new api.CertificationExamStatus.fromJson(o.toJson());
+      checkCertificationExamStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-CertificationStatus", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCertificationStatus();
+      var od = new api.CertificationStatus.fromJson(o.toJson());
+      checkCertificationStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-Company", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCompany();
+      var od = new api.Company.fromJson(o.toJson());
+      checkCompany(od);
+    });
+  });
+
+  unittest.group("obj-schema-CompanyRelation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCompanyRelation();
+      var od = new api.CompanyRelation.fromJson(o.toJson());
+      checkCompanyRelation(od);
+    });
+  });
+
+  unittest.group("obj-schema-CountryOfferInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCountryOfferInfo();
+      var od = new api.CountryOfferInfo.fromJson(o.toJson());
+      checkCountryOfferInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateLeadRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateLeadRequest();
+      var od = new api.CreateLeadRequest.fromJson(o.toJson());
+      checkCreateLeadRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateLeadResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateLeadResponse();
+      var od = new api.CreateLeadResponse.fromJson(o.toJson());
+      checkCreateLeadResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Date", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDate();
+      var od = new api.Date.fromJson(o.toJson());
+      checkDate(od);
+    });
+  });
+
+  unittest.group("obj-schema-DebugInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDebugInfo();
+      var od = new api.DebugInfo.fromJson(o.toJson());
+      checkDebugInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-Empty", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEmpty();
+      var od = new api.Empty.fromJson(o.toJson());
+      checkEmpty(od);
+    });
+  });
+
+  unittest.group("obj-schema-EventData", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEventData();
+      var od = new api.EventData.fromJson(o.toJson());
+      checkEventData(od);
+    });
+  });
+
+  unittest.group("obj-schema-ExamStatus", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildExamStatus();
+      var od = new api.ExamStatus.fromJson(o.toJson());
+      checkExamStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-ExamToken", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildExamToken();
+      var od = new api.ExamToken.fromJson(o.toJson());
+      checkExamToken(od);
+    });
+  });
+
+  unittest.group("obj-schema-GetCompanyResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGetCompanyResponse();
+      var od = new api.GetCompanyResponse.fromJson(o.toJson());
+      checkGetCompanyResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-GetPartnersStatusResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGetPartnersStatusResponse();
+      var od = new api.GetPartnersStatusResponse.fromJson(o.toJson());
+      checkGetPartnersStatusResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-HistoricalOffer", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildHistoricalOffer();
+      var od = new api.HistoricalOffer.fromJson(o.toJson());
+      checkHistoricalOffer(od);
+    });
+  });
+
+  unittest.group("obj-schema-LatLng", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLatLng();
+      var od = new api.LatLng.fromJson(o.toJson());
+      checkLatLng(od);
+    });
+  });
+
+  unittest.group("obj-schema-Lead", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLead();
+      var od = new api.Lead.fromJson(o.toJson());
+      checkLead(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListAnalyticsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListAnalyticsResponse();
+      var od = new api.ListAnalyticsResponse.fromJson(o.toJson());
+      checkListAnalyticsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListCompaniesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListCompaniesResponse();
+      var od = new api.ListCompaniesResponse.fromJson(o.toJson());
+      checkListCompaniesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListLeadsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListLeadsResponse();
+      var od = new api.ListLeadsResponse.fromJson(o.toJson());
+      checkListLeadsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListOffersHistoryResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListOffersHistoryResponse();
+      var od = new api.ListOffersHistoryResponse.fromJson(o.toJson());
+      checkListOffersHistoryResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListOffersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListOffersResponse();
+      var od = new api.ListOffersResponse.fromJson(o.toJson());
+      checkListOffersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListUserStatesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListUserStatesResponse();
+      var od = new api.ListUserStatesResponse.fromJson(o.toJson());
+      checkListUserStatesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-LocalizedCompanyInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLocalizedCompanyInfo();
+      var od = new api.LocalizedCompanyInfo.fromJson(o.toJson());
+      checkLocalizedCompanyInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-Location", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLocation();
+      var od = new api.Location.fromJson(o.toJson());
+      checkLocation(od);
+    });
+  });
+
+  unittest.group("obj-schema-LogMessageRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLogMessageRequest();
+      var od = new api.LogMessageRequest.fromJson(o.toJson());
+      checkLogMessageRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-LogMessageResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLogMessageResponse();
+      var od = new api.LogMessageResponse.fromJson(o.toJson());
+      checkLogMessageResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-LogUserEventRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLogUserEventRequest();
+      var od = new api.LogUserEventRequest.fromJson(o.toJson());
+      checkLogUserEventRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-LogUserEventResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLogUserEventResponse();
+      var od = new api.LogUserEventResponse.fromJson(o.toJson());
+      checkLogUserEventResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Money", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMoney();
+      var od = new api.Money.fromJson(o.toJson());
+      checkMoney(od);
+    });
+  });
+
+  unittest.group("obj-schema-OfferCustomer", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOfferCustomer();
+      var od = new api.OfferCustomer.fromJson(o.toJson());
+      checkOfferCustomer(od);
+    });
+  });
+
+  unittest.group("obj-schema-OptIns", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOptIns();
+      var od = new api.OptIns.fromJson(o.toJson());
+      checkOptIns(od);
+    });
+  });
+
+  unittest.group("obj-schema-PublicProfile", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPublicProfile();
+      var od = new api.PublicProfile.fromJson(o.toJson());
+      checkPublicProfile(od);
+    });
+  });
+
+  unittest.group("obj-schema-Rank", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRank();
+      var od = new api.Rank.fromJson(o.toJson());
+      checkRank(od);
+    });
+  });
+
+  unittest.group("obj-schema-RecaptchaChallenge", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRecaptchaChallenge();
+      var od = new api.RecaptchaChallenge.fromJson(o.toJson());
+      checkRecaptchaChallenge(od);
+    });
+  });
+
+  unittest.group("obj-schema-RequestMetadata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRequestMetadata();
+      var od = new api.RequestMetadata.fromJson(o.toJson());
+      checkRequestMetadata(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResponseMetadata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResponseMetadata();
+      var od = new api.ResponseMetadata.fromJson(o.toJson());
+      checkResponseMetadata(od);
+    });
+  });
+
+  unittest.group("obj-schema-SpecializationStatus", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSpecializationStatus();
+      var od = new api.SpecializationStatus.fromJson(o.toJson());
+      checkSpecializationStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-TrafficSource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTrafficSource();
+      var od = new api.TrafficSource.fromJson(o.toJson());
+      checkTrafficSource(od);
+    });
+  });
+
+  unittest.group("obj-schema-User", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUser();
+      var od = new api.User.fromJson(o.toJson());
+      checkUser(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserOverrides", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserOverrides();
+      var od = new api.UserOverrides.fromJson(o.toJson());
+      checkUserOverrides(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserProfile", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserProfile();
+      var od = new api.UserProfile.fromJson(o.toJson());
+      checkUserProfile(od);
+    });
+  });
+
+  unittest.group("resource-AnalyticsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AnalyticsResourceApi res = new api.PartnersApi(mock).analytics;
+      var arg_requestMetadata_userOverrides_ipAddress = "foo";
+      var arg_requestMetadata_experimentIds = buildUnnamed2042();
+      var arg_requestMetadata_trafficSource_trafficSubId = "foo";
+      var arg_requestMetadata_partnersSessionId = "foo";
+      var arg_requestMetadata_userOverrides_userId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_requestMetadata_trafficSource_trafficSourceId = "foo";
+      var arg_requestMetadata_locale = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("v2/analytics"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["requestMetadata.userOverrides.ipAddress"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_ipAddress));
+        unittest.expect(queryMap["requestMetadata.experimentIds"],
+            unittest.equals(arg_requestMetadata_experimentIds));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSubId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSubId));
+        unittest.expect(queryMap["requestMetadata.partnersSessionId"].first,
+            unittest.equals(arg_requestMetadata_partnersSessionId));
+        unittest.expect(queryMap["requestMetadata.userOverrides.userId"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_userId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSourceId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSourceId));
+        unittest.expect(queryMap["requestMetadata.locale"].first,
+            unittest.equals(arg_requestMetadata_locale));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListAnalyticsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              requestMetadata_userOverrides_ipAddress:
+                  arg_requestMetadata_userOverrides_ipAddress,
+              requestMetadata_experimentIds: arg_requestMetadata_experimentIds,
+              requestMetadata_trafficSource_trafficSubId:
+                  arg_requestMetadata_trafficSource_trafficSubId,
+              requestMetadata_partnersSessionId:
+                  arg_requestMetadata_partnersSessionId,
+              requestMetadata_userOverrides_userId:
+                  arg_requestMetadata_userOverrides_userId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              requestMetadata_trafficSource_trafficSourceId:
+                  arg_requestMetadata_trafficSource_trafficSourceId,
+              requestMetadata_locale: arg_requestMetadata_locale,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListAnalyticsResponse response) {
+        checkListAnalyticsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ClientMessagesResourceApi", () {
+    unittest.test("method--log", () {
+      var mock = new HttpServerMock();
+      api.ClientMessagesResourceApi res =
+          new api.PartnersApi(mock).clientMessages;
+      var arg_request = buildLogMessageRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.LogMessageRequest.fromJson(json);
+        checkLogMessageRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("v2/clientMessages:log"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLogMessageResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .log(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.LogMessageResponse response) {
+        checkLogMessageResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CompaniesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CompaniesResourceApi res = new api.PartnersApi(mock).companies;
+      var arg_companyId = "foo";
+      var arg_requestMetadata_trafficSource_trafficSourceId = "foo";
+      var arg_requestMetadata_userOverrides_ipAddress = "foo";
+      var arg_requestMetadata_experimentIds = buildUnnamed2043();
+      var arg_currencyCode = "foo";
+      var arg_requestMetadata_trafficSource_trafficSubId = "foo";
+      var arg_orderBy = "foo";
+      var arg_requestMetadata_partnersSessionId = "foo";
+      var arg_requestMetadata_userOverrides_userId = "foo";
+      var arg_view = "foo";
+      var arg_address = "foo";
+      var arg_requestMetadata_locale = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("v2/companies/"));
+        pathOffset += 13;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_companyId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSourceId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSourceId));
+        unittest.expect(
+            queryMap["requestMetadata.userOverrides.ipAddress"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_ipAddress));
+        unittest.expect(queryMap["requestMetadata.experimentIds"],
+            unittest.equals(arg_requestMetadata_experimentIds));
+        unittest.expect(
+            queryMap["currencyCode"].first, unittest.equals(arg_currencyCode));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSubId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSubId));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(queryMap["requestMetadata.partnersSessionId"].first,
+            unittest.equals(arg_requestMetadata_partnersSessionId));
+        unittest.expect(queryMap["requestMetadata.userOverrides.userId"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_userId));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(
+            queryMap["address"].first, unittest.equals(arg_address));
+        unittest.expect(queryMap["requestMetadata.locale"].first,
+            unittest.equals(arg_requestMetadata_locale));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGetCompanyResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_companyId,
+              requestMetadata_trafficSource_trafficSourceId:
+                  arg_requestMetadata_trafficSource_trafficSourceId,
+              requestMetadata_userOverrides_ipAddress:
+                  arg_requestMetadata_userOverrides_ipAddress,
+              requestMetadata_experimentIds: arg_requestMetadata_experimentIds,
+              currencyCode: arg_currencyCode,
+              requestMetadata_trafficSource_trafficSubId:
+                  arg_requestMetadata_trafficSource_trafficSubId,
+              orderBy: arg_orderBy,
+              requestMetadata_partnersSessionId:
+                  arg_requestMetadata_partnersSessionId,
+              requestMetadata_userOverrides_userId:
+                  arg_requestMetadata_userOverrides_userId,
+              view: arg_view,
+              address: arg_address,
+              requestMetadata_locale: arg_requestMetadata_locale,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.GetCompanyResponse response) {
+        checkGetCompanyResponse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CompaniesResourceApi res = new api.PartnersApi(mock).companies;
+      var arg_requestMetadata_partnersSessionId = "foo";
+      var arg_companyName = "foo";
+      var arg_pageToken = "foo";
+      var arg_industries = buildUnnamed2044();
+      var arg_websiteUrl = "foo";
+      var arg_gpsMotivations = buildUnnamed2045();
+      var arg_languageCodes = buildUnnamed2046();
+      var arg_pageSize = 42;
+      var arg_requestMetadata_userOverrides_ipAddress = "foo";
+      var arg_requestMetadata_experimentIds = buildUnnamed2047();
+      var arg_orderBy = "foo";
+      var arg_specializations = buildUnnamed2048();
+      var arg_maxMonthlyBudget_currencyCode = "foo";
+      var arg_minMonthlyBudget_currencyCode = "foo";
+      var arg_requestMetadata_userOverrides_userId = "foo";
+      var arg_view = "foo";
+      var arg_address = "foo";
+      var arg_requestMetadata_locale = "foo";
+      var arg_minMonthlyBudget_units = "foo";
+      var arg_maxMonthlyBudget_nanos = 42;
+      var arg_services = buildUnnamed2049();
+      var arg_requestMetadata_trafficSource_trafficSourceId = "foo";
+      var arg_maxMonthlyBudget_units = "foo";
+      var arg_requestMetadata_trafficSource_trafficSubId = "foo";
+      var arg_minMonthlyBudget_nanos = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("v2/companies"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["requestMetadata.partnersSessionId"].first,
+            unittest.equals(arg_requestMetadata_partnersSessionId));
+        unittest.expect(
+            queryMap["companyName"].first, unittest.equals(arg_companyName));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["industries"], unittest.equals(arg_industries));
+        unittest.expect(
+            queryMap["websiteUrl"].first, unittest.equals(arg_websiteUrl));
+        unittest.expect(
+            queryMap["gpsMotivations"], unittest.equals(arg_gpsMotivations));
+        unittest.expect(
+            queryMap["languageCodes"], unittest.equals(arg_languageCodes));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["requestMetadata.userOverrides.ipAddress"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_ipAddress));
+        unittest.expect(queryMap["requestMetadata.experimentIds"],
+            unittest.equals(arg_requestMetadata_experimentIds));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["specializations"], unittest.equals(arg_specializations));
+        unittest.expect(queryMap["maxMonthlyBudget.currencyCode"].first,
+            unittest.equals(arg_maxMonthlyBudget_currencyCode));
+        unittest.expect(queryMap["minMonthlyBudget.currencyCode"].first,
+            unittest.equals(arg_minMonthlyBudget_currencyCode));
+        unittest.expect(queryMap["requestMetadata.userOverrides.userId"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_userId));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(
+            queryMap["address"].first, unittest.equals(arg_address));
+        unittest.expect(queryMap["requestMetadata.locale"].first,
+            unittest.equals(arg_requestMetadata_locale));
+        unittest.expect(queryMap["minMonthlyBudget.units"].first,
+            unittest.equals(arg_minMonthlyBudget_units));
+        unittest.expect(
+            core.int.parse(queryMap["maxMonthlyBudget.nanos"].first),
+            unittest.equals(arg_maxMonthlyBudget_nanos));
+        unittest.expect(queryMap["services"], unittest.equals(arg_services));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSourceId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSourceId));
+        unittest.expect(queryMap["maxMonthlyBudget.units"].first,
+            unittest.equals(arg_maxMonthlyBudget_units));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSubId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSubId));
+        unittest.expect(
+            core.int.parse(queryMap["minMonthlyBudget.nanos"].first),
+            unittest.equals(arg_minMonthlyBudget_nanos));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListCompaniesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              requestMetadata_partnersSessionId:
+                  arg_requestMetadata_partnersSessionId,
+              companyName: arg_companyName,
+              pageToken: arg_pageToken,
+              industries: arg_industries,
+              websiteUrl: arg_websiteUrl,
+              gpsMotivations: arg_gpsMotivations,
+              languageCodes: arg_languageCodes,
+              pageSize: arg_pageSize,
+              requestMetadata_userOverrides_ipAddress:
+                  arg_requestMetadata_userOverrides_ipAddress,
+              requestMetadata_experimentIds: arg_requestMetadata_experimentIds,
+              orderBy: arg_orderBy,
+              specializations: arg_specializations,
+              maxMonthlyBudget_currencyCode: arg_maxMonthlyBudget_currencyCode,
+              minMonthlyBudget_currencyCode: arg_minMonthlyBudget_currencyCode,
+              requestMetadata_userOverrides_userId:
+                  arg_requestMetadata_userOverrides_userId,
+              view: arg_view,
+              address: arg_address,
+              requestMetadata_locale: arg_requestMetadata_locale,
+              minMonthlyBudget_units: arg_minMonthlyBudget_units,
+              maxMonthlyBudget_nanos: arg_maxMonthlyBudget_nanos,
+              services: arg_services,
+              requestMetadata_trafficSource_trafficSourceId:
+                  arg_requestMetadata_trafficSource_trafficSourceId,
+              maxMonthlyBudget_units: arg_maxMonthlyBudget_units,
+              requestMetadata_trafficSource_trafficSubId:
+                  arg_requestMetadata_trafficSource_trafficSubId,
+              minMonthlyBudget_nanos: arg_minMonthlyBudget_nanos,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListCompaniesResponse response) {
+        checkListCompaniesResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CompaniesLeadsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.CompaniesLeadsResourceApi res =
+          new api.PartnersApi(mock).companies.leads;
+      var arg_request = buildCreateLeadRequest();
+      var arg_companyId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreateLeadRequest.fromJson(json);
+        checkCreateLeadRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("v2/companies/"));
+        pathOffset += 13;
+        index = path.indexOf("/leads", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_companyId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/leads"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreateLeadResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_companyId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CreateLeadResponse response) {
+        checkCreateLeadResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ExamsResourceApi", () {
+    unittest.test("method--getToken", () {
+      var mock = new HttpServerMock();
+      api.ExamsResourceApi res = new api.PartnersApi(mock).exams;
+      var arg_examType = "foo";
+      var arg_requestMetadata_partnersSessionId = "foo";
+      var arg_requestMetadata_userOverrides_userId = "foo";
+      var arg_requestMetadata_trafficSource_trafficSourceId = "foo";
+      var arg_requestMetadata_locale = "foo";
+      var arg_requestMetadata_userOverrides_ipAddress = "foo";
+      var arg_requestMetadata_experimentIds = buildUnnamed2050();
+      var arg_requestMetadata_trafficSource_trafficSubId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("v2/exams/"));
+        pathOffset += 9;
+        index = path.indexOf("/token", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_examType"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/token"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["requestMetadata.partnersSessionId"].first,
+            unittest.equals(arg_requestMetadata_partnersSessionId));
+        unittest.expect(queryMap["requestMetadata.userOverrides.userId"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_userId));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSourceId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSourceId));
+        unittest.expect(queryMap["requestMetadata.locale"].first,
+            unittest.equals(arg_requestMetadata_locale));
+        unittest.expect(
+            queryMap["requestMetadata.userOverrides.ipAddress"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_ipAddress));
+        unittest.expect(queryMap["requestMetadata.experimentIds"],
+            unittest.equals(arg_requestMetadata_experimentIds));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSubId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSubId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildExamToken());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getToken(arg_examType,
+              requestMetadata_partnersSessionId:
+                  arg_requestMetadata_partnersSessionId,
+              requestMetadata_userOverrides_userId:
+                  arg_requestMetadata_userOverrides_userId,
+              requestMetadata_trafficSource_trafficSourceId:
+                  arg_requestMetadata_trafficSource_trafficSourceId,
+              requestMetadata_locale: arg_requestMetadata_locale,
+              requestMetadata_userOverrides_ipAddress:
+                  arg_requestMetadata_userOverrides_ipAddress,
+              requestMetadata_experimentIds: arg_requestMetadata_experimentIds,
+              requestMetadata_trafficSource_trafficSubId:
+                  arg_requestMetadata_trafficSource_trafficSubId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ExamToken response) {
+        checkExamToken(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-LeadsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.LeadsResourceApi res = new api.PartnersApi(mock).leads;
+      var arg_requestMetadata_locale = "foo";
+      var arg_requestMetadata_userOverrides_ipAddress = "foo";
+      var arg_requestMetadata_experimentIds = buildUnnamed2051();
+      var arg_requestMetadata_trafficSource_trafficSubId = "foo";
+      var arg_orderBy = "foo";
+      var arg_requestMetadata_userOverrides_userId = "foo";
+      var arg_requestMetadata_partnersSessionId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_requestMetadata_trafficSource_trafficSourceId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2/leads"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["requestMetadata.locale"].first,
+            unittest.equals(arg_requestMetadata_locale));
+        unittest.expect(
+            queryMap["requestMetadata.userOverrides.ipAddress"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_ipAddress));
+        unittest.expect(queryMap["requestMetadata.experimentIds"],
+            unittest.equals(arg_requestMetadata_experimentIds));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSubId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSubId));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(queryMap["requestMetadata.userOverrides.userId"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_userId));
+        unittest.expect(queryMap["requestMetadata.partnersSessionId"].first,
+            unittest.equals(arg_requestMetadata_partnersSessionId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSourceId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSourceId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListLeadsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              requestMetadata_locale: arg_requestMetadata_locale,
+              requestMetadata_userOverrides_ipAddress:
+                  arg_requestMetadata_userOverrides_ipAddress,
+              requestMetadata_experimentIds: arg_requestMetadata_experimentIds,
+              requestMetadata_trafficSource_trafficSubId:
+                  arg_requestMetadata_trafficSource_trafficSubId,
+              orderBy: arg_orderBy,
+              requestMetadata_userOverrides_userId:
+                  arg_requestMetadata_userOverrides_userId,
+              requestMetadata_partnersSessionId:
+                  arg_requestMetadata_partnersSessionId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              requestMetadata_trafficSource_trafficSourceId:
+                  arg_requestMetadata_trafficSource_trafficSourceId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListLeadsResponse response) {
+        checkListLeadsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-OffersResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.OffersResourceApi res = new api.PartnersApi(mock).offers;
+      var arg_requestMetadata_trafficSource_trafficSourceId = "foo";
+      var arg_requestMetadata_locale = "foo";
+      var arg_requestMetadata_userOverrides_ipAddress = "foo";
+      var arg_requestMetadata_experimentIds = buildUnnamed2052();
+      var arg_requestMetadata_trafficSource_trafficSubId = "foo";
+      var arg_requestMetadata_userOverrides_userId = "foo";
+      var arg_requestMetadata_partnersSessionId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("v2/offers"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSourceId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSourceId));
+        unittest.expect(queryMap["requestMetadata.locale"].first,
+            unittest.equals(arg_requestMetadata_locale));
+        unittest.expect(
+            queryMap["requestMetadata.userOverrides.ipAddress"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_ipAddress));
+        unittest.expect(queryMap["requestMetadata.experimentIds"],
+            unittest.equals(arg_requestMetadata_experimentIds));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSubId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSubId));
+        unittest.expect(queryMap["requestMetadata.userOverrides.userId"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_userId));
+        unittest.expect(queryMap["requestMetadata.partnersSessionId"].first,
+            unittest.equals(arg_requestMetadata_partnersSessionId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListOffersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              requestMetadata_trafficSource_trafficSourceId:
+                  arg_requestMetadata_trafficSource_trafficSourceId,
+              requestMetadata_locale: arg_requestMetadata_locale,
+              requestMetadata_userOverrides_ipAddress:
+                  arg_requestMetadata_userOverrides_ipAddress,
+              requestMetadata_experimentIds: arg_requestMetadata_experimentIds,
+              requestMetadata_trafficSource_trafficSubId:
+                  arg_requestMetadata_trafficSource_trafficSubId,
+              requestMetadata_userOverrides_userId:
+                  arg_requestMetadata_userOverrides_userId,
+              requestMetadata_partnersSessionId:
+                  arg_requestMetadata_partnersSessionId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListOffersResponse response) {
+        checkListOffersResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-OffersHistoryResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.OffersHistoryResourceApi res =
+          new api.PartnersApi(mock).offers.history;
+      var arg_pageSize = 42;
+      var arg_requestMetadata_trafficSource_trafficSourceId = "foo";
+      var arg_requestMetadata_locale = "foo";
+      var arg_requestMetadata_userOverrides_ipAddress = "foo";
+      var arg_requestMetadata_experimentIds = buildUnnamed2053();
+      var arg_entireCompany = true;
+      var arg_orderBy = "foo";
+      var arg_requestMetadata_trafficSource_trafficSubId = "foo";
+      var arg_requestMetadata_partnersSessionId = "foo";
+      var arg_requestMetadata_userOverrides_userId = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("v2/offers/history"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSourceId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSourceId));
+        unittest.expect(queryMap["requestMetadata.locale"].first,
+            unittest.equals(arg_requestMetadata_locale));
+        unittest.expect(
+            queryMap["requestMetadata.userOverrides.ipAddress"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_ipAddress));
+        unittest.expect(queryMap["requestMetadata.experimentIds"],
+            unittest.equals(arg_requestMetadata_experimentIds));
+        unittest.expect(queryMap["entireCompany"].first,
+            unittest.equals("$arg_entireCompany"));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSubId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSubId));
+        unittest.expect(queryMap["requestMetadata.partnersSessionId"].first,
+            unittest.equals(arg_requestMetadata_partnersSessionId));
+        unittest.expect(queryMap["requestMetadata.userOverrides.userId"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_userId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListOffersHistoryResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              pageSize: arg_pageSize,
+              requestMetadata_trafficSource_trafficSourceId:
+                  arg_requestMetadata_trafficSource_trafficSourceId,
+              requestMetadata_locale: arg_requestMetadata_locale,
+              requestMetadata_userOverrides_ipAddress:
+                  arg_requestMetadata_userOverrides_ipAddress,
+              requestMetadata_experimentIds: arg_requestMetadata_experimentIds,
+              entireCompany: arg_entireCompany,
+              orderBy: arg_orderBy,
+              requestMetadata_trafficSource_trafficSubId:
+                  arg_requestMetadata_trafficSource_trafficSubId,
+              requestMetadata_partnersSessionId:
+                  arg_requestMetadata_partnersSessionId,
+              requestMetadata_userOverrides_userId:
+                  arg_requestMetadata_userOverrides_userId,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.ListOffersHistoryResponse response) {
+        checkListOffersHistoryResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UserEventsResourceApi", () {
+    unittest.test("method--log", () {
+      var mock = new HttpServerMock();
+      api.UserEventsResourceApi res = new api.PartnersApi(mock).userEvents;
+      var arg_request = buildLogUserEventRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.LogUserEventRequest.fromJson(json);
+        checkLogUserEventRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("v2/userEvents:log"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLogUserEventResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .log(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.LogUserEventResponse response) {
+        checkLogUserEventResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UserStatesResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.UserStatesResourceApi res = new api.PartnersApi(mock).userStates;
+      var arg_requestMetadata_userOverrides_userId = "foo";
+      var arg_requestMetadata_partnersSessionId = "foo";
+      var arg_requestMetadata_trafficSource_trafficSourceId = "foo";
+      var arg_requestMetadata_locale = "foo";
+      var arg_requestMetadata_userOverrides_ipAddress = "foo";
+      var arg_requestMetadata_experimentIds = buildUnnamed2054();
+      var arg_requestMetadata_trafficSource_trafficSubId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("v2/userStates"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["requestMetadata.userOverrides.userId"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_userId));
+        unittest.expect(queryMap["requestMetadata.partnersSessionId"].first,
+            unittest.equals(arg_requestMetadata_partnersSessionId));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSourceId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSourceId));
+        unittest.expect(queryMap["requestMetadata.locale"].first,
+            unittest.equals(arg_requestMetadata_locale));
+        unittest.expect(
+            queryMap["requestMetadata.userOverrides.ipAddress"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_ipAddress));
+        unittest.expect(queryMap["requestMetadata.experimentIds"],
+            unittest.equals(arg_requestMetadata_experimentIds));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSubId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSubId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListUserStatesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              requestMetadata_userOverrides_userId:
+                  arg_requestMetadata_userOverrides_userId,
+              requestMetadata_partnersSessionId:
+                  arg_requestMetadata_partnersSessionId,
+              requestMetadata_trafficSource_trafficSourceId:
+                  arg_requestMetadata_trafficSource_trafficSourceId,
+              requestMetadata_locale: arg_requestMetadata_locale,
+              requestMetadata_userOverrides_ipAddress:
+                  arg_requestMetadata_userOverrides_ipAddress,
+              requestMetadata_experimentIds: arg_requestMetadata_experimentIds,
+              requestMetadata_trafficSource_trafficSubId:
+                  arg_requestMetadata_trafficSource_trafficSubId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListUserStatesResponse response) {
+        checkListUserStatesResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersResourceApi", () {
+    unittest.test("method--createCompanyRelation", () {
+      var mock = new HttpServerMock();
+      api.UsersResourceApi res = new api.PartnersApi(mock).users;
+      var arg_request = buildCompanyRelation();
+      var arg_userId = "foo";
+      var arg_requestMetadata_experimentIds = buildUnnamed2055();
+      var arg_requestMetadata_trafficSource_trafficSubId = "foo";
+      var arg_requestMetadata_partnersSessionId = "foo";
+      var arg_requestMetadata_userOverrides_userId = "foo";
+      var arg_requestMetadata_trafficSource_trafficSourceId = "foo";
+      var arg_requestMetadata_locale = "foo";
+      var arg_requestMetadata_userOverrides_ipAddress = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CompanyRelation.fromJson(json);
+        checkCompanyRelation(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("v2/users/"));
+        pathOffset += 9;
+        index = path.indexOf("/companyRelation", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/companyRelation"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["requestMetadata.experimentIds"],
+            unittest.equals(arg_requestMetadata_experimentIds));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSubId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSubId));
+        unittest.expect(queryMap["requestMetadata.partnersSessionId"].first,
+            unittest.equals(arg_requestMetadata_partnersSessionId));
+        unittest.expect(queryMap["requestMetadata.userOverrides.userId"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_userId));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSourceId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSourceId));
+        unittest.expect(queryMap["requestMetadata.locale"].first,
+            unittest.equals(arg_requestMetadata_locale));
+        unittest.expect(
+            queryMap["requestMetadata.userOverrides.ipAddress"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_ipAddress));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCompanyRelation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .createCompanyRelation(arg_request, arg_userId,
+              requestMetadata_experimentIds: arg_requestMetadata_experimentIds,
+              requestMetadata_trafficSource_trafficSubId:
+                  arg_requestMetadata_trafficSource_trafficSubId,
+              requestMetadata_partnersSessionId:
+                  arg_requestMetadata_partnersSessionId,
+              requestMetadata_userOverrides_userId:
+                  arg_requestMetadata_userOverrides_userId,
+              requestMetadata_trafficSource_trafficSourceId:
+                  arg_requestMetadata_trafficSource_trafficSourceId,
+              requestMetadata_locale: arg_requestMetadata_locale,
+              requestMetadata_userOverrides_ipAddress:
+                  arg_requestMetadata_userOverrides_ipAddress,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CompanyRelation response) {
+        checkCompanyRelation(response);
+      })));
+    });
+
+    unittest.test("method--deleteCompanyRelation", () {
+      var mock = new HttpServerMock();
+      api.UsersResourceApi res = new api.PartnersApi(mock).users;
+      var arg_userId = "foo";
+      var arg_requestMetadata_experimentIds = buildUnnamed2056();
+      var arg_requestMetadata_trafficSource_trafficSubId = "foo";
+      var arg_requestMetadata_userOverrides_userId = "foo";
+      var arg_requestMetadata_partnersSessionId = "foo";
+      var arg_requestMetadata_trafficSource_trafficSourceId = "foo";
+      var arg_requestMetadata_locale = "foo";
+      var arg_requestMetadata_userOverrides_ipAddress = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("v2/users/"));
+        pathOffset += 9;
+        index = path.indexOf("/companyRelation", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/companyRelation"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["requestMetadata.experimentIds"],
+            unittest.equals(arg_requestMetadata_experimentIds));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSubId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSubId));
+        unittest.expect(queryMap["requestMetadata.userOverrides.userId"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_userId));
+        unittest.expect(queryMap["requestMetadata.partnersSessionId"].first,
+            unittest.equals(arg_requestMetadata_partnersSessionId));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSourceId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSourceId));
+        unittest.expect(queryMap["requestMetadata.locale"].first,
+            unittest.equals(arg_requestMetadata_locale));
+        unittest.expect(
+            queryMap["requestMetadata.userOverrides.ipAddress"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_ipAddress));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .deleteCompanyRelation(arg_userId,
+              requestMetadata_experimentIds: arg_requestMetadata_experimentIds,
+              requestMetadata_trafficSource_trafficSubId:
+                  arg_requestMetadata_trafficSource_trafficSubId,
+              requestMetadata_userOverrides_userId:
+                  arg_requestMetadata_userOverrides_userId,
+              requestMetadata_partnersSessionId:
+                  arg_requestMetadata_partnersSessionId,
+              requestMetadata_trafficSource_trafficSourceId:
+                  arg_requestMetadata_trafficSource_trafficSourceId,
+              requestMetadata_locale: arg_requestMetadata_locale,
+              requestMetadata_userOverrides_ipAddress:
+                  arg_requestMetadata_userOverrides_ipAddress,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UsersResourceApi res = new api.PartnersApi(mock).users;
+      var arg_userId = "foo";
+      var arg_requestMetadata_userOverrides_userId = "foo";
+      var arg_requestMetadata_partnersSessionId = "foo";
+      var arg_userView = "foo";
+      var arg_requestMetadata_trafficSource_trafficSourceId = "foo";
+      var arg_requestMetadata_locale = "foo";
+      var arg_requestMetadata_userOverrides_ipAddress = "foo";
+      var arg_requestMetadata_experimentIds = buildUnnamed2057();
+      var arg_requestMetadata_trafficSource_trafficSubId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("v2/users/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["requestMetadata.userOverrides.userId"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_userId));
+        unittest.expect(queryMap["requestMetadata.partnersSessionId"].first,
+            unittest.equals(arg_requestMetadata_partnersSessionId));
+        unittest.expect(
+            queryMap["userView"].first, unittest.equals(arg_userView));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSourceId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSourceId));
+        unittest.expect(queryMap["requestMetadata.locale"].first,
+            unittest.equals(arg_requestMetadata_locale));
+        unittest.expect(
+            queryMap["requestMetadata.userOverrides.ipAddress"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_ipAddress));
+        unittest.expect(queryMap["requestMetadata.experimentIds"],
+            unittest.equals(arg_requestMetadata_experimentIds));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSubId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSubId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUser());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId,
+              requestMetadata_userOverrides_userId:
+                  arg_requestMetadata_userOverrides_userId,
+              requestMetadata_partnersSessionId:
+                  arg_requestMetadata_partnersSessionId,
+              userView: arg_userView,
+              requestMetadata_trafficSource_trafficSourceId:
+                  arg_requestMetadata_trafficSource_trafficSourceId,
+              requestMetadata_locale: arg_requestMetadata_locale,
+              requestMetadata_userOverrides_ipAddress:
+                  arg_requestMetadata_userOverrides_ipAddress,
+              requestMetadata_experimentIds: arg_requestMetadata_experimentIds,
+              requestMetadata_trafficSource_trafficSubId:
+                  arg_requestMetadata_trafficSource_trafficSubId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.User response) {
+        checkUser(response);
+      })));
+    });
+
+    unittest.test("method--updateProfile", () {
+      var mock = new HttpServerMock();
+      api.UsersResourceApi res = new api.PartnersApi(mock).users;
+      var arg_request = buildUserProfile();
+      var arg_requestMetadata_userOverrides_userId = "foo";
+      var arg_requestMetadata_partnersSessionId = "foo";
+      var arg_requestMetadata_trafficSource_trafficSourceId = "foo";
+      var arg_requestMetadata_locale = "foo";
+      var arg_requestMetadata_userOverrides_ipAddress = "foo";
+      var arg_requestMetadata_experimentIds = buildUnnamed2058();
+      var arg_requestMetadata_trafficSource_trafficSubId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UserProfile.fromJson(json);
+        checkUserProfile(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v2/users/profile"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["requestMetadata.userOverrides.userId"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_userId));
+        unittest.expect(queryMap["requestMetadata.partnersSessionId"].first,
+            unittest.equals(arg_requestMetadata_partnersSessionId));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSourceId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSourceId));
+        unittest.expect(queryMap["requestMetadata.locale"].first,
+            unittest.equals(arg_requestMetadata_locale));
+        unittest.expect(
+            queryMap["requestMetadata.userOverrides.ipAddress"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_ipAddress));
+        unittest.expect(queryMap["requestMetadata.experimentIds"],
+            unittest.equals(arg_requestMetadata_experimentIds));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSubId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSubId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserProfile());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .updateProfile(arg_request,
+              requestMetadata_userOverrides_userId:
+                  arg_requestMetadata_userOverrides_userId,
+              requestMetadata_partnersSessionId:
+                  arg_requestMetadata_partnersSessionId,
+              requestMetadata_trafficSource_trafficSourceId:
+                  arg_requestMetadata_trafficSource_trafficSourceId,
+              requestMetadata_locale: arg_requestMetadata_locale,
+              requestMetadata_userOverrides_ipAddress:
+                  arg_requestMetadata_userOverrides_ipAddress,
+              requestMetadata_experimentIds: arg_requestMetadata_experimentIds,
+              requestMetadata_trafficSource_trafficSubId:
+                  arg_requestMetadata_trafficSource_trafficSubId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserProfile response) {
+        checkUserProfile(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-V2ResourceApi", () {
+    unittest.test("method--getPartnersstatus", () {
+      var mock = new HttpServerMock();
+      api.V2ResourceApi res = new api.PartnersApi(mock).v2;
+      var arg_requestMetadata_trafficSource_trafficSourceId = "foo";
+      var arg_requestMetadata_locale = "foo";
+      var arg_requestMetadata_userOverrides_ipAddress = "foo";
+      var arg_requestMetadata_experimentIds = buildUnnamed2059();
+      var arg_requestMetadata_trafficSource_trafficSubId = "foo";
+      var arg_requestMetadata_userOverrides_userId = "foo";
+      var arg_requestMetadata_partnersSessionId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("v2/partnersstatus"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSourceId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSourceId));
+        unittest.expect(queryMap["requestMetadata.locale"].first,
+            unittest.equals(arg_requestMetadata_locale));
+        unittest.expect(
+            queryMap["requestMetadata.userOverrides.ipAddress"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_ipAddress));
+        unittest.expect(queryMap["requestMetadata.experimentIds"],
+            unittest.equals(arg_requestMetadata_experimentIds));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSubId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSubId));
+        unittest.expect(queryMap["requestMetadata.userOverrides.userId"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_userId));
+        unittest.expect(queryMap["requestMetadata.partnersSessionId"].first,
+            unittest.equals(arg_requestMetadata_partnersSessionId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGetPartnersStatusResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getPartnersstatus(
+              requestMetadata_trafficSource_trafficSourceId:
+                  arg_requestMetadata_trafficSource_trafficSourceId,
+              requestMetadata_locale: arg_requestMetadata_locale,
+              requestMetadata_userOverrides_ipAddress:
+                  arg_requestMetadata_userOverrides_ipAddress,
+              requestMetadata_experimentIds: arg_requestMetadata_experimentIds,
+              requestMetadata_trafficSource_trafficSubId:
+                  arg_requestMetadata_trafficSource_trafficSubId,
+              requestMetadata_userOverrides_userId:
+                  arg_requestMetadata_userOverrides_userId,
+              requestMetadata_partnersSessionId:
+                  arg_requestMetadata_partnersSessionId,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.GetPartnersStatusResponse response) {
+        checkGetPartnersStatusResponse(response);
+      })));
+    });
+
+    unittest.test("method--updateCompanies", () {
+      var mock = new HttpServerMock();
+      api.V2ResourceApi res = new api.PartnersApi(mock).v2;
+      var arg_request = buildCompany();
+      var arg_updateMask = "foo";
+      var arg_requestMetadata_experimentIds = buildUnnamed2060();
+      var arg_requestMetadata_trafficSource_trafficSubId = "foo";
+      var arg_requestMetadata_partnersSessionId = "foo";
+      var arg_requestMetadata_userOverrides_userId = "foo";
+      var arg_requestMetadata_trafficSource_trafficSourceId = "foo";
+      var arg_requestMetadata_locale = "foo";
+      var arg_requestMetadata_userOverrides_ipAddress = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Company.fromJson(json);
+        checkCompany(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("v2/companies"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["requestMetadata.experimentIds"],
+            unittest.equals(arg_requestMetadata_experimentIds));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSubId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSubId));
+        unittest.expect(queryMap["requestMetadata.partnersSessionId"].first,
+            unittest.equals(arg_requestMetadata_partnersSessionId));
+        unittest.expect(queryMap["requestMetadata.userOverrides.userId"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_userId));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSourceId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSourceId));
+        unittest.expect(queryMap["requestMetadata.locale"].first,
+            unittest.equals(arg_requestMetadata_locale));
+        unittest.expect(
+            queryMap["requestMetadata.userOverrides.ipAddress"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_ipAddress));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCompany());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .updateCompanies(arg_request,
+              updateMask: arg_updateMask,
+              requestMetadata_experimentIds: arg_requestMetadata_experimentIds,
+              requestMetadata_trafficSource_trafficSubId:
+                  arg_requestMetadata_trafficSource_trafficSubId,
+              requestMetadata_partnersSessionId:
+                  arg_requestMetadata_partnersSessionId,
+              requestMetadata_userOverrides_userId:
+                  arg_requestMetadata_userOverrides_userId,
+              requestMetadata_trafficSource_trafficSourceId:
+                  arg_requestMetadata_trafficSource_trafficSourceId,
+              requestMetadata_locale: arg_requestMetadata_locale,
+              requestMetadata_userOverrides_ipAddress:
+                  arg_requestMetadata_userOverrides_ipAddress,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Company response) {
+        checkCompany(response);
+      })));
+    });
+
+    unittest.test("method--updateLeads", () {
+      var mock = new HttpServerMock();
+      api.V2ResourceApi res = new api.PartnersApi(mock).v2;
+      var arg_request = buildLead();
+      var arg_requestMetadata_userOverrides_userId = "foo";
+      var arg_requestMetadata_partnersSessionId = "foo";
+      var arg_requestMetadata_trafficSource_trafficSourceId = "foo";
+      var arg_requestMetadata_locale = "foo";
+      var arg_requestMetadata_userOverrides_ipAddress = "foo";
+      var arg_updateMask = "foo";
+      var arg_requestMetadata_experimentIds = buildUnnamed2061();
+      var arg_requestMetadata_trafficSource_trafficSubId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Lead.fromJson(json);
+        checkLead(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2/leads"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["requestMetadata.userOverrides.userId"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_userId));
+        unittest.expect(queryMap["requestMetadata.partnersSessionId"].first,
+            unittest.equals(arg_requestMetadata_partnersSessionId));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSourceId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSourceId));
+        unittest.expect(queryMap["requestMetadata.locale"].first,
+            unittest.equals(arg_requestMetadata_locale));
+        unittest.expect(
+            queryMap["requestMetadata.userOverrides.ipAddress"].first,
+            unittest.equals(arg_requestMetadata_userOverrides_ipAddress));
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["requestMetadata.experimentIds"],
+            unittest.equals(arg_requestMetadata_experimentIds));
+        unittest.expect(
+            queryMap["requestMetadata.trafficSource.trafficSubId"].first,
+            unittest.equals(arg_requestMetadata_trafficSource_trafficSubId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLead());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .updateLeads(arg_request,
+              requestMetadata_userOverrides_userId:
+                  arg_requestMetadata_userOverrides_userId,
+              requestMetadata_partnersSessionId:
+                  arg_requestMetadata_partnersSessionId,
+              requestMetadata_trafficSource_trafficSourceId:
+                  arg_requestMetadata_trafficSource_trafficSourceId,
+              requestMetadata_locale: arg_requestMetadata_locale,
+              requestMetadata_userOverrides_ipAddress:
+                  arg_requestMetadata_userOverrides_ipAddress,
+              updateMask: arg_updateMask,
+              requestMetadata_experimentIds: arg_requestMetadata_experimentIds,
+              requestMetadata_trafficSource_trafficSubId:
+                  arg_requestMetadata_trafficSource_trafficSubId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Lead response) {
+        checkLead(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/people/v1_test.dart b/generated/googleapis/test/people/v1_test.dart
new file mode 100644
index 0000000..e5ffb69
--- /dev/null
+++ b/generated/googleapis/test/people/v1_test.dart
@@ -0,0 +1,3029 @@
+library googleapis.people.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/people/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAddress = 0;
+buildAddress() {
+  var o = new api.Address();
+  buildCounterAddress++;
+  if (buildCounterAddress < 3) {
+    o.city = "foo";
+    o.country = "foo";
+    o.countryCode = "foo";
+    o.extendedAddress = "foo";
+    o.formattedType = "foo";
+    o.formattedValue = "foo";
+    o.metadata = buildFieldMetadata();
+    o.poBox = "foo";
+    o.postalCode = "foo";
+    o.region = "foo";
+    o.streetAddress = "foo";
+    o.type = "foo";
+  }
+  buildCounterAddress--;
+  return o;
+}
+
+checkAddress(api.Address o) {
+  buildCounterAddress++;
+  if (buildCounterAddress < 3) {
+    unittest.expect(o.city, unittest.equals('foo'));
+    unittest.expect(o.country, unittest.equals('foo'));
+    unittest.expect(o.countryCode, unittest.equals('foo'));
+    unittest.expect(o.extendedAddress, unittest.equals('foo'));
+    unittest.expect(o.formattedType, unittest.equals('foo'));
+    unittest.expect(o.formattedValue, unittest.equals('foo'));
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.poBox, unittest.equals('foo'));
+    unittest.expect(o.postalCode, unittest.equals('foo'));
+    unittest.expect(o.region, unittest.equals('foo'));
+    unittest.expect(o.streetAddress, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterAddress--;
+}
+
+core.int buildCounterAgeRangeType = 0;
+buildAgeRangeType() {
+  var o = new api.AgeRangeType();
+  buildCounterAgeRangeType++;
+  if (buildCounterAgeRangeType < 3) {
+    o.ageRange = "foo";
+    o.metadata = buildFieldMetadata();
+  }
+  buildCounterAgeRangeType--;
+  return o;
+}
+
+checkAgeRangeType(api.AgeRangeType o) {
+  buildCounterAgeRangeType++;
+  if (buildCounterAgeRangeType < 3) {
+    unittest.expect(o.ageRange, unittest.equals('foo'));
+    checkFieldMetadata(o.metadata);
+  }
+  buildCounterAgeRangeType--;
+}
+
+buildUnnamed1482() {
+  var o = new core.List<api.ContactGroupResponse>();
+  o.add(buildContactGroupResponse());
+  o.add(buildContactGroupResponse());
+  return o;
+}
+
+checkUnnamed1482(core.List<api.ContactGroupResponse> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContactGroupResponse(o[0]);
+  checkContactGroupResponse(o[1]);
+}
+
+core.int buildCounterBatchGetContactGroupsResponse = 0;
+buildBatchGetContactGroupsResponse() {
+  var o = new api.BatchGetContactGroupsResponse();
+  buildCounterBatchGetContactGroupsResponse++;
+  if (buildCounterBatchGetContactGroupsResponse < 3) {
+    o.responses = buildUnnamed1482();
+  }
+  buildCounterBatchGetContactGroupsResponse--;
+  return o;
+}
+
+checkBatchGetContactGroupsResponse(api.BatchGetContactGroupsResponse o) {
+  buildCounterBatchGetContactGroupsResponse++;
+  if (buildCounterBatchGetContactGroupsResponse < 3) {
+    checkUnnamed1482(o.responses);
+  }
+  buildCounterBatchGetContactGroupsResponse--;
+}
+
+core.int buildCounterBiography = 0;
+buildBiography() {
+  var o = new api.Biography();
+  buildCounterBiography++;
+  if (buildCounterBiography < 3) {
+    o.contentType = "foo";
+    o.metadata = buildFieldMetadata();
+    o.value = "foo";
+  }
+  buildCounterBiography--;
+  return o;
+}
+
+checkBiography(api.Biography o) {
+  buildCounterBiography++;
+  if (buildCounterBiography < 3) {
+    unittest.expect(o.contentType, unittest.equals('foo'));
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterBiography--;
+}
+
+core.int buildCounterBirthday = 0;
+buildBirthday() {
+  var o = new api.Birthday();
+  buildCounterBirthday++;
+  if (buildCounterBirthday < 3) {
+    o.date = buildDate();
+    o.metadata = buildFieldMetadata();
+    o.text = "foo";
+  }
+  buildCounterBirthday--;
+  return o;
+}
+
+checkBirthday(api.Birthday o) {
+  buildCounterBirthday++;
+  if (buildCounterBirthday < 3) {
+    checkDate(o.date);
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.text, unittest.equals('foo'));
+  }
+  buildCounterBirthday--;
+}
+
+core.int buildCounterBraggingRights = 0;
+buildBraggingRights() {
+  var o = new api.BraggingRights();
+  buildCounterBraggingRights++;
+  if (buildCounterBraggingRights < 3) {
+    o.metadata = buildFieldMetadata();
+    o.value = "foo";
+  }
+  buildCounterBraggingRights--;
+  return o;
+}
+
+checkBraggingRights(api.BraggingRights o) {
+  buildCounterBraggingRights++;
+  if (buildCounterBraggingRights < 3) {
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterBraggingRights--;
+}
+
+buildUnnamed1483() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1483(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterContactGroup = 0;
+buildContactGroup() {
+  var o = new api.ContactGroup();
+  buildCounterContactGroup++;
+  if (buildCounterContactGroup < 3) {
+    o.etag = "foo";
+    o.formattedName = "foo";
+    o.groupType = "foo";
+    o.memberCount = 42;
+    o.memberResourceNames = buildUnnamed1483();
+    o.metadata = buildContactGroupMetadata();
+    o.name = "foo";
+    o.resourceName = "foo";
+  }
+  buildCounterContactGroup--;
+  return o;
+}
+
+checkContactGroup(api.ContactGroup o) {
+  buildCounterContactGroup++;
+  if (buildCounterContactGroup < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.formattedName, unittest.equals('foo'));
+    unittest.expect(o.groupType, unittest.equals('foo'));
+    unittest.expect(o.memberCount, unittest.equals(42));
+    checkUnnamed1483(o.memberResourceNames);
+    checkContactGroupMetadata(o.metadata);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.resourceName, unittest.equals('foo'));
+  }
+  buildCounterContactGroup--;
+}
+
+core.int buildCounterContactGroupMembership = 0;
+buildContactGroupMembership() {
+  var o = new api.ContactGroupMembership();
+  buildCounterContactGroupMembership++;
+  if (buildCounterContactGroupMembership < 3) {
+    o.contactGroupId = "foo";
+  }
+  buildCounterContactGroupMembership--;
+  return o;
+}
+
+checkContactGroupMembership(api.ContactGroupMembership o) {
+  buildCounterContactGroupMembership++;
+  if (buildCounterContactGroupMembership < 3) {
+    unittest.expect(o.contactGroupId, unittest.equals('foo'));
+  }
+  buildCounterContactGroupMembership--;
+}
+
+core.int buildCounterContactGroupMetadata = 0;
+buildContactGroupMetadata() {
+  var o = new api.ContactGroupMetadata();
+  buildCounterContactGroupMetadata++;
+  if (buildCounterContactGroupMetadata < 3) {
+    o.deleted = true;
+    o.updateTime = "foo";
+  }
+  buildCounterContactGroupMetadata--;
+  return o;
+}
+
+checkContactGroupMetadata(api.ContactGroupMetadata o) {
+  buildCounterContactGroupMetadata++;
+  if (buildCounterContactGroupMetadata < 3) {
+    unittest.expect(o.deleted, unittest.isTrue);
+    unittest.expect(o.updateTime, unittest.equals('foo'));
+  }
+  buildCounterContactGroupMetadata--;
+}
+
+core.int buildCounterContactGroupResponse = 0;
+buildContactGroupResponse() {
+  var o = new api.ContactGroupResponse();
+  buildCounterContactGroupResponse++;
+  if (buildCounterContactGroupResponse < 3) {
+    o.contactGroup = buildContactGroup();
+    o.requestedResourceName = "foo";
+    o.status = buildStatus();
+  }
+  buildCounterContactGroupResponse--;
+  return o;
+}
+
+checkContactGroupResponse(api.ContactGroupResponse o) {
+  buildCounterContactGroupResponse++;
+  if (buildCounterContactGroupResponse < 3) {
+    checkContactGroup(o.contactGroup);
+    unittest.expect(o.requestedResourceName, unittest.equals('foo'));
+    checkStatus(o.status);
+  }
+  buildCounterContactGroupResponse--;
+}
+
+core.int buildCounterCoverPhoto = 0;
+buildCoverPhoto() {
+  var o = new api.CoverPhoto();
+  buildCounterCoverPhoto++;
+  if (buildCounterCoverPhoto < 3) {
+    o.default_ = true;
+    o.metadata = buildFieldMetadata();
+    o.url = "foo";
+  }
+  buildCounterCoverPhoto--;
+  return o;
+}
+
+checkCoverPhoto(api.CoverPhoto o) {
+  buildCounterCoverPhoto++;
+  if (buildCounterCoverPhoto < 3) {
+    unittest.expect(o.default_, unittest.isTrue);
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterCoverPhoto--;
+}
+
+core.int buildCounterCreateContactGroupRequest = 0;
+buildCreateContactGroupRequest() {
+  var o = new api.CreateContactGroupRequest();
+  buildCounterCreateContactGroupRequest++;
+  if (buildCounterCreateContactGroupRequest < 3) {
+    o.contactGroup = buildContactGroup();
+  }
+  buildCounterCreateContactGroupRequest--;
+  return o;
+}
+
+checkCreateContactGroupRequest(api.CreateContactGroupRequest o) {
+  buildCounterCreateContactGroupRequest++;
+  if (buildCounterCreateContactGroupRequest < 3) {
+    checkContactGroup(o.contactGroup);
+  }
+  buildCounterCreateContactGroupRequest--;
+}
+
+core.int buildCounterDate = 0;
+buildDate() {
+  var o = new api.Date();
+  buildCounterDate++;
+  if (buildCounterDate < 3) {
+    o.day = 42;
+    o.month = 42;
+    o.year = 42;
+  }
+  buildCounterDate--;
+  return o;
+}
+
+checkDate(api.Date o) {
+  buildCounterDate++;
+  if (buildCounterDate < 3) {
+    unittest.expect(o.day, unittest.equals(42));
+    unittest.expect(o.month, unittest.equals(42));
+    unittest.expect(o.year, unittest.equals(42));
+  }
+  buildCounterDate--;
+}
+
+core.int buildCounterDomainMembership = 0;
+buildDomainMembership() {
+  var o = new api.DomainMembership();
+  buildCounterDomainMembership++;
+  if (buildCounterDomainMembership < 3) {
+    o.inViewerDomain = true;
+  }
+  buildCounterDomainMembership--;
+  return o;
+}
+
+checkDomainMembership(api.DomainMembership o) {
+  buildCounterDomainMembership++;
+  if (buildCounterDomainMembership < 3) {
+    unittest.expect(o.inViewerDomain, unittest.isTrue);
+  }
+  buildCounterDomainMembership--;
+}
+
+core.int buildCounterEmailAddress = 0;
+buildEmailAddress() {
+  var o = new api.EmailAddress();
+  buildCounterEmailAddress++;
+  if (buildCounterEmailAddress < 3) {
+    o.displayName = "foo";
+    o.formattedType = "foo";
+    o.metadata = buildFieldMetadata();
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterEmailAddress--;
+  return o;
+}
+
+checkEmailAddress(api.EmailAddress o) {
+  buildCounterEmailAddress++;
+  if (buildCounterEmailAddress < 3) {
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.formattedType, unittest.equals('foo'));
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterEmailAddress--;
+}
+
+core.int buildCounterEmpty = 0;
+buildEmpty() {
+  var o = new api.Empty();
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+  return o;
+}
+
+checkEmpty(api.Empty o) {
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+}
+
+core.int buildCounterEvent = 0;
+buildEvent() {
+  var o = new api.Event();
+  buildCounterEvent++;
+  if (buildCounterEvent < 3) {
+    o.date = buildDate();
+    o.formattedType = "foo";
+    o.metadata = buildFieldMetadata();
+    o.type = "foo";
+  }
+  buildCounterEvent--;
+  return o;
+}
+
+checkEvent(api.Event o) {
+  buildCounterEvent++;
+  if (buildCounterEvent < 3) {
+    checkDate(o.date);
+    unittest.expect(o.formattedType, unittest.equals('foo'));
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterEvent--;
+}
+
+core.int buildCounterFieldMetadata = 0;
+buildFieldMetadata() {
+  var o = new api.FieldMetadata();
+  buildCounterFieldMetadata++;
+  if (buildCounterFieldMetadata < 3) {
+    o.primary = true;
+    o.source = buildSource();
+    o.verified = true;
+  }
+  buildCounterFieldMetadata--;
+  return o;
+}
+
+checkFieldMetadata(api.FieldMetadata o) {
+  buildCounterFieldMetadata++;
+  if (buildCounterFieldMetadata < 3) {
+    unittest.expect(o.primary, unittest.isTrue);
+    checkSource(o.source);
+    unittest.expect(o.verified, unittest.isTrue);
+  }
+  buildCounterFieldMetadata--;
+}
+
+core.int buildCounterGender = 0;
+buildGender() {
+  var o = new api.Gender();
+  buildCounterGender++;
+  if (buildCounterGender < 3) {
+    o.formattedValue = "foo";
+    o.metadata = buildFieldMetadata();
+    o.value = "foo";
+  }
+  buildCounterGender--;
+  return o;
+}
+
+checkGender(api.Gender o) {
+  buildCounterGender++;
+  if (buildCounterGender < 3) {
+    unittest.expect(o.formattedValue, unittest.equals('foo'));
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterGender--;
+}
+
+buildUnnamed1484() {
+  var o = new core.List<api.PersonResponse>();
+  o.add(buildPersonResponse());
+  o.add(buildPersonResponse());
+  return o;
+}
+
+checkUnnamed1484(core.List<api.PersonResponse> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPersonResponse(o[0]);
+  checkPersonResponse(o[1]);
+}
+
+core.int buildCounterGetPeopleResponse = 0;
+buildGetPeopleResponse() {
+  var o = new api.GetPeopleResponse();
+  buildCounterGetPeopleResponse++;
+  if (buildCounterGetPeopleResponse < 3) {
+    o.responses = buildUnnamed1484();
+  }
+  buildCounterGetPeopleResponse--;
+  return o;
+}
+
+checkGetPeopleResponse(api.GetPeopleResponse o) {
+  buildCounterGetPeopleResponse++;
+  if (buildCounterGetPeopleResponse < 3) {
+    checkUnnamed1484(o.responses);
+  }
+  buildCounterGetPeopleResponse--;
+}
+
+core.int buildCounterImClient = 0;
+buildImClient() {
+  var o = new api.ImClient();
+  buildCounterImClient++;
+  if (buildCounterImClient < 3) {
+    o.formattedProtocol = "foo";
+    o.formattedType = "foo";
+    o.metadata = buildFieldMetadata();
+    o.protocol = "foo";
+    o.type = "foo";
+    o.username = "foo";
+  }
+  buildCounterImClient--;
+  return o;
+}
+
+checkImClient(api.ImClient o) {
+  buildCounterImClient++;
+  if (buildCounterImClient < 3) {
+    unittest.expect(o.formattedProtocol, unittest.equals('foo'));
+    unittest.expect(o.formattedType, unittest.equals('foo'));
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.protocol, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.username, unittest.equals('foo'));
+  }
+  buildCounterImClient--;
+}
+
+core.int buildCounterInterest = 0;
+buildInterest() {
+  var o = new api.Interest();
+  buildCounterInterest++;
+  if (buildCounterInterest < 3) {
+    o.metadata = buildFieldMetadata();
+    o.value = "foo";
+  }
+  buildCounterInterest--;
+  return o;
+}
+
+checkInterest(api.Interest o) {
+  buildCounterInterest++;
+  if (buildCounterInterest < 3) {
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterInterest--;
+}
+
+buildUnnamed1485() {
+  var o = new core.List<api.Person>();
+  o.add(buildPerson());
+  o.add(buildPerson());
+  return o;
+}
+
+checkUnnamed1485(core.List<api.Person> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPerson(o[0]);
+  checkPerson(o[1]);
+}
+
+core.int buildCounterListConnectionsResponse = 0;
+buildListConnectionsResponse() {
+  var o = new api.ListConnectionsResponse();
+  buildCounterListConnectionsResponse++;
+  if (buildCounterListConnectionsResponse < 3) {
+    o.connections = buildUnnamed1485();
+    o.nextPageToken = "foo";
+    o.nextSyncToken = "foo";
+    o.totalItems = 42;
+    o.totalPeople = 42;
+  }
+  buildCounterListConnectionsResponse--;
+  return o;
+}
+
+checkListConnectionsResponse(api.ListConnectionsResponse o) {
+  buildCounterListConnectionsResponse++;
+  if (buildCounterListConnectionsResponse < 3) {
+    checkUnnamed1485(o.connections);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.nextSyncToken, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals(42));
+    unittest.expect(o.totalPeople, unittest.equals(42));
+  }
+  buildCounterListConnectionsResponse--;
+}
+
+buildUnnamed1486() {
+  var o = new core.List<api.ContactGroup>();
+  o.add(buildContactGroup());
+  o.add(buildContactGroup());
+  return o;
+}
+
+checkUnnamed1486(core.List<api.ContactGroup> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContactGroup(o[0]);
+  checkContactGroup(o[1]);
+}
+
+core.int buildCounterListContactGroupsResponse = 0;
+buildListContactGroupsResponse() {
+  var o = new api.ListContactGroupsResponse();
+  buildCounterListContactGroupsResponse++;
+  if (buildCounterListContactGroupsResponse < 3) {
+    o.contactGroups = buildUnnamed1486();
+    o.nextPageToken = "foo";
+    o.nextSyncToken = "foo";
+    o.totalItems = 42;
+  }
+  buildCounterListContactGroupsResponse--;
+  return o;
+}
+
+checkListContactGroupsResponse(api.ListContactGroupsResponse o) {
+  buildCounterListContactGroupsResponse++;
+  if (buildCounterListContactGroupsResponse < 3) {
+    checkUnnamed1486(o.contactGroups);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.nextSyncToken, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterListContactGroupsResponse--;
+}
+
+core.int buildCounterLocale = 0;
+buildLocale() {
+  var o = new api.Locale();
+  buildCounterLocale++;
+  if (buildCounterLocale < 3) {
+    o.metadata = buildFieldMetadata();
+    o.value = "foo";
+  }
+  buildCounterLocale--;
+  return o;
+}
+
+checkLocale(api.Locale o) {
+  buildCounterLocale++;
+  if (buildCounterLocale < 3) {
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterLocale--;
+}
+
+core.int buildCounterMembership = 0;
+buildMembership() {
+  var o = new api.Membership();
+  buildCounterMembership++;
+  if (buildCounterMembership < 3) {
+    o.contactGroupMembership = buildContactGroupMembership();
+    o.domainMembership = buildDomainMembership();
+    o.metadata = buildFieldMetadata();
+  }
+  buildCounterMembership--;
+  return o;
+}
+
+checkMembership(api.Membership o) {
+  buildCounterMembership++;
+  if (buildCounterMembership < 3) {
+    checkContactGroupMembership(o.contactGroupMembership);
+    checkDomainMembership(o.domainMembership);
+    checkFieldMetadata(o.metadata);
+  }
+  buildCounterMembership--;
+}
+
+buildUnnamed1487() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1487(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1488() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1488(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterModifyContactGroupMembersRequest = 0;
+buildModifyContactGroupMembersRequest() {
+  var o = new api.ModifyContactGroupMembersRequest();
+  buildCounterModifyContactGroupMembersRequest++;
+  if (buildCounterModifyContactGroupMembersRequest < 3) {
+    o.resourceNamesToAdd = buildUnnamed1487();
+    o.resourceNamesToRemove = buildUnnamed1488();
+  }
+  buildCounterModifyContactGroupMembersRequest--;
+  return o;
+}
+
+checkModifyContactGroupMembersRequest(api.ModifyContactGroupMembersRequest o) {
+  buildCounterModifyContactGroupMembersRequest++;
+  if (buildCounterModifyContactGroupMembersRequest < 3) {
+    checkUnnamed1487(o.resourceNamesToAdd);
+    checkUnnamed1488(o.resourceNamesToRemove);
+  }
+  buildCounterModifyContactGroupMembersRequest--;
+}
+
+buildUnnamed1489() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1489(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterModifyContactGroupMembersResponse = 0;
+buildModifyContactGroupMembersResponse() {
+  var o = new api.ModifyContactGroupMembersResponse();
+  buildCounterModifyContactGroupMembersResponse++;
+  if (buildCounterModifyContactGroupMembersResponse < 3) {
+    o.notFoundResourceNames = buildUnnamed1489();
+  }
+  buildCounterModifyContactGroupMembersResponse--;
+  return o;
+}
+
+checkModifyContactGroupMembersResponse(
+    api.ModifyContactGroupMembersResponse o) {
+  buildCounterModifyContactGroupMembersResponse++;
+  if (buildCounterModifyContactGroupMembersResponse < 3) {
+    checkUnnamed1489(o.notFoundResourceNames);
+  }
+  buildCounterModifyContactGroupMembersResponse--;
+}
+
+core.int buildCounterName = 0;
+buildName() {
+  var o = new api.Name();
+  buildCounterName++;
+  if (buildCounterName < 3) {
+    o.displayName = "foo";
+    o.displayNameLastFirst = "foo";
+    o.familyName = "foo";
+    o.givenName = "foo";
+    o.honorificPrefix = "foo";
+    o.honorificSuffix = "foo";
+    o.metadata = buildFieldMetadata();
+    o.middleName = "foo";
+    o.phoneticFamilyName = "foo";
+    o.phoneticFullName = "foo";
+    o.phoneticGivenName = "foo";
+    o.phoneticHonorificPrefix = "foo";
+    o.phoneticHonorificSuffix = "foo";
+    o.phoneticMiddleName = "foo";
+  }
+  buildCounterName--;
+  return o;
+}
+
+checkName(api.Name o) {
+  buildCounterName++;
+  if (buildCounterName < 3) {
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.displayNameLastFirst, unittest.equals('foo'));
+    unittest.expect(o.familyName, unittest.equals('foo'));
+    unittest.expect(o.givenName, unittest.equals('foo'));
+    unittest.expect(o.honorificPrefix, unittest.equals('foo'));
+    unittest.expect(o.honorificSuffix, unittest.equals('foo'));
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.middleName, unittest.equals('foo'));
+    unittest.expect(o.phoneticFamilyName, unittest.equals('foo'));
+    unittest.expect(o.phoneticFullName, unittest.equals('foo'));
+    unittest.expect(o.phoneticGivenName, unittest.equals('foo'));
+    unittest.expect(o.phoneticHonorificPrefix, unittest.equals('foo'));
+    unittest.expect(o.phoneticHonorificSuffix, unittest.equals('foo'));
+    unittest.expect(o.phoneticMiddleName, unittest.equals('foo'));
+  }
+  buildCounterName--;
+}
+
+core.int buildCounterNickname = 0;
+buildNickname() {
+  var o = new api.Nickname();
+  buildCounterNickname++;
+  if (buildCounterNickname < 3) {
+    o.metadata = buildFieldMetadata();
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterNickname--;
+  return o;
+}
+
+checkNickname(api.Nickname o) {
+  buildCounterNickname++;
+  if (buildCounterNickname < 3) {
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterNickname--;
+}
+
+core.int buildCounterOccupation = 0;
+buildOccupation() {
+  var o = new api.Occupation();
+  buildCounterOccupation++;
+  if (buildCounterOccupation < 3) {
+    o.metadata = buildFieldMetadata();
+    o.value = "foo";
+  }
+  buildCounterOccupation--;
+  return o;
+}
+
+checkOccupation(api.Occupation o) {
+  buildCounterOccupation++;
+  if (buildCounterOccupation < 3) {
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterOccupation--;
+}
+
+core.int buildCounterOrganization = 0;
+buildOrganization() {
+  var o = new api.Organization();
+  buildCounterOrganization++;
+  if (buildCounterOrganization < 3) {
+    o.current = true;
+    o.department = "foo";
+    o.domain = "foo";
+    o.endDate = buildDate();
+    o.formattedType = "foo";
+    o.jobDescription = "foo";
+    o.location = "foo";
+    o.metadata = buildFieldMetadata();
+    o.name = "foo";
+    o.phoneticName = "foo";
+    o.startDate = buildDate();
+    o.symbol = "foo";
+    o.title = "foo";
+    o.type = "foo";
+  }
+  buildCounterOrganization--;
+  return o;
+}
+
+checkOrganization(api.Organization o) {
+  buildCounterOrganization++;
+  if (buildCounterOrganization < 3) {
+    unittest.expect(o.current, unittest.isTrue);
+    unittest.expect(o.department, unittest.equals('foo'));
+    unittest.expect(o.domain, unittest.equals('foo'));
+    checkDate(o.endDate);
+    unittest.expect(o.formattedType, unittest.equals('foo'));
+    unittest.expect(o.jobDescription, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.phoneticName, unittest.equals('foo'));
+    checkDate(o.startDate);
+    unittest.expect(o.symbol, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterOrganization--;
+}
+
+buildUnnamed1490() {
+  var o = new core.List<api.Address>();
+  o.add(buildAddress());
+  o.add(buildAddress());
+  return o;
+}
+
+checkUnnamed1490(core.List<api.Address> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAddress(o[0]);
+  checkAddress(o[1]);
+}
+
+buildUnnamed1491() {
+  var o = new core.List<api.AgeRangeType>();
+  o.add(buildAgeRangeType());
+  o.add(buildAgeRangeType());
+  return o;
+}
+
+checkUnnamed1491(core.List<api.AgeRangeType> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAgeRangeType(o[0]);
+  checkAgeRangeType(o[1]);
+}
+
+buildUnnamed1492() {
+  var o = new core.List<api.Biography>();
+  o.add(buildBiography());
+  o.add(buildBiography());
+  return o;
+}
+
+checkUnnamed1492(core.List<api.Biography> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBiography(o[0]);
+  checkBiography(o[1]);
+}
+
+buildUnnamed1493() {
+  var o = new core.List<api.Birthday>();
+  o.add(buildBirthday());
+  o.add(buildBirthday());
+  return o;
+}
+
+checkUnnamed1493(core.List<api.Birthday> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBirthday(o[0]);
+  checkBirthday(o[1]);
+}
+
+buildUnnamed1494() {
+  var o = new core.List<api.BraggingRights>();
+  o.add(buildBraggingRights());
+  o.add(buildBraggingRights());
+  return o;
+}
+
+checkUnnamed1494(core.List<api.BraggingRights> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBraggingRights(o[0]);
+  checkBraggingRights(o[1]);
+}
+
+buildUnnamed1495() {
+  var o = new core.List<api.CoverPhoto>();
+  o.add(buildCoverPhoto());
+  o.add(buildCoverPhoto());
+  return o;
+}
+
+checkUnnamed1495(core.List<api.CoverPhoto> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCoverPhoto(o[0]);
+  checkCoverPhoto(o[1]);
+}
+
+buildUnnamed1496() {
+  var o = new core.List<api.EmailAddress>();
+  o.add(buildEmailAddress());
+  o.add(buildEmailAddress());
+  return o;
+}
+
+checkUnnamed1496(core.List<api.EmailAddress> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEmailAddress(o[0]);
+  checkEmailAddress(o[1]);
+}
+
+buildUnnamed1497() {
+  var o = new core.List<api.Event>();
+  o.add(buildEvent());
+  o.add(buildEvent());
+  return o;
+}
+
+checkUnnamed1497(core.List<api.Event> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEvent(o[0]);
+  checkEvent(o[1]);
+}
+
+buildUnnamed1498() {
+  var o = new core.List<api.Gender>();
+  o.add(buildGender());
+  o.add(buildGender());
+  return o;
+}
+
+checkUnnamed1498(core.List<api.Gender> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGender(o[0]);
+  checkGender(o[1]);
+}
+
+buildUnnamed1499() {
+  var o = new core.List<api.ImClient>();
+  o.add(buildImClient());
+  o.add(buildImClient());
+  return o;
+}
+
+checkUnnamed1499(core.List<api.ImClient> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkImClient(o[0]);
+  checkImClient(o[1]);
+}
+
+buildUnnamed1500() {
+  var o = new core.List<api.Interest>();
+  o.add(buildInterest());
+  o.add(buildInterest());
+  return o;
+}
+
+checkUnnamed1500(core.List<api.Interest> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInterest(o[0]);
+  checkInterest(o[1]);
+}
+
+buildUnnamed1501() {
+  var o = new core.List<api.Locale>();
+  o.add(buildLocale());
+  o.add(buildLocale());
+  return o;
+}
+
+checkUnnamed1501(core.List<api.Locale> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLocale(o[0]);
+  checkLocale(o[1]);
+}
+
+buildUnnamed1502() {
+  var o = new core.List<api.Membership>();
+  o.add(buildMembership());
+  o.add(buildMembership());
+  return o;
+}
+
+checkUnnamed1502(core.List<api.Membership> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMembership(o[0]);
+  checkMembership(o[1]);
+}
+
+buildUnnamed1503() {
+  var o = new core.List<api.Name>();
+  o.add(buildName());
+  o.add(buildName());
+  return o;
+}
+
+checkUnnamed1503(core.List<api.Name> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkName(o[0]);
+  checkName(o[1]);
+}
+
+buildUnnamed1504() {
+  var o = new core.List<api.Nickname>();
+  o.add(buildNickname());
+  o.add(buildNickname());
+  return o;
+}
+
+checkUnnamed1504(core.List<api.Nickname> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkNickname(o[0]);
+  checkNickname(o[1]);
+}
+
+buildUnnamed1505() {
+  var o = new core.List<api.Occupation>();
+  o.add(buildOccupation());
+  o.add(buildOccupation());
+  return o;
+}
+
+checkUnnamed1505(core.List<api.Occupation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOccupation(o[0]);
+  checkOccupation(o[1]);
+}
+
+buildUnnamed1506() {
+  var o = new core.List<api.Organization>();
+  o.add(buildOrganization());
+  o.add(buildOrganization());
+  return o;
+}
+
+checkUnnamed1506(core.List<api.Organization> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrganization(o[0]);
+  checkOrganization(o[1]);
+}
+
+buildUnnamed1507() {
+  var o = new core.List<api.PhoneNumber>();
+  o.add(buildPhoneNumber());
+  o.add(buildPhoneNumber());
+  return o;
+}
+
+checkUnnamed1507(core.List<api.PhoneNumber> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPhoneNumber(o[0]);
+  checkPhoneNumber(o[1]);
+}
+
+buildUnnamed1508() {
+  var o = new core.List<api.Photo>();
+  o.add(buildPhoto());
+  o.add(buildPhoto());
+  return o;
+}
+
+checkUnnamed1508(core.List<api.Photo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPhoto(o[0]);
+  checkPhoto(o[1]);
+}
+
+buildUnnamed1509() {
+  var o = new core.List<api.Relation>();
+  o.add(buildRelation());
+  o.add(buildRelation());
+  return o;
+}
+
+checkUnnamed1509(core.List<api.Relation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRelation(o[0]);
+  checkRelation(o[1]);
+}
+
+buildUnnamed1510() {
+  var o = new core.List<api.RelationshipInterest>();
+  o.add(buildRelationshipInterest());
+  o.add(buildRelationshipInterest());
+  return o;
+}
+
+checkUnnamed1510(core.List<api.RelationshipInterest> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRelationshipInterest(o[0]);
+  checkRelationshipInterest(o[1]);
+}
+
+buildUnnamed1511() {
+  var o = new core.List<api.RelationshipStatus>();
+  o.add(buildRelationshipStatus());
+  o.add(buildRelationshipStatus());
+  return o;
+}
+
+checkUnnamed1511(core.List<api.RelationshipStatus> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRelationshipStatus(o[0]);
+  checkRelationshipStatus(o[1]);
+}
+
+buildUnnamed1512() {
+  var o = new core.List<api.Residence>();
+  o.add(buildResidence());
+  o.add(buildResidence());
+  return o;
+}
+
+checkUnnamed1512(core.List<api.Residence> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkResidence(o[0]);
+  checkResidence(o[1]);
+}
+
+buildUnnamed1513() {
+  var o = new core.List<api.Skill>();
+  o.add(buildSkill());
+  o.add(buildSkill());
+  return o;
+}
+
+checkUnnamed1513(core.List<api.Skill> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSkill(o[0]);
+  checkSkill(o[1]);
+}
+
+buildUnnamed1514() {
+  var o = new core.List<api.Tagline>();
+  o.add(buildTagline());
+  o.add(buildTagline());
+  return o;
+}
+
+checkUnnamed1514(core.List<api.Tagline> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTagline(o[0]);
+  checkTagline(o[1]);
+}
+
+buildUnnamed1515() {
+  var o = new core.List<api.Url>();
+  o.add(buildUrl());
+  o.add(buildUrl());
+  return o;
+}
+
+checkUnnamed1515(core.List<api.Url> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUrl(o[0]);
+  checkUrl(o[1]);
+}
+
+buildUnnamed1516() {
+  var o = new core.List<api.UserDefined>();
+  o.add(buildUserDefined());
+  o.add(buildUserDefined());
+  return o;
+}
+
+checkUnnamed1516(core.List<api.UserDefined> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUserDefined(o[0]);
+  checkUserDefined(o[1]);
+}
+
+core.int buildCounterPerson = 0;
+buildPerson() {
+  var o = new api.Person();
+  buildCounterPerson++;
+  if (buildCounterPerson < 3) {
+    o.addresses = buildUnnamed1490();
+    o.ageRange = "foo";
+    o.ageRanges = buildUnnamed1491();
+    o.biographies = buildUnnamed1492();
+    o.birthdays = buildUnnamed1493();
+    o.braggingRights = buildUnnamed1494();
+    o.coverPhotos = buildUnnamed1495();
+    o.emailAddresses = buildUnnamed1496();
+    o.etag = "foo";
+    o.events = buildUnnamed1497();
+    o.genders = buildUnnamed1498();
+    o.imClients = buildUnnamed1499();
+    o.interests = buildUnnamed1500();
+    o.locales = buildUnnamed1501();
+    o.memberships = buildUnnamed1502();
+    o.metadata = buildPersonMetadata();
+    o.names = buildUnnamed1503();
+    o.nicknames = buildUnnamed1504();
+    o.occupations = buildUnnamed1505();
+    o.organizations = buildUnnamed1506();
+    o.phoneNumbers = buildUnnamed1507();
+    o.photos = buildUnnamed1508();
+    o.relations = buildUnnamed1509();
+    o.relationshipInterests = buildUnnamed1510();
+    o.relationshipStatuses = buildUnnamed1511();
+    o.residences = buildUnnamed1512();
+    o.resourceName = "foo";
+    o.skills = buildUnnamed1513();
+    o.taglines = buildUnnamed1514();
+    o.urls = buildUnnamed1515();
+    o.userDefined = buildUnnamed1516();
+  }
+  buildCounterPerson--;
+  return o;
+}
+
+checkPerson(api.Person o) {
+  buildCounterPerson++;
+  if (buildCounterPerson < 3) {
+    checkUnnamed1490(o.addresses);
+    unittest.expect(o.ageRange, unittest.equals('foo'));
+    checkUnnamed1491(o.ageRanges);
+    checkUnnamed1492(o.biographies);
+    checkUnnamed1493(o.birthdays);
+    checkUnnamed1494(o.braggingRights);
+    checkUnnamed1495(o.coverPhotos);
+    checkUnnamed1496(o.emailAddresses);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1497(o.events);
+    checkUnnamed1498(o.genders);
+    checkUnnamed1499(o.imClients);
+    checkUnnamed1500(o.interests);
+    checkUnnamed1501(o.locales);
+    checkUnnamed1502(o.memberships);
+    checkPersonMetadata(o.metadata);
+    checkUnnamed1503(o.names);
+    checkUnnamed1504(o.nicknames);
+    checkUnnamed1505(o.occupations);
+    checkUnnamed1506(o.organizations);
+    checkUnnamed1507(o.phoneNumbers);
+    checkUnnamed1508(o.photos);
+    checkUnnamed1509(o.relations);
+    checkUnnamed1510(o.relationshipInterests);
+    checkUnnamed1511(o.relationshipStatuses);
+    checkUnnamed1512(o.residences);
+    unittest.expect(o.resourceName, unittest.equals('foo'));
+    checkUnnamed1513(o.skills);
+    checkUnnamed1514(o.taglines);
+    checkUnnamed1515(o.urls);
+    checkUnnamed1516(o.userDefined);
+  }
+  buildCounterPerson--;
+}
+
+buildUnnamed1517() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1517(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1518() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1518(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1519() {
+  var o = new core.List<api.Source>();
+  o.add(buildSource());
+  o.add(buildSource());
+  return o;
+}
+
+checkUnnamed1519(core.List<api.Source> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSource(o[0]);
+  checkSource(o[1]);
+}
+
+core.int buildCounterPersonMetadata = 0;
+buildPersonMetadata() {
+  var o = new api.PersonMetadata();
+  buildCounterPersonMetadata++;
+  if (buildCounterPersonMetadata < 3) {
+    o.deleted = true;
+    o.linkedPeopleResourceNames = buildUnnamed1517();
+    o.objectType = "foo";
+    o.previousResourceNames = buildUnnamed1518();
+    o.sources = buildUnnamed1519();
+  }
+  buildCounterPersonMetadata--;
+  return o;
+}
+
+checkPersonMetadata(api.PersonMetadata o) {
+  buildCounterPersonMetadata++;
+  if (buildCounterPersonMetadata < 3) {
+    unittest.expect(o.deleted, unittest.isTrue);
+    checkUnnamed1517(o.linkedPeopleResourceNames);
+    unittest.expect(o.objectType, unittest.equals('foo'));
+    checkUnnamed1518(o.previousResourceNames);
+    checkUnnamed1519(o.sources);
+  }
+  buildCounterPersonMetadata--;
+}
+
+core.int buildCounterPersonResponse = 0;
+buildPersonResponse() {
+  var o = new api.PersonResponse();
+  buildCounterPersonResponse++;
+  if (buildCounterPersonResponse < 3) {
+    o.httpStatusCode = 42;
+    o.person = buildPerson();
+    o.requestedResourceName = "foo";
+    o.status = buildStatus();
+  }
+  buildCounterPersonResponse--;
+  return o;
+}
+
+checkPersonResponse(api.PersonResponse o) {
+  buildCounterPersonResponse++;
+  if (buildCounterPersonResponse < 3) {
+    unittest.expect(o.httpStatusCode, unittest.equals(42));
+    checkPerson(o.person);
+    unittest.expect(o.requestedResourceName, unittest.equals('foo'));
+    checkStatus(o.status);
+  }
+  buildCounterPersonResponse--;
+}
+
+core.int buildCounterPhoneNumber = 0;
+buildPhoneNumber() {
+  var o = new api.PhoneNumber();
+  buildCounterPhoneNumber++;
+  if (buildCounterPhoneNumber < 3) {
+    o.canonicalForm = "foo";
+    o.formattedType = "foo";
+    o.metadata = buildFieldMetadata();
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterPhoneNumber--;
+  return o;
+}
+
+checkPhoneNumber(api.PhoneNumber o) {
+  buildCounterPhoneNumber++;
+  if (buildCounterPhoneNumber < 3) {
+    unittest.expect(o.canonicalForm, unittest.equals('foo'));
+    unittest.expect(o.formattedType, unittest.equals('foo'));
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterPhoneNumber--;
+}
+
+core.int buildCounterPhoto = 0;
+buildPhoto() {
+  var o = new api.Photo();
+  buildCounterPhoto++;
+  if (buildCounterPhoto < 3) {
+    o.default_ = true;
+    o.metadata = buildFieldMetadata();
+    o.url = "foo";
+  }
+  buildCounterPhoto--;
+  return o;
+}
+
+checkPhoto(api.Photo o) {
+  buildCounterPhoto++;
+  if (buildCounterPhoto < 3) {
+    unittest.expect(o.default_, unittest.isTrue);
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterPhoto--;
+}
+
+buildUnnamed1520() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1520(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterProfileMetadata = 0;
+buildProfileMetadata() {
+  var o = new api.ProfileMetadata();
+  buildCounterProfileMetadata++;
+  if (buildCounterProfileMetadata < 3) {
+    o.objectType = "foo";
+    o.userTypes = buildUnnamed1520();
+  }
+  buildCounterProfileMetadata--;
+  return o;
+}
+
+checkProfileMetadata(api.ProfileMetadata o) {
+  buildCounterProfileMetadata++;
+  if (buildCounterProfileMetadata < 3) {
+    unittest.expect(o.objectType, unittest.equals('foo'));
+    checkUnnamed1520(o.userTypes);
+  }
+  buildCounterProfileMetadata--;
+}
+
+core.int buildCounterRelation = 0;
+buildRelation() {
+  var o = new api.Relation();
+  buildCounterRelation++;
+  if (buildCounterRelation < 3) {
+    o.formattedType = "foo";
+    o.metadata = buildFieldMetadata();
+    o.person = "foo";
+    o.type = "foo";
+  }
+  buildCounterRelation--;
+  return o;
+}
+
+checkRelation(api.Relation o) {
+  buildCounterRelation++;
+  if (buildCounterRelation < 3) {
+    unittest.expect(o.formattedType, unittest.equals('foo'));
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.person, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterRelation--;
+}
+
+core.int buildCounterRelationshipInterest = 0;
+buildRelationshipInterest() {
+  var o = new api.RelationshipInterest();
+  buildCounterRelationshipInterest++;
+  if (buildCounterRelationshipInterest < 3) {
+    o.formattedValue = "foo";
+    o.metadata = buildFieldMetadata();
+    o.value = "foo";
+  }
+  buildCounterRelationshipInterest--;
+  return o;
+}
+
+checkRelationshipInterest(api.RelationshipInterest o) {
+  buildCounterRelationshipInterest++;
+  if (buildCounterRelationshipInterest < 3) {
+    unittest.expect(o.formattedValue, unittest.equals('foo'));
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterRelationshipInterest--;
+}
+
+core.int buildCounterRelationshipStatus = 0;
+buildRelationshipStatus() {
+  var o = new api.RelationshipStatus();
+  buildCounterRelationshipStatus++;
+  if (buildCounterRelationshipStatus < 3) {
+    o.formattedValue = "foo";
+    o.metadata = buildFieldMetadata();
+    o.value = "foo";
+  }
+  buildCounterRelationshipStatus--;
+  return o;
+}
+
+checkRelationshipStatus(api.RelationshipStatus o) {
+  buildCounterRelationshipStatus++;
+  if (buildCounterRelationshipStatus < 3) {
+    unittest.expect(o.formattedValue, unittest.equals('foo'));
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterRelationshipStatus--;
+}
+
+core.int buildCounterResidence = 0;
+buildResidence() {
+  var o = new api.Residence();
+  buildCounterResidence++;
+  if (buildCounterResidence < 3) {
+    o.current = true;
+    o.metadata = buildFieldMetadata();
+    o.value = "foo";
+  }
+  buildCounterResidence--;
+  return o;
+}
+
+checkResidence(api.Residence o) {
+  buildCounterResidence++;
+  if (buildCounterResidence < 3) {
+    unittest.expect(o.current, unittest.isTrue);
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterResidence--;
+}
+
+core.int buildCounterSkill = 0;
+buildSkill() {
+  var o = new api.Skill();
+  buildCounterSkill++;
+  if (buildCounterSkill < 3) {
+    o.metadata = buildFieldMetadata();
+    o.value = "foo";
+  }
+  buildCounterSkill--;
+  return o;
+}
+
+checkSkill(api.Skill o) {
+  buildCounterSkill++;
+  if (buildCounterSkill < 3) {
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterSkill--;
+}
+
+core.int buildCounterSource = 0;
+buildSource() {
+  var o = new api.Source();
+  buildCounterSource++;
+  if (buildCounterSource < 3) {
+    o.etag = "foo";
+    o.id = "foo";
+    o.profileMetadata = buildProfileMetadata();
+    o.type = "foo";
+    o.updateTime = "foo";
+  }
+  buildCounterSource--;
+  return o;
+}
+
+checkSource(api.Source o) {
+  buildCounterSource++;
+  if (buildCounterSource < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkProfileMetadata(o.profileMetadata);
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.updateTime, unittest.equals('foo'));
+  }
+  buildCounterSource--;
+}
+
+buildUnnamed1521() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed1521(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o["x"]) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(casted1["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted1["bool"], unittest.equals(true));
+  unittest.expect(casted1["string"], unittest.equals('foo'));
+  var casted2 = (o["y"]) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(casted2["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted2["bool"], unittest.equals(true));
+  unittest.expect(casted2["string"], unittest.equals('foo'));
+}
+
+buildUnnamed1522() {
+  var o = new core.List<core.Map<core.String, core.Object>>();
+  o.add(buildUnnamed1521());
+  o.add(buildUnnamed1521());
+  return o;
+}
+
+checkUnnamed1522(core.List<core.Map<core.String, core.Object>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed1521(o[0]);
+  checkUnnamed1521(o[1]);
+}
+
+core.int buildCounterStatus = 0;
+buildStatus() {
+  var o = new api.Status();
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    o.code = 42;
+    o.details = buildUnnamed1522();
+    o.message = "foo";
+  }
+  buildCounterStatus--;
+  return o;
+}
+
+checkStatus(api.Status o) {
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    unittest.expect(o.code, unittest.equals(42));
+    checkUnnamed1522(o.details);
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterStatus--;
+}
+
+core.int buildCounterTagline = 0;
+buildTagline() {
+  var o = new api.Tagline();
+  buildCounterTagline++;
+  if (buildCounterTagline < 3) {
+    o.metadata = buildFieldMetadata();
+    o.value = "foo";
+  }
+  buildCounterTagline--;
+  return o;
+}
+
+checkTagline(api.Tagline o) {
+  buildCounterTagline++;
+  if (buildCounterTagline < 3) {
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterTagline--;
+}
+
+core.int buildCounterUpdateContactGroupRequest = 0;
+buildUpdateContactGroupRequest() {
+  var o = new api.UpdateContactGroupRequest();
+  buildCounterUpdateContactGroupRequest++;
+  if (buildCounterUpdateContactGroupRequest < 3) {
+    o.contactGroup = buildContactGroup();
+  }
+  buildCounterUpdateContactGroupRequest--;
+  return o;
+}
+
+checkUpdateContactGroupRequest(api.UpdateContactGroupRequest o) {
+  buildCounterUpdateContactGroupRequest++;
+  if (buildCounterUpdateContactGroupRequest < 3) {
+    checkContactGroup(o.contactGroup);
+  }
+  buildCounterUpdateContactGroupRequest--;
+}
+
+core.int buildCounterUrl = 0;
+buildUrl() {
+  var o = new api.Url();
+  buildCounterUrl++;
+  if (buildCounterUrl < 3) {
+    o.formattedType = "foo";
+    o.metadata = buildFieldMetadata();
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterUrl--;
+  return o;
+}
+
+checkUrl(api.Url o) {
+  buildCounterUrl++;
+  if (buildCounterUrl < 3) {
+    unittest.expect(o.formattedType, unittest.equals('foo'));
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterUrl--;
+}
+
+core.int buildCounterUserDefined = 0;
+buildUserDefined() {
+  var o = new api.UserDefined();
+  buildCounterUserDefined++;
+  if (buildCounterUserDefined < 3) {
+    o.key = "foo";
+    o.metadata = buildFieldMetadata();
+    o.value = "foo";
+  }
+  buildCounterUserDefined--;
+  return o;
+}
+
+checkUserDefined(api.UserDefined o) {
+  buildCounterUserDefined++;
+  if (buildCounterUserDefined < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    checkFieldMetadata(o.metadata);
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterUserDefined--;
+}
+
+buildUnnamed1523() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1523(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1524() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1524(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-Address", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddress();
+      var od = new api.Address.fromJson(o.toJson());
+      checkAddress(od);
+    });
+  });
+
+  unittest.group("obj-schema-AgeRangeType", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAgeRangeType();
+      var od = new api.AgeRangeType.fromJson(o.toJson());
+      checkAgeRangeType(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchGetContactGroupsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchGetContactGroupsResponse();
+      var od = new api.BatchGetContactGroupsResponse.fromJson(o.toJson());
+      checkBatchGetContactGroupsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Biography", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBiography();
+      var od = new api.Biography.fromJson(o.toJson());
+      checkBiography(od);
+    });
+  });
+
+  unittest.group("obj-schema-Birthday", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBirthday();
+      var od = new api.Birthday.fromJson(o.toJson());
+      checkBirthday(od);
+    });
+  });
+
+  unittest.group("obj-schema-BraggingRights", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBraggingRights();
+      var od = new api.BraggingRights.fromJson(o.toJson());
+      checkBraggingRights(od);
+    });
+  });
+
+  unittest.group("obj-schema-ContactGroup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContactGroup();
+      var od = new api.ContactGroup.fromJson(o.toJson());
+      checkContactGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-ContactGroupMembership", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContactGroupMembership();
+      var od = new api.ContactGroupMembership.fromJson(o.toJson());
+      checkContactGroupMembership(od);
+    });
+  });
+
+  unittest.group("obj-schema-ContactGroupMetadata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContactGroupMetadata();
+      var od = new api.ContactGroupMetadata.fromJson(o.toJson());
+      checkContactGroupMetadata(od);
+    });
+  });
+
+  unittest.group("obj-schema-ContactGroupResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContactGroupResponse();
+      var od = new api.ContactGroupResponse.fromJson(o.toJson());
+      checkContactGroupResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CoverPhoto", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCoverPhoto();
+      var od = new api.CoverPhoto.fromJson(o.toJson());
+      checkCoverPhoto(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateContactGroupRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateContactGroupRequest();
+      var od = new api.CreateContactGroupRequest.fromJson(o.toJson());
+      checkCreateContactGroupRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Date", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDate();
+      var od = new api.Date.fromJson(o.toJson());
+      checkDate(od);
+    });
+  });
+
+  unittest.group("obj-schema-DomainMembership", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDomainMembership();
+      var od = new api.DomainMembership.fromJson(o.toJson());
+      checkDomainMembership(od);
+    });
+  });
+
+  unittest.group("obj-schema-EmailAddress", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEmailAddress();
+      var od = new api.EmailAddress.fromJson(o.toJson());
+      checkEmailAddress(od);
+    });
+  });
+
+  unittest.group("obj-schema-Empty", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEmpty();
+      var od = new api.Empty.fromJson(o.toJson());
+      checkEmpty(od);
+    });
+  });
+
+  unittest.group("obj-schema-Event", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEvent();
+      var od = new api.Event.fromJson(o.toJson());
+      checkEvent(od);
+    });
+  });
+
+  unittest.group("obj-schema-FieldMetadata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFieldMetadata();
+      var od = new api.FieldMetadata.fromJson(o.toJson());
+      checkFieldMetadata(od);
+    });
+  });
+
+  unittest.group("obj-schema-Gender", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGender();
+      var od = new api.Gender.fromJson(o.toJson());
+      checkGender(od);
+    });
+  });
+
+  unittest.group("obj-schema-GetPeopleResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGetPeopleResponse();
+      var od = new api.GetPeopleResponse.fromJson(o.toJson());
+      checkGetPeopleResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ImClient", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildImClient();
+      var od = new api.ImClient.fromJson(o.toJson());
+      checkImClient(od);
+    });
+  });
+
+  unittest.group("obj-schema-Interest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterest();
+      var od = new api.Interest.fromJson(o.toJson());
+      checkInterest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListConnectionsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListConnectionsResponse();
+      var od = new api.ListConnectionsResponse.fromJson(o.toJson());
+      checkListConnectionsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListContactGroupsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListContactGroupsResponse();
+      var od = new api.ListContactGroupsResponse.fromJson(o.toJson());
+      checkListContactGroupsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Locale", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLocale();
+      var od = new api.Locale.fromJson(o.toJson());
+      checkLocale(od);
+    });
+  });
+
+  unittest.group("obj-schema-Membership", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMembership();
+      var od = new api.Membership.fromJson(o.toJson());
+      checkMembership(od);
+    });
+  });
+
+  unittest.group("obj-schema-ModifyContactGroupMembersRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildModifyContactGroupMembersRequest();
+      var od = new api.ModifyContactGroupMembersRequest.fromJson(o.toJson());
+      checkModifyContactGroupMembersRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ModifyContactGroupMembersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildModifyContactGroupMembersResponse();
+      var od = new api.ModifyContactGroupMembersResponse.fromJson(o.toJson());
+      checkModifyContactGroupMembersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Name", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildName();
+      var od = new api.Name.fromJson(o.toJson());
+      checkName(od);
+    });
+  });
+
+  unittest.group("obj-schema-Nickname", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildNickname();
+      var od = new api.Nickname.fromJson(o.toJson());
+      checkNickname(od);
+    });
+  });
+
+  unittest.group("obj-schema-Occupation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOccupation();
+      var od = new api.Occupation.fromJson(o.toJson());
+      checkOccupation(od);
+    });
+  });
+
+  unittest.group("obj-schema-Organization", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrganization();
+      var od = new api.Organization.fromJson(o.toJson());
+      checkOrganization(od);
+    });
+  });
+
+  unittest.group("obj-schema-Person", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPerson();
+      var od = new api.Person.fromJson(o.toJson());
+      checkPerson(od);
+    });
+  });
+
+  unittest.group("obj-schema-PersonMetadata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPersonMetadata();
+      var od = new api.PersonMetadata.fromJson(o.toJson());
+      checkPersonMetadata(od);
+    });
+  });
+
+  unittest.group("obj-schema-PersonResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPersonResponse();
+      var od = new api.PersonResponse.fromJson(o.toJson());
+      checkPersonResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-PhoneNumber", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPhoneNumber();
+      var od = new api.PhoneNumber.fromJson(o.toJson());
+      checkPhoneNumber(od);
+    });
+  });
+
+  unittest.group("obj-schema-Photo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPhoto();
+      var od = new api.Photo.fromJson(o.toJson());
+      checkPhoto(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProfileMetadata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProfileMetadata();
+      var od = new api.ProfileMetadata.fromJson(o.toJson());
+      checkProfileMetadata(od);
+    });
+  });
+
+  unittest.group("obj-schema-Relation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRelation();
+      var od = new api.Relation.fromJson(o.toJson());
+      checkRelation(od);
+    });
+  });
+
+  unittest.group("obj-schema-RelationshipInterest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRelationshipInterest();
+      var od = new api.RelationshipInterest.fromJson(o.toJson());
+      checkRelationshipInterest(od);
+    });
+  });
+
+  unittest.group("obj-schema-RelationshipStatus", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRelationshipStatus();
+      var od = new api.RelationshipStatus.fromJson(o.toJson());
+      checkRelationshipStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-Residence", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResidence();
+      var od = new api.Residence.fromJson(o.toJson());
+      checkResidence(od);
+    });
+  });
+
+  unittest.group("obj-schema-Skill", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSkill();
+      var od = new api.Skill.fromJson(o.toJson());
+      checkSkill(od);
+    });
+  });
+
+  unittest.group("obj-schema-Source", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSource();
+      var od = new api.Source.fromJson(o.toJson());
+      checkSource(od);
+    });
+  });
+
+  unittest.group("obj-schema-Status", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStatus();
+      var od = new api.Status.fromJson(o.toJson());
+      checkStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-Tagline", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTagline();
+      var od = new api.Tagline.fromJson(o.toJson());
+      checkTagline(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateContactGroupRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateContactGroupRequest();
+      var od = new api.UpdateContactGroupRequest.fromJson(o.toJson());
+      checkUpdateContactGroupRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Url", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUrl();
+      var od = new api.Url.fromJson(o.toJson());
+      checkUrl(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserDefined", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserDefined();
+      var od = new api.UserDefined.fromJson(o.toJson());
+      checkUserDefined(od);
+    });
+  });
+
+  unittest.group("resource-ContactGroupsResourceApi", () {
+    unittest.test("method--batchGet", () {
+      var mock = new HttpServerMock();
+      api.ContactGroupsResourceApi res = new api.PeopleApi(mock).contactGroups;
+      var arg_resourceNames = buildUnnamed1523();
+      var arg_maxMembers = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 25),
+            unittest.equals("v1/contactGroups:batchGet"));
+        pathOffset += 25;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["resourceNames"], unittest.equals(arg_resourceNames));
+        unittest.expect(core.int.parse(queryMap["maxMembers"].first),
+            unittest.equals(arg_maxMembers));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBatchGetContactGroupsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .batchGet(
+              resourceNames: arg_resourceNames,
+              maxMembers: arg_maxMembers,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.BatchGetContactGroupsResponse response) {
+        checkBatchGetContactGroupsResponse(response);
+      })));
+    });
+
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ContactGroupsResourceApi res = new api.PeopleApi(mock).contactGroups;
+      var arg_request = buildCreateContactGroupRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreateContactGroupRequest.fromJson(json);
+        checkCreateContactGroupRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v1/contactGroups"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContactGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContactGroup response) {
+        checkContactGroup(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ContactGroupsResourceApi res = new api.PeopleApi(mock).contactGroups;
+      var arg_resourceName = "foo";
+      var arg_deleteContacts = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["deleteContacts"].first,
+            unittest.equals("$arg_deleteContacts"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_resourceName,
+              deleteContacts: arg_deleteContacts, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ContactGroupsResourceApi res = new api.PeopleApi(mock).contactGroups;
+      var arg_resourceName = "foo";
+      var arg_maxMembers = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxMembers"].first),
+            unittest.equals(arg_maxMembers));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContactGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_resourceName,
+              maxMembers: arg_maxMembers, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContactGroup response) {
+        checkContactGroup(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ContactGroupsResourceApi res = new api.PeopleApi(mock).contactGroups;
+      var arg_syncToken = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v1/contactGroups"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["syncToken"].first, unittest.equals(arg_syncToken));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListContactGroupsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              syncToken: arg_syncToken,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.ListContactGroupsResponse response) {
+        checkListContactGroupsResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.ContactGroupsResourceApi res = new api.PeopleApi(mock).contactGroups;
+      var arg_request = buildUpdateContactGroupRequest();
+      var arg_resourceName = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UpdateContactGroupRequest.fromJson(json);
+        checkUpdateContactGroupRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContactGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_resourceName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContactGroup response) {
+        checkContactGroup(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ContactGroupsMembersResourceApi", () {
+    unittest.test("method--modify", () {
+      var mock = new HttpServerMock();
+      api.ContactGroupsMembersResourceApi res =
+          new api.PeopleApi(mock).contactGroups.members;
+      var arg_request = buildModifyContactGroupMembersRequest();
+      var arg_resourceName = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ModifyContactGroupMembersRequest.fromJson(json);
+        checkModifyContactGroupMembersRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildModifyContactGroupMembersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.modify(arg_request, arg_resourceName, $fields: arg_$fields).then(
+          unittest
+              .expectAsync1(((api.ModifyContactGroupMembersResponse response) {
+        checkModifyContactGroupMembersResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PeopleResourceApi", () {
+    unittest.test("method--createContact", () {
+      var mock = new HttpServerMock();
+      api.PeopleResourceApi res = new api.PeopleApi(mock).people;
+      var arg_request = buildPerson();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Person.fromJson(json);
+        checkPerson(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 23),
+            unittest.equals("v1/people:createContact"));
+        pathOffset += 23;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["parent"].first, unittest.equals(arg_parent));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPerson());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .createContact(arg_request, parent: arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Person response) {
+        checkPerson(response);
+      })));
+    });
+
+    unittest.test("method--deleteContact", () {
+      var mock = new HttpServerMock();
+      api.PeopleResourceApi res = new api.PeopleApi(mock).people;
+      var arg_resourceName = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .deleteContact(arg_resourceName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PeopleResourceApi res = new api.PeopleApi(mock).people;
+      var arg_resourceName = "foo";
+      var arg_personFields = "foo";
+      var arg_requestMask_includeField = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["personFields"].first, unittest.equals(arg_personFields));
+        unittest.expect(queryMap["requestMask.includeField"].first,
+            unittest.equals(arg_requestMask_includeField));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPerson());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_resourceName,
+              personFields: arg_personFields,
+              requestMask_includeField: arg_requestMask_includeField,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Person response) {
+        checkPerson(response);
+      })));
+    });
+
+    unittest.test("method--getBatchGet", () {
+      var mock = new HttpServerMock();
+      api.PeopleResourceApi res = new api.PeopleApi(mock).people;
+      var arg_personFields = "foo";
+      var arg_requestMask_includeField = "foo";
+      var arg_resourceNames = buildUnnamed1524();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("v1/people:batchGet"));
+        pathOffset += 18;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["personFields"].first, unittest.equals(arg_personFields));
+        unittest.expect(queryMap["requestMask.includeField"].first,
+            unittest.equals(arg_requestMask_includeField));
+        unittest.expect(
+            queryMap["resourceNames"], unittest.equals(arg_resourceNames));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGetPeopleResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getBatchGet(
+              personFields: arg_personFields,
+              requestMask_includeField: arg_requestMask_includeField,
+              resourceNames: arg_resourceNames,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.GetPeopleResponse response) {
+        checkGetPeopleResponse(response);
+      })));
+    });
+
+    unittest.test("method--updateContact", () {
+      var mock = new HttpServerMock();
+      api.PeopleResourceApi res = new api.PeopleApi(mock).people;
+      var arg_request = buildPerson();
+      var arg_resourceName = "foo";
+      var arg_updatePersonFields = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Person.fromJson(json);
+        checkPerson(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["updatePersonFields"].first,
+            unittest.equals(arg_updatePersonFields));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPerson());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .updateContact(arg_request, arg_resourceName,
+              updatePersonFields: arg_updatePersonFields, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Person response) {
+        checkPerson(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PeopleConnectionsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PeopleConnectionsResourceApi res =
+          new api.PeopleApi(mock).people.connections;
+      var arg_resourceName = "foo";
+      var arg_sortOrder = "foo";
+      var arg_requestSyncToken = true;
+      var arg_pageToken = "foo";
+      var arg_requestMask_includeField = "foo";
+      var arg_pageSize = 42;
+      var arg_syncToken = "foo";
+      var arg_personFields = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("v1/"));
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["requestSyncToken"].first,
+            unittest.equals("$arg_requestSyncToken"));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["requestMask.includeField"].first,
+            unittest.equals(arg_requestMask_includeField));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["syncToken"].first, unittest.equals(arg_syncToken));
+        unittest.expect(
+            queryMap["personFields"].first, unittest.equals(arg_personFields));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListConnectionsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_resourceName,
+              sortOrder: arg_sortOrder,
+              requestSyncToken: arg_requestSyncToken,
+              pageToken: arg_pageToken,
+              requestMask_includeField: arg_requestMask_includeField,
+              pageSize: arg_pageSize,
+              syncToken: arg_syncToken,
+              personFields: arg_personFields,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListConnectionsResponse response) {
+        checkListConnectionsResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/playcustomapp/v1_test.dart b/generated/googleapis/test/playcustomapp/v1_test.dart
index 24fefce..49baa15 100644
--- a/generated/googleapis/test/playcustomapp/v1_test.dart
+++ b/generated/googleapis/test/playcustomapp/v1_test.dart
@@ -90,6 +90,7 @@
           new api.PlaycustomappApi(mock).accounts.customApps;
       var arg_request = buildCustomApp();
       var arg_account = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CustomApp.fromJson(json);
         checkCustomApp(obj);
@@ -120,6 +121,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -128,7 +130,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_account)
+          .create(arg_request, arg_account, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CustomApp response) {
         checkCustomApp(response);
       })));
diff --git a/generated/googleapis/test/playmoviespartner/v1_test.dart b/generated/googleapis/test/playmoviespartner/v1_test.dart
new file mode 100644
index 0000000..a598b8a
--- /dev/null
+++ b/generated/googleapis/test/playmoviespartner/v1_test.dart
@@ -0,0 +1,1168 @@
+library googleapis.playmoviespartner.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/playmoviespartner/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+buildUnnamed3208() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3208(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAvail = 0;
+buildAvail() {
+  var o = new api.Avail();
+  buildCounterAvail++;
+  if (buildCounterAvail < 3) {
+    o.altId = "foo";
+    o.availId = "foo";
+    o.captionExemption = "foo";
+    o.captionIncluded = true;
+    o.contentId = "foo";
+    o.displayName = "foo";
+    o.encodeId = "foo";
+    o.end = "foo";
+    o.episodeAltId = "foo";
+    o.episodeNumber = "foo";
+    o.episodeTitleInternalAlias = "foo";
+    o.formatProfile = "foo";
+    o.licenseType = "foo";
+    o.pphNames = buildUnnamed3208();
+    o.priceType = "foo";
+    o.priceValue = "foo";
+    o.productId = "foo";
+    o.ratingReason = "foo";
+    o.ratingSystem = "foo";
+    o.ratingValue = "foo";
+    o.releaseDate = "foo";
+    o.seasonAltId = "foo";
+    o.seasonNumber = "foo";
+    o.seasonTitleInternalAlias = "foo";
+    o.seriesAltId = "foo";
+    o.seriesTitleInternalAlias = "foo";
+    o.start = "foo";
+    o.storeLanguage = "foo";
+    o.suppressionLiftDate = "foo";
+    o.territory = "foo";
+    o.titleInternalAlias = "foo";
+    o.videoId = "foo";
+    o.workType = "foo";
+  }
+  buildCounterAvail--;
+  return o;
+}
+
+checkAvail(api.Avail o) {
+  buildCounterAvail++;
+  if (buildCounterAvail < 3) {
+    unittest.expect(o.altId, unittest.equals('foo'));
+    unittest.expect(o.availId, unittest.equals('foo'));
+    unittest.expect(o.captionExemption, unittest.equals('foo'));
+    unittest.expect(o.captionIncluded, unittest.isTrue);
+    unittest.expect(o.contentId, unittest.equals('foo'));
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.encodeId, unittest.equals('foo'));
+    unittest.expect(o.end, unittest.equals('foo'));
+    unittest.expect(o.episodeAltId, unittest.equals('foo'));
+    unittest.expect(o.episodeNumber, unittest.equals('foo'));
+    unittest.expect(o.episodeTitleInternalAlias, unittest.equals('foo'));
+    unittest.expect(o.formatProfile, unittest.equals('foo'));
+    unittest.expect(o.licenseType, unittest.equals('foo'));
+    checkUnnamed3208(o.pphNames);
+    unittest.expect(o.priceType, unittest.equals('foo'));
+    unittest.expect(o.priceValue, unittest.equals('foo'));
+    unittest.expect(o.productId, unittest.equals('foo'));
+    unittest.expect(o.ratingReason, unittest.equals('foo'));
+    unittest.expect(o.ratingSystem, unittest.equals('foo'));
+    unittest.expect(o.ratingValue, unittest.equals('foo'));
+    unittest.expect(o.releaseDate, unittest.equals('foo'));
+    unittest.expect(o.seasonAltId, unittest.equals('foo'));
+    unittest.expect(o.seasonNumber, unittest.equals('foo'));
+    unittest.expect(o.seasonTitleInternalAlias, unittest.equals('foo'));
+    unittest.expect(o.seriesAltId, unittest.equals('foo'));
+    unittest.expect(o.seriesTitleInternalAlias, unittest.equals('foo'));
+    unittest.expect(o.start, unittest.equals('foo'));
+    unittest.expect(o.storeLanguage, unittest.equals('foo'));
+    unittest.expect(o.suppressionLiftDate, unittest.equals('foo'));
+    unittest.expect(o.territory, unittest.equals('foo'));
+    unittest.expect(o.titleInternalAlias, unittest.equals('foo'));
+    unittest.expect(o.videoId, unittest.equals('foo'));
+    unittest.expect(o.workType, unittest.equals('foo'));
+  }
+  buildCounterAvail--;
+}
+
+buildUnnamed3209() {
+  var o = new core.List<api.Avail>();
+  o.add(buildAvail());
+  o.add(buildAvail());
+  return o;
+}
+
+checkUnnamed3209(core.List<api.Avail> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAvail(o[0]);
+  checkAvail(o[1]);
+}
+
+core.int buildCounterListAvailsResponse = 0;
+buildListAvailsResponse() {
+  var o = new api.ListAvailsResponse();
+  buildCounterListAvailsResponse++;
+  if (buildCounterListAvailsResponse < 3) {
+    o.avails = buildUnnamed3209();
+    o.nextPageToken = "foo";
+    o.totalSize = 42;
+  }
+  buildCounterListAvailsResponse--;
+  return o;
+}
+
+checkListAvailsResponse(api.ListAvailsResponse o) {
+  buildCounterListAvailsResponse++;
+  if (buildCounterListAvailsResponse < 3) {
+    checkUnnamed3209(o.avails);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.totalSize, unittest.equals(42));
+  }
+  buildCounterListAvailsResponse--;
+}
+
+buildUnnamed3210() {
+  var o = new core.List<api.Order>();
+  o.add(buildOrder());
+  o.add(buildOrder());
+  return o;
+}
+
+checkUnnamed3210(core.List<api.Order> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrder(o[0]);
+  checkOrder(o[1]);
+}
+
+core.int buildCounterListOrdersResponse = 0;
+buildListOrdersResponse() {
+  var o = new api.ListOrdersResponse();
+  buildCounterListOrdersResponse++;
+  if (buildCounterListOrdersResponse < 3) {
+    o.nextPageToken = "foo";
+    o.orders = buildUnnamed3210();
+    o.totalSize = 42;
+  }
+  buildCounterListOrdersResponse--;
+  return o;
+}
+
+checkListOrdersResponse(api.ListOrdersResponse o) {
+  buildCounterListOrdersResponse++;
+  if (buildCounterListOrdersResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3210(o.orders);
+    unittest.expect(o.totalSize, unittest.equals(42));
+  }
+  buildCounterListOrdersResponse--;
+}
+
+buildUnnamed3211() {
+  var o = new core.List<api.StoreInfo>();
+  o.add(buildStoreInfo());
+  o.add(buildStoreInfo());
+  return o;
+}
+
+checkUnnamed3211(core.List<api.StoreInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkStoreInfo(o[0]);
+  checkStoreInfo(o[1]);
+}
+
+core.int buildCounterListStoreInfosResponse = 0;
+buildListStoreInfosResponse() {
+  var o = new api.ListStoreInfosResponse();
+  buildCounterListStoreInfosResponse++;
+  if (buildCounterListStoreInfosResponse < 3) {
+    o.nextPageToken = "foo";
+    o.storeInfos = buildUnnamed3211();
+    o.totalSize = 42;
+  }
+  buildCounterListStoreInfosResponse--;
+  return o;
+}
+
+checkListStoreInfosResponse(api.ListStoreInfosResponse o) {
+  buildCounterListStoreInfosResponse++;
+  if (buildCounterListStoreInfosResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3211(o.storeInfos);
+    unittest.expect(o.totalSize, unittest.equals(42));
+  }
+  buildCounterListStoreInfosResponse--;
+}
+
+buildUnnamed3212() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3212(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterOrder = 0;
+buildOrder() {
+  var o = new api.Order();
+  buildCounterOrder++;
+  if (buildCounterOrder < 3) {
+    o.approvedTime = "foo";
+    o.channelId = "foo";
+    o.channelName = "foo";
+    o.countries = buildUnnamed3212();
+    o.customId = "foo";
+    o.earliestAvailStartTime = "foo";
+    o.episodeName = "foo";
+    o.legacyPriority = "foo";
+    o.name = "foo";
+    o.normalizedPriority = "foo";
+    o.orderId = "foo";
+    o.orderedTime = "foo";
+    o.pphName = "foo";
+    o.priority = 42.0;
+    o.receivedTime = "foo";
+    o.rejectionNote = "foo";
+    o.seasonName = "foo";
+    o.showName = "foo";
+    o.status = "foo";
+    o.statusDetail = "foo";
+    o.studioName = "foo";
+    o.type = "foo";
+    o.videoId = "foo";
+  }
+  buildCounterOrder--;
+  return o;
+}
+
+checkOrder(api.Order o) {
+  buildCounterOrder++;
+  if (buildCounterOrder < 3) {
+    unittest.expect(o.approvedTime, unittest.equals('foo'));
+    unittest.expect(o.channelId, unittest.equals('foo'));
+    unittest.expect(o.channelName, unittest.equals('foo'));
+    checkUnnamed3212(o.countries);
+    unittest.expect(o.customId, unittest.equals('foo'));
+    unittest.expect(o.earliestAvailStartTime, unittest.equals('foo'));
+    unittest.expect(o.episodeName, unittest.equals('foo'));
+    unittest.expect(o.legacyPriority, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.normalizedPriority, unittest.equals('foo'));
+    unittest.expect(o.orderId, unittest.equals('foo'));
+    unittest.expect(o.orderedTime, unittest.equals('foo'));
+    unittest.expect(o.pphName, unittest.equals('foo'));
+    unittest.expect(o.priority, unittest.equals(42.0));
+    unittest.expect(o.receivedTime, unittest.equals('foo'));
+    unittest.expect(o.rejectionNote, unittest.equals('foo'));
+    unittest.expect(o.seasonName, unittest.equals('foo'));
+    unittest.expect(o.showName, unittest.equals('foo'));
+    unittest.expect(o.status, unittest.equals('foo'));
+    unittest.expect(o.statusDetail, unittest.equals('foo'));
+    unittest.expect(o.studioName, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.videoId, unittest.equals('foo'));
+  }
+  buildCounterOrder--;
+}
+
+buildUnnamed3213() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3213(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3214() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3214(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3215() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3215(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterStoreInfo = 0;
+buildStoreInfo() {
+  var o = new api.StoreInfo();
+  buildCounterStoreInfo++;
+  if (buildCounterStoreInfo < 3) {
+    o.audioTracks = buildUnnamed3213();
+    o.country = "foo";
+    o.editLevelEidr = "foo";
+    o.episodeNumber = "foo";
+    o.hasAudio51 = true;
+    o.hasEstOffer = true;
+    o.hasHdOffer = true;
+    o.hasInfoCards = true;
+    o.hasSdOffer = true;
+    o.hasVodOffer = true;
+    o.liveTime = "foo";
+    o.mid = "foo";
+    o.name = "foo";
+    o.pphNames = buildUnnamed3214();
+    o.seasonId = "foo";
+    o.seasonName = "foo";
+    o.seasonNumber = "foo";
+    o.showId = "foo";
+    o.showName = "foo";
+    o.studioName = "foo";
+    o.subtitles = buildUnnamed3215();
+    o.titleLevelEidr = "foo";
+    o.trailerId = "foo";
+    o.type = "foo";
+    o.videoId = "foo";
+  }
+  buildCounterStoreInfo--;
+  return o;
+}
+
+checkStoreInfo(api.StoreInfo o) {
+  buildCounterStoreInfo++;
+  if (buildCounterStoreInfo < 3) {
+    checkUnnamed3213(o.audioTracks);
+    unittest.expect(o.country, unittest.equals('foo'));
+    unittest.expect(o.editLevelEidr, unittest.equals('foo'));
+    unittest.expect(o.episodeNumber, unittest.equals('foo'));
+    unittest.expect(o.hasAudio51, unittest.isTrue);
+    unittest.expect(o.hasEstOffer, unittest.isTrue);
+    unittest.expect(o.hasHdOffer, unittest.isTrue);
+    unittest.expect(o.hasInfoCards, unittest.isTrue);
+    unittest.expect(o.hasSdOffer, unittest.isTrue);
+    unittest.expect(o.hasVodOffer, unittest.isTrue);
+    unittest.expect(o.liveTime, unittest.equals('foo'));
+    unittest.expect(o.mid, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed3214(o.pphNames);
+    unittest.expect(o.seasonId, unittest.equals('foo'));
+    unittest.expect(o.seasonName, unittest.equals('foo'));
+    unittest.expect(o.seasonNumber, unittest.equals('foo'));
+    unittest.expect(o.showId, unittest.equals('foo'));
+    unittest.expect(o.showName, unittest.equals('foo'));
+    unittest.expect(o.studioName, unittest.equals('foo'));
+    checkUnnamed3215(o.subtitles);
+    unittest.expect(o.titleLevelEidr, unittest.equals('foo'));
+    unittest.expect(o.trailerId, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.videoId, unittest.equals('foo'));
+  }
+  buildCounterStoreInfo--;
+}
+
+buildUnnamed3216() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3216(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3217() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3217(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3218() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3218(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3219() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3219(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3220() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3220(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3221() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3221(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3222() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3222(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3223() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3223(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3224() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3224(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3225() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3225(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3226() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3226(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3227() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3227(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3228() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3228(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3229() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3229(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3230() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3230(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-Avail", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAvail();
+      var od = new api.Avail.fromJson(o.toJson());
+      checkAvail(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListAvailsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListAvailsResponse();
+      var od = new api.ListAvailsResponse.fromJson(o.toJson());
+      checkListAvailsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListOrdersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListOrdersResponse();
+      var od = new api.ListOrdersResponse.fromJson(o.toJson());
+      checkListOrdersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListStoreInfosResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListStoreInfosResponse();
+      var od = new api.ListStoreInfosResponse.fromJson(o.toJson());
+      checkListStoreInfosResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Order", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrder();
+      var od = new api.Order.fromJson(o.toJson());
+      checkOrder(od);
+    });
+  });
+
+  unittest.group("obj-schema-StoreInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStoreInfo();
+      var od = new api.StoreInfo.fromJson(o.toJson());
+      checkStoreInfo(od);
+    });
+  });
+
+  unittest.group("resource-AccountsAvailsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsAvailsResourceApi res =
+          new api.PlaymoviespartnerApi(mock).accounts.avails;
+      var arg_accountId = "foo";
+      var arg_availId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("v1/accounts/"));
+        pathOffset += 12;
+        index = path.indexOf("/avails/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/avails/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_availId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAvail());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_availId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Avail response) {
+        checkAvail(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsAvailsResourceApi res =
+          new api.PlaymoviespartnerApi(mock).accounts.avails;
+      var arg_accountId = "foo";
+      var arg_title = "foo";
+      var arg_pageToken = "foo";
+      var arg_videoIds = buildUnnamed3216();
+      var arg_pageSize = 42;
+      var arg_altIds = buildUnnamed3217();
+      var arg_pphNames = buildUnnamed3218();
+      var arg_altId = "foo";
+      var arg_studioNames = buildUnnamed3219();
+      var arg_territories = buildUnnamed3220();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("v1/accounts/"));
+        pathOffset += 12;
+        index = path.indexOf("/avails", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/avails"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["title"].first, unittest.equals(arg_title));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["videoIds"], unittest.equals(arg_videoIds));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["altIds"], unittest.equals(arg_altIds));
+        unittest.expect(queryMap["pphNames"], unittest.equals(arg_pphNames));
+        unittest.expect(queryMap["altId"].first, unittest.equals(arg_altId));
+        unittest.expect(
+            queryMap["studioNames"], unittest.equals(arg_studioNames));
+        unittest.expect(
+            queryMap["territories"], unittest.equals(arg_territories));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListAvailsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId,
+              title: arg_title,
+              pageToken: arg_pageToken,
+              videoIds: arg_videoIds,
+              pageSize: arg_pageSize,
+              altIds: arg_altIds,
+              pphNames: arg_pphNames,
+              altId: arg_altId,
+              studioNames: arg_studioNames,
+              territories: arg_territories,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListAvailsResponse response) {
+        checkListAvailsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsOrdersResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsOrdersResourceApi res =
+          new api.PlaymoviespartnerApi(mock).accounts.orders;
+      var arg_accountId = "foo";
+      var arg_orderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("v1/accounts/"));
+        pathOffset += 12;
+        index = path.indexOf("/orders/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/orders/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_orderId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOrder());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_orderId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Order response) {
+        checkOrder(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsOrdersResourceApi res =
+          new api.PlaymoviespartnerApi(mock).accounts.orders;
+      var arg_accountId = "foo";
+      var arg_videoIds = buildUnnamed3221();
+      var arg_customId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_pphNames = buildUnnamed3222();
+      var arg_status = buildUnnamed3223();
+      var arg_name = "foo";
+      var arg_studioNames = buildUnnamed3224();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("v1/accounts/"));
+        pathOffset += 12;
+        index = path.indexOf("/orders", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/orders"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["videoIds"], unittest.equals(arg_videoIds));
+        unittest.expect(
+            queryMap["customId"].first, unittest.equals(arg_customId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["pphNames"], unittest.equals(arg_pphNames));
+        unittest.expect(queryMap["status"], unittest.equals(arg_status));
+        unittest.expect(queryMap["name"].first, unittest.equals(arg_name));
+        unittest.expect(
+            queryMap["studioNames"], unittest.equals(arg_studioNames));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListOrdersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId,
+              videoIds: arg_videoIds,
+              customId: arg_customId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              pphNames: arg_pphNames,
+              status: arg_status,
+              name: arg_name,
+              studioNames: arg_studioNames,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListOrdersResponse response) {
+        checkListOrdersResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsStoreInfosResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsStoreInfosResourceApi res =
+          new api.PlaymoviespartnerApi(mock).accounts.storeInfos;
+      var arg_accountId = "foo";
+      var arg_seasonIds = buildUnnamed3225();
+      var arg_videoIds = buildUnnamed3226();
+      var arg_videoId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_mids = buildUnnamed3227();
+      var arg_pphNames = buildUnnamed3228();
+      var arg_countries = buildUnnamed3229();
+      var arg_name = "foo";
+      var arg_studioNames = buildUnnamed3230();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("v1/accounts/"));
+        pathOffset += 12;
+        index = path.indexOf("/storeInfos", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/storeInfos"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["seasonIds"], unittest.equals(arg_seasonIds));
+        unittest.expect(queryMap["videoIds"], unittest.equals(arg_videoIds));
+        unittest.expect(
+            queryMap["videoId"].first, unittest.equals(arg_videoId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["mids"], unittest.equals(arg_mids));
+        unittest.expect(queryMap["pphNames"], unittest.equals(arg_pphNames));
+        unittest.expect(queryMap["countries"], unittest.equals(arg_countries));
+        unittest.expect(queryMap["name"].first, unittest.equals(arg_name));
+        unittest.expect(
+            queryMap["studioNames"], unittest.equals(arg_studioNames));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListStoreInfosResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId,
+              seasonIds: arg_seasonIds,
+              videoIds: arg_videoIds,
+              videoId: arg_videoId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              mids: arg_mids,
+              pphNames: arg_pphNames,
+              countries: arg_countries,
+              name: arg_name,
+              studioNames: arg_studioNames,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListStoreInfosResponse response) {
+        checkListStoreInfosResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsStoreInfosCountryResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsStoreInfosCountryResourceApi res =
+          new api.PlaymoviespartnerApi(mock).accounts.storeInfos.country;
+      var arg_accountId = "foo";
+      var arg_videoId = "foo";
+      var arg_country = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("v1/accounts/"));
+        pathOffset += 12;
+        index = path.indexOf("/storeInfos/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/storeInfos/"));
+        pathOffset += 12;
+        index = path.indexOf("/country/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_videoId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/country/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_country"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildStoreInfo());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_videoId, arg_country, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.StoreInfo response) {
+        checkStoreInfo(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/plus/v1_test.dart b/generated/googleapis/test/plus/v1_test.dart
index a0977f5..659edaa 100644
--- a/generated/googleapis/test/plus/v1_test.dart
+++ b/generated/googleapis/test/plus/v1_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed150() {
+buildUnnamed134() {
   var o = new core.List<api.PlusAclentryResource>();
   o.add(buildPlusAclentryResource());
   o.add(buildPlusAclentryResource());
   return o;
 }
 
-checkUnnamed150(core.List<api.PlusAclentryResource> o) {
+checkUnnamed134(core.List<api.PlusAclentryResource> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPlusAclentryResource(o[0]);
   checkPlusAclentryResource(o[1]);
@@ -69,7 +69,7 @@
   buildCounterAcl++;
   if (buildCounterAcl < 3) {
     o.description = "foo";
-    o.items = buildUnnamed150();
+    o.items = buildUnnamed134();
     o.kind = "foo";
   }
   buildCounterAcl--;
@@ -80,7 +80,7 @@
   buildCounterAcl++;
   if (buildCounterAcl < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed150(o.items);
+    checkUnnamed134(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterAcl--;
@@ -453,14 +453,14 @@
   buildCounterActivityObjectAttachmentsThumbnails--;
 }
 
-buildUnnamed151() {
+buildUnnamed135() {
   var o = new core.List<api.ActivityObjectAttachmentsThumbnails>();
   o.add(buildActivityObjectAttachmentsThumbnails());
   o.add(buildActivityObjectAttachmentsThumbnails());
   return o;
 }
 
-checkUnnamed151(core.List<api.ActivityObjectAttachmentsThumbnails> o) {
+checkUnnamed135(core.List<api.ActivityObjectAttachmentsThumbnails> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkActivityObjectAttachmentsThumbnails(o[0]);
   checkActivityObjectAttachmentsThumbnails(o[1]);
@@ -478,7 +478,7 @@
     o.id = "foo";
     o.image = buildActivityObjectAttachmentsImage();
     o.objectType = "foo";
-    o.thumbnails = buildUnnamed151();
+    o.thumbnails = buildUnnamed135();
     o.url = "foo";
   }
   buildCounterActivityObjectAttachments--;
@@ -495,20 +495,20 @@
     unittest.expect(o.id, unittest.equals('foo'));
     checkActivityObjectAttachmentsImage(o.image);
     unittest.expect(o.objectType, unittest.equals('foo'));
-    checkUnnamed151(o.thumbnails);
+    checkUnnamed135(o.thumbnails);
     unittest.expect(o.url, unittest.equals('foo'));
   }
   buildCounterActivityObjectAttachments--;
 }
 
-buildUnnamed152() {
+buildUnnamed136() {
   var o = new core.List<api.ActivityObjectAttachments>();
   o.add(buildActivityObjectAttachments());
   o.add(buildActivityObjectAttachments());
   return o;
 }
 
-checkUnnamed152(core.List<api.ActivityObjectAttachments> o) {
+checkUnnamed136(core.List<api.ActivityObjectAttachments> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkActivityObjectAttachments(o[0]);
   checkActivityObjectAttachments(o[1]);
@@ -583,7 +583,7 @@
   buildCounterActivityObject++;
   if (buildCounterActivityObject < 3) {
     o.actor = buildActivityObjectActor();
-    o.attachments = buildUnnamed152();
+    o.attachments = buildUnnamed136();
     o.content = "foo";
     o.id = "foo";
     o.objectType = "foo";
@@ -601,7 +601,7 @@
   buildCounterActivityObject++;
   if (buildCounterActivityObject < 3) {
     checkActivityObjectActor(o.actor);
-    checkUnnamed152(o.attachments);
+    checkUnnamed136(o.attachments);
     unittest.expect(o.content, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.objectType, unittest.equals('foo'));
@@ -692,14 +692,14 @@
   buildCounterActivity--;
 }
 
-buildUnnamed153() {
+buildUnnamed137() {
   var o = new core.List<api.Activity>();
   o.add(buildActivity());
   o.add(buildActivity());
   return o;
 }
 
-checkUnnamed153(core.List<api.Activity> o) {
+checkUnnamed137(core.List<api.Activity> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkActivity(o[0]);
   checkActivity(o[1]);
@@ -712,7 +712,7 @@
   if (buildCounterActivityFeed < 3) {
     o.etag = "foo";
     o.id = "foo";
-    o.items = buildUnnamed153();
+    o.items = buildUnnamed137();
     o.kind = "foo";
     o.nextLink = "foo";
     o.nextPageToken = "foo";
@@ -729,7 +729,7 @@
   if (buildCounterActivityFeed < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed153(o.items);
+    checkUnnamed137(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
@@ -871,14 +871,14 @@
   buildCounterCommentInReplyTo--;
 }
 
-buildUnnamed154() {
+buildUnnamed138() {
   var o = new core.List<api.CommentInReplyTo>();
   o.add(buildCommentInReplyTo());
   o.add(buildCommentInReplyTo());
   return o;
 }
 
-checkUnnamed154(core.List<api.CommentInReplyTo> o) {
+checkUnnamed138(core.List<api.CommentInReplyTo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCommentInReplyTo(o[0]);
   checkCommentInReplyTo(o[1]);
@@ -934,7 +934,7 @@
     o.actor = buildCommentActor();
     o.etag = "foo";
     o.id = "foo";
-    o.inReplyTo = buildUnnamed154();
+    o.inReplyTo = buildUnnamed138();
     o.kind = "foo";
     o.object = buildCommentObject();
     o.plusoners = buildCommentPlusoners();
@@ -953,7 +953,7 @@
     checkCommentActor(o.actor);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed154(o.inReplyTo);
+    checkUnnamed138(o.inReplyTo);
     unittest.expect(o.kind, unittest.equals('foo'));
     checkCommentObject(o.object);
     checkCommentPlusoners(o.plusoners);
@@ -967,14 +967,14 @@
   buildCounterComment--;
 }
 
-buildUnnamed155() {
+buildUnnamed139() {
   var o = new core.List<api.Comment>();
   o.add(buildComment());
   o.add(buildComment());
   return o;
 }
 
-checkUnnamed155(core.List<api.Comment> o) {
+checkUnnamed139(core.List<api.Comment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkComment(o[0]);
   checkComment(o[1]);
@@ -987,7 +987,7 @@
   if (buildCounterCommentFeed < 3) {
     o.etag = "foo";
     o.id = "foo";
-    o.items = buildUnnamed155();
+    o.items = buildUnnamed139();
     o.kind = "foo";
     o.nextLink = "foo";
     o.nextPageToken = "foo";
@@ -1003,7 +1003,7 @@
   if (buildCounterCommentFeed < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed155(o.items);
+    checkUnnamed139(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextLink, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
@@ -1014,14 +1014,14 @@
   buildCounterCommentFeed--;
 }
 
-buildUnnamed156() {
+buildUnnamed140() {
   var o = new core.List<api.Person>();
   o.add(buildPerson());
   o.add(buildPerson());
   return o;
 }
 
-checkUnnamed156(core.List<api.Person> o) {
+checkUnnamed140(core.List<api.Person> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPerson(o[0]);
   checkPerson(o[1]);
@@ -1033,7 +1033,7 @@
   buildCounterPeopleFeed++;
   if (buildCounterPeopleFeed < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed156();
+    o.items = buildUnnamed140();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -1048,7 +1048,7 @@
   buildCounterPeopleFeed++;
   if (buildCounterPeopleFeed < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed156(o.items);
+    checkUnnamed140(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -1167,14 +1167,14 @@
   buildCounterPersonEmails--;
 }
 
-buildUnnamed157() {
+buildUnnamed141() {
   var o = new core.List<api.PersonEmails>();
   o.add(buildPersonEmails());
   o.add(buildPersonEmails());
   return o;
 }
 
-checkUnnamed157(core.List<api.PersonEmails> o) {
+checkUnnamed141(core.List<api.PersonEmails> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPersonEmails(o[0]);
   checkPersonEmails(o[1]);
@@ -1265,14 +1265,14 @@
   buildCounterPersonOrganizations--;
 }
 
-buildUnnamed158() {
+buildUnnamed142() {
   var o = new core.List<api.PersonOrganizations>();
   o.add(buildPersonOrganizations());
   o.add(buildPersonOrganizations());
   return o;
 }
 
-checkUnnamed158(core.List<api.PersonOrganizations> o) {
+checkUnnamed142(core.List<api.PersonOrganizations> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPersonOrganizations(o[0]);
   checkPersonOrganizations(o[1]);
@@ -1299,14 +1299,14 @@
   buildCounterPersonPlacesLived--;
 }
 
-buildUnnamed159() {
+buildUnnamed143() {
   var o = new core.List<api.PersonPlacesLived>();
   o.add(buildPersonPlacesLived());
   o.add(buildPersonPlacesLived());
   return o;
 }
 
-checkUnnamed159(core.List<api.PersonPlacesLived> o) {
+checkUnnamed143(core.List<api.PersonPlacesLived> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPersonPlacesLived(o[0]);
   checkPersonPlacesLived(o[1]);
@@ -1335,14 +1335,14 @@
   buildCounterPersonUrls--;
 }
 
-buildUnnamed160() {
+buildUnnamed144() {
   var o = new core.List<api.PersonUrls>();
   o.add(buildPersonUrls());
   o.add(buildPersonUrls());
   return o;
 }
 
-checkUnnamed160(core.List<api.PersonUrls> o) {
+checkUnnamed144(core.List<api.PersonUrls> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPersonUrls(o[0]);
   checkPersonUrls(o[1]);
@@ -1362,7 +1362,7 @@
     o.currentLocation = "foo";
     o.displayName = "foo";
     o.domain = "foo";
-    o.emails = buildUnnamed157();
+    o.emails = buildUnnamed141();
     o.etag = "foo";
     o.gender = "foo";
     o.id = "foo";
@@ -1374,14 +1374,14 @@
     o.nickname = "foo";
     o.objectType = "foo";
     o.occupation = "foo";
-    o.organizations = buildUnnamed158();
-    o.placesLived = buildUnnamed159();
+    o.organizations = buildUnnamed142();
+    o.placesLived = buildUnnamed143();
     o.plusOneCount = 42;
     o.relationshipStatus = "foo";
     o.skills = "foo";
     o.tagline = "foo";
     o.url = "foo";
-    o.urls = buildUnnamed160();
+    o.urls = buildUnnamed144();
     o.verified = true;
   }
   buildCounterPerson--;
@@ -1400,7 +1400,7 @@
     unittest.expect(o.currentLocation, unittest.equals('foo'));
     unittest.expect(o.displayName, unittest.equals('foo'));
     unittest.expect(o.domain, unittest.equals('foo'));
-    checkUnnamed157(o.emails);
+    checkUnnamed141(o.emails);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.gender, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
@@ -1412,14 +1412,14 @@
     unittest.expect(o.nickname, unittest.equals('foo'));
     unittest.expect(o.objectType, unittest.equals('foo'));
     unittest.expect(o.occupation, unittest.equals('foo'));
-    checkUnnamed158(o.organizations);
-    checkUnnamed159(o.placesLived);
+    checkUnnamed142(o.organizations);
+    checkUnnamed143(o.placesLived);
     unittest.expect(o.plusOneCount, unittest.equals(42));
     unittest.expect(o.relationshipStatus, unittest.equals('foo'));
     unittest.expect(o.skills, unittest.equals('foo'));
     unittest.expect(o.tagline, unittest.equals('foo'));
     unittest.expect(o.url, unittest.equals('foo'));
-    checkUnnamed160(o.urls);
+    checkUnnamed144(o.urls);
     unittest.expect(o.verified, unittest.isTrue);
   }
   buildCounterPerson--;
@@ -1942,6 +1942,7 @@
       var mock = new HttpServerMock();
       api.ActivitiesResourceApi res = new api.PlusApi(mock).activities;
       var arg_activityId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1978,6 +1979,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1986,7 +1988,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_activityId)
+          .get(arg_activityId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Activity response) {
         checkActivity(response);
       })));
@@ -1999,6 +2001,7 @@
       var arg_collection = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2048,6 +2051,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2057,7 +2061,9 @@
       }), true);
       res
           .list(arg_userId, arg_collection,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ActivityFeed response) {
         checkActivityFeed(response);
       })));
@@ -2071,6 +2077,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2113,6 +2120,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2125,7 +2133,8 @@
               language: arg_language,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ActivityFeed response) {
         checkActivityFeed(response);
       })));
@@ -2137,6 +2146,7 @@
       var mock = new HttpServerMock();
       api.CommentsResourceApi res = new api.PlusApi(mock).comments;
       var arg_commentId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2173,6 +2183,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2181,7 +2192,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_commentId)
+          .get(arg_commentId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Comment response) {
         checkComment(response);
       })));
@@ -2194,6 +2205,7 @@
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
       var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2242,6 +2254,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(
             queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2253,7 +2266,8 @@
           .list(arg_activityId,
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
-              sortOrder: arg_sortOrder)
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CommentFeed response) {
         checkCommentFeed(response);
       })));
@@ -2265,6 +2279,7 @@
       var mock = new HttpServerMock();
       api.PeopleResourceApi res = new api.PlusApi(mock).people;
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2301,6 +2316,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2308,7 +2324,9 @@
         var resp = convert.JSON.encode(buildPerson());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_userId).then(unittest.expectAsync1(((api.Person response) {
+      res
+          .get(arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Person response) {
         checkPerson(response);
       })));
     });
@@ -2321,6 +2339,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2372,6 +2391,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2383,7 +2403,8 @@
           .list(arg_userId, arg_collection,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PeopleFeed response) {
         checkPeopleFeed(response);
       })));
@@ -2396,6 +2417,7 @@
       var arg_collection = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2445,6 +2467,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2454,7 +2477,9 @@
       }), true);
       res
           .listByActivity(arg_activityId, arg_collection,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PeopleFeed response) {
         checkPeopleFeed(response);
       })));
@@ -2467,6 +2492,7 @@
       var arg_language = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2507,6 +2533,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2518,7 +2545,8 @@
           .search(arg_query,
               language: arg_language,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PeopleFeed response) {
         checkPeopleFeed(response);
       })));
diff --git a/generated/googleapis/test/plusdomains/v1_test.dart b/generated/googleapis/test/plusdomains/v1_test.dart
new file mode 100644
index 0000000..692ea1b
--- /dev/null
+++ b/generated/googleapis/test/plusdomains/v1_test.dart
@@ -0,0 +1,3776 @@
+library googleapis.plusDomains.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/plusdomains/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+buildUnnamed1093() {
+  var o = new core.List<api.PlusDomainsAclentryResource>();
+  o.add(buildPlusDomainsAclentryResource());
+  o.add(buildPlusDomainsAclentryResource());
+  return o;
+}
+
+checkUnnamed1093(core.List<api.PlusDomainsAclentryResource> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPlusDomainsAclentryResource(o[0]);
+  checkPlusDomainsAclentryResource(o[1]);
+}
+
+core.int buildCounterAcl = 0;
+buildAcl() {
+  var o = new api.Acl();
+  buildCounterAcl++;
+  if (buildCounterAcl < 3) {
+    o.description = "foo";
+    o.domainRestricted = true;
+    o.items = buildUnnamed1093();
+    o.kind = "foo";
+  }
+  buildCounterAcl--;
+  return o;
+}
+
+checkAcl(api.Acl o) {
+  buildCounterAcl++;
+  if (buildCounterAcl < 3) {
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.domainRestricted, unittest.isTrue);
+    checkUnnamed1093(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterAcl--;
+}
+
+core.int buildCounterActivityActorClientSpecificActorInfoYoutubeActorInfo = 0;
+buildActivityActorClientSpecificActorInfoYoutubeActorInfo() {
+  var o = new api.ActivityActorClientSpecificActorInfoYoutubeActorInfo();
+  buildCounterActivityActorClientSpecificActorInfoYoutubeActorInfo++;
+  if (buildCounterActivityActorClientSpecificActorInfoYoutubeActorInfo < 3) {
+    o.channelId = "foo";
+  }
+  buildCounterActivityActorClientSpecificActorInfoYoutubeActorInfo--;
+  return o;
+}
+
+checkActivityActorClientSpecificActorInfoYoutubeActorInfo(
+    api.ActivityActorClientSpecificActorInfoYoutubeActorInfo o) {
+  buildCounterActivityActorClientSpecificActorInfoYoutubeActorInfo++;
+  if (buildCounterActivityActorClientSpecificActorInfoYoutubeActorInfo < 3) {
+    unittest.expect(o.channelId, unittest.equals('foo'));
+  }
+  buildCounterActivityActorClientSpecificActorInfoYoutubeActorInfo--;
+}
+
+core.int buildCounterActivityActorClientSpecificActorInfo = 0;
+buildActivityActorClientSpecificActorInfo() {
+  var o = new api.ActivityActorClientSpecificActorInfo();
+  buildCounterActivityActorClientSpecificActorInfo++;
+  if (buildCounterActivityActorClientSpecificActorInfo < 3) {
+    o.youtubeActorInfo =
+        buildActivityActorClientSpecificActorInfoYoutubeActorInfo();
+  }
+  buildCounterActivityActorClientSpecificActorInfo--;
+  return o;
+}
+
+checkActivityActorClientSpecificActorInfo(
+    api.ActivityActorClientSpecificActorInfo o) {
+  buildCounterActivityActorClientSpecificActorInfo++;
+  if (buildCounterActivityActorClientSpecificActorInfo < 3) {
+    checkActivityActorClientSpecificActorInfoYoutubeActorInfo(
+        o.youtubeActorInfo);
+  }
+  buildCounterActivityActorClientSpecificActorInfo--;
+}
+
+core.int buildCounterActivityActorImage = 0;
+buildActivityActorImage() {
+  var o = new api.ActivityActorImage();
+  buildCounterActivityActorImage++;
+  if (buildCounterActivityActorImage < 3) {
+    o.url = "foo";
+  }
+  buildCounterActivityActorImage--;
+  return o;
+}
+
+checkActivityActorImage(api.ActivityActorImage o) {
+  buildCounterActivityActorImage++;
+  if (buildCounterActivityActorImage < 3) {
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterActivityActorImage--;
+}
+
+core.int buildCounterActivityActorName = 0;
+buildActivityActorName() {
+  var o = new api.ActivityActorName();
+  buildCounterActivityActorName++;
+  if (buildCounterActivityActorName < 3) {
+    o.familyName = "foo";
+    o.givenName = "foo";
+  }
+  buildCounterActivityActorName--;
+  return o;
+}
+
+checkActivityActorName(api.ActivityActorName o) {
+  buildCounterActivityActorName++;
+  if (buildCounterActivityActorName < 3) {
+    unittest.expect(o.familyName, unittest.equals('foo'));
+    unittest.expect(o.givenName, unittest.equals('foo'));
+  }
+  buildCounterActivityActorName--;
+}
+
+core.int buildCounterActivityActorVerification = 0;
+buildActivityActorVerification() {
+  var o = new api.ActivityActorVerification();
+  buildCounterActivityActorVerification++;
+  if (buildCounterActivityActorVerification < 3) {
+    o.adHocVerified = "foo";
+  }
+  buildCounterActivityActorVerification--;
+  return o;
+}
+
+checkActivityActorVerification(api.ActivityActorVerification o) {
+  buildCounterActivityActorVerification++;
+  if (buildCounterActivityActorVerification < 3) {
+    unittest.expect(o.adHocVerified, unittest.equals('foo'));
+  }
+  buildCounterActivityActorVerification--;
+}
+
+core.int buildCounterActivityActor = 0;
+buildActivityActor() {
+  var o = new api.ActivityActor();
+  buildCounterActivityActor++;
+  if (buildCounterActivityActor < 3) {
+    o.clientSpecificActorInfo = buildActivityActorClientSpecificActorInfo();
+    o.displayName = "foo";
+    o.id = "foo";
+    o.image = buildActivityActorImage();
+    o.name = buildActivityActorName();
+    o.url = "foo";
+    o.verification = buildActivityActorVerification();
+  }
+  buildCounterActivityActor--;
+  return o;
+}
+
+checkActivityActor(api.ActivityActor o) {
+  buildCounterActivityActor++;
+  if (buildCounterActivityActor < 3) {
+    checkActivityActorClientSpecificActorInfo(o.clientSpecificActorInfo);
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkActivityActorImage(o.image);
+    checkActivityActorName(o.name);
+    unittest.expect(o.url, unittest.equals('foo'));
+    checkActivityActorVerification(o.verification);
+  }
+  buildCounterActivityActor--;
+}
+
+core.int
+    buildCounterActivityObjectActorClientSpecificActorInfoYoutubeActorInfo = 0;
+buildActivityObjectActorClientSpecificActorInfoYoutubeActorInfo() {
+  var o = new api.ActivityObjectActorClientSpecificActorInfoYoutubeActorInfo();
+  buildCounterActivityObjectActorClientSpecificActorInfoYoutubeActorInfo++;
+  if (buildCounterActivityObjectActorClientSpecificActorInfoYoutubeActorInfo <
+      3) {
+    o.channelId = "foo";
+  }
+  buildCounterActivityObjectActorClientSpecificActorInfoYoutubeActorInfo--;
+  return o;
+}
+
+checkActivityObjectActorClientSpecificActorInfoYoutubeActorInfo(
+    api.ActivityObjectActorClientSpecificActorInfoYoutubeActorInfo o) {
+  buildCounterActivityObjectActorClientSpecificActorInfoYoutubeActorInfo++;
+  if (buildCounterActivityObjectActorClientSpecificActorInfoYoutubeActorInfo <
+      3) {
+    unittest.expect(o.channelId, unittest.equals('foo'));
+  }
+  buildCounterActivityObjectActorClientSpecificActorInfoYoutubeActorInfo--;
+}
+
+core.int buildCounterActivityObjectActorClientSpecificActorInfo = 0;
+buildActivityObjectActorClientSpecificActorInfo() {
+  var o = new api.ActivityObjectActorClientSpecificActorInfo();
+  buildCounterActivityObjectActorClientSpecificActorInfo++;
+  if (buildCounterActivityObjectActorClientSpecificActorInfo < 3) {
+    o.youtubeActorInfo =
+        buildActivityObjectActorClientSpecificActorInfoYoutubeActorInfo();
+  }
+  buildCounterActivityObjectActorClientSpecificActorInfo--;
+  return o;
+}
+
+checkActivityObjectActorClientSpecificActorInfo(
+    api.ActivityObjectActorClientSpecificActorInfo o) {
+  buildCounterActivityObjectActorClientSpecificActorInfo++;
+  if (buildCounterActivityObjectActorClientSpecificActorInfo < 3) {
+    checkActivityObjectActorClientSpecificActorInfoYoutubeActorInfo(
+        o.youtubeActorInfo);
+  }
+  buildCounterActivityObjectActorClientSpecificActorInfo--;
+}
+
+core.int buildCounterActivityObjectActorImage = 0;
+buildActivityObjectActorImage() {
+  var o = new api.ActivityObjectActorImage();
+  buildCounterActivityObjectActorImage++;
+  if (buildCounterActivityObjectActorImage < 3) {
+    o.url = "foo";
+  }
+  buildCounterActivityObjectActorImage--;
+  return o;
+}
+
+checkActivityObjectActorImage(api.ActivityObjectActorImage o) {
+  buildCounterActivityObjectActorImage++;
+  if (buildCounterActivityObjectActorImage < 3) {
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterActivityObjectActorImage--;
+}
+
+core.int buildCounterActivityObjectActorVerification = 0;
+buildActivityObjectActorVerification() {
+  var o = new api.ActivityObjectActorVerification();
+  buildCounterActivityObjectActorVerification++;
+  if (buildCounterActivityObjectActorVerification < 3) {
+    o.adHocVerified = "foo";
+  }
+  buildCounterActivityObjectActorVerification--;
+  return o;
+}
+
+checkActivityObjectActorVerification(api.ActivityObjectActorVerification o) {
+  buildCounterActivityObjectActorVerification++;
+  if (buildCounterActivityObjectActorVerification < 3) {
+    unittest.expect(o.adHocVerified, unittest.equals('foo'));
+  }
+  buildCounterActivityObjectActorVerification--;
+}
+
+core.int buildCounterActivityObjectActor = 0;
+buildActivityObjectActor() {
+  var o = new api.ActivityObjectActor();
+  buildCounterActivityObjectActor++;
+  if (buildCounterActivityObjectActor < 3) {
+    o.clientSpecificActorInfo =
+        buildActivityObjectActorClientSpecificActorInfo();
+    o.displayName = "foo";
+    o.id = "foo";
+    o.image = buildActivityObjectActorImage();
+    o.url = "foo";
+    o.verification = buildActivityObjectActorVerification();
+  }
+  buildCounterActivityObjectActor--;
+  return o;
+}
+
+checkActivityObjectActor(api.ActivityObjectActor o) {
+  buildCounterActivityObjectActor++;
+  if (buildCounterActivityObjectActor < 3) {
+    checkActivityObjectActorClientSpecificActorInfo(o.clientSpecificActorInfo);
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkActivityObjectActorImage(o.image);
+    unittest.expect(o.url, unittest.equals('foo'));
+    checkActivityObjectActorVerification(o.verification);
+  }
+  buildCounterActivityObjectActor--;
+}
+
+core.int buildCounterActivityObjectAttachmentsEmbed = 0;
+buildActivityObjectAttachmentsEmbed() {
+  var o = new api.ActivityObjectAttachmentsEmbed();
+  buildCounterActivityObjectAttachmentsEmbed++;
+  if (buildCounterActivityObjectAttachmentsEmbed < 3) {
+    o.type = "foo";
+    o.url = "foo";
+  }
+  buildCounterActivityObjectAttachmentsEmbed--;
+  return o;
+}
+
+checkActivityObjectAttachmentsEmbed(api.ActivityObjectAttachmentsEmbed o) {
+  buildCounterActivityObjectAttachmentsEmbed++;
+  if (buildCounterActivityObjectAttachmentsEmbed < 3) {
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterActivityObjectAttachmentsEmbed--;
+}
+
+core.int buildCounterActivityObjectAttachmentsFullImage = 0;
+buildActivityObjectAttachmentsFullImage() {
+  var o = new api.ActivityObjectAttachmentsFullImage();
+  buildCounterActivityObjectAttachmentsFullImage++;
+  if (buildCounterActivityObjectAttachmentsFullImage < 3) {
+    o.height = 42;
+    o.type = "foo";
+    o.url = "foo";
+    o.width = 42;
+  }
+  buildCounterActivityObjectAttachmentsFullImage--;
+  return o;
+}
+
+checkActivityObjectAttachmentsFullImage(
+    api.ActivityObjectAttachmentsFullImage o) {
+  buildCounterActivityObjectAttachmentsFullImage++;
+  if (buildCounterActivityObjectAttachmentsFullImage < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterActivityObjectAttachmentsFullImage--;
+}
+
+core.int buildCounterActivityObjectAttachmentsImage = 0;
+buildActivityObjectAttachmentsImage() {
+  var o = new api.ActivityObjectAttachmentsImage();
+  buildCounterActivityObjectAttachmentsImage++;
+  if (buildCounterActivityObjectAttachmentsImage < 3) {
+    o.height = 42;
+    o.type = "foo";
+    o.url = "foo";
+    o.width = 42;
+  }
+  buildCounterActivityObjectAttachmentsImage--;
+  return o;
+}
+
+checkActivityObjectAttachmentsImage(api.ActivityObjectAttachmentsImage o) {
+  buildCounterActivityObjectAttachmentsImage++;
+  if (buildCounterActivityObjectAttachmentsImage < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterActivityObjectAttachmentsImage--;
+}
+
+core.int buildCounterActivityObjectAttachmentsPreviewThumbnails = 0;
+buildActivityObjectAttachmentsPreviewThumbnails() {
+  var o = new api.ActivityObjectAttachmentsPreviewThumbnails();
+  buildCounterActivityObjectAttachmentsPreviewThumbnails++;
+  if (buildCounterActivityObjectAttachmentsPreviewThumbnails < 3) {
+    o.url = "foo";
+  }
+  buildCounterActivityObjectAttachmentsPreviewThumbnails--;
+  return o;
+}
+
+checkActivityObjectAttachmentsPreviewThumbnails(
+    api.ActivityObjectAttachmentsPreviewThumbnails o) {
+  buildCounterActivityObjectAttachmentsPreviewThumbnails++;
+  if (buildCounterActivityObjectAttachmentsPreviewThumbnails < 3) {
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterActivityObjectAttachmentsPreviewThumbnails--;
+}
+
+buildUnnamed1094() {
+  var o = new core.List<api.ActivityObjectAttachmentsPreviewThumbnails>();
+  o.add(buildActivityObjectAttachmentsPreviewThumbnails());
+  o.add(buildActivityObjectAttachmentsPreviewThumbnails());
+  return o;
+}
+
+checkUnnamed1094(core.List<api.ActivityObjectAttachmentsPreviewThumbnails> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkActivityObjectAttachmentsPreviewThumbnails(o[0]);
+  checkActivityObjectAttachmentsPreviewThumbnails(o[1]);
+}
+
+core.int buildCounterActivityObjectAttachmentsThumbnailsImage = 0;
+buildActivityObjectAttachmentsThumbnailsImage() {
+  var o = new api.ActivityObjectAttachmentsThumbnailsImage();
+  buildCounterActivityObjectAttachmentsThumbnailsImage++;
+  if (buildCounterActivityObjectAttachmentsThumbnailsImage < 3) {
+    o.height = 42;
+    o.type = "foo";
+    o.url = "foo";
+    o.width = 42;
+  }
+  buildCounterActivityObjectAttachmentsThumbnailsImage--;
+  return o;
+}
+
+checkActivityObjectAttachmentsThumbnailsImage(
+    api.ActivityObjectAttachmentsThumbnailsImage o) {
+  buildCounterActivityObjectAttachmentsThumbnailsImage++;
+  if (buildCounterActivityObjectAttachmentsThumbnailsImage < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterActivityObjectAttachmentsThumbnailsImage--;
+}
+
+core.int buildCounterActivityObjectAttachmentsThumbnails = 0;
+buildActivityObjectAttachmentsThumbnails() {
+  var o = new api.ActivityObjectAttachmentsThumbnails();
+  buildCounterActivityObjectAttachmentsThumbnails++;
+  if (buildCounterActivityObjectAttachmentsThumbnails < 3) {
+    o.description = "foo";
+    o.image = buildActivityObjectAttachmentsThumbnailsImage();
+    o.url = "foo";
+  }
+  buildCounterActivityObjectAttachmentsThumbnails--;
+  return o;
+}
+
+checkActivityObjectAttachmentsThumbnails(
+    api.ActivityObjectAttachmentsThumbnails o) {
+  buildCounterActivityObjectAttachmentsThumbnails++;
+  if (buildCounterActivityObjectAttachmentsThumbnails < 3) {
+    unittest.expect(o.description, unittest.equals('foo'));
+    checkActivityObjectAttachmentsThumbnailsImage(o.image);
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterActivityObjectAttachmentsThumbnails--;
+}
+
+buildUnnamed1095() {
+  var o = new core.List<api.ActivityObjectAttachmentsThumbnails>();
+  o.add(buildActivityObjectAttachmentsThumbnails());
+  o.add(buildActivityObjectAttachmentsThumbnails());
+  return o;
+}
+
+checkUnnamed1095(core.List<api.ActivityObjectAttachmentsThumbnails> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkActivityObjectAttachmentsThumbnails(o[0]);
+  checkActivityObjectAttachmentsThumbnails(o[1]);
+}
+
+core.int buildCounterActivityObjectAttachments = 0;
+buildActivityObjectAttachments() {
+  var o = new api.ActivityObjectAttachments();
+  buildCounterActivityObjectAttachments++;
+  if (buildCounterActivityObjectAttachments < 3) {
+    o.content = "foo";
+    o.displayName = "foo";
+    o.embed = buildActivityObjectAttachmentsEmbed();
+    o.fullImage = buildActivityObjectAttachmentsFullImage();
+    o.id = "foo";
+    o.image = buildActivityObjectAttachmentsImage();
+    o.objectType = "foo";
+    o.previewThumbnails = buildUnnamed1094();
+    o.thumbnails = buildUnnamed1095();
+    o.url = "foo";
+  }
+  buildCounterActivityObjectAttachments--;
+  return o;
+}
+
+checkActivityObjectAttachments(api.ActivityObjectAttachments o) {
+  buildCounterActivityObjectAttachments++;
+  if (buildCounterActivityObjectAttachments < 3) {
+    unittest.expect(o.content, unittest.equals('foo'));
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    checkActivityObjectAttachmentsEmbed(o.embed);
+    checkActivityObjectAttachmentsFullImage(o.fullImage);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkActivityObjectAttachmentsImage(o.image);
+    unittest.expect(o.objectType, unittest.equals('foo'));
+    checkUnnamed1094(o.previewThumbnails);
+    checkUnnamed1095(o.thumbnails);
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterActivityObjectAttachments--;
+}
+
+buildUnnamed1096() {
+  var o = new core.List<api.ActivityObjectAttachments>();
+  o.add(buildActivityObjectAttachments());
+  o.add(buildActivityObjectAttachments());
+  return o;
+}
+
+checkUnnamed1096(core.List<api.ActivityObjectAttachments> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkActivityObjectAttachments(o[0]);
+  checkActivityObjectAttachments(o[1]);
+}
+
+core.int buildCounterActivityObjectPlusoners = 0;
+buildActivityObjectPlusoners() {
+  var o = new api.ActivityObjectPlusoners();
+  buildCounterActivityObjectPlusoners++;
+  if (buildCounterActivityObjectPlusoners < 3) {
+    o.selfLink = "foo";
+    o.totalItems = 42;
+  }
+  buildCounterActivityObjectPlusoners--;
+  return o;
+}
+
+checkActivityObjectPlusoners(api.ActivityObjectPlusoners o) {
+  buildCounterActivityObjectPlusoners++;
+  if (buildCounterActivityObjectPlusoners < 3) {
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterActivityObjectPlusoners--;
+}
+
+core.int buildCounterActivityObjectReplies = 0;
+buildActivityObjectReplies() {
+  var o = new api.ActivityObjectReplies();
+  buildCounterActivityObjectReplies++;
+  if (buildCounterActivityObjectReplies < 3) {
+    o.selfLink = "foo";
+    o.totalItems = 42;
+  }
+  buildCounterActivityObjectReplies--;
+  return o;
+}
+
+checkActivityObjectReplies(api.ActivityObjectReplies o) {
+  buildCounterActivityObjectReplies++;
+  if (buildCounterActivityObjectReplies < 3) {
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterActivityObjectReplies--;
+}
+
+core.int buildCounterActivityObjectResharers = 0;
+buildActivityObjectResharers() {
+  var o = new api.ActivityObjectResharers();
+  buildCounterActivityObjectResharers++;
+  if (buildCounterActivityObjectResharers < 3) {
+    o.selfLink = "foo";
+    o.totalItems = 42;
+  }
+  buildCounterActivityObjectResharers--;
+  return o;
+}
+
+checkActivityObjectResharers(api.ActivityObjectResharers o) {
+  buildCounterActivityObjectResharers++;
+  if (buildCounterActivityObjectResharers < 3) {
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterActivityObjectResharers--;
+}
+
+core.int buildCounterActivityObjectStatusForViewer = 0;
+buildActivityObjectStatusForViewer() {
+  var o = new api.ActivityObjectStatusForViewer();
+  buildCounterActivityObjectStatusForViewer++;
+  if (buildCounterActivityObjectStatusForViewer < 3) {
+    o.canComment = true;
+    o.canPlusone = true;
+    o.canUpdate = true;
+    o.isPlusOned = true;
+    o.resharingDisabled = true;
+  }
+  buildCounterActivityObjectStatusForViewer--;
+  return o;
+}
+
+checkActivityObjectStatusForViewer(api.ActivityObjectStatusForViewer o) {
+  buildCounterActivityObjectStatusForViewer++;
+  if (buildCounterActivityObjectStatusForViewer < 3) {
+    unittest.expect(o.canComment, unittest.isTrue);
+    unittest.expect(o.canPlusone, unittest.isTrue);
+    unittest.expect(o.canUpdate, unittest.isTrue);
+    unittest.expect(o.isPlusOned, unittest.isTrue);
+    unittest.expect(o.resharingDisabled, unittest.isTrue);
+  }
+  buildCounterActivityObjectStatusForViewer--;
+}
+
+core.int buildCounterActivityObject = 0;
+buildActivityObject() {
+  var o = new api.ActivityObject();
+  buildCounterActivityObject++;
+  if (buildCounterActivityObject < 3) {
+    o.actor = buildActivityObjectActor();
+    o.attachments = buildUnnamed1096();
+    o.content = "foo";
+    o.id = "foo";
+    o.objectType = "foo";
+    o.originalContent = "foo";
+    o.plusoners = buildActivityObjectPlusoners();
+    o.replies = buildActivityObjectReplies();
+    o.resharers = buildActivityObjectResharers();
+    o.statusForViewer = buildActivityObjectStatusForViewer();
+    o.url = "foo";
+  }
+  buildCounterActivityObject--;
+  return o;
+}
+
+checkActivityObject(api.ActivityObject o) {
+  buildCounterActivityObject++;
+  if (buildCounterActivityObject < 3) {
+    checkActivityObjectActor(o.actor);
+    checkUnnamed1096(o.attachments);
+    unittest.expect(o.content, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.objectType, unittest.equals('foo'));
+    unittest.expect(o.originalContent, unittest.equals('foo'));
+    checkActivityObjectPlusoners(o.plusoners);
+    checkActivityObjectReplies(o.replies);
+    checkActivityObjectResharers(o.resharers);
+    checkActivityObjectStatusForViewer(o.statusForViewer);
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterActivityObject--;
+}
+
+core.int buildCounterActivityProvider = 0;
+buildActivityProvider() {
+  var o = new api.ActivityProvider();
+  buildCounterActivityProvider++;
+  if (buildCounterActivityProvider < 3) {
+    o.title = "foo";
+  }
+  buildCounterActivityProvider--;
+  return o;
+}
+
+checkActivityProvider(api.ActivityProvider o) {
+  buildCounterActivityProvider++;
+  if (buildCounterActivityProvider < 3) {
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterActivityProvider--;
+}
+
+core.int buildCounterActivity = 0;
+buildActivity() {
+  var o = new api.Activity();
+  buildCounterActivity++;
+  if (buildCounterActivity < 3) {
+    o.access = buildAcl();
+    o.actor = buildActivityActor();
+    o.address = "foo";
+    o.annotation = "foo";
+    o.crosspostSource = "foo";
+    o.etag = "foo";
+    o.geocode = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.location = buildPlace();
+    o.object = buildActivityObject();
+    o.placeId = "foo";
+    o.placeName = "foo";
+    o.provider = buildActivityProvider();
+    o.published = core.DateTime.parse("2002-02-27T14:01:02");
+    o.radius = "foo";
+    o.title = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.url = "foo";
+    o.verb = "foo";
+  }
+  buildCounterActivity--;
+  return o;
+}
+
+checkActivity(api.Activity o) {
+  buildCounterActivity++;
+  if (buildCounterActivity < 3) {
+    checkAcl(o.access);
+    checkActivityActor(o.actor);
+    unittest.expect(o.address, unittest.equals('foo'));
+    unittest.expect(o.annotation, unittest.equals('foo'));
+    unittest.expect(o.crosspostSource, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.geocode, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkPlace(o.location);
+    checkActivityObject(o.object);
+    unittest.expect(o.placeId, unittest.equals('foo'));
+    unittest.expect(o.placeName, unittest.equals('foo'));
+    checkActivityProvider(o.provider);
+    unittest.expect(o.published,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.radius, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.verb, unittest.equals('foo'));
+  }
+  buildCounterActivity--;
+}
+
+buildUnnamed1097() {
+  var o = new core.List<api.Activity>();
+  o.add(buildActivity());
+  o.add(buildActivity());
+  return o;
+}
+
+checkUnnamed1097(core.List<api.Activity> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkActivity(o[0]);
+  checkActivity(o[1]);
+}
+
+core.int buildCounterActivityFeed = 0;
+buildActivityFeed() {
+  var o = new api.ActivityFeed();
+  buildCounterActivityFeed++;
+  if (buildCounterActivityFeed < 3) {
+    o.etag = "foo";
+    o.id = "foo";
+    o.items = buildUnnamed1097();
+    o.kind = "foo";
+    o.nextLink = "foo";
+    o.nextPageToken = "foo";
+    o.selfLink = "foo";
+    o.title = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+  }
+  buildCounterActivityFeed--;
+  return o;
+}
+
+checkActivityFeed(api.ActivityFeed o) {
+  buildCounterActivityFeed++;
+  if (buildCounterActivityFeed < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed1097(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextLink, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+  }
+  buildCounterActivityFeed--;
+}
+
+core.int buildCounterAudience = 0;
+buildAudience() {
+  var o = new api.Audience();
+  buildCounterAudience++;
+  if (buildCounterAudience < 3) {
+    o.etag = "foo";
+    o.item = buildPlusDomainsAclentryResource();
+    o.kind = "foo";
+    o.memberCount = 42;
+    o.visibility = "foo";
+  }
+  buildCounterAudience--;
+  return o;
+}
+
+checkAudience(api.Audience o) {
+  buildCounterAudience++;
+  if (buildCounterAudience < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkPlusDomainsAclentryResource(o.item);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.memberCount, unittest.equals(42));
+    unittest.expect(o.visibility, unittest.equals('foo'));
+  }
+  buildCounterAudience--;
+}
+
+buildUnnamed1098() {
+  var o = new core.List<api.Audience>();
+  o.add(buildAudience());
+  o.add(buildAudience());
+  return o;
+}
+
+checkUnnamed1098(core.List<api.Audience> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAudience(o[0]);
+  checkAudience(o[1]);
+}
+
+core.int buildCounterAudiencesFeed = 0;
+buildAudiencesFeed() {
+  var o = new api.AudiencesFeed();
+  buildCounterAudiencesFeed++;
+  if (buildCounterAudiencesFeed < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1098();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.totalItems = 42;
+  }
+  buildCounterAudiencesFeed--;
+  return o;
+}
+
+checkAudiencesFeed(api.AudiencesFeed o) {
+  buildCounterAudiencesFeed++;
+  if (buildCounterAudiencesFeed < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1098(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterAudiencesFeed--;
+}
+
+core.int buildCounterCirclePeople = 0;
+buildCirclePeople() {
+  var o = new api.CirclePeople();
+  buildCounterCirclePeople++;
+  if (buildCounterCirclePeople < 3) {
+    o.totalItems = 42;
+  }
+  buildCounterCirclePeople--;
+  return o;
+}
+
+checkCirclePeople(api.CirclePeople o) {
+  buildCounterCirclePeople++;
+  if (buildCounterCirclePeople < 3) {
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterCirclePeople--;
+}
+
+core.int buildCounterCircle = 0;
+buildCircle() {
+  var o = new api.Circle();
+  buildCounterCircle++;
+  if (buildCounterCircle < 3) {
+    o.description = "foo";
+    o.displayName = "foo";
+    o.etag = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.people = buildCirclePeople();
+    o.selfLink = "foo";
+  }
+  buildCounterCircle--;
+  return o;
+}
+
+checkCircle(api.Circle o) {
+  buildCounterCircle++;
+  if (buildCounterCircle < 3) {
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkCirclePeople(o.people);
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+  }
+  buildCounterCircle--;
+}
+
+buildUnnamed1099() {
+  var o = new core.List<api.Circle>();
+  o.add(buildCircle());
+  o.add(buildCircle());
+  return o;
+}
+
+checkUnnamed1099(core.List<api.Circle> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCircle(o[0]);
+  checkCircle(o[1]);
+}
+
+core.int buildCounterCircleFeed = 0;
+buildCircleFeed() {
+  var o = new api.CircleFeed();
+  buildCounterCircleFeed++;
+  if (buildCounterCircleFeed < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1099();
+    o.kind = "foo";
+    o.nextLink = "foo";
+    o.nextPageToken = "foo";
+    o.selfLink = "foo";
+    o.title = "foo";
+    o.totalItems = 42;
+  }
+  buildCounterCircleFeed--;
+  return o;
+}
+
+checkCircleFeed(api.CircleFeed o) {
+  buildCounterCircleFeed++;
+  if (buildCounterCircleFeed < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1099(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextLink, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterCircleFeed--;
+}
+
+core.int buildCounterCommentActorClientSpecificActorInfoYoutubeActorInfo = 0;
+buildCommentActorClientSpecificActorInfoYoutubeActorInfo() {
+  var o = new api.CommentActorClientSpecificActorInfoYoutubeActorInfo();
+  buildCounterCommentActorClientSpecificActorInfoYoutubeActorInfo++;
+  if (buildCounterCommentActorClientSpecificActorInfoYoutubeActorInfo < 3) {
+    o.channelId = "foo";
+  }
+  buildCounterCommentActorClientSpecificActorInfoYoutubeActorInfo--;
+  return o;
+}
+
+checkCommentActorClientSpecificActorInfoYoutubeActorInfo(
+    api.CommentActorClientSpecificActorInfoYoutubeActorInfo o) {
+  buildCounterCommentActorClientSpecificActorInfoYoutubeActorInfo++;
+  if (buildCounterCommentActorClientSpecificActorInfoYoutubeActorInfo < 3) {
+    unittest.expect(o.channelId, unittest.equals('foo'));
+  }
+  buildCounterCommentActorClientSpecificActorInfoYoutubeActorInfo--;
+}
+
+core.int buildCounterCommentActorClientSpecificActorInfo = 0;
+buildCommentActorClientSpecificActorInfo() {
+  var o = new api.CommentActorClientSpecificActorInfo();
+  buildCounterCommentActorClientSpecificActorInfo++;
+  if (buildCounterCommentActorClientSpecificActorInfo < 3) {
+    o.youtubeActorInfo =
+        buildCommentActorClientSpecificActorInfoYoutubeActorInfo();
+  }
+  buildCounterCommentActorClientSpecificActorInfo--;
+  return o;
+}
+
+checkCommentActorClientSpecificActorInfo(
+    api.CommentActorClientSpecificActorInfo o) {
+  buildCounterCommentActorClientSpecificActorInfo++;
+  if (buildCounterCommentActorClientSpecificActorInfo < 3) {
+    checkCommentActorClientSpecificActorInfoYoutubeActorInfo(
+        o.youtubeActorInfo);
+  }
+  buildCounterCommentActorClientSpecificActorInfo--;
+}
+
+core.int buildCounterCommentActorImage = 0;
+buildCommentActorImage() {
+  var o = new api.CommentActorImage();
+  buildCounterCommentActorImage++;
+  if (buildCounterCommentActorImage < 3) {
+    o.url = "foo";
+  }
+  buildCounterCommentActorImage--;
+  return o;
+}
+
+checkCommentActorImage(api.CommentActorImage o) {
+  buildCounterCommentActorImage++;
+  if (buildCounterCommentActorImage < 3) {
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterCommentActorImage--;
+}
+
+core.int buildCounterCommentActorVerification = 0;
+buildCommentActorVerification() {
+  var o = new api.CommentActorVerification();
+  buildCounterCommentActorVerification++;
+  if (buildCounterCommentActorVerification < 3) {
+    o.adHocVerified = "foo";
+  }
+  buildCounterCommentActorVerification--;
+  return o;
+}
+
+checkCommentActorVerification(api.CommentActorVerification o) {
+  buildCounterCommentActorVerification++;
+  if (buildCounterCommentActorVerification < 3) {
+    unittest.expect(o.adHocVerified, unittest.equals('foo'));
+  }
+  buildCounterCommentActorVerification--;
+}
+
+core.int buildCounterCommentActor = 0;
+buildCommentActor() {
+  var o = new api.CommentActor();
+  buildCounterCommentActor++;
+  if (buildCounterCommentActor < 3) {
+    o.clientSpecificActorInfo = buildCommentActorClientSpecificActorInfo();
+    o.displayName = "foo";
+    o.id = "foo";
+    o.image = buildCommentActorImage();
+    o.url = "foo";
+    o.verification = buildCommentActorVerification();
+  }
+  buildCounterCommentActor--;
+  return o;
+}
+
+checkCommentActor(api.CommentActor o) {
+  buildCounterCommentActor++;
+  if (buildCounterCommentActor < 3) {
+    checkCommentActorClientSpecificActorInfo(o.clientSpecificActorInfo);
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkCommentActorImage(o.image);
+    unittest.expect(o.url, unittest.equals('foo'));
+    checkCommentActorVerification(o.verification);
+  }
+  buildCounterCommentActor--;
+}
+
+core.int buildCounterCommentInReplyTo = 0;
+buildCommentInReplyTo() {
+  var o = new api.CommentInReplyTo();
+  buildCounterCommentInReplyTo++;
+  if (buildCounterCommentInReplyTo < 3) {
+    o.id = "foo";
+    o.url = "foo";
+  }
+  buildCounterCommentInReplyTo--;
+  return o;
+}
+
+checkCommentInReplyTo(api.CommentInReplyTo o) {
+  buildCounterCommentInReplyTo++;
+  if (buildCounterCommentInReplyTo < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterCommentInReplyTo--;
+}
+
+buildUnnamed1100() {
+  var o = new core.List<api.CommentInReplyTo>();
+  o.add(buildCommentInReplyTo());
+  o.add(buildCommentInReplyTo());
+  return o;
+}
+
+checkUnnamed1100(core.List<api.CommentInReplyTo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCommentInReplyTo(o[0]);
+  checkCommentInReplyTo(o[1]);
+}
+
+core.int buildCounterCommentObject = 0;
+buildCommentObject() {
+  var o = new api.CommentObject();
+  buildCounterCommentObject++;
+  if (buildCounterCommentObject < 3) {
+    o.content = "foo";
+    o.objectType = "foo";
+    o.originalContent = "foo";
+  }
+  buildCounterCommentObject--;
+  return o;
+}
+
+checkCommentObject(api.CommentObject o) {
+  buildCounterCommentObject++;
+  if (buildCounterCommentObject < 3) {
+    unittest.expect(o.content, unittest.equals('foo'));
+    unittest.expect(o.objectType, unittest.equals('foo'));
+    unittest.expect(o.originalContent, unittest.equals('foo'));
+  }
+  buildCounterCommentObject--;
+}
+
+core.int buildCounterCommentPlusoners = 0;
+buildCommentPlusoners() {
+  var o = new api.CommentPlusoners();
+  buildCounterCommentPlusoners++;
+  if (buildCounterCommentPlusoners < 3) {
+    o.totalItems = 42;
+  }
+  buildCounterCommentPlusoners--;
+  return o;
+}
+
+checkCommentPlusoners(api.CommentPlusoners o) {
+  buildCounterCommentPlusoners++;
+  if (buildCounterCommentPlusoners < 3) {
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterCommentPlusoners--;
+}
+
+core.int buildCounterComment = 0;
+buildComment() {
+  var o = new api.Comment();
+  buildCounterComment++;
+  if (buildCounterComment < 3) {
+    o.actor = buildCommentActor();
+    o.etag = "foo";
+    o.id = "foo";
+    o.inReplyTo = buildUnnamed1100();
+    o.kind = "foo";
+    o.object = buildCommentObject();
+    o.plusoners = buildCommentPlusoners();
+    o.published = core.DateTime.parse("2002-02-27T14:01:02");
+    o.selfLink = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.verb = "foo";
+  }
+  buildCounterComment--;
+  return o;
+}
+
+checkComment(api.Comment o) {
+  buildCounterComment++;
+  if (buildCounterComment < 3) {
+    checkCommentActor(o.actor);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed1100(o.inReplyTo);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkCommentObject(o.object);
+    checkCommentPlusoners(o.plusoners);
+    unittest.expect(o.published,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.verb, unittest.equals('foo'));
+  }
+  buildCounterComment--;
+}
+
+buildUnnamed1101() {
+  var o = new core.List<api.Comment>();
+  o.add(buildComment());
+  o.add(buildComment());
+  return o;
+}
+
+checkUnnamed1101(core.List<api.Comment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkComment(o[0]);
+  checkComment(o[1]);
+}
+
+core.int buildCounterCommentFeed = 0;
+buildCommentFeed() {
+  var o = new api.CommentFeed();
+  buildCounterCommentFeed++;
+  if (buildCounterCommentFeed < 3) {
+    o.etag = "foo";
+    o.id = "foo";
+    o.items = buildUnnamed1101();
+    o.kind = "foo";
+    o.nextLink = "foo";
+    o.nextPageToken = "foo";
+    o.title = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+  }
+  buildCounterCommentFeed--;
+  return o;
+}
+
+checkCommentFeed(api.CommentFeed o) {
+  buildCounterCommentFeed++;
+  if (buildCounterCommentFeed < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkUnnamed1101(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextLink, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+  }
+  buildCounterCommentFeed--;
+}
+
+core.int buildCounterMediaAuthorImage = 0;
+buildMediaAuthorImage() {
+  var o = new api.MediaAuthorImage();
+  buildCounterMediaAuthorImage++;
+  if (buildCounterMediaAuthorImage < 3) {
+    o.url = "foo";
+  }
+  buildCounterMediaAuthorImage--;
+  return o;
+}
+
+checkMediaAuthorImage(api.MediaAuthorImage o) {
+  buildCounterMediaAuthorImage++;
+  if (buildCounterMediaAuthorImage < 3) {
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterMediaAuthorImage--;
+}
+
+core.int buildCounterMediaAuthor = 0;
+buildMediaAuthor() {
+  var o = new api.MediaAuthor();
+  buildCounterMediaAuthor++;
+  if (buildCounterMediaAuthor < 3) {
+    o.displayName = "foo";
+    o.id = "foo";
+    o.image = buildMediaAuthorImage();
+    o.url = "foo";
+  }
+  buildCounterMediaAuthor--;
+  return o;
+}
+
+checkMediaAuthor(api.MediaAuthor o) {
+  buildCounterMediaAuthor++;
+  if (buildCounterMediaAuthor < 3) {
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkMediaAuthorImage(o.image);
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterMediaAuthor--;
+}
+
+core.int buildCounterMediaExif = 0;
+buildMediaExif() {
+  var o = new api.MediaExif();
+  buildCounterMediaExif++;
+  if (buildCounterMediaExif < 3) {
+    o.time = core.DateTime.parse("2002-02-27T14:01:02");
+  }
+  buildCounterMediaExif--;
+  return o;
+}
+
+checkMediaExif(api.MediaExif o) {
+  buildCounterMediaExif++;
+  if (buildCounterMediaExif < 3) {
+    unittest.expect(
+        o.time, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+  }
+  buildCounterMediaExif--;
+}
+
+buildUnnamed1102() {
+  var o = new core.List<api.Videostream>();
+  o.add(buildVideostream());
+  o.add(buildVideostream());
+  return o;
+}
+
+checkUnnamed1102(core.List<api.Videostream> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVideostream(o[0]);
+  checkVideostream(o[1]);
+}
+
+core.int buildCounterMedia = 0;
+buildMedia() {
+  var o = new api.Media();
+  buildCounterMedia++;
+  if (buildCounterMedia < 3) {
+    o.author = buildMediaAuthor();
+    o.displayName = "foo";
+    o.etag = "foo";
+    o.exif = buildMediaExif();
+    o.height = 42;
+    o.id = "foo";
+    o.kind = "foo";
+    o.mediaCreatedTime = core.DateTime.parse("2002-02-27T14:01:02");
+    o.mediaUrl = "foo";
+    o.published = core.DateTime.parse("2002-02-27T14:01:02");
+    o.sizeBytes = "foo";
+    o.streams = buildUnnamed1102();
+    o.summary = "foo";
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.url = "foo";
+    o.videoDuration = "foo";
+    o.videoStatus = "foo";
+    o.width = 42;
+  }
+  buildCounterMedia--;
+  return o;
+}
+
+checkMedia(api.Media o) {
+  buildCounterMedia++;
+  if (buildCounterMedia < 3) {
+    checkMediaAuthor(o.author);
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkMediaExif(o.exif);
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.mediaCreatedTime,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.mediaUrl, unittest.equals('foo'));
+    unittest.expect(o.published,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.sizeBytes, unittest.equals('foo'));
+    checkUnnamed1102(o.streams);
+    unittest.expect(o.summary, unittest.equals('foo'));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.videoDuration, unittest.equals('foo'));
+    unittest.expect(o.videoStatus, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterMedia--;
+}
+
+buildUnnamed1103() {
+  var o = new core.List<api.Person>();
+  o.add(buildPerson());
+  o.add(buildPerson());
+  return o;
+}
+
+checkUnnamed1103(core.List<api.Person> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPerson(o[0]);
+  checkPerson(o[1]);
+}
+
+core.int buildCounterPeopleFeed = 0;
+buildPeopleFeed() {
+  var o = new api.PeopleFeed();
+  buildCounterPeopleFeed++;
+  if (buildCounterPeopleFeed < 3) {
+    o.etag = "foo";
+    o.items = buildUnnamed1103();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.selfLink = "foo";
+    o.title = "foo";
+    o.totalItems = 42;
+  }
+  buildCounterPeopleFeed--;
+  return o;
+}
+
+checkPeopleFeed(api.PeopleFeed o) {
+  buildCounterPeopleFeed++;
+  if (buildCounterPeopleFeed < 3) {
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed1103(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.totalItems, unittest.equals(42));
+  }
+  buildCounterPeopleFeed--;
+}
+
+core.int buildCounterPersonCoverCoverInfo = 0;
+buildPersonCoverCoverInfo() {
+  var o = new api.PersonCoverCoverInfo();
+  buildCounterPersonCoverCoverInfo++;
+  if (buildCounterPersonCoverCoverInfo < 3) {
+    o.leftImageOffset = 42;
+    o.topImageOffset = 42;
+  }
+  buildCounterPersonCoverCoverInfo--;
+  return o;
+}
+
+checkPersonCoverCoverInfo(api.PersonCoverCoverInfo o) {
+  buildCounterPersonCoverCoverInfo++;
+  if (buildCounterPersonCoverCoverInfo < 3) {
+    unittest.expect(o.leftImageOffset, unittest.equals(42));
+    unittest.expect(o.topImageOffset, unittest.equals(42));
+  }
+  buildCounterPersonCoverCoverInfo--;
+}
+
+core.int buildCounterPersonCoverCoverPhoto = 0;
+buildPersonCoverCoverPhoto() {
+  var o = new api.PersonCoverCoverPhoto();
+  buildCounterPersonCoverCoverPhoto++;
+  if (buildCounterPersonCoverCoverPhoto < 3) {
+    o.height = 42;
+    o.url = "foo";
+    o.width = 42;
+  }
+  buildCounterPersonCoverCoverPhoto--;
+  return o;
+}
+
+checkPersonCoverCoverPhoto(api.PersonCoverCoverPhoto o) {
+  buildCounterPersonCoverCoverPhoto++;
+  if (buildCounterPersonCoverCoverPhoto < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterPersonCoverCoverPhoto--;
+}
+
+core.int buildCounterPersonCover = 0;
+buildPersonCover() {
+  var o = new api.PersonCover();
+  buildCounterPersonCover++;
+  if (buildCounterPersonCover < 3) {
+    o.coverInfo = buildPersonCoverCoverInfo();
+    o.coverPhoto = buildPersonCoverCoverPhoto();
+    o.layout = "foo";
+  }
+  buildCounterPersonCover--;
+  return o;
+}
+
+checkPersonCover(api.PersonCover o) {
+  buildCounterPersonCover++;
+  if (buildCounterPersonCover < 3) {
+    checkPersonCoverCoverInfo(o.coverInfo);
+    checkPersonCoverCoverPhoto(o.coverPhoto);
+    unittest.expect(o.layout, unittest.equals('foo'));
+  }
+  buildCounterPersonCover--;
+}
+
+core.int buildCounterPersonEmails = 0;
+buildPersonEmails() {
+  var o = new api.PersonEmails();
+  buildCounterPersonEmails++;
+  if (buildCounterPersonEmails < 3) {
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterPersonEmails--;
+  return o;
+}
+
+checkPersonEmails(api.PersonEmails o) {
+  buildCounterPersonEmails++;
+  if (buildCounterPersonEmails < 3) {
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterPersonEmails--;
+}
+
+buildUnnamed1104() {
+  var o = new core.List<api.PersonEmails>();
+  o.add(buildPersonEmails());
+  o.add(buildPersonEmails());
+  return o;
+}
+
+checkUnnamed1104(core.List<api.PersonEmails> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPersonEmails(o[0]);
+  checkPersonEmails(o[1]);
+}
+
+core.int buildCounterPersonImage = 0;
+buildPersonImage() {
+  var o = new api.PersonImage();
+  buildCounterPersonImage++;
+  if (buildCounterPersonImage < 3) {
+    o.isDefault = true;
+    o.url = "foo";
+  }
+  buildCounterPersonImage--;
+  return o;
+}
+
+checkPersonImage(api.PersonImage o) {
+  buildCounterPersonImage++;
+  if (buildCounterPersonImage < 3) {
+    unittest.expect(o.isDefault, unittest.isTrue);
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterPersonImage--;
+}
+
+core.int buildCounterPersonName = 0;
+buildPersonName() {
+  var o = new api.PersonName();
+  buildCounterPersonName++;
+  if (buildCounterPersonName < 3) {
+    o.familyName = "foo";
+    o.formatted = "foo";
+    o.givenName = "foo";
+    o.honorificPrefix = "foo";
+    o.honorificSuffix = "foo";
+    o.middleName = "foo";
+  }
+  buildCounterPersonName--;
+  return o;
+}
+
+checkPersonName(api.PersonName o) {
+  buildCounterPersonName++;
+  if (buildCounterPersonName < 3) {
+    unittest.expect(o.familyName, unittest.equals('foo'));
+    unittest.expect(o.formatted, unittest.equals('foo'));
+    unittest.expect(o.givenName, unittest.equals('foo'));
+    unittest.expect(o.honorificPrefix, unittest.equals('foo'));
+    unittest.expect(o.honorificSuffix, unittest.equals('foo'));
+    unittest.expect(o.middleName, unittest.equals('foo'));
+  }
+  buildCounterPersonName--;
+}
+
+core.int buildCounterPersonOrganizations = 0;
+buildPersonOrganizations() {
+  var o = new api.PersonOrganizations();
+  buildCounterPersonOrganizations++;
+  if (buildCounterPersonOrganizations < 3) {
+    o.department = "foo";
+    o.description = "foo";
+    o.endDate = "foo";
+    o.location = "foo";
+    o.name = "foo";
+    o.primary = true;
+    o.startDate = "foo";
+    o.title = "foo";
+    o.type = "foo";
+  }
+  buildCounterPersonOrganizations--;
+  return o;
+}
+
+checkPersonOrganizations(api.PersonOrganizations o) {
+  buildCounterPersonOrganizations++;
+  if (buildCounterPersonOrganizations < 3) {
+    unittest.expect(o.department, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.endDate, unittest.equals('foo'));
+    unittest.expect(o.location, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.primary, unittest.isTrue);
+    unittest.expect(o.startDate, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterPersonOrganizations--;
+}
+
+buildUnnamed1105() {
+  var o = new core.List<api.PersonOrganizations>();
+  o.add(buildPersonOrganizations());
+  o.add(buildPersonOrganizations());
+  return o;
+}
+
+checkUnnamed1105(core.List<api.PersonOrganizations> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPersonOrganizations(o[0]);
+  checkPersonOrganizations(o[1]);
+}
+
+core.int buildCounterPersonPlacesLived = 0;
+buildPersonPlacesLived() {
+  var o = new api.PersonPlacesLived();
+  buildCounterPersonPlacesLived++;
+  if (buildCounterPersonPlacesLived < 3) {
+    o.primary = true;
+    o.value = "foo";
+  }
+  buildCounterPersonPlacesLived--;
+  return o;
+}
+
+checkPersonPlacesLived(api.PersonPlacesLived o) {
+  buildCounterPersonPlacesLived++;
+  if (buildCounterPersonPlacesLived < 3) {
+    unittest.expect(o.primary, unittest.isTrue);
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterPersonPlacesLived--;
+}
+
+buildUnnamed1106() {
+  var o = new core.List<api.PersonPlacesLived>();
+  o.add(buildPersonPlacesLived());
+  o.add(buildPersonPlacesLived());
+  return o;
+}
+
+checkUnnamed1106(core.List<api.PersonPlacesLived> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPersonPlacesLived(o[0]);
+  checkPersonPlacesLived(o[1]);
+}
+
+core.int buildCounterPersonUrls = 0;
+buildPersonUrls() {
+  var o = new api.PersonUrls();
+  buildCounterPersonUrls++;
+  if (buildCounterPersonUrls < 3) {
+    o.label = "foo";
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterPersonUrls--;
+  return o;
+}
+
+checkPersonUrls(api.PersonUrls o) {
+  buildCounterPersonUrls++;
+  if (buildCounterPersonUrls < 3) {
+    unittest.expect(o.label, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterPersonUrls--;
+}
+
+buildUnnamed1107() {
+  var o = new core.List<api.PersonUrls>();
+  o.add(buildPersonUrls());
+  o.add(buildPersonUrls());
+  return o;
+}
+
+checkUnnamed1107(core.List<api.PersonUrls> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPersonUrls(o[0]);
+  checkPersonUrls(o[1]);
+}
+
+core.int buildCounterPerson = 0;
+buildPerson() {
+  var o = new api.Person();
+  buildCounterPerson++;
+  if (buildCounterPerson < 3) {
+    o.aboutMe = "foo";
+    o.birthday = "foo";
+    o.braggingRights = "foo";
+    o.circledByCount = 42;
+    o.cover = buildPersonCover();
+    o.currentLocation = "foo";
+    o.displayName = "foo";
+    o.domain = "foo";
+    o.emails = buildUnnamed1104();
+    o.etag = "foo";
+    o.gender = "foo";
+    o.id = "foo";
+    o.image = buildPersonImage();
+    o.isPlusUser = true;
+    o.kind = "foo";
+    o.name = buildPersonName();
+    o.nickname = "foo";
+    o.objectType = "foo";
+    o.occupation = "foo";
+    o.organizations = buildUnnamed1105();
+    o.placesLived = buildUnnamed1106();
+    o.plusOneCount = 42;
+    o.relationshipStatus = "foo";
+    o.skills = "foo";
+    o.tagline = "foo";
+    o.url = "foo";
+    o.urls = buildUnnamed1107();
+    o.verified = true;
+  }
+  buildCounterPerson--;
+  return o;
+}
+
+checkPerson(api.Person o) {
+  buildCounterPerson++;
+  if (buildCounterPerson < 3) {
+    unittest.expect(o.aboutMe, unittest.equals('foo'));
+    unittest.expect(o.birthday, unittest.equals('foo'));
+    unittest.expect(o.braggingRights, unittest.equals('foo'));
+    unittest.expect(o.circledByCount, unittest.equals(42));
+    checkPersonCover(o.cover);
+    unittest.expect(o.currentLocation, unittest.equals('foo'));
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.domain, unittest.equals('foo'));
+    checkUnnamed1104(o.emails);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.gender, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkPersonImage(o.image);
+    unittest.expect(o.isPlusUser, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkPersonName(o.name);
+    unittest.expect(o.nickname, unittest.equals('foo'));
+    unittest.expect(o.objectType, unittest.equals('foo'));
+    unittest.expect(o.occupation, unittest.equals('foo'));
+    checkUnnamed1105(o.organizations);
+    checkUnnamed1106(o.placesLived);
+    unittest.expect(o.plusOneCount, unittest.equals(42));
+    unittest.expect(o.relationshipStatus, unittest.equals('foo'));
+    unittest.expect(o.skills, unittest.equals('foo'));
+    unittest.expect(o.tagline, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+    checkUnnamed1107(o.urls);
+    unittest.expect(o.verified, unittest.isTrue);
+  }
+  buildCounterPerson--;
+}
+
+core.int buildCounterPlaceAddress = 0;
+buildPlaceAddress() {
+  var o = new api.PlaceAddress();
+  buildCounterPlaceAddress++;
+  if (buildCounterPlaceAddress < 3) {
+    o.formatted = "foo";
+  }
+  buildCounterPlaceAddress--;
+  return o;
+}
+
+checkPlaceAddress(api.PlaceAddress o) {
+  buildCounterPlaceAddress++;
+  if (buildCounterPlaceAddress < 3) {
+    unittest.expect(o.formatted, unittest.equals('foo'));
+  }
+  buildCounterPlaceAddress--;
+}
+
+core.int buildCounterPlacePosition = 0;
+buildPlacePosition() {
+  var o = new api.PlacePosition();
+  buildCounterPlacePosition++;
+  if (buildCounterPlacePosition < 3) {
+    o.latitude = 42.0;
+    o.longitude = 42.0;
+  }
+  buildCounterPlacePosition--;
+  return o;
+}
+
+checkPlacePosition(api.PlacePosition o) {
+  buildCounterPlacePosition++;
+  if (buildCounterPlacePosition < 3) {
+    unittest.expect(o.latitude, unittest.equals(42.0));
+    unittest.expect(o.longitude, unittest.equals(42.0));
+  }
+  buildCounterPlacePosition--;
+}
+
+core.int buildCounterPlace = 0;
+buildPlace() {
+  var o = new api.Place();
+  buildCounterPlace++;
+  if (buildCounterPlace < 3) {
+    o.address = buildPlaceAddress();
+    o.displayName = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.position = buildPlacePosition();
+  }
+  buildCounterPlace--;
+  return o;
+}
+
+checkPlace(api.Place o) {
+  buildCounterPlace++;
+  if (buildCounterPlace < 3) {
+    checkPlaceAddress(o.address);
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkPlacePosition(o.position);
+  }
+  buildCounterPlace--;
+}
+
+core.int buildCounterPlusDomainsAclentryResource = 0;
+buildPlusDomainsAclentryResource() {
+  var o = new api.PlusDomainsAclentryResource();
+  buildCounterPlusDomainsAclentryResource++;
+  if (buildCounterPlusDomainsAclentryResource < 3) {
+    o.displayName = "foo";
+    o.id = "foo";
+    o.type = "foo";
+  }
+  buildCounterPlusDomainsAclentryResource--;
+  return o;
+}
+
+checkPlusDomainsAclentryResource(api.PlusDomainsAclentryResource o) {
+  buildCounterPlusDomainsAclentryResource++;
+  if (buildCounterPlusDomainsAclentryResource < 3) {
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterPlusDomainsAclentryResource--;
+}
+
+core.int buildCounterVideostream = 0;
+buildVideostream() {
+  var o = new api.Videostream();
+  buildCounterVideostream++;
+  if (buildCounterVideostream < 3) {
+    o.height = 42;
+    o.type = "foo";
+    o.url = "foo";
+    o.width = 42;
+  }
+  buildCounterVideostream--;
+  return o;
+}
+
+checkVideostream(api.Videostream o) {
+  buildCounterVideostream++;
+  if (buildCounterVideostream < 3) {
+    unittest.expect(o.height, unittest.equals(42));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterVideostream--;
+}
+
+buildUnnamed1108() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1108(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1109() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1109(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1110() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1110(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1111() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1111(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-Acl", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAcl();
+      var od = new api.Acl.fromJson(o.toJson());
+      checkAcl(od);
+    });
+  });
+
+  unittest.group(
+      "obj-schema-ActivityActorClientSpecificActorInfoYoutubeActorInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityActorClientSpecificActorInfoYoutubeActorInfo();
+      var od =
+          new api.ActivityActorClientSpecificActorInfoYoutubeActorInfo.fromJson(
+              o.toJson());
+      checkActivityActorClientSpecificActorInfoYoutubeActorInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityActorClientSpecificActorInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityActorClientSpecificActorInfo();
+      var od =
+          new api.ActivityActorClientSpecificActorInfo.fromJson(o.toJson());
+      checkActivityActorClientSpecificActorInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityActorImage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityActorImage();
+      var od = new api.ActivityActorImage.fromJson(o.toJson());
+      checkActivityActorImage(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityActorName", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityActorName();
+      var od = new api.ActivityActorName.fromJson(o.toJson());
+      checkActivityActorName(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityActorVerification", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityActorVerification();
+      var od = new api.ActivityActorVerification.fromJson(o.toJson());
+      checkActivityActorVerification(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityActor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityActor();
+      var od = new api.ActivityActor.fromJson(o.toJson());
+      checkActivityActor(od);
+    });
+  });
+
+  unittest.group(
+      "obj-schema-ActivityObjectActorClientSpecificActorInfoYoutubeActorInfo",
+      () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectActorClientSpecificActorInfoYoutubeActorInfo();
+      var od = new api
+              .ActivityObjectActorClientSpecificActorInfoYoutubeActorInfo.fromJson(
+          o.toJson());
+      checkActivityObjectActorClientSpecificActorInfoYoutubeActorInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObjectActorClientSpecificActorInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectActorClientSpecificActorInfo();
+      var od = new api.ActivityObjectActorClientSpecificActorInfo.fromJson(
+          o.toJson());
+      checkActivityObjectActorClientSpecificActorInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObjectActorImage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectActorImage();
+      var od = new api.ActivityObjectActorImage.fromJson(o.toJson());
+      checkActivityObjectActorImage(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObjectActorVerification", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectActorVerification();
+      var od = new api.ActivityObjectActorVerification.fromJson(o.toJson());
+      checkActivityObjectActorVerification(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObjectActor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectActor();
+      var od = new api.ActivityObjectActor.fromJson(o.toJson());
+      checkActivityObjectActor(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObjectAttachmentsEmbed", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectAttachmentsEmbed();
+      var od = new api.ActivityObjectAttachmentsEmbed.fromJson(o.toJson());
+      checkActivityObjectAttachmentsEmbed(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObjectAttachmentsFullImage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectAttachmentsFullImage();
+      var od = new api.ActivityObjectAttachmentsFullImage.fromJson(o.toJson());
+      checkActivityObjectAttachmentsFullImage(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObjectAttachmentsImage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectAttachmentsImage();
+      var od = new api.ActivityObjectAttachmentsImage.fromJson(o.toJson());
+      checkActivityObjectAttachmentsImage(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObjectAttachmentsPreviewThumbnails", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectAttachmentsPreviewThumbnails();
+      var od = new api.ActivityObjectAttachmentsPreviewThumbnails.fromJson(
+          o.toJson());
+      checkActivityObjectAttachmentsPreviewThumbnails(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObjectAttachmentsThumbnailsImage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectAttachmentsThumbnailsImage();
+      var od =
+          new api.ActivityObjectAttachmentsThumbnailsImage.fromJson(o.toJson());
+      checkActivityObjectAttachmentsThumbnailsImage(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObjectAttachmentsThumbnails", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectAttachmentsThumbnails();
+      var od = new api.ActivityObjectAttachmentsThumbnails.fromJson(o.toJson());
+      checkActivityObjectAttachmentsThumbnails(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObjectAttachments", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectAttachments();
+      var od = new api.ActivityObjectAttachments.fromJson(o.toJson());
+      checkActivityObjectAttachments(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObjectPlusoners", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectPlusoners();
+      var od = new api.ActivityObjectPlusoners.fromJson(o.toJson());
+      checkActivityObjectPlusoners(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObjectReplies", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectReplies();
+      var od = new api.ActivityObjectReplies.fromJson(o.toJson());
+      checkActivityObjectReplies(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObjectResharers", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectResharers();
+      var od = new api.ActivityObjectResharers.fromJson(o.toJson());
+      checkActivityObjectResharers(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObjectStatusForViewer", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObjectStatusForViewer();
+      var od = new api.ActivityObjectStatusForViewer.fromJson(o.toJson());
+      checkActivityObjectStatusForViewer(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityObject", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityObject();
+      var od = new api.ActivityObject.fromJson(o.toJson());
+      checkActivityObject(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityProvider", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityProvider();
+      var od = new api.ActivityProvider.fromJson(o.toJson());
+      checkActivityProvider(od);
+    });
+  });
+
+  unittest.group("obj-schema-Activity", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivity();
+      var od = new api.Activity.fromJson(o.toJson());
+      checkActivity(od);
+    });
+  });
+
+  unittest.group("obj-schema-ActivityFeed", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildActivityFeed();
+      var od = new api.ActivityFeed.fromJson(o.toJson());
+      checkActivityFeed(od);
+    });
+  });
+
+  unittest.group("obj-schema-Audience", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAudience();
+      var od = new api.Audience.fromJson(o.toJson());
+      checkAudience(od);
+    });
+  });
+
+  unittest.group("obj-schema-AudiencesFeed", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAudiencesFeed();
+      var od = new api.AudiencesFeed.fromJson(o.toJson());
+      checkAudiencesFeed(od);
+    });
+  });
+
+  unittest.group("obj-schema-CirclePeople", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCirclePeople();
+      var od = new api.CirclePeople.fromJson(o.toJson());
+      checkCirclePeople(od);
+    });
+  });
+
+  unittest.group("obj-schema-Circle", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCircle();
+      var od = new api.Circle.fromJson(o.toJson());
+      checkCircle(od);
+    });
+  });
+
+  unittest.group("obj-schema-CircleFeed", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCircleFeed();
+      var od = new api.CircleFeed.fromJson(o.toJson());
+      checkCircleFeed(od);
+    });
+  });
+
+  unittest.group(
+      "obj-schema-CommentActorClientSpecificActorInfoYoutubeActorInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommentActorClientSpecificActorInfoYoutubeActorInfo();
+      var od =
+          new api.CommentActorClientSpecificActorInfoYoutubeActorInfo.fromJson(
+              o.toJson());
+      checkCommentActorClientSpecificActorInfoYoutubeActorInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommentActorClientSpecificActorInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommentActorClientSpecificActorInfo();
+      var od = new api.CommentActorClientSpecificActorInfo.fromJson(o.toJson());
+      checkCommentActorClientSpecificActorInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommentActorImage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommentActorImage();
+      var od = new api.CommentActorImage.fromJson(o.toJson());
+      checkCommentActorImage(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommentActorVerification", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommentActorVerification();
+      var od = new api.CommentActorVerification.fromJson(o.toJson());
+      checkCommentActorVerification(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommentActor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommentActor();
+      var od = new api.CommentActor.fromJson(o.toJson());
+      checkCommentActor(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommentInReplyTo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommentInReplyTo();
+      var od = new api.CommentInReplyTo.fromJson(o.toJson());
+      checkCommentInReplyTo(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommentObject", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommentObject();
+      var od = new api.CommentObject.fromJson(o.toJson());
+      checkCommentObject(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommentPlusoners", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommentPlusoners();
+      var od = new api.CommentPlusoners.fromJson(o.toJson());
+      checkCommentPlusoners(od);
+    });
+  });
+
+  unittest.group("obj-schema-Comment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildComment();
+      var od = new api.Comment.fromJson(o.toJson());
+      checkComment(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommentFeed", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommentFeed();
+      var od = new api.CommentFeed.fromJson(o.toJson());
+      checkCommentFeed(od);
+    });
+  });
+
+  unittest.group("obj-schema-MediaAuthorImage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMediaAuthorImage();
+      var od = new api.MediaAuthorImage.fromJson(o.toJson());
+      checkMediaAuthorImage(od);
+    });
+  });
+
+  unittest.group("obj-schema-MediaAuthor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMediaAuthor();
+      var od = new api.MediaAuthor.fromJson(o.toJson());
+      checkMediaAuthor(od);
+    });
+  });
+
+  unittest.group("obj-schema-MediaExif", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMediaExif();
+      var od = new api.MediaExif.fromJson(o.toJson());
+      checkMediaExif(od);
+    });
+  });
+
+  unittest.group("obj-schema-Media", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMedia();
+      var od = new api.Media.fromJson(o.toJson());
+      checkMedia(od);
+    });
+  });
+
+  unittest.group("obj-schema-PeopleFeed", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPeopleFeed();
+      var od = new api.PeopleFeed.fromJson(o.toJson());
+      checkPeopleFeed(od);
+    });
+  });
+
+  unittest.group("obj-schema-PersonCoverCoverInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPersonCoverCoverInfo();
+      var od = new api.PersonCoverCoverInfo.fromJson(o.toJson());
+      checkPersonCoverCoverInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-PersonCoverCoverPhoto", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPersonCoverCoverPhoto();
+      var od = new api.PersonCoverCoverPhoto.fromJson(o.toJson());
+      checkPersonCoverCoverPhoto(od);
+    });
+  });
+
+  unittest.group("obj-schema-PersonCover", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPersonCover();
+      var od = new api.PersonCover.fromJson(o.toJson());
+      checkPersonCover(od);
+    });
+  });
+
+  unittest.group("obj-schema-PersonEmails", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPersonEmails();
+      var od = new api.PersonEmails.fromJson(o.toJson());
+      checkPersonEmails(od);
+    });
+  });
+
+  unittest.group("obj-schema-PersonImage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPersonImage();
+      var od = new api.PersonImage.fromJson(o.toJson());
+      checkPersonImage(od);
+    });
+  });
+
+  unittest.group("obj-schema-PersonName", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPersonName();
+      var od = new api.PersonName.fromJson(o.toJson());
+      checkPersonName(od);
+    });
+  });
+
+  unittest.group("obj-schema-PersonOrganizations", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPersonOrganizations();
+      var od = new api.PersonOrganizations.fromJson(o.toJson());
+      checkPersonOrganizations(od);
+    });
+  });
+
+  unittest.group("obj-schema-PersonPlacesLived", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPersonPlacesLived();
+      var od = new api.PersonPlacesLived.fromJson(o.toJson());
+      checkPersonPlacesLived(od);
+    });
+  });
+
+  unittest.group("obj-schema-PersonUrls", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPersonUrls();
+      var od = new api.PersonUrls.fromJson(o.toJson());
+      checkPersonUrls(od);
+    });
+  });
+
+  unittest.group("obj-schema-Person", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPerson();
+      var od = new api.Person.fromJson(o.toJson());
+      checkPerson(od);
+    });
+  });
+
+  unittest.group("obj-schema-PlaceAddress", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlaceAddress();
+      var od = new api.PlaceAddress.fromJson(o.toJson());
+      checkPlaceAddress(od);
+    });
+  });
+
+  unittest.group("obj-schema-PlacePosition", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlacePosition();
+      var od = new api.PlacePosition.fromJson(o.toJson());
+      checkPlacePosition(od);
+    });
+  });
+
+  unittest.group("obj-schema-Place", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlace();
+      var od = new api.Place.fromJson(o.toJson());
+      checkPlace(od);
+    });
+  });
+
+  unittest.group("obj-schema-PlusDomainsAclentryResource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlusDomainsAclentryResource();
+      var od = new api.PlusDomainsAclentryResource.fromJson(o.toJson());
+      checkPlusDomainsAclentryResource(od);
+    });
+  });
+
+  unittest.group("obj-schema-Videostream", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVideostream();
+      var od = new api.Videostream.fromJson(o.toJson());
+      checkVideostream(od);
+    });
+  });
+
+  unittest.group("resource-ActivitiesResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ActivitiesResourceApi res = new api.PlusDomainsApi(mock).activities;
+      var arg_activityId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("activities/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_activityId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildActivity());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_activityId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Activity response) {
+        checkActivity(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.ActivitiesResourceApi res = new api.PlusDomainsApi(mock).activities;
+      var arg_request = buildActivity();
+      var arg_userId = "foo";
+      var arg_preview = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Activity.fromJson(json);
+        checkActivity(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("people/"));
+        pathOffset += 7;
+        index = path.indexOf("/activities", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/activities"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["preview"].first, unittest.equals("$arg_preview"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildActivity());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_userId,
+              preview: arg_preview, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Activity response) {
+        checkActivity(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ActivitiesResourceApi res = new api.PlusDomainsApi(mock).activities;
+      var arg_userId = "foo";
+      var arg_collection = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("people/"));
+        pathOffset += 7;
+        index = path.indexOf("/activities/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/activities/"));
+        pathOffset += 12;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_collection"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildActivityFeed());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId, arg_collection,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ActivityFeed response) {
+        checkActivityFeed(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AudiencesResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AudiencesResourceApi res = new api.PlusDomainsApi(mock).audiences;
+      var arg_userId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("people/"));
+        pathOffset += 7;
+        index = path.indexOf("/audiences", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/audiences"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAudiencesFeed());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AudiencesFeed response) {
+        checkAudiencesFeed(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CirclesResourceApi", () {
+    unittest.test("method--addPeople", () {
+      var mock = new HttpServerMock();
+      api.CirclesResourceApi res = new api.PlusDomainsApi(mock).circles;
+      var arg_circleId = "foo";
+      var arg_email = buildUnnamed1108();
+      var arg_userId = buildUnnamed1109();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("circles/"));
+        pathOffset += 8;
+        index = path.indexOf("/people", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_circleId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/people"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["email"], unittest.equals(arg_email));
+        unittest.expect(queryMap["userId"], unittest.equals(arg_userId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCircle());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .addPeople(arg_circleId,
+              email: arg_email, userId: arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Circle response) {
+        checkCircle(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CirclesResourceApi res = new api.PlusDomainsApi(mock).circles;
+      var arg_circleId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("circles/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_circleId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCircle());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_circleId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Circle response) {
+        checkCircle(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.CirclesResourceApi res = new api.PlusDomainsApi(mock).circles;
+      var arg_request = buildCircle();
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Circle.fromJson(json);
+        checkCircle(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("people/"));
+        pathOffset += 7;
+        index = path.indexOf("/circles", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/circles"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCircle());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Circle response) {
+        checkCircle(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CirclesResourceApi res = new api.PlusDomainsApi(mock).circles;
+      var arg_userId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("people/"));
+        pathOffset += 7;
+        index = path.indexOf("/circles", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/circles"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCircleFeed());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CircleFeed response) {
+        checkCircleFeed(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.CirclesResourceApi res = new api.PlusDomainsApi(mock).circles;
+      var arg_request = buildCircle();
+      var arg_circleId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Circle.fromJson(json);
+        checkCircle(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("circles/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_circleId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCircle());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_circleId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Circle response) {
+        checkCircle(response);
+      })));
+    });
+
+    unittest.test("method--remove", () {
+      var mock = new HttpServerMock();
+      api.CirclesResourceApi res = new api.PlusDomainsApi(mock).circles;
+      var arg_circleId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("circles/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_circleId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .remove(arg_circleId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--removePeople", () {
+      var mock = new HttpServerMock();
+      api.CirclesResourceApi res = new api.PlusDomainsApi(mock).circles;
+      var arg_circleId = "foo";
+      var arg_email = buildUnnamed1110();
+      var arg_userId = buildUnnamed1111();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("circles/"));
+        pathOffset += 8;
+        index = path.indexOf("/people", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_circleId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/people"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["email"], unittest.equals(arg_email));
+        unittest.expect(queryMap["userId"], unittest.equals(arg_userId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .removePeople(arg_circleId,
+              email: arg_email, userId: arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.CirclesResourceApi res = new api.PlusDomainsApi(mock).circles;
+      var arg_request = buildCircle();
+      var arg_circleId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Circle.fromJson(json);
+        checkCircle(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("circles/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_circleId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCircle());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_circleId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Circle response) {
+        checkCircle(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-CommentsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.CommentsResourceApi res = new api.PlusDomainsApi(mock).comments;
+      var arg_commentId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("comments/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_commentId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildComment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_commentId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Comment response) {
+        checkComment(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.CommentsResourceApi res = new api.PlusDomainsApi(mock).comments;
+      var arg_request = buildComment();
+      var arg_activityId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Comment.fromJson(json);
+        checkComment(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("activities/"));
+        pathOffset += 11;
+        index = path.indexOf("/comments", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_activityId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/comments"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildComment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_activityId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Comment response) {
+        checkComment(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.CommentsResourceApi res = new api.PlusDomainsApi(mock).comments;
+      var arg_activityId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("activities/"));
+        pathOffset += 11;
+        index = path.indexOf("/comments", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_activityId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/comments"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCommentFeed());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_activityId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CommentFeed response) {
+        checkCommentFeed(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-MediaResourceApi", () {
+    unittest.test("method--insert", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.MediaResourceApi res = new api.PlusDomainsApi(mock).media;
+      var arg_request = buildMedia();
+      var arg_userId = "foo";
+      var arg_collection = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Media.fromJson(json);
+        checkMedia(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("people/"));
+        pathOffset += 7;
+        index = path.indexOf("/media/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/media/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_collection"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMedia());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_userId, arg_collection, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Media response) {
+        checkMedia(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PeopleResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PeopleResourceApi res = new api.PlusDomainsApi(mock).people;
+      var arg_userId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("people/"));
+        pathOffset += 7;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPerson());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_userId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Person response) {
+        checkPerson(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PeopleResourceApi res = new api.PlusDomainsApi(mock).people;
+      var arg_userId = "foo";
+      var arg_collection = "foo";
+      var arg_maxResults = 42;
+      var arg_orderBy = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("people/"));
+        pathOffset += 7;
+        index = path.indexOf("/people/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_userId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/people/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_collection"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPeopleFeed());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_userId, arg_collection,
+              maxResults: arg_maxResults,
+              orderBy: arg_orderBy,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PeopleFeed response) {
+        checkPeopleFeed(response);
+      })));
+    });
+
+    unittest.test("method--listByActivity", () {
+      var mock = new HttpServerMock();
+      api.PeopleResourceApi res = new api.PlusDomainsApi(mock).people;
+      var arg_activityId = "foo";
+      var arg_collection = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("activities/"));
+        pathOffset += 11;
+        index = path.indexOf("/people/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_activityId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/people/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_collection"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPeopleFeed());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .listByActivity(arg_activityId, arg_collection,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PeopleFeed response) {
+        checkPeopleFeed(response);
+      })));
+    });
+
+    unittest.test("method--listByCircle", () {
+      var mock = new HttpServerMock();
+      api.PeopleResourceApi res = new api.PlusDomainsApi(mock).people;
+      var arg_circleId = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("plusDomains/v1/"));
+        pathOffset += 15;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("circles/"));
+        pathOffset += 8;
+        index = path.indexOf("/people", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_circleId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("/people"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPeopleFeed());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .listByCircle(arg_circleId,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PeopleFeed response) {
+        checkPeopleFeed(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/prediction/v1_6_test.dart b/generated/googleapis/test/prediction/v1_6_test.dart
index e9af5ba..ca52cba 100644
--- a/generated/googleapis/test/prediction/v1_6_test.dart
+++ b/generated/googleapis/test/prediction/v1_6_test.dart
@@ -72,14 +72,14 @@
   buildCounterAnalyzeDataDescriptionFeaturesCategoricalValues--;
 }
 
-buildUnnamed1939() {
+buildUnnamed1937() {
   var o = new core.List<api.AnalyzeDataDescriptionFeaturesCategoricalValues>();
   o.add(buildAnalyzeDataDescriptionFeaturesCategoricalValues());
   o.add(buildAnalyzeDataDescriptionFeaturesCategoricalValues());
   return o;
 }
 
-checkUnnamed1939(
+checkUnnamed1937(
     core.List<api.AnalyzeDataDescriptionFeaturesCategoricalValues> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAnalyzeDataDescriptionFeaturesCategoricalValues(o[0]);
@@ -92,7 +92,7 @@
   buildCounterAnalyzeDataDescriptionFeaturesCategorical++;
   if (buildCounterAnalyzeDataDescriptionFeaturesCategorical < 3) {
     o.count = "foo";
-    o.values = buildUnnamed1939();
+    o.values = buildUnnamed1937();
   }
   buildCounterAnalyzeDataDescriptionFeaturesCategorical--;
   return o;
@@ -103,7 +103,7 @@
   buildCounterAnalyzeDataDescriptionFeaturesCategorical++;
   if (buildCounterAnalyzeDataDescriptionFeaturesCategorical < 3) {
     unittest.expect(o.count, unittest.equals('foo'));
-    checkUnnamed1939(o.values);
+    checkUnnamed1937(o.values);
   }
   buildCounterAnalyzeDataDescriptionFeaturesCategorical--;
 }
@@ -177,14 +177,14 @@
   buildCounterAnalyzeDataDescriptionFeatures--;
 }
 
-buildUnnamed1940() {
+buildUnnamed1938() {
   var o = new core.List<api.AnalyzeDataDescriptionFeatures>();
   o.add(buildAnalyzeDataDescriptionFeatures());
   o.add(buildAnalyzeDataDescriptionFeatures());
   return o;
 }
 
-checkUnnamed1940(core.List<api.AnalyzeDataDescriptionFeatures> o) {
+checkUnnamed1938(core.List<api.AnalyzeDataDescriptionFeatures> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAnalyzeDataDescriptionFeatures(o[0]);
   checkAnalyzeDataDescriptionFeatures(o[1]);
@@ -236,14 +236,14 @@
   buildCounterAnalyzeDataDescriptionOutputFeatureText--;
 }
 
-buildUnnamed1941() {
+buildUnnamed1939() {
   var o = new core.List<api.AnalyzeDataDescriptionOutputFeatureText>();
   o.add(buildAnalyzeDataDescriptionOutputFeatureText());
   o.add(buildAnalyzeDataDescriptionOutputFeatureText());
   return o;
 }
 
-checkUnnamed1941(core.List<api.AnalyzeDataDescriptionOutputFeatureText> o) {
+checkUnnamed1939(core.List<api.AnalyzeDataDescriptionOutputFeatureText> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAnalyzeDataDescriptionOutputFeatureText(o[0]);
   checkAnalyzeDataDescriptionOutputFeatureText(o[1]);
@@ -255,7 +255,7 @@
   buildCounterAnalyzeDataDescriptionOutputFeature++;
   if (buildCounterAnalyzeDataDescriptionOutputFeature < 3) {
     o.numeric = buildAnalyzeDataDescriptionOutputFeatureNumeric();
-    o.text = buildUnnamed1941();
+    o.text = buildUnnamed1939();
   }
   buildCounterAnalyzeDataDescriptionOutputFeature--;
   return o;
@@ -266,7 +266,7 @@
   buildCounterAnalyzeDataDescriptionOutputFeature++;
   if (buildCounterAnalyzeDataDescriptionOutputFeature < 3) {
     checkAnalyzeDataDescriptionOutputFeatureNumeric(o.numeric);
-    checkUnnamed1941(o.text);
+    checkUnnamed1939(o.text);
   }
   buildCounterAnalyzeDataDescriptionOutputFeature--;
 }
@@ -276,7 +276,7 @@
   var o = new api.AnalyzeDataDescription();
   buildCounterAnalyzeDataDescription++;
   if (buildCounterAnalyzeDataDescription < 3) {
-    o.features = buildUnnamed1940();
+    o.features = buildUnnamed1938();
     o.outputFeature = buildAnalyzeDataDescriptionOutputFeature();
   }
   buildCounterAnalyzeDataDescription--;
@@ -286,12 +286,38 @@
 checkAnalyzeDataDescription(api.AnalyzeDataDescription o) {
   buildCounterAnalyzeDataDescription++;
   if (buildCounterAnalyzeDataDescription < 3) {
-    checkUnnamed1940(o.features);
+    checkUnnamed1938(o.features);
     checkAnalyzeDataDescriptionOutputFeature(o.outputFeature);
   }
   buildCounterAnalyzeDataDescription--;
 }
 
+buildUnnamed1940() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed1940(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+buildUnnamed1941() {
+  var o = new core.List<core.Map<core.String, core.String>>();
+  o.add(buildUnnamed1940());
+  o.add(buildUnnamed1940());
+  return o;
+}
+
+checkUnnamed1941(core.List<core.Map<core.String, core.String>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed1940(o[0]);
+  checkUnnamed1940(o[1]);
+}
+
 buildUnnamed1942() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
@@ -306,16 +332,16 @@
 }
 
 buildUnnamed1943() {
-  var o = new core.List<core.Map<core.String, core.String>>();
-  o.add(buildUnnamed1942());
-  o.add(buildUnnamed1942());
+  var o = new core.Map<core.String, core.Map<core.String, core.String>>();
+  o["x"] = buildUnnamed1942();
+  o["y"] = buildUnnamed1942();
   return o;
 }
 
-checkUnnamed1943(core.List<core.Map<core.String, core.String>> o) {
+checkUnnamed1943(core.Map<core.String, core.Map<core.String, core.String>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1942(o[0]);
-  checkUnnamed1942(o[1]);
+  checkUnnamed1942(o["x"]);
+  checkUnnamed1942(o["y"]);
 }
 
 buildUnnamed1944() {
@@ -331,39 +357,13 @@
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed1945() {
-  var o = new core.Map<core.String, core.Map<core.String, core.String>>();
-  o["x"] = buildUnnamed1944();
-  o["y"] = buildUnnamed1944();
-  return o;
-}
-
-checkUnnamed1945(core.Map<core.String, core.Map<core.String, core.String>> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1944(o["x"]);
-  checkUnnamed1944(o["y"]);
-}
-
-buildUnnamed1946() {
-  var o = new core.Map<core.String, core.String>();
-  o["x"] = "foo";
-  o["y"] = "foo";
-  return o;
-}
-
-checkUnnamed1946(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o["x"], unittest.equals('foo'));
-  unittest.expect(o["y"], unittest.equals('foo'));
-}
-
 core.int buildCounterAnalyzeModelDescription = 0;
 buildAnalyzeModelDescription() {
   var o = new api.AnalyzeModelDescription();
   buildCounterAnalyzeModelDescription++;
   if (buildCounterAnalyzeModelDescription < 3) {
-    o.confusionMatrix = buildUnnamed1945();
-    o.confusionMatrixRowTotals = buildUnnamed1946();
+    o.confusionMatrix = buildUnnamed1943();
+    o.confusionMatrixRowTotals = buildUnnamed1944();
     o.modelinfo = buildInsert2();
   }
   buildCounterAnalyzeModelDescription--;
@@ -373,8 +373,8 @@
 checkAnalyzeModelDescription(api.AnalyzeModelDescription o) {
   buildCounterAnalyzeModelDescription++;
   if (buildCounterAnalyzeModelDescription < 3) {
-    checkUnnamed1945(o.confusionMatrix);
-    checkUnnamed1946(o.confusionMatrixRowTotals);
+    checkUnnamed1943(o.confusionMatrix);
+    checkUnnamed1944(o.confusionMatrixRowTotals);
     checkInsert2(o.modelinfo);
   }
   buildCounterAnalyzeModelDescription--;
@@ -386,7 +386,7 @@
   buildCounterAnalyze++;
   if (buildCounterAnalyze < 3) {
     o.dataDescription = buildAnalyzeDataDescription();
-    o.errors = buildUnnamed1943();
+    o.errors = buildUnnamed1941();
     o.id = "foo";
     o.kind = "foo";
     o.modelDescription = buildAnalyzeModelDescription();
@@ -400,7 +400,7 @@
   buildCounterAnalyze++;
   if (buildCounterAnalyze < 3) {
     checkAnalyzeDataDescription(o.dataDescription);
-    checkUnnamed1943(o.errors);
+    checkUnnamed1941(o.errors);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     checkAnalyzeModelDescription(o.modelDescription);
@@ -409,7 +409,7 @@
   buildCounterAnalyze--;
 }
 
-buildUnnamed1947() {
+buildUnnamed1945() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -424,7 +424,7 @@
   return o;
 }
 
-checkUnnamed1947(core.List<core.Object> o) {
+checkUnnamed1945(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o[0]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -443,7 +443,7 @@
   var o = new api.InputInput();
   buildCounterInputInput++;
   if (buildCounterInputInput < 3) {
-    o.csvInstance = buildUnnamed1947();
+    o.csvInstance = buildUnnamed1945();
   }
   buildCounterInputInput--;
   return o;
@@ -452,7 +452,7 @@
 checkInputInput(api.InputInput o) {
   buildCounterInputInput++;
   if (buildCounterInputInput < 3) {
-    checkUnnamed1947(o.csvInstance);
+    checkUnnamed1945(o.csvInstance);
   }
   buildCounterInputInput--;
 }
@@ -476,7 +476,7 @@
   buildCounterInput--;
 }
 
-buildUnnamed1948() {
+buildUnnamed1946() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -491,7 +491,7 @@
   return o;
 }
 
-checkUnnamed1948(core.List<core.Object> o) {
+checkUnnamed1946(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o[0]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -510,7 +510,7 @@
   var o = new api.InsertTrainingInstances();
   buildCounterInsertTrainingInstances++;
   if (buildCounterInsertTrainingInstances < 3) {
-    o.csvInstance = buildUnnamed1948();
+    o.csvInstance = buildUnnamed1946();
     o.output = "foo";
   }
   buildCounterInsertTrainingInstances--;
@@ -520,49 +520,49 @@
 checkInsertTrainingInstances(api.InsertTrainingInstances o) {
   buildCounterInsertTrainingInstances++;
   if (buildCounterInsertTrainingInstances < 3) {
-    checkUnnamed1948(o.csvInstance);
+    checkUnnamed1946(o.csvInstance);
     unittest.expect(o.output, unittest.equals('foo'));
   }
   buildCounterInsertTrainingInstances--;
 }
 
-buildUnnamed1949() {
+buildUnnamed1947() {
   var o = new core.List<api.InsertTrainingInstances>();
   o.add(buildInsertTrainingInstances());
   o.add(buildInsertTrainingInstances());
   return o;
 }
 
-checkUnnamed1949(core.List<api.InsertTrainingInstances> o) {
+checkUnnamed1947(core.List<api.InsertTrainingInstances> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInsertTrainingInstances(o[0]);
   checkInsertTrainingInstances(o[1]);
 }
 
-buildUnnamed1950() {
+buildUnnamed1948() {
   var o = new core.Map<core.String, core.double>();
   o["x"] = 42.0;
   o["y"] = 42.0;
   return o;
 }
 
-checkUnnamed1950(core.Map<core.String, core.double> o) {
+checkUnnamed1948(core.Map<core.String, core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals(42.0));
   unittest.expect(o["y"], unittest.equals(42.0));
 }
 
-buildUnnamed1951() {
+buildUnnamed1949() {
   var o = new core.List<core.Map<core.String, core.double>>();
-  o.add(buildUnnamed1950());
-  o.add(buildUnnamed1950());
+  o.add(buildUnnamed1948());
+  o.add(buildUnnamed1948());
   return o;
 }
 
-checkUnnamed1951(core.List<core.Map<core.String, core.double>> o) {
+checkUnnamed1949(core.List<core.Map<core.String, core.double>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1950(o[0]);
-  checkUnnamed1950(o[1]);
+  checkUnnamed1948(o[0]);
+  checkUnnamed1948(o[1]);
 }
 
 core.int buildCounterInsert = 0;
@@ -576,8 +576,8 @@
     o.storageDataLocation = "foo";
     o.storagePMMLLocation = "foo";
     o.storagePMMLModelLocation = "foo";
-    o.trainingInstances = buildUnnamed1949();
-    o.utility = buildUnnamed1951();
+    o.trainingInstances = buildUnnamed1947();
+    o.utility = buildUnnamed1949();
   }
   buildCounterInsert--;
   return o;
@@ -592,8 +592,8 @@
     unittest.expect(o.storageDataLocation, unittest.equals('foo'));
     unittest.expect(o.storagePMMLLocation, unittest.equals('foo'));
     unittest.expect(o.storagePMMLModelLocation, unittest.equals('foo'));
-    checkUnnamed1949(o.trainingInstances);
-    checkUnnamed1951(o.utility);
+    checkUnnamed1947(o.trainingInstances);
+    checkUnnamed1949(o.utility);
   }
   buildCounterInsert--;
 }
@@ -668,14 +668,14 @@
   buildCounterInsert2--;
 }
 
-buildUnnamed1952() {
+buildUnnamed1950() {
   var o = new core.List<api.Insert2>();
   o.add(buildInsert2());
   o.add(buildInsert2());
   return o;
 }
 
-checkUnnamed1952(core.List<api.Insert2> o) {
+checkUnnamed1950(core.List<api.Insert2> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInsert2(o[0]);
   checkInsert2(o[1]);
@@ -686,7 +686,7 @@
   var o = new api.List();
   buildCounterList++;
   if (buildCounterList < 3) {
-    o.items = buildUnnamed1952();
+    o.items = buildUnnamed1950();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -698,7 +698,7 @@
 checkList(api.List o) {
   buildCounterList++;
   if (buildCounterList < 3) {
-    checkUnnamed1952(o.items);
+    checkUnnamed1950(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -727,14 +727,14 @@
   buildCounterOutputOutputMulti--;
 }
 
-buildUnnamed1953() {
+buildUnnamed1951() {
   var o = new core.List<api.OutputOutputMulti>();
   o.add(buildOutputOutputMulti());
   o.add(buildOutputOutputMulti());
   return o;
 }
 
-checkUnnamed1953(core.List<api.OutputOutputMulti> o) {
+checkUnnamed1951(core.List<api.OutputOutputMulti> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOutputOutputMulti(o[0]);
   checkOutputOutputMulti(o[1]);
@@ -748,7 +748,7 @@
     o.id = "foo";
     o.kind = "foo";
     o.outputLabel = "foo";
-    o.outputMulti = buildUnnamed1953();
+    o.outputMulti = buildUnnamed1951();
     o.outputValue = "foo";
     o.selfLink = "foo";
   }
@@ -762,14 +762,14 @@
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.outputLabel, unittest.equals('foo'));
-    checkUnnamed1953(o.outputMulti);
+    checkUnnamed1951(o.outputMulti);
     unittest.expect(o.outputValue, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
   }
   buildCounterOutput--;
 }
 
-buildUnnamed1954() {
+buildUnnamed1952() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -784,7 +784,7 @@
   return o;
 }
 
-checkUnnamed1954(core.List<core.Object> o) {
+checkUnnamed1952(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o[0]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -803,7 +803,7 @@
   var o = new api.Update();
   buildCounterUpdate++;
   if (buildCounterUpdate < 3) {
-    o.csvInstance = buildUnnamed1954();
+    o.csvInstance = buildUnnamed1952();
     o.output = "foo";
   }
   buildCounterUpdate--;
@@ -813,7 +813,7 @@
 checkUpdate(api.Update o) {
   buildCounterUpdate++;
   if (buildCounterUpdate < 3) {
-    checkUnnamed1954(o.csvInstance);
+    checkUnnamed1952(o.csvInstance);
     unittest.expect(o.output, unittest.equals('foo'));
   }
   buildCounterUpdate--;
@@ -1002,6 +1002,7 @@
       var arg_request = buildInput();
       var arg_project = "foo";
       var arg_hostedModelName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Input.fromJson(json);
         checkInput(obj);
@@ -1032,6 +1033,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1040,7 +1042,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .predict(arg_request, arg_project, arg_hostedModelName)
+          .predict(arg_request, arg_project, arg_hostedModelName,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Output response) {
         checkOutput(response);
       })));
@@ -1054,6 +1057,7 @@
           new api.PredictionApi(mock).trainedmodels;
       var arg_project = "foo";
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1081,6 +1085,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1089,7 +1094,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .analyze(arg_project, arg_id)
+          .analyze(arg_project, arg_id, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Analyze response) {
         checkAnalyze(response);
       })));
@@ -1101,6 +1106,7 @@
           new api.PredictionApi(mock).trainedmodels;
       var arg_project = "foo";
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1128,6 +1134,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1135,7 +1142,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_project, arg_id).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_project, arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -1144,6 +1153,7 @@
           new api.PredictionApi(mock).trainedmodels;
       var arg_project = "foo";
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1171,6 +1181,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1179,7 +1190,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_id)
+          .get(arg_project, arg_id, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Insert2 response) {
         checkInsert2(response);
       })));
@@ -1191,6 +1202,7 @@
           new api.PredictionApi(mock).trainedmodels;
       var arg_request = buildInsert();
       var arg_project = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Insert.fromJson(json);
         checkInsert(obj);
@@ -1221,6 +1233,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1229,7 +1242,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project)
+          .insert(arg_request, arg_project, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Insert2 response) {
         checkInsert2(response);
       })));
@@ -1242,6 +1255,7 @@
       var arg_project = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1273,6 +1287,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1282,7 +1297,9 @@
       }), true);
       res
           .list(arg_project,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.List response) {
         checkList(response);
       })));
@@ -1295,6 +1312,7 @@
       var arg_request = buildInput();
       var arg_project = "foo";
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Input.fromJson(json);
         checkInput(obj);
@@ -1325,6 +1343,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1333,7 +1352,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .predict(arg_request, arg_project, arg_id)
+          .predict(arg_request, arg_project, arg_id, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Output response) {
         checkOutput(response);
       })));
@@ -1346,6 +1365,7 @@
       var arg_request = buildUpdate();
       var arg_project = "foo";
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Update.fromJson(json);
         checkUpdate(obj);
@@ -1376,6 +1396,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1384,7 +1405,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_project, arg_id)
+          .update(arg_request, arg_project, arg_id, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Insert2 response) {
         checkInsert2(response);
       })));
diff --git a/generated/googleapis/test/pubsub/v1_test.dart b/generated/googleapis/test/pubsub/v1_test.dart
index 6ed6861..1745d1f 100644
--- a/generated/googleapis/test/pubsub/v1_test.dart
+++ b/generated/googleapis/test/pubsub/v1_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed1313() {
+buildUnnamed1300() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1313(core.List<core.String> o) {
+checkUnnamed1300(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -68,7 +68,7 @@
   var o = new api.AcknowledgeRequest();
   buildCounterAcknowledgeRequest++;
   if (buildCounterAcknowledgeRequest < 3) {
-    o.ackIds = buildUnnamed1313();
+    o.ackIds = buildUnnamed1300();
   }
   buildCounterAcknowledgeRequest--;
   return o;
@@ -77,19 +77,19 @@
 checkAcknowledgeRequest(api.AcknowledgeRequest o) {
   buildCounterAcknowledgeRequest++;
   if (buildCounterAcknowledgeRequest < 3) {
-    checkUnnamed1313(o.ackIds);
+    checkUnnamed1300(o.ackIds);
   }
   buildCounterAcknowledgeRequest--;
 }
 
-buildUnnamed1314() {
+buildUnnamed1301() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1314(core.List<core.String> o) {
+checkUnnamed1301(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -100,7 +100,7 @@
   var o = new api.Binding();
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    o.members = buildUnnamed1314();
+    o.members = buildUnnamed1301();
     o.role = "foo";
   }
   buildCounterBinding--;
@@ -110,7 +110,7 @@
 checkBinding(api.Binding o) {
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    checkUnnamed1314(o.members);
+    checkUnnamed1301(o.members);
     unittest.expect(o.role, unittest.equals('foo'));
   }
   buildCounterBinding--;
@@ -131,14 +131,14 @@
   buildCounterEmpty--;
 }
 
-buildUnnamed1315() {
+buildUnnamed1302() {
   var o = new core.List<api.Subscription>();
   o.add(buildSubscription());
   o.add(buildSubscription());
   return o;
 }
 
-checkUnnamed1315(core.List<api.Subscription> o) {
+checkUnnamed1302(core.List<api.Subscription> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSubscription(o[0]);
   checkSubscription(o[1]);
@@ -150,7 +150,7 @@
   buildCounterListSubscriptionsResponse++;
   if (buildCounterListSubscriptionsResponse < 3) {
     o.nextPageToken = "foo";
-    o.subscriptions = buildUnnamed1315();
+    o.subscriptions = buildUnnamed1302();
   }
   buildCounterListSubscriptionsResponse--;
   return o;
@@ -160,19 +160,19 @@
   buildCounterListSubscriptionsResponse++;
   if (buildCounterListSubscriptionsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1315(o.subscriptions);
+    checkUnnamed1302(o.subscriptions);
   }
   buildCounterListSubscriptionsResponse--;
 }
 
-buildUnnamed1316() {
+buildUnnamed1303() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1316(core.List<core.String> o) {
+checkUnnamed1303(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -184,7 +184,7 @@
   buildCounterListTopicSubscriptionsResponse++;
   if (buildCounterListTopicSubscriptionsResponse < 3) {
     o.nextPageToken = "foo";
-    o.subscriptions = buildUnnamed1316();
+    o.subscriptions = buildUnnamed1303();
   }
   buildCounterListTopicSubscriptionsResponse--;
   return o;
@@ -194,19 +194,19 @@
   buildCounterListTopicSubscriptionsResponse++;
   if (buildCounterListTopicSubscriptionsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1316(o.subscriptions);
+    checkUnnamed1303(o.subscriptions);
   }
   buildCounterListTopicSubscriptionsResponse--;
 }
 
-buildUnnamed1317() {
+buildUnnamed1304() {
   var o = new core.List<api.Topic>();
   o.add(buildTopic());
   o.add(buildTopic());
   return o;
 }
 
-checkUnnamed1317(core.List<api.Topic> o) {
+checkUnnamed1304(core.List<api.Topic> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTopic(o[0]);
   checkTopic(o[1]);
@@ -218,7 +218,7 @@
   buildCounterListTopicsResponse++;
   if (buildCounterListTopicsResponse < 3) {
     o.nextPageToken = "foo";
-    o.topics = buildUnnamed1317();
+    o.topics = buildUnnamed1304();
   }
   buildCounterListTopicsResponse--;
   return o;
@@ -228,19 +228,19 @@
   buildCounterListTopicsResponse++;
   if (buildCounterListTopicsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1317(o.topics);
+    checkUnnamed1304(o.topics);
   }
   buildCounterListTopicsResponse--;
 }
 
-buildUnnamed1318() {
+buildUnnamed1305() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1318(core.List<core.String> o) {
+checkUnnamed1305(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -252,7 +252,7 @@
   buildCounterModifyAckDeadlineRequest++;
   if (buildCounterModifyAckDeadlineRequest < 3) {
     o.ackDeadlineSeconds = 42;
-    o.ackIds = buildUnnamed1318();
+    o.ackIds = buildUnnamed1305();
   }
   buildCounterModifyAckDeadlineRequest--;
   return o;
@@ -262,7 +262,7 @@
   buildCounterModifyAckDeadlineRequest++;
   if (buildCounterModifyAckDeadlineRequest < 3) {
     unittest.expect(o.ackDeadlineSeconds, unittest.equals(42));
-    checkUnnamed1318(o.ackIds);
+    checkUnnamed1305(o.ackIds);
   }
   buildCounterModifyAckDeadlineRequest--;
 }
@@ -286,14 +286,14 @@
   buildCounterModifyPushConfigRequest--;
 }
 
-buildUnnamed1319() {
+buildUnnamed1306() {
   var o = new core.List<api.Binding>();
   o.add(buildBinding());
   o.add(buildBinding());
   return o;
 }
 
-checkUnnamed1319(core.List<api.Binding> o) {
+checkUnnamed1306(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -304,7 +304,7 @@
   var o = new api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.bindings = buildUnnamed1319();
+    o.bindings = buildUnnamed1306();
     o.etag = "foo";
     o.version = 42;
   }
@@ -315,21 +315,21 @@
 checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed1319(o.bindings);
+    checkUnnamed1306(o.bindings);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.version, unittest.equals(42));
   }
   buildCounterPolicy--;
 }
 
-buildUnnamed1320() {
+buildUnnamed1307() {
   var o = new core.List<api.PubsubMessage>();
   o.add(buildPubsubMessage());
   o.add(buildPubsubMessage());
   return o;
 }
 
-checkUnnamed1320(core.List<api.PubsubMessage> o) {
+checkUnnamed1307(core.List<api.PubsubMessage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPubsubMessage(o[0]);
   checkPubsubMessage(o[1]);
@@ -340,7 +340,7 @@
   var o = new api.PublishRequest();
   buildCounterPublishRequest++;
   if (buildCounterPublishRequest < 3) {
-    o.messages = buildUnnamed1320();
+    o.messages = buildUnnamed1307();
   }
   buildCounterPublishRequest--;
   return o;
@@ -349,19 +349,19 @@
 checkPublishRequest(api.PublishRequest o) {
   buildCounterPublishRequest++;
   if (buildCounterPublishRequest < 3) {
-    checkUnnamed1320(o.messages);
+    checkUnnamed1307(o.messages);
   }
   buildCounterPublishRequest--;
 }
 
-buildUnnamed1321() {
+buildUnnamed1308() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1321(core.List<core.String> o) {
+checkUnnamed1308(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -372,7 +372,7 @@
   var o = new api.PublishResponse();
   buildCounterPublishResponse++;
   if (buildCounterPublishResponse < 3) {
-    o.messageIds = buildUnnamed1321();
+    o.messageIds = buildUnnamed1308();
   }
   buildCounterPublishResponse--;
   return o;
@@ -381,19 +381,19 @@
 checkPublishResponse(api.PublishResponse o) {
   buildCounterPublishResponse++;
   if (buildCounterPublishResponse < 3) {
-    checkUnnamed1321(o.messageIds);
+    checkUnnamed1308(o.messageIds);
   }
   buildCounterPublishResponse--;
 }
 
-buildUnnamed1322() {
+buildUnnamed1309() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1322(core.Map<core.String, core.String> o) {
+checkUnnamed1309(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -404,7 +404,7 @@
   var o = new api.PubsubMessage();
   buildCounterPubsubMessage++;
   if (buildCounterPubsubMessage < 3) {
-    o.attributes = buildUnnamed1322();
+    o.attributes = buildUnnamed1309();
     o.data = "foo";
     o.messageId = "foo";
     o.publishTime = "foo";
@@ -416,7 +416,7 @@
 checkPubsubMessage(api.PubsubMessage o) {
   buildCounterPubsubMessage++;
   if (buildCounterPubsubMessage < 3) {
-    checkUnnamed1322(o.attributes);
+    checkUnnamed1309(o.attributes);
     unittest.expect(o.data, unittest.equals('foo'));
     unittest.expect(o.messageId, unittest.equals('foo'));
     unittest.expect(o.publishTime, unittest.equals('foo'));
@@ -445,14 +445,14 @@
   buildCounterPullRequest--;
 }
 
-buildUnnamed1323() {
+buildUnnamed1310() {
   var o = new core.List<api.ReceivedMessage>();
   o.add(buildReceivedMessage());
   o.add(buildReceivedMessage());
   return o;
 }
 
-checkUnnamed1323(core.List<api.ReceivedMessage> o) {
+checkUnnamed1310(core.List<api.ReceivedMessage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReceivedMessage(o[0]);
   checkReceivedMessage(o[1]);
@@ -463,7 +463,7 @@
   var o = new api.PullResponse();
   buildCounterPullResponse++;
   if (buildCounterPullResponse < 3) {
-    o.receivedMessages = buildUnnamed1323();
+    o.receivedMessages = buildUnnamed1310();
   }
   buildCounterPullResponse--;
   return o;
@@ -472,19 +472,19 @@
 checkPullResponse(api.PullResponse o) {
   buildCounterPullResponse++;
   if (buildCounterPullResponse < 3) {
-    checkUnnamed1323(o.receivedMessages);
+    checkUnnamed1310(o.receivedMessages);
   }
   buildCounterPullResponse--;
 }
 
-buildUnnamed1324() {
+buildUnnamed1311() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1324(core.Map<core.String, core.String> o) {
+checkUnnamed1311(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -495,7 +495,7 @@
   var o = new api.PushConfig();
   buildCounterPushConfig++;
   if (buildCounterPushConfig < 3) {
-    o.attributes = buildUnnamed1324();
+    o.attributes = buildUnnamed1311();
     o.pushEndpoint = "foo";
   }
   buildCounterPushConfig--;
@@ -505,7 +505,7 @@
 checkPushConfig(api.PushConfig o) {
   buildCounterPushConfig++;
   if (buildCounterPushConfig < 3) {
-    checkUnnamed1324(o.attributes);
+    checkUnnamed1311(o.attributes);
     unittest.expect(o.pushEndpoint, unittest.equals('foo'));
   }
   buildCounterPushConfig--;
@@ -576,14 +576,14 @@
   buildCounterSubscription--;
 }
 
-buildUnnamed1325() {
+buildUnnamed1312() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1325(core.List<core.String> o) {
+checkUnnamed1312(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -594,7 +594,7 @@
   var o = new api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed1325();
+    o.permissions = buildUnnamed1312();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -603,19 +603,19 @@
 checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed1325(o.permissions);
+    checkUnnamed1312(o.permissions);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-buildUnnamed1326() {
+buildUnnamed1313() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1326(core.List<core.String> o) {
+checkUnnamed1313(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -626,7 +626,7 @@
   var o = new api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed1326();
+    o.permissions = buildUnnamed1313();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -635,7 +635,7 @@
 checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed1326(o.permissions);
+    checkUnnamed1313(o.permissions);
   }
   buildCounterTestIamPermissionsResponse--;
 }
@@ -834,6 +834,7 @@
       api.ProjectsSnapshotsResourceApi res =
           new api.PubsubApi(mock).projects.snapshots;
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -865,6 +866,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -873,7 +875,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_resource)
+          .getIamPolicy(arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -885,6 +887,7 @@
           new api.PubsubApi(mock).projects.snapshots;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -919,6 +922,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -927,7 +931,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -939,6 +943,7 @@
           new api.PubsubApi(mock).projects.snapshots;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -973,6 +978,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -980,8 +986,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -994,6 +1002,7 @@
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_request = buildAcknowledgeRequest();
       var arg_subscription = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AcknowledgeRequest.fromJson(json);
         checkAcknowledgeRequest(obj);
@@ -1028,6 +1037,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1036,7 +1046,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .acknowledge(arg_request, arg_subscription)
+          .acknowledge(arg_request, arg_subscription, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1048,6 +1058,7 @@
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_request = buildSubscription();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Subscription.fromJson(json);
         checkSubscription(obj);
@@ -1082,6 +1093,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1090,7 +1102,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_name)
+          .create(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscription response) {
         checkSubscription(response);
       })));
@@ -1101,6 +1113,7 @@
       api.ProjectsSubscriptionsResourceApi res =
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_subscription = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1132,6 +1145,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1140,7 +1154,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_subscription)
+          .delete(arg_subscription, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1151,6 +1165,7 @@
       api.ProjectsSubscriptionsResourceApi res =
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_subscription = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1182,6 +1197,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1190,7 +1206,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_subscription)
+          .get(arg_subscription, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscription response) {
         checkSubscription(response);
       })));
@@ -1201,6 +1217,7 @@
       api.ProjectsSubscriptionsResourceApi res =
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1232,6 +1249,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1240,7 +1258,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_resource)
+          .getIamPolicy(arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1253,6 +1271,7 @@
       var arg_project = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1288,6 +1307,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1296,7 +1316,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_project, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_project,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.ListSubscriptionsResponse response) {
         checkListSubscriptionsResponse(response);
@@ -1309,6 +1332,7 @@
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_request = buildModifyAckDeadlineRequest();
       var arg_subscription = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ModifyAckDeadlineRequest.fromJson(json);
         checkModifyAckDeadlineRequest(obj);
@@ -1343,6 +1367,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1351,7 +1376,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .modifyAckDeadline(arg_request, arg_subscription)
+          .modifyAckDeadline(arg_request, arg_subscription,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1363,6 +1389,7 @@
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_request = buildModifyPushConfigRequest();
       var arg_subscription = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ModifyPushConfigRequest.fromJson(json);
         checkModifyPushConfigRequest(obj);
@@ -1397,6 +1424,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1405,7 +1433,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .modifyPushConfig(arg_request, arg_subscription)
+          .modifyPushConfig(arg_request, arg_subscription, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1417,6 +1445,7 @@
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_request = buildPullRequest();
       var arg_subscription = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.PullRequest.fromJson(json);
         checkPullRequest(obj);
@@ -1451,6 +1480,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1459,7 +1489,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .pull(arg_request, arg_subscription)
+          .pull(arg_request, arg_subscription, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PullResponse response) {
         checkPullResponse(response);
       })));
@@ -1471,6 +1501,7 @@
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -1505,6 +1536,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1513,7 +1545,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1525,6 +1557,7 @@
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -1559,6 +1592,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1566,8 +1600,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -1580,6 +1616,7 @@
           new api.PubsubApi(mock).projects.topics;
       var arg_request = buildTopic();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Topic.fromJson(json);
         checkTopic(obj);
@@ -1614,6 +1651,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1622,7 +1660,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_name)
+          .create(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Topic response) {
         checkTopic(response);
       })));
@@ -1633,6 +1671,7 @@
       api.ProjectsTopicsResourceApi res =
           new api.PubsubApi(mock).projects.topics;
       var arg_topic = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1664,6 +1703,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1671,7 +1711,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_topic).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_topic, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -1681,6 +1723,7 @@
       api.ProjectsTopicsResourceApi res =
           new api.PubsubApi(mock).projects.topics;
       var arg_topic = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1712,6 +1755,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1719,7 +1763,9 @@
         var resp = convert.JSON.encode(buildTopic());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_topic).then(unittest.expectAsync1(((api.Topic response) {
+      res
+          .get(arg_topic, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Topic response) {
         checkTopic(response);
       })));
     });
@@ -1729,6 +1775,7 @@
       api.ProjectsTopicsResourceApi res =
           new api.PubsubApi(mock).projects.topics;
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1760,6 +1807,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1768,7 +1816,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_resource)
+          .getIamPolicy(arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1779,8 +1827,9 @@
       api.ProjectsTopicsResourceApi res =
           new api.PubsubApi(mock).projects.topics;
       var arg_project = "foo";
-      var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1812,10 +1861,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1824,7 +1874,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_project, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_project,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListTopicsResponse response) {
         checkListTopicsResponse(response);
       })));
@@ -1836,6 +1889,7 @@
           new api.PubsubApi(mock).projects.topics;
       var arg_request = buildPublishRequest();
       var arg_topic = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.PublishRequest.fromJson(json);
         checkPublishRequest(obj);
@@ -1870,6 +1924,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1878,7 +1933,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .publish(arg_request, arg_topic)
+          .publish(arg_request, arg_topic, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PublishResponse response) {
         checkPublishResponse(response);
       })));
@@ -1890,6 +1945,7 @@
           new api.PubsubApi(mock).projects.topics;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -1924,6 +1980,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1932,7 +1989,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1944,6 +2001,7 @@
           new api.PubsubApi(mock).projects.topics;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -1978,6 +2036,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1985,8 +2044,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -1998,8 +2059,9 @@
       api.ProjectsTopicsSubscriptionsResourceApi res =
           new api.PubsubApi(mock).projects.topics.subscriptions;
       var arg_topic = "foo";
-      var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2031,10 +2093,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2043,7 +2106,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_topic, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_topic,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListTopicSubscriptionsResponse response) {
         checkListTopicSubscriptionsResponse(response);
diff --git a/generated/googleapis/test/qpxexpress/v1_test.dart b/generated/googleapis/test/qpxexpress/v1_test.dart
deleted file mode 100644
index dc50174..0000000
--- a/generated/googleapis/test/qpxexpress/v1_test.dart
+++ /dev/null
@@ -1,1228 +0,0 @@
-library googleapis.qpxExpress.v1.test;
-
-import "dart:core" as core;
-import "dart:async" as async;
-import "dart:convert" as convert;
-
-import 'package:http/http.dart' as http;
-import 'package:test/test.dart' as unittest;
-
-import 'package:googleapis/qpxexpress/v1.dart' as api;
-
-class HttpServerMock extends http.BaseClient {
-  core.Function _callback;
-  core.bool _expectJson;
-
-  void register(core.Function callback, core.bool expectJson) {
-    _callback = callback;
-    _expectJson = expectJson;
-  }
-
-  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
-    if (_expectJson) {
-      return request
-          .finalize()
-          .transform(convert.UTF8.decoder)
-          .join('')
-          .then((core.String jsonString) {
-        if (jsonString.isEmpty) {
-          return _callback(request, null);
-        } else {
-          return _callback(request, convert.JSON.decode(jsonString));
-        }
-      });
-    } else {
-      var stream = request.finalize();
-      if (stream == null) {
-        return _callback(request, []);
-      } else {
-        return stream.toBytes().then((data) {
-          return _callback(request, data);
-        });
-      }
-    }
-  }
-}
-
-http.StreamedResponse stringResponse(core.int status,
-    core.Map<core.String, core.String> headers, core.String body) {
-  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
-  return new http.StreamedResponse(stream, status, headers: headers);
-}
-
-core.int buildCounterAircraftData = 0;
-buildAircraftData() {
-  var o = new api.AircraftData();
-  buildCounterAircraftData++;
-  if (buildCounterAircraftData < 3) {
-    o.code = "foo";
-    o.kind = "foo";
-    o.name = "foo";
-  }
-  buildCounterAircraftData--;
-  return o;
-}
-
-checkAircraftData(api.AircraftData o) {
-  buildCounterAircraftData++;
-  if (buildCounterAircraftData < 3) {
-    unittest.expect(o.code, unittest.equals('foo'));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.name, unittest.equals('foo'));
-  }
-  buildCounterAircraftData--;
-}
-
-core.int buildCounterAirportData = 0;
-buildAirportData() {
-  var o = new api.AirportData();
-  buildCounterAirportData++;
-  if (buildCounterAirportData < 3) {
-    o.city = "foo";
-    o.code = "foo";
-    o.kind = "foo";
-    o.name = "foo";
-  }
-  buildCounterAirportData--;
-  return o;
-}
-
-checkAirportData(api.AirportData o) {
-  buildCounterAirportData++;
-  if (buildCounterAirportData < 3) {
-    unittest.expect(o.city, unittest.equals('foo'));
-    unittest.expect(o.code, unittest.equals('foo'));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.name, unittest.equals('foo'));
-  }
-  buildCounterAirportData--;
-}
-
-buildUnnamed28() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed28(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-core.int buildCounterBagDescriptor = 0;
-buildBagDescriptor() {
-  var o = new api.BagDescriptor();
-  buildCounterBagDescriptor++;
-  if (buildCounterBagDescriptor < 3) {
-    o.commercialName = "foo";
-    o.count = 42;
-    o.description = buildUnnamed28();
-    o.kind = "foo";
-    o.subcode = "foo";
-  }
-  buildCounterBagDescriptor--;
-  return o;
-}
-
-checkBagDescriptor(api.BagDescriptor o) {
-  buildCounterBagDescriptor++;
-  if (buildCounterBagDescriptor < 3) {
-    unittest.expect(o.commercialName, unittest.equals('foo'));
-    unittest.expect(o.count, unittest.equals(42));
-    checkUnnamed28(o.description);
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.subcode, unittest.equals('foo'));
-  }
-  buildCounterBagDescriptor--;
-}
-
-core.int buildCounterCarrierData = 0;
-buildCarrierData() {
-  var o = new api.CarrierData();
-  buildCounterCarrierData++;
-  if (buildCounterCarrierData < 3) {
-    o.code = "foo";
-    o.kind = "foo";
-    o.name = "foo";
-  }
-  buildCounterCarrierData--;
-  return o;
-}
-
-checkCarrierData(api.CarrierData o) {
-  buildCounterCarrierData++;
-  if (buildCounterCarrierData < 3) {
-    unittest.expect(o.code, unittest.equals('foo'));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.name, unittest.equals('foo'));
-  }
-  buildCounterCarrierData--;
-}
-
-core.int buildCounterCityData = 0;
-buildCityData() {
-  var o = new api.CityData();
-  buildCounterCityData++;
-  if (buildCounterCityData < 3) {
-    o.code = "foo";
-    o.country = "foo";
-    o.kind = "foo";
-    o.name = "foo";
-  }
-  buildCounterCityData--;
-  return o;
-}
-
-checkCityData(api.CityData o) {
-  buildCounterCityData++;
-  if (buildCounterCityData < 3) {
-    unittest.expect(o.code, unittest.equals('foo'));
-    unittest.expect(o.country, unittest.equals('foo'));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.name, unittest.equals('foo'));
-  }
-  buildCounterCityData--;
-}
-
-buildUnnamed29() {
-  var o = new core.List<api.AircraftData>();
-  o.add(buildAircraftData());
-  o.add(buildAircraftData());
-  return o;
-}
-
-checkUnnamed29(core.List<api.AircraftData> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkAircraftData(o[0]);
-  checkAircraftData(o[1]);
-}
-
-buildUnnamed30() {
-  var o = new core.List<api.AirportData>();
-  o.add(buildAirportData());
-  o.add(buildAirportData());
-  return o;
-}
-
-checkUnnamed30(core.List<api.AirportData> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkAirportData(o[0]);
-  checkAirportData(o[1]);
-}
-
-buildUnnamed31() {
-  var o = new core.List<api.CarrierData>();
-  o.add(buildCarrierData());
-  o.add(buildCarrierData());
-  return o;
-}
-
-checkUnnamed31(core.List<api.CarrierData> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkCarrierData(o[0]);
-  checkCarrierData(o[1]);
-}
-
-buildUnnamed32() {
-  var o = new core.List<api.CityData>();
-  o.add(buildCityData());
-  o.add(buildCityData());
-  return o;
-}
-
-checkUnnamed32(core.List<api.CityData> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkCityData(o[0]);
-  checkCityData(o[1]);
-}
-
-buildUnnamed33() {
-  var o = new core.List<api.TaxData>();
-  o.add(buildTaxData());
-  o.add(buildTaxData());
-  return o;
-}
-
-checkUnnamed33(core.List<api.TaxData> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkTaxData(o[0]);
-  checkTaxData(o[1]);
-}
-
-core.int buildCounterData = 0;
-buildData() {
-  var o = new api.Data();
-  buildCounterData++;
-  if (buildCounterData < 3) {
-    o.aircraft = buildUnnamed29();
-    o.airport = buildUnnamed30();
-    o.carrier = buildUnnamed31();
-    o.city = buildUnnamed32();
-    o.kind = "foo";
-    o.tax = buildUnnamed33();
-  }
-  buildCounterData--;
-  return o;
-}
-
-checkData(api.Data o) {
-  buildCounterData++;
-  if (buildCounterData < 3) {
-    checkUnnamed29(o.aircraft);
-    checkUnnamed30(o.airport);
-    checkUnnamed31(o.carrier);
-    checkUnnamed32(o.city);
-    unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed33(o.tax);
-  }
-  buildCounterData--;
-}
-
-core.int buildCounterFareInfo = 0;
-buildFareInfo() {
-  var o = new api.FareInfo();
-  buildCounterFareInfo++;
-  if (buildCounterFareInfo < 3) {
-    o.basisCode = "foo";
-    o.carrier = "foo";
-    o.destination = "foo";
-    o.id = "foo";
-    o.kind = "foo";
-    o.origin = "foo";
-    o.private = true;
-  }
-  buildCounterFareInfo--;
-  return o;
-}
-
-checkFareInfo(api.FareInfo o) {
-  buildCounterFareInfo++;
-  if (buildCounterFareInfo < 3) {
-    unittest.expect(o.basisCode, unittest.equals('foo'));
-    unittest.expect(o.carrier, unittest.equals('foo'));
-    unittest.expect(o.destination, unittest.equals('foo'));
-    unittest.expect(o.id, unittest.equals('foo'));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.origin, unittest.equals('foo'));
-    unittest.expect(o.private, unittest.isTrue);
-  }
-  buildCounterFareInfo--;
-}
-
-core.int buildCounterFlightInfo = 0;
-buildFlightInfo() {
-  var o = new api.FlightInfo();
-  buildCounterFlightInfo++;
-  if (buildCounterFlightInfo < 3) {
-    o.carrier = "foo";
-    o.number = "foo";
-  }
-  buildCounterFlightInfo--;
-  return o;
-}
-
-checkFlightInfo(api.FlightInfo o) {
-  buildCounterFlightInfo++;
-  if (buildCounterFlightInfo < 3) {
-    unittest.expect(o.carrier, unittest.equals('foo'));
-    unittest.expect(o.number, unittest.equals('foo'));
-  }
-  buildCounterFlightInfo--;
-}
-
-buildUnnamed34() {
-  var o = new core.List<api.BagDescriptor>();
-  o.add(buildBagDescriptor());
-  o.add(buildBagDescriptor());
-  return o;
-}
-
-checkUnnamed34(core.List<api.BagDescriptor> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkBagDescriptor(o[0]);
-  checkBagDescriptor(o[1]);
-}
-
-core.int buildCounterFreeBaggageAllowance = 0;
-buildFreeBaggageAllowance() {
-  var o = new api.FreeBaggageAllowance();
-  buildCounterFreeBaggageAllowance++;
-  if (buildCounterFreeBaggageAllowance < 3) {
-    o.bagDescriptor = buildUnnamed34();
-    o.kilos = 42;
-    o.kilosPerPiece = 42;
-    o.kind = "foo";
-    o.pieces = 42;
-    o.pounds = 42;
-  }
-  buildCounterFreeBaggageAllowance--;
-  return o;
-}
-
-checkFreeBaggageAllowance(api.FreeBaggageAllowance o) {
-  buildCounterFreeBaggageAllowance++;
-  if (buildCounterFreeBaggageAllowance < 3) {
-    checkUnnamed34(o.bagDescriptor);
-    unittest.expect(o.kilos, unittest.equals(42));
-    unittest.expect(o.kilosPerPiece, unittest.equals(42));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.pieces, unittest.equals(42));
-    unittest.expect(o.pounds, unittest.equals(42));
-  }
-  buildCounterFreeBaggageAllowance--;
-}
-
-core.int buildCounterLegInfo = 0;
-buildLegInfo() {
-  var o = new api.LegInfo();
-  buildCounterLegInfo++;
-  if (buildCounterLegInfo < 3) {
-    o.aircraft = "foo";
-    o.arrivalTime = "foo";
-    o.changePlane = true;
-    o.connectionDuration = 42;
-    o.departureTime = "foo";
-    o.destination = "foo";
-    o.destinationTerminal = "foo";
-    o.duration = 42;
-    o.id = "foo";
-    o.kind = "foo";
-    o.meal = "foo";
-    o.mileage = 42;
-    o.onTimePerformance = 42;
-    o.operatingDisclosure = "foo";
-    o.origin = "foo";
-    o.originTerminal = "foo";
-    o.secure = true;
-  }
-  buildCounterLegInfo--;
-  return o;
-}
-
-checkLegInfo(api.LegInfo o) {
-  buildCounterLegInfo++;
-  if (buildCounterLegInfo < 3) {
-    unittest.expect(o.aircraft, unittest.equals('foo'));
-    unittest.expect(o.arrivalTime, unittest.equals('foo'));
-    unittest.expect(o.changePlane, unittest.isTrue);
-    unittest.expect(o.connectionDuration, unittest.equals(42));
-    unittest.expect(o.departureTime, unittest.equals('foo'));
-    unittest.expect(o.destination, unittest.equals('foo'));
-    unittest.expect(o.destinationTerminal, unittest.equals('foo'));
-    unittest.expect(o.duration, unittest.equals(42));
-    unittest.expect(o.id, unittest.equals('foo'));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.meal, unittest.equals('foo'));
-    unittest.expect(o.mileage, unittest.equals(42));
-    unittest.expect(o.onTimePerformance, unittest.equals(42));
-    unittest.expect(o.operatingDisclosure, unittest.equals('foo'));
-    unittest.expect(o.origin, unittest.equals('foo'));
-    unittest.expect(o.originTerminal, unittest.equals('foo'));
-    unittest.expect(o.secure, unittest.isTrue);
-  }
-  buildCounterLegInfo--;
-}
-
-core.int buildCounterPassengerCounts = 0;
-buildPassengerCounts() {
-  var o = new api.PassengerCounts();
-  buildCounterPassengerCounts++;
-  if (buildCounterPassengerCounts < 3) {
-    o.adultCount = 42;
-    o.childCount = 42;
-    o.infantInLapCount = 42;
-    o.infantInSeatCount = 42;
-    o.kind = "foo";
-    o.seniorCount = 42;
-  }
-  buildCounterPassengerCounts--;
-  return o;
-}
-
-checkPassengerCounts(api.PassengerCounts o) {
-  buildCounterPassengerCounts++;
-  if (buildCounterPassengerCounts < 3) {
-    unittest.expect(o.adultCount, unittest.equals(42));
-    unittest.expect(o.childCount, unittest.equals(42));
-    unittest.expect(o.infantInLapCount, unittest.equals(42));
-    unittest.expect(o.infantInSeatCount, unittest.equals(42));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.seniorCount, unittest.equals(42));
-  }
-  buildCounterPassengerCounts--;
-}
-
-buildUnnamed35() {
-  var o = new core.List<api.FareInfo>();
-  o.add(buildFareInfo());
-  o.add(buildFareInfo());
-  return o;
-}
-
-checkUnnamed35(core.List<api.FareInfo> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkFareInfo(o[0]);
-  checkFareInfo(o[1]);
-}
-
-buildUnnamed36() {
-  var o = new core.List<api.SegmentPricing>();
-  o.add(buildSegmentPricing());
-  o.add(buildSegmentPricing());
-  return o;
-}
-
-checkUnnamed36(core.List<api.SegmentPricing> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkSegmentPricing(o[0]);
-  checkSegmentPricing(o[1]);
-}
-
-buildUnnamed37() {
-  var o = new core.List<api.TaxInfo>();
-  o.add(buildTaxInfo());
-  o.add(buildTaxInfo());
-  return o;
-}
-
-checkUnnamed37(core.List<api.TaxInfo> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkTaxInfo(o[0]);
-  checkTaxInfo(o[1]);
-}
-
-core.int buildCounterPricingInfo = 0;
-buildPricingInfo() {
-  var o = new api.PricingInfo();
-  buildCounterPricingInfo++;
-  if (buildCounterPricingInfo < 3) {
-    o.baseFareTotal = "foo";
-    o.fare = buildUnnamed35();
-    o.fareCalculation = "foo";
-    o.kind = "foo";
-    o.latestTicketingTime = "foo";
-    o.passengers = buildPassengerCounts();
-    o.ptc = "foo";
-    o.refundable = true;
-    o.saleFareTotal = "foo";
-    o.saleTaxTotal = "foo";
-    o.saleTotal = "foo";
-    o.segmentPricing = buildUnnamed36();
-    o.tax = buildUnnamed37();
-  }
-  buildCounterPricingInfo--;
-  return o;
-}
-
-checkPricingInfo(api.PricingInfo o) {
-  buildCounterPricingInfo++;
-  if (buildCounterPricingInfo < 3) {
-    unittest.expect(o.baseFareTotal, unittest.equals('foo'));
-    checkUnnamed35(o.fare);
-    unittest.expect(o.fareCalculation, unittest.equals('foo'));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.latestTicketingTime, unittest.equals('foo'));
-    checkPassengerCounts(o.passengers);
-    unittest.expect(o.ptc, unittest.equals('foo'));
-    unittest.expect(o.refundable, unittest.isTrue);
-    unittest.expect(o.saleFareTotal, unittest.equals('foo'));
-    unittest.expect(o.saleTaxTotal, unittest.equals('foo'));
-    unittest.expect(o.saleTotal, unittest.equals('foo'));
-    checkUnnamed36(o.segmentPricing);
-    checkUnnamed37(o.tax);
-  }
-  buildCounterPricingInfo--;
-}
-
-buildUnnamed38() {
-  var o = new core.List<api.LegInfo>();
-  o.add(buildLegInfo());
-  o.add(buildLegInfo());
-  return o;
-}
-
-checkUnnamed38(core.List<api.LegInfo> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkLegInfo(o[0]);
-  checkLegInfo(o[1]);
-}
-
-core.int buildCounterSegmentInfo = 0;
-buildSegmentInfo() {
-  var o = new api.SegmentInfo();
-  buildCounterSegmentInfo++;
-  if (buildCounterSegmentInfo < 3) {
-    o.bookingCode = "foo";
-    o.bookingCodeCount = 42;
-    o.cabin = "foo";
-    o.connectionDuration = 42;
-    o.duration = 42;
-    o.flight = buildFlightInfo();
-    o.id = "foo";
-    o.kind = "foo";
-    o.leg = buildUnnamed38();
-    o.marriedSegmentGroup = "foo";
-    o.subjectToGovernmentApproval = true;
-  }
-  buildCounterSegmentInfo--;
-  return o;
-}
-
-checkSegmentInfo(api.SegmentInfo o) {
-  buildCounterSegmentInfo++;
-  if (buildCounterSegmentInfo < 3) {
-    unittest.expect(o.bookingCode, unittest.equals('foo'));
-    unittest.expect(o.bookingCodeCount, unittest.equals(42));
-    unittest.expect(o.cabin, unittest.equals('foo'));
-    unittest.expect(o.connectionDuration, unittest.equals(42));
-    unittest.expect(o.duration, unittest.equals(42));
-    checkFlightInfo(o.flight);
-    unittest.expect(o.id, unittest.equals('foo'));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed38(o.leg);
-    unittest.expect(o.marriedSegmentGroup, unittest.equals('foo'));
-    unittest.expect(o.subjectToGovernmentApproval, unittest.isTrue);
-  }
-  buildCounterSegmentInfo--;
-}
-
-buildUnnamed39() {
-  var o = new core.List<api.FreeBaggageAllowance>();
-  o.add(buildFreeBaggageAllowance());
-  o.add(buildFreeBaggageAllowance());
-  return o;
-}
-
-checkUnnamed39(core.List<api.FreeBaggageAllowance> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkFreeBaggageAllowance(o[0]);
-  checkFreeBaggageAllowance(o[1]);
-}
-
-core.int buildCounterSegmentPricing = 0;
-buildSegmentPricing() {
-  var o = new api.SegmentPricing();
-  buildCounterSegmentPricing++;
-  if (buildCounterSegmentPricing < 3) {
-    o.fareId = "foo";
-    o.freeBaggageOption = buildUnnamed39();
-    o.kind = "foo";
-    o.segmentId = "foo";
-  }
-  buildCounterSegmentPricing--;
-  return o;
-}
-
-checkSegmentPricing(api.SegmentPricing o) {
-  buildCounterSegmentPricing++;
-  if (buildCounterSegmentPricing < 3) {
-    unittest.expect(o.fareId, unittest.equals('foo'));
-    checkUnnamed39(o.freeBaggageOption);
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.segmentId, unittest.equals('foo'));
-  }
-  buildCounterSegmentPricing--;
-}
-
-buildUnnamed40() {
-  var o = new core.List<api.SegmentInfo>();
-  o.add(buildSegmentInfo());
-  o.add(buildSegmentInfo());
-  return o;
-}
-
-checkUnnamed40(core.List<api.SegmentInfo> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkSegmentInfo(o[0]);
-  checkSegmentInfo(o[1]);
-}
-
-core.int buildCounterSliceInfo = 0;
-buildSliceInfo() {
-  var o = new api.SliceInfo();
-  buildCounterSliceInfo++;
-  if (buildCounterSliceInfo < 3) {
-    o.duration = 42;
-    o.kind = "foo";
-    o.segment = buildUnnamed40();
-  }
-  buildCounterSliceInfo--;
-  return o;
-}
-
-checkSliceInfo(api.SliceInfo o) {
-  buildCounterSliceInfo++;
-  if (buildCounterSliceInfo < 3) {
-    unittest.expect(o.duration, unittest.equals(42));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed40(o.segment);
-  }
-  buildCounterSliceInfo--;
-}
-
-buildUnnamed41() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed41(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed42() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed42(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-core.int buildCounterSliceInput = 0;
-buildSliceInput() {
-  var o = new api.SliceInput();
-  buildCounterSliceInput++;
-  if (buildCounterSliceInput < 3) {
-    o.alliance = "foo";
-    o.date = "foo";
-    o.destination = "foo";
-    o.kind = "foo";
-    o.maxConnectionDuration = 42;
-    o.maxStops = 42;
-    o.origin = "foo";
-    o.permittedCarrier = buildUnnamed41();
-    o.permittedDepartureTime = buildTimeOfDayRange();
-    o.preferredCabin = "foo";
-    o.prohibitedCarrier = buildUnnamed42();
-  }
-  buildCounterSliceInput--;
-  return o;
-}
-
-checkSliceInput(api.SliceInput o) {
-  buildCounterSliceInput++;
-  if (buildCounterSliceInput < 3) {
-    unittest.expect(o.alliance, unittest.equals('foo'));
-    unittest.expect(o.date, unittest.equals('foo'));
-    unittest.expect(o.destination, unittest.equals('foo'));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.maxConnectionDuration, unittest.equals(42));
-    unittest.expect(o.maxStops, unittest.equals(42));
-    unittest.expect(o.origin, unittest.equals('foo'));
-    checkUnnamed41(o.permittedCarrier);
-    checkTimeOfDayRange(o.permittedDepartureTime);
-    unittest.expect(o.preferredCabin, unittest.equals('foo'));
-    checkUnnamed42(o.prohibitedCarrier);
-  }
-  buildCounterSliceInput--;
-}
-
-core.int buildCounterTaxData = 0;
-buildTaxData() {
-  var o = new api.TaxData();
-  buildCounterTaxData++;
-  if (buildCounterTaxData < 3) {
-    o.id = "foo";
-    o.kind = "foo";
-    o.name = "foo";
-  }
-  buildCounterTaxData--;
-  return o;
-}
-
-checkTaxData(api.TaxData o) {
-  buildCounterTaxData++;
-  if (buildCounterTaxData < 3) {
-    unittest.expect(o.id, unittest.equals('foo'));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.name, unittest.equals('foo'));
-  }
-  buildCounterTaxData--;
-}
-
-core.int buildCounterTaxInfo = 0;
-buildTaxInfo() {
-  var o = new api.TaxInfo();
-  buildCounterTaxInfo++;
-  if (buildCounterTaxInfo < 3) {
-    o.chargeType = "foo";
-    o.code = "foo";
-    o.country = "foo";
-    o.id = "foo";
-    o.kind = "foo";
-    o.salePrice = "foo";
-  }
-  buildCounterTaxInfo--;
-  return o;
-}
-
-checkTaxInfo(api.TaxInfo o) {
-  buildCounterTaxInfo++;
-  if (buildCounterTaxInfo < 3) {
-    unittest.expect(o.chargeType, unittest.equals('foo'));
-    unittest.expect(o.code, unittest.equals('foo'));
-    unittest.expect(o.country, unittest.equals('foo'));
-    unittest.expect(o.id, unittest.equals('foo'));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.salePrice, unittest.equals('foo'));
-  }
-  buildCounterTaxInfo--;
-}
-
-core.int buildCounterTimeOfDayRange = 0;
-buildTimeOfDayRange() {
-  var o = new api.TimeOfDayRange();
-  buildCounterTimeOfDayRange++;
-  if (buildCounterTimeOfDayRange < 3) {
-    o.earliestTime = "foo";
-    o.kind = "foo";
-    o.latestTime = "foo";
-  }
-  buildCounterTimeOfDayRange--;
-  return o;
-}
-
-checkTimeOfDayRange(api.TimeOfDayRange o) {
-  buildCounterTimeOfDayRange++;
-  if (buildCounterTimeOfDayRange < 3) {
-    unittest.expect(o.earliestTime, unittest.equals('foo'));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.latestTime, unittest.equals('foo'));
-  }
-  buildCounterTimeOfDayRange--;
-}
-
-buildUnnamed43() {
-  var o = new core.List<api.PricingInfo>();
-  o.add(buildPricingInfo());
-  o.add(buildPricingInfo());
-  return o;
-}
-
-checkUnnamed43(core.List<api.PricingInfo> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkPricingInfo(o[0]);
-  checkPricingInfo(o[1]);
-}
-
-buildUnnamed44() {
-  var o = new core.List<api.SliceInfo>();
-  o.add(buildSliceInfo());
-  o.add(buildSliceInfo());
-  return o;
-}
-
-checkUnnamed44(core.List<api.SliceInfo> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkSliceInfo(o[0]);
-  checkSliceInfo(o[1]);
-}
-
-core.int buildCounterTripOption = 0;
-buildTripOption() {
-  var o = new api.TripOption();
-  buildCounterTripOption++;
-  if (buildCounterTripOption < 3) {
-    o.id = "foo";
-    o.kind = "foo";
-    o.pricing = buildUnnamed43();
-    o.saleTotal = "foo";
-    o.slice = buildUnnamed44();
-  }
-  buildCounterTripOption--;
-  return o;
-}
-
-checkTripOption(api.TripOption o) {
-  buildCounterTripOption++;
-  if (buildCounterTripOption < 3) {
-    unittest.expect(o.id, unittest.equals('foo'));
-    unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed43(o.pricing);
-    unittest.expect(o.saleTotal, unittest.equals('foo'));
-    checkUnnamed44(o.slice);
-  }
-  buildCounterTripOption--;
-}
-
-buildUnnamed45() {
-  var o = new core.List<api.SliceInput>();
-  o.add(buildSliceInput());
-  o.add(buildSliceInput());
-  return o;
-}
-
-checkUnnamed45(core.List<api.SliceInput> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkSliceInput(o[0]);
-  checkSliceInput(o[1]);
-}
-
-core.int buildCounterTripOptionsRequest = 0;
-buildTripOptionsRequest() {
-  var o = new api.TripOptionsRequest();
-  buildCounterTripOptionsRequest++;
-  if (buildCounterTripOptionsRequest < 3) {
-    o.maxPrice = "foo";
-    o.passengers = buildPassengerCounts();
-    o.refundable = true;
-    o.saleCountry = "foo";
-    o.slice = buildUnnamed45();
-    o.solutions = 42;
-    o.ticketingCountry = "foo";
-  }
-  buildCounterTripOptionsRequest--;
-  return o;
-}
-
-checkTripOptionsRequest(api.TripOptionsRequest o) {
-  buildCounterTripOptionsRequest++;
-  if (buildCounterTripOptionsRequest < 3) {
-    unittest.expect(o.maxPrice, unittest.equals('foo'));
-    checkPassengerCounts(o.passengers);
-    unittest.expect(o.refundable, unittest.isTrue);
-    unittest.expect(o.saleCountry, unittest.equals('foo'));
-    checkUnnamed45(o.slice);
-    unittest.expect(o.solutions, unittest.equals(42));
-    unittest.expect(o.ticketingCountry, unittest.equals('foo'));
-  }
-  buildCounterTripOptionsRequest--;
-}
-
-buildUnnamed46() {
-  var o = new core.List<api.TripOption>();
-  o.add(buildTripOption());
-  o.add(buildTripOption());
-  return o;
-}
-
-checkUnnamed46(core.List<api.TripOption> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkTripOption(o[0]);
-  checkTripOption(o[1]);
-}
-
-core.int buildCounterTripOptionsResponse = 0;
-buildTripOptionsResponse() {
-  var o = new api.TripOptionsResponse();
-  buildCounterTripOptionsResponse++;
-  if (buildCounterTripOptionsResponse < 3) {
-    o.data = buildData();
-    o.kind = "foo";
-    o.requestId = "foo";
-    o.tripOption = buildUnnamed46();
-  }
-  buildCounterTripOptionsResponse--;
-  return o;
-}
-
-checkTripOptionsResponse(api.TripOptionsResponse o) {
-  buildCounterTripOptionsResponse++;
-  if (buildCounterTripOptionsResponse < 3) {
-    checkData(o.data);
-    unittest.expect(o.kind, unittest.equals('foo'));
-    unittest.expect(o.requestId, unittest.equals('foo'));
-    checkUnnamed46(o.tripOption);
-  }
-  buildCounterTripOptionsResponse--;
-}
-
-core.int buildCounterTripsSearchRequest = 0;
-buildTripsSearchRequest() {
-  var o = new api.TripsSearchRequest();
-  buildCounterTripsSearchRequest++;
-  if (buildCounterTripsSearchRequest < 3) {
-    o.request = buildTripOptionsRequest();
-  }
-  buildCounterTripsSearchRequest--;
-  return o;
-}
-
-checkTripsSearchRequest(api.TripsSearchRequest o) {
-  buildCounterTripsSearchRequest++;
-  if (buildCounterTripsSearchRequest < 3) {
-    checkTripOptionsRequest(o.request);
-  }
-  buildCounterTripsSearchRequest--;
-}
-
-core.int buildCounterTripsSearchResponse = 0;
-buildTripsSearchResponse() {
-  var o = new api.TripsSearchResponse();
-  buildCounterTripsSearchResponse++;
-  if (buildCounterTripsSearchResponse < 3) {
-    o.kind = "foo";
-    o.trips = buildTripOptionsResponse();
-  }
-  buildCounterTripsSearchResponse--;
-  return o;
-}
-
-checkTripsSearchResponse(api.TripsSearchResponse o) {
-  buildCounterTripsSearchResponse++;
-  if (buildCounterTripsSearchResponse < 3) {
-    unittest.expect(o.kind, unittest.equals('foo'));
-    checkTripOptionsResponse(o.trips);
-  }
-  buildCounterTripsSearchResponse--;
-}
-
-main() {
-  unittest.group("obj-schema-AircraftData", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildAircraftData();
-      var od = new api.AircraftData.fromJson(o.toJson());
-      checkAircraftData(od);
-    });
-  });
-
-  unittest.group("obj-schema-AirportData", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildAirportData();
-      var od = new api.AirportData.fromJson(o.toJson());
-      checkAirportData(od);
-    });
-  });
-
-  unittest.group("obj-schema-BagDescriptor", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildBagDescriptor();
-      var od = new api.BagDescriptor.fromJson(o.toJson());
-      checkBagDescriptor(od);
-    });
-  });
-
-  unittest.group("obj-schema-CarrierData", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildCarrierData();
-      var od = new api.CarrierData.fromJson(o.toJson());
-      checkCarrierData(od);
-    });
-  });
-
-  unittest.group("obj-schema-CityData", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildCityData();
-      var od = new api.CityData.fromJson(o.toJson());
-      checkCityData(od);
-    });
-  });
-
-  unittest.group("obj-schema-Data", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildData();
-      var od = new api.Data.fromJson(o.toJson());
-      checkData(od);
-    });
-  });
-
-  unittest.group("obj-schema-FareInfo", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildFareInfo();
-      var od = new api.FareInfo.fromJson(o.toJson());
-      checkFareInfo(od);
-    });
-  });
-
-  unittest.group("obj-schema-FlightInfo", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildFlightInfo();
-      var od = new api.FlightInfo.fromJson(o.toJson());
-      checkFlightInfo(od);
-    });
-  });
-
-  unittest.group("obj-schema-FreeBaggageAllowance", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildFreeBaggageAllowance();
-      var od = new api.FreeBaggageAllowance.fromJson(o.toJson());
-      checkFreeBaggageAllowance(od);
-    });
-  });
-
-  unittest.group("obj-schema-LegInfo", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildLegInfo();
-      var od = new api.LegInfo.fromJson(o.toJson());
-      checkLegInfo(od);
-    });
-  });
-
-  unittest.group("obj-schema-PassengerCounts", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildPassengerCounts();
-      var od = new api.PassengerCounts.fromJson(o.toJson());
-      checkPassengerCounts(od);
-    });
-  });
-
-  unittest.group("obj-schema-PricingInfo", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildPricingInfo();
-      var od = new api.PricingInfo.fromJson(o.toJson());
-      checkPricingInfo(od);
-    });
-  });
-
-  unittest.group("obj-schema-SegmentInfo", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildSegmentInfo();
-      var od = new api.SegmentInfo.fromJson(o.toJson());
-      checkSegmentInfo(od);
-    });
-  });
-
-  unittest.group("obj-schema-SegmentPricing", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildSegmentPricing();
-      var od = new api.SegmentPricing.fromJson(o.toJson());
-      checkSegmentPricing(od);
-    });
-  });
-
-  unittest.group("obj-schema-SliceInfo", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildSliceInfo();
-      var od = new api.SliceInfo.fromJson(o.toJson());
-      checkSliceInfo(od);
-    });
-  });
-
-  unittest.group("obj-schema-SliceInput", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildSliceInput();
-      var od = new api.SliceInput.fromJson(o.toJson());
-      checkSliceInput(od);
-    });
-  });
-
-  unittest.group("obj-schema-TaxData", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildTaxData();
-      var od = new api.TaxData.fromJson(o.toJson());
-      checkTaxData(od);
-    });
-  });
-
-  unittest.group("obj-schema-TaxInfo", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildTaxInfo();
-      var od = new api.TaxInfo.fromJson(o.toJson());
-      checkTaxInfo(od);
-    });
-  });
-
-  unittest.group("obj-schema-TimeOfDayRange", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildTimeOfDayRange();
-      var od = new api.TimeOfDayRange.fromJson(o.toJson());
-      checkTimeOfDayRange(od);
-    });
-  });
-
-  unittest.group("obj-schema-TripOption", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildTripOption();
-      var od = new api.TripOption.fromJson(o.toJson());
-      checkTripOption(od);
-    });
-  });
-
-  unittest.group("obj-schema-TripOptionsRequest", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildTripOptionsRequest();
-      var od = new api.TripOptionsRequest.fromJson(o.toJson());
-      checkTripOptionsRequest(od);
-    });
-  });
-
-  unittest.group("obj-schema-TripOptionsResponse", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildTripOptionsResponse();
-      var od = new api.TripOptionsResponse.fromJson(o.toJson());
-      checkTripOptionsResponse(od);
-    });
-  });
-
-  unittest.group("obj-schema-TripsSearchRequest", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildTripsSearchRequest();
-      var od = new api.TripsSearchRequest.fromJson(o.toJson());
-      checkTripsSearchRequest(od);
-    });
-  });
-
-  unittest.group("obj-schema-TripsSearchResponse", () {
-    unittest.test("to-json--from-json", () {
-      var o = buildTripsSearchResponse();
-      var od = new api.TripsSearchResponse.fromJson(o.toJson());
-      checkTripsSearchResponse(od);
-    });
-  });
-
-  unittest.group("resource-TripsResourceApi", () {
-    unittest.test("method--search", () {
-      var mock = new HttpServerMock();
-      api.TripsResourceApi res = new api.QpxExpressApi(mock).trips;
-      var arg_request = buildTripsSearchRequest();
-      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
-        var obj = new api.TripsSearchRequest.fromJson(json);
-        checkTripsSearchRequest(obj);
-
-        var path = (req.url).path;
-        var pathOffset = 0;
-        var index;
-        var subPart;
-        unittest.expect(
-            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
-        pathOffset += 1;
-        unittest.expect(path.substring(pathOffset, pathOffset + 20),
-            unittest.equals("qpxExpress/v1/trips/"));
-        pathOffset += 20;
-        unittest.expect(path.substring(pathOffset, pathOffset + 6),
-            unittest.equals("search"));
-        pathOffset += 6;
-
-        var query = (req.url).query;
-        var queryOffset = 0;
-        var queryMap = {};
-        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
-        parseBool(n) {
-          if (n == "true") return true;
-          if (n == "false") return false;
-          if (n == null) return null;
-          throw new core.ArgumentError("Invalid boolean: $n");
-        }
-
-        if (query.length > 0) {
-          for (var part in query.split("&")) {
-            var keyvalue = part.split("=");
-            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
-                core.Uri.decodeQueryComponent(keyvalue[1]));
-          }
-        }
-
-        var h = {
-          "content-type": "application/json; charset=utf-8",
-        };
-        var resp = convert.JSON.encode(buildTripsSearchResponse());
-        return new async.Future.value(stringResponse(200, h, resp));
-      }), true);
-      res
-          .search(arg_request)
-          .then(unittest.expectAsync1(((api.TripsSearchResponse response) {
-        checkTripsSearchResponse(response);
-      })));
-    });
-  });
-}
diff --git a/generated/googleapis/test/reseller/v1_test.dart b/generated/googleapis/test/reseller/v1_test.dart
index 9490783..6313762 100644
--- a/generated/googleapis/test/reseller/v1_test.dart
+++ b/generated/googleapis/test/reseller/v1_test.dart
@@ -168,14 +168,14 @@
   buildCounterRenewalSettings--;
 }
 
-buildUnnamed2562() {
+buildUnnamed2577() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2562(core.List<core.String> o) {
+checkUnnamed2577(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -186,7 +186,7 @@
   var o = new api.ResellernotifyGetwatchdetailsResponse();
   buildCounterResellernotifyGetwatchdetailsResponse++;
   if (buildCounterResellernotifyGetwatchdetailsResponse < 3) {
-    o.serviceAccountEmailAddresses = buildUnnamed2562();
+    o.serviceAccountEmailAddresses = buildUnnamed2577();
     o.topicName = "foo";
   }
   buildCounterResellernotifyGetwatchdetailsResponse--;
@@ -197,7 +197,7 @@
     api.ResellernotifyGetwatchdetailsResponse o) {
   buildCounterResellernotifyGetwatchdetailsResponse++;
   if (buildCounterResellernotifyGetwatchdetailsResponse < 3) {
-    checkUnnamed2562(o.serviceAccountEmailAddresses);
+    checkUnnamed2577(o.serviceAccountEmailAddresses);
     unittest.expect(o.topicName, unittest.equals('foo'));
   }
   buildCounterResellernotifyGetwatchdetailsResponse--;
@@ -292,14 +292,14 @@
   buildCounterSubscriptionPlan--;
 }
 
-buildUnnamed2563() {
+buildUnnamed2578() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2563(core.List<core.String> o) {
+checkUnnamed2578(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -367,7 +367,7 @@
     o.skuName = "foo";
     o.status = "foo";
     o.subscriptionId = "foo";
-    o.suspensionReasons = buildUnnamed2563();
+    o.suspensionReasons = buildUnnamed2578();
     o.transferInfo = buildSubscriptionTransferInfo();
     o.trialSettings = buildSubscriptionTrialSettings();
   }
@@ -393,21 +393,21 @@
     unittest.expect(o.skuName, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals('foo'));
     unittest.expect(o.subscriptionId, unittest.equals('foo'));
-    checkUnnamed2563(o.suspensionReasons);
+    checkUnnamed2578(o.suspensionReasons);
     checkSubscriptionTransferInfo(o.transferInfo);
     checkSubscriptionTrialSettings(o.trialSettings);
   }
   buildCounterSubscription--;
 }
 
-buildUnnamed2564() {
+buildUnnamed2579() {
   var o = new core.List<api.Subscription>();
   o.add(buildSubscription());
   o.add(buildSubscription());
   return o;
 }
 
-checkUnnamed2564(core.List<api.Subscription> o) {
+checkUnnamed2579(core.List<api.Subscription> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSubscription(o[0]);
   checkSubscription(o[1]);
@@ -420,7 +420,7 @@
   if (buildCounterSubscriptions < 3) {
     o.kind = "foo";
     o.nextPageToken = "foo";
-    o.subscriptions = buildUnnamed2564();
+    o.subscriptions = buildUnnamed2579();
   }
   buildCounterSubscriptions--;
   return o;
@@ -431,7 +431,7 @@
   if (buildCounterSubscriptions < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2564(o.subscriptions);
+    checkUnnamed2579(o.subscriptions);
   }
   buildCounterSubscriptions--;
 }
@@ -547,6 +547,7 @@
       var mock = new HttpServerMock();
       api.CustomersResourceApi res = new api.ResellerApi(mock).customers;
       var arg_customerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -583,6 +584,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -591,7 +593,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_customerId)
+          .get(arg_customerId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Customer response) {
         checkCustomer(response);
       })));
@@ -602,6 +604,7 @@
       api.CustomersResourceApi res = new api.ResellerApi(mock).customers;
       var arg_request = buildCustomer();
       var arg_customerAuthToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Customer.fromJson(json);
         checkCustomer(obj);
@@ -640,6 +643,7 @@
         }
         unittest.expect(queryMap["customerAuthToken"].first,
             unittest.equals(arg_customerAuthToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -648,7 +652,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, customerAuthToken: arg_customerAuthToken)
+          .insert(arg_request,
+              customerAuthToken: arg_customerAuthToken, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Customer response) {
         checkCustomer(response);
       })));
@@ -659,6 +664,7 @@
       api.CustomersResourceApi res = new api.ResellerApi(mock).customers;
       var arg_request = buildCustomer();
       var arg_customerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Customer.fromJson(json);
         checkCustomer(obj);
@@ -698,6 +704,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -706,7 +713,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_customerId)
+          .patch(arg_request, arg_customerId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Customer response) {
         checkCustomer(response);
       })));
@@ -717,6 +724,7 @@
       api.CustomersResourceApi res = new api.ResellerApi(mock).customers;
       var arg_request = buildCustomer();
       var arg_customerId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Customer.fromJson(json);
         checkCustomer(obj);
@@ -756,6 +764,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -764,7 +773,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_customerId)
+          .update(arg_request, arg_customerId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Customer response) {
         checkCustomer(response);
       })));
@@ -776,6 +785,7 @@
       var mock = new HttpServerMock();
       api.ResellernotifyResourceApi res =
           new api.ResellerApi(mock).resellernotify;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -809,6 +819,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -817,7 +828,7 @@
             convert.JSON.encode(buildResellernotifyGetwatchdetailsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.getwatchdetails().then(unittest
+      res.getwatchdetails($fields: arg_$fields).then(unittest
           .expectAsync1(((api.ResellernotifyGetwatchdetailsResponse response) {
         checkResellernotifyGetwatchdetailsResponse(response);
       })));
@@ -828,6 +839,7 @@
       api.ResellernotifyResourceApi res =
           new api.ResellerApi(mock).resellernotify;
       var arg_serviceAccountEmailAddress = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -863,6 +875,7 @@
         }
         unittest.expect(queryMap["serviceAccountEmailAddress"].first,
             unittest.equals(arg_serviceAccountEmailAddress));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -871,7 +884,9 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .register(serviceAccountEmailAddress: arg_serviceAccountEmailAddress)
+          .register(
+              serviceAccountEmailAddress: arg_serviceAccountEmailAddress,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ResellernotifyResource response) {
         checkResellernotifyResource(response);
       })));
@@ -882,6 +897,7 @@
       api.ResellernotifyResourceApi res =
           new api.ResellerApi(mock).resellernotify;
       var arg_serviceAccountEmailAddress = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -917,6 +933,7 @@
         }
         unittest.expect(queryMap["serviceAccountEmailAddress"].first,
             unittest.equals(arg_serviceAccountEmailAddress));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -926,7 +943,8 @@
       }), true);
       res
           .unregister(
-              serviceAccountEmailAddress: arg_serviceAccountEmailAddress)
+              serviceAccountEmailAddress: arg_serviceAccountEmailAddress,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ResellernotifyResource response) {
         checkResellernotifyResource(response);
       })));
@@ -940,6 +958,7 @@
           new api.ResellerApi(mock).subscriptions;
       var arg_customerId = "foo";
       var arg_subscriptionId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -991,6 +1010,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -999,7 +1019,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .activate(arg_customerId, arg_subscriptionId)
+          .activate(arg_customerId, arg_subscriptionId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscription response) {
         checkSubscription(response);
       })));
@@ -1012,6 +1032,7 @@
       var arg_request = buildChangePlanRequest();
       var arg_customerId = "foo";
       var arg_subscriptionId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ChangePlanRequest.fromJson(json);
         checkChangePlanRequest(obj);
@@ -1066,6 +1087,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1074,7 +1096,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .changePlan(arg_request, arg_customerId, arg_subscriptionId)
+          .changePlan(arg_request, arg_customerId, arg_subscriptionId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscription response) {
         checkSubscription(response);
       })));
@@ -1087,6 +1110,7 @@
       var arg_request = buildRenewalSettings();
       var arg_customerId = "foo";
       var arg_subscriptionId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RenewalSettings.fromJson(json);
         checkRenewalSettings(obj);
@@ -1141,6 +1165,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1150,7 +1175,8 @@
       }), true);
       res
           .changeRenewalSettings(
-              arg_request, arg_customerId, arg_subscriptionId)
+              arg_request, arg_customerId, arg_subscriptionId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscription response) {
         checkSubscription(response);
       })));
@@ -1163,6 +1189,7 @@
       var arg_request = buildSeats();
       var arg_customerId = "foo";
       var arg_subscriptionId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Seats.fromJson(json);
         checkSeats(obj);
@@ -1217,6 +1244,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1225,7 +1253,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .changeSeats(arg_request, arg_customerId, arg_subscriptionId)
+          .changeSeats(arg_request, arg_customerId, arg_subscriptionId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscription response) {
         checkSubscription(response);
       })));
@@ -1238,6 +1267,7 @@
       var arg_customerId = "foo";
       var arg_subscriptionId = "foo";
       var arg_deletionType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1285,6 +1315,7 @@
         }
         unittest.expect(
             queryMap["deletionType"].first, unittest.equals(arg_deletionType));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1293,7 +1324,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_customerId, arg_subscriptionId, arg_deletionType)
+          .delete(arg_customerId, arg_subscriptionId, arg_deletionType,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -1303,6 +1335,7 @@
           new api.ResellerApi(mock).subscriptions;
       var arg_customerId = "foo";
       var arg_subscriptionId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1348,6 +1381,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1356,7 +1390,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_customerId, arg_subscriptionId)
+          .get(arg_customerId, arg_subscriptionId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscription response) {
         checkSubscription(response);
       })));
@@ -1369,6 +1403,7 @@
       var arg_request = buildSubscription();
       var arg_customerId = "foo";
       var arg_customerAuthToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Subscription.fromJson(json);
         checkSubscription(obj);
@@ -1416,6 +1451,7 @@
         }
         unittest.expect(queryMap["customerAuthToken"].first,
             unittest.equals(arg_customerAuthToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1425,7 +1461,7 @@
       }), true);
       res
           .insert(arg_request, arg_customerId,
-              customerAuthToken: arg_customerAuthToken)
+              customerAuthToken: arg_customerAuthToken, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscription response) {
         checkSubscription(response);
       })));
@@ -1440,6 +1476,7 @@
       var arg_customerNamePrefix = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1483,6 +1520,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1496,7 +1534,8 @@
               customerId: arg_customerId,
               customerNamePrefix: arg_customerNamePrefix,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscriptions response) {
         checkSubscriptions(response);
       })));
@@ -1508,6 +1547,7 @@
           new api.ResellerApi(mock).subscriptions;
       var arg_customerId = "foo";
       var arg_subscriptionId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1559,6 +1599,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1567,7 +1608,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .startPaidService(arg_customerId, arg_subscriptionId)
+          .startPaidService(arg_customerId, arg_subscriptionId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscription response) {
         checkSubscription(response);
       })));
@@ -1579,6 +1621,7 @@
           new api.ResellerApi(mock).subscriptions;
       var arg_customerId = "foo";
       var arg_subscriptionId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1630,6 +1673,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1638,7 +1682,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .suspend(arg_customerId, arg_subscriptionId)
+          .suspend(arg_customerId, arg_subscriptionId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscription response) {
         checkSubscription(response);
       })));
diff --git a/generated/googleapis/test/runtimeconfig/v1_test.dart b/generated/googleapis/test/runtimeconfig/v1_test.dart
index 4d31772..eee9c3a 100644
--- a/generated/googleapis/test/runtimeconfig/v1_test.dart
+++ b/generated/googleapis/test/runtimeconfig/v1_test.dart
@@ -80,14 +80,14 @@
   buildCounterEmpty--;
 }
 
-buildUnnamed2001() {
+buildUnnamed1999() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed2001(core.List<api.Operation> o) {
+checkUnnamed1999(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -99,7 +99,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed2001();
+    o.operations = buildUnnamed1999();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -109,12 +109,12 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2001(o.operations);
+    checkUnnamed1999(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
 
-buildUnnamed2002() {
+buildUnnamed2000() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -129,7 +129,7 @@
   return o;
 }
 
-checkUnnamed2002(core.Map<core.String, core.Object> o) {
+checkUnnamed2000(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -143,7 +143,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2003() {
+buildUnnamed2001() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -158,7 +158,7 @@
   return o;
 }
 
-checkUnnamed2003(core.Map<core.String, core.Object> o) {
+checkUnnamed2001(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -179,9 +179,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed2002();
+    o.metadata = buildUnnamed2000();
     o.name = "foo";
-    o.response = buildUnnamed2003();
+    o.response = buildUnnamed2001();
   }
   buildCounterOperation--;
   return o;
@@ -192,14 +192,14 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed2002(o.metadata);
+    checkUnnamed2000(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2003(o.response);
+    checkUnnamed2001(o.response);
   }
   buildCounterOperation--;
 }
 
-buildUnnamed2004() {
+buildUnnamed2002() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -214,7 +214,7 @@
   return o;
 }
 
-checkUnnamed2004(core.Map<core.String, core.Object> o) {
+checkUnnamed2002(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -228,17 +228,17 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2005() {
+buildUnnamed2003() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed2004());
-  o.add(buildUnnamed2004());
+  o.add(buildUnnamed2002());
+  o.add(buildUnnamed2002());
   return o;
 }
 
-checkUnnamed2005(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed2003(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2004(o[0]);
-  checkUnnamed2004(o[1]);
+  checkUnnamed2002(o[0]);
+  checkUnnamed2002(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -247,7 +247,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed2005();
+    o.details = buildUnnamed2003();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -258,7 +258,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed2005(o.details);
+    checkUnnamed2003(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -311,6 +311,7 @@
       api.OperationsResourceApi res = new api.RuntimeconfigApi(mock).operations;
       var arg_request = buildCancelOperationRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CancelOperationRequest.fromJson(json);
         checkCancelOperationRequest(obj);
@@ -345,6 +346,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -353,7 +355,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .cancel(arg_request, arg_name)
+          .cancel(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -363,6 +365,7 @@
       var mock = new HttpServerMock();
       api.OperationsResourceApi res = new api.RuntimeconfigApi(mock).operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -394,6 +397,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -401,7 +405,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -413,6 +419,7 @@
       var arg_pageSize = 42;
       var arg_filter = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -449,6 +456,7 @@
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -460,7 +468,8 @@
           .list(arg_name,
               pageSize: arg_pageSize,
               filter: arg_filter,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
diff --git a/generated/googleapis/test/safebrowsing/v4_test.dart b/generated/googleapis/test/safebrowsing/v4_test.dart
index d751587..b9356ea 100644
--- a/generated/googleapis/test/safebrowsing/v4_test.dart
+++ b/generated/googleapis/test/safebrowsing/v4_test.dart
@@ -90,14 +90,14 @@
   buildCounterClientInfo--;
 }
 
-buildUnnamed1128() {
+buildUnnamed1115() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1128(core.List<core.String> o) {
+checkUnnamed1115(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -111,7 +111,7 @@
     o.maxDatabaseEntries = 42;
     o.maxUpdateEntries = 42;
     o.region = "foo";
-    o.supportedCompressions = buildUnnamed1128();
+    o.supportedCompressions = buildUnnamed1115();
   }
   buildCounterConstraints--;
   return o;
@@ -123,19 +123,19 @@
     unittest.expect(o.maxDatabaseEntries, unittest.equals(42));
     unittest.expect(o.maxUpdateEntries, unittest.equals(42));
     unittest.expect(o.region, unittest.equals('foo'));
-    checkUnnamed1128(o.supportedCompressions);
+    checkUnnamed1115(o.supportedCompressions);
   }
   buildCounterConstraints--;
 }
 
-buildUnnamed1129() {
+buildUnnamed1116() {
   var o = new core.List<api.ListUpdateRequest>();
   o.add(buildListUpdateRequest());
   o.add(buildListUpdateRequest());
   return o;
 }
 
-checkUnnamed1129(core.List<api.ListUpdateRequest> o) {
+checkUnnamed1116(core.List<api.ListUpdateRequest> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkListUpdateRequest(o[0]);
   checkListUpdateRequest(o[1]);
@@ -147,7 +147,7 @@
   buildCounterFetchThreatListUpdatesRequest++;
   if (buildCounterFetchThreatListUpdatesRequest < 3) {
     o.client = buildClientInfo();
-    o.listUpdateRequests = buildUnnamed1129();
+    o.listUpdateRequests = buildUnnamed1116();
   }
   buildCounterFetchThreatListUpdatesRequest--;
   return o;
@@ -157,19 +157,19 @@
   buildCounterFetchThreatListUpdatesRequest++;
   if (buildCounterFetchThreatListUpdatesRequest < 3) {
     checkClientInfo(o.client);
-    checkUnnamed1129(o.listUpdateRequests);
+    checkUnnamed1116(o.listUpdateRequests);
   }
   buildCounterFetchThreatListUpdatesRequest--;
 }
 
-buildUnnamed1130() {
+buildUnnamed1117() {
   var o = new core.List<api.ListUpdateResponse>();
   o.add(buildListUpdateResponse());
   o.add(buildListUpdateResponse());
   return o;
 }
 
-checkUnnamed1130(core.List<api.ListUpdateResponse> o) {
+checkUnnamed1117(core.List<api.ListUpdateResponse> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkListUpdateResponse(o[0]);
   checkListUpdateResponse(o[1]);
@@ -180,7 +180,7 @@
   var o = new api.FetchThreatListUpdatesResponse();
   buildCounterFetchThreatListUpdatesResponse++;
   if (buildCounterFetchThreatListUpdatesResponse < 3) {
-    o.listUpdateResponses = buildUnnamed1130();
+    o.listUpdateResponses = buildUnnamed1117();
     o.minimumWaitDuration = "foo";
   }
   buildCounterFetchThreatListUpdatesResponse--;
@@ -190,20 +190,20 @@
 checkFetchThreatListUpdatesResponse(api.FetchThreatListUpdatesResponse o) {
   buildCounterFetchThreatListUpdatesResponse++;
   if (buildCounterFetchThreatListUpdatesResponse < 3) {
-    checkUnnamed1130(o.listUpdateResponses);
+    checkUnnamed1117(o.listUpdateResponses);
     unittest.expect(o.minimumWaitDuration, unittest.equals('foo'));
   }
   buildCounterFetchThreatListUpdatesResponse--;
 }
 
-buildUnnamed1131() {
+buildUnnamed1118() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1131(core.List<core.String> o) {
+checkUnnamed1118(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -216,7 +216,7 @@
   if (buildCounterFindFullHashesRequest < 3) {
     o.apiClient = buildClientInfo();
     o.client = buildClientInfo();
-    o.clientStates = buildUnnamed1131();
+    o.clientStates = buildUnnamed1118();
     o.threatInfo = buildThreatInfo();
   }
   buildCounterFindFullHashesRequest--;
@@ -228,20 +228,20 @@
   if (buildCounterFindFullHashesRequest < 3) {
     checkClientInfo(o.apiClient);
     checkClientInfo(o.client);
-    checkUnnamed1131(o.clientStates);
+    checkUnnamed1118(o.clientStates);
     checkThreatInfo(o.threatInfo);
   }
   buildCounterFindFullHashesRequest--;
 }
 
-buildUnnamed1132() {
+buildUnnamed1119() {
   var o = new core.List<api.ThreatMatch>();
   o.add(buildThreatMatch());
   o.add(buildThreatMatch());
   return o;
 }
 
-checkUnnamed1132(core.List<api.ThreatMatch> o) {
+checkUnnamed1119(core.List<api.ThreatMatch> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkThreatMatch(o[0]);
   checkThreatMatch(o[1]);
@@ -252,7 +252,7 @@
   var o = new api.FindFullHashesResponse();
   buildCounterFindFullHashesResponse++;
   if (buildCounterFindFullHashesResponse < 3) {
-    o.matches = buildUnnamed1132();
+    o.matches = buildUnnamed1119();
     o.minimumWaitDuration = "foo";
     o.negativeCacheDuration = "foo";
   }
@@ -263,7 +263,7 @@
 checkFindFullHashesResponse(api.FindFullHashesResponse o) {
   buildCounterFindFullHashesResponse++;
   if (buildCounterFindFullHashesResponse < 3) {
-    checkUnnamed1132(o.matches);
+    checkUnnamed1119(o.matches);
     unittest.expect(o.minimumWaitDuration, unittest.equals('foo'));
     unittest.expect(o.negativeCacheDuration, unittest.equals('foo'));
   }
@@ -291,14 +291,14 @@
   buildCounterFindThreatMatchesRequest--;
 }
 
-buildUnnamed1133() {
+buildUnnamed1120() {
   var o = new core.List<api.ThreatMatch>();
   o.add(buildThreatMatch());
   o.add(buildThreatMatch());
   return o;
 }
 
-checkUnnamed1133(core.List<api.ThreatMatch> o) {
+checkUnnamed1120(core.List<api.ThreatMatch> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkThreatMatch(o[0]);
   checkThreatMatch(o[1]);
@@ -309,7 +309,7 @@
   var o = new api.FindThreatMatchesResponse();
   buildCounterFindThreatMatchesResponse++;
   if (buildCounterFindThreatMatchesResponse < 3) {
-    o.matches = buildUnnamed1133();
+    o.matches = buildUnnamed1120();
   }
   buildCounterFindThreatMatchesResponse--;
   return o;
@@ -318,19 +318,19 @@
 checkFindThreatMatchesResponse(api.FindThreatMatchesResponse o) {
   buildCounterFindThreatMatchesResponse++;
   if (buildCounterFindThreatMatchesResponse < 3) {
-    checkUnnamed1133(o.matches);
+    checkUnnamed1120(o.matches);
   }
   buildCounterFindThreatMatchesResponse--;
 }
 
-buildUnnamed1134() {
+buildUnnamed1121() {
   var o = new core.List<api.ThreatListDescriptor>();
   o.add(buildThreatListDescriptor());
   o.add(buildThreatListDescriptor());
   return o;
 }
 
-checkUnnamed1134(core.List<api.ThreatListDescriptor> o) {
+checkUnnamed1121(core.List<api.ThreatListDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkThreatListDescriptor(o[0]);
   checkThreatListDescriptor(o[1]);
@@ -341,7 +341,7 @@
   var o = new api.ListThreatListsResponse();
   buildCounterListThreatListsResponse++;
   if (buildCounterListThreatListsResponse < 3) {
-    o.threatLists = buildUnnamed1134();
+    o.threatLists = buildUnnamed1121();
   }
   buildCounterListThreatListsResponse--;
   return o;
@@ -350,7 +350,7 @@
 checkListThreatListsResponse(api.ListThreatListsResponse o) {
   buildCounterListThreatListsResponse++;
   if (buildCounterListThreatListsResponse < 3) {
-    checkUnnamed1134(o.threatLists);
+    checkUnnamed1121(o.threatLists);
   }
   buildCounterListThreatListsResponse--;
 }
@@ -382,27 +382,27 @@
   buildCounterListUpdateRequest--;
 }
 
-buildUnnamed1135() {
+buildUnnamed1122() {
   var o = new core.List<api.ThreatEntrySet>();
   o.add(buildThreatEntrySet());
   o.add(buildThreatEntrySet());
   return o;
 }
 
-checkUnnamed1135(core.List<api.ThreatEntrySet> o) {
+checkUnnamed1122(core.List<api.ThreatEntrySet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkThreatEntrySet(o[0]);
   checkThreatEntrySet(o[1]);
 }
 
-buildUnnamed1136() {
+buildUnnamed1123() {
   var o = new core.List<api.ThreatEntrySet>();
   o.add(buildThreatEntrySet());
   o.add(buildThreatEntrySet());
   return o;
 }
 
-checkUnnamed1136(core.List<api.ThreatEntrySet> o) {
+checkUnnamed1123(core.List<api.ThreatEntrySet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkThreatEntrySet(o[0]);
   checkThreatEntrySet(o[1]);
@@ -413,11 +413,11 @@
   var o = new api.ListUpdateResponse();
   buildCounterListUpdateResponse++;
   if (buildCounterListUpdateResponse < 3) {
-    o.additions = buildUnnamed1135();
+    o.additions = buildUnnamed1122();
     o.checksum = buildChecksum();
     o.newClientState = "foo";
     o.platformType = "foo";
-    o.removals = buildUnnamed1136();
+    o.removals = buildUnnamed1123();
     o.responseType = "foo";
     o.threatEntryType = "foo";
     o.threatType = "foo";
@@ -429,11 +429,11 @@
 checkListUpdateResponse(api.ListUpdateResponse o) {
   buildCounterListUpdateResponse++;
   if (buildCounterListUpdateResponse < 3) {
-    checkUnnamed1135(o.additions);
+    checkUnnamed1122(o.additions);
     checkChecksum(o.checksum);
     unittest.expect(o.newClientState, unittest.equals('foo'));
     unittest.expect(o.platformType, unittest.equals('foo'));
-    checkUnnamed1136(o.removals);
+    checkUnnamed1123(o.removals);
     unittest.expect(o.responseType, unittest.equals('foo'));
     unittest.expect(o.threatEntryType, unittest.equals('foo'));
     unittest.expect(o.threatType, unittest.equals('foo'));
@@ -483,14 +483,14 @@
   buildCounterRawHashes--;
 }
 
-buildUnnamed1137() {
+buildUnnamed1124() {
   var o = new core.List<core.int>();
   o.add(42);
   o.add(42);
   return o;
 }
 
-checkUnnamed1137(core.List<core.int> o) {
+checkUnnamed1124(core.List<core.int> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42));
   unittest.expect(o[1], unittest.equals(42));
@@ -501,7 +501,7 @@
   var o = new api.RawIndices();
   buildCounterRawIndices++;
   if (buildCounterRawIndices < 3) {
-    o.indices = buildUnnamed1137();
+    o.indices = buildUnnamed1124();
   }
   buildCounterRawIndices--;
   return o;
@@ -510,7 +510,7 @@
 checkRawIndices(api.RawIndices o) {
   buildCounterRawIndices++;
   if (buildCounterRawIndices < 3) {
-    checkUnnamed1137(o.indices);
+    checkUnnamed1124(o.indices);
   }
   buildCounterRawIndices--;
 }
@@ -563,14 +563,14 @@
   buildCounterThreatEntry--;
 }
 
-buildUnnamed1138() {
+buildUnnamed1125() {
   var o = new core.List<api.MetadataEntry>();
   o.add(buildMetadataEntry());
   o.add(buildMetadataEntry());
   return o;
 }
 
-checkUnnamed1138(core.List<api.MetadataEntry> o) {
+checkUnnamed1125(core.List<api.MetadataEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetadataEntry(o[0]);
   checkMetadataEntry(o[1]);
@@ -581,7 +581,7 @@
   var o = new api.ThreatEntryMetadata();
   buildCounterThreatEntryMetadata++;
   if (buildCounterThreatEntryMetadata < 3) {
-    o.entries = buildUnnamed1138();
+    o.entries = buildUnnamed1125();
   }
   buildCounterThreatEntryMetadata--;
   return o;
@@ -590,7 +590,7 @@
 checkThreatEntryMetadata(api.ThreatEntryMetadata o) {
   buildCounterThreatEntryMetadata++;
   if (buildCounterThreatEntryMetadata < 3) {
-    checkUnnamed1138(o.entries);
+    checkUnnamed1125(o.entries);
   }
   buildCounterThreatEntryMetadata--;
 }
@@ -622,53 +622,53 @@
   buildCounterThreatEntrySet--;
 }
 
-buildUnnamed1139() {
+buildUnnamed1126() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1139(core.List<core.String> o) {
+checkUnnamed1126(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1140() {
+buildUnnamed1127() {
   var o = new core.List<api.ThreatEntry>();
   o.add(buildThreatEntry());
   o.add(buildThreatEntry());
   return o;
 }
 
-checkUnnamed1140(core.List<api.ThreatEntry> o) {
+checkUnnamed1127(core.List<api.ThreatEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkThreatEntry(o[0]);
   checkThreatEntry(o[1]);
 }
 
-buildUnnamed1141() {
+buildUnnamed1128() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1141(core.List<core.String> o) {
+checkUnnamed1128(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1142() {
+buildUnnamed1129() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1142(core.List<core.String> o) {
+checkUnnamed1129(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -679,10 +679,10 @@
   var o = new api.ThreatInfo();
   buildCounterThreatInfo++;
   if (buildCounterThreatInfo < 3) {
-    o.platformTypes = buildUnnamed1139();
-    o.threatEntries = buildUnnamed1140();
-    o.threatEntryTypes = buildUnnamed1141();
-    o.threatTypes = buildUnnamed1142();
+    o.platformTypes = buildUnnamed1126();
+    o.threatEntries = buildUnnamed1127();
+    o.threatEntryTypes = buildUnnamed1128();
+    o.threatTypes = buildUnnamed1129();
   }
   buildCounterThreatInfo--;
   return o;
@@ -691,10 +691,10 @@
 checkThreatInfo(api.ThreatInfo o) {
   buildCounterThreatInfo++;
   if (buildCounterThreatInfo < 3) {
-    checkUnnamed1139(o.platformTypes);
-    checkUnnamed1140(o.threatEntries);
-    checkUnnamed1141(o.threatEntryTypes);
-    checkUnnamed1142(o.threatTypes);
+    checkUnnamed1126(o.platformTypes);
+    checkUnnamed1127(o.threatEntries);
+    checkUnnamed1128(o.threatEntryTypes);
+    checkUnnamed1129(o.threatTypes);
   }
   buildCounterThreatInfo--;
 }
@@ -934,8 +934,9 @@
       api.EncodedFullHashesResourceApi res =
           new api.SafebrowsingApi(mock).encodedFullHashes;
       var arg_encodedRequest = "foo";
-      var arg_clientId = "foo";
       var arg_clientVersion = "foo";
+      var arg_clientId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -969,10 +970,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["clientId"].first, unittest.equals(arg_clientId));
         unittest.expect(queryMap["clientVersion"].first,
             unittest.equals(arg_clientVersion));
+        unittest.expect(
+            queryMap["clientId"].first, unittest.equals(arg_clientId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -982,7 +984,9 @@
       }), true);
       res
           .get(arg_encodedRequest,
-              clientId: arg_clientId, clientVersion: arg_clientVersion)
+              clientVersion: arg_clientVersion,
+              clientId: arg_clientId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.FindFullHashesResponse response) {
         checkFindFullHashesResponse(response);
       })));
@@ -997,6 +1001,7 @@
       var arg_encodedRequest = "foo";
       var arg_clientId = "foo";
       var arg_clientVersion = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1034,6 +1039,7 @@
             queryMap["clientId"].first, unittest.equals(arg_clientId));
         unittest.expect(queryMap["clientVersion"].first,
             unittest.equals(arg_clientVersion));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1043,7 +1049,9 @@
       }), true);
       res
           .get(arg_encodedRequest,
-              clientId: arg_clientId, clientVersion: arg_clientVersion)
+              clientId: arg_clientId,
+              clientVersion: arg_clientVersion,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.FetchThreatListUpdatesResponse response) {
         checkFetchThreatListUpdatesResponse(response);
@@ -1056,6 +1064,7 @@
       var mock = new HttpServerMock();
       api.FullHashesResourceApi res = new api.SafebrowsingApi(mock).fullHashes;
       var arg_request = buildFindFullHashesRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.FindFullHashesRequest.fromJson(json);
         checkFindFullHashesRequest(obj);
@@ -1089,6 +1098,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1097,7 +1107,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .find(arg_request)
+          .find(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.FindFullHashesResponse response) {
         checkFindFullHashesResponse(response);
       })));
@@ -1110,6 +1120,7 @@
       api.ThreatListUpdatesResourceApi res =
           new api.SafebrowsingApi(mock).threatListUpdates;
       var arg_request = buildFetchThreatListUpdatesRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.FetchThreatListUpdatesRequest.fromJson(json);
         checkFetchThreatListUpdatesRequest(obj);
@@ -1143,6 +1154,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1150,7 +1162,7 @@
         var resp = convert.JSON.encode(buildFetchThreatListUpdatesResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.fetch(arg_request).then(
+      res.fetch(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.FetchThreatListUpdatesResponse response) {
         checkFetchThreatListUpdatesResponse(response);
       })));
@@ -1162,6 +1174,7 @@
       var mock = new HttpServerMock();
       api.ThreatListsResourceApi res =
           new api.SafebrowsingApi(mock).threatLists;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1192,6 +1205,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1200,7 +1214,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list()
+          .list($fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListThreatListsResponse response) {
         checkListThreatListsResponse(response);
       })));
@@ -1213,6 +1227,7 @@
       api.ThreatMatchesResourceApi res =
           new api.SafebrowsingApi(mock).threatMatches;
       var arg_request = buildFindThreatMatchesRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.FindThreatMatchesRequest.fromJson(json);
         checkFindThreatMatchesRequest(obj);
@@ -1246,6 +1261,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1253,7 +1269,7 @@
         var resp = convert.JSON.encode(buildFindThreatMatchesResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.find(arg_request).then(
+      res.find(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.FindThreatMatchesResponse response) {
         checkFindThreatMatchesResponse(response);
       })));
diff --git a/generated/googleapis/test/script/v1_test.dart b/generated/googleapis/test/script/v1_test.dart
index 4c70ebf..578da40 100644
--- a/generated/googleapis/test/script/v1_test.dart
+++ b/generated/googleapis/test/script/v1_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed845() {
+buildUnnamed830() {
   var o = new core.List<api.ScriptStackTraceElement>();
   o.add(buildScriptStackTraceElement());
   o.add(buildScriptStackTraceElement());
   return o;
 }
 
-checkUnnamed845(core.List<api.ScriptStackTraceElement> o) {
+checkUnnamed830(core.List<api.ScriptStackTraceElement> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkScriptStackTraceElement(o[0]);
   checkScriptStackTraceElement(o[1]);
@@ -70,7 +70,7 @@
   if (buildCounterExecutionError < 3) {
     o.errorMessage = "foo";
     o.errorType = "foo";
-    o.scriptStackTraceElements = buildUnnamed845();
+    o.scriptStackTraceElements = buildUnnamed830();
   }
   buildCounterExecutionError--;
   return o;
@@ -81,12 +81,12 @@
   if (buildCounterExecutionError < 3) {
     unittest.expect(o.errorMessage, unittest.equals('foo'));
     unittest.expect(o.errorType, unittest.equals('foo'));
-    checkUnnamed845(o.scriptStackTraceElements);
+    checkUnnamed830(o.scriptStackTraceElements);
   }
   buildCounterExecutionError--;
 }
 
-buildUnnamed846() {
+buildUnnamed831() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -101,7 +101,7 @@
   return o;
 }
 
-checkUnnamed846(core.List<core.Object> o) {
+checkUnnamed831(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o[0]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -122,7 +122,7 @@
   if (buildCounterExecutionRequest < 3) {
     o.devMode = true;
     o.function = "foo";
-    o.parameters = buildUnnamed846();
+    o.parameters = buildUnnamed831();
     o.sessionState = "foo";
   }
   buildCounterExecutionRequest--;
@@ -134,7 +134,7 @@
   if (buildCounterExecutionRequest < 3) {
     unittest.expect(o.devMode, unittest.isTrue);
     unittest.expect(o.function, unittest.equals('foo'));
-    checkUnnamed846(o.parameters);
+    checkUnnamed831(o.parameters);
     unittest.expect(o.sessionState, unittest.equals('foo'));
   }
   buildCounterExecutionRequest--;
@@ -167,7 +167,7 @@
   buildCounterExecutionResponse--;
 }
 
-buildUnnamed847() {
+buildUnnamed832() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -182,7 +182,7 @@
   return o;
 }
 
-checkUnnamed847(core.Map<core.String, core.Object> o) {
+checkUnnamed832(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted4 = (o["x"]) as core.Map;
   unittest.expect(casted4, unittest.hasLength(3));
@@ -196,7 +196,7 @@
   unittest.expect(casted5["string"], unittest.equals('foo'));
 }
 
-buildUnnamed848() {
+buildUnnamed833() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -211,7 +211,7 @@
   return o;
 }
 
-checkUnnamed848(core.Map<core.String, core.Object> o) {
+checkUnnamed833(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted6 = (o["x"]) as core.Map;
   unittest.expect(casted6, unittest.hasLength(3));
@@ -232,8 +232,8 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed847();
-    o.response = buildUnnamed848();
+    o.metadata = buildUnnamed832();
+    o.response = buildUnnamed833();
   }
   buildCounterOperation--;
   return o;
@@ -244,8 +244,8 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed847(o.metadata);
-    checkUnnamed848(o.response);
+    checkUnnamed832(o.metadata);
+    checkUnnamed833(o.response);
   }
   buildCounterOperation--;
 }
@@ -271,7 +271,7 @@
   buildCounterScriptStackTraceElement--;
 }
 
-buildUnnamed849() {
+buildUnnamed834() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -286,7 +286,7 @@
   return o;
 }
 
-checkUnnamed849(core.Map<core.String, core.Object> o) {
+checkUnnamed834(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted8 = (o["x"]) as core.Map;
   unittest.expect(casted8, unittest.hasLength(3));
@@ -300,17 +300,17 @@
   unittest.expect(casted9["string"], unittest.equals('foo'));
 }
 
-buildUnnamed850() {
+buildUnnamed835() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed849());
-  o.add(buildUnnamed849());
+  o.add(buildUnnamed834());
+  o.add(buildUnnamed834());
   return o;
 }
 
-checkUnnamed850(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed835(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed849(o[0]);
-  checkUnnamed849(o[1]);
+  checkUnnamed834(o[0]);
+  checkUnnamed834(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -319,7 +319,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed850();
+    o.details = buildUnnamed835();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -330,7 +330,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed850(o.details);
+    checkUnnamed835(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -391,6 +391,7 @@
       api.ScriptsResourceApi res = new api.ScriptApi(mock).scripts;
       var arg_request = buildExecutionRequest();
       var arg_scriptId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ExecutionRequest.fromJson(json);
         checkExecutionRequest(obj);
@@ -433,6 +434,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -441,7 +443,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .run(arg_request, arg_scriptId)
+          .run(arg_request, arg_scriptId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
diff --git a/generated/googleapis/test/searchconsole/v1_test.dart b/generated/googleapis/test/searchconsole/v1_test.dart
index cd33c28..3a075b9 100644
--- a/generated/googleapis/test/searchconsole/v1_test.dart
+++ b/generated/googleapis/test/searchconsole/v1_test.dart
@@ -149,27 +149,27 @@
   buildCounterRunMobileFriendlyTestRequest--;
 }
 
-buildUnnamed1273() {
+buildUnnamed1260() {
   var o = new core.List<api.MobileFriendlyIssue>();
   o.add(buildMobileFriendlyIssue());
   o.add(buildMobileFriendlyIssue());
   return o;
 }
 
-checkUnnamed1273(core.List<api.MobileFriendlyIssue> o) {
+checkUnnamed1260(core.List<api.MobileFriendlyIssue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMobileFriendlyIssue(o[0]);
   checkMobileFriendlyIssue(o[1]);
 }
 
-buildUnnamed1274() {
+buildUnnamed1261() {
   var o = new core.List<api.ResourceIssue>();
   o.add(buildResourceIssue());
   o.add(buildResourceIssue());
   return o;
 }
 
-checkUnnamed1274(core.List<api.ResourceIssue> o) {
+checkUnnamed1261(core.List<api.ResourceIssue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceIssue(o[0]);
   checkResourceIssue(o[1]);
@@ -181,8 +181,8 @@
   buildCounterRunMobileFriendlyTestResponse++;
   if (buildCounterRunMobileFriendlyTestResponse < 3) {
     o.mobileFriendliness = "foo";
-    o.mobileFriendlyIssues = buildUnnamed1273();
-    o.resourceIssues = buildUnnamed1274();
+    o.mobileFriendlyIssues = buildUnnamed1260();
+    o.resourceIssues = buildUnnamed1261();
     o.screenshot = buildImage();
     o.testStatus = buildTestStatus();
   }
@@ -194,8 +194,8 @@
   buildCounterRunMobileFriendlyTestResponse++;
   if (buildCounterRunMobileFriendlyTestResponse < 3) {
     unittest.expect(o.mobileFriendliness, unittest.equals('foo'));
-    checkUnnamed1273(o.mobileFriendlyIssues);
-    checkUnnamed1274(o.resourceIssues);
+    checkUnnamed1260(o.mobileFriendlyIssues);
+    checkUnnamed1261(o.resourceIssues);
     checkImage(o.screenshot);
     checkTestStatus(o.testStatus);
   }
@@ -286,6 +286,7 @@
       api.UrlTestingToolsMobileFriendlyTestResourceApi res =
           new api.SearchconsoleApi(mock).urlTestingTools.mobileFriendlyTest;
       var arg_request = buildRunMobileFriendlyTestRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RunMobileFriendlyTestRequest.fromJson(json);
         checkRunMobileFriendlyTestRequest(obj);
@@ -319,6 +320,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -326,7 +328,7 @@
         var resp = convert.JSON.encode(buildRunMobileFriendlyTestResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.run(arg_request).then(
+      res.run(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.RunMobileFriendlyTestResponse response) {
         checkRunMobileFriendlyTestResponse(response);
       })));
diff --git a/generated/googleapis/test/servicecontrol/v1_test.dart b/generated/googleapis/test/servicecontrol/v1_test.dart
index 35c4151..af625ee 100644
--- a/generated/googleapis/test/servicecontrol/v1_test.dart
+++ b/generated/googleapis/test/servicecontrol/v1_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed1742() {
+buildUnnamed1734() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1742(core.List<core.String> o) {
+checkUnnamed1734(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -68,7 +68,7 @@
   var o = new api.AllocateInfo();
   buildCounterAllocateInfo++;
   if (buildCounterAllocateInfo < 3) {
-    o.unusedArguments = buildUnnamed1742();
+    o.unusedArguments = buildUnnamed1734();
   }
   buildCounterAllocateInfo--;
   return o;
@@ -77,7 +77,7 @@
 checkAllocateInfo(api.AllocateInfo o) {
   buildCounterAllocateInfo++;
   if (buildCounterAllocateInfo < 3) {
-    checkUnnamed1742(o.unusedArguments);
+    checkUnnamed1734(o.unusedArguments);
   }
   buildCounterAllocateInfo--;
 }
@@ -103,27 +103,27 @@
   buildCounterAllocateQuotaRequest--;
 }
 
-buildUnnamed1743() {
+buildUnnamed1735() {
   var o = new core.List<api.QuotaError>();
   o.add(buildQuotaError());
   o.add(buildQuotaError());
   return o;
 }
 
-checkUnnamed1743(core.List<api.QuotaError> o) {
+checkUnnamed1735(core.List<api.QuotaError> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQuotaError(o[0]);
   checkQuotaError(o[1]);
 }
 
-buildUnnamed1744() {
+buildUnnamed1736() {
   var o = new core.List<api.MetricValueSet>();
   o.add(buildMetricValueSet());
   o.add(buildMetricValueSet());
   return o;
 }
 
-checkUnnamed1744(core.List<api.MetricValueSet> o) {
+checkUnnamed1736(core.List<api.MetricValueSet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricValueSet(o[0]);
   checkMetricValueSet(o[1]);
@@ -134,10 +134,10 @@
   var o = new api.AllocateQuotaResponse();
   buildCounterAllocateQuotaResponse++;
   if (buildCounterAllocateQuotaResponse < 3) {
-    o.allocateErrors = buildUnnamed1743();
+    o.allocateErrors = buildUnnamed1735();
     o.allocateInfo = buildAllocateInfo();
     o.operationId = "foo";
-    o.quotaMetrics = buildUnnamed1744();
+    o.quotaMetrics = buildUnnamed1736();
     o.serviceConfigId = "foo";
   }
   buildCounterAllocateQuotaResponse--;
@@ -147,29 +147,29 @@
 checkAllocateQuotaResponse(api.AllocateQuotaResponse o) {
   buildCounterAllocateQuotaResponse++;
   if (buildCounterAllocateQuotaResponse < 3) {
-    checkUnnamed1743(o.allocateErrors);
+    checkUnnamed1735(o.allocateErrors);
     checkAllocateInfo(o.allocateInfo);
     unittest.expect(o.operationId, unittest.equals('foo'));
-    checkUnnamed1744(o.quotaMetrics);
+    checkUnnamed1736(o.quotaMetrics);
     unittest.expect(o.serviceConfigId, unittest.equals('foo'));
   }
   buildCounterAllocateQuotaResponse--;
 }
 
-buildUnnamed1745() {
+buildUnnamed1737() {
   var o = new core.List<api.AuthorizationInfo>();
   o.add(buildAuthorizationInfo());
   o.add(buildAuthorizationInfo());
   return o;
 }
 
-checkUnnamed1745(core.List<api.AuthorizationInfo> o) {
+checkUnnamed1737(core.List<api.AuthorizationInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuthorizationInfo(o[0]);
   checkAuthorizationInfo(o[1]);
 }
 
-buildUnnamed1746() {
+buildUnnamed1738() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -184,7 +184,7 @@
   return o;
 }
 
-checkUnnamed1746(core.Map<core.String, core.Object> o) {
+checkUnnamed1738(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -198,20 +198,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1747() {
-  var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed1746());
-  o.add(buildUnnamed1746());
-  return o;
-}
-
-checkUnnamed1747(core.List<core.Map<core.String, core.Object>> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1746(o[0]);
-  checkUnnamed1746(o[1]);
-}
-
-buildUnnamed1748() {
+buildUnnamed1739() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -226,7 +213,7 @@
   return o;
 }
 
-checkUnnamed1748(core.Map<core.String, core.Object> o) {
+checkUnnamed1739(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -240,7 +227,7 @@
   unittest.expect(casted4["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1749() {
+buildUnnamed1740() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -255,7 +242,7 @@
   return o;
 }
 
-checkUnnamed1749(core.Map<core.String, core.Object> o) {
+checkUnnamed1740(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -269,7 +256,7 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1750() {
+buildUnnamed1741() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -284,7 +271,7 @@
   return o;
 }
 
-checkUnnamed1750(core.Map<core.String, core.Object> o) {
+checkUnnamed1741(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted7 = (o["x"]) as core.Map;
   unittest.expect(casted7, unittest.hasLength(3));
@@ -304,15 +291,15 @@
   buildCounterAuditLog++;
   if (buildCounterAuditLog < 3) {
     o.authenticationInfo = buildAuthenticationInfo();
-    o.authorizationInfo = buildUnnamed1745();
-    o.metadata = buildUnnamed1747();
+    o.authorizationInfo = buildUnnamed1737();
+    o.metadata = buildUnnamed1738();
     o.methodName = "foo";
     o.numResponseItems = "foo";
-    o.request = buildUnnamed1748();
+    o.request = buildUnnamed1739();
     o.requestMetadata = buildRequestMetadata();
     o.resourceName = "foo";
-    o.response = buildUnnamed1749();
-    o.serviceData = buildUnnamed1750();
+    o.response = buildUnnamed1740();
+    o.serviceData = buildUnnamed1741();
     o.serviceName = "foo";
     o.status = buildStatus();
   }
@@ -324,22 +311,22 @@
   buildCounterAuditLog++;
   if (buildCounterAuditLog < 3) {
     checkAuthenticationInfo(o.authenticationInfo);
-    checkUnnamed1745(o.authorizationInfo);
-    checkUnnamed1747(o.metadata);
+    checkUnnamed1737(o.authorizationInfo);
+    checkUnnamed1738(o.metadata);
     unittest.expect(o.methodName, unittest.equals('foo'));
     unittest.expect(o.numResponseItems, unittest.equals('foo'));
-    checkUnnamed1748(o.request);
+    checkUnnamed1739(o.request);
     checkRequestMetadata(o.requestMetadata);
     unittest.expect(o.resourceName, unittest.equals('foo'));
-    checkUnnamed1749(o.response);
-    checkUnnamed1750(o.serviceData);
+    checkUnnamed1740(o.response);
+    checkUnnamed1741(o.serviceData);
     unittest.expect(o.serviceName, unittest.equals('foo'));
     checkStatus(o.status);
   }
   buildCounterAuditLog--;
 }
 
-buildUnnamed1751() {
+buildUnnamed1742() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -354,7 +341,7 @@
   return o;
 }
 
-checkUnnamed1751(core.Map<core.String, core.Object> o) {
+checkUnnamed1742(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted9 = (o["x"]) as core.Map;
   unittest.expect(casted9, unittest.hasLength(3));
@@ -375,7 +362,7 @@
   if (buildCounterAuthenticationInfo < 3) {
     o.authoritySelector = "foo";
     o.principalEmail = "foo";
-    o.thirdPartyPrincipal = buildUnnamed1751();
+    o.thirdPartyPrincipal = buildUnnamed1742();
   }
   buildCounterAuthenticationInfo--;
   return o;
@@ -386,7 +373,7 @@
   if (buildCounterAuthenticationInfo < 3) {
     unittest.expect(o.authoritySelector, unittest.equals('foo'));
     unittest.expect(o.principalEmail, unittest.equals('foo'));
-    checkUnnamed1751(o.thirdPartyPrincipal);
+    checkUnnamed1742(o.thirdPartyPrincipal);
   }
   buildCounterAuthenticationInfo--;
 }
@@ -435,14 +422,14 @@
   buildCounterCheckError--;
 }
 
-buildUnnamed1752() {
+buildUnnamed1743() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1752(core.List<core.String> o) {
+checkUnnamed1743(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -454,7 +441,7 @@
   buildCounterCheckInfo++;
   if (buildCounterCheckInfo < 3) {
     o.consumerInfo = buildConsumerInfo();
-    o.unusedArguments = buildUnnamed1752();
+    o.unusedArguments = buildUnnamed1743();
   }
   buildCounterCheckInfo--;
   return o;
@@ -464,7 +451,7 @@
   buildCounterCheckInfo++;
   if (buildCounterCheckInfo < 3) {
     checkConsumerInfo(o.consumerInfo);
-    checkUnnamed1752(o.unusedArguments);
+    checkUnnamed1743(o.unusedArguments);
   }
   buildCounterCheckInfo--;
 }
@@ -494,14 +481,14 @@
   buildCounterCheckRequest--;
 }
 
-buildUnnamed1753() {
+buildUnnamed1744() {
   var o = new core.List<api.CheckError>();
   o.add(buildCheckError());
   o.add(buildCheckError());
   return o;
 }
 
-checkUnnamed1753(core.List<api.CheckError> o) {
+checkUnnamed1744(core.List<api.CheckError> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCheckError(o[0]);
   checkCheckError(o[1]);
@@ -512,7 +499,7 @@
   var o = new api.CheckResponse();
   buildCounterCheckResponse++;
   if (buildCounterCheckResponse < 3) {
-    o.checkErrors = buildUnnamed1753();
+    o.checkErrors = buildUnnamed1744();
     o.checkInfo = buildCheckInfo();
     o.operationId = "foo";
     o.quotaInfo = buildQuotaInfo();
@@ -525,7 +512,7 @@
 checkCheckResponse(api.CheckResponse o) {
   buildCounterCheckResponse++;
   if (buildCounterCheckResponse < 3) {
-    checkUnnamed1753(o.checkErrors);
+    checkUnnamed1744(o.checkErrors);
     checkCheckInfo(o.checkInfo);
     unittest.expect(o.operationId, unittest.equals('foo'));
     checkQuotaInfo(o.quotaInfo);
@@ -553,14 +540,14 @@
   buildCounterConsumerInfo--;
 }
 
-buildUnnamed1754() {
+buildUnnamed1745() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1754(core.List<core.String> o) {
+checkUnnamed1745(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -571,7 +558,7 @@
   var o = new api.Distribution();
   buildCounterDistribution++;
   if (buildCounterDistribution < 3) {
-    o.bucketCounts = buildUnnamed1754();
+    o.bucketCounts = buildUnnamed1745();
     o.count = "foo";
     o.explicitBuckets = buildExplicitBuckets();
     o.exponentialBuckets = buildExponentialBuckets();
@@ -588,7 +575,7 @@
 checkDistribution(api.Distribution o) {
   buildCounterDistribution++;
   if (buildCounterDistribution < 3) {
-    checkUnnamed1754(o.bucketCounts);
+    checkUnnamed1745(o.bucketCounts);
     unittest.expect(o.count, unittest.equals('foo'));
     checkExplicitBuckets(o.explicitBuckets);
     checkExponentialBuckets(o.exponentialBuckets);
@@ -622,27 +609,27 @@
   buildCounterEndReconciliationRequest--;
 }
 
-buildUnnamed1755() {
+buildUnnamed1746() {
   var o = new core.List<api.MetricValueSet>();
   o.add(buildMetricValueSet());
   o.add(buildMetricValueSet());
   return o;
 }
 
-checkUnnamed1755(core.List<api.MetricValueSet> o) {
+checkUnnamed1746(core.List<api.MetricValueSet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricValueSet(o[0]);
   checkMetricValueSet(o[1]);
 }
 
-buildUnnamed1756() {
+buildUnnamed1747() {
   var o = new core.List<api.QuotaError>();
   o.add(buildQuotaError());
   o.add(buildQuotaError());
   return o;
 }
 
-checkUnnamed1756(core.List<api.QuotaError> o) {
+checkUnnamed1747(core.List<api.QuotaError> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQuotaError(o[0]);
   checkQuotaError(o[1]);
@@ -654,8 +641,8 @@
   buildCounterEndReconciliationResponse++;
   if (buildCounterEndReconciliationResponse < 3) {
     o.operationId = "foo";
-    o.quotaMetrics = buildUnnamed1755();
-    o.reconciliationErrors = buildUnnamed1756();
+    o.quotaMetrics = buildUnnamed1746();
+    o.reconciliationErrors = buildUnnamed1747();
     o.serviceConfigId = "foo";
   }
   buildCounterEndReconciliationResponse--;
@@ -666,21 +653,21 @@
   buildCounterEndReconciliationResponse++;
   if (buildCounterEndReconciliationResponse < 3) {
     unittest.expect(o.operationId, unittest.equals('foo'));
-    checkUnnamed1755(o.quotaMetrics);
-    checkUnnamed1756(o.reconciliationErrors);
+    checkUnnamed1746(o.quotaMetrics);
+    checkUnnamed1747(o.reconciliationErrors);
     unittest.expect(o.serviceConfigId, unittest.equals('foo'));
   }
   buildCounterEndReconciliationResponse--;
 }
 
-buildUnnamed1757() {
+buildUnnamed1748() {
   var o = new core.List<core.double>();
   o.add(42.0);
   o.add(42.0);
   return o;
 }
 
-checkUnnamed1757(core.List<core.double> o) {
+checkUnnamed1748(core.List<core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42.0));
   unittest.expect(o[1], unittest.equals(42.0));
@@ -691,7 +678,7 @@
   var o = new api.ExplicitBuckets();
   buildCounterExplicitBuckets++;
   if (buildCounterExplicitBuckets < 3) {
-    o.bounds = buildUnnamed1757();
+    o.bounds = buildUnnamed1748();
   }
   buildCounterExplicitBuckets--;
   return o;
@@ -700,7 +687,7 @@
 checkExplicitBuckets(api.ExplicitBuckets o) {
   buildCounterExplicitBuckets++;
   if (buildCounterExplicitBuckets < 3) {
-    checkUnnamed1757(o.bounds);
+    checkUnnamed1748(o.bounds);
   }
   buildCounterExplicitBuckets--;
 }
@@ -751,20 +738,20 @@
   buildCounterLinearBuckets--;
 }
 
-buildUnnamed1758() {
+buildUnnamed1749() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1758(core.Map<core.String, core.String> o) {
+checkUnnamed1749(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed1759() {
+buildUnnamed1750() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -779,7 +766,7 @@
   return o;
 }
 
-checkUnnamed1759(core.Map<core.String, core.Object> o) {
+checkUnnamed1750(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted11 = (o["x"]) as core.Map;
   unittest.expect(casted11, unittest.hasLength(3));
@@ -793,7 +780,7 @@
   unittest.expect(casted12["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1760() {
+buildUnnamed1751() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -808,7 +795,7 @@
   return o;
 }
 
-checkUnnamed1760(core.Map<core.String, core.Object> o) {
+checkUnnamed1751(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted13 = (o["x"]) as core.Map;
   unittest.expect(casted13, unittest.hasLength(3));
@@ -828,11 +815,11 @@
   buildCounterLogEntry++;
   if (buildCounterLogEntry < 3) {
     o.insertId = "foo";
-    o.labels = buildUnnamed1758();
+    o.labels = buildUnnamed1749();
     o.name = "foo";
-    o.protoPayload = buildUnnamed1759();
+    o.protoPayload = buildUnnamed1750();
     o.severity = "foo";
-    o.structPayload = buildUnnamed1760();
+    o.structPayload = buildUnnamed1751();
     o.textPayload = "foo";
     o.timestamp = "foo";
   }
@@ -844,25 +831,25 @@
   buildCounterLogEntry++;
   if (buildCounterLogEntry < 3) {
     unittest.expect(o.insertId, unittest.equals('foo'));
-    checkUnnamed1758(o.labels);
+    checkUnnamed1749(o.labels);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1759(o.protoPayload);
+    checkUnnamed1750(o.protoPayload);
     unittest.expect(o.severity, unittest.equals('foo'));
-    checkUnnamed1760(o.structPayload);
+    checkUnnamed1751(o.structPayload);
     unittest.expect(o.textPayload, unittest.equals('foo'));
     unittest.expect(o.timestamp, unittest.equals('foo'));
   }
   buildCounterLogEntry--;
 }
 
-buildUnnamed1761() {
+buildUnnamed1752() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1761(core.Map<core.String, core.String> o) {
+checkUnnamed1752(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -878,7 +865,7 @@
     o.doubleValue = 42.0;
     o.endTime = "foo";
     o.int64Value = "foo";
-    o.labels = buildUnnamed1761();
+    o.labels = buildUnnamed1752();
     o.moneyValue = buildMoney();
     o.startTime = "foo";
     o.stringValue = "foo";
@@ -895,7 +882,7 @@
     unittest.expect(o.doubleValue, unittest.equals(42.0));
     unittest.expect(o.endTime, unittest.equals('foo'));
     unittest.expect(o.int64Value, unittest.equals('foo'));
-    checkUnnamed1761(o.labels);
+    checkUnnamed1752(o.labels);
     checkMoney(o.moneyValue);
     unittest.expect(o.startTime, unittest.equals('foo'));
     unittest.expect(o.stringValue, unittest.equals('foo'));
@@ -903,14 +890,14 @@
   buildCounterMetricValue--;
 }
 
-buildUnnamed1762() {
+buildUnnamed1753() {
   var o = new core.List<api.MetricValue>();
   o.add(buildMetricValue());
   o.add(buildMetricValue());
   return o;
 }
 
-checkUnnamed1762(core.List<api.MetricValue> o) {
+checkUnnamed1753(core.List<api.MetricValue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricValue(o[0]);
   checkMetricValue(o[1]);
@@ -922,7 +909,7 @@
   buildCounterMetricValueSet++;
   if (buildCounterMetricValueSet < 3) {
     o.metricName = "foo";
-    o.metricValues = buildUnnamed1762();
+    o.metricValues = buildUnnamed1753();
   }
   buildCounterMetricValueSet--;
   return o;
@@ -932,7 +919,7 @@
   buildCounterMetricValueSet++;
   if (buildCounterMetricValueSet < 3) {
     unittest.expect(o.metricName, unittest.equals('foo'));
-    checkUnnamed1762(o.metricValues);
+    checkUnnamed1753(o.metricValues);
   }
   buildCounterMetricValueSet--;
 }
@@ -960,66 +947,66 @@
   buildCounterMoney--;
 }
 
-buildUnnamed1763() {
+buildUnnamed1754() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1763(core.Map<core.String, core.String> o) {
+checkUnnamed1754(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed1764() {
+buildUnnamed1755() {
   var o = new core.List<api.LogEntry>();
   o.add(buildLogEntry());
   o.add(buildLogEntry());
   return o;
 }
 
-checkUnnamed1764(core.List<api.LogEntry> o) {
+checkUnnamed1755(core.List<api.LogEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLogEntry(o[0]);
   checkLogEntry(o[1]);
 }
 
-buildUnnamed1765() {
+buildUnnamed1756() {
   var o = new core.List<api.MetricValueSet>();
   o.add(buildMetricValueSet());
   o.add(buildMetricValueSet());
   return o;
 }
 
-checkUnnamed1765(core.List<api.MetricValueSet> o) {
+checkUnnamed1756(core.List<api.MetricValueSet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricValueSet(o[0]);
   checkMetricValueSet(o[1]);
 }
 
-buildUnnamed1766() {
+buildUnnamed1757() {
   var o = new core.List<api.ResourceInfo>();
   o.add(buildResourceInfo());
   o.add(buildResourceInfo());
   return o;
 }
 
-checkUnnamed1766(core.List<api.ResourceInfo> o) {
+checkUnnamed1757(core.List<api.ResourceInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceInfo(o[0]);
   checkResourceInfo(o[1]);
 }
 
-buildUnnamed1767() {
+buildUnnamed1758() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1767(core.Map<core.String, core.String> o) {
+checkUnnamed1758(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1033,16 +1020,16 @@
     o.consumerId = "foo";
     o.endTime = "foo";
     o.importance = "foo";
-    o.labels = buildUnnamed1763();
-    o.logEntries = buildUnnamed1764();
-    o.metricValueSets = buildUnnamed1765();
+    o.labels = buildUnnamed1754();
+    o.logEntries = buildUnnamed1755();
+    o.metricValueSets = buildUnnamed1756();
     o.operationId = "foo";
     o.operationName = "foo";
     o.quotaProperties = buildQuotaProperties();
     o.resourceContainer = "foo";
-    o.resources = buildUnnamed1766();
+    o.resources = buildUnnamed1757();
     o.startTime = "foo";
-    o.userLabels = buildUnnamed1767();
+    o.userLabels = buildUnnamed1758();
   }
   buildCounterOperation--;
   return o;
@@ -1054,16 +1041,16 @@
     unittest.expect(o.consumerId, unittest.equals('foo'));
     unittest.expect(o.endTime, unittest.equals('foo'));
     unittest.expect(o.importance, unittest.equals('foo'));
-    checkUnnamed1763(o.labels);
-    checkUnnamed1764(o.logEntries);
-    checkUnnamed1765(o.metricValueSets);
+    checkUnnamed1754(o.labels);
+    checkUnnamed1755(o.logEntries);
+    checkUnnamed1756(o.metricValueSets);
     unittest.expect(o.operationId, unittest.equals('foo'));
     unittest.expect(o.operationName, unittest.equals('foo'));
     checkQuotaProperties(o.quotaProperties);
     unittest.expect(o.resourceContainer, unittest.equals('foo'));
-    checkUnnamed1766(o.resources);
+    checkUnnamed1757(o.resources);
     unittest.expect(o.startTime, unittest.equals('foo'));
-    checkUnnamed1767(o.userLabels);
+    checkUnnamed1758(o.userLabels);
   }
   buildCounterOperation--;
 }
@@ -1091,40 +1078,40 @@
   buildCounterQuotaError--;
 }
 
-buildUnnamed1768() {
+buildUnnamed1759() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1768(core.List<core.String> o) {
+checkUnnamed1759(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1769() {
+buildUnnamed1760() {
   var o = new core.Map<core.String, core.int>();
   o["x"] = 42;
   o["y"] = 42;
   return o;
 }
 
-checkUnnamed1769(core.Map<core.String, core.int> o) {
+checkUnnamed1760(core.Map<core.String, core.int> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals(42));
   unittest.expect(o["y"], unittest.equals(42));
 }
 
-buildUnnamed1770() {
+buildUnnamed1761() {
   var o = new core.List<api.MetricValueSet>();
   o.add(buildMetricValueSet());
   o.add(buildMetricValueSet());
   return o;
 }
 
-checkUnnamed1770(core.List<api.MetricValueSet> o) {
+checkUnnamed1761(core.List<api.MetricValueSet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricValueSet(o[0]);
   checkMetricValueSet(o[1]);
@@ -1135,9 +1122,9 @@
   var o = new api.QuotaInfo();
   buildCounterQuotaInfo++;
   if (buildCounterQuotaInfo < 3) {
-    o.limitExceeded = buildUnnamed1768();
-    o.quotaConsumed = buildUnnamed1769();
-    o.quotaMetrics = buildUnnamed1770();
+    o.limitExceeded = buildUnnamed1759();
+    o.quotaConsumed = buildUnnamed1760();
+    o.quotaMetrics = buildUnnamed1761();
   }
   buildCounterQuotaInfo--;
   return o;
@@ -1146,34 +1133,34 @@
 checkQuotaInfo(api.QuotaInfo o) {
   buildCounterQuotaInfo++;
   if (buildCounterQuotaInfo < 3) {
-    checkUnnamed1768(o.limitExceeded);
-    checkUnnamed1769(o.quotaConsumed);
-    checkUnnamed1770(o.quotaMetrics);
+    checkUnnamed1759(o.limitExceeded);
+    checkUnnamed1760(o.quotaConsumed);
+    checkUnnamed1761(o.quotaMetrics);
   }
   buildCounterQuotaInfo--;
 }
 
-buildUnnamed1771() {
+buildUnnamed1762() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1771(core.Map<core.String, core.String> o) {
+checkUnnamed1762(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed1772() {
+buildUnnamed1763() {
   var o = new core.List<api.MetricValueSet>();
   o.add(buildMetricValueSet());
   o.add(buildMetricValueSet());
   return o;
 }
 
-checkUnnamed1772(core.List<api.MetricValueSet> o) {
+checkUnnamed1763(core.List<api.MetricValueSet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricValueSet(o[0]);
   checkMetricValueSet(o[1]);
@@ -1185,10 +1172,10 @@
   buildCounterQuotaOperation++;
   if (buildCounterQuotaOperation < 3) {
     o.consumerId = "foo";
-    o.labels = buildUnnamed1771();
+    o.labels = buildUnnamed1762();
     o.methodName = "foo";
     o.operationId = "foo";
-    o.quotaMetrics = buildUnnamed1772();
+    o.quotaMetrics = buildUnnamed1763();
     o.quotaMode = "foo";
   }
   buildCounterQuotaOperation--;
@@ -1199,10 +1186,10 @@
   buildCounterQuotaOperation++;
   if (buildCounterQuotaOperation < 3) {
     unittest.expect(o.consumerId, unittest.equals('foo'));
-    checkUnnamed1771(o.labels);
+    checkUnnamed1762(o.labels);
     unittest.expect(o.methodName, unittest.equals('foo'));
     unittest.expect(o.operationId, unittest.equals('foo'));
-    checkUnnamed1772(o.quotaMetrics);
+    checkUnnamed1763(o.quotaMetrics);
     unittest.expect(o.quotaMode, unittest.equals('foo'));
   }
   buildCounterQuotaOperation--;
@@ -1248,27 +1235,27 @@
   buildCounterReleaseQuotaRequest--;
 }
 
-buildUnnamed1773() {
+buildUnnamed1764() {
   var o = new core.List<api.MetricValueSet>();
   o.add(buildMetricValueSet());
   o.add(buildMetricValueSet());
   return o;
 }
 
-checkUnnamed1773(core.List<api.MetricValueSet> o) {
+checkUnnamed1764(core.List<api.MetricValueSet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricValueSet(o[0]);
   checkMetricValueSet(o[1]);
 }
 
-buildUnnamed1774() {
+buildUnnamed1765() {
   var o = new core.List<api.QuotaError>();
   o.add(buildQuotaError());
   o.add(buildQuotaError());
   return o;
 }
 
-checkUnnamed1774(core.List<api.QuotaError> o) {
+checkUnnamed1765(core.List<api.QuotaError> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQuotaError(o[0]);
   checkQuotaError(o[1]);
@@ -1280,8 +1267,8 @@
   buildCounterReleaseQuotaResponse++;
   if (buildCounterReleaseQuotaResponse < 3) {
     o.operationId = "foo";
-    o.quotaMetrics = buildUnnamed1773();
-    o.releaseErrors = buildUnnamed1774();
+    o.quotaMetrics = buildUnnamed1764();
+    o.releaseErrors = buildUnnamed1765();
     o.serviceConfigId = "foo";
   }
   buildCounterReleaseQuotaResponse--;
@@ -1292,8 +1279,8 @@
   buildCounterReleaseQuotaResponse++;
   if (buildCounterReleaseQuotaResponse < 3) {
     unittest.expect(o.operationId, unittest.equals('foo'));
-    checkUnnamed1773(o.quotaMetrics);
-    checkUnnamed1774(o.releaseErrors);
+    checkUnnamed1764(o.quotaMetrics);
+    checkUnnamed1765(o.releaseErrors);
     unittest.expect(o.serviceConfigId, unittest.equals('foo'));
   }
   buildCounterReleaseQuotaResponse--;
@@ -1341,14 +1328,14 @@
   buildCounterReportInfo--;
 }
 
-buildUnnamed1775() {
+buildUnnamed1766() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed1775(core.List<api.Operation> o) {
+checkUnnamed1766(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -1359,7 +1346,7 @@
   var o = new api.ReportRequest();
   buildCounterReportRequest++;
   if (buildCounterReportRequest < 3) {
-    o.operations = buildUnnamed1775();
+    o.operations = buildUnnamed1766();
     o.serviceConfigId = "foo";
   }
   buildCounterReportRequest--;
@@ -1369,33 +1356,33 @@
 checkReportRequest(api.ReportRequest o) {
   buildCounterReportRequest++;
   if (buildCounterReportRequest < 3) {
-    checkUnnamed1775(o.operations);
+    checkUnnamed1766(o.operations);
     unittest.expect(o.serviceConfigId, unittest.equals('foo'));
   }
   buildCounterReportRequest--;
 }
 
-buildUnnamed1776() {
+buildUnnamed1767() {
   var o = new core.List<api.ReportError>();
   o.add(buildReportError());
   o.add(buildReportError());
   return o;
 }
 
-checkUnnamed1776(core.List<api.ReportError> o) {
+checkUnnamed1767(core.List<api.ReportError> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReportError(o[0]);
   checkReportError(o[1]);
 }
 
-buildUnnamed1777() {
+buildUnnamed1768() {
   var o = new core.List<api.ReportInfo>();
   o.add(buildReportInfo());
   o.add(buildReportInfo());
   return o;
 }
 
-checkUnnamed1777(core.List<api.ReportInfo> o) {
+checkUnnamed1768(core.List<api.ReportInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReportInfo(o[0]);
   checkReportInfo(o[1]);
@@ -1406,8 +1393,8 @@
   var o = new api.ReportResponse();
   buildCounterReportResponse++;
   if (buildCounterReportResponse < 3) {
-    o.reportErrors = buildUnnamed1776();
-    o.reportInfos = buildUnnamed1777();
+    o.reportErrors = buildUnnamed1767();
+    o.reportInfos = buildUnnamed1768();
     o.serviceConfigId = "foo";
   }
   buildCounterReportResponse--;
@@ -1417,8 +1404,8 @@
 checkReportResponse(api.ReportResponse o) {
   buildCounterReportResponse++;
   if (buildCounterReportResponse < 3) {
-    checkUnnamed1776(o.reportErrors);
-    checkUnnamed1777(o.reportInfos);
+    checkUnnamed1767(o.reportErrors);
+    checkUnnamed1768(o.reportInfos);
     unittest.expect(o.serviceConfigId, unittest.equals('foo'));
   }
   buildCounterReportResponse--;
@@ -1489,27 +1476,27 @@
   buildCounterStartReconciliationRequest--;
 }
 
-buildUnnamed1778() {
+buildUnnamed1769() {
   var o = new core.List<api.MetricValueSet>();
   o.add(buildMetricValueSet());
   o.add(buildMetricValueSet());
   return o;
 }
 
-checkUnnamed1778(core.List<api.MetricValueSet> o) {
+checkUnnamed1769(core.List<api.MetricValueSet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricValueSet(o[0]);
   checkMetricValueSet(o[1]);
 }
 
-buildUnnamed1779() {
+buildUnnamed1770() {
   var o = new core.List<api.QuotaError>();
   o.add(buildQuotaError());
   o.add(buildQuotaError());
   return o;
 }
 
-checkUnnamed1779(core.List<api.QuotaError> o) {
+checkUnnamed1770(core.List<api.QuotaError> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQuotaError(o[0]);
   checkQuotaError(o[1]);
@@ -1521,8 +1508,8 @@
   buildCounterStartReconciliationResponse++;
   if (buildCounterStartReconciliationResponse < 3) {
     o.operationId = "foo";
-    o.quotaMetrics = buildUnnamed1778();
-    o.reconciliationErrors = buildUnnamed1779();
+    o.quotaMetrics = buildUnnamed1769();
+    o.reconciliationErrors = buildUnnamed1770();
     o.serviceConfigId = "foo";
   }
   buildCounterStartReconciliationResponse--;
@@ -1533,14 +1520,14 @@
   buildCounterStartReconciliationResponse++;
   if (buildCounterStartReconciliationResponse < 3) {
     unittest.expect(o.operationId, unittest.equals('foo'));
-    checkUnnamed1778(o.quotaMetrics);
-    checkUnnamed1779(o.reconciliationErrors);
+    checkUnnamed1769(o.quotaMetrics);
+    checkUnnamed1770(o.reconciliationErrors);
     unittest.expect(o.serviceConfigId, unittest.equals('foo'));
   }
   buildCounterStartReconciliationResponse--;
 }
 
-buildUnnamed1780() {
+buildUnnamed1771() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1555,7 +1542,7 @@
   return o;
 }
 
-checkUnnamed1780(core.Map<core.String, core.Object> o) {
+checkUnnamed1771(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted15 = (o["x"]) as core.Map;
   unittest.expect(casted15, unittest.hasLength(3));
@@ -1569,17 +1556,17 @@
   unittest.expect(casted16["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1781() {
+buildUnnamed1772() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed1780());
-  o.add(buildUnnamed1780());
+  o.add(buildUnnamed1771());
+  o.add(buildUnnamed1771());
   return o;
 }
 
-checkUnnamed1781(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed1772(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1780(o[0]);
-  checkUnnamed1780(o[1]);
+  checkUnnamed1771(o[0]);
+  checkUnnamed1771(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -1588,7 +1575,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed1781();
+    o.details = buildUnnamed1772();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -1599,7 +1586,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed1781(o.details);
+    checkUnnamed1772(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -1908,6 +1895,7 @@
       api.ServicesResourceApi res = new api.ServicecontrolApi(mock).services;
       var arg_request = buildAllocateQuotaRequest();
       var arg_serviceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AllocateQuotaRequest.fromJson(json);
         checkAllocateQuotaRequest(obj);
@@ -1950,6 +1938,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1958,7 +1947,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .allocateQuota(arg_request, arg_serviceName)
+          .allocateQuota(arg_request, arg_serviceName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AllocateQuotaResponse response) {
         checkAllocateQuotaResponse(response);
       })));
@@ -1969,6 +1958,7 @@
       api.ServicesResourceApi res = new api.ServicecontrolApi(mock).services;
       var arg_request = buildCheckRequest();
       var arg_serviceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CheckRequest.fromJson(json);
         checkCheckRequest(obj);
@@ -2011,6 +2001,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2019,7 +2010,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .check(arg_request, arg_serviceName)
+          .check(arg_request, arg_serviceName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CheckResponse response) {
         checkCheckResponse(response);
       })));
@@ -2030,6 +2021,7 @@
       api.ServicesResourceApi res = new api.ServicecontrolApi(mock).services;
       var arg_request = buildEndReconciliationRequest();
       var arg_serviceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EndReconciliationRequest.fromJson(json);
         checkEndReconciliationRequest(obj);
@@ -2072,6 +2064,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2079,8 +2072,10 @@
         var resp = convert.JSON.encode(buildEndReconciliationResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.endReconciliation(arg_request, arg_serviceName).then(
-          unittest.expectAsync1(((api.EndReconciliationResponse response) {
+      res
+          .endReconciliation(arg_request, arg_serviceName, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.EndReconciliationResponse response) {
         checkEndReconciliationResponse(response);
       })));
     });
@@ -2090,6 +2085,7 @@
       api.ServicesResourceApi res = new api.ServicecontrolApi(mock).services;
       var arg_request = buildReleaseQuotaRequest();
       var arg_serviceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ReleaseQuotaRequest.fromJson(json);
         checkReleaseQuotaRequest(obj);
@@ -2132,6 +2128,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2140,7 +2137,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .releaseQuota(arg_request, arg_serviceName)
+          .releaseQuota(arg_request, arg_serviceName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ReleaseQuotaResponse response) {
         checkReleaseQuotaResponse(response);
       })));
@@ -2151,6 +2148,7 @@
       api.ServicesResourceApi res = new api.ServicecontrolApi(mock).services;
       var arg_request = buildReportRequest();
       var arg_serviceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ReportRequest.fromJson(json);
         checkReportRequest(obj);
@@ -2193,6 +2191,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2201,7 +2200,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .report(arg_request, arg_serviceName)
+          .report(arg_request, arg_serviceName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ReportResponse response) {
         checkReportResponse(response);
       })));
@@ -2212,6 +2211,7 @@
       api.ServicesResourceApi res = new api.ServicecontrolApi(mock).services;
       var arg_request = buildStartReconciliationRequest();
       var arg_serviceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StartReconciliationRequest.fromJson(json);
         checkStartReconciliationRequest(obj);
@@ -2254,6 +2254,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2261,8 +2262,11 @@
         var resp = convert.JSON.encode(buildStartReconciliationResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.startReconciliation(arg_request, arg_serviceName).then(
-          unittest.expectAsync1(((api.StartReconciliationResponse response) {
+      res
+          .startReconciliation(arg_request, arg_serviceName,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.StartReconciliationResponse response) {
         checkStartReconciliationResponse(response);
       })));
     });
diff --git a/generated/googleapis/test/servicemanagement/v1_test.dart b/generated/googleapis/test/servicemanagement/v1_test.dart
index 2dc5f67..d1e63b6 100644
--- a/generated/googleapis/test/servicemanagement/v1_test.dart
+++ b/generated/googleapis/test/servicemanagement/v1_test.dart
@@ -69,40 +69,40 @@
   buildCounterAdvice--;
 }
 
-buildUnnamed1186() {
+buildUnnamed1173() {
   var o = new core.List<api.Method>();
   o.add(buildMethod());
   o.add(buildMethod());
   return o;
 }
 
-checkUnnamed1186(core.List<api.Method> o) {
+checkUnnamed1173(core.List<api.Method> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMethod(o[0]);
   checkMethod(o[1]);
 }
 
-buildUnnamed1187() {
+buildUnnamed1174() {
   var o = new core.List<api.Mixin>();
   o.add(buildMixin());
   o.add(buildMixin());
   return o;
 }
 
-checkUnnamed1187(core.List<api.Mixin> o) {
+checkUnnamed1174(core.List<api.Mixin> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMixin(o[0]);
   checkMixin(o[1]);
 }
 
-buildUnnamed1188() {
+buildUnnamed1175() {
   var o = new core.List<api.Option>();
   o.add(buildOption());
   o.add(buildOption());
   return o;
 }
 
-checkUnnamed1188(core.List<api.Option> o) {
+checkUnnamed1175(core.List<api.Option> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOption(o[0]);
   checkOption(o[1]);
@@ -113,10 +113,10 @@
   var o = new api.Api();
   buildCounterApi++;
   if (buildCounterApi < 3) {
-    o.methods = buildUnnamed1186();
-    o.mixins = buildUnnamed1187();
+    o.methods = buildUnnamed1173();
+    o.mixins = buildUnnamed1174();
     o.name = "foo";
-    o.options = buildUnnamed1188();
+    o.options = buildUnnamed1175();
     o.sourceContext = buildSourceContext();
     o.syntax = "foo";
     o.version = "foo";
@@ -128,10 +128,10 @@
 checkApi(api.Api o) {
   buildCounterApi++;
   if (buildCounterApi < 3) {
-    checkUnnamed1186(o.methods);
-    checkUnnamed1187(o.mixins);
+    checkUnnamed1173(o.methods);
+    checkUnnamed1174(o.mixins);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1188(o.options);
+    checkUnnamed1175(o.options);
     checkSourceContext(o.sourceContext);
     unittest.expect(o.syntax, unittest.equals('foo'));
     unittest.expect(o.version, unittest.equals('foo'));
@@ -139,27 +139,27 @@
   buildCounterApi--;
 }
 
-buildUnnamed1189() {
+buildUnnamed1176() {
   var o = new core.List<api.AuditLogConfig>();
   o.add(buildAuditLogConfig());
   o.add(buildAuditLogConfig());
   return o;
 }
 
-checkUnnamed1189(core.List<api.AuditLogConfig> o) {
+checkUnnamed1176(core.List<api.AuditLogConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditLogConfig(o[0]);
   checkAuditLogConfig(o[1]);
 }
 
-buildUnnamed1190() {
+buildUnnamed1177() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1190(core.List<core.String> o) {
+checkUnnamed1177(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -170,8 +170,8 @@
   var o = new api.AuditConfig();
   buildCounterAuditConfig++;
   if (buildCounterAuditConfig < 3) {
-    o.auditLogConfigs = buildUnnamed1189();
-    o.exemptedMembers = buildUnnamed1190();
+    o.auditLogConfigs = buildUnnamed1176();
+    o.exemptedMembers = buildUnnamed1177();
     o.service = "foo";
   }
   buildCounterAuditConfig--;
@@ -181,21 +181,21 @@
 checkAuditConfig(api.AuditConfig o) {
   buildCounterAuditConfig++;
   if (buildCounterAuditConfig < 3) {
-    checkUnnamed1189(o.auditLogConfigs);
-    checkUnnamed1190(o.exemptedMembers);
+    checkUnnamed1176(o.auditLogConfigs);
+    checkUnnamed1177(o.exemptedMembers);
     unittest.expect(o.service, unittest.equals('foo'));
   }
   buildCounterAuditConfig--;
 }
 
-buildUnnamed1191() {
+buildUnnamed1178() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1191(core.List<core.String> o) {
+checkUnnamed1178(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -206,7 +206,7 @@
   var o = new api.AuditLogConfig();
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    o.exemptedMembers = buildUnnamed1191();
+    o.exemptedMembers = buildUnnamed1178();
     o.logType = "foo";
   }
   buildCounterAuditLogConfig--;
@@ -216,7 +216,7 @@
 checkAuditLogConfig(api.AuditLogConfig o) {
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    checkUnnamed1191(o.exemptedMembers);
+    checkUnnamed1178(o.exemptedMembers);
     unittest.expect(o.logType, unittest.equals('foo'));
   }
   buildCounterAuditLogConfig--;
@@ -270,27 +270,27 @@
   buildCounterAuthRequirement--;
 }
 
-buildUnnamed1192() {
+buildUnnamed1179() {
   var o = new core.List<api.AuthProvider>();
   o.add(buildAuthProvider());
   o.add(buildAuthProvider());
   return o;
 }
 
-checkUnnamed1192(core.List<api.AuthProvider> o) {
+checkUnnamed1179(core.List<api.AuthProvider> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuthProvider(o[0]);
   checkAuthProvider(o[1]);
 }
 
-buildUnnamed1193() {
+buildUnnamed1180() {
   var o = new core.List<api.AuthenticationRule>();
   o.add(buildAuthenticationRule());
   o.add(buildAuthenticationRule());
   return o;
 }
 
-checkUnnamed1193(core.List<api.AuthenticationRule> o) {
+checkUnnamed1180(core.List<api.AuthenticationRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuthenticationRule(o[0]);
   checkAuthenticationRule(o[1]);
@@ -301,8 +301,8 @@
   var o = new api.Authentication();
   buildCounterAuthentication++;
   if (buildCounterAuthentication < 3) {
-    o.providers = buildUnnamed1192();
-    o.rules = buildUnnamed1193();
+    o.providers = buildUnnamed1179();
+    o.rules = buildUnnamed1180();
   }
   buildCounterAuthentication--;
   return o;
@@ -311,20 +311,20 @@
 checkAuthentication(api.Authentication o) {
   buildCounterAuthentication++;
   if (buildCounterAuthentication < 3) {
-    checkUnnamed1192(o.providers);
-    checkUnnamed1193(o.rules);
+    checkUnnamed1179(o.providers);
+    checkUnnamed1180(o.rules);
   }
   buildCounterAuthentication--;
 }
 
-buildUnnamed1194() {
+buildUnnamed1181() {
   var o = new core.List<api.AuthRequirement>();
   o.add(buildAuthRequirement());
   o.add(buildAuthRequirement());
   return o;
 }
 
-checkUnnamed1194(core.List<api.AuthRequirement> o) {
+checkUnnamed1181(core.List<api.AuthRequirement> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuthRequirement(o[0]);
   checkAuthRequirement(o[1]);
@@ -338,7 +338,7 @@
     o.allowWithoutCredential = true;
     o.customAuth = buildCustomAuthRequirements();
     o.oauth = buildOAuthRequirements();
-    o.requirements = buildUnnamed1194();
+    o.requirements = buildUnnamed1181();
     o.selector = "foo";
   }
   buildCounterAuthenticationRule--;
@@ -351,7 +351,7 @@
     unittest.expect(o.allowWithoutCredential, unittest.isTrue);
     checkCustomAuthRequirements(o.customAuth);
     checkOAuthRequirements(o.oauth);
-    checkUnnamed1194(o.requirements);
+    checkUnnamed1181(o.requirements);
     unittest.expect(o.selector, unittest.equals('foo'));
   }
   buildCounterAuthenticationRule--;
@@ -376,14 +376,14 @@
   buildCounterAuthorizationConfig--;
 }
 
-buildUnnamed1195() {
+buildUnnamed1182() {
   var o = new core.List<api.BackendRule>();
   o.add(buildBackendRule());
   o.add(buildBackendRule());
   return o;
 }
 
-checkUnnamed1195(core.List<api.BackendRule> o) {
+checkUnnamed1182(core.List<api.BackendRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBackendRule(o[0]);
   checkBackendRule(o[1]);
@@ -394,7 +394,7 @@
   var o = new api.Backend();
   buildCounterBackend++;
   if (buildCounterBackend < 3) {
-    o.rules = buildUnnamed1195();
+    o.rules = buildUnnamed1182();
   }
   buildCounterBackend--;
   return o;
@@ -403,7 +403,7 @@
 checkBackend(api.Backend o) {
   buildCounterBackend++;
   if (buildCounterBackend < 3) {
-    checkUnnamed1195(o.rules);
+    checkUnnamed1182(o.rules);
   }
   buildCounterBackend--;
 }
@@ -433,14 +433,14 @@
   buildCounterBackendRule--;
 }
 
-buildUnnamed1196() {
+buildUnnamed1183() {
   var o = new core.List<api.BillingDestination>();
   o.add(buildBillingDestination());
   o.add(buildBillingDestination());
   return o;
 }
 
-checkUnnamed1196(core.List<api.BillingDestination> o) {
+checkUnnamed1183(core.List<api.BillingDestination> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBillingDestination(o[0]);
   checkBillingDestination(o[1]);
@@ -451,7 +451,7 @@
   var o = new api.Billing();
   buildCounterBilling++;
   if (buildCounterBilling < 3) {
-    o.consumerDestinations = buildUnnamed1196();
+    o.consumerDestinations = buildUnnamed1183();
   }
   buildCounterBilling--;
   return o;
@@ -460,19 +460,19 @@
 checkBilling(api.Billing o) {
   buildCounterBilling++;
   if (buildCounterBilling < 3) {
-    checkUnnamed1196(o.consumerDestinations);
+    checkUnnamed1183(o.consumerDestinations);
   }
   buildCounterBilling--;
 }
 
-buildUnnamed1197() {
+buildUnnamed1184() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1197(core.List<core.String> o) {
+checkUnnamed1184(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -483,7 +483,7 @@
   var o = new api.BillingDestination();
   buildCounterBillingDestination++;
   if (buildCounterBillingDestination < 3) {
-    o.metrics = buildUnnamed1197();
+    o.metrics = buildUnnamed1184();
     o.monitoredResource = "foo";
   }
   buildCounterBillingDestination--;
@@ -493,20 +493,20 @@
 checkBillingDestination(api.BillingDestination o) {
   buildCounterBillingDestination++;
   if (buildCounterBillingDestination < 3) {
-    checkUnnamed1197(o.metrics);
+    checkUnnamed1184(o.metrics);
     unittest.expect(o.monitoredResource, unittest.equals('foo'));
   }
   buildCounterBillingDestination--;
 }
 
-buildUnnamed1198() {
+buildUnnamed1185() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1198(core.List<core.String> o) {
+checkUnnamed1185(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -518,7 +518,7 @@
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
     o.condition = buildExpr();
-    o.members = buildUnnamed1198();
+    o.members = buildUnnamed1185();
     o.role = "foo";
   }
   buildCounterBinding--;
@@ -529,20 +529,20 @@
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
     checkExpr(o.condition);
-    checkUnnamed1198(o.members);
+    checkUnnamed1185(o.members);
     unittest.expect(o.role, unittest.equals('foo'));
   }
   buildCounterBinding--;
 }
 
-buildUnnamed1199() {
+buildUnnamed1186() {
   var o = new core.List<api.ConfigChange>();
   o.add(buildConfigChange());
   o.add(buildConfigChange());
   return o;
 }
 
-checkUnnamed1199(core.List<api.ConfigChange> o) {
+checkUnnamed1186(core.List<api.ConfigChange> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkConfigChange(o[0]);
   checkConfigChange(o[1]);
@@ -553,7 +553,7 @@
   var o = new api.ChangeReport();
   buildCounterChangeReport++;
   if (buildCounterChangeReport < 3) {
-    o.configChanges = buildUnnamed1199();
+    o.configChanges = buildUnnamed1186();
   }
   buildCounterChangeReport--;
   return o;
@@ -562,19 +562,19 @@
 checkChangeReport(api.ChangeReport o) {
   buildCounterChangeReport++;
   if (buildCounterChangeReport < 3) {
-    checkUnnamed1199(o.configChanges);
+    checkUnnamed1186(o.configChanges);
   }
   buildCounterChangeReport--;
 }
 
-buildUnnamed1200() {
+buildUnnamed1187() {
   var o = new core.List<api.Advice>();
   o.add(buildAdvice());
   o.add(buildAdvice());
   return o;
 }
 
-checkUnnamed1200(core.List<api.Advice> o) {
+checkUnnamed1187(core.List<api.Advice> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAdvice(o[0]);
   checkAdvice(o[1]);
@@ -585,7 +585,7 @@
   var o = new api.ConfigChange();
   buildCounterConfigChange++;
   if (buildCounterConfigChange < 3) {
-    o.advices = buildUnnamed1200();
+    o.advices = buildUnnamed1187();
     o.changeType = "foo";
     o.element = "foo";
     o.newValue = "foo";
@@ -598,7 +598,7 @@
 checkConfigChange(api.ConfigChange o) {
   buildCounterConfigChange++;
   if (buildCounterConfigChange < 3) {
-    checkUnnamed1200(o.advices);
+    checkUnnamed1187(o.advices);
     unittest.expect(o.changeType, unittest.equals('foo'));
     unittest.expect(o.element, unittest.equals('foo'));
     unittest.expect(o.newValue, unittest.equals('foo'));
@@ -649,14 +649,14 @@
   buildCounterConfigRef--;
 }
 
-buildUnnamed1201() {
+buildUnnamed1188() {
   var o = new core.List<api.ConfigFile>();
   o.add(buildConfigFile());
   o.add(buildConfigFile());
   return o;
 }
 
-checkUnnamed1201(core.List<api.ConfigFile> o) {
+checkUnnamed1188(core.List<api.ConfigFile> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkConfigFile(o[0]);
   checkConfigFile(o[1]);
@@ -667,7 +667,7 @@
   var o = new api.ConfigSource();
   buildCounterConfigSource++;
   if (buildCounterConfigSource < 3) {
-    o.files = buildUnnamed1201();
+    o.files = buildUnnamed1188();
     o.id = "foo";
   }
   buildCounterConfigSource--;
@@ -677,20 +677,20 @@
 checkConfigSource(api.ConfigSource o) {
   buildCounterConfigSource++;
   if (buildCounterConfigSource < 3) {
-    checkUnnamed1201(o.files);
+    checkUnnamed1188(o.files);
     unittest.expect(o.id, unittest.equals('foo'));
   }
   buildCounterConfigSource--;
 }
 
-buildUnnamed1202() {
+buildUnnamed1189() {
   var o = new core.List<api.ContextRule>();
   o.add(buildContextRule());
   o.add(buildContextRule());
   return o;
 }
 
-checkUnnamed1202(core.List<api.ContextRule> o) {
+checkUnnamed1189(core.List<api.ContextRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkContextRule(o[0]);
   checkContextRule(o[1]);
@@ -701,7 +701,7 @@
   var o = new api.Context();
   buildCounterContext++;
   if (buildCounterContext < 3) {
-    o.rules = buildUnnamed1202();
+    o.rules = buildUnnamed1189();
   }
   buildCounterContext--;
   return o;
@@ -710,32 +710,32 @@
 checkContext(api.Context o) {
   buildCounterContext++;
   if (buildCounterContext < 3) {
-    checkUnnamed1202(o.rules);
+    checkUnnamed1189(o.rules);
   }
   buildCounterContext--;
 }
 
-buildUnnamed1203() {
+buildUnnamed1190() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1203(core.List<core.String> o) {
+checkUnnamed1190(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1204() {
+buildUnnamed1191() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1204(core.List<core.String> o) {
+checkUnnamed1191(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -746,8 +746,8 @@
   var o = new api.ContextRule();
   buildCounterContextRule++;
   if (buildCounterContextRule < 3) {
-    o.provided = buildUnnamed1203();
-    o.requested = buildUnnamed1204();
+    o.provided = buildUnnamed1190();
+    o.requested = buildUnnamed1191();
     o.selector = "foo";
   }
   buildCounterContextRule--;
@@ -757,8 +757,8 @@
 checkContextRule(api.ContextRule o) {
   buildCounterContextRule++;
   if (buildCounterContextRule < 3) {
-    checkUnnamed1203(o.provided);
-    checkUnnamed1204(o.requested);
+    checkUnnamed1190(o.provided);
+    checkUnnamed1191(o.requested);
     unittest.expect(o.selector, unittest.equals('foo'));
   }
   buildCounterContextRule--;
@@ -802,27 +802,27 @@
   buildCounterCustomAuthRequirements--;
 }
 
-buildUnnamed1205() {
+buildUnnamed1192() {
   var o = new core.List<api.CustomErrorRule>();
   o.add(buildCustomErrorRule());
   o.add(buildCustomErrorRule());
   return o;
 }
 
-checkUnnamed1205(core.List<api.CustomErrorRule> o) {
+checkUnnamed1192(core.List<api.CustomErrorRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCustomErrorRule(o[0]);
   checkCustomErrorRule(o[1]);
 }
 
-buildUnnamed1206() {
+buildUnnamed1193() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1206(core.List<core.String> o) {
+checkUnnamed1193(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -833,8 +833,8 @@
   var o = new api.CustomError();
   buildCounterCustomError++;
   if (buildCounterCustomError < 3) {
-    o.rules = buildUnnamed1205();
-    o.types = buildUnnamed1206();
+    o.rules = buildUnnamed1192();
+    o.types = buildUnnamed1193();
   }
   buildCounterCustomError--;
   return o;
@@ -843,8 +843,8 @@
 checkCustomError(api.CustomError o) {
   buildCounterCustomError++;
   if (buildCounterCustomError < 3) {
-    checkUnnamed1205(o.rules);
-    checkUnnamed1206(o.types);
+    checkUnnamed1192(o.rules);
+    checkUnnamed1193(o.types);
   }
   buildCounterCustomError--;
 }
@@ -948,27 +948,27 @@
   buildCounterDisableServiceRequest--;
 }
 
-buildUnnamed1207() {
+buildUnnamed1194() {
   var o = new core.List<api.Page>();
   o.add(buildPage());
   o.add(buildPage());
   return o;
 }
 
-checkUnnamed1207(core.List<api.Page> o) {
+checkUnnamed1194(core.List<api.Page> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPage(o[0]);
   checkPage(o[1]);
 }
 
-buildUnnamed1208() {
+buildUnnamed1195() {
   var o = new core.List<api.DocumentationRule>();
   o.add(buildDocumentationRule());
   o.add(buildDocumentationRule());
   return o;
 }
 
-checkUnnamed1208(core.List<api.DocumentationRule> o) {
+checkUnnamed1195(core.List<api.DocumentationRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDocumentationRule(o[0]);
   checkDocumentationRule(o[1]);
@@ -981,8 +981,8 @@
   if (buildCounterDocumentation < 3) {
     o.documentationRootUrl = "foo";
     o.overview = "foo";
-    o.pages = buildUnnamed1207();
-    o.rules = buildUnnamed1208();
+    o.pages = buildUnnamed1194();
+    o.rules = buildUnnamed1195();
     o.summary = "foo";
   }
   buildCounterDocumentation--;
@@ -994,8 +994,8 @@
   if (buildCounterDocumentation < 3) {
     unittest.expect(o.documentationRootUrl, unittest.equals('foo'));
     unittest.expect(o.overview, unittest.equals('foo'));
-    checkUnnamed1207(o.pages);
-    checkUnnamed1208(o.rules);
+    checkUnnamed1194(o.pages);
+    checkUnnamed1195(o.rules);
     unittest.expect(o.summary, unittest.equals('foo'));
   }
   buildCounterDocumentation--;
@@ -1043,40 +1043,40 @@
   buildCounterEnableServiceRequest--;
 }
 
-buildUnnamed1209() {
+buildUnnamed1196() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1209(core.List<core.String> o) {
+checkUnnamed1196(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1210() {
+buildUnnamed1197() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1210(core.List<core.String> o) {
+checkUnnamed1197(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1211() {
+buildUnnamed1198() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1211(core.List<core.String> o) {
+checkUnnamed1198(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1087,10 +1087,10 @@
   var o = new api.Endpoint();
   buildCounterEndpoint++;
   if (buildCounterEndpoint < 3) {
-    o.aliases = buildUnnamed1209();
+    o.aliases = buildUnnamed1196();
     o.allowCors = true;
-    o.apis = buildUnnamed1210();
-    o.features = buildUnnamed1211();
+    o.apis = buildUnnamed1197();
+    o.features = buildUnnamed1198();
     o.name = "foo";
     o.target = "foo";
   }
@@ -1101,37 +1101,37 @@
 checkEndpoint(api.Endpoint o) {
   buildCounterEndpoint++;
   if (buildCounterEndpoint < 3) {
-    checkUnnamed1209(o.aliases);
+    checkUnnamed1196(o.aliases);
     unittest.expect(o.allowCors, unittest.isTrue);
-    checkUnnamed1210(o.apis);
-    checkUnnamed1211(o.features);
+    checkUnnamed1197(o.apis);
+    checkUnnamed1198(o.features);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.target, unittest.equals('foo'));
   }
   buildCounterEndpoint--;
 }
 
-buildUnnamed1212() {
+buildUnnamed1199() {
   var o = new core.List<api.EnumValue>();
   o.add(buildEnumValue());
   o.add(buildEnumValue());
   return o;
 }
 
-checkUnnamed1212(core.List<api.EnumValue> o) {
+checkUnnamed1199(core.List<api.EnumValue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEnumValue(o[0]);
   checkEnumValue(o[1]);
 }
 
-buildUnnamed1213() {
+buildUnnamed1200() {
   var o = new core.List<api.Option>();
   o.add(buildOption());
   o.add(buildOption());
   return o;
 }
 
-checkUnnamed1213(core.List<api.Option> o) {
+checkUnnamed1200(core.List<api.Option> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOption(o[0]);
   checkOption(o[1]);
@@ -1142,9 +1142,9 @@
   var o = new api.Enum();
   buildCounterEnum++;
   if (buildCounterEnum < 3) {
-    o.enumvalue = buildUnnamed1212();
+    o.enumvalue = buildUnnamed1199();
     o.name = "foo";
-    o.options = buildUnnamed1213();
+    o.options = buildUnnamed1200();
     o.sourceContext = buildSourceContext();
     o.syntax = "foo";
   }
@@ -1155,23 +1155,23 @@
 checkEnum(api.Enum o) {
   buildCounterEnum++;
   if (buildCounterEnum < 3) {
-    checkUnnamed1212(o.enumvalue);
+    checkUnnamed1199(o.enumvalue);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1213(o.options);
+    checkUnnamed1200(o.options);
     checkSourceContext(o.sourceContext);
     unittest.expect(o.syntax, unittest.equals('foo'));
   }
   buildCounterEnum--;
 }
 
-buildUnnamed1214() {
+buildUnnamed1201() {
   var o = new core.List<api.Option>();
   o.add(buildOption());
   o.add(buildOption());
   return o;
 }
 
-checkUnnamed1214(core.List<api.Option> o) {
+checkUnnamed1201(core.List<api.Option> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOption(o[0]);
   checkOption(o[1]);
@@ -1184,7 +1184,7 @@
   if (buildCounterEnumValue < 3) {
     o.name = "foo";
     o.number = 42;
-    o.options = buildUnnamed1214();
+    o.options = buildUnnamed1201();
   }
   buildCounterEnumValue--;
   return o;
@@ -1195,7 +1195,7 @@
   if (buildCounterEnumValue < 3) {
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.number, unittest.equals(42));
-    checkUnnamed1214(o.options);
+    checkUnnamed1201(o.options);
   }
   buildCounterEnumValue--;
 }
@@ -1244,14 +1244,14 @@
   buildCounterExpr--;
 }
 
-buildUnnamed1215() {
+buildUnnamed1202() {
   var o = new core.List<api.Option>();
   o.add(buildOption());
   o.add(buildOption());
   return o;
 }
 
-checkUnnamed1215(core.List<api.Option> o) {
+checkUnnamed1202(core.List<api.Option> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOption(o[0]);
   checkOption(o[1]);
@@ -1269,7 +1269,7 @@
     o.name = "foo";
     o.number = 42;
     o.oneofIndex = 42;
-    o.options = buildUnnamed1215();
+    o.options = buildUnnamed1202();
     o.packed = true;
     o.typeUrl = "foo";
   }
@@ -1287,21 +1287,21 @@
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.number, unittest.equals(42));
     unittest.expect(o.oneofIndex, unittest.equals(42));
-    checkUnnamed1215(o.options);
+    checkUnnamed1202(o.options);
     unittest.expect(o.packed, unittest.isTrue);
     unittest.expect(o.typeUrl, unittest.equals('foo'));
   }
   buildCounterField--;
 }
 
-buildUnnamed1216() {
+buildUnnamed1203() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1216(core.List<core.String> o) {
+checkUnnamed1203(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1316,7 +1316,7 @@
     o.deadline = "foo";
     o.flowName = "foo";
     o.operationType = 42;
-    o.resourceNames = buildUnnamed1216();
+    o.resourceNames = buildUnnamed1203();
     o.startTime = "foo";
     o.surface = "foo";
   }
@@ -1331,14 +1331,14 @@
     unittest.expect(o.deadline, unittest.equals('foo'));
     unittest.expect(o.flowName, unittest.equals('foo'));
     unittest.expect(o.operationType, unittest.equals(42));
-    checkUnnamed1216(o.resourceNames);
+    checkUnnamed1203(o.resourceNames);
     unittest.expect(o.startTime, unittest.equals('foo'));
     unittest.expect(o.surface, unittest.equals('foo'));
   }
   buildCounterFlowOperationMetadata--;
 }
 
-buildUnnamed1217() {
+buildUnnamed1204() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1353,7 +1353,7 @@
   return o;
 }
 
-checkUnnamed1217(core.Map<core.String, core.Object> o) {
+checkUnnamed1204(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -1367,7 +1367,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1218() {
+buildUnnamed1205() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1382,7 +1382,7 @@
   return o;
 }
 
-checkUnnamed1218(core.Map<core.String, core.Object> o) {
+checkUnnamed1205(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -1401,8 +1401,8 @@
   var o = new api.GenerateConfigReportRequest();
   buildCounterGenerateConfigReportRequest++;
   if (buildCounterGenerateConfigReportRequest < 3) {
-    o.newConfig = buildUnnamed1217();
-    o.oldConfig = buildUnnamed1218();
+    o.newConfig = buildUnnamed1204();
+    o.oldConfig = buildUnnamed1205();
   }
   buildCounterGenerateConfigReportRequest--;
   return o;
@@ -1411,33 +1411,33 @@
 checkGenerateConfigReportRequest(api.GenerateConfigReportRequest o) {
   buildCounterGenerateConfigReportRequest++;
   if (buildCounterGenerateConfigReportRequest < 3) {
-    checkUnnamed1217(o.newConfig);
-    checkUnnamed1218(o.oldConfig);
+    checkUnnamed1204(o.newConfig);
+    checkUnnamed1205(o.oldConfig);
   }
   buildCounterGenerateConfigReportRequest--;
 }
 
-buildUnnamed1219() {
+buildUnnamed1206() {
   var o = new core.List<api.ChangeReport>();
   o.add(buildChangeReport());
   o.add(buildChangeReport());
   return o;
 }
 
-checkUnnamed1219(core.List<api.ChangeReport> o) {
+checkUnnamed1206(core.List<api.ChangeReport> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkChangeReport(o[0]);
   checkChangeReport(o[1]);
 }
 
-buildUnnamed1220() {
+buildUnnamed1207() {
   var o = new core.List<api.Diagnostic>();
   o.add(buildDiagnostic());
   o.add(buildDiagnostic());
   return o;
 }
 
-checkUnnamed1220(core.List<api.Diagnostic> o) {
+checkUnnamed1207(core.List<api.Diagnostic> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDiagnostic(o[0]);
   checkDiagnostic(o[1]);
@@ -1448,8 +1448,8 @@
   var o = new api.GenerateConfigReportResponse();
   buildCounterGenerateConfigReportResponse++;
   if (buildCounterGenerateConfigReportResponse < 3) {
-    o.changeReports = buildUnnamed1219();
-    o.diagnostics = buildUnnamed1220();
+    o.changeReports = buildUnnamed1206();
+    o.diagnostics = buildUnnamed1207();
     o.id = "foo";
     o.serviceName = "foo";
   }
@@ -1460,8 +1460,8 @@
 checkGenerateConfigReportResponse(api.GenerateConfigReportResponse o) {
   buildCounterGenerateConfigReportResponse++;
   if (buildCounterGenerateConfigReportResponse < 3) {
-    checkUnnamed1219(o.changeReports);
-    checkUnnamed1220(o.diagnostics);
+    checkUnnamed1206(o.changeReports);
+    checkUnnamed1207(o.diagnostics);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.serviceName, unittest.equals('foo'));
   }
@@ -1483,14 +1483,14 @@
   buildCounterGetIamPolicyRequest--;
 }
 
-buildUnnamed1221() {
+buildUnnamed1208() {
   var o = new core.List<api.HttpRule>();
   o.add(buildHttpRule());
   o.add(buildHttpRule());
   return o;
 }
 
-checkUnnamed1221(core.List<api.HttpRule> o) {
+checkUnnamed1208(core.List<api.HttpRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHttpRule(o[0]);
   checkHttpRule(o[1]);
@@ -1502,7 +1502,7 @@
   buildCounterHttp++;
   if (buildCounterHttp < 3) {
     o.fullyDecodeReservedExpansion = true;
-    o.rules = buildUnnamed1221();
+    o.rules = buildUnnamed1208();
   }
   buildCounterHttp--;
   return o;
@@ -1512,19 +1512,19 @@
   buildCounterHttp++;
   if (buildCounterHttp < 3) {
     unittest.expect(o.fullyDecodeReservedExpansion, unittest.isTrue);
-    checkUnnamed1221(o.rules);
+    checkUnnamed1208(o.rules);
   }
   buildCounterHttp--;
 }
 
-buildUnnamed1222() {
+buildUnnamed1209() {
   var o = new core.List<api.HttpRule>();
   o.add(buildHttpRule());
   o.add(buildHttpRule());
   return o;
 }
 
-checkUnnamed1222(core.List<api.HttpRule> o) {
+checkUnnamed1209(core.List<api.HttpRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHttpRule(o[0]);
   checkHttpRule(o[1]);
@@ -1535,7 +1535,7 @@
   var o = new api.HttpRule();
   buildCounterHttpRule++;
   if (buildCounterHttpRule < 3) {
-    o.additionalBindings = buildUnnamed1222();
+    o.additionalBindings = buildUnnamed1209();
     o.body = "foo";
     o.custom = buildCustomHttpPattern();
     o.delete = "foo";
@@ -1555,7 +1555,7 @@
 checkHttpRule(api.HttpRule o) {
   buildCounterHttpRule++;
   if (buildCounterHttpRule < 3) {
-    checkUnnamed1222(o.additionalBindings);
+    checkUnnamed1209(o.additionalBindings);
     unittest.expect(o.body, unittest.equals('foo'));
     checkCustomHttpPattern(o.custom);
     unittest.expect(o.delete, unittest.equals('foo'));
@@ -1594,14 +1594,14 @@
   buildCounterLabelDescriptor--;
 }
 
-buildUnnamed1223() {
+buildUnnamed1210() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed1223(core.List<api.Operation> o) {
+checkUnnamed1210(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -1613,7 +1613,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed1223();
+    o.operations = buildUnnamed1210();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -1623,19 +1623,19 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1223(o.operations);
+    checkUnnamed1210(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
 
-buildUnnamed1224() {
+buildUnnamed1211() {
   var o = new core.List<api.Service>();
   o.add(buildService());
   o.add(buildService());
   return o;
 }
 
-checkUnnamed1224(core.List<api.Service> o) {
+checkUnnamed1211(core.List<api.Service> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkService(o[0]);
   checkService(o[1]);
@@ -1647,7 +1647,7 @@
   buildCounterListServiceConfigsResponse++;
   if (buildCounterListServiceConfigsResponse < 3) {
     o.nextPageToken = "foo";
-    o.serviceConfigs = buildUnnamed1224();
+    o.serviceConfigs = buildUnnamed1211();
   }
   buildCounterListServiceConfigsResponse--;
   return o;
@@ -1657,19 +1657,19 @@
   buildCounterListServiceConfigsResponse++;
   if (buildCounterListServiceConfigsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1224(o.serviceConfigs);
+    checkUnnamed1211(o.serviceConfigs);
   }
   buildCounterListServiceConfigsResponse--;
 }
 
-buildUnnamed1225() {
+buildUnnamed1212() {
   var o = new core.List<api.Rollout>();
   o.add(buildRollout());
   o.add(buildRollout());
   return o;
 }
 
-checkUnnamed1225(core.List<api.Rollout> o) {
+checkUnnamed1212(core.List<api.Rollout> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRollout(o[0]);
   checkRollout(o[1]);
@@ -1681,7 +1681,7 @@
   buildCounterListServiceRolloutsResponse++;
   if (buildCounterListServiceRolloutsResponse < 3) {
     o.nextPageToken = "foo";
-    o.rollouts = buildUnnamed1225();
+    o.rollouts = buildUnnamed1212();
   }
   buildCounterListServiceRolloutsResponse--;
   return o;
@@ -1691,19 +1691,19 @@
   buildCounterListServiceRolloutsResponse++;
   if (buildCounterListServiceRolloutsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1225(o.rollouts);
+    checkUnnamed1212(o.rollouts);
   }
   buildCounterListServiceRolloutsResponse--;
 }
 
-buildUnnamed1226() {
+buildUnnamed1213() {
   var o = new core.List<api.ManagedService>();
   o.add(buildManagedService());
   o.add(buildManagedService());
   return o;
 }
 
-checkUnnamed1226(core.List<api.ManagedService> o) {
+checkUnnamed1213(core.List<api.ManagedService> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkManagedService(o[0]);
   checkManagedService(o[1]);
@@ -1715,7 +1715,7 @@
   buildCounterListServicesResponse++;
   if (buildCounterListServicesResponse < 3) {
     o.nextPageToken = "foo";
-    o.services = buildUnnamed1226();
+    o.services = buildUnnamed1213();
   }
   buildCounterListServicesResponse--;
   return o;
@@ -1725,19 +1725,19 @@
   buildCounterListServicesResponse++;
   if (buildCounterListServicesResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1226(o.services);
+    checkUnnamed1213(o.services);
   }
   buildCounterListServicesResponse--;
 }
 
-buildUnnamed1227() {
+buildUnnamed1214() {
   var o = new core.List<api.LabelDescriptor>();
   o.add(buildLabelDescriptor());
   o.add(buildLabelDescriptor());
   return o;
 }
 
-checkUnnamed1227(core.List<api.LabelDescriptor> o) {
+checkUnnamed1214(core.List<api.LabelDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLabelDescriptor(o[0]);
   checkLabelDescriptor(o[1]);
@@ -1750,7 +1750,7 @@
   if (buildCounterLogDescriptor < 3) {
     o.description = "foo";
     o.displayName = "foo";
-    o.labels = buildUnnamed1227();
+    o.labels = buildUnnamed1214();
     o.name = "foo";
   }
   buildCounterLogDescriptor--;
@@ -1762,33 +1762,33 @@
   if (buildCounterLogDescriptor < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.displayName, unittest.equals('foo'));
-    checkUnnamed1227(o.labels);
+    checkUnnamed1214(o.labels);
     unittest.expect(o.name, unittest.equals('foo'));
   }
   buildCounterLogDescriptor--;
 }
 
-buildUnnamed1228() {
+buildUnnamed1215() {
   var o = new core.List<api.LoggingDestination>();
   o.add(buildLoggingDestination());
   o.add(buildLoggingDestination());
   return o;
 }
 
-checkUnnamed1228(core.List<api.LoggingDestination> o) {
+checkUnnamed1215(core.List<api.LoggingDestination> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLoggingDestination(o[0]);
   checkLoggingDestination(o[1]);
 }
 
-buildUnnamed1229() {
+buildUnnamed1216() {
   var o = new core.List<api.LoggingDestination>();
   o.add(buildLoggingDestination());
   o.add(buildLoggingDestination());
   return o;
 }
 
-checkUnnamed1229(core.List<api.LoggingDestination> o) {
+checkUnnamed1216(core.List<api.LoggingDestination> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLoggingDestination(o[0]);
   checkLoggingDestination(o[1]);
@@ -1799,8 +1799,8 @@
   var o = new api.Logging();
   buildCounterLogging++;
   if (buildCounterLogging < 3) {
-    o.consumerDestinations = buildUnnamed1228();
-    o.producerDestinations = buildUnnamed1229();
+    o.consumerDestinations = buildUnnamed1215();
+    o.producerDestinations = buildUnnamed1216();
   }
   buildCounterLogging--;
   return o;
@@ -1809,20 +1809,20 @@
 checkLogging(api.Logging o) {
   buildCounterLogging++;
   if (buildCounterLogging < 3) {
-    checkUnnamed1228(o.consumerDestinations);
-    checkUnnamed1229(o.producerDestinations);
+    checkUnnamed1215(o.consumerDestinations);
+    checkUnnamed1216(o.producerDestinations);
   }
   buildCounterLogging--;
 }
 
-buildUnnamed1230() {
+buildUnnamed1217() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1230(core.List<core.String> o) {
+checkUnnamed1217(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1833,7 +1833,7 @@
   var o = new api.LoggingDestination();
   buildCounterLoggingDestination++;
   if (buildCounterLoggingDestination < 3) {
-    o.logs = buildUnnamed1230();
+    o.logs = buildUnnamed1217();
     o.monitoredResource = "foo";
   }
   buildCounterLoggingDestination--;
@@ -1843,7 +1843,7 @@
 checkLoggingDestination(api.LoggingDestination o) {
   buildCounterLoggingDestination++;
   if (buildCounterLoggingDestination < 3) {
-    checkUnnamed1230(o.logs);
+    checkUnnamed1217(o.logs);
     unittest.expect(o.monitoredResource, unittest.equals('foo'));
   }
   buildCounterLoggingDestination--;
@@ -1899,14 +1899,14 @@
   buildCounterMediaDownload--;
 }
 
-buildUnnamed1231() {
+buildUnnamed1218() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1231(core.List<core.String> o) {
+checkUnnamed1218(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1921,7 +1921,7 @@
     o.dropzone = "foo";
     o.enabled = true;
     o.maxSize = "foo";
-    o.mimeTypes = buildUnnamed1231();
+    o.mimeTypes = buildUnnamed1218();
     o.progressNotification = true;
     o.startNotification = true;
     o.uploadService = "foo";
@@ -1937,7 +1937,7 @@
     unittest.expect(o.dropzone, unittest.equals('foo'));
     unittest.expect(o.enabled, unittest.isTrue);
     unittest.expect(o.maxSize, unittest.equals('foo'));
-    checkUnnamed1231(o.mimeTypes);
+    checkUnnamed1218(o.mimeTypes);
     unittest.expect(o.progressNotification, unittest.isTrue);
     unittest.expect(o.startNotification, unittest.isTrue);
     unittest.expect(o.uploadService, unittest.equals('foo'));
@@ -1945,14 +1945,14 @@
   buildCounterMediaUpload--;
 }
 
-buildUnnamed1232() {
+buildUnnamed1219() {
   var o = new core.List<api.Option>();
   o.add(buildOption());
   o.add(buildOption());
   return o;
 }
 
-checkUnnamed1232(core.List<api.Option> o) {
+checkUnnamed1219(core.List<api.Option> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOption(o[0]);
   checkOption(o[1]);
@@ -1964,7 +1964,7 @@
   buildCounterMethod++;
   if (buildCounterMethod < 3) {
     o.name = "foo";
-    o.options = buildUnnamed1232();
+    o.options = buildUnnamed1219();
     o.requestStreaming = true;
     o.requestTypeUrl = "foo";
     o.responseStreaming = true;
@@ -1979,7 +1979,7 @@
   buildCounterMethod++;
   if (buildCounterMethod < 3) {
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1232(o.options);
+    checkUnnamed1219(o.options);
     unittest.expect(o.requestStreaming, unittest.isTrue);
     unittest.expect(o.requestTypeUrl, unittest.equals('foo'));
     unittest.expect(o.responseStreaming, unittest.isTrue);
@@ -1989,14 +1989,14 @@
   buildCounterMethod--;
 }
 
-buildUnnamed1233() {
+buildUnnamed1220() {
   var o = new core.List<api.LabelDescriptor>();
   o.add(buildLabelDescriptor());
   o.add(buildLabelDescriptor());
   return o;
 }
 
-checkUnnamed1233(core.List<api.LabelDescriptor> o) {
+checkUnnamed1220(core.List<api.LabelDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLabelDescriptor(o[0]);
   checkLabelDescriptor(o[1]);
@@ -2009,7 +2009,7 @@
   if (buildCounterMetricDescriptor < 3) {
     o.description = "foo";
     o.displayName = "foo";
-    o.labels = buildUnnamed1233();
+    o.labels = buildUnnamed1220();
     o.metricKind = "foo";
     o.name = "foo";
     o.type = "foo";
@@ -2025,7 +2025,7 @@
   if (buildCounterMetricDescriptor < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.displayName, unittest.equals('foo'));
-    checkUnnamed1233(o.labels);
+    checkUnnamed1220(o.labels);
     unittest.expect(o.metricKind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
@@ -2035,14 +2035,14 @@
   buildCounterMetricDescriptor--;
 }
 
-buildUnnamed1234() {
+buildUnnamed1221() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1234(core.Map<core.String, core.String> o) {
+checkUnnamed1221(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -2053,7 +2053,7 @@
   var o = new api.MetricRule();
   buildCounterMetricRule++;
   if (buildCounterMetricRule < 3) {
-    o.metricCosts = buildUnnamed1234();
+    o.metricCosts = buildUnnamed1221();
     o.selector = "foo";
   }
   buildCounterMetricRule--;
@@ -2063,7 +2063,7 @@
 checkMetricRule(api.MetricRule o) {
   buildCounterMetricRule++;
   if (buildCounterMetricRule < 3) {
-    checkUnnamed1234(o.metricCosts);
+    checkUnnamed1221(o.metricCosts);
     unittest.expect(o.selector, unittest.equals('foo'));
   }
   buildCounterMetricRule--;
@@ -2090,14 +2090,14 @@
   buildCounterMixin--;
 }
 
-buildUnnamed1235() {
+buildUnnamed1222() {
   var o = new core.List<api.LabelDescriptor>();
   o.add(buildLabelDescriptor());
   o.add(buildLabelDescriptor());
   return o;
 }
 
-checkUnnamed1235(core.List<api.LabelDescriptor> o) {
+checkUnnamed1222(core.List<api.LabelDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLabelDescriptor(o[0]);
   checkLabelDescriptor(o[1]);
@@ -2110,7 +2110,7 @@
   if (buildCounterMonitoredResourceDescriptor < 3) {
     o.description = "foo";
     o.displayName = "foo";
-    o.labels = buildUnnamed1235();
+    o.labels = buildUnnamed1222();
     o.name = "foo";
     o.type = "foo";
   }
@@ -2123,34 +2123,34 @@
   if (buildCounterMonitoredResourceDescriptor < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.displayName, unittest.equals('foo'));
-    checkUnnamed1235(o.labels);
+    checkUnnamed1222(o.labels);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterMonitoredResourceDescriptor--;
 }
 
-buildUnnamed1236() {
+buildUnnamed1223() {
   var o = new core.List<api.MonitoringDestination>();
   o.add(buildMonitoringDestination());
   o.add(buildMonitoringDestination());
   return o;
 }
 
-checkUnnamed1236(core.List<api.MonitoringDestination> o) {
+checkUnnamed1223(core.List<api.MonitoringDestination> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMonitoringDestination(o[0]);
   checkMonitoringDestination(o[1]);
 }
 
-buildUnnamed1237() {
+buildUnnamed1224() {
   var o = new core.List<api.MonitoringDestination>();
   o.add(buildMonitoringDestination());
   o.add(buildMonitoringDestination());
   return o;
 }
 
-checkUnnamed1237(core.List<api.MonitoringDestination> o) {
+checkUnnamed1224(core.List<api.MonitoringDestination> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMonitoringDestination(o[0]);
   checkMonitoringDestination(o[1]);
@@ -2161,8 +2161,8 @@
   var o = new api.Monitoring();
   buildCounterMonitoring++;
   if (buildCounterMonitoring < 3) {
-    o.consumerDestinations = buildUnnamed1236();
-    o.producerDestinations = buildUnnamed1237();
+    o.consumerDestinations = buildUnnamed1223();
+    o.producerDestinations = buildUnnamed1224();
   }
   buildCounterMonitoring--;
   return o;
@@ -2171,20 +2171,20 @@
 checkMonitoring(api.Monitoring o) {
   buildCounterMonitoring++;
   if (buildCounterMonitoring < 3) {
-    checkUnnamed1236(o.consumerDestinations);
-    checkUnnamed1237(o.producerDestinations);
+    checkUnnamed1223(o.consumerDestinations);
+    checkUnnamed1224(o.producerDestinations);
   }
   buildCounterMonitoring--;
 }
 
-buildUnnamed1238() {
+buildUnnamed1225() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1238(core.List<core.String> o) {
+checkUnnamed1225(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2195,7 +2195,7 @@
   var o = new api.MonitoringDestination();
   buildCounterMonitoringDestination++;
   if (buildCounterMonitoringDestination < 3) {
-    o.metrics = buildUnnamed1238();
+    o.metrics = buildUnnamed1225();
     o.monitoredResource = "foo";
   }
   buildCounterMonitoringDestination--;
@@ -2205,7 +2205,7 @@
 checkMonitoringDestination(api.MonitoringDestination o) {
   buildCounterMonitoringDestination++;
   if (buildCounterMonitoringDestination < 3) {
-    checkUnnamed1238(o.metrics);
+    checkUnnamed1225(o.metrics);
     unittest.expect(o.monitoredResource, unittest.equals('foo'));
   }
   buildCounterMonitoringDestination--;
@@ -2230,7 +2230,7 @@
   buildCounterOAuthRequirements--;
 }
 
-buildUnnamed1239() {
+buildUnnamed1226() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -2245,7 +2245,7 @@
   return o;
 }
 
-checkUnnamed1239(core.Map<core.String, core.Object> o) {
+checkUnnamed1226(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -2259,7 +2259,7 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1240() {
+buildUnnamed1227() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -2274,7 +2274,7 @@
   return o;
 }
 
-checkUnnamed1240(core.Map<core.String, core.Object> o) {
+checkUnnamed1227(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted7 = (o["x"]) as core.Map;
   unittest.expect(casted7, unittest.hasLength(3));
@@ -2295,9 +2295,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed1239();
+    o.metadata = buildUnnamed1226();
     o.name = "foo";
-    o.response = buildUnnamed1240();
+    o.response = buildUnnamed1227();
   }
   buildCounterOperation--;
   return o;
@@ -2308,34 +2308,34 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed1239(o.metadata);
+    checkUnnamed1226(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1240(o.response);
+    checkUnnamed1227(o.response);
   }
   buildCounterOperation--;
 }
 
-buildUnnamed1241() {
+buildUnnamed1228() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1241(core.List<core.String> o) {
+checkUnnamed1228(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1242() {
+buildUnnamed1229() {
   var o = new core.List<api.Step>();
   o.add(buildStep());
   o.add(buildStep());
   return o;
 }
 
-checkUnnamed1242(core.List<api.Step> o) {
+checkUnnamed1229(core.List<api.Step> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStep(o[0]);
   checkStep(o[1]);
@@ -2347,9 +2347,9 @@
   buildCounterOperationMetadata++;
   if (buildCounterOperationMetadata < 3) {
     o.progressPercentage = 42;
-    o.resourceNames = buildUnnamed1241();
+    o.resourceNames = buildUnnamed1228();
     o.startTime = "foo";
-    o.steps = buildUnnamed1242();
+    o.steps = buildUnnamed1229();
   }
   buildCounterOperationMetadata--;
   return o;
@@ -2359,14 +2359,14 @@
   buildCounterOperationMetadata++;
   if (buildCounterOperationMetadata < 3) {
     unittest.expect(o.progressPercentage, unittest.equals(42));
-    checkUnnamed1241(o.resourceNames);
+    checkUnnamed1228(o.resourceNames);
     unittest.expect(o.startTime, unittest.equals('foo'));
-    checkUnnamed1242(o.steps);
+    checkUnnamed1229(o.steps);
   }
   buildCounterOperationMetadata--;
 }
 
-buildUnnamed1243() {
+buildUnnamed1230() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -2381,7 +2381,7 @@
   return o;
 }
 
-checkUnnamed1243(core.Map<core.String, core.Object> o) {
+checkUnnamed1230(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted9 = (o["x"]) as core.Map;
   unittest.expect(casted9, unittest.hasLength(3));
@@ -2401,7 +2401,7 @@
   buildCounterOption++;
   if (buildCounterOption < 3) {
     o.name = "foo";
-    o.value = buildUnnamed1243();
+    o.value = buildUnnamed1230();
   }
   buildCounterOption--;
   return o;
@@ -2411,19 +2411,19 @@
   buildCounterOption++;
   if (buildCounterOption < 3) {
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1243(o.value);
+    checkUnnamed1230(o.value);
   }
   buildCounterOption--;
 }
 
-buildUnnamed1244() {
+buildUnnamed1231() {
   var o = new core.List<api.Page>();
   o.add(buildPage());
   o.add(buildPage());
   return o;
 }
 
-checkUnnamed1244(core.List<api.Page> o) {
+checkUnnamed1231(core.List<api.Page> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPage(o[0]);
   checkPage(o[1]);
@@ -2436,7 +2436,7 @@
   if (buildCounterPage < 3) {
     o.content = "foo";
     o.name = "foo";
-    o.subpages = buildUnnamed1244();
+    o.subpages = buildUnnamed1231();
   }
   buildCounterPage--;
   return o;
@@ -2447,32 +2447,32 @@
   if (buildCounterPage < 3) {
     unittest.expect(o.content, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1244(o.subpages);
+    checkUnnamed1231(o.subpages);
   }
   buildCounterPage--;
 }
 
-buildUnnamed1245() {
+buildUnnamed1232() {
   var o = new core.List<api.AuditConfig>();
   o.add(buildAuditConfig());
   o.add(buildAuditConfig());
   return o;
 }
 
-checkUnnamed1245(core.List<api.AuditConfig> o) {
+checkUnnamed1232(core.List<api.AuditConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditConfig(o[0]);
   checkAuditConfig(o[1]);
 }
 
-buildUnnamed1246() {
+buildUnnamed1233() {
   var o = new core.List<api.Binding>();
   o.add(buildBinding());
   o.add(buildBinding());
   return o;
 }
 
-checkUnnamed1246(core.List<api.Binding> o) {
+checkUnnamed1233(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -2483,8 +2483,8 @@
   var o = new api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.auditConfigs = buildUnnamed1245();
-    o.bindings = buildUnnamed1246();
+    o.auditConfigs = buildUnnamed1232();
+    o.bindings = buildUnnamed1233();
     o.etag = "foo";
     o.iamOwned = true;
     o.version = 42;
@@ -2496,8 +2496,8 @@
 checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed1245(o.auditConfigs);
-    checkUnnamed1246(o.bindings);
+    checkUnnamed1232(o.auditConfigs);
+    checkUnnamed1233(o.bindings);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.iamOwned, unittest.isTrue);
     unittest.expect(o.version, unittest.equals(42));
@@ -2505,27 +2505,27 @@
   buildCounterPolicy--;
 }
 
-buildUnnamed1247() {
+buildUnnamed1234() {
   var o = new core.List<api.QuotaLimit>();
   o.add(buildQuotaLimit());
   o.add(buildQuotaLimit());
   return o;
 }
 
-checkUnnamed1247(core.List<api.QuotaLimit> o) {
+checkUnnamed1234(core.List<api.QuotaLimit> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQuotaLimit(o[0]);
   checkQuotaLimit(o[1]);
 }
 
-buildUnnamed1248() {
+buildUnnamed1235() {
   var o = new core.List<api.MetricRule>();
   o.add(buildMetricRule());
   o.add(buildMetricRule());
   return o;
 }
 
-checkUnnamed1248(core.List<api.MetricRule> o) {
+checkUnnamed1235(core.List<api.MetricRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricRule(o[0]);
   checkMetricRule(o[1]);
@@ -2536,8 +2536,8 @@
   var o = new api.Quota();
   buildCounterQuota++;
   if (buildCounterQuota < 3) {
-    o.limits = buildUnnamed1247();
-    o.metricRules = buildUnnamed1248();
+    o.limits = buildUnnamed1234();
+    o.metricRules = buildUnnamed1235();
   }
   buildCounterQuota--;
   return o;
@@ -2546,20 +2546,20 @@
 checkQuota(api.Quota o) {
   buildCounterQuota++;
   if (buildCounterQuota < 3) {
-    checkUnnamed1247(o.limits);
-    checkUnnamed1248(o.metricRules);
+    checkUnnamed1234(o.limits);
+    checkUnnamed1235(o.metricRules);
   }
   buildCounterQuota--;
 }
 
-buildUnnamed1249() {
+buildUnnamed1236() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1249(core.Map<core.String, core.String> o) {
+checkUnnamed1236(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -2579,7 +2579,7 @@
     o.metric = "foo";
     o.name = "foo";
     o.unit = "foo";
-    o.values = buildUnnamed1249();
+    o.values = buildUnnamed1236();
   }
   buildCounterQuotaLimit--;
   return o;
@@ -2597,7 +2597,7 @@
     unittest.expect(o.metric, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.unit, unittest.equals('foo'));
-    checkUnnamed1249(o.values);
+    checkUnnamed1236(o.values);
   }
   buildCounterQuotaLimit--;
 }
@@ -2633,105 +2633,105 @@
   buildCounterRollout--;
 }
 
-buildUnnamed1250() {
+buildUnnamed1237() {
   var o = new core.List<api.Api>();
   o.add(buildApi());
   o.add(buildApi());
   return o;
 }
 
-checkUnnamed1250(core.List<api.Api> o) {
+checkUnnamed1237(core.List<api.Api> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApi(o[0]);
   checkApi(o[1]);
 }
 
-buildUnnamed1251() {
+buildUnnamed1238() {
   var o = new core.List<api.Endpoint>();
   o.add(buildEndpoint());
   o.add(buildEndpoint());
   return o;
 }
 
-checkUnnamed1251(core.List<api.Endpoint> o) {
+checkUnnamed1238(core.List<api.Endpoint> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEndpoint(o[0]);
   checkEndpoint(o[1]);
 }
 
-buildUnnamed1252() {
+buildUnnamed1239() {
   var o = new core.List<api.Enum>();
   o.add(buildEnum());
   o.add(buildEnum());
   return o;
 }
 
-checkUnnamed1252(core.List<api.Enum> o) {
+checkUnnamed1239(core.List<api.Enum> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEnum(o[0]);
   checkEnum(o[1]);
 }
 
-buildUnnamed1253() {
+buildUnnamed1240() {
   var o = new core.List<api.LogDescriptor>();
   o.add(buildLogDescriptor());
   o.add(buildLogDescriptor());
   return o;
 }
 
-checkUnnamed1253(core.List<api.LogDescriptor> o) {
+checkUnnamed1240(core.List<api.LogDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLogDescriptor(o[0]);
   checkLogDescriptor(o[1]);
 }
 
-buildUnnamed1254() {
+buildUnnamed1241() {
   var o = new core.List<api.MetricDescriptor>();
   o.add(buildMetricDescriptor());
   o.add(buildMetricDescriptor());
   return o;
 }
 
-checkUnnamed1254(core.List<api.MetricDescriptor> o) {
+checkUnnamed1241(core.List<api.MetricDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricDescriptor(o[0]);
   checkMetricDescriptor(o[1]);
 }
 
-buildUnnamed1255() {
+buildUnnamed1242() {
   var o = new core.List<api.MonitoredResourceDescriptor>();
   o.add(buildMonitoredResourceDescriptor());
   o.add(buildMonitoredResourceDescriptor());
   return o;
 }
 
-checkUnnamed1255(core.List<api.MonitoredResourceDescriptor> o) {
+checkUnnamed1242(core.List<api.MonitoredResourceDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMonitoredResourceDescriptor(o[0]);
   checkMonitoredResourceDescriptor(o[1]);
 }
 
-buildUnnamed1256() {
+buildUnnamed1243() {
   var o = new core.List<api.Type>();
   o.add(buildType());
   o.add(buildType());
   return o;
 }
 
-checkUnnamed1256(core.List<api.Type> o) {
+checkUnnamed1243(core.List<api.Type> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkType(o[0]);
   checkType(o[1]);
 }
 
-buildUnnamed1257() {
+buildUnnamed1244() {
   var o = new core.List<api.Type>();
   o.add(buildType());
   o.add(buildType());
   return o;
 }
 
-checkUnnamed1257(core.List<api.Type> o) {
+checkUnnamed1244(core.List<api.Type> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkType(o[0]);
   checkType(o[1]);
@@ -2742,7 +2742,7 @@
   var o = new api.Service();
   buildCounterService++;
   if (buildCounterService < 3) {
-    o.apis = buildUnnamed1250();
+    o.apis = buildUnnamed1237();
     o.authentication = buildAuthentication();
     o.backend = buildBackend();
     o.billing = buildBilling();
@@ -2751,24 +2751,24 @@
     o.control = buildControl();
     o.customError = buildCustomError();
     o.documentation = buildDocumentation();
-    o.endpoints = buildUnnamed1251();
-    o.enums = buildUnnamed1252();
+    o.endpoints = buildUnnamed1238();
+    o.enums = buildUnnamed1239();
     o.experimental = buildExperimental();
     o.http = buildHttp();
     o.id = "foo";
     o.logging = buildLogging();
-    o.logs = buildUnnamed1253();
-    o.metrics = buildUnnamed1254();
-    o.monitoredResources = buildUnnamed1255();
+    o.logs = buildUnnamed1240();
+    o.metrics = buildUnnamed1241();
+    o.monitoredResources = buildUnnamed1242();
     o.monitoring = buildMonitoring();
     o.name = "foo";
     o.producerProjectId = "foo";
     o.quota = buildQuota();
     o.sourceInfo = buildSourceInfo();
     o.systemParameters = buildSystemParameters();
-    o.systemTypes = buildUnnamed1256();
+    o.systemTypes = buildUnnamed1243();
     o.title = "foo";
-    o.types = buildUnnamed1257();
+    o.types = buildUnnamed1244();
     o.usage = buildUsage();
     o.visibility = buildVisibility();
   }
@@ -2779,7 +2779,7 @@
 checkService(api.Service o) {
   buildCounterService++;
   if (buildCounterService < 3) {
-    checkUnnamed1250(o.apis);
+    checkUnnamed1237(o.apis);
     checkAuthentication(o.authentication);
     checkBackend(o.backend);
     checkBilling(o.billing);
@@ -2788,24 +2788,24 @@
     checkControl(o.control);
     checkCustomError(o.customError);
     checkDocumentation(o.documentation);
-    checkUnnamed1251(o.endpoints);
-    checkUnnamed1252(o.enums);
+    checkUnnamed1238(o.endpoints);
+    checkUnnamed1239(o.enums);
     checkExperimental(o.experimental);
     checkHttp(o.http);
     unittest.expect(o.id, unittest.equals('foo'));
     checkLogging(o.logging);
-    checkUnnamed1253(o.logs);
-    checkUnnamed1254(o.metrics);
-    checkUnnamed1255(o.monitoredResources);
+    checkUnnamed1240(o.logs);
+    checkUnnamed1241(o.metrics);
+    checkUnnamed1242(o.monitoredResources);
     checkMonitoring(o.monitoring);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.producerProjectId, unittest.equals('foo'));
     checkQuota(o.quota);
     checkSourceInfo(o.sourceInfo);
     checkSystemParameters(o.systemParameters);
-    checkUnnamed1256(o.systemTypes);
+    checkUnnamed1243(o.systemTypes);
     unittest.expect(o.title, unittest.equals('foo'));
-    checkUnnamed1257(o.types);
+    checkUnnamed1244(o.types);
     checkUsage(o.usage);
     checkVisibility(o.visibility);
   }
@@ -2852,7 +2852,7 @@
   buildCounterSourceContext--;
 }
 
-buildUnnamed1258() {
+buildUnnamed1245() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -2867,7 +2867,7 @@
   return o;
 }
 
-checkUnnamed1258(core.Map<core.String, core.Object> o) {
+checkUnnamed1245(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted11 = (o["x"]) as core.Map;
   unittest.expect(casted11, unittest.hasLength(3));
@@ -2881,17 +2881,17 @@
   unittest.expect(casted12["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1259() {
+buildUnnamed1246() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed1258());
-  o.add(buildUnnamed1258());
+  o.add(buildUnnamed1245());
+  o.add(buildUnnamed1245());
   return o;
 }
 
-checkUnnamed1259(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed1246(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1258(o[0]);
-  checkUnnamed1258(o[1]);
+  checkUnnamed1245(o[0]);
+  checkUnnamed1245(o[1]);
 }
 
 core.int buildCounterSourceInfo = 0;
@@ -2899,7 +2899,7 @@
   var o = new api.SourceInfo();
   buildCounterSourceInfo++;
   if (buildCounterSourceInfo < 3) {
-    o.sourceFiles = buildUnnamed1259();
+    o.sourceFiles = buildUnnamed1246();
   }
   buildCounterSourceInfo--;
   return o;
@@ -2908,12 +2908,12 @@
 checkSourceInfo(api.SourceInfo o) {
   buildCounterSourceInfo++;
   if (buildCounterSourceInfo < 3) {
-    checkUnnamed1259(o.sourceFiles);
+    checkUnnamed1246(o.sourceFiles);
   }
   buildCounterSourceInfo--;
 }
 
-buildUnnamed1260() {
+buildUnnamed1247() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -2928,7 +2928,7 @@
   return o;
 }
 
-checkUnnamed1260(core.Map<core.String, core.Object> o) {
+checkUnnamed1247(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted13 = (o["x"]) as core.Map;
   unittest.expect(casted13, unittest.hasLength(3));
@@ -2942,17 +2942,17 @@
   unittest.expect(casted14["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1261() {
+buildUnnamed1248() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed1260());
-  o.add(buildUnnamed1260());
+  o.add(buildUnnamed1247());
+  o.add(buildUnnamed1247());
   return o;
 }
 
-checkUnnamed1261(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed1248(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1260(o[0]);
-  checkUnnamed1260(o[1]);
+  checkUnnamed1247(o[0]);
+  checkUnnamed1247(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -2961,7 +2961,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed1261();
+    o.details = buildUnnamed1248();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -2972,7 +2972,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed1261(o.details);
+    checkUnnamed1248(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -3062,14 +3062,14 @@
   buildCounterSystemParameter--;
 }
 
-buildUnnamed1262() {
+buildUnnamed1249() {
   var o = new core.List<api.SystemParameter>();
   o.add(buildSystemParameter());
   o.add(buildSystemParameter());
   return o;
 }
 
-checkUnnamed1262(core.List<api.SystemParameter> o) {
+checkUnnamed1249(core.List<api.SystemParameter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSystemParameter(o[0]);
   checkSystemParameter(o[1]);
@@ -3080,7 +3080,7 @@
   var o = new api.SystemParameterRule();
   buildCounterSystemParameterRule++;
   if (buildCounterSystemParameterRule < 3) {
-    o.parameters = buildUnnamed1262();
+    o.parameters = buildUnnamed1249();
     o.selector = "foo";
   }
   buildCounterSystemParameterRule--;
@@ -3090,20 +3090,20 @@
 checkSystemParameterRule(api.SystemParameterRule o) {
   buildCounterSystemParameterRule++;
   if (buildCounterSystemParameterRule < 3) {
-    checkUnnamed1262(o.parameters);
+    checkUnnamed1249(o.parameters);
     unittest.expect(o.selector, unittest.equals('foo'));
   }
   buildCounterSystemParameterRule--;
 }
 
-buildUnnamed1263() {
+buildUnnamed1250() {
   var o = new core.List<api.SystemParameterRule>();
   o.add(buildSystemParameterRule());
   o.add(buildSystemParameterRule());
   return o;
 }
 
-checkUnnamed1263(core.List<api.SystemParameterRule> o) {
+checkUnnamed1250(core.List<api.SystemParameterRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSystemParameterRule(o[0]);
   checkSystemParameterRule(o[1]);
@@ -3114,7 +3114,7 @@
   var o = new api.SystemParameters();
   buildCounterSystemParameters++;
   if (buildCounterSystemParameters < 3) {
-    o.rules = buildUnnamed1263();
+    o.rules = buildUnnamed1250();
   }
   buildCounterSystemParameters--;
   return o;
@@ -3123,19 +3123,19 @@
 checkSystemParameters(api.SystemParameters o) {
   buildCounterSystemParameters++;
   if (buildCounterSystemParameters < 3) {
-    checkUnnamed1263(o.rules);
+    checkUnnamed1250(o.rules);
   }
   buildCounterSystemParameters--;
 }
 
-buildUnnamed1264() {
+buildUnnamed1251() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1264(core.List<core.String> o) {
+checkUnnamed1251(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -3146,7 +3146,7 @@
   var o = new api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed1264();
+    o.permissions = buildUnnamed1251();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -3155,19 +3155,19 @@
 checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed1264(o.permissions);
+    checkUnnamed1251(o.permissions);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-buildUnnamed1265() {
+buildUnnamed1252() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1265(core.List<core.String> o) {
+checkUnnamed1252(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -3178,7 +3178,7 @@
   var o = new api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed1265();
+    o.permissions = buildUnnamed1252();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -3187,19 +3187,19 @@
 checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed1265(o.permissions);
+    checkUnnamed1252(o.permissions);
   }
   buildCounterTestIamPermissionsResponse--;
 }
 
-buildUnnamed1266() {
+buildUnnamed1253() {
   var o = new core.Map<core.String, core.double>();
   o["x"] = 42.0;
   o["y"] = 42.0;
   return o;
 }
 
-checkUnnamed1266(core.Map<core.String, core.double> o) {
+checkUnnamed1253(core.Map<core.String, core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals(42.0));
   unittest.expect(o["y"], unittest.equals(42.0));
@@ -3210,7 +3210,7 @@
   var o = new api.TrafficPercentStrategy();
   buildCounterTrafficPercentStrategy++;
   if (buildCounterTrafficPercentStrategy < 3) {
-    o.percentages = buildUnnamed1266();
+    o.percentages = buildUnnamed1253();
   }
   buildCounterTrafficPercentStrategy--;
   return o;
@@ -3219,45 +3219,45 @@
 checkTrafficPercentStrategy(api.TrafficPercentStrategy o) {
   buildCounterTrafficPercentStrategy++;
   if (buildCounterTrafficPercentStrategy < 3) {
-    checkUnnamed1266(o.percentages);
+    checkUnnamed1253(o.percentages);
   }
   buildCounterTrafficPercentStrategy--;
 }
 
-buildUnnamed1267() {
+buildUnnamed1254() {
   var o = new core.List<api.Field>();
   o.add(buildField());
   o.add(buildField());
   return o;
 }
 
-checkUnnamed1267(core.List<api.Field> o) {
+checkUnnamed1254(core.List<api.Field> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkField(o[0]);
   checkField(o[1]);
 }
 
-buildUnnamed1268() {
+buildUnnamed1255() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1268(core.List<core.String> o) {
+checkUnnamed1255(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1269() {
+buildUnnamed1256() {
   var o = new core.List<api.Option>();
   o.add(buildOption());
   o.add(buildOption());
   return o;
 }
 
-checkUnnamed1269(core.List<api.Option> o) {
+checkUnnamed1256(core.List<api.Option> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOption(o[0]);
   checkOption(o[1]);
@@ -3268,10 +3268,10 @@
   var o = new api.Type();
   buildCounterType++;
   if (buildCounterType < 3) {
-    o.fields = buildUnnamed1267();
+    o.fields = buildUnnamed1254();
     o.name = "foo";
-    o.oneofs = buildUnnamed1268();
-    o.options = buildUnnamed1269();
+    o.oneofs = buildUnnamed1255();
+    o.options = buildUnnamed1256();
     o.sourceContext = buildSourceContext();
     o.syntax = "foo";
   }
@@ -3282,10 +3282,10 @@
 checkType(api.Type o) {
   buildCounterType++;
   if (buildCounterType < 3) {
-    checkUnnamed1267(o.fields);
+    checkUnnamed1254(o.fields);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1268(o.oneofs);
-    checkUnnamed1269(o.options);
+    checkUnnamed1255(o.oneofs);
+    checkUnnamed1256(o.options);
     checkSourceContext(o.sourceContext);
     unittest.expect(o.syntax, unittest.equals('foo'));
   }
@@ -3311,27 +3311,27 @@
   buildCounterUndeleteServiceResponse--;
 }
 
-buildUnnamed1270() {
+buildUnnamed1257() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1270(core.List<core.String> o) {
+checkUnnamed1257(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1271() {
+buildUnnamed1258() {
   var o = new core.List<api.UsageRule>();
   o.add(buildUsageRule());
   o.add(buildUsageRule());
   return o;
 }
 
-checkUnnamed1271(core.List<api.UsageRule> o) {
+checkUnnamed1258(core.List<api.UsageRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUsageRule(o[0]);
   checkUsageRule(o[1]);
@@ -3343,8 +3343,8 @@
   buildCounterUsage++;
   if (buildCounterUsage < 3) {
     o.producerNotificationChannel = "foo";
-    o.requirements = buildUnnamed1270();
-    o.rules = buildUnnamed1271();
+    o.requirements = buildUnnamed1257();
+    o.rules = buildUnnamed1258();
   }
   buildCounterUsage--;
   return o;
@@ -3354,8 +3354,8 @@
   buildCounterUsage++;
   if (buildCounterUsage < 3) {
     unittest.expect(o.producerNotificationChannel, unittest.equals('foo'));
-    checkUnnamed1270(o.requirements);
-    checkUnnamed1271(o.rules);
+    checkUnnamed1257(o.requirements);
+    checkUnnamed1258(o.rules);
   }
   buildCounterUsage--;
 }
@@ -3383,14 +3383,14 @@
   buildCounterUsageRule--;
 }
 
-buildUnnamed1272() {
+buildUnnamed1259() {
   var o = new core.List<api.VisibilityRule>();
   o.add(buildVisibilityRule());
   o.add(buildVisibilityRule());
   return o;
 }
 
-checkUnnamed1272(core.List<api.VisibilityRule> o) {
+checkUnnamed1259(core.List<api.VisibilityRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVisibilityRule(o[0]);
   checkVisibilityRule(o[1]);
@@ -3401,7 +3401,7 @@
   var o = new api.Visibility();
   buildCounterVisibility++;
   if (buildCounterVisibility < 3) {
-    o.rules = buildUnnamed1272();
+    o.rules = buildUnnamed1259();
   }
   buildCounterVisibility--;
   return o;
@@ -3410,7 +3410,7 @@
 checkVisibility(api.Visibility o) {
   buildCounterVisibility++;
   if (buildCounterVisibility < 3) {
-    checkUnnamed1272(o.rules);
+    checkUnnamed1259(o.rules);
   }
   buildCounterVisibility--;
 }
@@ -4171,6 +4171,7 @@
       api.OperationsResourceApi res =
           new api.ServicemanagementApi(mock).operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4202,6 +4203,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4209,7 +4211,9 @@
         var resp = convert.JSON.encode(buildOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Operation response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
     });
@@ -4222,6 +4226,7 @@
       var arg_pageToken = "foo";
       var arg_name = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4258,6 +4263,7 @@
         unittest.expect(queryMap["name"].first, unittest.equals(arg_name));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4270,7 +4276,8 @@
               filter: arg_filter,
               pageToken: arg_pageToken,
               name: arg_name,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
@@ -4282,6 +4289,7 @@
       var mock = new HttpServerMock();
       api.ServicesResourceApi res = new api.ServicemanagementApi(mock).services;
       var arg_request = buildManagedService();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ManagedService.fromJson(json);
         checkManagedService(obj);
@@ -4315,6 +4323,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4323,7 +4332,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request)
+          .create(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4333,6 +4342,7 @@
       var mock = new HttpServerMock();
       api.ServicesResourceApi res = new api.ServicemanagementApi(mock).services;
       var arg_serviceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4366,6 +4376,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4374,7 +4385,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_serviceName)
+          .delete(arg_serviceName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4385,6 +4396,7 @@
       api.ServicesResourceApi res = new api.ServicemanagementApi(mock).services;
       var arg_request = buildDisableServiceRequest();
       var arg_serviceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DisableServiceRequest.fromJson(json);
         checkDisableServiceRequest(obj);
@@ -4427,6 +4439,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4435,7 +4448,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .disable(arg_request, arg_serviceName)
+          .disable(arg_request, arg_serviceName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4446,6 +4459,7 @@
       api.ServicesResourceApi res = new api.ServicemanagementApi(mock).services;
       var arg_request = buildEnableServiceRequest();
       var arg_serviceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EnableServiceRequest.fromJson(json);
         checkEnableServiceRequest(obj);
@@ -4488,6 +4502,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4496,7 +4511,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .enable(arg_request, arg_serviceName)
+          .enable(arg_request, arg_serviceName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4506,6 +4521,7 @@
       var mock = new HttpServerMock();
       api.ServicesResourceApi res = new api.ServicemanagementApi(mock).services;
       var arg_request = buildGenerateConfigReportRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GenerateConfigReportRequest.fromJson(json);
         checkGenerateConfigReportRequest(obj);
@@ -4539,6 +4555,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4546,7 +4563,7 @@
         var resp = convert.JSON.encode(buildGenerateConfigReportResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.generateConfigReport(arg_request).then(
+      res.generateConfigReport(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.GenerateConfigReportResponse response) {
         checkGenerateConfigReportResponse(response);
       })));
@@ -4556,6 +4573,7 @@
       var mock = new HttpServerMock();
       api.ServicesResourceApi res = new api.ServicemanagementApi(mock).services;
       var arg_serviceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4589,6 +4607,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4597,7 +4616,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_serviceName)
+          .get(arg_serviceName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ManagedService response) {
         checkManagedService(response);
       })));
@@ -4607,8 +4626,9 @@
       var mock = new HttpServerMock();
       api.ServicesResourceApi res = new api.ServicemanagementApi(mock).services;
       var arg_serviceName = "foo";
-      var arg_view = "foo";
       var arg_configId = "foo";
+      var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4648,9 +4668,10 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
         unittest.expect(
             queryMap["configId"].first, unittest.equals(arg_configId));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4659,7 +4680,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getConfig(arg_serviceName, view: arg_view, configId: arg_configId)
+          .getConfig(arg_serviceName,
+              configId: arg_configId, view: arg_view, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Service response) {
         checkService(response);
       })));
@@ -4670,6 +4692,7 @@
       api.ServicesResourceApi res = new api.ServicemanagementApi(mock).services;
       var arg_request = buildGetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetIamPolicyRequest.fromJson(json);
         checkGetIamPolicyRequest(obj);
@@ -4704,6 +4727,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4712,7 +4736,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_request, arg_resource)
+          .getIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -4721,10 +4745,11 @@
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
       api.ServicesResourceApi res = new api.ServicemanagementApi(mock).services;
+      var arg_pageSize = 42;
       var arg_producerProjectId = "foo";
       var arg_consumerId = "foo";
       var arg_pageToken = "foo";
-      var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4755,14 +4780,15 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
         unittest.expect(queryMap["producerProjectId"].first,
             unittest.equals(arg_producerProjectId));
         unittest.expect(
             queryMap["consumerId"].first, unittest.equals(arg_consumerId));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
-        unittest.expect(core.int.parse(queryMap["pageSize"].first),
-            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4772,10 +4798,11 @@
       }), true);
       res
           .list(
+              pageSize: arg_pageSize,
               producerProjectId: arg_producerProjectId,
               consumerId: arg_consumerId,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListServicesResponse response) {
         checkListServicesResponse(response);
       })));
@@ -4786,6 +4813,7 @@
       api.ServicesResourceApi res = new api.ServicemanagementApi(mock).services;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -4820,6 +4848,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4828,7 +4857,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -4839,6 +4868,7 @@
       api.ServicesResourceApi res = new api.ServicemanagementApi(mock).services;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -4873,6 +4903,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4880,8 +4911,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -4890,6 +4923,7 @@
       var mock = new HttpServerMock();
       api.ServicesResourceApi res = new api.ServicemanagementApi(mock).services;
       var arg_serviceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4929,6 +4963,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4937,7 +4972,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .undelete(arg_serviceName)
+          .undelete(arg_serviceName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4951,6 +4986,7 @@
           new api.ServicemanagementApi(mock).services.configs;
       var arg_request = buildService();
       var arg_serviceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Service.fromJson(json);
         checkService(obj);
@@ -4993,6 +5029,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5001,7 +5038,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_serviceName)
+          .create(arg_request, arg_serviceName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Service response) {
         checkService(response);
       })));
@@ -5014,6 +5051,7 @@
       var arg_serviceName = "foo";
       var arg_configId = "foo";
       var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5057,6 +5095,7 @@
           }
         }
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5065,7 +5104,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_serviceName, arg_configId, view: arg_view)
+          .get(arg_serviceName, arg_configId,
+              view: arg_view, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Service response) {
         checkService(response);
       })));
@@ -5076,8 +5116,9 @@
       api.ServicesConfigsResourceApi res =
           new api.ServicemanagementApi(mock).services.configs;
       var arg_serviceName = "foo";
-      var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5117,10 +5158,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5130,7 +5172,9 @@
       }), true);
       res
           .list(arg_serviceName,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.ListServiceConfigsResponse response) {
         checkListServiceConfigsResponse(response);
@@ -5143,6 +5187,7 @@
           new api.ServicemanagementApi(mock).services.configs;
       var arg_request = buildSubmitConfigSourceRequest();
       var arg_serviceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SubmitConfigSourceRequest.fromJson(json);
         checkSubmitConfigSourceRequest(obj);
@@ -5185,6 +5230,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5193,7 +5239,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .submit(arg_request, arg_serviceName)
+          .submit(arg_request, arg_serviceName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -5207,6 +5253,7 @@
           new api.ServicemanagementApi(mock).services.consumers;
       var arg_request = buildGetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetIamPolicyRequest.fromJson(json);
         checkGetIamPolicyRequest(obj);
@@ -5241,6 +5288,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5249,7 +5297,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_request, arg_resource)
+          .getIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -5261,6 +5309,7 @@
           new api.ServicemanagementApi(mock).services.consumers;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -5295,6 +5344,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5303,7 +5353,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -5315,6 +5365,7 @@
           new api.ServicemanagementApi(mock).services.consumers;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -5349,6 +5400,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5356,8 +5408,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -5370,6 +5424,7 @@
           new api.ServicemanagementApi(mock).services.rollouts;
       var arg_request = buildRollout();
       var arg_serviceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Rollout.fromJson(json);
         checkRollout(obj);
@@ -5412,6 +5467,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5420,7 +5476,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_serviceName)
+          .create(arg_request, arg_serviceName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -5432,6 +5488,7 @@
           new api.ServicemanagementApi(mock).services.rollouts;
       var arg_serviceName = "foo";
       var arg_rolloutId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5474,6 +5531,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5482,7 +5540,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_serviceName, arg_rolloutId)
+          .get(arg_serviceName, arg_rolloutId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Rollout response) {
         checkRollout(response);
       })));
@@ -5493,9 +5551,10 @@
       api.ServicesRolloutsResourceApi res =
           new api.ServicemanagementApi(mock).services.rollouts;
       var arg_serviceName = "foo";
+      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
-      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5535,11 +5594,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5549,9 +5609,10 @@
       }), true);
       res
           .list(arg_serviceName,
+              filter: arg_filter,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              filter: arg_filter)
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListServiceRolloutsResponse response) {
         checkListServiceRolloutsResponse(response);
diff --git a/generated/googleapis/test/serviceuser/v1_test.dart b/generated/googleapis/test/serviceuser/v1_test.dart
index 1bbacd3..3704cb8 100644
--- a/generated/googleapis/test/serviceuser/v1_test.dart
+++ b/generated/googleapis/test/serviceuser/v1_test.dart
@@ -50,40 +50,40 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed1828() {
+buildUnnamed1826() {
   var o = new core.List<api.Method>();
   o.add(buildMethod());
   o.add(buildMethod());
   return o;
 }
 
-checkUnnamed1828(core.List<api.Method> o) {
+checkUnnamed1826(core.List<api.Method> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMethod(o[0]);
   checkMethod(o[1]);
 }
 
-buildUnnamed1829() {
+buildUnnamed1827() {
   var o = new core.List<api.Mixin>();
   o.add(buildMixin());
   o.add(buildMixin());
   return o;
 }
 
-checkUnnamed1829(core.List<api.Mixin> o) {
+checkUnnamed1827(core.List<api.Mixin> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMixin(o[0]);
   checkMixin(o[1]);
 }
 
-buildUnnamed1830() {
+buildUnnamed1828() {
   var o = new core.List<api.Option>();
   o.add(buildOption());
   o.add(buildOption());
   return o;
 }
 
-checkUnnamed1830(core.List<api.Option> o) {
+checkUnnamed1828(core.List<api.Option> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOption(o[0]);
   checkOption(o[1]);
@@ -94,10 +94,10 @@
   var o = new api.Api();
   buildCounterApi++;
   if (buildCounterApi < 3) {
-    o.methods = buildUnnamed1828();
-    o.mixins = buildUnnamed1829();
+    o.methods = buildUnnamed1826();
+    o.mixins = buildUnnamed1827();
     o.name = "foo";
-    o.options = buildUnnamed1830();
+    o.options = buildUnnamed1828();
     o.sourceContext = buildSourceContext();
     o.syntax = "foo";
     o.version = "foo";
@@ -109,10 +109,10 @@
 checkApi(api.Api o) {
   buildCounterApi++;
   if (buildCounterApi < 3) {
-    checkUnnamed1828(o.methods);
-    checkUnnamed1829(o.mixins);
+    checkUnnamed1826(o.methods);
+    checkUnnamed1827(o.mixins);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1830(o.options);
+    checkUnnamed1828(o.options);
     checkSourceContext(o.sourceContext);
     unittest.expect(o.syntax, unittest.equals('foo'));
     unittest.expect(o.version, unittest.equals('foo'));
@@ -168,27 +168,27 @@
   buildCounterAuthRequirement--;
 }
 
-buildUnnamed1831() {
+buildUnnamed1829() {
   var o = new core.List<api.AuthProvider>();
   o.add(buildAuthProvider());
   o.add(buildAuthProvider());
   return o;
 }
 
-checkUnnamed1831(core.List<api.AuthProvider> o) {
+checkUnnamed1829(core.List<api.AuthProvider> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuthProvider(o[0]);
   checkAuthProvider(o[1]);
 }
 
-buildUnnamed1832() {
+buildUnnamed1830() {
   var o = new core.List<api.AuthenticationRule>();
   o.add(buildAuthenticationRule());
   o.add(buildAuthenticationRule());
   return o;
 }
 
-checkUnnamed1832(core.List<api.AuthenticationRule> o) {
+checkUnnamed1830(core.List<api.AuthenticationRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuthenticationRule(o[0]);
   checkAuthenticationRule(o[1]);
@@ -199,8 +199,8 @@
   var o = new api.Authentication();
   buildCounterAuthentication++;
   if (buildCounterAuthentication < 3) {
-    o.providers = buildUnnamed1831();
-    o.rules = buildUnnamed1832();
+    o.providers = buildUnnamed1829();
+    o.rules = buildUnnamed1830();
   }
   buildCounterAuthentication--;
   return o;
@@ -209,20 +209,20 @@
 checkAuthentication(api.Authentication o) {
   buildCounterAuthentication++;
   if (buildCounterAuthentication < 3) {
-    checkUnnamed1831(o.providers);
-    checkUnnamed1832(o.rules);
+    checkUnnamed1829(o.providers);
+    checkUnnamed1830(o.rules);
   }
   buildCounterAuthentication--;
 }
 
-buildUnnamed1833() {
+buildUnnamed1831() {
   var o = new core.List<api.AuthRequirement>();
   o.add(buildAuthRequirement());
   o.add(buildAuthRequirement());
   return o;
 }
 
-checkUnnamed1833(core.List<api.AuthRequirement> o) {
+checkUnnamed1831(core.List<api.AuthRequirement> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuthRequirement(o[0]);
   checkAuthRequirement(o[1]);
@@ -236,7 +236,7 @@
     o.allowWithoutCredential = true;
     o.customAuth = buildCustomAuthRequirements();
     o.oauth = buildOAuthRequirements();
-    o.requirements = buildUnnamed1833();
+    o.requirements = buildUnnamed1831();
     o.selector = "foo";
   }
   buildCounterAuthenticationRule--;
@@ -249,7 +249,7 @@
     unittest.expect(o.allowWithoutCredential, unittest.isTrue);
     checkCustomAuthRequirements(o.customAuth);
     checkOAuthRequirements(o.oauth);
-    checkUnnamed1833(o.requirements);
+    checkUnnamed1831(o.requirements);
     unittest.expect(o.selector, unittest.equals('foo'));
   }
   buildCounterAuthenticationRule--;
@@ -274,14 +274,14 @@
   buildCounterAuthorizationConfig--;
 }
 
-buildUnnamed1834() {
+buildUnnamed1832() {
   var o = new core.List<api.BackendRule>();
   o.add(buildBackendRule());
   o.add(buildBackendRule());
   return o;
 }
 
-checkUnnamed1834(core.List<api.BackendRule> o) {
+checkUnnamed1832(core.List<api.BackendRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBackendRule(o[0]);
   checkBackendRule(o[1]);
@@ -292,7 +292,7 @@
   var o = new api.Backend();
   buildCounterBackend++;
   if (buildCounterBackend < 3) {
-    o.rules = buildUnnamed1834();
+    o.rules = buildUnnamed1832();
   }
   buildCounterBackend--;
   return o;
@@ -301,7 +301,7 @@
 checkBackend(api.Backend o) {
   buildCounterBackend++;
   if (buildCounterBackend < 3) {
-    checkUnnamed1834(o.rules);
+    checkUnnamed1832(o.rules);
   }
   buildCounterBackend--;
 }
@@ -331,14 +331,14 @@
   buildCounterBackendRule--;
 }
 
-buildUnnamed1835() {
+buildUnnamed1833() {
   var o = new core.List<api.BillingDestination>();
   o.add(buildBillingDestination());
   o.add(buildBillingDestination());
   return o;
 }
 
-checkUnnamed1835(core.List<api.BillingDestination> o) {
+checkUnnamed1833(core.List<api.BillingDestination> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBillingDestination(o[0]);
   checkBillingDestination(o[1]);
@@ -349,7 +349,7 @@
   var o = new api.Billing();
   buildCounterBilling++;
   if (buildCounterBilling < 3) {
-    o.consumerDestinations = buildUnnamed1835();
+    o.consumerDestinations = buildUnnamed1833();
   }
   buildCounterBilling--;
   return o;
@@ -358,11 +358,77 @@
 checkBilling(api.Billing o) {
   buildCounterBilling++;
   if (buildCounterBilling < 3) {
-    checkUnnamed1835(o.consumerDestinations);
+    checkUnnamed1833(o.consumerDestinations);
   }
   buildCounterBilling--;
 }
 
+buildUnnamed1834() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1834(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBillingDestination = 0;
+buildBillingDestination() {
+  var o = new api.BillingDestination();
+  buildCounterBillingDestination++;
+  if (buildCounterBillingDestination < 3) {
+    o.metrics = buildUnnamed1834();
+    o.monitoredResource = "foo";
+  }
+  buildCounterBillingDestination--;
+  return o;
+}
+
+checkBillingDestination(api.BillingDestination o) {
+  buildCounterBillingDestination++;
+  if (buildCounterBillingDestination < 3) {
+    checkUnnamed1834(o.metrics);
+    unittest.expect(o.monitoredResource, unittest.equals('foo'));
+  }
+  buildCounterBillingDestination--;
+}
+
+buildUnnamed1835() {
+  var o = new core.List<api.ContextRule>();
+  o.add(buildContextRule());
+  o.add(buildContextRule());
+  return o;
+}
+
+checkUnnamed1835(core.List<api.ContextRule> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContextRule(o[0]);
+  checkContextRule(o[1]);
+}
+
+core.int buildCounterContext = 0;
+buildContext() {
+  var o = new api.Context();
+  buildCounterContext++;
+  if (buildCounterContext < 3) {
+    o.rules = buildUnnamed1835();
+  }
+  buildCounterContext--;
+  return o;
+}
+
+checkContext(api.Context o) {
+  buildCounterContext++;
+  if (buildCounterContext < 3) {
+    checkUnnamed1835(o.rules);
+  }
+  buildCounterContext--;
+}
+
 buildUnnamed1836() {
   var o = new core.List<core.String>();
   o.add("foo");
@@ -376,80 +442,14 @@
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-core.int buildCounterBillingDestination = 0;
-buildBillingDestination() {
-  var o = new api.BillingDestination();
-  buildCounterBillingDestination++;
-  if (buildCounterBillingDestination < 3) {
-    o.metrics = buildUnnamed1836();
-    o.monitoredResource = "foo";
-  }
-  buildCounterBillingDestination--;
-  return o;
-}
-
-checkBillingDestination(api.BillingDestination o) {
-  buildCounterBillingDestination++;
-  if (buildCounterBillingDestination < 3) {
-    checkUnnamed1836(o.metrics);
-    unittest.expect(o.monitoredResource, unittest.equals('foo'));
-  }
-  buildCounterBillingDestination--;
-}
-
 buildUnnamed1837() {
-  var o = new core.List<api.ContextRule>();
-  o.add(buildContextRule());
-  o.add(buildContextRule());
-  return o;
-}
-
-checkUnnamed1837(core.List<api.ContextRule> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkContextRule(o[0]);
-  checkContextRule(o[1]);
-}
-
-core.int buildCounterContext = 0;
-buildContext() {
-  var o = new api.Context();
-  buildCounterContext++;
-  if (buildCounterContext < 3) {
-    o.rules = buildUnnamed1837();
-  }
-  buildCounterContext--;
-  return o;
-}
-
-checkContext(api.Context o) {
-  buildCounterContext++;
-  if (buildCounterContext < 3) {
-    checkUnnamed1837(o.rules);
-  }
-  buildCounterContext--;
-}
-
-buildUnnamed1838() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1838(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed1839() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed1839(core.List<core.String> o) {
+checkUnnamed1837(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -460,8 +460,8 @@
   var o = new api.ContextRule();
   buildCounterContextRule++;
   if (buildCounterContextRule < 3) {
-    o.provided = buildUnnamed1838();
-    o.requested = buildUnnamed1839();
+    o.provided = buildUnnamed1836();
+    o.requested = buildUnnamed1837();
     o.selector = "foo";
   }
   buildCounterContextRule--;
@@ -471,8 +471,8 @@
 checkContextRule(api.ContextRule o) {
   buildCounterContextRule++;
   if (buildCounterContextRule < 3) {
-    checkUnnamed1838(o.provided);
-    checkUnnamed1839(o.requested);
+    checkUnnamed1836(o.provided);
+    checkUnnamed1837(o.requested);
     unittest.expect(o.selector, unittest.equals('foo'));
   }
   buildCounterContextRule--;
@@ -516,27 +516,27 @@
   buildCounterCustomAuthRequirements--;
 }
 
-buildUnnamed1840() {
+buildUnnamed1838() {
   var o = new core.List<api.CustomErrorRule>();
   o.add(buildCustomErrorRule());
   o.add(buildCustomErrorRule());
   return o;
 }
 
-checkUnnamed1840(core.List<api.CustomErrorRule> o) {
+checkUnnamed1838(core.List<api.CustomErrorRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCustomErrorRule(o[0]);
   checkCustomErrorRule(o[1]);
 }
 
-buildUnnamed1841() {
+buildUnnamed1839() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1841(core.List<core.String> o) {
+checkUnnamed1839(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -547,8 +547,8 @@
   var o = new api.CustomError();
   buildCounterCustomError++;
   if (buildCounterCustomError < 3) {
-    o.rules = buildUnnamed1840();
-    o.types = buildUnnamed1841();
+    o.rules = buildUnnamed1838();
+    o.types = buildUnnamed1839();
   }
   buildCounterCustomError--;
   return o;
@@ -557,8 +557,8 @@
 checkCustomError(api.CustomError o) {
   buildCounterCustomError++;
   if (buildCounterCustomError < 3) {
-    checkUnnamed1840(o.rules);
-    checkUnnamed1841(o.types);
+    checkUnnamed1838(o.rules);
+    checkUnnamed1839(o.types);
   }
   buildCounterCustomError--;
 }
@@ -620,27 +620,27 @@
   buildCounterDisableServiceRequest--;
 }
 
-buildUnnamed1842() {
+buildUnnamed1840() {
   var o = new core.List<api.Page>();
   o.add(buildPage());
   o.add(buildPage());
   return o;
 }
 
-checkUnnamed1842(core.List<api.Page> o) {
+checkUnnamed1840(core.List<api.Page> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPage(o[0]);
   checkPage(o[1]);
 }
 
-buildUnnamed1843() {
+buildUnnamed1841() {
   var o = new core.List<api.DocumentationRule>();
   o.add(buildDocumentationRule());
   o.add(buildDocumentationRule());
   return o;
 }
 
-checkUnnamed1843(core.List<api.DocumentationRule> o) {
+checkUnnamed1841(core.List<api.DocumentationRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDocumentationRule(o[0]);
   checkDocumentationRule(o[1]);
@@ -653,8 +653,8 @@
   if (buildCounterDocumentation < 3) {
     o.documentationRootUrl = "foo";
     o.overview = "foo";
-    o.pages = buildUnnamed1842();
-    o.rules = buildUnnamed1843();
+    o.pages = buildUnnamed1840();
+    o.rules = buildUnnamed1841();
     o.summary = "foo";
   }
   buildCounterDocumentation--;
@@ -666,8 +666,8 @@
   if (buildCounterDocumentation < 3) {
     unittest.expect(o.documentationRootUrl, unittest.equals('foo'));
     unittest.expect(o.overview, unittest.equals('foo'));
-    checkUnnamed1842(o.pages);
-    checkUnnamed1843(o.rules);
+    checkUnnamed1840(o.pages);
+    checkUnnamed1841(o.rules);
     unittest.expect(o.summary, unittest.equals('foo'));
   }
   buildCounterDocumentation--;
@@ -711,6 +711,32 @@
   buildCounterEnableServiceRequest--;
 }
 
+buildUnnamed1842() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1842(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1843() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1843(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
 buildUnnamed1844() {
   var o = new core.List<core.String>();
   o.add("foo");
@@ -724,41 +750,15 @@
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1845() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed1845(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed1846() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed1846(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
 core.int buildCounterEndpoint = 0;
 buildEndpoint() {
   var o = new api.Endpoint();
   buildCounterEndpoint++;
   if (buildCounterEndpoint < 3) {
-    o.aliases = buildUnnamed1844();
+    o.aliases = buildUnnamed1842();
     o.allowCors = true;
-    o.apis = buildUnnamed1845();
-    o.features = buildUnnamed1846();
+    o.apis = buildUnnamed1843();
+    o.features = buildUnnamed1844();
     o.name = "foo";
     o.target = "foo";
   }
@@ -769,37 +769,37 @@
 checkEndpoint(api.Endpoint o) {
   buildCounterEndpoint++;
   if (buildCounterEndpoint < 3) {
-    checkUnnamed1844(o.aliases);
+    checkUnnamed1842(o.aliases);
     unittest.expect(o.allowCors, unittest.isTrue);
-    checkUnnamed1845(o.apis);
-    checkUnnamed1846(o.features);
+    checkUnnamed1843(o.apis);
+    checkUnnamed1844(o.features);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.target, unittest.equals('foo'));
   }
   buildCounterEndpoint--;
 }
 
-buildUnnamed1847() {
+buildUnnamed1845() {
   var o = new core.List<api.EnumValue>();
   o.add(buildEnumValue());
   o.add(buildEnumValue());
   return o;
 }
 
-checkUnnamed1847(core.List<api.EnumValue> o) {
+checkUnnamed1845(core.List<api.EnumValue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEnumValue(o[0]);
   checkEnumValue(o[1]);
 }
 
-buildUnnamed1848() {
+buildUnnamed1846() {
   var o = new core.List<api.Option>();
   o.add(buildOption());
   o.add(buildOption());
   return o;
 }
 
-checkUnnamed1848(core.List<api.Option> o) {
+checkUnnamed1846(core.List<api.Option> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOption(o[0]);
   checkOption(o[1]);
@@ -810,9 +810,9 @@
   var o = new api.Enum();
   buildCounterEnum++;
   if (buildCounterEnum < 3) {
-    o.enumvalue = buildUnnamed1847();
+    o.enumvalue = buildUnnamed1845();
     o.name = "foo";
-    o.options = buildUnnamed1848();
+    o.options = buildUnnamed1846();
     o.sourceContext = buildSourceContext();
     o.syntax = "foo";
   }
@@ -823,23 +823,23 @@
 checkEnum(api.Enum o) {
   buildCounterEnum++;
   if (buildCounterEnum < 3) {
-    checkUnnamed1847(o.enumvalue);
+    checkUnnamed1845(o.enumvalue);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1848(o.options);
+    checkUnnamed1846(o.options);
     checkSourceContext(o.sourceContext);
     unittest.expect(o.syntax, unittest.equals('foo'));
   }
   buildCounterEnum--;
 }
 
-buildUnnamed1849() {
+buildUnnamed1847() {
   var o = new core.List<api.Option>();
   o.add(buildOption());
   o.add(buildOption());
   return o;
 }
 
-checkUnnamed1849(core.List<api.Option> o) {
+checkUnnamed1847(core.List<api.Option> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOption(o[0]);
   checkOption(o[1]);
@@ -852,7 +852,7 @@
   if (buildCounterEnumValue < 3) {
     o.name = "foo";
     o.number = 42;
-    o.options = buildUnnamed1849();
+    o.options = buildUnnamed1847();
   }
   buildCounterEnumValue--;
   return o;
@@ -863,7 +863,7 @@
   if (buildCounterEnumValue < 3) {
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.number, unittest.equals(42));
-    checkUnnamed1849(o.options);
+    checkUnnamed1847(o.options);
   }
   buildCounterEnumValue--;
 }
@@ -887,14 +887,14 @@
   buildCounterExperimental--;
 }
 
-buildUnnamed1850() {
+buildUnnamed1848() {
   var o = new core.List<api.Option>();
   o.add(buildOption());
   o.add(buildOption());
   return o;
 }
 
-checkUnnamed1850(core.List<api.Option> o) {
+checkUnnamed1848(core.List<api.Option> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOption(o[0]);
   checkOption(o[1]);
@@ -912,7 +912,7 @@
     o.name = "foo";
     o.number = 42;
     o.oneofIndex = 42;
-    o.options = buildUnnamed1850();
+    o.options = buildUnnamed1848();
     o.packed = true;
     o.typeUrl = "foo";
   }
@@ -930,21 +930,21 @@
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.number, unittest.equals(42));
     unittest.expect(o.oneofIndex, unittest.equals(42));
-    checkUnnamed1850(o.options);
+    checkUnnamed1848(o.options);
     unittest.expect(o.packed, unittest.isTrue);
     unittest.expect(o.typeUrl, unittest.equals('foo'));
   }
   buildCounterField--;
 }
 
-buildUnnamed1851() {
+buildUnnamed1849() {
   var o = new core.List<api.HttpRule>();
   o.add(buildHttpRule());
   o.add(buildHttpRule());
   return o;
 }
 
-checkUnnamed1851(core.List<api.HttpRule> o) {
+checkUnnamed1849(core.List<api.HttpRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHttpRule(o[0]);
   checkHttpRule(o[1]);
@@ -956,7 +956,7 @@
   buildCounterHttp++;
   if (buildCounterHttp < 3) {
     o.fullyDecodeReservedExpansion = true;
-    o.rules = buildUnnamed1851();
+    o.rules = buildUnnamed1849();
   }
   buildCounterHttp--;
   return o;
@@ -966,19 +966,19 @@
   buildCounterHttp++;
   if (buildCounterHttp < 3) {
     unittest.expect(o.fullyDecodeReservedExpansion, unittest.isTrue);
-    checkUnnamed1851(o.rules);
+    checkUnnamed1849(o.rules);
   }
   buildCounterHttp--;
 }
 
-buildUnnamed1852() {
+buildUnnamed1850() {
   var o = new core.List<api.HttpRule>();
   o.add(buildHttpRule());
   o.add(buildHttpRule());
   return o;
 }
 
-checkUnnamed1852(core.List<api.HttpRule> o) {
+checkUnnamed1850(core.List<api.HttpRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHttpRule(o[0]);
   checkHttpRule(o[1]);
@@ -989,7 +989,7 @@
   var o = new api.HttpRule();
   buildCounterHttpRule++;
   if (buildCounterHttpRule < 3) {
-    o.additionalBindings = buildUnnamed1852();
+    o.additionalBindings = buildUnnamed1850();
     o.body = "foo";
     o.custom = buildCustomHttpPattern();
     o.delete = "foo";
@@ -1009,7 +1009,7 @@
 checkHttpRule(api.HttpRule o) {
   buildCounterHttpRule++;
   if (buildCounterHttpRule < 3) {
-    checkUnnamed1852(o.additionalBindings);
+    checkUnnamed1850(o.additionalBindings);
     unittest.expect(o.body, unittest.equals('foo'));
     checkCustomHttpPattern(o.custom);
     unittest.expect(o.delete, unittest.equals('foo'));
@@ -1048,14 +1048,14 @@
   buildCounterLabelDescriptor--;
 }
 
-buildUnnamed1853() {
+buildUnnamed1851() {
   var o = new core.List<api.PublishedService>();
   o.add(buildPublishedService());
   o.add(buildPublishedService());
   return o;
 }
 
-checkUnnamed1853(core.List<api.PublishedService> o) {
+checkUnnamed1851(core.List<api.PublishedService> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPublishedService(o[0]);
   checkPublishedService(o[1]);
@@ -1067,7 +1067,7 @@
   buildCounterListEnabledServicesResponse++;
   if (buildCounterListEnabledServicesResponse < 3) {
     o.nextPageToken = "foo";
-    o.services = buildUnnamed1853();
+    o.services = buildUnnamed1851();
   }
   buildCounterListEnabledServicesResponse--;
   return o;
@@ -1077,19 +1077,19 @@
   buildCounterListEnabledServicesResponse++;
   if (buildCounterListEnabledServicesResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1853(o.services);
+    checkUnnamed1851(o.services);
   }
   buildCounterListEnabledServicesResponse--;
 }
 
-buildUnnamed1854() {
+buildUnnamed1852() {
   var o = new core.List<api.LabelDescriptor>();
   o.add(buildLabelDescriptor());
   o.add(buildLabelDescriptor());
   return o;
 }
 
-checkUnnamed1854(core.List<api.LabelDescriptor> o) {
+checkUnnamed1852(core.List<api.LabelDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLabelDescriptor(o[0]);
   checkLabelDescriptor(o[1]);
@@ -1102,7 +1102,7 @@
   if (buildCounterLogDescriptor < 3) {
     o.description = "foo";
     o.displayName = "foo";
-    o.labels = buildUnnamed1854();
+    o.labels = buildUnnamed1852();
     o.name = "foo";
   }
   buildCounterLogDescriptor--;
@@ -1114,33 +1114,33 @@
   if (buildCounterLogDescriptor < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.displayName, unittest.equals('foo'));
-    checkUnnamed1854(o.labels);
+    checkUnnamed1852(o.labels);
     unittest.expect(o.name, unittest.equals('foo'));
   }
   buildCounterLogDescriptor--;
 }
 
-buildUnnamed1855() {
+buildUnnamed1853() {
   var o = new core.List<api.LoggingDestination>();
   o.add(buildLoggingDestination());
   o.add(buildLoggingDestination());
   return o;
 }
 
-checkUnnamed1855(core.List<api.LoggingDestination> o) {
+checkUnnamed1853(core.List<api.LoggingDestination> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLoggingDestination(o[0]);
   checkLoggingDestination(o[1]);
 }
 
-buildUnnamed1856() {
+buildUnnamed1854() {
   var o = new core.List<api.LoggingDestination>();
   o.add(buildLoggingDestination());
   o.add(buildLoggingDestination());
   return o;
 }
 
-checkUnnamed1856(core.List<api.LoggingDestination> o) {
+checkUnnamed1854(core.List<api.LoggingDestination> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLoggingDestination(o[0]);
   checkLoggingDestination(o[1]);
@@ -1151,8 +1151,8 @@
   var o = new api.Logging();
   buildCounterLogging++;
   if (buildCounterLogging < 3) {
-    o.consumerDestinations = buildUnnamed1855();
-    o.producerDestinations = buildUnnamed1856();
+    o.consumerDestinations = buildUnnamed1853();
+    o.producerDestinations = buildUnnamed1854();
   }
   buildCounterLogging--;
   return o;
@@ -1161,20 +1161,20 @@
 checkLogging(api.Logging o) {
   buildCounterLogging++;
   if (buildCounterLogging < 3) {
-    checkUnnamed1855(o.consumerDestinations);
-    checkUnnamed1856(o.producerDestinations);
+    checkUnnamed1853(o.consumerDestinations);
+    checkUnnamed1854(o.producerDestinations);
   }
   buildCounterLogging--;
 }
 
-buildUnnamed1857() {
+buildUnnamed1855() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1857(core.List<core.String> o) {
+checkUnnamed1855(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1185,7 +1185,7 @@
   var o = new api.LoggingDestination();
   buildCounterLoggingDestination++;
   if (buildCounterLoggingDestination < 3) {
-    o.logs = buildUnnamed1857();
+    o.logs = buildUnnamed1855();
     o.monitoredResource = "foo";
   }
   buildCounterLoggingDestination--;
@@ -1195,7 +1195,7 @@
 checkLoggingDestination(api.LoggingDestination o) {
   buildCounterLoggingDestination++;
   if (buildCounterLoggingDestination < 3) {
-    checkUnnamed1857(o.logs);
+    checkUnnamed1855(o.logs);
     unittest.expect(o.monitoredResource, unittest.equals('foo'));
   }
   buildCounterLoggingDestination--;
@@ -1230,14 +1230,14 @@
   buildCounterMediaDownload--;
 }
 
-buildUnnamed1858() {
+buildUnnamed1856() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1858(core.List<core.String> o) {
+checkUnnamed1856(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1252,7 +1252,7 @@
     o.dropzone = "foo";
     o.enabled = true;
     o.maxSize = "foo";
-    o.mimeTypes = buildUnnamed1858();
+    o.mimeTypes = buildUnnamed1856();
     o.progressNotification = true;
     o.startNotification = true;
     o.uploadService = "foo";
@@ -1268,7 +1268,7 @@
     unittest.expect(o.dropzone, unittest.equals('foo'));
     unittest.expect(o.enabled, unittest.isTrue);
     unittest.expect(o.maxSize, unittest.equals('foo'));
-    checkUnnamed1858(o.mimeTypes);
+    checkUnnamed1856(o.mimeTypes);
     unittest.expect(o.progressNotification, unittest.isTrue);
     unittest.expect(o.startNotification, unittest.isTrue);
     unittest.expect(o.uploadService, unittest.equals('foo'));
@@ -1276,14 +1276,14 @@
   buildCounterMediaUpload--;
 }
 
-buildUnnamed1859() {
+buildUnnamed1857() {
   var o = new core.List<api.Option>();
   o.add(buildOption());
   o.add(buildOption());
   return o;
 }
 
-checkUnnamed1859(core.List<api.Option> o) {
+checkUnnamed1857(core.List<api.Option> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOption(o[0]);
   checkOption(o[1]);
@@ -1295,7 +1295,7 @@
   buildCounterMethod++;
   if (buildCounterMethod < 3) {
     o.name = "foo";
-    o.options = buildUnnamed1859();
+    o.options = buildUnnamed1857();
     o.requestStreaming = true;
     o.requestTypeUrl = "foo";
     o.responseStreaming = true;
@@ -1310,7 +1310,7 @@
   buildCounterMethod++;
   if (buildCounterMethod < 3) {
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1859(o.options);
+    checkUnnamed1857(o.options);
     unittest.expect(o.requestStreaming, unittest.isTrue);
     unittest.expect(o.requestTypeUrl, unittest.equals('foo'));
     unittest.expect(o.responseStreaming, unittest.isTrue);
@@ -1320,14 +1320,14 @@
   buildCounterMethod--;
 }
 
-buildUnnamed1860() {
+buildUnnamed1858() {
   var o = new core.List<api.LabelDescriptor>();
   o.add(buildLabelDescriptor());
   o.add(buildLabelDescriptor());
   return o;
 }
 
-checkUnnamed1860(core.List<api.LabelDescriptor> o) {
+checkUnnamed1858(core.List<api.LabelDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLabelDescriptor(o[0]);
   checkLabelDescriptor(o[1]);
@@ -1340,7 +1340,7 @@
   if (buildCounterMetricDescriptor < 3) {
     o.description = "foo";
     o.displayName = "foo";
-    o.labels = buildUnnamed1860();
+    o.labels = buildUnnamed1858();
     o.metricKind = "foo";
     o.name = "foo";
     o.type = "foo";
@@ -1356,7 +1356,7 @@
   if (buildCounterMetricDescriptor < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.displayName, unittest.equals('foo'));
-    checkUnnamed1860(o.labels);
+    checkUnnamed1858(o.labels);
     unittest.expect(o.metricKind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
@@ -1366,14 +1366,14 @@
   buildCounterMetricDescriptor--;
 }
 
-buildUnnamed1861() {
+buildUnnamed1859() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1861(core.Map<core.String, core.String> o) {
+checkUnnamed1859(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1384,7 +1384,7 @@
   var o = new api.MetricRule();
   buildCounterMetricRule++;
   if (buildCounterMetricRule < 3) {
-    o.metricCosts = buildUnnamed1861();
+    o.metricCosts = buildUnnamed1859();
     o.selector = "foo";
   }
   buildCounterMetricRule--;
@@ -1394,7 +1394,7 @@
 checkMetricRule(api.MetricRule o) {
   buildCounterMetricRule++;
   if (buildCounterMetricRule < 3) {
-    checkUnnamed1861(o.metricCosts);
+    checkUnnamed1859(o.metricCosts);
     unittest.expect(o.selector, unittest.equals('foo'));
   }
   buildCounterMetricRule--;
@@ -1421,14 +1421,14 @@
   buildCounterMixin--;
 }
 
-buildUnnamed1862() {
+buildUnnamed1860() {
   var o = new core.List<api.LabelDescriptor>();
   o.add(buildLabelDescriptor());
   o.add(buildLabelDescriptor());
   return o;
 }
 
-checkUnnamed1862(core.List<api.LabelDescriptor> o) {
+checkUnnamed1860(core.List<api.LabelDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLabelDescriptor(o[0]);
   checkLabelDescriptor(o[1]);
@@ -1441,7 +1441,7 @@
   if (buildCounterMonitoredResourceDescriptor < 3) {
     o.description = "foo";
     o.displayName = "foo";
-    o.labels = buildUnnamed1862();
+    o.labels = buildUnnamed1860();
     o.name = "foo";
     o.type = "foo";
   }
@@ -1454,34 +1454,34 @@
   if (buildCounterMonitoredResourceDescriptor < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.displayName, unittest.equals('foo'));
-    checkUnnamed1862(o.labels);
+    checkUnnamed1860(o.labels);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterMonitoredResourceDescriptor--;
 }
 
-buildUnnamed1863() {
+buildUnnamed1861() {
   var o = new core.List<api.MonitoringDestination>();
   o.add(buildMonitoringDestination());
   o.add(buildMonitoringDestination());
   return o;
 }
 
-checkUnnamed1863(core.List<api.MonitoringDestination> o) {
+checkUnnamed1861(core.List<api.MonitoringDestination> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMonitoringDestination(o[0]);
   checkMonitoringDestination(o[1]);
 }
 
-buildUnnamed1864() {
+buildUnnamed1862() {
   var o = new core.List<api.MonitoringDestination>();
   o.add(buildMonitoringDestination());
   o.add(buildMonitoringDestination());
   return o;
 }
 
-checkUnnamed1864(core.List<api.MonitoringDestination> o) {
+checkUnnamed1862(core.List<api.MonitoringDestination> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMonitoringDestination(o[0]);
   checkMonitoringDestination(o[1]);
@@ -1492,8 +1492,8 @@
   var o = new api.Monitoring();
   buildCounterMonitoring++;
   if (buildCounterMonitoring < 3) {
-    o.consumerDestinations = buildUnnamed1863();
-    o.producerDestinations = buildUnnamed1864();
+    o.consumerDestinations = buildUnnamed1861();
+    o.producerDestinations = buildUnnamed1862();
   }
   buildCounterMonitoring--;
   return o;
@@ -1502,20 +1502,20 @@
 checkMonitoring(api.Monitoring o) {
   buildCounterMonitoring++;
   if (buildCounterMonitoring < 3) {
-    checkUnnamed1863(o.consumerDestinations);
-    checkUnnamed1864(o.producerDestinations);
+    checkUnnamed1861(o.consumerDestinations);
+    checkUnnamed1862(o.producerDestinations);
   }
   buildCounterMonitoring--;
 }
 
-buildUnnamed1865() {
+buildUnnamed1863() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1865(core.List<core.String> o) {
+checkUnnamed1863(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1526,7 +1526,7 @@
   var o = new api.MonitoringDestination();
   buildCounterMonitoringDestination++;
   if (buildCounterMonitoringDestination < 3) {
-    o.metrics = buildUnnamed1865();
+    o.metrics = buildUnnamed1863();
     o.monitoredResource = "foo";
   }
   buildCounterMonitoringDestination--;
@@ -1536,7 +1536,7 @@
 checkMonitoringDestination(api.MonitoringDestination o) {
   buildCounterMonitoringDestination++;
   if (buildCounterMonitoringDestination < 3) {
-    checkUnnamed1865(o.metrics);
+    checkUnnamed1863(o.metrics);
     unittest.expect(o.monitoredResource, unittest.equals('foo'));
   }
   buildCounterMonitoringDestination--;
@@ -1561,7 +1561,7 @@
   buildCounterOAuthRequirements--;
 }
 
-buildUnnamed1866() {
+buildUnnamed1864() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1576,7 +1576,7 @@
   return o;
 }
 
-checkUnnamed1866(core.Map<core.String, core.Object> o) {
+checkUnnamed1864(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -1590,7 +1590,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1867() {
+buildUnnamed1865() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1605,7 +1605,7 @@
   return o;
 }
 
-checkUnnamed1867(core.Map<core.String, core.Object> o) {
+checkUnnamed1865(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -1626,9 +1626,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed1866();
+    o.metadata = buildUnnamed1864();
     o.name = "foo";
-    o.response = buildUnnamed1867();
+    o.response = buildUnnamed1865();
   }
   buildCounterOperation--;
   return o;
@@ -1639,34 +1639,34 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed1866(o.metadata);
+    checkUnnamed1864(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1867(o.response);
+    checkUnnamed1865(o.response);
   }
   buildCounterOperation--;
 }
 
-buildUnnamed1868() {
+buildUnnamed1866() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1868(core.List<core.String> o) {
+checkUnnamed1866(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1869() {
+buildUnnamed1867() {
   var o = new core.List<api.Step>();
   o.add(buildStep());
   o.add(buildStep());
   return o;
 }
 
-checkUnnamed1869(core.List<api.Step> o) {
+checkUnnamed1867(core.List<api.Step> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStep(o[0]);
   checkStep(o[1]);
@@ -1678,9 +1678,9 @@
   buildCounterOperationMetadata++;
   if (buildCounterOperationMetadata < 3) {
     o.progressPercentage = 42;
-    o.resourceNames = buildUnnamed1868();
+    o.resourceNames = buildUnnamed1866();
     o.startTime = "foo";
-    o.steps = buildUnnamed1869();
+    o.steps = buildUnnamed1867();
   }
   buildCounterOperationMetadata--;
   return o;
@@ -1690,14 +1690,14 @@
   buildCounterOperationMetadata++;
   if (buildCounterOperationMetadata < 3) {
     unittest.expect(o.progressPercentage, unittest.equals(42));
-    checkUnnamed1868(o.resourceNames);
+    checkUnnamed1866(o.resourceNames);
     unittest.expect(o.startTime, unittest.equals('foo'));
-    checkUnnamed1869(o.steps);
+    checkUnnamed1867(o.steps);
   }
   buildCounterOperationMetadata--;
 }
 
-buildUnnamed1870() {
+buildUnnamed1868() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1712,7 +1712,7 @@
   return o;
 }
 
-checkUnnamed1870(core.Map<core.String, core.Object> o) {
+checkUnnamed1868(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -1732,7 +1732,7 @@
   buildCounterOption++;
   if (buildCounterOption < 3) {
     o.name = "foo";
-    o.value = buildUnnamed1870();
+    o.value = buildUnnamed1868();
   }
   buildCounterOption--;
   return o;
@@ -1742,19 +1742,19 @@
   buildCounterOption++;
   if (buildCounterOption < 3) {
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1870(o.value);
+    checkUnnamed1868(o.value);
   }
   buildCounterOption--;
 }
 
-buildUnnamed1871() {
+buildUnnamed1869() {
   var o = new core.List<api.Page>();
   o.add(buildPage());
   o.add(buildPage());
   return o;
 }
 
-checkUnnamed1871(core.List<api.Page> o) {
+checkUnnamed1869(core.List<api.Page> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPage(o[0]);
   checkPage(o[1]);
@@ -1767,7 +1767,7 @@
   if (buildCounterPage < 3) {
     o.content = "foo";
     o.name = "foo";
-    o.subpages = buildUnnamed1871();
+    o.subpages = buildUnnamed1869();
   }
   buildCounterPage--;
   return o;
@@ -1778,7 +1778,7 @@
   if (buildCounterPage < 3) {
     unittest.expect(o.content, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1871(o.subpages);
+    checkUnnamed1869(o.subpages);
   }
   buildCounterPage--;
 }
@@ -1804,27 +1804,27 @@
   buildCounterPublishedService--;
 }
 
-buildUnnamed1872() {
+buildUnnamed1870() {
   var o = new core.List<api.QuotaLimit>();
   o.add(buildQuotaLimit());
   o.add(buildQuotaLimit());
   return o;
 }
 
-checkUnnamed1872(core.List<api.QuotaLimit> o) {
+checkUnnamed1870(core.List<api.QuotaLimit> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQuotaLimit(o[0]);
   checkQuotaLimit(o[1]);
 }
 
-buildUnnamed1873() {
+buildUnnamed1871() {
   var o = new core.List<api.MetricRule>();
   o.add(buildMetricRule());
   o.add(buildMetricRule());
   return o;
 }
 
-checkUnnamed1873(core.List<api.MetricRule> o) {
+checkUnnamed1871(core.List<api.MetricRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricRule(o[0]);
   checkMetricRule(o[1]);
@@ -1835,8 +1835,8 @@
   var o = new api.Quota();
   buildCounterQuota++;
   if (buildCounterQuota < 3) {
-    o.limits = buildUnnamed1872();
-    o.metricRules = buildUnnamed1873();
+    o.limits = buildUnnamed1870();
+    o.metricRules = buildUnnamed1871();
   }
   buildCounterQuota--;
   return o;
@@ -1845,20 +1845,20 @@
 checkQuota(api.Quota o) {
   buildCounterQuota++;
   if (buildCounterQuota < 3) {
-    checkUnnamed1872(o.limits);
-    checkUnnamed1873(o.metricRules);
+    checkUnnamed1870(o.limits);
+    checkUnnamed1871(o.metricRules);
   }
   buildCounterQuota--;
 }
 
-buildUnnamed1874() {
+buildUnnamed1872() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1874(core.Map<core.String, core.String> o) {
+checkUnnamed1872(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1878,7 +1878,7 @@
     o.metric = "foo";
     o.name = "foo";
     o.unit = "foo";
-    o.values = buildUnnamed1874();
+    o.values = buildUnnamed1872();
   }
   buildCounterQuotaLimit--;
   return o;
@@ -1896,19 +1896,19 @@
     unittest.expect(o.metric, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.unit, unittest.equals('foo'));
-    checkUnnamed1874(o.values);
+    checkUnnamed1872(o.values);
   }
   buildCounterQuotaLimit--;
 }
 
-buildUnnamed1875() {
+buildUnnamed1873() {
   var o = new core.List<api.PublishedService>();
   o.add(buildPublishedService());
   o.add(buildPublishedService());
   return o;
 }
 
-checkUnnamed1875(core.List<api.PublishedService> o) {
+checkUnnamed1873(core.List<api.PublishedService> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPublishedService(o[0]);
   checkPublishedService(o[1]);
@@ -1920,7 +1920,7 @@
   buildCounterSearchServicesResponse++;
   if (buildCounterSearchServicesResponse < 3) {
     o.nextPageToken = "foo";
-    o.services = buildUnnamed1875();
+    o.services = buildUnnamed1873();
   }
   buildCounterSearchServicesResponse--;
   return o;
@@ -1930,110 +1930,110 @@
   buildCounterSearchServicesResponse++;
   if (buildCounterSearchServicesResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1875(o.services);
+    checkUnnamed1873(o.services);
   }
   buildCounterSearchServicesResponse--;
 }
 
-buildUnnamed1876() {
+buildUnnamed1874() {
   var o = new core.List<api.Api>();
   o.add(buildApi());
   o.add(buildApi());
   return o;
 }
 
-checkUnnamed1876(core.List<api.Api> o) {
+checkUnnamed1874(core.List<api.Api> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApi(o[0]);
   checkApi(o[1]);
 }
 
-buildUnnamed1877() {
+buildUnnamed1875() {
   var o = new core.List<api.Endpoint>();
   o.add(buildEndpoint());
   o.add(buildEndpoint());
   return o;
 }
 
-checkUnnamed1877(core.List<api.Endpoint> o) {
+checkUnnamed1875(core.List<api.Endpoint> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEndpoint(o[0]);
   checkEndpoint(o[1]);
 }
 
-buildUnnamed1878() {
+buildUnnamed1876() {
   var o = new core.List<api.Enum>();
   o.add(buildEnum());
   o.add(buildEnum());
   return o;
 }
 
-checkUnnamed1878(core.List<api.Enum> o) {
+checkUnnamed1876(core.List<api.Enum> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEnum(o[0]);
   checkEnum(o[1]);
 }
 
-buildUnnamed1879() {
+buildUnnamed1877() {
   var o = new core.List<api.LogDescriptor>();
   o.add(buildLogDescriptor());
   o.add(buildLogDescriptor());
   return o;
 }
 
-checkUnnamed1879(core.List<api.LogDescriptor> o) {
+checkUnnamed1877(core.List<api.LogDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLogDescriptor(o[0]);
   checkLogDescriptor(o[1]);
 }
 
-buildUnnamed1880() {
+buildUnnamed1878() {
   var o = new core.List<api.MetricDescriptor>();
   o.add(buildMetricDescriptor());
   o.add(buildMetricDescriptor());
   return o;
 }
 
-checkUnnamed1880(core.List<api.MetricDescriptor> o) {
+checkUnnamed1878(core.List<api.MetricDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricDescriptor(o[0]);
   checkMetricDescriptor(o[1]);
 }
 
-buildUnnamed1881() {
+buildUnnamed1879() {
   var o = new core.List<api.MonitoredResourceDescriptor>();
   o.add(buildMonitoredResourceDescriptor());
   o.add(buildMonitoredResourceDescriptor());
   return o;
 }
 
-checkUnnamed1881(core.List<api.MonitoredResourceDescriptor> o) {
+checkUnnamed1879(core.List<api.MonitoredResourceDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMonitoredResourceDescriptor(o[0]);
   checkMonitoredResourceDescriptor(o[1]);
 }
 
-buildUnnamed1882() {
+buildUnnamed1880() {
   var o = new core.List<api.Type>();
   o.add(buildType());
   o.add(buildType());
   return o;
 }
 
-checkUnnamed1882(core.List<api.Type> o) {
+checkUnnamed1880(core.List<api.Type> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkType(o[0]);
   checkType(o[1]);
 }
 
-buildUnnamed1883() {
+buildUnnamed1881() {
   var o = new core.List<api.Type>();
   o.add(buildType());
   o.add(buildType());
   return o;
 }
 
-checkUnnamed1883(core.List<api.Type> o) {
+checkUnnamed1881(core.List<api.Type> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkType(o[0]);
   checkType(o[1]);
@@ -2044,7 +2044,7 @@
   var o = new api.Service();
   buildCounterService++;
   if (buildCounterService < 3) {
-    o.apis = buildUnnamed1876();
+    o.apis = buildUnnamed1874();
     o.authentication = buildAuthentication();
     o.backend = buildBackend();
     o.billing = buildBilling();
@@ -2053,24 +2053,24 @@
     o.control = buildControl();
     o.customError = buildCustomError();
     o.documentation = buildDocumentation();
-    o.endpoints = buildUnnamed1877();
-    o.enums = buildUnnamed1878();
+    o.endpoints = buildUnnamed1875();
+    o.enums = buildUnnamed1876();
     o.experimental = buildExperimental();
     o.http = buildHttp();
     o.id = "foo";
     o.logging = buildLogging();
-    o.logs = buildUnnamed1879();
-    o.metrics = buildUnnamed1880();
-    o.monitoredResources = buildUnnamed1881();
+    o.logs = buildUnnamed1877();
+    o.metrics = buildUnnamed1878();
+    o.monitoredResources = buildUnnamed1879();
     o.monitoring = buildMonitoring();
     o.name = "foo";
     o.producerProjectId = "foo";
     o.quota = buildQuota();
     o.sourceInfo = buildSourceInfo();
     o.systemParameters = buildSystemParameters();
-    o.systemTypes = buildUnnamed1882();
+    o.systemTypes = buildUnnamed1880();
     o.title = "foo";
-    o.types = buildUnnamed1883();
+    o.types = buildUnnamed1881();
     o.usage = buildUsage();
     o.visibility = buildVisibility();
   }
@@ -2081,7 +2081,7 @@
 checkService(api.Service o) {
   buildCounterService++;
   if (buildCounterService < 3) {
-    checkUnnamed1876(o.apis);
+    checkUnnamed1874(o.apis);
     checkAuthentication(o.authentication);
     checkBackend(o.backend);
     checkBilling(o.billing);
@@ -2090,24 +2090,24 @@
     checkControl(o.control);
     checkCustomError(o.customError);
     checkDocumentation(o.documentation);
-    checkUnnamed1877(o.endpoints);
-    checkUnnamed1878(o.enums);
+    checkUnnamed1875(o.endpoints);
+    checkUnnamed1876(o.enums);
     checkExperimental(o.experimental);
     checkHttp(o.http);
     unittest.expect(o.id, unittest.equals('foo'));
     checkLogging(o.logging);
-    checkUnnamed1879(o.logs);
-    checkUnnamed1880(o.metrics);
-    checkUnnamed1881(o.monitoredResources);
+    checkUnnamed1877(o.logs);
+    checkUnnamed1878(o.metrics);
+    checkUnnamed1879(o.monitoredResources);
     checkMonitoring(o.monitoring);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.producerProjectId, unittest.equals('foo'));
     checkQuota(o.quota);
     checkSourceInfo(o.sourceInfo);
     checkSystemParameters(o.systemParameters);
-    checkUnnamed1882(o.systemTypes);
+    checkUnnamed1880(o.systemTypes);
     unittest.expect(o.title, unittest.equals('foo'));
-    checkUnnamed1883(o.types);
+    checkUnnamed1881(o.types);
     checkUsage(o.usage);
     checkVisibility(o.visibility);
   }
@@ -2133,6 +2133,67 @@
   buildCounterSourceContext--;
 }
 
+buildUnnamed1882() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed1882(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted7 = (o["x"]) as core.Map;
+  unittest.expect(casted7, unittest.hasLength(3));
+  unittest.expect(casted7["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted7["bool"], unittest.equals(true));
+  unittest.expect(casted7["string"], unittest.equals('foo'));
+  var casted8 = (o["y"]) as core.Map;
+  unittest.expect(casted8, unittest.hasLength(3));
+  unittest.expect(casted8["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted8["bool"], unittest.equals(true));
+  unittest.expect(casted8["string"], unittest.equals('foo'));
+}
+
+buildUnnamed1883() {
+  var o = new core.List<core.Map<core.String, core.Object>>();
+  o.add(buildUnnamed1882());
+  o.add(buildUnnamed1882());
+  return o;
+}
+
+checkUnnamed1883(core.List<core.Map<core.String, core.Object>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed1882(o[0]);
+  checkUnnamed1882(o[1]);
+}
+
+core.int buildCounterSourceInfo = 0;
+buildSourceInfo() {
+  var o = new api.SourceInfo();
+  buildCounterSourceInfo++;
+  if (buildCounterSourceInfo < 3) {
+    o.sourceFiles = buildUnnamed1883();
+  }
+  buildCounterSourceInfo--;
+  return o;
+}
+
+checkSourceInfo(api.SourceInfo o) {
+  buildCounterSourceInfo++;
+  if (buildCounterSourceInfo < 3) {
+    checkUnnamed1883(o.sourceFiles);
+  }
+  buildCounterSourceInfo--;
+}
+
 buildUnnamed1884() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
@@ -2150,16 +2211,16 @@
 
 checkUnnamed1884(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
-  var casted7 = (o["x"]) as core.Map;
-  unittest.expect(casted7, unittest.hasLength(3));
-  unittest.expect(casted7["list"], unittest.equals([1, 2, 3]));
-  unittest.expect(casted7["bool"], unittest.equals(true));
-  unittest.expect(casted7["string"], unittest.equals('foo'));
-  var casted8 = (o["y"]) as core.Map;
-  unittest.expect(casted8, unittest.hasLength(3));
-  unittest.expect(casted8["list"], unittest.equals([1, 2, 3]));
-  unittest.expect(casted8["bool"], unittest.equals(true));
-  unittest.expect(casted8["string"], unittest.equals('foo'));
+  var casted9 = (o["x"]) as core.Map;
+  unittest.expect(casted9, unittest.hasLength(3));
+  unittest.expect(casted9["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted9["bool"], unittest.equals(true));
+  unittest.expect(casted9["string"], unittest.equals('foo'));
+  var casted10 = (o["y"]) as core.Map;
+  unittest.expect(casted10, unittest.hasLength(3));
+  unittest.expect(casted10["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted10["bool"], unittest.equals(true));
+  unittest.expect(casted10["string"], unittest.equals('foo'));
 }
 
 buildUnnamed1885() {
@@ -2175,74 +2236,13 @@
   checkUnnamed1884(o[1]);
 }
 
-core.int buildCounterSourceInfo = 0;
-buildSourceInfo() {
-  var o = new api.SourceInfo();
-  buildCounterSourceInfo++;
-  if (buildCounterSourceInfo < 3) {
-    o.sourceFiles = buildUnnamed1885();
-  }
-  buildCounterSourceInfo--;
-  return o;
-}
-
-checkSourceInfo(api.SourceInfo o) {
-  buildCounterSourceInfo++;
-  if (buildCounterSourceInfo < 3) {
-    checkUnnamed1885(o.sourceFiles);
-  }
-  buildCounterSourceInfo--;
-}
-
-buildUnnamed1886() {
-  var o = new core.Map<core.String, core.Object>();
-  o["x"] = {
-    'list': [1, 2, 3],
-    'bool': true,
-    'string': 'foo'
-  };
-  o["y"] = {
-    'list': [1, 2, 3],
-    'bool': true,
-    'string': 'foo'
-  };
-  return o;
-}
-
-checkUnnamed1886(core.Map<core.String, core.Object> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  var casted9 = (o["x"]) as core.Map;
-  unittest.expect(casted9, unittest.hasLength(3));
-  unittest.expect(casted9["list"], unittest.equals([1, 2, 3]));
-  unittest.expect(casted9["bool"], unittest.equals(true));
-  unittest.expect(casted9["string"], unittest.equals('foo'));
-  var casted10 = (o["y"]) as core.Map;
-  unittest.expect(casted10, unittest.hasLength(3));
-  unittest.expect(casted10["list"], unittest.equals([1, 2, 3]));
-  unittest.expect(casted10["bool"], unittest.equals(true));
-  unittest.expect(casted10["string"], unittest.equals('foo'));
-}
-
-buildUnnamed1887() {
-  var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed1886());
-  o.add(buildUnnamed1886());
-  return o;
-}
-
-checkUnnamed1887(core.List<core.Map<core.String, core.Object>> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1886(o[0]);
-  checkUnnamed1886(o[1]);
-}
-
 core.int buildCounterStatus = 0;
 buildStatus() {
   var o = new api.Status();
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed1887();
+    o.details = buildUnnamed1885();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -2253,7 +2253,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed1887(o.details);
+    checkUnnamed1885(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -2303,14 +2303,14 @@
   buildCounterSystemParameter--;
 }
 
-buildUnnamed1888() {
+buildUnnamed1886() {
   var o = new core.List<api.SystemParameter>();
   o.add(buildSystemParameter());
   o.add(buildSystemParameter());
   return o;
 }
 
-checkUnnamed1888(core.List<api.SystemParameter> o) {
+checkUnnamed1886(core.List<api.SystemParameter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSystemParameter(o[0]);
   checkSystemParameter(o[1]);
@@ -2321,7 +2321,7 @@
   var o = new api.SystemParameterRule();
   buildCounterSystemParameterRule++;
   if (buildCounterSystemParameterRule < 3) {
-    o.parameters = buildUnnamed1888();
+    o.parameters = buildUnnamed1886();
     o.selector = "foo";
   }
   buildCounterSystemParameterRule--;
@@ -2331,20 +2331,20 @@
 checkSystemParameterRule(api.SystemParameterRule o) {
   buildCounterSystemParameterRule++;
   if (buildCounterSystemParameterRule < 3) {
-    checkUnnamed1888(o.parameters);
+    checkUnnamed1886(o.parameters);
     unittest.expect(o.selector, unittest.equals('foo'));
   }
   buildCounterSystemParameterRule--;
 }
 
-buildUnnamed1889() {
+buildUnnamed1887() {
   var o = new core.List<api.SystemParameterRule>();
   o.add(buildSystemParameterRule());
   o.add(buildSystemParameterRule());
   return o;
 }
 
-checkUnnamed1889(core.List<api.SystemParameterRule> o) {
+checkUnnamed1887(core.List<api.SystemParameterRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSystemParameterRule(o[0]);
   checkSystemParameterRule(o[1]);
@@ -2355,7 +2355,7 @@
   var o = new api.SystemParameters();
   buildCounterSystemParameters++;
   if (buildCounterSystemParameters < 3) {
-    o.rules = buildUnnamed1889();
+    o.rules = buildUnnamed1887();
   }
   buildCounterSystemParameters--;
   return o;
@@ -2364,24 +2364,79 @@
 checkSystemParameters(api.SystemParameters o) {
   buildCounterSystemParameters++;
   if (buildCounterSystemParameters < 3) {
-    checkUnnamed1889(o.rules);
+    checkUnnamed1887(o.rules);
   }
   buildCounterSystemParameters--;
 }
 
-buildUnnamed1890() {
+buildUnnamed1888() {
   var o = new core.List<api.Field>();
   o.add(buildField());
   o.add(buildField());
   return o;
 }
 
-checkUnnamed1890(core.List<api.Field> o) {
+checkUnnamed1888(core.List<api.Field> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkField(o[0]);
   checkField(o[1]);
 }
 
+buildUnnamed1889() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1889(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1890() {
+  var o = new core.List<api.Option>();
+  o.add(buildOption());
+  o.add(buildOption());
+  return o;
+}
+
+checkUnnamed1890(core.List<api.Option> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOption(o[0]);
+  checkOption(o[1]);
+}
+
+core.int buildCounterType = 0;
+buildType() {
+  var o = new api.Type();
+  buildCounterType++;
+  if (buildCounterType < 3) {
+    o.fields = buildUnnamed1888();
+    o.name = "foo";
+    o.oneofs = buildUnnamed1889();
+    o.options = buildUnnamed1890();
+    o.sourceContext = buildSourceContext();
+    o.syntax = "foo";
+  }
+  buildCounterType--;
+  return o;
+}
+
+checkType(api.Type o) {
+  buildCounterType++;
+  if (buildCounterType < 3) {
+    checkUnnamed1888(o.fields);
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed1889(o.oneofs);
+    checkUnnamed1890(o.options);
+    checkSourceContext(o.sourceContext);
+    unittest.expect(o.syntax, unittest.equals('foo'));
+  }
+  buildCounterType--;
+}
+
 buildUnnamed1891() {
   var o = new core.List<core.String>();
   o.add("foo");
@@ -2396,68 +2451,13 @@
 }
 
 buildUnnamed1892() {
-  var o = new core.List<api.Option>();
-  o.add(buildOption());
-  o.add(buildOption());
-  return o;
-}
-
-checkUnnamed1892(core.List<api.Option> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkOption(o[0]);
-  checkOption(o[1]);
-}
-
-core.int buildCounterType = 0;
-buildType() {
-  var o = new api.Type();
-  buildCounterType++;
-  if (buildCounterType < 3) {
-    o.fields = buildUnnamed1890();
-    o.name = "foo";
-    o.oneofs = buildUnnamed1891();
-    o.options = buildUnnamed1892();
-    o.sourceContext = buildSourceContext();
-    o.syntax = "foo";
-  }
-  buildCounterType--;
-  return o;
-}
-
-checkType(api.Type o) {
-  buildCounterType++;
-  if (buildCounterType < 3) {
-    checkUnnamed1890(o.fields);
-    unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1891(o.oneofs);
-    checkUnnamed1892(o.options);
-    checkSourceContext(o.sourceContext);
-    unittest.expect(o.syntax, unittest.equals('foo'));
-  }
-  buildCounterType--;
-}
-
-buildUnnamed1893() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed1893(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed1894() {
   var o = new core.List<api.UsageRule>();
   o.add(buildUsageRule());
   o.add(buildUsageRule());
   return o;
 }
 
-checkUnnamed1894(core.List<api.UsageRule> o) {
+checkUnnamed1892(core.List<api.UsageRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUsageRule(o[0]);
   checkUsageRule(o[1]);
@@ -2469,8 +2469,8 @@
   buildCounterUsage++;
   if (buildCounterUsage < 3) {
     o.producerNotificationChannel = "foo";
-    o.requirements = buildUnnamed1893();
-    o.rules = buildUnnamed1894();
+    o.requirements = buildUnnamed1891();
+    o.rules = buildUnnamed1892();
   }
   buildCounterUsage--;
   return o;
@@ -2480,8 +2480,8 @@
   buildCounterUsage++;
   if (buildCounterUsage < 3) {
     unittest.expect(o.producerNotificationChannel, unittest.equals('foo'));
-    checkUnnamed1893(o.requirements);
-    checkUnnamed1894(o.rules);
+    checkUnnamed1891(o.requirements);
+    checkUnnamed1892(o.rules);
   }
   buildCounterUsage--;
 }
@@ -2509,14 +2509,14 @@
   buildCounterUsageRule--;
 }
 
-buildUnnamed1895() {
+buildUnnamed1893() {
   var o = new core.List<api.VisibilityRule>();
   o.add(buildVisibilityRule());
   o.add(buildVisibilityRule());
   return o;
 }
 
-checkUnnamed1895(core.List<api.VisibilityRule> o) {
+checkUnnamed1893(core.List<api.VisibilityRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVisibilityRule(o[0]);
   checkVisibilityRule(o[1]);
@@ -2527,7 +2527,7 @@
   var o = new api.Visibility();
   buildCounterVisibility++;
   if (buildCounterVisibility < 3) {
-    o.rules = buildUnnamed1895();
+    o.rules = buildUnnamed1893();
   }
   buildCounterVisibility--;
   return o;
@@ -2536,7 +2536,7 @@
 checkVisibility(api.Visibility o) {
   buildCounterVisibility++;
   if (buildCounterVisibility < 3) {
-    checkUnnamed1895(o.rules);
+    checkUnnamed1893(o.rules);
   }
   buildCounterVisibility--;
 }
@@ -3082,6 +3082,7 @@
           new api.ServiceuserApi(mock).projects.services;
       var arg_request = buildDisableServiceRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DisableServiceRequest.fromJson(json);
         checkDisableServiceRequest(obj);
@@ -3116,6 +3117,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3124,7 +3126,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .disable(arg_request, arg_name)
+          .disable(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3136,6 +3138,7 @@
           new api.ServiceuserApi(mock).projects.services;
       var arg_request = buildEnableServiceRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.EnableServiceRequest.fromJson(json);
         checkEnableServiceRequest(obj);
@@ -3170,6 +3173,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3178,7 +3182,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .enable(arg_request, arg_name)
+          .enable(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3191,6 +3195,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3226,6 +3231,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3234,7 +3240,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListEnabledServicesResponse response) {
         checkListEnabledServicesResponse(response);
@@ -3248,6 +3257,7 @@
       api.ServicesResourceApi res = new api.ServiceuserApi(mock).services;
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3282,6 +3292,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3290,7 +3301,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .search(pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .search(
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SearchServicesResponse response) {
         checkSearchServicesResponse(response);
       })));
diff --git a/generated/googleapis/test/sheets/v4_test.dart b/generated/googleapis/test/sheets/v4_test.dart
new file mode 100644
index 0000000..28fbdc1
--- /dev/null
+++ b/generated/googleapis/test/sheets/v4_test.dart
@@ -0,0 +1,7556 @@
+library googleapis.sheets.v4.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/sheets/v4.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAddBandingRequest = 0;
+buildAddBandingRequest() {
+  var o = new api.AddBandingRequest();
+  buildCounterAddBandingRequest++;
+  if (buildCounterAddBandingRequest < 3) {
+    o.bandedRange = buildBandedRange();
+  }
+  buildCounterAddBandingRequest--;
+  return o;
+}
+
+checkAddBandingRequest(api.AddBandingRequest o) {
+  buildCounterAddBandingRequest++;
+  if (buildCounterAddBandingRequest < 3) {
+    checkBandedRange(o.bandedRange);
+  }
+  buildCounterAddBandingRequest--;
+}
+
+core.int buildCounterAddBandingResponse = 0;
+buildAddBandingResponse() {
+  var o = new api.AddBandingResponse();
+  buildCounterAddBandingResponse++;
+  if (buildCounterAddBandingResponse < 3) {
+    o.bandedRange = buildBandedRange();
+  }
+  buildCounterAddBandingResponse--;
+  return o;
+}
+
+checkAddBandingResponse(api.AddBandingResponse o) {
+  buildCounterAddBandingResponse++;
+  if (buildCounterAddBandingResponse < 3) {
+    checkBandedRange(o.bandedRange);
+  }
+  buildCounterAddBandingResponse--;
+}
+
+core.int buildCounterAddChartRequest = 0;
+buildAddChartRequest() {
+  var o = new api.AddChartRequest();
+  buildCounterAddChartRequest++;
+  if (buildCounterAddChartRequest < 3) {
+    o.chart = buildEmbeddedChart();
+  }
+  buildCounterAddChartRequest--;
+  return o;
+}
+
+checkAddChartRequest(api.AddChartRequest o) {
+  buildCounterAddChartRequest++;
+  if (buildCounterAddChartRequest < 3) {
+    checkEmbeddedChart(o.chart);
+  }
+  buildCounterAddChartRequest--;
+}
+
+core.int buildCounterAddChartResponse = 0;
+buildAddChartResponse() {
+  var o = new api.AddChartResponse();
+  buildCounterAddChartResponse++;
+  if (buildCounterAddChartResponse < 3) {
+    o.chart = buildEmbeddedChart();
+  }
+  buildCounterAddChartResponse--;
+  return o;
+}
+
+checkAddChartResponse(api.AddChartResponse o) {
+  buildCounterAddChartResponse++;
+  if (buildCounterAddChartResponse < 3) {
+    checkEmbeddedChart(o.chart);
+  }
+  buildCounterAddChartResponse--;
+}
+
+core.int buildCounterAddConditionalFormatRuleRequest = 0;
+buildAddConditionalFormatRuleRequest() {
+  var o = new api.AddConditionalFormatRuleRequest();
+  buildCounterAddConditionalFormatRuleRequest++;
+  if (buildCounterAddConditionalFormatRuleRequest < 3) {
+    o.index = 42;
+    o.rule = buildConditionalFormatRule();
+  }
+  buildCounterAddConditionalFormatRuleRequest--;
+  return o;
+}
+
+checkAddConditionalFormatRuleRequest(api.AddConditionalFormatRuleRequest o) {
+  buildCounterAddConditionalFormatRuleRequest++;
+  if (buildCounterAddConditionalFormatRuleRequest < 3) {
+    unittest.expect(o.index, unittest.equals(42));
+    checkConditionalFormatRule(o.rule);
+  }
+  buildCounterAddConditionalFormatRuleRequest--;
+}
+
+core.int buildCounterAddFilterViewRequest = 0;
+buildAddFilterViewRequest() {
+  var o = new api.AddFilterViewRequest();
+  buildCounterAddFilterViewRequest++;
+  if (buildCounterAddFilterViewRequest < 3) {
+    o.filter = buildFilterView();
+  }
+  buildCounterAddFilterViewRequest--;
+  return o;
+}
+
+checkAddFilterViewRequest(api.AddFilterViewRequest o) {
+  buildCounterAddFilterViewRequest++;
+  if (buildCounterAddFilterViewRequest < 3) {
+    checkFilterView(o.filter);
+  }
+  buildCounterAddFilterViewRequest--;
+}
+
+core.int buildCounterAddFilterViewResponse = 0;
+buildAddFilterViewResponse() {
+  var o = new api.AddFilterViewResponse();
+  buildCounterAddFilterViewResponse++;
+  if (buildCounterAddFilterViewResponse < 3) {
+    o.filter = buildFilterView();
+  }
+  buildCounterAddFilterViewResponse--;
+  return o;
+}
+
+checkAddFilterViewResponse(api.AddFilterViewResponse o) {
+  buildCounterAddFilterViewResponse++;
+  if (buildCounterAddFilterViewResponse < 3) {
+    checkFilterView(o.filter);
+  }
+  buildCounterAddFilterViewResponse--;
+}
+
+core.int buildCounterAddNamedRangeRequest = 0;
+buildAddNamedRangeRequest() {
+  var o = new api.AddNamedRangeRequest();
+  buildCounterAddNamedRangeRequest++;
+  if (buildCounterAddNamedRangeRequest < 3) {
+    o.namedRange = buildNamedRange();
+  }
+  buildCounterAddNamedRangeRequest--;
+  return o;
+}
+
+checkAddNamedRangeRequest(api.AddNamedRangeRequest o) {
+  buildCounterAddNamedRangeRequest++;
+  if (buildCounterAddNamedRangeRequest < 3) {
+    checkNamedRange(o.namedRange);
+  }
+  buildCounterAddNamedRangeRequest--;
+}
+
+core.int buildCounterAddNamedRangeResponse = 0;
+buildAddNamedRangeResponse() {
+  var o = new api.AddNamedRangeResponse();
+  buildCounterAddNamedRangeResponse++;
+  if (buildCounterAddNamedRangeResponse < 3) {
+    o.namedRange = buildNamedRange();
+  }
+  buildCounterAddNamedRangeResponse--;
+  return o;
+}
+
+checkAddNamedRangeResponse(api.AddNamedRangeResponse o) {
+  buildCounterAddNamedRangeResponse++;
+  if (buildCounterAddNamedRangeResponse < 3) {
+    checkNamedRange(o.namedRange);
+  }
+  buildCounterAddNamedRangeResponse--;
+}
+
+core.int buildCounterAddProtectedRangeRequest = 0;
+buildAddProtectedRangeRequest() {
+  var o = new api.AddProtectedRangeRequest();
+  buildCounterAddProtectedRangeRequest++;
+  if (buildCounterAddProtectedRangeRequest < 3) {
+    o.protectedRange = buildProtectedRange();
+  }
+  buildCounterAddProtectedRangeRequest--;
+  return o;
+}
+
+checkAddProtectedRangeRequest(api.AddProtectedRangeRequest o) {
+  buildCounterAddProtectedRangeRequest++;
+  if (buildCounterAddProtectedRangeRequest < 3) {
+    checkProtectedRange(o.protectedRange);
+  }
+  buildCounterAddProtectedRangeRequest--;
+}
+
+core.int buildCounterAddProtectedRangeResponse = 0;
+buildAddProtectedRangeResponse() {
+  var o = new api.AddProtectedRangeResponse();
+  buildCounterAddProtectedRangeResponse++;
+  if (buildCounterAddProtectedRangeResponse < 3) {
+    o.protectedRange = buildProtectedRange();
+  }
+  buildCounterAddProtectedRangeResponse--;
+  return o;
+}
+
+checkAddProtectedRangeResponse(api.AddProtectedRangeResponse o) {
+  buildCounterAddProtectedRangeResponse++;
+  if (buildCounterAddProtectedRangeResponse < 3) {
+    checkProtectedRange(o.protectedRange);
+  }
+  buildCounterAddProtectedRangeResponse--;
+}
+
+core.int buildCounterAddSheetRequest = 0;
+buildAddSheetRequest() {
+  var o = new api.AddSheetRequest();
+  buildCounterAddSheetRequest++;
+  if (buildCounterAddSheetRequest < 3) {
+    o.properties = buildSheetProperties();
+  }
+  buildCounterAddSheetRequest--;
+  return o;
+}
+
+checkAddSheetRequest(api.AddSheetRequest o) {
+  buildCounterAddSheetRequest++;
+  if (buildCounterAddSheetRequest < 3) {
+    checkSheetProperties(o.properties);
+  }
+  buildCounterAddSheetRequest--;
+}
+
+core.int buildCounterAddSheetResponse = 0;
+buildAddSheetResponse() {
+  var o = new api.AddSheetResponse();
+  buildCounterAddSheetResponse++;
+  if (buildCounterAddSheetResponse < 3) {
+    o.properties = buildSheetProperties();
+  }
+  buildCounterAddSheetResponse--;
+  return o;
+}
+
+checkAddSheetResponse(api.AddSheetResponse o) {
+  buildCounterAddSheetResponse++;
+  if (buildCounterAddSheetResponse < 3) {
+    checkSheetProperties(o.properties);
+  }
+  buildCounterAddSheetResponse--;
+}
+
+buildUnnamed432() {
+  var o = new core.List<api.RowData>();
+  o.add(buildRowData());
+  o.add(buildRowData());
+  return o;
+}
+
+checkUnnamed432(core.List<api.RowData> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRowData(o[0]);
+  checkRowData(o[1]);
+}
+
+core.int buildCounterAppendCellsRequest = 0;
+buildAppendCellsRequest() {
+  var o = new api.AppendCellsRequest();
+  buildCounterAppendCellsRequest++;
+  if (buildCounterAppendCellsRequest < 3) {
+    o.fields = "foo";
+    o.rows = buildUnnamed432();
+    o.sheetId = 42;
+  }
+  buildCounterAppendCellsRequest--;
+  return o;
+}
+
+checkAppendCellsRequest(api.AppendCellsRequest o) {
+  buildCounterAppendCellsRequest++;
+  if (buildCounterAppendCellsRequest < 3) {
+    unittest.expect(o.fields, unittest.equals('foo'));
+    checkUnnamed432(o.rows);
+    unittest.expect(o.sheetId, unittest.equals(42));
+  }
+  buildCounterAppendCellsRequest--;
+}
+
+core.int buildCounterAppendDimensionRequest = 0;
+buildAppendDimensionRequest() {
+  var o = new api.AppendDimensionRequest();
+  buildCounterAppendDimensionRequest++;
+  if (buildCounterAppendDimensionRequest < 3) {
+    o.dimension = "foo";
+    o.length = 42;
+    o.sheetId = 42;
+  }
+  buildCounterAppendDimensionRequest--;
+  return o;
+}
+
+checkAppendDimensionRequest(api.AppendDimensionRequest o) {
+  buildCounterAppendDimensionRequest++;
+  if (buildCounterAppendDimensionRequest < 3) {
+    unittest.expect(o.dimension, unittest.equals('foo'));
+    unittest.expect(o.length, unittest.equals(42));
+    unittest.expect(o.sheetId, unittest.equals(42));
+  }
+  buildCounterAppendDimensionRequest--;
+}
+
+core.int buildCounterAppendValuesResponse = 0;
+buildAppendValuesResponse() {
+  var o = new api.AppendValuesResponse();
+  buildCounterAppendValuesResponse++;
+  if (buildCounterAppendValuesResponse < 3) {
+    o.spreadsheetId = "foo";
+    o.tableRange = "foo";
+    o.updates = buildUpdateValuesResponse();
+  }
+  buildCounterAppendValuesResponse--;
+  return o;
+}
+
+checkAppendValuesResponse(api.AppendValuesResponse o) {
+  buildCounterAppendValuesResponse++;
+  if (buildCounterAppendValuesResponse < 3) {
+    unittest.expect(o.spreadsheetId, unittest.equals('foo'));
+    unittest.expect(o.tableRange, unittest.equals('foo'));
+    checkUpdateValuesResponse(o.updates);
+  }
+  buildCounterAppendValuesResponse--;
+}
+
+core.int buildCounterAutoFillRequest = 0;
+buildAutoFillRequest() {
+  var o = new api.AutoFillRequest();
+  buildCounterAutoFillRequest++;
+  if (buildCounterAutoFillRequest < 3) {
+    o.range = buildGridRange();
+    o.sourceAndDestination = buildSourceAndDestination();
+    o.useAlternateSeries = true;
+  }
+  buildCounterAutoFillRequest--;
+  return o;
+}
+
+checkAutoFillRequest(api.AutoFillRequest o) {
+  buildCounterAutoFillRequest++;
+  if (buildCounterAutoFillRequest < 3) {
+    checkGridRange(o.range);
+    checkSourceAndDestination(o.sourceAndDestination);
+    unittest.expect(o.useAlternateSeries, unittest.isTrue);
+  }
+  buildCounterAutoFillRequest--;
+}
+
+core.int buildCounterAutoResizeDimensionsRequest = 0;
+buildAutoResizeDimensionsRequest() {
+  var o = new api.AutoResizeDimensionsRequest();
+  buildCounterAutoResizeDimensionsRequest++;
+  if (buildCounterAutoResizeDimensionsRequest < 3) {
+    o.dimensions = buildDimensionRange();
+  }
+  buildCounterAutoResizeDimensionsRequest--;
+  return o;
+}
+
+checkAutoResizeDimensionsRequest(api.AutoResizeDimensionsRequest o) {
+  buildCounterAutoResizeDimensionsRequest++;
+  if (buildCounterAutoResizeDimensionsRequest < 3) {
+    checkDimensionRange(o.dimensions);
+  }
+  buildCounterAutoResizeDimensionsRequest--;
+}
+
+core.int buildCounterBandedRange = 0;
+buildBandedRange() {
+  var o = new api.BandedRange();
+  buildCounterBandedRange++;
+  if (buildCounterBandedRange < 3) {
+    o.bandedRangeId = 42;
+    o.columnProperties = buildBandingProperties();
+    o.range = buildGridRange();
+    o.rowProperties = buildBandingProperties();
+  }
+  buildCounterBandedRange--;
+  return o;
+}
+
+checkBandedRange(api.BandedRange o) {
+  buildCounterBandedRange++;
+  if (buildCounterBandedRange < 3) {
+    unittest.expect(o.bandedRangeId, unittest.equals(42));
+    checkBandingProperties(o.columnProperties);
+    checkGridRange(o.range);
+    checkBandingProperties(o.rowProperties);
+  }
+  buildCounterBandedRange--;
+}
+
+core.int buildCounterBandingProperties = 0;
+buildBandingProperties() {
+  var o = new api.BandingProperties();
+  buildCounterBandingProperties++;
+  if (buildCounterBandingProperties < 3) {
+    o.firstBandColor = buildColor();
+    o.footerColor = buildColor();
+    o.headerColor = buildColor();
+    o.secondBandColor = buildColor();
+  }
+  buildCounterBandingProperties--;
+  return o;
+}
+
+checkBandingProperties(api.BandingProperties o) {
+  buildCounterBandingProperties++;
+  if (buildCounterBandingProperties < 3) {
+    checkColor(o.firstBandColor);
+    checkColor(o.footerColor);
+    checkColor(o.headerColor);
+    checkColor(o.secondBandColor);
+  }
+  buildCounterBandingProperties--;
+}
+
+core.int buildCounterBasicChartAxis = 0;
+buildBasicChartAxis() {
+  var o = new api.BasicChartAxis();
+  buildCounterBasicChartAxis++;
+  if (buildCounterBasicChartAxis < 3) {
+    o.format = buildTextFormat();
+    o.position = "foo";
+    o.title = "foo";
+    o.titleTextPosition = buildTextPosition();
+  }
+  buildCounterBasicChartAxis--;
+  return o;
+}
+
+checkBasicChartAxis(api.BasicChartAxis o) {
+  buildCounterBasicChartAxis++;
+  if (buildCounterBasicChartAxis < 3) {
+    checkTextFormat(o.format);
+    unittest.expect(o.position, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+    checkTextPosition(o.titleTextPosition);
+  }
+  buildCounterBasicChartAxis--;
+}
+
+core.int buildCounterBasicChartDomain = 0;
+buildBasicChartDomain() {
+  var o = new api.BasicChartDomain();
+  buildCounterBasicChartDomain++;
+  if (buildCounterBasicChartDomain < 3) {
+    o.domain = buildChartData();
+    o.reversed = true;
+  }
+  buildCounterBasicChartDomain--;
+  return o;
+}
+
+checkBasicChartDomain(api.BasicChartDomain o) {
+  buildCounterBasicChartDomain++;
+  if (buildCounterBasicChartDomain < 3) {
+    checkChartData(o.domain);
+    unittest.expect(o.reversed, unittest.isTrue);
+  }
+  buildCounterBasicChartDomain--;
+}
+
+core.int buildCounterBasicChartSeries = 0;
+buildBasicChartSeries() {
+  var o = new api.BasicChartSeries();
+  buildCounterBasicChartSeries++;
+  if (buildCounterBasicChartSeries < 3) {
+    o.series = buildChartData();
+    o.targetAxis = "foo";
+    o.type = "foo";
+  }
+  buildCounterBasicChartSeries--;
+  return o;
+}
+
+checkBasicChartSeries(api.BasicChartSeries o) {
+  buildCounterBasicChartSeries++;
+  if (buildCounterBasicChartSeries < 3) {
+    checkChartData(o.series);
+    unittest.expect(o.targetAxis, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterBasicChartSeries--;
+}
+
+buildUnnamed433() {
+  var o = new core.List<api.BasicChartAxis>();
+  o.add(buildBasicChartAxis());
+  o.add(buildBasicChartAxis());
+  return o;
+}
+
+checkUnnamed433(core.List<api.BasicChartAxis> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBasicChartAxis(o[0]);
+  checkBasicChartAxis(o[1]);
+}
+
+buildUnnamed434() {
+  var o = new core.List<api.BasicChartDomain>();
+  o.add(buildBasicChartDomain());
+  o.add(buildBasicChartDomain());
+  return o;
+}
+
+checkUnnamed434(core.List<api.BasicChartDomain> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBasicChartDomain(o[0]);
+  checkBasicChartDomain(o[1]);
+}
+
+buildUnnamed435() {
+  var o = new core.List<api.BasicChartSeries>();
+  o.add(buildBasicChartSeries());
+  o.add(buildBasicChartSeries());
+  return o;
+}
+
+checkUnnamed435(core.List<api.BasicChartSeries> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBasicChartSeries(o[0]);
+  checkBasicChartSeries(o[1]);
+}
+
+core.int buildCounterBasicChartSpec = 0;
+buildBasicChartSpec() {
+  var o = new api.BasicChartSpec();
+  buildCounterBasicChartSpec++;
+  if (buildCounterBasicChartSpec < 3) {
+    o.axis = buildUnnamed433();
+    o.chartType = "foo";
+    o.compareMode = "foo";
+    o.domains = buildUnnamed434();
+    o.headerCount = 42;
+    o.interpolateNulls = true;
+    o.legendPosition = "foo";
+    o.lineSmoothing = true;
+    o.series = buildUnnamed435();
+    o.stackedType = "foo";
+    o.threeDimensional = true;
+  }
+  buildCounterBasicChartSpec--;
+  return o;
+}
+
+checkBasicChartSpec(api.BasicChartSpec o) {
+  buildCounterBasicChartSpec++;
+  if (buildCounterBasicChartSpec < 3) {
+    checkUnnamed433(o.axis);
+    unittest.expect(o.chartType, unittest.equals('foo'));
+    unittest.expect(o.compareMode, unittest.equals('foo'));
+    checkUnnamed434(o.domains);
+    unittest.expect(o.headerCount, unittest.equals(42));
+    unittest.expect(o.interpolateNulls, unittest.isTrue);
+    unittest.expect(o.legendPosition, unittest.equals('foo'));
+    unittest.expect(o.lineSmoothing, unittest.isTrue);
+    checkUnnamed435(o.series);
+    unittest.expect(o.stackedType, unittest.equals('foo'));
+    unittest.expect(o.threeDimensional, unittest.isTrue);
+  }
+  buildCounterBasicChartSpec--;
+}
+
+buildUnnamed436() {
+  var o = new core.Map<core.String, api.FilterCriteria>();
+  o["x"] = buildFilterCriteria();
+  o["y"] = buildFilterCriteria();
+  return o;
+}
+
+checkUnnamed436(core.Map<core.String, api.FilterCriteria> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFilterCriteria(o["x"]);
+  checkFilterCriteria(o["y"]);
+}
+
+buildUnnamed437() {
+  var o = new core.List<api.SortSpec>();
+  o.add(buildSortSpec());
+  o.add(buildSortSpec());
+  return o;
+}
+
+checkUnnamed437(core.List<api.SortSpec> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSortSpec(o[0]);
+  checkSortSpec(o[1]);
+}
+
+core.int buildCounterBasicFilter = 0;
+buildBasicFilter() {
+  var o = new api.BasicFilter();
+  buildCounterBasicFilter++;
+  if (buildCounterBasicFilter < 3) {
+    o.criteria = buildUnnamed436();
+    o.range = buildGridRange();
+    o.sortSpecs = buildUnnamed437();
+  }
+  buildCounterBasicFilter--;
+  return o;
+}
+
+checkBasicFilter(api.BasicFilter o) {
+  buildCounterBasicFilter++;
+  if (buildCounterBasicFilter < 3) {
+    checkUnnamed436(o.criteria);
+    checkGridRange(o.range);
+    checkUnnamed437(o.sortSpecs);
+  }
+  buildCounterBasicFilter--;
+}
+
+buildUnnamed438() {
+  var o = new core.List<api.DataFilter>();
+  o.add(buildDataFilter());
+  o.add(buildDataFilter());
+  return o;
+}
+
+checkUnnamed438(core.List<api.DataFilter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataFilter(o[0]);
+  checkDataFilter(o[1]);
+}
+
+core.int buildCounterBatchClearValuesByDataFilterRequest = 0;
+buildBatchClearValuesByDataFilterRequest() {
+  var o = new api.BatchClearValuesByDataFilterRequest();
+  buildCounterBatchClearValuesByDataFilterRequest++;
+  if (buildCounterBatchClearValuesByDataFilterRequest < 3) {
+    o.dataFilters = buildUnnamed438();
+  }
+  buildCounterBatchClearValuesByDataFilterRequest--;
+  return o;
+}
+
+checkBatchClearValuesByDataFilterRequest(
+    api.BatchClearValuesByDataFilterRequest o) {
+  buildCounterBatchClearValuesByDataFilterRequest++;
+  if (buildCounterBatchClearValuesByDataFilterRequest < 3) {
+    checkUnnamed438(o.dataFilters);
+  }
+  buildCounterBatchClearValuesByDataFilterRequest--;
+}
+
+buildUnnamed439() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed439(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBatchClearValuesByDataFilterResponse = 0;
+buildBatchClearValuesByDataFilterResponse() {
+  var o = new api.BatchClearValuesByDataFilterResponse();
+  buildCounterBatchClearValuesByDataFilterResponse++;
+  if (buildCounterBatchClearValuesByDataFilterResponse < 3) {
+    o.clearedRanges = buildUnnamed439();
+    o.spreadsheetId = "foo";
+  }
+  buildCounterBatchClearValuesByDataFilterResponse--;
+  return o;
+}
+
+checkBatchClearValuesByDataFilterResponse(
+    api.BatchClearValuesByDataFilterResponse o) {
+  buildCounterBatchClearValuesByDataFilterResponse++;
+  if (buildCounterBatchClearValuesByDataFilterResponse < 3) {
+    checkUnnamed439(o.clearedRanges);
+    unittest.expect(o.spreadsheetId, unittest.equals('foo'));
+  }
+  buildCounterBatchClearValuesByDataFilterResponse--;
+}
+
+buildUnnamed440() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed440(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBatchClearValuesRequest = 0;
+buildBatchClearValuesRequest() {
+  var o = new api.BatchClearValuesRequest();
+  buildCounterBatchClearValuesRequest++;
+  if (buildCounterBatchClearValuesRequest < 3) {
+    o.ranges = buildUnnamed440();
+  }
+  buildCounterBatchClearValuesRequest--;
+  return o;
+}
+
+checkBatchClearValuesRequest(api.BatchClearValuesRequest o) {
+  buildCounterBatchClearValuesRequest++;
+  if (buildCounterBatchClearValuesRequest < 3) {
+    checkUnnamed440(o.ranges);
+  }
+  buildCounterBatchClearValuesRequest--;
+}
+
+buildUnnamed441() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed441(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBatchClearValuesResponse = 0;
+buildBatchClearValuesResponse() {
+  var o = new api.BatchClearValuesResponse();
+  buildCounterBatchClearValuesResponse++;
+  if (buildCounterBatchClearValuesResponse < 3) {
+    o.clearedRanges = buildUnnamed441();
+    o.spreadsheetId = "foo";
+  }
+  buildCounterBatchClearValuesResponse--;
+  return o;
+}
+
+checkBatchClearValuesResponse(api.BatchClearValuesResponse o) {
+  buildCounterBatchClearValuesResponse++;
+  if (buildCounterBatchClearValuesResponse < 3) {
+    checkUnnamed441(o.clearedRanges);
+    unittest.expect(o.spreadsheetId, unittest.equals('foo'));
+  }
+  buildCounterBatchClearValuesResponse--;
+}
+
+buildUnnamed442() {
+  var o = new core.List<api.DataFilter>();
+  o.add(buildDataFilter());
+  o.add(buildDataFilter());
+  return o;
+}
+
+checkUnnamed442(core.List<api.DataFilter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataFilter(o[0]);
+  checkDataFilter(o[1]);
+}
+
+core.int buildCounterBatchGetValuesByDataFilterRequest = 0;
+buildBatchGetValuesByDataFilterRequest() {
+  var o = new api.BatchGetValuesByDataFilterRequest();
+  buildCounterBatchGetValuesByDataFilterRequest++;
+  if (buildCounterBatchGetValuesByDataFilterRequest < 3) {
+    o.dataFilters = buildUnnamed442();
+    o.dateTimeRenderOption = "foo";
+    o.majorDimension = "foo";
+    o.valueRenderOption = "foo";
+  }
+  buildCounterBatchGetValuesByDataFilterRequest--;
+  return o;
+}
+
+checkBatchGetValuesByDataFilterRequest(
+    api.BatchGetValuesByDataFilterRequest o) {
+  buildCounterBatchGetValuesByDataFilterRequest++;
+  if (buildCounterBatchGetValuesByDataFilterRequest < 3) {
+    checkUnnamed442(o.dataFilters);
+    unittest.expect(o.dateTimeRenderOption, unittest.equals('foo'));
+    unittest.expect(o.majorDimension, unittest.equals('foo'));
+    unittest.expect(o.valueRenderOption, unittest.equals('foo'));
+  }
+  buildCounterBatchGetValuesByDataFilterRequest--;
+}
+
+buildUnnamed443() {
+  var o = new core.List<api.MatchedValueRange>();
+  o.add(buildMatchedValueRange());
+  o.add(buildMatchedValueRange());
+  return o;
+}
+
+checkUnnamed443(core.List<api.MatchedValueRange> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMatchedValueRange(o[0]);
+  checkMatchedValueRange(o[1]);
+}
+
+core.int buildCounterBatchGetValuesByDataFilterResponse = 0;
+buildBatchGetValuesByDataFilterResponse() {
+  var o = new api.BatchGetValuesByDataFilterResponse();
+  buildCounterBatchGetValuesByDataFilterResponse++;
+  if (buildCounterBatchGetValuesByDataFilterResponse < 3) {
+    o.spreadsheetId = "foo";
+    o.valueRanges = buildUnnamed443();
+  }
+  buildCounterBatchGetValuesByDataFilterResponse--;
+  return o;
+}
+
+checkBatchGetValuesByDataFilterResponse(
+    api.BatchGetValuesByDataFilterResponse o) {
+  buildCounterBatchGetValuesByDataFilterResponse++;
+  if (buildCounterBatchGetValuesByDataFilterResponse < 3) {
+    unittest.expect(o.spreadsheetId, unittest.equals('foo'));
+    checkUnnamed443(o.valueRanges);
+  }
+  buildCounterBatchGetValuesByDataFilterResponse--;
+}
+
+buildUnnamed444() {
+  var o = new core.List<api.ValueRange>();
+  o.add(buildValueRange());
+  o.add(buildValueRange());
+  return o;
+}
+
+checkUnnamed444(core.List<api.ValueRange> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkValueRange(o[0]);
+  checkValueRange(o[1]);
+}
+
+core.int buildCounterBatchGetValuesResponse = 0;
+buildBatchGetValuesResponse() {
+  var o = new api.BatchGetValuesResponse();
+  buildCounterBatchGetValuesResponse++;
+  if (buildCounterBatchGetValuesResponse < 3) {
+    o.spreadsheetId = "foo";
+    o.valueRanges = buildUnnamed444();
+  }
+  buildCounterBatchGetValuesResponse--;
+  return o;
+}
+
+checkBatchGetValuesResponse(api.BatchGetValuesResponse o) {
+  buildCounterBatchGetValuesResponse++;
+  if (buildCounterBatchGetValuesResponse < 3) {
+    unittest.expect(o.spreadsheetId, unittest.equals('foo'));
+    checkUnnamed444(o.valueRanges);
+  }
+  buildCounterBatchGetValuesResponse--;
+}
+
+buildUnnamed445() {
+  var o = new core.List<api.Request>();
+  o.add(buildRequest());
+  o.add(buildRequest());
+  return o;
+}
+
+checkUnnamed445(core.List<api.Request> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRequest(o[0]);
+  checkRequest(o[1]);
+}
+
+buildUnnamed446() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed446(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBatchUpdateSpreadsheetRequest = 0;
+buildBatchUpdateSpreadsheetRequest() {
+  var o = new api.BatchUpdateSpreadsheetRequest();
+  buildCounterBatchUpdateSpreadsheetRequest++;
+  if (buildCounterBatchUpdateSpreadsheetRequest < 3) {
+    o.includeSpreadsheetInResponse = true;
+    o.requests = buildUnnamed445();
+    o.responseIncludeGridData = true;
+    o.responseRanges = buildUnnamed446();
+  }
+  buildCounterBatchUpdateSpreadsheetRequest--;
+  return o;
+}
+
+checkBatchUpdateSpreadsheetRequest(api.BatchUpdateSpreadsheetRequest o) {
+  buildCounterBatchUpdateSpreadsheetRequest++;
+  if (buildCounterBatchUpdateSpreadsheetRequest < 3) {
+    unittest.expect(o.includeSpreadsheetInResponse, unittest.isTrue);
+    checkUnnamed445(o.requests);
+    unittest.expect(o.responseIncludeGridData, unittest.isTrue);
+    checkUnnamed446(o.responseRanges);
+  }
+  buildCounterBatchUpdateSpreadsheetRequest--;
+}
+
+buildUnnamed447() {
+  var o = new core.List<api.Response>();
+  o.add(buildResponse());
+  o.add(buildResponse());
+  return o;
+}
+
+checkUnnamed447(core.List<api.Response> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkResponse(o[0]);
+  checkResponse(o[1]);
+}
+
+core.int buildCounterBatchUpdateSpreadsheetResponse = 0;
+buildBatchUpdateSpreadsheetResponse() {
+  var o = new api.BatchUpdateSpreadsheetResponse();
+  buildCounterBatchUpdateSpreadsheetResponse++;
+  if (buildCounterBatchUpdateSpreadsheetResponse < 3) {
+    o.replies = buildUnnamed447();
+    o.spreadsheetId = "foo";
+    o.updatedSpreadsheet = buildSpreadsheet();
+  }
+  buildCounterBatchUpdateSpreadsheetResponse--;
+  return o;
+}
+
+checkBatchUpdateSpreadsheetResponse(api.BatchUpdateSpreadsheetResponse o) {
+  buildCounterBatchUpdateSpreadsheetResponse++;
+  if (buildCounterBatchUpdateSpreadsheetResponse < 3) {
+    checkUnnamed447(o.replies);
+    unittest.expect(o.spreadsheetId, unittest.equals('foo'));
+    checkSpreadsheet(o.updatedSpreadsheet);
+  }
+  buildCounterBatchUpdateSpreadsheetResponse--;
+}
+
+buildUnnamed448() {
+  var o = new core.List<api.DataFilterValueRange>();
+  o.add(buildDataFilterValueRange());
+  o.add(buildDataFilterValueRange());
+  return o;
+}
+
+checkUnnamed448(core.List<api.DataFilterValueRange> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataFilterValueRange(o[0]);
+  checkDataFilterValueRange(o[1]);
+}
+
+core.int buildCounterBatchUpdateValuesByDataFilterRequest = 0;
+buildBatchUpdateValuesByDataFilterRequest() {
+  var o = new api.BatchUpdateValuesByDataFilterRequest();
+  buildCounterBatchUpdateValuesByDataFilterRequest++;
+  if (buildCounterBatchUpdateValuesByDataFilterRequest < 3) {
+    o.data = buildUnnamed448();
+    o.includeValuesInResponse = true;
+    o.responseDateTimeRenderOption = "foo";
+    o.responseValueRenderOption = "foo";
+    o.valueInputOption = "foo";
+  }
+  buildCounterBatchUpdateValuesByDataFilterRequest--;
+  return o;
+}
+
+checkBatchUpdateValuesByDataFilterRequest(
+    api.BatchUpdateValuesByDataFilterRequest o) {
+  buildCounterBatchUpdateValuesByDataFilterRequest++;
+  if (buildCounterBatchUpdateValuesByDataFilterRequest < 3) {
+    checkUnnamed448(o.data);
+    unittest.expect(o.includeValuesInResponse, unittest.isTrue);
+    unittest.expect(o.responseDateTimeRenderOption, unittest.equals('foo'));
+    unittest.expect(o.responseValueRenderOption, unittest.equals('foo'));
+    unittest.expect(o.valueInputOption, unittest.equals('foo'));
+  }
+  buildCounterBatchUpdateValuesByDataFilterRequest--;
+}
+
+buildUnnamed449() {
+  var o = new core.List<api.UpdateValuesByDataFilterResponse>();
+  o.add(buildUpdateValuesByDataFilterResponse());
+  o.add(buildUpdateValuesByDataFilterResponse());
+  return o;
+}
+
+checkUnnamed449(core.List<api.UpdateValuesByDataFilterResponse> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUpdateValuesByDataFilterResponse(o[0]);
+  checkUpdateValuesByDataFilterResponse(o[1]);
+}
+
+core.int buildCounterBatchUpdateValuesByDataFilterResponse = 0;
+buildBatchUpdateValuesByDataFilterResponse() {
+  var o = new api.BatchUpdateValuesByDataFilterResponse();
+  buildCounterBatchUpdateValuesByDataFilterResponse++;
+  if (buildCounterBatchUpdateValuesByDataFilterResponse < 3) {
+    o.responses = buildUnnamed449();
+    o.spreadsheetId = "foo";
+    o.totalUpdatedCells = 42;
+    o.totalUpdatedColumns = 42;
+    o.totalUpdatedRows = 42;
+    o.totalUpdatedSheets = 42;
+  }
+  buildCounterBatchUpdateValuesByDataFilterResponse--;
+  return o;
+}
+
+checkBatchUpdateValuesByDataFilterResponse(
+    api.BatchUpdateValuesByDataFilterResponse o) {
+  buildCounterBatchUpdateValuesByDataFilterResponse++;
+  if (buildCounterBatchUpdateValuesByDataFilterResponse < 3) {
+    checkUnnamed449(o.responses);
+    unittest.expect(o.spreadsheetId, unittest.equals('foo'));
+    unittest.expect(o.totalUpdatedCells, unittest.equals(42));
+    unittest.expect(o.totalUpdatedColumns, unittest.equals(42));
+    unittest.expect(o.totalUpdatedRows, unittest.equals(42));
+    unittest.expect(o.totalUpdatedSheets, unittest.equals(42));
+  }
+  buildCounterBatchUpdateValuesByDataFilterResponse--;
+}
+
+buildUnnamed450() {
+  var o = new core.List<api.ValueRange>();
+  o.add(buildValueRange());
+  o.add(buildValueRange());
+  return o;
+}
+
+checkUnnamed450(core.List<api.ValueRange> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkValueRange(o[0]);
+  checkValueRange(o[1]);
+}
+
+core.int buildCounterBatchUpdateValuesRequest = 0;
+buildBatchUpdateValuesRequest() {
+  var o = new api.BatchUpdateValuesRequest();
+  buildCounterBatchUpdateValuesRequest++;
+  if (buildCounterBatchUpdateValuesRequest < 3) {
+    o.data = buildUnnamed450();
+    o.includeValuesInResponse = true;
+    o.responseDateTimeRenderOption = "foo";
+    o.responseValueRenderOption = "foo";
+    o.valueInputOption = "foo";
+  }
+  buildCounterBatchUpdateValuesRequest--;
+  return o;
+}
+
+checkBatchUpdateValuesRequest(api.BatchUpdateValuesRequest o) {
+  buildCounterBatchUpdateValuesRequest++;
+  if (buildCounterBatchUpdateValuesRequest < 3) {
+    checkUnnamed450(o.data);
+    unittest.expect(o.includeValuesInResponse, unittest.isTrue);
+    unittest.expect(o.responseDateTimeRenderOption, unittest.equals('foo'));
+    unittest.expect(o.responseValueRenderOption, unittest.equals('foo'));
+    unittest.expect(o.valueInputOption, unittest.equals('foo'));
+  }
+  buildCounterBatchUpdateValuesRequest--;
+}
+
+buildUnnamed451() {
+  var o = new core.List<api.UpdateValuesResponse>();
+  o.add(buildUpdateValuesResponse());
+  o.add(buildUpdateValuesResponse());
+  return o;
+}
+
+checkUnnamed451(core.List<api.UpdateValuesResponse> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUpdateValuesResponse(o[0]);
+  checkUpdateValuesResponse(o[1]);
+}
+
+core.int buildCounterBatchUpdateValuesResponse = 0;
+buildBatchUpdateValuesResponse() {
+  var o = new api.BatchUpdateValuesResponse();
+  buildCounterBatchUpdateValuesResponse++;
+  if (buildCounterBatchUpdateValuesResponse < 3) {
+    o.responses = buildUnnamed451();
+    o.spreadsheetId = "foo";
+    o.totalUpdatedCells = 42;
+    o.totalUpdatedColumns = 42;
+    o.totalUpdatedRows = 42;
+    o.totalUpdatedSheets = 42;
+  }
+  buildCounterBatchUpdateValuesResponse--;
+  return o;
+}
+
+checkBatchUpdateValuesResponse(api.BatchUpdateValuesResponse o) {
+  buildCounterBatchUpdateValuesResponse++;
+  if (buildCounterBatchUpdateValuesResponse < 3) {
+    checkUnnamed451(o.responses);
+    unittest.expect(o.spreadsheetId, unittest.equals('foo'));
+    unittest.expect(o.totalUpdatedCells, unittest.equals(42));
+    unittest.expect(o.totalUpdatedColumns, unittest.equals(42));
+    unittest.expect(o.totalUpdatedRows, unittest.equals(42));
+    unittest.expect(o.totalUpdatedSheets, unittest.equals(42));
+  }
+  buildCounterBatchUpdateValuesResponse--;
+}
+
+buildUnnamed452() {
+  var o = new core.List<api.ConditionValue>();
+  o.add(buildConditionValue());
+  o.add(buildConditionValue());
+  return o;
+}
+
+checkUnnamed452(core.List<api.ConditionValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkConditionValue(o[0]);
+  checkConditionValue(o[1]);
+}
+
+core.int buildCounterBooleanCondition = 0;
+buildBooleanCondition() {
+  var o = new api.BooleanCondition();
+  buildCounterBooleanCondition++;
+  if (buildCounterBooleanCondition < 3) {
+    o.type = "foo";
+    o.values = buildUnnamed452();
+  }
+  buildCounterBooleanCondition--;
+  return o;
+}
+
+checkBooleanCondition(api.BooleanCondition o) {
+  buildCounterBooleanCondition++;
+  if (buildCounterBooleanCondition < 3) {
+    unittest.expect(o.type, unittest.equals('foo'));
+    checkUnnamed452(o.values);
+  }
+  buildCounterBooleanCondition--;
+}
+
+core.int buildCounterBooleanRule = 0;
+buildBooleanRule() {
+  var o = new api.BooleanRule();
+  buildCounterBooleanRule++;
+  if (buildCounterBooleanRule < 3) {
+    o.condition = buildBooleanCondition();
+    o.format = buildCellFormat();
+  }
+  buildCounterBooleanRule--;
+  return o;
+}
+
+checkBooleanRule(api.BooleanRule o) {
+  buildCounterBooleanRule++;
+  if (buildCounterBooleanRule < 3) {
+    checkBooleanCondition(o.condition);
+    checkCellFormat(o.format);
+  }
+  buildCounterBooleanRule--;
+}
+
+core.int buildCounterBorder = 0;
+buildBorder() {
+  var o = new api.Border();
+  buildCounterBorder++;
+  if (buildCounterBorder < 3) {
+    o.color = buildColor();
+    o.style = "foo";
+    o.width = 42;
+  }
+  buildCounterBorder--;
+  return o;
+}
+
+checkBorder(api.Border o) {
+  buildCounterBorder++;
+  if (buildCounterBorder < 3) {
+    checkColor(o.color);
+    unittest.expect(o.style, unittest.equals('foo'));
+    unittest.expect(o.width, unittest.equals(42));
+  }
+  buildCounterBorder--;
+}
+
+core.int buildCounterBorders = 0;
+buildBorders() {
+  var o = new api.Borders();
+  buildCounterBorders++;
+  if (buildCounterBorders < 3) {
+    o.bottom = buildBorder();
+    o.left = buildBorder();
+    o.right = buildBorder();
+    o.top = buildBorder();
+  }
+  buildCounterBorders--;
+  return o;
+}
+
+checkBorders(api.Borders o) {
+  buildCounterBorders++;
+  if (buildCounterBorders < 3) {
+    checkBorder(o.bottom);
+    checkBorder(o.left);
+    checkBorder(o.right);
+    checkBorder(o.top);
+  }
+  buildCounterBorders--;
+}
+
+core.int buildCounterBubbleChartSpec = 0;
+buildBubbleChartSpec() {
+  var o = new api.BubbleChartSpec();
+  buildCounterBubbleChartSpec++;
+  if (buildCounterBubbleChartSpec < 3) {
+    o.bubbleBorderColor = buildColor();
+    o.bubbleLabels = buildChartData();
+    o.bubbleMaxRadiusSize = 42;
+    o.bubbleMinRadiusSize = 42;
+    o.bubbleOpacity = 42.0;
+    o.bubbleSizes = buildChartData();
+    o.bubbleTextStyle = buildTextFormat();
+    o.domain = buildChartData();
+    o.groupIds = buildChartData();
+    o.legendPosition = "foo";
+    o.series = buildChartData();
+  }
+  buildCounterBubbleChartSpec--;
+  return o;
+}
+
+checkBubbleChartSpec(api.BubbleChartSpec o) {
+  buildCounterBubbleChartSpec++;
+  if (buildCounterBubbleChartSpec < 3) {
+    checkColor(o.bubbleBorderColor);
+    checkChartData(o.bubbleLabels);
+    unittest.expect(o.bubbleMaxRadiusSize, unittest.equals(42));
+    unittest.expect(o.bubbleMinRadiusSize, unittest.equals(42));
+    unittest.expect(o.bubbleOpacity, unittest.equals(42.0));
+    checkChartData(o.bubbleSizes);
+    checkTextFormat(o.bubbleTextStyle);
+    checkChartData(o.domain);
+    checkChartData(o.groupIds);
+    unittest.expect(o.legendPosition, unittest.equals('foo'));
+    checkChartData(o.series);
+  }
+  buildCounterBubbleChartSpec--;
+}
+
+buildUnnamed453() {
+  var o = new core.List<api.CandlestickData>();
+  o.add(buildCandlestickData());
+  o.add(buildCandlestickData());
+  return o;
+}
+
+checkUnnamed453(core.List<api.CandlestickData> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCandlestickData(o[0]);
+  checkCandlestickData(o[1]);
+}
+
+core.int buildCounterCandlestickChartSpec = 0;
+buildCandlestickChartSpec() {
+  var o = new api.CandlestickChartSpec();
+  buildCounterCandlestickChartSpec++;
+  if (buildCounterCandlestickChartSpec < 3) {
+    o.data = buildUnnamed453();
+    o.domain = buildCandlestickDomain();
+  }
+  buildCounterCandlestickChartSpec--;
+  return o;
+}
+
+checkCandlestickChartSpec(api.CandlestickChartSpec o) {
+  buildCounterCandlestickChartSpec++;
+  if (buildCounterCandlestickChartSpec < 3) {
+    checkUnnamed453(o.data);
+    checkCandlestickDomain(o.domain);
+  }
+  buildCounterCandlestickChartSpec--;
+}
+
+core.int buildCounterCandlestickData = 0;
+buildCandlestickData() {
+  var o = new api.CandlestickData();
+  buildCounterCandlestickData++;
+  if (buildCounterCandlestickData < 3) {
+    o.closeSeries = buildCandlestickSeries();
+    o.highSeries = buildCandlestickSeries();
+    o.lowSeries = buildCandlestickSeries();
+    o.openSeries = buildCandlestickSeries();
+  }
+  buildCounterCandlestickData--;
+  return o;
+}
+
+checkCandlestickData(api.CandlestickData o) {
+  buildCounterCandlestickData++;
+  if (buildCounterCandlestickData < 3) {
+    checkCandlestickSeries(o.closeSeries);
+    checkCandlestickSeries(o.highSeries);
+    checkCandlestickSeries(o.lowSeries);
+    checkCandlestickSeries(o.openSeries);
+  }
+  buildCounterCandlestickData--;
+}
+
+core.int buildCounterCandlestickDomain = 0;
+buildCandlestickDomain() {
+  var o = new api.CandlestickDomain();
+  buildCounterCandlestickDomain++;
+  if (buildCounterCandlestickDomain < 3) {
+    o.data = buildChartData();
+    o.reversed = true;
+  }
+  buildCounterCandlestickDomain--;
+  return o;
+}
+
+checkCandlestickDomain(api.CandlestickDomain o) {
+  buildCounterCandlestickDomain++;
+  if (buildCounterCandlestickDomain < 3) {
+    checkChartData(o.data);
+    unittest.expect(o.reversed, unittest.isTrue);
+  }
+  buildCounterCandlestickDomain--;
+}
+
+core.int buildCounterCandlestickSeries = 0;
+buildCandlestickSeries() {
+  var o = new api.CandlestickSeries();
+  buildCounterCandlestickSeries++;
+  if (buildCounterCandlestickSeries < 3) {
+    o.data = buildChartData();
+  }
+  buildCounterCandlestickSeries--;
+  return o;
+}
+
+checkCandlestickSeries(api.CandlestickSeries o) {
+  buildCounterCandlestickSeries++;
+  if (buildCounterCandlestickSeries < 3) {
+    checkChartData(o.data);
+  }
+  buildCounterCandlestickSeries--;
+}
+
+buildUnnamed454() {
+  var o = new core.List<api.TextFormatRun>();
+  o.add(buildTextFormatRun());
+  o.add(buildTextFormatRun());
+  return o;
+}
+
+checkUnnamed454(core.List<api.TextFormatRun> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTextFormatRun(o[0]);
+  checkTextFormatRun(o[1]);
+}
+
+core.int buildCounterCellData = 0;
+buildCellData() {
+  var o = new api.CellData();
+  buildCounterCellData++;
+  if (buildCounterCellData < 3) {
+    o.dataValidation = buildDataValidationRule();
+    o.effectiveFormat = buildCellFormat();
+    o.effectiveValue = buildExtendedValue();
+    o.formattedValue = "foo";
+    o.hyperlink = "foo";
+    o.note = "foo";
+    o.pivotTable = buildPivotTable();
+    o.textFormatRuns = buildUnnamed454();
+    o.userEnteredFormat = buildCellFormat();
+    o.userEnteredValue = buildExtendedValue();
+  }
+  buildCounterCellData--;
+  return o;
+}
+
+checkCellData(api.CellData o) {
+  buildCounterCellData++;
+  if (buildCounterCellData < 3) {
+    checkDataValidationRule(o.dataValidation);
+    checkCellFormat(o.effectiveFormat);
+    checkExtendedValue(o.effectiveValue);
+    unittest.expect(o.formattedValue, unittest.equals('foo'));
+    unittest.expect(o.hyperlink, unittest.equals('foo'));
+    unittest.expect(o.note, unittest.equals('foo'));
+    checkPivotTable(o.pivotTable);
+    checkUnnamed454(o.textFormatRuns);
+    checkCellFormat(o.userEnteredFormat);
+    checkExtendedValue(o.userEnteredValue);
+  }
+  buildCounterCellData--;
+}
+
+core.int buildCounterCellFormat = 0;
+buildCellFormat() {
+  var o = new api.CellFormat();
+  buildCounterCellFormat++;
+  if (buildCounterCellFormat < 3) {
+    o.backgroundColor = buildColor();
+    o.borders = buildBorders();
+    o.horizontalAlignment = "foo";
+    o.hyperlinkDisplayType = "foo";
+    o.numberFormat = buildNumberFormat();
+    o.padding = buildPadding();
+    o.textDirection = "foo";
+    o.textFormat = buildTextFormat();
+    o.textRotation = buildTextRotation();
+    o.verticalAlignment = "foo";
+    o.wrapStrategy = "foo";
+  }
+  buildCounterCellFormat--;
+  return o;
+}
+
+checkCellFormat(api.CellFormat o) {
+  buildCounterCellFormat++;
+  if (buildCounterCellFormat < 3) {
+    checkColor(o.backgroundColor);
+    checkBorders(o.borders);
+    unittest.expect(o.horizontalAlignment, unittest.equals('foo'));
+    unittest.expect(o.hyperlinkDisplayType, unittest.equals('foo'));
+    checkNumberFormat(o.numberFormat);
+    checkPadding(o.padding);
+    unittest.expect(o.textDirection, unittest.equals('foo'));
+    checkTextFormat(o.textFormat);
+    checkTextRotation(o.textRotation);
+    unittest.expect(o.verticalAlignment, unittest.equals('foo'));
+    unittest.expect(o.wrapStrategy, unittest.equals('foo'));
+  }
+  buildCounterCellFormat--;
+}
+
+core.int buildCounterChartData = 0;
+buildChartData() {
+  var o = new api.ChartData();
+  buildCounterChartData++;
+  if (buildCounterChartData < 3) {
+    o.sourceRange = buildChartSourceRange();
+  }
+  buildCounterChartData--;
+  return o;
+}
+
+checkChartData(api.ChartData o) {
+  buildCounterChartData++;
+  if (buildCounterChartData < 3) {
+    checkChartSourceRange(o.sourceRange);
+  }
+  buildCounterChartData--;
+}
+
+buildUnnamed455() {
+  var o = new core.List<api.GridRange>();
+  o.add(buildGridRange());
+  o.add(buildGridRange());
+  return o;
+}
+
+checkUnnamed455(core.List<api.GridRange> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGridRange(o[0]);
+  checkGridRange(o[1]);
+}
+
+core.int buildCounterChartSourceRange = 0;
+buildChartSourceRange() {
+  var o = new api.ChartSourceRange();
+  buildCounterChartSourceRange++;
+  if (buildCounterChartSourceRange < 3) {
+    o.sources = buildUnnamed455();
+  }
+  buildCounterChartSourceRange--;
+  return o;
+}
+
+checkChartSourceRange(api.ChartSourceRange o) {
+  buildCounterChartSourceRange++;
+  if (buildCounterChartSourceRange < 3) {
+    checkUnnamed455(o.sources);
+  }
+  buildCounterChartSourceRange--;
+}
+
+core.int buildCounterChartSpec = 0;
+buildChartSpec() {
+  var o = new api.ChartSpec();
+  buildCounterChartSpec++;
+  if (buildCounterChartSpec < 3) {
+    o.altText = "foo";
+    o.backgroundColor = buildColor();
+    o.basicChart = buildBasicChartSpec();
+    o.bubbleChart = buildBubbleChartSpec();
+    o.candlestickChart = buildCandlestickChartSpec();
+    o.fontName = "foo";
+    o.hiddenDimensionStrategy = "foo";
+    o.histogramChart = buildHistogramChartSpec();
+    o.maximized = true;
+    o.orgChart = buildOrgChartSpec();
+    o.pieChart = buildPieChartSpec();
+    o.subtitle = "foo";
+    o.subtitleTextFormat = buildTextFormat();
+    o.subtitleTextPosition = buildTextPosition();
+    o.title = "foo";
+    o.titleTextFormat = buildTextFormat();
+    o.titleTextPosition = buildTextPosition();
+  }
+  buildCounterChartSpec--;
+  return o;
+}
+
+checkChartSpec(api.ChartSpec o) {
+  buildCounterChartSpec++;
+  if (buildCounterChartSpec < 3) {
+    unittest.expect(o.altText, unittest.equals('foo'));
+    checkColor(o.backgroundColor);
+    checkBasicChartSpec(o.basicChart);
+    checkBubbleChartSpec(o.bubbleChart);
+    checkCandlestickChartSpec(o.candlestickChart);
+    unittest.expect(o.fontName, unittest.equals('foo'));
+    unittest.expect(o.hiddenDimensionStrategy, unittest.equals('foo'));
+    checkHistogramChartSpec(o.histogramChart);
+    unittest.expect(o.maximized, unittest.isTrue);
+    checkOrgChartSpec(o.orgChart);
+    checkPieChartSpec(o.pieChart);
+    unittest.expect(o.subtitle, unittest.equals('foo'));
+    checkTextFormat(o.subtitleTextFormat);
+    checkTextPosition(o.subtitleTextPosition);
+    unittest.expect(o.title, unittest.equals('foo'));
+    checkTextFormat(o.titleTextFormat);
+    checkTextPosition(o.titleTextPosition);
+  }
+  buildCounterChartSpec--;
+}
+
+core.int buildCounterClearBasicFilterRequest = 0;
+buildClearBasicFilterRequest() {
+  var o = new api.ClearBasicFilterRequest();
+  buildCounterClearBasicFilterRequest++;
+  if (buildCounterClearBasicFilterRequest < 3) {
+    o.sheetId = 42;
+  }
+  buildCounterClearBasicFilterRequest--;
+  return o;
+}
+
+checkClearBasicFilterRequest(api.ClearBasicFilterRequest o) {
+  buildCounterClearBasicFilterRequest++;
+  if (buildCounterClearBasicFilterRequest < 3) {
+    unittest.expect(o.sheetId, unittest.equals(42));
+  }
+  buildCounterClearBasicFilterRequest--;
+}
+
+core.int buildCounterClearValuesRequest = 0;
+buildClearValuesRequest() {
+  var o = new api.ClearValuesRequest();
+  buildCounterClearValuesRequest++;
+  if (buildCounterClearValuesRequest < 3) {}
+  buildCounterClearValuesRequest--;
+  return o;
+}
+
+checkClearValuesRequest(api.ClearValuesRequest o) {
+  buildCounterClearValuesRequest++;
+  if (buildCounterClearValuesRequest < 3) {}
+  buildCounterClearValuesRequest--;
+}
+
+core.int buildCounterClearValuesResponse = 0;
+buildClearValuesResponse() {
+  var o = new api.ClearValuesResponse();
+  buildCounterClearValuesResponse++;
+  if (buildCounterClearValuesResponse < 3) {
+    o.clearedRange = "foo";
+    o.spreadsheetId = "foo";
+  }
+  buildCounterClearValuesResponse--;
+  return o;
+}
+
+checkClearValuesResponse(api.ClearValuesResponse o) {
+  buildCounterClearValuesResponse++;
+  if (buildCounterClearValuesResponse < 3) {
+    unittest.expect(o.clearedRange, unittest.equals('foo'));
+    unittest.expect(o.spreadsheetId, unittest.equals('foo'));
+  }
+  buildCounterClearValuesResponse--;
+}
+
+core.int buildCounterColor = 0;
+buildColor() {
+  var o = new api.Color();
+  buildCounterColor++;
+  if (buildCounterColor < 3) {
+    o.alpha = 42.0;
+    o.blue = 42.0;
+    o.green = 42.0;
+    o.red = 42.0;
+  }
+  buildCounterColor--;
+  return o;
+}
+
+checkColor(api.Color o) {
+  buildCounterColor++;
+  if (buildCounterColor < 3) {
+    unittest.expect(o.alpha, unittest.equals(42.0));
+    unittest.expect(o.blue, unittest.equals(42.0));
+    unittest.expect(o.green, unittest.equals(42.0));
+    unittest.expect(o.red, unittest.equals(42.0));
+  }
+  buildCounterColor--;
+}
+
+core.int buildCounterConditionValue = 0;
+buildConditionValue() {
+  var o = new api.ConditionValue();
+  buildCounterConditionValue++;
+  if (buildCounterConditionValue < 3) {
+    o.relativeDate = "foo";
+    o.userEnteredValue = "foo";
+  }
+  buildCounterConditionValue--;
+  return o;
+}
+
+checkConditionValue(api.ConditionValue o) {
+  buildCounterConditionValue++;
+  if (buildCounterConditionValue < 3) {
+    unittest.expect(o.relativeDate, unittest.equals('foo'));
+    unittest.expect(o.userEnteredValue, unittest.equals('foo'));
+  }
+  buildCounterConditionValue--;
+}
+
+buildUnnamed456() {
+  var o = new core.List<api.GridRange>();
+  o.add(buildGridRange());
+  o.add(buildGridRange());
+  return o;
+}
+
+checkUnnamed456(core.List<api.GridRange> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGridRange(o[0]);
+  checkGridRange(o[1]);
+}
+
+core.int buildCounterConditionalFormatRule = 0;
+buildConditionalFormatRule() {
+  var o = new api.ConditionalFormatRule();
+  buildCounterConditionalFormatRule++;
+  if (buildCounterConditionalFormatRule < 3) {
+    o.booleanRule = buildBooleanRule();
+    o.gradientRule = buildGradientRule();
+    o.ranges = buildUnnamed456();
+  }
+  buildCounterConditionalFormatRule--;
+  return o;
+}
+
+checkConditionalFormatRule(api.ConditionalFormatRule o) {
+  buildCounterConditionalFormatRule++;
+  if (buildCounterConditionalFormatRule < 3) {
+    checkBooleanRule(o.booleanRule);
+    checkGradientRule(o.gradientRule);
+    checkUnnamed456(o.ranges);
+  }
+  buildCounterConditionalFormatRule--;
+}
+
+core.int buildCounterCopyPasteRequest = 0;
+buildCopyPasteRequest() {
+  var o = new api.CopyPasteRequest();
+  buildCounterCopyPasteRequest++;
+  if (buildCounterCopyPasteRequest < 3) {
+    o.destination = buildGridRange();
+    o.pasteOrientation = "foo";
+    o.pasteType = "foo";
+    o.source = buildGridRange();
+  }
+  buildCounterCopyPasteRequest--;
+  return o;
+}
+
+checkCopyPasteRequest(api.CopyPasteRequest o) {
+  buildCounterCopyPasteRequest++;
+  if (buildCounterCopyPasteRequest < 3) {
+    checkGridRange(o.destination);
+    unittest.expect(o.pasteOrientation, unittest.equals('foo'));
+    unittest.expect(o.pasteType, unittest.equals('foo'));
+    checkGridRange(o.source);
+  }
+  buildCounterCopyPasteRequest--;
+}
+
+core.int buildCounterCopySheetToAnotherSpreadsheetRequest = 0;
+buildCopySheetToAnotherSpreadsheetRequest() {
+  var o = new api.CopySheetToAnotherSpreadsheetRequest();
+  buildCounterCopySheetToAnotherSpreadsheetRequest++;
+  if (buildCounterCopySheetToAnotherSpreadsheetRequest < 3) {
+    o.destinationSpreadsheetId = "foo";
+  }
+  buildCounterCopySheetToAnotherSpreadsheetRequest--;
+  return o;
+}
+
+checkCopySheetToAnotherSpreadsheetRequest(
+    api.CopySheetToAnotherSpreadsheetRequest o) {
+  buildCounterCopySheetToAnotherSpreadsheetRequest++;
+  if (buildCounterCopySheetToAnotherSpreadsheetRequest < 3) {
+    unittest.expect(o.destinationSpreadsheetId, unittest.equals('foo'));
+  }
+  buildCounterCopySheetToAnotherSpreadsheetRequest--;
+}
+
+core.int buildCounterCreateDeveloperMetadataRequest = 0;
+buildCreateDeveloperMetadataRequest() {
+  var o = new api.CreateDeveloperMetadataRequest();
+  buildCounterCreateDeveloperMetadataRequest++;
+  if (buildCounterCreateDeveloperMetadataRequest < 3) {
+    o.developerMetadata = buildDeveloperMetadata();
+  }
+  buildCounterCreateDeveloperMetadataRequest--;
+  return o;
+}
+
+checkCreateDeveloperMetadataRequest(api.CreateDeveloperMetadataRequest o) {
+  buildCounterCreateDeveloperMetadataRequest++;
+  if (buildCounterCreateDeveloperMetadataRequest < 3) {
+    checkDeveloperMetadata(o.developerMetadata);
+  }
+  buildCounterCreateDeveloperMetadataRequest--;
+}
+
+core.int buildCounterCreateDeveloperMetadataResponse = 0;
+buildCreateDeveloperMetadataResponse() {
+  var o = new api.CreateDeveloperMetadataResponse();
+  buildCounterCreateDeveloperMetadataResponse++;
+  if (buildCounterCreateDeveloperMetadataResponse < 3) {
+    o.developerMetadata = buildDeveloperMetadata();
+  }
+  buildCounterCreateDeveloperMetadataResponse--;
+  return o;
+}
+
+checkCreateDeveloperMetadataResponse(api.CreateDeveloperMetadataResponse o) {
+  buildCounterCreateDeveloperMetadataResponse++;
+  if (buildCounterCreateDeveloperMetadataResponse < 3) {
+    checkDeveloperMetadata(o.developerMetadata);
+  }
+  buildCounterCreateDeveloperMetadataResponse--;
+}
+
+core.int buildCounterCutPasteRequest = 0;
+buildCutPasteRequest() {
+  var o = new api.CutPasteRequest();
+  buildCounterCutPasteRequest++;
+  if (buildCounterCutPasteRequest < 3) {
+    o.destination = buildGridCoordinate();
+    o.pasteType = "foo";
+    o.source = buildGridRange();
+  }
+  buildCounterCutPasteRequest--;
+  return o;
+}
+
+checkCutPasteRequest(api.CutPasteRequest o) {
+  buildCounterCutPasteRequest++;
+  if (buildCounterCutPasteRequest < 3) {
+    checkGridCoordinate(o.destination);
+    unittest.expect(o.pasteType, unittest.equals('foo'));
+    checkGridRange(o.source);
+  }
+  buildCounterCutPasteRequest--;
+}
+
+core.int buildCounterDataFilter = 0;
+buildDataFilter() {
+  var o = new api.DataFilter();
+  buildCounterDataFilter++;
+  if (buildCounterDataFilter < 3) {
+    o.a1Range = "foo";
+    o.developerMetadataLookup = buildDeveloperMetadataLookup();
+    o.gridRange = buildGridRange();
+  }
+  buildCounterDataFilter--;
+  return o;
+}
+
+checkDataFilter(api.DataFilter o) {
+  buildCounterDataFilter++;
+  if (buildCounterDataFilter < 3) {
+    unittest.expect(o.a1Range, unittest.equals('foo'));
+    checkDeveloperMetadataLookup(o.developerMetadataLookup);
+    checkGridRange(o.gridRange);
+  }
+  buildCounterDataFilter--;
+}
+
+buildUnnamed457() {
+  var o = new core.List<core.Object>();
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  return o;
+}
+
+checkUnnamed457(core.List<core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o[0]) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(casted1["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted1["bool"], unittest.equals(true));
+  unittest.expect(casted1["string"], unittest.equals('foo'));
+  var casted2 = (o[1]) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(casted2["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted2["bool"], unittest.equals(true));
+  unittest.expect(casted2["string"], unittest.equals('foo'));
+}
+
+buildUnnamed458() {
+  var o = new core.List<core.List<core.Object>>();
+  o.add(buildUnnamed457());
+  o.add(buildUnnamed457());
+  return o;
+}
+
+checkUnnamed458(core.List<core.List<core.Object>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed457(o[0]);
+  checkUnnamed457(o[1]);
+}
+
+core.int buildCounterDataFilterValueRange = 0;
+buildDataFilterValueRange() {
+  var o = new api.DataFilterValueRange();
+  buildCounterDataFilterValueRange++;
+  if (buildCounterDataFilterValueRange < 3) {
+    o.dataFilter = buildDataFilter();
+    o.majorDimension = "foo";
+    o.values = buildUnnamed458();
+  }
+  buildCounterDataFilterValueRange--;
+  return o;
+}
+
+checkDataFilterValueRange(api.DataFilterValueRange o) {
+  buildCounterDataFilterValueRange++;
+  if (buildCounterDataFilterValueRange < 3) {
+    checkDataFilter(o.dataFilter);
+    unittest.expect(o.majorDimension, unittest.equals('foo'));
+    checkUnnamed458(o.values);
+  }
+  buildCounterDataFilterValueRange--;
+}
+
+core.int buildCounterDataValidationRule = 0;
+buildDataValidationRule() {
+  var o = new api.DataValidationRule();
+  buildCounterDataValidationRule++;
+  if (buildCounterDataValidationRule < 3) {
+    o.condition = buildBooleanCondition();
+    o.inputMessage = "foo";
+    o.showCustomUi = true;
+    o.strict = true;
+  }
+  buildCounterDataValidationRule--;
+  return o;
+}
+
+checkDataValidationRule(api.DataValidationRule o) {
+  buildCounterDataValidationRule++;
+  if (buildCounterDataValidationRule < 3) {
+    checkBooleanCondition(o.condition);
+    unittest.expect(o.inputMessage, unittest.equals('foo'));
+    unittest.expect(o.showCustomUi, unittest.isTrue);
+    unittest.expect(o.strict, unittest.isTrue);
+  }
+  buildCounterDataValidationRule--;
+}
+
+core.int buildCounterDeleteBandingRequest = 0;
+buildDeleteBandingRequest() {
+  var o = new api.DeleteBandingRequest();
+  buildCounterDeleteBandingRequest++;
+  if (buildCounterDeleteBandingRequest < 3) {
+    o.bandedRangeId = 42;
+  }
+  buildCounterDeleteBandingRequest--;
+  return o;
+}
+
+checkDeleteBandingRequest(api.DeleteBandingRequest o) {
+  buildCounterDeleteBandingRequest++;
+  if (buildCounterDeleteBandingRequest < 3) {
+    unittest.expect(o.bandedRangeId, unittest.equals(42));
+  }
+  buildCounterDeleteBandingRequest--;
+}
+
+core.int buildCounterDeleteConditionalFormatRuleRequest = 0;
+buildDeleteConditionalFormatRuleRequest() {
+  var o = new api.DeleteConditionalFormatRuleRequest();
+  buildCounterDeleteConditionalFormatRuleRequest++;
+  if (buildCounterDeleteConditionalFormatRuleRequest < 3) {
+    o.index = 42;
+    o.sheetId = 42;
+  }
+  buildCounterDeleteConditionalFormatRuleRequest--;
+  return o;
+}
+
+checkDeleteConditionalFormatRuleRequest(
+    api.DeleteConditionalFormatRuleRequest o) {
+  buildCounterDeleteConditionalFormatRuleRequest++;
+  if (buildCounterDeleteConditionalFormatRuleRequest < 3) {
+    unittest.expect(o.index, unittest.equals(42));
+    unittest.expect(o.sheetId, unittest.equals(42));
+  }
+  buildCounterDeleteConditionalFormatRuleRequest--;
+}
+
+core.int buildCounterDeleteConditionalFormatRuleResponse = 0;
+buildDeleteConditionalFormatRuleResponse() {
+  var o = new api.DeleteConditionalFormatRuleResponse();
+  buildCounterDeleteConditionalFormatRuleResponse++;
+  if (buildCounterDeleteConditionalFormatRuleResponse < 3) {
+    o.rule = buildConditionalFormatRule();
+  }
+  buildCounterDeleteConditionalFormatRuleResponse--;
+  return o;
+}
+
+checkDeleteConditionalFormatRuleResponse(
+    api.DeleteConditionalFormatRuleResponse o) {
+  buildCounterDeleteConditionalFormatRuleResponse++;
+  if (buildCounterDeleteConditionalFormatRuleResponse < 3) {
+    checkConditionalFormatRule(o.rule);
+  }
+  buildCounterDeleteConditionalFormatRuleResponse--;
+}
+
+core.int buildCounterDeleteDeveloperMetadataRequest = 0;
+buildDeleteDeveloperMetadataRequest() {
+  var o = new api.DeleteDeveloperMetadataRequest();
+  buildCounterDeleteDeveloperMetadataRequest++;
+  if (buildCounterDeleteDeveloperMetadataRequest < 3) {
+    o.dataFilter = buildDataFilter();
+  }
+  buildCounterDeleteDeveloperMetadataRequest--;
+  return o;
+}
+
+checkDeleteDeveloperMetadataRequest(api.DeleteDeveloperMetadataRequest o) {
+  buildCounterDeleteDeveloperMetadataRequest++;
+  if (buildCounterDeleteDeveloperMetadataRequest < 3) {
+    checkDataFilter(o.dataFilter);
+  }
+  buildCounterDeleteDeveloperMetadataRequest--;
+}
+
+buildUnnamed459() {
+  var o = new core.List<api.DeveloperMetadata>();
+  o.add(buildDeveloperMetadata());
+  o.add(buildDeveloperMetadata());
+  return o;
+}
+
+checkUnnamed459(core.List<api.DeveloperMetadata> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDeveloperMetadata(o[0]);
+  checkDeveloperMetadata(o[1]);
+}
+
+core.int buildCounterDeleteDeveloperMetadataResponse = 0;
+buildDeleteDeveloperMetadataResponse() {
+  var o = new api.DeleteDeveloperMetadataResponse();
+  buildCounterDeleteDeveloperMetadataResponse++;
+  if (buildCounterDeleteDeveloperMetadataResponse < 3) {
+    o.deletedDeveloperMetadata = buildUnnamed459();
+  }
+  buildCounterDeleteDeveloperMetadataResponse--;
+  return o;
+}
+
+checkDeleteDeveloperMetadataResponse(api.DeleteDeveloperMetadataResponse o) {
+  buildCounterDeleteDeveloperMetadataResponse++;
+  if (buildCounterDeleteDeveloperMetadataResponse < 3) {
+    checkUnnamed459(o.deletedDeveloperMetadata);
+  }
+  buildCounterDeleteDeveloperMetadataResponse--;
+}
+
+core.int buildCounterDeleteDimensionRequest = 0;
+buildDeleteDimensionRequest() {
+  var o = new api.DeleteDimensionRequest();
+  buildCounterDeleteDimensionRequest++;
+  if (buildCounterDeleteDimensionRequest < 3) {
+    o.range = buildDimensionRange();
+  }
+  buildCounterDeleteDimensionRequest--;
+  return o;
+}
+
+checkDeleteDimensionRequest(api.DeleteDimensionRequest o) {
+  buildCounterDeleteDimensionRequest++;
+  if (buildCounterDeleteDimensionRequest < 3) {
+    checkDimensionRange(o.range);
+  }
+  buildCounterDeleteDimensionRequest--;
+}
+
+core.int buildCounterDeleteEmbeddedObjectRequest = 0;
+buildDeleteEmbeddedObjectRequest() {
+  var o = new api.DeleteEmbeddedObjectRequest();
+  buildCounterDeleteEmbeddedObjectRequest++;
+  if (buildCounterDeleteEmbeddedObjectRequest < 3) {
+    o.objectId = 42;
+  }
+  buildCounterDeleteEmbeddedObjectRequest--;
+  return o;
+}
+
+checkDeleteEmbeddedObjectRequest(api.DeleteEmbeddedObjectRequest o) {
+  buildCounterDeleteEmbeddedObjectRequest++;
+  if (buildCounterDeleteEmbeddedObjectRequest < 3) {
+    unittest.expect(o.objectId, unittest.equals(42));
+  }
+  buildCounterDeleteEmbeddedObjectRequest--;
+}
+
+core.int buildCounterDeleteFilterViewRequest = 0;
+buildDeleteFilterViewRequest() {
+  var o = new api.DeleteFilterViewRequest();
+  buildCounterDeleteFilterViewRequest++;
+  if (buildCounterDeleteFilterViewRequest < 3) {
+    o.filterId = 42;
+  }
+  buildCounterDeleteFilterViewRequest--;
+  return o;
+}
+
+checkDeleteFilterViewRequest(api.DeleteFilterViewRequest o) {
+  buildCounterDeleteFilterViewRequest++;
+  if (buildCounterDeleteFilterViewRequest < 3) {
+    unittest.expect(o.filterId, unittest.equals(42));
+  }
+  buildCounterDeleteFilterViewRequest--;
+}
+
+core.int buildCounterDeleteNamedRangeRequest = 0;
+buildDeleteNamedRangeRequest() {
+  var o = new api.DeleteNamedRangeRequest();
+  buildCounterDeleteNamedRangeRequest++;
+  if (buildCounterDeleteNamedRangeRequest < 3) {
+    o.namedRangeId = "foo";
+  }
+  buildCounterDeleteNamedRangeRequest--;
+  return o;
+}
+
+checkDeleteNamedRangeRequest(api.DeleteNamedRangeRequest o) {
+  buildCounterDeleteNamedRangeRequest++;
+  if (buildCounterDeleteNamedRangeRequest < 3) {
+    unittest.expect(o.namedRangeId, unittest.equals('foo'));
+  }
+  buildCounterDeleteNamedRangeRequest--;
+}
+
+core.int buildCounterDeleteProtectedRangeRequest = 0;
+buildDeleteProtectedRangeRequest() {
+  var o = new api.DeleteProtectedRangeRequest();
+  buildCounterDeleteProtectedRangeRequest++;
+  if (buildCounterDeleteProtectedRangeRequest < 3) {
+    o.protectedRangeId = 42;
+  }
+  buildCounterDeleteProtectedRangeRequest--;
+  return o;
+}
+
+checkDeleteProtectedRangeRequest(api.DeleteProtectedRangeRequest o) {
+  buildCounterDeleteProtectedRangeRequest++;
+  if (buildCounterDeleteProtectedRangeRequest < 3) {
+    unittest.expect(o.protectedRangeId, unittest.equals(42));
+  }
+  buildCounterDeleteProtectedRangeRequest--;
+}
+
+core.int buildCounterDeleteRangeRequest = 0;
+buildDeleteRangeRequest() {
+  var o = new api.DeleteRangeRequest();
+  buildCounterDeleteRangeRequest++;
+  if (buildCounterDeleteRangeRequest < 3) {
+    o.range = buildGridRange();
+    o.shiftDimension = "foo";
+  }
+  buildCounterDeleteRangeRequest--;
+  return o;
+}
+
+checkDeleteRangeRequest(api.DeleteRangeRequest o) {
+  buildCounterDeleteRangeRequest++;
+  if (buildCounterDeleteRangeRequest < 3) {
+    checkGridRange(o.range);
+    unittest.expect(o.shiftDimension, unittest.equals('foo'));
+  }
+  buildCounterDeleteRangeRequest--;
+}
+
+core.int buildCounterDeleteSheetRequest = 0;
+buildDeleteSheetRequest() {
+  var o = new api.DeleteSheetRequest();
+  buildCounterDeleteSheetRequest++;
+  if (buildCounterDeleteSheetRequest < 3) {
+    o.sheetId = 42;
+  }
+  buildCounterDeleteSheetRequest--;
+  return o;
+}
+
+checkDeleteSheetRequest(api.DeleteSheetRequest o) {
+  buildCounterDeleteSheetRequest++;
+  if (buildCounterDeleteSheetRequest < 3) {
+    unittest.expect(o.sheetId, unittest.equals(42));
+  }
+  buildCounterDeleteSheetRequest--;
+}
+
+core.int buildCounterDeveloperMetadata = 0;
+buildDeveloperMetadata() {
+  var o = new api.DeveloperMetadata();
+  buildCounterDeveloperMetadata++;
+  if (buildCounterDeveloperMetadata < 3) {
+    o.location = buildDeveloperMetadataLocation();
+    o.metadataId = 42;
+    o.metadataKey = "foo";
+    o.metadataValue = "foo";
+    o.visibility = "foo";
+  }
+  buildCounterDeveloperMetadata--;
+  return o;
+}
+
+checkDeveloperMetadata(api.DeveloperMetadata o) {
+  buildCounterDeveloperMetadata++;
+  if (buildCounterDeveloperMetadata < 3) {
+    checkDeveloperMetadataLocation(o.location);
+    unittest.expect(o.metadataId, unittest.equals(42));
+    unittest.expect(o.metadataKey, unittest.equals('foo'));
+    unittest.expect(o.metadataValue, unittest.equals('foo'));
+    unittest.expect(o.visibility, unittest.equals('foo'));
+  }
+  buildCounterDeveloperMetadata--;
+}
+
+core.int buildCounterDeveloperMetadataLocation = 0;
+buildDeveloperMetadataLocation() {
+  var o = new api.DeveloperMetadataLocation();
+  buildCounterDeveloperMetadataLocation++;
+  if (buildCounterDeveloperMetadataLocation < 3) {
+    o.dimensionRange = buildDimensionRange();
+    o.locationType = "foo";
+    o.sheetId = 42;
+    o.spreadsheet = true;
+  }
+  buildCounterDeveloperMetadataLocation--;
+  return o;
+}
+
+checkDeveloperMetadataLocation(api.DeveloperMetadataLocation o) {
+  buildCounterDeveloperMetadataLocation++;
+  if (buildCounterDeveloperMetadataLocation < 3) {
+    checkDimensionRange(o.dimensionRange);
+    unittest.expect(o.locationType, unittest.equals('foo'));
+    unittest.expect(o.sheetId, unittest.equals(42));
+    unittest.expect(o.spreadsheet, unittest.isTrue);
+  }
+  buildCounterDeveloperMetadataLocation--;
+}
+
+core.int buildCounterDeveloperMetadataLookup = 0;
+buildDeveloperMetadataLookup() {
+  var o = new api.DeveloperMetadataLookup();
+  buildCounterDeveloperMetadataLookup++;
+  if (buildCounterDeveloperMetadataLookup < 3) {
+    o.locationMatchingStrategy = "foo";
+    o.locationType = "foo";
+    o.metadataId = 42;
+    o.metadataKey = "foo";
+    o.metadataLocation = buildDeveloperMetadataLocation();
+    o.metadataValue = "foo";
+    o.visibility = "foo";
+  }
+  buildCounterDeveloperMetadataLookup--;
+  return o;
+}
+
+checkDeveloperMetadataLookup(api.DeveloperMetadataLookup o) {
+  buildCounterDeveloperMetadataLookup++;
+  if (buildCounterDeveloperMetadataLookup < 3) {
+    unittest.expect(o.locationMatchingStrategy, unittest.equals('foo'));
+    unittest.expect(o.locationType, unittest.equals('foo'));
+    unittest.expect(o.metadataId, unittest.equals(42));
+    unittest.expect(o.metadataKey, unittest.equals('foo'));
+    checkDeveloperMetadataLocation(o.metadataLocation);
+    unittest.expect(o.metadataValue, unittest.equals('foo'));
+    unittest.expect(o.visibility, unittest.equals('foo'));
+  }
+  buildCounterDeveloperMetadataLookup--;
+}
+
+buildUnnamed460() {
+  var o = new core.List<api.DeveloperMetadata>();
+  o.add(buildDeveloperMetadata());
+  o.add(buildDeveloperMetadata());
+  return o;
+}
+
+checkUnnamed460(core.List<api.DeveloperMetadata> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDeveloperMetadata(o[0]);
+  checkDeveloperMetadata(o[1]);
+}
+
+core.int buildCounterDimensionProperties = 0;
+buildDimensionProperties() {
+  var o = new api.DimensionProperties();
+  buildCounterDimensionProperties++;
+  if (buildCounterDimensionProperties < 3) {
+    o.developerMetadata = buildUnnamed460();
+    o.hiddenByFilter = true;
+    o.hiddenByUser = true;
+    o.pixelSize = 42;
+  }
+  buildCounterDimensionProperties--;
+  return o;
+}
+
+checkDimensionProperties(api.DimensionProperties o) {
+  buildCounterDimensionProperties++;
+  if (buildCounterDimensionProperties < 3) {
+    checkUnnamed460(o.developerMetadata);
+    unittest.expect(o.hiddenByFilter, unittest.isTrue);
+    unittest.expect(o.hiddenByUser, unittest.isTrue);
+    unittest.expect(o.pixelSize, unittest.equals(42));
+  }
+  buildCounterDimensionProperties--;
+}
+
+core.int buildCounterDimensionRange = 0;
+buildDimensionRange() {
+  var o = new api.DimensionRange();
+  buildCounterDimensionRange++;
+  if (buildCounterDimensionRange < 3) {
+    o.dimension = "foo";
+    o.endIndex = 42;
+    o.sheetId = 42;
+    o.startIndex = 42;
+  }
+  buildCounterDimensionRange--;
+  return o;
+}
+
+checkDimensionRange(api.DimensionRange o) {
+  buildCounterDimensionRange++;
+  if (buildCounterDimensionRange < 3) {
+    unittest.expect(o.dimension, unittest.equals('foo'));
+    unittest.expect(o.endIndex, unittest.equals(42));
+    unittest.expect(o.sheetId, unittest.equals(42));
+    unittest.expect(o.startIndex, unittest.equals(42));
+  }
+  buildCounterDimensionRange--;
+}
+
+core.int buildCounterDuplicateFilterViewRequest = 0;
+buildDuplicateFilterViewRequest() {
+  var o = new api.DuplicateFilterViewRequest();
+  buildCounterDuplicateFilterViewRequest++;
+  if (buildCounterDuplicateFilterViewRequest < 3) {
+    o.filterId = 42;
+  }
+  buildCounterDuplicateFilterViewRequest--;
+  return o;
+}
+
+checkDuplicateFilterViewRequest(api.DuplicateFilterViewRequest o) {
+  buildCounterDuplicateFilterViewRequest++;
+  if (buildCounterDuplicateFilterViewRequest < 3) {
+    unittest.expect(o.filterId, unittest.equals(42));
+  }
+  buildCounterDuplicateFilterViewRequest--;
+}
+
+core.int buildCounterDuplicateFilterViewResponse = 0;
+buildDuplicateFilterViewResponse() {
+  var o = new api.DuplicateFilterViewResponse();
+  buildCounterDuplicateFilterViewResponse++;
+  if (buildCounterDuplicateFilterViewResponse < 3) {
+    o.filter = buildFilterView();
+  }
+  buildCounterDuplicateFilterViewResponse--;
+  return o;
+}
+
+checkDuplicateFilterViewResponse(api.DuplicateFilterViewResponse o) {
+  buildCounterDuplicateFilterViewResponse++;
+  if (buildCounterDuplicateFilterViewResponse < 3) {
+    checkFilterView(o.filter);
+  }
+  buildCounterDuplicateFilterViewResponse--;
+}
+
+core.int buildCounterDuplicateSheetRequest = 0;
+buildDuplicateSheetRequest() {
+  var o = new api.DuplicateSheetRequest();
+  buildCounterDuplicateSheetRequest++;
+  if (buildCounterDuplicateSheetRequest < 3) {
+    o.insertSheetIndex = 42;
+    o.newSheetId = 42;
+    o.newSheetName = "foo";
+    o.sourceSheetId = 42;
+  }
+  buildCounterDuplicateSheetRequest--;
+  return o;
+}
+
+checkDuplicateSheetRequest(api.DuplicateSheetRequest o) {
+  buildCounterDuplicateSheetRequest++;
+  if (buildCounterDuplicateSheetRequest < 3) {
+    unittest.expect(o.insertSheetIndex, unittest.equals(42));
+    unittest.expect(o.newSheetId, unittest.equals(42));
+    unittest.expect(o.newSheetName, unittest.equals('foo'));
+    unittest.expect(o.sourceSheetId, unittest.equals(42));
+  }
+  buildCounterDuplicateSheetRequest--;
+}
+
+core.int buildCounterDuplicateSheetResponse = 0;
+buildDuplicateSheetResponse() {
+  var o = new api.DuplicateSheetResponse();
+  buildCounterDuplicateSheetResponse++;
+  if (buildCounterDuplicateSheetResponse < 3) {
+    o.properties = buildSheetProperties();
+  }
+  buildCounterDuplicateSheetResponse--;
+  return o;
+}
+
+checkDuplicateSheetResponse(api.DuplicateSheetResponse o) {
+  buildCounterDuplicateSheetResponse++;
+  if (buildCounterDuplicateSheetResponse < 3) {
+    checkSheetProperties(o.properties);
+  }
+  buildCounterDuplicateSheetResponse--;
+}
+
+buildUnnamed461() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed461(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed462() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed462(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterEditors = 0;
+buildEditors() {
+  var o = new api.Editors();
+  buildCounterEditors++;
+  if (buildCounterEditors < 3) {
+    o.domainUsersCanEdit = true;
+    o.groups = buildUnnamed461();
+    o.users = buildUnnamed462();
+  }
+  buildCounterEditors--;
+  return o;
+}
+
+checkEditors(api.Editors o) {
+  buildCounterEditors++;
+  if (buildCounterEditors < 3) {
+    unittest.expect(o.domainUsersCanEdit, unittest.isTrue);
+    checkUnnamed461(o.groups);
+    checkUnnamed462(o.users);
+  }
+  buildCounterEditors--;
+}
+
+core.int buildCounterEmbeddedChart = 0;
+buildEmbeddedChart() {
+  var o = new api.EmbeddedChart();
+  buildCounterEmbeddedChart++;
+  if (buildCounterEmbeddedChart < 3) {
+    o.chartId = 42;
+    o.position = buildEmbeddedObjectPosition();
+    o.spec = buildChartSpec();
+  }
+  buildCounterEmbeddedChart--;
+  return o;
+}
+
+checkEmbeddedChart(api.EmbeddedChart o) {
+  buildCounterEmbeddedChart++;
+  if (buildCounterEmbeddedChart < 3) {
+    unittest.expect(o.chartId, unittest.equals(42));
+    checkEmbeddedObjectPosition(o.position);
+    checkChartSpec(o.spec);
+  }
+  buildCounterEmbeddedChart--;
+}
+
+core.int buildCounterEmbeddedObjectPosition = 0;
+buildEmbeddedObjectPosition() {
+  var o = new api.EmbeddedObjectPosition();
+  buildCounterEmbeddedObjectPosition++;
+  if (buildCounterEmbeddedObjectPosition < 3) {
+    o.newSheet = true;
+    o.overlayPosition = buildOverlayPosition();
+    o.sheetId = 42;
+  }
+  buildCounterEmbeddedObjectPosition--;
+  return o;
+}
+
+checkEmbeddedObjectPosition(api.EmbeddedObjectPosition o) {
+  buildCounterEmbeddedObjectPosition++;
+  if (buildCounterEmbeddedObjectPosition < 3) {
+    unittest.expect(o.newSheet, unittest.isTrue);
+    checkOverlayPosition(o.overlayPosition);
+    unittest.expect(o.sheetId, unittest.equals(42));
+  }
+  buildCounterEmbeddedObjectPosition--;
+}
+
+core.int buildCounterErrorValue = 0;
+buildErrorValue() {
+  var o = new api.ErrorValue();
+  buildCounterErrorValue++;
+  if (buildCounterErrorValue < 3) {
+    o.message = "foo";
+    o.type = "foo";
+  }
+  buildCounterErrorValue--;
+  return o;
+}
+
+checkErrorValue(api.ErrorValue o) {
+  buildCounterErrorValue++;
+  if (buildCounterErrorValue < 3) {
+    unittest.expect(o.message, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterErrorValue--;
+}
+
+core.int buildCounterExtendedValue = 0;
+buildExtendedValue() {
+  var o = new api.ExtendedValue();
+  buildCounterExtendedValue++;
+  if (buildCounterExtendedValue < 3) {
+    o.boolValue = true;
+    o.errorValue = buildErrorValue();
+    o.formulaValue = "foo";
+    o.numberValue = 42.0;
+    o.stringValue = "foo";
+  }
+  buildCounterExtendedValue--;
+  return o;
+}
+
+checkExtendedValue(api.ExtendedValue o) {
+  buildCounterExtendedValue++;
+  if (buildCounterExtendedValue < 3) {
+    unittest.expect(o.boolValue, unittest.isTrue);
+    checkErrorValue(o.errorValue);
+    unittest.expect(o.formulaValue, unittest.equals('foo'));
+    unittest.expect(o.numberValue, unittest.equals(42.0));
+    unittest.expect(o.stringValue, unittest.equals('foo'));
+  }
+  buildCounterExtendedValue--;
+}
+
+buildUnnamed463() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed463(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterFilterCriteria = 0;
+buildFilterCriteria() {
+  var o = new api.FilterCriteria();
+  buildCounterFilterCriteria++;
+  if (buildCounterFilterCriteria < 3) {
+    o.condition = buildBooleanCondition();
+    o.hiddenValues = buildUnnamed463();
+  }
+  buildCounterFilterCriteria--;
+  return o;
+}
+
+checkFilterCriteria(api.FilterCriteria o) {
+  buildCounterFilterCriteria++;
+  if (buildCounterFilterCriteria < 3) {
+    checkBooleanCondition(o.condition);
+    checkUnnamed463(o.hiddenValues);
+  }
+  buildCounterFilterCriteria--;
+}
+
+buildUnnamed464() {
+  var o = new core.Map<core.String, api.FilterCriteria>();
+  o["x"] = buildFilterCriteria();
+  o["y"] = buildFilterCriteria();
+  return o;
+}
+
+checkUnnamed464(core.Map<core.String, api.FilterCriteria> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFilterCriteria(o["x"]);
+  checkFilterCriteria(o["y"]);
+}
+
+buildUnnamed465() {
+  var o = new core.List<api.SortSpec>();
+  o.add(buildSortSpec());
+  o.add(buildSortSpec());
+  return o;
+}
+
+checkUnnamed465(core.List<api.SortSpec> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSortSpec(o[0]);
+  checkSortSpec(o[1]);
+}
+
+core.int buildCounterFilterView = 0;
+buildFilterView() {
+  var o = new api.FilterView();
+  buildCounterFilterView++;
+  if (buildCounterFilterView < 3) {
+    o.criteria = buildUnnamed464();
+    o.filterViewId = 42;
+    o.namedRangeId = "foo";
+    o.range = buildGridRange();
+    o.sortSpecs = buildUnnamed465();
+    o.title = "foo";
+  }
+  buildCounterFilterView--;
+  return o;
+}
+
+checkFilterView(api.FilterView o) {
+  buildCounterFilterView++;
+  if (buildCounterFilterView < 3) {
+    checkUnnamed464(o.criteria);
+    unittest.expect(o.filterViewId, unittest.equals(42));
+    unittest.expect(o.namedRangeId, unittest.equals('foo'));
+    checkGridRange(o.range);
+    checkUnnamed465(o.sortSpecs);
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterFilterView--;
+}
+
+core.int buildCounterFindReplaceRequest = 0;
+buildFindReplaceRequest() {
+  var o = new api.FindReplaceRequest();
+  buildCounterFindReplaceRequest++;
+  if (buildCounterFindReplaceRequest < 3) {
+    o.allSheets = true;
+    o.find = "foo";
+    o.includeFormulas = true;
+    o.matchCase = true;
+    o.matchEntireCell = true;
+    o.range = buildGridRange();
+    o.replacement = "foo";
+    o.searchByRegex = true;
+    o.sheetId = 42;
+  }
+  buildCounterFindReplaceRequest--;
+  return o;
+}
+
+checkFindReplaceRequest(api.FindReplaceRequest o) {
+  buildCounterFindReplaceRequest++;
+  if (buildCounterFindReplaceRequest < 3) {
+    unittest.expect(o.allSheets, unittest.isTrue);
+    unittest.expect(o.find, unittest.equals('foo'));
+    unittest.expect(o.includeFormulas, unittest.isTrue);
+    unittest.expect(o.matchCase, unittest.isTrue);
+    unittest.expect(o.matchEntireCell, unittest.isTrue);
+    checkGridRange(o.range);
+    unittest.expect(o.replacement, unittest.equals('foo'));
+    unittest.expect(o.searchByRegex, unittest.isTrue);
+    unittest.expect(o.sheetId, unittest.equals(42));
+  }
+  buildCounterFindReplaceRequest--;
+}
+
+core.int buildCounterFindReplaceResponse = 0;
+buildFindReplaceResponse() {
+  var o = new api.FindReplaceResponse();
+  buildCounterFindReplaceResponse++;
+  if (buildCounterFindReplaceResponse < 3) {
+    o.formulasChanged = 42;
+    o.occurrencesChanged = 42;
+    o.rowsChanged = 42;
+    o.sheetsChanged = 42;
+    o.valuesChanged = 42;
+  }
+  buildCounterFindReplaceResponse--;
+  return o;
+}
+
+checkFindReplaceResponse(api.FindReplaceResponse o) {
+  buildCounterFindReplaceResponse++;
+  if (buildCounterFindReplaceResponse < 3) {
+    unittest.expect(o.formulasChanged, unittest.equals(42));
+    unittest.expect(o.occurrencesChanged, unittest.equals(42));
+    unittest.expect(o.rowsChanged, unittest.equals(42));
+    unittest.expect(o.sheetsChanged, unittest.equals(42));
+    unittest.expect(o.valuesChanged, unittest.equals(42));
+  }
+  buildCounterFindReplaceResponse--;
+}
+
+buildUnnamed466() {
+  var o = new core.List<api.DataFilter>();
+  o.add(buildDataFilter());
+  o.add(buildDataFilter());
+  return o;
+}
+
+checkUnnamed466(core.List<api.DataFilter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataFilter(o[0]);
+  checkDataFilter(o[1]);
+}
+
+core.int buildCounterGetSpreadsheetByDataFilterRequest = 0;
+buildGetSpreadsheetByDataFilterRequest() {
+  var o = new api.GetSpreadsheetByDataFilterRequest();
+  buildCounterGetSpreadsheetByDataFilterRequest++;
+  if (buildCounterGetSpreadsheetByDataFilterRequest < 3) {
+    o.dataFilters = buildUnnamed466();
+    o.includeGridData = true;
+  }
+  buildCounterGetSpreadsheetByDataFilterRequest--;
+  return o;
+}
+
+checkGetSpreadsheetByDataFilterRequest(
+    api.GetSpreadsheetByDataFilterRequest o) {
+  buildCounterGetSpreadsheetByDataFilterRequest++;
+  if (buildCounterGetSpreadsheetByDataFilterRequest < 3) {
+    checkUnnamed466(o.dataFilters);
+    unittest.expect(o.includeGridData, unittest.isTrue);
+  }
+  buildCounterGetSpreadsheetByDataFilterRequest--;
+}
+
+core.int buildCounterGradientRule = 0;
+buildGradientRule() {
+  var o = new api.GradientRule();
+  buildCounterGradientRule++;
+  if (buildCounterGradientRule < 3) {
+    o.maxpoint = buildInterpolationPoint();
+    o.midpoint = buildInterpolationPoint();
+    o.minpoint = buildInterpolationPoint();
+  }
+  buildCounterGradientRule--;
+  return o;
+}
+
+checkGradientRule(api.GradientRule o) {
+  buildCounterGradientRule++;
+  if (buildCounterGradientRule < 3) {
+    checkInterpolationPoint(o.maxpoint);
+    checkInterpolationPoint(o.midpoint);
+    checkInterpolationPoint(o.minpoint);
+  }
+  buildCounterGradientRule--;
+}
+
+core.int buildCounterGridCoordinate = 0;
+buildGridCoordinate() {
+  var o = new api.GridCoordinate();
+  buildCounterGridCoordinate++;
+  if (buildCounterGridCoordinate < 3) {
+    o.columnIndex = 42;
+    o.rowIndex = 42;
+    o.sheetId = 42;
+  }
+  buildCounterGridCoordinate--;
+  return o;
+}
+
+checkGridCoordinate(api.GridCoordinate o) {
+  buildCounterGridCoordinate++;
+  if (buildCounterGridCoordinate < 3) {
+    unittest.expect(o.columnIndex, unittest.equals(42));
+    unittest.expect(o.rowIndex, unittest.equals(42));
+    unittest.expect(o.sheetId, unittest.equals(42));
+  }
+  buildCounterGridCoordinate--;
+}
+
+buildUnnamed467() {
+  var o = new core.List<api.DimensionProperties>();
+  o.add(buildDimensionProperties());
+  o.add(buildDimensionProperties());
+  return o;
+}
+
+checkUnnamed467(core.List<api.DimensionProperties> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimensionProperties(o[0]);
+  checkDimensionProperties(o[1]);
+}
+
+buildUnnamed468() {
+  var o = new core.List<api.RowData>();
+  o.add(buildRowData());
+  o.add(buildRowData());
+  return o;
+}
+
+checkUnnamed468(core.List<api.RowData> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRowData(o[0]);
+  checkRowData(o[1]);
+}
+
+buildUnnamed469() {
+  var o = new core.List<api.DimensionProperties>();
+  o.add(buildDimensionProperties());
+  o.add(buildDimensionProperties());
+  return o;
+}
+
+checkUnnamed469(core.List<api.DimensionProperties> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDimensionProperties(o[0]);
+  checkDimensionProperties(o[1]);
+}
+
+core.int buildCounterGridData = 0;
+buildGridData() {
+  var o = new api.GridData();
+  buildCounterGridData++;
+  if (buildCounterGridData < 3) {
+    o.columnMetadata = buildUnnamed467();
+    o.rowData = buildUnnamed468();
+    o.rowMetadata = buildUnnamed469();
+    o.startColumn = 42;
+    o.startRow = 42;
+  }
+  buildCounterGridData--;
+  return o;
+}
+
+checkGridData(api.GridData o) {
+  buildCounterGridData++;
+  if (buildCounterGridData < 3) {
+    checkUnnamed467(o.columnMetadata);
+    checkUnnamed468(o.rowData);
+    checkUnnamed469(o.rowMetadata);
+    unittest.expect(o.startColumn, unittest.equals(42));
+    unittest.expect(o.startRow, unittest.equals(42));
+  }
+  buildCounterGridData--;
+}
+
+core.int buildCounterGridProperties = 0;
+buildGridProperties() {
+  var o = new api.GridProperties();
+  buildCounterGridProperties++;
+  if (buildCounterGridProperties < 3) {
+    o.columnCount = 42;
+    o.frozenColumnCount = 42;
+    o.frozenRowCount = 42;
+    o.hideGridlines = true;
+    o.rowCount = 42;
+  }
+  buildCounterGridProperties--;
+  return o;
+}
+
+checkGridProperties(api.GridProperties o) {
+  buildCounterGridProperties++;
+  if (buildCounterGridProperties < 3) {
+    unittest.expect(o.columnCount, unittest.equals(42));
+    unittest.expect(o.frozenColumnCount, unittest.equals(42));
+    unittest.expect(o.frozenRowCount, unittest.equals(42));
+    unittest.expect(o.hideGridlines, unittest.isTrue);
+    unittest.expect(o.rowCount, unittest.equals(42));
+  }
+  buildCounterGridProperties--;
+}
+
+core.int buildCounterGridRange = 0;
+buildGridRange() {
+  var o = new api.GridRange();
+  buildCounterGridRange++;
+  if (buildCounterGridRange < 3) {
+    o.endColumnIndex = 42;
+    o.endRowIndex = 42;
+    o.sheetId = 42;
+    o.startColumnIndex = 42;
+    o.startRowIndex = 42;
+  }
+  buildCounterGridRange--;
+  return o;
+}
+
+checkGridRange(api.GridRange o) {
+  buildCounterGridRange++;
+  if (buildCounterGridRange < 3) {
+    unittest.expect(o.endColumnIndex, unittest.equals(42));
+    unittest.expect(o.endRowIndex, unittest.equals(42));
+    unittest.expect(o.sheetId, unittest.equals(42));
+    unittest.expect(o.startColumnIndex, unittest.equals(42));
+    unittest.expect(o.startRowIndex, unittest.equals(42));
+  }
+  buildCounterGridRange--;
+}
+
+buildUnnamed470() {
+  var o = new core.List<api.HistogramSeries>();
+  o.add(buildHistogramSeries());
+  o.add(buildHistogramSeries());
+  return o;
+}
+
+checkUnnamed470(core.List<api.HistogramSeries> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkHistogramSeries(o[0]);
+  checkHistogramSeries(o[1]);
+}
+
+core.int buildCounterHistogramChartSpec = 0;
+buildHistogramChartSpec() {
+  var o = new api.HistogramChartSpec();
+  buildCounterHistogramChartSpec++;
+  if (buildCounterHistogramChartSpec < 3) {
+    o.bucketSize = 42.0;
+    o.legendPosition = "foo";
+    o.outlierPercentile = 42.0;
+    o.series = buildUnnamed470();
+    o.showItemDividers = true;
+  }
+  buildCounterHistogramChartSpec--;
+  return o;
+}
+
+checkHistogramChartSpec(api.HistogramChartSpec o) {
+  buildCounterHistogramChartSpec++;
+  if (buildCounterHistogramChartSpec < 3) {
+    unittest.expect(o.bucketSize, unittest.equals(42.0));
+    unittest.expect(o.legendPosition, unittest.equals('foo'));
+    unittest.expect(o.outlierPercentile, unittest.equals(42.0));
+    checkUnnamed470(o.series);
+    unittest.expect(o.showItemDividers, unittest.isTrue);
+  }
+  buildCounterHistogramChartSpec--;
+}
+
+core.int buildCounterHistogramSeries = 0;
+buildHistogramSeries() {
+  var o = new api.HistogramSeries();
+  buildCounterHistogramSeries++;
+  if (buildCounterHistogramSeries < 3) {
+    o.barColor = buildColor();
+    o.data = buildChartData();
+  }
+  buildCounterHistogramSeries--;
+  return o;
+}
+
+checkHistogramSeries(api.HistogramSeries o) {
+  buildCounterHistogramSeries++;
+  if (buildCounterHistogramSeries < 3) {
+    checkColor(o.barColor);
+    checkChartData(o.data);
+  }
+  buildCounterHistogramSeries--;
+}
+
+core.int buildCounterInsertDimensionRequest = 0;
+buildInsertDimensionRequest() {
+  var o = new api.InsertDimensionRequest();
+  buildCounterInsertDimensionRequest++;
+  if (buildCounterInsertDimensionRequest < 3) {
+    o.inheritFromBefore = true;
+    o.range = buildDimensionRange();
+  }
+  buildCounterInsertDimensionRequest--;
+  return o;
+}
+
+checkInsertDimensionRequest(api.InsertDimensionRequest o) {
+  buildCounterInsertDimensionRequest++;
+  if (buildCounterInsertDimensionRequest < 3) {
+    unittest.expect(o.inheritFromBefore, unittest.isTrue);
+    checkDimensionRange(o.range);
+  }
+  buildCounterInsertDimensionRequest--;
+}
+
+core.int buildCounterInsertRangeRequest = 0;
+buildInsertRangeRequest() {
+  var o = new api.InsertRangeRequest();
+  buildCounterInsertRangeRequest++;
+  if (buildCounterInsertRangeRequest < 3) {
+    o.range = buildGridRange();
+    o.shiftDimension = "foo";
+  }
+  buildCounterInsertRangeRequest--;
+  return o;
+}
+
+checkInsertRangeRequest(api.InsertRangeRequest o) {
+  buildCounterInsertRangeRequest++;
+  if (buildCounterInsertRangeRequest < 3) {
+    checkGridRange(o.range);
+    unittest.expect(o.shiftDimension, unittest.equals('foo'));
+  }
+  buildCounterInsertRangeRequest--;
+}
+
+core.int buildCounterInterpolationPoint = 0;
+buildInterpolationPoint() {
+  var o = new api.InterpolationPoint();
+  buildCounterInterpolationPoint++;
+  if (buildCounterInterpolationPoint < 3) {
+    o.color = buildColor();
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterInterpolationPoint--;
+  return o;
+}
+
+checkInterpolationPoint(api.InterpolationPoint o) {
+  buildCounterInterpolationPoint++;
+  if (buildCounterInterpolationPoint < 3) {
+    checkColor(o.color);
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterInterpolationPoint--;
+}
+
+core.int buildCounterIterativeCalculationSettings = 0;
+buildIterativeCalculationSettings() {
+  var o = new api.IterativeCalculationSettings();
+  buildCounterIterativeCalculationSettings++;
+  if (buildCounterIterativeCalculationSettings < 3) {
+    o.convergenceThreshold = 42.0;
+    o.maxIterations = 42;
+  }
+  buildCounterIterativeCalculationSettings--;
+  return o;
+}
+
+checkIterativeCalculationSettings(api.IterativeCalculationSettings o) {
+  buildCounterIterativeCalculationSettings++;
+  if (buildCounterIterativeCalculationSettings < 3) {
+    unittest.expect(o.convergenceThreshold, unittest.equals(42.0));
+    unittest.expect(o.maxIterations, unittest.equals(42));
+  }
+  buildCounterIterativeCalculationSettings--;
+}
+
+buildUnnamed471() {
+  var o = new core.List<api.DataFilter>();
+  o.add(buildDataFilter());
+  o.add(buildDataFilter());
+  return o;
+}
+
+checkUnnamed471(core.List<api.DataFilter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataFilter(o[0]);
+  checkDataFilter(o[1]);
+}
+
+core.int buildCounterMatchedDeveloperMetadata = 0;
+buildMatchedDeveloperMetadata() {
+  var o = new api.MatchedDeveloperMetadata();
+  buildCounterMatchedDeveloperMetadata++;
+  if (buildCounterMatchedDeveloperMetadata < 3) {
+    o.dataFilters = buildUnnamed471();
+    o.developerMetadata = buildDeveloperMetadata();
+  }
+  buildCounterMatchedDeveloperMetadata--;
+  return o;
+}
+
+checkMatchedDeveloperMetadata(api.MatchedDeveloperMetadata o) {
+  buildCounterMatchedDeveloperMetadata++;
+  if (buildCounterMatchedDeveloperMetadata < 3) {
+    checkUnnamed471(o.dataFilters);
+    checkDeveloperMetadata(o.developerMetadata);
+  }
+  buildCounterMatchedDeveloperMetadata--;
+}
+
+buildUnnamed472() {
+  var o = new core.List<api.DataFilter>();
+  o.add(buildDataFilter());
+  o.add(buildDataFilter());
+  return o;
+}
+
+checkUnnamed472(core.List<api.DataFilter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataFilter(o[0]);
+  checkDataFilter(o[1]);
+}
+
+core.int buildCounterMatchedValueRange = 0;
+buildMatchedValueRange() {
+  var o = new api.MatchedValueRange();
+  buildCounterMatchedValueRange++;
+  if (buildCounterMatchedValueRange < 3) {
+    o.dataFilters = buildUnnamed472();
+    o.valueRange = buildValueRange();
+  }
+  buildCounterMatchedValueRange--;
+  return o;
+}
+
+checkMatchedValueRange(api.MatchedValueRange o) {
+  buildCounterMatchedValueRange++;
+  if (buildCounterMatchedValueRange < 3) {
+    checkUnnamed472(o.dataFilters);
+    checkValueRange(o.valueRange);
+  }
+  buildCounterMatchedValueRange--;
+}
+
+core.int buildCounterMergeCellsRequest = 0;
+buildMergeCellsRequest() {
+  var o = new api.MergeCellsRequest();
+  buildCounterMergeCellsRequest++;
+  if (buildCounterMergeCellsRequest < 3) {
+    o.mergeType = "foo";
+    o.range = buildGridRange();
+  }
+  buildCounterMergeCellsRequest--;
+  return o;
+}
+
+checkMergeCellsRequest(api.MergeCellsRequest o) {
+  buildCounterMergeCellsRequest++;
+  if (buildCounterMergeCellsRequest < 3) {
+    unittest.expect(o.mergeType, unittest.equals('foo'));
+    checkGridRange(o.range);
+  }
+  buildCounterMergeCellsRequest--;
+}
+
+core.int buildCounterMoveDimensionRequest = 0;
+buildMoveDimensionRequest() {
+  var o = new api.MoveDimensionRequest();
+  buildCounterMoveDimensionRequest++;
+  if (buildCounterMoveDimensionRequest < 3) {
+    o.destinationIndex = 42;
+    o.source = buildDimensionRange();
+  }
+  buildCounterMoveDimensionRequest--;
+  return o;
+}
+
+checkMoveDimensionRequest(api.MoveDimensionRequest o) {
+  buildCounterMoveDimensionRequest++;
+  if (buildCounterMoveDimensionRequest < 3) {
+    unittest.expect(o.destinationIndex, unittest.equals(42));
+    checkDimensionRange(o.source);
+  }
+  buildCounterMoveDimensionRequest--;
+}
+
+core.int buildCounterNamedRange = 0;
+buildNamedRange() {
+  var o = new api.NamedRange();
+  buildCounterNamedRange++;
+  if (buildCounterNamedRange < 3) {
+    o.name = "foo";
+    o.namedRangeId = "foo";
+    o.range = buildGridRange();
+  }
+  buildCounterNamedRange--;
+  return o;
+}
+
+checkNamedRange(api.NamedRange o) {
+  buildCounterNamedRange++;
+  if (buildCounterNamedRange < 3) {
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.namedRangeId, unittest.equals('foo'));
+    checkGridRange(o.range);
+  }
+  buildCounterNamedRange--;
+}
+
+core.int buildCounterNumberFormat = 0;
+buildNumberFormat() {
+  var o = new api.NumberFormat();
+  buildCounterNumberFormat++;
+  if (buildCounterNumberFormat < 3) {
+    o.pattern = "foo";
+    o.type = "foo";
+  }
+  buildCounterNumberFormat--;
+  return o;
+}
+
+checkNumberFormat(api.NumberFormat o) {
+  buildCounterNumberFormat++;
+  if (buildCounterNumberFormat < 3) {
+    unittest.expect(o.pattern, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterNumberFormat--;
+}
+
+core.int buildCounterOrgChartSpec = 0;
+buildOrgChartSpec() {
+  var o = new api.OrgChartSpec();
+  buildCounterOrgChartSpec++;
+  if (buildCounterOrgChartSpec < 3) {
+    o.labels = buildChartData();
+    o.nodeColor = buildColor();
+    o.nodeSize = "foo";
+    o.parentLabels = buildChartData();
+    o.selectedNodeColor = buildColor();
+    o.tooltips = buildChartData();
+  }
+  buildCounterOrgChartSpec--;
+  return o;
+}
+
+checkOrgChartSpec(api.OrgChartSpec o) {
+  buildCounterOrgChartSpec++;
+  if (buildCounterOrgChartSpec < 3) {
+    checkChartData(o.labels);
+    checkColor(o.nodeColor);
+    unittest.expect(o.nodeSize, unittest.equals('foo'));
+    checkChartData(o.parentLabels);
+    checkColor(o.selectedNodeColor);
+    checkChartData(o.tooltips);
+  }
+  buildCounterOrgChartSpec--;
+}
+
+core.int buildCounterOverlayPosition = 0;
+buildOverlayPosition() {
+  var o = new api.OverlayPosition();
+  buildCounterOverlayPosition++;
+  if (buildCounterOverlayPosition < 3) {
+    o.anchorCell = buildGridCoordinate();
+    o.heightPixels = 42;
+    o.offsetXPixels = 42;
+    o.offsetYPixels = 42;
+    o.widthPixels = 42;
+  }
+  buildCounterOverlayPosition--;
+  return o;
+}
+
+checkOverlayPosition(api.OverlayPosition o) {
+  buildCounterOverlayPosition++;
+  if (buildCounterOverlayPosition < 3) {
+    checkGridCoordinate(o.anchorCell);
+    unittest.expect(o.heightPixels, unittest.equals(42));
+    unittest.expect(o.offsetXPixels, unittest.equals(42));
+    unittest.expect(o.offsetYPixels, unittest.equals(42));
+    unittest.expect(o.widthPixels, unittest.equals(42));
+  }
+  buildCounterOverlayPosition--;
+}
+
+core.int buildCounterPadding = 0;
+buildPadding() {
+  var o = new api.Padding();
+  buildCounterPadding++;
+  if (buildCounterPadding < 3) {
+    o.bottom = 42;
+    o.left = 42;
+    o.right = 42;
+    o.top = 42;
+  }
+  buildCounterPadding--;
+  return o;
+}
+
+checkPadding(api.Padding o) {
+  buildCounterPadding++;
+  if (buildCounterPadding < 3) {
+    unittest.expect(o.bottom, unittest.equals(42));
+    unittest.expect(o.left, unittest.equals(42));
+    unittest.expect(o.right, unittest.equals(42));
+    unittest.expect(o.top, unittest.equals(42));
+  }
+  buildCounterPadding--;
+}
+
+core.int buildCounterPasteDataRequest = 0;
+buildPasteDataRequest() {
+  var o = new api.PasteDataRequest();
+  buildCounterPasteDataRequest++;
+  if (buildCounterPasteDataRequest < 3) {
+    o.coordinate = buildGridCoordinate();
+    o.data = "foo";
+    o.delimiter = "foo";
+    o.html = true;
+    o.type = "foo";
+  }
+  buildCounterPasteDataRequest--;
+  return o;
+}
+
+checkPasteDataRequest(api.PasteDataRequest o) {
+  buildCounterPasteDataRequest++;
+  if (buildCounterPasteDataRequest < 3) {
+    checkGridCoordinate(o.coordinate);
+    unittest.expect(o.data, unittest.equals('foo'));
+    unittest.expect(o.delimiter, unittest.equals('foo'));
+    unittest.expect(o.html, unittest.isTrue);
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterPasteDataRequest--;
+}
+
+core.int buildCounterPieChartSpec = 0;
+buildPieChartSpec() {
+  var o = new api.PieChartSpec();
+  buildCounterPieChartSpec++;
+  if (buildCounterPieChartSpec < 3) {
+    o.domain = buildChartData();
+    o.legendPosition = "foo";
+    o.pieHole = 42.0;
+    o.series = buildChartData();
+    o.threeDimensional = true;
+  }
+  buildCounterPieChartSpec--;
+  return o;
+}
+
+checkPieChartSpec(api.PieChartSpec o) {
+  buildCounterPieChartSpec++;
+  if (buildCounterPieChartSpec < 3) {
+    checkChartData(o.domain);
+    unittest.expect(o.legendPosition, unittest.equals('foo'));
+    unittest.expect(o.pieHole, unittest.equals(42.0));
+    checkChartData(o.series);
+    unittest.expect(o.threeDimensional, unittest.isTrue);
+  }
+  buildCounterPieChartSpec--;
+}
+
+buildUnnamed473() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed473(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPivotFilterCriteria = 0;
+buildPivotFilterCriteria() {
+  var o = new api.PivotFilterCriteria();
+  buildCounterPivotFilterCriteria++;
+  if (buildCounterPivotFilterCriteria < 3) {
+    o.visibleValues = buildUnnamed473();
+  }
+  buildCounterPivotFilterCriteria--;
+  return o;
+}
+
+checkPivotFilterCriteria(api.PivotFilterCriteria o) {
+  buildCounterPivotFilterCriteria++;
+  if (buildCounterPivotFilterCriteria < 3) {
+    checkUnnamed473(o.visibleValues);
+  }
+  buildCounterPivotFilterCriteria--;
+}
+
+buildUnnamed474() {
+  var o = new core.List<api.PivotGroupValueMetadata>();
+  o.add(buildPivotGroupValueMetadata());
+  o.add(buildPivotGroupValueMetadata());
+  return o;
+}
+
+checkUnnamed474(core.List<api.PivotGroupValueMetadata> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPivotGroupValueMetadata(o[0]);
+  checkPivotGroupValueMetadata(o[1]);
+}
+
+core.int buildCounterPivotGroup = 0;
+buildPivotGroup() {
+  var o = new api.PivotGroup();
+  buildCounterPivotGroup++;
+  if (buildCounterPivotGroup < 3) {
+    o.showTotals = true;
+    o.sortOrder = "foo";
+    o.sourceColumnOffset = 42;
+    o.valueBucket = buildPivotGroupSortValueBucket();
+    o.valueMetadata = buildUnnamed474();
+  }
+  buildCounterPivotGroup--;
+  return o;
+}
+
+checkPivotGroup(api.PivotGroup o) {
+  buildCounterPivotGroup++;
+  if (buildCounterPivotGroup < 3) {
+    unittest.expect(o.showTotals, unittest.isTrue);
+    unittest.expect(o.sortOrder, unittest.equals('foo'));
+    unittest.expect(o.sourceColumnOffset, unittest.equals(42));
+    checkPivotGroupSortValueBucket(o.valueBucket);
+    checkUnnamed474(o.valueMetadata);
+  }
+  buildCounterPivotGroup--;
+}
+
+buildUnnamed475() {
+  var o = new core.List<api.ExtendedValue>();
+  o.add(buildExtendedValue());
+  o.add(buildExtendedValue());
+  return o;
+}
+
+checkUnnamed475(core.List<api.ExtendedValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkExtendedValue(o[0]);
+  checkExtendedValue(o[1]);
+}
+
+core.int buildCounterPivotGroupSortValueBucket = 0;
+buildPivotGroupSortValueBucket() {
+  var o = new api.PivotGroupSortValueBucket();
+  buildCounterPivotGroupSortValueBucket++;
+  if (buildCounterPivotGroupSortValueBucket < 3) {
+    o.buckets = buildUnnamed475();
+    o.valuesIndex = 42;
+  }
+  buildCounterPivotGroupSortValueBucket--;
+  return o;
+}
+
+checkPivotGroupSortValueBucket(api.PivotGroupSortValueBucket o) {
+  buildCounterPivotGroupSortValueBucket++;
+  if (buildCounterPivotGroupSortValueBucket < 3) {
+    checkUnnamed475(o.buckets);
+    unittest.expect(o.valuesIndex, unittest.equals(42));
+  }
+  buildCounterPivotGroupSortValueBucket--;
+}
+
+core.int buildCounterPivotGroupValueMetadata = 0;
+buildPivotGroupValueMetadata() {
+  var o = new api.PivotGroupValueMetadata();
+  buildCounterPivotGroupValueMetadata++;
+  if (buildCounterPivotGroupValueMetadata < 3) {
+    o.collapsed = true;
+    o.value = buildExtendedValue();
+  }
+  buildCounterPivotGroupValueMetadata--;
+  return o;
+}
+
+checkPivotGroupValueMetadata(api.PivotGroupValueMetadata o) {
+  buildCounterPivotGroupValueMetadata++;
+  if (buildCounterPivotGroupValueMetadata < 3) {
+    unittest.expect(o.collapsed, unittest.isTrue);
+    checkExtendedValue(o.value);
+  }
+  buildCounterPivotGroupValueMetadata--;
+}
+
+buildUnnamed476() {
+  var o = new core.List<api.PivotGroup>();
+  o.add(buildPivotGroup());
+  o.add(buildPivotGroup());
+  return o;
+}
+
+checkUnnamed476(core.List<api.PivotGroup> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPivotGroup(o[0]);
+  checkPivotGroup(o[1]);
+}
+
+buildUnnamed477() {
+  var o = new core.Map<core.String, api.PivotFilterCriteria>();
+  o["x"] = buildPivotFilterCriteria();
+  o["y"] = buildPivotFilterCriteria();
+  return o;
+}
+
+checkUnnamed477(core.Map<core.String, api.PivotFilterCriteria> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPivotFilterCriteria(o["x"]);
+  checkPivotFilterCriteria(o["y"]);
+}
+
+buildUnnamed478() {
+  var o = new core.List<api.PivotGroup>();
+  o.add(buildPivotGroup());
+  o.add(buildPivotGroup());
+  return o;
+}
+
+checkUnnamed478(core.List<api.PivotGroup> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPivotGroup(o[0]);
+  checkPivotGroup(o[1]);
+}
+
+buildUnnamed479() {
+  var o = new core.List<api.PivotValue>();
+  o.add(buildPivotValue());
+  o.add(buildPivotValue());
+  return o;
+}
+
+checkUnnamed479(core.List<api.PivotValue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPivotValue(o[0]);
+  checkPivotValue(o[1]);
+}
+
+core.int buildCounterPivotTable = 0;
+buildPivotTable() {
+  var o = new api.PivotTable();
+  buildCounterPivotTable++;
+  if (buildCounterPivotTable < 3) {
+    o.columns = buildUnnamed476();
+    o.criteria = buildUnnamed477();
+    o.rows = buildUnnamed478();
+    o.source = buildGridRange();
+    o.valueLayout = "foo";
+    o.values = buildUnnamed479();
+  }
+  buildCounterPivotTable--;
+  return o;
+}
+
+checkPivotTable(api.PivotTable o) {
+  buildCounterPivotTable++;
+  if (buildCounterPivotTable < 3) {
+    checkUnnamed476(o.columns);
+    checkUnnamed477(o.criteria);
+    checkUnnamed478(o.rows);
+    checkGridRange(o.source);
+    unittest.expect(o.valueLayout, unittest.equals('foo'));
+    checkUnnamed479(o.values);
+  }
+  buildCounterPivotTable--;
+}
+
+core.int buildCounterPivotValue = 0;
+buildPivotValue() {
+  var o = new api.PivotValue();
+  buildCounterPivotValue++;
+  if (buildCounterPivotValue < 3) {
+    o.formula = "foo";
+    o.name = "foo";
+    o.sourceColumnOffset = 42;
+    o.summarizeFunction = "foo";
+  }
+  buildCounterPivotValue--;
+  return o;
+}
+
+checkPivotValue(api.PivotValue o) {
+  buildCounterPivotValue++;
+  if (buildCounterPivotValue < 3) {
+    unittest.expect(o.formula, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.sourceColumnOffset, unittest.equals(42));
+    unittest.expect(o.summarizeFunction, unittest.equals('foo'));
+  }
+  buildCounterPivotValue--;
+}
+
+buildUnnamed480() {
+  var o = new core.List<api.GridRange>();
+  o.add(buildGridRange());
+  o.add(buildGridRange());
+  return o;
+}
+
+checkUnnamed480(core.List<api.GridRange> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGridRange(o[0]);
+  checkGridRange(o[1]);
+}
+
+core.int buildCounterProtectedRange = 0;
+buildProtectedRange() {
+  var o = new api.ProtectedRange();
+  buildCounterProtectedRange++;
+  if (buildCounterProtectedRange < 3) {
+    o.description = "foo";
+    o.editors = buildEditors();
+    o.namedRangeId = "foo";
+    o.protectedRangeId = 42;
+    o.range = buildGridRange();
+    o.requestingUserCanEdit = true;
+    o.unprotectedRanges = buildUnnamed480();
+    o.warningOnly = true;
+  }
+  buildCounterProtectedRange--;
+  return o;
+}
+
+checkProtectedRange(api.ProtectedRange o) {
+  buildCounterProtectedRange++;
+  if (buildCounterProtectedRange < 3) {
+    unittest.expect(o.description, unittest.equals('foo'));
+    checkEditors(o.editors);
+    unittest.expect(o.namedRangeId, unittest.equals('foo'));
+    unittest.expect(o.protectedRangeId, unittest.equals(42));
+    checkGridRange(o.range);
+    unittest.expect(o.requestingUserCanEdit, unittest.isTrue);
+    checkUnnamed480(o.unprotectedRanges);
+    unittest.expect(o.warningOnly, unittest.isTrue);
+  }
+  buildCounterProtectedRange--;
+}
+
+core.int buildCounterRandomizeRangeRequest = 0;
+buildRandomizeRangeRequest() {
+  var o = new api.RandomizeRangeRequest();
+  buildCounterRandomizeRangeRequest++;
+  if (buildCounterRandomizeRangeRequest < 3) {
+    o.range = buildGridRange();
+  }
+  buildCounterRandomizeRangeRequest--;
+  return o;
+}
+
+checkRandomizeRangeRequest(api.RandomizeRangeRequest o) {
+  buildCounterRandomizeRangeRequest++;
+  if (buildCounterRandomizeRangeRequest < 3) {
+    checkGridRange(o.range);
+  }
+  buildCounterRandomizeRangeRequest--;
+}
+
+core.int buildCounterRepeatCellRequest = 0;
+buildRepeatCellRequest() {
+  var o = new api.RepeatCellRequest();
+  buildCounterRepeatCellRequest++;
+  if (buildCounterRepeatCellRequest < 3) {
+    o.cell = buildCellData();
+    o.fields = "foo";
+    o.range = buildGridRange();
+  }
+  buildCounterRepeatCellRequest--;
+  return o;
+}
+
+checkRepeatCellRequest(api.RepeatCellRequest o) {
+  buildCounterRepeatCellRequest++;
+  if (buildCounterRepeatCellRequest < 3) {
+    checkCellData(o.cell);
+    unittest.expect(o.fields, unittest.equals('foo'));
+    checkGridRange(o.range);
+  }
+  buildCounterRepeatCellRequest--;
+}
+
+core.int buildCounterRequest = 0;
+buildRequest() {
+  var o = new api.Request();
+  buildCounterRequest++;
+  if (buildCounterRequest < 3) {
+    o.addBanding = buildAddBandingRequest();
+    o.addChart = buildAddChartRequest();
+    o.addConditionalFormatRule = buildAddConditionalFormatRuleRequest();
+    o.addFilterView = buildAddFilterViewRequest();
+    o.addNamedRange = buildAddNamedRangeRequest();
+    o.addProtectedRange = buildAddProtectedRangeRequest();
+    o.addSheet = buildAddSheetRequest();
+    o.appendCells = buildAppendCellsRequest();
+    o.appendDimension = buildAppendDimensionRequest();
+    o.autoFill = buildAutoFillRequest();
+    o.autoResizeDimensions = buildAutoResizeDimensionsRequest();
+    o.clearBasicFilter = buildClearBasicFilterRequest();
+    o.copyPaste = buildCopyPasteRequest();
+    o.createDeveloperMetadata = buildCreateDeveloperMetadataRequest();
+    o.cutPaste = buildCutPasteRequest();
+    o.deleteBanding = buildDeleteBandingRequest();
+    o.deleteConditionalFormatRule = buildDeleteConditionalFormatRuleRequest();
+    o.deleteDeveloperMetadata = buildDeleteDeveloperMetadataRequest();
+    o.deleteDimension = buildDeleteDimensionRequest();
+    o.deleteEmbeddedObject = buildDeleteEmbeddedObjectRequest();
+    o.deleteFilterView = buildDeleteFilterViewRequest();
+    o.deleteNamedRange = buildDeleteNamedRangeRequest();
+    o.deleteProtectedRange = buildDeleteProtectedRangeRequest();
+    o.deleteRange = buildDeleteRangeRequest();
+    o.deleteSheet = buildDeleteSheetRequest();
+    o.duplicateFilterView = buildDuplicateFilterViewRequest();
+    o.duplicateSheet = buildDuplicateSheetRequest();
+    o.findReplace = buildFindReplaceRequest();
+    o.insertDimension = buildInsertDimensionRequest();
+    o.insertRange = buildInsertRangeRequest();
+    o.mergeCells = buildMergeCellsRequest();
+    o.moveDimension = buildMoveDimensionRequest();
+    o.pasteData = buildPasteDataRequest();
+    o.randomizeRange = buildRandomizeRangeRequest();
+    o.repeatCell = buildRepeatCellRequest();
+    o.setBasicFilter = buildSetBasicFilterRequest();
+    o.setDataValidation = buildSetDataValidationRequest();
+    o.sortRange = buildSortRangeRequest();
+    o.textToColumns = buildTextToColumnsRequest();
+    o.unmergeCells = buildUnmergeCellsRequest();
+    o.updateBanding = buildUpdateBandingRequest();
+    o.updateBorders = buildUpdateBordersRequest();
+    o.updateCells = buildUpdateCellsRequest();
+    o.updateChartSpec = buildUpdateChartSpecRequest();
+    o.updateConditionalFormatRule = buildUpdateConditionalFormatRuleRequest();
+    o.updateDeveloperMetadata = buildUpdateDeveloperMetadataRequest();
+    o.updateDimensionProperties = buildUpdateDimensionPropertiesRequest();
+    o.updateEmbeddedObjectPosition = buildUpdateEmbeddedObjectPositionRequest();
+    o.updateFilterView = buildUpdateFilterViewRequest();
+    o.updateNamedRange = buildUpdateNamedRangeRequest();
+    o.updateProtectedRange = buildUpdateProtectedRangeRequest();
+    o.updateSheetProperties = buildUpdateSheetPropertiesRequest();
+    o.updateSpreadsheetProperties = buildUpdateSpreadsheetPropertiesRequest();
+  }
+  buildCounterRequest--;
+  return o;
+}
+
+checkRequest(api.Request o) {
+  buildCounterRequest++;
+  if (buildCounterRequest < 3) {
+    checkAddBandingRequest(o.addBanding);
+    checkAddChartRequest(o.addChart);
+    checkAddConditionalFormatRuleRequest(o.addConditionalFormatRule);
+    checkAddFilterViewRequest(o.addFilterView);
+    checkAddNamedRangeRequest(o.addNamedRange);
+    checkAddProtectedRangeRequest(o.addProtectedRange);
+    checkAddSheetRequest(o.addSheet);
+    checkAppendCellsRequest(o.appendCells);
+    checkAppendDimensionRequest(o.appendDimension);
+    checkAutoFillRequest(o.autoFill);
+    checkAutoResizeDimensionsRequest(o.autoResizeDimensions);
+    checkClearBasicFilterRequest(o.clearBasicFilter);
+    checkCopyPasteRequest(o.copyPaste);
+    checkCreateDeveloperMetadataRequest(o.createDeveloperMetadata);
+    checkCutPasteRequest(o.cutPaste);
+    checkDeleteBandingRequest(o.deleteBanding);
+    checkDeleteConditionalFormatRuleRequest(o.deleteConditionalFormatRule);
+    checkDeleteDeveloperMetadataRequest(o.deleteDeveloperMetadata);
+    checkDeleteDimensionRequest(o.deleteDimension);
+    checkDeleteEmbeddedObjectRequest(o.deleteEmbeddedObject);
+    checkDeleteFilterViewRequest(o.deleteFilterView);
+    checkDeleteNamedRangeRequest(o.deleteNamedRange);
+    checkDeleteProtectedRangeRequest(o.deleteProtectedRange);
+    checkDeleteRangeRequest(o.deleteRange);
+    checkDeleteSheetRequest(o.deleteSheet);
+    checkDuplicateFilterViewRequest(o.duplicateFilterView);
+    checkDuplicateSheetRequest(o.duplicateSheet);
+    checkFindReplaceRequest(o.findReplace);
+    checkInsertDimensionRequest(o.insertDimension);
+    checkInsertRangeRequest(o.insertRange);
+    checkMergeCellsRequest(o.mergeCells);
+    checkMoveDimensionRequest(o.moveDimension);
+    checkPasteDataRequest(o.pasteData);
+    checkRandomizeRangeRequest(o.randomizeRange);
+    checkRepeatCellRequest(o.repeatCell);
+    checkSetBasicFilterRequest(o.setBasicFilter);
+    checkSetDataValidationRequest(o.setDataValidation);
+    checkSortRangeRequest(o.sortRange);
+    checkTextToColumnsRequest(o.textToColumns);
+    checkUnmergeCellsRequest(o.unmergeCells);
+    checkUpdateBandingRequest(o.updateBanding);
+    checkUpdateBordersRequest(o.updateBorders);
+    checkUpdateCellsRequest(o.updateCells);
+    checkUpdateChartSpecRequest(o.updateChartSpec);
+    checkUpdateConditionalFormatRuleRequest(o.updateConditionalFormatRule);
+    checkUpdateDeveloperMetadataRequest(o.updateDeveloperMetadata);
+    checkUpdateDimensionPropertiesRequest(o.updateDimensionProperties);
+    checkUpdateEmbeddedObjectPositionRequest(o.updateEmbeddedObjectPosition);
+    checkUpdateFilterViewRequest(o.updateFilterView);
+    checkUpdateNamedRangeRequest(o.updateNamedRange);
+    checkUpdateProtectedRangeRequest(o.updateProtectedRange);
+    checkUpdateSheetPropertiesRequest(o.updateSheetProperties);
+    checkUpdateSpreadsheetPropertiesRequest(o.updateSpreadsheetProperties);
+  }
+  buildCounterRequest--;
+}
+
+core.int buildCounterResponse = 0;
+buildResponse() {
+  var o = new api.Response();
+  buildCounterResponse++;
+  if (buildCounterResponse < 3) {
+    o.addBanding = buildAddBandingResponse();
+    o.addChart = buildAddChartResponse();
+    o.addFilterView = buildAddFilterViewResponse();
+    o.addNamedRange = buildAddNamedRangeResponse();
+    o.addProtectedRange = buildAddProtectedRangeResponse();
+    o.addSheet = buildAddSheetResponse();
+    o.createDeveloperMetadata = buildCreateDeveloperMetadataResponse();
+    o.deleteConditionalFormatRule = buildDeleteConditionalFormatRuleResponse();
+    o.deleteDeveloperMetadata = buildDeleteDeveloperMetadataResponse();
+    o.duplicateFilterView = buildDuplicateFilterViewResponse();
+    o.duplicateSheet = buildDuplicateSheetResponse();
+    o.findReplace = buildFindReplaceResponse();
+    o.updateConditionalFormatRule = buildUpdateConditionalFormatRuleResponse();
+    o.updateDeveloperMetadata = buildUpdateDeveloperMetadataResponse();
+    o.updateEmbeddedObjectPosition =
+        buildUpdateEmbeddedObjectPositionResponse();
+  }
+  buildCounterResponse--;
+  return o;
+}
+
+checkResponse(api.Response o) {
+  buildCounterResponse++;
+  if (buildCounterResponse < 3) {
+    checkAddBandingResponse(o.addBanding);
+    checkAddChartResponse(o.addChart);
+    checkAddFilterViewResponse(o.addFilterView);
+    checkAddNamedRangeResponse(o.addNamedRange);
+    checkAddProtectedRangeResponse(o.addProtectedRange);
+    checkAddSheetResponse(o.addSheet);
+    checkCreateDeveloperMetadataResponse(o.createDeveloperMetadata);
+    checkDeleteConditionalFormatRuleResponse(o.deleteConditionalFormatRule);
+    checkDeleteDeveloperMetadataResponse(o.deleteDeveloperMetadata);
+    checkDuplicateFilterViewResponse(o.duplicateFilterView);
+    checkDuplicateSheetResponse(o.duplicateSheet);
+    checkFindReplaceResponse(o.findReplace);
+    checkUpdateConditionalFormatRuleResponse(o.updateConditionalFormatRule);
+    checkUpdateDeveloperMetadataResponse(o.updateDeveloperMetadata);
+    checkUpdateEmbeddedObjectPositionResponse(o.updateEmbeddedObjectPosition);
+  }
+  buildCounterResponse--;
+}
+
+buildUnnamed481() {
+  var o = new core.List<api.CellData>();
+  o.add(buildCellData());
+  o.add(buildCellData());
+  return o;
+}
+
+checkUnnamed481(core.List<api.CellData> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCellData(o[0]);
+  checkCellData(o[1]);
+}
+
+core.int buildCounterRowData = 0;
+buildRowData() {
+  var o = new api.RowData();
+  buildCounterRowData++;
+  if (buildCounterRowData < 3) {
+    o.values = buildUnnamed481();
+  }
+  buildCounterRowData--;
+  return o;
+}
+
+checkRowData(api.RowData o) {
+  buildCounterRowData++;
+  if (buildCounterRowData < 3) {
+    checkUnnamed481(o.values);
+  }
+  buildCounterRowData--;
+}
+
+buildUnnamed482() {
+  var o = new core.List<api.DataFilter>();
+  o.add(buildDataFilter());
+  o.add(buildDataFilter());
+  return o;
+}
+
+checkUnnamed482(core.List<api.DataFilter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataFilter(o[0]);
+  checkDataFilter(o[1]);
+}
+
+core.int buildCounterSearchDeveloperMetadataRequest = 0;
+buildSearchDeveloperMetadataRequest() {
+  var o = new api.SearchDeveloperMetadataRequest();
+  buildCounterSearchDeveloperMetadataRequest++;
+  if (buildCounterSearchDeveloperMetadataRequest < 3) {
+    o.dataFilters = buildUnnamed482();
+  }
+  buildCounterSearchDeveloperMetadataRequest--;
+  return o;
+}
+
+checkSearchDeveloperMetadataRequest(api.SearchDeveloperMetadataRequest o) {
+  buildCounterSearchDeveloperMetadataRequest++;
+  if (buildCounterSearchDeveloperMetadataRequest < 3) {
+    checkUnnamed482(o.dataFilters);
+  }
+  buildCounterSearchDeveloperMetadataRequest--;
+}
+
+buildUnnamed483() {
+  var o = new core.List<api.MatchedDeveloperMetadata>();
+  o.add(buildMatchedDeveloperMetadata());
+  o.add(buildMatchedDeveloperMetadata());
+  return o;
+}
+
+checkUnnamed483(core.List<api.MatchedDeveloperMetadata> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMatchedDeveloperMetadata(o[0]);
+  checkMatchedDeveloperMetadata(o[1]);
+}
+
+core.int buildCounterSearchDeveloperMetadataResponse = 0;
+buildSearchDeveloperMetadataResponse() {
+  var o = new api.SearchDeveloperMetadataResponse();
+  buildCounterSearchDeveloperMetadataResponse++;
+  if (buildCounterSearchDeveloperMetadataResponse < 3) {
+    o.matchedDeveloperMetadata = buildUnnamed483();
+  }
+  buildCounterSearchDeveloperMetadataResponse--;
+  return o;
+}
+
+checkSearchDeveloperMetadataResponse(api.SearchDeveloperMetadataResponse o) {
+  buildCounterSearchDeveloperMetadataResponse++;
+  if (buildCounterSearchDeveloperMetadataResponse < 3) {
+    checkUnnamed483(o.matchedDeveloperMetadata);
+  }
+  buildCounterSearchDeveloperMetadataResponse--;
+}
+
+core.int buildCounterSetBasicFilterRequest = 0;
+buildSetBasicFilterRequest() {
+  var o = new api.SetBasicFilterRequest();
+  buildCounterSetBasicFilterRequest++;
+  if (buildCounterSetBasicFilterRequest < 3) {
+    o.filter = buildBasicFilter();
+  }
+  buildCounterSetBasicFilterRequest--;
+  return o;
+}
+
+checkSetBasicFilterRequest(api.SetBasicFilterRequest o) {
+  buildCounterSetBasicFilterRequest++;
+  if (buildCounterSetBasicFilterRequest < 3) {
+    checkBasicFilter(o.filter);
+  }
+  buildCounterSetBasicFilterRequest--;
+}
+
+core.int buildCounterSetDataValidationRequest = 0;
+buildSetDataValidationRequest() {
+  var o = new api.SetDataValidationRequest();
+  buildCounterSetDataValidationRequest++;
+  if (buildCounterSetDataValidationRequest < 3) {
+    o.range = buildGridRange();
+    o.rule = buildDataValidationRule();
+  }
+  buildCounterSetDataValidationRequest--;
+  return o;
+}
+
+checkSetDataValidationRequest(api.SetDataValidationRequest o) {
+  buildCounterSetDataValidationRequest++;
+  if (buildCounterSetDataValidationRequest < 3) {
+    checkGridRange(o.range);
+    checkDataValidationRule(o.rule);
+  }
+  buildCounterSetDataValidationRequest--;
+}
+
+buildUnnamed484() {
+  var o = new core.List<api.BandedRange>();
+  o.add(buildBandedRange());
+  o.add(buildBandedRange());
+  return o;
+}
+
+checkUnnamed484(core.List<api.BandedRange> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBandedRange(o[0]);
+  checkBandedRange(o[1]);
+}
+
+buildUnnamed485() {
+  var o = new core.List<api.EmbeddedChart>();
+  o.add(buildEmbeddedChart());
+  o.add(buildEmbeddedChart());
+  return o;
+}
+
+checkUnnamed485(core.List<api.EmbeddedChart> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEmbeddedChart(o[0]);
+  checkEmbeddedChart(o[1]);
+}
+
+buildUnnamed486() {
+  var o = new core.List<api.ConditionalFormatRule>();
+  o.add(buildConditionalFormatRule());
+  o.add(buildConditionalFormatRule());
+  return o;
+}
+
+checkUnnamed486(core.List<api.ConditionalFormatRule> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkConditionalFormatRule(o[0]);
+  checkConditionalFormatRule(o[1]);
+}
+
+buildUnnamed487() {
+  var o = new core.List<api.GridData>();
+  o.add(buildGridData());
+  o.add(buildGridData());
+  return o;
+}
+
+checkUnnamed487(core.List<api.GridData> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGridData(o[0]);
+  checkGridData(o[1]);
+}
+
+buildUnnamed488() {
+  var o = new core.List<api.DeveloperMetadata>();
+  o.add(buildDeveloperMetadata());
+  o.add(buildDeveloperMetadata());
+  return o;
+}
+
+checkUnnamed488(core.List<api.DeveloperMetadata> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDeveloperMetadata(o[0]);
+  checkDeveloperMetadata(o[1]);
+}
+
+buildUnnamed489() {
+  var o = new core.List<api.FilterView>();
+  o.add(buildFilterView());
+  o.add(buildFilterView());
+  return o;
+}
+
+checkUnnamed489(core.List<api.FilterView> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFilterView(o[0]);
+  checkFilterView(o[1]);
+}
+
+buildUnnamed490() {
+  var o = new core.List<api.GridRange>();
+  o.add(buildGridRange());
+  o.add(buildGridRange());
+  return o;
+}
+
+checkUnnamed490(core.List<api.GridRange> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGridRange(o[0]);
+  checkGridRange(o[1]);
+}
+
+buildUnnamed491() {
+  var o = new core.List<api.ProtectedRange>();
+  o.add(buildProtectedRange());
+  o.add(buildProtectedRange());
+  return o;
+}
+
+checkUnnamed491(core.List<api.ProtectedRange> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProtectedRange(o[0]);
+  checkProtectedRange(o[1]);
+}
+
+core.int buildCounterSheet = 0;
+buildSheet() {
+  var o = new api.Sheet();
+  buildCounterSheet++;
+  if (buildCounterSheet < 3) {
+    o.bandedRanges = buildUnnamed484();
+    o.basicFilter = buildBasicFilter();
+    o.charts = buildUnnamed485();
+    o.conditionalFormats = buildUnnamed486();
+    o.data = buildUnnamed487();
+    o.developerMetadata = buildUnnamed488();
+    o.filterViews = buildUnnamed489();
+    o.merges = buildUnnamed490();
+    o.properties = buildSheetProperties();
+    o.protectedRanges = buildUnnamed491();
+  }
+  buildCounterSheet--;
+  return o;
+}
+
+checkSheet(api.Sheet o) {
+  buildCounterSheet++;
+  if (buildCounterSheet < 3) {
+    checkUnnamed484(o.bandedRanges);
+    checkBasicFilter(o.basicFilter);
+    checkUnnamed485(o.charts);
+    checkUnnamed486(o.conditionalFormats);
+    checkUnnamed487(o.data);
+    checkUnnamed488(o.developerMetadata);
+    checkUnnamed489(o.filterViews);
+    checkUnnamed490(o.merges);
+    checkSheetProperties(o.properties);
+    checkUnnamed491(o.protectedRanges);
+  }
+  buildCounterSheet--;
+}
+
+core.int buildCounterSheetProperties = 0;
+buildSheetProperties() {
+  var o = new api.SheetProperties();
+  buildCounterSheetProperties++;
+  if (buildCounterSheetProperties < 3) {
+    o.gridProperties = buildGridProperties();
+    o.hidden = true;
+    o.index = 42;
+    o.rightToLeft = true;
+    o.sheetId = 42;
+    o.sheetType = "foo";
+    o.tabColor = buildColor();
+    o.title = "foo";
+  }
+  buildCounterSheetProperties--;
+  return o;
+}
+
+checkSheetProperties(api.SheetProperties o) {
+  buildCounterSheetProperties++;
+  if (buildCounterSheetProperties < 3) {
+    checkGridProperties(o.gridProperties);
+    unittest.expect(o.hidden, unittest.isTrue);
+    unittest.expect(o.index, unittest.equals(42));
+    unittest.expect(o.rightToLeft, unittest.isTrue);
+    unittest.expect(o.sheetId, unittest.equals(42));
+    unittest.expect(o.sheetType, unittest.equals('foo'));
+    checkColor(o.tabColor);
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterSheetProperties--;
+}
+
+buildUnnamed492() {
+  var o = new core.List<api.SortSpec>();
+  o.add(buildSortSpec());
+  o.add(buildSortSpec());
+  return o;
+}
+
+checkUnnamed492(core.List<api.SortSpec> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSortSpec(o[0]);
+  checkSortSpec(o[1]);
+}
+
+core.int buildCounterSortRangeRequest = 0;
+buildSortRangeRequest() {
+  var o = new api.SortRangeRequest();
+  buildCounterSortRangeRequest++;
+  if (buildCounterSortRangeRequest < 3) {
+    o.range = buildGridRange();
+    o.sortSpecs = buildUnnamed492();
+  }
+  buildCounterSortRangeRequest--;
+  return o;
+}
+
+checkSortRangeRequest(api.SortRangeRequest o) {
+  buildCounterSortRangeRequest++;
+  if (buildCounterSortRangeRequest < 3) {
+    checkGridRange(o.range);
+    checkUnnamed492(o.sortSpecs);
+  }
+  buildCounterSortRangeRequest--;
+}
+
+core.int buildCounterSortSpec = 0;
+buildSortSpec() {
+  var o = new api.SortSpec();
+  buildCounterSortSpec++;
+  if (buildCounterSortSpec < 3) {
+    o.dimensionIndex = 42;
+    o.sortOrder = "foo";
+  }
+  buildCounterSortSpec--;
+  return o;
+}
+
+checkSortSpec(api.SortSpec o) {
+  buildCounterSortSpec++;
+  if (buildCounterSortSpec < 3) {
+    unittest.expect(o.dimensionIndex, unittest.equals(42));
+    unittest.expect(o.sortOrder, unittest.equals('foo'));
+  }
+  buildCounterSortSpec--;
+}
+
+core.int buildCounterSourceAndDestination = 0;
+buildSourceAndDestination() {
+  var o = new api.SourceAndDestination();
+  buildCounterSourceAndDestination++;
+  if (buildCounterSourceAndDestination < 3) {
+    o.dimension = "foo";
+    o.fillLength = 42;
+    o.source = buildGridRange();
+  }
+  buildCounterSourceAndDestination--;
+  return o;
+}
+
+checkSourceAndDestination(api.SourceAndDestination o) {
+  buildCounterSourceAndDestination++;
+  if (buildCounterSourceAndDestination < 3) {
+    unittest.expect(o.dimension, unittest.equals('foo'));
+    unittest.expect(o.fillLength, unittest.equals(42));
+    checkGridRange(o.source);
+  }
+  buildCounterSourceAndDestination--;
+}
+
+buildUnnamed493() {
+  var o = new core.List<api.DeveloperMetadata>();
+  o.add(buildDeveloperMetadata());
+  o.add(buildDeveloperMetadata());
+  return o;
+}
+
+checkUnnamed493(core.List<api.DeveloperMetadata> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDeveloperMetadata(o[0]);
+  checkDeveloperMetadata(o[1]);
+}
+
+buildUnnamed494() {
+  var o = new core.List<api.NamedRange>();
+  o.add(buildNamedRange());
+  o.add(buildNamedRange());
+  return o;
+}
+
+checkUnnamed494(core.List<api.NamedRange> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkNamedRange(o[0]);
+  checkNamedRange(o[1]);
+}
+
+buildUnnamed495() {
+  var o = new core.List<api.Sheet>();
+  o.add(buildSheet());
+  o.add(buildSheet());
+  return o;
+}
+
+checkUnnamed495(core.List<api.Sheet> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSheet(o[0]);
+  checkSheet(o[1]);
+}
+
+core.int buildCounterSpreadsheet = 0;
+buildSpreadsheet() {
+  var o = new api.Spreadsheet();
+  buildCounterSpreadsheet++;
+  if (buildCounterSpreadsheet < 3) {
+    o.developerMetadata = buildUnnamed493();
+    o.namedRanges = buildUnnamed494();
+    o.properties = buildSpreadsheetProperties();
+    o.sheets = buildUnnamed495();
+    o.spreadsheetId = "foo";
+    o.spreadsheetUrl = "foo";
+  }
+  buildCounterSpreadsheet--;
+  return o;
+}
+
+checkSpreadsheet(api.Spreadsheet o) {
+  buildCounterSpreadsheet++;
+  if (buildCounterSpreadsheet < 3) {
+    checkUnnamed493(o.developerMetadata);
+    checkUnnamed494(o.namedRanges);
+    checkSpreadsheetProperties(o.properties);
+    checkUnnamed495(o.sheets);
+    unittest.expect(o.spreadsheetId, unittest.equals('foo'));
+    unittest.expect(o.spreadsheetUrl, unittest.equals('foo'));
+  }
+  buildCounterSpreadsheet--;
+}
+
+core.int buildCounterSpreadsheetProperties = 0;
+buildSpreadsheetProperties() {
+  var o = new api.SpreadsheetProperties();
+  buildCounterSpreadsheetProperties++;
+  if (buildCounterSpreadsheetProperties < 3) {
+    o.autoRecalc = "foo";
+    o.defaultFormat = buildCellFormat();
+    o.iterativeCalculationSettings = buildIterativeCalculationSettings();
+    o.locale = "foo";
+    o.timeZone = "foo";
+    o.title = "foo";
+  }
+  buildCounterSpreadsheetProperties--;
+  return o;
+}
+
+checkSpreadsheetProperties(api.SpreadsheetProperties o) {
+  buildCounterSpreadsheetProperties++;
+  if (buildCounterSpreadsheetProperties < 3) {
+    unittest.expect(o.autoRecalc, unittest.equals('foo'));
+    checkCellFormat(o.defaultFormat);
+    checkIterativeCalculationSettings(o.iterativeCalculationSettings);
+    unittest.expect(o.locale, unittest.equals('foo'));
+    unittest.expect(o.timeZone, unittest.equals('foo'));
+    unittest.expect(o.title, unittest.equals('foo'));
+  }
+  buildCounterSpreadsheetProperties--;
+}
+
+core.int buildCounterTextFormat = 0;
+buildTextFormat() {
+  var o = new api.TextFormat();
+  buildCounterTextFormat++;
+  if (buildCounterTextFormat < 3) {
+    o.bold = true;
+    o.fontFamily = "foo";
+    o.fontSize = 42;
+    o.foregroundColor = buildColor();
+    o.italic = true;
+    o.strikethrough = true;
+    o.underline = true;
+  }
+  buildCounterTextFormat--;
+  return o;
+}
+
+checkTextFormat(api.TextFormat o) {
+  buildCounterTextFormat++;
+  if (buildCounterTextFormat < 3) {
+    unittest.expect(o.bold, unittest.isTrue);
+    unittest.expect(o.fontFamily, unittest.equals('foo'));
+    unittest.expect(o.fontSize, unittest.equals(42));
+    checkColor(o.foregroundColor);
+    unittest.expect(o.italic, unittest.isTrue);
+    unittest.expect(o.strikethrough, unittest.isTrue);
+    unittest.expect(o.underline, unittest.isTrue);
+  }
+  buildCounterTextFormat--;
+}
+
+core.int buildCounterTextFormatRun = 0;
+buildTextFormatRun() {
+  var o = new api.TextFormatRun();
+  buildCounterTextFormatRun++;
+  if (buildCounterTextFormatRun < 3) {
+    o.format = buildTextFormat();
+    o.startIndex = 42;
+  }
+  buildCounterTextFormatRun--;
+  return o;
+}
+
+checkTextFormatRun(api.TextFormatRun o) {
+  buildCounterTextFormatRun++;
+  if (buildCounterTextFormatRun < 3) {
+    checkTextFormat(o.format);
+    unittest.expect(o.startIndex, unittest.equals(42));
+  }
+  buildCounterTextFormatRun--;
+}
+
+core.int buildCounterTextPosition = 0;
+buildTextPosition() {
+  var o = new api.TextPosition();
+  buildCounterTextPosition++;
+  if (buildCounterTextPosition < 3) {
+    o.horizontalAlignment = "foo";
+  }
+  buildCounterTextPosition--;
+  return o;
+}
+
+checkTextPosition(api.TextPosition o) {
+  buildCounterTextPosition++;
+  if (buildCounterTextPosition < 3) {
+    unittest.expect(o.horizontalAlignment, unittest.equals('foo'));
+  }
+  buildCounterTextPosition--;
+}
+
+core.int buildCounterTextRotation = 0;
+buildTextRotation() {
+  var o = new api.TextRotation();
+  buildCounterTextRotation++;
+  if (buildCounterTextRotation < 3) {
+    o.angle = 42;
+    o.vertical = true;
+  }
+  buildCounterTextRotation--;
+  return o;
+}
+
+checkTextRotation(api.TextRotation o) {
+  buildCounterTextRotation++;
+  if (buildCounterTextRotation < 3) {
+    unittest.expect(o.angle, unittest.equals(42));
+    unittest.expect(o.vertical, unittest.isTrue);
+  }
+  buildCounterTextRotation--;
+}
+
+core.int buildCounterTextToColumnsRequest = 0;
+buildTextToColumnsRequest() {
+  var o = new api.TextToColumnsRequest();
+  buildCounterTextToColumnsRequest++;
+  if (buildCounterTextToColumnsRequest < 3) {
+    o.delimiter = "foo";
+    o.delimiterType = "foo";
+    o.source = buildGridRange();
+  }
+  buildCounterTextToColumnsRequest--;
+  return o;
+}
+
+checkTextToColumnsRequest(api.TextToColumnsRequest o) {
+  buildCounterTextToColumnsRequest++;
+  if (buildCounterTextToColumnsRequest < 3) {
+    unittest.expect(o.delimiter, unittest.equals('foo'));
+    unittest.expect(o.delimiterType, unittest.equals('foo'));
+    checkGridRange(o.source);
+  }
+  buildCounterTextToColumnsRequest--;
+}
+
+core.int buildCounterUnmergeCellsRequest = 0;
+buildUnmergeCellsRequest() {
+  var o = new api.UnmergeCellsRequest();
+  buildCounterUnmergeCellsRequest++;
+  if (buildCounterUnmergeCellsRequest < 3) {
+    o.range = buildGridRange();
+  }
+  buildCounterUnmergeCellsRequest--;
+  return o;
+}
+
+checkUnmergeCellsRequest(api.UnmergeCellsRequest o) {
+  buildCounterUnmergeCellsRequest++;
+  if (buildCounterUnmergeCellsRequest < 3) {
+    checkGridRange(o.range);
+  }
+  buildCounterUnmergeCellsRequest--;
+}
+
+core.int buildCounterUpdateBandingRequest = 0;
+buildUpdateBandingRequest() {
+  var o = new api.UpdateBandingRequest();
+  buildCounterUpdateBandingRequest++;
+  if (buildCounterUpdateBandingRequest < 3) {
+    o.bandedRange = buildBandedRange();
+    o.fields = "foo";
+  }
+  buildCounterUpdateBandingRequest--;
+  return o;
+}
+
+checkUpdateBandingRequest(api.UpdateBandingRequest o) {
+  buildCounterUpdateBandingRequest++;
+  if (buildCounterUpdateBandingRequest < 3) {
+    checkBandedRange(o.bandedRange);
+    unittest.expect(o.fields, unittest.equals('foo'));
+  }
+  buildCounterUpdateBandingRequest--;
+}
+
+core.int buildCounterUpdateBordersRequest = 0;
+buildUpdateBordersRequest() {
+  var o = new api.UpdateBordersRequest();
+  buildCounterUpdateBordersRequest++;
+  if (buildCounterUpdateBordersRequest < 3) {
+    o.bottom = buildBorder();
+    o.innerHorizontal = buildBorder();
+    o.innerVertical = buildBorder();
+    o.left = buildBorder();
+    o.range = buildGridRange();
+    o.right = buildBorder();
+    o.top = buildBorder();
+  }
+  buildCounterUpdateBordersRequest--;
+  return o;
+}
+
+checkUpdateBordersRequest(api.UpdateBordersRequest o) {
+  buildCounterUpdateBordersRequest++;
+  if (buildCounterUpdateBordersRequest < 3) {
+    checkBorder(o.bottom);
+    checkBorder(o.innerHorizontal);
+    checkBorder(o.innerVertical);
+    checkBorder(o.left);
+    checkGridRange(o.range);
+    checkBorder(o.right);
+    checkBorder(o.top);
+  }
+  buildCounterUpdateBordersRequest--;
+}
+
+buildUnnamed496() {
+  var o = new core.List<api.RowData>();
+  o.add(buildRowData());
+  o.add(buildRowData());
+  return o;
+}
+
+checkUnnamed496(core.List<api.RowData> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRowData(o[0]);
+  checkRowData(o[1]);
+}
+
+core.int buildCounterUpdateCellsRequest = 0;
+buildUpdateCellsRequest() {
+  var o = new api.UpdateCellsRequest();
+  buildCounterUpdateCellsRequest++;
+  if (buildCounterUpdateCellsRequest < 3) {
+    o.fields = "foo";
+    o.range = buildGridRange();
+    o.rows = buildUnnamed496();
+    o.start = buildGridCoordinate();
+  }
+  buildCounterUpdateCellsRequest--;
+  return o;
+}
+
+checkUpdateCellsRequest(api.UpdateCellsRequest o) {
+  buildCounterUpdateCellsRequest++;
+  if (buildCounterUpdateCellsRequest < 3) {
+    unittest.expect(o.fields, unittest.equals('foo'));
+    checkGridRange(o.range);
+    checkUnnamed496(o.rows);
+    checkGridCoordinate(o.start);
+  }
+  buildCounterUpdateCellsRequest--;
+}
+
+core.int buildCounterUpdateChartSpecRequest = 0;
+buildUpdateChartSpecRequest() {
+  var o = new api.UpdateChartSpecRequest();
+  buildCounterUpdateChartSpecRequest++;
+  if (buildCounterUpdateChartSpecRequest < 3) {
+    o.chartId = 42;
+    o.spec = buildChartSpec();
+  }
+  buildCounterUpdateChartSpecRequest--;
+  return o;
+}
+
+checkUpdateChartSpecRequest(api.UpdateChartSpecRequest o) {
+  buildCounterUpdateChartSpecRequest++;
+  if (buildCounterUpdateChartSpecRequest < 3) {
+    unittest.expect(o.chartId, unittest.equals(42));
+    checkChartSpec(o.spec);
+  }
+  buildCounterUpdateChartSpecRequest--;
+}
+
+core.int buildCounterUpdateConditionalFormatRuleRequest = 0;
+buildUpdateConditionalFormatRuleRequest() {
+  var o = new api.UpdateConditionalFormatRuleRequest();
+  buildCounterUpdateConditionalFormatRuleRequest++;
+  if (buildCounterUpdateConditionalFormatRuleRequest < 3) {
+    o.index = 42;
+    o.newIndex = 42;
+    o.rule = buildConditionalFormatRule();
+    o.sheetId = 42;
+  }
+  buildCounterUpdateConditionalFormatRuleRequest--;
+  return o;
+}
+
+checkUpdateConditionalFormatRuleRequest(
+    api.UpdateConditionalFormatRuleRequest o) {
+  buildCounterUpdateConditionalFormatRuleRequest++;
+  if (buildCounterUpdateConditionalFormatRuleRequest < 3) {
+    unittest.expect(o.index, unittest.equals(42));
+    unittest.expect(o.newIndex, unittest.equals(42));
+    checkConditionalFormatRule(o.rule);
+    unittest.expect(o.sheetId, unittest.equals(42));
+  }
+  buildCounterUpdateConditionalFormatRuleRequest--;
+}
+
+core.int buildCounterUpdateConditionalFormatRuleResponse = 0;
+buildUpdateConditionalFormatRuleResponse() {
+  var o = new api.UpdateConditionalFormatRuleResponse();
+  buildCounterUpdateConditionalFormatRuleResponse++;
+  if (buildCounterUpdateConditionalFormatRuleResponse < 3) {
+    o.newIndex = 42;
+    o.newRule = buildConditionalFormatRule();
+    o.oldIndex = 42;
+    o.oldRule = buildConditionalFormatRule();
+  }
+  buildCounterUpdateConditionalFormatRuleResponse--;
+  return o;
+}
+
+checkUpdateConditionalFormatRuleResponse(
+    api.UpdateConditionalFormatRuleResponse o) {
+  buildCounterUpdateConditionalFormatRuleResponse++;
+  if (buildCounterUpdateConditionalFormatRuleResponse < 3) {
+    unittest.expect(o.newIndex, unittest.equals(42));
+    checkConditionalFormatRule(o.newRule);
+    unittest.expect(o.oldIndex, unittest.equals(42));
+    checkConditionalFormatRule(o.oldRule);
+  }
+  buildCounterUpdateConditionalFormatRuleResponse--;
+}
+
+buildUnnamed497() {
+  var o = new core.List<api.DataFilter>();
+  o.add(buildDataFilter());
+  o.add(buildDataFilter());
+  return o;
+}
+
+checkUnnamed497(core.List<api.DataFilter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDataFilter(o[0]);
+  checkDataFilter(o[1]);
+}
+
+core.int buildCounterUpdateDeveloperMetadataRequest = 0;
+buildUpdateDeveloperMetadataRequest() {
+  var o = new api.UpdateDeveloperMetadataRequest();
+  buildCounterUpdateDeveloperMetadataRequest++;
+  if (buildCounterUpdateDeveloperMetadataRequest < 3) {
+    o.dataFilters = buildUnnamed497();
+    o.developerMetadata = buildDeveloperMetadata();
+    o.fields = "foo";
+  }
+  buildCounterUpdateDeveloperMetadataRequest--;
+  return o;
+}
+
+checkUpdateDeveloperMetadataRequest(api.UpdateDeveloperMetadataRequest o) {
+  buildCounterUpdateDeveloperMetadataRequest++;
+  if (buildCounterUpdateDeveloperMetadataRequest < 3) {
+    checkUnnamed497(o.dataFilters);
+    checkDeveloperMetadata(o.developerMetadata);
+    unittest.expect(o.fields, unittest.equals('foo'));
+  }
+  buildCounterUpdateDeveloperMetadataRequest--;
+}
+
+buildUnnamed498() {
+  var o = new core.List<api.DeveloperMetadata>();
+  o.add(buildDeveloperMetadata());
+  o.add(buildDeveloperMetadata());
+  return o;
+}
+
+checkUnnamed498(core.List<api.DeveloperMetadata> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDeveloperMetadata(o[0]);
+  checkDeveloperMetadata(o[1]);
+}
+
+core.int buildCounterUpdateDeveloperMetadataResponse = 0;
+buildUpdateDeveloperMetadataResponse() {
+  var o = new api.UpdateDeveloperMetadataResponse();
+  buildCounterUpdateDeveloperMetadataResponse++;
+  if (buildCounterUpdateDeveloperMetadataResponse < 3) {
+    o.developerMetadata = buildUnnamed498();
+  }
+  buildCounterUpdateDeveloperMetadataResponse--;
+  return o;
+}
+
+checkUpdateDeveloperMetadataResponse(api.UpdateDeveloperMetadataResponse o) {
+  buildCounterUpdateDeveloperMetadataResponse++;
+  if (buildCounterUpdateDeveloperMetadataResponse < 3) {
+    checkUnnamed498(o.developerMetadata);
+  }
+  buildCounterUpdateDeveloperMetadataResponse--;
+}
+
+core.int buildCounterUpdateDimensionPropertiesRequest = 0;
+buildUpdateDimensionPropertiesRequest() {
+  var o = new api.UpdateDimensionPropertiesRequest();
+  buildCounterUpdateDimensionPropertiesRequest++;
+  if (buildCounterUpdateDimensionPropertiesRequest < 3) {
+    o.fields = "foo";
+    o.properties = buildDimensionProperties();
+    o.range = buildDimensionRange();
+  }
+  buildCounterUpdateDimensionPropertiesRequest--;
+  return o;
+}
+
+checkUpdateDimensionPropertiesRequest(api.UpdateDimensionPropertiesRequest o) {
+  buildCounterUpdateDimensionPropertiesRequest++;
+  if (buildCounterUpdateDimensionPropertiesRequest < 3) {
+    unittest.expect(o.fields, unittest.equals('foo'));
+    checkDimensionProperties(o.properties);
+    checkDimensionRange(o.range);
+  }
+  buildCounterUpdateDimensionPropertiesRequest--;
+}
+
+core.int buildCounterUpdateEmbeddedObjectPositionRequest = 0;
+buildUpdateEmbeddedObjectPositionRequest() {
+  var o = new api.UpdateEmbeddedObjectPositionRequest();
+  buildCounterUpdateEmbeddedObjectPositionRequest++;
+  if (buildCounterUpdateEmbeddedObjectPositionRequest < 3) {
+    o.fields = "foo";
+    o.newPosition = buildEmbeddedObjectPosition();
+    o.objectId = 42;
+  }
+  buildCounterUpdateEmbeddedObjectPositionRequest--;
+  return o;
+}
+
+checkUpdateEmbeddedObjectPositionRequest(
+    api.UpdateEmbeddedObjectPositionRequest o) {
+  buildCounterUpdateEmbeddedObjectPositionRequest++;
+  if (buildCounterUpdateEmbeddedObjectPositionRequest < 3) {
+    unittest.expect(o.fields, unittest.equals('foo'));
+    checkEmbeddedObjectPosition(o.newPosition);
+    unittest.expect(o.objectId, unittest.equals(42));
+  }
+  buildCounterUpdateEmbeddedObjectPositionRequest--;
+}
+
+core.int buildCounterUpdateEmbeddedObjectPositionResponse = 0;
+buildUpdateEmbeddedObjectPositionResponse() {
+  var o = new api.UpdateEmbeddedObjectPositionResponse();
+  buildCounterUpdateEmbeddedObjectPositionResponse++;
+  if (buildCounterUpdateEmbeddedObjectPositionResponse < 3) {
+    o.position = buildEmbeddedObjectPosition();
+  }
+  buildCounterUpdateEmbeddedObjectPositionResponse--;
+  return o;
+}
+
+checkUpdateEmbeddedObjectPositionResponse(
+    api.UpdateEmbeddedObjectPositionResponse o) {
+  buildCounterUpdateEmbeddedObjectPositionResponse++;
+  if (buildCounterUpdateEmbeddedObjectPositionResponse < 3) {
+    checkEmbeddedObjectPosition(o.position);
+  }
+  buildCounterUpdateEmbeddedObjectPositionResponse--;
+}
+
+core.int buildCounterUpdateFilterViewRequest = 0;
+buildUpdateFilterViewRequest() {
+  var o = new api.UpdateFilterViewRequest();
+  buildCounterUpdateFilterViewRequest++;
+  if (buildCounterUpdateFilterViewRequest < 3) {
+    o.fields = "foo";
+    o.filter = buildFilterView();
+  }
+  buildCounterUpdateFilterViewRequest--;
+  return o;
+}
+
+checkUpdateFilterViewRequest(api.UpdateFilterViewRequest o) {
+  buildCounterUpdateFilterViewRequest++;
+  if (buildCounterUpdateFilterViewRequest < 3) {
+    unittest.expect(o.fields, unittest.equals('foo'));
+    checkFilterView(o.filter);
+  }
+  buildCounterUpdateFilterViewRequest--;
+}
+
+core.int buildCounterUpdateNamedRangeRequest = 0;
+buildUpdateNamedRangeRequest() {
+  var o = new api.UpdateNamedRangeRequest();
+  buildCounterUpdateNamedRangeRequest++;
+  if (buildCounterUpdateNamedRangeRequest < 3) {
+    o.fields = "foo";
+    o.namedRange = buildNamedRange();
+  }
+  buildCounterUpdateNamedRangeRequest--;
+  return o;
+}
+
+checkUpdateNamedRangeRequest(api.UpdateNamedRangeRequest o) {
+  buildCounterUpdateNamedRangeRequest++;
+  if (buildCounterUpdateNamedRangeRequest < 3) {
+    unittest.expect(o.fields, unittest.equals('foo'));
+    checkNamedRange(o.namedRange);
+  }
+  buildCounterUpdateNamedRangeRequest--;
+}
+
+core.int buildCounterUpdateProtectedRangeRequest = 0;
+buildUpdateProtectedRangeRequest() {
+  var o = new api.UpdateProtectedRangeRequest();
+  buildCounterUpdateProtectedRangeRequest++;
+  if (buildCounterUpdateProtectedRangeRequest < 3) {
+    o.fields = "foo";
+    o.protectedRange = buildProtectedRange();
+  }
+  buildCounterUpdateProtectedRangeRequest--;
+  return o;
+}
+
+checkUpdateProtectedRangeRequest(api.UpdateProtectedRangeRequest o) {
+  buildCounterUpdateProtectedRangeRequest++;
+  if (buildCounterUpdateProtectedRangeRequest < 3) {
+    unittest.expect(o.fields, unittest.equals('foo'));
+    checkProtectedRange(o.protectedRange);
+  }
+  buildCounterUpdateProtectedRangeRequest--;
+}
+
+core.int buildCounterUpdateSheetPropertiesRequest = 0;
+buildUpdateSheetPropertiesRequest() {
+  var o = new api.UpdateSheetPropertiesRequest();
+  buildCounterUpdateSheetPropertiesRequest++;
+  if (buildCounterUpdateSheetPropertiesRequest < 3) {
+    o.fields = "foo";
+    o.properties = buildSheetProperties();
+  }
+  buildCounterUpdateSheetPropertiesRequest--;
+  return o;
+}
+
+checkUpdateSheetPropertiesRequest(api.UpdateSheetPropertiesRequest o) {
+  buildCounterUpdateSheetPropertiesRequest++;
+  if (buildCounterUpdateSheetPropertiesRequest < 3) {
+    unittest.expect(o.fields, unittest.equals('foo'));
+    checkSheetProperties(o.properties);
+  }
+  buildCounterUpdateSheetPropertiesRequest--;
+}
+
+core.int buildCounterUpdateSpreadsheetPropertiesRequest = 0;
+buildUpdateSpreadsheetPropertiesRequest() {
+  var o = new api.UpdateSpreadsheetPropertiesRequest();
+  buildCounterUpdateSpreadsheetPropertiesRequest++;
+  if (buildCounterUpdateSpreadsheetPropertiesRequest < 3) {
+    o.fields = "foo";
+    o.properties = buildSpreadsheetProperties();
+  }
+  buildCounterUpdateSpreadsheetPropertiesRequest--;
+  return o;
+}
+
+checkUpdateSpreadsheetPropertiesRequest(
+    api.UpdateSpreadsheetPropertiesRequest o) {
+  buildCounterUpdateSpreadsheetPropertiesRequest++;
+  if (buildCounterUpdateSpreadsheetPropertiesRequest < 3) {
+    unittest.expect(o.fields, unittest.equals('foo'));
+    checkSpreadsheetProperties(o.properties);
+  }
+  buildCounterUpdateSpreadsheetPropertiesRequest--;
+}
+
+core.int buildCounterUpdateValuesByDataFilterResponse = 0;
+buildUpdateValuesByDataFilterResponse() {
+  var o = new api.UpdateValuesByDataFilterResponse();
+  buildCounterUpdateValuesByDataFilterResponse++;
+  if (buildCounterUpdateValuesByDataFilterResponse < 3) {
+    o.dataFilter = buildDataFilter();
+    o.updatedCells = 42;
+    o.updatedColumns = 42;
+    o.updatedData = buildValueRange();
+    o.updatedRange = "foo";
+    o.updatedRows = 42;
+  }
+  buildCounterUpdateValuesByDataFilterResponse--;
+  return o;
+}
+
+checkUpdateValuesByDataFilterResponse(api.UpdateValuesByDataFilterResponse o) {
+  buildCounterUpdateValuesByDataFilterResponse++;
+  if (buildCounterUpdateValuesByDataFilterResponse < 3) {
+    checkDataFilter(o.dataFilter);
+    unittest.expect(o.updatedCells, unittest.equals(42));
+    unittest.expect(o.updatedColumns, unittest.equals(42));
+    checkValueRange(o.updatedData);
+    unittest.expect(o.updatedRange, unittest.equals('foo'));
+    unittest.expect(o.updatedRows, unittest.equals(42));
+  }
+  buildCounterUpdateValuesByDataFilterResponse--;
+}
+
+core.int buildCounterUpdateValuesResponse = 0;
+buildUpdateValuesResponse() {
+  var o = new api.UpdateValuesResponse();
+  buildCounterUpdateValuesResponse++;
+  if (buildCounterUpdateValuesResponse < 3) {
+    o.spreadsheetId = "foo";
+    o.updatedCells = 42;
+    o.updatedColumns = 42;
+    o.updatedData = buildValueRange();
+    o.updatedRange = "foo";
+    o.updatedRows = 42;
+  }
+  buildCounterUpdateValuesResponse--;
+  return o;
+}
+
+checkUpdateValuesResponse(api.UpdateValuesResponse o) {
+  buildCounterUpdateValuesResponse++;
+  if (buildCounterUpdateValuesResponse < 3) {
+    unittest.expect(o.spreadsheetId, unittest.equals('foo'));
+    unittest.expect(o.updatedCells, unittest.equals(42));
+    unittest.expect(o.updatedColumns, unittest.equals(42));
+    checkValueRange(o.updatedData);
+    unittest.expect(o.updatedRange, unittest.equals('foo'));
+    unittest.expect(o.updatedRows, unittest.equals(42));
+  }
+  buildCounterUpdateValuesResponse--;
+}
+
+buildUnnamed499() {
+  var o = new core.List<core.Object>();
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  return o;
+}
+
+checkUnnamed499(core.List<core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted3 = (o[0]) as core.Map;
+  unittest.expect(casted3, unittest.hasLength(3));
+  unittest.expect(casted3["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted3["bool"], unittest.equals(true));
+  unittest.expect(casted3["string"], unittest.equals('foo'));
+  var casted4 = (o[1]) as core.Map;
+  unittest.expect(casted4, unittest.hasLength(3));
+  unittest.expect(casted4["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted4["bool"], unittest.equals(true));
+  unittest.expect(casted4["string"], unittest.equals('foo'));
+}
+
+buildUnnamed500() {
+  var o = new core.List<core.List<core.Object>>();
+  o.add(buildUnnamed499());
+  o.add(buildUnnamed499());
+  return o;
+}
+
+checkUnnamed500(core.List<core.List<core.Object>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed499(o[0]);
+  checkUnnamed499(o[1]);
+}
+
+core.int buildCounterValueRange = 0;
+buildValueRange() {
+  var o = new api.ValueRange();
+  buildCounterValueRange++;
+  if (buildCounterValueRange < 3) {
+    o.majorDimension = "foo";
+    o.range = "foo";
+    o.values = buildUnnamed500();
+  }
+  buildCounterValueRange--;
+  return o;
+}
+
+checkValueRange(api.ValueRange o) {
+  buildCounterValueRange++;
+  if (buildCounterValueRange < 3) {
+    unittest.expect(o.majorDimension, unittest.equals('foo'));
+    unittest.expect(o.range, unittest.equals('foo'));
+    checkUnnamed500(o.values);
+  }
+  buildCounterValueRange--;
+}
+
+buildUnnamed501() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed501(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed502() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed502(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-AddBandingRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddBandingRequest();
+      var od = new api.AddBandingRequest.fromJson(o.toJson());
+      checkAddBandingRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddBandingResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddBandingResponse();
+      var od = new api.AddBandingResponse.fromJson(o.toJson());
+      checkAddBandingResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddChartRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddChartRequest();
+      var od = new api.AddChartRequest.fromJson(o.toJson());
+      checkAddChartRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddChartResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddChartResponse();
+      var od = new api.AddChartResponse.fromJson(o.toJson());
+      checkAddChartResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddConditionalFormatRuleRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddConditionalFormatRuleRequest();
+      var od = new api.AddConditionalFormatRuleRequest.fromJson(o.toJson());
+      checkAddConditionalFormatRuleRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddFilterViewRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddFilterViewRequest();
+      var od = new api.AddFilterViewRequest.fromJson(o.toJson());
+      checkAddFilterViewRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddFilterViewResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddFilterViewResponse();
+      var od = new api.AddFilterViewResponse.fromJson(o.toJson());
+      checkAddFilterViewResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddNamedRangeRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddNamedRangeRequest();
+      var od = new api.AddNamedRangeRequest.fromJson(o.toJson());
+      checkAddNamedRangeRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddNamedRangeResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddNamedRangeResponse();
+      var od = new api.AddNamedRangeResponse.fromJson(o.toJson());
+      checkAddNamedRangeResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddProtectedRangeRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddProtectedRangeRequest();
+      var od = new api.AddProtectedRangeRequest.fromJson(o.toJson());
+      checkAddProtectedRangeRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddProtectedRangeResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddProtectedRangeResponse();
+      var od = new api.AddProtectedRangeResponse.fromJson(o.toJson());
+      checkAddProtectedRangeResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddSheetRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddSheetRequest();
+      var od = new api.AddSheetRequest.fromJson(o.toJson());
+      checkAddSheetRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AddSheetResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAddSheetResponse();
+      var od = new api.AddSheetResponse.fromJson(o.toJson());
+      checkAddSheetResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AppendCellsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAppendCellsRequest();
+      var od = new api.AppendCellsRequest.fromJson(o.toJson());
+      checkAppendCellsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AppendDimensionRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAppendDimensionRequest();
+      var od = new api.AppendDimensionRequest.fromJson(o.toJson());
+      checkAppendDimensionRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AppendValuesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAppendValuesResponse();
+      var od = new api.AppendValuesResponse.fromJson(o.toJson());
+      checkAppendValuesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-AutoFillRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAutoFillRequest();
+      var od = new api.AutoFillRequest.fromJson(o.toJson());
+      checkAutoFillRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AutoResizeDimensionsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAutoResizeDimensionsRequest();
+      var od = new api.AutoResizeDimensionsRequest.fromJson(o.toJson());
+      checkAutoResizeDimensionsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-BandedRange", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBandedRange();
+      var od = new api.BandedRange.fromJson(o.toJson());
+      checkBandedRange(od);
+    });
+  });
+
+  unittest.group("obj-schema-BandingProperties", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBandingProperties();
+      var od = new api.BandingProperties.fromJson(o.toJson());
+      checkBandingProperties(od);
+    });
+  });
+
+  unittest.group("obj-schema-BasicChartAxis", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBasicChartAxis();
+      var od = new api.BasicChartAxis.fromJson(o.toJson());
+      checkBasicChartAxis(od);
+    });
+  });
+
+  unittest.group("obj-schema-BasicChartDomain", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBasicChartDomain();
+      var od = new api.BasicChartDomain.fromJson(o.toJson());
+      checkBasicChartDomain(od);
+    });
+  });
+
+  unittest.group("obj-schema-BasicChartSeries", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBasicChartSeries();
+      var od = new api.BasicChartSeries.fromJson(o.toJson());
+      checkBasicChartSeries(od);
+    });
+  });
+
+  unittest.group("obj-schema-BasicChartSpec", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBasicChartSpec();
+      var od = new api.BasicChartSpec.fromJson(o.toJson());
+      checkBasicChartSpec(od);
+    });
+  });
+
+  unittest.group("obj-schema-BasicFilter", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBasicFilter();
+      var od = new api.BasicFilter.fromJson(o.toJson());
+      checkBasicFilter(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchClearValuesByDataFilterRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchClearValuesByDataFilterRequest();
+      var od = new api.BatchClearValuesByDataFilterRequest.fromJson(o.toJson());
+      checkBatchClearValuesByDataFilterRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchClearValuesByDataFilterResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchClearValuesByDataFilterResponse();
+      var od =
+          new api.BatchClearValuesByDataFilterResponse.fromJson(o.toJson());
+      checkBatchClearValuesByDataFilterResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchClearValuesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchClearValuesRequest();
+      var od = new api.BatchClearValuesRequest.fromJson(o.toJson());
+      checkBatchClearValuesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchClearValuesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchClearValuesResponse();
+      var od = new api.BatchClearValuesResponse.fromJson(o.toJson());
+      checkBatchClearValuesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchGetValuesByDataFilterRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchGetValuesByDataFilterRequest();
+      var od = new api.BatchGetValuesByDataFilterRequest.fromJson(o.toJson());
+      checkBatchGetValuesByDataFilterRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchGetValuesByDataFilterResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchGetValuesByDataFilterResponse();
+      var od = new api.BatchGetValuesByDataFilterResponse.fromJson(o.toJson());
+      checkBatchGetValuesByDataFilterResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchGetValuesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchGetValuesResponse();
+      var od = new api.BatchGetValuesResponse.fromJson(o.toJson());
+      checkBatchGetValuesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchUpdateSpreadsheetRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchUpdateSpreadsheetRequest();
+      var od = new api.BatchUpdateSpreadsheetRequest.fromJson(o.toJson());
+      checkBatchUpdateSpreadsheetRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchUpdateSpreadsheetResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchUpdateSpreadsheetResponse();
+      var od = new api.BatchUpdateSpreadsheetResponse.fromJson(o.toJson());
+      checkBatchUpdateSpreadsheetResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchUpdateValuesByDataFilterRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchUpdateValuesByDataFilterRequest();
+      var od =
+          new api.BatchUpdateValuesByDataFilterRequest.fromJson(o.toJson());
+      checkBatchUpdateValuesByDataFilterRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchUpdateValuesByDataFilterResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchUpdateValuesByDataFilterResponse();
+      var od =
+          new api.BatchUpdateValuesByDataFilterResponse.fromJson(o.toJson());
+      checkBatchUpdateValuesByDataFilterResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchUpdateValuesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchUpdateValuesRequest();
+      var od = new api.BatchUpdateValuesRequest.fromJson(o.toJson());
+      checkBatchUpdateValuesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchUpdateValuesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchUpdateValuesResponse();
+      var od = new api.BatchUpdateValuesResponse.fromJson(o.toJson());
+      checkBatchUpdateValuesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-BooleanCondition", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBooleanCondition();
+      var od = new api.BooleanCondition.fromJson(o.toJson());
+      checkBooleanCondition(od);
+    });
+  });
+
+  unittest.group("obj-schema-BooleanRule", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBooleanRule();
+      var od = new api.BooleanRule.fromJson(o.toJson());
+      checkBooleanRule(od);
+    });
+  });
+
+  unittest.group("obj-schema-Border", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBorder();
+      var od = new api.Border.fromJson(o.toJson());
+      checkBorder(od);
+    });
+  });
+
+  unittest.group("obj-schema-Borders", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBorders();
+      var od = new api.Borders.fromJson(o.toJson());
+      checkBorders(od);
+    });
+  });
+
+  unittest.group("obj-schema-BubbleChartSpec", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBubbleChartSpec();
+      var od = new api.BubbleChartSpec.fromJson(o.toJson());
+      checkBubbleChartSpec(od);
+    });
+  });
+
+  unittest.group("obj-schema-CandlestickChartSpec", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCandlestickChartSpec();
+      var od = new api.CandlestickChartSpec.fromJson(o.toJson());
+      checkCandlestickChartSpec(od);
+    });
+  });
+
+  unittest.group("obj-schema-CandlestickData", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCandlestickData();
+      var od = new api.CandlestickData.fromJson(o.toJson());
+      checkCandlestickData(od);
+    });
+  });
+
+  unittest.group("obj-schema-CandlestickDomain", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCandlestickDomain();
+      var od = new api.CandlestickDomain.fromJson(o.toJson());
+      checkCandlestickDomain(od);
+    });
+  });
+
+  unittest.group("obj-schema-CandlestickSeries", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCandlestickSeries();
+      var od = new api.CandlestickSeries.fromJson(o.toJson());
+      checkCandlestickSeries(od);
+    });
+  });
+
+  unittest.group("obj-schema-CellData", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCellData();
+      var od = new api.CellData.fromJson(o.toJson());
+      checkCellData(od);
+    });
+  });
+
+  unittest.group("obj-schema-CellFormat", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCellFormat();
+      var od = new api.CellFormat.fromJson(o.toJson());
+      checkCellFormat(od);
+    });
+  });
+
+  unittest.group("obj-schema-ChartData", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildChartData();
+      var od = new api.ChartData.fromJson(o.toJson());
+      checkChartData(od);
+    });
+  });
+
+  unittest.group("obj-schema-ChartSourceRange", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildChartSourceRange();
+      var od = new api.ChartSourceRange.fromJson(o.toJson());
+      checkChartSourceRange(od);
+    });
+  });
+
+  unittest.group("obj-schema-ChartSpec", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildChartSpec();
+      var od = new api.ChartSpec.fromJson(o.toJson());
+      checkChartSpec(od);
+    });
+  });
+
+  unittest.group("obj-schema-ClearBasicFilterRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildClearBasicFilterRequest();
+      var od = new api.ClearBasicFilterRequest.fromJson(o.toJson());
+      checkClearBasicFilterRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ClearValuesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildClearValuesRequest();
+      var od = new api.ClearValuesRequest.fromJson(o.toJson());
+      checkClearValuesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ClearValuesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildClearValuesResponse();
+      var od = new api.ClearValuesResponse.fromJson(o.toJson());
+      checkClearValuesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Color", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildColor();
+      var od = new api.Color.fromJson(o.toJson());
+      checkColor(od);
+    });
+  });
+
+  unittest.group("obj-schema-ConditionValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildConditionValue();
+      var od = new api.ConditionValue.fromJson(o.toJson());
+      checkConditionValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-ConditionalFormatRule", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildConditionalFormatRule();
+      var od = new api.ConditionalFormatRule.fromJson(o.toJson());
+      checkConditionalFormatRule(od);
+    });
+  });
+
+  unittest.group("obj-schema-CopyPasteRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCopyPasteRequest();
+      var od = new api.CopyPasteRequest.fromJson(o.toJson());
+      checkCopyPasteRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-CopySheetToAnotherSpreadsheetRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCopySheetToAnotherSpreadsheetRequest();
+      var od =
+          new api.CopySheetToAnotherSpreadsheetRequest.fromJson(o.toJson());
+      checkCopySheetToAnotherSpreadsheetRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateDeveloperMetadataRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateDeveloperMetadataRequest();
+      var od = new api.CreateDeveloperMetadataRequest.fromJson(o.toJson());
+      checkCreateDeveloperMetadataRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateDeveloperMetadataResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateDeveloperMetadataResponse();
+      var od = new api.CreateDeveloperMetadataResponse.fromJson(o.toJson());
+      checkCreateDeveloperMetadataResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CutPasteRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCutPasteRequest();
+      var od = new api.CutPasteRequest.fromJson(o.toJson());
+      checkCutPasteRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DataFilter", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDataFilter();
+      var od = new api.DataFilter.fromJson(o.toJson());
+      checkDataFilter(od);
+    });
+  });
+
+  unittest.group("obj-schema-DataFilterValueRange", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDataFilterValueRange();
+      var od = new api.DataFilterValueRange.fromJson(o.toJson());
+      checkDataFilterValueRange(od);
+    });
+  });
+
+  unittest.group("obj-schema-DataValidationRule", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDataValidationRule();
+      var od = new api.DataValidationRule.fromJson(o.toJson());
+      checkDataValidationRule(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeleteBandingRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteBandingRequest();
+      var od = new api.DeleteBandingRequest.fromJson(o.toJson());
+      checkDeleteBandingRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeleteConditionalFormatRuleRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteConditionalFormatRuleRequest();
+      var od = new api.DeleteConditionalFormatRuleRequest.fromJson(o.toJson());
+      checkDeleteConditionalFormatRuleRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeleteConditionalFormatRuleResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteConditionalFormatRuleResponse();
+      var od = new api.DeleteConditionalFormatRuleResponse.fromJson(o.toJson());
+      checkDeleteConditionalFormatRuleResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeleteDeveloperMetadataRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteDeveloperMetadataRequest();
+      var od = new api.DeleteDeveloperMetadataRequest.fromJson(o.toJson());
+      checkDeleteDeveloperMetadataRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeleteDeveloperMetadataResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteDeveloperMetadataResponse();
+      var od = new api.DeleteDeveloperMetadataResponse.fromJson(o.toJson());
+      checkDeleteDeveloperMetadataResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeleteDimensionRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteDimensionRequest();
+      var od = new api.DeleteDimensionRequest.fromJson(o.toJson());
+      checkDeleteDimensionRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeleteEmbeddedObjectRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteEmbeddedObjectRequest();
+      var od = new api.DeleteEmbeddedObjectRequest.fromJson(o.toJson());
+      checkDeleteEmbeddedObjectRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeleteFilterViewRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteFilterViewRequest();
+      var od = new api.DeleteFilterViewRequest.fromJson(o.toJson());
+      checkDeleteFilterViewRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeleteNamedRangeRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteNamedRangeRequest();
+      var od = new api.DeleteNamedRangeRequest.fromJson(o.toJson());
+      checkDeleteNamedRangeRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeleteProtectedRangeRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteProtectedRangeRequest();
+      var od = new api.DeleteProtectedRangeRequest.fromJson(o.toJson());
+      checkDeleteProtectedRangeRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeleteRangeRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteRangeRequest();
+      var od = new api.DeleteRangeRequest.fromJson(o.toJson());
+      checkDeleteRangeRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeleteSheetRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteSheetRequest();
+      var od = new api.DeleteSheetRequest.fromJson(o.toJson());
+      checkDeleteSheetRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeveloperMetadata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeveloperMetadata();
+      var od = new api.DeveloperMetadata.fromJson(o.toJson());
+      checkDeveloperMetadata(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeveloperMetadataLocation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeveloperMetadataLocation();
+      var od = new api.DeveloperMetadataLocation.fromJson(o.toJson());
+      checkDeveloperMetadataLocation(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeveloperMetadataLookup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeveloperMetadataLookup();
+      var od = new api.DeveloperMetadataLookup.fromJson(o.toJson());
+      checkDeveloperMetadataLookup(od);
+    });
+  });
+
+  unittest.group("obj-schema-DimensionProperties", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDimensionProperties();
+      var od = new api.DimensionProperties.fromJson(o.toJson());
+      checkDimensionProperties(od);
+    });
+  });
+
+  unittest.group("obj-schema-DimensionRange", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDimensionRange();
+      var od = new api.DimensionRange.fromJson(o.toJson());
+      checkDimensionRange(od);
+    });
+  });
+
+  unittest.group("obj-schema-DuplicateFilterViewRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDuplicateFilterViewRequest();
+      var od = new api.DuplicateFilterViewRequest.fromJson(o.toJson());
+      checkDuplicateFilterViewRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DuplicateFilterViewResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDuplicateFilterViewResponse();
+      var od = new api.DuplicateFilterViewResponse.fromJson(o.toJson());
+      checkDuplicateFilterViewResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-DuplicateSheetRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDuplicateSheetRequest();
+      var od = new api.DuplicateSheetRequest.fromJson(o.toJson());
+      checkDuplicateSheetRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DuplicateSheetResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDuplicateSheetResponse();
+      var od = new api.DuplicateSheetResponse.fromJson(o.toJson());
+      checkDuplicateSheetResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Editors", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEditors();
+      var od = new api.Editors.fromJson(o.toJson());
+      checkEditors(od);
+    });
+  });
+
+  unittest.group("obj-schema-EmbeddedChart", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEmbeddedChart();
+      var od = new api.EmbeddedChart.fromJson(o.toJson());
+      checkEmbeddedChart(od);
+    });
+  });
+
+  unittest.group("obj-schema-EmbeddedObjectPosition", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEmbeddedObjectPosition();
+      var od = new api.EmbeddedObjectPosition.fromJson(o.toJson());
+      checkEmbeddedObjectPosition(od);
+    });
+  });
+
+  unittest.group("obj-schema-ErrorValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildErrorValue();
+      var od = new api.ErrorValue.fromJson(o.toJson());
+      checkErrorValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-ExtendedValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildExtendedValue();
+      var od = new api.ExtendedValue.fromJson(o.toJson());
+      checkExtendedValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-FilterCriteria", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFilterCriteria();
+      var od = new api.FilterCriteria.fromJson(o.toJson());
+      checkFilterCriteria(od);
+    });
+  });
+
+  unittest.group("obj-schema-FilterView", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFilterView();
+      var od = new api.FilterView.fromJson(o.toJson());
+      checkFilterView(od);
+    });
+  });
+
+  unittest.group("obj-schema-FindReplaceRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFindReplaceRequest();
+      var od = new api.FindReplaceRequest.fromJson(o.toJson());
+      checkFindReplaceRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-FindReplaceResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFindReplaceResponse();
+      var od = new api.FindReplaceResponse.fromJson(o.toJson());
+      checkFindReplaceResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-GetSpreadsheetByDataFilterRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGetSpreadsheetByDataFilterRequest();
+      var od = new api.GetSpreadsheetByDataFilterRequest.fromJson(o.toJson());
+      checkGetSpreadsheetByDataFilterRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-GradientRule", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGradientRule();
+      var od = new api.GradientRule.fromJson(o.toJson());
+      checkGradientRule(od);
+    });
+  });
+
+  unittest.group("obj-schema-GridCoordinate", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGridCoordinate();
+      var od = new api.GridCoordinate.fromJson(o.toJson());
+      checkGridCoordinate(od);
+    });
+  });
+
+  unittest.group("obj-schema-GridData", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGridData();
+      var od = new api.GridData.fromJson(o.toJson());
+      checkGridData(od);
+    });
+  });
+
+  unittest.group("obj-schema-GridProperties", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGridProperties();
+      var od = new api.GridProperties.fromJson(o.toJson());
+      checkGridProperties(od);
+    });
+  });
+
+  unittest.group("obj-schema-GridRange", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGridRange();
+      var od = new api.GridRange.fromJson(o.toJson());
+      checkGridRange(od);
+    });
+  });
+
+  unittest.group("obj-schema-HistogramChartSpec", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildHistogramChartSpec();
+      var od = new api.HistogramChartSpec.fromJson(o.toJson());
+      checkHistogramChartSpec(od);
+    });
+  });
+
+  unittest.group("obj-schema-HistogramSeries", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildHistogramSeries();
+      var od = new api.HistogramSeries.fromJson(o.toJson());
+      checkHistogramSeries(od);
+    });
+  });
+
+  unittest.group("obj-schema-InsertDimensionRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInsertDimensionRequest();
+      var od = new api.InsertDimensionRequest.fromJson(o.toJson());
+      checkInsertDimensionRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-InsertRangeRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInsertRangeRequest();
+      var od = new api.InsertRangeRequest.fromJson(o.toJson());
+      checkInsertRangeRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-InterpolationPoint", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInterpolationPoint();
+      var od = new api.InterpolationPoint.fromJson(o.toJson());
+      checkInterpolationPoint(od);
+    });
+  });
+
+  unittest.group("obj-schema-IterativeCalculationSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildIterativeCalculationSettings();
+      var od = new api.IterativeCalculationSettings.fromJson(o.toJson());
+      checkIterativeCalculationSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-MatchedDeveloperMetadata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMatchedDeveloperMetadata();
+      var od = new api.MatchedDeveloperMetadata.fromJson(o.toJson());
+      checkMatchedDeveloperMetadata(od);
+    });
+  });
+
+  unittest.group("obj-schema-MatchedValueRange", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMatchedValueRange();
+      var od = new api.MatchedValueRange.fromJson(o.toJson());
+      checkMatchedValueRange(od);
+    });
+  });
+
+  unittest.group("obj-schema-MergeCellsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMergeCellsRequest();
+      var od = new api.MergeCellsRequest.fromJson(o.toJson());
+      checkMergeCellsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-MoveDimensionRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMoveDimensionRequest();
+      var od = new api.MoveDimensionRequest.fromJson(o.toJson());
+      checkMoveDimensionRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-NamedRange", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildNamedRange();
+      var od = new api.NamedRange.fromJson(o.toJson());
+      checkNamedRange(od);
+    });
+  });
+
+  unittest.group("obj-schema-NumberFormat", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildNumberFormat();
+      var od = new api.NumberFormat.fromJson(o.toJson());
+      checkNumberFormat(od);
+    });
+  });
+
+  unittest.group("obj-schema-OrgChartSpec", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrgChartSpec();
+      var od = new api.OrgChartSpec.fromJson(o.toJson());
+      checkOrgChartSpec(od);
+    });
+  });
+
+  unittest.group("obj-schema-OverlayPosition", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOverlayPosition();
+      var od = new api.OverlayPosition.fromJson(o.toJson());
+      checkOverlayPosition(od);
+    });
+  });
+
+  unittest.group("obj-schema-Padding", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPadding();
+      var od = new api.Padding.fromJson(o.toJson());
+      checkPadding(od);
+    });
+  });
+
+  unittest.group("obj-schema-PasteDataRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPasteDataRequest();
+      var od = new api.PasteDataRequest.fromJson(o.toJson());
+      checkPasteDataRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-PieChartSpec", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPieChartSpec();
+      var od = new api.PieChartSpec.fromJson(o.toJson());
+      checkPieChartSpec(od);
+    });
+  });
+
+  unittest.group("obj-schema-PivotFilterCriteria", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPivotFilterCriteria();
+      var od = new api.PivotFilterCriteria.fromJson(o.toJson());
+      checkPivotFilterCriteria(od);
+    });
+  });
+
+  unittest.group("obj-schema-PivotGroup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPivotGroup();
+      var od = new api.PivotGroup.fromJson(o.toJson());
+      checkPivotGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-PivotGroupSortValueBucket", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPivotGroupSortValueBucket();
+      var od = new api.PivotGroupSortValueBucket.fromJson(o.toJson());
+      checkPivotGroupSortValueBucket(od);
+    });
+  });
+
+  unittest.group("obj-schema-PivotGroupValueMetadata", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPivotGroupValueMetadata();
+      var od = new api.PivotGroupValueMetadata.fromJson(o.toJson());
+      checkPivotGroupValueMetadata(od);
+    });
+  });
+
+  unittest.group("obj-schema-PivotTable", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPivotTable();
+      var od = new api.PivotTable.fromJson(o.toJson());
+      checkPivotTable(od);
+    });
+  });
+
+  unittest.group("obj-schema-PivotValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPivotValue();
+      var od = new api.PivotValue.fromJson(o.toJson());
+      checkPivotValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProtectedRange", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProtectedRange();
+      var od = new api.ProtectedRange.fromJson(o.toJson());
+      checkProtectedRange(od);
+    });
+  });
+
+  unittest.group("obj-schema-RandomizeRangeRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRandomizeRangeRequest();
+      var od = new api.RandomizeRangeRequest.fromJson(o.toJson());
+      checkRandomizeRangeRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-RepeatCellRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRepeatCellRequest();
+      var od = new api.RepeatCellRequest.fromJson(o.toJson());
+      checkRepeatCellRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Request", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRequest();
+      var od = new api.Request.fromJson(o.toJson());
+      checkRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Response", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResponse();
+      var od = new api.Response.fromJson(o.toJson());
+      checkResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-RowData", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRowData();
+      var od = new api.RowData.fromJson(o.toJson());
+      checkRowData(od);
+    });
+  });
+
+  unittest.group("obj-schema-SearchDeveloperMetadataRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSearchDeveloperMetadataRequest();
+      var od = new api.SearchDeveloperMetadataRequest.fromJson(o.toJson());
+      checkSearchDeveloperMetadataRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-SearchDeveloperMetadataResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSearchDeveloperMetadataResponse();
+      var od = new api.SearchDeveloperMetadataResponse.fromJson(o.toJson());
+      checkSearchDeveloperMetadataResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-SetBasicFilterRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSetBasicFilterRequest();
+      var od = new api.SetBasicFilterRequest.fromJson(o.toJson());
+      checkSetBasicFilterRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-SetDataValidationRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSetDataValidationRequest();
+      var od = new api.SetDataValidationRequest.fromJson(o.toJson());
+      checkSetDataValidationRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Sheet", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSheet();
+      var od = new api.Sheet.fromJson(o.toJson());
+      checkSheet(od);
+    });
+  });
+
+  unittest.group("obj-schema-SheetProperties", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSheetProperties();
+      var od = new api.SheetProperties.fromJson(o.toJson());
+      checkSheetProperties(od);
+    });
+  });
+
+  unittest.group("obj-schema-SortRangeRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSortRangeRequest();
+      var od = new api.SortRangeRequest.fromJson(o.toJson());
+      checkSortRangeRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-SortSpec", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSortSpec();
+      var od = new api.SortSpec.fromJson(o.toJson());
+      checkSortSpec(od);
+    });
+  });
+
+  unittest.group("obj-schema-SourceAndDestination", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSourceAndDestination();
+      var od = new api.SourceAndDestination.fromJson(o.toJson());
+      checkSourceAndDestination(od);
+    });
+  });
+
+  unittest.group("obj-schema-Spreadsheet", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSpreadsheet();
+      var od = new api.Spreadsheet.fromJson(o.toJson());
+      checkSpreadsheet(od);
+    });
+  });
+
+  unittest.group("obj-schema-SpreadsheetProperties", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSpreadsheetProperties();
+      var od = new api.SpreadsheetProperties.fromJson(o.toJson());
+      checkSpreadsheetProperties(od);
+    });
+  });
+
+  unittest.group("obj-schema-TextFormat", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTextFormat();
+      var od = new api.TextFormat.fromJson(o.toJson());
+      checkTextFormat(od);
+    });
+  });
+
+  unittest.group("obj-schema-TextFormatRun", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTextFormatRun();
+      var od = new api.TextFormatRun.fromJson(o.toJson());
+      checkTextFormatRun(od);
+    });
+  });
+
+  unittest.group("obj-schema-TextPosition", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTextPosition();
+      var od = new api.TextPosition.fromJson(o.toJson());
+      checkTextPosition(od);
+    });
+  });
+
+  unittest.group("obj-schema-TextRotation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTextRotation();
+      var od = new api.TextRotation.fromJson(o.toJson());
+      checkTextRotation(od);
+    });
+  });
+
+  unittest.group("obj-schema-TextToColumnsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTextToColumnsRequest();
+      var od = new api.TextToColumnsRequest.fromJson(o.toJson());
+      checkTextToColumnsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UnmergeCellsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUnmergeCellsRequest();
+      var od = new api.UnmergeCellsRequest.fromJson(o.toJson());
+      checkUnmergeCellsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateBandingRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateBandingRequest();
+      var od = new api.UpdateBandingRequest.fromJson(o.toJson());
+      checkUpdateBandingRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateBordersRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateBordersRequest();
+      var od = new api.UpdateBordersRequest.fromJson(o.toJson());
+      checkUpdateBordersRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateCellsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateCellsRequest();
+      var od = new api.UpdateCellsRequest.fromJson(o.toJson());
+      checkUpdateCellsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateChartSpecRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateChartSpecRequest();
+      var od = new api.UpdateChartSpecRequest.fromJson(o.toJson());
+      checkUpdateChartSpecRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateConditionalFormatRuleRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateConditionalFormatRuleRequest();
+      var od = new api.UpdateConditionalFormatRuleRequest.fromJson(o.toJson());
+      checkUpdateConditionalFormatRuleRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateConditionalFormatRuleResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateConditionalFormatRuleResponse();
+      var od = new api.UpdateConditionalFormatRuleResponse.fromJson(o.toJson());
+      checkUpdateConditionalFormatRuleResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateDeveloperMetadataRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateDeveloperMetadataRequest();
+      var od = new api.UpdateDeveloperMetadataRequest.fromJson(o.toJson());
+      checkUpdateDeveloperMetadataRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateDeveloperMetadataResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateDeveloperMetadataResponse();
+      var od = new api.UpdateDeveloperMetadataResponse.fromJson(o.toJson());
+      checkUpdateDeveloperMetadataResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateDimensionPropertiesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateDimensionPropertiesRequest();
+      var od = new api.UpdateDimensionPropertiesRequest.fromJson(o.toJson());
+      checkUpdateDimensionPropertiesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateEmbeddedObjectPositionRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateEmbeddedObjectPositionRequest();
+      var od = new api.UpdateEmbeddedObjectPositionRequest.fromJson(o.toJson());
+      checkUpdateEmbeddedObjectPositionRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateEmbeddedObjectPositionResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateEmbeddedObjectPositionResponse();
+      var od =
+          new api.UpdateEmbeddedObjectPositionResponse.fromJson(o.toJson());
+      checkUpdateEmbeddedObjectPositionResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateFilterViewRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateFilterViewRequest();
+      var od = new api.UpdateFilterViewRequest.fromJson(o.toJson());
+      checkUpdateFilterViewRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateNamedRangeRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateNamedRangeRequest();
+      var od = new api.UpdateNamedRangeRequest.fromJson(o.toJson());
+      checkUpdateNamedRangeRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateProtectedRangeRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateProtectedRangeRequest();
+      var od = new api.UpdateProtectedRangeRequest.fromJson(o.toJson());
+      checkUpdateProtectedRangeRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateSheetPropertiesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateSheetPropertiesRequest();
+      var od = new api.UpdateSheetPropertiesRequest.fromJson(o.toJson());
+      checkUpdateSheetPropertiesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateSpreadsheetPropertiesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateSpreadsheetPropertiesRequest();
+      var od = new api.UpdateSpreadsheetPropertiesRequest.fromJson(o.toJson());
+      checkUpdateSpreadsheetPropertiesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateValuesByDataFilterResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateValuesByDataFilterResponse();
+      var od = new api.UpdateValuesByDataFilterResponse.fromJson(o.toJson());
+      checkUpdateValuesByDataFilterResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateValuesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateValuesResponse();
+      var od = new api.UpdateValuesResponse.fromJson(o.toJson());
+      checkUpdateValuesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ValueRange", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildValueRange();
+      var od = new api.ValueRange.fromJson(o.toJson());
+      checkValueRange(od);
+    });
+  });
+
+  unittest.group("resource-SpreadsheetsResourceApi", () {
+    unittest.test("method--batchUpdate", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsResourceApi res = new api.SheetsApi(mock).spreadsheets;
+      var arg_request = buildBatchUpdateSpreadsheetRequest();
+      var arg_spreadsheetId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BatchUpdateSpreadsheetRequest.fromJson(json);
+        checkBatchUpdateSpreadsheetRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        index = path.indexOf(":batchUpdate", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals(":batchUpdate"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBatchUpdateSpreadsheetResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .batchUpdate(arg_request, arg_spreadsheetId, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.BatchUpdateSpreadsheetResponse response) {
+        checkBatchUpdateSpreadsheetResponse(response);
+      })));
+    });
+
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsResourceApi res = new api.SheetsApi(mock).spreadsheets;
+      var arg_request = buildSpreadsheet();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Spreadsheet.fromJson(json);
+        checkSpreadsheet(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("v4/spreadsheets"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSpreadsheet());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Spreadsheet response) {
+        checkSpreadsheet(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsResourceApi res = new api.SheetsApi(mock).spreadsheets;
+      var arg_spreadsheetId = "foo";
+      var arg_includeGridData = true;
+      var arg_ranges = buildUnnamed501();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeGridData"].first,
+            unittest.equals("$arg_includeGridData"));
+        unittest.expect(queryMap["ranges"], unittest.equals(arg_ranges));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSpreadsheet());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_spreadsheetId,
+              includeGridData: arg_includeGridData,
+              ranges: arg_ranges,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Spreadsheet response) {
+        checkSpreadsheet(response);
+      })));
+    });
+
+    unittest.test("method--getByDataFilter", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsResourceApi res = new api.SheetsApi(mock).spreadsheets;
+      var arg_request = buildGetSpreadsheetByDataFilterRequest();
+      var arg_spreadsheetId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.GetSpreadsheetByDataFilterRequest.fromJson(json);
+        checkGetSpreadsheetByDataFilterRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        index = path.indexOf(":getByDataFilter", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals(":getByDataFilter"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSpreadsheet());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getByDataFilter(arg_request, arg_spreadsheetId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Spreadsheet response) {
+        checkSpreadsheet(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-SpreadsheetsDeveloperMetadataResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsDeveloperMetadataResourceApi res =
+          new api.SheetsApi(mock).spreadsheets.developerMetadata;
+      var arg_spreadsheetId = "foo";
+      var arg_metadataId = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        index = path.indexOf("/developerMetadata/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("/developerMetadata/"));
+        pathOffset += 19;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_metadataId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDeveloperMetadata());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_spreadsheetId, arg_metadataId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DeveloperMetadata response) {
+        checkDeveloperMetadata(response);
+      })));
+    });
+
+    unittest.test("method--search", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsDeveloperMetadataResourceApi res =
+          new api.SheetsApi(mock).spreadsheets.developerMetadata;
+      var arg_request = buildSearchDeveloperMetadataRequest();
+      var arg_spreadsheetId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.SearchDeveloperMetadataRequest.fromJson(json);
+        checkSearchDeveloperMetadataRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        index = path.indexOf("/developerMetadata:search", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 25),
+            unittest.equals("/developerMetadata:search"));
+        pathOffset += 25;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSearchDeveloperMetadataResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.search(arg_request, arg_spreadsheetId, $fields: arg_$fields).then(
+          unittest
+              .expectAsync1(((api.SearchDeveloperMetadataResponse response) {
+        checkSearchDeveloperMetadataResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-SpreadsheetsSheetsResourceApi", () {
+    unittest.test("method--copyTo", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsSheetsResourceApi res =
+          new api.SheetsApi(mock).spreadsheets.sheets;
+      var arg_request = buildCopySheetToAnotherSpreadsheetRequest();
+      var arg_spreadsheetId = "foo";
+      var arg_sheetId = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CopySheetToAnotherSpreadsheetRequest.fromJson(json);
+        checkCopySheetToAnotherSpreadsheetRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        index = path.indexOf("/sheets/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/sheets/"));
+        pathOffset += 8;
+        index = path.indexOf(":copyTo", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_sheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals(":copyTo"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSheetProperties());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .copyTo(arg_request, arg_spreadsheetId, arg_sheetId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SheetProperties response) {
+        checkSheetProperties(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-SpreadsheetsValuesResourceApi", () {
+    unittest.test("method--append", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsValuesResourceApi res =
+          new api.SheetsApi(mock).spreadsheets.values;
+      var arg_request = buildValueRange();
+      var arg_spreadsheetId = "foo";
+      var arg_range = "foo";
+      var arg_includeValuesInResponse = true;
+      var arg_responseValueRenderOption = "foo";
+      var arg_insertDataOption = "foo";
+      var arg_valueInputOption = "foo";
+      var arg_responseDateTimeRenderOption = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ValueRange.fromJson(json);
+        checkValueRange(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        index = path.indexOf("/values/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/values/"));
+        pathOffset += 8;
+        index = path.indexOf(":append", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_range"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals(":append"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeValuesInResponse"].first,
+            unittest.equals("$arg_includeValuesInResponse"));
+        unittest.expect(queryMap["responseValueRenderOption"].first,
+            unittest.equals(arg_responseValueRenderOption));
+        unittest.expect(queryMap["insertDataOption"].first,
+            unittest.equals(arg_insertDataOption));
+        unittest.expect(queryMap["valueInputOption"].first,
+            unittest.equals(arg_valueInputOption));
+        unittest.expect(queryMap["responseDateTimeRenderOption"].first,
+            unittest.equals(arg_responseDateTimeRenderOption));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAppendValuesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .append(arg_request, arg_spreadsheetId, arg_range,
+              includeValuesInResponse: arg_includeValuesInResponse,
+              responseValueRenderOption: arg_responseValueRenderOption,
+              insertDataOption: arg_insertDataOption,
+              valueInputOption: arg_valueInputOption,
+              responseDateTimeRenderOption: arg_responseDateTimeRenderOption,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.AppendValuesResponse response) {
+        checkAppendValuesResponse(response);
+      })));
+    });
+
+    unittest.test("method--batchClear", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsValuesResourceApi res =
+          new api.SheetsApi(mock).spreadsheets.values;
+      var arg_request = buildBatchClearValuesRequest();
+      var arg_spreadsheetId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BatchClearValuesRequest.fromJson(json);
+        checkBatchClearValuesRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        index = path.indexOf("/values:batchClear", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("/values:batchClear"));
+        pathOffset += 18;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBatchClearValuesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .batchClear(arg_request, arg_spreadsheetId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BatchClearValuesResponse response) {
+        checkBatchClearValuesResponse(response);
+      })));
+    });
+
+    unittest.test("method--batchClearByDataFilter", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsValuesResourceApi res =
+          new api.SheetsApi(mock).spreadsheets.values;
+      var arg_request = buildBatchClearValuesByDataFilterRequest();
+      var arg_spreadsheetId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BatchClearValuesByDataFilterRequest.fromJson(json);
+        checkBatchClearValuesByDataFilterRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        index = path.indexOf("/values:batchClearByDataFilter", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 30),
+            unittest.equals("/values:batchClearByDataFilter"));
+        pathOffset += 30;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildBatchClearValuesByDataFilterResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .batchClearByDataFilter(arg_request, arg_spreadsheetId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.BatchClearValuesByDataFilterResponse response) {
+        checkBatchClearValuesByDataFilterResponse(response);
+      })));
+    });
+
+    unittest.test("method--batchGet", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsValuesResourceApi res =
+          new api.SheetsApi(mock).spreadsheets.values;
+      var arg_spreadsheetId = "foo";
+      var arg_dateTimeRenderOption = "foo";
+      var arg_valueRenderOption = "foo";
+      var arg_majorDimension = "foo";
+      var arg_ranges = buildUnnamed502();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        index = path.indexOf("/values:batchGet", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("/values:batchGet"));
+        pathOffset += 16;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["dateTimeRenderOption"].first,
+            unittest.equals(arg_dateTimeRenderOption));
+        unittest.expect(queryMap["valueRenderOption"].first,
+            unittest.equals(arg_valueRenderOption));
+        unittest.expect(queryMap["majorDimension"].first,
+            unittest.equals(arg_majorDimension));
+        unittest.expect(queryMap["ranges"], unittest.equals(arg_ranges));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBatchGetValuesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .batchGet(arg_spreadsheetId,
+              dateTimeRenderOption: arg_dateTimeRenderOption,
+              valueRenderOption: arg_valueRenderOption,
+              majorDimension: arg_majorDimension,
+              ranges: arg_ranges,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BatchGetValuesResponse response) {
+        checkBatchGetValuesResponse(response);
+      })));
+    });
+
+    unittest.test("method--batchGetByDataFilter", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsValuesResourceApi res =
+          new api.SheetsApi(mock).spreadsheets.values;
+      var arg_request = buildBatchGetValuesByDataFilterRequest();
+      var arg_spreadsheetId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BatchGetValuesByDataFilterRequest.fromJson(json);
+        checkBatchGetValuesByDataFilterRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        index = path.indexOf("/values:batchGetByDataFilter", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 28),
+            unittest.equals("/values:batchGetByDataFilter"));
+        pathOffset += 28;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildBatchGetValuesByDataFilterResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .batchGetByDataFilter(arg_request, arg_spreadsheetId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.BatchGetValuesByDataFilterResponse response) {
+        checkBatchGetValuesByDataFilterResponse(response);
+      })));
+    });
+
+    unittest.test("method--batchUpdate", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsValuesResourceApi res =
+          new api.SheetsApi(mock).spreadsheets.values;
+      var arg_request = buildBatchUpdateValuesRequest();
+      var arg_spreadsheetId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BatchUpdateValuesRequest.fromJson(json);
+        checkBatchUpdateValuesRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        index = path.indexOf("/values:batchUpdate", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("/values:batchUpdate"));
+        pathOffset += 19;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBatchUpdateValuesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .batchUpdate(arg_request, arg_spreadsheetId, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.BatchUpdateValuesResponse response) {
+        checkBatchUpdateValuesResponse(response);
+      })));
+    });
+
+    unittest.test("method--batchUpdateByDataFilter", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsValuesResourceApi res =
+          new api.SheetsApi(mock).spreadsheets.values;
+      var arg_request = buildBatchUpdateValuesByDataFilterRequest();
+      var arg_spreadsheetId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BatchUpdateValuesByDataFilterRequest.fromJson(json);
+        checkBatchUpdateValuesByDataFilterRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        index = path.indexOf("/values:batchUpdateByDataFilter", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 31),
+            unittest.equals("/values:batchUpdateByDataFilter"));
+        pathOffset += 31;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildBatchUpdateValuesByDataFilterResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .batchUpdateByDataFilter(arg_request, arg_spreadsheetId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.BatchUpdateValuesByDataFilterResponse response) {
+        checkBatchUpdateValuesByDataFilterResponse(response);
+      })));
+    });
+
+    unittest.test("method--clear", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsValuesResourceApi res =
+          new api.SheetsApi(mock).spreadsheets.values;
+      var arg_request = buildClearValuesRequest();
+      var arg_spreadsheetId = "foo";
+      var arg_range = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ClearValuesRequest.fromJson(json);
+        checkClearValuesRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        index = path.indexOf("/values/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/values/"));
+        pathOffset += 8;
+        index = path.indexOf(":clear", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_range"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals(":clear"));
+        pathOffset += 6;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildClearValuesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .clear(arg_request, arg_spreadsheetId, arg_range,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ClearValuesResponse response) {
+        checkClearValuesResponse(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsValuesResourceApi res =
+          new api.SheetsApi(mock).spreadsheets.values;
+      var arg_spreadsheetId = "foo";
+      var arg_range = "foo";
+      var arg_majorDimension = "foo";
+      var arg_dateTimeRenderOption = "foo";
+      var arg_valueRenderOption = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        index = path.indexOf("/values/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/values/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_range"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["majorDimension"].first,
+            unittest.equals(arg_majorDimension));
+        unittest.expect(queryMap["dateTimeRenderOption"].first,
+            unittest.equals(arg_dateTimeRenderOption));
+        unittest.expect(queryMap["valueRenderOption"].first,
+            unittest.equals(arg_valueRenderOption));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildValueRange());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_spreadsheetId, arg_range,
+              majorDimension: arg_majorDimension,
+              dateTimeRenderOption: arg_dateTimeRenderOption,
+              valueRenderOption: arg_valueRenderOption,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ValueRange response) {
+        checkValueRange(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.SpreadsheetsValuesResourceApi res =
+          new api.SheetsApi(mock).spreadsheets.values;
+      var arg_request = buildValueRange();
+      var arg_spreadsheetId = "foo";
+      var arg_range = "foo";
+      var arg_valueInputOption = "foo";
+      var arg_responseDateTimeRenderOption = "foo";
+      var arg_includeValuesInResponse = true;
+      var arg_responseValueRenderOption = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ValueRange.fromJson(json);
+        checkValueRange(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 16),
+            unittest.equals("v4/spreadsheets/"));
+        pathOffset += 16;
+        index = path.indexOf("/values/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_spreadsheetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/values/"));
+        pathOffset += 8;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_range"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["valueInputOption"].first,
+            unittest.equals(arg_valueInputOption));
+        unittest.expect(queryMap["responseDateTimeRenderOption"].first,
+            unittest.equals(arg_responseDateTimeRenderOption));
+        unittest.expect(queryMap["includeValuesInResponse"].first,
+            unittest.equals("$arg_includeValuesInResponse"));
+        unittest.expect(queryMap["responseValueRenderOption"].first,
+            unittest.equals(arg_responseValueRenderOption));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUpdateValuesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_spreadsheetId, arg_range,
+              valueInputOption: arg_valueInputOption,
+              responseDateTimeRenderOption: arg_responseDateTimeRenderOption,
+              includeValuesInResponse: arg_includeValuesInResponse,
+              responseValueRenderOption: arg_responseValueRenderOption,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UpdateValuesResponse response) {
+        checkUpdateValuesResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/siteverification/v1_test.dart b/generated/googleapis/test/siteverification/v1_test.dart
index 1123362..08d12e5 100644
--- a/generated/googleapis/test/siteverification/v1_test.dart
+++ b/generated/googleapis/test/siteverification/v1_test.dart
@@ -116,14 +116,14 @@
   buildCounterSiteVerificationWebResourceGettokenResponse--;
 }
 
-buildUnnamed161() {
+buildUnnamed145() {
   var o = new core.List<api.SiteVerificationWebResourceResource>();
   o.add(buildSiteVerificationWebResourceResource());
   o.add(buildSiteVerificationWebResourceResource());
   return o;
 }
 
-checkUnnamed161(core.List<api.SiteVerificationWebResourceResource> o) {
+checkUnnamed145(core.List<api.SiteVerificationWebResourceResource> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSiteVerificationWebResourceResource(o[0]);
   checkSiteVerificationWebResourceResource(o[1]);
@@ -134,7 +134,7 @@
   var o = new api.SiteVerificationWebResourceListResponse();
   buildCounterSiteVerificationWebResourceListResponse++;
   if (buildCounterSiteVerificationWebResourceListResponse < 3) {
-    o.items = buildUnnamed161();
+    o.items = buildUnnamed145();
   }
   buildCounterSiteVerificationWebResourceListResponse--;
   return o;
@@ -144,19 +144,19 @@
     api.SiteVerificationWebResourceListResponse o) {
   buildCounterSiteVerificationWebResourceListResponse++;
   if (buildCounterSiteVerificationWebResourceListResponse < 3) {
-    checkUnnamed161(o.items);
+    checkUnnamed145(o.items);
   }
   buildCounterSiteVerificationWebResourceListResponse--;
 }
 
-buildUnnamed162() {
+buildUnnamed146() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed162(core.List<core.String> o) {
+checkUnnamed146(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -190,7 +190,7 @@
   buildCounterSiteVerificationWebResourceResource++;
   if (buildCounterSiteVerificationWebResourceResource < 3) {
     o.id = "foo";
-    o.owners = buildUnnamed162();
+    o.owners = buildUnnamed146();
     o.site = buildSiteVerificationWebResourceResourceSite();
   }
   buildCounterSiteVerificationWebResourceResource--;
@@ -202,7 +202,7 @@
   buildCounterSiteVerificationWebResourceResource++;
   if (buildCounterSiteVerificationWebResourceResource < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed162(o.owners);
+    checkUnnamed146(o.owners);
     checkSiteVerificationWebResourceResourceSite(o.site);
   }
   buildCounterSiteVerificationWebResourceResource--;
@@ -269,6 +269,7 @@
       api.WebResourceResourceApi res =
           new api.SiteVerificationApi(mock).webResource;
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -305,6 +306,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -312,7 +314,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_id).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -320,6 +324,7 @@
       api.WebResourceResourceApi res =
           new api.SiteVerificationApi(mock).webResource;
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -356,6 +361,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -364,7 +370,7 @@
             convert.JSON.encode(buildSiteVerificationWebResourceResource());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_id).then(unittest
+      res.get(arg_id, $fields: arg_$fields).then(unittest
           .expectAsync1(((api.SiteVerificationWebResourceResource response) {
         checkSiteVerificationWebResourceResource(response);
       })));
@@ -375,6 +381,7 @@
       api.WebResourceResourceApi res =
           new api.SiteVerificationApi(mock).webResource;
       var arg_request = buildSiteVerificationWebResourceGettokenRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.SiteVerificationWebResourceGettokenRequest.fromJson(json);
@@ -412,6 +419,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -420,8 +428,9 @@
             .encode(buildSiteVerificationWebResourceGettokenResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.getToken(arg_request).then(unittest.expectAsync1(
-          ((api.SiteVerificationWebResourceGettokenResponse response) {
+      res.getToken(arg_request, $fields: arg_$fields).then(unittest
+          .expectAsync1(
+              ((api.SiteVerificationWebResourceGettokenResponse response) {
         checkSiteVerificationWebResourceGettokenResponse(response);
       })));
     });
@@ -432,6 +441,7 @@
           new api.SiteVerificationApi(mock).webResource;
       var arg_request = buildSiteVerificationWebResourceResource();
       var arg_verificationMethod = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SiteVerificationWebResourceResource.fromJson(json);
         checkSiteVerificationWebResourceResource(obj);
@@ -470,6 +480,7 @@
         }
         unittest.expect(queryMap["verificationMethod"].first,
             unittest.equals(arg_verificationMethod));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -478,8 +489,10 @@
             convert.JSON.encode(buildSiteVerificationWebResourceResource());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.insert(arg_request, arg_verificationMethod).then(unittest
-          .expectAsync1(((api.SiteVerificationWebResourceResource response) {
+      res
+          .insert(arg_request, arg_verificationMethod, $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.SiteVerificationWebResourceResource response) {
         checkSiteVerificationWebResourceResource(response);
       })));
     });
@@ -488,6 +501,7 @@
       var mock = new HttpServerMock();
       api.WebResourceResourceApi res =
           new api.SiteVerificationApi(mock).webResource;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -521,6 +535,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -529,7 +544,7 @@
             convert.JSON.encode(buildSiteVerificationWebResourceListResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list().then(unittest.expectAsync1(
+      res.list($fields: arg_$fields).then(unittest.expectAsync1(
           ((api.SiteVerificationWebResourceListResponse response) {
         checkSiteVerificationWebResourceListResponse(response);
       })));
@@ -541,6 +556,7 @@
           new api.SiteVerificationApi(mock).webResource;
       var arg_request = buildSiteVerificationWebResourceResource();
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SiteVerificationWebResourceResource.fromJson(json);
         checkSiteVerificationWebResourceResource(obj);
@@ -580,6 +596,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -588,7 +605,7 @@
             convert.JSON.encode(buildSiteVerificationWebResourceResource());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.patch(arg_request, arg_id).then(unittest
+      res.patch(arg_request, arg_id, $fields: arg_$fields).then(unittest
           .expectAsync1(((api.SiteVerificationWebResourceResource response) {
         checkSiteVerificationWebResourceResource(response);
       })));
@@ -600,6 +617,7 @@
           new api.SiteVerificationApi(mock).webResource;
       var arg_request = buildSiteVerificationWebResourceResource();
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SiteVerificationWebResourceResource.fromJson(json);
         checkSiteVerificationWebResourceResource(obj);
@@ -639,6 +657,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -647,7 +666,7 @@
             convert.JSON.encode(buildSiteVerificationWebResourceResource());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.update(arg_request, arg_id).then(unittest
+      res.update(arg_request, arg_id, $fields: arg_$fields).then(unittest
           .expectAsync1(((api.SiteVerificationWebResourceResource response) {
         checkSiteVerificationWebResourceResource(response);
       })));
diff --git a/generated/googleapis/test/slides/v1_test.dart b/generated/googleapis/test/slides/v1_test.dart
index bc3fa46..07b9234 100644
--- a/generated/googleapis/test/slides/v1_test.dart
+++ b/generated/googleapis/test/slides/v1_test.dart
@@ -104,14 +104,14 @@
   buildCounterAutoText--;
 }
 
-buildUnnamed1782() {
+buildUnnamed1773() {
   var o = new core.List<api.Request>();
   o.add(buildRequest());
   o.add(buildRequest());
   return o;
 }
 
-checkUnnamed1782(core.List<api.Request> o) {
+checkUnnamed1773(core.List<api.Request> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRequest(o[0]);
   checkRequest(o[1]);
@@ -122,7 +122,7 @@
   var o = new api.BatchUpdatePresentationRequest();
   buildCounterBatchUpdatePresentationRequest++;
   if (buildCounterBatchUpdatePresentationRequest < 3) {
-    o.requests = buildUnnamed1782();
+    o.requests = buildUnnamed1773();
     o.writeControl = buildWriteControl();
   }
   buildCounterBatchUpdatePresentationRequest--;
@@ -132,20 +132,20 @@
 checkBatchUpdatePresentationRequest(api.BatchUpdatePresentationRequest o) {
   buildCounterBatchUpdatePresentationRequest++;
   if (buildCounterBatchUpdatePresentationRequest < 3) {
-    checkUnnamed1782(o.requests);
+    checkUnnamed1773(o.requests);
     checkWriteControl(o.writeControl);
   }
   buildCounterBatchUpdatePresentationRequest--;
 }
 
-buildUnnamed1783() {
+buildUnnamed1774() {
   var o = new core.List<api.Response>();
   o.add(buildResponse());
   o.add(buildResponse());
   return o;
 }
 
-checkUnnamed1783(core.List<api.Response> o) {
+checkUnnamed1774(core.List<api.Response> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResponse(o[0]);
   checkResponse(o[1]);
@@ -157,7 +157,7 @@
   buildCounterBatchUpdatePresentationResponse++;
   if (buildCounterBatchUpdatePresentationResponse < 3) {
     o.presentationId = "foo";
-    o.replies = buildUnnamed1783();
+    o.replies = buildUnnamed1774();
   }
   buildCounterBatchUpdatePresentationResponse--;
   return o;
@@ -167,7 +167,7 @@
   buildCounterBatchUpdatePresentationResponse++;
   if (buildCounterBatchUpdatePresentationResponse < 3) {
     unittest.expect(o.presentationId, unittest.equals('foo'));
-    checkUnnamed1783(o.replies);
+    checkUnnamed1774(o.replies);
   }
   buildCounterBatchUpdatePresentationResponse--;
 }
@@ -197,14 +197,14 @@
   buildCounterBullet--;
 }
 
-buildUnnamed1784() {
+buildUnnamed1775() {
   var o = new core.List<api.ThemeColorPair>();
   o.add(buildThemeColorPair());
   o.add(buildThemeColorPair());
   return o;
 }
 
-checkUnnamed1784(core.List<api.ThemeColorPair> o) {
+checkUnnamed1775(core.List<api.ThemeColorPair> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkThemeColorPair(o[0]);
   checkThemeColorPair(o[1]);
@@ -215,7 +215,7 @@
   var o = new api.ColorScheme();
   buildCounterColorScheme++;
   if (buildCounterColorScheme < 3) {
-    o.colors = buildUnnamed1784();
+    o.colors = buildUnnamed1775();
   }
   buildCounterColorScheme--;
   return o;
@@ -224,7 +224,7 @@
 checkColorScheme(api.ColorScheme o) {
   buildCounterColorScheme++;
   if (buildCounterColorScheme < 3) {
-    checkUnnamed1784(o.colors);
+    checkUnnamed1775(o.colors);
   }
   buildCounterColorScheme--;
 }
@@ -449,14 +449,14 @@
   buildCounterCreateSheetsChartResponse--;
 }
 
-buildUnnamed1785() {
+buildUnnamed1776() {
   var o = new core.List<api.LayoutPlaceholderIdMapping>();
   o.add(buildLayoutPlaceholderIdMapping());
   o.add(buildLayoutPlaceholderIdMapping());
   return o;
 }
 
-checkUnnamed1785(core.List<api.LayoutPlaceholderIdMapping> o) {
+checkUnnamed1776(core.List<api.LayoutPlaceholderIdMapping> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLayoutPlaceholderIdMapping(o[0]);
   checkLayoutPlaceholderIdMapping(o[1]);
@@ -469,7 +469,7 @@
   if (buildCounterCreateSlideRequest < 3) {
     o.insertionIndex = 42;
     o.objectId = "foo";
-    o.placeholderIdMappings = buildUnnamed1785();
+    o.placeholderIdMappings = buildUnnamed1776();
     o.slideLayoutReference = buildLayoutReference();
   }
   buildCounterCreateSlideRequest--;
@@ -481,7 +481,7 @@
   if (buildCounterCreateSlideRequest < 3) {
     unittest.expect(o.insertionIndex, unittest.equals(42));
     unittest.expect(o.objectId, unittest.equals('foo'));
-    checkUnnamed1785(o.placeholderIdMappings);
+    checkUnnamed1776(o.placeholderIdMappings);
     checkLayoutReference(o.slideLayoutReference);
   }
   buildCounterCreateSlideRequest--;
@@ -749,14 +749,14 @@
   buildCounterDimension--;
 }
 
-buildUnnamed1786() {
+buildUnnamed1777() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1786(core.Map<core.String, core.String> o) {
+checkUnnamed1777(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -768,7 +768,7 @@
   buildCounterDuplicateObjectRequest++;
   if (buildCounterDuplicateObjectRequest < 3) {
     o.objectId = "foo";
-    o.objectIds = buildUnnamed1786();
+    o.objectIds = buildUnnamed1777();
   }
   buildCounterDuplicateObjectRequest--;
   return o;
@@ -778,7 +778,7 @@
   buildCounterDuplicateObjectRequest++;
   if (buildCounterDuplicateObjectRequest < 3) {
     unittest.expect(o.objectId, unittest.equals('foo'));
-    checkUnnamed1786(o.objectIds);
+    checkUnnamed1777(o.objectIds);
   }
   buildCounterDuplicateObjectRequest--;
 }
@@ -802,14 +802,14 @@
   buildCounterDuplicateObjectResponse--;
 }
 
-buildUnnamed1787() {
+buildUnnamed1778() {
   var o = new core.List<api.PageElement>();
   o.add(buildPageElement());
   o.add(buildPageElement());
   return o;
 }
 
-checkUnnamed1787(core.List<api.PageElement> o) {
+checkUnnamed1778(core.List<api.PageElement> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPageElement(o[0]);
   checkPageElement(o[1]);
@@ -820,7 +820,7 @@
   var o = new api.Group();
   buildCounterGroup++;
   if (buildCounterGroup < 3) {
-    o.children = buildUnnamed1787();
+    o.children = buildUnnamed1778();
   }
   buildCounterGroup--;
   return o;
@@ -829,11 +829,64 @@
 checkGroup(api.Group o) {
   buildCounterGroup++;
   if (buildCounterGroup < 3) {
-    checkUnnamed1787(o.children);
+    checkUnnamed1778(o.children);
   }
   buildCounterGroup--;
 }
 
+buildUnnamed1779() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1779(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterGroupObjectsRequest = 0;
+buildGroupObjectsRequest() {
+  var o = new api.GroupObjectsRequest();
+  buildCounterGroupObjectsRequest++;
+  if (buildCounterGroupObjectsRequest < 3) {
+    o.childrenObjectIds = buildUnnamed1779();
+    o.groupObjectId = "foo";
+  }
+  buildCounterGroupObjectsRequest--;
+  return o;
+}
+
+checkGroupObjectsRequest(api.GroupObjectsRequest o) {
+  buildCounterGroupObjectsRequest++;
+  if (buildCounterGroupObjectsRequest < 3) {
+    checkUnnamed1779(o.childrenObjectIds);
+    unittest.expect(o.groupObjectId, unittest.equals('foo'));
+  }
+  buildCounterGroupObjectsRequest--;
+}
+
+core.int buildCounterGroupObjectsResponse = 0;
+buildGroupObjectsResponse() {
+  var o = new api.GroupObjectsResponse();
+  buildCounterGroupObjectsResponse++;
+  if (buildCounterGroupObjectsResponse < 3) {
+    o.objectId = "foo";
+  }
+  buildCounterGroupObjectsResponse--;
+  return o;
+}
+
+checkGroupObjectsResponse(api.GroupObjectsResponse o) {
+  buildCounterGroupObjectsResponse++;
+  if (buildCounterGroupObjectsResponse < 3) {
+    unittest.expect(o.objectId, unittest.equals('foo'));
+  }
+  buildCounterGroupObjectsResponse--;
+}
+
 core.int buildCounterImage = 0;
 buildImage() {
   var o = new api.Image();
@@ -1124,14 +1177,14 @@
   buildCounterLink--;
 }
 
-buildUnnamed1788() {
+buildUnnamed1780() {
   var o = new core.Map<core.String, api.NestingLevel>();
   o["x"] = buildNestingLevel();
   o["y"] = buildNestingLevel();
   return o;
 }
 
-checkUnnamed1788(core.Map<core.String, api.NestingLevel> o) {
+checkUnnamed1780(core.Map<core.String, api.NestingLevel> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkNestingLevel(o["x"]);
   checkNestingLevel(o["y"]);
@@ -1143,7 +1196,7 @@
   buildCounterList++;
   if (buildCounterList < 3) {
     o.listId = "foo";
-    o.nestingLevel = buildUnnamed1788();
+    o.nestingLevel = buildUnnamed1780();
   }
   buildCounterList--;
   return o;
@@ -1153,7 +1206,7 @@
   buildCounterList++;
   if (buildCounterList < 3) {
     unittest.expect(o.listId, unittest.equals('foo'));
-    checkUnnamed1788(o.nestingLevel);
+    checkUnnamed1780(o.nestingLevel);
   }
   buildCounterList--;
 }
@@ -1177,6 +1230,27 @@
   buildCounterMasterProperties--;
 }
 
+core.int buildCounterMergeTableCellsRequest = 0;
+buildMergeTableCellsRequest() {
+  var o = new api.MergeTableCellsRequest();
+  buildCounterMergeTableCellsRequest++;
+  if (buildCounterMergeTableCellsRequest < 3) {
+    o.objectId = "foo";
+    o.tableRange = buildTableRange();
+  }
+  buildCounterMergeTableCellsRequest--;
+  return o;
+}
+
+checkMergeTableCellsRequest(api.MergeTableCellsRequest o) {
+  buildCounterMergeTableCellsRequest++;
+  if (buildCounterMergeTableCellsRequest < 3) {
+    unittest.expect(o.objectId, unittest.equals('foo'));
+    checkTableRange(o.tableRange);
+  }
+  buildCounterMergeTableCellsRequest--;
+}
+
 core.int buildCounterNestingLevel = 0;
 buildNestingLevel() {
   var o = new api.NestingLevel();
@@ -1299,14 +1373,14 @@
   buildCounterOutlineFill--;
 }
 
-buildUnnamed1789() {
+buildUnnamed1781() {
   var o = new core.List<api.PageElement>();
   o.add(buildPageElement());
   o.add(buildPageElement());
   return o;
 }
 
-checkUnnamed1789(core.List<api.PageElement> o) {
+checkUnnamed1781(core.List<api.PageElement> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPageElement(o[0]);
   checkPageElement(o[1]);
@@ -1321,7 +1395,7 @@
     o.masterProperties = buildMasterProperties();
     o.notesProperties = buildNotesProperties();
     o.objectId = "foo";
-    o.pageElements = buildUnnamed1789();
+    o.pageElements = buildUnnamed1781();
     o.pageProperties = buildPageProperties();
     o.pageType = "foo";
     o.revisionId = "foo";
@@ -1338,7 +1412,7 @@
     checkMasterProperties(o.masterProperties);
     checkNotesProperties(o.notesProperties);
     unittest.expect(o.objectId, unittest.equals('foo'));
-    checkUnnamed1789(o.pageElements);
+    checkUnnamed1781(o.pageElements);
     checkPageProperties(o.pageProperties);
     unittest.expect(o.pageType, unittest.equals('foo'));
     unittest.expect(o.revisionId, unittest.equals('foo'));
@@ -1536,40 +1610,40 @@
   buildCounterPlaceholder--;
 }
 
-buildUnnamed1790() {
+buildUnnamed1782() {
   var o = new core.List<api.Page>();
   o.add(buildPage());
   o.add(buildPage());
   return o;
 }
 
-checkUnnamed1790(core.List<api.Page> o) {
+checkUnnamed1782(core.List<api.Page> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPage(o[0]);
   checkPage(o[1]);
 }
 
-buildUnnamed1791() {
+buildUnnamed1783() {
   var o = new core.List<api.Page>();
   o.add(buildPage());
   o.add(buildPage());
   return o;
 }
 
-checkUnnamed1791(core.List<api.Page> o) {
+checkUnnamed1783(core.List<api.Page> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPage(o[0]);
   checkPage(o[1]);
 }
 
-buildUnnamed1792() {
+buildUnnamed1784() {
   var o = new core.List<api.Page>();
   o.add(buildPage());
   o.add(buildPage());
   return o;
 }
 
-checkUnnamed1792(core.List<api.Page> o) {
+checkUnnamed1784(core.List<api.Page> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPage(o[0]);
   checkPage(o[1]);
@@ -1580,14 +1654,14 @@
   var o = new api.Presentation();
   buildCounterPresentation++;
   if (buildCounterPresentation < 3) {
-    o.layouts = buildUnnamed1790();
+    o.layouts = buildUnnamed1782();
     o.locale = "foo";
-    o.masters = buildUnnamed1791();
+    o.masters = buildUnnamed1783();
     o.notesMaster = buildPage();
     o.pageSize = buildSize();
     o.presentationId = "foo";
     o.revisionId = "foo";
-    o.slides = buildUnnamed1792();
+    o.slides = buildUnnamed1784();
     o.title = "foo";
   }
   buildCounterPresentation--;
@@ -1597,14 +1671,14 @@
 checkPresentation(api.Presentation o) {
   buildCounterPresentation++;
   if (buildCounterPresentation < 3) {
-    checkUnnamed1790(o.layouts);
+    checkUnnamed1782(o.layouts);
     unittest.expect(o.locale, unittest.equals('foo'));
-    checkUnnamed1791(o.masters);
+    checkUnnamed1783(o.masters);
     checkPage(o.notesMaster);
     checkSize(o.pageSize);
     unittest.expect(o.presentationId, unittest.equals('foo'));
     unittest.expect(o.revisionId, unittest.equals('foo'));
-    checkUnnamed1792(o.slides);
+    checkUnnamed1784(o.slides);
     unittest.expect(o.title, unittest.equals('foo'));
   }
   buildCounterPresentation--;
@@ -1633,14 +1707,14 @@
   buildCounterRange--;
 }
 
-buildUnnamed1793() {
+buildUnnamed1785() {
   var o = new core.List<api.ColorStop>();
   o.add(buildColorStop());
   o.add(buildColorStop());
   return o;
 }
 
-checkUnnamed1793(core.List<api.ColorStop> o) {
+checkUnnamed1785(core.List<api.ColorStop> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkColorStop(o[0]);
   checkColorStop(o[1]);
@@ -1652,7 +1726,7 @@
   buildCounterRecolor++;
   if (buildCounterRecolor < 3) {
     o.name = "foo";
-    o.recolorStops = buildUnnamed1793();
+    o.recolorStops = buildUnnamed1785();
   }
   buildCounterRecolor--;
   return o;
@@ -1662,7 +1736,7 @@
   buildCounterRecolor++;
   if (buildCounterRecolor < 3) {
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1793(o.recolorStops);
+    checkUnnamed1785(o.recolorStops);
   }
   buildCounterRecolor--;
 }
@@ -1686,14 +1760,14 @@
   buildCounterRefreshSheetsChartRequest--;
 }
 
-buildUnnamed1794() {
+buildUnnamed1786() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1794(core.List<core.String> o) {
+checkUnnamed1786(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1706,7 +1780,7 @@
   if (buildCounterReplaceAllShapesWithImageRequest < 3) {
     o.containsText = buildSubstringMatchCriteria();
     o.imageUrl = "foo";
-    o.pageObjectIds = buildUnnamed1794();
+    o.pageObjectIds = buildUnnamed1786();
     o.replaceMethod = "foo";
   }
   buildCounterReplaceAllShapesWithImageRequest--;
@@ -1718,7 +1792,7 @@
   if (buildCounterReplaceAllShapesWithImageRequest < 3) {
     checkSubstringMatchCriteria(o.containsText);
     unittest.expect(o.imageUrl, unittest.equals('foo'));
-    checkUnnamed1794(o.pageObjectIds);
+    checkUnnamed1786(o.pageObjectIds);
     unittest.expect(o.replaceMethod, unittest.equals('foo'));
   }
   buildCounterReplaceAllShapesWithImageRequest--;
@@ -1744,14 +1818,14 @@
   buildCounterReplaceAllShapesWithImageResponse--;
 }
 
-buildUnnamed1795() {
+buildUnnamed1787() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1795(core.List<core.String> o) {
+checkUnnamed1787(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1765,7 +1839,7 @@
     o.chartId = 42;
     o.containsText = buildSubstringMatchCriteria();
     o.linkingMode = "foo";
-    o.pageObjectIds = buildUnnamed1795();
+    o.pageObjectIds = buildUnnamed1787();
     o.spreadsheetId = "foo";
   }
   buildCounterReplaceAllShapesWithSheetsChartRequest--;
@@ -1779,7 +1853,7 @@
     unittest.expect(o.chartId, unittest.equals(42));
     checkSubstringMatchCriteria(o.containsText);
     unittest.expect(o.linkingMode, unittest.equals('foo'));
-    checkUnnamed1795(o.pageObjectIds);
+    checkUnnamed1787(o.pageObjectIds);
     unittest.expect(o.spreadsheetId, unittest.equals('foo'));
   }
   buildCounterReplaceAllShapesWithSheetsChartRequest--;
@@ -1805,14 +1879,14 @@
   buildCounterReplaceAllShapesWithSheetsChartResponse--;
 }
 
-buildUnnamed1796() {
+buildUnnamed1788() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1796(core.List<core.String> o) {
+checkUnnamed1788(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1824,7 +1898,7 @@
   buildCounterReplaceAllTextRequest++;
   if (buildCounterReplaceAllTextRequest < 3) {
     o.containsText = buildSubstringMatchCriteria();
-    o.pageObjectIds = buildUnnamed1796();
+    o.pageObjectIds = buildUnnamed1788();
     o.replaceText = "foo";
   }
   buildCounterReplaceAllTextRequest--;
@@ -1835,7 +1909,7 @@
   buildCounterReplaceAllTextRequest++;
   if (buildCounterReplaceAllTextRequest < 3) {
     checkSubstringMatchCriteria(o.containsText);
-    checkUnnamed1796(o.pageObjectIds);
+    checkUnnamed1788(o.pageObjectIds);
     unittest.expect(o.replaceText, unittest.equals('foo'));
   }
   buildCounterReplaceAllTextRequest--;
@@ -1879,14 +1953,18 @@
     o.deleteTableRow = buildDeleteTableRowRequest();
     o.deleteText = buildDeleteTextRequest();
     o.duplicateObject = buildDuplicateObjectRequest();
+    o.groupObjects = buildGroupObjectsRequest();
     o.insertTableColumns = buildInsertTableColumnsRequest();
     o.insertTableRows = buildInsertTableRowsRequest();
     o.insertText = buildInsertTextRequest();
+    o.mergeTableCells = buildMergeTableCellsRequest();
     o.refreshSheetsChart = buildRefreshSheetsChartRequest();
     o.replaceAllShapesWithImage = buildReplaceAllShapesWithImageRequest();
     o.replaceAllShapesWithSheetsChart =
         buildReplaceAllShapesWithSheetsChartRequest();
     o.replaceAllText = buildReplaceAllTextRequest();
+    o.ungroupObjects = buildUngroupObjectsRequest();
+    o.unmergeTableCells = buildUnmergeTableCellsRequest();
     o.updateImageProperties = buildUpdateImagePropertiesRequest();
     o.updateLineProperties = buildUpdateLinePropertiesRequest();
     o.updatePageElementTransform = buildUpdatePageElementTransformRequest();
@@ -1894,7 +1972,10 @@
     o.updateParagraphStyle = buildUpdateParagraphStyleRequest();
     o.updateShapeProperties = buildUpdateShapePropertiesRequest();
     o.updateSlidesPosition = buildUpdateSlidesPositionRequest();
+    o.updateTableBorderProperties = buildUpdateTableBorderPropertiesRequest();
     o.updateTableCellProperties = buildUpdateTableCellPropertiesRequest();
+    o.updateTableColumnProperties = buildUpdateTableColumnPropertiesRequest();
+    o.updateTableRowProperties = buildUpdateTableRowPropertiesRequest();
     o.updateTextStyle = buildUpdateTextStyleRequest();
     o.updateVideoProperties = buildUpdateVideoPropertiesRequest();
   }
@@ -1919,14 +2000,18 @@
     checkDeleteTableRowRequest(o.deleteTableRow);
     checkDeleteTextRequest(o.deleteText);
     checkDuplicateObjectRequest(o.duplicateObject);
+    checkGroupObjectsRequest(o.groupObjects);
     checkInsertTableColumnsRequest(o.insertTableColumns);
     checkInsertTableRowsRequest(o.insertTableRows);
     checkInsertTextRequest(o.insertText);
+    checkMergeTableCellsRequest(o.mergeTableCells);
     checkRefreshSheetsChartRequest(o.refreshSheetsChart);
     checkReplaceAllShapesWithImageRequest(o.replaceAllShapesWithImage);
     checkReplaceAllShapesWithSheetsChartRequest(
         o.replaceAllShapesWithSheetsChart);
     checkReplaceAllTextRequest(o.replaceAllText);
+    checkUngroupObjectsRequest(o.ungroupObjects);
+    checkUnmergeTableCellsRequest(o.unmergeTableCells);
     checkUpdateImagePropertiesRequest(o.updateImageProperties);
     checkUpdateLinePropertiesRequest(o.updateLineProperties);
     checkUpdatePageElementTransformRequest(o.updatePageElementTransform);
@@ -1934,7 +2019,10 @@
     checkUpdateParagraphStyleRequest(o.updateParagraphStyle);
     checkUpdateShapePropertiesRequest(o.updateShapeProperties);
     checkUpdateSlidesPositionRequest(o.updateSlidesPosition);
+    checkUpdateTableBorderPropertiesRequest(o.updateTableBorderProperties);
     checkUpdateTableCellPropertiesRequest(o.updateTableCellProperties);
+    checkUpdateTableColumnPropertiesRequest(o.updateTableColumnProperties);
+    checkUpdateTableRowPropertiesRequest(o.updateTableRowProperties);
     checkUpdateTextStyleRequest(o.updateTextStyle);
     checkUpdateVideoPropertiesRequest(o.updateVideoProperties);
   }
@@ -1954,6 +2042,7 @@
     o.createTable = buildCreateTableResponse();
     o.createVideo = buildCreateVideoResponse();
     o.duplicateObject = buildDuplicateObjectResponse();
+    o.groupObjects = buildGroupObjectsResponse();
     o.replaceAllShapesWithImage = buildReplaceAllShapesWithImageResponse();
     o.replaceAllShapesWithSheetsChart =
         buildReplaceAllShapesWithSheetsChartResponse();
@@ -1974,6 +2063,7 @@
     checkCreateTableResponse(o.createTable);
     checkCreateVideoResponse(o.createVideo);
     checkDuplicateObjectResponse(o.duplicateObject);
+    checkGroupObjectsResponse(o.groupObjects);
     checkReplaceAllShapesWithImageResponse(o.replaceAllShapesWithImage);
     checkReplaceAllShapesWithSheetsChartResponse(
         o.replaceAllShapesWithSheetsChart);
@@ -2260,41 +2350,69 @@
   buildCounterSubstringMatchCriteria--;
 }
 
-buildUnnamed1797() {
+buildUnnamed1789() {
+  var o = new core.List<api.TableBorderRow>();
+  o.add(buildTableBorderRow());
+  o.add(buildTableBorderRow());
+  return o;
+}
+
+checkUnnamed1789(core.List<api.TableBorderRow> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTableBorderRow(o[0]);
+  checkTableBorderRow(o[1]);
+}
+
+buildUnnamed1790() {
   var o = new core.List<api.TableColumnProperties>();
   o.add(buildTableColumnProperties());
   o.add(buildTableColumnProperties());
   return o;
 }
 
-checkUnnamed1797(core.List<api.TableColumnProperties> o) {
+checkUnnamed1790(core.List<api.TableColumnProperties> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTableColumnProperties(o[0]);
   checkTableColumnProperties(o[1]);
 }
 
-buildUnnamed1798() {
+buildUnnamed1791() {
   var o = new core.List<api.TableRow>();
   o.add(buildTableRow());
   o.add(buildTableRow());
   return o;
 }
 
-checkUnnamed1798(core.List<api.TableRow> o) {
+checkUnnamed1791(core.List<api.TableRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTableRow(o[0]);
   checkTableRow(o[1]);
 }
 
+buildUnnamed1792() {
+  var o = new core.List<api.TableBorderRow>();
+  o.add(buildTableBorderRow());
+  o.add(buildTableBorderRow());
+  return o;
+}
+
+checkUnnamed1792(core.List<api.TableBorderRow> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTableBorderRow(o[0]);
+  checkTableBorderRow(o[1]);
+}
+
 core.int buildCounterTable = 0;
 buildTable() {
   var o = new api.Table();
   buildCounterTable++;
   if (buildCounterTable < 3) {
     o.columns = 42;
+    o.horizontalBorderRows = buildUnnamed1789();
     o.rows = 42;
-    o.tableColumns = buildUnnamed1797();
-    o.tableRows = buildUnnamed1798();
+    o.tableColumns = buildUnnamed1790();
+    o.tableRows = buildUnnamed1791();
+    o.verticalBorderRows = buildUnnamed1792();
   }
   buildCounterTable--;
   return o;
@@ -2304,13 +2422,110 @@
   buildCounterTable++;
   if (buildCounterTable < 3) {
     unittest.expect(o.columns, unittest.equals(42));
+    checkUnnamed1789(o.horizontalBorderRows);
     unittest.expect(o.rows, unittest.equals(42));
-    checkUnnamed1797(o.tableColumns);
-    checkUnnamed1798(o.tableRows);
+    checkUnnamed1790(o.tableColumns);
+    checkUnnamed1791(o.tableRows);
+    checkUnnamed1792(o.verticalBorderRows);
   }
   buildCounterTable--;
 }
 
+core.int buildCounterTableBorderCell = 0;
+buildTableBorderCell() {
+  var o = new api.TableBorderCell();
+  buildCounterTableBorderCell++;
+  if (buildCounterTableBorderCell < 3) {
+    o.location = buildTableCellLocation();
+    o.tableBorderProperties = buildTableBorderProperties();
+  }
+  buildCounterTableBorderCell--;
+  return o;
+}
+
+checkTableBorderCell(api.TableBorderCell o) {
+  buildCounterTableBorderCell++;
+  if (buildCounterTableBorderCell < 3) {
+    checkTableCellLocation(o.location);
+    checkTableBorderProperties(o.tableBorderProperties);
+  }
+  buildCounterTableBorderCell--;
+}
+
+core.int buildCounterTableBorderFill = 0;
+buildTableBorderFill() {
+  var o = new api.TableBorderFill();
+  buildCounterTableBorderFill++;
+  if (buildCounterTableBorderFill < 3) {
+    o.solidFill = buildSolidFill();
+  }
+  buildCounterTableBorderFill--;
+  return o;
+}
+
+checkTableBorderFill(api.TableBorderFill o) {
+  buildCounterTableBorderFill++;
+  if (buildCounterTableBorderFill < 3) {
+    checkSolidFill(o.solidFill);
+  }
+  buildCounterTableBorderFill--;
+}
+
+core.int buildCounterTableBorderProperties = 0;
+buildTableBorderProperties() {
+  var o = new api.TableBorderProperties();
+  buildCounterTableBorderProperties++;
+  if (buildCounterTableBorderProperties < 3) {
+    o.dashStyle = "foo";
+    o.tableBorderFill = buildTableBorderFill();
+    o.weight = buildDimension();
+  }
+  buildCounterTableBorderProperties--;
+  return o;
+}
+
+checkTableBorderProperties(api.TableBorderProperties o) {
+  buildCounterTableBorderProperties++;
+  if (buildCounterTableBorderProperties < 3) {
+    unittest.expect(o.dashStyle, unittest.equals('foo'));
+    checkTableBorderFill(o.tableBorderFill);
+    checkDimension(o.weight);
+  }
+  buildCounterTableBorderProperties--;
+}
+
+buildUnnamed1793() {
+  var o = new core.List<api.TableBorderCell>();
+  o.add(buildTableBorderCell());
+  o.add(buildTableBorderCell());
+  return o;
+}
+
+checkUnnamed1793(core.List<api.TableBorderCell> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTableBorderCell(o[0]);
+  checkTableBorderCell(o[1]);
+}
+
+core.int buildCounterTableBorderRow = 0;
+buildTableBorderRow() {
+  var o = new api.TableBorderRow();
+  buildCounterTableBorderRow++;
+  if (buildCounterTableBorderRow < 3) {
+    o.tableBorderCells = buildUnnamed1793();
+  }
+  buildCounterTableBorderRow--;
+  return o;
+}
+
+checkTableBorderRow(api.TableBorderRow o) {
+  buildCounterTableBorderRow++;
+  if (buildCounterTableBorderRow < 3) {
+    checkUnnamed1793(o.tableBorderCells);
+  }
+  buildCounterTableBorderRow--;
+}
+
 core.int buildCounterTableCell = 0;
 buildTableCell() {
   var o = new api.TableCell();
@@ -2441,14 +2656,14 @@
   buildCounterTableRange--;
 }
 
-buildUnnamed1799() {
+buildUnnamed1794() {
   var o = new core.List<api.TableCell>();
   o.add(buildTableCell());
   o.add(buildTableCell());
   return o;
 }
 
-checkUnnamed1799(core.List<api.TableCell> o) {
+checkUnnamed1794(core.List<api.TableCell> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTableCell(o[0]);
   checkTableCell(o[1]);
@@ -2460,7 +2675,8 @@
   buildCounterTableRow++;
   if (buildCounterTableRow < 3) {
     o.rowHeight = buildDimension();
-    o.tableCells = buildUnnamed1799();
+    o.tableCells = buildUnnamed1794();
+    o.tableRowProperties = buildTableRowProperties();
   }
   buildCounterTableRow--;
   return o;
@@ -2470,32 +2686,52 @@
   buildCounterTableRow++;
   if (buildCounterTableRow < 3) {
     checkDimension(o.rowHeight);
-    checkUnnamed1799(o.tableCells);
+    checkUnnamed1794(o.tableCells);
+    checkTableRowProperties(o.tableRowProperties);
   }
   buildCounterTableRow--;
 }
 
-buildUnnamed1800() {
+core.int buildCounterTableRowProperties = 0;
+buildTableRowProperties() {
+  var o = new api.TableRowProperties();
+  buildCounterTableRowProperties++;
+  if (buildCounterTableRowProperties < 3) {
+    o.minRowHeight = buildDimension();
+  }
+  buildCounterTableRowProperties--;
+  return o;
+}
+
+checkTableRowProperties(api.TableRowProperties o) {
+  buildCounterTableRowProperties++;
+  if (buildCounterTableRowProperties < 3) {
+    checkDimension(o.minRowHeight);
+  }
+  buildCounterTableRowProperties--;
+}
+
+buildUnnamed1795() {
   var o = new core.Map<core.String, api.List>();
   o["x"] = buildList();
   o["y"] = buildList();
   return o;
 }
 
-checkUnnamed1800(core.Map<core.String, api.List> o) {
+checkUnnamed1795(core.Map<core.String, api.List> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkList(o["x"]);
   checkList(o["y"]);
 }
 
-buildUnnamed1801() {
+buildUnnamed1796() {
   var o = new core.List<api.TextElement>();
   o.add(buildTextElement());
   o.add(buildTextElement());
   return o;
 }
 
-checkUnnamed1801(core.List<api.TextElement> o) {
+checkUnnamed1796(core.List<api.TextElement> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTextElement(o[0]);
   checkTextElement(o[1]);
@@ -2506,8 +2742,8 @@
   var o = new api.TextContent();
   buildCounterTextContent++;
   if (buildCounterTextContent < 3) {
-    o.lists = buildUnnamed1800();
-    o.textElements = buildUnnamed1801();
+    o.lists = buildUnnamed1795();
+    o.textElements = buildUnnamed1796();
   }
   buildCounterTextContent--;
   return o;
@@ -2516,8 +2752,8 @@
 checkTextContent(api.TextContent o) {
   buildCounterTextContent++;
   if (buildCounterTextContent < 3) {
-    checkUnnamed1800(o.lists);
-    checkUnnamed1801(o.textElements);
+    checkUnnamed1795(o.lists);
+    checkUnnamed1796(o.textElements);
   }
   buildCounterTextContent--;
 }
@@ -2655,6 +2891,59 @@
   buildCounterThumbnail--;
 }
 
+buildUnnamed1797() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1797(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterUngroupObjectsRequest = 0;
+buildUngroupObjectsRequest() {
+  var o = new api.UngroupObjectsRequest();
+  buildCounterUngroupObjectsRequest++;
+  if (buildCounterUngroupObjectsRequest < 3) {
+    o.objectIds = buildUnnamed1797();
+  }
+  buildCounterUngroupObjectsRequest--;
+  return o;
+}
+
+checkUngroupObjectsRequest(api.UngroupObjectsRequest o) {
+  buildCounterUngroupObjectsRequest++;
+  if (buildCounterUngroupObjectsRequest < 3) {
+    checkUnnamed1797(o.objectIds);
+  }
+  buildCounterUngroupObjectsRequest--;
+}
+
+core.int buildCounterUnmergeTableCellsRequest = 0;
+buildUnmergeTableCellsRequest() {
+  var o = new api.UnmergeTableCellsRequest();
+  buildCounterUnmergeTableCellsRequest++;
+  if (buildCounterUnmergeTableCellsRequest < 3) {
+    o.objectId = "foo";
+    o.tableRange = buildTableRange();
+  }
+  buildCounterUnmergeTableCellsRequest--;
+  return o;
+}
+
+checkUnmergeTableCellsRequest(api.UnmergeTableCellsRequest o) {
+  buildCounterUnmergeTableCellsRequest++;
+  if (buildCounterUnmergeTableCellsRequest < 3) {
+    unittest.expect(o.objectId, unittest.equals('foo'));
+    checkTableRange(o.tableRange);
+  }
+  buildCounterUnmergeTableCellsRequest--;
+}
+
 core.int buildCounterUpdateImagePropertiesRequest = 0;
 buildUpdateImagePropertiesRequest() {
   var o = new api.UpdateImagePropertiesRequest();
@@ -2798,14 +3087,14 @@
   buildCounterUpdateShapePropertiesRequest--;
 }
 
-buildUnnamed1802() {
+buildUnnamed1798() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1802(core.List<core.String> o) {
+checkUnnamed1798(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2817,7 +3106,7 @@
   buildCounterUpdateSlidesPositionRequest++;
   if (buildCounterUpdateSlidesPositionRequest < 3) {
     o.insertionIndex = 42;
-    o.slideObjectIds = buildUnnamed1802();
+    o.slideObjectIds = buildUnnamed1798();
   }
   buildCounterUpdateSlidesPositionRequest--;
   return o;
@@ -2827,11 +3116,39 @@
   buildCounterUpdateSlidesPositionRequest++;
   if (buildCounterUpdateSlidesPositionRequest < 3) {
     unittest.expect(o.insertionIndex, unittest.equals(42));
-    checkUnnamed1802(o.slideObjectIds);
+    checkUnnamed1798(o.slideObjectIds);
   }
   buildCounterUpdateSlidesPositionRequest--;
 }
 
+core.int buildCounterUpdateTableBorderPropertiesRequest = 0;
+buildUpdateTableBorderPropertiesRequest() {
+  var o = new api.UpdateTableBorderPropertiesRequest();
+  buildCounterUpdateTableBorderPropertiesRequest++;
+  if (buildCounterUpdateTableBorderPropertiesRequest < 3) {
+    o.borderPosition = "foo";
+    o.fields = "foo";
+    o.objectId = "foo";
+    o.tableBorderProperties = buildTableBorderProperties();
+    o.tableRange = buildTableRange();
+  }
+  buildCounterUpdateTableBorderPropertiesRequest--;
+  return o;
+}
+
+checkUpdateTableBorderPropertiesRequest(
+    api.UpdateTableBorderPropertiesRequest o) {
+  buildCounterUpdateTableBorderPropertiesRequest++;
+  if (buildCounterUpdateTableBorderPropertiesRequest < 3) {
+    unittest.expect(o.borderPosition, unittest.equals('foo'));
+    unittest.expect(o.fields, unittest.equals('foo'));
+    unittest.expect(o.objectId, unittest.equals('foo'));
+    checkTableBorderProperties(o.tableBorderProperties);
+    checkTableRange(o.tableRange);
+  }
+  buildCounterUpdateTableBorderPropertiesRequest--;
+}
+
 core.int buildCounterUpdateTableCellPropertiesRequest = 0;
 buildUpdateTableCellPropertiesRequest() {
   var o = new api.UpdateTableCellPropertiesRequest();
@@ -2857,6 +3174,83 @@
   buildCounterUpdateTableCellPropertiesRequest--;
 }
 
+buildUnnamed1799() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed1799(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+core.int buildCounterUpdateTableColumnPropertiesRequest = 0;
+buildUpdateTableColumnPropertiesRequest() {
+  var o = new api.UpdateTableColumnPropertiesRequest();
+  buildCounterUpdateTableColumnPropertiesRequest++;
+  if (buildCounterUpdateTableColumnPropertiesRequest < 3) {
+    o.columnIndices = buildUnnamed1799();
+    o.fields = "foo";
+    o.objectId = "foo";
+    o.tableColumnProperties = buildTableColumnProperties();
+  }
+  buildCounterUpdateTableColumnPropertiesRequest--;
+  return o;
+}
+
+checkUpdateTableColumnPropertiesRequest(
+    api.UpdateTableColumnPropertiesRequest o) {
+  buildCounterUpdateTableColumnPropertiesRequest++;
+  if (buildCounterUpdateTableColumnPropertiesRequest < 3) {
+    checkUnnamed1799(o.columnIndices);
+    unittest.expect(o.fields, unittest.equals('foo'));
+    unittest.expect(o.objectId, unittest.equals('foo'));
+    checkTableColumnProperties(o.tableColumnProperties);
+  }
+  buildCounterUpdateTableColumnPropertiesRequest--;
+}
+
+buildUnnamed1800() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed1800(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+core.int buildCounterUpdateTableRowPropertiesRequest = 0;
+buildUpdateTableRowPropertiesRequest() {
+  var o = new api.UpdateTableRowPropertiesRequest();
+  buildCounterUpdateTableRowPropertiesRequest++;
+  if (buildCounterUpdateTableRowPropertiesRequest < 3) {
+    o.fields = "foo";
+    o.objectId = "foo";
+    o.rowIndices = buildUnnamed1800();
+    o.tableRowProperties = buildTableRowProperties();
+  }
+  buildCounterUpdateTableRowPropertiesRequest--;
+  return o;
+}
+
+checkUpdateTableRowPropertiesRequest(api.UpdateTableRowPropertiesRequest o) {
+  buildCounterUpdateTableRowPropertiesRequest++;
+  if (buildCounterUpdateTableRowPropertiesRequest < 3) {
+    unittest.expect(o.fields, unittest.equals('foo'));
+    unittest.expect(o.objectId, unittest.equals('foo'));
+    checkUnnamed1800(o.rowIndices);
+    checkTableRowProperties(o.tableRowProperties);
+  }
+  buildCounterUpdateTableRowPropertiesRequest--;
+}
+
 core.int buildCounterUpdateTextStyleRequest = 0;
 buildUpdateTextStyleRequest() {
   var o = new api.UpdateTextStyleRequest();
@@ -3267,6 +3661,22 @@
     });
   });
 
+  unittest.group("obj-schema-GroupObjectsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGroupObjectsRequest();
+      var od = new api.GroupObjectsRequest.fromJson(o.toJson());
+      checkGroupObjectsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-GroupObjectsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGroupObjectsResponse();
+      var od = new api.GroupObjectsResponse.fromJson(o.toJson());
+      checkGroupObjectsResponse(od);
+    });
+  });
+
   unittest.group("obj-schema-Image", () {
     unittest.test("to-json--from-json", () {
       var o = buildImage();
@@ -3379,6 +3789,14 @@
     });
   });
 
+  unittest.group("obj-schema-MergeTableCellsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMergeTableCellsRequest();
+      var od = new api.MergeTableCellsRequest.fromJson(o.toJson());
+      checkMergeTableCellsRequest(od);
+    });
+  });
+
   unittest.group("obj-schema-NestingLevel", () {
     unittest.test("to-json--from-json", () {
       var o = buildNestingLevel();
@@ -3693,6 +4111,38 @@
     });
   });
 
+  unittest.group("obj-schema-TableBorderCell", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableBorderCell();
+      var od = new api.TableBorderCell.fromJson(o.toJson());
+      checkTableBorderCell(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableBorderFill", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableBorderFill();
+      var od = new api.TableBorderFill.fromJson(o.toJson());
+      checkTableBorderFill(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableBorderProperties", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableBorderProperties();
+      var od = new api.TableBorderProperties.fromJson(o.toJson());
+      checkTableBorderProperties(od);
+    });
+  });
+
+  unittest.group("obj-schema-TableBorderRow", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableBorderRow();
+      var od = new api.TableBorderRow.fromJson(o.toJson());
+      checkTableBorderRow(od);
+    });
+  });
+
   unittest.group("obj-schema-TableCell", () {
     unittest.test("to-json--from-json", () {
       var o = buildTableCell();
@@ -3749,6 +4199,14 @@
     });
   });
 
+  unittest.group("obj-schema-TableRowProperties", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTableRowProperties();
+      var od = new api.TableRowProperties.fromJson(o.toJson());
+      checkTableRowProperties(od);
+    });
+  });
+
   unittest.group("obj-schema-TextContent", () {
     unittest.test("to-json--from-json", () {
       var o = buildTextContent();
@@ -3797,6 +4255,22 @@
     });
   });
 
+  unittest.group("obj-schema-UngroupObjectsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUngroupObjectsRequest();
+      var od = new api.UngroupObjectsRequest.fromJson(o.toJson());
+      checkUngroupObjectsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UnmergeTableCellsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUnmergeTableCellsRequest();
+      var od = new api.UnmergeTableCellsRequest.fromJson(o.toJson());
+      checkUnmergeTableCellsRequest(od);
+    });
+  });
+
   unittest.group("obj-schema-UpdateImagePropertiesRequest", () {
     unittest.test("to-json--from-json", () {
       var o = buildUpdateImagePropertiesRequest();
@@ -3853,6 +4327,14 @@
     });
   });
 
+  unittest.group("obj-schema-UpdateTableBorderPropertiesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateTableBorderPropertiesRequest();
+      var od = new api.UpdateTableBorderPropertiesRequest.fromJson(o.toJson());
+      checkUpdateTableBorderPropertiesRequest(od);
+    });
+  });
+
   unittest.group("obj-schema-UpdateTableCellPropertiesRequest", () {
     unittest.test("to-json--from-json", () {
       var o = buildUpdateTableCellPropertiesRequest();
@@ -3861,6 +4343,22 @@
     });
   });
 
+  unittest.group("obj-schema-UpdateTableColumnPropertiesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateTableColumnPropertiesRequest();
+      var od = new api.UpdateTableColumnPropertiesRequest.fromJson(o.toJson());
+      checkUpdateTableColumnPropertiesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateTableRowPropertiesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateTableRowPropertiesRequest();
+      var od = new api.UpdateTableRowPropertiesRequest.fromJson(o.toJson());
+      checkUpdateTableRowPropertiesRequest(od);
+    });
+  });
+
   unittest.group("obj-schema-UpdateTextStyleRequest", () {
     unittest.test("to-json--from-json", () {
       var o = buildUpdateTextStyleRequest();
@@ -3923,6 +4421,7 @@
       api.PresentationsResourceApi res = new api.SlidesApi(mock).presentations;
       var arg_request = buildBatchUpdatePresentationRequest();
       var arg_presentationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BatchUpdatePresentationRequest.fromJson(json);
         checkBatchUpdatePresentationRequest(obj);
@@ -3965,6 +4464,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3972,8 +4472,10 @@
         var resp = convert.JSON.encode(buildBatchUpdatePresentationResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.batchUpdate(arg_request, arg_presentationId).then(unittest
-          .expectAsync1(((api.BatchUpdatePresentationResponse response) {
+      res
+          .batchUpdate(arg_request, arg_presentationId, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.BatchUpdatePresentationResponse response) {
         checkBatchUpdatePresentationResponse(response);
       })));
     });
@@ -3982,6 +4484,7 @@
       var mock = new HttpServerMock();
       api.PresentationsResourceApi res = new api.SlidesApi(mock).presentations;
       var arg_request = buildPresentation();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Presentation.fromJson(json);
         checkPresentation(obj);
@@ -4015,6 +4518,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4023,7 +4527,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request)
+          .create(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Presentation response) {
         checkPresentation(response);
       })));
@@ -4033,6 +4537,7 @@
       var mock = new HttpServerMock();
       api.PresentationsResourceApi res = new api.SlidesApi(mock).presentations;
       var arg_presentationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4064,6 +4569,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4072,7 +4578,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_presentationId)
+          .get(arg_presentationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Presentation response) {
         checkPresentation(response);
       })));
@@ -4086,6 +4592,7 @@
           new api.SlidesApi(mock).presentations.pages;
       var arg_presentationId = "foo";
       var arg_pageObjectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4128,6 +4635,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4136,7 +4644,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_presentationId, arg_pageObjectId)
+          .get(arg_presentationId, arg_pageObjectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Page response) {
         checkPage(response);
       })));
@@ -4150,6 +4658,7 @@
       var arg_pageObjectId = "foo";
       var arg_thumbnailProperties_thumbnailSize = "foo";
       var arg_thumbnailProperties_mimeType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4202,6 +4711,7 @@
             unittest.equals(arg_thumbnailProperties_thumbnailSize));
         unittest.expect(queryMap["thumbnailProperties.mimeType"].first,
             unittest.equals(arg_thumbnailProperties_mimeType));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4213,7 +4723,8 @@
           .getThumbnail(arg_presentationId, arg_pageObjectId,
               thumbnailProperties_thumbnailSize:
                   arg_thumbnailProperties_thumbnailSize,
-              thumbnailProperties_mimeType: arg_thumbnailProperties_mimeType)
+              thumbnailProperties_mimeType: arg_thumbnailProperties_mimeType,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Thumbnail response) {
         checkThumbnail(response);
       })));
diff --git a/generated/googleapis/test/sourcerepo/v1_test.dart b/generated/googleapis/test/sourcerepo/v1_test.dart
index 454c9f5..5d5428a 100644
--- a/generated/googleapis/test/sourcerepo/v1_test.dart
+++ b/generated/googleapis/test/sourcerepo/v1_test.dart
@@ -50,27 +50,27 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed540() {
+buildUnnamed524() {
   var o = new core.List<api.AuditLogConfig>();
   o.add(buildAuditLogConfig());
   o.add(buildAuditLogConfig());
   return o;
 }
 
-checkUnnamed540(core.List<api.AuditLogConfig> o) {
+checkUnnamed524(core.List<api.AuditLogConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditLogConfig(o[0]);
   checkAuditLogConfig(o[1]);
 }
 
-buildUnnamed541() {
+buildUnnamed525() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed541(core.List<core.String> o) {
+checkUnnamed525(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -81,8 +81,8 @@
   var o = new api.AuditConfig();
   buildCounterAuditConfig++;
   if (buildCounterAuditConfig < 3) {
-    o.auditLogConfigs = buildUnnamed540();
-    o.exemptedMembers = buildUnnamed541();
+    o.auditLogConfigs = buildUnnamed524();
+    o.exemptedMembers = buildUnnamed525();
     o.service = "foo";
   }
   buildCounterAuditConfig--;
@@ -92,21 +92,21 @@
 checkAuditConfig(api.AuditConfig o) {
   buildCounterAuditConfig++;
   if (buildCounterAuditConfig < 3) {
-    checkUnnamed540(o.auditLogConfigs);
-    checkUnnamed541(o.exemptedMembers);
+    checkUnnamed524(o.auditLogConfigs);
+    checkUnnamed525(o.exemptedMembers);
     unittest.expect(o.service, unittest.equals('foo'));
   }
   buildCounterAuditConfig--;
 }
 
-buildUnnamed542() {
+buildUnnamed526() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed542(core.List<core.String> o) {
+checkUnnamed526(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -117,7 +117,7 @@
   var o = new api.AuditLogConfig();
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    o.exemptedMembers = buildUnnamed542();
+    o.exemptedMembers = buildUnnamed526();
     o.logType = "foo";
   }
   buildCounterAuditLogConfig--;
@@ -127,20 +127,20 @@
 checkAuditLogConfig(api.AuditLogConfig o) {
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    checkUnnamed542(o.exemptedMembers);
+    checkUnnamed526(o.exemptedMembers);
     unittest.expect(o.logType, unittest.equals('foo'));
   }
   buildCounterAuditLogConfig--;
 }
 
-buildUnnamed543() {
+buildUnnamed527() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed543(core.List<core.String> o) {
+checkUnnamed527(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -152,7 +152,7 @@
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
     o.condition = buildExpr();
-    o.members = buildUnnamed543();
+    o.members = buildUnnamed527();
     o.role = "foo";
   }
   buildCounterBinding--;
@@ -163,7 +163,7 @@
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
     checkExpr(o.condition);
-    checkUnnamed543(o.members);
+    checkUnnamed527(o.members);
     unittest.expect(o.role, unittest.equals('foo'));
   }
   buildCounterBinding--;
@@ -209,14 +209,14 @@
   buildCounterExpr--;
 }
 
-buildUnnamed544() {
+buildUnnamed528() {
   var o = new core.List<api.Repo>();
   o.add(buildRepo());
   o.add(buildRepo());
   return o;
 }
 
-checkUnnamed544(core.List<api.Repo> o) {
+checkUnnamed528(core.List<api.Repo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRepo(o[0]);
   checkRepo(o[1]);
@@ -228,7 +228,7 @@
   buildCounterListReposResponse++;
   if (buildCounterListReposResponse < 3) {
     o.nextPageToken = "foo";
-    o.repos = buildUnnamed544();
+    o.repos = buildUnnamed528();
   }
   buildCounterListReposResponse--;
   return o;
@@ -238,7 +238,7 @@
   buildCounterListReposResponse++;
   if (buildCounterListReposResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed544(o.repos);
+    checkUnnamed528(o.repos);
   }
   buildCounterListReposResponse--;
 }
@@ -266,27 +266,27 @@
   buildCounterMirrorConfig--;
 }
 
-buildUnnamed545() {
+buildUnnamed529() {
   var o = new core.List<api.AuditConfig>();
   o.add(buildAuditConfig());
   o.add(buildAuditConfig());
   return o;
 }
 
-checkUnnamed545(core.List<api.AuditConfig> o) {
+checkUnnamed529(core.List<api.AuditConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditConfig(o[0]);
   checkAuditConfig(o[1]);
 }
 
-buildUnnamed546() {
+buildUnnamed530() {
   var o = new core.List<api.Binding>();
   o.add(buildBinding());
   o.add(buildBinding());
   return o;
 }
 
-checkUnnamed546(core.List<api.Binding> o) {
+checkUnnamed530(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -297,8 +297,8 @@
   var o = new api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.auditConfigs = buildUnnamed545();
-    o.bindings = buildUnnamed546();
+    o.auditConfigs = buildUnnamed529();
+    o.bindings = buildUnnamed530();
     o.etag = "foo";
     o.iamOwned = true;
     o.version = 42;
@@ -310,8 +310,8 @@
 checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed545(o.auditConfigs);
-    checkUnnamed546(o.bindings);
+    checkUnnamed529(o.auditConfigs);
+    checkUnnamed530(o.bindings);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.iamOwned, unittest.isTrue);
     unittest.expect(o.version, unittest.equals(42));
@@ -365,14 +365,14 @@
   buildCounterSetIamPolicyRequest--;
 }
 
-buildUnnamed547() {
+buildUnnamed531() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed547(core.List<core.String> o) {
+checkUnnamed531(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -383,7 +383,7 @@
   var o = new api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed547();
+    o.permissions = buildUnnamed531();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -392,19 +392,19 @@
 checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed547(o.permissions);
+    checkUnnamed531(o.permissions);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-buildUnnamed548() {
+buildUnnamed532() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed548(core.List<core.String> o) {
+checkUnnamed532(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -415,7 +415,7 @@
   var o = new api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed548();
+    o.permissions = buildUnnamed532();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -424,7 +424,7 @@
 checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed548(o.permissions);
+    checkUnnamed532(o.permissions);
   }
   buildCounterTestIamPermissionsResponse--;
 }
@@ -533,6 +533,7 @@
           new api.SourcerepoApi(mock).projects.repos;
       var arg_request = buildRepo();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Repo.fromJson(json);
         checkRepo(obj);
@@ -567,6 +568,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -575,7 +577,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent)
+          .create(arg_request, arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Repo response) {
         checkRepo(response);
       })));
@@ -586,6 +588,7 @@
       api.ProjectsReposResourceApi res =
           new api.SourcerepoApi(mock).projects.repos;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -617,6 +620,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -624,7 +628,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -634,6 +640,7 @@
       api.ProjectsReposResourceApi res =
           new api.SourcerepoApi(mock).projects.repos;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -665,6 +672,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -672,7 +680,9 @@
         var resp = convert.JSON.encode(buildRepo());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Repo response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Repo response) {
         checkRepo(response);
       })));
     });
@@ -682,6 +692,7 @@
       api.ProjectsReposResourceApi res =
           new api.SourcerepoApi(mock).projects.repos;
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -713,6 +724,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -721,7 +733,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_resource)
+          .getIamPolicy(arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -734,6 +746,7 @@
       var arg_name = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -769,6 +782,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -777,7 +791,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_name, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_name,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListReposResponse response) {
         checkListReposResponse(response);
       })));
@@ -789,6 +806,7 @@
           new api.SourcerepoApi(mock).projects.repos;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -823,6 +841,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -831,7 +850,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -843,6 +862,7 @@
           new api.SourcerepoApi(mock).projects.repos;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -877,6 +897,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -884,8 +905,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
diff --git a/generated/googleapis/test/spanner/v1_test.dart b/generated/googleapis/test/spanner/v1_test.dart
index 47e8875..11e9087 100644
--- a/generated/googleapis/test/spanner/v1_test.dart
+++ b/generated/googleapis/test/spanner/v1_test.dart
@@ -69,14 +69,14 @@
   buildCounterBeginTransactionRequest--;
 }
 
-buildUnnamed2160() {
+buildUnnamed2158() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2160(core.List<core.String> o) {
+checkUnnamed2158(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -87,7 +87,7 @@
   var o = new api.Binding();
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    o.members = buildUnnamed2160();
+    o.members = buildUnnamed2158();
     o.role = "foo";
   }
   buildCounterBinding--;
@@ -97,7 +97,7 @@
 checkBinding(api.Binding o) {
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    checkUnnamed2160(o.members);
+    checkUnnamed2158(o.members);
     unittest.expect(o.role, unittest.equals('foo'));
   }
   buildCounterBinding--;
@@ -126,14 +126,14 @@
   buildCounterChildLink--;
 }
 
-buildUnnamed2161() {
+buildUnnamed2159() {
   var o = new core.List<api.Mutation>();
   o.add(buildMutation());
   o.add(buildMutation());
   return o;
 }
 
-checkUnnamed2161(core.List<api.Mutation> o) {
+checkUnnamed2159(core.List<api.Mutation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMutation(o[0]);
   checkMutation(o[1]);
@@ -144,7 +144,7 @@
   var o = new api.CommitRequest();
   buildCounterCommitRequest++;
   if (buildCounterCommitRequest < 3) {
-    o.mutations = buildUnnamed2161();
+    o.mutations = buildUnnamed2159();
     o.singleUseTransaction = buildTransactionOptions();
     o.transactionId = "foo";
   }
@@ -155,7 +155,7 @@
 checkCommitRequest(api.CommitRequest o) {
   buildCounterCommitRequest++;
   if (buildCounterCommitRequest < 3) {
-    checkUnnamed2161(o.mutations);
+    checkUnnamed2159(o.mutations);
     checkTransactionOptions(o.singleUseTransaction);
     unittest.expect(o.transactionId, unittest.equals('foo'));
   }
@@ -200,14 +200,14 @@
   buildCounterCreateDatabaseMetadata--;
 }
 
-buildUnnamed2162() {
+buildUnnamed2160() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2162(core.List<core.String> o) {
+checkUnnamed2160(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -219,7 +219,7 @@
   buildCounterCreateDatabaseRequest++;
   if (buildCounterCreateDatabaseRequest < 3) {
     o.createStatement = "foo";
-    o.extraStatements = buildUnnamed2162();
+    o.extraStatements = buildUnnamed2160();
   }
   buildCounterCreateDatabaseRequest--;
   return o;
@@ -229,7 +229,7 @@
   buildCounterCreateDatabaseRequest++;
   if (buildCounterCreateDatabaseRequest < 3) {
     unittest.expect(o.createStatement, unittest.equals('foo'));
-    checkUnnamed2162(o.extraStatements);
+    checkUnnamed2160(o.extraStatements);
   }
   buildCounterCreateDatabaseRequest--;
 }
@@ -356,20 +356,20 @@
   buildCounterEmpty--;
 }
 
-buildUnnamed2163() {
+buildUnnamed2161() {
   var o = new core.Map<core.String, api.Type>();
   o["x"] = buildType();
   o["y"] = buildType();
   return o;
 }
 
-checkUnnamed2163(core.Map<core.String, api.Type> o) {
+checkUnnamed2161(core.Map<core.String, api.Type> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkType(o["x"]);
   checkType(o["y"]);
 }
 
-buildUnnamed2164() {
+buildUnnamed2162() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -384,7 +384,7 @@
   return o;
 }
 
-checkUnnamed2164(core.Map<core.String, core.Object> o) {
+checkUnnamed2162(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -403,8 +403,8 @@
   var o = new api.ExecuteSqlRequest();
   buildCounterExecuteSqlRequest++;
   if (buildCounterExecuteSqlRequest < 3) {
-    o.paramTypes = buildUnnamed2163();
-    o.params = buildUnnamed2164();
+    o.paramTypes = buildUnnamed2161();
+    o.params = buildUnnamed2162();
     o.queryMode = "foo";
     o.resumeToken = "foo";
     o.sql = "foo";
@@ -417,8 +417,8 @@
 checkExecuteSqlRequest(api.ExecuteSqlRequest o) {
   buildCounterExecuteSqlRequest++;
   if (buildCounterExecuteSqlRequest < 3) {
-    checkUnnamed2163(o.paramTypes);
-    checkUnnamed2164(o.params);
+    checkUnnamed2161(o.paramTypes);
+    checkUnnamed2162(o.params);
     unittest.expect(o.queryMode, unittest.equals('foo'));
     unittest.expect(o.resumeToken, unittest.equals('foo'));
     unittest.expect(o.sql, unittest.equals('foo'));
@@ -448,14 +448,14 @@
   buildCounterField--;
 }
 
-buildUnnamed2165() {
+buildUnnamed2163() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2165(core.List<core.String> o) {
+checkUnnamed2163(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -466,7 +466,7 @@
   var o = new api.GetDatabaseDdlResponse();
   buildCounterGetDatabaseDdlResponse++;
   if (buildCounterGetDatabaseDdlResponse < 3) {
-    o.statements = buildUnnamed2165();
+    o.statements = buildUnnamed2163();
   }
   buildCounterGetDatabaseDdlResponse--;
   return o;
@@ -475,7 +475,7 @@
 checkGetDatabaseDdlResponse(api.GetDatabaseDdlResponse o) {
   buildCounterGetDatabaseDdlResponse++;
   if (buildCounterGetDatabaseDdlResponse < 3) {
-    checkUnnamed2165(o.statements);
+    checkUnnamed2163(o.statements);
   }
   buildCounterGetDatabaseDdlResponse--;
 }
@@ -495,14 +495,14 @@
   buildCounterGetIamPolicyRequest--;
 }
 
-buildUnnamed2166() {
+buildUnnamed2164() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed2166(core.Map<core.String, core.String> o) {
+checkUnnamed2164(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -515,7 +515,7 @@
   if (buildCounterInstance < 3) {
     o.config = "foo";
     o.displayName = "foo";
-    o.labels = buildUnnamed2166();
+    o.labels = buildUnnamed2164();
     o.name = "foo";
     o.nodeCount = 42;
     o.state = "foo";
@@ -529,7 +529,7 @@
   if (buildCounterInstance < 3) {
     unittest.expect(o.config, unittest.equals('foo'));
     unittest.expect(o.displayName, unittest.equals('foo'));
-    checkUnnamed2166(o.labels);
+    checkUnnamed2164(o.labels);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.nodeCount, unittest.equals(42));
     unittest.expect(o.state, unittest.equals('foo'));
@@ -558,6 +558,64 @@
   buildCounterInstanceConfig--;
 }
 
+buildUnnamed2165() {
+  var o = new core.List<core.Object>();
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  return o;
+}
+
+checkUnnamed2165(core.List<core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted3 = (o[0]) as core.Map;
+  unittest.expect(casted3, unittest.hasLength(3));
+  unittest.expect(casted3["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted3["bool"], unittest.equals(true));
+  unittest.expect(casted3["string"], unittest.equals('foo'));
+  var casted4 = (o[1]) as core.Map;
+  unittest.expect(casted4, unittest.hasLength(3));
+  unittest.expect(casted4["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted4["bool"], unittest.equals(true));
+  unittest.expect(casted4["string"], unittest.equals('foo'));
+}
+
+buildUnnamed2166() {
+  var o = new core.List<core.Object>();
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  o.add({
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  });
+  return o;
+}
+
+checkUnnamed2166(core.List<core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted5 = (o[0]) as core.Map;
+  unittest.expect(casted5, unittest.hasLength(3));
+  unittest.expect(casted5["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted5["bool"], unittest.equals(true));
+  unittest.expect(casted5["string"], unittest.equals('foo'));
+  var casted6 = (o[1]) as core.Map;
+  unittest.expect(casted6, unittest.hasLength(3));
+  unittest.expect(casted6["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted6["bool"], unittest.equals(true));
+  unittest.expect(casted6["string"], unittest.equals('foo'));
+}
+
 buildUnnamed2167() {
   var o = new core.List<core.Object>();
   o.add({
@@ -575,16 +633,16 @@
 
 checkUnnamed2167(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
-  var casted3 = (o[0]) as core.Map;
-  unittest.expect(casted3, unittest.hasLength(3));
-  unittest.expect(casted3["list"], unittest.equals([1, 2, 3]));
-  unittest.expect(casted3["bool"], unittest.equals(true));
-  unittest.expect(casted3["string"], unittest.equals('foo'));
-  var casted4 = (o[1]) as core.Map;
-  unittest.expect(casted4, unittest.hasLength(3));
-  unittest.expect(casted4["list"], unittest.equals([1, 2, 3]));
-  unittest.expect(casted4["bool"], unittest.equals(true));
-  unittest.expect(casted4["string"], unittest.equals('foo'));
+  var casted7 = (o[0]) as core.Map;
+  unittest.expect(casted7, unittest.hasLength(3));
+  unittest.expect(casted7["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted7["bool"], unittest.equals(true));
+  unittest.expect(casted7["string"], unittest.equals('foo'));
+  var casted8 = (o[1]) as core.Map;
+  unittest.expect(casted8, unittest.hasLength(3));
+  unittest.expect(casted8["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted8["bool"], unittest.equals(true));
+  unittest.expect(casted8["string"], unittest.equals('foo'));
 }
 
 buildUnnamed2168() {
@@ -604,16 +662,41 @@
 
 checkUnnamed2168(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
-  var casted5 = (o[0]) as core.Map;
-  unittest.expect(casted5, unittest.hasLength(3));
-  unittest.expect(casted5["list"], unittest.equals([1, 2, 3]));
-  unittest.expect(casted5["bool"], unittest.equals(true));
-  unittest.expect(casted5["string"], unittest.equals('foo'));
-  var casted6 = (o[1]) as core.Map;
-  unittest.expect(casted6, unittest.hasLength(3));
-  unittest.expect(casted6["list"], unittest.equals([1, 2, 3]));
-  unittest.expect(casted6["bool"], unittest.equals(true));
-  unittest.expect(casted6["string"], unittest.equals('foo'));
+  var casted9 = (o[0]) as core.Map;
+  unittest.expect(casted9, unittest.hasLength(3));
+  unittest.expect(casted9["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted9["bool"], unittest.equals(true));
+  unittest.expect(casted9["string"], unittest.equals('foo'));
+  var casted10 = (o[1]) as core.Map;
+  unittest.expect(casted10, unittest.hasLength(3));
+  unittest.expect(casted10["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted10["bool"], unittest.equals(true));
+  unittest.expect(casted10["string"], unittest.equals('foo'));
+}
+
+core.int buildCounterKeyRange = 0;
+buildKeyRange() {
+  var o = new api.KeyRange();
+  buildCounterKeyRange++;
+  if (buildCounterKeyRange < 3) {
+    o.endClosed = buildUnnamed2165();
+    o.endOpen = buildUnnamed2166();
+    o.startClosed = buildUnnamed2167();
+    o.startOpen = buildUnnamed2168();
+  }
+  buildCounterKeyRange--;
+  return o;
+}
+
+checkKeyRange(api.KeyRange o) {
+  buildCounterKeyRange++;
+  if (buildCounterKeyRange < 3) {
+    checkUnnamed2165(o.endClosed);
+    checkUnnamed2166(o.endOpen);
+    checkUnnamed2167(o.startClosed);
+    checkUnnamed2168(o.startOpen);
+  }
+  buildCounterKeyRange--;
 }
 
 buildUnnamed2169() {
@@ -633,89 +716,6 @@
 
 checkUnnamed2169(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
-  var casted7 = (o[0]) as core.Map;
-  unittest.expect(casted7, unittest.hasLength(3));
-  unittest.expect(casted7["list"], unittest.equals([1, 2, 3]));
-  unittest.expect(casted7["bool"], unittest.equals(true));
-  unittest.expect(casted7["string"], unittest.equals('foo'));
-  var casted8 = (o[1]) as core.Map;
-  unittest.expect(casted8, unittest.hasLength(3));
-  unittest.expect(casted8["list"], unittest.equals([1, 2, 3]));
-  unittest.expect(casted8["bool"], unittest.equals(true));
-  unittest.expect(casted8["string"], unittest.equals('foo'));
-}
-
-buildUnnamed2170() {
-  var o = new core.List<core.Object>();
-  o.add({
-    'list': [1, 2, 3],
-    'bool': true,
-    'string': 'foo'
-  });
-  o.add({
-    'list': [1, 2, 3],
-    'bool': true,
-    'string': 'foo'
-  });
-  return o;
-}
-
-checkUnnamed2170(core.List<core.Object> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  var casted9 = (o[0]) as core.Map;
-  unittest.expect(casted9, unittest.hasLength(3));
-  unittest.expect(casted9["list"], unittest.equals([1, 2, 3]));
-  unittest.expect(casted9["bool"], unittest.equals(true));
-  unittest.expect(casted9["string"], unittest.equals('foo'));
-  var casted10 = (o[1]) as core.Map;
-  unittest.expect(casted10, unittest.hasLength(3));
-  unittest.expect(casted10["list"], unittest.equals([1, 2, 3]));
-  unittest.expect(casted10["bool"], unittest.equals(true));
-  unittest.expect(casted10["string"], unittest.equals('foo'));
-}
-
-core.int buildCounterKeyRange = 0;
-buildKeyRange() {
-  var o = new api.KeyRange();
-  buildCounterKeyRange++;
-  if (buildCounterKeyRange < 3) {
-    o.endClosed = buildUnnamed2167();
-    o.endOpen = buildUnnamed2168();
-    o.startClosed = buildUnnamed2169();
-    o.startOpen = buildUnnamed2170();
-  }
-  buildCounterKeyRange--;
-  return o;
-}
-
-checkKeyRange(api.KeyRange o) {
-  buildCounterKeyRange++;
-  if (buildCounterKeyRange < 3) {
-    checkUnnamed2167(o.endClosed);
-    checkUnnamed2168(o.endOpen);
-    checkUnnamed2169(o.startClosed);
-    checkUnnamed2170(o.startOpen);
-  }
-  buildCounterKeyRange--;
-}
-
-buildUnnamed2171() {
-  var o = new core.List<core.Object>();
-  o.add({
-    'list': [1, 2, 3],
-    'bool': true,
-    'string': 'foo'
-  });
-  o.add({
-    'list': [1, 2, 3],
-    'bool': true,
-    'string': 'foo'
-  });
-  return o;
-}
-
-checkUnnamed2171(core.List<core.Object> o) {
-  unittest.expect(o, unittest.hasLength(2));
   var casted11 = (o[0]) as core.Map;
   unittest.expect(casted11, unittest.hasLength(3));
   unittest.expect(casted11["list"], unittest.equals([1, 2, 3]));
@@ -728,27 +728,27 @@
   unittest.expect(casted12["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2172() {
+buildUnnamed2170() {
   var o = new core.List<core.List<core.Object>>();
-  o.add(buildUnnamed2171());
-  o.add(buildUnnamed2171());
+  o.add(buildUnnamed2169());
+  o.add(buildUnnamed2169());
   return o;
 }
 
-checkUnnamed2172(core.List<core.List<core.Object>> o) {
+checkUnnamed2170(core.List<core.List<core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2171(o[0]);
-  checkUnnamed2171(o[1]);
+  checkUnnamed2169(o[0]);
+  checkUnnamed2169(o[1]);
 }
 
-buildUnnamed2173() {
+buildUnnamed2171() {
   var o = new core.List<api.KeyRange>();
   o.add(buildKeyRange());
   o.add(buildKeyRange());
   return o;
 }
 
-checkUnnamed2173(core.List<api.KeyRange> o) {
+checkUnnamed2171(core.List<api.KeyRange> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkKeyRange(o[0]);
   checkKeyRange(o[1]);
@@ -760,8 +760,8 @@
   buildCounterKeySet++;
   if (buildCounterKeySet < 3) {
     o.all = true;
-    o.keys = buildUnnamed2172();
-    o.ranges = buildUnnamed2173();
+    o.keys = buildUnnamed2170();
+    o.ranges = buildUnnamed2171();
   }
   buildCounterKeySet--;
   return o;
@@ -771,20 +771,20 @@
   buildCounterKeySet++;
   if (buildCounterKeySet < 3) {
     unittest.expect(o.all, unittest.isTrue);
-    checkUnnamed2172(o.keys);
-    checkUnnamed2173(o.ranges);
+    checkUnnamed2170(o.keys);
+    checkUnnamed2171(o.ranges);
   }
   buildCounterKeySet--;
 }
 
-buildUnnamed2174() {
+buildUnnamed2172() {
   var o = new core.List<api.Database>();
   o.add(buildDatabase());
   o.add(buildDatabase());
   return o;
 }
 
-checkUnnamed2174(core.List<api.Database> o) {
+checkUnnamed2172(core.List<api.Database> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDatabase(o[0]);
   checkDatabase(o[1]);
@@ -795,7 +795,7 @@
   var o = new api.ListDatabasesResponse();
   buildCounterListDatabasesResponse++;
   if (buildCounterListDatabasesResponse < 3) {
-    o.databases = buildUnnamed2174();
+    o.databases = buildUnnamed2172();
     o.nextPageToken = "foo";
   }
   buildCounterListDatabasesResponse--;
@@ -805,20 +805,20 @@
 checkListDatabasesResponse(api.ListDatabasesResponse o) {
   buildCounterListDatabasesResponse++;
   if (buildCounterListDatabasesResponse < 3) {
-    checkUnnamed2174(o.databases);
+    checkUnnamed2172(o.databases);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListDatabasesResponse--;
 }
 
-buildUnnamed2175() {
+buildUnnamed2173() {
   var o = new core.List<api.InstanceConfig>();
   o.add(buildInstanceConfig());
   o.add(buildInstanceConfig());
   return o;
 }
 
-checkUnnamed2175(core.List<api.InstanceConfig> o) {
+checkUnnamed2173(core.List<api.InstanceConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstanceConfig(o[0]);
   checkInstanceConfig(o[1]);
@@ -829,7 +829,7 @@
   var o = new api.ListInstanceConfigsResponse();
   buildCounterListInstanceConfigsResponse++;
   if (buildCounterListInstanceConfigsResponse < 3) {
-    o.instanceConfigs = buildUnnamed2175();
+    o.instanceConfigs = buildUnnamed2173();
     o.nextPageToken = "foo";
   }
   buildCounterListInstanceConfigsResponse--;
@@ -839,20 +839,20 @@
 checkListInstanceConfigsResponse(api.ListInstanceConfigsResponse o) {
   buildCounterListInstanceConfigsResponse++;
   if (buildCounterListInstanceConfigsResponse < 3) {
-    checkUnnamed2175(o.instanceConfigs);
+    checkUnnamed2173(o.instanceConfigs);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListInstanceConfigsResponse--;
 }
 
-buildUnnamed2176() {
+buildUnnamed2174() {
   var o = new core.List<api.Instance>();
   o.add(buildInstance());
   o.add(buildInstance());
   return o;
 }
 
-checkUnnamed2176(core.List<api.Instance> o) {
+checkUnnamed2174(core.List<api.Instance> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstance(o[0]);
   checkInstance(o[1]);
@@ -863,7 +863,7 @@
   var o = new api.ListInstancesResponse();
   buildCounterListInstancesResponse++;
   if (buildCounterListInstancesResponse < 3) {
-    o.instances = buildUnnamed2176();
+    o.instances = buildUnnamed2174();
     o.nextPageToken = "foo";
   }
   buildCounterListInstancesResponse--;
@@ -873,20 +873,20 @@
 checkListInstancesResponse(api.ListInstancesResponse o) {
   buildCounterListInstancesResponse++;
   if (buildCounterListInstancesResponse < 3) {
-    checkUnnamed2176(o.instances);
+    checkUnnamed2174(o.instances);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListInstancesResponse--;
 }
 
-buildUnnamed2177() {
+buildUnnamed2175() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed2177(core.List<api.Operation> o) {
+checkUnnamed2175(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -898,7 +898,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed2177();
+    o.operations = buildUnnamed2175();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -908,19 +908,19 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2177(o.operations);
+    checkUnnamed2175(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
 
-buildUnnamed2178() {
+buildUnnamed2176() {
   var o = new core.List<api.Session>();
   o.add(buildSession());
   o.add(buildSession());
   return o;
 }
 
-checkUnnamed2178(core.List<api.Session> o) {
+checkUnnamed2176(core.List<api.Session> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSession(o[0]);
   checkSession(o[1]);
@@ -932,7 +932,7 @@
   buildCounterListSessionsResponse++;
   if (buildCounterListSessionsResponse < 3) {
     o.nextPageToken = "foo";
-    o.sessions = buildUnnamed2178();
+    o.sessions = buildUnnamed2176();
   }
   buildCounterListSessionsResponse--;
   return o;
@@ -942,7 +942,7 @@
   buildCounterListSessionsResponse++;
   if (buildCounterListSessionsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2178(o.sessions);
+    checkUnnamed2176(o.sessions);
   }
   buildCounterListSessionsResponse--;
 }
@@ -974,7 +974,7 @@
   buildCounterMutation--;
 }
 
-buildUnnamed2179() {
+buildUnnamed2177() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -989,7 +989,7 @@
   return o;
 }
 
-checkUnnamed2179(core.Map<core.String, core.Object> o) {
+checkUnnamed2177(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted13 = (o["x"]) as core.Map;
   unittest.expect(casted13, unittest.hasLength(3));
@@ -1003,7 +1003,7 @@
   unittest.expect(casted14["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2180() {
+buildUnnamed2178() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1018,7 +1018,7 @@
   return o;
 }
 
-checkUnnamed2180(core.Map<core.String, core.Object> o) {
+checkUnnamed2178(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted15 = (o["x"]) as core.Map;
   unittest.expect(casted15, unittest.hasLength(3));
@@ -1039,9 +1039,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed2179();
+    o.metadata = buildUnnamed2177();
     o.name = "foo";
-    o.response = buildUnnamed2180();
+    o.response = buildUnnamed2178();
   }
   buildCounterOperation--;
   return o;
@@ -1052,14 +1052,14 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed2179(o.metadata);
+    checkUnnamed2177(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2180(o.response);
+    checkUnnamed2178(o.response);
   }
   buildCounterOperation--;
 }
 
-buildUnnamed2181() {
+buildUnnamed2179() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -1074,7 +1074,7 @@
   return o;
 }
 
-checkUnnamed2181(core.List<core.Object> o) {
+checkUnnamed2179(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted17 = (o[0]) as core.Map;
   unittest.expect(casted17, unittest.hasLength(3));
@@ -1097,7 +1097,7 @@
     o.metadata = buildResultSetMetadata();
     o.resumeToken = "foo";
     o.stats = buildResultSetStats();
-    o.values = buildUnnamed2181();
+    o.values = buildUnnamed2179();
   }
   buildCounterPartialResultSet--;
   return o;
@@ -1110,25 +1110,25 @@
     checkResultSetMetadata(o.metadata);
     unittest.expect(o.resumeToken, unittest.equals('foo'));
     checkResultSetStats(o.stats);
-    checkUnnamed2181(o.values);
+    checkUnnamed2179(o.values);
   }
   buildCounterPartialResultSet--;
 }
 
-buildUnnamed2182() {
+buildUnnamed2180() {
   var o = new core.List<api.ChildLink>();
   o.add(buildChildLink());
   o.add(buildChildLink());
   return o;
 }
 
-checkUnnamed2182(core.List<api.ChildLink> o) {
+checkUnnamed2180(core.List<api.ChildLink> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkChildLink(o[0]);
   checkChildLink(o[1]);
 }
 
-buildUnnamed2183() {
+buildUnnamed2181() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1143,7 +1143,7 @@
   return o;
 }
 
-checkUnnamed2183(core.Map<core.String, core.Object> o) {
+checkUnnamed2181(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted19 = (o["x"]) as core.Map;
   unittest.expect(casted19, unittest.hasLength(3));
@@ -1157,7 +1157,7 @@
   unittest.expect(casted20["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2184() {
+buildUnnamed2182() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1172,7 +1172,7 @@
   return o;
 }
 
-checkUnnamed2184(core.Map<core.String, core.Object> o) {
+checkUnnamed2182(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted21 = (o["x"]) as core.Map;
   unittest.expect(casted21, unittest.hasLength(3));
@@ -1191,12 +1191,12 @@
   var o = new api.PlanNode();
   buildCounterPlanNode++;
   if (buildCounterPlanNode < 3) {
-    o.childLinks = buildUnnamed2182();
+    o.childLinks = buildUnnamed2180();
     o.displayName = "foo";
-    o.executionStats = buildUnnamed2183();
+    o.executionStats = buildUnnamed2181();
     o.index = 42;
     o.kind = "foo";
-    o.metadata = buildUnnamed2184();
+    o.metadata = buildUnnamed2182();
     o.shortRepresentation = buildShortRepresentation();
   }
   buildCounterPlanNode--;
@@ -1206,25 +1206,25 @@
 checkPlanNode(api.PlanNode o) {
   buildCounterPlanNode++;
   if (buildCounterPlanNode < 3) {
-    checkUnnamed2182(o.childLinks);
+    checkUnnamed2180(o.childLinks);
     unittest.expect(o.displayName, unittest.equals('foo'));
-    checkUnnamed2183(o.executionStats);
+    checkUnnamed2181(o.executionStats);
     unittest.expect(o.index, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2184(o.metadata);
+    checkUnnamed2182(o.metadata);
     checkShortRepresentation(o.shortRepresentation);
   }
   buildCounterPlanNode--;
 }
 
-buildUnnamed2185() {
+buildUnnamed2183() {
   var o = new core.List<api.Binding>();
   o.add(buildBinding());
   o.add(buildBinding());
   return o;
 }
 
-checkUnnamed2185(core.List<api.Binding> o) {
+checkUnnamed2183(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -1235,7 +1235,7 @@
   var o = new api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.bindings = buildUnnamed2185();
+    o.bindings = buildUnnamed2183();
     o.etag = "foo";
     o.version = 42;
   }
@@ -1246,21 +1246,21 @@
 checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed2185(o.bindings);
+    checkUnnamed2183(o.bindings);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.version, unittest.equals(42));
   }
   buildCounterPolicy--;
 }
 
-buildUnnamed2186() {
+buildUnnamed2184() {
   var o = new core.List<api.PlanNode>();
   o.add(buildPlanNode());
   o.add(buildPlanNode());
   return o;
 }
 
-checkUnnamed2186(core.List<api.PlanNode> o) {
+checkUnnamed2184(core.List<api.PlanNode> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPlanNode(o[0]);
   checkPlanNode(o[1]);
@@ -1271,7 +1271,7 @@
   var o = new api.QueryPlan();
   buildCounterQueryPlan++;
   if (buildCounterQueryPlan < 3) {
-    o.planNodes = buildUnnamed2186();
+    o.planNodes = buildUnnamed2184();
   }
   buildCounterQueryPlan--;
   return o;
@@ -1280,7 +1280,7 @@
 checkQueryPlan(api.QueryPlan o) {
   buildCounterQueryPlan++;
   if (buildCounterQueryPlan < 3) {
-    checkUnnamed2186(o.planNodes);
+    checkUnnamed2184(o.planNodes);
   }
   buildCounterQueryPlan--;
 }
@@ -1314,14 +1314,14 @@
   buildCounterReadOnly--;
 }
 
-buildUnnamed2187() {
+buildUnnamed2185() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2187(core.List<core.String> o) {
+checkUnnamed2185(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1332,7 +1332,7 @@
   var o = new api.ReadRequest();
   buildCounterReadRequest++;
   if (buildCounterReadRequest < 3) {
-    o.columns = buildUnnamed2187();
+    o.columns = buildUnnamed2185();
     o.index = "foo";
     o.keySet = buildKeySet();
     o.limit = "foo";
@@ -1347,7 +1347,7 @@
 checkReadRequest(api.ReadRequest o) {
   buildCounterReadRequest++;
   if (buildCounterReadRequest < 3) {
-    checkUnnamed2187(o.columns);
+    checkUnnamed2185(o.columns);
     unittest.expect(o.index, unittest.equals('foo'));
     checkKeySet(o.keySet);
     unittest.expect(o.limit, unittest.equals('foo'));
@@ -1373,7 +1373,7 @@
   buildCounterReadWrite--;
 }
 
-buildUnnamed2188() {
+buildUnnamed2186() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -1388,7 +1388,7 @@
   return o;
 }
 
-checkUnnamed2188(core.List<core.Object> o) {
+checkUnnamed2186(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted23 = (o[0]) as core.Map;
   unittest.expect(casted23, unittest.hasLength(3));
@@ -1402,17 +1402,17 @@
   unittest.expect(casted24["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2189() {
+buildUnnamed2187() {
   var o = new core.List<core.List<core.Object>>();
-  o.add(buildUnnamed2188());
-  o.add(buildUnnamed2188());
+  o.add(buildUnnamed2186());
+  o.add(buildUnnamed2186());
   return o;
 }
 
-checkUnnamed2189(core.List<core.List<core.Object>> o) {
+checkUnnamed2187(core.List<core.List<core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2188(o[0]);
-  checkUnnamed2188(o[1]);
+  checkUnnamed2186(o[0]);
+  checkUnnamed2186(o[1]);
 }
 
 core.int buildCounterResultSet = 0;
@@ -1421,7 +1421,7 @@
   buildCounterResultSet++;
   if (buildCounterResultSet < 3) {
     o.metadata = buildResultSetMetadata();
-    o.rows = buildUnnamed2189();
+    o.rows = buildUnnamed2187();
     o.stats = buildResultSetStats();
   }
   buildCounterResultSet--;
@@ -1432,7 +1432,7 @@
   buildCounterResultSet++;
   if (buildCounterResultSet < 3) {
     checkResultSetMetadata(o.metadata);
-    checkUnnamed2189(o.rows);
+    checkUnnamed2187(o.rows);
     checkResultSetStats(o.stats);
   }
   buildCounterResultSet--;
@@ -1459,7 +1459,7 @@
   buildCounterResultSetMetadata--;
 }
 
-buildUnnamed2190() {
+buildUnnamed2188() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1474,7 +1474,7 @@
   return o;
 }
 
-checkUnnamed2190(core.Map<core.String, core.Object> o) {
+checkUnnamed2188(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted25 = (o["x"]) as core.Map;
   unittest.expect(casted25, unittest.hasLength(3));
@@ -1494,7 +1494,7 @@
   buildCounterResultSetStats++;
   if (buildCounterResultSetStats < 3) {
     o.queryPlan = buildQueryPlan();
-    o.queryStats = buildUnnamed2190();
+    o.queryStats = buildUnnamed2188();
   }
   buildCounterResultSetStats--;
   return o;
@@ -1504,7 +1504,7 @@
   buildCounterResultSetStats++;
   if (buildCounterResultSetStats < 3) {
     checkQueryPlan(o.queryPlan);
-    checkUnnamed2190(o.queryStats);
+    checkUnnamed2188(o.queryStats);
   }
   buildCounterResultSetStats--;
 }
@@ -1528,14 +1528,14 @@
   buildCounterRollbackRequest--;
 }
 
-buildUnnamed2191() {
+buildUnnamed2189() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed2191(core.Map<core.String, core.String> o) {
+checkUnnamed2189(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1548,7 +1548,7 @@
   if (buildCounterSession < 3) {
     o.approximateLastUseTime = "foo";
     o.createTime = "foo";
-    o.labels = buildUnnamed2191();
+    o.labels = buildUnnamed2189();
     o.name = "foo";
   }
   buildCounterSession--;
@@ -1560,7 +1560,7 @@
   if (buildCounterSession < 3) {
     unittest.expect(o.approximateLastUseTime, unittest.equals('foo'));
     unittest.expect(o.createTime, unittest.equals('foo'));
-    checkUnnamed2191(o.labels);
+    checkUnnamed2189(o.labels);
     unittest.expect(o.name, unittest.equals('foo'));
   }
   buildCounterSession--;
@@ -1585,14 +1585,14 @@
   buildCounterSetIamPolicyRequest--;
 }
 
-buildUnnamed2192() {
+buildUnnamed2190() {
   var o = new core.Map<core.String, core.int>();
   o["x"] = 42;
   o["y"] = 42;
   return o;
 }
 
-checkUnnamed2192(core.Map<core.String, core.int> o) {
+checkUnnamed2190(core.Map<core.String, core.int> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals(42));
   unittest.expect(o["y"], unittest.equals(42));
@@ -1604,7 +1604,7 @@
   buildCounterShortRepresentation++;
   if (buildCounterShortRepresentation < 3) {
     o.description = "foo";
-    o.subqueries = buildUnnamed2192();
+    o.subqueries = buildUnnamed2190();
   }
   buildCounterShortRepresentation--;
   return o;
@@ -1614,12 +1614,12 @@
   buildCounterShortRepresentation++;
   if (buildCounterShortRepresentation < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed2192(o.subqueries);
+    checkUnnamed2190(o.subqueries);
   }
   buildCounterShortRepresentation--;
 }
 
-buildUnnamed2193() {
+buildUnnamed2191() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1634,7 +1634,7 @@
   return o;
 }
 
-checkUnnamed2193(core.Map<core.String, core.Object> o) {
+checkUnnamed2191(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted27 = (o["x"]) as core.Map;
   unittest.expect(casted27, unittest.hasLength(3));
@@ -1648,17 +1648,17 @@
   unittest.expect(casted28["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2194() {
+buildUnnamed2192() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed2193());
-  o.add(buildUnnamed2193());
+  o.add(buildUnnamed2191());
+  o.add(buildUnnamed2191());
   return o;
 }
 
-checkUnnamed2194(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed2192(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2193(o[0]);
-  checkUnnamed2193(o[1]);
+  checkUnnamed2191(o[0]);
+  checkUnnamed2191(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -1667,7 +1667,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed2194();
+    o.details = buildUnnamed2192();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -1678,20 +1678,20 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed2194(o.details);
+    checkUnnamed2192(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
 }
 
-buildUnnamed2195() {
+buildUnnamed2193() {
   var o = new core.List<api.Field>();
   o.add(buildField());
   o.add(buildField());
   return o;
 }
 
-checkUnnamed2195(core.List<api.Field> o) {
+checkUnnamed2193(core.List<api.Field> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkField(o[0]);
   checkField(o[1]);
@@ -1702,7 +1702,7 @@
   var o = new api.StructType();
   buildCounterStructType++;
   if (buildCounterStructType < 3) {
-    o.fields = buildUnnamed2195();
+    o.fields = buildUnnamed2193();
   }
   buildCounterStructType--;
   return o;
@@ -1711,19 +1711,19 @@
 checkStructType(api.StructType o) {
   buildCounterStructType++;
   if (buildCounterStructType < 3) {
-    checkUnnamed2195(o.fields);
+    checkUnnamed2193(o.fields);
   }
   buildCounterStructType--;
 }
 
-buildUnnamed2196() {
+buildUnnamed2194() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2196(core.List<core.String> o) {
+checkUnnamed2194(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1734,7 +1734,7 @@
   var o = new api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed2196();
+    o.permissions = buildUnnamed2194();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -1743,19 +1743,19 @@
 checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed2196(o.permissions);
+    checkUnnamed2194(o.permissions);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-buildUnnamed2197() {
+buildUnnamed2195() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2197(core.List<core.String> o) {
+checkUnnamed2195(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1766,7 +1766,7 @@
   var o = new api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed2197();
+    o.permissions = buildUnnamed2195();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -1775,7 +1775,7 @@
 checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed2197(o.permissions);
+    checkUnnamed2195(o.permissions);
   }
   buildCounterTestIamPermissionsResponse--;
 }
@@ -1868,6 +1868,55 @@
   buildCounterType--;
 }
 
+buildUnnamed2196() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2196(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2197() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2197(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterUpdateDatabaseDdlMetadata = 0;
+buildUpdateDatabaseDdlMetadata() {
+  var o = new api.UpdateDatabaseDdlMetadata();
+  buildCounterUpdateDatabaseDdlMetadata++;
+  if (buildCounterUpdateDatabaseDdlMetadata < 3) {
+    o.commitTimestamps = buildUnnamed2196();
+    o.database = "foo";
+    o.statements = buildUnnamed2197();
+  }
+  buildCounterUpdateDatabaseDdlMetadata--;
+  return o;
+}
+
+checkUpdateDatabaseDdlMetadata(api.UpdateDatabaseDdlMetadata o) {
+  buildCounterUpdateDatabaseDdlMetadata++;
+  if (buildCounterUpdateDatabaseDdlMetadata < 3) {
+    checkUnnamed2196(o.commitTimestamps);
+    unittest.expect(o.database, unittest.equals('foo'));
+    checkUnnamed2197(o.statements);
+  }
+  buildCounterUpdateDatabaseDdlMetadata--;
+}
+
 buildUnnamed2198() {
   var o = new core.List<core.String>();
   o.add("foo");
@@ -1881,62 +1930,13 @@
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2199() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed2199(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-core.int buildCounterUpdateDatabaseDdlMetadata = 0;
-buildUpdateDatabaseDdlMetadata() {
-  var o = new api.UpdateDatabaseDdlMetadata();
-  buildCounterUpdateDatabaseDdlMetadata++;
-  if (buildCounterUpdateDatabaseDdlMetadata < 3) {
-    o.commitTimestamps = buildUnnamed2198();
-    o.database = "foo";
-    o.statements = buildUnnamed2199();
-  }
-  buildCounterUpdateDatabaseDdlMetadata--;
-  return o;
-}
-
-checkUpdateDatabaseDdlMetadata(api.UpdateDatabaseDdlMetadata o) {
-  buildCounterUpdateDatabaseDdlMetadata++;
-  if (buildCounterUpdateDatabaseDdlMetadata < 3) {
-    checkUnnamed2198(o.commitTimestamps);
-    unittest.expect(o.database, unittest.equals('foo'));
-    checkUnnamed2199(o.statements);
-  }
-  buildCounterUpdateDatabaseDdlMetadata--;
-}
-
-buildUnnamed2200() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed2200(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
 core.int buildCounterUpdateDatabaseDdlRequest = 0;
 buildUpdateDatabaseDdlRequest() {
   var o = new api.UpdateDatabaseDdlRequest();
   buildCounterUpdateDatabaseDdlRequest++;
   if (buildCounterUpdateDatabaseDdlRequest < 3) {
     o.operationId = "foo";
-    o.statements = buildUnnamed2200();
+    o.statements = buildUnnamed2198();
   }
   buildCounterUpdateDatabaseDdlRequest--;
   return o;
@@ -1946,7 +1946,7 @@
   buildCounterUpdateDatabaseDdlRequest++;
   if (buildCounterUpdateDatabaseDdlRequest < 3) {
     unittest.expect(o.operationId, unittest.equals('foo'));
-    checkUnnamed2200(o.statements);
+    checkUnnamed2198(o.statements);
   }
   buildCounterUpdateDatabaseDdlRequest--;
 }
@@ -1997,20 +1997,20 @@
   buildCounterUpdateInstanceRequest--;
 }
 
-buildUnnamed2201() {
+buildUnnamed2199() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2201(core.List<core.String> o) {
+checkUnnamed2199(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2202() {
+buildUnnamed2200() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -2025,7 +2025,7 @@
   return o;
 }
 
-checkUnnamed2202(core.List<core.Object> o) {
+checkUnnamed2200(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted29 = (o[0]) as core.Map;
   unittest.expect(casted29, unittest.hasLength(3));
@@ -2039,17 +2039,17 @@
   unittest.expect(casted30["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2203() {
+buildUnnamed2201() {
   var o = new core.List<core.List<core.Object>>();
-  o.add(buildUnnamed2202());
-  o.add(buildUnnamed2202());
+  o.add(buildUnnamed2200());
+  o.add(buildUnnamed2200());
   return o;
 }
 
-checkUnnamed2203(core.List<core.List<core.Object>> o) {
+checkUnnamed2201(core.List<core.List<core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2202(o[0]);
-  checkUnnamed2202(o[1]);
+  checkUnnamed2200(o[0]);
+  checkUnnamed2200(o[1]);
 }
 
 core.int buildCounterWrite = 0;
@@ -2057,9 +2057,9 @@
   var o = new api.Write();
   buildCounterWrite++;
   if (buildCounterWrite < 3) {
-    o.columns = buildUnnamed2201();
+    o.columns = buildUnnamed2199();
     o.table = "foo";
-    o.values = buildUnnamed2203();
+    o.values = buildUnnamed2201();
   }
   buildCounterWrite--;
   return o;
@@ -2068,9 +2068,9 @@
 checkWrite(api.Write o) {
   buildCounterWrite++;
   if (buildCounterWrite < 3) {
-    checkUnnamed2201(o.columns);
+    checkUnnamed2199(o.columns);
     unittest.expect(o.table, unittest.equals('foo'));
-    checkUnnamed2203(o.values);
+    checkUnnamed2201(o.values);
   }
   buildCounterWrite--;
 }
@@ -2522,6 +2522,7 @@
       api.ProjectsInstanceConfigsResourceApi res =
           new api.SpannerApi(mock).projects.instanceConfigs;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2553,6 +2554,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2561,7 +2563,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name)
+          .get(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstanceConfig response) {
         checkInstanceConfig(response);
       })));
@@ -2574,6 +2576,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2609,6 +2612,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2617,7 +2621,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListInstanceConfigsResponse response) {
         checkListInstanceConfigsResponse(response);
@@ -2632,6 +2639,7 @@
           new api.SpannerApi(mock).projects.instances;
       var arg_request = buildCreateInstanceRequest();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CreateInstanceRequest.fromJson(json);
         checkCreateInstanceRequest(obj);
@@ -2666,6 +2674,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2674,7 +2683,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent)
+          .create(arg_request, arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2685,6 +2694,7 @@
       api.ProjectsInstancesResourceApi res =
           new api.SpannerApi(mock).projects.instances;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2716,6 +2726,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2723,7 +2734,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -2733,6 +2746,7 @@
       api.ProjectsInstancesResourceApi res =
           new api.SpannerApi(mock).projects.instances;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2764,6 +2778,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2771,7 +2786,9 @@
         var resp = convert.JSON.encode(buildInstance());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Instance response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Instance response) {
         checkInstance(response);
       })));
     });
@@ -2782,6 +2799,7 @@
           new api.SpannerApi(mock).projects.instances;
       var arg_request = buildGetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetIamPolicyRequest.fromJson(json);
         checkGetIamPolicyRequest(obj);
@@ -2816,6 +2834,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2824,7 +2843,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_request, arg_resource)
+          .getIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -2835,9 +2854,10 @@
       api.ProjectsInstancesResourceApi res =
           new api.SpannerApi(mock).projects.instances;
       var arg_parent = "foo";
+      var arg_pageSize = 42;
       var arg_filter = "foo";
       var arg_pageToken = "foo";
-      var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2869,11 +2889,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
-        unittest.expect(core.int.parse(queryMap["pageSize"].first),
-            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2883,9 +2904,10 @@
       }), true);
       res
           .list(arg_parent,
+              pageSize: arg_pageSize,
               filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListInstancesResponse response) {
         checkListInstancesResponse(response);
       })));
@@ -2897,6 +2919,7 @@
           new api.SpannerApi(mock).projects.instances;
       var arg_request = buildUpdateInstanceRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UpdateInstanceRequest.fromJson(json);
         checkUpdateInstanceRequest(obj);
@@ -2931,6 +2954,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2939,7 +2963,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_name)
+          .patch(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2951,6 +2975,7 @@
           new api.SpannerApi(mock).projects.instances;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -2985,6 +3010,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2993,7 +3019,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -3005,6 +3031,7 @@
           new api.SpannerApi(mock).projects.instances;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -3039,6 +3066,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3046,8 +3074,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -3060,6 +3090,7 @@
           new api.SpannerApi(mock).projects.instances.databases;
       var arg_request = buildCreateDatabaseRequest();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CreateDatabaseRequest.fromJson(json);
         checkCreateDatabaseRequest(obj);
@@ -3094,6 +3125,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3102,7 +3134,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent)
+          .create(arg_request, arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3113,6 +3145,7 @@
       api.ProjectsInstancesDatabasesResourceApi res =
           new api.SpannerApi(mock).projects.instances.databases;
       var arg_database = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3144,6 +3177,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3152,7 +3186,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .dropDatabase(arg_database)
+          .dropDatabase(arg_database, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -3163,6 +3197,7 @@
       api.ProjectsInstancesDatabasesResourceApi res =
           new api.SpannerApi(mock).projects.instances.databases;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3194,6 +3229,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3201,7 +3237,9 @@
         var resp = convert.JSON.encode(buildDatabase());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Database response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Database response) {
         checkDatabase(response);
       })));
     });
@@ -3211,6 +3249,7 @@
       api.ProjectsInstancesDatabasesResourceApi res =
           new api.SpannerApi(mock).projects.instances.databases;
       var arg_database = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3242,6 +3281,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3250,7 +3290,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getDdl(arg_database)
+          .getDdl(arg_database, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GetDatabaseDdlResponse response) {
         checkGetDatabaseDdlResponse(response);
       })));
@@ -3262,6 +3302,7 @@
           new api.SpannerApi(mock).projects.instances.databases;
       var arg_request = buildGetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetIamPolicyRequest.fromJson(json);
         checkGetIamPolicyRequest(obj);
@@ -3296,6 +3337,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3304,7 +3346,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_request, arg_resource)
+          .getIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -3317,6 +3359,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3352,6 +3395,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3360,7 +3404,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListDatabasesResponse response) {
         checkListDatabasesResponse(response);
       })));
@@ -3372,6 +3419,7 @@
           new api.SpannerApi(mock).projects.instances.databases;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -3406,6 +3454,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3414,7 +3463,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -3426,6 +3475,7 @@
           new api.SpannerApi(mock).projects.instances.databases;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -3460,6 +3510,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3467,8 +3518,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -3479,6 +3532,7 @@
           new api.SpannerApi(mock).projects.instances.databases;
       var arg_request = buildUpdateDatabaseDdlRequest();
       var arg_database = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UpdateDatabaseDdlRequest.fromJson(json);
         checkUpdateDatabaseDdlRequest(obj);
@@ -3513,6 +3567,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3521,7 +3576,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .updateDdl(arg_request, arg_database)
+          .updateDdl(arg_request, arg_database, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3535,6 +3590,7 @@
       api.ProjectsInstancesDatabasesOperationsResourceApi res =
           new api.SpannerApi(mock).projects.instances.databases.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3566,6 +3622,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3573,7 +3630,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.cancel(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .cancel(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -3583,6 +3642,7 @@
       api.ProjectsInstancesDatabasesOperationsResourceApi res =
           new api.SpannerApi(mock).projects.instances.databases.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3614,6 +3674,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3621,7 +3682,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -3631,6 +3694,7 @@
       api.ProjectsInstancesDatabasesOperationsResourceApi res =
           new api.SpannerApi(mock).projects.instances.databases.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3662,6 +3726,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3669,7 +3734,9 @@
         var resp = convert.JSON.encode(buildOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Operation response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
     });
@@ -3682,6 +3749,7 @@
       var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3718,6 +3786,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3729,7 +3798,8 @@
           .list(arg_name,
               filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
@@ -3743,6 +3813,7 @@
           new api.SpannerApi(mock).projects.instances.databases.sessions;
       var arg_request = buildBeginTransactionRequest();
       var arg_session = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BeginTransactionRequest.fromJson(json);
         checkBeginTransactionRequest(obj);
@@ -3777,6 +3848,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3785,7 +3857,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .beginTransaction(arg_request, arg_session)
+          .beginTransaction(arg_request, arg_session, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Transaction response) {
         checkTransaction(response);
       })));
@@ -3797,6 +3869,7 @@
           new api.SpannerApi(mock).projects.instances.databases.sessions;
       var arg_request = buildCommitRequest();
       var arg_session = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CommitRequest.fromJson(json);
         checkCommitRequest(obj);
@@ -3831,6 +3904,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3839,7 +3913,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .commit(arg_request, arg_session)
+          .commit(arg_request, arg_session, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CommitResponse response) {
         checkCommitResponse(response);
       })));
@@ -3851,6 +3925,7 @@
           new api.SpannerApi(mock).projects.instances.databases.sessions;
       var arg_request = buildCreateSessionRequest();
       var arg_database = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CreateSessionRequest.fromJson(json);
         checkCreateSessionRequest(obj);
@@ -3885,6 +3960,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3893,7 +3969,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_database)
+          .create(arg_request, arg_database, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Session response) {
         checkSession(response);
       })));
@@ -3904,6 +3980,7 @@
       api.ProjectsInstancesDatabasesSessionsResourceApi res =
           new api.SpannerApi(mock).projects.instances.databases.sessions;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3935,6 +4012,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3942,7 +4020,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -3953,6 +4033,7 @@
           new api.SpannerApi(mock).projects.instances.databases.sessions;
       var arg_request = buildExecuteSqlRequest();
       var arg_session = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ExecuteSqlRequest.fromJson(json);
         checkExecuteSqlRequest(obj);
@@ -3987,6 +4068,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3995,7 +4077,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .executeSql(arg_request, arg_session)
+          .executeSql(arg_request, arg_session, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ResultSet response) {
         checkResultSet(response);
       })));
@@ -4007,6 +4089,7 @@
           new api.SpannerApi(mock).projects.instances.databases.sessions;
       var arg_request = buildExecuteSqlRequest();
       var arg_session = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ExecuteSqlRequest.fromJson(json);
         checkExecuteSqlRequest(obj);
@@ -4041,6 +4124,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4049,7 +4133,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .executeStreamingSql(arg_request, arg_session)
+          .executeStreamingSql(arg_request, arg_session, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PartialResultSet response) {
         checkPartialResultSet(response);
       })));
@@ -4060,6 +4144,7 @@
       api.ProjectsInstancesDatabasesSessionsResourceApi res =
           new api.SpannerApi(mock).projects.instances.databases.sessions;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4091,6 +4176,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4098,7 +4184,9 @@
         var resp = convert.JSON.encode(buildSession());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Session response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Session response) {
         checkSession(response);
       })));
     });
@@ -4108,9 +4196,10 @@
       api.ProjectsInstancesDatabasesSessionsResourceApi res =
           new api.SpannerApi(mock).projects.instances.databases.sessions;
       var arg_database = "foo";
-      var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_filter = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4142,11 +4231,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4156,9 +4246,10 @@
       }), true);
       res
           .list(arg_database,
-              pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              filter: arg_filter)
+              filter: arg_filter,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListSessionsResponse response) {
         checkListSessionsResponse(response);
       })));
@@ -4170,6 +4261,7 @@
           new api.SpannerApi(mock).projects.instances.databases.sessions;
       var arg_request = buildReadRequest();
       var arg_session = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ReadRequest.fromJson(json);
         checkReadRequest(obj);
@@ -4204,6 +4296,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4212,7 +4305,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .read(arg_request, arg_session)
+          .read(arg_request, arg_session, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ResultSet response) {
         checkResultSet(response);
       })));
@@ -4224,6 +4317,7 @@
           new api.SpannerApi(mock).projects.instances.databases.sessions;
       var arg_request = buildRollbackRequest();
       var arg_session = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RollbackRequest.fromJson(json);
         checkRollbackRequest(obj);
@@ -4258,6 +4352,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4266,7 +4361,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .rollback(arg_request, arg_session)
+          .rollback(arg_request, arg_session, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -4278,6 +4373,7 @@
           new api.SpannerApi(mock).projects.instances.databases.sessions;
       var arg_request = buildReadRequest();
       var arg_session = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ReadRequest.fromJson(json);
         checkReadRequest(obj);
@@ -4312,6 +4408,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4320,7 +4417,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .streamingRead(arg_request, arg_session)
+          .streamingRead(arg_request, arg_session, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PartialResultSet response) {
         checkPartialResultSet(response);
       })));
@@ -4333,6 +4430,7 @@
       api.ProjectsInstancesOperationsResourceApi res =
           new api.SpannerApi(mock).projects.instances.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4364,6 +4462,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4371,7 +4470,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.cancel(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .cancel(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -4381,6 +4482,7 @@
       api.ProjectsInstancesOperationsResourceApi res =
           new api.SpannerApi(mock).projects.instances.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4412,6 +4514,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4419,7 +4522,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -4429,6 +4534,7 @@
       api.ProjectsInstancesOperationsResourceApi res =
           new api.SpannerApi(mock).projects.instances.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4460,6 +4566,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4467,7 +4574,9 @@
         var resp = convert.JSON.encode(buildOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Operation response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
     });
@@ -4477,9 +4586,10 @@
       api.ProjectsInstancesOperationsResourceApi res =
           new api.SpannerApi(mock).projects.instances.operations;
       var arg_name = "foo";
+      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
-      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4511,11 +4621,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4525,9 +4636,10 @@
       }), true);
       res
           .list(arg_name,
+              filter: arg_filter,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              filter: arg_filter)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
diff --git a/generated/googleapis/test/speech/v1_test.dart b/generated/googleapis/test/speech/v1_test.dart
index 58721d4..4318308 100644
--- a/generated/googleapis/test/speech/v1_test.dart
+++ b/generated/googleapis/test/speech/v1_test.dart
@@ -80,14 +80,14 @@
   buildCounterEmpty--;
 }
 
-buildUnnamed2855() {
+buildUnnamed2870() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed2855(core.List<api.Operation> o) {
+checkUnnamed2870(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -99,7 +99,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed2855();
+    o.operations = buildUnnamed2870();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -109,7 +109,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed2855(o.operations);
+    checkUnnamed2870(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
@@ -135,7 +135,7 @@
   buildCounterLongRunningRecognizeRequest--;
 }
 
-buildUnnamed2856() {
+buildUnnamed2871() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -150,7 +150,7 @@
   return o;
 }
 
-checkUnnamed2856(core.Map<core.String, core.Object> o) {
+checkUnnamed2871(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -164,7 +164,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2857() {
+buildUnnamed2872() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -179,7 +179,7 @@
   return o;
 }
 
-checkUnnamed2857(core.Map<core.String, core.Object> o) {
+checkUnnamed2872(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -200,9 +200,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed2856();
+    o.metadata = buildUnnamed2871();
     o.name = "foo";
-    o.response = buildUnnamed2857();
+    o.response = buildUnnamed2872();
   }
   buildCounterOperation--;
   return o;
@@ -213,9 +213,9 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed2856(o.metadata);
+    checkUnnamed2871(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2857(o.response);
+    checkUnnamed2872(o.response);
   }
   buildCounterOperation--;
 }
@@ -241,14 +241,14 @@
   buildCounterRecognitionAudio--;
 }
 
-buildUnnamed2858() {
+buildUnnamed2873() {
   var o = new core.List<api.SpeechContext>();
   o.add(buildSpeechContext());
   o.add(buildSpeechContext());
   return o;
 }
 
-checkUnnamed2858(core.List<api.SpeechContext> o) {
+checkUnnamed2873(core.List<api.SpeechContext> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSpeechContext(o[0]);
   checkSpeechContext(o[1]);
@@ -265,7 +265,7 @@
     o.maxAlternatives = 42;
     o.profanityFilter = true;
     o.sampleRateHertz = 42;
-    o.speechContexts = buildUnnamed2858();
+    o.speechContexts = buildUnnamed2873();
   }
   buildCounterRecognitionConfig--;
   return o;
@@ -280,7 +280,7 @@
     unittest.expect(o.maxAlternatives, unittest.equals(42));
     unittest.expect(o.profanityFilter, unittest.isTrue);
     unittest.expect(o.sampleRateHertz, unittest.equals(42));
-    checkUnnamed2858(o.speechContexts);
+    checkUnnamed2873(o.speechContexts);
   }
   buildCounterRecognitionConfig--;
 }
@@ -306,14 +306,14 @@
   buildCounterRecognizeRequest--;
 }
 
-buildUnnamed2859() {
+buildUnnamed2874() {
   var o = new core.List<api.SpeechRecognitionResult>();
   o.add(buildSpeechRecognitionResult());
   o.add(buildSpeechRecognitionResult());
   return o;
 }
 
-checkUnnamed2859(core.List<api.SpeechRecognitionResult> o) {
+checkUnnamed2874(core.List<api.SpeechRecognitionResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSpeechRecognitionResult(o[0]);
   checkSpeechRecognitionResult(o[1]);
@@ -324,7 +324,7 @@
   var o = new api.RecognizeResponse();
   buildCounterRecognizeResponse++;
   if (buildCounterRecognizeResponse < 3) {
-    o.results = buildUnnamed2859();
+    o.results = buildUnnamed2874();
   }
   buildCounterRecognizeResponse--;
   return o;
@@ -333,19 +333,19 @@
 checkRecognizeResponse(api.RecognizeResponse o) {
   buildCounterRecognizeResponse++;
   if (buildCounterRecognizeResponse < 3) {
-    checkUnnamed2859(o.results);
+    checkUnnamed2874(o.results);
   }
   buildCounterRecognizeResponse--;
 }
 
-buildUnnamed2860() {
+buildUnnamed2875() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2860(core.List<core.String> o) {
+checkUnnamed2875(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -356,7 +356,7 @@
   var o = new api.SpeechContext();
   buildCounterSpeechContext++;
   if (buildCounterSpeechContext < 3) {
-    o.phrases = buildUnnamed2860();
+    o.phrases = buildUnnamed2875();
   }
   buildCounterSpeechContext--;
   return o;
@@ -365,19 +365,19 @@
 checkSpeechContext(api.SpeechContext o) {
   buildCounterSpeechContext++;
   if (buildCounterSpeechContext < 3) {
-    checkUnnamed2860(o.phrases);
+    checkUnnamed2875(o.phrases);
   }
   buildCounterSpeechContext--;
 }
 
-buildUnnamed2861() {
+buildUnnamed2876() {
   var o = new core.List<api.WordInfo>();
   o.add(buildWordInfo());
   o.add(buildWordInfo());
   return o;
 }
 
-checkUnnamed2861(core.List<api.WordInfo> o) {
+checkUnnamed2876(core.List<api.WordInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWordInfo(o[0]);
   checkWordInfo(o[1]);
@@ -390,7 +390,7 @@
   if (buildCounterSpeechRecognitionAlternative < 3) {
     o.confidence = 42.0;
     o.transcript = "foo";
-    o.words = buildUnnamed2861();
+    o.words = buildUnnamed2876();
   }
   buildCounterSpeechRecognitionAlternative--;
   return o;
@@ -401,19 +401,19 @@
   if (buildCounterSpeechRecognitionAlternative < 3) {
     unittest.expect(o.confidence, unittest.equals(42.0));
     unittest.expect(o.transcript, unittest.equals('foo'));
-    checkUnnamed2861(o.words);
+    checkUnnamed2876(o.words);
   }
   buildCounterSpeechRecognitionAlternative--;
 }
 
-buildUnnamed2862() {
+buildUnnamed2877() {
   var o = new core.List<api.SpeechRecognitionAlternative>();
   o.add(buildSpeechRecognitionAlternative());
   o.add(buildSpeechRecognitionAlternative());
   return o;
 }
 
-checkUnnamed2862(core.List<api.SpeechRecognitionAlternative> o) {
+checkUnnamed2877(core.List<api.SpeechRecognitionAlternative> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSpeechRecognitionAlternative(o[0]);
   checkSpeechRecognitionAlternative(o[1]);
@@ -424,7 +424,8 @@
   var o = new api.SpeechRecognitionResult();
   buildCounterSpeechRecognitionResult++;
   if (buildCounterSpeechRecognitionResult < 3) {
-    o.alternatives = buildUnnamed2862();
+    o.alternatives = buildUnnamed2877();
+    o.channelTag = 42;
   }
   buildCounterSpeechRecognitionResult--;
   return o;
@@ -433,12 +434,13 @@
 checkSpeechRecognitionResult(api.SpeechRecognitionResult o) {
   buildCounterSpeechRecognitionResult++;
   if (buildCounterSpeechRecognitionResult < 3) {
-    checkUnnamed2862(o.alternatives);
+    checkUnnamed2877(o.alternatives);
+    unittest.expect(o.channelTag, unittest.equals(42));
   }
   buildCounterSpeechRecognitionResult--;
 }
 
-buildUnnamed2863() {
+buildUnnamed2878() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -453,7 +455,7 @@
   return o;
 }
 
-checkUnnamed2863(core.Map<core.String, core.Object> o) {
+checkUnnamed2878(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -467,17 +469,17 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed2864() {
+buildUnnamed2879() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed2863());
-  o.add(buildUnnamed2863());
+  o.add(buildUnnamed2878());
+  o.add(buildUnnamed2878());
   return o;
 }
 
-checkUnnamed2864(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed2879(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed2863(o[0]);
-  checkUnnamed2863(o[1]);
+  checkUnnamed2878(o[0]);
+  checkUnnamed2878(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -486,7 +488,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed2864();
+    o.details = buildUnnamed2879();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -497,7 +499,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed2864(o.details);
+    checkUnnamed2879(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -645,6 +647,7 @@
       api.OperationsResourceApi res = new api.SpeechApi(mock).operations;
       var arg_request = buildCancelOperationRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CancelOperationRequest.fromJson(json);
         checkCancelOperationRequest(obj);
@@ -679,6 +682,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -687,7 +691,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .cancel(arg_request, arg_name)
+          .cancel(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -697,6 +701,7 @@
       var mock = new HttpServerMock();
       api.OperationsResourceApi res = new api.SpeechApi(mock).operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -728,6 +733,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -735,7 +741,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -744,6 +752,7 @@
       var mock = new HttpServerMock();
       api.OperationsResourceApi res = new api.SpeechApi(mock).operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -775,6 +784,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -782,7 +792,9 @@
         var resp = convert.JSON.encode(buildOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Operation response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
     });
@@ -794,6 +806,7 @@
       var arg_name = "foo";
       var arg_pageSize = 42;
       var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -830,6 +843,7 @@
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -842,7 +856,8 @@
               pageToken: arg_pageToken,
               name: arg_name,
               pageSize: arg_pageSize,
-              filter: arg_filter)
+              filter: arg_filter,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
@@ -854,6 +869,7 @@
       var mock = new HttpServerMock();
       api.SpeechResourceApi res = new api.SpeechApi(mock).speech;
       var arg_request = buildLongRunningRecognizeRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LongRunningRecognizeRequest.fromJson(json);
         checkLongRunningRecognizeRequest(obj);
@@ -887,6 +903,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -895,7 +912,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .longrunningrecognize(arg_request)
+          .longrunningrecognize(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -905,6 +922,7 @@
       var mock = new HttpServerMock();
       api.SpeechResourceApi res = new api.SpeechApi(mock).speech;
       var arg_request = buildRecognizeRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RecognizeRequest.fromJson(json);
         checkRecognizeRequest(obj);
@@ -938,6 +956,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -946,7 +965,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .recognize(arg_request)
+          .recognize(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RecognizeResponse response) {
         checkRecognizeResponse(response);
       })));
diff --git a/generated/googleapis/test/storage/v1_test.dart b/generated/googleapis/test/storage/v1_test.dart
new file mode 100644
index 0000000..e7a1825
--- /dev/null
+++ b/generated/googleapis/test/storage/v1_test.dart
@@ -0,0 +1,5378 @@
+library googleapis.storage.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/storage/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+buildUnnamed879() {
+  var o = new core.List<api.BucketAccessControl>();
+  o.add(buildBucketAccessControl());
+  o.add(buildBucketAccessControl());
+  return o;
+}
+
+checkUnnamed879(core.List<api.BucketAccessControl> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBucketAccessControl(o[0]);
+  checkBucketAccessControl(o[1]);
+}
+
+core.int buildCounterBucketBilling = 0;
+buildBucketBilling() {
+  var o = new api.BucketBilling();
+  buildCounterBucketBilling++;
+  if (buildCounterBucketBilling < 3) {
+    o.requesterPays = true;
+  }
+  buildCounterBucketBilling--;
+  return o;
+}
+
+checkBucketBilling(api.BucketBilling o) {
+  buildCounterBucketBilling++;
+  if (buildCounterBucketBilling < 3) {
+    unittest.expect(o.requesterPays, unittest.isTrue);
+  }
+  buildCounterBucketBilling--;
+}
+
+buildUnnamed880() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed880(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed881() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed881(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed882() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed882(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBucketCors = 0;
+buildBucketCors() {
+  var o = new api.BucketCors();
+  buildCounterBucketCors++;
+  if (buildCounterBucketCors < 3) {
+    o.maxAgeSeconds = 42;
+    o.method = buildUnnamed880();
+    o.origin = buildUnnamed881();
+    o.responseHeader = buildUnnamed882();
+  }
+  buildCounterBucketCors--;
+  return o;
+}
+
+checkBucketCors(api.BucketCors o) {
+  buildCounterBucketCors++;
+  if (buildCounterBucketCors < 3) {
+    unittest.expect(o.maxAgeSeconds, unittest.equals(42));
+    checkUnnamed880(o.method);
+    checkUnnamed881(o.origin);
+    checkUnnamed882(o.responseHeader);
+  }
+  buildCounterBucketCors--;
+}
+
+buildUnnamed883() {
+  var o = new core.List<api.BucketCors>();
+  o.add(buildBucketCors());
+  o.add(buildBucketCors());
+  return o;
+}
+
+checkUnnamed883(core.List<api.BucketCors> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBucketCors(o[0]);
+  checkBucketCors(o[1]);
+}
+
+buildUnnamed884() {
+  var o = new core.List<api.ObjectAccessControl>();
+  o.add(buildObjectAccessControl());
+  o.add(buildObjectAccessControl());
+  return o;
+}
+
+checkUnnamed884(core.List<api.ObjectAccessControl> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkObjectAccessControl(o[0]);
+  checkObjectAccessControl(o[1]);
+}
+
+core.int buildCounterBucketEncryption = 0;
+buildBucketEncryption() {
+  var o = new api.BucketEncryption();
+  buildCounterBucketEncryption++;
+  if (buildCounterBucketEncryption < 3) {
+    o.defaultKmsKeyName = "foo";
+  }
+  buildCounterBucketEncryption--;
+  return o;
+}
+
+checkBucketEncryption(api.BucketEncryption o) {
+  buildCounterBucketEncryption++;
+  if (buildCounterBucketEncryption < 3) {
+    unittest.expect(o.defaultKmsKeyName, unittest.equals('foo'));
+  }
+  buildCounterBucketEncryption--;
+}
+
+buildUnnamed885() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed885(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterBucketLifecycleRuleAction = 0;
+buildBucketLifecycleRuleAction() {
+  var o = new api.BucketLifecycleRuleAction();
+  buildCounterBucketLifecycleRuleAction++;
+  if (buildCounterBucketLifecycleRuleAction < 3) {
+    o.storageClass = "foo";
+    o.type = "foo";
+  }
+  buildCounterBucketLifecycleRuleAction--;
+  return o;
+}
+
+checkBucketLifecycleRuleAction(api.BucketLifecycleRuleAction o) {
+  buildCounterBucketLifecycleRuleAction++;
+  if (buildCounterBucketLifecycleRuleAction < 3) {
+    unittest.expect(o.storageClass, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterBucketLifecycleRuleAction--;
+}
+
+buildUnnamed886() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed886(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBucketLifecycleRuleCondition = 0;
+buildBucketLifecycleRuleCondition() {
+  var o = new api.BucketLifecycleRuleCondition();
+  buildCounterBucketLifecycleRuleCondition++;
+  if (buildCounterBucketLifecycleRuleCondition < 3) {
+    o.age = 42;
+    o.createdBefore = core.DateTime.parse("2002-02-27T14:01:02Z");
+    o.isLive = true;
+    o.matchesStorageClass = buildUnnamed886();
+    o.numNewerVersions = 42;
+  }
+  buildCounterBucketLifecycleRuleCondition--;
+  return o;
+}
+
+checkBucketLifecycleRuleCondition(api.BucketLifecycleRuleCondition o) {
+  buildCounterBucketLifecycleRuleCondition++;
+  if (buildCounterBucketLifecycleRuleCondition < 3) {
+    unittest.expect(o.age, unittest.equals(42));
+    unittest.expect(o.createdBefore,
+        unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
+    unittest.expect(o.isLive, unittest.isTrue);
+    checkUnnamed886(o.matchesStorageClass);
+    unittest.expect(o.numNewerVersions, unittest.equals(42));
+  }
+  buildCounterBucketLifecycleRuleCondition--;
+}
+
+core.int buildCounterBucketLifecycleRule = 0;
+buildBucketLifecycleRule() {
+  var o = new api.BucketLifecycleRule();
+  buildCounterBucketLifecycleRule++;
+  if (buildCounterBucketLifecycleRule < 3) {
+    o.action = buildBucketLifecycleRuleAction();
+    o.condition = buildBucketLifecycleRuleCondition();
+  }
+  buildCounterBucketLifecycleRule--;
+  return o;
+}
+
+checkBucketLifecycleRule(api.BucketLifecycleRule o) {
+  buildCounterBucketLifecycleRule++;
+  if (buildCounterBucketLifecycleRule < 3) {
+    checkBucketLifecycleRuleAction(o.action);
+    checkBucketLifecycleRuleCondition(o.condition);
+  }
+  buildCounterBucketLifecycleRule--;
+}
+
+buildUnnamed887() {
+  var o = new core.List<api.BucketLifecycleRule>();
+  o.add(buildBucketLifecycleRule());
+  o.add(buildBucketLifecycleRule());
+  return o;
+}
+
+checkUnnamed887(core.List<api.BucketLifecycleRule> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBucketLifecycleRule(o[0]);
+  checkBucketLifecycleRule(o[1]);
+}
+
+core.int buildCounterBucketLifecycle = 0;
+buildBucketLifecycle() {
+  var o = new api.BucketLifecycle();
+  buildCounterBucketLifecycle++;
+  if (buildCounterBucketLifecycle < 3) {
+    o.rule = buildUnnamed887();
+  }
+  buildCounterBucketLifecycle--;
+  return o;
+}
+
+checkBucketLifecycle(api.BucketLifecycle o) {
+  buildCounterBucketLifecycle++;
+  if (buildCounterBucketLifecycle < 3) {
+    checkUnnamed887(o.rule);
+  }
+  buildCounterBucketLifecycle--;
+}
+
+core.int buildCounterBucketLogging = 0;
+buildBucketLogging() {
+  var o = new api.BucketLogging();
+  buildCounterBucketLogging++;
+  if (buildCounterBucketLogging < 3) {
+    o.logBucket = "foo";
+    o.logObjectPrefix = "foo";
+  }
+  buildCounterBucketLogging--;
+  return o;
+}
+
+checkBucketLogging(api.BucketLogging o) {
+  buildCounterBucketLogging++;
+  if (buildCounterBucketLogging < 3) {
+    unittest.expect(o.logBucket, unittest.equals('foo'));
+    unittest.expect(o.logObjectPrefix, unittest.equals('foo'));
+  }
+  buildCounterBucketLogging--;
+}
+
+core.int buildCounterBucketOwner = 0;
+buildBucketOwner() {
+  var o = new api.BucketOwner();
+  buildCounterBucketOwner++;
+  if (buildCounterBucketOwner < 3) {
+    o.entity = "foo";
+    o.entityId = "foo";
+  }
+  buildCounterBucketOwner--;
+  return o;
+}
+
+checkBucketOwner(api.BucketOwner o) {
+  buildCounterBucketOwner++;
+  if (buildCounterBucketOwner < 3) {
+    unittest.expect(o.entity, unittest.equals('foo'));
+    unittest.expect(o.entityId, unittest.equals('foo'));
+  }
+  buildCounterBucketOwner--;
+}
+
+core.int buildCounterBucketVersioning = 0;
+buildBucketVersioning() {
+  var o = new api.BucketVersioning();
+  buildCounterBucketVersioning++;
+  if (buildCounterBucketVersioning < 3) {
+    o.enabled = true;
+  }
+  buildCounterBucketVersioning--;
+  return o;
+}
+
+checkBucketVersioning(api.BucketVersioning o) {
+  buildCounterBucketVersioning++;
+  if (buildCounterBucketVersioning < 3) {
+    unittest.expect(o.enabled, unittest.isTrue);
+  }
+  buildCounterBucketVersioning--;
+}
+
+core.int buildCounterBucketWebsite = 0;
+buildBucketWebsite() {
+  var o = new api.BucketWebsite();
+  buildCounterBucketWebsite++;
+  if (buildCounterBucketWebsite < 3) {
+    o.mainPageSuffix = "foo";
+    o.notFoundPage = "foo";
+  }
+  buildCounterBucketWebsite--;
+  return o;
+}
+
+checkBucketWebsite(api.BucketWebsite o) {
+  buildCounterBucketWebsite++;
+  if (buildCounterBucketWebsite < 3) {
+    unittest.expect(o.mainPageSuffix, unittest.equals('foo'));
+    unittest.expect(o.notFoundPage, unittest.equals('foo'));
+  }
+  buildCounterBucketWebsite--;
+}
+
+core.int buildCounterBucket = 0;
+buildBucket() {
+  var o = new api.Bucket();
+  buildCounterBucket++;
+  if (buildCounterBucket < 3) {
+    o.acl = buildUnnamed879();
+    o.billing = buildBucketBilling();
+    o.cors = buildUnnamed883();
+    o.defaultObjectAcl = buildUnnamed884();
+    o.encryption = buildBucketEncryption();
+    o.etag = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.labels = buildUnnamed885();
+    o.lifecycle = buildBucketLifecycle();
+    o.location = "foo";
+    o.logging = buildBucketLogging();
+    o.metageneration = "foo";
+    o.name = "foo";
+    o.owner = buildBucketOwner();
+    o.projectNumber = "foo";
+    o.selfLink = "foo";
+    o.storageClass = "foo";
+    o.timeCreated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.versioning = buildBucketVersioning();
+    o.website = buildBucketWebsite();
+  }
+  buildCounterBucket--;
+  return o;
+}
+
+checkBucket(api.Bucket o) {
+  buildCounterBucket++;
+  if (buildCounterBucket < 3) {
+    checkUnnamed879(o.acl);
+    checkBucketBilling(o.billing);
+    checkUnnamed883(o.cors);
+    checkUnnamed884(o.defaultObjectAcl);
+    checkBucketEncryption(o.encryption);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed885(o.labels);
+    checkBucketLifecycle(o.lifecycle);
+    unittest.expect(o.location, unittest.equals('foo'));
+    checkBucketLogging(o.logging);
+    unittest.expect(o.metageneration, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkBucketOwner(o.owner);
+    unittest.expect(o.projectNumber, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.storageClass, unittest.equals('foo'));
+    unittest.expect(o.timeCreated,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    checkBucketVersioning(o.versioning);
+    checkBucketWebsite(o.website);
+  }
+  buildCounterBucket--;
+}
+
+core.int buildCounterBucketAccessControlProjectTeam = 0;
+buildBucketAccessControlProjectTeam() {
+  var o = new api.BucketAccessControlProjectTeam();
+  buildCounterBucketAccessControlProjectTeam++;
+  if (buildCounterBucketAccessControlProjectTeam < 3) {
+    o.projectNumber = "foo";
+    o.team = "foo";
+  }
+  buildCounterBucketAccessControlProjectTeam--;
+  return o;
+}
+
+checkBucketAccessControlProjectTeam(api.BucketAccessControlProjectTeam o) {
+  buildCounterBucketAccessControlProjectTeam++;
+  if (buildCounterBucketAccessControlProjectTeam < 3) {
+    unittest.expect(o.projectNumber, unittest.equals('foo'));
+    unittest.expect(o.team, unittest.equals('foo'));
+  }
+  buildCounterBucketAccessControlProjectTeam--;
+}
+
+core.int buildCounterBucketAccessControl = 0;
+buildBucketAccessControl() {
+  var o = new api.BucketAccessControl();
+  buildCounterBucketAccessControl++;
+  if (buildCounterBucketAccessControl < 3) {
+    o.bucket = "foo";
+    o.domain = "foo";
+    o.email = "foo";
+    o.entity = "foo";
+    o.entityId = "foo";
+    o.etag = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.projectTeam = buildBucketAccessControlProjectTeam();
+    o.role = "foo";
+    o.selfLink = "foo";
+  }
+  buildCounterBucketAccessControl--;
+  return o;
+}
+
+checkBucketAccessControl(api.BucketAccessControl o) {
+  buildCounterBucketAccessControl++;
+  if (buildCounterBucketAccessControl < 3) {
+    unittest.expect(o.bucket, unittest.equals('foo'));
+    unittest.expect(o.domain, unittest.equals('foo'));
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.entity, unittest.equals('foo'));
+    unittest.expect(o.entityId, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkBucketAccessControlProjectTeam(o.projectTeam);
+    unittest.expect(o.role, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+  }
+  buildCounterBucketAccessControl--;
+}
+
+buildUnnamed888() {
+  var o = new core.List<api.BucketAccessControl>();
+  o.add(buildBucketAccessControl());
+  o.add(buildBucketAccessControl());
+  return o;
+}
+
+checkUnnamed888(core.List<api.BucketAccessControl> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBucketAccessControl(o[0]);
+  checkBucketAccessControl(o[1]);
+}
+
+core.int buildCounterBucketAccessControls = 0;
+buildBucketAccessControls() {
+  var o = new api.BucketAccessControls();
+  buildCounterBucketAccessControls++;
+  if (buildCounterBucketAccessControls < 3) {
+    o.items = buildUnnamed888();
+    o.kind = "foo";
+  }
+  buildCounterBucketAccessControls--;
+  return o;
+}
+
+checkBucketAccessControls(api.BucketAccessControls o) {
+  buildCounterBucketAccessControls++;
+  if (buildCounterBucketAccessControls < 3) {
+    checkUnnamed888(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterBucketAccessControls--;
+}
+
+buildUnnamed889() {
+  var o = new core.List<api.Bucket>();
+  o.add(buildBucket());
+  o.add(buildBucket());
+  return o;
+}
+
+checkUnnamed889(core.List<api.Bucket> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBucket(o[0]);
+  checkBucket(o[1]);
+}
+
+core.int buildCounterBuckets = 0;
+buildBuckets() {
+  var o = new api.Buckets();
+  buildCounterBuckets++;
+  if (buildCounterBuckets < 3) {
+    o.items = buildUnnamed889();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+  }
+  buildCounterBuckets--;
+  return o;
+}
+
+checkBuckets(api.Buckets o) {
+  buildCounterBuckets++;
+  if (buildCounterBuckets < 3) {
+    checkUnnamed889(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterBuckets--;
+}
+
+buildUnnamed890() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed890(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterChannel = 0;
+buildChannel() {
+  var o = new api.Channel();
+  buildCounterChannel++;
+  if (buildCounterChannel < 3) {
+    o.address = "foo";
+    o.expiration = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.params = buildUnnamed890();
+    o.payload = true;
+    o.resourceId = "foo";
+    o.resourceUri = "foo";
+    o.token = "foo";
+    o.type = "foo";
+  }
+  buildCounterChannel--;
+  return o;
+}
+
+checkChannel(api.Channel o) {
+  buildCounterChannel++;
+  if (buildCounterChannel < 3) {
+    unittest.expect(o.address, unittest.equals('foo'));
+    unittest.expect(o.expiration, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed890(o.params);
+    unittest.expect(o.payload, unittest.isTrue);
+    unittest.expect(o.resourceId, unittest.equals('foo'));
+    unittest.expect(o.resourceUri, unittest.equals('foo'));
+    unittest.expect(o.token, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterChannel--;
+}
+
+core.int buildCounterComposeRequestSourceObjectsObjectPreconditions = 0;
+buildComposeRequestSourceObjectsObjectPreconditions() {
+  var o = new api.ComposeRequestSourceObjectsObjectPreconditions();
+  buildCounterComposeRequestSourceObjectsObjectPreconditions++;
+  if (buildCounterComposeRequestSourceObjectsObjectPreconditions < 3) {
+    o.ifGenerationMatch = "foo";
+  }
+  buildCounterComposeRequestSourceObjectsObjectPreconditions--;
+  return o;
+}
+
+checkComposeRequestSourceObjectsObjectPreconditions(
+    api.ComposeRequestSourceObjectsObjectPreconditions o) {
+  buildCounterComposeRequestSourceObjectsObjectPreconditions++;
+  if (buildCounterComposeRequestSourceObjectsObjectPreconditions < 3) {
+    unittest.expect(o.ifGenerationMatch, unittest.equals('foo'));
+  }
+  buildCounterComposeRequestSourceObjectsObjectPreconditions--;
+}
+
+core.int buildCounterComposeRequestSourceObjects = 0;
+buildComposeRequestSourceObjects() {
+  var o = new api.ComposeRequestSourceObjects();
+  buildCounterComposeRequestSourceObjects++;
+  if (buildCounterComposeRequestSourceObjects < 3) {
+    o.generation = "foo";
+    o.name = "foo";
+    o.objectPreconditions =
+        buildComposeRequestSourceObjectsObjectPreconditions();
+  }
+  buildCounterComposeRequestSourceObjects--;
+  return o;
+}
+
+checkComposeRequestSourceObjects(api.ComposeRequestSourceObjects o) {
+  buildCounterComposeRequestSourceObjects++;
+  if (buildCounterComposeRequestSourceObjects < 3) {
+    unittest.expect(o.generation, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkComposeRequestSourceObjectsObjectPreconditions(o.objectPreconditions);
+  }
+  buildCounterComposeRequestSourceObjects--;
+}
+
+buildUnnamed891() {
+  var o = new core.List<api.ComposeRequestSourceObjects>();
+  o.add(buildComposeRequestSourceObjects());
+  o.add(buildComposeRequestSourceObjects());
+  return o;
+}
+
+checkUnnamed891(core.List<api.ComposeRequestSourceObjects> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkComposeRequestSourceObjects(o[0]);
+  checkComposeRequestSourceObjects(o[1]);
+}
+
+core.int buildCounterComposeRequest = 0;
+buildComposeRequest() {
+  var o = new api.ComposeRequest();
+  buildCounterComposeRequest++;
+  if (buildCounterComposeRequest < 3) {
+    o.destination = buildObject();
+    o.kind = "foo";
+    o.sourceObjects = buildUnnamed891();
+  }
+  buildCounterComposeRequest--;
+  return o;
+}
+
+checkComposeRequest(api.ComposeRequest o) {
+  buildCounterComposeRequest++;
+  if (buildCounterComposeRequest < 3) {
+    checkObject(o.destination);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed891(o.sourceObjects);
+  }
+  buildCounterComposeRequest--;
+}
+
+buildUnnamed892() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed892(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+buildUnnamed893() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed893(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterNotification = 0;
+buildNotification() {
+  var o = new api.Notification();
+  buildCounterNotification++;
+  if (buildCounterNotification < 3) {
+    o.customAttributes = buildUnnamed892();
+    o.etag = "foo";
+    o.eventTypes = buildUnnamed893();
+    o.id = "foo";
+    o.kind = "foo";
+    o.objectNamePrefix = "foo";
+    o.payloadFormat = "foo";
+    o.selfLink = "foo";
+    o.topic = "foo";
+  }
+  buildCounterNotification--;
+  return o;
+}
+
+checkNotification(api.Notification o) {
+  buildCounterNotification++;
+  if (buildCounterNotification < 3) {
+    checkUnnamed892(o.customAttributes);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    checkUnnamed893(o.eventTypes);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.objectNamePrefix, unittest.equals('foo'));
+    unittest.expect(o.payloadFormat, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.topic, unittest.equals('foo'));
+  }
+  buildCounterNotification--;
+}
+
+buildUnnamed894() {
+  var o = new core.List<api.Notification>();
+  o.add(buildNotification());
+  o.add(buildNotification());
+  return o;
+}
+
+checkUnnamed894(core.List<api.Notification> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkNotification(o[0]);
+  checkNotification(o[1]);
+}
+
+core.int buildCounterNotifications = 0;
+buildNotifications() {
+  var o = new api.Notifications();
+  buildCounterNotifications++;
+  if (buildCounterNotifications < 3) {
+    o.items = buildUnnamed894();
+    o.kind = "foo";
+  }
+  buildCounterNotifications--;
+  return o;
+}
+
+checkNotifications(api.Notifications o) {
+  buildCounterNotifications++;
+  if (buildCounterNotifications < 3) {
+    checkUnnamed894(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterNotifications--;
+}
+
+buildUnnamed895() {
+  var o = new core.List<api.ObjectAccessControl>();
+  o.add(buildObjectAccessControl());
+  o.add(buildObjectAccessControl());
+  return o;
+}
+
+checkUnnamed895(core.List<api.ObjectAccessControl> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkObjectAccessControl(o[0]);
+  checkObjectAccessControl(o[1]);
+}
+
+core.int buildCounterObjectCustomerEncryption = 0;
+buildObjectCustomerEncryption() {
+  var o = new api.ObjectCustomerEncryption();
+  buildCounterObjectCustomerEncryption++;
+  if (buildCounterObjectCustomerEncryption < 3) {
+    o.encryptionAlgorithm = "foo";
+    o.keySha256 = "foo";
+  }
+  buildCounterObjectCustomerEncryption--;
+  return o;
+}
+
+checkObjectCustomerEncryption(api.ObjectCustomerEncryption o) {
+  buildCounterObjectCustomerEncryption++;
+  if (buildCounterObjectCustomerEncryption < 3) {
+    unittest.expect(o.encryptionAlgorithm, unittest.equals('foo'));
+    unittest.expect(o.keySha256, unittest.equals('foo'));
+  }
+  buildCounterObjectCustomerEncryption--;
+}
+
+buildUnnamed896() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed896(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterObjectOwner = 0;
+buildObjectOwner() {
+  var o = new api.ObjectOwner();
+  buildCounterObjectOwner++;
+  if (buildCounterObjectOwner < 3) {
+    o.entity = "foo";
+    o.entityId = "foo";
+  }
+  buildCounterObjectOwner--;
+  return o;
+}
+
+checkObjectOwner(api.ObjectOwner o) {
+  buildCounterObjectOwner++;
+  if (buildCounterObjectOwner < 3) {
+    unittest.expect(o.entity, unittest.equals('foo'));
+    unittest.expect(o.entityId, unittest.equals('foo'));
+  }
+  buildCounterObjectOwner--;
+}
+
+core.int buildCounterObject = 0;
+buildObject() {
+  var o = new api.Object();
+  buildCounterObject++;
+  if (buildCounterObject < 3) {
+    o.acl = buildUnnamed895();
+    o.bucket = "foo";
+    o.cacheControl = "foo";
+    o.componentCount = 42;
+    o.contentDisposition = "foo";
+    o.contentEncoding = "foo";
+    o.contentLanguage = "foo";
+    o.contentType = "foo";
+    o.crc32c = "foo";
+    o.customerEncryption = buildObjectCustomerEncryption();
+    o.etag = "foo";
+    o.generation = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.kmsKeyName = "foo";
+    o.md5Hash = "foo";
+    o.mediaLink = "foo";
+    o.metadata = buildUnnamed896();
+    o.metageneration = "foo";
+    o.name = "foo";
+    o.owner = buildObjectOwner();
+    o.selfLink = "foo";
+    o.size = "foo";
+    o.storageClass = "foo";
+    o.timeCreated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.timeDeleted = core.DateTime.parse("2002-02-27T14:01:02");
+    o.timeStorageClassUpdated = core.DateTime.parse("2002-02-27T14:01:02");
+    o.updated = core.DateTime.parse("2002-02-27T14:01:02");
+  }
+  buildCounterObject--;
+  return o;
+}
+
+checkObject(api.Object o) {
+  buildCounterObject++;
+  if (buildCounterObject < 3) {
+    checkUnnamed895(o.acl);
+    unittest.expect(o.bucket, unittest.equals('foo'));
+    unittest.expect(o.cacheControl, unittest.equals('foo'));
+    unittest.expect(o.componentCount, unittest.equals(42));
+    unittest.expect(o.contentDisposition, unittest.equals('foo'));
+    unittest.expect(o.contentEncoding, unittest.equals('foo'));
+    unittest.expect(o.contentLanguage, unittest.equals('foo'));
+    unittest.expect(o.contentType, unittest.equals('foo'));
+    unittest.expect(o.crc32c, unittest.equals('foo'));
+    checkObjectCustomerEncryption(o.customerEncryption);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.generation, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.kmsKeyName, unittest.equals('foo'));
+    unittest.expect(o.md5Hash, unittest.equals('foo'));
+    unittest.expect(o.mediaLink, unittest.equals('foo'));
+    checkUnnamed896(o.metadata);
+    unittest.expect(o.metageneration, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkObjectOwner(o.owner);
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+    unittest.expect(o.size, unittest.equals('foo'));
+    unittest.expect(o.storageClass, unittest.equals('foo'));
+    unittest.expect(o.timeCreated,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.timeDeleted,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.timeStorageClassUpdated,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(
+        o.updated, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+  }
+  buildCounterObject--;
+}
+
+core.int buildCounterObjectAccessControlProjectTeam = 0;
+buildObjectAccessControlProjectTeam() {
+  var o = new api.ObjectAccessControlProjectTeam();
+  buildCounterObjectAccessControlProjectTeam++;
+  if (buildCounterObjectAccessControlProjectTeam < 3) {
+    o.projectNumber = "foo";
+    o.team = "foo";
+  }
+  buildCounterObjectAccessControlProjectTeam--;
+  return o;
+}
+
+checkObjectAccessControlProjectTeam(api.ObjectAccessControlProjectTeam o) {
+  buildCounterObjectAccessControlProjectTeam++;
+  if (buildCounterObjectAccessControlProjectTeam < 3) {
+    unittest.expect(o.projectNumber, unittest.equals('foo'));
+    unittest.expect(o.team, unittest.equals('foo'));
+  }
+  buildCounterObjectAccessControlProjectTeam--;
+}
+
+core.int buildCounterObjectAccessControl = 0;
+buildObjectAccessControl() {
+  var o = new api.ObjectAccessControl();
+  buildCounterObjectAccessControl++;
+  if (buildCounterObjectAccessControl < 3) {
+    o.bucket = "foo";
+    o.domain = "foo";
+    o.email = "foo";
+    o.entity = "foo";
+    o.entityId = "foo";
+    o.etag = "foo";
+    o.generation = "foo";
+    o.id = "foo";
+    o.kind = "foo";
+    o.object = "foo";
+    o.projectTeam = buildObjectAccessControlProjectTeam();
+    o.role = "foo";
+    o.selfLink = "foo";
+  }
+  buildCounterObjectAccessControl--;
+  return o;
+}
+
+checkObjectAccessControl(api.ObjectAccessControl o) {
+  buildCounterObjectAccessControl++;
+  if (buildCounterObjectAccessControl < 3) {
+    unittest.expect(o.bucket, unittest.equals('foo'));
+    unittest.expect(o.domain, unittest.equals('foo'));
+    unittest.expect(o.email, unittest.equals('foo'));
+    unittest.expect(o.entity, unittest.equals('foo'));
+    unittest.expect(o.entityId, unittest.equals('foo'));
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.generation, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.object, unittest.equals('foo'));
+    checkObjectAccessControlProjectTeam(o.projectTeam);
+    unittest.expect(o.role, unittest.equals('foo'));
+    unittest.expect(o.selfLink, unittest.equals('foo'));
+  }
+  buildCounterObjectAccessControl--;
+}
+
+buildUnnamed897() {
+  var o = new core.List<api.ObjectAccessControl>();
+  o.add(buildObjectAccessControl());
+  o.add(buildObjectAccessControl());
+  return o;
+}
+
+checkUnnamed897(core.List<api.ObjectAccessControl> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkObjectAccessControl(o[0]);
+  checkObjectAccessControl(o[1]);
+}
+
+core.int buildCounterObjectAccessControls = 0;
+buildObjectAccessControls() {
+  var o = new api.ObjectAccessControls();
+  buildCounterObjectAccessControls++;
+  if (buildCounterObjectAccessControls < 3) {
+    o.items = buildUnnamed897();
+    o.kind = "foo";
+  }
+  buildCounterObjectAccessControls--;
+  return o;
+}
+
+checkObjectAccessControls(api.ObjectAccessControls o) {
+  buildCounterObjectAccessControls++;
+  if (buildCounterObjectAccessControls < 3) {
+    checkUnnamed897(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterObjectAccessControls--;
+}
+
+buildUnnamed898() {
+  var o = new core.List<api.Object>();
+  o.add(buildObject());
+  o.add(buildObject());
+  return o;
+}
+
+checkUnnamed898(core.List<api.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkObject(o[0]);
+  checkObject(o[1]);
+}
+
+buildUnnamed899() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed899(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterObjects = 0;
+buildObjects() {
+  var o = new api.Objects();
+  buildCounterObjects++;
+  if (buildCounterObjects < 3) {
+    o.items = buildUnnamed898();
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.prefixes = buildUnnamed899();
+  }
+  buildCounterObjects--;
+  return o;
+}
+
+checkObjects(api.Objects o) {
+  buildCounterObjects++;
+  if (buildCounterObjects < 3) {
+    checkUnnamed898(o.items);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed899(o.prefixes);
+  }
+  buildCounterObjects--;
+}
+
+buildUnnamed900() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed900(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPolicyBindings = 0;
+buildPolicyBindings() {
+  var o = new api.PolicyBindings();
+  buildCounterPolicyBindings++;
+  if (buildCounterPolicyBindings < 3) {
+    o.condition = {
+      'list': [1, 2, 3],
+      'bool': true,
+      'string': 'foo'
+    };
+    o.members = buildUnnamed900();
+    o.role = "foo";
+  }
+  buildCounterPolicyBindings--;
+  return o;
+}
+
+checkPolicyBindings(api.PolicyBindings o) {
+  buildCounterPolicyBindings++;
+  if (buildCounterPolicyBindings < 3) {
+    var casted1 = (o.condition) as core.Map;
+    unittest.expect(casted1, unittest.hasLength(3));
+    unittest.expect(casted1["list"], unittest.equals([1, 2, 3]));
+    unittest.expect(casted1["bool"], unittest.equals(true));
+    unittest.expect(casted1["string"], unittest.equals('foo'));
+    checkUnnamed900(o.members);
+    unittest.expect(o.role, unittest.equals('foo'));
+  }
+  buildCounterPolicyBindings--;
+}
+
+buildUnnamed901() {
+  var o = new core.List<api.PolicyBindings>();
+  o.add(buildPolicyBindings());
+  o.add(buildPolicyBindings());
+  return o;
+}
+
+checkUnnamed901(core.List<api.PolicyBindings> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPolicyBindings(o[0]);
+  checkPolicyBindings(o[1]);
+}
+
+core.int buildCounterPolicy = 0;
+buildPolicy() {
+  var o = new api.Policy();
+  buildCounterPolicy++;
+  if (buildCounterPolicy < 3) {
+    o.bindings = buildUnnamed901();
+    o.etag = "foo";
+    o.kind = "foo";
+    o.resourceId = "foo";
+  }
+  buildCounterPolicy--;
+  return o;
+}
+
+checkPolicy(api.Policy o) {
+  buildCounterPolicy++;
+  if (buildCounterPolicy < 3) {
+    checkUnnamed901(o.bindings);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.resourceId, unittest.equals('foo'));
+  }
+  buildCounterPolicy--;
+}
+
+core.int buildCounterRewriteResponse = 0;
+buildRewriteResponse() {
+  var o = new api.RewriteResponse();
+  buildCounterRewriteResponse++;
+  if (buildCounterRewriteResponse < 3) {
+    o.done = true;
+    o.kind = "foo";
+    o.objectSize = "foo";
+    o.resource = buildObject();
+    o.rewriteToken = "foo";
+    o.totalBytesRewritten = "foo";
+  }
+  buildCounterRewriteResponse--;
+  return o;
+}
+
+checkRewriteResponse(api.RewriteResponse o) {
+  buildCounterRewriteResponse++;
+  if (buildCounterRewriteResponse < 3) {
+    unittest.expect(o.done, unittest.isTrue);
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.objectSize, unittest.equals('foo'));
+    checkObject(o.resource);
+    unittest.expect(o.rewriteToken, unittest.equals('foo'));
+    unittest.expect(o.totalBytesRewritten, unittest.equals('foo'));
+  }
+  buildCounterRewriteResponse--;
+}
+
+core.int buildCounterServiceAccount = 0;
+buildServiceAccount() {
+  var o = new api.ServiceAccount();
+  buildCounterServiceAccount++;
+  if (buildCounterServiceAccount < 3) {
+    o.emailAddress = "foo";
+    o.kind = "foo";
+  }
+  buildCounterServiceAccount--;
+  return o;
+}
+
+checkServiceAccount(api.ServiceAccount o) {
+  buildCounterServiceAccount++;
+  if (buildCounterServiceAccount < 3) {
+    unittest.expect(o.emailAddress, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterServiceAccount--;
+}
+
+buildUnnamed902() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed902(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterTestIamPermissionsResponse = 0;
+buildTestIamPermissionsResponse() {
+  var o = new api.TestIamPermissionsResponse();
+  buildCounterTestIamPermissionsResponse++;
+  if (buildCounterTestIamPermissionsResponse < 3) {
+    o.kind = "foo";
+    o.permissions = buildUnnamed902();
+  }
+  buildCounterTestIamPermissionsResponse--;
+  return o;
+}
+
+checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
+  buildCounterTestIamPermissionsResponse++;
+  if (buildCounterTestIamPermissionsResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed902(o.permissions);
+  }
+  buildCounterTestIamPermissionsResponse--;
+}
+
+buildUnnamed903() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed903(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed904() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed904(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-BucketBilling", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketBilling();
+      var od = new api.BucketBilling.fromJson(o.toJson());
+      checkBucketBilling(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketCors", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketCors();
+      var od = new api.BucketCors.fromJson(o.toJson());
+      checkBucketCors(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketEncryption", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketEncryption();
+      var od = new api.BucketEncryption.fromJson(o.toJson());
+      checkBucketEncryption(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketLifecycleRuleAction", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketLifecycleRuleAction();
+      var od = new api.BucketLifecycleRuleAction.fromJson(o.toJson());
+      checkBucketLifecycleRuleAction(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketLifecycleRuleCondition", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketLifecycleRuleCondition();
+      var od = new api.BucketLifecycleRuleCondition.fromJson(o.toJson());
+      checkBucketLifecycleRuleCondition(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketLifecycleRule", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketLifecycleRule();
+      var od = new api.BucketLifecycleRule.fromJson(o.toJson());
+      checkBucketLifecycleRule(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketLifecycle", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketLifecycle();
+      var od = new api.BucketLifecycle.fromJson(o.toJson());
+      checkBucketLifecycle(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketLogging", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketLogging();
+      var od = new api.BucketLogging.fromJson(o.toJson());
+      checkBucketLogging(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketOwner", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketOwner();
+      var od = new api.BucketOwner.fromJson(o.toJson());
+      checkBucketOwner(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketVersioning", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketVersioning();
+      var od = new api.BucketVersioning.fromJson(o.toJson());
+      checkBucketVersioning(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketWebsite", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketWebsite();
+      var od = new api.BucketWebsite.fromJson(o.toJson());
+      checkBucketWebsite(od);
+    });
+  });
+
+  unittest.group("obj-schema-Bucket", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucket();
+      var od = new api.Bucket.fromJson(o.toJson());
+      checkBucket(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketAccessControlProjectTeam", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketAccessControlProjectTeam();
+      var od = new api.BucketAccessControlProjectTeam.fromJson(o.toJson());
+      checkBucketAccessControlProjectTeam(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketAccessControl", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketAccessControl();
+      var od = new api.BucketAccessControl.fromJson(o.toJson());
+      checkBucketAccessControl(od);
+    });
+  });
+
+  unittest.group("obj-schema-BucketAccessControls", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBucketAccessControls();
+      var od = new api.BucketAccessControls.fromJson(o.toJson());
+      checkBucketAccessControls(od);
+    });
+  });
+
+  unittest.group("obj-schema-Buckets", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBuckets();
+      var od = new api.Buckets.fromJson(o.toJson());
+      checkBuckets(od);
+    });
+  });
+
+  unittest.group("obj-schema-Channel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildChannel();
+      var od = new api.Channel.fromJson(o.toJson());
+      checkChannel(od);
+    });
+  });
+
+  unittest.group("obj-schema-ComposeRequestSourceObjectsObjectPreconditions",
+      () {
+    unittest.test("to-json--from-json", () {
+      var o = buildComposeRequestSourceObjectsObjectPreconditions();
+      var od = new api.ComposeRequestSourceObjectsObjectPreconditions.fromJson(
+          o.toJson());
+      checkComposeRequestSourceObjectsObjectPreconditions(od);
+    });
+  });
+
+  unittest.group("obj-schema-ComposeRequestSourceObjects", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildComposeRequestSourceObjects();
+      var od = new api.ComposeRequestSourceObjects.fromJson(o.toJson());
+      checkComposeRequestSourceObjects(od);
+    });
+  });
+
+  unittest.group("obj-schema-ComposeRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildComposeRequest();
+      var od = new api.ComposeRequest.fromJson(o.toJson());
+      checkComposeRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Notification", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildNotification();
+      var od = new api.Notification.fromJson(o.toJson());
+      checkNotification(od);
+    });
+  });
+
+  unittest.group("obj-schema-Notifications", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildNotifications();
+      var od = new api.Notifications.fromJson(o.toJson());
+      checkNotifications(od);
+    });
+  });
+
+  unittest.group("obj-schema-ObjectCustomerEncryption", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildObjectCustomerEncryption();
+      var od = new api.ObjectCustomerEncryption.fromJson(o.toJson());
+      checkObjectCustomerEncryption(od);
+    });
+  });
+
+  unittest.group("obj-schema-ObjectOwner", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildObjectOwner();
+      var od = new api.ObjectOwner.fromJson(o.toJson());
+      checkObjectOwner(od);
+    });
+  });
+
+  unittest.group("obj-schema-Object", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildObject();
+      var od = new api.Object.fromJson(o.toJson());
+      checkObject(od);
+    });
+  });
+
+  unittest.group("obj-schema-ObjectAccessControlProjectTeam", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildObjectAccessControlProjectTeam();
+      var od = new api.ObjectAccessControlProjectTeam.fromJson(o.toJson());
+      checkObjectAccessControlProjectTeam(od);
+    });
+  });
+
+  unittest.group("obj-schema-ObjectAccessControl", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildObjectAccessControl();
+      var od = new api.ObjectAccessControl.fromJson(o.toJson());
+      checkObjectAccessControl(od);
+    });
+  });
+
+  unittest.group("obj-schema-ObjectAccessControls", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildObjectAccessControls();
+      var od = new api.ObjectAccessControls.fromJson(o.toJson());
+      checkObjectAccessControls(od);
+    });
+  });
+
+  unittest.group("obj-schema-Objects", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildObjects();
+      var od = new api.Objects.fromJson(o.toJson());
+      checkObjects(od);
+    });
+  });
+
+  unittest.group("obj-schema-PolicyBindings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPolicyBindings();
+      var od = new api.PolicyBindings.fromJson(o.toJson());
+      checkPolicyBindings(od);
+    });
+  });
+
+  unittest.group("obj-schema-Policy", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPolicy();
+      var od = new api.Policy.fromJson(o.toJson());
+      checkPolicy(od);
+    });
+  });
+
+  unittest.group("obj-schema-RewriteResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRewriteResponse();
+      var od = new api.RewriteResponse.fromJson(o.toJson());
+      checkRewriteResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ServiceAccount", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildServiceAccount();
+      var od = new api.ServiceAccount.fromJson(o.toJson());
+      checkServiceAccount(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestIamPermissionsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestIamPermissionsResponse();
+      var od = new api.TestIamPermissionsResponse.fromJson(o.toJson());
+      checkTestIamPermissionsResponse(od);
+    });
+  });
+
+  unittest.group("resource-BucketAccessControlsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.BucketAccessControlsResourceApi res =
+          new api.StorageApi(mock).bucketAccessControls;
+      var arg_bucket = "foo";
+      var arg_entity = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/acl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/acl/"));
+        pathOffset += 5;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_entity"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_bucket, arg_entity,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.BucketAccessControlsResourceApi res =
+          new api.StorageApi(mock).bucketAccessControls;
+      var arg_bucket = "foo";
+      var arg_entity = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/acl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/acl/"));
+        pathOffset += 5;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_entity"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBucketAccessControl());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_bucket, arg_entity,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BucketAccessControl response) {
+        checkBucketAccessControl(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.BucketAccessControlsResourceApi res =
+          new api.StorageApi(mock).bucketAccessControls;
+      var arg_request = buildBucketAccessControl();
+      var arg_bucket = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BucketAccessControl.fromJson(json);
+        checkBucketAccessControl(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/acl", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 4),
+            unittest.equals("/acl"));
+        pathOffset += 4;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBucketAccessControl());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_bucket,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BucketAccessControl response) {
+        checkBucketAccessControl(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BucketAccessControlsResourceApi res =
+          new api.StorageApi(mock).bucketAccessControls;
+      var arg_bucket = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/acl", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 4),
+            unittest.equals("/acl"));
+        pathOffset += 4;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBucketAccessControls());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_bucket, userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BucketAccessControls response) {
+        checkBucketAccessControls(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.BucketAccessControlsResourceApi res =
+          new api.StorageApi(mock).bucketAccessControls;
+      var arg_request = buildBucketAccessControl();
+      var arg_bucket = "foo";
+      var arg_entity = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BucketAccessControl.fromJson(json);
+        checkBucketAccessControl(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/acl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/acl/"));
+        pathOffset += 5;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_entity"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBucketAccessControl());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_bucket, arg_entity,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BucketAccessControl response) {
+        checkBucketAccessControl(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.BucketAccessControlsResourceApi res =
+          new api.StorageApi(mock).bucketAccessControls;
+      var arg_request = buildBucketAccessControl();
+      var arg_bucket = "foo";
+      var arg_entity = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BucketAccessControl.fromJson(json);
+        checkBucketAccessControl(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/acl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/acl/"));
+        pathOffset += 5;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_entity"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBucketAccessControl());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_bucket, arg_entity,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BucketAccessControl response) {
+        checkBucketAccessControl(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BucketsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.BucketsResourceApi res = new api.StorageApi(mock).buckets;
+      var arg_bucket = "foo";
+      var arg_ifMetagenerationMatch = "foo";
+      var arg_ifMetagenerationNotMatch = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["ifMetagenerationMatch"].first,
+            unittest.equals(arg_ifMetagenerationMatch));
+        unittest.expect(queryMap["ifMetagenerationNotMatch"].first,
+            unittest.equals(arg_ifMetagenerationNotMatch));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_bucket,
+              ifMetagenerationMatch: arg_ifMetagenerationMatch,
+              ifMetagenerationNotMatch: arg_ifMetagenerationNotMatch,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.BucketsResourceApi res = new api.StorageApi(mock).buckets;
+      var arg_bucket = "foo";
+      var arg_ifMetagenerationMatch = "foo";
+      var arg_ifMetagenerationNotMatch = "foo";
+      var arg_projection = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["ifMetagenerationMatch"].first,
+            unittest.equals(arg_ifMetagenerationMatch));
+        unittest.expect(queryMap["ifMetagenerationNotMatch"].first,
+            unittest.equals(arg_ifMetagenerationNotMatch));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBucket());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_bucket,
+              ifMetagenerationMatch: arg_ifMetagenerationMatch,
+              ifMetagenerationNotMatch: arg_ifMetagenerationNotMatch,
+              projection: arg_projection,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Bucket response) {
+        checkBucket(response);
+      })));
+    });
+
+    unittest.test("method--getIamPolicy", () {
+      var mock = new HttpServerMock();
+      api.BucketsResourceApi res = new api.StorageApi(mock).buckets;
+      var arg_bucket = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/iam", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 4),
+            unittest.equals("/iam"));
+        pathOffset += 4;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPolicy());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getIamPolicy(arg_bucket,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Policy response) {
+        checkPolicy(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.BucketsResourceApi res = new api.StorageApi(mock).buckets;
+      var arg_request = buildBucket();
+      var arg_project = "foo";
+      var arg_predefinedAcl = "foo";
+      var arg_predefinedDefaultObjectAcl = "foo";
+      var arg_projection = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Bucket.fromJson(json);
+        checkBucket(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("b"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["project"].first, unittest.equals(arg_project));
+        unittest.expect(queryMap["predefinedAcl"].first,
+            unittest.equals(arg_predefinedAcl));
+        unittest.expect(queryMap["predefinedDefaultObjectAcl"].first,
+            unittest.equals(arg_predefinedDefaultObjectAcl));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBucket());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_project,
+              predefinedAcl: arg_predefinedAcl,
+              predefinedDefaultObjectAcl: arg_predefinedDefaultObjectAcl,
+              projection: arg_projection,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Bucket response) {
+        checkBucket(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BucketsResourceApi res = new api.StorageApi(mock).buckets;
+      var arg_project = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_prefix = "foo";
+      var arg_projection = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("b"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["project"].first, unittest.equals(arg_project));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["prefix"].first, unittest.equals(arg_prefix));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBuckets());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_project,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              prefix: arg_prefix,
+              projection: arg_projection,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Buckets response) {
+        checkBuckets(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.BucketsResourceApi res = new api.StorageApi(mock).buckets;
+      var arg_request = buildBucket();
+      var arg_bucket = "foo";
+      var arg_ifMetagenerationMatch = "foo";
+      var arg_ifMetagenerationNotMatch = "foo";
+      var arg_predefinedAcl = "foo";
+      var arg_predefinedDefaultObjectAcl = "foo";
+      var arg_projection = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Bucket.fromJson(json);
+        checkBucket(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["ifMetagenerationMatch"].first,
+            unittest.equals(arg_ifMetagenerationMatch));
+        unittest.expect(queryMap["ifMetagenerationNotMatch"].first,
+            unittest.equals(arg_ifMetagenerationNotMatch));
+        unittest.expect(queryMap["predefinedAcl"].first,
+            unittest.equals(arg_predefinedAcl));
+        unittest.expect(queryMap["predefinedDefaultObjectAcl"].first,
+            unittest.equals(arg_predefinedDefaultObjectAcl));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBucket());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_bucket,
+              ifMetagenerationMatch: arg_ifMetagenerationMatch,
+              ifMetagenerationNotMatch: arg_ifMetagenerationNotMatch,
+              predefinedAcl: arg_predefinedAcl,
+              predefinedDefaultObjectAcl: arg_predefinedDefaultObjectAcl,
+              projection: arg_projection,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Bucket response) {
+        checkBucket(response);
+      })));
+    });
+
+    unittest.test("method--setIamPolicy", () {
+      var mock = new HttpServerMock();
+      api.BucketsResourceApi res = new api.StorageApi(mock).buckets;
+      var arg_request = buildPolicy();
+      var arg_bucket = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Policy.fromJson(json);
+        checkPolicy(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/iam", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 4),
+            unittest.equals("/iam"));
+        pathOffset += 4;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPolicy());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .setIamPolicy(arg_request, arg_bucket,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Policy response) {
+        checkPolicy(response);
+      })));
+    });
+
+    unittest.test("method--testIamPermissions", () {
+      var mock = new HttpServerMock();
+      api.BucketsResourceApi res = new api.StorageApi(mock).buckets;
+      var arg_bucket = "foo";
+      var arg_permissions = buildUnnamed903();
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/iam/testPermissions", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/iam/testPermissions"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["permissions"], unittest.equals(arg_permissions));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .testIamPermissions(arg_bucket, arg_permissions,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+        checkTestIamPermissionsResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.BucketsResourceApi res = new api.StorageApi(mock).buckets;
+      var arg_request = buildBucket();
+      var arg_bucket = "foo";
+      var arg_ifMetagenerationMatch = "foo";
+      var arg_ifMetagenerationNotMatch = "foo";
+      var arg_predefinedAcl = "foo";
+      var arg_predefinedDefaultObjectAcl = "foo";
+      var arg_projection = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Bucket.fromJson(json);
+        checkBucket(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["ifMetagenerationMatch"].first,
+            unittest.equals(arg_ifMetagenerationMatch));
+        unittest.expect(queryMap["ifMetagenerationNotMatch"].first,
+            unittest.equals(arg_ifMetagenerationNotMatch));
+        unittest.expect(queryMap["predefinedAcl"].first,
+            unittest.equals(arg_predefinedAcl));
+        unittest.expect(queryMap["predefinedDefaultObjectAcl"].first,
+            unittest.equals(arg_predefinedDefaultObjectAcl));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBucket());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_bucket,
+              ifMetagenerationMatch: arg_ifMetagenerationMatch,
+              ifMetagenerationNotMatch: arg_ifMetagenerationNotMatch,
+              predefinedAcl: arg_predefinedAcl,
+              predefinedDefaultObjectAcl: arg_predefinedDefaultObjectAcl,
+              projection: arg_projection,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Bucket response) {
+        checkBucket(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ChannelsResourceApi", () {
+    unittest.test("method--stop", () {
+      var mock = new HttpServerMock();
+      api.ChannelsResourceApi res = new api.StorageApi(mock).channels;
+      var arg_request = buildChannel();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Channel.fromJson(json);
+        checkChannel(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("channels/stop"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .stop(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+  });
+
+  unittest.group("resource-DefaultObjectAccessControlsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.DefaultObjectAccessControlsResourceApi res =
+          new api.StorageApi(mock).defaultObjectAccessControls;
+      var arg_bucket = "foo";
+      var arg_entity = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/defaultObjectAcl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("/defaultObjectAcl/"));
+        pathOffset += 18;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_entity"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_bucket, arg_entity,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.DefaultObjectAccessControlsResourceApi res =
+          new api.StorageApi(mock).defaultObjectAccessControls;
+      var arg_bucket = "foo";
+      var arg_entity = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/defaultObjectAcl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("/defaultObjectAcl/"));
+        pathOffset += 18;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_entity"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObjectAccessControl());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_bucket, arg_entity,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ObjectAccessControl response) {
+        checkObjectAccessControl(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.DefaultObjectAccessControlsResourceApi res =
+          new api.StorageApi(mock).defaultObjectAccessControls;
+      var arg_request = buildObjectAccessControl();
+      var arg_bucket = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ObjectAccessControl.fromJson(json);
+        checkObjectAccessControl(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/defaultObjectAcl", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("/defaultObjectAcl"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObjectAccessControl());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_bucket,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ObjectAccessControl response) {
+        checkObjectAccessControl(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.DefaultObjectAccessControlsResourceApi res =
+          new api.StorageApi(mock).defaultObjectAccessControls;
+      var arg_bucket = "foo";
+      var arg_ifMetagenerationMatch = "foo";
+      var arg_ifMetagenerationNotMatch = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/defaultObjectAcl", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 17),
+            unittest.equals("/defaultObjectAcl"));
+        pathOffset += 17;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["ifMetagenerationMatch"].first,
+            unittest.equals(arg_ifMetagenerationMatch));
+        unittest.expect(queryMap["ifMetagenerationNotMatch"].first,
+            unittest.equals(arg_ifMetagenerationNotMatch));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObjectAccessControls());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_bucket,
+              ifMetagenerationMatch: arg_ifMetagenerationMatch,
+              ifMetagenerationNotMatch: arg_ifMetagenerationNotMatch,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ObjectAccessControls response) {
+        checkObjectAccessControls(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.DefaultObjectAccessControlsResourceApi res =
+          new api.StorageApi(mock).defaultObjectAccessControls;
+      var arg_request = buildObjectAccessControl();
+      var arg_bucket = "foo";
+      var arg_entity = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ObjectAccessControl.fromJson(json);
+        checkObjectAccessControl(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/defaultObjectAcl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("/defaultObjectAcl/"));
+        pathOffset += 18;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_entity"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObjectAccessControl());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_bucket, arg_entity,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ObjectAccessControl response) {
+        checkObjectAccessControl(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.DefaultObjectAccessControlsResourceApi res =
+          new api.StorageApi(mock).defaultObjectAccessControls;
+      var arg_request = buildObjectAccessControl();
+      var arg_bucket = "foo";
+      var arg_entity = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ObjectAccessControl.fromJson(json);
+        checkObjectAccessControl(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/defaultObjectAcl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("/defaultObjectAcl/"));
+        pathOffset += 18;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_entity"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObjectAccessControl());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_bucket, arg_entity,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ObjectAccessControl response) {
+        checkObjectAccessControl(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-NotificationsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.NotificationsResourceApi res = new api.StorageApi(mock).notifications;
+      var arg_bucket = "foo";
+      var arg_notification = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/notificationConfigs/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/notificationConfigs/"));
+        pathOffset += 21;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_notification"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_bucket, arg_notification,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.NotificationsResourceApi res = new api.StorageApi(mock).notifications;
+      var arg_bucket = "foo";
+      var arg_notification = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/notificationConfigs/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("/notificationConfigs/"));
+        pathOffset += 21;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_notification"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildNotification());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_bucket, arg_notification,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Notification response) {
+        checkNotification(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.NotificationsResourceApi res = new api.StorageApi(mock).notifications;
+      var arg_request = buildNotification();
+      var arg_bucket = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Notification.fromJson(json);
+        checkNotification(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/notificationConfigs", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/notificationConfigs"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildNotification());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_bucket,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Notification response) {
+        checkNotification(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.NotificationsResourceApi res = new api.StorageApi(mock).notifications;
+      var arg_bucket = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/notificationConfigs", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/notificationConfigs"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildNotifications());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_bucket, userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Notifications response) {
+        checkNotifications(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ObjectAccessControlsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ObjectAccessControlsResourceApi res =
+          new api.StorageApi(mock).objectAccessControls;
+      var arg_bucket = "foo";
+      var arg_object = "foo";
+      var arg_entity = "foo";
+      var arg_generation = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        index = path.indexOf("/acl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_object"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/acl/"));
+        pathOffset += 5;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_entity"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["generation"].first, unittest.equals(arg_generation));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_bucket, arg_object, arg_entity,
+              generation: arg_generation,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ObjectAccessControlsResourceApi res =
+          new api.StorageApi(mock).objectAccessControls;
+      var arg_bucket = "foo";
+      var arg_object = "foo";
+      var arg_entity = "foo";
+      var arg_generation = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        index = path.indexOf("/acl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_object"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/acl/"));
+        pathOffset += 5;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_entity"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["generation"].first, unittest.equals(arg_generation));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObjectAccessControl());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_bucket, arg_object, arg_entity,
+              generation: arg_generation,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ObjectAccessControl response) {
+        checkObjectAccessControl(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      var mock = new HttpServerMock();
+      api.ObjectAccessControlsResourceApi res =
+          new api.StorageApi(mock).objectAccessControls;
+      var arg_request = buildObjectAccessControl();
+      var arg_bucket = "foo";
+      var arg_object = "foo";
+      var arg_generation = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ObjectAccessControl.fromJson(json);
+        checkObjectAccessControl(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        index = path.indexOf("/acl", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_object"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 4),
+            unittest.equals("/acl"));
+        pathOffset += 4;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["generation"].first, unittest.equals(arg_generation));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObjectAccessControl());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_bucket, arg_object,
+              generation: arg_generation,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ObjectAccessControl response) {
+        checkObjectAccessControl(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ObjectAccessControlsResourceApi res =
+          new api.StorageApi(mock).objectAccessControls;
+      var arg_bucket = "foo";
+      var arg_object = "foo";
+      var arg_generation = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        index = path.indexOf("/acl", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_object"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 4),
+            unittest.equals("/acl"));
+        pathOffset += 4;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["generation"].first, unittest.equals(arg_generation));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObjectAccessControls());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_bucket, arg_object,
+              generation: arg_generation,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ObjectAccessControls response) {
+        checkObjectAccessControls(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ObjectAccessControlsResourceApi res =
+          new api.StorageApi(mock).objectAccessControls;
+      var arg_request = buildObjectAccessControl();
+      var arg_bucket = "foo";
+      var arg_object = "foo";
+      var arg_entity = "foo";
+      var arg_generation = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ObjectAccessControl.fromJson(json);
+        checkObjectAccessControl(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        index = path.indexOf("/acl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_object"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/acl/"));
+        pathOffset += 5;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_entity"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["generation"].first, unittest.equals(arg_generation));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObjectAccessControl());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_bucket, arg_object, arg_entity,
+              generation: arg_generation,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ObjectAccessControl response) {
+        checkObjectAccessControl(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.ObjectAccessControlsResourceApi res =
+          new api.StorageApi(mock).objectAccessControls;
+      var arg_request = buildObjectAccessControl();
+      var arg_bucket = "foo";
+      var arg_object = "foo";
+      var arg_entity = "foo";
+      var arg_generation = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ObjectAccessControl.fromJson(json);
+        checkObjectAccessControl(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        index = path.indexOf("/acl/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_object"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/acl/"));
+        pathOffset += 5;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_entity"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["generation"].first, unittest.equals(arg_generation));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObjectAccessControl());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_bucket, arg_object, arg_entity,
+              generation: arg_generation,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ObjectAccessControl response) {
+        checkObjectAccessControl(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ObjectsResourceApi", () {
+    unittest.test("method--compose", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.ObjectsResourceApi res = new api.StorageApi(mock).objects;
+      var arg_request = buildComposeRequest();
+      var arg_destinationBucket = "foo";
+      var arg_destinationObject = "foo";
+      var arg_destinationPredefinedAcl = "foo";
+      var arg_ifGenerationMatch = "foo";
+      var arg_ifMetagenerationMatch = "foo";
+      var arg_kmsKeyName = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ComposeRequest.fromJson(json);
+        checkComposeRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_destinationBucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        index = path.indexOf("/compose", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_destinationObject"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/compose"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["destinationPredefinedAcl"].first,
+            unittest.equals(arg_destinationPredefinedAcl));
+        unittest.expect(queryMap["ifGenerationMatch"].first,
+            unittest.equals(arg_ifGenerationMatch));
+        unittest.expect(queryMap["ifMetagenerationMatch"].first,
+            unittest.equals(arg_ifMetagenerationMatch));
+        unittest.expect(
+            queryMap["kmsKeyName"].first, unittest.equals(arg_kmsKeyName));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObject());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .compose(arg_request, arg_destinationBucket, arg_destinationObject,
+              destinationPredefinedAcl: arg_destinationPredefinedAcl,
+              ifGenerationMatch: arg_ifGenerationMatch,
+              ifMetagenerationMatch: arg_ifMetagenerationMatch,
+              kmsKeyName: arg_kmsKeyName,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Object response) {
+        checkObject(response);
+      })));
+    });
+
+    unittest.test("method--copy", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.ObjectsResourceApi res = new api.StorageApi(mock).objects;
+      var arg_request = buildObject();
+      var arg_sourceBucket = "foo";
+      var arg_sourceObject = "foo";
+      var arg_destinationBucket = "foo";
+      var arg_destinationObject = "foo";
+      var arg_destinationPredefinedAcl = "foo";
+      var arg_ifGenerationMatch = "foo";
+      var arg_ifGenerationNotMatch = "foo";
+      var arg_ifMetagenerationMatch = "foo";
+      var arg_ifMetagenerationNotMatch = "foo";
+      var arg_ifSourceGenerationMatch = "foo";
+      var arg_ifSourceGenerationNotMatch = "foo";
+      var arg_ifSourceMetagenerationMatch = "foo";
+      var arg_ifSourceMetagenerationNotMatch = "foo";
+      var arg_projection = "foo";
+      var arg_sourceGeneration = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Object.fromJson(json);
+        checkObject(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_sourceBucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        index = path.indexOf("/copyTo/b/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_sourceObject"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/copyTo/b/"));
+        pathOffset += 10;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_destinationBucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_destinationObject"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["destinationPredefinedAcl"].first,
+            unittest.equals(arg_destinationPredefinedAcl));
+        unittest.expect(queryMap["ifGenerationMatch"].first,
+            unittest.equals(arg_ifGenerationMatch));
+        unittest.expect(queryMap["ifGenerationNotMatch"].first,
+            unittest.equals(arg_ifGenerationNotMatch));
+        unittest.expect(queryMap["ifMetagenerationMatch"].first,
+            unittest.equals(arg_ifMetagenerationMatch));
+        unittest.expect(queryMap["ifMetagenerationNotMatch"].first,
+            unittest.equals(arg_ifMetagenerationNotMatch));
+        unittest.expect(queryMap["ifSourceGenerationMatch"].first,
+            unittest.equals(arg_ifSourceGenerationMatch));
+        unittest.expect(queryMap["ifSourceGenerationNotMatch"].first,
+            unittest.equals(arg_ifSourceGenerationNotMatch));
+        unittest.expect(queryMap["ifSourceMetagenerationMatch"].first,
+            unittest.equals(arg_ifSourceMetagenerationMatch));
+        unittest.expect(queryMap["ifSourceMetagenerationNotMatch"].first,
+            unittest.equals(arg_ifSourceMetagenerationNotMatch));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(queryMap["sourceGeneration"].first,
+            unittest.equals(arg_sourceGeneration));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObject());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .copy(arg_request, arg_sourceBucket, arg_sourceObject,
+              arg_destinationBucket, arg_destinationObject,
+              destinationPredefinedAcl: arg_destinationPredefinedAcl,
+              ifGenerationMatch: arg_ifGenerationMatch,
+              ifGenerationNotMatch: arg_ifGenerationNotMatch,
+              ifMetagenerationMatch: arg_ifMetagenerationMatch,
+              ifMetagenerationNotMatch: arg_ifMetagenerationNotMatch,
+              ifSourceGenerationMatch: arg_ifSourceGenerationMatch,
+              ifSourceGenerationNotMatch: arg_ifSourceGenerationNotMatch,
+              ifSourceMetagenerationMatch: arg_ifSourceMetagenerationMatch,
+              ifSourceMetagenerationNotMatch:
+                  arg_ifSourceMetagenerationNotMatch,
+              projection: arg_projection,
+              sourceGeneration: arg_sourceGeneration,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Object response) {
+        checkObject(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ObjectsResourceApi res = new api.StorageApi(mock).objects;
+      var arg_bucket = "foo";
+      var arg_object = "foo";
+      var arg_generation = "foo";
+      var arg_ifGenerationMatch = "foo";
+      var arg_ifGenerationNotMatch = "foo";
+      var arg_ifMetagenerationMatch = "foo";
+      var arg_ifMetagenerationNotMatch = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_object"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["generation"].first, unittest.equals(arg_generation));
+        unittest.expect(queryMap["ifGenerationMatch"].first,
+            unittest.equals(arg_ifGenerationMatch));
+        unittest.expect(queryMap["ifGenerationNotMatch"].first,
+            unittest.equals(arg_ifGenerationNotMatch));
+        unittest.expect(queryMap["ifMetagenerationMatch"].first,
+            unittest.equals(arg_ifMetagenerationMatch));
+        unittest.expect(queryMap["ifMetagenerationNotMatch"].first,
+            unittest.equals(arg_ifMetagenerationNotMatch));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_bucket, arg_object,
+              generation: arg_generation,
+              ifGenerationMatch: arg_ifGenerationMatch,
+              ifGenerationNotMatch: arg_ifGenerationNotMatch,
+              ifMetagenerationMatch: arg_ifMetagenerationMatch,
+              ifMetagenerationNotMatch: arg_ifMetagenerationNotMatch,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.ObjectsResourceApi res = new api.StorageApi(mock).objects;
+      var arg_bucket = "foo";
+      var arg_object = "foo";
+      var arg_generation = "foo";
+      var arg_ifGenerationMatch = "foo";
+      var arg_ifGenerationNotMatch = "foo";
+      var arg_ifMetagenerationMatch = "foo";
+      var arg_ifMetagenerationNotMatch = "foo";
+      var arg_projection = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_object"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["generation"].first, unittest.equals(arg_generation));
+        unittest.expect(queryMap["ifGenerationMatch"].first,
+            unittest.equals(arg_ifGenerationMatch));
+        unittest.expect(queryMap["ifGenerationNotMatch"].first,
+            unittest.equals(arg_ifGenerationNotMatch));
+        unittest.expect(queryMap["ifMetagenerationMatch"].first,
+            unittest.equals(arg_ifMetagenerationMatch));
+        unittest.expect(queryMap["ifMetagenerationNotMatch"].first,
+            unittest.equals(arg_ifMetagenerationNotMatch));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObject());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_bucket, arg_object,
+              generation: arg_generation,
+              ifGenerationMatch: arg_ifGenerationMatch,
+              ifGenerationNotMatch: arg_ifGenerationNotMatch,
+              ifMetagenerationMatch: arg_ifMetagenerationMatch,
+              ifMetagenerationNotMatch: arg_ifMetagenerationNotMatch,
+              projection: arg_projection,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Object response) {
+        checkObject(response);
+      })));
+    });
+
+    unittest.test("method--getIamPolicy", () {
+      var mock = new HttpServerMock();
+      api.ObjectsResourceApi res = new api.StorageApi(mock).objects;
+      var arg_bucket = "foo";
+      var arg_object = "foo";
+      var arg_generation = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        index = path.indexOf("/iam", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_object"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 4),
+            unittest.equals("/iam"));
+        pathOffset += 4;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["generation"].first, unittest.equals(arg_generation));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPolicy());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getIamPolicy(arg_bucket, arg_object,
+              generation: arg_generation,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Policy response) {
+        checkPolicy(response);
+      })));
+    });
+
+    unittest.test("method--insert", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.ObjectsResourceApi res = new api.StorageApi(mock).objects;
+      var arg_request = buildObject();
+      var arg_bucket = "foo";
+      var arg_contentEncoding = "foo";
+      var arg_ifGenerationMatch = "foo";
+      var arg_ifGenerationNotMatch = "foo";
+      var arg_ifMetagenerationMatch = "foo";
+      var arg_ifMetagenerationNotMatch = "foo";
+      var arg_kmsKeyName = "foo";
+      var arg_name = "foo";
+      var arg_predefinedAcl = "foo";
+      var arg_projection = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Object.fromJson(json);
+        checkObject(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("/o"));
+        pathOffset += 2;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["contentEncoding"].first,
+            unittest.equals(arg_contentEncoding));
+        unittest.expect(queryMap["ifGenerationMatch"].first,
+            unittest.equals(arg_ifGenerationMatch));
+        unittest.expect(queryMap["ifGenerationNotMatch"].first,
+            unittest.equals(arg_ifGenerationNotMatch));
+        unittest.expect(queryMap["ifMetagenerationMatch"].first,
+            unittest.equals(arg_ifMetagenerationMatch));
+        unittest.expect(queryMap["ifMetagenerationNotMatch"].first,
+            unittest.equals(arg_ifMetagenerationNotMatch));
+        unittest.expect(
+            queryMap["kmsKeyName"].first, unittest.equals(arg_kmsKeyName));
+        unittest.expect(queryMap["name"].first, unittest.equals(arg_name));
+        unittest.expect(queryMap["predefinedAcl"].first,
+            unittest.equals(arg_predefinedAcl));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObject());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .insert(arg_request, arg_bucket,
+              contentEncoding: arg_contentEncoding,
+              ifGenerationMatch: arg_ifGenerationMatch,
+              ifGenerationNotMatch: arg_ifGenerationNotMatch,
+              ifMetagenerationMatch: arg_ifMetagenerationMatch,
+              ifMetagenerationNotMatch: arg_ifMetagenerationNotMatch,
+              kmsKeyName: arg_kmsKeyName,
+              name: arg_name,
+              predefinedAcl: arg_predefinedAcl,
+              projection: arg_projection,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Object response) {
+        checkObject(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ObjectsResourceApi res = new api.StorageApi(mock).objects;
+      var arg_bucket = "foo";
+      var arg_delimiter = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_prefix = "foo";
+      var arg_projection = "foo";
+      var arg_userProject = "foo";
+      var arg_versions = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("/o"));
+        pathOffset += 2;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["delimiter"].first, unittest.equals(arg_delimiter));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["prefix"].first, unittest.equals(arg_prefix));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(
+            queryMap["versions"].first, unittest.equals("$arg_versions"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObjects());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_bucket,
+              delimiter: arg_delimiter,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              prefix: arg_prefix,
+              projection: arg_projection,
+              userProject: arg_userProject,
+              versions: arg_versions,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Objects response) {
+        checkObjects(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ObjectsResourceApi res = new api.StorageApi(mock).objects;
+      var arg_request = buildObject();
+      var arg_bucket = "foo";
+      var arg_object = "foo";
+      var arg_generation = "foo";
+      var arg_ifGenerationMatch = "foo";
+      var arg_ifGenerationNotMatch = "foo";
+      var arg_ifMetagenerationMatch = "foo";
+      var arg_ifMetagenerationNotMatch = "foo";
+      var arg_predefinedAcl = "foo";
+      var arg_projection = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Object.fromJson(json);
+        checkObject(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_object"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["generation"].first, unittest.equals(arg_generation));
+        unittest.expect(queryMap["ifGenerationMatch"].first,
+            unittest.equals(arg_ifGenerationMatch));
+        unittest.expect(queryMap["ifGenerationNotMatch"].first,
+            unittest.equals(arg_ifGenerationNotMatch));
+        unittest.expect(queryMap["ifMetagenerationMatch"].first,
+            unittest.equals(arg_ifMetagenerationMatch));
+        unittest.expect(queryMap["ifMetagenerationNotMatch"].first,
+            unittest.equals(arg_ifMetagenerationNotMatch));
+        unittest.expect(queryMap["predefinedAcl"].first,
+            unittest.equals(arg_predefinedAcl));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObject());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_bucket, arg_object,
+              generation: arg_generation,
+              ifGenerationMatch: arg_ifGenerationMatch,
+              ifGenerationNotMatch: arg_ifGenerationNotMatch,
+              ifMetagenerationMatch: arg_ifMetagenerationMatch,
+              ifMetagenerationNotMatch: arg_ifMetagenerationNotMatch,
+              predefinedAcl: arg_predefinedAcl,
+              projection: arg_projection,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Object response) {
+        checkObject(response);
+      })));
+    });
+
+    unittest.test("method--rewrite", () {
+      var mock = new HttpServerMock();
+      api.ObjectsResourceApi res = new api.StorageApi(mock).objects;
+      var arg_request = buildObject();
+      var arg_sourceBucket = "foo";
+      var arg_sourceObject = "foo";
+      var arg_destinationBucket = "foo";
+      var arg_destinationObject = "foo";
+      var arg_destinationKmsKeyName = "foo";
+      var arg_destinationPredefinedAcl = "foo";
+      var arg_ifGenerationMatch = "foo";
+      var arg_ifGenerationNotMatch = "foo";
+      var arg_ifMetagenerationMatch = "foo";
+      var arg_ifMetagenerationNotMatch = "foo";
+      var arg_ifSourceGenerationMatch = "foo";
+      var arg_ifSourceGenerationNotMatch = "foo";
+      var arg_ifSourceMetagenerationMatch = "foo";
+      var arg_ifSourceMetagenerationNotMatch = "foo";
+      var arg_maxBytesRewrittenPerCall = "foo";
+      var arg_projection = "foo";
+      var arg_rewriteToken = "foo";
+      var arg_sourceGeneration = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Object.fromJson(json);
+        checkObject(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_sourceBucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        index = path.indexOf("/rewriteTo/b/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_sourceObject"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/rewriteTo/b/"));
+        pathOffset += 13;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_destinationBucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_destinationObject"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["destinationKmsKeyName"].first,
+            unittest.equals(arg_destinationKmsKeyName));
+        unittest.expect(queryMap["destinationPredefinedAcl"].first,
+            unittest.equals(arg_destinationPredefinedAcl));
+        unittest.expect(queryMap["ifGenerationMatch"].first,
+            unittest.equals(arg_ifGenerationMatch));
+        unittest.expect(queryMap["ifGenerationNotMatch"].first,
+            unittest.equals(arg_ifGenerationNotMatch));
+        unittest.expect(queryMap["ifMetagenerationMatch"].first,
+            unittest.equals(arg_ifMetagenerationMatch));
+        unittest.expect(queryMap["ifMetagenerationNotMatch"].first,
+            unittest.equals(arg_ifMetagenerationNotMatch));
+        unittest.expect(queryMap["ifSourceGenerationMatch"].first,
+            unittest.equals(arg_ifSourceGenerationMatch));
+        unittest.expect(queryMap["ifSourceGenerationNotMatch"].first,
+            unittest.equals(arg_ifSourceGenerationNotMatch));
+        unittest.expect(queryMap["ifSourceMetagenerationMatch"].first,
+            unittest.equals(arg_ifSourceMetagenerationMatch));
+        unittest.expect(queryMap["ifSourceMetagenerationNotMatch"].first,
+            unittest.equals(arg_ifSourceMetagenerationNotMatch));
+        unittest.expect(queryMap["maxBytesRewrittenPerCall"].first,
+            unittest.equals(arg_maxBytesRewrittenPerCall));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(
+            queryMap["rewriteToken"].first, unittest.equals(arg_rewriteToken));
+        unittest.expect(queryMap["sourceGeneration"].first,
+            unittest.equals(arg_sourceGeneration));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRewriteResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .rewrite(arg_request, arg_sourceBucket, arg_sourceObject,
+              arg_destinationBucket, arg_destinationObject,
+              destinationKmsKeyName: arg_destinationKmsKeyName,
+              destinationPredefinedAcl: arg_destinationPredefinedAcl,
+              ifGenerationMatch: arg_ifGenerationMatch,
+              ifGenerationNotMatch: arg_ifGenerationNotMatch,
+              ifMetagenerationMatch: arg_ifMetagenerationMatch,
+              ifMetagenerationNotMatch: arg_ifMetagenerationNotMatch,
+              ifSourceGenerationMatch: arg_ifSourceGenerationMatch,
+              ifSourceGenerationNotMatch: arg_ifSourceGenerationNotMatch,
+              ifSourceMetagenerationMatch: arg_ifSourceMetagenerationMatch,
+              ifSourceMetagenerationNotMatch:
+                  arg_ifSourceMetagenerationNotMatch,
+              maxBytesRewrittenPerCall: arg_maxBytesRewrittenPerCall,
+              projection: arg_projection,
+              rewriteToken: arg_rewriteToken,
+              sourceGeneration: arg_sourceGeneration,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RewriteResponse response) {
+        checkRewriteResponse(response);
+      })));
+    });
+
+    unittest.test("method--setIamPolicy", () {
+      var mock = new HttpServerMock();
+      api.ObjectsResourceApi res = new api.StorageApi(mock).objects;
+      var arg_request = buildPolicy();
+      var arg_bucket = "foo";
+      var arg_object = "foo";
+      var arg_generation = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Policy.fromJson(json);
+        checkPolicy(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        index = path.indexOf("/iam", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_object"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 4),
+            unittest.equals("/iam"));
+        pathOffset += 4;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["generation"].first, unittest.equals(arg_generation));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPolicy());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .setIamPolicy(arg_request, arg_bucket, arg_object,
+              generation: arg_generation,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Policy response) {
+        checkPolicy(response);
+      })));
+    });
+
+    unittest.test("method--testIamPermissions", () {
+      var mock = new HttpServerMock();
+      api.ObjectsResourceApi res = new api.StorageApi(mock).objects;
+      var arg_bucket = "foo";
+      var arg_object = "foo";
+      var arg_permissions = buildUnnamed904();
+      var arg_generation = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        index = path.indexOf("/iam/testPermissions", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_object"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("/iam/testPermissions"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["permissions"], unittest.equals(arg_permissions));
+        unittest.expect(
+            queryMap["generation"].first, unittest.equals(arg_generation));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .testIamPermissions(arg_bucket, arg_object, arg_permissions,
+              generation: arg_generation,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+        checkTestIamPermissionsResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      // TODO: Implement tests for media upload;
+      // TODO: Implement tests for media download;
+
+      var mock = new HttpServerMock();
+      api.ObjectsResourceApi res = new api.StorageApi(mock).objects;
+      var arg_request = buildObject();
+      var arg_bucket = "foo";
+      var arg_object = "foo";
+      var arg_generation = "foo";
+      var arg_ifGenerationMatch = "foo";
+      var arg_ifGenerationNotMatch = "foo";
+      var arg_ifMetagenerationMatch = "foo";
+      var arg_ifMetagenerationNotMatch = "foo";
+      var arg_predefinedAcl = "foo";
+      var arg_projection = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Object.fromJson(json);
+        checkObject(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 3), unittest.equals("/o/"));
+        pathOffset += 3;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_object"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["generation"].first, unittest.equals(arg_generation));
+        unittest.expect(queryMap["ifGenerationMatch"].first,
+            unittest.equals(arg_ifGenerationMatch));
+        unittest.expect(queryMap["ifGenerationNotMatch"].first,
+            unittest.equals(arg_ifGenerationNotMatch));
+        unittest.expect(queryMap["ifMetagenerationMatch"].first,
+            unittest.equals(arg_ifMetagenerationMatch));
+        unittest.expect(queryMap["ifMetagenerationNotMatch"].first,
+            unittest.equals(arg_ifMetagenerationNotMatch));
+        unittest.expect(queryMap["predefinedAcl"].first,
+            unittest.equals(arg_predefinedAcl));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildObject());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_bucket, arg_object,
+              generation: arg_generation,
+              ifGenerationMatch: arg_ifGenerationMatch,
+              ifGenerationNotMatch: arg_ifGenerationNotMatch,
+              ifMetagenerationMatch: arg_ifMetagenerationMatch,
+              ifMetagenerationNotMatch: arg_ifMetagenerationNotMatch,
+              predefinedAcl: arg_predefinedAcl,
+              projection: arg_projection,
+              userProject: arg_userProject,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Object response) {
+        checkObject(response);
+      })));
+    });
+
+    unittest.test("method--watchAll", () {
+      var mock = new HttpServerMock();
+      api.ObjectsResourceApi res = new api.StorageApi(mock).objects;
+      var arg_request = buildChannel();
+      var arg_bucket = "foo";
+      var arg_delimiter = "foo";
+      var arg_maxResults = 42;
+      var arg_pageToken = "foo";
+      var arg_prefix = "foo";
+      var arg_projection = "foo";
+      var arg_userProject = "foo";
+      var arg_versions = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Channel.fromJson(json);
+        checkChannel(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("b/"));
+        pathOffset += 2;
+        index = path.indexOf("/o/watch", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_bucket"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/o/watch"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["delimiter"].first, unittest.equals(arg_delimiter));
+        unittest.expect(core.int.parse(queryMap["maxResults"].first),
+            unittest.equals(arg_maxResults));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["prefix"].first, unittest.equals(arg_prefix));
+        unittest.expect(
+            queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(
+            queryMap["versions"].first, unittest.equals("$arg_versions"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildChannel());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .watchAll(arg_request, arg_bucket,
+              delimiter: arg_delimiter,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              prefix: arg_prefix,
+              projection: arg_projection,
+              userProject: arg_userProject,
+              versions: arg_versions,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Channel response) {
+        checkChannel(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsServiceAccountResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsServiceAccountResourceApi res =
+          new api.StorageApi(mock).projects.serviceAccount;
+      var arg_projectId = "foo";
+      var arg_userProject = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("storage/v1/"));
+        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/serviceAccount", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 15),
+            unittest.equals("/serviceAccount"));
+        pathOffset += 15;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["userProject"].first, unittest.equals(arg_userProject));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildServiceAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_projectId,
+              userProject: arg_userProject, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ServiceAccount response) {
+        checkServiceAccount(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/storagetransfer/v1_test.dart b/generated/googleapis/test/storagetransfer/v1_test.dart
index c4b5ca7..33dd95b 100644
--- a/generated/googleapis/test/storagetransfer/v1_test.dart
+++ b/generated/googleapis/test/storagetransfer/v1_test.dart
@@ -130,14 +130,14 @@
   buildCounterEmpty--;
 }
 
-buildUnnamed1448() {
+buildUnnamed1435() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1448(core.List<core.String> o) {
+checkUnnamed1435(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -148,7 +148,7 @@
   var o = new api.ErrorLogEntry();
   buildCounterErrorLogEntry++;
   if (buildCounterErrorLogEntry < 3) {
-    o.errorDetails = buildUnnamed1448();
+    o.errorDetails = buildUnnamed1435();
     o.url = "foo";
   }
   buildCounterErrorLogEntry--;
@@ -158,20 +158,20 @@
 checkErrorLogEntry(api.ErrorLogEntry o) {
   buildCounterErrorLogEntry++;
   if (buildCounterErrorLogEntry < 3) {
-    checkUnnamed1448(o.errorDetails);
+    checkUnnamed1435(o.errorDetails);
     unittest.expect(o.url, unittest.equals('foo'));
   }
   buildCounterErrorLogEntry--;
 }
 
-buildUnnamed1449() {
+buildUnnamed1436() {
   var o = new core.List<api.ErrorLogEntry>();
   o.add(buildErrorLogEntry());
   o.add(buildErrorLogEntry());
   return o;
 }
 
-checkUnnamed1449(core.List<api.ErrorLogEntry> o) {
+checkUnnamed1436(core.List<api.ErrorLogEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkErrorLogEntry(o[0]);
   checkErrorLogEntry(o[1]);
@@ -184,7 +184,7 @@
   if (buildCounterErrorSummary < 3) {
     o.errorCode = "foo";
     o.errorCount = "foo";
-    o.errorLogEntries = buildUnnamed1449();
+    o.errorLogEntries = buildUnnamed1436();
   }
   buildCounterErrorSummary--;
   return o;
@@ -195,7 +195,7 @@
   if (buildCounterErrorSummary < 3) {
     unittest.expect(o.errorCode, unittest.equals('foo'));
     unittest.expect(o.errorCount, unittest.equals('foo'));
-    checkUnnamed1449(o.errorLogEntries);
+    checkUnnamed1436(o.errorLogEntries);
   }
   buildCounterErrorSummary--;
 }
@@ -257,14 +257,14 @@
   buildCounterHttpData--;
 }
 
-buildUnnamed1450() {
+buildUnnamed1437() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed1450(core.List<api.Operation> o) {
+checkUnnamed1437(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -276,7 +276,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed1450();
+    o.operations = buildUnnamed1437();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -286,19 +286,19 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1450(o.operations);
+    checkUnnamed1437(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
 
-buildUnnamed1451() {
+buildUnnamed1438() {
   var o = new core.List<api.TransferJob>();
   o.add(buildTransferJob());
   o.add(buildTransferJob());
   return o;
 }
 
-checkUnnamed1451(core.List<api.TransferJob> o) {
+checkUnnamed1438(core.List<api.TransferJob> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTransferJob(o[0]);
   checkTransferJob(o[1]);
@@ -310,7 +310,7 @@
   buildCounterListTransferJobsResponse++;
   if (buildCounterListTransferJobsResponse < 3) {
     o.nextPageToken = "foo";
-    o.transferJobs = buildUnnamed1451();
+    o.transferJobs = buildUnnamed1438();
   }
   buildCounterListTransferJobsResponse--;
   return o;
@@ -320,32 +320,32 @@
   buildCounterListTransferJobsResponse++;
   if (buildCounterListTransferJobsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1451(o.transferJobs);
+    checkUnnamed1438(o.transferJobs);
   }
   buildCounterListTransferJobsResponse--;
 }
 
-buildUnnamed1452() {
+buildUnnamed1439() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1452(core.List<core.String> o) {
+checkUnnamed1439(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1453() {
+buildUnnamed1440() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1453(core.List<core.String> o) {
+checkUnnamed1440(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -356,8 +356,8 @@
   var o = new api.ObjectConditions();
   buildCounterObjectConditions++;
   if (buildCounterObjectConditions < 3) {
-    o.excludePrefixes = buildUnnamed1452();
-    o.includePrefixes = buildUnnamed1453();
+    o.excludePrefixes = buildUnnamed1439();
+    o.includePrefixes = buildUnnamed1440();
     o.maxTimeElapsedSinceLastModification = "foo";
     o.minTimeElapsedSinceLastModification = "foo";
   }
@@ -368,8 +368,8 @@
 checkObjectConditions(api.ObjectConditions o) {
   buildCounterObjectConditions++;
   if (buildCounterObjectConditions < 3) {
-    checkUnnamed1452(o.excludePrefixes);
-    checkUnnamed1453(o.includePrefixes);
+    checkUnnamed1439(o.excludePrefixes);
+    checkUnnamed1440(o.includePrefixes);
     unittest.expect(
         o.maxTimeElapsedSinceLastModification, unittest.equals('foo'));
     unittest.expect(
@@ -378,7 +378,7 @@
   buildCounterObjectConditions--;
 }
 
-buildUnnamed1454() {
+buildUnnamed1441() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -393,7 +393,7 @@
   return o;
 }
 
-checkUnnamed1454(core.Map<core.String, core.Object> o) {
+checkUnnamed1441(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -407,7 +407,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1455() {
+buildUnnamed1442() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -422,7 +422,7 @@
   return o;
 }
 
-checkUnnamed1455(core.Map<core.String, core.Object> o) {
+checkUnnamed1442(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -443,9 +443,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed1454();
+    o.metadata = buildUnnamed1441();
     o.name = "foo";
-    o.response = buildUnnamed1455();
+    o.response = buildUnnamed1442();
   }
   buildCounterOperation--;
   return o;
@@ -456,9 +456,9 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed1454(o.metadata);
+    checkUnnamed1441(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed1455(o.response);
+    checkUnnamed1442(o.response);
   }
   buildCounterOperation--;
 }
@@ -516,7 +516,7 @@
   buildCounterSchedule--;
 }
 
-buildUnnamed1456() {
+buildUnnamed1443() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -531,7 +531,7 @@
   return o;
 }
 
-checkUnnamed1456(core.Map<core.String, core.Object> o) {
+checkUnnamed1443(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -545,17 +545,17 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1457() {
+buildUnnamed1444() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed1456());
-  o.add(buildUnnamed1456());
+  o.add(buildUnnamed1443());
+  o.add(buildUnnamed1443());
   return o;
 }
 
-checkUnnamed1457(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed1444(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1456(o[0]);
-  checkUnnamed1456(o[1]);
+  checkUnnamed1443(o[0]);
+  checkUnnamed1443(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -564,7 +564,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed1457();
+    o.details = buildUnnamed1444();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -575,7 +575,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed1457(o.details);
+    checkUnnamed1444(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -690,14 +690,14 @@
   buildCounterTransferJob--;
 }
 
-buildUnnamed1458() {
+buildUnnamed1445() {
   var o = new core.List<api.ErrorSummary>();
   o.add(buildErrorSummary());
   o.add(buildErrorSummary());
   return o;
 }
 
-checkUnnamed1458(core.List<api.ErrorSummary> o) {
+checkUnnamed1445(core.List<api.ErrorSummary> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkErrorSummary(o[0]);
   checkErrorSummary(o[1]);
@@ -710,7 +710,7 @@
   if (buildCounterTransferOperation < 3) {
     o.counters = buildTransferCounters();
     o.endTime = "foo";
-    o.errorBreakdowns = buildUnnamed1458();
+    o.errorBreakdowns = buildUnnamed1445();
     o.name = "foo";
     o.projectId = "foo";
     o.startTime = "foo";
@@ -727,7 +727,7 @@
   if (buildCounterTransferOperation < 3) {
     checkTransferCounters(o.counters);
     unittest.expect(o.endTime, unittest.equals('foo'));
-    checkUnnamed1458(o.errorBreakdowns);
+    checkUnnamed1445(o.errorBreakdowns);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.projectId, unittest.equals('foo'));
     unittest.expect(o.startTime, unittest.equals('foo'));
@@ -1012,6 +1012,7 @@
       api.GoogleServiceAccountsResourceApi res =
           new api.StoragetransferApi(mock).googleServiceAccounts;
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1045,6 +1046,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1053,7 +1055,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_projectId)
+          .get(arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleServiceAccount response) {
         checkGoogleServiceAccount(response);
       })));
@@ -1066,6 +1068,7 @@
       api.TransferJobsResourceApi res =
           new api.StoragetransferApi(mock).transferJobs;
       var arg_request = buildTransferJob();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TransferJob.fromJson(json);
         checkTransferJob(obj);
@@ -1099,6 +1102,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1107,7 +1111,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request)
+          .create(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TransferJob response) {
         checkTransferJob(response);
       })));
@@ -1119,6 +1123,7 @@
           new api.StoragetransferApi(mock).transferJobs;
       var arg_jobName = "foo";
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1152,6 +1157,7 @@
         }
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1160,7 +1166,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_jobName, projectId: arg_projectId)
+          .get(arg_jobName, projectId: arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TransferJob response) {
         checkTransferJob(response);
       })));
@@ -1170,9 +1176,10 @@
       var mock = new HttpServerMock();
       api.TransferJobsResourceApi res =
           new api.StoragetransferApi(mock).transferJobs;
-      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1203,11 +1210,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1217,9 +1225,10 @@
       }), true);
       res
           .list(
-              filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              filter: arg_filter,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListTransferJobsResponse response) {
         checkListTransferJobsResponse(response);
       })));
@@ -1231,6 +1240,7 @@
           new api.StoragetransferApi(mock).transferJobs;
       var arg_request = buildUpdateTransferJobRequest();
       var arg_jobName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UpdateTransferJobRequest.fromJson(json);
         checkUpdateTransferJobRequest(obj);
@@ -1265,6 +1275,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1273,7 +1284,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_jobName)
+          .patch(arg_request, arg_jobName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TransferJob response) {
         checkTransferJob(response);
       })));
@@ -1286,6 +1297,7 @@
       api.TransferOperationsResourceApi res =
           new api.StoragetransferApi(mock).transferOperations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1317,6 +1329,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1324,7 +1337,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.cancel(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .cancel(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -1334,6 +1349,7 @@
       api.TransferOperationsResourceApi res =
           new api.StoragetransferApi(mock).transferOperations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1365,6 +1381,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1372,7 +1389,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -1382,6 +1401,7 @@
       api.TransferOperationsResourceApi res =
           new api.StoragetransferApi(mock).transferOperations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1413,6 +1433,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1420,7 +1441,9 @@
         var resp = convert.JSON.encode(buildOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Operation response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
     });
@@ -1430,9 +1453,10 @@
       api.TransferOperationsResourceApi res =
           new api.StoragetransferApi(mock).transferOperations;
       var arg_name = "foo";
-      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1464,11 +1488,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1478,9 +1503,10 @@
       }), true);
       res
           .list(arg_name,
-              filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              filter: arg_filter,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
@@ -1492,6 +1518,7 @@
           new api.StoragetransferApi(mock).transferOperations;
       var arg_request = buildPauseTransferOperationRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.PauseTransferOperationRequest.fromJson(json);
         checkPauseTransferOperationRequest(obj);
@@ -1526,6 +1553,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1534,7 +1562,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .pause(arg_request, arg_name)
+          .pause(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1546,6 +1574,7 @@
           new api.StoragetransferApi(mock).transferOperations;
       var arg_request = buildResumeTransferOperationRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ResumeTransferOperationRequest.fromJson(json);
         checkResumeTransferOperationRequest(obj);
@@ -1580,6 +1609,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1588,7 +1618,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .resume(arg_request, arg_name)
+          .resume(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
diff --git a/generated/googleapis/test/streetviewpublish/v1_test.dart b/generated/googleapis/test/streetviewpublish/v1_test.dart
new file mode 100644
index 0000000..d841afb
--- /dev/null
+++ b/generated/googleapis/test/streetviewpublish/v1_test.dart
@@ -0,0 +1,1330 @@
+library googleapis.streetviewpublish.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/streetviewpublish/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+buildUnnamed3231() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3231(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBatchDeletePhotosRequest = 0;
+buildBatchDeletePhotosRequest() {
+  var o = new api.BatchDeletePhotosRequest();
+  buildCounterBatchDeletePhotosRequest++;
+  if (buildCounterBatchDeletePhotosRequest < 3) {
+    o.photoIds = buildUnnamed3231();
+  }
+  buildCounterBatchDeletePhotosRequest--;
+  return o;
+}
+
+checkBatchDeletePhotosRequest(api.BatchDeletePhotosRequest o) {
+  buildCounterBatchDeletePhotosRequest++;
+  if (buildCounterBatchDeletePhotosRequest < 3) {
+    checkUnnamed3231(o.photoIds);
+  }
+  buildCounterBatchDeletePhotosRequest--;
+}
+
+buildUnnamed3232() {
+  var o = new core.List<api.Status>();
+  o.add(buildStatus());
+  o.add(buildStatus());
+  return o;
+}
+
+checkUnnamed3232(core.List<api.Status> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkStatus(o[0]);
+  checkStatus(o[1]);
+}
+
+core.int buildCounterBatchDeletePhotosResponse = 0;
+buildBatchDeletePhotosResponse() {
+  var o = new api.BatchDeletePhotosResponse();
+  buildCounterBatchDeletePhotosResponse++;
+  if (buildCounterBatchDeletePhotosResponse < 3) {
+    o.status = buildUnnamed3232();
+  }
+  buildCounterBatchDeletePhotosResponse--;
+  return o;
+}
+
+checkBatchDeletePhotosResponse(api.BatchDeletePhotosResponse o) {
+  buildCounterBatchDeletePhotosResponse++;
+  if (buildCounterBatchDeletePhotosResponse < 3) {
+    checkUnnamed3232(o.status);
+  }
+  buildCounterBatchDeletePhotosResponse--;
+}
+
+buildUnnamed3233() {
+  var o = new core.List<api.PhotoResponse>();
+  o.add(buildPhotoResponse());
+  o.add(buildPhotoResponse());
+  return o;
+}
+
+checkUnnamed3233(core.List<api.PhotoResponse> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPhotoResponse(o[0]);
+  checkPhotoResponse(o[1]);
+}
+
+core.int buildCounterBatchGetPhotosResponse = 0;
+buildBatchGetPhotosResponse() {
+  var o = new api.BatchGetPhotosResponse();
+  buildCounterBatchGetPhotosResponse++;
+  if (buildCounterBatchGetPhotosResponse < 3) {
+    o.results = buildUnnamed3233();
+  }
+  buildCounterBatchGetPhotosResponse--;
+  return o;
+}
+
+checkBatchGetPhotosResponse(api.BatchGetPhotosResponse o) {
+  buildCounterBatchGetPhotosResponse++;
+  if (buildCounterBatchGetPhotosResponse < 3) {
+    checkUnnamed3233(o.results);
+  }
+  buildCounterBatchGetPhotosResponse--;
+}
+
+buildUnnamed3234() {
+  var o = new core.List<api.UpdatePhotoRequest>();
+  o.add(buildUpdatePhotoRequest());
+  o.add(buildUpdatePhotoRequest());
+  return o;
+}
+
+checkUnnamed3234(core.List<api.UpdatePhotoRequest> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUpdatePhotoRequest(o[0]);
+  checkUpdatePhotoRequest(o[1]);
+}
+
+core.int buildCounterBatchUpdatePhotosRequest = 0;
+buildBatchUpdatePhotosRequest() {
+  var o = new api.BatchUpdatePhotosRequest();
+  buildCounterBatchUpdatePhotosRequest++;
+  if (buildCounterBatchUpdatePhotosRequest < 3) {
+    o.updatePhotoRequests = buildUnnamed3234();
+  }
+  buildCounterBatchUpdatePhotosRequest--;
+  return o;
+}
+
+checkBatchUpdatePhotosRequest(api.BatchUpdatePhotosRequest o) {
+  buildCounterBatchUpdatePhotosRequest++;
+  if (buildCounterBatchUpdatePhotosRequest < 3) {
+    checkUnnamed3234(o.updatePhotoRequests);
+  }
+  buildCounterBatchUpdatePhotosRequest--;
+}
+
+buildUnnamed3235() {
+  var o = new core.List<api.PhotoResponse>();
+  o.add(buildPhotoResponse());
+  o.add(buildPhotoResponse());
+  return o;
+}
+
+checkUnnamed3235(core.List<api.PhotoResponse> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPhotoResponse(o[0]);
+  checkPhotoResponse(o[1]);
+}
+
+core.int buildCounterBatchUpdatePhotosResponse = 0;
+buildBatchUpdatePhotosResponse() {
+  var o = new api.BatchUpdatePhotosResponse();
+  buildCounterBatchUpdatePhotosResponse++;
+  if (buildCounterBatchUpdatePhotosResponse < 3) {
+    o.results = buildUnnamed3235();
+  }
+  buildCounterBatchUpdatePhotosResponse--;
+  return o;
+}
+
+checkBatchUpdatePhotosResponse(api.BatchUpdatePhotosResponse o) {
+  buildCounterBatchUpdatePhotosResponse++;
+  if (buildCounterBatchUpdatePhotosResponse < 3) {
+    checkUnnamed3235(o.results);
+  }
+  buildCounterBatchUpdatePhotosResponse--;
+}
+
+core.int buildCounterConnection = 0;
+buildConnection() {
+  var o = new api.Connection();
+  buildCounterConnection++;
+  if (buildCounterConnection < 3) {
+    o.target = buildPhotoId();
+  }
+  buildCounterConnection--;
+  return o;
+}
+
+checkConnection(api.Connection o) {
+  buildCounterConnection++;
+  if (buildCounterConnection < 3) {
+    checkPhotoId(o.target);
+  }
+  buildCounterConnection--;
+}
+
+core.int buildCounterEmpty = 0;
+buildEmpty() {
+  var o = new api.Empty();
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+  return o;
+}
+
+checkEmpty(api.Empty o) {
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+}
+
+core.int buildCounterLatLng = 0;
+buildLatLng() {
+  var o = new api.LatLng();
+  buildCounterLatLng++;
+  if (buildCounterLatLng < 3) {
+    o.latitude = 42.0;
+    o.longitude = 42.0;
+  }
+  buildCounterLatLng--;
+  return o;
+}
+
+checkLatLng(api.LatLng o) {
+  buildCounterLatLng++;
+  if (buildCounterLatLng < 3) {
+    unittest.expect(o.latitude, unittest.equals(42.0));
+    unittest.expect(o.longitude, unittest.equals(42.0));
+  }
+  buildCounterLatLng--;
+}
+
+core.int buildCounterLevel = 0;
+buildLevel() {
+  var o = new api.Level();
+  buildCounterLevel++;
+  if (buildCounterLevel < 3) {
+    o.name = "foo";
+    o.number = 42.0;
+  }
+  buildCounterLevel--;
+  return o;
+}
+
+checkLevel(api.Level o) {
+  buildCounterLevel++;
+  if (buildCounterLevel < 3) {
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.number, unittest.equals(42.0));
+  }
+  buildCounterLevel--;
+}
+
+buildUnnamed3236() {
+  var o = new core.List<api.Photo>();
+  o.add(buildPhoto());
+  o.add(buildPhoto());
+  return o;
+}
+
+checkUnnamed3236(core.List<api.Photo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPhoto(o[0]);
+  checkPhoto(o[1]);
+}
+
+core.int buildCounterListPhotosResponse = 0;
+buildListPhotosResponse() {
+  var o = new api.ListPhotosResponse();
+  buildCounterListPhotosResponse++;
+  if (buildCounterListPhotosResponse < 3) {
+    o.nextPageToken = "foo";
+    o.photos = buildUnnamed3236();
+  }
+  buildCounterListPhotosResponse--;
+  return o;
+}
+
+checkListPhotosResponse(api.ListPhotosResponse o) {
+  buildCounterListPhotosResponse++;
+  if (buildCounterListPhotosResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3236(o.photos);
+  }
+  buildCounterListPhotosResponse--;
+}
+
+buildUnnamed3237() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed3237(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o["x"]) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(casted1["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted1["bool"], unittest.equals(true));
+  unittest.expect(casted1["string"], unittest.equals('foo'));
+  var casted2 = (o["y"]) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(casted2["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted2["bool"], unittest.equals(true));
+  unittest.expect(casted2["string"], unittest.equals('foo'));
+}
+
+buildUnnamed3238() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed3238(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted3 = (o["x"]) as core.Map;
+  unittest.expect(casted3, unittest.hasLength(3));
+  unittest.expect(casted3["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted3["bool"], unittest.equals(true));
+  unittest.expect(casted3["string"], unittest.equals('foo'));
+  var casted4 = (o["y"]) as core.Map;
+  unittest.expect(casted4, unittest.hasLength(3));
+  unittest.expect(casted4["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted4["bool"], unittest.equals(true));
+  unittest.expect(casted4["string"], unittest.equals('foo'));
+}
+
+core.int buildCounterOperation = 0;
+buildOperation() {
+  var o = new api.Operation();
+  buildCounterOperation++;
+  if (buildCounterOperation < 3) {
+    o.done = true;
+    o.error = buildStatus();
+    o.metadata = buildUnnamed3237();
+    o.name = "foo";
+    o.response = buildUnnamed3238();
+  }
+  buildCounterOperation--;
+  return o;
+}
+
+checkOperation(api.Operation o) {
+  buildCounterOperation++;
+  if (buildCounterOperation < 3) {
+    unittest.expect(o.done, unittest.isTrue);
+    checkStatus(o.error);
+    checkUnnamed3237(o.metadata);
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed3238(o.response);
+  }
+  buildCounterOperation--;
+}
+
+buildUnnamed3239() {
+  var o = new core.List<api.Connection>();
+  o.add(buildConnection());
+  o.add(buildConnection());
+  return o;
+}
+
+checkUnnamed3239(core.List<api.Connection> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkConnection(o[0]);
+  checkConnection(o[1]);
+}
+
+buildUnnamed3240() {
+  var o = new core.List<api.Place>();
+  o.add(buildPlace());
+  o.add(buildPlace());
+  return o;
+}
+
+checkUnnamed3240(core.List<api.Place> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPlace(o[0]);
+  checkPlace(o[1]);
+}
+
+core.int buildCounterPhoto = 0;
+buildPhoto() {
+  var o = new api.Photo();
+  buildCounterPhoto++;
+  if (buildCounterPhoto < 3) {
+    o.captureTime = "foo";
+    o.connections = buildUnnamed3239();
+    o.downloadUrl = "foo";
+    o.photoId = buildPhotoId();
+    o.places = buildUnnamed3240();
+    o.pose = buildPose();
+    o.shareLink = "foo";
+    o.thumbnailUrl = "foo";
+    o.uploadReference = buildUploadRef();
+    o.viewCount = "foo";
+  }
+  buildCounterPhoto--;
+  return o;
+}
+
+checkPhoto(api.Photo o) {
+  buildCounterPhoto++;
+  if (buildCounterPhoto < 3) {
+    unittest.expect(o.captureTime, unittest.equals('foo'));
+    checkUnnamed3239(o.connections);
+    unittest.expect(o.downloadUrl, unittest.equals('foo'));
+    checkPhotoId(o.photoId);
+    checkUnnamed3240(o.places);
+    checkPose(o.pose);
+    unittest.expect(o.shareLink, unittest.equals('foo'));
+    unittest.expect(o.thumbnailUrl, unittest.equals('foo'));
+    checkUploadRef(o.uploadReference);
+    unittest.expect(o.viewCount, unittest.equals('foo'));
+  }
+  buildCounterPhoto--;
+}
+
+core.int buildCounterPhotoId = 0;
+buildPhotoId() {
+  var o = new api.PhotoId();
+  buildCounterPhotoId++;
+  if (buildCounterPhotoId < 3) {
+    o.id = "foo";
+  }
+  buildCounterPhotoId--;
+  return o;
+}
+
+checkPhotoId(api.PhotoId o) {
+  buildCounterPhotoId++;
+  if (buildCounterPhotoId < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+  }
+  buildCounterPhotoId--;
+}
+
+core.int buildCounterPhotoResponse = 0;
+buildPhotoResponse() {
+  var o = new api.PhotoResponse();
+  buildCounterPhotoResponse++;
+  if (buildCounterPhotoResponse < 3) {
+    o.photo = buildPhoto();
+    o.status = buildStatus();
+  }
+  buildCounterPhotoResponse--;
+  return o;
+}
+
+checkPhotoResponse(api.PhotoResponse o) {
+  buildCounterPhotoResponse++;
+  if (buildCounterPhotoResponse < 3) {
+    checkPhoto(o.photo);
+    checkStatus(o.status);
+  }
+  buildCounterPhotoResponse--;
+}
+
+core.int buildCounterPlace = 0;
+buildPlace() {
+  var o = new api.Place();
+  buildCounterPlace++;
+  if (buildCounterPlace < 3) {
+    o.placeId = "foo";
+  }
+  buildCounterPlace--;
+  return o;
+}
+
+checkPlace(api.Place o) {
+  buildCounterPlace++;
+  if (buildCounterPlace < 3) {
+    unittest.expect(o.placeId, unittest.equals('foo'));
+  }
+  buildCounterPlace--;
+}
+
+core.int buildCounterPose = 0;
+buildPose() {
+  var o = new api.Pose();
+  buildCounterPose++;
+  if (buildCounterPose < 3) {
+    o.altitude = 42.0;
+    o.heading = 42.0;
+    o.latLngPair = buildLatLng();
+    o.level = buildLevel();
+    o.pitch = 42.0;
+    o.roll = 42.0;
+  }
+  buildCounterPose--;
+  return o;
+}
+
+checkPose(api.Pose o) {
+  buildCounterPose++;
+  if (buildCounterPose < 3) {
+    unittest.expect(o.altitude, unittest.equals(42.0));
+    unittest.expect(o.heading, unittest.equals(42.0));
+    checkLatLng(o.latLngPair);
+    checkLevel(o.level);
+    unittest.expect(o.pitch, unittest.equals(42.0));
+    unittest.expect(o.roll, unittest.equals(42.0));
+  }
+  buildCounterPose--;
+}
+
+buildUnnamed3241() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed3241(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted5 = (o["x"]) as core.Map;
+  unittest.expect(casted5, unittest.hasLength(3));
+  unittest.expect(casted5["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted5["bool"], unittest.equals(true));
+  unittest.expect(casted5["string"], unittest.equals('foo'));
+  var casted6 = (o["y"]) as core.Map;
+  unittest.expect(casted6, unittest.hasLength(3));
+  unittest.expect(casted6["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted6["bool"], unittest.equals(true));
+  unittest.expect(casted6["string"], unittest.equals('foo'));
+}
+
+buildUnnamed3242() {
+  var o = new core.List<core.Map<core.String, core.Object>>();
+  o.add(buildUnnamed3241());
+  o.add(buildUnnamed3241());
+  return o;
+}
+
+checkUnnamed3242(core.List<core.Map<core.String, core.Object>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed3241(o[0]);
+  checkUnnamed3241(o[1]);
+}
+
+core.int buildCounterStatus = 0;
+buildStatus() {
+  var o = new api.Status();
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    o.code = 42;
+    o.details = buildUnnamed3242();
+    o.message = "foo";
+  }
+  buildCounterStatus--;
+  return o;
+}
+
+checkStatus(api.Status o) {
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    unittest.expect(o.code, unittest.equals(42));
+    checkUnnamed3242(o.details);
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterStatus--;
+}
+
+core.int buildCounterUpdatePhotoRequest = 0;
+buildUpdatePhotoRequest() {
+  var o = new api.UpdatePhotoRequest();
+  buildCounterUpdatePhotoRequest++;
+  if (buildCounterUpdatePhotoRequest < 3) {
+    o.photo = buildPhoto();
+    o.updateMask = "foo";
+  }
+  buildCounterUpdatePhotoRequest--;
+  return o;
+}
+
+checkUpdatePhotoRequest(api.UpdatePhotoRequest o) {
+  buildCounterUpdatePhotoRequest++;
+  if (buildCounterUpdatePhotoRequest < 3) {
+    checkPhoto(o.photo);
+    unittest.expect(o.updateMask, unittest.equals('foo'));
+  }
+  buildCounterUpdatePhotoRequest--;
+}
+
+core.int buildCounterUploadRef = 0;
+buildUploadRef() {
+  var o = new api.UploadRef();
+  buildCounterUploadRef++;
+  if (buildCounterUploadRef < 3) {
+    o.uploadUrl = "foo";
+  }
+  buildCounterUploadRef--;
+  return o;
+}
+
+checkUploadRef(api.UploadRef o) {
+  buildCounterUploadRef++;
+  if (buildCounterUploadRef < 3) {
+    unittest.expect(o.uploadUrl, unittest.equals('foo'));
+  }
+  buildCounterUploadRef--;
+}
+
+buildUnnamed3243() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3243(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-BatchDeletePhotosRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchDeletePhotosRequest();
+      var od = new api.BatchDeletePhotosRequest.fromJson(o.toJson());
+      checkBatchDeletePhotosRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchDeletePhotosResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchDeletePhotosResponse();
+      var od = new api.BatchDeletePhotosResponse.fromJson(o.toJson());
+      checkBatchDeletePhotosResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchGetPhotosResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchGetPhotosResponse();
+      var od = new api.BatchGetPhotosResponse.fromJson(o.toJson());
+      checkBatchGetPhotosResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchUpdatePhotosRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchUpdatePhotosRequest();
+      var od = new api.BatchUpdatePhotosRequest.fromJson(o.toJson());
+      checkBatchUpdatePhotosRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchUpdatePhotosResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchUpdatePhotosResponse();
+      var od = new api.BatchUpdatePhotosResponse.fromJson(o.toJson());
+      checkBatchUpdatePhotosResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Connection", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildConnection();
+      var od = new api.Connection.fromJson(o.toJson());
+      checkConnection(od);
+    });
+  });
+
+  unittest.group("obj-schema-Empty", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEmpty();
+      var od = new api.Empty.fromJson(o.toJson());
+      checkEmpty(od);
+    });
+  });
+
+  unittest.group("obj-schema-LatLng", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLatLng();
+      var od = new api.LatLng.fromJson(o.toJson());
+      checkLatLng(od);
+    });
+  });
+
+  unittest.group("obj-schema-Level", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLevel();
+      var od = new api.Level.fromJson(o.toJson());
+      checkLevel(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListPhotosResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListPhotosResponse();
+      var od = new api.ListPhotosResponse.fromJson(o.toJson());
+      checkListPhotosResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Operation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOperation();
+      var od = new api.Operation.fromJson(o.toJson());
+      checkOperation(od);
+    });
+  });
+
+  unittest.group("obj-schema-Photo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPhoto();
+      var od = new api.Photo.fromJson(o.toJson());
+      checkPhoto(od);
+    });
+  });
+
+  unittest.group("obj-schema-PhotoId", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPhotoId();
+      var od = new api.PhotoId.fromJson(o.toJson());
+      checkPhotoId(od);
+    });
+  });
+
+  unittest.group("obj-schema-PhotoResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPhotoResponse();
+      var od = new api.PhotoResponse.fromJson(o.toJson());
+      checkPhotoResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Place", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPlace();
+      var od = new api.Place.fromJson(o.toJson());
+      checkPlace(od);
+    });
+  });
+
+  unittest.group("obj-schema-Pose", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPose();
+      var od = new api.Pose.fromJson(o.toJson());
+      checkPose(od);
+    });
+  });
+
+  unittest.group("obj-schema-Status", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStatus();
+      var od = new api.Status.fromJson(o.toJson());
+      checkStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdatePhotoRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdatePhotoRequest();
+      var od = new api.UpdatePhotoRequest.fromJson(o.toJson());
+      checkUpdatePhotoRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UploadRef", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUploadRef();
+      var od = new api.UploadRef.fromJson(o.toJson());
+      checkUploadRef(od);
+    });
+  });
+
+  unittest.group("resource-PhotoResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.PhotoResourceApi res = new api.StreetviewpublishApi(mock).photo;
+      var arg_request = buildPhoto();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Photo.fromJson(json);
+        checkPhoto(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1/photo"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPhoto());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Photo response) {
+        checkPhoto(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.PhotoResourceApi res = new api.StreetviewpublishApi(mock).photo;
+      var arg_photoId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("v1/photo/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_photoId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_photoId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.PhotoResourceApi res = new api.StreetviewpublishApi(mock).photo;
+      var arg_photoId = "foo";
+      var arg_view = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("v1/photo/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_photoId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPhoto());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_photoId, view: arg_view, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Photo response) {
+        checkPhoto(response);
+      })));
+    });
+
+    unittest.test("method--startUpload", () {
+      var mock = new HttpServerMock();
+      api.PhotoResourceApi res = new api.StreetviewpublishApi(mock).photo;
+      var arg_request = buildEmpty();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Empty.fromJson(json);
+        checkEmpty(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 20),
+            unittest.equals("v1/photo:startUpload"));
+        pathOffset += 20;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUploadRef());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .startUpload(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UploadRef response) {
+        checkUploadRef(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.PhotoResourceApi res = new api.StreetviewpublishApi(mock).photo;
+      var arg_request = buildPhoto();
+      var arg_id = "foo";
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Photo.fromJson(json);
+        checkPhoto(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("v1/photo/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_id"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPhoto());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_id,
+              updateMask: arg_updateMask, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Photo response) {
+        checkPhoto(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-PhotosResourceApi", () {
+    unittest.test("method--batchDelete", () {
+      var mock = new HttpServerMock();
+      api.PhotosResourceApi res = new api.StreetviewpublishApi(mock).photos;
+      var arg_request = buildBatchDeletePhotosRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BatchDeletePhotosRequest.fromJson(json);
+        checkBatchDeletePhotosRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("v1/photos:batchDelete"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBatchDeletePhotosResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.batchDelete(arg_request, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.BatchDeletePhotosResponse response) {
+        checkBatchDeletePhotosResponse(response);
+      })));
+    });
+
+    unittest.test("method--batchGet", () {
+      var mock = new HttpServerMock();
+      api.PhotosResourceApi res = new api.StreetviewpublishApi(mock).photos;
+      var arg_view = "foo";
+      var arg_photoIds = buildUnnamed3243();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 18),
+            unittest.equals("v1/photos:batchGet"));
+        pathOffset += 18;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["photoIds"], unittest.equals(arg_photoIds));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBatchGetPhotosResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .batchGet(
+              view: arg_view, photoIds: arg_photoIds, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BatchGetPhotosResponse response) {
+        checkBatchGetPhotosResponse(response);
+      })));
+    });
+
+    unittest.test("method--batchUpdate", () {
+      var mock = new HttpServerMock();
+      api.PhotosResourceApi res = new api.StreetviewpublishApi(mock).photos;
+      var arg_request = buildBatchUpdatePhotosRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BatchUpdatePhotosRequest.fromJson(json);
+        checkBatchUpdatePhotosRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 21),
+            unittest.equals("v1/photos:batchUpdate"));
+        pathOffset += 21;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBatchUpdatePhotosResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.batchUpdate(arg_request, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.BatchUpdatePhotosResponse response) {
+        checkBatchUpdatePhotosResponse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.PhotosResourceApi res = new api.StreetviewpublishApi(mock).photos;
+      var arg_filter = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_view = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("v1/photos"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListPhotosResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(
+              filter: arg_filter,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              view: arg_view,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListPhotosResponse response) {
+        checkListPhotosResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/surveys/v2_test.dart b/generated/googleapis/test/surveys/v2_test.dart
index 80c3fae..8469873 100644
--- a/generated/googleapis/test/surveys/v2_test.dart
+++ b/generated/googleapis/test/surveys/v2_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed2275() {
+buildUnnamed2273() {
   var o = new core.List<api.FieldMask>();
   o.add(buildFieldMask());
   o.add(buildFieldMask());
   return o;
 }
 
-checkUnnamed2275(core.List<api.FieldMask> o) {
+checkUnnamed2273(core.List<api.FieldMask> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFieldMask(o[0]);
   checkFieldMask(o[1]);
@@ -68,7 +68,7 @@
   var o = new api.FieldMask();
   buildCounterFieldMask++;
   if (buildCounterFieldMask < 3) {
-    o.fields = buildUnnamed2275();
+    o.fields = buildUnnamed2273();
     o.id = 42;
   }
   buildCounterFieldMask--;
@@ -78,20 +78,20 @@
 checkFieldMask(api.FieldMask o) {
   buildCounterFieldMask++;
   if (buildCounterFieldMask < 3) {
-    checkUnnamed2275(o.fields);
+    checkUnnamed2273(o.fields);
     unittest.expect(o.id, unittest.equals(42));
   }
   buildCounterFieldMask--;
 }
 
-buildUnnamed2276() {
+buildUnnamed2274() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2276(core.List<core.String> o) {
+checkUnnamed2274(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -107,7 +107,7 @@
     o.language = "foo";
     o.mobileAppPanelId = "foo";
     o.name = "foo";
-    o.owners = buildUnnamed2276();
+    o.owners = buildUnnamed2274();
   }
   buildCounterMobileAppPanel--;
   return o;
@@ -121,19 +121,19 @@
     unittest.expect(o.language, unittest.equals('foo'));
     unittest.expect(o.mobileAppPanelId, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed2276(o.owners);
+    checkUnnamed2274(o.owners);
   }
   buildCounterMobileAppPanel--;
 }
 
-buildUnnamed2277() {
+buildUnnamed2275() {
   var o = new core.List<api.MobileAppPanel>();
   o.add(buildMobileAppPanel());
   o.add(buildMobileAppPanel());
   return o;
 }
 
-checkUnnamed2277(core.List<api.MobileAppPanel> o) {
+checkUnnamed2275(core.List<api.MobileAppPanel> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMobileAppPanel(o[0]);
   checkMobileAppPanel(o[1]);
@@ -146,7 +146,7 @@
   if (buildCounterMobileAppPanelsListResponse < 3) {
     o.pageInfo = buildPageInfo();
     o.requestId = "foo";
-    o.resources = buildUnnamed2277();
+    o.resources = buildUnnamed2275();
     o.tokenPagination = buildTokenPagination();
   }
   buildCounterMobileAppPanelsListResponse--;
@@ -158,7 +158,7 @@
   if (buildCounterMobileAppPanelsListResponse < 3) {
     checkPageInfo(o.pageInfo);
     unittest.expect(o.requestId, unittest.equals('foo'));
-    checkUnnamed2277(o.resources);
+    checkUnnamed2275(o.resources);
     checkTokenPagination(o.tokenPagination);
   }
   buildCounterMobileAppPanelsListResponse--;
@@ -206,14 +206,14 @@
   buildCounterResultsGetRequest--;
 }
 
-buildUnnamed2278() {
+buildUnnamed2276() {
   var o = new core.List<api.FieldMask>();
   o.add(buildFieldMask());
   o.add(buildFieldMask());
   return o;
 }
 
-checkUnnamed2278(core.List<api.FieldMask> o) {
+checkUnnamed2276(core.List<api.FieldMask> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFieldMask(o[0]);
   checkFieldMask(o[1]);
@@ -224,7 +224,7 @@
   var o = new api.ResultsMask();
   buildCounterResultsMask++;
   if (buildCounterResultsMask < 3) {
-    o.fields = buildUnnamed2278();
+    o.fields = buildUnnamed2276();
     o.projection = "foo";
   }
   buildCounterResultsMask--;
@@ -234,33 +234,33 @@
 checkResultsMask(api.ResultsMask o) {
   buildCounterResultsMask++;
   if (buildCounterResultsMask < 3) {
-    checkUnnamed2278(o.fields);
+    checkUnnamed2276(o.fields);
     unittest.expect(o.projection, unittest.equals('foo'));
   }
   buildCounterResultsMask--;
 }
 
-buildUnnamed2279() {
+buildUnnamed2277() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2279(core.List<core.String> o) {
+checkUnnamed2277(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2280() {
+buildUnnamed2278() {
   var o = new core.List<api.SurveyQuestion>();
   o.add(buildSurveyQuestion());
   o.add(buildSurveyQuestion());
   return o;
 }
 
-checkUnnamed2280(core.List<api.SurveyQuestion> o) {
+checkUnnamed2278(core.List<api.SurveyQuestion> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSurveyQuestion(o[0]);
   checkSurveyQuestion(o[1]);
@@ -275,8 +275,8 @@
     o.cost = buildSurveyCost();
     o.customerData = "foo";
     o.description = "foo";
-    o.owners = buildUnnamed2279();
-    o.questions = buildUnnamed2280();
+    o.owners = buildUnnamed2277();
+    o.questions = buildUnnamed2278();
     o.rejectionReason = buildSurveyRejection();
     o.state = "foo";
     o.surveyUrlId = "foo";
@@ -294,8 +294,8 @@
     checkSurveyCost(o.cost);
     unittest.expect(o.customerData, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed2279(o.owners);
-    checkUnnamed2280(o.questions);
+    checkUnnamed2277(o.owners);
+    checkUnnamed2278(o.questions);
     checkSurveyRejection(o.rejectionReason);
     unittest.expect(o.state, unittest.equals('foo'));
     unittest.expect(o.surveyUrlId, unittest.equals('foo'));
@@ -305,27 +305,27 @@
   buildCounterSurvey--;
 }
 
-buildUnnamed2281() {
+buildUnnamed2279() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2281(core.List<core.String> o) {
+checkUnnamed2279(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed2282() {
+buildUnnamed2280() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2282(core.List<core.String> o) {
+checkUnnamed2280(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -336,11 +336,11 @@
   var o = new api.SurveyAudience();
   buildCounterSurveyAudience++;
   if (buildCounterSurveyAudience < 3) {
-    o.ages = buildUnnamed2281();
+    o.ages = buildUnnamed2279();
     o.country = "foo";
     o.countrySubdivision = "foo";
     o.gender = "foo";
-    o.languages = buildUnnamed2282();
+    o.languages = buildUnnamed2280();
     o.mobileAppPanelId = "foo";
     o.populationSource = "foo";
   }
@@ -351,11 +351,11 @@
 checkSurveyAudience(api.SurveyAudience o) {
   buildCounterSurveyAudience++;
   if (buildCounterSurveyAudience < 3) {
-    checkUnnamed2281(o.ages);
+    checkUnnamed2279(o.ages);
     unittest.expect(o.country, unittest.equals('foo'));
     unittest.expect(o.countrySubdivision, unittest.equals('foo'));
     unittest.expect(o.gender, unittest.equals('foo'));
-    checkUnnamed2282(o.languages);
+    checkUnnamed2280(o.languages);
     unittest.expect(o.mobileAppPanelId, unittest.equals('foo'));
     unittest.expect(o.populationSource, unittest.equals('foo'));
   }
@@ -387,6 +387,32 @@
   buildCounterSurveyCost--;
 }
 
+buildUnnamed2281() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2281(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2282() {
+  var o = new core.List<api.SurveyQuestionImage>();
+  o.add(buildSurveyQuestionImage());
+  o.add(buildSurveyQuestionImage());
+  return o;
+}
+
+checkUnnamed2282(core.List<api.SurveyQuestionImage> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSurveyQuestionImage(o[0]);
+  checkSurveyQuestionImage(o[1]);
+}
+
 buildUnnamed2283() {
   var o = new core.List<core.String>();
   o.add("foo");
@@ -401,39 +427,13 @@
 }
 
 buildUnnamed2284() {
-  var o = new core.List<api.SurveyQuestionImage>();
-  o.add(buildSurveyQuestionImage());
-  o.add(buildSurveyQuestionImage());
-  return o;
-}
-
-checkUnnamed2284(core.List<api.SurveyQuestionImage> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkSurveyQuestionImage(o[0]);
-  checkSurveyQuestionImage(o[1]);
-}
-
-buildUnnamed2285() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed2285(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(o[0], unittest.equals('foo'));
-  unittest.expect(o[1], unittest.equals('foo'));
-}
-
-buildUnnamed2286() {
-  var o = new core.List<core.String>();
-  o.add("foo");
-  o.add("foo");
-  return o;
-}
-
-checkUnnamed2286(core.List<core.String> o) {
+checkUnnamed2284(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -445,20 +445,20 @@
   buildCounterSurveyQuestion++;
   if (buildCounterSurveyQuestion < 3) {
     o.answerOrder = "foo";
-    o.answers = buildUnnamed2283();
+    o.answers = buildUnnamed2281();
     o.hasOther = true;
     o.highValueLabel = "foo";
-    o.images = buildUnnamed2284();
+    o.images = buildUnnamed2282();
     o.lastAnswerPositionPinned = true;
     o.lowValueLabel = "foo";
     o.mustPickSuggestion = true;
     o.numStars = "foo";
     o.openTextPlaceholder = "foo";
-    o.openTextSuggestions = buildUnnamed2285();
+    o.openTextSuggestions = buildUnnamed2283();
     o.question = "foo";
     o.sentimentText = "foo";
     o.singleLineResponse = true;
-    o.thresholdAnswers = buildUnnamed2286();
+    o.thresholdAnswers = buildUnnamed2284();
     o.type = "foo";
     o.unitOfMeasurementLabel = "foo";
     o.videoId = "foo";
@@ -471,20 +471,20 @@
   buildCounterSurveyQuestion++;
   if (buildCounterSurveyQuestion < 3) {
     unittest.expect(o.answerOrder, unittest.equals('foo'));
-    checkUnnamed2283(o.answers);
+    checkUnnamed2281(o.answers);
     unittest.expect(o.hasOther, unittest.isTrue);
     unittest.expect(o.highValueLabel, unittest.equals('foo'));
-    checkUnnamed2284(o.images);
+    checkUnnamed2282(o.images);
     unittest.expect(o.lastAnswerPositionPinned, unittest.isTrue);
     unittest.expect(o.lowValueLabel, unittest.equals('foo'));
     unittest.expect(o.mustPickSuggestion, unittest.isTrue);
     unittest.expect(o.numStars, unittest.equals('foo'));
     unittest.expect(o.openTextPlaceholder, unittest.equals('foo'));
-    checkUnnamed2285(o.openTextSuggestions);
+    checkUnnamed2283(o.openTextSuggestions);
     unittest.expect(o.question, unittest.equals('foo'));
     unittest.expect(o.sentimentText, unittest.equals('foo'));
     unittest.expect(o.singleLineResponse, unittest.isTrue);
-    checkUnnamed2286(o.thresholdAnswers);
+    checkUnnamed2284(o.thresholdAnswers);
     unittest.expect(o.type, unittest.equals('foo'));
     unittest.expect(o.unitOfMeasurementLabel, unittest.equals('foo'));
     unittest.expect(o.videoId, unittest.equals('foo'));
@@ -576,14 +576,14 @@
   buildCounterSurveysDeleteResponse--;
 }
 
-buildUnnamed2287() {
+buildUnnamed2285() {
   var o = new core.List<api.Survey>();
   o.add(buildSurvey());
   o.add(buildSurvey());
   return o;
 }
 
-checkUnnamed2287(core.List<api.Survey> o) {
+checkUnnamed2285(core.List<api.Survey> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSurvey(o[0]);
   checkSurvey(o[1]);
@@ -596,7 +596,7 @@
   if (buildCounterSurveysListResponse < 3) {
     o.pageInfo = buildPageInfo();
     o.requestId = "foo";
-    o.resources = buildUnnamed2287();
+    o.resources = buildUnnamed2285();
     o.tokenPagination = buildTokenPagination();
   }
   buildCounterSurveysListResponse--;
@@ -608,7 +608,7 @@
   if (buildCounterSurveysListResponse < 3) {
     checkPageInfo(o.pageInfo);
     unittest.expect(o.requestId, unittest.equals('foo'));
-    checkUnnamed2287(o.resources);
+    checkUnnamed2285(o.resources);
     checkTokenPagination(o.tokenPagination);
   }
   buildCounterSurveysListResponse--;
@@ -851,6 +851,7 @@
       api.MobileapppanelsResourceApi res =
           new api.SurveysApi(mock).mobileapppanels;
       var arg_panelId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -887,6 +888,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -895,7 +897,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_panelId)
+          .get(arg_panelId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.MobileAppPanel response) {
         checkMobileAppPanel(response);
       })));
@@ -908,6 +910,7 @@
       var arg_maxResults = 42;
       var arg_startIndex = 42;
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -946,6 +949,7 @@
         unittest.expect(core.int.parse(queryMap["startIndex"].first),
             unittest.equals(arg_startIndex));
         unittest.expect(queryMap["token"].first, unittest.equals(arg_token));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -957,7 +961,8 @@
           .list(
               maxResults: arg_maxResults,
               startIndex: arg_startIndex,
-              token: arg_token)
+              token: arg_token,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.MobileAppPanelsListResponse response) {
         checkMobileAppPanelsListResponse(response);
@@ -970,6 +975,7 @@
           new api.SurveysApi(mock).mobileapppanels;
       var arg_request = buildMobileAppPanel();
       var arg_panelId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.MobileAppPanel.fromJson(json);
         checkMobileAppPanel(obj);
@@ -1009,6 +1015,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1017,7 +1024,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_panelId)
+          .update(arg_request, arg_panelId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.MobileAppPanel response) {
         checkMobileAppPanel(response);
       })));
@@ -1033,6 +1040,7 @@
       api.ResultsResourceApi res = new api.SurveysApi(mock).results;
       var arg_request = buildResultsGetRequest();
       var arg_surveyUrlId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ResultsGetRequest.fromJson(json);
         checkResultsGetRequest(obj);
@@ -1078,6 +1086,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1086,7 +1095,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_request, arg_surveyUrlId)
+          .get(arg_request, arg_surveyUrlId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SurveyResults response) {
         checkSurveyResults(response);
       })));
@@ -1098,6 +1107,7 @@
       var mock = new HttpServerMock();
       api.SurveysResourceApi res = new api.SurveysApi(mock).surveys;
       var arg_surveyUrlId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1134,6 +1144,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1142,7 +1153,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_surveyUrlId)
+          .delete(arg_surveyUrlId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SurveysDeleteResponse response) {
         checkSurveysDeleteResponse(response);
       })));
@@ -1152,6 +1163,7 @@
       var mock = new HttpServerMock();
       api.SurveysResourceApi res = new api.SurveysApi(mock).surveys;
       var arg_surveyUrlId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1188,6 +1200,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1196,7 +1209,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_surveyUrlId)
+          .get(arg_surveyUrlId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Survey response) {
         checkSurvey(response);
       })));
@@ -1206,6 +1219,7 @@
       var mock = new HttpServerMock();
       api.SurveysResourceApi res = new api.SurveysApi(mock).surveys;
       var arg_request = buildSurvey();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Survey.fromJson(json);
         checkSurvey(obj);
@@ -1242,6 +1256,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1250,7 +1265,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request)
+          .insert(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Survey response) {
         checkSurvey(response);
       })));
@@ -1262,6 +1277,7 @@
       var arg_maxResults = 42;
       var arg_startIndex = 42;
       var arg_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1300,6 +1316,7 @@
         unittest.expect(core.int.parse(queryMap["startIndex"].first),
             unittest.equals(arg_startIndex));
         unittest.expect(queryMap["token"].first, unittest.equals(arg_token));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1311,7 +1328,8 @@
           .list(
               maxResults: arg_maxResults,
               startIndex: arg_startIndex,
-              token: arg_token)
+              token: arg_token,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SurveysListResponse response) {
         checkSurveysListResponse(response);
       })));
@@ -1322,6 +1340,7 @@
       api.SurveysResourceApi res = new api.SurveysApi(mock).surveys;
       var arg_request = buildSurveysStartRequest();
       var arg_resourceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SurveysStartRequest.fromJson(json);
         checkSurveysStartRequest(obj);
@@ -1367,6 +1386,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1375,7 +1395,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .start(arg_request, arg_resourceId)
+          .start(arg_request, arg_resourceId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SurveysStartResponse response) {
         checkSurveysStartResponse(response);
       })));
@@ -1385,6 +1405,7 @@
       var mock = new HttpServerMock();
       api.SurveysResourceApi res = new api.SurveysApi(mock).surveys;
       var arg_resourceId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1427,6 +1448,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1435,7 +1457,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .stop(arg_resourceId)
+          .stop(arg_resourceId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SurveysStopResponse response) {
         checkSurveysStopResponse(response);
       })));
@@ -1446,6 +1468,7 @@
       api.SurveysResourceApi res = new api.SurveysApi(mock).surveys;
       var arg_request = buildSurvey();
       var arg_surveyUrlId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Survey.fromJson(json);
         checkSurvey(obj);
@@ -1485,6 +1508,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1493,7 +1517,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_surveyUrlId)
+          .update(arg_request, arg_surveyUrlId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Survey response) {
         checkSurvey(response);
       })));
diff --git a/generated/googleapis/test/tagmanager/v1_test.dart b/generated/googleapis/test/tagmanager/v1_test.dart
new file mode 100644
index 0000000..e946ed0
--- /dev/null
+++ b/generated/googleapis/test/tagmanager/v1_test.dart
@@ -0,0 +1,5610 @@
+library googleapis.tagmanager.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/tagmanager/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAccount = 0;
+buildAccount() {
+  var o = new api.Account();
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    o.accountId = "foo";
+    o.fingerprint = "foo";
+    o.name = "foo";
+    o.shareData = true;
+  }
+  buildCounterAccount--;
+  return o;
+}
+
+checkAccount(api.Account o) {
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.shareData, unittest.isTrue);
+  }
+  buildCounterAccount--;
+}
+
+buildUnnamed1682() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1682(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAccountAccess = 0;
+buildAccountAccess() {
+  var o = new api.AccountAccess();
+  buildCounterAccountAccess++;
+  if (buildCounterAccountAccess < 3) {
+    o.permission = buildUnnamed1682();
+  }
+  buildCounterAccountAccess--;
+  return o;
+}
+
+checkAccountAccess(api.AccountAccess o) {
+  buildCounterAccountAccess++;
+  if (buildCounterAccountAccess < 3) {
+    checkUnnamed1682(o.permission);
+  }
+  buildCounterAccountAccess--;
+}
+
+buildUnnamed1683() {
+  var o = new core.List<api.Parameter>();
+  o.add(buildParameter());
+  o.add(buildParameter());
+  return o;
+}
+
+checkUnnamed1683(core.List<api.Parameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkParameter(o[0]);
+  checkParameter(o[1]);
+}
+
+core.int buildCounterCondition = 0;
+buildCondition() {
+  var o = new api.Condition();
+  buildCounterCondition++;
+  if (buildCounterCondition < 3) {
+    o.parameter = buildUnnamed1683();
+    o.type = "foo";
+  }
+  buildCounterCondition--;
+  return o;
+}
+
+checkCondition(api.Condition o) {
+  buildCounterCondition++;
+  if (buildCounterCondition < 3) {
+    checkUnnamed1683(o.parameter);
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterCondition--;
+}
+
+buildUnnamed1684() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1684(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1685() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1685(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1686() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1686(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterContainer = 0;
+buildContainer() {
+  var o = new api.Container();
+  buildCounterContainer++;
+  if (buildCounterContainer < 3) {
+    o.accountId = "foo";
+    o.containerId = "foo";
+    o.domainName = buildUnnamed1684();
+    o.enabledBuiltInVariable = buildUnnamed1685();
+    o.fingerprint = "foo";
+    o.name = "foo";
+    o.notes = "foo";
+    o.publicId = "foo";
+    o.timeZoneCountryId = "foo";
+    o.timeZoneId = "foo";
+    o.usageContext = buildUnnamed1686();
+  }
+  buildCounterContainer--;
+  return o;
+}
+
+checkContainer(api.Container o) {
+  buildCounterContainer++;
+  if (buildCounterContainer < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    checkUnnamed1684(o.domainName);
+    checkUnnamed1685(o.enabledBuiltInVariable);
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    unittest.expect(o.publicId, unittest.equals('foo'));
+    unittest.expect(o.timeZoneCountryId, unittest.equals('foo'));
+    unittest.expect(o.timeZoneId, unittest.equals('foo'));
+    checkUnnamed1686(o.usageContext);
+  }
+  buildCounterContainer--;
+}
+
+buildUnnamed1687() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1687(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterContainerAccess = 0;
+buildContainerAccess() {
+  var o = new api.ContainerAccess();
+  buildCounterContainerAccess++;
+  if (buildCounterContainerAccess < 3) {
+    o.containerId = "foo";
+    o.permission = buildUnnamed1687();
+  }
+  buildCounterContainerAccess--;
+  return o;
+}
+
+checkContainerAccess(api.ContainerAccess o) {
+  buildCounterContainerAccess++;
+  if (buildCounterContainerAccess < 3) {
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    checkUnnamed1687(o.permission);
+  }
+  buildCounterContainerAccess--;
+}
+
+buildUnnamed1688() {
+  var o = new core.List<api.Folder>();
+  o.add(buildFolder());
+  o.add(buildFolder());
+  return o;
+}
+
+checkUnnamed1688(core.List<api.Folder> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFolder(o[0]);
+  checkFolder(o[1]);
+}
+
+buildUnnamed1689() {
+  var o = new core.List<api.Macro>();
+  o.add(buildMacro());
+  o.add(buildMacro());
+  return o;
+}
+
+checkUnnamed1689(core.List<api.Macro> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMacro(o[0]);
+  checkMacro(o[1]);
+}
+
+buildUnnamed1690() {
+  var o = new core.List<api.Rule>();
+  o.add(buildRule());
+  o.add(buildRule());
+  return o;
+}
+
+checkUnnamed1690(core.List<api.Rule> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRule(o[0]);
+  checkRule(o[1]);
+}
+
+buildUnnamed1691() {
+  var o = new core.List<api.Tag>();
+  o.add(buildTag());
+  o.add(buildTag());
+  return o;
+}
+
+checkUnnamed1691(core.List<api.Tag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTag(o[0]);
+  checkTag(o[1]);
+}
+
+buildUnnamed1692() {
+  var o = new core.List<api.Trigger>();
+  o.add(buildTrigger());
+  o.add(buildTrigger());
+  return o;
+}
+
+checkUnnamed1692(core.List<api.Trigger> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTrigger(o[0]);
+  checkTrigger(o[1]);
+}
+
+buildUnnamed1693() {
+  var o = new core.List<api.Variable>();
+  o.add(buildVariable());
+  o.add(buildVariable());
+  return o;
+}
+
+checkUnnamed1693(core.List<api.Variable> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVariable(o[0]);
+  checkVariable(o[1]);
+}
+
+core.int buildCounterContainerVersion = 0;
+buildContainerVersion() {
+  var o = new api.ContainerVersion();
+  buildCounterContainerVersion++;
+  if (buildCounterContainerVersion < 3) {
+    o.accountId = "foo";
+    o.container = buildContainer();
+    o.containerId = "foo";
+    o.containerVersionId = "foo";
+    o.deleted = true;
+    o.fingerprint = "foo";
+    o.folder = buildUnnamed1688();
+    o.macro = buildUnnamed1689();
+    o.name = "foo";
+    o.notes = "foo";
+    o.rule = buildUnnamed1690();
+    o.tag = buildUnnamed1691();
+    o.trigger = buildUnnamed1692();
+    o.variable = buildUnnamed1693();
+  }
+  buildCounterContainerVersion--;
+  return o;
+}
+
+checkContainerVersion(api.ContainerVersion o) {
+  buildCounterContainerVersion++;
+  if (buildCounterContainerVersion < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkContainer(o.container);
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    unittest.expect(o.containerVersionId, unittest.equals('foo'));
+    unittest.expect(o.deleted, unittest.isTrue);
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    checkUnnamed1688(o.folder);
+    checkUnnamed1689(o.macro);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    checkUnnamed1690(o.rule);
+    checkUnnamed1691(o.tag);
+    checkUnnamed1692(o.trigger);
+    checkUnnamed1693(o.variable);
+  }
+  buildCounterContainerVersion--;
+}
+
+core.int buildCounterContainerVersionHeader = 0;
+buildContainerVersionHeader() {
+  var o = new api.ContainerVersionHeader();
+  buildCounterContainerVersionHeader++;
+  if (buildCounterContainerVersionHeader < 3) {
+    o.accountId = "foo";
+    o.containerId = "foo";
+    o.containerVersionId = "foo";
+    o.deleted = true;
+    o.name = "foo";
+    o.numMacros = "foo";
+    o.numRules = "foo";
+    o.numTags = "foo";
+    o.numTriggers = "foo";
+    o.numVariables = "foo";
+  }
+  buildCounterContainerVersionHeader--;
+  return o;
+}
+
+checkContainerVersionHeader(api.ContainerVersionHeader o) {
+  buildCounterContainerVersionHeader++;
+  if (buildCounterContainerVersionHeader < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    unittest.expect(o.containerVersionId, unittest.equals('foo'));
+    unittest.expect(o.deleted, unittest.isTrue);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.numMacros, unittest.equals('foo'));
+    unittest.expect(o.numRules, unittest.equals('foo'));
+    unittest.expect(o.numTags, unittest.equals('foo'));
+    unittest.expect(o.numTriggers, unittest.equals('foo'));
+    unittest.expect(o.numVariables, unittest.equals('foo'));
+  }
+  buildCounterContainerVersionHeader--;
+}
+
+core.int buildCounterCreateContainerVersionRequestVersionOptions = 0;
+buildCreateContainerVersionRequestVersionOptions() {
+  var o = new api.CreateContainerVersionRequestVersionOptions();
+  buildCounterCreateContainerVersionRequestVersionOptions++;
+  if (buildCounterCreateContainerVersionRequestVersionOptions < 3) {
+    o.name = "foo";
+    o.notes = "foo";
+    o.quickPreview = true;
+  }
+  buildCounterCreateContainerVersionRequestVersionOptions--;
+  return o;
+}
+
+checkCreateContainerVersionRequestVersionOptions(
+    api.CreateContainerVersionRequestVersionOptions o) {
+  buildCounterCreateContainerVersionRequestVersionOptions++;
+  if (buildCounterCreateContainerVersionRequestVersionOptions < 3) {
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    unittest.expect(o.quickPreview, unittest.isTrue);
+  }
+  buildCounterCreateContainerVersionRequestVersionOptions--;
+}
+
+core.int buildCounterCreateContainerVersionResponse = 0;
+buildCreateContainerVersionResponse() {
+  var o = new api.CreateContainerVersionResponse();
+  buildCounterCreateContainerVersionResponse++;
+  if (buildCounterCreateContainerVersionResponse < 3) {
+    o.compilerError = true;
+    o.containerVersion = buildContainerVersion();
+  }
+  buildCounterCreateContainerVersionResponse--;
+  return o;
+}
+
+checkCreateContainerVersionResponse(api.CreateContainerVersionResponse o) {
+  buildCounterCreateContainerVersionResponse++;
+  if (buildCounterCreateContainerVersionResponse < 3) {
+    unittest.expect(o.compilerError, unittest.isTrue);
+    checkContainerVersion(o.containerVersion);
+  }
+  buildCounterCreateContainerVersionResponse--;
+}
+
+core.int buildCounterEnvironment = 0;
+buildEnvironment() {
+  var o = new api.Environment();
+  buildCounterEnvironment++;
+  if (buildCounterEnvironment < 3) {
+    o.accountId = "foo";
+    o.authorizationCode = "foo";
+    o.authorizationTimestampMs = "foo";
+    o.containerId = "foo";
+    o.containerVersionId = "foo";
+    o.description = "foo";
+    o.enableDebug = true;
+    o.environmentId = "foo";
+    o.fingerprint = "foo";
+    o.name = "foo";
+    o.type = "foo";
+    o.url = "foo";
+  }
+  buildCounterEnvironment--;
+  return o;
+}
+
+checkEnvironment(api.Environment o) {
+  buildCounterEnvironment++;
+  if (buildCounterEnvironment < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.authorizationCode, unittest.equals('foo'));
+    unittest.expect(o.authorizationTimestampMs, unittest.equals('foo'));
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    unittest.expect(o.containerVersionId, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.enableDebug, unittest.isTrue);
+    unittest.expect(o.environmentId, unittest.equals('foo'));
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterEnvironment--;
+}
+
+core.int buildCounterFolder = 0;
+buildFolder() {
+  var o = new api.Folder();
+  buildCounterFolder++;
+  if (buildCounterFolder < 3) {
+    o.accountId = "foo";
+    o.containerId = "foo";
+    o.fingerprint = "foo";
+    o.folderId = "foo";
+    o.name = "foo";
+  }
+  buildCounterFolder--;
+  return o;
+}
+
+checkFolder(api.Folder o) {
+  buildCounterFolder++;
+  if (buildCounterFolder < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    unittest.expect(o.folderId, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterFolder--;
+}
+
+buildUnnamed1694() {
+  var o = new core.List<api.Tag>();
+  o.add(buildTag());
+  o.add(buildTag());
+  return o;
+}
+
+checkUnnamed1694(core.List<api.Tag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTag(o[0]);
+  checkTag(o[1]);
+}
+
+buildUnnamed1695() {
+  var o = new core.List<api.Trigger>();
+  o.add(buildTrigger());
+  o.add(buildTrigger());
+  return o;
+}
+
+checkUnnamed1695(core.List<api.Trigger> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTrigger(o[0]);
+  checkTrigger(o[1]);
+}
+
+buildUnnamed1696() {
+  var o = new core.List<api.Variable>();
+  o.add(buildVariable());
+  o.add(buildVariable());
+  return o;
+}
+
+checkUnnamed1696(core.List<api.Variable> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVariable(o[0]);
+  checkVariable(o[1]);
+}
+
+core.int buildCounterFolderEntities = 0;
+buildFolderEntities() {
+  var o = new api.FolderEntities();
+  buildCounterFolderEntities++;
+  if (buildCounterFolderEntities < 3) {
+    o.tag = buildUnnamed1694();
+    o.trigger = buildUnnamed1695();
+    o.variable = buildUnnamed1696();
+  }
+  buildCounterFolderEntities--;
+  return o;
+}
+
+checkFolderEntities(api.FolderEntities o) {
+  buildCounterFolderEntities++;
+  if (buildCounterFolderEntities < 3) {
+    checkUnnamed1694(o.tag);
+    checkUnnamed1695(o.trigger);
+    checkUnnamed1696(o.variable);
+  }
+  buildCounterFolderEntities--;
+}
+
+buildUnnamed1697() {
+  var o = new core.List<api.UserAccess>();
+  o.add(buildUserAccess());
+  o.add(buildUserAccess());
+  return o;
+}
+
+checkUnnamed1697(core.List<api.UserAccess> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUserAccess(o[0]);
+  checkUserAccess(o[1]);
+}
+
+core.int buildCounterListAccountUsersResponse = 0;
+buildListAccountUsersResponse() {
+  var o = new api.ListAccountUsersResponse();
+  buildCounterListAccountUsersResponse++;
+  if (buildCounterListAccountUsersResponse < 3) {
+    o.userAccess = buildUnnamed1697();
+  }
+  buildCounterListAccountUsersResponse--;
+  return o;
+}
+
+checkListAccountUsersResponse(api.ListAccountUsersResponse o) {
+  buildCounterListAccountUsersResponse++;
+  if (buildCounterListAccountUsersResponse < 3) {
+    checkUnnamed1697(o.userAccess);
+  }
+  buildCounterListAccountUsersResponse--;
+}
+
+buildUnnamed1698() {
+  var o = new core.List<api.Account>();
+  o.add(buildAccount());
+  o.add(buildAccount());
+  return o;
+}
+
+checkUnnamed1698(core.List<api.Account> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccount(o[0]);
+  checkAccount(o[1]);
+}
+
+core.int buildCounterListAccountsResponse = 0;
+buildListAccountsResponse() {
+  var o = new api.ListAccountsResponse();
+  buildCounterListAccountsResponse++;
+  if (buildCounterListAccountsResponse < 3) {
+    o.accounts = buildUnnamed1698();
+  }
+  buildCounterListAccountsResponse--;
+  return o;
+}
+
+checkListAccountsResponse(api.ListAccountsResponse o) {
+  buildCounterListAccountsResponse++;
+  if (buildCounterListAccountsResponse < 3) {
+    checkUnnamed1698(o.accounts);
+  }
+  buildCounterListAccountsResponse--;
+}
+
+buildUnnamed1699() {
+  var o = new core.List<api.ContainerVersion>();
+  o.add(buildContainerVersion());
+  o.add(buildContainerVersion());
+  return o;
+}
+
+checkUnnamed1699(core.List<api.ContainerVersion> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContainerVersion(o[0]);
+  checkContainerVersion(o[1]);
+}
+
+buildUnnamed1700() {
+  var o = new core.List<api.ContainerVersionHeader>();
+  o.add(buildContainerVersionHeader());
+  o.add(buildContainerVersionHeader());
+  return o;
+}
+
+checkUnnamed1700(core.List<api.ContainerVersionHeader> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContainerVersionHeader(o[0]);
+  checkContainerVersionHeader(o[1]);
+}
+
+core.int buildCounterListContainerVersionsResponse = 0;
+buildListContainerVersionsResponse() {
+  var o = new api.ListContainerVersionsResponse();
+  buildCounterListContainerVersionsResponse++;
+  if (buildCounterListContainerVersionsResponse < 3) {
+    o.containerVersion = buildUnnamed1699();
+    o.containerVersionHeader = buildUnnamed1700();
+  }
+  buildCounterListContainerVersionsResponse--;
+  return o;
+}
+
+checkListContainerVersionsResponse(api.ListContainerVersionsResponse o) {
+  buildCounterListContainerVersionsResponse++;
+  if (buildCounterListContainerVersionsResponse < 3) {
+    checkUnnamed1699(o.containerVersion);
+    checkUnnamed1700(o.containerVersionHeader);
+  }
+  buildCounterListContainerVersionsResponse--;
+}
+
+buildUnnamed1701() {
+  var o = new core.List<api.Container>();
+  o.add(buildContainer());
+  o.add(buildContainer());
+  return o;
+}
+
+checkUnnamed1701(core.List<api.Container> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContainer(o[0]);
+  checkContainer(o[1]);
+}
+
+core.int buildCounterListContainersResponse = 0;
+buildListContainersResponse() {
+  var o = new api.ListContainersResponse();
+  buildCounterListContainersResponse++;
+  if (buildCounterListContainersResponse < 3) {
+    o.containers = buildUnnamed1701();
+  }
+  buildCounterListContainersResponse--;
+  return o;
+}
+
+checkListContainersResponse(api.ListContainersResponse o) {
+  buildCounterListContainersResponse++;
+  if (buildCounterListContainersResponse < 3) {
+    checkUnnamed1701(o.containers);
+  }
+  buildCounterListContainersResponse--;
+}
+
+buildUnnamed1702() {
+  var o = new core.List<api.Environment>();
+  o.add(buildEnvironment());
+  o.add(buildEnvironment());
+  return o;
+}
+
+checkUnnamed1702(core.List<api.Environment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEnvironment(o[0]);
+  checkEnvironment(o[1]);
+}
+
+core.int buildCounterListEnvironmentsResponse = 0;
+buildListEnvironmentsResponse() {
+  var o = new api.ListEnvironmentsResponse();
+  buildCounterListEnvironmentsResponse++;
+  if (buildCounterListEnvironmentsResponse < 3) {
+    o.environments = buildUnnamed1702();
+  }
+  buildCounterListEnvironmentsResponse--;
+  return o;
+}
+
+checkListEnvironmentsResponse(api.ListEnvironmentsResponse o) {
+  buildCounterListEnvironmentsResponse++;
+  if (buildCounterListEnvironmentsResponse < 3) {
+    checkUnnamed1702(o.environments);
+  }
+  buildCounterListEnvironmentsResponse--;
+}
+
+buildUnnamed1703() {
+  var o = new core.List<api.Folder>();
+  o.add(buildFolder());
+  o.add(buildFolder());
+  return o;
+}
+
+checkUnnamed1703(core.List<api.Folder> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFolder(o[0]);
+  checkFolder(o[1]);
+}
+
+core.int buildCounterListFoldersResponse = 0;
+buildListFoldersResponse() {
+  var o = new api.ListFoldersResponse();
+  buildCounterListFoldersResponse++;
+  if (buildCounterListFoldersResponse < 3) {
+    o.folders = buildUnnamed1703();
+  }
+  buildCounterListFoldersResponse--;
+  return o;
+}
+
+checkListFoldersResponse(api.ListFoldersResponse o) {
+  buildCounterListFoldersResponse++;
+  if (buildCounterListFoldersResponse < 3) {
+    checkUnnamed1703(o.folders);
+  }
+  buildCounterListFoldersResponse--;
+}
+
+buildUnnamed1704() {
+  var o = new core.List<api.Tag>();
+  o.add(buildTag());
+  o.add(buildTag());
+  return o;
+}
+
+checkUnnamed1704(core.List<api.Tag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTag(o[0]);
+  checkTag(o[1]);
+}
+
+core.int buildCounterListTagsResponse = 0;
+buildListTagsResponse() {
+  var o = new api.ListTagsResponse();
+  buildCounterListTagsResponse++;
+  if (buildCounterListTagsResponse < 3) {
+    o.tags = buildUnnamed1704();
+  }
+  buildCounterListTagsResponse--;
+  return o;
+}
+
+checkListTagsResponse(api.ListTagsResponse o) {
+  buildCounterListTagsResponse++;
+  if (buildCounterListTagsResponse < 3) {
+    checkUnnamed1704(o.tags);
+  }
+  buildCounterListTagsResponse--;
+}
+
+buildUnnamed1705() {
+  var o = new core.List<api.Trigger>();
+  o.add(buildTrigger());
+  o.add(buildTrigger());
+  return o;
+}
+
+checkUnnamed1705(core.List<api.Trigger> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTrigger(o[0]);
+  checkTrigger(o[1]);
+}
+
+core.int buildCounterListTriggersResponse = 0;
+buildListTriggersResponse() {
+  var o = new api.ListTriggersResponse();
+  buildCounterListTriggersResponse++;
+  if (buildCounterListTriggersResponse < 3) {
+    o.triggers = buildUnnamed1705();
+  }
+  buildCounterListTriggersResponse--;
+  return o;
+}
+
+checkListTriggersResponse(api.ListTriggersResponse o) {
+  buildCounterListTriggersResponse++;
+  if (buildCounterListTriggersResponse < 3) {
+    checkUnnamed1705(o.triggers);
+  }
+  buildCounterListTriggersResponse--;
+}
+
+buildUnnamed1706() {
+  var o = new core.List<api.Variable>();
+  o.add(buildVariable());
+  o.add(buildVariable());
+  return o;
+}
+
+checkUnnamed1706(core.List<api.Variable> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVariable(o[0]);
+  checkVariable(o[1]);
+}
+
+core.int buildCounterListVariablesResponse = 0;
+buildListVariablesResponse() {
+  var o = new api.ListVariablesResponse();
+  buildCounterListVariablesResponse++;
+  if (buildCounterListVariablesResponse < 3) {
+    o.variables = buildUnnamed1706();
+  }
+  buildCounterListVariablesResponse--;
+  return o;
+}
+
+checkListVariablesResponse(api.ListVariablesResponse o) {
+  buildCounterListVariablesResponse++;
+  if (buildCounterListVariablesResponse < 3) {
+    checkUnnamed1706(o.variables);
+  }
+  buildCounterListVariablesResponse--;
+}
+
+buildUnnamed1707() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1707(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1708() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1708(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1709() {
+  var o = new core.List<api.Parameter>();
+  o.add(buildParameter());
+  o.add(buildParameter());
+  return o;
+}
+
+checkUnnamed1709(core.List<api.Parameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkParameter(o[0]);
+  checkParameter(o[1]);
+}
+
+core.int buildCounterMacro = 0;
+buildMacro() {
+  var o = new api.Macro();
+  buildCounterMacro++;
+  if (buildCounterMacro < 3) {
+    o.accountId = "foo";
+    o.containerId = "foo";
+    o.disablingRuleId = buildUnnamed1707();
+    o.enablingRuleId = buildUnnamed1708();
+    o.fingerprint = "foo";
+    o.macroId = "foo";
+    o.name = "foo";
+    o.notes = "foo";
+    o.parameter = buildUnnamed1709();
+    o.parentFolderId = "foo";
+    o.scheduleEndMs = "foo";
+    o.scheduleStartMs = "foo";
+    o.type = "foo";
+  }
+  buildCounterMacro--;
+  return o;
+}
+
+checkMacro(api.Macro o) {
+  buildCounterMacro++;
+  if (buildCounterMacro < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    checkUnnamed1707(o.disablingRuleId);
+    checkUnnamed1708(o.enablingRuleId);
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    unittest.expect(o.macroId, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    checkUnnamed1709(o.parameter);
+    unittest.expect(o.parentFolderId, unittest.equals('foo'));
+    unittest.expect(o.scheduleEndMs, unittest.equals('foo'));
+    unittest.expect(o.scheduleStartMs, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterMacro--;
+}
+
+buildUnnamed1710() {
+  var o = new core.List<api.Parameter>();
+  o.add(buildParameter());
+  o.add(buildParameter());
+  return o;
+}
+
+checkUnnamed1710(core.List<api.Parameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkParameter(o[0]);
+  checkParameter(o[1]);
+}
+
+buildUnnamed1711() {
+  var o = new core.List<api.Parameter>();
+  o.add(buildParameter());
+  o.add(buildParameter());
+  return o;
+}
+
+checkUnnamed1711(core.List<api.Parameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkParameter(o[0]);
+  checkParameter(o[1]);
+}
+
+core.int buildCounterParameter = 0;
+buildParameter() {
+  var o = new api.Parameter();
+  buildCounterParameter++;
+  if (buildCounterParameter < 3) {
+    o.key = "foo";
+    o.list = buildUnnamed1710();
+    o.map = buildUnnamed1711();
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterParameter--;
+  return o;
+}
+
+checkParameter(api.Parameter o) {
+  buildCounterParameter++;
+  if (buildCounterParameter < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    checkUnnamed1710(o.list);
+    checkUnnamed1711(o.map);
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterParameter--;
+}
+
+core.int buildCounterPublishContainerVersionResponse = 0;
+buildPublishContainerVersionResponse() {
+  var o = new api.PublishContainerVersionResponse();
+  buildCounterPublishContainerVersionResponse++;
+  if (buildCounterPublishContainerVersionResponse < 3) {
+    o.compilerError = true;
+    o.containerVersion = buildContainerVersion();
+  }
+  buildCounterPublishContainerVersionResponse--;
+  return o;
+}
+
+checkPublishContainerVersionResponse(api.PublishContainerVersionResponse o) {
+  buildCounterPublishContainerVersionResponse++;
+  if (buildCounterPublishContainerVersionResponse < 3) {
+    unittest.expect(o.compilerError, unittest.isTrue);
+    checkContainerVersion(o.containerVersion);
+  }
+  buildCounterPublishContainerVersionResponse--;
+}
+
+buildUnnamed1712() {
+  var o = new core.List<api.Condition>();
+  o.add(buildCondition());
+  o.add(buildCondition());
+  return o;
+}
+
+checkUnnamed1712(core.List<api.Condition> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCondition(o[0]);
+  checkCondition(o[1]);
+}
+
+core.int buildCounterRule = 0;
+buildRule() {
+  var o = new api.Rule();
+  buildCounterRule++;
+  if (buildCounterRule < 3) {
+    o.accountId = "foo";
+    o.condition = buildUnnamed1712();
+    o.containerId = "foo";
+    o.fingerprint = "foo";
+    o.name = "foo";
+    o.notes = "foo";
+    o.ruleId = "foo";
+  }
+  buildCounterRule--;
+  return o;
+}
+
+checkRule(api.Rule o) {
+  buildCounterRule++;
+  if (buildCounterRule < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkUnnamed1712(o.condition);
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    unittest.expect(o.ruleId, unittest.equals('foo'));
+  }
+  buildCounterRule--;
+}
+
+core.int buildCounterSetupTag = 0;
+buildSetupTag() {
+  var o = new api.SetupTag();
+  buildCounterSetupTag++;
+  if (buildCounterSetupTag < 3) {
+    o.stopOnSetupFailure = true;
+    o.tagName = "foo";
+  }
+  buildCounterSetupTag--;
+  return o;
+}
+
+checkSetupTag(api.SetupTag o) {
+  buildCounterSetupTag++;
+  if (buildCounterSetupTag < 3) {
+    unittest.expect(o.stopOnSetupFailure, unittest.isTrue);
+    unittest.expect(o.tagName, unittest.equals('foo'));
+  }
+  buildCounterSetupTag--;
+}
+
+buildUnnamed1713() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1713(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1714() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1714(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1715() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1715(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1716() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1716(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1717() {
+  var o = new core.List<api.Parameter>();
+  o.add(buildParameter());
+  o.add(buildParameter());
+  return o;
+}
+
+checkUnnamed1717(core.List<api.Parameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkParameter(o[0]);
+  checkParameter(o[1]);
+}
+
+buildUnnamed1718() {
+  var o = new core.List<api.SetupTag>();
+  o.add(buildSetupTag());
+  o.add(buildSetupTag());
+  return o;
+}
+
+checkUnnamed1718(core.List<api.SetupTag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSetupTag(o[0]);
+  checkSetupTag(o[1]);
+}
+
+buildUnnamed1719() {
+  var o = new core.List<api.TeardownTag>();
+  o.add(buildTeardownTag());
+  o.add(buildTeardownTag());
+  return o;
+}
+
+checkUnnamed1719(core.List<api.TeardownTag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTeardownTag(o[0]);
+  checkTeardownTag(o[1]);
+}
+
+core.int buildCounterTag = 0;
+buildTag() {
+  var o = new api.Tag();
+  buildCounterTag++;
+  if (buildCounterTag < 3) {
+    o.accountId = "foo";
+    o.blockingRuleId = buildUnnamed1713();
+    o.blockingTriggerId = buildUnnamed1714();
+    o.containerId = "foo";
+    o.fingerprint = "foo";
+    o.firingRuleId = buildUnnamed1715();
+    o.firingTriggerId = buildUnnamed1716();
+    o.liveOnly = true;
+    o.name = "foo";
+    o.notes = "foo";
+    o.parameter = buildUnnamed1717();
+    o.parentFolderId = "foo";
+    o.priority = buildParameter();
+    o.scheduleEndMs = "foo";
+    o.scheduleStartMs = "foo";
+    o.setupTag = buildUnnamed1718();
+    o.tagFiringOption = "foo";
+    o.tagId = "foo";
+    o.teardownTag = buildUnnamed1719();
+    o.type = "foo";
+  }
+  buildCounterTag--;
+  return o;
+}
+
+checkTag(api.Tag o) {
+  buildCounterTag++;
+  if (buildCounterTag < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkUnnamed1713(o.blockingRuleId);
+    checkUnnamed1714(o.blockingTriggerId);
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    checkUnnamed1715(o.firingRuleId);
+    checkUnnamed1716(o.firingTriggerId);
+    unittest.expect(o.liveOnly, unittest.isTrue);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    checkUnnamed1717(o.parameter);
+    unittest.expect(o.parentFolderId, unittest.equals('foo'));
+    checkParameter(o.priority);
+    unittest.expect(o.scheduleEndMs, unittest.equals('foo'));
+    unittest.expect(o.scheduleStartMs, unittest.equals('foo'));
+    checkUnnamed1718(o.setupTag);
+    unittest.expect(o.tagFiringOption, unittest.equals('foo'));
+    unittest.expect(o.tagId, unittest.equals('foo'));
+    checkUnnamed1719(o.teardownTag);
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterTag--;
+}
+
+core.int buildCounterTeardownTag = 0;
+buildTeardownTag() {
+  var o = new api.TeardownTag();
+  buildCounterTeardownTag++;
+  if (buildCounterTeardownTag < 3) {
+    o.stopTeardownOnFailure = true;
+    o.tagName = "foo";
+  }
+  buildCounterTeardownTag--;
+  return o;
+}
+
+checkTeardownTag(api.TeardownTag o) {
+  buildCounterTeardownTag++;
+  if (buildCounterTeardownTag < 3) {
+    unittest.expect(o.stopTeardownOnFailure, unittest.isTrue);
+    unittest.expect(o.tagName, unittest.equals('foo'));
+  }
+  buildCounterTeardownTag--;
+}
+
+buildUnnamed1720() {
+  var o = new core.List<api.Condition>();
+  o.add(buildCondition());
+  o.add(buildCondition());
+  return o;
+}
+
+checkUnnamed1720(core.List<api.Condition> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCondition(o[0]);
+  checkCondition(o[1]);
+}
+
+buildUnnamed1721() {
+  var o = new core.List<api.Condition>();
+  o.add(buildCondition());
+  o.add(buildCondition());
+  return o;
+}
+
+checkUnnamed1721(core.List<api.Condition> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCondition(o[0]);
+  checkCondition(o[1]);
+}
+
+buildUnnamed1722() {
+  var o = new core.List<api.Condition>();
+  o.add(buildCondition());
+  o.add(buildCondition());
+  return o;
+}
+
+checkUnnamed1722(core.List<api.Condition> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCondition(o[0]);
+  checkCondition(o[1]);
+}
+
+core.int buildCounterTrigger = 0;
+buildTrigger() {
+  var o = new api.Trigger();
+  buildCounterTrigger++;
+  if (buildCounterTrigger < 3) {
+    o.accountId = "foo";
+    o.autoEventFilter = buildUnnamed1720();
+    o.checkValidation = buildParameter();
+    o.containerId = "foo";
+    o.customEventFilter = buildUnnamed1721();
+    o.enableAllVideos = buildParameter();
+    o.eventName = buildParameter();
+    o.filter = buildUnnamed1722();
+    o.fingerprint = "foo";
+    o.interval = buildParameter();
+    o.limit = buildParameter();
+    o.name = "foo";
+    o.parentFolderId = "foo";
+    o.triggerId = "foo";
+    o.type = "foo";
+    o.uniqueTriggerId = buildParameter();
+    o.videoPercentageList = buildParameter();
+    o.waitForTags = buildParameter();
+    o.waitForTagsTimeout = buildParameter();
+  }
+  buildCounterTrigger--;
+  return o;
+}
+
+checkTrigger(api.Trigger o) {
+  buildCounterTrigger++;
+  if (buildCounterTrigger < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkUnnamed1720(o.autoEventFilter);
+    checkParameter(o.checkValidation);
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    checkUnnamed1721(o.customEventFilter);
+    checkParameter(o.enableAllVideos);
+    checkParameter(o.eventName);
+    checkUnnamed1722(o.filter);
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    checkParameter(o.interval);
+    checkParameter(o.limit);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.parentFolderId, unittest.equals('foo'));
+    unittest.expect(o.triggerId, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    checkParameter(o.uniqueTriggerId);
+    checkParameter(o.videoPercentageList);
+    checkParameter(o.waitForTags);
+    checkParameter(o.waitForTagsTimeout);
+  }
+  buildCounterTrigger--;
+}
+
+buildUnnamed1723() {
+  var o = new core.List<api.ContainerAccess>();
+  o.add(buildContainerAccess());
+  o.add(buildContainerAccess());
+  return o;
+}
+
+checkUnnamed1723(core.List<api.ContainerAccess> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContainerAccess(o[0]);
+  checkContainerAccess(o[1]);
+}
+
+core.int buildCounterUserAccess = 0;
+buildUserAccess() {
+  var o = new api.UserAccess();
+  buildCounterUserAccess++;
+  if (buildCounterUserAccess < 3) {
+    o.accountAccess = buildAccountAccess();
+    o.accountId = "foo";
+    o.containerAccess = buildUnnamed1723();
+    o.emailAddress = "foo";
+    o.permissionId = "foo";
+  }
+  buildCounterUserAccess--;
+  return o;
+}
+
+checkUserAccess(api.UserAccess o) {
+  buildCounterUserAccess++;
+  if (buildCounterUserAccess < 3) {
+    checkAccountAccess(o.accountAccess);
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkUnnamed1723(o.containerAccess);
+    unittest.expect(o.emailAddress, unittest.equals('foo'));
+    unittest.expect(o.permissionId, unittest.equals('foo'));
+  }
+  buildCounterUserAccess--;
+}
+
+buildUnnamed1724() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1724(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1725() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1725(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1726() {
+  var o = new core.List<api.Parameter>();
+  o.add(buildParameter());
+  o.add(buildParameter());
+  return o;
+}
+
+checkUnnamed1726(core.List<api.Parameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkParameter(o[0]);
+  checkParameter(o[1]);
+}
+
+core.int buildCounterVariable = 0;
+buildVariable() {
+  var o = new api.Variable();
+  buildCounterVariable++;
+  if (buildCounterVariable < 3) {
+    o.accountId = "foo";
+    o.containerId = "foo";
+    o.disablingTriggerId = buildUnnamed1724();
+    o.enablingTriggerId = buildUnnamed1725();
+    o.fingerprint = "foo";
+    o.name = "foo";
+    o.notes = "foo";
+    o.parameter = buildUnnamed1726();
+    o.parentFolderId = "foo";
+    o.scheduleEndMs = "foo";
+    o.scheduleStartMs = "foo";
+    o.type = "foo";
+    o.variableId = "foo";
+  }
+  buildCounterVariable--;
+  return o;
+}
+
+checkVariable(api.Variable o) {
+  buildCounterVariable++;
+  if (buildCounterVariable < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    checkUnnamed1724(o.disablingTriggerId);
+    checkUnnamed1725(o.enablingTriggerId);
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    checkUnnamed1726(o.parameter);
+    unittest.expect(o.parentFolderId, unittest.equals('foo'));
+    unittest.expect(o.scheduleEndMs, unittest.equals('foo'));
+    unittest.expect(o.scheduleStartMs, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.variableId, unittest.equals('foo'));
+  }
+  buildCounterVariable--;
+}
+
+buildUnnamed1727() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1727(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1728() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1728(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1729() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1729(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-Account", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccount();
+      var od = new api.Account.fromJson(o.toJson());
+      checkAccount(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountAccess", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountAccess();
+      var od = new api.AccountAccess.fromJson(o.toJson());
+      checkAccountAccess(od);
+    });
+  });
+
+  unittest.group("obj-schema-Condition", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCondition();
+      var od = new api.Condition.fromJson(o.toJson());
+      checkCondition(od);
+    });
+  });
+
+  unittest.group("obj-schema-Container", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContainer();
+      var od = new api.Container.fromJson(o.toJson());
+      checkContainer(od);
+    });
+  });
+
+  unittest.group("obj-schema-ContainerAccess", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContainerAccess();
+      var od = new api.ContainerAccess.fromJson(o.toJson());
+      checkContainerAccess(od);
+    });
+  });
+
+  unittest.group("obj-schema-ContainerVersion", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContainerVersion();
+      var od = new api.ContainerVersion.fromJson(o.toJson());
+      checkContainerVersion(od);
+    });
+  });
+
+  unittest.group("obj-schema-ContainerVersionHeader", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContainerVersionHeader();
+      var od = new api.ContainerVersionHeader.fromJson(o.toJson());
+      checkContainerVersionHeader(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateContainerVersionRequestVersionOptions", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateContainerVersionRequestVersionOptions();
+      var od = new api.CreateContainerVersionRequestVersionOptions.fromJson(
+          o.toJson());
+      checkCreateContainerVersionRequestVersionOptions(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateContainerVersionResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateContainerVersionResponse();
+      var od = new api.CreateContainerVersionResponse.fromJson(o.toJson());
+      checkCreateContainerVersionResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Environment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEnvironment();
+      var od = new api.Environment.fromJson(o.toJson());
+      checkEnvironment(od);
+    });
+  });
+
+  unittest.group("obj-schema-Folder", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFolder();
+      var od = new api.Folder.fromJson(o.toJson());
+      checkFolder(od);
+    });
+  });
+
+  unittest.group("obj-schema-FolderEntities", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFolderEntities();
+      var od = new api.FolderEntities.fromJson(o.toJson());
+      checkFolderEntities(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListAccountUsersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListAccountUsersResponse();
+      var od = new api.ListAccountUsersResponse.fromJson(o.toJson());
+      checkListAccountUsersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListAccountsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListAccountsResponse();
+      var od = new api.ListAccountsResponse.fromJson(o.toJson());
+      checkListAccountsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListContainerVersionsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListContainerVersionsResponse();
+      var od = new api.ListContainerVersionsResponse.fromJson(o.toJson());
+      checkListContainerVersionsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListContainersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListContainersResponse();
+      var od = new api.ListContainersResponse.fromJson(o.toJson());
+      checkListContainersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListEnvironmentsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListEnvironmentsResponse();
+      var od = new api.ListEnvironmentsResponse.fromJson(o.toJson());
+      checkListEnvironmentsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListFoldersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListFoldersResponse();
+      var od = new api.ListFoldersResponse.fromJson(o.toJson());
+      checkListFoldersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListTagsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListTagsResponse();
+      var od = new api.ListTagsResponse.fromJson(o.toJson());
+      checkListTagsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListTriggersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListTriggersResponse();
+      var od = new api.ListTriggersResponse.fromJson(o.toJson());
+      checkListTriggersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListVariablesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListVariablesResponse();
+      var od = new api.ListVariablesResponse.fromJson(o.toJson());
+      checkListVariablesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Macro", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMacro();
+      var od = new api.Macro.fromJson(o.toJson());
+      checkMacro(od);
+    });
+  });
+
+  unittest.group("obj-schema-Parameter", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildParameter();
+      var od = new api.Parameter.fromJson(o.toJson());
+      checkParameter(od);
+    });
+  });
+
+  unittest.group("obj-schema-PublishContainerVersionResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPublishContainerVersionResponse();
+      var od = new api.PublishContainerVersionResponse.fromJson(o.toJson());
+      checkPublishContainerVersionResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Rule", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRule();
+      var od = new api.Rule.fromJson(o.toJson());
+      checkRule(od);
+    });
+  });
+
+  unittest.group("obj-schema-SetupTag", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSetupTag();
+      var od = new api.SetupTag.fromJson(o.toJson());
+      checkSetupTag(od);
+    });
+  });
+
+  unittest.group("obj-schema-Tag", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTag();
+      var od = new api.Tag.fromJson(o.toJson());
+      checkTag(od);
+    });
+  });
+
+  unittest.group("obj-schema-TeardownTag", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTeardownTag();
+      var od = new api.TeardownTag.fromJson(o.toJson());
+      checkTeardownTag(od);
+    });
+  });
+
+  unittest.group("obj-schema-Trigger", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTrigger();
+      var od = new api.Trigger.fromJson(o.toJson());
+      checkTrigger(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserAccess", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserAccess();
+      var od = new api.UserAccess.fromJson(o.toJson());
+      checkUserAccess(od);
+    });
+  });
+
+  unittest.group("obj-schema-Variable", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVariable();
+      var od = new api.Variable.fromJson(o.toJson());
+      checkVariable(od);
+    });
+  });
+
+  unittest.group("resource-AccountsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.TagmanagerApi(mock).accounts;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.TagmanagerApi(mock).accounts;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("accounts"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListAccountsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListAccountsResponse response) {
+        checkListAccountsResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.TagmanagerApi(mock).accounts;
+      var arg_request = buildAccount();
+      var arg_accountId = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Account.fromJson(json);
+        checkAccount(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_accountId,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers;
+      var arg_request = buildContainer();
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Container.fromJson(json);
+        checkContainer(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/containers"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainer());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Container response) {
+        checkContainer(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_accountId, arg_containerId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainer());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_containerId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Container response) {
+        checkContainer(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/containers"));
+        pathOffset += 11;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListContainersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListContainersResponse response) {
+        checkListContainersResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers;
+      var arg_request = buildContainer();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Container.fromJson(json);
+        checkContainer(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainer());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_accountId, arg_containerId,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Container response) {
+        checkContainer(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersEnvironmentsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersEnvironmentsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.environments;
+      var arg_request = buildEnvironment();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Environment.fromJson(json);
+        checkEnvironment(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/environments", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/environments"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEnvironment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_accountId, arg_containerId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Environment response) {
+        checkEnvironment(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersEnvironmentsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.environments;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_environmentId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/environments/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/environments/"));
+        pathOffset += 14;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_environmentId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_accountId, arg_containerId, arg_environmentId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersEnvironmentsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.environments;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_environmentId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/environments/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/environments/"));
+        pathOffset += 14;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_environmentId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEnvironment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_containerId, arg_environmentId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Environment response) {
+        checkEnvironment(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersEnvironmentsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.environments;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/environments", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/environments"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListEnvironmentsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_containerId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListEnvironmentsResponse response) {
+        checkListEnvironmentsResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersEnvironmentsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.environments;
+      var arg_request = buildEnvironment();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_environmentId = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Environment.fromJson(json);
+        checkEnvironment(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/environments/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/environments/"));
+        pathOffset += 14;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_environmentId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEnvironment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_accountId, arg_containerId, arg_environmentId,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Environment response) {
+        checkEnvironment(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersEnvironmentsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.environments;
+      var arg_request = buildEnvironment();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_environmentId = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Environment.fromJson(json);
+        checkEnvironment(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/environments/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/environments/"));
+        pathOffset += 14;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_environmentId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEnvironment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(
+              arg_request, arg_accountId, arg_containerId, arg_environmentId,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Environment response) {
+        checkEnvironment(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersFoldersResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersFoldersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.folders;
+      var arg_request = buildFolder();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Folder.fromJson(json);
+        checkFolder(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/folders", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/folders"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFolder());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_accountId, arg_containerId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Folder response) {
+        checkFolder(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersFoldersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.folders;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_folderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/folders/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/folders/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_folderId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_accountId, arg_containerId, arg_folderId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersFoldersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.folders;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_folderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/folders/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/folders/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_folderId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFolder());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_containerId, arg_folderId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Folder response) {
+        checkFolder(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersFoldersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.folders;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/folders", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/folders"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListFoldersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_containerId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListFoldersResponse response) {
+        checkListFoldersResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersFoldersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.folders;
+      var arg_request = buildFolder();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_folderId = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Folder.fromJson(json);
+        checkFolder(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/folders/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/folders/"));
+        pathOffset += 9;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_folderId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFolder());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_accountId, arg_containerId, arg_folderId,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Folder response) {
+        checkFolder(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersFoldersEntitiesResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersFoldersEntitiesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.folders.entities;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_folderId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/folders/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/folders/"));
+        pathOffset += 9;
+        index = path.indexOf("/entities", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_folderId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/entities"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFolderEntities());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_containerId, arg_folderId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FolderEntities response) {
+        checkFolderEntities(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersMoveFoldersResourceApi", () {
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersMoveFoldersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.moveFolders;
+      var arg_request = buildFolder();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_folderId = "foo";
+      var arg_tagId = buildUnnamed1727();
+      var arg_triggerId = buildUnnamed1728();
+      var arg_variableId = buildUnnamed1729();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Folder.fromJson(json);
+        checkFolder(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/move_folders/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/move_folders/"));
+        pathOffset += 14;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_folderId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["tagId"], unittest.equals(arg_tagId));
+        unittest.expect(queryMap["triggerId"], unittest.equals(arg_triggerId));
+        unittest.expect(
+            queryMap["variableId"], unittest.equals(arg_variableId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_accountId, arg_containerId, arg_folderId,
+              tagId: arg_tagId,
+              triggerId: arg_triggerId,
+              variableId: arg_variableId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+  });
+
+  unittest.group(
+      "resource-AccountsContainersReauthorizeEnvironmentsResourceApi", () {
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersReauthorizeEnvironmentsResourceApi res =
+          new api.TagmanagerApi(mock)
+              .accounts
+              .containers
+              .reauthorizeEnvironments;
+      var arg_request = buildEnvironment();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_environmentId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Environment.fromJson(json);
+        checkEnvironment(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/reauthorize_environments/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 26),
+            unittest.equals("/reauthorize_environments/"));
+        pathOffset += 26;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_environmentId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEnvironment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(
+              arg_request, arg_accountId, arg_containerId, arg_environmentId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Environment response) {
+        checkEnvironment(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersTagsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersTagsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.tags;
+      var arg_request = buildTag();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Tag.fromJson(json);
+        checkTag(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/tags", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/tags"));
+        pathOffset += 5;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTag());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_accountId, arg_containerId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Tag response) {
+        checkTag(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersTagsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.tags;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_tagId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/tags/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/tags/"));
+        pathOffset += 6;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_tagId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_accountId, arg_containerId, arg_tagId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersTagsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.tags;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_tagId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/tags/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/tags/"));
+        pathOffset += 6;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_tagId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTag());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_containerId, arg_tagId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Tag response) {
+        checkTag(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersTagsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.tags;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/tags", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 5),
+            unittest.equals("/tags"));
+        pathOffset += 5;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListTagsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_containerId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListTagsResponse response) {
+        checkListTagsResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersTagsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.tags;
+      var arg_request = buildTag();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_tagId = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Tag.fromJson(json);
+        checkTag(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/tags/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 6),
+            unittest.equals("/tags/"));
+        pathOffset += 6;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_tagId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTag());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_accountId, arg_containerId, arg_tagId,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Tag response) {
+        checkTag(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersTriggersResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersTriggersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.triggers;
+      var arg_request = buildTrigger();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Trigger.fromJson(json);
+        checkTrigger(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/triggers", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/triggers"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTrigger());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_accountId, arg_containerId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Trigger response) {
+        checkTrigger(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersTriggersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.triggers;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_triggerId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/triggers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/triggers/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_triggerId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_accountId, arg_containerId, arg_triggerId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersTriggersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.triggers;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_triggerId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/triggers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/triggers/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_triggerId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTrigger());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_containerId, arg_triggerId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Trigger response) {
+        checkTrigger(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersTriggersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.triggers;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/triggers", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/triggers"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListTriggersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_containerId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListTriggersResponse response) {
+        checkListTriggersResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersTriggersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.triggers;
+      var arg_request = buildTrigger();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_triggerId = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Trigger.fromJson(json);
+        checkTrigger(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/triggers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/triggers/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_triggerId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTrigger());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_accountId, arg_containerId, arg_triggerId,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Trigger response) {
+        checkTrigger(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersVariablesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVariablesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.variables;
+      var arg_request = buildVariable();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Variable.fromJson(json);
+        checkVariable(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/variables", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/variables"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVariable());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_accountId, arg_containerId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Variable response) {
+        checkVariable(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVariablesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.variables;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_variableId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/variables/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/variables/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_variableId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_accountId, arg_containerId, arg_variableId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVariablesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.variables;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_variableId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/variables/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/variables/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_variableId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVariable());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_containerId, arg_variableId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Variable response) {
+        checkVariable(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVariablesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.variables;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/variables", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/variables"));
+        pathOffset += 10;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListVariablesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_containerId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListVariablesResponse response) {
+        checkListVariablesResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVariablesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.variables;
+      var arg_request = buildVariable();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_variableId = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Variable.fromJson(json);
+        checkVariable(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/variables/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/variables/"));
+        pathOffset += 11;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_variableId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVariable());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_accountId, arg_containerId, arg_variableId,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Variable response) {
+        checkVariable(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersVersionsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versions;
+      var arg_request = buildCreateContainerVersionRequestVersionOptions();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj =
+            new api.CreateContainerVersionRequestVersionOptions.fromJson(json);
+        checkCreateContainerVersionRequestVersionOptions(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/versions", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/versions"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreateContainerVersionResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_accountId, arg_containerId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.CreateContainerVersionResponse response) {
+        checkCreateContainerVersionResponse(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versions;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_containerVersionId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/versions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/versions/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_containerVersionId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_accountId, arg_containerId, arg_containerVersionId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versions;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_containerVersionId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/versions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/versions/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_containerVersionId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainerVersion());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_containerId, arg_containerVersionId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContainerVersion response) {
+        checkContainerVersion(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versions;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_headers = true;
+      var arg_includeDeleted = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/versions", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/versions"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["headers"].first, unittest.equals("$arg_headers"));
+        unittest.expect(queryMap["includeDeleted"].first,
+            unittest.equals("$arg_includeDeleted"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListContainerVersionsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, arg_containerId,
+              headers: arg_headers,
+              includeDeleted: arg_includeDeleted,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListContainerVersionsResponse response) {
+        checkListContainerVersionsResponse(response);
+      })));
+    });
+
+    unittest.test("method--publish", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versions;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_containerVersionId = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/versions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/versions/"));
+        pathOffset += 10;
+        index = path.indexOf("/publish", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerVersionId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/publish"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPublishContainerVersionResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .publish(arg_accountId, arg_containerId, arg_containerVersionId,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.PublishContainerVersionResponse response) {
+        checkPublishContainerVersionResponse(response);
+      })));
+    });
+
+    unittest.test("method--restore", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versions;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_containerVersionId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/versions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/versions/"));
+        pathOffset += 10;
+        index = path.indexOf("/restore", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerVersionId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("/restore"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainerVersion());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .restore(arg_accountId, arg_containerId, arg_containerVersionId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContainerVersion response) {
+        checkContainerVersion(response);
+      })));
+    });
+
+    unittest.test("method--undelete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versions;
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_containerVersionId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/versions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/versions/"));
+        pathOffset += 10;
+        index = path.indexOf("/undelete", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerVersionId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("/undelete"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainerVersion());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .undelete(arg_accountId, arg_containerId, arg_containerVersionId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContainerVersion response) {
+        checkContainerVersion(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versions;
+      var arg_request = buildContainerVersion();
+      var arg_accountId = "foo";
+      var arg_containerId = "foo";
+      var arg_containerVersionId = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ContainerVersion.fromJson(json);
+        checkContainerVersion(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/containers/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/containers/"));
+        pathOffset += 12;
+        index = path.indexOf("/versions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_containerId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 10),
+            unittest.equals("/versions/"));
+        pathOffset += 10;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_containerVersionId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainerVersion());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_accountId, arg_containerId,
+              arg_containerVersionId,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContainerVersion response) {
+        checkContainerVersion(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsPermissionsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsPermissionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.permissions;
+      var arg_request = buildUserAccess();
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UserAccess.fromJson(json);
+        checkUserAccess(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/permissions", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/permissions"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserAccess());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserAccess response) {
+        checkUserAccess(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsPermissionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.permissions;
+      var arg_accountId = "foo";
+      var arg_permissionId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/permissions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/permissions/"));
+        pathOffset += 13;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_permissionId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_accountId, arg_permissionId, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsPermissionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.permissions;
+      var arg_accountId = "foo";
+      var arg_permissionId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/permissions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/permissions/"));
+        pathOffset += 13;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_permissionId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserAccess());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_accountId, arg_permissionId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserAccess response) {
+        checkUserAccess(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsPermissionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.permissions;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/permissions", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("/permissions"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListAccountUsersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_accountId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListAccountUsersResponse response) {
+        checkListAccountUsersResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsPermissionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.permissions;
+      var arg_request = buildUserAccess();
+      var arg_accountId = "foo";
+      var arg_permissionId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UserAccess.fromJson(json);
+        checkUserAccess(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v1/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("accounts/"));
+        pathOffset += 9;
+        index = path.indexOf("/permissions/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_accountId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/permissions/"));
+        pathOffset += 13;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_permissionId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserAccess());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_accountId, arg_permissionId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserAccess response) {
+        checkUserAccess(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/tagmanager/v2_test.dart b/generated/googleapis/test/tagmanager/v2_test.dart
new file mode 100644
index 0000000..6f1776d
--- /dev/null
+++ b/generated/googleapis/test/tagmanager/v2_test.dart
@@ -0,0 +1,6524 @@
+library googleapis.tagmanager.v2.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/tagmanager/v2.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAccount = 0;
+buildAccount() {
+  var o = new api.Account();
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    o.accountId = "foo";
+    o.fingerprint = "foo";
+    o.name = "foo";
+    o.path = "foo";
+    o.shareData = true;
+    o.tagManagerUrl = "foo";
+  }
+  buildCounterAccount--;
+  return o;
+}
+
+checkAccount(api.Account o) {
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.path, unittest.equals('foo'));
+    unittest.expect(o.shareData, unittest.isTrue);
+    unittest.expect(o.tagManagerUrl, unittest.equals('foo'));
+  }
+  buildCounterAccount--;
+}
+
+core.int buildCounterAccountAccess = 0;
+buildAccountAccess() {
+  var o = new api.AccountAccess();
+  buildCounterAccountAccess++;
+  if (buildCounterAccountAccess < 3) {
+    o.permission = "foo";
+  }
+  buildCounterAccountAccess--;
+  return o;
+}
+
+checkAccountAccess(api.AccountAccess o) {
+  buildCounterAccountAccess++;
+  if (buildCounterAccountAccess < 3) {
+    unittest.expect(o.permission, unittest.equals('foo'));
+  }
+  buildCounterAccountAccess--;
+}
+
+core.int buildCounterBuiltInVariable = 0;
+buildBuiltInVariable() {
+  var o = new api.BuiltInVariable();
+  buildCounterBuiltInVariable++;
+  if (buildCounterBuiltInVariable < 3) {
+    o.accountId = "foo";
+    o.containerId = "foo";
+    o.name = "foo";
+    o.path = "foo";
+    o.type = "foo";
+    o.workspaceId = "foo";
+  }
+  buildCounterBuiltInVariable--;
+  return o;
+}
+
+checkBuiltInVariable(api.BuiltInVariable o) {
+  buildCounterBuiltInVariable++;
+  if (buildCounterBuiltInVariable < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.path, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.workspaceId, unittest.equals('foo'));
+  }
+  buildCounterBuiltInVariable--;
+}
+
+buildUnnamed1362() {
+  var o = new core.List<api.Parameter>();
+  o.add(buildParameter());
+  o.add(buildParameter());
+  return o;
+}
+
+checkUnnamed1362(core.List<api.Parameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkParameter(o[0]);
+  checkParameter(o[1]);
+}
+
+core.int buildCounterCondition = 0;
+buildCondition() {
+  var o = new api.Condition();
+  buildCounterCondition++;
+  if (buildCounterCondition < 3) {
+    o.parameter = buildUnnamed1362();
+    o.type = "foo";
+  }
+  buildCounterCondition--;
+  return o;
+}
+
+checkCondition(api.Condition o) {
+  buildCounterCondition++;
+  if (buildCounterCondition < 3) {
+    checkUnnamed1362(o.parameter);
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterCondition--;
+}
+
+buildUnnamed1363() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1363(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1364() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1364(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterContainer = 0;
+buildContainer() {
+  var o = new api.Container();
+  buildCounterContainer++;
+  if (buildCounterContainer < 3) {
+    o.accountId = "foo";
+    o.containerId = "foo";
+    o.domainName = buildUnnamed1363();
+    o.fingerprint = "foo";
+    o.name = "foo";
+    o.notes = "foo";
+    o.path = "foo";
+    o.publicId = "foo";
+    o.tagManagerUrl = "foo";
+    o.usageContext = buildUnnamed1364();
+  }
+  buildCounterContainer--;
+  return o;
+}
+
+checkContainer(api.Container o) {
+  buildCounterContainer++;
+  if (buildCounterContainer < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    checkUnnamed1363(o.domainName);
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    unittest.expect(o.path, unittest.equals('foo'));
+    unittest.expect(o.publicId, unittest.equals('foo'));
+    unittest.expect(o.tagManagerUrl, unittest.equals('foo'));
+    checkUnnamed1364(o.usageContext);
+  }
+  buildCounterContainer--;
+}
+
+core.int buildCounterContainerAccess = 0;
+buildContainerAccess() {
+  var o = new api.ContainerAccess();
+  buildCounterContainerAccess++;
+  if (buildCounterContainerAccess < 3) {
+    o.containerId = "foo";
+    o.permission = "foo";
+  }
+  buildCounterContainerAccess--;
+  return o;
+}
+
+checkContainerAccess(api.ContainerAccess o) {
+  buildCounterContainerAccess++;
+  if (buildCounterContainerAccess < 3) {
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    unittest.expect(o.permission, unittest.equals('foo'));
+  }
+  buildCounterContainerAccess--;
+}
+
+buildUnnamed1365() {
+  var o = new core.List<api.BuiltInVariable>();
+  o.add(buildBuiltInVariable());
+  o.add(buildBuiltInVariable());
+  return o;
+}
+
+checkUnnamed1365(core.List<api.BuiltInVariable> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBuiltInVariable(o[0]);
+  checkBuiltInVariable(o[1]);
+}
+
+buildUnnamed1366() {
+  var o = new core.List<api.Folder>();
+  o.add(buildFolder());
+  o.add(buildFolder());
+  return o;
+}
+
+checkUnnamed1366(core.List<api.Folder> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFolder(o[0]);
+  checkFolder(o[1]);
+}
+
+buildUnnamed1367() {
+  var o = new core.List<api.Tag>();
+  o.add(buildTag());
+  o.add(buildTag());
+  return o;
+}
+
+checkUnnamed1367(core.List<api.Tag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTag(o[0]);
+  checkTag(o[1]);
+}
+
+buildUnnamed1368() {
+  var o = new core.List<api.Trigger>();
+  o.add(buildTrigger());
+  o.add(buildTrigger());
+  return o;
+}
+
+checkUnnamed1368(core.List<api.Trigger> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTrigger(o[0]);
+  checkTrigger(o[1]);
+}
+
+buildUnnamed1369() {
+  var o = new core.List<api.Variable>();
+  o.add(buildVariable());
+  o.add(buildVariable());
+  return o;
+}
+
+checkUnnamed1369(core.List<api.Variable> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVariable(o[0]);
+  checkVariable(o[1]);
+}
+
+buildUnnamed1370() {
+  var o = new core.List<api.Zone>();
+  o.add(buildZone());
+  o.add(buildZone());
+  return o;
+}
+
+checkUnnamed1370(core.List<api.Zone> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkZone(o[0]);
+  checkZone(o[1]);
+}
+
+core.int buildCounterContainerVersion = 0;
+buildContainerVersion() {
+  var o = new api.ContainerVersion();
+  buildCounterContainerVersion++;
+  if (buildCounterContainerVersion < 3) {
+    o.accountId = "foo";
+    o.builtInVariable = buildUnnamed1365();
+    o.container = buildContainer();
+    o.containerId = "foo";
+    o.containerVersionId = "foo";
+    o.deleted = true;
+    o.description = "foo";
+    o.fingerprint = "foo";
+    o.folder = buildUnnamed1366();
+    o.name = "foo";
+    o.path = "foo";
+    o.tag = buildUnnamed1367();
+    o.tagManagerUrl = "foo";
+    o.trigger = buildUnnamed1368();
+    o.variable = buildUnnamed1369();
+    o.zone = buildUnnamed1370();
+  }
+  buildCounterContainerVersion--;
+  return o;
+}
+
+checkContainerVersion(api.ContainerVersion o) {
+  buildCounterContainerVersion++;
+  if (buildCounterContainerVersion < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkUnnamed1365(o.builtInVariable);
+    checkContainer(o.container);
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    unittest.expect(o.containerVersionId, unittest.equals('foo'));
+    unittest.expect(o.deleted, unittest.isTrue);
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    checkUnnamed1366(o.folder);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.path, unittest.equals('foo'));
+    checkUnnamed1367(o.tag);
+    unittest.expect(o.tagManagerUrl, unittest.equals('foo'));
+    checkUnnamed1368(o.trigger);
+    checkUnnamed1369(o.variable);
+    checkUnnamed1370(o.zone);
+  }
+  buildCounterContainerVersion--;
+}
+
+core.int buildCounterContainerVersionHeader = 0;
+buildContainerVersionHeader() {
+  var o = new api.ContainerVersionHeader();
+  buildCounterContainerVersionHeader++;
+  if (buildCounterContainerVersionHeader < 3) {
+    o.accountId = "foo";
+    o.containerId = "foo";
+    o.containerVersionId = "foo";
+    o.deleted = true;
+    o.name = "foo";
+    o.numMacros = "foo";
+    o.numRules = "foo";
+    o.numTags = "foo";
+    o.numTriggers = "foo";
+    o.numVariables = "foo";
+    o.numZones = "foo";
+    o.path = "foo";
+  }
+  buildCounterContainerVersionHeader--;
+  return o;
+}
+
+checkContainerVersionHeader(api.ContainerVersionHeader o) {
+  buildCounterContainerVersionHeader++;
+  if (buildCounterContainerVersionHeader < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    unittest.expect(o.containerVersionId, unittest.equals('foo'));
+    unittest.expect(o.deleted, unittest.isTrue);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.numMacros, unittest.equals('foo'));
+    unittest.expect(o.numRules, unittest.equals('foo'));
+    unittest.expect(o.numTags, unittest.equals('foo'));
+    unittest.expect(o.numTriggers, unittest.equals('foo'));
+    unittest.expect(o.numVariables, unittest.equals('foo'));
+    unittest.expect(o.numZones, unittest.equals('foo'));
+    unittest.expect(o.path, unittest.equals('foo'));
+  }
+  buildCounterContainerVersionHeader--;
+}
+
+buildUnnamed1371() {
+  var o = new core.List<api.BuiltInVariable>();
+  o.add(buildBuiltInVariable());
+  o.add(buildBuiltInVariable());
+  return o;
+}
+
+checkUnnamed1371(core.List<api.BuiltInVariable> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBuiltInVariable(o[0]);
+  checkBuiltInVariable(o[1]);
+}
+
+core.int buildCounterCreateBuiltInVariableResponse = 0;
+buildCreateBuiltInVariableResponse() {
+  var o = new api.CreateBuiltInVariableResponse();
+  buildCounterCreateBuiltInVariableResponse++;
+  if (buildCounterCreateBuiltInVariableResponse < 3) {
+    o.builtInVariable = buildUnnamed1371();
+  }
+  buildCounterCreateBuiltInVariableResponse--;
+  return o;
+}
+
+checkCreateBuiltInVariableResponse(api.CreateBuiltInVariableResponse o) {
+  buildCounterCreateBuiltInVariableResponse++;
+  if (buildCounterCreateBuiltInVariableResponse < 3) {
+    checkUnnamed1371(o.builtInVariable);
+  }
+  buildCounterCreateBuiltInVariableResponse--;
+}
+
+core.int buildCounterCreateContainerVersionRequestVersionOptions = 0;
+buildCreateContainerVersionRequestVersionOptions() {
+  var o = new api.CreateContainerVersionRequestVersionOptions();
+  buildCounterCreateContainerVersionRequestVersionOptions++;
+  if (buildCounterCreateContainerVersionRequestVersionOptions < 3) {
+    o.name = "foo";
+    o.notes = "foo";
+  }
+  buildCounterCreateContainerVersionRequestVersionOptions--;
+  return o;
+}
+
+checkCreateContainerVersionRequestVersionOptions(
+    api.CreateContainerVersionRequestVersionOptions o) {
+  buildCounterCreateContainerVersionRequestVersionOptions++;
+  if (buildCounterCreateContainerVersionRequestVersionOptions < 3) {
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+  }
+  buildCounterCreateContainerVersionRequestVersionOptions--;
+}
+
+core.int buildCounterCreateContainerVersionResponse = 0;
+buildCreateContainerVersionResponse() {
+  var o = new api.CreateContainerVersionResponse();
+  buildCounterCreateContainerVersionResponse++;
+  if (buildCounterCreateContainerVersionResponse < 3) {
+    o.compilerError = true;
+    o.containerVersion = buildContainerVersion();
+    o.newWorkspacePath = "foo";
+    o.syncStatus = buildSyncStatus();
+  }
+  buildCounterCreateContainerVersionResponse--;
+  return o;
+}
+
+checkCreateContainerVersionResponse(api.CreateContainerVersionResponse o) {
+  buildCounterCreateContainerVersionResponse++;
+  if (buildCounterCreateContainerVersionResponse < 3) {
+    unittest.expect(o.compilerError, unittest.isTrue);
+    checkContainerVersion(o.containerVersion);
+    unittest.expect(o.newWorkspacePath, unittest.equals('foo'));
+    checkSyncStatus(o.syncStatus);
+  }
+  buildCounterCreateContainerVersionResponse--;
+}
+
+buildUnnamed1372() {
+  var o = new core.List<api.WorkspaceProposalUser>();
+  o.add(buildWorkspaceProposalUser());
+  o.add(buildWorkspaceProposalUser());
+  return o;
+}
+
+checkUnnamed1372(core.List<api.WorkspaceProposalUser> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkWorkspaceProposalUser(o[0]);
+  checkWorkspaceProposalUser(o[1]);
+}
+
+core.int buildCounterCreateWorkspaceProposalRequest = 0;
+buildCreateWorkspaceProposalRequest() {
+  var o = new api.CreateWorkspaceProposalRequest();
+  buildCounterCreateWorkspaceProposalRequest++;
+  if (buildCounterCreateWorkspaceProposalRequest < 3) {
+    o.initialComment = buildWorkspaceProposalHistoryComment();
+    o.reviewers = buildUnnamed1372();
+  }
+  buildCounterCreateWorkspaceProposalRequest--;
+  return o;
+}
+
+checkCreateWorkspaceProposalRequest(api.CreateWorkspaceProposalRequest o) {
+  buildCounterCreateWorkspaceProposalRequest++;
+  if (buildCounterCreateWorkspaceProposalRequest < 3) {
+    checkWorkspaceProposalHistoryComment(o.initialComment);
+    checkUnnamed1372(o.reviewers);
+  }
+  buildCounterCreateWorkspaceProposalRequest--;
+}
+
+core.int buildCounterEntity = 0;
+buildEntity() {
+  var o = new api.Entity();
+  buildCounterEntity++;
+  if (buildCounterEntity < 3) {
+    o.changeStatus = "foo";
+    o.folder = buildFolder();
+    o.tag = buildTag();
+    o.trigger = buildTrigger();
+    o.variable = buildVariable();
+  }
+  buildCounterEntity--;
+  return o;
+}
+
+checkEntity(api.Entity o) {
+  buildCounterEntity++;
+  if (buildCounterEntity < 3) {
+    unittest.expect(o.changeStatus, unittest.equals('foo'));
+    checkFolder(o.folder);
+    checkTag(o.tag);
+    checkTrigger(o.trigger);
+    checkVariable(o.variable);
+  }
+  buildCounterEntity--;
+}
+
+core.int buildCounterEnvironment = 0;
+buildEnvironment() {
+  var o = new api.Environment();
+  buildCounterEnvironment++;
+  if (buildCounterEnvironment < 3) {
+    o.accountId = "foo";
+    o.authorizationCode = "foo";
+    o.authorizationTimestamp = buildTimestamp();
+    o.containerId = "foo";
+    o.containerVersionId = "foo";
+    o.description = "foo";
+    o.enableDebug = true;
+    o.environmentId = "foo";
+    o.fingerprint = "foo";
+    o.name = "foo";
+    o.path = "foo";
+    o.tagManagerUrl = "foo";
+    o.type = "foo";
+    o.url = "foo";
+    o.workspaceId = "foo";
+  }
+  buildCounterEnvironment--;
+  return o;
+}
+
+checkEnvironment(api.Environment o) {
+  buildCounterEnvironment++;
+  if (buildCounterEnvironment < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.authorizationCode, unittest.equals('foo'));
+    checkTimestamp(o.authorizationTimestamp);
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    unittest.expect(o.containerVersionId, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.enableDebug, unittest.isTrue);
+    unittest.expect(o.environmentId, unittest.equals('foo'));
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.path, unittest.equals('foo'));
+    unittest.expect(o.tagManagerUrl, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.workspaceId, unittest.equals('foo'));
+  }
+  buildCounterEnvironment--;
+}
+
+core.int buildCounterFolder = 0;
+buildFolder() {
+  var o = new api.Folder();
+  buildCounterFolder++;
+  if (buildCounterFolder < 3) {
+    o.accountId = "foo";
+    o.containerId = "foo";
+    o.fingerprint = "foo";
+    o.folderId = "foo";
+    o.name = "foo";
+    o.notes = "foo";
+    o.path = "foo";
+    o.tagManagerUrl = "foo";
+    o.workspaceId = "foo";
+  }
+  buildCounterFolder--;
+  return o;
+}
+
+checkFolder(api.Folder o) {
+  buildCounterFolder++;
+  if (buildCounterFolder < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    unittest.expect(o.folderId, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    unittest.expect(o.path, unittest.equals('foo'));
+    unittest.expect(o.tagManagerUrl, unittest.equals('foo'));
+    unittest.expect(o.workspaceId, unittest.equals('foo'));
+  }
+  buildCounterFolder--;
+}
+
+buildUnnamed1373() {
+  var o = new core.List<api.Tag>();
+  o.add(buildTag());
+  o.add(buildTag());
+  return o;
+}
+
+checkUnnamed1373(core.List<api.Tag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTag(o[0]);
+  checkTag(o[1]);
+}
+
+buildUnnamed1374() {
+  var o = new core.List<api.Trigger>();
+  o.add(buildTrigger());
+  o.add(buildTrigger());
+  return o;
+}
+
+checkUnnamed1374(core.List<api.Trigger> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTrigger(o[0]);
+  checkTrigger(o[1]);
+}
+
+buildUnnamed1375() {
+  var o = new core.List<api.Variable>();
+  o.add(buildVariable());
+  o.add(buildVariable());
+  return o;
+}
+
+checkUnnamed1375(core.List<api.Variable> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVariable(o[0]);
+  checkVariable(o[1]);
+}
+
+core.int buildCounterFolderEntities = 0;
+buildFolderEntities() {
+  var o = new api.FolderEntities();
+  buildCounterFolderEntities++;
+  if (buildCounterFolderEntities < 3) {
+    o.nextPageToken = "foo";
+    o.tag = buildUnnamed1373();
+    o.trigger = buildUnnamed1374();
+    o.variable = buildUnnamed1375();
+  }
+  buildCounterFolderEntities--;
+  return o;
+}
+
+checkFolderEntities(api.FolderEntities o) {
+  buildCounterFolderEntities++;
+  if (buildCounterFolderEntities < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1373(o.tag);
+    checkUnnamed1374(o.trigger);
+    checkUnnamed1375(o.variable);
+  }
+  buildCounterFolderEntities--;
+}
+
+buildUnnamed1376() {
+  var o = new core.List<api.MergeConflict>();
+  o.add(buildMergeConflict());
+  o.add(buildMergeConflict());
+  return o;
+}
+
+checkUnnamed1376(core.List<api.MergeConflict> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMergeConflict(o[0]);
+  checkMergeConflict(o[1]);
+}
+
+buildUnnamed1377() {
+  var o = new core.List<api.Entity>();
+  o.add(buildEntity());
+  o.add(buildEntity());
+  return o;
+}
+
+checkUnnamed1377(core.List<api.Entity> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEntity(o[0]);
+  checkEntity(o[1]);
+}
+
+core.int buildCounterGetWorkspaceStatusResponse = 0;
+buildGetWorkspaceStatusResponse() {
+  var o = new api.GetWorkspaceStatusResponse();
+  buildCounterGetWorkspaceStatusResponse++;
+  if (buildCounterGetWorkspaceStatusResponse < 3) {
+    o.mergeConflict = buildUnnamed1376();
+    o.workspaceChange = buildUnnamed1377();
+  }
+  buildCounterGetWorkspaceStatusResponse--;
+  return o;
+}
+
+checkGetWorkspaceStatusResponse(api.GetWorkspaceStatusResponse o) {
+  buildCounterGetWorkspaceStatusResponse++;
+  if (buildCounterGetWorkspaceStatusResponse < 3) {
+    checkUnnamed1376(o.mergeConflict);
+    checkUnnamed1377(o.workspaceChange);
+  }
+  buildCounterGetWorkspaceStatusResponse--;
+}
+
+buildUnnamed1378() {
+  var o = new core.List<api.Account>();
+  o.add(buildAccount());
+  o.add(buildAccount());
+  return o;
+}
+
+checkUnnamed1378(core.List<api.Account> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAccount(o[0]);
+  checkAccount(o[1]);
+}
+
+core.int buildCounterListAccountsResponse = 0;
+buildListAccountsResponse() {
+  var o = new api.ListAccountsResponse();
+  buildCounterListAccountsResponse++;
+  if (buildCounterListAccountsResponse < 3) {
+    o.account = buildUnnamed1378();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListAccountsResponse--;
+  return o;
+}
+
+checkListAccountsResponse(api.ListAccountsResponse o) {
+  buildCounterListAccountsResponse++;
+  if (buildCounterListAccountsResponse < 3) {
+    checkUnnamed1378(o.account);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListAccountsResponse--;
+}
+
+buildUnnamed1379() {
+  var o = new core.List<api.ContainerVersionHeader>();
+  o.add(buildContainerVersionHeader());
+  o.add(buildContainerVersionHeader());
+  return o;
+}
+
+checkUnnamed1379(core.List<api.ContainerVersionHeader> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContainerVersionHeader(o[0]);
+  checkContainerVersionHeader(o[1]);
+}
+
+core.int buildCounterListContainerVersionsResponse = 0;
+buildListContainerVersionsResponse() {
+  var o = new api.ListContainerVersionsResponse();
+  buildCounterListContainerVersionsResponse++;
+  if (buildCounterListContainerVersionsResponse < 3) {
+    o.containerVersionHeader = buildUnnamed1379();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListContainerVersionsResponse--;
+  return o;
+}
+
+checkListContainerVersionsResponse(api.ListContainerVersionsResponse o) {
+  buildCounterListContainerVersionsResponse++;
+  if (buildCounterListContainerVersionsResponse < 3) {
+    checkUnnamed1379(o.containerVersionHeader);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListContainerVersionsResponse--;
+}
+
+buildUnnamed1380() {
+  var o = new core.List<api.Container>();
+  o.add(buildContainer());
+  o.add(buildContainer());
+  return o;
+}
+
+checkUnnamed1380(core.List<api.Container> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContainer(o[0]);
+  checkContainer(o[1]);
+}
+
+core.int buildCounterListContainersResponse = 0;
+buildListContainersResponse() {
+  var o = new api.ListContainersResponse();
+  buildCounterListContainersResponse++;
+  if (buildCounterListContainersResponse < 3) {
+    o.container = buildUnnamed1380();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListContainersResponse--;
+  return o;
+}
+
+checkListContainersResponse(api.ListContainersResponse o) {
+  buildCounterListContainersResponse++;
+  if (buildCounterListContainersResponse < 3) {
+    checkUnnamed1380(o.container);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListContainersResponse--;
+}
+
+buildUnnamed1381() {
+  var o = new core.List<api.BuiltInVariable>();
+  o.add(buildBuiltInVariable());
+  o.add(buildBuiltInVariable());
+  return o;
+}
+
+checkUnnamed1381(core.List<api.BuiltInVariable> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBuiltInVariable(o[0]);
+  checkBuiltInVariable(o[1]);
+}
+
+core.int buildCounterListEnabledBuiltInVariablesResponse = 0;
+buildListEnabledBuiltInVariablesResponse() {
+  var o = new api.ListEnabledBuiltInVariablesResponse();
+  buildCounterListEnabledBuiltInVariablesResponse++;
+  if (buildCounterListEnabledBuiltInVariablesResponse < 3) {
+    o.builtInVariable = buildUnnamed1381();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListEnabledBuiltInVariablesResponse--;
+  return o;
+}
+
+checkListEnabledBuiltInVariablesResponse(
+    api.ListEnabledBuiltInVariablesResponse o) {
+  buildCounterListEnabledBuiltInVariablesResponse++;
+  if (buildCounterListEnabledBuiltInVariablesResponse < 3) {
+    checkUnnamed1381(o.builtInVariable);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListEnabledBuiltInVariablesResponse--;
+}
+
+buildUnnamed1382() {
+  var o = new core.List<api.Environment>();
+  o.add(buildEnvironment());
+  o.add(buildEnvironment());
+  return o;
+}
+
+checkUnnamed1382(core.List<api.Environment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEnvironment(o[0]);
+  checkEnvironment(o[1]);
+}
+
+core.int buildCounterListEnvironmentsResponse = 0;
+buildListEnvironmentsResponse() {
+  var o = new api.ListEnvironmentsResponse();
+  buildCounterListEnvironmentsResponse++;
+  if (buildCounterListEnvironmentsResponse < 3) {
+    o.environment = buildUnnamed1382();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListEnvironmentsResponse--;
+  return o;
+}
+
+checkListEnvironmentsResponse(api.ListEnvironmentsResponse o) {
+  buildCounterListEnvironmentsResponse++;
+  if (buildCounterListEnvironmentsResponse < 3) {
+    checkUnnamed1382(o.environment);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListEnvironmentsResponse--;
+}
+
+buildUnnamed1383() {
+  var o = new core.List<api.Folder>();
+  o.add(buildFolder());
+  o.add(buildFolder());
+  return o;
+}
+
+checkUnnamed1383(core.List<api.Folder> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFolder(o[0]);
+  checkFolder(o[1]);
+}
+
+core.int buildCounterListFoldersResponse = 0;
+buildListFoldersResponse() {
+  var o = new api.ListFoldersResponse();
+  buildCounterListFoldersResponse++;
+  if (buildCounterListFoldersResponse < 3) {
+    o.folder = buildUnnamed1383();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListFoldersResponse--;
+  return o;
+}
+
+checkListFoldersResponse(api.ListFoldersResponse o) {
+  buildCounterListFoldersResponse++;
+  if (buildCounterListFoldersResponse < 3) {
+    checkUnnamed1383(o.folder);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListFoldersResponse--;
+}
+
+buildUnnamed1384() {
+  var o = new core.List<api.Tag>();
+  o.add(buildTag());
+  o.add(buildTag());
+  return o;
+}
+
+checkUnnamed1384(core.List<api.Tag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTag(o[0]);
+  checkTag(o[1]);
+}
+
+core.int buildCounterListTagsResponse = 0;
+buildListTagsResponse() {
+  var o = new api.ListTagsResponse();
+  buildCounterListTagsResponse++;
+  if (buildCounterListTagsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.tag = buildUnnamed1384();
+  }
+  buildCounterListTagsResponse--;
+  return o;
+}
+
+checkListTagsResponse(api.ListTagsResponse o) {
+  buildCounterListTagsResponse++;
+  if (buildCounterListTagsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1384(o.tag);
+  }
+  buildCounterListTagsResponse--;
+}
+
+buildUnnamed1385() {
+  var o = new core.List<api.Trigger>();
+  o.add(buildTrigger());
+  o.add(buildTrigger());
+  return o;
+}
+
+checkUnnamed1385(core.List<api.Trigger> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTrigger(o[0]);
+  checkTrigger(o[1]);
+}
+
+core.int buildCounterListTriggersResponse = 0;
+buildListTriggersResponse() {
+  var o = new api.ListTriggersResponse();
+  buildCounterListTriggersResponse++;
+  if (buildCounterListTriggersResponse < 3) {
+    o.nextPageToken = "foo";
+    o.trigger = buildUnnamed1385();
+  }
+  buildCounterListTriggersResponse--;
+  return o;
+}
+
+checkListTriggersResponse(api.ListTriggersResponse o) {
+  buildCounterListTriggersResponse++;
+  if (buildCounterListTriggersResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1385(o.trigger);
+  }
+  buildCounterListTriggersResponse--;
+}
+
+buildUnnamed1386() {
+  var o = new core.List<api.UserPermission>();
+  o.add(buildUserPermission());
+  o.add(buildUserPermission());
+  return o;
+}
+
+checkUnnamed1386(core.List<api.UserPermission> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUserPermission(o[0]);
+  checkUserPermission(o[1]);
+}
+
+core.int buildCounterListUserPermissionsResponse = 0;
+buildListUserPermissionsResponse() {
+  var o = new api.ListUserPermissionsResponse();
+  buildCounterListUserPermissionsResponse++;
+  if (buildCounterListUserPermissionsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.userPermission = buildUnnamed1386();
+  }
+  buildCounterListUserPermissionsResponse--;
+  return o;
+}
+
+checkListUserPermissionsResponse(api.ListUserPermissionsResponse o) {
+  buildCounterListUserPermissionsResponse++;
+  if (buildCounterListUserPermissionsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1386(o.userPermission);
+  }
+  buildCounterListUserPermissionsResponse--;
+}
+
+buildUnnamed1387() {
+  var o = new core.List<api.Variable>();
+  o.add(buildVariable());
+  o.add(buildVariable());
+  return o;
+}
+
+checkUnnamed1387(core.List<api.Variable> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVariable(o[0]);
+  checkVariable(o[1]);
+}
+
+core.int buildCounterListVariablesResponse = 0;
+buildListVariablesResponse() {
+  var o = new api.ListVariablesResponse();
+  buildCounterListVariablesResponse++;
+  if (buildCounterListVariablesResponse < 3) {
+    o.nextPageToken = "foo";
+    o.variable = buildUnnamed1387();
+  }
+  buildCounterListVariablesResponse--;
+  return o;
+}
+
+checkListVariablesResponse(api.ListVariablesResponse o) {
+  buildCounterListVariablesResponse++;
+  if (buildCounterListVariablesResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1387(o.variable);
+  }
+  buildCounterListVariablesResponse--;
+}
+
+buildUnnamed1388() {
+  var o = new core.List<api.Workspace>();
+  o.add(buildWorkspace());
+  o.add(buildWorkspace());
+  return o;
+}
+
+checkUnnamed1388(core.List<api.Workspace> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkWorkspace(o[0]);
+  checkWorkspace(o[1]);
+}
+
+core.int buildCounterListWorkspacesResponse = 0;
+buildListWorkspacesResponse() {
+  var o = new api.ListWorkspacesResponse();
+  buildCounterListWorkspacesResponse++;
+  if (buildCounterListWorkspacesResponse < 3) {
+    o.nextPageToken = "foo";
+    o.workspace = buildUnnamed1388();
+  }
+  buildCounterListWorkspacesResponse--;
+  return o;
+}
+
+checkListWorkspacesResponse(api.ListWorkspacesResponse o) {
+  buildCounterListWorkspacesResponse++;
+  if (buildCounterListWorkspacesResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed1388(o.workspace);
+  }
+  buildCounterListWorkspacesResponse--;
+}
+
+core.int buildCounterMergeConflict = 0;
+buildMergeConflict() {
+  var o = new api.MergeConflict();
+  buildCounterMergeConflict++;
+  if (buildCounterMergeConflict < 3) {
+    o.entityInBaseVersion = buildEntity();
+    o.entityInWorkspace = buildEntity();
+  }
+  buildCounterMergeConflict--;
+  return o;
+}
+
+checkMergeConflict(api.MergeConflict o) {
+  buildCounterMergeConflict++;
+  if (buildCounterMergeConflict < 3) {
+    checkEntity(o.entityInBaseVersion);
+    checkEntity(o.entityInWorkspace);
+  }
+  buildCounterMergeConflict--;
+}
+
+buildUnnamed1389() {
+  var o = new core.List<api.Parameter>();
+  o.add(buildParameter());
+  o.add(buildParameter());
+  return o;
+}
+
+checkUnnamed1389(core.List<api.Parameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkParameter(o[0]);
+  checkParameter(o[1]);
+}
+
+buildUnnamed1390() {
+  var o = new core.List<api.Parameter>();
+  o.add(buildParameter());
+  o.add(buildParameter());
+  return o;
+}
+
+checkUnnamed1390(core.List<api.Parameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkParameter(o[0]);
+  checkParameter(o[1]);
+}
+
+core.int buildCounterParameter = 0;
+buildParameter() {
+  var o = new api.Parameter();
+  buildCounterParameter++;
+  if (buildCounterParameter < 3) {
+    o.key = "foo";
+    o.list = buildUnnamed1389();
+    o.map = buildUnnamed1390();
+    o.type = "foo";
+    o.value = "foo";
+  }
+  buildCounterParameter--;
+  return o;
+}
+
+checkParameter(api.Parameter o) {
+  buildCounterParameter++;
+  if (buildCounterParameter < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    checkUnnamed1389(o.list);
+    checkUnnamed1390(o.map);
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterParameter--;
+}
+
+core.int buildCounterPublishContainerVersionResponse = 0;
+buildPublishContainerVersionResponse() {
+  var o = new api.PublishContainerVersionResponse();
+  buildCounterPublishContainerVersionResponse++;
+  if (buildCounterPublishContainerVersionResponse < 3) {
+    o.compilerError = true;
+    o.containerVersion = buildContainerVersion();
+  }
+  buildCounterPublishContainerVersionResponse--;
+  return o;
+}
+
+checkPublishContainerVersionResponse(api.PublishContainerVersionResponse o) {
+  buildCounterPublishContainerVersionResponse++;
+  if (buildCounterPublishContainerVersionResponse < 3) {
+    unittest.expect(o.compilerError, unittest.isTrue);
+    checkContainerVersion(o.containerVersion);
+  }
+  buildCounterPublishContainerVersionResponse--;
+}
+
+core.int buildCounterQuickPreviewResponse = 0;
+buildQuickPreviewResponse() {
+  var o = new api.QuickPreviewResponse();
+  buildCounterQuickPreviewResponse++;
+  if (buildCounterQuickPreviewResponse < 3) {
+    o.compilerError = true;
+    o.containerVersion = buildContainerVersion();
+    o.syncStatus = buildSyncStatus();
+  }
+  buildCounterQuickPreviewResponse--;
+  return o;
+}
+
+checkQuickPreviewResponse(api.QuickPreviewResponse o) {
+  buildCounterQuickPreviewResponse++;
+  if (buildCounterQuickPreviewResponse < 3) {
+    unittest.expect(o.compilerError, unittest.isTrue);
+    checkContainerVersion(o.containerVersion);
+    checkSyncStatus(o.syncStatus);
+  }
+  buildCounterQuickPreviewResponse--;
+}
+
+core.int buildCounterRevertBuiltInVariableResponse = 0;
+buildRevertBuiltInVariableResponse() {
+  var o = new api.RevertBuiltInVariableResponse();
+  buildCounterRevertBuiltInVariableResponse++;
+  if (buildCounterRevertBuiltInVariableResponse < 3) {
+    o.enabled = true;
+  }
+  buildCounterRevertBuiltInVariableResponse--;
+  return o;
+}
+
+checkRevertBuiltInVariableResponse(api.RevertBuiltInVariableResponse o) {
+  buildCounterRevertBuiltInVariableResponse++;
+  if (buildCounterRevertBuiltInVariableResponse < 3) {
+    unittest.expect(o.enabled, unittest.isTrue);
+  }
+  buildCounterRevertBuiltInVariableResponse--;
+}
+
+core.int buildCounterRevertFolderResponse = 0;
+buildRevertFolderResponse() {
+  var o = new api.RevertFolderResponse();
+  buildCounterRevertFolderResponse++;
+  if (buildCounterRevertFolderResponse < 3) {
+    o.folder = buildFolder();
+  }
+  buildCounterRevertFolderResponse--;
+  return o;
+}
+
+checkRevertFolderResponse(api.RevertFolderResponse o) {
+  buildCounterRevertFolderResponse++;
+  if (buildCounterRevertFolderResponse < 3) {
+    checkFolder(o.folder);
+  }
+  buildCounterRevertFolderResponse--;
+}
+
+core.int buildCounterRevertTagResponse = 0;
+buildRevertTagResponse() {
+  var o = new api.RevertTagResponse();
+  buildCounterRevertTagResponse++;
+  if (buildCounterRevertTagResponse < 3) {
+    o.tag = buildTag();
+  }
+  buildCounterRevertTagResponse--;
+  return o;
+}
+
+checkRevertTagResponse(api.RevertTagResponse o) {
+  buildCounterRevertTagResponse++;
+  if (buildCounterRevertTagResponse < 3) {
+    checkTag(o.tag);
+  }
+  buildCounterRevertTagResponse--;
+}
+
+core.int buildCounterRevertTriggerResponse = 0;
+buildRevertTriggerResponse() {
+  var o = new api.RevertTriggerResponse();
+  buildCounterRevertTriggerResponse++;
+  if (buildCounterRevertTriggerResponse < 3) {
+    o.trigger = buildTrigger();
+  }
+  buildCounterRevertTriggerResponse--;
+  return o;
+}
+
+checkRevertTriggerResponse(api.RevertTriggerResponse o) {
+  buildCounterRevertTriggerResponse++;
+  if (buildCounterRevertTriggerResponse < 3) {
+    checkTrigger(o.trigger);
+  }
+  buildCounterRevertTriggerResponse--;
+}
+
+core.int buildCounterRevertVariableResponse = 0;
+buildRevertVariableResponse() {
+  var o = new api.RevertVariableResponse();
+  buildCounterRevertVariableResponse++;
+  if (buildCounterRevertVariableResponse < 3) {
+    o.variable = buildVariable();
+  }
+  buildCounterRevertVariableResponse--;
+  return o;
+}
+
+checkRevertVariableResponse(api.RevertVariableResponse o) {
+  buildCounterRevertVariableResponse++;
+  if (buildCounterRevertVariableResponse < 3) {
+    checkVariable(o.variable);
+  }
+  buildCounterRevertVariableResponse--;
+}
+
+core.int buildCounterSetupTag = 0;
+buildSetupTag() {
+  var o = new api.SetupTag();
+  buildCounterSetupTag++;
+  if (buildCounterSetupTag < 3) {
+    o.stopOnSetupFailure = true;
+    o.tagName = "foo";
+  }
+  buildCounterSetupTag--;
+  return o;
+}
+
+checkSetupTag(api.SetupTag o) {
+  buildCounterSetupTag++;
+  if (buildCounterSetupTag < 3) {
+    unittest.expect(o.stopOnSetupFailure, unittest.isTrue);
+    unittest.expect(o.tagName, unittest.equals('foo'));
+  }
+  buildCounterSetupTag--;
+}
+
+core.int buildCounterSyncStatus = 0;
+buildSyncStatus() {
+  var o = new api.SyncStatus();
+  buildCounterSyncStatus++;
+  if (buildCounterSyncStatus < 3) {
+    o.mergeConflict = true;
+    o.syncError = true;
+  }
+  buildCounterSyncStatus--;
+  return o;
+}
+
+checkSyncStatus(api.SyncStatus o) {
+  buildCounterSyncStatus++;
+  if (buildCounterSyncStatus < 3) {
+    unittest.expect(o.mergeConflict, unittest.isTrue);
+    unittest.expect(o.syncError, unittest.isTrue);
+  }
+  buildCounterSyncStatus--;
+}
+
+buildUnnamed1391() {
+  var o = new core.List<api.MergeConflict>();
+  o.add(buildMergeConflict());
+  o.add(buildMergeConflict());
+  return o;
+}
+
+checkUnnamed1391(core.List<api.MergeConflict> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMergeConflict(o[0]);
+  checkMergeConflict(o[1]);
+}
+
+core.int buildCounterSyncWorkspaceResponse = 0;
+buildSyncWorkspaceResponse() {
+  var o = new api.SyncWorkspaceResponse();
+  buildCounterSyncWorkspaceResponse++;
+  if (buildCounterSyncWorkspaceResponse < 3) {
+    o.mergeConflict = buildUnnamed1391();
+    o.syncStatus = buildSyncStatus();
+  }
+  buildCounterSyncWorkspaceResponse--;
+  return o;
+}
+
+checkSyncWorkspaceResponse(api.SyncWorkspaceResponse o) {
+  buildCounterSyncWorkspaceResponse++;
+  if (buildCounterSyncWorkspaceResponse < 3) {
+    checkUnnamed1391(o.mergeConflict);
+    checkSyncStatus(o.syncStatus);
+  }
+  buildCounterSyncWorkspaceResponse--;
+}
+
+buildUnnamed1392() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1392(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1393() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1393(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1394() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1394(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1395() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1395(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1396() {
+  var o = new core.List<api.Parameter>();
+  o.add(buildParameter());
+  o.add(buildParameter());
+  return o;
+}
+
+checkUnnamed1396(core.List<api.Parameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkParameter(o[0]);
+  checkParameter(o[1]);
+}
+
+buildUnnamed1397() {
+  var o = new core.List<api.SetupTag>();
+  o.add(buildSetupTag());
+  o.add(buildSetupTag());
+  return o;
+}
+
+checkUnnamed1397(core.List<api.SetupTag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSetupTag(o[0]);
+  checkSetupTag(o[1]);
+}
+
+buildUnnamed1398() {
+  var o = new core.List<api.TeardownTag>();
+  o.add(buildTeardownTag());
+  o.add(buildTeardownTag());
+  return o;
+}
+
+checkUnnamed1398(core.List<api.TeardownTag> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTeardownTag(o[0]);
+  checkTeardownTag(o[1]);
+}
+
+core.int buildCounterTag = 0;
+buildTag() {
+  var o = new api.Tag();
+  buildCounterTag++;
+  if (buildCounterTag < 3) {
+    o.accountId = "foo";
+    o.blockingRuleId = buildUnnamed1392();
+    o.blockingTriggerId = buildUnnamed1393();
+    o.containerId = "foo";
+    o.fingerprint = "foo";
+    o.firingRuleId = buildUnnamed1394();
+    o.firingTriggerId = buildUnnamed1395();
+    o.liveOnly = true;
+    o.name = "foo";
+    o.notes = "foo";
+    o.parameter = buildUnnamed1396();
+    o.parentFolderId = "foo";
+    o.path = "foo";
+    o.priority = buildParameter();
+    o.scheduleEndMs = "foo";
+    o.scheduleStartMs = "foo";
+    o.setupTag = buildUnnamed1397();
+    o.tagFiringOption = "foo";
+    o.tagId = "foo";
+    o.tagManagerUrl = "foo";
+    o.teardownTag = buildUnnamed1398();
+    o.type = "foo";
+    o.workspaceId = "foo";
+  }
+  buildCounterTag--;
+  return o;
+}
+
+checkTag(api.Tag o) {
+  buildCounterTag++;
+  if (buildCounterTag < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkUnnamed1392(o.blockingRuleId);
+    checkUnnamed1393(o.blockingTriggerId);
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    checkUnnamed1394(o.firingRuleId);
+    checkUnnamed1395(o.firingTriggerId);
+    unittest.expect(o.liveOnly, unittest.isTrue);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    checkUnnamed1396(o.parameter);
+    unittest.expect(o.parentFolderId, unittest.equals('foo'));
+    unittest.expect(o.path, unittest.equals('foo'));
+    checkParameter(o.priority);
+    unittest.expect(o.scheduleEndMs, unittest.equals('foo'));
+    unittest.expect(o.scheduleStartMs, unittest.equals('foo'));
+    checkUnnamed1397(o.setupTag);
+    unittest.expect(o.tagFiringOption, unittest.equals('foo'));
+    unittest.expect(o.tagId, unittest.equals('foo'));
+    unittest.expect(o.tagManagerUrl, unittest.equals('foo'));
+    checkUnnamed1398(o.teardownTag);
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.workspaceId, unittest.equals('foo'));
+  }
+  buildCounterTag--;
+}
+
+core.int buildCounterTeardownTag = 0;
+buildTeardownTag() {
+  var o = new api.TeardownTag();
+  buildCounterTeardownTag++;
+  if (buildCounterTeardownTag < 3) {
+    o.stopTeardownOnFailure = true;
+    o.tagName = "foo";
+  }
+  buildCounterTeardownTag--;
+  return o;
+}
+
+checkTeardownTag(api.TeardownTag o) {
+  buildCounterTeardownTag++;
+  if (buildCounterTeardownTag < 3) {
+    unittest.expect(o.stopTeardownOnFailure, unittest.isTrue);
+    unittest.expect(o.tagName, unittest.equals('foo'));
+  }
+  buildCounterTeardownTag--;
+}
+
+core.int buildCounterTimestamp = 0;
+buildTimestamp() {
+  var o = new api.Timestamp();
+  buildCounterTimestamp++;
+  if (buildCounterTimestamp < 3) {
+    o.nanos = 42;
+    o.seconds = "foo";
+  }
+  buildCounterTimestamp--;
+  return o;
+}
+
+checkTimestamp(api.Timestamp o) {
+  buildCounterTimestamp++;
+  if (buildCounterTimestamp < 3) {
+    unittest.expect(o.nanos, unittest.equals(42));
+    unittest.expect(o.seconds, unittest.equals('foo'));
+  }
+  buildCounterTimestamp--;
+}
+
+buildUnnamed1399() {
+  var o = new core.List<api.Condition>();
+  o.add(buildCondition());
+  o.add(buildCondition());
+  return o;
+}
+
+checkUnnamed1399(core.List<api.Condition> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCondition(o[0]);
+  checkCondition(o[1]);
+}
+
+buildUnnamed1400() {
+  var o = new core.List<api.Condition>();
+  o.add(buildCondition());
+  o.add(buildCondition());
+  return o;
+}
+
+checkUnnamed1400(core.List<api.Condition> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCondition(o[0]);
+  checkCondition(o[1]);
+}
+
+buildUnnamed1401() {
+  var o = new core.List<api.Condition>();
+  o.add(buildCondition());
+  o.add(buildCondition());
+  return o;
+}
+
+checkUnnamed1401(core.List<api.Condition> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCondition(o[0]);
+  checkCondition(o[1]);
+}
+
+buildUnnamed1402() {
+  var o = new core.List<api.Parameter>();
+  o.add(buildParameter());
+  o.add(buildParameter());
+  return o;
+}
+
+checkUnnamed1402(core.List<api.Parameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkParameter(o[0]);
+  checkParameter(o[1]);
+}
+
+core.int buildCounterTrigger = 0;
+buildTrigger() {
+  var o = new api.Trigger();
+  buildCounterTrigger++;
+  if (buildCounterTrigger < 3) {
+    o.accountId = "foo";
+    o.autoEventFilter = buildUnnamed1399();
+    o.checkValidation = buildParameter();
+    o.containerId = "foo";
+    o.continuousTimeMinMilliseconds = buildParameter();
+    o.customEventFilter = buildUnnamed1400();
+    o.eventName = buildParameter();
+    o.filter = buildUnnamed1401();
+    o.fingerprint = "foo";
+    o.horizontalScrollPercentageList = buildParameter();
+    o.interval = buildParameter();
+    o.intervalSeconds = buildParameter();
+    o.limit = buildParameter();
+    o.maxTimerLengthSeconds = buildParameter();
+    o.name = "foo";
+    o.notes = "foo";
+    o.parameter = buildUnnamed1402();
+    o.parentFolderId = "foo";
+    o.path = "foo";
+    o.selector = buildParameter();
+    o.tagManagerUrl = "foo";
+    o.totalTimeMinMilliseconds = buildParameter();
+    o.triggerId = "foo";
+    o.type = "foo";
+    o.uniqueTriggerId = buildParameter();
+    o.verticalScrollPercentageList = buildParameter();
+    o.visibilitySelector = buildParameter();
+    o.visiblePercentageMax = buildParameter();
+    o.visiblePercentageMin = buildParameter();
+    o.waitForTags = buildParameter();
+    o.waitForTagsTimeout = buildParameter();
+    o.workspaceId = "foo";
+  }
+  buildCounterTrigger--;
+  return o;
+}
+
+checkTrigger(api.Trigger o) {
+  buildCounterTrigger++;
+  if (buildCounterTrigger < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkUnnamed1399(o.autoEventFilter);
+    checkParameter(o.checkValidation);
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    checkParameter(o.continuousTimeMinMilliseconds);
+    checkUnnamed1400(o.customEventFilter);
+    checkParameter(o.eventName);
+    checkUnnamed1401(o.filter);
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    checkParameter(o.horizontalScrollPercentageList);
+    checkParameter(o.interval);
+    checkParameter(o.intervalSeconds);
+    checkParameter(o.limit);
+    checkParameter(o.maxTimerLengthSeconds);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    checkUnnamed1402(o.parameter);
+    unittest.expect(o.parentFolderId, unittest.equals('foo'));
+    unittest.expect(o.path, unittest.equals('foo'));
+    checkParameter(o.selector);
+    unittest.expect(o.tagManagerUrl, unittest.equals('foo'));
+    checkParameter(o.totalTimeMinMilliseconds);
+    unittest.expect(o.triggerId, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    checkParameter(o.uniqueTriggerId);
+    checkParameter(o.verticalScrollPercentageList);
+    checkParameter(o.visibilitySelector);
+    checkParameter(o.visiblePercentageMax);
+    checkParameter(o.visiblePercentageMin);
+    checkParameter(o.waitForTags);
+    checkParameter(o.waitForTagsTimeout);
+    unittest.expect(o.workspaceId, unittest.equals('foo'));
+  }
+  buildCounterTrigger--;
+}
+
+buildUnnamed1403() {
+  var o = new core.List<api.WorkspaceProposalUser>();
+  o.add(buildWorkspaceProposalUser());
+  o.add(buildWorkspaceProposalUser());
+  return o;
+}
+
+checkUnnamed1403(core.List<api.WorkspaceProposalUser> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkWorkspaceProposalUser(o[0]);
+  checkWorkspaceProposalUser(o[1]);
+}
+
+core.int buildCounterUpdateWorkspaceProposalRequest = 0;
+buildUpdateWorkspaceProposalRequest() {
+  var o = new api.UpdateWorkspaceProposalRequest();
+  buildCounterUpdateWorkspaceProposalRequest++;
+  if (buildCounterUpdateWorkspaceProposalRequest < 3) {
+    o.fingerprint = "foo";
+    o.newComment = buildWorkspaceProposalHistoryComment();
+    o.reviewers = buildUnnamed1403();
+    o.status = "foo";
+  }
+  buildCounterUpdateWorkspaceProposalRequest--;
+  return o;
+}
+
+checkUpdateWorkspaceProposalRequest(api.UpdateWorkspaceProposalRequest o) {
+  buildCounterUpdateWorkspaceProposalRequest++;
+  if (buildCounterUpdateWorkspaceProposalRequest < 3) {
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    checkWorkspaceProposalHistoryComment(o.newComment);
+    checkUnnamed1403(o.reviewers);
+    unittest.expect(o.status, unittest.equals('foo'));
+  }
+  buildCounterUpdateWorkspaceProposalRequest--;
+}
+
+buildUnnamed1404() {
+  var o = new core.List<api.ContainerAccess>();
+  o.add(buildContainerAccess());
+  o.add(buildContainerAccess());
+  return o;
+}
+
+checkUnnamed1404(core.List<api.ContainerAccess> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContainerAccess(o[0]);
+  checkContainerAccess(o[1]);
+}
+
+core.int buildCounterUserPermission = 0;
+buildUserPermission() {
+  var o = new api.UserPermission();
+  buildCounterUserPermission++;
+  if (buildCounterUserPermission < 3) {
+    o.accountAccess = buildAccountAccess();
+    o.accountId = "foo";
+    o.containerAccess = buildUnnamed1404();
+    o.emailAddress = "foo";
+    o.path = "foo";
+  }
+  buildCounterUserPermission--;
+  return o;
+}
+
+checkUserPermission(api.UserPermission o) {
+  buildCounterUserPermission++;
+  if (buildCounterUserPermission < 3) {
+    checkAccountAccess(o.accountAccess);
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkUnnamed1404(o.containerAccess);
+    unittest.expect(o.emailAddress, unittest.equals('foo'));
+    unittest.expect(o.path, unittest.equals('foo'));
+  }
+  buildCounterUserPermission--;
+}
+
+buildUnnamed1405() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1405(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1406() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1406(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1407() {
+  var o = new core.List<api.Parameter>();
+  o.add(buildParameter());
+  o.add(buildParameter());
+  return o;
+}
+
+checkUnnamed1407(core.List<api.Parameter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkParameter(o[0]);
+  checkParameter(o[1]);
+}
+
+core.int buildCounterVariable = 0;
+buildVariable() {
+  var o = new api.Variable();
+  buildCounterVariable++;
+  if (buildCounterVariable < 3) {
+    o.accountId = "foo";
+    o.containerId = "foo";
+    o.disablingTriggerId = buildUnnamed1405();
+    o.enablingTriggerId = buildUnnamed1406();
+    o.fingerprint = "foo";
+    o.name = "foo";
+    o.notes = "foo";
+    o.parameter = buildUnnamed1407();
+    o.parentFolderId = "foo";
+    o.path = "foo";
+    o.scheduleEndMs = "foo";
+    o.scheduleStartMs = "foo";
+    o.tagManagerUrl = "foo";
+    o.type = "foo";
+    o.variableId = "foo";
+    o.workspaceId = "foo";
+  }
+  buildCounterVariable--;
+  return o;
+}
+
+checkVariable(api.Variable o) {
+  buildCounterVariable++;
+  if (buildCounterVariable < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    checkUnnamed1405(o.disablingTriggerId);
+    checkUnnamed1406(o.enablingTriggerId);
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    checkUnnamed1407(o.parameter);
+    unittest.expect(o.parentFolderId, unittest.equals('foo'));
+    unittest.expect(o.path, unittest.equals('foo'));
+    unittest.expect(o.scheduleEndMs, unittest.equals('foo'));
+    unittest.expect(o.scheduleStartMs, unittest.equals('foo'));
+    unittest.expect(o.tagManagerUrl, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+    unittest.expect(o.variableId, unittest.equals('foo'));
+    unittest.expect(o.workspaceId, unittest.equals('foo'));
+  }
+  buildCounterVariable--;
+}
+
+core.int buildCounterWorkspace = 0;
+buildWorkspace() {
+  var o = new api.Workspace();
+  buildCounterWorkspace++;
+  if (buildCounterWorkspace < 3) {
+    o.accountId = "foo";
+    o.containerId = "foo";
+    o.description = "foo";
+    o.fingerprint = "foo";
+    o.name = "foo";
+    o.path = "foo";
+    o.tagManagerUrl = "foo";
+    o.workspaceId = "foo";
+  }
+  buildCounterWorkspace--;
+  return o;
+}
+
+checkWorkspace(api.Workspace o) {
+  buildCounterWorkspace++;
+  if (buildCounterWorkspace < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.path, unittest.equals('foo'));
+    unittest.expect(o.tagManagerUrl, unittest.equals('foo'));
+    unittest.expect(o.workspaceId, unittest.equals('foo'));
+  }
+  buildCounterWorkspace--;
+}
+
+buildUnnamed1408() {
+  var o = new core.List<api.WorkspaceProposalUser>();
+  o.add(buildWorkspaceProposalUser());
+  o.add(buildWorkspaceProposalUser());
+  return o;
+}
+
+checkUnnamed1408(core.List<api.WorkspaceProposalUser> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkWorkspaceProposalUser(o[0]);
+  checkWorkspaceProposalUser(o[1]);
+}
+
+buildUnnamed1409() {
+  var o = new core.List<api.WorkspaceProposalHistory>();
+  o.add(buildWorkspaceProposalHistory());
+  o.add(buildWorkspaceProposalHistory());
+  return o;
+}
+
+checkUnnamed1409(core.List<api.WorkspaceProposalHistory> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkWorkspaceProposalHistory(o[0]);
+  checkWorkspaceProposalHistory(o[1]);
+}
+
+buildUnnamed1410() {
+  var o = new core.List<api.WorkspaceProposalUser>();
+  o.add(buildWorkspaceProposalUser());
+  o.add(buildWorkspaceProposalUser());
+  return o;
+}
+
+checkUnnamed1410(core.List<api.WorkspaceProposalUser> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkWorkspaceProposalUser(o[0]);
+  checkWorkspaceProposalUser(o[1]);
+}
+
+core.int buildCounterWorkspaceProposal = 0;
+buildWorkspaceProposal() {
+  var o = new api.WorkspaceProposal();
+  buildCounterWorkspaceProposal++;
+  if (buildCounterWorkspaceProposal < 3) {
+    o.authors = buildUnnamed1408();
+    o.fingerprint = "foo";
+    o.history = buildUnnamed1409();
+    o.path = "foo";
+    o.reviewers = buildUnnamed1410();
+    o.status = "foo";
+  }
+  buildCounterWorkspaceProposal--;
+  return o;
+}
+
+checkWorkspaceProposal(api.WorkspaceProposal o) {
+  buildCounterWorkspaceProposal++;
+  if (buildCounterWorkspaceProposal < 3) {
+    checkUnnamed1408(o.authors);
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    checkUnnamed1409(o.history);
+    unittest.expect(o.path, unittest.equals('foo'));
+    checkUnnamed1410(o.reviewers);
+    unittest.expect(o.status, unittest.equals('foo'));
+  }
+  buildCounterWorkspaceProposal--;
+}
+
+core.int buildCounterWorkspaceProposalHistory = 0;
+buildWorkspaceProposalHistory() {
+  var o = new api.WorkspaceProposalHistory();
+  buildCounterWorkspaceProposalHistory++;
+  if (buildCounterWorkspaceProposalHistory < 3) {
+    o.comment = buildWorkspaceProposalHistoryComment();
+    o.createdBy = buildWorkspaceProposalUser();
+    o.createdTimestamp = buildTimestamp();
+    o.statusChange = buildWorkspaceProposalHistoryStatusChange();
+    o.type = "foo";
+  }
+  buildCounterWorkspaceProposalHistory--;
+  return o;
+}
+
+checkWorkspaceProposalHistory(api.WorkspaceProposalHistory o) {
+  buildCounterWorkspaceProposalHistory++;
+  if (buildCounterWorkspaceProposalHistory < 3) {
+    checkWorkspaceProposalHistoryComment(o.comment);
+    checkWorkspaceProposalUser(o.createdBy);
+    checkTimestamp(o.createdTimestamp);
+    checkWorkspaceProposalHistoryStatusChange(o.statusChange);
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterWorkspaceProposalHistory--;
+}
+
+core.int buildCounterWorkspaceProposalHistoryComment = 0;
+buildWorkspaceProposalHistoryComment() {
+  var o = new api.WorkspaceProposalHistoryComment();
+  buildCounterWorkspaceProposalHistoryComment++;
+  if (buildCounterWorkspaceProposalHistoryComment < 3) {
+    o.content = "foo";
+  }
+  buildCounterWorkspaceProposalHistoryComment--;
+  return o;
+}
+
+checkWorkspaceProposalHistoryComment(api.WorkspaceProposalHistoryComment o) {
+  buildCounterWorkspaceProposalHistoryComment++;
+  if (buildCounterWorkspaceProposalHistoryComment < 3) {
+    unittest.expect(o.content, unittest.equals('foo'));
+  }
+  buildCounterWorkspaceProposalHistoryComment--;
+}
+
+core.int buildCounterWorkspaceProposalHistoryStatusChange = 0;
+buildWorkspaceProposalHistoryStatusChange() {
+  var o = new api.WorkspaceProposalHistoryStatusChange();
+  buildCounterWorkspaceProposalHistoryStatusChange++;
+  if (buildCounterWorkspaceProposalHistoryStatusChange < 3) {
+    o.newStatus = "foo";
+    o.oldStatus = "foo";
+  }
+  buildCounterWorkspaceProposalHistoryStatusChange--;
+  return o;
+}
+
+checkWorkspaceProposalHistoryStatusChange(
+    api.WorkspaceProposalHistoryStatusChange o) {
+  buildCounterWorkspaceProposalHistoryStatusChange++;
+  if (buildCounterWorkspaceProposalHistoryStatusChange < 3) {
+    unittest.expect(o.newStatus, unittest.equals('foo'));
+    unittest.expect(o.oldStatus, unittest.equals('foo'));
+  }
+  buildCounterWorkspaceProposalHistoryStatusChange--;
+}
+
+core.int buildCounterWorkspaceProposalUser = 0;
+buildWorkspaceProposalUser() {
+  var o = new api.WorkspaceProposalUser();
+  buildCounterWorkspaceProposalUser++;
+  if (buildCounterWorkspaceProposalUser < 3) {
+    o.gaiaId = "foo";
+    o.type = "foo";
+  }
+  buildCounterWorkspaceProposalUser--;
+  return o;
+}
+
+checkWorkspaceProposalUser(api.WorkspaceProposalUser o) {
+  buildCounterWorkspaceProposalUser++;
+  if (buildCounterWorkspaceProposalUser < 3) {
+    unittest.expect(o.gaiaId, unittest.equals('foo'));
+    unittest.expect(o.type, unittest.equals('foo'));
+  }
+  buildCounterWorkspaceProposalUser--;
+}
+
+buildUnnamed1411() {
+  var o = new core.List<api.ZoneChildContainer>();
+  o.add(buildZoneChildContainer());
+  o.add(buildZoneChildContainer());
+  return o;
+}
+
+checkUnnamed1411(core.List<api.ZoneChildContainer> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkZoneChildContainer(o[0]);
+  checkZoneChildContainer(o[1]);
+}
+
+core.int buildCounterZone = 0;
+buildZone() {
+  var o = new api.Zone();
+  buildCounterZone++;
+  if (buildCounterZone < 3) {
+    o.accountId = "foo";
+    o.boundary = buildZoneBoundary();
+    o.childContainer = buildUnnamed1411();
+    o.containerId = "foo";
+    o.fingerprint = "foo";
+    o.name = "foo";
+    o.notes = "foo";
+    o.path = "foo";
+    o.tagManagerUrl = "foo";
+    o.typeRestriction = buildZoneTypeRestriction();
+    o.workspaceId = "foo";
+    o.zoneId = "foo";
+  }
+  buildCounterZone--;
+  return o;
+}
+
+checkZone(api.Zone o) {
+  buildCounterZone++;
+  if (buildCounterZone < 3) {
+    unittest.expect(o.accountId, unittest.equals('foo'));
+    checkZoneBoundary(o.boundary);
+    checkUnnamed1411(o.childContainer);
+    unittest.expect(o.containerId, unittest.equals('foo'));
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.notes, unittest.equals('foo'));
+    unittest.expect(o.path, unittest.equals('foo'));
+    unittest.expect(o.tagManagerUrl, unittest.equals('foo'));
+    checkZoneTypeRestriction(o.typeRestriction);
+    unittest.expect(o.workspaceId, unittest.equals('foo'));
+    unittest.expect(o.zoneId, unittest.equals('foo'));
+  }
+  buildCounterZone--;
+}
+
+buildUnnamed1412() {
+  var o = new core.List<api.Condition>();
+  o.add(buildCondition());
+  o.add(buildCondition());
+  return o;
+}
+
+checkUnnamed1412(core.List<api.Condition> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCondition(o[0]);
+  checkCondition(o[1]);
+}
+
+buildUnnamed1413() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1413(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterZoneBoundary = 0;
+buildZoneBoundary() {
+  var o = new api.ZoneBoundary();
+  buildCounterZoneBoundary++;
+  if (buildCounterZoneBoundary < 3) {
+    o.condition = buildUnnamed1412();
+    o.customEvaluationTriggerId = buildUnnamed1413();
+  }
+  buildCounterZoneBoundary--;
+  return o;
+}
+
+checkZoneBoundary(api.ZoneBoundary o) {
+  buildCounterZoneBoundary++;
+  if (buildCounterZoneBoundary < 3) {
+    checkUnnamed1412(o.condition);
+    checkUnnamed1413(o.customEvaluationTriggerId);
+  }
+  buildCounterZoneBoundary--;
+}
+
+core.int buildCounterZoneChildContainer = 0;
+buildZoneChildContainer() {
+  var o = new api.ZoneChildContainer();
+  buildCounterZoneChildContainer++;
+  if (buildCounterZoneChildContainer < 3) {
+    o.nickname = "foo";
+    o.publicId = "foo";
+  }
+  buildCounterZoneChildContainer--;
+  return o;
+}
+
+checkZoneChildContainer(api.ZoneChildContainer o) {
+  buildCounterZoneChildContainer++;
+  if (buildCounterZoneChildContainer < 3) {
+    unittest.expect(o.nickname, unittest.equals('foo'));
+    unittest.expect(o.publicId, unittest.equals('foo'));
+  }
+  buildCounterZoneChildContainer--;
+}
+
+buildUnnamed1414() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1414(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterZoneTypeRestriction = 0;
+buildZoneTypeRestriction() {
+  var o = new api.ZoneTypeRestriction();
+  buildCounterZoneTypeRestriction++;
+  if (buildCounterZoneTypeRestriction < 3) {
+    o.enable = true;
+    o.whitelistedTypeId = buildUnnamed1414();
+  }
+  buildCounterZoneTypeRestriction--;
+  return o;
+}
+
+checkZoneTypeRestriction(api.ZoneTypeRestriction o) {
+  buildCounterZoneTypeRestriction++;
+  if (buildCounterZoneTypeRestriction < 3) {
+    unittest.expect(o.enable, unittest.isTrue);
+    checkUnnamed1414(o.whitelistedTypeId);
+  }
+  buildCounterZoneTypeRestriction--;
+}
+
+buildUnnamed1415() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1415(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1416() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1416(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1417() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1417(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1418() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1418(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed1419() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed1419(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-Account", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccount();
+      var od = new api.Account.fromJson(o.toJson());
+      checkAccount(od);
+    });
+  });
+
+  unittest.group("obj-schema-AccountAccess", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccountAccess();
+      var od = new api.AccountAccess.fromJson(o.toJson());
+      checkAccountAccess(od);
+    });
+  });
+
+  unittest.group("obj-schema-BuiltInVariable", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBuiltInVariable();
+      var od = new api.BuiltInVariable.fromJson(o.toJson());
+      checkBuiltInVariable(od);
+    });
+  });
+
+  unittest.group("obj-schema-Condition", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCondition();
+      var od = new api.Condition.fromJson(o.toJson());
+      checkCondition(od);
+    });
+  });
+
+  unittest.group("obj-schema-Container", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContainer();
+      var od = new api.Container.fromJson(o.toJson());
+      checkContainer(od);
+    });
+  });
+
+  unittest.group("obj-schema-ContainerAccess", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContainerAccess();
+      var od = new api.ContainerAccess.fromJson(o.toJson());
+      checkContainerAccess(od);
+    });
+  });
+
+  unittest.group("obj-schema-ContainerVersion", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContainerVersion();
+      var od = new api.ContainerVersion.fromJson(o.toJson());
+      checkContainerVersion(od);
+    });
+  });
+
+  unittest.group("obj-schema-ContainerVersionHeader", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildContainerVersionHeader();
+      var od = new api.ContainerVersionHeader.fromJson(o.toJson());
+      checkContainerVersionHeader(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateBuiltInVariableResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateBuiltInVariableResponse();
+      var od = new api.CreateBuiltInVariableResponse.fromJson(o.toJson());
+      checkCreateBuiltInVariableResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateContainerVersionRequestVersionOptions", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateContainerVersionRequestVersionOptions();
+      var od = new api.CreateContainerVersionRequestVersionOptions.fromJson(
+          o.toJson());
+      checkCreateContainerVersionRequestVersionOptions(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateContainerVersionResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateContainerVersionResponse();
+      var od = new api.CreateContainerVersionResponse.fromJson(o.toJson());
+      checkCreateContainerVersionResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateWorkspaceProposalRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateWorkspaceProposalRequest();
+      var od = new api.CreateWorkspaceProposalRequest.fromJson(o.toJson());
+      checkCreateWorkspaceProposalRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Entity", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEntity();
+      var od = new api.Entity.fromJson(o.toJson());
+      checkEntity(od);
+    });
+  });
+
+  unittest.group("obj-schema-Environment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEnvironment();
+      var od = new api.Environment.fromJson(o.toJson());
+      checkEnvironment(od);
+    });
+  });
+
+  unittest.group("obj-schema-Folder", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFolder();
+      var od = new api.Folder.fromJson(o.toJson());
+      checkFolder(od);
+    });
+  });
+
+  unittest.group("obj-schema-FolderEntities", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFolderEntities();
+      var od = new api.FolderEntities.fromJson(o.toJson());
+      checkFolderEntities(od);
+    });
+  });
+
+  unittest.group("obj-schema-GetWorkspaceStatusResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGetWorkspaceStatusResponse();
+      var od = new api.GetWorkspaceStatusResponse.fromJson(o.toJson());
+      checkGetWorkspaceStatusResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListAccountsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListAccountsResponse();
+      var od = new api.ListAccountsResponse.fromJson(o.toJson());
+      checkListAccountsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListContainerVersionsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListContainerVersionsResponse();
+      var od = new api.ListContainerVersionsResponse.fromJson(o.toJson());
+      checkListContainerVersionsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListContainersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListContainersResponse();
+      var od = new api.ListContainersResponse.fromJson(o.toJson());
+      checkListContainersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListEnabledBuiltInVariablesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListEnabledBuiltInVariablesResponse();
+      var od = new api.ListEnabledBuiltInVariablesResponse.fromJson(o.toJson());
+      checkListEnabledBuiltInVariablesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListEnvironmentsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListEnvironmentsResponse();
+      var od = new api.ListEnvironmentsResponse.fromJson(o.toJson());
+      checkListEnvironmentsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListFoldersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListFoldersResponse();
+      var od = new api.ListFoldersResponse.fromJson(o.toJson());
+      checkListFoldersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListTagsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListTagsResponse();
+      var od = new api.ListTagsResponse.fromJson(o.toJson());
+      checkListTagsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListTriggersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListTriggersResponse();
+      var od = new api.ListTriggersResponse.fromJson(o.toJson());
+      checkListTriggersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListUserPermissionsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListUserPermissionsResponse();
+      var od = new api.ListUserPermissionsResponse.fromJson(o.toJson());
+      checkListUserPermissionsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListVariablesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListVariablesResponse();
+      var od = new api.ListVariablesResponse.fromJson(o.toJson());
+      checkListVariablesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListWorkspacesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListWorkspacesResponse();
+      var od = new api.ListWorkspacesResponse.fromJson(o.toJson());
+      checkListWorkspacesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-MergeConflict", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMergeConflict();
+      var od = new api.MergeConflict.fromJson(o.toJson());
+      checkMergeConflict(od);
+    });
+  });
+
+  unittest.group("obj-schema-Parameter", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildParameter();
+      var od = new api.Parameter.fromJson(o.toJson());
+      checkParameter(od);
+    });
+  });
+
+  unittest.group("obj-schema-PublishContainerVersionResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPublishContainerVersionResponse();
+      var od = new api.PublishContainerVersionResponse.fromJson(o.toJson());
+      checkPublishContainerVersionResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-QuickPreviewResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildQuickPreviewResponse();
+      var od = new api.QuickPreviewResponse.fromJson(o.toJson());
+      checkQuickPreviewResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-RevertBuiltInVariableResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRevertBuiltInVariableResponse();
+      var od = new api.RevertBuiltInVariableResponse.fromJson(o.toJson());
+      checkRevertBuiltInVariableResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-RevertFolderResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRevertFolderResponse();
+      var od = new api.RevertFolderResponse.fromJson(o.toJson());
+      checkRevertFolderResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-RevertTagResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRevertTagResponse();
+      var od = new api.RevertTagResponse.fromJson(o.toJson());
+      checkRevertTagResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-RevertTriggerResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRevertTriggerResponse();
+      var od = new api.RevertTriggerResponse.fromJson(o.toJson());
+      checkRevertTriggerResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-RevertVariableResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRevertVariableResponse();
+      var od = new api.RevertVariableResponse.fromJson(o.toJson());
+      checkRevertVariableResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-SetupTag", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSetupTag();
+      var od = new api.SetupTag.fromJson(o.toJson());
+      checkSetupTag(od);
+    });
+  });
+
+  unittest.group("obj-schema-SyncStatus", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSyncStatus();
+      var od = new api.SyncStatus.fromJson(o.toJson());
+      checkSyncStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-SyncWorkspaceResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSyncWorkspaceResponse();
+      var od = new api.SyncWorkspaceResponse.fromJson(o.toJson());
+      checkSyncWorkspaceResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Tag", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTag();
+      var od = new api.Tag.fromJson(o.toJson());
+      checkTag(od);
+    });
+  });
+
+  unittest.group("obj-schema-TeardownTag", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTeardownTag();
+      var od = new api.TeardownTag.fromJson(o.toJson());
+      checkTeardownTag(od);
+    });
+  });
+
+  unittest.group("obj-schema-Timestamp", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTimestamp();
+      var od = new api.Timestamp.fromJson(o.toJson());
+      checkTimestamp(od);
+    });
+  });
+
+  unittest.group("obj-schema-Trigger", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTrigger();
+      var od = new api.Trigger.fromJson(o.toJson());
+      checkTrigger(od);
+    });
+  });
+
+  unittest.group("obj-schema-UpdateWorkspaceProposalRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUpdateWorkspaceProposalRequest();
+      var od = new api.UpdateWorkspaceProposalRequest.fromJson(o.toJson());
+      checkUpdateWorkspaceProposalRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-UserPermission", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUserPermission();
+      var od = new api.UserPermission.fromJson(o.toJson());
+      checkUserPermission(od);
+    });
+  });
+
+  unittest.group("obj-schema-Variable", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildVariable();
+      var od = new api.Variable.fromJson(o.toJson());
+      checkVariable(od);
+    });
+  });
+
+  unittest.group("obj-schema-Workspace", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildWorkspace();
+      var od = new api.Workspace.fromJson(o.toJson());
+      checkWorkspace(od);
+    });
+  });
+
+  unittest.group("obj-schema-WorkspaceProposal", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildWorkspaceProposal();
+      var od = new api.WorkspaceProposal.fromJson(o.toJson());
+      checkWorkspaceProposal(od);
+    });
+  });
+
+  unittest.group("obj-schema-WorkspaceProposalHistory", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildWorkspaceProposalHistory();
+      var od = new api.WorkspaceProposalHistory.fromJson(o.toJson());
+      checkWorkspaceProposalHistory(od);
+    });
+  });
+
+  unittest.group("obj-schema-WorkspaceProposalHistoryComment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildWorkspaceProposalHistoryComment();
+      var od = new api.WorkspaceProposalHistoryComment.fromJson(o.toJson());
+      checkWorkspaceProposalHistoryComment(od);
+    });
+  });
+
+  unittest.group("obj-schema-WorkspaceProposalHistoryStatusChange", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildWorkspaceProposalHistoryStatusChange();
+      var od =
+          new api.WorkspaceProposalHistoryStatusChange.fromJson(o.toJson());
+      checkWorkspaceProposalHistoryStatusChange(od);
+    });
+  });
+
+  unittest.group("obj-schema-WorkspaceProposalUser", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildWorkspaceProposalUser();
+      var od = new api.WorkspaceProposalUser.fromJson(o.toJson());
+      checkWorkspaceProposalUser(od);
+    });
+  });
+
+  unittest.group("obj-schema-Zone", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildZone();
+      var od = new api.Zone.fromJson(o.toJson());
+      checkZone(od);
+    });
+  });
+
+  unittest.group("obj-schema-ZoneBoundary", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildZoneBoundary();
+      var od = new api.ZoneBoundary.fromJson(o.toJson());
+      checkZoneBoundary(od);
+    });
+  });
+
+  unittest.group("obj-schema-ZoneChildContainer", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildZoneChildContainer();
+      var od = new api.ZoneChildContainer.fromJson(o.toJson());
+      checkZoneChildContainer(od);
+    });
+  });
+
+  unittest.group("obj-schema-ZoneTypeRestriction", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildZoneTypeRestriction();
+      var od = new api.ZoneTypeRestriction.fromJson(o.toJson());
+      checkZoneTypeRestriction(od);
+    });
+  });
+
+  unittest.group("resource-AccountsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.TagmanagerApi(mock).accounts;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.TagmanagerApi(mock).accounts;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("tagmanager/v2/"));
+        pathOffset += 14;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("accounts"));
+        pathOffset += 8;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListAccountsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(pageToken: arg_pageToken, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListAccountsResponse response) {
+        checkListAccountsResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsResourceApi res = new api.TagmanagerApi(mock).accounts;
+      var arg_request = buildAccount();
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Account.fromJson(json);
+        checkAccount(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildAccount());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_path,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Account response) {
+        checkAccount(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers;
+      var arg_request = buildContainer();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Container.fromJson(json);
+        checkContainer(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainer());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Container response) {
+        checkContainer(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainer());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Container response) {
+        checkContainer(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListContainersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent, pageToken: arg_pageToken, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListContainersResponse response) {
+        checkListContainersResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers;
+      var arg_request = buildContainer();
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Container.fromJson(json);
+        checkContainer(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainer());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_path,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Container response) {
+        checkContainer(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersEnvironmentsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersEnvironmentsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.environments;
+      var arg_request = buildEnvironment();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Environment.fromJson(json);
+        checkEnvironment(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEnvironment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Environment response) {
+        checkEnvironment(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersEnvironmentsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.environments;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersEnvironmentsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.environments;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEnvironment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Environment response) {
+        checkEnvironment(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersEnvironmentsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.environments;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListEnvironmentsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent, pageToken: arg_pageToken, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListEnvironmentsResponse response) {
+        checkListEnvironmentsResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersEnvironmentsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.environments;
+      var arg_request = buildEnvironment();
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Environment.fromJson(json);
+        checkEnvironment(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEnvironment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_path,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Environment response) {
+        checkEnvironment(response);
+      })));
+    });
+
+    unittest.test("method--reauthorize", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersEnvironmentsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.environments;
+      var arg_request = buildEnvironment();
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Environment.fromJson(json);
+        checkEnvironment(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEnvironment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .reauthorize(arg_request, arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Environment response) {
+        checkEnvironment(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersEnvironmentsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.environments;
+      var arg_request = buildEnvironment();
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Environment.fromJson(json);
+        checkEnvironment(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEnvironment());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_path,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Environment response) {
+        checkEnvironment(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersVersionHeadersResourceApi", () {
+    unittest.test("method--latest", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionHeadersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versionHeaders;
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainerVersionHeader());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .latest(arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContainerVersionHeader response) {
+        checkContainerVersionHeader(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionHeadersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versionHeaders;
+      var arg_parent = "foo";
+      var arg_includeDeleted = true;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["includeDeleted"].first,
+            unittest.equals("$arg_includeDeleted"));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListContainerVersionsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              includeDeleted: arg_includeDeleted,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListContainerVersionsResponse response) {
+        checkListContainerVersionsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersVersionsResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versions;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versions;
+      var arg_path = "foo";
+      var arg_containerVersionId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["containerVersionId"].first,
+            unittest.equals(arg_containerVersionId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainerVersion());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_path,
+              containerVersionId: arg_containerVersionId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContainerVersion response) {
+        checkContainerVersion(response);
+      })));
+    });
+
+    unittest.test("method--live", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versions;
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainerVersion());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .live(arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContainerVersion response) {
+        checkContainerVersion(response);
+      })));
+    });
+
+    unittest.test("method--publish", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versions;
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPublishContainerVersionResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .publish(arg_path, fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.PublishContainerVersionResponse response) {
+        checkPublishContainerVersionResponse(response);
+      })));
+    });
+
+    unittest.test("method--setLatest", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versions;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainerVersion());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .setLatest(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContainerVersion response) {
+        checkContainerVersion(response);
+      })));
+    });
+
+    unittest.test("method--undelete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versions;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainerVersion());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .undelete(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContainerVersion response) {
+        checkContainerVersion(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersVersionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.versions;
+      var arg_request = buildContainerVersion();
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ContainerVersion.fromJson(json);
+        checkContainerVersion(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildContainerVersion());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_path,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ContainerVersion response) {
+        checkContainerVersion(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersWorkspacesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces;
+      var arg_request = buildWorkspace();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Workspace.fromJson(json);
+        checkWorkspace(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildWorkspace());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Workspace response) {
+        checkWorkspace(response);
+      })));
+    });
+
+    unittest.test("method--createVersion", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces;
+      var arg_request = buildCreateContainerVersionRequestVersionOptions();
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj =
+            new api.CreateContainerVersionRequestVersionOptions.fromJson(json);
+        checkCreateContainerVersionRequestVersionOptions(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreateContainerVersionResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.createVersion(arg_request, arg_path, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.CreateContainerVersionResponse response) {
+        checkCreateContainerVersionResponse(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildWorkspace());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Workspace response) {
+        checkWorkspace(response);
+      })));
+    });
+
+    unittest.test("method--getProposal", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildWorkspaceProposal());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getProposal(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.WorkspaceProposal response) {
+        checkWorkspaceProposal(response);
+      })));
+    });
+
+    unittest.test("method--getStatus", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildGetWorkspaceStatusResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.getStatus(arg_path, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.GetWorkspaceStatusResponse response) {
+        checkGetWorkspaceStatusResponse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListWorkspacesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent, pageToken: arg_pageToken, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListWorkspacesResponse response) {
+        checkListWorkspacesResponse(response);
+      })));
+    });
+
+    unittest.test("method--quickPreview", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildQuickPreviewResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .quickPreview(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.QuickPreviewResponse response) {
+        checkQuickPreviewResponse(response);
+      })));
+    });
+
+    unittest.test("method--resolveConflict", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces;
+      var arg_request = buildEntity();
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Entity.fromJson(json);
+        checkEntity(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .resolveConflict(arg_request, arg_path,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--sync", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSyncWorkspaceResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .sync(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SyncWorkspaceResponse response) {
+        checkSyncWorkspaceResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces;
+      var arg_request = buildWorkspace();
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Workspace.fromJson(json);
+        checkWorkspace(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildWorkspace());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_path,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Workspace response) {
+        checkWorkspace(response);
+      })));
+    });
+
+    unittest.test("method--updateProposal", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces;
+      var arg_request = buildUpdateWorkspaceProposalRequest();
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UpdateWorkspaceProposalRequest.fromJson(json);
+        checkUpdateWorkspaceProposalRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildWorkspaceProposal());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .updateProposal(arg_request, arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.WorkspaceProposal response) {
+        checkWorkspaceProposal(response);
+      })));
+    });
+  });
+
+  unittest.group(
+      "resource-AccountsContainersWorkspacesBuiltInVariablesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesBuiltInVariablesResourceApi res =
+          new api.TagmanagerApi(mock)
+              .accounts
+              .containers
+              .workspaces
+              .builtInVariables;
+      var arg_parent = "foo";
+      var arg_type = buildUnnamed1415();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["type"], unittest.equals(arg_type));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCreateBuiltInVariableResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.create(arg_parent, type: arg_type, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.CreateBuiltInVariableResponse response) {
+        checkCreateBuiltInVariableResponse(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesBuiltInVariablesResourceApi res =
+          new api.TagmanagerApi(mock)
+              .accounts
+              .containers
+              .workspaces
+              .builtInVariables;
+      var arg_path = "foo";
+      var arg_type = buildUnnamed1416();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["type"], unittest.equals(arg_type));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_path, type: arg_type, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesBuiltInVariablesResourceApi res =
+          new api.TagmanagerApi(mock)
+              .accounts
+              .containers
+              .workspaces
+              .builtInVariables;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildListEnabledBuiltInVariablesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.list(arg_parent, pageToken: arg_pageToken, $fields: arg_$fields).then(
+          unittest.expectAsync1(
+              ((api.ListEnabledBuiltInVariablesResponse response) {
+        checkListEnabledBuiltInVariablesResponse(response);
+      })));
+    });
+
+    unittest.test("method--revert", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesBuiltInVariablesResourceApi res =
+          new api.TagmanagerApi(mock)
+              .accounts
+              .containers
+              .workspaces
+              .builtInVariables;
+      var arg_path = "foo";
+      var arg_type = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["type"].first, unittest.equals(arg_type));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRevertBuiltInVariableResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.revert(arg_path, type: arg_type, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.RevertBuiltInVariableResponse response) {
+        checkRevertBuiltInVariableResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersWorkspacesFoldersResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesFoldersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.folders;
+      var arg_request = buildFolder();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Folder.fromJson(json);
+        checkFolder(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFolder());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Folder response) {
+        checkFolder(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesFoldersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.folders;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--entities", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesFoldersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.folders;
+      var arg_path = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFolderEntities());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .entities(arg_path, pageToken: arg_pageToken, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FolderEntities response) {
+        checkFolderEntities(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesFoldersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.folders;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFolder());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Folder response) {
+        checkFolder(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesFoldersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.folders;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListFoldersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent, pageToken: arg_pageToken, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListFoldersResponse response) {
+        checkListFoldersResponse(response);
+      })));
+    });
+
+    unittest.test("method--moveEntitiesToFolder", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesFoldersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.folders;
+      var arg_request = buildFolder();
+      var arg_path = "foo";
+      var arg_tagId = buildUnnamed1417();
+      var arg_triggerId = buildUnnamed1418();
+      var arg_variableId = buildUnnamed1419();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Folder.fromJson(json);
+        checkFolder(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["tagId"], unittest.equals(arg_tagId));
+        unittest.expect(queryMap["triggerId"], unittest.equals(arg_triggerId));
+        unittest.expect(
+            queryMap["variableId"], unittest.equals(arg_variableId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .moveEntitiesToFolder(arg_request, arg_path,
+              tagId: arg_tagId,
+              triggerId: arg_triggerId,
+              variableId: arg_variableId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--revert", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesFoldersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.folders;
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRevertFolderResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .revert(arg_path, fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RevertFolderResponse response) {
+        checkRevertFolderResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesFoldersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.folders;
+      var arg_request = buildFolder();
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Folder.fromJson(json);
+        checkFolder(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFolder());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_path,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Folder response) {
+        checkFolder(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersWorkspacesProposalResourceApi",
+      () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesProposalResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.proposal;
+      var arg_request = buildCreateWorkspaceProposalRequest();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreateWorkspaceProposalRequest.fromJson(json);
+        checkCreateWorkspaceProposalRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildWorkspaceProposal());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.WorkspaceProposal response) {
+        checkWorkspaceProposal(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesProposalResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.proposal;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersWorkspacesTagsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesTagsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.tags;
+      var arg_request = buildTag();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Tag.fromJson(json);
+        checkTag(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTag());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Tag response) {
+        checkTag(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesTagsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.tags;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesTagsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.tags;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTag());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Tag response) {
+        checkTag(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesTagsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.tags;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListTagsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent, pageToken: arg_pageToken, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListTagsResponse response) {
+        checkListTagsResponse(response);
+      })));
+    });
+
+    unittest.test("method--revert", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesTagsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.tags;
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRevertTagResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .revert(arg_path, fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RevertTagResponse response) {
+        checkRevertTagResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesTagsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.tags;
+      var arg_request = buildTag();
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Tag.fromJson(json);
+        checkTag(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTag());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_path,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Tag response) {
+        checkTag(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersWorkspacesTriggersResourceApi",
+      () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesTriggersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.triggers;
+      var arg_request = buildTrigger();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Trigger.fromJson(json);
+        checkTrigger(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTrigger());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Trigger response) {
+        checkTrigger(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesTriggersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.triggers;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesTriggersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.triggers;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTrigger());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Trigger response) {
+        checkTrigger(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesTriggersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.triggers;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListTriggersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent, pageToken: arg_pageToken, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListTriggersResponse response) {
+        checkListTriggersResponse(response);
+      })));
+    });
+
+    unittest.test("method--revert", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesTriggersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.triggers;
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRevertTriggerResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .revert(arg_path, fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RevertTriggerResponse response) {
+        checkRevertTriggerResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesTriggersResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.triggers;
+      var arg_request = buildTrigger();
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Trigger.fromJson(json);
+        checkTrigger(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTrigger());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_path,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Trigger response) {
+        checkTrigger(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsContainersWorkspacesVariablesResourceApi",
+      () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesVariablesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.variables;
+      var arg_request = buildVariable();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Variable.fromJson(json);
+        checkVariable(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVariable());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Variable response) {
+        checkVariable(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesVariablesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.variables;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesVariablesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.variables;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVariable());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Variable response) {
+        checkVariable(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesVariablesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.variables;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListVariablesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent, pageToken: arg_pageToken, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListVariablesResponse response) {
+        checkListVariablesResponse(response);
+      })));
+    });
+
+    unittest.test("method--revert", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesVariablesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.variables;
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRevertVariableResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .revert(arg_path, fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RevertVariableResponse response) {
+        checkRevertVariableResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsContainersWorkspacesVariablesResourceApi res =
+          new api.TagmanagerApi(mock).accounts.containers.workspaces.variables;
+      var arg_request = buildVariable();
+      var arg_path = "foo";
+      var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Variable.fromJson(json);
+        checkVariable(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildVariable());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_path,
+              fingerprint: arg_fingerprint, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Variable response) {
+        checkVariable(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-AccountsUserPermissionsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.AccountsUserPermissionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.userPermissions;
+      var arg_request = buildUserPermission();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UserPermission.fromJson(json);
+        checkUserPermission(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserPermission());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserPermission response) {
+        checkUserPermission(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.AccountsUserPermissionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.userPermissions;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = "";
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.AccountsUserPermissionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.userPermissions;
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserPermission());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserPermission response) {
+        checkUserPermission(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.AccountsUserPermissionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.userPermissions;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListUserPermissionsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.list(arg_parent, pageToken: arg_pageToken, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.ListUserPermissionsResponse response) {
+        checkListUserPermissionsResponse(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.AccountsUserPermissionsResourceApi res =
+          new api.TagmanagerApi(mock).accounts.userPermissions;
+      var arg_request = buildUserPermission();
+      var arg_path = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.UserPermission.fromJson(json);
+        checkUserPermission(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildUserPermission());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_path, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.UserPermission response) {
+        checkUserPermission(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/tasks/v1_test.dart b/generated/googleapis/test/tasks/v1_test.dart
index 02ec09e..18e1206 100644
--- a/generated/googleapis/test/tasks/v1_test.dart
+++ b/generated/googleapis/test/tasks/v1_test.dart
@@ -73,14 +73,14 @@
   buildCounterTaskLinks--;
 }
 
-buildUnnamed2865() {
+buildUnnamed2880() {
   var o = new core.List<api.TaskLinks>();
   o.add(buildTaskLinks());
   o.add(buildTaskLinks());
   return o;
 }
 
-checkUnnamed2865(core.List<api.TaskLinks> o) {
+checkUnnamed2880(core.List<api.TaskLinks> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTaskLinks(o[0]);
   checkTaskLinks(o[1]);
@@ -98,7 +98,7 @@
     o.hidden = true;
     o.id = "foo";
     o.kind = "foo";
-    o.links = buildUnnamed2865();
+    o.links = buildUnnamed2880();
     o.notes = "foo";
     o.parent = "foo";
     o.position = "foo";
@@ -123,7 +123,7 @@
     unittest.expect(o.hidden, unittest.isTrue);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed2865(o.links);
+    checkUnnamed2880(o.links);
     unittest.expect(o.notes, unittest.equals('foo'));
     unittest.expect(o.parent, unittest.equals('foo'));
     unittest.expect(o.position, unittest.equals('foo'));
@@ -166,14 +166,14 @@
   buildCounterTaskList--;
 }
 
-buildUnnamed2866() {
+buildUnnamed2881() {
   var o = new core.List<api.TaskList>();
   o.add(buildTaskList());
   o.add(buildTaskList());
   return o;
 }
 
-checkUnnamed2866(core.List<api.TaskList> o) {
+checkUnnamed2881(core.List<api.TaskList> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTaskList(o[0]);
   checkTaskList(o[1]);
@@ -185,7 +185,7 @@
   buildCounterTaskLists++;
   if (buildCounterTaskLists < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed2866();
+    o.items = buildUnnamed2881();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -197,21 +197,21 @@
   buildCounterTaskLists++;
   if (buildCounterTaskLists < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed2866(o.items);
+    checkUnnamed2881(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterTaskLists--;
 }
 
-buildUnnamed2867() {
+buildUnnamed2882() {
   var o = new core.List<api.Task>();
   o.add(buildTask());
   o.add(buildTask());
   return o;
 }
 
-checkUnnamed2867(core.List<api.Task> o) {
+checkUnnamed2882(core.List<api.Task> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTask(o[0]);
   checkTask(o[1]);
@@ -223,7 +223,7 @@
   buildCounterTasks++;
   if (buildCounterTasks < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed2867();
+    o.items = buildUnnamed2882();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -235,7 +235,7 @@
   buildCounterTasks++;
   if (buildCounterTasks < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed2867(o.items);
+    checkUnnamed2882(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -288,6 +288,7 @@
       var mock = new HttpServerMock();
       api.TasklistsResourceApi res = new api.TasksApi(mock).tasklists;
       var arg_tasklist = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -324,6 +325,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -331,13 +333,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_tasklist).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_tasklist, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
       var mock = new HttpServerMock();
       api.TasklistsResourceApi res = new api.TasksApi(mock).tasklists;
       var arg_tasklist = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -374,6 +379,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -382,7 +388,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_tasklist)
+          .get(arg_tasklist, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TaskList response) {
         checkTaskList(response);
       })));
@@ -392,6 +398,7 @@
       var mock = new HttpServerMock();
       api.TasklistsResourceApi res = new api.TasksApi(mock).tasklists;
       var arg_request = buildTaskList();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TaskList.fromJson(json);
         checkTaskList(obj);
@@ -428,6 +435,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -436,7 +444,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request)
+          .insert(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TaskList response) {
         checkTaskList(response);
       })));
@@ -447,6 +455,7 @@
       api.TasklistsResourceApi res = new api.TasksApi(mock).tasklists;
       var arg_maxResults = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -484,6 +493,7 @@
             queryMap["maxResults"].first, unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -492,7 +502,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(maxResults: arg_maxResults, pageToken: arg_pageToken)
+          .list(
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TaskLists response) {
         checkTaskLists(response);
       })));
@@ -503,6 +516,7 @@
       api.TasklistsResourceApi res = new api.TasksApi(mock).tasklists;
       var arg_request = buildTaskList();
       var arg_tasklist = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TaskList.fromJson(json);
         checkTaskList(obj);
@@ -542,6 +556,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -550,7 +565,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_tasklist)
+          .patch(arg_request, arg_tasklist, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TaskList response) {
         checkTaskList(response);
       })));
@@ -561,6 +576,7 @@
       api.TasklistsResourceApi res = new api.TasksApi(mock).tasklists;
       var arg_request = buildTaskList();
       var arg_tasklist = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TaskList.fromJson(json);
         checkTaskList(obj);
@@ -600,6 +616,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -608,7 +625,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_tasklist)
+          .update(arg_request, arg_tasklist, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TaskList response) {
         checkTaskList(response);
       })));
@@ -620,6 +637,7 @@
       var mock = new HttpServerMock();
       api.TasksResourceApi res = new api.TasksApi(mock).tasks;
       var arg_tasklist = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -662,6 +680,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -669,7 +688,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.clear(arg_tasklist).then(unittest.expectAsync1((_) {}));
+      res
+          .clear(arg_tasklist, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--delete", () {
@@ -677,6 +698,7 @@
       api.TasksResourceApi res = new api.TasksApi(mock).tasks;
       var arg_tasklist = "foo";
       var arg_task = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -722,6 +744,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -729,7 +752,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_tasklist, arg_task).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_tasklist, arg_task, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -737,6 +762,7 @@
       api.TasksResourceApi res = new api.TasksApi(mock).tasks;
       var arg_tasklist = "foo";
       var arg_task = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -782,6 +808,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -790,7 +817,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_tasklist, arg_task)
+          .get(arg_tasklist, arg_task, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Task response) {
         checkTask(response);
       })));
@@ -803,6 +830,7 @@
       var arg_tasklist = "foo";
       var arg_parent = "foo";
       var arg_previous = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Task.fromJson(json);
         checkTask(obj);
@@ -851,6 +879,7 @@
         unittest.expect(queryMap["parent"].first, unittest.equals(arg_parent));
         unittest.expect(
             queryMap["previous"].first, unittest.equals(arg_previous));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -860,7 +889,7 @@
       }), true);
       res
           .insert(arg_request, arg_tasklist,
-              parent: arg_parent, previous: arg_previous)
+              parent: arg_parent, previous: arg_previous, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Task response) {
         checkTask(response);
       })));
@@ -880,6 +909,7 @@
       var arg_showDeleted = true;
       var arg_showHidden = true;
       var arg_updatedMin = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -940,6 +970,7 @@
             queryMap["showHidden"].first, unittest.equals("$arg_showHidden"));
         unittest.expect(
             queryMap["updatedMin"].first, unittest.equals(arg_updatedMin));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -958,7 +989,8 @@
               showCompleted: arg_showCompleted,
               showDeleted: arg_showDeleted,
               showHidden: arg_showHidden,
-              updatedMin: arg_updatedMin)
+              updatedMin: arg_updatedMin,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Tasks response) {
         checkTasks(response);
       })));
@@ -971,6 +1003,7 @@
       var arg_task = "foo";
       var arg_parent = "foo";
       var arg_previous = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1025,6 +1058,7 @@
         unittest.expect(queryMap["parent"].first, unittest.equals(arg_parent));
         unittest.expect(
             queryMap["previous"].first, unittest.equals(arg_previous));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1034,7 +1068,7 @@
       }), true);
       res
           .move(arg_tasklist, arg_task,
-              parent: arg_parent, previous: arg_previous)
+              parent: arg_parent, previous: arg_previous, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Task response) {
         checkTask(response);
       })));
@@ -1046,6 +1080,7 @@
       var arg_request = buildTask();
       var arg_tasklist = "foo";
       var arg_task = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Task.fromJson(json);
         checkTask(obj);
@@ -1094,6 +1129,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1102,7 +1138,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_tasklist, arg_task)
+          .patch(arg_request, arg_tasklist, arg_task, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Task response) {
         checkTask(response);
       })));
@@ -1114,6 +1150,7 @@
       var arg_request = buildTask();
       var arg_tasklist = "foo";
       var arg_task = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Task.fromJson(json);
         checkTask(obj);
@@ -1162,6 +1199,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1170,7 +1208,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_tasklist, arg_task)
+          .update(arg_request, arg_tasklist, arg_task, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Task response) {
         checkTask(response);
       })));
diff --git a/generated/googleapis/test/testing/v1_test.dart b/generated/googleapis/test/testing/v1_test.dart
new file mode 100644
index 0000000..99b9f8a
--- /dev/null
+++ b/generated/googleapis/test/testing/v1_test.dart
@@ -0,0 +1,1929 @@
+library googleapis.testing.v1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/testing/v1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAccount = 0;
+buildAccount() {
+  var o = new api.Account();
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    o.googleAuto = buildGoogleAuto();
+  }
+  buildCounterAccount--;
+  return o;
+}
+
+checkAccount(api.Account o) {
+  buildCounterAccount++;
+  if (buildCounterAccount < 3) {
+    checkGoogleAuto(o.googleAuto);
+  }
+  buildCounterAccount--;
+}
+
+core.int buildCounterAndroidDevice = 0;
+buildAndroidDevice() {
+  var o = new api.AndroidDevice();
+  buildCounterAndroidDevice++;
+  if (buildCounterAndroidDevice < 3) {
+    o.androidModelId = "foo";
+    o.androidVersionId = "foo";
+    o.locale = "foo";
+    o.orientation = "foo";
+  }
+  buildCounterAndroidDevice--;
+  return o;
+}
+
+checkAndroidDevice(api.AndroidDevice o) {
+  buildCounterAndroidDevice++;
+  if (buildCounterAndroidDevice < 3) {
+    unittest.expect(o.androidModelId, unittest.equals('foo'));
+    unittest.expect(o.androidVersionId, unittest.equals('foo'));
+    unittest.expect(o.locale, unittest.equals('foo'));
+    unittest.expect(o.orientation, unittest.equals('foo'));
+  }
+  buildCounterAndroidDevice--;
+}
+
+buildUnnamed2844() {
+  var o = new core.List<api.AndroidModel>();
+  o.add(buildAndroidModel());
+  o.add(buildAndroidModel());
+  return o;
+}
+
+checkUnnamed2844(core.List<api.AndroidModel> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAndroidModel(o[0]);
+  checkAndroidModel(o[1]);
+}
+
+buildUnnamed2845() {
+  var o = new core.List<api.AndroidVersion>();
+  o.add(buildAndroidVersion());
+  o.add(buildAndroidVersion());
+  return o;
+}
+
+checkUnnamed2845(core.List<api.AndroidVersion> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAndroidVersion(o[0]);
+  checkAndroidVersion(o[1]);
+}
+
+core.int buildCounterAndroidDeviceCatalog = 0;
+buildAndroidDeviceCatalog() {
+  var o = new api.AndroidDeviceCatalog();
+  buildCounterAndroidDeviceCatalog++;
+  if (buildCounterAndroidDeviceCatalog < 3) {
+    o.models = buildUnnamed2844();
+    o.runtimeConfiguration = buildAndroidRuntimeConfiguration();
+    o.versions = buildUnnamed2845();
+  }
+  buildCounterAndroidDeviceCatalog--;
+  return o;
+}
+
+checkAndroidDeviceCatalog(api.AndroidDeviceCatalog o) {
+  buildCounterAndroidDeviceCatalog++;
+  if (buildCounterAndroidDeviceCatalog < 3) {
+    checkUnnamed2844(o.models);
+    checkAndroidRuntimeConfiguration(o.runtimeConfiguration);
+    checkUnnamed2845(o.versions);
+  }
+  buildCounterAndroidDeviceCatalog--;
+}
+
+buildUnnamed2846() {
+  var o = new core.List<api.AndroidDevice>();
+  o.add(buildAndroidDevice());
+  o.add(buildAndroidDevice());
+  return o;
+}
+
+checkUnnamed2846(core.List<api.AndroidDevice> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAndroidDevice(o[0]);
+  checkAndroidDevice(o[1]);
+}
+
+core.int buildCounterAndroidDeviceList = 0;
+buildAndroidDeviceList() {
+  var o = new api.AndroidDeviceList();
+  buildCounterAndroidDeviceList++;
+  if (buildCounterAndroidDeviceList < 3) {
+    o.androidDevices = buildUnnamed2846();
+  }
+  buildCounterAndroidDeviceList--;
+  return o;
+}
+
+checkAndroidDeviceList(api.AndroidDeviceList o) {
+  buildCounterAndroidDeviceList++;
+  if (buildCounterAndroidDeviceList < 3) {
+    checkUnnamed2846(o.androidDevices);
+  }
+  buildCounterAndroidDeviceList--;
+}
+
+buildUnnamed2847() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2847(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAndroidInstrumentationTest = 0;
+buildAndroidInstrumentationTest() {
+  var o = new api.AndroidInstrumentationTest();
+  buildCounterAndroidInstrumentationTest++;
+  if (buildCounterAndroidInstrumentationTest < 3) {
+    o.appApk = buildFileReference();
+    o.appPackageId = "foo";
+    o.orchestratorOption = "foo";
+    o.testApk = buildFileReference();
+    o.testPackageId = "foo";
+    o.testRunnerClass = "foo";
+    o.testTargets = buildUnnamed2847();
+  }
+  buildCounterAndroidInstrumentationTest--;
+  return o;
+}
+
+checkAndroidInstrumentationTest(api.AndroidInstrumentationTest o) {
+  buildCounterAndroidInstrumentationTest++;
+  if (buildCounterAndroidInstrumentationTest < 3) {
+    checkFileReference(o.appApk);
+    unittest.expect(o.appPackageId, unittest.equals('foo'));
+    unittest.expect(o.orchestratorOption, unittest.equals('foo'));
+    checkFileReference(o.testApk);
+    unittest.expect(o.testPackageId, unittest.equals('foo'));
+    unittest.expect(o.testRunnerClass, unittest.equals('foo'));
+    checkUnnamed2847(o.testTargets);
+  }
+  buildCounterAndroidInstrumentationTest--;
+}
+
+buildUnnamed2848() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2848(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2849() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2849(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2850() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2850(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2851() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2851(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAndroidMatrix = 0;
+buildAndroidMatrix() {
+  var o = new api.AndroidMatrix();
+  buildCounterAndroidMatrix++;
+  if (buildCounterAndroidMatrix < 3) {
+    o.androidModelIds = buildUnnamed2848();
+    o.androidVersionIds = buildUnnamed2849();
+    o.locales = buildUnnamed2850();
+    o.orientations = buildUnnamed2851();
+  }
+  buildCounterAndroidMatrix--;
+  return o;
+}
+
+checkAndroidMatrix(api.AndroidMatrix o) {
+  buildCounterAndroidMatrix++;
+  if (buildCounterAndroidMatrix < 3) {
+    checkUnnamed2848(o.androidModelIds);
+    checkUnnamed2849(o.androidVersionIds);
+    checkUnnamed2850(o.locales);
+    checkUnnamed2851(o.orientations);
+  }
+  buildCounterAndroidMatrix--;
+}
+
+buildUnnamed2852() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2852(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2853() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2853(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2854() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2854(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAndroidModel = 0;
+buildAndroidModel() {
+  var o = new api.AndroidModel();
+  buildCounterAndroidModel++;
+  if (buildCounterAndroidModel < 3) {
+    o.brand = "foo";
+    o.codename = "foo";
+    o.form = "foo";
+    o.id = "foo";
+    o.manufacturer = "foo";
+    o.name = "foo";
+    o.screenDensity = 42;
+    o.screenX = 42;
+    o.screenY = 42;
+    o.supportedAbis = buildUnnamed2852();
+    o.supportedVersionIds = buildUnnamed2853();
+    o.tags = buildUnnamed2854();
+  }
+  buildCounterAndroidModel--;
+  return o;
+}
+
+checkAndroidModel(api.AndroidModel o) {
+  buildCounterAndroidModel++;
+  if (buildCounterAndroidModel < 3) {
+    unittest.expect(o.brand, unittest.equals('foo'));
+    unittest.expect(o.codename, unittest.equals('foo'));
+    unittest.expect(o.form, unittest.equals('foo'));
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.manufacturer, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.screenDensity, unittest.equals(42));
+    unittest.expect(o.screenX, unittest.equals(42));
+    unittest.expect(o.screenY, unittest.equals(42));
+    checkUnnamed2852(o.supportedAbis);
+    checkUnnamed2853(o.supportedVersionIds);
+    checkUnnamed2854(o.tags);
+  }
+  buildCounterAndroidModel--;
+}
+
+buildUnnamed2855() {
+  var o = new core.List<api.RoboDirective>();
+  o.add(buildRoboDirective());
+  o.add(buildRoboDirective());
+  return o;
+}
+
+checkUnnamed2855(core.List<api.RoboDirective> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRoboDirective(o[0]);
+  checkRoboDirective(o[1]);
+}
+
+core.int buildCounterAndroidRoboTest = 0;
+buildAndroidRoboTest() {
+  var o = new api.AndroidRoboTest();
+  buildCounterAndroidRoboTest++;
+  if (buildCounterAndroidRoboTest < 3) {
+    o.appApk = buildFileReference();
+    o.appInitialActivity = "foo";
+    o.appPackageId = "foo";
+    o.maxDepth = 42;
+    o.maxSteps = 42;
+    o.roboDirectives = buildUnnamed2855();
+  }
+  buildCounterAndroidRoboTest--;
+  return o;
+}
+
+checkAndroidRoboTest(api.AndroidRoboTest o) {
+  buildCounterAndroidRoboTest++;
+  if (buildCounterAndroidRoboTest < 3) {
+    checkFileReference(o.appApk);
+    unittest.expect(o.appInitialActivity, unittest.equals('foo'));
+    unittest.expect(o.appPackageId, unittest.equals('foo'));
+    unittest.expect(o.maxDepth, unittest.equals(42));
+    unittest.expect(o.maxSteps, unittest.equals(42));
+    checkUnnamed2855(o.roboDirectives);
+  }
+  buildCounterAndroidRoboTest--;
+}
+
+buildUnnamed2856() {
+  var o = new core.List<api.Locale>();
+  o.add(buildLocale());
+  o.add(buildLocale());
+  return o;
+}
+
+checkUnnamed2856(core.List<api.Locale> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLocale(o[0]);
+  checkLocale(o[1]);
+}
+
+buildUnnamed2857() {
+  var o = new core.List<api.Orientation>();
+  o.add(buildOrientation());
+  o.add(buildOrientation());
+  return o;
+}
+
+checkUnnamed2857(core.List<api.Orientation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrientation(o[0]);
+  checkOrientation(o[1]);
+}
+
+core.int buildCounterAndroidRuntimeConfiguration = 0;
+buildAndroidRuntimeConfiguration() {
+  var o = new api.AndroidRuntimeConfiguration();
+  buildCounterAndroidRuntimeConfiguration++;
+  if (buildCounterAndroidRuntimeConfiguration < 3) {
+    o.locales = buildUnnamed2856();
+    o.orientations = buildUnnamed2857();
+  }
+  buildCounterAndroidRuntimeConfiguration--;
+  return o;
+}
+
+checkAndroidRuntimeConfiguration(api.AndroidRuntimeConfiguration o) {
+  buildCounterAndroidRuntimeConfiguration++;
+  if (buildCounterAndroidRuntimeConfiguration < 3) {
+    checkUnnamed2856(o.locales);
+    checkUnnamed2857(o.orientations);
+  }
+  buildCounterAndroidRuntimeConfiguration--;
+}
+
+buildUnnamed2858() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2858(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2859() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed2859(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+core.int buildCounterAndroidTestLoop = 0;
+buildAndroidTestLoop() {
+  var o = new api.AndroidTestLoop();
+  buildCounterAndroidTestLoop++;
+  if (buildCounterAndroidTestLoop < 3) {
+    o.appApk = buildFileReference();
+    o.appPackageId = "foo";
+    o.scenarioLabels = buildUnnamed2858();
+    o.scenarios = buildUnnamed2859();
+  }
+  buildCounterAndroidTestLoop--;
+  return o;
+}
+
+checkAndroidTestLoop(api.AndroidTestLoop o) {
+  buildCounterAndroidTestLoop++;
+  if (buildCounterAndroidTestLoop < 3) {
+    checkFileReference(o.appApk);
+    unittest.expect(o.appPackageId, unittest.equals('foo'));
+    checkUnnamed2858(o.scenarioLabels);
+    checkUnnamed2859(o.scenarios);
+  }
+  buildCounterAndroidTestLoop--;
+}
+
+buildUnnamed2860() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2860(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAndroidVersion = 0;
+buildAndroidVersion() {
+  var o = new api.AndroidVersion();
+  buildCounterAndroidVersion++;
+  if (buildCounterAndroidVersion < 3) {
+    o.apiLevel = 42;
+    o.codeName = "foo";
+    o.distribution = buildDistribution();
+    o.id = "foo";
+    o.releaseDate = buildDate();
+    o.tags = buildUnnamed2860();
+    o.versionString = "foo";
+  }
+  buildCounterAndroidVersion--;
+  return o;
+}
+
+checkAndroidVersion(api.AndroidVersion o) {
+  buildCounterAndroidVersion++;
+  if (buildCounterAndroidVersion < 3) {
+    unittest.expect(o.apiLevel, unittest.equals(42));
+    unittest.expect(o.codeName, unittest.equals('foo'));
+    checkDistribution(o.distribution);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkDate(o.releaseDate);
+    checkUnnamed2860(o.tags);
+    unittest.expect(o.versionString, unittest.equals('foo'));
+  }
+  buildCounterAndroidVersion--;
+}
+
+core.int buildCounterCancelTestMatrixResponse = 0;
+buildCancelTestMatrixResponse() {
+  var o = new api.CancelTestMatrixResponse();
+  buildCounterCancelTestMatrixResponse++;
+  if (buildCounterCancelTestMatrixResponse < 3) {
+    o.testState = "foo";
+  }
+  buildCounterCancelTestMatrixResponse--;
+  return o;
+}
+
+checkCancelTestMatrixResponse(api.CancelTestMatrixResponse o) {
+  buildCounterCancelTestMatrixResponse++;
+  if (buildCounterCancelTestMatrixResponse < 3) {
+    unittest.expect(o.testState, unittest.equals('foo'));
+  }
+  buildCounterCancelTestMatrixResponse--;
+}
+
+buildUnnamed2861() {
+  var o = new core.List<api.ClientInfoDetail>();
+  o.add(buildClientInfoDetail());
+  o.add(buildClientInfoDetail());
+  return o;
+}
+
+checkUnnamed2861(core.List<api.ClientInfoDetail> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkClientInfoDetail(o[0]);
+  checkClientInfoDetail(o[1]);
+}
+
+core.int buildCounterClientInfo = 0;
+buildClientInfo() {
+  var o = new api.ClientInfo();
+  buildCounterClientInfo++;
+  if (buildCounterClientInfo < 3) {
+    o.clientInfoDetails = buildUnnamed2861();
+    o.name = "foo";
+  }
+  buildCounterClientInfo--;
+  return o;
+}
+
+checkClientInfo(api.ClientInfo o) {
+  buildCounterClientInfo++;
+  if (buildCounterClientInfo < 3) {
+    checkUnnamed2861(o.clientInfoDetails);
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterClientInfo--;
+}
+
+core.int buildCounterClientInfoDetail = 0;
+buildClientInfoDetail() {
+  var o = new api.ClientInfoDetail();
+  buildCounterClientInfoDetail++;
+  if (buildCounterClientInfoDetail < 3) {
+    o.key = "foo";
+    o.value = "foo";
+  }
+  buildCounterClientInfoDetail--;
+  return o;
+}
+
+checkClientInfoDetail(api.ClientInfoDetail o) {
+  buildCounterClientInfoDetail++;
+  if (buildCounterClientInfoDetail < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterClientInfoDetail--;
+}
+
+core.int buildCounterDate = 0;
+buildDate() {
+  var o = new api.Date();
+  buildCounterDate++;
+  if (buildCounterDate < 3) {
+    o.day = 42;
+    o.month = 42;
+    o.year = 42;
+  }
+  buildCounterDate--;
+  return o;
+}
+
+checkDate(api.Date o) {
+  buildCounterDate++;
+  if (buildCounterDate < 3) {
+    unittest.expect(o.day, unittest.equals(42));
+    unittest.expect(o.month, unittest.equals(42));
+    unittest.expect(o.year, unittest.equals(42));
+  }
+  buildCounterDate--;
+}
+
+core.int buildCounterDeviceFile = 0;
+buildDeviceFile() {
+  var o = new api.DeviceFile();
+  buildCounterDeviceFile++;
+  if (buildCounterDeviceFile < 3) {
+    o.obbFile = buildObbFile();
+  }
+  buildCounterDeviceFile--;
+  return o;
+}
+
+checkDeviceFile(api.DeviceFile o) {
+  buildCounterDeviceFile++;
+  if (buildCounterDeviceFile < 3) {
+    checkObbFile(o.obbFile);
+  }
+  buildCounterDeviceFile--;
+}
+
+core.int buildCounterDistribution = 0;
+buildDistribution() {
+  var o = new api.Distribution();
+  buildCounterDistribution++;
+  if (buildCounterDistribution < 3) {
+    o.marketShare = 42.0;
+    o.measurementTime = "foo";
+  }
+  buildCounterDistribution--;
+  return o;
+}
+
+checkDistribution(api.Distribution o) {
+  buildCounterDistribution++;
+  if (buildCounterDistribution < 3) {
+    unittest.expect(o.marketShare, unittest.equals(42.0));
+    unittest.expect(o.measurementTime, unittest.equals('foo'));
+  }
+  buildCounterDistribution--;
+}
+
+core.int buildCounterEnvironment = 0;
+buildEnvironment() {
+  var o = new api.Environment();
+  buildCounterEnvironment++;
+  if (buildCounterEnvironment < 3) {
+    o.androidDevice = buildAndroidDevice();
+  }
+  buildCounterEnvironment--;
+  return o;
+}
+
+checkEnvironment(api.Environment o) {
+  buildCounterEnvironment++;
+  if (buildCounterEnvironment < 3) {
+    checkAndroidDevice(o.androidDevice);
+  }
+  buildCounterEnvironment--;
+}
+
+core.int buildCounterEnvironmentMatrix = 0;
+buildEnvironmentMatrix() {
+  var o = new api.EnvironmentMatrix();
+  buildCounterEnvironmentMatrix++;
+  if (buildCounterEnvironmentMatrix < 3) {
+    o.androidDeviceList = buildAndroidDeviceList();
+    o.androidMatrix = buildAndroidMatrix();
+  }
+  buildCounterEnvironmentMatrix--;
+  return o;
+}
+
+checkEnvironmentMatrix(api.EnvironmentMatrix o) {
+  buildCounterEnvironmentMatrix++;
+  if (buildCounterEnvironmentMatrix < 3) {
+    checkAndroidDeviceList(o.androidDeviceList);
+    checkAndroidMatrix(o.androidMatrix);
+  }
+  buildCounterEnvironmentMatrix--;
+}
+
+core.int buildCounterEnvironmentVariable = 0;
+buildEnvironmentVariable() {
+  var o = new api.EnvironmentVariable();
+  buildCounterEnvironmentVariable++;
+  if (buildCounterEnvironmentVariable < 3) {
+    o.key = "foo";
+    o.value = "foo";
+  }
+  buildCounterEnvironmentVariable--;
+  return o;
+}
+
+checkEnvironmentVariable(api.EnvironmentVariable o) {
+  buildCounterEnvironmentVariable++;
+  if (buildCounterEnvironmentVariable < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterEnvironmentVariable--;
+}
+
+core.int buildCounterFileReference = 0;
+buildFileReference() {
+  var o = new api.FileReference();
+  buildCounterFileReference++;
+  if (buildCounterFileReference < 3) {
+    o.gcsPath = "foo";
+  }
+  buildCounterFileReference--;
+  return o;
+}
+
+checkFileReference(api.FileReference o) {
+  buildCounterFileReference++;
+  if (buildCounterFileReference < 3) {
+    unittest.expect(o.gcsPath, unittest.equals('foo'));
+  }
+  buildCounterFileReference--;
+}
+
+core.int buildCounterGoogleAuto = 0;
+buildGoogleAuto() {
+  var o = new api.GoogleAuto();
+  buildCounterGoogleAuto++;
+  if (buildCounterGoogleAuto < 3) {}
+  buildCounterGoogleAuto--;
+  return o;
+}
+
+checkGoogleAuto(api.GoogleAuto o) {
+  buildCounterGoogleAuto++;
+  if (buildCounterGoogleAuto < 3) {}
+  buildCounterGoogleAuto--;
+}
+
+core.int buildCounterGoogleCloudStorage = 0;
+buildGoogleCloudStorage() {
+  var o = new api.GoogleCloudStorage();
+  buildCounterGoogleCloudStorage++;
+  if (buildCounterGoogleCloudStorage < 3) {
+    o.gcsPath = "foo";
+  }
+  buildCounterGoogleCloudStorage--;
+  return o;
+}
+
+checkGoogleCloudStorage(api.GoogleCloudStorage o) {
+  buildCounterGoogleCloudStorage++;
+  if (buildCounterGoogleCloudStorage < 3) {
+    unittest.expect(o.gcsPath, unittest.equals('foo'));
+  }
+  buildCounterGoogleCloudStorage--;
+}
+
+buildUnnamed2862() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2862(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterLocale = 0;
+buildLocale() {
+  var o = new api.Locale();
+  buildCounterLocale++;
+  if (buildCounterLocale < 3) {
+    o.id = "foo";
+    o.name = "foo";
+    o.region = "foo";
+    o.tags = buildUnnamed2862();
+  }
+  buildCounterLocale--;
+  return o;
+}
+
+checkLocale(api.Locale o) {
+  buildCounterLocale++;
+  if (buildCounterLocale < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.region, unittest.equals('foo'));
+    checkUnnamed2862(o.tags);
+  }
+  buildCounterLocale--;
+}
+
+core.int buildCounterNetworkConfiguration = 0;
+buildNetworkConfiguration() {
+  var o = new api.NetworkConfiguration();
+  buildCounterNetworkConfiguration++;
+  if (buildCounterNetworkConfiguration < 3) {
+    o.downRule = buildTrafficRule();
+    o.id = "foo";
+    o.upRule = buildTrafficRule();
+  }
+  buildCounterNetworkConfiguration--;
+  return o;
+}
+
+checkNetworkConfiguration(api.NetworkConfiguration o) {
+  buildCounterNetworkConfiguration++;
+  if (buildCounterNetworkConfiguration < 3) {
+    checkTrafficRule(o.downRule);
+    unittest.expect(o.id, unittest.equals('foo'));
+    checkTrafficRule(o.upRule);
+  }
+  buildCounterNetworkConfiguration--;
+}
+
+buildUnnamed2863() {
+  var o = new core.List<api.NetworkConfiguration>();
+  o.add(buildNetworkConfiguration());
+  o.add(buildNetworkConfiguration());
+  return o;
+}
+
+checkUnnamed2863(core.List<api.NetworkConfiguration> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkNetworkConfiguration(o[0]);
+  checkNetworkConfiguration(o[1]);
+}
+
+core.int buildCounterNetworkConfigurationCatalog = 0;
+buildNetworkConfigurationCatalog() {
+  var o = new api.NetworkConfigurationCatalog();
+  buildCounterNetworkConfigurationCatalog++;
+  if (buildCounterNetworkConfigurationCatalog < 3) {
+    o.configurations = buildUnnamed2863();
+  }
+  buildCounterNetworkConfigurationCatalog--;
+  return o;
+}
+
+checkNetworkConfigurationCatalog(api.NetworkConfigurationCatalog o) {
+  buildCounterNetworkConfigurationCatalog++;
+  if (buildCounterNetworkConfigurationCatalog < 3) {
+    checkUnnamed2863(o.configurations);
+  }
+  buildCounterNetworkConfigurationCatalog--;
+}
+
+core.int buildCounterObbFile = 0;
+buildObbFile() {
+  var o = new api.ObbFile();
+  buildCounterObbFile++;
+  if (buildCounterObbFile < 3) {
+    o.obb = buildFileReference();
+    o.obbFileName = "foo";
+  }
+  buildCounterObbFile--;
+  return o;
+}
+
+checkObbFile(api.ObbFile o) {
+  buildCounterObbFile++;
+  if (buildCounterObbFile < 3) {
+    checkFileReference(o.obb);
+    unittest.expect(o.obbFileName, unittest.equals('foo'));
+  }
+  buildCounterObbFile--;
+}
+
+buildUnnamed2864() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2864(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterOrientation = 0;
+buildOrientation() {
+  var o = new api.Orientation();
+  buildCounterOrientation++;
+  if (buildCounterOrientation < 3) {
+    o.id = "foo";
+    o.name = "foo";
+    o.tags = buildUnnamed2864();
+  }
+  buildCounterOrientation--;
+  return o;
+}
+
+checkOrientation(api.Orientation o) {
+  buildCounterOrientation++;
+  if (buildCounterOrientation < 3) {
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed2864(o.tags);
+  }
+  buildCounterOrientation--;
+}
+
+core.int buildCounterResultStorage = 0;
+buildResultStorage() {
+  var o = new api.ResultStorage();
+  buildCounterResultStorage++;
+  if (buildCounterResultStorage < 3) {
+    o.googleCloudStorage = buildGoogleCloudStorage();
+    o.toolResultsExecution = buildToolResultsExecution();
+    o.toolResultsHistory = buildToolResultsHistory();
+  }
+  buildCounterResultStorage--;
+  return o;
+}
+
+checkResultStorage(api.ResultStorage o) {
+  buildCounterResultStorage++;
+  if (buildCounterResultStorage < 3) {
+    checkGoogleCloudStorage(o.googleCloudStorage);
+    checkToolResultsExecution(o.toolResultsExecution);
+    checkToolResultsHistory(o.toolResultsHistory);
+  }
+  buildCounterResultStorage--;
+}
+
+core.int buildCounterRoboDirective = 0;
+buildRoboDirective() {
+  var o = new api.RoboDirective();
+  buildCounterRoboDirective++;
+  if (buildCounterRoboDirective < 3) {
+    o.actionType = "foo";
+    o.inputText = "foo";
+    o.resourceName = "foo";
+  }
+  buildCounterRoboDirective--;
+  return o;
+}
+
+checkRoboDirective(api.RoboDirective o) {
+  buildCounterRoboDirective++;
+  if (buildCounterRoboDirective < 3) {
+    unittest.expect(o.actionType, unittest.equals('foo'));
+    unittest.expect(o.inputText, unittest.equals('foo'));
+    unittest.expect(o.resourceName, unittest.equals('foo'));
+  }
+  buildCounterRoboDirective--;
+}
+
+buildUnnamed2865() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2865(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterTestDetails = 0;
+buildTestDetails() {
+  var o = new api.TestDetails();
+  buildCounterTestDetails++;
+  if (buildCounterTestDetails < 3) {
+    o.errorMessage = "foo";
+    o.progressMessages = buildUnnamed2865();
+  }
+  buildCounterTestDetails--;
+  return o;
+}
+
+checkTestDetails(api.TestDetails o) {
+  buildCounterTestDetails++;
+  if (buildCounterTestDetails < 3) {
+    unittest.expect(o.errorMessage, unittest.equals('foo'));
+    checkUnnamed2865(o.progressMessages);
+  }
+  buildCounterTestDetails--;
+}
+
+core.int buildCounterTestEnvironmentCatalog = 0;
+buildTestEnvironmentCatalog() {
+  var o = new api.TestEnvironmentCatalog();
+  buildCounterTestEnvironmentCatalog++;
+  if (buildCounterTestEnvironmentCatalog < 3) {
+    o.androidDeviceCatalog = buildAndroidDeviceCatalog();
+    o.networkConfigurationCatalog = buildNetworkConfigurationCatalog();
+  }
+  buildCounterTestEnvironmentCatalog--;
+  return o;
+}
+
+checkTestEnvironmentCatalog(api.TestEnvironmentCatalog o) {
+  buildCounterTestEnvironmentCatalog++;
+  if (buildCounterTestEnvironmentCatalog < 3) {
+    checkAndroidDeviceCatalog(o.androidDeviceCatalog);
+    checkNetworkConfigurationCatalog(o.networkConfigurationCatalog);
+  }
+  buildCounterTestEnvironmentCatalog--;
+}
+
+core.int buildCounterTestExecution = 0;
+buildTestExecution() {
+  var o = new api.TestExecution();
+  buildCounterTestExecution++;
+  if (buildCounterTestExecution < 3) {
+    o.environment = buildEnvironment();
+    o.id = "foo";
+    o.matrixId = "foo";
+    o.projectId = "foo";
+    o.state = "foo";
+    o.testDetails = buildTestDetails();
+    o.testSpecification = buildTestSpecification();
+    o.timestamp = "foo";
+    o.toolResultsStep = buildToolResultsStep();
+  }
+  buildCounterTestExecution--;
+  return o;
+}
+
+checkTestExecution(api.TestExecution o) {
+  buildCounterTestExecution++;
+  if (buildCounterTestExecution < 3) {
+    checkEnvironment(o.environment);
+    unittest.expect(o.id, unittest.equals('foo'));
+    unittest.expect(o.matrixId, unittest.equals('foo'));
+    unittest.expect(o.projectId, unittest.equals('foo'));
+    unittest.expect(o.state, unittest.equals('foo'));
+    checkTestDetails(o.testDetails);
+    checkTestSpecification(o.testSpecification);
+    unittest.expect(o.timestamp, unittest.equals('foo'));
+    checkToolResultsStep(o.toolResultsStep);
+  }
+  buildCounterTestExecution--;
+}
+
+buildUnnamed2866() {
+  var o = new core.List<api.TestExecution>();
+  o.add(buildTestExecution());
+  o.add(buildTestExecution());
+  return o;
+}
+
+checkUnnamed2866(core.List<api.TestExecution> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTestExecution(o[0]);
+  checkTestExecution(o[1]);
+}
+
+core.int buildCounterTestMatrix = 0;
+buildTestMatrix() {
+  var o = new api.TestMatrix();
+  buildCounterTestMatrix++;
+  if (buildCounterTestMatrix < 3) {
+    o.clientInfo = buildClientInfo();
+    o.environmentMatrix = buildEnvironmentMatrix();
+    o.invalidMatrixDetails = "foo";
+    o.projectId = "foo";
+    o.resultStorage = buildResultStorage();
+    o.state = "foo";
+    o.testExecutions = buildUnnamed2866();
+    o.testMatrixId = "foo";
+    o.testSpecification = buildTestSpecification();
+    o.timestamp = "foo";
+  }
+  buildCounterTestMatrix--;
+  return o;
+}
+
+checkTestMatrix(api.TestMatrix o) {
+  buildCounterTestMatrix++;
+  if (buildCounterTestMatrix < 3) {
+    checkClientInfo(o.clientInfo);
+    checkEnvironmentMatrix(o.environmentMatrix);
+    unittest.expect(o.invalidMatrixDetails, unittest.equals('foo'));
+    unittest.expect(o.projectId, unittest.equals('foo'));
+    checkResultStorage(o.resultStorage);
+    unittest.expect(o.state, unittest.equals('foo'));
+    checkUnnamed2866(o.testExecutions);
+    unittest.expect(o.testMatrixId, unittest.equals('foo'));
+    checkTestSpecification(o.testSpecification);
+    unittest.expect(o.timestamp, unittest.equals('foo'));
+  }
+  buildCounterTestMatrix--;
+}
+
+buildUnnamed2867() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed2867(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed2868() {
+  var o = new core.List<api.EnvironmentVariable>();
+  o.add(buildEnvironmentVariable());
+  o.add(buildEnvironmentVariable());
+  return o;
+}
+
+checkUnnamed2868(core.List<api.EnvironmentVariable> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEnvironmentVariable(o[0]);
+  checkEnvironmentVariable(o[1]);
+}
+
+buildUnnamed2869() {
+  var o = new core.List<api.DeviceFile>();
+  o.add(buildDeviceFile());
+  o.add(buildDeviceFile());
+  return o;
+}
+
+checkUnnamed2869(core.List<api.DeviceFile> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDeviceFile(o[0]);
+  checkDeviceFile(o[1]);
+}
+
+core.int buildCounterTestSetup = 0;
+buildTestSetup() {
+  var o = new api.TestSetup();
+  buildCounterTestSetup++;
+  if (buildCounterTestSetup < 3) {
+    o.account = buildAccount();
+    o.directoriesToPull = buildUnnamed2867();
+    o.environmentVariables = buildUnnamed2868();
+    o.filesToPush = buildUnnamed2869();
+    o.networkProfile = "foo";
+  }
+  buildCounterTestSetup--;
+  return o;
+}
+
+checkTestSetup(api.TestSetup o) {
+  buildCounterTestSetup++;
+  if (buildCounterTestSetup < 3) {
+    checkAccount(o.account);
+    checkUnnamed2867(o.directoriesToPull);
+    checkUnnamed2868(o.environmentVariables);
+    checkUnnamed2869(o.filesToPush);
+    unittest.expect(o.networkProfile, unittest.equals('foo'));
+  }
+  buildCounterTestSetup--;
+}
+
+core.int buildCounterTestSpecification = 0;
+buildTestSpecification() {
+  var o = new api.TestSpecification();
+  buildCounterTestSpecification++;
+  if (buildCounterTestSpecification < 3) {
+    o.androidInstrumentationTest = buildAndroidInstrumentationTest();
+    o.androidRoboTest = buildAndroidRoboTest();
+    o.androidTestLoop = buildAndroidTestLoop();
+    o.autoGoogleLogin = true;
+    o.disablePerformanceMetrics = true;
+    o.disableVideoRecording = true;
+    o.testSetup = buildTestSetup();
+    o.testTimeout = "foo";
+  }
+  buildCounterTestSpecification--;
+  return o;
+}
+
+checkTestSpecification(api.TestSpecification o) {
+  buildCounterTestSpecification++;
+  if (buildCounterTestSpecification < 3) {
+    checkAndroidInstrumentationTest(o.androidInstrumentationTest);
+    checkAndroidRoboTest(o.androidRoboTest);
+    checkAndroidTestLoop(o.androidTestLoop);
+    unittest.expect(o.autoGoogleLogin, unittest.isTrue);
+    unittest.expect(o.disablePerformanceMetrics, unittest.isTrue);
+    unittest.expect(o.disableVideoRecording, unittest.isTrue);
+    checkTestSetup(o.testSetup);
+    unittest.expect(o.testTimeout, unittest.equals('foo'));
+  }
+  buildCounterTestSpecification--;
+}
+
+core.int buildCounterToolResultsExecution = 0;
+buildToolResultsExecution() {
+  var o = new api.ToolResultsExecution();
+  buildCounterToolResultsExecution++;
+  if (buildCounterToolResultsExecution < 3) {
+    o.executionId = "foo";
+    o.historyId = "foo";
+    o.projectId = "foo";
+  }
+  buildCounterToolResultsExecution--;
+  return o;
+}
+
+checkToolResultsExecution(api.ToolResultsExecution o) {
+  buildCounterToolResultsExecution++;
+  if (buildCounterToolResultsExecution < 3) {
+    unittest.expect(o.executionId, unittest.equals('foo'));
+    unittest.expect(o.historyId, unittest.equals('foo'));
+    unittest.expect(o.projectId, unittest.equals('foo'));
+  }
+  buildCounterToolResultsExecution--;
+}
+
+core.int buildCounterToolResultsHistory = 0;
+buildToolResultsHistory() {
+  var o = new api.ToolResultsHistory();
+  buildCounterToolResultsHistory++;
+  if (buildCounterToolResultsHistory < 3) {
+    o.historyId = "foo";
+    o.projectId = "foo";
+  }
+  buildCounterToolResultsHistory--;
+  return o;
+}
+
+checkToolResultsHistory(api.ToolResultsHistory o) {
+  buildCounterToolResultsHistory++;
+  if (buildCounterToolResultsHistory < 3) {
+    unittest.expect(o.historyId, unittest.equals('foo'));
+    unittest.expect(o.projectId, unittest.equals('foo'));
+  }
+  buildCounterToolResultsHistory--;
+}
+
+core.int buildCounterToolResultsStep = 0;
+buildToolResultsStep() {
+  var o = new api.ToolResultsStep();
+  buildCounterToolResultsStep++;
+  if (buildCounterToolResultsStep < 3) {
+    o.executionId = "foo";
+    o.historyId = "foo";
+    o.projectId = "foo";
+    o.stepId = "foo";
+  }
+  buildCounterToolResultsStep--;
+  return o;
+}
+
+checkToolResultsStep(api.ToolResultsStep o) {
+  buildCounterToolResultsStep++;
+  if (buildCounterToolResultsStep < 3) {
+    unittest.expect(o.executionId, unittest.equals('foo'));
+    unittest.expect(o.historyId, unittest.equals('foo'));
+    unittest.expect(o.projectId, unittest.equals('foo'));
+    unittest.expect(o.stepId, unittest.equals('foo'));
+  }
+  buildCounterToolResultsStep--;
+}
+
+core.int buildCounterTrafficRule = 0;
+buildTrafficRule() {
+  var o = new api.TrafficRule();
+  buildCounterTrafficRule++;
+  if (buildCounterTrafficRule < 3) {
+    o.bandwidth = 42.0;
+    o.burst = 42.0;
+    o.delay = "foo";
+    o.packetDuplicationRatio = 42.0;
+    o.packetLossRatio = 42.0;
+  }
+  buildCounterTrafficRule--;
+  return o;
+}
+
+checkTrafficRule(api.TrafficRule o) {
+  buildCounterTrafficRule++;
+  if (buildCounterTrafficRule < 3) {
+    unittest.expect(o.bandwidth, unittest.equals(42.0));
+    unittest.expect(o.burst, unittest.equals(42.0));
+    unittest.expect(o.delay, unittest.equals('foo'));
+    unittest.expect(o.packetDuplicationRatio, unittest.equals(42.0));
+    unittest.expect(o.packetLossRatio, unittest.equals(42.0));
+  }
+  buildCounterTrafficRule--;
+}
+
+main() {
+  unittest.group("obj-schema-Account", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAccount();
+      var od = new api.Account.fromJson(o.toJson());
+      checkAccount(od);
+    });
+  });
+
+  unittest.group("obj-schema-AndroidDevice", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAndroidDevice();
+      var od = new api.AndroidDevice.fromJson(o.toJson());
+      checkAndroidDevice(od);
+    });
+  });
+
+  unittest.group("obj-schema-AndroidDeviceCatalog", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAndroidDeviceCatalog();
+      var od = new api.AndroidDeviceCatalog.fromJson(o.toJson());
+      checkAndroidDeviceCatalog(od);
+    });
+  });
+
+  unittest.group("obj-schema-AndroidDeviceList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAndroidDeviceList();
+      var od = new api.AndroidDeviceList.fromJson(o.toJson());
+      checkAndroidDeviceList(od);
+    });
+  });
+
+  unittest.group("obj-schema-AndroidInstrumentationTest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAndroidInstrumentationTest();
+      var od = new api.AndroidInstrumentationTest.fromJson(o.toJson());
+      checkAndroidInstrumentationTest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AndroidMatrix", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAndroidMatrix();
+      var od = new api.AndroidMatrix.fromJson(o.toJson());
+      checkAndroidMatrix(od);
+    });
+  });
+
+  unittest.group("obj-schema-AndroidModel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAndroidModel();
+      var od = new api.AndroidModel.fromJson(o.toJson());
+      checkAndroidModel(od);
+    });
+  });
+
+  unittest.group("obj-schema-AndroidRoboTest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAndroidRoboTest();
+      var od = new api.AndroidRoboTest.fromJson(o.toJson());
+      checkAndroidRoboTest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AndroidRuntimeConfiguration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAndroidRuntimeConfiguration();
+      var od = new api.AndroidRuntimeConfiguration.fromJson(o.toJson());
+      checkAndroidRuntimeConfiguration(od);
+    });
+  });
+
+  unittest.group("obj-schema-AndroidTestLoop", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAndroidTestLoop();
+      var od = new api.AndroidTestLoop.fromJson(o.toJson());
+      checkAndroidTestLoop(od);
+    });
+  });
+
+  unittest.group("obj-schema-AndroidVersion", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAndroidVersion();
+      var od = new api.AndroidVersion.fromJson(o.toJson());
+      checkAndroidVersion(od);
+    });
+  });
+
+  unittest.group("obj-schema-CancelTestMatrixResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCancelTestMatrixResponse();
+      var od = new api.CancelTestMatrixResponse.fromJson(o.toJson());
+      checkCancelTestMatrixResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ClientInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildClientInfo();
+      var od = new api.ClientInfo.fromJson(o.toJson());
+      checkClientInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-ClientInfoDetail", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildClientInfoDetail();
+      var od = new api.ClientInfoDetail.fromJson(o.toJson());
+      checkClientInfoDetail(od);
+    });
+  });
+
+  unittest.group("obj-schema-Date", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDate();
+      var od = new api.Date.fromJson(o.toJson());
+      checkDate(od);
+    });
+  });
+
+  unittest.group("obj-schema-DeviceFile", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeviceFile();
+      var od = new api.DeviceFile.fromJson(o.toJson());
+      checkDeviceFile(od);
+    });
+  });
+
+  unittest.group("obj-schema-Distribution", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDistribution();
+      var od = new api.Distribution.fromJson(o.toJson());
+      checkDistribution(od);
+    });
+  });
+
+  unittest.group("obj-schema-Environment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEnvironment();
+      var od = new api.Environment.fromJson(o.toJson());
+      checkEnvironment(od);
+    });
+  });
+
+  unittest.group("obj-schema-EnvironmentMatrix", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEnvironmentMatrix();
+      var od = new api.EnvironmentMatrix.fromJson(o.toJson());
+      checkEnvironmentMatrix(od);
+    });
+  });
+
+  unittest.group("obj-schema-EnvironmentVariable", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEnvironmentVariable();
+      var od = new api.EnvironmentVariable.fromJson(o.toJson());
+      checkEnvironmentVariable(od);
+    });
+  });
+
+  unittest.group("obj-schema-FileReference", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFileReference();
+      var od = new api.FileReference.fromJson(o.toJson());
+      checkFileReference(od);
+    });
+  });
+
+  unittest.group("obj-schema-GoogleAuto", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGoogleAuto();
+      var od = new api.GoogleAuto.fromJson(o.toJson());
+      checkGoogleAuto(od);
+    });
+  });
+
+  unittest.group("obj-schema-GoogleCloudStorage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGoogleCloudStorage();
+      var od = new api.GoogleCloudStorage.fromJson(o.toJson());
+      checkGoogleCloudStorage(od);
+    });
+  });
+
+  unittest.group("obj-schema-Locale", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLocale();
+      var od = new api.Locale.fromJson(o.toJson());
+      checkLocale(od);
+    });
+  });
+
+  unittest.group("obj-schema-NetworkConfiguration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildNetworkConfiguration();
+      var od = new api.NetworkConfiguration.fromJson(o.toJson());
+      checkNetworkConfiguration(od);
+    });
+  });
+
+  unittest.group("obj-schema-NetworkConfigurationCatalog", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildNetworkConfigurationCatalog();
+      var od = new api.NetworkConfigurationCatalog.fromJson(o.toJson());
+      checkNetworkConfigurationCatalog(od);
+    });
+  });
+
+  unittest.group("obj-schema-ObbFile", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildObbFile();
+      var od = new api.ObbFile.fromJson(o.toJson());
+      checkObbFile(od);
+    });
+  });
+
+  unittest.group("obj-schema-Orientation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrientation();
+      var od = new api.Orientation.fromJson(o.toJson());
+      checkOrientation(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResultStorage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResultStorage();
+      var od = new api.ResultStorage.fromJson(o.toJson());
+      checkResultStorage(od);
+    });
+  });
+
+  unittest.group("obj-schema-RoboDirective", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRoboDirective();
+      var od = new api.RoboDirective.fromJson(o.toJson());
+      checkRoboDirective(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestDetails", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestDetails();
+      var od = new api.TestDetails.fromJson(o.toJson());
+      checkTestDetails(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestEnvironmentCatalog", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestEnvironmentCatalog();
+      var od = new api.TestEnvironmentCatalog.fromJson(o.toJson());
+      checkTestEnvironmentCatalog(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestExecution", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestExecution();
+      var od = new api.TestExecution.fromJson(o.toJson());
+      checkTestExecution(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestMatrix", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestMatrix();
+      var od = new api.TestMatrix.fromJson(o.toJson());
+      checkTestMatrix(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestSetup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestSetup();
+      var od = new api.TestSetup.fromJson(o.toJson());
+      checkTestSetup(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestSpecification", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestSpecification();
+      var od = new api.TestSpecification.fromJson(o.toJson());
+      checkTestSpecification(od);
+    });
+  });
+
+  unittest.group("obj-schema-ToolResultsExecution", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildToolResultsExecution();
+      var od = new api.ToolResultsExecution.fromJson(o.toJson());
+      checkToolResultsExecution(od);
+    });
+  });
+
+  unittest.group("obj-schema-ToolResultsHistory", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildToolResultsHistory();
+      var od = new api.ToolResultsHistory.fromJson(o.toJson());
+      checkToolResultsHistory(od);
+    });
+  });
+
+  unittest.group("obj-schema-ToolResultsStep", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildToolResultsStep();
+      var od = new api.ToolResultsStep.fromJson(o.toJson());
+      checkToolResultsStep(od);
+    });
+  });
+
+  unittest.group("obj-schema-TrafficRule", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTrafficRule();
+      var od = new api.TrafficRule.fromJson(o.toJson());
+      checkTrafficRule(od);
+    });
+  });
+
+  unittest.group("resource-ProjectsTestMatricesResourceApi", () {
+    unittest.test("method--cancel", () {
+      var mock = new HttpServerMock();
+      api.ProjectsTestMatricesResourceApi res =
+          new api.TestingApi(mock).projects.testMatrices;
+      var arg_projectId = "foo";
+      var arg_testMatrixId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("v1/projects/"));
+        pathOffset += 12;
+        index = path.indexOf("/testMatrices/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/testMatrices/"));
+        pathOffset += 14;
+        index = path.indexOf(":cancel", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_testMatrixId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals(":cancel"));
+        pathOffset += 7;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCancelTestMatrixResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .cancel(arg_projectId, arg_testMatrixId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CancelTestMatrixResponse response) {
+        checkCancelTestMatrixResponse(response);
+      })));
+    });
+
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsTestMatricesResourceApi res =
+          new api.TestingApi(mock).projects.testMatrices;
+      var arg_request = buildTestMatrix();
+      var arg_projectId = "foo";
+      var arg_requestId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.TestMatrix.fromJson(json);
+        checkTestMatrix(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("v1/projects/"));
+        pathOffset += 12;
+        index = path.indexOf("/testMatrices", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/testMatrices"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTestMatrix());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_projectId,
+              requestId: arg_requestId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TestMatrix response) {
+        checkTestMatrix(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsTestMatricesResourceApi res =
+          new api.TestingApi(mock).projects.testMatrices;
+      var arg_projectId = "foo";
+      var arg_testMatrixId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("v1/projects/"));
+        pathOffset += 12;
+        index = path.indexOf("/testMatrices/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_projectId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 14),
+            unittest.equals("/testMatrices/"));
+        pathOffset += 14;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_testMatrixId"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTestMatrix());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_projectId, arg_testMatrixId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TestMatrix response) {
+        checkTestMatrix(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-TestEnvironmentCatalogResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.TestEnvironmentCatalogResourceApi res =
+          new api.TestingApi(mock).testEnvironmentCatalog;
+      var arg_environmentType = "foo";
+      var arg_projectId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 26),
+            unittest.equals("v1/testEnvironmentCatalog/"));
+        pathOffset += 26;
+        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
+        pathOffset = path.length;
+        unittest.expect(subPart, unittest.equals("$arg_environmentType"));
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTestEnvironmentCatalog());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_environmentType,
+              projectId: arg_projectId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TestEnvironmentCatalog response) {
+        checkTestEnvironmentCatalog(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/translate/v2_test.dart b/generated/googleapis/test/translate/v2_test.dart
new file mode 100644
index 0000000..7151b07
--- /dev/null
+++ b/generated/googleapis/test/translate/v2_test.dart
@@ -0,0 +1,736 @@
+library googleapis.translate.v2.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis/translate/v2.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+buildUnnamed783() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed783(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterDetectLanguageRequest = 0;
+buildDetectLanguageRequest() {
+  var o = new api.DetectLanguageRequest();
+  buildCounterDetectLanguageRequest++;
+  if (buildCounterDetectLanguageRequest < 3) {
+    o.q = buildUnnamed783();
+  }
+  buildCounterDetectLanguageRequest--;
+  return o;
+}
+
+checkDetectLanguageRequest(api.DetectLanguageRequest o) {
+  buildCounterDetectLanguageRequest++;
+  if (buildCounterDetectLanguageRequest < 3) {
+    checkUnnamed783(o.q);
+  }
+  buildCounterDetectLanguageRequest--;
+}
+
+buildUnnamed784() {
+  var o = new core.List<api.DetectionsResource>();
+  o.add(buildDetectionsResource());
+  o.add(buildDetectionsResource());
+  return o;
+}
+
+checkUnnamed784(core.List<api.DetectionsResource> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDetectionsResource(o[0]);
+  checkDetectionsResource(o[1]);
+}
+
+core.int buildCounterDetectionsListResponse = 0;
+buildDetectionsListResponse() {
+  var o = new api.DetectionsListResponse();
+  buildCounterDetectionsListResponse++;
+  if (buildCounterDetectionsListResponse < 3) {
+    o.detections = buildUnnamed784();
+  }
+  buildCounterDetectionsListResponse--;
+  return o;
+}
+
+checkDetectionsListResponse(api.DetectionsListResponse o) {
+  buildCounterDetectionsListResponse++;
+  if (buildCounterDetectionsListResponse < 3) {
+    checkUnnamed784(o.detections);
+  }
+  buildCounterDetectionsListResponse--;
+}
+
+core.int buildCounterDetectionsResourceElement = 0;
+buildDetectionsResourceElement() {
+  var o = new api.DetectionsResourceElement();
+  buildCounterDetectionsResourceElement++;
+  if (buildCounterDetectionsResourceElement < 3) {
+    o.confidence = 42.0;
+    o.isReliable = true;
+    o.language = "foo";
+  }
+  buildCounterDetectionsResourceElement--;
+  return o;
+}
+
+checkDetectionsResourceElement(api.DetectionsResourceElement o) {
+  buildCounterDetectionsResourceElement++;
+  if (buildCounterDetectionsResourceElement < 3) {
+    unittest.expect(o.confidence, unittest.equals(42.0));
+    unittest.expect(o.isReliable, unittest.isTrue);
+    unittest.expect(o.language, unittest.equals('foo'));
+  }
+  buildCounterDetectionsResourceElement--;
+}
+
+buildDetectionsResource() {
+  var o = new api.DetectionsResource();
+  o.add(buildDetectionsResourceElement());
+  o.add(buildDetectionsResourceElement());
+  return o;
+}
+
+checkDetectionsResource(api.DetectionsResource o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDetectionsResourceElement(o[0]);
+  checkDetectionsResourceElement(o[1]);
+}
+
+core.int buildCounterGetSupportedLanguagesRequest = 0;
+buildGetSupportedLanguagesRequest() {
+  var o = new api.GetSupportedLanguagesRequest();
+  buildCounterGetSupportedLanguagesRequest++;
+  if (buildCounterGetSupportedLanguagesRequest < 3) {
+    o.target = "foo";
+  }
+  buildCounterGetSupportedLanguagesRequest--;
+  return o;
+}
+
+checkGetSupportedLanguagesRequest(api.GetSupportedLanguagesRequest o) {
+  buildCounterGetSupportedLanguagesRequest++;
+  if (buildCounterGetSupportedLanguagesRequest < 3) {
+    unittest.expect(o.target, unittest.equals('foo'));
+  }
+  buildCounterGetSupportedLanguagesRequest--;
+}
+
+buildUnnamed785() {
+  var o = new core.List<api.LanguagesResource>();
+  o.add(buildLanguagesResource());
+  o.add(buildLanguagesResource());
+  return o;
+}
+
+checkUnnamed785(core.List<api.LanguagesResource> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLanguagesResource(o[0]);
+  checkLanguagesResource(o[1]);
+}
+
+core.int buildCounterLanguagesListResponse = 0;
+buildLanguagesListResponse() {
+  var o = new api.LanguagesListResponse();
+  buildCounterLanguagesListResponse++;
+  if (buildCounterLanguagesListResponse < 3) {
+    o.languages = buildUnnamed785();
+  }
+  buildCounterLanguagesListResponse--;
+  return o;
+}
+
+checkLanguagesListResponse(api.LanguagesListResponse o) {
+  buildCounterLanguagesListResponse++;
+  if (buildCounterLanguagesListResponse < 3) {
+    checkUnnamed785(o.languages);
+  }
+  buildCounterLanguagesListResponse--;
+}
+
+core.int buildCounterLanguagesResource = 0;
+buildLanguagesResource() {
+  var o = new api.LanguagesResource();
+  buildCounterLanguagesResource++;
+  if (buildCounterLanguagesResource < 3) {
+    o.language = "foo";
+    o.name = "foo";
+  }
+  buildCounterLanguagesResource--;
+  return o;
+}
+
+checkLanguagesResource(api.LanguagesResource o) {
+  buildCounterLanguagesResource++;
+  if (buildCounterLanguagesResource < 3) {
+    unittest.expect(o.language, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterLanguagesResource--;
+}
+
+buildUnnamed786() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed786(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterTranslateTextRequest = 0;
+buildTranslateTextRequest() {
+  var o = new api.TranslateTextRequest();
+  buildCounterTranslateTextRequest++;
+  if (buildCounterTranslateTextRequest < 3) {
+    o.format = "foo";
+    o.model = "foo";
+    o.q = buildUnnamed786();
+    o.source = "foo";
+    o.target = "foo";
+  }
+  buildCounterTranslateTextRequest--;
+  return o;
+}
+
+checkTranslateTextRequest(api.TranslateTextRequest o) {
+  buildCounterTranslateTextRequest++;
+  if (buildCounterTranslateTextRequest < 3) {
+    unittest.expect(o.format, unittest.equals('foo'));
+    unittest.expect(o.model, unittest.equals('foo'));
+    checkUnnamed786(o.q);
+    unittest.expect(o.source, unittest.equals('foo'));
+    unittest.expect(o.target, unittest.equals('foo'));
+  }
+  buildCounterTranslateTextRequest--;
+}
+
+buildUnnamed787() {
+  var o = new core.List<api.TranslationsResource>();
+  o.add(buildTranslationsResource());
+  o.add(buildTranslationsResource());
+  return o;
+}
+
+checkUnnamed787(core.List<api.TranslationsResource> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTranslationsResource(o[0]);
+  checkTranslationsResource(o[1]);
+}
+
+core.int buildCounterTranslationsListResponse = 0;
+buildTranslationsListResponse() {
+  var o = new api.TranslationsListResponse();
+  buildCounterTranslationsListResponse++;
+  if (buildCounterTranslationsListResponse < 3) {
+    o.translations = buildUnnamed787();
+  }
+  buildCounterTranslationsListResponse--;
+  return o;
+}
+
+checkTranslationsListResponse(api.TranslationsListResponse o) {
+  buildCounterTranslationsListResponse++;
+  if (buildCounterTranslationsListResponse < 3) {
+    checkUnnamed787(o.translations);
+  }
+  buildCounterTranslationsListResponse--;
+}
+
+core.int buildCounterTranslationsResource = 0;
+buildTranslationsResource() {
+  var o = new api.TranslationsResource();
+  buildCounterTranslationsResource++;
+  if (buildCounterTranslationsResource < 3) {
+    o.detectedSourceLanguage = "foo";
+    o.model = "foo";
+    o.translatedText = "foo";
+  }
+  buildCounterTranslationsResource--;
+  return o;
+}
+
+checkTranslationsResource(api.TranslationsResource o) {
+  buildCounterTranslationsResource++;
+  if (buildCounterTranslationsResource < 3) {
+    unittest.expect(o.detectedSourceLanguage, unittest.equals('foo'));
+    unittest.expect(o.model, unittest.equals('foo'));
+    unittest.expect(o.translatedText, unittest.equals('foo'));
+  }
+  buildCounterTranslationsResource--;
+}
+
+buildUnnamed788() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed788(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed789() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed789(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed790() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed790(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-DetectLanguageRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDetectLanguageRequest();
+      var od = new api.DetectLanguageRequest.fromJson(o.toJson());
+      checkDetectLanguageRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-DetectionsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDetectionsListResponse();
+      var od = new api.DetectionsListResponse.fromJson(o.toJson());
+      checkDetectionsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-DetectionsResourceElement", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDetectionsResourceElement();
+      var od = new api.DetectionsResourceElement.fromJson(o.toJson());
+      checkDetectionsResourceElement(od);
+    });
+  });
+
+  unittest.group("obj-schema-DetectionsResource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDetectionsResource();
+      var od = new api.DetectionsResource.fromJson(o.toJson());
+      checkDetectionsResource(od);
+    });
+  });
+
+  unittest.group("obj-schema-GetSupportedLanguagesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGetSupportedLanguagesRequest();
+      var od = new api.GetSupportedLanguagesRequest.fromJson(o.toJson());
+      checkGetSupportedLanguagesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-LanguagesListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLanguagesListResponse();
+      var od = new api.LanguagesListResponse.fromJson(o.toJson());
+      checkLanguagesListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-LanguagesResource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLanguagesResource();
+      var od = new api.LanguagesResource.fromJson(o.toJson());
+      checkLanguagesResource(od);
+    });
+  });
+
+  unittest.group("obj-schema-TranslateTextRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTranslateTextRequest();
+      var od = new api.TranslateTextRequest.fromJson(o.toJson());
+      checkTranslateTextRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-TranslationsListResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTranslationsListResponse();
+      var od = new api.TranslationsListResponse.fromJson(o.toJson());
+      checkTranslationsListResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-TranslationsResource", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTranslationsResource();
+      var od = new api.TranslationsResource.fromJson(o.toJson());
+      checkTranslationsResource(od);
+    });
+  });
+
+  unittest.group("resource-DetectionsResourceApi", () {
+    unittest.test("method--detect", () {
+      var mock = new HttpServerMock();
+      api.DetectionsResourceApi res = new api.TranslateApi(mock).detections;
+      var arg_request = buildDetectLanguageRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.DetectLanguageRequest.fromJson(json);
+        checkDetectLanguageRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("language/translate/"));
+        pathOffset += 19;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("v2/detect"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDetectionsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .detect(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DetectionsListResponse response) {
+        checkDetectionsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.DetectionsResourceApi res = new api.TranslateApi(mock).detections;
+      var arg_q = buildUnnamed788();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("language/translate/"));
+        pathOffset += 19;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("v2/detect"));
+        pathOffset += 9;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["q"], unittest.equals(arg_q));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDetectionsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_q, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DetectionsListResponse response) {
+        checkDetectionsListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-LanguagesResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.LanguagesResourceApi res = new api.TranslateApi(mock).languages;
+      var arg_model = "foo";
+      var arg_target = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("language/translate/"));
+        pathOffset += 19;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("v2/languages"));
+        pathOffset += 12;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["model"].first, unittest.equals(arg_model));
+        unittest.expect(queryMap["target"].first, unittest.equals(arg_target));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLanguagesListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(model: arg_model, target: arg_target, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.LanguagesListResponse response) {
+        checkLanguagesListResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-TranslationsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.TranslationsResourceApi res = new api.TranslateApi(mock).translations;
+      var arg_q = buildUnnamed789();
+      var arg_target = "foo";
+      var arg_source = "foo";
+      var arg_cid = buildUnnamed790();
+      var arg_format = "foo";
+      var arg_model = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("language/translate/"));
+        pathOffset += 19;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("v2"));
+        pathOffset += 2;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["q"], unittest.equals(arg_q));
+        unittest.expect(queryMap["target"].first, unittest.equals(arg_target));
+        unittest.expect(queryMap["source"].first, unittest.equals(arg_source));
+        unittest.expect(queryMap["cid"], unittest.equals(arg_cid));
+        unittest.expect(queryMap["format"].first, unittest.equals(arg_format));
+        unittest.expect(queryMap["model"].first, unittest.equals(arg_model));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTranslationsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_q, arg_target,
+              source: arg_source,
+              cid: arg_cid,
+              format: arg_format,
+              model: arg_model,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TranslationsListResponse response) {
+        checkTranslationsListResponse(response);
+      })));
+    });
+
+    unittest.test("method--translate", () {
+      var mock = new HttpServerMock();
+      api.TranslationsResourceApi res = new api.TranslateApi(mock).translations;
+      var arg_request = buildTranslateTextRequest();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.TranslateTextRequest.fromJson(json);
+        checkTranslateTextRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 19),
+            unittest.equals("language/translate/"));
+        pathOffset += 19;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 2), unittest.equals("v2"));
+        pathOffset += 2;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTranslationsListResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .translate(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.TranslationsListResponse response) {
+        checkTranslationsListResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis/test/urlshortener/v1_test.dart b/generated/googleapis/test/urlshortener/v1_test.dart
index ed519be..06de3c6 100644
--- a/generated/googleapis/test/urlshortener/v1_test.dart
+++ b/generated/googleapis/test/urlshortener/v1_test.dart
@@ -50,53 +50,53 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed833() {
+buildUnnamed818() {
   var o = new core.List<api.StringCount>();
   o.add(buildStringCount());
   o.add(buildStringCount());
   return o;
 }
 
-checkUnnamed833(core.List<api.StringCount> o) {
+checkUnnamed818(core.List<api.StringCount> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStringCount(o[0]);
   checkStringCount(o[1]);
 }
 
-buildUnnamed834() {
+buildUnnamed819() {
   var o = new core.List<api.StringCount>();
   o.add(buildStringCount());
   o.add(buildStringCount());
   return o;
 }
 
-checkUnnamed834(core.List<api.StringCount> o) {
+checkUnnamed819(core.List<api.StringCount> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStringCount(o[0]);
   checkStringCount(o[1]);
 }
 
-buildUnnamed835() {
+buildUnnamed820() {
   var o = new core.List<api.StringCount>();
   o.add(buildStringCount());
   o.add(buildStringCount());
   return o;
 }
 
-checkUnnamed835(core.List<api.StringCount> o) {
+checkUnnamed820(core.List<api.StringCount> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStringCount(o[0]);
   checkStringCount(o[1]);
 }
 
-buildUnnamed836() {
+buildUnnamed821() {
   var o = new core.List<api.StringCount>();
   o.add(buildStringCount());
   o.add(buildStringCount());
   return o;
 }
 
-checkUnnamed836(core.List<api.StringCount> o) {
+checkUnnamed821(core.List<api.StringCount> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStringCount(o[0]);
   checkStringCount(o[1]);
@@ -107,11 +107,11 @@
   var o = new api.AnalyticsSnapshot();
   buildCounterAnalyticsSnapshot++;
   if (buildCounterAnalyticsSnapshot < 3) {
-    o.browsers = buildUnnamed833();
-    o.countries = buildUnnamed834();
+    o.browsers = buildUnnamed818();
+    o.countries = buildUnnamed819();
     o.longUrlClicks = "foo";
-    o.platforms = buildUnnamed835();
-    o.referrers = buildUnnamed836();
+    o.platforms = buildUnnamed820();
+    o.referrers = buildUnnamed821();
     o.shortUrlClicks = "foo";
   }
   buildCounterAnalyticsSnapshot--;
@@ -121,11 +121,11 @@
 checkAnalyticsSnapshot(api.AnalyticsSnapshot o) {
   buildCounterAnalyticsSnapshot++;
   if (buildCounterAnalyticsSnapshot < 3) {
-    checkUnnamed833(o.browsers);
-    checkUnnamed834(o.countries);
+    checkUnnamed818(o.browsers);
+    checkUnnamed819(o.countries);
     unittest.expect(o.longUrlClicks, unittest.equals('foo'));
-    checkUnnamed835(o.platforms);
-    checkUnnamed836(o.referrers);
+    checkUnnamed820(o.platforms);
+    checkUnnamed821(o.referrers);
     unittest.expect(o.shortUrlClicks, unittest.equals('foo'));
   }
   buildCounterAnalyticsSnapshot--;
@@ -208,14 +208,14 @@
   buildCounterUrl--;
 }
 
-buildUnnamed837() {
+buildUnnamed822() {
   var o = new core.List<api.Url>();
   o.add(buildUrl());
   o.add(buildUrl());
   return o;
 }
 
-checkUnnamed837(core.List<api.Url> o) {
+checkUnnamed822(core.List<api.Url> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUrl(o[0]);
   checkUrl(o[1]);
@@ -226,7 +226,7 @@
   var o = new api.UrlHistory();
   buildCounterUrlHistory++;
   if (buildCounterUrlHistory < 3) {
-    o.items = buildUnnamed837();
+    o.items = buildUnnamed822();
     o.itemsPerPage = 42;
     o.kind = "foo";
     o.nextPageToken = "foo";
@@ -239,7 +239,7 @@
 checkUrlHistory(api.UrlHistory o) {
   buildCounterUrlHistory++;
   if (buildCounterUrlHistory < 3) {
-    checkUnnamed837(o.items);
+    checkUnnamed822(o.items);
     unittest.expect(o.itemsPerPage, unittest.equals(42));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
@@ -295,6 +295,7 @@
       api.UrlResourceApi res = new api.UrlshortenerApi(mock).url;
       var arg_shortUrl = "foo";
       var arg_projection = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -332,6 +333,7 @@
             queryMap["shortUrl"].first, unittest.equals(arg_shortUrl));
         unittest.expect(
             queryMap["projection"].first, unittest.equals(arg_projection));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -340,7 +342,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_shortUrl, projection: arg_projection)
+          .get(arg_shortUrl, projection: arg_projection, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Url response) {
         checkUrl(response);
       })));
@@ -350,6 +352,7 @@
       var mock = new HttpServerMock();
       api.UrlResourceApi res = new api.UrlshortenerApi(mock).url;
       var arg_request = buildUrl();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Url.fromJson(json);
         checkUrl(obj);
@@ -386,6 +389,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -393,7 +397,9 @@
         var resp = convert.JSON.encode(buildUrl());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.insert(arg_request).then(unittest.expectAsync1(((api.Url response) {
+      res
+          .insert(arg_request, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Url response) {
         checkUrl(response);
       })));
     });
@@ -403,6 +409,7 @@
       api.UrlResourceApi res = new api.UrlshortenerApi(mock).url;
       var arg_projection = "foo";
       var arg_start_token = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -440,6 +447,7 @@
             queryMap["projection"].first, unittest.equals(arg_projection));
         unittest.expect(
             queryMap["start-token"].first, unittest.equals(arg_start_token));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -448,7 +456,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(projection: arg_projection, start_token: arg_start_token)
+          .list(
+              projection: arg_projection,
+              start_token: arg_start_token,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UrlHistory response) {
         checkUrlHistory(response);
       })));
diff --git a/generated/googleapis/test/vault/v1_test.dart b/generated/googleapis/test/vault/v1_test.dart
index ceb8c4d..a68e7fa 100644
--- a/generated/googleapis/test/vault/v1_test.dart
+++ b/generated/googleapis/test/vault/v1_test.dart
@@ -252,14 +252,14 @@
   buildCounterHeldOrgUnit--;
 }
 
-buildUnnamed1685() {
+buildUnnamed1677() {
   var o = new core.List<api.HeldAccount>();
   o.add(buildHeldAccount());
   o.add(buildHeldAccount());
   return o;
 }
 
-checkUnnamed1685(core.List<api.HeldAccount> o) {
+checkUnnamed1677(core.List<api.HeldAccount> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHeldAccount(o[0]);
   checkHeldAccount(o[1]);
@@ -270,7 +270,7 @@
   var o = new api.Hold();
   buildCounterHold++;
   if (buildCounterHold < 3) {
-    o.accounts = buildUnnamed1685();
+    o.accounts = buildUnnamed1677();
     o.corpus = "foo";
     o.holdId = "foo";
     o.name = "foo";
@@ -285,7 +285,7 @@
 checkHold(api.Hold o) {
   buildCounterHold++;
   if (buildCounterHold < 3) {
-    checkUnnamed1685(o.accounts);
+    checkUnnamed1677(o.accounts);
     unittest.expect(o.corpus, unittest.equals('foo'));
     unittest.expect(o.holdId, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
@@ -296,14 +296,14 @@
   buildCounterHold--;
 }
 
-buildUnnamed1686() {
+buildUnnamed1678() {
   var o = new core.List<api.HeldAccount>();
   o.add(buildHeldAccount());
   o.add(buildHeldAccount());
   return o;
 }
 
-checkUnnamed1686(core.List<api.HeldAccount> o) {
+checkUnnamed1678(core.List<api.HeldAccount> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHeldAccount(o[0]);
   checkHeldAccount(o[1]);
@@ -314,7 +314,7 @@
   var o = new api.ListHeldAccountsResponse();
   buildCounterListHeldAccountsResponse++;
   if (buildCounterListHeldAccountsResponse < 3) {
-    o.accounts = buildUnnamed1686();
+    o.accounts = buildUnnamed1678();
   }
   buildCounterListHeldAccountsResponse--;
   return o;
@@ -323,19 +323,19 @@
 checkListHeldAccountsResponse(api.ListHeldAccountsResponse o) {
   buildCounterListHeldAccountsResponse++;
   if (buildCounterListHeldAccountsResponse < 3) {
-    checkUnnamed1686(o.accounts);
+    checkUnnamed1678(o.accounts);
   }
   buildCounterListHeldAccountsResponse--;
 }
 
-buildUnnamed1687() {
+buildUnnamed1679() {
   var o = new core.List<api.Hold>();
   o.add(buildHold());
   o.add(buildHold());
   return o;
 }
 
-checkUnnamed1687(core.List<api.Hold> o) {
+checkUnnamed1679(core.List<api.Hold> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHold(o[0]);
   checkHold(o[1]);
@@ -346,7 +346,7 @@
   var o = new api.ListHoldsResponse();
   buildCounterListHoldsResponse++;
   if (buildCounterListHoldsResponse < 3) {
-    o.holds = buildUnnamed1687();
+    o.holds = buildUnnamed1679();
     o.nextPageToken = "foo";
   }
   buildCounterListHoldsResponse--;
@@ -356,20 +356,20 @@
 checkListHoldsResponse(api.ListHoldsResponse o) {
   buildCounterListHoldsResponse++;
   if (buildCounterListHoldsResponse < 3) {
-    checkUnnamed1687(o.holds);
+    checkUnnamed1679(o.holds);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListHoldsResponse--;
 }
 
-buildUnnamed1688() {
+buildUnnamed1680() {
   var o = new core.List<api.Matter>();
   o.add(buildMatter());
   o.add(buildMatter());
   return o;
 }
 
-checkUnnamed1688(core.List<api.Matter> o) {
+checkUnnamed1680(core.List<api.Matter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMatter(o[0]);
   checkMatter(o[1]);
@@ -380,7 +380,7 @@
   var o = new api.ListMattersResponse();
   buildCounterListMattersResponse++;
   if (buildCounterListMattersResponse < 3) {
-    o.matters = buildUnnamed1688();
+    o.matters = buildUnnamed1680();
     o.nextPageToken = "foo";
   }
   buildCounterListMattersResponse--;
@@ -390,20 +390,20 @@
 checkListMattersResponse(api.ListMattersResponse o) {
   buildCounterListMattersResponse++;
   if (buildCounterListMattersResponse < 3) {
-    checkUnnamed1688(o.matters);
+    checkUnnamed1680(o.matters);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListMattersResponse--;
 }
 
-buildUnnamed1689() {
+buildUnnamed1681() {
   var o = new core.List<api.MatterPermission>();
   o.add(buildMatterPermission());
   o.add(buildMatterPermission());
   return o;
 }
 
-checkUnnamed1689(core.List<api.MatterPermission> o) {
+checkUnnamed1681(core.List<api.MatterPermission> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMatterPermission(o[0]);
   checkMatterPermission(o[1]);
@@ -416,7 +416,7 @@
   if (buildCounterMatter < 3) {
     o.description = "foo";
     o.matterId = "foo";
-    o.matterPermissions = buildUnnamed1689();
+    o.matterPermissions = buildUnnamed1681();
     o.name = "foo";
     o.state = "foo";
   }
@@ -429,7 +429,7 @@
   if (buildCounterMatter < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.matterId, unittest.equals('foo'));
-    checkUnnamed1689(o.matterPermissions);
+    checkUnnamed1681(o.matterPermissions);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.state, unittest.equals('foo'));
   }
@@ -692,6 +692,7 @@
       api.MattersResourceApi res = new api.VaultApi(mock).matters;
       var arg_request = buildAddMatterPermissionsRequest();
       var arg_matterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AddMatterPermissionsRequest.fromJson(json);
         checkAddMatterPermissionsRequest(obj);
@@ -734,6 +735,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -742,7 +744,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .addPermissions(arg_request, arg_matterId)
+          .addPermissions(arg_request, arg_matterId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.MatterPermission response) {
         checkMatterPermission(response);
       })));
@@ -753,6 +755,7 @@
       api.MattersResourceApi res = new api.VaultApi(mock).matters;
       var arg_request = buildCloseMatterRequest();
       var arg_matterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CloseMatterRequest.fromJson(json);
         checkCloseMatterRequest(obj);
@@ -795,6 +798,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -803,7 +807,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .close(arg_request, arg_matterId)
+          .close(arg_request, arg_matterId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CloseMatterResponse response) {
         checkCloseMatterResponse(response);
       })));
@@ -813,6 +817,7 @@
       var mock = new HttpServerMock();
       api.MattersResourceApi res = new api.VaultApi(mock).matters;
       var arg_request = buildMatter();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Matter.fromJson(json);
         checkMatter(obj);
@@ -846,6 +851,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -854,7 +860,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request)
+          .create(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Matter response) {
         checkMatter(response);
       })));
@@ -864,6 +870,7 @@
       var mock = new HttpServerMock();
       api.MattersResourceApi res = new api.VaultApi(mock).matters;
       var arg_matterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -897,6 +904,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -905,7 +913,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_matterId)
+          .delete(arg_matterId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Matter response) {
         checkMatter(response);
       })));
@@ -916,6 +924,7 @@
       api.MattersResourceApi res = new api.VaultApi(mock).matters;
       var arg_matterId = "foo";
       var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -950,6 +959,7 @@
           }
         }
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -958,7 +968,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_matterId, view: arg_view)
+          .get(arg_matterId, view: arg_view, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Matter response) {
         checkMatter(response);
       })));
@@ -967,10 +977,11 @@
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
       api.MattersResourceApi res = new api.VaultApi(mock).matters;
+      var arg_state = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_view = "foo";
-      var arg_state = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1001,12 +1012,13 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["state"].first, unittest.equals(arg_state));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
-        unittest.expect(queryMap["state"].first, unittest.equals(arg_state));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1016,10 +1028,11 @@
       }), true);
       res
           .list(
+              state: arg_state,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
               view: arg_view,
-              state: arg_state)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListMattersResponse response) {
         checkListMattersResponse(response);
       })));
@@ -1030,6 +1043,7 @@
       api.MattersResourceApi res = new api.VaultApi(mock).matters;
       var arg_request = buildRemoveMatterPermissionsRequest();
       var arg_matterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RemoveMatterPermissionsRequest.fromJson(json);
         checkRemoveMatterPermissionsRequest(obj);
@@ -1072,6 +1086,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1080,7 +1095,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .removePermissions(arg_request, arg_matterId)
+          .removePermissions(arg_request, arg_matterId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1091,6 +1106,7 @@
       api.MattersResourceApi res = new api.VaultApi(mock).matters;
       var arg_request = buildReopenMatterRequest();
       var arg_matterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ReopenMatterRequest.fromJson(json);
         checkReopenMatterRequest(obj);
@@ -1133,6 +1149,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1141,7 +1158,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .reopen(arg_request, arg_matterId)
+          .reopen(arg_request, arg_matterId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ReopenMatterResponse response) {
         checkReopenMatterResponse(response);
       })));
@@ -1152,6 +1169,7 @@
       api.MattersResourceApi res = new api.VaultApi(mock).matters;
       var arg_request = buildUndeleteMatterRequest();
       var arg_matterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UndeleteMatterRequest.fromJson(json);
         checkUndeleteMatterRequest(obj);
@@ -1194,6 +1212,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1202,7 +1221,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .undelete(arg_request, arg_matterId)
+          .undelete(arg_request, arg_matterId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Matter response) {
         checkMatter(response);
       })));
@@ -1213,6 +1232,7 @@
       api.MattersResourceApi res = new api.VaultApi(mock).matters;
       var arg_request = buildMatter();
       var arg_matterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Matter.fromJson(json);
         checkMatter(obj);
@@ -1249,6 +1269,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1257,7 +1278,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_matterId)
+          .update(arg_request, arg_matterId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Matter response) {
         checkMatter(response);
       })));
@@ -1270,6 +1291,7 @@
       api.MattersHoldsResourceApi res = new api.VaultApi(mock).matters.holds;
       var arg_request = buildHold();
       var arg_matterId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Hold.fromJson(json);
         checkHold(obj);
@@ -1312,6 +1334,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1320,7 +1343,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_matterId)
+          .create(arg_request, arg_matterId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Hold response) {
         checkHold(response);
       })));
@@ -1331,6 +1354,7 @@
       api.MattersHoldsResourceApi res = new api.VaultApi(mock).matters.holds;
       var arg_matterId = "foo";
       var arg_holdId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1373,6 +1397,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1381,7 +1406,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_matterId, arg_holdId)
+          .delete(arg_matterId, arg_holdId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1392,6 +1417,7 @@
       api.MattersHoldsResourceApi res = new api.VaultApi(mock).matters.holds;
       var arg_matterId = "foo";
       var arg_holdId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1434,6 +1460,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1442,7 +1469,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_matterId, arg_holdId)
+          .get(arg_matterId, arg_holdId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Hold response) {
         checkHold(response);
       })));
@@ -1454,6 +1481,7 @@
       var arg_matterId = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1497,6 +1525,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1505,7 +1534,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_matterId, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_matterId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListHoldsResponse response) {
         checkListHoldsResponse(response);
       })));
@@ -1517,6 +1549,7 @@
       var arg_request = buildHold();
       var arg_matterId = "foo";
       var arg_holdId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Hold.fromJson(json);
         checkHold(obj);
@@ -1562,6 +1595,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1570,7 +1604,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_matterId, arg_holdId)
+          .update(arg_request, arg_matterId, arg_holdId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Hold response) {
         checkHold(response);
       })));
@@ -1585,6 +1619,7 @@
       var arg_request = buildHeldAccount();
       var arg_matterId = "foo";
       var arg_holdId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.HeldAccount.fromJson(json);
         checkHeldAccount(obj);
@@ -1636,6 +1671,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1644,7 +1680,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_matterId, arg_holdId)
+          .create(arg_request, arg_matterId, arg_holdId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.HeldAccount response) {
         checkHeldAccount(response);
       })));
@@ -1657,6 +1693,7 @@
       var arg_matterId = "foo";
       var arg_holdId = "foo";
       var arg_accountId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1708,6 +1745,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1716,7 +1754,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_matterId, arg_holdId, arg_accountId)
+          .delete(arg_matterId, arg_holdId, arg_accountId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1728,6 +1766,7 @@
           new api.VaultApi(mock).matters.holds.accounts;
       var arg_matterId = "foo";
       var arg_holdId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1776,6 +1815,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1784,7 +1824,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_matterId, arg_holdId)
+          .list(arg_matterId, arg_holdId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListHeldAccountsResponse response) {
         checkListHeldAccountsResponse(response);
       })));
diff --git a/generated/googleapis/test/vision/v1_test.dart b/generated/googleapis/test/vision/v1_test.dart
index 220d3aa..18d9dd8 100644
--- a/generated/googleapis/test/vision/v1_test.dart
+++ b/generated/googleapis/test/vision/v1_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed1346() {
+buildUnnamed1333() {
   var o = new core.List<api.Feature>();
   o.add(buildFeature());
   o.add(buildFeature());
   return o;
 }
 
-checkUnnamed1346(core.List<api.Feature> o) {
+checkUnnamed1333(core.List<api.Feature> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFeature(o[0]);
   checkFeature(o[1]);
@@ -68,7 +68,7 @@
   var o = new api.AnnotateImageRequest();
   buildCounterAnnotateImageRequest++;
   if (buildCounterAnnotateImageRequest < 3) {
-    o.features = buildUnnamed1346();
+    o.features = buildUnnamed1333();
     o.image = buildImage();
     o.imageContext = buildImageContext();
   }
@@ -79,73 +79,73 @@
 checkAnnotateImageRequest(api.AnnotateImageRequest o) {
   buildCounterAnnotateImageRequest++;
   if (buildCounterAnnotateImageRequest < 3) {
-    checkUnnamed1346(o.features);
+    checkUnnamed1333(o.features);
     checkImage(o.image);
     checkImageContext(o.imageContext);
   }
   buildCounterAnnotateImageRequest--;
 }
 
-buildUnnamed1347() {
+buildUnnamed1334() {
   var o = new core.List<api.FaceAnnotation>();
   o.add(buildFaceAnnotation());
   o.add(buildFaceAnnotation());
   return o;
 }
 
-checkUnnamed1347(core.List<api.FaceAnnotation> o) {
+checkUnnamed1334(core.List<api.FaceAnnotation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFaceAnnotation(o[0]);
   checkFaceAnnotation(o[1]);
 }
 
-buildUnnamed1348() {
+buildUnnamed1335() {
   var o = new core.List<api.EntityAnnotation>();
   o.add(buildEntityAnnotation());
   o.add(buildEntityAnnotation());
   return o;
 }
 
-checkUnnamed1348(core.List<api.EntityAnnotation> o) {
+checkUnnamed1335(core.List<api.EntityAnnotation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntityAnnotation(o[0]);
   checkEntityAnnotation(o[1]);
 }
 
-buildUnnamed1349() {
+buildUnnamed1336() {
   var o = new core.List<api.EntityAnnotation>();
   o.add(buildEntityAnnotation());
   o.add(buildEntityAnnotation());
   return o;
 }
 
-checkUnnamed1349(core.List<api.EntityAnnotation> o) {
+checkUnnamed1336(core.List<api.EntityAnnotation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntityAnnotation(o[0]);
   checkEntityAnnotation(o[1]);
 }
 
-buildUnnamed1350() {
+buildUnnamed1337() {
   var o = new core.List<api.EntityAnnotation>();
   o.add(buildEntityAnnotation());
   o.add(buildEntityAnnotation());
   return o;
 }
 
-checkUnnamed1350(core.List<api.EntityAnnotation> o) {
+checkUnnamed1337(core.List<api.EntityAnnotation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntityAnnotation(o[0]);
   checkEntityAnnotation(o[1]);
 }
 
-buildUnnamed1351() {
+buildUnnamed1338() {
   var o = new core.List<api.EntityAnnotation>();
   o.add(buildEntityAnnotation());
   o.add(buildEntityAnnotation());
   return o;
 }
 
-checkUnnamed1351(core.List<api.EntityAnnotation> o) {
+checkUnnamed1338(core.List<api.EntityAnnotation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntityAnnotation(o[0]);
   checkEntityAnnotation(o[1]);
@@ -158,14 +158,14 @@
   if (buildCounterAnnotateImageResponse < 3) {
     o.cropHintsAnnotation = buildCropHintsAnnotation();
     o.error = buildStatus();
-    o.faceAnnotations = buildUnnamed1347();
+    o.faceAnnotations = buildUnnamed1334();
     o.fullTextAnnotation = buildTextAnnotation();
     o.imagePropertiesAnnotation = buildImageProperties();
-    o.labelAnnotations = buildUnnamed1348();
-    o.landmarkAnnotations = buildUnnamed1349();
-    o.logoAnnotations = buildUnnamed1350();
+    o.labelAnnotations = buildUnnamed1335();
+    o.landmarkAnnotations = buildUnnamed1336();
+    o.logoAnnotations = buildUnnamed1337();
     o.safeSearchAnnotation = buildSafeSearchAnnotation();
-    o.textAnnotations = buildUnnamed1351();
+    o.textAnnotations = buildUnnamed1338();
     o.webDetection = buildWebDetection();
   }
   buildCounterAnnotateImageResponse--;
@@ -177,27 +177,27 @@
   if (buildCounterAnnotateImageResponse < 3) {
     checkCropHintsAnnotation(o.cropHintsAnnotation);
     checkStatus(o.error);
-    checkUnnamed1347(o.faceAnnotations);
+    checkUnnamed1334(o.faceAnnotations);
     checkTextAnnotation(o.fullTextAnnotation);
     checkImageProperties(o.imagePropertiesAnnotation);
-    checkUnnamed1348(o.labelAnnotations);
-    checkUnnamed1349(o.landmarkAnnotations);
-    checkUnnamed1350(o.logoAnnotations);
+    checkUnnamed1335(o.labelAnnotations);
+    checkUnnamed1336(o.landmarkAnnotations);
+    checkUnnamed1337(o.logoAnnotations);
     checkSafeSearchAnnotation(o.safeSearchAnnotation);
-    checkUnnamed1351(o.textAnnotations);
+    checkUnnamed1338(o.textAnnotations);
     checkWebDetection(o.webDetection);
   }
   buildCounterAnnotateImageResponse--;
 }
 
-buildUnnamed1352() {
+buildUnnamed1339() {
   var o = new core.List<api.AnnotateImageRequest>();
   o.add(buildAnnotateImageRequest());
   o.add(buildAnnotateImageRequest());
   return o;
 }
 
-checkUnnamed1352(core.List<api.AnnotateImageRequest> o) {
+checkUnnamed1339(core.List<api.AnnotateImageRequest> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAnnotateImageRequest(o[0]);
   checkAnnotateImageRequest(o[1]);
@@ -208,7 +208,7 @@
   var o = new api.BatchAnnotateImagesRequest();
   buildCounterBatchAnnotateImagesRequest++;
   if (buildCounterBatchAnnotateImagesRequest < 3) {
-    o.requests = buildUnnamed1352();
+    o.requests = buildUnnamed1339();
   }
   buildCounterBatchAnnotateImagesRequest--;
   return o;
@@ -217,19 +217,19 @@
 checkBatchAnnotateImagesRequest(api.BatchAnnotateImagesRequest o) {
   buildCounterBatchAnnotateImagesRequest++;
   if (buildCounterBatchAnnotateImagesRequest < 3) {
-    checkUnnamed1352(o.requests);
+    checkUnnamed1339(o.requests);
   }
   buildCounterBatchAnnotateImagesRequest--;
 }
 
-buildUnnamed1353() {
+buildUnnamed1340() {
   var o = new core.List<api.AnnotateImageResponse>();
   o.add(buildAnnotateImageResponse());
   o.add(buildAnnotateImageResponse());
   return o;
 }
 
-checkUnnamed1353(core.List<api.AnnotateImageResponse> o) {
+checkUnnamed1340(core.List<api.AnnotateImageResponse> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAnnotateImageResponse(o[0]);
   checkAnnotateImageResponse(o[1]);
@@ -240,7 +240,7 @@
   var o = new api.BatchAnnotateImagesResponse();
   buildCounterBatchAnnotateImagesResponse++;
   if (buildCounterBatchAnnotateImagesResponse < 3) {
-    o.responses = buildUnnamed1353();
+    o.responses = buildUnnamed1340();
   }
   buildCounterBatchAnnotateImagesResponse--;
   return o;
@@ -249,19 +249,19 @@
 checkBatchAnnotateImagesResponse(api.BatchAnnotateImagesResponse o) {
   buildCounterBatchAnnotateImagesResponse++;
   if (buildCounterBatchAnnotateImagesResponse < 3) {
-    checkUnnamed1353(o.responses);
+    checkUnnamed1340(o.responses);
   }
   buildCounterBatchAnnotateImagesResponse--;
 }
 
-buildUnnamed1354() {
+buildUnnamed1341() {
   var o = new core.List<api.Paragraph>();
   o.add(buildParagraph());
   o.add(buildParagraph());
   return o;
 }
 
-checkUnnamed1354(core.List<api.Paragraph> o) {
+checkUnnamed1341(core.List<api.Paragraph> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkParagraph(o[0]);
   checkParagraph(o[1]);
@@ -274,7 +274,7 @@
   if (buildCounterBlock < 3) {
     o.blockType = "foo";
     o.boundingBox = buildBoundingPoly();
-    o.paragraphs = buildUnnamed1354();
+    o.paragraphs = buildUnnamed1341();
     o.property = buildTextProperty();
   }
   buildCounterBlock--;
@@ -286,20 +286,20 @@
   if (buildCounterBlock < 3) {
     unittest.expect(o.blockType, unittest.equals('foo'));
     checkBoundingPoly(o.boundingBox);
-    checkUnnamed1354(o.paragraphs);
+    checkUnnamed1341(o.paragraphs);
     checkTextProperty(o.property);
   }
   buildCounterBlock--;
 }
 
-buildUnnamed1355() {
+buildUnnamed1342() {
   var o = new core.List<api.Vertex>();
   o.add(buildVertex());
   o.add(buildVertex());
   return o;
 }
 
-checkUnnamed1355(core.List<api.Vertex> o) {
+checkUnnamed1342(core.List<api.Vertex> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVertex(o[0]);
   checkVertex(o[1]);
@@ -310,7 +310,7 @@
   var o = new api.BoundingPoly();
   buildCounterBoundingPoly++;
   if (buildCounterBoundingPoly < 3) {
-    o.vertices = buildUnnamed1355();
+    o.vertices = buildUnnamed1342();
   }
   buildCounterBoundingPoly--;
   return o;
@@ -319,7 +319,7 @@
 checkBoundingPoly(api.BoundingPoly o) {
   buildCounterBoundingPoly++;
   if (buildCounterBoundingPoly < 3) {
-    checkUnnamed1355(o.vertices);
+    checkUnnamed1342(o.vertices);
   }
   buildCounterBoundingPoly--;
 }
@@ -395,14 +395,14 @@
   buildCounterCropHint--;
 }
 
-buildUnnamed1356() {
+buildUnnamed1343() {
   var o = new core.List<api.CropHint>();
   o.add(buildCropHint());
   o.add(buildCropHint());
   return o;
 }
 
-checkUnnamed1356(core.List<api.CropHint> o) {
+checkUnnamed1343(core.List<api.CropHint> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCropHint(o[0]);
   checkCropHint(o[1]);
@@ -413,7 +413,7 @@
   var o = new api.CropHintsAnnotation();
   buildCounterCropHintsAnnotation++;
   if (buildCounterCropHintsAnnotation < 3) {
-    o.cropHints = buildUnnamed1356();
+    o.cropHints = buildUnnamed1343();
   }
   buildCounterCropHintsAnnotation--;
   return o;
@@ -422,19 +422,19 @@
 checkCropHintsAnnotation(api.CropHintsAnnotation o) {
   buildCounterCropHintsAnnotation++;
   if (buildCounterCropHintsAnnotation < 3) {
-    checkUnnamed1356(o.cropHints);
+    checkUnnamed1343(o.cropHints);
   }
   buildCounterCropHintsAnnotation--;
 }
 
-buildUnnamed1357() {
+buildUnnamed1344() {
   var o = new core.List<core.double>();
   o.add(42.0);
   o.add(42.0);
   return o;
 }
 
-checkUnnamed1357(core.List<core.double> o) {
+checkUnnamed1344(core.List<core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42.0));
   unittest.expect(o[1], unittest.equals(42.0));
@@ -445,7 +445,7 @@
   var o = new api.CropHintsParams();
   buildCounterCropHintsParams++;
   if (buildCounterCropHintsParams < 3) {
-    o.aspectRatios = buildUnnamed1357();
+    o.aspectRatios = buildUnnamed1344();
   }
   buildCounterCropHintsParams--;
   return o;
@@ -454,7 +454,7 @@
 checkCropHintsParams(api.CropHintsParams o) {
   buildCounterCropHintsParams++;
   if (buildCounterCropHintsParams < 3) {
-    checkUnnamed1357(o.aspectRatios);
+    checkUnnamed1344(o.aspectRatios);
   }
   buildCounterCropHintsParams--;
 }
@@ -501,14 +501,14 @@
   buildCounterDetectedLanguage--;
 }
 
-buildUnnamed1358() {
+buildUnnamed1345() {
   var o = new core.List<api.ColorInfo>();
   o.add(buildColorInfo());
   o.add(buildColorInfo());
   return o;
 }
 
-checkUnnamed1358(core.List<api.ColorInfo> o) {
+checkUnnamed1345(core.List<api.ColorInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkColorInfo(o[0]);
   checkColorInfo(o[1]);
@@ -519,7 +519,7 @@
   var o = new api.DominantColorsAnnotation();
   buildCounterDominantColorsAnnotation++;
   if (buildCounterDominantColorsAnnotation < 3) {
-    o.colors = buildUnnamed1358();
+    o.colors = buildUnnamed1345();
   }
   buildCounterDominantColorsAnnotation--;
   return o;
@@ -528,32 +528,32 @@
 checkDominantColorsAnnotation(api.DominantColorsAnnotation o) {
   buildCounterDominantColorsAnnotation++;
   if (buildCounterDominantColorsAnnotation < 3) {
-    checkUnnamed1358(o.colors);
+    checkUnnamed1345(o.colors);
   }
   buildCounterDominantColorsAnnotation--;
 }
 
-buildUnnamed1359() {
+buildUnnamed1346() {
   var o = new core.List<api.LocationInfo>();
   o.add(buildLocationInfo());
   o.add(buildLocationInfo());
   return o;
 }
 
-checkUnnamed1359(core.List<api.LocationInfo> o) {
+checkUnnamed1346(core.List<api.LocationInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocationInfo(o[0]);
   checkLocationInfo(o[1]);
 }
 
-buildUnnamed1360() {
+buildUnnamed1347() {
   var o = new core.List<api.Property>();
   o.add(buildProperty());
   o.add(buildProperty());
   return o;
 }
 
-checkUnnamed1360(core.List<api.Property> o) {
+checkUnnamed1347(core.List<api.Property> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProperty(o[0]);
   checkProperty(o[1]);
@@ -568,9 +568,9 @@
     o.confidence = 42.0;
     o.description = "foo";
     o.locale = "foo";
-    o.locations = buildUnnamed1359();
+    o.locations = buildUnnamed1346();
     o.mid = "foo";
-    o.properties = buildUnnamed1360();
+    o.properties = buildUnnamed1347();
     o.score = 42.0;
     o.topicality = 42.0;
   }
@@ -585,23 +585,23 @@
     unittest.expect(o.confidence, unittest.equals(42.0));
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.locale, unittest.equals('foo'));
-    checkUnnamed1359(o.locations);
+    checkUnnamed1346(o.locations);
     unittest.expect(o.mid, unittest.equals('foo'));
-    checkUnnamed1360(o.properties);
+    checkUnnamed1347(o.properties);
     unittest.expect(o.score, unittest.equals(42.0));
     unittest.expect(o.topicality, unittest.equals(42.0));
   }
   buildCounterEntityAnnotation--;
 }
 
-buildUnnamed1361() {
+buildUnnamed1348() {
   var o = new core.List<api.Landmark>();
   o.add(buildLandmark());
   o.add(buildLandmark());
   return o;
 }
 
-checkUnnamed1361(core.List<api.Landmark> o) {
+checkUnnamed1348(core.List<api.Landmark> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLandmark(o[0]);
   checkLandmark(o[1]);
@@ -620,7 +620,7 @@
     o.headwearLikelihood = "foo";
     o.joyLikelihood = "foo";
     o.landmarkingConfidence = 42.0;
-    o.landmarks = buildUnnamed1361();
+    o.landmarks = buildUnnamed1348();
     o.panAngle = 42.0;
     o.rollAngle = 42.0;
     o.sorrowLikelihood = "foo";
@@ -643,7 +643,7 @@
     unittest.expect(o.headwearLikelihood, unittest.equals('foo'));
     unittest.expect(o.joyLikelihood, unittest.equals('foo'));
     unittest.expect(o.landmarkingConfidence, unittest.equals(42.0));
-    checkUnnamed1361(o.landmarks);
+    checkUnnamed1348(o.landmarks);
     unittest.expect(o.panAngle, unittest.equals(42.0));
     unittest.expect(o.rollAngle, unittest.equals(42.0));
     unittest.expect(o.sorrowLikelihood, unittest.equals('foo'));
@@ -696,14 +696,14 @@
   buildCounterImage--;
 }
 
-buildUnnamed1362() {
+buildUnnamed1349() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1362(core.List<core.String> o) {
+checkUnnamed1349(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -715,7 +715,7 @@
   buildCounterImageContext++;
   if (buildCounterImageContext < 3) {
     o.cropHintsParams = buildCropHintsParams();
-    o.languageHints = buildUnnamed1362();
+    o.languageHints = buildUnnamed1349();
     o.latLongRect = buildLatLongRect();
   }
   buildCounterImageContext--;
@@ -726,7 +726,7 @@
   buildCounterImageContext++;
   if (buildCounterImageContext < 3) {
     checkCropHintsParams(o.cropHintsParams);
-    checkUnnamed1362(o.languageHints);
+    checkUnnamed1349(o.languageHints);
     checkLatLongRect(o.latLongRect);
   }
   buildCounterImageContext--;
@@ -854,14 +854,14 @@
   buildCounterLocationInfo--;
 }
 
-buildUnnamed1363() {
+buildUnnamed1350() {
   var o = new core.List<api.Block>();
   o.add(buildBlock());
   o.add(buildBlock());
   return o;
 }
 
-checkUnnamed1363(core.List<api.Block> o) {
+checkUnnamed1350(core.List<api.Block> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBlock(o[0]);
   checkBlock(o[1]);
@@ -872,7 +872,7 @@
   var o = new api.Page();
   buildCounterPage++;
   if (buildCounterPage < 3) {
-    o.blocks = buildUnnamed1363();
+    o.blocks = buildUnnamed1350();
     o.height = 42;
     o.property = buildTextProperty();
     o.width = 42;
@@ -884,7 +884,7 @@
 checkPage(api.Page o) {
   buildCounterPage++;
   if (buildCounterPage < 3) {
-    checkUnnamed1363(o.blocks);
+    checkUnnamed1350(o.blocks);
     unittest.expect(o.height, unittest.equals(42));
     checkTextProperty(o.property);
     unittest.expect(o.width, unittest.equals(42));
@@ -892,14 +892,14 @@
   buildCounterPage--;
 }
 
-buildUnnamed1364() {
+buildUnnamed1351() {
   var o = new core.List<api.Word>();
   o.add(buildWord());
   o.add(buildWord());
   return o;
 }
 
-checkUnnamed1364(core.List<api.Word> o) {
+checkUnnamed1351(core.List<api.Word> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWord(o[0]);
   checkWord(o[1]);
@@ -912,7 +912,7 @@
   if (buildCounterParagraph < 3) {
     o.boundingBox = buildBoundingPoly();
     o.property = buildTextProperty();
-    o.words = buildUnnamed1364();
+    o.words = buildUnnamed1351();
   }
   buildCounterParagraph--;
   return o;
@@ -923,7 +923,7 @@
   if (buildCounterParagraph < 3) {
     checkBoundingPoly(o.boundingBox);
     checkTextProperty(o.property);
-    checkUnnamed1364(o.words);
+    checkUnnamed1351(o.words);
   }
   buildCounterParagraph--;
 }
@@ -999,7 +999,7 @@
   buildCounterSafeSearchAnnotation--;
 }
 
-buildUnnamed1365() {
+buildUnnamed1352() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1014,7 +1014,7 @@
   return o;
 }
 
-checkUnnamed1365(core.Map<core.String, core.Object> o) {
+checkUnnamed1352(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -1028,17 +1028,17 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed1366() {
+buildUnnamed1353() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed1365());
-  o.add(buildUnnamed1365());
+  o.add(buildUnnamed1352());
+  o.add(buildUnnamed1352());
   return o;
 }
 
-checkUnnamed1366(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed1353(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed1365(o[0]);
-  checkUnnamed1365(o[1]);
+  checkUnnamed1352(o[0]);
+  checkUnnamed1352(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -1047,7 +1047,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed1366();
+    o.details = buildUnnamed1353();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -1058,7 +1058,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed1366(o.details);
+    checkUnnamed1353(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -1087,14 +1087,14 @@
   buildCounterSymbol--;
 }
 
-buildUnnamed1367() {
+buildUnnamed1354() {
   var o = new core.List<api.Page>();
   o.add(buildPage());
   o.add(buildPage());
   return o;
 }
 
-checkUnnamed1367(core.List<api.Page> o) {
+checkUnnamed1354(core.List<api.Page> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPage(o[0]);
   checkPage(o[1]);
@@ -1105,7 +1105,7 @@
   var o = new api.TextAnnotation();
   buildCounterTextAnnotation++;
   if (buildCounterTextAnnotation < 3) {
-    o.pages = buildUnnamed1367();
+    o.pages = buildUnnamed1354();
     o.text = "foo";
   }
   buildCounterTextAnnotation--;
@@ -1115,20 +1115,20 @@
 checkTextAnnotation(api.TextAnnotation o) {
   buildCounterTextAnnotation++;
   if (buildCounterTextAnnotation < 3) {
-    checkUnnamed1367(o.pages);
+    checkUnnamed1354(o.pages);
     unittest.expect(o.text, unittest.equals('foo'));
   }
   buildCounterTextAnnotation--;
 }
 
-buildUnnamed1368() {
+buildUnnamed1355() {
   var o = new core.List<api.DetectedLanguage>();
   o.add(buildDetectedLanguage());
   o.add(buildDetectedLanguage());
   return o;
 }
 
-checkUnnamed1368(core.List<api.DetectedLanguage> o) {
+checkUnnamed1355(core.List<api.DetectedLanguage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDetectedLanguage(o[0]);
   checkDetectedLanguage(o[1]);
@@ -1140,7 +1140,7 @@
   buildCounterTextProperty++;
   if (buildCounterTextProperty < 3) {
     o.detectedBreak = buildDetectedBreak();
-    o.detectedLanguages = buildUnnamed1368();
+    o.detectedLanguages = buildUnnamed1355();
   }
   buildCounterTextProperty--;
   return o;
@@ -1150,7 +1150,7 @@
   buildCounterTextProperty++;
   if (buildCounterTextProperty < 3) {
     checkDetectedBreak(o.detectedBreak);
-    checkUnnamed1368(o.detectedLanguages);
+    checkUnnamed1355(o.detectedLanguages);
   }
   buildCounterTextProperty--;
 }
@@ -1176,66 +1176,66 @@
   buildCounterVertex--;
 }
 
-buildUnnamed1369() {
+buildUnnamed1356() {
   var o = new core.List<api.WebImage>();
   o.add(buildWebImage());
   o.add(buildWebImage());
   return o;
 }
 
-checkUnnamed1369(core.List<api.WebImage> o) {
+checkUnnamed1356(core.List<api.WebImage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWebImage(o[0]);
   checkWebImage(o[1]);
 }
 
-buildUnnamed1370() {
+buildUnnamed1357() {
   var o = new core.List<api.WebPage>();
   o.add(buildWebPage());
   o.add(buildWebPage());
   return o;
 }
 
-checkUnnamed1370(core.List<api.WebPage> o) {
+checkUnnamed1357(core.List<api.WebPage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWebPage(o[0]);
   checkWebPage(o[1]);
 }
 
-buildUnnamed1371() {
+buildUnnamed1358() {
   var o = new core.List<api.WebImage>();
   o.add(buildWebImage());
   o.add(buildWebImage());
   return o;
 }
 
-checkUnnamed1371(core.List<api.WebImage> o) {
+checkUnnamed1358(core.List<api.WebImage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWebImage(o[0]);
   checkWebImage(o[1]);
 }
 
-buildUnnamed1372() {
+buildUnnamed1359() {
   var o = new core.List<api.WebImage>();
   o.add(buildWebImage());
   o.add(buildWebImage());
   return o;
 }
 
-checkUnnamed1372(core.List<api.WebImage> o) {
+checkUnnamed1359(core.List<api.WebImage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWebImage(o[0]);
   checkWebImage(o[1]);
 }
 
-buildUnnamed1373() {
+buildUnnamed1360() {
   var o = new core.List<api.WebEntity>();
   o.add(buildWebEntity());
   o.add(buildWebEntity());
   return o;
 }
 
-checkUnnamed1373(core.List<api.WebEntity> o) {
+checkUnnamed1360(core.List<api.WebEntity> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWebEntity(o[0]);
   checkWebEntity(o[1]);
@@ -1246,11 +1246,11 @@
   var o = new api.WebDetection();
   buildCounterWebDetection++;
   if (buildCounterWebDetection < 3) {
-    o.fullMatchingImages = buildUnnamed1369();
-    o.pagesWithMatchingImages = buildUnnamed1370();
-    o.partialMatchingImages = buildUnnamed1371();
-    o.visuallySimilarImages = buildUnnamed1372();
-    o.webEntities = buildUnnamed1373();
+    o.fullMatchingImages = buildUnnamed1356();
+    o.pagesWithMatchingImages = buildUnnamed1357();
+    o.partialMatchingImages = buildUnnamed1358();
+    o.visuallySimilarImages = buildUnnamed1359();
+    o.webEntities = buildUnnamed1360();
   }
   buildCounterWebDetection--;
   return o;
@@ -1259,11 +1259,11 @@
 checkWebDetection(api.WebDetection o) {
   buildCounterWebDetection++;
   if (buildCounterWebDetection < 3) {
-    checkUnnamed1369(o.fullMatchingImages);
-    checkUnnamed1370(o.pagesWithMatchingImages);
-    checkUnnamed1371(o.partialMatchingImages);
-    checkUnnamed1372(o.visuallySimilarImages);
-    checkUnnamed1373(o.webEntities);
+    checkUnnamed1356(o.fullMatchingImages);
+    checkUnnamed1357(o.pagesWithMatchingImages);
+    checkUnnamed1358(o.partialMatchingImages);
+    checkUnnamed1359(o.visuallySimilarImages);
+    checkUnnamed1360(o.webEntities);
   }
   buildCounterWebDetection--;
 }
@@ -1333,14 +1333,14 @@
   buildCounterWebPage--;
 }
 
-buildUnnamed1374() {
+buildUnnamed1361() {
   var o = new core.List<api.Symbol>();
   o.add(buildSymbol());
   o.add(buildSymbol());
   return o;
 }
 
-checkUnnamed1374(core.List<api.Symbol> o) {
+checkUnnamed1361(core.List<api.Symbol> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSymbol(o[0]);
   checkSymbol(o[1]);
@@ -1353,7 +1353,7 @@
   if (buildCounterWord < 3) {
     o.boundingBox = buildBoundingPoly();
     o.property = buildTextProperty();
-    o.symbols = buildUnnamed1374();
+    o.symbols = buildUnnamed1361();
   }
   buildCounterWord--;
   return o;
@@ -1364,7 +1364,7 @@
   if (buildCounterWord < 3) {
     checkBoundingPoly(o.boundingBox);
     checkTextProperty(o.property);
-    checkUnnamed1374(o.symbols);
+    checkUnnamed1361(o.symbols);
   }
   buildCounterWord--;
 }
@@ -1695,6 +1695,7 @@
       var mock = new HttpServerMock();
       api.ImagesResourceApi res = new api.VisionApi(mock).images;
       var arg_request = buildBatchAnnotateImagesRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BatchAnnotateImagesRequest.fromJson(json);
         checkBatchAnnotateImagesRequest(obj);
@@ -1728,6 +1729,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1735,7 +1737,7 @@
         var resp = convert.JSON.encode(buildBatchAnnotateImagesResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.annotate(arg_request).then(
+      res.annotate(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.BatchAnnotateImagesResponse response) {
         checkBatchAnnotateImagesResponse(response);
       })));
diff --git a/generated/googleapis/test/webfonts/v1_test.dart b/generated/googleapis/test/webfonts/v1_test.dart
index 47534d2..2bb8f4f 100644
--- a/generated/googleapis/test/webfonts/v1_test.dart
+++ b/generated/googleapis/test/webfonts/v1_test.dart
@@ -50,40 +50,40 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed1738() {
+buildUnnamed1730() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed1738(core.Map<core.String, core.String> o) {
+checkUnnamed1730(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed1739() {
+buildUnnamed1731() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1739(core.List<core.String> o) {
+checkUnnamed1731(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed1740() {
+buildUnnamed1732() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed1740(core.List<core.String> o) {
+checkUnnamed1732(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -96,11 +96,11 @@
   if (buildCounterWebfont < 3) {
     o.category = "foo";
     o.family = "foo";
-    o.files = buildUnnamed1738();
+    o.files = buildUnnamed1730();
     o.kind = "foo";
     o.lastModified = core.DateTime.parse("2002-02-27T14:01:02Z");
-    o.subsets = buildUnnamed1739();
-    o.variants = buildUnnamed1740();
+    o.subsets = buildUnnamed1731();
+    o.variants = buildUnnamed1732();
     o.version = "foo";
   }
   buildCounterWebfont--;
@@ -112,25 +112,25 @@
   if (buildCounterWebfont < 3) {
     unittest.expect(o.category, unittest.equals('foo'));
     unittest.expect(o.family, unittest.equals('foo'));
-    checkUnnamed1738(o.files);
+    checkUnnamed1730(o.files);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.lastModified,
         unittest.equals(core.DateTime.parse("2002-02-27T00:00:00")));
-    checkUnnamed1739(o.subsets);
-    checkUnnamed1740(o.variants);
+    checkUnnamed1731(o.subsets);
+    checkUnnamed1732(o.variants);
     unittest.expect(o.version, unittest.equals('foo'));
   }
   buildCounterWebfont--;
 }
 
-buildUnnamed1741() {
+buildUnnamed1733() {
   var o = new core.List<api.Webfont>();
   o.add(buildWebfont());
   o.add(buildWebfont());
   return o;
 }
 
-checkUnnamed1741(core.List<api.Webfont> o) {
+checkUnnamed1733(core.List<api.Webfont> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWebfont(o[0]);
   checkWebfont(o[1]);
@@ -141,7 +141,7 @@
   var o = new api.WebfontList();
   buildCounterWebfontList++;
   if (buildCounterWebfontList < 3) {
-    o.items = buildUnnamed1741();
+    o.items = buildUnnamed1733();
     o.kind = "foo";
   }
   buildCounterWebfontList--;
@@ -151,7 +151,7 @@
 checkWebfontList(api.WebfontList o) {
   buildCounterWebfontList++;
   if (buildCounterWebfontList < 3) {
-    checkUnnamed1741(o.items);
+    checkUnnamed1733(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterWebfontList--;
@@ -179,6 +179,7 @@
       var mock = new HttpServerMock();
       api.WebfontsResourceApi res = new api.WebfontsApi(mock).webfonts;
       var arg_sort = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -213,6 +214,7 @@
           }
         }
         unittest.expect(queryMap["sort"].first, unittest.equals(arg_sort));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -221,7 +223,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(sort: arg_sort)
+          .list(sort: arg_sort, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.WebfontList response) {
         checkWebfontList(response);
       })));
diff --git a/generated/googleapis/test/webmasters/v3_test.dart b/generated/googleapis/test/webmasters/v3_test.dart
index c0f657a..7eca28a 100644
--- a/generated/googleapis/test/webmasters/v3_test.dart
+++ b/generated/googleapis/test/webmasters/v3_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed714() {
+buildUnnamed699() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed714(core.List<core.String> o) {
+checkUnnamed699(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -71,7 +71,7 @@
     o.clicks = 42.0;
     o.ctr = 42.0;
     o.impressions = 42.0;
-    o.keys = buildUnnamed714();
+    o.keys = buildUnnamed699();
     o.position = 42.0;
   }
   buildCounterApiDataRow--;
@@ -84,7 +84,7 @@
     unittest.expect(o.clicks, unittest.equals(42.0));
     unittest.expect(o.ctr, unittest.equals(42.0));
     unittest.expect(o.impressions, unittest.equals(42.0));
-    checkUnnamed714(o.keys);
+    checkUnnamed699(o.keys);
     unittest.expect(o.position, unittest.equals(42.0));
   }
   buildCounterApiDataRow--;
@@ -113,14 +113,14 @@
   buildCounterApiDimensionFilter--;
 }
 
-buildUnnamed715() {
+buildUnnamed700() {
   var o = new core.List<api.ApiDimensionFilter>();
   o.add(buildApiDimensionFilter());
   o.add(buildApiDimensionFilter());
   return o;
 }
 
-checkUnnamed715(core.List<api.ApiDimensionFilter> o) {
+checkUnnamed700(core.List<api.ApiDimensionFilter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApiDimensionFilter(o[0]);
   checkApiDimensionFilter(o[1]);
@@ -131,7 +131,7 @@
   var o = new api.ApiDimensionFilterGroup();
   buildCounterApiDimensionFilterGroup++;
   if (buildCounterApiDimensionFilterGroup < 3) {
-    o.filters = buildUnnamed715();
+    o.filters = buildUnnamed700();
     o.groupType = "foo";
   }
   buildCounterApiDimensionFilterGroup--;
@@ -141,33 +141,33 @@
 checkApiDimensionFilterGroup(api.ApiDimensionFilterGroup o) {
   buildCounterApiDimensionFilterGroup++;
   if (buildCounterApiDimensionFilterGroup < 3) {
-    checkUnnamed715(o.filters);
+    checkUnnamed700(o.filters);
     unittest.expect(o.groupType, unittest.equals('foo'));
   }
   buildCounterApiDimensionFilterGroup--;
 }
 
-buildUnnamed716() {
+buildUnnamed701() {
   var o = new core.List<api.ApiDimensionFilterGroup>();
   o.add(buildApiDimensionFilterGroup());
   o.add(buildApiDimensionFilterGroup());
   return o;
 }
 
-checkUnnamed716(core.List<api.ApiDimensionFilterGroup> o) {
+checkUnnamed701(core.List<api.ApiDimensionFilterGroup> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApiDimensionFilterGroup(o[0]);
   checkApiDimensionFilterGroup(o[1]);
 }
 
-buildUnnamed717() {
+buildUnnamed702() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed717(core.List<core.String> o) {
+checkUnnamed702(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -179,8 +179,8 @@
   buildCounterSearchAnalyticsQueryRequest++;
   if (buildCounterSearchAnalyticsQueryRequest < 3) {
     o.aggregationType = "foo";
-    o.dimensionFilterGroups = buildUnnamed716();
-    o.dimensions = buildUnnamed717();
+    o.dimensionFilterGroups = buildUnnamed701();
+    o.dimensions = buildUnnamed702();
     o.endDate = "foo";
     o.rowLimit = 42;
     o.searchType = "foo";
@@ -195,8 +195,8 @@
   buildCounterSearchAnalyticsQueryRequest++;
   if (buildCounterSearchAnalyticsQueryRequest < 3) {
     unittest.expect(o.aggregationType, unittest.equals('foo'));
-    checkUnnamed716(o.dimensionFilterGroups);
-    checkUnnamed717(o.dimensions);
+    checkUnnamed701(o.dimensionFilterGroups);
+    checkUnnamed702(o.dimensions);
     unittest.expect(o.endDate, unittest.equals('foo'));
     unittest.expect(o.rowLimit, unittest.equals(42));
     unittest.expect(o.searchType, unittest.equals('foo'));
@@ -206,14 +206,14 @@
   buildCounterSearchAnalyticsQueryRequest--;
 }
 
-buildUnnamed718() {
+buildUnnamed703() {
   var o = new core.List<api.ApiDataRow>();
   o.add(buildApiDataRow());
   o.add(buildApiDataRow());
   return o;
 }
 
-checkUnnamed718(core.List<api.ApiDataRow> o) {
+checkUnnamed703(core.List<api.ApiDataRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApiDataRow(o[0]);
   checkApiDataRow(o[1]);
@@ -225,7 +225,7 @@
   buildCounterSearchAnalyticsQueryResponse++;
   if (buildCounterSearchAnalyticsQueryResponse < 3) {
     o.responseAggregationType = "foo";
-    o.rows = buildUnnamed718();
+    o.rows = buildUnnamed703();
   }
   buildCounterSearchAnalyticsQueryResponse--;
   return o;
@@ -235,19 +235,19 @@
   buildCounterSearchAnalyticsQueryResponse++;
   if (buildCounterSearchAnalyticsQueryResponse < 3) {
     unittest.expect(o.responseAggregationType, unittest.equals('foo'));
-    checkUnnamed718(o.rows);
+    checkUnnamed703(o.rows);
   }
   buildCounterSearchAnalyticsQueryResponse--;
 }
 
-buildUnnamed719() {
+buildUnnamed704() {
   var o = new core.List<api.WmxSitemap>();
   o.add(buildWmxSitemap());
   o.add(buildWmxSitemap());
   return o;
 }
 
-checkUnnamed719(core.List<api.WmxSitemap> o) {
+checkUnnamed704(core.List<api.WmxSitemap> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWmxSitemap(o[0]);
   checkWmxSitemap(o[1]);
@@ -258,7 +258,7 @@
   var o = new api.SitemapsListResponse();
   buildCounterSitemapsListResponse++;
   if (buildCounterSitemapsListResponse < 3) {
-    o.sitemap = buildUnnamed719();
+    o.sitemap = buildUnnamed704();
   }
   buildCounterSitemapsListResponse--;
   return o;
@@ -267,19 +267,19 @@
 checkSitemapsListResponse(api.SitemapsListResponse o) {
   buildCounterSitemapsListResponse++;
   if (buildCounterSitemapsListResponse < 3) {
-    checkUnnamed719(o.sitemap);
+    checkUnnamed704(o.sitemap);
   }
   buildCounterSitemapsListResponse--;
 }
 
-buildUnnamed720() {
+buildUnnamed705() {
   var o = new core.List<api.WmxSite>();
   o.add(buildWmxSite());
   o.add(buildWmxSite());
   return o;
 }
 
-checkUnnamed720(core.List<api.WmxSite> o) {
+checkUnnamed705(core.List<api.WmxSite> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWmxSite(o[0]);
   checkWmxSite(o[1]);
@@ -290,7 +290,7 @@
   var o = new api.SitesListResponse();
   buildCounterSitesListResponse++;
   if (buildCounterSitesListResponse < 3) {
-    o.siteEntry = buildUnnamed720();
+    o.siteEntry = buildUnnamed705();
   }
   buildCounterSitesListResponse--;
   return o;
@@ -299,7 +299,7 @@
 checkSitesListResponse(api.SitesListResponse o) {
   buildCounterSitesListResponse++;
   if (buildCounterSitesListResponse < 3) {
-    checkUnnamed720(o.siteEntry);
+    checkUnnamed705(o.siteEntry);
   }
   buildCounterSitesListResponse--;
 }
@@ -326,14 +326,14 @@
   buildCounterUrlCrawlErrorCount--;
 }
 
-buildUnnamed721() {
+buildUnnamed706() {
   var o = new core.List<api.UrlCrawlErrorCount>();
   o.add(buildUrlCrawlErrorCount());
   o.add(buildUrlCrawlErrorCount());
   return o;
 }
 
-checkUnnamed721(core.List<api.UrlCrawlErrorCount> o) {
+checkUnnamed706(core.List<api.UrlCrawlErrorCount> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUrlCrawlErrorCount(o[0]);
   checkUrlCrawlErrorCount(o[1]);
@@ -345,7 +345,7 @@
   buildCounterUrlCrawlErrorCountsPerType++;
   if (buildCounterUrlCrawlErrorCountsPerType < 3) {
     o.category = "foo";
-    o.entries = buildUnnamed721();
+    o.entries = buildUnnamed706();
     o.platform = "foo";
   }
   buildCounterUrlCrawlErrorCountsPerType--;
@@ -356,20 +356,20 @@
   buildCounterUrlCrawlErrorCountsPerType++;
   if (buildCounterUrlCrawlErrorCountsPerType < 3) {
     unittest.expect(o.category, unittest.equals('foo'));
-    checkUnnamed721(o.entries);
+    checkUnnamed706(o.entries);
     unittest.expect(o.platform, unittest.equals('foo'));
   }
   buildCounterUrlCrawlErrorCountsPerType--;
 }
 
-buildUnnamed722() {
+buildUnnamed707() {
   var o = new core.List<api.UrlCrawlErrorCountsPerType>();
   o.add(buildUrlCrawlErrorCountsPerType());
   o.add(buildUrlCrawlErrorCountsPerType());
   return o;
 }
 
-checkUnnamed722(core.List<api.UrlCrawlErrorCountsPerType> o) {
+checkUnnamed707(core.List<api.UrlCrawlErrorCountsPerType> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUrlCrawlErrorCountsPerType(o[0]);
   checkUrlCrawlErrorCountsPerType(o[1]);
@@ -380,7 +380,7 @@
   var o = new api.UrlCrawlErrorsCountsQueryResponse();
   buildCounterUrlCrawlErrorsCountsQueryResponse++;
   if (buildCounterUrlCrawlErrorsCountsQueryResponse < 3) {
-    o.countPerTypes = buildUnnamed722();
+    o.countPerTypes = buildUnnamed707();
   }
   buildCounterUrlCrawlErrorsCountsQueryResponse--;
   return o;
@@ -390,7 +390,7 @@
     api.UrlCrawlErrorsCountsQueryResponse o) {
   buildCounterUrlCrawlErrorsCountsQueryResponse++;
   if (buildCounterUrlCrawlErrorsCountsQueryResponse < 3) {
-    checkUnnamed722(o.countPerTypes);
+    checkUnnamed707(o.countPerTypes);
   }
   buildCounterUrlCrawlErrorsCountsQueryResponse--;
 }
@@ -424,14 +424,14 @@
   buildCounterUrlCrawlErrorsSample--;
 }
 
-buildUnnamed723() {
+buildUnnamed708() {
   var o = new core.List<api.UrlCrawlErrorsSample>();
   o.add(buildUrlCrawlErrorsSample());
   o.add(buildUrlCrawlErrorsSample());
   return o;
 }
 
-checkUnnamed723(core.List<api.UrlCrawlErrorsSample> o) {
+checkUnnamed708(core.List<api.UrlCrawlErrorsSample> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUrlCrawlErrorsSample(o[0]);
   checkUrlCrawlErrorsSample(o[1]);
@@ -442,7 +442,7 @@
   var o = new api.UrlCrawlErrorsSamplesListResponse();
   buildCounterUrlCrawlErrorsSamplesListResponse++;
   if (buildCounterUrlCrawlErrorsSamplesListResponse < 3) {
-    o.urlCrawlErrorSample = buildUnnamed723();
+    o.urlCrawlErrorSample = buildUnnamed708();
   }
   buildCounterUrlCrawlErrorsSamplesListResponse--;
   return o;
@@ -452,32 +452,32 @@
     api.UrlCrawlErrorsSamplesListResponse o) {
   buildCounterUrlCrawlErrorsSamplesListResponse++;
   if (buildCounterUrlCrawlErrorsSamplesListResponse < 3) {
-    checkUnnamed723(o.urlCrawlErrorSample);
+    checkUnnamed708(o.urlCrawlErrorSample);
   }
   buildCounterUrlCrawlErrorsSamplesListResponse--;
 }
 
-buildUnnamed724() {
+buildUnnamed709() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed724(core.List<core.String> o) {
+checkUnnamed709(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed725() {
+buildUnnamed710() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed725(core.List<core.String> o) {
+checkUnnamed710(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -488,8 +488,8 @@
   var o = new api.UrlSampleDetails();
   buildCounterUrlSampleDetails++;
   if (buildCounterUrlSampleDetails < 3) {
-    o.containingSitemaps = buildUnnamed724();
-    o.linkedFromUrls = buildUnnamed725();
+    o.containingSitemaps = buildUnnamed709();
+    o.linkedFromUrls = buildUnnamed710();
   }
   buildCounterUrlSampleDetails--;
   return o;
@@ -498,8 +498,8 @@
 checkUrlSampleDetails(api.UrlSampleDetails o) {
   buildCounterUrlSampleDetails++;
   if (buildCounterUrlSampleDetails < 3) {
-    checkUnnamed724(o.containingSitemaps);
-    checkUnnamed725(o.linkedFromUrls);
+    checkUnnamed709(o.containingSitemaps);
+    checkUnnamed710(o.linkedFromUrls);
   }
   buildCounterUrlSampleDetails--;
 }
@@ -525,14 +525,14 @@
   buildCounterWmxSite--;
 }
 
-buildUnnamed726() {
+buildUnnamed711() {
   var o = new core.List<api.WmxSitemapContent>();
   o.add(buildWmxSitemapContent());
   o.add(buildWmxSitemapContent());
   return o;
 }
 
-checkUnnamed726(core.List<api.WmxSitemapContent> o) {
+checkUnnamed711(core.List<api.WmxSitemapContent> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWmxSitemapContent(o[0]);
   checkWmxSitemapContent(o[1]);
@@ -543,7 +543,7 @@
   var o = new api.WmxSitemap();
   buildCounterWmxSitemap++;
   if (buildCounterWmxSitemap < 3) {
-    o.contents = buildUnnamed726();
+    o.contents = buildUnnamed711();
     o.errors = "foo";
     o.isPending = true;
     o.isSitemapsIndex = true;
@@ -560,7 +560,7 @@
 checkWmxSitemap(api.WmxSitemap o) {
   buildCounterWmxSitemap++;
   if (buildCounterWmxSitemap < 3) {
-    checkUnnamed726(o.contents);
+    checkUnnamed711(o.contents);
     unittest.expect(o.errors, unittest.equals('foo'));
     unittest.expect(o.isPending, unittest.isTrue);
     unittest.expect(o.isSitemapsIndex, unittest.isTrue);
@@ -734,6 +734,7 @@
           new api.WebmastersApi(mock).searchanalytics;
       var arg_request = buildSearchAnalyticsQueryRequest();
       var arg_siteUrl = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SearchAnalyticsQueryRequest.fromJson(json);
         checkSearchAnalyticsQueryRequest(obj);
@@ -779,6 +780,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -786,7 +788,7 @@
         var resp = convert.JSON.encode(buildSearchAnalyticsQueryResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.query(arg_request, arg_siteUrl).then(
+      res.query(arg_request, arg_siteUrl, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.SearchAnalyticsQueryResponse response) {
         checkSearchAnalyticsQueryResponse(response);
       })));
@@ -799,6 +801,7 @@
       api.SitemapsResourceApi res = new api.WebmastersApi(mock).sitemaps;
       var arg_siteUrl = "foo";
       var arg_feedpath = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -844,6 +847,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -851,7 +855,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_siteUrl, arg_feedpath).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_siteUrl, arg_feedpath, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
@@ -859,6 +865,7 @@
       api.SitemapsResourceApi res = new api.WebmastersApi(mock).sitemaps;
       var arg_siteUrl = "foo";
       var arg_feedpath = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -904,6 +911,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -912,7 +920,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_siteUrl, arg_feedpath)
+          .get(arg_siteUrl, arg_feedpath, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.WmxSitemap response) {
         checkWmxSitemap(response);
       })));
@@ -923,6 +931,7 @@
       api.SitemapsResourceApi res = new api.WebmastersApi(mock).sitemaps;
       var arg_siteUrl = "foo";
       var arg_sitemapIndex = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -967,6 +976,7 @@
         }
         unittest.expect(
             queryMap["sitemapIndex"].first, unittest.equals(arg_sitemapIndex));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -975,7 +985,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_siteUrl, sitemapIndex: arg_sitemapIndex)
+          .list(arg_siteUrl,
+              sitemapIndex: arg_sitemapIndex, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SitemapsListResponse response) {
         checkSitemapsListResponse(response);
       })));
@@ -986,6 +997,7 @@
       api.SitemapsResourceApi res = new api.WebmastersApi(mock).sitemaps;
       var arg_siteUrl = "foo";
       var arg_feedpath = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1031,6 +1043,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1038,7 +1051,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.submit(arg_siteUrl, arg_feedpath).then(unittest.expectAsync1((_) {}));
+      res
+          .submit(arg_siteUrl, arg_feedpath, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
   });
 
@@ -1047,6 +1062,7 @@
       var mock = new HttpServerMock();
       api.SitesResourceApi res = new api.WebmastersApi(mock).sites;
       var arg_siteUrl = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1083,6 +1099,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1090,13 +1107,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.add(arg_siteUrl).then(unittest.expectAsync1((_) {}));
+      res
+          .add(arg_siteUrl, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--delete", () {
       var mock = new HttpServerMock();
       api.SitesResourceApi res = new api.WebmastersApi(mock).sites;
       var arg_siteUrl = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1133,6 +1153,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1140,13 +1161,16 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_siteUrl).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_siteUrl, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--get", () {
       var mock = new HttpServerMock();
       api.SitesResourceApi res = new api.WebmastersApi(mock).sites;
       var arg_siteUrl = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1183,6 +1207,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1190,7 +1215,9 @@
         var resp = convert.JSON.encode(buildWmxSite());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_siteUrl).then(unittest.expectAsync1(((api.WmxSite response) {
+      res
+          .get(arg_siteUrl, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.WmxSite response) {
         checkWmxSite(response);
       })));
     });
@@ -1198,6 +1225,7 @@
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
       api.SitesResourceApi res = new api.WebmastersApi(mock).sites;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1231,6 +1259,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1238,7 +1267,9 @@
         var resp = convert.JSON.encode(buildSitesListResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list().then(unittest.expectAsync1(((api.SitesListResponse response) {
+      res
+          .list($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SitesListResponse response) {
         checkSitesListResponse(response);
       })));
     });
@@ -1253,6 +1284,7 @@
       var arg_category = "foo";
       var arg_latestCountsOnly = true;
       var arg_platform = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1301,6 +1333,7 @@
             unittest.equals("$arg_latestCountsOnly"));
         unittest.expect(
             queryMap["platform"].first, unittest.equals(arg_platform));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1313,7 +1346,8 @@
           .query(arg_siteUrl,
               category: arg_category,
               latestCountsOnly: arg_latestCountsOnly,
-              platform: arg_platform)
+              platform: arg_platform,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.UrlCrawlErrorsCountsQueryResponse response) {
         checkUrlCrawlErrorsCountsQueryResponse(response);
@@ -1330,6 +1364,7 @@
       var arg_url = "foo";
       var arg_category = "foo";
       var arg_platform = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1379,6 +1414,7 @@
             queryMap["category"].first, unittest.equals(arg_category));
         unittest.expect(
             queryMap["platform"].first, unittest.equals(arg_platform));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1387,7 +1423,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_siteUrl, arg_url, arg_category, arg_platform)
+          .get(arg_siteUrl, arg_url, arg_category, arg_platform,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UrlCrawlErrorsSample response) {
         checkUrlCrawlErrorsSample(response);
       })));
@@ -1400,6 +1437,7 @@
       var arg_siteUrl = "foo";
       var arg_category = "foo";
       var arg_platform = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1446,6 +1484,7 @@
             queryMap["category"].first, unittest.equals(arg_category));
         unittest.expect(
             queryMap["platform"].first, unittest.equals(arg_platform));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1454,8 +1493,10 @@
             convert.JSON.encode(buildUrlCrawlErrorsSamplesListResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(arg_siteUrl, arg_category, arg_platform).then(unittest
-          .expectAsync1(((api.UrlCrawlErrorsSamplesListResponse response) {
+      res
+          .list(arg_siteUrl, arg_category, arg_platform, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.UrlCrawlErrorsSamplesListResponse response) {
         checkUrlCrawlErrorsSamplesListResponse(response);
       })));
     });
@@ -1468,6 +1509,7 @@
       var arg_url = "foo";
       var arg_category = "foo";
       var arg_platform = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1517,6 +1559,7 @@
             queryMap["category"].first, unittest.equals(arg_category));
         unittest.expect(
             queryMap["platform"].first, unittest.equals(arg_platform));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1525,7 +1568,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .markAsFixed(arg_siteUrl, arg_url, arg_category, arg_platform)
+          .markAsFixed(arg_siteUrl, arg_url, arg_category, arg_platform,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
   });
diff --git a/generated/googleapis/test/youtube/v3_test.dart b/generated/googleapis/test/youtube/v3_test.dart
index 2e5ff24..bbdba53 100644
--- a/generated/googleapis/test/youtube/v3_test.dart
+++ b/generated/googleapis/test/youtube/v3_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed600() {
+buildUnnamed584() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed600(core.List<core.String> o) {
+checkUnnamed584(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -69,7 +69,7 @@
   buildCounterAccessPolicy++;
   if (buildCounterAccessPolicy < 3) {
     o.allowed = true;
-    o.exception = buildUnnamed600();
+    o.exception = buildUnnamed584();
   }
   buildCounterAccessPolicy--;
   return o;
@@ -79,7 +79,7 @@
   buildCounterAccessPolicy++;
   if (buildCounterAccessPolicy < 3) {
     unittest.expect(o.allowed, unittest.isTrue);
-    checkUnnamed600(o.exception);
+    checkUnnamed584(o.exception);
   }
   buildCounterAccessPolicy--;
 }
@@ -270,27 +270,27 @@
   buildCounterActivityContentDetailsPlaylistItem--;
 }
 
-buildUnnamed601() {
+buildUnnamed585() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed601(core.List<core.String> o) {
+checkUnnamed585(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed602() {
+buildUnnamed586() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed602(core.List<core.String> o) {
+checkUnnamed586(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -308,8 +308,8 @@
     o.customCtaButtonText = "foo";
     o.descriptionText = "foo";
     o.destinationUrl = "foo";
-    o.forecastingUrl = buildUnnamed601();
-    o.impressionUrl = buildUnnamed602();
+    o.forecastingUrl = buildUnnamed585();
+    o.impressionUrl = buildUnnamed586();
     o.videoId = "foo";
   }
   buildCounterActivityContentDetailsPromotedItem--;
@@ -327,8 +327,8 @@
     unittest.expect(o.customCtaButtonText, unittest.equals('foo'));
     unittest.expect(o.descriptionText, unittest.equals('foo'));
     unittest.expect(o.destinationUrl, unittest.equals('foo'));
-    checkUnnamed601(o.forecastingUrl);
-    checkUnnamed602(o.impressionUrl);
+    checkUnnamed585(o.forecastingUrl);
+    checkUnnamed586(o.impressionUrl);
     unittest.expect(o.videoId, unittest.equals('foo'));
   }
   buildCounterActivityContentDetailsPromotedItem--;
@@ -424,14 +424,14 @@
   buildCounterActivityContentDetailsUpload--;
 }
 
-buildUnnamed603() {
+buildUnnamed587() {
   var o = new core.List<api.Activity>();
   o.add(buildActivity());
   o.add(buildActivity());
   return o;
 }
 
-checkUnnamed603(core.List<api.Activity> o) {
+checkUnnamed587(core.List<api.Activity> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkActivity(o[0]);
   checkActivity(o[1]);
@@ -444,7 +444,7 @@
   if (buildCounterActivityListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed603();
+    o.items = buildUnnamed587();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -461,7 +461,7 @@
   if (buildCounterActivityListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed603(o.items);
+    checkUnnamed587(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -531,14 +531,14 @@
   buildCounterCaption--;
 }
 
-buildUnnamed604() {
+buildUnnamed588() {
   var o = new core.List<api.Caption>();
   o.add(buildCaption());
   o.add(buildCaption());
   return o;
 }
 
-checkUnnamed604(core.List<api.Caption> o) {
+checkUnnamed588(core.List<api.Caption> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCaption(o[0]);
   checkCaption(o[1]);
@@ -551,7 +551,7 @@
   if (buildCounterCaptionListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed604();
+    o.items = buildUnnamed588();
     o.kind = "foo";
     o.visitorId = "foo";
   }
@@ -564,7 +564,7 @@
   if (buildCounterCaptionListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed604(o.items);
+    checkUnnamed588(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.visitorId, unittest.equals('foo'));
   }
@@ -642,14 +642,14 @@
   buildCounterCdnSettings--;
 }
 
-buildUnnamed605() {
+buildUnnamed589() {
   var o = new core.Map<core.String, api.ChannelLocalization>();
   o["x"] = buildChannelLocalization();
   o["y"] = buildChannelLocalization();
   return o;
 }
 
-checkUnnamed605(core.Map<core.String, api.ChannelLocalization> o) {
+checkUnnamed589(core.Map<core.String, api.ChannelLocalization> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkChannelLocalization(o["x"]);
   checkChannelLocalization(o["y"]);
@@ -669,7 +669,7 @@
     o.id = "foo";
     o.invideoPromotion = buildInvideoPromotion();
     o.kind = "foo";
-    o.localizations = buildUnnamed605();
+    o.localizations = buildUnnamed589();
     o.snippet = buildChannelSnippet();
     o.statistics = buildChannelStatistics();
     o.status = buildChannelStatus();
@@ -691,7 +691,7 @@
     unittest.expect(o.id, unittest.equals('foo'));
     checkInvideoPromotion(o.invideoPromotion);
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed605(o.localizations);
+    checkUnnamed589(o.localizations);
     checkChannelSnippet(o.snippet);
     checkChannelStatistics(o.statistics);
     checkChannelStatus(o.status);
@@ -748,14 +748,14 @@
   buildCounterChannelBannerResource--;
 }
 
-buildUnnamed606() {
+buildUnnamed590() {
   var o = new core.List<api.PropertyValue>();
   o.add(buildPropertyValue());
   o.add(buildPropertyValue());
   return o;
 }
 
-checkUnnamed606(core.List<api.PropertyValue> o) {
+checkUnnamed590(core.List<api.PropertyValue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPropertyValue(o[0]);
   checkPropertyValue(o[1]);
@@ -767,7 +767,7 @@
   buildCounterChannelBrandingSettings++;
   if (buildCounterChannelBrandingSettings < 3) {
     o.channel = buildChannelSettings();
-    o.hints = buildUnnamed606();
+    o.hints = buildUnnamed590();
     o.image = buildImageSettings();
     o.watch = buildWatchSettings();
   }
@@ -779,7 +779,7 @@
   buildCounterChannelBrandingSettings++;
   if (buildCounterChannelBrandingSettings < 3) {
     checkChannelSettings(o.channel);
-    checkUnnamed606(o.hints);
+    checkUnnamed590(o.hints);
     checkImageSettings(o.image);
     checkWatchSettings(o.watch);
   }
@@ -876,14 +876,14 @@
   buildCounterChannelConversionPing--;
 }
 
-buildUnnamed607() {
+buildUnnamed591() {
   var o = new core.List<api.ChannelConversionPing>();
   o.add(buildChannelConversionPing());
   o.add(buildChannelConversionPing());
   return o;
 }
 
-checkUnnamed607(core.List<api.ChannelConversionPing> o) {
+checkUnnamed591(core.List<api.ChannelConversionPing> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkChannelConversionPing(o[0]);
   checkChannelConversionPing(o[1]);
@@ -894,7 +894,7 @@
   var o = new api.ChannelConversionPings();
   buildCounterChannelConversionPings++;
   if (buildCounterChannelConversionPings < 3) {
-    o.pings = buildUnnamed607();
+    o.pings = buildUnnamed591();
   }
   buildCounterChannelConversionPings--;
   return o;
@@ -903,19 +903,19 @@
 checkChannelConversionPings(api.ChannelConversionPings o) {
   buildCounterChannelConversionPings++;
   if (buildCounterChannelConversionPings < 3) {
-    checkUnnamed607(o.pings);
+    checkUnnamed591(o.pings);
   }
   buildCounterChannelConversionPings--;
 }
 
-buildUnnamed608() {
+buildUnnamed592() {
   var o = new core.List<api.Channel>();
   o.add(buildChannel());
   o.add(buildChannel());
   return o;
 }
 
-checkUnnamed608(core.List<api.Channel> o) {
+checkUnnamed592(core.List<api.Channel> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkChannel(o[0]);
   checkChannel(o[1]);
@@ -928,7 +928,7 @@
   if (buildCounterChannelListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed608();
+    o.items = buildUnnamed592();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -945,7 +945,7 @@
   if (buildCounterChannelListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed608(o.items);
+    checkUnnamed592(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -1002,14 +1002,14 @@
   buildCounterChannelProfileDetails--;
 }
 
-buildUnnamed609() {
+buildUnnamed593() {
   var o = new core.Map<core.String, api.ChannelSectionLocalization>();
   o["x"] = buildChannelSectionLocalization();
   o["y"] = buildChannelSectionLocalization();
   return o;
 }
 
-checkUnnamed609(core.Map<core.String, api.ChannelSectionLocalization> o) {
+checkUnnamed593(core.Map<core.String, api.ChannelSectionLocalization> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkChannelSectionLocalization(o["x"]);
   checkChannelSectionLocalization(o["y"]);
@@ -1024,7 +1024,7 @@
     o.etag = "foo";
     o.id = "foo";
     o.kind = "foo";
-    o.localizations = buildUnnamed609();
+    o.localizations = buildUnnamed593();
     o.snippet = buildChannelSectionSnippet();
     o.targeting = buildChannelSectionTargeting();
   }
@@ -1039,34 +1039,34 @@
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed609(o.localizations);
+    checkUnnamed593(o.localizations);
     checkChannelSectionSnippet(o.snippet);
     checkChannelSectionTargeting(o.targeting);
   }
   buildCounterChannelSection--;
 }
 
-buildUnnamed610() {
+buildUnnamed594() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed610(core.List<core.String> o) {
+checkUnnamed594(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed611() {
+buildUnnamed595() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed611(core.List<core.String> o) {
+checkUnnamed595(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1077,8 +1077,8 @@
   var o = new api.ChannelSectionContentDetails();
   buildCounterChannelSectionContentDetails++;
   if (buildCounterChannelSectionContentDetails < 3) {
-    o.channels = buildUnnamed610();
-    o.playlists = buildUnnamed611();
+    o.channels = buildUnnamed594();
+    o.playlists = buildUnnamed595();
   }
   buildCounterChannelSectionContentDetails--;
   return o;
@@ -1087,20 +1087,20 @@
 checkChannelSectionContentDetails(api.ChannelSectionContentDetails o) {
   buildCounterChannelSectionContentDetails++;
   if (buildCounterChannelSectionContentDetails < 3) {
-    checkUnnamed610(o.channels);
-    checkUnnamed611(o.playlists);
+    checkUnnamed594(o.channels);
+    checkUnnamed595(o.playlists);
   }
   buildCounterChannelSectionContentDetails--;
 }
 
-buildUnnamed612() {
+buildUnnamed596() {
   var o = new core.List<api.ChannelSection>();
   o.add(buildChannelSection());
   o.add(buildChannelSection());
   return o;
 }
 
-checkUnnamed612(core.List<api.ChannelSection> o) {
+checkUnnamed596(core.List<api.ChannelSection> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkChannelSection(o[0]);
   checkChannelSection(o[1]);
@@ -1113,7 +1113,7 @@
   if (buildCounterChannelSectionListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed612();
+    o.items = buildUnnamed596();
     o.kind = "foo";
     o.visitorId = "foo";
   }
@@ -1126,7 +1126,7 @@
   if (buildCounterChannelSectionListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed612(o.items);
+    checkUnnamed596(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.visitorId, unittest.equals('foo'));
   }
@@ -1183,40 +1183,40 @@
   buildCounterChannelSectionSnippet--;
 }
 
-buildUnnamed613() {
+buildUnnamed597() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed613(core.List<core.String> o) {
+checkUnnamed597(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed614() {
+buildUnnamed598() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed614(core.List<core.String> o) {
+checkUnnamed598(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed615() {
+buildUnnamed599() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed615(core.List<core.String> o) {
+checkUnnamed599(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1227,9 +1227,9 @@
   var o = new api.ChannelSectionTargeting();
   buildCounterChannelSectionTargeting++;
   if (buildCounterChannelSectionTargeting < 3) {
-    o.countries = buildUnnamed613();
-    o.languages = buildUnnamed614();
-    o.regions = buildUnnamed615();
+    o.countries = buildUnnamed597();
+    o.languages = buildUnnamed598();
+    o.regions = buildUnnamed599();
   }
   buildCounterChannelSectionTargeting--;
   return o;
@@ -1238,21 +1238,21 @@
 checkChannelSectionTargeting(api.ChannelSectionTargeting o) {
   buildCounterChannelSectionTargeting++;
   if (buildCounterChannelSectionTargeting < 3) {
-    checkUnnamed613(o.countries);
-    checkUnnamed614(o.languages);
-    checkUnnamed615(o.regions);
+    checkUnnamed597(o.countries);
+    checkUnnamed598(o.languages);
+    checkUnnamed599(o.regions);
   }
   buildCounterChannelSectionTargeting--;
 }
 
-buildUnnamed616() {
+buildUnnamed600() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed616(core.List<core.String> o) {
+checkUnnamed600(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1268,7 +1268,7 @@
     o.defaultTab = "foo";
     o.description = "foo";
     o.featuredChannelsTitle = "foo";
-    o.featuredChannelsUrls = buildUnnamed616();
+    o.featuredChannelsUrls = buildUnnamed600();
     o.keywords = "foo";
     o.moderateComments = true;
     o.profileColor = "foo";
@@ -1290,7 +1290,7 @@
     unittest.expect(o.defaultTab, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.featuredChannelsTitle, unittest.equals('foo'));
-    checkUnnamed616(o.featuredChannelsUrls);
+    checkUnnamed600(o.featuredChannelsUrls);
     unittest.expect(o.keywords, unittest.equals('foo'));
     unittest.expect(o.moderateComments, unittest.isTrue);
     unittest.expect(o.profileColor, unittest.equals('foo'));
@@ -1387,27 +1387,27 @@
   buildCounterChannelStatus--;
 }
 
-buildUnnamed617() {
+buildUnnamed601() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed617(core.List<core.String> o) {
+checkUnnamed601(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed618() {
+buildUnnamed602() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed618(core.List<core.String> o) {
+checkUnnamed602(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1418,8 +1418,8 @@
   var o = new api.ChannelTopicDetails();
   buildCounterChannelTopicDetails++;
   if (buildCounterChannelTopicDetails < 3) {
-    o.topicCategories = buildUnnamed617();
-    o.topicIds = buildUnnamed618();
+    o.topicCategories = buildUnnamed601();
+    o.topicIds = buildUnnamed602();
   }
   buildCounterChannelTopicDetails--;
   return o;
@@ -1428,8 +1428,8 @@
 checkChannelTopicDetails(api.ChannelTopicDetails o) {
   buildCounterChannelTopicDetails++;
   if (buildCounterChannelTopicDetails < 3) {
-    checkUnnamed617(o.topicCategories);
-    checkUnnamed618(o.topicIds);
+    checkUnnamed601(o.topicCategories);
+    checkUnnamed602(o.topicIds);
   }
   buildCounterChannelTopicDetails--;
 }
@@ -1459,14 +1459,14 @@
   buildCounterComment--;
 }
 
-buildUnnamed619() {
+buildUnnamed603() {
   var o = new core.List<api.Comment>();
   o.add(buildComment());
   o.add(buildComment());
   return o;
 }
 
-checkUnnamed619(core.List<api.Comment> o) {
+checkUnnamed603(core.List<api.Comment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkComment(o[0]);
   checkComment(o[1]);
@@ -1479,7 +1479,7 @@
   if (buildCounterCommentListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed619();
+    o.items = buildUnnamed603();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -1495,7 +1495,7 @@
   if (buildCounterCommentListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed619(o.items);
+    checkUnnamed603(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -1589,14 +1589,14 @@
   buildCounterCommentThread--;
 }
 
-buildUnnamed620() {
+buildUnnamed604() {
   var o = new core.List<api.CommentThread>();
   o.add(buildCommentThread());
   o.add(buildCommentThread());
   return o;
 }
 
-checkUnnamed620(core.List<api.CommentThread> o) {
+checkUnnamed604(core.List<api.CommentThread> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCommentThread(o[0]);
   checkCommentThread(o[1]);
@@ -1609,7 +1609,7 @@
   if (buildCounterCommentThreadListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed620();
+    o.items = buildUnnamed604();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -1625,7 +1625,7 @@
   if (buildCounterCommentThreadListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed620(o.items);
+    checkUnnamed604(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -1635,14 +1635,14 @@
   buildCounterCommentThreadListResponse--;
 }
 
-buildUnnamed621() {
+buildUnnamed605() {
   var o = new core.List<api.Comment>();
   o.add(buildComment());
   o.add(buildComment());
   return o;
 }
 
-checkUnnamed621(core.List<api.Comment> o) {
+checkUnnamed605(core.List<api.Comment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkComment(o[0]);
   checkComment(o[1]);
@@ -1653,7 +1653,7 @@
   var o = new api.CommentThreadReplies();
   buildCounterCommentThreadReplies++;
   if (buildCounterCommentThreadReplies < 3) {
-    o.comments = buildUnnamed621();
+    o.comments = buildUnnamed605();
   }
   buildCounterCommentThreadReplies--;
   return o;
@@ -1662,7 +1662,7 @@
 checkCommentThreadReplies(api.CommentThreadReplies o) {
   buildCounterCommentThreadReplies++;
   if (buildCounterCommentThreadReplies < 3) {
-    checkUnnamed621(o.comments);
+    checkUnnamed605(o.comments);
   }
   buildCounterCommentThreadReplies--;
 }
@@ -1696,27 +1696,27 @@
   buildCounterCommentThreadSnippet--;
 }
 
-buildUnnamed622() {
+buildUnnamed606() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed622(core.List<core.String> o) {
+checkUnnamed606(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed623() {
+buildUnnamed607() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed623(core.List<core.String> o) {
+checkUnnamed607(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1747,7 +1747,7 @@
     o.cscfRating = "foo";
     o.czfilmRating = "foo";
     o.djctqRating = "foo";
-    o.djctqRatingReasons = buildUnnamed622();
+    o.djctqRatingReasons = buildUnnamed606();
     o.ecbmctRating = "foo";
     o.eefilmRating = "foo";
     o.egfilmRating = "foo";
@@ -1756,7 +1756,7 @@
     o.fcoRating = "foo";
     o.fmocRating = "foo";
     o.fpbRating = "foo";
-    o.fpbRatingReasons = buildUnnamed623();
+    o.fpbRatingReasons = buildUnnamed607();
     o.fskRating = "foo";
     o.grfilmRating = "foo";
     o.icaaRating = "foo";
@@ -1825,7 +1825,7 @@
     unittest.expect(o.cscfRating, unittest.equals('foo'));
     unittest.expect(o.czfilmRating, unittest.equals('foo'));
     unittest.expect(o.djctqRating, unittest.equals('foo'));
-    checkUnnamed622(o.djctqRatingReasons);
+    checkUnnamed606(o.djctqRatingReasons);
     unittest.expect(o.ecbmctRating, unittest.equals('foo'));
     unittest.expect(o.eefilmRating, unittest.equals('foo'));
     unittest.expect(o.egfilmRating, unittest.equals('foo'));
@@ -1834,7 +1834,7 @@
     unittest.expect(o.fcoRating, unittest.equals('foo'));
     unittest.expect(o.fmocRating, unittest.equals('foo'));
     unittest.expect(o.fpbRating, unittest.equals('foo'));
-    checkUnnamed623(o.fpbRatingReasons);
+    checkUnnamed607(o.fpbRatingReasons);
     unittest.expect(o.fskRating, unittest.equals('foo'));
     unittest.expect(o.grfilmRating, unittest.equals('foo'));
     unittest.expect(o.icaaRating, unittest.equals('foo'));
@@ -1904,14 +1904,14 @@
   buildCounterFanFundingEvent--;
 }
 
-buildUnnamed624() {
+buildUnnamed608() {
   var o = new core.List<api.FanFundingEvent>();
   o.add(buildFanFundingEvent());
   o.add(buildFanFundingEvent());
   return o;
 }
 
-checkUnnamed624(core.List<api.FanFundingEvent> o) {
+checkUnnamed608(core.List<api.FanFundingEvent> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFanFundingEvent(o[0]);
   checkFanFundingEvent(o[1]);
@@ -1924,7 +1924,7 @@
   if (buildCounterFanFundingEventListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed624();
+    o.items = buildUnnamed608();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -1940,7 +1940,7 @@
   if (buildCounterFanFundingEventListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed624(o.items);
+    checkUnnamed608(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -2030,14 +2030,14 @@
   buildCounterGuideCategory--;
 }
 
-buildUnnamed625() {
+buildUnnamed609() {
   var o = new core.List<api.GuideCategory>();
   o.add(buildGuideCategory());
   o.add(buildGuideCategory());
   return o;
 }
 
-checkUnnamed625(core.List<api.GuideCategory> o) {
+checkUnnamed609(core.List<api.GuideCategory> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGuideCategory(o[0]);
   checkGuideCategory(o[1]);
@@ -2050,7 +2050,7 @@
   if (buildCounterGuideCategoryListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed625();
+    o.items = buildUnnamed609();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -2067,7 +2067,7 @@
   if (buildCounterGuideCategoryListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed625(o.items);
+    checkUnnamed609(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -2124,14 +2124,14 @@
   buildCounterI18nLanguage--;
 }
 
-buildUnnamed626() {
+buildUnnamed610() {
   var o = new core.List<api.I18nLanguage>();
   o.add(buildI18nLanguage());
   o.add(buildI18nLanguage());
   return o;
 }
 
-checkUnnamed626(core.List<api.I18nLanguage> o) {
+checkUnnamed610(core.List<api.I18nLanguage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkI18nLanguage(o[0]);
   checkI18nLanguage(o[1]);
@@ -2144,7 +2144,7 @@
   if (buildCounterI18nLanguageListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed626();
+    o.items = buildUnnamed610();
     o.kind = "foo";
     o.visitorId = "foo";
   }
@@ -2157,7 +2157,7 @@
   if (buildCounterI18nLanguageListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed626(o.items);
+    checkUnnamed610(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.visitorId, unittest.equals('foo'));
   }
@@ -2210,14 +2210,14 @@
   buildCounterI18nRegion--;
 }
 
-buildUnnamed627() {
+buildUnnamed611() {
   var o = new core.List<api.I18nRegion>();
   o.add(buildI18nRegion());
   o.add(buildI18nRegion());
   return o;
 }
 
-checkUnnamed627(core.List<api.I18nRegion> o) {
+checkUnnamed611(core.List<api.I18nRegion> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkI18nRegion(o[0]);
   checkI18nRegion(o[1]);
@@ -2230,7 +2230,7 @@
   if (buildCounterI18nRegionListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed627();
+    o.items = buildUnnamed611();
     o.kind = "foo";
     o.visitorId = "foo";
   }
@@ -2243,7 +2243,7 @@
   if (buildCounterI18nRegionListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed627(o.items);
+    checkUnnamed611(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.visitorId, unittest.equals('foo'));
   }
@@ -2403,14 +2403,14 @@
   buildCounterInvideoPosition--;
 }
 
-buildUnnamed628() {
+buildUnnamed612() {
   var o = new core.List<api.PromotedItem>();
   o.add(buildPromotedItem());
   o.add(buildPromotedItem());
   return o;
 }
 
-checkUnnamed628(core.List<api.PromotedItem> o) {
+checkUnnamed612(core.List<api.PromotedItem> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPromotedItem(o[0]);
   checkPromotedItem(o[1]);
@@ -2422,7 +2422,7 @@
   buildCounterInvideoPromotion++;
   if (buildCounterInvideoPromotion < 3) {
     o.defaultTiming = buildInvideoTiming();
-    o.items = buildUnnamed628();
+    o.items = buildUnnamed612();
     o.position = buildInvideoPosition();
     o.useSmartTiming = true;
   }
@@ -2434,7 +2434,7 @@
   buildCounterInvideoPromotion++;
   if (buildCounterInvideoPromotion < 3) {
     checkInvideoTiming(o.defaultTiming);
-    checkUnnamed628(o.items);
+    checkUnnamed612(o.items);
     checkInvideoPosition(o.position);
     unittest.expect(o.useSmartTiming, unittest.isTrue);
   }
@@ -2560,14 +2560,14 @@
   buildCounterLiveBroadcastContentDetails--;
 }
 
-buildUnnamed629() {
+buildUnnamed613() {
   var o = new core.List<api.LiveBroadcast>();
   o.add(buildLiveBroadcast());
   o.add(buildLiveBroadcast());
   return o;
 }
 
-checkUnnamed629(core.List<api.LiveBroadcast> o) {
+checkUnnamed613(core.List<api.LiveBroadcast> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLiveBroadcast(o[0]);
   checkLiveBroadcast(o[1]);
@@ -2580,7 +2580,7 @@
   if (buildCounterLiveBroadcastListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed629();
+    o.items = buildUnnamed613();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -2597,7 +2597,7 @@
   if (buildCounterLiveBroadcastListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed629(o.items);
+    checkUnnamed613(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -2852,14 +2852,14 @@
   buildCounterLiveChatMessageDeletedDetails--;
 }
 
-buildUnnamed630() {
+buildUnnamed614() {
   var o = new core.List<api.LiveChatMessage>();
   o.add(buildLiveChatMessage());
   o.add(buildLiveChatMessage());
   return o;
 }
 
-checkUnnamed630(core.List<api.LiveChatMessage> o) {
+checkUnnamed614(core.List<api.LiveChatMessage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLiveChatMessage(o[0]);
   checkLiveChatMessage(o[1]);
@@ -2872,7 +2872,7 @@
   if (buildCounterLiveChatMessageListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed630();
+    o.items = buildUnnamed614();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.offlineAt = core.DateTime.parse("2002-02-27T14:01:02");
@@ -2890,7 +2890,7 @@
   if (buildCounterLiveChatMessageListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed630(o.items);
+    checkUnnamed614(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.offlineAt,
@@ -2997,14 +2997,14 @@
   buildCounterLiveChatModerator--;
 }
 
-buildUnnamed631() {
+buildUnnamed615() {
   var o = new core.List<api.LiveChatModerator>();
   o.add(buildLiveChatModerator());
   o.add(buildLiveChatModerator());
   return o;
 }
 
-checkUnnamed631(core.List<api.LiveChatModerator> o) {
+checkUnnamed615(core.List<api.LiveChatModerator> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLiveChatModerator(o[0]);
   checkLiveChatModerator(o[1]);
@@ -3017,7 +3017,7 @@
   if (buildCounterLiveChatModeratorListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed631();
+    o.items = buildUnnamed615();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -3034,7 +3034,7 @@
   if (buildCounterLiveChatModeratorListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed631(o.items);
+    checkUnnamed615(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -3085,14 +3085,14 @@
   buildCounterLiveChatPollClosedDetails--;
 }
 
-buildUnnamed632() {
+buildUnnamed616() {
   var o = new core.List<api.LiveChatPollItem>();
   o.add(buildLiveChatPollItem());
   o.add(buildLiveChatPollItem());
   return o;
 }
 
-checkUnnamed632(core.List<api.LiveChatPollItem> o) {
+checkUnnamed616(core.List<api.LiveChatPollItem> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLiveChatPollItem(o[0]);
   checkLiveChatPollItem(o[1]);
@@ -3104,7 +3104,7 @@
   buildCounterLiveChatPollEditedDetails++;
   if (buildCounterLiveChatPollEditedDetails < 3) {
     o.id = "foo";
-    o.items = buildUnnamed632();
+    o.items = buildUnnamed616();
     o.prompt = "foo";
   }
   buildCounterLiveChatPollEditedDetails--;
@@ -3115,7 +3115,7 @@
   buildCounterLiveChatPollEditedDetails++;
   if (buildCounterLiveChatPollEditedDetails < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed632(o.items);
+    checkUnnamed616(o.items);
     unittest.expect(o.prompt, unittest.equals('foo'));
   }
   buildCounterLiveChatPollEditedDetails--;
@@ -3142,14 +3142,14 @@
   buildCounterLiveChatPollItem--;
 }
 
-buildUnnamed633() {
+buildUnnamed617() {
   var o = new core.List<api.LiveChatPollItem>();
   o.add(buildLiveChatPollItem());
   o.add(buildLiveChatPollItem());
   return o;
 }
 
-checkUnnamed633(core.List<api.LiveChatPollItem> o) {
+checkUnnamed617(core.List<api.LiveChatPollItem> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLiveChatPollItem(o[0]);
   checkLiveChatPollItem(o[1]);
@@ -3161,7 +3161,7 @@
   buildCounterLiveChatPollOpenedDetails++;
   if (buildCounterLiveChatPollOpenedDetails < 3) {
     o.id = "foo";
-    o.items = buildUnnamed633();
+    o.items = buildUnnamed617();
     o.prompt = "foo";
   }
   buildCounterLiveChatPollOpenedDetails--;
@@ -3172,7 +3172,7 @@
   buildCounterLiveChatPollOpenedDetails++;
   if (buildCounterLiveChatPollOpenedDetails < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed633(o.items);
+    checkUnnamed617(o.items);
     unittest.expect(o.prompt, unittest.equals('foo'));
   }
   buildCounterLiveChatPollOpenedDetails--;
@@ -3345,14 +3345,14 @@
   buildCounterLiveStreamContentDetails--;
 }
 
-buildUnnamed634() {
+buildUnnamed618() {
   var o = new core.List<api.LiveStreamConfigurationIssue>();
   o.add(buildLiveStreamConfigurationIssue());
   o.add(buildLiveStreamConfigurationIssue());
   return o;
 }
 
-checkUnnamed634(core.List<api.LiveStreamConfigurationIssue> o) {
+checkUnnamed618(core.List<api.LiveStreamConfigurationIssue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLiveStreamConfigurationIssue(o[0]);
   checkLiveStreamConfigurationIssue(o[1]);
@@ -3363,7 +3363,7 @@
   var o = new api.LiveStreamHealthStatus();
   buildCounterLiveStreamHealthStatus++;
   if (buildCounterLiveStreamHealthStatus < 3) {
-    o.configurationIssues = buildUnnamed634();
+    o.configurationIssues = buildUnnamed618();
     o.lastUpdateTimeSeconds = "foo";
     o.status = "foo";
   }
@@ -3374,21 +3374,21 @@
 checkLiveStreamHealthStatus(api.LiveStreamHealthStatus o) {
   buildCounterLiveStreamHealthStatus++;
   if (buildCounterLiveStreamHealthStatus < 3) {
-    checkUnnamed634(o.configurationIssues);
+    checkUnnamed618(o.configurationIssues);
     unittest.expect(o.lastUpdateTimeSeconds, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals('foo'));
   }
   buildCounterLiveStreamHealthStatus--;
 }
 
-buildUnnamed635() {
+buildUnnamed619() {
   var o = new core.List<api.LiveStream>();
   o.add(buildLiveStream());
   o.add(buildLiveStream());
   return o;
 }
 
-checkUnnamed635(core.List<api.LiveStream> o) {
+checkUnnamed619(core.List<api.LiveStream> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLiveStream(o[0]);
   checkLiveStream(o[1]);
@@ -3401,7 +3401,7 @@
   if (buildCounterLiveStreamListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed635();
+    o.items = buildUnnamed619();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -3418,7 +3418,7 @@
   if (buildCounterLiveStreamListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed635(o.items);
+    checkUnnamed619(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -3478,14 +3478,14 @@
   buildCounterLiveStreamStatus--;
 }
 
-buildUnnamed636() {
+buildUnnamed620() {
   var o = new core.List<api.LocalizedString>();
   o.add(buildLocalizedString());
   o.add(buildLocalizedString());
   return o;
 }
 
-checkUnnamed636(core.List<api.LocalizedString> o) {
+checkUnnamed620(core.List<api.LocalizedString> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocalizedString(o[0]);
   checkLocalizedString(o[1]);
@@ -3498,7 +3498,7 @@
   if (buildCounterLocalizedProperty < 3) {
     o.default_ = "foo";
     o.defaultLanguage = buildLanguageTag();
-    o.localized = buildUnnamed636();
+    o.localized = buildUnnamed620();
   }
   buildCounterLocalizedProperty--;
   return o;
@@ -3509,7 +3509,7 @@
   if (buildCounterLocalizedProperty < 3) {
     unittest.expect(o.default_, unittest.equals('foo'));
     checkLanguageTag(o.defaultLanguage);
-    checkUnnamed636(o.localized);
+    checkUnnamed620(o.localized);
   }
   buildCounterLocalizedProperty--;
 }
@@ -3579,14 +3579,14 @@
   buildCounterPageInfo--;
 }
 
-buildUnnamed637() {
+buildUnnamed621() {
   var o = new core.Map<core.String, api.PlaylistLocalization>();
   o["x"] = buildPlaylistLocalization();
   o["y"] = buildPlaylistLocalization();
   return o;
 }
 
-checkUnnamed637(core.Map<core.String, api.PlaylistLocalization> o) {
+checkUnnamed621(core.Map<core.String, api.PlaylistLocalization> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPlaylistLocalization(o["x"]);
   checkPlaylistLocalization(o["y"]);
@@ -3601,7 +3601,7 @@
     o.etag = "foo";
     o.id = "foo";
     o.kind = "foo";
-    o.localizations = buildUnnamed637();
+    o.localizations = buildUnnamed621();
     o.player = buildPlaylistPlayer();
     o.snippet = buildPlaylistSnippet();
     o.status = buildPlaylistStatus();
@@ -3617,7 +3617,7 @@
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed637(o.localizations);
+    checkUnnamed621(o.localizations);
     checkPlaylistPlayer(o.player);
     checkPlaylistSnippet(o.snippet);
     checkPlaylistStatus(o.status);
@@ -3701,14 +3701,14 @@
   buildCounterPlaylistItemContentDetails--;
 }
 
-buildUnnamed638() {
+buildUnnamed622() {
   var o = new core.List<api.PlaylistItem>();
   o.add(buildPlaylistItem());
   o.add(buildPlaylistItem());
   return o;
 }
 
-checkUnnamed638(core.List<api.PlaylistItem> o) {
+checkUnnamed622(core.List<api.PlaylistItem> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPlaylistItem(o[0]);
   checkPlaylistItem(o[1]);
@@ -3721,7 +3721,7 @@
   if (buildCounterPlaylistItemListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed638();
+    o.items = buildUnnamed622();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -3738,7 +3738,7 @@
   if (buildCounterPlaylistItemListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed638(o.items);
+    checkUnnamed622(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -3804,14 +3804,14 @@
   buildCounterPlaylistItemStatus--;
 }
 
-buildUnnamed639() {
+buildUnnamed623() {
   var o = new core.List<api.Playlist>();
   o.add(buildPlaylist());
   o.add(buildPlaylist());
   return o;
 }
 
-checkUnnamed639(core.List<api.Playlist> o) {
+checkUnnamed623(core.List<api.Playlist> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPlaylist(o[0]);
   checkPlaylist(o[1]);
@@ -3824,7 +3824,7 @@
   if (buildCounterPlaylistListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed639();
+    o.items = buildUnnamed623();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -3841,7 +3841,7 @@
   if (buildCounterPlaylistListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed639(o.items);
+    checkUnnamed623(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -3892,14 +3892,14 @@
   buildCounterPlaylistPlayer--;
 }
 
-buildUnnamed640() {
+buildUnnamed624() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed640(core.List<core.String> o) {
+checkUnnamed624(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -3916,7 +3916,7 @@
     o.description = "foo";
     o.localized = buildPlaylistLocalization();
     o.publishedAt = core.DateTime.parse("2002-02-27T14:01:02");
-    o.tags = buildUnnamed640();
+    o.tags = buildUnnamed624();
     o.thumbnails = buildThumbnailDetails();
     o.title = "foo";
   }
@@ -3934,7 +3934,7 @@
     checkPlaylistLocalization(o.localized);
     unittest.expect(o.publishedAt,
         unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
-    checkUnnamed640(o.tags);
+    checkUnnamed624(o.tags);
     checkThumbnailDetails(o.thumbnails);
     unittest.expect(o.title, unittest.equals('foo'));
   }
@@ -4056,14 +4056,14 @@
   buildCounterResourceId--;
 }
 
-buildUnnamed641() {
+buildUnnamed625() {
   var o = new core.List<api.SearchResult>();
   o.add(buildSearchResult());
   o.add(buildSearchResult());
   return o;
 }
 
-checkUnnamed641(core.List<api.SearchResult> o) {
+checkUnnamed625(core.List<api.SearchResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSearchResult(o[0]);
   checkSearchResult(o[1]);
@@ -4076,7 +4076,7 @@
   if (buildCounterSearchListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed641();
+    o.items = buildUnnamed625();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -4094,7 +4094,7 @@
   if (buildCounterSearchListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed641(o.items);
+    checkUnnamed625(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -4188,14 +4188,14 @@
   buildCounterSponsor--;
 }
 
-buildUnnamed642() {
+buildUnnamed626() {
   var o = new core.List<api.Sponsor>();
   o.add(buildSponsor());
   o.add(buildSponsor());
   return o;
 }
 
-checkUnnamed642(core.List<api.Sponsor> o) {
+checkUnnamed626(core.List<api.Sponsor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSponsor(o[0]);
   checkSponsor(o[1]);
@@ -4208,7 +4208,7 @@
   if (buildCounterSponsorListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed642();
+    o.items = buildUnnamed626();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -4224,7 +4224,7 @@
   if (buildCounterSponsorListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed642(o.items);
+    checkUnnamed626(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -4310,14 +4310,14 @@
   buildCounterSubscriptionContentDetails--;
 }
 
-buildUnnamed643() {
+buildUnnamed627() {
   var o = new core.List<api.Subscription>();
   o.add(buildSubscription());
   o.add(buildSubscription());
   return o;
 }
 
-checkUnnamed643(core.List<api.Subscription> o) {
+checkUnnamed627(core.List<api.Subscription> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSubscription(o[0]);
   checkSubscription(o[1]);
@@ -4330,7 +4330,7 @@
   if (buildCounterSubscriptionListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed643();
+    o.items = buildUnnamed627();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -4347,7 +4347,7 @@
   if (buildCounterSubscriptionListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed643(o.items);
+    checkUnnamed627(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -4440,14 +4440,14 @@
   buildCounterSuperChatEvent--;
 }
 
-buildUnnamed644() {
+buildUnnamed628() {
   var o = new core.List<api.SuperChatEvent>();
   o.add(buildSuperChatEvent());
   o.add(buildSuperChatEvent());
   return o;
 }
 
-checkUnnamed644(core.List<api.SuperChatEvent> o) {
+checkUnnamed628(core.List<api.SuperChatEvent> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSuperChatEvent(o[0]);
   checkSuperChatEvent(o[1]);
@@ -4460,7 +4460,7 @@
   if (buildCounterSuperChatEventListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed644();
+    o.items = buildUnnamed628();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -4476,7 +4476,7 @@
   if (buildCounterSuperChatEventListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed644(o.items);
+    checkUnnamed628(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -4570,14 +4570,14 @@
   buildCounterThumbnailDetails--;
 }
 
-buildUnnamed645() {
+buildUnnamed629() {
   var o = new core.List<api.ThumbnailDetails>();
   o.add(buildThumbnailDetails());
   o.add(buildThumbnailDetails());
   return o;
 }
 
-checkUnnamed645(core.List<api.ThumbnailDetails> o) {
+checkUnnamed629(core.List<api.ThumbnailDetails> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkThumbnailDetails(o[0]);
   checkThumbnailDetails(o[1]);
@@ -4590,7 +4590,7 @@
   if (buildCounterThumbnailSetResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed645();
+    o.items = buildUnnamed629();
     o.kind = "foo";
     o.visitorId = "foo";
   }
@@ -4603,7 +4603,7 @@
   if (buildCounterThumbnailSetResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed645(o.items);
+    checkUnnamed629(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.visitorId, unittest.equals('foo'));
   }
@@ -4625,14 +4625,14 @@
   buildCounterTokenPagination--;
 }
 
-buildUnnamed646() {
+buildUnnamed630() {
   var o = new core.Map<core.String, api.VideoLocalization>();
   o["x"] = buildVideoLocalization();
   o["y"] = buildVideoLocalization();
   return o;
 }
 
-checkUnnamed646(core.Map<core.String, api.VideoLocalization> o) {
+checkUnnamed630(core.Map<core.String, api.VideoLocalization> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVideoLocalization(o["x"]);
   checkVideoLocalization(o["y"]);
@@ -4650,7 +4650,7 @@
     o.id = "foo";
     o.kind = "foo";
     o.liveStreamingDetails = buildVideoLiveStreamingDetails();
-    o.localizations = buildUnnamed646();
+    o.localizations = buildUnnamed630();
     o.monetizationDetails = buildVideoMonetizationDetails();
     o.player = buildVideoPlayer();
     o.processingDetails = buildVideoProcessingDetails();
@@ -4676,7 +4676,7 @@
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     checkVideoLiveStreamingDetails(o.liveStreamingDetails);
-    checkUnnamed646(o.localizations);
+    checkUnnamed630(o.localizations);
     checkVideoMonetizationDetails(o.monetizationDetails);
     checkVideoPlayer(o.player);
     checkVideoProcessingDetails(o.processingDetails);
@@ -4743,14 +4743,14 @@
   buildCounterVideoAbuseReportReason--;
 }
 
-buildUnnamed647() {
+buildUnnamed631() {
   var o = new core.List<api.VideoAbuseReportReason>();
   o.add(buildVideoAbuseReportReason());
   o.add(buildVideoAbuseReportReason());
   return o;
 }
 
-checkUnnamed647(core.List<api.VideoAbuseReportReason> o) {
+checkUnnamed631(core.List<api.VideoAbuseReportReason> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVideoAbuseReportReason(o[0]);
   checkVideoAbuseReportReason(o[1]);
@@ -4763,7 +4763,7 @@
   if (buildCounterVideoAbuseReportReasonListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed647();
+    o.items = buildUnnamed631();
     o.kind = "foo";
     o.visitorId = "foo";
   }
@@ -4777,21 +4777,21 @@
   if (buildCounterVideoAbuseReportReasonListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed647(o.items);
+    checkUnnamed631(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.visitorId, unittest.equals('foo'));
   }
   buildCounterVideoAbuseReportReasonListResponse--;
 }
 
-buildUnnamed648() {
+buildUnnamed632() {
   var o = new core.List<api.VideoAbuseReportSecondaryReason>();
   o.add(buildVideoAbuseReportSecondaryReason());
   o.add(buildVideoAbuseReportSecondaryReason());
   return o;
 }
 
-checkUnnamed648(core.List<api.VideoAbuseReportSecondaryReason> o) {
+checkUnnamed632(core.List<api.VideoAbuseReportSecondaryReason> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVideoAbuseReportSecondaryReason(o[0]);
   checkVideoAbuseReportSecondaryReason(o[1]);
@@ -4803,7 +4803,7 @@
   buildCounterVideoAbuseReportReasonSnippet++;
   if (buildCounterVideoAbuseReportReasonSnippet < 3) {
     o.label = "foo";
-    o.secondaryReasons = buildUnnamed648();
+    o.secondaryReasons = buildUnnamed632();
   }
   buildCounterVideoAbuseReportReasonSnippet--;
   return o;
@@ -4813,7 +4813,7 @@
   buildCounterVideoAbuseReportReasonSnippet++;
   if (buildCounterVideoAbuseReportReasonSnippet < 3) {
     unittest.expect(o.label, unittest.equals('foo'));
-    checkUnnamed648(o.secondaryReasons);
+    checkUnnamed632(o.secondaryReasons);
   }
   buildCounterVideoAbuseReportReasonSnippet--;
 }
@@ -4887,14 +4887,14 @@
   buildCounterVideoCategory--;
 }
 
-buildUnnamed649() {
+buildUnnamed633() {
   var o = new core.List<api.VideoCategory>();
   o.add(buildVideoCategory());
   o.add(buildVideoCategory());
   return o;
 }
 
-checkUnnamed649(core.List<api.VideoCategory> o) {
+checkUnnamed633(core.List<api.VideoCategory> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVideoCategory(o[0]);
   checkVideoCategory(o[1]);
@@ -4907,7 +4907,7 @@
   if (buildCounterVideoCategoryListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed649();
+    o.items = buildUnnamed633();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -4924,7 +4924,7 @@
   if (buildCounterVideoCategoryListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed649(o.items);
+    checkUnnamed633(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -4995,27 +4995,27 @@
   buildCounterVideoContentDetails--;
 }
 
-buildUnnamed650() {
+buildUnnamed634() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed650(core.List<core.String> o) {
+checkUnnamed634(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed651() {
+buildUnnamed635() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed651(core.List<core.String> o) {
+checkUnnamed635(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -5026,8 +5026,8 @@
   var o = new api.VideoContentDetailsRegionRestriction();
   buildCounterVideoContentDetailsRegionRestriction++;
   if (buildCounterVideoContentDetailsRegionRestriction < 3) {
-    o.allowed = buildUnnamed650();
-    o.blocked = buildUnnamed651();
+    o.allowed = buildUnnamed634();
+    o.blocked = buildUnnamed635();
   }
   buildCounterVideoContentDetailsRegionRestriction--;
   return o;
@@ -5037,33 +5037,33 @@
     api.VideoContentDetailsRegionRestriction o) {
   buildCounterVideoContentDetailsRegionRestriction++;
   if (buildCounterVideoContentDetailsRegionRestriction < 3) {
-    checkUnnamed650(o.allowed);
-    checkUnnamed651(o.blocked);
+    checkUnnamed634(o.allowed);
+    checkUnnamed635(o.blocked);
   }
   buildCounterVideoContentDetailsRegionRestriction--;
 }
 
-buildUnnamed652() {
+buildUnnamed636() {
   var o = new core.List<api.VideoFileDetailsAudioStream>();
   o.add(buildVideoFileDetailsAudioStream());
   o.add(buildVideoFileDetailsAudioStream());
   return o;
 }
 
-checkUnnamed652(core.List<api.VideoFileDetailsAudioStream> o) {
+checkUnnamed636(core.List<api.VideoFileDetailsAudioStream> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVideoFileDetailsAudioStream(o[0]);
   checkVideoFileDetailsAudioStream(o[1]);
 }
 
-buildUnnamed653() {
+buildUnnamed637() {
   var o = new core.List<api.VideoFileDetailsVideoStream>();
   o.add(buildVideoFileDetailsVideoStream());
   o.add(buildVideoFileDetailsVideoStream());
   return o;
 }
 
-checkUnnamed653(core.List<api.VideoFileDetailsVideoStream> o) {
+checkUnnamed637(core.List<api.VideoFileDetailsVideoStream> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVideoFileDetailsVideoStream(o[0]);
   checkVideoFileDetailsVideoStream(o[1]);
@@ -5074,7 +5074,7 @@
   var o = new api.VideoFileDetails();
   buildCounterVideoFileDetails++;
   if (buildCounterVideoFileDetails < 3) {
-    o.audioStreams = buildUnnamed652();
+    o.audioStreams = buildUnnamed636();
     o.bitrateBps = "foo";
     o.container = "foo";
     o.creationTime = "foo";
@@ -5082,7 +5082,7 @@
     o.fileName = "foo";
     o.fileSize = "foo";
     o.fileType = "foo";
-    o.videoStreams = buildUnnamed653();
+    o.videoStreams = buildUnnamed637();
   }
   buildCounterVideoFileDetails--;
   return o;
@@ -5091,7 +5091,7 @@
 checkVideoFileDetails(api.VideoFileDetails o) {
   buildCounterVideoFileDetails++;
   if (buildCounterVideoFileDetails < 3) {
-    checkUnnamed652(o.audioStreams);
+    checkUnnamed636(o.audioStreams);
     unittest.expect(o.bitrateBps, unittest.equals('foo'));
     unittest.expect(o.container, unittest.equals('foo'));
     unittest.expect(o.creationTime, unittest.equals('foo'));
@@ -5099,7 +5099,7 @@
     unittest.expect(o.fileName, unittest.equals('foo'));
     unittest.expect(o.fileSize, unittest.equals('foo'));
     unittest.expect(o.fileType, unittest.equals('foo'));
-    checkUnnamed653(o.videoStreams);
+    checkUnnamed637(o.videoStreams);
   }
   buildCounterVideoFileDetails--;
 }
@@ -5162,14 +5162,14 @@
   buildCounterVideoFileDetailsVideoStream--;
 }
 
-buildUnnamed654() {
+buildUnnamed638() {
   var o = new core.List<api.VideoRating>();
   o.add(buildVideoRating());
   o.add(buildVideoRating());
   return o;
 }
 
-checkUnnamed654(core.List<api.VideoRating> o) {
+checkUnnamed638(core.List<api.VideoRating> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVideoRating(o[0]);
   checkVideoRating(o[1]);
@@ -5182,7 +5182,7 @@
   if (buildCounterVideoGetRatingResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed654();
+    o.items = buildUnnamed638();
     o.kind = "foo";
     o.visitorId = "foo";
   }
@@ -5195,21 +5195,21 @@
   if (buildCounterVideoGetRatingResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed654(o.items);
+    checkUnnamed638(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.visitorId, unittest.equals('foo'));
   }
   buildCounterVideoGetRatingResponse--;
 }
 
-buildUnnamed655() {
+buildUnnamed639() {
   var o = new core.List<api.Video>();
   o.add(buildVideo());
   o.add(buildVideo());
   return o;
 }
 
-checkUnnamed655(core.List<api.Video> o) {
+checkUnnamed639(core.List<api.Video> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVideo(o[0]);
   checkVideo(o[1]);
@@ -5222,7 +5222,7 @@
   if (buildCounterVideoListResponse < 3) {
     o.etag = "foo";
     o.eventId = "foo";
-    o.items = buildUnnamed655();
+    o.items = buildUnnamed639();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.pageInfo = buildPageInfo();
@@ -5239,7 +5239,7 @@
   if (buildCounterVideoListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.eventId, unittest.equals('foo'));
-    checkUnnamed655(o.items);
+    checkUnnamed639(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     checkPageInfo(o.pageInfo);
@@ -5403,14 +5403,14 @@
   buildCounterVideoProcessingDetailsProcessingProgress--;
 }
 
-buildUnnamed656() {
+buildUnnamed640() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed656(core.List<core.String> o) {
+checkUnnamed640(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -5421,7 +5421,7 @@
   var o = new api.VideoProjectDetails();
   buildCounterVideoProjectDetails++;
   if (buildCounterVideoProjectDetails < 3) {
-    o.tags = buildUnnamed656();
+    o.tags = buildUnnamed640();
   }
   buildCounterVideoProjectDetails--;
   return o;
@@ -5430,7 +5430,7 @@
 checkVideoProjectDetails(api.VideoProjectDetails o) {
   buildCounterVideoProjectDetails++;
   if (buildCounterVideoProjectDetails < 3) {
-    checkUnnamed656(o.tags);
+    checkUnnamed640(o.tags);
   }
   buildCounterVideoProjectDetails--;
 }
@@ -5480,14 +5480,14 @@
   buildCounterVideoRecordingDetails--;
 }
 
-buildUnnamed657() {
+buildUnnamed641() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed657(core.List<core.String> o) {
+checkUnnamed641(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -5507,7 +5507,7 @@
     o.liveBroadcastContent = "foo";
     o.localized = buildVideoLocalization();
     o.publishedAt = core.DateTime.parse("2002-02-27T14:01:02");
-    o.tags = buildUnnamed657();
+    o.tags = buildUnnamed641();
     o.thumbnails = buildThumbnailDetails();
     o.title = "foo";
   }
@@ -5528,7 +5528,7 @@
     checkVideoLocalization(o.localized);
     unittest.expect(o.publishedAt,
         unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
-    checkUnnamed657(o.tags);
+    checkUnnamed641(o.tags);
     checkThumbnailDetails(o.thumbnails);
     unittest.expect(o.title, unittest.equals('foo'));
   }
@@ -5596,66 +5596,66 @@
   buildCounterVideoStatus--;
 }
 
-buildUnnamed658() {
+buildUnnamed642() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed658(core.List<core.String> o) {
+checkUnnamed642(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed659() {
+buildUnnamed643() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed659(core.List<core.String> o) {
+checkUnnamed643(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed660() {
+buildUnnamed644() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed660(core.List<core.String> o) {
+checkUnnamed644(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed661() {
+buildUnnamed645() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed661(core.List<core.String> o) {
+checkUnnamed645(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed662() {
+buildUnnamed646() {
   var o = new core.List<api.VideoSuggestionsTagSuggestion>();
   o.add(buildVideoSuggestionsTagSuggestion());
   o.add(buildVideoSuggestionsTagSuggestion());
   return o;
 }
 
-checkUnnamed662(core.List<api.VideoSuggestionsTagSuggestion> o) {
+checkUnnamed646(core.List<api.VideoSuggestionsTagSuggestion> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVideoSuggestionsTagSuggestion(o[0]);
   checkVideoSuggestionsTagSuggestion(o[1]);
@@ -5666,11 +5666,11 @@
   var o = new api.VideoSuggestions();
   buildCounterVideoSuggestions++;
   if (buildCounterVideoSuggestions < 3) {
-    o.editorSuggestions = buildUnnamed658();
-    o.processingErrors = buildUnnamed659();
-    o.processingHints = buildUnnamed660();
-    o.processingWarnings = buildUnnamed661();
-    o.tagSuggestions = buildUnnamed662();
+    o.editorSuggestions = buildUnnamed642();
+    o.processingErrors = buildUnnamed643();
+    o.processingHints = buildUnnamed644();
+    o.processingWarnings = buildUnnamed645();
+    o.tagSuggestions = buildUnnamed646();
   }
   buildCounterVideoSuggestions--;
   return o;
@@ -5679,23 +5679,23 @@
 checkVideoSuggestions(api.VideoSuggestions o) {
   buildCounterVideoSuggestions++;
   if (buildCounterVideoSuggestions < 3) {
-    checkUnnamed658(o.editorSuggestions);
-    checkUnnamed659(o.processingErrors);
-    checkUnnamed660(o.processingHints);
-    checkUnnamed661(o.processingWarnings);
-    checkUnnamed662(o.tagSuggestions);
+    checkUnnamed642(o.editorSuggestions);
+    checkUnnamed643(o.processingErrors);
+    checkUnnamed644(o.processingHints);
+    checkUnnamed645(o.processingWarnings);
+    checkUnnamed646(o.tagSuggestions);
   }
   buildCounterVideoSuggestions--;
 }
 
-buildUnnamed663() {
+buildUnnamed647() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed663(core.List<core.String> o) {
+checkUnnamed647(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -5706,7 +5706,7 @@
   var o = new api.VideoSuggestionsTagSuggestion();
   buildCounterVideoSuggestionsTagSuggestion++;
   if (buildCounterVideoSuggestionsTagSuggestion < 3) {
-    o.categoryRestricts = buildUnnamed663();
+    o.categoryRestricts = buildUnnamed647();
     o.tag = "foo";
   }
   buildCounterVideoSuggestionsTagSuggestion--;
@@ -5716,46 +5716,46 @@
 checkVideoSuggestionsTagSuggestion(api.VideoSuggestionsTagSuggestion o) {
   buildCounterVideoSuggestionsTagSuggestion++;
   if (buildCounterVideoSuggestionsTagSuggestion < 3) {
-    checkUnnamed663(o.categoryRestricts);
+    checkUnnamed647(o.categoryRestricts);
     unittest.expect(o.tag, unittest.equals('foo'));
   }
   buildCounterVideoSuggestionsTagSuggestion--;
 }
 
-buildUnnamed664() {
+buildUnnamed648() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed664(core.List<core.String> o) {
+checkUnnamed648(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed665() {
+buildUnnamed649() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed665(core.List<core.String> o) {
+checkUnnamed649(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed666() {
+buildUnnamed650() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed666(core.List<core.String> o) {
+checkUnnamed650(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -5766,9 +5766,9 @@
   var o = new api.VideoTopicDetails();
   buildCounterVideoTopicDetails++;
   if (buildCounterVideoTopicDetails < 3) {
-    o.relevantTopicIds = buildUnnamed664();
-    o.topicCategories = buildUnnamed665();
-    o.topicIds = buildUnnamed666();
+    o.relevantTopicIds = buildUnnamed648();
+    o.topicCategories = buildUnnamed649();
+    o.topicIds = buildUnnamed650();
   }
   buildCounterVideoTopicDetails--;
   return o;
@@ -5777,9 +5777,9 @@
 checkVideoTopicDetails(api.VideoTopicDetails o) {
   buildCounterVideoTopicDetails++;
   if (buildCounterVideoTopicDetails < 3) {
-    checkUnnamed664(o.relevantTopicIds);
-    checkUnnamed665(o.topicCategories);
-    checkUnnamed666(o.topicIds);
+    checkUnnamed648(o.relevantTopicIds);
+    checkUnnamed649(o.topicCategories);
+    checkUnnamed650(o.topicIds);
   }
   buildCounterVideoTopicDetails--;
 }
@@ -7218,6 +7218,7 @@
       api.ActivitiesResourceApi res = new api.YoutubeApi(mock).activities;
       var arg_request = buildActivity();
       var arg_part = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Activity.fromJson(json);
         checkActivity(obj);
@@ -7255,6 +7256,7 @@
           }
         }
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7263,7 +7265,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_part)
+          .insert(arg_request, arg_part, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Activity response) {
         checkActivity(response);
       })));
@@ -7281,6 +7283,7 @@
       var arg_publishedAfter = core.DateTime.parse("2002-02-27T14:01:02");
       var arg_publishedBefore = core.DateTime.parse("2002-02-27T14:01:02");
       var arg_regionCode = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7329,6 +7332,7 @@
             unittest.equals(arg_publishedBefore));
         unittest.expect(
             queryMap["regionCode"].first, unittest.equals(arg_regionCode));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7345,7 +7349,8 @@
               pageToken: arg_pageToken,
               publishedAfter: arg_publishedAfter,
               publishedBefore: arg_publishedBefore,
-              regionCode: arg_regionCode)
+              regionCode: arg_regionCode,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ActivityListResponse response) {
         checkActivityListResponse(response);
       })));
@@ -7359,6 +7364,7 @@
       var arg_id = "foo";
       var arg_onBehalfOf = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7397,6 +7403,7 @@
             queryMap["onBehalfOf"].first, unittest.equals(arg_onBehalfOf));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7407,7 +7414,8 @@
       res
           .delete(arg_id,
               onBehalfOf: arg_onBehalfOf,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -7422,6 +7430,7 @@
       var arg_onBehalfOfContentOwner = "foo";
       var arg_tfmt = "foo";
       var arg_tlang = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7464,6 +7473,7 @@
             unittest.equals(arg_onBehalfOfContentOwner));
         unittest.expect(queryMap["tfmt"].first, unittest.equals(arg_tfmt));
         unittest.expect(queryMap["tlang"].first, unittest.equals(arg_tlang));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7476,7 +7486,8 @@
               onBehalfOf: arg_onBehalfOf,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
               tfmt: arg_tfmt,
-              tlang: arg_tlang)
+              tlang: arg_tlang,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -7491,6 +7502,7 @@
       var arg_onBehalfOf = "foo";
       var arg_onBehalfOfContentOwner = "foo";
       var arg_sync = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Caption.fromJson(json);
         checkCaption(obj);
@@ -7533,6 +7545,7 @@
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
         unittest.expect(queryMap["sync"].first, unittest.equals("$arg_sync"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7544,7 +7557,8 @@
           .insert(arg_request, arg_part,
               onBehalfOf: arg_onBehalfOf,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
-              sync: arg_sync)
+              sync: arg_sync,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Caption response) {
         checkCaption(response);
       })));
@@ -7558,6 +7572,7 @@
       var arg_id = "foo";
       var arg_onBehalfOf = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7599,6 +7614,7 @@
             queryMap["onBehalfOf"].first, unittest.equals(arg_onBehalfOf));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7610,7 +7626,8 @@
           .list(arg_part, arg_videoId,
               id: arg_id,
               onBehalfOf: arg_onBehalfOf,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CaptionListResponse response) {
         checkCaptionListResponse(response);
       })));
@@ -7627,6 +7644,7 @@
       var arg_onBehalfOf = "foo";
       var arg_onBehalfOfContentOwner = "foo";
       var arg_sync = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Caption.fromJson(json);
         checkCaption(obj);
@@ -7669,6 +7687,7 @@
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
         unittest.expect(queryMap["sync"].first, unittest.equals("$arg_sync"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7680,7 +7699,8 @@
           .update(arg_request, arg_part,
               onBehalfOf: arg_onBehalfOf,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
-              sync: arg_sync)
+              sync: arg_sync,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Caption response) {
         checkCaption(response);
       })));
@@ -7698,6 +7718,7 @@
       var arg_request = buildChannelBannerResource();
       var arg_channelId = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ChannelBannerResource.fromJson(json);
         checkChannelBannerResource(obj);
@@ -7738,6 +7759,7 @@
             queryMap["channelId"].first, unittest.equals(arg_channelId));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7748,7 +7770,8 @@
       res
           .insert(arg_request,
               channelId: arg_channelId,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ChannelBannerResource response) {
         checkChannelBannerResource(response);
       })));
@@ -7762,6 +7785,7 @@
           new api.YoutubeApi(mock).channelSections;
       var arg_id = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7798,6 +7822,7 @@
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7806,7 +7831,9 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_id, onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+          .delete(arg_id,
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -7818,6 +7845,7 @@
       var arg_part = "foo";
       var arg_onBehalfOfContentOwner = "foo";
       var arg_onBehalfOfContentOwnerChannel = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ChannelSection.fromJson(json);
         checkChannelSection(obj);
@@ -7859,6 +7887,7 @@
             unittest.equals(arg_onBehalfOfContentOwner));
         unittest.expect(queryMap["onBehalfOfContentOwnerChannel"].first,
             unittest.equals(arg_onBehalfOfContentOwnerChannel));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7869,7 +7898,8 @@
       res
           .insert(arg_request, arg_part,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
-              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel)
+              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ChannelSection response) {
         checkChannelSection(response);
       })));
@@ -7885,6 +7915,7 @@
       var arg_id = "foo";
       var arg_mine = true;
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7926,6 +7957,7 @@
         unittest.expect(queryMap["mine"].first, unittest.equals("$arg_mine"));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7939,7 +7971,8 @@
               hl: arg_hl,
               id: arg_id,
               mine: arg_mine,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.ChannelSectionListResponse response) {
         checkChannelSectionListResponse(response);
@@ -7953,6 +7986,7 @@
       var arg_request = buildChannelSection();
       var arg_part = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ChannelSection.fromJson(json);
         checkChannelSection(obj);
@@ -7992,6 +8026,7 @@
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8001,7 +8036,8 @@
       }), true);
       res
           .update(arg_request, arg_part,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ChannelSection response) {
         checkChannelSection(response);
       })));
@@ -8023,6 +8059,7 @@
       var arg_mySubscribers = true;
       var arg_onBehalfOfContentOwner = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8074,6 +8111,7 @@
             unittest.equals(arg_onBehalfOfContentOwner));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8092,7 +8130,8 @@
               mine: arg_mine,
               mySubscribers: arg_mySubscribers,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ChannelListResponse response) {
         checkChannelListResponse(response);
       })));
@@ -8104,6 +8143,7 @@
       var arg_request = buildChannel();
       var arg_part = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Channel.fromJson(json);
         checkChannel(obj);
@@ -8143,6 +8183,7 @@
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8152,7 +8193,8 @@
       }), true);
       res
           .update(arg_request, arg_part,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Channel response) {
         checkChannel(response);
       })));
@@ -8166,6 +8208,7 @@
           new api.YoutubeApi(mock).commentThreads;
       var arg_request = buildCommentThread();
       var arg_part = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CommentThread.fromJson(json);
         checkCommentThread(obj);
@@ -8203,6 +8246,7 @@
           }
         }
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8211,7 +8255,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_part)
+          .insert(arg_request, arg_part, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CommentThread response) {
         checkCommentThread(response);
       })));
@@ -8232,6 +8276,7 @@
       var arg_searchTerms = "foo";
       var arg_textFormat = "foo";
       var arg_videoId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8284,6 +8329,7 @@
             queryMap["textFormat"].first, unittest.equals(arg_textFormat));
         unittest.expect(
             queryMap["videoId"].first, unittest.equals(arg_videoId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8302,7 +8348,8 @@
               pageToken: arg_pageToken,
               searchTerms: arg_searchTerms,
               textFormat: arg_textFormat,
-              videoId: arg_videoId)
+              videoId: arg_videoId,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.CommentThreadListResponse response) {
         checkCommentThreadListResponse(response);
@@ -8315,6 +8362,7 @@
           new api.YoutubeApi(mock).commentThreads;
       var arg_request = buildCommentThread();
       var arg_part = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CommentThread.fromJson(json);
         checkCommentThread(obj);
@@ -8352,6 +8400,7 @@
           }
         }
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8360,7 +8409,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_part)
+          .update(arg_request, arg_part, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CommentThread response) {
         checkCommentThread(response);
       })));
@@ -8372,6 +8421,7 @@
       var mock = new HttpServerMock();
       api.CommentsResourceApi res = new api.YoutubeApi(mock).comments;
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8406,6 +8456,7 @@
           }
         }
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8413,7 +8464,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_id).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--insert", () {
@@ -8421,6 +8474,7 @@
       api.CommentsResourceApi res = new api.YoutubeApi(mock).comments;
       var arg_request = buildComment();
       var arg_part = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Comment.fromJson(json);
         checkComment(obj);
@@ -8458,6 +8512,7 @@
           }
         }
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8466,7 +8521,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_part)
+          .insert(arg_request, arg_part, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Comment response) {
         checkComment(response);
       })));
@@ -8481,6 +8536,7 @@
       var arg_pageToken = "foo";
       var arg_parentId = "foo";
       var arg_textFormat = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8524,6 +8580,7 @@
             queryMap["parentId"].first, unittest.equals(arg_parentId));
         unittest.expect(
             queryMap["textFormat"].first, unittest.equals(arg_textFormat));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8537,7 +8594,8 @@
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
               parentId: arg_parentId,
-              textFormat: arg_textFormat)
+              textFormat: arg_textFormat,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.CommentListResponse response) {
         checkCommentListResponse(response);
       })));
@@ -8547,6 +8605,7 @@
       var mock = new HttpServerMock();
       api.CommentsResourceApi res = new api.YoutubeApi(mock).comments;
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8581,6 +8640,7 @@
           }
         }
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8588,7 +8648,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.markAsSpam(arg_id).then(unittest.expectAsync1((_) {}));
+      res
+          .markAsSpam(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--setModerationStatus", () {
@@ -8597,6 +8659,7 @@
       var arg_id = "foo";
       var arg_moderationStatus = "foo";
       var arg_banAuthor = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8635,6 +8698,7 @@
             unittest.equals(arg_moderationStatus));
         unittest.expect(
             queryMap["banAuthor"].first, unittest.equals("$arg_banAuthor"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8644,7 +8708,7 @@
       }), true);
       res
           .setModerationStatus(arg_id, arg_moderationStatus,
-              banAuthor: arg_banAuthor)
+              banAuthor: arg_banAuthor, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -8653,6 +8717,7 @@
       api.CommentsResourceApi res = new api.YoutubeApi(mock).comments;
       var arg_request = buildComment();
       var arg_part = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Comment.fromJson(json);
         checkComment(obj);
@@ -8690,6 +8755,7 @@
           }
         }
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8698,7 +8764,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_part)
+          .update(arg_request, arg_part, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Comment response) {
         checkComment(response);
       })));
@@ -8714,6 +8780,7 @@
       var arg_hl = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8753,6 +8820,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8762,7 +8830,10 @@
       }), true);
       res
           .list(arg_part,
-              hl: arg_hl, maxResults: arg_maxResults, pageToken: arg_pageToken)
+              hl: arg_hl,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.FanFundingEventListResponse response) {
         checkFanFundingEventListResponse(response);
@@ -8779,6 +8850,7 @@
       var arg_hl = "foo";
       var arg_id = "foo";
       var arg_regionCode = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8817,6 +8889,7 @@
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
         unittest.expect(
             queryMap["regionCode"].first, unittest.equals(arg_regionCode));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8825,7 +8898,11 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_part, hl: arg_hl, id: arg_id, regionCode: arg_regionCode)
+          .list(arg_part,
+              hl: arg_hl,
+              id: arg_id,
+              regionCode: arg_regionCode,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.GuideCategoryListResponse response) {
         checkGuideCategoryListResponse(response);
@@ -8839,6 +8916,7 @@
       api.I18nLanguagesResourceApi res = new api.YoutubeApi(mock).i18nLanguages;
       var arg_part = "foo";
       var arg_hl = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8874,6 +8952,7 @@
         }
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
         unittest.expect(queryMap["hl"].first, unittest.equals(arg_hl));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8882,7 +8961,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_part, hl: arg_hl)
+          .list(arg_part, hl: arg_hl, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.I18nLanguageListResponse response) {
         checkI18nLanguageListResponse(response);
       })));
@@ -8895,6 +8974,7 @@
       api.I18nRegionsResourceApi res = new api.YoutubeApi(mock).i18nRegions;
       var arg_part = "foo";
       var arg_hl = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8930,6 +9010,7 @@
         }
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
         unittest.expect(queryMap["hl"].first, unittest.equals(arg_hl));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8938,7 +9019,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_part, hl: arg_hl)
+          .list(arg_part, hl: arg_hl, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.I18nRegionListResponse response) {
         checkI18nRegionListResponse(response);
       })));
@@ -8955,6 +9036,7 @@
       var arg_onBehalfOfContentOwner = "foo";
       var arg_onBehalfOfContentOwnerChannel = "foo";
       var arg_streamId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -8996,6 +9078,7 @@
             unittest.equals(arg_onBehalfOfContentOwnerChannel));
         unittest.expect(
             queryMap["streamId"].first, unittest.equals(arg_streamId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9007,7 +9090,8 @@
           .bind(arg_id, arg_part,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
               onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
-              streamId: arg_streamId)
+              streamId: arg_streamId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LiveBroadcast response) {
         checkLiveBroadcast(response);
       })));
@@ -9024,6 +9108,7 @@
       var arg_onBehalfOfContentOwner = "foo";
       var arg_onBehalfOfContentOwnerChannel = "foo";
       var arg_walltime = core.DateTime.parse("2002-02-27T14:01:02");
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9069,6 +9154,7 @@
             unittest.equals(arg_onBehalfOfContentOwnerChannel));
         unittest.expect(core.DateTime.parse(queryMap["walltime"].first),
             unittest.equals(arg_walltime));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9082,7 +9168,8 @@
               offsetTimeMs: arg_offsetTimeMs,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
               onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
-              walltime: arg_walltime)
+              walltime: arg_walltime,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LiveBroadcast response) {
         checkLiveBroadcast(response);
       })));
@@ -9095,6 +9182,7 @@
       var arg_id = "foo";
       var arg_onBehalfOfContentOwner = "foo";
       var arg_onBehalfOfContentOwnerChannel = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9133,6 +9221,7 @@
             unittest.equals(arg_onBehalfOfContentOwner));
         unittest.expect(queryMap["onBehalfOfContentOwnerChannel"].first,
             unittest.equals(arg_onBehalfOfContentOwnerChannel));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9143,7 +9232,8 @@
       res
           .delete(arg_id,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
-              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel)
+              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -9155,6 +9245,7 @@
       var arg_part = "foo";
       var arg_onBehalfOfContentOwner = "foo";
       var arg_onBehalfOfContentOwnerChannel = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LiveBroadcast.fromJson(json);
         checkLiveBroadcast(obj);
@@ -9196,6 +9287,7 @@
             unittest.equals(arg_onBehalfOfContentOwner));
         unittest.expect(queryMap["onBehalfOfContentOwnerChannel"].first,
             unittest.equals(arg_onBehalfOfContentOwnerChannel));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9206,7 +9298,8 @@
       res
           .insert(arg_request, arg_part,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
-              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel)
+              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LiveBroadcast response) {
         checkLiveBroadcast(response);
       })));
@@ -9225,6 +9318,7 @@
       var arg_onBehalfOfContentOwner = "foo";
       var arg_onBehalfOfContentOwnerChannel = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9273,6 +9367,7 @@
             unittest.equals(arg_onBehalfOfContentOwnerChannel));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9289,7 +9384,8 @@
               mine: arg_mine,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
               onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.LiveBroadcastListResponse response) {
         checkLiveBroadcastListResponse(response);
@@ -9305,6 +9401,7 @@
       var arg_part = "foo";
       var arg_onBehalfOfContentOwner = "foo";
       var arg_onBehalfOfContentOwnerChannel = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9346,6 +9443,7 @@
             unittest.equals(arg_onBehalfOfContentOwner));
         unittest.expect(queryMap["onBehalfOfContentOwnerChannel"].first,
             unittest.equals(arg_onBehalfOfContentOwnerChannel));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9356,7 +9454,8 @@
       res
           .transition(arg_broadcastStatus, arg_id, arg_part,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
-              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel)
+              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LiveBroadcast response) {
         checkLiveBroadcast(response);
       })));
@@ -9370,6 +9469,7 @@
       var arg_part = "foo";
       var arg_onBehalfOfContentOwner = "foo";
       var arg_onBehalfOfContentOwnerChannel = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LiveBroadcast.fromJson(json);
         checkLiveBroadcast(obj);
@@ -9411,6 +9511,7 @@
             unittest.equals(arg_onBehalfOfContentOwner));
         unittest.expect(queryMap["onBehalfOfContentOwnerChannel"].first,
             unittest.equals(arg_onBehalfOfContentOwnerChannel));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9421,7 +9522,8 @@
       res
           .update(arg_request, arg_part,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
-              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel)
+              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LiveBroadcast response) {
         checkLiveBroadcast(response);
       })));
@@ -9433,6 +9535,7 @@
       var mock = new HttpServerMock();
       api.LiveChatBansResourceApi res = new api.YoutubeApi(mock).liveChatBans;
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9467,6 +9570,7 @@
           }
         }
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9474,7 +9578,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_id).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--insert", () {
@@ -9482,6 +9588,7 @@
       api.LiveChatBansResourceApi res = new api.YoutubeApi(mock).liveChatBans;
       var arg_request = buildLiveChatBan();
       var arg_part = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LiveChatBan.fromJson(json);
         checkLiveChatBan(obj);
@@ -9519,6 +9626,7 @@
           }
         }
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9527,7 +9635,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_part)
+          .insert(arg_request, arg_part, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LiveChatBan response) {
         checkLiveChatBan(response);
       })));
@@ -9540,6 +9648,7 @@
       api.LiveChatMessagesResourceApi res =
           new api.YoutubeApi(mock).liveChatMessages;
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9574,6 +9683,7 @@
           }
         }
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9581,7 +9691,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_id).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--insert", () {
@@ -9590,6 +9702,7 @@
           new api.YoutubeApi(mock).liveChatMessages;
       var arg_request = buildLiveChatMessage();
       var arg_part = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LiveChatMessage.fromJson(json);
         checkLiveChatMessage(obj);
@@ -9627,6 +9740,7 @@
           }
         }
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9635,7 +9749,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_part)
+          .insert(arg_request, arg_part, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LiveChatMessage response) {
         checkLiveChatMessage(response);
       })));
@@ -9651,6 +9765,7 @@
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
       var arg_profileImageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9694,6 +9809,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["profileImageSize"].first),
             unittest.equals(arg_profileImageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9706,7 +9822,8 @@
               hl: arg_hl,
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
-              profileImageSize: arg_profileImageSize)
+              profileImageSize: arg_profileImageSize,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.LiveChatMessageListResponse response) {
         checkLiveChatMessageListResponse(response);
@@ -9720,6 +9837,7 @@
       api.LiveChatModeratorsResourceApi res =
           new api.YoutubeApi(mock).liveChatModerators;
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9754,6 +9872,7 @@
           }
         }
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9761,7 +9880,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_id).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--insert", () {
@@ -9770,6 +9891,7 @@
           new api.YoutubeApi(mock).liveChatModerators;
       var arg_request = buildLiveChatModerator();
       var arg_part = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LiveChatModerator.fromJson(json);
         checkLiveChatModerator(obj);
@@ -9807,6 +9929,7 @@
           }
         }
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9815,7 +9938,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_part)
+          .insert(arg_request, arg_part, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LiveChatModerator response) {
         checkLiveChatModerator(response);
       })));
@@ -9829,6 +9952,7 @@
       var arg_part = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9869,6 +9993,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9878,7 +10003,9 @@
       }), true);
       res
           .list(arg_liveChatId, arg_part,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.LiveChatModeratorListResponse response) {
         checkLiveChatModeratorListResponse(response);
@@ -9893,6 +10020,7 @@
       var arg_id = "foo";
       var arg_onBehalfOfContentOwner = "foo";
       var arg_onBehalfOfContentOwnerChannel = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -9931,6 +10059,7 @@
             unittest.equals(arg_onBehalfOfContentOwner));
         unittest.expect(queryMap["onBehalfOfContentOwnerChannel"].first,
             unittest.equals(arg_onBehalfOfContentOwnerChannel));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -9941,7 +10070,8 @@
       res
           .delete(arg_id,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
-              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel)
+              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -9952,6 +10082,7 @@
       var arg_part = "foo";
       var arg_onBehalfOfContentOwner = "foo";
       var arg_onBehalfOfContentOwnerChannel = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LiveStream.fromJson(json);
         checkLiveStream(obj);
@@ -9993,6 +10124,7 @@
             unittest.equals(arg_onBehalfOfContentOwner));
         unittest.expect(queryMap["onBehalfOfContentOwnerChannel"].first,
             unittest.equals(arg_onBehalfOfContentOwnerChannel));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10003,7 +10135,8 @@
       res
           .insert(arg_request, arg_part,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
-              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel)
+              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LiveStream response) {
         checkLiveStream(response);
       })));
@@ -10019,6 +10152,7 @@
       var arg_onBehalfOfContentOwner = "foo";
       var arg_onBehalfOfContentOwnerChannel = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10063,6 +10197,7 @@
             unittest.equals(arg_onBehalfOfContentOwnerChannel));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10077,7 +10212,8 @@
               mine: arg_mine,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
               onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LiveStreamListResponse response) {
         checkLiveStreamListResponse(response);
       })));
@@ -10090,6 +10226,7 @@
       var arg_part = "foo";
       var arg_onBehalfOfContentOwner = "foo";
       var arg_onBehalfOfContentOwnerChannel = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LiveStream.fromJson(json);
         checkLiveStream(obj);
@@ -10131,6 +10268,7 @@
             unittest.equals(arg_onBehalfOfContentOwner));
         unittest.expect(queryMap["onBehalfOfContentOwnerChannel"].first,
             unittest.equals(arg_onBehalfOfContentOwnerChannel));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10141,7 +10279,8 @@
       res
           .update(arg_request, arg_part,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
-              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel)
+              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LiveStream response) {
         checkLiveStream(response);
       })));
@@ -10154,6 +10293,7 @@
       api.PlaylistItemsResourceApi res = new api.YoutubeApi(mock).playlistItems;
       var arg_id = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10190,6 +10330,7 @@
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10198,7 +10339,9 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_id, onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+          .delete(arg_id,
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -10208,6 +10351,7 @@
       var arg_request = buildPlaylistItem();
       var arg_part = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.PlaylistItem.fromJson(json);
         checkPlaylistItem(obj);
@@ -10247,6 +10391,7 @@
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10256,7 +10401,8 @@
       }), true);
       res
           .insert(arg_request, arg_part,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PlaylistItem response) {
         checkPlaylistItem(response);
       })));
@@ -10272,6 +10418,7 @@
       var arg_pageToken = "foo";
       var arg_playlistId = "foo";
       var arg_videoId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10317,6 +10464,7 @@
             queryMap["playlistId"].first, unittest.equals(arg_playlistId));
         unittest.expect(
             queryMap["videoId"].first, unittest.equals(arg_videoId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10331,7 +10479,8 @@
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
               pageToken: arg_pageToken,
               playlistId: arg_playlistId,
-              videoId: arg_videoId)
+              videoId: arg_videoId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PlaylistItemListResponse response) {
         checkPlaylistItemListResponse(response);
       })));
@@ -10343,6 +10492,7 @@
       var arg_request = buildPlaylistItem();
       var arg_part = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.PlaylistItem.fromJson(json);
         checkPlaylistItem(obj);
@@ -10382,6 +10532,7 @@
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10391,7 +10542,8 @@
       }), true);
       res
           .update(arg_request, arg_part,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PlaylistItem response) {
         checkPlaylistItem(response);
       })));
@@ -10404,6 +10556,7 @@
       api.PlaylistsResourceApi res = new api.YoutubeApi(mock).playlists;
       var arg_id = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10440,6 +10593,7 @@
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10448,7 +10602,9 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_id, onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+          .delete(arg_id,
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -10459,6 +10615,7 @@
       var arg_part = "foo";
       var arg_onBehalfOfContentOwner = "foo";
       var arg_onBehalfOfContentOwnerChannel = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Playlist.fromJson(json);
         checkPlaylist(obj);
@@ -10500,6 +10657,7 @@
             unittest.equals(arg_onBehalfOfContentOwner));
         unittest.expect(queryMap["onBehalfOfContentOwnerChannel"].first,
             unittest.equals(arg_onBehalfOfContentOwnerChannel));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10510,7 +10668,8 @@
       res
           .insert(arg_request, arg_part,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
-              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel)
+              onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Playlist response) {
         checkPlaylist(response);
       })));
@@ -10528,6 +10687,7 @@
       var arg_onBehalfOfContentOwner = "foo";
       var arg_onBehalfOfContentOwnerChannel = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10575,6 +10735,7 @@
             unittest.equals(arg_onBehalfOfContentOwnerChannel));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10591,7 +10752,8 @@
               mine: arg_mine,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
               onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PlaylistListResponse response) {
         checkPlaylistListResponse(response);
       })));
@@ -10603,6 +10765,7 @@
       var arg_request = buildPlaylist();
       var arg_part = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Playlist.fromJson(json);
         checkPlaylist(obj);
@@ -10642,6 +10805,7 @@
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10651,7 +10815,8 @@
       }), true);
       res
           .update(arg_request, arg_part,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Playlist response) {
         checkPlaylist(response);
       })));
@@ -10693,6 +10858,7 @@
       var arg_videoLicense = "foo";
       var arg_videoSyndicated = "foo";
       var arg_videoType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10784,6 +10950,7 @@
             unittest.equals(arg_videoSyndicated));
         unittest.expect(
             queryMap["videoType"].first, unittest.equals(arg_videoType));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10822,7 +10989,8 @@
               videoEmbeddable: arg_videoEmbeddable,
               videoLicense: arg_videoLicense,
               videoSyndicated: arg_videoSyndicated,
-              videoType: arg_videoType)
+              videoType: arg_videoType,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SearchListResponse response) {
         checkSearchListResponse(response);
       })));
@@ -10837,6 +11005,7 @@
       var arg_filter = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10876,6 +11045,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10887,7 +11057,8 @@
           .list(arg_part,
               filter: arg_filter,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SponsorListResponse response) {
         checkSponsorListResponse(response);
       })));
@@ -10899,6 +11070,7 @@
       var mock = new HttpServerMock();
       api.SubscriptionsResourceApi res = new api.YoutubeApi(mock).subscriptions;
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -10933,6 +11105,7 @@
           }
         }
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10940,7 +11113,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_id).then(unittest.expectAsync1((_) {}));
+      res
+          .delete(arg_id, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--insert", () {
@@ -10948,6 +11123,7 @@
       api.SubscriptionsResourceApi res = new api.YoutubeApi(mock).subscriptions;
       var arg_request = buildSubscription();
       var arg_part = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Subscription.fromJson(json);
         checkSubscription(obj);
@@ -10985,6 +11161,7 @@
           }
         }
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -10993,7 +11170,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_part)
+          .insert(arg_request, arg_part, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscription response) {
         checkSubscription(response);
       })));
@@ -11014,6 +11191,7 @@
       var arg_onBehalfOfContentOwnerChannel = "foo";
       var arg_order = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -11067,6 +11245,7 @@
         unittest.expect(queryMap["order"].first, unittest.equals(arg_order));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11086,7 +11265,8 @@
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
               onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
               order: arg_order,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SubscriptionListResponse response) {
         checkSubscriptionListResponse(response);
       })));
@@ -11102,6 +11282,7 @@
       var arg_hl = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -11141,6 +11322,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11150,7 +11332,10 @@
       }), true);
       res
           .list(arg_part,
-              hl: arg_hl, maxResults: arg_maxResults, pageToken: arg_pageToken)
+              hl: arg_hl,
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.SuperChatEventListResponse response) {
         checkSuperChatEventListResponse(response);
@@ -11167,6 +11352,7 @@
       api.ThumbnailsResourceApi res = new api.YoutubeApi(mock).thumbnails;
       var arg_videoId = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -11204,6 +11390,7 @@
             queryMap["videoId"].first, unittest.equals(arg_videoId));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11212,7 +11399,9 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .set(arg_videoId, onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+          .set(arg_videoId,
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ThumbnailSetResponse response) {
         checkThumbnailSetResponse(response);
       })));
@@ -11226,6 +11415,7 @@
           new api.YoutubeApi(mock).videoAbuseReportReasons;
       var arg_part = "foo";
       var arg_hl = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -11261,6 +11451,7 @@
         }
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
         unittest.expect(queryMap["hl"].first, unittest.equals(arg_hl));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11269,7 +11460,7 @@
             convert.JSON.encode(buildVideoAbuseReportReasonListResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(arg_part, hl: arg_hl).then(unittest
+      res.list(arg_part, hl: arg_hl, $fields: arg_$fields).then(unittest
           .expectAsync1(((api.VideoAbuseReportReasonListResponse response) {
         checkVideoAbuseReportReasonListResponse(response);
       })));
@@ -11285,6 +11476,7 @@
       var arg_hl = "foo";
       var arg_id = "foo";
       var arg_regionCode = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -11323,6 +11515,7 @@
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
         unittest.expect(
             queryMap["regionCode"].first, unittest.equals(arg_regionCode));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11331,7 +11524,11 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_part, hl: arg_hl, id: arg_id, regionCode: arg_regionCode)
+          .list(arg_part,
+              hl: arg_hl,
+              id: arg_id,
+              regionCode: arg_regionCode,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.VideoCategoryListResponse response) {
         checkVideoCategoryListResponse(response);
@@ -11345,6 +11542,7 @@
       api.VideosResourceApi res = new api.YoutubeApi(mock).videos;
       var arg_id = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -11381,6 +11579,7 @@
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11389,7 +11588,9 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_id, onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+          .delete(arg_id,
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -11398,6 +11599,7 @@
       api.VideosResourceApi res = new api.YoutubeApi(mock).videos;
       var arg_id = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -11434,6 +11636,7 @@
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11442,7 +11645,9 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getRating(arg_id, onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+          .getRating(arg_id,
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.VideoGetRatingResponse response) {
         checkVideoGetRatingResponse(response);
       })));
@@ -11461,6 +11666,7 @@
       var arg_onBehalfOfContentOwner = "foo";
       var arg_onBehalfOfContentOwnerChannel = "foo";
       var arg_stabilize = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Video.fromJson(json);
         checkVideo(obj);
@@ -11508,6 +11714,7 @@
             unittest.equals(arg_onBehalfOfContentOwnerChannel));
         unittest.expect(
             queryMap["stabilize"].first, unittest.equals("$arg_stabilize"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11521,7 +11728,8 @@
               notifySubscribers: arg_notifySubscribers,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
               onBehalfOfContentOwnerChannel: arg_onBehalfOfContentOwnerChannel,
-              stabilize: arg_stabilize)
+              stabilize: arg_stabilize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Video response) {
         checkVideo(response);
       })));
@@ -11543,6 +11751,7 @@
       var arg_pageToken = "foo";
       var arg_regionCode = "foo";
       var arg_videoCategoryId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -11597,6 +11806,7 @@
             queryMap["regionCode"].first, unittest.equals(arg_regionCode));
         unittest.expect(queryMap["videoCategoryId"].first,
             unittest.equals(arg_videoCategoryId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11617,7 +11827,8 @@
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
               pageToken: arg_pageToken,
               regionCode: arg_regionCode,
-              videoCategoryId: arg_videoCategoryId)
+              videoCategoryId: arg_videoCategoryId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.VideoListResponse response) {
         checkVideoListResponse(response);
       })));
@@ -11628,6 +11839,7 @@
       api.VideosResourceApi res = new api.YoutubeApi(mock).videos;
       var arg_id = "foo";
       var arg_rating = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -11663,6 +11875,7 @@
         }
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
         unittest.expect(queryMap["rating"].first, unittest.equals(arg_rating));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11670,7 +11883,9 @@
         var resp = "";
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.rate(arg_id, arg_rating).then(unittest.expectAsync1((_) {}));
+      res
+          .rate(arg_id, arg_rating, $fields: arg_$fields)
+          .then(unittest.expectAsync1((_) {}));
     });
 
     unittest.test("method--reportAbuse", () {
@@ -11678,6 +11893,7 @@
       api.VideosResourceApi res = new api.YoutubeApi(mock).videos;
       var arg_request = buildVideoAbuseReport();
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.VideoAbuseReport.fromJson(json);
         checkVideoAbuseReport(obj);
@@ -11716,6 +11932,7 @@
         }
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11725,7 +11942,8 @@
       }), true);
       res
           .reportAbuse(arg_request,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -11735,6 +11953,7 @@
       var arg_request = buildVideo();
       var arg_part = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Video.fromJson(json);
         checkVideo(obj);
@@ -11774,6 +11993,7 @@
         unittest.expect(queryMap["part"].first, unittest.equals(arg_part));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11783,7 +12003,8 @@
       }), true);
       res
           .update(arg_request, arg_part,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Video response) {
         checkVideo(response);
       })));
@@ -11800,6 +12021,7 @@
       var arg_request = buildInvideoBranding();
       var arg_channelId = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InvideoBranding.fromJson(json);
         checkInvideoBranding(obj);
@@ -11840,6 +12062,7 @@
             queryMap["channelId"].first, unittest.equals(arg_channelId));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11849,7 +12072,8 @@
       }), true);
       res
           .set(arg_request, arg_channelId,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -11858,6 +12082,7 @@
       api.WatermarksResourceApi res = new api.YoutubeApi(mock).watermarks;
       var arg_channelId = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -11895,6 +12120,7 @@
             queryMap["channelId"].first, unittest.equals(arg_channelId));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -11904,7 +12130,8 @@
       }), true);
       res
           .unset(arg_channelId,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
   });
diff --git a/generated/googleapis/test/youtubeanalytics/v1_test.dart b/generated/googleapis/test/youtubeanalytics/v1_test.dart
index fdf5cc3..27b4d0c 100644
--- a/generated/googleapis/test/youtubeanalytics/v1_test.dart
+++ b/generated/googleapis/test/youtubeanalytics/v1_test.dart
@@ -168,14 +168,14 @@
   buildCounterGroupItem--;
 }
 
-buildUnnamed270() {
+buildUnnamed254() {
   var o = new core.List<api.GroupItem>();
   o.add(buildGroupItem());
   o.add(buildGroupItem());
   return o;
 }
 
-checkUnnamed270(core.List<api.GroupItem> o) {
+checkUnnamed254(core.List<api.GroupItem> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGroupItem(o[0]);
   checkGroupItem(o[1]);
@@ -187,7 +187,7 @@
   buildCounterGroupItemListResponse++;
   if (buildCounterGroupItemListResponse < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed270();
+    o.items = buildUnnamed254();
     o.kind = "foo";
   }
   buildCounterGroupItemListResponse--;
@@ -198,20 +198,20 @@
   buildCounterGroupItemListResponse++;
   if (buildCounterGroupItemListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed270(o.items);
+    checkUnnamed254(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterGroupItemListResponse--;
 }
 
-buildUnnamed271() {
+buildUnnamed255() {
   var o = new core.List<api.Group>();
   o.add(buildGroup());
   o.add(buildGroup());
   return o;
 }
 
-checkUnnamed271(core.List<api.Group> o) {
+checkUnnamed255(core.List<api.Group> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGroup(o[0]);
   checkGroup(o[1]);
@@ -223,7 +223,7 @@
   buildCounterGroupListResponse++;
   if (buildCounterGroupListResponse < 3) {
     o.etag = "foo";
-    o.items = buildUnnamed271();
+    o.items = buildUnnamed255();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -235,7 +235,7 @@
   buildCounterGroupListResponse++;
   if (buildCounterGroupListResponse < 3) {
     unittest.expect(o.etag, unittest.equals('foo'));
-    checkUnnamed271(o.items);
+    checkUnnamed255(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -265,20 +265,20 @@
   buildCounterResultTableColumnHeaders--;
 }
 
-buildUnnamed272() {
+buildUnnamed256() {
   var o = new core.List<api.ResultTableColumnHeaders>();
   o.add(buildResultTableColumnHeaders());
   o.add(buildResultTableColumnHeaders());
   return o;
 }
 
-checkUnnamed272(core.List<api.ResultTableColumnHeaders> o) {
+checkUnnamed256(core.List<api.ResultTableColumnHeaders> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResultTableColumnHeaders(o[0]);
   checkResultTableColumnHeaders(o[1]);
 }
 
-buildUnnamed273() {
+buildUnnamed257() {
   var o = new core.List<core.Object>();
   o.add({
     'list': [1, 2, 3],
@@ -293,7 +293,7 @@
   return o;
 }
 
-checkUnnamed273(core.List<core.Object> o) {
+checkUnnamed257(core.List<core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o[0]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -307,17 +307,17 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed274() {
+buildUnnamed258() {
   var o = new core.List<core.List<core.Object>>();
-  o.add(buildUnnamed273());
-  o.add(buildUnnamed273());
+  o.add(buildUnnamed257());
+  o.add(buildUnnamed257());
   return o;
 }
 
-checkUnnamed274(core.List<core.List<core.Object>> o) {
+checkUnnamed258(core.List<core.List<core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed273(o[0]);
-  checkUnnamed273(o[1]);
+  checkUnnamed257(o[0]);
+  checkUnnamed257(o[1]);
 }
 
 core.int buildCounterResultTable = 0;
@@ -325,9 +325,9 @@
   var o = new api.ResultTable();
   buildCounterResultTable++;
   if (buildCounterResultTable < 3) {
-    o.columnHeaders = buildUnnamed272();
+    o.columnHeaders = buildUnnamed256();
     o.kind = "foo";
-    o.rows = buildUnnamed274();
+    o.rows = buildUnnamed258();
   }
   buildCounterResultTable--;
   return o;
@@ -336,9 +336,9 @@
 checkResultTable(api.ResultTable o) {
   buildCounterResultTable++;
   if (buildCounterResultTable < 3) {
-    checkUnnamed272(o.columnHeaders);
+    checkUnnamed256(o.columnHeaders);
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed274(o.rows);
+    checkUnnamed258(o.rows);
   }
   buildCounterResultTable--;
 }
@@ -423,6 +423,7 @@
           new api.YoutubeAnalyticsApi(mock).groupItems;
       var arg_id = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -459,6 +460,7 @@
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -467,7 +469,9 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_id, onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+          .delete(arg_id,
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -477,6 +481,7 @@
           new api.YoutubeAnalyticsApi(mock).groupItems;
       var arg_request = buildGroupItem();
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GroupItem.fromJson(json);
         checkGroupItem(obj);
@@ -515,6 +520,7 @@
         }
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -524,7 +530,8 @@
       }), true);
       res
           .insert(arg_request,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GroupItem response) {
         checkGroupItem(response);
       })));
@@ -536,6 +543,7 @@
           new api.YoutubeAnalyticsApi(mock).groupItems;
       var arg_groupId = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -573,6 +581,7 @@
             queryMap["groupId"].first, unittest.equals(arg_groupId));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -581,7 +590,9 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_groupId, onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+          .list(arg_groupId,
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GroupItemListResponse response) {
         checkGroupItemListResponse(response);
       })));
@@ -594,6 +605,7 @@
       api.GroupsResourceApi res = new api.YoutubeAnalyticsApi(mock).groups;
       var arg_id = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -630,6 +642,7 @@
         unittest.expect(queryMap["id"].first, unittest.equals(arg_id));
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -638,7 +651,9 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_id, onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+          .delete(arg_id,
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -647,6 +662,7 @@
       api.GroupsResourceApi res = new api.YoutubeAnalyticsApi(mock).groups;
       var arg_request = buildGroup();
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Group.fromJson(json);
         checkGroup(obj);
@@ -685,6 +701,7 @@
         }
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -694,7 +711,8 @@
       }), true);
       res
           .insert(arg_request,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Group response) {
         checkGroup(response);
       })));
@@ -707,6 +725,7 @@
       var arg_mine = true;
       var arg_onBehalfOfContentOwner = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -746,6 +765,7 @@
             unittest.equals(arg_onBehalfOfContentOwner));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -758,7 +778,8 @@
               id: arg_id,
               mine: arg_mine,
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GroupListResponse response) {
         checkGroupListResponse(response);
       })));
@@ -769,6 +790,7 @@
       api.GroupsResourceApi res = new api.YoutubeAnalyticsApi(mock).groups;
       var arg_request = buildGroup();
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Group.fromJson(json);
         checkGroup(obj);
@@ -807,6 +829,7 @@
         }
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -816,7 +839,8 @@
       }), true);
       res
           .update(arg_request,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Group response) {
         checkGroup(response);
       })));
@@ -838,6 +862,7 @@
       var arg_max_results = 42;
       var arg_sort = "foo";
       var arg_start_index = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -891,6 +916,7 @@
         unittest.expect(queryMap["sort"].first, unittest.equals(arg_sort));
         unittest.expect(core.int.parse(queryMap["start-index"].first),
             unittest.equals(arg_start_index));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -907,7 +933,8 @@
                   arg_include_historical_channel_data,
               max_results: arg_max_results,
               sort: arg_sort,
-              start_index: arg_start_index)
+              start_index: arg_start_index,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ResultTable response) {
         checkResultTable(response);
       })));
diff --git a/generated/googleapis/test/youtubereporting/v1_test.dart b/generated/googleapis/test/youtubereporting/v1_test.dart
index fdc2ebe..09f51dd 100644
--- a/generated/googleapis/test/youtubereporting/v1_test.dart
+++ b/generated/googleapis/test/youtubereporting/v1_test.dart
@@ -94,14 +94,14 @@
   buildCounterJob--;
 }
 
-buildUnnamed1125() {
+buildUnnamed1112() {
   var o = new core.List<api.Job>();
   o.add(buildJob());
   o.add(buildJob());
   return o;
 }
 
-checkUnnamed1125(core.List<api.Job> o) {
+checkUnnamed1112(core.List<api.Job> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJob(o[0]);
   checkJob(o[1]);
@@ -112,7 +112,7 @@
   var o = new api.ListJobsResponse();
   buildCounterListJobsResponse++;
   if (buildCounterListJobsResponse < 3) {
-    o.jobs = buildUnnamed1125();
+    o.jobs = buildUnnamed1112();
     o.nextPageToken = "foo";
   }
   buildCounterListJobsResponse--;
@@ -122,20 +122,20 @@
 checkListJobsResponse(api.ListJobsResponse o) {
   buildCounterListJobsResponse++;
   if (buildCounterListJobsResponse < 3) {
-    checkUnnamed1125(o.jobs);
+    checkUnnamed1112(o.jobs);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListJobsResponse--;
 }
 
-buildUnnamed1126() {
+buildUnnamed1113() {
   var o = new core.List<api.ReportType>();
   o.add(buildReportType());
   o.add(buildReportType());
   return o;
 }
 
-checkUnnamed1126(core.List<api.ReportType> o) {
+checkUnnamed1113(core.List<api.ReportType> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReportType(o[0]);
   checkReportType(o[1]);
@@ -147,7 +147,7 @@
   buildCounterListReportTypesResponse++;
   if (buildCounterListReportTypesResponse < 3) {
     o.nextPageToken = "foo";
-    o.reportTypes = buildUnnamed1126();
+    o.reportTypes = buildUnnamed1113();
   }
   buildCounterListReportTypesResponse--;
   return o;
@@ -157,19 +157,19 @@
   buildCounterListReportTypesResponse++;
   if (buildCounterListReportTypesResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1126(o.reportTypes);
+    checkUnnamed1113(o.reportTypes);
   }
   buildCounterListReportTypesResponse--;
 }
 
-buildUnnamed1127() {
+buildUnnamed1114() {
   var o = new core.List<api.Report>();
   o.add(buildReport());
   o.add(buildReport());
   return o;
 }
 
-checkUnnamed1127(core.List<api.Report> o) {
+checkUnnamed1114(core.List<api.Report> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReport(o[0]);
   checkReport(o[1]);
@@ -181,7 +181,7 @@
   buildCounterListReportsResponse++;
   if (buildCounterListReportsResponse < 3) {
     o.nextPageToken = "foo";
-    o.reports = buildUnnamed1127();
+    o.reports = buildUnnamed1114();
   }
   buildCounterListReportsResponse--;
   return o;
@@ -191,7 +191,7 @@
   buildCounterListReportsResponse++;
   if (buildCounterListReportsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed1127(o.reports);
+    checkUnnamed1114(o.reports);
   }
   buildCounterListReportsResponse--;
 }
@@ -342,6 +342,7 @@
       api.JobsResourceApi res = new api.YoutubereportingApi(mock).jobs;
       var arg_request = buildJob();
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Job.fromJson(json);
         checkJob(obj);
@@ -377,6 +378,7 @@
         }
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -386,7 +388,8 @@
       }), true);
       res
           .create(arg_request,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Job response) {
         checkJob(response);
       })));
@@ -397,6 +400,7 @@
       api.JobsResourceApi res = new api.YoutubereportingApi(mock).jobs;
       var arg_jobId = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -432,6 +436,7 @@
         }
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -440,7 +445,9 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_jobId, onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+          .delete(arg_jobId,
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -451,6 +458,7 @@
       api.JobsResourceApi res = new api.YoutubereportingApi(mock).jobs;
       var arg_jobId = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -486,6 +494,7 @@
         }
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -494,7 +503,9 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_jobId, onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+          .get(arg_jobId,
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Job response) {
         checkJob(response);
       })));
@@ -503,10 +514,11 @@
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
       api.JobsResourceApi res = new api.YoutubereportingApi(mock).jobs;
+      var arg_onBehalfOfContentOwner = "foo";
       var arg_includeSystemManaged = true;
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
-      var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -537,14 +549,15 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["onBehalfOfContentOwner"].first,
+            unittest.equals(arg_onBehalfOfContentOwner));
         unittest.expect(queryMap["includeSystemManaged"].first,
             unittest.equals("$arg_includeSystemManaged"));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
-        unittest.expect(queryMap["onBehalfOfContentOwner"].first,
-            unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -554,10 +567,11 @@
       }), true);
       res
           .list(
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
               includeSystemManaged: arg_includeSystemManaged,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListJobsResponse response) {
         checkListJobsResponse(response);
       })));
@@ -572,6 +586,7 @@
       var arg_jobId = "foo";
       var arg_reportId = "foo";
       var arg_onBehalfOfContentOwner = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -616,6 +631,7 @@
         }
         unittest.expect(queryMap["onBehalfOfContentOwner"].first,
             unittest.equals(arg_onBehalfOfContentOwner));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -625,7 +641,8 @@
       }), true);
       res
           .get(arg_jobId, arg_reportId,
-              onBehalfOfContentOwner: arg_onBehalfOfContentOwner)
+              onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Report response) {
         checkReport(response);
       })));
@@ -642,6 +659,7 @@
       var arg_startTimeAtOrAfter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -693,6 +711,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -707,7 +726,8 @@
               createdAfter: arg_createdAfter,
               startTimeAtOrAfter: arg_startTimeAtOrAfter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListReportsResponse response) {
         checkListReportsResponse(response);
       })));
@@ -722,6 +742,7 @@
       var mock = new HttpServerMock();
       api.MediaResourceApi res = new api.YoutubereportingApi(mock).media;
       var arg_resourceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -753,6 +774,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -761,7 +783,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .download(arg_resourceName)
+          .download(arg_resourceName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Media response) {
         checkMedia(response);
       })));
@@ -777,6 +799,7 @@
       var arg_includeSystemManaged = true;
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -815,6 +838,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -827,7 +851,8 @@
               onBehalfOfContentOwner: arg_onBehalfOfContentOwner,
               includeSystemManaged: arg_includeSystemManaged,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListReportTypesResponse response) {
         checkListReportTypesResponse(response);
       })));
diff --git a/generated/googleapis_beta/CHANGELOG.md b/generated/googleapis_beta/CHANGELOG.md
index 00d6e69..34a99e2 100644
--- a/generated/googleapis_beta/CHANGELOG.md
+++ b/generated/googleapis_beta/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 0.40.1
+
+* [api] sqladmin:v1beta4
+* [api] dlp:v2beta1
+* [api] toolresults:v1beta3
+
 ## 0.40.0
 
 * [api-new] cloudtasks:v2beta2
diff --git a/generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart b/generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart
index 55af34b..43c529e 100644
--- a/generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart
+++ b/generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart
@@ -25,6 +25,7 @@
   final commons.ApiRequester _requester;
 
   AccountsResourceApi get accounts => new AccountsResourceApi(_requester);
+  BiddersResourceApi get bidders => new BiddersResourceApi(_requester);
 
   Adexchangebuyer2Api(http.Client client,
       {core.String rootUrl: "https://adexchangebuyer.googleapis.com/",
@@ -40,8 +41,6 @@
       new AccountsClientsResourceApi(_requester);
   AccountsCreativesResourceApi get creatives =>
       new AccountsCreativesResourceApi(_requester);
-  AccountsFilterSetsResourceApi get filterSets =>
-      new AccountsFilterSetsResourceApi(_requester);
 
   AccountsResourceApi(commons.ApiRequester client) : _requester = client;
 }
@@ -66,6 +65,9 @@
   /// client buyer
   /// is a customer; the sponsor buyer to create a client for. (required)
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Client].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -73,7 +75,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Client> create(Client request, core.String accountId) {
+  async.Future<Client> create(Client request, core.String accountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -87,6 +90,9 @@
     if (accountId == null) {
       throw new core.ArgumentError("Parameter accountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -111,6 +117,9 @@
   /// [clientAccountId] - Numerical account ID of the client buyer to retrieve.
   /// (required)
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Client].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -118,7 +127,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Client> get(core.String accountId, core.String clientAccountId) {
+  async.Future<Client> get(core.String accountId, core.String clientAccountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -132,6 +142,9 @@
     if (clientAccountId == null) {
       throw new core.ArgumentError("Parameter clientAccountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -165,6 +178,9 @@
   /// requested.
   /// If unspecified, the server will pick an appropriate default.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListClientsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -173,7 +189,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListClientsResponse> list(core.String accountId,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -190,6 +206,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -217,6 +236,9 @@
   /// [clientAccountId] - Unique numerical account ID of the client to update.
   /// (required)
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Client].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -225,7 +247,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Client> update(
-      Client request, core.String accountId, core.String clientAccountId) {
+      Client request, core.String accountId, core.String clientAccountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -242,6 +265,9 @@
     if (clientAccountId == null) {
       throw new core.ArgumentError("Parameter clientAccountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -277,6 +303,9 @@
   /// [clientAccountId] - Numerical account ID of the client buyer that the user
   /// should be associated with. (required)
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ClientUserInvitation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -285,7 +314,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ClientUserInvitation> create(ClientUserInvitation request,
-      core.String accountId, core.String clientAccountId) {
+      core.String accountId, core.String clientAccountId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -302,6 +332,9 @@
     if (clientAccountId == null) {
       throw new core.ArgumentError("Parameter clientAccountId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -332,6 +365,9 @@
   /// [invitationId] - Numerical identifier of the user invitation to retrieve.
   /// (required)
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ClientUserInvitation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -340,7 +376,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ClientUserInvitation> get(core.String accountId,
-      core.String clientAccountId, core.String invitationId) {
+      core.String clientAccountId, core.String invitationId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -357,6 +394,9 @@
     if (invitationId == null) {
       throw new core.ArgumentError("Parameter invitationId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -402,6 +442,9 @@
   /// requested.
   /// If unspecified, server will pick an appropriate default.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListClientUserInvitationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -411,7 +454,7 @@
   /// this method will complete with the same error.
   async.Future<ListClientUserInvitationsResponse> list(
       core.String accountId, core.String clientAccountId,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -431,6 +474,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -467,6 +513,9 @@
   ///
   /// [userId] - Numerical identifier of the user to retrieve. (required)
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ClientUser].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -475,7 +524,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ClientUser> get(
-      core.String accountId, core.String clientAccountId, core.String userId) {
+      core.String accountId, core.String clientAccountId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -492,6 +542,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -536,6 +589,9 @@
   /// requested.
   /// If unspecified, the server will pick an appropriate default.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListClientUsersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -545,7 +601,7 @@
   /// this method will complete with the same error.
   async.Future<ListClientUsersResponse> list(
       core.String accountId, core.String clientAccountId,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -565,6 +621,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -597,6 +656,9 @@
   ///
   /// [userId] - Numerical identifier of the user to retrieve. (required)
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ClientUser].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -605,7 +667,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ClientUser> update(ClientUser request, core.String accountId,
-      core.String clientAccountId, core.String userId) {
+      core.String clientAccountId, core.String userId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -625,6 +688,9 @@
     if (userId == null) {
       throw new core.ArgumentError("Parameter userId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -670,6 +736,9 @@
   /// - "NO_DUPLICATES" : A NO_DUPLICATES.
   /// - "FORCE_ENABLE_DUPLICATE_IDS" : A FORCE_ENABLE_DUPLICATE_IDS.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Creative].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -678,7 +747,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Creative> create(Creative request, core.String accountId,
-      {core.String duplicateIdMode}) {
+      {core.String duplicateIdMode, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -695,6 +764,9 @@
     if (duplicateIdMode != null) {
       _queryParams["duplicateIdMode"] = [duplicateIdMode];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -717,6 +789,9 @@
   ///
   /// [creativeId] - The ID of the creative to retrieve.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Creative].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -724,7 +799,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Creative> get(core.String accountId, core.String creativeId) {
+  async.Future<Creative> get(core.String accountId, core.String creativeId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -738,6 +814,9 @@
     if (creativeId == null) {
       throw new core.ArgumentError("Parameter creativeId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -790,6 +869,9 @@
   /// Example: 'accountId=12345 AND (dealsStatus:disapproved AND
   /// disapprovalReason:unacceptable_content) OR attribute:47'
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListCreativesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -798,7 +880,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListCreativesResponse> list(core.String accountId,
-      {core.String pageToken, core.int pageSize, core.String query}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String query,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -818,6 +903,9 @@
     if (query != null) {
       _queryParams["query"] = [query];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -844,6 +932,9 @@
   /// [creativeId] - The creative ID of the creative to stop notifications for.
   /// Specify "-" to specify stopping account level notifications.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -852,7 +943,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> stopWatching(StopWatchingCreativeRequest request,
-      core.String accountId, core.String creativeId) {
+      core.String accountId, core.String creativeId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -869,6 +961,9 @@
     if (creativeId == null) {
       throw new core.ArgumentError("Parameter creativeId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -901,6 +996,9 @@
   /// creatives.list
   /// method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Creative].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -909,7 +1007,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Creative> update(
-      Creative request, core.String accountId, core.String creativeId) {
+      Creative request, core.String accountId, core.String creativeId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -926,6 +1025,9 @@
     if (creativeId == null) {
       throw new core.ArgumentError("Parameter creativeId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -956,6 +1058,9 @@
   /// sent, only a single notification will be sent to the
   /// creative-level notification topic.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -964,7 +1069,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> watch(WatchCreativeRequest request, core.String accountId,
-      core.String creativeId) {
+      core.String creativeId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -981,6 +1087,9 @@
     if (creativeId == null) {
       throw new core.ArgumentError("Parameter creativeId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1014,6 +1123,9 @@
   ///
   /// [creativeId] - The ID of the creative associated with the deal.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1022,7 +1134,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> add(AddDealAssociationRequest request,
-      core.String accountId, core.String creativeId) {
+      core.String accountId, core.String creativeId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1039,6 +1152,9 @@
     if (creativeId == null) {
       throw new core.ArgumentError("Parameter creativeId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1090,6 +1206,9 @@
   /// </ul>
   /// Example: 'dealsId=12345 AND dealsStatus:disapproved'
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListDealAssociationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1099,7 +1218,10 @@
   /// this method will complete with the same error.
   async.Future<ListDealAssociationsResponse> list(
       core.String accountId, core.String creativeId,
-      {core.String pageToken, core.int pageSize, core.String query}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String query,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1122,6 +1244,9 @@
     if (query != null) {
       _queryParams["query"] = [query];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1149,6 +1274,9 @@
   ///
   /// [creativeId] - The ID of the creative associated with the deal.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1157,7 +1285,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> remove(RemoveDealAssociationRequest request,
-      core.String accountId, core.String creativeId) {
+      core.String accountId, core.String creativeId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1174,6 +1303,9 @@
     if (creativeId == null) {
       throw new core.ArgumentError("Parameter creativeId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/accounts/' +
         commons.Escaper.ecapeVariable('$accountId') +
@@ -1191,29 +1323,53 @@
   }
 }
 
-class AccountsFilterSetsResourceApi {
+class BiddersResourceApi {
   final commons.ApiRequester _requester;
 
-  AccountsFilterSetsBidMetricsResourceApi get bidMetrics =>
-      new AccountsFilterSetsBidMetricsResourceApi(_requester);
-  AccountsFilterSetsBidResponseErrorsResourceApi get bidResponseErrors =>
-      new AccountsFilterSetsBidResponseErrorsResourceApi(_requester);
-  AccountsFilterSetsBidResponsesWithoutBidsResourceApi
-      get bidResponsesWithoutBids =>
-          new AccountsFilterSetsBidResponsesWithoutBidsResourceApi(_requester);
-  AccountsFilterSetsFilteredBidRequestsResourceApi get filteredBidRequests =>
-      new AccountsFilterSetsFilteredBidRequestsResourceApi(_requester);
-  AccountsFilterSetsFilteredBidsResourceApi get filteredBids =>
-      new AccountsFilterSetsFilteredBidsResourceApi(_requester);
-  AccountsFilterSetsImpressionMetricsResourceApi get impressionMetrics =>
-      new AccountsFilterSetsImpressionMetricsResourceApi(_requester);
-  AccountsFilterSetsLosingBidsResourceApi get losingBids =>
-      new AccountsFilterSetsLosingBidsResourceApi(_requester);
-  AccountsFilterSetsNonBillableWinningBidsResourceApi
-      get nonBillableWinningBids =>
-          new AccountsFilterSetsNonBillableWinningBidsResourceApi(_requester);
+  BiddersAccountsResourceApi get accounts =>
+      new BiddersAccountsResourceApi(_requester);
+  BiddersFilterSetsResourceApi get filterSets =>
+      new BiddersFilterSetsResourceApi(_requester);
 
-  AccountsFilterSetsResourceApi(commons.ApiRequester client)
+  BiddersResourceApi(commons.ApiRequester client) : _requester = client;
+}
+
+class BiddersAccountsResourceApi {
+  final commons.ApiRequester _requester;
+
+  BiddersAccountsFilterSetsResourceApi get filterSets =>
+      new BiddersAccountsFilterSetsResourceApi(_requester);
+
+  BiddersAccountsResourceApi(commons.ApiRequester client) : _requester = client;
+}
+
+class BiddersAccountsFilterSetsResourceApi {
+  final commons.ApiRequester _requester;
+
+  BiddersAccountsFilterSetsBidMetricsResourceApi get bidMetrics =>
+      new BiddersAccountsFilterSetsBidMetricsResourceApi(_requester);
+  BiddersAccountsFilterSetsBidResponseErrorsResourceApi get bidResponseErrors =>
+      new BiddersAccountsFilterSetsBidResponseErrorsResourceApi(_requester);
+  BiddersAccountsFilterSetsBidResponsesWithoutBidsResourceApi
+      get bidResponsesWithoutBids =>
+          new BiddersAccountsFilterSetsBidResponsesWithoutBidsResourceApi(
+              _requester);
+  BiddersAccountsFilterSetsFilteredBidRequestsResourceApi
+      get filteredBidRequests =>
+          new BiddersAccountsFilterSetsFilteredBidRequestsResourceApi(
+              _requester);
+  BiddersAccountsFilterSetsFilteredBidsResourceApi get filteredBids =>
+      new BiddersAccountsFilterSetsFilteredBidsResourceApi(_requester);
+  BiddersAccountsFilterSetsImpressionMetricsResourceApi get impressionMetrics =>
+      new BiddersAccountsFilterSetsImpressionMetricsResourceApi(_requester);
+  BiddersAccountsFilterSetsLosingBidsResourceApi get losingBids =>
+      new BiddersAccountsFilterSetsLosingBidsResourceApi(_requester);
+  BiddersAccountsFilterSetsNonBillableWinningBidsResourceApi
+      get nonBillableWinningBids =>
+          new BiddersAccountsFilterSetsNonBillableWinningBidsResourceApi(
+              _requester);
+
+  BiddersAccountsFilterSetsResourceApi(commons.ApiRequester client)
       : _requester = client;
 
   /// Creates the specified filter set for the account with the given account
@@ -1223,13 +1379,27 @@
   ///
   /// Request parameters:
   ///
-  /// [accountId] - Account ID of the buyer.
+  /// [ownerName] - Name of the owner (bidder or account) of the filter set to
+  /// be created.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123: "bidders/123"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456"
+  /// Value must have pattern "^bidders/[^/]+/accounts/[^/]+$".
   ///
   /// [isTransient] - Whether the filter set is transient, or should be
   /// persisted indefinitely.
   /// By default, filter sets are not transient.
   /// If transient, it will be available for at least 1 hour after creation.
   ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FilterSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1237,8 +1407,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<FilterSet> create(FilterSet request, core.String accountId,
-      {core.bool isTransient}) {
+  async.Future<FilterSet> create(FilterSet request, core.String ownerName,
+      {core.bool isTransient, core.String accountId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1249,15 +1419,21 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
-    if (accountId == null) {
-      throw new core.ArgumentError("Parameter accountId is required.");
+    if (ownerName == null) {
+      throw new core.ArgumentError("Parameter ownerName is required.");
     }
     if (isTransient != null) {
       _queryParams["isTransient"] = ["${isTransient}"];
     }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
-    _url = 'v2beta1/accounts/' +
-        commons.Escaper.ecapeVariable('$accountId') +
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$ownerName') +
         '/filterSets';
 
     var _response = _requester.request(_url, "POST",
@@ -1274,10 +1450,24 @@
   ///
   /// Request parameters:
   ///
+  /// [name] - Full name of the resource to delete.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$".
+  ///
   /// [accountId] - Account ID of the buyer.
   ///
   /// [filterSetId] - The ID of the filter set to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1285,7 +1475,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String accountId, core.String filterSetId) {
+  async.Future<Empty> delete(core.String name,
+      {core.String accountId, core.String filterSetId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1293,17 +1484,20 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (accountId == null) {
-      throw new core.ArgumentError("Parameter accountId is required.");
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
     }
-    if (filterSetId == null) {
-      throw new core.ArgumentError("Parameter filterSetId is required.");
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
-    _url = 'v2beta1/accounts/' +
-        commons.Escaper.ecapeVariable('$accountId') +
-        '/filterSets/' +
-        commons.Escaper.ecapeVariable('$filterSetId');
+    _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
     var _response = _requester.request(_url, "DELETE",
         body: _body,
@@ -1319,10 +1513,24 @@
   ///
   /// Request parameters:
   ///
+  /// [name] - Full name of the resource being requested.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$".
+  ///
   /// [accountId] - Account ID of the buyer.
   ///
   /// [filterSetId] - The ID of the filter set to get.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FilterSet].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1330,7 +1538,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<FilterSet> get(core.String accountId, core.String filterSetId) {
+  async.Future<FilterSet> get(core.String name,
+      {core.String accountId, core.String filterSetId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1338,17 +1547,20 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (accountId == null) {
-      throw new core.ArgumentError("Parameter accountId is required.");
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
     }
-    if (filterSetId == null) {
-      throw new core.ArgumentError("Parameter filterSetId is required.");
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
-    _url = 'v2beta1/accounts/' +
-        commons.Escaper.ecapeVariable('$accountId') +
-        '/filterSets/' +
-        commons.Escaper.ecapeVariable('$filterSetId');
+    _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
     var _response = _requester.request(_url, "GET",
         body: _body,
@@ -1363,7 +1575,16 @@
   ///
   /// Request parameters:
   ///
-  /// [accountId] - Account ID of the buyer.
+  /// [ownerName] - Name of the owner (bidder or account) of the filter sets to
+  /// be listed.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123: "bidders/123"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456"
+  /// Value must have pattern "^bidders/[^/]+/accounts/[^/]+$".
   ///
   /// [pageToken] - A token identifying a page of results the server should
   /// return.
@@ -1377,6 +1598,11 @@
   /// requested.
   /// If unspecified, the server will pick an appropriate default.
   ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListFilterSetsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1384,8 +1610,11 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListFilterSetsResponse> list(core.String accountId,
-      {core.String pageToken, core.int pageSize}) {
+  async.Future<ListFilterSetsResponse> list(core.String ownerName,
+      {core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1393,8 +1622,8 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (accountId == null) {
-      throw new core.ArgumentError("Parameter accountId is required.");
+    if (ownerName == null) {
+      throw new core.ArgumentError("Parameter ownerName is required.");
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
@@ -1402,9 +1631,15 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
-    _url = 'v2beta1/accounts/' +
-        commons.Escaper.ecapeVariable('$accountId') +
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$ownerName') +
         '/filterSets';
 
     var _response = _requester.request(_url, "GET",
@@ -1417,17 +1652,27 @@
   }
 }
 
-class AccountsFilterSetsBidMetricsResourceApi {
+class BiddersAccountsFilterSetsBidMetricsResourceApi {
   final commons.ApiRequester _requester;
 
-  AccountsFilterSetsBidMetricsResourceApi(commons.ApiRequester client)
+  BiddersAccountsFilterSetsBidMetricsResourceApi(commons.ApiRequester client)
       : _requester = client;
 
   /// Lists all metrics that are measured in terms of number of bids.
   ///
   /// Request parameters:
   ///
-  /// [accountId] - Account ID of the buyer.
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$".
   ///
   /// [filterSetId] - The ID of the filter set to apply.
   ///
@@ -1435,14 +1680,18 @@
   /// return.
   /// Typically, this is the value of
   /// ListBidMetricsResponse.nextPageToken
-  /// returned from the previous call to the
-  /// accounts.filterSets.bidMetrics.list
+  /// returned from the previous call to the bidMetrics.list
   /// method.
   ///
   /// [pageSize] - Requested page size. The server may return fewer results than
   /// requested.
   /// If unspecified, the server will pick an appropriate default.
   ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListBidMetricsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1450,9 +1699,12 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListBidMetricsResponse> list(
-      core.String accountId, core.String filterSetId,
-      {core.String pageToken, core.int pageSize}) {
+  async.Future<ListBidMetricsResponse> list(core.String filterSetName,
+      {core.String filterSetId,
+      core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1460,11 +1712,11 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (accountId == null) {
-      throw new core.ArgumentError("Parameter accountId is required.");
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
     }
-    if (filterSetId == null) {
-      throw new core.ArgumentError("Parameter filterSetId is required.");
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
@@ -1472,11 +1724,15 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
-    _url = 'v2beta1/accounts/' +
-        commons.Escaper.ecapeVariable('$accountId') +
-        '/filterSets/' +
-        commons.Escaper.ecapeVariable('$filterSetId') +
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
         '/bidMetrics';
 
     var _response = _requester.request(_url, "GET",
@@ -1489,10 +1745,11 @@
   }
 }
 
-class AccountsFilterSetsBidResponseErrorsResourceApi {
+class BiddersAccountsFilterSetsBidResponseErrorsResourceApi {
   final commons.ApiRequester _requester;
 
-  AccountsFilterSetsBidResponseErrorsResourceApi(commons.ApiRequester client)
+  BiddersAccountsFilterSetsBidResponseErrorsResourceApi(
+      commons.ApiRequester client)
       : _requester = client;
 
   /// List all errors that occurred in bid responses, with the number of bid
@@ -1500,22 +1757,36 @@
   ///
   /// Request parameters:
   ///
-  /// [accountId] - Account ID of the buyer.
-  ///
-  /// [filterSetId] - The ID of the filter set to apply.
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$".
   ///
   /// [pageToken] - A token identifying a page of results the server should
   /// return.
   /// Typically, this is the value of
   /// ListBidResponseErrorsResponse.nextPageToken
-  /// returned from the previous call to the
-  /// accounts.filterSets.bidResponseErrors.list
+  /// returned from the previous call to the bidResponseErrors.list
   /// method.
   ///
   /// [pageSize] - Requested page size. The server may return fewer results than
   /// requested.
   /// If unspecified, the server will pick an appropriate default.
   ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListBidResponseErrorsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1523,9 +1794,12 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListBidResponseErrorsResponse> list(
-      core.String accountId, core.String filterSetId,
-      {core.String pageToken, core.int pageSize}) {
+  async.Future<ListBidResponseErrorsResponse> list(core.String filterSetName,
+      {core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String filterSetId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1533,11 +1807,8 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (accountId == null) {
-      throw new core.ArgumentError("Parameter accountId is required.");
-    }
-    if (filterSetId == null) {
-      throw new core.ArgumentError("Parameter filterSetId is required.");
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
@@ -1545,11 +1816,18 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
-    _url = 'v2beta1/accounts/' +
-        commons.Escaper.ecapeVariable('$accountId') +
-        '/filterSets/' +
-        commons.Escaper.ecapeVariable('$filterSetId') +
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
         '/bidResponseErrors';
 
     var _response = _requester.request(_url, "GET",
@@ -1563,10 +1841,10 @@
   }
 }
 
-class AccountsFilterSetsBidResponsesWithoutBidsResourceApi {
+class BiddersAccountsFilterSetsBidResponsesWithoutBidsResourceApi {
   final commons.ApiRequester _requester;
 
-  AccountsFilterSetsBidResponsesWithoutBidsResourceApi(
+  BiddersAccountsFilterSetsBidResponsesWithoutBidsResourceApi(
       commons.ApiRequester client)
       : _requester = client;
 
@@ -1576,7 +1854,17 @@
   ///
   /// Request parameters:
   ///
-  /// [accountId] - Account ID of the buyer.
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$".
   ///
   /// [filterSetId] - The ID of the filter set to apply.
   ///
@@ -1584,14 +1872,18 @@
   /// return.
   /// Typically, this is the value of
   /// ListBidResponsesWithoutBidsResponse.nextPageToken
-  /// returned from the previous call to the
-  /// accounts.filterSets.bidResponsesWithoutBids.list
+  /// returned from the previous call to the bidResponsesWithoutBids.list
   /// method.
   ///
   /// [pageSize] - Requested page size. The server may return fewer results than
   /// requested.
   /// If unspecified, the server will pick an appropriate default.
   ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListBidResponsesWithoutBidsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1600,8 +1892,12 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListBidResponsesWithoutBidsResponse> list(
-      core.String accountId, core.String filterSetId,
-      {core.String pageToken, core.int pageSize}) {
+      core.String filterSetName,
+      {core.String filterSetId,
+      core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1609,11 +1905,11 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (accountId == null) {
-      throw new core.ArgumentError("Parameter accountId is required.");
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
     }
-    if (filterSetId == null) {
-      throw new core.ArgumentError("Parameter filterSetId is required.");
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
@@ -1621,11 +1917,15 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
-    _url = 'v2beta1/accounts/' +
-        commons.Escaper.ecapeVariable('$accountId') +
-        '/filterSets/' +
-        commons.Escaper.ecapeVariable('$filterSetId') +
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
         '/bidResponsesWithoutBids';
 
     var _response = _requester.request(_url, "GET",
@@ -1639,10 +1939,11 @@
   }
 }
 
-class AccountsFilterSetsFilteredBidRequestsResourceApi {
+class BiddersAccountsFilterSetsFilteredBidRequestsResourceApi {
   final commons.ApiRequester _requester;
 
-  AccountsFilterSetsFilteredBidRequestsResourceApi(commons.ApiRequester client)
+  BiddersAccountsFilterSetsFilteredBidRequestsResourceApi(
+      commons.ApiRequester client)
       : _requester = client;
 
   /// List all reasons that caused a bid request not to be sent for an
@@ -1650,22 +1951,36 @@
   ///
   /// Request parameters:
   ///
-  /// [accountId] - Account ID of the buyer.
-  ///
-  /// [filterSetId] - The ID of the filter set to apply.
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$".
   ///
   /// [pageToken] - A token identifying a page of results the server should
   /// return.
   /// Typically, this is the value of
   /// ListFilteredBidRequestsResponse.nextPageToken
-  /// returned from the previous call to the
-  /// accounts.filterSets.filteredBidRequests.list
+  /// returned from the previous call to the filteredBidRequests.list
   /// method.
   ///
   /// [pageSize] - Requested page size. The server may return fewer results than
   /// requested.
   /// If unspecified, the server will pick an appropriate default.
   ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListFilteredBidRequestsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1673,9 +1988,12 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListFilteredBidRequestsResponse> list(
-      core.String accountId, core.String filterSetId,
-      {core.String pageToken, core.int pageSize}) {
+  async.Future<ListFilteredBidRequestsResponse> list(core.String filterSetName,
+      {core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String filterSetId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1683,11 +2001,8 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (accountId == null) {
-      throw new core.ArgumentError("Parameter accountId is required.");
-    }
-    if (filterSetId == null) {
-      throw new core.ArgumentError("Parameter filterSetId is required.");
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
@@ -1695,11 +2010,18 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
-    _url = 'v2beta1/accounts/' +
-        commons.Escaper.ecapeVariable('$accountId') +
-        '/filterSets/' +
-        commons.Escaper.ecapeVariable('$filterSetId') +
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
         '/filteredBidRequests';
 
     var _response = _requester.request(_url, "GET",
@@ -1713,15 +2035,15 @@
   }
 }
 
-class AccountsFilterSetsFilteredBidsResourceApi {
+class BiddersAccountsFilterSetsFilteredBidsResourceApi {
   final commons.ApiRequester _requester;
 
-  AccountsFilterSetsFilteredBidsCreativesResourceApi get creatives =>
-      new AccountsFilterSetsFilteredBidsCreativesResourceApi(_requester);
-  AccountsFilterSetsFilteredBidsDetailsResourceApi get details =>
-      new AccountsFilterSetsFilteredBidsDetailsResourceApi(_requester);
+  BiddersAccountsFilterSetsFilteredBidsCreativesResourceApi get creatives =>
+      new BiddersAccountsFilterSetsFilteredBidsCreativesResourceApi(_requester);
+  BiddersAccountsFilterSetsFilteredBidsDetailsResourceApi get details =>
+      new BiddersAccountsFilterSetsFilteredBidsDetailsResourceApi(_requester);
 
-  AccountsFilterSetsFilteredBidsResourceApi(commons.ApiRequester client)
+  BiddersAccountsFilterSetsFilteredBidsResourceApi(commons.ApiRequester client)
       : _requester = client;
 
   /// List all reasons for which bids were filtered, with the number of bids
@@ -1729,7 +2051,17 @@
   ///
   /// Request parameters:
   ///
-  /// [accountId] - Account ID of the buyer.
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$".
   ///
   /// [filterSetId] - The ID of the filter set to apply.
   ///
@@ -1737,14 +2069,18 @@
   /// return.
   /// Typically, this is the value of
   /// ListFilteredBidsResponse.nextPageToken
-  /// returned from the previous call to the
-  /// accounts.filterSets.filteredBids.list
+  /// returned from the previous call to the filteredBids.list
   /// method.
   ///
   /// [pageSize] - Requested page size. The server may return fewer results than
   /// requested.
   /// If unspecified, the server will pick an appropriate default.
   ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListFilteredBidsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1752,9 +2088,12 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListFilteredBidsResponse> list(
-      core.String accountId, core.String filterSetId,
-      {core.String pageToken, core.int pageSize}) {
+  async.Future<ListFilteredBidsResponse> list(core.String filterSetName,
+      {core.String filterSetId,
+      core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1762,11 +2101,11 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (accountId == null) {
-      throw new core.ArgumentError("Parameter accountId is required.");
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
     }
-    if (filterSetId == null) {
-      throw new core.ArgumentError("Parameter filterSetId is required.");
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
@@ -1774,11 +2113,15 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
-    _url = 'v2beta1/accounts/' +
-        commons.Escaper.ecapeVariable('$accountId') +
-        '/filterSets/' +
-        commons.Escaper.ecapeVariable('$filterSetId') +
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
         '/filteredBids';
 
     var _response = _requester.request(_url, "GET",
@@ -1792,10 +2135,10 @@
   }
 }
 
-class AccountsFilterSetsFilteredBidsCreativesResourceApi {
+class BiddersAccountsFilterSetsFilteredBidsCreativesResourceApi {
   final commons.ApiRequester _requester;
 
-  AccountsFilterSetsFilteredBidsCreativesResourceApi(
+  BiddersAccountsFilterSetsFilteredBidsCreativesResourceApi(
       commons.ApiRequester client)
       : _requester = client;
 
@@ -1804,9 +2147,17 @@
   ///
   /// Request parameters:
   ///
-  /// [accountId] - Account ID of the buyer.
-  ///
-  /// [filterSetId] - The ID of the filter set to apply.
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$".
   ///
   /// [creativeStatusId] - The ID of the creative status for which to retrieve a
   /// breakdown by
@@ -1814,18 +2165,24 @@
   /// See
   /// [creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).
   ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
   /// [pageToken] - A token identifying a page of results the server should
   /// return.
   /// Typically, this is the value of
   /// ListCreativeStatusBreakdownByCreativeResponse.nextPageToken
-  /// returned from the previous call to the
-  /// accounts.filterSets.filteredBids.creatives.list
+  /// returned from the previous call to the filteredBids.creatives.list
   /// method.
   ///
   /// [pageSize] - Requested page size. The server may return fewer results than
   /// requested.
   /// If unspecified, the server will pick an appropriate default.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListCreativeStatusBreakdownByCreativeResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1834,8 +2191,12 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListCreativeStatusBreakdownByCreativeResponse> list(
-      core.String accountId, core.String filterSetId, core.int creativeStatusId,
-      {core.String pageToken, core.int pageSize}) {
+      core.String filterSetName, core.int creativeStatusId,
+      {core.String accountId,
+      core.String filterSetId,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1843,26 +2204,30 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (accountId == null) {
-      throw new core.ArgumentError("Parameter accountId is required.");
-    }
-    if (filterSetId == null) {
-      throw new core.ArgumentError("Parameter filterSetId is required.");
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
     }
     if (creativeStatusId == null) {
       throw new core.ArgumentError("Parameter creativeStatusId is required.");
     }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
-    _url = 'v2beta1/accounts/' +
-        commons.Escaper.ecapeVariable('$accountId') +
-        '/filterSets/' +
-        commons.Escaper.ecapeVariable('$filterSetId') +
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
         '/filteredBids/' +
         commons.Escaper.ecapeVariable('$creativeStatusId') +
         '/creatives';
@@ -1878,10 +2243,11 @@
   }
 }
 
-class AccountsFilterSetsFilteredBidsDetailsResourceApi {
+class BiddersAccountsFilterSetsFilteredBidsDetailsResourceApi {
   final commons.ApiRequester _requester;
 
-  AccountsFilterSetsFilteredBidsDetailsResourceApi(commons.ApiRequester client)
+  BiddersAccountsFilterSetsFilteredBidsDetailsResourceApi(
+      commons.ApiRequester client)
       : _requester = client;
 
   /// List all details associated with a specific reason for which bids were
@@ -1889,9 +2255,17 @@
   ///
   /// Request parameters:
   ///
-  /// [accountId] - Account ID of the buyer.
-  ///
-  /// [filterSetId] - The ID of the filter set to apply.
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$".
   ///
   /// [creativeStatusId] - The ID of the creative status for which to retrieve a
   /// breakdown by detail.
@@ -1900,18 +2274,24 @@
   /// Details are only available for statuses 10, 14, 15, 17, 18, 19, 86, and
   /// 87.
   ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
   /// [pageToken] - A token identifying a page of results the server should
   /// return.
   /// Typically, this is the value of
   /// ListCreativeStatusBreakdownByDetailResponse.nextPageToken
-  /// returned from the previous call to the
-  /// accounts.filterSets.filteredBids.details.list
+  /// returned from the previous call to the filteredBids.details.list
   /// method.
   ///
   /// [pageSize] - Requested page size. The server may return fewer results than
   /// requested.
   /// If unspecified, the server will pick an appropriate default.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListCreativeStatusBreakdownByDetailResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1920,8 +2300,12 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListCreativeStatusBreakdownByDetailResponse> list(
-      core.String accountId, core.String filterSetId, core.int creativeStatusId,
-      {core.String pageToken, core.int pageSize}) {
+      core.String filterSetName, core.int creativeStatusId,
+      {core.String accountId,
+      core.String filterSetId,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1929,26 +2313,30 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (accountId == null) {
-      throw new core.ArgumentError("Parameter accountId is required.");
-    }
-    if (filterSetId == null) {
-      throw new core.ArgumentError("Parameter filterSetId is required.");
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
     }
     if (creativeStatusId == null) {
       throw new core.ArgumentError("Parameter creativeStatusId is required.");
     }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
-    _url = 'v2beta1/accounts/' +
-        commons.Escaper.ecapeVariable('$accountId') +
-        '/filterSets/' +
-        commons.Escaper.ecapeVariable('$filterSetId') +
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
         '/filteredBids/' +
         commons.Escaper.ecapeVariable('$creativeStatusId') +
         '/details';
@@ -1964,32 +2352,47 @@
   }
 }
 
-class AccountsFilterSetsImpressionMetricsResourceApi {
+class BiddersAccountsFilterSetsImpressionMetricsResourceApi {
   final commons.ApiRequester _requester;
 
-  AccountsFilterSetsImpressionMetricsResourceApi(commons.ApiRequester client)
+  BiddersAccountsFilterSetsImpressionMetricsResourceApi(
+      commons.ApiRequester client)
       : _requester = client;
 
   /// Lists all metrics that are measured in terms of number of impressions.
   ///
   /// Request parameters:
   ///
-  /// [accountId] - Account ID of the buyer.
-  ///
-  /// [filterSetId] - The ID of the filter set to apply.
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$".
   ///
   /// [pageToken] - A token identifying a page of results the server should
   /// return.
   /// Typically, this is the value of
   /// ListImpressionMetricsResponse.nextPageToken
-  /// returned from the previous call to the
-  /// accounts.filterSets.impressionMetrics.list
+  /// returned from the previous call to the impressionMetrics.list
   /// method.
   ///
   /// [pageSize] - Requested page size. The server may return fewer results than
   /// requested.
   /// If unspecified, the server will pick an appropriate default.
   ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListImpressionMetricsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1997,9 +2400,12 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListImpressionMetricsResponse> list(
-      core.String accountId, core.String filterSetId,
-      {core.String pageToken, core.int pageSize}) {
+  async.Future<ListImpressionMetricsResponse> list(core.String filterSetName,
+      {core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String filterSetId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2007,11 +2413,8 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (accountId == null) {
-      throw new core.ArgumentError("Parameter accountId is required.");
-    }
-    if (filterSetId == null) {
-      throw new core.ArgumentError("Parameter filterSetId is required.");
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
@@ -2019,11 +2422,18 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
-    _url = 'v2beta1/accounts/' +
-        commons.Escaper.ecapeVariable('$accountId') +
-        '/filterSets/' +
-        commons.Escaper.ecapeVariable('$filterSetId') +
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
         '/impressionMetrics';
 
     var _response = _requester.request(_url, "GET",
@@ -2037,10 +2447,10 @@
   }
 }
 
-class AccountsFilterSetsLosingBidsResourceApi {
+class BiddersAccountsFilterSetsLosingBidsResourceApi {
   final commons.ApiRequester _requester;
 
-  AccountsFilterSetsLosingBidsResourceApi(commons.ApiRequester client)
+  BiddersAccountsFilterSetsLosingBidsResourceApi(commons.ApiRequester client)
       : _requester = client;
 
   /// List all reasons for which bids lost in the auction, with the number of
@@ -2048,22 +2458,36 @@
   ///
   /// Request parameters:
   ///
-  /// [accountId] - Account ID of the buyer.
-  ///
-  /// [filterSetId] - The ID of the filter set to apply.
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$".
   ///
   /// [pageToken] - A token identifying a page of results the server should
   /// return.
   /// Typically, this is the value of
   /// ListLosingBidsResponse.nextPageToken
-  /// returned from the previous call to the
-  /// accounts.filterSets.losingBids.list
+  /// returned from the previous call to the losingBids.list
   /// method.
   ///
   /// [pageSize] - Requested page size. The server may return fewer results than
   /// requested.
   /// If unspecified, the server will pick an appropriate default.
   ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLosingBidsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2071,9 +2495,12 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListLosingBidsResponse> list(
-      core.String accountId, core.String filterSetId,
-      {core.String pageToken, core.int pageSize}) {
+  async.Future<ListLosingBidsResponse> list(core.String filterSetName,
+      {core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String filterSetId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2081,11 +2508,8 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (accountId == null) {
-      throw new core.ArgumentError("Parameter accountId is required.");
-    }
-    if (filterSetId == null) {
-      throw new core.ArgumentError("Parameter filterSetId is required.");
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
@@ -2093,11 +2517,18 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
-    _url = 'v2beta1/accounts/' +
-        commons.Escaper.ecapeVariable('$accountId') +
-        '/filterSets/' +
-        commons.Escaper.ecapeVariable('$filterSetId') +
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
         '/losingBids';
 
     var _response = _requester.request(_url, "GET",
@@ -2110,10 +2541,10 @@
   }
 }
 
-class AccountsFilterSetsNonBillableWinningBidsResourceApi {
+class BiddersAccountsFilterSetsNonBillableWinningBidsResourceApi {
   final commons.ApiRequester _requester;
 
-  AccountsFilterSetsNonBillableWinningBidsResourceApi(
+  BiddersAccountsFilterSetsNonBillableWinningBidsResourceApi(
       commons.ApiRequester client)
       : _requester = client;
 
@@ -2122,22 +2553,36 @@
   ///
   /// Request parameters:
   ///
-  /// [accountId] - Account ID of the buyer.
-  ///
-  /// [filterSetId] - The ID of the filter set to apply.
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/accounts/[^/]+/filterSets/[^/]+$".
   ///
   /// [pageToken] - A token identifying a page of results the server should
   /// return.
   /// Typically, this is the value of
   /// ListNonBillableWinningBidsResponse.nextPageToken
-  /// returned from the previous call to the
-  /// accounts.filterSets.nonBillableWinningBids.list
+  /// returned from the previous call to the nonBillableWinningBids.list
   /// method.
   ///
   /// [pageSize] - Requested page size. The server may return fewer results than
   /// requested.
   /// If unspecified, the server will pick an appropriate default.
   ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListNonBillableWinningBidsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2146,8 +2591,12 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListNonBillableWinningBidsResponse> list(
-      core.String accountId, core.String filterSetId,
-      {core.String pageToken, core.int pageSize}) {
+      core.String filterSetName,
+      {core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String filterSetId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2155,11 +2604,8 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
-    if (accountId == null) {
-      throw new core.ArgumentError("Parameter accountId is required.");
-    }
-    if (filterSetId == null) {
-      throw new core.ArgumentError("Parameter filterSetId is required.");
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
@@ -2167,11 +2613,1497 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
-    _url = 'v2beta1/accounts/' +
-        commons.Escaper.ecapeVariable('$accountId') +
-        '/filterSets/' +
-        commons.Escaper.ecapeVariable('$filterSetId') +
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
+        '/nonBillableWinningBids';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new ListNonBillableWinningBidsResponse.fromJson(data));
+  }
+}
+
+class BiddersFilterSetsResourceApi {
+  final commons.ApiRequester _requester;
+
+  BiddersFilterSetsBidMetricsResourceApi get bidMetrics =>
+      new BiddersFilterSetsBidMetricsResourceApi(_requester);
+  BiddersFilterSetsBidResponseErrorsResourceApi get bidResponseErrors =>
+      new BiddersFilterSetsBidResponseErrorsResourceApi(_requester);
+  BiddersFilterSetsBidResponsesWithoutBidsResourceApi
+      get bidResponsesWithoutBids =>
+          new BiddersFilterSetsBidResponsesWithoutBidsResourceApi(_requester);
+  BiddersFilterSetsFilteredBidRequestsResourceApi get filteredBidRequests =>
+      new BiddersFilterSetsFilteredBidRequestsResourceApi(_requester);
+  BiddersFilterSetsFilteredBidsResourceApi get filteredBids =>
+      new BiddersFilterSetsFilteredBidsResourceApi(_requester);
+  BiddersFilterSetsImpressionMetricsResourceApi get impressionMetrics =>
+      new BiddersFilterSetsImpressionMetricsResourceApi(_requester);
+  BiddersFilterSetsLosingBidsResourceApi get losingBids =>
+      new BiddersFilterSetsLosingBidsResourceApi(_requester);
+  BiddersFilterSetsNonBillableWinningBidsResourceApi
+      get nonBillableWinningBids =>
+          new BiddersFilterSetsNonBillableWinningBidsResourceApi(_requester);
+
+  BiddersFilterSetsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates the specified filter set for the account with the given account
+  /// ID.
+  ///
+  /// Request parameters:
+  ///
+  /// [ownerName] - Name of the owner (bidder or account) of the filter set to
+  /// be created.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123: "bidders/123"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456"
+  /// Value must have pattern "^bidders/[^/]+$".
+  ///
+  /// [filterSet_relativeDateRange_offsetDays] - The end date of the filter set,
+  /// specified as the number of days before
+  /// today. E.g. for a range where the last date is today, 0.
+  ///
+  /// [isTransient] - Whether the filter set is transient, or should be
+  /// persisted indefinitely.
+  /// By default, filter sets are not transient.
+  /// If transient, it will be available for at least 1 hour after creation.
+  ///
+  /// [filterSet_buyerAccountId] - The ID of the buyer account on which to
+  /// filter; optional.
+  ///
+  /// [filterSet_ownerAccountId] - The account ID of the buyer who owns this
+  /// filter set.
+  /// The value of this field is ignored in create operations.
+  ///
+  /// [filterSet_absoluteDateRange_startDate_day] - Day of month. Must be from 1
+  /// to 31 and valid for the year and month, or 0
+  /// if specifying a year/month where the day is not significant.
+  ///
+  /// [filterSet_realtimeTimeRange_startTimestamp] - The start timestamp of the
+  /// real-time RTB metrics aggregation.
+  ///
+  /// [filterSet_absoluteDateRange_startDate_month] - Month of year. Must be
+  /// from 1 to 12.
+  ///
+  /// [filterSet_absoluteDateRange_endDate_day] - Day of month. Must be from 1
+  /// to 31 and valid for the year and month, or 0
+  /// if specifying a year/month where the day is not significant.
+  ///
+  /// [filterSet_absoluteDateRange_startDate_year] - Year of date. Must be from
+  /// 1 to 9999, or 0 if specifying a date without
+  /// a year.
+  ///
+  /// [filterSet_name] - A user-defined name of the filter set. Filter set names
+  /// must be unique
+  /// globally and match one of the patterns:
+  ///
+  /// - `bidders / * /filterSets / * ` (for accessing bidder-level
+  /// troubleshooting
+  /// data)
+  /// - `bidders / * /accounts / * /filterSets / * ` (for accessing buyer-level
+  /// troubleshooting data)
+  ///
+  /// [filterSet_platforms] - The list of platforms on which to filter; may be
+  /// empty. The filters
+  /// represented by multiple platforms are ORed together (i.e. if non-empty,
+  /// results must match any one of the platforms).
+  ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [filterSet_relativeDateRange_durationDays] - The number of days in the
+  /// requested date range. E.g. for a range spanning
+  /// today, 1. For a range spanning the last 7 days, 7.
+  ///
+  /// [filterSet_dealId] - The ID of the deal on which to filter; optional.
+  ///
+  /// [filterSet_absoluteDateRange_endDate_year] - Year of date. Must be from 1
+  /// to 9999, or 0 if specifying a date without
+  /// a year.
+  ///
+  /// [filterSet_environment] - The environment on which to filter; optional.
+  /// Possible string values are:
+  /// - "ENVIRONMENT_UNSPECIFIED" : A ENVIRONMENT_UNSPECIFIED.
+  /// - "WEB" : A WEB.
+  /// - "APP" : A APP.
+  ///
+  /// [filterSet_absoluteDateRange_endDate_month] - Month of year. Must be from
+  /// 1 to 12.
+  ///
+  /// [filterSet_sellerNetworkIds] - The list of IDs of the seller (publisher)
+  /// networks on which to filter;
+  /// may be empty. The filters represented by multiple seller network IDs are
+  /// ORed together (i.e. if non-empty, results must match any one of the
+  /// publisher networks).
+  /// See
+  /// [seller-network-ids](https://developers.google.com/ad-exchange/rtb/downloads/seller-network-ids)
+  /// file for the set of existing seller network IDs.
+  ///
+  /// [filterSet_filterSetId] - The ID of the filter set; unique within the
+  /// account of the filter set
+  /// owner.
+  /// The value of this field is ignored in create operations.
+  ///
+  /// [filterSet_format] - The format on which to filter; optional.
+  /// Possible string values are:
+  /// - "FORMAT_UNSPECIFIED" : A FORMAT_UNSPECIFIED.
+  /// - "DISPLAY" : A DISPLAY.
+  /// - "VIDEO" : A VIDEO.
+  ///
+  /// [filterSet_timeSeriesGranularity] - The granularity of time intervals if a
+  /// time series breakdown is desired;
+  /// optional.
+  /// Possible string values are:
+  /// - "TIME_SERIES_GRANULARITY_UNSPECIFIED" : A
+  /// TIME_SERIES_GRANULARITY_UNSPECIFIED.
+  /// - "HOURLY" : A HOURLY.
+  /// - "DAILY" : A DAILY.
+  ///
+  /// [filterSet_creativeId] - The ID of the creative on which to filter;
+  /// optional.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [FilterSet].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<FilterSet> create(core.String ownerName,
+      {core.int filterSet_relativeDateRange_offsetDays,
+      core.bool isTransient,
+      core.String filterSet_buyerAccountId,
+      core.String filterSet_ownerAccountId,
+      core.int filterSet_absoluteDateRange_startDate_day,
+      core.String filterSet_realtimeTimeRange_startTimestamp,
+      core.int filterSet_absoluteDateRange_startDate_month,
+      core.int filterSet_absoluteDateRange_endDate_day,
+      core.int filterSet_absoluteDateRange_startDate_year,
+      core.String filterSet_name,
+      core.List<core.String> filterSet_platforms,
+      core.String accountId,
+      core.int filterSet_relativeDateRange_durationDays,
+      core.String filterSet_dealId,
+      core.int filterSet_absoluteDateRange_endDate_year,
+      core.String filterSet_environment,
+      core.int filterSet_absoluteDateRange_endDate_month,
+      core.List<core.int> filterSet_sellerNetworkIds,
+      core.String filterSet_filterSetId,
+      core.String filterSet_format,
+      core.String filterSet_timeSeriesGranularity,
+      core.String filterSet_creativeId,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (ownerName == null) {
+      throw new core.ArgumentError("Parameter ownerName is required.");
+    }
+    if (filterSet_relativeDateRange_offsetDays != null) {
+      _queryParams["filterSet.relativeDateRange.offsetDays"] = [
+        "${filterSet_relativeDateRange_offsetDays}"
+      ];
+    }
+    if (isTransient != null) {
+      _queryParams["isTransient"] = ["${isTransient}"];
+    }
+    if (filterSet_buyerAccountId != null) {
+      _queryParams["filterSet.buyerAccountId"] = [filterSet_buyerAccountId];
+    }
+    if (filterSet_ownerAccountId != null) {
+      _queryParams["filterSet.ownerAccountId"] = [filterSet_ownerAccountId];
+    }
+    if (filterSet_absoluteDateRange_startDate_day != null) {
+      _queryParams["filterSet.absoluteDateRange.startDate.day"] = [
+        "${filterSet_absoluteDateRange_startDate_day}"
+      ];
+    }
+    if (filterSet_realtimeTimeRange_startTimestamp != null) {
+      _queryParams["filterSet.realtimeTimeRange.startTimestamp"] = [
+        filterSet_realtimeTimeRange_startTimestamp
+      ];
+    }
+    if (filterSet_absoluteDateRange_startDate_month != null) {
+      _queryParams["filterSet.absoluteDateRange.startDate.month"] = [
+        "${filterSet_absoluteDateRange_startDate_month}"
+      ];
+    }
+    if (filterSet_absoluteDateRange_endDate_day != null) {
+      _queryParams["filterSet.absoluteDateRange.endDate.day"] = [
+        "${filterSet_absoluteDateRange_endDate_day}"
+      ];
+    }
+    if (filterSet_absoluteDateRange_startDate_year != null) {
+      _queryParams["filterSet.absoluteDateRange.startDate.year"] = [
+        "${filterSet_absoluteDateRange_startDate_year}"
+      ];
+    }
+    if (filterSet_name != null) {
+      _queryParams["filterSet.name"] = [filterSet_name];
+    }
+    if (filterSet_platforms != null) {
+      _queryParams["filterSet.platforms"] = filterSet_platforms;
+    }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if (filterSet_relativeDateRange_durationDays != null) {
+      _queryParams["filterSet.relativeDateRange.durationDays"] = [
+        "${filterSet_relativeDateRange_durationDays}"
+      ];
+    }
+    if (filterSet_dealId != null) {
+      _queryParams["filterSet.dealId"] = [filterSet_dealId];
+    }
+    if (filterSet_absoluteDateRange_endDate_year != null) {
+      _queryParams["filterSet.absoluteDateRange.endDate.year"] = [
+        "${filterSet_absoluteDateRange_endDate_year}"
+      ];
+    }
+    if (filterSet_environment != null) {
+      _queryParams["filterSet.environment"] = [filterSet_environment];
+    }
+    if (filterSet_absoluteDateRange_endDate_month != null) {
+      _queryParams["filterSet.absoluteDateRange.endDate.month"] = [
+        "${filterSet_absoluteDateRange_endDate_month}"
+      ];
+    }
+    if (filterSet_sellerNetworkIds != null) {
+      _queryParams["filterSet.sellerNetworkIds"] =
+          filterSet_sellerNetworkIds.map((item) => "${item}").toList();
+    }
+    if (filterSet_filterSetId != null) {
+      _queryParams["filterSet.filterSetId"] = [filterSet_filterSetId];
+    }
+    if (filterSet_format != null) {
+      _queryParams["filterSet.format"] = [filterSet_format];
+    }
+    if (filterSet_timeSeriesGranularity != null) {
+      _queryParams["filterSet.timeSeriesGranularity"] = [
+        filterSet_timeSeriesGranularity
+      ];
+    }
+    if (filterSet_creativeId != null) {
+      _queryParams["filterSet.creativeId"] = [filterSet_creativeId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$ownerName') +
+        '/filterSets';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new FilterSet.fromJson(data));
+  }
+
+  /// Deletes the requested filter set from the account with the given account
+  /// ID.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Full name of the resource to delete.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/filterSets/[^/]+$".
+  ///
+  /// [filterSetId] - The ID of the filter set to delete.
+  ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(core.String name,
+      {core.String filterSetId, core.String accountId, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "DELETE",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Empty.fromJson(data));
+  }
+
+  /// Retrieves the requested filter set for the account with the given account
+  /// ID.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Full name of the resource being requested.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/filterSets/[^/]+$".
+  ///
+  /// [filterSetId] - The ID of the filter set to get.
+  ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [FilterSet].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<FilterSet> get(core.String name,
+      {core.String filterSetId, core.String accountId, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new FilterSet.fromJson(data));
+  }
+
+  /// Lists all filter sets for the account with the given account ID.
+  ///
+  /// Request parameters:
+  ///
+  /// [ownerName] - Name of the owner (bidder or account) of the filter sets to
+  /// be listed.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123: "bidders/123"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456"
+  /// Value must have pattern "^bidders/[^/]+$".
+  ///
+  /// [pageToken] - A token identifying a page of results the server should
+  /// return.
+  /// Typically, this is the value of
+  /// ListFilterSetsResponse.nextPageToken
+  /// returned from the previous call to the
+  /// accounts.filterSets.list
+  /// method.
+  ///
+  /// [pageSize] - Requested page size. The server may return fewer results than
+  /// requested.
+  /// If unspecified, the server will pick an appropriate default.
+  ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListFilterSetsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListFilterSetsResponse> list(core.String ownerName,
+      {core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (ownerName == null) {
+      throw new core.ArgumentError("Parameter ownerName is required.");
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$ownerName') +
+        '/filterSets';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new ListFilterSetsResponse.fromJson(data));
+  }
+}
+
+class BiddersFilterSetsBidMetricsResourceApi {
+  final commons.ApiRequester _requester;
+
+  BiddersFilterSetsBidMetricsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Lists all metrics that are measured in terms of number of bids.
+  ///
+  /// Request parameters:
+  ///
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/filterSets/[^/]+$".
+  ///
+  /// [pageToken] - A token identifying a page of results the server should
+  /// return.
+  /// Typically, this is the value of
+  /// ListBidMetricsResponse.nextPageToken
+  /// returned from the previous call to the bidMetrics.list
+  /// method.
+  ///
+  /// [pageSize] - Requested page size. The server may return fewer results than
+  /// requested.
+  /// If unspecified, the server will pick an appropriate default.
+  ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListBidMetricsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListBidMetricsResponse> list(core.String filterSetName,
+      {core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String filterSetId,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
+        '/bidMetrics';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new ListBidMetricsResponse.fromJson(data));
+  }
+}
+
+class BiddersFilterSetsBidResponseErrorsResourceApi {
+  final commons.ApiRequester _requester;
+
+  BiddersFilterSetsBidResponseErrorsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// List all errors that occurred in bid responses, with the number of bid
+  /// responses affected for each reason.
+  ///
+  /// Request parameters:
+  ///
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/filterSets/[^/]+$".
+  ///
+  /// [pageToken] - A token identifying a page of results the server should
+  /// return.
+  /// Typically, this is the value of
+  /// ListBidResponseErrorsResponse.nextPageToken
+  /// returned from the previous call to the bidResponseErrors.list
+  /// method.
+  ///
+  /// [pageSize] - Requested page size. The server may return fewer results than
+  /// requested.
+  /// If unspecified, the server will pick an appropriate default.
+  ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListBidResponseErrorsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListBidResponseErrorsResponse> list(core.String filterSetName,
+      {core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String filterSetId,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
+        '/bidResponseErrors';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new ListBidResponseErrorsResponse.fromJson(data));
+  }
+}
+
+class BiddersFilterSetsBidResponsesWithoutBidsResourceApi {
+  final commons.ApiRequester _requester;
+
+  BiddersFilterSetsBidResponsesWithoutBidsResourceApi(
+      commons.ApiRequester client)
+      : _requester = client;
+
+  /// List all reasons for which bid responses were considered to have no
+  /// applicable bids, with the number of bid responses affected for each
+  /// reason.
+  ///
+  /// Request parameters:
+  ///
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/filterSets/[^/]+$".
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
+  /// [pageToken] - A token identifying a page of results the server should
+  /// return.
+  /// Typically, this is the value of
+  /// ListBidResponsesWithoutBidsResponse.nextPageToken
+  /// returned from the previous call to the bidResponsesWithoutBids.list
+  /// method.
+  ///
+  /// [pageSize] - Requested page size. The server may return fewer results than
+  /// requested.
+  /// If unspecified, the server will pick an appropriate default.
+  ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListBidResponsesWithoutBidsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListBidResponsesWithoutBidsResponse> list(
+      core.String filterSetName,
+      {core.String filterSetId,
+      core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
+        '/bidResponsesWithoutBids';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new ListBidResponsesWithoutBidsResponse.fromJson(data));
+  }
+}
+
+class BiddersFilterSetsFilteredBidRequestsResourceApi {
+  final commons.ApiRequester _requester;
+
+  BiddersFilterSetsFilteredBidRequestsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// List all reasons that caused a bid request not to be sent for an
+  /// impression, with the number of bid requests not sent for each reason.
+  ///
+  /// Request parameters:
+  ///
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/filterSets/[^/]+$".
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
+  /// [pageToken] - A token identifying a page of results the server should
+  /// return.
+  /// Typically, this is the value of
+  /// ListFilteredBidRequestsResponse.nextPageToken
+  /// returned from the previous call to the filteredBidRequests.list
+  /// method.
+  ///
+  /// [pageSize] - Requested page size. The server may return fewer results than
+  /// requested.
+  /// If unspecified, the server will pick an appropriate default.
+  ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListFilteredBidRequestsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListFilteredBidRequestsResponse> list(core.String filterSetName,
+      {core.String filterSetId,
+      core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
+        '/filteredBidRequests';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new ListFilteredBidRequestsResponse.fromJson(data));
+  }
+}
+
+class BiddersFilterSetsFilteredBidsResourceApi {
+  final commons.ApiRequester _requester;
+
+  BiddersFilterSetsFilteredBidsCreativesResourceApi get creatives =>
+      new BiddersFilterSetsFilteredBidsCreativesResourceApi(_requester);
+  BiddersFilterSetsFilteredBidsDetailsResourceApi get details =>
+      new BiddersFilterSetsFilteredBidsDetailsResourceApi(_requester);
+
+  BiddersFilterSetsFilteredBidsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// List all reasons for which bids were filtered, with the number of bids
+  /// filtered for each reason.
+  ///
+  /// Request parameters:
+  ///
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/filterSets/[^/]+$".
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
+  /// [pageToken] - A token identifying a page of results the server should
+  /// return.
+  /// Typically, this is the value of
+  /// ListFilteredBidsResponse.nextPageToken
+  /// returned from the previous call to the filteredBids.list
+  /// method.
+  ///
+  /// [pageSize] - Requested page size. The server may return fewer results than
+  /// requested.
+  /// If unspecified, the server will pick an appropriate default.
+  ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListFilteredBidsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListFilteredBidsResponse> list(core.String filterSetName,
+      {core.String filterSetId,
+      core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
+        '/filteredBids';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new ListFilteredBidsResponse.fromJson(data));
+  }
+}
+
+class BiddersFilterSetsFilteredBidsCreativesResourceApi {
+  final commons.ApiRequester _requester;
+
+  BiddersFilterSetsFilteredBidsCreativesResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// List all creatives associated with a specific reason for which bids were
+  /// filtered, with the number of bids filtered for each creative.
+  ///
+  /// Request parameters:
+  ///
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/filterSets/[^/]+$".
+  ///
+  /// [creativeStatusId] - The ID of the creative status for which to retrieve a
+  /// breakdown by
+  /// creative.
+  /// See
+  /// [creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
+  /// [pageToken] - A token identifying a page of results the server should
+  /// return.
+  /// Typically, this is the value of
+  /// ListCreativeStatusBreakdownByCreativeResponse.nextPageToken
+  /// returned from the previous call to the filteredBids.creatives.list
+  /// method.
+  ///
+  /// [pageSize] - Requested page size. The server may return fewer results than
+  /// requested.
+  /// If unspecified, the server will pick an appropriate default.
+  ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListCreativeStatusBreakdownByCreativeResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListCreativeStatusBreakdownByCreativeResponse> list(
+      core.String filterSetName, core.int creativeStatusId,
+      {core.String filterSetId,
+      core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
+    }
+    if (creativeStatusId == null) {
+      throw new core.ArgumentError("Parameter creativeStatusId is required.");
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
+        '/filteredBids/' +
+        commons.Escaper.ecapeVariable('$creativeStatusId') +
+        '/creatives';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) =>
+        new ListCreativeStatusBreakdownByCreativeResponse.fromJson(data));
+  }
+}
+
+class BiddersFilterSetsFilteredBidsDetailsResourceApi {
+  final commons.ApiRequester _requester;
+
+  BiddersFilterSetsFilteredBidsDetailsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// List all details associated with a specific reason for which bids were
+  /// filtered, with the number of bids filtered for each detail.
+  ///
+  /// Request parameters:
+  ///
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/filterSets/[^/]+$".
+  ///
+  /// [creativeStatusId] - The ID of the creative status for which to retrieve a
+  /// breakdown by detail.
+  /// See
+  /// [creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).
+  /// Details are only available for statuses 10, 14, 15, 17, 18, 19, 86, and
+  /// 87.
+  ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
+  /// [pageToken] - A token identifying a page of results the server should
+  /// return.
+  /// Typically, this is the value of
+  /// ListCreativeStatusBreakdownByDetailResponse.nextPageToken
+  /// returned from the previous call to the filteredBids.details.list
+  /// method.
+  ///
+  /// [pageSize] - Requested page size. The server may return fewer results than
+  /// requested.
+  /// If unspecified, the server will pick an appropriate default.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListCreativeStatusBreakdownByDetailResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListCreativeStatusBreakdownByDetailResponse> list(
+      core.String filterSetName, core.int creativeStatusId,
+      {core.String accountId,
+      core.String filterSetId,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
+    }
+    if (creativeStatusId == null) {
+      throw new core.ArgumentError("Parameter creativeStatusId is required.");
+    }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
+        '/filteredBids/' +
+        commons.Escaper.ecapeVariable('$creativeStatusId') +
+        '/details';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) =>
+        new ListCreativeStatusBreakdownByDetailResponse.fromJson(data));
+  }
+}
+
+class BiddersFilterSetsImpressionMetricsResourceApi {
+  final commons.ApiRequester _requester;
+
+  BiddersFilterSetsImpressionMetricsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Lists all metrics that are measured in terms of number of impressions.
+  ///
+  /// Request parameters:
+  ///
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/filterSets/[^/]+$".
+  ///
+  /// [pageToken] - A token identifying a page of results the server should
+  /// return.
+  /// Typically, this is the value of
+  /// ListImpressionMetricsResponse.nextPageToken
+  /// returned from the previous call to the impressionMetrics.list
+  /// method.
+  ///
+  /// [pageSize] - Requested page size. The server may return fewer results than
+  /// requested.
+  /// If unspecified, the server will pick an appropriate default.
+  ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListImpressionMetricsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListImpressionMetricsResponse> list(core.String filterSetName,
+      {core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String filterSetId,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
+        '/impressionMetrics';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new ListImpressionMetricsResponse.fromJson(data));
+  }
+}
+
+class BiddersFilterSetsLosingBidsResourceApi {
+  final commons.ApiRequester _requester;
+
+  BiddersFilterSetsLosingBidsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// List all reasons for which bids lost in the auction, with the number of
+  /// bids that lost for each reason.
+  ///
+  /// Request parameters:
+  ///
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/filterSets/[^/]+$".
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
+  /// [pageToken] - A token identifying a page of results the server should
+  /// return.
+  /// Typically, this is the value of
+  /// ListLosingBidsResponse.nextPageToken
+  /// returned from the previous call to the losingBids.list
+  /// method.
+  ///
+  /// [pageSize] - Requested page size. The server may return fewer results than
+  /// requested.
+  /// If unspecified, the server will pick an appropriate default.
+  ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListLosingBidsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListLosingBidsResponse> list(core.String filterSetName,
+      {core.String filterSetId,
+      core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
+        '/losingBids';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new ListLosingBidsResponse.fromJson(data));
+  }
+}
+
+class BiddersFilterSetsNonBillableWinningBidsResourceApi {
+  final commons.ApiRequester _requester;
+
+  BiddersFilterSetsNonBillableWinningBidsResourceApi(
+      commons.ApiRequester client)
+      : _requester = client;
+
+  /// List all reasons for which winning bids were not billable, with the number
+  /// of bids not billed for each reason.
+  ///
+  /// Request parameters:
+  ///
+  /// [filterSetName] - Name of the filter set that should be applied to the
+  /// requested metrics.
+  /// For example:
+  /// - For a bidder-level filter set for bidder 123:
+  ///   "bidders/123/filterSets/abc"
+  /// - For an account-level filter set for the buyer account representing
+  /// bidder
+  ///   123: "bidders/123/accounts/123/filterSets/abc"
+  /// - For an account-level filter set for the child seat buyer account 456
+  ///   whose bidder is 123: "bidders/123/accounts/456/filterSets/abc"
+  /// Value must have pattern "^bidders/[^/]+/filterSets/[^/]+$".
+  ///
+  /// [filterSetId] - The ID of the filter set to apply.
+  ///
+  /// [pageToken] - A token identifying a page of results the server should
+  /// return.
+  /// Typically, this is the value of
+  /// ListNonBillableWinningBidsResponse.nextPageToken
+  /// returned from the previous call to the nonBillableWinningBids.list
+  /// method.
+  ///
+  /// [pageSize] - Requested page size. The server may return fewer results than
+  /// requested.
+  /// If unspecified, the server will pick an appropriate default.
+  ///
+  /// [accountId] - Account ID of the buyer.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListNonBillableWinningBidsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListNonBillableWinningBidsResponse> list(
+      core.String filterSetName,
+      {core.String filterSetId,
+      core.String pageToken,
+      core.int pageSize,
+      core.String accountId,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (filterSetName == null) {
+      throw new core.ArgumentError("Parameter filterSetName is required.");
+    }
+    if (filterSetId != null) {
+      _queryParams["filterSetId"] = [filterSetId];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (accountId != null) {
+      _queryParams["accountId"] = [accountId];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta1/' +
+        commons.Escaper.ecapeVariableReserved('$filterSetName') +
         '/nonBillableWinningBids';
 
     var _response = _requester.request(_url, "GET",
@@ -3505,6 +5437,16 @@
   /// - "VIDEO" : The ad impression is video format.
   core.String format;
 
+  /// A user-defined name of the filter set. Filter set names must be unique
+  /// globally and match one of the patterns:
+  ///
+  /// - `bidders / * /filterSets / * ` (for accessing bidder-level
+  /// troubleshooting
+  /// data)
+  /// - `bidders / * /accounts / * /filterSets / * ` (for accessing buyer-level
+  /// troubleshooting data)
+  core.String name;
+
   /// The account ID of the buyer who owns this filter set.
   /// The value of this field is ignored in create operations.
   core.String ownerAccountId;
@@ -3567,6 +5509,9 @@
     if (_json.containsKey("format")) {
       format = _json["format"];
     }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
     if (_json.containsKey("ownerAccountId")) {
       ownerAccountId = _json["ownerAccountId"];
     }
@@ -3613,6 +5558,9 @@
     if (format != null) {
       _json["format"] = format;
     }
+    if (name != null) {
+      _json["name"] = name;
+    }
     if (ownerAccountId != null) {
       _json["ownerAccountId"] = ownerAccountId;
     }
@@ -3927,8 +5875,7 @@
   /// A token to retrieve the next page of results.
   /// Pass this value in the
   /// ListBidMetricsRequest.pageToken
-  /// field in the subsequent call to the
-  /// accounts.filterSets.bidMetrics.list
+  /// field in the subsequent call to the bidMetrics.list
   /// method to retrieve the next page of results.
   core.String nextPageToken;
 
@@ -3968,8 +5915,7 @@
   /// A token to retrieve the next page of results.
   /// Pass this value in the
   /// ListBidResponseErrorsRequest.pageToken
-  /// field in the subsequent call to the
-  /// accounts.filterSets.bidResponseErrors.list
+  /// field in the subsequent call to the bidResponseErrors.list
   /// method to retrieve the next page of results.
   core.String nextPageToken;
 
@@ -4010,8 +5956,7 @@
   /// A token to retrieve the next page of results.
   /// Pass this value in the
   /// ListBidResponsesWithoutBidsRequest.pageToken
-  /// field in the subsequent call to the
-  /// accounts.filterSets.bidResponsesWithoutBids.list
+  /// field in the subsequent call to the bidResponsesWithoutBids.list
   /// method to retrieve the next page of results.
   core.String nextPageToken;
 
@@ -4171,8 +6116,7 @@
   /// A token to retrieve the next page of results.
   /// Pass this value in the
   /// ListCreativeStatusBreakdownByCreativeRequest.pageToken
-  /// field in the subsequent call to the
-  /// accounts.filterSets.filteredBids.creatives.list
+  /// field in the subsequent call to the filteredBids.creatives.list
   /// method to retrieve the next page of results.
   core.String nextPageToken;
 
@@ -4235,8 +6179,7 @@
   /// A token to retrieve the next page of results.
   /// Pass this value in the
   /// ListCreativeStatusBreakdownByDetailRequest.pageToken
-  /// field in the subsequent call to the
-  /// accounts.filterSets.filteredBids.details.list
+  /// field in the subsequent call to the filteredBids.details.list
   /// method to retrieve the next page of results.
   core.String nextPageToken;
 
@@ -4401,8 +6344,7 @@
   /// A token to retrieve the next page of results.
   /// Pass this value in the
   /// ListFilteredBidRequestsRequest.pageToken
-  /// field in the subsequent call to the
-  /// accounts.filterSets.filteredBidRequests.list
+  /// field in the subsequent call to the filteredBidRequests.list
   /// method to retrieve the next page of results.
   core.String nextPageToken;
 
@@ -4443,8 +6385,7 @@
   /// A token to retrieve the next page of results.
   /// Pass this value in the
   /// ListFilteredBidsRequest.pageToken
-  /// field in the subsequent call to the
-  /// accounts.filterSets.filteredBids.list
+  /// field in the subsequent call to the filteredBids.list
   /// method to retrieve the next page of results.
   core.String nextPageToken;
 
@@ -4484,8 +6425,7 @@
   /// A token to retrieve the next page of results.
   /// Pass this value in the
   /// ListImpressionMetricsRequest.pageToken
-  /// field in the subsequent call to the
-  /// accounts.filterSets.impressionMetrics.list
+  /// field in the subsequent call to the impressionMetrics.list
   /// method to retrieve the next page of results.
   core.String nextPageToken;
 
@@ -4525,8 +6465,7 @@
   /// A token to retrieve the next page of results.
   /// Pass this value in the
   /// ListLosingBidsRequest.pageToken
-  /// field in the subsequent call to the
-  /// accounts.filterSets.losingBids.list
+  /// field in the subsequent call to the losingBids.list
   /// method to retrieve the next page of results.
   core.String nextPageToken;
 
@@ -4564,8 +6503,7 @@
   /// A token to retrieve the next page of results.
   /// Pass this value in the
   /// ListNonBillableWinningBidsRequest.pageToken
-  /// field in the subsequent call to the
-  /// accounts.filterSets.nonBillableWinningBids.list
+  /// field in the subsequent call to the nonBillableWinningBids.list
   /// method to retrieve the next page of results.
   core.String nextPageToken;
 
diff --git a/generated/googleapis_beta/lib/appengine/v1beta.dart b/generated/googleapis_beta/lib/appengine/v1beta.dart
index a903114..f3ce26d 100644
--- a/generated/googleapis_beta/lib/appengine/v1beta.dart
+++ b/generated/googleapis_beta/lib/appengine/v1beta.dart
@@ -72,6 +72,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -79,7 +82,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> create(Application request) {
+  async.Future<Operation> create(Application request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -90,6 +93,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps';
 
@@ -109,6 +115,9 @@
   /// [appsId] - Part of `name`. Name of the Application resource to get.
   /// Example: apps/myapp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Application].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -116,7 +125,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Application> get(core.String appsId) {
+  async.Future<Application> get(core.String appsId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -127,6 +136,9 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' + commons.Escaper.ecapeVariable('$appsId');
 
@@ -154,6 +166,9 @@
   ///
   /// [updateMask] - Standard field mask for the set of fields to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -162,7 +177,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> patch(Application request, core.String appsId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -179,6 +194,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' + commons.Escaper.ecapeVariable('$appsId');
 
@@ -203,6 +221,9 @@
   /// [appsId] - Part of `name`. Name of the application to repair. Example:
   /// apps/myapp
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -211,7 +232,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> repair(
-      RepairApplicationRequest request, core.String appsId) {
+      RepairApplicationRequest request, core.String appsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -225,6 +247,9 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1beta/apps/' + commons.Escaper.ecapeVariable('$appsId') + ':repair';
@@ -254,6 +279,9 @@
   /// [appsId] - Part of `parent`. Name of the parent Application resource.
   /// Example: apps/myapp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AuthorizedCertificate].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -262,7 +290,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AuthorizedCertificate> create(
-      AuthorizedCertificate request, core.String appsId) {
+      AuthorizedCertificate request, core.String appsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -276,6 +305,9 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -300,6 +332,9 @@
   /// [authorizedCertificatesId] - Part of `name`. See documentation of
   /// `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -308,7 +343,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> delete(
-      core.String appsId, core.String authorizedCertificatesId) {
+      core.String appsId, core.String authorizedCertificatesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -323,6 +359,9 @@
       throw new core.ArgumentError(
           "Parameter authorizedCertificatesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -353,6 +392,9 @@
   /// - "BASIC_CERTIFICATE" : A BASIC_CERTIFICATE.
   /// - "FULL_CERTIFICATE" : A FULL_CERTIFICATE.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AuthorizedCertificate].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -362,7 +404,7 @@
   /// this method will complete with the same error.
   async.Future<AuthorizedCertificate> get(
       core.String appsId, core.String authorizedCertificatesId,
-      {core.String view}) {
+      {core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -380,6 +422,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -402,6 +447,8 @@
   /// [appsId] - Part of `parent`. Name of the parent Application resource.
   /// Example: apps/myapp.
   ///
+  /// [pageToken] - Continuation token for fetching the next page of results.
+  ///
   /// [pageSize] - Maximum results to return per page.
   ///
   /// [view] - Controls the set of fields returned in the LIST response.
@@ -409,7 +456,8 @@
   /// - "BASIC_CERTIFICATE" : A BASIC_CERTIFICATE.
   /// - "FULL_CERTIFICATE" : A FULL_CERTIFICATE.
   ///
-  /// [pageToken] - Continuation token for fetching the next page of results.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListAuthorizedCertificatesResponse].
   ///
@@ -419,7 +467,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListAuthorizedCertificatesResponse> list(core.String appsId,
-      {core.int pageSize, core.String view, core.String pageToken}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String view,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -430,14 +481,17 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
     if (view != null) {
       _queryParams["view"] = [view];
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1beta/apps/' +
@@ -474,6 +528,9 @@
   /// Updates are only supported on the certificate_raw_data and display_name
   /// fields.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AuthorizedCertificate].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -483,7 +540,7 @@
   /// this method will complete with the same error.
   async.Future<AuthorizedCertificate> patch(AuthorizedCertificate request,
       core.String appsId, core.String authorizedCertificatesId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -504,6 +561,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -537,6 +597,9 @@
   ///
   /// [pageSize] - Maximum results to return per page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListAuthorizedDomainsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -545,7 +608,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListAuthorizedDomainsResponse> list(core.String appsId,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -562,6 +625,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -595,6 +661,9 @@
   /// [appsId] - Part of `parent`. Name of the parent Application resource.
   /// Example: apps/myapp.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -602,7 +671,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> create(DomainMapping request, core.String appsId) {
+  async.Future<Operation> create(DomainMapping request, core.String appsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -616,6 +686,9 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -641,6 +714,9 @@
   ///
   /// [domainMappingsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -649,7 +725,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(
-      core.String appsId, core.String domainMappingsId) {
+      core.String appsId, core.String domainMappingsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -663,6 +740,9 @@
     if (domainMappingsId == null) {
       throw new core.ArgumentError("Parameter domainMappingsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -687,6 +767,9 @@
   ///
   /// [domainMappingsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DomainMapping].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -695,7 +778,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DomainMapping> get(
-      core.String appsId, core.String domainMappingsId) {
+      core.String appsId, core.String domainMappingsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -709,6 +793,9 @@
     if (domainMappingsId == null) {
       throw new core.ArgumentError("Parameter domainMappingsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -735,6 +822,9 @@
   ///
   /// [pageSize] - Maximum results to return per page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListDomainMappingsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -743,7 +833,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListDomainMappingsResponse> list(core.String appsId,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -760,6 +850,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -791,6 +884,9 @@
   ///
   /// [updateMask] - Standard field mask for the set of fields to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -800,7 +896,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       DomainMapping request, core.String appsId, core.String domainMappingsId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -820,6 +916,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -863,6 +962,9 @@
   /// [appsId] - Part of `name`. Name of the Firewall collection to set.
   /// Example: apps/myapp/firewall/ingressRules.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchUpdateIngressRulesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -871,7 +973,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BatchUpdateIngressRulesResponse> batchUpdate(
-      BatchUpdateIngressRulesRequest request, core.String appsId) {
+      BatchUpdateIngressRulesRequest request, core.String appsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -885,6 +988,9 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -909,6 +1015,9 @@
   /// [appsId] - Part of `parent`. Name of the parent Firewall collection in
   /// which to create a new rule. Example: apps/myapp/firewall/ingressRules.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FirewallRule].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -916,7 +1025,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<FirewallRule> create(FirewallRule request, core.String appsId) {
+  async.Future<FirewallRule> create(FirewallRule request, core.String appsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -930,6 +1040,9 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -953,6 +1066,9 @@
   ///
   /// [ingressRulesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -960,7 +1076,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String appsId, core.String ingressRulesId) {
+  async.Future<Empty> delete(core.String appsId, core.String ingressRulesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -974,6 +1091,9 @@
     if (ingressRulesId == null) {
       throw new core.ArgumentError("Parameter ingressRulesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -998,6 +1118,9 @@
   ///
   /// [ingressRulesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FirewallRule].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1005,8 +1128,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<FirewallRule> get(
-      core.String appsId, core.String ingressRulesId) {
+  async.Future<FirewallRule> get(core.String appsId, core.String ingressRulesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1020,6 +1143,9 @@
     if (ingressRulesId == null) {
       throw new core.ArgumentError("Parameter ingressRulesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1042,13 +1168,16 @@
   /// [appsId] - Part of `parent`. Name of the Firewall collection to retrieve.
   /// Example: apps/myapp/firewall/ingressRules.
   ///
+  /// [pageToken] - Continuation token for fetching the next page of results.
+  ///
   /// [pageSize] - Maximum results to return per page.
   ///
   /// [matchingAddress] - A valid IP Address. If set, only rules matching this
   /// address will be returned. The first returned rule will be the rule that
   /// fires on requests from this IP.
   ///
-  /// [pageToken] - Continuation token for fetching the next page of results.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListIngressRulesResponse].
   ///
@@ -1058,7 +1187,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListIngressRulesResponse> list(core.String appsId,
-      {core.int pageSize, core.String matchingAddress, core.String pageToken}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String matchingAddress,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1069,14 +1201,17 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
     if (matchingAddress != null) {
       _queryParams["matchingAddress"] = [matchingAddress];
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1beta/apps/' +
@@ -1106,6 +1241,9 @@
   ///
   /// [updateMask] - Standard field mask for the set of fields to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FirewallRule].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1115,7 +1253,7 @@
   /// this method will complete with the same error.
   async.Future<FirewallRule> patch(
       FirewallRule request, core.String appsId, core.String ingressRulesId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1135,6 +1273,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1164,6 +1305,9 @@
   ///
   /// [locationsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Location].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1171,7 +1315,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Location> get(core.String appsId, core.String locationsId) {
+  async.Future<Location> get(core.String appsId, core.String locationsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1185,6 +1330,9 @@
     if (locationsId == null) {
       throw new core.ArgumentError("Parameter locationsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1207,11 +1355,14 @@
   /// [appsId] - Part of `name`. The resource that owns the locations
   /// collection, if applicable.
   ///
+  /// [filter] - The standard list filter.
+  ///
   /// [pageToken] - The standard list page token.
   ///
   /// [pageSize] - The standard list page size.
   ///
-  /// [filter] - The standard list filter.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListLocationsResponse].
   ///
@@ -1221,7 +1372,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLocationsResponse> list(core.String appsId,
-      {core.String pageToken, core.int pageSize, core.String filter}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1232,14 +1386,17 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1beta/apps/' +
@@ -1271,6 +1428,9 @@
   ///
   /// [operationsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1278,7 +1438,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String appsId, core.String operationsId) {
+  async.Future<Operation> get(core.String appsId, core.String operationsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1292,6 +1453,9 @@
     if (operationsId == null) {
       throw new core.ArgumentError("Parameter operationsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1321,12 +1485,15 @@
   ///
   /// [appsId] - Part of `name`. The name of the operation's parent resource.
   ///
-  /// [filter] - The standard list filter.
-  ///
   /// [pageToken] - The standard list page token.
   ///
   /// [pageSize] - The standard list page size.
   ///
+  /// [filter] - The standard list filter.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOperationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1335,7 +1502,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOperationsResponse> list(core.String appsId,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String filter,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1346,15 +1516,18 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
-    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1387,6 +1560,9 @@
   ///
   /// [servicesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1394,7 +1570,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> delete(core.String appsId, core.String servicesId) {
+  async.Future<Operation> delete(core.String appsId, core.String servicesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1408,6 +1585,9 @@
     if (servicesId == null) {
       throw new core.ArgumentError("Parameter servicesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1432,6 +1612,9 @@
   ///
   /// [servicesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Service].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1439,7 +1622,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Service> get(core.String appsId, core.String servicesId) {
+  async.Future<Service> get(core.String appsId, core.String servicesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1453,6 +1637,9 @@
     if (servicesId == null) {
       throw new core.ArgumentError("Parameter servicesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1475,9 +1662,12 @@
   /// [appsId] - Part of `parent`. Name of the parent Application resource.
   /// Example: apps/myapp.
   ///
+  /// [pageToken] - Continuation token for fetching the next page of results.
+  ///
   /// [pageSize] - Maximum results to return per page.
   ///
-  /// [pageToken] - Continuation token for fetching the next page of results.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListServicesResponse].
   ///
@@ -1487,7 +1677,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListServicesResponse> list(core.String appsId,
-      {core.int pageSize, core.String pageToken}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1498,11 +1688,14 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url =
@@ -1528,8 +1721,6 @@
   ///
   /// [servicesId] - Part of `name`. See documentation of `appsId`.
   ///
-  /// [updateMask] - Standard field mask for the set of fields to be updated.
-  ///
   /// [migrateTraffic] - Set to true to gradually shift traffic to one or more
   /// versions that you specify. By default, traffic is shifted immediately. For
   /// gradual traffic migration, the target versions must be located within
@@ -1544,6 +1735,11 @@
   /// Splitting Traffic
   /// (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).
   ///
+  /// [updateMask] - Standard field mask for the set of fields to be updated.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1553,7 +1749,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       Service request, core.String appsId, core.String servicesId,
-      {core.String updateMask, core.bool migrateTraffic}) {
+      {core.bool migrateTraffic, core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1570,11 +1766,14 @@
     if (servicesId == null) {
       throw new core.ArgumentError("Parameter servicesId is required.");
     }
+    if (migrateTraffic != null) {
+      _queryParams["migrateTraffic"] = ["${migrateTraffic}"];
+    }
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
-    if (migrateTraffic != null) {
-      _queryParams["migrateTraffic"] = ["${migrateTraffic}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1beta/apps/' +
@@ -1612,6 +1811,9 @@
   ///
   /// [servicesId] - Part of `parent`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1620,7 +1822,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> create(
-      Version request, core.String appsId, core.String servicesId) {
+      Version request, core.String appsId, core.String servicesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1637,6 +1840,9 @@
     if (servicesId == null) {
       throw new core.ArgumentError("Parameter servicesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1664,6 +1870,9 @@
   ///
   /// [versionsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1672,7 +1881,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(
-      core.String appsId, core.String servicesId, core.String versionsId) {
+      core.String appsId, core.String servicesId, core.String versionsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1689,6 +1899,9 @@
     if (versionsId == null) {
       throw new core.ArgumentError("Parameter versionsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1723,6 +1936,9 @@
   /// - "BASIC" : A BASIC.
   /// - "FULL" : A FULL.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Version].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1732,7 +1948,7 @@
   /// this method will complete with the same error.
   async.Future<Version> get(
       core.String appsId, core.String servicesId, core.String versionsId,
-      {core.String view}) {
+      {core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1752,6 +1968,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1787,6 +2006,9 @@
   /// - "BASIC" : A BASIC.
   /// - "FULL" : A FULL.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListVersionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1796,7 +2018,10 @@
   /// this method will complete with the same error.
   async.Future<ListVersionsResponse> list(
       core.String appsId, core.String servicesId,
-      {core.String pageToken, core.int pageSize, core.String view}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String view,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1819,6 +2044,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1883,6 +2111,9 @@
   ///
   /// [updateMask] - Standard field mask for the set of fields to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1892,7 +2123,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(Version request, core.String appsId,
       core.String servicesId, core.String versionsId,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1915,6 +2146,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1959,6 +2193,9 @@
   ///
   /// [instancesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1971,7 +2208,8 @@
       core.String appsId,
       core.String servicesId,
       core.String versionsId,
-      core.String instancesId) {
+      core.String instancesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1994,6 +2232,9 @@
     if (instancesId == null) {
       throw new core.ArgumentError("Parameter instancesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -2027,6 +2268,9 @@
   ///
   /// [instancesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2035,7 +2279,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String appsId, core.String servicesId,
-      core.String versionsId, core.String instancesId) {
+      core.String versionsId, core.String instancesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2055,6 +2300,9 @@
     if (instancesId == null) {
       throw new core.ArgumentError("Parameter instancesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -2087,6 +2335,9 @@
   ///
   /// [instancesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Instance].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2095,7 +2346,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Instance> get(core.String appsId, core.String servicesId,
-      core.String versionsId, core.String instancesId) {
+      core.String versionsId, core.String instancesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2115,6 +2367,9 @@
     if (instancesId == null) {
       throw new core.ArgumentError("Parameter instancesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -2147,9 +2402,12 @@
   ///
   /// [versionsId] - Part of `parent`. See documentation of `appsId`.
   ///
+  /// [pageToken] - Continuation token for fetching the next page of results.
+  ///
   /// [pageSize] - Maximum results to return per page.
   ///
-  /// [pageToken] - Continuation token for fetching the next page of results.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListInstancesResponse].
   ///
@@ -2160,7 +2418,7 @@
   /// this method will complete with the same error.
   async.Future<ListInstancesResponse> list(
       core.String appsId, core.String servicesId, core.String versionsId,
-      {core.int pageSize, core.String pageToken}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2177,11 +2435,14 @@
     if (versionsId == null) {
       throw new core.ArgumentError("Parameter versionsId is required.");
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1beta/apps/' +
diff --git a/generated/googleapis_beta/lib/appengine/v1beta4.dart b/generated/googleapis_beta/lib/appengine/v1beta4.dart
index fd79d6d..0c5e881 100644
--- a/generated/googleapis_beta/lib/appengine/v1beta4.dart
+++ b/generated/googleapis_beta/lib/appengine/v1beta4.dart
@@ -63,6 +63,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -70,7 +73,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> create(Application request) {
+  async.Future<Operation> create(Application request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -81,6 +84,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps';
 
@@ -106,6 +112,9 @@
   /// not be created, the request will fail with an error code. Additionally,
   /// this parameter can cause the request to take longer to complete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Application].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -114,7 +123,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Application> get(core.String appsId,
-      {core.bool ensureResourcesExist}) {
+      {core.bool ensureResourcesExist, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -128,6 +137,9 @@
     if (ensureResourcesExist != null) {
       _queryParams["ensureResourcesExist"] = ["${ensureResourcesExist}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' + commons.Escaper.ecapeVariable('$appsId');
 
@@ -156,6 +168,9 @@
   ///
   /// [mask] - Standard field mask for the set of fields to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -164,7 +179,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> patch(Application request, core.String appsId,
-      {core.String mask}) {
+      {core.String mask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -181,6 +196,9 @@
     if (mask != null) {
       _queryParams["mask"] = [mask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' + commons.Escaper.ecapeVariable('$appsId');
 
@@ -207,6 +225,9 @@
   ///
   /// [locationsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Location].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -214,7 +235,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Location> get(core.String appsId, core.String locationsId) {
+  async.Future<Location> get(core.String appsId, core.String locationsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -228,6 +250,9 @@
     if (locationsId == null) {
       throw new core.ArgumentError("Parameter locationsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -250,11 +275,14 @@
   /// [appsId] - Part of `name`. The resource that owns the locations
   /// collection, if applicable.
   ///
+  /// [pageToken] - The standard list page token.
+  ///
   /// [pageSize] - The standard list page size.
   ///
   /// [filter] - The standard list filter.
   ///
-  /// [pageToken] - The standard list page token.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListLocationsResponse].
   ///
@@ -264,7 +292,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLocationsResponse> list(core.String appsId,
-      {core.int pageSize, core.String filter, core.String pageToken}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String filter,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -275,14 +306,17 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
     if (filter != null) {
       _queryParams["filter"] = [filter];
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1beta4/apps/' +
@@ -316,6 +350,9 @@
   ///
   /// [modulesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -323,7 +360,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> delete(core.String appsId, core.String modulesId) {
+  async.Future<Operation> delete(core.String appsId, core.String modulesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -337,6 +375,9 @@
     if (modulesId == null) {
       throw new core.ArgumentError("Parameter modulesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -361,6 +402,9 @@
   ///
   /// [modulesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Module].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -368,7 +412,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Module> get(core.String appsId, core.String modulesId) {
+  async.Future<Module> get(core.String appsId, core.String modulesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -382,6 +427,9 @@
     if (modulesId == null) {
       throw new core.ArgumentError("Parameter modulesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -404,9 +452,12 @@
   /// [appsId] - Part of `name`. Name of the resource requested. Example:
   /// apps/myapp.
   ///
+  /// [pageToken] - Continuation token for fetching the next page of results.
+  ///
   /// [pageSize] - Maximum results to return per page.
   ///
-  /// [pageToken] - Continuation token for fetching the next page of results.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListModulesResponse].
   ///
@@ -416,7 +467,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListModulesResponse> list(core.String appsId,
-      {core.int pageSize, core.String pageToken}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -427,11 +478,14 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url =
@@ -473,6 +527,9 @@
   ///
   /// [mask] - Standard field mask for the set of fields to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -482,7 +539,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       Module request, core.String appsId, core.String modulesId,
-      {core.bool migrateTraffic, core.String mask}) {
+      {core.bool migrateTraffic, core.String mask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -505,6 +562,9 @@
     if (mask != null) {
       _queryParams["mask"] = [mask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -541,6 +601,9 @@
   ///
   /// [modulesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -549,7 +612,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> create(
-      Version request, core.String appsId, core.String modulesId) {
+      Version request, core.String appsId, core.String modulesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -566,6 +630,9 @@
     if (modulesId == null) {
       throw new core.ArgumentError("Parameter modulesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -593,6 +660,9 @@
   ///
   /// [versionsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -601,7 +671,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(
-      core.String appsId, core.String modulesId, core.String versionsId) {
+      core.String appsId, core.String modulesId, core.String versionsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -618,6 +689,9 @@
     if (versionsId == null) {
       throw new core.ArgumentError("Parameter versionsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -652,6 +726,9 @@
   /// - "BASIC" : A BASIC.
   /// - "FULL" : A FULL.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Version].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -661,7 +738,7 @@
   /// this method will complete with the same error.
   async.Future<Version> get(
       core.String appsId, core.String modulesId, core.String versionsId,
-      {core.String view}) {
+      {core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -681,6 +758,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -716,6 +796,9 @@
   /// - "BASIC" : A BASIC.
   /// - "FULL" : A FULL.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListVersionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -725,7 +808,10 @@
   /// this method will complete with the same error.
   async.Future<ListVersionsResponse> list(
       core.String appsId, core.String modulesId,
-      {core.String pageToken, core.int pageSize, core.String view}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String view,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -748,6 +834,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -796,6 +885,9 @@
   ///
   /// [mask] - Standard field mask for the set of fields to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -805,7 +897,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(Version request, core.String appsId,
       core.String modulesId, core.String versionsId,
-      {core.String mask}) {
+      {core.String mask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -828,6 +920,9 @@
     if (mask != null) {
       _queryParams["mask"] = [mask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -872,6 +967,9 @@
   ///
   /// [instancesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -884,7 +982,8 @@
       core.String appsId,
       core.String modulesId,
       core.String versionsId,
-      core.String instancesId) {
+      core.String instancesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -907,6 +1006,9 @@
     if (instancesId == null) {
       throw new core.ArgumentError("Parameter instancesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -940,6 +1042,9 @@
   ///
   /// [instancesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -948,7 +1053,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String appsId, core.String modulesId,
-      core.String versionsId, core.String instancesId) {
+      core.String versionsId, core.String instancesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -968,6 +1074,9 @@
     if (instancesId == null) {
       throw new core.ArgumentError("Parameter instancesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1000,6 +1109,9 @@
   ///
   /// [instancesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Instance].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1008,7 +1120,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Instance> get(core.String appsId, core.String modulesId,
-      core.String versionsId, core.String instancesId) {
+      core.String versionsId, core.String instancesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1028,6 +1141,9 @@
     if (instancesId == null) {
       throw new core.ArgumentError("Parameter instancesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1064,6 +1180,9 @@
   ///
   /// [pageSize] - Maximum results to return per page.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListInstancesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1073,7 +1192,7 @@
   /// this method will complete with the same error.
   async.Future<ListInstancesResponse> list(
       core.String appsId, core.String modulesId, core.String versionsId,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1096,6 +1215,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1130,6 +1252,9 @@
   ///
   /// [operationsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1137,7 +1262,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String appsId, core.String operationsId) {
+  async.Future<Operation> get(core.String appsId, core.String operationsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1151,6 +1277,9 @@
     if (operationsId == null) {
       throw new core.ArgumentError("Parameter operationsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1186,6 +1315,9 @@
   ///
   /// [filter] - The standard list filter.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOperationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1194,7 +1326,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOperationsResponse> list(core.String appsId,
-      {core.String pageToken, core.int pageSize, core.String filter}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String filter,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1214,6 +1349,9 @@
     if (filter != null) {
       _queryParams["filter"] = [filter];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta4/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
diff --git a/generated/googleapis_beta/lib/appengine/v1beta5.dart b/generated/googleapis_beta/lib/appengine/v1beta5.dart
index 0fd15c4..d93f204 100644
--- a/generated/googleapis_beta/lib/appengine/v1beta5.dart
+++ b/generated/googleapis_beta/lib/appengine/v1beta5.dart
@@ -64,6 +64,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -71,7 +74,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> create(Application request) {
+  async.Future<Operation> create(Application request, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -82,6 +85,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps';
 
@@ -108,6 +114,9 @@
   /// this parameter can cause the request to take longer to complete. Note:
   /// This parameter will be deprecated in a future version of the API.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Application].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -116,7 +125,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Application> get(core.String appsId,
-      {core.bool ensureResourcesExist}) {
+      {core.bool ensureResourcesExist, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -130,6 +139,9 @@
     if (ensureResourcesExist != null) {
       _queryParams["ensureResourcesExist"] = ["${ensureResourcesExist}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' + commons.Escaper.ecapeVariable('$appsId');
 
@@ -158,6 +170,9 @@
   ///
   /// [mask] - Standard field mask for the set of fields to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -166,7 +181,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> patch(Application request, core.String appsId,
-      {core.String mask}) {
+      {core.String mask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -183,6 +198,9 @@
     if (mask != null) {
       _queryParams["mask"] = [mask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' + commons.Escaper.ecapeVariable('$appsId');
 
@@ -209,6 +227,9 @@
   ///
   /// [locationsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Location].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -216,7 +237,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Location> get(core.String appsId, core.String locationsId) {
+  async.Future<Location> get(core.String appsId, core.String locationsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -230,6 +252,9 @@
     if (locationsId == null) {
       throw new core.ArgumentError("Parameter locationsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -252,11 +277,14 @@
   /// [appsId] - Part of `name`. The resource that owns the locations
   /// collection, if applicable.
   ///
+  /// [pageSize] - The standard list page size.
+  ///
   /// [filter] - The standard list filter.
   ///
   /// [pageToken] - The standard list page token.
   ///
-  /// [pageSize] - The standard list page size.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListLocationsResponse].
   ///
@@ -266,7 +294,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLocationsResponse> list(core.String appsId,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.int pageSize,
+      core.String filter,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -277,14 +308,17 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
     if (filter != null) {
       _queryParams["filter"] = [filter];
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1beta5/apps/' +
@@ -316,6 +350,9 @@
   ///
   /// [operationsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -323,7 +360,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String appsId, core.String operationsId) {
+  async.Future<Operation> get(core.String appsId, core.String operationsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -337,6 +375,9 @@
     if (operationsId == null) {
       throw new core.ArgumentError("Parameter operationsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -366,12 +407,15 @@
   ///
   /// [appsId] - Part of `name`. The name of the operation's parent resource.
   ///
-  /// [filter] - The standard list filter.
-  ///
   /// [pageToken] - The standard list page token.
   ///
   /// [pageSize] - The standard list page size.
   ///
+  /// [filter] - The standard list filter.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOperationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -380,7 +424,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOperationsResponse> list(core.String appsId,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String filter,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -391,15 +438,18 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
-    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -432,6 +482,9 @@
   ///
   /// [servicesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -439,7 +492,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> delete(core.String appsId, core.String servicesId) {
+  async.Future<Operation> delete(core.String appsId, core.String servicesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -453,6 +507,9 @@
     if (servicesId == null) {
       throw new core.ArgumentError("Parameter servicesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -477,6 +534,9 @@
   ///
   /// [servicesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Service].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -484,7 +544,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Service> get(core.String appsId, core.String servicesId) {
+  async.Future<Service> get(core.String appsId, core.String servicesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -498,6 +559,9 @@
     if (servicesId == null) {
       throw new core.ArgumentError("Parameter servicesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -520,9 +584,12 @@
   /// [appsId] - Part of `name`. Name of the resource requested. Example:
   /// apps/myapp.
   ///
+  /// [pageSize] - Maximum results to return per page.
+  ///
   /// [pageToken] - Continuation token for fetching the next page of results.
   ///
-  /// [pageSize] - Maximum results to return per page.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListServicesResponse].
   ///
@@ -532,7 +599,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListServicesResponse> list(core.String appsId,
-      {core.String pageToken, core.int pageSize}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -543,11 +610,14 @@
     if (appsId == null) {
       throw new core.ArgumentError("Parameter appsId is required.");
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1beta5/apps/' +
@@ -590,6 +660,9 @@
   ///
   /// [mask] - Standard field mask for the set of fields to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -599,7 +672,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       Service request, core.String appsId, core.String servicesId,
-      {core.bool migrateTraffic, core.String mask}) {
+      {core.bool migrateTraffic, core.String mask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -622,6 +695,9 @@
     if (mask != null) {
       _queryParams["mask"] = [mask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -658,6 +734,9 @@
   ///
   /// [servicesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -666,7 +745,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> create(
-      Version request, core.String appsId, core.String servicesId) {
+      Version request, core.String appsId, core.String servicesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -683,6 +763,9 @@
     if (servicesId == null) {
       throw new core.ArgumentError("Parameter servicesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -710,6 +793,9 @@
   ///
   /// [versionsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -718,7 +804,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(
-      core.String appsId, core.String servicesId, core.String versionsId) {
+      core.String appsId, core.String servicesId, core.String versionsId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -735,6 +822,9 @@
     if (versionsId == null) {
       throw new core.ArgumentError("Parameter versionsId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -769,6 +859,9 @@
   /// - "BASIC" : A BASIC.
   /// - "FULL" : A FULL.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Version].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -778,7 +871,7 @@
   /// this method will complete with the same error.
   async.Future<Version> get(
       core.String appsId, core.String servicesId, core.String versionsId,
-      {core.String view}) {
+      {core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -798,6 +891,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -824,8 +920,6 @@
   ///
   /// [servicesId] - Part of `name`. See documentation of `appsId`.
   ///
-  /// [pageToken] - Continuation token for fetching the next page of results.
-  ///
   /// [pageSize] - Maximum results to return per page.
   ///
   /// [view] - Controls the set of fields returned in the List response.
@@ -833,6 +927,11 @@
   /// - "BASIC" : A BASIC.
   /// - "FULL" : A FULL.
   ///
+  /// [pageToken] - Continuation token for fetching the next page of results.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListVersionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -842,7 +941,10 @@
   /// this method will complete with the same error.
   async.Future<ListVersionsResponse> list(
       core.String appsId, core.String servicesId,
-      {core.String pageToken, core.int pageSize, core.String view}) {
+      {core.int pageSize,
+      core.String view,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -856,15 +958,18 @@
     if (servicesId == null) {
       throw new core.ArgumentError("Parameter servicesId is required.");
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
-    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -913,6 +1018,9 @@
   ///
   /// [mask] - Standard field mask for the set of fields to be updated.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -922,7 +1030,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(Version request, core.String appsId,
       core.String servicesId, core.String versionsId,
-      {core.String mask}) {
+      {core.String mask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -945,6 +1053,9 @@
     if (mask != null) {
       _queryParams["mask"] = [mask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -989,6 +1100,9 @@
   ///
   /// [instancesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1001,7 +1115,8 @@
       core.String appsId,
       core.String servicesId,
       core.String versionsId,
-      core.String instancesId) {
+      core.String instancesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1024,6 +1139,9 @@
     if (instancesId == null) {
       throw new core.ArgumentError("Parameter instancesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1057,6 +1175,9 @@
   ///
   /// [instancesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1065,7 +1186,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String appsId, core.String servicesId,
-      core.String versionsId, core.String instancesId) {
+      core.String versionsId, core.String instancesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1085,6 +1207,9 @@
     if (instancesId == null) {
       throw new core.ArgumentError("Parameter instancesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1117,6 +1242,9 @@
   ///
   /// [instancesId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Instance].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1125,7 +1253,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Instance> get(core.String appsId, core.String servicesId,
-      core.String versionsId, core.String instancesId) {
+      core.String versionsId, core.String instancesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1145,6 +1274,9 @@
     if (instancesId == null) {
       throw new core.ArgumentError("Parameter instancesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta5/apps/' +
         commons.Escaper.ecapeVariable('$appsId') +
@@ -1177,9 +1309,12 @@
   ///
   /// [versionsId] - Part of `name`. See documentation of `appsId`.
   ///
+  /// [pageSize] - Maximum results to return per page.
+  ///
   /// [pageToken] - Continuation token for fetching the next page of results.
   ///
-  /// [pageSize] - Maximum results to return per page.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListInstancesResponse].
   ///
@@ -1190,7 +1325,7 @@
   /// this method will complete with the same error.
   async.Future<ListInstancesResponse> list(
       core.String appsId, core.String servicesId, core.String versionsId,
-      {core.String pageToken, core.int pageSize}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1207,11 +1342,14 @@
     if (versionsId == null) {
       throw new core.ArgumentError("Parameter versionsId is required.");
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1beta5/apps/' +
diff --git a/generated/googleapis_beta/lib/clouderrorreporting/v1beta1.dart b/generated/googleapis_beta/lib/clouderrorreporting/v1beta1.dart
index ae3fc35..8afca81 100644
--- a/generated/googleapis_beta/lib/clouderrorreporting/v1beta1.dart
+++ b/generated/googleapis_beta/lib/clouderrorreporting/v1beta1.dart
@@ -57,6 +57,9 @@
   /// Example: `projects/my-project-123`.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DeleteEventsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -64,7 +67,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DeleteEventsResponse> deleteEvents(core.String projectName) {
+  async.Future<DeleteEventsResponse> deleteEvents(core.String projectName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -75,6 +79,9 @@
     if (projectName == null) {
       throw new core.ArgumentError("Parameter projectName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$projectName') +
@@ -107,12 +114,6 @@
   /// Example: `projects/my-project-123`.
   /// Value must have pattern "^projects/[^/]+$".
   ///
-  /// [pageSize] - [Optional] The maximum number of results to return per
-  /// response.
-  ///
-  /// [serviceFilter_version] - [Optional] The exact value to match against
-  /// [`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).
-  ///
   /// [serviceFilter_resourceType] - [Optional] The exact value to match against
   /// [`ServiceContext.resource_type`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.resource_type).
   ///
@@ -133,6 +134,15 @@
   /// [serviceFilter_service] - [Optional] The exact value to match against
   /// [`ServiceContext.service`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.service).
   ///
+  /// [pageSize] - [Optional] The maximum number of results to return per
+  /// response.
+  ///
+  /// [serviceFilter_version] - [Optional] The exact value to match against
+  /// [`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListEventsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -141,13 +151,14 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListEventsResponse> list(core.String projectName,
-      {core.int pageSize,
-      core.String serviceFilter_version,
-      core.String serviceFilter_resourceType,
+      {core.String serviceFilter_resourceType,
       core.String timeRange_period,
       core.String groupId,
       core.String pageToken,
-      core.String serviceFilter_service}) {
+      core.String serviceFilter_service,
+      core.int pageSize,
+      core.String serviceFilter_version,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -158,12 +169,6 @@
     if (projectName == null) {
       throw new core.ArgumentError("Parameter projectName is required.");
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
-    }
-    if (serviceFilter_version != null) {
-      _queryParams["serviceFilter.version"] = [serviceFilter_version];
-    }
     if (serviceFilter_resourceType != null) {
       _queryParams["serviceFilter.resourceType"] = [serviceFilter_resourceType];
     }
@@ -179,6 +184,15 @@
     if (serviceFilter_service != null) {
       _queryParams["serviceFilter.service"] = [serviceFilter_service];
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (serviceFilter_version != null) {
+      _queryParams["serviceFilter.version"] = [serviceFilter_version];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$projectName') +
@@ -216,6 +230,9 @@
   /// Example: `projects/my-project-123`.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ReportErrorEventResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -224,7 +241,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ReportErrorEventResponse> report(
-      ReportedErrorEvent request, core.String projectName) {
+      ReportedErrorEvent request, core.String projectName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -238,6 +256,9 @@
     if (projectName == null) {
       throw new core.ArgumentError("Parameter projectName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$projectName') +
@@ -273,15 +294,6 @@
   /// Example: <code>projects/my-project-123</code>.
   /// Value must have pattern "^projects/[^/]+$".
   ///
-  /// [timedCountDuration] - [Optional] The preferred duration for a single
-  /// returned `TimedCount`.
-  /// If not set, no timed counts are returned.
-  ///
-  /// [pageToken] - [Optional] A `next_page_token` provided by a previous
-  /// response. To view
-  /// additional results, pass this token along with the identical query
-  /// parameters as the first request.
-  ///
   /// [timeRange_period] - Restricts the query to the specified time range.
   /// Possible string values are:
   /// - "PERIOD_UNSPECIFIED" : A PERIOD_UNSPECIFIED.
@@ -309,6 +321,9 @@
   /// response.
   /// Default is 20.
   ///
+  /// [serviceFilter_version] - [Optional] The exact value to match against
+  /// [`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).
+  ///
   /// [order] - [Optional] The sort order in which the results are returned.
   /// Default is `COUNT_DESC`.
   /// Possible string values are:
@@ -318,9 +333,6 @@
   /// - "CREATED_DESC" : A CREATED_DESC.
   /// - "AFFECTED_USERS_DESC" : A AFFECTED_USERS_DESC.
   ///
-  /// [serviceFilter_version] - [Optional] The exact value to match against
-  /// [`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).
-  ///
   /// [serviceFilter_resourceType] - [Optional] The exact value to match against
   /// [`ServiceContext.resource_type`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.resource_type).
   ///
@@ -328,6 +340,18 @@
   /// if rounded
   /// alignment is chosen. Default is 00:00 UTC.
   ///
+  /// [timedCountDuration] - [Optional] The preferred duration for a single
+  /// returned `TimedCount`.
+  /// If not set, no timed counts are returned.
+  ///
+  /// [pageToken] - [Optional] A `next_page_token` provided by a previous
+  /// response. To view
+  /// additional results, pass this token along with the identical query
+  /// parameters as the first request.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListGroupStatsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -336,17 +360,18 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListGroupStatsResponse> list(core.String projectName,
-      {core.String timedCountDuration,
-      core.String pageToken,
-      core.String timeRange_period,
+      {core.String timeRange_period,
       core.String alignment,
       core.List<core.String> groupId,
       core.String serviceFilter_service,
       core.int pageSize,
-      core.String order,
       core.String serviceFilter_version,
+      core.String order,
       core.String serviceFilter_resourceType,
-      core.String alignmentTime}) {
+      core.String alignmentTime,
+      core.String timedCountDuration,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -357,12 +382,6 @@
     if (projectName == null) {
       throw new core.ArgumentError("Parameter projectName is required.");
     }
-    if (timedCountDuration != null) {
-      _queryParams["timedCountDuration"] = [timedCountDuration];
-    }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
-    }
     if (timeRange_period != null) {
       _queryParams["timeRange.period"] = [timeRange_period];
     }
@@ -378,18 +397,27 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (order != null) {
-      _queryParams["order"] = [order];
-    }
     if (serviceFilter_version != null) {
       _queryParams["serviceFilter.version"] = [serviceFilter_version];
     }
+    if (order != null) {
+      _queryParams["order"] = [order];
+    }
     if (serviceFilter_resourceType != null) {
       _queryParams["serviceFilter.resourceType"] = [serviceFilter_resourceType];
     }
     if (alignmentTime != null) {
       _queryParams["alignmentTime"] = [alignmentTime];
     }
+    if (timedCountDuration != null) {
+      _queryParams["timedCountDuration"] = [timedCountDuration];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$projectName') +
@@ -425,6 +453,9 @@
   /// Example: <code>projects/my-project-123/groups/my-group</code>
   /// Value must have pattern "^projects/[^/]+/groups/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ErrorGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -432,7 +463,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ErrorGroup> get(core.String groupName) {
+  async.Future<ErrorGroup> get(core.String groupName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -443,6 +474,9 @@
     if (groupName == null) {
       throw new core.ArgumentError("Parameter groupName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$groupName');
 
@@ -466,6 +500,9 @@
   /// Example: <code>projects/my-project-123/groups/my-groupid</code>
   /// Value must have pattern "^projects/[^/]+/groups/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ErrorGroup].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -473,7 +510,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ErrorGroup> update(ErrorGroup request, core.String name) {
+  async.Future<ErrorGroup> update(ErrorGroup request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -487,6 +525,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
diff --git a/generated/googleapis_beta/lib/cloudmonitoring/v2beta2.dart b/generated/googleapis_beta/lib/cloudmonitoring/v2beta2.dart
index cd79e71..43fb9c3 100644
--- a/generated/googleapis_beta/lib/cloudmonitoring/v2beta2.dart
+++ b/generated/googleapis_beta/lib/cloudmonitoring/v2beta2.dart
@@ -54,6 +54,9 @@
   /// [project] - The project id. The value can be the numeric project ID or
   /// string-based project name.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [MetricDescriptor].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -62,7 +65,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<MetricDescriptor> create(
-      MetricDescriptor request, core.String project) {
+      MetricDescriptor request, core.String project,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -76,6 +80,9 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/metricDescriptors';
 
@@ -96,6 +103,9 @@
   ///
   /// [metric] - Name of the metric.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DeleteMetricDescriptorResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -104,7 +114,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DeleteMetricDescriptorResponse> delete(
-      core.String project, core.String metric) {
+      core.String project, core.String metric,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -118,6 +129,9 @@
     if (metric == null) {
       throw new core.ArgumentError("Parameter metric is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/metricDescriptors/' +
@@ -160,6 +174,9 @@
   /// omitted, all metrics are returned. If an empty string is passed with this
   /// field, no metrics are returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListMetricDescriptorsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -169,7 +186,10 @@
   /// this method will complete with the same error.
   async.Future<ListMetricDescriptorsResponse> list(
       ListMetricDescriptorsRequest request, core.String project,
-      {core.int count, core.String pageToken, core.String query}) {
+      {core.int count,
+      core.String pageToken,
+      core.String query,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -192,6 +212,9 @@
     if (query != null) {
       _queryParams["query"] = [query];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/metricDescriptors';
 
@@ -287,6 +310,9 @@
   /// is not allowed; you should use 17d instead.
   /// Value must have pattern "[0-9]+[mhdw]?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListTimeseriesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -302,7 +328,8 @@
       core.String oldest,
       core.String pageToken,
       core.String timespan,
-      core.String window}) {
+      core.String window,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -344,6 +371,9 @@
     if (window != null) {
       _queryParams["window"] = [window];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/timeseries/' +
@@ -373,6 +403,9 @@
   /// [project] - The project ID. The value can be the numeric project ID or
   /// string-based project name.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [WriteTimeseriesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -381,7 +414,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<WriteTimeseriesResponse> write(
-      WriteTimeseriesRequest request, core.String project) {
+      WriteTimeseriesRequest request, core.String project,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -395,6 +429,9 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/timeseries:write';
 
@@ -490,6 +527,9 @@
   /// is not allowed; you should use 17d instead.
   /// Value must have pattern "[0-9]+[mhdw]?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListTimeseriesDescriptorsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -508,7 +548,8 @@
       core.String oldest,
       core.String pageToken,
       core.String timespan,
-      core.String window}) {
+      core.String window,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -550,6 +591,9 @@
     if (window != null) {
       _queryParams["window"] = [window];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/timeseriesDescriptors/' +
diff --git a/generated/googleapis_beta/lib/cloudresourcemanager/v1beta1.dart b/generated/googleapis_beta/lib/cloudresourcemanager/v1beta1.dart
index cc0621a..a7c06b1 100644
--- a/generated/googleapis_beta/lib/cloudresourcemanager/v1beta1.dart
+++ b/generated/googleapis_beta/lib/cloudresourcemanager/v1beta1.dart
@@ -55,6 +55,9 @@
   /// [organizationId] - The id of the Organization resource to fetch.
   /// This field is deprecated and will be removed in v1. Use name instead.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Organization].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -63,7 +66,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Organization> get(core.String name,
-      {core.String organizationId}) {
+      {core.String organizationId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -77,6 +80,9 @@
     if (organizationId != null) {
       _queryParams["organizationId"] = [organizationId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -102,6 +108,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -110,7 +119,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> getIamPolicy(
-      GetIamPolicyRequest request, core.String resource) {
+      GetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -124,6 +134,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -144,6 +157,11 @@
   ///
   /// Request parameters:
   ///
+  /// [pageToken] - A pagination token returned from a previous call to
+  /// `ListOrganizations`
+  /// that indicates from where listing should continue.
+  /// This field is optional.
+  ///
   /// [pageSize] - The maximum number of Organizations to return in the
   /// response.
   /// This field is optional.
@@ -165,10 +183,8 @@
   ///
   /// This field is optional.
   ///
-  /// [pageToken] - A pagination token returned from a previous call to
-  /// `ListOrganizations`
-  /// that indicates from where listing should continue.
-  /// This field is optional.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListOrganizationsResponse].
   ///
@@ -178,7 +194,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListOrganizationsResponse> list(
-      {core.int pageSize, core.String filter, core.String pageToken}) {
+      {core.String pageToken,
+      core.int pageSize,
+      core.String filter,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -186,14 +205,17 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
     if (filter != null) {
       _queryParams["filter"] = [filter];
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1beta1/organizations';
@@ -222,6 +244,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -230,7 +255,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -244,6 +270,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -271,6 +300,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -279,7 +311,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -293,6 +326,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -320,6 +356,9 @@
   /// "organizations/[organization_id]". For example, "organizations/1234".
   /// Value must have pattern "^organizations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Organization].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -327,7 +366,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Organization> update(Organization request, core.String name) {
+  async.Future<Organization> update(Organization request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -341,6 +381,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -375,6 +418,9 @@
   /// [useLegacyStack] - A safety hatch to opt out of the new reliable project
   /// creation process.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Project].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -382,7 +428,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Project> create(Project request, {core.bool useLegacyStack}) {
+  async.Future<Project> create(Project request,
+      {core.bool useLegacyStack, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -396,6 +443,9 @@
     if (useLegacyStack != null) {
       _queryParams["useLegacyStack"] = ["${useLegacyStack}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/projects';
 
@@ -440,6 +490,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -447,7 +500,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String projectId) {
+  async.Future<Empty> delete(core.String projectId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -458,6 +511,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/projects/' + commons.Escaper.ecapeVariable('$projectId');
 
@@ -481,6 +537,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Project].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -488,7 +547,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Project> get(core.String projectId) {
+  async.Future<Project> get(core.String projectId, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -499,6 +558,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/projects/' + commons.Escaper.ecapeVariable('$projectId');
 
@@ -524,6 +586,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetAncestryResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -532,7 +597,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetAncestryResponse> getAncestry(
-      GetAncestryRequest request, core.String projectId) {
+      GetAncestryRequest request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -546,6 +612,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -571,6 +640,9 @@
   /// requested.
   /// See the operation documentation for the appropriate value for this field.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -579,7 +651,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> getIamPolicy(
-      GetIamPolicyRequest request, core.String resource) {
+      GetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -593,6 +666,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/projects/' +
         commons.Escaper.ecapeVariable('$resource') +
@@ -658,6 +734,9 @@
   ///
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListProjectsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -666,7 +745,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListProjectsResponse> list(
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -683,6 +765,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/projects';
 
@@ -742,6 +827,9 @@
   /// specified.
   /// See the operation documentation for the appropriate value for this field.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -750,7 +838,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -764,6 +853,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/projects/' +
         commons.Escaper.ecapeVariable('$resource') +
@@ -788,6 +880,9 @@
   /// requested.
   /// See the operation documentation for the appropriate value for this field.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -796,7 +891,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -810,6 +906,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/projects/' +
         commons.Escaper.ecapeVariable('$resource') +
@@ -841,6 +940,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -849,7 +951,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> undelete(
-      UndeleteProjectRequest request, core.String projectId) {
+      UndeleteProjectRequest request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -863,6 +966,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -890,6 +996,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Project].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -897,7 +1006,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Project> update(Project request, core.String projectId) {
+  async.Future<Project> update(Project request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -911,6 +1021,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/projects/' + commons.Escaper.ecapeVariable('$projectId');
 
diff --git a/generated/googleapis_beta/lib/cloudtasks/v2beta2.dart b/generated/googleapis_beta/lib/cloudtasks/v2beta2.dart
new file mode 100644
index 0000000..8756836
--- /dev/null
+++ b/generated/googleapis_beta/lib/cloudtasks/v2beta2.dart
@@ -0,0 +1,3844 @@
+// This is a generated file (see the discoveryapis_generator project).
+
+library googleapis_beta.cloudtasks.v2beta2;
+
+import 'dart:core' as core;
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+
+import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
+import 'package:http/http.dart' as http;
+
+export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
+    show ApiRequestError, DetailedApiRequestError;
+
+const core.String USER_AGENT = 'dart-api-client cloudtasks/v2beta2';
+
+/// Manages the execution of large numbers of distributed requests. Cloud Tasks
+/// is in Alpha.
+class CloudtasksApi {
+  /// View and manage your data across Google Cloud Platform services
+  static const CloudPlatformScope =
+      "https://www.googleapis.com/auth/cloud-platform";
+
+  final commons.ApiRequester _requester;
+
+  ProjectsResourceApi get projects => new ProjectsResourceApi(_requester);
+
+  CloudtasksApi(http.Client client,
+      {core.String rootUrl: "https://cloudtasks.googleapis.com/",
+      core.String servicePath: ""})
+      : _requester =
+            new commons.ApiRequester(client, rootUrl, servicePath, USER_AGENT);
+}
+
+class ProjectsResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsResourceApi get locations =>
+      new ProjectsLocationsResourceApi(_requester);
+
+  ProjectsResourceApi(commons.ApiRequester client) : _requester = client;
+}
+
+class ProjectsLocationsResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsQueuesResourceApi get queues =>
+      new ProjectsLocationsQueuesResourceApi(_requester);
+
+  ProjectsLocationsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Get information about a location.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Resource name for the location.
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Location].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Location> get(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Location.fromJson(data));
+  }
+
+  /// Lists information about the supported locations for this service.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The resource that owns the locations collection, if applicable.
+  /// Value must have pattern "^projects/[^/]+$".
+  ///
+  /// [pageToken] - The standard list page token.
+  ///
+  /// [pageSize] - The standard list page size.
+  ///
+  /// [filter] - The standard list filter.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListLocationsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListLocationsResponse> list(core.String name,
+      {core.String pageToken,
+      core.int pageSize,
+      core.String filter,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' +
+        commons.Escaper.ecapeVariableReserved('$name') +
+        '/locations';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new ListLocationsResponse.fromJson(data));
+  }
+}
+
+class ProjectsLocationsQueuesResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsQueuesTasksResourceApi get tasks =>
+      new ProjectsLocationsQueuesTasksResourceApi(_requester);
+
+  ProjectsLocationsQueuesResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates a queue.
+  ///
+  /// WARNING: This method is only available to whitelisted
+  /// users. Using this method carries some risk. Read
+  /// [Overview of Queue Management and
+  /// queue.yaml](/cloud-tasks/docs/queue-yaml)
+  /// carefully and then sign up for
+  /// [whitelist access to this method](https://goo.gl/Fe5mUy).
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required.
+  ///
+  /// The location name in which the queue will be created.
+  /// For example: `projects/PROJECT_ID/locations/LOCATION_ID`
+  ///
+  /// The list of allowed locations can be obtained by calling Cloud
+  /// Tasks' implementation of
+  /// google.cloud.location.Locations.ListLocations.
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Queue].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Queue> create(Queue request, core.String parent,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        '/queues';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Queue.fromJson(data));
+  }
+
+  /// Deletes a queue.
+  ///
+  /// This command will delete the queue even if it has tasks in it.
+  ///
+  /// Note: If you delete a queue, a queue with the same name can't be created
+  /// for 7 days.
+  ///
+  /// WARNING: This method is only available to whitelisted
+  /// users. Using this method carries some risk. Read
+  /// [Overview of Queue Management and
+  /// queue.yaml](/cloud-tasks/docs/queue-yaml)
+  /// carefully and then sign up for
+  /// [whitelist access to this method](https://goo.gl/Fe5mUy).
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required.
+  ///
+  /// The queue name. For example:
+  /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+/queues/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "DELETE",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Empty.fromJson(data));
+  }
+
+  /// Gets a queue.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required.
+  ///
+  /// The resource name of the queue. For example:
+  /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+/queues/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Queue].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Queue> get(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Queue.fromJson(data));
+  }
+
+  /// Gets the access control policy for a Queue.
+  /// Returns an empty policy if the resource exists and does not have a policy
+  /// set.
+  ///
+  /// Authorization requires the following [Google IAM](/iam) permission on the
+  /// specified resource parent:
+  ///
+  /// * `cloudtasks.queues.getIamPolicy`
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// requested.
+  /// See the operation documentation for the appropriate value for this field.
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+/queues/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Policy> getIamPolicy(
+      GetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (resource == null) {
+      throw new core.ArgumentError("Parameter resource is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' +
+        commons.Escaper.ecapeVariableReserved('$resource') +
+        ':getIamPolicy';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Policy.fromJson(data));
+  }
+
+  /// Lists queues.
+  ///
+  /// Queues are returned in lexicographical order.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required.
+  ///
+  /// The location name.
+  /// For example: `projects/PROJECT_ID/locations/LOCATION_ID`
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+$".
+  ///
+  /// [pageToken] - A token identifying the page of results to return.
+  ///
+  /// To request the first page results, page_token must be empty. To
+  /// request the next page of results, page_token must be the value of
+  /// ListQueuesResponse.next_page_token returned from the previous
+  /// call to CloudTasks.ListQueues method. It is an error to
+  /// switch the value of ListQueuesRequest.filter while iterating
+  /// through pages.
+  ///
+  /// [pageSize] - Requested page size.
+  ///
+  /// The maximum page size is 9800. If unspecified, the page size will
+  /// be the maximum. Fewer queues than requested might be returned,
+  /// even if more queues exist; use
+  /// ListQueuesResponse.next_page_token to determine if more
+  /// queues exist.
+  ///
+  /// [filter] - `filter` can be used to specify a subset of queues. Any Queue
+  /// field can be used as a filter and several operators as supported.
+  /// For example: `<=, <, >=, >, !=, =, :`. The filter syntax is the same as
+  /// described in
+  /// [Stackdriver's Advanced Logs
+  /// Filters](/logging/docs/view/advanced_filters).
+  ///
+  /// Sample filter "app_engine_http_target: *".
+  ///
+  /// Note that using filters might cause fewer queues than the
+  /// requested_page size to be returned.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListQueuesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListQueuesResponse> list(core.String parent,
+      {core.String pageToken,
+      core.int pageSize,
+      core.String filter,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        '/queues';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new ListQueuesResponse.fromJson(data));
+  }
+
+  /// Updates a queue.
+  ///
+  /// This method creates the queue if it does not exist and updates
+  /// the queue if it does exist.
+  ///
+  /// WARNING: This method is only available to whitelisted
+  /// users. Using this method carries some risk. Read
+  /// [Overview of Queue Management and
+  /// queue.yaml](/cloud-tasks/docs/queue-yaml)
+  /// carefully and then sign up for
+  /// [whitelist access to this method](https://goo.gl/Fe5mUy).
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The queue name.
+  ///
+  /// The queue name must have the following format:
+  /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`
+  ///
+  /// * `PROJECT_ID` can contain uppercase and lowercase letters,
+  ///   numbers, hyphens, colons, and periods; that is, it must match
+  ///   the regular expression: `[a-zA-Z\\d-:\\.]+`.
+  /// * `QUEUE_ID` can contain uppercase and lowercase letters,
+  ///   numbers, and hyphens; that is, it must match the regular
+  ///   expression: `[a-zA-Z\\d-]+`. The maximum length is 100
+  ///   characters.
+  ///
+  /// Caller-specified and required in CreateQueueRequest, after which
+  /// it becomes output only.
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+/queues/[^/]+$".
+  ///
+  /// [updateMask] - A mask used to specify which fields of the queue are being
+  /// updated.
+  ///
+  /// If empty, then all fields will be updated.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Queue].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Queue> patch(Queue request, core.String name,
+      {core.String updateMask, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if (updateMask != null) {
+      _queryParams["updateMask"] = [updateMask];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "PATCH",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Queue.fromJson(data));
+  }
+
+  /// Pauses the queue.
+  ///
+  /// If a queue is paused then the system will stop executing the
+  /// tasks in the queue until it is resumed via
+  /// CloudTasks.ResumeQueue. Tasks can still be added when the
+  /// queue is paused. The state of the queue is stored in
+  /// Queue.queue_state; if paused it will be set to
+  /// Queue.QueueState.PAUSED.
+  ///
+  /// WARNING: This method is only available to whitelisted
+  /// users. Using this method carries some risk. Read
+  /// [Overview of Queue Management and
+  /// queue.yaml](/cloud-tasks/docs/queue-yaml)
+  /// carefully and then sign up for
+  /// [whitelist access to this method](https://goo.gl/Fe5mUy).
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required.
+  ///
+  /// The queue name. For example:
+  /// `projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+/queues/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Queue].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Queue> pause(PauseQueueRequest request, core.String name,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url =
+        'v2beta2/' + commons.Escaper.ecapeVariableReserved('$name') + ':pause';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Queue.fromJson(data));
+  }
+
+  /// Purges a queue by deleting all of its tasks.
+  ///
+  /// All tasks created before this method is called are permanently deleted.
+  ///
+  /// Purge operations can take up to one minute to take effect. Tasks
+  /// might be dispatched before the purge takes effect. A purge is
+  /// irreversible.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required.
+  ///
+  /// The queue name. For example:
+  /// `projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+/queues/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Queue].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Queue> purge(PurgeQueueRequest request, core.String name,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url =
+        'v2beta2/' + commons.Escaper.ecapeVariableReserved('$name') + ':purge';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Queue.fromJson(data));
+  }
+
+  /// Resume a queue.
+  ///
+  /// This method resumes a queue after it has been
+  /// Queue.QueueState.PAUSED or Queue.QueueState.DISABLED. The state of
+  /// a queue is stored in Queue.queue_state; after calling this method it
+  /// will be set to Queue.QueueState.RUNNING.
+  ///
+  /// WARNING: This method is only available to whitelisted
+  /// users. Using this method carries some risk. Read
+  /// [Overview of Queue Management and
+  /// queue.yaml](/cloud-tasks/docs/queue-yaml)
+  /// carefully and then sign up for
+  /// [whitelist access to this method](https://goo.gl/Fe5mUy).
+  ///
+  /// WARNING: Resuming many high-QPS queues at the same time can
+  /// lead to target overloading. If you are resuming high-QPS
+  /// queues, follow the 500/50/5 pattern described in
+  /// [Managing Cloud Tasks Scaling
+  /// Risks](/cloud-tasks/pdfs/managing-cloud-tasks-scaling-risks-2017-06-05.pdf).
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required.
+  ///
+  /// The queue name. For example:
+  /// `projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+/queues/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Queue].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Queue> resume(ResumeQueueRequest request, core.String name,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url =
+        'v2beta2/' + commons.Escaper.ecapeVariableReserved('$name') + ':resume';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Queue.fromJson(data));
+  }
+
+  /// Sets the access control policy for a Queue. Replaces any existing
+  /// policy.
+  ///
+  /// Authorization requires the following [Google IAM](/iam) permission on the
+  /// specified resource parent:
+  ///
+  /// * `cloudtasks.queues.setIamPolicy`
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// specified.
+  /// See the operation documentation for the appropriate value for this field.
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+/queues/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Policy> setIamPolicy(
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (resource == null) {
+      throw new core.ArgumentError("Parameter resource is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' +
+        commons.Escaper.ecapeVariableReserved('$resource') +
+        ':setIamPolicy';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Policy.fromJson(data));
+  }
+
+  /// Returns permissions that a caller has on a Queue.
+  /// If the resource does not exist, this will return an empty set of
+  /// permissions, not a google.rpc.Code.NOT_FOUND error.
+  ///
+  /// Note: This operation is designed to be used for building permission-aware
+  /// UIs and command-line tools, not for authorization checking. This operation
+  /// may "fail open" without warning.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy detail is being
+  /// requested.
+  /// See the operation documentation for the appropriate value for this field.
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+/queues/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [TestIamPermissionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<TestIamPermissionsResponse> testIamPermissions(
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (resource == null) {
+      throw new core.ArgumentError("Parameter resource is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' +
+        commons.Escaper.ecapeVariableReserved('$resource') +
+        ':testIamPermissions';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new TestIamPermissionsResponse.fromJson(data));
+  }
+}
+
+class ProjectsLocationsQueuesTasksResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsQueuesTasksResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Acknowledges a pull task.
+  ///
+  /// The lease holder, that is, the entity that received this task in
+  /// a PullTasksResponse, must call this method to indicate that
+  /// the work associated with the task has finished.
+  ///
+  /// The lease holder must acknowledge a task within the
+  /// PullTasksRequest.lease_duration or the lease will expire and
+  /// the task will become ready to be returned in a different
+  /// PullTasksResponse. After the task is acknowledged, it will
+  /// not be returned by a later CloudTasks.PullTasks,
+  /// CloudTasks.GetTask, or CloudTasks.ListTasks.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required.
+  ///
+  /// The task name. For example:
+  /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> acknowledge(
+      AcknowledgeTaskRequest request, core.String name,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' +
+        commons.Escaper.ecapeVariableReserved('$name') +
+        ':acknowledge';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Empty.fromJson(data));
+  }
+
+  /// Cancel a pull task's lease.
+  ///
+  /// The lease holder can use this method to cancel a task's lease
+  /// by setting Task.schedule_time to now. This will make the task
+  /// available to be leased to the next caller of CloudTasks.PullTasks.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required.
+  ///
+  /// The task name. For example:
+  /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Task].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Task> cancelLease(CancelLeaseRequest request, core.String name,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' +
+        commons.Escaper.ecapeVariableReserved('$name') +
+        ':cancelLease';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Task.fromJson(data));
+  }
+
+  /// Creates a task and adds it to a queue.
+  ///
+  /// To add multiple tasks at the same time, use
+  /// [HTTP batching](/storage/docs/json_api/v1/how-tos/batch)
+  /// or the batching documentation for your client library, for example
+  /// https://developers.google.com/api-client-library/python/guide/batch.
+  ///
+  /// Tasks cannot be updated after creation; there is no UpdateTask command.
+  ///
+  /// * For [App Engine queues](google.cloud.tasks.v2beta2.AppEngineHttpTarget),
+  ///   the maximum task size is 100KB.
+  /// * For [pull queues](google.cloud.tasks.v2beta2.PullTarget), this
+  ///   the maximum task size is 1MB.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required.
+  ///
+  /// The queue name. For example:
+  /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`
+  ///
+  /// The queue must already exist.
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+/queues/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Task].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Task> create(CreateTaskRequest request, core.String parent,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        '/tasks';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Task.fromJson(data));
+  }
+
+  /// Deletes a task.
+  ///
+  /// A task can be deleted if it is scheduled or dispatched. A task
+  /// cannot be deleted if it has completed successfully or permanently
+  /// failed.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required.
+  ///
+  /// The task name. For example:
+  /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "DELETE",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Empty.fromJson(data));
+  }
+
+  /// Gets a task.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required.
+  ///
+  /// The task name. For example:
+  /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$".
+  ///
+  /// [responseView] - The response_view specifies which subset of the Task will
+  /// be
+  /// returned.
+  ///
+  /// By default response_view is Task.View.BASIC; not all
+  /// information is retrieved by default because some data, such as
+  /// payloads, might be desirable to return only when needed because
+  /// of its large size or because of the sensitivity of data that it
+  /// contains.
+  ///
+  /// Authorization for Task.View.FULL requires `cloudtasks.tasks.fullView`
+  /// [Google IAM](/iam/) permission on the
+  /// Task.name resource.
+  /// Possible string values are:
+  /// - "VIEW_UNSPECIFIED" : A VIEW_UNSPECIFIED.
+  /// - "BASIC" : A BASIC.
+  /// - "FULL" : A FULL.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Task].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Task> get(core.String name,
+      {core.String responseView, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if (responseView != null) {
+      _queryParams["responseView"] = [responseView];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Task.fromJson(data));
+  }
+
+  /// Lists the tasks in a queue.
+  ///
+  /// By default response_view is Task.View.BASIC; not all
+  /// information is retrieved by default due to performance
+  /// considerations; ListTasksRequest.response_view controls the
+  /// subset of information which is returned.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required.
+  ///
+  /// The queue name. For example:
+  /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+/queues/[^/]+$".
+  ///
+  /// [responseView] - The response_view specifies which subset of the Task will
+  /// be
+  /// returned.
+  ///
+  /// By default response_view is Task.View.BASIC; not all
+  /// information is retrieved by default because some data, such as
+  /// payloads, might be desirable to return only when needed because
+  /// of its large size or because of the sensitivity of data that it
+  /// contains.
+  ///
+  /// Authorization for Task.View.FULL requires `cloudtasks.tasks.fullView`
+  /// [Google IAM](/iam/) permission on the
+  /// Task.name resource.
+  /// Possible string values are:
+  /// - "VIEW_UNSPECIFIED" : A VIEW_UNSPECIFIED.
+  /// - "BASIC" : A BASIC.
+  /// - "FULL" : A FULL.
+  ///
+  /// [orderBy] -
+  /// Sort order used for the query. The fields supported for sorting
+  /// are Task.schedule_time and PullMessage.tag. All results will be
+  /// returned in approximately ascending order. The default ordering is by
+  /// Task.schedule_time.
+  ///
+  /// [pageToken] - A token identifying the page of results to return.
+  ///
+  /// To request the first page results, page_token must be empty. To
+  /// request the next page of results, page_token must be the value of
+  /// ListTasksResponse.next_page_token returned from the previous
+  /// call to CloudTasks.ListTasks method.
+  ///
+  /// The page token is valid for only 2 hours.
+  ///
+  /// [pageSize] - Requested page size. Fewer tasks than requested might be
+  /// returned.
+  ///
+  /// The maximum page size is 1000. If unspecified, the page size will
+  /// be the maximum. Fewer tasks than requested might be returned,
+  /// even if more tasks exist; use
+  /// ListTasksResponse.next_page_token to determine if more tasks
+  /// exist.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListTasksResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListTasksResponse> list(core.String parent,
+      {core.String responseView,
+      core.String orderBy,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if (responseView != null) {
+      _queryParams["responseView"] = [responseView];
+    }
+    if (orderBy != null) {
+      _queryParams["orderBy"] = [orderBy];
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        '/tasks';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new ListTasksResponse.fromJson(data));
+  }
+
+  /// Pulls tasks from a pull queue and acquires a lease on them for a
+  /// specified PullTasksRequest.lease_duration.
+  ///
+  /// This method is invoked by the lease holder to obtain the
+  /// lease. The lease holder must acknowledge the task via
+  /// CloudTasks.AcknowledgeTask after they have performed the work
+  /// associated with the task.
+  ///
+  /// The payload is intended to store data that the lease holder needs
+  /// to perform the work associated with the task. To return the
+  /// payloads in the PullTasksResponse, set
+  /// PullTasksRequest.response_view to Task.View.FULL.
+  ///
+  /// A maximum of 10 qps of CloudTasks.PullTasks requests are allowed per
+  /// queue. google.rpc.Code.RESOURCE_EXHAUSTED is returned when this limit
+  /// is exceeded. google.rpc.Code.RESOURCE_EXHAUSTED is also returned when
+  /// RateLimits.max_tasks_dispatched_per_second is exceeded.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required.
+  ///
+  /// The queue name. For example:
+  /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`
+  /// Value must have pattern "^projects/[^/]+/locations/[^/]+/queues/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [PullTasksResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<PullTasksResponse> pull(
+      PullTasksRequest request, core.String name,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' +
+        commons.Escaper.ecapeVariableReserved('$name') +
+        '/tasks:pull';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new PullTasksResponse.fromJson(data));
+  }
+
+  /// Renew the current lease of a pull task.
+  ///
+  /// The lease holder can use this method to extend the lease by a new
+  /// duration, starting from now. The new task lease will be
+  /// returned in Task.schedule_time.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required.
+  ///
+  /// The task name. For example:
+  /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Task].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Task> renewLease(RenewLeaseRequest request, core.String name,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' +
+        commons.Escaper.ecapeVariableReserved('$name') +
+        ':renewLease';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Task.fromJson(data));
+  }
+
+  /// Forces a task to run now.
+  ///
+  /// This command is meant to be used for manual debugging. For
+  /// example, CloudTasks.RunTask can be used to retry a failed
+  /// task after a fix has been made or to manually force a task to be
+  /// dispatched now.
+  ///
+  /// When this method is called, Cloud Tasks will dispatch the task to its
+  /// target, even if the queue is Queue.QueueState.PAUSED.
+  ///
+  /// The dispatched task is returned. That is, the task that is returned
+  /// contains the Task.task_status after the task is dispatched but
+  /// before the task is received by its target.
+  ///
+  /// If Cloud Tasks receives a successful response from the task's
+  /// handler, then the task will be deleted; otherwise the task's
+  /// Task.schedule_time will be reset to the time that
+  /// CloudTasks.RunTask was called plus the retry delay specified
+  /// in the queue and task's RetryConfig.
+  ///
+  /// CloudTasks.RunTask returns google.rpc.Code.NOT_FOUND when
+  /// it is called on a task that has already succeeded or permanently
+  /// failed. google.rpc.Code.FAILED_PRECONDITION is returned when
+  /// CloudTasks.RunTask is called on task that is dispatched or
+  /// already running.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required.
+  ///
+  /// The task name. For example:
+  /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`
+  /// Value must have pattern
+  /// "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Task].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Task> run(RunTaskRequest request, core.String name,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v2beta2/' + commons.Escaper.ecapeVariableReserved('$name') + ':run';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Task.fromJson(data));
+  }
+}
+
+/// Request message for acknowledging a task using
+/// CloudTasks.AcknowledgeTask.
+class AcknowledgeTaskRequest {
+  /// Required.
+  ///
+  /// The task's current schedule time, available in the Task.schedule_time
+  /// returned in PullTasksResponse.tasks or
+  /// CloudTasks.RenewLease. This restriction is to check that
+  /// the caller is acknowledging the correct task.
+  core.String scheduleTime;
+
+  AcknowledgeTaskRequest();
+
+  AcknowledgeTaskRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("scheduleTime")) {
+      scheduleTime = _json["scheduleTime"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (scheduleTime != null) {
+      _json["scheduleTime"] = scheduleTime;
+    }
+    return _json;
+  }
+}
+
+/// App Engine HTTP request.
+///
+/// The message defines the HTTP request that is sent to an App Engine app when
+/// the task is dispatched.
+///
+/// This proto can only be used for tasks in a queue which has
+/// Queue.app_engine_http_target set.
+///
+/// Using AppEngineHttpRequest requires
+/// [`appengine.applications.get`](/appengine/docs/admin-api/access-control)
+/// Google IAM permission for the project
+/// and the following scope:
+///
+/// `https://www.googleapis.com/auth/cloud-platform`
+///
+/// The task will be delivered to the App Engine app which belongs to the same
+/// project as the queue. For more information, see
+/// [How Requests are
+/// Routed](/appengine/docs/standard/python/how-requests-are-routed)
+/// and how routing is affected by
+/// [dispatch files](/appengine/docs/python/config/dispatchref).
+///
+/// The AppEngineRouting used to construct the URL that the task is
+/// delivered to can be set at the queue-level or task-level:
+///
+/// *  If set, AppEngineHttpTarget.app_engine_routing_override is used for
+///    all tasks in the queue, no matter what the setting is for the
+///    task-level app_engine_routing.
+///
+///
+/// The `url` that the task will be sent to is:
+///
+/// * `url =` AppEngineRouting.host `+` AppEngineHttpRequest.relative_url
+///
+/// The task will be sent to a task handler by an HTTP
+/// request using the specified AppEngineHttpRequest.http_method (for example
+/// POST, HTTP GET, etc). The task attempt has succeeded if the task handler
+/// returns an HTTP response code in the range [200 - 299]. Error 503 is
+/// considered an App Engine system error instead of an application error.
+/// Requests returning error 503 will be retried regardless of retry
+/// configuration and not counted against retry counts.
+/// Any other response code or a failure to receive a response before the
+/// deadline is a failed attempt.
+class AppEngineHttpRequest {
+  /// Task-level setting for App Engine routing.
+  ///
+  /// If set, AppEngineHttpTarget.app_engine_routing_override is used for
+  /// all tasks in the queue, no matter what the setting is for the
+  /// task-level app_engine_routing.
+  AppEngineRouting appEngineRouting;
+
+  /// HTTP request headers.
+  ///
+  /// This map contains the header field names and values.
+  /// Headers can be set when the
+  /// [task is created](google.cloud.tasks.v2beta2.CloudTasks.CreateTask).
+  /// Repeated headers are not supported but a header value can contain commas.
+  ///
+  /// Cloud Tasks sets some headers to default values:
+  ///
+  /// * `User-Agent`: By default, this header is
+  ///   `"AppEngine-Google; (+http://code.google.com/appengine)"`.
+  ///   This header can be modified, but Cloud Tasks will append
+  ///   `"AppEngine-Google; (+http://code.google.com/appengine)"` to the
+  ///   modified `User-Agent`.
+  ///
+  /// If the task has an AppEngineHttpRequest.payload, Cloud Tasks sets the
+  /// following headers:
+  ///
+  /// * `Content-Type`: By default, the `Content-Type` header is set to
+  /// `"application/octet-stream"`. The default can be overridden by explictly
+  ///   setting `Content-Type` to a particular media type when the
+  ///   [task is created](google.cloud.tasks.v2beta2.CloudTasks.CreateTask).
+  ///   For example, `Content-Type` can be set to `"application/json"`.
+  /// * `Content-Length`: This is computed by Cloud Tasks. This value is
+  ///   output only. It cannot be changed.
+  ///
+  /// The headers below cannot be set or overridden:
+  ///
+  /// * `Host`
+  /// * `X-Google-*`
+  /// * `X-AppEngine-*`
+  ///
+  /// In addition, some App Engine headers, which contain
+  /// task-specific information, are also be sent to the task handler; see
+  /// [request
+  /// headers](/appengine/docs/python/taskqueue/push/creating-handlers#reading_request_headers).
+  core.Map<core.String, core.String> headers;
+
+  /// The HTTP method to use for the request. The default is POST.
+  ///
+  /// The app's request handler for the task's target URL must be able to handle
+  /// HTTP requests with this http_method, otherwise the task attempt will fail
+  /// with error code 405 (Method Not Allowed). See
+  /// the Request-Line is not allowed for the resource identified by the
+  /// Request-URI". See
+  /// [Writing a push task request
+  /// handler](/appengine/docs/java/taskqueue/push/creating-handlers#writing_a_push_task_request_handler)
+  /// and the documentation for the request handlers in the language your app is
+  /// written in e.g.
+  /// [python
+  /// RequestHandler](/appengine/docs/python/tools/webapp/requesthandlerclass).
+  /// Possible string values are:
+  /// - "HTTP_METHOD_UNSPECIFIED" : HTTP method unspecified
+  /// - "POST" : HTTP Post
+  /// - "GET" : HTTP Get
+  /// - "HEAD" : HTTP Head
+  /// - "PUT" : HTTP Put
+  /// - "DELETE" : HTTP Delete
+  core.String httpMethod;
+
+  /// Payload.
+  ///
+  /// The payload will be sent as the HTTP message body. A message
+  /// body, and thus a payload, is allowed only if the HTTP method is
+  /// POST or PUT. It is an error to set a data payload on a task with
+  /// an incompatible HttpMethod.
+  core.String payload;
+  core.List<core.int> get payloadAsBytes {
+    return convert.BASE64.decode(payload);
+  }
+
+  void set payloadAsBytes(core.List<core.int> _bytes) {
+    payload =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  /// The relative URL.
+  ///
+  /// The relative URL must begin with "/" and must be a valid HTTP relative
+  /// URL.
+  /// It can contain a path and query string arguments.
+  /// If the relative URL is empty, then the root path "/" will be used.
+  /// No spaces are allowed, and the maximum length allowed is 2083 characters.
+  core.String relativeUrl;
+
+  AppEngineHttpRequest();
+
+  AppEngineHttpRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("appEngineRouting")) {
+      appEngineRouting =
+          new AppEngineRouting.fromJson(_json["appEngineRouting"]);
+    }
+    if (_json.containsKey("headers")) {
+      headers = _json["headers"];
+    }
+    if (_json.containsKey("httpMethod")) {
+      httpMethod = _json["httpMethod"];
+    }
+    if (_json.containsKey("payload")) {
+      payload = _json["payload"];
+    }
+    if (_json.containsKey("relativeUrl")) {
+      relativeUrl = _json["relativeUrl"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (appEngineRouting != null) {
+      _json["appEngineRouting"] = (appEngineRouting).toJson();
+    }
+    if (headers != null) {
+      _json["headers"] = headers;
+    }
+    if (httpMethod != null) {
+      _json["httpMethod"] = httpMethod;
+    }
+    if (payload != null) {
+      _json["payload"] = payload;
+    }
+    if (relativeUrl != null) {
+      _json["relativeUrl"] = relativeUrl;
+    }
+    return _json;
+  }
+}
+
+/// App Engine HTTP target.
+///
+/// The task will be delivered to the App Engine application hostname
+/// specified by its AppEngineHttpTarget and AppEngineHttpRequest.
+/// The documentation for AppEngineHttpRequest explains how the
+/// task's host URL is constructed.
+///
+/// Using AppEngineHttpTarget requires
+/// [`appengine.applications.get`](/appengine/docs/admin-api/access-control)
+/// Google IAM permission for the project
+/// and the following scope:
+///
+/// `https://www.googleapis.com/auth/cloud-platform`
+class AppEngineHttpTarget {
+  /// Overrides for the
+  /// task-level app_engine_routing.
+  ///
+  /// If set, AppEngineHttpTarget.app_engine_routing_override is used for
+  /// all tasks in the queue, no matter what the setting is for the
+  /// task-level app_engine_routing.
+  AppEngineRouting appEngineRoutingOverride;
+
+  AppEngineHttpTarget();
+
+  AppEngineHttpTarget.fromJson(core.Map _json) {
+    if (_json.containsKey("appEngineRoutingOverride")) {
+      appEngineRoutingOverride =
+          new AppEngineRouting.fromJson(_json["appEngineRoutingOverride"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (appEngineRoutingOverride != null) {
+      _json["appEngineRoutingOverride"] = (appEngineRoutingOverride).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Deprecated. Use AppEngineHttpTarget.
+class AppEngineQueueConfig {
+  /// Deprecated. Use AppEngineHttpTarget.app_engine_routing_override.
+  AppEngineRouting appEngineRoutingOverride;
+
+  AppEngineQueueConfig();
+
+  AppEngineQueueConfig.fromJson(core.Map _json) {
+    if (_json.containsKey("appEngineRoutingOverride")) {
+      appEngineRoutingOverride =
+          new AppEngineRouting.fromJson(_json["appEngineRoutingOverride"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (appEngineRoutingOverride != null) {
+      _json["appEngineRoutingOverride"] = (appEngineRoutingOverride).toJson();
+    }
+    return _json;
+  }
+}
+
+/// App Engine Routing.
+///
+/// For more information about services, versions, and instances see
+/// [An Overview of App
+/// Engine](/appengine/docs/python/an-overview-of-app-engine),
+/// [Microservices Architecture on Google App
+/// Engine](/appengine/docs/python/microservices-on-app-engine),
+/// [App Engine Standard request
+/// routing](/appengine/docs/standard/python/how-requests-are-routed),
+/// and [App Engine Flex request
+/// routing](/appengine/docs/flexible/python/how-requests-are-routed).
+class AppEngineRouting {
+  /// Output only.
+  ///
+  /// The host that the task is sent to. For more information, see
+  /// [How Requests are
+  /// Routed](/appengine/docs/standard/python/how-requests-are-routed).
+  ///
+  /// The host is constructed as:
+  ///
+  ///
+  /// * `host = [application_domain_name]`</br>
+  ///   `| [service] + '.' + [application_domain_name]`</br>
+  ///   `| [version] + '.' + [application_domain_name]`</br>
+  ///   `| [version_dot_service]+ '.' + [application_domain_name]`</br>
+  ///   `| [instance] + '.' + [application_domain_name]`</br>
+  ///   `| [instance_dot_service] + '.' + [application_domain_name]`</br>
+  ///   `| [instance_dot_version] + '.' + [application_domain_name]`</br>
+  /// `| [instance_dot_version_dot_service] + '.' + [application_domain_name]`
+  ///
+  /// * `application_domain_name` = The domain name of the app, for
+  ///   example <app-id>.appspot.com, which is associated with the
+  ///   queue's project ID. Some tasks which were created using the App Engine
+  ///   SDK use a custom domain name.
+  ///
+  /// * `service =` AppEngineRouting.service
+  ///
+  /// * `version =` AppEngineRouting.version
+  ///
+  /// * `version_dot_service =`
+  ///   AppEngineRouting.version `+ '.' +` AppEngineRouting.service
+  ///
+  /// * `instance =` AppEngineRouting.instance
+  ///
+  /// * `instance_dot_service =`
+  ///   AppEngineRouting.instance `+ '.' +` AppEngineRouting.service
+  ///
+  /// * `instance_dot_version =`
+  ///   AppEngineRouting.instance `+ '.' +` AppEngineRouting.version
+  ///
+  /// * `instance_dot_version_dot_service =`
+  ///   AppEngineRouting.instance `+ '.' +`
+  ///   AppEngineRouting.version `+ '.' +` AppEngineRouting.service
+  ///
+  /// If AppEngineRouting.service is empty, then the task will be sent
+  /// to the service which is the default service when the task is attempted.
+  ///
+  /// If AppEngineRouting.version is empty, then the task will be sent
+  /// to the version which is the default version when the task is attempted.
+  ///
+  /// If AppEngineRouting.instance is empty, then the task will be sent
+  /// to an instance which is available when the task is attempted.
+  ///
+  /// When AppEngineRouting.service is "default",
+  /// AppEngineRouting.version is "default", and
+  /// AppEngineRouting.instance is empty, AppEngineRouting.host is
+  /// shortened to just the `application_domain_name`.
+  ///
+  /// If AppEngineRouting.service, AppEngineRouting.version, or
+  /// AppEngineRouting.instance is invalid, then the task will be sent
+  /// to the default version of the default service when the task is attempted.
+  core.String host;
+
+  /// App instance.
+  ///
+  /// By default, the task is sent to an instance which is available when
+  /// the task is attempted.
+  ///
+  /// Requests can only be sent to a specific instance if
+  /// [manual scaling is used in App Engine
+  /// Standard](/appengine/docs/python/an-overview-of-app-engine?hl=en_US#scaling_types_and_instance_classes).
+  /// App Engine Flex does not support instances. For more information, see
+  /// [App Engine Standard request
+  /// routing](/appengine/docs/standard/python/how-requests-are-routed)
+  /// and [App Engine Flex request
+  /// routing](/appengine/docs/flexible/python/how-requests-are-routed).
+  core.String instance;
+
+  /// App service.
+  ///
+  /// By default, the task is sent to the service which is the default
+  /// service when the task is attempted ("default").
+  ///
+  /// For some queues or tasks which were created using the App Engine Task
+  /// Queue
+  /// API, AppEngineRouting.host is not parsable into
+  /// AppEngineRouting.service, AppEngineRouting.version, and
+  /// AppEngineRouting.instance. For example, some tasks which were created
+  /// using the App Engine SDK use a custom domain name; custom domains are not
+  /// parsed by Cloud Tasks. If AppEngineRouting.host is not parsable, then
+  /// AppEngineRouting.service, AppEngineRouting.version, and
+  /// AppEngineRouting.instance are the empty string.
+  core.String service;
+
+  /// App version.
+  ///
+  /// By default, the task is sent to the version which is the default
+  /// version when the task is attempted ("default").
+  ///
+  /// For some queues or tasks which were created using the App Engine Task
+  /// Queue
+  /// API, AppEngineRouting.host is not parsable into
+  /// AppEngineRouting.service, AppEngineRouting.version, and
+  /// AppEngineRouting.instance. For example, some tasks which were created
+  /// using the App Engine SDK use a custom domain name; custom domains are not
+  /// parsed by Cloud Tasks. If AppEngineRouting.host is not parsable, then
+  /// AppEngineRouting.service, AppEngineRouting.version, and
+  /// AppEngineRouting.instance are the empty string.
+  core.String version;
+
+  AppEngineRouting();
+
+  AppEngineRouting.fromJson(core.Map _json) {
+    if (_json.containsKey("host")) {
+      host = _json["host"];
+    }
+    if (_json.containsKey("instance")) {
+      instance = _json["instance"];
+    }
+    if (_json.containsKey("service")) {
+      service = _json["service"];
+    }
+    if (_json.containsKey("version")) {
+      version = _json["version"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (host != null) {
+      _json["host"] = host;
+    }
+    if (instance != null) {
+      _json["instance"] = instance;
+    }
+    if (service != null) {
+      _json["service"] = service;
+    }
+    if (version != null) {
+      _json["version"] = version;
+    }
+    return _json;
+  }
+}
+
+/// Deprecated. Use AppEngineHttpRequest.
+class AppEngineTaskTarget {
+  /// Deprecated. Use AppEngineHttpRequest.app_engine_routing.
+  AppEngineRouting appEngineRouting;
+
+  /// Deprecated. Use AppEngineHttpRequest.headers.
+  core.Map<core.String, core.String> headers;
+
+  /// Deprecated. Use AppEngineHttpRequest.http_method.
+  /// Possible string values are:
+  /// - "HTTP_METHOD_UNSPECIFIED" : HTTP method unspecified
+  /// - "POST" : HTTP Post
+  /// - "GET" : HTTP Get
+  /// - "HEAD" : HTTP Head
+  /// - "PUT" : HTTP Put
+  /// - "DELETE" : HTTP Delete
+  core.String httpMethod;
+
+  /// Deprecated. Use AppEngineHttpRequest.payload.
+  core.String payload;
+  core.List<core.int> get payloadAsBytes {
+    return convert.BASE64.decode(payload);
+  }
+
+  void set payloadAsBytes(core.List<core.int> _bytes) {
+    payload =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  /// Deprecated. Use AppEngineHttpRequest.relative_url.
+  core.String relativeUrl;
+
+  AppEngineTaskTarget();
+
+  AppEngineTaskTarget.fromJson(core.Map _json) {
+    if (_json.containsKey("appEngineRouting")) {
+      appEngineRouting =
+          new AppEngineRouting.fromJson(_json["appEngineRouting"]);
+    }
+    if (_json.containsKey("headers")) {
+      headers = _json["headers"];
+    }
+    if (_json.containsKey("httpMethod")) {
+      httpMethod = _json["httpMethod"];
+    }
+    if (_json.containsKey("payload")) {
+      payload = _json["payload"];
+    }
+    if (_json.containsKey("relativeUrl")) {
+      relativeUrl = _json["relativeUrl"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (appEngineRouting != null) {
+      _json["appEngineRouting"] = (appEngineRouting).toJson();
+    }
+    if (headers != null) {
+      _json["headers"] = headers;
+    }
+    if (httpMethod != null) {
+      _json["httpMethod"] = httpMethod;
+    }
+    if (payload != null) {
+      _json["payload"] = payload;
+    }
+    if (relativeUrl != null) {
+      _json["relativeUrl"] = relativeUrl;
+    }
+    return _json;
+  }
+}
+
+/// The status of a task attempt.
+class AttemptStatus {
+  /// Output only.
+  ///
+  /// The time that this attempt was dispatched.
+  ///
+  /// `dispatch_time` will be truncated to the nearest microsecond.
+  core.String dispatchTime;
+
+  /// Output only.
+  ///
+  /// The response from the target for this attempt.
+  ///
+  /// If the task has not been attempted or the task is currently running
+  /// then the response status is google.rpc.Code.UNKNOWN.
+  Status responseStatus;
+
+  /// Output only.
+  ///
+  /// The time that this attempt response was received.
+  ///
+  /// `response_time` will be truncated to the nearest microsecond.
+  core.String responseTime;
+
+  /// Output only.
+  ///
+  /// The time that this attempt was scheduled.
+  ///
+  /// `schedule_time` will be truncated to the nearest microsecond.
+  core.String scheduleTime;
+
+  AttemptStatus();
+
+  AttemptStatus.fromJson(core.Map _json) {
+    if (_json.containsKey("dispatchTime")) {
+      dispatchTime = _json["dispatchTime"];
+    }
+    if (_json.containsKey("responseStatus")) {
+      responseStatus = new Status.fromJson(_json["responseStatus"]);
+    }
+    if (_json.containsKey("responseTime")) {
+      responseTime = _json["responseTime"];
+    }
+    if (_json.containsKey("scheduleTime")) {
+      scheduleTime = _json["scheduleTime"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (dispatchTime != null) {
+      _json["dispatchTime"] = dispatchTime;
+    }
+    if (responseStatus != null) {
+      _json["responseStatus"] = (responseStatus).toJson();
+    }
+    if (responseTime != null) {
+      _json["responseTime"] = responseTime;
+    }
+    if (scheduleTime != null) {
+      _json["scheduleTime"] = scheduleTime;
+    }
+    return _json;
+  }
+}
+
+/// Associates `members` with a `role`.
+class Binding {
+  /// Specifies the identities requesting access for a Cloud Platform resource.
+  /// `members` can have the following values:
+  ///
+  /// * `allUsers`: A special identifier that represents anyone who is
+  ///    on the internet; with or without a Google account.
+  ///
+  /// * `allAuthenticatedUsers`: A special identifier that represents anyone
+  ///    who is authenticated with a Google account or a service account.
+  ///
+  /// * `user:{emailid}`: An email address that represents a specific Google
+  ///    account. For example, `alice@gmail.com` or `joe@example.com`.
+  ///
+  ///
+  /// * `serviceAccount:{emailid}`: An email address that represents a service
+  ///    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+  ///
+  /// * `group:{emailid}`: An email address that represents a Google group.
+  ///    For example, `admins@example.com`.
+  ///
+  ///
+  /// * `domain:{domain}`: A Google Apps domain name that represents all the
+  ///    users of that domain. For example, `google.com` or `example.com`.
+  core.List<core.String> members;
+
+  /// Role that is assigned to `members`.
+  /// For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+  /// Required
+  core.String role;
+
+  Binding();
+
+  Binding.fromJson(core.Map _json) {
+    if (_json.containsKey("members")) {
+      members = _json["members"];
+    }
+    if (_json.containsKey("role")) {
+      role = _json["role"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (members != null) {
+      _json["members"] = members;
+    }
+    if (role != null) {
+      _json["role"] = role;
+    }
+    return _json;
+  }
+}
+
+/// Request message for canceling a lease using
+/// CloudTasks.CancelLease.
+class CancelLeaseRequest {
+  /// The response_view specifies which subset of the Task will be
+  /// returned.
+  ///
+  /// By default response_view is Task.View.BASIC; not all
+  /// information is retrieved by default because some data, such as
+  /// payloads, might be desirable to return only when needed because
+  /// of its large size or because of the sensitivity of data that it
+  /// contains.
+  ///
+  /// Authorization for Task.View.FULL requires `cloudtasks.tasks.fullView`
+  /// [Google IAM](/iam/) permission on the
+  /// Task.name resource.
+  /// Possible string values are:
+  /// - "VIEW_UNSPECIFIED" : Unspecified. Defaults to BASIC.
+  /// - "BASIC" : The basic view omits fields which can be large or can contain
+  /// sensitive data.
+  ///
+  /// This view does not include the payload.
+  /// - "FULL" : All information is returned.
+  ///
+  /// Payloads might be desirable to return only when needed, because
+  /// they can be large and because of the sensitivity of the data
+  /// that you choose to store in it.
+  ///
+  /// Authorization for Task.View.FULL requires
+  /// `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)
+  /// permission on the Queue.name resource.
+  core.String responseView;
+
+  /// Required.
+  ///
+  /// The task's current schedule time, available in the Task.schedule_time
+  /// returned in PullTasksResponse.tasks or
+  /// CloudTasks.RenewLease. This restriction is to check that
+  /// the caller is canceling the correct task.
+  core.String scheduleTime;
+
+  CancelLeaseRequest();
+
+  CancelLeaseRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("responseView")) {
+      responseView = _json["responseView"];
+    }
+    if (_json.containsKey("scheduleTime")) {
+      scheduleTime = _json["scheduleTime"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (responseView != null) {
+      _json["responseView"] = responseView;
+    }
+    if (scheduleTime != null) {
+      _json["scheduleTime"] = scheduleTime;
+    }
+    return _json;
+  }
+}
+
+/// Request message for CloudTasks.CreateTask.
+class CreateTaskRequest {
+  /// The response_view specifies which subset of the Task will be
+  /// returned.
+  ///
+  /// By default response_view is Task.View.BASIC; not all
+  /// information is retrieved by default because some data, such as
+  /// payloads, might be desirable to return only when needed because
+  /// of its large size or because of the sensitivity of data that it
+  /// contains.
+  ///
+  /// Authorization for Task.View.FULL requires `cloudtasks.tasks.fullView`
+  /// [Google IAM](/iam/) permission on the
+  /// Task.name resource.
+  /// Possible string values are:
+  /// - "VIEW_UNSPECIFIED" : Unspecified. Defaults to BASIC.
+  /// - "BASIC" : The basic view omits fields which can be large or can contain
+  /// sensitive data.
+  ///
+  /// This view does not include the payload.
+  /// - "FULL" : All information is returned.
+  ///
+  /// Payloads might be desirable to return only when needed, because
+  /// they can be large and because of the sensitivity of the data
+  /// that you choose to store in it.
+  ///
+  /// Authorization for Task.View.FULL requires
+  /// `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)
+  /// permission on the Queue.name resource.
+  core.String responseView;
+
+  /// Required.
+  ///
+  /// The task to add.
+  ///
+  /// Task names have the following format:
+  /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`.
+  /// The user can optionally specify a name for the task in
+  /// Task.name. If a name is not specified then the system will
+  /// generate a random unique task id, which will be returned in the
+  /// response's Task.name.
+  ///
+  /// If Task.schedule_time is not set or is in the past then Cloud
+  /// Tasks will set it to the current time.
+  ///
+  /// Task De-duplication:
+  ///
+  /// Explicitly specifying a task ID enables task de-duplication.  If
+  /// a task's ID is identical to that of an existing task or a task
+  /// that was deleted or completed recently then the call will fail
+  /// with google.rpc.Code.ALREADY_EXISTS. If the task's queue was
+  /// created using Cloud Tasks, then another task with the same name
+  /// can't be created for ~1hour after the original task was deleted
+  /// or completed. If the task's queue was created using queue.yaml or
+  /// queue.xml, then another task with the same name can't be created
+  /// for ~9days after the original task was deleted or completed.
+  ///
+  /// Because there is an extra lookup cost to identify duplicate task
+  /// names, these CloudTasks.CreateTask calls have significantly
+  /// increased latency. Using hashed strings for the task id or for
+  /// the prefix of the task id is recommended. Choosing task ids that
+  /// are sequential or have sequential prefixes, for example using a
+  /// timestamp, causes an increase in latency and error rates in all
+  /// task commands. The infrastructure relies on an approximately
+  /// uniform distribution of task ids to store and serve tasks
+  /// efficiently.
+  Task task;
+
+  CreateTaskRequest();
+
+  CreateTaskRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("responseView")) {
+      responseView = _json["responseView"];
+    }
+    if (_json.containsKey("task")) {
+      task = new Task.fromJson(_json["task"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (responseView != null) {
+      _json["responseView"] = responseView;
+    }
+    if (task != null) {
+      _json["task"] = (task).toJson();
+    }
+    return _json;
+  }
+}
+
+/// A generic empty message that you can re-use to avoid defining duplicated
+/// empty messages in your APIs. A typical example is to use it as the request
+/// or the response type of an API method. For instance:
+///
+///     service Foo {
+///       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
+///     }
+///
+/// The JSON representation for `Empty` is empty JSON object `{}`.
+class Empty {
+  Empty();
+
+  Empty.fromJson(core.Map _json) {}
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    return _json;
+  }
+}
+
+/// Request message for `GetIamPolicy` method.
+class GetIamPolicyRequest {
+  GetIamPolicyRequest();
+
+  GetIamPolicyRequest.fromJson(core.Map _json) {}
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    return _json;
+  }
+}
+
+/// The response message for Locations.ListLocations.
+class ListLocationsResponse {
+  /// A list of locations that matches the specified filter in the request.
+  core.List<Location> locations;
+
+  /// The standard List next-page token.
+  core.String nextPageToken;
+
+  ListLocationsResponse();
+
+  ListLocationsResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("locations")) {
+      locations = _json["locations"]
+          .map((value) => new Location.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (locations != null) {
+      _json["locations"] = locations.map((value) => (value).toJson()).toList();
+    }
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    return _json;
+  }
+}
+
+/// Response message for CloudTasks.ListQueues.
+class ListQueuesResponse {
+  /// A token to retrieve next page of results.
+  ///
+  /// To return the next page of results, call
+  /// CloudTasks.ListQueues with this value as the
+  /// ListQueuesRequest.page_token.
+  ///
+  /// If the next_page_token is empty, there are no more results.
+  ///
+  /// The page token is valid for only 2 hours.
+  core.String nextPageToken;
+
+  /// The list of queues.
+  core.List<Queue> queues;
+
+  ListQueuesResponse();
+
+  ListQueuesResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+    if (_json.containsKey("queues")) {
+      queues =
+          _json["queues"].map((value) => new Queue.fromJson(value)).toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    if (queues != null) {
+      _json["queues"] = queues.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// Response message for listing tasks using CloudTasks.ListTasks.
+class ListTasksResponse {
+  /// A token to retrieve next page of results.
+  ///
+  /// To return the next page of results, call
+  /// CloudTasks.ListTasks with this value as the
+  /// ListTasksRequest.page_token.
+  ///
+  /// If the next_page_token is empty, there are no more results.
+  core.String nextPageToken;
+
+  /// The list of tasks.
+  core.List<Task> tasks;
+
+  ListTasksResponse();
+
+  ListTasksResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+    if (_json.containsKey("tasks")) {
+      tasks = _json["tasks"].map((value) => new Task.fromJson(value)).toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    if (tasks != null) {
+      _json["tasks"] = tasks.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// A resource that represents Google Cloud Platform location.
+class Location {
+  /// Cross-service attributes for the location. For example
+  ///
+  ///     {"cloud.googleapis.com/region": "us-east1"}
+  core.Map<core.String, core.String> labels;
+
+  /// The canonical id for this location. For example: `"us-east1"`.
+  core.String locationId;
+
+  /// Service-specific metadata. For example the available capacity at the given
+  /// location.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.Map<core.String, core.Object> metadata;
+
+  /// Resource name for the location, which may vary between implementations.
+  /// For example: `"projects/example-project/locations/us-east1"`
+  core.String name;
+
+  Location();
+
+  Location.fromJson(core.Map _json) {
+    if (_json.containsKey("labels")) {
+      labels = _json["labels"];
+    }
+    if (_json.containsKey("locationId")) {
+      locationId = _json["locationId"];
+    }
+    if (_json.containsKey("metadata")) {
+      metadata = _json["metadata"];
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (labels != null) {
+      _json["labels"] = labels;
+    }
+    if (locationId != null) {
+      _json["locationId"] = locationId;
+    }
+    if (metadata != null) {
+      _json["metadata"] = metadata;
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    return _json;
+  }
+}
+
+/// Request message for CloudTasks.PauseQueue.
+class PauseQueueRequest {
+  PauseQueueRequest();
+
+  PauseQueueRequest.fromJson(core.Map _json) {}
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    return _json;
+  }
+}
+
+/// Defines an Identity and Access Management (IAM) policy. It is used to
+/// specify access control policies for Cloud Platform resources.
+///
+///
+/// A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+/// `members` to a `role`, where the members can be user accounts, Google
+/// groups,
+/// Google domains, and service accounts. A `role` is a named list of
+/// permissions
+/// defined by IAM.
+///
+/// **Example**
+///
+///     {
+///       "bindings": [
+///         {
+///           "role": "roles/owner",
+///           "members": [
+///             "user:mike@example.com",
+///             "group:admins@example.com",
+///             "domain:google.com",
+///             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+///           ]
+///         },
+///         {
+///           "role": "roles/viewer",
+///           "members": ["user:sean@example.com"]
+///         }
+///       ]
+///     }
+///
+/// For a description of IAM and its features, see the
+/// [IAM developer's guide](https://cloud.google.com/iam).
+class Policy {
+  /// Associates a list of `members` to a `role`.
+  /// `bindings` with no members will result in an error.
+  core.List<Binding> bindings;
+
+  /// `etag` is used for optimistic concurrency control as a way to help
+  /// prevent simultaneous updates of a policy from overwriting each other.
+  /// It is strongly suggested that systems make use of the `etag` in the
+  /// read-modify-write cycle to perform policy updates in order to avoid race
+  /// conditions: An `etag` is returned in the response to `getIamPolicy`, and
+  /// systems are expected to put that etag in the request to `setIamPolicy` to
+  /// ensure that their change will be applied to the same version of the
+  /// policy.
+  ///
+  /// If no `etag` is provided in the call to `setIamPolicy`, then the existing
+  /// policy is overwritten blindly.
+  core.String etag;
+  core.List<core.int> get etagAsBytes {
+    return convert.BASE64.decode(etag);
+  }
+
+  void set etagAsBytes(core.List<core.int> _bytes) {
+    etag =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  /// Version of the `Policy`. The default version is 0.
+  core.int version;
+
+  Policy();
+
+  Policy.fromJson(core.Map _json) {
+    if (_json.containsKey("bindings")) {
+      bindings = _json["bindings"]
+          .map((value) => new Binding.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("etag")) {
+      etag = _json["etag"];
+    }
+    if (_json.containsKey("version")) {
+      version = _json["version"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (bindings != null) {
+      _json["bindings"] = bindings.map((value) => (value).toJson()).toList();
+    }
+    if (etag != null) {
+      _json["etag"] = etag;
+    }
+    if (version != null) {
+      _json["version"] = version;
+    }
+    return _json;
+  }
+}
+
+/// The pull message contains data that can be used by the caller of
+/// CloudTasks.PullTasks to process the task.
+///
+/// This proto can only be used for tasks in a queue which has
+/// Queue.pull_target set.
+class PullMessage {
+  /// A data payload consumed by the task worker to execute the task.
+  core.String payload;
+  core.List<core.int> get payloadAsBytes {
+    return convert.BASE64.decode(payload);
+  }
+
+  void set payloadAsBytes(core.List<core.int> _bytes) {
+    payload =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  /// A meta-data tag for this task.
+  ///
+  /// This value is used by CloudTasks.PullTasks calls when
+  /// PullTasksRequest.filter is `tag=<tag>`.
+  ///
+  /// The tag must be less than 500 bytes.
+  core.String tag;
+  core.List<core.int> get tagAsBytes {
+    return convert.BASE64.decode(tag);
+  }
+
+  void set tagAsBytes(core.List<core.int> _bytes) {
+    tag =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  PullMessage();
+
+  PullMessage.fromJson(core.Map _json) {
+    if (_json.containsKey("payload")) {
+      payload = _json["payload"];
+    }
+    if (_json.containsKey("tag")) {
+      tag = _json["tag"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (payload != null) {
+      _json["payload"] = payload;
+    }
+    if (tag != null) {
+      _json["tag"] = tag;
+    }
+    return _json;
+  }
+}
+
+/// Deprecated. Use PullTarget.
+class PullQueueConfig {
+  PullQueueConfig();
+
+  PullQueueConfig.fromJson(core.Map _json) {}
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    return _json;
+  }
+}
+
+/// Pull target.
+class PullTarget {
+  PullTarget();
+
+  PullTarget.fromJson(core.Map _json) {}
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    return _json;
+  }
+}
+
+/// Deprecated. Use PullMessage.
+class PullTaskTarget {
+  /// Deprecated. Use PullMessage.payload.
+  core.String payload;
+  core.List<core.int> get payloadAsBytes {
+    return convert.BASE64.decode(payload);
+  }
+
+  void set payloadAsBytes(core.List<core.int> _bytes) {
+    payload =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  /// Deprecated. Use PullMessage.tag.
+  core.String tag;
+  core.List<core.int> get tagAsBytes {
+    return convert.BASE64.decode(tag);
+  }
+
+  void set tagAsBytes(core.List<core.int> _bytes) {
+    tag =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  PullTaskTarget();
+
+  PullTaskTarget.fromJson(core.Map _json) {
+    if (_json.containsKey("payload")) {
+      payload = _json["payload"];
+    }
+    if (_json.containsKey("tag")) {
+      tag = _json["tag"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (payload != null) {
+      _json["payload"] = payload;
+    }
+    if (tag != null) {
+      _json["tag"] = tag;
+    }
+    return _json;
+  }
+}
+
+/// Request message for pulling tasks using CloudTasks.PullTasks.
+class PullTasksRequest {
+  /// `filter` can be used to specify a subset of tasks to lease.
+  ///
+  /// When `filter` is set to `tag=<my-tag>` then the
+  /// PullTasksResponse will contain only tasks whose
+  /// PullMessage.tag is equal to `<my-tag>`. `<my-tag>` must be less than
+  /// 500 bytes.
+  ///
+  /// When `filter` is set to `tag_function=oldest_tag()`, only tasks which have
+  /// the same tag as the task with the oldest schedule_time will be returned.
+  ///
+  /// Grammar Syntax:
+  ///
+  /// * `filter = "tag=" tag | "tag_function=" function`
+  ///
+  /// * `tag = string | bytes`
+  ///
+  /// * `function = "oldest_tag()"`
+  ///
+  /// The `oldest_tag()` function returns tasks which have the same tag as the
+  /// oldest task (ordered by schedule time).
+  core.String filter;
+
+  /// The duration of the lease.
+  ///
+  /// Each task returned in the PullTasksResponse will have its
+  /// Task.schedule_time set to the current time plus the
+  /// `lease_duration`. A task that has been returned in a
+  /// PullTasksResponse is leased -- that task will not be
+  /// returned in a different PullTasksResponse before the
+  /// Task.schedule_time.
+  ///
+  /// After the lease holder has successfully finished the work
+  /// associated with the task, the lease holder must call
+  /// CloudTasks.AcknowledgeTask. If the task is not acknowledged
+  /// via CloudTasks.AcknowledgeTask before the
+  /// Task.schedule_time then it will be returned in a later
+  /// PullTasksResponse so that another lease holder can process
+  /// it.
+  ///
+  /// The maximum lease duration is 1 week.
+  /// `lease_duration` will be truncated to the nearest second.
+  core.String leaseDuration;
+
+  /// The maximum number of tasks to lease. The maximum that can be
+  /// requested is 1000.
+  core.int maxTasks;
+
+  /// The response_view specifies which subset of the Task will be
+  /// returned.
+  ///
+  /// By default response_view is Task.View.BASIC; not all
+  /// information is retrieved by default because some data, such as
+  /// payloads, might be desirable to return only when needed because
+  /// of its large size or because of the sensitivity of data that it
+  /// contains.
+  ///
+  /// Authorization for Task.View.FULL requires `cloudtasks.tasks.fullView`
+  /// [Google IAM](/iam/) permission on the
+  /// Task.name resource.
+  /// Possible string values are:
+  /// - "VIEW_UNSPECIFIED" : Unspecified. Defaults to BASIC.
+  /// - "BASIC" : The basic view omits fields which can be large or can contain
+  /// sensitive data.
+  ///
+  /// This view does not include the payload.
+  /// - "FULL" : All information is returned.
+  ///
+  /// Payloads might be desirable to return only when needed, because
+  /// they can be large and because of the sensitivity of the data
+  /// that you choose to store in it.
+  ///
+  /// Authorization for Task.View.FULL requires
+  /// `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)
+  /// permission on the Queue.name resource.
+  core.String responseView;
+
+  PullTasksRequest();
+
+  PullTasksRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("filter")) {
+      filter = _json["filter"];
+    }
+    if (_json.containsKey("leaseDuration")) {
+      leaseDuration = _json["leaseDuration"];
+    }
+    if (_json.containsKey("maxTasks")) {
+      maxTasks = _json["maxTasks"];
+    }
+    if (_json.containsKey("responseView")) {
+      responseView = _json["responseView"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (filter != null) {
+      _json["filter"] = filter;
+    }
+    if (leaseDuration != null) {
+      _json["leaseDuration"] = leaseDuration;
+    }
+    if (maxTasks != null) {
+      _json["maxTasks"] = maxTasks;
+    }
+    if (responseView != null) {
+      _json["responseView"] = responseView;
+    }
+    return _json;
+  }
+}
+
+/// Response message for pulling tasks using CloudTasks.PullTasks.
+class PullTasksResponse {
+  /// The leased tasks.
+  core.List<Task> tasks;
+
+  PullTasksResponse();
+
+  PullTasksResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("tasks")) {
+      tasks = _json["tasks"].map((value) => new Task.fromJson(value)).toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (tasks != null) {
+      _json["tasks"] = tasks.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// Request message for CloudTasks.PurgeQueue.
+class PurgeQueueRequest {
+  PurgeQueueRequest();
+
+  PurgeQueueRequest.fromJson(core.Map _json) {}
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    return _json;
+  }
+}
+
+/// A queue is a container of related tasks. Queues are configured to manage
+/// how those tasks are dispatched. Configurable properties include rate limits,
+/// retry options, target types, and others.
+class Queue {
+  /// App Engine HTTP target.
+  ///
+  /// An App Engine queue is a queue that has an AppEngineHttpTarget.
+  AppEngineHttpTarget appEngineHttpTarget;
+
+  /// Deprecated. Use Queue.app_engine_http_target.
+  AppEngineQueueConfig appEngineQueueConfig;
+
+  /// The queue name.
+  ///
+  /// The queue name must have the following format:
+  /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`
+  ///
+  /// * `PROJECT_ID` can contain uppercase and lowercase letters,
+  ///   numbers, hyphens, colons, and periods; that is, it must match
+  ///   the regular expression: `[a-zA-Z\\d-:\\.]+`.
+  /// * `QUEUE_ID` can contain uppercase and lowercase letters,
+  ///   numbers, and hyphens; that is, it must match the regular
+  ///   expression: `[a-zA-Z\\d-]+`. The maximum length is 100
+  ///   characters.
+  ///
+  /// Caller-specified and required in CreateQueueRequest, after which
+  /// it becomes output only.
+  core.String name;
+
+  /// Deprecated. Use Queue.pull_target.
+  PullQueueConfig pullQueueConfig;
+
+  /// Pull target.
+  ///
+  /// A pull queue is a queue that has a PullTarget.
+  PullTarget pullTarget;
+
+  /// Output only.
+  ///
+  /// The last time this queue was purged. All tasks that were
+  /// created before this time were purged.
+  ///
+  /// A queue can be purged using CloudTasks.PurgeQueue, the
+  /// [App Engine Task Queue SDK, or the Cloud
+  /// Console](/appengine/docs/standard/python/taskqueue/push/deleting-tasks-and-queues#purging_all_tasks_from_a_queue).
+  ///
+  /// Purge time will be truncated to the nearest microsecond. Purge
+  /// time will be zero if the queue has never been purged.
+  core.String purgeTime;
+
+  /// Output only.
+  ///
+  /// The state of the queue.
+  ///
+  /// `queue_state` can only be changed by called
+  /// CloudTasks.PauseQueue, CloudTasks.ResumeQueue, or uploading
+  /// [queue.yaml](/appengine/docs/python/config/queueref).
+  /// CloudTasks.UpdateQueue cannot be used to change `queue_state`.
+  /// Possible string values are:
+  /// - "QUEUE_STATE_UNSPECIFIED" : Unspecified state.
+  /// - "RUNNING" : The queue is running. Tasks can be dispatched.
+  /// - "PAUSED" : Tasks are paused by the user. If the queue is paused then
+  /// Cloud
+  /// Tasks will stop delivering tasks from it, but more tasks can
+  /// still be added to it by the user. When a pull queue is paused,
+  /// all CloudTasks.PullTasks calls will return a
+  /// `FAILED_PRECONDITION` error.
+  /// - "DISABLED" : The queue is disabled.
+  ///
+  /// A queue becomes `DISABLED` when
+  /// [queue.yaml](/appengine/docs/python/config/queueref) or
+  /// [queue.xml](appengine/docs/standard/java/config/queueref) is uploaded
+  /// which does not contain the queue. You cannot directly disable a queue.
+  ///
+  /// When a queue is disabled, tasks can still be added to a queue
+  /// but the tasks are not dispatched and CloudTasks.PullTasks calls
+  /// return a `FAILED_PRECONDITION` error.
+  ///
+  /// To permanently delete this queue and all of its tasks, call
+  /// CloudTasks.DeleteQueue.
+  core.String queueState;
+
+  /// Rate limits for task dispatches.
+  ///
+  /// Queue.rate_limits and Queue.retry_config are related because they
+  /// both control task attempts however they control how tasks are attempted in
+  /// different ways:
+  ///
+  /// * Queue.rate_limits controls the total rate of dispatches from a queue
+  ///   (i.e. all traffic dispatched from the queue, regardless of whether the
+  ///   dispatch is from a first attempt or a retry).
+  /// * Queue.retry_config controls what happens to particular a task after
+  ///   its first attempt fails. That is, Queue.retry_config controls task
+  ///   retries (the second attempt, third attempt, etc).
+  RateLimits rateLimits;
+
+  /// Settings that determine the retry behavior.
+  ///
+  /// * For tasks created using Cloud Tasks: the queue-level retry settings
+  ///   apply to all tasks in the queue that were created using Cloud Tasks.
+  ///   Retry settings cannot be set on individual tasks.
+  /// * For tasks created using the App Engine SDK: the queue-level retry
+  /// settings apply to all tasks in the queue which do not have retry settings
+  ///   explicitly set on the task and were created by the App Engine SDK. See
+  /// [App Engine
+  /// documentation](/appengine/docs/standard/python/taskqueue/push/retrying-tasks).
+  RetryConfig retryConfig;
+
+  Queue();
+
+  Queue.fromJson(core.Map _json) {
+    if (_json.containsKey("appEngineHttpTarget")) {
+      appEngineHttpTarget =
+          new AppEngineHttpTarget.fromJson(_json["appEngineHttpTarget"]);
+    }
+    if (_json.containsKey("appEngineQueueConfig")) {
+      appEngineQueueConfig =
+          new AppEngineQueueConfig.fromJson(_json["appEngineQueueConfig"]);
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("pullQueueConfig")) {
+      pullQueueConfig = new PullQueueConfig.fromJson(_json["pullQueueConfig"]);
+    }
+    if (_json.containsKey("pullTarget")) {
+      pullTarget = new PullTarget.fromJson(_json["pullTarget"]);
+    }
+    if (_json.containsKey("purgeTime")) {
+      purgeTime = _json["purgeTime"];
+    }
+    if (_json.containsKey("queueState")) {
+      queueState = _json["queueState"];
+    }
+    if (_json.containsKey("rateLimits")) {
+      rateLimits = new RateLimits.fromJson(_json["rateLimits"]);
+    }
+    if (_json.containsKey("retryConfig")) {
+      retryConfig = new RetryConfig.fromJson(_json["retryConfig"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (appEngineHttpTarget != null) {
+      _json["appEngineHttpTarget"] = (appEngineHttpTarget).toJson();
+    }
+    if (appEngineQueueConfig != null) {
+      _json["appEngineQueueConfig"] = (appEngineQueueConfig).toJson();
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (pullQueueConfig != null) {
+      _json["pullQueueConfig"] = (pullQueueConfig).toJson();
+    }
+    if (pullTarget != null) {
+      _json["pullTarget"] = (pullTarget).toJson();
+    }
+    if (purgeTime != null) {
+      _json["purgeTime"] = purgeTime;
+    }
+    if (queueState != null) {
+      _json["queueState"] = queueState;
+    }
+    if (rateLimits != null) {
+      _json["rateLimits"] = (rateLimits).toJson();
+    }
+    if (retryConfig != null) {
+      _json["retryConfig"] = (retryConfig).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Rate limits.
+///
+/// This message determines the maximum rate that tasks can be dispatched by a
+/// queue, regardless of whether the dispatch is a first task attempt or a
+/// retry.
+class RateLimits {
+  /// Output only.
+  ///
+  /// The max burst size limits how fast the queue is processed when
+  /// many tasks are in the queue and the rate is high. This field
+  /// allows the queue to have a high rate so processing starts shortly
+  /// after a task is enqueued, but still limits resource usage when
+  /// many tasks are enqueued in a short period of time.
+  ///
+  /// * For App Engine queues, if
+  ///   RateLimits.max_tasks_dispatched_per_second is 1, this
+  ///   field is 10; otherwise this field is
+  ///   RateLimits.max_tasks_dispatched_per_second / 5.
+  /// * For pull queues, this field is output only and always 10,000.
+  ///
+  /// Note: For App Engine queues that were created through
+  /// `queue.yaml/xml`, `max_burst_size` might not have the same
+  /// settings as specified above; CloudTasks.UpdateQueue can be
+  /// used to set `max_burst_size` only to the values specified above.
+  ///
+  /// This field has the same meaning as
+  /// [bucket_size in
+  /// queue.yaml](/appengine/docs/standard/python/config/queueref#bucket_size).
+  core.int maxBurstSize;
+
+  /// The maximum number of concurrent tasks that Cloud Tasks allows
+  /// to be dispatched for this queue. After this threshold has been
+  /// reached, Cloud Tasks stops dispatching tasks until the number of
+  /// concurrent requests decreases.
+  ///
+  /// The maximum allowed value is 5,000.
+  ///
+  /// * For App Engine queues, this field is 10 by default.
+  /// * For pull queues, this field is output only and always -1, which
+  ///   indicates no limit.
+  ///
+  /// This field has the same meaning as
+  /// [max_concurrent_requests in
+  /// queue.yaml](/appengine/docs/standard/python/config/queueref#max_concurrent_requests).
+  core.int maxConcurrentTasks;
+
+  /// The maximum rate at which tasks are dispatched from this
+  /// queue.
+  ///
+  /// The maximum allowed value is 500.
+  ///
+  /// * For App Engine queues, this field is 1 by default.
+  /// * For pull queues, this field is output only and always 10,000.
+  ///
+  /// This field has the same meaning as
+  /// [rate in
+  /// queue.yaml](/appengine/docs/standard/python/config/queueref#rate).
+  core.double maxTasksDispatchedPerSecond;
+
+  RateLimits();
+
+  RateLimits.fromJson(core.Map _json) {
+    if (_json.containsKey("maxBurstSize")) {
+      maxBurstSize = _json["maxBurstSize"];
+    }
+    if (_json.containsKey("maxConcurrentTasks")) {
+      maxConcurrentTasks = _json["maxConcurrentTasks"];
+    }
+    if (_json.containsKey("maxTasksDispatchedPerSecond")) {
+      maxTasksDispatchedPerSecond = _json["maxTasksDispatchedPerSecond"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (maxBurstSize != null) {
+      _json["maxBurstSize"] = maxBurstSize;
+    }
+    if (maxConcurrentTasks != null) {
+      _json["maxConcurrentTasks"] = maxConcurrentTasks;
+    }
+    if (maxTasksDispatchedPerSecond != null) {
+      _json["maxTasksDispatchedPerSecond"] = maxTasksDispatchedPerSecond;
+    }
+    return _json;
+  }
+}
+
+/// Request message for renewing a lease using CloudTasks.RenewLease.
+class RenewLeaseRequest {
+  /// Required.
+  ///
+  /// The desired new lease duration, starting from now.
+  ///
+  ///
+  /// The maximum lease duration is 1 week.
+  /// `new_lease_duration` will be truncated to the nearest second.
+  core.String newLeaseDuration;
+
+  /// The response_view specifies which subset of the Task will be
+  /// returned.
+  ///
+  /// By default response_view is Task.View.BASIC; not all
+  /// information is retrieved by default because some data, such as
+  /// payloads, might be desirable to return only when needed because
+  /// of its large size or because of the sensitivity of data that it
+  /// contains.
+  ///
+  /// Authorization for Task.View.FULL requires `cloudtasks.tasks.fullView`
+  /// [Google IAM](/iam/) permission on the
+  /// Task.name resource.
+  /// Possible string values are:
+  /// - "VIEW_UNSPECIFIED" : Unspecified. Defaults to BASIC.
+  /// - "BASIC" : The basic view omits fields which can be large or can contain
+  /// sensitive data.
+  ///
+  /// This view does not include the payload.
+  /// - "FULL" : All information is returned.
+  ///
+  /// Payloads might be desirable to return only when needed, because
+  /// they can be large and because of the sensitivity of the data
+  /// that you choose to store in it.
+  ///
+  /// Authorization for Task.View.FULL requires
+  /// `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)
+  /// permission on the Queue.name resource.
+  core.String responseView;
+
+  /// Required.
+  ///
+  /// The task's current schedule time, available in the Task.schedule_time
+  /// returned in PullTasksResponse.tasks or
+  /// CloudTasks.RenewLease. This restriction is to check that
+  /// the caller is renewing the correct task.
+  core.String scheduleTime;
+
+  RenewLeaseRequest();
+
+  RenewLeaseRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("newLeaseDuration")) {
+      newLeaseDuration = _json["newLeaseDuration"];
+    }
+    if (_json.containsKey("responseView")) {
+      responseView = _json["responseView"];
+    }
+    if (_json.containsKey("scheduleTime")) {
+      scheduleTime = _json["scheduleTime"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (newLeaseDuration != null) {
+      _json["newLeaseDuration"] = newLeaseDuration;
+    }
+    if (responseView != null) {
+      _json["responseView"] = responseView;
+    }
+    if (scheduleTime != null) {
+      _json["scheduleTime"] = scheduleTime;
+    }
+    return _json;
+  }
+}
+
+/// Request message for CloudTasks.ResumeQueue.
+class ResumeQueueRequest {
+  ResumeQueueRequest();
+
+  ResumeQueueRequest.fromJson(core.Map _json) {}
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    return _json;
+  }
+}
+
+/// Retry config.
+///
+/// These settings determine how a failed task attempt is retried.
+class RetryConfig {
+  /// The maximum number of attempts for a task.
+  ///
+  /// Cloud Tasks will attempt the task `max_attempts` times (that
+  /// is, if the first attempt fails, then there will be
+  /// `max_attempts - 1` retries).  Must be > 0.
+  core.int maxAttempts;
+
+  /// The maximum amount of time to wait before retrying a task after
+  /// it fails. The default is 1 hour.
+  ///
+  /// * For [App Engine queues](google.cloud.tasks.v2beta2.AppEngineHttpTarget),
+  ///   this field is 1 hour by default.
+  /// * For [pull queues](google.cloud.tasks.v2beta2.PullTarget), this field
+  ///   is output only and always 0.
+  ///
+  /// `max_backoff` will be truncated to the nearest second.
+  ///
+  /// This field has the same meaning as
+  /// [max_backoff_seconds in
+  /// queue.yaml](/appengine/docs/standard/python/config/queueref#retry_parameters).
+  core.String maxBackoff;
+
+  /// The time between retries increases exponentially `max_doublings` times.
+  /// `max_doublings` is maximum number of times that the interval between
+  /// failed
+  /// task retries will be doubled before the interval increases linearly.
+  /// After max_doublings intervals, the retry interval will be
+  /// 2^(max_doublings - 1) * RetryConfig.min_backoff.
+  ///
+  /// * For [App Engine queues](google.cloud.tasks.v2beta2.AppEngineHttpTarget),
+  ///   this field is 16 by default.
+  /// * For [pull queues](google.cloud.tasks.v2beta2.PullTarget), this field
+  ///   is output only and always 0.
+  ///
+  /// This field has the same meaning as
+  /// [max_doublings in
+  /// queue.yaml](/appengine/docs/standard/python/config/queueref#retry_parameters).
+  core.int maxDoublings;
+
+  /// If positive, `max_retry_duration` specifies the time limit for retrying a
+  /// failed task, measured from when the task was first attempted. Once
+  /// `max_retry_duration` time has passed *and* the task has been attempted
+  /// RetryConfig.max_attempts times, no further attempts will be made and
+  /// the task will be deleted.
+  ///
+  /// If zero, then the task age is unlimited.
+  ///
+  /// * For [App Engine queues](google.cloud.tasks.v2beta2.AppEngineHttpTarget),
+  ///   this field is 0 seconds by default.
+  /// * For [pull queues](google.cloud.tasks.v2beta2.PullTarget), this
+  ///   field is output only and always 0.
+  ///
+  /// `max_retry_duration` will be truncated to the nearest second.
+  ///
+  /// This field has the same meaning as
+  /// [task_age_limit in
+  /// queue.yaml](/appengine/docs/standard/python/config/queueref#retry_parameters).
+  core.String maxRetryDuration;
+
+  /// The minimum amount of time to wait before retrying a task after
+  /// it fails.
+  ///
+  /// * For [App Engine queues](google.cloud.tasks.v2beta2.AppEngineHttpTarget),
+  ///   this field is 0.1 seconds by default.
+  /// * For [pull queues](google.cloud.tasks.v2beta2.PullTarget), this
+  ///   field is output only and always 0.
+  ///
+  /// `min_backoff` will be truncated to the nearest second.
+  ///
+  /// This field has the same meaning as
+  /// [min_backoff_seconds in
+  /// queue.yaml](/appengine/docs/standard/python/config/queueref#retry_parameters).
+  core.String minBackoff;
+
+  /// If true, then the number of attempts is unlimited.
+  core.bool unlimitedAttempts;
+
+  RetryConfig();
+
+  RetryConfig.fromJson(core.Map _json) {
+    if (_json.containsKey("maxAttempts")) {
+      maxAttempts = _json["maxAttempts"];
+    }
+    if (_json.containsKey("maxBackoff")) {
+      maxBackoff = _json["maxBackoff"];
+    }
+    if (_json.containsKey("maxDoublings")) {
+      maxDoublings = _json["maxDoublings"];
+    }
+    if (_json.containsKey("maxRetryDuration")) {
+      maxRetryDuration = _json["maxRetryDuration"];
+    }
+    if (_json.containsKey("minBackoff")) {
+      minBackoff = _json["minBackoff"];
+    }
+    if (_json.containsKey("unlimitedAttempts")) {
+      unlimitedAttempts = _json["unlimitedAttempts"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (maxAttempts != null) {
+      _json["maxAttempts"] = maxAttempts;
+    }
+    if (maxBackoff != null) {
+      _json["maxBackoff"] = maxBackoff;
+    }
+    if (maxDoublings != null) {
+      _json["maxDoublings"] = maxDoublings;
+    }
+    if (maxRetryDuration != null) {
+      _json["maxRetryDuration"] = maxRetryDuration;
+    }
+    if (minBackoff != null) {
+      _json["minBackoff"] = minBackoff;
+    }
+    if (unlimitedAttempts != null) {
+      _json["unlimitedAttempts"] = unlimitedAttempts;
+    }
+    return _json;
+  }
+}
+
+/// Request message for forcing a task to run now using
+/// CloudTasks.RunTask.
+class RunTaskRequest {
+  /// The response_view specifies which subset of the Task will be
+  /// returned.
+  ///
+  /// By default response_view is Task.View.BASIC; not all
+  /// information is retrieved by default because some data, such as
+  /// payloads, might be desirable to return only when needed because
+  /// of its large size or because of the sensitivity of data that it
+  /// contains.
+  ///
+  /// Authorization for Task.View.FULL requires `cloudtasks.tasks.fullView`
+  /// [Google IAM](/iam/) permission on the
+  /// Task.name resource.
+  /// Possible string values are:
+  /// - "VIEW_UNSPECIFIED" : Unspecified. Defaults to BASIC.
+  /// - "BASIC" : The basic view omits fields which can be large or can contain
+  /// sensitive data.
+  ///
+  /// This view does not include the payload.
+  /// - "FULL" : All information is returned.
+  ///
+  /// Payloads might be desirable to return only when needed, because
+  /// they can be large and because of the sensitivity of the data
+  /// that you choose to store in it.
+  ///
+  /// Authorization for Task.View.FULL requires
+  /// `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)
+  /// permission on the Queue.name resource.
+  core.String responseView;
+
+  RunTaskRequest();
+
+  RunTaskRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("responseView")) {
+      responseView = _json["responseView"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (responseView != null) {
+      _json["responseView"] = responseView;
+    }
+    return _json;
+  }
+}
+
+/// Request message for `SetIamPolicy` method.
+class SetIamPolicyRequest {
+  /// REQUIRED: The complete policy to be applied to the `resource`. The size of
+  /// the policy is limited to a few 10s of KB. An empty policy is a
+  /// valid policy but certain Cloud Platform services (such as Projects)
+  /// might reject them.
+  Policy policy;
+
+  SetIamPolicyRequest();
+
+  SetIamPolicyRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("policy")) {
+      policy = new Policy.fromJson(_json["policy"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (policy != null) {
+      _json["policy"] = (policy).toJson();
+    }
+    return _json;
+  }
+}
+
+/// The `Status` type defines a logical error model that is suitable for
+/// different
+/// programming environments, including REST APIs and RPC APIs. It is used by
+/// [gRPC](https://github.com/grpc). The error model is designed to be:
+///
+/// - Simple to use and understand for most users
+/// - Flexible enough to meet unexpected needs
+///
+/// # Overview
+///
+/// The `Status` message contains three pieces of data: error code, error
+/// message,
+/// and error details. The error code should be an enum value of
+/// google.rpc.Code, but it may accept additional error codes if needed.  The
+/// error message should be a developer-facing English message that helps
+/// developers *understand* and *resolve* the error. If a localized user-facing
+/// error message is needed, put the localized message in the error details or
+/// localize it in the client. The optional error details may contain arbitrary
+/// information about the error. There is a predefined set of error detail types
+/// in the package `google.rpc` that can be used for common error conditions.
+///
+/// # Language mapping
+///
+/// The `Status` message is the logical representation of the error model, but
+/// it
+/// is not necessarily the actual wire format. When the `Status` message is
+/// exposed in different client libraries and different wire protocols, it can
+/// be
+/// mapped differently. For example, it will likely be mapped to some exceptions
+/// in Java, but more likely mapped to some error codes in C.
+///
+/// # Other uses
+///
+/// The error model and the `Status` message can be used in a variety of
+/// environments, either with or without APIs, to provide a
+/// consistent developer experience across different environments.
+///
+/// Example uses of this error model include:
+///
+/// - Partial errors. If a service needs to return partial errors to the client,
+/// it may embed the `Status` in the normal response to indicate the partial
+///     errors.
+///
+/// - Workflow errors. A typical workflow has multiple steps. Each step may
+///     have a `Status` message for error reporting.
+///
+/// - Batch operations. If a client uses batch request and batch response, the
+///     `Status` message should be used directly inside batch response, one for
+///     each error sub-response.
+///
+/// - Asynchronous operations. If an API call embeds asynchronous operation
+///     results in its response, the status of those operations should be
+///     represented directly using the `Status` message.
+///
+/// - Logging. If some API errors are stored in logs, the message `Status` could
+/// be used directly after any stripping needed for security/privacy reasons.
+class Status {
+  /// The status code, which should be an enum value of google.rpc.Code.
+  core.int code;
+
+  /// A list of messages that carry the error details.  There is a common set of
+  /// message types for APIs to use.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.List<core.Map<core.String, core.Object>> details;
+
+  /// A developer-facing error message, which should be in English. Any
+  /// user-facing error message should be localized and sent in the
+  /// google.rpc.Status.details field, or localized by the client.
+  core.String message;
+
+  Status();
+
+  Status.fromJson(core.Map _json) {
+    if (_json.containsKey("code")) {
+      code = _json["code"];
+    }
+    if (_json.containsKey("details")) {
+      details = _json["details"];
+    }
+    if (_json.containsKey("message")) {
+      message = _json["message"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (code != null) {
+      _json["code"] = code;
+    }
+    if (details != null) {
+      _json["details"] = details;
+    }
+    if (message != null) {
+      _json["message"] = message;
+    }
+    return _json;
+  }
+}
+
+/// A unit of scheduled work.
+class Task {
+  /// App Engine HTTP request that is sent to the task's target. Can be set
+  /// only if Queue.app_engine_http_target is set.
+  ///
+  /// An App Engine task is a task that has AppEngineHttpRequest set.
+  AppEngineHttpRequest appEngineHttpRequest;
+
+  /// Deprecated. Use Task.app_engine_http_request.
+  AppEngineTaskTarget appEngineTaskTarget;
+
+  /// Output only.
+  ///
+  /// The time that the task was created.
+  ///
+  /// `create_time` will be truncated to the nearest second.
+  core.String createTime;
+
+  /// The task name.
+  ///
+  /// The task name must have the following format:
+  /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`
+  ///
+  /// * `PROJECT_ID` can contain uppercase and lowercase letters,
+  ///   numbers, hyphens, colons, and periods; that is, it must match
+  ///   the regular expression: `[a-zA-Z\\d-:\\.]+`.
+  /// * `QUEUE_ID` can contain uppercase and lowercase letters,
+  ///   numbers, and hyphens; that is, it must match the regular
+  ///   expression: `[a-zA-Z\\d-]+`. The maximum length is 100
+  ///   characters.
+  /// * `TASK_ID` contain uppercase and lowercase letters, numbers,
+  ///   underscores, and hyphens; that is, it must match the regular
+  ///   expression: `[a-zA-Z\\d_-]+`. The maximum length is 500
+  ///   characters.
+  ///
+  /// Optionally caller-specified in CreateTaskRequest.
+  core.String name;
+
+  /// Pull message contains data that should be used by the caller of
+  /// CloudTasks.PullTasks to process the task. Can be set only if
+  /// Queue.pull_target is set.
+  ///
+  /// A pull task is a task that has PullMessage set.
+  PullMessage pullMessage;
+
+  /// Deprecated. Use Task.pull_message.
+  PullTaskTarget pullTaskTarget;
+
+  /// The time when the task is scheduled to be attempted.
+  ///
+  /// For pull queues, this is the time when the task is available to
+  /// be leased; if a task is currently leased, this is the time when
+  /// the current lease expires, that is, the time that the task was
+  /// leased plus the PullTasksRequest.lease_duration.
+  ///
+  /// For App Engine queues, this is when the task will be attempted or retried.
+  ///
+  /// `schedule_time` will be truncated to the nearest microsecond.
+  core.String scheduleTime;
+
+  /// Output only.
+  ///
+  /// Task status.
+  TaskStatus taskStatus;
+
+  /// Output only.
+  ///
+  /// The view specifies which subset of the Task has been
+  /// returned.
+  /// Possible string values are:
+  /// - "VIEW_UNSPECIFIED" : Unspecified. Defaults to BASIC.
+  /// - "BASIC" : The basic view omits fields which can be large or can contain
+  /// sensitive data.
+  ///
+  /// This view does not include the payload.
+  /// - "FULL" : All information is returned.
+  ///
+  /// Payloads might be desirable to return only when needed, because
+  /// they can be large and because of the sensitivity of the data
+  /// that you choose to store in it.
+  ///
+  /// Authorization for Task.View.FULL requires
+  /// `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/)
+  /// permission on the Queue.name resource.
+  core.String view;
+
+  Task();
+
+  Task.fromJson(core.Map _json) {
+    if (_json.containsKey("appEngineHttpRequest")) {
+      appEngineHttpRequest =
+          new AppEngineHttpRequest.fromJson(_json["appEngineHttpRequest"]);
+    }
+    if (_json.containsKey("appEngineTaskTarget")) {
+      appEngineTaskTarget =
+          new AppEngineTaskTarget.fromJson(_json["appEngineTaskTarget"]);
+    }
+    if (_json.containsKey("createTime")) {
+      createTime = _json["createTime"];
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("pullMessage")) {
+      pullMessage = new PullMessage.fromJson(_json["pullMessage"]);
+    }
+    if (_json.containsKey("pullTaskTarget")) {
+      pullTaskTarget = new PullTaskTarget.fromJson(_json["pullTaskTarget"]);
+    }
+    if (_json.containsKey("scheduleTime")) {
+      scheduleTime = _json["scheduleTime"];
+    }
+    if (_json.containsKey("taskStatus")) {
+      taskStatus = new TaskStatus.fromJson(_json["taskStatus"]);
+    }
+    if (_json.containsKey("view")) {
+      view = _json["view"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (appEngineHttpRequest != null) {
+      _json["appEngineHttpRequest"] = (appEngineHttpRequest).toJson();
+    }
+    if (appEngineTaskTarget != null) {
+      _json["appEngineTaskTarget"] = (appEngineTaskTarget).toJson();
+    }
+    if (createTime != null) {
+      _json["createTime"] = createTime;
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (pullMessage != null) {
+      _json["pullMessage"] = (pullMessage).toJson();
+    }
+    if (pullTaskTarget != null) {
+      _json["pullTaskTarget"] = (pullTaskTarget).toJson();
+    }
+    if (scheduleTime != null) {
+      _json["scheduleTime"] = scheduleTime;
+    }
+    if (taskStatus != null) {
+      _json["taskStatus"] = (taskStatus).toJson();
+    }
+    if (view != null) {
+      _json["view"] = view;
+    }
+    return _json;
+  }
+}
+
+/// Status of the task.
+class TaskStatus {
+  /// Output only.
+  ///
+  /// The number of attempts dispatched. This count includes tasks which have
+  /// been dispatched but haven't received a response.
+  core.String attemptDispatchCount;
+
+  /// Output only.
+  ///
+  /// The number of attempts which have received a response.
+  ///
+  /// This field is not calculated for
+  /// [pull tasks](google.cloud.tasks.v2beta2.PullTaskTarget).
+  core.String attemptResponseCount;
+
+  /// Output only.
+  ///
+  /// The status of the task's first attempt.
+  ///
+  /// Only AttemptStatus.dispatch_time will be set.
+  /// The other AttemptStatus information is not retained by Cloud Tasks.
+  ///
+  /// This field is not calculated for
+  /// [pull tasks](google.cloud.tasks.v2beta2.PullTaskTarget).
+  AttemptStatus firstAttemptStatus;
+
+  /// Output only.
+  ///
+  /// The status of the task's last attempt.
+  ///
+  /// This field is not calculated for
+  /// [pull tasks](google.cloud.tasks.v2beta2.PullTaskTarget).
+  AttemptStatus lastAttemptStatus;
+
+  TaskStatus();
+
+  TaskStatus.fromJson(core.Map _json) {
+    if (_json.containsKey("attemptDispatchCount")) {
+      attemptDispatchCount = _json["attemptDispatchCount"];
+    }
+    if (_json.containsKey("attemptResponseCount")) {
+      attemptResponseCount = _json["attemptResponseCount"];
+    }
+    if (_json.containsKey("firstAttemptStatus")) {
+      firstAttemptStatus =
+          new AttemptStatus.fromJson(_json["firstAttemptStatus"]);
+    }
+    if (_json.containsKey("lastAttemptStatus")) {
+      lastAttemptStatus =
+          new AttemptStatus.fromJson(_json["lastAttemptStatus"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (attemptDispatchCount != null) {
+      _json["attemptDispatchCount"] = attemptDispatchCount;
+    }
+    if (attemptResponseCount != null) {
+      _json["attemptResponseCount"] = attemptResponseCount;
+    }
+    if (firstAttemptStatus != null) {
+      _json["firstAttemptStatus"] = (firstAttemptStatus).toJson();
+    }
+    if (lastAttemptStatus != null) {
+      _json["lastAttemptStatus"] = (lastAttemptStatus).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Request message for `TestIamPermissions` method.
+class TestIamPermissionsRequest {
+  /// The set of permissions to check for the `resource`. Permissions with
+  /// wildcards (such as '*' or 'storage.*') are not allowed. For more
+  /// information see
+  /// [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
+  core.List<core.String> permissions;
+
+  TestIamPermissionsRequest();
+
+  TestIamPermissionsRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("permissions")) {
+      permissions = _json["permissions"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (permissions != null) {
+      _json["permissions"] = permissions;
+    }
+    return _json;
+  }
+}
+
+/// Response message for `TestIamPermissions` method.
+class TestIamPermissionsResponse {
+  /// A subset of `TestPermissionsRequest.permissions` that the caller is
+  /// allowed.
+  core.List<core.String> permissions;
+
+  TestIamPermissionsResponse();
+
+  TestIamPermissionsResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("permissions")) {
+      permissions = _json["permissions"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (permissions != null) {
+      _json["permissions"] = permissions;
+    }
+    return _json;
+  }
+}
diff --git a/generated/googleapis_beta/lib/clouduseraccounts/beta.dart b/generated/googleapis_beta/lib/clouduseraccounts/beta.dart
index f29b324..81c1d33 100644
--- a/generated/googleapis_beta/lib/clouduseraccounts/beta.dart
+++ b/generated/googleapis_beta/lib/clouduseraccounts/beta.dart
@@ -65,12 +65,16 @@
   /// [operation] - Name of the Operations resource to delete.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String project, core.String operation) {
+  async.Future delete(core.String project, core.String operation,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -84,6 +88,9 @@
     if (operation == null) {
       throw new core.ArgumentError("Parameter operation is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -111,6 +118,9 @@
   /// [operation] - Name of the Operations resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -118,7 +128,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String project, core.String operation) {
+  async.Future<Operation> get(core.String project, core.String operation,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -132,6 +143,9 @@
     if (operation == null) {
       throw new core.ArgumentError("Parameter operation is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/operations/' +
@@ -203,6 +217,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OperationList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -214,7 +231,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -237,6 +255,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/operations';
 
@@ -268,6 +289,9 @@
   /// [groupName] - Name of the group for this request.
   /// Value must have pattern "[a-z][-a-z0-9_]{0,31}".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -276,7 +300,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> addMember(GroupsAddMemberRequest request,
-      core.String project, core.String groupName) {
+      core.String project, core.String groupName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -293,6 +318,9 @@
     if (groupName == null) {
       throw new core.ArgumentError("Parameter groupName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/groups/' +
@@ -319,6 +347,9 @@
   /// [groupName] - Name of the Group resource to delete.
   /// Value must have pattern "[a-z][-a-z0-9_]{0,31}".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -326,7 +357,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> delete(core.String project, core.String groupName) {
+  async.Future<Operation> delete(core.String project, core.String groupName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -340,6 +372,9 @@
     if (groupName == null) {
       throw new core.ArgumentError("Parameter groupName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/groups/' +
@@ -365,6 +400,9 @@
   /// [groupName] - Name of the Group resource to return.
   /// Value must have pattern "[a-z][-a-z0-9_]{0,31}".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Group].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -372,7 +410,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Group> get(core.String project, core.String groupName) {
+  async.Future<Group> get(core.String project, core.String groupName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -386,6 +425,9 @@
     if (groupName == null) {
       throw new core.ArgumentError("Parameter groupName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/groups/' +
@@ -411,6 +453,9 @@
   /// Value must have pattern
   /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -418,7 +463,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> insert(Group request, core.String project) {
+  async.Future<Operation> insert(Group request, core.String project,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -432,6 +478,9 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/groups';
 
@@ -500,6 +549,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GroupList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -511,7 +563,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -534,6 +587,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/groups';
 
@@ -559,6 +615,9 @@
   /// [groupName] - Name of the group for this request.
   /// Value must have pattern "[a-z][-a-z0-9_]{0,31}".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -567,7 +626,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> removeMember(GroupsRemoveMemberRequest request,
-      core.String project, core.String groupName) {
+      core.String project, core.String groupName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -584,6 +644,9 @@
     if (groupName == null) {
       throw new core.ArgumentError("Parameter groupName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/groups/' +
@@ -626,6 +689,9 @@
   /// [login] - Whether the view was requested as part of a user-initiated
   /// login.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LinuxGetAuthorizedKeysViewResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -638,7 +704,8 @@
       core.String zone,
       core.String user,
       core.String instance,
-      {core.bool login}) {
+      {core.bool login,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -662,6 +729,9 @@
     if (login != null) {
       _queryParams["login"] = ["${login}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -742,6 +812,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LinuxGetLinuxAccountViewsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -754,7 +827,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -784,6 +858,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -820,6 +897,9 @@
   /// [user] - Name of the user for this request.
   /// Value must have pattern "[a-z][-a-z0-9_]{0,31}".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -828,7 +908,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> addPublicKey(
-      PublicKey request, core.String project, core.String user) {
+      PublicKey request, core.String project, core.String user,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -845,6 +926,9 @@
     if (user == null) {
       throw new core.ArgumentError("Parameter user is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/users/' +
@@ -871,6 +955,9 @@
   /// [user] - Name of the user resource to delete.
   /// Value must have pattern "[a-z][-a-z0-9_]{0,31}".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -878,7 +965,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> delete(core.String project, core.String user) {
+  async.Future<Operation> delete(core.String project, core.String user,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -892,6 +980,9 @@
     if (user == null) {
       throw new core.ArgumentError("Parameter user is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/users/' +
@@ -917,6 +1008,9 @@
   /// [user] - Name of the user resource to return.
   /// Value must have pattern "[a-z][-a-z0-9_]{0,31}".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [User].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -924,7 +1018,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<User> get(core.String project, core.String user) {
+  async.Future<User> get(core.String project, core.String user,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -938,6 +1033,9 @@
     if (user == null) {
       throw new core.ArgumentError("Parameter user is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/users/' +
@@ -963,6 +1061,9 @@
   /// Value must have pattern
   /// "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -970,7 +1071,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> insert(User request, core.String project) {
+  async.Future<Operation> insert(User request, core.String project,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -984,6 +1086,9 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/users';
 
@@ -1052,6 +1157,9 @@
   /// nextPageToken returned by a previous list request to get the next page of
   /// results.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UserList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1063,7 +1171,8 @@
       {core.String filter,
       core.int maxResults,
       core.String orderBy,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1086,6 +1195,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/global/users';
 
@@ -1114,6 +1226,9 @@
   /// MD5 digest of the public key.
   /// Value must have pattern "[a-f0-9]{32}".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1122,7 +1237,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> removePublicKey(
-      core.String project, core.String user, core.String fingerprint) {
+      core.String project, core.String user, core.String fingerprint,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1140,6 +1256,9 @@
       throw new core.ArgumentError("Parameter fingerprint is required.");
     }
     _queryParams["fingerprint"] = [fingerprint];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/global/users/' +
diff --git a/generated/googleapis_beta/lib/dataflow/v1b3.dart b/generated/googleapis_beta/lib/dataflow/v1b3.dart
index 8f54fbb..072023f 100644
--- a/generated/googleapis_beta/lib/dataflow/v1b3.dart
+++ b/generated/googleapis_beta/lib/dataflow/v1b3.dart
@@ -61,6 +61,9 @@
   ///
   /// [projectId] - The project to send the WorkerMessages to.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SendWorkerMessagesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -69,7 +72,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SendWorkerMessagesResponse> workerMessages(
-      SendWorkerMessagesRequest request, core.String projectId) {
+      SendWorkerMessagesRequest request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -83,6 +87,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -117,16 +124,6 @@
   ///
   /// [projectId] - The project which owns the jobs.
   ///
-  /// [location] - The location that contains this job.
-  ///
-  /// [pageToken] - Set this to the 'next_page_token' field of a previous
-  /// response
-  /// to request additional results in a long list.
-  ///
-  /// [pageSize] - If there are many jobs, limit response to at most this many.
-  /// The actual number of jobs returned will be the lesser of max_responses
-  /// and an unspecified server-defined limit.
-  ///
   /// [view] - Level of information requested in response. Default is
   /// `JOB_VIEW_SUMMARY`.
   /// Possible string values are:
@@ -142,6 +139,19 @@
   /// - "TERMINATED" : A TERMINATED.
   /// - "ACTIVE" : A ACTIVE.
   ///
+  /// [location] - The location that contains this job.
+  ///
+  /// [pageToken] - Set this to the 'next_page_token' field of a previous
+  /// response
+  /// to request additional results in a long list.
+  ///
+  /// [pageSize] - If there are many jobs, limit response to at most this many.
+  /// The actual number of jobs returned will be the lesser of max_responses
+  /// and an unspecified server-defined limit.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListJobsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -150,11 +160,12 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListJobsResponse> aggregated(core.String projectId,
-      {core.String location,
+      {core.String view,
+      core.String filter,
+      core.String location,
       core.String pageToken,
       core.int pageSize,
-      core.String view,
-      core.String filter}) {
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -165,6 +176,12 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if (view != null) {
+      _queryParams["view"] = [view];
+    }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
     if (location != null) {
       _queryParams["location"] = [location];
     }
@@ -174,11 +191,8 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (view != null) {
-      _queryParams["view"] = [view];
-    }
-    if (filter != null) {
-      _queryParams["filter"] = [filter];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1b3/projects/' +
@@ -203,6 +217,10 @@
   /// [projectId] - The ID of the Cloud Platform project that the job belongs
   /// to.
   ///
+  /// [location] - The location that contains this job.
+  ///
+  /// [replaceJobId] - Deprecated. This field is now in the Job message.
+  ///
   /// [view] - The level of information requested in response.
   /// Possible string values are:
   /// - "JOB_VIEW_UNKNOWN" : A JOB_VIEW_UNKNOWN.
@@ -210,9 +228,8 @@
   /// - "JOB_VIEW_ALL" : A JOB_VIEW_ALL.
   /// - "JOB_VIEW_DESCRIPTION" : A JOB_VIEW_DESCRIPTION.
   ///
-  /// [location] - The location that contains this job.
-  ///
-  /// [replaceJobId] - Deprecated. This field is now in the Job message.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Job].
   ///
@@ -222,7 +239,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Job> create(Job request, core.String projectId,
-      {core.String view, core.String location, core.String replaceJobId}) {
+      {core.String location,
+      core.String replaceJobId,
+      core.String view,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -236,15 +256,18 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
-    if (view != null) {
-      _queryParams["view"] = [view];
-    }
     if (location != null) {
       _queryParams["location"] = [location];
     }
     if (replaceJobId != null) {
       _queryParams["replaceJobId"] = [replaceJobId];
     }
+    if (view != null) {
+      _queryParams["view"] = [view];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -268,6 +291,8 @@
   ///
   /// [jobId] - The job ID.
   ///
+  /// [location] - The location that contains this job.
+  ///
   /// [view] - The level of information requested in response.
   /// Possible string values are:
   /// - "JOB_VIEW_UNKNOWN" : A JOB_VIEW_UNKNOWN.
@@ -275,7 +300,8 @@
   /// - "JOB_VIEW_ALL" : A JOB_VIEW_ALL.
   /// - "JOB_VIEW_DESCRIPTION" : A JOB_VIEW_DESCRIPTION.
   ///
-  /// [location] - The location that contains this job.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [Job].
   ///
@@ -285,7 +311,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Job> get(core.String projectId, core.String jobId,
-      {core.String view, core.String location}) {
+      {core.String location, core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -299,11 +325,14 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if (location != null) {
+      _queryParams["location"] = [location];
+    }
     if (view != null) {
       _queryParams["view"] = [view];
     }
-    if (location != null) {
-      _queryParams["location"] = [location];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1b3/projects/' +
@@ -328,10 +357,13 @@
   ///
   /// [jobId] - The job to get messages for.
   ///
+  /// [location] - The location which contains the job specified by job_id.
+  ///
   /// [startTime] - Return only metric data that has changed since this time.
   /// Default is to return all information about all metrics for the job.
   ///
-  /// [location] - The location which contains the job specified by job_id.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [JobMetrics].
   ///
@@ -341,7 +373,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<JobMetrics> getMetrics(core.String projectId, core.String jobId,
-      {core.String startTime, core.String location}) {
+      {core.String location, core.String startTime, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -355,11 +387,14 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if (location != null) {
+      _queryParams["location"] = [location];
+    }
     if (startTime != null) {
       _queryParams["startTime"] = [startTime];
     }
-    if (location != null) {
-      _queryParams["location"] = [location];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1b3/projects/' +
@@ -408,6 +443,9 @@
   /// - "JOB_VIEW_ALL" : A JOB_VIEW_ALL.
   /// - "JOB_VIEW_DESCRIPTION" : A JOB_VIEW_DESCRIPTION.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListJobsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -420,7 +458,8 @@
       core.String location,
       core.String pageToken,
       core.int pageSize,
-      core.String view}) {
+      core.String view,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -446,6 +485,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -473,6 +515,9 @@
   ///
   /// [location] - The location that contains this job.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Job].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -482,7 +527,7 @@
   /// this method will complete with the same error.
   async.Future<Job> update(
       Job request, core.String projectId, core.String jobId,
-      {core.String location}) {
+      {core.String location, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -502,6 +547,9 @@
     if (location != null) {
       _queryParams["location"] = [location];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -534,6 +582,9 @@
   ///
   /// [jobId] - The job id.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetDebugConfigResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -542,7 +593,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetDebugConfigResponse> getConfig(
-      GetDebugConfigRequest request, core.String projectId, core.String jobId) {
+      GetDebugConfigRequest request, core.String projectId, core.String jobId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -559,6 +611,9 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -585,6 +640,9 @@
   ///
   /// [jobId] - The job id.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SendDebugCaptureResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -593,9 +651,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SendDebugCaptureResponse> sendCapture(
-      SendDebugCaptureRequest request,
-      core.String projectId,
-      core.String jobId) {
+      SendDebugCaptureRequest request, core.String projectId, core.String jobId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -612,6 +669,9 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -644,12 +704,12 @@
   ///
   /// [jobId] - The job to get messages about.
   ///
+  /// [location] - The location which contains the job specified by job_id.
+  ///
   /// [endTime] - Return only messages with timestamps < end_time. The default
   /// is now
   /// (i.e. return up to the latest messages available).
   ///
-  /// [location] - The location which contains the job specified by job_id.
-  ///
   /// [startTime] - If specified, return only messages with timestamps >=
   /// start_time.
   /// The default is the job creation time (i.e. beginning of messages).
@@ -672,6 +732,9 @@
   /// - "JOB_MESSAGE_WARNING" : A JOB_MESSAGE_WARNING.
   /// - "JOB_MESSAGE_ERROR" : A JOB_MESSAGE_ERROR.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListJobMessagesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -681,12 +744,13 @@
   /// this method will complete with the same error.
   async.Future<ListJobMessagesResponse> list(
       core.String projectId, core.String jobId,
-      {core.String endTime,
-      core.String location,
+      {core.String location,
+      core.String endTime,
       core.String startTime,
       core.String pageToken,
       core.int pageSize,
-      core.String minimumImportance}) {
+      core.String minimumImportance,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -700,12 +764,12 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
-    if (endTime != null) {
-      _queryParams["endTime"] = [endTime];
-    }
     if (location != null) {
       _queryParams["location"] = [location];
     }
+    if (endTime != null) {
+      _queryParams["endTime"] = [endTime];
+    }
     if (startTime != null) {
       _queryParams["startTime"] = [startTime];
     }
@@ -718,6 +782,9 @@
     if (minimumImportance != null) {
       _queryParams["minimumImportance"] = [minimumImportance];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -751,6 +818,9 @@
   ///
   /// [jobId] - Identifies the workflow job this worker belongs to.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LeaseWorkItemResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -759,7 +829,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LeaseWorkItemResponse> lease(
-      LeaseWorkItemRequest request, core.String projectId, core.String jobId) {
+      LeaseWorkItemRequest request, core.String projectId, core.String jobId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -776,6 +847,9 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -802,6 +876,9 @@
   ///
   /// [jobId] - The job which the WorkItem is part of.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ReportWorkItemStatusResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -812,7 +889,8 @@
   async.Future<ReportWorkItemStatusResponse> reportStatus(
       ReportWorkItemStatusRequest request,
       core.String projectId,
-      core.String jobId) {
+      core.String jobId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -829,6 +907,9 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -868,6 +949,9 @@
   ///
   /// [location] - The location which contains the job
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SendWorkerMessagesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -878,7 +962,8 @@
   async.Future<SendWorkerMessagesResponse> workerMessages(
       SendWorkerMessagesRequest request,
       core.String projectId,
-      core.String location) {
+      core.String location,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -895,6 +980,9 @@
     if (location == null) {
       throw new core.ArgumentError("Parameter location is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -946,6 +1034,9 @@
   ///
   /// [replaceJobId] - Deprecated. This field is now in the Job message.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Job].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -955,7 +1046,7 @@
   /// this method will complete with the same error.
   async.Future<Job> create(
       Job request, core.String projectId, core.String location,
-      {core.String view, core.String replaceJobId}) {
+      {core.String view, core.String replaceJobId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -978,6 +1069,9 @@
     if (replaceJobId != null) {
       _queryParams["replaceJobId"] = [replaceJobId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1012,6 +1106,9 @@
   /// - "JOB_VIEW_ALL" : A JOB_VIEW_ALL.
   /// - "JOB_VIEW_DESCRIPTION" : A JOB_VIEW_DESCRIPTION.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Job].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1021,7 +1118,7 @@
   /// this method will complete with the same error.
   async.Future<Job> get(
       core.String projectId, core.String location, core.String jobId,
-      {core.String view}) {
+      {core.String view, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1041,6 +1138,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1071,6 +1171,9 @@
   /// [startTime] - Return only metric data that has changed since this time.
   /// Default is to return all information about all metrics for the job.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [JobMetrics].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1080,7 +1183,7 @@
   /// this method will complete with the same error.
   async.Future<JobMetrics> getMetrics(
       core.String projectId, core.String location, core.String jobId,
-      {core.String startTime}) {
+      {core.String startTime, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1100,6 +1203,9 @@
     if (startTime != null) {
       _queryParams["startTime"] = [startTime];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1149,6 +1255,9 @@
   /// - "JOB_VIEW_ALL" : A JOB_VIEW_ALL.
   /// - "JOB_VIEW_DESCRIPTION" : A JOB_VIEW_DESCRIPTION.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListJobsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1161,7 +1270,8 @@
       {core.String filter,
       core.String pageToken,
       core.int pageSize,
-      core.String view}) {
+      core.String view,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1187,6 +1297,9 @@
     if (view != null) {
       _queryParams["view"] = [view];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1216,6 +1329,9 @@
   ///
   /// [jobId] - The job ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Job].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1224,7 +1340,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Job> update(Job request, core.String projectId,
-      core.String location, core.String jobId) {
+      core.String location, core.String jobId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1244,6 +1361,9 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1280,6 +1400,9 @@
   ///
   /// [jobId] - The job id.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetDebugConfigResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1288,7 +1411,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetDebugConfigResponse> getConfig(GetDebugConfigRequest request,
-      core.String projectId, core.String location, core.String jobId) {
+      core.String projectId, core.String location, core.String jobId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1308,6 +1432,9 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1338,6 +1465,9 @@
   ///
   /// [jobId] - The job id.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SendDebugCaptureResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1349,7 +1479,8 @@
       SendDebugCaptureRequest request,
       core.String projectId,
       core.String location,
-      core.String jobId) {
+      core.String jobId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1369,6 +1500,9 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1405,19 +1539,6 @@
   ///
   /// [jobId] - The job to get messages about.
   ///
-  /// [pageSize] - If specified, determines the maximum number of messages to
-  /// return.  If unspecified, the service may choose an appropriate
-  /// default, or may return an arbitrarily large number of results.
-  ///
-  /// [minimumImportance] - Filter to only get messages with importance >= level
-  /// Possible string values are:
-  /// - "JOB_MESSAGE_IMPORTANCE_UNKNOWN" : A JOB_MESSAGE_IMPORTANCE_UNKNOWN.
-  /// - "JOB_MESSAGE_DEBUG" : A JOB_MESSAGE_DEBUG.
-  /// - "JOB_MESSAGE_DETAILED" : A JOB_MESSAGE_DETAILED.
-  /// - "JOB_MESSAGE_BASIC" : A JOB_MESSAGE_BASIC.
-  /// - "JOB_MESSAGE_WARNING" : A JOB_MESSAGE_WARNING.
-  /// - "JOB_MESSAGE_ERROR" : A JOB_MESSAGE_ERROR.
-  ///
   /// [endTime] - Return only messages with timestamps < end_time. The default
   /// is now
   /// (i.e. return up to the latest messages available).
@@ -1431,6 +1552,22 @@
   /// by an earlier call. This will cause the next page of results to
   /// be returned.
   ///
+  /// [pageSize] - If specified, determines the maximum number of messages to
+  /// return.  If unspecified, the service may choose an appropriate
+  /// default, or may return an arbitrarily large number of results.
+  ///
+  /// [minimumImportance] - Filter to only get messages with importance >= level
+  /// Possible string values are:
+  /// - "JOB_MESSAGE_IMPORTANCE_UNKNOWN" : A JOB_MESSAGE_IMPORTANCE_UNKNOWN.
+  /// - "JOB_MESSAGE_DEBUG" : A JOB_MESSAGE_DEBUG.
+  /// - "JOB_MESSAGE_DETAILED" : A JOB_MESSAGE_DETAILED.
+  /// - "JOB_MESSAGE_BASIC" : A JOB_MESSAGE_BASIC.
+  /// - "JOB_MESSAGE_WARNING" : A JOB_MESSAGE_WARNING.
+  /// - "JOB_MESSAGE_ERROR" : A JOB_MESSAGE_ERROR.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListJobMessagesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1440,11 +1577,12 @@
   /// this method will complete with the same error.
   async.Future<ListJobMessagesResponse> list(
       core.String projectId, core.String location, core.String jobId,
-      {core.int pageSize,
-      core.String minimumImportance,
-      core.String endTime,
+      {core.String endTime,
       core.String startTime,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.int pageSize,
+      core.String minimumImportance,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1461,12 +1599,6 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
-    }
-    if (minimumImportance != null) {
-      _queryParams["minimumImportance"] = [minimumImportance];
-    }
     if (endTime != null) {
       _queryParams["endTime"] = [endTime];
     }
@@ -1476,6 +1608,15 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (minimumImportance != null) {
+      _queryParams["minimumImportance"] = [minimumImportance];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1513,6 +1654,9 @@
   ///
   /// [jobId] - Identifies the workflow job this worker belongs to.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LeaseWorkItemResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1521,7 +1665,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LeaseWorkItemResponse> lease(LeaseWorkItemRequest request,
-      core.String projectId, core.String location, core.String jobId) {
+      core.String projectId, core.String location, core.String jobId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1541,6 +1686,9 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1571,6 +1719,9 @@
   ///
   /// [jobId] - The job which the WorkItem is part of.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ReportWorkItemStatusResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1582,7 +1733,8 @@
       ReportWorkItemStatusRequest request,
       core.String projectId,
       core.String location,
-      core.String jobId) {
+      core.String jobId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1602,6 +1754,9 @@
     if (jobId == null) {
       throw new core.ArgumentError("Parameter jobId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1639,6 +1794,9 @@
   ///
   /// [location] - The location to which to direct the request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Job].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1647,7 +1805,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Job> create(CreateJobFromTemplateRequest request,
-      core.String projectId, core.String location) {
+      core.String projectId, core.String location,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1664,6 +1823,9 @@
     if (location == null) {
       throw new core.ArgumentError("Parameter location is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1697,6 +1859,9 @@
   /// create the job.
   /// Must be a valid Cloud Storage URL, beginning with `gs://`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetTemplateResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1706,7 +1871,7 @@
   /// this method will complete with the same error.
   async.Future<GetTemplateResponse> get(
       core.String projectId, core.String location,
-      {core.String view, core.String gcsPath}) {
+      {core.String view, core.String gcsPath, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1726,6 +1891,9 @@
     if (gcsPath != null) {
       _queryParams["gcsPath"] = [gcsPath];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1762,6 +1930,9 @@
   /// the job.
   /// Must be valid Cloud Storage URL, beginning with 'gs://'.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LaunchTemplateResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1771,7 +1942,7 @@
   /// this method will complete with the same error.
   async.Future<LaunchTemplateResponse> launch(LaunchTemplateParameters request,
       core.String projectId, core.String location,
-      {core.bool validateOnly, core.String gcsPath}) {
+      {core.bool validateOnly, core.String gcsPath, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1794,6 +1965,9 @@
     if (gcsPath != null) {
       _queryParams["gcsPath"] = [gcsPath];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1826,6 +2000,9 @@
   /// [projectId] - Required. The ID of the Cloud Platform project that the job
   /// belongs to.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Job].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1834,7 +2011,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Job> create(
-      CreateJobFromTemplateRequest request, core.String projectId) {
+      CreateJobFromTemplateRequest request, core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1848,6 +2026,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1879,6 +2060,9 @@
   /// create the job.
   /// Must be a valid Cloud Storage URL, beginning with `gs://`.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetTemplateResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1887,7 +2071,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetTemplateResponse> get(core.String projectId,
-      {core.String location, core.String view, core.String gcsPath}) {
+      {core.String location,
+      core.String view,
+      core.String gcsPath,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1907,6 +2094,9 @@
     if (gcsPath != null) {
       _queryParams["gcsPath"] = [gcsPath];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
@@ -1941,6 +2131,9 @@
   /// executed.
   /// Defaults to false.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LaunchTemplateResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1950,7 +2143,10 @@
   /// this method will complete with the same error.
   async.Future<LaunchTemplateResponse> launch(
       LaunchTemplateParameters request, core.String projectId,
-      {core.String gcsPath, core.String location, core.bool validateOnly}) {
+      {core.String gcsPath,
+      core.String location,
+      core.bool validateOnly,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1973,6 +2169,9 @@
     if (validateOnly != null) {
       _queryParams["validateOnly"] = ["${validateOnly}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1b3/projects/' +
         commons.Escaper.ecapeVariable('$projectId') +
diff --git a/generated/googleapis_beta/lib/dlp/v2beta1.dart b/generated/googleapis_beta/lib/dlp/v2beta1.dart
index 6391f30..2567258 100644
--- a/generated/googleapis_beta/lib/dlp/v2beta1.dart
+++ b/generated/googleapis_beta/lib/dlp/v2beta1.dart
@@ -51,6 +51,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GooglePrivacyDlpV2beta1DeidentifyContentResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -59,7 +62,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GooglePrivacyDlpV2beta1DeidentifyContentResponse> deidentify(
-      GooglePrivacyDlpV2beta1DeidentifyContentRequest request) {
+      GooglePrivacyDlpV2beta1DeidentifyContentRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -70,6 +74,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/content:deidentify';
 
@@ -90,6 +97,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GooglePrivacyDlpV2beta1InspectContentResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -98,7 +108,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GooglePrivacyDlpV2beta1InspectContentResponse> inspect(
-      GooglePrivacyDlpV2beta1InspectContentRequest request) {
+      GooglePrivacyDlpV2beta1InspectContentRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -109,6 +120,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/content:inspect';
 
@@ -129,6 +143,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GooglePrivacyDlpV2beta1RedactContentResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -137,7 +154,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GooglePrivacyDlpV2beta1RedactContentResponse> redact(
-      GooglePrivacyDlpV2beta1RedactContentRequest request) {
+      GooglePrivacyDlpV2beta1RedactContentRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -148,6 +166,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/content:redact';
 
@@ -174,6 +195,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleLongrunningOperation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -182,7 +206,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleLongrunningOperation> analyze(
-      GooglePrivacyDlpV2beta1AnalyzeDataSourceRiskRequest request) {
+      GooglePrivacyDlpV2beta1AnalyzeDataSourceRiskRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -193,6 +218,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/dataSource:analyze';
 
@@ -235,6 +263,9 @@
   /// [name] - The name of the operation resource to be cancelled.
   /// Value must have pattern "^inspect/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleProtobufEmpty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -243,7 +274,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleProtobufEmpty> cancel(
-      GoogleLongrunningCancelOperationRequest request, core.String name) {
+      GoogleLongrunningCancelOperationRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -257,6 +289,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name') + ':cancel';
@@ -277,6 +312,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleLongrunningOperation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -285,7 +323,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleLongrunningOperation> create(
-      GooglePrivacyDlpV2beta1CreateInspectOperationRequest request) {
+      GooglePrivacyDlpV2beta1CreateInspectOperationRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -296,6 +335,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/inspect/operations';
 
@@ -316,6 +358,9 @@
   /// [name] - The name of the operation resource to be deleted.
   /// Value must have pattern "^inspect/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleProtobufEmpty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -323,7 +368,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleProtobufEmpty> delete(core.String name) {
+  async.Future<GoogleProtobufEmpty> delete(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -334,6 +380,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -355,6 +404,9 @@
   /// [name] - The name of the operation resource.
   /// Value must have pattern "^inspect/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleLongrunningOperation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -362,7 +414,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleLongrunningOperation> get(core.String name) {
+  async.Future<GoogleLongrunningOperation> get(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -373,6 +426,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -400,6 +456,9 @@
   /// [pageSize] - The list page size. The maximum allowed value is 256 and the
   /// default is 100.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleLongrunningListOperationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -408,7 +467,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleLongrunningListOperationsResponse> list(core.String name,
-      {core.String filter, core.String pageToken, core.int pageSize}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -428,6 +490,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -466,9 +531,6 @@
   /// Should be in the format of `inspect/results/{id}`.
   /// Value must have pattern "^inspect/results/[^/]+$".
   ///
-  /// [pageSize] - Maximum number of results to return.
-  /// If 0, the implementation selects a reasonable value.
-  ///
   /// [filter] - Restricts findings to items that match. Supports info_type and
   /// likelihood.
   ///
@@ -486,6 +548,12 @@
   /// that
   /// the system should return the next page of data.
   ///
+  /// [pageSize] - Maximum number of results to return.
+  /// If 0, the implementation selects a reasonable value.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GooglePrivacyDlpV2beta1ListInspectFindingsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -495,9 +563,10 @@
   /// this method will complete with the same error.
   async.Future<GooglePrivacyDlpV2beta1ListInspectFindingsResponse> list(
       core.String name,
-      {core.int pageSize,
-      core.String filter,
-      core.String pageToken}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -508,15 +577,18 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
-    }
     if (filter != null) {
       _queryParams["filter"] = [filter];
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' +
         commons.Escaper.ecapeVariableReserved('$name') +
@@ -559,6 +631,9 @@
   /// [name] - The name of the operation resource to be cancelled.
   /// Value must have pattern "^riskAnalysis/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleProtobufEmpty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -567,7 +642,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleProtobufEmpty> cancel(
-      GoogleLongrunningCancelOperationRequest request, core.String name) {
+      GoogleLongrunningCancelOperationRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -581,6 +657,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name') + ':cancel';
@@ -601,6 +680,9 @@
   /// [name] - The name of the operation resource to be deleted.
   /// Value must have pattern "^riskAnalysis/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleProtobufEmpty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -608,7 +690,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleProtobufEmpty> delete(core.String name) {
+  async.Future<GoogleProtobufEmpty> delete(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -619,6 +702,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -640,6 +726,9 @@
   /// [name] - The name of the operation resource.
   /// Value must have pattern "^riskAnalysis/operations/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleLongrunningOperation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -647,7 +736,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<GoogleLongrunningOperation> get(core.String name) {
+  async.Future<GoogleLongrunningOperation> get(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -658,6 +748,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -678,13 +771,16 @@
   /// [name] - The name of the operation's parent resource.
   /// Value must have pattern "^riskAnalysis/operations$".
   ///
-  /// [pageSize] - The list page size. The maximum allowed value is 256 and the
-  /// default is 100.
-  ///
   /// [filter] - Filters by `done`. That is, `done=true` or `done=false`.
   ///
   /// [pageToken] - The standard list page token.
   ///
+  /// [pageSize] - The list page size. The maximum allowed value is 256 and the
+  /// default is 100.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleLongrunningListOperationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -693,7 +789,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleLongrunningListOperationsResponse> list(core.String name,
-      {core.int pageSize, core.String filter, core.String pageToken}) {
+      {core.String filter,
+      core.String pageToken,
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -704,15 +803,18 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
-    }
     if (filter != null) {
       _queryParams["filter"] = [filter];
     }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -744,6 +846,9 @@
   /// If omitted or if localized strings are not available,
   /// en-US strings will be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GooglePrivacyDlpV2beta1ListRootCategoriesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -752,7 +857,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GooglePrivacyDlpV2beta1ListRootCategoriesResponse> list(
-      {core.String languageCode}) {
+      {core.String languageCode, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -763,6 +868,9 @@
     if (languageCode != null) {
       _queryParams["languageCode"] = [languageCode];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/rootCategories';
 
@@ -795,6 +903,9 @@
   /// names. If omitted, or if localized strings are not available,
   /// en-US strings will be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GooglePrivacyDlpV2beta1ListInfoTypesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -804,7 +915,8 @@
   /// this method will complete with the same error.
   async.Future<GooglePrivacyDlpV2beta1ListInfoTypesResponse> list(
       core.String category,
-      {core.String languageCode}) {
+      {core.String languageCode,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -818,6 +930,9 @@
     if (languageCode != null) {
       _queryParams["languageCode"] = [languageCode];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/rootCategories/' +
         commons.Escaper.ecapeVariableReserved('$category') +
@@ -1905,6 +2020,42 @@
   }
 }
 
+/// Custom information type provided by the user. Used to find domain-specific
+/// sensitive information configurable to the data in question.
+class GooglePrivacyDlpV2beta1CustomInfoType {
+  /// Dictionary-based custom info type.
+  GooglePrivacyDlpV2beta1Dictionary dictionary;
+
+  /// Info type configuration. All custom info types must have configurations
+  /// that do not conflict with built-in info types or other custom info types.
+  GooglePrivacyDlpV2beta1InfoType infoType;
+
+  GooglePrivacyDlpV2beta1CustomInfoType();
+
+  GooglePrivacyDlpV2beta1CustomInfoType.fromJson(core.Map _json) {
+    if (_json.containsKey("dictionary")) {
+      dictionary =
+          new GooglePrivacyDlpV2beta1Dictionary.fromJson(_json["dictionary"]);
+    }
+    if (_json.containsKey("infoType")) {
+      infoType =
+          new GooglePrivacyDlpV2beta1InfoType.fromJson(_json["infoType"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (dictionary != null) {
+      _json["dictionary"] = (dictionary).toJson();
+    }
+    if (infoType != null) {
+      _json["infoType"] = (infoType).toJson();
+    }
+    return _json;
+  }
+}
+
 /// Record key for a finding in Cloud Datastore.
 class GooglePrivacyDlpV2beta1DatastoreKey {
   /// Datastore entity key.
@@ -2136,6 +2287,48 @@
   }
 }
 
+/// Custom information type based on a dictionary of words or phrases. This can
+/// be used to match sensitive information specific to the data, such as a list
+/// of employee IDs or job titles.
+///
+/// Dictionary words are case-insensitive and all characters other than letters
+/// and digits in the unicode [Basic Multilingual
+/// Plane](https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_Multilingual_Plane)
+/// will be replaced with whitespace when scanning for matches, so the
+/// dictionary phrase "Sam Johnson" will match all three phrases "sam johnson",
+/// "Sam, Johnson", and "Sam (Johnson)". Additionally, the characters
+/// surrounding any match must be of a different type than the adjacent
+/// characters within the word, so letters must be next to non-letters and
+/// digits next to non-digits. For example, the dictionary word "jen" will
+/// match the first three letters of the text "jen123" but will return no
+/// matches for "jennifer".
+///
+/// Dictionary words containing a large number of characters that are not
+/// letters or digits may result in unexpected findings because such characters
+/// are treated as whitespace.
+class GooglePrivacyDlpV2beta1Dictionary {
+  /// List of words or phrases to search for.
+  GooglePrivacyDlpV2beta1WordList wordList;
+
+  GooglePrivacyDlpV2beta1Dictionary();
+
+  GooglePrivacyDlpV2beta1Dictionary.fromJson(core.Map _json) {
+    if (_json.containsKey("wordList")) {
+      wordList =
+          new GooglePrivacyDlpV2beta1WordList.fromJson(_json["wordList"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (wordList != null) {
+      _json["wordList"] = (wordList).toJson();
+    }
+    return _json;
+  }
+}
+
 /// An entity in a dataset is a field or set of fields that correspond to a
 /// single person. For example, in medical records the `EntityId` might be
 /// a patient identifier, or for financial records it might be an account
@@ -2493,7 +2686,7 @@
   }
 }
 
-/// Configuration for determing how redaction of images should occur.
+/// Configuration for determining how redaction of images should occur.
 class GooglePrivacyDlpV2beta1ImageRedactionConfig {
   /// Only one per info_type should be provided per request. If not
   /// specified, and redact_all_text is false, the DLP API will redact all
@@ -2753,6 +2946,9 @@
 /// currently
 /// used.
 class GooglePrivacyDlpV2beta1InspectConfig {
+  /// Custom info types provided by the user.
+  core.List<GooglePrivacyDlpV2beta1CustomInfoType> customInfoTypes;
+
   /// When true, excludes type information of the findings.
   core.bool excludeTypes;
 
@@ -2785,6 +2981,12 @@
   GooglePrivacyDlpV2beta1InspectConfig();
 
   GooglePrivacyDlpV2beta1InspectConfig.fromJson(core.Map _json) {
+    if (_json.containsKey("customInfoTypes")) {
+      customInfoTypes = _json["customInfoTypes"]
+          .map((value) =>
+              new GooglePrivacyDlpV2beta1CustomInfoType.fromJson(value))
+          .toList();
+    }
     if (_json.containsKey("excludeTypes")) {
       excludeTypes = _json["excludeTypes"];
     }
@@ -2813,6 +3015,10 @@
   core.Map<core.String, core.Object> toJson() {
     final core.Map<core.String, core.Object> _json =
         new core.Map<core.String, core.Object>();
+    if (customInfoTypes != null) {
+      _json["customInfoTypes"] =
+          customInfoTypes.map((value) => (value).toJson()).toList();
+    }
     if (excludeTypes != null) {
       _json["excludeTypes"] = excludeTypes;
     }
@@ -4155,7 +4361,7 @@
   }
 }
 
-/// A condition for determing whether a transformation should be applied to
+/// A condition for determining whether a transformation should be applied to
 /// a field.
 class GooglePrivacyDlpV2beta1RecordCondition {
   GooglePrivacyDlpV2beta1Expressions expressions;
@@ -4986,6 +5192,31 @@
   }
 }
 
+/// Message defining a list of words or phrases to search for in the data.
+class GooglePrivacyDlpV2beta1WordList {
+  /// Words or phrases defining the dictionary. The dictionary must contain
+  /// at least one phrase and every phrase must contain at least 2 characters
+  /// that are letters or digits. [required]
+  core.List<core.String> words;
+
+  GooglePrivacyDlpV2beta1WordList();
+
+  GooglePrivacyDlpV2beta1WordList.fromJson(core.Map _json) {
+    if (_json.containsKey("words")) {
+      words = _json["words"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (words != null) {
+      _json["words"] = words;
+    }
+    return _json;
+  }
+}
+
 /// A generic empty message that you can re-use to avoid defining duplicated
 /// empty messages in your APIs. A typical example is to use it as the request
 /// or the response type of an API method. For instance:
diff --git a/generated/googleapis_beta/lib/dns/v2beta1.dart b/generated/googleapis_beta/lib/dns/v2beta1.dart
index 62c9ab2..0038956 100644
--- a/generated/googleapis_beta/lib/dns/v2beta1.dart
+++ b/generated/googleapis_beta/lib/dns/v2beta1.dart
@@ -71,6 +71,9 @@
   /// identifier specified by the client. Must be unique for operation resources
   /// in the Operations collection.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Change].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -80,7 +83,7 @@
   /// this method will complete with the same error.
   async.Future<Change> create(
       Change request, core.String project, core.String managedZone,
-      {core.String clientOperationId}) {
+      {core.String clientOperationId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -100,6 +103,9 @@
     if (clientOperationId != null) {
       _queryParams["clientOperationId"] = [clientOperationId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
@@ -131,6 +137,9 @@
   /// identifier specified by the client. Must be unique for operation resources
   /// in the Operations collection.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Change].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -140,7 +149,7 @@
   /// this method will complete with the same error.
   async.Future<Change> get(
       core.String project, core.String managedZone, core.String changeId,
-      {core.String clientOperationId}) {
+      {core.String clientOperationId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -160,6 +169,9 @@
     if (clientOperationId != null) {
       _queryParams["clientOperationId"] = [clientOperationId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
@@ -197,6 +209,9 @@
   ///
   /// [sortOrder] - Sorting order direction: 'ascending' or 'descending'.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ChangesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -209,7 +224,8 @@
       {core.int maxResults,
       core.String pageToken,
       core.String sortBy,
-      core.String sortOrder}) {
+      core.String sortOrder,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -235,6 +251,9 @@
     if (sortOrder != null) {
       _queryParams["sortOrder"] = [sortOrder];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
@@ -275,6 +294,9 @@
   /// and display for key signing keys. If omitted, the recommended digest type
   /// will be computed and displayed.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DnsKey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -284,7 +306,9 @@
   /// this method will complete with the same error.
   async.Future<DnsKey> get(
       core.String project, core.String managedZone, core.String dnsKeyId,
-      {core.String clientOperationId, core.String digestType}) {
+      {core.String clientOperationId,
+      core.String digestType,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -307,6 +331,9 @@
     if (digestType != null) {
       _queryParams["digestType"] = [digestType];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
@@ -342,6 +369,9 @@
   /// [pageToken] - Optional. A tag returned by a previous list request that was
   /// truncated. Use this parameter to continue a previous list request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DnsKeysListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -351,7 +381,10 @@
   /// this method will complete with the same error.
   async.Future<DnsKeysListResponse> list(
       core.String project, core.String managedZone,
-      {core.String digestType, core.int maxResults, core.String pageToken}) {
+      {core.String digestType,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -374,6 +407,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
@@ -410,6 +446,9 @@
   /// identifier specified by the client. Must be unique for operation resources
   /// in the Operations collection.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -419,7 +458,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> get(
       core.String project, core.String managedZone, core.String operation,
-      {core.String clientOperationId}) {
+      {core.String clientOperationId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -439,6 +478,9 @@
     if (clientOperationId != null) {
       _queryParams["clientOperationId"] = [clientOperationId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
@@ -475,6 +517,9 @@
   /// - "ID"
   /// - "START_TIME"
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedZoneOperationsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -484,7 +529,10 @@
   /// this method will complete with the same error.
   async.Future<ManagedZoneOperationsListResponse> list(
       core.String project, core.String managedZone,
-      {core.int maxResults, core.String pageToken, core.String sortBy}) {
+      {core.int maxResults,
+      core.String pageToken,
+      core.String sortBy,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -507,6 +555,9 @@
     if (sortBy != null) {
       _queryParams["sortBy"] = [sortBy];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
@@ -541,6 +592,9 @@
   /// identifier specified by the client. Must be unique for operation resources
   /// in the Operations collection.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedZone].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -549,7 +603,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ManagedZone> create(ManagedZone request, core.String project,
-      {core.String clientOperationId}) {
+      {core.String clientOperationId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -566,6 +620,9 @@
     if (clientOperationId != null) {
       _queryParams["clientOperationId"] = [clientOperationId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/managedZones';
 
@@ -591,6 +648,9 @@
   /// identifier specified by the client. Must be unique for operation resources
   /// in the Operations collection.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedZonesDeleteResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -600,7 +660,7 @@
   /// this method will complete with the same error.
   async.Future<ManagedZonesDeleteResponse> delete(
       core.String project, core.String managedZone,
-      {core.String clientOperationId}) {
+      {core.String clientOperationId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -617,6 +677,9 @@
     if (clientOperationId != null) {
       _queryParams["clientOperationId"] = [clientOperationId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
@@ -645,6 +708,9 @@
   /// identifier specified by the client. Must be unique for operation resources
   /// in the Operations collection.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedZone].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -653,7 +719,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ManagedZone> get(core.String project, core.String managedZone,
-      {core.String clientOperationId}) {
+      {core.String clientOperationId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -670,6 +736,9 @@
     if (clientOperationId != null) {
       _queryParams["clientOperationId"] = [clientOperationId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
@@ -698,6 +767,9 @@
   /// [pageToken] - Optional. A tag returned by a previous list request that was
   /// truncated. Use this parameter to continue a previous list request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ManagedZonesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -706,7 +778,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ManagedZonesListResponse> list(core.String project,
-      {core.String dnsName, core.int maxResults, core.String pageToken}) {
+      {core.String dnsName,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -726,6 +801,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') + '/managedZones';
 
@@ -754,6 +832,9 @@
   /// identifier specified by the client. Must be unique for operation resources
   /// in the Operations collection.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -763,7 +844,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> patch(
       ManagedZone request, core.String project, core.String managedZone,
-      {core.String clientOperationId}) {
+      {core.String clientOperationId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -783,6 +864,9 @@
     if (clientOperationId != null) {
       _queryParams["clientOperationId"] = [clientOperationId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
@@ -812,6 +896,9 @@
   /// identifier specified by the client. Must be unique for operation resources
   /// in the Operations collection.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -821,7 +908,7 @@
   /// this method will complete with the same error.
   async.Future<Operation> update(
       ManagedZone request, core.String project, core.String managedZone,
-      {core.String clientOperationId}) {
+      {core.String clientOperationId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -841,6 +928,9 @@
     if (clientOperationId != null) {
       _queryParams["clientOperationId"] = [clientOperationId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
@@ -871,6 +961,9 @@
   /// identifier specified by the client. Must be unique for operation resources
   /// in the Operations collection.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Project].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -879,7 +972,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Project> get(core.String project,
-      {core.String clientOperationId}) {
+      {core.String clientOperationId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -893,6 +986,9 @@
     if (clientOperationId != null) {
       _queryParams["clientOperationId"] = [clientOperationId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project');
 
@@ -933,6 +1029,9 @@
   /// [type] - Restricts the list to return only records of this type. If
   /// present, the "name" parameter must also be present.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ResourceRecordSetsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -945,7 +1044,8 @@
       {core.int maxResults,
       core.String name,
       core.String pageToken,
-      core.String type}) {
+      core.String type,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -971,6 +1071,9 @@
     if (type != null) {
       _queryParams["type"] = [type];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/managedZones/' +
diff --git a/generated/googleapis_beta/lib/firestore/v1beta1.dart b/generated/googleapis_beta/lib/firestore/v1beta1.dart
new file mode 100644
index 0000000..dfa6bac
--- /dev/null
+++ b/generated/googleapis_beta/lib/firestore/v1beta1.dart
@@ -0,0 +1,3846 @@
+// This is a generated file (see the discoveryapis_generator project).
+
+library googleapis_beta.firestore.v1beta1;
+
+import 'dart:core' as core;
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+
+import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
+import 'package:http/http.dart' as http;
+
+export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
+    show ApiRequestError, DetailedApiRequestError;
+
+const core.String USER_AGENT = 'dart-api-client firestore/v1beta1';
+
+class FirestoreApi {
+  /// View and manage your data across Google Cloud Platform services
+  static const CloudPlatformScope =
+      "https://www.googleapis.com/auth/cloud-platform";
+
+  /// View and manage your Google Cloud Datastore data
+  static const DatastoreScope = "https://www.googleapis.com/auth/datastore";
+
+  final commons.ApiRequester _requester;
+
+  ProjectsResourceApi get projects => new ProjectsResourceApi(_requester);
+
+  FirestoreApi(http.Client client,
+      {core.String rootUrl: "https://firestore.googleapis.com/",
+      core.String servicePath: ""})
+      : _requester =
+            new commons.ApiRequester(client, rootUrl, servicePath, USER_AGENT);
+}
+
+class ProjectsResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsDatabasesResourceApi get databases =>
+      new ProjectsDatabasesResourceApi(_requester);
+
+  ProjectsResourceApi(commons.ApiRequester client) : _requester = client;
+}
+
+class ProjectsDatabasesResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsDatabasesDocumentsResourceApi get documents =>
+      new ProjectsDatabasesDocumentsResourceApi(_requester);
+  ProjectsDatabasesIndexesResourceApi get indexes =>
+      new ProjectsDatabasesIndexesResourceApi(_requester);
+
+  ProjectsDatabasesResourceApi(commons.ApiRequester client)
+      : _requester = client;
+}
+
+class ProjectsDatabasesDocumentsResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsDatabasesDocumentsResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Gets multiple documents.
+  ///
+  /// Documents returned by this method are not guaranteed to be returned in the
+  /// same order that they were requested.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [database] - The database name. In the format:
+  /// `projects/{project_id}/databases/{database_id}`.
+  /// Value must have pattern "^projects/[^/]+/databases/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [BatchGetDocumentsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<BatchGetDocumentsResponse> batchGet(
+      BatchGetDocumentsRequest request, core.String database,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (database == null) {
+      throw new core.ArgumentError("Parameter database is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' +
+        commons.Escaper.ecapeVariableReserved('$database') +
+        '/documents:batchGet';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new BatchGetDocumentsResponse.fromJson(data));
+  }
+
+  /// Starts a new transaction.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [database] - The database name. In the format:
+  /// `projects/{project_id}/databases/{database_id}`.
+  /// Value must have pattern "^projects/[^/]+/databases/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [BeginTransactionResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<BeginTransactionResponse> beginTransaction(
+      BeginTransactionRequest request, core.String database,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (database == null) {
+      throw new core.ArgumentError("Parameter database is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' +
+        commons.Escaper.ecapeVariableReserved('$database') +
+        '/documents:beginTransaction';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new BeginTransactionResponse.fromJson(data));
+  }
+
+  /// Commits a transaction, while optionally updating documents.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [database] - The database name. In the format:
+  /// `projects/{project_id}/databases/{database_id}`.
+  /// Value must have pattern "^projects/[^/]+/databases/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [CommitResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<CommitResponse> commit(
+      CommitRequest request, core.String database,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (database == null) {
+      throw new core.ArgumentError("Parameter database is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' +
+        commons.Escaper.ecapeVariableReserved('$database') +
+        '/documents:commit';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new CommitResponse.fromJson(data));
+  }
+
+  /// Creates a new document.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - The parent resource. For example:
+  /// `projects/{project_id}/databases/{database_id}/documents` or
+  /// `projects/{project_id}/databases/{database_id}/documents/chatrooms/{chatroom_id}`
+  /// Value must have pattern "^projects/[^/]+/databases/[^/]+/documents/.+$".
+  ///
+  /// [collectionId] - The collection ID, relative to `parent`, to list. For
+  /// example: `chatrooms`.
+  ///
+  /// [documentId] - The client-assigned document ID to use for this document.
+  ///
+  /// Optional. If not specified, an ID will be assigned by the service.
+  ///
+  /// [mask_fieldPaths] - The list of field paths in the mask. See
+  /// Document.fields for a field
+  /// path syntax reference.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Document].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Document> createDocument(
+      Document request, core.String parent, core.String collectionId,
+      {core.String documentId,
+      core.List<core.String> mask_fieldPaths,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if (collectionId == null) {
+      throw new core.ArgumentError("Parameter collectionId is required.");
+    }
+    if (documentId != null) {
+      _queryParams["documentId"] = [documentId];
+    }
+    if (mask_fieldPaths != null) {
+      _queryParams["mask.fieldPaths"] = mask_fieldPaths;
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        '/' +
+        commons.Escaper.ecapeVariable('$collectionId');
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Document.fromJson(data));
+  }
+
+  /// Deletes a document.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The resource name of the Document to delete. In the format:
+  /// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+  /// Value must have pattern
+  /// "^projects/[^/]+/databases/[^/]+/documents/[^/]+/.+$".
+  ///
+  /// [currentDocument_updateTime] - When set, the target document must exist
+  /// and have been last updated at
+  /// that time.
+  ///
+  /// [currentDocument_exists] - When set to `true`, the target document must
+  /// exist.
+  /// When set to `false`, the target document must not exist.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(core.String name,
+      {core.String currentDocument_updateTime,
+      core.bool currentDocument_exists,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if (currentDocument_updateTime != null) {
+      _queryParams["currentDocument.updateTime"] = [currentDocument_updateTime];
+    }
+    if (currentDocument_exists != null) {
+      _queryParams["currentDocument.exists"] = ["${currentDocument_exists}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "DELETE",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Empty.fromJson(data));
+  }
+
+  /// Gets a single document.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The resource name of the Document to get. In the format:
+  /// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+  /// Value must have pattern
+  /// "^projects/[^/]+/databases/[^/]+/documents/[^/]+/.+$".
+  ///
+  /// [transaction] - Reads the document in a transaction.
+  ///
+  /// [readTime] - Reads the version of the document at the given time.
+  /// This may not be older than 60 seconds.
+  ///
+  /// [mask_fieldPaths] - The list of field paths in the mask. See
+  /// Document.fields for a field
+  /// path syntax reference.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Document].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Document> get(core.String name,
+      {core.String transaction,
+      core.String readTime,
+      core.List<core.String> mask_fieldPaths,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if (transaction != null) {
+      _queryParams["transaction"] = [transaction];
+    }
+    if (readTime != null) {
+      _queryParams["readTime"] = [readTime];
+    }
+    if (mask_fieldPaths != null) {
+      _queryParams["mask.fieldPaths"] = mask_fieldPaths;
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Document.fromJson(data));
+  }
+
+  /// Lists documents.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - The parent resource name. In the format:
+  /// `projects/{project_id}/databases/{database_id}/documents` or
+  /// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+  /// For example:
+  /// `projects/my-project/databases/my-database/documents` or
+  /// `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`
+  /// Value must have pattern
+  /// "^projects/[^/]+/databases/[^/]+/documents/[^/]+/.+$".
+  ///
+  /// [collectionId] - The collection ID, relative to `parent`, to list. For
+  /// example: `chatrooms`
+  /// or `messages`.
+  ///
+  /// [mask_fieldPaths] - The list of field paths in the mask. See
+  /// Document.fields for a field
+  /// path syntax reference.
+  ///
+  /// [pageToken] - The `next_page_token` value returned from a previous List
+  /// request, if any.
+  ///
+  /// [pageSize] - The maximum number of documents to return.
+  ///
+  /// [transaction] - Reads documents in a transaction.
+  ///
+  /// [readTime] - Reads documents as they were at the given time.
+  /// This may not be older than 60 seconds.
+  ///
+  /// [orderBy] - The order to sort results by. For example: `priority desc,
+  /// name`.
+  ///
+  /// [showMissing] - If the list should show missing documents. A missing
+  /// document is a
+  /// document that does not exist but has sub-documents. These documents will
+  /// be returned with a key but will not have fields, Document.create_time,
+  /// or Document.update_time set.
+  ///
+  /// Requests with `show_missing` may not specify `where` or
+  /// `order_by`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListDocumentsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListDocumentsResponse> list(
+      core.String parent, core.String collectionId,
+      {core.List<core.String> mask_fieldPaths,
+      core.String pageToken,
+      core.int pageSize,
+      core.String transaction,
+      core.String readTime,
+      core.String orderBy,
+      core.bool showMissing,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if (collectionId == null) {
+      throw new core.ArgumentError("Parameter collectionId is required.");
+    }
+    if (mask_fieldPaths != null) {
+      _queryParams["mask.fieldPaths"] = mask_fieldPaths;
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (transaction != null) {
+      _queryParams["transaction"] = [transaction];
+    }
+    if (readTime != null) {
+      _queryParams["readTime"] = [readTime];
+    }
+    if (orderBy != null) {
+      _queryParams["orderBy"] = [orderBy];
+    }
+    if (showMissing != null) {
+      _queryParams["showMissing"] = ["${showMissing}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        '/' +
+        commons.Escaper.ecapeVariable('$collectionId');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new ListDocumentsResponse.fromJson(data));
+  }
+
+  /// Lists all the collection IDs underneath a document.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - The parent document. In the format:
+  /// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+  /// For example:
+  /// `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`
+  /// Value must have pattern
+  /// "^projects/[^/]+/databases/[^/]+/documents/[^/]+/.+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListCollectionIdsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListCollectionIdsResponse> listCollectionIds(
+      ListCollectionIdsRequest request, core.String parent,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        ':listCollectionIds';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new ListCollectionIdsResponse.fromJson(data));
+  }
+
+  /// Listens to changes.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [database] - The database name. In the format:
+  /// `projects/{project_id}/databases/{database_id}`.
+  /// Value must have pattern "^projects/[^/]+/databases/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListenResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListenResponse> listen(
+      ListenRequest request, core.String database,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (database == null) {
+      throw new core.ArgumentError("Parameter database is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' +
+        commons.Escaper.ecapeVariableReserved('$database') +
+        '/documents:listen';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new ListenResponse.fromJson(data));
+  }
+
+  /// Updates or inserts a document.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The resource name of the document, for example
+  /// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+  /// Value must have pattern
+  /// "^projects/[^/]+/databases/[^/]+/documents/[^/]+/.+$".
+  ///
+  /// [mask_fieldPaths] - The list of field paths in the mask. See
+  /// Document.fields for a field
+  /// path syntax reference.
+  ///
+  /// [updateMask_fieldPaths] - The list of field paths in the mask. See
+  /// Document.fields for a field
+  /// path syntax reference.
+  ///
+  /// [currentDocument_updateTime] - When set, the target document must exist
+  /// and have been last updated at
+  /// that time.
+  ///
+  /// [currentDocument_exists] - When set to `true`, the target document must
+  /// exist.
+  /// When set to `false`, the target document must not exist.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Document].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Document> patch(Document request, core.String name,
+      {core.List<core.String> mask_fieldPaths,
+      core.List<core.String> updateMask_fieldPaths,
+      core.String currentDocument_updateTime,
+      core.bool currentDocument_exists,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if (mask_fieldPaths != null) {
+      _queryParams["mask.fieldPaths"] = mask_fieldPaths;
+    }
+    if (updateMask_fieldPaths != null) {
+      _queryParams["updateMask.fieldPaths"] = updateMask_fieldPaths;
+    }
+    if (currentDocument_updateTime != null) {
+      _queryParams["currentDocument.updateTime"] = [currentDocument_updateTime];
+    }
+    if (currentDocument_exists != null) {
+      _queryParams["currentDocument.exists"] = ["${currentDocument_exists}"];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "PATCH",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Document.fromJson(data));
+  }
+
+  /// Rolls back a transaction.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [database] - The database name. In the format:
+  /// `projects/{project_id}/databases/{database_id}`.
+  /// Value must have pattern "^projects/[^/]+/databases/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> rollback(RollbackRequest request, core.String database,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (database == null) {
+      throw new core.ArgumentError("Parameter database is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' +
+        commons.Escaper.ecapeVariableReserved('$database') +
+        '/documents:rollback';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Empty.fromJson(data));
+  }
+
+  /// Runs a query.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - The parent resource name. In the format:
+  /// `projects/{project_id}/databases/{database_id}/documents` or
+  /// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+  /// For example:
+  /// `projects/my-project/databases/my-database/documents` or
+  /// `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`
+  /// Value must have pattern
+  /// "^projects/[^/]+/databases/[^/]+/documents/[^/]+/.+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [RunQueryResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<RunQueryResponse> runQuery(
+      RunQueryRequest request, core.String parent,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        ':runQuery';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new RunQueryResponse.fromJson(data));
+  }
+
+  /// Streams batches of document updates and deletes, in order.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [database] - The database name. In the format:
+  /// `projects/{project_id}/databases/{database_id}`.
+  /// This is only required in the first message.
+  /// Value must have pattern "^projects/[^/]+/databases/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [WriteResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<WriteResponse> write(WriteRequest request, core.String database,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (database == null) {
+      throw new core.ArgumentError("Parameter database is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' +
+        commons.Escaper.ecapeVariableReserved('$database') +
+        '/documents:write';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new WriteResponse.fromJson(data));
+  }
+}
+
+class ProjectsDatabasesIndexesResourceApi {
+  final commons.ApiRequester _requester;
+
+  ProjectsDatabasesIndexesResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates the specified index.
+  /// A newly created index's initial state is `CREATING`. On completion of the
+  /// returned google.longrunning.Operation, the state will be `READY`.
+  /// If the index already exists, the call will return an `ALREADY_EXISTS`
+  /// status.
+  ///
+  /// During creation, the process could result in an error, in which case the
+  /// index will move to the `ERROR` state. The process can be recovered by
+  /// fixing the data that caused the error, removing the index with
+  /// delete, then re-creating the index with
+  /// create.
+  ///
+  /// Indexes with a single field cannot be created.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - The name of the database this index will apply to. For example:
+  /// `projects/{project_id}/databases/{database_id}`
+  /// Value must have pattern "^projects/[^/]+/databases/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> create(Index request, core.String parent,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        '/indexes';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Operation.fromJson(data));
+  }
+
+  /// Deletes an index.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The index name. For example:
+  /// `projects/{project_id}/databases/{database_id}/indexes/{index_id}`
+  /// Value must have pattern "^projects/[^/]+/databases/[^/]+/indexes/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "DELETE",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Empty.fromJson(data));
+  }
+
+  /// Gets an index.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the index. For example:
+  /// `projects/{project_id}/databases/{database_id}/indexes/{index_id}`
+  /// Value must have pattern "^projects/[^/]+/databases/[^/]+/indexes/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Index].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Index> get(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Index.fromJson(data));
+  }
+
+  /// Lists the indexes that match the specified filters.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - The database name. For example:
+  /// `projects/{project_id}/databases/{database_id}`
+  /// Value must have pattern "^projects/[^/]+/databases/[^/]+$".
+  ///
+  /// [pageToken] - The standard List page token.
+  ///
+  /// [pageSize] - The standard List page size.
+  ///
+  /// [filter] - null
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListIndexesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListIndexesResponse> list(core.String parent,
+      {core.String pageToken,
+      core.int pageSize,
+      core.String filter,
+      core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
+    if (filter != null) {
+      _queryParams["filter"] = [filter];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta1/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        '/indexes';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new ListIndexesResponse.fromJson(data));
+  }
+}
+
+/// An array value.
+class ArrayValue {
+  /// Values in the array.
+  core.List<Value> values;
+
+  ArrayValue();
+
+  ArrayValue.fromJson(core.Map _json) {
+    if (_json.containsKey("values")) {
+      values =
+          _json["values"].map((value) => new Value.fromJson(value)).toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (values != null) {
+      _json["values"] = values.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// The request for Firestore.BatchGetDocuments.
+class BatchGetDocumentsRequest {
+  /// The names of the documents to retrieve. In the format:
+  /// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+  /// The request will fail if any of the document is not a child resource of
+  /// the
+  /// given `database`. Duplicate names will be elided.
+  core.List<core.String> documents;
+
+  /// The fields to return. If not set, returns all fields.
+  ///
+  /// If a document has a field that is not present in this mask, that field
+  /// will
+  /// not be returned in the response.
+  DocumentMask mask;
+
+  /// Starts a new transaction and reads the documents.
+  /// Defaults to a read-only transaction.
+  /// The new transaction ID will be returned as the first response in the
+  /// stream.
+  TransactionOptions newTransaction;
+
+  /// Reads documents as they were at the given time.
+  /// This may not be older than 60 seconds.
+  core.String readTime;
+
+  /// Reads documents in a transaction.
+  core.String transaction;
+  core.List<core.int> get transactionAsBytes {
+    return convert.BASE64.decode(transaction);
+  }
+
+  void set transactionAsBytes(core.List<core.int> _bytes) {
+    transaction =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  BatchGetDocumentsRequest();
+
+  BatchGetDocumentsRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("documents")) {
+      documents = _json["documents"];
+    }
+    if (_json.containsKey("mask")) {
+      mask = new DocumentMask.fromJson(_json["mask"]);
+    }
+    if (_json.containsKey("newTransaction")) {
+      newTransaction = new TransactionOptions.fromJson(_json["newTransaction"]);
+    }
+    if (_json.containsKey("readTime")) {
+      readTime = _json["readTime"];
+    }
+    if (_json.containsKey("transaction")) {
+      transaction = _json["transaction"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (documents != null) {
+      _json["documents"] = documents;
+    }
+    if (mask != null) {
+      _json["mask"] = (mask).toJson();
+    }
+    if (newTransaction != null) {
+      _json["newTransaction"] = (newTransaction).toJson();
+    }
+    if (readTime != null) {
+      _json["readTime"] = readTime;
+    }
+    if (transaction != null) {
+      _json["transaction"] = transaction;
+    }
+    return _json;
+  }
+}
+
+/// The streamed response for Firestore.BatchGetDocuments.
+class BatchGetDocumentsResponse {
+  /// A document that was requested.
+  Document found;
+
+  /// A document name that was requested but does not exist. In the format:
+  /// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+  core.String missing;
+
+  /// The time at which the document was read.
+  /// This may be monotically increasing, in this case the previous documents in
+  /// the result stream are guaranteed not to have changed between their
+  /// read_time and this one.
+  core.String readTime;
+
+  /// The transaction that was started as part of this request.
+  /// Will only be set in the first response, and only if
+  /// BatchGetDocumentsRequest.new_transaction was set in the request.
+  core.String transaction;
+  core.List<core.int> get transactionAsBytes {
+    return convert.BASE64.decode(transaction);
+  }
+
+  void set transactionAsBytes(core.List<core.int> _bytes) {
+    transaction =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  BatchGetDocumentsResponse();
+
+  BatchGetDocumentsResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("found")) {
+      found = new Document.fromJson(_json["found"]);
+    }
+    if (_json.containsKey("missing")) {
+      missing = _json["missing"];
+    }
+    if (_json.containsKey("readTime")) {
+      readTime = _json["readTime"];
+    }
+    if (_json.containsKey("transaction")) {
+      transaction = _json["transaction"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (found != null) {
+      _json["found"] = (found).toJson();
+    }
+    if (missing != null) {
+      _json["missing"] = missing;
+    }
+    if (readTime != null) {
+      _json["readTime"] = readTime;
+    }
+    if (transaction != null) {
+      _json["transaction"] = transaction;
+    }
+    return _json;
+  }
+}
+
+/// The request for Firestore.BeginTransaction.
+class BeginTransactionRequest {
+  /// The options for the transaction.
+  /// Defaults to a read-write transaction.
+  TransactionOptions options;
+
+  BeginTransactionRequest();
+
+  BeginTransactionRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("options")) {
+      options = new TransactionOptions.fromJson(_json["options"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (options != null) {
+      _json["options"] = (options).toJson();
+    }
+    return _json;
+  }
+}
+
+/// The response for Firestore.BeginTransaction.
+class BeginTransactionResponse {
+  /// The transaction that was started.
+  core.String transaction;
+  core.List<core.int> get transactionAsBytes {
+    return convert.BASE64.decode(transaction);
+  }
+
+  void set transactionAsBytes(core.List<core.int> _bytes) {
+    transaction =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  BeginTransactionResponse();
+
+  BeginTransactionResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("transaction")) {
+      transaction = _json["transaction"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (transaction != null) {
+      _json["transaction"] = transaction;
+    }
+    return _json;
+  }
+}
+
+/// A selection of a collection, such as `messages as m1`.
+class CollectionSelector {
+  /// When false, selects only collections that are immediate children of
+  /// the `parent` specified in the containing `RunQueryRequest`.
+  /// When true, selects all descendant collections.
+  core.bool allDescendants;
+
+  /// The collection ID.
+  /// When set, selects only collections with this ID.
+  core.String collectionId;
+
+  CollectionSelector();
+
+  CollectionSelector.fromJson(core.Map _json) {
+    if (_json.containsKey("allDescendants")) {
+      allDescendants = _json["allDescendants"];
+    }
+    if (_json.containsKey("collectionId")) {
+      collectionId = _json["collectionId"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (allDescendants != null) {
+      _json["allDescendants"] = allDescendants;
+    }
+    if (collectionId != null) {
+      _json["collectionId"] = collectionId;
+    }
+    return _json;
+  }
+}
+
+/// The request for Firestore.Commit.
+class CommitRequest {
+  /// If set, applies all writes in this transaction, and commits it.
+  core.String transaction;
+  core.List<core.int> get transactionAsBytes {
+    return convert.BASE64.decode(transaction);
+  }
+
+  void set transactionAsBytes(core.List<core.int> _bytes) {
+    transaction =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  /// The writes to apply.
+  ///
+  /// Always executed atomically and in order.
+  core.List<Write> writes;
+
+  CommitRequest();
+
+  CommitRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("transaction")) {
+      transaction = _json["transaction"];
+    }
+    if (_json.containsKey("writes")) {
+      writes =
+          _json["writes"].map((value) => new Write.fromJson(value)).toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (transaction != null) {
+      _json["transaction"] = transaction;
+    }
+    if (writes != null) {
+      _json["writes"] = writes.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// The response for Firestore.Commit.
+class CommitResponse {
+  /// The time at which the commit occurred.
+  core.String commitTime;
+
+  /// The result of applying the writes.
+  ///
+  /// This i-th write result corresponds to the i-th write in the
+  /// request.
+  core.List<WriteResult> writeResults;
+
+  CommitResponse();
+
+  CommitResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("commitTime")) {
+      commitTime = _json["commitTime"];
+    }
+    if (_json.containsKey("writeResults")) {
+      writeResults = _json["writeResults"]
+          .map((value) => new WriteResult.fromJson(value))
+          .toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (commitTime != null) {
+      _json["commitTime"] = commitTime;
+    }
+    if (writeResults != null) {
+      _json["writeResults"] =
+          writeResults.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// A filter that merges multiple other filters using the given operator.
+class CompositeFilter {
+  /// The list of filters to combine.
+  /// Must contain at least one filter.
+  core.List<Filter> filters;
+
+  /// The operator for combining multiple filters.
+  /// Possible string values are:
+  /// - "OPERATOR_UNSPECIFIED" : Unspecified. This value must not be used.
+  /// - "AND" : The results are required to satisfy each of the combined
+  /// filters.
+  core.String op;
+
+  CompositeFilter();
+
+  CompositeFilter.fromJson(core.Map _json) {
+    if (_json.containsKey("filters")) {
+      filters =
+          _json["filters"].map((value) => new Filter.fromJson(value)).toList();
+    }
+    if (_json.containsKey("op")) {
+      op = _json["op"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (filters != null) {
+      _json["filters"] = filters.map((value) => (value).toJson()).toList();
+    }
+    if (op != null) {
+      _json["op"] = op;
+    }
+    return _json;
+  }
+}
+
+/// A position in a query result set.
+class Cursor {
+  /// If the position is just before or just after the given values, relative
+  /// to the sort order defined by the query.
+  core.bool before;
+
+  /// The values that represent a position, in the order they appear in
+  /// the order by clause of a query.
+  ///
+  /// Can contain fewer values than specified in the order by clause.
+  core.List<Value> values;
+
+  Cursor();
+
+  Cursor.fromJson(core.Map _json) {
+    if (_json.containsKey("before")) {
+      before = _json["before"];
+    }
+    if (_json.containsKey("values")) {
+      values =
+          _json["values"].map((value) => new Value.fromJson(value)).toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (before != null) {
+      _json["before"] = before;
+    }
+    if (values != null) {
+      _json["values"] = values.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// A Firestore document.
+///
+/// Must not exceed 1 MiB - 4 bytes.
+class Document {
+  /// Output only. The time at which the document was created.
+  ///
+  /// This value increases monotonically when a document is deleted then
+  /// recreated. It can also be compared to values from other documents and
+  /// the `read_time` of a query.
+  core.String createTime;
+
+  /// The document's fields.
+  ///
+  /// The map keys represent field names.
+  ///
+  /// A simple field name contains only characters `a` to `z`, `A` to `Z`,
+  /// `0` to `9`, or `_`, and must not start with `0` to `9` or `_`. For
+  /// example,
+  /// `foo_bar_17`.
+  ///
+  /// Field names matching the regular expression `__.*__` are reserved.
+  /// Reserved
+  /// field names are forbidden except in certain documented contexts. The map
+  /// keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be
+  /// empty.
+  ///
+  /// Field paths may be used in other contexts to refer to structured fields
+  /// defined here. For `map_value`, the field path is represented by the simple
+  /// or quoted field names of the containing fields, delimited by `.`. For
+  /// example, the structured field
+  /// `"foo" : { map_value: { "x&y" : { string_value: "hello" }}}` would be
+  /// represented by the field path `foo.x&y`.
+  ///
+  /// Within a field path, a quoted field name starts and ends with `` ` `` and
+  /// may contain any character. Some characters, including `` ` ``, must be
+  /// escaped using a `\`. For example, `` `x&y` `` represents `x&y` and
+  /// `` `bak\`tik` `` represents `` bak`tik ``.
+  core.Map<core.String, Value> fields;
+
+  /// The resource name of the document, for example
+  /// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+  core.String name;
+
+  /// Output only. The time at which the document was last changed.
+  ///
+  /// This value is initally set to the `create_time` then increases
+  /// monotonically with each change to the document. It can also be
+  /// compared to values from other documents and the `read_time` of a query.
+  core.String updateTime;
+
+  Document();
+
+  Document.fromJson(core.Map _json) {
+    if (_json.containsKey("createTime")) {
+      createTime = _json["createTime"];
+    }
+    if (_json.containsKey("fields")) {
+      fields = commons.mapMap<core.Map<core.String, core.Object>, Value>(
+          _json["fields"],
+          (core.Map<core.String, core.Object> item) =>
+              new Value.fromJson(item));
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("updateTime")) {
+      updateTime = _json["updateTime"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (createTime != null) {
+      _json["createTime"] = createTime;
+    }
+    if (fields != null) {
+      _json["fields"] =
+          commons.mapMap<Value, core.Map<core.String, core.Object>>(
+              fields, (Value item) => (item).toJson());
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (updateTime != null) {
+      _json["updateTime"] = updateTime;
+    }
+    return _json;
+  }
+}
+
+/// A Document has changed.
+///
+/// May be the result of multiple writes, including deletes, that
+/// ultimately resulted in a new value for the Document.
+///
+/// Multiple DocumentChange messages may be returned for the same logical
+/// change, if multiple targets are affected.
+class DocumentChange {
+  /// The new state of the Document.
+  ///
+  /// If `mask` is set, contains only fields that were updated or added.
+  Document document;
+
+  /// A set of target IDs for targets that no longer match this document.
+  core.List<core.int> removedTargetIds;
+
+  /// A set of target IDs of targets that match this document.
+  core.List<core.int> targetIds;
+
+  DocumentChange();
+
+  DocumentChange.fromJson(core.Map _json) {
+    if (_json.containsKey("document")) {
+      document = new Document.fromJson(_json["document"]);
+    }
+    if (_json.containsKey("removedTargetIds")) {
+      removedTargetIds = _json["removedTargetIds"];
+    }
+    if (_json.containsKey("targetIds")) {
+      targetIds = _json["targetIds"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (document != null) {
+      _json["document"] = (document).toJson();
+    }
+    if (removedTargetIds != null) {
+      _json["removedTargetIds"] = removedTargetIds;
+    }
+    if (targetIds != null) {
+      _json["targetIds"] = targetIds;
+    }
+    return _json;
+  }
+}
+
+/// A Document has been deleted.
+///
+/// May be the result of multiple writes, including updates, the
+/// last of which deleted the Document.
+///
+/// Multiple DocumentDelete messages may be returned for the same logical
+/// delete, if multiple targets are affected.
+class DocumentDelete {
+  /// The resource name of the Document that was deleted.
+  core.String document;
+
+  /// The read timestamp at which the delete was observed.
+  ///
+  /// Greater or equal to the `commit_time` of the delete.
+  core.String readTime;
+
+  /// A set of target IDs for targets that previously matched this entity.
+  core.List<core.int> removedTargetIds;
+
+  DocumentDelete();
+
+  DocumentDelete.fromJson(core.Map _json) {
+    if (_json.containsKey("document")) {
+      document = _json["document"];
+    }
+    if (_json.containsKey("readTime")) {
+      readTime = _json["readTime"];
+    }
+    if (_json.containsKey("removedTargetIds")) {
+      removedTargetIds = _json["removedTargetIds"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (document != null) {
+      _json["document"] = document;
+    }
+    if (readTime != null) {
+      _json["readTime"] = readTime;
+    }
+    if (removedTargetIds != null) {
+      _json["removedTargetIds"] = removedTargetIds;
+    }
+    return _json;
+  }
+}
+
+/// A set of field paths on a document.
+/// Used to restrict a get or update operation on a document to a subset of its
+/// fields.
+/// This is different from standard field masks, as this is always scoped to a
+/// Document, and takes in account the dynamic nature of Value.
+class DocumentMask {
+  /// The list of field paths in the mask. See Document.fields for a field
+  /// path syntax reference.
+  core.List<core.String> fieldPaths;
+
+  DocumentMask();
+
+  DocumentMask.fromJson(core.Map _json) {
+    if (_json.containsKey("fieldPaths")) {
+      fieldPaths = _json["fieldPaths"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (fieldPaths != null) {
+      _json["fieldPaths"] = fieldPaths;
+    }
+    return _json;
+  }
+}
+
+/// A Document has been removed from the view of the targets.
+///
+/// Sent if the document is no longer relevant to a target and is out of view.
+/// Can be sent instead of a DocumentDelete or a DocumentChange if the server
+/// can not send the new value of the document.
+///
+/// Multiple DocumentRemove messages may be returned for the same logical
+/// write or delete, if multiple targets are affected.
+class DocumentRemove {
+  /// The resource name of the Document that has gone out of view.
+  core.String document;
+
+  /// The read timestamp at which the remove was observed.
+  ///
+  /// Greater or equal to the `commit_time` of the change/delete/remove.
+  core.String readTime;
+
+  /// A set of target IDs for targets that previously matched this document.
+  core.List<core.int> removedTargetIds;
+
+  DocumentRemove();
+
+  DocumentRemove.fromJson(core.Map _json) {
+    if (_json.containsKey("document")) {
+      document = _json["document"];
+    }
+    if (_json.containsKey("readTime")) {
+      readTime = _json["readTime"];
+    }
+    if (_json.containsKey("removedTargetIds")) {
+      removedTargetIds = _json["removedTargetIds"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (document != null) {
+      _json["document"] = document;
+    }
+    if (readTime != null) {
+      _json["readTime"] = readTime;
+    }
+    if (removedTargetIds != null) {
+      _json["removedTargetIds"] = removedTargetIds;
+    }
+    return _json;
+  }
+}
+
+/// A transformation of a document.
+class DocumentTransform {
+  /// The name of the document to transform.
+  core.String document;
+
+  /// The list of transformations to apply to the fields of the document, in
+  /// order.
+  core.List<FieldTransform> fieldTransforms;
+
+  DocumentTransform();
+
+  DocumentTransform.fromJson(core.Map _json) {
+    if (_json.containsKey("document")) {
+      document = _json["document"];
+    }
+    if (_json.containsKey("fieldTransforms")) {
+      fieldTransforms = _json["fieldTransforms"]
+          .map((value) => new FieldTransform.fromJson(value))
+          .toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (document != null) {
+      _json["document"] = document;
+    }
+    if (fieldTransforms != null) {
+      _json["fieldTransforms"] =
+          fieldTransforms.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// A target specified by a set of documents names.
+class DocumentsTarget {
+  /// The names of the documents to retrieve. In the format:
+  /// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+  /// The request will fail if any of the document is not a child resource of
+  /// the given `database`. Duplicate names will be elided.
+  core.List<core.String> documents;
+
+  DocumentsTarget();
+
+  DocumentsTarget.fromJson(core.Map _json) {
+    if (_json.containsKey("documents")) {
+      documents = _json["documents"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (documents != null) {
+      _json["documents"] = documents;
+    }
+    return _json;
+  }
+}
+
+/// A generic empty message that you can re-use to avoid defining duplicated
+/// empty messages in your APIs. A typical example is to use it as the request
+/// or the response type of an API method. For instance:
+///
+///     service Foo {
+///       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
+///     }
+///
+/// The JSON representation for `Empty` is empty JSON object `{}`.
+class Empty {
+  Empty();
+
+  Empty.fromJson(core.Map _json) {}
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    return _json;
+  }
+}
+
+/// A digest of all the documents that match a given target.
+class ExistenceFilter {
+  /// The total count of documents that match target_id.
+  ///
+  /// If different from the count of documents in the client that match, the
+  /// client must manually determine which documents no longer match the target.
+  core.int count;
+
+  /// The target ID to which this filter applies.
+  core.int targetId;
+
+  ExistenceFilter();
+
+  ExistenceFilter.fromJson(core.Map _json) {
+    if (_json.containsKey("count")) {
+      count = _json["count"];
+    }
+    if (_json.containsKey("targetId")) {
+      targetId = _json["targetId"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (count != null) {
+      _json["count"] = count;
+    }
+    if (targetId != null) {
+      _json["targetId"] = targetId;
+    }
+    return _json;
+  }
+}
+
+/// A filter on a specific field.
+class FieldFilter {
+  /// The field to filter by.
+  FieldReference field;
+
+  /// The operator to filter by.
+  /// Possible string values are:
+  /// - "OPERATOR_UNSPECIFIED" : Unspecified. This value must not be used.
+  /// - "LESS_THAN" : Less than. Requires that the field come first in
+  /// `order_by`.
+  /// - "LESS_THAN_OR_EQUAL" : Less than or equal. Requires that the field come
+  /// first in `order_by`.
+  /// - "GREATER_THAN" : Greater than. Requires that the field come first in
+  /// `order_by`.
+  /// - "GREATER_THAN_OR_EQUAL" : Greater than or equal. Requires that the field
+  /// come first in
+  /// `order_by`.
+  /// - "EQUAL" : Equal.
+  core.String op;
+
+  /// The value to compare to.
+  Value value;
+
+  FieldFilter();
+
+  FieldFilter.fromJson(core.Map _json) {
+    if (_json.containsKey("field")) {
+      field = new FieldReference.fromJson(_json["field"]);
+    }
+    if (_json.containsKey("op")) {
+      op = _json["op"];
+    }
+    if (_json.containsKey("value")) {
+      value = new Value.fromJson(_json["value"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (field != null) {
+      _json["field"] = (field).toJson();
+    }
+    if (op != null) {
+      _json["op"] = op;
+    }
+    if (value != null) {
+      _json["value"] = (value).toJson();
+    }
+    return _json;
+  }
+}
+
+/// A reference to a field, such as `max(messages.time) as max_time`.
+class FieldReference {
+  core.String fieldPath;
+
+  FieldReference();
+
+  FieldReference.fromJson(core.Map _json) {
+    if (_json.containsKey("fieldPath")) {
+      fieldPath = _json["fieldPath"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (fieldPath != null) {
+      _json["fieldPath"] = fieldPath;
+    }
+    return _json;
+  }
+}
+
+/// A transformation of a field of the document.
+class FieldTransform {
+  /// The path of the field. See Document.fields for the field path syntax
+  /// reference.
+  core.String fieldPath;
+
+  /// Sets the field to the given server value.
+  /// Possible string values are:
+  /// - "SERVER_VALUE_UNSPECIFIED" : Unspecified. This value must not be used.
+  /// - "REQUEST_TIME" : The time at which the server processed the request.
+  core.String setToServerValue;
+
+  FieldTransform();
+
+  FieldTransform.fromJson(core.Map _json) {
+    if (_json.containsKey("fieldPath")) {
+      fieldPath = _json["fieldPath"];
+    }
+    if (_json.containsKey("setToServerValue")) {
+      setToServerValue = _json["setToServerValue"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (fieldPath != null) {
+      _json["fieldPath"] = fieldPath;
+    }
+    if (setToServerValue != null) {
+      _json["setToServerValue"] = setToServerValue;
+    }
+    return _json;
+  }
+}
+
+/// A filter.
+class Filter {
+  /// A composite filter.
+  CompositeFilter compositeFilter;
+
+  /// A filter on a document field.
+  FieldFilter fieldFilter;
+
+  /// A filter that takes exactly one argument.
+  UnaryFilter unaryFilter;
+
+  Filter();
+
+  Filter.fromJson(core.Map _json) {
+    if (_json.containsKey("compositeFilter")) {
+      compositeFilter = new CompositeFilter.fromJson(_json["compositeFilter"]);
+    }
+    if (_json.containsKey("fieldFilter")) {
+      fieldFilter = new FieldFilter.fromJson(_json["fieldFilter"]);
+    }
+    if (_json.containsKey("unaryFilter")) {
+      unaryFilter = new UnaryFilter.fromJson(_json["unaryFilter"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (compositeFilter != null) {
+      _json["compositeFilter"] = (compositeFilter).toJson();
+    }
+    if (fieldFilter != null) {
+      _json["fieldFilter"] = (fieldFilter).toJson();
+    }
+    if (unaryFilter != null) {
+      _json["unaryFilter"] = (unaryFilter).toJson();
+    }
+    return _json;
+  }
+}
+
+/// An index definition.
+class Index {
+  /// The collection ID to which this index applies. Required.
+  core.String collectionId;
+
+  /// The fields to index.
+  core.List<IndexField> fields;
+
+  /// The resource name of the index.
+  /// Output only.
+  core.String name;
+
+  /// The state of the index.
+  /// Output only.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : The state is unspecified.
+  /// - "CREATING" : The index is being created.
+  /// There is an active long-running operation for the index.
+  /// The index is updated when writing a document.
+  /// Some index data may exist.
+  /// - "READY" : The index is ready to be used.
+  /// The index is updated when writing a document.
+  /// The index is fully populated from all stored documents it applies to.
+  /// - "ERROR" : The index was being created, but something went wrong.
+  /// There is no active long-running operation for the index,
+  /// and the most recently finished long-running operation failed.
+  /// The index is not updated when writing a document.
+  /// Some index data may exist.
+  core.String state;
+
+  Index();
+
+  Index.fromJson(core.Map _json) {
+    if (_json.containsKey("collectionId")) {
+      collectionId = _json["collectionId"];
+    }
+    if (_json.containsKey("fields")) {
+      fields = _json["fields"]
+          .map((value) => new IndexField.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("state")) {
+      state = _json["state"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (collectionId != null) {
+      _json["collectionId"] = collectionId;
+    }
+    if (fields != null) {
+      _json["fields"] = fields.map((value) => (value).toJson()).toList();
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (state != null) {
+      _json["state"] = state;
+    }
+    return _json;
+  }
+}
+
+/// A field of an index.
+class IndexField {
+  /// The path of the field. Must match the field path specification described
+  /// by google.firestore.v1beta1.Document.fields.
+  /// Special field path `__name__` may be used by itself or at the end of a
+  /// path. `__type__` may be used only at the end of path.
+  core.String fieldPath;
+
+  /// The field's mode.
+  /// Possible string values are:
+  /// - "MODE_UNSPECIFIED" : The mode is unspecified.
+  /// - "ASCENDING" : The field's values are indexed so as to support sequencing
+  /// in
+  /// ascending order and also query by <, >, <=, >=, and =.
+  /// - "DESCENDING" : The field's values are indexed so as to support
+  /// sequencing in
+  /// descending order and also query by <, >, <=, >=, and =.
+  core.String mode;
+
+  IndexField();
+
+  IndexField.fromJson(core.Map _json) {
+    if (_json.containsKey("fieldPath")) {
+      fieldPath = _json["fieldPath"];
+    }
+    if (_json.containsKey("mode")) {
+      mode = _json["mode"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (fieldPath != null) {
+      _json["fieldPath"] = fieldPath;
+    }
+    if (mode != null) {
+      _json["mode"] = mode;
+    }
+    return _json;
+  }
+}
+
+/// An object representing a latitude/longitude pair. This is expressed as a
+/// pair
+/// of doubles representing degrees latitude and degrees longitude. Unless
+/// specified otherwise, this must conform to the
+/// <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
+/// standard</a>. Values must be within normalized ranges.
+///
+/// Example of normalization code in Python:
+///
+///     def NormalizeLongitude(longitude):
+///       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
+///       q, r = divmod(longitude, 360.0)
+///       if r > 180.0 or (r == 180.0 and q <= -1.0):
+///         return r - 360.0
+///       return r
+///
+///     def NormalizeLatLng(latitude, longitude):
+///       """Wraps decimal degrees latitude and longitude to
+///       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
+///       r = latitude % 360.0
+///       if r <= 90.0:
+///         return r, NormalizeLongitude(longitude)
+///       elif r >= 270.0:
+///         return r - 360, NormalizeLongitude(longitude)
+///       else:
+///         return 180 - r, NormalizeLongitude(longitude + 180.0)
+///
+///     assert 180.0 == NormalizeLongitude(180.0)
+///     assert -180.0 == NormalizeLongitude(-180.0)
+///     assert -179.0 == NormalizeLongitude(181.0)
+///     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
+///     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
+///     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
+///     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
+///     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
+///     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
+///     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
+///     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
+///     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
+///     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
+class LatLng {
+  /// The latitude in degrees. It must be in the range [-90.0, +90.0].
+  core.double latitude;
+
+  /// The longitude in degrees. It must be in the range [-180.0, +180.0].
+  core.double longitude;
+
+  LatLng();
+
+  LatLng.fromJson(core.Map _json) {
+    if (_json.containsKey("latitude")) {
+      latitude = _json["latitude"];
+    }
+    if (_json.containsKey("longitude")) {
+      longitude = _json["longitude"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (latitude != null) {
+      _json["latitude"] = latitude;
+    }
+    if (longitude != null) {
+      _json["longitude"] = longitude;
+    }
+    return _json;
+  }
+}
+
+/// The request for Firestore.ListCollectionIds.
+class ListCollectionIdsRequest {
+  /// The maximum number of results to return.
+  core.int pageSize;
+
+  /// A page token. Must be a value from
+  /// ListCollectionIdsResponse.
+  core.String pageToken;
+
+  ListCollectionIdsRequest();
+
+  ListCollectionIdsRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("pageSize")) {
+      pageSize = _json["pageSize"];
+    }
+    if (_json.containsKey("pageToken")) {
+      pageToken = _json["pageToken"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (pageSize != null) {
+      _json["pageSize"] = pageSize;
+    }
+    if (pageToken != null) {
+      _json["pageToken"] = pageToken;
+    }
+    return _json;
+  }
+}
+
+/// The response from Firestore.ListCollectionIds.
+class ListCollectionIdsResponse {
+  /// The collection ids.
+  core.List<core.String> collectionIds;
+
+  /// A page token that may be used to continue the list.
+  core.String nextPageToken;
+
+  ListCollectionIdsResponse();
+
+  ListCollectionIdsResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("collectionIds")) {
+      collectionIds = _json["collectionIds"];
+    }
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (collectionIds != null) {
+      _json["collectionIds"] = collectionIds;
+    }
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    return _json;
+  }
+}
+
+/// The response for Firestore.ListDocuments.
+class ListDocumentsResponse {
+  /// The Documents found.
+  core.List<Document> documents;
+
+  /// The next page token.
+  core.String nextPageToken;
+
+  ListDocumentsResponse();
+
+  ListDocumentsResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("documents")) {
+      documents = _json["documents"]
+          .map((value) => new Document.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (documents != null) {
+      _json["documents"] = documents.map((value) => (value).toJson()).toList();
+    }
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    return _json;
+  }
+}
+
+/// The response for FirestoreAdmin.ListIndexes.
+class ListIndexesResponse {
+  /// The indexes.
+  core.List<Index> indexes;
+
+  /// The standard List next-page token.
+  core.String nextPageToken;
+
+  ListIndexesResponse();
+
+  ListIndexesResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("indexes")) {
+      indexes =
+          _json["indexes"].map((value) => new Index.fromJson(value)).toList();
+    }
+    if (_json.containsKey("nextPageToken")) {
+      nextPageToken = _json["nextPageToken"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (indexes != null) {
+      _json["indexes"] = indexes.map((value) => (value).toJson()).toList();
+    }
+    if (nextPageToken != null) {
+      _json["nextPageToken"] = nextPageToken;
+    }
+    return _json;
+  }
+}
+
+/// A request for Firestore.Listen
+class ListenRequest {
+  /// A target to add to this stream.
+  Target addTarget;
+
+  /// Labels associated with this target change.
+  core.Map<core.String, core.String> labels;
+
+  /// The ID of a target to remove from this stream.
+  core.int removeTarget;
+
+  ListenRequest();
+
+  ListenRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("addTarget")) {
+      addTarget = new Target.fromJson(_json["addTarget"]);
+    }
+    if (_json.containsKey("labels")) {
+      labels = _json["labels"];
+    }
+    if (_json.containsKey("removeTarget")) {
+      removeTarget = _json["removeTarget"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (addTarget != null) {
+      _json["addTarget"] = (addTarget).toJson();
+    }
+    if (labels != null) {
+      _json["labels"] = labels;
+    }
+    if (removeTarget != null) {
+      _json["removeTarget"] = removeTarget;
+    }
+    return _json;
+  }
+}
+
+/// The response for Firestore.Listen.
+class ListenResponse {
+  /// A Document has changed.
+  DocumentChange documentChange;
+
+  /// A Document has been deleted.
+  DocumentDelete documentDelete;
+
+  /// A Document has been removed from a target (because it is no longer
+  /// relevant to that target).
+  DocumentRemove documentRemove;
+
+  /// A filter to apply to the set of documents previously returned for the
+  /// given target.
+  ///
+  /// Returned when documents may have been removed from the given target, but
+  /// the exact documents are unknown.
+  ExistenceFilter filter;
+
+  /// Targets have changed.
+  TargetChange targetChange;
+
+  ListenResponse();
+
+  ListenResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("documentChange")) {
+      documentChange = new DocumentChange.fromJson(_json["documentChange"]);
+    }
+    if (_json.containsKey("documentDelete")) {
+      documentDelete = new DocumentDelete.fromJson(_json["documentDelete"]);
+    }
+    if (_json.containsKey("documentRemove")) {
+      documentRemove = new DocumentRemove.fromJson(_json["documentRemove"]);
+    }
+    if (_json.containsKey("filter")) {
+      filter = new ExistenceFilter.fromJson(_json["filter"]);
+    }
+    if (_json.containsKey("targetChange")) {
+      targetChange = new TargetChange.fromJson(_json["targetChange"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (documentChange != null) {
+      _json["documentChange"] = (documentChange).toJson();
+    }
+    if (documentDelete != null) {
+      _json["documentDelete"] = (documentDelete).toJson();
+    }
+    if (documentRemove != null) {
+      _json["documentRemove"] = (documentRemove).toJson();
+    }
+    if (filter != null) {
+      _json["filter"] = (filter).toJson();
+    }
+    if (targetChange != null) {
+      _json["targetChange"] = (targetChange).toJson();
+    }
+    return _json;
+  }
+}
+
+/// A map value.
+class MapValue {
+  /// The map's fields.
+  ///
+  /// The map keys represent field names. Field names matching the regular
+  /// expression `__.*__` are reserved. Reserved field names are forbidden
+  /// except
+  /// in certain documented contexts. The map keys, represented as UTF-8, must
+  /// not exceed 1,500 bytes and cannot be empty.
+  core.Map<core.String, Value> fields;
+
+  MapValue();
+
+  MapValue.fromJson(core.Map _json) {
+    if (_json.containsKey("fields")) {
+      fields = commons.mapMap<core.Map<core.String, core.Object>, Value>(
+          _json["fields"],
+          (core.Map<core.String, core.Object> item) =>
+              new Value.fromJson(item));
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (fields != null) {
+      _json["fields"] =
+          commons.mapMap<Value, core.Map<core.String, core.Object>>(
+              fields, (Value item) => (item).toJson());
+    }
+    return _json;
+  }
+}
+
+/// This resource represents a long-running operation that is the result of a
+/// network API call.
+class Operation {
+  /// If the value is `false`, it means the operation is still in progress.
+  /// If `true`, the operation is completed, and either `error` or `response` is
+  /// available.
+  core.bool done;
+
+  /// The error result of the operation in case of failure or cancellation.
+  Status error;
+
+  /// Service-specific metadata associated with the operation.  It typically
+  /// contains progress information and common metadata such as create time.
+  /// Some services might not provide such metadata.  Any method that returns a
+  /// long-running operation should document the metadata type, if any.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.Map<core.String, core.Object> metadata;
+
+  /// The server-assigned name, which is only unique within the same service
+  /// that
+  /// originally returns it. If you use the default HTTP mapping, the
+  /// `name` should have the format of `operations/some/unique/name`.
+  core.String name;
+
+  /// The normal response of the operation in case of success.  If the original
+  /// method returns no data on success, such as `Delete`, the response is
+  /// `google.protobuf.Empty`.  If the original method is standard
+  /// `Get`/`Create`/`Update`, the response should be the resource.  For other
+  /// methods, the response should have the type `XxxResponse`, where `Xxx`
+  /// is the original method name.  For example, if the original method name
+  /// is `TakeSnapshot()`, the inferred response type is
+  /// `TakeSnapshotResponse`.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.Map<core.String, core.Object> response;
+
+  Operation();
+
+  Operation.fromJson(core.Map _json) {
+    if (_json.containsKey("done")) {
+      done = _json["done"];
+    }
+    if (_json.containsKey("error")) {
+      error = new Status.fromJson(_json["error"]);
+    }
+    if (_json.containsKey("metadata")) {
+      metadata = _json["metadata"];
+    }
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("response")) {
+      response = _json["response"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (done != null) {
+      _json["done"] = done;
+    }
+    if (error != null) {
+      _json["error"] = (error).toJson();
+    }
+    if (metadata != null) {
+      _json["metadata"] = metadata;
+    }
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (response != null) {
+      _json["response"] = response;
+    }
+    return _json;
+  }
+}
+
+/// An order on a field.
+class Order {
+  /// The direction to order by. Defaults to `ASCENDING`.
+  /// Possible string values are:
+  /// - "DIRECTION_UNSPECIFIED" : Unspecified.
+  /// - "ASCENDING" : Ascending.
+  /// - "DESCENDING" : Descending.
+  core.String direction;
+
+  /// The field to order by.
+  FieldReference field;
+
+  Order();
+
+  Order.fromJson(core.Map _json) {
+    if (_json.containsKey("direction")) {
+      direction = _json["direction"];
+    }
+    if (_json.containsKey("field")) {
+      field = new FieldReference.fromJson(_json["field"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (direction != null) {
+      _json["direction"] = direction;
+    }
+    if (field != null) {
+      _json["field"] = (field).toJson();
+    }
+    return _json;
+  }
+}
+
+/// A precondition on a document, used for conditional operations.
+class Precondition {
+  /// When set to `true`, the target document must exist.
+  /// When set to `false`, the target document must not exist.
+  core.bool exists;
+
+  /// When set, the target document must exist and have been last updated at
+  /// that time.
+  core.String updateTime;
+
+  Precondition();
+
+  Precondition.fromJson(core.Map _json) {
+    if (_json.containsKey("exists")) {
+      exists = _json["exists"];
+    }
+    if (_json.containsKey("updateTime")) {
+      updateTime = _json["updateTime"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (exists != null) {
+      _json["exists"] = exists;
+    }
+    if (updateTime != null) {
+      _json["updateTime"] = updateTime;
+    }
+    return _json;
+  }
+}
+
+/// The projection of document's fields to return.
+class Projection {
+  /// The fields to return.
+  ///
+  /// If empty, all fields are returned. To only return the name
+  /// of the document, use `['__name__']`.
+  core.List<FieldReference> fields;
+
+  Projection();
+
+  Projection.fromJson(core.Map _json) {
+    if (_json.containsKey("fields")) {
+      fields = _json["fields"]
+          .map((value) => new FieldReference.fromJson(value))
+          .toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (fields != null) {
+      _json["fields"] = fields.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// A target specified by a query.
+class QueryTarget {
+  /// The parent resource name. In the format:
+  /// `projects/{project_id}/databases/{database_id}/documents` or
+  /// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+  /// For example:
+  /// `projects/my-project/databases/my-database/documents` or
+  /// `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`
+  core.String parent;
+
+  /// A structured query.
+  StructuredQuery structuredQuery;
+
+  QueryTarget();
+
+  QueryTarget.fromJson(core.Map _json) {
+    if (_json.containsKey("parent")) {
+      parent = _json["parent"];
+    }
+    if (_json.containsKey("structuredQuery")) {
+      structuredQuery = new StructuredQuery.fromJson(_json["structuredQuery"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (parent != null) {
+      _json["parent"] = parent;
+    }
+    if (structuredQuery != null) {
+      _json["structuredQuery"] = (structuredQuery).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Options for a transaction that can only be used to read documents.
+class ReadOnly {
+  /// Reads documents at the given time.
+  /// This may not be older than 60 seconds.
+  core.String readTime;
+
+  ReadOnly();
+
+  ReadOnly.fromJson(core.Map _json) {
+    if (_json.containsKey("readTime")) {
+      readTime = _json["readTime"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (readTime != null) {
+      _json["readTime"] = readTime;
+    }
+    return _json;
+  }
+}
+
+/// Options for a transaction that can be used to read and write documents.
+class ReadWrite {
+  /// An optional transaction to retry.
+  core.String retryTransaction;
+  core.List<core.int> get retryTransactionAsBytes {
+    return convert.BASE64.decode(retryTransaction);
+  }
+
+  void set retryTransactionAsBytes(core.List<core.int> _bytes) {
+    retryTransaction =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  ReadWrite();
+
+  ReadWrite.fromJson(core.Map _json) {
+    if (_json.containsKey("retryTransaction")) {
+      retryTransaction = _json["retryTransaction"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (retryTransaction != null) {
+      _json["retryTransaction"] = retryTransaction;
+    }
+    return _json;
+  }
+}
+
+/// The request for Firestore.Rollback.
+class RollbackRequest {
+  /// The transaction to roll back.
+  core.String transaction;
+  core.List<core.int> get transactionAsBytes {
+    return convert.BASE64.decode(transaction);
+  }
+
+  void set transactionAsBytes(core.List<core.int> _bytes) {
+    transaction =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  RollbackRequest();
+
+  RollbackRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("transaction")) {
+      transaction = _json["transaction"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (transaction != null) {
+      _json["transaction"] = transaction;
+    }
+    return _json;
+  }
+}
+
+/// The request for Firestore.RunQuery.
+class RunQueryRequest {
+  /// Starts a new transaction and reads the documents.
+  /// Defaults to a read-only transaction.
+  /// The new transaction ID will be returned as the first response in the
+  /// stream.
+  TransactionOptions newTransaction;
+
+  /// Reads documents as they were at the given time.
+  /// This may not be older than 60 seconds.
+  core.String readTime;
+
+  /// A structured query.
+  StructuredQuery structuredQuery;
+
+  /// Reads documents in a transaction.
+  core.String transaction;
+  core.List<core.int> get transactionAsBytes {
+    return convert.BASE64.decode(transaction);
+  }
+
+  void set transactionAsBytes(core.List<core.int> _bytes) {
+    transaction =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  RunQueryRequest();
+
+  RunQueryRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("newTransaction")) {
+      newTransaction = new TransactionOptions.fromJson(_json["newTransaction"]);
+    }
+    if (_json.containsKey("readTime")) {
+      readTime = _json["readTime"];
+    }
+    if (_json.containsKey("structuredQuery")) {
+      structuredQuery = new StructuredQuery.fromJson(_json["structuredQuery"]);
+    }
+    if (_json.containsKey("transaction")) {
+      transaction = _json["transaction"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (newTransaction != null) {
+      _json["newTransaction"] = (newTransaction).toJson();
+    }
+    if (readTime != null) {
+      _json["readTime"] = readTime;
+    }
+    if (structuredQuery != null) {
+      _json["structuredQuery"] = (structuredQuery).toJson();
+    }
+    if (transaction != null) {
+      _json["transaction"] = transaction;
+    }
+    return _json;
+  }
+}
+
+/// The response for Firestore.RunQuery.
+class RunQueryResponse {
+  /// A query result.
+  /// Not set when reporting partial progress.
+  Document document;
+
+  /// The time at which the document was read. This may be monotonically
+  /// increasing; in this case, the previous documents in the result stream are
+  /// guaranteed not to have changed between their `read_time` and this one.
+  ///
+  /// If the query returns no results, a response with `read_time` and no
+  /// `document` will be sent, and this represents the time at which the query
+  /// was run.
+  core.String readTime;
+
+  /// The number of results that have been skipped due to an offset between
+  /// the last response and the current response.
+  core.int skippedResults;
+
+  /// The transaction that was started as part of this request.
+  /// Can only be set in the first response, and only if
+  /// RunQueryRequest.new_transaction was set in the request.
+  /// If set, no other fields will be set in this response.
+  core.String transaction;
+  core.List<core.int> get transactionAsBytes {
+    return convert.BASE64.decode(transaction);
+  }
+
+  void set transactionAsBytes(core.List<core.int> _bytes) {
+    transaction =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  RunQueryResponse();
+
+  RunQueryResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("document")) {
+      document = new Document.fromJson(_json["document"]);
+    }
+    if (_json.containsKey("readTime")) {
+      readTime = _json["readTime"];
+    }
+    if (_json.containsKey("skippedResults")) {
+      skippedResults = _json["skippedResults"];
+    }
+    if (_json.containsKey("transaction")) {
+      transaction = _json["transaction"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (document != null) {
+      _json["document"] = (document).toJson();
+    }
+    if (readTime != null) {
+      _json["readTime"] = readTime;
+    }
+    if (skippedResults != null) {
+      _json["skippedResults"] = skippedResults;
+    }
+    if (transaction != null) {
+      _json["transaction"] = transaction;
+    }
+    return _json;
+  }
+}
+
+/// The `Status` type defines a logical error model that is suitable for
+/// different
+/// programming environments, including REST APIs and RPC APIs. It is used by
+/// [gRPC](https://github.com/grpc). The error model is designed to be:
+///
+/// - Simple to use and understand for most users
+/// - Flexible enough to meet unexpected needs
+///
+/// # Overview
+///
+/// The `Status` message contains three pieces of data: error code, error
+/// message,
+/// and error details. The error code should be an enum value of
+/// google.rpc.Code, but it may accept additional error codes if needed.  The
+/// error message should be a developer-facing English message that helps
+/// developers *understand* and *resolve* the error. If a localized user-facing
+/// error message is needed, put the localized message in the error details or
+/// localize it in the client. The optional error details may contain arbitrary
+/// information about the error. There is a predefined set of error detail types
+/// in the package `google.rpc` that can be used for common error conditions.
+///
+/// # Language mapping
+///
+/// The `Status` message is the logical representation of the error model, but
+/// it
+/// is not necessarily the actual wire format. When the `Status` message is
+/// exposed in different client libraries and different wire protocols, it can
+/// be
+/// mapped differently. For example, it will likely be mapped to some exceptions
+/// in Java, but more likely mapped to some error codes in C.
+///
+/// # Other uses
+///
+/// The error model and the `Status` message can be used in a variety of
+/// environments, either with or without APIs, to provide a
+/// consistent developer experience across different environments.
+///
+/// Example uses of this error model include:
+///
+/// - Partial errors. If a service needs to return partial errors to the client,
+/// it may embed the `Status` in the normal response to indicate the partial
+///     errors.
+///
+/// - Workflow errors. A typical workflow has multiple steps. Each step may
+///     have a `Status` message for error reporting.
+///
+/// - Batch operations. If a client uses batch request and batch response, the
+///     `Status` message should be used directly inside batch response, one for
+///     each error sub-response.
+///
+/// - Asynchronous operations. If an API call embeds asynchronous operation
+///     results in its response, the status of those operations should be
+///     represented directly using the `Status` message.
+///
+/// - Logging. If some API errors are stored in logs, the message `Status` could
+/// be used directly after any stripping needed for security/privacy reasons.
+class Status {
+  /// The status code, which should be an enum value of google.rpc.Code.
+  core.int code;
+
+  /// A list of messages that carry the error details.  There is a common set of
+  /// message types for APIs to use.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.List<core.Map<core.String, core.Object>> details;
+
+  /// A developer-facing error message, which should be in English. Any
+  /// user-facing error message should be localized and sent in the
+  /// google.rpc.Status.details field, or localized by the client.
+  core.String message;
+
+  Status();
+
+  Status.fromJson(core.Map _json) {
+    if (_json.containsKey("code")) {
+      code = _json["code"];
+    }
+    if (_json.containsKey("details")) {
+      details = _json["details"];
+    }
+    if (_json.containsKey("message")) {
+      message = _json["message"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (code != null) {
+      _json["code"] = code;
+    }
+    if (details != null) {
+      _json["details"] = details;
+    }
+    if (message != null) {
+      _json["message"] = message;
+    }
+    return _json;
+  }
+}
+
+/// A Firestore query.
+class StructuredQuery {
+  /// A end point for the query results.
+  Cursor endAt;
+
+  /// The collections to query.
+  core.List<CollectionSelector> from;
+
+  /// The maximum number of results to return.
+  ///
+  /// Applies after all other constraints.
+  /// Must be >= 0 if specified.
+  core.int limit;
+
+  /// The number of results to skip.
+  ///
+  /// Applies before limit, but after all other constraints. Must be >= 0 if
+  /// specified.
+  core.int offset;
+
+  /// The order to apply to the query results.
+  ///
+  /// Firestore guarantees a stable ordering through the following rules:
+  ///
+  ///  * Any field required to appear in `order_by`, that is not already
+  ///    specified in `order_by`, is appended to the order in field name order
+  ///    by default.
+  ///  * If an order on `__name__` is not specified, it is appended by default.
+  ///
+  /// Fields are appended with the same sort direction as the last order
+  /// specified, or 'ASCENDING' if no order was specified. For example:
+  ///
+  ///  * `SELECT * FROM Foo ORDER BY A` becomes
+  ///    `SELECT * FROM Foo ORDER BY A, __name__`
+  ///  * `SELECT * FROM Foo ORDER BY A DESC` becomes
+  ///    `SELECT * FROM Foo ORDER BY A DESC, __name__ DESC`
+  ///  * `SELECT * FROM Foo WHERE A > 1` becomes
+  ///    `SELECT * FROM Foo WHERE A > 1 ORDER BY A, __name__`
+  core.List<Order> orderBy;
+
+  /// The projection to return.
+  Projection select;
+
+  /// A starting point for the query results.
+  Cursor startAt;
+
+  /// The filter to apply.
+  Filter where;
+
+  StructuredQuery();
+
+  StructuredQuery.fromJson(core.Map _json) {
+    if (_json.containsKey("endAt")) {
+      endAt = new Cursor.fromJson(_json["endAt"]);
+    }
+    if (_json.containsKey("from")) {
+      from = _json["from"]
+          .map((value) => new CollectionSelector.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("limit")) {
+      limit = _json["limit"];
+    }
+    if (_json.containsKey("offset")) {
+      offset = _json["offset"];
+    }
+    if (_json.containsKey("orderBy")) {
+      orderBy =
+          _json["orderBy"].map((value) => new Order.fromJson(value)).toList();
+    }
+    if (_json.containsKey("select")) {
+      select = new Projection.fromJson(_json["select"]);
+    }
+    if (_json.containsKey("startAt")) {
+      startAt = new Cursor.fromJson(_json["startAt"]);
+    }
+    if (_json.containsKey("where")) {
+      where = new Filter.fromJson(_json["where"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (endAt != null) {
+      _json["endAt"] = (endAt).toJson();
+    }
+    if (from != null) {
+      _json["from"] = from.map((value) => (value).toJson()).toList();
+    }
+    if (limit != null) {
+      _json["limit"] = limit;
+    }
+    if (offset != null) {
+      _json["offset"] = offset;
+    }
+    if (orderBy != null) {
+      _json["orderBy"] = orderBy.map((value) => (value).toJson()).toList();
+    }
+    if (select != null) {
+      _json["select"] = (select).toJson();
+    }
+    if (startAt != null) {
+      _json["startAt"] = (startAt).toJson();
+    }
+    if (where != null) {
+      _json["where"] = (where).toJson();
+    }
+    return _json;
+  }
+}
+
+/// A specification of a set of documents to listen to.
+class Target {
+  /// A target specified by a set of document names.
+  DocumentsTarget documents;
+
+  /// If the target should be removed once it is current and consistent.
+  core.bool once;
+
+  /// A target specified by a query.
+  QueryTarget query;
+
+  /// Start listening after a specific `read_time`.
+  ///
+  /// The client must know the state of matching documents at this time.
+  core.String readTime;
+
+  /// A resume token from a prior TargetChange for an identical target.
+  ///
+  /// Using a resume token with a different target is unsupported and may fail.
+  core.String resumeToken;
+  core.List<core.int> get resumeTokenAsBytes {
+    return convert.BASE64.decode(resumeToken);
+  }
+
+  void set resumeTokenAsBytes(core.List<core.int> _bytes) {
+    resumeToken =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  /// A client provided target ID.
+  ///
+  /// If not set, the server will assign an ID for the target.
+  ///
+  /// Used for resuming a target without changing IDs. The IDs can either be
+  /// client-assigned or be server-assigned in a previous stream. All targets
+  /// with client provided IDs must be added before adding a target that needs
+  /// a server-assigned id.
+  core.int targetId;
+
+  Target();
+
+  Target.fromJson(core.Map _json) {
+    if (_json.containsKey("documents")) {
+      documents = new DocumentsTarget.fromJson(_json["documents"]);
+    }
+    if (_json.containsKey("once")) {
+      once = _json["once"];
+    }
+    if (_json.containsKey("query")) {
+      query = new QueryTarget.fromJson(_json["query"]);
+    }
+    if (_json.containsKey("readTime")) {
+      readTime = _json["readTime"];
+    }
+    if (_json.containsKey("resumeToken")) {
+      resumeToken = _json["resumeToken"];
+    }
+    if (_json.containsKey("targetId")) {
+      targetId = _json["targetId"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (documents != null) {
+      _json["documents"] = (documents).toJson();
+    }
+    if (once != null) {
+      _json["once"] = once;
+    }
+    if (query != null) {
+      _json["query"] = (query).toJson();
+    }
+    if (readTime != null) {
+      _json["readTime"] = readTime;
+    }
+    if (resumeToken != null) {
+      _json["resumeToken"] = resumeToken;
+    }
+    if (targetId != null) {
+      _json["targetId"] = targetId;
+    }
+    return _json;
+  }
+}
+
+/// Targets being watched have changed.
+class TargetChange {
+  /// The error that resulted in this change, if applicable.
+  Status cause;
+
+  /// The consistent `read_time` for the given `target_ids` (omitted when the
+  /// target_ids are not at a consistent snapshot).
+  ///
+  /// The stream is guaranteed to send a `read_time` with `target_ids` empty
+  /// whenever the entire stream reaches a new consistent snapshot. ADD,
+  /// CURRENT, and RESET messages are guaranteed to (eventually) result in a
+  /// new consistent snapshot (while NO_CHANGE and REMOVE messages are not).
+  ///
+  /// For a given stream, `read_time` is guaranteed to be monotonically
+  /// increasing.
+  core.String readTime;
+
+  /// A token that can be used to resume the stream for the given `target_ids`,
+  /// or all targets if `target_ids` is empty.
+  ///
+  /// Not set on every target change.
+  core.String resumeToken;
+  core.List<core.int> get resumeTokenAsBytes {
+    return convert.BASE64.decode(resumeToken);
+  }
+
+  void set resumeTokenAsBytes(core.List<core.int> _bytes) {
+    resumeToken =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  /// The type of change that occurred.
+  /// Possible string values are:
+  /// - "NO_CHANGE" : No change has occurred. Used only to send an updated
+  /// `resume_token`.
+  /// - "ADD" : The targets have been added.
+  /// - "REMOVE" : The targets have been removed.
+  /// - "CURRENT" : The targets reflect all changes committed before the targets
+  /// were added
+  /// to the stream.
+  ///
+  /// This will be sent after or with a `read_time` that is greater than or
+  /// equal to the time at which the targets were added.
+  ///
+  /// Listeners can wait for this change if read-after-write semantics
+  /// are desired.
+  /// - "RESET" : The targets have been reset, and a new initial state for the
+  /// targets
+  /// will be returned in subsequent changes.
+  ///
+  /// After the initial state is complete, `CURRENT` will be returned even
+  /// if the target was previously indicated to be `CURRENT`.
+  core.String targetChangeType;
+
+  /// The target IDs of targets that have changed.
+  ///
+  /// If empty, the change applies to all targets.
+  ///
+  /// For `target_change_type=ADD`, the order of the target IDs matches the
+  /// order
+  /// of the requests to add the targets. This allows clients to unambiguously
+  /// associate server-assigned target IDs with added targets.
+  ///
+  /// For other states, the order of the target IDs is not defined.
+  core.List<core.int> targetIds;
+
+  TargetChange();
+
+  TargetChange.fromJson(core.Map _json) {
+    if (_json.containsKey("cause")) {
+      cause = new Status.fromJson(_json["cause"]);
+    }
+    if (_json.containsKey("readTime")) {
+      readTime = _json["readTime"];
+    }
+    if (_json.containsKey("resumeToken")) {
+      resumeToken = _json["resumeToken"];
+    }
+    if (_json.containsKey("targetChangeType")) {
+      targetChangeType = _json["targetChangeType"];
+    }
+    if (_json.containsKey("targetIds")) {
+      targetIds = _json["targetIds"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (cause != null) {
+      _json["cause"] = (cause).toJson();
+    }
+    if (readTime != null) {
+      _json["readTime"] = readTime;
+    }
+    if (resumeToken != null) {
+      _json["resumeToken"] = resumeToken;
+    }
+    if (targetChangeType != null) {
+      _json["targetChangeType"] = targetChangeType;
+    }
+    if (targetIds != null) {
+      _json["targetIds"] = targetIds;
+    }
+    return _json;
+  }
+}
+
+/// Options for creating a new transaction.
+class TransactionOptions {
+  /// The transaction can only be used for read operations.
+  ReadOnly readOnly;
+
+  /// The transaction can be used for both read and write operations.
+  ReadWrite readWrite;
+
+  TransactionOptions();
+
+  TransactionOptions.fromJson(core.Map _json) {
+    if (_json.containsKey("readOnly")) {
+      readOnly = new ReadOnly.fromJson(_json["readOnly"]);
+    }
+    if (_json.containsKey("readWrite")) {
+      readWrite = new ReadWrite.fromJson(_json["readWrite"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (readOnly != null) {
+      _json["readOnly"] = (readOnly).toJson();
+    }
+    if (readWrite != null) {
+      _json["readWrite"] = (readWrite).toJson();
+    }
+    return _json;
+  }
+}
+
+/// A filter with a single operand.
+class UnaryFilter {
+  /// The field to which to apply the operator.
+  FieldReference field;
+
+  /// The unary operator to apply.
+  /// Possible string values are:
+  /// - "OPERATOR_UNSPECIFIED" : Unspecified. This value must not be used.
+  /// - "IS_NAN" : Test if a field is equal to NaN.
+  /// - "IS_NULL" : Test if an exprestion evaluates to Null.
+  core.String op;
+
+  UnaryFilter();
+
+  UnaryFilter.fromJson(core.Map _json) {
+    if (_json.containsKey("field")) {
+      field = new FieldReference.fromJson(_json["field"]);
+    }
+    if (_json.containsKey("op")) {
+      op = _json["op"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (field != null) {
+      _json["field"] = (field).toJson();
+    }
+    if (op != null) {
+      _json["op"] = op;
+    }
+    return _json;
+  }
+}
+
+/// A message that can hold any of the supported value types.
+class Value {
+  /// An array value.
+  ///
+  /// Cannot contain another array value.
+  ArrayValue arrayValue;
+
+  /// A boolean value.
+  core.bool booleanValue;
+
+  /// A bytes value.
+  ///
+  /// Must not exceed 1 MiB - 89 bytes.
+  /// Only the first 1,500 bytes are considered by queries.
+  core.String bytesValue;
+  core.List<core.int> get bytesValueAsBytes {
+    return convert.BASE64.decode(bytesValue);
+  }
+
+  void set bytesValueAsBytes(core.List<core.int> _bytes) {
+    bytesValue =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  /// A double value.
+  core.double doubleValue;
+
+  /// A geo point value representing a point on the surface of Earth.
+  LatLng geoPointValue;
+
+  /// An integer value.
+  core.String integerValue;
+
+  /// A map value.
+  MapValue mapValue;
+
+  /// A null value.
+  /// Possible string values are:
+  /// - "NULL_VALUE" : Null value.
+  core.String nullValue;
+
+  /// A reference to a document. For example:
+  /// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+  core.String referenceValue;
+
+  /// A string value.
+  ///
+  /// The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes.
+  /// Only the first 1,500 bytes of the UTF-8 representation are considered by
+  /// queries.
+  core.String stringValue;
+
+  /// A timestamp value.
+  ///
+  /// Precise only to microseconds. When stored, any additional precision is
+  /// rounded down.
+  core.String timestampValue;
+
+  Value();
+
+  Value.fromJson(core.Map _json) {
+    if (_json.containsKey("arrayValue")) {
+      arrayValue = new ArrayValue.fromJson(_json["arrayValue"]);
+    }
+    if (_json.containsKey("booleanValue")) {
+      booleanValue = _json["booleanValue"];
+    }
+    if (_json.containsKey("bytesValue")) {
+      bytesValue = _json["bytesValue"];
+    }
+    if (_json.containsKey("doubleValue")) {
+      doubleValue = _json["doubleValue"];
+    }
+    if (_json.containsKey("geoPointValue")) {
+      geoPointValue = new LatLng.fromJson(_json["geoPointValue"]);
+    }
+    if (_json.containsKey("integerValue")) {
+      integerValue = _json["integerValue"];
+    }
+    if (_json.containsKey("mapValue")) {
+      mapValue = new MapValue.fromJson(_json["mapValue"]);
+    }
+    if (_json.containsKey("nullValue")) {
+      nullValue = _json["nullValue"];
+    }
+    if (_json.containsKey("referenceValue")) {
+      referenceValue = _json["referenceValue"];
+    }
+    if (_json.containsKey("stringValue")) {
+      stringValue = _json["stringValue"];
+    }
+    if (_json.containsKey("timestampValue")) {
+      timestampValue = _json["timestampValue"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (arrayValue != null) {
+      _json["arrayValue"] = (arrayValue).toJson();
+    }
+    if (booleanValue != null) {
+      _json["booleanValue"] = booleanValue;
+    }
+    if (bytesValue != null) {
+      _json["bytesValue"] = bytesValue;
+    }
+    if (doubleValue != null) {
+      _json["doubleValue"] = doubleValue;
+    }
+    if (geoPointValue != null) {
+      _json["geoPointValue"] = (geoPointValue).toJson();
+    }
+    if (integerValue != null) {
+      _json["integerValue"] = integerValue;
+    }
+    if (mapValue != null) {
+      _json["mapValue"] = (mapValue).toJson();
+    }
+    if (nullValue != null) {
+      _json["nullValue"] = nullValue;
+    }
+    if (referenceValue != null) {
+      _json["referenceValue"] = referenceValue;
+    }
+    if (stringValue != null) {
+      _json["stringValue"] = stringValue;
+    }
+    if (timestampValue != null) {
+      _json["timestampValue"] = timestampValue;
+    }
+    return _json;
+  }
+}
+
+/// A write on a document.
+class Write {
+  /// An optional precondition on the document.
+  ///
+  /// The write will fail if this is set and not met by the target document.
+  Precondition currentDocument;
+
+  /// A document name to delete. In the format:
+  /// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+  core.String delete;
+
+  /// Applies a tranformation to a document.
+  /// At most one `transform` per document is allowed in a given request.
+  /// An `update` cannot follow a `transform` on the same document in a given
+  /// request.
+  DocumentTransform transform;
+
+  /// A document to write.
+  Document update;
+
+  /// The fields to update in this write.
+  ///
+  /// This field can be set only when the operation is `update`.
+  /// None of the field paths in the mask may contain a reserved name.
+  /// If the document exists on the server and has fields not referenced in the
+  /// mask, they are left unchanged.
+  /// Fields referenced in the mask, but not present in the input document, are
+  /// deleted from the document on the server.
+  /// The field paths in this mask must not contain a reserved field name.
+  DocumentMask updateMask;
+
+  Write();
+
+  Write.fromJson(core.Map _json) {
+    if (_json.containsKey("currentDocument")) {
+      currentDocument = new Precondition.fromJson(_json["currentDocument"]);
+    }
+    if (_json.containsKey("delete")) {
+      delete = _json["delete"];
+    }
+    if (_json.containsKey("transform")) {
+      transform = new DocumentTransform.fromJson(_json["transform"]);
+    }
+    if (_json.containsKey("update")) {
+      update = new Document.fromJson(_json["update"]);
+    }
+    if (_json.containsKey("updateMask")) {
+      updateMask = new DocumentMask.fromJson(_json["updateMask"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (currentDocument != null) {
+      _json["currentDocument"] = (currentDocument).toJson();
+    }
+    if (delete != null) {
+      _json["delete"] = delete;
+    }
+    if (transform != null) {
+      _json["transform"] = (transform).toJson();
+    }
+    if (update != null) {
+      _json["update"] = (update).toJson();
+    }
+    if (updateMask != null) {
+      _json["updateMask"] = (updateMask).toJson();
+    }
+    return _json;
+  }
+}
+
+/// The request for Firestore.Write.
+///
+/// The first request creates a stream, or resumes an existing one from a token.
+///
+/// When creating a new stream, the server replies with a response containing
+/// only an ID and a token, to use in the next request.
+///
+/// When resuming a stream, the server first streams any responses later than
+/// the
+/// given token, then a response containing only an up-to-date token, to use in
+/// the next request.
+class WriteRequest {
+  /// Labels associated with this write request.
+  core.Map<core.String, core.String> labels;
+
+  /// The ID of the write stream to resume.
+  /// This may only be set in the first message. When left empty, a new write
+  /// stream will be created.
+  core.String streamId;
+
+  /// A stream token that was previously sent by the server.
+  ///
+  /// The client should set this field to the token from the most recent
+  /// WriteResponse it has received. This acknowledges that the client has
+  /// received responses up to this token. After sending this token, earlier
+  /// tokens may not be used anymore.
+  ///
+  /// The server may close the stream if there are too many unacknowledged
+  /// responses.
+  ///
+  /// Leave this field unset when creating a new stream. To resume a stream at
+  /// a specific point, set this field and the `stream_id` field.
+  ///
+  /// Leave this field unset when creating a new stream.
+  core.String streamToken;
+  core.List<core.int> get streamTokenAsBytes {
+    return convert.BASE64.decode(streamToken);
+  }
+
+  void set streamTokenAsBytes(core.List<core.int> _bytes) {
+    streamToken =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  /// The writes to apply.
+  ///
+  /// Always executed atomically and in order.
+  /// This must be empty on the first request.
+  /// This may be empty on the last request.
+  /// This must not be empty on all other requests.
+  core.List<Write> writes;
+
+  WriteRequest();
+
+  WriteRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("labels")) {
+      labels = _json["labels"];
+    }
+    if (_json.containsKey("streamId")) {
+      streamId = _json["streamId"];
+    }
+    if (_json.containsKey("streamToken")) {
+      streamToken = _json["streamToken"];
+    }
+    if (_json.containsKey("writes")) {
+      writes =
+          _json["writes"].map((value) => new Write.fromJson(value)).toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (labels != null) {
+      _json["labels"] = labels;
+    }
+    if (streamId != null) {
+      _json["streamId"] = streamId;
+    }
+    if (streamToken != null) {
+      _json["streamToken"] = streamToken;
+    }
+    if (writes != null) {
+      _json["writes"] = writes.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// The response for Firestore.Write.
+class WriteResponse {
+  /// The time at which the commit occurred.
+  core.String commitTime;
+
+  /// The ID of the stream.
+  /// Only set on the first message, when a new stream was created.
+  core.String streamId;
+
+  /// A token that represents the position of this response in the stream.
+  /// This can be used by a client to resume the stream at this point.
+  ///
+  /// This field is always set.
+  core.String streamToken;
+  core.List<core.int> get streamTokenAsBytes {
+    return convert.BASE64.decode(streamToken);
+  }
+
+  void set streamTokenAsBytes(core.List<core.int> _bytes) {
+    streamToken =
+        convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
+  }
+
+  /// The result of applying the writes.
+  ///
+  /// This i-th write result corresponds to the i-th write in the
+  /// request.
+  core.List<WriteResult> writeResults;
+
+  WriteResponse();
+
+  WriteResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("commitTime")) {
+      commitTime = _json["commitTime"];
+    }
+    if (_json.containsKey("streamId")) {
+      streamId = _json["streamId"];
+    }
+    if (_json.containsKey("streamToken")) {
+      streamToken = _json["streamToken"];
+    }
+    if (_json.containsKey("writeResults")) {
+      writeResults = _json["writeResults"]
+          .map((value) => new WriteResult.fromJson(value))
+          .toList();
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (commitTime != null) {
+      _json["commitTime"] = commitTime;
+    }
+    if (streamId != null) {
+      _json["streamId"] = streamId;
+    }
+    if (streamToken != null) {
+      _json["streamToken"] = streamToken;
+    }
+    if (writeResults != null) {
+      _json["writeResults"] =
+          writeResults.map((value) => (value).toJson()).toList();
+    }
+    return _json;
+  }
+}
+
+/// The result of applying a write.
+class WriteResult {
+  /// The results of applying each DocumentTransform.FieldTransform, in the
+  /// same order.
+  core.List<Value> transformResults;
+
+  /// The last update time of the document after applying the write. Not set
+  /// after a `delete`.
+  ///
+  /// If the write did not actually change the document, this will be the
+  /// previous update_time.
+  core.String updateTime;
+
+  WriteResult();
+
+  WriteResult.fromJson(core.Map _json) {
+    if (_json.containsKey("transformResults")) {
+      transformResults = _json["transformResults"]
+          .map((value) => new Value.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("updateTime")) {
+      updateTime = _json["updateTime"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (transformResults != null) {
+      _json["transformResults"] =
+          transformResults.map((value) => (value).toJson()).toList();
+    }
+    if (updateTime != null) {
+      _json["updateTime"] = updateTime;
+    }
+    return _json;
+  }
+}
diff --git a/generated/googleapis_beta/lib/language/v1beta1.dart b/generated/googleapis_beta/lib/language/v1beta1.dart
index 46ab613..3d35faf 100644
--- a/generated/googleapis_beta/lib/language/v1beta1.dart
+++ b/generated/googleapis_beta/lib/language/v1beta1.dart
@@ -50,6 +50,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnalyzeEntitiesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -58,7 +61,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AnalyzeEntitiesResponse> analyzeEntities(
-      AnalyzeEntitiesRequest request) {
+      AnalyzeEntitiesRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -69,6 +73,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/documents:analyzeEntities';
 
@@ -87,6 +94,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnalyzeSentimentResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -95,7 +105,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AnalyzeSentimentResponse> analyzeSentiment(
-      AnalyzeSentimentRequest request) {
+      AnalyzeSentimentRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -106,6 +117,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/documents:analyzeSentiment';
 
@@ -127,6 +141,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnalyzeSyntaxResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -135,7 +152,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AnalyzeSyntaxResponse> analyzeSyntax(
-      AnalyzeSyntaxRequest request) {
+      AnalyzeSyntaxRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -146,6 +164,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/documents:analyzeSyntax';
 
@@ -165,6 +186,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnnotateTextResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -172,7 +196,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AnnotateTextResponse> annotateText(AnnotateTextRequest request) {
+  async.Future<AnnotateTextResponse> annotateText(AnnotateTextRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -183,6 +208,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/documents:annotateText';
 
diff --git a/generated/googleapis_beta/lib/language/v1beta2.dart b/generated/googleapis_beta/lib/language/v1beta2.dart
index 1c89bc2..cf2148c 100644
--- a/generated/googleapis_beta/lib/language/v1beta2.dart
+++ b/generated/googleapis_beta/lib/language/v1beta2.dart
@@ -50,6 +50,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnalyzeEntitiesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -58,7 +61,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AnalyzeEntitiesResponse> analyzeEntities(
-      AnalyzeEntitiesRequest request) {
+      AnalyzeEntitiesRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -69,6 +73,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/documents:analyzeEntities';
 
@@ -88,6 +95,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnalyzeEntitySentimentResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -96,7 +106,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AnalyzeEntitySentimentResponse> analyzeEntitySentiment(
-      AnalyzeEntitySentimentRequest request) {
+      AnalyzeEntitySentimentRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -107,6 +118,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/documents:analyzeEntitySentiment';
 
@@ -126,6 +140,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnalyzeSentimentResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -134,7 +151,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AnalyzeSentimentResponse> analyzeSentiment(
-      AnalyzeSentimentRequest request) {
+      AnalyzeSentimentRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -145,6 +163,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/documents:analyzeSentiment';
 
@@ -166,6 +187,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnalyzeSyntaxResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -174,7 +198,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<AnalyzeSyntaxResponse> analyzeSyntax(
-      AnalyzeSyntaxRequest request) {
+      AnalyzeSyntaxRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -185,6 +210,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/documents:analyzeSyntax';
 
@@ -204,6 +232,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [AnnotateTextResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -211,7 +242,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<AnnotateTextResponse> annotateText(AnnotateTextRequest request) {
+  async.Future<AnnotateTextResponse> annotateText(AnnotateTextRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -222,6 +254,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/documents:annotateText';
 
@@ -240,6 +275,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ClassifyTextResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -247,7 +285,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ClassifyTextResponse> classifyText(ClassifyTextRequest request) {
+  async.Future<ClassifyTextResponse> classifyText(ClassifyTextRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -258,6 +297,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/documents:classifyText';
 
diff --git a/generated/googleapis_beta/lib/logging/v2beta1.dart b/generated/googleapis_beta/lib/logging/v2beta1.dart
index 1e86575..4374afa 100644
--- a/generated/googleapis_beta/lib/logging/v2beta1.dart
+++ b/generated/googleapis_beta/lib/logging/v2beta1.dart
@@ -86,6 +86,9 @@
   /// For more information about log names, see LogEntry.
   /// Value must have pattern "^billingAccounts/[^/]+/logs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -93,7 +96,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String logName) {
+  async.Future<Empty> delete(core.String logName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -104,6 +107,9 @@
     if (logName == null) {
       throw new core.ArgumentError("Parameter logName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$logName');
 
@@ -138,6 +144,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLogsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -146,7 +155,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLogsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -163,6 +172,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v2beta1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/logs';
@@ -189,6 +201,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLogEntriesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -196,7 +211,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListLogEntriesResponse> list(ListLogEntriesRequest request) {
+  async.Future<ListLogEntriesResponse> list(ListLogEntriesRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -207,6 +223,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/entries:list';
 
@@ -228,6 +247,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [WriteLogEntriesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -235,7 +257,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<WriteLogEntriesResponse> write(WriteLogEntriesRequest request) {
+  async.Future<WriteLogEntriesResponse> write(WriteLogEntriesRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -246,6 +269,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/entries:write';
 
@@ -279,6 +305,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListMonitoredResourceDescriptorsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -287,7 +316,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListMonitoredResourceDescriptorsResponse> list(
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -301,6 +330,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/monitoredResourceDescriptors';
 
@@ -347,6 +379,9 @@
   /// For more information about log names, see LogEntry.
   /// Value must have pattern "^organizations/[^/]+/logs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -354,7 +389,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String logName) {
+  async.Future<Empty> delete(core.String logName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -365,6 +400,9 @@
     if (logName == null) {
       throw new core.ArgumentError("Parameter logName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$logName');
 
@@ -399,6 +437,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLogsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -407,7 +448,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLogsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -424,6 +465,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v2beta1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/logs';
@@ -472,6 +516,9 @@
   /// For more information about log names, see LogEntry.
   /// Value must have pattern "^projects/[^/]+/logs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -479,7 +526,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String logName) {
+  async.Future<Empty> delete(core.String logName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -490,6 +537,9 @@
     if (logName == null) {
       throw new core.ArgumentError("Parameter logName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$logName');
 
@@ -524,6 +574,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListLogsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -532,7 +585,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLogsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -549,6 +602,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v2beta1/' + commons.Escaper.ecapeVariableReserved('$parent') + '/logs';
@@ -579,6 +635,9 @@
   /// The new metric must be provided in the request.
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogMetric].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -586,7 +645,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogMetric> create(LogMetric request, core.String parent) {
+  async.Future<LogMetric> create(LogMetric request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -600,6 +660,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -623,6 +686,9 @@
   ///
   /// Value must have pattern "^projects/[^/]+/metrics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -630,7 +696,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String metricName) {
+  async.Future<Empty> delete(core.String metricName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -641,6 +707,9 @@
     if (metricName == null) {
       throw new core.ArgumentError("Parameter metricName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$metricName');
 
@@ -662,6 +731,9 @@
   ///
   /// Value must have pattern "^projects/[^/]+/metrics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogMetric].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -669,7 +741,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogMetric> get(core.String metricName) {
+  async.Future<LogMetric> get(core.String metricName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -680,6 +752,9 @@
     if (metricName == null) {
       throw new core.ArgumentError("Parameter metricName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$metricName');
 
@@ -701,14 +776,17 @@
   ///
   /// Value must have pattern "^projects/[^/]+$".
   ///
+  /// [pageSize] - Optional. The maximum number of results to return from this
+  /// request. Non-positive values are ignored. The presence of nextPageToken in
+  /// the response indicates that more results might be available.
+  ///
   /// [pageToken] - Optional. If present, then retrieve the next batch of
   /// results from the preceding call to this method. pageToken must be the
   /// value of nextPageToken from the previous response. The values of other
   /// method parameters should be identical to those in the previous call.
   ///
-  /// [pageSize] - Optional. The maximum number of results to return from this
-  /// request. Non-positive values are ignored. The presence of nextPageToken in
-  /// the response indicates that more results might be available.
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
   ///
   /// Completes with a [ListLogMetricsResponse].
   ///
@@ -718,7 +796,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListLogMetricsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -729,11 +807,14 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if (pageSize != null) {
+      _queryParams["pageSize"] = ["${pageSize}"];
+    }
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
-    if (pageSize != null) {
-      _queryParams["pageSize"] = ["${pageSize}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v2beta1/' +
@@ -762,6 +843,9 @@
   /// [PROJECT_ID], then a new metric is created.
   /// Value must have pattern "^projects/[^/]+/metrics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogMetric].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -769,7 +853,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogMetric> update(LogMetric request, core.String metricName) {
+  async.Future<LogMetric> update(LogMetric request, core.String metricName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -783,6 +868,9 @@
     if (metricName == null) {
       throw new core.ArgumentError("Parameter metricName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$metricName');
 
@@ -829,6 +917,9 @@
   /// be a unique service account used only for exports from the new sink. For
   /// more information, see writer_identity in LogSink.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -837,7 +928,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogSink> create(LogSink request, core.String parent,
-      {core.bool uniqueWriterIdentity}) {
+      {core.bool uniqueWriterIdentity, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -854,6 +945,9 @@
     if (uniqueWriterIdentity != null) {
       _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -882,6 +976,9 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^projects/[^/]+/sinks/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -889,7 +986,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String sinkName) {
+  async.Future<Empty> delete(core.String sinkName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -900,6 +997,9 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$sinkName');
 
@@ -924,6 +1024,9 @@
   /// Example: "projects/my-project-id/sinks/my-sink-id".
   /// Value must have pattern "^projects/[^/]+/sinks/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -931,7 +1034,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LogSink> get(core.String sinkName) {
+  async.Future<LogSink> get(core.String sinkName, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -942,6 +1045,9 @@
     if (sinkName == null) {
       throw new core.ArgumentError("Parameter sinkName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$sinkName');
 
@@ -975,6 +1081,9 @@
   /// request. Non-positive values are ignored. The presence of nextPageToken in
   /// the response indicates that more results might be available.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListSinksResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -983,7 +1092,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListSinksResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1000,6 +1109,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -1053,6 +1165,9 @@
   /// It is an error if the old value is true and the new value is set to false
   /// or defaulted to false.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LogSink].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1061,7 +1176,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<LogSink> update(LogSink request, core.String sinkName,
-      {core.String updateMask, core.bool uniqueWriterIdentity}) {
+      {core.String updateMask,
+      core.bool uniqueWriterIdentity,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1081,6 +1198,9 @@
     if (uniqueWriterIdentity != null) {
       _queryParams["uniqueWriterIdentity"] = ["${uniqueWriterIdentity}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v2beta1/' + commons.Escaper.ecapeVariableReserved('$sinkName');
 
@@ -2423,6 +2543,8 @@
 
   /// A concise name for the metric, which can be displayed in user interfaces.
   /// Use sentence case without an ending period, for example "Request count".
+  /// This field is optional but it is recommended to be set for any metrics
+  /// associated with user-visible concepts, such as Quota.
   core.String displayName;
 
   /// The set of labels that can be used to describe a specific instance of this
@@ -2444,13 +2566,7 @@
   /// and sets a new start time for the following points.
   core.String metricKind;
 
-  /// The resource name of the metric descriptor. Depending on the
-  /// implementation, the name typically includes: (1) the parent resource name
-  /// that defines the scope of the metric type or of its data; and (2) the
-  /// metric's URL-encoded type, which also appears in the type field of this
-  /// descriptor. For example, following is the resource name of a custom metric
-  /// within the GCP project my-project-id:
-  /// "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
+  /// The resource name of the metric descriptor.
   core.String name;
 
   /// The metric type, including its DNS name prefix. The type is not
diff --git a/generated/googleapis_beta/lib/oslogin/v1alpha.dart b/generated/googleapis_beta/lib/oslogin/v1alpha.dart
index 746cf9a..a5be895 100644
--- a/generated/googleapis_beta/lib/oslogin/v1alpha.dart
+++ b/generated/googleapis_beta/lib/oslogin/v1alpha.dart
@@ -58,6 +58,9 @@
   /// [name] - The unique ID for the user in format `users/{user}`.
   /// Value must have pattern "^users/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [LoginProfile].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -65,7 +68,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<LoginProfile> getLoginProfile(core.String name) {
+  async.Future<LoginProfile> getLoginProfile(core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -76,6 +80,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1alpha/' +
         commons.Escaper.ecapeVariableReserved('$name') +
@@ -101,6 +108,9 @@
   /// [parent] - The unique ID for the user in format `users/{user}`.
   /// Value must have pattern "^users/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ImportSshPublicKeyResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -109,7 +119,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ImportSshPublicKeyResponse> importSshPublicKey(
-      SshPublicKey request, core.String parent) {
+      SshPublicKey request, core.String parent,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -123,6 +134,9 @@
     if (parent == null) {
       throw new core.ArgumentError("Parameter parent is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1alpha/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -155,6 +169,9 @@
   /// `users/{user}/sshPublicKeys/{fingerprint}`.
   /// Value must have pattern "^users/[^/]+/sshPublicKeys/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -162,7 +179,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -173,6 +190,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1alpha/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -195,6 +215,9 @@
   /// format `users/{user}/sshPublicKeys/{fingerprint}`.
   /// Value must have pattern "^users/[^/]+/sshPublicKeys/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SshPublicKey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -202,7 +225,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SshPublicKey> get(core.String name) {
+  async.Future<SshPublicKey> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -213,6 +236,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1alpha/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -241,6 +267,9 @@
   /// [updateMask] - Mask to control which fields get updated. Updates all if
   /// not present.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SshPublicKey].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -249,7 +278,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SshPublicKey> patch(SshPublicKey request, core.String name,
-      {core.String updateMask}) {
+      {core.String updateMask, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -266,6 +295,9 @@
     if (updateMask != null) {
       _queryParams["updateMask"] = [updateMask];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1alpha/' + commons.Escaper.ecapeVariableReserved('$name');
 
diff --git a/generated/googleapis_beta/lib/oslogin/v1beta.dart b/generated/googleapis_beta/lib/oslogin/v1beta.dart
new file mode 100644
index 0000000..ca188ec
--- /dev/null
+++ b/generated/googleapis_beta/lib/oslogin/v1beta.dart
@@ -0,0 +1,548 @@
+// This is a generated file (see the discoveryapis_generator project).
+
+library googleapis_beta.oslogin.v1beta;
+
+import 'dart:core' as core;
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+
+import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
+import 'package:http/http.dart' as http;
+
+export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
+    show ApiRequestError, DetailedApiRequestError;
+
+const core.String USER_AGENT = 'dart-api-client oslogin/v1beta';
+
+/// Manages OS login configuration for Directory API users.
+class OsloginApi {
+  /// View and manage your data across Google Cloud Platform services
+  static const CloudPlatformScope =
+      "https://www.googleapis.com/auth/cloud-platform";
+
+  /// View your data across Google Cloud Platform services
+  static const CloudPlatformReadOnlyScope =
+      "https://www.googleapis.com/auth/cloud-platform.read-only";
+
+  /// View and manage your Google Compute Engine resources
+  static const ComputeScope = "https://www.googleapis.com/auth/compute";
+
+  /// View your Google Compute Engine resources
+  static const ComputeReadonlyScope =
+      "https://www.googleapis.com/auth/compute.readonly";
+
+  final commons.ApiRequester _requester;
+
+  UsersResourceApi get users => new UsersResourceApi(_requester);
+
+  OsloginApi(http.Client client,
+      {core.String rootUrl: "https://oslogin.googleapis.com/",
+      core.String servicePath: ""})
+      : _requester =
+            new commons.ApiRequester(client, rootUrl, servicePath, USER_AGENT);
+}
+
+class UsersResourceApi {
+  final commons.ApiRequester _requester;
+
+  UsersSshPublicKeysResourceApi get sshPublicKeys =>
+      new UsersSshPublicKeysResourceApi(_requester);
+
+  UsersResourceApi(commons.ApiRequester client) : _requester = client;
+
+  /// Retrieves the profile information used for logging in to a virtual machine
+  /// on Google Compute Engine.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The unique ID for the user in format `users/{user}`.
+  /// Value must have pattern "^users/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [LoginProfile].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<LoginProfile> getLoginProfile(core.String name,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta/' +
+        commons.Escaper.ecapeVariableReserved('$name') +
+        '/loginProfile';
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new LoginProfile.fromJson(data));
+  }
+
+  /// Adds an SSH public key and returns the profile information. Default POSIX
+  /// account information is set when no username and UID exist as part of the
+  /// login profile.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - The unique ID for the user in format `users/{user}`.
+  /// Value must have pattern "^users/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ImportSshPublicKeyResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ImportSshPublicKeyResponse> importSshPublicKey(
+      SshPublicKey request, core.String parent,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (parent == null) {
+      throw new core.ArgumentError("Parameter parent is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta/' +
+        commons.Escaper.ecapeVariableReserved('$parent') +
+        ':importSshPublicKey';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response
+        .then((data) => new ImportSshPublicKeyResponse.fromJson(data));
+  }
+}
+
+class UsersSshPublicKeysResourceApi {
+  final commons.ApiRequester _requester;
+
+  UsersSshPublicKeysResourceApi(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Deletes an SSH public key.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The fingerprint of the public key to update. Public keys are
+  /// identified by
+  /// their SHA-256 fingerprint. The fingerprint of the public key is in format
+  /// `users/{user}/sshPublicKeys/{fingerprint}`.
+  /// Value must have pattern "^users/[^/]+/sshPublicKeys/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "DELETE",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Empty.fromJson(data));
+  }
+
+  /// Retrieves an SSH public key.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The fingerprint of the public key to retrieve. Public keys are
+  /// identified
+  /// by their SHA-256 fingerprint. The fingerprint of the public key is in
+  /// format `users/{user}/sshPublicKeys/{fingerprint}`.
+  /// Value must have pattern "^users/[^/]+/sshPublicKeys/[^/]+$".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [SshPublicKey].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<SshPublicKey> get(core.String name, {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "GET",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new SshPublicKey.fromJson(data));
+  }
+
+  /// Updates an SSH public key and returns the profile information. This method
+  /// supports patch semantics.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The fingerprint of the public key to update. Public keys are
+  /// identified by
+  /// their SHA-256 fingerprint. The fingerprint of the public key is in format
+  /// `users/{user}/sshPublicKeys/{fingerprint}`.
+  /// Value must have pattern "^users/[^/]+/sshPublicKeys/[^/]+$".
+  ///
+  /// [updateMask] - Mask to control which fields get updated. Updates all if
+  /// not present.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [SshPublicKey].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<SshPublicKey> patch(SshPublicKey request, core.String name,
+      {core.String updateMask, core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (name == null) {
+      throw new core.ArgumentError("Parameter name is required.");
+    }
+    if (updateMask != null) {
+      _queryParams["updateMask"] = [updateMask];
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'v1beta/' + commons.Escaper.ecapeVariableReserved('$name');
+
+    var _response = _requester.request(_url, "PATCH",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new SshPublicKey.fromJson(data));
+  }
+}
+
+/// A generic empty message that you can re-use to avoid defining duplicated
+/// empty messages in your APIs. A typical example is to use it as the request
+/// or the response type of an API method. For instance:
+///
+///     service Foo {
+///       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
+///     }
+///
+/// The JSON representation for `Empty` is empty JSON object `{}`.
+class Empty {
+  Empty();
+
+  Empty.fromJson(core.Map _json) {}
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    return _json;
+  }
+}
+
+/// A response message for importing an SSH public key.
+class ImportSshPublicKeyResponse {
+  /// The login profile information for the user.
+  LoginProfile loginProfile;
+
+  ImportSshPublicKeyResponse();
+
+  ImportSshPublicKeyResponse.fromJson(core.Map _json) {
+    if (_json.containsKey("loginProfile")) {
+      loginProfile = new LoginProfile.fromJson(_json["loginProfile"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (loginProfile != null) {
+      _json["loginProfile"] = (loginProfile).toJson();
+    }
+    return _json;
+  }
+}
+
+/// The user profile information used for logging in to a virtual machine on
+/// Google Compute Engine.
+class LoginProfile {
+  /// The primary email address that uniquely identifies the user.
+  core.String name;
+
+  /// The list of POSIX accounts associated with the user.
+  core.List<PosixAccount> posixAccounts;
+
+  /// A map from SSH public key fingerprint to the associated key object.
+  core.Map<core.String, SshPublicKey> sshPublicKeys;
+
+  /// Indicates if the user is suspended. A suspended user cannot log in but
+  /// their profile information is retained.
+  core.bool suspended;
+
+  LoginProfile();
+
+  LoginProfile.fromJson(core.Map _json) {
+    if (_json.containsKey("name")) {
+      name = _json["name"];
+    }
+    if (_json.containsKey("posixAccounts")) {
+      posixAccounts = _json["posixAccounts"]
+          .map((value) => new PosixAccount.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("sshPublicKeys")) {
+      sshPublicKeys =
+          commons.mapMap<core.Map<core.String, core.Object>, SshPublicKey>(
+              _json["sshPublicKeys"],
+              (core.Map<core.String, core.Object> item) =>
+                  new SshPublicKey.fromJson(item));
+    }
+    if (_json.containsKey("suspended")) {
+      suspended = _json["suspended"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (name != null) {
+      _json["name"] = name;
+    }
+    if (posixAccounts != null) {
+      _json["posixAccounts"] =
+          posixAccounts.map((value) => (value).toJson()).toList();
+    }
+    if (sshPublicKeys != null) {
+      _json["sshPublicKeys"] =
+          commons.mapMap<SshPublicKey, core.Map<core.String, core.Object>>(
+              sshPublicKeys, (SshPublicKey item) => (item).toJson());
+    }
+    if (suspended != null) {
+      _json["suspended"] = suspended;
+    }
+    return _json;
+  }
+}
+
+/// The POSIX account information associated with a Directory API User.
+class PosixAccount {
+  /// The GECOS (user information) entry for this account.
+  core.String gecos;
+
+  /// The default group ID.
+  core.String gid;
+
+  /// The path to the home directory for this account.
+  core.String homeDirectory;
+
+  /// Only one POSIX account can be marked as primary.
+  core.bool primary;
+
+  /// The path to the logic shell for this account.
+  core.String shell;
+
+  /// System identifier for which account the username or uid applies to.
+  /// By default, the empty value is used.
+  core.String systemId;
+
+  /// The user ID.
+  core.String uid;
+
+  /// The username of the POSIX account.
+  core.String username;
+
+  PosixAccount();
+
+  PosixAccount.fromJson(core.Map _json) {
+    if (_json.containsKey("gecos")) {
+      gecos = _json["gecos"];
+    }
+    if (_json.containsKey("gid")) {
+      gid = _json["gid"];
+    }
+    if (_json.containsKey("homeDirectory")) {
+      homeDirectory = _json["homeDirectory"];
+    }
+    if (_json.containsKey("primary")) {
+      primary = _json["primary"];
+    }
+    if (_json.containsKey("shell")) {
+      shell = _json["shell"];
+    }
+    if (_json.containsKey("systemId")) {
+      systemId = _json["systemId"];
+    }
+    if (_json.containsKey("uid")) {
+      uid = _json["uid"];
+    }
+    if (_json.containsKey("username")) {
+      username = _json["username"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (gecos != null) {
+      _json["gecos"] = gecos;
+    }
+    if (gid != null) {
+      _json["gid"] = gid;
+    }
+    if (homeDirectory != null) {
+      _json["homeDirectory"] = homeDirectory;
+    }
+    if (primary != null) {
+      _json["primary"] = primary;
+    }
+    if (shell != null) {
+      _json["shell"] = shell;
+    }
+    if (systemId != null) {
+      _json["systemId"] = systemId;
+    }
+    if (uid != null) {
+      _json["uid"] = uid;
+    }
+    if (username != null) {
+      _json["username"] = username;
+    }
+    return _json;
+  }
+}
+
+/// The SSH public key information associated with a Directory API User.
+class SshPublicKey {
+  /// An expiration time in microseconds since epoch.
+  core.String expirationTimeUsec;
+
+  /// The SHA-256 fingerprint of the SSH public key.
+  /// Output only.
+  core.String fingerprint;
+
+  /// Public key text in SSH format, defined by
+  /// <a href="https://www.ietf.org/rfc/rfc4253.txt" target="_blank">RFC4253</a>
+  /// section 6.6.
+  core.String key;
+
+  SshPublicKey();
+
+  SshPublicKey.fromJson(core.Map _json) {
+    if (_json.containsKey("expirationTimeUsec")) {
+      expirationTimeUsec = _json["expirationTimeUsec"];
+    }
+    if (_json.containsKey("fingerprint")) {
+      fingerprint = _json["fingerprint"];
+    }
+    if (_json.containsKey("key")) {
+      key = _json["key"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (expirationTimeUsec != null) {
+      _json["expirationTimeUsec"] = expirationTimeUsec;
+    }
+    if (fingerprint != null) {
+      _json["fingerprint"] = fingerprint;
+    }
+    if (key != null) {
+      _json["key"] = key;
+    }
+    return _json;
+  }
+}
diff --git a/generated/googleapis_beta/lib/proximitybeacon/v1beta1.dart b/generated/googleapis_beta/lib/proximitybeacon/v1beta1.dart
index ffb7e36..730d8b7 100644
--- a/generated/googleapis_beta/lib/proximitybeacon/v1beta1.dart
+++ b/generated/googleapis_beta/lib/proximitybeacon/v1beta1.dart
@@ -49,6 +49,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GetInfoForObservedBeaconsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -57,7 +60,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GetInfoForObservedBeaconsResponse> getforobserved(
-      GetInfoForObservedBeaconsRequest request) {
+      GetInfoForObservedBeaconsRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -68,6 +72,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/beaconinfo:getforobserved';
 
@@ -120,6 +127,9 @@
   /// must match the project that owns the beacon.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -128,7 +138,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> activate(core.String beaconName,
-      {core.String projectId}) {
+      {core.String projectId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -142,6 +152,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$beaconName') +
@@ -184,6 +197,9 @@
   /// match the project that owns the beacon.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -192,7 +208,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> deactivate(core.String beaconName,
-      {core.String projectId}) {
+      {core.String projectId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -206,6 +222,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$beaconName') +
@@ -248,6 +267,9 @@
   /// must match the project that owns the beacon.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -256,7 +278,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> decommission(core.String beaconName,
-      {core.String projectId}) {
+      {core.String projectId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -270,6 +292,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$beaconName') +
@@ -309,6 +334,9 @@
   /// that is making the request is used.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -316,7 +344,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String beaconName, {core.String projectId}) {
+  async.Future<Empty> delete(core.String beaconName,
+      {core.String projectId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -330,6 +359,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$beaconName');
 
@@ -372,6 +404,9 @@
   /// project that owns the beacon.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Beacon].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -379,7 +414,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Beacon> get(core.String beaconName, {core.String projectId}) {
+  async.Future<Beacon> get(core.String beaconName,
+      {core.String projectId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -393,6 +429,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$beaconName');
 
@@ -497,6 +536,9 @@
   /// credential that made the request is used as the project.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListBeaconsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -508,7 +550,8 @@
       {core.String pageToken,
       core.int pageSize,
       core.String q,
-      core.String projectId}) {
+      core.String projectId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -528,6 +571,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/beacons';
 
@@ -558,6 +604,9 @@
   /// is used.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Beacon].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -565,7 +614,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Beacon> register(Beacon request, {core.String projectId}) {
+  async.Future<Beacon> register(Beacon request,
+      {core.String projectId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -579,6 +629,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/beacons:register';
 
@@ -624,6 +677,9 @@
   /// must match the project that owns the beacon.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Beacon].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -632,7 +688,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Beacon> update(Beacon request, core.String beaconName,
-      {core.String projectId}) {
+      {core.String projectId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -649,6 +705,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$beaconName');
 
@@ -707,6 +766,9 @@
   /// making the request is used.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DeleteAttachmentsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -715,7 +777,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DeleteAttachmentsResponse> batchDelete(core.String beaconName,
-      {core.String namespacedType, core.String projectId}) {
+      {core.String namespacedType,
+      core.String projectId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -732,6 +796,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$beaconName') +
@@ -785,6 +852,9 @@
   /// is used.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BeaconAttachment].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -794,7 +864,7 @@
   /// this method will complete with the same error.
   async.Future<BeaconAttachment> create(
       BeaconAttachment request, core.String beaconName,
-      {core.String projectId}) {
+      {core.String projectId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -811,6 +881,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$beaconName') +
@@ -851,6 +924,9 @@
   /// that is making the request is used.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -859,7 +935,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> delete(core.String attachmentName,
-      {core.String projectId}) {
+      {core.String projectId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -873,6 +949,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1beta1/' + commons.Escaper.ecapeVariableReserved('$attachmentName');
@@ -911,11 +990,6 @@
   /// Required.
   /// Value must have pattern "^beacons/[^/]+$".
   ///
-  /// [namespacedType] - Specifies the namespace and type of attachment to
-  /// include in response in
-  /// <var>namespace/type</var> format. Accepts `* / * ` to specify
-  /// "all types in all namespaces".
-  ///
   /// [projectId] - The project id to list beacon attachments under. This field
   /// can be
   /// used when "*" is specified to mean all attachment namespaces. Projects
@@ -924,6 +998,14 @@
   /// making the request is used.
   /// Optional.
   ///
+  /// [namespacedType] - Specifies the namespace and type of attachment to
+  /// include in response in
+  /// <var>namespace/type</var> format. Accepts `* / * ` to specify
+  /// "all types in all namespaces".
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListBeaconAttachmentsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -932,7 +1014,9 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListBeaconAttachmentsResponse> list(core.String beaconName,
-      {core.String namespacedType, core.String projectId}) {
+      {core.String projectId,
+      core.String namespacedType,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -943,11 +1027,14 @@
     if (beaconName == null) {
       throw new core.ArgumentError("Parameter beaconName is required.");
     }
+    if (projectId != null) {
+      _queryParams["projectId"] = [projectId];
+    }
     if (namespacedType != null) {
       _queryParams["namespacedType"] = [namespacedType];
     }
-    if (projectId != null) {
-      _queryParams["projectId"] = [projectId];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1beta1/' +
@@ -997,6 +1084,7 @@
   /// - "ALERT_UNSPECIFIED" : A ALERT_UNSPECIFIED.
   /// - "WRONG_LOCATION" : A WRONG_LOCATION.
   /// - "LOW_BATTERY" : A LOW_BATTERY.
+  /// - "LOW_ACTIVITY" : A LOW_ACTIVITY.
   ///
   /// [pageSize] - Specifies the maximum number of results to return. Defaults
   /// to
@@ -1007,6 +1095,9 @@
   /// then the project making the request will be used for looking up
   /// diagnostic records. Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListDiagnosticsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1018,7 +1109,8 @@
       {core.String pageToken,
       core.String alertFilter,
       core.int pageSize,
-      core.String projectId}) {
+      core.String projectId,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1041,6 +1133,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$beaconName') +
@@ -1075,6 +1170,9 @@
   /// [projectId] - The project id to list namespaces under.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListNamespacesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1082,7 +1180,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ListNamespacesResponse> list({core.String projectId}) {
+  async.Future<ListNamespacesResponse> list(
+      {core.String projectId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1093,6 +1192,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/namespaces';
 
@@ -1123,6 +1225,9 @@
   /// must match the project that owns the beacon.
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Namespace].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1131,7 +1236,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Namespace> update(Namespace request, core.String namespaceName,
-      {core.String projectId}) {
+      {core.String projectId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1148,6 +1253,9 @@
     if (projectId != null) {
       _queryParams["projectId"] = [projectId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$namespaceName');
 
@@ -1176,6 +1284,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [EphemeralIdRegistrationParams].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1183,7 +1294,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<EphemeralIdRegistrationParams> getEidparams() {
+  async.Future<EphemeralIdRegistrationParams> getEidparams(
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1191,6 +1303,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'v1beta1/eidparams';
 
     var _response = _requester.request(_url, "GET",
diff --git a/generated/googleapis_beta/lib/pubsub/v1beta2.dart b/generated/googleapis_beta/lib/pubsub/v1beta2.dart
index 0fb8488..e8a499a 100644
--- a/generated/googleapis_beta/lib/pubsub/v1beta2.dart
+++ b/generated/googleapis_beta/lib/pubsub/v1beta2.dart
@@ -67,6 +67,9 @@
   /// [subscription] - The subscription whose message is being acknowledged.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -75,7 +78,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> acknowledge(
-      AcknowledgeRequest request, core.String subscription) {
+      AcknowledgeRequest request, core.String subscription,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -89,6 +93,9 @@
     if (subscription == null) {
       throw new core.ArgumentError("Parameter subscription is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' +
         commons.Escaper.ecapeVariableReserved('$subscription') +
@@ -124,6 +131,9 @@
   /// in length, and it must not start with `"goog"`.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -131,7 +141,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Subscription> create(Subscription request, core.String name) {
+  async.Future<Subscription> create(Subscription request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -145,6 +156,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -169,6 +183,9 @@
   /// [subscription] - The subscription to delete.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -176,7 +193,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String subscription) {
+  async.Future<Empty> delete(core.String subscription, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -187,6 +204,9 @@
     if (subscription == null) {
       throw new core.ArgumentError("Parameter subscription is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' + commons.Escaper.ecapeVariableReserved('$subscription');
 
@@ -206,6 +226,9 @@
   /// [subscription] - The name of the subscription to get.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Subscription].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -213,7 +236,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Subscription> get(core.String subscription) {
+  async.Future<Subscription> get(core.String subscription,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -224,6 +248,9 @@
     if (subscription == null) {
       throw new core.ArgumentError("Parameter subscription is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' + commons.Escaper.ecapeVariableReserved('$subscription');
 
@@ -247,6 +274,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -254,7 +284,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Policy> getIamPolicy(core.String resource) {
+  async.Future<Policy> getIamPolicy(core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -265,6 +296,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -286,13 +320,16 @@
   /// [project] - The name of the cloud project that subscriptions belong to.
   /// Value must have pattern "^projects/[^/]+$".
   ///
-  /// [pageSize] - Maximum number of subscriptions to return.
-  ///
   /// [pageToken] - The value returned by the last `ListSubscriptionsResponse`;
   /// indicates that
   /// this is a continuation of a prior `ListSubscriptions` call, and that the
   /// system should return the next page of data.
   ///
+  /// [pageSize] - Maximum number of subscriptions to return.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListSubscriptionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -301,7 +338,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListSubscriptionsResponse> list(core.String project,
-      {core.int pageSize, core.String pageToken}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -312,11 +349,14 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if (pageToken != null) {
+      _queryParams["pageToken"] = [pageToken];
+    }
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
-    if (pageToken != null) {
-      _queryParams["pageToken"] = [pageToken];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
     }
 
     _url = 'v1beta2/' +
@@ -346,6 +386,9 @@
   /// [subscription] - The name of the subscription.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -354,7 +397,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> modifyAckDeadline(
-      ModifyAckDeadlineRequest request, core.String subscription) {
+      ModifyAckDeadlineRequest request, core.String subscription,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -368,6 +412,9 @@
     if (subscription == null) {
       throw new core.ArgumentError("Parameter subscription is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' +
         commons.Escaper.ecapeVariableReserved('$subscription') +
@@ -396,6 +443,9 @@
   /// [subscription] - The name of the subscription.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -404,7 +454,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Empty> modifyPushConfig(
-      ModifyPushConfigRequest request, core.String subscription) {
+      ModifyPushConfigRequest request, core.String subscription,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -418,6 +469,9 @@
     if (subscription == null) {
       throw new core.ArgumentError("Parameter subscription is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' +
         commons.Escaper.ecapeVariableReserved('$subscription') +
@@ -444,6 +498,9 @@
   /// [subscription] - The subscription from which messages should be pulled.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PullResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -451,8 +508,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<PullResponse> pull(
-      PullRequest request, core.String subscription) {
+  async.Future<PullResponse> pull(PullRequest request, core.String subscription,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -466,6 +523,9 @@
     if (subscription == null) {
       throw new core.ArgumentError("Parameter subscription is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' +
         commons.Escaper.ecapeVariableReserved('$subscription') +
@@ -492,6 +552,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -500,7 +563,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -514,6 +578,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -545,6 +612,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -553,7 +623,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -567,6 +638,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -605,6 +679,9 @@
   /// must not start with `"goog"`.
   /// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Topic].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -612,7 +689,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Topic> create(Topic request, core.String name) {
+  async.Future<Topic> create(Topic request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -626,6 +704,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -649,6 +730,9 @@
   /// [topic] - Name of the topic to delete.
   /// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -656,7 +740,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String topic) {
+  async.Future<Empty> delete(core.String topic, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -667,6 +751,9 @@
     if (topic == null) {
       throw new core.ArgumentError("Parameter topic is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' + commons.Escaper.ecapeVariableReserved('$topic');
 
@@ -686,6 +773,9 @@
   /// [topic] - The name of the topic to get.
   /// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Topic].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -693,7 +783,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Topic> get(core.String topic) {
+  async.Future<Topic> get(core.String topic, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -704,6 +794,9 @@
     if (topic == null) {
       throw new core.ArgumentError("Parameter topic is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' + commons.Escaper.ecapeVariableReserved('$topic');
 
@@ -727,6 +820,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -734,7 +830,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Policy> getIamPolicy(core.String resource) {
+  async.Future<Policy> getIamPolicy(core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -745,6 +842,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -773,6 +873,9 @@
   ///
   /// [pageSize] - Maximum number of topics to return.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListTopicsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -781,7 +884,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListTopicsResponse> list(core.String project,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -798,6 +901,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' +
         commons.Escaper.ecapeVariableReserved('$project') +
@@ -823,6 +929,9 @@
   /// [topic] - The messages in the request will be published on this topic.
   /// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PublishResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -831,7 +940,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PublishResponse> publish(
-      PublishRequest request, core.String topic) {
+      PublishRequest request, core.String topic,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -845,6 +955,9 @@
     if (topic == null) {
       throw new core.ArgumentError("Parameter topic is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' +
         commons.Escaper.ecapeVariableReserved('$topic') +
@@ -871,6 +984,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -879,7 +995,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -893,6 +1010,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -924,6 +1044,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -932,7 +1055,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -946,6 +1070,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -982,6 +1109,9 @@
   /// that this is a continuation of a prior `ListTopicSubscriptions` call, and
   /// that the system should return the next page of data.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListTopicSubscriptionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -990,7 +1120,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListTopicSubscriptionsResponse> list(core.String topic,
-      {core.int pageSize, core.String pageToken}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1007,6 +1137,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta2/' +
         commons.Escaper.ecapeVariableReserved('$topic') +
diff --git a/generated/googleapis_beta/lib/replicapool/v1beta2.dart b/generated/googleapis_beta/lib/replicapool/v1beta2.dart
index a133779..e34eaed 100644
--- a/generated/googleapis_beta/lib/replicapool/v1beta2.dart
+++ b/generated/googleapis_beta/lib/replicapool/v1beta2.dart
@@ -70,6 +70,9 @@
   /// [instanceGroupManager] - The name of the instance group manager.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -81,7 +84,8 @@
       InstanceGroupManagersAbandonInstancesRequest request,
       core.String project,
       core.String zone,
-      core.String instanceGroupManager) {
+      core.String instanceGroupManager,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -102,6 +106,9 @@
       throw new core.ArgumentError(
           "Parameter instanceGroupManager is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -136,6 +143,9 @@
   /// delete.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -144,7 +154,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(
-      core.String project, core.String zone, core.String instanceGroupManager) {
+      core.String project, core.String zone, core.String instanceGroupManager,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -162,6 +173,9 @@
       throw new core.ArgumentError(
           "Parameter instanceGroupManager is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -197,6 +211,9 @@
   /// [instanceGroupManager] - The name of the instance group manager.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -208,7 +225,8 @@
       InstanceGroupManagersDeleteInstancesRequest request,
       core.String project,
       core.String zone,
-      core.String instanceGroupManager) {
+      core.String instanceGroupManager,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -229,6 +247,9 @@
       throw new core.ArgumentError(
           "Parameter instanceGroupManager is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -260,6 +281,9 @@
   /// [instanceGroupManager] - Name of the instance resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceGroupManager].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -268,7 +292,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstanceGroupManager> get(
-      core.String project, core.String zone, core.String instanceGroupManager) {
+      core.String project, core.String zone, core.String instanceGroupManager,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -286,6 +311,9 @@
       throw new core.ArgumentError(
           "Parameter instanceGroupManager is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -318,6 +346,9 @@
   ///
   /// [size] - Number of instances that should exist.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -326,7 +357,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(InstanceGroupManager request,
-      core.String project, core.String zone, core.int size) {
+      core.String project, core.String zone, core.int size,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -347,6 +379,9 @@
       throw new core.ArgumentError("Parameter size is required.");
     }
     _queryParams["size"] = ["${size}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -383,6 +418,9 @@
   /// [pageToken] - Optional. Tag returned by a previous list request truncated
   /// by maxResults. Used to continue a previous list request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceGroupManagerList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -392,7 +430,10 @@
   /// this method will complete with the same error.
   async.Future<InstanceGroupManagerList> list(
       core.String project, core.String zone,
-      {core.String filter, core.int maxResults, core.String pageToken}) {
+      {core.String filter,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -415,6 +456,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -448,6 +492,9 @@
   /// [instanceGroupManager] - The name of the instance group manager.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -459,7 +506,8 @@
       InstanceGroupManagersRecreateInstancesRequest request,
       core.String project,
       core.String zone,
-      core.String instanceGroupManager) {
+      core.String instanceGroupManager,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -480,6 +528,9 @@
       throw new core.ArgumentError(
           "Parameter instanceGroupManager is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -517,6 +568,9 @@
   /// [size] - Number of instances that should exist in this Instance Group
   /// Manager.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -525,7 +579,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> resize(core.String project, core.String zone,
-      core.String instanceGroupManager, core.int size) {
+      core.String instanceGroupManager, core.int size,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -547,6 +602,9 @@
       throw new core.ArgumentError("Parameter size is required.");
     }
     _queryParams["size"] = ["${size}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -581,6 +639,9 @@
   /// [instanceGroupManager] - The name of the instance group manager.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -592,7 +653,8 @@
       InstanceGroupManagersSetInstanceTemplateRequest request,
       core.String project,
       core.String zone,
-      core.String instanceGroupManager) {
+      core.String instanceGroupManager,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -613,6 +675,9 @@
       throw new core.ArgumentError(
           "Parameter instanceGroupManager is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -647,6 +712,9 @@
   /// [instanceGroupManager] - The name of the instance group manager.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -658,7 +726,8 @@
       InstanceGroupManagersSetTargetPoolsRequest request,
       core.String project,
       core.String zone,
-      core.String instanceGroupManager) {
+      core.String instanceGroupManager,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -679,6 +748,9 @@
       throw new core.ArgumentError(
           "Parameter instanceGroupManager is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -716,6 +788,9 @@
   /// [operation] - Name of the operation resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -724,7 +799,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> get(
-      core.String project, core.String zone, core.String operation) {
+      core.String project, core.String zone, core.String operation,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -741,6 +817,9 @@
     if (operation == null) {
       throw new core.ArgumentError("Parameter operation is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -778,6 +857,9 @@
   /// [pageToken] - Optional. Tag returned by a previous list request truncated
   /// by maxResults. Used to continue a previous list request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OperationList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -786,7 +868,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OperationList> list(core.String project, core.String zone,
-      {core.String filter, core.int maxResults, core.String pageToken}) {
+      {core.String filter,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -809,6 +894,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
diff --git a/generated/googleapis_beta/lib/replicapoolupdater/v1beta1.dart b/generated/googleapis_beta/lib/replicapoolupdater/v1beta1.dart
index aeba595..9743e80 100644
--- a/generated/googleapis_beta/lib/replicapoolupdater/v1beta1.dart
+++ b/generated/googleapis_beta/lib/replicapoolupdater/v1beta1.dart
@@ -65,6 +65,9 @@
   ///
   /// [rollingUpdate] - The name of the update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -73,7 +76,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> cancel(
-      core.String project, core.String zone, core.String rollingUpdate) {
+      core.String project, core.String zone, core.String rollingUpdate,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -90,6 +94,9 @@
     if (rollingUpdate == null) {
       throw new core.ArgumentError("Parameter rollingUpdate is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -119,6 +126,9 @@
   ///
   /// [rollingUpdate] - The name of the update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RollingUpdate].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -127,7 +137,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RollingUpdate> get(
-      core.String project, core.String zone, core.String rollingUpdate) {
+      core.String project, core.String zone, core.String rollingUpdate,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -144,6 +155,9 @@
     if (rollingUpdate == null) {
       throw new core.ArgumentError("Parameter rollingUpdate is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -172,6 +186,9 @@
   ///
   /// [zone] - The name of the zone in which the update's target resides.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -180,7 +197,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(
-      RollingUpdate request, core.String project, core.String zone) {
+      RollingUpdate request, core.String project, core.String zone,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -197,6 +215,9 @@
     if (zone == null) {
       throw new core.ArgumentError("Parameter zone is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -232,6 +253,9 @@
   /// [pageToken] - Optional. Tag returned by a previous list request truncated
   /// by maxResults. Used to continue a previous list request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RollingUpdateList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -240,7 +264,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RollingUpdateList> list(core.String project, core.String zone,
-      {core.String filter, core.int maxResults, core.String pageToken}) {
+      {core.String filter,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -263,6 +290,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -299,6 +329,9 @@
   /// [pageToken] - Optional. Tag returned by a previous list request truncated
   /// by maxResults. Used to continue a previous list request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceUpdateList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -308,7 +341,10 @@
   /// this method will complete with the same error.
   async.Future<InstanceUpdateList> listInstanceUpdates(
       core.String project, core.String zone, core.String rollingUpdate,
-      {core.String filter, core.int maxResults, core.String pageToken}) {
+      {core.String filter,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -334,6 +370,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -364,6 +403,9 @@
   ///
   /// [rollingUpdate] - The name of the update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -372,7 +414,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> pause(
-      core.String project, core.String zone, core.String rollingUpdate) {
+      core.String project, core.String zone, core.String rollingUpdate,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -389,6 +432,9 @@
     if (rollingUpdate == null) {
       throw new core.ArgumentError("Parameter rollingUpdate is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -419,6 +465,9 @@
   ///
   /// [rollingUpdate] - The name of the update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -427,7 +476,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> resume(
-      core.String project, core.String zone, core.String rollingUpdate) {
+      core.String project, core.String zone, core.String rollingUpdate,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -444,6 +494,9 @@
     if (rollingUpdate == null) {
       throw new core.ArgumentError("Parameter rollingUpdate is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -474,6 +527,9 @@
   ///
   /// [rollingUpdate] - The name of the update.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -482,7 +538,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> rollback(
-      core.String project, core.String zone, core.String rollingUpdate) {
+      core.String project, core.String zone, core.String rollingUpdate,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -499,6 +556,9 @@
     if (rollingUpdate == null) {
       throw new core.ArgumentError("Parameter rollingUpdate is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -534,6 +594,9 @@
   ///
   /// [operation] - Name of the operation resource to return.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -542,7 +605,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> get(
-      core.String project, core.String zone, core.String operation) {
+      core.String project, core.String zone, core.String operation,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -559,6 +623,9 @@
     if (operation == null) {
       throw new core.ArgumentError("Parameter operation is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -595,6 +662,9 @@
   /// [pageToken] - Optional. Tag returned by a previous list request truncated
   /// by maxResults. Used to continue a previous list request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OperationList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -603,7 +673,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OperationList> list(core.String project, core.String zone,
-      {core.String filter, core.int maxResults, core.String pageToken}) {
+      {core.String filter,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -626,6 +699,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
diff --git a/generated/googleapis_beta/lib/resourceviews/v1beta1.dart b/generated/googleapis_beta/lib/resourceviews/v1beta1.dart
index 2f7524b..45d93d2 100644
--- a/generated/googleapis_beta/lib/resourceviews/v1beta1.dart
+++ b/generated/googleapis_beta/lib/resourceviews/v1beta1.dart
@@ -72,16 +72,17 @@
   ///
   /// [resourceViewName] - The name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future addresources(
-      RegionViewsAddResourcesRequest request,
-      core.String projectName,
-      core.String region,
-      core.String resourceViewName) {
+  async.Future addresources(RegionViewsAddResourcesRequest request,
+      core.String projectName, core.String region, core.String resourceViewName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -101,6 +102,9 @@
     if (resourceViewName == null) {
       throw new core.ArgumentError("Parameter resourceViewName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -130,13 +134,17 @@
   ///
   /// [resourceViewName] - The name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future delete(core.String projectName, core.String region,
-      core.String resourceViewName) {
+  async.Future delete(
+      core.String projectName, core.String region, core.String resourceViewName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -153,6 +161,9 @@
     if (resourceViewName == null) {
       throw new core.ArgumentError("Parameter resourceViewName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -181,6 +192,9 @@
   ///
   /// [resourceViewName] - The name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ResourceView].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -188,8 +202,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ResourceView> get(core.String projectName, core.String region,
-      core.String resourceViewName) {
+  async.Future<ResourceView> get(
+      core.String projectName, core.String region, core.String resourceViewName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -206,6 +221,9 @@
     if (resourceViewName == null) {
       throw new core.ArgumentError("Parameter resourceViewName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectName') +
         '/regions/' +
@@ -232,6 +250,9 @@
   ///
   /// [region] - The region name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RegionViewsInsertResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -240,7 +261,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RegionViewsInsertResponse> insert(
-      ResourceView request, core.String projectName, core.String region) {
+      ResourceView request, core.String projectName, core.String region,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -257,6 +279,9 @@
     if (region == null) {
       throw new core.ArgumentError("Parameter region is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectName') +
         '/regions/' +
@@ -289,6 +314,9 @@
   /// request. This token can be used to request the next page of results from a
   /// previous list request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RegionViewsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -298,7 +326,7 @@
   /// this method will complete with the same error.
   async.Future<RegionViewsListResponse> list(
       core.String projectName, core.String region,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -318,6 +346,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectName') +
         '/regions/' +
@@ -351,6 +382,9 @@
   /// request. This token can be used to request the next page of results from a
   /// previous list request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RegionViewsListResourcesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -360,7 +394,7 @@
   /// this method will complete with the same error.
   async.Future<RegionViewsListResourcesResponse> listresources(
       core.String projectName, core.String region, core.String resourceViewName,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -383,6 +417,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectName') +
         '/regions/' +
@@ -413,16 +450,17 @@
   ///
   /// [resourceViewName] - The name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future removeresources(
-      RegionViewsRemoveResourcesRequest request,
-      core.String projectName,
-      core.String region,
-      core.String resourceViewName) {
+  async.Future removeresources(RegionViewsRemoveResourcesRequest request,
+      core.String projectName, core.String region, core.String resourceViewName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -442,6 +480,9 @@
     if (resourceViewName == null) {
       throw new core.ArgumentError("Parameter resourceViewName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -479,13 +520,17 @@
   ///
   /// [resourceViewName] - The name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future addresources(ZoneViewsAddResourcesRequest request,
-      core.String projectName, core.String zone, core.String resourceViewName) {
+      core.String projectName, core.String zone, core.String resourceViewName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -505,6 +550,9 @@
     if (resourceViewName == null) {
       throw new core.ArgumentError("Parameter resourceViewName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -534,13 +582,17 @@
   ///
   /// [resourceViewName] - The name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String projectName, core.String zone, core.String resourceViewName) {
+      core.String projectName, core.String zone, core.String resourceViewName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -557,6 +609,9 @@
     if (resourceViewName == null) {
       throw new core.ArgumentError("Parameter resourceViewName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -585,6 +640,9 @@
   ///
   /// [resourceViewName] - The name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ResourceView].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -593,7 +651,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ResourceView> get(
-      core.String projectName, core.String zone, core.String resourceViewName) {
+      core.String projectName, core.String zone, core.String resourceViewName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -610,6 +669,9 @@
     if (resourceViewName == null) {
       throw new core.ArgumentError("Parameter resourceViewName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectName') +
         '/zones/' +
@@ -636,6 +698,9 @@
   ///
   /// [zone] - The zone name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ZoneViewsInsertResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -644,7 +709,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ZoneViewsInsertResponse> insert(
-      ResourceView request, core.String projectName, core.String zone) {
+      ResourceView request, core.String projectName, core.String zone,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -661,6 +727,9 @@
     if (zone == null) {
       throw new core.ArgumentError("Parameter zone is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectName') +
         '/zones/' +
@@ -692,6 +761,9 @@
   /// request. This token can be used to request the next page of results from a
   /// previous list request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ZoneViewsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -701,7 +773,7 @@
   /// this method will complete with the same error.
   async.Future<ZoneViewsListResponse> list(
       core.String projectName, core.String zone,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -721,6 +793,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectName') +
         '/zones/' +
@@ -754,6 +829,9 @@
   /// request. This token can be used to request the next page of results from a
   /// previous list request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ZoneViewsListResourcesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -763,7 +841,7 @@
   /// this method will complete with the same error.
   async.Future<ZoneViewsListResourcesResponse> listresources(
       core.String projectName, core.String zone, core.String resourceViewName,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -786,6 +864,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectName') +
         '/zones/' +
@@ -816,13 +897,17 @@
   ///
   /// [resourceViewName] - The name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future removeresources(ZoneViewsRemoveResourcesRequest request,
-      core.String projectName, core.String zone, core.String resourceViewName) {
+      core.String projectName, core.String zone, core.String resourceViewName,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -842,6 +927,9 @@
     if (resourceViewName == null) {
       throw new core.ArgumentError("Parameter resourceViewName is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
diff --git a/generated/googleapis_beta/lib/resourceviews/v1beta2.dart b/generated/googleapis_beta/lib/resourceviews/v1beta2.dart
index 9bdb350..d5f0764 100644
--- a/generated/googleapis_beta/lib/resourceviews/v1beta2.dart
+++ b/generated/googleapis_beta/lib/resourceviews/v1beta2.dart
@@ -74,6 +74,9 @@
   /// [operation] - Name of the operation resource to return.
   /// Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -82,7 +85,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> get(
-      core.String project, core.String zone, core.String operation) {
+      core.String project, core.String zone, core.String operation,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -99,6 +103,9 @@
     if (operation == null) {
       throw new core.ArgumentError("Parameter operation is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -136,6 +143,9 @@
   /// [pageToken] - Optional. Tag returned by a previous list request truncated
   /// by maxResults. Used to continue a previous list request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OperationList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -144,7 +154,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<OperationList> list(core.String project, core.String zone,
-      {core.String filter, core.int maxResults, core.String pageToken}) {
+      {core.String filter,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -167,6 +180,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -200,6 +216,9 @@
   ///
   /// [resourceView] - The name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -208,7 +227,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> addResources(ZoneViewsAddResourcesRequest request,
-      core.String project, core.String zone, core.String resourceView) {
+      core.String project, core.String zone, core.String resourceView,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -228,6 +248,9 @@
     if (resourceView == null) {
       throw new core.ArgumentError("Parameter resourceView is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -255,6 +278,9 @@
   ///
   /// [resourceView] - The name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -263,7 +289,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(
-      core.String project, core.String zone, core.String resourceView) {
+      core.String project, core.String zone, core.String resourceView,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -280,6 +307,9 @@
     if (resourceView == null) {
       throw new core.ArgumentError("Parameter resourceView is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -306,6 +336,9 @@
   ///
   /// [resourceView] - The name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ResourceView].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -314,7 +347,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ResourceView> get(
-      core.String project, core.String zone, core.String resourceView) {
+      core.String project, core.String zone, core.String resourceView,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -331,6 +365,9 @@
     if (resourceView == null) {
       throw new core.ArgumentError("Parameter resourceView is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -360,6 +397,9 @@
   /// [resourceName] - The name of the resource if user wants to get the service
   /// information of the resource.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ZoneViewsGetServiceResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -369,7 +409,7 @@
   /// this method will complete with the same error.
   async.Future<ZoneViewsGetServiceResponse> getService(
       core.String project, core.String zone, core.String resourceView,
-      {core.String resourceName}) {
+      {core.String resourceName, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -389,6 +429,9 @@
     if (resourceName != null) {
       _queryParams["resourceName"] = [resourceName];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -417,6 +460,9 @@
   ///
   /// [zone] - The zone name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -425,7 +471,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(
-      ResourceView request, core.String project, core.String zone) {
+      ResourceView request, core.String project, core.String zone,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -442,6 +489,9 @@
     if (zone == null) {
       throw new core.ArgumentError("Parameter zone is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -473,6 +523,9 @@
   /// request. This token can be used to request the next page of results from a
   /// previous list request.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ZoneViewsList].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -481,7 +534,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ZoneViewsList> list(core.String project, core.String zone,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -501,6 +554,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -552,6 +608,9 @@
   /// [serviceName] - The service name to return in the response. It is optional
   /// and if it is not set, all the service end points will be returned.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ZoneViewsListResourcesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -565,7 +624,8 @@
       core.String listState,
       core.int maxResults,
       core.String pageToken,
-      core.String serviceName}) {
+      core.String serviceName,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -597,6 +657,9 @@
     if (serviceName != null) {
       _queryParams["serviceName"] = [serviceName];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -627,6 +690,9 @@
   ///
   /// [resourceView] - The name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -638,7 +704,8 @@
       ZoneViewsRemoveResourcesRequest request,
       core.String project,
       core.String zone,
-      core.String resourceView) {
+      core.String resourceView,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -658,6 +725,9 @@
     if (resourceView == null) {
       throw new core.ArgumentError("Parameter resourceView is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
@@ -687,6 +757,9 @@
   ///
   /// [resourceView] - The name of the resource view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -695,7 +768,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> setService(ZoneViewsSetServiceRequest request,
-      core.String project, core.String zone, core.String resourceView) {
+      core.String project, core.String zone, core.String resourceView,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -715,6 +789,9 @@
     if (resourceView == null) {
       throw new core.ArgumentError("Parameter resourceView is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/zones/' +
diff --git a/generated/googleapis_beta/lib/runtimeconfig/v1beta1.dart b/generated/googleapis_beta/lib/runtimeconfig/v1beta1.dart
index b80640f..fffc804 100644
--- a/generated/googleapis_beta/lib/runtimeconfig/v1beta1.dart
+++ b/generated/googleapis_beta/lib/runtimeconfig/v1beta1.dart
@@ -83,6 +83,9 @@
   ///
   /// `request_id` strings are limited to 64 characters.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RuntimeConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -91,7 +94,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<RuntimeConfig> create(RuntimeConfig request, core.String parent,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -108,6 +111,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -131,6 +137,9 @@
   /// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
   /// Value must have pattern "^projects/[^/]+/configs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -138,7 +147,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -149,6 +158,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -171,6 +183,9 @@
   /// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
   /// Value must have pattern "^projects/[^/]+/configs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RuntimeConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -178,7 +193,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<RuntimeConfig> get(core.String name) {
+  async.Future<RuntimeConfig> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -189,6 +204,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -212,6 +230,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/configs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -219,7 +240,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Policy> getIamPolicy(core.String resource) {
+  async.Future<Policy> getIamPolicy(core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -230,6 +252,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -261,6 +286,9 @@
   /// are fewer
   /// elements than the specified number, returns all elements.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListConfigsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -269,7 +297,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListConfigsResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -286,6 +314,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -312,6 +343,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/configs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Policy].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -320,7 +354,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Policy> setIamPolicy(
-      SetIamPolicyRequest request, core.String resource) {
+      SetIamPolicyRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -334,6 +369,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -365,6 +403,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/configs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -373,7 +414,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -387,6 +429,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -413,6 +458,9 @@
   /// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
   /// Value must have pattern "^projects/[^/]+/configs/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [RuntimeConfig].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -420,7 +468,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<RuntimeConfig> update(RuntimeConfig request, core.String name) {
+  async.Future<RuntimeConfig> update(RuntimeConfig request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -434,6 +483,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -462,6 +514,9 @@
   /// [name] - The name of the operation resource.
   /// Value must have pattern "^projects/[^/]+/configs/[^/]+/operations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -469,7 +524,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String name) {
+  async.Future<Operation> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -480,6 +535,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -509,6 +567,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/configs/[^/]+/operations/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -517,7 +578,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -531,6 +593,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -585,6 +650,9 @@
   ///
   /// `request_id` strings are limited to 64 characters.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Variable].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -593,7 +661,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Variable> create(Variable request, core.String parent,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -610,6 +678,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -642,6 +713,9 @@
   /// the same
   /// prefix.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -649,7 +723,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name, {core.bool recursive}) {
+  async.Future<Empty> delete(core.String name,
+      {core.bool recursive, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -663,6 +738,9 @@
     if (recursive != null) {
       _queryParams["recursive"] = ["${recursive}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -684,6 +762,9 @@
   /// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIBLE_NAME]`
   /// Value must have pattern "^projects/[^/]+/configs/[^/]+/variables/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Variable].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -691,7 +772,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Variable> get(core.String name) {
+  async.Future<Variable> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -702,6 +783,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -749,6 +833,9 @@
   /// are fewer
   /// elements than the specified number, returns all elements.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListVariablesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -760,7 +847,8 @@
       {core.String filter,
       core.bool returnValues,
       core.String pageToken,
-      core.int pageSize}) {
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -783,6 +871,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -814,6 +905,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/configs/[^/]+/variables/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -822,7 +916,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -836,6 +931,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
@@ -862,6 +960,9 @@
   /// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]`
   /// Value must have pattern "^projects/[^/]+/configs/[^/]+/variables/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Variable].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -869,7 +970,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Variable> update(Variable request, core.String name) {
+  async.Future<Variable> update(Variable request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -883,6 +985,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -922,6 +1027,9 @@
   /// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`
   /// Value must have pattern "^projects/[^/]+/configs/[^/]+/variables/.+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Variable].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -929,7 +1037,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Variable> watch(WatchVariableRequest request, core.String name) {
+  async.Future<Variable> watch(WatchVariableRequest request, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -943,6 +1052,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name') + ':watch';
@@ -991,6 +1103,9 @@
   ///
   /// `request_id` strings are limited to 64 characters.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -999,7 +1114,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> create(Waiter request, core.String parent,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1016,6 +1131,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -1039,6 +1157,9 @@
   ///  `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]`
   /// Value must have pattern "^projects/[^/]+/configs/[^/]+/waiters/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1046,7 +1167,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1057,6 +1178,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1080,6 +1204,9 @@
   /// `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]`
   /// Value must have pattern "^projects/[^/]+/configs/[^/]+/waiters/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Waiter].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1087,7 +1214,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Waiter> get(core.String name) {
+  async.Future<Waiter> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1098,6 +1225,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' + commons.Escaper.ecapeVariableReserved('$name');
 
@@ -1129,6 +1259,9 @@
   /// are fewer
   /// elements than the specified number, returns all elements.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListWaitersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1137,7 +1270,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListWaitersResponse> list(core.String parent,
-      {core.String pageToken, core.int pageSize}) {
+      {core.String pageToken, core.int pageSize, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1154,6 +1287,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$parent') +
@@ -1185,6 +1321,9 @@
   /// See the operation documentation for the appropriate value for this field.
   /// Value must have pattern "^projects/[^/]+/configs/[^/]+/waiters/[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TestIamPermissionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1193,7 +1332,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TestIamPermissionsResponse> testIamPermissions(
-      TestIamPermissionsRequest request, core.String resource) {
+      TestIamPermissionsRequest request, core.String resource,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1207,6 +1347,9 @@
     if (resource == null) {
       throw new core.ArgumentError("Parameter resource is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/' +
         commons.Escaper.ecapeVariableReserved('$resource') +
diff --git a/generated/googleapis_beta/lib/speech/v1beta1.dart b/generated/googleapis_beta/lib/speech/v1beta1.dart
index 1ea5084..fb6bb43 100644
--- a/generated/googleapis_beta/lib/speech/v1beta1.dart
+++ b/generated/googleapis_beta/lib/speech/v1beta1.dart
@@ -53,6 +53,9 @@
   /// [name] - The name of the operation resource to be cancelled.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -60,7 +63,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> cancel(core.String name) {
+  async.Future<Empty> cancel(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -71,6 +74,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/operations/' +
         commons.Escaper.ecapeVariableReserved('$name') +
@@ -95,6 +101,9 @@
   /// [name] - The name of the operation resource to be deleted.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Empty].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -102,7 +111,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Empty> delete(core.String name) {
+  async.Future<Empty> delete(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -113,6 +122,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1beta1/operations/' + commons.Escaper.ecapeVariableReserved('$name');
@@ -135,6 +147,9 @@
   /// [name] - The name of the operation resource.
   /// Value must have pattern "^[^/]+$".
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -142,7 +157,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String name) {
+  async.Future<Operation> get(core.String name, {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -153,6 +168,9 @@
     if (name == null) {
       throw new core.ArgumentError("Parameter name is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'v1beta1/operations/' + commons.Escaper.ecapeVariableReserved('$name');
@@ -188,6 +206,9 @@
   ///
   /// [pageSize] - The standard list page size.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListOperationsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -199,7 +220,8 @@
       {core.String filter,
       core.String pageToken,
       core.String name,
-      core.int pageSize}) {
+      core.int pageSize,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -219,6 +241,9 @@
     if (pageSize != null) {
       _queryParams["pageSize"] = ["${pageSize}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/operations';
 
@@ -248,6 +273,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -255,7 +283,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> asyncrecognize(AsyncRecognizeRequest request) {
+  async.Future<Operation> asyncrecognize(AsyncRecognizeRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -266,6 +295,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/speech:asyncrecognize';
 
@@ -285,6 +317,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SyncRecognizeResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -293,7 +328,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SyncRecognizeResponse> syncrecognize(
-      SyncRecognizeRequest request) {
+      SyncRecognizeRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -304,6 +340,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/speech:syncrecognize';
 
diff --git a/generated/googleapis_beta/lib/sqladmin/v1beta3.dart b/generated/googleapis_beta/lib/sqladmin/v1beta3.dart
index e05d035..f7012a5 100644
--- a/generated/googleapis_beta/lib/sqladmin/v1beta3.dart
+++ b/generated/googleapis_beta/lib/sqladmin/v1beta3.dart
@@ -62,6 +62,9 @@
   /// occur any time in the window. The time is in RFC 3339 format, for example
   /// 2012-11-15T16:19:00.094Z.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BackupRun].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -70,7 +73,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BackupRun> get(core.String project, core.String instance,
-      core.String backupConfiguration, core.String dueTime) {
+      core.String backupConfiguration, core.String dueTime,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -92,6 +96,9 @@
       throw new core.ArgumentError("Parameter dueTime is required.");
     }
     _queryParams["dueTime"] = [dueTime];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -125,6 +132,9 @@
   /// [pageToken] - A previously-returned page token representing part of the
   /// larger set of results to view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BackupRunsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -134,7 +144,7 @@
   /// this method will complete with the same error.
   async.Future<BackupRunsListResponse> list(core.String project,
       core.String instance, core.String backupConfiguration,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -159,6 +169,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -185,6 +198,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FlagsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -192,7 +208,7 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<FlagsListResponse> list() {
+  async.Future<FlagsListResponse> list({core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -200,6 +216,10 @@
     var _downloadOptions = commons.DownloadOptions.Metadata;
     var _body = null;
 
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
     _url = 'flags';
 
     var _response = _requester.request(_url, "GET",
@@ -226,6 +246,9 @@
   /// [project] - Project ID of the source as well as the clone Cloud SQL
   /// instance.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstancesCloneResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -234,7 +257,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstancesCloneResponse> clone(
-      InstancesCloneRequest request, core.String project) {
+      InstancesCloneRequest request, core.String project,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -248,6 +272,9 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -271,6 +298,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstancesDeleteResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -279,7 +309,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstancesDeleteResponse> delete(
-      core.String project, core.String instance) {
+      core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -293,6 +324,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -320,6 +354,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstancesExportResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -327,8 +364,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<InstancesExportResponse> export(InstancesExportRequest request,
-      core.String project, core.String instance) {
+  async.Future<InstancesExportResponse> export(
+      InstancesExportRequest request, core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -345,6 +383,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -369,6 +410,9 @@
   ///
   /// [instance] - Database instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DatabaseInstance].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -376,8 +420,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DatabaseInstance> get(
-      core.String project, core.String instance) {
+  async.Future<DatabaseInstance> get(core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -391,6 +435,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -417,6 +464,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstancesImportResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -424,8 +474,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<InstancesImportResponse> import(InstancesImportRequest request,
-      core.String project, core.String instance) {
+  async.Future<InstancesImportResponse> import(
+      InstancesImportRequest request, core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -442,6 +493,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -467,6 +521,9 @@
   /// [project] - Project ID of the project to which the newly created Cloud SQL
   /// instances should belong.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstancesInsertResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -475,7 +532,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstancesInsertResponse> insert(
-      DatabaseInstance request, core.String project) {
+      DatabaseInstance request, core.String project,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -489,6 +547,9 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'projects/' + commons.Escaper.ecapeVariable('$project') + '/instances';
@@ -515,6 +576,9 @@
   /// [pageToken] - A previously-returned page token representing part of the
   /// larger set of results to view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstancesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -523,7 +587,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstancesListResponse> list(core.String project,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -540,6 +604,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'projects/' + commons.Escaper.ecapeVariable('$project') + '/instances';
@@ -564,6 +631,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstancesUpdateResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -572,7 +642,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstancesUpdateResponse> patch(
-      DatabaseInstance request, core.String project, core.String instance) {
+      DatabaseInstance request, core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -589,6 +660,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -612,6 +686,9 @@
   ///
   /// [instance] - Cloud SQL read replica instance name.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstancesPromoteReplicaResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -620,7 +697,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstancesPromoteReplicaResponse> promoteReplica(
-      core.String project, core.String instance) {
+      core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -634,6 +712,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -660,6 +741,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstancesResetSslConfigResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -668,7 +752,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstancesResetSslConfigResponse> resetSslConfig(
-      core.String project, core.String instance) {
+      core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -682,6 +767,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -708,6 +796,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstancesRestartResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -716,7 +807,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstancesRestartResponse> restart(
-      core.String project, core.String instance) {
+      core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -730,6 +822,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -762,6 +857,9 @@
   /// occur any time in the window. The time is in RFC 3339 format, for example
   /// 2012-11-15T16:19:00.094Z.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstancesRestoreBackupResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -773,7 +871,8 @@
       core.String project,
       core.String instance,
       core.String backupConfiguration,
-      core.String dueTime) {
+      core.String dueTime,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -796,6 +895,9 @@
       throw new core.ArgumentError("Parameter dueTime is required.");
     }
     _queryParams["dueTime"] = [dueTime];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -823,6 +925,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstancesSetRootPasswordResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -833,7 +938,8 @@
   async.Future<InstancesSetRootPasswordResponse> setRootPassword(
       InstanceSetRootPasswordRequest request,
       core.String project,
-      core.String instance) {
+      core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -850,6 +956,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -877,6 +986,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstancesUpdateResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -885,7 +997,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstancesUpdateResponse> update(
-      DatabaseInstance request, core.String project, core.String instance) {
+      DatabaseInstance request, core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -902,6 +1015,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -934,6 +1050,9 @@
   ///
   /// [operation] - Instance operation ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstanceOperation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -942,7 +1061,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstanceOperation> get(
-      core.String project, core.String instance, core.String operation) {
+      core.String project, core.String instance, core.String operation,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -959,6 +1079,9 @@
     if (operation == null) {
       throw new core.ArgumentError("Parameter operation is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -989,6 +1112,9 @@
   /// [pageToken] - A previously-returned page token representing part of the
   /// larger set of results to view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OperationsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -998,7 +1124,7 @@
   /// this method will complete with the same error.
   async.Future<OperationsListResponse> list(
       core.String project, core.String instance,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1018,6 +1144,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1051,6 +1180,9 @@
   ///
   /// [sha1Fingerprint] - Sha1 FingerPrint.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SslCertsDeleteResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1059,7 +1191,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SslCertsDeleteResponse> delete(
-      core.String project, core.String instance, core.String sha1Fingerprint) {
+      core.String project, core.String instance, core.String sha1Fingerprint,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1076,6 +1209,9 @@
     if (sha1Fingerprint == null) {
       throw new core.ArgumentError("Parameter sha1Fingerprint is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1103,6 +1239,9 @@
   ///
   /// [sha1Fingerprint] - Sha1 FingerPrint.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SslCert].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1111,7 +1250,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SslCert> get(
-      core.String project, core.String instance, core.String sha1Fingerprint) {
+      core.String project, core.String instance, core.String sha1Fingerprint,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1128,6 +1268,9 @@
     if (sha1Fingerprint == null) {
       throw new core.ArgumentError("Parameter sha1Fingerprint is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1157,6 +1300,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SslCertsInsertResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1164,8 +1310,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SslCertsInsertResponse> insert(SslCertsInsertRequest request,
-      core.String project, core.String instance) {
+  async.Future<SslCertsInsertResponse> insert(
+      SslCertsInsertRequest request, core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1182,6 +1329,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1208,6 +1358,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SslCertsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1216,7 +1369,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SslCertsListResponse> list(
-      core.String project, core.String instance) {
+      core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1230,6 +1384,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1258,6 +1415,9 @@
   ///
   /// [project] - Project ID of the project for which to list tiers.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TiersListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1265,7 +1425,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TiersListResponse> list(core.String project) {
+  async.Future<TiersListResponse> list(core.String project,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1276,6 +1437,9 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' + commons.Escaper.ecapeVariable('$project') + '/tiers';
 
diff --git a/generated/googleapis_beta/lib/sqladmin/v1beta4.dart b/generated/googleapis_beta/lib/sqladmin/v1beta4.dart
index b57635a..2d0de5e 100644
--- a/generated/googleapis_beta/lib/sqladmin/v1beta4.dart
+++ b/generated/googleapis_beta/lib/sqladmin/v1beta4.dart
@@ -59,6 +59,9 @@
   /// [id] - The ID of the Backup Run to delete. To find a Backup Run ID, use
   /// the list method.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -67,7 +70,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(
-      core.String project, core.String instance, core.String id) {
+      core.String project, core.String instance, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -84,6 +88,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -111,6 +118,9 @@
   ///
   /// [id] - The ID of this Backup Run.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BackupRun].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -119,7 +129,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<BackupRun> get(
-      core.String project, core.String instance, core.String id) {
+      core.String project, core.String instance, core.String id,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -136,6 +147,9 @@
     if (id == null) {
       throw new core.ArgumentError("Parameter id is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -164,6 +178,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -172,7 +189,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(
-      BackupRun request, core.String project, core.String instance) {
+      BackupRun request, core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -189,6 +207,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -219,6 +240,9 @@
   /// [pageToken] - A previously-returned page token representing part of the
   /// larger set of results to view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BackupRunsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -228,7 +252,7 @@
   /// this method will complete with the same error.
   async.Future<BackupRunsListResponse> list(
       core.String project, core.String instance,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -248,6 +272,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -280,6 +307,9 @@
   ///
   /// [database] - Name of the database to be deleted in the instance.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -288,7 +318,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(
-      core.String project, core.String instance, core.String database) {
+      core.String project, core.String instance, core.String database,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -305,6 +336,9 @@
     if (database == null) {
       throw new core.ArgumentError("Parameter database is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -333,6 +367,9 @@
   ///
   /// [database] - Name of the database in the instance.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Database].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -341,7 +378,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Database> get(
-      core.String project, core.String instance, core.String database) {
+      core.String project, core.String instance, core.String database,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -358,6 +396,9 @@
     if (database == null) {
       throw new core.ArgumentError("Parameter database is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -386,6 +427,9 @@
   ///
   /// [instance] - Database instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -394,7 +438,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(
-      Database request, core.String project, core.String instance) {
+      Database request, core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -411,6 +456,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -436,6 +484,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DatabasesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -444,7 +495,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<DatabasesListResponse> list(
-      core.String project, core.String instance) {
+      core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -458,6 +510,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -487,6 +542,9 @@
   ///
   /// [database] - Name of the database to be updated in the instance.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -495,7 +553,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> patch(Database request, core.String project,
-      core.String instance, core.String database) {
+      core.String instance, core.String database,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -515,6 +574,9 @@
     if (database == null) {
       throw new core.ArgumentError("Parameter database is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -545,6 +607,9 @@
   ///
   /// [database] - Name of the database to be updated in the instance.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -553,7 +618,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> update(Database request, core.String project,
-      core.String instance, core.String database) {
+      core.String instance, core.String database,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -573,6 +639,9 @@
     if (database == null) {
       throw new core.ArgumentError("Parameter database is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -603,6 +672,9 @@
   /// [databaseVersion] - Database version for flag retrieval. Flags are
   /// specific to the database version.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [FlagsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -610,7 +682,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<FlagsListResponse> list({core.String databaseVersion}) {
+  async.Future<FlagsListResponse> list(
+      {core.String databaseVersion, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -621,6 +694,9 @@
     if (databaseVersion != null) {
       _queryParams["databaseVersion"] = [databaseVersion];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'flags';
 
@@ -652,6 +728,9 @@
   /// [instance] - The ID of the Cloud SQL instance to be cloned (source). This
   /// does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -659,8 +738,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> clone(InstancesCloneRequest request,
-      core.String project, core.String instance) {
+  async.Future<Operation> clone(
+      InstancesCloneRequest request, core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -677,6 +757,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -702,6 +785,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -709,7 +795,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> delete(core.String project, core.String instance) {
+  async.Future<Operation> delete(core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -723,6 +810,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -738,6 +828,65 @@
     return _response.then((data) => new Operation.fromJson(data));
   }
 
+  /// Demotes the standalone instance to be a read replica Cloud SQL instance of
+  /// an on-premises master.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - ID of the project that contains the instance.
+  ///
+  /// [instance] - Cloud SQL instance name.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> demoteMaster(InstancesDemoteMasterRequest request,
+      core.String project, core.String instance,
+      {core.String $fields}) {
+    var _url = null;
+    var _queryParams = new core.Map();
+    var _uploadMedia = null;
+    var _uploadOptions = null;
+    var _downloadOptions = commons.DownloadOptions.Metadata;
+    var _body = null;
+
+    if (request != null) {
+      _body = convert.JSON.encode((request).toJson());
+    }
+    if (project == null) {
+      throw new core.ArgumentError("Parameter project is required.");
+    }
+    if (instance == null) {
+      throw new core.ArgumentError("Parameter instance is required.");
+    }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
+
+    _url = 'projects/' +
+        commons.Escaper.ecapeVariable('$project') +
+        '/instances/' +
+        commons.Escaper.ecapeVariable('$instance') +
+        '/demoteMaster';
+
+    var _response = _requester.request(_url, "POST",
+        body: _body,
+        queryParams: _queryParams,
+        uploadOptions: _uploadOptions,
+        uploadMedia: _uploadMedia,
+        downloadOptions: _downloadOptions);
+    return _response.then((data) => new Operation.fromJson(data));
+  }
+
   /// Exports data from a Cloud SQL instance to a Google Cloud Storage bucket as
   /// a MySQL dump file.
   ///
@@ -750,6 +899,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -757,8 +909,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> export(InstancesExportRequest request,
-      core.String project, core.String instance) {
+  async.Future<Operation> export(
+      InstancesExportRequest request, core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -775,6 +928,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -801,6 +957,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -809,7 +968,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> failover(InstancesFailoverRequest request,
-      core.String project, core.String instance) {
+      core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -826,6 +986,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -850,6 +1013,9 @@
   ///
   /// [instance] - Database instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [DatabaseInstance].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -857,8 +1023,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<DatabaseInstance> get(
-      core.String project, core.String instance) {
+  async.Future<DatabaseInstance> get(core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -872,6 +1038,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -898,6 +1067,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -905,8 +1077,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> import(InstancesImportRequest request,
-      core.String project, core.String instance) {
+  async.Future<Operation> import(
+      InstancesImportRequest request, core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -923,6 +1096,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -948,6 +1124,9 @@
   /// [project] - Project ID of the project to which the newly created Cloud SQL
   /// instances should belong.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -955,8 +1134,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> insert(
-      DatabaseInstance request, core.String project) {
+  async.Future<Operation> insert(DatabaseInstance request, core.String project,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -970,6 +1149,9 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'projects/' + commons.Escaper.ecapeVariable('$project') + '/instances';
@@ -999,6 +1181,9 @@
   /// [pageToken] - A previously-returned page token representing part of the
   /// larger set of results to view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [InstancesListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1007,7 +1192,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<InstancesListResponse> list(core.String project,
-      {core.String filter, core.int maxResults, core.String pageToken}) {
+      {core.String filter,
+      core.int maxResults,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1027,6 +1215,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'projects/' + commons.Escaper.ecapeVariable('$project') + '/instances';
@@ -1053,6 +1244,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1061,7 +1255,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> patch(
-      DatabaseInstance request, core.String project, core.String instance) {
+      DatabaseInstance request, core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1078,6 +1273,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1101,6 +1299,9 @@
   ///
   /// [instance] - Cloud SQL read replica instance name.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1109,7 +1310,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> promoteReplica(
-      core.String project, core.String instance) {
+      core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1123,6 +1325,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1150,6 +1355,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1158,7 +1366,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> resetSslConfig(
-      core.String project, core.String instance) {
+      core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1172,6 +1381,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1197,6 +1409,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1204,7 +1419,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> restart(core.String project, core.String instance) {
+  async.Future<Operation> restart(core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1218,6 +1434,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1244,6 +1463,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1252,7 +1474,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> restoreBackup(InstancesRestoreBackupRequest request,
-      core.String project, core.String instance) {
+      core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1269,6 +1492,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1293,6 +1519,9 @@
   ///
   /// [instance] - Cloud SQL read replica instance name.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1301,7 +1530,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> startReplica(
-      core.String project, core.String instance) {
+      core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1315,6 +1545,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1339,6 +1572,9 @@
   ///
   /// [instance] - Cloud SQL read replica instance name.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1346,8 +1582,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> stopReplica(
-      core.String project, core.String instance) {
+  async.Future<Operation> stopReplica(core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1361,6 +1597,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1387,6 +1626,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1395,7 +1637,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> truncateLog(InstancesTruncateLogRequest request,
-      core.String project, core.String instance) {
+      core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1412,6 +1655,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1440,6 +1686,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1448,7 +1697,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> update(
-      DatabaseInstance request, core.String project, core.String instance) {
+      DatabaseInstance request, core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1465,6 +1715,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1494,6 +1747,9 @@
   ///
   /// [operation] - Instance operation ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1501,7 +1757,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Operation> get(core.String project, core.String operation) {
+  async.Future<Operation> get(core.String project, core.String operation,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1515,6 +1772,9 @@
     if (operation == null) {
       throw new core.ArgumentError("Parameter operation is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1544,6 +1804,9 @@
   /// [pageToken] - A previously-returned page token representing part of the
   /// larger set of results to view.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [OperationsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1553,7 +1816,7 @@
   /// this method will complete with the same error.
   async.Future<OperationsListResponse> list(
       core.String project, core.String instance,
-      {core.int maxResults, core.String pageToken}) {
+      {core.int maxResults, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1574,6 +1837,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url =
         'projects/' + commons.Escaper.ecapeVariable('$project') + '/operations';
@@ -1606,6 +1872,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SslCert].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1614,7 +1883,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SslCert> createEphemeral(SslCertsCreateEphemeralRequest request,
-      core.String project, core.String instance) {
+      core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1631,6 +1901,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1659,6 +1932,9 @@
   ///
   /// [sha1Fingerprint] - Sha1 FingerPrint.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1667,7 +1943,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(
-      core.String project, core.String instance, core.String sha1Fingerprint) {
+      core.String project, core.String instance, core.String sha1Fingerprint,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1684,6 +1961,9 @@
     if (sha1Fingerprint == null) {
       throw new core.ArgumentError("Parameter sha1Fingerprint is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1713,6 +1993,9 @@
   ///
   /// [sha1Fingerprint] - Sha1 FingerPrint.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SslCert].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1721,7 +2004,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SslCert> get(
-      core.String project, core.String instance, core.String sha1Fingerprint) {
+      core.String project, core.String instance, core.String sha1Fingerprint,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1738,6 +2022,9 @@
     if (sha1Fingerprint == null) {
       throw new core.ArgumentError("Parameter sha1Fingerprint is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1768,6 +2055,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SslCertsInsertResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1775,8 +2065,9 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<SslCertsInsertResponse> insert(SslCertsInsertRequest request,
-      core.String project, core.String instance) {
+  async.Future<SslCertsInsertResponse> insert(
+      SslCertsInsertRequest request, core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1793,6 +2084,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1818,6 +2112,9 @@
   ///
   /// [instance] - Cloud SQL instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [SslCertsListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1826,7 +2123,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<SslCertsListResponse> list(
-      core.String project, core.String instance) {
+      core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1840,6 +2138,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1869,6 +2170,9 @@
   ///
   /// [project] - Project ID of the project for which to list tiers.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TiersListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1876,7 +2180,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<TiersListResponse> list(core.String project) {
+  async.Future<TiersListResponse> list(core.String project,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1887,6 +2192,9 @@
     if (project == null) {
       throw new core.ArgumentError("Parameter project is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' + commons.Escaper.ecapeVariable('$project') + '/tiers';
 
@@ -1917,6 +2225,9 @@
   ///
   /// [name] - Name of the user in the instance.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1925,7 +2236,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> delete(core.String project, core.String instance,
-      core.String host, core.String name) {
+      core.String host, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1947,6 +2259,9 @@
       throw new core.ArgumentError("Parameter name is required.");
     }
     _queryParams["name"] = [name];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -1973,6 +2288,9 @@
   ///
   /// [instance] - Database instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1981,7 +2299,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> insert(
-      User request, core.String project, core.String instance) {
+      User request, core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1998,6 +2317,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -2022,6 +2344,9 @@
   ///
   /// [instance] - Database instance ID. This does not include the project ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [UsersListResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2030,7 +2355,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<UsersListResponse> list(
-      core.String project, core.String instance) {
+      core.String project, core.String instance,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2044,6 +2370,9 @@
     if (instance == null) {
       throw new core.ArgumentError("Parameter instance is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -2074,6 +2403,9 @@
   ///
   /// [name] - Name of the user in the instance.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Operation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -2082,7 +2414,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Operation> update(User request, core.String project,
-      core.String instance, core.String host, core.String name) {
+      core.String instance, core.String host, core.String name,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -2107,6 +2440,9 @@
       throw new core.ArgumentError("Parameter name is required.");
     }
     _queryParams["name"] = [name];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'projects/' +
         commons.Escaper.ecapeVariable('$project') +
@@ -2959,6 +3295,159 @@
   }
 }
 
+/// Read-replica configuration for connecting to the on-premises master.
+class DemoteMasterConfiguration {
+  /// This is always sql#demoteMasterConfiguration.
+  core.String kind;
+
+  /// MySQL specific configuration when replicating from a MySQL on-premises
+  /// master. Replication configuration information such as the username,
+  /// password, certificates, and keys are not stored in the instance metadata.
+  /// The configuration information is used only to set up the replication
+  /// connection and is stored by MySQL in a file named master.info in the data
+  /// directory.
+  DemoteMasterMySqlReplicaConfiguration mysqlReplicaConfiguration;
+
+  DemoteMasterConfiguration();
+
+  DemoteMasterConfiguration.fromJson(core.Map _json) {
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+    if (_json.containsKey("mysqlReplicaConfiguration")) {
+      mysqlReplicaConfiguration =
+          new DemoteMasterMySqlReplicaConfiguration.fromJson(
+              _json["mysqlReplicaConfiguration"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    if (mysqlReplicaConfiguration != null) {
+      _json["mysqlReplicaConfiguration"] = (mysqlReplicaConfiguration).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Database instance demote master context.
+class DemoteMasterContext {
+  /// This is always sql#demoteMasterContext.
+  core.String kind;
+
+  /// The name of the instance which will act as on-premises master in the
+  /// replication setup.
+  core.String masterInstanceName;
+
+  /// Configuration specific to read-replicas replicating from the on-premises
+  /// master.
+  DemoteMasterConfiguration replicaConfiguration;
+
+  DemoteMasterContext();
+
+  DemoteMasterContext.fromJson(core.Map _json) {
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+    if (_json.containsKey("masterInstanceName")) {
+      masterInstanceName = _json["masterInstanceName"];
+    }
+    if (_json.containsKey("replicaConfiguration")) {
+      replicaConfiguration =
+          new DemoteMasterConfiguration.fromJson(_json["replicaConfiguration"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    if (masterInstanceName != null) {
+      _json["masterInstanceName"] = masterInstanceName;
+    }
+    if (replicaConfiguration != null) {
+      _json["replicaConfiguration"] = (replicaConfiguration).toJson();
+    }
+    return _json;
+  }
+}
+
+/// Read-replica configuration specific to MySQL databases.
+class DemoteMasterMySqlReplicaConfiguration {
+  /// PEM representation of the trusted CA's x509 certificate.
+  core.String caCertificate;
+
+  /// PEM representation of the slave's x509 certificate.
+  core.String clientCertificate;
+
+  /// PEM representation of the slave's private key. The corresponsing public
+  /// key is encoded in the client's certificate. The format of the slave's
+  /// private key can be either PKCS #1 or PKCS #8.
+  core.String clientKey;
+
+  /// This is always sql#demoteMasterMysqlReplicaConfiguration.
+  core.String kind;
+
+  /// The password for the replication connection.
+  core.String password;
+
+  /// The username for the replication connection.
+  core.String username;
+
+  DemoteMasterMySqlReplicaConfiguration();
+
+  DemoteMasterMySqlReplicaConfiguration.fromJson(core.Map _json) {
+    if (_json.containsKey("caCertificate")) {
+      caCertificate = _json["caCertificate"];
+    }
+    if (_json.containsKey("clientCertificate")) {
+      clientCertificate = _json["clientCertificate"];
+    }
+    if (_json.containsKey("clientKey")) {
+      clientKey = _json["clientKey"];
+    }
+    if (_json.containsKey("kind")) {
+      kind = _json["kind"];
+    }
+    if (_json.containsKey("password")) {
+      password = _json["password"];
+    }
+    if (_json.containsKey("username")) {
+      username = _json["username"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (caCertificate != null) {
+      _json["caCertificate"] = caCertificate;
+    }
+    if (clientCertificate != null) {
+      _json["clientCertificate"] = clientCertificate;
+    }
+    if (clientKey != null) {
+      _json["clientKey"] = clientKey;
+    }
+    if (kind != null) {
+      _json["kind"] = kind;
+    }
+    if (password != null) {
+      _json["password"] = password;
+    }
+    if (username != null) {
+      _json["username"] = username;
+    }
+    return _json;
+  }
+}
+
 /// Options for exporting data as CSV.
 class ExportContextCsvExportOptions {
   /// The select query used to extract the data.
@@ -3383,6 +3872,30 @@
   }
 }
 
+/// Database demote master request.
+class InstancesDemoteMasterRequest {
+  /// Contains details about the demoteMaster operation.
+  DemoteMasterContext demoteMasterContext;
+
+  InstancesDemoteMasterRequest();
+
+  InstancesDemoteMasterRequest.fromJson(core.Map _json) {
+    if (_json.containsKey("demoteMasterContext")) {
+      demoteMasterContext =
+          new DemoteMasterContext.fromJson(_json["demoteMasterContext"]);
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (demoteMasterContext != null) {
+      _json["demoteMasterContext"] = (demoteMasterContext).toJson();
+    }
+    return _json;
+  }
+}
+
 /// Database instance export request.
 class InstancesExportRequest {
   /// Contains details about the export operation.
diff --git a/generated/googleapis_beta/lib/taskqueue/v1beta2.dart b/generated/googleapis_beta/lib/taskqueue/v1beta2.dart
index dcac029..5c1fe4b 100644
--- a/generated/googleapis_beta/lib/taskqueue/v1beta2.dart
+++ b/generated/googleapis_beta/lib/taskqueue/v1beta2.dart
@@ -50,6 +50,9 @@
   ///
   /// [getStats] - Whether to get stats. Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [TaskQueue].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -58,7 +61,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<TaskQueue> get(core.String project, core.String taskqueue,
-      {core.bool getStats}) {
+      {core.bool getStats, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -75,6 +78,9 @@
     if (getStats != null) {
       _queryParams["getStats"] = ["${getStats}"];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/taskqueues/' +
@@ -105,13 +111,17 @@
   ///
   /// [task] - The id of the task to delete.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
   /// error.
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future delete(
-      core.String project, core.String taskqueue, core.String task) {
+      core.String project, core.String taskqueue, core.String task,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -128,6 +138,9 @@
     if (task == null) {
       throw new core.ArgumentError("Parameter task is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _downloadOptions = null;
 
@@ -156,6 +169,9 @@
   ///
   /// [task] - The task to get properties of.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Task].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -164,7 +180,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Task> get(
-      core.String project, core.String taskqueue, core.String task) {
+      core.String project, core.String taskqueue, core.String task,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -181,6 +198,9 @@
     if (task == null) {
       throw new core.ArgumentError("Parameter task is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/taskqueues/' +
@@ -207,6 +227,9 @@
   ///
   /// [taskqueue] - The taskqueue to insert the task into
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Task].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -215,7 +238,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Task> insert(
-      Task request, core.String project, core.String taskqueue) {
+      Task request, core.String project, core.String taskqueue,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -232,6 +256,9 @@
     if (taskqueue == null) {
       throw new core.ArgumentError("Parameter taskqueue is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/taskqueues/' +
@@ -266,6 +293,9 @@
   /// the tag will be that of the oldest task by eta, i.e. the first available
   /// tag
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Tasks].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -275,7 +305,7 @@
   /// this method will complete with the same error.
   async.Future<Tasks> lease(core.String project, core.String taskqueue,
       core.int numTasks, core.int leaseSecs,
-      {core.bool groupByTag, core.String tag}) {
+      {core.bool groupByTag, core.String tag, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -303,6 +333,9 @@
     if (tag != null) {
       _queryParams["tag"] = [tag];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/taskqueues/' +
@@ -326,6 +359,9 @@
   ///
   /// [taskqueue] - The id of the taskqueue to list tasks from.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Tasks2].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -333,7 +369,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<Tasks2> list(core.String project, core.String taskqueue) {
+  async.Future<Tasks2> list(core.String project, core.String taskqueue,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -347,6 +384,9 @@
     if (taskqueue == null) {
       throw new core.ArgumentError("Parameter taskqueue is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/taskqueues/' +
@@ -377,6 +417,9 @@
   ///
   /// [newLeaseSeconds] - The new lease in seconds.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Task].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -385,7 +428,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Task> patch(Task request, core.String project,
-      core.String taskqueue, core.String task, core.int newLeaseSeconds) {
+      core.String taskqueue, core.String task, core.int newLeaseSeconds,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -409,6 +453,9 @@
       throw new core.ArgumentError("Parameter newLeaseSeconds is required.");
     }
     _queryParams["newLeaseSeconds"] = ["${newLeaseSeconds}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/taskqueues/' +
@@ -439,6 +486,9 @@
   ///
   /// [newLeaseSeconds] - The new lease in seconds.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Task].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -447,7 +497,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Task> update(Task request, core.String project,
-      core.String taskqueue, core.String task, core.int newLeaseSeconds) {
+      core.String taskqueue, core.String task, core.int newLeaseSeconds,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -471,6 +522,9 @@
       throw new core.ArgumentError("Parameter newLeaseSeconds is required.");
     }
     _queryParams["newLeaseSeconds"] = ["${newLeaseSeconds}"];
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$project') +
         '/taskqueues/' +
diff --git a/generated/googleapis_beta/lib/toolresults/v1beta3.dart b/generated/googleapis_beta/lib/toolresults/v1beta3.dart
index cdae633..4226a26 100644
--- a/generated/googleapis_beta/lib/toolresults/v1beta3.dart
+++ b/generated/googleapis_beta/lib/toolresults/v1beta3.dart
@@ -51,6 +51,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProjectSettings].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -58,7 +61,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ProjectSettings> getSettings(core.String projectId) {
+  async.Future<ProjectSettings> getSettings(core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -69,6 +73,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') + '/settings';
 
@@ -114,6 +121,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ProjectSettings].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -121,7 +131,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<ProjectSettings> initializeSettings(core.String projectId) {
+  async.Future<ProjectSettings> initializeSettings(core.String projectId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -132,6 +143,9 @@
     if (projectId == null) {
       throw new core.ArgumentError("Parameter projectId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') + ':initializeSettings';
 
@@ -177,6 +191,9 @@
   ///
   /// Optional, but strongly recommended.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [History].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -185,7 +202,7 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<History> create(History request, core.String projectId,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -202,6 +219,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') + '/histories';
 
@@ -232,6 +252,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [History].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -239,7 +262,8 @@
   ///
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
-  async.Future<History> get(core.String projectId, core.String historyId) {
+  async.Future<History> get(core.String projectId, core.String historyId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -253,6 +277,9 @@
     if (historyId == null) {
       throw new core.ArgumentError("Parameter historyId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -301,6 +328,9 @@
   ///
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListHistoriesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -309,7 +339,10 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListHistoriesResponse> list(core.String projectId,
-      {core.String filterByName, core.int pageSize, core.String pageToken}) {
+      {core.String filterByName,
+      core.int pageSize,
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -329,6 +362,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') + '/histories';
 
@@ -380,6 +416,9 @@
   ///
   /// Optional, but strongly recommended.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Execution].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -389,7 +428,7 @@
   /// this method will complete with the same error.
   async.Future<Execution> create(
       Execution request, core.String projectId, core.String historyId,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -409,6 +448,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -446,6 +488,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Execution].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -454,7 +499,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Execution> get(
-      core.String projectId, core.String historyId, core.String executionId) {
+      core.String projectId, core.String historyId, core.String executionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -471,6 +517,9 @@
     if (executionId == null) {
       throw new core.ArgumentError("Parameter executionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -520,6 +569,9 @@
   ///
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListExecutionsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -529,7 +581,7 @@
   /// this method will complete with the same error.
   async.Future<ListExecutionsResponse> list(
       core.String projectId, core.String historyId,
-      {core.int pageSize, core.String pageToken}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -549,6 +601,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -588,6 +643,9 @@
   ///
   /// Optional, but strongly recommended.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Execution].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -597,7 +655,7 @@
   /// this method will complete with the same error.
   async.Future<Execution> patch(Execution request, core.String projectId,
       core.String historyId, core.String executionId,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -620,6 +678,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -663,6 +724,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ScreenshotCluster].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -671,7 +735,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ScreenshotCluster> get(core.String projectId,
-      core.String historyId, core.String executionId, core.String clusterId) {
+      core.String historyId, core.String executionId, core.String clusterId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -691,6 +756,9 @@
     if (clusterId == null) {
       throw new core.ArgumentError("Parameter clusterId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -732,6 +800,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListScreenshotClustersResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -740,7 +811,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<ListScreenshotClustersResponse> list(
-      core.String projectId, core.String historyId, core.String executionId) {
+      core.String projectId, core.String historyId, core.String executionId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -757,6 +829,9 @@
     if (executionId == null) {
       throw new core.ArgumentError("Parameter executionId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -825,6 +900,9 @@
   ///
   /// Optional, but strongly recommended.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Step].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -834,7 +912,7 @@
   /// this method will complete with the same error.
   async.Future<Step> create(Step request, core.String projectId,
       core.String historyId, core.String executionId,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -857,6 +935,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -900,6 +981,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Step].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -908,7 +992,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<Step> get(core.String projectId, core.String historyId,
-      core.String executionId, core.String stepId) {
+      core.String executionId, core.String stepId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -928,6 +1013,9 @@
     if (stepId == null) {
       throw new core.ArgumentError("Parameter stepId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -961,6 +1049,9 @@
   ///
   /// [stepId] - A tool results step ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PerfMetricsSummary].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -969,7 +1060,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<PerfMetricsSummary> getPerfMetricsSummary(core.String projectId,
-      core.String historyId, core.String executionId, core.String stepId) {
+      core.String historyId, core.String executionId, core.String stepId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -989,6 +1081,9 @@
     if (stepId == null) {
       throw new core.ArgumentError("Parameter stepId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -1046,6 +1141,9 @@
   ///
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListStepsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1055,7 +1153,7 @@
   /// this method will complete with the same error.
   async.Future<ListStepsResponse> list(
       core.String projectId, core.String historyId, core.String executionId,
-      {core.int pageSize, core.String pageToken}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1078,6 +1176,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -1130,6 +1231,9 @@
   ///
   /// Optional, but strongly recommended.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Step].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1139,7 +1243,7 @@
   /// this method will complete with the same error.
   async.Future<Step> patch(Step request, core.String projectId,
       core.String historyId, core.String executionId, core.String stepId,
-      {core.String requestId}) {
+      {core.String requestId, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1165,6 +1269,9 @@
     if (requestId != null) {
       _queryParams["requestId"] = [requestId];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -1213,6 +1320,9 @@
   ///
   /// Required.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [Step].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1225,7 +1335,8 @@
       core.String projectId,
       core.String historyId,
       core.String executionId,
-      core.String stepId) {
+      core.String stepId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1248,6 +1359,9 @@
     if (stepId == null) {
       throw new core.ArgumentError("Parameter stepId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -1293,6 +1407,9 @@
   ///
   /// [stepId] - A tool results step ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PerfMetricsSummary].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1305,7 +1422,8 @@
       core.String projectId,
       core.String historyId,
       core.String executionId,
-      core.String stepId) {
+      core.String stepId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1328,6 +1446,9 @@
     if (stepId == null) {
       throw new core.ArgumentError("Parameter stepId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -1378,6 +1499,9 @@
   ///
   /// [stepId] - A tool results step ID.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PerfSampleSeries].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1390,7 +1514,8 @@
       core.String projectId,
       core.String historyId,
       core.String executionId,
-      core.String stepId) {
+      core.String stepId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1413,6 +1538,9 @@
     if (stepId == null) {
       throw new core.ArgumentError("Parameter stepId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -1449,6 +1577,9 @@
   ///
   /// [sampleSeriesId] - A sample series id
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [PerfSampleSeries].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1461,7 +1592,8 @@
       core.String historyId,
       core.String executionId,
       core.String stepId,
-      core.String sampleSeriesId) {
+      core.String sampleSeriesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1484,6 +1616,9 @@
     if (sampleSeriesId == null) {
       throw new core.ArgumentError("Parameter sampleSeriesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -1526,6 +1661,9 @@
   /// [filter] - Specify one or more PerfMetricType values such as CPU to filter
   /// the result
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListPerfSampleSeriesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1535,7 +1673,7 @@
   /// this method will complete with the same error.
   async.Future<ListPerfSampleSeriesResponse> list(core.String projectId,
       core.String historyId, core.String executionId, core.String stepId,
-      {core.List<core.String> filter}) {
+      {core.List<core.String> filter, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1558,6 +1696,9 @@
     if (filter != null) {
       _queryParams["filter"] = filter;
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -1610,6 +1751,9 @@
   ///
   /// [sampleSeriesId] - A sample series id
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [BatchCreatePerfSamplesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1623,7 +1767,8 @@
       core.String historyId,
       core.String executionId,
       core.String stepId,
-      core.String sampleSeriesId) {
+      core.String sampleSeriesId,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1649,6 +1794,9 @@
     if (sampleSeriesId == null) {
       throw new core.ArgumentError("Parameter sampleSeriesId is required.");
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -1701,6 +1849,9 @@
   /// [pageToken] - Optional, the next_page_token returned in the previous
   /// response
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListPerfSamplesResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1715,7 +1866,8 @@
       core.String stepId,
       core.String sampleSeriesId,
       {core.int pageSize,
-      core.String pageToken}) {
+      core.String pageToken,
+      core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1744,6 +1896,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -1809,6 +1964,9 @@
   ///
   /// Optional.
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [ListStepThumbnailsResponse].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -1818,7 +1976,7 @@
   /// this method will complete with the same error.
   async.Future<ListStepThumbnailsResponse> list(core.String projectId,
       core.String historyId, core.String executionId, core.String stepId,
-      {core.int pageSize, core.String pageToken}) {
+      {core.int pageSize, core.String pageToken, core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -1844,6 +2002,9 @@
     if (pageToken != null) {
       _queryParams["pageToken"] = [pageToken];
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = commons.Escaper.ecapeVariable('$projectId') +
         '/histories/' +
@@ -2690,6 +2851,165 @@
   }
 }
 
+/// Graphics statistics for the App. The information is collected from 'adb
+/// shell dumpsys graphicsstats'. For more info see:
+/// https://developer.android.com/training/testing/performance.html Statistics
+/// will only be present for API 23+.
+class GraphicsStats {
+  /// Histogram of frame render times. There should be 154 buckets ranging from
+  /// [5ms, 6ms) to [4950ms, infinity)
+  core.List<GraphicsStatsBucket> buckets;
+
+  /// Total "high input latency" events.
+  core.String highInputLatencyCount;
+
+  /// Total frames with slow render time. Should be <= total_frames.
+  core.String jankyFrames;
+
+  /// Total "missed vsync" events.
+  core.String missedVsyncCount;
+
+  /// 50th percentile frame render time in milliseconds.
+  core.String p50Millis;
+
+  /// 90th percentile frame render time in milliseconds.
+  core.String p90Millis;
+
+  /// 95th percentile frame render time in milliseconds.
+  core.String p95Millis;
+
+  /// 99th percentile frame render time in milliseconds.
+  core.String p99Millis;
+
+  /// Total "slow bitmap upload" events.
+  core.String slowBitmapUploadCount;
+
+  /// Total "slow draw" events.
+  core.String slowDrawCount;
+
+  /// Total "slow UI thread" events.
+  core.String slowUiThreadCount;
+
+  /// Total frames rendered by package.
+  core.String totalFrames;
+
+  GraphicsStats();
+
+  GraphicsStats.fromJson(core.Map _json) {
+    if (_json.containsKey("buckets")) {
+      buckets = _json["buckets"]
+          .map((value) => new GraphicsStatsBucket.fromJson(value))
+          .toList();
+    }
+    if (_json.containsKey("highInputLatencyCount")) {
+      highInputLatencyCount = _json["highInputLatencyCount"];
+    }
+    if (_json.containsKey("jankyFrames")) {
+      jankyFrames = _json["jankyFrames"];
+    }
+    if (_json.containsKey("missedVsyncCount")) {
+      missedVsyncCount = _json["missedVsyncCount"];
+    }
+    if (_json.containsKey("p50Millis")) {
+      p50Millis = _json["p50Millis"];
+    }
+    if (_json.containsKey("p90Millis")) {
+      p90Millis = _json["p90Millis"];
+    }
+    if (_json.containsKey("p95Millis")) {
+      p95Millis = _json["p95Millis"];
+    }
+    if (_json.containsKey("p99Millis")) {
+      p99Millis = _json["p99Millis"];
+    }
+    if (_json.containsKey("slowBitmapUploadCount")) {
+      slowBitmapUploadCount = _json["slowBitmapUploadCount"];
+    }
+    if (_json.containsKey("slowDrawCount")) {
+      slowDrawCount = _json["slowDrawCount"];
+    }
+    if (_json.containsKey("slowUiThreadCount")) {
+      slowUiThreadCount = _json["slowUiThreadCount"];
+    }
+    if (_json.containsKey("totalFrames")) {
+      totalFrames = _json["totalFrames"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (buckets != null) {
+      _json["buckets"] = buckets.map((value) => (value).toJson()).toList();
+    }
+    if (highInputLatencyCount != null) {
+      _json["highInputLatencyCount"] = highInputLatencyCount;
+    }
+    if (jankyFrames != null) {
+      _json["jankyFrames"] = jankyFrames;
+    }
+    if (missedVsyncCount != null) {
+      _json["missedVsyncCount"] = missedVsyncCount;
+    }
+    if (p50Millis != null) {
+      _json["p50Millis"] = p50Millis;
+    }
+    if (p90Millis != null) {
+      _json["p90Millis"] = p90Millis;
+    }
+    if (p95Millis != null) {
+      _json["p95Millis"] = p95Millis;
+    }
+    if (p99Millis != null) {
+      _json["p99Millis"] = p99Millis;
+    }
+    if (slowBitmapUploadCount != null) {
+      _json["slowBitmapUploadCount"] = slowBitmapUploadCount;
+    }
+    if (slowDrawCount != null) {
+      _json["slowDrawCount"] = slowDrawCount;
+    }
+    if (slowUiThreadCount != null) {
+      _json["slowUiThreadCount"] = slowUiThreadCount;
+    }
+    if (totalFrames != null) {
+      _json["totalFrames"] = totalFrames;
+    }
+    return _json;
+  }
+}
+
+class GraphicsStatsBucket {
+  /// Number of frames in the bucket.
+  core.String frameCount;
+
+  /// Lower bound of render time in milliseconds.
+  core.String renderMillis;
+
+  GraphicsStatsBucket();
+
+  GraphicsStatsBucket.fromJson(core.Map _json) {
+    if (_json.containsKey("frameCount")) {
+      frameCount = _json["frameCount"];
+    }
+    if (_json.containsKey("renderMillis")) {
+      renderMillis = _json["renderMillis"];
+    }
+  }
+
+  core.Map<core.String, core.Object> toJson() {
+    final core.Map<core.String, core.Object> _json =
+        new core.Map<core.String, core.Object>();
+    if (frameCount != null) {
+      _json["frameCount"] = frameCount;
+    }
+    if (renderMillis != null) {
+      _json["renderMillis"] = renderMillis;
+    }
+    return _json;
+  }
+}
+
 /// A History represents a sorted list of Executions ordered by the
 /// start_timestamp_millis field (descending). It can be used to group all the
 /// Executions of a continuous build.
@@ -3241,6 +3561,10 @@
   /// A tool results execution ID.
   core.String executionId;
 
+  /// Graphics statistics for the entire run. Statistics are reset at the
+  /// beginning of the run and collected at the end of the run.
+  GraphicsStats graphicsStats;
+
   /// A tool results history ID.
   core.String historyId;
 
@@ -3265,6 +3589,9 @@
     if (_json.containsKey("executionId")) {
       executionId = _json["executionId"];
     }
+    if (_json.containsKey("graphicsStats")) {
+      graphicsStats = new GraphicsStats.fromJson(_json["graphicsStats"]);
+    }
     if (_json.containsKey("historyId")) {
       historyId = _json["historyId"];
     }
@@ -3291,6 +3618,9 @@
     if (executionId != null) {
       _json["executionId"] = executionId;
     }
+    if (graphicsStats != null) {
+      _json["graphicsStats"] = (graphicsStats).toJson();
+    }
     if (historyId != null) {
       _json["historyId"] = historyId;
     }
@@ -4284,9 +4614,11 @@
   /// Type of issue. Required.
   /// Possible string values are:
   /// - "anr"
+  /// - "compatibleWithOrchestrator"
   /// - "fatalException"
   /// - "nativeCrash"
   /// - "unspecifiedType"
+  /// - "unusedRoboDirective"
   core.String type;
 
   /// Warning message with additional details of the issue. Should always be a
diff --git a/generated/googleapis_beta/lib/videointelligence/v1beta1.dart b/generated/googleapis_beta/lib/videointelligence/v1beta1.dart
index 16cac05..36df75d 100644
--- a/generated/googleapis_beta/lib/videointelligence/v1beta1.dart
+++ b/generated/googleapis_beta/lib/videointelligence/v1beta1.dart
@@ -45,6 +45,9 @@
   ///
   /// Request parameters:
   ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
   /// Completes with a [GoogleLongrunningOperation].
   ///
   /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
@@ -53,7 +56,8 @@
   /// If the used [http.Client] completes with an error when making a REST call,
   /// this method will complete with the same error.
   async.Future<GoogleLongrunningOperation> annotate(
-      GoogleCloudVideointelligenceV1beta1AnnotateVideoRequest request) {
+      GoogleCloudVideointelligenceV1beta1AnnotateVideoRequest request,
+      {core.String $fields}) {
     var _url = null;
     var _queryParams = new core.Map();
     var _uploadMedia = null;
@@ -64,6 +68,9 @@
     if (request != null) {
       _body = convert.JSON.encode((request).toJson());
     }
+    if ($fields != null) {
+      _queryParams["fields"] = [$fields];
+    }
 
     _url = 'v1beta1/videos:annotate';
 
diff --git a/generated/googleapis_beta/pubspec.yaml b/generated/googleapis_beta/pubspec.yaml
index 68090ea..3fd7c30 100644
--- a/generated/googleapis_beta/pubspec.yaml
+++ b/generated/googleapis_beta/pubspec.yaml
@@ -1,5 +1,5 @@
 name: googleapis_beta
-version: 0.40.0
+version: 0.40.1
 author: Dart Team <misc@dartlang.org>
 description: "Auto-generated client libraries for accessing the following APIs:adexchangebuyer2:v2beta1, appengine:v1beta, appengine:v1beta4, appengine:v1beta5, clouderrorreporting:v1beta1, cloudmonitoring:v2beta2, cloudresourcemanager:v1beta1, cloudtasks:v2beta2, clouduseraccounts:beta, dataflow:v1b3, dlp:v2beta1, dns:v2beta1, firestore:v1beta1, language:v1beta1, language:v1beta2, logging:v2beta1, oslogin:v1alpha, oslogin:v1beta, proximitybeacon:v1beta1, pubsub:v1beta2, replicapool:v1beta2, replicapoolupdater:v1beta1, resourceviews:v1beta1, resourceviews:v1beta2, runtimeconfig:v1beta1, speech:v1beta1, sqladmin:v1beta3, sqladmin:v1beta4, taskqueue:v1beta2, toolresults:v1beta3, videointelligence:v1beta1"
 homepage: http://www.dartlang.org/googleapis/
diff --git a/generated/googleapis_beta/test/adexchangebuyer2/v2beta1_test.dart b/generated/googleapis_beta/test/adexchangebuyer2/v2beta1_test.dart
index d9a59e6..4d2d033 100644
--- a/generated/googleapis_beta/test/adexchangebuyer2/v2beta1_test.dart
+++ b/generated/googleapis_beta/test/adexchangebuyer2/v2beta1_test.dart
@@ -90,14 +90,14 @@
   buildCounterAddDealAssociationRequest--;
 }
 
-buildUnnamed3749() {
+buildUnnamed3767() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3749(core.List<core.String> o) {
+checkUnnamed3767(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -108,7 +108,7 @@
   var o = new api.AppContext();
   buildCounterAppContext++;
   if (buildCounterAppContext < 3) {
-    o.appTypes = buildUnnamed3749();
+    o.appTypes = buildUnnamed3767();
   }
   buildCounterAppContext--;
   return o;
@@ -117,19 +117,19 @@
 checkAppContext(api.AppContext o) {
   buildCounterAppContext++;
   if (buildCounterAppContext < 3) {
-    checkUnnamed3749(o.appTypes);
+    checkUnnamed3767(o.appTypes);
   }
   buildCounterAppContext--;
 }
 
-buildUnnamed3750() {
+buildUnnamed3768() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3750(core.List<core.String> o) {
+checkUnnamed3768(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -140,7 +140,7 @@
   var o = new api.AuctionContext();
   buildCounterAuctionContext++;
   if (buildCounterAuctionContext < 3) {
-    o.auctionTypes = buildUnnamed3750();
+    o.auctionTypes = buildUnnamed3768();
   }
   buildCounterAuctionContext--;
   return o;
@@ -149,7 +149,7 @@
 checkAuctionContext(api.AuctionContext o) {
   buildCounterAuctionContext++;
   if (buildCounterAuctionContext < 3) {
-    checkUnnamed3750(o.auctionTypes);
+    checkUnnamed3768(o.auctionTypes);
   }
   buildCounterAuctionContext--;
 }
@@ -312,27 +312,27 @@
   buildCounterClientUserInvitation--;
 }
 
-buildUnnamed3751() {
+buildUnnamed3769() {
   var o = new core.List<api.ServingContext>();
   o.add(buildServingContext());
   o.add(buildServingContext());
   return o;
 }
 
-checkUnnamed3751(core.List<api.ServingContext> o) {
+checkUnnamed3769(core.List<api.ServingContext> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkServingContext(o[0]);
   checkServingContext(o[1]);
 }
 
-buildUnnamed3752() {
+buildUnnamed3770() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3752(core.List<core.String> o) {
+checkUnnamed3770(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -343,8 +343,8 @@
   var o = new api.Correction();
   buildCounterCorrection++;
   if (buildCounterCorrection < 3) {
-    o.contexts = buildUnnamed3751();
-    o.details = buildUnnamed3752();
+    o.contexts = buildUnnamed3769();
+    o.details = buildUnnamed3770();
     o.type = "foo";
   }
   buildCounterCorrection--;
@@ -354,164 +354,164 @@
 checkCorrection(api.Correction o) {
   buildCounterCorrection++;
   if (buildCounterCorrection < 3) {
-    checkUnnamed3751(o.contexts);
-    checkUnnamed3752(o.details);
+    checkUnnamed3769(o.contexts);
+    checkUnnamed3770(o.details);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterCorrection--;
 }
 
-buildUnnamed3753() {
+buildUnnamed3771() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3753(core.List<core.String> o) {
+checkUnnamed3771(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3754() {
+buildUnnamed3772() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3754(core.List<core.String> o) {
+checkUnnamed3772(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3755() {
+buildUnnamed3773() {
   var o = new core.List<api.Correction>();
   o.add(buildCorrection());
   o.add(buildCorrection());
   return o;
 }
 
-checkUnnamed3755(core.List<api.Correction> o) {
+checkUnnamed3773(core.List<api.Correction> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCorrection(o[0]);
   checkCorrection(o[1]);
 }
 
-buildUnnamed3756() {
+buildUnnamed3774() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3756(core.List<core.String> o) {
+checkUnnamed3774(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3757() {
+buildUnnamed3775() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3757(core.List<core.String> o) {
+checkUnnamed3775(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3758() {
+buildUnnamed3776() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3758(core.List<core.String> o) {
+checkUnnamed3776(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3759() {
+buildUnnamed3777() {
   var o = new core.List<core.int>();
   o.add(42);
   o.add(42);
   return o;
 }
 
-checkUnnamed3759(core.List<core.int> o) {
+checkUnnamed3777(core.List<core.int> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42));
   unittest.expect(o[1], unittest.equals(42));
 }
 
-buildUnnamed3760() {
+buildUnnamed3778() {
   var o = new core.List<core.int>();
   o.add(42);
   o.add(42);
   return o;
 }
 
-checkUnnamed3760(core.List<core.int> o) {
+checkUnnamed3778(core.List<core.int> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42));
   unittest.expect(o[1], unittest.equals(42));
 }
 
-buildUnnamed3761() {
+buildUnnamed3779() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3761(core.List<core.String> o) {
+checkUnnamed3779(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3762() {
+buildUnnamed3780() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3762(core.List<core.String> o) {
+checkUnnamed3780(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3763() {
+buildUnnamed3781() {
   var o = new core.List<api.ServingRestriction>();
   o.add(buildServingRestriction());
   o.add(buildServingRestriction());
   return o;
 }
 
-checkUnnamed3763(core.List<api.ServingRestriction> o) {
+checkUnnamed3781(core.List<api.ServingRestriction> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkServingRestriction(o[0]);
   checkServingRestriction(o[1]);
 }
 
-buildUnnamed3764() {
+buildUnnamed3782() {
   var o = new core.List<core.int>();
   o.add(42);
   o.add(42);
   return o;
 }
 
-checkUnnamed3764(core.List<core.int> o) {
+checkUnnamed3782(core.List<core.int> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42));
   unittest.expect(o[1], unittest.equals(42));
@@ -527,24 +527,24 @@
     o.advertiserName = "foo";
     o.agencyId = "foo";
     o.apiUpdateTime = "foo";
-    o.attributes = buildUnnamed3753();
-    o.clickThroughUrls = buildUnnamed3754();
-    o.corrections = buildUnnamed3755();
+    o.attributes = buildUnnamed3771();
+    o.clickThroughUrls = buildUnnamed3772();
+    o.corrections = buildUnnamed3773();
     o.creativeId = "foo";
     o.dealsStatus = "foo";
-    o.detectedAdvertiserIds = buildUnnamed3756();
-    o.detectedDomains = buildUnnamed3757();
-    o.detectedLanguages = buildUnnamed3758();
-    o.detectedProductCategories = buildUnnamed3759();
-    o.detectedSensitiveCategories = buildUnnamed3760();
+    o.detectedAdvertiserIds = buildUnnamed3774();
+    o.detectedDomains = buildUnnamed3775();
+    o.detectedLanguages = buildUnnamed3776();
+    o.detectedProductCategories = buildUnnamed3777();
+    o.detectedSensitiveCategories = buildUnnamed3778();
     o.filteringStats = buildFilteringStats();
     o.html = buildHtmlContent();
-    o.impressionTrackingUrls = buildUnnamed3761();
+    o.impressionTrackingUrls = buildUnnamed3779();
     o.native = buildNativeContent();
     o.openAuctionStatus = "foo";
-    o.restrictedCategories = buildUnnamed3762();
-    o.servingRestrictions = buildUnnamed3763();
-    o.vendorIds = buildUnnamed3764();
+    o.restrictedCategories = buildUnnamed3780();
+    o.servingRestrictions = buildUnnamed3781();
+    o.vendorIds = buildUnnamed3782();
     o.version = 42;
     o.video = buildVideoContent();
   }
@@ -560,24 +560,24 @@
     unittest.expect(o.advertiserName, unittest.equals('foo'));
     unittest.expect(o.agencyId, unittest.equals('foo'));
     unittest.expect(o.apiUpdateTime, unittest.equals('foo'));
-    checkUnnamed3753(o.attributes);
-    checkUnnamed3754(o.clickThroughUrls);
-    checkUnnamed3755(o.corrections);
+    checkUnnamed3771(o.attributes);
+    checkUnnamed3772(o.clickThroughUrls);
+    checkUnnamed3773(o.corrections);
     unittest.expect(o.creativeId, unittest.equals('foo'));
     unittest.expect(o.dealsStatus, unittest.equals('foo'));
-    checkUnnamed3756(o.detectedAdvertiserIds);
-    checkUnnamed3757(o.detectedDomains);
-    checkUnnamed3758(o.detectedLanguages);
-    checkUnnamed3759(o.detectedProductCategories);
-    checkUnnamed3760(o.detectedSensitiveCategories);
+    checkUnnamed3774(o.detectedAdvertiserIds);
+    checkUnnamed3775(o.detectedDomains);
+    checkUnnamed3776(o.detectedLanguages);
+    checkUnnamed3777(o.detectedProductCategories);
+    checkUnnamed3778(o.detectedSensitiveCategories);
     checkFilteringStats(o.filteringStats);
     checkHtmlContent(o.html);
-    checkUnnamed3761(o.impressionTrackingUrls);
+    checkUnnamed3779(o.impressionTrackingUrls);
     checkNativeContent(o.native);
     unittest.expect(o.openAuctionStatus, unittest.equals('foo'));
-    checkUnnamed3762(o.restrictedCategories);
-    checkUnnamed3763(o.servingRestrictions);
-    checkUnnamed3764(o.vendorIds);
+    checkUnnamed3780(o.restrictedCategories);
+    checkUnnamed3781(o.servingRestrictions);
+    checkUnnamed3782(o.vendorIds);
     unittest.expect(o.version, unittest.equals(42));
     checkVideoContent(o.video);
   }
@@ -653,14 +653,14 @@
   buildCounterDate--;
 }
 
-buildUnnamed3765() {
+buildUnnamed3783() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3765(core.List<core.String> o) {
+checkUnnamed3783(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -671,7 +671,7 @@
   var o = new api.Disapproval();
   buildCounterDisapproval++;
   if (buildCounterDisapproval < 3) {
-    o.details = buildUnnamed3765();
+    o.details = buildUnnamed3783();
     o.reason = "foo";
   }
   buildCounterDisapproval--;
@@ -681,7 +681,7 @@
 checkDisapproval(api.Disapproval o) {
   buildCounterDisapproval++;
   if (buildCounterDisapproval < 3) {
-    checkUnnamed3765(o.details);
+    checkUnnamed3783(o.details);
     unittest.expect(o.reason, unittest.equals('foo'));
   }
   buildCounterDisapproval--;
@@ -702,27 +702,27 @@
   buildCounterEmpty--;
 }
 
-buildUnnamed3766() {
+buildUnnamed3784() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3766(core.List<core.String> o) {
+checkUnnamed3784(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3767() {
+buildUnnamed3785() {
   var o = new core.List<core.int>();
   o.add(42);
   o.add(42);
   return o;
 }
 
-checkUnnamed3767(core.List<core.int> o) {
+checkUnnamed3785(core.List<core.int> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42));
   unittest.expect(o[1], unittest.equals(42));
@@ -740,11 +740,12 @@
     o.environment = "foo";
     o.filterSetId = "foo";
     o.format = "foo";
+    o.name = "foo";
     o.ownerAccountId = "foo";
-    o.platforms = buildUnnamed3766();
+    o.platforms = buildUnnamed3784();
     o.realtimeTimeRange = buildRealtimeTimeRange();
     o.relativeDateRange = buildRelativeDateRange();
-    o.sellerNetworkIds = buildUnnamed3767();
+    o.sellerNetworkIds = buildUnnamed3785();
     o.timeSeriesGranularity = "foo";
   }
   buildCounterFilterSet--;
@@ -761,11 +762,12 @@
     unittest.expect(o.environment, unittest.equals('foo'));
     unittest.expect(o.filterSetId, unittest.equals('foo'));
     unittest.expect(o.format, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.ownerAccountId, unittest.equals('foo'));
-    checkUnnamed3766(o.platforms);
+    checkUnnamed3784(o.platforms);
     checkRealtimeTimeRange(o.realtimeTimeRange);
     checkRelativeDateRange(o.relativeDateRange);
-    checkUnnamed3767(o.sellerNetworkIds);
+    checkUnnamed3785(o.sellerNetworkIds);
     unittest.expect(o.timeSeriesGranularity, unittest.equals('foo'));
   }
   buildCounterFilterSet--;
@@ -817,14 +819,14 @@
   buildCounterFilteredBidDetailRow--;
 }
 
-buildUnnamed3768() {
+buildUnnamed3786() {
   var o = new core.List<api.Reason>();
   o.add(buildReason());
   o.add(buildReason());
   return o;
 }
 
-checkUnnamed3768(core.List<api.Reason> o) {
+checkUnnamed3786(core.List<api.Reason> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReason(o[0]);
   checkReason(o[1]);
@@ -836,7 +838,7 @@
   buildCounterFilteringStats++;
   if (buildCounterFilteringStats < 3) {
     o.date = buildDate();
-    o.reasons = buildUnnamed3768();
+    o.reasons = buildUnnamed3786();
   }
   buildCounterFilteringStats--;
   return o;
@@ -846,7 +848,7 @@
   buildCounterFilteringStats++;
   if (buildCounterFilteringStats < 3) {
     checkDate(o.date);
-    checkUnnamed3768(o.reasons);
+    checkUnnamed3786(o.reasons);
   }
   buildCounterFilteringStats--;
 }
@@ -926,14 +928,14 @@
   buildCounterImpressionMetricsRow--;
 }
 
-buildUnnamed3769() {
+buildUnnamed3787() {
   var o = new core.List<api.BidMetricsRow>();
   o.add(buildBidMetricsRow());
   o.add(buildBidMetricsRow());
   return o;
 }
 
-checkUnnamed3769(core.List<api.BidMetricsRow> o) {
+checkUnnamed3787(core.List<api.BidMetricsRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBidMetricsRow(o[0]);
   checkBidMetricsRow(o[1]);
@@ -944,7 +946,7 @@
   var o = new api.ListBidMetricsResponse();
   buildCounterListBidMetricsResponse++;
   if (buildCounterListBidMetricsResponse < 3) {
-    o.bidMetricsRows = buildUnnamed3769();
+    o.bidMetricsRows = buildUnnamed3787();
     o.nextPageToken = "foo";
   }
   buildCounterListBidMetricsResponse--;
@@ -954,20 +956,20 @@
 checkListBidMetricsResponse(api.ListBidMetricsResponse o) {
   buildCounterListBidMetricsResponse++;
   if (buildCounterListBidMetricsResponse < 3) {
-    checkUnnamed3769(o.bidMetricsRows);
+    checkUnnamed3787(o.bidMetricsRows);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListBidMetricsResponse--;
 }
 
-buildUnnamed3770() {
+buildUnnamed3788() {
   var o = new core.List<api.CalloutStatusRow>();
   o.add(buildCalloutStatusRow());
   o.add(buildCalloutStatusRow());
   return o;
 }
 
-checkUnnamed3770(core.List<api.CalloutStatusRow> o) {
+checkUnnamed3788(core.List<api.CalloutStatusRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCalloutStatusRow(o[0]);
   checkCalloutStatusRow(o[1]);
@@ -978,7 +980,7 @@
   var o = new api.ListBidResponseErrorsResponse();
   buildCounterListBidResponseErrorsResponse++;
   if (buildCounterListBidResponseErrorsResponse < 3) {
-    o.calloutStatusRows = buildUnnamed3770();
+    o.calloutStatusRows = buildUnnamed3788();
     o.nextPageToken = "foo";
   }
   buildCounterListBidResponseErrorsResponse--;
@@ -988,20 +990,20 @@
 checkListBidResponseErrorsResponse(api.ListBidResponseErrorsResponse o) {
   buildCounterListBidResponseErrorsResponse++;
   if (buildCounterListBidResponseErrorsResponse < 3) {
-    checkUnnamed3770(o.calloutStatusRows);
+    checkUnnamed3788(o.calloutStatusRows);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListBidResponseErrorsResponse--;
 }
 
-buildUnnamed3771() {
+buildUnnamed3789() {
   var o = new core.List<api.BidResponseWithoutBidsStatusRow>();
   o.add(buildBidResponseWithoutBidsStatusRow());
   o.add(buildBidResponseWithoutBidsStatusRow());
   return o;
 }
 
-checkUnnamed3771(core.List<api.BidResponseWithoutBidsStatusRow> o) {
+checkUnnamed3789(core.List<api.BidResponseWithoutBidsStatusRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBidResponseWithoutBidsStatusRow(o[0]);
   checkBidResponseWithoutBidsStatusRow(o[1]);
@@ -1012,7 +1014,7 @@
   var o = new api.ListBidResponsesWithoutBidsResponse();
   buildCounterListBidResponsesWithoutBidsResponse++;
   if (buildCounterListBidResponsesWithoutBidsResponse < 3) {
-    o.bidResponseWithoutBidsStatusRows = buildUnnamed3771();
+    o.bidResponseWithoutBidsStatusRows = buildUnnamed3789();
     o.nextPageToken = "foo";
   }
   buildCounterListBidResponsesWithoutBidsResponse--;
@@ -1023,20 +1025,20 @@
     api.ListBidResponsesWithoutBidsResponse o) {
   buildCounterListBidResponsesWithoutBidsResponse++;
   if (buildCounterListBidResponsesWithoutBidsResponse < 3) {
-    checkUnnamed3771(o.bidResponseWithoutBidsStatusRows);
+    checkUnnamed3789(o.bidResponseWithoutBidsStatusRows);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListBidResponsesWithoutBidsResponse--;
 }
 
-buildUnnamed3772() {
+buildUnnamed3790() {
   var o = new core.List<api.ClientUserInvitation>();
   o.add(buildClientUserInvitation());
   o.add(buildClientUserInvitation());
   return o;
 }
 
-checkUnnamed3772(core.List<api.ClientUserInvitation> o) {
+checkUnnamed3790(core.List<api.ClientUserInvitation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkClientUserInvitation(o[0]);
   checkClientUserInvitation(o[1]);
@@ -1047,7 +1049,7 @@
   var o = new api.ListClientUserInvitationsResponse();
   buildCounterListClientUserInvitationsResponse++;
   if (buildCounterListClientUserInvitationsResponse < 3) {
-    o.invitations = buildUnnamed3772();
+    o.invitations = buildUnnamed3790();
     o.nextPageToken = "foo";
   }
   buildCounterListClientUserInvitationsResponse--;
@@ -1058,20 +1060,20 @@
     api.ListClientUserInvitationsResponse o) {
   buildCounterListClientUserInvitationsResponse++;
   if (buildCounterListClientUserInvitationsResponse < 3) {
-    checkUnnamed3772(o.invitations);
+    checkUnnamed3790(o.invitations);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListClientUserInvitationsResponse--;
 }
 
-buildUnnamed3773() {
+buildUnnamed3791() {
   var o = new core.List<api.ClientUser>();
   o.add(buildClientUser());
   o.add(buildClientUser());
   return o;
 }
 
-checkUnnamed3773(core.List<api.ClientUser> o) {
+checkUnnamed3791(core.List<api.ClientUser> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkClientUser(o[0]);
   checkClientUser(o[1]);
@@ -1083,7 +1085,7 @@
   buildCounterListClientUsersResponse++;
   if (buildCounterListClientUsersResponse < 3) {
     o.nextPageToken = "foo";
-    o.users = buildUnnamed3773();
+    o.users = buildUnnamed3791();
   }
   buildCounterListClientUsersResponse--;
   return o;
@@ -1093,19 +1095,19 @@
   buildCounterListClientUsersResponse++;
   if (buildCounterListClientUsersResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3773(o.users);
+    checkUnnamed3791(o.users);
   }
   buildCounterListClientUsersResponse--;
 }
 
-buildUnnamed3774() {
+buildUnnamed3792() {
   var o = new core.List<api.Client>();
   o.add(buildClient());
   o.add(buildClient());
   return o;
 }
 
-checkUnnamed3774(core.List<api.Client> o) {
+checkUnnamed3792(core.List<api.Client> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkClient(o[0]);
   checkClient(o[1]);
@@ -1116,7 +1118,7 @@
   var o = new api.ListClientsResponse();
   buildCounterListClientsResponse++;
   if (buildCounterListClientsResponse < 3) {
-    o.clients = buildUnnamed3774();
+    o.clients = buildUnnamed3792();
     o.nextPageToken = "foo";
   }
   buildCounterListClientsResponse--;
@@ -1126,20 +1128,20 @@
 checkListClientsResponse(api.ListClientsResponse o) {
   buildCounterListClientsResponse++;
   if (buildCounterListClientsResponse < 3) {
-    checkUnnamed3774(o.clients);
+    checkUnnamed3792(o.clients);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListClientsResponse--;
 }
 
-buildUnnamed3775() {
+buildUnnamed3793() {
   var o = new core.List<api.FilteredBidCreativeRow>();
   o.add(buildFilteredBidCreativeRow());
   o.add(buildFilteredBidCreativeRow());
   return o;
 }
 
-checkUnnamed3775(core.List<api.FilteredBidCreativeRow> o) {
+checkUnnamed3793(core.List<api.FilteredBidCreativeRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFilteredBidCreativeRow(o[0]);
   checkFilteredBidCreativeRow(o[1]);
@@ -1150,7 +1152,7 @@
   var o = new api.ListCreativeStatusBreakdownByCreativeResponse();
   buildCounterListCreativeStatusBreakdownByCreativeResponse++;
   if (buildCounterListCreativeStatusBreakdownByCreativeResponse < 3) {
-    o.filteredBidCreativeRows = buildUnnamed3775();
+    o.filteredBidCreativeRows = buildUnnamed3793();
     o.nextPageToken = "foo";
   }
   buildCounterListCreativeStatusBreakdownByCreativeResponse--;
@@ -1161,20 +1163,20 @@
     api.ListCreativeStatusBreakdownByCreativeResponse o) {
   buildCounterListCreativeStatusBreakdownByCreativeResponse++;
   if (buildCounterListCreativeStatusBreakdownByCreativeResponse < 3) {
-    checkUnnamed3775(o.filteredBidCreativeRows);
+    checkUnnamed3793(o.filteredBidCreativeRows);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListCreativeStatusBreakdownByCreativeResponse--;
 }
 
-buildUnnamed3776() {
+buildUnnamed3794() {
   var o = new core.List<api.FilteredBidDetailRow>();
   o.add(buildFilteredBidDetailRow());
   o.add(buildFilteredBidDetailRow());
   return o;
 }
 
-checkUnnamed3776(core.List<api.FilteredBidDetailRow> o) {
+checkUnnamed3794(core.List<api.FilteredBidDetailRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFilteredBidDetailRow(o[0]);
   checkFilteredBidDetailRow(o[1]);
@@ -1186,7 +1188,7 @@
   buildCounterListCreativeStatusBreakdownByDetailResponse++;
   if (buildCounterListCreativeStatusBreakdownByDetailResponse < 3) {
     o.detailType = "foo";
-    o.filteredBidDetailRows = buildUnnamed3776();
+    o.filteredBidDetailRows = buildUnnamed3794();
     o.nextPageToken = "foo";
   }
   buildCounterListCreativeStatusBreakdownByDetailResponse--;
@@ -1198,20 +1200,20 @@
   buildCounterListCreativeStatusBreakdownByDetailResponse++;
   if (buildCounterListCreativeStatusBreakdownByDetailResponse < 3) {
     unittest.expect(o.detailType, unittest.equals('foo'));
-    checkUnnamed3776(o.filteredBidDetailRows);
+    checkUnnamed3794(o.filteredBidDetailRows);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListCreativeStatusBreakdownByDetailResponse--;
 }
 
-buildUnnamed3777() {
+buildUnnamed3795() {
   var o = new core.List<api.Creative>();
   o.add(buildCreative());
   o.add(buildCreative());
   return o;
 }
 
-checkUnnamed3777(core.List<api.Creative> o) {
+checkUnnamed3795(core.List<api.Creative> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCreative(o[0]);
   checkCreative(o[1]);
@@ -1222,7 +1224,7 @@
   var o = new api.ListCreativesResponse();
   buildCounterListCreativesResponse++;
   if (buildCounterListCreativesResponse < 3) {
-    o.creatives = buildUnnamed3777();
+    o.creatives = buildUnnamed3795();
     o.nextPageToken = "foo";
   }
   buildCounterListCreativesResponse--;
@@ -1232,20 +1234,20 @@
 checkListCreativesResponse(api.ListCreativesResponse o) {
   buildCounterListCreativesResponse++;
   if (buildCounterListCreativesResponse < 3) {
-    checkUnnamed3777(o.creatives);
+    checkUnnamed3795(o.creatives);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListCreativesResponse--;
 }
 
-buildUnnamed3778() {
+buildUnnamed3796() {
   var o = new core.List<api.CreativeDealAssociation>();
   o.add(buildCreativeDealAssociation());
   o.add(buildCreativeDealAssociation());
   return o;
 }
 
-checkUnnamed3778(core.List<api.CreativeDealAssociation> o) {
+checkUnnamed3796(core.List<api.CreativeDealAssociation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCreativeDealAssociation(o[0]);
   checkCreativeDealAssociation(o[1]);
@@ -1256,7 +1258,7 @@
   var o = new api.ListDealAssociationsResponse();
   buildCounterListDealAssociationsResponse++;
   if (buildCounterListDealAssociationsResponse < 3) {
-    o.associations = buildUnnamed3778();
+    o.associations = buildUnnamed3796();
     o.nextPageToken = "foo";
   }
   buildCounterListDealAssociationsResponse--;
@@ -1266,20 +1268,20 @@
 checkListDealAssociationsResponse(api.ListDealAssociationsResponse o) {
   buildCounterListDealAssociationsResponse++;
   if (buildCounterListDealAssociationsResponse < 3) {
-    checkUnnamed3778(o.associations);
+    checkUnnamed3796(o.associations);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListDealAssociationsResponse--;
 }
 
-buildUnnamed3779() {
+buildUnnamed3797() {
   var o = new core.List<api.FilterSet>();
   o.add(buildFilterSet());
   o.add(buildFilterSet());
   return o;
 }
 
-checkUnnamed3779(core.List<api.FilterSet> o) {
+checkUnnamed3797(core.List<api.FilterSet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFilterSet(o[0]);
   checkFilterSet(o[1]);
@@ -1290,7 +1292,7 @@
   var o = new api.ListFilterSetsResponse();
   buildCounterListFilterSetsResponse++;
   if (buildCounterListFilterSetsResponse < 3) {
-    o.filterSets = buildUnnamed3779();
+    o.filterSets = buildUnnamed3797();
     o.nextPageToken = "foo";
   }
   buildCounterListFilterSetsResponse--;
@@ -1300,20 +1302,20 @@
 checkListFilterSetsResponse(api.ListFilterSetsResponse o) {
   buildCounterListFilterSetsResponse++;
   if (buildCounterListFilterSetsResponse < 3) {
-    checkUnnamed3779(o.filterSets);
+    checkUnnamed3797(o.filterSets);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListFilterSetsResponse--;
 }
 
-buildUnnamed3780() {
+buildUnnamed3798() {
   var o = new core.List<api.CalloutStatusRow>();
   o.add(buildCalloutStatusRow());
   o.add(buildCalloutStatusRow());
   return o;
 }
 
-checkUnnamed3780(core.List<api.CalloutStatusRow> o) {
+checkUnnamed3798(core.List<api.CalloutStatusRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCalloutStatusRow(o[0]);
   checkCalloutStatusRow(o[1]);
@@ -1324,7 +1326,7 @@
   var o = new api.ListFilteredBidRequestsResponse();
   buildCounterListFilteredBidRequestsResponse++;
   if (buildCounterListFilteredBidRequestsResponse < 3) {
-    o.calloutStatusRows = buildUnnamed3780();
+    o.calloutStatusRows = buildUnnamed3798();
     o.nextPageToken = "foo";
   }
   buildCounterListFilteredBidRequestsResponse--;
@@ -1334,20 +1336,20 @@
 checkListFilteredBidRequestsResponse(api.ListFilteredBidRequestsResponse o) {
   buildCounterListFilteredBidRequestsResponse++;
   if (buildCounterListFilteredBidRequestsResponse < 3) {
-    checkUnnamed3780(o.calloutStatusRows);
+    checkUnnamed3798(o.calloutStatusRows);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListFilteredBidRequestsResponse--;
 }
 
-buildUnnamed3781() {
+buildUnnamed3799() {
   var o = new core.List<api.CreativeStatusRow>();
   o.add(buildCreativeStatusRow());
   o.add(buildCreativeStatusRow());
   return o;
 }
 
-checkUnnamed3781(core.List<api.CreativeStatusRow> o) {
+checkUnnamed3799(core.List<api.CreativeStatusRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCreativeStatusRow(o[0]);
   checkCreativeStatusRow(o[1]);
@@ -1358,7 +1360,7 @@
   var o = new api.ListFilteredBidsResponse();
   buildCounterListFilteredBidsResponse++;
   if (buildCounterListFilteredBidsResponse < 3) {
-    o.creativeStatusRows = buildUnnamed3781();
+    o.creativeStatusRows = buildUnnamed3799();
     o.nextPageToken = "foo";
   }
   buildCounterListFilteredBidsResponse--;
@@ -1368,20 +1370,20 @@
 checkListFilteredBidsResponse(api.ListFilteredBidsResponse o) {
   buildCounterListFilteredBidsResponse++;
   if (buildCounterListFilteredBidsResponse < 3) {
-    checkUnnamed3781(o.creativeStatusRows);
+    checkUnnamed3799(o.creativeStatusRows);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListFilteredBidsResponse--;
 }
 
-buildUnnamed3782() {
+buildUnnamed3800() {
   var o = new core.List<api.ImpressionMetricsRow>();
   o.add(buildImpressionMetricsRow());
   o.add(buildImpressionMetricsRow());
   return o;
 }
 
-checkUnnamed3782(core.List<api.ImpressionMetricsRow> o) {
+checkUnnamed3800(core.List<api.ImpressionMetricsRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkImpressionMetricsRow(o[0]);
   checkImpressionMetricsRow(o[1]);
@@ -1392,7 +1394,7 @@
   var o = new api.ListImpressionMetricsResponse();
   buildCounterListImpressionMetricsResponse++;
   if (buildCounterListImpressionMetricsResponse < 3) {
-    o.impressionMetricsRows = buildUnnamed3782();
+    o.impressionMetricsRows = buildUnnamed3800();
     o.nextPageToken = "foo";
   }
   buildCounterListImpressionMetricsResponse--;
@@ -1402,20 +1404,20 @@
 checkListImpressionMetricsResponse(api.ListImpressionMetricsResponse o) {
   buildCounterListImpressionMetricsResponse++;
   if (buildCounterListImpressionMetricsResponse < 3) {
-    checkUnnamed3782(o.impressionMetricsRows);
+    checkUnnamed3800(o.impressionMetricsRows);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListImpressionMetricsResponse--;
 }
 
-buildUnnamed3783() {
+buildUnnamed3801() {
   var o = new core.List<api.CreativeStatusRow>();
   o.add(buildCreativeStatusRow());
   o.add(buildCreativeStatusRow());
   return o;
 }
 
-checkUnnamed3783(core.List<api.CreativeStatusRow> o) {
+checkUnnamed3801(core.List<api.CreativeStatusRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCreativeStatusRow(o[0]);
   checkCreativeStatusRow(o[1]);
@@ -1426,7 +1428,7 @@
   var o = new api.ListLosingBidsResponse();
   buildCounterListLosingBidsResponse++;
   if (buildCounterListLosingBidsResponse < 3) {
-    o.creativeStatusRows = buildUnnamed3783();
+    o.creativeStatusRows = buildUnnamed3801();
     o.nextPageToken = "foo";
   }
   buildCounterListLosingBidsResponse--;
@@ -1436,20 +1438,20 @@
 checkListLosingBidsResponse(api.ListLosingBidsResponse o) {
   buildCounterListLosingBidsResponse++;
   if (buildCounterListLosingBidsResponse < 3) {
-    checkUnnamed3783(o.creativeStatusRows);
+    checkUnnamed3801(o.creativeStatusRows);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListLosingBidsResponse--;
 }
 
-buildUnnamed3784() {
+buildUnnamed3802() {
   var o = new core.List<api.NonBillableWinningBidStatusRow>();
   o.add(buildNonBillableWinningBidStatusRow());
   o.add(buildNonBillableWinningBidStatusRow());
   return o;
 }
 
-checkUnnamed3784(core.List<api.NonBillableWinningBidStatusRow> o) {
+checkUnnamed3802(core.List<api.NonBillableWinningBidStatusRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkNonBillableWinningBidStatusRow(o[0]);
   checkNonBillableWinningBidStatusRow(o[1]);
@@ -1461,7 +1463,7 @@
   buildCounterListNonBillableWinningBidsResponse++;
   if (buildCounterListNonBillableWinningBidsResponse < 3) {
     o.nextPageToken = "foo";
-    o.nonBillableWinningBidStatusRows = buildUnnamed3784();
+    o.nonBillableWinningBidStatusRows = buildUnnamed3802();
   }
   buildCounterListNonBillableWinningBidsResponse--;
   return o;
@@ -1472,19 +1474,19 @@
   buildCounterListNonBillableWinningBidsResponse++;
   if (buildCounterListNonBillableWinningBidsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3784(o.nonBillableWinningBidStatusRows);
+    checkUnnamed3802(o.nonBillableWinningBidStatusRows);
   }
   buildCounterListNonBillableWinningBidsResponse--;
 }
 
-buildUnnamed3785() {
+buildUnnamed3803() {
   var o = new core.List<core.int>();
   o.add(42);
   o.add(42);
   return o;
 }
 
-checkUnnamed3785(core.List<core.int> o) {
+checkUnnamed3803(core.List<core.int> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42));
   unittest.expect(o[1], unittest.equals(42));
@@ -1495,7 +1497,7 @@
   var o = new api.LocationContext();
   buildCounterLocationContext++;
   if (buildCounterLocationContext < 3) {
-    o.geoCriteriaIds = buildUnnamed3785();
+    o.geoCriteriaIds = buildUnnamed3803();
   }
   buildCounterLocationContext--;
   return o;
@@ -1504,7 +1506,7 @@
 checkLocationContext(api.LocationContext o) {
   buildCounterLocationContext++;
   if (buildCounterLocationContext < 3) {
-    checkUnnamed3785(o.geoCriteriaIds);
+    checkUnnamed3803(o.geoCriteriaIds);
   }
   buildCounterLocationContext--;
 }
@@ -1596,14 +1598,14 @@
   buildCounterNonBillableWinningBidStatusRow--;
 }
 
-buildUnnamed3786() {
+buildUnnamed3804() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3786(core.List<core.String> o) {
+checkUnnamed3804(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1614,7 +1616,7 @@
   var o = new api.PlatformContext();
   buildCounterPlatformContext++;
   if (buildCounterPlatformContext < 3) {
-    o.platforms = buildUnnamed3786();
+    o.platforms = buildUnnamed3804();
   }
   buildCounterPlatformContext--;
   return o;
@@ -1623,7 +1625,7 @@
 checkPlatformContext(api.PlatformContext o) {
   buildCounterPlatformContext++;
   if (buildCounterPlatformContext < 3) {
-    checkUnnamed3786(o.platforms);
+    checkUnnamed3804(o.platforms);
   }
   buildCounterPlatformContext--;
 }
@@ -1727,14 +1729,14 @@
   buildCounterRowDimensions--;
 }
 
-buildUnnamed3787() {
+buildUnnamed3805() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3787(core.List<core.String> o) {
+checkUnnamed3805(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1745,7 +1747,7 @@
   var o = new api.SecurityContext();
   buildCounterSecurityContext++;
   if (buildCounterSecurityContext < 3) {
-    o.securities = buildUnnamed3787();
+    o.securities = buildUnnamed3805();
   }
   buildCounterSecurityContext--;
   return o;
@@ -1754,7 +1756,7 @@
 checkSecurityContext(api.SecurityContext o) {
   buildCounterSecurityContext++;
   if (buildCounterSecurityContext < 3) {
-    checkUnnamed3787(o.securities);
+    checkUnnamed3805(o.securities);
   }
   buildCounterSecurityContext--;
 }
@@ -1788,27 +1790,27 @@
   buildCounterServingContext--;
 }
 
-buildUnnamed3788() {
+buildUnnamed3806() {
   var o = new core.List<api.ServingContext>();
   o.add(buildServingContext());
   o.add(buildServingContext());
   return o;
 }
 
-checkUnnamed3788(core.List<api.ServingContext> o) {
+checkUnnamed3806(core.List<api.ServingContext> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkServingContext(o[0]);
   checkServingContext(o[1]);
 }
 
-buildUnnamed3789() {
+buildUnnamed3807() {
   var o = new core.List<api.Disapproval>();
   o.add(buildDisapproval());
   o.add(buildDisapproval());
   return o;
 }
 
-checkUnnamed3789(core.List<api.Disapproval> o) {
+checkUnnamed3807(core.List<api.Disapproval> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDisapproval(o[0]);
   checkDisapproval(o[1]);
@@ -1819,8 +1821,8 @@
   var o = new api.ServingRestriction();
   buildCounterServingRestriction++;
   if (buildCounterServingRestriction < 3) {
-    o.contexts = buildUnnamed3788();
-    o.disapprovalReasons = buildUnnamed3789();
+    o.contexts = buildUnnamed3806();
+    o.disapprovalReasons = buildUnnamed3807();
     o.status = "foo";
   }
   buildCounterServingRestriction--;
@@ -1830,8 +1832,8 @@
 checkServingRestriction(api.ServingRestriction o) {
   buildCounterServingRestriction++;
   if (buildCounterServingRestriction < 3) {
-    checkUnnamed3788(o.contexts);
-    checkUnnamed3789(o.disapprovalReasons);
+    checkUnnamed3806(o.contexts);
+    checkUnnamed3807(o.disapprovalReasons);
     unittest.expect(o.status, unittest.equals('foo'));
   }
   buildCounterServingRestriction--;
@@ -1911,6 +1913,32 @@
   buildCounterWatchCreativeRequest--;
 }
 
+buildUnnamed3808() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3808(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3809() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed3809(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
 main() {
   unittest.group("obj-schema-AbsoluteDateRange", () {
     unittest.test("to-json--from-json", () {
@@ -2378,6 +2406,7 @@
           new api.Adexchangebuyer2Api(mock).accounts.clients;
       var arg_request = buildClient();
       var arg_accountId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Client.fromJson(json);
         checkClient(obj);
@@ -2420,6 +2449,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2428,7 +2458,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_accountId)
+          .create(arg_request, arg_accountId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Client response) {
         checkClient(response);
       })));
@@ -2440,6 +2470,7 @@
           new api.Adexchangebuyer2Api(mock).accounts.clients;
       var arg_accountId = "foo";
       var arg_clientAccountId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2482,6 +2513,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2490,7 +2522,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_accountId, arg_clientAccountId)
+          .get(arg_accountId, arg_clientAccountId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Client response) {
         checkClient(response);
       })));
@@ -2503,6 +2535,7 @@
       var arg_accountId = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2546,6 +2579,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2554,7 +2588,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_accountId, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_accountId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListClientsResponse response) {
         checkListClientsResponse(response);
       })));
@@ -2567,6 +2604,7 @@
       var arg_request = buildClient();
       var arg_accountId = "foo";
       var arg_clientAccountId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Client.fromJson(json);
         checkClient(obj);
@@ -2612,6 +2650,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2620,7 +2659,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_accountId, arg_clientAccountId)
+          .update(arg_request, arg_accountId, arg_clientAccountId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Client response) {
         checkClient(response);
       })));
@@ -2635,6 +2675,7 @@
       var arg_request = buildClientUserInvitation();
       var arg_accountId = "foo";
       var arg_clientAccountId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ClientUserInvitation.fromJson(json);
         checkClientUserInvitation(obj);
@@ -2686,6 +2727,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2694,7 +2736,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_accountId, arg_clientAccountId)
+          .create(arg_request, arg_accountId, arg_clientAccountId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ClientUserInvitation response) {
         checkClientUserInvitation(response);
       })));
@@ -2707,6 +2750,7 @@
       var arg_accountId = "foo";
       var arg_clientAccountId = "foo";
       var arg_invitationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2758,6 +2802,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2766,7 +2811,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_accountId, arg_clientAccountId, arg_invitationId)
+          .get(arg_accountId, arg_clientAccountId, arg_invitationId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ClientUserInvitation response) {
         checkClientUserInvitation(response);
       })));
@@ -2780,6 +2826,7 @@
       var arg_clientAccountId = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2832,6 +2879,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2842,7 +2890,9 @@
       }), true);
       res
           .list(arg_accountId, arg_clientAccountId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListClientUserInvitationsResponse response) {
         checkListClientUserInvitationsResponse(response);
@@ -2858,6 +2908,7 @@
       var arg_accountId = "foo";
       var arg_clientAccountId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2909,6 +2960,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2917,7 +2969,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_accountId, arg_clientAccountId, arg_userId)
+          .get(arg_accountId, arg_clientAccountId, arg_userId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ClientUser response) {
         checkClientUser(response);
       })));
@@ -2931,6 +2984,7 @@
       var arg_clientAccountId = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2983,6 +3037,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2992,7 +3047,9 @@
       }), true);
       res
           .list(arg_accountId, arg_clientAccountId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListClientUsersResponse response) {
         checkListClientUsersResponse(response);
       })));
@@ -3006,6 +3063,7 @@
       var arg_accountId = "foo";
       var arg_clientAccountId = "foo";
       var arg_userId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ClientUser.fromJson(json);
         checkClientUser(obj);
@@ -3060,6 +3118,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3068,7 +3127,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_accountId, arg_clientAccountId, arg_userId)
+          .update(arg_request, arg_accountId, arg_clientAccountId, arg_userId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ClientUser response) {
         checkClientUser(response);
       })));
@@ -3083,6 +3143,7 @@
       var arg_request = buildCreative();
       var arg_accountId = "foo";
       var arg_duplicateIdMode = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Creative.fromJson(json);
         checkCreative(obj);
@@ -3127,6 +3188,7 @@
         }
         unittest.expect(queryMap["duplicateIdMode"].first,
             unittest.equals(arg_duplicateIdMode));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3136,7 +3198,7 @@
       }), true);
       res
           .create(arg_request, arg_accountId,
-              duplicateIdMode: arg_duplicateIdMode)
+              duplicateIdMode: arg_duplicateIdMode, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Creative response) {
         checkCreative(response);
       })));
@@ -3148,6 +3210,7 @@
           new api.Adexchangebuyer2Api(mock).accounts.creatives;
       var arg_accountId = "foo";
       var arg_creativeId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3190,6 +3253,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3198,7 +3262,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_accountId, arg_creativeId)
+          .get(arg_accountId, arg_creativeId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Creative response) {
         checkCreative(response);
       })));
@@ -3212,6 +3276,7 @@
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_query = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3256,6 +3321,7 @@
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["query"].first, unittest.equals(arg_query));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3267,7 +3333,8 @@
           .list(arg_accountId,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              query: arg_query)
+              query: arg_query,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListCreativesResponse response) {
         checkListCreativesResponse(response);
       })));
@@ -3280,6 +3347,7 @@
       var arg_request = buildStopWatchingCreativeRequest();
       var arg_accountId = "foo";
       var arg_creativeId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.StopWatchingCreativeRequest.fromJson(json);
         checkStopWatchingCreativeRequest(obj);
@@ -3331,6 +3399,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3339,7 +3408,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .stopWatching(arg_request, arg_accountId, arg_creativeId)
+          .stopWatching(arg_request, arg_accountId, arg_creativeId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -3352,6 +3422,7 @@
       var arg_request = buildCreative();
       var arg_accountId = "foo";
       var arg_creativeId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Creative.fromJson(json);
         checkCreative(obj);
@@ -3397,6 +3468,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3405,7 +3477,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_accountId, arg_creativeId)
+          .update(arg_request, arg_accountId, arg_creativeId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Creative response) {
         checkCreative(response);
       })));
@@ -3418,6 +3491,7 @@
       var arg_request = buildWatchCreativeRequest();
       var arg_accountId = "foo";
       var arg_creativeId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.WatchCreativeRequest.fromJson(json);
         checkWatchCreativeRequest(obj);
@@ -3469,6 +3543,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3477,7 +3552,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .watch(arg_request, arg_accountId, arg_creativeId)
+          .watch(arg_request, arg_accountId, arg_creativeId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -3492,6 +3568,7 @@
       var arg_request = buildAddDealAssociationRequest();
       var arg_accountId = "foo";
       var arg_creativeId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AddDealAssociationRequest.fromJson(json);
         checkAddDealAssociationRequest(obj);
@@ -3543,6 +3620,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3551,7 +3629,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .add(arg_request, arg_accountId, arg_creativeId)
+          .add(arg_request, arg_accountId, arg_creativeId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -3566,6 +3644,7 @@
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_query = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3619,6 +3698,7 @@
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["query"].first, unittest.equals(arg_query));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3630,7 +3710,8 @@
           .list(arg_accountId, arg_creativeId,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              query: arg_query)
+              query: arg_query,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListDealAssociationsResponse response) {
         checkListDealAssociationsResponse(response);
@@ -3644,6 +3725,7 @@
       var arg_request = buildRemoveDealAssociationRequest();
       var arg_accountId = "foo";
       var arg_creativeId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RemoveDealAssociationRequest.fromJson(json);
         checkRemoveDealAssociationRequest(obj);
@@ -3695,6 +3777,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3703,21 +3786,24 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .remove(arg_request, arg_accountId, arg_creativeId)
+          .remove(arg_request, arg_accountId, arg_creativeId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
   });
 
-  unittest.group("resource-AccountsFilterSetsResourceApi", () {
+  unittest.group("resource-BiddersAccountsFilterSetsResourceApi", () {
     unittest.test("method--create", () {
       var mock = new HttpServerMock();
-      api.AccountsFilterSetsResourceApi res =
-          new api.Adexchangebuyer2Api(mock).accounts.filterSets;
+      api.BiddersAccountsFilterSetsResourceApi res =
+          new api.Adexchangebuyer2Api(mock).bidders.accounts.filterSets;
       var arg_request = buildFilterSet();
-      var arg_accountId = "foo";
+      var arg_ownerName = "foo";
       var arg_isTransient = true;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.FilterSet.fromJson(json);
         checkFilterSet(obj);
@@ -3729,18 +3815,10 @@
         unittest.expect(
             path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
         pathOffset += 1;
-        unittest.expect(path.substring(pathOffset, pathOffset + 17),
-            unittest.equals("v2beta1/accounts/"));
-        pathOffset += 17;
-        index = path.indexOf("/filterSets", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_accountId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 11),
-            unittest.equals("/filterSets"));
-        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
 
         var query = (req.url).query;
         var queryOffset = 0;
@@ -3762,6 +3840,9 @@
         }
         unittest.expect(
             queryMap["isTransient"].first, unittest.equals("$arg_isTransient"));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3770,7 +3851,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_accountId, isTransient: arg_isTransient)
+          .create(arg_request, arg_ownerName,
+              isTransient: arg_isTransient,
+              accountId: arg_accountId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.FilterSet response) {
         checkFilterSet(response);
       })));
@@ -3778,10 +3862,12 @@
 
     unittest.test("method--delete", () {
       var mock = new HttpServerMock();
-      api.AccountsFilterSetsResourceApi res =
-          new api.Adexchangebuyer2Api(mock).accounts.filterSets;
+      api.BiddersAccountsFilterSetsResourceApi res =
+          new api.Adexchangebuyer2Api(mock).bidders.accounts.filterSets;
+      var arg_name = "foo";
       var arg_accountId = "foo";
       var arg_filterSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3790,21 +3876,10 @@
         unittest.expect(
             path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
         pathOffset += 1;
-        unittest.expect(path.substring(pathOffset, pathOffset + 17),
-            unittest.equals("v2beta1/accounts/"));
-        pathOffset += 17;
-        index = path.indexOf("/filterSets/", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_accountId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 12),
-            unittest.equals("/filterSets/"));
-        pathOffset += 12;
-        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
-        pathOffset = path.length;
-        unittest.expect(subPart, unittest.equals("$arg_filterSetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
 
         var query = (req.url).query;
         var queryOffset = 0;
@@ -3824,6 +3899,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3832,7 +3912,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_accountId, arg_filterSetId)
+          .delete(arg_name,
+              accountId: arg_accountId,
+              filterSetId: arg_filterSetId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -3840,10 +3923,12 @@
 
     unittest.test("method--get", () {
       var mock = new HttpServerMock();
-      api.AccountsFilterSetsResourceApi res =
-          new api.Adexchangebuyer2Api(mock).accounts.filterSets;
+      api.BiddersAccountsFilterSetsResourceApi res =
+          new api.Adexchangebuyer2Api(mock).bidders.accounts.filterSets;
+      var arg_name = "foo";
       var arg_accountId = "foo";
       var arg_filterSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3852,21 +3937,10 @@
         unittest.expect(
             path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
         pathOffset += 1;
-        unittest.expect(path.substring(pathOffset, pathOffset + 17),
-            unittest.equals("v2beta1/accounts/"));
-        pathOffset += 17;
-        index = path.indexOf("/filterSets/", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_accountId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 12),
-            unittest.equals("/filterSets/"));
-        pathOffset += 12;
-        subPart = core.Uri.decodeQueryComponent(path.substring(pathOffset));
-        pathOffset = path.length;
-        unittest.expect(subPart, unittest.equals("$arg_filterSetId"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
 
         var query = (req.url).query;
         var queryOffset = 0;
@@ -3886,6 +3960,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3894,7 +3973,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_accountId, arg_filterSetId)
+          .get(arg_name,
+              accountId: arg_accountId,
+              filterSetId: arg_filterSetId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.FilterSet response) {
         checkFilterSet(response);
       })));
@@ -3902,11 +3984,13 @@
 
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
-      api.AccountsFilterSetsResourceApi res =
-          new api.Adexchangebuyer2Api(mock).accounts.filterSets;
-      var arg_accountId = "foo";
+      api.BiddersAccountsFilterSetsResourceApi res =
+          new api.Adexchangebuyer2Api(mock).bidders.accounts.filterSets;
+      var arg_ownerName = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3915,18 +3999,10 @@
         unittest.expect(
             path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
         pathOffset += 1;
-        unittest.expect(path.substring(pathOffset, pathOffset + 17),
-            unittest.equals("v2beta1/accounts/"));
-        pathOffset += 17;
-        index = path.indexOf("/filterSets", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_accountId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 11),
-            unittest.equals("/filterSets"));
-        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
 
         var query = (req.url).query;
         var queryOffset = 0;
@@ -3950,6 +4026,9 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3958,22 +4037,32 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_accountId, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_ownerName,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListFilterSetsResponse response) {
         checkListFilterSetsResponse(response);
       })));
     });
   });
 
-  unittest.group("resource-AccountsFilterSetsBidMetricsResourceApi", () {
+  unittest.group("resource-BiddersAccountsFilterSetsBidMetricsResourceApi", () {
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
-      api.AccountsFilterSetsBidMetricsResourceApi res =
-          new api.Adexchangebuyer2Api(mock).accounts.filterSets.bidMetrics;
-      var arg_accountId = "foo";
+      api.BiddersAccountsFilterSetsBidMetricsResourceApi res =
+          new api.Adexchangebuyer2Api(mock)
+              .bidders
+              .accounts
+              .filterSets
+              .bidMetrics;
+      var arg_filterSetName = "foo";
       var arg_filterSetId = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3982,27 +4071,10 @@
         unittest.expect(
             path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
         pathOffset += 1;
-        unittest.expect(path.substring(pathOffset, pathOffset + 17),
-            unittest.equals("v2beta1/accounts/"));
-        pathOffset += 17;
-        index = path.indexOf("/filterSets/", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_accountId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 12),
-            unittest.equals("/filterSets/"));
-        pathOffset += 12;
-        index = path.indexOf("/bidMetrics", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_filterSetId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 11),
-            unittest.equals("/bidMetrics"));
-        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
 
         var query = (req.url).query;
         var queryOffset = 0;
@@ -4023,9 +4095,14 @@
           }
         }
         unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4034,26 +4111,34 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_accountId, arg_filterSetId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_filterSetName,
+              filterSetId: arg_filterSetId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListBidMetricsResponse response) {
         checkListBidMetricsResponse(response);
       })));
     });
   });
 
-  unittest.group("resource-AccountsFilterSetsBidResponseErrorsResourceApi", () {
+  unittest.group(
+      "resource-BiddersAccountsFilterSetsBidResponseErrorsResourceApi", () {
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
-      api.AccountsFilterSetsBidResponseErrorsResourceApi res =
+      api.BiddersAccountsFilterSetsBidResponseErrorsResourceApi res =
           new api.Adexchangebuyer2Api(mock)
+              .bidders
               .accounts
               .filterSets
               .bidResponseErrors;
-      var arg_accountId = "foo";
-      var arg_filterSetId = "foo";
+      var arg_filterSetName = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_filterSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4062,27 +4147,10 @@
         unittest.expect(
             path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
         pathOffset += 1;
-        unittest.expect(path.substring(pathOffset, pathOffset + 17),
-            unittest.equals("v2beta1/accounts/"));
-        pathOffset += 17;
-        index = path.indexOf("/filterSets/", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_accountId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 12),
-            unittest.equals("/filterSets/"));
-        pathOffset += 12;
-        index = path.indexOf("/bidResponseErrors", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_filterSetId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 18),
-            unittest.equals("/bidResponseErrors"));
-        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
 
         var query = (req.url).query;
         var queryOffset = 0;
@@ -4106,6 +4174,11 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4114,8 +4187,12 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_accountId, arg_filterSetId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_filterSetName,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              filterSetId: arg_filterSetId,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListBidResponseErrorsResponse response) {
         checkListBidResponseErrorsResponse(response);
@@ -4124,18 +4201,22 @@
   });
 
   unittest.group(
-      "resource-AccountsFilterSetsBidResponsesWithoutBidsResourceApi", () {
+      "resource-BiddersAccountsFilterSetsBidResponsesWithoutBidsResourceApi",
+      () {
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
-      api.AccountsFilterSetsBidResponsesWithoutBidsResourceApi res =
+      api.BiddersAccountsFilterSetsBidResponsesWithoutBidsResourceApi res =
           new api.Adexchangebuyer2Api(mock)
+              .bidders
               .accounts
               .filterSets
               .bidResponsesWithoutBids;
-      var arg_accountId = "foo";
+      var arg_filterSetName = "foo";
       var arg_filterSetId = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4144,27 +4225,10 @@
         unittest.expect(
             path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
         pathOffset += 1;
-        unittest.expect(path.substring(pathOffset, pathOffset + 17),
-            unittest.equals("v2beta1/accounts/"));
-        pathOffset += 17;
-        index = path.indexOf("/filterSets/", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_accountId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 12),
-            unittest.equals("/filterSets/"));
-        pathOffset += 12;
-        index = path.indexOf("/bidResponsesWithoutBids", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_filterSetId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 24),
-            unittest.equals("/bidResponsesWithoutBids"));
-        pathOffset += 24;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
 
         var query = (req.url).query;
         var queryOffset = 0;
@@ -4185,9 +4249,14 @@
           }
         }
         unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4197,8 +4266,12 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_accountId, arg_filterSetId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_filterSetName,
+              filterSetId: arg_filterSetId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(
               ((api.ListBidResponsesWithoutBidsResponse response) {
         checkListBidResponsesWithoutBidsResponse(response);
@@ -4206,19 +4279,22 @@
     });
   });
 
-  unittest.group("resource-AccountsFilterSetsFilteredBidRequestsResourceApi",
-      () {
+  unittest.group(
+      "resource-BiddersAccountsFilterSetsFilteredBidRequestsResourceApi", () {
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
-      api.AccountsFilterSetsFilteredBidRequestsResourceApi res =
+      api.BiddersAccountsFilterSetsFilteredBidRequestsResourceApi res =
           new api.Adexchangebuyer2Api(mock)
+              .bidders
               .accounts
               .filterSets
               .filteredBidRequests;
-      var arg_accountId = "foo";
-      var arg_filterSetId = "foo";
+      var arg_filterSetName = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_filterSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4227,27 +4303,10 @@
         unittest.expect(
             path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
         pathOffset += 1;
-        unittest.expect(path.substring(pathOffset, pathOffset + 17),
-            unittest.equals("v2beta1/accounts/"));
-        pathOffset += 17;
-        index = path.indexOf("/filterSets/", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_accountId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 12),
-            unittest.equals("/filterSets/"));
-        pathOffset += 12;
-        index = path.indexOf("/filteredBidRequests", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_filterSetId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 20),
-            unittest.equals("/filteredBidRequests"));
-        pathOffset += 20;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
 
         var query = (req.url).query;
         var queryOffset = 0;
@@ -4271,6 +4330,11 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4279,8 +4343,12 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_accountId, arg_filterSetId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_filterSetName,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              filterSetId: arg_filterSetId,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListFilteredBidRequestsResponse response) {
         checkListFilteredBidRequestsResponse(response);
@@ -4288,15 +4356,22 @@
     });
   });
 
-  unittest.group("resource-AccountsFilterSetsFilteredBidsResourceApi", () {
+  unittest.group("resource-BiddersAccountsFilterSetsFilteredBidsResourceApi",
+      () {
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
-      api.AccountsFilterSetsFilteredBidsResourceApi res =
-          new api.Adexchangebuyer2Api(mock).accounts.filterSets.filteredBids;
-      var arg_accountId = "foo";
+      api.BiddersAccountsFilterSetsFilteredBidsResourceApi res =
+          new api.Adexchangebuyer2Api(mock)
+              .bidders
+              .accounts
+              .filterSets
+              .filteredBids;
+      var arg_filterSetName = "foo";
       var arg_filterSetId = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4305,27 +4380,10 @@
         unittest.expect(
             path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
         pathOffset += 1;
-        unittest.expect(path.substring(pathOffset, pathOffset + 17),
-            unittest.equals("v2beta1/accounts/"));
-        pathOffset += 17;
-        index = path.indexOf("/filterSets/", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_accountId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 12),
-            unittest.equals("/filterSets/"));
-        pathOffset += 12;
-        index = path.indexOf("/filteredBids", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_filterSetId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 13),
-            unittest.equals("/filteredBids"));
-        pathOffset += 13;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
 
         var query = (req.url).query;
         var queryOffset = 0;
@@ -4346,9 +4404,14 @@
           }
         }
         unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4357,29 +4420,36 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_accountId, arg_filterSetId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_filterSetName,
+              filterSetId: arg_filterSetId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListFilteredBidsResponse response) {
         checkListFilteredBidsResponse(response);
       })));
     });
   });
 
-  unittest.group("resource-AccountsFilterSetsFilteredBidsCreativesResourceApi",
-      () {
+  unittest.group(
+      "resource-BiddersAccountsFilterSetsFilteredBidsCreativesResourceApi", () {
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
-      api.AccountsFilterSetsFilteredBidsCreativesResourceApi res =
+      api.BiddersAccountsFilterSetsFilteredBidsCreativesResourceApi res =
           new api.Adexchangebuyer2Api(mock)
+              .bidders
               .accounts
               .filterSets
               .filteredBids
               .creatives;
+      var arg_filterSetName = "foo";
+      var arg_creativeStatusId = 42;
       var arg_accountId = "foo";
       var arg_filterSetId = "foo";
-      var arg_creativeStatusId = 42;
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4388,36 +4458,10 @@
         unittest.expect(
             path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
         pathOffset += 1;
-        unittest.expect(path.substring(pathOffset, pathOffset + 17),
-            unittest.equals("v2beta1/accounts/"));
-        pathOffset += 17;
-        index = path.indexOf("/filterSets/", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_accountId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 12),
-            unittest.equals("/filterSets/"));
-        pathOffset += 12;
-        index = path.indexOf("/filteredBids/", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_filterSetId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 14),
-            unittest.equals("/filteredBids/"));
-        pathOffset += 14;
-        index = path.indexOf("/creatives", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_creativeStatusId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 10),
-            unittest.equals("/creatives"));
-        pathOffset += 10;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
 
         var query = (req.url).query;
         var queryOffset = 0;
@@ -4438,9 +4482,14 @@
           }
         }
         unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4450,8 +4499,12 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_accountId, arg_filterSetId, arg_creativeStatusId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_filterSetName, arg_creativeStatusId,
+              accountId: arg_accountId,
+              filterSetId: arg_filterSetId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(
               ((api.ListCreativeStatusBreakdownByCreativeResponse response) {
         checkListCreativeStatusBreakdownByCreativeResponse(response);
@@ -4459,21 +4512,24 @@
     });
   });
 
-  unittest.group("resource-AccountsFilterSetsFilteredBidsDetailsResourceApi",
-      () {
+  unittest.group(
+      "resource-BiddersAccountsFilterSetsFilteredBidsDetailsResourceApi", () {
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
-      api.AccountsFilterSetsFilteredBidsDetailsResourceApi res =
+      api.BiddersAccountsFilterSetsFilteredBidsDetailsResourceApi res =
           new api.Adexchangebuyer2Api(mock)
+              .bidders
               .accounts
               .filterSets
               .filteredBids
               .details;
+      var arg_filterSetName = "foo";
+      var arg_creativeStatusId = 42;
       var arg_accountId = "foo";
       var arg_filterSetId = "foo";
-      var arg_creativeStatusId = 42;
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4482,36 +4538,10 @@
         unittest.expect(
             path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
         pathOffset += 1;
-        unittest.expect(path.substring(pathOffset, pathOffset + 17),
-            unittest.equals("v2beta1/accounts/"));
-        pathOffset += 17;
-        index = path.indexOf("/filterSets/", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_accountId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 12),
-            unittest.equals("/filterSets/"));
-        pathOffset += 12;
-        index = path.indexOf("/filteredBids/", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_filterSetId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 14),
-            unittest.equals("/filteredBids/"));
-        pathOffset += 14;
-        index = path.indexOf("/details", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_creativeStatusId"));
         unittest.expect(path.substring(pathOffset, pathOffset + 8),
-            unittest.equals("/details"));
+            unittest.equals("v2beta1/"));
         pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
 
         var query = (req.url).query;
         var queryOffset = 0;
@@ -4532,9 +4562,14 @@
           }
         }
         unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4544,8 +4579,12 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_accountId, arg_filterSetId, arg_creativeStatusId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_filterSetName, arg_creativeStatusId,
+              accountId: arg_accountId,
+              filterSetId: arg_filterSetId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(
               ((api.ListCreativeStatusBreakdownByDetailResponse response) {
         checkListCreativeStatusBreakdownByDetailResponse(response);
@@ -4553,18 +4592,22 @@
     });
   });
 
-  unittest.group("resource-AccountsFilterSetsImpressionMetricsResourceApi", () {
+  unittest.group(
+      "resource-BiddersAccountsFilterSetsImpressionMetricsResourceApi", () {
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
-      api.AccountsFilterSetsImpressionMetricsResourceApi res =
+      api.BiddersAccountsFilterSetsImpressionMetricsResourceApi res =
           new api.Adexchangebuyer2Api(mock)
+              .bidders
               .accounts
               .filterSets
               .impressionMetrics;
-      var arg_accountId = "foo";
-      var arg_filterSetId = "foo";
+      var arg_filterSetName = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_filterSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4573,27 +4616,10 @@
         unittest.expect(
             path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
         pathOffset += 1;
-        unittest.expect(path.substring(pathOffset, pathOffset + 17),
-            unittest.equals("v2beta1/accounts/"));
-        pathOffset += 17;
-        index = path.indexOf("/filterSets/", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_accountId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 12),
-            unittest.equals("/filterSets/"));
-        pathOffset += 12;
-        index = path.indexOf("/impressionMetrics", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_filterSetId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 18),
-            unittest.equals("/impressionMetrics"));
-        pathOffset += 18;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
 
         var query = (req.url).query;
         var queryOffset = 0;
@@ -4617,6 +4643,11 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4625,8 +4656,12 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_accountId, arg_filterSetId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_filterSetName,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              filterSetId: arg_filterSetId,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListImpressionMetricsResponse response) {
         checkListImpressionMetricsResponse(response);
@@ -4634,15 +4669,21 @@
     });
   });
 
-  unittest.group("resource-AccountsFilterSetsLosingBidsResourceApi", () {
+  unittest.group("resource-BiddersAccountsFilterSetsLosingBidsResourceApi", () {
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
-      api.AccountsFilterSetsLosingBidsResourceApi res =
-          new api.Adexchangebuyer2Api(mock).accounts.filterSets.losingBids;
-      var arg_accountId = "foo";
-      var arg_filterSetId = "foo";
+      api.BiddersAccountsFilterSetsLosingBidsResourceApi res =
+          new api.Adexchangebuyer2Api(mock)
+              .bidders
+              .accounts
+              .filterSets
+              .losingBids;
+      var arg_filterSetName = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_filterSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4651,27 +4692,10 @@
         unittest.expect(
             path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
         pathOffset += 1;
-        unittest.expect(path.substring(pathOffset, pathOffset + 17),
-            unittest.equals("v2beta1/accounts/"));
-        pathOffset += 17;
-        index = path.indexOf("/filterSets/", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_accountId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 12),
-            unittest.equals("/filterSets/"));
-        pathOffset += 12;
-        index = path.indexOf("/losingBids", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_filterSetId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 11),
-            unittest.equals("/losingBids"));
-        pathOffset += 11;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
 
         var query = (req.url).query;
         var queryOffset = 0;
@@ -4695,6 +4719,11 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4703,27 +4732,35 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_accountId, arg_filterSetId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_filterSetName,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              filterSetId: arg_filterSetId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLosingBidsResponse response) {
         checkListLosingBidsResponse(response);
       })));
     });
   });
 
-  unittest.group("resource-AccountsFilterSetsNonBillableWinningBidsResourceApi",
+  unittest.group(
+      "resource-BiddersAccountsFilterSetsNonBillableWinningBidsResourceApi",
       () {
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
-      api.AccountsFilterSetsNonBillableWinningBidsResourceApi res =
+      api.BiddersAccountsFilterSetsNonBillableWinningBidsResourceApi res =
           new api.Adexchangebuyer2Api(mock)
+              .bidders
               .accounts
               .filterSets
               .nonBillableWinningBids;
-      var arg_accountId = "foo";
-      var arg_filterSetId = "foo";
+      var arg_filterSetName = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_filterSetId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4732,27 +4769,10 @@
         unittest.expect(
             path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
         pathOffset += 1;
-        unittest.expect(path.substring(pathOffset, pathOffset + 17),
-            unittest.equals("v2beta1/accounts/"));
-        pathOffset += 17;
-        index = path.indexOf("/filterSets/", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_accountId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 12),
-            unittest.equals("/filterSets/"));
-        pathOffset += 12;
-        index = path.indexOf("/nonBillableWinningBids", pathOffset);
-        unittest.expect(index >= 0, unittest.isTrue);
-        subPart =
-            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
-        pathOffset = index;
-        unittest.expect(subPart, unittest.equals("$arg_filterSetId"));
-        unittest.expect(path.substring(pathOffset, pathOffset + 23),
-            unittest.equals("/nonBillableWinningBids"));
-        pathOffset += 23;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
 
         var query = (req.url).query;
         var queryOffset = 0;
@@ -4776,6 +4796,11 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4785,8 +4810,1121 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_accountId, arg_filterSetId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_filterSetName,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              filterSetId: arg_filterSetId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListNonBillableWinningBidsResponse response) {
+        checkListNonBillableWinningBidsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BiddersFilterSetsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.BiddersFilterSetsResourceApi res =
+          new api.Adexchangebuyer2Api(mock).bidders.filterSets;
+      var arg_ownerName = "foo";
+      var arg_filterSet_relativeDateRange_offsetDays = 42;
+      var arg_isTransient = true;
+      var arg_filterSet_buyerAccountId = "foo";
+      var arg_filterSet_ownerAccountId = "foo";
+      var arg_filterSet_absoluteDateRange_startDate_day = 42;
+      var arg_filterSet_realtimeTimeRange_startTimestamp = "foo";
+      var arg_filterSet_absoluteDateRange_startDate_month = 42;
+      var arg_filterSet_absoluteDateRange_endDate_day = 42;
+      var arg_filterSet_absoluteDateRange_startDate_year = 42;
+      var arg_filterSet_name = "foo";
+      var arg_filterSet_platforms = buildUnnamed3808();
+      var arg_accountId = "foo";
+      var arg_filterSet_relativeDateRange_durationDays = 42;
+      var arg_filterSet_dealId = "foo";
+      var arg_filterSet_absoluteDateRange_endDate_year = 42;
+      var arg_filterSet_environment = "foo";
+      var arg_filterSet_absoluteDateRange_endDate_month = 42;
+      var arg_filterSet_sellerNetworkIds = buildUnnamed3809();
+      var arg_filterSet_filterSetId = "foo";
+      var arg_filterSet_format = "foo";
+      var arg_filterSet_timeSeriesGranularity = "foo";
+      var arg_filterSet_creativeId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            core.int.parse(
+                queryMap["filterSet.relativeDateRange.offsetDays"].first),
+            unittest.equals(arg_filterSet_relativeDateRange_offsetDays));
+        unittest.expect(
+            queryMap["isTransient"].first, unittest.equals("$arg_isTransient"));
+        unittest.expect(queryMap["filterSet.buyerAccountId"].first,
+            unittest.equals(arg_filterSet_buyerAccountId));
+        unittest.expect(queryMap["filterSet.ownerAccountId"].first,
+            unittest.equals(arg_filterSet_ownerAccountId));
+        unittest.expect(
+            core.int.parse(
+                queryMap["filterSet.absoluteDateRange.startDate.day"].first),
+            unittest.equals(arg_filterSet_absoluteDateRange_startDate_day));
+        unittest.expect(
+            queryMap["filterSet.realtimeTimeRange.startTimestamp"].first,
+            unittest.equals(arg_filterSet_realtimeTimeRange_startTimestamp));
+        unittest.expect(
+            core.int.parse(
+                queryMap["filterSet.absoluteDateRange.startDate.month"].first),
+            unittest.equals(arg_filterSet_absoluteDateRange_startDate_month));
+        unittest.expect(
+            core.int.parse(
+                queryMap["filterSet.absoluteDateRange.endDate.day"].first),
+            unittest.equals(arg_filterSet_absoluteDateRange_endDate_day));
+        unittest.expect(
+            core.int.parse(
+                queryMap["filterSet.absoluteDateRange.startDate.year"].first),
+            unittest.equals(arg_filterSet_absoluteDateRange_startDate_year));
+        unittest.expect(queryMap["filterSet.name"].first,
+            unittest.equals(arg_filterSet_name));
+        unittest.expect(queryMap["filterSet.platforms"],
+            unittest.equals(arg_filterSet_platforms));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            core.int.parse(
+                queryMap["filterSet.relativeDateRange.durationDays"].first),
+            unittest.equals(arg_filterSet_relativeDateRange_durationDays));
+        unittest.expect(queryMap["filterSet.dealId"].first,
+            unittest.equals(arg_filterSet_dealId));
+        unittest.expect(
+            core.int.parse(
+                queryMap["filterSet.absoluteDateRange.endDate.year"].first),
+            unittest.equals(arg_filterSet_absoluteDateRange_endDate_year));
+        unittest.expect(queryMap["filterSet.environment"].first,
+            unittest.equals(arg_filterSet_environment));
+        unittest.expect(
+            core.int.parse(
+                queryMap["filterSet.absoluteDateRange.endDate.month"].first),
+            unittest.equals(arg_filterSet_absoluteDateRange_endDate_month));
+        unittest.expect(
+            queryMap["filterSet.sellerNetworkIds"].map(core.int.parse).toList(),
+            unittest.equals(arg_filterSet_sellerNetworkIds));
+        unittest.expect(queryMap["filterSet.filterSetId"].first,
+            unittest.equals(arg_filterSet_filterSetId));
+        unittest.expect(queryMap["filterSet.format"].first,
+            unittest.equals(arg_filterSet_format));
+        unittest.expect(queryMap["filterSet.timeSeriesGranularity"].first,
+            unittest.equals(arg_filterSet_timeSeriesGranularity));
+        unittest.expect(queryMap["filterSet.creativeId"].first,
+            unittest.equals(arg_filterSet_creativeId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFilterSet());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_ownerName,
+              filterSet_relativeDateRange_offsetDays:
+                  arg_filterSet_relativeDateRange_offsetDays,
+              isTransient: arg_isTransient,
+              filterSet_buyerAccountId: arg_filterSet_buyerAccountId,
+              filterSet_ownerAccountId: arg_filterSet_ownerAccountId,
+              filterSet_absoluteDateRange_startDate_day:
+                  arg_filterSet_absoluteDateRange_startDate_day,
+              filterSet_realtimeTimeRange_startTimestamp:
+                  arg_filterSet_realtimeTimeRange_startTimestamp,
+              filterSet_absoluteDateRange_startDate_month:
+                  arg_filterSet_absoluteDateRange_startDate_month,
+              filterSet_absoluteDateRange_endDate_day:
+                  arg_filterSet_absoluteDateRange_endDate_day,
+              filterSet_absoluteDateRange_startDate_year:
+                  arg_filterSet_absoluteDateRange_startDate_year,
+              filterSet_name: arg_filterSet_name,
+              filterSet_platforms: arg_filterSet_platforms,
+              accountId: arg_accountId,
+              filterSet_relativeDateRange_durationDays:
+                  arg_filterSet_relativeDateRange_durationDays,
+              filterSet_dealId: arg_filterSet_dealId,
+              filterSet_absoluteDateRange_endDate_year:
+                  arg_filterSet_absoluteDateRange_endDate_year,
+              filterSet_environment: arg_filterSet_environment,
+              filterSet_absoluteDateRange_endDate_month:
+                  arg_filterSet_absoluteDateRange_endDate_month,
+              filterSet_sellerNetworkIds: arg_filterSet_sellerNetworkIds,
+              filterSet_filterSetId: arg_filterSet_filterSetId,
+              filterSet_format: arg_filterSet_format,
+              filterSet_timeSeriesGranularity:
+                  arg_filterSet_timeSeriesGranularity,
+              filterSet_creativeId: arg_filterSet_creativeId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FilterSet response) {
+        checkFilterSet(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.BiddersFilterSetsResourceApi res =
+          new api.Adexchangebuyer2Api(mock).bidders.filterSets;
+      var arg_name = "foo";
+      var arg_filterSetId = "foo";
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name,
+              filterSetId: arg_filterSetId,
+              accountId: arg_accountId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.BiddersFilterSetsResourceApi res =
+          new api.Adexchangebuyer2Api(mock).bidders.filterSets;
+      var arg_name = "foo";
+      var arg_filterSetId = "foo";
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildFilterSet());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name,
+              filterSetId: arg_filterSetId,
+              accountId: arg_accountId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FilterSet response) {
+        checkFilterSet(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BiddersFilterSetsResourceApi res =
+          new api.Adexchangebuyer2Api(mock).bidders.filterSets;
+      var arg_ownerName = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListFilterSetsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_ownerName,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListFilterSetsResponse response) {
+        checkListFilterSetsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BiddersFilterSetsBidMetricsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BiddersFilterSetsBidMetricsResourceApi res =
+          new api.Adexchangebuyer2Api(mock).bidders.filterSets.bidMetrics;
+      var arg_filterSetName = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_filterSetId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListBidMetricsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_filterSetName,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              filterSetId: arg_filterSetId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListBidMetricsResponse response) {
+        checkListBidMetricsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BiddersFilterSetsBidResponseErrorsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BiddersFilterSetsBidResponseErrorsResourceApi res =
+          new api.Adexchangebuyer2Api(mock)
+              .bidders
+              .filterSets
+              .bidResponseErrors;
+      var arg_filterSetName = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_filterSetId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListBidResponseErrorsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_filterSetName,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              filterSetId: arg_filterSetId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListBidResponseErrorsResponse response) {
+        checkListBidResponseErrorsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BiddersFilterSetsBidResponsesWithoutBidsResourceApi",
+      () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BiddersFilterSetsBidResponsesWithoutBidsResourceApi res =
+          new api.Adexchangebuyer2Api(mock)
+              .bidders
+              .filterSets
+              .bidResponsesWithoutBids;
+      var arg_filterSetName = "foo";
+      var arg_filterSetId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildListBidResponsesWithoutBidsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_filterSetName,
+              filterSetId: arg_filterSetId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.ListBidResponsesWithoutBidsResponse response) {
+        checkListBidResponsesWithoutBidsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BiddersFilterSetsFilteredBidRequestsResourceApi",
+      () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BiddersFilterSetsFilteredBidRequestsResourceApi res =
+          new api.Adexchangebuyer2Api(mock)
+              .bidders
+              .filterSets
+              .filteredBidRequests;
+      var arg_filterSetName = "foo";
+      var arg_filterSetId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListFilteredBidRequestsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_filterSetName,
+              filterSetId: arg_filterSetId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListFilteredBidRequestsResponse response) {
+        checkListFilteredBidRequestsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BiddersFilterSetsFilteredBidsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BiddersFilterSetsFilteredBidsResourceApi res =
+          new api.Adexchangebuyer2Api(mock).bidders.filterSets.filteredBids;
+      var arg_filterSetName = "foo";
+      var arg_filterSetId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListFilteredBidsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_filterSetName,
+              filterSetId: arg_filterSetId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListFilteredBidsResponse response) {
+        checkListFilteredBidsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BiddersFilterSetsFilteredBidsCreativesResourceApi",
+      () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BiddersFilterSetsFilteredBidsCreativesResourceApi res =
+          new api.Adexchangebuyer2Api(mock)
+              .bidders
+              .filterSets
+              .filteredBids
+              .creatives;
+      var arg_filterSetName = "foo";
+      var arg_creativeStatusId = 42;
+      var arg_filterSetId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON
+            .encode(buildListCreativeStatusBreakdownByCreativeResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_filterSetName, arg_creativeStatusId,
+              filterSetId: arg_filterSetId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.ListCreativeStatusBreakdownByCreativeResponse response) {
+        checkListCreativeStatusBreakdownByCreativeResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BiddersFilterSetsFilteredBidsDetailsResourceApi",
+      () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BiddersFilterSetsFilteredBidsDetailsResourceApi res =
+          new api.Adexchangebuyer2Api(mock)
+              .bidders
+              .filterSets
+              .filteredBids
+              .details;
+      var arg_filterSetName = "foo";
+      var arg_creativeStatusId = 42;
+      var arg_accountId = "foo";
+      var arg_filterSetId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON
+            .encode(buildListCreativeStatusBreakdownByDetailResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_filterSetName, arg_creativeStatusId,
+              accountId: arg_accountId,
+              filterSetId: arg_filterSetId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
+              ((api.ListCreativeStatusBreakdownByDetailResponse response) {
+        checkListCreativeStatusBreakdownByDetailResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BiddersFilterSetsImpressionMetricsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BiddersFilterSetsImpressionMetricsResourceApi res =
+          new api.Adexchangebuyer2Api(mock)
+              .bidders
+              .filterSets
+              .impressionMetrics;
+      var arg_filterSetName = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_filterSetId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListImpressionMetricsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_filterSetName,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              filterSetId: arg_filterSetId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListImpressionMetricsResponse response) {
+        checkListImpressionMetricsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BiddersFilterSetsLosingBidsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BiddersFilterSetsLosingBidsResourceApi res =
+          new api.Adexchangebuyer2Api(mock).bidders.filterSets.losingBids;
+      var arg_filterSetName = "foo";
+      var arg_filterSetId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListLosingBidsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_filterSetName,
+              filterSetId: arg_filterSetId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListLosingBidsResponse response) {
+        checkListLosingBidsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-BiddersFilterSetsNonBillableWinningBidsResourceApi",
+      () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.BiddersFilterSetsNonBillableWinningBidsResourceApi res =
+          new api.Adexchangebuyer2Api(mock)
+              .bidders
+              .filterSets
+              .nonBillableWinningBids;
+      var arg_filterSetName = "foo";
+      var arg_filterSetId = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_accountId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["filterSetId"].first, unittest.equals(arg_filterSetId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["accountId"].first, unittest.equals(arg_accountId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildListNonBillableWinningBidsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_filterSetName,
+              filterSetId: arg_filterSetId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              accountId: arg_accountId,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListNonBillableWinningBidsResponse response) {
         checkListNonBillableWinningBidsResponse(response);
diff --git a/generated/googleapis_beta/test/appengine/v1beta4_test.dart b/generated/googleapis_beta/test/appengine/v1beta4_test.dart
index bdbd4d8..9bc4975 100644
--- a/generated/googleapis_beta/test/appengine/v1beta4_test.dart
+++ b/generated/googleapis_beta/test/appengine/v1beta4_test.dart
@@ -96,14 +96,14 @@
   buildCounterApiEndpointHandler--;
 }
 
-buildUnnamed3710() {
+buildUnnamed3728() {
   var o = new core.List<api.UrlDispatchRule>();
   o.add(buildUrlDispatchRule());
   o.add(buildUrlDispatchRule());
   return o;
 }
 
-checkUnnamed3710(core.List<api.UrlDispatchRule> o) {
+checkUnnamed3728(core.List<api.UrlDispatchRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUrlDispatchRule(o[0]);
   checkUrlDispatchRule(o[1]);
@@ -119,7 +119,7 @@
     o.defaultBucket = "foo";
     o.defaultCookieExpiration = "foo";
     o.defaultHostname = "foo";
-    o.dispatchRules = buildUnnamed3710();
+    o.dispatchRules = buildUnnamed3728();
     o.iap = buildIdentityAwareProxy();
     o.id = "foo";
     o.location = "foo";
@@ -137,7 +137,7 @@
     unittest.expect(o.defaultBucket, unittest.equals('foo'));
     unittest.expect(o.defaultCookieExpiration, unittest.equals('foo'));
     unittest.expect(o.defaultHostname, unittest.equals('foo'));
-    checkUnnamed3710(o.dispatchRules);
+    checkUnnamed3728(o.dispatchRules);
     checkIdentityAwareProxy(o.iap);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.location, unittest.equals('foo'));
@@ -267,27 +267,27 @@
   buildCounterDebugInstanceRequest--;
 }
 
-buildUnnamed3711() {
+buildUnnamed3729() {
   var o = new core.Map<core.String, api.FileInfo>();
   o["x"] = buildFileInfo();
   o["y"] = buildFileInfo();
   return o;
 }
 
-checkUnnamed3711(core.Map<core.String, api.FileInfo> o) {
+checkUnnamed3729(core.Map<core.String, api.FileInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFileInfo(o["x"]);
   checkFileInfo(o["y"]);
 }
 
-buildUnnamed3712() {
+buildUnnamed3730() {
   var o = new core.List<api.SourceReference>();
   o.add(buildSourceReference());
   o.add(buildSourceReference());
   return o;
 }
 
-checkUnnamed3712(core.List<api.SourceReference> o) {
+checkUnnamed3730(core.List<api.SourceReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSourceReference(o[0]);
   checkSourceReference(o[1]);
@@ -299,8 +299,8 @@
   buildCounterDeployment++;
   if (buildCounterDeployment < 3) {
     o.container = buildContainerInfo();
-    o.files = buildUnnamed3711();
-    o.sourceReferences = buildUnnamed3712();
+    o.files = buildUnnamed3729();
+    o.sourceReferences = buildUnnamed3730();
   }
   buildCounterDeployment--;
   return o;
@@ -310,8 +310,8 @@
   buildCounterDeployment++;
   if (buildCounterDeployment < 3) {
     checkContainerInfo(o.container);
-    checkUnnamed3711(o.files);
-    checkUnnamed3712(o.sourceReferences);
+    checkUnnamed3729(o.files);
+    checkUnnamed3730(o.sourceReferences);
   }
   buildCounterDeployment--;
 }
@@ -513,14 +513,14 @@
   buildCounterLibrary--;
 }
 
-buildUnnamed3713() {
+buildUnnamed3731() {
   var o = new core.List<api.Instance>();
   o.add(buildInstance());
   o.add(buildInstance());
   return o;
 }
 
-checkUnnamed3713(core.List<api.Instance> o) {
+checkUnnamed3731(core.List<api.Instance> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstance(o[0]);
   checkInstance(o[1]);
@@ -531,7 +531,7 @@
   var o = new api.ListInstancesResponse();
   buildCounterListInstancesResponse++;
   if (buildCounterListInstancesResponse < 3) {
-    o.instances = buildUnnamed3713();
+    o.instances = buildUnnamed3731();
     o.nextPageToken = "foo";
   }
   buildCounterListInstancesResponse--;
@@ -541,20 +541,20 @@
 checkListInstancesResponse(api.ListInstancesResponse o) {
   buildCounterListInstancesResponse++;
   if (buildCounterListInstancesResponse < 3) {
-    checkUnnamed3713(o.instances);
+    checkUnnamed3731(o.instances);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListInstancesResponse--;
 }
 
-buildUnnamed3714() {
+buildUnnamed3732() {
   var o = new core.List<api.Location>();
   o.add(buildLocation());
   o.add(buildLocation());
   return o;
 }
 
-checkUnnamed3714(core.List<api.Location> o) {
+checkUnnamed3732(core.List<api.Location> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocation(o[0]);
   checkLocation(o[1]);
@@ -565,7 +565,7 @@
   var o = new api.ListLocationsResponse();
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    o.locations = buildUnnamed3714();
+    o.locations = buildUnnamed3732();
     o.nextPageToken = "foo";
   }
   buildCounterListLocationsResponse--;
@@ -575,20 +575,20 @@
 checkListLocationsResponse(api.ListLocationsResponse o) {
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    checkUnnamed3714(o.locations);
+    checkUnnamed3732(o.locations);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListLocationsResponse--;
 }
 
-buildUnnamed3715() {
+buildUnnamed3733() {
   var o = new core.List<api.Module>();
   o.add(buildModule());
   o.add(buildModule());
   return o;
 }
 
-checkUnnamed3715(core.List<api.Module> o) {
+checkUnnamed3733(core.List<api.Module> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkModule(o[0]);
   checkModule(o[1]);
@@ -599,7 +599,7 @@
   var o = new api.ListModulesResponse();
   buildCounterListModulesResponse++;
   if (buildCounterListModulesResponse < 3) {
-    o.modules = buildUnnamed3715();
+    o.modules = buildUnnamed3733();
     o.nextPageToken = "foo";
   }
   buildCounterListModulesResponse--;
@@ -609,20 +609,20 @@
 checkListModulesResponse(api.ListModulesResponse o) {
   buildCounterListModulesResponse++;
   if (buildCounterListModulesResponse < 3) {
-    checkUnnamed3715(o.modules);
+    checkUnnamed3733(o.modules);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListModulesResponse--;
 }
 
-buildUnnamed3716() {
+buildUnnamed3734() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed3716(core.List<api.Operation> o) {
+checkUnnamed3734(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -634,7 +634,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed3716();
+    o.operations = buildUnnamed3734();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -644,19 +644,19 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3716(o.operations);
+    checkUnnamed3734(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
 
-buildUnnamed3717() {
+buildUnnamed3735() {
   var o = new core.List<api.Version>();
   o.add(buildVersion());
   o.add(buildVersion());
   return o;
 }
 
-checkUnnamed3717(core.List<api.Version> o) {
+checkUnnamed3735(core.List<api.Version> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVersion(o[0]);
   checkVersion(o[1]);
@@ -668,7 +668,7 @@
   buildCounterListVersionsResponse++;
   if (buildCounterListVersionsResponse < 3) {
     o.nextPageToken = "foo";
-    o.versions = buildUnnamed3717();
+    o.versions = buildUnnamed3735();
   }
   buildCounterListVersionsResponse--;
   return o;
@@ -678,25 +678,25 @@
   buildCounterListVersionsResponse++;
   if (buildCounterListVersionsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3717(o.versions);
+    checkUnnamed3735(o.versions);
   }
   buildCounterListVersionsResponse--;
 }
 
-buildUnnamed3718() {
+buildUnnamed3736() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3718(core.Map<core.String, core.String> o) {
+checkUnnamed3736(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed3719() {
+buildUnnamed3737() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -711,7 +711,7 @@
   return o;
 }
 
-checkUnnamed3719(core.Map<core.String, core.Object> o) {
+checkUnnamed3737(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -730,9 +730,9 @@
   var o = new api.Location();
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
-    o.labels = buildUnnamed3718();
+    o.labels = buildUnnamed3736();
     o.locationId = "foo";
-    o.metadata = buildUnnamed3719();
+    o.metadata = buildUnnamed3737();
     o.name = "foo";
   }
   buildCounterLocation--;
@@ -742,9 +742,9 @@
 checkLocation(api.Location o) {
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
-    checkUnnamed3718(o.labels);
+    checkUnnamed3736(o.labels);
     unittest.expect(o.locationId, unittest.equals('foo'));
-    checkUnnamed3719(o.metadata);
+    checkUnnamed3737(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
   }
   buildCounterLocation--;
@@ -813,14 +813,14 @@
   buildCounterModule--;
 }
 
-buildUnnamed3720() {
+buildUnnamed3738() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3720(core.List<core.String> o) {
+checkUnnamed3738(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -831,7 +831,7 @@
   var o = new api.Network();
   buildCounterNetwork++;
   if (buildCounterNetwork < 3) {
-    o.forwardedPorts = buildUnnamed3720();
+    o.forwardedPorts = buildUnnamed3738();
     o.instanceTag = "foo";
     o.name = "foo";
   }
@@ -842,7 +842,7 @@
 checkNetwork(api.Network o) {
   buildCounterNetwork++;
   if (buildCounterNetwork < 3) {
-    checkUnnamed3720(o.forwardedPorts);
+    checkUnnamed3738(o.forwardedPorts);
     unittest.expect(o.instanceTag, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
   }
@@ -874,7 +874,7 @@
   buildCounterNetworkUtilization--;
 }
 
-buildUnnamed3721() {
+buildUnnamed3739() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -889,7 +889,7 @@
   return o;
 }
 
-checkUnnamed3721(core.Map<core.String, core.Object> o) {
+checkUnnamed3739(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -903,7 +903,7 @@
   unittest.expect(casted4["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3722() {
+buildUnnamed3740() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -918,7 +918,7 @@
   return o;
 }
 
-checkUnnamed3722(core.Map<core.String, core.Object> o) {
+checkUnnamed3740(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -939,9 +939,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed3721();
+    o.metadata = buildUnnamed3739();
     o.name = "foo";
-    o.response = buildUnnamed3722();
+    o.response = buildUnnamed3740();
   }
   buildCounterOperation--;
   return o;
@@ -952,9 +952,9 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed3721(o.metadata);
+    checkUnnamed3739(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3722(o.response);
+    checkUnnamed3740(o.response);
   }
   buildCounterOperation--;
 }
@@ -1015,14 +1015,14 @@
   buildCounterOperationMetadataExperimental--;
 }
 
-buildUnnamed3723() {
+buildUnnamed3741() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3723(core.List<core.String> o) {
+checkUnnamed3741(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1039,7 +1039,7 @@
     o.method = "foo";
     o.target = "foo";
     o.user = "foo";
-    o.warning = buildUnnamed3723();
+    o.warning = buildUnnamed3741();
   }
   buildCounterOperationMetadataV1--;
   return o;
@@ -1054,19 +1054,19 @@
     unittest.expect(o.method, unittest.equals('foo'));
     unittest.expect(o.target, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed3723(o.warning);
+    checkUnnamed3741(o.warning);
   }
   buildCounterOperationMetadataV1--;
 }
 
-buildUnnamed3724() {
+buildUnnamed3742() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3724(core.List<core.String> o) {
+checkUnnamed3742(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1083,7 +1083,7 @@
     o.method = "foo";
     o.target = "foo";
     o.user = "foo";
-    o.warning = buildUnnamed3724();
+    o.warning = buildUnnamed3742();
   }
   buildCounterOperationMetadataV1Alpha--;
   return o;
@@ -1098,19 +1098,19 @@
     unittest.expect(o.method, unittest.equals('foo'));
     unittest.expect(o.target, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed3724(o.warning);
+    checkUnnamed3742(o.warning);
   }
   buildCounterOperationMetadataV1Alpha--;
 }
 
-buildUnnamed3725() {
+buildUnnamed3743() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3725(core.List<core.String> o) {
+checkUnnamed3743(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1127,7 +1127,7 @@
     o.method = "foo";
     o.target = "foo";
     o.user = "foo";
-    o.warning = buildUnnamed3725();
+    o.warning = buildUnnamed3743();
   }
   buildCounterOperationMetadataV1Beta--;
   return o;
@@ -1142,7 +1142,7 @@
     unittest.expect(o.method, unittest.equals('foo'));
     unittest.expect(o.target, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed3725(o.warning);
+    checkUnnamed3743(o.warning);
   }
   buildCounterOperationMetadataV1Beta--;
 }
@@ -1195,14 +1195,14 @@
   buildCounterRequestUtilization--;
 }
 
-buildUnnamed3726() {
+buildUnnamed3744() {
   var o = new core.List<api.Volume>();
   o.add(buildVolume());
   o.add(buildVolume());
   return o;
 }
 
-checkUnnamed3726(core.List<api.Volume> o) {
+checkUnnamed3744(core.List<api.Volume> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVolume(o[0]);
   checkVolume(o[1]);
@@ -1216,7 +1216,7 @@
     o.cpu = 42.0;
     o.diskGb = 42.0;
     o.memoryGb = 42.0;
-    o.volumes = buildUnnamed3726();
+    o.volumes = buildUnnamed3744();
   }
   buildCounterResources--;
   return o;
@@ -1228,7 +1228,7 @@
     unittest.expect(o.cpu, unittest.equals(42.0));
     unittest.expect(o.diskGb, unittest.equals(42.0));
     unittest.expect(o.memoryGb, unittest.equals(42.0));
-    checkUnnamed3726(o.volumes);
+    checkUnnamed3744(o.volumes);
   }
   buildCounterResources--;
 }
@@ -1273,14 +1273,14 @@
   buildCounterSourceReference--;
 }
 
-buildUnnamed3727() {
+buildUnnamed3745() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3727(core.Map<core.String, core.String> o) {
+checkUnnamed3745(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1294,7 +1294,7 @@
     o.applicationReadable = true;
     o.directory = "foo";
     o.expiration = "foo";
-    o.httpHeaders = buildUnnamed3727();
+    o.httpHeaders = buildUnnamed3745();
     o.mimeType = "foo";
     o.requireMatchingFile = true;
   }
@@ -1308,21 +1308,21 @@
     unittest.expect(o.applicationReadable, unittest.isTrue);
     unittest.expect(o.directory, unittest.equals('foo'));
     unittest.expect(o.expiration, unittest.equals('foo'));
-    checkUnnamed3727(o.httpHeaders);
+    checkUnnamed3745(o.httpHeaders);
     unittest.expect(o.mimeType, unittest.equals('foo'));
     unittest.expect(o.requireMatchingFile, unittest.isTrue);
   }
   buildCounterStaticDirectoryHandler--;
 }
 
-buildUnnamed3728() {
+buildUnnamed3746() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3728(core.Map<core.String, core.String> o) {
+checkUnnamed3746(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1335,7 +1335,7 @@
   if (buildCounterStaticFilesHandler < 3) {
     o.applicationReadable = true;
     o.expiration = "foo";
-    o.httpHeaders = buildUnnamed3728();
+    o.httpHeaders = buildUnnamed3746();
     o.mimeType = "foo";
     o.path = "foo";
     o.requireMatchingFile = true;
@@ -1350,7 +1350,7 @@
   if (buildCounterStaticFilesHandler < 3) {
     unittest.expect(o.applicationReadable, unittest.isTrue);
     unittest.expect(o.expiration, unittest.equals('foo'));
-    checkUnnamed3728(o.httpHeaders);
+    checkUnnamed3746(o.httpHeaders);
     unittest.expect(o.mimeType, unittest.equals('foo'));
     unittest.expect(o.path, unittest.equals('foo'));
     unittest.expect(o.requireMatchingFile, unittest.isTrue);
@@ -1359,7 +1359,7 @@
   buildCounterStaticFilesHandler--;
 }
 
-buildUnnamed3729() {
+buildUnnamed3747() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1374,7 +1374,7 @@
   return o;
 }
 
-checkUnnamed3729(core.Map<core.String, core.Object> o) {
+checkUnnamed3747(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted7 = (o["x"]) as core.Map;
   unittest.expect(casted7, unittest.hasLength(3));
@@ -1388,17 +1388,17 @@
   unittest.expect(casted8["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3730() {
+buildUnnamed3748() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed3729());
-  o.add(buildUnnamed3729());
+  o.add(buildUnnamed3747());
+  o.add(buildUnnamed3747());
   return o;
 }
 
-checkUnnamed3730(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed3748(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed3729(o[0]);
-  checkUnnamed3729(o[1]);
+  checkUnnamed3747(o[0]);
+  checkUnnamed3747(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -1407,7 +1407,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed3730();
+    o.details = buildUnnamed3748();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -1418,20 +1418,20 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed3730(o.details);
+    checkUnnamed3748(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
 }
 
-buildUnnamed3731() {
+buildUnnamed3749() {
   var o = new core.Map<core.String, core.double>();
   o["x"] = 42.0;
   o["y"] = 42.0;
   return o;
 }
 
-checkUnnamed3731(core.Map<core.String, core.double> o) {
+checkUnnamed3749(core.Map<core.String, core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals(42.0));
   unittest.expect(o["y"], unittest.equals(42.0));
@@ -1442,7 +1442,7 @@
   var o = new api.TrafficSplit();
   buildCounterTrafficSplit++;
   if (buildCounterTrafficSplit < 3) {
-    o.allocations = buildUnnamed3731();
+    o.allocations = buildUnnamed3749();
     o.shardBy = "foo";
   }
   buildCounterTrafficSplit--;
@@ -1452,7 +1452,7 @@
 checkTrafficSplit(api.TrafficSplit o) {
   buildCounterTrafficSplit++;
   if (buildCounterTrafficSplit < 3) {
-    checkUnnamed3731(o.allocations);
+    checkUnnamed3749(o.allocations);
     unittest.expect(o.shardBy, unittest.equals('foo'));
   }
   buildCounterTrafficSplit--;
@@ -1516,79 +1516,79 @@
   buildCounterUrlMap--;
 }
 
-buildUnnamed3732() {
+buildUnnamed3750() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3732(core.Map<core.String, core.String> o) {
+checkUnnamed3750(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed3733() {
+buildUnnamed3751() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3733(core.Map<core.String, core.String> o) {
+checkUnnamed3751(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed3734() {
+buildUnnamed3752() {
   var o = new core.List<api.ErrorHandler>();
   o.add(buildErrorHandler());
   o.add(buildErrorHandler());
   return o;
 }
 
-checkUnnamed3734(core.List<api.ErrorHandler> o) {
+checkUnnamed3752(core.List<api.ErrorHandler> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkErrorHandler(o[0]);
   checkErrorHandler(o[1]);
 }
 
-buildUnnamed3735() {
+buildUnnamed3753() {
   var o = new core.List<api.UrlMap>();
   o.add(buildUrlMap());
   o.add(buildUrlMap());
   return o;
 }
 
-checkUnnamed3735(core.List<api.UrlMap> o) {
+checkUnnamed3753(core.List<api.UrlMap> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUrlMap(o[0]);
   checkUrlMap(o[1]);
 }
 
-buildUnnamed3736() {
+buildUnnamed3754() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3736(core.List<core.String> o) {
+checkUnnamed3754(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3737() {
+buildUnnamed3755() {
   var o = new core.List<api.Library>();
   o.add(buildLibrary());
   o.add(buildLibrary());
   return o;
 }
 
-checkUnnamed3737(core.List<api.Library> o) {
+checkUnnamed3755(core.List<api.Library> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLibrary(o[0]);
   checkLibrary(o[1]);
@@ -1602,20 +1602,20 @@
     o.apiConfig = buildApiConfigHandler();
     o.automaticScaling = buildAutomaticScaling();
     o.basicScaling = buildBasicScaling();
-    o.betaSettings = buildUnnamed3732();
+    o.betaSettings = buildUnnamed3750();
     o.creationTime = "foo";
     o.defaultExpiration = "foo";
     o.deployer = "foo";
     o.deployment = buildDeployment();
     o.env = "foo";
-    o.envVariables = buildUnnamed3733();
-    o.errorHandlers = buildUnnamed3734();
-    o.handlers = buildUnnamed3735();
+    o.envVariables = buildUnnamed3751();
+    o.errorHandlers = buildUnnamed3752();
+    o.handlers = buildUnnamed3753();
     o.healthCheck = buildHealthCheck();
     o.id = "foo";
-    o.inboundServices = buildUnnamed3736();
+    o.inboundServices = buildUnnamed3754();
     o.instanceClass = "foo";
-    o.libraries = buildUnnamed3737();
+    o.libraries = buildUnnamed3755();
     o.manualScaling = buildManualScaling();
     o.name = "foo";
     o.network = buildNetwork();
@@ -1637,20 +1637,20 @@
     checkApiConfigHandler(o.apiConfig);
     checkAutomaticScaling(o.automaticScaling);
     checkBasicScaling(o.basicScaling);
-    checkUnnamed3732(o.betaSettings);
+    checkUnnamed3750(o.betaSettings);
     unittest.expect(o.creationTime, unittest.equals('foo'));
     unittest.expect(o.defaultExpiration, unittest.equals('foo'));
     unittest.expect(o.deployer, unittest.equals('foo'));
     checkDeployment(o.deployment);
     unittest.expect(o.env, unittest.equals('foo'));
-    checkUnnamed3733(o.envVariables);
-    checkUnnamed3734(o.errorHandlers);
-    checkUnnamed3735(o.handlers);
+    checkUnnamed3751(o.envVariables);
+    checkUnnamed3752(o.errorHandlers);
+    checkUnnamed3753(o.handlers);
     checkHealthCheck(o.healthCheck);
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed3736(o.inboundServices);
+    checkUnnamed3754(o.inboundServices);
     unittest.expect(o.instanceClass, unittest.equals('foo'));
-    checkUnnamed3737(o.libraries);
+    checkUnnamed3755(o.libraries);
     checkManualScaling(o.manualScaling);
     unittest.expect(o.name, unittest.equals('foo'));
     checkNetwork(o.network);
@@ -2062,6 +2062,7 @@
       var mock = new HttpServerMock();
       api.AppsResourceApi res = new api.AppengineApi(mock).apps;
       var arg_request = buildApplication();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Application.fromJson(json);
         checkApplication(obj);
@@ -2095,6 +2096,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2103,7 +2105,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request)
+          .create(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2114,6 +2116,7 @@
       api.AppsResourceApi res = new api.AppengineApi(mock).apps;
       var arg_appsId = "foo";
       var arg_ensureResourcesExist = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2149,6 +2152,7 @@
         }
         unittest.expect(queryMap["ensureResourcesExist"].first,
             unittest.equals("$arg_ensureResourcesExist"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2157,7 +2161,9 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, ensureResourcesExist: arg_ensureResourcesExist)
+          .get(arg_appsId,
+              ensureResourcesExist: arg_ensureResourcesExist,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Application response) {
         checkApplication(response);
       })));
@@ -2169,6 +2175,7 @@
       var arg_request = buildApplication();
       var arg_appsId = "foo";
       var arg_mask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Application.fromJson(json);
         checkApplication(obj);
@@ -2206,6 +2213,7 @@
           }
         }
         unittest.expect(queryMap["mask"].first, unittest.equals(arg_mask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2214,7 +2222,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_appsId, mask: arg_mask)
+          .patch(arg_request, arg_appsId, mask: arg_mask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2228,6 +2236,7 @@
           new api.AppengineApi(mock).apps.locations;
       var arg_appsId = "foo";
       var arg_locationsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2270,6 +2279,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2278,7 +2288,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_locationsId)
+          .get(arg_appsId, arg_locationsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Location response) {
         checkLocation(response);
       })));
@@ -2289,9 +2299,10 @@
       api.AppsLocationsResourceApi res =
           new api.AppengineApi(mock).apps.locations;
       var arg_appsId = "foo";
+      var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_filter = "foo";
-      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2331,11 +2342,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2345,9 +2357,10 @@
       }), true);
       res
           .list(arg_appsId,
+              pageToken: arg_pageToken,
               pageSize: arg_pageSize,
               filter: arg_filter,
-              pageToken: arg_pageToken)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLocationsResponse response) {
         checkListLocationsResponse(response);
       })));
@@ -2360,6 +2373,7 @@
       api.AppsModulesResourceApi res = new api.AppengineApi(mock).apps.modules;
       var arg_appsId = "foo";
       var arg_modulesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2402,6 +2416,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2410,7 +2425,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_modulesId)
+          .delete(arg_appsId, arg_modulesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2421,6 +2436,7 @@
       api.AppsModulesResourceApi res = new api.AppengineApi(mock).apps.modules;
       var arg_appsId = "foo";
       var arg_modulesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2463,6 +2479,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2471,7 +2488,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_modulesId)
+          .get(arg_appsId, arg_modulesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Module response) {
         checkModule(response);
       })));
@@ -2481,8 +2498,9 @@
       var mock = new HttpServerMock();
       api.AppsModulesResourceApi res = new api.AppengineApi(mock).apps.modules;
       var arg_appsId = "foo";
-      var arg_pageSize = 42;
       var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2522,10 +2540,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(core.int.parse(queryMap["pageSize"].first),
-            unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2534,7 +2553,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_appsId, pageSize: arg_pageSize, pageToken: arg_pageToken)
+          .list(arg_appsId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListModulesResponse response) {
         checkListModulesResponse(response);
       })));
@@ -2548,6 +2570,7 @@
       var arg_modulesId = "foo";
       var arg_migrateTraffic = true;
       var arg_mask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Module.fromJson(json);
         checkModule(obj);
@@ -2596,6 +2619,7 @@
         unittest.expect(queryMap["migrateTraffic"].first,
             unittest.equals("$arg_migrateTraffic"));
         unittest.expect(queryMap["mask"].first, unittest.equals(arg_mask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2605,7 +2629,9 @@
       }), true);
       res
           .patch(arg_request, arg_appsId, arg_modulesId,
-              migrateTraffic: arg_migrateTraffic, mask: arg_mask)
+              migrateTraffic: arg_migrateTraffic,
+              mask: arg_mask,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2620,6 +2646,7 @@
       var arg_request = buildVersion();
       var arg_appsId = "foo";
       var arg_modulesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Version.fromJson(json);
         checkVersion(obj);
@@ -2671,6 +2698,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2679,7 +2707,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_appsId, arg_modulesId)
+          .create(arg_request, arg_appsId, arg_modulesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2692,6 +2720,7 @@
       var arg_appsId = "foo";
       var arg_modulesId = "foo";
       var arg_versionsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2743,6 +2772,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2751,7 +2781,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_modulesId, arg_versionsId)
+          .delete(arg_appsId, arg_modulesId, arg_versionsId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2765,6 +2796,7 @@
       var arg_modulesId = "foo";
       var arg_versionsId = "foo";
       var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2817,6 +2849,7 @@
           }
         }
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2825,7 +2858,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_modulesId, arg_versionsId, view: arg_view)
+          .get(arg_appsId, arg_modulesId, arg_versionsId,
+              view: arg_view, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Version response) {
         checkVersion(response);
       })));
@@ -2840,6 +2874,7 @@
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2893,6 +2928,7 @@
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2902,7 +2938,10 @@
       }), true);
       res
           .list(arg_appsId, arg_modulesId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize, view: arg_view)
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              view: arg_view,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListVersionsResponse response) {
         checkListVersionsResponse(response);
       })));
@@ -2917,6 +2956,7 @@
       var arg_modulesId = "foo";
       var arg_versionsId = "foo";
       var arg_mask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Version.fromJson(json);
         checkVersion(obj);
@@ -2972,6 +3012,7 @@
           }
         }
         unittest.expect(queryMap["mask"].first, unittest.equals(arg_mask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2981,7 +3022,7 @@
       }), true);
       res
           .patch(arg_request, arg_appsId, arg_modulesId, arg_versionsId,
-              mask: arg_mask)
+              mask: arg_mask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2998,6 +3039,7 @@
       var arg_modulesId = "foo";
       var arg_versionsId = "foo";
       var arg_instancesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DebugInstanceRequest.fromJson(json);
         checkDebugInstanceRequest(obj);
@@ -3067,6 +3109,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3076,7 +3119,8 @@
       }), true);
       res
           .debug(arg_request, arg_appsId, arg_modulesId, arg_versionsId,
-              arg_instancesId)
+              arg_instancesId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3090,6 +3134,7 @@
       var arg_modulesId = "foo";
       var arg_versionsId = "foo";
       var arg_instancesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3150,6 +3195,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3158,7 +3204,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_modulesId, arg_versionsId, arg_instancesId)
+          .delete(arg_appsId, arg_modulesId, arg_versionsId, arg_instancesId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3172,6 +3219,7 @@
       var arg_modulesId = "foo";
       var arg_versionsId = "foo";
       var arg_instancesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3232,6 +3280,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3240,7 +3289,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_modulesId, arg_versionsId, arg_instancesId)
+          .get(arg_appsId, arg_modulesId, arg_versionsId, arg_instancesId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Instance response) {
         checkInstance(response);
       })));
@@ -3255,6 +3305,7 @@
       var arg_versionsId = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3316,6 +3367,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3325,7 +3377,9 @@
       }), true);
       res
           .list(arg_appsId, arg_modulesId, arg_versionsId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListInstancesResponse response) {
         checkListInstancesResponse(response);
       })));
@@ -3339,6 +3393,7 @@
           new api.AppengineApi(mock).apps.operations;
       var arg_appsId = "foo";
       var arg_operationsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3381,6 +3436,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3389,7 +3445,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_operationsId)
+          .get(arg_appsId, arg_operationsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3403,6 +3459,7 @@
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3447,6 +3504,7 @@
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3458,7 +3516,8 @@
           .list(arg_appsId,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              filter: arg_filter)
+              filter: arg_filter,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
diff --git a/generated/googleapis_beta/test/appengine/v1beta5_test.dart b/generated/googleapis_beta/test/appengine/v1beta5_test.dart
index dfbfbe5..9ad65aa 100644
--- a/generated/googleapis_beta/test/appengine/v1beta5_test.dart
+++ b/generated/googleapis_beta/test/appengine/v1beta5_test.dart
@@ -96,14 +96,14 @@
   buildCounterApiEndpointHandler--;
 }
 
-buildUnnamed3683() {
+buildUnnamed3701() {
   var o = new core.List<api.UrlDispatchRule>();
   o.add(buildUrlDispatchRule());
   o.add(buildUrlDispatchRule());
   return o;
 }
 
-checkUnnamed3683(core.List<api.UrlDispatchRule> o) {
+checkUnnamed3701(core.List<api.UrlDispatchRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUrlDispatchRule(o[0]);
   checkUrlDispatchRule(o[1]);
@@ -119,7 +119,7 @@
     o.defaultBucket = "foo";
     o.defaultCookieExpiration = "foo";
     o.defaultHostname = "foo";
-    o.dispatchRules = buildUnnamed3683();
+    o.dispatchRules = buildUnnamed3701();
     o.iap = buildIdentityAwareProxy();
     o.id = "foo";
     o.location = "foo";
@@ -137,7 +137,7 @@
     unittest.expect(o.defaultBucket, unittest.equals('foo'));
     unittest.expect(o.defaultCookieExpiration, unittest.equals('foo'));
     unittest.expect(o.defaultHostname, unittest.equals('foo'));
-    checkUnnamed3683(o.dispatchRules);
+    checkUnnamed3701(o.dispatchRules);
     checkIdentityAwareProxy(o.iap);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.location, unittest.equals('foo'));
@@ -267,27 +267,27 @@
   buildCounterDebugInstanceRequest--;
 }
 
-buildUnnamed3684() {
+buildUnnamed3702() {
   var o = new core.Map<core.String, api.FileInfo>();
   o["x"] = buildFileInfo();
   o["y"] = buildFileInfo();
   return o;
 }
 
-checkUnnamed3684(core.Map<core.String, api.FileInfo> o) {
+checkUnnamed3702(core.Map<core.String, api.FileInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFileInfo(o["x"]);
   checkFileInfo(o["y"]);
 }
 
-buildUnnamed3685() {
+buildUnnamed3703() {
   var o = new core.List<api.SourceReference>();
   o.add(buildSourceReference());
   o.add(buildSourceReference());
   return o;
 }
 
-checkUnnamed3685(core.List<api.SourceReference> o) {
+checkUnnamed3703(core.List<api.SourceReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSourceReference(o[0]);
   checkSourceReference(o[1]);
@@ -299,8 +299,8 @@
   buildCounterDeployment++;
   if (buildCounterDeployment < 3) {
     o.container = buildContainerInfo();
-    o.files = buildUnnamed3684();
-    o.sourceReferences = buildUnnamed3685();
+    o.files = buildUnnamed3702();
+    o.sourceReferences = buildUnnamed3703();
   }
   buildCounterDeployment--;
   return o;
@@ -310,8 +310,8 @@
   buildCounterDeployment++;
   if (buildCounterDeployment < 3) {
     checkContainerInfo(o.container);
-    checkUnnamed3684(o.files);
-    checkUnnamed3685(o.sourceReferences);
+    checkUnnamed3702(o.files);
+    checkUnnamed3703(o.sourceReferences);
   }
   buildCounterDeployment--;
 }
@@ -534,14 +534,14 @@
   buildCounterLibrary--;
 }
 
-buildUnnamed3686() {
+buildUnnamed3704() {
   var o = new core.List<api.Instance>();
   o.add(buildInstance());
   o.add(buildInstance());
   return o;
 }
 
-checkUnnamed3686(core.List<api.Instance> o) {
+checkUnnamed3704(core.List<api.Instance> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstance(o[0]);
   checkInstance(o[1]);
@@ -552,7 +552,7 @@
   var o = new api.ListInstancesResponse();
   buildCounterListInstancesResponse++;
   if (buildCounterListInstancesResponse < 3) {
-    o.instances = buildUnnamed3686();
+    o.instances = buildUnnamed3704();
     o.nextPageToken = "foo";
   }
   buildCounterListInstancesResponse--;
@@ -562,20 +562,20 @@
 checkListInstancesResponse(api.ListInstancesResponse o) {
   buildCounterListInstancesResponse++;
   if (buildCounterListInstancesResponse < 3) {
-    checkUnnamed3686(o.instances);
+    checkUnnamed3704(o.instances);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListInstancesResponse--;
 }
 
-buildUnnamed3687() {
+buildUnnamed3705() {
   var o = new core.List<api.Location>();
   o.add(buildLocation());
   o.add(buildLocation());
   return o;
 }
 
-checkUnnamed3687(core.List<api.Location> o) {
+checkUnnamed3705(core.List<api.Location> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocation(o[0]);
   checkLocation(o[1]);
@@ -586,7 +586,7 @@
   var o = new api.ListLocationsResponse();
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    o.locations = buildUnnamed3687();
+    o.locations = buildUnnamed3705();
     o.nextPageToken = "foo";
   }
   buildCounterListLocationsResponse--;
@@ -596,20 +596,20 @@
 checkListLocationsResponse(api.ListLocationsResponse o) {
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    checkUnnamed3687(o.locations);
+    checkUnnamed3705(o.locations);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListLocationsResponse--;
 }
 
-buildUnnamed3688() {
+buildUnnamed3706() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed3688(core.List<api.Operation> o) {
+checkUnnamed3706(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -621,7 +621,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed3688();
+    o.operations = buildUnnamed3706();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -631,19 +631,19 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3688(o.operations);
+    checkUnnamed3706(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
 
-buildUnnamed3689() {
+buildUnnamed3707() {
   var o = new core.List<api.Service>();
   o.add(buildService());
   o.add(buildService());
   return o;
 }
 
-checkUnnamed3689(core.List<api.Service> o) {
+checkUnnamed3707(core.List<api.Service> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkService(o[0]);
   checkService(o[1]);
@@ -655,7 +655,7 @@
   buildCounterListServicesResponse++;
   if (buildCounterListServicesResponse < 3) {
     o.nextPageToken = "foo";
-    o.services = buildUnnamed3689();
+    o.services = buildUnnamed3707();
   }
   buildCounterListServicesResponse--;
   return o;
@@ -665,19 +665,19 @@
   buildCounterListServicesResponse++;
   if (buildCounterListServicesResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3689(o.services);
+    checkUnnamed3707(o.services);
   }
   buildCounterListServicesResponse--;
 }
 
-buildUnnamed3690() {
+buildUnnamed3708() {
   var o = new core.List<api.Version>();
   o.add(buildVersion());
   o.add(buildVersion());
   return o;
 }
 
-checkUnnamed3690(core.List<api.Version> o) {
+checkUnnamed3708(core.List<api.Version> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVersion(o[0]);
   checkVersion(o[1]);
@@ -689,7 +689,7 @@
   buildCounterListVersionsResponse++;
   if (buildCounterListVersionsResponse < 3) {
     o.nextPageToken = "foo";
-    o.versions = buildUnnamed3690();
+    o.versions = buildUnnamed3708();
   }
   buildCounterListVersionsResponse--;
   return o;
@@ -699,25 +699,25 @@
   buildCounterListVersionsResponse++;
   if (buildCounterListVersionsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3690(o.versions);
+    checkUnnamed3708(o.versions);
   }
   buildCounterListVersionsResponse--;
 }
 
-buildUnnamed3691() {
+buildUnnamed3709() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3691(core.Map<core.String, core.String> o) {
+checkUnnamed3709(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed3692() {
+buildUnnamed3710() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -732,7 +732,7 @@
   return o;
 }
 
-checkUnnamed3692(core.Map<core.String, core.Object> o) {
+checkUnnamed3710(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -751,9 +751,9 @@
   var o = new api.Location();
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
-    o.labels = buildUnnamed3691();
+    o.labels = buildUnnamed3709();
     o.locationId = "foo";
-    o.metadata = buildUnnamed3692();
+    o.metadata = buildUnnamed3710();
     o.name = "foo";
   }
   buildCounterLocation--;
@@ -763,9 +763,9 @@
 checkLocation(api.Location o) {
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
-    checkUnnamed3691(o.labels);
+    checkUnnamed3709(o.labels);
     unittest.expect(o.locationId, unittest.equals('foo'));
-    checkUnnamed3692(o.metadata);
+    checkUnnamed3710(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
   }
   buildCounterLocation--;
@@ -811,14 +811,14 @@
   buildCounterManualScaling--;
 }
 
-buildUnnamed3693() {
+buildUnnamed3711() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3693(core.List<core.String> o) {
+checkUnnamed3711(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -829,7 +829,7 @@
   var o = new api.Network();
   buildCounterNetwork++;
   if (buildCounterNetwork < 3) {
-    o.forwardedPorts = buildUnnamed3693();
+    o.forwardedPorts = buildUnnamed3711();
     o.instanceTag = "foo";
     o.name = "foo";
     o.subnetworkName = "foo";
@@ -841,7 +841,7 @@
 checkNetwork(api.Network o) {
   buildCounterNetwork++;
   if (buildCounterNetwork < 3) {
-    checkUnnamed3693(o.forwardedPorts);
+    checkUnnamed3711(o.forwardedPorts);
     unittest.expect(o.instanceTag, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.subnetworkName, unittest.equals('foo'));
@@ -874,7 +874,7 @@
   buildCounterNetworkUtilization--;
 }
 
-buildUnnamed3694() {
+buildUnnamed3712() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -889,7 +889,7 @@
   return o;
 }
 
-checkUnnamed3694(core.Map<core.String, core.Object> o) {
+checkUnnamed3712(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -903,7 +903,7 @@
   unittest.expect(casted4["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3695() {
+buildUnnamed3713() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -918,7 +918,7 @@
   return o;
 }
 
-checkUnnamed3695(core.Map<core.String, core.Object> o) {
+checkUnnamed3713(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -939,9 +939,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed3694();
+    o.metadata = buildUnnamed3712();
     o.name = "foo";
-    o.response = buildUnnamed3695();
+    o.response = buildUnnamed3713();
   }
   buildCounterOperation--;
   return o;
@@ -952,9 +952,9 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed3694(o.metadata);
+    checkUnnamed3712(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3695(o.response);
+    checkUnnamed3713(o.response);
   }
   buildCounterOperation--;
 }
@@ -1015,14 +1015,14 @@
   buildCounterOperationMetadataExperimental--;
 }
 
-buildUnnamed3696() {
+buildUnnamed3714() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3696(core.List<core.String> o) {
+checkUnnamed3714(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1039,7 +1039,7 @@
     o.method = "foo";
     o.target = "foo";
     o.user = "foo";
-    o.warning = buildUnnamed3696();
+    o.warning = buildUnnamed3714();
   }
   buildCounterOperationMetadataV1--;
   return o;
@@ -1054,19 +1054,19 @@
     unittest.expect(o.method, unittest.equals('foo'));
     unittest.expect(o.target, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed3696(o.warning);
+    checkUnnamed3714(o.warning);
   }
   buildCounterOperationMetadataV1--;
 }
 
-buildUnnamed3697() {
+buildUnnamed3715() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3697(core.List<core.String> o) {
+checkUnnamed3715(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1083,7 +1083,7 @@
     o.method = "foo";
     o.target = "foo";
     o.user = "foo";
-    o.warning = buildUnnamed3697();
+    o.warning = buildUnnamed3715();
   }
   buildCounterOperationMetadataV1Alpha--;
   return o;
@@ -1098,19 +1098,19 @@
     unittest.expect(o.method, unittest.equals('foo'));
     unittest.expect(o.target, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed3697(o.warning);
+    checkUnnamed3715(o.warning);
   }
   buildCounterOperationMetadataV1Alpha--;
 }
 
-buildUnnamed3698() {
+buildUnnamed3716() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3698(core.List<core.String> o) {
+checkUnnamed3716(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1127,7 +1127,7 @@
     o.method = "foo";
     o.target = "foo";
     o.user = "foo";
-    o.warning = buildUnnamed3698();
+    o.warning = buildUnnamed3716();
   }
   buildCounterOperationMetadataV1Beta--;
   return o;
@@ -1142,7 +1142,7 @@
     unittest.expect(o.method, unittest.equals('foo'));
     unittest.expect(o.target, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed3698(o.warning);
+    checkUnnamed3716(o.warning);
   }
   buildCounterOperationMetadataV1Beta--;
 }
@@ -1195,14 +1195,14 @@
   buildCounterRequestUtilization--;
 }
 
-buildUnnamed3699() {
+buildUnnamed3717() {
   var o = new core.List<api.Volume>();
   o.add(buildVolume());
   o.add(buildVolume());
   return o;
 }
 
-checkUnnamed3699(core.List<api.Volume> o) {
+checkUnnamed3717(core.List<api.Volume> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVolume(o[0]);
   checkVolume(o[1]);
@@ -1216,7 +1216,7 @@
     o.cpu = 42.0;
     o.diskGb = 42.0;
     o.memoryGb = 42.0;
-    o.volumes = buildUnnamed3699();
+    o.volumes = buildUnnamed3717();
   }
   buildCounterResources--;
   return o;
@@ -1228,7 +1228,7 @@
     unittest.expect(o.cpu, unittest.equals(42.0));
     unittest.expect(o.diskGb, unittest.equals(42.0));
     unittest.expect(o.memoryGb, unittest.equals(42.0));
-    checkUnnamed3699(o.volumes);
+    checkUnnamed3717(o.volumes);
   }
   buildCounterResources--;
 }
@@ -1296,14 +1296,14 @@
   buildCounterSourceReference--;
 }
 
-buildUnnamed3700() {
+buildUnnamed3718() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3700(core.Map<core.String, core.String> o) {
+checkUnnamed3718(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1316,7 +1316,7 @@
   if (buildCounterStaticFilesHandler < 3) {
     o.applicationReadable = true;
     o.expiration = "foo";
-    o.httpHeaders = buildUnnamed3700();
+    o.httpHeaders = buildUnnamed3718();
     o.mimeType = "foo";
     o.path = "foo";
     o.requireMatchingFile = true;
@@ -1331,7 +1331,7 @@
   if (buildCounterStaticFilesHandler < 3) {
     unittest.expect(o.applicationReadable, unittest.isTrue);
     unittest.expect(o.expiration, unittest.equals('foo'));
-    checkUnnamed3700(o.httpHeaders);
+    checkUnnamed3718(o.httpHeaders);
     unittest.expect(o.mimeType, unittest.equals('foo'));
     unittest.expect(o.path, unittest.equals('foo'));
     unittest.expect(o.requireMatchingFile, unittest.isTrue);
@@ -1340,7 +1340,7 @@
   buildCounterStaticFilesHandler--;
 }
 
-buildUnnamed3701() {
+buildUnnamed3719() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1355,7 +1355,7 @@
   return o;
 }
 
-checkUnnamed3701(core.Map<core.String, core.Object> o) {
+checkUnnamed3719(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted7 = (o["x"]) as core.Map;
   unittest.expect(casted7, unittest.hasLength(3));
@@ -1369,17 +1369,17 @@
   unittest.expect(casted8["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3702() {
+buildUnnamed3720() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed3701());
-  o.add(buildUnnamed3701());
+  o.add(buildUnnamed3719());
+  o.add(buildUnnamed3719());
   return o;
 }
 
-checkUnnamed3702(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed3720(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed3701(o[0]);
-  checkUnnamed3701(o[1]);
+  checkUnnamed3719(o[0]);
+  checkUnnamed3719(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -1388,7 +1388,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed3702();
+    o.details = buildUnnamed3720();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -1399,20 +1399,20 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed3702(o.details);
+    checkUnnamed3720(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
 }
 
-buildUnnamed3703() {
+buildUnnamed3721() {
   var o = new core.Map<core.String, core.double>();
   o["x"] = 42.0;
   o["y"] = 42.0;
   return o;
 }
 
-checkUnnamed3703(core.Map<core.String, core.double> o) {
+checkUnnamed3721(core.Map<core.String, core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals(42.0));
   unittest.expect(o["y"], unittest.equals(42.0));
@@ -1423,7 +1423,7 @@
   var o = new api.TrafficSplit();
   buildCounterTrafficSplit++;
   if (buildCounterTrafficSplit < 3) {
-    o.allocations = buildUnnamed3703();
+    o.allocations = buildUnnamed3721();
     o.shardBy = "foo";
   }
   buildCounterTrafficSplit--;
@@ -1433,7 +1433,7 @@
 checkTrafficSplit(api.TrafficSplit o) {
   buildCounterTrafficSplit++;
   if (buildCounterTrafficSplit < 3) {
-    checkUnnamed3703(o.allocations);
+    checkUnnamed3721(o.allocations);
     unittest.expect(o.shardBy, unittest.equals('foo'));
   }
   buildCounterTrafficSplit--;
@@ -1495,79 +1495,79 @@
   buildCounterUrlMap--;
 }
 
-buildUnnamed3704() {
+buildUnnamed3722() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3704(core.Map<core.String, core.String> o) {
+checkUnnamed3722(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed3705() {
+buildUnnamed3723() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3705(core.Map<core.String, core.String> o) {
+checkUnnamed3723(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed3706() {
+buildUnnamed3724() {
   var o = new core.List<api.ErrorHandler>();
   o.add(buildErrorHandler());
   o.add(buildErrorHandler());
   return o;
 }
 
-checkUnnamed3706(core.List<api.ErrorHandler> o) {
+checkUnnamed3724(core.List<api.ErrorHandler> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkErrorHandler(o[0]);
   checkErrorHandler(o[1]);
 }
 
-buildUnnamed3707() {
+buildUnnamed3725() {
   var o = new core.List<api.UrlMap>();
   o.add(buildUrlMap());
   o.add(buildUrlMap());
   return o;
 }
 
-checkUnnamed3707(core.List<api.UrlMap> o) {
+checkUnnamed3725(core.List<api.UrlMap> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUrlMap(o[0]);
   checkUrlMap(o[1]);
 }
 
-buildUnnamed3708() {
+buildUnnamed3726() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3708(core.List<core.String> o) {
+checkUnnamed3726(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3709() {
+buildUnnamed3727() {
   var o = new core.List<api.Library>();
   o.add(buildLibrary());
   o.add(buildLibrary());
   return o;
 }
 
-checkUnnamed3709(core.List<api.Library> o) {
+checkUnnamed3727(core.List<api.Library> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLibrary(o[0]);
   checkLibrary(o[1]);
@@ -1581,7 +1581,7 @@
     o.apiConfig = buildApiConfigHandler();
     o.automaticScaling = buildAutomaticScaling();
     o.basicScaling = buildBasicScaling();
-    o.betaSettings = buildUnnamed3704();
+    o.betaSettings = buildUnnamed3722();
     o.creationTime = "foo";
     o.defaultExpiration = "foo";
     o.deployer = "foo";
@@ -1589,14 +1589,14 @@
     o.diskUsageBytes = "foo";
     o.endpointsApiService = buildEndpointsApiService();
     o.env = "foo";
-    o.envVariables = buildUnnamed3705();
-    o.errorHandlers = buildUnnamed3706();
-    o.handlers = buildUnnamed3707();
+    o.envVariables = buildUnnamed3723();
+    o.errorHandlers = buildUnnamed3724();
+    o.handlers = buildUnnamed3725();
     o.healthCheck = buildHealthCheck();
     o.id = "foo";
-    o.inboundServices = buildUnnamed3708();
+    o.inboundServices = buildUnnamed3726();
     o.instanceClass = "foo";
-    o.libraries = buildUnnamed3709();
+    o.libraries = buildUnnamed3727();
     o.manualScaling = buildManualScaling();
     o.name = "foo";
     o.network = buildNetwork();
@@ -1618,7 +1618,7 @@
     checkApiConfigHandler(o.apiConfig);
     checkAutomaticScaling(o.automaticScaling);
     checkBasicScaling(o.basicScaling);
-    checkUnnamed3704(o.betaSettings);
+    checkUnnamed3722(o.betaSettings);
     unittest.expect(o.creationTime, unittest.equals('foo'));
     unittest.expect(o.defaultExpiration, unittest.equals('foo'));
     unittest.expect(o.deployer, unittest.equals('foo'));
@@ -1626,14 +1626,14 @@
     unittest.expect(o.diskUsageBytes, unittest.equals('foo'));
     checkEndpointsApiService(o.endpointsApiService);
     unittest.expect(o.env, unittest.equals('foo'));
-    checkUnnamed3705(o.envVariables);
-    checkUnnamed3706(o.errorHandlers);
-    checkUnnamed3707(o.handlers);
+    checkUnnamed3723(o.envVariables);
+    checkUnnamed3724(o.errorHandlers);
+    checkUnnamed3725(o.handlers);
     checkHealthCheck(o.healthCheck);
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed3708(o.inboundServices);
+    checkUnnamed3726(o.inboundServices);
     unittest.expect(o.instanceClass, unittest.equals('foo'));
-    checkUnnamed3709(o.libraries);
+    checkUnnamed3727(o.libraries);
     checkManualScaling(o.manualScaling);
     unittest.expect(o.name, unittest.equals('foo'));
     checkNetwork(o.network);
@@ -2045,6 +2045,7 @@
       var mock = new HttpServerMock();
       api.AppsResourceApi res = new api.AppengineApi(mock).apps;
       var arg_request = buildApplication();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Application.fromJson(json);
         checkApplication(obj);
@@ -2078,6 +2079,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2086,7 +2088,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request)
+          .create(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2097,6 +2099,7 @@
       api.AppsResourceApi res = new api.AppengineApi(mock).apps;
       var arg_appsId = "foo";
       var arg_ensureResourcesExist = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2132,6 +2135,7 @@
         }
         unittest.expect(queryMap["ensureResourcesExist"].first,
             unittest.equals("$arg_ensureResourcesExist"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2140,7 +2144,9 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, ensureResourcesExist: arg_ensureResourcesExist)
+          .get(arg_appsId,
+              ensureResourcesExist: arg_ensureResourcesExist,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Application response) {
         checkApplication(response);
       })));
@@ -2152,6 +2158,7 @@
       var arg_request = buildApplication();
       var arg_appsId = "foo";
       var arg_mask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Application.fromJson(json);
         checkApplication(obj);
@@ -2189,6 +2196,7 @@
           }
         }
         unittest.expect(queryMap["mask"].first, unittest.equals(arg_mask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2197,7 +2205,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_appsId, mask: arg_mask)
+          .patch(arg_request, arg_appsId, mask: arg_mask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2211,6 +2219,7 @@
           new api.AppengineApi(mock).apps.locations;
       var arg_appsId = "foo";
       var arg_locationsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2253,6 +2262,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2261,7 +2271,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_locationsId)
+          .get(arg_appsId, arg_locationsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Location response) {
         checkLocation(response);
       })));
@@ -2272,9 +2282,10 @@
       api.AppsLocationsResourceApi res =
           new api.AppengineApi(mock).apps.locations;
       var arg_appsId = "foo";
+      var arg_pageSize = 42;
       var arg_filter = "foo";
       var arg_pageToken = "foo";
-      var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2314,11 +2325,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
-        unittest.expect(core.int.parse(queryMap["pageSize"].first),
-            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2328,9 +2340,10 @@
       }), true);
       res
           .list(arg_appsId,
+              pageSize: arg_pageSize,
               filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLocationsResponse response) {
         checkListLocationsResponse(response);
       })));
@@ -2344,6 +2357,7 @@
           new api.AppengineApi(mock).apps.operations;
       var arg_appsId = "foo";
       var arg_operationsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2386,6 +2400,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2394,7 +2409,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_operationsId)
+          .get(arg_appsId, arg_operationsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2405,9 +2420,10 @@
       api.AppsOperationsResourceApi res =
           new api.AppengineApi(mock).apps.operations;
       var arg_appsId = "foo";
-      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2447,11 +2463,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2461,9 +2478,10 @@
       }), true);
       res
           .list(arg_appsId,
-              filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              filter: arg_filter,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
@@ -2477,6 +2495,7 @@
           new api.AppengineApi(mock).apps.services;
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2519,6 +2538,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2527,7 +2547,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_servicesId)
+          .delete(arg_appsId, arg_servicesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2539,6 +2559,7 @@
           new api.AppengineApi(mock).apps.services;
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2581,6 +2602,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2589,7 +2611,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_servicesId)
+          .get(arg_appsId, arg_servicesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Service response) {
         checkService(response);
       })));
@@ -2600,8 +2622,9 @@
       api.AppsServicesResourceApi res =
           new api.AppengineApi(mock).apps.services;
       var arg_appsId = "foo";
-      var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2641,10 +2664,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2653,7 +2677,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_appsId, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_appsId,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListServicesResponse response) {
         checkListServicesResponse(response);
       })));
@@ -2668,6 +2695,7 @@
       var arg_servicesId = "foo";
       var arg_migrateTraffic = true;
       var arg_mask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Service.fromJson(json);
         checkService(obj);
@@ -2716,6 +2744,7 @@
         unittest.expect(queryMap["migrateTraffic"].first,
             unittest.equals("$arg_migrateTraffic"));
         unittest.expect(queryMap["mask"].first, unittest.equals(arg_mask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2725,7 +2754,9 @@
       }), true);
       res
           .patch(arg_request, arg_appsId, arg_servicesId,
-              migrateTraffic: arg_migrateTraffic, mask: arg_mask)
+              migrateTraffic: arg_migrateTraffic,
+              mask: arg_mask,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2740,6 +2771,7 @@
       var arg_request = buildVersion();
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Version.fromJson(json);
         checkVersion(obj);
@@ -2791,6 +2823,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2799,7 +2832,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_appsId, arg_servicesId)
+          .create(arg_request, arg_appsId, arg_servicesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2812,6 +2845,7 @@
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2863,6 +2897,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2871,7 +2906,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_servicesId, arg_versionsId)
+          .delete(arg_appsId, arg_servicesId, arg_versionsId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2885,6 +2921,7 @@
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
       var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2937,6 +2974,7 @@
           }
         }
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2945,7 +2983,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_servicesId, arg_versionsId, view: arg_view)
+          .get(arg_appsId, arg_servicesId, arg_versionsId,
+              view: arg_view, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Version response) {
         checkVersion(response);
       })));
@@ -2957,9 +2996,10 @@
           new api.AppengineApi(mock).apps.services.versions;
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
-      var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_view = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3008,11 +3048,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3022,7 +3063,10 @@
       }), true);
       res
           .list(arg_appsId, arg_servicesId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize, view: arg_view)
+              pageSize: arg_pageSize,
+              view: arg_view,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListVersionsResponse response) {
         checkListVersionsResponse(response);
       })));
@@ -3037,6 +3081,7 @@
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
       var arg_mask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Version.fromJson(json);
         checkVersion(obj);
@@ -3092,6 +3137,7 @@
           }
         }
         unittest.expect(queryMap["mask"].first, unittest.equals(arg_mask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3101,7 +3147,7 @@
       }), true);
       res
           .patch(arg_request, arg_appsId, arg_servicesId, arg_versionsId,
-              mask: arg_mask)
+              mask: arg_mask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3118,6 +3164,7 @@
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
       var arg_instancesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DebugInstanceRequest.fromJson(json);
         checkDebugInstanceRequest(obj);
@@ -3187,6 +3234,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3196,7 +3244,8 @@
       }), true);
       res
           .debug(arg_request, arg_appsId, arg_servicesId, arg_versionsId,
-              arg_instancesId)
+              arg_instancesId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3210,6 +3259,7 @@
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
       var arg_instancesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3270,6 +3320,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3278,7 +3329,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_servicesId, arg_versionsId, arg_instancesId)
+          .delete(arg_appsId, arg_servicesId, arg_versionsId, arg_instancesId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3292,6 +3344,7 @@
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
       var arg_instancesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3352,6 +3405,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3360,7 +3414,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_servicesId, arg_versionsId, arg_instancesId)
+          .get(arg_appsId, arg_servicesId, arg_versionsId, arg_instancesId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Instance response) {
         checkInstance(response);
       })));
@@ -3373,8 +3428,9 @@
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
-      var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3432,10 +3488,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3445,7 +3502,9 @@
       }), true);
       res
           .list(arg_appsId, arg_servicesId, arg_versionsId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListInstancesResponse response) {
         checkListInstancesResponse(response);
       })));
diff --git a/generated/googleapis_beta/test/appengine/v1beta_test.dart b/generated/googleapis_beta/test/appengine/v1beta_test.dart
index 0b6f568..041baa3 100644
--- a/generated/googleapis_beta/test/appengine/v1beta_test.dart
+++ b/generated/googleapis_beta/test/appengine/v1beta_test.dart
@@ -96,14 +96,14 @@
   buildCounterApiEndpointHandler--;
 }
 
-buildUnnamed3790() {
+buildUnnamed3810() {
   var o = new core.List<api.UrlDispatchRule>();
   o.add(buildUrlDispatchRule());
   o.add(buildUrlDispatchRule());
   return o;
 }
 
-checkUnnamed3790(core.List<api.UrlDispatchRule> o) {
+checkUnnamed3810(core.List<api.UrlDispatchRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUrlDispatchRule(o[0]);
   checkUrlDispatchRule(o[1]);
@@ -119,7 +119,7 @@
     o.defaultBucket = "foo";
     o.defaultCookieExpiration = "foo";
     o.defaultHostname = "foo";
-    o.dispatchRules = buildUnnamed3790();
+    o.dispatchRules = buildUnnamed3810();
     o.featureSettings = buildFeatureSettings();
     o.gcrDomain = "foo";
     o.iap = buildIdentityAwareProxy();
@@ -140,7 +140,7 @@
     unittest.expect(o.defaultBucket, unittest.equals('foo'));
     unittest.expect(o.defaultCookieExpiration, unittest.equals('foo'));
     unittest.expect(o.defaultHostname, unittest.equals('foo'));
-    checkUnnamed3790(o.dispatchRules);
+    checkUnnamed3810(o.dispatchRules);
     checkFeatureSettings(o.featureSettings);
     unittest.expect(o.gcrDomain, unittest.equals('foo'));
     checkIdentityAwareProxy(o.iap);
@@ -152,27 +152,27 @@
   buildCounterApplication--;
 }
 
-buildUnnamed3791() {
+buildUnnamed3811() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3791(core.List<core.String> o) {
+checkUnnamed3811(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3792() {
+buildUnnamed3812() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3792(core.List<core.String> o) {
+checkUnnamed3812(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -186,12 +186,12 @@
     o.certificateRawData = buildCertificateRawData();
     o.displayName = "foo";
     o.domainMappingsCount = 42;
-    o.domainNames = buildUnnamed3791();
+    o.domainNames = buildUnnamed3811();
     o.expireTime = "foo";
     o.id = "foo";
     o.managedCertificate = buildManagedCertificate();
     o.name = "foo";
-    o.visibleDomainMappings = buildUnnamed3792();
+    o.visibleDomainMappings = buildUnnamed3812();
   }
   buildCounterAuthorizedCertificate--;
   return o;
@@ -203,12 +203,12 @@
     checkCertificateRawData(o.certificateRawData);
     unittest.expect(o.displayName, unittest.equals('foo'));
     unittest.expect(o.domainMappingsCount, unittest.equals(42));
-    checkUnnamed3791(o.domainNames);
+    checkUnnamed3811(o.domainNames);
     unittest.expect(o.expireTime, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     checkManagedCertificate(o.managedCertificate);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3792(o.visibleDomainMappings);
+    checkUnnamed3812(o.visibleDomainMappings);
   }
   buildCounterAuthorizedCertificate--;
 }
@@ -298,14 +298,14 @@
   buildCounterBasicScaling--;
 }
 
-buildUnnamed3793() {
+buildUnnamed3813() {
   var o = new core.List<api.FirewallRule>();
   o.add(buildFirewallRule());
   o.add(buildFirewallRule());
   return o;
 }
 
-checkUnnamed3793(core.List<api.FirewallRule> o) {
+checkUnnamed3813(core.List<api.FirewallRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFirewallRule(o[0]);
   checkFirewallRule(o[1]);
@@ -316,7 +316,7 @@
   var o = new api.BatchUpdateIngressRulesRequest();
   buildCounterBatchUpdateIngressRulesRequest++;
   if (buildCounterBatchUpdateIngressRulesRequest < 3) {
-    o.ingressRules = buildUnnamed3793();
+    o.ingressRules = buildUnnamed3813();
   }
   buildCounterBatchUpdateIngressRulesRequest--;
   return o;
@@ -325,19 +325,19 @@
 checkBatchUpdateIngressRulesRequest(api.BatchUpdateIngressRulesRequest o) {
   buildCounterBatchUpdateIngressRulesRequest++;
   if (buildCounterBatchUpdateIngressRulesRequest < 3) {
-    checkUnnamed3793(o.ingressRules);
+    checkUnnamed3813(o.ingressRules);
   }
   buildCounterBatchUpdateIngressRulesRequest--;
 }
 
-buildUnnamed3794() {
+buildUnnamed3814() {
   var o = new core.List<api.FirewallRule>();
   o.add(buildFirewallRule());
   o.add(buildFirewallRule());
   return o;
 }
 
-checkUnnamed3794(core.List<api.FirewallRule> o) {
+checkUnnamed3814(core.List<api.FirewallRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFirewallRule(o[0]);
   checkFirewallRule(o[1]);
@@ -348,7 +348,7 @@
   var o = new api.BatchUpdateIngressRulesResponse();
   buildCounterBatchUpdateIngressRulesResponse++;
   if (buildCounterBatchUpdateIngressRulesResponse < 3) {
-    o.ingressRules = buildUnnamed3794();
+    o.ingressRules = buildUnnamed3814();
   }
   buildCounterBatchUpdateIngressRulesResponse--;
   return o;
@@ -357,7 +357,7 @@
 checkBatchUpdateIngressRulesResponse(api.BatchUpdateIngressRulesResponse o) {
   buildCounterBatchUpdateIngressRulesResponse++;
   if (buildCounterBatchUpdateIngressRulesResponse < 3) {
-    checkUnnamed3794(o.ingressRules);
+    checkUnnamed3814(o.ingressRules);
   }
   buildCounterBatchUpdateIngressRulesResponse--;
 }
@@ -461,14 +461,14 @@
   buildCounterDebugInstanceRequest--;
 }
 
-buildUnnamed3795() {
+buildUnnamed3815() {
   var o = new core.Map<core.String, api.FileInfo>();
   o["x"] = buildFileInfo();
   o["y"] = buildFileInfo();
   return o;
 }
 
-checkUnnamed3795(core.Map<core.String, api.FileInfo> o) {
+checkUnnamed3815(core.Map<core.String, api.FileInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFileInfo(o["x"]);
   checkFileInfo(o["y"]);
@@ -481,7 +481,7 @@
   if (buildCounterDeployment < 3) {
     o.build = buildBuildInfo();
     o.container = buildContainerInfo();
-    o.files = buildUnnamed3795();
+    o.files = buildUnnamed3815();
     o.zip = buildZipInfo();
   }
   buildCounterDeployment--;
@@ -493,7 +493,7 @@
   if (buildCounterDeployment < 3) {
     checkBuildInfo(o.build);
     checkContainerInfo(o.container);
-    checkUnnamed3795(o.files);
+    checkUnnamed3815(o.files);
     checkZipInfo(o.zip);
   }
   buildCounterDeployment--;
@@ -524,14 +524,14 @@
   buildCounterDiskUtilization--;
 }
 
-buildUnnamed3796() {
+buildUnnamed3816() {
   var o = new core.List<api.ResourceRecord>();
   o.add(buildResourceRecord());
   o.add(buildResourceRecord());
   return o;
 }
 
-checkUnnamed3796(core.List<api.ResourceRecord> o) {
+checkUnnamed3816(core.List<api.ResourceRecord> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceRecord(o[0]);
   checkResourceRecord(o[1]);
@@ -544,7 +544,7 @@
   if (buildCounterDomainMapping < 3) {
     o.id = "foo";
     o.name = "foo";
-    o.resourceRecords = buildUnnamed3796();
+    o.resourceRecords = buildUnnamed3816();
     o.sslSettings = buildSslSettings();
   }
   buildCounterDomainMapping--;
@@ -556,7 +556,7 @@
   if (buildCounterDomainMapping < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3796(o.resourceRecords);
+    checkUnnamed3816(o.resourceRecords);
     checkSslSettings(o.sslSettings);
   }
   buildCounterDomainMapping--;
@@ -814,14 +814,14 @@
   buildCounterLibrary--;
 }
 
-buildUnnamed3797() {
+buildUnnamed3817() {
   var o = new core.List<api.AuthorizedCertificate>();
   o.add(buildAuthorizedCertificate());
   o.add(buildAuthorizedCertificate());
   return o;
 }
 
-checkUnnamed3797(core.List<api.AuthorizedCertificate> o) {
+checkUnnamed3817(core.List<api.AuthorizedCertificate> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuthorizedCertificate(o[0]);
   checkAuthorizedCertificate(o[1]);
@@ -832,7 +832,7 @@
   var o = new api.ListAuthorizedCertificatesResponse();
   buildCounterListAuthorizedCertificatesResponse++;
   if (buildCounterListAuthorizedCertificatesResponse < 3) {
-    o.certificates = buildUnnamed3797();
+    o.certificates = buildUnnamed3817();
     o.nextPageToken = "foo";
   }
   buildCounterListAuthorizedCertificatesResponse--;
@@ -843,20 +843,20 @@
     api.ListAuthorizedCertificatesResponse o) {
   buildCounterListAuthorizedCertificatesResponse++;
   if (buildCounterListAuthorizedCertificatesResponse < 3) {
-    checkUnnamed3797(o.certificates);
+    checkUnnamed3817(o.certificates);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListAuthorizedCertificatesResponse--;
 }
 
-buildUnnamed3798() {
+buildUnnamed3818() {
   var o = new core.List<api.AuthorizedDomain>();
   o.add(buildAuthorizedDomain());
   o.add(buildAuthorizedDomain());
   return o;
 }
 
-checkUnnamed3798(core.List<api.AuthorizedDomain> o) {
+checkUnnamed3818(core.List<api.AuthorizedDomain> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuthorizedDomain(o[0]);
   checkAuthorizedDomain(o[1]);
@@ -867,7 +867,7 @@
   var o = new api.ListAuthorizedDomainsResponse();
   buildCounterListAuthorizedDomainsResponse++;
   if (buildCounterListAuthorizedDomainsResponse < 3) {
-    o.domains = buildUnnamed3798();
+    o.domains = buildUnnamed3818();
     o.nextPageToken = "foo";
   }
   buildCounterListAuthorizedDomainsResponse--;
@@ -877,20 +877,20 @@
 checkListAuthorizedDomainsResponse(api.ListAuthorizedDomainsResponse o) {
   buildCounterListAuthorizedDomainsResponse++;
   if (buildCounterListAuthorizedDomainsResponse < 3) {
-    checkUnnamed3798(o.domains);
+    checkUnnamed3818(o.domains);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListAuthorizedDomainsResponse--;
 }
 
-buildUnnamed3799() {
+buildUnnamed3819() {
   var o = new core.List<api.DomainMapping>();
   o.add(buildDomainMapping());
   o.add(buildDomainMapping());
   return o;
 }
 
-checkUnnamed3799(core.List<api.DomainMapping> o) {
+checkUnnamed3819(core.List<api.DomainMapping> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDomainMapping(o[0]);
   checkDomainMapping(o[1]);
@@ -901,7 +901,7 @@
   var o = new api.ListDomainMappingsResponse();
   buildCounterListDomainMappingsResponse++;
   if (buildCounterListDomainMappingsResponse < 3) {
-    o.domainMappings = buildUnnamed3799();
+    o.domainMappings = buildUnnamed3819();
     o.nextPageToken = "foo";
   }
   buildCounterListDomainMappingsResponse--;
@@ -911,20 +911,20 @@
 checkListDomainMappingsResponse(api.ListDomainMappingsResponse o) {
   buildCounterListDomainMappingsResponse++;
   if (buildCounterListDomainMappingsResponse < 3) {
-    checkUnnamed3799(o.domainMappings);
+    checkUnnamed3819(o.domainMappings);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListDomainMappingsResponse--;
 }
 
-buildUnnamed3800() {
+buildUnnamed3820() {
   var o = new core.List<api.FirewallRule>();
   o.add(buildFirewallRule());
   o.add(buildFirewallRule());
   return o;
 }
 
-checkUnnamed3800(core.List<api.FirewallRule> o) {
+checkUnnamed3820(core.List<api.FirewallRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFirewallRule(o[0]);
   checkFirewallRule(o[1]);
@@ -935,7 +935,7 @@
   var o = new api.ListIngressRulesResponse();
   buildCounterListIngressRulesResponse++;
   if (buildCounterListIngressRulesResponse < 3) {
-    o.ingressRules = buildUnnamed3800();
+    o.ingressRules = buildUnnamed3820();
     o.nextPageToken = "foo";
   }
   buildCounterListIngressRulesResponse--;
@@ -945,20 +945,20 @@
 checkListIngressRulesResponse(api.ListIngressRulesResponse o) {
   buildCounterListIngressRulesResponse++;
   if (buildCounterListIngressRulesResponse < 3) {
-    checkUnnamed3800(o.ingressRules);
+    checkUnnamed3820(o.ingressRules);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListIngressRulesResponse--;
 }
 
-buildUnnamed3801() {
+buildUnnamed3821() {
   var o = new core.List<api.Instance>();
   o.add(buildInstance());
   o.add(buildInstance());
   return o;
 }
 
-checkUnnamed3801(core.List<api.Instance> o) {
+checkUnnamed3821(core.List<api.Instance> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstance(o[0]);
   checkInstance(o[1]);
@@ -969,7 +969,7 @@
   var o = new api.ListInstancesResponse();
   buildCounterListInstancesResponse++;
   if (buildCounterListInstancesResponse < 3) {
-    o.instances = buildUnnamed3801();
+    o.instances = buildUnnamed3821();
     o.nextPageToken = "foo";
   }
   buildCounterListInstancesResponse--;
@@ -979,20 +979,20 @@
 checkListInstancesResponse(api.ListInstancesResponse o) {
   buildCounterListInstancesResponse++;
   if (buildCounterListInstancesResponse < 3) {
-    checkUnnamed3801(o.instances);
+    checkUnnamed3821(o.instances);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListInstancesResponse--;
 }
 
-buildUnnamed3802() {
+buildUnnamed3822() {
   var o = new core.List<api.Location>();
   o.add(buildLocation());
   o.add(buildLocation());
   return o;
 }
 
-checkUnnamed3802(core.List<api.Location> o) {
+checkUnnamed3822(core.List<api.Location> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocation(o[0]);
   checkLocation(o[1]);
@@ -1003,7 +1003,7 @@
   var o = new api.ListLocationsResponse();
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    o.locations = buildUnnamed3802();
+    o.locations = buildUnnamed3822();
     o.nextPageToken = "foo";
   }
   buildCounterListLocationsResponse--;
@@ -1013,20 +1013,20 @@
 checkListLocationsResponse(api.ListLocationsResponse o) {
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    checkUnnamed3802(o.locations);
+    checkUnnamed3822(o.locations);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListLocationsResponse--;
 }
 
-buildUnnamed3803() {
+buildUnnamed3823() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed3803(core.List<api.Operation> o) {
+checkUnnamed3823(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -1038,7 +1038,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed3803();
+    o.operations = buildUnnamed3823();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -1048,19 +1048,19 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3803(o.operations);
+    checkUnnamed3823(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
 
-buildUnnamed3804() {
+buildUnnamed3824() {
   var o = new core.List<api.Service>();
   o.add(buildService());
   o.add(buildService());
   return o;
 }
 
-checkUnnamed3804(core.List<api.Service> o) {
+checkUnnamed3824(core.List<api.Service> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkService(o[0]);
   checkService(o[1]);
@@ -1072,7 +1072,7 @@
   buildCounterListServicesResponse++;
   if (buildCounterListServicesResponse < 3) {
     o.nextPageToken = "foo";
-    o.services = buildUnnamed3804();
+    o.services = buildUnnamed3824();
   }
   buildCounterListServicesResponse--;
   return o;
@@ -1082,19 +1082,19 @@
   buildCounterListServicesResponse++;
   if (buildCounterListServicesResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3804(o.services);
+    checkUnnamed3824(o.services);
   }
   buildCounterListServicesResponse--;
 }
 
-buildUnnamed3805() {
+buildUnnamed3825() {
   var o = new core.List<api.Version>();
   o.add(buildVersion());
   o.add(buildVersion());
   return o;
 }
 
-checkUnnamed3805(core.List<api.Version> o) {
+checkUnnamed3825(core.List<api.Version> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVersion(o[0]);
   checkVersion(o[1]);
@@ -1106,7 +1106,7 @@
   buildCounterListVersionsResponse++;
   if (buildCounterListVersionsResponse < 3) {
     o.nextPageToken = "foo";
-    o.versions = buildUnnamed3805();
+    o.versions = buildUnnamed3825();
   }
   buildCounterListVersionsResponse--;
   return o;
@@ -1116,7 +1116,7 @@
   buildCounterListVersionsResponse++;
   if (buildCounterListVersionsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3805(o.versions);
+    checkUnnamed3825(o.versions);
   }
   buildCounterListVersionsResponse--;
 }
@@ -1152,20 +1152,20 @@
   buildCounterLivenessCheck--;
 }
 
-buildUnnamed3806() {
+buildUnnamed3826() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3806(core.Map<core.String, core.String> o) {
+checkUnnamed3826(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed3807() {
+buildUnnamed3827() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1180,7 +1180,7 @@
   return o;
 }
 
-checkUnnamed3807(core.Map<core.String, core.Object> o) {
+checkUnnamed3827(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -1199,9 +1199,9 @@
   var o = new api.Location();
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
-    o.labels = buildUnnamed3806();
+    o.labels = buildUnnamed3826();
     o.locationId = "foo";
-    o.metadata = buildUnnamed3807();
+    o.metadata = buildUnnamed3827();
     o.name = "foo";
   }
   buildCounterLocation--;
@@ -1211,9 +1211,9 @@
 checkLocation(api.Location o) {
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
-    checkUnnamed3806(o.labels);
+    checkUnnamed3826(o.labels);
     unittest.expect(o.locationId, unittest.equals('foo'));
-    checkUnnamed3807(o.metadata);
+    checkUnnamed3827(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
   }
   buildCounterLocation--;
@@ -1280,14 +1280,14 @@
   buildCounterManualScaling--;
 }
 
-buildUnnamed3808() {
+buildUnnamed3828() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3808(core.List<core.String> o) {
+checkUnnamed3828(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1298,7 +1298,7 @@
   var o = new api.Network();
   buildCounterNetwork++;
   if (buildCounterNetwork < 3) {
-    o.forwardedPorts = buildUnnamed3808();
+    o.forwardedPorts = buildUnnamed3828();
     o.instanceTag = "foo";
     o.name = "foo";
     o.subnetworkName = "foo";
@@ -1310,7 +1310,7 @@
 checkNetwork(api.Network o) {
   buildCounterNetwork++;
   if (buildCounterNetwork < 3) {
-    checkUnnamed3808(o.forwardedPorts);
+    checkUnnamed3828(o.forwardedPorts);
     unittest.expect(o.instanceTag, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.subnetworkName, unittest.equals('foo'));
@@ -1343,7 +1343,7 @@
   buildCounterNetworkUtilization--;
 }
 
-buildUnnamed3809() {
+buildUnnamed3829() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1358,7 +1358,7 @@
   return o;
 }
 
-checkUnnamed3809(core.Map<core.String, core.Object> o) {
+checkUnnamed3829(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -1372,7 +1372,7 @@
   unittest.expect(casted4["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3810() {
+buildUnnamed3830() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1387,7 +1387,7 @@
   return o;
 }
 
-checkUnnamed3810(core.Map<core.String, core.Object> o) {
+checkUnnamed3830(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -1408,9 +1408,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed3809();
+    o.metadata = buildUnnamed3829();
     o.name = "foo";
-    o.response = buildUnnamed3810();
+    o.response = buildUnnamed3830();
   }
   buildCounterOperation--;
   return o;
@@ -1421,9 +1421,9 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed3809(o.metadata);
+    checkUnnamed3829(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3810(o.response);
+    checkUnnamed3830(o.response);
   }
   buildCounterOperation--;
 }
@@ -1484,14 +1484,14 @@
   buildCounterOperationMetadataExperimental--;
 }
 
-buildUnnamed3811() {
+buildUnnamed3831() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3811(core.List<core.String> o) {
+checkUnnamed3831(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1508,7 +1508,7 @@
     o.method = "foo";
     o.target = "foo";
     o.user = "foo";
-    o.warning = buildUnnamed3811();
+    o.warning = buildUnnamed3831();
   }
   buildCounterOperationMetadataV1--;
   return o;
@@ -1523,19 +1523,19 @@
     unittest.expect(o.method, unittest.equals('foo'));
     unittest.expect(o.target, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed3811(o.warning);
+    checkUnnamed3831(o.warning);
   }
   buildCounterOperationMetadataV1--;
 }
 
-buildUnnamed3812() {
+buildUnnamed3832() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3812(core.List<core.String> o) {
+checkUnnamed3832(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1552,7 +1552,7 @@
     o.method = "foo";
     o.target = "foo";
     o.user = "foo";
-    o.warning = buildUnnamed3812();
+    o.warning = buildUnnamed3832();
   }
   buildCounterOperationMetadataV1Alpha--;
   return o;
@@ -1567,19 +1567,19 @@
     unittest.expect(o.method, unittest.equals('foo'));
     unittest.expect(o.target, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed3812(o.warning);
+    checkUnnamed3832(o.warning);
   }
   buildCounterOperationMetadataV1Alpha--;
 }
 
-buildUnnamed3813() {
+buildUnnamed3833() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3813(core.List<core.String> o) {
+checkUnnamed3833(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1596,7 +1596,7 @@
     o.method = "foo";
     o.target = "foo";
     o.user = "foo";
-    o.warning = buildUnnamed3813();
+    o.warning = buildUnnamed3833();
   }
   buildCounterOperationMetadataV1Beta--;
   return o;
@@ -1611,7 +1611,7 @@
     unittest.expect(o.method, unittest.equals('foo'));
     unittest.expect(o.target, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed3813(o.warning);
+    checkUnnamed3833(o.warning);
   }
   buildCounterOperationMetadataV1Beta--;
 }
@@ -1733,14 +1733,14 @@
   buildCounterResourceRecord--;
 }
 
-buildUnnamed3814() {
+buildUnnamed3834() {
   var o = new core.List<api.Volume>();
   o.add(buildVolume());
   o.add(buildVolume());
   return o;
 }
 
-checkUnnamed3814(core.List<api.Volume> o) {
+checkUnnamed3834(core.List<api.Volume> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVolume(o[0]);
   checkVolume(o[1]);
@@ -1754,7 +1754,7 @@
     o.cpu = 42.0;
     o.diskGb = 42.0;
     o.memoryGb = 42.0;
-    o.volumes = buildUnnamed3814();
+    o.volumes = buildUnnamed3834();
   }
   buildCounterResources--;
   return o;
@@ -1766,7 +1766,7 @@
     unittest.expect(o.cpu, unittest.equals(42.0));
     unittest.expect(o.diskGb, unittest.equals(42.0));
     unittest.expect(o.memoryGb, unittest.equals(42.0));
-    checkUnnamed3814(o.volumes);
+    checkUnnamed3834(o.volumes);
   }
   buildCounterResources--;
 }
@@ -1861,14 +1861,14 @@
   buildCounterStandardSchedulerSettings--;
 }
 
-buildUnnamed3815() {
+buildUnnamed3835() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3815(core.Map<core.String, core.String> o) {
+checkUnnamed3835(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1881,7 +1881,7 @@
   if (buildCounterStaticFilesHandler < 3) {
     o.applicationReadable = true;
     o.expiration = "foo";
-    o.httpHeaders = buildUnnamed3815();
+    o.httpHeaders = buildUnnamed3835();
     o.mimeType = "foo";
     o.path = "foo";
     o.requireMatchingFile = true;
@@ -1896,7 +1896,7 @@
   if (buildCounterStaticFilesHandler < 3) {
     unittest.expect(o.applicationReadable, unittest.isTrue);
     unittest.expect(o.expiration, unittest.equals('foo'));
-    checkUnnamed3815(o.httpHeaders);
+    checkUnnamed3835(o.httpHeaders);
     unittest.expect(o.mimeType, unittest.equals('foo'));
     unittest.expect(o.path, unittest.equals('foo'));
     unittest.expect(o.requireMatchingFile, unittest.isTrue);
@@ -1905,7 +1905,7 @@
   buildCounterStaticFilesHandler--;
 }
 
-buildUnnamed3816() {
+buildUnnamed3836() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1920,7 +1920,7 @@
   return o;
 }
 
-checkUnnamed3816(core.Map<core.String, core.Object> o) {
+checkUnnamed3836(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted7 = (o["x"]) as core.Map;
   unittest.expect(casted7, unittest.hasLength(3));
@@ -1934,17 +1934,17 @@
   unittest.expect(casted8["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3817() {
+buildUnnamed3837() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed3816());
-  o.add(buildUnnamed3816());
+  o.add(buildUnnamed3836());
+  o.add(buildUnnamed3836());
   return o;
 }
 
-checkUnnamed3817(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed3837(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed3816(o[0]);
-  checkUnnamed3816(o[1]);
+  checkUnnamed3836(o[0]);
+  checkUnnamed3836(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -1953,7 +1953,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed3817();
+    o.details = buildUnnamed3837();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -1964,20 +1964,20 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed3817(o.details);
+    checkUnnamed3837(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
 }
 
-buildUnnamed3818() {
+buildUnnamed3838() {
   var o = new core.Map<core.String, core.double>();
   o["x"] = 42.0;
   o["y"] = 42.0;
   return o;
 }
 
-checkUnnamed3818(core.Map<core.String, core.double> o) {
+checkUnnamed3838(core.Map<core.String, core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals(42.0));
   unittest.expect(o["y"], unittest.equals(42.0));
@@ -1988,7 +1988,7 @@
   var o = new api.TrafficSplit();
   buildCounterTrafficSplit++;
   if (buildCounterTrafficSplit < 3) {
-    o.allocations = buildUnnamed3818();
+    o.allocations = buildUnnamed3838();
     o.shardBy = "foo";
   }
   buildCounterTrafficSplit--;
@@ -1998,7 +1998,7 @@
 checkTrafficSplit(api.TrafficSplit o) {
   buildCounterTrafficSplit++;
   if (buildCounterTrafficSplit < 3) {
-    checkUnnamed3818(o.allocations);
+    checkUnnamed3838(o.allocations);
     unittest.expect(o.shardBy, unittest.equals('foo'));
   }
   buildCounterTrafficSplit--;
@@ -2060,79 +2060,79 @@
   buildCounterUrlMap--;
 }
 
-buildUnnamed3819() {
+buildUnnamed3839() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3819(core.Map<core.String, core.String> o) {
+checkUnnamed3839(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed3820() {
+buildUnnamed3840() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3820(core.Map<core.String, core.String> o) {
+checkUnnamed3840(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed3821() {
+buildUnnamed3841() {
   var o = new core.List<api.ErrorHandler>();
   o.add(buildErrorHandler());
   o.add(buildErrorHandler());
   return o;
 }
 
-checkUnnamed3821(core.List<api.ErrorHandler> o) {
+checkUnnamed3841(core.List<api.ErrorHandler> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkErrorHandler(o[0]);
   checkErrorHandler(o[1]);
 }
 
-buildUnnamed3822() {
+buildUnnamed3842() {
   var o = new core.List<api.UrlMap>();
   o.add(buildUrlMap());
   o.add(buildUrlMap());
   return o;
 }
 
-checkUnnamed3822(core.List<api.UrlMap> o) {
+checkUnnamed3842(core.List<api.UrlMap> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUrlMap(o[0]);
   checkUrlMap(o[1]);
 }
 
-buildUnnamed3823() {
+buildUnnamed3843() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3823(core.List<core.String> o) {
+checkUnnamed3843(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3824() {
+buildUnnamed3844() {
   var o = new core.List<api.Library>();
   o.add(buildLibrary());
   o.add(buildLibrary());
   return o;
 }
 
-checkUnnamed3824(core.List<api.Library> o) {
+checkUnnamed3844(core.List<api.Library> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLibrary(o[0]);
   checkLibrary(o[1]);
@@ -2146,7 +2146,7 @@
     o.apiConfig = buildApiConfigHandler();
     o.automaticScaling = buildAutomaticScaling();
     o.basicScaling = buildBasicScaling();
-    o.betaSettings = buildUnnamed3819();
+    o.betaSettings = buildUnnamed3839();
     o.createTime = "foo";
     o.createdBy = "foo";
     o.defaultExpiration = "foo";
@@ -2154,14 +2154,14 @@
     o.diskUsageBytes = "foo";
     o.endpointsApiService = buildEndpointsApiService();
     o.env = "foo";
-    o.envVariables = buildUnnamed3820();
-    o.errorHandlers = buildUnnamed3821();
-    o.handlers = buildUnnamed3822();
+    o.envVariables = buildUnnamed3840();
+    o.errorHandlers = buildUnnamed3841();
+    o.handlers = buildUnnamed3842();
     o.healthCheck = buildHealthCheck();
     o.id = "foo";
-    o.inboundServices = buildUnnamed3823();
+    o.inboundServices = buildUnnamed3843();
     o.instanceClass = "foo";
-    o.libraries = buildUnnamed3824();
+    o.libraries = buildUnnamed3844();
     o.livenessCheck = buildLivenessCheck();
     o.manualScaling = buildManualScaling();
     o.name = "foo";
@@ -2186,7 +2186,7 @@
     checkApiConfigHandler(o.apiConfig);
     checkAutomaticScaling(o.automaticScaling);
     checkBasicScaling(o.basicScaling);
-    checkUnnamed3819(o.betaSettings);
+    checkUnnamed3839(o.betaSettings);
     unittest.expect(o.createTime, unittest.equals('foo'));
     unittest.expect(o.createdBy, unittest.equals('foo'));
     unittest.expect(o.defaultExpiration, unittest.equals('foo'));
@@ -2194,14 +2194,14 @@
     unittest.expect(o.diskUsageBytes, unittest.equals('foo'));
     checkEndpointsApiService(o.endpointsApiService);
     unittest.expect(o.env, unittest.equals('foo'));
-    checkUnnamed3820(o.envVariables);
-    checkUnnamed3821(o.errorHandlers);
-    checkUnnamed3822(o.handlers);
+    checkUnnamed3840(o.envVariables);
+    checkUnnamed3841(o.errorHandlers);
+    checkUnnamed3842(o.handlers);
     checkHealthCheck(o.healthCheck);
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed3823(o.inboundServices);
+    checkUnnamed3843(o.inboundServices);
     unittest.expect(o.instanceClass, unittest.equals('foo'));
-    checkUnnamed3824(o.libraries);
+    checkUnnamed3844(o.libraries);
     checkLivenessCheck(o.livenessCheck);
     checkManualScaling(o.manualScaling);
     unittest.expect(o.name, unittest.equals('foo'));
@@ -2805,6 +2805,7 @@
       var mock = new HttpServerMock();
       api.AppsResourceApi res = new api.AppengineApi(mock).apps;
       var arg_request = buildApplication();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Application.fromJson(json);
         checkApplication(obj);
@@ -2838,6 +2839,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2846,7 +2848,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request)
+          .create(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2856,6 +2858,7 @@
       var mock = new HttpServerMock();
       api.AppsResourceApi res = new api.AppengineApi(mock).apps;
       var arg_appsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2889,6 +2892,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2897,7 +2901,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId)
+          .get(arg_appsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Application response) {
         checkApplication(response);
       })));
@@ -2909,6 +2913,7 @@
       var arg_request = buildApplication();
       var arg_appsId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Application.fromJson(json);
         checkApplication(obj);
@@ -2947,6 +2952,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2955,7 +2961,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_appsId, updateMask: arg_updateMask)
+          .patch(arg_request, arg_appsId,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2966,6 +2973,7 @@
       api.AppsResourceApi res = new api.AppengineApi(mock).apps;
       var arg_request = buildRepairApplicationRequest();
       var arg_appsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RepairApplicationRequest.fromJson(json);
         checkRepairApplicationRequest(obj);
@@ -3008,6 +3016,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3016,7 +3025,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .repair(arg_request, arg_appsId)
+          .repair(arg_request, arg_appsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3030,6 +3039,7 @@
           new api.AppengineApi(mock).apps.authorizedCertificates;
       var arg_request = buildAuthorizedCertificate();
       var arg_appsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AuthorizedCertificate.fromJson(json);
         checkAuthorizedCertificate(obj);
@@ -3072,6 +3082,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3080,7 +3091,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_appsId)
+          .create(arg_request, arg_appsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AuthorizedCertificate response) {
         checkAuthorizedCertificate(response);
       })));
@@ -3092,6 +3103,7 @@
           new api.AppengineApi(mock).apps.authorizedCertificates;
       var arg_appsId = "foo";
       var arg_authorizedCertificatesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3135,6 +3147,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3143,7 +3156,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_authorizedCertificatesId)
+          .delete(arg_appsId, arg_authorizedCertificatesId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -3156,6 +3170,7 @@
       var arg_appsId = "foo";
       var arg_authorizedCertificatesId = "foo";
       var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3200,6 +3215,7 @@
           }
         }
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3208,7 +3224,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_authorizedCertificatesId, view: arg_view)
+          .get(arg_appsId, arg_authorizedCertificatesId,
+              view: arg_view, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AuthorizedCertificate response) {
         checkAuthorizedCertificate(response);
       })));
@@ -3219,9 +3236,10 @@
       api.AppsAuthorizedCertificatesResourceApi res =
           new api.AppengineApi(mock).apps.authorizedCertificates;
       var arg_appsId = "foo";
+      var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_view = "foo";
-      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3261,11 +3279,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3276,7 +3295,10 @@
       }), true);
       res
           .list(arg_appsId,
-              pageSize: arg_pageSize, view: arg_view, pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              view: arg_view,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListAuthorizedCertificatesResponse response) {
         checkListAuthorizedCertificatesResponse(response);
@@ -3291,6 +3313,7 @@
       var arg_appsId = "foo";
       var arg_authorizedCertificatesId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AuthorizedCertificate.fromJson(json);
         checkAuthorizedCertificate(obj);
@@ -3339,6 +3362,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3348,7 +3372,7 @@
       }), true);
       res
           .patch(arg_request, arg_appsId, arg_authorizedCertificatesId,
-              updateMask: arg_updateMask)
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AuthorizedCertificate response) {
         checkAuthorizedCertificate(response);
       })));
@@ -3363,6 +3387,7 @@
       var arg_appsId = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3406,6 +3431,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3414,7 +3440,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_appsId, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_appsId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListAuthorizedDomainsResponse response) {
         checkListAuthorizedDomainsResponse(response);
@@ -3429,6 +3458,7 @@
           new api.AppengineApi(mock).apps.domainMappings;
       var arg_request = buildDomainMapping();
       var arg_appsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DomainMapping.fromJson(json);
         checkDomainMapping(obj);
@@ -3471,6 +3501,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3479,7 +3510,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_appsId)
+          .create(arg_request, arg_appsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3491,6 +3522,7 @@
           new api.AppengineApi(mock).apps.domainMappings;
       var arg_appsId = "foo";
       var arg_domainMappingsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3533,6 +3565,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3541,7 +3574,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_domainMappingsId)
+          .delete(arg_appsId, arg_domainMappingsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3553,6 +3586,7 @@
           new api.AppengineApi(mock).apps.domainMappings;
       var arg_appsId = "foo";
       var arg_domainMappingsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3595,6 +3629,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3603,7 +3638,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_domainMappingsId)
+          .get(arg_appsId, arg_domainMappingsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DomainMapping response) {
         checkDomainMapping(response);
       })));
@@ -3616,6 +3651,7 @@
       var arg_appsId = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3659,6 +3695,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3667,7 +3704,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_appsId, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_appsId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.ListDomainMappingsResponse response) {
         checkListDomainMappingsResponse(response);
@@ -3682,6 +3722,7 @@
       var arg_appsId = "foo";
       var arg_domainMappingsId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DomainMapping.fromJson(json);
         checkDomainMapping(obj);
@@ -3729,6 +3770,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3738,7 +3780,7 @@
       }), true);
       res
           .patch(arg_request, arg_appsId, arg_domainMappingsId,
-              updateMask: arg_updateMask)
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3752,6 +3794,7 @@
           new api.AppengineApi(mock).apps.firewall.ingressRules;
       var arg_request = buildBatchUpdateIngressRulesRequest();
       var arg_appsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BatchUpdateIngressRulesRequest.fromJson(json);
         checkBatchUpdateIngressRulesRequest(obj);
@@ -3794,6 +3837,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3801,8 +3845,9 @@
         var resp = convert.JSON.encode(buildBatchUpdateIngressRulesResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.batchUpdate(arg_request, arg_appsId).then(unittest
-          .expectAsync1(((api.BatchUpdateIngressRulesResponse response) {
+      res.batchUpdate(arg_request, arg_appsId, $fields: arg_$fields).then(
+          unittest
+              .expectAsync1(((api.BatchUpdateIngressRulesResponse response) {
         checkBatchUpdateIngressRulesResponse(response);
       })));
     });
@@ -3813,6 +3858,7 @@
           new api.AppengineApi(mock).apps.firewall.ingressRules;
       var arg_request = buildFirewallRule();
       var arg_appsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.FirewallRule.fromJson(json);
         checkFirewallRule(obj);
@@ -3855,6 +3901,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3863,7 +3910,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_appsId)
+          .create(arg_request, arg_appsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.FirewallRule response) {
         checkFirewallRule(response);
       })));
@@ -3875,6 +3922,7 @@
           new api.AppengineApi(mock).apps.firewall.ingressRules;
       var arg_appsId = "foo";
       var arg_ingressRulesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3917,6 +3965,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3925,7 +3974,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_ingressRulesId)
+          .delete(arg_appsId, arg_ingressRulesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -3937,6 +3986,7 @@
           new api.AppengineApi(mock).apps.firewall.ingressRules;
       var arg_appsId = "foo";
       var arg_ingressRulesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3979,6 +4029,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3987,7 +4038,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_ingressRulesId)
+          .get(arg_appsId, arg_ingressRulesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.FirewallRule response) {
         checkFirewallRule(response);
       })));
@@ -3998,9 +4049,10 @@
       api.AppsFirewallIngressRulesResourceApi res =
           new api.AppengineApi(mock).apps.firewall.ingressRules;
       var arg_appsId = "foo";
+      var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_matchingAddress = "foo";
-      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4040,12 +4092,13 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["matchingAddress"].first,
             unittest.equals(arg_matchingAddress));
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4055,9 +4108,10 @@
       }), true);
       res
           .list(arg_appsId,
+              pageToken: arg_pageToken,
               pageSize: arg_pageSize,
               matchingAddress: arg_matchingAddress,
-              pageToken: arg_pageToken)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListIngressRulesResponse response) {
         checkListIngressRulesResponse(response);
       })));
@@ -4071,6 +4125,7 @@
       var arg_appsId = "foo";
       var arg_ingressRulesId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.FirewallRule.fromJson(json);
         checkFirewallRule(obj);
@@ -4118,6 +4173,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4127,7 +4183,7 @@
       }), true);
       res
           .patch(arg_request, arg_appsId, arg_ingressRulesId,
-              updateMask: arg_updateMask)
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.FirewallRule response) {
         checkFirewallRule(response);
       })));
@@ -4141,6 +4197,7 @@
           new api.AppengineApi(mock).apps.locations;
       var arg_appsId = "foo";
       var arg_locationsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4183,6 +4240,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4191,7 +4249,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_locationsId)
+          .get(arg_appsId, arg_locationsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Location response) {
         checkLocation(response);
       })));
@@ -4202,9 +4260,10 @@
       api.AppsLocationsResourceApi res =
           new api.AppengineApi(mock).apps.locations;
       var arg_appsId = "foo";
+      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
-      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4244,11 +4303,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4258,9 +4318,10 @@
       }), true);
       res
           .list(arg_appsId,
+              filter: arg_filter,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              filter: arg_filter)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLocationsResponse response) {
         checkListLocationsResponse(response);
       })));
@@ -4274,6 +4335,7 @@
           new api.AppengineApi(mock).apps.operations;
       var arg_appsId = "foo";
       var arg_operationsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4316,6 +4378,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4324,7 +4387,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_operationsId)
+          .get(arg_appsId, arg_operationsId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4335,9 +4398,10 @@
       api.AppsOperationsResourceApi res =
           new api.AppengineApi(mock).apps.operations;
       var arg_appsId = "foo";
-      var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4377,11 +4441,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4391,9 +4456,10 @@
       }), true);
       res
           .list(arg_appsId,
-              filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              filter: arg_filter,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
@@ -4407,6 +4473,7 @@
           new api.AppengineApi(mock).apps.services;
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4449,6 +4516,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4457,7 +4525,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_servicesId)
+          .delete(arg_appsId, arg_servicesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4469,6 +4537,7 @@
           new api.AppengineApi(mock).apps.services;
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4511,6 +4580,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4519,7 +4589,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_servicesId)
+          .get(arg_appsId, arg_servicesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Service response) {
         checkService(response);
       })));
@@ -4530,8 +4600,9 @@
       api.AppsServicesResourceApi res =
           new api.AppengineApi(mock).apps.services;
       var arg_appsId = "foo";
-      var arg_pageSize = 42;
       var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4571,10 +4642,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(core.int.parse(queryMap["pageSize"].first),
-            unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4583,7 +4655,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_appsId, pageSize: arg_pageSize, pageToken: arg_pageToken)
+          .list(arg_appsId,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListServicesResponse response) {
         checkListServicesResponse(response);
       })));
@@ -4596,8 +4671,9 @@
       var arg_request = buildService();
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
-      var arg_updateMask = "foo";
       var arg_migrateTraffic = true;
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Service.fromJson(json);
         checkService(obj);
@@ -4643,10 +4719,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
         unittest.expect(queryMap["migrateTraffic"].first,
             unittest.equals("$arg_migrateTraffic"));
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4656,7 +4733,9 @@
       }), true);
       res
           .patch(arg_request, arg_appsId, arg_servicesId,
-              updateMask: arg_updateMask, migrateTraffic: arg_migrateTraffic)
+              migrateTraffic: arg_migrateTraffic,
+              updateMask: arg_updateMask,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4671,6 +4750,7 @@
       var arg_request = buildVersion();
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Version.fromJson(json);
         checkVersion(obj);
@@ -4722,6 +4802,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4730,7 +4811,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_appsId, arg_servicesId)
+          .create(arg_request, arg_appsId, arg_servicesId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4743,6 +4824,7 @@
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4794,6 +4876,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4802,7 +4885,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_servicesId, arg_versionsId)
+          .delete(arg_appsId, arg_servicesId, arg_versionsId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4816,6 +4900,7 @@
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
       var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4868,6 +4953,7 @@
           }
         }
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4876,7 +4962,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_servicesId, arg_versionsId, view: arg_view)
+          .get(arg_appsId, arg_servicesId, arg_versionsId,
+              view: arg_view, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Version response) {
         checkVersion(response);
       })));
@@ -4891,6 +4978,7 @@
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4944,6 +5032,7 @@
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4953,7 +5042,10 @@
       }), true);
       res
           .list(arg_appsId, arg_servicesId,
-              pageToken: arg_pageToken, pageSize: arg_pageSize, view: arg_view)
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              view: arg_view,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListVersionsResponse response) {
         checkListVersionsResponse(response);
       })));
@@ -4968,6 +5060,7 @@
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Version.fromJson(json);
         checkVersion(obj);
@@ -5024,6 +5117,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5033,7 +5127,7 @@
       }), true);
       res
           .patch(arg_request, arg_appsId, arg_servicesId, arg_versionsId,
-              updateMask: arg_updateMask)
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -5050,6 +5144,7 @@
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
       var arg_instancesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DebugInstanceRequest.fromJson(json);
         checkDebugInstanceRequest(obj);
@@ -5119,6 +5214,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5128,7 +5224,8 @@
       }), true);
       res
           .debug(arg_request, arg_appsId, arg_servicesId, arg_versionsId,
-              arg_instancesId)
+              arg_instancesId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -5142,6 +5239,7 @@
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
       var arg_instancesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5202,6 +5300,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5210,7 +5309,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_appsId, arg_servicesId, arg_versionsId, arg_instancesId)
+          .delete(arg_appsId, arg_servicesId, arg_versionsId, arg_instancesId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -5224,6 +5324,7 @@
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
       var arg_instancesId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5284,6 +5385,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5292,7 +5394,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_appsId, arg_servicesId, arg_versionsId, arg_instancesId)
+          .get(arg_appsId, arg_servicesId, arg_versionsId, arg_instancesId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Instance response) {
         checkInstance(response);
       })));
@@ -5305,8 +5408,9 @@
       var arg_appsId = "foo";
       var arg_servicesId = "foo";
       var arg_versionsId = "foo";
-      var arg_pageSize = 42;
       var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5364,10 +5468,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(core.int.parse(queryMap["pageSize"].first),
-            unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5377,7 +5482,9 @@
       }), true);
       res
           .list(arg_appsId, arg_servicesId, arg_versionsId,
-              pageSize: arg_pageSize, pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListInstancesResponse response) {
         checkListInstancesResponse(response);
       })));
diff --git a/generated/googleapis_beta/test/clouderrorreporting/v1beta1_test.dart b/generated/googleapis_beta/test/clouderrorreporting/v1beta1_test.dart
new file mode 100644
index 0000000..584641f
--- /dev/null
+++ b/generated/googleapis_beta/test/clouderrorreporting/v1beta1_test.dart
@@ -0,0 +1,1011 @@
+library googleapis_beta.clouderrorreporting.v1beta1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis_beta/clouderrorreporting/v1beta1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterDeleteEventsResponse = 0;
+buildDeleteEventsResponse() {
+  var o = new api.DeleteEventsResponse();
+  buildCounterDeleteEventsResponse++;
+  if (buildCounterDeleteEventsResponse < 3) {}
+  buildCounterDeleteEventsResponse--;
+  return o;
+}
+
+checkDeleteEventsResponse(api.DeleteEventsResponse o) {
+  buildCounterDeleteEventsResponse++;
+  if (buildCounterDeleteEventsResponse < 3) {}
+  buildCounterDeleteEventsResponse--;
+}
+
+buildUnnamed3447() {
+  var o = new core.List<api.SourceReference>();
+  o.add(buildSourceReference());
+  o.add(buildSourceReference());
+  return o;
+}
+
+checkUnnamed3447(core.List<api.SourceReference> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSourceReference(o[0]);
+  checkSourceReference(o[1]);
+}
+
+core.int buildCounterErrorContext = 0;
+buildErrorContext() {
+  var o = new api.ErrorContext();
+  buildCounterErrorContext++;
+  if (buildCounterErrorContext < 3) {
+    o.httpRequest = buildHttpRequestContext();
+    o.reportLocation = buildSourceLocation();
+    o.sourceReferences = buildUnnamed3447();
+    o.user = "foo";
+  }
+  buildCounterErrorContext--;
+  return o;
+}
+
+checkErrorContext(api.ErrorContext o) {
+  buildCounterErrorContext++;
+  if (buildCounterErrorContext < 3) {
+    checkHttpRequestContext(o.httpRequest);
+    checkSourceLocation(o.reportLocation);
+    checkUnnamed3447(o.sourceReferences);
+    unittest.expect(o.user, unittest.equals('foo'));
+  }
+  buildCounterErrorContext--;
+}
+
+core.int buildCounterErrorEvent = 0;
+buildErrorEvent() {
+  var o = new api.ErrorEvent();
+  buildCounterErrorEvent++;
+  if (buildCounterErrorEvent < 3) {
+    o.context = buildErrorContext();
+    o.eventTime = "foo";
+    o.message = "foo";
+    o.serviceContext = buildServiceContext();
+  }
+  buildCounterErrorEvent--;
+  return o;
+}
+
+checkErrorEvent(api.ErrorEvent o) {
+  buildCounterErrorEvent++;
+  if (buildCounterErrorEvent < 3) {
+    checkErrorContext(o.context);
+    unittest.expect(o.eventTime, unittest.equals('foo'));
+    unittest.expect(o.message, unittest.equals('foo'));
+    checkServiceContext(o.serviceContext);
+  }
+  buildCounterErrorEvent--;
+}
+
+buildUnnamed3448() {
+  var o = new core.List<api.TrackingIssue>();
+  o.add(buildTrackingIssue());
+  o.add(buildTrackingIssue());
+  return o;
+}
+
+checkUnnamed3448(core.List<api.TrackingIssue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTrackingIssue(o[0]);
+  checkTrackingIssue(o[1]);
+}
+
+core.int buildCounterErrorGroup = 0;
+buildErrorGroup() {
+  var o = new api.ErrorGroup();
+  buildCounterErrorGroup++;
+  if (buildCounterErrorGroup < 3) {
+    o.groupId = "foo";
+    o.name = "foo";
+    o.trackingIssues = buildUnnamed3448();
+  }
+  buildCounterErrorGroup--;
+  return o;
+}
+
+checkErrorGroup(api.ErrorGroup o) {
+  buildCounterErrorGroup++;
+  if (buildCounterErrorGroup < 3) {
+    unittest.expect(o.groupId, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed3448(o.trackingIssues);
+  }
+  buildCounterErrorGroup--;
+}
+
+buildUnnamed3449() {
+  var o = new core.List<api.ServiceContext>();
+  o.add(buildServiceContext());
+  o.add(buildServiceContext());
+  return o;
+}
+
+checkUnnamed3449(core.List<api.ServiceContext> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkServiceContext(o[0]);
+  checkServiceContext(o[1]);
+}
+
+buildUnnamed3450() {
+  var o = new core.List<api.TimedCount>();
+  o.add(buildTimedCount());
+  o.add(buildTimedCount());
+  return o;
+}
+
+checkUnnamed3450(core.List<api.TimedCount> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTimedCount(o[0]);
+  checkTimedCount(o[1]);
+}
+
+core.int buildCounterErrorGroupStats = 0;
+buildErrorGroupStats() {
+  var o = new api.ErrorGroupStats();
+  buildCounterErrorGroupStats++;
+  if (buildCounterErrorGroupStats < 3) {
+    o.affectedServices = buildUnnamed3449();
+    o.affectedUsersCount = "foo";
+    o.count = "foo";
+    o.firstSeenTime = "foo";
+    o.group = buildErrorGroup();
+    o.lastSeenTime = "foo";
+    o.numAffectedServices = 42;
+    o.representative = buildErrorEvent();
+    o.timedCounts = buildUnnamed3450();
+  }
+  buildCounterErrorGroupStats--;
+  return o;
+}
+
+checkErrorGroupStats(api.ErrorGroupStats o) {
+  buildCounterErrorGroupStats++;
+  if (buildCounterErrorGroupStats < 3) {
+    checkUnnamed3449(o.affectedServices);
+    unittest.expect(o.affectedUsersCount, unittest.equals('foo'));
+    unittest.expect(o.count, unittest.equals('foo'));
+    unittest.expect(o.firstSeenTime, unittest.equals('foo'));
+    checkErrorGroup(o.group);
+    unittest.expect(o.lastSeenTime, unittest.equals('foo'));
+    unittest.expect(o.numAffectedServices, unittest.equals(42));
+    checkErrorEvent(o.representative);
+    checkUnnamed3450(o.timedCounts);
+  }
+  buildCounterErrorGroupStats--;
+}
+
+core.int buildCounterHttpRequestContext = 0;
+buildHttpRequestContext() {
+  var o = new api.HttpRequestContext();
+  buildCounterHttpRequestContext++;
+  if (buildCounterHttpRequestContext < 3) {
+    o.method = "foo";
+    o.referrer = "foo";
+    o.remoteIp = "foo";
+    o.responseStatusCode = 42;
+    o.url = "foo";
+    o.userAgent = "foo";
+  }
+  buildCounterHttpRequestContext--;
+  return o;
+}
+
+checkHttpRequestContext(api.HttpRequestContext o) {
+  buildCounterHttpRequestContext++;
+  if (buildCounterHttpRequestContext < 3) {
+    unittest.expect(o.method, unittest.equals('foo'));
+    unittest.expect(o.referrer, unittest.equals('foo'));
+    unittest.expect(o.remoteIp, unittest.equals('foo'));
+    unittest.expect(o.responseStatusCode, unittest.equals(42));
+    unittest.expect(o.url, unittest.equals('foo'));
+    unittest.expect(o.userAgent, unittest.equals('foo'));
+  }
+  buildCounterHttpRequestContext--;
+}
+
+buildUnnamed3451() {
+  var o = new core.List<api.ErrorEvent>();
+  o.add(buildErrorEvent());
+  o.add(buildErrorEvent());
+  return o;
+}
+
+checkUnnamed3451(core.List<api.ErrorEvent> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkErrorEvent(o[0]);
+  checkErrorEvent(o[1]);
+}
+
+core.int buildCounterListEventsResponse = 0;
+buildListEventsResponse() {
+  var o = new api.ListEventsResponse();
+  buildCounterListEventsResponse++;
+  if (buildCounterListEventsResponse < 3) {
+    o.errorEvents = buildUnnamed3451();
+    o.nextPageToken = "foo";
+    o.timeRangeBegin = "foo";
+  }
+  buildCounterListEventsResponse--;
+  return o;
+}
+
+checkListEventsResponse(api.ListEventsResponse o) {
+  buildCounterListEventsResponse++;
+  if (buildCounterListEventsResponse < 3) {
+    checkUnnamed3451(o.errorEvents);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.timeRangeBegin, unittest.equals('foo'));
+  }
+  buildCounterListEventsResponse--;
+}
+
+buildUnnamed3452() {
+  var o = new core.List<api.ErrorGroupStats>();
+  o.add(buildErrorGroupStats());
+  o.add(buildErrorGroupStats());
+  return o;
+}
+
+checkUnnamed3452(core.List<api.ErrorGroupStats> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkErrorGroupStats(o[0]);
+  checkErrorGroupStats(o[1]);
+}
+
+core.int buildCounterListGroupStatsResponse = 0;
+buildListGroupStatsResponse() {
+  var o = new api.ListGroupStatsResponse();
+  buildCounterListGroupStatsResponse++;
+  if (buildCounterListGroupStatsResponse < 3) {
+    o.errorGroupStats = buildUnnamed3452();
+    o.nextPageToken = "foo";
+    o.timeRangeBegin = "foo";
+  }
+  buildCounterListGroupStatsResponse--;
+  return o;
+}
+
+checkListGroupStatsResponse(api.ListGroupStatsResponse o) {
+  buildCounterListGroupStatsResponse++;
+  if (buildCounterListGroupStatsResponse < 3) {
+    checkUnnamed3452(o.errorGroupStats);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(o.timeRangeBegin, unittest.equals('foo'));
+  }
+  buildCounterListGroupStatsResponse--;
+}
+
+core.int buildCounterReportErrorEventResponse = 0;
+buildReportErrorEventResponse() {
+  var o = new api.ReportErrorEventResponse();
+  buildCounterReportErrorEventResponse++;
+  if (buildCounterReportErrorEventResponse < 3) {}
+  buildCounterReportErrorEventResponse--;
+  return o;
+}
+
+checkReportErrorEventResponse(api.ReportErrorEventResponse o) {
+  buildCounterReportErrorEventResponse++;
+  if (buildCounterReportErrorEventResponse < 3) {}
+  buildCounterReportErrorEventResponse--;
+}
+
+core.int buildCounterReportedErrorEvent = 0;
+buildReportedErrorEvent() {
+  var o = new api.ReportedErrorEvent();
+  buildCounterReportedErrorEvent++;
+  if (buildCounterReportedErrorEvent < 3) {
+    o.context = buildErrorContext();
+    o.eventTime = "foo";
+    o.message = "foo";
+    o.serviceContext = buildServiceContext();
+  }
+  buildCounterReportedErrorEvent--;
+  return o;
+}
+
+checkReportedErrorEvent(api.ReportedErrorEvent o) {
+  buildCounterReportedErrorEvent++;
+  if (buildCounterReportedErrorEvent < 3) {
+    checkErrorContext(o.context);
+    unittest.expect(o.eventTime, unittest.equals('foo'));
+    unittest.expect(o.message, unittest.equals('foo'));
+    checkServiceContext(o.serviceContext);
+  }
+  buildCounterReportedErrorEvent--;
+}
+
+core.int buildCounterServiceContext = 0;
+buildServiceContext() {
+  var o = new api.ServiceContext();
+  buildCounterServiceContext++;
+  if (buildCounterServiceContext < 3) {
+    o.resourceType = "foo";
+    o.service = "foo";
+    o.version = "foo";
+  }
+  buildCounterServiceContext--;
+  return o;
+}
+
+checkServiceContext(api.ServiceContext o) {
+  buildCounterServiceContext++;
+  if (buildCounterServiceContext < 3) {
+    unittest.expect(o.resourceType, unittest.equals('foo'));
+    unittest.expect(o.service, unittest.equals('foo'));
+    unittest.expect(o.version, unittest.equals('foo'));
+  }
+  buildCounterServiceContext--;
+}
+
+core.int buildCounterSourceLocation = 0;
+buildSourceLocation() {
+  var o = new api.SourceLocation();
+  buildCounterSourceLocation++;
+  if (buildCounterSourceLocation < 3) {
+    o.filePath = "foo";
+    o.functionName = "foo";
+    o.lineNumber = 42;
+  }
+  buildCounterSourceLocation--;
+  return o;
+}
+
+checkSourceLocation(api.SourceLocation o) {
+  buildCounterSourceLocation++;
+  if (buildCounterSourceLocation < 3) {
+    unittest.expect(o.filePath, unittest.equals('foo'));
+    unittest.expect(o.functionName, unittest.equals('foo'));
+    unittest.expect(o.lineNumber, unittest.equals(42));
+  }
+  buildCounterSourceLocation--;
+}
+
+core.int buildCounterSourceReference = 0;
+buildSourceReference() {
+  var o = new api.SourceReference();
+  buildCounterSourceReference++;
+  if (buildCounterSourceReference < 3) {
+    o.repository = "foo";
+    o.revisionId = "foo";
+  }
+  buildCounterSourceReference--;
+  return o;
+}
+
+checkSourceReference(api.SourceReference o) {
+  buildCounterSourceReference++;
+  if (buildCounterSourceReference < 3) {
+    unittest.expect(o.repository, unittest.equals('foo'));
+    unittest.expect(o.revisionId, unittest.equals('foo'));
+  }
+  buildCounterSourceReference--;
+}
+
+core.int buildCounterTimedCount = 0;
+buildTimedCount() {
+  var o = new api.TimedCount();
+  buildCounterTimedCount++;
+  if (buildCounterTimedCount < 3) {
+    o.count = "foo";
+    o.endTime = "foo";
+    o.startTime = "foo";
+  }
+  buildCounterTimedCount--;
+  return o;
+}
+
+checkTimedCount(api.TimedCount o) {
+  buildCounterTimedCount++;
+  if (buildCounterTimedCount < 3) {
+    unittest.expect(o.count, unittest.equals('foo'));
+    unittest.expect(o.endTime, unittest.equals('foo'));
+    unittest.expect(o.startTime, unittest.equals('foo'));
+  }
+  buildCounterTimedCount--;
+}
+
+core.int buildCounterTrackingIssue = 0;
+buildTrackingIssue() {
+  var o = new api.TrackingIssue();
+  buildCounterTrackingIssue++;
+  if (buildCounterTrackingIssue < 3) {
+    o.url = "foo";
+  }
+  buildCounterTrackingIssue--;
+  return o;
+}
+
+checkTrackingIssue(api.TrackingIssue o) {
+  buildCounterTrackingIssue++;
+  if (buildCounterTrackingIssue < 3) {
+    unittest.expect(o.url, unittest.equals('foo'));
+  }
+  buildCounterTrackingIssue--;
+}
+
+buildUnnamed3453() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3453(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-DeleteEventsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteEventsResponse();
+      var od = new api.DeleteEventsResponse.fromJson(o.toJson());
+      checkDeleteEventsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ErrorContext", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildErrorContext();
+      var od = new api.ErrorContext.fromJson(o.toJson());
+      checkErrorContext(od);
+    });
+  });
+
+  unittest.group("obj-schema-ErrorEvent", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildErrorEvent();
+      var od = new api.ErrorEvent.fromJson(o.toJson());
+      checkErrorEvent(od);
+    });
+  });
+
+  unittest.group("obj-schema-ErrorGroup", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildErrorGroup();
+      var od = new api.ErrorGroup.fromJson(o.toJson());
+      checkErrorGroup(od);
+    });
+  });
+
+  unittest.group("obj-schema-ErrorGroupStats", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildErrorGroupStats();
+      var od = new api.ErrorGroupStats.fromJson(o.toJson());
+      checkErrorGroupStats(od);
+    });
+  });
+
+  unittest.group("obj-schema-HttpRequestContext", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildHttpRequestContext();
+      var od = new api.HttpRequestContext.fromJson(o.toJson());
+      checkHttpRequestContext(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListEventsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListEventsResponse();
+      var od = new api.ListEventsResponse.fromJson(o.toJson());
+      checkListEventsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListGroupStatsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListGroupStatsResponse();
+      var od = new api.ListGroupStatsResponse.fromJson(o.toJson());
+      checkListGroupStatsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportErrorEventResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportErrorEventResponse();
+      var od = new api.ReportErrorEventResponse.fromJson(o.toJson());
+      checkReportErrorEventResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReportedErrorEvent", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReportedErrorEvent();
+      var od = new api.ReportedErrorEvent.fromJson(o.toJson());
+      checkReportedErrorEvent(od);
+    });
+  });
+
+  unittest.group("obj-schema-ServiceContext", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildServiceContext();
+      var od = new api.ServiceContext.fromJson(o.toJson());
+      checkServiceContext(od);
+    });
+  });
+
+  unittest.group("obj-schema-SourceLocation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSourceLocation();
+      var od = new api.SourceLocation.fromJson(o.toJson());
+      checkSourceLocation(od);
+    });
+  });
+
+  unittest.group("obj-schema-SourceReference", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSourceReference();
+      var od = new api.SourceReference.fromJson(o.toJson());
+      checkSourceReference(od);
+    });
+  });
+
+  unittest.group("obj-schema-TimedCount", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTimedCount();
+      var od = new api.TimedCount.fromJson(o.toJson());
+      checkTimedCount(od);
+    });
+  });
+
+  unittest.group("obj-schema-TrackingIssue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTrackingIssue();
+      var od = new api.TrackingIssue.fromJson(o.toJson());
+      checkTrackingIssue(od);
+    });
+  });
+
+  unittest.group("resource-ProjectsResourceApi", () {
+    unittest.test("method--deleteEvents", () {
+      var mock = new HttpServerMock();
+      api.ProjectsResourceApi res =
+          new api.ClouderrorreportingApi(mock).projects;
+      var arg_projectName = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDeleteEventsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .deleteEvents(arg_projectName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.DeleteEventsResponse response) {
+        checkDeleteEventsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsEventsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsEventsResourceApi res =
+          new api.ClouderrorreportingApi(mock).projects.events;
+      var arg_projectName = "foo";
+      var arg_serviceFilter_resourceType = "foo";
+      var arg_timeRange_period = "foo";
+      var arg_groupId = "foo";
+      var arg_pageToken = "foo";
+      var arg_serviceFilter_service = "foo";
+      var arg_pageSize = 42;
+      var arg_serviceFilter_version = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["serviceFilter.resourceType"].first,
+            unittest.equals(arg_serviceFilter_resourceType));
+        unittest.expect(queryMap["timeRange.period"].first,
+            unittest.equals(arg_timeRange_period));
+        unittest.expect(
+            queryMap["groupId"].first, unittest.equals(arg_groupId));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["serviceFilter.service"].first,
+            unittest.equals(arg_serviceFilter_service));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["serviceFilter.version"].first,
+            unittest.equals(arg_serviceFilter_version));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListEventsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_projectName,
+              serviceFilter_resourceType: arg_serviceFilter_resourceType,
+              timeRange_period: arg_timeRange_period,
+              groupId: arg_groupId,
+              pageToken: arg_pageToken,
+              serviceFilter_service: arg_serviceFilter_service,
+              pageSize: arg_pageSize,
+              serviceFilter_version: arg_serviceFilter_version,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListEventsResponse response) {
+        checkListEventsResponse(response);
+      })));
+    });
+
+    unittest.test("method--report", () {
+      var mock = new HttpServerMock();
+      api.ProjectsEventsResourceApi res =
+          new api.ClouderrorreportingApi(mock).projects.events;
+      var arg_request = buildReportedErrorEvent();
+      var arg_projectName = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ReportedErrorEvent.fromJson(json);
+        checkReportedErrorEvent(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildReportErrorEventResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .report(arg_request, arg_projectName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ReportErrorEventResponse response) {
+        checkReportErrorEventResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsGroupStatsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsGroupStatsResourceApi res =
+          new api.ClouderrorreportingApi(mock).projects.groupStats;
+      var arg_projectName = "foo";
+      var arg_timeRange_period = "foo";
+      var arg_alignment = "foo";
+      var arg_groupId = buildUnnamed3453();
+      var arg_serviceFilter_service = "foo";
+      var arg_pageSize = 42;
+      var arg_serviceFilter_version = "foo";
+      var arg_order = "foo";
+      var arg_serviceFilter_resourceType = "foo";
+      var arg_alignmentTime = "foo";
+      var arg_timedCountDuration = "foo";
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["timeRange.period"].first,
+            unittest.equals(arg_timeRange_period));
+        unittest.expect(
+            queryMap["alignment"].first, unittest.equals(arg_alignment));
+        unittest.expect(queryMap["groupId"], unittest.equals(arg_groupId));
+        unittest.expect(queryMap["serviceFilter.service"].first,
+            unittest.equals(arg_serviceFilter_service));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["serviceFilter.version"].first,
+            unittest.equals(arg_serviceFilter_version));
+        unittest.expect(queryMap["order"].first, unittest.equals(arg_order));
+        unittest.expect(queryMap["serviceFilter.resourceType"].first,
+            unittest.equals(arg_serviceFilter_resourceType));
+        unittest.expect(queryMap["alignmentTime"].first,
+            unittest.equals(arg_alignmentTime));
+        unittest.expect(queryMap["timedCountDuration"].first,
+            unittest.equals(arg_timedCountDuration));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListGroupStatsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_projectName,
+              timeRange_period: arg_timeRange_period,
+              alignment: arg_alignment,
+              groupId: arg_groupId,
+              serviceFilter_service: arg_serviceFilter_service,
+              pageSize: arg_pageSize,
+              serviceFilter_version: arg_serviceFilter_version,
+              order: arg_order,
+              serviceFilter_resourceType: arg_serviceFilter_resourceType,
+              alignmentTime: arg_alignmentTime,
+              timedCountDuration: arg_timedCountDuration,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListGroupStatsResponse response) {
+        checkListGroupStatsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsGroupsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsGroupsResourceApi res =
+          new api.ClouderrorreportingApi(mock).projects.groups;
+      var arg_groupName = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildErrorGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_groupName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ErrorGroup response) {
+        checkErrorGroup(response);
+      })));
+    });
+
+    unittest.test("method--update", () {
+      var mock = new HttpServerMock();
+      api.ProjectsGroupsResourceApi res =
+          new api.ClouderrorreportingApi(mock).projects.groups;
+      var arg_request = buildErrorGroup();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ErrorGroup.fromJson(json);
+        checkErrorGroup(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildErrorGroup());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .update(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ErrorGroup response) {
+        checkErrorGroup(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis_beta/test/cloudmonitoring/v2beta2_test.dart b/generated/googleapis_beta/test/cloudmonitoring/v2beta2_test.dart
new file mode 100644
index 0000000..283b65f
--- /dev/null
+++ b/generated/googleapis_beta/test/cloudmonitoring/v2beta2_test.dart
@@ -0,0 +1,1227 @@
+library googleapis_beta.cloudmonitoring.v2beta2.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis_beta/cloudmonitoring/v2beta2.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterDeleteMetricDescriptorResponse = 0;
+buildDeleteMetricDescriptorResponse() {
+  var o = new api.DeleteMetricDescriptorResponse();
+  buildCounterDeleteMetricDescriptorResponse++;
+  if (buildCounterDeleteMetricDescriptorResponse < 3) {
+    o.kind = "foo";
+  }
+  buildCounterDeleteMetricDescriptorResponse--;
+  return o;
+}
+
+checkDeleteMetricDescriptorResponse(api.DeleteMetricDescriptorResponse o) {
+  buildCounterDeleteMetricDescriptorResponse++;
+  if (buildCounterDeleteMetricDescriptorResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterDeleteMetricDescriptorResponse--;
+}
+
+core.int buildCounterListMetricDescriptorsRequest = 0;
+buildListMetricDescriptorsRequest() {
+  var o = new api.ListMetricDescriptorsRequest();
+  buildCounterListMetricDescriptorsRequest++;
+  if (buildCounterListMetricDescriptorsRequest < 3) {
+    o.kind = "foo";
+  }
+  buildCounterListMetricDescriptorsRequest--;
+  return o;
+}
+
+checkListMetricDescriptorsRequest(api.ListMetricDescriptorsRequest o) {
+  buildCounterListMetricDescriptorsRequest++;
+  if (buildCounterListMetricDescriptorsRequest < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterListMetricDescriptorsRequest--;
+}
+
+buildUnnamed3637() {
+  var o = new core.List<api.MetricDescriptor>();
+  o.add(buildMetricDescriptor());
+  o.add(buildMetricDescriptor());
+  return o;
+}
+
+checkUnnamed3637(core.List<api.MetricDescriptor> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetricDescriptor(o[0]);
+  checkMetricDescriptor(o[1]);
+}
+
+core.int buildCounterListMetricDescriptorsResponse = 0;
+buildListMetricDescriptorsResponse() {
+  var o = new api.ListMetricDescriptorsResponse();
+  buildCounterListMetricDescriptorsResponse++;
+  if (buildCounterListMetricDescriptorsResponse < 3) {
+    o.kind = "foo";
+    o.metrics = buildUnnamed3637();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListMetricDescriptorsResponse--;
+  return o;
+}
+
+checkListMetricDescriptorsResponse(api.ListMetricDescriptorsResponse o) {
+  buildCounterListMetricDescriptorsResponse++;
+  if (buildCounterListMetricDescriptorsResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkUnnamed3637(o.metrics);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListMetricDescriptorsResponse--;
+}
+
+core.int buildCounterListTimeseriesDescriptorsRequest = 0;
+buildListTimeseriesDescriptorsRequest() {
+  var o = new api.ListTimeseriesDescriptorsRequest();
+  buildCounterListTimeseriesDescriptorsRequest++;
+  if (buildCounterListTimeseriesDescriptorsRequest < 3) {
+    o.kind = "foo";
+  }
+  buildCounterListTimeseriesDescriptorsRequest--;
+  return o;
+}
+
+checkListTimeseriesDescriptorsRequest(api.ListTimeseriesDescriptorsRequest o) {
+  buildCounterListTimeseriesDescriptorsRequest++;
+  if (buildCounterListTimeseriesDescriptorsRequest < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterListTimeseriesDescriptorsRequest--;
+}
+
+buildUnnamed3638() {
+  var o = new core.List<api.TimeseriesDescriptor>();
+  o.add(buildTimeseriesDescriptor());
+  o.add(buildTimeseriesDescriptor());
+  return o;
+}
+
+checkUnnamed3638(core.List<api.TimeseriesDescriptor> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTimeseriesDescriptor(o[0]);
+  checkTimeseriesDescriptor(o[1]);
+}
+
+core.int buildCounterListTimeseriesDescriptorsResponse = 0;
+buildListTimeseriesDescriptorsResponse() {
+  var o = new api.ListTimeseriesDescriptorsResponse();
+  buildCounterListTimeseriesDescriptorsResponse++;
+  if (buildCounterListTimeseriesDescriptorsResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.oldest = core.DateTime.parse("2002-02-27T14:01:02");
+    o.timeseries = buildUnnamed3638();
+    o.youngest = core.DateTime.parse("2002-02-27T14:01:02");
+  }
+  buildCounterListTimeseriesDescriptorsResponse--;
+  return o;
+}
+
+checkListTimeseriesDescriptorsResponse(
+    api.ListTimeseriesDescriptorsResponse o) {
+  buildCounterListTimeseriesDescriptorsResponse++;
+  if (buildCounterListTimeseriesDescriptorsResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(
+        o.oldest, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    checkUnnamed3638(o.timeseries);
+    unittest.expect(o.youngest,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+  }
+  buildCounterListTimeseriesDescriptorsResponse--;
+}
+
+core.int buildCounterListTimeseriesRequest = 0;
+buildListTimeseriesRequest() {
+  var o = new api.ListTimeseriesRequest();
+  buildCounterListTimeseriesRequest++;
+  if (buildCounterListTimeseriesRequest < 3) {
+    o.kind = "foo";
+  }
+  buildCounterListTimeseriesRequest--;
+  return o;
+}
+
+checkListTimeseriesRequest(api.ListTimeseriesRequest o) {
+  buildCounterListTimeseriesRequest++;
+  if (buildCounterListTimeseriesRequest < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterListTimeseriesRequest--;
+}
+
+buildUnnamed3639() {
+  var o = new core.List<api.Timeseries>();
+  o.add(buildTimeseries());
+  o.add(buildTimeseries());
+  return o;
+}
+
+checkUnnamed3639(core.List<api.Timeseries> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTimeseries(o[0]);
+  checkTimeseries(o[1]);
+}
+
+core.int buildCounterListTimeseriesResponse = 0;
+buildListTimeseriesResponse() {
+  var o = new api.ListTimeseriesResponse();
+  buildCounterListTimeseriesResponse++;
+  if (buildCounterListTimeseriesResponse < 3) {
+    o.kind = "foo";
+    o.nextPageToken = "foo";
+    o.oldest = core.DateTime.parse("2002-02-27T14:01:02");
+    o.timeseries = buildUnnamed3639();
+    o.youngest = core.DateTime.parse("2002-02-27T14:01:02");
+  }
+  buildCounterListTimeseriesResponse--;
+  return o;
+}
+
+checkListTimeseriesResponse(api.ListTimeseriesResponse o) {
+  buildCounterListTimeseriesResponse++;
+  if (buildCounterListTimeseriesResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    unittest.expect(
+        o.oldest, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    checkUnnamed3639(o.timeseries);
+    unittest.expect(o.youngest,
+        unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+  }
+  buildCounterListTimeseriesResponse--;
+}
+
+buildUnnamed3640() {
+  var o = new core.List<api.MetricDescriptorLabelDescriptor>();
+  o.add(buildMetricDescriptorLabelDescriptor());
+  o.add(buildMetricDescriptorLabelDescriptor());
+  return o;
+}
+
+checkUnnamed3640(core.List<api.MetricDescriptorLabelDescriptor> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetricDescriptorLabelDescriptor(o[0]);
+  checkMetricDescriptorLabelDescriptor(o[1]);
+}
+
+core.int buildCounterMetricDescriptor = 0;
+buildMetricDescriptor() {
+  var o = new api.MetricDescriptor();
+  buildCounterMetricDescriptor++;
+  if (buildCounterMetricDescriptor < 3) {
+    o.description = "foo";
+    o.labels = buildUnnamed3640();
+    o.name = "foo";
+    o.project = "foo";
+    o.typeDescriptor = buildMetricDescriptorTypeDescriptor();
+  }
+  buildCounterMetricDescriptor--;
+  return o;
+}
+
+checkMetricDescriptor(api.MetricDescriptor o) {
+  buildCounterMetricDescriptor++;
+  if (buildCounterMetricDescriptor < 3) {
+    unittest.expect(o.description, unittest.equals('foo'));
+    checkUnnamed3640(o.labels);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.project, unittest.equals('foo'));
+    checkMetricDescriptorTypeDescriptor(o.typeDescriptor);
+  }
+  buildCounterMetricDescriptor--;
+}
+
+core.int buildCounterMetricDescriptorLabelDescriptor = 0;
+buildMetricDescriptorLabelDescriptor() {
+  var o = new api.MetricDescriptorLabelDescriptor();
+  buildCounterMetricDescriptorLabelDescriptor++;
+  if (buildCounterMetricDescriptorLabelDescriptor < 3) {
+    o.description = "foo";
+    o.key = "foo";
+  }
+  buildCounterMetricDescriptorLabelDescriptor--;
+  return o;
+}
+
+checkMetricDescriptorLabelDescriptor(api.MetricDescriptorLabelDescriptor o) {
+  buildCounterMetricDescriptorLabelDescriptor++;
+  if (buildCounterMetricDescriptorLabelDescriptor < 3) {
+    unittest.expect(o.description, unittest.equals('foo'));
+    unittest.expect(o.key, unittest.equals('foo'));
+  }
+  buildCounterMetricDescriptorLabelDescriptor--;
+}
+
+core.int buildCounterMetricDescriptorTypeDescriptor = 0;
+buildMetricDescriptorTypeDescriptor() {
+  var o = new api.MetricDescriptorTypeDescriptor();
+  buildCounterMetricDescriptorTypeDescriptor++;
+  if (buildCounterMetricDescriptorTypeDescriptor < 3) {
+    o.metricType = "foo";
+    o.valueType = "foo";
+  }
+  buildCounterMetricDescriptorTypeDescriptor--;
+  return o;
+}
+
+checkMetricDescriptorTypeDescriptor(api.MetricDescriptorTypeDescriptor o) {
+  buildCounterMetricDescriptorTypeDescriptor++;
+  if (buildCounterMetricDescriptorTypeDescriptor < 3) {
+    unittest.expect(o.metricType, unittest.equals('foo'));
+    unittest.expect(o.valueType, unittest.equals('foo'));
+  }
+  buildCounterMetricDescriptorTypeDescriptor--;
+}
+
+core.int buildCounterPoint = 0;
+buildPoint() {
+  var o = new api.Point();
+  buildCounterPoint++;
+  if (buildCounterPoint < 3) {
+    o.boolValue = true;
+    o.distributionValue = buildPointDistribution();
+    o.doubleValue = 42.0;
+    o.end = core.DateTime.parse("2002-02-27T14:01:02");
+    o.int64Value = "foo";
+    o.start = core.DateTime.parse("2002-02-27T14:01:02");
+    o.stringValue = "foo";
+  }
+  buildCounterPoint--;
+  return o;
+}
+
+checkPoint(api.Point o) {
+  buildCounterPoint++;
+  if (buildCounterPoint < 3) {
+    unittest.expect(o.boolValue, unittest.isTrue);
+    checkPointDistribution(o.distributionValue);
+    unittest.expect(o.doubleValue, unittest.equals(42.0));
+    unittest.expect(
+        o.end, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.int64Value, unittest.equals('foo'));
+    unittest.expect(
+        o.start, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
+    unittest.expect(o.stringValue, unittest.equals('foo'));
+  }
+  buildCounterPoint--;
+}
+
+buildUnnamed3641() {
+  var o = new core.List<api.PointDistributionBucket>();
+  o.add(buildPointDistributionBucket());
+  o.add(buildPointDistributionBucket());
+  return o;
+}
+
+checkUnnamed3641(core.List<api.PointDistributionBucket> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPointDistributionBucket(o[0]);
+  checkPointDistributionBucket(o[1]);
+}
+
+core.int buildCounterPointDistribution = 0;
+buildPointDistribution() {
+  var o = new api.PointDistribution();
+  buildCounterPointDistribution++;
+  if (buildCounterPointDistribution < 3) {
+    o.buckets = buildUnnamed3641();
+    o.overflowBucket = buildPointDistributionOverflowBucket();
+    o.underflowBucket = buildPointDistributionUnderflowBucket();
+  }
+  buildCounterPointDistribution--;
+  return o;
+}
+
+checkPointDistribution(api.PointDistribution o) {
+  buildCounterPointDistribution++;
+  if (buildCounterPointDistribution < 3) {
+    checkUnnamed3641(o.buckets);
+    checkPointDistributionOverflowBucket(o.overflowBucket);
+    checkPointDistributionUnderflowBucket(o.underflowBucket);
+  }
+  buildCounterPointDistribution--;
+}
+
+core.int buildCounterPointDistributionBucket = 0;
+buildPointDistributionBucket() {
+  var o = new api.PointDistributionBucket();
+  buildCounterPointDistributionBucket++;
+  if (buildCounterPointDistributionBucket < 3) {
+    o.count = "foo";
+    o.lowerBound = 42.0;
+    o.upperBound = 42.0;
+  }
+  buildCounterPointDistributionBucket--;
+  return o;
+}
+
+checkPointDistributionBucket(api.PointDistributionBucket o) {
+  buildCounterPointDistributionBucket++;
+  if (buildCounterPointDistributionBucket < 3) {
+    unittest.expect(o.count, unittest.equals('foo'));
+    unittest.expect(o.lowerBound, unittest.equals(42.0));
+    unittest.expect(o.upperBound, unittest.equals(42.0));
+  }
+  buildCounterPointDistributionBucket--;
+}
+
+core.int buildCounterPointDistributionOverflowBucket = 0;
+buildPointDistributionOverflowBucket() {
+  var o = new api.PointDistributionOverflowBucket();
+  buildCounterPointDistributionOverflowBucket++;
+  if (buildCounterPointDistributionOverflowBucket < 3) {
+    o.count = "foo";
+    o.lowerBound = 42.0;
+  }
+  buildCounterPointDistributionOverflowBucket--;
+  return o;
+}
+
+checkPointDistributionOverflowBucket(api.PointDistributionOverflowBucket o) {
+  buildCounterPointDistributionOverflowBucket++;
+  if (buildCounterPointDistributionOverflowBucket < 3) {
+    unittest.expect(o.count, unittest.equals('foo'));
+    unittest.expect(o.lowerBound, unittest.equals(42.0));
+  }
+  buildCounterPointDistributionOverflowBucket--;
+}
+
+core.int buildCounterPointDistributionUnderflowBucket = 0;
+buildPointDistributionUnderflowBucket() {
+  var o = new api.PointDistributionUnderflowBucket();
+  buildCounterPointDistributionUnderflowBucket++;
+  if (buildCounterPointDistributionUnderflowBucket < 3) {
+    o.count = "foo";
+    o.upperBound = 42.0;
+  }
+  buildCounterPointDistributionUnderflowBucket--;
+  return o;
+}
+
+checkPointDistributionUnderflowBucket(api.PointDistributionUnderflowBucket o) {
+  buildCounterPointDistributionUnderflowBucket++;
+  if (buildCounterPointDistributionUnderflowBucket < 3) {
+    unittest.expect(o.count, unittest.equals('foo'));
+    unittest.expect(o.upperBound, unittest.equals(42.0));
+  }
+  buildCounterPointDistributionUnderflowBucket--;
+}
+
+buildUnnamed3642() {
+  var o = new core.List<api.Point>();
+  o.add(buildPoint());
+  o.add(buildPoint());
+  return o;
+}
+
+checkUnnamed3642(core.List<api.Point> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPoint(o[0]);
+  checkPoint(o[1]);
+}
+
+core.int buildCounterTimeseries = 0;
+buildTimeseries() {
+  var o = new api.Timeseries();
+  buildCounterTimeseries++;
+  if (buildCounterTimeseries < 3) {
+    o.points = buildUnnamed3642();
+    o.timeseriesDesc = buildTimeseriesDescriptor();
+  }
+  buildCounterTimeseries--;
+  return o;
+}
+
+checkTimeseries(api.Timeseries o) {
+  buildCounterTimeseries++;
+  if (buildCounterTimeseries < 3) {
+    checkUnnamed3642(o.points);
+    checkTimeseriesDescriptor(o.timeseriesDesc);
+  }
+  buildCounterTimeseries--;
+}
+
+buildUnnamed3643() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed3643(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterTimeseriesDescriptor = 0;
+buildTimeseriesDescriptor() {
+  var o = new api.TimeseriesDescriptor();
+  buildCounterTimeseriesDescriptor++;
+  if (buildCounterTimeseriesDescriptor < 3) {
+    o.labels = buildUnnamed3643();
+    o.metric = "foo";
+    o.project = "foo";
+  }
+  buildCounterTimeseriesDescriptor--;
+  return o;
+}
+
+checkTimeseriesDescriptor(api.TimeseriesDescriptor o) {
+  buildCounterTimeseriesDescriptor++;
+  if (buildCounterTimeseriesDescriptor < 3) {
+    checkUnnamed3643(o.labels);
+    unittest.expect(o.metric, unittest.equals('foo'));
+    unittest.expect(o.project, unittest.equals('foo'));
+  }
+  buildCounterTimeseriesDescriptor--;
+}
+
+core.int buildCounterTimeseriesDescriptorLabel = 0;
+buildTimeseriesDescriptorLabel() {
+  var o = new api.TimeseriesDescriptorLabel();
+  buildCounterTimeseriesDescriptorLabel++;
+  if (buildCounterTimeseriesDescriptorLabel < 3) {
+    o.key = "foo";
+    o.value = "foo";
+  }
+  buildCounterTimeseriesDescriptorLabel--;
+  return o;
+}
+
+checkTimeseriesDescriptorLabel(api.TimeseriesDescriptorLabel o) {
+  buildCounterTimeseriesDescriptorLabel++;
+  if (buildCounterTimeseriesDescriptorLabel < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterTimeseriesDescriptorLabel--;
+}
+
+core.int buildCounterTimeseriesPoint = 0;
+buildTimeseriesPoint() {
+  var o = new api.TimeseriesPoint();
+  buildCounterTimeseriesPoint++;
+  if (buildCounterTimeseriesPoint < 3) {
+    o.point = buildPoint();
+    o.timeseriesDesc = buildTimeseriesDescriptor();
+  }
+  buildCounterTimeseriesPoint--;
+  return o;
+}
+
+checkTimeseriesPoint(api.TimeseriesPoint o) {
+  buildCounterTimeseriesPoint++;
+  if (buildCounterTimeseriesPoint < 3) {
+    checkPoint(o.point);
+    checkTimeseriesDescriptor(o.timeseriesDesc);
+  }
+  buildCounterTimeseriesPoint--;
+}
+
+buildUnnamed3644() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed3644(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+buildUnnamed3645() {
+  var o = new core.List<api.TimeseriesPoint>();
+  o.add(buildTimeseriesPoint());
+  o.add(buildTimeseriesPoint());
+  return o;
+}
+
+checkUnnamed3645(core.List<api.TimeseriesPoint> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTimeseriesPoint(o[0]);
+  checkTimeseriesPoint(o[1]);
+}
+
+core.int buildCounterWriteTimeseriesRequest = 0;
+buildWriteTimeseriesRequest() {
+  var o = new api.WriteTimeseriesRequest();
+  buildCounterWriteTimeseriesRequest++;
+  if (buildCounterWriteTimeseriesRequest < 3) {
+    o.commonLabels = buildUnnamed3644();
+    o.timeseries = buildUnnamed3645();
+  }
+  buildCounterWriteTimeseriesRequest--;
+  return o;
+}
+
+checkWriteTimeseriesRequest(api.WriteTimeseriesRequest o) {
+  buildCounterWriteTimeseriesRequest++;
+  if (buildCounterWriteTimeseriesRequest < 3) {
+    checkUnnamed3644(o.commonLabels);
+    checkUnnamed3645(o.timeseries);
+  }
+  buildCounterWriteTimeseriesRequest--;
+}
+
+core.int buildCounterWriteTimeseriesResponse = 0;
+buildWriteTimeseriesResponse() {
+  var o = new api.WriteTimeseriesResponse();
+  buildCounterWriteTimeseriesResponse++;
+  if (buildCounterWriteTimeseriesResponse < 3) {
+    o.kind = "foo";
+  }
+  buildCounterWriteTimeseriesResponse--;
+  return o;
+}
+
+checkWriteTimeseriesResponse(api.WriteTimeseriesResponse o) {
+  buildCounterWriteTimeseriesResponse++;
+  if (buildCounterWriteTimeseriesResponse < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+  }
+  buildCounterWriteTimeseriesResponse--;
+}
+
+buildUnnamed3646() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3646(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3647() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3647(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-DeleteMetricDescriptorResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDeleteMetricDescriptorResponse();
+      var od = new api.DeleteMetricDescriptorResponse.fromJson(o.toJson());
+      checkDeleteMetricDescriptorResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListMetricDescriptorsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListMetricDescriptorsRequest();
+      var od = new api.ListMetricDescriptorsRequest.fromJson(o.toJson());
+      checkListMetricDescriptorsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListMetricDescriptorsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListMetricDescriptorsResponse();
+      var od = new api.ListMetricDescriptorsResponse.fromJson(o.toJson());
+      checkListMetricDescriptorsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListTimeseriesDescriptorsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListTimeseriesDescriptorsRequest();
+      var od = new api.ListTimeseriesDescriptorsRequest.fromJson(o.toJson());
+      checkListTimeseriesDescriptorsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListTimeseriesDescriptorsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListTimeseriesDescriptorsResponse();
+      var od = new api.ListTimeseriesDescriptorsResponse.fromJson(o.toJson());
+      checkListTimeseriesDescriptorsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListTimeseriesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListTimeseriesRequest();
+      var od = new api.ListTimeseriesRequest.fromJson(o.toJson());
+      checkListTimeseriesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListTimeseriesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListTimeseriesResponse();
+      var od = new api.ListTimeseriesResponse.fromJson(o.toJson());
+      checkListTimeseriesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-MetricDescriptor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMetricDescriptor();
+      var od = new api.MetricDescriptor.fromJson(o.toJson());
+      checkMetricDescriptor(od);
+    });
+  });
+
+  unittest.group("obj-schema-MetricDescriptorLabelDescriptor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMetricDescriptorLabelDescriptor();
+      var od = new api.MetricDescriptorLabelDescriptor.fromJson(o.toJson());
+      checkMetricDescriptorLabelDescriptor(od);
+    });
+  });
+
+  unittest.group("obj-schema-MetricDescriptorTypeDescriptor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMetricDescriptorTypeDescriptor();
+      var od = new api.MetricDescriptorTypeDescriptor.fromJson(o.toJson());
+      checkMetricDescriptorTypeDescriptor(od);
+    });
+  });
+
+  unittest.group("obj-schema-Point", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPoint();
+      var od = new api.Point.fromJson(o.toJson());
+      checkPoint(od);
+    });
+  });
+
+  unittest.group("obj-schema-PointDistribution", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPointDistribution();
+      var od = new api.PointDistribution.fromJson(o.toJson());
+      checkPointDistribution(od);
+    });
+  });
+
+  unittest.group("obj-schema-PointDistributionBucket", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPointDistributionBucket();
+      var od = new api.PointDistributionBucket.fromJson(o.toJson());
+      checkPointDistributionBucket(od);
+    });
+  });
+
+  unittest.group("obj-schema-PointDistributionOverflowBucket", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPointDistributionOverflowBucket();
+      var od = new api.PointDistributionOverflowBucket.fromJson(o.toJson());
+      checkPointDistributionOverflowBucket(od);
+    });
+  });
+
+  unittest.group("obj-schema-PointDistributionUnderflowBucket", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPointDistributionUnderflowBucket();
+      var od = new api.PointDistributionUnderflowBucket.fromJson(o.toJson());
+      checkPointDistributionUnderflowBucket(od);
+    });
+  });
+
+  unittest.group("obj-schema-Timeseries", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTimeseries();
+      var od = new api.Timeseries.fromJson(o.toJson());
+      checkTimeseries(od);
+    });
+  });
+
+  unittest.group("obj-schema-TimeseriesDescriptor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTimeseriesDescriptor();
+      var od = new api.TimeseriesDescriptor.fromJson(o.toJson());
+      checkTimeseriesDescriptor(od);
+    });
+  });
+
+  unittest.group("obj-schema-TimeseriesDescriptorLabel", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTimeseriesDescriptorLabel();
+      var od = new api.TimeseriesDescriptorLabel.fromJson(o.toJson());
+      checkTimeseriesDescriptorLabel(od);
+    });
+  });
+
+  unittest.group("obj-schema-TimeseriesPoint", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTimeseriesPoint();
+      var od = new api.TimeseriesPoint.fromJson(o.toJson());
+      checkTimeseriesPoint(od);
+    });
+  });
+
+  unittest.group("obj-schema-WriteTimeseriesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildWriteTimeseriesRequest();
+      var od = new api.WriteTimeseriesRequest.fromJson(o.toJson());
+      checkWriteTimeseriesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-WriteTimeseriesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildWriteTimeseriesResponse();
+      var od = new api.WriteTimeseriesResponse.fromJson(o.toJson());
+      checkWriteTimeseriesResponse(od);
+    });
+  });
+
+  unittest.group("resource-MetricDescriptorsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.MetricDescriptorsResourceApi res =
+          new api.CloudmonitoringApi(mock).metricDescriptors;
+      var arg_request = buildMetricDescriptor();
+      var arg_project = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.MetricDescriptor.fromJson(json);
+        checkMetricDescriptor(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildMetricDescriptor());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_project, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.MetricDescriptor response) {
+        checkMetricDescriptor(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.MetricDescriptorsResourceApi res =
+          new api.CloudmonitoringApi(mock).metricDescriptors;
+      var arg_project = "foo";
+      var arg_metric = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDeleteMetricDescriptorResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.delete(arg_project, arg_metric, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.DeleteMetricDescriptorResponse response) {
+        checkDeleteMetricDescriptorResponse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.MetricDescriptorsResourceApi res =
+          new api.CloudmonitoringApi(mock).metricDescriptors;
+      var arg_request = buildListMetricDescriptorsRequest();
+      var arg_project = "foo";
+      var arg_count = 42;
+      var arg_pageToken = "foo";
+      var arg_query = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ListMetricDescriptorsRequest.fromJson(json);
+        checkListMetricDescriptorsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["count"].first),
+            unittest.equals(arg_count));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["query"].first, unittest.equals(arg_query));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListMetricDescriptorsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_request, arg_project,
+              count: arg_count,
+              pageToken: arg_pageToken,
+              query: arg_query,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListMetricDescriptorsResponse response) {
+        checkListMetricDescriptorsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-TimeseriesResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.TimeseriesResourceApi res =
+          new api.CloudmonitoringApi(mock).timeseries;
+      var arg_request = buildListTimeseriesRequest();
+      var arg_project = "foo";
+      var arg_metric = "foo";
+      var arg_youngest = "foo";
+      var arg_aggregator = "foo";
+      var arg_count = 42;
+      var arg_labels = buildUnnamed3646();
+      var arg_oldest = "foo";
+      var arg_pageToken = "foo";
+      var arg_timespan = "foo";
+      var arg_window = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ListTimeseriesRequest.fromJson(json);
+        checkListTimeseriesRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["youngest"].first, unittest.equals(arg_youngest));
+        unittest.expect(
+            queryMap["aggregator"].first, unittest.equals(arg_aggregator));
+        unittest.expect(core.int.parse(queryMap["count"].first),
+            unittest.equals(arg_count));
+        unittest.expect(queryMap["labels"], unittest.equals(arg_labels));
+        unittest.expect(queryMap["oldest"].first, unittest.equals(arg_oldest));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["timespan"].first, unittest.equals(arg_timespan));
+        unittest.expect(queryMap["window"].first, unittest.equals(arg_window));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListTimeseriesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_request, arg_project, arg_metric, arg_youngest,
+              aggregator: arg_aggregator,
+              count: arg_count,
+              labels: arg_labels,
+              oldest: arg_oldest,
+              pageToken: arg_pageToken,
+              timespan: arg_timespan,
+              window: arg_window,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListTimeseriesResponse response) {
+        checkListTimeseriesResponse(response);
+      })));
+    });
+
+    unittest.test("method--write", () {
+      var mock = new HttpServerMock();
+      api.TimeseriesResourceApi res =
+          new api.CloudmonitoringApi(mock).timeseries;
+      var arg_request = buildWriteTimeseriesRequest();
+      var arg_project = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.WriteTimeseriesRequest.fromJson(json);
+        checkWriteTimeseriesRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildWriteTimeseriesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .write(arg_request, arg_project, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.WriteTimeseriesResponse response) {
+        checkWriteTimeseriesResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-TimeseriesDescriptorsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.TimeseriesDescriptorsResourceApi res =
+          new api.CloudmonitoringApi(mock).timeseriesDescriptors;
+      var arg_request = buildListTimeseriesDescriptorsRequest();
+      var arg_project = "foo";
+      var arg_metric = "foo";
+      var arg_youngest = "foo";
+      var arg_aggregator = "foo";
+      var arg_count = 42;
+      var arg_labels = buildUnnamed3647();
+      var arg_oldest = "foo";
+      var arg_pageToken = "foo";
+      var arg_timespan = "foo";
+      var arg_window = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ListTimeseriesDescriptorsRequest.fromJson(json);
+        checkListTimeseriesDescriptorsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["youngest"].first, unittest.equals(arg_youngest));
+        unittest.expect(
+            queryMap["aggregator"].first, unittest.equals(arg_aggregator));
+        unittest.expect(core.int.parse(queryMap["count"].first),
+            unittest.equals(arg_count));
+        unittest.expect(queryMap["labels"], unittest.equals(arg_labels));
+        unittest.expect(queryMap["oldest"].first, unittest.equals(arg_oldest));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(
+            queryMap["timespan"].first, unittest.equals(arg_timespan));
+        unittest.expect(queryMap["window"].first, unittest.equals(arg_window));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp =
+            convert.JSON.encode(buildListTimeseriesDescriptorsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_request, arg_project, arg_metric, arg_youngest,
+              aggregator: arg_aggregator,
+              count: arg_count,
+              labels: arg_labels,
+              oldest: arg_oldest,
+              pageToken: arg_pageToken,
+              timespan: arg_timespan,
+              window: arg_window,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListTimeseriesDescriptorsResponse response) {
+        checkListTimeseriesDescriptorsResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis_beta/test/cloudresourcemanager/v1beta1_test.dart b/generated/googleapis_beta/test/cloudresourcemanager/v1beta1_test.dart
index 05cac02..669a01d 100644
--- a/generated/googleapis_beta/test/cloudresourcemanager/v1beta1_test.dart
+++ b/generated/googleapis_beta/test/cloudresourcemanager/v1beta1_test.dart
@@ -69,14 +69,14 @@
   buildCounterAncestor--;
 }
 
-buildUnnamed3608() {
+buildUnnamed3626() {
   var o = new core.List<api.AuditLogConfig>();
   o.add(buildAuditLogConfig());
   o.add(buildAuditLogConfig());
   return o;
 }
 
-checkUnnamed3608(core.List<api.AuditLogConfig> o) {
+checkUnnamed3626(core.List<api.AuditLogConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditLogConfig(o[0]);
   checkAuditLogConfig(o[1]);
@@ -87,7 +87,7 @@
   var o = new api.AuditConfig();
   buildCounterAuditConfig++;
   if (buildCounterAuditConfig < 3) {
-    o.auditLogConfigs = buildUnnamed3608();
+    o.auditLogConfigs = buildUnnamed3626();
     o.service = "foo";
   }
   buildCounterAuditConfig--;
@@ -97,20 +97,20 @@
 checkAuditConfig(api.AuditConfig o) {
   buildCounterAuditConfig++;
   if (buildCounterAuditConfig < 3) {
-    checkUnnamed3608(o.auditLogConfigs);
+    checkUnnamed3626(o.auditLogConfigs);
     unittest.expect(o.service, unittest.equals('foo'));
   }
   buildCounterAuditConfig--;
 }
 
-buildUnnamed3609() {
+buildUnnamed3627() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3609(core.List<core.String> o) {
+checkUnnamed3627(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -121,7 +121,7 @@
   var o = new api.AuditLogConfig();
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    o.exemptedMembers = buildUnnamed3609();
+    o.exemptedMembers = buildUnnamed3627();
     o.logType = "foo";
   }
   buildCounterAuditLogConfig--;
@@ -131,20 +131,20 @@
 checkAuditLogConfig(api.AuditLogConfig o) {
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    checkUnnamed3609(o.exemptedMembers);
+    checkUnnamed3627(o.exemptedMembers);
     unittest.expect(o.logType, unittest.equals('foo'));
   }
   buildCounterAuditLogConfig--;
 }
 
-buildUnnamed3610() {
+buildUnnamed3628() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3610(core.List<core.String> o) {
+checkUnnamed3628(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -155,7 +155,7 @@
   var o = new api.Binding();
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    o.members = buildUnnamed3610();
+    o.members = buildUnnamed3628();
     o.role = "foo";
   }
   buildCounterBinding--;
@@ -165,7 +165,7 @@
 checkBinding(api.Binding o) {
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    checkUnnamed3610(o.members);
+    checkUnnamed3628(o.members);
     unittest.expect(o.role, unittest.equals('foo'));
   }
   buildCounterBinding--;
@@ -245,14 +245,14 @@
   buildCounterGetAncestryRequest--;
 }
 
-buildUnnamed3611() {
+buildUnnamed3629() {
   var o = new core.List<api.Ancestor>();
   o.add(buildAncestor());
   o.add(buildAncestor());
   return o;
 }
 
-checkUnnamed3611(core.List<api.Ancestor> o) {
+checkUnnamed3629(core.List<api.Ancestor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAncestor(o[0]);
   checkAncestor(o[1]);
@@ -263,7 +263,7 @@
   var o = new api.GetAncestryResponse();
   buildCounterGetAncestryResponse++;
   if (buildCounterGetAncestryResponse < 3) {
-    o.ancestor = buildUnnamed3611();
+    o.ancestor = buildUnnamed3629();
   }
   buildCounterGetAncestryResponse--;
   return o;
@@ -272,7 +272,7 @@
 checkGetAncestryResponse(api.GetAncestryResponse o) {
   buildCounterGetAncestryResponse++;
   if (buildCounterGetAncestryResponse < 3) {
-    checkUnnamed3611(o.ancestor);
+    checkUnnamed3629(o.ancestor);
   }
   buildCounterGetAncestryResponse--;
 }
@@ -292,14 +292,14 @@
   buildCounterGetIamPolicyRequest--;
 }
 
-buildUnnamed3612() {
+buildUnnamed3630() {
   var o = new core.List<api.Organization>();
   o.add(buildOrganization());
   o.add(buildOrganization());
   return o;
 }
 
-checkUnnamed3612(core.List<api.Organization> o) {
+checkUnnamed3630(core.List<api.Organization> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOrganization(o[0]);
   checkOrganization(o[1]);
@@ -311,7 +311,7 @@
   buildCounterListOrganizationsResponse++;
   if (buildCounterListOrganizationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.organizations = buildUnnamed3612();
+    o.organizations = buildUnnamed3630();
   }
   buildCounterListOrganizationsResponse--;
   return o;
@@ -321,19 +321,19 @@
   buildCounterListOrganizationsResponse++;
   if (buildCounterListOrganizationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3612(o.organizations);
+    checkUnnamed3630(o.organizations);
   }
   buildCounterListOrganizationsResponse--;
 }
 
-buildUnnamed3613() {
+buildUnnamed3631() {
   var o = new core.List<api.Project>();
   o.add(buildProject());
   o.add(buildProject());
   return o;
 }
 
-checkUnnamed3613(core.List<api.Project> o) {
+checkUnnamed3631(core.List<api.Project> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProject(o[0]);
   checkProject(o[1]);
@@ -345,7 +345,7 @@
   buildCounterListProjectsResponse++;
   if (buildCounterListProjectsResponse < 3) {
     o.nextPageToken = "foo";
-    o.projects = buildUnnamed3613();
+    o.projects = buildUnnamed3631();
   }
   buildCounterListProjectsResponse--;
   return o;
@@ -355,7 +355,7 @@
   buildCounterListProjectsResponse++;
   if (buildCounterListProjectsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3613(o.projects);
+    checkUnnamed3631(o.projects);
   }
   buildCounterListProjectsResponse--;
 }
@@ -408,27 +408,27 @@
   buildCounterOrganizationOwner--;
 }
 
-buildUnnamed3614() {
+buildUnnamed3632() {
   var o = new core.List<api.AuditConfig>();
   o.add(buildAuditConfig());
   o.add(buildAuditConfig());
   return o;
 }
 
-checkUnnamed3614(core.List<api.AuditConfig> o) {
+checkUnnamed3632(core.List<api.AuditConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditConfig(o[0]);
   checkAuditConfig(o[1]);
 }
 
-buildUnnamed3615() {
+buildUnnamed3633() {
   var o = new core.List<api.Binding>();
   o.add(buildBinding());
   o.add(buildBinding());
   return o;
 }
 
-checkUnnamed3615(core.List<api.Binding> o) {
+checkUnnamed3633(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -439,8 +439,8 @@
   var o = new api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.auditConfigs = buildUnnamed3614();
-    o.bindings = buildUnnamed3615();
+    o.auditConfigs = buildUnnamed3632();
+    o.bindings = buildUnnamed3633();
     o.etag = "foo";
     o.version = 42;
   }
@@ -451,22 +451,22 @@
 checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed3614(o.auditConfigs);
-    checkUnnamed3615(o.bindings);
+    checkUnnamed3632(o.auditConfigs);
+    checkUnnamed3633(o.bindings);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.version, unittest.equals(42));
   }
   buildCounterPolicy--;
 }
 
-buildUnnamed3616() {
+buildUnnamed3634() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3616(core.Map<core.String, core.String> o) {
+checkUnnamed3634(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -478,7 +478,7 @@
   buildCounterProject++;
   if (buildCounterProject < 3) {
     o.createTime = "foo";
-    o.labels = buildUnnamed3616();
+    o.labels = buildUnnamed3634();
     o.lifecycleState = "foo";
     o.name = "foo";
     o.parent = buildResourceId();
@@ -493,7 +493,7 @@
   buildCounterProject++;
   if (buildCounterProject < 3) {
     unittest.expect(o.createTime, unittest.equals('foo'));
-    checkUnnamed3616(o.labels);
+    checkUnnamed3634(o.labels);
     unittest.expect(o.lifecycleState, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     checkResourceId(o.parent);
@@ -568,14 +568,14 @@
   buildCounterSetIamPolicyRequest--;
 }
 
-buildUnnamed3617() {
+buildUnnamed3635() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3617(core.List<core.String> o) {
+checkUnnamed3635(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -586,7 +586,7 @@
   var o = new api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed3617();
+    o.permissions = buildUnnamed3635();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -595,19 +595,19 @@
 checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed3617(o.permissions);
+    checkUnnamed3635(o.permissions);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-buildUnnamed3618() {
+buildUnnamed3636() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3618(core.List<core.String> o) {
+checkUnnamed3636(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -618,7 +618,7 @@
   var o = new api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed3618();
+    o.permissions = buildUnnamed3636();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -627,7 +627,7 @@
 checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed3618(o.permissions);
+    checkUnnamed3636(o.permissions);
   }
   buildCounterTestIamPermissionsResponse--;
 }
@@ -831,6 +831,7 @@
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_name = "foo";
       var arg_organizationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -864,6 +865,7 @@
         }
         unittest.expect(queryMap["organizationId"].first,
             unittest.equals(arg_organizationId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -872,7 +874,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name, organizationId: arg_organizationId)
+          .get(arg_name,
+              organizationId: arg_organizationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Organization response) {
         checkOrganization(response);
       })));
@@ -884,6 +887,7 @@
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_request = buildGetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetIamPolicyRequest.fromJson(json);
         checkGetIamPolicyRequest(obj);
@@ -918,6 +922,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -926,7 +931,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_request, arg_resource)
+          .getIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -936,9 +941,10 @@
       var mock = new HttpServerMock();
       api.OrganizationsResourceApi res =
           new api.CloudresourcemanagerApi(mock).organizations;
+      var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_filter = "foo";
-      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -969,11 +975,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -983,9 +990,10 @@
       }), true);
       res
           .list(
+              pageToken: arg_pageToken,
               pageSize: arg_pageSize,
               filter: arg_filter,
-              pageToken: arg_pageToken)
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.ListOrganizationsResponse response) {
         checkListOrganizationsResponse(response);
@@ -998,6 +1006,7 @@
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -1032,6 +1041,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1040,7 +1050,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1052,6 +1062,7 @@
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -1086,6 +1097,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1093,8 +1105,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -1105,6 +1119,7 @@
           new api.CloudresourcemanagerApi(mock).organizations;
       var arg_request = buildOrganization();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Organization.fromJson(json);
         checkOrganization(obj);
@@ -1139,6 +1154,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1147,7 +1163,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_name)
+          .update(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Organization response) {
         checkOrganization(response);
       })));
@@ -1161,6 +1177,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildProject();
       var arg_useLegacyStack = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Project.fromJson(json);
         checkProject(obj);
@@ -1196,6 +1213,7 @@
         }
         unittest.expect(queryMap["useLegacyStack"].first,
             unittest.equals("$arg_useLegacyStack"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1204,7 +1222,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, useLegacyStack: arg_useLegacyStack)
+          .create(arg_request,
+              useLegacyStack: arg_useLegacyStack, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Project response) {
         checkProject(response);
       })));
@@ -1215,6 +1234,7 @@
       api.ProjectsResourceApi res =
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1248,6 +1268,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1256,7 +1277,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_projectId)
+          .delete(arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1267,6 +1288,7 @@
       api.ProjectsResourceApi res =
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1300,6 +1322,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1308,7 +1331,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_projectId)
+          .get(arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Project response) {
         checkProject(response);
       })));
@@ -1320,6 +1343,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildGetAncestryRequest();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetAncestryRequest.fromJson(json);
         checkGetAncestryRequest(obj);
@@ -1362,6 +1386,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1370,7 +1395,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getAncestry(arg_request, arg_projectId)
+          .getAncestry(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GetAncestryResponse response) {
         checkGetAncestryResponse(response);
       })));
@@ -1382,6 +1407,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildGetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetIamPolicyRequest.fromJson(json);
         checkGetIamPolicyRequest(obj);
@@ -1424,6 +1450,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1432,7 +1459,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_request, arg_resource)
+          .getIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1445,6 +1472,7 @@
       var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1480,6 +1508,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1491,7 +1520,8 @@
           .list(
               filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListProjectsResponse response) {
         checkListProjectsResponse(response);
       })));
@@ -1503,6 +1533,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -1545,6 +1576,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1553,7 +1585,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1565,6 +1597,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -1607,6 +1640,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1614,8 +1648,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -1626,6 +1662,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildUndeleteProjectRequest();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.UndeleteProjectRequest.fromJson(json);
         checkUndeleteProjectRequest(obj);
@@ -1668,6 +1705,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1676,7 +1714,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .undelete(arg_request, arg_projectId)
+          .undelete(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1688,6 +1726,7 @@
           new api.CloudresourcemanagerApi(mock).projects;
       var arg_request = buildProject();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Project.fromJson(json);
         checkProject(obj);
@@ -1724,6 +1763,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1732,7 +1772,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_projectId)
+          .update(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Project response) {
         checkProject(response);
       })));
diff --git a/generated/googleapis_beta/test/cloudtasks/v2beta2_test.dart b/generated/googleapis_beta/test/cloudtasks/v2beta2_test.dart
new file mode 100644
index 0000000..d8129d0
--- /dev/null
+++ b/generated/googleapis_beta/test/cloudtasks/v2beta2_test.dart
@@ -0,0 +1,2613 @@
+library googleapis_beta.cloudtasks.v2beta2.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis_beta/cloudtasks/v2beta2.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAcknowledgeTaskRequest = 0;
+buildAcknowledgeTaskRequest() {
+  var o = new api.AcknowledgeTaskRequest();
+  buildCounterAcknowledgeTaskRequest++;
+  if (buildCounterAcknowledgeTaskRequest < 3) {
+    o.scheduleTime = "foo";
+  }
+  buildCounterAcknowledgeTaskRequest--;
+  return o;
+}
+
+checkAcknowledgeTaskRequest(api.AcknowledgeTaskRequest o) {
+  buildCounterAcknowledgeTaskRequest++;
+  if (buildCounterAcknowledgeTaskRequest < 3) {
+    unittest.expect(o.scheduleTime, unittest.equals('foo'));
+  }
+  buildCounterAcknowledgeTaskRequest--;
+}
+
+buildUnnamed3454() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed3454(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterAppEngineHttpRequest = 0;
+buildAppEngineHttpRequest() {
+  var o = new api.AppEngineHttpRequest();
+  buildCounterAppEngineHttpRequest++;
+  if (buildCounterAppEngineHttpRequest < 3) {
+    o.appEngineRouting = buildAppEngineRouting();
+    o.headers = buildUnnamed3454();
+    o.httpMethod = "foo";
+    o.payload = "foo";
+    o.relativeUrl = "foo";
+  }
+  buildCounterAppEngineHttpRequest--;
+  return o;
+}
+
+checkAppEngineHttpRequest(api.AppEngineHttpRequest o) {
+  buildCounterAppEngineHttpRequest++;
+  if (buildCounterAppEngineHttpRequest < 3) {
+    checkAppEngineRouting(o.appEngineRouting);
+    checkUnnamed3454(o.headers);
+    unittest.expect(o.httpMethod, unittest.equals('foo'));
+    unittest.expect(o.payload, unittest.equals('foo'));
+    unittest.expect(o.relativeUrl, unittest.equals('foo'));
+  }
+  buildCounterAppEngineHttpRequest--;
+}
+
+core.int buildCounterAppEngineHttpTarget = 0;
+buildAppEngineHttpTarget() {
+  var o = new api.AppEngineHttpTarget();
+  buildCounterAppEngineHttpTarget++;
+  if (buildCounterAppEngineHttpTarget < 3) {
+    o.appEngineRoutingOverride = buildAppEngineRouting();
+  }
+  buildCounterAppEngineHttpTarget--;
+  return o;
+}
+
+checkAppEngineHttpTarget(api.AppEngineHttpTarget o) {
+  buildCounterAppEngineHttpTarget++;
+  if (buildCounterAppEngineHttpTarget < 3) {
+    checkAppEngineRouting(o.appEngineRoutingOverride);
+  }
+  buildCounterAppEngineHttpTarget--;
+}
+
+core.int buildCounterAppEngineQueueConfig = 0;
+buildAppEngineQueueConfig() {
+  var o = new api.AppEngineQueueConfig();
+  buildCounterAppEngineQueueConfig++;
+  if (buildCounterAppEngineQueueConfig < 3) {
+    o.appEngineRoutingOverride = buildAppEngineRouting();
+  }
+  buildCounterAppEngineQueueConfig--;
+  return o;
+}
+
+checkAppEngineQueueConfig(api.AppEngineQueueConfig o) {
+  buildCounterAppEngineQueueConfig++;
+  if (buildCounterAppEngineQueueConfig < 3) {
+    checkAppEngineRouting(o.appEngineRoutingOverride);
+  }
+  buildCounterAppEngineQueueConfig--;
+}
+
+core.int buildCounterAppEngineRouting = 0;
+buildAppEngineRouting() {
+  var o = new api.AppEngineRouting();
+  buildCounterAppEngineRouting++;
+  if (buildCounterAppEngineRouting < 3) {
+    o.host = "foo";
+    o.instance = "foo";
+    o.service = "foo";
+    o.version = "foo";
+  }
+  buildCounterAppEngineRouting--;
+  return o;
+}
+
+checkAppEngineRouting(api.AppEngineRouting o) {
+  buildCounterAppEngineRouting++;
+  if (buildCounterAppEngineRouting < 3) {
+    unittest.expect(o.host, unittest.equals('foo'));
+    unittest.expect(o.instance, unittest.equals('foo'));
+    unittest.expect(o.service, unittest.equals('foo'));
+    unittest.expect(o.version, unittest.equals('foo'));
+  }
+  buildCounterAppEngineRouting--;
+}
+
+buildUnnamed3455() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed3455(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterAppEngineTaskTarget = 0;
+buildAppEngineTaskTarget() {
+  var o = new api.AppEngineTaskTarget();
+  buildCounterAppEngineTaskTarget++;
+  if (buildCounterAppEngineTaskTarget < 3) {
+    o.appEngineRouting = buildAppEngineRouting();
+    o.headers = buildUnnamed3455();
+    o.httpMethod = "foo";
+    o.payload = "foo";
+    o.relativeUrl = "foo";
+  }
+  buildCounterAppEngineTaskTarget--;
+  return o;
+}
+
+checkAppEngineTaskTarget(api.AppEngineTaskTarget o) {
+  buildCounterAppEngineTaskTarget++;
+  if (buildCounterAppEngineTaskTarget < 3) {
+    checkAppEngineRouting(o.appEngineRouting);
+    checkUnnamed3455(o.headers);
+    unittest.expect(o.httpMethod, unittest.equals('foo'));
+    unittest.expect(o.payload, unittest.equals('foo'));
+    unittest.expect(o.relativeUrl, unittest.equals('foo'));
+  }
+  buildCounterAppEngineTaskTarget--;
+}
+
+core.int buildCounterAttemptStatus = 0;
+buildAttemptStatus() {
+  var o = new api.AttemptStatus();
+  buildCounterAttemptStatus++;
+  if (buildCounterAttemptStatus < 3) {
+    o.dispatchTime = "foo";
+    o.responseStatus = buildStatus();
+    o.responseTime = "foo";
+    o.scheduleTime = "foo";
+  }
+  buildCounterAttemptStatus--;
+  return o;
+}
+
+checkAttemptStatus(api.AttemptStatus o) {
+  buildCounterAttemptStatus++;
+  if (buildCounterAttemptStatus < 3) {
+    unittest.expect(o.dispatchTime, unittest.equals('foo'));
+    checkStatus(o.responseStatus);
+    unittest.expect(o.responseTime, unittest.equals('foo'));
+    unittest.expect(o.scheduleTime, unittest.equals('foo'));
+  }
+  buildCounterAttemptStatus--;
+}
+
+buildUnnamed3456() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3456(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBinding = 0;
+buildBinding() {
+  var o = new api.Binding();
+  buildCounterBinding++;
+  if (buildCounterBinding < 3) {
+    o.members = buildUnnamed3456();
+    o.role = "foo";
+  }
+  buildCounterBinding--;
+  return o;
+}
+
+checkBinding(api.Binding o) {
+  buildCounterBinding++;
+  if (buildCounterBinding < 3) {
+    checkUnnamed3456(o.members);
+    unittest.expect(o.role, unittest.equals('foo'));
+  }
+  buildCounterBinding--;
+}
+
+core.int buildCounterCancelLeaseRequest = 0;
+buildCancelLeaseRequest() {
+  var o = new api.CancelLeaseRequest();
+  buildCounterCancelLeaseRequest++;
+  if (buildCounterCancelLeaseRequest < 3) {
+    o.responseView = "foo";
+    o.scheduleTime = "foo";
+  }
+  buildCounterCancelLeaseRequest--;
+  return o;
+}
+
+checkCancelLeaseRequest(api.CancelLeaseRequest o) {
+  buildCounterCancelLeaseRequest++;
+  if (buildCounterCancelLeaseRequest < 3) {
+    unittest.expect(o.responseView, unittest.equals('foo'));
+    unittest.expect(o.scheduleTime, unittest.equals('foo'));
+  }
+  buildCounterCancelLeaseRequest--;
+}
+
+core.int buildCounterCreateTaskRequest = 0;
+buildCreateTaskRequest() {
+  var o = new api.CreateTaskRequest();
+  buildCounterCreateTaskRequest++;
+  if (buildCounterCreateTaskRequest < 3) {
+    o.responseView = "foo";
+    o.task = buildTask();
+  }
+  buildCounterCreateTaskRequest--;
+  return o;
+}
+
+checkCreateTaskRequest(api.CreateTaskRequest o) {
+  buildCounterCreateTaskRequest++;
+  if (buildCounterCreateTaskRequest < 3) {
+    unittest.expect(o.responseView, unittest.equals('foo'));
+    checkTask(o.task);
+  }
+  buildCounterCreateTaskRequest--;
+}
+
+core.int buildCounterEmpty = 0;
+buildEmpty() {
+  var o = new api.Empty();
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+  return o;
+}
+
+checkEmpty(api.Empty o) {
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+}
+
+core.int buildCounterGetIamPolicyRequest = 0;
+buildGetIamPolicyRequest() {
+  var o = new api.GetIamPolicyRequest();
+  buildCounterGetIamPolicyRequest++;
+  if (buildCounterGetIamPolicyRequest < 3) {}
+  buildCounterGetIamPolicyRequest--;
+  return o;
+}
+
+checkGetIamPolicyRequest(api.GetIamPolicyRequest o) {
+  buildCounterGetIamPolicyRequest++;
+  if (buildCounterGetIamPolicyRequest < 3) {}
+  buildCounterGetIamPolicyRequest--;
+}
+
+buildUnnamed3457() {
+  var o = new core.List<api.Location>();
+  o.add(buildLocation());
+  o.add(buildLocation());
+  return o;
+}
+
+checkUnnamed3457(core.List<api.Location> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLocation(o[0]);
+  checkLocation(o[1]);
+}
+
+core.int buildCounterListLocationsResponse = 0;
+buildListLocationsResponse() {
+  var o = new api.ListLocationsResponse();
+  buildCounterListLocationsResponse++;
+  if (buildCounterListLocationsResponse < 3) {
+    o.locations = buildUnnamed3457();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListLocationsResponse--;
+  return o;
+}
+
+checkListLocationsResponse(api.ListLocationsResponse o) {
+  buildCounterListLocationsResponse++;
+  if (buildCounterListLocationsResponse < 3) {
+    checkUnnamed3457(o.locations);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListLocationsResponse--;
+}
+
+buildUnnamed3458() {
+  var o = new core.List<api.Queue>();
+  o.add(buildQueue());
+  o.add(buildQueue());
+  return o;
+}
+
+checkUnnamed3458(core.List<api.Queue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkQueue(o[0]);
+  checkQueue(o[1]);
+}
+
+core.int buildCounterListQueuesResponse = 0;
+buildListQueuesResponse() {
+  var o = new api.ListQueuesResponse();
+  buildCounterListQueuesResponse++;
+  if (buildCounterListQueuesResponse < 3) {
+    o.nextPageToken = "foo";
+    o.queues = buildUnnamed3458();
+  }
+  buildCounterListQueuesResponse--;
+  return o;
+}
+
+checkListQueuesResponse(api.ListQueuesResponse o) {
+  buildCounterListQueuesResponse++;
+  if (buildCounterListQueuesResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3458(o.queues);
+  }
+  buildCounterListQueuesResponse--;
+}
+
+buildUnnamed3459() {
+  var o = new core.List<api.Task>();
+  o.add(buildTask());
+  o.add(buildTask());
+  return o;
+}
+
+checkUnnamed3459(core.List<api.Task> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTask(o[0]);
+  checkTask(o[1]);
+}
+
+core.int buildCounterListTasksResponse = 0;
+buildListTasksResponse() {
+  var o = new api.ListTasksResponse();
+  buildCounterListTasksResponse++;
+  if (buildCounterListTasksResponse < 3) {
+    o.nextPageToken = "foo";
+    o.tasks = buildUnnamed3459();
+  }
+  buildCounterListTasksResponse--;
+  return o;
+}
+
+checkListTasksResponse(api.ListTasksResponse o) {
+  buildCounterListTasksResponse++;
+  if (buildCounterListTasksResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3459(o.tasks);
+  }
+  buildCounterListTasksResponse--;
+}
+
+buildUnnamed3460() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed3460(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+buildUnnamed3461() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed3461(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o["x"]) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(casted1["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted1["bool"], unittest.equals(true));
+  unittest.expect(casted1["string"], unittest.equals('foo'));
+  var casted2 = (o["y"]) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(casted2["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted2["bool"], unittest.equals(true));
+  unittest.expect(casted2["string"], unittest.equals('foo'));
+}
+
+core.int buildCounterLocation = 0;
+buildLocation() {
+  var o = new api.Location();
+  buildCounterLocation++;
+  if (buildCounterLocation < 3) {
+    o.labels = buildUnnamed3460();
+    o.locationId = "foo";
+    o.metadata = buildUnnamed3461();
+    o.name = "foo";
+  }
+  buildCounterLocation--;
+  return o;
+}
+
+checkLocation(api.Location o) {
+  buildCounterLocation++;
+  if (buildCounterLocation < 3) {
+    checkUnnamed3460(o.labels);
+    unittest.expect(o.locationId, unittest.equals('foo'));
+    checkUnnamed3461(o.metadata);
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterLocation--;
+}
+
+core.int buildCounterPauseQueueRequest = 0;
+buildPauseQueueRequest() {
+  var o = new api.PauseQueueRequest();
+  buildCounterPauseQueueRequest++;
+  if (buildCounterPauseQueueRequest < 3) {}
+  buildCounterPauseQueueRequest--;
+  return o;
+}
+
+checkPauseQueueRequest(api.PauseQueueRequest o) {
+  buildCounterPauseQueueRequest++;
+  if (buildCounterPauseQueueRequest < 3) {}
+  buildCounterPauseQueueRequest--;
+}
+
+buildUnnamed3462() {
+  var o = new core.List<api.Binding>();
+  o.add(buildBinding());
+  o.add(buildBinding());
+  return o;
+}
+
+checkUnnamed3462(core.List<api.Binding> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBinding(o[0]);
+  checkBinding(o[1]);
+}
+
+core.int buildCounterPolicy = 0;
+buildPolicy() {
+  var o = new api.Policy();
+  buildCounterPolicy++;
+  if (buildCounterPolicy < 3) {
+    o.bindings = buildUnnamed3462();
+    o.etag = "foo";
+    o.version = 42;
+  }
+  buildCounterPolicy--;
+  return o;
+}
+
+checkPolicy(api.Policy o) {
+  buildCounterPolicy++;
+  if (buildCounterPolicy < 3) {
+    checkUnnamed3462(o.bindings);
+    unittest.expect(o.etag, unittest.equals('foo'));
+    unittest.expect(o.version, unittest.equals(42));
+  }
+  buildCounterPolicy--;
+}
+
+core.int buildCounterPullMessage = 0;
+buildPullMessage() {
+  var o = new api.PullMessage();
+  buildCounterPullMessage++;
+  if (buildCounterPullMessage < 3) {
+    o.payload = "foo";
+    o.tag = "foo";
+  }
+  buildCounterPullMessage--;
+  return o;
+}
+
+checkPullMessage(api.PullMessage o) {
+  buildCounterPullMessage++;
+  if (buildCounterPullMessage < 3) {
+    unittest.expect(o.payload, unittest.equals('foo'));
+    unittest.expect(o.tag, unittest.equals('foo'));
+  }
+  buildCounterPullMessage--;
+}
+
+core.int buildCounterPullQueueConfig = 0;
+buildPullQueueConfig() {
+  var o = new api.PullQueueConfig();
+  buildCounterPullQueueConfig++;
+  if (buildCounterPullQueueConfig < 3) {}
+  buildCounterPullQueueConfig--;
+  return o;
+}
+
+checkPullQueueConfig(api.PullQueueConfig o) {
+  buildCounterPullQueueConfig++;
+  if (buildCounterPullQueueConfig < 3) {}
+  buildCounterPullQueueConfig--;
+}
+
+core.int buildCounterPullTarget = 0;
+buildPullTarget() {
+  var o = new api.PullTarget();
+  buildCounterPullTarget++;
+  if (buildCounterPullTarget < 3) {}
+  buildCounterPullTarget--;
+  return o;
+}
+
+checkPullTarget(api.PullTarget o) {
+  buildCounterPullTarget++;
+  if (buildCounterPullTarget < 3) {}
+  buildCounterPullTarget--;
+}
+
+core.int buildCounterPullTaskTarget = 0;
+buildPullTaskTarget() {
+  var o = new api.PullTaskTarget();
+  buildCounterPullTaskTarget++;
+  if (buildCounterPullTaskTarget < 3) {
+    o.payload = "foo";
+    o.tag = "foo";
+  }
+  buildCounterPullTaskTarget--;
+  return o;
+}
+
+checkPullTaskTarget(api.PullTaskTarget o) {
+  buildCounterPullTaskTarget++;
+  if (buildCounterPullTaskTarget < 3) {
+    unittest.expect(o.payload, unittest.equals('foo'));
+    unittest.expect(o.tag, unittest.equals('foo'));
+  }
+  buildCounterPullTaskTarget--;
+}
+
+core.int buildCounterPullTasksRequest = 0;
+buildPullTasksRequest() {
+  var o = new api.PullTasksRequest();
+  buildCounterPullTasksRequest++;
+  if (buildCounterPullTasksRequest < 3) {
+    o.filter = "foo";
+    o.leaseDuration = "foo";
+    o.maxTasks = 42;
+    o.responseView = "foo";
+  }
+  buildCounterPullTasksRequest--;
+  return o;
+}
+
+checkPullTasksRequest(api.PullTasksRequest o) {
+  buildCounterPullTasksRequest++;
+  if (buildCounterPullTasksRequest < 3) {
+    unittest.expect(o.filter, unittest.equals('foo'));
+    unittest.expect(o.leaseDuration, unittest.equals('foo'));
+    unittest.expect(o.maxTasks, unittest.equals(42));
+    unittest.expect(o.responseView, unittest.equals('foo'));
+  }
+  buildCounterPullTasksRequest--;
+}
+
+buildUnnamed3463() {
+  var o = new core.List<api.Task>();
+  o.add(buildTask());
+  o.add(buildTask());
+  return o;
+}
+
+checkUnnamed3463(core.List<api.Task> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTask(o[0]);
+  checkTask(o[1]);
+}
+
+core.int buildCounterPullTasksResponse = 0;
+buildPullTasksResponse() {
+  var o = new api.PullTasksResponse();
+  buildCounterPullTasksResponse++;
+  if (buildCounterPullTasksResponse < 3) {
+    o.tasks = buildUnnamed3463();
+  }
+  buildCounterPullTasksResponse--;
+  return o;
+}
+
+checkPullTasksResponse(api.PullTasksResponse o) {
+  buildCounterPullTasksResponse++;
+  if (buildCounterPullTasksResponse < 3) {
+    checkUnnamed3463(o.tasks);
+  }
+  buildCounterPullTasksResponse--;
+}
+
+core.int buildCounterPurgeQueueRequest = 0;
+buildPurgeQueueRequest() {
+  var o = new api.PurgeQueueRequest();
+  buildCounterPurgeQueueRequest++;
+  if (buildCounterPurgeQueueRequest < 3) {}
+  buildCounterPurgeQueueRequest--;
+  return o;
+}
+
+checkPurgeQueueRequest(api.PurgeQueueRequest o) {
+  buildCounterPurgeQueueRequest++;
+  if (buildCounterPurgeQueueRequest < 3) {}
+  buildCounterPurgeQueueRequest--;
+}
+
+core.int buildCounterQueue = 0;
+buildQueue() {
+  var o = new api.Queue();
+  buildCounterQueue++;
+  if (buildCounterQueue < 3) {
+    o.appEngineHttpTarget = buildAppEngineHttpTarget();
+    o.appEngineQueueConfig = buildAppEngineQueueConfig();
+    o.name = "foo";
+    o.pullQueueConfig = buildPullQueueConfig();
+    o.pullTarget = buildPullTarget();
+    o.purgeTime = "foo";
+    o.queueState = "foo";
+    o.rateLimits = buildRateLimits();
+    o.retryConfig = buildRetryConfig();
+  }
+  buildCounterQueue--;
+  return o;
+}
+
+checkQueue(api.Queue o) {
+  buildCounterQueue++;
+  if (buildCounterQueue < 3) {
+    checkAppEngineHttpTarget(o.appEngineHttpTarget);
+    checkAppEngineQueueConfig(o.appEngineQueueConfig);
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkPullQueueConfig(o.pullQueueConfig);
+    checkPullTarget(o.pullTarget);
+    unittest.expect(o.purgeTime, unittest.equals('foo'));
+    unittest.expect(o.queueState, unittest.equals('foo'));
+    checkRateLimits(o.rateLimits);
+    checkRetryConfig(o.retryConfig);
+  }
+  buildCounterQueue--;
+}
+
+core.int buildCounterRateLimits = 0;
+buildRateLimits() {
+  var o = new api.RateLimits();
+  buildCounterRateLimits++;
+  if (buildCounterRateLimits < 3) {
+    o.maxBurstSize = 42;
+    o.maxConcurrentTasks = 42;
+    o.maxTasksDispatchedPerSecond = 42.0;
+  }
+  buildCounterRateLimits--;
+  return o;
+}
+
+checkRateLimits(api.RateLimits o) {
+  buildCounterRateLimits++;
+  if (buildCounterRateLimits < 3) {
+    unittest.expect(o.maxBurstSize, unittest.equals(42));
+    unittest.expect(o.maxConcurrentTasks, unittest.equals(42));
+    unittest.expect(o.maxTasksDispatchedPerSecond, unittest.equals(42.0));
+  }
+  buildCounterRateLimits--;
+}
+
+core.int buildCounterRenewLeaseRequest = 0;
+buildRenewLeaseRequest() {
+  var o = new api.RenewLeaseRequest();
+  buildCounterRenewLeaseRequest++;
+  if (buildCounterRenewLeaseRequest < 3) {
+    o.newLeaseDuration = "foo";
+    o.responseView = "foo";
+    o.scheduleTime = "foo";
+  }
+  buildCounterRenewLeaseRequest--;
+  return o;
+}
+
+checkRenewLeaseRequest(api.RenewLeaseRequest o) {
+  buildCounterRenewLeaseRequest++;
+  if (buildCounterRenewLeaseRequest < 3) {
+    unittest.expect(o.newLeaseDuration, unittest.equals('foo'));
+    unittest.expect(o.responseView, unittest.equals('foo'));
+    unittest.expect(o.scheduleTime, unittest.equals('foo'));
+  }
+  buildCounterRenewLeaseRequest--;
+}
+
+core.int buildCounterResumeQueueRequest = 0;
+buildResumeQueueRequest() {
+  var o = new api.ResumeQueueRequest();
+  buildCounterResumeQueueRequest++;
+  if (buildCounterResumeQueueRequest < 3) {}
+  buildCounterResumeQueueRequest--;
+  return o;
+}
+
+checkResumeQueueRequest(api.ResumeQueueRequest o) {
+  buildCounterResumeQueueRequest++;
+  if (buildCounterResumeQueueRequest < 3) {}
+  buildCounterResumeQueueRequest--;
+}
+
+core.int buildCounterRetryConfig = 0;
+buildRetryConfig() {
+  var o = new api.RetryConfig();
+  buildCounterRetryConfig++;
+  if (buildCounterRetryConfig < 3) {
+    o.maxAttempts = 42;
+    o.maxBackoff = "foo";
+    o.maxDoublings = 42;
+    o.maxRetryDuration = "foo";
+    o.minBackoff = "foo";
+    o.unlimitedAttempts = true;
+  }
+  buildCounterRetryConfig--;
+  return o;
+}
+
+checkRetryConfig(api.RetryConfig o) {
+  buildCounterRetryConfig++;
+  if (buildCounterRetryConfig < 3) {
+    unittest.expect(o.maxAttempts, unittest.equals(42));
+    unittest.expect(o.maxBackoff, unittest.equals('foo'));
+    unittest.expect(o.maxDoublings, unittest.equals(42));
+    unittest.expect(o.maxRetryDuration, unittest.equals('foo'));
+    unittest.expect(o.minBackoff, unittest.equals('foo'));
+    unittest.expect(o.unlimitedAttempts, unittest.isTrue);
+  }
+  buildCounterRetryConfig--;
+}
+
+core.int buildCounterRunTaskRequest = 0;
+buildRunTaskRequest() {
+  var o = new api.RunTaskRequest();
+  buildCounterRunTaskRequest++;
+  if (buildCounterRunTaskRequest < 3) {
+    o.responseView = "foo";
+  }
+  buildCounterRunTaskRequest--;
+  return o;
+}
+
+checkRunTaskRequest(api.RunTaskRequest o) {
+  buildCounterRunTaskRequest++;
+  if (buildCounterRunTaskRequest < 3) {
+    unittest.expect(o.responseView, unittest.equals('foo'));
+  }
+  buildCounterRunTaskRequest--;
+}
+
+core.int buildCounterSetIamPolicyRequest = 0;
+buildSetIamPolicyRequest() {
+  var o = new api.SetIamPolicyRequest();
+  buildCounterSetIamPolicyRequest++;
+  if (buildCounterSetIamPolicyRequest < 3) {
+    o.policy = buildPolicy();
+  }
+  buildCounterSetIamPolicyRequest--;
+  return o;
+}
+
+checkSetIamPolicyRequest(api.SetIamPolicyRequest o) {
+  buildCounterSetIamPolicyRequest++;
+  if (buildCounterSetIamPolicyRequest < 3) {
+    checkPolicy(o.policy);
+  }
+  buildCounterSetIamPolicyRequest--;
+}
+
+buildUnnamed3464() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed3464(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted3 = (o["x"]) as core.Map;
+  unittest.expect(casted3, unittest.hasLength(3));
+  unittest.expect(casted3["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted3["bool"], unittest.equals(true));
+  unittest.expect(casted3["string"], unittest.equals('foo'));
+  var casted4 = (o["y"]) as core.Map;
+  unittest.expect(casted4, unittest.hasLength(3));
+  unittest.expect(casted4["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted4["bool"], unittest.equals(true));
+  unittest.expect(casted4["string"], unittest.equals('foo'));
+}
+
+buildUnnamed3465() {
+  var o = new core.List<core.Map<core.String, core.Object>>();
+  o.add(buildUnnamed3464());
+  o.add(buildUnnamed3464());
+  return o;
+}
+
+checkUnnamed3465(core.List<core.Map<core.String, core.Object>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed3464(o[0]);
+  checkUnnamed3464(o[1]);
+}
+
+core.int buildCounterStatus = 0;
+buildStatus() {
+  var o = new api.Status();
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    o.code = 42;
+    o.details = buildUnnamed3465();
+    o.message = "foo";
+  }
+  buildCounterStatus--;
+  return o;
+}
+
+checkStatus(api.Status o) {
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    unittest.expect(o.code, unittest.equals(42));
+    checkUnnamed3465(o.details);
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterStatus--;
+}
+
+core.int buildCounterTask = 0;
+buildTask() {
+  var o = new api.Task();
+  buildCounterTask++;
+  if (buildCounterTask < 3) {
+    o.appEngineHttpRequest = buildAppEngineHttpRequest();
+    o.appEngineTaskTarget = buildAppEngineTaskTarget();
+    o.createTime = "foo";
+    o.name = "foo";
+    o.pullMessage = buildPullMessage();
+    o.pullTaskTarget = buildPullTaskTarget();
+    o.scheduleTime = "foo";
+    o.taskStatus = buildTaskStatus();
+    o.view = "foo";
+  }
+  buildCounterTask--;
+  return o;
+}
+
+checkTask(api.Task o) {
+  buildCounterTask++;
+  if (buildCounterTask < 3) {
+    checkAppEngineHttpRequest(o.appEngineHttpRequest);
+    checkAppEngineTaskTarget(o.appEngineTaskTarget);
+    unittest.expect(o.createTime, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkPullMessage(o.pullMessage);
+    checkPullTaskTarget(o.pullTaskTarget);
+    unittest.expect(o.scheduleTime, unittest.equals('foo'));
+    checkTaskStatus(o.taskStatus);
+    unittest.expect(o.view, unittest.equals('foo'));
+  }
+  buildCounterTask--;
+}
+
+core.int buildCounterTaskStatus = 0;
+buildTaskStatus() {
+  var o = new api.TaskStatus();
+  buildCounterTaskStatus++;
+  if (buildCounterTaskStatus < 3) {
+    o.attemptDispatchCount = "foo";
+    o.attemptResponseCount = "foo";
+    o.firstAttemptStatus = buildAttemptStatus();
+    o.lastAttemptStatus = buildAttemptStatus();
+  }
+  buildCounterTaskStatus--;
+  return o;
+}
+
+checkTaskStatus(api.TaskStatus o) {
+  buildCounterTaskStatus++;
+  if (buildCounterTaskStatus < 3) {
+    unittest.expect(o.attemptDispatchCount, unittest.equals('foo'));
+    unittest.expect(o.attemptResponseCount, unittest.equals('foo'));
+    checkAttemptStatus(o.firstAttemptStatus);
+    checkAttemptStatus(o.lastAttemptStatus);
+  }
+  buildCounterTaskStatus--;
+}
+
+buildUnnamed3466() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3466(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterTestIamPermissionsRequest = 0;
+buildTestIamPermissionsRequest() {
+  var o = new api.TestIamPermissionsRequest();
+  buildCounterTestIamPermissionsRequest++;
+  if (buildCounterTestIamPermissionsRequest < 3) {
+    o.permissions = buildUnnamed3466();
+  }
+  buildCounterTestIamPermissionsRequest--;
+  return o;
+}
+
+checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
+  buildCounterTestIamPermissionsRequest++;
+  if (buildCounterTestIamPermissionsRequest < 3) {
+    checkUnnamed3466(o.permissions);
+  }
+  buildCounterTestIamPermissionsRequest--;
+}
+
+buildUnnamed3467() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3467(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterTestIamPermissionsResponse = 0;
+buildTestIamPermissionsResponse() {
+  var o = new api.TestIamPermissionsResponse();
+  buildCounterTestIamPermissionsResponse++;
+  if (buildCounterTestIamPermissionsResponse < 3) {
+    o.permissions = buildUnnamed3467();
+  }
+  buildCounterTestIamPermissionsResponse--;
+  return o;
+}
+
+checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
+  buildCounterTestIamPermissionsResponse++;
+  if (buildCounterTestIamPermissionsResponse < 3) {
+    checkUnnamed3467(o.permissions);
+  }
+  buildCounterTestIamPermissionsResponse--;
+}
+
+main() {
+  unittest.group("obj-schema-AcknowledgeTaskRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAcknowledgeTaskRequest();
+      var od = new api.AcknowledgeTaskRequest.fromJson(o.toJson());
+      checkAcknowledgeTaskRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AppEngineHttpRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAppEngineHttpRequest();
+      var od = new api.AppEngineHttpRequest.fromJson(o.toJson());
+      checkAppEngineHttpRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AppEngineHttpTarget", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAppEngineHttpTarget();
+      var od = new api.AppEngineHttpTarget.fromJson(o.toJson());
+      checkAppEngineHttpTarget(od);
+    });
+  });
+
+  unittest.group("obj-schema-AppEngineQueueConfig", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAppEngineQueueConfig();
+      var od = new api.AppEngineQueueConfig.fromJson(o.toJson());
+      checkAppEngineQueueConfig(od);
+    });
+  });
+
+  unittest.group("obj-schema-AppEngineRouting", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAppEngineRouting();
+      var od = new api.AppEngineRouting.fromJson(o.toJson());
+      checkAppEngineRouting(od);
+    });
+  });
+
+  unittest.group("obj-schema-AppEngineTaskTarget", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAppEngineTaskTarget();
+      var od = new api.AppEngineTaskTarget.fromJson(o.toJson());
+      checkAppEngineTaskTarget(od);
+    });
+  });
+
+  unittest.group("obj-schema-AttemptStatus", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAttemptStatus();
+      var od = new api.AttemptStatus.fromJson(o.toJson());
+      checkAttemptStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-Binding", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBinding();
+      var od = new api.Binding.fromJson(o.toJson());
+      checkBinding(od);
+    });
+  });
+
+  unittest.group("obj-schema-CancelLeaseRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCancelLeaseRequest();
+      var od = new api.CancelLeaseRequest.fromJson(o.toJson());
+      checkCancelLeaseRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-CreateTaskRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCreateTaskRequest();
+      var od = new api.CreateTaskRequest.fromJson(o.toJson());
+      checkCreateTaskRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Empty", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEmpty();
+      var od = new api.Empty.fromJson(o.toJson());
+      checkEmpty(od);
+    });
+  });
+
+  unittest.group("obj-schema-GetIamPolicyRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGetIamPolicyRequest();
+      var od = new api.GetIamPolicyRequest.fromJson(o.toJson());
+      checkGetIamPolicyRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListLocationsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListLocationsResponse();
+      var od = new api.ListLocationsResponse.fromJson(o.toJson());
+      checkListLocationsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListQueuesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListQueuesResponse();
+      var od = new api.ListQueuesResponse.fromJson(o.toJson());
+      checkListQueuesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListTasksResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListTasksResponse();
+      var od = new api.ListTasksResponse.fromJson(o.toJson());
+      checkListTasksResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Location", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLocation();
+      var od = new api.Location.fromJson(o.toJson());
+      checkLocation(od);
+    });
+  });
+
+  unittest.group("obj-schema-PauseQueueRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPauseQueueRequest();
+      var od = new api.PauseQueueRequest.fromJson(o.toJson());
+      checkPauseQueueRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Policy", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPolicy();
+      var od = new api.Policy.fromJson(o.toJson());
+      checkPolicy(od);
+    });
+  });
+
+  unittest.group("obj-schema-PullMessage", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPullMessage();
+      var od = new api.PullMessage.fromJson(o.toJson());
+      checkPullMessage(od);
+    });
+  });
+
+  unittest.group("obj-schema-PullQueueConfig", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPullQueueConfig();
+      var od = new api.PullQueueConfig.fromJson(o.toJson());
+      checkPullQueueConfig(od);
+    });
+  });
+
+  unittest.group("obj-schema-PullTarget", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPullTarget();
+      var od = new api.PullTarget.fromJson(o.toJson());
+      checkPullTarget(od);
+    });
+  });
+
+  unittest.group("obj-schema-PullTaskTarget", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPullTaskTarget();
+      var od = new api.PullTaskTarget.fromJson(o.toJson());
+      checkPullTaskTarget(od);
+    });
+  });
+
+  unittest.group("obj-schema-PullTasksRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPullTasksRequest();
+      var od = new api.PullTasksRequest.fromJson(o.toJson());
+      checkPullTasksRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-PullTasksResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPullTasksResponse();
+      var od = new api.PullTasksResponse.fromJson(o.toJson());
+      checkPullTasksResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-PurgeQueueRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPurgeQueueRequest();
+      var od = new api.PurgeQueueRequest.fromJson(o.toJson());
+      checkPurgeQueueRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Queue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildQueue();
+      var od = new api.Queue.fromJson(o.toJson());
+      checkQueue(od);
+    });
+  });
+
+  unittest.group("obj-schema-RateLimits", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRateLimits();
+      var od = new api.RateLimits.fromJson(o.toJson());
+      checkRateLimits(od);
+    });
+  });
+
+  unittest.group("obj-schema-RenewLeaseRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRenewLeaseRequest();
+      var od = new api.RenewLeaseRequest.fromJson(o.toJson());
+      checkRenewLeaseRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ResumeQueueRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildResumeQueueRequest();
+      var od = new api.ResumeQueueRequest.fromJson(o.toJson());
+      checkResumeQueueRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-RetryConfig", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRetryConfig();
+      var od = new api.RetryConfig.fromJson(o.toJson());
+      checkRetryConfig(od);
+    });
+  });
+
+  unittest.group("obj-schema-RunTaskRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRunTaskRequest();
+      var od = new api.RunTaskRequest.fromJson(o.toJson());
+      checkRunTaskRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-SetIamPolicyRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSetIamPolicyRequest();
+      var od = new api.SetIamPolicyRequest.fromJson(o.toJson());
+      checkSetIamPolicyRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Status", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStatus();
+      var od = new api.Status.fromJson(o.toJson());
+      checkStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-Task", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTask();
+      var od = new api.Task.fromJson(o.toJson());
+      checkTask(od);
+    });
+  });
+
+  unittest.group("obj-schema-TaskStatus", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTaskStatus();
+      var od = new api.TaskStatus.fromJson(o.toJson());
+      checkTaskStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestIamPermissionsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestIamPermissionsRequest();
+      var od = new api.TestIamPermissionsRequest.fromJson(o.toJson());
+      checkTestIamPermissionsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestIamPermissionsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestIamPermissionsResponse();
+      var od = new api.TestIamPermissionsResponse.fromJson(o.toJson());
+      checkTestIamPermissionsResponse(od);
+    });
+  });
+
+  unittest.group("resource-ProjectsLocationsResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLocation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Location response) {
+        checkLocation(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations;
+      var arg_name = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_filter = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListLocationsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_name,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              filter: arg_filter,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListLocationsResponse response) {
+        checkListLocationsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsLocationsQueuesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues;
+      var arg_request = buildQueue();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Queue.fromJson(json);
+        checkQueue(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildQueue());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Queue response) {
+        checkQueue(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildQueue());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Queue response) {
+        checkQueue(response);
+      })));
+    });
+
+    unittest.test("method--getIamPolicy", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues;
+      var arg_request = buildGetIamPolicyRequest();
+      var arg_resource = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.GetIamPolicyRequest.fromJson(json);
+        checkGetIamPolicyRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPolicy());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Policy response) {
+        checkPolicy(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_filter = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListQueuesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              filter: arg_filter,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListQueuesResponse response) {
+        checkListQueuesResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues;
+      var arg_request = buildQueue();
+      var arg_name = "foo";
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Queue.fromJson(json);
+        checkQueue(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildQueue());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Queue response) {
+        checkQueue(response);
+      })));
+    });
+
+    unittest.test("method--pause", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues;
+      var arg_request = buildPauseQueueRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PauseQueueRequest.fromJson(json);
+        checkPauseQueueRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildQueue());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .pause(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Queue response) {
+        checkQueue(response);
+      })));
+    });
+
+    unittest.test("method--purge", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues;
+      var arg_request = buildPurgeQueueRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PurgeQueueRequest.fromJson(json);
+        checkPurgeQueueRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildQueue());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .purge(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Queue response) {
+        checkQueue(response);
+      })));
+    });
+
+    unittest.test("method--resume", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues;
+      var arg_request = buildResumeQueueRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ResumeQueueRequest.fromJson(json);
+        checkResumeQueueRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildQueue());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .resume(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Queue response) {
+        checkQueue(response);
+      })));
+    });
+
+    unittest.test("method--setIamPolicy", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues;
+      var arg_request = buildSetIamPolicyRequest();
+      var arg_resource = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.SetIamPolicyRequest.fromJson(json);
+        checkSetIamPolicyRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPolicy());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Policy response) {
+        checkPolicy(response);
+      })));
+    });
+
+    unittest.test("method--testIamPermissions", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues;
+      var arg_request = buildTestIamPermissionsRequest();
+      var arg_resource = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.TestIamPermissionsRequest.fromJson(json);
+        checkTestIamPermissionsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+        checkTestIamPermissionsResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsLocationsQueuesTasksResourceApi", () {
+    unittest.test("method--acknowledge", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesTasksResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues.tasks;
+      var arg_request = buildAcknowledgeTaskRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.AcknowledgeTaskRequest.fromJson(json);
+        checkAcknowledgeTaskRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .acknowledge(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--cancelLease", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesTasksResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues.tasks;
+      var arg_request = buildCancelLeaseRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CancelLeaseRequest.fromJson(json);
+        checkCancelLeaseRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTask());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .cancelLease(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Task response) {
+        checkTask(response);
+      })));
+    });
+
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesTasksResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues.tasks;
+      var arg_request = buildCreateTaskRequest();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CreateTaskRequest.fromJson(json);
+        checkCreateTaskRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTask());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Task response) {
+        checkTask(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesTasksResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues.tasks;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesTasksResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues.tasks;
+      var arg_name = "foo";
+      var arg_responseView = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["responseView"].first, unittest.equals(arg_responseView));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTask());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, responseView: arg_responseView, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Task response) {
+        checkTask(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesTasksResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues.tasks;
+      var arg_parent = "foo";
+      var arg_responseView = "foo";
+      var arg_orderBy = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["responseView"].first, unittest.equals(arg_responseView));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListTasksResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              responseView: arg_responseView,
+              orderBy: arg_orderBy,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListTasksResponse response) {
+        checkListTasksResponse(response);
+      })));
+    });
+
+    unittest.test("method--pull", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesTasksResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues.tasks;
+      var arg_request = buildPullTasksRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PullTasksRequest.fromJson(json);
+        checkPullTasksRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPullTasksResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .pull(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PullTasksResponse response) {
+        checkPullTasksResponse(response);
+      })));
+    });
+
+    unittest.test("method--renewLease", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesTasksResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues.tasks;
+      var arg_request = buildRenewLeaseRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.RenewLeaseRequest.fromJson(json);
+        checkRenewLeaseRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTask());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .renewLease(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Task response) {
+        checkTask(response);
+      })));
+    });
+
+    unittest.test("method--run", () {
+      var mock = new HttpServerMock();
+      api.ProjectsLocationsQueuesTasksResourceApi res =
+          new api.CloudtasksApi(mock).projects.locations.queues.tasks;
+      var arg_request = buildRunTaskRequest();
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.RunTaskRequest.fromJson(json);
+        checkRunTaskRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v2beta2/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildTask());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .run(arg_request, arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Task response) {
+        checkTask(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis_beta/test/clouduseraccounts/beta_test.dart b/generated/googleapis_beta/test/clouduseraccounts/beta_test.dart
index 1f7a5f9..58c2297 100644
--- a/generated/googleapis_beta/test/clouduseraccounts/beta_test.dart
+++ b/generated/googleapis_beta/test/clouduseraccounts/beta_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed3408() {
+buildUnnamed3424() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3408(core.List<core.String> o) {
+checkUnnamed3424(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -68,7 +68,7 @@
   var o = new api.AuthorizedKeysView();
   buildCounterAuthorizedKeysView++;
   if (buildCounterAuthorizedKeysView < 3) {
-    o.keys = buildUnnamed3408();
+    o.keys = buildUnnamed3424();
     o.sudoer = true;
   }
   buildCounterAuthorizedKeysView--;
@@ -78,20 +78,20 @@
 checkAuthorizedKeysView(api.AuthorizedKeysView o) {
   buildCounterAuthorizedKeysView++;
   if (buildCounterAuthorizedKeysView < 3) {
-    checkUnnamed3408(o.keys);
+    checkUnnamed3424(o.keys);
     unittest.expect(o.sudoer, unittest.isTrue);
   }
   buildCounterAuthorizedKeysView--;
 }
 
-buildUnnamed3409() {
+buildUnnamed3425() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3409(core.List<core.String> o) {
+checkUnnamed3425(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -106,7 +106,7 @@
     o.description = "foo";
     o.id = "foo";
     o.kind = "foo";
-    o.members = buildUnnamed3409();
+    o.members = buildUnnamed3425();
     o.name = "foo";
     o.selfLink = "foo";
   }
@@ -121,21 +121,21 @@
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed3409(o.members);
+    checkUnnamed3425(o.members);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
   }
   buildCounterGroup--;
 }
 
-buildUnnamed3410() {
+buildUnnamed3426() {
   var o = new core.List<api.Group>();
   o.add(buildGroup());
   o.add(buildGroup());
   return o;
 }
 
-checkUnnamed3410(core.List<api.Group> o) {
+checkUnnamed3426(core.List<api.Group> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGroup(o[0]);
   checkGroup(o[1]);
@@ -147,7 +147,7 @@
   buildCounterGroupList++;
   if (buildCounterGroupList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed3410();
+    o.items = buildUnnamed3426();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -160,7 +160,7 @@
   buildCounterGroupList++;
   if (buildCounterGroupList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed3410(o.items);
+    checkUnnamed3426(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -168,14 +168,14 @@
   buildCounterGroupList--;
 }
 
-buildUnnamed3411() {
+buildUnnamed3427() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3411(core.List<core.String> o) {
+checkUnnamed3427(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -186,7 +186,7 @@
   var o = new api.GroupsAddMemberRequest();
   buildCounterGroupsAddMemberRequest++;
   if (buildCounterGroupsAddMemberRequest < 3) {
-    o.users = buildUnnamed3411();
+    o.users = buildUnnamed3427();
   }
   buildCounterGroupsAddMemberRequest--;
   return o;
@@ -195,19 +195,19 @@
 checkGroupsAddMemberRequest(api.GroupsAddMemberRequest o) {
   buildCounterGroupsAddMemberRequest++;
   if (buildCounterGroupsAddMemberRequest < 3) {
-    checkUnnamed3411(o.users);
+    checkUnnamed3427(o.users);
   }
   buildCounterGroupsAddMemberRequest--;
 }
 
-buildUnnamed3412() {
+buildUnnamed3428() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3412(core.List<core.String> o) {
+checkUnnamed3428(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -218,7 +218,7 @@
   var o = new api.GroupsRemoveMemberRequest();
   buildCounterGroupsRemoveMemberRequest++;
   if (buildCounterGroupsRemoveMemberRequest < 3) {
-    o.users = buildUnnamed3412();
+    o.users = buildUnnamed3428();
   }
   buildCounterGroupsRemoveMemberRequest--;
   return o;
@@ -227,32 +227,32 @@
 checkGroupsRemoveMemberRequest(api.GroupsRemoveMemberRequest o) {
   buildCounterGroupsRemoveMemberRequest++;
   if (buildCounterGroupsRemoveMemberRequest < 3) {
-    checkUnnamed3412(o.users);
+    checkUnnamed3428(o.users);
   }
   buildCounterGroupsRemoveMemberRequest--;
 }
 
-buildUnnamed3413() {
+buildUnnamed3429() {
   var o = new core.List<api.LinuxGroupView>();
   o.add(buildLinuxGroupView());
   o.add(buildLinuxGroupView());
   return o;
 }
 
-checkUnnamed3413(core.List<api.LinuxGroupView> o) {
+checkUnnamed3429(core.List<api.LinuxGroupView> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLinuxGroupView(o[0]);
   checkLinuxGroupView(o[1]);
 }
 
-buildUnnamed3414() {
+buildUnnamed3430() {
   var o = new core.List<api.LinuxUserView>();
   o.add(buildLinuxUserView());
   o.add(buildLinuxUserView());
   return o;
 }
 
-checkUnnamed3414(core.List<api.LinuxUserView> o) {
+checkUnnamed3430(core.List<api.LinuxUserView> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLinuxUserView(o[0]);
   checkLinuxUserView(o[1]);
@@ -263,9 +263,9 @@
   var o = new api.LinuxAccountViews();
   buildCounterLinuxAccountViews++;
   if (buildCounterLinuxAccountViews < 3) {
-    o.groupViews = buildUnnamed3413();
+    o.groupViews = buildUnnamed3429();
     o.kind = "foo";
-    o.userViews = buildUnnamed3414();
+    o.userViews = buildUnnamed3430();
   }
   buildCounterLinuxAccountViews--;
   return o;
@@ -274,9 +274,9 @@
 checkLinuxAccountViews(api.LinuxAccountViews o) {
   buildCounterLinuxAccountViews++;
   if (buildCounterLinuxAccountViews < 3) {
-    checkUnnamed3413(o.groupViews);
+    checkUnnamed3429(o.groupViews);
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed3414(o.userViews);
+    checkUnnamed3430(o.userViews);
   }
   buildCounterLinuxAccountViews--;
 }
@@ -321,14 +321,14 @@
   buildCounterLinuxGetLinuxAccountViewsResponse--;
 }
 
-buildUnnamed3415() {
+buildUnnamed3431() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3415(core.List<core.String> o) {
+checkUnnamed3431(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -341,7 +341,7 @@
   if (buildCounterLinuxGroupView < 3) {
     o.gid = 42;
     o.groupName = "foo";
-    o.members = buildUnnamed3415();
+    o.members = buildUnnamed3431();
   }
   buildCounterLinuxGroupView--;
   return o;
@@ -352,7 +352,7 @@
   if (buildCounterLinuxGroupView < 3) {
     unittest.expect(o.gid, unittest.equals(42));
     unittest.expect(o.groupName, unittest.equals('foo'));
-    checkUnnamed3415(o.members);
+    checkUnnamed3431(o.members);
   }
   buildCounterLinuxGroupView--;
 }
@@ -409,14 +409,14 @@
   buildCounterOperationErrorErrors--;
 }
 
-buildUnnamed3416() {
+buildUnnamed3432() {
   var o = new core.List<api.OperationErrorErrors>();
   o.add(buildOperationErrorErrors());
   o.add(buildOperationErrorErrors());
   return o;
 }
 
-checkUnnamed3416(core.List<api.OperationErrorErrors> o) {
+checkUnnamed3432(core.List<api.OperationErrorErrors> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationErrorErrors(o[0]);
   checkOperationErrorErrors(o[1]);
@@ -427,7 +427,7 @@
   var o = new api.OperationError();
   buildCounterOperationError++;
   if (buildCounterOperationError < 3) {
-    o.errors = buildUnnamed3416();
+    o.errors = buildUnnamed3432();
   }
   buildCounterOperationError--;
   return o;
@@ -436,7 +436,7 @@
 checkOperationError(api.OperationError o) {
   buildCounterOperationError++;
   if (buildCounterOperationError < 3) {
-    checkUnnamed3416(o.errors);
+    checkUnnamed3432(o.errors);
   }
   buildCounterOperationError--;
 }
@@ -462,14 +462,14 @@
   buildCounterOperationWarningsData--;
 }
 
-buildUnnamed3417() {
+buildUnnamed3433() {
   var o = new core.List<api.OperationWarningsData>();
   o.add(buildOperationWarningsData());
   o.add(buildOperationWarningsData());
   return o;
 }
 
-checkUnnamed3417(core.List<api.OperationWarningsData> o) {
+checkUnnamed3433(core.List<api.OperationWarningsData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationWarningsData(o[0]);
   checkOperationWarningsData(o[1]);
@@ -481,7 +481,7 @@
   buildCounterOperationWarnings++;
   if (buildCounterOperationWarnings < 3) {
     o.code = "foo";
-    o.data = buildUnnamed3417();
+    o.data = buildUnnamed3433();
     o.message = "foo";
   }
   buildCounterOperationWarnings--;
@@ -492,20 +492,20 @@
   buildCounterOperationWarnings++;
   if (buildCounterOperationWarnings < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed3417(o.data);
+    checkUnnamed3433(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterOperationWarnings--;
 }
 
-buildUnnamed3418() {
+buildUnnamed3434() {
   var o = new core.List<api.OperationWarnings>();
   o.add(buildOperationWarnings());
   o.add(buildOperationWarnings());
   return o;
 }
 
-checkUnnamed3418(core.List<api.OperationWarnings> o) {
+checkUnnamed3434(core.List<api.OperationWarnings> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationWarnings(o[0]);
   checkOperationWarnings(o[1]);
@@ -537,7 +537,7 @@
     o.targetId = "foo";
     o.targetLink = "foo";
     o.user = "foo";
-    o.warnings = buildUnnamed3418();
+    o.warnings = buildUnnamed3434();
     o.zone = "foo";
   }
   buildCounterOperation--;
@@ -568,20 +568,20 @@
     unittest.expect(o.targetId, unittest.equals('foo'));
     unittest.expect(o.targetLink, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed3418(o.warnings);
+    checkUnnamed3434(o.warnings);
     unittest.expect(o.zone, unittest.equals('foo'));
   }
   buildCounterOperation--;
 }
 
-buildUnnamed3419() {
+buildUnnamed3435() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed3419(core.List<api.Operation> o) {
+checkUnnamed3435(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -593,7 +593,7 @@
   buildCounterOperationList++;
   if (buildCounterOperationList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed3419();
+    o.items = buildUnnamed3435();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -606,7 +606,7 @@
   buildCounterOperationList++;
   if (buildCounterOperationList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed3419(o.items);
+    checkUnnamed3435(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -641,27 +641,27 @@
   buildCounterPublicKey--;
 }
 
-buildUnnamed3420() {
+buildUnnamed3436() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3420(core.List<core.String> o) {
+checkUnnamed3436(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3421() {
+buildUnnamed3437() {
   var o = new core.List<api.PublicKey>();
   o.add(buildPublicKey());
   o.add(buildPublicKey());
   return o;
 }
 
-checkUnnamed3421(core.List<api.PublicKey> o) {
+checkUnnamed3437(core.List<api.PublicKey> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPublicKey(o[0]);
   checkPublicKey(o[1]);
@@ -674,12 +674,12 @@
   if (buildCounterUser < 3) {
     o.creationTimestamp = "foo";
     o.description = "foo";
-    o.groups = buildUnnamed3420();
+    o.groups = buildUnnamed3436();
     o.id = "foo";
     o.kind = "foo";
     o.name = "foo";
     o.owner = "foo";
-    o.publicKeys = buildUnnamed3421();
+    o.publicKeys = buildUnnamed3437();
     o.selfLink = "foo";
   }
   buildCounterUser--;
@@ -691,25 +691,25 @@
   if (buildCounterUser < 3) {
     unittest.expect(o.creationTimestamp, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed3420(o.groups);
+    checkUnnamed3436(o.groups);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.owner, unittest.equals('foo'));
-    checkUnnamed3421(o.publicKeys);
+    checkUnnamed3437(o.publicKeys);
     unittest.expect(o.selfLink, unittest.equals('foo'));
   }
   buildCounterUser--;
 }
 
-buildUnnamed3422() {
+buildUnnamed3438() {
   var o = new core.List<api.User>();
   o.add(buildUser());
   o.add(buildUser());
   return o;
 }
 
-checkUnnamed3422(core.List<api.User> o) {
+checkUnnamed3438(core.List<api.User> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUser(o[0]);
   checkUser(o[1]);
@@ -721,7 +721,7 @@
   buildCounterUserList++;
   if (buildCounterUserList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed3422();
+    o.items = buildUnnamed3438();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -734,7 +734,7 @@
   buildCounterUserList++;
   if (buildCounterUserList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed3422(o.items);
+    checkUnnamed3438(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -902,6 +902,7 @@
           new api.ClouduseraccountsApi(mock).globalAccountsOperations;
       var arg_project = "foo";
       var arg_operation = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -929,6 +930,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -937,7 +939,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_operation)
+          .delete(arg_project, arg_operation, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -947,6 +949,7 @@
           new api.ClouduseraccountsApi(mock).globalAccountsOperations;
       var arg_project = "foo";
       var arg_operation = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -974,6 +977,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -982,7 +986,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_operation)
+          .get(arg_project, arg_operation, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -997,6 +1001,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1031,6 +1036,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1043,7 +1049,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OperationList response) {
         checkOperationList(response);
       })));
@@ -1057,6 +1064,7 @@
       var arg_request = buildGroupsAddMemberRequest();
       var arg_project = "foo";
       var arg_groupName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GroupsAddMemberRequest.fromJson(json);
         checkGroupsAddMemberRequest(obj);
@@ -1087,6 +1095,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1095,7 +1104,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .addMember(arg_request, arg_project, arg_groupName)
+          .addMember(arg_request, arg_project, arg_groupName,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1106,6 +1116,7 @@
       api.GroupsResourceApi res = new api.ClouduseraccountsApi(mock).groups;
       var arg_project = "foo";
       var arg_groupName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1133,6 +1144,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1141,7 +1153,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_groupName)
+          .delete(arg_project, arg_groupName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1152,6 +1164,7 @@
       api.GroupsResourceApi res = new api.ClouduseraccountsApi(mock).groups;
       var arg_project = "foo";
       var arg_groupName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1179,6 +1192,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1187,7 +1201,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_groupName)
+          .get(arg_project, arg_groupName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Group response) {
         checkGroup(response);
       })));
@@ -1198,6 +1212,7 @@
       api.GroupsResourceApi res = new api.ClouduseraccountsApi(mock).groups;
       var arg_request = buildGroup();
       var arg_project = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Group.fromJson(json);
         checkGroup(obj);
@@ -1228,6 +1243,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1236,7 +1252,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project)
+          .insert(arg_request, arg_project, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1250,6 +1266,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1284,6 +1301,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1296,7 +1314,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GroupList response) {
         checkGroupList(response);
       })));
@@ -1308,6 +1327,7 @@
       var arg_request = buildGroupsRemoveMemberRequest();
       var arg_project = "foo";
       var arg_groupName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GroupsRemoveMemberRequest.fromJson(json);
         checkGroupsRemoveMemberRequest(obj);
@@ -1338,6 +1358,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1346,7 +1367,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .removeMember(arg_request, arg_project, arg_groupName)
+          .removeMember(arg_request, arg_project, arg_groupName,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1362,6 +1384,7 @@
       var arg_user = "foo";
       var arg_instance = "foo";
       var arg_login = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1392,6 +1415,7 @@
         unittest.expect(
             queryMap["instance"].first, unittest.equals(arg_instance));
         unittest.expect(queryMap["login"].first, unittest.equals("$arg_login"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1402,7 +1426,7 @@
       }), true);
       res
           .getAuthorizedKeysView(arg_project, arg_zone, arg_user, arg_instance,
-              login: arg_login)
+              login: arg_login, $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.LinuxGetAuthorizedKeysViewResponse response) {
         checkLinuxGetAuthorizedKeysViewResponse(response);
@@ -1419,6 +1443,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1455,6 +1480,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1468,7 +1494,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.LinuxGetLinuxAccountViewsResponse response) {
         checkLinuxGetLinuxAccountViewsResponse(response);
@@ -1483,6 +1510,7 @@
       var arg_request = buildPublicKey();
       var arg_project = "foo";
       var arg_user = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.PublicKey.fromJson(json);
         checkPublicKey(obj);
@@ -1513,6 +1541,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1521,7 +1550,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .addPublicKey(arg_request, arg_project, arg_user)
+          .addPublicKey(arg_request, arg_project, arg_user,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1532,6 +1562,7 @@
       api.UsersResourceApi res = new api.ClouduseraccountsApi(mock).users;
       var arg_project = "foo";
       var arg_user = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1559,6 +1590,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1567,7 +1599,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_user)
+          .delete(arg_project, arg_user, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1578,6 +1610,7 @@
       api.UsersResourceApi res = new api.ClouduseraccountsApi(mock).users;
       var arg_project = "foo";
       var arg_user = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1605,6 +1638,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1613,7 +1647,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_user)
+          .get(arg_project, arg_user, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.User response) {
         checkUser(response);
       })));
@@ -1624,6 +1658,7 @@
       api.UsersResourceApi res = new api.ClouduseraccountsApi(mock).users;
       var arg_request = buildUser();
       var arg_project = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.User.fromJson(json);
         checkUser(obj);
@@ -1654,6 +1689,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1662,7 +1698,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project)
+          .insert(arg_request, arg_project, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1676,6 +1712,7 @@
       var arg_maxResults = 42;
       var arg_orderBy = "foo";
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1710,6 +1747,7 @@
             queryMap["orderBy"].first, unittest.equals(arg_orderBy));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1722,7 +1760,8 @@
               filter: arg_filter,
               maxResults: arg_maxResults,
               orderBy: arg_orderBy,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UserList response) {
         checkUserList(response);
       })));
@@ -1734,6 +1773,7 @@
       var arg_project = "foo";
       var arg_user = "foo";
       var arg_fingerprint = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1763,6 +1803,7 @@
         }
         unittest.expect(
             queryMap["fingerprint"].first, unittest.equals(arg_fingerprint));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1771,7 +1812,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .removePublicKey(arg_project, arg_user, arg_fingerprint)
+          .removePublicKey(arg_project, arg_user, arg_fingerprint,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
diff --git a/generated/googleapis_beta/test/dataflow/v1b3_test.dart b/generated/googleapis_beta/test/dataflow/v1b3_test.dart
index ce6dab0..5e2afb4 100644
--- a/generated/googleapis_beta/test/dataflow/v1b3_test.dart
+++ b/generated/googleapis_beta/test/dataflow/v1b3_test.dart
@@ -236,53 +236,53 @@
   buildCounterComponentTransform--;
 }
 
-buildUnnamed3240() {
+buildUnnamed3255() {
   var o = new core.List<api.StreamLocation>();
   o.add(buildStreamLocation());
   o.add(buildStreamLocation());
   return o;
 }
 
-checkUnnamed3240(core.List<api.StreamLocation> o) {
+checkUnnamed3255(core.List<api.StreamLocation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStreamLocation(o[0]);
   checkStreamLocation(o[1]);
 }
 
-buildUnnamed3241() {
+buildUnnamed3256() {
   var o = new core.List<api.KeyRangeLocation>();
   o.add(buildKeyRangeLocation());
   o.add(buildKeyRangeLocation());
   return o;
 }
 
-checkUnnamed3241(core.List<api.KeyRangeLocation> o) {
+checkUnnamed3256(core.List<api.KeyRangeLocation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkKeyRangeLocation(o[0]);
   checkKeyRangeLocation(o[1]);
 }
 
-buildUnnamed3242() {
+buildUnnamed3257() {
   var o = new core.List<api.StreamLocation>();
   o.add(buildStreamLocation());
   o.add(buildStreamLocation());
   return o;
 }
 
-checkUnnamed3242(core.List<api.StreamLocation> o) {
+checkUnnamed3257(core.List<api.StreamLocation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStreamLocation(o[0]);
   checkStreamLocation(o[1]);
 }
 
-buildUnnamed3243() {
+buildUnnamed3258() {
   var o = new core.List<api.StateFamilyConfig>();
   o.add(buildStateFamilyConfig());
   o.add(buildStateFamilyConfig());
   return o;
 }
 
-checkUnnamed3243(core.List<api.StateFamilyConfig> o) {
+checkUnnamed3258(core.List<api.StateFamilyConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStateFamilyConfig(o[0]);
   checkStateFamilyConfig(o[1]);
@@ -294,10 +294,10 @@
   buildCounterComputationTopology++;
   if (buildCounterComputationTopology < 3) {
     o.computationId = "foo";
-    o.inputs = buildUnnamed3240();
-    o.keyRanges = buildUnnamed3241();
-    o.outputs = buildUnnamed3242();
-    o.stateFamilies = buildUnnamed3243();
+    o.inputs = buildUnnamed3255();
+    o.keyRanges = buildUnnamed3256();
+    o.outputs = buildUnnamed3257();
+    o.stateFamilies = buildUnnamed3258();
     o.systemStageName = "foo";
   }
   buildCounterComputationTopology--;
@@ -308,10 +308,10 @@
   buildCounterComputationTopology++;
   if (buildCounterComputationTopology < 3) {
     unittest.expect(o.computationId, unittest.equals('foo'));
-    checkUnnamed3240(o.inputs);
-    checkUnnamed3241(o.keyRanges);
-    checkUnnamed3242(o.outputs);
-    checkUnnamed3243(o.stateFamilies);
+    checkUnnamed3255(o.inputs);
+    checkUnnamed3256(o.keyRanges);
+    checkUnnamed3257(o.outputs);
+    checkUnnamed3258(o.stateFamilies);
     unittest.expect(o.systemStageName, unittest.equals('foo'));
   }
   buildCounterComputationTopology--;
@@ -474,14 +474,14 @@
   buildCounterCounterUpdate--;
 }
 
-buildUnnamed3244() {
+buildUnnamed3259() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3244(core.Map<core.String, core.String> o) {
+checkUnnamed3259(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -496,7 +496,7 @@
     o.gcsPath = "foo";
     o.jobName = "foo";
     o.location = "foo";
-    o.parameters = buildUnnamed3244();
+    o.parameters = buildUnnamed3259();
   }
   buildCounterCreateJobFromTemplateRequest--;
   return o;
@@ -509,7 +509,7 @@
     unittest.expect(o.gcsPath, unittest.equals('foo'));
     unittest.expect(o.jobName, unittest.equals('foo'));
     unittest.expect(o.location, unittest.equals('foo'));
-    checkUnnamed3244(o.parameters);
+    checkUnnamed3259(o.parameters);
   }
   buildCounterCreateJobFromTemplateRequest--;
 }
@@ -533,14 +533,14 @@
   buildCounterCustomSourceLocation--;
 }
 
-buildUnnamed3245() {
+buildUnnamed3260() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3245(core.List<core.String> o) {
+checkUnnamed3260(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -551,7 +551,7 @@
   var o = new api.DataDiskAssignment();
   buildCounterDataDiskAssignment++;
   if (buildCounterDataDiskAssignment < 3) {
-    o.dataDisks = buildUnnamed3245();
+    o.dataDisks = buildUnnamed3260();
     o.vmInstance = "foo";
   }
   buildCounterDataDiskAssignment--;
@@ -561,7 +561,7 @@
 checkDataDiskAssignment(api.DataDiskAssignment o) {
   buildCounterDataDiskAssignment++;
   if (buildCounterDataDiskAssignment < 3) {
-    checkUnnamed3245(o.dataDisks);
+    checkUnnamed3260(o.dataDisks);
     unittest.expect(o.vmInstance, unittest.equals('foo'));
   }
   buildCounterDataDiskAssignment--;
@@ -702,20 +702,20 @@
   buildCounterDynamicSourceSplit--;
 }
 
-buildUnnamed3246() {
+buildUnnamed3261() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3246(core.List<core.String> o) {
+checkUnnamed3261(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3247() {
+buildUnnamed3262() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -730,7 +730,7 @@
   return o;
 }
 
-checkUnnamed3247(core.Map<core.String, core.Object> o) {
+checkUnnamed3262(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted2 = (o["x"]) as core.Map;
   unittest.expect(casted2, unittest.hasLength(3));
@@ -744,7 +744,7 @@
   unittest.expect(casted3["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3248() {
+buildUnnamed3263() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -759,7 +759,7 @@
   return o;
 }
 
-checkUnnamed3248(core.Map<core.String, core.Object> o) {
+checkUnnamed3263(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted4 = (o["x"]) as core.Map;
   unittest.expect(casted4, unittest.hasLength(3));
@@ -773,7 +773,7 @@
   unittest.expect(casted5["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3249() {
+buildUnnamed3264() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -788,7 +788,7 @@
   return o;
 }
 
-checkUnnamed3249(core.Map<core.String, core.Object> o) {
+checkUnnamed3264(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted6 = (o["x"]) as core.Map;
   unittest.expect(casted6, unittest.hasLength(3));
@@ -802,7 +802,7 @@
   unittest.expect(casted7["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3250() {
+buildUnnamed3265() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -817,7 +817,7 @@
   return o;
 }
 
-checkUnnamed3250(core.Map<core.String, core.Object> o) {
+checkUnnamed3265(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted8 = (o["x"]) as core.Map;
   unittest.expect(casted8, unittest.hasLength(3));
@@ -831,14 +831,14 @@
   unittest.expect(casted9["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3251() {
+buildUnnamed3266() {
   var o = new core.List<api.WorkerPool>();
   o.add(buildWorkerPool());
   o.add(buildWorkerPool());
   return o;
 }
 
-checkUnnamed3251(core.List<api.WorkerPool> o) {
+checkUnnamed3266(core.List<api.WorkerPool> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWorkerPool(o[0]);
   checkWorkerPool(o[1]);
@@ -851,14 +851,14 @@
   if (buildCounterEnvironment < 3) {
     o.clusterManagerApiService = "foo";
     o.dataset = "foo";
-    o.experiments = buildUnnamed3246();
-    o.internalExperiments = buildUnnamed3247();
-    o.sdkPipelineOptions = buildUnnamed3248();
+    o.experiments = buildUnnamed3261();
+    o.internalExperiments = buildUnnamed3262();
+    o.sdkPipelineOptions = buildUnnamed3263();
     o.serviceAccountEmail = "foo";
     o.tempStoragePrefix = "foo";
-    o.userAgent = buildUnnamed3249();
-    o.version = buildUnnamed3250();
-    o.workerPools = buildUnnamed3251();
+    o.userAgent = buildUnnamed3264();
+    o.version = buildUnnamed3265();
+    o.workerPools = buildUnnamed3266();
   }
   buildCounterEnvironment--;
   return o;
@@ -869,14 +869,14 @@
   if (buildCounterEnvironment < 3) {
     unittest.expect(o.clusterManagerApiService, unittest.equals('foo'));
     unittest.expect(o.dataset, unittest.equals('foo'));
-    checkUnnamed3246(o.experiments);
-    checkUnnamed3247(o.internalExperiments);
-    checkUnnamed3248(o.sdkPipelineOptions);
+    checkUnnamed3261(o.experiments);
+    checkUnnamed3262(o.internalExperiments);
+    checkUnnamed3263(o.sdkPipelineOptions);
     unittest.expect(o.serviceAccountEmail, unittest.equals('foo'));
     unittest.expect(o.tempStoragePrefix, unittest.equals('foo'));
-    checkUnnamed3249(o.userAgent);
-    checkUnnamed3250(o.version);
-    checkUnnamed3251(o.workerPools);
+    checkUnnamed3264(o.userAgent);
+    checkUnnamed3265(o.version);
+    checkUnnamed3266(o.workerPools);
   }
   buildCounterEnvironment--;
 }
@@ -904,53 +904,53 @@
   buildCounterExecutionStageState--;
 }
 
-buildUnnamed3252() {
+buildUnnamed3267() {
   var o = new core.List<api.ComponentSource>();
   o.add(buildComponentSource());
   o.add(buildComponentSource());
   return o;
 }
 
-checkUnnamed3252(core.List<api.ComponentSource> o) {
+checkUnnamed3267(core.List<api.ComponentSource> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkComponentSource(o[0]);
   checkComponentSource(o[1]);
 }
 
-buildUnnamed3253() {
+buildUnnamed3268() {
   var o = new core.List<api.ComponentTransform>();
   o.add(buildComponentTransform());
   o.add(buildComponentTransform());
   return o;
 }
 
-checkUnnamed3253(core.List<api.ComponentTransform> o) {
+checkUnnamed3268(core.List<api.ComponentTransform> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkComponentTransform(o[0]);
   checkComponentTransform(o[1]);
 }
 
-buildUnnamed3254() {
+buildUnnamed3269() {
   var o = new core.List<api.StageSource>();
   o.add(buildStageSource());
   o.add(buildStageSource());
   return o;
 }
 
-checkUnnamed3254(core.List<api.StageSource> o) {
+checkUnnamed3269(core.List<api.StageSource> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStageSource(o[0]);
   checkStageSource(o[1]);
 }
 
-buildUnnamed3255() {
+buildUnnamed3270() {
   var o = new core.List<api.StageSource>();
   o.add(buildStageSource());
   o.add(buildStageSource());
   return o;
 }
 
-checkUnnamed3255(core.List<api.StageSource> o) {
+checkUnnamed3270(core.List<api.StageSource> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStageSource(o[0]);
   checkStageSource(o[1]);
@@ -961,13 +961,13 @@
   var o = new api.ExecutionStageSummary();
   buildCounterExecutionStageSummary++;
   if (buildCounterExecutionStageSummary < 3) {
-    o.componentSource = buildUnnamed3252();
-    o.componentTransform = buildUnnamed3253();
+    o.componentSource = buildUnnamed3267();
+    o.componentTransform = buildUnnamed3268();
     o.id = "foo";
-    o.inputSource = buildUnnamed3254();
+    o.inputSource = buildUnnamed3269();
     o.kind = "foo";
     o.name = "foo";
-    o.outputSource = buildUnnamed3255();
+    o.outputSource = buildUnnamed3270();
   }
   buildCounterExecutionStageSummary--;
   return o;
@@ -976,13 +976,13 @@
 checkExecutionStageSummary(api.ExecutionStageSummary o) {
   buildCounterExecutionStageSummary++;
   if (buildCounterExecutionStageSummary < 3) {
-    checkUnnamed3252(o.componentSource);
-    checkUnnamed3253(o.componentTransform);
+    checkUnnamed3267(o.componentSource);
+    checkUnnamed3268(o.componentTransform);
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed3254(o.inputSource);
+    checkUnnamed3269(o.inputSource);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3255(o.outputSource);
+    checkUnnamed3270(o.outputSource);
   }
   buildCounterExecutionStageSummary--;
 }
@@ -1006,14 +1006,14 @@
   buildCounterFailedLocation--;
 }
 
-buildUnnamed3256() {
+buildUnnamed3271() {
   var o = new core.List<api.InstructionInput>();
   o.add(buildInstructionInput());
   o.add(buildInstructionInput());
   return o;
 }
 
-checkUnnamed3256(core.List<api.InstructionInput> o) {
+checkUnnamed3271(core.List<api.InstructionInput> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstructionInput(o[0]);
   checkInstructionInput(o[1]);
@@ -1024,7 +1024,7 @@
   var o = new api.FlattenInstruction();
   buildCounterFlattenInstruction++;
   if (buildCounterFlattenInstruction < 3) {
-    o.inputs = buildUnnamed3256();
+    o.inputs = buildUnnamed3271();
   }
   buildCounterFlattenInstruction--;
   return o;
@@ -1033,19 +1033,19 @@
 checkFlattenInstruction(api.FlattenInstruction o) {
   buildCounterFlattenInstruction++;
   if (buildCounterFlattenInstruction < 3) {
-    checkUnnamed3256(o.inputs);
+    checkUnnamed3271(o.inputs);
   }
   buildCounterFlattenInstruction--;
 }
 
-buildUnnamed3257() {
+buildUnnamed3272() {
   var o = new core.List<core.double>();
   o.add(42.0);
   o.add(42.0);
   return o;
 }
 
-checkUnnamed3257(core.List<core.double> o) {
+checkUnnamed3272(core.List<core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42.0));
   unittest.expect(o[1], unittest.equals(42.0));
@@ -1056,7 +1056,7 @@
   var o = new api.FloatingPointList();
   buildCounterFloatingPointList++;
   if (buildCounterFloatingPointList < 3) {
-    o.elements = buildUnnamed3257();
+    o.elements = buildUnnamed3272();
   }
   buildCounterFloatingPointList--;
   return o;
@@ -1065,7 +1065,7 @@
 checkFloatingPointList(api.FloatingPointList o) {
   buildCounterFloatingPointList++;
   if (buildCounterFloatingPointList < 3) {
-    checkUnnamed3257(o.elements);
+    checkUnnamed3272(o.elements);
   }
   buildCounterFloatingPointList--;
 }
@@ -1154,14 +1154,14 @@
   buildCounterGetTemplateResponse--;
 }
 
-buildUnnamed3258() {
+buildUnnamed3273() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3258(core.List<core.String> o) {
+checkUnnamed3273(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1172,7 +1172,7 @@
   var o = new api.Histogram();
   buildCounterHistogram++;
   if (buildCounterHistogram < 3) {
-    o.bucketCounts = buildUnnamed3258();
+    o.bucketCounts = buildUnnamed3273();
     o.firstBucketOffset = 42;
   }
   buildCounterHistogram--;
@@ -1182,7 +1182,7 @@
 checkHistogram(api.Histogram o) {
   buildCounterHistogram++;
   if (buildCounterHistogram < 3) {
-    checkUnnamed3258(o.bucketCounts);
+    checkUnnamed3273(o.bucketCounts);
     unittest.expect(o.firstBucketOffset, unittest.equals(42));
   }
   buildCounterHistogram--;
@@ -1209,7 +1209,7 @@
   buildCounterInstructionInput--;
 }
 
-buildUnnamed3259() {
+buildUnnamed3274() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1224,7 +1224,7 @@
   return o;
 }
 
-checkUnnamed3259(core.Map<core.String, core.Object> o) {
+checkUnnamed3274(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted10 = (o["x"]) as core.Map;
   unittest.expect(casted10, unittest.hasLength(3));
@@ -1243,7 +1243,7 @@
   var o = new api.InstructionOutput();
   buildCounterInstructionOutput++;
   if (buildCounterInstructionOutput < 3) {
-    o.codec = buildUnnamed3259();
+    o.codec = buildUnnamed3274();
     o.name = "foo";
     o.onlyCountKeyBytes = true;
     o.onlyCountValueBytes = true;
@@ -1257,7 +1257,7 @@
 checkInstructionOutput(api.InstructionOutput o) {
   buildCounterInstructionOutput++;
   if (buildCounterInstructionOutput < 3) {
-    checkUnnamed3259(o.codec);
+    checkUnnamed3274(o.codec);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.onlyCountKeyBytes, unittest.isTrue);
     unittest.expect(o.onlyCountValueBytes, unittest.isTrue);
@@ -1267,14 +1267,14 @@
   buildCounterInstructionOutput--;
 }
 
-buildUnnamed3260() {
+buildUnnamed3275() {
   var o = new core.List<api.SplitInt64>();
   o.add(buildSplitInt64());
   o.add(buildSplitInt64());
   return o;
 }
 
-checkUnnamed3260(core.List<api.SplitInt64> o) {
+checkUnnamed3275(core.List<api.SplitInt64> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSplitInt64(o[0]);
   checkSplitInt64(o[1]);
@@ -1285,7 +1285,7 @@
   var o = new api.IntegerList();
   buildCounterIntegerList++;
   if (buildCounterIntegerList < 3) {
-    o.elements = buildUnnamed3260();
+    o.elements = buildUnnamed3275();
   }
   buildCounterIntegerList--;
   return o;
@@ -1294,7 +1294,7 @@
 checkIntegerList(api.IntegerList o) {
   buildCounterIntegerList++;
   if (buildCounterIntegerList < 3) {
-    checkUnnamed3260(o.elements);
+    checkUnnamed3275(o.elements);
   }
   buildCounterIntegerList--;
 }
@@ -1320,66 +1320,66 @@
   buildCounterIntegerMean--;
 }
 
-buildUnnamed3261() {
+buildUnnamed3276() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3261(core.Map<core.String, core.String> o) {
+checkUnnamed3276(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed3262() {
+buildUnnamed3277() {
   var o = new core.List<api.ExecutionStageState>();
   o.add(buildExecutionStageState());
   o.add(buildExecutionStageState());
   return o;
 }
 
-checkUnnamed3262(core.List<api.ExecutionStageState> o) {
+checkUnnamed3277(core.List<api.ExecutionStageState> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkExecutionStageState(o[0]);
   checkExecutionStageState(o[1]);
 }
 
-buildUnnamed3263() {
+buildUnnamed3278() {
   var o = new core.List<api.Step>();
   o.add(buildStep());
   o.add(buildStep());
   return o;
 }
 
-checkUnnamed3263(core.List<api.Step> o) {
+checkUnnamed3278(core.List<api.Step> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStep(o[0]);
   checkStep(o[1]);
 }
 
-buildUnnamed3264() {
+buildUnnamed3279() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3264(core.List<core.String> o) {
+checkUnnamed3279(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3265() {
+buildUnnamed3280() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3265(core.Map<core.String, core.String> o) {
+checkUnnamed3280(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1397,7 +1397,7 @@
     o.environment = buildEnvironment();
     o.executionInfo = buildJobExecutionInfo();
     o.id = "foo";
-    o.labels = buildUnnamed3261();
+    o.labels = buildUnnamed3276();
     o.location = "foo";
     o.name = "foo";
     o.pipelineDescription = buildPipelineDescription();
@@ -1405,10 +1405,10 @@
     o.replaceJobId = "foo";
     o.replacedByJobId = "foo";
     o.requestedState = "foo";
-    o.stageStates = buildUnnamed3262();
-    o.steps = buildUnnamed3263();
-    o.tempFiles = buildUnnamed3264();
-    o.transformNameMapping = buildUnnamed3265();
+    o.stageStates = buildUnnamed3277();
+    o.steps = buildUnnamed3278();
+    o.tempFiles = buildUnnamed3279();
+    o.transformNameMapping = buildUnnamed3280();
     o.type = "foo";
   }
   buildCounterJob--;
@@ -1425,7 +1425,7 @@
     checkEnvironment(o.environment);
     checkJobExecutionInfo(o.executionInfo);
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed3261(o.labels);
+    checkUnnamed3276(o.labels);
     unittest.expect(o.location, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     checkPipelineDescription(o.pipelineDescription);
@@ -1433,23 +1433,23 @@
     unittest.expect(o.replaceJobId, unittest.equals('foo'));
     unittest.expect(o.replacedByJobId, unittest.equals('foo'));
     unittest.expect(o.requestedState, unittest.equals('foo'));
-    checkUnnamed3262(o.stageStates);
-    checkUnnamed3263(o.steps);
-    checkUnnamed3264(o.tempFiles);
-    checkUnnamed3265(o.transformNameMapping);
+    checkUnnamed3277(o.stageStates);
+    checkUnnamed3278(o.steps);
+    checkUnnamed3279(o.tempFiles);
+    checkUnnamed3280(o.transformNameMapping);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterJob--;
 }
 
-buildUnnamed3266() {
+buildUnnamed3281() {
   var o = new core.Map<core.String, api.JobExecutionStageInfo>();
   o["x"] = buildJobExecutionStageInfo();
   o["y"] = buildJobExecutionStageInfo();
   return o;
 }
 
-checkUnnamed3266(core.Map<core.String, api.JobExecutionStageInfo> o) {
+checkUnnamed3281(core.Map<core.String, api.JobExecutionStageInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJobExecutionStageInfo(o["x"]);
   checkJobExecutionStageInfo(o["y"]);
@@ -1460,7 +1460,7 @@
   var o = new api.JobExecutionInfo();
   buildCounterJobExecutionInfo++;
   if (buildCounterJobExecutionInfo < 3) {
-    o.stages = buildUnnamed3266();
+    o.stages = buildUnnamed3281();
   }
   buildCounterJobExecutionInfo--;
   return o;
@@ -1469,19 +1469,19 @@
 checkJobExecutionInfo(api.JobExecutionInfo o) {
   buildCounterJobExecutionInfo++;
   if (buildCounterJobExecutionInfo < 3) {
-    checkUnnamed3266(o.stages);
+    checkUnnamed3281(o.stages);
   }
   buildCounterJobExecutionInfo--;
 }
 
-buildUnnamed3267() {
+buildUnnamed3282() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3267(core.List<core.String> o) {
+checkUnnamed3282(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1492,7 +1492,7 @@
   var o = new api.JobExecutionStageInfo();
   buildCounterJobExecutionStageInfo++;
   if (buildCounterJobExecutionStageInfo < 3) {
-    o.stepName = buildUnnamed3267();
+    o.stepName = buildUnnamed3282();
   }
   buildCounterJobExecutionStageInfo--;
   return o;
@@ -1501,7 +1501,7 @@
 checkJobExecutionStageInfo(api.JobExecutionStageInfo o) {
   buildCounterJobExecutionStageInfo++;
   if (buildCounterJobExecutionStageInfo < 3) {
-    checkUnnamed3267(o.stepName);
+    checkUnnamed3282(o.stepName);
   }
   buildCounterJobExecutionStageInfo--;
 }
@@ -1531,14 +1531,14 @@
   buildCounterJobMessage--;
 }
 
-buildUnnamed3268() {
+buildUnnamed3283() {
   var o = new core.List<api.MetricUpdate>();
   o.add(buildMetricUpdate());
   o.add(buildMetricUpdate());
   return o;
 }
 
-checkUnnamed3268(core.List<api.MetricUpdate> o) {
+checkUnnamed3283(core.List<api.MetricUpdate> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricUpdate(o[0]);
   checkMetricUpdate(o[1]);
@@ -1550,7 +1550,7 @@
   buildCounterJobMetrics++;
   if (buildCounterJobMetrics < 3) {
     o.metricTime = "foo";
-    o.metrics = buildUnnamed3268();
+    o.metrics = buildUnnamed3283();
   }
   buildCounterJobMetrics--;
   return o;
@@ -1560,7 +1560,7 @@
   buildCounterJobMetrics++;
   if (buildCounterJobMetrics < 3) {
     unittest.expect(o.metricTime, unittest.equals('foo'));
-    checkUnnamed3268(o.metrics);
+    checkUnnamed3283(o.metrics);
   }
   buildCounterJobMetrics--;
 }
@@ -1615,14 +1615,14 @@
   buildCounterKeyRangeLocation--;
 }
 
-buildUnnamed3269() {
+buildUnnamed3284() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3269(core.Map<core.String, core.String> o) {
+checkUnnamed3284(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1635,7 +1635,7 @@
   if (buildCounterLaunchTemplateParameters < 3) {
     o.environment = buildRuntimeEnvironment();
     o.jobName = "foo";
-    o.parameters = buildUnnamed3269();
+    o.parameters = buildUnnamed3284();
   }
   buildCounterLaunchTemplateParameters--;
   return o;
@@ -1646,7 +1646,7 @@
   if (buildCounterLaunchTemplateParameters < 3) {
     checkRuntimeEnvironment(o.environment);
     unittest.expect(o.jobName, unittest.equals('foo'));
-    checkUnnamed3269(o.parameters);
+    checkUnnamed3284(o.parameters);
   }
   buildCounterLaunchTemplateParameters--;
 }
@@ -1670,27 +1670,27 @@
   buildCounterLaunchTemplateResponse--;
 }
 
-buildUnnamed3270() {
+buildUnnamed3285() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3270(core.List<core.String> o) {
+checkUnnamed3285(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3271() {
+buildUnnamed3286() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3271(core.List<core.String> o) {
+checkUnnamed3286(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1704,8 +1704,8 @@
     o.currentWorkerTime = "foo";
     o.location = "foo";
     o.requestedLeaseDuration = "foo";
-    o.workItemTypes = buildUnnamed3270();
-    o.workerCapabilities = buildUnnamed3271();
+    o.workItemTypes = buildUnnamed3285();
+    o.workerCapabilities = buildUnnamed3286();
     o.workerId = "foo";
   }
   buildCounterLeaseWorkItemRequest--;
@@ -1718,21 +1718,21 @@
     unittest.expect(o.currentWorkerTime, unittest.equals('foo'));
     unittest.expect(o.location, unittest.equals('foo'));
     unittest.expect(o.requestedLeaseDuration, unittest.equals('foo'));
-    checkUnnamed3270(o.workItemTypes);
-    checkUnnamed3271(o.workerCapabilities);
+    checkUnnamed3285(o.workItemTypes);
+    checkUnnamed3286(o.workerCapabilities);
     unittest.expect(o.workerId, unittest.equals('foo'));
   }
   buildCounterLeaseWorkItemRequest--;
 }
 
-buildUnnamed3272() {
+buildUnnamed3287() {
   var o = new core.List<api.WorkItem>();
   o.add(buildWorkItem());
   o.add(buildWorkItem());
   return o;
 }
 
-checkUnnamed3272(core.List<api.WorkItem> o) {
+checkUnnamed3287(core.List<api.WorkItem> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWorkItem(o[0]);
   checkWorkItem(o[1]);
@@ -1743,7 +1743,7 @@
   var o = new api.LeaseWorkItemResponse();
   buildCounterLeaseWorkItemResponse++;
   if (buildCounterLeaseWorkItemResponse < 3) {
-    o.workItems = buildUnnamed3272();
+    o.workItems = buildUnnamed3287();
   }
   buildCounterLeaseWorkItemResponse--;
   return o;
@@ -1752,32 +1752,32 @@
 checkLeaseWorkItemResponse(api.LeaseWorkItemResponse o) {
   buildCounterLeaseWorkItemResponse++;
   if (buildCounterLeaseWorkItemResponse < 3) {
-    checkUnnamed3272(o.workItems);
+    checkUnnamed3287(o.workItems);
   }
   buildCounterLeaseWorkItemResponse--;
 }
 
-buildUnnamed3273() {
+buildUnnamed3288() {
   var o = new core.List<api.AutoscalingEvent>();
   o.add(buildAutoscalingEvent());
   o.add(buildAutoscalingEvent());
   return o;
 }
 
-checkUnnamed3273(core.List<api.AutoscalingEvent> o) {
+checkUnnamed3288(core.List<api.AutoscalingEvent> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAutoscalingEvent(o[0]);
   checkAutoscalingEvent(o[1]);
 }
 
-buildUnnamed3274() {
+buildUnnamed3289() {
   var o = new core.List<api.JobMessage>();
   o.add(buildJobMessage());
   o.add(buildJobMessage());
   return o;
 }
 
-checkUnnamed3274(core.List<api.JobMessage> o) {
+checkUnnamed3289(core.List<api.JobMessage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJobMessage(o[0]);
   checkJobMessage(o[1]);
@@ -1788,8 +1788,8 @@
   var o = new api.ListJobMessagesResponse();
   buildCounterListJobMessagesResponse++;
   if (buildCounterListJobMessagesResponse < 3) {
-    o.autoscalingEvents = buildUnnamed3273();
-    o.jobMessages = buildUnnamed3274();
+    o.autoscalingEvents = buildUnnamed3288();
+    o.jobMessages = buildUnnamed3289();
     o.nextPageToken = "foo";
   }
   buildCounterListJobMessagesResponse--;
@@ -1799,34 +1799,34 @@
 checkListJobMessagesResponse(api.ListJobMessagesResponse o) {
   buildCounterListJobMessagesResponse++;
   if (buildCounterListJobMessagesResponse < 3) {
-    checkUnnamed3273(o.autoscalingEvents);
-    checkUnnamed3274(o.jobMessages);
+    checkUnnamed3288(o.autoscalingEvents);
+    checkUnnamed3289(o.jobMessages);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListJobMessagesResponse--;
 }
 
-buildUnnamed3275() {
+buildUnnamed3290() {
   var o = new core.List<api.FailedLocation>();
   o.add(buildFailedLocation());
   o.add(buildFailedLocation());
   return o;
 }
 
-checkUnnamed3275(core.List<api.FailedLocation> o) {
+checkUnnamed3290(core.List<api.FailedLocation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFailedLocation(o[0]);
   checkFailedLocation(o[1]);
 }
 
-buildUnnamed3276() {
+buildUnnamed3291() {
   var o = new core.List<api.Job>();
   o.add(buildJob());
   o.add(buildJob());
   return o;
 }
 
-checkUnnamed3276(core.List<api.Job> o) {
+checkUnnamed3291(core.List<api.Job> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJob(o[0]);
   checkJob(o[1]);
@@ -1837,8 +1837,8 @@
   var o = new api.ListJobsResponse();
   buildCounterListJobsResponse++;
   if (buildCounterListJobsResponse < 3) {
-    o.failedLocation = buildUnnamed3275();
-    o.jobs = buildUnnamed3276();
+    o.failedLocation = buildUnnamed3290();
+    o.jobs = buildUnnamed3291();
     o.nextPageToken = "foo";
   }
   buildCounterListJobsResponse--;
@@ -1848,21 +1848,21 @@
 checkListJobsResponse(api.ListJobsResponse o) {
   buildCounterListJobsResponse++;
   if (buildCounterListJobsResponse < 3) {
-    checkUnnamed3275(o.failedLocation);
-    checkUnnamed3276(o.jobs);
+    checkUnnamed3290(o.failedLocation);
+    checkUnnamed3291(o.jobs);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListJobsResponse--;
 }
 
-buildUnnamed3277() {
+buildUnnamed3292() {
   var o = new core.List<api.ParallelInstruction>();
   o.add(buildParallelInstruction());
   o.add(buildParallelInstruction());
   return o;
 }
 
-checkUnnamed3277(core.List<api.ParallelInstruction> o) {
+checkUnnamed3292(core.List<api.ParallelInstruction> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkParallelInstruction(o[0]);
   checkParallelInstruction(o[1]);
@@ -1873,7 +1873,7 @@
   var o = new api.MapTask();
   buildCounterMapTask++;
   if (buildCounterMapTask < 3) {
-    o.instructions = buildUnnamed3277();
+    o.instructions = buildUnnamed3292();
     o.stageName = "foo";
     o.systemName = "foo";
   }
@@ -1884,7 +1884,7 @@
 checkMapTask(api.MapTask o) {
   buildCounterMapTask++;
   if (buildCounterMapTask < 3) {
-    checkUnnamed3277(o.instructions);
+    checkUnnamed3292(o.instructions);
     unittest.expect(o.stageName, unittest.equals('foo'));
     unittest.expect(o.systemName, unittest.equals('foo'));
   }
@@ -1912,14 +1912,14 @@
   buildCounterMetricShortId--;
 }
 
-buildUnnamed3278() {
+buildUnnamed3293() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3278(core.Map<core.String, core.String> o) {
+checkUnnamed3293(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1930,7 +1930,7 @@
   var o = new api.MetricStructuredName();
   buildCounterMetricStructuredName++;
   if (buildCounterMetricStructuredName < 3) {
-    o.context = buildUnnamed3278();
+    o.context = buildUnnamed3293();
     o.name = "foo";
     o.origin = "foo";
   }
@@ -1941,7 +1941,7 @@
 checkMetricStructuredName(api.MetricStructuredName o) {
   buildCounterMetricStructuredName++;
   if (buildCounterMetricStructuredName < 3) {
-    checkUnnamed3278(o.context);
+    checkUnnamed3293(o.context);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.origin, unittest.equals('foo'));
   }
@@ -2113,33 +2113,33 @@
   buildCounterPackage--;
 }
 
-buildUnnamed3279() {
+buildUnnamed3294() {
   var o = new core.List<api.MultiOutputInfo>();
   o.add(buildMultiOutputInfo());
   o.add(buildMultiOutputInfo());
   return o;
 }
 
-checkUnnamed3279(core.List<api.MultiOutputInfo> o) {
+checkUnnamed3294(core.List<api.MultiOutputInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMultiOutputInfo(o[0]);
   checkMultiOutputInfo(o[1]);
 }
 
-buildUnnamed3280() {
+buildUnnamed3295() {
   var o = new core.List<api.SideInputInfo>();
   o.add(buildSideInputInfo());
   o.add(buildSideInputInfo());
   return o;
 }
 
-checkUnnamed3280(core.List<api.SideInputInfo> o) {
+checkUnnamed3295(core.List<api.SideInputInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSideInputInfo(o[0]);
   checkSideInputInfo(o[1]);
 }
 
-buildUnnamed3281() {
+buildUnnamed3296() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -2154,7 +2154,7 @@
   return o;
 }
 
-checkUnnamed3281(core.Map<core.String, core.Object> o) {
+checkUnnamed3296(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted18 = (o["x"]) as core.Map;
   unittest.expect(casted18, unittest.hasLength(3));
@@ -2174,10 +2174,10 @@
   buildCounterParDoInstruction++;
   if (buildCounterParDoInstruction < 3) {
     o.input = buildInstructionInput();
-    o.multiOutputInfos = buildUnnamed3279();
+    o.multiOutputInfos = buildUnnamed3294();
     o.numOutputs = 42;
-    o.sideInputs = buildUnnamed3280();
-    o.userFn = buildUnnamed3281();
+    o.sideInputs = buildUnnamed3295();
+    o.userFn = buildUnnamed3296();
   }
   buildCounterParDoInstruction--;
   return o;
@@ -2187,22 +2187,22 @@
   buildCounterParDoInstruction++;
   if (buildCounterParDoInstruction < 3) {
     checkInstructionInput(o.input);
-    checkUnnamed3279(o.multiOutputInfos);
+    checkUnnamed3294(o.multiOutputInfos);
     unittest.expect(o.numOutputs, unittest.equals(42));
-    checkUnnamed3280(o.sideInputs);
-    checkUnnamed3281(o.userFn);
+    checkUnnamed3295(o.sideInputs);
+    checkUnnamed3296(o.userFn);
   }
   buildCounterParDoInstruction--;
 }
 
-buildUnnamed3282() {
+buildUnnamed3297() {
   var o = new core.List<api.InstructionOutput>();
   o.add(buildInstructionOutput());
   o.add(buildInstructionOutput());
   return o;
 }
 
-checkUnnamed3282(core.List<api.InstructionOutput> o) {
+checkUnnamed3297(core.List<api.InstructionOutput> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstructionOutput(o[0]);
   checkInstructionOutput(o[1]);
@@ -2216,7 +2216,7 @@
     o.flatten = buildFlattenInstruction();
     o.name = "foo";
     o.originalName = "foo";
-    o.outputs = buildUnnamed3282();
+    o.outputs = buildUnnamed3297();
     o.parDo = buildParDoInstruction();
     o.partialGroupByKey = buildPartialGroupByKeyInstruction();
     o.read = buildReadInstruction();
@@ -2233,7 +2233,7 @@
     checkFlattenInstruction(o.flatten);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.originalName, unittest.equals('foo'));
-    checkUnnamed3282(o.outputs);
+    checkUnnamed3297(o.outputs);
     checkParDoInstruction(o.parDo);
     checkPartialGroupByKeyInstruction(o.partialGroupByKey);
     checkReadInstruction(o.read);
@@ -2272,14 +2272,14 @@
   buildCounterParameter--;
 }
 
-buildUnnamed3283() {
+buildUnnamed3298() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3283(core.List<core.String> o) {
+checkUnnamed3298(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -2294,7 +2294,7 @@
     o.isOptional = true;
     o.label = "foo";
     o.name = "foo";
-    o.regexes = buildUnnamed3283();
+    o.regexes = buildUnnamed3298();
   }
   buildCounterParameterMetadata--;
   return o;
@@ -2307,12 +2307,12 @@
     unittest.expect(o.isOptional, unittest.isTrue);
     unittest.expect(o.label, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3283(o.regexes);
+    checkUnnamed3298(o.regexes);
   }
   buildCounterParameterMetadata--;
 }
 
-buildUnnamed3284() {
+buildUnnamed3299() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -2327,7 +2327,7 @@
   return o;
 }
 
-checkUnnamed3284(core.Map<core.String, core.Object> o) {
+checkUnnamed3299(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted21 = (o["x"]) as core.Map;
   unittest.expect(casted21, unittest.hasLength(3));
@@ -2341,20 +2341,20 @@
   unittest.expect(casted22["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3285() {
+buildUnnamed3300() {
   var o = new core.List<api.SideInputInfo>();
   o.add(buildSideInputInfo());
   o.add(buildSideInputInfo());
   return o;
 }
 
-checkUnnamed3285(core.List<api.SideInputInfo> o) {
+checkUnnamed3300(core.List<api.SideInputInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSideInputInfo(o[0]);
   checkSideInputInfo(o[1]);
 }
 
-buildUnnamed3286() {
+buildUnnamed3301() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -2369,7 +2369,7 @@
   return o;
 }
 
-checkUnnamed3286(core.Map<core.String, core.Object> o) {
+checkUnnamed3301(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted23 = (o["x"]) as core.Map;
   unittest.expect(casted23, unittest.hasLength(3));
@@ -2389,11 +2389,11 @@
   buildCounterPartialGroupByKeyInstruction++;
   if (buildCounterPartialGroupByKeyInstruction < 3) {
     o.input = buildInstructionInput();
-    o.inputElementCodec = buildUnnamed3284();
+    o.inputElementCodec = buildUnnamed3299();
     o.originalCombineValuesInputStoreName = "foo";
     o.originalCombineValuesStepName = "foo";
-    o.sideInputs = buildUnnamed3285();
-    o.valueCombiningFn = buildUnnamed3286();
+    o.sideInputs = buildUnnamed3300();
+    o.valueCombiningFn = buildUnnamed3301();
   }
   buildCounterPartialGroupByKeyInstruction--;
   return o;
@@ -2403,50 +2403,50 @@
   buildCounterPartialGroupByKeyInstruction++;
   if (buildCounterPartialGroupByKeyInstruction < 3) {
     checkInstructionInput(o.input);
-    checkUnnamed3284(o.inputElementCodec);
+    checkUnnamed3299(o.inputElementCodec);
     unittest.expect(
         o.originalCombineValuesInputStoreName, unittest.equals('foo'));
     unittest.expect(o.originalCombineValuesStepName, unittest.equals('foo'));
-    checkUnnamed3285(o.sideInputs);
-    checkUnnamed3286(o.valueCombiningFn);
+    checkUnnamed3300(o.sideInputs);
+    checkUnnamed3301(o.valueCombiningFn);
   }
   buildCounterPartialGroupByKeyInstruction--;
 }
 
-buildUnnamed3287() {
+buildUnnamed3302() {
   var o = new core.List<api.DisplayData>();
   o.add(buildDisplayData());
   o.add(buildDisplayData());
   return o;
 }
 
-checkUnnamed3287(core.List<api.DisplayData> o) {
+checkUnnamed3302(core.List<api.DisplayData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDisplayData(o[0]);
   checkDisplayData(o[1]);
 }
 
-buildUnnamed3288() {
+buildUnnamed3303() {
   var o = new core.List<api.ExecutionStageSummary>();
   o.add(buildExecutionStageSummary());
   o.add(buildExecutionStageSummary());
   return o;
 }
 
-checkUnnamed3288(core.List<api.ExecutionStageSummary> o) {
+checkUnnamed3303(core.List<api.ExecutionStageSummary> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkExecutionStageSummary(o[0]);
   checkExecutionStageSummary(o[1]);
 }
 
-buildUnnamed3289() {
+buildUnnamed3304() {
   var o = new core.List<api.TransformSummary>();
   o.add(buildTransformSummary());
   o.add(buildTransformSummary());
   return o;
 }
 
-checkUnnamed3289(core.List<api.TransformSummary> o) {
+checkUnnamed3304(core.List<api.TransformSummary> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTransformSummary(o[0]);
   checkTransformSummary(o[1]);
@@ -2457,9 +2457,9 @@
   var o = new api.PipelineDescription();
   buildCounterPipelineDescription++;
   if (buildCounterPipelineDescription < 3) {
-    o.displayData = buildUnnamed3287();
-    o.executionPipelineStage = buildUnnamed3288();
-    o.originalPipelineTransform = buildUnnamed3289();
+    o.displayData = buildUnnamed3302();
+    o.executionPipelineStage = buildUnnamed3303();
+    o.originalPipelineTransform = buildUnnamed3304();
   }
   buildCounterPipelineDescription--;
   return o;
@@ -2468,9 +2468,9 @@
 checkPipelineDescription(api.PipelineDescription o) {
   buildCounterPipelineDescription++;
   if (buildCounterPipelineDescription < 3) {
-    checkUnnamed3287(o.displayData);
-    checkUnnamed3288(o.executionPipelineStage);
-    checkUnnamed3289(o.originalPipelineTransform);
+    checkUnnamed3302(o.displayData);
+    checkUnnamed3303(o.executionPipelineStage);
+    checkUnnamed3304(o.originalPipelineTransform);
   }
   buildCounterPipelineDescription--;
 }
@@ -2554,14 +2554,14 @@
   buildCounterReadInstruction--;
 }
 
-buildUnnamed3290() {
+buildUnnamed3305() {
   var o = new core.List<api.WorkItemStatus>();
   o.add(buildWorkItemStatus());
   o.add(buildWorkItemStatus());
   return o;
 }
 
-checkUnnamed3290(core.List<api.WorkItemStatus> o) {
+checkUnnamed3305(core.List<api.WorkItemStatus> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWorkItemStatus(o[0]);
   checkWorkItemStatus(o[1]);
@@ -2574,7 +2574,7 @@
   if (buildCounterReportWorkItemStatusRequest < 3) {
     o.currentWorkerTime = "foo";
     o.location = "foo";
-    o.workItemStatuses = buildUnnamed3290();
+    o.workItemStatuses = buildUnnamed3305();
     o.workerId = "foo";
   }
   buildCounterReportWorkItemStatusRequest--;
@@ -2586,20 +2586,20 @@
   if (buildCounterReportWorkItemStatusRequest < 3) {
     unittest.expect(o.currentWorkerTime, unittest.equals('foo'));
     unittest.expect(o.location, unittest.equals('foo'));
-    checkUnnamed3290(o.workItemStatuses);
+    checkUnnamed3305(o.workItemStatuses);
     unittest.expect(o.workerId, unittest.equals('foo'));
   }
   buildCounterReportWorkItemStatusRequest--;
 }
 
-buildUnnamed3291() {
+buildUnnamed3306() {
   var o = new core.List<api.WorkItemServiceState>();
   o.add(buildWorkItemServiceState());
   o.add(buildWorkItemServiceState());
   return o;
 }
 
-checkUnnamed3291(core.List<api.WorkItemServiceState> o) {
+checkUnnamed3306(core.List<api.WorkItemServiceState> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWorkItemServiceState(o[0]);
   checkWorkItemServiceState(o[1]);
@@ -2610,7 +2610,7 @@
   var o = new api.ReportWorkItemStatusResponse();
   buildCounterReportWorkItemStatusResponse++;
   if (buildCounterReportWorkItemStatusResponse < 3) {
-    o.workItemServiceStates = buildUnnamed3291();
+    o.workItemServiceStates = buildUnnamed3306();
   }
   buildCounterReportWorkItemStatusResponse--;
   return o;
@@ -2619,7 +2619,7 @@
 checkReportWorkItemStatusResponse(api.ReportWorkItemStatusResponse o) {
   buildCounterReportWorkItemStatusResponse++;
   if (buildCounterReportWorkItemStatusResponse < 3) {
-    checkUnnamed3291(o.workItemServiceStates);
+    checkUnnamed3306(o.workItemServiceStates);
   }
   buildCounterReportWorkItemStatusResponse--;
 }
@@ -2645,14 +2645,14 @@
   buildCounterReportedParallelism--;
 }
 
-buildUnnamed3292() {
+buildUnnamed3307() {
   var o = new core.List<api.CPUTime>();
   o.add(buildCPUTime());
   o.add(buildCPUTime());
   return o;
 }
 
-checkUnnamed3292(core.List<api.CPUTime> o) {
+checkUnnamed3307(core.List<api.CPUTime> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCPUTime(o[0]);
   checkCPUTime(o[1]);
@@ -2663,7 +2663,7 @@
   var o = new api.ResourceUtilizationReport();
   buildCounterResourceUtilizationReport++;
   if (buildCounterResourceUtilizationReport < 3) {
-    o.cpuTime = buildUnnamed3292();
+    o.cpuTime = buildUnnamed3307();
   }
   buildCounterResourceUtilizationReport--;
   return o;
@@ -2672,7 +2672,7 @@
 checkResourceUtilizationReport(api.ResourceUtilizationReport o) {
   buildCounterResourceUtilizationReport++;
   if (buildCounterResourceUtilizationReport < 3) {
-    checkUnnamed3292(o.cpuTime);
+    checkUnnamed3307(o.cpuTime);
   }
   buildCounterResourceUtilizationReport--;
 }
@@ -2762,14 +2762,14 @@
   buildCounterSendDebugCaptureResponse--;
 }
 
-buildUnnamed3293() {
+buildUnnamed3308() {
   var o = new core.List<api.WorkerMessage>();
   o.add(buildWorkerMessage());
   o.add(buildWorkerMessage());
   return o;
 }
 
-checkUnnamed3293(core.List<api.WorkerMessage> o) {
+checkUnnamed3308(core.List<api.WorkerMessage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWorkerMessage(o[0]);
   checkWorkerMessage(o[1]);
@@ -2781,7 +2781,7 @@
   buildCounterSendWorkerMessagesRequest++;
   if (buildCounterSendWorkerMessagesRequest < 3) {
     o.location = "foo";
-    o.workerMessages = buildUnnamed3293();
+    o.workerMessages = buildUnnamed3308();
   }
   buildCounterSendWorkerMessagesRequest--;
   return o;
@@ -2791,19 +2791,19 @@
   buildCounterSendWorkerMessagesRequest++;
   if (buildCounterSendWorkerMessagesRequest < 3) {
     unittest.expect(o.location, unittest.equals('foo'));
-    checkUnnamed3293(o.workerMessages);
+    checkUnnamed3308(o.workerMessages);
   }
   buildCounterSendWorkerMessagesRequest--;
 }
 
-buildUnnamed3294() {
+buildUnnamed3309() {
   var o = new core.List<api.WorkerMessageResponse>();
   o.add(buildWorkerMessageResponse());
   o.add(buildWorkerMessageResponse());
   return o;
 }
 
-checkUnnamed3294(core.List<api.WorkerMessageResponse> o) {
+checkUnnamed3309(core.List<api.WorkerMessageResponse> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWorkerMessageResponse(o[0]);
   checkWorkerMessageResponse(o[1]);
@@ -2814,7 +2814,7 @@
   var o = new api.SendWorkerMessagesResponse();
   buildCounterSendWorkerMessagesResponse++;
   if (buildCounterSendWorkerMessagesResponse < 3) {
-    o.workerMessageResponses = buildUnnamed3294();
+    o.workerMessageResponses = buildUnnamed3309();
   }
   buildCounterSendWorkerMessagesResponse--;
   return o;
@@ -2823,38 +2823,38 @@
 checkSendWorkerMessagesResponse(api.SendWorkerMessagesResponse o) {
   buildCounterSendWorkerMessagesResponse++;
   if (buildCounterSendWorkerMessagesResponse < 3) {
-    checkUnnamed3294(o.workerMessageResponses);
+    checkUnnamed3309(o.workerMessageResponses);
   }
   buildCounterSendWorkerMessagesResponse--;
 }
 
-buildUnnamed3295() {
+buildUnnamed3310() {
   var o = new core.List<api.SideInputInfo>();
   o.add(buildSideInputInfo());
   o.add(buildSideInputInfo());
   return o;
 }
 
-checkUnnamed3295(core.List<api.SideInputInfo> o) {
+checkUnnamed3310(core.List<api.SideInputInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSideInputInfo(o[0]);
   checkSideInputInfo(o[1]);
 }
 
-buildUnnamed3296() {
+buildUnnamed3311() {
   var o = new core.List<api.SeqMapTaskOutputInfo>();
   o.add(buildSeqMapTaskOutputInfo());
   o.add(buildSeqMapTaskOutputInfo());
   return o;
 }
 
-checkUnnamed3296(core.List<api.SeqMapTaskOutputInfo> o) {
+checkUnnamed3311(core.List<api.SeqMapTaskOutputInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSeqMapTaskOutputInfo(o[0]);
   checkSeqMapTaskOutputInfo(o[1]);
 }
 
-buildUnnamed3297() {
+buildUnnamed3312() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -2869,7 +2869,7 @@
   return o;
 }
 
-checkUnnamed3297(core.Map<core.String, core.Object> o) {
+checkUnnamed3312(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted25 = (o["x"]) as core.Map;
   unittest.expect(casted25, unittest.hasLength(3));
@@ -2888,12 +2888,12 @@
   var o = new api.SeqMapTask();
   buildCounterSeqMapTask++;
   if (buildCounterSeqMapTask < 3) {
-    o.inputs = buildUnnamed3295();
+    o.inputs = buildUnnamed3310();
     o.name = "foo";
-    o.outputInfos = buildUnnamed3296();
+    o.outputInfos = buildUnnamed3311();
     o.stageName = "foo";
     o.systemName = "foo";
-    o.userFn = buildUnnamed3297();
+    o.userFn = buildUnnamed3312();
   }
   buildCounterSeqMapTask--;
   return o;
@@ -2902,12 +2902,12 @@
 checkSeqMapTask(api.SeqMapTask o) {
   buildCounterSeqMapTask++;
   if (buildCounterSeqMapTask < 3) {
-    checkUnnamed3295(o.inputs);
+    checkUnnamed3310(o.inputs);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3296(o.outputInfos);
+    checkUnnamed3311(o.outputInfos);
     unittest.expect(o.stageName, unittest.equals('foo'));
     unittest.expect(o.systemName, unittest.equals('foo'));
-    checkUnnamed3297(o.userFn);
+    checkUnnamed3312(o.userFn);
   }
   buildCounterSeqMapTask--;
 }
@@ -2975,7 +2975,7 @@
   buildCounterSideInputId--;
 }
 
-buildUnnamed3298() {
+buildUnnamed3313() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -2990,7 +2990,7 @@
   return o;
 }
 
-checkUnnamed3298(core.Map<core.String, core.Object> o) {
+checkUnnamed3313(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted27 = (o["x"]) as core.Map;
   unittest.expect(casted27, unittest.hasLength(3));
@@ -3004,14 +3004,14 @@
   unittest.expect(casted28["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3299() {
+buildUnnamed3314() {
   var o = new core.List<api.Source>();
   o.add(buildSource());
   o.add(buildSource());
   return o;
 }
 
-checkUnnamed3299(core.List<api.Source> o) {
+checkUnnamed3314(core.List<api.Source> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSource(o[0]);
   checkSource(o[1]);
@@ -3022,8 +3022,8 @@
   var o = new api.SideInputInfo();
   buildCounterSideInputInfo++;
   if (buildCounterSideInputInfo < 3) {
-    o.kind = buildUnnamed3298();
-    o.sources = buildUnnamed3299();
+    o.kind = buildUnnamed3313();
+    o.sources = buildUnnamed3314();
     o.tag = "foo";
   }
   buildCounterSideInputInfo--;
@@ -3033,14 +3033,14 @@
 checkSideInputInfo(api.SideInputInfo o) {
   buildCounterSideInputInfo++;
   if (buildCounterSideInputInfo < 3) {
-    checkUnnamed3298(o.kind);
-    checkUnnamed3299(o.sources);
+    checkUnnamed3313(o.kind);
+    checkUnnamed3314(o.sources);
     unittest.expect(o.tag, unittest.equals('foo'));
   }
   buildCounterSideInputInfo--;
 }
 
-buildUnnamed3300() {
+buildUnnamed3315() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -3055,7 +3055,7 @@
   return o;
 }
 
-checkUnnamed3300(core.Map<core.String, core.Object> o) {
+checkUnnamed3315(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted29 = (o["x"]) as core.Map;
   unittest.expect(casted29, unittest.hasLength(3));
@@ -3069,7 +3069,7 @@
   unittest.expect(casted30["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3301() {
+buildUnnamed3316() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -3084,7 +3084,7 @@
   return o;
 }
 
-checkUnnamed3301(core.Map<core.String, core.Object> o) {
+checkUnnamed3316(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted31 = (o["x"]) as core.Map;
   unittest.expect(casted31, unittest.hasLength(3));
@@ -3103,8 +3103,8 @@
   var o = new api.Sink();
   buildCounterSink++;
   if (buildCounterSink < 3) {
-    o.codec = buildUnnamed3300();
-    o.spec = buildUnnamed3301();
+    o.codec = buildUnnamed3315();
+    o.spec = buildUnnamed3316();
   }
   buildCounterSink--;
   return o;
@@ -3113,13 +3113,13 @@
 checkSink(api.Sink o) {
   buildCounterSink++;
   if (buildCounterSink < 3) {
-    checkUnnamed3300(o.codec);
-    checkUnnamed3301(o.spec);
+    checkUnnamed3315(o.codec);
+    checkUnnamed3316(o.spec);
   }
   buildCounterSink--;
 }
 
-buildUnnamed3302() {
+buildUnnamed3317() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -3134,7 +3134,7 @@
   return o;
 }
 
-checkUnnamed3302(core.Map<core.String, core.Object> o) {
+checkUnnamed3317(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted33 = (o["x"]) as core.Map;
   unittest.expect(casted33, unittest.hasLength(3));
@@ -3148,20 +3148,20 @@
   unittest.expect(casted34["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3303() {
+buildUnnamed3318() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed3302());
-  o.add(buildUnnamed3302());
+  o.add(buildUnnamed3317());
+  o.add(buildUnnamed3317());
   return o;
 }
 
-checkUnnamed3303(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed3318(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed3302(o[0]);
-  checkUnnamed3302(o[1]);
+  checkUnnamed3317(o[0]);
+  checkUnnamed3317(o[1]);
 }
 
-buildUnnamed3304() {
+buildUnnamed3319() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -3176,7 +3176,7 @@
   return o;
 }
 
-checkUnnamed3304(core.Map<core.String, core.Object> o) {
+checkUnnamed3319(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted35 = (o["x"]) as core.Map;
   unittest.expect(casted35, unittest.hasLength(3));
@@ -3190,7 +3190,7 @@
   unittest.expect(casted36["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3305() {
+buildUnnamed3320() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -3205,7 +3205,7 @@
   return o;
 }
 
-checkUnnamed3305(core.Map<core.String, core.Object> o) {
+checkUnnamed3320(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted37 = (o["x"]) as core.Map;
   unittest.expect(casted37, unittest.hasLength(3));
@@ -3224,11 +3224,11 @@
   var o = new api.Source();
   buildCounterSource++;
   if (buildCounterSource < 3) {
-    o.baseSpecs = buildUnnamed3303();
-    o.codec = buildUnnamed3304();
+    o.baseSpecs = buildUnnamed3318();
+    o.codec = buildUnnamed3319();
     o.doesNotNeedSplitting = true;
     o.metadata = buildSourceMetadata();
-    o.spec = buildUnnamed3305();
+    o.spec = buildUnnamed3320();
   }
   buildCounterSource--;
   return o;
@@ -3237,11 +3237,11 @@
 checkSource(api.Source o) {
   buildCounterSource++;
   if (buildCounterSource < 3) {
-    checkUnnamed3303(o.baseSpecs);
-    checkUnnamed3304(o.codec);
+    checkUnnamed3318(o.baseSpecs);
+    checkUnnamed3319(o.codec);
     unittest.expect(o.doesNotNeedSplitting, unittest.isTrue);
     checkSourceMetadata(o.metadata);
-    checkUnnamed3305(o.spec);
+    checkUnnamed3320(o.spec);
   }
   buildCounterSource--;
 }
@@ -3416,27 +3416,27 @@
   buildCounterSourceSplitRequest--;
 }
 
-buildUnnamed3306() {
+buildUnnamed3321() {
   var o = new core.List<api.DerivedSource>();
   o.add(buildDerivedSource());
   o.add(buildDerivedSource());
   return o;
 }
 
-checkUnnamed3306(core.List<api.DerivedSource> o) {
+checkUnnamed3321(core.List<api.DerivedSource> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDerivedSource(o[0]);
   checkDerivedSource(o[1]);
 }
 
-buildUnnamed3307() {
+buildUnnamed3322() {
   var o = new core.List<api.SourceSplitShard>();
   o.add(buildSourceSplitShard());
   o.add(buildSourceSplitShard());
   return o;
 }
 
-checkUnnamed3307(core.List<api.SourceSplitShard> o) {
+checkUnnamed3322(core.List<api.SourceSplitShard> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSourceSplitShard(o[0]);
   checkSourceSplitShard(o[1]);
@@ -3447,9 +3447,9 @@
   var o = new api.SourceSplitResponse();
   buildCounterSourceSplitResponse++;
   if (buildCounterSourceSplitResponse < 3) {
-    o.bundles = buildUnnamed3306();
+    o.bundles = buildUnnamed3321();
     o.outcome = "foo";
-    o.shards = buildUnnamed3307();
+    o.shards = buildUnnamed3322();
   }
   buildCounterSourceSplitResponse--;
   return o;
@@ -3458,9 +3458,9 @@
 checkSourceSplitResponse(api.SourceSplitResponse o) {
   buildCounterSourceSplitResponse++;
   if (buildCounterSourceSplitResponse < 3) {
-    checkUnnamed3306(o.bundles);
+    checkUnnamed3321(o.bundles);
     unittest.expect(o.outcome, unittest.equals('foo'));
-    checkUnnamed3307(o.shards);
+    checkUnnamed3322(o.shards);
   }
   buildCounterSourceSplitResponse--;
 }
@@ -3553,7 +3553,7 @@
   buildCounterStateFamilyConfig--;
 }
 
-buildUnnamed3308() {
+buildUnnamed3323() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -3568,7 +3568,7 @@
   return o;
 }
 
-checkUnnamed3308(core.Map<core.String, core.Object> o) {
+checkUnnamed3323(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted39 = (o["x"]) as core.Map;
   unittest.expect(casted39, unittest.hasLength(3));
@@ -3582,17 +3582,17 @@
   unittest.expect(casted40["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3309() {
+buildUnnamed3324() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed3308());
-  o.add(buildUnnamed3308());
+  o.add(buildUnnamed3323());
+  o.add(buildUnnamed3323());
   return o;
 }
 
-checkUnnamed3309(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed3324(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed3308(o[0]);
-  checkUnnamed3308(o[1]);
+  checkUnnamed3323(o[0]);
+  checkUnnamed3323(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -3601,7 +3601,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed3309();
+    o.details = buildUnnamed3324();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -3612,13 +3612,13 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed3309(o.details);
+    checkUnnamed3324(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
 }
 
-buildUnnamed3310() {
+buildUnnamed3325() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -3633,7 +3633,7 @@
   return o;
 }
 
-checkUnnamed3310(core.Map<core.String, core.Object> o) {
+checkUnnamed3325(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted41 = (o["x"]) as core.Map;
   unittest.expect(casted41, unittest.hasLength(3));
@@ -3654,7 +3654,7 @@
   if (buildCounterStep < 3) {
     o.kind = "foo";
     o.name = "foo";
-    o.properties = buildUnnamed3310();
+    o.properties = buildUnnamed3325();
   }
   buildCounterStep--;
   return o;
@@ -3665,7 +3665,7 @@
   if (buildCounterStep < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3310(o.properties);
+    checkUnnamed3325(o.properties);
   }
   buildCounterStep--;
 }
@@ -3695,14 +3695,14 @@
   buildCounterStreamLocation--;
 }
 
-buildUnnamed3311() {
+buildUnnamed3326() {
   var o = new core.List<api.ParallelInstruction>();
   o.add(buildParallelInstruction());
   o.add(buildParallelInstruction());
   return o;
 }
 
-checkUnnamed3311(core.List<api.ParallelInstruction> o) {
+checkUnnamed3326(core.List<api.ParallelInstruction> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkParallelInstruction(o[0]);
   checkParallelInstruction(o[1]);
@@ -3714,7 +3714,7 @@
   buildCounterStreamingComputationConfig++;
   if (buildCounterStreamingComputationConfig < 3) {
     o.computationId = "foo";
-    o.instructions = buildUnnamed3311();
+    o.instructions = buildUnnamed3326();
     o.stageName = "foo";
     o.systemName = "foo";
   }
@@ -3726,21 +3726,21 @@
   buildCounterStreamingComputationConfig++;
   if (buildCounterStreamingComputationConfig < 3) {
     unittest.expect(o.computationId, unittest.equals('foo'));
-    checkUnnamed3311(o.instructions);
+    checkUnnamed3326(o.instructions);
     unittest.expect(o.stageName, unittest.equals('foo'));
     unittest.expect(o.systemName, unittest.equals('foo'));
   }
   buildCounterStreamingComputationConfig--;
 }
 
-buildUnnamed3312() {
+buildUnnamed3327() {
   var o = new core.List<api.KeyRangeDataDiskAssignment>();
   o.add(buildKeyRangeDataDiskAssignment());
   o.add(buildKeyRangeDataDiskAssignment());
   return o;
 }
 
-checkUnnamed3312(core.List<api.KeyRangeDataDiskAssignment> o) {
+checkUnnamed3327(core.List<api.KeyRangeDataDiskAssignment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkKeyRangeDataDiskAssignment(o[0]);
   checkKeyRangeDataDiskAssignment(o[1]);
@@ -3752,7 +3752,7 @@
   buildCounterStreamingComputationRanges++;
   if (buildCounterStreamingComputationRanges < 3) {
     o.computationId = "foo";
-    o.rangeAssignments = buildUnnamed3312();
+    o.rangeAssignments = buildUnnamed3327();
   }
   buildCounterStreamingComputationRanges--;
   return o;
@@ -3762,32 +3762,32 @@
   buildCounterStreamingComputationRanges++;
   if (buildCounterStreamingComputationRanges < 3) {
     unittest.expect(o.computationId, unittest.equals('foo'));
-    checkUnnamed3312(o.rangeAssignments);
+    checkUnnamed3327(o.rangeAssignments);
   }
   buildCounterStreamingComputationRanges--;
 }
 
-buildUnnamed3313() {
+buildUnnamed3328() {
   var o = new core.List<api.StreamingComputationRanges>();
   o.add(buildStreamingComputationRanges());
   o.add(buildStreamingComputationRanges());
   return o;
 }
 
-checkUnnamed3313(core.List<api.StreamingComputationRanges> o) {
+checkUnnamed3328(core.List<api.StreamingComputationRanges> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStreamingComputationRanges(o[0]);
   checkStreamingComputationRanges(o[1]);
 }
 
-buildUnnamed3314() {
+buildUnnamed3329() {
   var o = new core.List<api.MountedDataDisk>();
   o.add(buildMountedDataDisk());
   o.add(buildMountedDataDisk());
   return o;
 }
 
-checkUnnamed3314(core.List<api.MountedDataDisk> o) {
+checkUnnamed3329(core.List<api.MountedDataDisk> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMountedDataDisk(o[0]);
   checkMountedDataDisk(o[1]);
@@ -3798,8 +3798,8 @@
   var o = new api.StreamingComputationTask();
   buildCounterStreamingComputationTask++;
   if (buildCounterStreamingComputationTask < 3) {
-    o.computationRanges = buildUnnamed3313();
-    o.dataDisks = buildUnnamed3314();
+    o.computationRanges = buildUnnamed3328();
+    o.dataDisks = buildUnnamed3329();
     o.taskType = "foo";
   }
   buildCounterStreamingComputationTask--;
@@ -3809,34 +3809,34 @@
 checkStreamingComputationTask(api.StreamingComputationTask o) {
   buildCounterStreamingComputationTask++;
   if (buildCounterStreamingComputationTask < 3) {
-    checkUnnamed3313(o.computationRanges);
-    checkUnnamed3314(o.dataDisks);
+    checkUnnamed3328(o.computationRanges);
+    checkUnnamed3329(o.dataDisks);
     unittest.expect(o.taskType, unittest.equals('foo'));
   }
   buildCounterStreamingComputationTask--;
 }
 
-buildUnnamed3315() {
+buildUnnamed3330() {
   var o = new core.List<api.StreamingComputationConfig>();
   o.add(buildStreamingComputationConfig());
   o.add(buildStreamingComputationConfig());
   return o;
 }
 
-checkUnnamed3315(core.List<api.StreamingComputationConfig> o) {
+checkUnnamed3330(core.List<api.StreamingComputationConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStreamingComputationConfig(o[0]);
   checkStreamingComputationConfig(o[1]);
 }
 
-buildUnnamed3316() {
+buildUnnamed3331() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3316(core.Map<core.String, core.String> o) {
+checkUnnamed3331(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -3847,8 +3847,8 @@
   var o = new api.StreamingConfigTask();
   buildCounterStreamingConfigTask++;
   if (buildCounterStreamingConfigTask < 3) {
-    o.streamingComputationConfigs = buildUnnamed3315();
-    o.userStepToStateFamilyNameMap = buildUnnamed3316();
+    o.streamingComputationConfigs = buildUnnamed3330();
+    o.userStepToStateFamilyNameMap = buildUnnamed3331();
     o.windmillServiceEndpoint = "foo";
     o.windmillServicePort = "foo";
   }
@@ -3859,8 +3859,8 @@
 checkStreamingConfigTask(api.StreamingConfigTask o) {
   buildCounterStreamingConfigTask++;
   if (buildCounterStreamingConfigTask < 3) {
-    checkUnnamed3315(o.streamingComputationConfigs);
-    checkUnnamed3316(o.userStepToStateFamilyNameMap);
+    checkUnnamed3330(o.streamingComputationConfigs);
+    checkUnnamed3331(o.userStepToStateFamilyNameMap);
     unittest.expect(o.windmillServiceEndpoint, unittest.equals('foo'));
     unittest.expect(o.windmillServicePort, unittest.equals('foo'));
   }
@@ -3932,14 +3932,14 @@
   buildCounterStreamingStageLocation--;
 }
 
-buildUnnamed3317() {
+buildUnnamed3332() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3317(core.List<core.String> o) {
+checkUnnamed3332(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -3950,7 +3950,7 @@
   var o = new api.StringList();
   buildCounterStringList++;
   if (buildCounterStringList < 3) {
-    o.elements = buildUnnamed3317();
+    o.elements = buildUnnamed3332();
   }
   buildCounterStringList--;
   return o;
@@ -3959,19 +3959,19 @@
 checkStringList(api.StringList o) {
   buildCounterStringList++;
   if (buildCounterStringList < 3) {
-    checkUnnamed3317(o.elements);
+    checkUnnamed3332(o.elements);
   }
   buildCounterStringList--;
 }
 
-buildUnnamed3318() {
+buildUnnamed3333() {
   var o = new core.List<api.Parameter>();
   o.add(buildParameter());
   o.add(buildParameter());
   return o;
 }
 
-checkUnnamed3318(core.List<api.Parameter> o) {
+checkUnnamed3333(core.List<api.Parameter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkParameter(o[0]);
   checkParameter(o[1]);
@@ -3984,7 +3984,7 @@
   if (buildCounterStructuredMessage < 3) {
     o.messageKey = "foo";
     o.messageText = "foo";
-    o.parameters = buildUnnamed3318();
+    o.parameters = buildUnnamed3333();
   }
   buildCounterStructuredMessage--;
   return o;
@@ -3995,19 +3995,19 @@
   if (buildCounterStructuredMessage < 3) {
     unittest.expect(o.messageKey, unittest.equals('foo'));
     unittest.expect(o.messageText, unittest.equals('foo'));
-    checkUnnamed3318(o.parameters);
+    checkUnnamed3333(o.parameters);
   }
   buildCounterStructuredMessage--;
 }
 
-buildUnnamed3319() {
+buildUnnamed3334() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3319(core.List<core.String> o) {
+checkUnnamed3334(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -4029,7 +4029,7 @@
     o.logDir = "foo";
     o.logToSerialconsole = true;
     o.logUploadLocation = "foo";
-    o.oauthScopes = buildUnnamed3319();
+    o.oauthScopes = buildUnnamed3334();
     o.parallelWorkerSettings = buildWorkerSettings();
     o.streamingWorkerMainClass = "foo";
     o.taskGroup = "foo";
@@ -4056,7 +4056,7 @@
     unittest.expect(o.logDir, unittest.equals('foo'));
     unittest.expect(o.logToSerialconsole, unittest.isTrue);
     unittest.expect(o.logUploadLocation, unittest.equals('foo'));
-    checkUnnamed3319(o.oauthScopes);
+    checkUnnamed3334(o.oauthScopes);
     checkWorkerSettings(o.parallelWorkerSettings);
     unittest.expect(o.streamingWorkerMainClass, unittest.equals('foo'));
     unittest.expect(o.taskGroup, unittest.equals('foo'));
@@ -4068,14 +4068,14 @@
   buildCounterTaskRunnerSettings--;
 }
 
-buildUnnamed3320() {
+buildUnnamed3335() {
   var o = new core.List<api.ParameterMetadata>();
   o.add(buildParameterMetadata());
   o.add(buildParameterMetadata());
   return o;
 }
 
-checkUnnamed3320(core.List<api.ParameterMetadata> o) {
+checkUnnamed3335(core.List<api.ParameterMetadata> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkParameterMetadata(o[0]);
   checkParameterMetadata(o[1]);
@@ -4088,7 +4088,7 @@
   if (buildCounterTemplateMetadata < 3) {
     o.description = "foo";
     o.name = "foo";
-    o.parameters = buildUnnamed3320();
+    o.parameters = buildUnnamed3335();
   }
   buildCounterTemplateMetadata--;
   return o;
@@ -4099,45 +4099,45 @@
   if (buildCounterTemplateMetadata < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3320(o.parameters);
+    checkUnnamed3335(o.parameters);
   }
   buildCounterTemplateMetadata--;
 }
 
-buildUnnamed3321() {
+buildUnnamed3336() {
   var o = new core.List<api.ComputationTopology>();
   o.add(buildComputationTopology());
   o.add(buildComputationTopology());
   return o;
 }
 
-checkUnnamed3321(core.List<api.ComputationTopology> o) {
+checkUnnamed3336(core.List<api.ComputationTopology> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkComputationTopology(o[0]);
   checkComputationTopology(o[1]);
 }
 
-buildUnnamed3322() {
+buildUnnamed3337() {
   var o = new core.List<api.DataDiskAssignment>();
   o.add(buildDataDiskAssignment());
   o.add(buildDataDiskAssignment());
   return o;
 }
 
-checkUnnamed3322(core.List<api.DataDiskAssignment> o) {
+checkUnnamed3337(core.List<api.DataDiskAssignment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDataDiskAssignment(o[0]);
   checkDataDiskAssignment(o[1]);
 }
 
-buildUnnamed3323() {
+buildUnnamed3338() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3323(core.Map<core.String, core.String> o) {
+checkUnnamed3338(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -4148,11 +4148,11 @@
   var o = new api.TopologyConfig();
   buildCounterTopologyConfig++;
   if (buildCounterTopologyConfig < 3) {
-    o.computations = buildUnnamed3321();
-    o.dataDiskAssignments = buildUnnamed3322();
+    o.computations = buildUnnamed3336();
+    o.dataDiskAssignments = buildUnnamed3337();
     o.forwardingKeyBits = 42;
     o.persistentStateVersion = 42;
-    o.userStageToComputationNameMap = buildUnnamed3323();
+    o.userStageToComputationNameMap = buildUnnamed3338();
   }
   buildCounterTopologyConfig--;
   return o;
@@ -4161,49 +4161,49 @@
 checkTopologyConfig(api.TopologyConfig o) {
   buildCounterTopologyConfig++;
   if (buildCounterTopologyConfig < 3) {
-    checkUnnamed3321(o.computations);
-    checkUnnamed3322(o.dataDiskAssignments);
+    checkUnnamed3336(o.computations);
+    checkUnnamed3337(o.dataDiskAssignments);
     unittest.expect(o.forwardingKeyBits, unittest.equals(42));
     unittest.expect(o.persistentStateVersion, unittest.equals(42));
-    checkUnnamed3323(o.userStageToComputationNameMap);
+    checkUnnamed3338(o.userStageToComputationNameMap);
   }
   buildCounterTopologyConfig--;
 }
 
-buildUnnamed3324() {
+buildUnnamed3339() {
   var o = new core.List<api.DisplayData>();
   o.add(buildDisplayData());
   o.add(buildDisplayData());
   return o;
 }
 
-checkUnnamed3324(core.List<api.DisplayData> o) {
+checkUnnamed3339(core.List<api.DisplayData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDisplayData(o[0]);
   checkDisplayData(o[1]);
 }
 
-buildUnnamed3325() {
+buildUnnamed3340() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3325(core.List<core.String> o) {
+checkUnnamed3340(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3326() {
+buildUnnamed3341() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3326(core.List<core.String> o) {
+checkUnnamed3341(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -4214,12 +4214,12 @@
   var o = new api.TransformSummary();
   buildCounterTransformSummary++;
   if (buildCounterTransformSummary < 3) {
-    o.displayData = buildUnnamed3324();
+    o.displayData = buildUnnamed3339();
     o.id = "foo";
-    o.inputCollectionName = buildUnnamed3325();
+    o.inputCollectionName = buildUnnamed3340();
     o.kind = "foo";
     o.name = "foo";
-    o.outputCollectionName = buildUnnamed3326();
+    o.outputCollectionName = buildUnnamed3341();
   }
   buildCounterTransformSummary--;
   return o;
@@ -4228,24 +4228,24 @@
 checkTransformSummary(api.TransformSummary o) {
   buildCounterTransformSummary++;
   if (buildCounterTransformSummary < 3) {
-    checkUnnamed3324(o.displayData);
+    checkUnnamed3339(o.displayData);
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed3325(o.inputCollectionName);
+    checkUnnamed3340(o.inputCollectionName);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3326(o.outputCollectionName);
+    checkUnnamed3341(o.outputCollectionName);
   }
   buildCounterTransformSummary--;
 }
 
-buildUnnamed3327() {
+buildUnnamed3342() {
   var o = new core.List<api.Package>();
   o.add(buildPackage());
   o.add(buildPackage());
   return o;
 }
 
-checkUnnamed3327(core.List<api.Package> o) {
+checkUnnamed3342(core.List<api.Package> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPackage(o[0]);
   checkPackage(o[1]);
@@ -4262,7 +4262,7 @@
     o.jobId = "foo";
     o.leaseExpireTime = "foo";
     o.mapTask = buildMapTask();
-    o.packages = buildUnnamed3327();
+    o.packages = buildUnnamed3342();
     o.projectId = "foo";
     o.reportStatusInterval = "foo";
     o.seqMapTask = buildSeqMapTask();
@@ -4285,7 +4285,7 @@
     unittest.expect(o.jobId, unittest.equals('foo'));
     unittest.expect(o.leaseExpireTime, unittest.equals('foo'));
     checkMapTask(o.mapTask);
-    checkUnnamed3327(o.packages);
+    checkUnnamed3342(o.packages);
     unittest.expect(o.projectId, unittest.equals('foo'));
     unittest.expect(o.reportStatusInterval, unittest.equals('foo'));
     checkSeqMapTask(o.seqMapTask);
@@ -4298,7 +4298,7 @@
   buildCounterWorkItem--;
 }
 
-buildUnnamed3328() {
+buildUnnamed3343() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -4313,7 +4313,7 @@
   return o;
 }
 
-checkUnnamed3328(core.Map<core.String, core.Object> o) {
+checkUnnamed3343(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted43 = (o["x"]) as core.Map;
   unittest.expect(casted43, unittest.hasLength(3));
@@ -4327,14 +4327,14 @@
   unittest.expect(casted44["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3329() {
+buildUnnamed3344() {
   var o = new core.List<api.MetricShortId>();
   o.add(buildMetricShortId());
   o.add(buildMetricShortId());
   return o;
 }
 
-checkUnnamed3329(core.List<api.MetricShortId> o) {
+checkUnnamed3344(core.List<api.MetricShortId> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricShortId(o[0]);
   checkMetricShortId(o[1]);
@@ -4345,9 +4345,9 @@
   var o = new api.WorkItemServiceState();
   buildCounterWorkItemServiceState++;
   if (buildCounterWorkItemServiceState < 3) {
-    o.harnessData = buildUnnamed3328();
+    o.harnessData = buildUnnamed3343();
     o.leaseExpireTime = "foo";
-    o.metricShortId = buildUnnamed3329();
+    o.metricShortId = buildUnnamed3344();
     o.nextReportIndex = "foo";
     o.reportStatusInterval = "foo";
     o.splitRequest = buildApproximateSplitRequest();
@@ -4361,9 +4361,9 @@
 checkWorkItemServiceState(api.WorkItemServiceState o) {
   buildCounterWorkItemServiceState++;
   if (buildCounterWorkItemServiceState < 3) {
-    checkUnnamed3328(o.harnessData);
+    checkUnnamed3343(o.harnessData);
     unittest.expect(o.leaseExpireTime, unittest.equals('foo'));
-    checkUnnamed3329(o.metricShortId);
+    checkUnnamed3344(o.metricShortId);
     unittest.expect(o.nextReportIndex, unittest.equals('foo'));
     unittest.expect(o.reportStatusInterval, unittest.equals('foo'));
     checkApproximateSplitRequest(o.splitRequest);
@@ -4373,40 +4373,40 @@
   buildCounterWorkItemServiceState--;
 }
 
-buildUnnamed3330() {
+buildUnnamed3345() {
   var o = new core.List<api.CounterUpdate>();
   o.add(buildCounterUpdate());
   o.add(buildCounterUpdate());
   return o;
 }
 
-checkUnnamed3330(core.List<api.CounterUpdate> o) {
+checkUnnamed3345(core.List<api.CounterUpdate> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCounterUpdate(o[0]);
   checkCounterUpdate(o[1]);
 }
 
-buildUnnamed3331() {
+buildUnnamed3346() {
   var o = new core.List<api.Status>();
   o.add(buildStatus());
   o.add(buildStatus());
   return o;
 }
 
-checkUnnamed3331(core.List<api.Status> o) {
+checkUnnamed3346(core.List<api.Status> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStatus(o[0]);
   checkStatus(o[1]);
 }
 
-buildUnnamed3332() {
+buildUnnamed3347() {
   var o = new core.List<api.MetricUpdate>();
   o.add(buildMetricUpdate());
   o.add(buildMetricUpdate());
   return o;
 }
 
-checkUnnamed3332(core.List<api.MetricUpdate> o) {
+checkUnnamed3347(core.List<api.MetricUpdate> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMetricUpdate(o[0]);
   checkMetricUpdate(o[1]);
@@ -4418,10 +4418,10 @@
   buildCounterWorkItemStatus++;
   if (buildCounterWorkItemStatus < 3) {
     o.completed = true;
-    o.counterUpdates = buildUnnamed3330();
+    o.counterUpdates = buildUnnamed3345();
     o.dynamicSourceSplit = buildDynamicSourceSplit();
-    o.errors = buildUnnamed3331();
-    o.metricUpdates = buildUnnamed3332();
+    o.errors = buildUnnamed3346();
+    o.metricUpdates = buildUnnamed3347();
     o.progress = buildApproximateProgress();
     o.reportIndex = "foo";
     o.reportedProgress = buildApproximateReportedProgress();
@@ -4440,10 +4440,10 @@
   buildCounterWorkItemStatus++;
   if (buildCounterWorkItemStatus < 3) {
     unittest.expect(o.completed, unittest.isTrue);
-    checkUnnamed3330(o.counterUpdates);
+    checkUnnamed3345(o.counterUpdates);
     checkDynamicSourceSplit(o.dynamicSourceSplit);
-    checkUnnamed3331(o.errors);
-    checkUnnamed3332(o.metricUpdates);
+    checkUnnamed3346(o.errors);
+    checkUnnamed3347(o.metricUpdates);
     checkApproximateProgress(o.progress);
     unittest.expect(o.reportIndex, unittest.equals('foo'));
     checkApproximateReportedProgress(o.reportedProgress);
@@ -4457,7 +4457,7 @@
   buildCounterWorkItemStatus--;
 }
 
-buildUnnamed3333() {
+buildUnnamed3348() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -4472,7 +4472,7 @@
   return o;
 }
 
-checkUnnamed3333(core.Map<core.String, core.Object> o) {
+checkUnnamed3348(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted45 = (o["x"]) as core.Map;
   unittest.expect(casted45, unittest.hasLength(3));
@@ -4486,17 +4486,17 @@
   unittest.expect(casted46["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3334() {
+buildUnnamed3349() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed3333());
-  o.add(buildUnnamed3333());
+  o.add(buildUnnamed3348());
+  o.add(buildUnnamed3348());
   return o;
 }
 
-checkUnnamed3334(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed3349(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed3333(o[0]);
-  checkUnnamed3333(o[1]);
+  checkUnnamed3348(o[0]);
+  checkUnnamed3348(o[1]);
 }
 
 core.int buildCounterWorkerHealthReport = 0;
@@ -4504,7 +4504,7 @@
   var o = new api.WorkerHealthReport();
   buildCounterWorkerHealthReport++;
   if (buildCounterWorkerHealthReport < 3) {
-    o.pods = buildUnnamed3334();
+    o.pods = buildUnnamed3349();
     o.reportInterval = "foo";
     o.vmIsHealthy = true;
     o.vmStartupTime = "foo";
@@ -4516,7 +4516,7 @@
 checkWorkerHealthReport(api.WorkerHealthReport o) {
   buildCounterWorkerHealthReport++;
   if (buildCounterWorkerHealthReport < 3) {
-    checkUnnamed3334(o.pods);
+    checkUnnamed3349(o.pods);
     unittest.expect(o.reportInterval, unittest.equals('foo'));
     unittest.expect(o.vmIsHealthy, unittest.isTrue);
     unittest.expect(o.vmStartupTime, unittest.equals('foo'));
@@ -4543,14 +4543,14 @@
   buildCounterWorkerHealthReportResponse--;
 }
 
-buildUnnamed3335() {
+buildUnnamed3350() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3335(core.Map<core.String, core.String> o) {
+checkUnnamed3350(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -4561,7 +4561,7 @@
   var o = new api.WorkerMessage();
   buildCounterWorkerMessage++;
   if (buildCounterWorkerMessage < 3) {
-    o.labels = buildUnnamed3335();
+    o.labels = buildUnnamed3350();
     o.time = "foo";
     o.workerHealthReport = buildWorkerHealthReport();
     o.workerMessageCode = buildWorkerMessageCode();
@@ -4575,7 +4575,7 @@
 checkWorkerMessage(api.WorkerMessage o) {
   buildCounterWorkerMessage++;
   if (buildCounterWorkerMessage < 3) {
-    checkUnnamed3335(o.labels);
+    checkUnnamed3350(o.labels);
     unittest.expect(o.time, unittest.equals('foo'));
     checkWorkerHealthReport(o.workerHealthReport);
     checkWorkerMessageCode(o.workerMessageCode);
@@ -4585,7 +4585,7 @@
   buildCounterWorkerMessage--;
 }
 
-buildUnnamed3336() {
+buildUnnamed3351() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -4600,7 +4600,7 @@
   return o;
 }
 
-checkUnnamed3336(core.Map<core.String, core.Object> o) {
+checkUnnamed3351(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted47 = (o["x"]) as core.Map;
   unittest.expect(casted47, unittest.hasLength(3));
@@ -4620,7 +4620,7 @@
   buildCounterWorkerMessageCode++;
   if (buildCounterWorkerMessageCode < 3) {
     o.code = "foo";
-    o.parameters = buildUnnamed3336();
+    o.parameters = buildUnnamed3351();
   }
   buildCounterWorkerMessageCode--;
   return o;
@@ -4630,7 +4630,7 @@
   buildCounterWorkerMessageCode++;
   if (buildCounterWorkerMessageCode < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed3336(o.parameters);
+    checkUnnamed3351(o.parameters);
   }
   buildCounterWorkerMessageCode--;
 }
@@ -4658,46 +4658,46 @@
   buildCounterWorkerMessageResponse--;
 }
 
-buildUnnamed3337() {
+buildUnnamed3352() {
   var o = new core.List<api.Disk>();
   o.add(buildDisk());
   o.add(buildDisk());
   return o;
 }
 
-checkUnnamed3337(core.List<api.Disk> o) {
+checkUnnamed3352(core.List<api.Disk> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDisk(o[0]);
   checkDisk(o[1]);
 }
 
-buildUnnamed3338() {
+buildUnnamed3353() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3338(core.Map<core.String, core.String> o) {
+checkUnnamed3353(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed3339() {
+buildUnnamed3354() {
   var o = new core.List<api.Package>();
   o.add(buildPackage());
   o.add(buildPackage());
   return o;
 }
 
-checkUnnamed3339(core.List<api.Package> o) {
+checkUnnamed3354(core.List<api.Package> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPackage(o[0]);
   checkPackage(o[1]);
 }
 
-buildUnnamed3340() {
+buildUnnamed3355() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -4712,7 +4712,7 @@
   return o;
 }
 
-checkUnnamed3340(core.Map<core.String, core.Object> o) {
+checkUnnamed3355(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted49 = (o["x"]) as core.Map;
   unittest.expect(casted49, unittest.hasLength(3));
@@ -4732,7 +4732,7 @@
   buildCounterWorkerPool++;
   if (buildCounterWorkerPool < 3) {
     o.autoscalingSettings = buildAutoscalingSettings();
-    o.dataDisks = buildUnnamed3337();
+    o.dataDisks = buildUnnamed3352();
     o.defaultPackageSet = "foo";
     o.diskSizeGb = 42;
     o.diskSourceImage = "foo";
@@ -4740,13 +4740,13 @@
     o.ipConfiguration = "foo";
     o.kind = "foo";
     o.machineType = "foo";
-    o.metadata = buildUnnamed3338();
+    o.metadata = buildUnnamed3353();
     o.network = "foo";
     o.numThreadsPerWorker = 42;
     o.numWorkers = 42;
     o.onHostMaintenance = "foo";
-    o.packages = buildUnnamed3339();
-    o.poolArgs = buildUnnamed3340();
+    o.packages = buildUnnamed3354();
+    o.poolArgs = buildUnnamed3355();
     o.subnetwork = "foo";
     o.taskrunnerSettings = buildTaskRunnerSettings();
     o.teardownPolicy = "foo";
@@ -4761,7 +4761,7 @@
   buildCounterWorkerPool++;
   if (buildCounterWorkerPool < 3) {
     checkAutoscalingSettings(o.autoscalingSettings);
-    checkUnnamed3337(o.dataDisks);
+    checkUnnamed3352(o.dataDisks);
     unittest.expect(o.defaultPackageSet, unittest.equals('foo'));
     unittest.expect(o.diskSizeGb, unittest.equals(42));
     unittest.expect(o.diskSourceImage, unittest.equals('foo'));
@@ -4769,13 +4769,13 @@
     unittest.expect(o.ipConfiguration, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.machineType, unittest.equals('foo'));
-    checkUnnamed3338(o.metadata);
+    checkUnnamed3353(o.metadata);
     unittest.expect(o.network, unittest.equals('foo'));
     unittest.expect(o.numThreadsPerWorker, unittest.equals(42));
     unittest.expect(o.numWorkers, unittest.equals(42));
     unittest.expect(o.onHostMaintenance, unittest.equals('foo'));
-    checkUnnamed3339(o.packages);
-    checkUnnamed3340(o.poolArgs);
+    checkUnnamed3354(o.packages);
+    checkUnnamed3355(o.poolArgs);
     unittest.expect(o.subnetwork, unittest.equals('foo'));
     checkTaskRunnerSettings(o.taskrunnerSettings);
     unittest.expect(o.teardownPolicy, unittest.equals('foo'));
@@ -5884,6 +5884,7 @@
       api.ProjectsResourceApi res = new api.DataflowApi(mock).projects;
       var arg_request = buildSendWorkerMessagesRequest();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SendWorkerMessagesRequest.fromJson(json);
         checkSendWorkerMessagesRequest(obj);
@@ -5926,6 +5927,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -5933,7 +5935,7 @@
         var resp = convert.JSON.encode(buildSendWorkerMessagesResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.workerMessages(arg_request, arg_projectId).then(
+      res.workerMessages(arg_request, arg_projectId, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.SendWorkerMessagesResponse response) {
         checkSendWorkerMessagesResponse(response);
       })));
@@ -5945,11 +5947,12 @@
       var mock = new HttpServerMock();
       api.ProjectsJobsResourceApi res = new api.DataflowApi(mock).projects.jobs;
       var arg_projectId = "foo";
+      var arg_view = "foo";
+      var arg_filter = "foo";
       var arg_location = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
-      var arg_view = "foo";
-      var arg_filter = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -5989,14 +5992,15 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["location"].first, unittest.equals(arg_location));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
-        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
-        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6006,11 +6010,12 @@
       }), true);
       res
           .aggregated(arg_projectId,
+              view: arg_view,
+              filter: arg_filter,
               location: arg_location,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              view: arg_view,
-              filter: arg_filter)
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListJobsResponse response) {
         checkListJobsResponse(response);
       })));
@@ -6021,9 +6026,10 @@
       api.ProjectsJobsResourceApi res = new api.DataflowApi(mock).projects.jobs;
       var arg_request = buildJob();
       var arg_projectId = "foo";
-      var arg_view = "foo";
       var arg_location = "foo";
       var arg_replaceJobId = "foo";
+      var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Job.fromJson(json);
         checkJob(obj);
@@ -6066,11 +6072,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
         unittest.expect(
             queryMap["location"].first, unittest.equals(arg_location));
         unittest.expect(
             queryMap["replaceJobId"].first, unittest.equals(arg_replaceJobId));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6080,9 +6087,10 @@
       }), true);
       res
           .create(arg_request, arg_projectId,
-              view: arg_view,
               location: arg_location,
-              replaceJobId: arg_replaceJobId)
+              replaceJobId: arg_replaceJobId,
+              view: arg_view,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Job response) {
         checkJob(response);
       })));
@@ -6093,8 +6101,9 @@
       api.ProjectsJobsResourceApi res = new api.DataflowApi(mock).projects.jobs;
       var arg_projectId = "foo";
       var arg_jobId = "foo";
-      var arg_view = "foo";
       var arg_location = "foo";
+      var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6137,9 +6146,10 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
         unittest.expect(
             queryMap["location"].first, unittest.equals(arg_location));
+        unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6148,7 +6158,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_projectId, arg_jobId, view: arg_view, location: arg_location)
+          .get(arg_projectId, arg_jobId,
+              location: arg_location, view: arg_view, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Job response) {
         checkJob(response);
       })));
@@ -6159,8 +6170,9 @@
       api.ProjectsJobsResourceApi res = new api.DataflowApi(mock).projects.jobs;
       var arg_projectId = "foo";
       var arg_jobId = "foo";
-      var arg_startTime = "foo";
       var arg_location = "foo";
+      var arg_startTime = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6210,9 +6222,10 @@
           }
         }
         unittest.expect(
-            queryMap["startTime"].first, unittest.equals(arg_startTime));
-        unittest.expect(
             queryMap["location"].first, unittest.equals(arg_location));
+        unittest.expect(
+            queryMap["startTime"].first, unittest.equals(arg_startTime));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6222,7 +6235,9 @@
       }), true);
       res
           .getMetrics(arg_projectId, arg_jobId,
-              startTime: arg_startTime, location: arg_location)
+              location: arg_location,
+              startTime: arg_startTime,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.JobMetrics response) {
         checkJobMetrics(response);
       })));
@@ -6237,6 +6252,7 @@
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6284,6 +6300,7 @@
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6297,7 +6314,8 @@
               location: arg_location,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              view: arg_view)
+              view: arg_view,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListJobsResponse response) {
         checkListJobsResponse(response);
       })));
@@ -6310,6 +6328,7 @@
       var arg_projectId = "foo";
       var arg_jobId = "foo";
       var arg_location = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Job.fromJson(json);
         checkJob(obj);
@@ -6357,6 +6376,7 @@
         }
         unittest.expect(
             queryMap["location"].first, unittest.equals(arg_location));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6365,7 +6385,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_projectId, arg_jobId, location: arg_location)
+          .update(arg_request, arg_projectId, arg_jobId,
+              location: arg_location, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Job response) {
         checkJob(response);
       })));
@@ -6380,6 +6401,7 @@
       var arg_request = buildGetDebugConfigRequest();
       var arg_projectId = "foo";
       var arg_jobId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetDebugConfigRequest.fromJson(json);
         checkGetDebugConfigRequest(obj);
@@ -6431,6 +6453,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6439,7 +6462,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getConfig(arg_request, arg_projectId, arg_jobId)
+          .getConfig(arg_request, arg_projectId, arg_jobId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GetDebugConfigResponse response) {
         checkGetDebugConfigResponse(response);
       })));
@@ -6452,6 +6476,7 @@
       var arg_request = buildSendDebugCaptureRequest();
       var arg_projectId = "foo";
       var arg_jobId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SendDebugCaptureRequest.fromJson(json);
         checkSendDebugCaptureRequest(obj);
@@ -6503,6 +6528,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6511,7 +6537,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .sendCapture(arg_request, arg_projectId, arg_jobId)
+          .sendCapture(arg_request, arg_projectId, arg_jobId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SendDebugCaptureResponse response) {
         checkSendDebugCaptureResponse(response);
       })));
@@ -6525,12 +6552,13 @@
           new api.DataflowApi(mock).projects.jobs.messages;
       var arg_projectId = "foo";
       var arg_jobId = "foo";
-      var arg_endTime = "foo";
       var arg_location = "foo";
+      var arg_endTime = "foo";
       var arg_startTime = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_minimumImportance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6580,10 +6608,10 @@
           }
         }
         unittest.expect(
-            queryMap["endTime"].first, unittest.equals(arg_endTime));
-        unittest.expect(
             queryMap["location"].first, unittest.equals(arg_location));
         unittest.expect(
+            queryMap["endTime"].first, unittest.equals(arg_endTime));
+        unittest.expect(
             queryMap["startTime"].first, unittest.equals(arg_startTime));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
@@ -6591,6 +6619,7 @@
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["minimumImportance"].first,
             unittest.equals(arg_minimumImportance));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6600,12 +6629,13 @@
       }), true);
       res
           .list(arg_projectId, arg_jobId,
-              endTime: arg_endTime,
               location: arg_location,
+              endTime: arg_endTime,
               startTime: arg_startTime,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              minimumImportance: arg_minimumImportance)
+              minimumImportance: arg_minimumImportance,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListJobMessagesResponse response) {
         checkListJobMessagesResponse(response);
       })));
@@ -6620,6 +6650,7 @@
       var arg_request = buildLeaseWorkItemRequest();
       var arg_projectId = "foo";
       var arg_jobId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LeaseWorkItemRequest.fromJson(json);
         checkLeaseWorkItemRequest(obj);
@@ -6671,6 +6702,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6679,7 +6711,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .lease(arg_request, arg_projectId, arg_jobId)
+          .lease(arg_request, arg_projectId, arg_jobId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LeaseWorkItemResponse response) {
         checkLeaseWorkItemResponse(response);
       })));
@@ -6692,6 +6724,7 @@
       var arg_request = buildReportWorkItemStatusRequest();
       var arg_projectId = "foo";
       var arg_jobId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ReportWorkItemStatusRequest.fromJson(json);
         checkReportWorkItemStatusRequest(obj);
@@ -6743,6 +6776,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6750,8 +6784,11 @@
         var resp = convert.JSON.encode(buildReportWorkItemStatusResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.reportStatus(arg_request, arg_projectId, arg_jobId).then(
-          unittest.expectAsync1(((api.ReportWorkItemStatusResponse response) {
+      res
+          .reportStatus(arg_request, arg_projectId, arg_jobId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ReportWorkItemStatusResponse response) {
         checkReportWorkItemStatusResponse(response);
       })));
     });
@@ -6765,6 +6802,7 @@
       var arg_request = buildSendWorkerMessagesRequest();
       var arg_projectId = "foo";
       var arg_location = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SendWorkerMessagesRequest.fromJson(json);
         checkSendWorkerMessagesRequest(obj);
@@ -6816,6 +6854,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6823,8 +6862,11 @@
         var resp = convert.JSON.encode(buildSendWorkerMessagesResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.workerMessages(arg_request, arg_projectId, arg_location).then(
-          unittest.expectAsync1(((api.SendWorkerMessagesResponse response) {
+      res
+          .workerMessages(arg_request, arg_projectId, arg_location,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.SendWorkerMessagesResponse response) {
         checkSendWorkerMessagesResponse(response);
       })));
     });
@@ -6840,6 +6882,7 @@
       var arg_location = "foo";
       var arg_view = "foo";
       var arg_replaceJobId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Job.fromJson(json);
         checkJob(obj);
@@ -6894,6 +6937,7 @@
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
         unittest.expect(
             queryMap["replaceJobId"].first, unittest.equals(arg_replaceJobId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6903,7 +6947,9 @@
       }), true);
       res
           .create(arg_request, arg_projectId, arg_location,
-              view: arg_view, replaceJobId: arg_replaceJobId)
+              view: arg_view,
+              replaceJobId: arg_replaceJobId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Job response) {
         checkJob(response);
       })));
@@ -6917,6 +6963,7 @@
       var arg_location = "foo";
       var arg_jobId = "foo";
       var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -6969,6 +7016,7 @@
           }
         }
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -6977,7 +7025,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_projectId, arg_location, arg_jobId, view: arg_view)
+          .get(arg_projectId, arg_location, arg_jobId,
+              view: arg_view, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Job response) {
         checkJob(response);
       })));
@@ -6991,6 +7040,7 @@
       var arg_location = "foo";
       var arg_jobId = "foo";
       var arg_startTime = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7050,6 +7100,7 @@
         }
         unittest.expect(
             queryMap["startTime"].first, unittest.equals(arg_startTime));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7059,7 +7110,7 @@
       }), true);
       res
           .getMetrics(arg_projectId, arg_location, arg_jobId,
-              startTime: arg_startTime)
+              startTime: arg_startTime, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.JobMetrics response) {
         checkJobMetrics(response);
       })));
@@ -7075,6 +7126,7 @@
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
       var arg_view = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7129,6 +7181,7 @@
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7141,7 +7194,8 @@
               filter: arg_filter,
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
-              view: arg_view)
+              view: arg_view,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListJobsResponse response) {
         checkListJobsResponse(response);
       })));
@@ -7155,6 +7209,7 @@
       var arg_projectId = "foo";
       var arg_location = "foo";
       var arg_jobId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Job.fromJson(json);
         checkJob(obj);
@@ -7209,6 +7264,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7217,7 +7273,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_projectId, arg_location, arg_jobId)
+          .update(arg_request, arg_projectId, arg_location, arg_jobId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Job response) {
         checkJob(response);
       })));
@@ -7233,6 +7290,7 @@
       var arg_projectId = "foo";
       var arg_location = "foo";
       var arg_jobId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetDebugConfigRequest.fromJson(json);
         checkGetDebugConfigRequest(obj);
@@ -7293,6 +7351,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7301,7 +7360,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getConfig(arg_request, arg_projectId, arg_location, arg_jobId)
+          .getConfig(arg_request, arg_projectId, arg_location, arg_jobId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GetDebugConfigResponse response) {
         checkGetDebugConfigResponse(response);
       })));
@@ -7315,6 +7375,7 @@
       var arg_projectId = "foo";
       var arg_location = "foo";
       var arg_jobId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SendDebugCaptureRequest.fromJson(json);
         checkSendDebugCaptureRequest(obj);
@@ -7375,6 +7436,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7383,7 +7445,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .sendCapture(arg_request, arg_projectId, arg_location, arg_jobId)
+          .sendCapture(arg_request, arg_projectId, arg_location, arg_jobId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SendDebugCaptureResponse response) {
         checkSendDebugCaptureResponse(response);
       })));
@@ -7398,11 +7461,12 @@
       var arg_projectId = "foo";
       var arg_location = "foo";
       var arg_jobId = "foo";
-      var arg_pageSize = 42;
-      var arg_minimumImportance = "foo";
       var arg_endTime = "foo";
       var arg_startTime = "foo";
       var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_minimumImportance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7460,16 +7524,17 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(core.int.parse(queryMap["pageSize"].first),
-            unittest.equals(arg_pageSize));
-        unittest.expect(queryMap["minimumImportance"].first,
-            unittest.equals(arg_minimumImportance));
         unittest.expect(
             queryMap["endTime"].first, unittest.equals(arg_endTime));
         unittest.expect(
             queryMap["startTime"].first, unittest.equals(arg_startTime));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["minimumImportance"].first,
+            unittest.equals(arg_minimumImportance));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7479,11 +7544,12 @@
       }), true);
       res
           .list(arg_projectId, arg_location, arg_jobId,
-              pageSize: arg_pageSize,
-              minimumImportance: arg_minimumImportance,
               endTime: arg_endTime,
               startTime: arg_startTime,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              minimumImportance: arg_minimumImportance,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListJobMessagesResponse response) {
         checkListJobMessagesResponse(response);
       })));
@@ -7499,6 +7565,7 @@
       var arg_projectId = "foo";
       var arg_location = "foo";
       var arg_jobId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LeaseWorkItemRequest.fromJson(json);
         checkLeaseWorkItemRequest(obj);
@@ -7559,6 +7626,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7567,7 +7635,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .lease(arg_request, arg_projectId, arg_location, arg_jobId)
+          .lease(arg_request, arg_projectId, arg_location, arg_jobId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LeaseWorkItemResponse response) {
         checkLeaseWorkItemResponse(response);
       })));
@@ -7581,6 +7650,7 @@
       var arg_projectId = "foo";
       var arg_location = "foo";
       var arg_jobId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ReportWorkItemStatusRequest.fromJson(json);
         checkReportWorkItemStatusRequest(obj);
@@ -7641,6 +7711,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7649,7 +7720,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .reportStatus(arg_request, arg_projectId, arg_location, arg_jobId)
+          .reportStatus(arg_request, arg_projectId, arg_location, arg_jobId,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ReportWorkItemStatusResponse response) {
         checkReportWorkItemStatusResponse(response);
@@ -7665,6 +7737,7 @@
       var arg_request = buildCreateJobFromTemplateRequest();
       var arg_projectId = "foo";
       var arg_location = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CreateJobFromTemplateRequest.fromJson(json);
         checkCreateJobFromTemplateRequest(obj);
@@ -7716,6 +7789,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7724,7 +7798,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_projectId, arg_location)
+          .create(arg_request, arg_projectId, arg_location,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Job response) {
         checkJob(response);
       })));
@@ -7738,6 +7813,7 @@
       var arg_location = "foo";
       var arg_view = "foo";
       var arg_gcsPath = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7789,6 +7865,7 @@
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
         unittest.expect(
             queryMap["gcsPath"].first, unittest.equals(arg_gcsPath));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7798,7 +7875,7 @@
       }), true);
       res
           .get(arg_projectId, arg_location,
-              view: arg_view, gcsPath: arg_gcsPath)
+              view: arg_view, gcsPath: arg_gcsPath, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GetTemplateResponse response) {
         checkGetTemplateResponse(response);
       })));
@@ -7813,6 +7890,7 @@
       var arg_location = "foo";
       var arg_validateOnly = true;
       var arg_gcsPath = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LaunchTemplateParameters.fromJson(json);
         checkLaunchTemplateParameters(obj);
@@ -7868,6 +7946,7 @@
             unittest.equals("$arg_validateOnly"));
         unittest.expect(
             queryMap["gcsPath"].first, unittest.equals(arg_gcsPath));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7877,7 +7956,9 @@
       }), true);
       res
           .launch(arg_request, arg_projectId, arg_location,
-              validateOnly: arg_validateOnly, gcsPath: arg_gcsPath)
+              validateOnly: arg_validateOnly,
+              gcsPath: arg_gcsPath,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LaunchTemplateResponse response) {
         checkLaunchTemplateResponse(response);
       })));
@@ -7891,6 +7972,7 @@
           new api.DataflowApi(mock).projects.templates;
       var arg_request = buildCreateJobFromTemplateRequest();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.CreateJobFromTemplateRequest.fromJson(json);
         checkCreateJobFromTemplateRequest(obj);
@@ -7933,6 +8015,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -7941,7 +8024,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_projectId)
+          .create(arg_request, arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Job response) {
         checkJob(response);
       })));
@@ -7955,6 +8038,7 @@
       var arg_location = "foo";
       var arg_view = "foo";
       var arg_gcsPath = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -7999,6 +8083,7 @@
         unittest.expect(queryMap["view"].first, unittest.equals(arg_view));
         unittest.expect(
             queryMap["gcsPath"].first, unittest.equals(arg_gcsPath));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8008,7 +8093,10 @@
       }), true);
       res
           .get(arg_projectId,
-              location: arg_location, view: arg_view, gcsPath: arg_gcsPath)
+              location: arg_location,
+              view: arg_view,
+              gcsPath: arg_gcsPath,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GetTemplateResponse response) {
         checkGetTemplateResponse(response);
       })));
@@ -8023,6 +8111,7 @@
       var arg_gcsPath = "foo";
       var arg_location = "foo";
       var arg_validateOnly = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LaunchTemplateParameters.fromJson(json);
         checkLaunchTemplateParameters(obj);
@@ -8071,6 +8160,7 @@
             queryMap["location"].first, unittest.equals(arg_location));
         unittest.expect(queryMap["validateOnly"].first,
             unittest.equals("$arg_validateOnly"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -8082,7 +8172,8 @@
           .launch(arg_request, arg_projectId,
               gcsPath: arg_gcsPath,
               location: arg_location,
-              validateOnly: arg_validateOnly)
+              validateOnly: arg_validateOnly,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LaunchTemplateResponse response) {
         checkLaunchTemplateResponse(response);
       })));
diff --git a/generated/googleapis_beta/test/dlp/v2beta1_test.dart b/generated/googleapis_beta/test/dlp/v2beta1_test.dart
index 6e6d8bb..9b7d075 100644
--- a/generated/googleapis_beta/test/dlp/v2beta1_test.dart
+++ b/generated/googleapis_beta/test/dlp/v2beta1_test.dart
@@ -66,14 +66,14 @@
   buildCounterGoogleLongrunningCancelOperationRequest--;
 }
 
-buildUnnamed3452() {
+buildUnnamed3468() {
   var o = new core.List<api.GoogleLongrunningOperation>();
   o.add(buildGoogleLongrunningOperation());
   o.add(buildGoogleLongrunningOperation());
   return o;
 }
 
-checkUnnamed3452(core.List<api.GoogleLongrunningOperation> o) {
+checkUnnamed3468(core.List<api.GoogleLongrunningOperation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleLongrunningOperation(o[0]);
   checkGoogleLongrunningOperation(o[1]);
@@ -85,7 +85,7 @@
   buildCounterGoogleLongrunningListOperationsResponse++;
   if (buildCounterGoogleLongrunningListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed3452();
+    o.operations = buildUnnamed3468();
   }
   buildCounterGoogleLongrunningListOperationsResponse--;
   return o;
@@ -96,12 +96,12 @@
   buildCounterGoogleLongrunningListOperationsResponse++;
   if (buildCounterGoogleLongrunningListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3452(o.operations);
+    checkUnnamed3468(o.operations);
   }
   buildCounterGoogleLongrunningListOperationsResponse--;
 }
 
-buildUnnamed3453() {
+buildUnnamed3469() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -116,7 +116,7 @@
   return o;
 }
 
-checkUnnamed3453(core.Map<core.String, core.Object> o) {
+checkUnnamed3469(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -130,7 +130,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3454() {
+buildUnnamed3470() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -145,7 +145,7 @@
   return o;
 }
 
-checkUnnamed3454(core.Map<core.String, core.Object> o) {
+checkUnnamed3470(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -166,9 +166,9 @@
   if (buildCounterGoogleLongrunningOperation < 3) {
     o.done = true;
     o.error = buildGoogleRpcStatus();
-    o.metadata = buildUnnamed3453();
+    o.metadata = buildUnnamed3469();
     o.name = "foo";
-    o.response = buildUnnamed3454();
+    o.response = buildUnnamed3470();
   }
   buildCounterGoogleLongrunningOperation--;
   return o;
@@ -179,9 +179,9 @@
   if (buildCounterGoogleLongrunningOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkGoogleRpcStatus(o.error);
-    checkUnnamed3453(o.metadata);
+    checkUnnamed3469(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3454(o.response);
+    checkUnnamed3470(o.response);
   }
   buildCounterGoogleLongrunningOperation--;
 }
@@ -208,14 +208,14 @@
   buildCounterGooglePrivacyDlpV2beta1AnalyzeDataSourceRiskRequest--;
 }
 
-buildUnnamed3455() {
+buildUnnamed3471() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1FieldId>();
   o.add(buildGooglePrivacyDlpV2beta1FieldId());
   o.add(buildGooglePrivacyDlpV2beta1FieldId());
   return o;
 }
 
-checkUnnamed3455(core.List<api.GooglePrivacyDlpV2beta1FieldId> o) {
+checkUnnamed3471(core.List<api.GooglePrivacyDlpV2beta1FieldId> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1FieldId(o[0]);
   checkGooglePrivacyDlpV2beta1FieldId(o[1]);
@@ -226,7 +226,7 @@
   var o = new api.GooglePrivacyDlpV2beta1BigQueryOptions();
   buildCounterGooglePrivacyDlpV2beta1BigQueryOptions++;
   if (buildCounterGooglePrivacyDlpV2beta1BigQueryOptions < 3) {
-    o.identifyingFields = buildUnnamed3455();
+    o.identifyingFields = buildUnnamed3471();
     o.tableReference = buildGooglePrivacyDlpV2beta1BigQueryTable();
   }
   buildCounterGooglePrivacyDlpV2beta1BigQueryOptions--;
@@ -237,7 +237,7 @@
     api.GooglePrivacyDlpV2beta1BigQueryOptions o) {
   buildCounterGooglePrivacyDlpV2beta1BigQueryOptions++;
   if (buildCounterGooglePrivacyDlpV2beta1BigQueryOptions < 3) {
-    checkUnnamed3455(o.identifyingFields);
+    checkUnnamed3471(o.identifyingFields);
     checkGooglePrivacyDlpV2beta1BigQueryTable(o.tableReference);
   }
   buildCounterGooglePrivacyDlpV2beta1BigQueryOptions--;
@@ -290,14 +290,14 @@
   buildCounterGooglePrivacyDlpV2beta1Bucket--;
 }
 
-buildUnnamed3456() {
+buildUnnamed3472() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1Bucket>();
   o.add(buildGooglePrivacyDlpV2beta1Bucket());
   o.add(buildGooglePrivacyDlpV2beta1Bucket());
   return o;
 }
 
-checkUnnamed3456(core.List<api.GooglePrivacyDlpV2beta1Bucket> o) {
+checkUnnamed3472(core.List<api.GooglePrivacyDlpV2beta1Bucket> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1Bucket(o[0]);
   checkGooglePrivacyDlpV2beta1Bucket(o[1]);
@@ -308,7 +308,7 @@
   var o = new api.GooglePrivacyDlpV2beta1BucketingConfig();
   buildCounterGooglePrivacyDlpV2beta1BucketingConfig++;
   if (buildCounterGooglePrivacyDlpV2beta1BucketingConfig < 3) {
-    o.buckets = buildUnnamed3456();
+    o.buckets = buildUnnamed3472();
   }
   buildCounterGooglePrivacyDlpV2beta1BucketingConfig--;
   return o;
@@ -318,7 +318,7 @@
     api.GooglePrivacyDlpV2beta1BucketingConfig o) {
   buildCounterGooglePrivacyDlpV2beta1BucketingConfig++;
   if (buildCounterGooglePrivacyDlpV2beta1BucketingConfig < 3) {
-    checkUnnamed3456(o.buckets);
+    checkUnnamed3472(o.buckets);
   }
   buildCounterGooglePrivacyDlpV2beta1BucketingConfig--;
 }
@@ -343,14 +343,14 @@
   buildCounterGooglePrivacyDlpV2beta1CategoricalStatsConfig--;
 }
 
-buildUnnamed3457() {
+buildUnnamed3473() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1ValueFrequency>();
   o.add(buildGooglePrivacyDlpV2beta1ValueFrequency());
   o.add(buildGooglePrivacyDlpV2beta1ValueFrequency());
   return o;
 }
 
-checkUnnamed3457(core.List<api.GooglePrivacyDlpV2beta1ValueFrequency> o) {
+checkUnnamed3473(core.List<api.GooglePrivacyDlpV2beta1ValueFrequency> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1ValueFrequency(o[0]);
   checkGooglePrivacyDlpV2beta1ValueFrequency(o[1]);
@@ -362,7 +362,7 @@
   buildCounterGooglePrivacyDlpV2beta1CategoricalStatsHistogramBucket++;
   if (buildCounterGooglePrivacyDlpV2beta1CategoricalStatsHistogramBucket < 3) {
     o.bucketSize = "foo";
-    o.bucketValues = buildUnnamed3457();
+    o.bucketValues = buildUnnamed3473();
     o.valueFrequencyLowerBound = "foo";
     o.valueFrequencyUpperBound = "foo";
   }
@@ -375,14 +375,14 @@
   buildCounterGooglePrivacyDlpV2beta1CategoricalStatsHistogramBucket++;
   if (buildCounterGooglePrivacyDlpV2beta1CategoricalStatsHistogramBucket < 3) {
     unittest.expect(o.bucketSize, unittest.equals('foo'));
-    checkUnnamed3457(o.bucketValues);
+    checkUnnamed3473(o.bucketValues);
     unittest.expect(o.valueFrequencyLowerBound, unittest.equals('foo'));
     unittest.expect(o.valueFrequencyUpperBound, unittest.equals('foo'));
   }
   buildCounterGooglePrivacyDlpV2beta1CategoricalStatsHistogramBucket--;
 }
 
-buildUnnamed3458() {
+buildUnnamed3474() {
   var o = new core
       .List<api.GooglePrivacyDlpV2beta1CategoricalStatsHistogramBucket>();
   o.add(buildGooglePrivacyDlpV2beta1CategoricalStatsHistogramBucket());
@@ -390,7 +390,7 @@
   return o;
 }
 
-checkUnnamed3458(
+checkUnnamed3474(
     core.List<api.GooglePrivacyDlpV2beta1CategoricalStatsHistogramBucket> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1CategoricalStatsHistogramBucket(o[0]);
@@ -402,7 +402,7 @@
   var o = new api.GooglePrivacyDlpV2beta1CategoricalStatsResult();
   buildCounterGooglePrivacyDlpV2beta1CategoricalStatsResult++;
   if (buildCounterGooglePrivacyDlpV2beta1CategoricalStatsResult < 3) {
-    o.valueFrequencyHistogramBuckets = buildUnnamed3458();
+    o.valueFrequencyHistogramBuckets = buildUnnamed3474();
   }
   buildCounterGooglePrivacyDlpV2beta1CategoricalStatsResult--;
   return o;
@@ -412,7 +412,7 @@
     api.GooglePrivacyDlpV2beta1CategoricalStatsResult o) {
   buildCounterGooglePrivacyDlpV2beta1CategoricalStatsResult++;
   if (buildCounterGooglePrivacyDlpV2beta1CategoricalStatsResult < 3) {
-    checkUnnamed3458(o.valueFrequencyHistogramBuckets);
+    checkUnnamed3474(o.valueFrequencyHistogramBuckets);
   }
   buildCounterGooglePrivacyDlpV2beta1CategoricalStatsResult--;
 }
@@ -439,14 +439,14 @@
   buildCounterGooglePrivacyDlpV2beta1CategoryDescription--;
 }
 
-buildUnnamed3459() {
+buildUnnamed3475() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1CharsToIgnore>();
   o.add(buildGooglePrivacyDlpV2beta1CharsToIgnore());
   o.add(buildGooglePrivacyDlpV2beta1CharsToIgnore());
   return o;
 }
 
-checkUnnamed3459(core.List<api.GooglePrivacyDlpV2beta1CharsToIgnore> o) {
+checkUnnamed3475(core.List<api.GooglePrivacyDlpV2beta1CharsToIgnore> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1CharsToIgnore(o[0]);
   checkGooglePrivacyDlpV2beta1CharsToIgnore(o[1]);
@@ -457,7 +457,7 @@
   var o = new api.GooglePrivacyDlpV2beta1CharacterMaskConfig();
   buildCounterGooglePrivacyDlpV2beta1CharacterMaskConfig++;
   if (buildCounterGooglePrivacyDlpV2beta1CharacterMaskConfig < 3) {
-    o.charactersToIgnore = buildUnnamed3459();
+    o.charactersToIgnore = buildUnnamed3475();
     o.maskingCharacter = "foo";
     o.numberToMask = 42;
     o.reverseOrder = true;
@@ -470,7 +470,7 @@
     api.GooglePrivacyDlpV2beta1CharacterMaskConfig o) {
   buildCounterGooglePrivacyDlpV2beta1CharacterMaskConfig++;
   if (buildCounterGooglePrivacyDlpV2beta1CharacterMaskConfig < 3) {
-    checkUnnamed3459(o.charactersToIgnore);
+    checkUnnamed3475(o.charactersToIgnore);
     unittest.expect(o.maskingCharacter, unittest.equals('foo'));
     unittest.expect(o.numberToMask, unittest.equals(42));
     unittest.expect(o.reverseOrder, unittest.isTrue);
@@ -608,14 +608,14 @@
   buildCounterGooglePrivacyDlpV2beta1Condition--;
 }
 
-buildUnnamed3460() {
+buildUnnamed3476() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1Condition>();
   o.add(buildGooglePrivacyDlpV2beta1Condition());
   o.add(buildGooglePrivacyDlpV2beta1Condition());
   return o;
 }
 
-checkUnnamed3460(core.List<api.GooglePrivacyDlpV2beta1Condition> o) {
+checkUnnamed3476(core.List<api.GooglePrivacyDlpV2beta1Condition> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1Condition(o[0]);
   checkGooglePrivacyDlpV2beta1Condition(o[1]);
@@ -626,7 +626,7 @@
   var o = new api.GooglePrivacyDlpV2beta1Conditions();
   buildCounterGooglePrivacyDlpV2beta1Conditions++;
   if (buildCounterGooglePrivacyDlpV2beta1Conditions < 3) {
-    o.conditions = buildUnnamed3460();
+    o.conditions = buildUnnamed3476();
   }
   buildCounterGooglePrivacyDlpV2beta1Conditions--;
   return o;
@@ -636,7 +636,7 @@
     api.GooglePrivacyDlpV2beta1Conditions o) {
   buildCounterGooglePrivacyDlpV2beta1Conditions++;
   if (buildCounterGooglePrivacyDlpV2beta1Conditions < 3) {
-    checkUnnamed3460(o.conditions);
+    checkUnnamed3476(o.conditions);
   }
   buildCounterGooglePrivacyDlpV2beta1Conditions--;
 }
@@ -764,6 +764,28 @@
   buildCounterGooglePrivacyDlpV2beta1CryptoReplaceFfxFpeConfig--;
 }
 
+core.int buildCounterGooglePrivacyDlpV2beta1CustomInfoType = 0;
+buildGooglePrivacyDlpV2beta1CustomInfoType() {
+  var o = new api.GooglePrivacyDlpV2beta1CustomInfoType();
+  buildCounterGooglePrivacyDlpV2beta1CustomInfoType++;
+  if (buildCounterGooglePrivacyDlpV2beta1CustomInfoType < 3) {
+    o.dictionary = buildGooglePrivacyDlpV2beta1Dictionary();
+    o.infoType = buildGooglePrivacyDlpV2beta1InfoType();
+  }
+  buildCounterGooglePrivacyDlpV2beta1CustomInfoType--;
+  return o;
+}
+
+checkGooglePrivacyDlpV2beta1CustomInfoType(
+    api.GooglePrivacyDlpV2beta1CustomInfoType o) {
+  buildCounterGooglePrivacyDlpV2beta1CustomInfoType++;
+  if (buildCounterGooglePrivacyDlpV2beta1CustomInfoType < 3) {
+    checkGooglePrivacyDlpV2beta1Dictionary(o.dictionary);
+    checkGooglePrivacyDlpV2beta1InfoType(o.infoType);
+  }
+  buildCounterGooglePrivacyDlpV2beta1CustomInfoType--;
+}
+
 core.int buildCounterGooglePrivacyDlpV2beta1DatastoreKey = 0;
 buildGooglePrivacyDlpV2beta1DatastoreKey() {
   var o = new api.GooglePrivacyDlpV2beta1DatastoreKey();
@@ -784,14 +806,14 @@
   buildCounterGooglePrivacyDlpV2beta1DatastoreKey--;
 }
 
-buildUnnamed3461() {
+buildUnnamed3477() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1Projection>();
   o.add(buildGooglePrivacyDlpV2beta1Projection());
   o.add(buildGooglePrivacyDlpV2beta1Projection());
   return o;
 }
 
-checkUnnamed3461(core.List<api.GooglePrivacyDlpV2beta1Projection> o) {
+checkUnnamed3477(core.List<api.GooglePrivacyDlpV2beta1Projection> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1Projection(o[0]);
   checkGooglePrivacyDlpV2beta1Projection(o[1]);
@@ -804,7 +826,7 @@
   if (buildCounterGooglePrivacyDlpV2beta1DatastoreOptions < 3) {
     o.kind = buildGooglePrivacyDlpV2beta1KindExpression();
     o.partitionId = buildGooglePrivacyDlpV2beta1PartitionId();
-    o.projection = buildUnnamed3461();
+    o.projection = buildUnnamed3477();
   }
   buildCounterGooglePrivacyDlpV2beta1DatastoreOptions--;
   return o;
@@ -816,19 +838,19 @@
   if (buildCounterGooglePrivacyDlpV2beta1DatastoreOptions < 3) {
     checkGooglePrivacyDlpV2beta1KindExpression(o.kind);
     checkGooglePrivacyDlpV2beta1PartitionId(o.partitionId);
-    checkUnnamed3461(o.projection);
+    checkUnnamed3477(o.projection);
   }
   buildCounterGooglePrivacyDlpV2beta1DatastoreOptions--;
 }
 
-buildUnnamed3462() {
+buildUnnamed3478() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1TransformationSummary>();
   o.add(buildGooglePrivacyDlpV2beta1TransformationSummary());
   o.add(buildGooglePrivacyDlpV2beta1TransformationSummary());
   return o;
 }
 
-checkUnnamed3462(
+checkUnnamed3478(
     core.List<api.GooglePrivacyDlpV2beta1TransformationSummary> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1TransformationSummary(o[0]);
@@ -840,7 +862,7 @@
   var o = new api.GooglePrivacyDlpV2beta1DeidentificationSummary();
   buildCounterGooglePrivacyDlpV2beta1DeidentificationSummary++;
   if (buildCounterGooglePrivacyDlpV2beta1DeidentificationSummary < 3) {
-    o.transformationSummaries = buildUnnamed3462();
+    o.transformationSummaries = buildUnnamed3478();
     o.transformedBytes = "foo";
   }
   buildCounterGooglePrivacyDlpV2beta1DeidentificationSummary--;
@@ -851,7 +873,7 @@
     api.GooglePrivacyDlpV2beta1DeidentificationSummary o) {
   buildCounterGooglePrivacyDlpV2beta1DeidentificationSummary++;
   if (buildCounterGooglePrivacyDlpV2beta1DeidentificationSummary < 3) {
-    checkUnnamed3462(o.transformationSummaries);
+    checkUnnamed3478(o.transformationSummaries);
     unittest.expect(o.transformedBytes, unittest.equals('foo'));
   }
   buildCounterGooglePrivacyDlpV2beta1DeidentificationSummary--;
@@ -882,14 +904,14 @@
   buildCounterGooglePrivacyDlpV2beta1DeidentifyConfig--;
 }
 
-buildUnnamed3463() {
+buildUnnamed3479() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1ContentItem>();
   o.add(buildGooglePrivacyDlpV2beta1ContentItem());
   o.add(buildGooglePrivacyDlpV2beta1ContentItem());
   return o;
 }
 
-checkUnnamed3463(core.List<api.GooglePrivacyDlpV2beta1ContentItem> o) {
+checkUnnamed3479(core.List<api.GooglePrivacyDlpV2beta1ContentItem> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1ContentItem(o[0]);
   checkGooglePrivacyDlpV2beta1ContentItem(o[1]);
@@ -902,7 +924,7 @@
   if (buildCounterGooglePrivacyDlpV2beta1DeidentifyContentRequest < 3) {
     o.deidentifyConfig = buildGooglePrivacyDlpV2beta1DeidentifyConfig();
     o.inspectConfig = buildGooglePrivacyDlpV2beta1InspectConfig();
-    o.items = buildUnnamed3463();
+    o.items = buildUnnamed3479();
   }
   buildCounterGooglePrivacyDlpV2beta1DeidentifyContentRequest--;
   return o;
@@ -914,32 +936,32 @@
   if (buildCounterGooglePrivacyDlpV2beta1DeidentifyContentRequest < 3) {
     checkGooglePrivacyDlpV2beta1DeidentifyConfig(o.deidentifyConfig);
     checkGooglePrivacyDlpV2beta1InspectConfig(o.inspectConfig);
-    checkUnnamed3463(o.items);
+    checkUnnamed3479(o.items);
   }
   buildCounterGooglePrivacyDlpV2beta1DeidentifyContentRequest--;
 }
 
-buildUnnamed3464() {
+buildUnnamed3480() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1ContentItem>();
   o.add(buildGooglePrivacyDlpV2beta1ContentItem());
   o.add(buildGooglePrivacyDlpV2beta1ContentItem());
   return o;
 }
 
-checkUnnamed3464(core.List<api.GooglePrivacyDlpV2beta1ContentItem> o) {
+checkUnnamed3480(core.List<api.GooglePrivacyDlpV2beta1ContentItem> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1ContentItem(o[0]);
   checkGooglePrivacyDlpV2beta1ContentItem(o[1]);
 }
 
-buildUnnamed3465() {
+buildUnnamed3481() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1DeidentificationSummary>();
   o.add(buildGooglePrivacyDlpV2beta1DeidentificationSummary());
   o.add(buildGooglePrivacyDlpV2beta1DeidentificationSummary());
   return o;
 }
 
-checkUnnamed3465(
+checkUnnamed3481(
     core.List<api.GooglePrivacyDlpV2beta1DeidentificationSummary> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1DeidentificationSummary(o[0]);
@@ -951,8 +973,8 @@
   var o = new api.GooglePrivacyDlpV2beta1DeidentifyContentResponse();
   buildCounterGooglePrivacyDlpV2beta1DeidentifyContentResponse++;
   if (buildCounterGooglePrivacyDlpV2beta1DeidentifyContentResponse < 3) {
-    o.items = buildUnnamed3464();
-    o.summaries = buildUnnamed3465();
+    o.items = buildUnnamed3480();
+    o.summaries = buildUnnamed3481();
   }
   buildCounterGooglePrivacyDlpV2beta1DeidentifyContentResponse--;
   return o;
@@ -962,12 +984,32 @@
     api.GooglePrivacyDlpV2beta1DeidentifyContentResponse o) {
   buildCounterGooglePrivacyDlpV2beta1DeidentifyContentResponse++;
   if (buildCounterGooglePrivacyDlpV2beta1DeidentifyContentResponse < 3) {
-    checkUnnamed3464(o.items);
-    checkUnnamed3465(o.summaries);
+    checkUnnamed3480(o.items);
+    checkUnnamed3481(o.summaries);
   }
   buildCounterGooglePrivacyDlpV2beta1DeidentifyContentResponse--;
 }
 
+core.int buildCounterGooglePrivacyDlpV2beta1Dictionary = 0;
+buildGooglePrivacyDlpV2beta1Dictionary() {
+  var o = new api.GooglePrivacyDlpV2beta1Dictionary();
+  buildCounterGooglePrivacyDlpV2beta1Dictionary++;
+  if (buildCounterGooglePrivacyDlpV2beta1Dictionary < 3) {
+    o.wordList = buildGooglePrivacyDlpV2beta1WordList();
+  }
+  buildCounterGooglePrivacyDlpV2beta1Dictionary--;
+  return o;
+}
+
+checkGooglePrivacyDlpV2beta1Dictionary(
+    api.GooglePrivacyDlpV2beta1Dictionary o) {
+  buildCounterGooglePrivacyDlpV2beta1Dictionary++;
+  if (buildCounterGooglePrivacyDlpV2beta1Dictionary < 3) {
+    checkGooglePrivacyDlpV2beta1WordList(o.wordList);
+  }
+  buildCounterGooglePrivacyDlpV2beta1Dictionary--;
+}
+
 core.int buildCounterGooglePrivacyDlpV2beta1EntityId = 0;
 buildGooglePrivacyDlpV2beta1EntityId() {
   var o = new api.GooglePrivacyDlpV2beta1EntityId();
@@ -1028,14 +1070,14 @@
   buildCounterGooglePrivacyDlpV2beta1FieldId--;
 }
 
-buildUnnamed3466() {
+buildUnnamed3482() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1FieldId>();
   o.add(buildGooglePrivacyDlpV2beta1FieldId());
   o.add(buildGooglePrivacyDlpV2beta1FieldId());
   return o;
 }
 
-checkUnnamed3466(core.List<api.GooglePrivacyDlpV2beta1FieldId> o) {
+checkUnnamed3482(core.List<api.GooglePrivacyDlpV2beta1FieldId> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1FieldId(o[0]);
   checkGooglePrivacyDlpV2beta1FieldId(o[1]);
@@ -1047,7 +1089,7 @@
   buildCounterGooglePrivacyDlpV2beta1FieldTransformation++;
   if (buildCounterGooglePrivacyDlpV2beta1FieldTransformation < 3) {
     o.condition = buildGooglePrivacyDlpV2beta1RecordCondition();
-    o.fields = buildUnnamed3466();
+    o.fields = buildUnnamed3482();
     o.infoTypeTransformations =
         buildGooglePrivacyDlpV2beta1InfoTypeTransformations();
     o.primitiveTransformation =
@@ -1062,7 +1104,7 @@
   buildCounterGooglePrivacyDlpV2beta1FieldTransformation++;
   if (buildCounterGooglePrivacyDlpV2beta1FieldTransformation < 3) {
     checkGooglePrivacyDlpV2beta1RecordCondition(o.condition);
-    checkUnnamed3466(o.fields);
+    checkUnnamed3482(o.fields);
     checkGooglePrivacyDlpV2beta1InfoTypeTransformations(
         o.infoTypeTransformations);
     checkGooglePrivacyDlpV2beta1PrimitiveTransformation(
@@ -1210,14 +1252,14 @@
   buildCounterGooglePrivacyDlpV2beta1InfoType--;
 }
 
-buildUnnamed3467() {
+buildUnnamed3483() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1CategoryDescription>();
   o.add(buildGooglePrivacyDlpV2beta1CategoryDescription());
   o.add(buildGooglePrivacyDlpV2beta1CategoryDescription());
   return o;
 }
 
-checkUnnamed3467(core.List<api.GooglePrivacyDlpV2beta1CategoryDescription> o) {
+checkUnnamed3483(core.List<api.GooglePrivacyDlpV2beta1CategoryDescription> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1CategoryDescription(o[0]);
   checkGooglePrivacyDlpV2beta1CategoryDescription(o[1]);
@@ -1228,7 +1270,7 @@
   var o = new api.GooglePrivacyDlpV2beta1InfoTypeDescription();
   buildCounterGooglePrivacyDlpV2beta1InfoTypeDescription++;
   if (buildCounterGooglePrivacyDlpV2beta1InfoTypeDescription < 3) {
-    o.categories = buildUnnamed3467();
+    o.categories = buildUnnamed3483();
     o.displayName = "foo";
     o.name = "foo";
   }
@@ -1240,7 +1282,7 @@
     api.GooglePrivacyDlpV2beta1InfoTypeDescription o) {
   buildCounterGooglePrivacyDlpV2beta1InfoTypeDescription++;
   if (buildCounterGooglePrivacyDlpV2beta1InfoTypeDescription < 3) {
-    checkUnnamed3467(o.categories);
+    checkUnnamed3483(o.categories);
     unittest.expect(o.displayName, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
   }
@@ -1291,14 +1333,14 @@
   buildCounterGooglePrivacyDlpV2beta1InfoTypeStatistics--;
 }
 
-buildUnnamed3468() {
+buildUnnamed3484() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1InfoType>();
   o.add(buildGooglePrivacyDlpV2beta1InfoType());
   o.add(buildGooglePrivacyDlpV2beta1InfoType());
   return o;
 }
 
-checkUnnamed3468(core.List<api.GooglePrivacyDlpV2beta1InfoType> o) {
+checkUnnamed3484(core.List<api.GooglePrivacyDlpV2beta1InfoType> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1InfoType(o[0]);
   checkGooglePrivacyDlpV2beta1InfoType(o[1]);
@@ -1309,7 +1351,7 @@
   var o = new api.GooglePrivacyDlpV2beta1InfoTypeTransformation();
   buildCounterGooglePrivacyDlpV2beta1InfoTypeTransformation++;
   if (buildCounterGooglePrivacyDlpV2beta1InfoTypeTransformation < 3) {
-    o.infoTypes = buildUnnamed3468();
+    o.infoTypes = buildUnnamed3484();
     o.primitiveTransformation =
         buildGooglePrivacyDlpV2beta1PrimitiveTransformation();
   }
@@ -1321,21 +1363,21 @@
     api.GooglePrivacyDlpV2beta1InfoTypeTransformation o) {
   buildCounterGooglePrivacyDlpV2beta1InfoTypeTransformation++;
   if (buildCounterGooglePrivacyDlpV2beta1InfoTypeTransformation < 3) {
-    checkUnnamed3468(o.infoTypes);
+    checkUnnamed3484(o.infoTypes);
     checkGooglePrivacyDlpV2beta1PrimitiveTransformation(
         o.primitiveTransformation);
   }
   buildCounterGooglePrivacyDlpV2beta1InfoTypeTransformation--;
 }
 
-buildUnnamed3469() {
+buildUnnamed3485() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1InfoTypeTransformation>();
   o.add(buildGooglePrivacyDlpV2beta1InfoTypeTransformation());
   o.add(buildGooglePrivacyDlpV2beta1InfoTypeTransformation());
   return o;
 }
 
-checkUnnamed3469(
+checkUnnamed3485(
     core.List<api.GooglePrivacyDlpV2beta1InfoTypeTransformation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1InfoTypeTransformation(o[0]);
@@ -1347,7 +1389,7 @@
   var o = new api.GooglePrivacyDlpV2beta1InfoTypeTransformations();
   buildCounterGooglePrivacyDlpV2beta1InfoTypeTransformations++;
   if (buildCounterGooglePrivacyDlpV2beta1InfoTypeTransformations < 3) {
-    o.transformations = buildUnnamed3469();
+    o.transformations = buildUnnamed3485();
   }
   buildCounterGooglePrivacyDlpV2beta1InfoTypeTransformations--;
   return o;
@@ -1357,32 +1399,45 @@
     api.GooglePrivacyDlpV2beta1InfoTypeTransformations o) {
   buildCounterGooglePrivacyDlpV2beta1InfoTypeTransformations++;
   if (buildCounterGooglePrivacyDlpV2beta1InfoTypeTransformations < 3) {
-    checkUnnamed3469(o.transformations);
+    checkUnnamed3485(o.transformations);
   }
   buildCounterGooglePrivacyDlpV2beta1InfoTypeTransformations--;
 }
 
-buildUnnamed3470() {
+buildUnnamed3486() {
+  var o = new core.List<api.GooglePrivacyDlpV2beta1CustomInfoType>();
+  o.add(buildGooglePrivacyDlpV2beta1CustomInfoType());
+  o.add(buildGooglePrivacyDlpV2beta1CustomInfoType());
+  return o;
+}
+
+checkUnnamed3486(core.List<api.GooglePrivacyDlpV2beta1CustomInfoType> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGooglePrivacyDlpV2beta1CustomInfoType(o[0]);
+  checkGooglePrivacyDlpV2beta1CustomInfoType(o[1]);
+}
+
+buildUnnamed3487() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1InfoTypeLimit>();
   o.add(buildGooglePrivacyDlpV2beta1InfoTypeLimit());
   o.add(buildGooglePrivacyDlpV2beta1InfoTypeLimit());
   return o;
 }
 
-checkUnnamed3470(core.List<api.GooglePrivacyDlpV2beta1InfoTypeLimit> o) {
+checkUnnamed3487(core.List<api.GooglePrivacyDlpV2beta1InfoTypeLimit> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1InfoTypeLimit(o[0]);
   checkGooglePrivacyDlpV2beta1InfoTypeLimit(o[1]);
 }
 
-buildUnnamed3471() {
+buildUnnamed3488() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1InfoType>();
   o.add(buildGooglePrivacyDlpV2beta1InfoType());
   o.add(buildGooglePrivacyDlpV2beta1InfoType());
   return o;
 }
 
-checkUnnamed3471(core.List<api.GooglePrivacyDlpV2beta1InfoType> o) {
+checkUnnamed3488(core.List<api.GooglePrivacyDlpV2beta1InfoType> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1InfoType(o[0]);
   checkGooglePrivacyDlpV2beta1InfoType(o[1]);
@@ -1393,10 +1448,11 @@
   var o = new api.GooglePrivacyDlpV2beta1InspectConfig();
   buildCounterGooglePrivacyDlpV2beta1InspectConfig++;
   if (buildCounterGooglePrivacyDlpV2beta1InspectConfig < 3) {
+    o.customInfoTypes = buildUnnamed3486();
     o.excludeTypes = true;
     o.includeQuote = true;
-    o.infoTypeLimits = buildUnnamed3470();
-    o.infoTypes = buildUnnamed3471();
+    o.infoTypeLimits = buildUnnamed3487();
+    o.infoTypes = buildUnnamed3488();
     o.maxFindings = 42;
     o.minLikelihood = "foo";
   }
@@ -1408,24 +1464,25 @@
     api.GooglePrivacyDlpV2beta1InspectConfig o) {
   buildCounterGooglePrivacyDlpV2beta1InspectConfig++;
   if (buildCounterGooglePrivacyDlpV2beta1InspectConfig < 3) {
+    checkUnnamed3486(o.customInfoTypes);
     unittest.expect(o.excludeTypes, unittest.isTrue);
     unittest.expect(o.includeQuote, unittest.isTrue);
-    checkUnnamed3470(o.infoTypeLimits);
-    checkUnnamed3471(o.infoTypes);
+    checkUnnamed3487(o.infoTypeLimits);
+    checkUnnamed3488(o.infoTypes);
     unittest.expect(o.maxFindings, unittest.equals(42));
     unittest.expect(o.minLikelihood, unittest.equals('foo'));
   }
   buildCounterGooglePrivacyDlpV2beta1InspectConfig--;
 }
 
-buildUnnamed3472() {
+buildUnnamed3489() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1ContentItem>();
   o.add(buildGooglePrivacyDlpV2beta1ContentItem());
   o.add(buildGooglePrivacyDlpV2beta1ContentItem());
   return o;
 }
 
-checkUnnamed3472(core.List<api.GooglePrivacyDlpV2beta1ContentItem> o) {
+checkUnnamed3489(core.List<api.GooglePrivacyDlpV2beta1ContentItem> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1ContentItem(o[0]);
   checkGooglePrivacyDlpV2beta1ContentItem(o[1]);
@@ -1437,7 +1494,7 @@
   buildCounterGooglePrivacyDlpV2beta1InspectContentRequest++;
   if (buildCounterGooglePrivacyDlpV2beta1InspectContentRequest < 3) {
     o.inspectConfig = buildGooglePrivacyDlpV2beta1InspectConfig();
-    o.items = buildUnnamed3472();
+    o.items = buildUnnamed3489();
   }
   buildCounterGooglePrivacyDlpV2beta1InspectContentRequest--;
   return o;
@@ -1448,19 +1505,19 @@
   buildCounterGooglePrivacyDlpV2beta1InspectContentRequest++;
   if (buildCounterGooglePrivacyDlpV2beta1InspectContentRequest < 3) {
     checkGooglePrivacyDlpV2beta1InspectConfig(o.inspectConfig);
-    checkUnnamed3472(o.items);
+    checkUnnamed3489(o.items);
   }
   buildCounterGooglePrivacyDlpV2beta1InspectContentRequest--;
 }
 
-buildUnnamed3473() {
+buildUnnamed3490() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1InspectResult>();
   o.add(buildGooglePrivacyDlpV2beta1InspectResult());
   o.add(buildGooglePrivacyDlpV2beta1InspectResult());
   return o;
 }
 
-checkUnnamed3473(core.List<api.GooglePrivacyDlpV2beta1InspectResult> o) {
+checkUnnamed3490(core.List<api.GooglePrivacyDlpV2beta1InspectResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1InspectResult(o[0]);
   checkGooglePrivacyDlpV2beta1InspectResult(o[1]);
@@ -1471,7 +1528,7 @@
   var o = new api.GooglePrivacyDlpV2beta1InspectContentResponse();
   buildCounterGooglePrivacyDlpV2beta1InspectContentResponse++;
   if (buildCounterGooglePrivacyDlpV2beta1InspectContentResponse < 3) {
-    o.results = buildUnnamed3473();
+    o.results = buildUnnamed3490();
   }
   buildCounterGooglePrivacyDlpV2beta1InspectContentResponse--;
   return o;
@@ -1481,19 +1538,19 @@
     api.GooglePrivacyDlpV2beta1InspectContentResponse o) {
   buildCounterGooglePrivacyDlpV2beta1InspectContentResponse++;
   if (buildCounterGooglePrivacyDlpV2beta1InspectContentResponse < 3) {
-    checkUnnamed3473(o.results);
+    checkUnnamed3490(o.results);
   }
   buildCounterGooglePrivacyDlpV2beta1InspectContentResponse--;
 }
 
-buildUnnamed3474() {
+buildUnnamed3491() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1InfoTypeStatistics>();
   o.add(buildGooglePrivacyDlpV2beta1InfoTypeStatistics());
   o.add(buildGooglePrivacyDlpV2beta1InfoTypeStatistics());
   return o;
 }
 
-checkUnnamed3474(core.List<api.GooglePrivacyDlpV2beta1InfoTypeStatistics> o) {
+checkUnnamed3491(core.List<api.GooglePrivacyDlpV2beta1InfoTypeStatistics> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1InfoTypeStatistics(o[0]);
   checkGooglePrivacyDlpV2beta1InfoTypeStatistics(o[1]);
@@ -1505,7 +1562,7 @@
   buildCounterGooglePrivacyDlpV2beta1InspectOperationMetadata++;
   if (buildCounterGooglePrivacyDlpV2beta1InspectOperationMetadata < 3) {
     o.createTime = "foo";
-    o.infoTypeStats = buildUnnamed3474();
+    o.infoTypeStats = buildUnnamed3491();
     o.processedBytes = "foo";
     o.requestInspectConfig = buildGooglePrivacyDlpV2beta1InspectConfig();
     o.requestOutputConfig = buildGooglePrivacyDlpV2beta1OutputStorageConfig();
@@ -1521,7 +1578,7 @@
   buildCounterGooglePrivacyDlpV2beta1InspectOperationMetadata++;
   if (buildCounterGooglePrivacyDlpV2beta1InspectOperationMetadata < 3) {
     unittest.expect(o.createTime, unittest.equals('foo'));
-    checkUnnamed3474(o.infoTypeStats);
+    checkUnnamed3491(o.infoTypeStats);
     unittest.expect(o.processedBytes, unittest.equals('foo'));
     checkGooglePrivacyDlpV2beta1InspectConfig(o.requestInspectConfig);
     checkGooglePrivacyDlpV2beta1OutputStorageConfig(o.requestOutputConfig);
@@ -1551,14 +1608,14 @@
   buildCounterGooglePrivacyDlpV2beta1InspectOperationResult--;
 }
 
-buildUnnamed3475() {
+buildUnnamed3492() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1Finding>();
   o.add(buildGooglePrivacyDlpV2beta1Finding());
   o.add(buildGooglePrivacyDlpV2beta1Finding());
   return o;
 }
 
-checkUnnamed3475(core.List<api.GooglePrivacyDlpV2beta1Finding> o) {
+checkUnnamed3492(core.List<api.GooglePrivacyDlpV2beta1Finding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1Finding(o[0]);
   checkGooglePrivacyDlpV2beta1Finding(o[1]);
@@ -1569,7 +1626,7 @@
   var o = new api.GooglePrivacyDlpV2beta1InspectResult();
   buildCounterGooglePrivacyDlpV2beta1InspectResult++;
   if (buildCounterGooglePrivacyDlpV2beta1InspectResult < 3) {
-    o.findings = buildUnnamed3475();
+    o.findings = buildUnnamed3492();
     o.findingsTruncated = true;
   }
   buildCounterGooglePrivacyDlpV2beta1InspectResult--;
@@ -1580,20 +1637,20 @@
     api.GooglePrivacyDlpV2beta1InspectResult o) {
   buildCounterGooglePrivacyDlpV2beta1InspectResult++;
   if (buildCounterGooglePrivacyDlpV2beta1InspectResult < 3) {
-    checkUnnamed3475(o.findings);
+    checkUnnamed3492(o.findings);
     unittest.expect(o.findingsTruncated, unittest.isTrue);
   }
   buildCounterGooglePrivacyDlpV2beta1InspectResult--;
 }
 
-buildUnnamed3476() {
+buildUnnamed3493() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1FieldId>();
   o.add(buildGooglePrivacyDlpV2beta1FieldId());
   o.add(buildGooglePrivacyDlpV2beta1FieldId());
   return o;
 }
 
-checkUnnamed3476(core.List<api.GooglePrivacyDlpV2beta1FieldId> o) {
+checkUnnamed3493(core.List<api.GooglePrivacyDlpV2beta1FieldId> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1FieldId(o[0]);
   checkGooglePrivacyDlpV2beta1FieldId(o[1]);
@@ -1605,7 +1662,7 @@
   buildCounterGooglePrivacyDlpV2beta1KAnonymityConfig++;
   if (buildCounterGooglePrivacyDlpV2beta1KAnonymityConfig < 3) {
     o.entityId = buildGooglePrivacyDlpV2beta1EntityId();
-    o.quasiIds = buildUnnamed3476();
+    o.quasiIds = buildUnnamed3493();
   }
   buildCounterGooglePrivacyDlpV2beta1KAnonymityConfig--;
   return o;
@@ -1616,19 +1673,19 @@
   buildCounterGooglePrivacyDlpV2beta1KAnonymityConfig++;
   if (buildCounterGooglePrivacyDlpV2beta1KAnonymityConfig < 3) {
     checkGooglePrivacyDlpV2beta1EntityId(o.entityId);
-    checkUnnamed3476(o.quasiIds);
+    checkUnnamed3493(o.quasiIds);
   }
   buildCounterGooglePrivacyDlpV2beta1KAnonymityConfig--;
 }
 
-buildUnnamed3477() {
+buildUnnamed3494() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1Value>();
   o.add(buildGooglePrivacyDlpV2beta1Value());
   o.add(buildGooglePrivacyDlpV2beta1Value());
   return o;
 }
 
-checkUnnamed3477(core.List<api.GooglePrivacyDlpV2beta1Value> o) {
+checkUnnamed3494(core.List<api.GooglePrivacyDlpV2beta1Value> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1Value(o[0]);
   checkGooglePrivacyDlpV2beta1Value(o[1]);
@@ -1640,7 +1697,7 @@
   buildCounterGooglePrivacyDlpV2beta1KAnonymityEquivalenceClass++;
   if (buildCounterGooglePrivacyDlpV2beta1KAnonymityEquivalenceClass < 3) {
     o.equivalenceClassSize = "foo";
-    o.quasiIdsValues = buildUnnamed3477();
+    o.quasiIdsValues = buildUnnamed3494();
   }
   buildCounterGooglePrivacyDlpV2beta1KAnonymityEquivalenceClass--;
   return o;
@@ -1651,12 +1708,12 @@
   buildCounterGooglePrivacyDlpV2beta1KAnonymityEquivalenceClass++;
   if (buildCounterGooglePrivacyDlpV2beta1KAnonymityEquivalenceClass < 3) {
     unittest.expect(o.equivalenceClassSize, unittest.equals('foo'));
-    checkUnnamed3477(o.quasiIdsValues);
+    checkUnnamed3494(o.quasiIdsValues);
   }
   buildCounterGooglePrivacyDlpV2beta1KAnonymityEquivalenceClass--;
 }
 
-buildUnnamed3478() {
+buildUnnamed3495() {
   var o =
       new core.List<api.GooglePrivacyDlpV2beta1KAnonymityEquivalenceClass>();
   o.add(buildGooglePrivacyDlpV2beta1KAnonymityEquivalenceClass());
@@ -1664,7 +1721,7 @@
   return o;
 }
 
-checkUnnamed3478(
+checkUnnamed3495(
     core.List<api.GooglePrivacyDlpV2beta1KAnonymityEquivalenceClass> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1KAnonymityEquivalenceClass(o[0]);
@@ -1677,7 +1734,7 @@
   buildCounterGooglePrivacyDlpV2beta1KAnonymityHistogramBucket++;
   if (buildCounterGooglePrivacyDlpV2beta1KAnonymityHistogramBucket < 3) {
     o.bucketSize = "foo";
-    o.bucketValues = buildUnnamed3478();
+    o.bucketValues = buildUnnamed3495();
     o.equivalenceClassSizeLowerBound = "foo";
     o.equivalenceClassSizeUpperBound = "foo";
   }
@@ -1690,21 +1747,21 @@
   buildCounterGooglePrivacyDlpV2beta1KAnonymityHistogramBucket++;
   if (buildCounterGooglePrivacyDlpV2beta1KAnonymityHistogramBucket < 3) {
     unittest.expect(o.bucketSize, unittest.equals('foo'));
-    checkUnnamed3478(o.bucketValues);
+    checkUnnamed3495(o.bucketValues);
     unittest.expect(o.equivalenceClassSizeLowerBound, unittest.equals('foo'));
     unittest.expect(o.equivalenceClassSizeUpperBound, unittest.equals('foo'));
   }
   buildCounterGooglePrivacyDlpV2beta1KAnonymityHistogramBucket--;
 }
 
-buildUnnamed3479() {
+buildUnnamed3496() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1KAnonymityHistogramBucket>();
   o.add(buildGooglePrivacyDlpV2beta1KAnonymityHistogramBucket());
   o.add(buildGooglePrivacyDlpV2beta1KAnonymityHistogramBucket());
   return o;
 }
 
-checkUnnamed3479(
+checkUnnamed3496(
     core.List<api.GooglePrivacyDlpV2beta1KAnonymityHistogramBucket> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1KAnonymityHistogramBucket(o[0]);
@@ -1716,7 +1773,7 @@
   var o = new api.GooglePrivacyDlpV2beta1KAnonymityResult();
   buildCounterGooglePrivacyDlpV2beta1KAnonymityResult++;
   if (buildCounterGooglePrivacyDlpV2beta1KAnonymityResult < 3) {
-    o.equivalenceClassHistogramBuckets = buildUnnamed3479();
+    o.equivalenceClassHistogramBuckets = buildUnnamed3496();
   }
   buildCounterGooglePrivacyDlpV2beta1KAnonymityResult--;
   return o;
@@ -1726,19 +1783,19 @@
     api.GooglePrivacyDlpV2beta1KAnonymityResult o) {
   buildCounterGooglePrivacyDlpV2beta1KAnonymityResult++;
   if (buildCounterGooglePrivacyDlpV2beta1KAnonymityResult < 3) {
-    checkUnnamed3479(o.equivalenceClassHistogramBuckets);
+    checkUnnamed3496(o.equivalenceClassHistogramBuckets);
   }
   buildCounterGooglePrivacyDlpV2beta1KAnonymityResult--;
 }
 
-buildUnnamed3480() {
+buildUnnamed3497() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1PathElement>();
   o.add(buildGooglePrivacyDlpV2beta1PathElement());
   o.add(buildGooglePrivacyDlpV2beta1PathElement());
   return o;
 }
 
-checkUnnamed3480(core.List<api.GooglePrivacyDlpV2beta1PathElement> o) {
+checkUnnamed3497(core.List<api.GooglePrivacyDlpV2beta1PathElement> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1PathElement(o[0]);
   checkGooglePrivacyDlpV2beta1PathElement(o[1]);
@@ -1750,7 +1807,7 @@
   buildCounterGooglePrivacyDlpV2beta1Key++;
   if (buildCounterGooglePrivacyDlpV2beta1Key < 3) {
     o.partitionId = buildGooglePrivacyDlpV2beta1PartitionId();
-    o.path = buildUnnamed3480();
+    o.path = buildUnnamed3497();
   }
   buildCounterGooglePrivacyDlpV2beta1Key--;
   return o;
@@ -1760,7 +1817,7 @@
   buildCounterGooglePrivacyDlpV2beta1Key++;
   if (buildCounterGooglePrivacyDlpV2beta1Key < 3) {
     checkGooglePrivacyDlpV2beta1PartitionId(o.partitionId);
-    checkUnnamed3480(o.path);
+    checkUnnamed3497(o.path);
   }
   buildCounterGooglePrivacyDlpV2beta1Key--;
 }
@@ -1807,14 +1864,14 @@
   buildCounterGooglePrivacyDlpV2beta1KmsWrappedCryptoKey--;
 }
 
-buildUnnamed3481() {
+buildUnnamed3498() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1FieldId>();
   o.add(buildGooglePrivacyDlpV2beta1FieldId());
   o.add(buildGooglePrivacyDlpV2beta1FieldId());
   return o;
 }
 
-checkUnnamed3481(core.List<api.GooglePrivacyDlpV2beta1FieldId> o) {
+checkUnnamed3498(core.List<api.GooglePrivacyDlpV2beta1FieldId> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1FieldId(o[0]);
   checkGooglePrivacyDlpV2beta1FieldId(o[1]);
@@ -1825,7 +1882,7 @@
   var o = new api.GooglePrivacyDlpV2beta1LDiversityConfig();
   buildCounterGooglePrivacyDlpV2beta1LDiversityConfig++;
   if (buildCounterGooglePrivacyDlpV2beta1LDiversityConfig < 3) {
-    o.quasiIds = buildUnnamed3481();
+    o.quasiIds = buildUnnamed3498();
     o.sensitiveAttribute = buildGooglePrivacyDlpV2beta1FieldId();
   }
   buildCounterGooglePrivacyDlpV2beta1LDiversityConfig--;
@@ -1836,33 +1893,33 @@
     api.GooglePrivacyDlpV2beta1LDiversityConfig o) {
   buildCounterGooglePrivacyDlpV2beta1LDiversityConfig++;
   if (buildCounterGooglePrivacyDlpV2beta1LDiversityConfig < 3) {
-    checkUnnamed3481(o.quasiIds);
+    checkUnnamed3498(o.quasiIds);
     checkGooglePrivacyDlpV2beta1FieldId(o.sensitiveAttribute);
   }
   buildCounterGooglePrivacyDlpV2beta1LDiversityConfig--;
 }
 
-buildUnnamed3482() {
+buildUnnamed3499() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1Value>();
   o.add(buildGooglePrivacyDlpV2beta1Value());
   o.add(buildGooglePrivacyDlpV2beta1Value());
   return o;
 }
 
-checkUnnamed3482(core.List<api.GooglePrivacyDlpV2beta1Value> o) {
+checkUnnamed3499(core.List<api.GooglePrivacyDlpV2beta1Value> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1Value(o[0]);
   checkGooglePrivacyDlpV2beta1Value(o[1]);
 }
 
-buildUnnamed3483() {
+buildUnnamed3500() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1ValueFrequency>();
   o.add(buildGooglePrivacyDlpV2beta1ValueFrequency());
   o.add(buildGooglePrivacyDlpV2beta1ValueFrequency());
   return o;
 }
 
-checkUnnamed3483(core.List<api.GooglePrivacyDlpV2beta1ValueFrequency> o) {
+checkUnnamed3500(core.List<api.GooglePrivacyDlpV2beta1ValueFrequency> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1ValueFrequency(o[0]);
   checkGooglePrivacyDlpV2beta1ValueFrequency(o[1]);
@@ -1875,8 +1932,8 @@
   if (buildCounterGooglePrivacyDlpV2beta1LDiversityEquivalenceClass < 3) {
     o.equivalenceClassSize = "foo";
     o.numDistinctSensitiveValues = "foo";
-    o.quasiIdsValues = buildUnnamed3482();
-    o.topSensitiveValues = buildUnnamed3483();
+    o.quasiIdsValues = buildUnnamed3499();
+    o.topSensitiveValues = buildUnnamed3500();
   }
   buildCounterGooglePrivacyDlpV2beta1LDiversityEquivalenceClass--;
   return o;
@@ -1888,13 +1945,13 @@
   if (buildCounterGooglePrivacyDlpV2beta1LDiversityEquivalenceClass < 3) {
     unittest.expect(o.equivalenceClassSize, unittest.equals('foo'));
     unittest.expect(o.numDistinctSensitiveValues, unittest.equals('foo'));
-    checkUnnamed3482(o.quasiIdsValues);
-    checkUnnamed3483(o.topSensitiveValues);
+    checkUnnamed3499(o.quasiIdsValues);
+    checkUnnamed3500(o.topSensitiveValues);
   }
   buildCounterGooglePrivacyDlpV2beta1LDiversityEquivalenceClass--;
 }
 
-buildUnnamed3484() {
+buildUnnamed3501() {
   var o =
       new core.List<api.GooglePrivacyDlpV2beta1LDiversityEquivalenceClass>();
   o.add(buildGooglePrivacyDlpV2beta1LDiversityEquivalenceClass());
@@ -1902,7 +1959,7 @@
   return o;
 }
 
-checkUnnamed3484(
+checkUnnamed3501(
     core.List<api.GooglePrivacyDlpV2beta1LDiversityEquivalenceClass> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1LDiversityEquivalenceClass(o[0]);
@@ -1915,7 +1972,7 @@
   buildCounterGooglePrivacyDlpV2beta1LDiversityHistogramBucket++;
   if (buildCounterGooglePrivacyDlpV2beta1LDiversityHistogramBucket < 3) {
     o.bucketSize = "foo";
-    o.bucketValues = buildUnnamed3484();
+    o.bucketValues = buildUnnamed3501();
     o.sensitiveValueFrequencyLowerBound = "foo";
     o.sensitiveValueFrequencyUpperBound = "foo";
   }
@@ -1928,7 +1985,7 @@
   buildCounterGooglePrivacyDlpV2beta1LDiversityHistogramBucket++;
   if (buildCounterGooglePrivacyDlpV2beta1LDiversityHistogramBucket < 3) {
     unittest.expect(o.bucketSize, unittest.equals('foo'));
-    checkUnnamed3484(o.bucketValues);
+    checkUnnamed3501(o.bucketValues);
     unittest.expect(
         o.sensitiveValueFrequencyLowerBound, unittest.equals('foo'));
     unittest.expect(
@@ -1937,14 +1994,14 @@
   buildCounterGooglePrivacyDlpV2beta1LDiversityHistogramBucket--;
 }
 
-buildUnnamed3485() {
+buildUnnamed3502() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1LDiversityHistogramBucket>();
   o.add(buildGooglePrivacyDlpV2beta1LDiversityHistogramBucket());
   o.add(buildGooglePrivacyDlpV2beta1LDiversityHistogramBucket());
   return o;
 }
 
-checkUnnamed3485(
+checkUnnamed3502(
     core.List<api.GooglePrivacyDlpV2beta1LDiversityHistogramBucket> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1LDiversityHistogramBucket(o[0]);
@@ -1956,7 +2013,7 @@
   var o = new api.GooglePrivacyDlpV2beta1LDiversityResult();
   buildCounterGooglePrivacyDlpV2beta1LDiversityResult++;
   if (buildCounterGooglePrivacyDlpV2beta1LDiversityResult < 3) {
-    o.sensitiveValueFrequencyHistogramBuckets = buildUnnamed3485();
+    o.sensitiveValueFrequencyHistogramBuckets = buildUnnamed3502();
   }
   buildCounterGooglePrivacyDlpV2beta1LDiversityResult--;
   return o;
@@ -1966,19 +2023,19 @@
     api.GooglePrivacyDlpV2beta1LDiversityResult o) {
   buildCounterGooglePrivacyDlpV2beta1LDiversityResult++;
   if (buildCounterGooglePrivacyDlpV2beta1LDiversityResult < 3) {
-    checkUnnamed3485(o.sensitiveValueFrequencyHistogramBuckets);
+    checkUnnamed3502(o.sensitiveValueFrequencyHistogramBuckets);
   }
   buildCounterGooglePrivacyDlpV2beta1LDiversityResult--;
 }
 
-buildUnnamed3486() {
+buildUnnamed3503() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1InfoTypeDescription>();
   o.add(buildGooglePrivacyDlpV2beta1InfoTypeDescription());
   o.add(buildGooglePrivacyDlpV2beta1InfoTypeDescription());
   return o;
 }
 
-checkUnnamed3486(core.List<api.GooglePrivacyDlpV2beta1InfoTypeDescription> o) {
+checkUnnamed3503(core.List<api.GooglePrivacyDlpV2beta1InfoTypeDescription> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1InfoTypeDescription(o[0]);
   checkGooglePrivacyDlpV2beta1InfoTypeDescription(o[1]);
@@ -1989,7 +2046,7 @@
   var o = new api.GooglePrivacyDlpV2beta1ListInfoTypesResponse();
   buildCounterGooglePrivacyDlpV2beta1ListInfoTypesResponse++;
   if (buildCounterGooglePrivacyDlpV2beta1ListInfoTypesResponse < 3) {
-    o.infoTypes = buildUnnamed3486();
+    o.infoTypes = buildUnnamed3503();
   }
   buildCounterGooglePrivacyDlpV2beta1ListInfoTypesResponse--;
   return o;
@@ -1999,7 +2056,7 @@
     api.GooglePrivacyDlpV2beta1ListInfoTypesResponse o) {
   buildCounterGooglePrivacyDlpV2beta1ListInfoTypesResponse++;
   if (buildCounterGooglePrivacyDlpV2beta1ListInfoTypesResponse < 3) {
-    checkUnnamed3486(o.infoTypes);
+    checkUnnamed3503(o.infoTypes);
   }
   buildCounterGooglePrivacyDlpV2beta1ListInfoTypesResponse--;
 }
@@ -2026,14 +2083,14 @@
   buildCounterGooglePrivacyDlpV2beta1ListInspectFindingsResponse--;
 }
 
-buildUnnamed3487() {
+buildUnnamed3504() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1CategoryDescription>();
   o.add(buildGooglePrivacyDlpV2beta1CategoryDescription());
   o.add(buildGooglePrivacyDlpV2beta1CategoryDescription());
   return o;
 }
 
-checkUnnamed3487(core.List<api.GooglePrivacyDlpV2beta1CategoryDescription> o) {
+checkUnnamed3504(core.List<api.GooglePrivacyDlpV2beta1CategoryDescription> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1CategoryDescription(o[0]);
   checkGooglePrivacyDlpV2beta1CategoryDescription(o[1]);
@@ -2044,7 +2101,7 @@
   var o = new api.GooglePrivacyDlpV2beta1ListRootCategoriesResponse();
   buildCounterGooglePrivacyDlpV2beta1ListRootCategoriesResponse++;
   if (buildCounterGooglePrivacyDlpV2beta1ListRootCategoriesResponse < 3) {
-    o.categories = buildUnnamed3487();
+    o.categories = buildUnnamed3504();
   }
   buildCounterGooglePrivacyDlpV2beta1ListRootCategoriesResponse--;
   return o;
@@ -2054,19 +2111,19 @@
     api.GooglePrivacyDlpV2beta1ListRootCategoriesResponse o) {
   buildCounterGooglePrivacyDlpV2beta1ListRootCategoriesResponse++;
   if (buildCounterGooglePrivacyDlpV2beta1ListRootCategoriesResponse < 3) {
-    checkUnnamed3487(o.categories);
+    checkUnnamed3504(o.categories);
   }
   buildCounterGooglePrivacyDlpV2beta1ListRootCategoriesResponse--;
 }
 
-buildUnnamed3488() {
+buildUnnamed3505() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1ImageLocation>();
   o.add(buildGooglePrivacyDlpV2beta1ImageLocation());
   o.add(buildGooglePrivacyDlpV2beta1ImageLocation());
   return o;
 }
 
-checkUnnamed3488(core.List<api.GooglePrivacyDlpV2beta1ImageLocation> o) {
+checkUnnamed3505(core.List<api.GooglePrivacyDlpV2beta1ImageLocation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1ImageLocation(o[0]);
   checkGooglePrivacyDlpV2beta1ImageLocation(o[1]);
@@ -2080,7 +2137,7 @@
     o.byteRange = buildGooglePrivacyDlpV2beta1Range();
     o.codepointRange = buildGooglePrivacyDlpV2beta1Range();
     o.fieldId = buildGooglePrivacyDlpV2beta1FieldId();
-    o.imageBoxes = buildUnnamed3488();
+    o.imageBoxes = buildUnnamed3505();
     o.recordKey = buildGooglePrivacyDlpV2beta1RecordKey();
     o.tableLocation = buildGooglePrivacyDlpV2beta1TableLocation();
   }
@@ -2094,7 +2151,7 @@
     checkGooglePrivacyDlpV2beta1Range(o.byteRange);
     checkGooglePrivacyDlpV2beta1Range(o.codepointRange);
     checkGooglePrivacyDlpV2beta1FieldId(o.fieldId);
-    checkUnnamed3488(o.imageBoxes);
+    checkUnnamed3505(o.imageBoxes);
     checkGooglePrivacyDlpV2beta1RecordKey(o.recordKey);
     checkGooglePrivacyDlpV2beta1TableLocation(o.tableLocation);
   }
@@ -2121,14 +2178,14 @@
   buildCounterGooglePrivacyDlpV2beta1NumericalStatsConfig--;
 }
 
-buildUnnamed3489() {
+buildUnnamed3506() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1Value>();
   o.add(buildGooglePrivacyDlpV2beta1Value());
   o.add(buildGooglePrivacyDlpV2beta1Value());
   return o;
 }
 
-checkUnnamed3489(core.List<api.GooglePrivacyDlpV2beta1Value> o) {
+checkUnnamed3506(core.List<api.GooglePrivacyDlpV2beta1Value> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1Value(o[0]);
   checkGooglePrivacyDlpV2beta1Value(o[1]);
@@ -2141,7 +2198,7 @@
   if (buildCounterGooglePrivacyDlpV2beta1NumericalStatsResult < 3) {
     o.maxValue = buildGooglePrivacyDlpV2beta1Value();
     o.minValue = buildGooglePrivacyDlpV2beta1Value();
-    o.quantileValues = buildUnnamed3489();
+    o.quantileValues = buildUnnamed3506();
   }
   buildCounterGooglePrivacyDlpV2beta1NumericalStatsResult--;
   return o;
@@ -2153,7 +2210,7 @@
   if (buildCounterGooglePrivacyDlpV2beta1NumericalStatsResult < 3) {
     checkGooglePrivacyDlpV2beta1Value(o.maxValue);
     checkGooglePrivacyDlpV2beta1Value(o.minValue);
-    checkUnnamed3489(o.quantileValues);
+    checkUnnamed3506(o.quantileValues);
   }
   buildCounterGooglePrivacyDlpV2beta1NumericalStatsResult--;
 }
@@ -2438,27 +2495,27 @@
   buildCounterGooglePrivacyDlpV2beta1RecordSuppression--;
 }
 
-buildUnnamed3490() {
+buildUnnamed3507() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1FieldTransformation>();
   o.add(buildGooglePrivacyDlpV2beta1FieldTransformation());
   o.add(buildGooglePrivacyDlpV2beta1FieldTransformation());
   return o;
 }
 
-checkUnnamed3490(core.List<api.GooglePrivacyDlpV2beta1FieldTransformation> o) {
+checkUnnamed3507(core.List<api.GooglePrivacyDlpV2beta1FieldTransformation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1FieldTransformation(o[0]);
   checkGooglePrivacyDlpV2beta1FieldTransformation(o[1]);
 }
 
-buildUnnamed3491() {
+buildUnnamed3508() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1RecordSuppression>();
   o.add(buildGooglePrivacyDlpV2beta1RecordSuppression());
   o.add(buildGooglePrivacyDlpV2beta1RecordSuppression());
   return o;
 }
 
-checkUnnamed3491(core.List<api.GooglePrivacyDlpV2beta1RecordSuppression> o) {
+checkUnnamed3508(core.List<api.GooglePrivacyDlpV2beta1RecordSuppression> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1RecordSuppression(o[0]);
   checkGooglePrivacyDlpV2beta1RecordSuppression(o[1]);
@@ -2469,8 +2526,8 @@
   var o = new api.GooglePrivacyDlpV2beta1RecordTransformations();
   buildCounterGooglePrivacyDlpV2beta1RecordTransformations++;
   if (buildCounterGooglePrivacyDlpV2beta1RecordTransformations < 3) {
-    o.fieldTransformations = buildUnnamed3490();
-    o.recordSuppressions = buildUnnamed3491();
+    o.fieldTransformations = buildUnnamed3507();
+    o.recordSuppressions = buildUnnamed3508();
   }
   buildCounterGooglePrivacyDlpV2beta1RecordTransformations--;
   return o;
@@ -2480,8 +2537,8 @@
     api.GooglePrivacyDlpV2beta1RecordTransformations o) {
   buildCounterGooglePrivacyDlpV2beta1RecordTransformations++;
   if (buildCounterGooglePrivacyDlpV2beta1RecordTransformations < 3) {
-    checkUnnamed3490(o.fieldTransformations);
-    checkUnnamed3491(o.recordSuppressions);
+    checkUnnamed3507(o.fieldTransformations);
+    checkUnnamed3508(o.recordSuppressions);
   }
   buildCounterGooglePrivacyDlpV2beta1RecordTransformations--;
 }
@@ -2502,40 +2559,40 @@
   buildCounterGooglePrivacyDlpV2beta1RedactConfig--;
 }
 
-buildUnnamed3492() {
+buildUnnamed3509() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1ImageRedactionConfig>();
   o.add(buildGooglePrivacyDlpV2beta1ImageRedactionConfig());
   o.add(buildGooglePrivacyDlpV2beta1ImageRedactionConfig());
   return o;
 }
 
-checkUnnamed3492(core.List<api.GooglePrivacyDlpV2beta1ImageRedactionConfig> o) {
+checkUnnamed3509(core.List<api.GooglePrivacyDlpV2beta1ImageRedactionConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1ImageRedactionConfig(o[0]);
   checkGooglePrivacyDlpV2beta1ImageRedactionConfig(o[1]);
 }
 
-buildUnnamed3493() {
+buildUnnamed3510() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1ContentItem>();
   o.add(buildGooglePrivacyDlpV2beta1ContentItem());
   o.add(buildGooglePrivacyDlpV2beta1ContentItem());
   return o;
 }
 
-checkUnnamed3493(core.List<api.GooglePrivacyDlpV2beta1ContentItem> o) {
+checkUnnamed3510(core.List<api.GooglePrivacyDlpV2beta1ContentItem> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1ContentItem(o[0]);
   checkGooglePrivacyDlpV2beta1ContentItem(o[1]);
 }
 
-buildUnnamed3494() {
+buildUnnamed3511() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1ReplaceConfig>();
   o.add(buildGooglePrivacyDlpV2beta1ReplaceConfig());
   o.add(buildGooglePrivacyDlpV2beta1ReplaceConfig());
   return o;
 }
 
-checkUnnamed3494(core.List<api.GooglePrivacyDlpV2beta1ReplaceConfig> o) {
+checkUnnamed3511(core.List<api.GooglePrivacyDlpV2beta1ReplaceConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1ReplaceConfig(o[0]);
   checkGooglePrivacyDlpV2beta1ReplaceConfig(o[1]);
@@ -2546,10 +2603,10 @@
   var o = new api.GooglePrivacyDlpV2beta1RedactContentRequest();
   buildCounterGooglePrivacyDlpV2beta1RedactContentRequest++;
   if (buildCounterGooglePrivacyDlpV2beta1RedactContentRequest < 3) {
-    o.imageRedactionConfigs = buildUnnamed3492();
+    o.imageRedactionConfigs = buildUnnamed3509();
     o.inspectConfig = buildGooglePrivacyDlpV2beta1InspectConfig();
-    o.items = buildUnnamed3493();
-    o.replaceConfigs = buildUnnamed3494();
+    o.items = buildUnnamed3510();
+    o.replaceConfigs = buildUnnamed3511();
   }
   buildCounterGooglePrivacyDlpV2beta1RedactContentRequest--;
   return o;
@@ -2559,22 +2616,22 @@
     api.GooglePrivacyDlpV2beta1RedactContentRequest o) {
   buildCounterGooglePrivacyDlpV2beta1RedactContentRequest++;
   if (buildCounterGooglePrivacyDlpV2beta1RedactContentRequest < 3) {
-    checkUnnamed3492(o.imageRedactionConfigs);
+    checkUnnamed3509(o.imageRedactionConfigs);
     checkGooglePrivacyDlpV2beta1InspectConfig(o.inspectConfig);
-    checkUnnamed3493(o.items);
-    checkUnnamed3494(o.replaceConfigs);
+    checkUnnamed3510(o.items);
+    checkUnnamed3511(o.replaceConfigs);
   }
   buildCounterGooglePrivacyDlpV2beta1RedactContentRequest--;
 }
 
-buildUnnamed3495() {
+buildUnnamed3512() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1ContentItem>();
   o.add(buildGooglePrivacyDlpV2beta1ContentItem());
   o.add(buildGooglePrivacyDlpV2beta1ContentItem());
   return o;
 }
 
-checkUnnamed3495(core.List<api.GooglePrivacyDlpV2beta1ContentItem> o) {
+checkUnnamed3512(core.List<api.GooglePrivacyDlpV2beta1ContentItem> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1ContentItem(o[0]);
   checkGooglePrivacyDlpV2beta1ContentItem(o[1]);
@@ -2585,7 +2642,7 @@
   var o = new api.GooglePrivacyDlpV2beta1RedactContentResponse();
   buildCounterGooglePrivacyDlpV2beta1RedactContentResponse++;
   if (buildCounterGooglePrivacyDlpV2beta1RedactContentResponse < 3) {
-    o.items = buildUnnamed3495();
+    o.items = buildUnnamed3512();
   }
   buildCounterGooglePrivacyDlpV2beta1RedactContentResponse--;
   return o;
@@ -2595,7 +2652,7 @@
     api.GooglePrivacyDlpV2beta1RedactContentResponse o) {
   buildCounterGooglePrivacyDlpV2beta1RedactContentResponse++;
   if (buildCounterGooglePrivacyDlpV2beta1RedactContentResponse < 3) {
-    checkUnnamed3495(o.items);
+    checkUnnamed3512(o.items);
   }
   buildCounterGooglePrivacyDlpV2beta1RedactContentResponse--;
 }
@@ -2710,14 +2767,14 @@
   buildCounterGooglePrivacyDlpV2beta1RiskAnalysisOperationResult--;
 }
 
-buildUnnamed3496() {
+buildUnnamed3513() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1Value>();
   o.add(buildGooglePrivacyDlpV2beta1Value());
   o.add(buildGooglePrivacyDlpV2beta1Value());
   return o;
 }
 
-checkUnnamed3496(core.List<api.GooglePrivacyDlpV2beta1Value> o) {
+checkUnnamed3513(core.List<api.GooglePrivacyDlpV2beta1Value> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1Value(o[0]);
   checkGooglePrivacyDlpV2beta1Value(o[1]);
@@ -2728,7 +2785,7 @@
   var o = new api.GooglePrivacyDlpV2beta1Row();
   buildCounterGooglePrivacyDlpV2beta1Row++;
   if (buildCounterGooglePrivacyDlpV2beta1Row < 3) {
-    o.values = buildUnnamed3496();
+    o.values = buildUnnamed3513();
   }
   buildCounterGooglePrivacyDlpV2beta1Row--;
   return o;
@@ -2737,7 +2794,7 @@
 checkGooglePrivacyDlpV2beta1Row(api.GooglePrivacyDlpV2beta1Row o) {
   buildCounterGooglePrivacyDlpV2beta1Row++;
   if (buildCounterGooglePrivacyDlpV2beta1Row < 3) {
-    checkUnnamed3496(o.values);
+    checkUnnamed3513(o.values);
   }
   buildCounterGooglePrivacyDlpV2beta1Row--;
 }
@@ -2790,27 +2847,27 @@
   buildCounterGooglePrivacyDlpV2beta1SummaryResult--;
 }
 
-buildUnnamed3497() {
+buildUnnamed3514() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1FieldId>();
   o.add(buildGooglePrivacyDlpV2beta1FieldId());
   o.add(buildGooglePrivacyDlpV2beta1FieldId());
   return o;
 }
 
-checkUnnamed3497(core.List<api.GooglePrivacyDlpV2beta1FieldId> o) {
+checkUnnamed3514(core.List<api.GooglePrivacyDlpV2beta1FieldId> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1FieldId(o[0]);
   checkGooglePrivacyDlpV2beta1FieldId(o[1]);
 }
 
-buildUnnamed3498() {
+buildUnnamed3515() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1Row>();
   o.add(buildGooglePrivacyDlpV2beta1Row());
   o.add(buildGooglePrivacyDlpV2beta1Row());
   return o;
 }
 
-checkUnnamed3498(core.List<api.GooglePrivacyDlpV2beta1Row> o) {
+checkUnnamed3515(core.List<api.GooglePrivacyDlpV2beta1Row> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1Row(o[0]);
   checkGooglePrivacyDlpV2beta1Row(o[1]);
@@ -2821,8 +2878,8 @@
   var o = new api.GooglePrivacyDlpV2beta1Table();
   buildCounterGooglePrivacyDlpV2beta1Table++;
   if (buildCounterGooglePrivacyDlpV2beta1Table < 3) {
-    o.headers = buildUnnamed3497();
-    o.rows = buildUnnamed3498();
+    o.headers = buildUnnamed3514();
+    o.rows = buildUnnamed3515();
   }
   buildCounterGooglePrivacyDlpV2beta1Table--;
   return o;
@@ -2831,8 +2888,8 @@
 checkGooglePrivacyDlpV2beta1Table(api.GooglePrivacyDlpV2beta1Table o) {
   buildCounterGooglePrivacyDlpV2beta1Table++;
   if (buildCounterGooglePrivacyDlpV2beta1Table < 3) {
-    checkUnnamed3497(o.headers);
-    checkUnnamed3498(o.rows);
+    checkUnnamed3514(o.headers);
+    checkUnnamed3515(o.rows);
   }
   buildCounterGooglePrivacyDlpV2beta1Table--;
 }
@@ -2877,27 +2934,27 @@
   buildCounterGooglePrivacyDlpV2beta1TimePartConfig--;
 }
 
-buildUnnamed3499() {
+buildUnnamed3516() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1FieldTransformation>();
   o.add(buildGooglePrivacyDlpV2beta1FieldTransformation());
   o.add(buildGooglePrivacyDlpV2beta1FieldTransformation());
   return o;
 }
 
-checkUnnamed3499(core.List<api.GooglePrivacyDlpV2beta1FieldTransformation> o) {
+checkUnnamed3516(core.List<api.GooglePrivacyDlpV2beta1FieldTransformation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1FieldTransformation(o[0]);
   checkGooglePrivacyDlpV2beta1FieldTransformation(o[1]);
 }
 
-buildUnnamed3500() {
+buildUnnamed3517() {
   var o = new core.List<api.GooglePrivacyDlpV2beta1SummaryResult>();
   o.add(buildGooglePrivacyDlpV2beta1SummaryResult());
   o.add(buildGooglePrivacyDlpV2beta1SummaryResult());
   return o;
 }
 
-checkUnnamed3500(core.List<api.GooglePrivacyDlpV2beta1SummaryResult> o) {
+checkUnnamed3517(core.List<api.GooglePrivacyDlpV2beta1SummaryResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGooglePrivacyDlpV2beta1SummaryResult(o[0]);
   checkGooglePrivacyDlpV2beta1SummaryResult(o[1]);
@@ -2909,10 +2966,10 @@
   buildCounterGooglePrivacyDlpV2beta1TransformationSummary++;
   if (buildCounterGooglePrivacyDlpV2beta1TransformationSummary < 3) {
     o.field = buildGooglePrivacyDlpV2beta1FieldId();
-    o.fieldTransformations = buildUnnamed3499();
+    o.fieldTransformations = buildUnnamed3516();
     o.infoType = buildGooglePrivacyDlpV2beta1InfoType();
     o.recordSuppress = buildGooglePrivacyDlpV2beta1RecordSuppression();
-    o.results = buildUnnamed3500();
+    o.results = buildUnnamed3517();
     o.transformation = buildGooglePrivacyDlpV2beta1PrimitiveTransformation();
   }
   buildCounterGooglePrivacyDlpV2beta1TransformationSummary--;
@@ -2924,10 +2981,10 @@
   buildCounterGooglePrivacyDlpV2beta1TransformationSummary++;
   if (buildCounterGooglePrivacyDlpV2beta1TransformationSummary < 3) {
     checkGooglePrivacyDlpV2beta1FieldId(o.field);
-    checkUnnamed3499(o.fieldTransformations);
+    checkUnnamed3516(o.fieldTransformations);
     checkGooglePrivacyDlpV2beta1InfoType(o.infoType);
     checkGooglePrivacyDlpV2beta1RecordSuppression(o.recordSuppress);
-    checkUnnamed3500(o.results);
+    checkUnnamed3517(o.results);
     checkGooglePrivacyDlpV2beta1PrimitiveTransformation(o.transformation);
   }
   buildCounterGooglePrivacyDlpV2beta1TransformationSummary--;
@@ -3026,6 +3083,38 @@
   buildCounterGooglePrivacyDlpV2beta1ValueFrequency--;
 }
 
+buildUnnamed3518() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3518(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterGooglePrivacyDlpV2beta1WordList = 0;
+buildGooglePrivacyDlpV2beta1WordList() {
+  var o = new api.GooglePrivacyDlpV2beta1WordList();
+  buildCounterGooglePrivacyDlpV2beta1WordList++;
+  if (buildCounterGooglePrivacyDlpV2beta1WordList < 3) {
+    o.words = buildUnnamed3518();
+  }
+  buildCounterGooglePrivacyDlpV2beta1WordList--;
+  return o;
+}
+
+checkGooglePrivacyDlpV2beta1WordList(api.GooglePrivacyDlpV2beta1WordList o) {
+  buildCounterGooglePrivacyDlpV2beta1WordList++;
+  if (buildCounterGooglePrivacyDlpV2beta1WordList < 3) {
+    checkUnnamed3518(o.words);
+  }
+  buildCounterGooglePrivacyDlpV2beta1WordList--;
+}
+
 core.int buildCounterGoogleProtobufEmpty = 0;
 buildGoogleProtobufEmpty() {
   var o = new api.GoogleProtobufEmpty();
@@ -3041,7 +3130,7 @@
   buildCounterGoogleProtobufEmpty--;
 }
 
-buildUnnamed3501() {
+buildUnnamed3519() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -3056,7 +3145,7 @@
   return o;
 }
 
-checkUnnamed3501(core.Map<core.String, core.Object> o) {
+checkUnnamed3519(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -3070,17 +3159,17 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3502() {
+buildUnnamed3520() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed3501());
-  o.add(buildUnnamed3501());
+  o.add(buildUnnamed3519());
+  o.add(buildUnnamed3519());
   return o;
 }
 
-checkUnnamed3502(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed3520(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed3501(o[0]);
-  checkUnnamed3501(o[1]);
+  checkUnnamed3519(o[0]);
+  checkUnnamed3519(o[1]);
 }
 
 core.int buildCounterGoogleRpcStatus = 0;
@@ -3089,7 +3178,7 @@
   buildCounterGoogleRpcStatus++;
   if (buildCounterGoogleRpcStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed3502();
+    o.details = buildUnnamed3520();
     o.message = "foo";
   }
   buildCounterGoogleRpcStatus--;
@@ -3100,7 +3189,7 @@
   buildCounterGoogleRpcStatus++;
   if (buildCounterGoogleRpcStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed3502(o.details);
+    checkUnnamed3520(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterGoogleRpcStatus--;
@@ -3383,6 +3472,15 @@
     });
   });
 
+  unittest.group("obj-schema-GooglePrivacyDlpV2beta1CustomInfoType", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGooglePrivacyDlpV2beta1CustomInfoType();
+      var od =
+          new api.GooglePrivacyDlpV2beta1CustomInfoType.fromJson(o.toJson());
+      checkGooglePrivacyDlpV2beta1CustomInfoType(od);
+    });
+  });
+
   unittest.group("obj-schema-GooglePrivacyDlpV2beta1DatastoreKey", () {
     unittest.test("to-json--from-json", () {
       var o = buildGooglePrivacyDlpV2beta1DatastoreKey();
@@ -3440,6 +3538,14 @@
     });
   });
 
+  unittest.group("obj-schema-GooglePrivacyDlpV2beta1Dictionary", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGooglePrivacyDlpV2beta1Dictionary();
+      var od = new api.GooglePrivacyDlpV2beta1Dictionary.fromJson(o.toJson());
+      checkGooglePrivacyDlpV2beta1Dictionary(od);
+    });
+  });
+
   unittest.group("obj-schema-GooglePrivacyDlpV2beta1EntityId", () {
     unittest.test("to-json--from-json", () {
       var o = buildGooglePrivacyDlpV2beta1EntityId();
@@ -4078,6 +4184,14 @@
     });
   });
 
+  unittest.group("obj-schema-GooglePrivacyDlpV2beta1WordList", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGooglePrivacyDlpV2beta1WordList();
+      var od = new api.GooglePrivacyDlpV2beta1WordList.fromJson(o.toJson());
+      checkGooglePrivacyDlpV2beta1WordList(od);
+    });
+  });
+
   unittest.group("obj-schema-GoogleProtobufEmpty", () {
     unittest.test("to-json--from-json", () {
       var o = buildGoogleProtobufEmpty();
@@ -4115,6 +4229,7 @@
       var mock = new HttpServerMock();
       api.ContentResourceApi res = new api.DlpApi(mock).content;
       var arg_request = buildGooglePrivacyDlpV2beta1DeidentifyContentRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.GooglePrivacyDlpV2beta1DeidentifyContentRequest.fromJson(
@@ -4150,6 +4265,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4158,8 +4274,9 @@
             .encode(buildGooglePrivacyDlpV2beta1DeidentifyContentResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.deidentify(arg_request).then(unittest.expectAsync1(
-          ((api.GooglePrivacyDlpV2beta1DeidentifyContentResponse response) {
+      res.deidentify(arg_request, $fields: arg_$fields).then(unittest
+          .expectAsync1(
+              ((api.GooglePrivacyDlpV2beta1DeidentifyContentResponse response) {
         checkGooglePrivacyDlpV2beta1DeidentifyContentResponse(response);
       })));
     });
@@ -4168,6 +4285,7 @@
       var mock = new HttpServerMock();
       api.ContentResourceApi res = new api.DlpApi(mock).content;
       var arg_request = buildGooglePrivacyDlpV2beta1InspectContentRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.GooglePrivacyDlpV2beta1InspectContentRequest.fromJson(json);
@@ -4202,6 +4320,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4210,7 +4329,7 @@
             .encode(buildGooglePrivacyDlpV2beta1InspectContentResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.inspect(arg_request).then(unittest.expectAsync1(
+      res.inspect(arg_request, $fields: arg_$fields).then(unittest.expectAsync1(
           ((api.GooglePrivacyDlpV2beta1InspectContentResponse response) {
         checkGooglePrivacyDlpV2beta1InspectContentResponse(response);
       })));
@@ -4220,6 +4339,7 @@
       var mock = new HttpServerMock();
       api.ContentResourceApi res = new api.DlpApi(mock).content;
       var arg_request = buildGooglePrivacyDlpV2beta1RedactContentRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.GooglePrivacyDlpV2beta1RedactContentRequest.fromJson(json);
@@ -4254,6 +4374,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4262,7 +4383,7 @@
             .encode(buildGooglePrivacyDlpV2beta1RedactContentResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.redact(arg_request).then(unittest.expectAsync1(
+      res.redact(arg_request, $fields: arg_$fields).then(unittest.expectAsync1(
           ((api.GooglePrivacyDlpV2beta1RedactContentResponse response) {
         checkGooglePrivacyDlpV2beta1RedactContentResponse(response);
       })));
@@ -4275,6 +4396,7 @@
       api.DataSourceResourceApi res = new api.DlpApi(mock).dataSource;
       var arg_request =
           buildGooglePrivacyDlpV2beta1AnalyzeDataSourceRiskRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api
             .GooglePrivacyDlpV2beta1AnalyzeDataSourceRiskRequest.fromJson(json);
@@ -4309,6 +4431,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4316,7 +4439,7 @@
         var resp = convert.JSON.encode(buildGoogleLongrunningOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.analyze(arg_request).then(
+      res.analyze(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.GoogleLongrunningOperation response) {
         checkGoogleLongrunningOperation(response);
       })));
@@ -4330,6 +4453,7 @@
           new api.DlpApi(mock).inspect.operations;
       var arg_request = buildGoogleLongrunningCancelOperationRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.GoogleLongrunningCancelOperationRequest.fromJson(json);
@@ -4365,6 +4489,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4373,7 +4498,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .cancel(arg_request, arg_name)
+          .cancel(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleProtobufEmpty response) {
         checkGoogleProtobufEmpty(response);
       })));
@@ -4385,6 +4510,7 @@
           new api.DlpApi(mock).inspect.operations;
       var arg_request =
           buildGooglePrivacyDlpV2beta1CreateInspectOperationRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api
                 .GooglePrivacyDlpV2beta1CreateInspectOperationRequest.fromJson(
@@ -4420,6 +4546,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4427,7 +4554,7 @@
         var resp = convert.JSON.encode(buildGoogleLongrunningOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.create(arg_request).then(
+      res.create(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.GoogleLongrunningOperation response) {
         checkGoogleLongrunningOperation(response);
       })));
@@ -4438,6 +4565,7 @@
       api.InspectOperationsResourceApi res =
           new api.DlpApi(mock).inspect.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4469,6 +4597,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4477,7 +4606,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_name)
+          .delete(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleProtobufEmpty response) {
         checkGoogleProtobufEmpty(response);
       })));
@@ -4488,6 +4617,7 @@
       api.InspectOperationsResourceApi res =
           new api.DlpApi(mock).inspect.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4519,6 +4649,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4526,7 +4657,7 @@
         var resp = convert.JSON.encode(buildGoogleLongrunningOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(
+      res.get(arg_name, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.GoogleLongrunningOperation response) {
         checkGoogleLongrunningOperation(response);
       })));
@@ -4540,6 +4671,7 @@
       var arg_filter = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4576,6 +4708,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4588,7 +4721,8 @@
           .list(arg_name,
               filter: arg_filter,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(
               ((api.GoogleLongrunningListOperationsResponse response) {
         checkGoogleLongrunningListOperationsResponse(response);
@@ -4602,9 +4736,10 @@
       api.InspectResultsFindingsResourceApi res =
           new api.DlpApi(mock).inspect.results.findings;
       var arg_name = "foo";
-      var arg_pageSize = 42;
       var arg_filter = "foo";
       var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4636,11 +4771,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(core.int.parse(queryMap["pageSize"].first),
-            unittest.equals(arg_pageSize));
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4651,9 +4787,10 @@
       }), true);
       res
           .list(arg_name,
-              pageSize: arg_pageSize,
               filter: arg_filter,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(
               ((api.GooglePrivacyDlpV2beta1ListInspectFindingsResponse
                   response) {
@@ -4669,6 +4806,7 @@
           new api.DlpApi(mock).riskAnalysis.operations;
       var arg_request = buildGoogleLongrunningCancelOperationRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.GoogleLongrunningCancelOperationRequest.fromJson(json);
@@ -4704,6 +4842,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4712,7 +4851,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .cancel(arg_request, arg_name)
+          .cancel(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleProtobufEmpty response) {
         checkGoogleProtobufEmpty(response);
       })));
@@ -4723,6 +4862,7 @@
       api.RiskAnalysisOperationsResourceApi res =
           new api.DlpApi(mock).riskAnalysis.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4754,6 +4894,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4762,7 +4903,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_name)
+          .delete(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.GoogleProtobufEmpty response) {
         checkGoogleProtobufEmpty(response);
       })));
@@ -4773,6 +4914,7 @@
       api.RiskAnalysisOperationsResourceApi res =
           new api.DlpApi(mock).riskAnalysis.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4804,6 +4946,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4811,7 +4954,7 @@
         var resp = convert.JSON.encode(buildGoogleLongrunningOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(
+      res.get(arg_name, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.GoogleLongrunningOperation response) {
         checkGoogleLongrunningOperation(response);
       })));
@@ -4822,9 +4965,10 @@
       api.RiskAnalysisOperationsResourceApi res =
           new api.DlpApi(mock).riskAnalysis.operations;
       var arg_name = "foo";
-      var arg_pageSize = 42;
       var arg_filter = "foo";
       var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4856,11 +5000,12 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(core.int.parse(queryMap["pageSize"].first),
-            unittest.equals(arg_pageSize));
         unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4871,9 +5016,10 @@
       }), true);
       res
           .list(arg_name,
-              pageSize: arg_pageSize,
               filter: arg_filter,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(
               ((api.GoogleLongrunningListOperationsResponse response) {
         checkGoogleLongrunningListOperationsResponse(response);
@@ -4886,6 +5032,7 @@
       var mock = new HttpServerMock();
       api.RootCategoriesResourceApi res = new api.DlpApi(mock).rootCategories;
       var arg_languageCode = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4918,6 +5065,7 @@
         }
         unittest.expect(
             queryMap["languageCode"].first, unittest.equals(arg_languageCode));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4926,8 +5074,10 @@
             .encode(buildGooglePrivacyDlpV2beta1ListRootCategoriesResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(languageCode: arg_languageCode).then(unittest.expectAsync1(
-          ((api.GooglePrivacyDlpV2beta1ListRootCategoriesResponse response) {
+      res.list(languageCode: arg_languageCode, $fields: arg_$fields).then(
+          unittest.expectAsync1(
+              ((api.GooglePrivacyDlpV2beta1ListRootCategoriesResponse
+                  response) {
         checkGooglePrivacyDlpV2beta1ListRootCategoriesResponse(response);
       })));
     });
@@ -4940,6 +5090,7 @@
           new api.DlpApi(mock).rootCategories.infoTypes;
       var arg_category = "foo";
       var arg_languageCode = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4973,6 +5124,7 @@
         }
         unittest.expect(
             queryMap["languageCode"].first, unittest.equals(arg_languageCode));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4981,8 +5133,10 @@
             .encode(buildGooglePrivacyDlpV2beta1ListInfoTypesResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(arg_category, languageCode: arg_languageCode).then(unittest
-          .expectAsync1(
+      res
+          .list(arg_category,
+              languageCode: arg_languageCode, $fields: arg_$fields)
+          .then(unittest.expectAsync1(
               ((api.GooglePrivacyDlpV2beta1ListInfoTypesResponse response) {
         checkGooglePrivacyDlpV2beta1ListInfoTypesResponse(response);
       })));
diff --git a/generated/googleapis_beta/test/dns/v2beta1_test.dart b/generated/googleapis_beta/test/dns/v2beta1_test.dart
index 3735758..769a88e 100644
--- a/generated/googleapis_beta/test/dns/v2beta1_test.dart
+++ b/generated/googleapis_beta/test/dns/v2beta1_test.dart
@@ -50,27 +50,27 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed3651() {
+buildUnnamed3669() {
   var o = new core.List<api.ResourceRecordSet>();
   o.add(buildResourceRecordSet());
   o.add(buildResourceRecordSet());
   return o;
 }
 
-checkUnnamed3651(core.List<api.ResourceRecordSet> o) {
+checkUnnamed3669(core.List<api.ResourceRecordSet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceRecordSet(o[0]);
   checkResourceRecordSet(o[1]);
 }
 
-buildUnnamed3652() {
+buildUnnamed3670() {
   var o = new core.List<api.ResourceRecordSet>();
   o.add(buildResourceRecordSet());
   o.add(buildResourceRecordSet());
   return o;
 }
 
-checkUnnamed3652(core.List<api.ResourceRecordSet> o) {
+checkUnnamed3670(core.List<api.ResourceRecordSet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceRecordSet(o[0]);
   checkResourceRecordSet(o[1]);
@@ -81,8 +81,8 @@
   var o = new api.Change();
   buildCounterChange++;
   if (buildCounterChange < 3) {
-    o.additions = buildUnnamed3651();
-    o.deletions = buildUnnamed3652();
+    o.additions = buildUnnamed3669();
+    o.deletions = buildUnnamed3670();
     o.id = "foo";
     o.isServing = true;
     o.kind = "foo";
@@ -96,8 +96,8 @@
 checkChange(api.Change o) {
   buildCounterChange++;
   if (buildCounterChange < 3) {
-    checkUnnamed3651(o.additions);
-    checkUnnamed3652(o.deletions);
+    checkUnnamed3669(o.additions);
+    checkUnnamed3670(o.deletions);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.isServing, unittest.isTrue);
     unittest.expect(o.kind, unittest.equals('foo'));
@@ -107,14 +107,14 @@
   buildCounterChange--;
 }
 
-buildUnnamed3653() {
+buildUnnamed3671() {
   var o = new core.List<api.Change>();
   o.add(buildChange());
   o.add(buildChange());
   return o;
 }
 
-checkUnnamed3653(core.List<api.Change> o) {
+checkUnnamed3671(core.List<api.Change> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkChange(o[0]);
   checkChange(o[1]);
@@ -125,7 +125,7 @@
   var o = new api.ChangesListResponse();
   buildCounterChangesListResponse++;
   if (buildCounterChangesListResponse < 3) {
-    o.changes = buildUnnamed3653();
+    o.changes = buildUnnamed3671();
     o.header = buildResponseHeader();
     o.kind = "foo";
     o.nextPageToken = "foo";
@@ -137,7 +137,7 @@
 checkChangesListResponse(api.ChangesListResponse o) {
   buildCounterChangesListResponse++;
   if (buildCounterChangesListResponse < 3) {
-    checkUnnamed3653(o.changes);
+    checkUnnamed3671(o.changes);
     checkResponseHeader(o.header);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
@@ -145,14 +145,14 @@
   buildCounterChangesListResponse--;
 }
 
-buildUnnamed3654() {
+buildUnnamed3672() {
   var o = new core.List<api.DnsKeyDigest>();
   o.add(buildDnsKeyDigest());
   o.add(buildDnsKeyDigest());
   return o;
 }
 
-checkUnnamed3654(core.List<api.DnsKeyDigest> o) {
+checkUnnamed3672(core.List<api.DnsKeyDigest> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDnsKeyDigest(o[0]);
   checkDnsKeyDigest(o[1]);
@@ -166,7 +166,7 @@
     o.algorithm = "foo";
     o.creationTime = "foo";
     o.description = "foo";
-    o.digests = buildUnnamed3654();
+    o.digests = buildUnnamed3672();
     o.id = "foo";
     o.isActive = true;
     o.keyLength = 42;
@@ -185,7 +185,7 @@
     unittest.expect(o.algorithm, unittest.equals('foo'));
     unittest.expect(o.creationTime, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed3654(o.digests);
+    checkUnnamed3672(o.digests);
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.isActive, unittest.isTrue);
     unittest.expect(o.keyLength, unittest.equals(42));
@@ -243,14 +243,14 @@
   buildCounterDnsKeySpec--;
 }
 
-buildUnnamed3655() {
+buildUnnamed3673() {
   var o = new core.List<api.DnsKey>();
   o.add(buildDnsKey());
   o.add(buildDnsKey());
   return o;
 }
 
-checkUnnamed3655(core.List<api.DnsKey> o) {
+checkUnnamed3673(core.List<api.DnsKey> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDnsKey(o[0]);
   checkDnsKey(o[1]);
@@ -261,7 +261,7 @@
   var o = new api.DnsKeysListResponse();
   buildCounterDnsKeysListResponse++;
   if (buildCounterDnsKeysListResponse < 3) {
-    o.dnsKeys = buildUnnamed3655();
+    o.dnsKeys = buildUnnamed3673();
     o.header = buildResponseHeader();
     o.kind = "foo";
     o.nextPageToken = "foo";
@@ -273,7 +273,7 @@
 checkDnsKeysListResponse(api.DnsKeysListResponse o) {
   buildCounterDnsKeysListResponse++;
   if (buildCounterDnsKeysListResponse < 3) {
-    checkUnnamed3655(o.dnsKeys);
+    checkUnnamed3673(o.dnsKeys);
     checkResponseHeader(o.header);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
@@ -281,14 +281,14 @@
   buildCounterDnsKeysListResponse--;
 }
 
-buildUnnamed3656() {
+buildUnnamed3674() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3656(core.List<core.String> o) {
+checkUnnamed3674(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -307,7 +307,7 @@
     o.kind = "foo";
     o.name = "foo";
     o.nameServerSet = "foo";
-    o.nameServers = buildUnnamed3656();
+    o.nameServers = buildUnnamed3674();
   }
   buildCounterManagedZone--;
   return o;
@@ -324,19 +324,19 @@
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.nameServerSet, unittest.equals('foo'));
-    checkUnnamed3656(o.nameServers);
+    checkUnnamed3674(o.nameServers);
   }
   buildCounterManagedZone--;
 }
 
-buildUnnamed3657() {
+buildUnnamed3675() {
   var o = new core.List<api.DnsKeySpec>();
   o.add(buildDnsKeySpec());
   o.add(buildDnsKeySpec());
   return o;
 }
 
-checkUnnamed3657(core.List<api.DnsKeySpec> o) {
+checkUnnamed3675(core.List<api.DnsKeySpec> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDnsKeySpec(o[0]);
   checkDnsKeySpec(o[1]);
@@ -347,7 +347,7 @@
   var o = new api.ManagedZoneDnsSecConfig();
   buildCounterManagedZoneDnsSecConfig++;
   if (buildCounterManagedZoneDnsSecConfig < 3) {
-    o.defaultKeySpecs = buildUnnamed3657();
+    o.defaultKeySpecs = buildUnnamed3675();
     o.kind = "foo";
     o.nonExistence = "foo";
     o.state = "foo";
@@ -359,7 +359,7 @@
 checkManagedZoneDnsSecConfig(api.ManagedZoneDnsSecConfig o) {
   buildCounterManagedZoneDnsSecConfig++;
   if (buildCounterManagedZoneDnsSecConfig < 3) {
-    checkUnnamed3657(o.defaultKeySpecs);
+    checkUnnamed3675(o.defaultKeySpecs);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nonExistence, unittest.equals('foo'));
     unittest.expect(o.state, unittest.equals('foo'));
@@ -367,14 +367,14 @@
   buildCounterManagedZoneDnsSecConfig--;
 }
 
-buildUnnamed3658() {
+buildUnnamed3676() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed3658(core.List<api.Operation> o) {
+checkUnnamed3676(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -388,7 +388,7 @@
     o.header = buildResponseHeader();
     o.kind = "foo";
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed3658();
+    o.operations = buildUnnamed3676();
   }
   buildCounterManagedZoneOperationsListResponse--;
   return o;
@@ -401,7 +401,7 @@
     checkResponseHeader(o.header);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3658(o.operations);
+    checkUnnamed3676(o.operations);
   }
   buildCounterManagedZoneOperationsListResponse--;
 }
@@ -425,14 +425,14 @@
   buildCounterManagedZonesDeleteResponse--;
 }
 
-buildUnnamed3659() {
+buildUnnamed3677() {
   var o = new core.List<api.ManagedZone>();
   o.add(buildManagedZone());
   o.add(buildManagedZone());
   return o;
 }
 
-checkUnnamed3659(core.List<api.ManagedZone> o) {
+checkUnnamed3677(core.List<api.ManagedZone> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkManagedZone(o[0]);
   checkManagedZone(o[1]);
@@ -445,7 +445,7 @@
   if (buildCounterManagedZonesListResponse < 3) {
     o.header = buildResponseHeader();
     o.kind = "foo";
-    o.managedZones = buildUnnamed3659();
+    o.managedZones = buildUnnamed3677();
     o.nextPageToken = "foo";
   }
   buildCounterManagedZonesListResponse--;
@@ -457,7 +457,7 @@
   if (buildCounterManagedZonesListResponse < 3) {
     checkResponseHeader(o.header);
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed3659(o.managedZones);
+    checkUnnamed3677(o.managedZones);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterManagedZonesListResponse--;
@@ -563,14 +563,14 @@
   buildCounterProject--;
 }
 
-buildUnnamed3660() {
+buildUnnamed3678() {
   var o = new core.List<api.DnsKeySpec>();
   o.add(buildDnsKeySpec());
   o.add(buildDnsKeySpec());
   return o;
 }
 
-checkUnnamed3660(core.List<api.DnsKeySpec> o) {
+checkUnnamed3678(core.List<api.DnsKeySpec> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDnsKeySpec(o[0]);
   checkDnsKeySpec(o[1]);
@@ -589,7 +589,7 @@
     o.rrsetDeletionsPerChange = 42;
     o.rrsetsPerManagedZone = 42;
     o.totalRrdataSizePerChange = 42;
-    o.whitelistedKeySpecs = buildUnnamed3660();
+    o.whitelistedKeySpecs = buildUnnamed3678();
   }
   buildCounterQuota--;
   return o;
@@ -606,32 +606,32 @@
     unittest.expect(o.rrsetDeletionsPerChange, unittest.equals(42));
     unittest.expect(o.rrsetsPerManagedZone, unittest.equals(42));
     unittest.expect(o.totalRrdataSizePerChange, unittest.equals(42));
-    checkUnnamed3660(o.whitelistedKeySpecs);
+    checkUnnamed3678(o.whitelistedKeySpecs);
   }
   buildCounterQuota--;
 }
 
-buildUnnamed3661() {
+buildUnnamed3679() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3661(core.List<core.String> o) {
+checkUnnamed3679(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3662() {
+buildUnnamed3680() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3662(core.List<core.String> o) {
+checkUnnamed3680(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -644,8 +644,8 @@
   if (buildCounterResourceRecordSet < 3) {
     o.kind = "foo";
     o.name = "foo";
-    o.rrdatas = buildUnnamed3661();
-    o.signatureRrdatas = buildUnnamed3662();
+    o.rrdatas = buildUnnamed3679();
+    o.signatureRrdatas = buildUnnamed3680();
     o.ttl = 42;
     o.type = "foo";
   }
@@ -658,22 +658,22 @@
   if (buildCounterResourceRecordSet < 3) {
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3661(o.rrdatas);
-    checkUnnamed3662(o.signatureRrdatas);
+    checkUnnamed3679(o.rrdatas);
+    checkUnnamed3680(o.signatureRrdatas);
     unittest.expect(o.ttl, unittest.equals(42));
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterResourceRecordSet--;
 }
 
-buildUnnamed3663() {
+buildUnnamed3681() {
   var o = new core.List<api.ResourceRecordSet>();
   o.add(buildResourceRecordSet());
   o.add(buildResourceRecordSet());
   return o;
 }
 
-checkUnnamed3663(core.List<api.ResourceRecordSet> o) {
+checkUnnamed3681(core.List<api.ResourceRecordSet> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceRecordSet(o[0]);
   checkResourceRecordSet(o[1]);
@@ -687,7 +687,7 @@
     o.header = buildResponseHeader();
     o.kind = "foo";
     o.nextPageToken = "foo";
-    o.rrsets = buildUnnamed3663();
+    o.rrsets = buildUnnamed3681();
   }
   buildCounterResourceRecordSetsListResponse--;
   return o;
@@ -699,7 +699,7 @@
     checkResponseHeader(o.header);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3663(o.rrsets);
+    checkUnnamed3681(o.rrsets);
   }
   buildCounterResourceRecordSetsListResponse--;
 }
@@ -884,6 +884,7 @@
       var arg_project = "foo";
       var arg_managedZone = "foo";
       var arg_clientOperationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Change.fromJson(json);
         checkChange(obj);
@@ -916,6 +917,7 @@
         }
         unittest.expect(queryMap["clientOperationId"].first,
             unittest.equals(arg_clientOperationId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -925,7 +927,7 @@
       }), true);
       res
           .create(arg_request, arg_project, arg_managedZone,
-              clientOperationId: arg_clientOperationId)
+              clientOperationId: arg_clientOperationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Change response) {
         checkChange(response);
       })));
@@ -938,6 +940,7 @@
       var arg_managedZone = "foo";
       var arg_changeId = "foo";
       var arg_clientOperationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -967,6 +970,7 @@
         }
         unittest.expect(queryMap["clientOperationId"].first,
             unittest.equals(arg_clientOperationId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -976,7 +980,7 @@
       }), true);
       res
           .get(arg_project, arg_managedZone, arg_changeId,
-              clientOperationId: arg_clientOperationId)
+              clientOperationId: arg_clientOperationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Change response) {
         checkChange(response);
       })));
@@ -991,6 +995,7 @@
       var arg_pageToken = "foo";
       var arg_sortBy = "foo";
       var arg_sortOrder = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1025,6 +1030,7 @@
         unittest.expect(queryMap["sortBy"].first, unittest.equals(arg_sortBy));
         unittest.expect(
             queryMap["sortOrder"].first, unittest.equals(arg_sortOrder));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1037,7 +1043,8 @@
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
               sortBy: arg_sortBy,
-              sortOrder: arg_sortOrder)
+              sortOrder: arg_sortOrder,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ChangesListResponse response) {
         checkChangesListResponse(response);
       })));
@@ -1053,6 +1060,7 @@
       var arg_dnsKeyId = "foo";
       var arg_clientOperationId = "foo";
       var arg_digestType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1084,6 +1092,7 @@
             unittest.equals(arg_clientOperationId));
         unittest.expect(
             queryMap["digestType"].first, unittest.equals(arg_digestType));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1094,7 +1103,8 @@
       res
           .get(arg_project, arg_managedZone, arg_dnsKeyId,
               clientOperationId: arg_clientOperationId,
-              digestType: arg_digestType)
+              digestType: arg_digestType,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DnsKey response) {
         checkDnsKey(response);
       })));
@@ -1108,6 +1118,7 @@
       var arg_digestType = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1141,6 +1152,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1152,7 +1164,8 @@
           .list(arg_project, arg_managedZone,
               digestType: arg_digestType,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DnsKeysListResponse response) {
         checkDnsKeysListResponse(response);
       })));
@@ -1168,6 +1181,7 @@
       var arg_managedZone = "foo";
       var arg_operation = "foo";
       var arg_clientOperationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1197,6 +1211,7 @@
         }
         unittest.expect(queryMap["clientOperationId"].first,
             unittest.equals(arg_clientOperationId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1206,7 +1221,7 @@
       }), true);
       res
           .get(arg_project, arg_managedZone, arg_operation,
-              clientOperationId: arg_clientOperationId)
+              clientOperationId: arg_clientOperationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1221,6 +1236,7 @@
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
       var arg_sortBy = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1253,6 +1269,7 @@
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(queryMap["sortBy"].first, unittest.equals(arg_sortBy));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1265,7 +1282,8 @@
           .list(arg_project, arg_managedZone,
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
-              sortBy: arg_sortBy)
+              sortBy: arg_sortBy,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ManagedZoneOperationsListResponse response) {
         checkManagedZoneOperationsListResponse(response);
@@ -1280,6 +1298,7 @@
       var arg_request = buildManagedZone();
       var arg_project = "foo";
       var arg_clientOperationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ManagedZone.fromJson(json);
         checkManagedZone(obj);
@@ -1312,6 +1331,7 @@
         }
         unittest.expect(queryMap["clientOperationId"].first,
             unittest.equals(arg_clientOperationId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1321,7 +1341,7 @@
       }), true);
       res
           .create(arg_request, arg_project,
-              clientOperationId: arg_clientOperationId)
+              clientOperationId: arg_clientOperationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ManagedZone response) {
         checkManagedZone(response);
       })));
@@ -1333,6 +1353,7 @@
       var arg_project = "foo";
       var arg_managedZone = "foo";
       var arg_clientOperationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1362,6 +1383,7 @@
         }
         unittest.expect(queryMap["clientOperationId"].first,
             unittest.equals(arg_clientOperationId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1371,7 +1393,7 @@
       }), true);
       res
           .delete(arg_project, arg_managedZone,
-              clientOperationId: arg_clientOperationId)
+              clientOperationId: arg_clientOperationId, $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.ManagedZonesDeleteResponse response) {
         checkManagedZonesDeleteResponse(response);
@@ -1384,6 +1406,7 @@
       var arg_project = "foo";
       var arg_managedZone = "foo";
       var arg_clientOperationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1413,6 +1436,7 @@
         }
         unittest.expect(queryMap["clientOperationId"].first,
             unittest.equals(arg_clientOperationId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1422,7 +1446,7 @@
       }), true);
       res
           .get(arg_project, arg_managedZone,
-              clientOperationId: arg_clientOperationId)
+              clientOperationId: arg_clientOperationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ManagedZone response) {
         checkManagedZone(response);
       })));
@@ -1435,6 +1459,7 @@
       var arg_dnsName = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1468,6 +1493,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1479,7 +1505,8 @@
           .list(arg_project,
               dnsName: arg_dnsName,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ManagedZonesListResponse response) {
         checkManagedZonesListResponse(response);
       })));
@@ -1492,6 +1519,7 @@
       var arg_project = "foo";
       var arg_managedZone = "foo";
       var arg_clientOperationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ManagedZone.fromJson(json);
         checkManagedZone(obj);
@@ -1524,6 +1552,7 @@
         }
         unittest.expect(queryMap["clientOperationId"].first,
             unittest.equals(arg_clientOperationId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1533,7 +1562,7 @@
       }), true);
       res
           .patch(arg_request, arg_project, arg_managedZone,
-              clientOperationId: arg_clientOperationId)
+              clientOperationId: arg_clientOperationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1546,6 +1575,7 @@
       var arg_project = "foo";
       var arg_managedZone = "foo";
       var arg_clientOperationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ManagedZone.fromJson(json);
         checkManagedZone(obj);
@@ -1578,6 +1608,7 @@
         }
         unittest.expect(queryMap["clientOperationId"].first,
             unittest.equals(arg_clientOperationId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1587,7 +1618,7 @@
       }), true);
       res
           .update(arg_request, arg_project, arg_managedZone,
-              clientOperationId: arg_clientOperationId)
+              clientOperationId: arg_clientOperationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1600,6 +1631,7 @@
       api.ProjectsResourceApi res = new api.DnsApi(mock).projects;
       var arg_project = "foo";
       var arg_clientOperationId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1629,6 +1661,7 @@
         }
         unittest.expect(queryMap["clientOperationId"].first,
             unittest.equals(arg_clientOperationId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1637,7 +1670,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, clientOperationId: arg_clientOperationId)
+          .get(arg_project,
+              clientOperationId: arg_clientOperationId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Project response) {
         checkProject(response);
       })));
@@ -1655,6 +1689,7 @@
       var arg_name = "foo";
       var arg_pageToken = "foo";
       var arg_type = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1688,6 +1723,7 @@
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(queryMap["type"].first, unittest.equals(arg_type));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1700,7 +1736,8 @@
               maxResults: arg_maxResults,
               name: arg_name,
               pageToken: arg_pageToken,
-              type: arg_type)
+              type: arg_type,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ResourceRecordSetsListResponse response) {
         checkResourceRecordSetsListResponse(response);
diff --git a/generated/googleapis_beta/test/firestore/v1beta1_test.dart b/generated/googleapis_beta/test/firestore/v1beta1_test.dart
new file mode 100644
index 0000000..6e972f3
--- /dev/null
+++ b/generated/googleapis_beta/test/firestore/v1beta1_test.dart
@@ -0,0 +1,3251 @@
+library googleapis_beta.firestore.v1beta1.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis_beta/firestore/v1beta1.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+buildUnnamed3845() {
+  var o = new core.List<api.Value>();
+  o.add(buildValue());
+  o.add(buildValue());
+  return o;
+}
+
+checkUnnamed3845(core.List<api.Value> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkValue(o[0]);
+  checkValue(o[1]);
+}
+
+core.int buildCounterArrayValue = 0;
+buildArrayValue() {
+  var o = new api.ArrayValue();
+  buildCounterArrayValue++;
+  if (buildCounterArrayValue < 3) {
+    o.values = buildUnnamed3845();
+  }
+  buildCounterArrayValue--;
+  return o;
+}
+
+checkArrayValue(api.ArrayValue o) {
+  buildCounterArrayValue++;
+  if (buildCounterArrayValue < 3) {
+    checkUnnamed3845(o.values);
+  }
+  buildCounterArrayValue--;
+}
+
+buildUnnamed3846() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3846(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterBatchGetDocumentsRequest = 0;
+buildBatchGetDocumentsRequest() {
+  var o = new api.BatchGetDocumentsRequest();
+  buildCounterBatchGetDocumentsRequest++;
+  if (buildCounterBatchGetDocumentsRequest < 3) {
+    o.documents = buildUnnamed3846();
+    o.mask = buildDocumentMask();
+    o.newTransaction = buildTransactionOptions();
+    o.readTime = "foo";
+    o.transaction = "foo";
+  }
+  buildCounterBatchGetDocumentsRequest--;
+  return o;
+}
+
+checkBatchGetDocumentsRequest(api.BatchGetDocumentsRequest o) {
+  buildCounterBatchGetDocumentsRequest++;
+  if (buildCounterBatchGetDocumentsRequest < 3) {
+    checkUnnamed3846(o.documents);
+    checkDocumentMask(o.mask);
+    checkTransactionOptions(o.newTransaction);
+    unittest.expect(o.readTime, unittest.equals('foo'));
+    unittest.expect(o.transaction, unittest.equals('foo'));
+  }
+  buildCounterBatchGetDocumentsRequest--;
+}
+
+core.int buildCounterBatchGetDocumentsResponse = 0;
+buildBatchGetDocumentsResponse() {
+  var o = new api.BatchGetDocumentsResponse();
+  buildCounterBatchGetDocumentsResponse++;
+  if (buildCounterBatchGetDocumentsResponse < 3) {
+    o.found = buildDocument();
+    o.missing = "foo";
+    o.readTime = "foo";
+    o.transaction = "foo";
+  }
+  buildCounterBatchGetDocumentsResponse--;
+  return o;
+}
+
+checkBatchGetDocumentsResponse(api.BatchGetDocumentsResponse o) {
+  buildCounterBatchGetDocumentsResponse++;
+  if (buildCounterBatchGetDocumentsResponse < 3) {
+    checkDocument(o.found);
+    unittest.expect(o.missing, unittest.equals('foo'));
+    unittest.expect(o.readTime, unittest.equals('foo'));
+    unittest.expect(o.transaction, unittest.equals('foo'));
+  }
+  buildCounterBatchGetDocumentsResponse--;
+}
+
+core.int buildCounterBeginTransactionRequest = 0;
+buildBeginTransactionRequest() {
+  var o = new api.BeginTransactionRequest();
+  buildCounterBeginTransactionRequest++;
+  if (buildCounterBeginTransactionRequest < 3) {
+    o.options = buildTransactionOptions();
+  }
+  buildCounterBeginTransactionRequest--;
+  return o;
+}
+
+checkBeginTransactionRequest(api.BeginTransactionRequest o) {
+  buildCounterBeginTransactionRequest++;
+  if (buildCounterBeginTransactionRequest < 3) {
+    checkTransactionOptions(o.options);
+  }
+  buildCounterBeginTransactionRequest--;
+}
+
+core.int buildCounterBeginTransactionResponse = 0;
+buildBeginTransactionResponse() {
+  var o = new api.BeginTransactionResponse();
+  buildCounterBeginTransactionResponse++;
+  if (buildCounterBeginTransactionResponse < 3) {
+    o.transaction = "foo";
+  }
+  buildCounterBeginTransactionResponse--;
+  return o;
+}
+
+checkBeginTransactionResponse(api.BeginTransactionResponse o) {
+  buildCounterBeginTransactionResponse++;
+  if (buildCounterBeginTransactionResponse < 3) {
+    unittest.expect(o.transaction, unittest.equals('foo'));
+  }
+  buildCounterBeginTransactionResponse--;
+}
+
+core.int buildCounterCollectionSelector = 0;
+buildCollectionSelector() {
+  var o = new api.CollectionSelector();
+  buildCounterCollectionSelector++;
+  if (buildCounterCollectionSelector < 3) {
+    o.allDescendants = true;
+    o.collectionId = "foo";
+  }
+  buildCounterCollectionSelector--;
+  return o;
+}
+
+checkCollectionSelector(api.CollectionSelector o) {
+  buildCounterCollectionSelector++;
+  if (buildCounterCollectionSelector < 3) {
+    unittest.expect(o.allDescendants, unittest.isTrue);
+    unittest.expect(o.collectionId, unittest.equals('foo'));
+  }
+  buildCounterCollectionSelector--;
+}
+
+buildUnnamed3847() {
+  var o = new core.List<api.Write>();
+  o.add(buildWrite());
+  o.add(buildWrite());
+  return o;
+}
+
+checkUnnamed3847(core.List<api.Write> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkWrite(o[0]);
+  checkWrite(o[1]);
+}
+
+core.int buildCounterCommitRequest = 0;
+buildCommitRequest() {
+  var o = new api.CommitRequest();
+  buildCounterCommitRequest++;
+  if (buildCounterCommitRequest < 3) {
+    o.transaction = "foo";
+    o.writes = buildUnnamed3847();
+  }
+  buildCounterCommitRequest--;
+  return o;
+}
+
+checkCommitRequest(api.CommitRequest o) {
+  buildCounterCommitRequest++;
+  if (buildCounterCommitRequest < 3) {
+    unittest.expect(o.transaction, unittest.equals('foo'));
+    checkUnnamed3847(o.writes);
+  }
+  buildCounterCommitRequest--;
+}
+
+buildUnnamed3848() {
+  var o = new core.List<api.WriteResult>();
+  o.add(buildWriteResult());
+  o.add(buildWriteResult());
+  return o;
+}
+
+checkUnnamed3848(core.List<api.WriteResult> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkWriteResult(o[0]);
+  checkWriteResult(o[1]);
+}
+
+core.int buildCounterCommitResponse = 0;
+buildCommitResponse() {
+  var o = new api.CommitResponse();
+  buildCounterCommitResponse++;
+  if (buildCounterCommitResponse < 3) {
+    o.commitTime = "foo";
+    o.writeResults = buildUnnamed3848();
+  }
+  buildCounterCommitResponse--;
+  return o;
+}
+
+checkCommitResponse(api.CommitResponse o) {
+  buildCounterCommitResponse++;
+  if (buildCounterCommitResponse < 3) {
+    unittest.expect(o.commitTime, unittest.equals('foo'));
+    checkUnnamed3848(o.writeResults);
+  }
+  buildCounterCommitResponse--;
+}
+
+buildUnnamed3849() {
+  var o = new core.List<api.Filter>();
+  o.add(buildFilter());
+  o.add(buildFilter());
+  return o;
+}
+
+checkUnnamed3849(core.List<api.Filter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFilter(o[0]);
+  checkFilter(o[1]);
+}
+
+core.int buildCounterCompositeFilter = 0;
+buildCompositeFilter() {
+  var o = new api.CompositeFilter();
+  buildCounterCompositeFilter++;
+  if (buildCounterCompositeFilter < 3) {
+    o.filters = buildUnnamed3849();
+    o.op = "foo";
+  }
+  buildCounterCompositeFilter--;
+  return o;
+}
+
+checkCompositeFilter(api.CompositeFilter o) {
+  buildCounterCompositeFilter++;
+  if (buildCounterCompositeFilter < 3) {
+    checkUnnamed3849(o.filters);
+    unittest.expect(o.op, unittest.equals('foo'));
+  }
+  buildCounterCompositeFilter--;
+}
+
+buildUnnamed3850() {
+  var o = new core.List<api.Value>();
+  o.add(buildValue());
+  o.add(buildValue());
+  return o;
+}
+
+checkUnnamed3850(core.List<api.Value> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkValue(o[0]);
+  checkValue(o[1]);
+}
+
+core.int buildCounterCursor = 0;
+buildCursor() {
+  var o = new api.Cursor();
+  buildCounterCursor++;
+  if (buildCounterCursor < 3) {
+    o.before = true;
+    o.values = buildUnnamed3850();
+  }
+  buildCounterCursor--;
+  return o;
+}
+
+checkCursor(api.Cursor o) {
+  buildCounterCursor++;
+  if (buildCounterCursor < 3) {
+    unittest.expect(o.before, unittest.isTrue);
+    checkUnnamed3850(o.values);
+  }
+  buildCounterCursor--;
+}
+
+buildUnnamed3851() {
+  var o = new core.Map<core.String, api.Value>();
+  o["x"] = buildValue();
+  o["y"] = buildValue();
+  return o;
+}
+
+checkUnnamed3851(core.Map<core.String, api.Value> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkValue(o["x"]);
+  checkValue(o["y"]);
+}
+
+core.int buildCounterDocument = 0;
+buildDocument() {
+  var o = new api.Document();
+  buildCounterDocument++;
+  if (buildCounterDocument < 3) {
+    o.createTime = "foo";
+    o.fields = buildUnnamed3851();
+    o.name = "foo";
+    o.updateTime = "foo";
+  }
+  buildCounterDocument--;
+  return o;
+}
+
+checkDocument(api.Document o) {
+  buildCounterDocument++;
+  if (buildCounterDocument < 3) {
+    unittest.expect(o.createTime, unittest.equals('foo'));
+    checkUnnamed3851(o.fields);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.updateTime, unittest.equals('foo'));
+  }
+  buildCounterDocument--;
+}
+
+buildUnnamed3852() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed3852(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+buildUnnamed3853() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed3853(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+core.int buildCounterDocumentChange = 0;
+buildDocumentChange() {
+  var o = new api.DocumentChange();
+  buildCounterDocumentChange++;
+  if (buildCounterDocumentChange < 3) {
+    o.document = buildDocument();
+    o.removedTargetIds = buildUnnamed3852();
+    o.targetIds = buildUnnamed3853();
+  }
+  buildCounterDocumentChange--;
+  return o;
+}
+
+checkDocumentChange(api.DocumentChange o) {
+  buildCounterDocumentChange++;
+  if (buildCounterDocumentChange < 3) {
+    checkDocument(o.document);
+    checkUnnamed3852(o.removedTargetIds);
+    checkUnnamed3853(o.targetIds);
+  }
+  buildCounterDocumentChange--;
+}
+
+buildUnnamed3854() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed3854(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+core.int buildCounterDocumentDelete = 0;
+buildDocumentDelete() {
+  var o = new api.DocumentDelete();
+  buildCounterDocumentDelete++;
+  if (buildCounterDocumentDelete < 3) {
+    o.document = "foo";
+    o.readTime = "foo";
+    o.removedTargetIds = buildUnnamed3854();
+  }
+  buildCounterDocumentDelete--;
+  return o;
+}
+
+checkDocumentDelete(api.DocumentDelete o) {
+  buildCounterDocumentDelete++;
+  if (buildCounterDocumentDelete < 3) {
+    unittest.expect(o.document, unittest.equals('foo'));
+    unittest.expect(o.readTime, unittest.equals('foo'));
+    checkUnnamed3854(o.removedTargetIds);
+  }
+  buildCounterDocumentDelete--;
+}
+
+buildUnnamed3855() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3855(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterDocumentMask = 0;
+buildDocumentMask() {
+  var o = new api.DocumentMask();
+  buildCounterDocumentMask++;
+  if (buildCounterDocumentMask < 3) {
+    o.fieldPaths = buildUnnamed3855();
+  }
+  buildCounterDocumentMask--;
+  return o;
+}
+
+checkDocumentMask(api.DocumentMask o) {
+  buildCounterDocumentMask++;
+  if (buildCounterDocumentMask < 3) {
+    checkUnnamed3855(o.fieldPaths);
+  }
+  buildCounterDocumentMask--;
+}
+
+buildUnnamed3856() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed3856(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+core.int buildCounterDocumentRemove = 0;
+buildDocumentRemove() {
+  var o = new api.DocumentRemove();
+  buildCounterDocumentRemove++;
+  if (buildCounterDocumentRemove < 3) {
+    o.document = "foo";
+    o.readTime = "foo";
+    o.removedTargetIds = buildUnnamed3856();
+  }
+  buildCounterDocumentRemove--;
+  return o;
+}
+
+checkDocumentRemove(api.DocumentRemove o) {
+  buildCounterDocumentRemove++;
+  if (buildCounterDocumentRemove < 3) {
+    unittest.expect(o.document, unittest.equals('foo'));
+    unittest.expect(o.readTime, unittest.equals('foo'));
+    checkUnnamed3856(o.removedTargetIds);
+  }
+  buildCounterDocumentRemove--;
+}
+
+buildUnnamed3857() {
+  var o = new core.List<api.FieldTransform>();
+  o.add(buildFieldTransform());
+  o.add(buildFieldTransform());
+  return o;
+}
+
+checkUnnamed3857(core.List<api.FieldTransform> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFieldTransform(o[0]);
+  checkFieldTransform(o[1]);
+}
+
+core.int buildCounterDocumentTransform = 0;
+buildDocumentTransform() {
+  var o = new api.DocumentTransform();
+  buildCounterDocumentTransform++;
+  if (buildCounterDocumentTransform < 3) {
+    o.document = "foo";
+    o.fieldTransforms = buildUnnamed3857();
+  }
+  buildCounterDocumentTransform--;
+  return o;
+}
+
+checkDocumentTransform(api.DocumentTransform o) {
+  buildCounterDocumentTransform++;
+  if (buildCounterDocumentTransform < 3) {
+    unittest.expect(o.document, unittest.equals('foo'));
+    checkUnnamed3857(o.fieldTransforms);
+  }
+  buildCounterDocumentTransform--;
+}
+
+buildUnnamed3858() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3858(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterDocumentsTarget = 0;
+buildDocumentsTarget() {
+  var o = new api.DocumentsTarget();
+  buildCounterDocumentsTarget++;
+  if (buildCounterDocumentsTarget < 3) {
+    o.documents = buildUnnamed3858();
+  }
+  buildCounterDocumentsTarget--;
+  return o;
+}
+
+checkDocumentsTarget(api.DocumentsTarget o) {
+  buildCounterDocumentsTarget++;
+  if (buildCounterDocumentsTarget < 3) {
+    checkUnnamed3858(o.documents);
+  }
+  buildCounterDocumentsTarget--;
+}
+
+core.int buildCounterEmpty = 0;
+buildEmpty() {
+  var o = new api.Empty();
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+  return o;
+}
+
+checkEmpty(api.Empty o) {
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+}
+
+core.int buildCounterExistenceFilter = 0;
+buildExistenceFilter() {
+  var o = new api.ExistenceFilter();
+  buildCounterExistenceFilter++;
+  if (buildCounterExistenceFilter < 3) {
+    o.count = 42;
+    o.targetId = 42;
+  }
+  buildCounterExistenceFilter--;
+  return o;
+}
+
+checkExistenceFilter(api.ExistenceFilter o) {
+  buildCounterExistenceFilter++;
+  if (buildCounterExistenceFilter < 3) {
+    unittest.expect(o.count, unittest.equals(42));
+    unittest.expect(o.targetId, unittest.equals(42));
+  }
+  buildCounterExistenceFilter--;
+}
+
+core.int buildCounterFieldFilter = 0;
+buildFieldFilter() {
+  var o = new api.FieldFilter();
+  buildCounterFieldFilter++;
+  if (buildCounterFieldFilter < 3) {
+    o.field = buildFieldReference();
+    o.op = "foo";
+    o.value = buildValue();
+  }
+  buildCounterFieldFilter--;
+  return o;
+}
+
+checkFieldFilter(api.FieldFilter o) {
+  buildCounterFieldFilter++;
+  if (buildCounterFieldFilter < 3) {
+    checkFieldReference(o.field);
+    unittest.expect(o.op, unittest.equals('foo'));
+    checkValue(o.value);
+  }
+  buildCounterFieldFilter--;
+}
+
+core.int buildCounterFieldReference = 0;
+buildFieldReference() {
+  var o = new api.FieldReference();
+  buildCounterFieldReference++;
+  if (buildCounterFieldReference < 3) {
+    o.fieldPath = "foo";
+  }
+  buildCounterFieldReference--;
+  return o;
+}
+
+checkFieldReference(api.FieldReference o) {
+  buildCounterFieldReference++;
+  if (buildCounterFieldReference < 3) {
+    unittest.expect(o.fieldPath, unittest.equals('foo'));
+  }
+  buildCounterFieldReference--;
+}
+
+core.int buildCounterFieldTransform = 0;
+buildFieldTransform() {
+  var o = new api.FieldTransform();
+  buildCounterFieldTransform++;
+  if (buildCounterFieldTransform < 3) {
+    o.fieldPath = "foo";
+    o.setToServerValue = "foo";
+  }
+  buildCounterFieldTransform--;
+  return o;
+}
+
+checkFieldTransform(api.FieldTransform o) {
+  buildCounterFieldTransform++;
+  if (buildCounterFieldTransform < 3) {
+    unittest.expect(o.fieldPath, unittest.equals('foo'));
+    unittest.expect(o.setToServerValue, unittest.equals('foo'));
+  }
+  buildCounterFieldTransform--;
+}
+
+core.int buildCounterFilter = 0;
+buildFilter() {
+  var o = new api.Filter();
+  buildCounterFilter++;
+  if (buildCounterFilter < 3) {
+    o.compositeFilter = buildCompositeFilter();
+    o.fieldFilter = buildFieldFilter();
+    o.unaryFilter = buildUnaryFilter();
+  }
+  buildCounterFilter--;
+  return o;
+}
+
+checkFilter(api.Filter o) {
+  buildCounterFilter++;
+  if (buildCounterFilter < 3) {
+    checkCompositeFilter(o.compositeFilter);
+    checkFieldFilter(o.fieldFilter);
+    checkUnaryFilter(o.unaryFilter);
+  }
+  buildCounterFilter--;
+}
+
+buildUnnamed3859() {
+  var o = new core.List<api.IndexField>();
+  o.add(buildIndexField());
+  o.add(buildIndexField());
+  return o;
+}
+
+checkUnnamed3859(core.List<api.IndexField> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkIndexField(o[0]);
+  checkIndexField(o[1]);
+}
+
+core.int buildCounterIndex = 0;
+buildIndex() {
+  var o = new api.Index();
+  buildCounterIndex++;
+  if (buildCounterIndex < 3) {
+    o.collectionId = "foo";
+    o.fields = buildUnnamed3859();
+    o.name = "foo";
+    o.state = "foo";
+  }
+  buildCounterIndex--;
+  return o;
+}
+
+checkIndex(api.Index o) {
+  buildCounterIndex++;
+  if (buildCounterIndex < 3) {
+    unittest.expect(o.collectionId, unittest.equals('foo'));
+    checkUnnamed3859(o.fields);
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.state, unittest.equals('foo'));
+  }
+  buildCounterIndex--;
+}
+
+core.int buildCounterIndexField = 0;
+buildIndexField() {
+  var o = new api.IndexField();
+  buildCounterIndexField++;
+  if (buildCounterIndexField < 3) {
+    o.fieldPath = "foo";
+    o.mode = "foo";
+  }
+  buildCounterIndexField--;
+  return o;
+}
+
+checkIndexField(api.IndexField o) {
+  buildCounterIndexField++;
+  if (buildCounterIndexField < 3) {
+    unittest.expect(o.fieldPath, unittest.equals('foo'));
+    unittest.expect(o.mode, unittest.equals('foo'));
+  }
+  buildCounterIndexField--;
+}
+
+core.int buildCounterLatLng = 0;
+buildLatLng() {
+  var o = new api.LatLng();
+  buildCounterLatLng++;
+  if (buildCounterLatLng < 3) {
+    o.latitude = 42.0;
+    o.longitude = 42.0;
+  }
+  buildCounterLatLng--;
+  return o;
+}
+
+checkLatLng(api.LatLng o) {
+  buildCounterLatLng++;
+  if (buildCounterLatLng < 3) {
+    unittest.expect(o.latitude, unittest.equals(42.0));
+    unittest.expect(o.longitude, unittest.equals(42.0));
+  }
+  buildCounterLatLng--;
+}
+
+core.int buildCounterListCollectionIdsRequest = 0;
+buildListCollectionIdsRequest() {
+  var o = new api.ListCollectionIdsRequest();
+  buildCounterListCollectionIdsRequest++;
+  if (buildCounterListCollectionIdsRequest < 3) {
+    o.pageSize = 42;
+    o.pageToken = "foo";
+  }
+  buildCounterListCollectionIdsRequest--;
+  return o;
+}
+
+checkListCollectionIdsRequest(api.ListCollectionIdsRequest o) {
+  buildCounterListCollectionIdsRequest++;
+  if (buildCounterListCollectionIdsRequest < 3) {
+    unittest.expect(o.pageSize, unittest.equals(42));
+    unittest.expect(o.pageToken, unittest.equals('foo'));
+  }
+  buildCounterListCollectionIdsRequest--;
+}
+
+buildUnnamed3860() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3860(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterListCollectionIdsResponse = 0;
+buildListCollectionIdsResponse() {
+  var o = new api.ListCollectionIdsResponse();
+  buildCounterListCollectionIdsResponse++;
+  if (buildCounterListCollectionIdsResponse < 3) {
+    o.collectionIds = buildUnnamed3860();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListCollectionIdsResponse--;
+  return o;
+}
+
+checkListCollectionIdsResponse(api.ListCollectionIdsResponse o) {
+  buildCounterListCollectionIdsResponse++;
+  if (buildCounterListCollectionIdsResponse < 3) {
+    checkUnnamed3860(o.collectionIds);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListCollectionIdsResponse--;
+}
+
+buildUnnamed3861() {
+  var o = new core.List<api.Document>();
+  o.add(buildDocument());
+  o.add(buildDocument());
+  return o;
+}
+
+checkUnnamed3861(core.List<api.Document> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDocument(o[0]);
+  checkDocument(o[1]);
+}
+
+core.int buildCounterListDocumentsResponse = 0;
+buildListDocumentsResponse() {
+  var o = new api.ListDocumentsResponse();
+  buildCounterListDocumentsResponse++;
+  if (buildCounterListDocumentsResponse < 3) {
+    o.documents = buildUnnamed3861();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListDocumentsResponse--;
+  return o;
+}
+
+checkListDocumentsResponse(api.ListDocumentsResponse o) {
+  buildCounterListDocumentsResponse++;
+  if (buildCounterListDocumentsResponse < 3) {
+    checkUnnamed3861(o.documents);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListDocumentsResponse--;
+}
+
+buildUnnamed3862() {
+  var o = new core.List<api.Index>();
+  o.add(buildIndex());
+  o.add(buildIndex());
+  return o;
+}
+
+checkUnnamed3862(core.List<api.Index> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkIndex(o[0]);
+  checkIndex(o[1]);
+}
+
+core.int buildCounterListIndexesResponse = 0;
+buildListIndexesResponse() {
+  var o = new api.ListIndexesResponse();
+  buildCounterListIndexesResponse++;
+  if (buildCounterListIndexesResponse < 3) {
+    o.indexes = buildUnnamed3862();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListIndexesResponse--;
+  return o;
+}
+
+checkListIndexesResponse(api.ListIndexesResponse o) {
+  buildCounterListIndexesResponse++;
+  if (buildCounterListIndexesResponse < 3) {
+    checkUnnamed3862(o.indexes);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListIndexesResponse--;
+}
+
+buildUnnamed3863() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed3863(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+core.int buildCounterListenRequest = 0;
+buildListenRequest() {
+  var o = new api.ListenRequest();
+  buildCounterListenRequest++;
+  if (buildCounterListenRequest < 3) {
+    o.addTarget = buildTarget();
+    o.labels = buildUnnamed3863();
+    o.removeTarget = 42;
+  }
+  buildCounterListenRequest--;
+  return o;
+}
+
+checkListenRequest(api.ListenRequest o) {
+  buildCounterListenRequest++;
+  if (buildCounterListenRequest < 3) {
+    checkTarget(o.addTarget);
+    checkUnnamed3863(o.labels);
+    unittest.expect(o.removeTarget, unittest.equals(42));
+  }
+  buildCounterListenRequest--;
+}
+
+core.int buildCounterListenResponse = 0;
+buildListenResponse() {
+  var o = new api.ListenResponse();
+  buildCounterListenResponse++;
+  if (buildCounterListenResponse < 3) {
+    o.documentChange = buildDocumentChange();
+    o.documentDelete = buildDocumentDelete();
+    o.documentRemove = buildDocumentRemove();
+    o.filter = buildExistenceFilter();
+    o.targetChange = buildTargetChange();
+  }
+  buildCounterListenResponse--;
+  return o;
+}
+
+checkListenResponse(api.ListenResponse o) {
+  buildCounterListenResponse++;
+  if (buildCounterListenResponse < 3) {
+    checkDocumentChange(o.documentChange);
+    checkDocumentDelete(o.documentDelete);
+    checkDocumentRemove(o.documentRemove);
+    checkExistenceFilter(o.filter);
+    checkTargetChange(o.targetChange);
+  }
+  buildCounterListenResponse--;
+}
+
+buildUnnamed3864() {
+  var o = new core.Map<core.String, api.Value>();
+  o["x"] = buildValue();
+  o["y"] = buildValue();
+  return o;
+}
+
+checkUnnamed3864(core.Map<core.String, api.Value> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkValue(o["x"]);
+  checkValue(o["y"]);
+}
+
+core.int buildCounterMapValue = 0;
+buildMapValue() {
+  var o = new api.MapValue();
+  buildCounterMapValue++;
+  if (buildCounterMapValue < 3) {
+    o.fields = buildUnnamed3864();
+  }
+  buildCounterMapValue--;
+  return o;
+}
+
+checkMapValue(api.MapValue o) {
+  buildCounterMapValue++;
+  if (buildCounterMapValue < 3) {
+    checkUnnamed3864(o.fields);
+  }
+  buildCounterMapValue--;
+}
+
+buildUnnamed3865() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed3865(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o["x"]) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(casted1["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted1["bool"], unittest.equals(true));
+  unittest.expect(casted1["string"], unittest.equals('foo'));
+  var casted2 = (o["y"]) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(casted2["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted2["bool"], unittest.equals(true));
+  unittest.expect(casted2["string"], unittest.equals('foo'));
+}
+
+buildUnnamed3866() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed3866(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted3 = (o["x"]) as core.Map;
+  unittest.expect(casted3, unittest.hasLength(3));
+  unittest.expect(casted3["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted3["bool"], unittest.equals(true));
+  unittest.expect(casted3["string"], unittest.equals('foo'));
+  var casted4 = (o["y"]) as core.Map;
+  unittest.expect(casted4, unittest.hasLength(3));
+  unittest.expect(casted4["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted4["bool"], unittest.equals(true));
+  unittest.expect(casted4["string"], unittest.equals('foo'));
+}
+
+core.int buildCounterOperation = 0;
+buildOperation() {
+  var o = new api.Operation();
+  buildCounterOperation++;
+  if (buildCounterOperation < 3) {
+    o.done = true;
+    o.error = buildStatus();
+    o.metadata = buildUnnamed3865();
+    o.name = "foo";
+    o.response = buildUnnamed3866();
+  }
+  buildCounterOperation--;
+  return o;
+}
+
+checkOperation(api.Operation o) {
+  buildCounterOperation++;
+  if (buildCounterOperation < 3) {
+    unittest.expect(o.done, unittest.isTrue);
+    checkStatus(o.error);
+    checkUnnamed3865(o.metadata);
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed3866(o.response);
+  }
+  buildCounterOperation--;
+}
+
+core.int buildCounterOrder = 0;
+buildOrder() {
+  var o = new api.Order();
+  buildCounterOrder++;
+  if (buildCounterOrder < 3) {
+    o.direction = "foo";
+    o.field = buildFieldReference();
+  }
+  buildCounterOrder--;
+  return o;
+}
+
+checkOrder(api.Order o) {
+  buildCounterOrder++;
+  if (buildCounterOrder < 3) {
+    unittest.expect(o.direction, unittest.equals('foo'));
+    checkFieldReference(o.field);
+  }
+  buildCounterOrder--;
+}
+
+core.int buildCounterPrecondition = 0;
+buildPrecondition() {
+  var o = new api.Precondition();
+  buildCounterPrecondition++;
+  if (buildCounterPrecondition < 3) {
+    o.exists = true;
+    o.updateTime = "foo";
+  }
+  buildCounterPrecondition--;
+  return o;
+}
+
+checkPrecondition(api.Precondition o) {
+  buildCounterPrecondition++;
+  if (buildCounterPrecondition < 3) {
+    unittest.expect(o.exists, unittest.isTrue);
+    unittest.expect(o.updateTime, unittest.equals('foo'));
+  }
+  buildCounterPrecondition--;
+}
+
+buildUnnamed3867() {
+  var o = new core.List<api.FieldReference>();
+  o.add(buildFieldReference());
+  o.add(buildFieldReference());
+  return o;
+}
+
+checkUnnamed3867(core.List<api.FieldReference> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFieldReference(o[0]);
+  checkFieldReference(o[1]);
+}
+
+core.int buildCounterProjection = 0;
+buildProjection() {
+  var o = new api.Projection();
+  buildCounterProjection++;
+  if (buildCounterProjection < 3) {
+    o.fields = buildUnnamed3867();
+  }
+  buildCounterProjection--;
+  return o;
+}
+
+checkProjection(api.Projection o) {
+  buildCounterProjection++;
+  if (buildCounterProjection < 3) {
+    checkUnnamed3867(o.fields);
+  }
+  buildCounterProjection--;
+}
+
+core.int buildCounterQueryTarget = 0;
+buildQueryTarget() {
+  var o = new api.QueryTarget();
+  buildCounterQueryTarget++;
+  if (buildCounterQueryTarget < 3) {
+    o.parent = "foo";
+    o.structuredQuery = buildStructuredQuery();
+  }
+  buildCounterQueryTarget--;
+  return o;
+}
+
+checkQueryTarget(api.QueryTarget o) {
+  buildCounterQueryTarget++;
+  if (buildCounterQueryTarget < 3) {
+    unittest.expect(o.parent, unittest.equals('foo'));
+    checkStructuredQuery(o.structuredQuery);
+  }
+  buildCounterQueryTarget--;
+}
+
+core.int buildCounterReadOnly = 0;
+buildReadOnly() {
+  var o = new api.ReadOnly();
+  buildCounterReadOnly++;
+  if (buildCounterReadOnly < 3) {
+    o.readTime = "foo";
+  }
+  buildCounterReadOnly--;
+  return o;
+}
+
+checkReadOnly(api.ReadOnly o) {
+  buildCounterReadOnly++;
+  if (buildCounterReadOnly < 3) {
+    unittest.expect(o.readTime, unittest.equals('foo'));
+  }
+  buildCounterReadOnly--;
+}
+
+core.int buildCounterReadWrite = 0;
+buildReadWrite() {
+  var o = new api.ReadWrite();
+  buildCounterReadWrite++;
+  if (buildCounterReadWrite < 3) {
+    o.retryTransaction = "foo";
+  }
+  buildCounterReadWrite--;
+  return o;
+}
+
+checkReadWrite(api.ReadWrite o) {
+  buildCounterReadWrite++;
+  if (buildCounterReadWrite < 3) {
+    unittest.expect(o.retryTransaction, unittest.equals('foo'));
+  }
+  buildCounterReadWrite--;
+}
+
+core.int buildCounterRollbackRequest = 0;
+buildRollbackRequest() {
+  var o = new api.RollbackRequest();
+  buildCounterRollbackRequest++;
+  if (buildCounterRollbackRequest < 3) {
+    o.transaction = "foo";
+  }
+  buildCounterRollbackRequest--;
+  return o;
+}
+
+checkRollbackRequest(api.RollbackRequest o) {
+  buildCounterRollbackRequest++;
+  if (buildCounterRollbackRequest < 3) {
+    unittest.expect(o.transaction, unittest.equals('foo'));
+  }
+  buildCounterRollbackRequest--;
+}
+
+core.int buildCounterRunQueryRequest = 0;
+buildRunQueryRequest() {
+  var o = new api.RunQueryRequest();
+  buildCounterRunQueryRequest++;
+  if (buildCounterRunQueryRequest < 3) {
+    o.newTransaction = buildTransactionOptions();
+    o.readTime = "foo";
+    o.structuredQuery = buildStructuredQuery();
+    o.transaction = "foo";
+  }
+  buildCounterRunQueryRequest--;
+  return o;
+}
+
+checkRunQueryRequest(api.RunQueryRequest o) {
+  buildCounterRunQueryRequest++;
+  if (buildCounterRunQueryRequest < 3) {
+    checkTransactionOptions(o.newTransaction);
+    unittest.expect(o.readTime, unittest.equals('foo'));
+    checkStructuredQuery(o.structuredQuery);
+    unittest.expect(o.transaction, unittest.equals('foo'));
+  }
+  buildCounterRunQueryRequest--;
+}
+
+core.int buildCounterRunQueryResponse = 0;
+buildRunQueryResponse() {
+  var o = new api.RunQueryResponse();
+  buildCounterRunQueryResponse++;
+  if (buildCounterRunQueryResponse < 3) {
+    o.document = buildDocument();
+    o.readTime = "foo";
+    o.skippedResults = 42;
+    o.transaction = "foo";
+  }
+  buildCounterRunQueryResponse--;
+  return o;
+}
+
+checkRunQueryResponse(api.RunQueryResponse o) {
+  buildCounterRunQueryResponse++;
+  if (buildCounterRunQueryResponse < 3) {
+    checkDocument(o.document);
+    unittest.expect(o.readTime, unittest.equals('foo'));
+    unittest.expect(o.skippedResults, unittest.equals(42));
+    unittest.expect(o.transaction, unittest.equals('foo'));
+  }
+  buildCounterRunQueryResponse--;
+}
+
+buildUnnamed3868() {
+  var o = new core.Map<core.String, core.Object>();
+  o["x"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  o["y"] = {
+    'list': [1, 2, 3],
+    'bool': true,
+    'string': 'foo'
+  };
+  return o;
+}
+
+checkUnnamed3868(core.Map<core.String, core.Object> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted5 = (o["x"]) as core.Map;
+  unittest.expect(casted5, unittest.hasLength(3));
+  unittest.expect(casted5["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted5["bool"], unittest.equals(true));
+  unittest.expect(casted5["string"], unittest.equals('foo'));
+  var casted6 = (o["y"]) as core.Map;
+  unittest.expect(casted6, unittest.hasLength(3));
+  unittest.expect(casted6["list"], unittest.equals([1, 2, 3]));
+  unittest.expect(casted6["bool"], unittest.equals(true));
+  unittest.expect(casted6["string"], unittest.equals('foo'));
+}
+
+buildUnnamed3869() {
+  var o = new core.List<core.Map<core.String, core.Object>>();
+  o.add(buildUnnamed3868());
+  o.add(buildUnnamed3868());
+  return o;
+}
+
+checkUnnamed3869(core.List<core.Map<core.String, core.Object>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed3868(o[0]);
+  checkUnnamed3868(o[1]);
+}
+
+core.int buildCounterStatus = 0;
+buildStatus() {
+  var o = new api.Status();
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    o.code = 42;
+    o.details = buildUnnamed3869();
+    o.message = "foo";
+  }
+  buildCounterStatus--;
+  return o;
+}
+
+checkStatus(api.Status o) {
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    unittest.expect(o.code, unittest.equals(42));
+    checkUnnamed3869(o.details);
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterStatus--;
+}
+
+buildUnnamed3870() {
+  var o = new core.List<api.CollectionSelector>();
+  o.add(buildCollectionSelector());
+  o.add(buildCollectionSelector());
+  return o;
+}
+
+checkUnnamed3870(core.List<api.CollectionSelector> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCollectionSelector(o[0]);
+  checkCollectionSelector(o[1]);
+}
+
+buildUnnamed3871() {
+  var o = new core.List<api.Order>();
+  o.add(buildOrder());
+  o.add(buildOrder());
+  return o;
+}
+
+checkUnnamed3871(core.List<api.Order> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOrder(o[0]);
+  checkOrder(o[1]);
+}
+
+core.int buildCounterStructuredQuery = 0;
+buildStructuredQuery() {
+  var o = new api.StructuredQuery();
+  buildCounterStructuredQuery++;
+  if (buildCounterStructuredQuery < 3) {
+    o.endAt = buildCursor();
+    o.from = buildUnnamed3870();
+    o.limit = 42;
+    o.offset = 42;
+    o.orderBy = buildUnnamed3871();
+    o.select = buildProjection();
+    o.startAt = buildCursor();
+    o.where = buildFilter();
+  }
+  buildCounterStructuredQuery--;
+  return o;
+}
+
+checkStructuredQuery(api.StructuredQuery o) {
+  buildCounterStructuredQuery++;
+  if (buildCounterStructuredQuery < 3) {
+    checkCursor(o.endAt);
+    checkUnnamed3870(o.from);
+    unittest.expect(o.limit, unittest.equals(42));
+    unittest.expect(o.offset, unittest.equals(42));
+    checkUnnamed3871(o.orderBy);
+    checkProjection(o.select);
+    checkCursor(o.startAt);
+    checkFilter(o.where);
+  }
+  buildCounterStructuredQuery--;
+}
+
+core.int buildCounterTarget = 0;
+buildTarget() {
+  var o = new api.Target();
+  buildCounterTarget++;
+  if (buildCounterTarget < 3) {
+    o.documents = buildDocumentsTarget();
+    o.once = true;
+    o.query = buildQueryTarget();
+    o.readTime = "foo";
+    o.resumeToken = "foo";
+    o.targetId = 42;
+  }
+  buildCounterTarget--;
+  return o;
+}
+
+checkTarget(api.Target o) {
+  buildCounterTarget++;
+  if (buildCounterTarget < 3) {
+    checkDocumentsTarget(o.documents);
+    unittest.expect(o.once, unittest.isTrue);
+    checkQueryTarget(o.query);
+    unittest.expect(o.readTime, unittest.equals('foo'));
+    unittest.expect(o.resumeToken, unittest.equals('foo'));
+    unittest.expect(o.targetId, unittest.equals(42));
+  }
+  buildCounterTarget--;
+}
+
+buildUnnamed3872() {
+  var o = new core.List<core.int>();
+  o.add(42);
+  o.add(42);
+  return o;
+}
+
+checkUnnamed3872(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals(42));
+  unittest.expect(o[1], unittest.equals(42));
+}
+
+core.int buildCounterTargetChange = 0;
+buildTargetChange() {
+  var o = new api.TargetChange();
+  buildCounterTargetChange++;
+  if (buildCounterTargetChange < 3) {
+    o.cause = buildStatus();
+    o.readTime = "foo";
+    o.resumeToken = "foo";
+    o.targetChangeType = "foo";
+    o.targetIds = buildUnnamed3872();
+  }
+  buildCounterTargetChange--;
+  return o;
+}
+
+checkTargetChange(api.TargetChange o) {
+  buildCounterTargetChange++;
+  if (buildCounterTargetChange < 3) {
+    checkStatus(o.cause);
+    unittest.expect(o.readTime, unittest.equals('foo'));
+    unittest.expect(o.resumeToken, unittest.equals('foo'));
+    unittest.expect(o.targetChangeType, unittest.equals('foo'));
+    checkUnnamed3872(o.targetIds);
+  }
+  buildCounterTargetChange--;
+}
+
+core.int buildCounterTransactionOptions = 0;
+buildTransactionOptions() {
+  var o = new api.TransactionOptions();
+  buildCounterTransactionOptions++;
+  if (buildCounterTransactionOptions < 3) {
+    o.readOnly = buildReadOnly();
+    o.readWrite = buildReadWrite();
+  }
+  buildCounterTransactionOptions--;
+  return o;
+}
+
+checkTransactionOptions(api.TransactionOptions o) {
+  buildCounterTransactionOptions++;
+  if (buildCounterTransactionOptions < 3) {
+    checkReadOnly(o.readOnly);
+    checkReadWrite(o.readWrite);
+  }
+  buildCounterTransactionOptions--;
+}
+
+core.int buildCounterUnaryFilter = 0;
+buildUnaryFilter() {
+  var o = new api.UnaryFilter();
+  buildCounterUnaryFilter++;
+  if (buildCounterUnaryFilter < 3) {
+    o.field = buildFieldReference();
+    o.op = "foo";
+  }
+  buildCounterUnaryFilter--;
+  return o;
+}
+
+checkUnaryFilter(api.UnaryFilter o) {
+  buildCounterUnaryFilter++;
+  if (buildCounterUnaryFilter < 3) {
+    checkFieldReference(o.field);
+    unittest.expect(o.op, unittest.equals('foo'));
+  }
+  buildCounterUnaryFilter--;
+}
+
+core.int buildCounterValue = 0;
+buildValue() {
+  var o = new api.Value();
+  buildCounterValue++;
+  if (buildCounterValue < 3) {
+    o.arrayValue = buildArrayValue();
+    o.booleanValue = true;
+    o.bytesValue = "foo";
+    o.doubleValue = 42.0;
+    o.geoPointValue = buildLatLng();
+    o.integerValue = "foo";
+    o.mapValue = buildMapValue();
+    o.nullValue = "foo";
+    o.referenceValue = "foo";
+    o.stringValue = "foo";
+    o.timestampValue = "foo";
+  }
+  buildCounterValue--;
+  return o;
+}
+
+checkValue(api.Value o) {
+  buildCounterValue++;
+  if (buildCounterValue < 3) {
+    checkArrayValue(o.arrayValue);
+    unittest.expect(o.booleanValue, unittest.isTrue);
+    unittest.expect(o.bytesValue, unittest.equals('foo'));
+    unittest.expect(o.doubleValue, unittest.equals(42.0));
+    checkLatLng(o.geoPointValue);
+    unittest.expect(o.integerValue, unittest.equals('foo'));
+    checkMapValue(o.mapValue);
+    unittest.expect(o.nullValue, unittest.equals('foo'));
+    unittest.expect(o.referenceValue, unittest.equals('foo'));
+    unittest.expect(o.stringValue, unittest.equals('foo'));
+    unittest.expect(o.timestampValue, unittest.equals('foo'));
+  }
+  buildCounterValue--;
+}
+
+core.int buildCounterWrite = 0;
+buildWrite() {
+  var o = new api.Write();
+  buildCounterWrite++;
+  if (buildCounterWrite < 3) {
+    o.currentDocument = buildPrecondition();
+    o.delete = "foo";
+    o.transform = buildDocumentTransform();
+    o.update = buildDocument();
+    o.updateMask = buildDocumentMask();
+  }
+  buildCounterWrite--;
+  return o;
+}
+
+checkWrite(api.Write o) {
+  buildCounterWrite++;
+  if (buildCounterWrite < 3) {
+    checkPrecondition(o.currentDocument);
+    unittest.expect(o.delete, unittest.equals('foo'));
+    checkDocumentTransform(o.transform);
+    checkDocument(o.update);
+    checkDocumentMask(o.updateMask);
+  }
+  buildCounterWrite--;
+}
+
+buildUnnamed3873() {
+  var o = new core.Map<core.String, core.String>();
+  o["x"] = "foo";
+  o["y"] = "foo";
+  return o;
+}
+
+checkUnnamed3873(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o["x"], unittest.equals('foo'));
+  unittest.expect(o["y"], unittest.equals('foo'));
+}
+
+buildUnnamed3874() {
+  var o = new core.List<api.Write>();
+  o.add(buildWrite());
+  o.add(buildWrite());
+  return o;
+}
+
+checkUnnamed3874(core.List<api.Write> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkWrite(o[0]);
+  checkWrite(o[1]);
+}
+
+core.int buildCounterWriteRequest = 0;
+buildWriteRequest() {
+  var o = new api.WriteRequest();
+  buildCounterWriteRequest++;
+  if (buildCounterWriteRequest < 3) {
+    o.labels = buildUnnamed3873();
+    o.streamId = "foo";
+    o.streamToken = "foo";
+    o.writes = buildUnnamed3874();
+  }
+  buildCounterWriteRequest--;
+  return o;
+}
+
+checkWriteRequest(api.WriteRequest o) {
+  buildCounterWriteRequest++;
+  if (buildCounterWriteRequest < 3) {
+    checkUnnamed3873(o.labels);
+    unittest.expect(o.streamId, unittest.equals('foo'));
+    unittest.expect(o.streamToken, unittest.equals('foo'));
+    checkUnnamed3874(o.writes);
+  }
+  buildCounterWriteRequest--;
+}
+
+buildUnnamed3875() {
+  var o = new core.List<api.WriteResult>();
+  o.add(buildWriteResult());
+  o.add(buildWriteResult());
+  return o;
+}
+
+checkUnnamed3875(core.List<api.WriteResult> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkWriteResult(o[0]);
+  checkWriteResult(o[1]);
+}
+
+core.int buildCounterWriteResponse = 0;
+buildWriteResponse() {
+  var o = new api.WriteResponse();
+  buildCounterWriteResponse++;
+  if (buildCounterWriteResponse < 3) {
+    o.commitTime = "foo";
+    o.streamId = "foo";
+    o.streamToken = "foo";
+    o.writeResults = buildUnnamed3875();
+  }
+  buildCounterWriteResponse--;
+  return o;
+}
+
+checkWriteResponse(api.WriteResponse o) {
+  buildCounterWriteResponse++;
+  if (buildCounterWriteResponse < 3) {
+    unittest.expect(o.commitTime, unittest.equals('foo'));
+    unittest.expect(o.streamId, unittest.equals('foo'));
+    unittest.expect(o.streamToken, unittest.equals('foo'));
+    checkUnnamed3875(o.writeResults);
+  }
+  buildCounterWriteResponse--;
+}
+
+buildUnnamed3876() {
+  var o = new core.List<api.Value>();
+  o.add(buildValue());
+  o.add(buildValue());
+  return o;
+}
+
+checkUnnamed3876(core.List<api.Value> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkValue(o[0]);
+  checkValue(o[1]);
+}
+
+core.int buildCounterWriteResult = 0;
+buildWriteResult() {
+  var o = new api.WriteResult();
+  buildCounterWriteResult++;
+  if (buildCounterWriteResult < 3) {
+    o.transformResults = buildUnnamed3876();
+    o.updateTime = "foo";
+  }
+  buildCounterWriteResult--;
+  return o;
+}
+
+checkWriteResult(api.WriteResult o) {
+  buildCounterWriteResult++;
+  if (buildCounterWriteResult < 3) {
+    checkUnnamed3876(o.transformResults);
+    unittest.expect(o.updateTime, unittest.equals('foo'));
+  }
+  buildCounterWriteResult--;
+}
+
+buildUnnamed3877() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3877(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3878() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3878(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3879() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3879(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3880() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3880(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3881() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3881(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-ArrayValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildArrayValue();
+      var od = new api.ArrayValue.fromJson(o.toJson());
+      checkArrayValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchGetDocumentsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchGetDocumentsRequest();
+      var od = new api.BatchGetDocumentsRequest.fromJson(o.toJson());
+      checkBatchGetDocumentsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchGetDocumentsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchGetDocumentsResponse();
+      var od = new api.BatchGetDocumentsResponse.fromJson(o.toJson());
+      checkBatchGetDocumentsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-BeginTransactionRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBeginTransactionRequest();
+      var od = new api.BeginTransactionRequest.fromJson(o.toJson());
+      checkBeginTransactionRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-BeginTransactionResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBeginTransactionResponse();
+      var od = new api.BeginTransactionResponse.fromJson(o.toJson());
+      checkBeginTransactionResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CollectionSelector", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCollectionSelector();
+      var od = new api.CollectionSelector.fromJson(o.toJson());
+      checkCollectionSelector(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommitRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommitRequest();
+      var od = new api.CommitRequest.fromJson(o.toJson());
+      checkCommitRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-CommitResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCommitResponse();
+      var od = new api.CommitResponse.fromJson(o.toJson());
+      checkCommitResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CompositeFilter", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCompositeFilter();
+      var od = new api.CompositeFilter.fromJson(o.toJson());
+      checkCompositeFilter(od);
+    });
+  });
+
+  unittest.group("obj-schema-Cursor", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCursor();
+      var od = new api.Cursor.fromJson(o.toJson());
+      checkCursor(od);
+    });
+  });
+
+  unittest.group("obj-schema-Document", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDocument();
+      var od = new api.Document.fromJson(o.toJson());
+      checkDocument(od);
+    });
+  });
+
+  unittest.group("obj-schema-DocumentChange", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDocumentChange();
+      var od = new api.DocumentChange.fromJson(o.toJson());
+      checkDocumentChange(od);
+    });
+  });
+
+  unittest.group("obj-schema-DocumentDelete", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDocumentDelete();
+      var od = new api.DocumentDelete.fromJson(o.toJson());
+      checkDocumentDelete(od);
+    });
+  });
+
+  unittest.group("obj-schema-DocumentMask", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDocumentMask();
+      var od = new api.DocumentMask.fromJson(o.toJson());
+      checkDocumentMask(od);
+    });
+  });
+
+  unittest.group("obj-schema-DocumentRemove", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDocumentRemove();
+      var od = new api.DocumentRemove.fromJson(o.toJson());
+      checkDocumentRemove(od);
+    });
+  });
+
+  unittest.group("obj-schema-DocumentTransform", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDocumentTransform();
+      var od = new api.DocumentTransform.fromJson(o.toJson());
+      checkDocumentTransform(od);
+    });
+  });
+
+  unittest.group("obj-schema-DocumentsTarget", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDocumentsTarget();
+      var od = new api.DocumentsTarget.fromJson(o.toJson());
+      checkDocumentsTarget(od);
+    });
+  });
+
+  unittest.group("obj-schema-Empty", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEmpty();
+      var od = new api.Empty.fromJson(o.toJson());
+      checkEmpty(od);
+    });
+  });
+
+  unittest.group("obj-schema-ExistenceFilter", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildExistenceFilter();
+      var od = new api.ExistenceFilter.fromJson(o.toJson());
+      checkExistenceFilter(od);
+    });
+  });
+
+  unittest.group("obj-schema-FieldFilter", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFieldFilter();
+      var od = new api.FieldFilter.fromJson(o.toJson());
+      checkFieldFilter(od);
+    });
+  });
+
+  unittest.group("obj-schema-FieldReference", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFieldReference();
+      var od = new api.FieldReference.fromJson(o.toJson());
+      checkFieldReference(od);
+    });
+  });
+
+  unittest.group("obj-schema-FieldTransform", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFieldTransform();
+      var od = new api.FieldTransform.fromJson(o.toJson());
+      checkFieldTransform(od);
+    });
+  });
+
+  unittest.group("obj-schema-Filter", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFilter();
+      var od = new api.Filter.fromJson(o.toJson());
+      checkFilter(od);
+    });
+  });
+
+  unittest.group("obj-schema-Index", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildIndex();
+      var od = new api.Index.fromJson(o.toJson());
+      checkIndex(od);
+    });
+  });
+
+  unittest.group("obj-schema-IndexField", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildIndexField();
+      var od = new api.IndexField.fromJson(o.toJson());
+      checkIndexField(od);
+    });
+  });
+
+  unittest.group("obj-schema-LatLng", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLatLng();
+      var od = new api.LatLng.fromJson(o.toJson());
+      checkLatLng(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListCollectionIdsRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListCollectionIdsRequest();
+      var od = new api.ListCollectionIdsRequest.fromJson(o.toJson());
+      checkListCollectionIdsRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListCollectionIdsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListCollectionIdsResponse();
+      var od = new api.ListCollectionIdsResponse.fromJson(o.toJson());
+      checkListCollectionIdsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListDocumentsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListDocumentsResponse();
+      var od = new api.ListDocumentsResponse.fromJson(o.toJson());
+      checkListDocumentsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListIndexesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListIndexesResponse();
+      var od = new api.ListIndexesResponse.fromJson(o.toJson());
+      checkListIndexesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListenRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListenRequest();
+      var od = new api.ListenRequest.fromJson(o.toJson());
+      checkListenRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListenResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListenResponse();
+      var od = new api.ListenResponse.fromJson(o.toJson());
+      checkListenResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-MapValue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMapValue();
+      var od = new api.MapValue.fromJson(o.toJson());
+      checkMapValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-Operation", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOperation();
+      var od = new api.Operation.fromJson(o.toJson());
+      checkOperation(od);
+    });
+  });
+
+  unittest.group("obj-schema-Order", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOrder();
+      var od = new api.Order.fromJson(o.toJson());
+      checkOrder(od);
+    });
+  });
+
+  unittest.group("obj-schema-Precondition", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPrecondition();
+      var od = new api.Precondition.fromJson(o.toJson());
+      checkPrecondition(od);
+    });
+  });
+
+  unittest.group("obj-schema-Projection", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProjection();
+      var od = new api.Projection.fromJson(o.toJson());
+      checkProjection(od);
+    });
+  });
+
+  unittest.group("obj-schema-QueryTarget", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildQueryTarget();
+      var od = new api.QueryTarget.fromJson(o.toJson());
+      checkQueryTarget(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReadOnly", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReadOnly();
+      var od = new api.ReadOnly.fromJson(o.toJson());
+      checkReadOnly(od);
+    });
+  });
+
+  unittest.group("obj-schema-ReadWrite", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildReadWrite();
+      var od = new api.ReadWrite.fromJson(o.toJson());
+      checkReadWrite(od);
+    });
+  });
+
+  unittest.group("obj-schema-RollbackRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRollbackRequest();
+      var od = new api.RollbackRequest.fromJson(o.toJson());
+      checkRollbackRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-RunQueryRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRunQueryRequest();
+      var od = new api.RunQueryRequest.fromJson(o.toJson());
+      checkRunQueryRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-RunQueryResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildRunQueryResponse();
+      var od = new api.RunQueryResponse.fromJson(o.toJson());
+      checkRunQueryResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-Status", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStatus();
+      var od = new api.Status.fromJson(o.toJson());
+      checkStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-StructuredQuery", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStructuredQuery();
+      var od = new api.StructuredQuery.fromJson(o.toJson());
+      checkStructuredQuery(od);
+    });
+  });
+
+  unittest.group("obj-schema-Target", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTarget();
+      var od = new api.Target.fromJson(o.toJson());
+      checkTarget(od);
+    });
+  });
+
+  unittest.group("obj-schema-TargetChange", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTargetChange();
+      var od = new api.TargetChange.fromJson(o.toJson());
+      checkTargetChange(od);
+    });
+  });
+
+  unittest.group("obj-schema-TransactionOptions", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTransactionOptions();
+      var od = new api.TransactionOptions.fromJson(o.toJson());
+      checkTransactionOptions(od);
+    });
+  });
+
+  unittest.group("obj-schema-UnaryFilter", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildUnaryFilter();
+      var od = new api.UnaryFilter.fromJson(o.toJson());
+      checkUnaryFilter(od);
+    });
+  });
+
+  unittest.group("obj-schema-Value", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildValue();
+      var od = new api.Value.fromJson(o.toJson());
+      checkValue(od);
+    });
+  });
+
+  unittest.group("obj-schema-Write", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildWrite();
+      var od = new api.Write.fromJson(o.toJson());
+      checkWrite(od);
+    });
+  });
+
+  unittest.group("obj-schema-WriteRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildWriteRequest();
+      var od = new api.WriteRequest.fromJson(o.toJson());
+      checkWriteRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-WriteResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildWriteResponse();
+      var od = new api.WriteResponse.fromJson(o.toJson());
+      checkWriteResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-WriteResult", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildWriteResult();
+      var od = new api.WriteResult.fromJson(o.toJson());
+      checkWriteResult(od);
+    });
+  });
+
+  unittest.group("resource-ProjectsDatabasesDocumentsResourceApi", () {
+    unittest.test("method--batchGet", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesDocumentsResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.documents;
+      var arg_request = buildBatchGetDocumentsRequest();
+      var arg_database = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BatchGetDocumentsRequest.fromJson(json);
+        checkBatchGetDocumentsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBatchGetDocumentsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.batchGet(arg_request, arg_database, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.BatchGetDocumentsResponse response) {
+        checkBatchGetDocumentsResponse(response);
+      })));
+    });
+
+    unittest.test("method--beginTransaction", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesDocumentsResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.documents;
+      var arg_request = buildBeginTransactionRequest();
+      var arg_database = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BeginTransactionRequest.fromJson(json);
+        checkBeginTransactionRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBeginTransactionResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .beginTransaction(arg_request, arg_database, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.BeginTransactionResponse response) {
+        checkBeginTransactionResponse(response);
+      })));
+    });
+
+    unittest.test("method--commit", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesDocumentsResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.documents;
+      var arg_request = buildCommitRequest();
+      var arg_database = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.CommitRequest.fromJson(json);
+        checkCommitRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildCommitResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .commit(arg_request, arg_database, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.CommitResponse response) {
+        checkCommitResponse(response);
+      })));
+    });
+
+    unittest.test("method--createDocument", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesDocumentsResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.documents;
+      var arg_request = buildDocument();
+      var arg_parent = "foo";
+      var arg_collectionId = "foo";
+      var arg_documentId = "foo";
+      var arg_mask_fieldPaths = buildUnnamed3877();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Document.fromJson(json);
+        checkDocument(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["documentId"].first, unittest.equals(arg_documentId));
+        unittest.expect(
+            queryMap["mask.fieldPaths"], unittest.equals(arg_mask_fieldPaths));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDocument());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .createDocument(arg_request, arg_parent, arg_collectionId,
+              documentId: arg_documentId,
+              mask_fieldPaths: arg_mask_fieldPaths,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Document response) {
+        checkDocument(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesDocumentsResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.documents;
+      var arg_name = "foo";
+      var arg_currentDocument_updateTime = "foo";
+      var arg_currentDocument_exists = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["currentDocument.updateTime"].first,
+            unittest.equals(arg_currentDocument_updateTime));
+        unittest.expect(queryMap["currentDocument.exists"].first,
+            unittest.equals("$arg_currentDocument_exists"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name,
+              currentDocument_updateTime: arg_currentDocument_updateTime,
+              currentDocument_exists: arg_currentDocument_exists,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesDocumentsResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.documents;
+      var arg_name = "foo";
+      var arg_transaction = "foo";
+      var arg_readTime = "foo";
+      var arg_mask_fieldPaths = buildUnnamed3878();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["transaction"].first, unittest.equals(arg_transaction));
+        unittest.expect(
+            queryMap["readTime"].first, unittest.equals(arg_readTime));
+        unittest.expect(
+            queryMap["mask.fieldPaths"], unittest.equals(arg_mask_fieldPaths));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDocument());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name,
+              transaction: arg_transaction,
+              readTime: arg_readTime,
+              mask_fieldPaths: arg_mask_fieldPaths,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Document response) {
+        checkDocument(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesDocumentsResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.documents;
+      var arg_parent = "foo";
+      var arg_collectionId = "foo";
+      var arg_mask_fieldPaths = buildUnnamed3879();
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_transaction = "foo";
+      var arg_readTime = "foo";
+      var arg_orderBy = "foo";
+      var arg_showMissing = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["mask.fieldPaths"], unittest.equals(arg_mask_fieldPaths));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["transaction"].first, unittest.equals(arg_transaction));
+        unittest.expect(
+            queryMap["readTime"].first, unittest.equals(arg_readTime));
+        unittest.expect(
+            queryMap["orderBy"].first, unittest.equals(arg_orderBy));
+        unittest.expect(
+            queryMap["showMissing"].first, unittest.equals("$arg_showMissing"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListDocumentsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent, arg_collectionId,
+              mask_fieldPaths: arg_mask_fieldPaths,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              transaction: arg_transaction,
+              readTime: arg_readTime,
+              orderBy: arg_orderBy,
+              showMissing: arg_showMissing,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListDocumentsResponse response) {
+        checkListDocumentsResponse(response);
+      })));
+    });
+
+    unittest.test("method--listCollectionIds", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesDocumentsResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.documents;
+      var arg_request = buildListCollectionIdsRequest();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ListCollectionIdsRequest.fromJson(json);
+        checkListCollectionIdsRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListCollectionIdsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res.listCollectionIds(arg_request, arg_parent, $fields: arg_$fields).then(
+          unittest.expectAsync1(((api.ListCollectionIdsResponse response) {
+        checkListCollectionIdsResponse(response);
+      })));
+    });
+
+    unittest.test("method--listen", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesDocumentsResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.documents;
+      var arg_request = buildListenRequest();
+      var arg_database = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.ListenRequest.fromJson(json);
+        checkListenRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListenResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .listen(arg_request, arg_database, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListenResponse response) {
+        checkListenResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesDocumentsResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.documents;
+      var arg_request = buildDocument();
+      var arg_name = "foo";
+      var arg_mask_fieldPaths = buildUnnamed3880();
+      var arg_updateMask_fieldPaths = buildUnnamed3881();
+      var arg_currentDocument_updateTime = "foo";
+      var arg_currentDocument_exists = true;
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Document.fromJson(json);
+        checkDocument(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["mask.fieldPaths"], unittest.equals(arg_mask_fieldPaths));
+        unittest.expect(queryMap["updateMask.fieldPaths"],
+            unittest.equals(arg_updateMask_fieldPaths));
+        unittest.expect(queryMap["currentDocument.updateTime"].first,
+            unittest.equals(arg_currentDocument_updateTime));
+        unittest.expect(queryMap["currentDocument.exists"].first,
+            unittest.equals("$arg_currentDocument_exists"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildDocument());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_name,
+              mask_fieldPaths: arg_mask_fieldPaths,
+              updateMask_fieldPaths: arg_updateMask_fieldPaths,
+              currentDocument_updateTime: arg_currentDocument_updateTime,
+              currentDocument_exists: arg_currentDocument_exists,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Document response) {
+        checkDocument(response);
+      })));
+    });
+
+    unittest.test("method--rollback", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesDocumentsResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.documents;
+      var arg_request = buildRollbackRequest();
+      var arg_database = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.RollbackRequest.fromJson(json);
+        checkRollbackRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .rollback(arg_request, arg_database, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--runQuery", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesDocumentsResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.documents;
+      var arg_request = buildRunQueryRequest();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.RunQueryRequest.fromJson(json);
+        checkRunQueryRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildRunQueryResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .runQuery(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.RunQueryResponse response) {
+        checkRunQueryResponse(response);
+      })));
+    });
+
+    unittest.test("method--write", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesDocumentsResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.documents;
+      var arg_request = buildWriteRequest();
+      var arg_database = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.WriteRequest.fromJson(json);
+        checkWriteRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildWriteResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .write(arg_request, arg_database, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.WriteResponse response) {
+        checkWriteResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsDatabasesIndexesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesIndexesResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.indexes;
+      var arg_request = buildIndex();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Index.fromJson(json);
+        checkIndex(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOperation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_parent, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
+        checkOperation(response);
+      })));
+    });
+
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesIndexesResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.indexes;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesIndexesResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.indexes;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildIndex());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Index response) {
+        checkIndex(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsDatabasesIndexesResourceApi res =
+          new api.FirestoreApi(mock).projects.databases.indexes;
+      var arg_parent = "foo";
+      var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_filter = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 8),
+            unittest.equals("v1beta1/"));
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["filter"].first, unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListIndexesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              filter: arg_filter,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListIndexesResponse response) {
+        checkListIndexesResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis_beta/test/language/v1beta1_test.dart b/generated/googleapis_beta/test/language/v1beta1_test.dart
index 8a8420b..9ead37b 100644
--- a/generated/googleapis_beta/test/language/v1beta1_test.dart
+++ b/generated/googleapis_beta/test/language/v1beta1_test.dart
@@ -71,14 +71,14 @@
   buildCounterAnalyzeEntitiesRequest--;
 }
 
-buildUnnamed3360() {
+buildUnnamed3375() {
   var o = new core.List<api.Entity>();
   o.add(buildEntity());
   o.add(buildEntity());
   return o;
 }
 
-checkUnnamed3360(core.List<api.Entity> o) {
+checkUnnamed3375(core.List<api.Entity> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntity(o[0]);
   checkEntity(o[1]);
@@ -89,7 +89,7 @@
   var o = new api.AnalyzeEntitiesResponse();
   buildCounterAnalyzeEntitiesResponse++;
   if (buildCounterAnalyzeEntitiesResponse < 3) {
-    o.entities = buildUnnamed3360();
+    o.entities = buildUnnamed3375();
     o.language = "foo";
   }
   buildCounterAnalyzeEntitiesResponse--;
@@ -99,7 +99,7 @@
 checkAnalyzeEntitiesResponse(api.AnalyzeEntitiesResponse o) {
   buildCounterAnalyzeEntitiesResponse++;
   if (buildCounterAnalyzeEntitiesResponse < 3) {
-    checkUnnamed3360(o.entities);
+    checkUnnamed3375(o.entities);
     unittest.expect(o.language, unittest.equals('foo'));
   }
   buildCounterAnalyzeEntitiesResponse--;
@@ -126,14 +126,14 @@
   buildCounterAnalyzeSentimentRequest--;
 }
 
-buildUnnamed3361() {
+buildUnnamed3376() {
   var o = new core.List<api.Sentence>();
   o.add(buildSentence());
   o.add(buildSentence());
   return o;
 }
 
-checkUnnamed3361(core.List<api.Sentence> o) {
+checkUnnamed3376(core.List<api.Sentence> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSentence(o[0]);
   checkSentence(o[1]);
@@ -146,7 +146,7 @@
   if (buildCounterAnalyzeSentimentResponse < 3) {
     o.documentSentiment = buildSentiment();
     o.language = "foo";
-    o.sentences = buildUnnamed3361();
+    o.sentences = buildUnnamed3376();
   }
   buildCounterAnalyzeSentimentResponse--;
   return o;
@@ -157,7 +157,7 @@
   if (buildCounterAnalyzeSentimentResponse < 3) {
     checkSentiment(o.documentSentiment);
     unittest.expect(o.language, unittest.equals('foo'));
-    checkUnnamed3361(o.sentences);
+    checkUnnamed3376(o.sentences);
   }
   buildCounterAnalyzeSentimentResponse--;
 }
@@ -183,27 +183,27 @@
   buildCounterAnalyzeSyntaxRequest--;
 }
 
-buildUnnamed3362() {
+buildUnnamed3377() {
   var o = new core.List<api.Sentence>();
   o.add(buildSentence());
   o.add(buildSentence());
   return o;
 }
 
-checkUnnamed3362(core.List<api.Sentence> o) {
+checkUnnamed3377(core.List<api.Sentence> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSentence(o[0]);
   checkSentence(o[1]);
 }
 
-buildUnnamed3363() {
+buildUnnamed3378() {
   var o = new core.List<api.Token>();
   o.add(buildToken());
   o.add(buildToken());
   return o;
 }
 
-checkUnnamed3363(core.List<api.Token> o) {
+checkUnnamed3378(core.List<api.Token> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkToken(o[0]);
   checkToken(o[1]);
@@ -215,8 +215,8 @@
   buildCounterAnalyzeSyntaxResponse++;
   if (buildCounterAnalyzeSyntaxResponse < 3) {
     o.language = "foo";
-    o.sentences = buildUnnamed3362();
-    o.tokens = buildUnnamed3363();
+    o.sentences = buildUnnamed3377();
+    o.tokens = buildUnnamed3378();
   }
   buildCounterAnalyzeSyntaxResponse--;
   return o;
@@ -226,8 +226,8 @@
   buildCounterAnalyzeSyntaxResponse++;
   if (buildCounterAnalyzeSyntaxResponse < 3) {
     unittest.expect(o.language, unittest.equals('foo'));
-    checkUnnamed3362(o.sentences);
-    checkUnnamed3363(o.tokens);
+    checkUnnamed3377(o.sentences);
+    checkUnnamed3378(o.tokens);
   }
   buildCounterAnalyzeSyntaxResponse--;
 }
@@ -255,40 +255,40 @@
   buildCounterAnnotateTextRequest--;
 }
 
-buildUnnamed3364() {
+buildUnnamed3379() {
   var o = new core.List<api.Entity>();
   o.add(buildEntity());
   o.add(buildEntity());
   return o;
 }
 
-checkUnnamed3364(core.List<api.Entity> o) {
+checkUnnamed3379(core.List<api.Entity> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntity(o[0]);
   checkEntity(o[1]);
 }
 
-buildUnnamed3365() {
+buildUnnamed3380() {
   var o = new core.List<api.Sentence>();
   o.add(buildSentence());
   o.add(buildSentence());
   return o;
 }
 
-checkUnnamed3365(core.List<api.Sentence> o) {
+checkUnnamed3380(core.List<api.Sentence> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSentence(o[0]);
   checkSentence(o[1]);
 }
 
-buildUnnamed3366() {
+buildUnnamed3381() {
   var o = new core.List<api.Token>();
   o.add(buildToken());
   o.add(buildToken());
   return o;
 }
 
-checkUnnamed3366(core.List<api.Token> o) {
+checkUnnamed3381(core.List<api.Token> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkToken(o[0]);
   checkToken(o[1]);
@@ -300,10 +300,10 @@
   buildCounterAnnotateTextResponse++;
   if (buildCounterAnnotateTextResponse < 3) {
     o.documentSentiment = buildSentiment();
-    o.entities = buildUnnamed3364();
+    o.entities = buildUnnamed3379();
     o.language = "foo";
-    o.sentences = buildUnnamed3365();
-    o.tokens = buildUnnamed3366();
+    o.sentences = buildUnnamed3380();
+    o.tokens = buildUnnamed3381();
   }
   buildCounterAnnotateTextResponse--;
   return o;
@@ -313,10 +313,10 @@
   buildCounterAnnotateTextResponse++;
   if (buildCounterAnnotateTextResponse < 3) {
     checkSentiment(o.documentSentiment);
-    checkUnnamed3364(o.entities);
+    checkUnnamed3379(o.entities);
     unittest.expect(o.language, unittest.equals('foo'));
-    checkUnnamed3365(o.sentences);
-    checkUnnamed3366(o.tokens);
+    checkUnnamed3380(o.sentences);
+    checkUnnamed3381(o.tokens);
   }
   buildCounterAnnotateTextResponse--;
 }
@@ -367,27 +367,27 @@
   buildCounterDocument--;
 }
 
-buildUnnamed3367() {
+buildUnnamed3382() {
   var o = new core.List<api.EntityMention>();
   o.add(buildEntityMention());
   o.add(buildEntityMention());
   return o;
 }
 
-checkUnnamed3367(core.List<api.EntityMention> o) {
+checkUnnamed3382(core.List<api.EntityMention> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntityMention(o[0]);
   checkEntityMention(o[1]);
 }
 
-buildUnnamed3368() {
+buildUnnamed3383() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3368(core.Map<core.String, core.String> o) {
+checkUnnamed3383(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -398,8 +398,8 @@
   var o = new api.Entity();
   buildCounterEntity++;
   if (buildCounterEntity < 3) {
-    o.mentions = buildUnnamed3367();
-    o.metadata = buildUnnamed3368();
+    o.mentions = buildUnnamed3382();
+    o.metadata = buildUnnamed3383();
     o.name = "foo";
     o.salience = 42.0;
     o.type = "foo";
@@ -411,8 +411,8 @@
 checkEntity(api.Entity o) {
   buildCounterEntity++;
   if (buildCounterEntity < 3) {
-    checkUnnamed3367(o.mentions);
-    checkUnnamed3368(o.metadata);
+    checkUnnamed3382(o.mentions);
+    checkUnnamed3383(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.salience, unittest.equals(42.0));
     unittest.expect(o.type, unittest.equals('foo'));
@@ -549,7 +549,7 @@
   buildCounterSentiment--;
 }
 
-buildUnnamed3369() {
+buildUnnamed3384() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -564,7 +564,7 @@
   return o;
 }
 
-checkUnnamed3369(core.Map<core.String, core.Object> o) {
+checkUnnamed3384(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -578,17 +578,17 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3370() {
+buildUnnamed3385() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed3369());
-  o.add(buildUnnamed3369());
+  o.add(buildUnnamed3384());
+  o.add(buildUnnamed3384());
   return o;
 }
 
-checkUnnamed3370(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed3385(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed3369(o[0]);
-  checkUnnamed3369(o[1]);
+  checkUnnamed3384(o[0]);
+  checkUnnamed3384(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -597,7 +597,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed3370();
+    o.details = buildUnnamed3385();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -608,7 +608,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed3370(o.details);
+    checkUnnamed3385(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -818,6 +818,7 @@
       var mock = new HttpServerMock();
       api.DocumentsResourceApi res = new api.LanguageApi(mock).documents;
       var arg_request = buildAnalyzeEntitiesRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnalyzeEntitiesRequest.fromJson(json);
         checkAnalyzeEntitiesRequest(obj);
@@ -851,6 +852,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -859,7 +861,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .analyzeEntities(arg_request)
+          .analyzeEntities(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AnalyzeEntitiesResponse response) {
         checkAnalyzeEntitiesResponse(response);
       })));
@@ -869,6 +871,7 @@
       var mock = new HttpServerMock();
       api.DocumentsResourceApi res = new api.LanguageApi(mock).documents;
       var arg_request = buildAnalyzeSentimentRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnalyzeSentimentRequest.fromJson(json);
         checkAnalyzeSentimentRequest(obj);
@@ -902,6 +905,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -910,7 +914,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .analyzeSentiment(arg_request)
+          .analyzeSentiment(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AnalyzeSentimentResponse response) {
         checkAnalyzeSentimentResponse(response);
       })));
@@ -920,6 +924,7 @@
       var mock = new HttpServerMock();
       api.DocumentsResourceApi res = new api.LanguageApi(mock).documents;
       var arg_request = buildAnalyzeSyntaxRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnalyzeSyntaxRequest.fromJson(json);
         checkAnalyzeSyntaxRequest(obj);
@@ -953,6 +958,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -961,7 +967,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .analyzeSyntax(arg_request)
+          .analyzeSyntax(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AnalyzeSyntaxResponse response) {
         checkAnalyzeSyntaxResponse(response);
       })));
@@ -971,6 +977,7 @@
       var mock = new HttpServerMock();
       api.DocumentsResourceApi res = new api.LanguageApi(mock).documents;
       var arg_request = buildAnnotateTextRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnnotateTextRequest.fromJson(json);
         checkAnnotateTextRequest(obj);
@@ -1004,6 +1011,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1012,7 +1020,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .annotateText(arg_request)
+          .annotateText(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AnnotateTextResponse response) {
         checkAnnotateTextResponse(response);
       })));
diff --git a/generated/googleapis_beta/test/language/v1beta2_test.dart b/generated/googleapis_beta/test/language/v1beta2_test.dart
index 6ef1dfb..ae4c799 100644
--- a/generated/googleapis_beta/test/language/v1beta2_test.dart
+++ b/generated/googleapis_beta/test/language/v1beta2_test.dart
@@ -71,14 +71,14 @@
   buildCounterAnalyzeEntitiesRequest--;
 }
 
-buildUnnamed3550() {
+buildUnnamed3568() {
   var o = new core.List<api.Entity>();
   o.add(buildEntity());
   o.add(buildEntity());
   return o;
 }
 
-checkUnnamed3550(core.List<api.Entity> o) {
+checkUnnamed3568(core.List<api.Entity> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntity(o[0]);
   checkEntity(o[1]);
@@ -89,7 +89,7 @@
   var o = new api.AnalyzeEntitiesResponse();
   buildCounterAnalyzeEntitiesResponse++;
   if (buildCounterAnalyzeEntitiesResponse < 3) {
-    o.entities = buildUnnamed3550();
+    o.entities = buildUnnamed3568();
     o.language = "foo";
   }
   buildCounterAnalyzeEntitiesResponse--;
@@ -99,7 +99,7 @@
 checkAnalyzeEntitiesResponse(api.AnalyzeEntitiesResponse o) {
   buildCounterAnalyzeEntitiesResponse++;
   if (buildCounterAnalyzeEntitiesResponse < 3) {
-    checkUnnamed3550(o.entities);
+    checkUnnamed3568(o.entities);
     unittest.expect(o.language, unittest.equals('foo'));
   }
   buildCounterAnalyzeEntitiesResponse--;
@@ -126,14 +126,14 @@
   buildCounterAnalyzeEntitySentimentRequest--;
 }
 
-buildUnnamed3551() {
+buildUnnamed3569() {
   var o = new core.List<api.Entity>();
   o.add(buildEntity());
   o.add(buildEntity());
   return o;
 }
 
-checkUnnamed3551(core.List<api.Entity> o) {
+checkUnnamed3569(core.List<api.Entity> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntity(o[0]);
   checkEntity(o[1]);
@@ -144,7 +144,7 @@
   var o = new api.AnalyzeEntitySentimentResponse();
   buildCounterAnalyzeEntitySentimentResponse++;
   if (buildCounterAnalyzeEntitySentimentResponse < 3) {
-    o.entities = buildUnnamed3551();
+    o.entities = buildUnnamed3569();
     o.language = "foo";
   }
   buildCounterAnalyzeEntitySentimentResponse--;
@@ -154,7 +154,7 @@
 checkAnalyzeEntitySentimentResponse(api.AnalyzeEntitySentimentResponse o) {
   buildCounterAnalyzeEntitySentimentResponse++;
   if (buildCounterAnalyzeEntitySentimentResponse < 3) {
-    checkUnnamed3551(o.entities);
+    checkUnnamed3569(o.entities);
     unittest.expect(o.language, unittest.equals('foo'));
   }
   buildCounterAnalyzeEntitySentimentResponse--;
@@ -181,14 +181,14 @@
   buildCounterAnalyzeSentimentRequest--;
 }
 
-buildUnnamed3552() {
+buildUnnamed3570() {
   var o = new core.List<api.Sentence>();
   o.add(buildSentence());
   o.add(buildSentence());
   return o;
 }
 
-checkUnnamed3552(core.List<api.Sentence> o) {
+checkUnnamed3570(core.List<api.Sentence> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSentence(o[0]);
   checkSentence(o[1]);
@@ -201,7 +201,7 @@
   if (buildCounterAnalyzeSentimentResponse < 3) {
     o.documentSentiment = buildSentiment();
     o.language = "foo";
-    o.sentences = buildUnnamed3552();
+    o.sentences = buildUnnamed3570();
   }
   buildCounterAnalyzeSentimentResponse--;
   return o;
@@ -212,7 +212,7 @@
   if (buildCounterAnalyzeSentimentResponse < 3) {
     checkSentiment(o.documentSentiment);
     unittest.expect(o.language, unittest.equals('foo'));
-    checkUnnamed3552(o.sentences);
+    checkUnnamed3570(o.sentences);
   }
   buildCounterAnalyzeSentimentResponse--;
 }
@@ -238,27 +238,27 @@
   buildCounterAnalyzeSyntaxRequest--;
 }
 
-buildUnnamed3553() {
+buildUnnamed3571() {
   var o = new core.List<api.Sentence>();
   o.add(buildSentence());
   o.add(buildSentence());
   return o;
 }
 
-checkUnnamed3553(core.List<api.Sentence> o) {
+checkUnnamed3571(core.List<api.Sentence> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSentence(o[0]);
   checkSentence(o[1]);
 }
 
-buildUnnamed3554() {
+buildUnnamed3572() {
   var o = new core.List<api.Token>();
   o.add(buildToken());
   o.add(buildToken());
   return o;
 }
 
-checkUnnamed3554(core.List<api.Token> o) {
+checkUnnamed3572(core.List<api.Token> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkToken(o[0]);
   checkToken(o[1]);
@@ -270,8 +270,8 @@
   buildCounterAnalyzeSyntaxResponse++;
   if (buildCounterAnalyzeSyntaxResponse < 3) {
     o.language = "foo";
-    o.sentences = buildUnnamed3553();
-    o.tokens = buildUnnamed3554();
+    o.sentences = buildUnnamed3571();
+    o.tokens = buildUnnamed3572();
   }
   buildCounterAnalyzeSyntaxResponse--;
   return o;
@@ -281,8 +281,8 @@
   buildCounterAnalyzeSyntaxResponse++;
   if (buildCounterAnalyzeSyntaxResponse < 3) {
     unittest.expect(o.language, unittest.equals('foo'));
-    checkUnnamed3553(o.sentences);
-    checkUnnamed3554(o.tokens);
+    checkUnnamed3571(o.sentences);
+    checkUnnamed3572(o.tokens);
   }
   buildCounterAnalyzeSyntaxResponse--;
 }
@@ -310,53 +310,53 @@
   buildCounterAnnotateTextRequest--;
 }
 
-buildUnnamed3555() {
+buildUnnamed3573() {
   var o = new core.List<api.ClassificationCategory>();
   o.add(buildClassificationCategory());
   o.add(buildClassificationCategory());
   return o;
 }
 
-checkUnnamed3555(core.List<api.ClassificationCategory> o) {
+checkUnnamed3573(core.List<api.ClassificationCategory> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkClassificationCategory(o[0]);
   checkClassificationCategory(o[1]);
 }
 
-buildUnnamed3556() {
+buildUnnamed3574() {
   var o = new core.List<api.Entity>();
   o.add(buildEntity());
   o.add(buildEntity());
   return o;
 }
 
-checkUnnamed3556(core.List<api.Entity> o) {
+checkUnnamed3574(core.List<api.Entity> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntity(o[0]);
   checkEntity(o[1]);
 }
 
-buildUnnamed3557() {
+buildUnnamed3575() {
   var o = new core.List<api.Sentence>();
   o.add(buildSentence());
   o.add(buildSentence());
   return o;
 }
 
-checkUnnamed3557(core.List<api.Sentence> o) {
+checkUnnamed3575(core.List<api.Sentence> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSentence(o[0]);
   checkSentence(o[1]);
 }
 
-buildUnnamed3558() {
+buildUnnamed3576() {
   var o = new core.List<api.Token>();
   o.add(buildToken());
   o.add(buildToken());
   return o;
 }
 
-checkUnnamed3558(core.List<api.Token> o) {
+checkUnnamed3576(core.List<api.Token> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkToken(o[0]);
   checkToken(o[1]);
@@ -367,12 +367,12 @@
   var o = new api.AnnotateTextResponse();
   buildCounterAnnotateTextResponse++;
   if (buildCounterAnnotateTextResponse < 3) {
-    o.categories = buildUnnamed3555();
+    o.categories = buildUnnamed3573();
     o.documentSentiment = buildSentiment();
-    o.entities = buildUnnamed3556();
+    o.entities = buildUnnamed3574();
     o.language = "foo";
-    o.sentences = buildUnnamed3557();
-    o.tokens = buildUnnamed3558();
+    o.sentences = buildUnnamed3575();
+    o.tokens = buildUnnamed3576();
   }
   buildCounterAnnotateTextResponse--;
   return o;
@@ -381,12 +381,12 @@
 checkAnnotateTextResponse(api.AnnotateTextResponse o) {
   buildCounterAnnotateTextResponse++;
   if (buildCounterAnnotateTextResponse < 3) {
-    checkUnnamed3555(o.categories);
+    checkUnnamed3573(o.categories);
     checkSentiment(o.documentSentiment);
-    checkUnnamed3556(o.entities);
+    checkUnnamed3574(o.entities);
     unittest.expect(o.language, unittest.equals('foo'));
-    checkUnnamed3557(o.sentences);
-    checkUnnamed3558(o.tokens);
+    checkUnnamed3575(o.sentences);
+    checkUnnamed3576(o.tokens);
   }
   buildCounterAnnotateTextResponse--;
 }
@@ -431,14 +431,14 @@
   buildCounterClassifyTextRequest--;
 }
 
-buildUnnamed3559() {
+buildUnnamed3577() {
   var o = new core.List<api.ClassificationCategory>();
   o.add(buildClassificationCategory());
   o.add(buildClassificationCategory());
   return o;
 }
 
-checkUnnamed3559(core.List<api.ClassificationCategory> o) {
+checkUnnamed3577(core.List<api.ClassificationCategory> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkClassificationCategory(o[0]);
   checkClassificationCategory(o[1]);
@@ -449,7 +449,7 @@
   var o = new api.ClassifyTextResponse();
   buildCounterClassifyTextResponse++;
   if (buildCounterClassifyTextResponse < 3) {
-    o.categories = buildUnnamed3559();
+    o.categories = buildUnnamed3577();
   }
   buildCounterClassifyTextResponse--;
   return o;
@@ -458,7 +458,7 @@
 checkClassifyTextResponse(api.ClassifyTextResponse o) {
   buildCounterClassifyTextResponse++;
   if (buildCounterClassifyTextResponse < 3) {
-    checkUnnamed3559(o.categories);
+    checkUnnamed3577(o.categories);
   }
   buildCounterClassifyTextResponse--;
 }
@@ -509,27 +509,27 @@
   buildCounterDocument--;
 }
 
-buildUnnamed3560() {
+buildUnnamed3578() {
   var o = new core.List<api.EntityMention>();
   o.add(buildEntityMention());
   o.add(buildEntityMention());
   return o;
 }
 
-checkUnnamed3560(core.List<api.EntityMention> o) {
+checkUnnamed3578(core.List<api.EntityMention> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntityMention(o[0]);
   checkEntityMention(o[1]);
 }
 
-buildUnnamed3561() {
+buildUnnamed3579() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3561(core.Map<core.String, core.String> o) {
+checkUnnamed3579(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -540,8 +540,8 @@
   var o = new api.Entity();
   buildCounterEntity++;
   if (buildCounterEntity < 3) {
-    o.mentions = buildUnnamed3560();
-    o.metadata = buildUnnamed3561();
+    o.mentions = buildUnnamed3578();
+    o.metadata = buildUnnamed3579();
     o.name = "foo";
     o.salience = 42.0;
     o.sentiment = buildSentiment();
@@ -554,8 +554,8 @@
 checkEntity(api.Entity o) {
   buildCounterEntity++;
   if (buildCounterEntity < 3) {
-    checkUnnamed3560(o.mentions);
-    checkUnnamed3561(o.metadata);
+    checkUnnamed3578(o.mentions);
+    checkUnnamed3579(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.salience, unittest.equals(42.0));
     checkSentiment(o.sentiment);
@@ -697,7 +697,7 @@
   buildCounterSentiment--;
 }
 
-buildUnnamed3562() {
+buildUnnamed3580() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -712,7 +712,7 @@
   return o;
 }
 
-checkUnnamed3562(core.Map<core.String, core.Object> o) {
+checkUnnamed3580(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -726,17 +726,17 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3563() {
+buildUnnamed3581() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed3562());
-  o.add(buildUnnamed3562());
+  o.add(buildUnnamed3580());
+  o.add(buildUnnamed3580());
   return o;
 }
 
-checkUnnamed3563(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed3581(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed3562(o[0]);
-  checkUnnamed3562(o[1]);
+  checkUnnamed3580(o[0]);
+  checkUnnamed3580(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -745,7 +745,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed3563();
+    o.details = buildUnnamed3581();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -756,7 +756,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed3563(o.details);
+    checkUnnamed3581(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -1006,6 +1006,7 @@
       var mock = new HttpServerMock();
       api.DocumentsResourceApi res = new api.LanguageApi(mock).documents;
       var arg_request = buildAnalyzeEntitiesRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnalyzeEntitiesRequest.fromJson(json);
         checkAnalyzeEntitiesRequest(obj);
@@ -1039,6 +1040,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1047,7 +1049,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .analyzeEntities(arg_request)
+          .analyzeEntities(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AnalyzeEntitiesResponse response) {
         checkAnalyzeEntitiesResponse(response);
       })));
@@ -1057,6 +1059,7 @@
       var mock = new HttpServerMock();
       api.DocumentsResourceApi res = new api.LanguageApi(mock).documents;
       var arg_request = buildAnalyzeEntitySentimentRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnalyzeEntitySentimentRequest.fromJson(json);
         checkAnalyzeEntitySentimentRequest(obj);
@@ -1090,6 +1093,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1097,7 +1101,7 @@
         var resp = convert.JSON.encode(buildAnalyzeEntitySentimentResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.analyzeEntitySentiment(arg_request).then(
+      res.analyzeEntitySentiment(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.AnalyzeEntitySentimentResponse response) {
         checkAnalyzeEntitySentimentResponse(response);
       })));
@@ -1107,6 +1111,7 @@
       var mock = new HttpServerMock();
       api.DocumentsResourceApi res = new api.LanguageApi(mock).documents;
       var arg_request = buildAnalyzeSentimentRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnalyzeSentimentRequest.fromJson(json);
         checkAnalyzeSentimentRequest(obj);
@@ -1140,6 +1145,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1148,7 +1154,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .analyzeSentiment(arg_request)
+          .analyzeSentiment(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AnalyzeSentimentResponse response) {
         checkAnalyzeSentimentResponse(response);
       })));
@@ -1158,6 +1164,7 @@
       var mock = new HttpServerMock();
       api.DocumentsResourceApi res = new api.LanguageApi(mock).documents;
       var arg_request = buildAnalyzeSyntaxRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnalyzeSyntaxRequest.fromJson(json);
         checkAnalyzeSyntaxRequest(obj);
@@ -1191,6 +1198,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1199,7 +1207,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .analyzeSyntax(arg_request)
+          .analyzeSyntax(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AnalyzeSyntaxResponse response) {
         checkAnalyzeSyntaxResponse(response);
       })));
@@ -1209,6 +1217,7 @@
       var mock = new HttpServerMock();
       api.DocumentsResourceApi res = new api.LanguageApi(mock).documents;
       var arg_request = buildAnnotateTextRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AnnotateTextRequest.fromJson(json);
         checkAnnotateTextRequest(obj);
@@ -1242,6 +1251,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1250,7 +1260,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .annotateText(arg_request)
+          .annotateText(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.AnnotateTextResponse response) {
         checkAnnotateTextResponse(response);
       })));
@@ -1260,6 +1270,7 @@
       var mock = new HttpServerMock();
       api.DocumentsResourceApi res = new api.LanguageApi(mock).documents;
       var arg_request = buildClassifyTextRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ClassifyTextRequest.fromJson(json);
         checkClassifyTextRequest(obj);
@@ -1293,6 +1304,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1301,7 +1313,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .classifyText(arg_request)
+          .classifyText(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ClassifyTextResponse response) {
         checkClassifyTextResponse(response);
       })));
diff --git a/generated/googleapis_beta/test/logging/v2beta1_test.dart b/generated/googleapis_beta/test/logging/v2beta1_test.dart
index 661db44..ed928c0 100644
--- a/generated/googleapis_beta/test/logging/v2beta1_test.dart
+++ b/generated/googleapis_beta/test/logging/v2beta1_test.dart
@@ -88,14 +88,14 @@
   buildCounterEmpty--;
 }
 
-buildUnnamed3664() {
+buildUnnamed3682() {
   var o = new core.List<core.double>();
   o.add(42.0);
   o.add(42.0);
   return o;
 }
 
-checkUnnamed3664(core.List<core.double> o) {
+checkUnnamed3682(core.List<core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42.0));
   unittest.expect(o[1], unittest.equals(42.0));
@@ -106,7 +106,7 @@
   var o = new api.Explicit();
   buildCounterExplicit++;
   if (buildCounterExplicit < 3) {
-    o.bounds = buildUnnamed3664();
+    o.bounds = buildUnnamed3682();
   }
   buildCounterExplicit--;
   return o;
@@ -115,7 +115,7 @@
 checkExplicit(api.Explicit o) {
   buildCounterExplicit++;
   if (buildCounterExplicit < 3) {
-    checkUnnamed3664(o.bounds);
+    checkUnnamed3682(o.bounds);
   }
   buildCounterExplicit--;
 }
@@ -236,27 +236,27 @@
   buildCounterLinear--;
 }
 
-buildUnnamed3665() {
+buildUnnamed3683() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3665(core.List<core.String> o) {
+checkUnnamed3683(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3666() {
+buildUnnamed3684() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3666(core.List<core.String> o) {
+checkUnnamed3684(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -271,8 +271,8 @@
     o.orderBy = "foo";
     o.pageSize = 42;
     o.pageToken = "foo";
-    o.projectIds = buildUnnamed3665();
-    o.resourceNames = buildUnnamed3666();
+    o.projectIds = buildUnnamed3683();
+    o.resourceNames = buildUnnamed3684();
   }
   buildCounterListLogEntriesRequest--;
   return o;
@@ -285,20 +285,20 @@
     unittest.expect(o.orderBy, unittest.equals('foo'));
     unittest.expect(o.pageSize, unittest.equals(42));
     unittest.expect(o.pageToken, unittest.equals('foo'));
-    checkUnnamed3665(o.projectIds);
-    checkUnnamed3666(o.resourceNames);
+    checkUnnamed3683(o.projectIds);
+    checkUnnamed3684(o.resourceNames);
   }
   buildCounterListLogEntriesRequest--;
 }
 
-buildUnnamed3667() {
+buildUnnamed3685() {
   var o = new core.List<api.LogEntry>();
   o.add(buildLogEntry());
   o.add(buildLogEntry());
   return o;
 }
 
-checkUnnamed3667(core.List<api.LogEntry> o) {
+checkUnnamed3685(core.List<api.LogEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLogEntry(o[0]);
   checkLogEntry(o[1]);
@@ -309,7 +309,7 @@
   var o = new api.ListLogEntriesResponse();
   buildCounterListLogEntriesResponse++;
   if (buildCounterListLogEntriesResponse < 3) {
-    o.entries = buildUnnamed3667();
+    o.entries = buildUnnamed3685();
     o.nextPageToken = "foo";
   }
   buildCounterListLogEntriesResponse--;
@@ -319,20 +319,20 @@
 checkListLogEntriesResponse(api.ListLogEntriesResponse o) {
   buildCounterListLogEntriesResponse++;
   if (buildCounterListLogEntriesResponse < 3) {
-    checkUnnamed3667(o.entries);
+    checkUnnamed3685(o.entries);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListLogEntriesResponse--;
 }
 
-buildUnnamed3668() {
+buildUnnamed3686() {
   var o = new core.List<api.LogMetric>();
   o.add(buildLogMetric());
   o.add(buildLogMetric());
   return o;
 }
 
-checkUnnamed3668(core.List<api.LogMetric> o) {
+checkUnnamed3686(core.List<api.LogMetric> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLogMetric(o[0]);
   checkLogMetric(o[1]);
@@ -343,7 +343,7 @@
   var o = new api.ListLogMetricsResponse();
   buildCounterListLogMetricsResponse++;
   if (buildCounterListLogMetricsResponse < 3) {
-    o.metrics = buildUnnamed3668();
+    o.metrics = buildUnnamed3686();
     o.nextPageToken = "foo";
   }
   buildCounterListLogMetricsResponse--;
@@ -353,20 +353,20 @@
 checkListLogMetricsResponse(api.ListLogMetricsResponse o) {
   buildCounterListLogMetricsResponse++;
   if (buildCounterListLogMetricsResponse < 3) {
-    checkUnnamed3668(o.metrics);
+    checkUnnamed3686(o.metrics);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListLogMetricsResponse--;
 }
 
-buildUnnamed3669() {
+buildUnnamed3687() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3669(core.List<core.String> o) {
+checkUnnamed3687(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -377,7 +377,7 @@
   var o = new api.ListLogsResponse();
   buildCounterListLogsResponse++;
   if (buildCounterListLogsResponse < 3) {
-    o.logNames = buildUnnamed3669();
+    o.logNames = buildUnnamed3687();
     o.nextPageToken = "foo";
   }
   buildCounterListLogsResponse--;
@@ -387,20 +387,20 @@
 checkListLogsResponse(api.ListLogsResponse o) {
   buildCounterListLogsResponse++;
   if (buildCounterListLogsResponse < 3) {
-    checkUnnamed3669(o.logNames);
+    checkUnnamed3687(o.logNames);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListLogsResponse--;
 }
 
-buildUnnamed3670() {
+buildUnnamed3688() {
   var o = new core.List<api.MonitoredResourceDescriptor>();
   o.add(buildMonitoredResourceDescriptor());
   o.add(buildMonitoredResourceDescriptor());
   return o;
 }
 
-checkUnnamed3670(core.List<api.MonitoredResourceDescriptor> o) {
+checkUnnamed3688(core.List<api.MonitoredResourceDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMonitoredResourceDescriptor(o[0]);
   checkMonitoredResourceDescriptor(o[1]);
@@ -412,7 +412,7 @@
   buildCounterListMonitoredResourceDescriptorsResponse++;
   if (buildCounterListMonitoredResourceDescriptorsResponse < 3) {
     o.nextPageToken = "foo";
-    o.resourceDescriptors = buildUnnamed3670();
+    o.resourceDescriptors = buildUnnamed3688();
   }
   buildCounterListMonitoredResourceDescriptorsResponse--;
   return o;
@@ -423,19 +423,19 @@
   buildCounterListMonitoredResourceDescriptorsResponse++;
   if (buildCounterListMonitoredResourceDescriptorsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3670(o.resourceDescriptors);
+    checkUnnamed3688(o.resourceDescriptors);
   }
   buildCounterListMonitoredResourceDescriptorsResponse--;
 }
 
-buildUnnamed3671() {
+buildUnnamed3689() {
   var o = new core.List<api.LogSink>();
   o.add(buildLogSink());
   o.add(buildLogSink());
   return o;
 }
 
-checkUnnamed3671(core.List<api.LogSink> o) {
+checkUnnamed3689(core.List<api.LogSink> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLogSink(o[0]);
   checkLogSink(o[1]);
@@ -447,7 +447,7 @@
   buildCounterListSinksResponse++;
   if (buildCounterListSinksResponse < 3) {
     o.nextPageToken = "foo";
-    o.sinks = buildUnnamed3671();
+    o.sinks = buildUnnamed3689();
   }
   buildCounterListSinksResponse--;
   return o;
@@ -457,12 +457,12 @@
   buildCounterListSinksResponse++;
   if (buildCounterListSinksResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3671(o.sinks);
+    checkUnnamed3689(o.sinks);
   }
   buildCounterListSinksResponse--;
 }
 
-buildUnnamed3672() {
+buildUnnamed3690() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -477,7 +477,7 @@
   return o;
 }
 
-checkUnnamed3672(core.Map<core.String, core.Object> o) {
+checkUnnamed3690(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -491,20 +491,20 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3673() {
+buildUnnamed3691() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3673(core.Map<core.String, core.String> o) {
+checkUnnamed3691(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
 }
 
-buildUnnamed3674() {
+buildUnnamed3692() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -519,7 +519,7 @@
   return o;
 }
 
-checkUnnamed3674(core.Map<core.String, core.Object> o) {
+checkUnnamed3692(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -540,11 +540,11 @@
   if (buildCounterLogEntry < 3) {
     o.httpRequest = buildHttpRequest();
     o.insertId = "foo";
-    o.jsonPayload = buildUnnamed3672();
-    o.labels = buildUnnamed3673();
+    o.jsonPayload = buildUnnamed3690();
+    o.labels = buildUnnamed3691();
     o.logName = "foo";
     o.operation = buildLogEntryOperation();
-    o.protoPayload = buildUnnamed3674();
+    o.protoPayload = buildUnnamed3692();
     o.receiveTimestamp = "foo";
     o.resource = buildMonitoredResource();
     o.severity = "foo";
@@ -562,11 +562,11 @@
   if (buildCounterLogEntry < 3) {
     checkHttpRequest(o.httpRequest);
     unittest.expect(o.insertId, unittest.equals('foo'));
-    checkUnnamed3672(o.jsonPayload);
-    checkUnnamed3673(o.labels);
+    checkUnnamed3690(o.jsonPayload);
+    checkUnnamed3691(o.labels);
     unittest.expect(o.logName, unittest.equals('foo'));
     checkLogEntryOperation(o.operation);
-    checkUnnamed3674(o.protoPayload);
+    checkUnnamed3692(o.protoPayload);
     unittest.expect(o.receiveTimestamp, unittest.equals('foo'));
     checkMonitoredResource(o.resource);
     unittest.expect(o.severity, unittest.equals('foo'));
@@ -651,14 +651,14 @@
   buildCounterLogLine--;
 }
 
-buildUnnamed3675() {
+buildUnnamed3693() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3675(core.Map<core.String, core.String> o) {
+checkUnnamed3693(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -672,7 +672,7 @@
     o.bucketOptions = buildBucketOptions();
     o.description = "foo";
     o.filter = "foo";
-    o.labelExtractors = buildUnnamed3675();
+    o.labelExtractors = buildUnnamed3693();
     o.metricDescriptor = buildMetricDescriptor();
     o.name = "foo";
     o.valueExtractor = "foo";
@@ -688,7 +688,7 @@
     checkBucketOptions(o.bucketOptions);
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.filter, unittest.equals('foo'));
-    checkUnnamed3675(o.labelExtractors);
+    checkUnnamed3693(o.labelExtractors);
     checkMetricDescriptor(o.metricDescriptor);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.valueExtractor, unittest.equals('foo'));
@@ -730,14 +730,14 @@
   buildCounterLogSink--;
 }
 
-buildUnnamed3676() {
+buildUnnamed3694() {
   var o = new core.List<api.LabelDescriptor>();
   o.add(buildLabelDescriptor());
   o.add(buildLabelDescriptor());
   return o;
 }
 
-checkUnnamed3676(core.List<api.LabelDescriptor> o) {
+checkUnnamed3694(core.List<api.LabelDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLabelDescriptor(o[0]);
   checkLabelDescriptor(o[1]);
@@ -750,7 +750,7 @@
   if (buildCounterMetricDescriptor < 3) {
     o.description = "foo";
     o.displayName = "foo";
-    o.labels = buildUnnamed3676();
+    o.labels = buildUnnamed3694();
     o.metricKind = "foo";
     o.name = "foo";
     o.type = "foo";
@@ -766,7 +766,7 @@
   if (buildCounterMetricDescriptor < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.displayName, unittest.equals('foo'));
-    checkUnnamed3676(o.labels);
+    checkUnnamed3694(o.labels);
     unittest.expect(o.metricKind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
@@ -776,14 +776,14 @@
   buildCounterMetricDescriptor--;
 }
 
-buildUnnamed3677() {
+buildUnnamed3695() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3677(core.Map<core.String, core.String> o) {
+checkUnnamed3695(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -794,7 +794,7 @@
   var o = new api.MonitoredResource();
   buildCounterMonitoredResource++;
   if (buildCounterMonitoredResource < 3) {
-    o.labels = buildUnnamed3677();
+    o.labels = buildUnnamed3695();
     o.type = "foo";
   }
   buildCounterMonitoredResource--;
@@ -804,20 +804,20 @@
 checkMonitoredResource(api.MonitoredResource o) {
   buildCounterMonitoredResource++;
   if (buildCounterMonitoredResource < 3) {
-    checkUnnamed3677(o.labels);
+    checkUnnamed3695(o.labels);
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterMonitoredResource--;
 }
 
-buildUnnamed3678() {
+buildUnnamed3696() {
   var o = new core.List<api.LabelDescriptor>();
   o.add(buildLabelDescriptor());
   o.add(buildLabelDescriptor());
   return o;
 }
 
-checkUnnamed3678(core.List<api.LabelDescriptor> o) {
+checkUnnamed3696(core.List<api.LabelDescriptor> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLabelDescriptor(o[0]);
   checkLabelDescriptor(o[1]);
@@ -830,7 +830,7 @@
   if (buildCounterMonitoredResourceDescriptor < 3) {
     o.description = "foo";
     o.displayName = "foo";
-    o.labels = buildUnnamed3678();
+    o.labels = buildUnnamed3696();
     o.name = "foo";
     o.type = "foo";
   }
@@ -843,34 +843,34 @@
   if (buildCounterMonitoredResourceDescriptor < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.displayName, unittest.equals('foo'));
-    checkUnnamed3678(o.labels);
+    checkUnnamed3696(o.labels);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.type, unittest.equals('foo'));
   }
   buildCounterMonitoredResourceDescriptor--;
 }
 
-buildUnnamed3679() {
+buildUnnamed3697() {
   var o = new core.List<api.LogLine>();
   o.add(buildLogLine());
   o.add(buildLogLine());
   return o;
 }
 
-checkUnnamed3679(core.List<api.LogLine> o) {
+checkUnnamed3697(core.List<api.LogLine> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLogLine(o[0]);
   checkLogLine(o[1]);
 }
 
-buildUnnamed3680() {
+buildUnnamed3698() {
   var o = new core.List<api.SourceReference>();
   o.add(buildSourceReference());
   o.add(buildSourceReference());
   return o;
 }
 
-checkUnnamed3680(core.List<api.SourceReference> o) {
+checkUnnamed3698(core.List<api.SourceReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSourceReference(o[0]);
   checkSourceReference(o[1]);
@@ -893,7 +893,7 @@
     o.instanceIndex = 42;
     o.ip = "foo";
     o.latency = "foo";
-    o.line = buildUnnamed3679();
+    o.line = buildUnnamed3697();
     o.megaCycles = "foo";
     o.method = "foo";
     o.moduleId = "foo";
@@ -903,7 +903,7 @@
     o.requestId = "foo";
     o.resource = "foo";
     o.responseSize = "foo";
-    o.sourceReference = buildUnnamed3680();
+    o.sourceReference = buildUnnamed3698();
     o.startTime = "foo";
     o.status = 42;
     o.taskName = "foo";
@@ -933,7 +933,7 @@
     unittest.expect(o.instanceIndex, unittest.equals(42));
     unittest.expect(o.ip, unittest.equals('foo'));
     unittest.expect(o.latency, unittest.equals('foo'));
-    checkUnnamed3679(o.line);
+    checkUnnamed3697(o.line);
     unittest.expect(o.megaCycles, unittest.equals('foo'));
     unittest.expect(o.method, unittest.equals('foo'));
     unittest.expect(o.moduleId, unittest.equals('foo'));
@@ -943,7 +943,7 @@
     unittest.expect(o.requestId, unittest.equals('foo'));
     unittest.expect(o.resource, unittest.equals('foo'));
     unittest.expect(o.responseSize, unittest.equals('foo'));
-    checkUnnamed3680(o.sourceReference);
+    checkUnnamed3698(o.sourceReference);
     unittest.expect(o.startTime, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals(42));
     unittest.expect(o.taskName, unittest.equals('foo'));
@@ -1001,27 +1001,27 @@
   buildCounterSourceReference--;
 }
 
-buildUnnamed3681() {
+buildUnnamed3699() {
   var o = new core.List<api.LogEntry>();
   o.add(buildLogEntry());
   o.add(buildLogEntry());
   return o;
 }
 
-checkUnnamed3681(core.List<api.LogEntry> o) {
+checkUnnamed3699(core.List<api.LogEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLogEntry(o[0]);
   checkLogEntry(o[1]);
 }
 
-buildUnnamed3682() {
+buildUnnamed3700() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3682(core.Map<core.String, core.String> o) {
+checkUnnamed3700(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1032,8 +1032,8 @@
   var o = new api.WriteLogEntriesRequest();
   buildCounterWriteLogEntriesRequest++;
   if (buildCounterWriteLogEntriesRequest < 3) {
-    o.entries = buildUnnamed3681();
-    o.labels = buildUnnamed3682();
+    o.entries = buildUnnamed3699();
+    o.labels = buildUnnamed3700();
     o.logName = "foo";
     o.partialSuccess = true;
     o.resource = buildMonitoredResource();
@@ -1045,8 +1045,8 @@
 checkWriteLogEntriesRequest(api.WriteLogEntriesRequest o) {
   buildCounterWriteLogEntriesRequest++;
   if (buildCounterWriteLogEntriesRequest < 3) {
-    checkUnnamed3681(o.entries);
-    checkUnnamed3682(o.labels);
+    checkUnnamed3699(o.entries);
+    checkUnnamed3700(o.labels);
     unittest.expect(o.logName, unittest.equals('foo'));
     unittest.expect(o.partialSuccess, unittest.isTrue);
     checkMonitoredResource(o.resource);
@@ -1293,6 +1293,7 @@
       api.BillingAccountsLogsResourceApi res =
           new api.LoggingApi(mock).billingAccounts.logs;
       var arg_logName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1324,6 +1325,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1331,7 +1333,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_logName).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_logName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -1343,6 +1347,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1378,6 +1383,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1386,7 +1392,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLogsResponse response) {
         checkListLogsResponse(response);
       })));
@@ -1398,6 +1407,7 @@
       var mock = new HttpServerMock();
       api.EntriesResourceApi res = new api.LoggingApi(mock).entries;
       var arg_request = buildListLogEntriesRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ListLogEntriesRequest.fromJson(json);
         checkListLogEntriesRequest(obj);
@@ -1431,6 +1441,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1439,7 +1450,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_request)
+          .list(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLogEntriesResponse response) {
         checkListLogEntriesResponse(response);
       })));
@@ -1449,6 +1460,7 @@
       var mock = new HttpServerMock();
       api.EntriesResourceApi res = new api.LoggingApi(mock).entries;
       var arg_request = buildWriteLogEntriesRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.WriteLogEntriesRequest.fromJson(json);
         checkWriteLogEntriesRequest(obj);
@@ -1482,6 +1494,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1490,7 +1503,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .write(arg_request)
+          .write(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.WriteLogEntriesResponse response) {
         checkWriteLogEntriesResponse(response);
       })));
@@ -1504,6 +1517,7 @@
           new api.LoggingApi(mock).monitoredResourceDescriptors;
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1538,6 +1552,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1546,8 +1561,12 @@
             .encode(buildListMonitoredResourceDescriptorsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list(pageToken: arg_pageToken, pageSize: arg_pageSize).then(unittest
-          .expectAsync1(
+      res
+          .list(
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(
               ((api.ListMonitoredResourceDescriptorsResponse response) {
         checkListMonitoredResourceDescriptorsResponse(response);
       })));
@@ -1560,6 +1579,7 @@
       api.OrganizationsLogsResourceApi res =
           new api.LoggingApi(mock).organizations.logs;
       var arg_logName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1591,6 +1611,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1598,7 +1619,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_logName).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_logName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -1610,6 +1633,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1645,6 +1669,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1653,7 +1678,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLogsResponse response) {
         checkListLogsResponse(response);
       })));
@@ -1665,6 +1693,7 @@
       var mock = new HttpServerMock();
       api.ProjectsLogsResourceApi res = new api.LoggingApi(mock).projects.logs;
       var arg_logName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1696,6 +1725,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1703,7 +1733,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_logName).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_logName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -1714,6 +1746,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1749,6 +1782,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1757,7 +1791,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLogsResponse response) {
         checkListLogsResponse(response);
       })));
@@ -1771,6 +1808,7 @@
           new api.LoggingApi(mock).projects.metrics;
       var arg_request = buildLogMetric();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogMetric.fromJson(json);
         checkLogMetric(obj);
@@ -1805,6 +1843,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1813,7 +1852,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent)
+          .create(arg_request, arg_parent, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogMetric response) {
         checkLogMetric(response);
       })));
@@ -1824,6 +1863,7 @@
       api.ProjectsMetricsResourceApi res =
           new api.LoggingApi(mock).projects.metrics;
       var arg_metricName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1855,6 +1895,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1863,7 +1904,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_metricName)
+          .delete(arg_metricName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1874,6 +1915,7 @@
       api.ProjectsMetricsResourceApi res =
           new api.LoggingApi(mock).projects.metrics;
       var arg_metricName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1905,6 +1947,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1913,7 +1956,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_metricName)
+          .get(arg_metricName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogMetric response) {
         checkLogMetric(response);
       })));
@@ -1924,8 +1967,9 @@
       api.ProjectsMetricsResourceApi res =
           new api.LoggingApi(mock).projects.metrics;
       var arg_parent = "foo";
-      var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1957,10 +2001,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(
-            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1969,7 +2014,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListLogMetricsResponse response) {
         checkListLogMetricsResponse(response);
       })));
@@ -1981,6 +2029,7 @@
           new api.LoggingApi(mock).projects.metrics;
       var arg_request = buildLogMetric();
       var arg_metricName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogMetric.fromJson(json);
         checkLogMetric(obj);
@@ -2015,6 +2064,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2023,7 +2073,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_metricName)
+          .update(arg_request, arg_metricName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogMetric response) {
         checkLogMetric(response);
       })));
@@ -2038,6 +2088,7 @@
       var arg_request = buildLogSink();
       var arg_parent = "foo";
       var arg_uniqueWriterIdentity = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogSink.fromJson(json);
         checkLogSink(obj);
@@ -2074,6 +2125,7 @@
         }
         unittest.expect(queryMap["uniqueWriterIdentity"].first,
             unittest.equals("$arg_uniqueWriterIdentity"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2083,7 +2135,8 @@
       }), true);
       res
           .create(arg_request, arg_parent,
-              uniqueWriterIdentity: arg_uniqueWriterIdentity)
+              uniqueWriterIdentity: arg_uniqueWriterIdentity,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
@@ -2094,6 +2147,7 @@
       api.ProjectsSinksResourceApi res =
           new api.LoggingApi(mock).projects.sinks;
       var arg_sinkName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2125,6 +2179,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2133,7 +2188,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_sinkName)
+          .delete(arg_sinkName, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -2144,6 +2199,7 @@
       api.ProjectsSinksResourceApi res =
           new api.LoggingApi(mock).projects.sinks;
       var arg_sinkName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2175,6 +2231,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2182,7 +2239,9 @@
         var resp = convert.JSON.encode(buildLogSink());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_sinkName).then(unittest.expectAsync1(((api.LogSink response) {
+      res
+          .get(arg_sinkName, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
     });
@@ -2194,6 +2253,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2229,6 +2289,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2237,7 +2298,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListSinksResponse response) {
         checkListSinksResponse(response);
       })));
@@ -2251,6 +2315,7 @@
       var arg_sinkName = "foo";
       var arg_updateMask = "foo";
       var arg_uniqueWriterIdentity = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.LogSink.fromJson(json);
         checkLogSink(obj);
@@ -2289,6 +2354,7 @@
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
         unittest.expect(queryMap["uniqueWriterIdentity"].first,
             unittest.equals("$arg_uniqueWriterIdentity"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2299,7 +2365,8 @@
       res
           .update(arg_request, arg_sinkName,
               updateMask: arg_updateMask,
-              uniqueWriterIdentity: arg_uniqueWriterIdentity)
+              uniqueWriterIdentity: arg_uniqueWriterIdentity,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LogSink response) {
         checkLogSink(response);
       })));
diff --git a/generated/googleapis_beta/test/oslogin/v1alpha_test.dart b/generated/googleapis_beta/test/oslogin/v1alpha_test.dart
index 6696280..252b16e 100644
--- a/generated/googleapis_beta/test/oslogin/v1alpha_test.dart
+++ b/generated/googleapis_beta/test/oslogin/v1alpha_test.dart
@@ -84,27 +84,27 @@
   buildCounterImportSshPublicKeyResponse--;
 }
 
-buildUnnamed3604() {
+buildUnnamed3622() {
   var o = new core.List<api.PosixAccount>();
   o.add(buildPosixAccount());
   o.add(buildPosixAccount());
   return o;
 }
 
-checkUnnamed3604(core.List<api.PosixAccount> o) {
+checkUnnamed3622(core.List<api.PosixAccount> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPosixAccount(o[0]);
   checkPosixAccount(o[1]);
 }
 
-buildUnnamed3605() {
+buildUnnamed3623() {
   var o = new core.Map<core.String, api.SshPublicKey>();
   o["x"] = buildSshPublicKey();
   o["y"] = buildSshPublicKey();
   return o;
 }
 
-checkUnnamed3605(core.Map<core.String, api.SshPublicKey> o) {
+checkUnnamed3623(core.Map<core.String, api.SshPublicKey> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSshPublicKey(o["x"]);
   checkSshPublicKey(o["y"]);
@@ -116,8 +116,8 @@
   buildCounterLoginProfile++;
   if (buildCounterLoginProfile < 3) {
     o.name = "foo";
-    o.posixAccounts = buildUnnamed3604();
-    o.sshPublicKeys = buildUnnamed3605();
+    o.posixAccounts = buildUnnamed3622();
+    o.sshPublicKeys = buildUnnamed3623();
     o.suspended = true;
   }
   buildCounterLoginProfile--;
@@ -128,8 +128,8 @@
   buildCounterLoginProfile++;
   if (buildCounterLoginProfile < 3) {
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3604(o.posixAccounts);
-    checkUnnamed3605(o.sshPublicKeys);
+    checkUnnamed3622(o.posixAccounts);
+    checkUnnamed3623(o.sshPublicKeys);
     unittest.expect(o.suspended, unittest.isTrue);
   }
   buildCounterLoginProfile--;
@@ -237,6 +237,7 @@
       var mock = new HttpServerMock();
       api.UsersResourceApi res = new api.OsloginApi(mock).users;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -268,6 +269,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -276,7 +278,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getLoginProfile(arg_name)
+          .getLoginProfile(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.LoginProfile response) {
         checkLoginProfile(response);
       })));
@@ -287,6 +289,7 @@
       api.UsersResourceApi res = new api.OsloginApi(mock).users;
       var arg_request = buildSshPublicKey();
       var arg_parent = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SshPublicKey.fromJson(json);
         checkSshPublicKey(obj);
@@ -321,6 +324,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -328,8 +332,10 @@
         var resp = convert.JSON.encode(buildImportSshPublicKeyResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.importSshPublicKey(arg_request, arg_parent).then(
-          unittest.expectAsync1(((api.ImportSshPublicKeyResponse response) {
+      res
+          .importSshPublicKey(arg_request, arg_parent, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.ImportSshPublicKeyResponse response) {
         checkImportSshPublicKeyResponse(response);
       })));
     });
@@ -341,6 +347,7 @@
       api.UsersSshPublicKeysResourceApi res =
           new api.OsloginApi(mock).users.sshPublicKeys;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -372,6 +379,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -379,7 +387,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -389,6 +399,7 @@
       api.UsersSshPublicKeysResourceApi res =
           new api.OsloginApi(mock).users.sshPublicKeys;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -420,6 +431,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -428,7 +440,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name)
+          .get(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SshPublicKey response) {
         checkSshPublicKey(response);
       })));
@@ -441,6 +453,7 @@
       var arg_request = buildSshPublicKey();
       var arg_name = "foo";
       var arg_updateMask = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SshPublicKey.fromJson(json);
         checkSshPublicKey(obj);
@@ -477,6 +490,7 @@
         }
         unittest.expect(
             queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -485,7 +499,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_name, updateMask: arg_updateMask)
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SshPublicKey response) {
         checkSshPublicKey(response);
       })));
diff --git a/generated/googleapis_beta/test/oslogin/v1beta_test.dart b/generated/googleapis_beta/test/oslogin/v1beta_test.dart
new file mode 100644
index 0000000..cf3e570
--- /dev/null
+++ b/generated/googleapis_beta/test/oslogin/v1beta_test.dart
@@ -0,0 +1,509 @@
+library googleapis_beta.oslogin.v1beta.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis_beta/oslogin/v1beta.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterEmpty = 0;
+buildEmpty() {
+  var o = new api.Empty();
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+  return o;
+}
+
+checkEmpty(api.Empty o) {
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+}
+
+core.int buildCounterImportSshPublicKeyResponse = 0;
+buildImportSshPublicKeyResponse() {
+  var o = new api.ImportSshPublicKeyResponse();
+  buildCounterImportSshPublicKeyResponse++;
+  if (buildCounterImportSshPublicKeyResponse < 3) {
+    o.loginProfile = buildLoginProfile();
+  }
+  buildCounterImportSshPublicKeyResponse--;
+  return o;
+}
+
+checkImportSshPublicKeyResponse(api.ImportSshPublicKeyResponse o) {
+  buildCounterImportSshPublicKeyResponse++;
+  if (buildCounterImportSshPublicKeyResponse < 3) {
+    checkLoginProfile(o.loginProfile);
+  }
+  buildCounterImportSshPublicKeyResponse--;
+}
+
+buildUnnamed3624() {
+  var o = new core.List<api.PosixAccount>();
+  o.add(buildPosixAccount());
+  o.add(buildPosixAccount());
+  return o;
+}
+
+checkUnnamed3624(core.List<api.PosixAccount> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPosixAccount(o[0]);
+  checkPosixAccount(o[1]);
+}
+
+buildUnnamed3625() {
+  var o = new core.Map<core.String, api.SshPublicKey>();
+  o["x"] = buildSshPublicKey();
+  o["y"] = buildSshPublicKey();
+  return o;
+}
+
+checkUnnamed3625(core.Map<core.String, api.SshPublicKey> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSshPublicKey(o["x"]);
+  checkSshPublicKey(o["y"]);
+}
+
+core.int buildCounterLoginProfile = 0;
+buildLoginProfile() {
+  var o = new api.LoginProfile();
+  buildCounterLoginProfile++;
+  if (buildCounterLoginProfile < 3) {
+    o.name = "foo";
+    o.posixAccounts = buildUnnamed3624();
+    o.sshPublicKeys = buildUnnamed3625();
+    o.suspended = true;
+  }
+  buildCounterLoginProfile--;
+  return o;
+}
+
+checkLoginProfile(api.LoginProfile o) {
+  buildCounterLoginProfile++;
+  if (buildCounterLoginProfile < 3) {
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkUnnamed3624(o.posixAccounts);
+    checkUnnamed3625(o.sshPublicKeys);
+    unittest.expect(o.suspended, unittest.isTrue);
+  }
+  buildCounterLoginProfile--;
+}
+
+core.int buildCounterPosixAccount = 0;
+buildPosixAccount() {
+  var o = new api.PosixAccount();
+  buildCounterPosixAccount++;
+  if (buildCounterPosixAccount < 3) {
+    o.gecos = "foo";
+    o.gid = "foo";
+    o.homeDirectory = "foo";
+    o.primary = true;
+    o.shell = "foo";
+    o.systemId = "foo";
+    o.uid = "foo";
+    o.username = "foo";
+  }
+  buildCounterPosixAccount--;
+  return o;
+}
+
+checkPosixAccount(api.PosixAccount o) {
+  buildCounterPosixAccount++;
+  if (buildCounterPosixAccount < 3) {
+    unittest.expect(o.gecos, unittest.equals('foo'));
+    unittest.expect(o.gid, unittest.equals('foo'));
+    unittest.expect(o.homeDirectory, unittest.equals('foo'));
+    unittest.expect(o.primary, unittest.isTrue);
+    unittest.expect(o.shell, unittest.equals('foo'));
+    unittest.expect(o.systemId, unittest.equals('foo'));
+    unittest.expect(o.uid, unittest.equals('foo'));
+    unittest.expect(o.username, unittest.equals('foo'));
+  }
+  buildCounterPosixAccount--;
+}
+
+core.int buildCounterSshPublicKey = 0;
+buildSshPublicKey() {
+  var o = new api.SshPublicKey();
+  buildCounterSshPublicKey++;
+  if (buildCounterSshPublicKey < 3) {
+    o.expirationTimeUsec = "foo";
+    o.fingerprint = "foo";
+    o.key = "foo";
+  }
+  buildCounterSshPublicKey--;
+  return o;
+}
+
+checkSshPublicKey(api.SshPublicKey o) {
+  buildCounterSshPublicKey++;
+  if (buildCounterSshPublicKey < 3) {
+    unittest.expect(o.expirationTimeUsec, unittest.equals('foo'));
+    unittest.expect(o.fingerprint, unittest.equals('foo'));
+    unittest.expect(o.key, unittest.equals('foo'));
+  }
+  buildCounterSshPublicKey--;
+}
+
+main() {
+  unittest.group("obj-schema-Empty", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildEmpty();
+      var od = new api.Empty.fromJson(o.toJson());
+      checkEmpty(od);
+    });
+  });
+
+  unittest.group("obj-schema-ImportSshPublicKeyResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildImportSshPublicKeyResponse();
+      var od = new api.ImportSshPublicKeyResponse.fromJson(o.toJson());
+      checkImportSshPublicKeyResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-LoginProfile", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildLoginProfile();
+      var od = new api.LoginProfile.fromJson(o.toJson());
+      checkLoginProfile(od);
+    });
+  });
+
+  unittest.group("obj-schema-PosixAccount", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPosixAccount();
+      var od = new api.PosixAccount.fromJson(o.toJson());
+      checkPosixAccount(od);
+    });
+  });
+
+  unittest.group("obj-schema-SshPublicKey", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSshPublicKey();
+      var od = new api.SshPublicKey.fromJson(o.toJson());
+      checkSshPublicKey(od);
+    });
+  });
+
+  unittest.group("resource-UsersResourceApi", () {
+    unittest.test("method--getLoginProfile", () {
+      var mock = new HttpServerMock();
+      api.UsersResourceApi res = new api.OsloginApi(mock).users;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("v1beta/"));
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildLoginProfile());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getLoginProfile(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.LoginProfile response) {
+        checkLoginProfile(response);
+      })));
+    });
+
+    unittest.test("method--importSshPublicKey", () {
+      var mock = new HttpServerMock();
+      api.UsersResourceApi res = new api.OsloginApi(mock).users;
+      var arg_request = buildSshPublicKey();
+      var arg_parent = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.SshPublicKey.fromJson(json);
+        checkSshPublicKey(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("v1beta/"));
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildImportSshPublicKeyResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .importSshPublicKey(arg_request, arg_parent, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.ImportSshPublicKeyResponse response) {
+        checkImportSshPublicKeyResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-UsersSshPublicKeysResourceApi", () {
+    unittest.test("method--delete", () {
+      var mock = new HttpServerMock();
+      api.UsersSshPublicKeysResourceApi res =
+          new api.OsloginApi(mock).users.sshPublicKeys;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("v1beta/"));
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildEmpty());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
+        checkEmpty(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.UsersSshPublicKeysResourceApi res =
+          new api.OsloginApi(mock).users.sshPublicKeys;
+      var arg_name = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("v1beta/"));
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSshPublicKey());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SshPublicKey response) {
+        checkSshPublicKey(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.UsersSshPublicKeysResourceApi res =
+          new api.OsloginApi(mock).users.sshPublicKeys;
+      var arg_request = buildSshPublicKey();
+      var arg_name = "foo";
+      var arg_updateMask = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.SshPublicKey.fromJson(json);
+        checkSshPublicKey(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 7),
+            unittest.equals("v1beta/"));
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["updateMask"].first, unittest.equals(arg_updateMask));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildSshPublicKey());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_name,
+              updateMask: arg_updateMask, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.SshPublicKey response) {
+        checkSshPublicKey(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis_beta/test/proximitybeacon/v1beta1_test.dart b/generated/googleapis_beta/test/proximitybeacon/v1beta1_test.dart
index d01fa71..0fc8ba2 100644
--- a/generated/googleapis_beta/test/proximitybeacon/v1beta1_test.dart
+++ b/generated/googleapis_beta/test/proximitybeacon/v1beta1_test.dart
@@ -92,14 +92,14 @@
   buildCounterAttachmentInfo--;
 }
 
-buildUnnamed3641() {
+buildUnnamed3659() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3641(core.Map<core.String, core.String> o) {
+checkUnnamed3659(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -118,7 +118,7 @@
     o.indoorLevel = buildIndoorLevel();
     o.latLng = buildLatLng();
     o.placeId = "foo";
-    o.properties = buildUnnamed3641();
+    o.properties = buildUnnamed3659();
     o.provisioningKey = "foo";
     o.status = "foo";
   }
@@ -137,7 +137,7 @@
     checkIndoorLevel(o.indoorLevel);
     checkLatLng(o.latLng);
     unittest.expect(o.placeId, unittest.equals('foo'));
-    checkUnnamed3641(o.properties);
+    checkUnnamed3659(o.properties);
     unittest.expect(o.provisioningKey, unittest.equals('foo'));
     unittest.expect(o.status, unittest.equals('foo'));
   }
@@ -171,14 +171,14 @@
   buildCounterBeaconAttachment--;
 }
 
-buildUnnamed3642() {
+buildUnnamed3660() {
   var o = new core.List<api.AttachmentInfo>();
   o.add(buildAttachmentInfo());
   o.add(buildAttachmentInfo());
   return o;
 }
 
-checkUnnamed3642(core.List<api.AttachmentInfo> o) {
+checkUnnamed3660(core.List<api.AttachmentInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAttachmentInfo(o[0]);
   checkAttachmentInfo(o[1]);
@@ -190,7 +190,7 @@
   buildCounterBeaconInfo++;
   if (buildCounterBeaconInfo < 3) {
     o.advertisedId = buildAdvertisedId();
-    o.attachments = buildUnnamed3642();
+    o.attachments = buildUnnamed3660();
     o.beaconName = "foo";
   }
   buildCounterBeaconInfo--;
@@ -201,7 +201,7 @@
   buildCounterBeaconInfo++;
   if (buildCounterBeaconInfo < 3) {
     checkAdvertisedId(o.advertisedId);
-    checkUnnamed3642(o.attachments);
+    checkUnnamed3660(o.attachments);
     unittest.expect(o.beaconName, unittest.equals('foo'));
   }
   buildCounterBeaconInfo--;
@@ -249,14 +249,14 @@
   buildCounterDeleteAttachmentsResponse--;
 }
 
-buildUnnamed3643() {
+buildUnnamed3661() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3643(core.List<core.String> o) {
+checkUnnamed3661(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -267,7 +267,7 @@
   var o = new api.Diagnostics();
   buildCounterDiagnostics++;
   if (buildCounterDiagnostics < 3) {
-    o.alerts = buildUnnamed3643();
+    o.alerts = buildUnnamed3661();
     o.beaconName = "foo";
     o.estimatedLowBatteryDate = buildDate();
   }
@@ -278,7 +278,7 @@
 checkDiagnostics(api.Diagnostics o) {
   buildCounterDiagnostics++;
   if (buildCounterDiagnostics < 3) {
-    checkUnnamed3643(o.alerts);
+    checkUnnamed3661(o.alerts);
     unittest.expect(o.beaconName, unittest.equals('foo'));
     checkDate(o.estimatedLowBatteryDate);
   }
@@ -352,27 +352,27 @@
   buildCounterEphemeralIdRegistrationParams--;
 }
 
-buildUnnamed3644() {
+buildUnnamed3662() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3644(core.List<core.String> o) {
+checkUnnamed3662(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3645() {
+buildUnnamed3663() {
   var o = new core.List<api.Observation>();
   o.add(buildObservation());
   o.add(buildObservation());
   return o;
 }
 
-checkUnnamed3645(core.List<api.Observation> o) {
+checkUnnamed3663(core.List<api.Observation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkObservation(o[0]);
   checkObservation(o[1]);
@@ -383,8 +383,8 @@
   var o = new api.GetInfoForObservedBeaconsRequest();
   buildCounterGetInfoForObservedBeaconsRequest++;
   if (buildCounterGetInfoForObservedBeaconsRequest < 3) {
-    o.namespacedTypes = buildUnnamed3644();
-    o.observations = buildUnnamed3645();
+    o.namespacedTypes = buildUnnamed3662();
+    o.observations = buildUnnamed3663();
   }
   buildCounterGetInfoForObservedBeaconsRequest--;
   return o;
@@ -393,20 +393,20 @@
 checkGetInfoForObservedBeaconsRequest(api.GetInfoForObservedBeaconsRequest o) {
   buildCounterGetInfoForObservedBeaconsRequest++;
   if (buildCounterGetInfoForObservedBeaconsRequest < 3) {
-    checkUnnamed3644(o.namespacedTypes);
-    checkUnnamed3645(o.observations);
+    checkUnnamed3662(o.namespacedTypes);
+    checkUnnamed3663(o.observations);
   }
   buildCounterGetInfoForObservedBeaconsRequest--;
 }
 
-buildUnnamed3646() {
+buildUnnamed3664() {
   var o = new core.List<api.BeaconInfo>();
   o.add(buildBeaconInfo());
   o.add(buildBeaconInfo());
   return o;
 }
 
-checkUnnamed3646(core.List<api.BeaconInfo> o) {
+checkUnnamed3664(core.List<api.BeaconInfo> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBeaconInfo(o[0]);
   checkBeaconInfo(o[1]);
@@ -417,7 +417,7 @@
   var o = new api.GetInfoForObservedBeaconsResponse();
   buildCounterGetInfoForObservedBeaconsResponse++;
   if (buildCounterGetInfoForObservedBeaconsResponse < 3) {
-    o.beacons = buildUnnamed3646();
+    o.beacons = buildUnnamed3664();
   }
   buildCounterGetInfoForObservedBeaconsResponse--;
   return o;
@@ -427,7 +427,7 @@
     api.GetInfoForObservedBeaconsResponse o) {
   buildCounterGetInfoForObservedBeaconsResponse++;
   if (buildCounterGetInfoForObservedBeaconsResponse < 3) {
-    checkUnnamed3646(o.beacons);
+    checkUnnamed3664(o.beacons);
   }
   buildCounterGetInfoForObservedBeaconsResponse--;
 }
@@ -472,14 +472,14 @@
   buildCounterLatLng--;
 }
 
-buildUnnamed3647() {
+buildUnnamed3665() {
   var o = new core.List<api.BeaconAttachment>();
   o.add(buildBeaconAttachment());
   o.add(buildBeaconAttachment());
   return o;
 }
 
-checkUnnamed3647(core.List<api.BeaconAttachment> o) {
+checkUnnamed3665(core.List<api.BeaconAttachment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBeaconAttachment(o[0]);
   checkBeaconAttachment(o[1]);
@@ -490,7 +490,7 @@
   var o = new api.ListBeaconAttachmentsResponse();
   buildCounterListBeaconAttachmentsResponse++;
   if (buildCounterListBeaconAttachmentsResponse < 3) {
-    o.attachments = buildUnnamed3647();
+    o.attachments = buildUnnamed3665();
   }
   buildCounterListBeaconAttachmentsResponse--;
   return o;
@@ -499,19 +499,19 @@
 checkListBeaconAttachmentsResponse(api.ListBeaconAttachmentsResponse o) {
   buildCounterListBeaconAttachmentsResponse++;
   if (buildCounterListBeaconAttachmentsResponse < 3) {
-    checkUnnamed3647(o.attachments);
+    checkUnnamed3665(o.attachments);
   }
   buildCounterListBeaconAttachmentsResponse--;
 }
 
-buildUnnamed3648() {
+buildUnnamed3666() {
   var o = new core.List<api.Beacon>();
   o.add(buildBeacon());
   o.add(buildBeacon());
   return o;
 }
 
-checkUnnamed3648(core.List<api.Beacon> o) {
+checkUnnamed3666(core.List<api.Beacon> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBeacon(o[0]);
   checkBeacon(o[1]);
@@ -522,7 +522,7 @@
   var o = new api.ListBeaconsResponse();
   buildCounterListBeaconsResponse++;
   if (buildCounterListBeaconsResponse < 3) {
-    o.beacons = buildUnnamed3648();
+    o.beacons = buildUnnamed3666();
     o.nextPageToken = "foo";
     o.totalCount = "foo";
   }
@@ -533,21 +533,21 @@
 checkListBeaconsResponse(api.ListBeaconsResponse o) {
   buildCounterListBeaconsResponse++;
   if (buildCounterListBeaconsResponse < 3) {
-    checkUnnamed3648(o.beacons);
+    checkUnnamed3666(o.beacons);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.totalCount, unittest.equals('foo'));
   }
   buildCounterListBeaconsResponse--;
 }
 
-buildUnnamed3649() {
+buildUnnamed3667() {
   var o = new core.List<api.Diagnostics>();
   o.add(buildDiagnostics());
   o.add(buildDiagnostics());
   return o;
 }
 
-checkUnnamed3649(core.List<api.Diagnostics> o) {
+checkUnnamed3667(core.List<api.Diagnostics> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDiagnostics(o[0]);
   checkDiagnostics(o[1]);
@@ -558,7 +558,7 @@
   var o = new api.ListDiagnosticsResponse();
   buildCounterListDiagnosticsResponse++;
   if (buildCounterListDiagnosticsResponse < 3) {
-    o.diagnostics = buildUnnamed3649();
+    o.diagnostics = buildUnnamed3667();
     o.nextPageToken = "foo";
   }
   buildCounterListDiagnosticsResponse--;
@@ -568,20 +568,20 @@
 checkListDiagnosticsResponse(api.ListDiagnosticsResponse o) {
   buildCounterListDiagnosticsResponse++;
   if (buildCounterListDiagnosticsResponse < 3) {
-    checkUnnamed3649(o.diagnostics);
+    checkUnnamed3667(o.diagnostics);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListDiagnosticsResponse--;
 }
 
-buildUnnamed3650() {
+buildUnnamed3668() {
   var o = new core.List<api.Namespace>();
   o.add(buildNamespace());
   o.add(buildNamespace());
   return o;
 }
 
-checkUnnamed3650(core.List<api.Namespace> o) {
+checkUnnamed3668(core.List<api.Namespace> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkNamespace(o[0]);
   checkNamespace(o[1]);
@@ -592,7 +592,7 @@
   var o = new api.ListNamespacesResponse();
   buildCounterListNamespacesResponse++;
   if (buildCounterListNamespacesResponse < 3) {
-    o.namespaces = buildUnnamed3650();
+    o.namespaces = buildUnnamed3668();
   }
   buildCounterListNamespacesResponse--;
   return o;
@@ -601,7 +601,7 @@
 checkListNamespacesResponse(api.ListNamespacesResponse o) {
   buildCounterListNamespacesResponse++;
   if (buildCounterListNamespacesResponse < 3) {
-    checkUnnamed3650(o.namespaces);
+    checkUnnamed3668(o.namespaces);
   }
   buildCounterListNamespacesResponse--;
 }
@@ -825,6 +825,7 @@
       api.BeaconinfoResourceApi res =
           new api.ProximitybeaconApi(mock).beaconinfo;
       var arg_request = buildGetInfoForObservedBeaconsRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.GetInfoForObservedBeaconsRequest.fromJson(json);
         checkGetInfoForObservedBeaconsRequest(obj);
@@ -858,6 +859,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -866,7 +868,7 @@
             convert.JSON.encode(buildGetInfoForObservedBeaconsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.getforobserved(arg_request).then(unittest
+      res.getforobserved(arg_request, $fields: arg_$fields).then(unittest
           .expectAsync1(((api.GetInfoForObservedBeaconsResponse response) {
         checkGetInfoForObservedBeaconsResponse(response);
       })));
@@ -879,6 +881,7 @@
       api.BeaconsResourceApi res = new api.ProximitybeaconApi(mock).beacons;
       var arg_beaconName = "foo";
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -912,6 +915,7 @@
         }
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -920,7 +924,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .activate(arg_beaconName, projectId: arg_projectId)
+          .activate(arg_beaconName,
+              projectId: arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -931,6 +936,7 @@
       api.BeaconsResourceApi res = new api.ProximitybeaconApi(mock).beacons;
       var arg_beaconName = "foo";
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -964,6 +970,7 @@
         }
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -972,7 +979,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .deactivate(arg_beaconName, projectId: arg_projectId)
+          .deactivate(arg_beaconName,
+              projectId: arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -983,6 +991,7 @@
       api.BeaconsResourceApi res = new api.ProximitybeaconApi(mock).beacons;
       var arg_beaconName = "foo";
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1016,6 +1025,7 @@
         }
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1024,7 +1034,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .decommission(arg_beaconName, projectId: arg_projectId)
+          .decommission(arg_beaconName,
+              projectId: arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1035,6 +1046,7 @@
       api.BeaconsResourceApi res = new api.ProximitybeaconApi(mock).beacons;
       var arg_beaconName = "foo";
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1068,6 +1080,7 @@
         }
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1076,7 +1089,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_beaconName, projectId: arg_projectId)
+          .delete(arg_beaconName,
+              projectId: arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1087,6 +1101,7 @@
       api.BeaconsResourceApi res = new api.ProximitybeaconApi(mock).beacons;
       var arg_beaconName = "foo";
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1120,6 +1135,7 @@
         }
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1128,7 +1144,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_beaconName, projectId: arg_projectId)
+          .get(arg_beaconName, projectId: arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Beacon response) {
         checkBeacon(response);
       })));
@@ -1141,6 +1157,7 @@
       var arg_pageSize = 42;
       var arg_q = "foo";
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1178,6 +1195,7 @@
         unittest.expect(queryMap["q"].first, unittest.equals(arg_q));
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1190,7 +1208,8 @@
               pageToken: arg_pageToken,
               pageSize: arg_pageSize,
               q: arg_q,
-              projectId: arg_projectId)
+              projectId: arg_projectId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListBeaconsResponse response) {
         checkListBeaconsResponse(response);
       })));
@@ -1201,6 +1220,7 @@
       api.BeaconsResourceApi res = new api.ProximitybeaconApi(mock).beacons;
       var arg_request = buildBeacon();
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Beacon.fromJson(json);
         checkBeacon(obj);
@@ -1236,6 +1256,7 @@
         }
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1244,7 +1265,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .register(arg_request, projectId: arg_projectId)
+          .register(arg_request, projectId: arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Beacon response) {
         checkBeacon(response);
       })));
@@ -1256,6 +1277,7 @@
       var arg_request = buildBeacon();
       var arg_beaconName = "foo";
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Beacon.fromJson(json);
         checkBeacon(obj);
@@ -1292,6 +1314,7 @@
         }
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1300,7 +1323,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_beaconName, projectId: arg_projectId)
+          .update(arg_request, arg_beaconName,
+              projectId: arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Beacon response) {
         checkBeacon(response);
       })));
@@ -1315,6 +1339,7 @@
       var arg_beaconName = "foo";
       var arg_namespacedType = "foo";
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1350,6 +1375,7 @@
             unittest.equals(arg_namespacedType));
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1359,7 +1385,9 @@
       }), true);
       res
           .batchDelete(arg_beaconName,
-              namespacedType: arg_namespacedType, projectId: arg_projectId)
+              namespacedType: arg_namespacedType,
+              projectId: arg_projectId,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.DeleteAttachmentsResponse response) {
         checkDeleteAttachmentsResponse(response);
@@ -1373,6 +1401,7 @@
       var arg_request = buildBeaconAttachment();
       var arg_beaconName = "foo";
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BeaconAttachment.fromJson(json);
         checkBeaconAttachment(obj);
@@ -1409,6 +1438,7 @@
         }
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1417,7 +1447,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_beaconName, projectId: arg_projectId)
+          .create(arg_request, arg_beaconName,
+              projectId: arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BeaconAttachment response) {
         checkBeaconAttachment(response);
       })));
@@ -1429,6 +1460,7 @@
           new api.ProximitybeaconApi(mock).beacons.attachments;
       var arg_attachmentName = "foo";
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1462,6 +1494,7 @@
         }
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1470,7 +1503,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_attachmentName, projectId: arg_projectId)
+          .delete(arg_attachmentName,
+              projectId: arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1481,8 +1515,9 @@
       api.BeaconsAttachmentsResourceApi res =
           new api.ProximitybeaconApi(mock).beacons.attachments;
       var arg_beaconName = "foo";
-      var arg_namespacedType = "foo";
       var arg_projectId = "foo";
+      var arg_namespacedType = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1514,10 +1549,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(queryMap["namespacedType"].first,
-            unittest.equals(arg_namespacedType));
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["namespacedType"].first,
+            unittest.equals(arg_namespacedType));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1527,7 +1563,9 @@
       }), true);
       res
           .list(arg_beaconName,
-              namespacedType: arg_namespacedType, projectId: arg_projectId)
+              projectId: arg_projectId,
+              namespacedType: arg_namespacedType,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListBeaconAttachmentsResponse response) {
         checkListBeaconAttachmentsResponse(response);
@@ -1545,6 +1583,7 @@
       var arg_alertFilter = "foo";
       var arg_pageSize = 42;
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1584,6 +1623,7 @@
             unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1596,7 +1636,8 @@
               pageToken: arg_pageToken,
               alertFilter: arg_alertFilter,
               pageSize: arg_pageSize,
-              projectId: arg_projectId)
+              projectId: arg_projectId,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListDiagnosticsResponse response) {
         checkListDiagnosticsResponse(response);
       })));
@@ -1609,6 +1650,7 @@
       api.NamespacesResourceApi res =
           new api.ProximitybeaconApi(mock).namespaces;
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1641,6 +1683,7 @@
         }
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1649,7 +1692,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(projectId: arg_projectId)
+          .list(projectId: arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListNamespacesResponse response) {
         checkListNamespacesResponse(response);
       })));
@@ -1662,6 +1705,7 @@
       var arg_request = buildNamespace();
       var arg_namespaceName = "foo";
       var arg_projectId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Namespace.fromJson(json);
         checkNamespace(obj);
@@ -1698,6 +1742,7 @@
         }
         unittest.expect(
             queryMap["projectId"].first, unittest.equals(arg_projectId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1706,7 +1751,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_namespaceName, projectId: arg_projectId)
+          .update(arg_request, arg_namespaceName,
+              projectId: arg_projectId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Namespace response) {
         checkNamespace(response);
       })));
@@ -1717,6 +1763,7 @@
     unittest.test("method--getEidparams", () {
       var mock = new HttpServerMock();
       api.V1beta1ResourceApi res = new api.ProximitybeaconApi(mock).v1beta1;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1747,6 +1794,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1754,7 +1802,7 @@
         var resp = convert.JSON.encode(buildEphemeralIdRegistrationParams());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.getEidparams().then(
+      res.getEidparams($fields: arg_$fields).then(
           unittest.expectAsync1(((api.EphemeralIdRegistrationParams response) {
         checkEphemeralIdRegistrationParams(response);
       })));
diff --git a/generated/googleapis_beta/test/pubsub/v1beta2_test.dart b/generated/googleapis_beta/test/pubsub/v1beta2_test.dart
index b57a6e0..466337e 100644
--- a/generated/googleapis_beta/test/pubsub/v1beta2_test.dart
+++ b/generated/googleapis_beta/test/pubsub/v1beta2_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed3508() {
+buildUnnamed3526() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3508(core.List<core.String> o) {
+checkUnnamed3526(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -68,7 +68,7 @@
   var o = new api.AcknowledgeRequest();
   buildCounterAcknowledgeRequest++;
   if (buildCounterAcknowledgeRequest < 3) {
-    o.ackIds = buildUnnamed3508();
+    o.ackIds = buildUnnamed3526();
   }
   buildCounterAcknowledgeRequest--;
   return o;
@@ -77,19 +77,19 @@
 checkAcknowledgeRequest(api.AcknowledgeRequest o) {
   buildCounterAcknowledgeRequest++;
   if (buildCounterAcknowledgeRequest < 3) {
-    checkUnnamed3508(o.ackIds);
+    checkUnnamed3526(o.ackIds);
   }
   buildCounterAcknowledgeRequest--;
 }
 
-buildUnnamed3509() {
+buildUnnamed3527() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3509(core.List<core.String> o) {
+checkUnnamed3527(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -100,7 +100,7 @@
   var o = new api.Binding();
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    o.members = buildUnnamed3509();
+    o.members = buildUnnamed3527();
     o.role = "foo";
   }
   buildCounterBinding--;
@@ -110,7 +110,7 @@
 checkBinding(api.Binding o) {
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    checkUnnamed3509(o.members);
+    checkUnnamed3527(o.members);
     unittest.expect(o.role, unittest.equals('foo'));
   }
   buildCounterBinding--;
@@ -131,14 +131,14 @@
   buildCounterEmpty--;
 }
 
-buildUnnamed3510() {
+buildUnnamed3528() {
   var o = new core.List<api.Subscription>();
   o.add(buildSubscription());
   o.add(buildSubscription());
   return o;
 }
 
-checkUnnamed3510(core.List<api.Subscription> o) {
+checkUnnamed3528(core.List<api.Subscription> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSubscription(o[0]);
   checkSubscription(o[1]);
@@ -150,7 +150,7 @@
   buildCounterListSubscriptionsResponse++;
   if (buildCounterListSubscriptionsResponse < 3) {
     o.nextPageToken = "foo";
-    o.subscriptions = buildUnnamed3510();
+    o.subscriptions = buildUnnamed3528();
   }
   buildCounterListSubscriptionsResponse--;
   return o;
@@ -160,19 +160,19 @@
   buildCounterListSubscriptionsResponse++;
   if (buildCounterListSubscriptionsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3510(o.subscriptions);
+    checkUnnamed3528(o.subscriptions);
   }
   buildCounterListSubscriptionsResponse--;
 }
 
-buildUnnamed3511() {
+buildUnnamed3529() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3511(core.List<core.String> o) {
+checkUnnamed3529(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -184,7 +184,7 @@
   buildCounterListTopicSubscriptionsResponse++;
   if (buildCounterListTopicSubscriptionsResponse < 3) {
     o.nextPageToken = "foo";
-    o.subscriptions = buildUnnamed3511();
+    o.subscriptions = buildUnnamed3529();
   }
   buildCounterListTopicSubscriptionsResponse--;
   return o;
@@ -194,19 +194,19 @@
   buildCounterListTopicSubscriptionsResponse++;
   if (buildCounterListTopicSubscriptionsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3511(o.subscriptions);
+    checkUnnamed3529(o.subscriptions);
   }
   buildCounterListTopicSubscriptionsResponse--;
 }
 
-buildUnnamed3512() {
+buildUnnamed3530() {
   var o = new core.List<api.Topic>();
   o.add(buildTopic());
   o.add(buildTopic());
   return o;
 }
 
-checkUnnamed3512(core.List<api.Topic> o) {
+checkUnnamed3530(core.List<api.Topic> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTopic(o[0]);
   checkTopic(o[1]);
@@ -218,7 +218,7 @@
   buildCounterListTopicsResponse++;
   if (buildCounterListTopicsResponse < 3) {
     o.nextPageToken = "foo";
-    o.topics = buildUnnamed3512();
+    o.topics = buildUnnamed3530();
   }
   buildCounterListTopicsResponse--;
   return o;
@@ -228,19 +228,19 @@
   buildCounterListTopicsResponse++;
   if (buildCounterListTopicsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3512(o.topics);
+    checkUnnamed3530(o.topics);
   }
   buildCounterListTopicsResponse--;
 }
 
-buildUnnamed3513() {
+buildUnnamed3531() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3513(core.List<core.String> o) {
+checkUnnamed3531(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -253,7 +253,7 @@
   if (buildCounterModifyAckDeadlineRequest < 3) {
     o.ackDeadlineSeconds = 42;
     o.ackId = "foo";
-    o.ackIds = buildUnnamed3513();
+    o.ackIds = buildUnnamed3531();
   }
   buildCounterModifyAckDeadlineRequest--;
   return o;
@@ -264,7 +264,7 @@
   if (buildCounterModifyAckDeadlineRequest < 3) {
     unittest.expect(o.ackDeadlineSeconds, unittest.equals(42));
     unittest.expect(o.ackId, unittest.equals('foo'));
-    checkUnnamed3513(o.ackIds);
+    checkUnnamed3531(o.ackIds);
   }
   buildCounterModifyAckDeadlineRequest--;
 }
@@ -288,14 +288,14 @@
   buildCounterModifyPushConfigRequest--;
 }
 
-buildUnnamed3514() {
+buildUnnamed3532() {
   var o = new core.List<api.Binding>();
   o.add(buildBinding());
   o.add(buildBinding());
   return o;
 }
 
-checkUnnamed3514(core.List<api.Binding> o) {
+checkUnnamed3532(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -306,7 +306,7 @@
   var o = new api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.bindings = buildUnnamed3514();
+    o.bindings = buildUnnamed3532();
     o.etag = "foo";
     o.version = 42;
   }
@@ -317,21 +317,21 @@
 checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed3514(o.bindings);
+    checkUnnamed3532(o.bindings);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.version, unittest.equals(42));
   }
   buildCounterPolicy--;
 }
 
-buildUnnamed3515() {
+buildUnnamed3533() {
   var o = new core.List<api.PubsubMessage>();
   o.add(buildPubsubMessage());
   o.add(buildPubsubMessage());
   return o;
 }
 
-checkUnnamed3515(core.List<api.PubsubMessage> o) {
+checkUnnamed3533(core.List<api.PubsubMessage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkPubsubMessage(o[0]);
   checkPubsubMessage(o[1]);
@@ -342,7 +342,7 @@
   var o = new api.PublishRequest();
   buildCounterPublishRequest++;
   if (buildCounterPublishRequest < 3) {
-    o.messages = buildUnnamed3515();
+    o.messages = buildUnnamed3533();
   }
   buildCounterPublishRequest--;
   return o;
@@ -351,19 +351,19 @@
 checkPublishRequest(api.PublishRequest o) {
   buildCounterPublishRequest++;
   if (buildCounterPublishRequest < 3) {
-    checkUnnamed3515(o.messages);
+    checkUnnamed3533(o.messages);
   }
   buildCounterPublishRequest--;
 }
 
-buildUnnamed3516() {
+buildUnnamed3534() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3516(core.List<core.String> o) {
+checkUnnamed3534(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -374,7 +374,7 @@
   var o = new api.PublishResponse();
   buildCounterPublishResponse++;
   if (buildCounterPublishResponse < 3) {
-    o.messageIds = buildUnnamed3516();
+    o.messageIds = buildUnnamed3534();
   }
   buildCounterPublishResponse--;
   return o;
@@ -383,19 +383,19 @@
 checkPublishResponse(api.PublishResponse o) {
   buildCounterPublishResponse++;
   if (buildCounterPublishResponse < 3) {
-    checkUnnamed3516(o.messageIds);
+    checkUnnamed3534(o.messageIds);
   }
   buildCounterPublishResponse--;
 }
 
-buildUnnamed3517() {
+buildUnnamed3535() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3517(core.Map<core.String, core.String> o) {
+checkUnnamed3535(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -406,7 +406,7 @@
   var o = new api.PubsubMessage();
   buildCounterPubsubMessage++;
   if (buildCounterPubsubMessage < 3) {
-    o.attributes = buildUnnamed3517();
+    o.attributes = buildUnnamed3535();
     o.data = "foo";
     o.messageId = "foo";
     o.publishTime = "foo";
@@ -418,7 +418,7 @@
 checkPubsubMessage(api.PubsubMessage o) {
   buildCounterPubsubMessage++;
   if (buildCounterPubsubMessage < 3) {
-    checkUnnamed3517(o.attributes);
+    checkUnnamed3535(o.attributes);
     unittest.expect(o.data, unittest.equals('foo'));
     unittest.expect(o.messageId, unittest.equals('foo'));
     unittest.expect(o.publishTime, unittest.equals('foo'));
@@ -447,14 +447,14 @@
   buildCounterPullRequest--;
 }
 
-buildUnnamed3518() {
+buildUnnamed3536() {
   var o = new core.List<api.ReceivedMessage>();
   o.add(buildReceivedMessage());
   o.add(buildReceivedMessage());
   return o;
 }
 
-checkUnnamed3518(core.List<api.ReceivedMessage> o) {
+checkUnnamed3536(core.List<api.ReceivedMessage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReceivedMessage(o[0]);
   checkReceivedMessage(o[1]);
@@ -465,7 +465,7 @@
   var o = new api.PullResponse();
   buildCounterPullResponse++;
   if (buildCounterPullResponse < 3) {
-    o.receivedMessages = buildUnnamed3518();
+    o.receivedMessages = buildUnnamed3536();
   }
   buildCounterPullResponse--;
   return o;
@@ -474,19 +474,19 @@
 checkPullResponse(api.PullResponse o) {
   buildCounterPullResponse++;
   if (buildCounterPullResponse < 3) {
-    checkUnnamed3518(o.receivedMessages);
+    checkUnnamed3536(o.receivedMessages);
   }
   buildCounterPullResponse--;
 }
 
-buildUnnamed3519() {
+buildUnnamed3537() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3519(core.Map<core.String, core.String> o) {
+checkUnnamed3537(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -497,7 +497,7 @@
   var o = new api.PushConfig();
   buildCounterPushConfig++;
   if (buildCounterPushConfig < 3) {
-    o.attributes = buildUnnamed3519();
+    o.attributes = buildUnnamed3537();
     o.pushEndpoint = "foo";
   }
   buildCounterPushConfig--;
@@ -507,7 +507,7 @@
 checkPushConfig(api.PushConfig o) {
   buildCounterPushConfig++;
   if (buildCounterPushConfig < 3) {
-    checkUnnamed3519(o.attributes);
+    checkUnnamed3537(o.attributes);
     unittest.expect(o.pushEndpoint, unittest.equals('foo'));
   }
   buildCounterPushConfig--;
@@ -578,14 +578,14 @@
   buildCounterSubscription--;
 }
 
-buildUnnamed3520() {
+buildUnnamed3538() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3520(core.List<core.String> o) {
+checkUnnamed3538(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -596,7 +596,7 @@
   var o = new api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed3520();
+    o.permissions = buildUnnamed3538();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -605,19 +605,19 @@
 checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed3520(o.permissions);
+    checkUnnamed3538(o.permissions);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-buildUnnamed3521() {
+buildUnnamed3539() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3521(core.List<core.String> o) {
+checkUnnamed3539(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -628,7 +628,7 @@
   var o = new api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed3521();
+    o.permissions = buildUnnamed3539();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -637,7 +637,7 @@
 checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed3521(o.permissions);
+    checkUnnamed3539(o.permissions);
   }
   buildCounterTestIamPermissionsResponse--;
 }
@@ -837,6 +837,7 @@
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_request = buildAcknowledgeRequest();
       var arg_subscription = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AcknowledgeRequest.fromJson(json);
         checkAcknowledgeRequest(obj);
@@ -871,6 +872,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -879,7 +881,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .acknowledge(arg_request, arg_subscription)
+          .acknowledge(arg_request, arg_subscription, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -891,6 +893,7 @@
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_request = buildSubscription();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Subscription.fromJson(json);
         checkSubscription(obj);
@@ -925,6 +928,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -933,7 +937,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_name)
+          .create(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscription response) {
         checkSubscription(response);
       })));
@@ -944,6 +948,7 @@
       api.ProjectsSubscriptionsResourceApi res =
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_subscription = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -975,6 +980,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -983,7 +989,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_subscription)
+          .delete(arg_subscription, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -994,6 +1000,7 @@
       api.ProjectsSubscriptionsResourceApi res =
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_subscription = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1025,6 +1032,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1033,7 +1041,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_subscription)
+          .get(arg_subscription, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Subscription response) {
         checkSubscription(response);
       })));
@@ -1044,6 +1052,7 @@
       api.ProjectsSubscriptionsResourceApi res =
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1075,6 +1084,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1083,7 +1093,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_resource)
+          .getIamPolicy(arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1094,8 +1104,9 @@
       api.ProjectsSubscriptionsResourceApi res =
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_project = "foo";
-      var arg_pageSize = 42;
       var arg_pageToken = "foo";
+      var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1127,10 +1138,11 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
-        unittest.expect(core.int.parse(queryMap["pageSize"].first),
-            unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1139,7 +1151,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_project, pageSize: arg_pageSize, pageToken: arg_pageToken)
+          .list(arg_project,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(
               unittest.expectAsync1(((api.ListSubscriptionsResponse response) {
         checkListSubscriptionsResponse(response);
@@ -1152,6 +1167,7 @@
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_request = buildModifyAckDeadlineRequest();
       var arg_subscription = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ModifyAckDeadlineRequest.fromJson(json);
         checkModifyAckDeadlineRequest(obj);
@@ -1186,6 +1202,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1194,7 +1211,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .modifyAckDeadline(arg_request, arg_subscription)
+          .modifyAckDeadline(arg_request, arg_subscription,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1206,6 +1224,7 @@
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_request = buildModifyPushConfigRequest();
       var arg_subscription = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ModifyPushConfigRequest.fromJson(json);
         checkModifyPushConfigRequest(obj);
@@ -1240,6 +1259,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1248,7 +1268,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .modifyPushConfig(arg_request, arg_subscription)
+          .modifyPushConfig(arg_request, arg_subscription, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1260,6 +1280,7 @@
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_request = buildPullRequest();
       var arg_subscription = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.PullRequest.fromJson(json);
         checkPullRequest(obj);
@@ -1294,6 +1315,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1302,7 +1324,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .pull(arg_request, arg_subscription)
+          .pull(arg_request, arg_subscription, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PullResponse response) {
         checkPullResponse(response);
       })));
@@ -1314,6 +1336,7 @@
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -1348,6 +1371,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1356,7 +1380,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1368,6 +1392,7 @@
           new api.PubsubApi(mock).projects.subscriptions;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -1402,6 +1427,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1409,8 +1435,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -1423,6 +1451,7 @@
           new api.PubsubApi(mock).projects.topics;
       var arg_request = buildTopic();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Topic.fromJson(json);
         checkTopic(obj);
@@ -1457,6 +1486,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1465,7 +1495,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_name)
+          .create(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Topic response) {
         checkTopic(response);
       })));
@@ -1476,6 +1506,7 @@
       api.ProjectsTopicsResourceApi res =
           new api.PubsubApi(mock).projects.topics;
       var arg_topic = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1507,6 +1538,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1514,7 +1546,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_topic).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_topic, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -1524,6 +1558,7 @@
       api.ProjectsTopicsResourceApi res =
           new api.PubsubApi(mock).projects.topics;
       var arg_topic = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1555,6 +1590,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1562,7 +1598,9 @@
         var resp = convert.JSON.encode(buildTopic());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_topic).then(unittest.expectAsync1(((api.Topic response) {
+      res
+          .get(arg_topic, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Topic response) {
         checkTopic(response);
       })));
     });
@@ -1572,6 +1610,7 @@
       api.ProjectsTopicsResourceApi res =
           new api.PubsubApi(mock).projects.topics;
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1603,6 +1642,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1611,7 +1651,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_resource)
+          .getIamPolicy(arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1624,6 +1664,7 @@
       var arg_project = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1659,6 +1700,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1667,7 +1709,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_project, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_project,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListTopicsResponse response) {
         checkListTopicsResponse(response);
       })));
@@ -1679,6 +1724,7 @@
           new api.PubsubApi(mock).projects.topics;
       var arg_request = buildPublishRequest();
       var arg_topic = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.PublishRequest.fromJson(json);
         checkPublishRequest(obj);
@@ -1713,6 +1759,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1721,7 +1768,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .publish(arg_request, arg_topic)
+          .publish(arg_request, arg_topic, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.PublishResponse response) {
         checkPublishResponse(response);
       })));
@@ -1733,6 +1780,7 @@
           new api.PubsubApi(mock).projects.topics;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -1767,6 +1815,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1775,7 +1824,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1787,6 +1836,7 @@
           new api.PubsubApi(mock).projects.topics;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -1821,6 +1871,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1828,8 +1879,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -1843,6 +1896,7 @@
       var arg_topic = "foo";
       var arg_pageSize = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1878,6 +1932,7 @@
             unittest.equals(arg_pageSize));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1886,7 +1941,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_topic, pageSize: arg_pageSize, pageToken: arg_pageToken)
+          .list(arg_topic,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ListTopicSubscriptionsResponse response) {
         checkListTopicSubscriptionsResponse(response);
diff --git a/generated/googleapis_beta/test/replicapool/v1beta2_test.dart b/generated/googleapis_beta/test/replicapool/v1beta2_test.dart
index 37c9025..b2b0694 100644
--- a/generated/googleapis_beta/test/replicapool/v1beta2_test.dart
+++ b/generated/googleapis_beta/test/replicapool/v1beta2_test.dart
@@ -50,27 +50,27 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed3630() {
+buildUnnamed3648() {
   var o = new core.List<api.ReplicaPoolAutoHealingPolicy>();
   o.add(buildReplicaPoolAutoHealingPolicy());
   o.add(buildReplicaPoolAutoHealingPolicy());
   return o;
 }
 
-checkUnnamed3630(core.List<api.ReplicaPoolAutoHealingPolicy> o) {
+checkUnnamed3648(core.List<api.ReplicaPoolAutoHealingPolicy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkReplicaPoolAutoHealingPolicy(o[0]);
   checkReplicaPoolAutoHealingPolicy(o[1]);
 }
 
-buildUnnamed3631() {
+buildUnnamed3649() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3631(core.List<core.String> o) {
+checkUnnamed3649(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -81,7 +81,7 @@
   var o = new api.InstanceGroupManager();
   buildCounterInstanceGroupManager++;
   if (buildCounterInstanceGroupManager < 3) {
-    o.autoHealingPolicies = buildUnnamed3630();
+    o.autoHealingPolicies = buildUnnamed3648();
     o.baseInstanceName = "foo";
     o.creationTimestamp = "foo";
     o.currentSize = 42;
@@ -93,7 +93,7 @@
     o.kind = "foo";
     o.name = "foo";
     o.selfLink = "foo";
-    o.targetPools = buildUnnamed3631();
+    o.targetPools = buildUnnamed3649();
     o.targetSize = 42;
   }
   buildCounterInstanceGroupManager--;
@@ -103,7 +103,7 @@
 checkInstanceGroupManager(api.InstanceGroupManager o) {
   buildCounterInstanceGroupManager++;
   if (buildCounterInstanceGroupManager < 3) {
-    checkUnnamed3630(o.autoHealingPolicies);
+    checkUnnamed3648(o.autoHealingPolicies);
     unittest.expect(o.baseInstanceName, unittest.equals('foo'));
     unittest.expect(o.creationTimestamp, unittest.equals('foo'));
     unittest.expect(o.currentSize, unittest.equals(42));
@@ -115,20 +115,20 @@
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
-    checkUnnamed3631(o.targetPools);
+    checkUnnamed3649(o.targetPools);
     unittest.expect(o.targetSize, unittest.equals(42));
   }
   buildCounterInstanceGroupManager--;
 }
 
-buildUnnamed3632() {
+buildUnnamed3650() {
   var o = new core.List<api.InstanceGroupManager>();
   o.add(buildInstanceGroupManager());
   o.add(buildInstanceGroupManager());
   return o;
 }
 
-checkUnnamed3632(core.List<api.InstanceGroupManager> o) {
+checkUnnamed3650(core.List<api.InstanceGroupManager> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstanceGroupManager(o[0]);
   checkInstanceGroupManager(o[1]);
@@ -140,7 +140,7 @@
   buildCounterInstanceGroupManagerList++;
   if (buildCounterInstanceGroupManagerList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed3632();
+    o.items = buildUnnamed3650();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -153,7 +153,7 @@
   buildCounterInstanceGroupManagerList++;
   if (buildCounterInstanceGroupManagerList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed3632(o.items);
+    checkUnnamed3650(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -161,14 +161,14 @@
   buildCounterInstanceGroupManagerList--;
 }
 
-buildUnnamed3633() {
+buildUnnamed3651() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3633(core.List<core.String> o) {
+checkUnnamed3651(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -179,7 +179,7 @@
   var o = new api.InstanceGroupManagersAbandonInstancesRequest();
   buildCounterInstanceGroupManagersAbandonInstancesRequest++;
   if (buildCounterInstanceGroupManagersAbandonInstancesRequest < 3) {
-    o.instances = buildUnnamed3633();
+    o.instances = buildUnnamed3651();
   }
   buildCounterInstanceGroupManagersAbandonInstancesRequest--;
   return o;
@@ -189,19 +189,19 @@
     api.InstanceGroupManagersAbandonInstancesRequest o) {
   buildCounterInstanceGroupManagersAbandonInstancesRequest++;
   if (buildCounterInstanceGroupManagersAbandonInstancesRequest < 3) {
-    checkUnnamed3633(o.instances);
+    checkUnnamed3651(o.instances);
   }
   buildCounterInstanceGroupManagersAbandonInstancesRequest--;
 }
 
-buildUnnamed3634() {
+buildUnnamed3652() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3634(core.List<core.String> o) {
+checkUnnamed3652(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -212,7 +212,7 @@
   var o = new api.InstanceGroupManagersDeleteInstancesRequest();
   buildCounterInstanceGroupManagersDeleteInstancesRequest++;
   if (buildCounterInstanceGroupManagersDeleteInstancesRequest < 3) {
-    o.instances = buildUnnamed3634();
+    o.instances = buildUnnamed3652();
   }
   buildCounterInstanceGroupManagersDeleteInstancesRequest--;
   return o;
@@ -222,19 +222,19 @@
     api.InstanceGroupManagersDeleteInstancesRequest o) {
   buildCounterInstanceGroupManagersDeleteInstancesRequest++;
   if (buildCounterInstanceGroupManagersDeleteInstancesRequest < 3) {
-    checkUnnamed3634(o.instances);
+    checkUnnamed3652(o.instances);
   }
   buildCounterInstanceGroupManagersDeleteInstancesRequest--;
 }
 
-buildUnnamed3635() {
+buildUnnamed3653() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3635(core.List<core.String> o) {
+checkUnnamed3653(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -245,7 +245,7 @@
   var o = new api.InstanceGroupManagersRecreateInstancesRequest();
   buildCounterInstanceGroupManagersRecreateInstancesRequest++;
   if (buildCounterInstanceGroupManagersRecreateInstancesRequest < 3) {
-    o.instances = buildUnnamed3635();
+    o.instances = buildUnnamed3653();
   }
   buildCounterInstanceGroupManagersRecreateInstancesRequest--;
   return o;
@@ -255,7 +255,7 @@
     api.InstanceGroupManagersRecreateInstancesRequest o) {
   buildCounterInstanceGroupManagersRecreateInstancesRequest++;
   if (buildCounterInstanceGroupManagersRecreateInstancesRequest < 3) {
-    checkUnnamed3635(o.instances);
+    checkUnnamed3653(o.instances);
   }
   buildCounterInstanceGroupManagersRecreateInstancesRequest--;
 }
@@ -280,14 +280,14 @@
   buildCounterInstanceGroupManagersSetInstanceTemplateRequest--;
 }
 
-buildUnnamed3636() {
+buildUnnamed3654() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3636(core.List<core.String> o) {
+checkUnnamed3654(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -299,7 +299,7 @@
   buildCounterInstanceGroupManagersSetTargetPoolsRequest++;
   if (buildCounterInstanceGroupManagersSetTargetPoolsRequest < 3) {
     o.fingerprint = "foo";
-    o.targetPools = buildUnnamed3636();
+    o.targetPools = buildUnnamed3654();
   }
   buildCounterInstanceGroupManagersSetTargetPoolsRequest--;
   return o;
@@ -310,7 +310,7 @@
   buildCounterInstanceGroupManagersSetTargetPoolsRequest++;
   if (buildCounterInstanceGroupManagersSetTargetPoolsRequest < 3) {
     unittest.expect(o.fingerprint, unittest.equals('foo'));
-    checkUnnamed3636(o.targetPools);
+    checkUnnamed3654(o.targetPools);
   }
   buildCounterInstanceGroupManagersSetTargetPoolsRequest--;
 }
@@ -338,14 +338,14 @@
   buildCounterOperationErrorErrors--;
 }
 
-buildUnnamed3637() {
+buildUnnamed3655() {
   var o = new core.List<api.OperationErrorErrors>();
   o.add(buildOperationErrorErrors());
   o.add(buildOperationErrorErrors());
   return o;
 }
 
-checkUnnamed3637(core.List<api.OperationErrorErrors> o) {
+checkUnnamed3655(core.List<api.OperationErrorErrors> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationErrorErrors(o[0]);
   checkOperationErrorErrors(o[1]);
@@ -356,7 +356,7 @@
   var o = new api.OperationError();
   buildCounterOperationError++;
   if (buildCounterOperationError < 3) {
-    o.errors = buildUnnamed3637();
+    o.errors = buildUnnamed3655();
   }
   buildCounterOperationError--;
   return o;
@@ -365,7 +365,7 @@
 checkOperationError(api.OperationError o) {
   buildCounterOperationError++;
   if (buildCounterOperationError < 3) {
-    checkUnnamed3637(o.errors);
+    checkUnnamed3655(o.errors);
   }
   buildCounterOperationError--;
 }
@@ -391,14 +391,14 @@
   buildCounterOperationWarningsData--;
 }
 
-buildUnnamed3638() {
+buildUnnamed3656() {
   var o = new core.List<api.OperationWarningsData>();
   o.add(buildOperationWarningsData());
   o.add(buildOperationWarningsData());
   return o;
 }
 
-checkUnnamed3638(core.List<api.OperationWarningsData> o) {
+checkUnnamed3656(core.List<api.OperationWarningsData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationWarningsData(o[0]);
   checkOperationWarningsData(o[1]);
@@ -410,7 +410,7 @@
   buildCounterOperationWarnings++;
   if (buildCounterOperationWarnings < 3) {
     o.code = "foo";
-    o.data = buildUnnamed3638();
+    o.data = buildUnnamed3656();
     o.message = "foo";
   }
   buildCounterOperationWarnings--;
@@ -421,20 +421,20 @@
   buildCounterOperationWarnings++;
   if (buildCounterOperationWarnings < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed3638(o.data);
+    checkUnnamed3656(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterOperationWarnings--;
 }
 
-buildUnnamed3639() {
+buildUnnamed3657() {
   var o = new core.List<api.OperationWarnings>();
   o.add(buildOperationWarnings());
   o.add(buildOperationWarnings());
   return o;
 }
 
-checkUnnamed3639(core.List<api.OperationWarnings> o) {
+checkUnnamed3657(core.List<api.OperationWarnings> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationWarnings(o[0]);
   checkOperationWarnings(o[1]);
@@ -465,7 +465,7 @@
     o.targetId = "foo";
     o.targetLink = "foo";
     o.user = "foo";
-    o.warnings = buildUnnamed3639();
+    o.warnings = buildUnnamed3657();
     o.zone = "foo";
   }
   buildCounterOperation--;
@@ -495,20 +495,20 @@
     unittest.expect(o.targetId, unittest.equals('foo'));
     unittest.expect(o.targetLink, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed3639(o.warnings);
+    checkUnnamed3657(o.warnings);
     unittest.expect(o.zone, unittest.equals('foo'));
   }
   buildCounterOperation--;
 }
 
-buildUnnamed3640() {
+buildUnnamed3658() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed3640(core.List<api.Operation> o) {
+checkUnnamed3658(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -520,7 +520,7 @@
   buildCounterOperationList++;
   if (buildCounterOperationList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed3640();
+    o.items = buildUnnamed3658();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -533,7 +533,7 @@
   buildCounterOperationList++;
   if (buildCounterOperationList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed3640(o.items);
+    checkUnnamed3658(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -691,6 +691,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_instanceGroupManager = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.InstanceGroupManagersAbandonInstancesRequest.fromJson(json);
@@ -722,6 +723,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -731,7 +733,8 @@
       }), true);
       res
           .abandonInstances(
-              arg_request, arg_project, arg_zone, arg_instanceGroupManager)
+              arg_request, arg_project, arg_zone, arg_instanceGroupManager,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -744,6 +747,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_instanceGroupManager = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -771,6 +775,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -779,7 +784,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_zone, arg_instanceGroupManager)
+          .delete(arg_project, arg_zone, arg_instanceGroupManager,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -793,6 +799,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_instanceGroupManager = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.InstanceGroupManagersDeleteInstancesRequest.fromJson(json);
@@ -824,6 +831,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -833,7 +841,8 @@
       }), true);
       res
           .deleteInstances(
-              arg_request, arg_project, arg_zone, arg_instanceGroupManager)
+              arg_request, arg_project, arg_zone, arg_instanceGroupManager,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -846,6 +855,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_instanceGroupManager = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -873,6 +883,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -881,7 +892,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_instanceGroupManager)
+          .get(arg_project, arg_zone, arg_instanceGroupManager,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstanceGroupManager response) {
         checkInstanceGroupManager(response);
       })));
@@ -895,6 +907,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_size = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstanceGroupManager.fromJson(json);
         checkInstanceGroupManager(obj);
@@ -927,6 +940,7 @@
         }
         unittest.expect(
             core.int.parse(queryMap["size"].first), unittest.equals(arg_size));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -935,7 +949,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, arg_zone, arg_size)
+          .insert(arg_request, arg_project, arg_zone, arg_size,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -950,6 +965,7 @@
       var arg_filter = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -982,6 +998,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -993,7 +1010,8 @@
           .list(arg_project, arg_zone,
               filter: arg_filter,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstanceGroupManagerList response) {
         checkInstanceGroupManagerList(response);
       })));
@@ -1007,6 +1025,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_instanceGroupManager = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.InstanceGroupManagersRecreateInstancesRequest.fromJson(
@@ -1039,6 +1058,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1048,7 +1068,8 @@
       }), true);
       res
           .recreateInstances(
-              arg_request, arg_project, arg_zone, arg_instanceGroupManager)
+              arg_request, arg_project, arg_zone, arg_instanceGroupManager,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1062,6 +1083,7 @@
       var arg_zone = "foo";
       var arg_instanceGroupManager = "foo";
       var arg_size = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1091,6 +1113,7 @@
         }
         unittest.expect(
             core.int.parse(queryMap["size"].first), unittest.equals(arg_size));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1099,7 +1122,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .resize(arg_project, arg_zone, arg_instanceGroupManager, arg_size)
+          .resize(arg_project, arg_zone, arg_instanceGroupManager, arg_size,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1113,6 +1137,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_instanceGroupManager = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.InstanceGroupManagersSetInstanceTemplateRequest.fromJson(
@@ -1145,6 +1170,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1154,7 +1180,8 @@
       }), true);
       res
           .setInstanceTemplate(
-              arg_request, arg_project, arg_zone, arg_instanceGroupManager)
+              arg_request, arg_project, arg_zone, arg_instanceGroupManager,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1168,6 +1195,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_instanceGroupManager = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj =
             new api.InstanceGroupManagersSetTargetPoolsRequest.fromJson(json);
@@ -1199,6 +1227,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1208,7 +1237,8 @@
       }), true);
       res
           .setTargetPools(
-              arg_request, arg_project, arg_zone, arg_instanceGroupManager)
+              arg_request, arg_project, arg_zone, arg_instanceGroupManager,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1223,6 +1253,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_operation = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1250,6 +1281,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1258,7 +1290,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_operation)
+          .get(arg_project, arg_zone, arg_operation, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1273,6 +1305,7 @@
       var arg_filter = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1305,6 +1338,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1316,7 +1350,8 @@
           .list(arg_project, arg_zone,
               filter: arg_filter,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OperationList response) {
         checkOperationList(response);
       })));
diff --git a/generated/googleapis_beta/test/replicapoolupdater/v1beta1_test.dart b/generated/googleapis_beta/test/replicapoolupdater/v1beta1_test.dart
index 3ffb3a7..0df796f 100644
--- a/generated/googleapis_beta/test/replicapoolupdater/v1beta1_test.dart
+++ b/generated/googleapis_beta/test/replicapoolupdater/v1beta1_test.dart
@@ -73,14 +73,14 @@
   buildCounterInstanceUpdateErrorErrors--;
 }
 
-buildUnnamed3423() {
+buildUnnamed3439() {
   var o = new core.List<api.InstanceUpdateErrorErrors>();
   o.add(buildInstanceUpdateErrorErrors());
   o.add(buildInstanceUpdateErrorErrors());
   return o;
 }
 
-checkUnnamed3423(core.List<api.InstanceUpdateErrorErrors> o) {
+checkUnnamed3439(core.List<api.InstanceUpdateErrorErrors> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstanceUpdateErrorErrors(o[0]);
   checkInstanceUpdateErrorErrors(o[1]);
@@ -91,7 +91,7 @@
   var o = new api.InstanceUpdateError();
   buildCounterInstanceUpdateError++;
   if (buildCounterInstanceUpdateError < 3) {
-    o.errors = buildUnnamed3423();
+    o.errors = buildUnnamed3439();
   }
   buildCounterInstanceUpdateError--;
   return o;
@@ -100,7 +100,7 @@
 checkInstanceUpdateError(api.InstanceUpdateError o) {
   buildCounterInstanceUpdateError++;
   if (buildCounterInstanceUpdateError < 3) {
-    checkUnnamed3423(o.errors);
+    checkUnnamed3439(o.errors);
   }
   buildCounterInstanceUpdateError--;
 }
@@ -128,14 +128,14 @@
   buildCounterInstanceUpdate--;
 }
 
-buildUnnamed3424() {
+buildUnnamed3440() {
   var o = new core.List<api.InstanceUpdate>();
   o.add(buildInstanceUpdate());
   o.add(buildInstanceUpdate());
   return o;
 }
 
-checkUnnamed3424(core.List<api.InstanceUpdate> o) {
+checkUnnamed3440(core.List<api.InstanceUpdate> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstanceUpdate(o[0]);
   checkInstanceUpdate(o[1]);
@@ -146,7 +146,7 @@
   var o = new api.InstanceUpdateList();
   buildCounterInstanceUpdateList++;
   if (buildCounterInstanceUpdateList < 3) {
-    o.items = buildUnnamed3424();
+    o.items = buildUnnamed3440();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -158,7 +158,7 @@
 checkInstanceUpdateList(api.InstanceUpdateList o) {
   buildCounterInstanceUpdateList++;
   if (buildCounterInstanceUpdateList < 3) {
-    checkUnnamed3424(o.items);
+    checkUnnamed3440(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -189,14 +189,14 @@
   buildCounterOperationErrorErrors--;
 }
 
-buildUnnamed3425() {
+buildUnnamed3441() {
   var o = new core.List<api.OperationErrorErrors>();
   o.add(buildOperationErrorErrors());
   o.add(buildOperationErrorErrors());
   return o;
 }
 
-checkUnnamed3425(core.List<api.OperationErrorErrors> o) {
+checkUnnamed3441(core.List<api.OperationErrorErrors> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationErrorErrors(o[0]);
   checkOperationErrorErrors(o[1]);
@@ -207,7 +207,7 @@
   var o = new api.OperationError();
   buildCounterOperationError++;
   if (buildCounterOperationError < 3) {
-    o.errors = buildUnnamed3425();
+    o.errors = buildUnnamed3441();
   }
   buildCounterOperationError--;
   return o;
@@ -216,7 +216,7 @@
 checkOperationError(api.OperationError o) {
   buildCounterOperationError++;
   if (buildCounterOperationError < 3) {
-    checkUnnamed3425(o.errors);
+    checkUnnamed3441(o.errors);
   }
   buildCounterOperationError--;
 }
@@ -242,14 +242,14 @@
   buildCounterOperationWarningsData--;
 }
 
-buildUnnamed3426() {
+buildUnnamed3442() {
   var o = new core.List<api.OperationWarningsData>();
   o.add(buildOperationWarningsData());
   o.add(buildOperationWarningsData());
   return o;
 }
 
-checkUnnamed3426(core.List<api.OperationWarningsData> o) {
+checkUnnamed3442(core.List<api.OperationWarningsData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationWarningsData(o[0]);
   checkOperationWarningsData(o[1]);
@@ -261,7 +261,7 @@
   buildCounterOperationWarnings++;
   if (buildCounterOperationWarnings < 3) {
     o.code = "foo";
-    o.data = buildUnnamed3426();
+    o.data = buildUnnamed3442();
     o.message = "foo";
   }
   buildCounterOperationWarnings--;
@@ -272,20 +272,20 @@
   buildCounterOperationWarnings++;
   if (buildCounterOperationWarnings < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed3426(o.data);
+    checkUnnamed3442(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterOperationWarnings--;
 }
 
-buildUnnamed3427() {
+buildUnnamed3443() {
   var o = new core.List<api.OperationWarnings>();
   o.add(buildOperationWarnings());
   o.add(buildOperationWarnings());
   return o;
 }
 
-checkUnnamed3427(core.List<api.OperationWarnings> o) {
+checkUnnamed3443(core.List<api.OperationWarnings> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationWarnings(o[0]);
   checkOperationWarnings(o[1]);
@@ -316,7 +316,7 @@
     o.targetId = "foo";
     o.targetLink = "foo";
     o.user = "foo";
-    o.warnings = buildUnnamed3427();
+    o.warnings = buildUnnamed3443();
     o.zone = "foo";
   }
   buildCounterOperation--;
@@ -346,20 +346,20 @@
     unittest.expect(o.targetId, unittest.equals('foo'));
     unittest.expect(o.targetLink, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed3427(o.warnings);
+    checkUnnamed3443(o.warnings);
     unittest.expect(o.zone, unittest.equals('foo'));
   }
   buildCounterOperation--;
 }
 
-buildUnnamed3428() {
+buildUnnamed3444() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed3428(core.List<api.Operation> o) {
+checkUnnamed3444(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -371,7 +371,7 @@
   buildCounterOperationList++;
   if (buildCounterOperationList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed3428();
+    o.items = buildUnnamed3444();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -384,7 +384,7 @@
   buildCounterOperationList++;
   if (buildCounterOperationList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed3428(o.items);
+    checkUnnamed3444(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -415,14 +415,14 @@
   buildCounterRollingUpdateErrorErrors--;
 }
 
-buildUnnamed3429() {
+buildUnnamed3445() {
   var o = new core.List<api.RollingUpdateErrorErrors>();
   o.add(buildRollingUpdateErrorErrors());
   o.add(buildRollingUpdateErrorErrors());
   return o;
 }
 
-checkUnnamed3429(core.List<api.RollingUpdateErrorErrors> o) {
+checkUnnamed3445(core.List<api.RollingUpdateErrorErrors> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRollingUpdateErrorErrors(o[0]);
   checkRollingUpdateErrorErrors(o[1]);
@@ -433,7 +433,7 @@
   var o = new api.RollingUpdateError();
   buildCounterRollingUpdateError++;
   if (buildCounterRollingUpdateError < 3) {
-    o.errors = buildUnnamed3429();
+    o.errors = buildUnnamed3445();
   }
   buildCounterRollingUpdateError--;
   return o;
@@ -442,7 +442,7 @@
 checkRollingUpdateError(api.RollingUpdateError o) {
   buildCounterRollingUpdateError++;
   if (buildCounterRollingUpdateError < 3) {
-    checkUnnamed3429(o.errors);
+    checkUnnamed3445(o.errors);
   }
   buildCounterRollingUpdateError--;
 }
@@ -523,14 +523,14 @@
   buildCounterRollingUpdate--;
 }
 
-buildUnnamed3430() {
+buildUnnamed3446() {
   var o = new core.List<api.RollingUpdate>();
   o.add(buildRollingUpdate());
   o.add(buildRollingUpdate());
   return o;
 }
 
-checkUnnamed3430(core.List<api.RollingUpdate> o) {
+checkUnnamed3446(core.List<api.RollingUpdate> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRollingUpdate(o[0]);
   checkRollingUpdate(o[1]);
@@ -541,7 +541,7 @@
   var o = new api.RollingUpdateList();
   buildCounterRollingUpdateList++;
   if (buildCounterRollingUpdateList < 3) {
-    o.items = buildUnnamed3430();
+    o.items = buildUnnamed3446();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -553,7 +553,7 @@
 checkRollingUpdateList(api.RollingUpdateList o) {
   buildCounterRollingUpdateList++;
   if (buildCounterRollingUpdateList < 3) {
-    checkUnnamed3430(o.items);
+    checkUnnamed3446(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -690,6 +690,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_rollingUpdate = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -717,6 +718,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -725,7 +727,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .cancel(arg_project, arg_zone, arg_rollingUpdate)
+          .cancel(arg_project, arg_zone, arg_rollingUpdate,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -738,6 +741,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_rollingUpdate = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -765,6 +769,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -773,7 +778,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_rollingUpdate)
+          .get(arg_project, arg_zone, arg_rollingUpdate, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RollingUpdate response) {
         checkRollingUpdate(response);
       })));
@@ -786,6 +791,7 @@
       var arg_request = buildRollingUpdate();
       var arg_project = "foo";
       var arg_zone = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RollingUpdate.fromJson(json);
         checkRollingUpdate(obj);
@@ -816,6 +822,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -824,7 +831,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, arg_zone)
+          .insert(arg_request, arg_project, arg_zone, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -839,6 +846,7 @@
       var arg_filter = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -871,6 +879,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -882,7 +891,8 @@
           .list(arg_project, arg_zone,
               filter: arg_filter,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RollingUpdateList response) {
         checkRollingUpdateList(response);
       })));
@@ -898,6 +908,7 @@
       var arg_filter = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -930,6 +941,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -941,7 +953,8 @@
           .listInstanceUpdates(arg_project, arg_zone, arg_rollingUpdate,
               filter: arg_filter,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstanceUpdateList response) {
         checkInstanceUpdateList(response);
       })));
@@ -954,6 +967,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_rollingUpdate = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -981,6 +995,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -989,7 +1004,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .pause(arg_project, arg_zone, arg_rollingUpdate)
+          .pause(arg_project, arg_zone, arg_rollingUpdate, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1002,6 +1017,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_rollingUpdate = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1029,6 +1045,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1037,7 +1054,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .resume(arg_project, arg_zone, arg_rollingUpdate)
+          .resume(arg_project, arg_zone, arg_rollingUpdate,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1050,6 +1068,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_rollingUpdate = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1077,6 +1096,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1085,7 +1105,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .rollback(arg_project, arg_zone, arg_rollingUpdate)
+          .rollback(arg_project, arg_zone, arg_rollingUpdate,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1100,6 +1121,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_operation = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1127,6 +1149,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1135,7 +1158,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_operation)
+          .get(arg_project, arg_zone, arg_operation, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1150,6 +1173,7 @@
       var arg_filter = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1182,6 +1206,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1193,7 +1218,8 @@
           .list(arg_project, arg_zone,
               filter: arg_filter,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OperationList response) {
         checkOperationList(response);
       })));
diff --git a/generated/googleapis_beta/test/resourceviews/v1beta1_test.dart b/generated/googleapis_beta/test/resourceviews/v1beta1_test.dart
index 68b58d4..4b40b9d 100644
--- a/generated/googleapis_beta/test/resourceviews/v1beta1_test.dart
+++ b/generated/googleapis_beta/test/resourceviews/v1beta1_test.dart
@@ -71,14 +71,14 @@
   buildCounterLabel--;
 }
 
-buildUnnamed3564() {
+buildUnnamed3582() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3564(core.List<core.String> o) {
+checkUnnamed3582(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -89,7 +89,7 @@
   var o = new api.RegionViewsAddResourcesRequest();
   buildCounterRegionViewsAddResourcesRequest++;
   if (buildCounterRegionViewsAddResourcesRequest < 3) {
-    o.resources = buildUnnamed3564();
+    o.resources = buildUnnamed3582();
   }
   buildCounterRegionViewsAddResourcesRequest--;
   return o;
@@ -98,7 +98,7 @@
 checkRegionViewsAddResourcesRequest(api.RegionViewsAddResourcesRequest o) {
   buildCounterRegionViewsAddResourcesRequest++;
   if (buildCounterRegionViewsAddResourcesRequest < 3) {
-    checkUnnamed3564(o.resources);
+    checkUnnamed3582(o.resources);
   }
   buildCounterRegionViewsAddResourcesRequest--;
 }
@@ -122,14 +122,14 @@
   buildCounterRegionViewsInsertResponse--;
 }
 
-buildUnnamed3565() {
+buildUnnamed3583() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3565(core.List<core.String> o) {
+checkUnnamed3583(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -140,7 +140,7 @@
   var o = new api.RegionViewsListResourcesResponse();
   buildCounterRegionViewsListResourcesResponse++;
   if (buildCounterRegionViewsListResourcesResponse < 3) {
-    o.members = buildUnnamed3565();
+    o.members = buildUnnamed3583();
     o.nextPageToken = "foo";
   }
   buildCounterRegionViewsListResourcesResponse--;
@@ -150,20 +150,20 @@
 checkRegionViewsListResourcesResponse(api.RegionViewsListResourcesResponse o) {
   buildCounterRegionViewsListResourcesResponse++;
   if (buildCounterRegionViewsListResourcesResponse < 3) {
-    checkUnnamed3565(o.members);
+    checkUnnamed3583(o.members);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterRegionViewsListResourcesResponse--;
 }
 
-buildUnnamed3566() {
+buildUnnamed3584() {
   var o = new core.List<api.ResourceView>();
   o.add(buildResourceView());
   o.add(buildResourceView());
   return o;
 }
 
-checkUnnamed3566(core.List<api.ResourceView> o) {
+checkUnnamed3584(core.List<api.ResourceView> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceView(o[0]);
   checkResourceView(o[1]);
@@ -175,7 +175,7 @@
   buildCounterRegionViewsListResponse++;
   if (buildCounterRegionViewsListResponse < 3) {
     o.nextPageToken = "foo";
-    o.resourceViews = buildUnnamed3566();
+    o.resourceViews = buildUnnamed3584();
   }
   buildCounterRegionViewsListResponse--;
   return o;
@@ -185,19 +185,19 @@
   buildCounterRegionViewsListResponse++;
   if (buildCounterRegionViewsListResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3566(o.resourceViews);
+    checkUnnamed3584(o.resourceViews);
   }
   buildCounterRegionViewsListResponse--;
 }
 
-buildUnnamed3567() {
+buildUnnamed3585() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3567(core.List<core.String> o) {
+checkUnnamed3585(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -208,7 +208,7 @@
   var o = new api.RegionViewsRemoveResourcesRequest();
   buildCounterRegionViewsRemoveResourcesRequest++;
   if (buildCounterRegionViewsRemoveResourcesRequest < 3) {
-    o.resources = buildUnnamed3567();
+    o.resources = buildUnnamed3585();
   }
   buildCounterRegionViewsRemoveResourcesRequest--;
   return o;
@@ -218,32 +218,32 @@
     api.RegionViewsRemoveResourcesRequest o) {
   buildCounterRegionViewsRemoveResourcesRequest++;
   if (buildCounterRegionViewsRemoveResourcesRequest < 3) {
-    checkUnnamed3567(o.resources);
+    checkUnnamed3585(o.resources);
   }
   buildCounterRegionViewsRemoveResourcesRequest--;
 }
 
-buildUnnamed3568() {
+buildUnnamed3586() {
   var o = new core.List<api.Label>();
   o.add(buildLabel());
   o.add(buildLabel());
   return o;
 }
 
-checkUnnamed3568(core.List<api.Label> o) {
+checkUnnamed3586(core.List<api.Label> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLabel(o[0]);
   checkLabel(o[1]);
 }
 
-buildUnnamed3569() {
+buildUnnamed3587() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3569(core.List<core.String> o) {
+checkUnnamed3587(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -258,9 +258,9 @@
     o.description = "foo";
     o.id = "foo";
     o.kind = "foo";
-    o.labels = buildUnnamed3568();
+    o.labels = buildUnnamed3586();
     o.lastModified = "foo";
-    o.members = buildUnnamed3569();
+    o.members = buildUnnamed3587();
     o.name = "foo";
     o.numMembers = 42;
     o.selfLink = "foo";
@@ -276,9 +276,9 @@
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed3568(o.labels);
+    checkUnnamed3586(o.labels);
     unittest.expect(o.lastModified, unittest.equals('foo'));
-    checkUnnamed3569(o.members);
+    checkUnnamed3587(o.members);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.numMembers, unittest.equals(42));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -286,14 +286,14 @@
   buildCounterResourceView--;
 }
 
-buildUnnamed3570() {
+buildUnnamed3588() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3570(core.List<core.String> o) {
+checkUnnamed3588(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -304,7 +304,7 @@
   var o = new api.ZoneViewsAddResourcesRequest();
   buildCounterZoneViewsAddResourcesRequest++;
   if (buildCounterZoneViewsAddResourcesRequest < 3) {
-    o.resources = buildUnnamed3570();
+    o.resources = buildUnnamed3588();
   }
   buildCounterZoneViewsAddResourcesRequest--;
   return o;
@@ -313,7 +313,7 @@
 checkZoneViewsAddResourcesRequest(api.ZoneViewsAddResourcesRequest o) {
   buildCounterZoneViewsAddResourcesRequest++;
   if (buildCounterZoneViewsAddResourcesRequest < 3) {
-    checkUnnamed3570(o.resources);
+    checkUnnamed3588(o.resources);
   }
   buildCounterZoneViewsAddResourcesRequest--;
 }
@@ -337,14 +337,14 @@
   buildCounterZoneViewsInsertResponse--;
 }
 
-buildUnnamed3571() {
+buildUnnamed3589() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3571(core.List<core.String> o) {
+checkUnnamed3589(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -355,7 +355,7 @@
   var o = new api.ZoneViewsListResourcesResponse();
   buildCounterZoneViewsListResourcesResponse++;
   if (buildCounterZoneViewsListResourcesResponse < 3) {
-    o.members = buildUnnamed3571();
+    o.members = buildUnnamed3589();
     o.nextPageToken = "foo";
   }
   buildCounterZoneViewsListResourcesResponse--;
@@ -365,20 +365,20 @@
 checkZoneViewsListResourcesResponse(api.ZoneViewsListResourcesResponse o) {
   buildCounterZoneViewsListResourcesResponse++;
   if (buildCounterZoneViewsListResourcesResponse < 3) {
-    checkUnnamed3571(o.members);
+    checkUnnamed3589(o.members);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterZoneViewsListResourcesResponse--;
 }
 
-buildUnnamed3572() {
+buildUnnamed3590() {
   var o = new core.List<api.ResourceView>();
   o.add(buildResourceView());
   o.add(buildResourceView());
   return o;
 }
 
-checkUnnamed3572(core.List<api.ResourceView> o) {
+checkUnnamed3590(core.List<api.ResourceView> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceView(o[0]);
   checkResourceView(o[1]);
@@ -390,7 +390,7 @@
   buildCounterZoneViewsListResponse++;
   if (buildCounterZoneViewsListResponse < 3) {
     o.nextPageToken = "foo";
-    o.resourceViews = buildUnnamed3572();
+    o.resourceViews = buildUnnamed3590();
   }
   buildCounterZoneViewsListResponse--;
   return o;
@@ -400,19 +400,19 @@
   buildCounterZoneViewsListResponse++;
   if (buildCounterZoneViewsListResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3572(o.resourceViews);
+    checkUnnamed3590(o.resourceViews);
   }
   buildCounterZoneViewsListResponse--;
 }
 
-buildUnnamed3573() {
+buildUnnamed3591() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3573(core.List<core.String> o) {
+checkUnnamed3591(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -423,7 +423,7 @@
   var o = new api.ZoneViewsRemoveResourcesRequest();
   buildCounterZoneViewsRemoveResourcesRequest++;
   if (buildCounterZoneViewsRemoveResourcesRequest < 3) {
-    o.resources = buildUnnamed3573();
+    o.resources = buildUnnamed3591();
   }
   buildCounterZoneViewsRemoveResourcesRequest--;
   return o;
@@ -432,7 +432,7 @@
 checkZoneViewsRemoveResourcesRequest(api.ZoneViewsRemoveResourcesRequest o) {
   buildCounterZoneViewsRemoveResourcesRequest++;
   if (buildCounterZoneViewsRemoveResourcesRequest < 3) {
-    checkUnnamed3573(o.resources);
+    checkUnnamed3591(o.resources);
   }
   buildCounterZoneViewsRemoveResourcesRequest--;
 }
@@ -543,6 +543,7 @@
       var arg_projectName = "foo";
       var arg_region = "foo";
       var arg_resourceViewName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RegionViewsAddResourcesRequest.fromJson(json);
         checkRegionViewsAddResourcesRequest(obj);
@@ -573,6 +574,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -582,7 +584,8 @@
       }), true);
       res
           .addresources(
-              arg_request, arg_projectName, arg_region, arg_resourceViewName)
+              arg_request, arg_projectName, arg_region, arg_resourceViewName,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -593,6 +596,7 @@
       var arg_projectName = "foo";
       var arg_region = "foo";
       var arg_resourceViewName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -620,6 +624,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -628,7 +633,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_projectName, arg_region, arg_resourceViewName)
+          .delete(arg_projectName, arg_region, arg_resourceViewName,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -639,6 +645,7 @@
       var arg_projectName = "foo";
       var arg_region = "foo";
       var arg_resourceViewName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -666,6 +673,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -674,7 +682,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_projectName, arg_region, arg_resourceViewName)
+          .get(arg_projectName, arg_region, arg_resourceViewName,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ResourceView response) {
         checkResourceView(response);
       })));
@@ -687,6 +696,7 @@
       var arg_request = buildResourceView();
       var arg_projectName = "foo";
       var arg_region = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ResourceView.fromJson(json);
         checkResourceView(obj);
@@ -717,6 +727,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -724,8 +735,11 @@
         var resp = convert.JSON.encode(buildRegionViewsInsertResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.insert(arg_request, arg_projectName, arg_region).then(
-          unittest.expectAsync1(((api.RegionViewsInsertResponse response) {
+      res
+          .insert(arg_request, arg_projectName, arg_region,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.RegionViewsInsertResponse response) {
         checkRegionViewsInsertResponse(response);
       })));
     });
@@ -738,6 +752,7 @@
       var arg_region = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -769,6 +784,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -778,7 +794,9 @@
       }), true);
       res
           .list(arg_projectName, arg_region,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RegionViewsListResponse response) {
         checkRegionViewsListResponse(response);
       })));
@@ -793,6 +811,7 @@
       var arg_resourceViewName = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -824,6 +843,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -833,7 +853,9 @@
       }), true);
       res
           .listresources(arg_projectName, arg_region, arg_resourceViewName,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.RegionViewsListResourcesResponse response) {
         checkRegionViewsListResourcesResponse(response);
@@ -848,6 +870,7 @@
       var arg_projectName = "foo";
       var arg_region = "foo";
       var arg_resourceViewName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RegionViewsRemoveResourcesRequest.fromJson(json);
         checkRegionViewsRemoveResourcesRequest(obj);
@@ -878,6 +901,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -887,7 +911,8 @@
       }), true);
       res
           .removeresources(
-              arg_request, arg_projectName, arg_region, arg_resourceViewName)
+              arg_request, arg_projectName, arg_region, arg_resourceViewName,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
   });
@@ -900,6 +925,7 @@
       var arg_projectName = "foo";
       var arg_zone = "foo";
       var arg_resourceViewName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ZoneViewsAddResourcesRequest.fromJson(json);
         checkZoneViewsAddResourcesRequest(obj);
@@ -930,6 +956,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -939,7 +966,8 @@
       }), true);
       res
           .addresources(
-              arg_request, arg_projectName, arg_zone, arg_resourceViewName)
+              arg_request, arg_projectName, arg_zone, arg_resourceViewName,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -949,6 +977,7 @@
       var arg_projectName = "foo";
       var arg_zone = "foo";
       var arg_resourceViewName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -976,6 +1005,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -984,7 +1014,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_projectName, arg_zone, arg_resourceViewName)
+          .delete(arg_projectName, arg_zone, arg_resourceViewName,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -994,6 +1025,7 @@
       var arg_projectName = "foo";
       var arg_zone = "foo";
       var arg_resourceViewName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1021,6 +1053,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1029,7 +1062,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_projectName, arg_zone, arg_resourceViewName)
+          .get(arg_projectName, arg_zone, arg_resourceViewName,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ResourceView response) {
         checkResourceView(response);
       })));
@@ -1041,6 +1075,7 @@
       var arg_request = buildResourceView();
       var arg_projectName = "foo";
       var arg_zone = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ResourceView.fromJson(json);
         checkResourceView(obj);
@@ -1071,6 +1106,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1079,7 +1115,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_projectName, arg_zone)
+          .insert(arg_request, arg_projectName, arg_zone, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ZoneViewsInsertResponse response) {
         checkZoneViewsInsertResponse(response);
       })));
@@ -1092,6 +1128,7 @@
       var arg_zone = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1123,6 +1160,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1132,7 +1170,9 @@
       }), true);
       res
           .list(arg_projectName, arg_zone,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ZoneViewsListResponse response) {
         checkZoneViewsListResponse(response);
       })));
@@ -1146,6 +1186,7 @@
       var arg_resourceViewName = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1177,6 +1218,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1186,7 +1228,9 @@
       }), true);
       res
           .listresources(arg_projectName, arg_zone, arg_resourceViewName,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ZoneViewsListResourcesResponse response) {
         checkZoneViewsListResourcesResponse(response);
@@ -1200,6 +1244,7 @@
       var arg_projectName = "foo";
       var arg_zone = "foo";
       var arg_resourceViewName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ZoneViewsRemoveResourcesRequest.fromJson(json);
         checkZoneViewsRemoveResourcesRequest(obj);
@@ -1230,6 +1275,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1239,7 +1285,8 @@
       }), true);
       res
           .removeresources(
-              arg_request, arg_projectName, arg_zone, arg_resourceViewName)
+              arg_request, arg_projectName, arg_zone, arg_resourceViewName,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
   });
diff --git a/generated/googleapis_beta/test/resourceviews/v1beta2_test.dart b/generated/googleapis_beta/test/resourceviews/v1beta2_test.dart
index 04a7a34..abd5113 100644
--- a/generated/googleapis_beta/test/resourceviews/v1beta2_test.dart
+++ b/generated/googleapis_beta/test/resourceviews/v1beta2_test.dart
@@ -71,30 +71,30 @@
   buildCounterLabel--;
 }
 
-buildUnnamed3393() {
+buildUnnamed3409() {
   var o = new core.List<core.int>();
   o.add(42);
   o.add(42);
   return o;
 }
 
-checkUnnamed3393(core.List<core.int> o) {
+checkUnnamed3409(core.List<core.int> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals(42));
   unittest.expect(o[1], unittest.equals(42));
 }
 
-buildUnnamed3394() {
+buildUnnamed3410() {
   var o = new core.Map<core.String, core.List<core.int>>();
-  o["x"] = buildUnnamed3393();
-  o["y"] = buildUnnamed3393();
+  o["x"] = buildUnnamed3409();
+  o["y"] = buildUnnamed3409();
   return o;
 }
 
-checkUnnamed3394(core.Map<core.String, core.List<core.int>> o) {
+checkUnnamed3410(core.Map<core.String, core.List<core.int>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed3393(o["x"]);
-  checkUnnamed3393(o["y"]);
+  checkUnnamed3409(o["x"]);
+  checkUnnamed3409(o["y"]);
 }
 
 core.int buildCounterListResourceResponseItem = 0;
@@ -102,7 +102,7 @@
   var o = new api.ListResourceResponseItem();
   buildCounterListResourceResponseItem++;
   if (buildCounterListResourceResponseItem < 3) {
-    o.endpoints = buildUnnamed3394();
+    o.endpoints = buildUnnamed3410();
     o.resource = "foo";
   }
   buildCounterListResourceResponseItem--;
@@ -112,7 +112,7 @@
 checkListResourceResponseItem(api.ListResourceResponseItem o) {
   buildCounterListResourceResponseItem++;
   if (buildCounterListResourceResponseItem < 3) {
-    checkUnnamed3394(o.endpoints);
+    checkUnnamed3410(o.endpoints);
     unittest.expect(o.resource, unittest.equals('foo'));
   }
   buildCounterListResourceResponseItem--;
@@ -141,14 +141,14 @@
   buildCounterOperationErrorErrors--;
 }
 
-buildUnnamed3395() {
+buildUnnamed3411() {
   var o = new core.List<api.OperationErrorErrors>();
   o.add(buildOperationErrorErrors());
   o.add(buildOperationErrorErrors());
   return o;
 }
 
-checkUnnamed3395(core.List<api.OperationErrorErrors> o) {
+checkUnnamed3411(core.List<api.OperationErrorErrors> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationErrorErrors(o[0]);
   checkOperationErrorErrors(o[1]);
@@ -159,7 +159,7 @@
   var o = new api.OperationError();
   buildCounterOperationError++;
   if (buildCounterOperationError < 3) {
-    o.errors = buildUnnamed3395();
+    o.errors = buildUnnamed3411();
   }
   buildCounterOperationError--;
   return o;
@@ -168,7 +168,7 @@
 checkOperationError(api.OperationError o) {
   buildCounterOperationError++;
   if (buildCounterOperationError < 3) {
-    checkUnnamed3395(o.errors);
+    checkUnnamed3411(o.errors);
   }
   buildCounterOperationError--;
 }
@@ -194,14 +194,14 @@
   buildCounterOperationWarningsData--;
 }
 
-buildUnnamed3396() {
+buildUnnamed3412() {
   var o = new core.List<api.OperationWarningsData>();
   o.add(buildOperationWarningsData());
   o.add(buildOperationWarningsData());
   return o;
 }
 
-checkUnnamed3396(core.List<api.OperationWarningsData> o) {
+checkUnnamed3412(core.List<api.OperationWarningsData> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationWarningsData(o[0]);
   checkOperationWarningsData(o[1]);
@@ -213,7 +213,7 @@
   buildCounterOperationWarnings++;
   if (buildCounterOperationWarnings < 3) {
     o.code = "foo";
-    o.data = buildUnnamed3396();
+    o.data = buildUnnamed3412();
     o.message = "foo";
   }
   buildCounterOperationWarnings--;
@@ -224,20 +224,20 @@
   buildCounterOperationWarnings++;
   if (buildCounterOperationWarnings < 3) {
     unittest.expect(o.code, unittest.equals('foo'));
-    checkUnnamed3396(o.data);
+    checkUnnamed3412(o.data);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterOperationWarnings--;
 }
 
-buildUnnamed3397() {
+buildUnnamed3413() {
   var o = new core.List<api.OperationWarnings>();
   o.add(buildOperationWarnings());
   o.add(buildOperationWarnings());
   return o;
 }
 
-checkUnnamed3397(core.List<api.OperationWarnings> o) {
+checkUnnamed3413(core.List<api.OperationWarnings> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationWarnings(o[0]);
   checkOperationWarnings(o[1]);
@@ -268,7 +268,7 @@
     o.targetId = "foo";
     o.targetLink = "foo";
     o.user = "foo";
-    o.warnings = buildUnnamed3397();
+    o.warnings = buildUnnamed3413();
     o.zone = "foo";
   }
   buildCounterOperation--;
@@ -298,20 +298,20 @@
     unittest.expect(o.targetId, unittest.equals('foo'));
     unittest.expect(o.targetLink, unittest.equals('foo'));
     unittest.expect(o.user, unittest.equals('foo'));
-    checkUnnamed3397(o.warnings);
+    checkUnnamed3413(o.warnings);
     unittest.expect(o.zone, unittest.equals('foo'));
   }
   buildCounterOperation--;
 }
 
-buildUnnamed3398() {
+buildUnnamed3414() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed3398(core.List<api.Operation> o) {
+checkUnnamed3414(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -323,7 +323,7 @@
   buildCounterOperationList++;
   if (buildCounterOperationList < 3) {
     o.id = "foo";
-    o.items = buildUnnamed3398();
+    o.items = buildUnnamed3414();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -336,7 +336,7 @@
   buildCounterOperationList++;
   if (buildCounterOperationList < 3) {
     unittest.expect(o.id, unittest.equals('foo'));
-    checkUnnamed3398(o.items);
+    checkUnnamed3414(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -344,40 +344,40 @@
   buildCounterOperationList--;
 }
 
-buildUnnamed3399() {
+buildUnnamed3415() {
   var o = new core.List<api.ServiceEndpoint>();
   o.add(buildServiceEndpoint());
   o.add(buildServiceEndpoint());
   return o;
 }
 
-checkUnnamed3399(core.List<api.ServiceEndpoint> o) {
+checkUnnamed3415(core.List<api.ServiceEndpoint> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkServiceEndpoint(o[0]);
   checkServiceEndpoint(o[1]);
 }
 
-buildUnnamed3400() {
+buildUnnamed3416() {
   var o = new core.List<api.Label>();
   o.add(buildLabel());
   o.add(buildLabel());
   return o;
 }
 
-checkUnnamed3400(core.List<api.Label> o) {
+checkUnnamed3416(core.List<api.Label> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLabel(o[0]);
   checkLabel(o[1]);
 }
 
-buildUnnamed3401() {
+buildUnnamed3417() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3401(core.List<core.String> o) {
+checkUnnamed3417(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -390,14 +390,14 @@
   if (buildCounterResourceView < 3) {
     o.creationTimestamp = "foo";
     o.description = "foo";
-    o.endpoints = buildUnnamed3399();
+    o.endpoints = buildUnnamed3415();
     o.fingerprint = "foo";
     o.id = "foo";
     o.kind = "foo";
-    o.labels = buildUnnamed3400();
+    o.labels = buildUnnamed3416();
     o.name = "foo";
     o.network = "foo";
-    o.resources = buildUnnamed3401();
+    o.resources = buildUnnamed3417();
     o.selfLink = "foo";
     o.size = 42;
   }
@@ -410,14 +410,14 @@
   if (buildCounterResourceView < 3) {
     unittest.expect(o.creationTimestamp, unittest.equals('foo'));
     unittest.expect(o.description, unittest.equals('foo'));
-    checkUnnamed3399(o.endpoints);
+    checkUnnamed3415(o.endpoints);
     unittest.expect(o.fingerprint, unittest.equals('foo'));
     unittest.expect(o.id, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed3400(o.labels);
+    checkUnnamed3416(o.labels);
     unittest.expect(o.name, unittest.equals('foo'));
     unittest.expect(o.network, unittest.equals('foo'));
-    checkUnnamed3401(o.resources);
+    checkUnnamed3417(o.resources);
     unittest.expect(o.selfLink, unittest.equals('foo'));
     unittest.expect(o.size, unittest.equals(42));
   }
@@ -445,14 +445,14 @@
   buildCounterServiceEndpoint--;
 }
 
-buildUnnamed3402() {
+buildUnnamed3418() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3402(core.List<core.String> o) {
+checkUnnamed3418(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -463,7 +463,7 @@
   var o = new api.ZoneViewsAddResourcesRequest();
   buildCounterZoneViewsAddResourcesRequest++;
   if (buildCounterZoneViewsAddResourcesRequest < 3) {
-    o.resources = buildUnnamed3402();
+    o.resources = buildUnnamed3418();
   }
   buildCounterZoneViewsAddResourcesRequest--;
   return o;
@@ -472,19 +472,19 @@
 checkZoneViewsAddResourcesRequest(api.ZoneViewsAddResourcesRequest o) {
   buildCounterZoneViewsAddResourcesRequest++;
   if (buildCounterZoneViewsAddResourcesRequest < 3) {
-    checkUnnamed3402(o.resources);
+    checkUnnamed3418(o.resources);
   }
   buildCounterZoneViewsAddResourcesRequest--;
 }
 
-buildUnnamed3403() {
+buildUnnamed3419() {
   var o = new core.List<api.ServiceEndpoint>();
   o.add(buildServiceEndpoint());
   o.add(buildServiceEndpoint());
   return o;
 }
 
-checkUnnamed3403(core.List<api.ServiceEndpoint> o) {
+checkUnnamed3419(core.List<api.ServiceEndpoint> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkServiceEndpoint(o[0]);
   checkServiceEndpoint(o[1]);
@@ -495,7 +495,7 @@
   var o = new api.ZoneViewsGetServiceResponse();
   buildCounterZoneViewsGetServiceResponse++;
   if (buildCounterZoneViewsGetServiceResponse < 3) {
-    o.endpoints = buildUnnamed3403();
+    o.endpoints = buildUnnamed3419();
     o.fingerprint = "foo";
   }
   buildCounterZoneViewsGetServiceResponse--;
@@ -505,20 +505,20 @@
 checkZoneViewsGetServiceResponse(api.ZoneViewsGetServiceResponse o) {
   buildCounterZoneViewsGetServiceResponse++;
   if (buildCounterZoneViewsGetServiceResponse < 3) {
-    checkUnnamed3403(o.endpoints);
+    checkUnnamed3419(o.endpoints);
     unittest.expect(o.fingerprint, unittest.equals('foo'));
   }
   buildCounterZoneViewsGetServiceResponse--;
 }
 
-buildUnnamed3404() {
+buildUnnamed3420() {
   var o = new core.List<api.ResourceView>();
   o.add(buildResourceView());
   o.add(buildResourceView());
   return o;
 }
 
-checkUnnamed3404(core.List<api.ResourceView> o) {
+checkUnnamed3420(core.List<api.ResourceView> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceView(o[0]);
   checkResourceView(o[1]);
@@ -529,7 +529,7 @@
   var o = new api.ZoneViewsList();
   buildCounterZoneViewsList++;
   if (buildCounterZoneViewsList < 3) {
-    o.items = buildUnnamed3404();
+    o.items = buildUnnamed3420();
     o.kind = "foo";
     o.nextPageToken = "foo";
     o.selfLink = "foo";
@@ -541,7 +541,7 @@
 checkZoneViewsList(api.ZoneViewsList o) {
   buildCounterZoneViewsList++;
   if (buildCounterZoneViewsList < 3) {
-    checkUnnamed3404(o.items);
+    checkUnnamed3420(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
     unittest.expect(o.selfLink, unittest.equals('foo'));
@@ -549,14 +549,14 @@
   buildCounterZoneViewsList--;
 }
 
-buildUnnamed3405() {
+buildUnnamed3421() {
   var o = new core.List<api.ListResourceResponseItem>();
   o.add(buildListResourceResponseItem());
   o.add(buildListResourceResponseItem());
   return o;
 }
 
-checkUnnamed3405(core.List<api.ListResourceResponseItem> o) {
+checkUnnamed3421(core.List<api.ListResourceResponseItem> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkListResourceResponseItem(o[0]);
   checkListResourceResponseItem(o[1]);
@@ -567,7 +567,7 @@
   var o = new api.ZoneViewsListResourcesResponse();
   buildCounterZoneViewsListResourcesResponse++;
   if (buildCounterZoneViewsListResourcesResponse < 3) {
-    o.items = buildUnnamed3405();
+    o.items = buildUnnamed3421();
     o.network = "foo";
     o.nextPageToken = "foo";
   }
@@ -578,21 +578,21 @@
 checkZoneViewsListResourcesResponse(api.ZoneViewsListResourcesResponse o) {
   buildCounterZoneViewsListResourcesResponse++;
   if (buildCounterZoneViewsListResourcesResponse < 3) {
-    checkUnnamed3405(o.items);
+    checkUnnamed3421(o.items);
     unittest.expect(o.network, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterZoneViewsListResourcesResponse--;
 }
 
-buildUnnamed3406() {
+buildUnnamed3422() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3406(core.List<core.String> o) {
+checkUnnamed3422(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -603,7 +603,7 @@
   var o = new api.ZoneViewsRemoveResourcesRequest();
   buildCounterZoneViewsRemoveResourcesRequest++;
   if (buildCounterZoneViewsRemoveResourcesRequest < 3) {
-    o.resources = buildUnnamed3406();
+    o.resources = buildUnnamed3422();
   }
   buildCounterZoneViewsRemoveResourcesRequest--;
   return o;
@@ -612,19 +612,19 @@
 checkZoneViewsRemoveResourcesRequest(api.ZoneViewsRemoveResourcesRequest o) {
   buildCounterZoneViewsRemoveResourcesRequest++;
   if (buildCounterZoneViewsRemoveResourcesRequest < 3) {
-    checkUnnamed3406(o.resources);
+    checkUnnamed3422(o.resources);
   }
   buildCounterZoneViewsRemoveResourcesRequest--;
 }
 
-buildUnnamed3407() {
+buildUnnamed3423() {
   var o = new core.List<api.ServiceEndpoint>();
   o.add(buildServiceEndpoint());
   o.add(buildServiceEndpoint());
   return o;
 }
 
-checkUnnamed3407(core.List<api.ServiceEndpoint> o) {
+checkUnnamed3423(core.List<api.ServiceEndpoint> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkServiceEndpoint(o[0]);
   checkServiceEndpoint(o[1]);
@@ -635,7 +635,7 @@
   var o = new api.ZoneViewsSetServiceRequest();
   buildCounterZoneViewsSetServiceRequest++;
   if (buildCounterZoneViewsSetServiceRequest < 3) {
-    o.endpoints = buildUnnamed3407();
+    o.endpoints = buildUnnamed3423();
     o.fingerprint = "foo";
     o.resourceName = "foo";
   }
@@ -646,7 +646,7 @@
 checkZoneViewsSetServiceRequest(api.ZoneViewsSetServiceRequest o) {
   buildCounterZoneViewsSetServiceRequest++;
   if (buildCounterZoneViewsSetServiceRequest < 3) {
-    checkUnnamed3407(o.endpoints);
+    checkUnnamed3423(o.endpoints);
     unittest.expect(o.fingerprint, unittest.equals('foo'));
     unittest.expect(o.resourceName, unittest.equals('foo'));
   }
@@ -790,6 +790,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_operation = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -817,6 +818,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -825,7 +827,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_operation)
+          .get(arg_project, arg_zone, arg_operation, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -840,6 +842,7 @@
       var arg_filter = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -872,6 +875,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -883,7 +887,8 @@
           .list(arg_project, arg_zone,
               filter: arg_filter,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OperationList response) {
         checkOperationList(response);
       })));
@@ -898,6 +903,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_resourceView = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ZoneViewsAddResourcesRequest.fromJson(json);
         checkZoneViewsAddResourcesRequest(obj);
@@ -928,6 +934,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -936,7 +943,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .addResources(arg_request, arg_project, arg_zone, arg_resourceView)
+          .addResources(arg_request, arg_project, arg_zone, arg_resourceView,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -948,6 +956,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_resourceView = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -975,6 +984,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -983,7 +993,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_zone, arg_resourceView)
+          .delete(arg_project, arg_zone, arg_resourceView, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -995,6 +1005,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_resourceView = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1022,6 +1033,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1030,7 +1042,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_zone, arg_resourceView)
+          .get(arg_project, arg_zone, arg_resourceView, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ResourceView response) {
         checkResourceView(response);
       })));
@@ -1043,6 +1055,7 @@
       var arg_zone = "foo";
       var arg_resourceView = "foo";
       var arg_resourceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1072,6 +1085,7 @@
         }
         unittest.expect(
             queryMap["resourceName"].first, unittest.equals(arg_resourceName));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1081,7 +1095,7 @@
       }), true);
       res
           .getService(arg_project, arg_zone, arg_resourceView,
-              resourceName: arg_resourceName)
+              resourceName: arg_resourceName, $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ZoneViewsGetServiceResponse response) {
         checkZoneViewsGetServiceResponse(response);
@@ -1094,6 +1108,7 @@
       var arg_request = buildResourceView();
       var arg_project = "foo";
       var arg_zone = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ResourceView.fromJson(json);
         checkResourceView(obj);
@@ -1124,6 +1139,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1132,7 +1148,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, arg_zone)
+          .insert(arg_request, arg_project, arg_zone, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1145,6 +1161,7 @@
       var arg_zone = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1176,6 +1193,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1185,7 +1203,9 @@
       }), true);
       res
           .list(arg_project, arg_zone,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ZoneViewsList response) {
         checkZoneViewsList(response);
       })));
@@ -1202,6 +1222,7 @@
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
       var arg_serviceName = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1238,6 +1259,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(
             queryMap["serviceName"].first, unittest.equals(arg_serviceName));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1251,7 +1273,8 @@
               listState: arg_listState,
               maxResults: arg_maxResults,
               pageToken: arg_pageToken,
-              serviceName: arg_serviceName)
+              serviceName: arg_serviceName,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.ZoneViewsListResourcesResponse response) {
         checkZoneViewsListResourcesResponse(response);
@@ -1265,6 +1288,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_resourceView = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ZoneViewsRemoveResourcesRequest.fromJson(json);
         checkZoneViewsRemoveResourcesRequest(obj);
@@ -1295,6 +1319,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1303,7 +1328,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .removeResources(arg_request, arg_project, arg_zone, arg_resourceView)
+          .removeResources(arg_request, arg_project, arg_zone, arg_resourceView,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1316,6 +1342,7 @@
       var arg_project = "foo";
       var arg_zone = "foo";
       var arg_resourceView = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.ZoneViewsSetServiceRequest.fromJson(json);
         checkZoneViewsSetServiceRequest(obj);
@@ -1346,6 +1373,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1354,7 +1382,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setService(arg_request, arg_project, arg_zone, arg_resourceView)
+          .setService(arg_request, arg_project, arg_zone, arg_resourceView,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
diff --git a/generated/googleapis_beta/test/runtimeconfig/v1beta1_test.dart b/generated/googleapis_beta/test/runtimeconfig/v1beta1_test.dart
index 5bcb408..cf5434a 100644
--- a/generated/googleapis_beta/test/runtimeconfig/v1beta1_test.dart
+++ b/generated/googleapis_beta/test/runtimeconfig/v1beta1_test.dart
@@ -50,14 +50,14 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed3738() {
+buildUnnamed3756() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3738(core.List<core.String> o) {
+checkUnnamed3756(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -68,7 +68,7 @@
   var o = new api.Binding();
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    o.members = buildUnnamed3738();
+    o.members = buildUnnamed3756();
     o.role = "foo";
   }
   buildCounterBinding--;
@@ -78,7 +78,7 @@
 checkBinding(api.Binding o) {
   buildCounterBinding++;
   if (buildCounterBinding < 3) {
-    checkUnnamed3738(o.members);
+    checkUnnamed3756(o.members);
     unittest.expect(o.role, unittest.equals('foo'));
   }
   buildCounterBinding--;
@@ -139,14 +139,14 @@
   buildCounterEndCondition--;
 }
 
-buildUnnamed3739() {
+buildUnnamed3757() {
   var o = new core.List<api.RuntimeConfig>();
   o.add(buildRuntimeConfig());
   o.add(buildRuntimeConfig());
   return o;
 }
 
-checkUnnamed3739(core.List<api.RuntimeConfig> o) {
+checkUnnamed3757(core.List<api.RuntimeConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRuntimeConfig(o[0]);
   checkRuntimeConfig(o[1]);
@@ -157,7 +157,7 @@
   var o = new api.ListConfigsResponse();
   buildCounterListConfigsResponse++;
   if (buildCounterListConfigsResponse < 3) {
-    o.configs = buildUnnamed3739();
+    o.configs = buildUnnamed3757();
     o.nextPageToken = "foo";
   }
   buildCounterListConfigsResponse--;
@@ -167,20 +167,20 @@
 checkListConfigsResponse(api.ListConfigsResponse o) {
   buildCounterListConfigsResponse++;
   if (buildCounterListConfigsResponse < 3) {
-    checkUnnamed3739(o.configs);
+    checkUnnamed3757(o.configs);
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
   buildCounterListConfigsResponse--;
 }
 
-buildUnnamed3740() {
+buildUnnamed3758() {
   var o = new core.List<api.Variable>();
   o.add(buildVariable());
   o.add(buildVariable());
   return o;
 }
 
-checkUnnamed3740(core.List<api.Variable> o) {
+checkUnnamed3758(core.List<api.Variable> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVariable(o[0]);
   checkVariable(o[1]);
@@ -192,7 +192,7 @@
   buildCounterListVariablesResponse++;
   if (buildCounterListVariablesResponse < 3) {
     o.nextPageToken = "foo";
-    o.variables = buildUnnamed3740();
+    o.variables = buildUnnamed3758();
   }
   buildCounterListVariablesResponse--;
   return o;
@@ -202,19 +202,19 @@
   buildCounterListVariablesResponse++;
   if (buildCounterListVariablesResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3740(o.variables);
+    checkUnnamed3758(o.variables);
   }
   buildCounterListVariablesResponse--;
 }
 
-buildUnnamed3741() {
+buildUnnamed3759() {
   var o = new core.List<api.Waiter>();
   o.add(buildWaiter());
   o.add(buildWaiter());
   return o;
 }
 
-checkUnnamed3741(core.List<api.Waiter> o) {
+checkUnnamed3759(core.List<api.Waiter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWaiter(o[0]);
   checkWaiter(o[1]);
@@ -226,7 +226,7 @@
   buildCounterListWaitersResponse++;
   if (buildCounterListWaitersResponse < 3) {
     o.nextPageToken = "foo";
-    o.waiters = buildUnnamed3741();
+    o.waiters = buildUnnamed3759();
   }
   buildCounterListWaitersResponse--;
   return o;
@@ -236,12 +236,12 @@
   buildCounterListWaitersResponse++;
   if (buildCounterListWaitersResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3741(o.waiters);
+    checkUnnamed3759(o.waiters);
   }
   buildCounterListWaitersResponse--;
 }
 
-buildUnnamed3742() {
+buildUnnamed3760() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -256,7 +256,7 @@
   return o;
 }
 
-checkUnnamed3742(core.Map<core.String, core.Object> o) {
+checkUnnamed3760(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -270,7 +270,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3743() {
+buildUnnamed3761() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -285,7 +285,7 @@
   return o;
 }
 
-checkUnnamed3743(core.Map<core.String, core.Object> o) {
+checkUnnamed3761(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -306,9 +306,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed3742();
+    o.metadata = buildUnnamed3760();
     o.name = "foo";
-    o.response = buildUnnamed3743();
+    o.response = buildUnnamed3761();
   }
   buildCounterOperation--;
   return o;
@@ -319,21 +319,21 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed3742(o.metadata);
+    checkUnnamed3760(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3743(o.response);
+    checkUnnamed3761(o.response);
   }
   buildCounterOperation--;
 }
 
-buildUnnamed3744() {
+buildUnnamed3762() {
   var o = new core.List<api.Binding>();
   o.add(buildBinding());
   o.add(buildBinding());
   return o;
 }
 
-checkUnnamed3744(core.List<api.Binding> o) {
+checkUnnamed3762(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -344,7 +344,7 @@
   var o = new api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.bindings = buildUnnamed3744();
+    o.bindings = buildUnnamed3762();
     o.etag = "foo";
     o.version = 42;
   }
@@ -355,7 +355,7 @@
 checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed3744(o.bindings);
+    checkUnnamed3762(o.bindings);
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.version, unittest.equals(42));
   }
@@ -402,7 +402,7 @@
   buildCounterSetIamPolicyRequest--;
 }
 
-buildUnnamed3745() {
+buildUnnamed3763() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -417,7 +417,7 @@
   return o;
 }
 
-checkUnnamed3745(core.Map<core.String, core.Object> o) {
+checkUnnamed3763(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -431,17 +431,17 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3746() {
+buildUnnamed3764() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed3745());
-  o.add(buildUnnamed3745());
+  o.add(buildUnnamed3763());
+  o.add(buildUnnamed3763());
   return o;
 }
 
-checkUnnamed3746(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed3764(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed3745(o[0]);
-  checkUnnamed3745(o[1]);
+  checkUnnamed3763(o[0]);
+  checkUnnamed3763(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -450,7 +450,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed3746();
+    o.details = buildUnnamed3764();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -461,20 +461,20 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed3746(o.details);
+    checkUnnamed3764(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
 }
 
-buildUnnamed3747() {
+buildUnnamed3765() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3747(core.List<core.String> o) {
+checkUnnamed3765(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -485,7 +485,7 @@
   var o = new api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed3747();
+    o.permissions = buildUnnamed3765();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -494,19 +494,19 @@
 checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed3747(o.permissions);
+    checkUnnamed3765(o.permissions);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-buildUnnamed3748() {
+buildUnnamed3766() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3748(core.List<core.String> o) {
+checkUnnamed3766(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -517,7 +517,7 @@
   var o = new api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed3748();
+    o.permissions = buildUnnamed3766();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -526,7 +526,7 @@
 checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed3748(o.permissions);
+    checkUnnamed3766(o.permissions);
   }
   buildCounterTestIamPermissionsResponse--;
 }
@@ -753,6 +753,7 @@
       var arg_request = buildRuntimeConfig();
       var arg_parent = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RuntimeConfig.fromJson(json);
         checkRuntimeConfig(obj);
@@ -789,6 +790,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -797,7 +799,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent, requestId: arg_requestId)
+          .create(arg_request, arg_parent,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RuntimeConfig response) {
         checkRuntimeConfig(response);
       })));
@@ -808,6 +811,7 @@
       api.ProjectsConfigsResourceApi res =
           new api.RuntimeconfigApi(mock).projects.configs;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -839,6 +843,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -846,7 +851,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -856,6 +863,7 @@
       api.ProjectsConfigsResourceApi res =
           new api.RuntimeconfigApi(mock).projects.configs;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -887,6 +895,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -895,7 +904,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_name)
+          .get(arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RuntimeConfig response) {
         checkRuntimeConfig(response);
       })));
@@ -906,6 +915,7 @@
       api.ProjectsConfigsResourceApi res =
           new api.RuntimeconfigApi(mock).projects.configs;
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -937,6 +947,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -945,7 +956,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .getIamPolicy(arg_resource)
+          .getIamPolicy(arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -958,6 +969,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -993,6 +1005,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1001,7 +1014,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListConfigsResponse response) {
         checkListConfigsResponse(response);
       })));
@@ -1013,6 +1029,7 @@
           new api.RuntimeconfigApi(mock).projects.configs;
       var arg_request = buildSetIamPolicyRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SetIamPolicyRequest.fromJson(json);
         checkSetIamPolicyRequest(obj);
@@ -1047,6 +1064,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1055,7 +1073,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .setIamPolicy(arg_request, arg_resource)
+          .setIamPolicy(arg_request, arg_resource, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Policy response) {
         checkPolicy(response);
       })));
@@ -1067,6 +1085,7 @@
           new api.RuntimeconfigApi(mock).projects.configs;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -1101,6 +1120,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1108,8 +1128,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -1120,6 +1142,7 @@
           new api.RuntimeconfigApi(mock).projects.configs;
       var arg_request = buildRuntimeConfig();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.RuntimeConfig.fromJson(json);
         checkRuntimeConfig(obj);
@@ -1154,6 +1177,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1162,7 +1186,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_name)
+          .update(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.RuntimeConfig response) {
         checkRuntimeConfig(response);
       })));
@@ -1175,6 +1199,7 @@
       api.ProjectsConfigsOperationsResourceApi res =
           new api.RuntimeconfigApi(mock).projects.configs.operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1206,6 +1231,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1213,7 +1239,9 @@
         var resp = convert.JSON.encode(buildOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Operation response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
     });
@@ -1224,6 +1252,7 @@
           new api.RuntimeconfigApi(mock).projects.configs.operations;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -1258,6 +1287,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1265,8 +1295,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -1280,6 +1312,7 @@
       var arg_request = buildVariable();
       var arg_parent = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Variable.fromJson(json);
         checkVariable(obj);
@@ -1316,6 +1349,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1324,7 +1358,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent, requestId: arg_requestId)
+          .create(arg_request, arg_parent,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Variable response) {
         checkVariable(response);
       })));
@@ -1336,6 +1371,7 @@
           new api.RuntimeconfigApi(mock).projects.configs.variables;
       var arg_name = "foo";
       var arg_recursive = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1369,6 +1405,7 @@
         }
         unittest.expect(
             queryMap["recursive"].first, unittest.equals("$arg_recursive"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1377,7 +1414,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_name, recursive: arg_recursive)
+          .delete(arg_name, recursive: arg_recursive, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
@@ -1388,6 +1425,7 @@
       api.ProjectsConfigsVariablesResourceApi res =
           new api.RuntimeconfigApi(mock).projects.configs.variables;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1419,6 +1457,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1426,7 +1465,9 @@
         var resp = convert.JSON.encode(buildVariable());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Variable response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Variable response) {
         checkVariable(response);
       })));
     });
@@ -1440,6 +1481,7 @@
       var arg_returnValues = true;
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1478,6 +1520,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1490,7 +1533,8 @@
               filter: arg_filter,
               returnValues: arg_returnValues,
               pageToken: arg_pageToken,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListVariablesResponse response) {
         checkListVariablesResponse(response);
       })));
@@ -1502,6 +1546,7 @@
           new api.RuntimeconfigApi(mock).projects.configs.variables;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -1536,6 +1581,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1543,8 +1589,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
@@ -1555,6 +1603,7 @@
           new api.RuntimeconfigApi(mock).projects.configs.variables;
       var arg_request = buildVariable();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Variable.fromJson(json);
         checkVariable(obj);
@@ -1589,6 +1638,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1597,7 +1647,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_name)
+          .update(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Variable response) {
         checkVariable(response);
       })));
@@ -1609,6 +1659,7 @@
           new api.RuntimeconfigApi(mock).projects.configs.variables;
       var arg_request = buildWatchVariableRequest();
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.WatchVariableRequest.fromJson(json);
         checkWatchVariableRequest(obj);
@@ -1643,6 +1694,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1651,7 +1703,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .watch(arg_request, arg_name)
+          .watch(arg_request, arg_name, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Variable response) {
         checkVariable(response);
       })));
@@ -1666,6 +1718,7 @@
       var arg_request = buildWaiter();
       var arg_parent = "foo";
       var arg_requestId = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Waiter.fromJson(json);
         checkWaiter(obj);
@@ -1702,6 +1755,7 @@
         }
         unittest.expect(
             queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1710,7 +1764,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .create(arg_request, arg_parent, requestId: arg_requestId)
+          .create(arg_request, arg_parent,
+              requestId: arg_requestId, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -1721,6 +1776,7 @@
       api.ProjectsConfigsWaitersResourceApi res =
           new api.RuntimeconfigApi(mock).projects.configs.waiters;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1752,6 +1808,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1759,7 +1816,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -1769,6 +1828,7 @@
       api.ProjectsConfigsWaitersResourceApi res =
           new api.RuntimeconfigApi(mock).projects.configs.waiters;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1800,6 +1860,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1807,7 +1868,9 @@
         var resp = convert.JSON.encode(buildWaiter());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Waiter response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Waiter response) {
         checkWaiter(response);
       })));
     });
@@ -1819,6 +1882,7 @@
       var arg_parent = "foo";
       var arg_pageToken = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1854,6 +1918,7 @@
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1862,7 +1927,10 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_parent, pageToken: arg_pageToken, pageSize: arg_pageSize)
+          .list(arg_parent,
+              pageToken: arg_pageToken,
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListWaitersResponse response) {
         checkListWaitersResponse(response);
       })));
@@ -1874,6 +1942,7 @@
           new api.RuntimeconfigApi(mock).projects.configs.waiters;
       var arg_request = buildTestIamPermissionsRequest();
       var arg_resource = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.TestIamPermissionsRequest.fromJson(json);
         checkTestIamPermissionsRequest(obj);
@@ -1908,6 +1977,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1915,8 +1985,10 @@
         var resp = convert.JSON.encode(buildTestIamPermissionsResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.testIamPermissions(arg_request, arg_resource).then(
-          unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
+      res
+          .testIamPermissions(arg_request, arg_resource, $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.TestIamPermissionsResponse response) {
         checkTestIamPermissionsResponse(response);
       })));
     });
diff --git a/generated/googleapis_beta/test/speech/v1beta1_test.dart b/generated/googleapis_beta/test/speech/v1beta1_test.dart
index b952b41..7aba99f 100644
--- a/generated/googleapis_beta/test/speech/v1beta1_test.dart
+++ b/generated/googleapis_beta/test/speech/v1beta1_test.dart
@@ -86,14 +86,14 @@
   buildCounterEmpty--;
 }
 
-buildUnnamed3596() {
+buildUnnamed3614() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed3596(core.List<api.Operation> o) {
+checkUnnamed3614(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -105,7 +105,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = "foo";
-    o.operations = buildUnnamed3596();
+    o.operations = buildUnnamed3614();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -115,12 +115,12 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
-    checkUnnamed3596(o.operations);
+    checkUnnamed3614(o.operations);
   }
   buildCounterListOperationsResponse--;
 }
 
-buildUnnamed3597() {
+buildUnnamed3615() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -135,7 +135,7 @@
   return o;
 }
 
-checkUnnamed3597(core.Map<core.String, core.Object> o) {
+checkUnnamed3615(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -149,7 +149,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3598() {
+buildUnnamed3616() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -164,7 +164,7 @@
   return o;
 }
 
-checkUnnamed3598(core.Map<core.String, core.Object> o) {
+checkUnnamed3616(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -185,9 +185,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed3597();
+    o.metadata = buildUnnamed3615();
     o.name = "foo";
-    o.response = buildUnnamed3598();
+    o.response = buildUnnamed3616();
   }
   buildCounterOperation--;
   return o;
@@ -198,9 +198,9 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkStatus(o.error);
-    checkUnnamed3597(o.metadata);
+    checkUnnamed3615(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3598(o.response);
+    checkUnnamed3616(o.response);
   }
   buildCounterOperation--;
 }
@@ -255,14 +255,14 @@
   buildCounterRecognitionConfig--;
 }
 
-buildUnnamed3599() {
+buildUnnamed3617() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3599(core.List<core.String> o) {
+checkUnnamed3617(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -273,7 +273,7 @@
   var o = new api.SpeechContext();
   buildCounterSpeechContext++;
   if (buildCounterSpeechContext < 3) {
-    o.phrases = buildUnnamed3599();
+    o.phrases = buildUnnamed3617();
   }
   buildCounterSpeechContext--;
   return o;
@@ -282,7 +282,7 @@
 checkSpeechContext(api.SpeechContext o) {
   buildCounterSpeechContext++;
   if (buildCounterSpeechContext < 3) {
-    checkUnnamed3599(o.phrases);
+    checkUnnamed3617(o.phrases);
   }
   buildCounterSpeechContext--;
 }
@@ -308,14 +308,14 @@
   buildCounterSpeechRecognitionAlternative--;
 }
 
-buildUnnamed3600() {
+buildUnnamed3618() {
   var o = new core.List<api.SpeechRecognitionAlternative>();
   o.add(buildSpeechRecognitionAlternative());
   o.add(buildSpeechRecognitionAlternative());
   return o;
 }
 
-checkUnnamed3600(core.List<api.SpeechRecognitionAlternative> o) {
+checkUnnamed3618(core.List<api.SpeechRecognitionAlternative> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSpeechRecognitionAlternative(o[0]);
   checkSpeechRecognitionAlternative(o[1]);
@@ -326,7 +326,7 @@
   var o = new api.SpeechRecognitionResult();
   buildCounterSpeechRecognitionResult++;
   if (buildCounterSpeechRecognitionResult < 3) {
-    o.alternatives = buildUnnamed3600();
+    o.alternatives = buildUnnamed3618();
   }
   buildCounterSpeechRecognitionResult--;
   return o;
@@ -335,12 +335,12 @@
 checkSpeechRecognitionResult(api.SpeechRecognitionResult o) {
   buildCounterSpeechRecognitionResult++;
   if (buildCounterSpeechRecognitionResult < 3) {
-    checkUnnamed3600(o.alternatives);
+    checkUnnamed3618(o.alternatives);
   }
   buildCounterSpeechRecognitionResult--;
 }
 
-buildUnnamed3601() {
+buildUnnamed3619() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -355,7 +355,7 @@
   return o;
 }
 
-checkUnnamed3601(core.Map<core.String, core.Object> o) {
+checkUnnamed3619(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -369,17 +369,17 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3602() {
+buildUnnamed3620() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed3601());
-  o.add(buildUnnamed3601());
+  o.add(buildUnnamed3619());
+  o.add(buildUnnamed3619());
   return o;
 }
 
-checkUnnamed3602(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed3620(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed3601(o[0]);
-  checkUnnamed3601(o[1]);
+  checkUnnamed3619(o[0]);
+  checkUnnamed3619(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -388,7 +388,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed3602();
+    o.details = buildUnnamed3620();
     o.message = "foo";
   }
   buildCounterStatus--;
@@ -399,7 +399,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed3602(o.details);
+    checkUnnamed3620(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterStatus--;
@@ -426,14 +426,14 @@
   buildCounterSyncRecognizeRequest--;
 }
 
-buildUnnamed3603() {
+buildUnnamed3621() {
   var o = new core.List<api.SpeechRecognitionResult>();
   o.add(buildSpeechRecognitionResult());
   o.add(buildSpeechRecognitionResult());
   return o;
 }
 
-checkUnnamed3603(core.List<api.SpeechRecognitionResult> o) {
+checkUnnamed3621(core.List<api.SpeechRecognitionResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSpeechRecognitionResult(o[0]);
   checkSpeechRecognitionResult(o[1]);
@@ -444,7 +444,7 @@
   var o = new api.SyncRecognizeResponse();
   buildCounterSyncRecognizeResponse++;
   if (buildCounterSyncRecognizeResponse < 3) {
-    o.results = buildUnnamed3603();
+    o.results = buildUnnamed3621();
   }
   buildCounterSyncRecognizeResponse--;
   return o;
@@ -453,7 +453,7 @@
 checkSyncRecognizeResponse(api.SyncRecognizeResponse o) {
   buildCounterSyncRecognizeResponse++;
   if (buildCounterSyncRecognizeResponse < 3) {
-    checkUnnamed3603(o.results);
+    checkUnnamed3621(o.results);
   }
   buildCounterSyncRecognizeResponse--;
 }
@@ -560,6 +560,7 @@
       var mock = new HttpServerMock();
       api.OperationsResourceApi res = new api.SpeechApi(mock).operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -591,6 +592,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -598,7 +600,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.cancel(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .cancel(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -607,6 +611,7 @@
       var mock = new HttpServerMock();
       api.OperationsResourceApi res = new api.SpeechApi(mock).operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -638,6 +643,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -645,7 +651,9 @@
         var resp = convert.JSON.encode(buildEmpty());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.delete(arg_name).then(unittest.expectAsync1(((api.Empty response) {
+      res
+          .delete(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Empty response) {
         checkEmpty(response);
       })));
     });
@@ -654,6 +662,7 @@
       var mock = new HttpServerMock();
       api.OperationsResourceApi res = new api.SpeechApi(mock).operations;
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -685,6 +694,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -692,7 +702,9 @@
         var resp = convert.JSON.encode(buildOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.get(arg_name).then(unittest.expectAsync1(((api.Operation response) {
+      res
+          .get(arg_name, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
     });
@@ -704,6 +716,7 @@
       var arg_pageToken = "foo";
       var arg_name = "foo";
       var arg_pageSize = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -740,6 +753,7 @@
         unittest.expect(queryMap["name"].first, unittest.equals(arg_name));
         unittest.expect(core.int.parse(queryMap["pageSize"].first),
             unittest.equals(arg_pageSize));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -752,7 +766,8 @@
               filter: arg_filter,
               pageToken: arg_pageToken,
               name: arg_name,
-              pageSize: arg_pageSize)
+              pageSize: arg_pageSize,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.ListOperationsResponse response) {
         checkListOperationsResponse(response);
       })));
@@ -764,6 +779,7 @@
       var mock = new HttpServerMock();
       api.SpeechResourceApi res = new api.SpeechApi(mock).speech;
       var arg_request = buildAsyncRecognizeRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.AsyncRecognizeRequest.fromJson(json);
         checkAsyncRecognizeRequest(obj);
@@ -797,6 +813,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -805,7 +822,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .asyncrecognize(arg_request)
+          .asyncrecognize(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -815,6 +832,7 @@
       var mock = new HttpServerMock();
       api.SpeechResourceApi res = new api.SpeechApi(mock).speech;
       var arg_request = buildSyncRecognizeRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SyncRecognizeRequest.fromJson(json);
         checkSyncRecognizeRequest(obj);
@@ -848,6 +866,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -856,7 +875,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .syncrecognize(arg_request)
+          .syncrecognize(arg_request, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SyncRecognizeResponse response) {
         checkSyncRecognizeResponse(response);
       })));
diff --git a/generated/googleapis_beta/test/sqladmin/v1beta3_test.dart b/generated/googleapis_beta/test/sqladmin/v1beta3_test.dart
index 0fd5f20..2598114 100644
--- a/generated/googleapis_beta/test/sqladmin/v1beta3_test.dart
+++ b/generated/googleapis_beta/test/sqladmin/v1beta3_test.dart
@@ -116,14 +116,14 @@
   buildCounterBackupRun--;
 }
 
-buildUnnamed3341() {
+buildUnnamed3356() {
   var o = new core.List<api.BackupRun>();
   o.add(buildBackupRun());
   o.add(buildBackupRun());
   return o;
 }
 
-checkUnnamed3341(core.List<api.BackupRun> o) {
+checkUnnamed3356(core.List<api.BackupRun> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBackupRun(o[0]);
   checkBackupRun(o[1]);
@@ -134,7 +134,7 @@
   var o = new api.BackupRunsListResponse();
   buildCounterBackupRunsListResponse++;
   if (buildCounterBackupRunsListResponse < 3) {
-    o.items = buildUnnamed3341();
+    o.items = buildUnnamed3356();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -145,7 +145,7 @@
 checkBackupRunsListResponse(api.BackupRunsListResponse o) {
   buildCounterBackupRunsListResponse++;
   if (buildCounterBackupRunsListResponse < 3) {
-    checkUnnamed3341(o.items);
+    checkUnnamed3356(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -221,27 +221,27 @@
   buildCounterDatabaseFlags--;
 }
 
-buildUnnamed3342() {
+buildUnnamed3357() {
   var o = new core.List<api.IpMapping>();
   o.add(buildIpMapping());
   o.add(buildIpMapping());
   return o;
 }
 
-checkUnnamed3342(core.List<api.IpMapping> o) {
+checkUnnamed3357(core.List<api.IpMapping> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkIpMapping(o[0]);
   checkIpMapping(o[1]);
 }
 
-buildUnnamed3343() {
+buildUnnamed3358() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3343(core.List<core.String> o) {
+checkUnnamed3358(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -258,14 +258,14 @@
     o.etag = "foo";
     o.instance = "foo";
     o.instanceType = "foo";
-    o.ipAddresses = buildUnnamed3342();
+    o.ipAddresses = buildUnnamed3357();
     o.ipv6Address = "foo";
     o.kind = "foo";
     o.masterInstanceName = "foo";
     o.maxDiskSize = "foo";
     o.project = "foo";
     o.region = "foo";
-    o.replicaNames = buildUnnamed3343();
+    o.replicaNames = buildUnnamed3358();
     o.serverCaCert = buildSslCert();
     o.serviceAccountEmailAddress = "foo";
     o.settings = buildSettings();
@@ -284,14 +284,14 @@
     unittest.expect(o.etag, unittest.equals('foo'));
     unittest.expect(o.instance, unittest.equals('foo'));
     unittest.expect(o.instanceType, unittest.equals('foo'));
-    checkUnnamed3342(o.ipAddresses);
+    checkUnnamed3357(o.ipAddresses);
     unittest.expect(o.ipv6Address, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.masterInstanceName, unittest.equals('foo'));
     unittest.expect(o.maxDiskSize, unittest.equals('foo'));
     unittest.expect(o.project, unittest.equals('foo'));
     unittest.expect(o.region, unittest.equals('foo'));
-    checkUnnamed3343(o.replicaNames);
+    checkUnnamed3358(o.replicaNames);
     checkSslCert(o.serverCaCert);
     unittest.expect(o.serviceAccountEmailAddress, unittest.equals('foo'));
     checkSettings(o.settings);
@@ -300,27 +300,27 @@
   buildCounterDatabaseInstance--;
 }
 
-buildUnnamed3344() {
+buildUnnamed3359() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3344(core.List<core.String> o) {
+checkUnnamed3359(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3345() {
+buildUnnamed3360() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3345(core.List<core.String> o) {
+checkUnnamed3360(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -331,9 +331,9 @@
   var o = new api.ExportContext();
   buildCounterExportContext++;
   if (buildCounterExportContext < 3) {
-    o.database = buildUnnamed3344();
+    o.database = buildUnnamed3359();
     o.kind = "foo";
-    o.table = buildUnnamed3345();
+    o.table = buildUnnamed3360();
     o.uri = "foo";
   }
   buildCounterExportContext--;
@@ -343,35 +343,35 @@
 checkExportContext(api.ExportContext o) {
   buildCounterExportContext++;
   if (buildCounterExportContext < 3) {
-    checkUnnamed3344(o.database);
+    checkUnnamed3359(o.database);
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed3345(o.table);
+    checkUnnamed3360(o.table);
     unittest.expect(o.uri, unittest.equals('foo'));
   }
   buildCounterExportContext--;
 }
 
-buildUnnamed3346() {
+buildUnnamed3361() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3346(core.List<core.String> o) {
+checkUnnamed3361(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3347() {
+buildUnnamed3362() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3347(core.List<core.String> o) {
+checkUnnamed3362(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -382,8 +382,8 @@
   var o = new api.Flag();
   buildCounterFlag++;
   if (buildCounterFlag < 3) {
-    o.allowedStringValues = buildUnnamed3346();
-    o.appliesTo = buildUnnamed3347();
+    o.allowedStringValues = buildUnnamed3361();
+    o.appliesTo = buildUnnamed3362();
     o.kind = "foo";
     o.maxValue = "foo";
     o.minValue = "foo";
@@ -397,8 +397,8 @@
 checkFlag(api.Flag o) {
   buildCounterFlag++;
   if (buildCounterFlag < 3) {
-    checkUnnamed3346(o.allowedStringValues);
-    checkUnnamed3347(o.appliesTo);
+    checkUnnamed3361(o.allowedStringValues);
+    checkUnnamed3362(o.appliesTo);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.maxValue, unittest.equals('foo'));
     unittest.expect(o.minValue, unittest.equals('foo'));
@@ -408,14 +408,14 @@
   buildCounterFlag--;
 }
 
-buildUnnamed3348() {
+buildUnnamed3363() {
   var o = new core.List<api.Flag>();
   o.add(buildFlag());
   o.add(buildFlag());
   return o;
 }
 
-checkUnnamed3348(core.List<api.Flag> o) {
+checkUnnamed3363(core.List<api.Flag> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFlag(o[0]);
   checkFlag(o[1]);
@@ -426,7 +426,7 @@
   var o = new api.FlagsListResponse();
   buildCounterFlagsListResponse++;
   if (buildCounterFlagsListResponse < 3) {
-    o.items = buildUnnamed3348();
+    o.items = buildUnnamed3363();
     o.kind = "foo";
   }
   buildCounterFlagsListResponse--;
@@ -436,20 +436,20 @@
 checkFlagsListResponse(api.FlagsListResponse o) {
   buildCounterFlagsListResponse++;
   if (buildCounterFlagsListResponse < 3) {
-    checkUnnamed3348(o.items);
+    checkUnnamed3363(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterFlagsListResponse--;
 }
 
-buildUnnamed3349() {
+buildUnnamed3364() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3349(core.List<core.String> o) {
+checkUnnamed3364(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -462,7 +462,7 @@
   if (buildCounterImportContext < 3) {
     o.database = "foo";
     o.kind = "foo";
-    o.uri = buildUnnamed3349();
+    o.uri = buildUnnamed3364();
   }
   buildCounterImportContext--;
   return o;
@@ -473,19 +473,19 @@
   if (buildCounterImportContext < 3) {
     unittest.expect(o.database, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed3349(o.uri);
+    checkUnnamed3364(o.uri);
   }
   buildCounterImportContext--;
 }
 
-buildUnnamed3350() {
+buildUnnamed3365() {
   var o = new core.List<api.OperationError>();
   o.add(buildOperationError());
   o.add(buildOperationError());
   return o;
 }
 
-checkUnnamed3350(core.List<api.OperationError> o) {
+checkUnnamed3365(core.List<api.OperationError> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationError(o[0]);
   checkOperationError(o[1]);
@@ -498,7 +498,7 @@
   if (buildCounterInstanceOperation < 3) {
     o.endTime = core.DateTime.parse("2002-02-27T14:01:02");
     o.enqueuedTime = core.DateTime.parse("2002-02-27T14:01:02");
-    o.error = buildUnnamed3350();
+    o.error = buildUnnamed3365();
     o.exportContext = buildExportContext();
     o.importContext = buildImportContext();
     o.instance = "foo";
@@ -520,7 +520,7 @@
         o.endTime, unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
     unittest.expect(o.enqueuedTime,
         unittest.equals(core.DateTime.parse("2002-02-27T14:01:02")));
-    checkUnnamed3350(o.error);
+    checkUnnamed3365(o.error);
     checkExportContext(o.exportContext);
     checkImportContext(o.importContext);
     unittest.expect(o.instance, unittest.equals('foo'));
@@ -716,14 +716,14 @@
   buildCounterInstancesInsertResponse--;
 }
 
-buildUnnamed3351() {
+buildUnnamed3366() {
   var o = new core.List<api.DatabaseInstance>();
   o.add(buildDatabaseInstance());
   o.add(buildDatabaseInstance());
   return o;
 }
 
-checkUnnamed3351(core.List<api.DatabaseInstance> o) {
+checkUnnamed3366(core.List<api.DatabaseInstance> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDatabaseInstance(o[0]);
   checkDatabaseInstance(o[1]);
@@ -734,7 +734,7 @@
   var o = new api.InstancesListResponse();
   buildCounterInstancesListResponse++;
   if (buildCounterInstancesListResponse < 3) {
-    o.items = buildUnnamed3351();
+    o.items = buildUnnamed3366();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -745,7 +745,7 @@
 checkInstancesListResponse(api.InstancesListResponse o) {
   buildCounterInstancesListResponse++;
   if (buildCounterInstancesListResponse < 3) {
-    checkUnnamed3351(o.items);
+    checkUnnamed3366(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -878,14 +878,14 @@
   buildCounterInstancesUpdateResponse--;
 }
 
-buildUnnamed3352() {
+buildUnnamed3367() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3352(core.List<core.String> o) {
+checkUnnamed3367(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -896,7 +896,7 @@
   var o = new api.IpConfiguration();
   buildCounterIpConfiguration++;
   if (buildCounterIpConfiguration < 3) {
-    o.authorizedNetworks = buildUnnamed3352();
+    o.authorizedNetworks = buildUnnamed3367();
     o.enabled = true;
     o.kind = "foo";
     o.requireSsl = true;
@@ -908,7 +908,7 @@
 checkIpConfiguration(api.IpConfiguration o) {
   buildCounterIpConfiguration++;
   if (buildCounterIpConfiguration < 3) {
-    checkUnnamed3352(o.authorizedNetworks);
+    checkUnnamed3367(o.authorizedNetworks);
     unittest.expect(o.enabled, unittest.isTrue);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.requireSsl, unittest.isTrue);
@@ -982,14 +982,14 @@
   buildCounterOperationError--;
 }
 
-buildUnnamed3353() {
+buildUnnamed3368() {
   var o = new core.List<api.InstanceOperation>();
   o.add(buildInstanceOperation());
   o.add(buildInstanceOperation());
   return o;
 }
 
-checkUnnamed3353(core.List<api.InstanceOperation> o) {
+checkUnnamed3368(core.List<api.InstanceOperation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstanceOperation(o[0]);
   checkInstanceOperation(o[1]);
@@ -1000,7 +1000,7 @@
   var o = new api.OperationsListResponse();
   buildCounterOperationsListResponse++;
   if (buildCounterOperationsListResponse < 3) {
-    o.items = buildUnnamed3353();
+    o.items = buildUnnamed3368();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -1011,7 +1011,7 @@
 checkOperationsListResponse(api.OperationsListResponse o) {
   buildCounterOperationsListResponse++;
   if (buildCounterOperationsListResponse < 3) {
-    checkUnnamed3353(o.items);
+    checkUnnamed3368(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -1039,40 +1039,40 @@
   buildCounterSetRootPasswordContext--;
 }
 
-buildUnnamed3354() {
+buildUnnamed3369() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3354(core.List<core.String> o) {
+checkUnnamed3369(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3355() {
+buildUnnamed3370() {
   var o = new core.List<api.BackupConfiguration>();
   o.add(buildBackupConfiguration());
   o.add(buildBackupConfiguration());
   return o;
 }
 
-checkUnnamed3355(core.List<api.BackupConfiguration> o) {
+checkUnnamed3370(core.List<api.BackupConfiguration> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBackupConfiguration(o[0]);
   checkBackupConfiguration(o[1]);
 }
 
-buildUnnamed3356() {
+buildUnnamed3371() {
   var o = new core.List<api.DatabaseFlags>();
   o.add(buildDatabaseFlags());
   o.add(buildDatabaseFlags());
   return o;
 }
 
-checkUnnamed3356(core.List<api.DatabaseFlags> o) {
+checkUnnamed3371(core.List<api.DatabaseFlags> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDatabaseFlags(o[0]);
   checkDatabaseFlags(o[1]);
@@ -1084,9 +1084,9 @@
   buildCounterSettings++;
   if (buildCounterSettings < 3) {
     o.activationPolicy = "foo";
-    o.authorizedGaeApplications = buildUnnamed3354();
-    o.backupConfiguration = buildUnnamed3355();
-    o.databaseFlags = buildUnnamed3356();
+    o.authorizedGaeApplications = buildUnnamed3369();
+    o.backupConfiguration = buildUnnamed3370();
+    o.databaseFlags = buildUnnamed3371();
     o.databaseReplicationEnabled = true;
     o.ipConfiguration = buildIpConfiguration();
     o.kind = "foo";
@@ -1104,9 +1104,9 @@
   buildCounterSettings++;
   if (buildCounterSettings < 3) {
     unittest.expect(o.activationPolicy, unittest.equals('foo'));
-    checkUnnamed3354(o.authorizedGaeApplications);
-    checkUnnamed3355(o.backupConfiguration);
-    checkUnnamed3356(o.databaseFlags);
+    checkUnnamed3369(o.authorizedGaeApplications);
+    checkUnnamed3370(o.backupConfiguration);
+    checkUnnamed3371(o.databaseFlags);
     unittest.expect(o.databaseReplicationEnabled, unittest.isTrue);
     checkIpConfiguration(o.ipConfiguration);
     unittest.expect(o.kind, unittest.equals('foo'));
@@ -1238,14 +1238,14 @@
   buildCounterSslCertsInsertResponse--;
 }
 
-buildUnnamed3357() {
+buildUnnamed3372() {
   var o = new core.List<api.SslCert>();
   o.add(buildSslCert());
   o.add(buildSslCert());
   return o;
 }
 
-checkUnnamed3357(core.List<api.SslCert> o) {
+checkUnnamed3372(core.List<api.SslCert> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSslCert(o[0]);
   checkSslCert(o[1]);
@@ -1256,7 +1256,7 @@
   var o = new api.SslCertsListResponse();
   buildCounterSslCertsListResponse++;
   if (buildCounterSslCertsListResponse < 3) {
-    o.items = buildUnnamed3357();
+    o.items = buildUnnamed3372();
     o.kind = "foo";
   }
   buildCounterSslCertsListResponse--;
@@ -1266,20 +1266,20 @@
 checkSslCertsListResponse(api.SslCertsListResponse o) {
   buildCounterSslCertsListResponse++;
   if (buildCounterSslCertsListResponse < 3) {
-    checkUnnamed3357(o.items);
+    checkUnnamed3372(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterSslCertsListResponse--;
 }
 
-buildUnnamed3358() {
+buildUnnamed3373() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3358(core.List<core.String> o) {
+checkUnnamed3373(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1293,7 +1293,7 @@
     o.DiskQuota = "foo";
     o.RAM = "foo";
     o.kind = "foo";
-    o.region = buildUnnamed3358();
+    o.region = buildUnnamed3373();
     o.tier = "foo";
   }
   buildCounterTier--;
@@ -1306,20 +1306,20 @@
     unittest.expect(o.DiskQuota, unittest.equals('foo'));
     unittest.expect(o.RAM, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed3358(o.region);
+    checkUnnamed3373(o.region);
     unittest.expect(o.tier, unittest.equals('foo'));
   }
   buildCounterTier--;
 }
 
-buildUnnamed3359() {
+buildUnnamed3374() {
   var o = new core.List<api.Tier>();
   o.add(buildTier());
   o.add(buildTier());
   return o;
 }
 
-checkUnnamed3359(core.List<api.Tier> o) {
+checkUnnamed3374(core.List<api.Tier> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTier(o[0]);
   checkTier(o[1]);
@@ -1330,7 +1330,7 @@
   var o = new api.TiersListResponse();
   buildCounterTiersListResponse++;
   if (buildCounterTiersListResponse < 3) {
-    o.items = buildUnnamed3359();
+    o.items = buildUnnamed3374();
     o.kind = "foo";
   }
   buildCounterTiersListResponse--;
@@ -1340,7 +1340,7 @@
 checkTiersListResponse(api.TiersListResponse o) {
   buildCounterTiersListResponse++;
   if (buildCounterTiersListResponse < 3) {
-    checkUnnamed3359(o.items);
+    checkUnnamed3374(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterTiersListResponse--;
@@ -1699,6 +1699,7 @@
       var arg_instance = "foo";
       var arg_backupConfiguration = "foo";
       var arg_dueTime = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1755,6 +1756,7 @@
         }
         unittest.expect(
             queryMap["dueTime"].first, unittest.equals(arg_dueTime));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1763,7 +1765,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_instance, arg_backupConfiguration, arg_dueTime)
+          .get(arg_project, arg_instance, arg_backupConfiguration, arg_dueTime,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BackupRun response) {
         checkBackupRun(response);
       })));
@@ -1777,6 +1780,7 @@
       var arg_backupConfiguration = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1834,6 +1838,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1843,7 +1848,9 @@
       }), true);
       res
           .list(arg_project, arg_instance, arg_backupConfiguration,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BackupRunsListResponse response) {
         checkBackupRunsListResponse(response);
       })));
@@ -1854,6 +1861,7 @@
     unittest.test("method--list", () {
       var mock = new HttpServerMock();
       api.FlagsResourceApi res = new api.SqladminApi(mock).flags;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -1887,6 +1895,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1894,7 +1903,9 @@
         var resp = convert.JSON.encode(buildFlagsListResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.list().then(unittest.expectAsync1(((api.FlagsListResponse response) {
+      res
+          .list($fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.FlagsListResponse response) {
         checkFlagsListResponse(response);
       })));
     });
@@ -1906,6 +1917,7 @@
       api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
       var arg_request = buildInstancesCloneRequest();
       var arg_project = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstancesCloneRequest.fromJson(json);
         checkInstancesCloneRequest(obj);
@@ -1951,6 +1963,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1959,7 +1972,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .clone(arg_request, arg_project)
+          .clone(arg_request, arg_project, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstancesCloneResponse response) {
         checkInstancesCloneResponse(response);
       })));
@@ -1970,6 +1983,7 @@
       api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2015,6 +2029,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2023,7 +2038,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_instance)
+          .delete(arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstancesDeleteResponse response) {
         checkInstancesDeleteResponse(response);
       })));
@@ -2035,6 +2050,7 @@
       var arg_request = buildInstancesExportRequest();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstancesExportRequest.fromJson(json);
         checkInstancesExportRequest(obj);
@@ -2089,6 +2105,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2097,7 +2114,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .export(arg_request, arg_project, arg_instance)
+          .export(arg_request, arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstancesExportResponse response) {
         checkInstancesExportResponse(response);
       })));
@@ -2108,6 +2125,7 @@
       api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2153,6 +2171,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2161,7 +2180,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_instance)
+          .get(arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DatabaseInstance response) {
         checkDatabaseInstance(response);
       })));
@@ -2173,6 +2192,7 @@
       var arg_request = buildInstancesImportRequest();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstancesImportRequest.fromJson(json);
         checkInstancesImportRequest(obj);
@@ -2227,6 +2247,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2235,7 +2256,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .import(arg_request, arg_project, arg_instance)
+          .import(arg_request, arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstancesImportResponse response) {
         checkInstancesImportResponse(response);
       })));
@@ -2246,6 +2267,7 @@
       api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
       var arg_request = buildDatabaseInstance();
       var arg_project = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DatabaseInstance.fromJson(json);
         checkDatabaseInstance(obj);
@@ -2291,6 +2313,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2299,7 +2322,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project)
+          .insert(arg_request, arg_project, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstancesInsertResponse response) {
         checkInstancesInsertResponse(response);
       })));
@@ -2311,6 +2334,7 @@
       var arg_project = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2357,6 +2381,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2366,7 +2391,9 @@
       }), true);
       res
           .list(arg_project,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstancesListResponse response) {
         checkInstancesListResponse(response);
       })));
@@ -2378,6 +2405,7 @@
       var arg_request = buildDatabaseInstance();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DatabaseInstance.fromJson(json);
         checkDatabaseInstance(obj);
@@ -2426,6 +2454,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2434,7 +2463,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_project, arg_instance)
+          .patch(arg_request, arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstancesUpdateResponse response) {
         checkInstancesUpdateResponse(response);
       })));
@@ -2445,6 +2474,7 @@
       api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2496,6 +2526,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2503,8 +2534,9 @@
         var resp = convert.JSON.encode(buildInstancesPromoteReplicaResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.promoteReplica(arg_project, arg_instance).then(unittest
-          .expectAsync1(((api.InstancesPromoteReplicaResponse response) {
+      res.promoteReplica(arg_project, arg_instance, $fields: arg_$fields).then(
+          unittest
+              .expectAsync1(((api.InstancesPromoteReplicaResponse response) {
         checkInstancesPromoteReplicaResponse(response);
       })));
     });
@@ -2514,6 +2546,7 @@
       api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2565,6 +2598,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2572,8 +2606,9 @@
         var resp = convert.JSON.encode(buildInstancesResetSslConfigResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.resetSslConfig(arg_project, arg_instance).then(unittest
-          .expectAsync1(((api.InstancesResetSslConfigResponse response) {
+      res.resetSslConfig(arg_project, arg_instance, $fields: arg_$fields).then(
+          unittest
+              .expectAsync1(((api.InstancesResetSslConfigResponse response) {
         checkInstancesResetSslConfigResponse(response);
       })));
     });
@@ -2583,6 +2618,7 @@
       api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2634,6 +2670,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2642,7 +2679,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .restart(arg_project, arg_instance)
+          .restart(arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstancesRestartResponse response) {
         checkInstancesRestartResponse(response);
       })));
@@ -2655,6 +2692,7 @@
       var arg_instance = "foo";
       var arg_backupConfiguration = "foo";
       var arg_dueTime = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2710,6 +2748,7 @@
             unittest.equals(arg_backupConfiguration));
         unittest.expect(
             queryMap["dueTime"].first, unittest.equals(arg_dueTime));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2719,7 +2758,8 @@
       }), true);
       res
           .restoreBackup(
-              arg_project, arg_instance, arg_backupConfiguration, arg_dueTime)
+              arg_project, arg_instance, arg_backupConfiguration, arg_dueTime,
+              $fields: arg_$fields)
           .then(unittest
               .expectAsync1(((api.InstancesRestoreBackupResponse response) {
         checkInstancesRestoreBackupResponse(response);
@@ -2732,6 +2772,7 @@
       var arg_request = buildInstanceSetRootPasswordRequest();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstanceSetRootPasswordRequest.fromJson(json);
         checkInstanceSetRootPasswordRequest(obj);
@@ -2786,6 +2827,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2793,8 +2835,11 @@
         var resp = convert.JSON.encode(buildInstancesSetRootPasswordResponse());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.setRootPassword(arg_request, arg_project, arg_instance).then(unittest
-          .expectAsync1(((api.InstancesSetRootPasswordResponse response) {
+      res
+          .setRootPassword(arg_request, arg_project, arg_instance,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.InstancesSetRootPasswordResponse response) {
         checkInstancesSetRootPasswordResponse(response);
       })));
     });
@@ -2805,6 +2850,7 @@
       var arg_request = buildDatabaseInstance();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DatabaseInstance.fromJson(json);
         checkDatabaseInstance(obj);
@@ -2853,6 +2899,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2861,7 +2908,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_project, arg_instance)
+          .update(arg_request, arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstancesUpdateResponse response) {
         checkInstancesUpdateResponse(response);
       })));
@@ -2875,6 +2922,7 @@
       var arg_project = "foo";
       var arg_instance = "foo";
       var arg_operation = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2929,6 +2977,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2937,7 +2986,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_instance, arg_operation)
+          .get(arg_project, arg_instance, arg_operation, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstanceOperation response) {
         checkInstanceOperation(response);
       })));
@@ -2950,6 +2999,7 @@
       var arg_instance = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3005,6 +3055,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3014,7 +3065,9 @@
       }), true);
       res
           .list(arg_project, arg_instance,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OperationsListResponse response) {
         checkOperationsListResponse(response);
       })));
@@ -3028,6 +3081,7 @@
       var arg_project = "foo";
       var arg_instance = "foo";
       var arg_sha1Fingerprint = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3082,6 +3136,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3090,7 +3145,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_instance, arg_sha1Fingerprint)
+          .delete(arg_project, arg_instance, arg_sha1Fingerprint,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SslCertsDeleteResponse response) {
         checkSslCertsDeleteResponse(response);
       })));
@@ -3102,6 +3158,7 @@
       var arg_project = "foo";
       var arg_instance = "foo";
       var arg_sha1Fingerprint = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3156,6 +3213,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3164,7 +3222,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_instance, arg_sha1Fingerprint)
+          .get(arg_project, arg_instance, arg_sha1Fingerprint,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SslCert response) {
         checkSslCert(response);
       })));
@@ -3176,6 +3235,7 @@
       var arg_request = buildSslCertsInsertRequest();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SslCertsInsertRequest.fromJson(json);
         checkSslCertsInsertRequest(obj);
@@ -3230,6 +3290,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3238,7 +3299,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, arg_instance)
+          .insert(arg_request, arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SslCertsInsertResponse response) {
         checkSslCertsInsertResponse(response);
       })));
@@ -3249,6 +3310,7 @@
       api.SslCertsResourceApi res = new api.SqladminApi(mock).sslCerts;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3300,6 +3362,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3308,7 +3371,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_project, arg_instance)
+          .list(arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SslCertsListResponse response) {
         checkSslCertsListResponse(response);
       })));
@@ -3320,6 +3383,7 @@
       var mock = new HttpServerMock();
       api.TiersResourceApi res = new api.SqladminApi(mock).tiers;
       var arg_project = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3362,6 +3426,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3370,7 +3435,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_project)
+          .list(arg_project, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TiersListResponse response) {
         checkTiersListResponse(response);
       })));
diff --git a/generated/googleapis_beta/test/sqladmin/v1beta4_test.dart b/generated/googleapis_beta/test/sqladmin/v1beta4_test.dart
index 2a9ee4a..dfd1896 100644
--- a/generated/googleapis_beta/test/sqladmin/v1beta4_test.dart
+++ b/generated/googleapis_beta/test/sqladmin/v1beta4_test.dart
@@ -146,14 +146,14 @@
   buildCounterBackupRun--;
 }
 
-buildUnnamed3574() {
+buildUnnamed3592() {
   var o = new core.List<api.BackupRun>();
   o.add(buildBackupRun());
   o.add(buildBackupRun());
   return o;
 }
 
-checkUnnamed3574(core.List<api.BackupRun> o) {
+checkUnnamed3592(core.List<api.BackupRun> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBackupRun(o[0]);
   checkBackupRun(o[1]);
@@ -164,7 +164,7 @@
   var o = new api.BackupRunsListResponse();
   buildCounterBackupRunsListResponse++;
   if (buildCounterBackupRunsListResponse < 3) {
-    o.items = buildUnnamed3574();
+    o.items = buildUnnamed3592();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -175,7 +175,7 @@
 checkBackupRunsListResponse(api.BackupRunsListResponse o) {
   buildCounterBackupRunsListResponse++;
   if (buildCounterBackupRunsListResponse < 3) {
-    checkUnnamed3574(o.items);
+    checkUnnamed3592(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -303,40 +303,40 @@
   buildCounterDatabaseInstanceFailoverReplica--;
 }
 
-buildUnnamed3575() {
+buildUnnamed3593() {
   var o = new core.List<api.IpMapping>();
   o.add(buildIpMapping());
   o.add(buildIpMapping());
   return o;
 }
 
-checkUnnamed3575(core.List<api.IpMapping> o) {
+checkUnnamed3593(core.List<api.IpMapping> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkIpMapping(o[0]);
   checkIpMapping(o[1]);
 }
 
-buildUnnamed3576() {
+buildUnnamed3594() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3576(core.List<core.String> o) {
+checkUnnamed3594(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3577() {
+buildUnnamed3595() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3577(core.List<core.String> o) {
+checkUnnamed3595(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -355,7 +355,7 @@
     o.failoverReplica = buildDatabaseInstanceFailoverReplica();
     o.gceZone = "foo";
     o.instanceType = "foo";
-    o.ipAddresses = buildUnnamed3575();
+    o.ipAddresses = buildUnnamed3593();
     o.ipv6Address = "foo";
     o.kind = "foo";
     o.masterInstanceName = "foo";
@@ -365,13 +365,13 @@
     o.project = "foo";
     o.region = "foo";
     o.replicaConfiguration = buildReplicaConfiguration();
-    o.replicaNames = buildUnnamed3576();
+    o.replicaNames = buildUnnamed3594();
     o.selfLink = "foo";
     o.serverCaCert = buildSslCert();
     o.serviceAccountEmailAddress = "foo";
     o.settings = buildSettings();
     o.state = "foo";
-    o.suspensionReason = buildUnnamed3577();
+    o.suspensionReason = buildUnnamed3595();
   }
   buildCounterDatabaseInstance--;
   return o;
@@ -388,7 +388,7 @@
     checkDatabaseInstanceFailoverReplica(o.failoverReplica);
     unittest.expect(o.gceZone, unittest.equals('foo'));
     unittest.expect(o.instanceType, unittest.equals('foo'));
-    checkUnnamed3575(o.ipAddresses);
+    checkUnnamed3593(o.ipAddresses);
     unittest.expect(o.ipv6Address, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.masterInstanceName, unittest.equals('foo'));
@@ -398,25 +398,25 @@
     unittest.expect(o.project, unittest.equals('foo'));
     unittest.expect(o.region, unittest.equals('foo'));
     checkReplicaConfiguration(o.replicaConfiguration);
-    checkUnnamed3576(o.replicaNames);
+    checkUnnamed3594(o.replicaNames);
     unittest.expect(o.selfLink, unittest.equals('foo'));
     checkSslCert(o.serverCaCert);
     unittest.expect(o.serviceAccountEmailAddress, unittest.equals('foo'));
     checkSettings(o.settings);
     unittest.expect(o.state, unittest.equals('foo'));
-    checkUnnamed3577(o.suspensionReason);
+    checkUnnamed3595(o.suspensionReason);
   }
   buildCounterDatabaseInstance--;
 }
 
-buildUnnamed3578() {
+buildUnnamed3596() {
   var o = new core.List<api.Database>();
   o.add(buildDatabase());
   o.add(buildDatabase());
   return o;
 }
 
-checkUnnamed3578(core.List<api.Database> o) {
+checkUnnamed3596(core.List<api.Database> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDatabase(o[0]);
   checkDatabase(o[1]);
@@ -427,7 +427,7 @@
   var o = new api.DatabasesListResponse();
   buildCounterDatabasesListResponse++;
   if (buildCounterDatabasesListResponse < 3) {
-    o.items = buildUnnamed3578();
+    o.items = buildUnnamed3596();
     o.kind = "foo";
   }
   buildCounterDatabasesListResponse--;
@@ -437,12 +437,86 @@
 checkDatabasesListResponse(api.DatabasesListResponse o) {
   buildCounterDatabasesListResponse++;
   if (buildCounterDatabasesListResponse < 3) {
-    checkUnnamed3578(o.items);
+    checkUnnamed3596(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterDatabasesListResponse--;
 }
 
+core.int buildCounterDemoteMasterConfiguration = 0;
+buildDemoteMasterConfiguration() {
+  var o = new api.DemoteMasterConfiguration();
+  buildCounterDemoteMasterConfiguration++;
+  if (buildCounterDemoteMasterConfiguration < 3) {
+    o.kind = "foo";
+    o.mysqlReplicaConfiguration = buildDemoteMasterMySqlReplicaConfiguration();
+  }
+  buildCounterDemoteMasterConfiguration--;
+  return o;
+}
+
+checkDemoteMasterConfiguration(api.DemoteMasterConfiguration o) {
+  buildCounterDemoteMasterConfiguration++;
+  if (buildCounterDemoteMasterConfiguration < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    checkDemoteMasterMySqlReplicaConfiguration(o.mysqlReplicaConfiguration);
+  }
+  buildCounterDemoteMasterConfiguration--;
+}
+
+core.int buildCounterDemoteMasterContext = 0;
+buildDemoteMasterContext() {
+  var o = new api.DemoteMasterContext();
+  buildCounterDemoteMasterContext++;
+  if (buildCounterDemoteMasterContext < 3) {
+    o.kind = "foo";
+    o.masterInstanceName = "foo";
+    o.replicaConfiguration = buildDemoteMasterConfiguration();
+  }
+  buildCounterDemoteMasterContext--;
+  return o;
+}
+
+checkDemoteMasterContext(api.DemoteMasterContext o) {
+  buildCounterDemoteMasterContext++;
+  if (buildCounterDemoteMasterContext < 3) {
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.masterInstanceName, unittest.equals('foo'));
+    checkDemoteMasterConfiguration(o.replicaConfiguration);
+  }
+  buildCounterDemoteMasterContext--;
+}
+
+core.int buildCounterDemoteMasterMySqlReplicaConfiguration = 0;
+buildDemoteMasterMySqlReplicaConfiguration() {
+  var o = new api.DemoteMasterMySqlReplicaConfiguration();
+  buildCounterDemoteMasterMySqlReplicaConfiguration++;
+  if (buildCounterDemoteMasterMySqlReplicaConfiguration < 3) {
+    o.caCertificate = "foo";
+    o.clientCertificate = "foo";
+    o.clientKey = "foo";
+    o.kind = "foo";
+    o.password = "foo";
+    o.username = "foo";
+  }
+  buildCounterDemoteMasterMySqlReplicaConfiguration--;
+  return o;
+}
+
+checkDemoteMasterMySqlReplicaConfiguration(
+    api.DemoteMasterMySqlReplicaConfiguration o) {
+  buildCounterDemoteMasterMySqlReplicaConfiguration++;
+  if (buildCounterDemoteMasterMySqlReplicaConfiguration < 3) {
+    unittest.expect(o.caCertificate, unittest.equals('foo'));
+    unittest.expect(o.clientCertificate, unittest.equals('foo'));
+    unittest.expect(o.clientKey, unittest.equals('foo'));
+    unittest.expect(o.kind, unittest.equals('foo'));
+    unittest.expect(o.password, unittest.equals('foo'));
+    unittest.expect(o.username, unittest.equals('foo'));
+  }
+  buildCounterDemoteMasterMySqlReplicaConfiguration--;
+}
+
 core.int buildCounterExportContextCsvExportOptions = 0;
 buildExportContextCsvExportOptions() {
   var o = new api.ExportContextCsvExportOptions();
@@ -462,27 +536,27 @@
   buildCounterExportContextCsvExportOptions--;
 }
 
-buildUnnamed3579() {
+buildUnnamed3597() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3579(core.List<core.String> o) {
+checkUnnamed3597(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3580() {
+buildUnnamed3598() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3580(core.List<core.String> o) {
+checkUnnamed3598(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -494,7 +568,7 @@
   buildCounterExportContextSqlExportOptions++;
   if (buildCounterExportContextSqlExportOptions < 3) {
     o.schemaOnly = true;
-    o.tables = buildUnnamed3580();
+    o.tables = buildUnnamed3598();
   }
   buildCounterExportContextSqlExportOptions--;
   return o;
@@ -504,7 +578,7 @@
   buildCounterExportContextSqlExportOptions++;
   if (buildCounterExportContextSqlExportOptions < 3) {
     unittest.expect(o.schemaOnly, unittest.isTrue);
-    checkUnnamed3580(o.tables);
+    checkUnnamed3598(o.tables);
   }
   buildCounterExportContextSqlExportOptions--;
 }
@@ -515,7 +589,7 @@
   buildCounterExportContext++;
   if (buildCounterExportContext < 3) {
     o.csvExportOptions = buildExportContextCsvExportOptions();
-    o.databases = buildUnnamed3579();
+    o.databases = buildUnnamed3597();
     o.fileType = "foo";
     o.kind = "foo";
     o.sqlExportOptions = buildExportContextSqlExportOptions();
@@ -529,7 +603,7 @@
   buildCounterExportContext++;
   if (buildCounterExportContext < 3) {
     checkExportContextCsvExportOptions(o.csvExportOptions);
-    checkUnnamed3579(o.databases);
+    checkUnnamed3597(o.databases);
     unittest.expect(o.fileType, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
     checkExportContextSqlExportOptions(o.sqlExportOptions);
@@ -559,27 +633,27 @@
   buildCounterFailoverContext--;
 }
 
-buildUnnamed3581() {
+buildUnnamed3599() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3581(core.List<core.String> o) {
+checkUnnamed3599(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3582() {
+buildUnnamed3600() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3582(core.List<core.String> o) {
+checkUnnamed3600(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -590,8 +664,8 @@
   var o = new api.Flag();
   buildCounterFlag++;
   if (buildCounterFlag < 3) {
-    o.allowedStringValues = buildUnnamed3581();
-    o.appliesTo = buildUnnamed3582();
+    o.allowedStringValues = buildUnnamed3599();
+    o.appliesTo = buildUnnamed3600();
     o.kind = "foo";
     o.maxValue = "foo";
     o.minValue = "foo";
@@ -606,8 +680,8 @@
 checkFlag(api.Flag o) {
   buildCounterFlag++;
   if (buildCounterFlag < 3) {
-    checkUnnamed3581(o.allowedStringValues);
-    checkUnnamed3582(o.appliesTo);
+    checkUnnamed3599(o.allowedStringValues);
+    checkUnnamed3600(o.appliesTo);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.maxValue, unittest.equals('foo'));
     unittest.expect(o.minValue, unittest.equals('foo'));
@@ -618,14 +692,14 @@
   buildCounterFlag--;
 }
 
-buildUnnamed3583() {
+buildUnnamed3601() {
   var o = new core.List<api.Flag>();
   o.add(buildFlag());
   o.add(buildFlag());
   return o;
 }
 
-checkUnnamed3583(core.List<api.Flag> o) {
+checkUnnamed3601(core.List<api.Flag> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFlag(o[0]);
   checkFlag(o[1]);
@@ -636,7 +710,7 @@
   var o = new api.FlagsListResponse();
   buildCounterFlagsListResponse++;
   if (buildCounterFlagsListResponse < 3) {
-    o.items = buildUnnamed3583();
+    o.items = buildUnnamed3601();
     o.kind = "foo";
   }
   buildCounterFlagsListResponse--;
@@ -646,20 +720,20 @@
 checkFlagsListResponse(api.FlagsListResponse o) {
   buildCounterFlagsListResponse++;
   if (buildCounterFlagsListResponse < 3) {
-    checkUnnamed3583(o.items);
+    checkUnnamed3601(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterFlagsListResponse--;
 }
 
-buildUnnamed3584() {
+buildUnnamed3602() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3584(core.List<core.String> o) {
+checkUnnamed3602(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -670,7 +744,7 @@
   var o = new api.ImportContextCsvImportOptions();
   buildCounterImportContextCsvImportOptions++;
   if (buildCounterImportContextCsvImportOptions < 3) {
-    o.columns = buildUnnamed3584();
+    o.columns = buildUnnamed3602();
     o.table = "foo";
   }
   buildCounterImportContextCsvImportOptions--;
@@ -680,7 +754,7 @@
 checkImportContextCsvImportOptions(api.ImportContextCsvImportOptions o) {
   buildCounterImportContextCsvImportOptions++;
   if (buildCounterImportContextCsvImportOptions < 3) {
-    checkUnnamed3584(o.columns);
+    checkUnnamed3602(o.columns);
     unittest.expect(o.table, unittest.equals('foo'));
   }
   buildCounterImportContextCsvImportOptions--;
@@ -734,6 +808,25 @@
   buildCounterInstancesCloneRequest--;
 }
 
+core.int buildCounterInstancesDemoteMasterRequest = 0;
+buildInstancesDemoteMasterRequest() {
+  var o = new api.InstancesDemoteMasterRequest();
+  buildCounterInstancesDemoteMasterRequest++;
+  if (buildCounterInstancesDemoteMasterRequest < 3) {
+    o.demoteMasterContext = buildDemoteMasterContext();
+  }
+  buildCounterInstancesDemoteMasterRequest--;
+  return o;
+}
+
+checkInstancesDemoteMasterRequest(api.InstancesDemoteMasterRequest o) {
+  buildCounterInstancesDemoteMasterRequest++;
+  if (buildCounterInstancesDemoteMasterRequest < 3) {
+    checkDemoteMasterContext(o.demoteMasterContext);
+  }
+  buildCounterInstancesDemoteMasterRequest--;
+}
+
 core.int buildCounterInstancesExportRequest = 0;
 buildInstancesExportRequest() {
   var o = new api.InstancesExportRequest();
@@ -791,14 +884,14 @@
   buildCounterInstancesImportRequest--;
 }
 
-buildUnnamed3585() {
+buildUnnamed3603() {
   var o = new core.List<api.DatabaseInstance>();
   o.add(buildDatabaseInstance());
   o.add(buildDatabaseInstance());
   return o;
 }
 
-checkUnnamed3585(core.List<api.DatabaseInstance> o) {
+checkUnnamed3603(core.List<api.DatabaseInstance> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDatabaseInstance(o[0]);
   checkDatabaseInstance(o[1]);
@@ -809,7 +902,7 @@
   var o = new api.InstancesListResponse();
   buildCounterInstancesListResponse++;
   if (buildCounterInstancesListResponse < 3) {
-    o.items = buildUnnamed3585();
+    o.items = buildUnnamed3603();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -820,7 +913,7 @@
 checkInstancesListResponse(api.InstancesListResponse o) {
   buildCounterInstancesListResponse++;
   if (buildCounterInstancesListResponse < 3) {
-    checkUnnamed3585(o.items);
+    checkUnnamed3603(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -865,14 +958,14 @@
   buildCounterInstancesTruncateLogRequest--;
 }
 
-buildUnnamed3586() {
+buildUnnamed3604() {
   var o = new core.List<api.AclEntry>();
   o.add(buildAclEntry());
   o.add(buildAclEntry());
   return o;
 }
 
-checkUnnamed3586(core.List<api.AclEntry> o) {
+checkUnnamed3604(core.List<api.AclEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAclEntry(o[0]);
   checkAclEntry(o[1]);
@@ -883,7 +976,7 @@
   var o = new api.IpConfiguration();
   buildCounterIpConfiguration++;
   if (buildCounterIpConfiguration < 3) {
-    o.authorizedNetworks = buildUnnamed3586();
+    o.authorizedNetworks = buildUnnamed3604();
     o.ipv4Enabled = true;
     o.requireSsl = true;
   }
@@ -894,7 +987,7 @@
 checkIpConfiguration(api.IpConfiguration o) {
   buildCounterIpConfiguration++;
   if (buildCounterIpConfiguration < 3) {
-    checkUnnamed3586(o.authorizedNetworks);
+    checkUnnamed3604(o.authorizedNetworks);
     unittest.expect(o.ipv4Enabled, unittest.isTrue);
     unittest.expect(o.requireSsl, unittest.isTrue);
   }
@@ -1106,14 +1199,14 @@
   buildCounterOperationError--;
 }
 
-buildUnnamed3587() {
+buildUnnamed3605() {
   var o = new core.List<api.OperationError>();
   o.add(buildOperationError());
   o.add(buildOperationError());
   return o;
 }
 
-checkUnnamed3587(core.List<api.OperationError> o) {
+checkUnnamed3605(core.List<api.OperationError> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationError(o[0]);
   checkOperationError(o[1]);
@@ -1124,7 +1217,7 @@
   var o = new api.OperationErrors();
   buildCounterOperationErrors++;
   if (buildCounterOperationErrors < 3) {
-    o.errors = buildUnnamed3587();
+    o.errors = buildUnnamed3605();
     o.kind = "foo";
   }
   buildCounterOperationErrors--;
@@ -1134,20 +1227,20 @@
 checkOperationErrors(api.OperationErrors o) {
   buildCounterOperationErrors++;
   if (buildCounterOperationErrors < 3) {
-    checkUnnamed3587(o.errors);
+    checkUnnamed3605(o.errors);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterOperationErrors--;
 }
 
-buildUnnamed3588() {
+buildUnnamed3606() {
   var o = new core.List<api.Operation>();
   o.add(buildOperation());
   o.add(buildOperation());
   return o;
 }
 
-checkUnnamed3588(core.List<api.Operation> o) {
+checkUnnamed3606(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -1158,7 +1251,7 @@
   var o = new api.OperationsListResponse();
   buildCounterOperationsListResponse++;
   if (buildCounterOperationsListResponse < 3) {
-    o.items = buildUnnamed3588();
+    o.items = buildUnnamed3606();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -1169,7 +1262,7 @@
 checkOperationsListResponse(api.OperationsListResponse o) {
   buildCounterOperationsListResponse++;
   if (buildCounterOperationsListResponse < 3) {
-    checkUnnamed3588(o.items);
+    checkUnnamed3606(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -1222,40 +1315,40 @@
   buildCounterRestoreBackupContext--;
 }
 
-buildUnnamed3589() {
+buildUnnamed3607() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3589(core.List<core.String> o) {
+checkUnnamed3607(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3590() {
+buildUnnamed3608() {
   var o = new core.List<api.DatabaseFlags>();
   o.add(buildDatabaseFlags());
   o.add(buildDatabaseFlags());
   return o;
 }
 
-checkUnnamed3590(core.List<api.DatabaseFlags> o) {
+checkUnnamed3608(core.List<api.DatabaseFlags> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDatabaseFlags(o[0]);
   checkDatabaseFlags(o[1]);
 }
 
-buildUnnamed3591() {
+buildUnnamed3609() {
   var o = new core.Map<core.String, core.String>();
   o["x"] = "foo";
   o["y"] = "foo";
   return o;
 }
 
-checkUnnamed3591(core.Map<core.String, core.String> o) {
+checkUnnamed3609(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o["x"], unittest.equals('foo'));
   unittest.expect(o["y"], unittest.equals('foo'));
@@ -1267,13 +1360,13 @@
   buildCounterSettings++;
   if (buildCounterSettings < 3) {
     o.activationPolicy = "foo";
-    o.authorizedGaeApplications = buildUnnamed3589();
+    o.authorizedGaeApplications = buildUnnamed3607();
     o.availabilityType = "foo";
     o.backupConfiguration = buildBackupConfiguration();
     o.crashSafeReplicationEnabled = true;
     o.dataDiskSizeGb = "foo";
     o.dataDiskType = "foo";
-    o.databaseFlags = buildUnnamed3590();
+    o.databaseFlags = buildUnnamed3608();
     o.databaseReplicationEnabled = true;
     o.ipConfiguration = buildIpConfiguration();
     o.kind = "foo";
@@ -1285,7 +1378,7 @@
     o.storageAutoResize = true;
     o.storageAutoResizeLimit = "foo";
     o.tier = "foo";
-    o.userLabels = buildUnnamed3591();
+    o.userLabels = buildUnnamed3609();
   }
   buildCounterSettings--;
   return o;
@@ -1295,13 +1388,13 @@
   buildCounterSettings++;
   if (buildCounterSettings < 3) {
     unittest.expect(o.activationPolicy, unittest.equals('foo'));
-    checkUnnamed3589(o.authorizedGaeApplications);
+    checkUnnamed3607(o.authorizedGaeApplications);
     unittest.expect(o.availabilityType, unittest.equals('foo'));
     checkBackupConfiguration(o.backupConfiguration);
     unittest.expect(o.crashSafeReplicationEnabled, unittest.isTrue);
     unittest.expect(o.dataDiskSizeGb, unittest.equals('foo'));
     unittest.expect(o.dataDiskType, unittest.equals('foo'));
-    checkUnnamed3590(o.databaseFlags);
+    checkUnnamed3608(o.databaseFlags);
     unittest.expect(o.databaseReplicationEnabled, unittest.isTrue);
     checkIpConfiguration(o.ipConfiguration);
     unittest.expect(o.kind, unittest.equals('foo'));
@@ -1313,7 +1406,7 @@
     unittest.expect(o.storageAutoResize, unittest.isTrue);
     unittest.expect(o.storageAutoResizeLimit, unittest.equals('foo'));
     unittest.expect(o.tier, unittest.equals('foo'));
-    checkUnnamed3591(o.userLabels);
+    checkUnnamed3609(o.userLabels);
   }
   buildCounterSettings--;
 }
@@ -1439,14 +1532,14 @@
   buildCounterSslCertsInsertResponse--;
 }
 
-buildUnnamed3592() {
+buildUnnamed3610() {
   var o = new core.List<api.SslCert>();
   o.add(buildSslCert());
   o.add(buildSslCert());
   return o;
 }
 
-checkUnnamed3592(core.List<api.SslCert> o) {
+checkUnnamed3610(core.List<api.SslCert> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSslCert(o[0]);
   checkSslCert(o[1]);
@@ -1457,7 +1550,7 @@
   var o = new api.SslCertsListResponse();
   buildCounterSslCertsListResponse++;
   if (buildCounterSslCertsListResponse < 3) {
-    o.items = buildUnnamed3592();
+    o.items = buildUnnamed3610();
     o.kind = "foo";
   }
   buildCounterSslCertsListResponse--;
@@ -1467,20 +1560,20 @@
 checkSslCertsListResponse(api.SslCertsListResponse o) {
   buildCounterSslCertsListResponse++;
   if (buildCounterSslCertsListResponse < 3) {
-    checkUnnamed3592(o.items);
+    checkUnnamed3610(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterSslCertsListResponse--;
 }
 
-buildUnnamed3593() {
+buildUnnamed3611() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3593(core.List<core.String> o) {
+checkUnnamed3611(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -1494,7 +1587,7 @@
     o.DiskQuota = "foo";
     o.RAM = "foo";
     o.kind = "foo";
-    o.region = buildUnnamed3593();
+    o.region = buildUnnamed3611();
     o.tier = "foo";
   }
   buildCounterTier--;
@@ -1507,20 +1600,20 @@
     unittest.expect(o.DiskQuota, unittest.equals('foo'));
     unittest.expect(o.RAM, unittest.equals('foo'));
     unittest.expect(o.kind, unittest.equals('foo'));
-    checkUnnamed3593(o.region);
+    checkUnnamed3611(o.region);
     unittest.expect(o.tier, unittest.equals('foo'));
   }
   buildCounterTier--;
 }
 
-buildUnnamed3594() {
+buildUnnamed3612() {
   var o = new core.List<api.Tier>();
   o.add(buildTier());
   o.add(buildTier());
   return o;
 }
 
-checkUnnamed3594(core.List<api.Tier> o) {
+checkUnnamed3612(core.List<api.Tier> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTier(o[0]);
   checkTier(o[1]);
@@ -1531,7 +1624,7 @@
   var o = new api.TiersListResponse();
   buildCounterTiersListResponse++;
   if (buildCounterTiersListResponse < 3) {
-    o.items = buildUnnamed3594();
+    o.items = buildUnnamed3612();
     o.kind = "foo";
   }
   buildCounterTiersListResponse--;
@@ -1541,7 +1634,7 @@
 checkTiersListResponse(api.TiersListResponse o) {
   buildCounterTiersListResponse++;
   if (buildCounterTiersListResponse < 3) {
-    checkUnnamed3594(o.items);
+    checkUnnamed3612(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterTiersListResponse--;
@@ -1599,14 +1692,14 @@
   buildCounterUser--;
 }
 
-buildUnnamed3595() {
+buildUnnamed3613() {
   var o = new core.List<api.User>();
   o.add(buildUser());
   o.add(buildUser());
   return o;
 }
 
-checkUnnamed3595(core.List<api.User> o) {
+checkUnnamed3613(core.List<api.User> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUser(o[0]);
   checkUser(o[1]);
@@ -1617,7 +1710,7 @@
   var o = new api.UsersListResponse();
   buildCounterUsersListResponse++;
   if (buildCounterUsersListResponse < 3) {
-    o.items = buildUnnamed3595();
+    o.items = buildUnnamed3613();
     o.kind = "foo";
     o.nextPageToken = "foo";
   }
@@ -1628,7 +1721,7 @@
 checkUsersListResponse(api.UsersListResponse o) {
   buildCounterUsersListResponse++;
   if (buildCounterUsersListResponse < 3) {
-    checkUnnamed3595(o.items);
+    checkUnnamed3613(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
     unittest.expect(o.nextPageToken, unittest.equals('foo'));
   }
@@ -1724,6 +1817,31 @@
     });
   });
 
+  unittest.group("obj-schema-DemoteMasterConfiguration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDemoteMasterConfiguration();
+      var od = new api.DemoteMasterConfiguration.fromJson(o.toJson());
+      checkDemoteMasterConfiguration(od);
+    });
+  });
+
+  unittest.group("obj-schema-DemoteMasterContext", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDemoteMasterContext();
+      var od = new api.DemoteMasterContext.fromJson(o.toJson());
+      checkDemoteMasterContext(od);
+    });
+  });
+
+  unittest.group("obj-schema-DemoteMasterMySqlReplicaConfiguration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDemoteMasterMySqlReplicaConfiguration();
+      var od =
+          new api.DemoteMasterMySqlReplicaConfiguration.fromJson(o.toJson());
+      checkDemoteMasterMySqlReplicaConfiguration(od);
+    });
+  });
+
   unittest.group("obj-schema-ExportContextCsvExportOptions", () {
     unittest.test("to-json--from-json", () {
       var o = buildExportContextCsvExportOptions();
@@ -1796,6 +1914,14 @@
     });
   });
 
+  unittest.group("obj-schema-InstancesDemoteMasterRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInstancesDemoteMasterRequest();
+      var od = new api.InstancesDemoteMasterRequest.fromJson(o.toJson());
+      checkInstancesDemoteMasterRequest(od);
+    });
+  });
+
   unittest.group("obj-schema-InstancesExportRequest", () {
     unittest.test("to-json--from-json", () {
       var o = buildInstancesExportRequest();
@@ -2043,6 +2169,7 @@
       var arg_project = "foo";
       var arg_instance = "foo";
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2097,6 +2224,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2105,7 +2233,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_instance, arg_id)
+          .delete(arg_project, arg_instance, arg_id, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2117,6 +2245,7 @@
       var arg_project = "foo";
       var arg_instance = "foo";
       var arg_id = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2171,6 +2300,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2179,7 +2309,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_instance, arg_id)
+          .get(arg_project, arg_instance, arg_id, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BackupRun response) {
         checkBackupRun(response);
       })));
@@ -2191,6 +2321,7 @@
       var arg_request = buildBackupRun();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.BackupRun.fromJson(json);
         checkBackupRun(obj);
@@ -2245,6 +2376,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2253,7 +2385,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, arg_instance)
+          .insert(arg_request, arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2266,6 +2398,7 @@
       var arg_instance = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2321,6 +2454,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2330,7 +2464,9 @@
       }), true);
       res
           .list(arg_project, arg_instance,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.BackupRunsListResponse response) {
         checkBackupRunsListResponse(response);
       })));
@@ -2344,6 +2480,7 @@
       var arg_project = "foo";
       var arg_instance = "foo";
       var arg_database = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2398,6 +2535,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2406,7 +2544,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_instance, arg_database)
+          .delete(arg_project, arg_instance, arg_database, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2418,6 +2556,7 @@
       var arg_project = "foo";
       var arg_instance = "foo";
       var arg_database = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2472,6 +2611,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2480,7 +2620,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_instance, arg_database)
+          .get(arg_project, arg_instance, arg_database, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Database response) {
         checkDatabase(response);
       })));
@@ -2492,6 +2632,7 @@
       var arg_request = buildDatabase();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Database.fromJson(json);
         checkDatabase(obj);
@@ -2546,6 +2687,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2554,7 +2696,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, arg_instance)
+          .insert(arg_request, arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2565,6 +2707,7 @@
       api.DatabasesResourceApi res = new api.SqladminApi(mock).databases;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2616,6 +2759,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2624,7 +2768,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_project, arg_instance)
+          .list(arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DatabasesListResponse response) {
         checkDatabasesListResponse(response);
       })));
@@ -2637,6 +2781,7 @@
       var arg_project = "foo";
       var arg_instance = "foo";
       var arg_database = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Database.fromJson(json);
         checkDatabase(obj);
@@ -2694,6 +2839,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2702,7 +2848,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_project, arg_instance, arg_database)
+          .patch(arg_request, arg_project, arg_instance, arg_database,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2715,6 +2862,7 @@
       var arg_project = "foo";
       var arg_instance = "foo";
       var arg_database = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Database.fromJson(json);
         checkDatabase(obj);
@@ -2772,6 +2920,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2780,7 +2929,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_project, arg_instance, arg_database)
+          .update(arg_request, arg_project, arg_instance, arg_database,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2792,6 +2942,7 @@
       var mock = new HttpServerMock();
       api.FlagsResourceApi res = new api.SqladminApi(mock).flags;
       var arg_databaseVersion = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2827,6 +2978,7 @@
         }
         unittest.expect(queryMap["databaseVersion"].first,
             unittest.equals(arg_databaseVersion));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2835,7 +2987,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(databaseVersion: arg_databaseVersion)
+          .list(databaseVersion: arg_databaseVersion, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.FlagsListResponse response) {
         checkFlagsListResponse(response);
       })));
@@ -2849,6 +3001,7 @@
       var arg_request = buildInstancesCloneRequest();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstancesCloneRequest.fromJson(json);
         checkInstancesCloneRequest(obj);
@@ -2903,6 +3056,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2911,7 +3065,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .clone(arg_request, arg_project, arg_instance)
+          .clone(arg_request, arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2922,6 +3076,7 @@
       api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -2967,6 +3122,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -2975,7 +3131,84 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_instance)
+          .delete(arg_project, arg_instance, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Operation response) {
+        checkOperation(response);
+      })));
+    });
+
+    unittest.test("method--demoteMaster", () {
+      var mock = new HttpServerMock();
+      api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
+      var arg_request = buildInstancesDemoteMasterRequest();
+      var arg_project = "foo";
+      var arg_instance = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.InstancesDemoteMasterRequest.fromJson(json);
+        checkInstancesDemoteMasterRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+        unittest.expect(path.substring(pathOffset, pathOffset + 12),
+            unittest.equals("sql/v1beta4/"));
+        pathOffset += 12;
+        unittest.expect(path.substring(pathOffset, pathOffset + 9),
+            unittest.equals("projects/"));
+        pathOffset += 9;
+        index = path.indexOf("/instances/", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_project"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 11),
+            unittest.equals("/instances/"));
+        pathOffset += 11;
+        index = path.indexOf("/demoteMaster", pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(subPart, unittest.equals("$arg_instance"));
+        unittest.expect(path.substring(pathOffset, pathOffset + 13),
+            unittest.equals("/demoteMaster"));
+        pathOffset += 13;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildOperation());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .demoteMaster(arg_request, arg_project, arg_instance,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -2987,6 +3220,7 @@
       var arg_request = buildInstancesExportRequest();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstancesExportRequest.fromJson(json);
         checkInstancesExportRequest(obj);
@@ -3041,6 +3275,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3049,7 +3284,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .export(arg_request, arg_project, arg_instance)
+          .export(arg_request, arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3061,6 +3296,7 @@
       var arg_request = buildInstancesFailoverRequest();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstancesFailoverRequest.fromJson(json);
         checkInstancesFailoverRequest(obj);
@@ -3115,6 +3351,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3123,7 +3360,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .failover(arg_request, arg_project, arg_instance)
+          .failover(arg_request, arg_project, arg_instance,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3134,6 +3372,7 @@
       api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3179,6 +3418,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3187,7 +3427,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_instance)
+          .get(arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.DatabaseInstance response) {
         checkDatabaseInstance(response);
       })));
@@ -3199,6 +3439,7 @@
       var arg_request = buildInstancesImportRequest();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstancesImportRequest.fromJson(json);
         checkInstancesImportRequest(obj);
@@ -3253,6 +3494,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3261,7 +3503,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .import(arg_request, arg_project, arg_instance)
+          .import(arg_request, arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3272,6 +3514,7 @@
       api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
       var arg_request = buildDatabaseInstance();
       var arg_project = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DatabaseInstance.fromJson(json);
         checkDatabaseInstance(obj);
@@ -3317,6 +3560,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3325,7 +3569,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project)
+          .insert(arg_request, arg_project, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3338,6 +3582,7 @@
       var arg_filter = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3385,6 +3630,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3396,7 +3642,8 @@
           .list(arg_project,
               filter: arg_filter,
               maxResults: arg_maxResults,
-              pageToken: arg_pageToken)
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.InstancesListResponse response) {
         checkInstancesListResponse(response);
       })));
@@ -3408,6 +3655,7 @@
       var arg_request = buildDatabaseInstance();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DatabaseInstance.fromJson(json);
         checkDatabaseInstance(obj);
@@ -3456,6 +3704,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3464,7 +3713,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .patch(arg_request, arg_project, arg_instance)
+          .patch(arg_request, arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3475,6 +3724,7 @@
       api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3526,6 +3776,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3534,7 +3785,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .promoteReplica(arg_project, arg_instance)
+          .promoteReplica(arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3545,6 +3796,7 @@
       api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3596,6 +3848,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3604,7 +3857,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .resetSslConfig(arg_project, arg_instance)
+          .resetSslConfig(arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3615,6 +3868,7 @@
       api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3666,6 +3920,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3674,7 +3929,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .restart(arg_project, arg_instance)
+          .restart(arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3686,6 +3941,7 @@
       var arg_request = buildInstancesRestoreBackupRequest();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstancesRestoreBackupRequest.fromJson(json);
         checkInstancesRestoreBackupRequest(obj);
@@ -3740,6 +3996,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3748,7 +4005,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .restoreBackup(arg_request, arg_project, arg_instance)
+          .restoreBackup(arg_request, arg_project, arg_instance,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3759,6 +4017,7 @@
       api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3810,6 +4069,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3818,7 +4078,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .startReplica(arg_project, arg_instance)
+          .startReplica(arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3829,6 +4089,7 @@
       api.InstancesResourceApi res = new api.SqladminApi(mock).instances;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -3880,6 +4141,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3888,7 +4150,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .stopReplica(arg_project, arg_instance)
+          .stopReplica(arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3900,6 +4162,7 @@
       var arg_request = buildInstancesTruncateLogRequest();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.InstancesTruncateLogRequest.fromJson(json);
         checkInstancesTruncateLogRequest(obj);
@@ -3954,6 +4217,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -3962,7 +4226,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .truncateLog(arg_request, arg_project, arg_instance)
+          .truncateLog(arg_request, arg_project, arg_instance,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -3974,6 +4239,7 @@
       var arg_request = buildDatabaseInstance();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.DatabaseInstance.fromJson(json);
         checkDatabaseInstance(obj);
@@ -4022,6 +4288,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4030,7 +4297,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_project, arg_instance)
+          .update(arg_request, arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4043,6 +4310,7 @@
       api.OperationsResourceApi res = new api.SqladminApi(mock).operations;
       var arg_project = "foo";
       var arg_operation = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4088,6 +4356,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4096,7 +4365,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_operation)
+          .get(arg_project, arg_operation, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4109,6 +4378,7 @@
       var arg_instance = "foo";
       var arg_maxResults = 42;
       var arg_pageToken = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4157,6 +4427,7 @@
             unittest.equals(arg_maxResults));
         unittest.expect(
             queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4166,7 +4437,9 @@
       }), true);
       res
           .list(arg_project, arg_instance,
-              maxResults: arg_maxResults, pageToken: arg_pageToken)
+              maxResults: arg_maxResults,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.OperationsListResponse response) {
         checkOperationsListResponse(response);
       })));
@@ -4180,6 +4453,7 @@
       var arg_request = buildSslCertsCreateEphemeralRequest();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SslCertsCreateEphemeralRequest.fromJson(json);
         checkSslCertsCreateEphemeralRequest(obj);
@@ -4234,6 +4508,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4242,7 +4517,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .createEphemeral(arg_request, arg_project, arg_instance)
+          .createEphemeral(arg_request, arg_project, arg_instance,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SslCert response) {
         checkSslCert(response);
       })));
@@ -4254,6 +4530,7 @@
       var arg_project = "foo";
       var arg_instance = "foo";
       var arg_sha1Fingerprint = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4308,6 +4585,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4316,7 +4594,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_instance, arg_sha1Fingerprint)
+          .delete(arg_project, arg_instance, arg_sha1Fingerprint,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4328,6 +4607,7 @@
       var arg_project = "foo";
       var arg_instance = "foo";
       var arg_sha1Fingerprint = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4382,6 +4662,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4390,7 +4671,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_instance, arg_sha1Fingerprint)
+          .get(arg_project, arg_instance, arg_sha1Fingerprint,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SslCert response) {
         checkSslCert(response);
       })));
@@ -4402,6 +4684,7 @@
       var arg_request = buildSslCertsInsertRequest();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.SslCertsInsertRequest.fromJson(json);
         checkSslCertsInsertRequest(obj);
@@ -4456,6 +4739,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4464,7 +4748,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, arg_instance)
+          .insert(arg_request, arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SslCertsInsertResponse response) {
         checkSslCertsInsertResponse(response);
       })));
@@ -4475,6 +4759,7 @@
       api.SslCertsResourceApi res = new api.SqladminApi(mock).sslCerts;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4526,6 +4811,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4534,7 +4820,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_project, arg_instance)
+          .list(arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.SslCertsListResponse response) {
         checkSslCertsListResponse(response);
       })));
@@ -4546,6 +4832,7 @@
       var mock = new HttpServerMock();
       api.TiersResourceApi res = new api.SqladminApi(mock).tiers;
       var arg_project = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4588,6 +4875,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4596,7 +4884,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_project)
+          .list(arg_project, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TiersListResponse response) {
         checkTiersListResponse(response);
       })));
@@ -4611,6 +4899,7 @@
       var arg_instance = "foo";
       var arg_host = "foo";
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4664,6 +4953,7 @@
         }
         unittest.expect(queryMap["host"].first, unittest.equals(arg_host));
         unittest.expect(queryMap["name"].first, unittest.equals(arg_name));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4672,7 +4962,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_instance, arg_host, arg_name)
+          .delete(arg_project, arg_instance, arg_host, arg_name,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4684,6 +4975,7 @@
       var arg_request = buildUser();
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.User.fromJson(json);
         checkUser(obj);
@@ -4738,6 +5030,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4746,7 +5039,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, arg_instance)
+          .insert(arg_request, arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
@@ -4757,6 +5050,7 @@
       api.UsersResourceApi res = new api.SqladminApi(mock).users;
       var arg_project = "foo";
       var arg_instance = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -4808,6 +5102,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4816,7 +5111,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_project, arg_instance)
+          .list(arg_project, arg_instance, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.UsersListResponse response) {
         checkUsersListResponse(response);
       })));
@@ -4830,6 +5125,7 @@
       var arg_instance = "foo";
       var arg_host = "foo";
       var arg_name = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.User.fromJson(json);
         checkUser(obj);
@@ -4886,6 +5182,7 @@
         }
         unittest.expect(queryMap["host"].first, unittest.equals(arg_host));
         unittest.expect(queryMap["name"].first, unittest.equals(arg_name));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -4894,7 +5191,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .update(arg_request, arg_project, arg_instance, arg_host, arg_name)
+          .update(arg_request, arg_project, arg_instance, arg_host, arg_name,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Operation response) {
         checkOperation(response);
       })));
diff --git a/generated/googleapis_beta/test/taskqueue/v1beta2_test.dart b/generated/googleapis_beta/test/taskqueue/v1beta2_test.dart
index f7391ef..336490a 100644
--- a/generated/googleapis_beta/test/taskqueue/v1beta2_test.dart
+++ b/generated/googleapis_beta/test/taskqueue/v1beta2_test.dart
@@ -83,40 +83,40 @@
   buildCounterTask--;
 }
 
-buildUnnamed3503() {
+buildUnnamed3521() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3503(core.List<core.String> o) {
+checkUnnamed3521(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3504() {
+buildUnnamed3522() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3504(core.List<core.String> o) {
+checkUnnamed3522(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
 }
 
-buildUnnamed3505() {
+buildUnnamed3523() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3505(core.List<core.String> o) {
+checkUnnamed3523(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -127,9 +127,9 @@
   var o = new api.TaskQueueAcl();
   buildCounterTaskQueueAcl++;
   if (buildCounterTaskQueueAcl < 3) {
-    o.adminEmails = buildUnnamed3503();
-    o.consumerEmails = buildUnnamed3504();
-    o.producerEmails = buildUnnamed3505();
+    o.adminEmails = buildUnnamed3521();
+    o.consumerEmails = buildUnnamed3522();
+    o.producerEmails = buildUnnamed3523();
   }
   buildCounterTaskQueueAcl--;
   return o;
@@ -138,9 +138,9 @@
 checkTaskQueueAcl(api.TaskQueueAcl o) {
   buildCounterTaskQueueAcl++;
   if (buildCounterTaskQueueAcl < 3) {
-    checkUnnamed3503(o.adminEmails);
-    checkUnnamed3504(o.consumerEmails);
-    checkUnnamed3505(o.producerEmails);
+    checkUnnamed3521(o.adminEmails);
+    checkUnnamed3522(o.consumerEmails);
+    checkUnnamed3523(o.producerEmails);
   }
   buildCounterTaskQueueAcl--;
 }
@@ -197,14 +197,14 @@
   buildCounterTaskQueue--;
 }
 
-buildUnnamed3506() {
+buildUnnamed3524() {
   var o = new core.List<api.Task>();
   o.add(buildTask());
   o.add(buildTask());
   return o;
 }
 
-checkUnnamed3506(core.List<api.Task> o) {
+checkUnnamed3524(core.List<api.Task> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTask(o[0]);
   checkTask(o[1]);
@@ -215,7 +215,7 @@
   var o = new api.Tasks();
   buildCounterTasks++;
   if (buildCounterTasks < 3) {
-    o.items = buildUnnamed3506();
+    o.items = buildUnnamed3524();
     o.kind = "foo";
   }
   buildCounterTasks--;
@@ -225,20 +225,20 @@
 checkTasks(api.Tasks o) {
   buildCounterTasks++;
   if (buildCounterTasks < 3) {
-    checkUnnamed3506(o.items);
+    checkUnnamed3524(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterTasks--;
 }
 
-buildUnnamed3507() {
+buildUnnamed3525() {
   var o = new core.List<api.Task>();
   o.add(buildTask());
   o.add(buildTask());
   return o;
 }
 
-checkUnnamed3507(core.List<api.Task> o) {
+checkUnnamed3525(core.List<api.Task> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTask(o[0]);
   checkTask(o[1]);
@@ -249,7 +249,7 @@
   var o = new api.Tasks2();
   buildCounterTasks2++;
   if (buildCounterTasks2 < 3) {
-    o.items = buildUnnamed3507();
+    o.items = buildUnnamed3525();
     o.kind = "foo";
   }
   buildCounterTasks2--;
@@ -259,7 +259,7 @@
 checkTasks2(api.Tasks2 o) {
   buildCounterTasks2++;
   if (buildCounterTasks2 < 3) {
-    checkUnnamed3507(o.items);
+    checkUnnamed3525(o.items);
     unittest.expect(o.kind, unittest.equals('foo'));
   }
   buildCounterTasks2--;
@@ -321,6 +321,7 @@
       var arg_project = "foo";
       var arg_taskqueue = "foo";
       var arg_getStats = true;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -350,6 +351,7 @@
         }
         unittest.expect(
             queryMap["getStats"].first, unittest.equals("$arg_getStats"));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -358,7 +360,8 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_taskqueue, getStats: arg_getStats)
+          .get(arg_project, arg_taskqueue,
+              getStats: arg_getStats, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.TaskQueue response) {
         checkTaskQueue(response);
       })));
@@ -372,6 +375,7 @@
       var arg_project = "foo";
       var arg_taskqueue = "foo";
       var arg_task = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -399,6 +403,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -407,7 +412,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .delete(arg_project, arg_taskqueue, arg_task)
+          .delete(arg_project, arg_taskqueue, arg_task, $fields: arg_$fields)
           .then(unittest.expectAsync1((_) {}));
     });
 
@@ -417,6 +422,7 @@
       var arg_project = "foo";
       var arg_taskqueue = "foo";
       var arg_task = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -444,6 +450,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -452,7 +459,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .get(arg_project, arg_taskqueue, arg_task)
+          .get(arg_project, arg_taskqueue, arg_task, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Task response) {
         checkTask(response);
       })));
@@ -464,6 +471,7 @@
       var arg_request = buildTask();
       var arg_project = "foo";
       var arg_taskqueue = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Task.fromJson(json);
         checkTask(obj);
@@ -494,6 +502,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -502,7 +511,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .insert(arg_request, arg_project, arg_taskqueue)
+          .insert(arg_request, arg_project, arg_taskqueue, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Task response) {
         checkTask(response);
       })));
@@ -517,6 +526,7 @@
       var arg_leaseSecs = 42;
       var arg_groupByTag = true;
       var arg_tag = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -551,6 +561,7 @@
         unittest.expect(
             queryMap["groupByTag"].first, unittest.equals("$arg_groupByTag"));
         unittest.expect(queryMap["tag"].first, unittest.equals(arg_tag));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -560,7 +571,7 @@
       }), true);
       res
           .lease(arg_project, arg_taskqueue, arg_numTasks, arg_leaseSecs,
-              groupByTag: arg_groupByTag, tag: arg_tag)
+              groupByTag: arg_groupByTag, tag: arg_tag, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Tasks response) {
         checkTasks(response);
       })));
@@ -571,6 +582,7 @@
       api.TasksResourceApi res = new api.TaskqueueApi(mock).tasks;
       var arg_project = "foo";
       var arg_taskqueue = "foo";
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var path = (req.url).path;
         var pathOffset = 0;
@@ -598,6 +610,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -606,7 +619,7 @@
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
       res
-          .list(arg_project, arg_taskqueue)
+          .list(arg_project, arg_taskqueue, $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Tasks2 response) {
         checkTasks2(response);
       })));
@@ -620,6 +633,7 @@
       var arg_taskqueue = "foo";
       var arg_task = "foo";
       var arg_newLeaseSeconds = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Task.fromJson(json);
         checkTask(obj);
@@ -652,6 +666,7 @@
         }
         unittest.expect(core.int.parse(queryMap["newLeaseSeconds"].first),
             unittest.equals(arg_newLeaseSeconds));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -661,7 +676,8 @@
       }), true);
       res
           .patch(arg_request, arg_project, arg_taskqueue, arg_task,
-              arg_newLeaseSeconds)
+              arg_newLeaseSeconds,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Task response) {
         checkTask(response);
       })));
@@ -675,6 +691,7 @@
       var arg_taskqueue = "foo";
       var arg_task = "foo";
       var arg_newLeaseSeconds = 42;
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api.Task.fromJson(json);
         checkTask(obj);
@@ -707,6 +724,7 @@
         }
         unittest.expect(core.int.parse(queryMap["newLeaseSeconds"].first),
             unittest.equals(arg_newLeaseSeconds));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -716,7 +734,8 @@
       }), true);
       res
           .update(arg_request, arg_project, arg_taskqueue, arg_task,
-              arg_newLeaseSeconds)
+              arg_newLeaseSeconds,
+              $fields: arg_$fields)
           .then(unittest.expectAsync1(((api.Task response) {
         checkTask(response);
       })));
diff --git a/generated/googleapis_beta/test/toolresults/v1beta3_test.dart b/generated/googleapis_beta/test/toolresults/v1beta3_test.dart
new file mode 100644
index 0000000..21c8771
--- /dev/null
+++ b/generated/googleapis_beta/test/toolresults/v1beta3_test.dart
@@ -0,0 +1,3477 @@
+library googleapis_beta.toolresults.v1beta3.test;
+
+import "dart:core" as core;
+import "dart:async" as async;
+import "dart:convert" as convert;
+
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import 'package:googleapis_beta/toolresults/v1beta3.dart' as api;
+
+class HttpServerMock extends http.BaseClient {
+  core.Function _callback;
+  core.bool _expectJson;
+
+  void register(core.Function callback, core.bool expectJson) {
+    _callback = callback;
+    _expectJson = expectJson;
+  }
+
+  async.Future<http.StreamedResponse> send(http.BaseRequest request) {
+    if (_expectJson) {
+      return request
+          .finalize()
+          .transform(convert.UTF8.decoder)
+          .join('')
+          .then((core.String jsonString) {
+        if (jsonString.isEmpty) {
+          return _callback(request, null);
+        } else {
+          return _callback(request, convert.JSON.decode(jsonString));
+        }
+      });
+    } else {
+      var stream = request.finalize();
+      if (stream == null) {
+        return _callback(request, []);
+      } else {
+        return stream.toBytes().then((data) {
+          return _callback(request, data);
+        });
+      }
+    }
+  }
+}
+
+http.StreamedResponse stringResponse(core.int status,
+    core.Map<core.String, core.String> headers, core.String body) {
+  var stream = new async.Stream.fromIterable([convert.UTF8.encode(body)]);
+  return new http.StreamedResponse(stream, status, headers: headers);
+}
+
+core.int buildCounterAndroidAppInfo = 0;
+buildAndroidAppInfo() {
+  var o = new api.AndroidAppInfo();
+  buildCounterAndroidAppInfo++;
+  if (buildCounterAndroidAppInfo < 3) {
+    o.name = "foo";
+    o.packageName = "foo";
+    o.versionCode = "foo";
+    o.versionName = "foo";
+  }
+  buildCounterAndroidAppInfo--;
+  return o;
+}
+
+checkAndroidAppInfo(api.AndroidAppInfo o) {
+  buildCounterAndroidAppInfo++;
+  if (buildCounterAndroidAppInfo < 3) {
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.packageName, unittest.equals('foo'));
+    unittest.expect(o.versionCode, unittest.equals('foo'));
+    unittest.expect(o.versionName, unittest.equals('foo'));
+  }
+  buildCounterAndroidAppInfo--;
+}
+
+buildUnnamed3386() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3386(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterAndroidInstrumentationTest = 0;
+buildAndroidInstrumentationTest() {
+  var o = new api.AndroidInstrumentationTest();
+  buildCounterAndroidInstrumentationTest++;
+  if (buildCounterAndroidInstrumentationTest < 3) {
+    o.testPackageId = "foo";
+    o.testRunnerClass = "foo";
+    o.testTargets = buildUnnamed3386();
+    o.useOrchestrator = true;
+  }
+  buildCounterAndroidInstrumentationTest--;
+  return o;
+}
+
+checkAndroidInstrumentationTest(api.AndroidInstrumentationTest o) {
+  buildCounterAndroidInstrumentationTest++;
+  if (buildCounterAndroidInstrumentationTest < 3) {
+    unittest.expect(o.testPackageId, unittest.equals('foo'));
+    unittest.expect(o.testRunnerClass, unittest.equals('foo'));
+    checkUnnamed3386(o.testTargets);
+    unittest.expect(o.useOrchestrator, unittest.isTrue);
+  }
+  buildCounterAndroidInstrumentationTest--;
+}
+
+core.int buildCounterAndroidRoboTest = 0;
+buildAndroidRoboTest() {
+  var o = new api.AndroidRoboTest();
+  buildCounterAndroidRoboTest++;
+  if (buildCounterAndroidRoboTest < 3) {
+    o.appInitialActivity = "foo";
+    o.bootstrapPackageId = "foo";
+    o.bootstrapRunnerClass = "foo";
+    o.maxDepth = 42;
+    o.maxSteps = 42;
+  }
+  buildCounterAndroidRoboTest--;
+  return o;
+}
+
+checkAndroidRoboTest(api.AndroidRoboTest o) {
+  buildCounterAndroidRoboTest++;
+  if (buildCounterAndroidRoboTest < 3) {
+    unittest.expect(o.appInitialActivity, unittest.equals('foo'));
+    unittest.expect(o.bootstrapPackageId, unittest.equals('foo'));
+    unittest.expect(o.bootstrapRunnerClass, unittest.equals('foo'));
+    unittest.expect(o.maxDepth, unittest.equals(42));
+    unittest.expect(o.maxSteps, unittest.equals(42));
+  }
+  buildCounterAndroidRoboTest--;
+}
+
+core.int buildCounterAndroidTest = 0;
+buildAndroidTest() {
+  var o = new api.AndroidTest();
+  buildCounterAndroidTest++;
+  if (buildCounterAndroidTest < 3) {
+    o.androidAppInfo = buildAndroidAppInfo();
+    o.androidInstrumentationTest = buildAndroidInstrumentationTest();
+    o.androidRoboTest = buildAndroidRoboTest();
+    o.testTimeout = buildDuration();
+  }
+  buildCounterAndroidTest--;
+  return o;
+}
+
+checkAndroidTest(api.AndroidTest o) {
+  buildCounterAndroidTest++;
+  if (buildCounterAndroidTest < 3) {
+    checkAndroidAppInfo(o.androidAppInfo);
+    checkAndroidInstrumentationTest(o.androidInstrumentationTest);
+    checkAndroidRoboTest(o.androidRoboTest);
+    checkDuration(o.testTimeout);
+  }
+  buildCounterAndroidTest--;
+}
+
+core.int buildCounterAny = 0;
+buildAny() {
+  var o = new api.Any();
+  buildCounterAny++;
+  if (buildCounterAny < 3) {
+    o.typeUrl = "foo";
+    o.value = "foo";
+  }
+  buildCounterAny--;
+  return o;
+}
+
+checkAny(api.Any o) {
+  buildCounterAny++;
+  if (buildCounterAny < 3) {
+    unittest.expect(o.typeUrl, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterAny--;
+}
+
+core.int buildCounterAppStartTime = 0;
+buildAppStartTime() {
+  var o = new api.AppStartTime();
+  buildCounterAppStartTime++;
+  if (buildCounterAppStartTime < 3) {
+    o.fullyDrawnTime = buildDuration();
+    o.initialDisplayTime = buildDuration();
+  }
+  buildCounterAppStartTime--;
+  return o;
+}
+
+checkAppStartTime(api.AppStartTime o) {
+  buildCounterAppStartTime++;
+  if (buildCounterAppStartTime < 3) {
+    checkDuration(o.fullyDrawnTime);
+    checkDuration(o.initialDisplayTime);
+  }
+  buildCounterAppStartTime--;
+}
+
+core.int buildCounterBasicPerfSampleSeries = 0;
+buildBasicPerfSampleSeries() {
+  var o = new api.BasicPerfSampleSeries();
+  buildCounterBasicPerfSampleSeries++;
+  if (buildCounterBasicPerfSampleSeries < 3) {
+    o.perfMetricType = "foo";
+    o.perfUnit = "foo";
+    o.sampleSeriesLabel = "foo";
+  }
+  buildCounterBasicPerfSampleSeries--;
+  return o;
+}
+
+checkBasicPerfSampleSeries(api.BasicPerfSampleSeries o) {
+  buildCounterBasicPerfSampleSeries++;
+  if (buildCounterBasicPerfSampleSeries < 3) {
+    unittest.expect(o.perfMetricType, unittest.equals('foo'));
+    unittest.expect(o.perfUnit, unittest.equals('foo'));
+    unittest.expect(o.sampleSeriesLabel, unittest.equals('foo'));
+  }
+  buildCounterBasicPerfSampleSeries--;
+}
+
+buildUnnamed3387() {
+  var o = new core.List<api.PerfSample>();
+  o.add(buildPerfSample());
+  o.add(buildPerfSample());
+  return o;
+}
+
+checkUnnamed3387(core.List<api.PerfSample> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPerfSample(o[0]);
+  checkPerfSample(o[1]);
+}
+
+core.int buildCounterBatchCreatePerfSamplesRequest = 0;
+buildBatchCreatePerfSamplesRequest() {
+  var o = new api.BatchCreatePerfSamplesRequest();
+  buildCounterBatchCreatePerfSamplesRequest++;
+  if (buildCounterBatchCreatePerfSamplesRequest < 3) {
+    o.perfSamples = buildUnnamed3387();
+  }
+  buildCounterBatchCreatePerfSamplesRequest--;
+  return o;
+}
+
+checkBatchCreatePerfSamplesRequest(api.BatchCreatePerfSamplesRequest o) {
+  buildCounterBatchCreatePerfSamplesRequest++;
+  if (buildCounterBatchCreatePerfSamplesRequest < 3) {
+    checkUnnamed3387(o.perfSamples);
+  }
+  buildCounterBatchCreatePerfSamplesRequest--;
+}
+
+buildUnnamed3388() {
+  var o = new core.List<api.PerfSample>();
+  o.add(buildPerfSample());
+  o.add(buildPerfSample());
+  return o;
+}
+
+checkUnnamed3388(core.List<api.PerfSample> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPerfSample(o[0]);
+  checkPerfSample(o[1]);
+}
+
+core.int buildCounterBatchCreatePerfSamplesResponse = 0;
+buildBatchCreatePerfSamplesResponse() {
+  var o = new api.BatchCreatePerfSamplesResponse();
+  buildCounterBatchCreatePerfSamplesResponse++;
+  if (buildCounterBatchCreatePerfSamplesResponse < 3) {
+    o.perfSamples = buildUnnamed3388();
+  }
+  buildCounterBatchCreatePerfSamplesResponse--;
+  return o;
+}
+
+checkBatchCreatePerfSamplesResponse(api.BatchCreatePerfSamplesResponse o) {
+  buildCounterBatchCreatePerfSamplesResponse++;
+  if (buildCounterBatchCreatePerfSamplesResponse < 3) {
+    checkUnnamed3388(o.perfSamples);
+  }
+  buildCounterBatchCreatePerfSamplesResponse--;
+}
+
+core.int buildCounterCPUInfo = 0;
+buildCPUInfo() {
+  var o = new api.CPUInfo();
+  buildCounterCPUInfo++;
+  if (buildCounterCPUInfo < 3) {
+    o.cpuProcessor = "foo";
+    o.cpuSpeedInGhz = 42.0;
+    o.numberOfCores = 42;
+  }
+  buildCounterCPUInfo--;
+  return o;
+}
+
+checkCPUInfo(api.CPUInfo o) {
+  buildCounterCPUInfo++;
+  if (buildCounterCPUInfo < 3) {
+    unittest.expect(o.cpuProcessor, unittest.equals('foo'));
+    unittest.expect(o.cpuSpeedInGhz, unittest.equals(42.0));
+    unittest.expect(o.numberOfCores, unittest.equals(42));
+  }
+  buildCounterCPUInfo--;
+}
+
+core.int buildCounterDuration = 0;
+buildDuration() {
+  var o = new api.Duration();
+  buildCounterDuration++;
+  if (buildCounterDuration < 3) {
+    o.nanos = 42;
+    o.seconds = "foo";
+  }
+  buildCounterDuration--;
+  return o;
+}
+
+checkDuration(api.Duration o) {
+  buildCounterDuration++;
+  if (buildCounterDuration < 3) {
+    unittest.expect(o.nanos, unittest.equals(42));
+    unittest.expect(o.seconds, unittest.equals('foo'));
+  }
+  buildCounterDuration--;
+}
+
+core.int buildCounterExecution = 0;
+buildExecution() {
+  var o = new api.Execution();
+  buildCounterExecution++;
+  if (buildCounterExecution < 3) {
+    o.completionTime = buildTimestamp();
+    o.creationTime = buildTimestamp();
+    o.executionId = "foo";
+    o.outcome = buildOutcome();
+    o.specification = buildSpecification();
+    o.state = "foo";
+    o.testExecutionMatrixId = "foo";
+  }
+  buildCounterExecution--;
+  return o;
+}
+
+checkExecution(api.Execution o) {
+  buildCounterExecution++;
+  if (buildCounterExecution < 3) {
+    checkTimestamp(o.completionTime);
+    checkTimestamp(o.creationTime);
+    unittest.expect(o.executionId, unittest.equals('foo'));
+    checkOutcome(o.outcome);
+    checkSpecification(o.specification);
+    unittest.expect(o.state, unittest.equals('foo'));
+    unittest.expect(o.testExecutionMatrixId, unittest.equals('foo'));
+  }
+  buildCounterExecution--;
+}
+
+core.int buildCounterFailureDetail = 0;
+buildFailureDetail() {
+  var o = new api.FailureDetail();
+  buildCounterFailureDetail++;
+  if (buildCounterFailureDetail < 3) {
+    o.crashed = true;
+    o.notInstalled = true;
+    o.otherNativeCrash = true;
+    o.timedOut = true;
+    o.unableToCrawl = true;
+  }
+  buildCounterFailureDetail--;
+  return o;
+}
+
+checkFailureDetail(api.FailureDetail o) {
+  buildCounterFailureDetail++;
+  if (buildCounterFailureDetail < 3) {
+    unittest.expect(o.crashed, unittest.isTrue);
+    unittest.expect(o.notInstalled, unittest.isTrue);
+    unittest.expect(o.otherNativeCrash, unittest.isTrue);
+    unittest.expect(o.timedOut, unittest.isTrue);
+    unittest.expect(o.unableToCrawl, unittest.isTrue);
+  }
+  buildCounterFailureDetail--;
+}
+
+core.int buildCounterFileReference = 0;
+buildFileReference() {
+  var o = new api.FileReference();
+  buildCounterFileReference++;
+  if (buildCounterFileReference < 3) {
+    o.fileUri = "foo";
+  }
+  buildCounterFileReference--;
+  return o;
+}
+
+checkFileReference(api.FileReference o) {
+  buildCounterFileReference++;
+  if (buildCounterFileReference < 3) {
+    unittest.expect(o.fileUri, unittest.equals('foo'));
+  }
+  buildCounterFileReference--;
+}
+
+buildUnnamed3389() {
+  var o = new core.List<api.GraphicsStatsBucket>();
+  o.add(buildGraphicsStatsBucket());
+  o.add(buildGraphicsStatsBucket());
+  return o;
+}
+
+checkUnnamed3389(core.List<api.GraphicsStatsBucket> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGraphicsStatsBucket(o[0]);
+  checkGraphicsStatsBucket(o[1]);
+}
+
+core.int buildCounterGraphicsStats = 0;
+buildGraphicsStats() {
+  var o = new api.GraphicsStats();
+  buildCounterGraphicsStats++;
+  if (buildCounterGraphicsStats < 3) {
+    o.buckets = buildUnnamed3389();
+    o.highInputLatencyCount = "foo";
+    o.jankyFrames = "foo";
+    o.missedVsyncCount = "foo";
+    o.p50Millis = "foo";
+    o.p90Millis = "foo";
+    o.p95Millis = "foo";
+    o.p99Millis = "foo";
+    o.slowBitmapUploadCount = "foo";
+    o.slowDrawCount = "foo";
+    o.slowUiThreadCount = "foo";
+    o.totalFrames = "foo";
+  }
+  buildCounterGraphicsStats--;
+  return o;
+}
+
+checkGraphicsStats(api.GraphicsStats o) {
+  buildCounterGraphicsStats++;
+  if (buildCounterGraphicsStats < 3) {
+    checkUnnamed3389(o.buckets);
+    unittest.expect(o.highInputLatencyCount, unittest.equals('foo'));
+    unittest.expect(o.jankyFrames, unittest.equals('foo'));
+    unittest.expect(o.missedVsyncCount, unittest.equals('foo'));
+    unittest.expect(o.p50Millis, unittest.equals('foo'));
+    unittest.expect(o.p90Millis, unittest.equals('foo'));
+    unittest.expect(o.p95Millis, unittest.equals('foo'));
+    unittest.expect(o.p99Millis, unittest.equals('foo'));
+    unittest.expect(o.slowBitmapUploadCount, unittest.equals('foo'));
+    unittest.expect(o.slowDrawCount, unittest.equals('foo'));
+    unittest.expect(o.slowUiThreadCount, unittest.equals('foo'));
+    unittest.expect(o.totalFrames, unittest.equals('foo'));
+  }
+  buildCounterGraphicsStats--;
+}
+
+core.int buildCounterGraphicsStatsBucket = 0;
+buildGraphicsStatsBucket() {
+  var o = new api.GraphicsStatsBucket();
+  buildCounterGraphicsStatsBucket++;
+  if (buildCounterGraphicsStatsBucket < 3) {
+    o.frameCount = "foo";
+    o.renderMillis = "foo";
+  }
+  buildCounterGraphicsStatsBucket--;
+  return o;
+}
+
+checkGraphicsStatsBucket(api.GraphicsStatsBucket o) {
+  buildCounterGraphicsStatsBucket++;
+  if (buildCounterGraphicsStatsBucket < 3) {
+    unittest.expect(o.frameCount, unittest.equals('foo'));
+    unittest.expect(o.renderMillis, unittest.equals('foo'));
+  }
+  buildCounterGraphicsStatsBucket--;
+}
+
+core.int buildCounterHistory = 0;
+buildHistory() {
+  var o = new api.History();
+  buildCounterHistory++;
+  if (buildCounterHistory < 3) {
+    o.displayName = "foo";
+    o.historyId = "foo";
+    o.name = "foo";
+  }
+  buildCounterHistory--;
+  return o;
+}
+
+checkHistory(api.History o) {
+  buildCounterHistory++;
+  if (buildCounterHistory < 3) {
+    unittest.expect(o.displayName, unittest.equals('foo'));
+    unittest.expect(o.historyId, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterHistory--;
+}
+
+core.int buildCounterImage = 0;
+buildImage() {
+  var o = new api.Image();
+  buildCounterImage++;
+  if (buildCounterImage < 3) {
+    o.error = buildStatus();
+    o.sourceImage = buildToolOutputReference();
+    o.stepId = "foo";
+    o.thumbnail = buildThumbnail();
+  }
+  buildCounterImage--;
+  return o;
+}
+
+checkImage(api.Image o) {
+  buildCounterImage++;
+  if (buildCounterImage < 3) {
+    checkStatus(o.error);
+    checkToolOutputReference(o.sourceImage);
+    unittest.expect(o.stepId, unittest.equals('foo'));
+    checkThumbnail(o.thumbnail);
+  }
+  buildCounterImage--;
+}
+
+core.int buildCounterInconclusiveDetail = 0;
+buildInconclusiveDetail() {
+  var o = new api.InconclusiveDetail();
+  buildCounterInconclusiveDetail++;
+  if (buildCounterInconclusiveDetail < 3) {
+    o.abortedByUser = true;
+    o.infrastructureFailure = true;
+  }
+  buildCounterInconclusiveDetail--;
+  return o;
+}
+
+checkInconclusiveDetail(api.InconclusiveDetail o) {
+  buildCounterInconclusiveDetail++;
+  if (buildCounterInconclusiveDetail < 3) {
+    unittest.expect(o.abortedByUser, unittest.isTrue);
+    unittest.expect(o.infrastructureFailure, unittest.isTrue);
+  }
+  buildCounterInconclusiveDetail--;
+}
+
+buildUnnamed3390() {
+  var o = new core.List<api.Execution>();
+  o.add(buildExecution());
+  o.add(buildExecution());
+  return o;
+}
+
+checkUnnamed3390(core.List<api.Execution> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkExecution(o[0]);
+  checkExecution(o[1]);
+}
+
+core.int buildCounterListExecutionsResponse = 0;
+buildListExecutionsResponse() {
+  var o = new api.ListExecutionsResponse();
+  buildCounterListExecutionsResponse++;
+  if (buildCounterListExecutionsResponse < 3) {
+    o.executions = buildUnnamed3390();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListExecutionsResponse--;
+  return o;
+}
+
+checkListExecutionsResponse(api.ListExecutionsResponse o) {
+  buildCounterListExecutionsResponse++;
+  if (buildCounterListExecutionsResponse < 3) {
+    checkUnnamed3390(o.executions);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListExecutionsResponse--;
+}
+
+buildUnnamed3391() {
+  var o = new core.List<api.History>();
+  o.add(buildHistory());
+  o.add(buildHistory());
+  return o;
+}
+
+checkUnnamed3391(core.List<api.History> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkHistory(o[0]);
+  checkHistory(o[1]);
+}
+
+core.int buildCounterListHistoriesResponse = 0;
+buildListHistoriesResponse() {
+  var o = new api.ListHistoriesResponse();
+  buildCounterListHistoriesResponse++;
+  if (buildCounterListHistoriesResponse < 3) {
+    o.histories = buildUnnamed3391();
+    o.nextPageToken = "foo";
+  }
+  buildCounterListHistoriesResponse--;
+  return o;
+}
+
+checkListHistoriesResponse(api.ListHistoriesResponse o) {
+  buildCounterListHistoriesResponse++;
+  if (buildCounterListHistoriesResponse < 3) {
+    checkUnnamed3391(o.histories);
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+  }
+  buildCounterListHistoriesResponse--;
+}
+
+buildUnnamed3392() {
+  var o = new core.List<api.PerfSampleSeries>();
+  o.add(buildPerfSampleSeries());
+  o.add(buildPerfSampleSeries());
+  return o;
+}
+
+checkUnnamed3392(core.List<api.PerfSampleSeries> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPerfSampleSeries(o[0]);
+  checkPerfSampleSeries(o[1]);
+}
+
+core.int buildCounterListPerfSampleSeriesResponse = 0;
+buildListPerfSampleSeriesResponse() {
+  var o = new api.ListPerfSampleSeriesResponse();
+  buildCounterListPerfSampleSeriesResponse++;
+  if (buildCounterListPerfSampleSeriesResponse < 3) {
+    o.perfSampleSeries = buildUnnamed3392();
+  }
+  buildCounterListPerfSampleSeriesResponse--;
+  return o;
+}
+
+checkListPerfSampleSeriesResponse(api.ListPerfSampleSeriesResponse o) {
+  buildCounterListPerfSampleSeriesResponse++;
+  if (buildCounterListPerfSampleSeriesResponse < 3) {
+    checkUnnamed3392(o.perfSampleSeries);
+  }
+  buildCounterListPerfSampleSeriesResponse--;
+}
+
+buildUnnamed3393() {
+  var o = new core.List<api.PerfSample>();
+  o.add(buildPerfSample());
+  o.add(buildPerfSample());
+  return o;
+}
+
+checkUnnamed3393(core.List<api.PerfSample> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkPerfSample(o[0]);
+  checkPerfSample(o[1]);
+}
+
+core.int buildCounterListPerfSamplesResponse = 0;
+buildListPerfSamplesResponse() {
+  var o = new api.ListPerfSamplesResponse();
+  buildCounterListPerfSamplesResponse++;
+  if (buildCounterListPerfSamplesResponse < 3) {
+    o.nextPageToken = "foo";
+    o.perfSamples = buildUnnamed3393();
+  }
+  buildCounterListPerfSamplesResponse--;
+  return o;
+}
+
+checkListPerfSamplesResponse(api.ListPerfSamplesResponse o) {
+  buildCounterListPerfSamplesResponse++;
+  if (buildCounterListPerfSamplesResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3393(o.perfSamples);
+  }
+  buildCounterListPerfSamplesResponse--;
+}
+
+buildUnnamed3394() {
+  var o = new core.List<api.ScreenshotCluster>();
+  o.add(buildScreenshotCluster());
+  o.add(buildScreenshotCluster());
+  return o;
+}
+
+checkUnnamed3394(core.List<api.ScreenshotCluster> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkScreenshotCluster(o[0]);
+  checkScreenshotCluster(o[1]);
+}
+
+core.int buildCounterListScreenshotClustersResponse = 0;
+buildListScreenshotClustersResponse() {
+  var o = new api.ListScreenshotClustersResponse();
+  buildCounterListScreenshotClustersResponse++;
+  if (buildCounterListScreenshotClustersResponse < 3) {
+    o.clusters = buildUnnamed3394();
+  }
+  buildCounterListScreenshotClustersResponse--;
+  return o;
+}
+
+checkListScreenshotClustersResponse(api.ListScreenshotClustersResponse o) {
+  buildCounterListScreenshotClustersResponse++;
+  if (buildCounterListScreenshotClustersResponse < 3) {
+    checkUnnamed3394(o.clusters);
+  }
+  buildCounterListScreenshotClustersResponse--;
+}
+
+buildUnnamed3395() {
+  var o = new core.List<api.Image>();
+  o.add(buildImage());
+  o.add(buildImage());
+  return o;
+}
+
+checkUnnamed3395(core.List<api.Image> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkImage(o[0]);
+  checkImage(o[1]);
+}
+
+core.int buildCounterListStepThumbnailsResponse = 0;
+buildListStepThumbnailsResponse() {
+  var o = new api.ListStepThumbnailsResponse();
+  buildCounterListStepThumbnailsResponse++;
+  if (buildCounterListStepThumbnailsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.thumbnails = buildUnnamed3395();
+  }
+  buildCounterListStepThumbnailsResponse--;
+  return o;
+}
+
+checkListStepThumbnailsResponse(api.ListStepThumbnailsResponse o) {
+  buildCounterListStepThumbnailsResponse++;
+  if (buildCounterListStepThumbnailsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3395(o.thumbnails);
+  }
+  buildCounterListStepThumbnailsResponse--;
+}
+
+buildUnnamed3396() {
+  var o = new core.List<api.Step>();
+  o.add(buildStep());
+  o.add(buildStep());
+  return o;
+}
+
+checkUnnamed3396(core.List<api.Step> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkStep(o[0]);
+  checkStep(o[1]);
+}
+
+core.int buildCounterListStepsResponse = 0;
+buildListStepsResponse() {
+  var o = new api.ListStepsResponse();
+  buildCounterListStepsResponse++;
+  if (buildCounterListStepsResponse < 3) {
+    o.nextPageToken = "foo";
+    o.steps = buildUnnamed3396();
+  }
+  buildCounterListStepsResponse--;
+  return o;
+}
+
+checkListStepsResponse(api.ListStepsResponse o) {
+  buildCounterListStepsResponse++;
+  if (buildCounterListStepsResponse < 3) {
+    unittest.expect(o.nextPageToken, unittest.equals('foo'));
+    checkUnnamed3396(o.steps);
+  }
+  buildCounterListStepsResponse--;
+}
+
+core.int buildCounterMemoryInfo = 0;
+buildMemoryInfo() {
+  var o = new api.MemoryInfo();
+  buildCounterMemoryInfo++;
+  if (buildCounterMemoryInfo < 3) {
+    o.memoryCapInKibibyte = "foo";
+    o.memoryTotalInKibibyte = "foo";
+  }
+  buildCounterMemoryInfo--;
+  return o;
+}
+
+checkMemoryInfo(api.MemoryInfo o) {
+  buildCounterMemoryInfo++;
+  if (buildCounterMemoryInfo < 3) {
+    unittest.expect(o.memoryCapInKibibyte, unittest.equals('foo'));
+    unittest.expect(o.memoryTotalInKibibyte, unittest.equals('foo'));
+  }
+  buildCounterMemoryInfo--;
+}
+
+core.int buildCounterOutcome = 0;
+buildOutcome() {
+  var o = new api.Outcome();
+  buildCounterOutcome++;
+  if (buildCounterOutcome < 3) {
+    o.failureDetail = buildFailureDetail();
+    o.inconclusiveDetail = buildInconclusiveDetail();
+    o.skippedDetail = buildSkippedDetail();
+    o.successDetail = buildSuccessDetail();
+    o.summary = "foo";
+  }
+  buildCounterOutcome--;
+  return o;
+}
+
+checkOutcome(api.Outcome o) {
+  buildCounterOutcome++;
+  if (buildCounterOutcome < 3) {
+    checkFailureDetail(o.failureDetail);
+    checkInconclusiveDetail(o.inconclusiveDetail);
+    checkSkippedDetail(o.skippedDetail);
+    checkSuccessDetail(o.successDetail);
+    unittest.expect(o.summary, unittest.equals('foo'));
+  }
+  buildCounterOutcome--;
+}
+
+core.int buildCounterPerfEnvironment = 0;
+buildPerfEnvironment() {
+  var o = new api.PerfEnvironment();
+  buildCounterPerfEnvironment++;
+  if (buildCounterPerfEnvironment < 3) {
+    o.cpuInfo = buildCPUInfo();
+    o.memoryInfo = buildMemoryInfo();
+  }
+  buildCounterPerfEnvironment--;
+  return o;
+}
+
+checkPerfEnvironment(api.PerfEnvironment o) {
+  buildCounterPerfEnvironment++;
+  if (buildCounterPerfEnvironment < 3) {
+    checkCPUInfo(o.cpuInfo);
+    checkMemoryInfo(o.memoryInfo);
+  }
+  buildCounterPerfEnvironment--;
+}
+
+buildUnnamed3397() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3397(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+core.int buildCounterPerfMetricsSummary = 0;
+buildPerfMetricsSummary() {
+  var o = new api.PerfMetricsSummary();
+  buildCounterPerfMetricsSummary++;
+  if (buildCounterPerfMetricsSummary < 3) {
+    o.appStartTime = buildAppStartTime();
+    o.executionId = "foo";
+    o.graphicsStats = buildGraphicsStats();
+    o.historyId = "foo";
+    o.perfEnvironment = buildPerfEnvironment();
+    o.perfMetrics = buildUnnamed3397();
+    o.projectId = "foo";
+    o.stepId = "foo";
+  }
+  buildCounterPerfMetricsSummary--;
+  return o;
+}
+
+checkPerfMetricsSummary(api.PerfMetricsSummary o) {
+  buildCounterPerfMetricsSummary++;
+  if (buildCounterPerfMetricsSummary < 3) {
+    checkAppStartTime(o.appStartTime);
+    unittest.expect(o.executionId, unittest.equals('foo'));
+    checkGraphicsStats(o.graphicsStats);
+    unittest.expect(o.historyId, unittest.equals('foo'));
+    checkPerfEnvironment(o.perfEnvironment);
+    checkUnnamed3397(o.perfMetrics);
+    unittest.expect(o.projectId, unittest.equals('foo'));
+    unittest.expect(o.stepId, unittest.equals('foo'));
+  }
+  buildCounterPerfMetricsSummary--;
+}
+
+core.int buildCounterPerfSample = 0;
+buildPerfSample() {
+  var o = new api.PerfSample();
+  buildCounterPerfSample++;
+  if (buildCounterPerfSample < 3) {
+    o.sampleTime = buildTimestamp();
+    o.value = 42.0;
+  }
+  buildCounterPerfSample--;
+  return o;
+}
+
+checkPerfSample(api.PerfSample o) {
+  buildCounterPerfSample++;
+  if (buildCounterPerfSample < 3) {
+    checkTimestamp(o.sampleTime);
+    unittest.expect(o.value, unittest.equals(42.0));
+  }
+  buildCounterPerfSample--;
+}
+
+core.int buildCounterPerfSampleSeries = 0;
+buildPerfSampleSeries() {
+  var o = new api.PerfSampleSeries();
+  buildCounterPerfSampleSeries++;
+  if (buildCounterPerfSampleSeries < 3) {
+    o.basicPerfSampleSeries = buildBasicPerfSampleSeries();
+    o.executionId = "foo";
+    o.historyId = "foo";
+    o.projectId = "foo";
+    o.sampleSeriesId = "foo";
+    o.stepId = "foo";
+  }
+  buildCounterPerfSampleSeries--;
+  return o;
+}
+
+checkPerfSampleSeries(api.PerfSampleSeries o) {
+  buildCounterPerfSampleSeries++;
+  if (buildCounterPerfSampleSeries < 3) {
+    checkBasicPerfSampleSeries(o.basicPerfSampleSeries);
+    unittest.expect(o.executionId, unittest.equals('foo'));
+    unittest.expect(o.historyId, unittest.equals('foo'));
+    unittest.expect(o.projectId, unittest.equals('foo'));
+    unittest.expect(o.sampleSeriesId, unittest.equals('foo'));
+    unittest.expect(o.stepId, unittest.equals('foo'));
+  }
+  buildCounterPerfSampleSeries--;
+}
+
+core.int buildCounterProjectSettings = 0;
+buildProjectSettings() {
+  var o = new api.ProjectSettings();
+  buildCounterProjectSettings++;
+  if (buildCounterProjectSettings < 3) {
+    o.defaultBucket = "foo";
+    o.name = "foo";
+  }
+  buildCounterProjectSettings--;
+  return o;
+}
+
+checkProjectSettings(api.ProjectSettings o) {
+  buildCounterProjectSettings++;
+  if (buildCounterProjectSettings < 3) {
+    unittest.expect(o.defaultBucket, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+  }
+  buildCounterProjectSettings--;
+}
+
+buildUnnamed3398() {
+  var o = new core.List<api.FileReference>();
+  o.add(buildFileReference());
+  o.add(buildFileReference());
+  return o;
+}
+
+checkUnnamed3398(core.List<api.FileReference> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFileReference(o[0]);
+  checkFileReference(o[1]);
+}
+
+core.int buildCounterPublishXunitXmlFilesRequest = 0;
+buildPublishXunitXmlFilesRequest() {
+  var o = new api.PublishXunitXmlFilesRequest();
+  buildCounterPublishXunitXmlFilesRequest++;
+  if (buildCounterPublishXunitXmlFilesRequest < 3) {
+    o.xunitXmlFiles = buildUnnamed3398();
+  }
+  buildCounterPublishXunitXmlFilesRequest--;
+  return o;
+}
+
+checkPublishXunitXmlFilesRequest(api.PublishXunitXmlFilesRequest o) {
+  buildCounterPublishXunitXmlFilesRequest++;
+  if (buildCounterPublishXunitXmlFilesRequest < 3) {
+    checkUnnamed3398(o.xunitXmlFiles);
+  }
+  buildCounterPublishXunitXmlFilesRequest--;
+}
+
+core.int buildCounterScreen = 0;
+buildScreen() {
+  var o = new api.Screen();
+  buildCounterScreen++;
+  if (buildCounterScreen < 3) {
+    o.fileReference = "foo";
+    o.locale = "foo";
+    o.model = "foo";
+    o.version = "foo";
+  }
+  buildCounterScreen--;
+  return o;
+}
+
+checkScreen(api.Screen o) {
+  buildCounterScreen++;
+  if (buildCounterScreen < 3) {
+    unittest.expect(o.fileReference, unittest.equals('foo'));
+    unittest.expect(o.locale, unittest.equals('foo'));
+    unittest.expect(o.model, unittest.equals('foo'));
+    unittest.expect(o.version, unittest.equals('foo'));
+  }
+  buildCounterScreen--;
+}
+
+buildUnnamed3399() {
+  var o = new core.List<api.Screen>();
+  o.add(buildScreen());
+  o.add(buildScreen());
+  return o;
+}
+
+checkUnnamed3399(core.List<api.Screen> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkScreen(o[0]);
+  checkScreen(o[1]);
+}
+
+core.int buildCounterScreenshotCluster = 0;
+buildScreenshotCluster() {
+  var o = new api.ScreenshotCluster();
+  buildCounterScreenshotCluster++;
+  if (buildCounterScreenshotCluster < 3) {
+    o.activity = "foo";
+    o.clusterId = "foo";
+    o.keyScreen = buildScreen();
+    o.screens = buildUnnamed3399();
+  }
+  buildCounterScreenshotCluster--;
+  return o;
+}
+
+checkScreenshotCluster(api.ScreenshotCluster o) {
+  buildCounterScreenshotCluster++;
+  if (buildCounterScreenshotCluster < 3) {
+    unittest.expect(o.activity, unittest.equals('foo'));
+    unittest.expect(o.clusterId, unittest.equals('foo'));
+    checkScreen(o.keyScreen);
+    checkUnnamed3399(o.screens);
+  }
+  buildCounterScreenshotCluster--;
+}
+
+core.int buildCounterSkippedDetail = 0;
+buildSkippedDetail() {
+  var o = new api.SkippedDetail();
+  buildCounterSkippedDetail++;
+  if (buildCounterSkippedDetail < 3) {
+    o.incompatibleAppVersion = true;
+    o.incompatibleArchitecture = true;
+    o.incompatibleDevice = true;
+  }
+  buildCounterSkippedDetail--;
+  return o;
+}
+
+checkSkippedDetail(api.SkippedDetail o) {
+  buildCounterSkippedDetail++;
+  if (buildCounterSkippedDetail < 3) {
+    unittest.expect(o.incompatibleAppVersion, unittest.isTrue);
+    unittest.expect(o.incompatibleArchitecture, unittest.isTrue);
+    unittest.expect(o.incompatibleDevice, unittest.isTrue);
+  }
+  buildCounterSkippedDetail--;
+}
+
+core.int buildCounterSpecification = 0;
+buildSpecification() {
+  var o = new api.Specification();
+  buildCounterSpecification++;
+  if (buildCounterSpecification < 3) {
+    o.androidTest = buildAndroidTest();
+  }
+  buildCounterSpecification--;
+  return o;
+}
+
+checkSpecification(api.Specification o) {
+  buildCounterSpecification++;
+  if (buildCounterSpecification < 3) {
+    checkAndroidTest(o.androidTest);
+  }
+  buildCounterSpecification--;
+}
+
+core.int buildCounterStackTrace = 0;
+buildStackTrace() {
+  var o = new api.StackTrace();
+  buildCounterStackTrace++;
+  if (buildCounterStackTrace < 3) {
+    o.clusterId = "foo";
+    o.exception = "foo";
+    o.reportId = "foo";
+  }
+  buildCounterStackTrace--;
+  return o;
+}
+
+checkStackTrace(api.StackTrace o) {
+  buildCounterStackTrace++;
+  if (buildCounterStackTrace < 3) {
+    unittest.expect(o.clusterId, unittest.equals('foo'));
+    unittest.expect(o.exception, unittest.equals('foo'));
+    unittest.expect(o.reportId, unittest.equals('foo'));
+  }
+  buildCounterStackTrace--;
+}
+
+buildUnnamed3400() {
+  var o = new core.List<api.Any>();
+  o.add(buildAny());
+  o.add(buildAny());
+  return o;
+}
+
+checkUnnamed3400(core.List<api.Any> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAny(o[0]);
+  checkAny(o[1]);
+}
+
+core.int buildCounterStatus = 0;
+buildStatus() {
+  var o = new api.Status();
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    o.code = 42;
+    o.details = buildUnnamed3400();
+    o.message = "foo";
+  }
+  buildCounterStatus--;
+  return o;
+}
+
+checkStatus(api.Status o) {
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    unittest.expect(o.code, unittest.equals(42));
+    checkUnnamed3400(o.details);
+    unittest.expect(o.message, unittest.equals('foo'));
+  }
+  buildCounterStatus--;
+}
+
+buildUnnamed3401() {
+  var o = new core.List<api.StepDimensionValueEntry>();
+  o.add(buildStepDimensionValueEntry());
+  o.add(buildStepDimensionValueEntry());
+  return o;
+}
+
+checkUnnamed3401(core.List<api.StepDimensionValueEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkStepDimensionValueEntry(o[0]);
+  checkStepDimensionValueEntry(o[1]);
+}
+
+buildUnnamed3402() {
+  var o = new core.List<api.StepLabelsEntry>();
+  o.add(buildStepLabelsEntry());
+  o.add(buildStepLabelsEntry());
+  return o;
+}
+
+checkUnnamed3402(core.List<api.StepLabelsEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkStepLabelsEntry(o[0]);
+  checkStepLabelsEntry(o[1]);
+}
+
+core.int buildCounterStep = 0;
+buildStep() {
+  var o = new api.Step();
+  buildCounterStep++;
+  if (buildCounterStep < 3) {
+    o.completionTime = buildTimestamp();
+    o.creationTime = buildTimestamp();
+    o.description = "foo";
+    o.deviceUsageDuration = buildDuration();
+    o.dimensionValue = buildUnnamed3401();
+    o.hasImages = true;
+    o.labels = buildUnnamed3402();
+    o.name = "foo";
+    o.outcome = buildOutcome();
+    o.runDuration = buildDuration();
+    o.state = "foo";
+    o.stepId = "foo";
+    o.testExecutionStep = buildTestExecutionStep();
+    o.toolExecutionStep = buildToolExecutionStep();
+  }
+  buildCounterStep--;
+  return o;
+}
+
+checkStep(api.Step o) {
+  buildCounterStep++;
+  if (buildCounterStep < 3) {
+    checkTimestamp(o.completionTime);
+    checkTimestamp(o.creationTime);
+    unittest.expect(o.description, unittest.equals('foo'));
+    checkDuration(o.deviceUsageDuration);
+    checkUnnamed3401(o.dimensionValue);
+    unittest.expect(o.hasImages, unittest.isTrue);
+    checkUnnamed3402(o.labels);
+    unittest.expect(o.name, unittest.equals('foo'));
+    checkOutcome(o.outcome);
+    checkDuration(o.runDuration);
+    unittest.expect(o.state, unittest.equals('foo'));
+    unittest.expect(o.stepId, unittest.equals('foo'));
+    checkTestExecutionStep(o.testExecutionStep);
+    checkToolExecutionStep(o.toolExecutionStep);
+  }
+  buildCounterStep--;
+}
+
+core.int buildCounterStepDimensionValueEntry = 0;
+buildStepDimensionValueEntry() {
+  var o = new api.StepDimensionValueEntry();
+  buildCounterStepDimensionValueEntry++;
+  if (buildCounterStepDimensionValueEntry < 3) {
+    o.key = "foo";
+    o.value = "foo";
+  }
+  buildCounterStepDimensionValueEntry--;
+  return o;
+}
+
+checkStepDimensionValueEntry(api.StepDimensionValueEntry o) {
+  buildCounterStepDimensionValueEntry++;
+  if (buildCounterStepDimensionValueEntry < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterStepDimensionValueEntry--;
+}
+
+core.int buildCounterStepLabelsEntry = 0;
+buildStepLabelsEntry() {
+  var o = new api.StepLabelsEntry();
+  buildCounterStepLabelsEntry++;
+  if (buildCounterStepLabelsEntry < 3) {
+    o.key = "foo";
+    o.value = "foo";
+  }
+  buildCounterStepLabelsEntry--;
+  return o;
+}
+
+checkStepLabelsEntry(api.StepLabelsEntry o) {
+  buildCounterStepLabelsEntry++;
+  if (buildCounterStepLabelsEntry < 3) {
+    unittest.expect(o.key, unittest.equals('foo'));
+    unittest.expect(o.value, unittest.equals('foo'));
+  }
+  buildCounterStepLabelsEntry--;
+}
+
+core.int buildCounterSuccessDetail = 0;
+buildSuccessDetail() {
+  var o = new api.SuccessDetail();
+  buildCounterSuccessDetail++;
+  if (buildCounterSuccessDetail < 3) {
+    o.otherNativeCrash = true;
+  }
+  buildCounterSuccessDetail--;
+  return o;
+}
+
+checkSuccessDetail(api.SuccessDetail o) {
+  buildCounterSuccessDetail++;
+  if (buildCounterSuccessDetail < 3) {
+    unittest.expect(o.otherNativeCrash, unittest.isTrue);
+  }
+  buildCounterSuccessDetail--;
+}
+
+core.int buildCounterTestCaseReference = 0;
+buildTestCaseReference() {
+  var o = new api.TestCaseReference();
+  buildCounterTestCaseReference++;
+  if (buildCounterTestCaseReference < 3) {
+    o.className = "foo";
+    o.name = "foo";
+    o.testSuiteName = "foo";
+  }
+  buildCounterTestCaseReference--;
+  return o;
+}
+
+checkTestCaseReference(api.TestCaseReference o) {
+  buildCounterTestCaseReference++;
+  if (buildCounterTestCaseReference < 3) {
+    unittest.expect(o.className, unittest.equals('foo'));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.testSuiteName, unittest.equals('foo'));
+  }
+  buildCounterTestCaseReference--;
+}
+
+buildUnnamed3403() {
+  var o = new core.List<api.TestIssue>();
+  o.add(buildTestIssue());
+  o.add(buildTestIssue());
+  return o;
+}
+
+checkUnnamed3403(core.List<api.TestIssue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTestIssue(o[0]);
+  checkTestIssue(o[1]);
+}
+
+buildUnnamed3404() {
+  var o = new core.List<api.TestSuiteOverview>();
+  o.add(buildTestSuiteOverview());
+  o.add(buildTestSuiteOverview());
+  return o;
+}
+
+checkUnnamed3404(core.List<api.TestSuiteOverview> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTestSuiteOverview(o[0]);
+  checkTestSuiteOverview(o[1]);
+}
+
+core.int buildCounterTestExecutionStep = 0;
+buildTestExecutionStep() {
+  var o = new api.TestExecutionStep();
+  buildCounterTestExecutionStep++;
+  if (buildCounterTestExecutionStep < 3) {
+    o.testIssues = buildUnnamed3403();
+    o.testSuiteOverviews = buildUnnamed3404();
+    o.testTiming = buildTestTiming();
+    o.toolExecution = buildToolExecution();
+  }
+  buildCounterTestExecutionStep--;
+  return o;
+}
+
+checkTestExecutionStep(api.TestExecutionStep o) {
+  buildCounterTestExecutionStep++;
+  if (buildCounterTestExecutionStep < 3) {
+    checkUnnamed3403(o.testIssues);
+    checkUnnamed3404(o.testSuiteOverviews);
+    checkTestTiming(o.testTiming);
+    checkToolExecution(o.toolExecution);
+  }
+  buildCounterTestExecutionStep--;
+}
+
+core.int buildCounterTestIssue = 0;
+buildTestIssue() {
+  var o = new api.TestIssue();
+  buildCounterTestIssue++;
+  if (buildCounterTestIssue < 3) {
+    o.errorMessage = "foo";
+    o.severity = "foo";
+    o.stackTrace = buildStackTrace();
+    o.type = "foo";
+    o.warning = buildAny();
+  }
+  buildCounterTestIssue--;
+  return o;
+}
+
+checkTestIssue(api.TestIssue o) {
+  buildCounterTestIssue++;
+  if (buildCounterTestIssue < 3) {
+    unittest.expect(o.errorMessage, unittest.equals('foo'));
+    unittest.expect(o.severity, unittest.equals('foo'));
+    checkStackTrace(o.stackTrace);
+    unittest.expect(o.type, unittest.equals('foo'));
+    checkAny(o.warning);
+  }
+  buildCounterTestIssue--;
+}
+
+core.int buildCounterTestSuiteOverview = 0;
+buildTestSuiteOverview() {
+  var o = new api.TestSuiteOverview();
+  buildCounterTestSuiteOverview++;
+  if (buildCounterTestSuiteOverview < 3) {
+    o.errorCount = 42;
+    o.failureCount = 42;
+    o.name = "foo";
+    o.skippedCount = 42;
+    o.totalCount = 42;
+    o.xmlSource = buildFileReference();
+  }
+  buildCounterTestSuiteOverview--;
+  return o;
+}
+
+checkTestSuiteOverview(api.TestSuiteOverview o) {
+  buildCounterTestSuiteOverview++;
+  if (buildCounterTestSuiteOverview < 3) {
+    unittest.expect(o.errorCount, unittest.equals(42));
+    unittest.expect(o.failureCount, unittest.equals(42));
+    unittest.expect(o.name, unittest.equals('foo'));
+    unittest.expect(o.skippedCount, unittest.equals(42));
+    unittest.expect(o.totalCount, unittest.equals(42));
+    checkFileReference(o.xmlSource);
+  }
+  buildCounterTestSuiteOverview--;
+}
+
+core.int buildCounterTestTiming = 0;
+buildTestTiming() {
+  var o = new api.TestTiming();
+  buildCounterTestTiming++;
+  if (buildCounterTestTiming < 3) {
+    o.testProcessDuration = buildDuration();
+  }
+  buildCounterTestTiming--;
+  return o;
+}
+
+checkTestTiming(api.TestTiming o) {
+  buildCounterTestTiming++;
+  if (buildCounterTestTiming < 3) {
+    checkDuration(o.testProcessDuration);
+  }
+  buildCounterTestTiming--;
+}
+
+core.int buildCounterThumbnail = 0;
+buildThumbnail() {
+  var o = new api.Thumbnail();
+  buildCounterThumbnail++;
+  if (buildCounterThumbnail < 3) {
+    o.contentType = "foo";
+    o.data = "foo";
+    o.heightPx = 42;
+    o.widthPx = 42;
+  }
+  buildCounterThumbnail--;
+  return o;
+}
+
+checkThumbnail(api.Thumbnail o) {
+  buildCounterThumbnail++;
+  if (buildCounterThumbnail < 3) {
+    unittest.expect(o.contentType, unittest.equals('foo'));
+    unittest.expect(o.data, unittest.equals('foo'));
+    unittest.expect(o.heightPx, unittest.equals(42));
+    unittest.expect(o.widthPx, unittest.equals(42));
+  }
+  buildCounterThumbnail--;
+}
+
+core.int buildCounterTimestamp = 0;
+buildTimestamp() {
+  var o = new api.Timestamp();
+  buildCounterTimestamp++;
+  if (buildCounterTimestamp < 3) {
+    o.nanos = 42;
+    o.seconds = "foo";
+  }
+  buildCounterTimestamp--;
+  return o;
+}
+
+checkTimestamp(api.Timestamp o) {
+  buildCounterTimestamp++;
+  if (buildCounterTimestamp < 3) {
+    unittest.expect(o.nanos, unittest.equals(42));
+    unittest.expect(o.seconds, unittest.equals('foo'));
+  }
+  buildCounterTimestamp--;
+}
+
+buildUnnamed3405() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3405(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+buildUnnamed3406() {
+  var o = new core.List<api.FileReference>();
+  o.add(buildFileReference());
+  o.add(buildFileReference());
+  return o;
+}
+
+checkUnnamed3406(core.List<api.FileReference> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFileReference(o[0]);
+  checkFileReference(o[1]);
+}
+
+buildUnnamed3407() {
+  var o = new core.List<api.ToolOutputReference>();
+  o.add(buildToolOutputReference());
+  o.add(buildToolOutputReference());
+  return o;
+}
+
+checkUnnamed3407(core.List<api.ToolOutputReference> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkToolOutputReference(o[0]);
+  checkToolOutputReference(o[1]);
+}
+
+core.int buildCounterToolExecution = 0;
+buildToolExecution() {
+  var o = new api.ToolExecution();
+  buildCounterToolExecution++;
+  if (buildCounterToolExecution < 3) {
+    o.commandLineArguments = buildUnnamed3405();
+    o.exitCode = buildToolExitCode();
+    o.toolLogs = buildUnnamed3406();
+    o.toolOutputs = buildUnnamed3407();
+  }
+  buildCounterToolExecution--;
+  return o;
+}
+
+checkToolExecution(api.ToolExecution o) {
+  buildCounterToolExecution++;
+  if (buildCounterToolExecution < 3) {
+    checkUnnamed3405(o.commandLineArguments);
+    checkToolExitCode(o.exitCode);
+    checkUnnamed3406(o.toolLogs);
+    checkUnnamed3407(o.toolOutputs);
+  }
+  buildCounterToolExecution--;
+}
+
+core.int buildCounterToolExecutionStep = 0;
+buildToolExecutionStep() {
+  var o = new api.ToolExecutionStep();
+  buildCounterToolExecutionStep++;
+  if (buildCounterToolExecutionStep < 3) {
+    o.toolExecution = buildToolExecution();
+  }
+  buildCounterToolExecutionStep--;
+  return o;
+}
+
+checkToolExecutionStep(api.ToolExecutionStep o) {
+  buildCounterToolExecutionStep++;
+  if (buildCounterToolExecutionStep < 3) {
+    checkToolExecution(o.toolExecution);
+  }
+  buildCounterToolExecutionStep--;
+}
+
+core.int buildCounterToolExitCode = 0;
+buildToolExitCode() {
+  var o = new api.ToolExitCode();
+  buildCounterToolExitCode++;
+  if (buildCounterToolExitCode < 3) {
+    o.number = 42;
+  }
+  buildCounterToolExitCode--;
+  return o;
+}
+
+checkToolExitCode(api.ToolExitCode o) {
+  buildCounterToolExitCode++;
+  if (buildCounterToolExitCode < 3) {
+    unittest.expect(o.number, unittest.equals(42));
+  }
+  buildCounterToolExitCode--;
+}
+
+core.int buildCounterToolOutputReference = 0;
+buildToolOutputReference() {
+  var o = new api.ToolOutputReference();
+  buildCounterToolOutputReference++;
+  if (buildCounterToolOutputReference < 3) {
+    o.creationTime = buildTimestamp();
+    o.output = buildFileReference();
+    o.testCase = buildTestCaseReference();
+  }
+  buildCounterToolOutputReference--;
+  return o;
+}
+
+checkToolOutputReference(api.ToolOutputReference o) {
+  buildCounterToolOutputReference++;
+  if (buildCounterToolOutputReference < 3) {
+    checkTimestamp(o.creationTime);
+    checkFileReference(o.output);
+    checkTestCaseReference(o.testCase);
+  }
+  buildCounterToolOutputReference--;
+}
+
+buildUnnamed3408() {
+  var o = new core.List<core.String>();
+  o.add("foo");
+  o.add("foo");
+  return o;
+}
+
+checkUnnamed3408(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(o[0], unittest.equals('foo'));
+  unittest.expect(o[1], unittest.equals('foo'));
+}
+
+main() {
+  unittest.group("obj-schema-AndroidAppInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAndroidAppInfo();
+      var od = new api.AndroidAppInfo.fromJson(o.toJson());
+      checkAndroidAppInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-AndroidInstrumentationTest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAndroidInstrumentationTest();
+      var od = new api.AndroidInstrumentationTest.fromJson(o.toJson());
+      checkAndroidInstrumentationTest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AndroidRoboTest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAndroidRoboTest();
+      var od = new api.AndroidRoboTest.fromJson(o.toJson());
+      checkAndroidRoboTest(od);
+    });
+  });
+
+  unittest.group("obj-schema-AndroidTest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAndroidTest();
+      var od = new api.AndroidTest.fromJson(o.toJson());
+      checkAndroidTest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Any", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAny();
+      var od = new api.Any.fromJson(o.toJson());
+      checkAny(od);
+    });
+  });
+
+  unittest.group("obj-schema-AppStartTime", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildAppStartTime();
+      var od = new api.AppStartTime.fromJson(o.toJson());
+      checkAppStartTime(od);
+    });
+  });
+
+  unittest.group("obj-schema-BasicPerfSampleSeries", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBasicPerfSampleSeries();
+      var od = new api.BasicPerfSampleSeries.fromJson(o.toJson());
+      checkBasicPerfSampleSeries(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchCreatePerfSamplesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchCreatePerfSamplesRequest();
+      var od = new api.BatchCreatePerfSamplesRequest.fromJson(o.toJson());
+      checkBatchCreatePerfSamplesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-BatchCreatePerfSamplesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildBatchCreatePerfSamplesResponse();
+      var od = new api.BatchCreatePerfSamplesResponse.fromJson(o.toJson());
+      checkBatchCreatePerfSamplesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-CPUInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildCPUInfo();
+      var od = new api.CPUInfo.fromJson(o.toJson());
+      checkCPUInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-Duration", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildDuration();
+      var od = new api.Duration.fromJson(o.toJson());
+      checkDuration(od);
+    });
+  });
+
+  unittest.group("obj-schema-Execution", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildExecution();
+      var od = new api.Execution.fromJson(o.toJson());
+      checkExecution(od);
+    });
+  });
+
+  unittest.group("obj-schema-FailureDetail", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFailureDetail();
+      var od = new api.FailureDetail.fromJson(o.toJson());
+      checkFailureDetail(od);
+    });
+  });
+
+  unittest.group("obj-schema-FileReference", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildFileReference();
+      var od = new api.FileReference.fromJson(o.toJson());
+      checkFileReference(od);
+    });
+  });
+
+  unittest.group("obj-schema-GraphicsStats", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGraphicsStats();
+      var od = new api.GraphicsStats.fromJson(o.toJson());
+      checkGraphicsStats(od);
+    });
+  });
+
+  unittest.group("obj-schema-GraphicsStatsBucket", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildGraphicsStatsBucket();
+      var od = new api.GraphicsStatsBucket.fromJson(o.toJson());
+      checkGraphicsStatsBucket(od);
+    });
+  });
+
+  unittest.group("obj-schema-History", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildHistory();
+      var od = new api.History.fromJson(o.toJson());
+      checkHistory(od);
+    });
+  });
+
+  unittest.group("obj-schema-Image", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildImage();
+      var od = new api.Image.fromJson(o.toJson());
+      checkImage(od);
+    });
+  });
+
+  unittest.group("obj-schema-InconclusiveDetail", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildInconclusiveDetail();
+      var od = new api.InconclusiveDetail.fromJson(o.toJson());
+      checkInconclusiveDetail(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListExecutionsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListExecutionsResponse();
+      var od = new api.ListExecutionsResponse.fromJson(o.toJson());
+      checkListExecutionsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListHistoriesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListHistoriesResponse();
+      var od = new api.ListHistoriesResponse.fromJson(o.toJson());
+      checkListHistoriesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListPerfSampleSeriesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListPerfSampleSeriesResponse();
+      var od = new api.ListPerfSampleSeriesResponse.fromJson(o.toJson());
+      checkListPerfSampleSeriesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListPerfSamplesResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListPerfSamplesResponse();
+      var od = new api.ListPerfSamplesResponse.fromJson(o.toJson());
+      checkListPerfSamplesResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListScreenshotClustersResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListScreenshotClustersResponse();
+      var od = new api.ListScreenshotClustersResponse.fromJson(o.toJson());
+      checkListScreenshotClustersResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListStepThumbnailsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListStepThumbnailsResponse();
+      var od = new api.ListStepThumbnailsResponse.fromJson(o.toJson());
+      checkListStepThumbnailsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-ListStepsResponse", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildListStepsResponse();
+      var od = new api.ListStepsResponse.fromJson(o.toJson());
+      checkListStepsResponse(od);
+    });
+  });
+
+  unittest.group("obj-schema-MemoryInfo", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildMemoryInfo();
+      var od = new api.MemoryInfo.fromJson(o.toJson());
+      checkMemoryInfo(od);
+    });
+  });
+
+  unittest.group("obj-schema-Outcome", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildOutcome();
+      var od = new api.Outcome.fromJson(o.toJson());
+      checkOutcome(od);
+    });
+  });
+
+  unittest.group("obj-schema-PerfEnvironment", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPerfEnvironment();
+      var od = new api.PerfEnvironment.fromJson(o.toJson());
+      checkPerfEnvironment(od);
+    });
+  });
+
+  unittest.group("obj-schema-PerfMetricsSummary", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPerfMetricsSummary();
+      var od = new api.PerfMetricsSummary.fromJson(o.toJson());
+      checkPerfMetricsSummary(od);
+    });
+  });
+
+  unittest.group("obj-schema-PerfSample", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPerfSample();
+      var od = new api.PerfSample.fromJson(o.toJson());
+      checkPerfSample(od);
+    });
+  });
+
+  unittest.group("obj-schema-PerfSampleSeries", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPerfSampleSeries();
+      var od = new api.PerfSampleSeries.fromJson(o.toJson());
+      checkPerfSampleSeries(od);
+    });
+  });
+
+  unittest.group("obj-schema-ProjectSettings", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildProjectSettings();
+      var od = new api.ProjectSettings.fromJson(o.toJson());
+      checkProjectSettings(od);
+    });
+  });
+
+  unittest.group("obj-schema-PublishXunitXmlFilesRequest", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildPublishXunitXmlFilesRequest();
+      var od = new api.PublishXunitXmlFilesRequest.fromJson(o.toJson());
+      checkPublishXunitXmlFilesRequest(od);
+    });
+  });
+
+  unittest.group("obj-schema-Screen", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildScreen();
+      var od = new api.Screen.fromJson(o.toJson());
+      checkScreen(od);
+    });
+  });
+
+  unittest.group("obj-schema-ScreenshotCluster", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildScreenshotCluster();
+      var od = new api.ScreenshotCluster.fromJson(o.toJson());
+      checkScreenshotCluster(od);
+    });
+  });
+
+  unittest.group("obj-schema-SkippedDetail", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSkippedDetail();
+      var od = new api.SkippedDetail.fromJson(o.toJson());
+      checkSkippedDetail(od);
+    });
+  });
+
+  unittest.group("obj-schema-Specification", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSpecification();
+      var od = new api.Specification.fromJson(o.toJson());
+      checkSpecification(od);
+    });
+  });
+
+  unittest.group("obj-schema-StackTrace", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStackTrace();
+      var od = new api.StackTrace.fromJson(o.toJson());
+      checkStackTrace(od);
+    });
+  });
+
+  unittest.group("obj-schema-Status", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStatus();
+      var od = new api.Status.fromJson(o.toJson());
+      checkStatus(od);
+    });
+  });
+
+  unittest.group("obj-schema-Step", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStep();
+      var od = new api.Step.fromJson(o.toJson());
+      checkStep(od);
+    });
+  });
+
+  unittest.group("obj-schema-StepDimensionValueEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStepDimensionValueEntry();
+      var od = new api.StepDimensionValueEntry.fromJson(o.toJson());
+      checkStepDimensionValueEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-StepLabelsEntry", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildStepLabelsEntry();
+      var od = new api.StepLabelsEntry.fromJson(o.toJson());
+      checkStepLabelsEntry(od);
+    });
+  });
+
+  unittest.group("obj-schema-SuccessDetail", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildSuccessDetail();
+      var od = new api.SuccessDetail.fromJson(o.toJson());
+      checkSuccessDetail(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestCaseReference", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestCaseReference();
+      var od = new api.TestCaseReference.fromJson(o.toJson());
+      checkTestCaseReference(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestExecutionStep", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestExecutionStep();
+      var od = new api.TestExecutionStep.fromJson(o.toJson());
+      checkTestExecutionStep(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestIssue", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestIssue();
+      var od = new api.TestIssue.fromJson(o.toJson());
+      checkTestIssue(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestSuiteOverview", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestSuiteOverview();
+      var od = new api.TestSuiteOverview.fromJson(o.toJson());
+      checkTestSuiteOverview(od);
+    });
+  });
+
+  unittest.group("obj-schema-TestTiming", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTestTiming();
+      var od = new api.TestTiming.fromJson(o.toJson());
+      checkTestTiming(od);
+    });
+  });
+
+  unittest.group("obj-schema-Thumbnail", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildThumbnail();
+      var od = new api.Thumbnail.fromJson(o.toJson());
+      checkThumbnail(od);
+    });
+  });
+
+  unittest.group("obj-schema-Timestamp", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildTimestamp();
+      var od = new api.Timestamp.fromJson(o.toJson());
+      checkTimestamp(od);
+    });
+  });
+
+  unittest.group("obj-schema-ToolExecution", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildToolExecution();
+      var od = new api.ToolExecution.fromJson(o.toJson());
+      checkToolExecution(od);
+    });
+  });
+
+  unittest.group("obj-schema-ToolExecutionStep", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildToolExecutionStep();
+      var od = new api.ToolExecutionStep.fromJson(o.toJson());
+      checkToolExecutionStep(od);
+    });
+  });
+
+  unittest.group("obj-schema-ToolExitCode", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildToolExitCode();
+      var od = new api.ToolExitCode.fromJson(o.toJson());
+      checkToolExitCode(od);
+    });
+  });
+
+  unittest.group("obj-schema-ToolOutputReference", () {
+    unittest.test("to-json--from-json", () {
+      var o = buildToolOutputReference();
+      var od = new api.ToolOutputReference.fromJson(o.toJson());
+      checkToolOutputReference(od);
+    });
+  });
+
+  unittest.group("resource-ProjectsResourceApi", () {
+    unittest.test("method--getSettings", () {
+      var mock = new HttpServerMock();
+      api.ProjectsResourceApi res = new api.ToolresultsApi(mock).projects;
+      var arg_projectId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProjectSettings());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getSettings(arg_projectId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ProjectSettings response) {
+        checkProjectSettings(response);
+      })));
+    });
+
+    unittest.test("method--initializeSettings", () {
+      var mock = new HttpServerMock();
+      api.ProjectsResourceApi res = new api.ToolresultsApi(mock).projects;
+      var arg_projectId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildProjectSettings());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .initializeSettings(arg_projectId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ProjectSettings response) {
+        checkProjectSettings(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsHistoriesResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesResourceApi res =
+          new api.ToolresultsApi(mock).projects.histories;
+      var arg_request = buildHistory();
+      var arg_projectId = "foo";
+      var arg_requestId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.History.fromJson(json);
+        checkHistory(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildHistory());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_projectId,
+              requestId: arg_requestId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.History response) {
+        checkHistory(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesResourceApi res =
+          new api.ToolresultsApi(mock).projects.histories;
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildHistory());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_projectId, arg_historyId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.History response) {
+        checkHistory(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesResourceApi res =
+          new api.ToolresultsApi(mock).projects.histories;
+      var arg_projectId = "foo";
+      var arg_filterByName = "foo";
+      var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["filterByName"].first, unittest.equals(arg_filterByName));
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListHistoriesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_projectId,
+              filterByName: arg_filterByName,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListHistoriesResponse response) {
+        checkListHistoriesResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsHistoriesExecutionsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsResourceApi res =
+          new api.ToolresultsApi(mock).projects.histories.executions;
+      var arg_request = buildExecution();
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_requestId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Execution.fromJson(json);
+        checkExecution(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildExecution());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_projectId, arg_historyId,
+              requestId: arg_requestId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Execution response) {
+        checkExecution(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsResourceApi res =
+          new api.ToolresultsApi(mock).projects.histories.executions;
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildExecution());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_projectId, arg_historyId, arg_executionId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Execution response) {
+        checkExecution(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsResourceApi res =
+          new api.ToolresultsApi(mock).projects.histories.executions;
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListExecutionsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_projectId, arg_historyId,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListExecutionsResponse response) {
+        checkListExecutionsResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsResourceApi res =
+          new api.ToolresultsApi(mock).projects.histories.executions;
+      var arg_request = buildExecution();
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_requestId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Execution.fromJson(json);
+        checkExecution(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildExecution());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_projectId, arg_historyId, arg_executionId,
+              requestId: arg_requestId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Execution response) {
+        checkExecution(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsHistoriesExecutionsClustersResourceApi", () {
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsClustersResourceApi res =
+          new api.ToolresultsApi(mock).projects.histories.executions.clusters;
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_clusterId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildScreenshotCluster());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_projectId, arg_historyId, arg_executionId, arg_clusterId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ScreenshotCluster response) {
+        checkScreenshotCluster(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsClustersResourceApi res =
+          new api.ToolresultsApi(mock).projects.histories.executions.clusters;
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListScreenshotClustersResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_projectId, arg_historyId, arg_executionId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListScreenshotClustersResponse response) {
+        checkListScreenshotClustersResponse(response);
+      })));
+    });
+  });
+
+  unittest.group("resource-ProjectsHistoriesExecutionsStepsResourceApi", () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsStepsResourceApi res =
+          new api.ToolresultsApi(mock).projects.histories.executions.steps;
+      var arg_request = buildStep();
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_requestId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Step.fromJson(json);
+        checkStep(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildStep());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_projectId, arg_historyId, arg_executionId,
+              requestId: arg_requestId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Step response) {
+        checkStep(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsStepsResourceApi res =
+          new api.ToolresultsApi(mock).projects.histories.executions.steps;
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_stepId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildStep());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_projectId, arg_historyId, arg_executionId, arg_stepId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Step response) {
+        checkStep(response);
+      })));
+    });
+
+    unittest.test("method--getPerfMetricsSummary", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsStepsResourceApi res =
+          new api.ToolresultsApi(mock).projects.histories.executions.steps;
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_stepId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPerfMetricsSummary());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .getPerfMetricsSummary(
+              arg_projectId, arg_historyId, arg_executionId, arg_stepId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PerfMetricsSummary response) {
+        checkPerfMetricsSummary(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsStepsResourceApi res =
+          new api.ToolresultsApi(mock).projects.histories.executions.steps;
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListStepsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_projectId, arg_historyId, arg_executionId,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListStepsResponse response) {
+        checkListStepsResponse(response);
+      })));
+    });
+
+    unittest.test("method--patch", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsStepsResourceApi res =
+          new api.ToolresultsApi(mock).projects.histories.executions.steps;
+      var arg_request = buildStep();
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_stepId = "foo";
+      var arg_requestId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.Step.fromJson(json);
+        checkStep(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(
+            queryMap["requestId"].first, unittest.equals(arg_requestId));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildStep());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .patch(arg_request, arg_projectId, arg_historyId, arg_executionId,
+              arg_stepId,
+              requestId: arg_requestId, $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Step response) {
+        checkStep(response);
+      })));
+    });
+
+    unittest.test("method--publishXunitXmlFiles", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsStepsResourceApi res =
+          new api.ToolresultsApi(mock).projects.histories.executions.steps;
+      var arg_request = buildPublishXunitXmlFilesRequest();
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_stepId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PublishXunitXmlFilesRequest.fromJson(json);
+        checkPublishXunitXmlFilesRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildStep());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .publishXunitXmlFiles(arg_request, arg_projectId, arg_historyId,
+              arg_executionId, arg_stepId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.Step response) {
+        checkStep(response);
+      })));
+    });
+  });
+
+  unittest.group(
+      "resource-ProjectsHistoriesExecutionsStepsPerfMetricsSummaryResourceApi",
+      () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsStepsPerfMetricsSummaryResourceApi res =
+          new api.ToolresultsApi(mock)
+              .projects
+              .histories
+              .executions
+              .steps
+              .perfMetricsSummary;
+      var arg_request = buildPerfMetricsSummary();
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_stepId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PerfMetricsSummary.fromJson(json);
+        checkPerfMetricsSummary(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPerfMetricsSummary());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_projectId, arg_historyId, arg_executionId,
+              arg_stepId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PerfMetricsSummary response) {
+        checkPerfMetricsSummary(response);
+      })));
+    });
+  });
+
+  unittest.group(
+      "resource-ProjectsHistoriesExecutionsStepsPerfSampleSeriesResourceApi",
+      () {
+    unittest.test("method--create", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsStepsPerfSampleSeriesResourceApi res =
+          new api.ToolresultsApi(mock)
+              .projects
+              .histories
+              .executions
+              .steps
+              .perfSampleSeries;
+      var arg_request = buildPerfSampleSeries();
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_stepId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.PerfSampleSeries.fromJson(json);
+        checkPerfSampleSeries(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPerfSampleSeries());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .create(arg_request, arg_projectId, arg_historyId, arg_executionId,
+              arg_stepId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PerfSampleSeries response) {
+        checkPerfSampleSeries(response);
+      })));
+    });
+
+    unittest.test("method--get", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsStepsPerfSampleSeriesResourceApi res =
+          new api.ToolresultsApi(mock)
+              .projects
+              .histories
+              .executions
+              .steps
+              .perfSampleSeries;
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_stepId = "foo";
+      var arg_sampleSeriesId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildPerfSampleSeries());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .get(arg_projectId, arg_historyId, arg_executionId, arg_stepId,
+              arg_sampleSeriesId,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.PerfSampleSeries response) {
+        checkPerfSampleSeries(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsStepsPerfSampleSeriesResourceApi res =
+          new api.ToolresultsApi(mock)
+              .projects
+              .histories
+              .executions
+              .steps
+              .perfSampleSeries;
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_stepId = "foo";
+      var arg_filter = buildUnnamed3408();
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["filter"], unittest.equals(arg_filter));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListPerfSampleSeriesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_projectId, arg_historyId, arg_executionId, arg_stepId,
+              filter: arg_filter, $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.ListPerfSampleSeriesResponse response) {
+        checkListPerfSampleSeriesResponse(response);
+      })));
+    });
+  });
+
+  unittest.group(
+      "resource-ProjectsHistoriesExecutionsStepsPerfSampleSeriesSamplesResourceApi",
+      () {
+    unittest.test("method--batchCreate", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsStepsPerfSampleSeriesSamplesResourceApi
+          res = new api.ToolresultsApi(mock)
+              .projects
+              .histories
+              .executions
+              .steps
+              .perfSampleSeries
+              .samples;
+      var arg_request = buildBatchCreatePerfSamplesRequest();
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_stepId = "foo";
+      var arg_sampleSeriesId = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var obj = new api.BatchCreatePerfSamplesRequest.fromJson(json);
+        checkBatchCreatePerfSamplesRequest(obj);
+
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildBatchCreatePerfSamplesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .batchCreate(arg_request, arg_projectId, arg_historyId,
+              arg_executionId, arg_stepId, arg_sampleSeriesId,
+              $fields: arg_$fields)
+          .then(unittest
+              .expectAsync1(((api.BatchCreatePerfSamplesResponse response) {
+        checkBatchCreatePerfSamplesResponse(response);
+      })));
+    });
+
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsStepsPerfSampleSeriesSamplesResourceApi
+          res = new api.ToolresultsApi(mock)
+              .projects
+              .histories
+              .executions
+              .steps
+              .perfSampleSeries
+              .samples;
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_stepId = "foo";
+      var arg_sampleSeriesId = "foo";
+      var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListPerfSamplesResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_projectId, arg_historyId, arg_executionId, arg_stepId,
+              arg_sampleSeriesId,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(unittest.expectAsync1(((api.ListPerfSamplesResponse response) {
+        checkListPerfSamplesResponse(response);
+      })));
+    });
+  });
+
+  unittest.group(
+      "resource-ProjectsHistoriesExecutionsStepsThumbnailsResourceApi", () {
+    unittest.test("method--list", () {
+      var mock = new HttpServerMock();
+      api.ProjectsHistoriesExecutionsStepsThumbnailsResourceApi res =
+          new api.ToolresultsApi(mock)
+              .projects
+              .histories
+              .executions
+              .steps
+              .thumbnails;
+      var arg_projectId = "foo";
+      var arg_historyId = "foo";
+      var arg_executionId = "foo";
+      var arg_stepId = "foo";
+      var arg_pageSize = 42;
+      var arg_pageToken = "foo";
+      var arg_$fields = "foo";
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        var path = (req.url).path;
+        var pathOffset = 0;
+        var index;
+        var subPart;
+        unittest.expect(
+            path.substring(pathOffset, pathOffset + 1), unittest.equals("/"));
+        pathOffset += 1;
+
+        var query = (req.url).query;
+        var queryOffset = 0;
+        var queryMap = {};
+        addQueryParam(n, v) => queryMap.putIfAbsent(n, () => []).add(v);
+        parseBool(n) {
+          if (n == "true") return true;
+          if (n == "false") return false;
+          if (n == null) return null;
+          throw new core.ArgumentError("Invalid boolean: $n");
+        }
+
+        if (query.length > 0) {
+          for (var part in query.split("&")) {
+            var keyvalue = part.split("=");
+            addQueryParam(core.Uri.decodeQueryComponent(keyvalue[0]),
+                core.Uri.decodeQueryComponent(keyvalue[1]));
+          }
+        }
+        unittest.expect(core.int.parse(queryMap["pageSize"].first),
+            unittest.equals(arg_pageSize));
+        unittest.expect(
+            queryMap["pageToken"].first, unittest.equals(arg_pageToken));
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
+
+        var h = {
+          "content-type": "application/json; charset=utf-8",
+        };
+        var resp = convert.JSON.encode(buildListStepThumbnailsResponse());
+        return new async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      res
+          .list(arg_projectId, arg_historyId, arg_executionId, arg_stepId,
+              pageSize: arg_pageSize,
+              pageToken: arg_pageToken,
+              $fields: arg_$fields)
+          .then(
+              unittest.expectAsync1(((api.ListStepThumbnailsResponse response) {
+        checkListStepThumbnailsResponse(response);
+      })));
+    });
+  });
+}
diff --git a/generated/googleapis_beta/test/videointelligence/v1beta1_test.dart b/generated/googleapis_beta/test/videointelligence/v1beta1_test.dart
index ade2ca5..7e7f113 100644
--- a/generated/googleapis_beta/test/videointelligence/v1beta1_test.dart
+++ b/generated/googleapis_beta/test/videointelligence/v1beta1_test.dart
@@ -50,7 +50,7 @@
   return new http.StreamedResponse(stream, status, headers: headers);
 }
 
-buildUnnamed3522() {
+buildUnnamed3540() {
   var o = new core
       .List<api.GoogleCloudVideointelligenceV1VideoAnnotationProgress>();
   o.add(buildGoogleCloudVideointelligenceV1VideoAnnotationProgress());
@@ -58,7 +58,7 @@
   return o;
 }
 
-checkUnnamed3522(
+checkUnnamed3540(
     core.List<api.GoogleCloudVideointelligenceV1VideoAnnotationProgress> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1VideoAnnotationProgress(o[0]);
@@ -70,7 +70,7 @@
   var o = new api.GoogleCloudVideointelligenceV1AnnotateVideoProgress();
   buildCounterGoogleCloudVideointelligenceV1AnnotateVideoProgress++;
   if (buildCounterGoogleCloudVideointelligenceV1AnnotateVideoProgress < 3) {
-    o.annotationProgress = buildUnnamed3522();
+    o.annotationProgress = buildUnnamed3540();
   }
   buildCounterGoogleCloudVideointelligenceV1AnnotateVideoProgress--;
   return o;
@@ -80,12 +80,12 @@
     api.GoogleCloudVideointelligenceV1AnnotateVideoProgress o) {
   buildCounterGoogleCloudVideointelligenceV1AnnotateVideoProgress++;
   if (buildCounterGoogleCloudVideointelligenceV1AnnotateVideoProgress < 3) {
-    checkUnnamed3522(o.annotationProgress);
+    checkUnnamed3540(o.annotationProgress);
   }
   buildCounterGoogleCloudVideointelligenceV1AnnotateVideoProgress--;
 }
 
-buildUnnamed3523() {
+buildUnnamed3541() {
   var o =
       new core.List<api.GoogleCloudVideointelligenceV1VideoAnnotationResults>();
   o.add(buildGoogleCloudVideointelligenceV1VideoAnnotationResults());
@@ -93,7 +93,7 @@
   return o;
 }
 
-checkUnnamed3523(
+checkUnnamed3541(
     core.List<api.GoogleCloudVideointelligenceV1VideoAnnotationResults> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1VideoAnnotationResults(o[0]);
@@ -105,7 +105,7 @@
   var o = new api.GoogleCloudVideointelligenceV1AnnotateVideoResponse();
   buildCounterGoogleCloudVideointelligenceV1AnnotateVideoResponse++;
   if (buildCounterGoogleCloudVideointelligenceV1AnnotateVideoResponse < 3) {
-    o.annotationResults = buildUnnamed3523();
+    o.annotationResults = buildUnnamed3541();
   }
   buildCounterGoogleCloudVideointelligenceV1AnnotateVideoResponse--;
   return o;
@@ -115,19 +115,19 @@
     api.GoogleCloudVideointelligenceV1AnnotateVideoResponse o) {
   buildCounterGoogleCloudVideointelligenceV1AnnotateVideoResponse++;
   if (buildCounterGoogleCloudVideointelligenceV1AnnotateVideoResponse < 3) {
-    checkUnnamed3523(o.annotationResults);
+    checkUnnamed3541(o.annotationResults);
   }
   buildCounterGoogleCloudVideointelligenceV1AnnotateVideoResponse--;
 }
 
-buildUnnamed3524() {
+buildUnnamed3542() {
   var o = new core.List<api.GoogleCloudVideointelligenceV1LabelLocation>();
   o.add(buildGoogleCloudVideointelligenceV1LabelLocation());
   o.add(buildGoogleCloudVideointelligenceV1LabelLocation());
   return o;
 }
 
-checkUnnamed3524(core.List<api.GoogleCloudVideointelligenceV1LabelLocation> o) {
+checkUnnamed3542(core.List<api.GoogleCloudVideointelligenceV1LabelLocation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1LabelLocation(o[0]);
   checkGoogleCloudVideointelligenceV1LabelLocation(o[1]);
@@ -140,7 +140,7 @@
   if (buildCounterGoogleCloudVideointelligenceV1LabelAnnotation < 3) {
     o.description = "foo";
     o.languageCode = "foo";
-    o.locations = buildUnnamed3524();
+    o.locations = buildUnnamed3542();
   }
   buildCounterGoogleCloudVideointelligenceV1LabelAnnotation--;
   return o;
@@ -152,7 +152,7 @@
   if (buildCounterGoogleCloudVideointelligenceV1LabelAnnotation < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.languageCode, unittest.equals('foo'));
-    checkUnnamed3524(o.locations);
+    checkUnnamed3542(o.locations);
   }
   buildCounterGoogleCloudVideointelligenceV1LabelAnnotation--;
 }
@@ -229,21 +229,21 @@
   buildCounterGoogleCloudVideointelligenceV1VideoAnnotationProgress--;
 }
 
-buildUnnamed3525() {
+buildUnnamed3543() {
   var o = new core.List<api.GoogleCloudVideointelligenceV1LabelAnnotation>();
   o.add(buildGoogleCloudVideointelligenceV1LabelAnnotation());
   o.add(buildGoogleCloudVideointelligenceV1LabelAnnotation());
   return o;
 }
 
-checkUnnamed3525(
+checkUnnamed3543(
     core.List<api.GoogleCloudVideointelligenceV1LabelAnnotation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1LabelAnnotation(o[0]);
   checkGoogleCloudVideointelligenceV1LabelAnnotation(o[1]);
 }
 
-buildUnnamed3526() {
+buildUnnamed3544() {
   var o =
       new core.List<api.GoogleCloudVideointelligenceV1SafeSearchAnnotation>();
   o.add(buildGoogleCloudVideointelligenceV1SafeSearchAnnotation());
@@ -251,21 +251,21 @@
   return o;
 }
 
-checkUnnamed3526(
+checkUnnamed3544(
     core.List<api.GoogleCloudVideointelligenceV1SafeSearchAnnotation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1SafeSearchAnnotation(o[0]);
   checkGoogleCloudVideointelligenceV1SafeSearchAnnotation(o[1]);
 }
 
-buildUnnamed3527() {
+buildUnnamed3545() {
   var o = new core.List<api.GoogleCloudVideointelligenceV1VideoSegment>();
   o.add(buildGoogleCloudVideointelligenceV1VideoSegment());
   o.add(buildGoogleCloudVideointelligenceV1VideoSegment());
   return o;
 }
 
-checkUnnamed3527(core.List<api.GoogleCloudVideointelligenceV1VideoSegment> o) {
+checkUnnamed3545(core.List<api.GoogleCloudVideointelligenceV1VideoSegment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1VideoSegment(o[0]);
   checkGoogleCloudVideointelligenceV1VideoSegment(o[1]);
@@ -278,9 +278,9 @@
   if (buildCounterGoogleCloudVideointelligenceV1VideoAnnotationResults < 3) {
     o.error = buildGoogleRpcStatus();
     o.inputUri = "foo";
-    o.labelAnnotations = buildUnnamed3525();
-    o.safeSearchAnnotations = buildUnnamed3526();
-    o.shotAnnotations = buildUnnamed3527();
+    o.labelAnnotations = buildUnnamed3543();
+    o.safeSearchAnnotations = buildUnnamed3544();
+    o.shotAnnotations = buildUnnamed3545();
   }
   buildCounterGoogleCloudVideointelligenceV1VideoAnnotationResults--;
   return o;
@@ -292,9 +292,9 @@
   if (buildCounterGoogleCloudVideointelligenceV1VideoAnnotationResults < 3) {
     checkGoogleRpcStatus(o.error);
     unittest.expect(o.inputUri, unittest.equals('foo'));
-    checkUnnamed3525(o.labelAnnotations);
-    checkUnnamed3526(o.safeSearchAnnotations);
-    checkUnnamed3527(o.shotAnnotations);
+    checkUnnamed3543(o.labelAnnotations);
+    checkUnnamed3544(o.safeSearchAnnotations);
+    checkUnnamed3545(o.shotAnnotations);
   }
   buildCounterGoogleCloudVideointelligenceV1VideoAnnotationResults--;
 }
@@ -321,7 +321,7 @@
   buildCounterGoogleCloudVideointelligenceV1VideoSegment--;
 }
 
-buildUnnamed3528() {
+buildUnnamed3546() {
   var o = new core
       .List<api.GoogleCloudVideointelligenceV1beta1VideoAnnotationProgress>();
   o.add(buildGoogleCloudVideointelligenceV1beta1VideoAnnotationProgress());
@@ -329,7 +329,7 @@
   return o;
 }
 
-checkUnnamed3528(
+checkUnnamed3546(
     core.List<api.GoogleCloudVideointelligenceV1beta1VideoAnnotationProgress>
         o) {
   unittest.expect(o, unittest.hasLength(2));
@@ -344,7 +344,7 @@
   buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoProgress++;
   if (buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoProgress <
       3) {
-    o.annotationProgress = buildUnnamed3528();
+    o.annotationProgress = buildUnnamed3546();
   }
   buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoProgress--;
   return o;
@@ -355,19 +355,19 @@
   buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoProgress++;
   if (buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoProgress <
       3) {
-    checkUnnamed3528(o.annotationProgress);
+    checkUnnamed3546(o.annotationProgress);
   }
   buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoProgress--;
 }
 
-buildUnnamed3529() {
+buildUnnamed3547() {
   var o = new core.List<core.String>();
   o.add("foo");
   o.add("foo");
   return o;
 }
 
-checkUnnamed3529(core.List<core.String> o) {
+checkUnnamed3547(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(o[0], unittest.equals('foo'));
   unittest.expect(o[1], unittest.equals('foo'));
@@ -379,7 +379,7 @@
   var o = new api.GoogleCloudVideointelligenceV1beta1AnnotateVideoRequest();
   buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoRequest++;
   if (buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoRequest < 3) {
-    o.features = buildUnnamed3529();
+    o.features = buildUnnamed3547();
     o.inputContent = "foo";
     o.inputUri = "foo";
     o.locationId = "foo";
@@ -394,7 +394,7 @@
     api.GoogleCloudVideointelligenceV1beta1AnnotateVideoRequest o) {
   buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoRequest++;
   if (buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoRequest < 3) {
-    checkUnnamed3529(o.features);
+    checkUnnamed3547(o.features);
     unittest.expect(o.inputContent, unittest.equals('foo'));
     unittest.expect(o.inputUri, unittest.equals('foo'));
     unittest.expect(o.locationId, unittest.equals('foo'));
@@ -404,7 +404,7 @@
   buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoRequest--;
 }
 
-buildUnnamed3530() {
+buildUnnamed3548() {
   var o = new core
       .List<api.GoogleCloudVideointelligenceV1beta1VideoAnnotationResults>();
   o.add(buildGoogleCloudVideointelligenceV1beta1VideoAnnotationResults());
@@ -412,7 +412,7 @@
   return o;
 }
 
-checkUnnamed3530(
+checkUnnamed3548(
     core.List<api.GoogleCloudVideointelligenceV1beta1VideoAnnotationResults>
         o) {
   unittest.expect(o, unittest.hasLength(2));
@@ -427,7 +427,7 @@
   buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoResponse++;
   if (buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoResponse <
       3) {
-    o.annotationResults = buildUnnamed3530();
+    o.annotationResults = buildUnnamed3548();
   }
   buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoResponse--;
   return o;
@@ -438,19 +438,19 @@
   buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoResponse++;
   if (buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoResponse <
       3) {
-    checkUnnamed3530(o.annotationResults);
+    checkUnnamed3548(o.annotationResults);
   }
   buildCounterGoogleCloudVideointelligenceV1beta1AnnotateVideoResponse--;
 }
 
-buildUnnamed3531() {
+buildUnnamed3549() {
   var o = new core.List<api.GoogleCloudVideointelligenceV1beta1LabelLocation>();
   o.add(buildGoogleCloudVideointelligenceV1beta1LabelLocation());
   o.add(buildGoogleCloudVideointelligenceV1beta1LabelLocation());
   return o;
 }
 
-checkUnnamed3531(
+checkUnnamed3549(
     core.List<api.GoogleCloudVideointelligenceV1beta1LabelLocation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1beta1LabelLocation(o[0]);
@@ -464,7 +464,7 @@
   if (buildCounterGoogleCloudVideointelligenceV1beta1LabelAnnotation < 3) {
     o.description = "foo";
     o.languageCode = "foo";
-    o.locations = buildUnnamed3531();
+    o.locations = buildUnnamed3549();
   }
   buildCounterGoogleCloudVideointelligenceV1beta1LabelAnnotation--;
   return o;
@@ -476,7 +476,7 @@
   if (buildCounterGoogleCloudVideointelligenceV1beta1LabelAnnotation < 3) {
     unittest.expect(o.description, unittest.equals('foo'));
     unittest.expect(o.languageCode, unittest.equals('foo'));
-    checkUnnamed3531(o.locations);
+    checkUnnamed3549(o.locations);
   }
   buildCounterGoogleCloudVideointelligenceV1beta1LabelAnnotation--;
 }
@@ -565,7 +565,7 @@
   buildCounterGoogleCloudVideointelligenceV1beta1VideoAnnotationProgress--;
 }
 
-buildUnnamed3532() {
+buildUnnamed3550() {
   var o =
       new core.List<api.GoogleCloudVideointelligenceV1beta1LabelAnnotation>();
   o.add(buildGoogleCloudVideointelligenceV1beta1LabelAnnotation());
@@ -573,14 +573,14 @@
   return o;
 }
 
-checkUnnamed3532(
+checkUnnamed3550(
     core.List<api.GoogleCloudVideointelligenceV1beta1LabelAnnotation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1beta1LabelAnnotation(o[0]);
   checkGoogleCloudVideointelligenceV1beta1LabelAnnotation(o[1]);
 }
 
-buildUnnamed3533() {
+buildUnnamed3551() {
   var o = new core
       .List<api.GoogleCloudVideointelligenceV1beta1SafeSearchAnnotation>();
   o.add(buildGoogleCloudVideointelligenceV1beta1SafeSearchAnnotation());
@@ -588,21 +588,21 @@
   return o;
 }
 
-checkUnnamed3533(
+checkUnnamed3551(
     core.List<api.GoogleCloudVideointelligenceV1beta1SafeSearchAnnotation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1beta1SafeSearchAnnotation(o[0]);
   checkGoogleCloudVideointelligenceV1beta1SafeSearchAnnotation(o[1]);
 }
 
-buildUnnamed3534() {
+buildUnnamed3552() {
   var o = new core.List<api.GoogleCloudVideointelligenceV1beta1VideoSegment>();
   o.add(buildGoogleCloudVideointelligenceV1beta1VideoSegment());
   o.add(buildGoogleCloudVideointelligenceV1beta1VideoSegment());
   return o;
 }
 
-checkUnnamed3534(
+checkUnnamed3552(
     core.List<api.GoogleCloudVideointelligenceV1beta1VideoSegment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1beta1VideoSegment(o[0]);
@@ -618,9 +618,9 @@
       3) {
     o.error = buildGoogleRpcStatus();
     o.inputUri = "foo";
-    o.labelAnnotations = buildUnnamed3532();
-    o.safeSearchAnnotations = buildUnnamed3533();
-    o.shotAnnotations = buildUnnamed3534();
+    o.labelAnnotations = buildUnnamed3550();
+    o.safeSearchAnnotations = buildUnnamed3551();
+    o.shotAnnotations = buildUnnamed3552();
   }
   buildCounterGoogleCloudVideointelligenceV1beta1VideoAnnotationResults--;
   return o;
@@ -633,21 +633,21 @@
       3) {
     checkGoogleRpcStatus(o.error);
     unittest.expect(o.inputUri, unittest.equals('foo'));
-    checkUnnamed3532(o.labelAnnotations);
-    checkUnnamed3533(o.safeSearchAnnotations);
-    checkUnnamed3534(o.shotAnnotations);
+    checkUnnamed3550(o.labelAnnotations);
+    checkUnnamed3551(o.safeSearchAnnotations);
+    checkUnnamed3552(o.shotAnnotations);
   }
   buildCounterGoogleCloudVideointelligenceV1beta1VideoAnnotationResults--;
 }
 
-buildUnnamed3535() {
+buildUnnamed3553() {
   var o = new core.List<api.GoogleCloudVideointelligenceV1beta1VideoSegment>();
   o.add(buildGoogleCloudVideointelligenceV1beta1VideoSegment());
   o.add(buildGoogleCloudVideointelligenceV1beta1VideoSegment());
   return o;
 }
 
-checkUnnamed3535(
+checkUnnamed3553(
     core.List<api.GoogleCloudVideointelligenceV1beta1VideoSegment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1beta1VideoSegment(o[0]);
@@ -662,7 +662,7 @@
     o.labelDetectionMode = "foo";
     o.labelDetectionModel = "foo";
     o.safeSearchDetectionModel = "foo";
-    o.segments = buildUnnamed3535();
+    o.segments = buildUnnamed3553();
     o.shotChangeDetectionModel = "foo";
     o.stationaryCamera = true;
   }
@@ -677,7 +677,7 @@
     unittest.expect(o.labelDetectionMode, unittest.equals('foo'));
     unittest.expect(o.labelDetectionModel, unittest.equals('foo'));
     unittest.expect(o.safeSearchDetectionModel, unittest.equals('foo'));
-    checkUnnamed3535(o.segments);
+    checkUnnamed3553(o.segments);
     unittest.expect(o.shotChangeDetectionModel, unittest.equals('foo'));
     unittest.expect(o.stationaryCamera, unittest.isTrue);
   }
@@ -706,7 +706,7 @@
   buildCounterGoogleCloudVideointelligenceV1beta1VideoSegment--;
 }
 
-buildUnnamed3536() {
+buildUnnamed3554() {
   var o = new core
       .List<api.GoogleCloudVideointelligenceV1beta2VideoAnnotationProgress>();
   o.add(buildGoogleCloudVideointelligenceV1beta2VideoAnnotationProgress());
@@ -714,7 +714,7 @@
   return o;
 }
 
-checkUnnamed3536(
+checkUnnamed3554(
     core.List<api.GoogleCloudVideointelligenceV1beta2VideoAnnotationProgress>
         o) {
   unittest.expect(o, unittest.hasLength(2));
@@ -729,7 +729,7 @@
   buildCounterGoogleCloudVideointelligenceV1beta2AnnotateVideoProgress++;
   if (buildCounterGoogleCloudVideointelligenceV1beta2AnnotateVideoProgress <
       3) {
-    o.annotationProgress = buildUnnamed3536();
+    o.annotationProgress = buildUnnamed3554();
   }
   buildCounterGoogleCloudVideointelligenceV1beta2AnnotateVideoProgress--;
   return o;
@@ -740,12 +740,12 @@
   buildCounterGoogleCloudVideointelligenceV1beta2AnnotateVideoProgress++;
   if (buildCounterGoogleCloudVideointelligenceV1beta2AnnotateVideoProgress <
       3) {
-    checkUnnamed3536(o.annotationProgress);
+    checkUnnamed3554(o.annotationProgress);
   }
   buildCounterGoogleCloudVideointelligenceV1beta2AnnotateVideoProgress--;
 }
 
-buildUnnamed3537() {
+buildUnnamed3555() {
   var o = new core
       .List<api.GoogleCloudVideointelligenceV1beta2VideoAnnotationResults>();
   o.add(buildGoogleCloudVideointelligenceV1beta2VideoAnnotationResults());
@@ -753,7 +753,7 @@
   return o;
 }
 
-checkUnnamed3537(
+checkUnnamed3555(
     core.List<api.GoogleCloudVideointelligenceV1beta2VideoAnnotationResults>
         o) {
   unittest.expect(o, unittest.hasLength(2));
@@ -768,7 +768,7 @@
   buildCounterGoogleCloudVideointelligenceV1beta2AnnotateVideoResponse++;
   if (buildCounterGoogleCloudVideointelligenceV1beta2AnnotateVideoResponse <
       3) {
-    o.annotationResults = buildUnnamed3537();
+    o.annotationResults = buildUnnamed3555();
   }
   buildCounterGoogleCloudVideointelligenceV1beta2AnnotateVideoResponse--;
   return o;
@@ -779,7 +779,7 @@
   buildCounterGoogleCloudVideointelligenceV1beta2AnnotateVideoResponse++;
   if (buildCounterGoogleCloudVideointelligenceV1beta2AnnotateVideoResponse <
       3) {
-    checkUnnamed3537(o.annotationResults);
+    checkUnnamed3555(o.annotationResults);
   }
   buildCounterGoogleCloudVideointelligenceV1beta2AnnotateVideoResponse--;
 }
@@ -808,7 +808,7 @@
   buildCounterGoogleCloudVideointelligenceV1beta2Entity--;
 }
 
-buildUnnamed3538() {
+buildUnnamed3556() {
   var o = new core
       .List<api.GoogleCloudVideointelligenceV1beta2ExplicitContentFrame>();
   o.add(buildGoogleCloudVideointelligenceV1beta2ExplicitContentFrame());
@@ -816,7 +816,7 @@
   return o;
 }
 
-checkUnnamed3538(
+checkUnnamed3556(
     core.List<api.GoogleCloudVideointelligenceV1beta2ExplicitContentFrame> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1beta2ExplicitContentFrame(o[0]);
@@ -832,7 +832,7 @@
   buildCounterGoogleCloudVideointelligenceV1beta2ExplicitContentAnnotation++;
   if (buildCounterGoogleCloudVideointelligenceV1beta2ExplicitContentAnnotation <
       3) {
-    o.frames = buildUnnamed3538();
+    o.frames = buildUnnamed3556();
   }
   buildCounterGoogleCloudVideointelligenceV1beta2ExplicitContentAnnotation--;
   return o;
@@ -843,7 +843,7 @@
   buildCounterGoogleCloudVideointelligenceV1beta2ExplicitContentAnnotation++;
   if (buildCounterGoogleCloudVideointelligenceV1beta2ExplicitContentAnnotation <
       3) {
-    checkUnnamed3538(o.frames);
+    checkUnnamed3556(o.frames);
   }
   buildCounterGoogleCloudVideointelligenceV1beta2ExplicitContentAnnotation--;
 }
@@ -871,41 +871,41 @@
   buildCounterGoogleCloudVideointelligenceV1beta2ExplicitContentFrame--;
 }
 
-buildUnnamed3539() {
+buildUnnamed3557() {
   var o = new core.List<api.GoogleCloudVideointelligenceV1beta2Entity>();
   o.add(buildGoogleCloudVideointelligenceV1beta2Entity());
   o.add(buildGoogleCloudVideointelligenceV1beta2Entity());
   return o;
 }
 
-checkUnnamed3539(core.List<api.GoogleCloudVideointelligenceV1beta2Entity> o) {
+checkUnnamed3557(core.List<api.GoogleCloudVideointelligenceV1beta2Entity> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1beta2Entity(o[0]);
   checkGoogleCloudVideointelligenceV1beta2Entity(o[1]);
 }
 
-buildUnnamed3540() {
+buildUnnamed3558() {
   var o = new core.List<api.GoogleCloudVideointelligenceV1beta2LabelFrame>();
   o.add(buildGoogleCloudVideointelligenceV1beta2LabelFrame());
   o.add(buildGoogleCloudVideointelligenceV1beta2LabelFrame());
   return o;
 }
 
-checkUnnamed3540(
+checkUnnamed3558(
     core.List<api.GoogleCloudVideointelligenceV1beta2LabelFrame> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1beta2LabelFrame(o[0]);
   checkGoogleCloudVideointelligenceV1beta2LabelFrame(o[1]);
 }
 
-buildUnnamed3541() {
+buildUnnamed3559() {
   var o = new core.List<api.GoogleCloudVideointelligenceV1beta2LabelSegment>();
   o.add(buildGoogleCloudVideointelligenceV1beta2LabelSegment());
   o.add(buildGoogleCloudVideointelligenceV1beta2LabelSegment());
   return o;
 }
 
-checkUnnamed3541(
+checkUnnamed3559(
     core.List<api.GoogleCloudVideointelligenceV1beta2LabelSegment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1beta2LabelSegment(o[0]);
@@ -917,10 +917,10 @@
   var o = new api.GoogleCloudVideointelligenceV1beta2LabelAnnotation();
   buildCounterGoogleCloudVideointelligenceV1beta2LabelAnnotation++;
   if (buildCounterGoogleCloudVideointelligenceV1beta2LabelAnnotation < 3) {
-    o.categoryEntities = buildUnnamed3539();
+    o.categoryEntities = buildUnnamed3557();
     o.entity = buildGoogleCloudVideointelligenceV1beta2Entity();
-    o.frames = buildUnnamed3540();
-    o.segments = buildUnnamed3541();
+    o.frames = buildUnnamed3558();
+    o.segments = buildUnnamed3559();
   }
   buildCounterGoogleCloudVideointelligenceV1beta2LabelAnnotation--;
   return o;
@@ -930,10 +930,10 @@
     api.GoogleCloudVideointelligenceV1beta2LabelAnnotation o) {
   buildCounterGoogleCloudVideointelligenceV1beta2LabelAnnotation++;
   if (buildCounterGoogleCloudVideointelligenceV1beta2LabelAnnotation < 3) {
-    checkUnnamed3539(o.categoryEntities);
+    checkUnnamed3557(o.categoryEntities);
     checkGoogleCloudVideointelligenceV1beta2Entity(o.entity);
-    checkUnnamed3540(o.frames);
-    checkUnnamed3541(o.segments);
+    checkUnnamed3558(o.frames);
+    checkUnnamed3559(o.segments);
   }
   buildCounterGoogleCloudVideointelligenceV1beta2LabelAnnotation--;
 }
@@ -1011,7 +1011,7 @@
   buildCounterGoogleCloudVideointelligenceV1beta2VideoAnnotationProgress--;
 }
 
-buildUnnamed3542() {
+buildUnnamed3560() {
   var o =
       new core.List<api.GoogleCloudVideointelligenceV1beta2LabelAnnotation>();
   o.add(buildGoogleCloudVideointelligenceV1beta2LabelAnnotation());
@@ -1019,14 +1019,14 @@
   return o;
 }
 
-checkUnnamed3542(
+checkUnnamed3560(
     core.List<api.GoogleCloudVideointelligenceV1beta2LabelAnnotation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1beta2LabelAnnotation(o[0]);
   checkGoogleCloudVideointelligenceV1beta2LabelAnnotation(o[1]);
 }
 
-buildUnnamed3543() {
+buildUnnamed3561() {
   var o =
       new core.List<api.GoogleCloudVideointelligenceV1beta2LabelAnnotation>();
   o.add(buildGoogleCloudVideointelligenceV1beta2LabelAnnotation());
@@ -1034,28 +1034,28 @@
   return o;
 }
 
-checkUnnamed3543(
+checkUnnamed3561(
     core.List<api.GoogleCloudVideointelligenceV1beta2LabelAnnotation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1beta2LabelAnnotation(o[0]);
   checkGoogleCloudVideointelligenceV1beta2LabelAnnotation(o[1]);
 }
 
-buildUnnamed3544() {
+buildUnnamed3562() {
   var o = new core.List<api.GoogleCloudVideointelligenceV1beta2VideoSegment>();
   o.add(buildGoogleCloudVideointelligenceV1beta2VideoSegment());
   o.add(buildGoogleCloudVideointelligenceV1beta2VideoSegment());
   return o;
 }
 
-checkUnnamed3544(
+checkUnnamed3562(
     core.List<api.GoogleCloudVideointelligenceV1beta2VideoSegment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1beta2VideoSegment(o[0]);
   checkGoogleCloudVideointelligenceV1beta2VideoSegment(o[1]);
 }
 
-buildUnnamed3545() {
+buildUnnamed3563() {
   var o =
       new core.List<api.GoogleCloudVideointelligenceV1beta2LabelAnnotation>();
   o.add(buildGoogleCloudVideointelligenceV1beta2LabelAnnotation());
@@ -1063,7 +1063,7 @@
   return o;
 }
 
-checkUnnamed3545(
+checkUnnamed3563(
     core.List<api.GoogleCloudVideointelligenceV1beta2LabelAnnotation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudVideointelligenceV1beta2LabelAnnotation(o[0]);
@@ -1080,11 +1080,11 @@
     o.error = buildGoogleRpcStatus();
     o.explicitAnnotation =
         buildGoogleCloudVideointelligenceV1beta2ExplicitContentAnnotation();
-    o.frameLabelAnnotations = buildUnnamed3542();
+    o.frameLabelAnnotations = buildUnnamed3560();
     o.inputUri = "foo";
-    o.segmentLabelAnnotations = buildUnnamed3543();
-    o.shotAnnotations = buildUnnamed3544();
-    o.shotLabelAnnotations = buildUnnamed3545();
+    o.segmentLabelAnnotations = buildUnnamed3561();
+    o.shotAnnotations = buildUnnamed3562();
+    o.shotLabelAnnotations = buildUnnamed3563();
   }
   buildCounterGoogleCloudVideointelligenceV1beta2VideoAnnotationResults--;
   return o;
@@ -1098,11 +1098,11 @@
     checkGoogleRpcStatus(o.error);
     checkGoogleCloudVideointelligenceV1beta2ExplicitContentAnnotation(
         o.explicitAnnotation);
-    checkUnnamed3542(o.frameLabelAnnotations);
+    checkUnnamed3560(o.frameLabelAnnotations);
     unittest.expect(o.inputUri, unittest.equals('foo'));
-    checkUnnamed3543(o.segmentLabelAnnotations);
-    checkUnnamed3544(o.shotAnnotations);
-    checkUnnamed3545(o.shotLabelAnnotations);
+    checkUnnamed3561(o.segmentLabelAnnotations);
+    checkUnnamed3562(o.shotAnnotations);
+    checkUnnamed3563(o.shotLabelAnnotations);
   }
   buildCounterGoogleCloudVideointelligenceV1beta2VideoAnnotationResults--;
 }
@@ -1129,7 +1129,7 @@
   buildCounterGoogleCloudVideointelligenceV1beta2VideoSegment--;
 }
 
-buildUnnamed3546() {
+buildUnnamed3564() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1144,7 +1144,7 @@
   return o;
 }
 
-checkUnnamed3546(core.Map<core.String, core.Object> o) {
+checkUnnamed3564(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o["x"]) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -1158,7 +1158,7 @@
   unittest.expect(casted2["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3547() {
+buildUnnamed3565() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1173,7 +1173,7 @@
   return o;
 }
 
-checkUnnamed3547(core.Map<core.String, core.Object> o) {
+checkUnnamed3565(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o["x"]) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -1194,9 +1194,9 @@
   if (buildCounterGoogleLongrunningOperation < 3) {
     o.done = true;
     o.error = buildGoogleRpcStatus();
-    o.metadata = buildUnnamed3546();
+    o.metadata = buildUnnamed3564();
     o.name = "foo";
-    o.response = buildUnnamed3547();
+    o.response = buildUnnamed3565();
   }
   buildCounterGoogleLongrunningOperation--;
   return o;
@@ -1207,14 +1207,14 @@
   if (buildCounterGoogleLongrunningOperation < 3) {
     unittest.expect(o.done, unittest.isTrue);
     checkGoogleRpcStatus(o.error);
-    checkUnnamed3546(o.metadata);
+    checkUnnamed3564(o.metadata);
     unittest.expect(o.name, unittest.equals('foo'));
-    checkUnnamed3547(o.response);
+    checkUnnamed3565(o.response);
   }
   buildCounterGoogleLongrunningOperation--;
 }
 
-buildUnnamed3548() {
+buildUnnamed3566() {
   var o = new core.Map<core.String, core.Object>();
   o["x"] = {
     'list': [1, 2, 3],
@@ -1229,7 +1229,7 @@
   return o;
 }
 
-checkUnnamed3548(core.Map<core.String, core.Object> o) {
+checkUnnamed3566(core.Map<core.String, core.Object> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o["x"]) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -1243,17 +1243,17 @@
   unittest.expect(casted6["string"], unittest.equals('foo'));
 }
 
-buildUnnamed3549() {
+buildUnnamed3567() {
   var o = new core.List<core.Map<core.String, core.Object>>();
-  o.add(buildUnnamed3548());
-  o.add(buildUnnamed3548());
+  o.add(buildUnnamed3566());
+  o.add(buildUnnamed3566());
   return o;
 }
 
-checkUnnamed3549(core.List<core.Map<core.String, core.Object>> o) {
+checkUnnamed3567(core.List<core.Map<core.String, core.Object>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed3548(o[0]);
-  checkUnnamed3548(o[1]);
+  checkUnnamed3566(o[0]);
+  checkUnnamed3566(o[1]);
 }
 
 core.int buildCounterGoogleRpcStatus = 0;
@@ -1262,7 +1262,7 @@
   buildCounterGoogleRpcStatus++;
   if (buildCounterGoogleRpcStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed3549();
+    o.details = buildUnnamed3567();
     o.message = "foo";
   }
   buildCounterGoogleRpcStatus--;
@@ -1273,7 +1273,7 @@
   buildCounterGoogleRpcStatus++;
   if (buildCounterGoogleRpcStatus < 3) {
     unittest.expect(o.code, unittest.equals(42));
-    checkUnnamed3549(o.details);
+    checkUnnamed3567(o.details);
     unittest.expect(o.message, unittest.equals('foo'));
   }
   buildCounterGoogleRpcStatus--;
@@ -1619,6 +1619,7 @@
       api.VideosResourceApi res = new api.VideointelligenceApi(mock).videos;
       var arg_request =
           buildGoogleCloudVideointelligenceV1beta1AnnotateVideoRequest();
+      var arg_$fields = "foo";
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         var obj = new api
                 .GoogleCloudVideointelligenceV1beta1AnnotateVideoRequest.fromJson(
@@ -1654,6 +1655,7 @@
                 core.Uri.decodeQueryComponent(keyvalue[1]));
           }
         }
+        unittest.expect(queryMap["fields"].first, unittest.equals(arg_$fields));
 
         var h = {
           "content-type": "application/json; charset=utf-8",
@@ -1661,7 +1663,7 @@
         var resp = convert.JSON.encode(buildGoogleLongrunningOperation());
         return new async.Future.value(stringResponse(200, h, resp));
       }), true);
-      res.annotate(arg_request).then(
+      res.annotate(arg_request, $fields: arg_$fields).then(
           unittest.expectAsync1(((api.GoogleLongrunningOperation response) {
         checkGoogleLongrunningOperation(response);
       })));
diff --git a/lib/src/package_configuration.dart b/lib/src/package_configuration.dart
index 293f141..60291f0 100644
--- a/lib/src/package_configuration.dart
+++ b/lib/src/package_configuration.dart
@@ -135,9 +135,15 @@
 
     // Generate packages.
     packages.forEach((name, package) {
-      generateAllLibraries('$discoveryDocsDir/$name',
+      final results = generateAllLibraries('$discoveryDocsDir/$name',
                            '$generatedApisDir/$name',
                            package.pubspec);
+      for (final GenerateResult result in results) {
+        if (!result.success) {
+          print(result.toString());
+        }
+      }
+
       new File('$generatedApisDir/$name/README.md')
           .writeAsStringSync(package.readme);
       if (package.license != null) {
diff --git a/pubspec.lock b/pubspec.lock
index 2262e5a..cca5587 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -12,7 +12,7 @@
       name: args
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.13.7"
+    version: "1.0.2"
   async:
     description:
       name: async
@@ -66,7 +66,7 @@
       name: discoveryapis_generator
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.9.1+1"
+    version: "0.9.2"
   front_end:
     description:
       name: front_end
@@ -90,7 +90,7 @@
       name: http
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.11.3+15"
+    version: "0.11.3+16"
   http_parser:
     description:
       name: http_parser
@@ -145,12 +145,6 @@
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.4.0"
-  stack_trace:
-    description:
-      name: stack_trace
-      url: "https://pub.dartlang.org"
-    source: hosted
-    version: "1.8.2"
   string_scanner:
     description:
       name: string_scanner
@@ -182,4 +176,4 @@
     source: hosted
     version: "2.1.13"
 sdks:
-  dart: ">=1.23.0 <2.0.0"
+  dart: ">=1.23.0 <=2.0.0-dev.3.0"
diff --git a/resources/googleapis/CHANGELOG.md b/resources/googleapis/CHANGELOG.md
index 9e46305..72cec11 100644
--- a/resources/googleapis/CHANGELOG.md
+++ b/resources/googleapis/CHANGELOG.md
@@ -1,3 +1,22 @@
+## 0.46.0
+
+* [api] admin:directory_v1
+* [api] bigquery:v2
+* [api] cloudfunctions:v1
+* [api] cloudtrace:v2
+* [api] compute:v1
+* [api] datastore:v1
+* [api] firebasedynamiclinks:v1
+* [api] firebaserules:v1
+* [api] manufacturers:v1
+* [api] monitoring:v3
+* [api] partners:v2
+* [api] slides:v1
+* [api] speech:v1
+* [api-breaking] cloudtrace:v2
+* [api-breaking] manufacturers:v1
+* [api-breaking] servicecontrol:v1
+
 ## 0.45.0
 * [api-new] cloudiot:v1
 * [api-new] testing:v1
diff --git a/resources/googleapis_beta/CHANGELOG.md b/resources/googleapis_beta/CHANGELOG.md
index 00d6e69..34a99e2 100644
--- a/resources/googleapis_beta/CHANGELOG.md
+++ b/resources/googleapis_beta/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 0.40.1
+
+* [api] sqladmin:v1beta4
+* [api] dlp:v2beta1
+* [api] toolresults:v1beta3
+
 ## 0.40.0
 
 * [api-new] cloudtasks:v2beta2